summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS10
-rw-r--r--Android.mk4
-rw-r--r--Makefile.am30
-rw-r--r--PROJECT_HAS_MOVED9
-rw-r--r--README57
-rw-r--r--TESTING146
-rwxr-xr-xautogen.sh14
-rw-r--r--build/gen_version.sh64
-rw-r--r--configure.ac233
-rw-r--r--debian.upstream/Makefile.am30
-rw-r--r--debian.upstream/changelog.in5
-rw-r--r--debian.upstream/compat1
-rw-r--r--debian.upstream/control.in28
-rw-r--r--debian.upstream/copyright25
-rw-r--r--debian.upstream/libva-intel-driver.install1
-rwxr-xr-xdebian.upstream/rules14
-rwxr-xr-xsrc/Android.mk105
-rwxr-xr-xsrc/Makefile.am232
-rw-r--r--src/config_android.h109
-rw-r--r--src/dso_utils.c110
-rw-r--r--src/dso_utils.h74
-rw-r--r--src/gen6_mfc.c1514
-rw-r--r--src/gen6_mfc.h395
-rw-r--r--src/gen6_mfc_common.c2394
-rwxr-xr-xsrc/gen6_mfd.c1877
-rw-r--r--src/gen6_mfd.h78
-rw-r--r--src/gen6_vme.c676
-rw-r--r--src/gen6_vme.h237
-rw-r--r--src/gen75_mfc.c2586
-rw-r--r--src/gen75_mfd.c3285
-rw-r--r--src/gen75_picture_process.c644
-rw-r--r--src/gen75_picture_process.h53
-rw-r--r--src/gen75_vme.c1109
-rw-r--r--src/gen75_vpp_gpe.c900
-rw-r--r--src/gen75_vpp_gpe.h121
-rw-r--r--src/gen75_vpp_vebox.c2481
-rw-r--r--src/gen75_vpp_vebox.h175
-rw-r--r--src/gen7_mfc.c1173
-rwxr-xr-xsrc/gen7_mfd.c2763
-rw-r--r--src/gen7_mfd.h100
-rw-r--r--src/gen7_vme.c1171
-rw-r--r--src/gen8_mfc.c4615
-rw-r--r--src/gen8_mfd.c3228
-rw-r--r--src/gen8_post_processing.c2131
-rw-r--r--src/gen8_post_processing.h89
-rw-r--r--src/gen8_render.c1819
-rw-r--r--src/gen8_vme.c1415
-rw-r--r--src/gen9_mfc.c71
-rw-r--r--src/gen9_mfc.h282
-rw-r--r--src/gen9_mfc_hevc.c2687
-rw-r--r--src/gen9_mfd.c2008
-rw-r--r--src/gen9_mfd.h106
-rw-r--r--src/gen9_post_processing.c1183
-rw-r--r--src/gen9_render.c1842
-rw-r--r--src/gen9_vdenc.c3899
-rw-r--r--src/gen9_vdenc.h908
-rw-r--r--src/gen9_vme.c2065
-rw-r--r--src/gen9_vp9_const_def.c1716
-rw-r--r--src/gen9_vp9_const_def.h44
-rw-r--r--src/gen9_vp9_encapi.h43
-rw-r--r--src/gen9_vp9_encoder.c5885
-rw-r--r--src/gen9_vp9_encoder.h1973
-rw-r--r--src/gen9_vp9_encoder_kernels.c4955
-rw-r--r--src/gen9_vp9_encoder_kernels.h35
-rw-r--r--src/i965_avc_bsd.c899
-rw-r--r--src/i965_avc_bsd.h50
-rw-r--r--src/i965_avc_hw_scoreboard.c461
-rw-r--r--src/i965_avc_hw_scoreboard.h85
-rw-r--r--src/i965_avc_ildb.c650
-rw-r--r--src/i965_avc_ildb.h96
-rw-r--r--src/i965_decoder.h88
-rw-r--r--src/i965_decoder_utils.c1533
-rw-r--r--src/i965_decoder_utils.h190
-rwxr-xr-xsrc/i965_defines.h984
-rw-r--r--src/i965_device_info.c889
-rw-r--r--src/i965_drv_video.c6845
-rw-r--r--src/i965_drv_video.h646
-rw-r--r--src/i965_encoder.c1489
-rw-r--r--src/i965_encoder.h144
-rw-r--r--src/i965_encoder_utils.c1193
-rw-r--r--src/i965_encoder_utils.h68
-rw-r--r--src/i965_fourcc.h72
-rw-r--r--src/i965_gpe_utils.c2589
-rw-r--r--src/i965_gpe_utils.h649
-rw-r--r--src/i965_media.c398
-rw-r--r--src/i965_media.h96
-rw-r--r--src/i965_media_h264.c902
-rw-r--r--src/i965_media_h264.h74
-rw-r--r--src/i965_media_mpeg2.c1024
-rw-r--r--src/i965_media_mpeg2.h53
-rw-r--r--src/i965_mutext.h52
-rw-r--r--src/i965_output_dri.c200
-rw-r--r--src/i965_output_dri.h49
-rw-r--r--src/i965_output_wayland.c440
-rw-r--r--src/i965_output_wayland.h37
-rw-r--r--src/i965_pciids.h185
-rwxr-xr-xsrc/i965_post_processing.c6288
-rwxr-xr-xsrc/i965_post_processing.h657
-rw-r--r--src/i965_render.c3236
-rw-r--r--src/i965_render.h159
-rw-r--r--src/i965_structs.h2369
-rw-r--r--src/i965_vpp_avs.c271
-rw-r--r--src/i965_vpp_avs.h113
-rw-r--r--src/i965_yuv_coefs.c73
-rw-r--r--src/i965_yuv_coefs.h36
-rw-r--r--src/intel_batchbuffer.c446
-rw-r--r--src/intel_batchbuffer.h121
-rw-r--r--src/intel_batchbuffer_dump.c775
-rw-r--r--src/intel_batchbuffer_dump.h59
-rw-r--r--src/intel_common_vpp_internal.c82
-rw-r--r--src/intel_common_vpp_internal.h84
-rw-r--r--src/intel_compiler.h26
-rw-r--r--src/intel_driver.c174
-rw-r--r--src/intel_driver.h240
-rw-r--r--src/intel_gen_vppapi.h61
-rw-r--r--src/intel_media.h90
-rw-r--r--src/intel_media_common.c170
-rw-r--r--src/intel_memman.c55
-rw-r--r--src/intel_memman.h7
-rw-r--r--src/intel_version.h.in36
-rw-r--r--src/object_heap.c261
-rw-r--r--src/object_heap.h93
-rw-r--r--src/shaders/Makefile.am6
-rwxr-xr-xsrc/shaders/gpp.py200
-rw-r--r--src/shaders/h264/Makefile.am4
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB.inc748
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Child_Field_UV.asm39
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Child_Field_Y.asm39
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Child_Mbaff_UV.asm203
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Child_Mbaff_Y.asm218
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Child_UV.asm216
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Child_Y.asm206
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Chroma_Core.asm195
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Chroma_Core_Mbaff.asm176
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_CloseGateway.asm52
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Dep_Check.asm216
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Filter_Mbaff_UV_h.asm253
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Filter_Mbaff_UV_v.asm239
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Filter_Mbaff_Y_h.asm264
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Filter_Mbaff_Y_v.asm299
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Filter_UV_h.asm175
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Filter_UV_v.asm175
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Filter_Y_h.asm229
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Filter_Y_v.asm233
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_ForwardMsg.asm87
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_LumaThrdLimit.asm76
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Luma_Core.asm449
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Luma_Core_Mbaff.asm421
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_OpenGateway.asm73
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Root_Field_UV.asm39
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Root_Field_Y.asm39
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Root_Mbaff_UV.asm170
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Root_Mbaff_Y.asm170
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Root_UV.asm157
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Root_Y.asm160
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_Spawn.asm52
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_SpawnChild.asm85
-rw-r--r--src/shaders/h264/ildb/AVC_ILDB_SpawnChromaRoot.asm77
-rw-r--r--src/shaders/h264/ildb/Child_Undefs.inc54
-rw-r--r--src/shaders/h264/ildb/ILDB_header.inc336
-rw-r--r--src/shaders/h264/ildb/Load_ILDB_Cntrl_Data.asm110
-rw-r--r--src/shaders/h264/ildb/Load_ILDB_Cntrl_Data_16DW.asm92
-rw-r--r--src/shaders/h264/ildb/Load_ILDB_Cntrl_Data_22DW.asm66
-rw-r--r--src/shaders/h264/ildb/Load_ILDB_Cntrl_Data_64DW.asm72
-rw-r--r--src/shaders/h264/ildb/Makefile.am98
-rw-r--r--src/shaders/h264/ildb/Root_Undefs.inc57
-rw-r--r--src/shaders/h264/ildb/SetupVPKernel.asm54
-rw-r--r--src/shaders/h264/ildb/TransposeNV12_16x16.asm165
-rw-r--r--src/shaders/h264/ildb/TransposeNV12_4x16.asm124
-rw-r--r--src/shaders/h264/ildb/Transpose_Cur_UV_2x8.asm86
-rw-r--r--src/shaders/h264/ildb/Transpose_Cur_UV_8x8.asm115
-rw-r--r--src/shaders/h264/ildb/Transpose_Cur_UV_Right_Most_2x8.asm55
-rw-r--r--src/shaders/h264/ildb/Transpose_Cur_Y_16x16.asm104
-rw-r--r--src/shaders/h264/ildb/Transpose_Cur_Y_4x16.asm105
-rw-r--r--src/shaders/h264/ildb/Transpose_Cur_Y_Right_Most_4x16.asm61
-rw-r--r--src/shaders/h264/ildb/Transpose_Left_UV_2x8.asm58
-rw-r--r--src/shaders/h264/ildb/Transpose_Left_Y_4x16.asm61
-rw-r--r--src/shaders/h264/ildb/loadNV12_16x16T.asm83
-rw-r--r--src/shaders/h264/ildb/loadNV12_16x4.asm84
-rw-r--r--src/shaders/h264/ildb/load_Cur_UV_8x8T.asm95
-rw-r--r--src/shaders/h264/ildb/load_Cur_UV_8x8T_Mbaff.asm92
-rw-r--r--src/shaders/h264/ildb/load_Cur_UV_Right_Most_2x8.asm91
-rw-r--r--src/shaders/h264/ildb/load_Cur_Y_16x16T.asm93
-rw-r--r--src/shaders/h264/ildb/load_Cur_Y_16x16T_Mbaff.asm92
-rw-r--r--src/shaders/h264/ildb/load_Cur_Y_Right_Most_4x16.asm115
-rw-r--r--src/shaders/h264/ildb/load_Left_UV_2x8T.asm106
-rw-r--r--src/shaders/h264/ildb/load_Left_UV_2x8T_Mbaff.asm109
-rw-r--r--src/shaders/h264/ildb/load_Left_Y_4x16T.asm126
-rw-r--r--src/shaders/h264/ildb/load_Left_Y_4x16T_Mbaff.asm114
-rw-r--r--src/shaders/h264/ildb/load_Top_UV_8x2.asm100
-rw-r--r--src/shaders/h264/ildb/load_Top_UV_8x2_Mbaff.asm109
-rw-r--r--src/shaders/h264/ildb/load_Top_Y_16x4.asm100
-rw-r--r--src/shaders/h264/ildb/load_Top_Y_16x4_Mbaff.asm111
-rw-r--r--src/shaders/h264/ildb/saveNV12_16x16.asm83
-rw-r--r--src/shaders/h264/ildb/saveNV12_16x4.asm80
-rw-r--r--src/shaders/h264/ildb/saveNV12_16x4T.asm143
-rw-r--r--src/shaders/h264/ildb/save_Cur_UV_8x8.asm83
-rw-r--r--src/shaders/h264/ildb/save_Cur_UV_8x8_Mbaff.asm92
-rw-r--r--src/shaders/h264/ildb/save_Cur_Y_16x16.asm86
-rw-r--r--src/shaders/h264/ildb/save_Cur_Y_16x16_Mbaff.asm94
-rw-r--r--src/shaders/h264/ildb/save_Left_UV_8x2T.asm102
-rw-r--r--src/shaders/h264/ildb/save_Left_UV_8x2T_Mbaff.asm112
-rw-r--r--src/shaders/h264/ildb/save_Left_Y_16x4T.asm119
-rw-r--r--src/shaders/h264/ildb/save_Left_Y_16x4T_Mbaff.asm131
-rw-r--r--src/shaders/h264/ildb/save_Top_UV_8x2.asm82
-rw-r--r--src/shaders/h264/ildb/save_Top_UV_8x2_Mbaff.asm99
-rw-r--r--src/shaders/h264/ildb/save_Top_Y_16x4.asm82
-rw-r--r--src/shaders/h264/ildb/save_Top_Y_16x4_Mbaff.asm99
-rw-r--r--src/shaders/h264/ildb/writeURB.asm68
-rw-r--r--src/shaders/h264/ildb/writeURB_UV_Child.asm69
-rw-r--r--src/shaders/h264/ildb/writeURB_Y_Child.asm70
-rw-r--r--src/shaders/h264/mc/AVCMCInter.asm284
-rw-r--r--src/shaders/h264/mc/AllAVC.asm469
-rw-r--r--src/shaders/h264/mc/AllAVCField.asm100
-rw-r--r--src/shaders/h264/mc/AllAVCFrame.asm99
-rw-r--r--src/shaders/h264/mc/AllAVCMBAFF.asm100
-rw-r--r--src/shaders/h264/mc/AllAVC_Build.inc112
-rw-r--r--src/shaders/h264/mc/AllAVC_Export.inc202
-rw-r--r--src/shaders/h264/mc/AllIntra.asm98
-rw-r--r--src/shaders/h264/mc/BSDReset.asm73
-rw-r--r--src/shaders/h264/mc/DCResetDummy.asm64
-rw-r--r--src/shaders/h264/mc/Decode_Chroma_Intra.asm59
-rw-r--r--src/shaders/h264/mc/EndIntraThread.asm60
-rw-r--r--src/shaders/h264/mc/HwmcOnlyHeader.inc59
-rw-r--r--src/shaders/h264/mc/Intra_16x16.asm101
-rw-r--r--src/shaders/h264/mc/Intra_4x4.asm205
-rw-r--r--src/shaders/h264/mc/Intra_8x8.asm222
-rw-r--r--src/shaders/h264/mc/Intra_PCM.asm86
-rw-r--r--src/shaders/h264/mc/Intra_funcLib.asm72
-rw-r--r--src/shaders/h264/mc/Makefile.am224
-rw-r--r--src/shaders/h264/mc/Scoreboard_header.inc115
-rw-r--r--src/shaders/h264/mc/SetHWScoreboard.asm239
-rw-r--r--src/shaders/h264/mc/SetHWScoreboard_MBAFF.asm309
-rw-r--r--src/shaders/h264/mc/SetHWScoreboard_header.inc164
-rw-r--r--src/shaders/h264/mc/SetupForHWMC.asm63
-rw-r--r--src/shaders/h264/mc/add_Error_16x16_Y.asm81
-rw-r--r--src/shaders/h264/mc/add_Error_UV.asm68
-rw-r--r--src/shaders/h264/mc/avc_mc.g4b5251
-rw-r--r--src/shaders/h264/mc/avc_mc.g4b.gen55251
-rw-r--r--src/shaders/h264/mc/chromaMVAdjust.asm57
-rw-r--r--src/shaders/h264/mc/export.inc345
-rw-r--r--src/shaders/h264/mc/export.inc.gen5345
-rw-r--r--src/shaders/h264/mc/header.inc333
-rw-r--r--src/shaders/h264/mc/initialize_MBPara.asm155
-rw-r--r--src/shaders/h264/mc/inter_Header.inc401
-rw-r--r--src/shaders/h264/mc/interpolate_C_2x2.asm87
-rw-r--r--src/shaders/h264/mc/interpolate_C_4x4.asm97
-rw-r--r--src/shaders/h264/mc/interpolate_Y_4x4.asm247
-rw-r--r--src/shaders/h264/mc/interpolate_Y_8x8.asm292
-rw-r--r--src/shaders/h264/mc/intra_Header.inc306
-rw-r--r--src/shaders/h264/mc/intra_Pred_4x4_Y_4.asm270
-rw-r--r--src/shaders/h264/mc/intra_Pred_8x8_Y.asm276
-rw-r--r--src/shaders/h264/mc/intra_Pred_Chroma.asm185
-rw-r--r--src/shaders/h264/mc/intra_pred_16x16_Y.asm141
-rw-r--r--src/shaders/h264/mc/list21
-rw-r--r--src/shaders/h264/mc/loadRef_C_10x5.asm87
-rw-r--r--src/shaders/h264/mc/loadRef_C_6x3.asm68
-rw-r--r--src/shaders/h264/mc/loadRef_Y_16x13.asm157
-rw-r--r--src/shaders/h264/mc/loadRef_Y_16x9.asm91
-rw-r--r--src/shaders/h264/mc/load_Intra_Ref_UV.asm74
-rw-r--r--src/shaders/h264/mc/load_Intra_Ref_Y.asm67
-rw-r--r--src/shaders/h264/mc/null.g4a43
-rw-r--r--src/shaders/h264/mc/null.g4b13
-rw-r--r--src/shaders/h264/mc/null.g4b.gen513
-rw-r--r--src/shaders/h264/mc/recon_C_4x4.asm67
-rw-r--r--src/shaders/h264/mc/recon_Y_8x8.asm57
-rw-r--r--src/shaders/h264/mc/roundShift_C_4x4.asm56
-rw-r--r--src/shaders/h264/mc/save_16x16_Y.asm72
-rw-r--r--src/shaders/h264/mc/save_4x4_Y.asm73
-rw-r--r--src/shaders/h264/mc/save_8x8_UV.asm81
-rw-r--r--src/shaders/h264/mc/save_8x8_Y.asm86
-rw-r--r--src/shaders/h264/mc/save_I_PCM.asm86
-rw-r--r--src/shaders/h264/mc/scoreboard.asm312
-rw-r--r--src/shaders/h264/mc/scoreboard_MBAFF.asm329
-rw-r--r--src/shaders/h264/mc/scoreboard_restore_AS.asm84
-rw-r--r--src/shaders/h264/mc/scoreboard_save_AS.asm102
-rw-r--r--src/shaders/h264/mc/scoreboard_sip.asm64
-rw-r--r--src/shaders/h264/mc/scoreboard_start_inter.asm77
-rw-r--r--src/shaders/h264/mc/scoreboard_start_intra.asm82
-rw-r--r--src/shaders/h264/mc/scoreboard_update.asm71
-rw-r--r--src/shaders/h264/mc/set_SB_offset.asm56
-rw-r--r--src/shaders/h264/mc/weightedPred.asm170
-rw-r--r--src/shaders/h264/mc/writeRecon_C_8x4.asm76
-rw-r--r--src/shaders/h264/mc/writeRecon_YC.asm109
-rw-r--r--src/shaders/h264/mc/writeRecon_Y_16x8.asm73
-rw-r--r--src/shaders/mpeg2/Makefile.am4
-rw-r--r--src/shaders/mpeg2/vld/Makefile.am122
-rw-r--r--src/shaders/mpeg2/vld/addidct.g4i152
-rw-r--r--src/shaders/mpeg2/vld/do_iq_intra.g4i64
-rw-r--r--src/shaders/mpeg2/vld/do_iq_non_intra.g4i59
-rw-r--r--src/shaders/mpeg2/vld/field_addidct.g4i153
-rw-r--r--src/shaders/mpeg2/vld/field_backward.g4a99
-rw-r--r--src/shaders/mpeg2/vld/field_backward.g4b757
-rw-r--r--src/shaders/mpeg2/vld/field_backward.g4b.gen5757
-rw-r--r--src/shaders/mpeg2/vld/field_backward_16x8.g4a30
-rw-r--r--src/shaders/mpeg2/vld/field_backward_16x8.g4b15
-rw-r--r--src/shaders/mpeg2/vld/field_backward_16x8.g4b.gen515
-rw-r--r--src/shaders/mpeg2/vld/field_bidirect.g4a141
-rw-r--r--src/shaders/mpeg2/vld/field_bidirect.g4b797
-rw-r--r--src/shaders/mpeg2/vld/field_bidirect.g4b.gen5797
-rw-r--r--src/shaders/mpeg2/vld/field_bidirect_16x8.g4a31
-rw-r--r--src/shaders/mpeg2/vld/field_bidirect_16x8.g4b15
-rw-r--r--src/shaders/mpeg2/vld/field_bidirect_16x8.g4b.gen515
-rw-r--r--src/shaders/mpeg2/vld/field_forward.g4a116
-rw-r--r--src/shaders/mpeg2/vld/field_forward.g4b768
-rw-r--r--src/shaders/mpeg2/vld/field_forward.g4b.gen5768
-rw-r--r--src/shaders/mpeg2/vld/field_forward_16x8.g4a31
-rw-r--r--src/shaders/mpeg2/vld/field_forward_16x8.g4b15
-rw-r--r--src/shaders/mpeg2/vld/field_forward_16x8.g4b.gen515
-rw-r--r--src/shaders/mpeg2/vld/field_intra.g4a209
-rw-r--r--src/shaders/mpeg2/vld/field_intra.g4b313
-rw-r--r--src/shaders/mpeg2/vld/field_intra.g4b.gen5313
-rw-r--r--src/shaders/mpeg2/vld/field_motion_uv.g4i47
-rw-r--r--src/shaders/mpeg2/vld/field_motion_y.g4i45
-rw-r--r--src/shaders/mpeg2/vld/field_read_x0y0_uv.g4i65
-rw-r--r--src/shaders/mpeg2/vld/field_read_x0y0_y.g4i62
-rw-r--r--src/shaders/mpeg2/vld/field_read_x0y1_uv.g4i45
-rw-r--r--src/shaders/mpeg2/vld/field_read_x0y1_y.g4i68
-rw-r--r--src/shaders/mpeg2/vld/field_read_x1y0_uv.g4i37
-rw-r--r--src/shaders/mpeg2/vld/field_read_x1y0_y.g4i62
-rw-r--r--src/shaders/mpeg2/vld/field_read_x1y1_uv.g4i91
-rw-r--r--src/shaders/mpeg2/vld/field_read_x1y1_y.g4i123
-rw-r--r--src/shaders/mpeg2/vld/frame_field_pred_backward.g4a126
-rw-r--r--src/shaders/mpeg2/vld/frame_field_pred_backward.g4b553
-rw-r--r--src/shaders/mpeg2/vld/frame_field_pred_backward.g4b.gen5553
-rw-r--r--src/shaders/mpeg2/vld/frame_field_pred_bidirect.g4a213
-rw-r--r--src/shaders/mpeg2/vld/frame_field_pred_bidirect.g4b1007
-rw-r--r--src/shaders/mpeg2/vld/frame_field_pred_bidirect.g4b.gen51007
-rw-r--r--src/shaders/mpeg2/vld/frame_field_pred_forward.g4a130
-rw-r--r--src/shaders/mpeg2/vld/frame_field_pred_forward.g4b555
-rw-r--r--src/shaders/mpeg2/vld/frame_field_pred_forward.g4b.gen5555
-rw-r--r--src/shaders/mpeg2/vld/frame_frame_pred_backward.g4a61
-rw-r--r--src/shaders/mpeg2/vld/frame_frame_pred_backward.g4b369
-rw-r--r--src/shaders/mpeg2/vld/frame_frame_pred_backward.g4b.gen5369
-rw-r--r--src/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4a120
-rw-r--r--src/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b675
-rw-r--r--src/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b.gen5675
-rw-r--r--src/shaders/mpeg2/vld/frame_frame_pred_forward.g4a61
-rw-r--r--src/shaders/mpeg2/vld/frame_frame_pred_forward.g4b369
-rw-r--r--src/shaders/mpeg2/vld/frame_frame_pred_forward.g4b.gen5369
-rw-r--r--src/shaders/mpeg2/vld/frame_intra.g4a211
-rw-r--r--src/shaders/mpeg2/vld/frame_intra.g4b313
-rw-r--r--src/shaders/mpeg2/vld/frame_intra.g4b.gen5313
-rw-r--r--src/shaders/mpeg2/vld/idct.g4i147
-rw-r--r--src/shaders/mpeg2/vld/iq_intra.g4i131
-rw-r--r--src/shaders/mpeg2/vld/iq_non_intra.g4i150
-rw-r--r--src/shaders/mpeg2/vld/lib.g4a190
-rw-r--r--src/shaders/mpeg2/vld/lib.g4b307
-rw-r--r--src/shaders/mpeg2/vld/lib.g4b.gen5307
-rw-r--r--src/shaders/mpeg2/vld/motion_field_uv.g4i46
-rw-r--r--src/shaders/mpeg2/vld/motion_field_y.g4i45
-rw-r--r--src/shaders/mpeg2/vld/motion_frame_uv.g4i45
-rw-r--r--src/shaders/mpeg2/vld/motion_frame_y.g4i57
-rw-r--r--src/shaders/mpeg2/vld/null.g4a51
-rw-r--r--src/shaders/mpeg2/vld/read_field_x0y0_uv.g4i50
-rw-r--r--src/shaders/mpeg2/vld/read_field_x0y0_y.g4i57
-rw-r--r--src/shaders/mpeg2/vld/read_field_x0y1_uv.g4i28
-rw-r--r--src/shaders/mpeg2/vld/read_field_x0y1_y.g4i60
-rw-r--r--src/shaders/mpeg2/vld/read_field_x1y0_uv.g4i24
-rw-r--r--src/shaders/mpeg2/vld/read_field_x1y0_y.g4i57
-rw-r--r--src/shaders/mpeg2/vld/read_field_x1y1_uv.g4i53
-rw-r--r--src/shaders/mpeg2/vld/read_field_x1y1_y.g4i87
-rw-r--r--src/shaders/mpeg2/vld/read_frame_x0y0_uv.g4i49
-rw-r--r--src/shaders/mpeg2/vld/read_frame_x0y0_y.g4i58
-rw-r--r--src/shaders/mpeg2/vld/read_frame_x0y1_uv.g4i56
-rw-r--r--src/shaders/mpeg2/vld/read_frame_x0y1_y.g4i61
-rw-r--r--src/shaders/mpeg2/vld/read_frame_x1y0_uv.g4i42
-rw-r--r--src/shaders/mpeg2/vld/read_frame_x1y0_y.g4i58
-rw-r--r--src/shaders/mpeg2/vld/read_frame_x1y1_uv.g4i74
-rw-r--r--src/shaders/mpeg2/vld/read_frame_x1y1_y.g4i112
-rw-r--r--src/shaders/post_processing/Makefile.am4
-rw-r--r--src/shaders/post_processing/gen5_6/Common/AYUV_Load_16x8.asm83
-rw-r--r--src/shaders/post_processing/gen5_6/Common/AYUV_Load_16x8.inc73
-rw-r--r--src/shaders/post_processing/gen5_6/Common/Expansion.inc61
-rw-r--r--src/shaders/post_processing/gen5_6/Common/IMC3_Load_8x4.asm77
-rw-r--r--src/shaders/post_processing/gen5_6/Common/IMC3_Load_8x5.asm77
-rw-r--r--src/shaders/post_processing/gen5_6/Common/IMC3_Load_9x5.asm80
-rw-r--r--src/shaders/post_processing/gen5_6/Common/Init_All_Regs.asm48
-rw-r--r--src/shaders/post_processing/gen5_6/Common/Multiple_Loop.asm123
-rw-r--r--src/shaders/post_processing/gen5_6/Common/Multiple_Loop_Head.asm53
-rw-r--r--src/shaders/post_processing/gen5_6/Common/NV11_Load_4x8.asm72
-rw-r--r--src/shaders/post_processing/gen5_6/Common/NV11_Load_5x8.asm72
-rw-r--r--src/shaders/post_processing/gen5_6/Common/NV12_Load_8x4.asm100
-rw-r--r--src/shaders/post_processing/gen5_6/Common/NV12_Load_8x5.asm72
-rw-r--r--src/shaders/post_processing/gen5_6/Common/NV12_Load_9x5.asm72
-rw-r--r--src/shaders/post_processing/gen5_6/Common/P208_Load_8x8.asm71
-rw-r--r--src/shaders/post_processing/gen5_6/Common/P208_Load_9x8.asm72
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PA_Load.inc72
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PA_Load_8x8.asm63
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PA_Load_9x8.asm77
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PL16x8_PL8x4.asm68
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PL16x8_PL8x8.asm66
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PL2_Load.inc111
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PL3_Load.inc89
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PL4x8_Save_NV11.asm116
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PL4x8_Save_NV11.inc90
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PL5x8_PL16x8.asm59
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PL5x8_PL8x8.asm51
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PL8x4_Save_IMC3.asm118
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PL8x4_Save_IMC3.inc92
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PL8x4_Save_NV12.asm132
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PL8x4_Save_NV12.inc115
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PL8x5_PL8x8.asm57
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PL8x8_PL8x4.asm60
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PL8x8_PL8x4.inc66
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PL8x8_Save_P208.asm86
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PL8x8_Save_P208.inc91
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PL8x8_Save_PA.asm101
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PL8x8_Save_PA.inc82
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PL9x5_PL16x8.asm67
-rw-r--r--src/shaders/post_processing/gen5_6/Common/PL9x8_PL16x8.asm51
-rw-r--r--src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_RGB.asm118
-rw-r--r--src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_RGB.inc68
-rw-r--r--src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_RGB16.asm102
-rw-r--r--src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_RGB16.inc79
-rw-r--r--src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_Y416.asm137
-rw-r--r--src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_Y416.inc68
-rw-r--r--src/shaders/post_processing/gen5_6/Common/RGBX_Load_16x8.asm87
-rw-r--r--src/shaders/post_processing/gen5_6/Common/RGBX_Load_16x8.inc78
-rw-r--r--src/shaders/post_processing/gen5_6/Common/RGBX_Save_YUV_Fix.asm145
-rw-r--r--src/shaders/post_processing/gen5_6/Common/RGBX_Save_YUV_Float.asm182
-rw-r--r--src/shaders/post_processing/gen5_6/Common/RGBX_to_YUV_Coef.asm94
-rw-r--r--src/shaders/post_processing/gen5_6/Common/RGB_Pack.asm70
-rw-r--r--src/shaders/post_processing/gen5_6/Common/SetupVPKernel.asm64
-rw-r--r--src/shaders/post_processing/gen5_6/Common/YUVX_Save_RGBX_Fix.asm200
-rw-r--r--src/shaders/post_processing/gen5_6/Common/YUVX_Save_RGBX_Float.asm317
-rw-r--r--src/shaders/post_processing/gen5_6/Common/YUV_to_RGBX_Coef.asm129
-rw-r--r--src/shaders/post_processing/gen5_6/Common/common.inc647
-rw-r--r--src/shaders/post_processing/gen5_6/Common/readSampler16x1.asm85
-rw-r--r--src/shaders/post_processing/gen5_6/Common/undefall.inc95
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/AVS_IEF.inc138
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/AVS_SetupFirstBlock.asm65
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/AVS_SetupSecondBlock.asm57
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/DI.inc224
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/DI_Hist_Save.asm54
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/DI_SAVE_PA.asm86
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/DNDI.inc192
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/DNDI_COMMAND.asm47
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/DNDI_Hist_Save.asm50
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_16x8.asm56
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_8x4.asm55
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_8x8.asm55
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_Sample.asm64
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_Unpack_16x8.asm318
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_Unpack_8x4.asm107
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_Unpack_8x8.asm123
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PA_DNDI_ALG.asm169
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PA_DN_ALG.asm84
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PA_Scaling.asm100
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_16x8.asm90
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_8x4.asm88
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_8x8.asm87
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_Unpack_16x8.asm301
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_Unpack_8x4.asm75
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_Unpack_8x8.asm83
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PL2_Scaling.asm101
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_16x8.asm99
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_8x4.asm90
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_8x8.asm90
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_Unpack_16x8.asm270
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_Unpack_8x4.asm75
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_Unpack_8x8.asm74
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PL3_Scaling.asm102
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG.asm115
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG_UVCopy_NV11.asm133
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG_UVCopy_NV12.asm137
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG_UVCopy_P208.asm131
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG_UVCopy_PL3.asm136
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/PL_DN_ALG.asm65
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/RGB_AVS_IEF_16x8.asm63
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/RGB_AVS_IEF_Unpack_16x8.asm281
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/RGB_AVS_IEF_Unscramble_16x8.asm290
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/RGB_Scaling.asm102
-rw-r--r--src/shaders/post_processing/gen5_6/Core_Kernels/Scaling.inc105
-rwxr-xr-xsrc/shaders/post_processing/gen5_6/Makefile.am232
-rw-r--r--src/shaders/post_processing/gen5_6/null.g4a3
-rw-r--r--src/shaders/post_processing/gen5_6/null.g4b1
-rw-r--r--src/shaders/post_processing/gen5_6/null.g4b.gen51
-rw-r--r--src/shaders/post_processing/gen5_6/null.g6a3
-rw-r--r--src/shaders/post_processing/gen5_6/null.g6b1
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_avs_nv12.asm20
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_avs_nv12.g4b.gen5174
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_avs_nv12.g6b247
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_dn_nv12.asm26
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_dn_nv12.g4b.gen5117
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_dn_nv12.g6b190
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_dndi_nv12.asm18
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_dndi_nv12.g4b.gen597
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_dndi_nv12.g6b170
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_load_save_nv12.asm17
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_load_save_nv12.g4b.gen5110
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_load_save_nv12.g6b183
-rwxr-xr-xsrc/shaders/post_processing/gen5_6/nv12_load_save_pa.asm18
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_load_save_pa.g4b.gen5121
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_load_save_pa.g6b194
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_load_save_pl3.asm17
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_load_save_pl3.g4b.gen5109
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_load_save_pl3.g6b182
-rwxr-xr-xsrc/shaders/post_processing/gen5_6/nv12_load_save_rgbx.asm25
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_load_save_rgbx.g4b.gen5721
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_load_save_rgbx.g6b794
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_scaling_nv12.asm20
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_scaling_nv12.g4b.gen5226
-rw-r--r--src/shaders/post_processing/gen5_6/nv12_scaling_nv12.g6b299
-rwxr-xr-xsrc/shaders/post_processing/gen5_6/pa_load_save_nv12.asm18
-rw-r--r--src/shaders/post_processing/gen5_6/pa_load_save_nv12.g4b.gen5124
-rw-r--r--src/shaders/post_processing/gen5_6/pa_load_save_nv12.g6b197
-rw-r--r--src/shaders/post_processing/gen5_6/pa_load_save_pa.asm17
-rw-r--r--src/shaders/post_processing/gen5_6/pa_load_save_pa.g4b.gen5115
-rw-r--r--src/shaders/post_processing/gen5_6/pa_load_save_pa.g6b188
-rwxr-xr-xsrc/shaders/post_processing/gen5_6/pa_load_save_pl3.asm18
-rwxr-xr-xsrc/shaders/post_processing/gen5_6/pa_load_save_pl3.g4b.gen5127
-rwxr-xr-xsrc/shaders/post_processing/gen5_6/pa_load_save_pl3.g6b200
-rw-r--r--src/shaders/post_processing/gen5_6/pl3_load_save_nv12.asm17
-rw-r--r--src/shaders/post_processing/gen5_6/pl3_load_save_nv12.g4b.gen5112
-rw-r--r--src/shaders/post_processing/gen5_6/pl3_load_save_nv12.g6b185
-rwxr-xr-xsrc/shaders/post_processing/gen5_6/pl3_load_save_pa.asm18
-rw-r--r--src/shaders/post_processing/gen5_6/pl3_load_save_pa.g4b.gen5123
-rw-r--r--src/shaders/post_processing/gen5_6/pl3_load_save_pa.g6b196
-rw-r--r--src/shaders/post_processing/gen5_6/pl3_load_save_pl3.asm17
-rw-r--r--src/shaders/post_processing/gen5_6/pl3_load_save_pl3.g4b.gen5111
-rw-r--r--src/shaders/post_processing/gen5_6/pl3_load_save_pl3.g6b184
-rwxr-xr-xsrc/shaders/post_processing/gen5_6/rgbx_load_save_nv12.asm26
-rw-r--r--src/shaders/post_processing/gen5_6/rgbx_load_save_nv12.g4b.gen5570
-rw-r--r--src/shaders/post_processing/gen5_6/rgbx_load_save_nv12.g6b643
-rw-r--r--src/shaders/post_processing/gen7/DI_Core.g4a331
-rw-r--r--src/shaders/post_processing/gen7/DI_Save_NV12_16x4.g4a301
-rw-r--r--src/shaders/post_processing/gen7/DI_Save_PA_16x4.g4a311
-rw-r--r--src/shaders/post_processing/gen7/EOT.g4a188
-rw-r--r--src/shaders/post_processing/gen7/Makefile.am108
-rw-r--r--src/shaders/post_processing/gen7/NV12_DI_NV12.g4a414
-rw-r--r--src/shaders/post_processing/gen7/NV12_DNDI_422CP.g4a579
-rw-r--r--src/shaders/post_processing/gen7/NV12_DNDI_PA.g4a517
-rw-r--r--src/shaders/post_processing/gen7/NV12_DNUV_NV12.g4a2513
-rw-r--r--src/shaders/post_processing/gen7/NV12_DN_422CP.g4a561
-rw-r--r--src/shaders/post_processing/gen7/NV12_DN_NV12.g4a442
-rw-r--r--src/shaders/post_processing/gen7/PA_AVS_Buf_0.g4a561
-rw-r--r--src/shaders/post_processing/gen7/PA_AVS_Buf_1.g4a553
-rw-r--r--src/shaders/post_processing/gen7/PA_AVS_Buf_2.g4a554
-rw-r--r--src/shaders/post_processing/gen7/PA_AVS_Buf_3.g4a554
-rw-r--r--src/shaders/post_processing/gen7/PA_DI_422CP.g4a483
-rw-r--r--src/shaders/post_processing/gen7/PA_DI_PA.g4a421
-rw-r--r--src/shaders/post_processing/gen7/PA_DNDI_422CP.g4a559
-rw-r--r--src/shaders/post_processing/gen7/PA_DNDI_PA.g4a497
-rw-r--r--src/shaders/post_processing/gen7/PA_DNUV_PA.g4a2726
-rw-r--r--src/shaders/post_processing/gen7/PA_DN_422CP.g4a513
-rw-r--r--src/shaders/post_processing/gen7/PA_DN_PA.g4a425
-rw-r--r--src/shaders/post_processing/gen7/PL2_AVS_Buf_0.g4a564
-rw-r--r--src/shaders/post_processing/gen7/PL2_AVS_Buf_1.g4a557
-rw-r--r--src/shaders/post_processing/gen7/PL2_AVS_Buf_2.g4a558
-rw-r--r--src/shaders/post_processing/gen7/PL2_AVS_Buf_3.g4a558
-rw-r--r--src/shaders/post_processing/gen7/PL3_AVS_Buf_0.g4a571
-rw-r--r--src/shaders/post_processing/gen7/PL3_AVS_Buf_1.g4a564
-rw-r--r--src/shaders/post_processing/gen7/PL3_AVS_Buf_2.g4a565
-rw-r--r--src/shaders/post_processing/gen7/PL3_AVS_Buf_3.g4a565
-rw-r--r--src/shaders/post_processing/gen7/PL3_DNDI_422CP.g4a584
-rw-r--r--src/shaders/post_processing/gen7/PL3_DNDI_PA.g4a522
-rw-r--r--src/shaders/post_processing/gen7/PL3_DNUV_PL3.g4a2706
-rw-r--r--src/shaders/post_processing/gen7/PL3_DN_422CP.g4a566
-rw-r--r--src/shaders/post_processing/gen7/PL3_DN_PL3.g4a447
-rw-r--r--src/shaders/post_processing/gen7/PL_DI_422CP.g4a483
-rw-r--r--src/shaders/post_processing/gen7/PL_DI_PA.g4a421
-rw-r--r--src/shaders/post_processing/gen7/RGB_to_YUV.g4a932
-rw-r--r--src/shaders/post_processing/gen7/Save_AVS_NV12.g4a573
-rw-r--r--src/shaders/post_processing/gen7/Save_AVS_PA.g4a647
-rw-r--r--src/shaders/post_processing/gen7/Save_AVS_PL3.g4a586
-rw-r--r--src/shaders/post_processing/gen7/Save_AVS_RGB.g4a690
-rw-r--r--src/shaders/post_processing/gen7/Save_AVS_RGBX.g4a661
-rw-r--r--src/shaders/post_processing/gen7/Set_AVS_Buf_0123_BGRA.g4a388
-rw-r--r--src/shaders/post_processing/gen7/Set_AVS_Buf_0123_PL2.g4a383
-rw-r--r--src/shaders/post_processing/gen7/Set_AVS_Buf_0123_PL3.g4a383
-rw-r--r--src/shaders/post_processing/gen7/Set_AVS_Buf_0123_VUYA.g4a384
-rw-r--r--src/shaders/post_processing/gen7/Set_AVS_Buf_0123_VYUA.g4a384
-rw-r--r--src/shaders/post_processing/gen7/Set_Layer_0.g4a489
-rw-r--r--src/shaders/post_processing/gen7/VP_Setup.g4a875
-rw-r--r--src/shaders/post_processing/gen7/YUV_to_RGB.g4a1017
-rw-r--r--src/shaders/post_processing/gen7/avs.asm19
-rw-r--r--src/shaders/post_processing/gen7/avs.g75b604
-rw-r--r--src/shaders/post_processing/gen7/avs.g7b604
-rw-r--r--src/shaders/post_processing/gen7/dndi.asm11
-rw-r--r--src/shaders/post_processing/gen7/dndi.g75b46
-rw-r--r--src/shaders/post_processing/gen7/dndi.g7b46
-rw-r--r--src/shaders/post_processing/gen7/nv12_dn_nv12.asm5
-rw-r--r--src/shaders/post_processing/gen7/nv12_dn_nv12.g75b40
-rw-r--r--src/shaders/post_processing/gen7/nv12_dn_nv12.g7b40
-rw-r--r--src/shaders/post_processing/gen7/pa_to_pa.asm17
-rw-r--r--src/shaders/post_processing/gen7/pa_to_pa.g75b677
-rw-r--r--src/shaders/post_processing/gen7/pa_to_pa.g7b677
-rw-r--r--src/shaders/post_processing/gen7/pa_to_pl2.asm17
-rw-r--r--src/shaders/post_processing/gen7/pa_to_pl2.g75b584
-rw-r--r--src/shaders/post_processing/gen7/pa_to_pl2.g7b584
-rw-r--r--src/shaders/post_processing/gen7/pa_to_pl3.asm17
-rw-r--r--src/shaders/post_processing/gen7/pa_to_pl3.g75b587
-rw-r--r--src/shaders/post_processing/gen7/pa_to_pl3.g7b587
-rw-r--r--src/shaders/post_processing/gen7/pl2_to_pa.asm17
-rw-r--r--src/shaders/post_processing/gen7/pl2_to_pa.g75b697
-rw-r--r--src/shaders/post_processing/gen7/pl2_to_pa.g7b697
-rw-r--r--src/shaders/post_processing/gen7/pl2_to_pl2.asm17
-rw-r--r--src/shaders/post_processing/gen7/pl2_to_pl2.g75b604
-rw-r--r--src/shaders/post_processing/gen7/pl2_to_pl2.g7b604
-rw-r--r--src/shaders/post_processing/gen7/pl2_to_pl3.asm17
-rw-r--r--src/shaders/post_processing/gen7/pl2_to_pl3.g75b607
-rw-r--r--src/shaders/post_processing/gen7/pl2_to_pl3.g7b607
-rw-r--r--src/shaders/post_processing/gen7/pl2_to_rgbx.asm18
-rw-r--r--src/shaders/post_processing/gen7/pl2_to_rgbx.g75b1180
-rw-r--r--src/shaders/post_processing/gen7/pl2_to_rgbx.g7b1180
-rw-r--r--src/shaders/post_processing/gen7/pl3_to_pa.asm17
-rw-r--r--src/shaders/post_processing/gen7/pl3_to_pa.g75b709
-rw-r--r--src/shaders/post_processing/gen7/pl3_to_pa.g7b709
-rw-r--r--src/shaders/post_processing/gen7/pl3_to_pl2.asm17
-rw-r--r--src/shaders/post_processing/gen7/pl3_to_pl2.g75b616
-rw-r--r--src/shaders/post_processing/gen7/pl3_to_pl2.g7b616
-rw-r--r--src/shaders/post_processing/gen7/pl3_to_pl3.asm17
-rw-r--r--src/shaders/post_processing/gen7/pl3_to_pl3.g75b619
-rw-r--r--src/shaders/post_processing/gen7/pl3_to_pl3.g7b619
-rw-r--r--src/shaders/post_processing/gen7/rgbx_to_nv12.asm18
-rw-r--r--src/shaders/post_processing/gen7/rgbx_to_nv12.g75b1009
-rw-r--r--src/shaders/post_processing/gen7/rgbx_to_nv12.g7b1009
-rw-r--r--src/shaders/post_processing/gen75/Makefile.am9
-rw-r--r--src/shaders/post_processing/gen75/sharpening_h_blur.g75b1718
-rw-r--r--src/shaders/post_processing/gen75/sharpening_unmask.g75b170
-rw-r--r--src/shaders/post_processing/gen75/sharpening_v_blur.g75b368
-rw-r--r--src/shaders/post_processing/gen8/EOT.g8a166
-rw-r--r--src/shaders/post_processing/gen8/Makefile.am82
-rw-r--r--src/shaders/post_processing/gen8/PA_AVS_Buf_0.g8a457
-rw-r--r--src/shaders/post_processing/gen8/PA_AVS_Buf_1.g8a457
-rw-r--r--src/shaders/post_processing/gen8/PA_AVS_Buf_2.g8a457
-rw-r--r--src/shaders/post_processing/gen8/PA_AVS_Buf_3.g8a457
-rw-r--r--src/shaders/post_processing/gen8/PL2_AVS_Buf_0.g8a462
-rw-r--r--src/shaders/post_processing/gen8/PL2_AVS_Buf_1.g8a458
-rw-r--r--src/shaders/post_processing/gen8/PL2_AVS_Buf_2.g8a458
-rw-r--r--src/shaders/post_processing/gen8/PL2_AVS_Buf_3.g8a460
-rw-r--r--src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a65
-rw-r--r--src/shaders/post_processing/gen8/PL3_AVS_Buf_0.g8a470
-rw-r--r--src/shaders/post_processing/gen8/PL3_AVS_Buf_1.g8a470
-rw-r--r--src/shaders/post_processing/gen8/PL3_AVS_Buf_2.g8a470
-rw-r--r--src/shaders/post_processing/gen8/PL3_AVS_Buf_3.g8a470
-rw-r--r--src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a68
-rw-r--r--src/shaders/post_processing/gen8/RGB_to_YUV.g8a910
-rw-r--r--src/shaders/post_processing/gen8/Save_AVS_NV12.g8a555
-rw-r--r--src/shaders/post_processing/gen8/Save_AVS_PA.g8a629
-rw-r--r--src/shaders/post_processing/gen8/Save_AVS_PL3.g8a565
-rw-r--r--src/shaders/post_processing/gen8/Save_AVS_RGBX.g8a641
-rw-r--r--src/shaders/post_processing/gen8/Set_AVS_Buf_0123_BGRA.g8a368
-rw-r--r--src/shaders/post_processing/gen8/Set_AVS_Buf_0123_PL2.g8a361
-rw-r--r--src/shaders/post_processing/gen8/Set_AVS_Buf_0123_PL3.g8a362
-rw-r--r--src/shaders/post_processing/gen8/Set_AVS_Buf_0123_VYUA.g8a366
-rw-r--r--src/shaders/post_processing/gen8/Set_Layer_0.g8a483
-rw-r--r--src/shaders/post_processing/gen8/VP_Setup.g8a440
-rw-r--r--src/shaders/post_processing/gen8/YUV_to_RGB.g8a996
-rw-r--r--src/shaders/post_processing/gen8/conv_nv12.g8b362
-rw-r--r--src/shaders/post_processing/gen8/pa_to_pa.asm17
-rw-r--r--src/shaders/post_processing/gen8/pa_to_pa.g8b279
-rw-r--r--src/shaders/post_processing/gen8/pa_to_pl2.asm17
-rw-r--r--src/shaders/post_processing/gen8/pa_to_pl2.g8b186
-rw-r--r--src/shaders/post_processing/gen8/pa_to_pl3.asm17
-rw-r--r--src/shaders/post_processing/gen8/pa_to_pl3.g8b189
-rw-r--r--src/shaders/post_processing/gen8/pl2_to_pa.asm17
-rw-r--r--src/shaders/post_processing/gen8/pl2_to_pa.g8b287
-rw-r--r--src/shaders/post_processing/gen8/pl2_to_pl2.asm19
-rw-r--r--src/shaders/post_processing/gen8/pl2_to_pl2.g8b238
-rw-r--r--src/shaders/post_processing/gen8/pl2_to_pl3.asm19
-rw-r--r--src/shaders/post_processing/gen8/pl2_to_pl3.g8b241
-rw-r--r--src/shaders/post_processing/gen8/pl2_to_rgbx.asm18
-rw-r--r--src/shaders/post_processing/gen8/pl2_to_rgbx.g8b770
-rw-r--r--src/shaders/post_processing/gen8/pl3_to_pa.asm17
-rw-r--r--src/shaders/post_processing/gen8/pl3_to_pa.g8b303
-rw-r--r--src/shaders/post_processing/gen8/pl3_to_pl2.asm19
-rw-r--r--src/shaders/post_processing/gen8/pl3_to_pl2.g8b257
-rw-r--r--src/shaders/post_processing/gen8/pl3_to_pl3.asm19
-rw-r--r--src/shaders/post_processing/gen8/pl3_to_pl3.g8b260
-rw-r--r--src/shaders/post_processing/gen8/rgbx_to_nv12.asm18
-rw-r--r--src/shaders/post_processing/gen8/rgbx_to_nv12.g8b611
-rw-r--r--src/shaders/post_processing/gen8/sharpening_h_blur.g8b1718
-rw-r--r--src/shaders/post_processing/gen8/sharpening_unmask.g8b159
-rw-r--r--src/shaders/post_processing/gen8/sharpening_v_blur.g8b296
-rw-r--r--src/shaders/post_processing/gen9/Makefile.am81
-rw-r--r--src/shaders/post_processing/gen9/conv_nv12.g9b368
-rw-r--r--src/shaders/post_processing/gen9/conv_p010.g9b783
-rw-r--r--src/shaders/post_processing/gen9/pa_to_pa.g9b279
-rw-r--r--src/shaders/post_processing/gen9/pa_to_pl2.g9b186
-rw-r--r--src/shaders/post_processing/gen9/pa_to_pl3.g9b189
-rw-r--r--src/shaders/post_processing/gen9/pl2_to_pa.g9b287
-rw-r--r--src/shaders/post_processing/gen9/pl2_to_pl2.g9b238
-rw-r--r--src/shaders/post_processing/gen9/pl2_to_pl3.g9b241
-rw-r--r--src/shaders/post_processing/gen9/pl2_to_rgbx.g9b770
-rw-r--r--src/shaders/post_processing/gen9/pl3_to_pa.g9b303
-rw-r--r--src/shaders/post_processing/gen9/pl3_to_pl2.g9b257
-rw-r--r--src/shaders/post_processing/gen9/pl3_to_pl3.g9b260
-rw-r--r--src/shaders/post_processing/gen9/rgbx_to_nv12.g9b611
-rw-r--r--src/shaders/render/Makefile.am206
-rw-r--r--src/shaders/render/exa_sf.g4a107
-rw-r--r--src/shaders/render/exa_sf.g4b15
-rw-r--r--src/shaders/render/exa_sf.g4b.gen515
-rw-r--r--src/shaders/render/exa_wm.g4i182
-rw-r--r--src/shaders/render/exa_wm_affine.g4i44
-rw-r--r--src/shaders/render/exa_wm_src_affine.g4a45
-rw-r--r--src/shaders/render/exa_wm_src_affine.g4b8
-rw-r--r--src/shaders/render/exa_wm_src_affine.g4b.gen58
-rw-r--r--src/shaders/render/exa_wm_src_affine.g6a44
-rw-r--r--src/shaders/render/exa_wm_src_affine.g6b4
-rw-r--r--src/shaders/render/exa_wm_src_affine.g7a45
-rw-r--r--src/shaders/render/exa_wm_src_affine.g7b4
-rw-r--r--src/shaders/render/exa_wm_src_affine.g8a45
-rw-r--r--src/shaders/render/exa_wm_src_affine.g8b4
-rw-r--r--src/shaders/render/exa_wm_src_affine.g9a45
-rw-r--r--src/shaders/render/exa_wm_src_affine.g9b4
-rw-r--r--src/shaders/render/exa_wm_src_sample_argb.g4a52
-rw-r--r--src/shaders/render/exa_wm_src_sample_argb.g4b4
-rw-r--r--src/shaders/render/exa_wm_src_sample_argb.g4b.gen54
-rw-r--r--src/shaders/render/exa_wm_src_sample_argb.g6a55
-rw-r--r--src/shaders/render/exa_wm_src_sample_argb.g6b5
-rw-r--r--src/shaders/render/exa_wm_src_sample_argb.g7a59
-rw-r--r--src/shaders/render/exa_wm_src_sample_argb.g7b5
-rw-r--r--src/shaders/render/exa_wm_src_sample_argb.g8a59
-rw-r--r--src/shaders/render/exa_wm_src_sample_argb.g8b5
-rw-r--r--src/shaders/render/exa_wm_src_sample_argb.g9a59
-rw-r--r--src/shaders/render/exa_wm_src_sample_argb.g9b5
-rw-r--r--src/shaders/render/exa_wm_src_sample_planar.g4a87
-rw-r--r--src/shaders/render/exa_wm_src_sample_planar.g4b10
-rw-r--r--src/shaders/render/exa_wm_src_sample_planar.g4b.gen510
-rw-r--r--src/shaders/render/exa_wm_src_sample_planar.g6a92
-rw-r--r--src/shaders/render/exa_wm_src_sample_planar.g6b15
-rw-r--r--src/shaders/render/exa_wm_src_sample_planar.g7a105
-rw-r--r--src/shaders/render/exa_wm_src_sample_planar.g7b20
-rw-r--r--src/shaders/render/exa_wm_src_sample_planar.g7b.haswell20
-rw-r--r--src/shaders/render/exa_wm_src_sample_planar.g8a106
-rw-r--r--src/shaders/render/exa_wm_src_sample_planar.g8b20
-rw-r--r--src/shaders/render/exa_wm_src_sample_planar.g9a105
-rw-r--r--src/shaders/render/exa_wm_src_sample_planar.g9b20
-rw-r--r--src/shaders/render/exa_wm_write.g4a85
-rw-r--r--src/shaders/render/exa_wm_write.g4b26
-rw-r--r--src/shaders/render/exa_wm_write.g4b.gen526
-rw-r--r--src/shaders/render/exa_wm_write.g6a77
-rw-r--r--src/shaders/render/exa_wm_write.g6b17
-rw-r--r--src/shaders/render/exa_wm_write.g7a26
-rw-r--r--src/shaders/render/exa_wm_write.g7b19
-rw-r--r--src/shaders/render/exa_wm_write.g7i80
-rw-r--r--src/shaders/render/exa_wm_write.g8a26
-rw-r--r--src/shaders/render/exa_wm_write.g8b19
-rw-r--r--src/shaders/render/exa_wm_write.g9a26
-rw-r--r--src/shaders/render/exa_wm_write.g9b19
-rw-r--r--src/shaders/render/exa_wm_xy.g4a52
-rw-r--r--src/shaders/render/exa_wm_xy.g4b4
-rw-r--r--src/shaders/render/exa_wm_xy.g4b.gen54
-rw-r--r--src/shaders/render/exa_wm_yuv_color_balance.g4a38
-rw-r--r--src/shaders/render/exa_wm_yuv_color_balance.g4b15
-rw-r--r--src/shaders/render/exa_wm_yuv_color_balance.g4b.gen515
-rw-r--r--src/shaders/render/exa_wm_yuv_color_balance.g6a38
-rw-r--r--src/shaders/render/exa_wm_yuv_color_balance.g6b15
-rw-r--r--src/shaders/render/exa_wm_yuv_color_balance.g7a38
-rw-r--r--src/shaders/render/exa_wm_yuv_color_balance.g7b15
-rw-r--r--src/shaders/render/exa_wm_yuv_color_balance.g7b.haswell15
-rw-r--r--src/shaders/render/exa_wm_yuv_color_balance.g8a39
-rw-r--r--src/shaders/render/exa_wm_yuv_color_balance.g8b15
-rw-r--r--src/shaders/render/exa_wm_yuv_color_balance.g9a39
-rw-r--r--src/shaders/render/exa_wm_yuv_color_balance.g9b15
-rw-r--r--src/shaders/render/exa_wm_yuv_color_balance.gxa75
-rw-r--r--src/shaders/render/exa_wm_yuv_rgb.g4a32
-rw-r--r--src/shaders/render/exa_wm_yuv_rgb.g4b13
-rw-r--r--src/shaders/render/exa_wm_yuv_rgb.g4b.gen513
-rw-r--r--src/shaders/render/exa_wm_yuv_rgb.g6a31
-rw-r--r--src/shaders/render/exa_wm_yuv_rgb.g6b13
-rw-r--r--src/shaders/render/exa_wm_yuv_rgb.g7a31
-rw-r--r--src/shaders/render/exa_wm_yuv_rgb.g7b13
-rw-r--r--src/shaders/render/exa_wm_yuv_rgb.g8a32
-rw-r--r--src/shaders/render/exa_wm_yuv_rgb.g8b13
-rw-r--r--src/shaders/render/exa_wm_yuv_rgb.g9a32
-rw-r--r--src/shaders/render/exa_wm_yuv_rgb.g9b13
-rw-r--r--src/shaders/render/exa_yuv_gen4.g4i42
-rw-r--r--src/shaders/render/exa_yuv_gen6.g4i42
-rw-r--r--src/shaders/render/exa_yuv_rgb.gxa74
-rw-r--r--src/shaders/utils/Makefile.am116
-rw-r--r--src/shaders/utils/end_thread.asm29
-rw-r--r--src/shaders/utils/mfc_batchbuffer.inc246
-rw-r--r--src/shaders/utils/mfc_batchbuffer_avc_inter.asm178
-rw-r--r--src/shaders/utils/mfc_batchbuffer_avc_inter.g6a32
-rw-r--r--src/shaders/utils/mfc_batchbuffer_avc_inter.g6b90
-rw-r--r--src/shaders/utils/mfc_batchbuffer_avc_inter.g7a32
-rw-r--r--src/shaders/utils/mfc_batchbuffer_avc_inter.g7b90
-rw-r--r--src/shaders/utils/mfc_batchbuffer_avc_intra.asm111
-rw-r--r--src/shaders/utils/mfc_batchbuffer_avc_intra.g6a32
-rw-r--r--src/shaders/utils/mfc_batchbuffer_avc_intra.g6b66
-rw-r--r--src/shaders/utils/mfc_batchbuffer_avc_intra.g7a32
-rw-r--r--src/shaders/utils/mfc_batchbuffer_avc_intra.g7b66
-rw-r--r--src/shaders/utils/mfc_batchbuffer_head.asm87
-rw-r--r--src/shaders/utils/mfc_batchbuffer_hsw.asm296
-rw-r--r--src/shaders/utils/mfc_batchbuffer_hsw.g75a29
-rw-r--r--src/shaders/utils/mfc_batchbuffer_hsw.g75b105
-rw-r--r--src/shaders/utils/mfc_batchbuffer_hsw.g8a28
-rw-r--r--src/shaders/utils/mfc_batchbuffer_hsw.g8b105
-rw-r--r--src/shaders/utils/mfc_batchbuffer_hsw.g9a28
-rw-r--r--src/shaders/utils/mfc_batchbuffer_hsw.g9b105
-rw-r--r--src/shaders/utils/mfc_batchbuffer_hsw.inc195
-rw-r--r--src/shaders/utils/mfc_batchbuffer_tail.asm100
-rw-r--r--src/shaders/vld/Makefile384
-rw-r--r--src/shaders/vme/Makefile.am118
-rw-r--r--src/shaders/vme/batchbuffer.asm133
-rw-r--r--src/shaders/vme/batchbuffer.g6a29
-rw-r--r--src/shaders/vme/batchbuffer.g6b36
-rw-r--r--src/shaders/vme/batchbuffer.g75a2
-rw-r--r--src/shaders/vme/batchbuffer.g75b36
-rw-r--r--src/shaders/vme/batchbuffer.g7a29
-rw-r--r--src/shaders/vme/batchbuffer.g7b36
-rw-r--r--src/shaders/vme/batchbuffer.inc184
-rw-r--r--src/shaders/vme/inter_bframe_gen8.asm891
-rw-r--r--src/shaders/vme/inter_bframe_gen8.g8a2
-rw-r--r--src/shaders/vme/inter_bframe_gen8.g8b423
-rw-r--r--src/shaders/vme/inter_bframe_gen9.g9a2
-rw-r--r--src/shaders/vme/inter_bframe_gen9.g9b423
-rw-r--r--src/shaders/vme/inter_bframe_haswell.asm900
-rw-r--r--src/shaders/vme/inter_bframe_haswell.g75a2
-rw-r--r--src/shaders/vme/inter_bframe_haswell.g75b418
-rw-r--r--src/shaders/vme/inter_bframe_ivb.asm759
-rw-r--r--src/shaders/vme/inter_bframe_ivb.g7a2
-rw-r--r--src/shaders/vme/inter_bframe_ivb.g7b383
-rw-r--r--src/shaders/vme/inter_frame.asm307
-rw-r--r--src/shaders/vme/inter_frame.g6a2
-rw-r--r--src/shaders/vme/inter_frame.g6b126
-rw-r--r--src/shaders/vme/inter_frame.g7a2
-rw-r--r--src/shaders/vme/inter_frame.g7b113
-rw-r--r--src/shaders/vme/inter_frame_gen8.asm789
-rw-r--r--src/shaders/vme/inter_frame_gen8.g8a2
-rw-r--r--src/shaders/vme/inter_frame_gen8.g8b332
-rw-r--r--src/shaders/vme/inter_frame_gen9.g9a2
-rw-r--r--src/shaders/vme/inter_frame_gen9.g9b332
-rw-r--r--src/shaders/vme/inter_frame_haswell.asm770
-rw-r--r--src/shaders/vme/inter_frame_haswell.g75a2
-rw-r--r--src/shaders/vme/inter_frame_haswell.g75b316
-rw-r--r--src/shaders/vme/inter_frame_ivb.asm622
-rw-r--r--src/shaders/vme/inter_frame_ivb.g7a2
-rw-r--r--src/shaders/vme/inter_frame_ivb.g7b271
-rw-r--r--src/shaders/vme/intra_frame.asm182
-rw-r--r--src/shaders/vme/intra_frame.g6a3
-rw-r--r--src/shaders/vme/intra_frame.g6b70
-rw-r--r--src/shaders/vme/intra_frame.g7a3
-rw-r--r--src/shaders/vme/intra_frame.g7b70
-rw-r--r--src/shaders/vme/intra_frame_gen8.asm214
-rw-r--r--src/shaders/vme/intra_frame_gen8.g8a2
-rw-r--r--src/shaders/vme/intra_frame_gen8.g8b77
-rw-r--r--src/shaders/vme/intra_frame_gen9.g9a2
-rw-r--r--src/shaders/vme/intra_frame_gen9.g9b77
-rw-r--r--src/shaders/vme/intra_frame_haswell.asm217
-rw-r--r--src/shaders/vme/intra_frame_haswell.g75a2
-rw-r--r--src/shaders/vme/intra_frame_haswell.g75b76
-rw-r--r--src/shaders/vme/intra_frame_ivb.asm154
-rw-r--r--src/shaders/vme/intra_frame_ivb.g7a3
-rw-r--r--src/shaders/vme/intra_frame_ivb.g7b53
-rw-r--r--src/shaders/vme/mpeg2_inter_gen8.asm884
-rw-r--r--src/shaders/vme/mpeg2_inter_gen8.g8a3
-rw-r--r--src/shaders/vme/mpeg2_inter_gen8.g8b371
-rw-r--r--src/shaders/vme/mpeg2_inter_gen9.g9a3
-rw-r--r--src/shaders/vme/mpeg2_inter_gen9.g9b371
-rw-r--r--src/shaders/vme/mpeg2_inter_haswell.asm876
-rw-r--r--src/shaders/vme/mpeg2_inter_haswell.g75a3
-rw-r--r--src/shaders/vme/mpeg2_inter_haswell.g75b366
-rw-r--r--src/shaders/vme/mpeg2_inter_ivb.asm721
-rw-r--r--src/shaders/vme/mpeg2_inter_ivb.g7a3
-rw-r--r--src/shaders/vme/mpeg2_inter_ivb.g7b308
-rw-r--r--src/shaders/vme/vme.inc300
-rw-r--r--src/shaders/vme/vme7.inc342
-rw-r--r--src/shaders/vme/vme75.inc365
-rw-r--r--src/shaders/vme/vme75_mpeg2.inc49
-rw-r--r--src/shaders/vme/vme7_mpeg2.inc51
-rw-r--r--src/shaders/vme/vme8.inc374
-rw-r--r--src/shaders/vme/vp8_inter_frame_gen8.asm739
-rw-r--r--src/shaders/vme/vp8_inter_frame_gen8.g8a2
-rw-r--r--src/shaders/vme/vp8_inter_frame_gen8.g8b299
-rw-r--r--src/shaders/vme/vp8_inter_frame_gen9.g9a2
-rw-r--r--src/shaders/vme/vp8_inter_frame_gen9.g9b299
-rw-r--r--src/shaders/vme/vp8_intra_frame_gen8.asm200
-rw-r--r--src/shaders/vme/vp8_intra_frame_gen8.g8a2
-rw-r--r--src/shaders/vme/vp8_intra_frame_gen8.g8b73
-rw-r--r--src/shaders/vme/vp8_intra_frame_gen9.g9a2
-rw-r--r--src/shaders/vme/vp8_intra_frame_gen9.g9b73
-rw-r--r--src/sysdeps.h47
-rw-r--r--src/va_backend_compat.h61
-rw-r--r--src/vp8_probs.h339
-rw-r--r--src/vp9_probs.c1106
-rw-r--r--src/vp9_probs.h249
-rw-r--r--src/vpx_probs.AUTHORS0
-rw-r--r--src/vpx_probs.LICENSE0
-rw-r--r--src/vpx_probs.PATENTS0
-rw-r--r--src/wayland-drm-client-protocol.h290
-rw-r--r--src/wayland-drm.xml185
-rw-r--r--test/Makefile.am109
-rw-r--r--test/gtest/LICENSE28
-rw-r--r--test/gtest/README.md280
-rw-r--r--test/gtest/docs/AdvancedGuide.md2182
-rw-r--r--test/gtest/docs/DevGuide.md126
-rw-r--r--test/gtest/docs/Documentation.md14
-rw-r--r--test/gtest/docs/FAQ.md1087
-rw-r--r--test/gtest/docs/Primer.md502
-rw-r--r--test/gtest/docs/PumpManual.md177
-rw-r--r--test/gtest/docs/Samples.md14
-rw-r--r--test/gtest/docs/XcodeGuide.md93
-rw-r--r--test/gtest/include/gtest/gtest-death-test.h294
-rw-r--r--test/gtest/include/gtest/gtest-message.h250
-rw-r--r--test/gtest/include/gtest/gtest-param-test.h1444
-rw-r--r--test/gtest/include/gtest/gtest-param-test.h.pump510
-rw-r--r--test/gtest/include/gtest/gtest-printers.h993
-rw-r--r--test/gtest/include/gtest/gtest-spi.h232
-rw-r--r--test/gtest/include/gtest/gtest-test-part.h179
-rw-r--r--test/gtest/include/gtest/gtest-typed-test.h263
-rw-r--r--test/gtest/include/gtest/gtest.h2236
-rw-r--r--test/gtest/include/gtest/gtest_pred_impl.h358
-rw-r--r--test/gtest/include/gtest/gtest_prod.h58
-rw-r--r--test/gtest/include/gtest/internal/custom/gtest-port.h69
-rw-r--r--test/gtest/include/gtest/internal/custom/gtest-printers.h42
-rw-r--r--test/gtest/include/gtest/internal/custom/gtest.h41
-rw-r--r--test/gtest/include/gtest/internal/gtest-death-test-internal.h319
-rw-r--r--test/gtest/include/gtest/internal/gtest-filepath.h206
-rw-r--r--test/gtest/include/gtest/internal/gtest-internal.h1237
-rw-r--r--test/gtest/include/gtest/internal/gtest-linked_ptr.h243
-rw-r--r--test/gtest/include/gtest/internal/gtest-param-util-generated.h5146
-rw-r--r--test/gtest/include/gtest/internal/gtest-param-util-generated.h.pump286
-rw-r--r--test/gtest/include/gtest/internal/gtest-param-util.h731
-rw-r--r--test/gtest/include/gtest/internal/gtest-port-arch.h93
-rw-r--r--test/gtest/include/gtest/internal/gtest-port.h2554
-rw-r--r--test/gtest/include/gtest/internal/gtest-string.h167
-rw-r--r--test/gtest/include/gtest/internal/gtest-tuple.h1020
-rw-r--r--test/gtest/include/gtest/internal/gtest-tuple.h.pump347
-rw-r--r--test/gtest/include/gtest/internal/gtest-type-util.h3331
-rw-r--r--test/gtest/include/gtest/internal/gtest-type-util.h.pump297
-rw-r--r--test/gtest/src/gtest-all.cc48
-rw-r--r--test/gtest/src/gtest-death-test.cc1342
-rw-r--r--test/gtest/src/gtest-filepath.cc387
-rw-r--r--test/gtest/src/gtest-internal-inl.h1183
-rw-r--r--test/gtest/src/gtest-port.cc1259
-rw-r--r--test/gtest/src/gtest-printers.cc373
-rw-r--r--test/gtest/src/gtest-test-part.cc110
-rw-r--r--test/gtest/src/gtest-typed-test.cc118
-rw-r--r--test/gtest/src/gtest.cc5388
-rw-r--r--test/gtest/src/gtest_main.cc38
-rw-r--r--test/i965_avcd_config_test.cpp115
-rw-r--r--test/i965_avce_config_test.cpp161
-rw-r--r--test/i965_avce_context_test.cpp257
-rw-r--r--test/i965_avce_test_common.cpp85
-rw-r--r--test/i965_avce_test_common.h39
-rw-r--r--test/i965_chipset_test.cpp104
-rw-r--r--test/i965_config_test.cpp63
-rw-r--r--test/i965_config_test.h56
-rw-r--r--test/i965_initialize_test.cpp66
-rw-r--r--test/i965_internal_decl.h78
-rw-r--r--test/i965_jpeg_decode_test.cpp299
-rw-r--r--test/i965_jpeg_encode_test.cpp530
-rw-r--r--test/i965_jpeg_test_data.cpp915
-rw-r--r--test/i965_jpeg_test_data.h475
-rw-r--r--test/i965_jpegd_config_test.cpp75
-rw-r--r--test/i965_jpege_config_test.cpp78
-rw-r--r--test/i965_streamable.h479
-rw-r--r--test/i965_surface_test.cpp120
-rw-r--r--test/i965_test_environment.cpp93
-rw-r--r--test/i965_test_environment.h100
-rw-r--r--test/i965_test_fixture.cpp157
-rw-r--r--test/i965_test_fixture.h199
-rw-r--r--test/i965_test_image_utils.cpp747
-rw-r--r--test/i965_test_image_utils.h66
-rw-r--r--test/object_heap_test.cpp244
-rw-r--r--test/test.h162
-rw-r--r--test/test_main.cpp36
-rw-r--r--test/test_utils.h78
962 files changed, 9 insertions, 321125 deletions
diff --git a/AUTHORS b/AUTHORS
deleted file mode 100644
index f296b02..0000000
--- a/AUTHORS
+++ /dev/null
@@ -1,10 +0,0 @@
-Intel Linux graphics team working on the driver:
-Chang Zhou
-Gwenole Beauchesne
-Haihao Xiang (primary author)
-Nanhai Zou
-
-Additional contributors:
-Alexander Osin
-Damien Lespiau
-Edgar Hucek
diff --git a/Android.mk b/Android.mk
deleted file mode 100644
index 5cbb9d8..0000000
--- a/Android.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-# Recursive call sub-folder Android.mk
-#
-
- include $(call all-subdir-makefiles)
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index 37ef353..0000000
--- a/Makefile.am
+++ /dev/null
@@ -1,30 +0,0 @@
-AUTOMAKE_OPTIONS = foreign
-
-SUBDIRS = debian.upstream src
-
-if ENABLE_TESTS
-SUBDIRS += test
-endif
-
-
-# Extra clean files so that maintainer-clean removes *everything*
-MAINTAINERCLEANFILES = \
- aclocal.m4 compile config.guess config.sub \
- configure depcomp install-sh ltmain.sh \
- Makefile.in missing
-
-DEB_BUILDDIR = debian.build
-
-deb:
- @[ -d debian ] || ln -s debian.upstream debian
- dpkg-buildpackage -rfakeroot -uc -us
-
-deb.upstream: dist
- -mkdir -p $(DEB_BUILDDIR)
- cd $(DEB_BUILDDIR) && \
- rm -rf $(PACKAGE)-$(VERSION) && \
- tar zxvf ../$(PACKAGE)-$(VERSION).tar.gz && \
- cd $(PACKAGE)-$(VERSION) && \
- $(MAKE) deb -f Makefile.am
-
-EXTRA_DIST = Android.mk
diff --git a/PROJECT_HAS_MOVED b/PROJECT_HAS_MOVED
new file mode 100644
index 0000000..33004c1
--- /dev/null
+++ b/PROJECT_HAS_MOVED
@@ -0,0 +1,9 @@
+We've consolidated our VAAPI Media software projects upstream onto
+github and have been updating distributions with the new source
+locations. Changes are in flight. Next release will be on Github.
+
+Intel-vaapi-driver project has moved to https://github.com/01org/intel-vaapi-driver
+
+Use https://github.com/01org/intel-vaapi-driver/issues/new to file bugs on the
+intel-vaapi-driver github site
+
diff --git a/README b/README
deleted file mode 100644
index 0d1f42e..0000000
--- a/README
+++ /dev/null
@@ -1,57 +0,0 @@
-
- libva-intel-driver
- VA driver for Intel G45 & HD Graphics family
-
- Copyright (C) 2009-2016 Intel Corporation
-
-
-License
--------
-
-Please read the COPYING file available in this package.
-
-
-Overview
---------
-
-libva-intel-driver is the VA-API implementation for Intel G45 chipsets
-and Intel HD Graphics for Intel Core processor family.
-
-Platform definitions:
-CTG: Cantiga, Intel GMA 4500MHD (GM45)
-ILK: Ironlake, Intel HD Graphics for 2010 Intel Core processor family
-SNB: Sandybridge, Intel HD Graphics for 2011 Intel Core processor family
-IVB: Ivybridge
-HSW: Haswell
-BDW: Broadwell
-CHV/BSW: Cherryview/Braswell
-SKL: Skylake
-BXT: Broxton
-KBL: Kabylake
-
-Codecs
-------
-
-H.264 D ILK+
-H.264 E SNB+
-MPEG-2 D CTG+
-VC-1 D SNB+
-JPEG D IVB+
-JPEG E CHV+/BSW+
-VP8 D BDW+
-VP8 E CHV+/BSW+
-HEVC D CHV+/BSW+
-HEVC E SKL+
-VP9 D BXT+
-HEVC 10bit D BXT+
-VP9 10bit D KBL+
-
-Requirements
-------------
-
-libva >= 1.7.0
-
-Testing
--------
-
-Please read the TESTING file available in this package.
diff --git a/TESTING b/TESTING
deleted file mode 100644
index 7f85aca..0000000
--- a/TESTING
+++ /dev/null
@@ -1,146 +0,0 @@
-
-Overview
---------
-
-The libva-intel-driver uses the Google Test Framework (gtest) for testing the
-driver. Documentation for gtest can be found in the test/gtest/doc/
-subdirectory. The original, upstream gtest project can be found at
-https://github.com/google/googletest.
-
-Ideally, driver tests will only verify driver-specific functionality, features
-and internal utility functions and concepts.
-
-Developers are expected to write new tests for any new code that they contribute
-to the project. The project maintainers reserve the right to refuse patch
-submissions if they are not accompanied by tests, when reasonable, or if a
-submission causes existing tests to regress.
-
-
-Google Test Framework Integration
----------------------------------
-
-Google Test recommends it be custom compiled for each project that uses it.
-Therefore, the libva-intel-driver project tracks a subset copy of the Google
-Test Framework source code at release 1.8.0 (initially) in a test/gtest/
-subdirectory of the project source tree. The libva-intel-driver copy of gtest
-will only be updated to new upstream releases (or critical upstream fixes) of
-gtest, only if it is necessary. As of this writing, the last release (1.8.0)
-was August 2016, about three years after its previous release. Thus, there
-should be minimal need to update or maintain gtest within the intel-driver
-project.
-
-Libva-intel-driver tests or other project code should *not* be intermixed within
-the test/gtest/ subdirectory. The test/gtest/ subdirectory should only contain
-source from the upstream Google Test project to make upgrades simpler.
-
-
-Building Google Test Framework Library
---------------------------------------
-
-The Google Test Framework is compiled as a convenience library (libgtest.la)
-within the libva-intel-driver source tree. The rules to build libgtest.la are
-maintained in a custom makefile in the libva-intel-driver project tree
-(see test/Makefile.am). The libgtest.la library will be automatically compiled
-if the tests are enabled by configuration.
-
-
-Building Driver Tests
----------------------
-
-The --enable-tests=[yes|no] configuration option is defined in configure.ac to
-enable or disable compilation of libgtest.la and the driver test executable.
-The default is disabled. When the tests are enabled during configuration, the
-make command will compile the driver tests and link to libgtest.la and output a
-single test/test_i965_drv_video executable. Hence...
-
- "./autogen.sh --enable-tests && make"
-
-...is a minimal example of how one might build the driver and its tests.
-
-
-Writing Driver Tests
---------------------
-
-Libva-intel-driver tests are defined in the test/ subdirectory using the Google
-Test Framework. All driver tests that need a VADriverContextP, VADisplay and
-etc. should define a test fixture that inherits from the I965TestFixture class
-and then use the gtest test fixture macro (TEST_F) to define the test case. The
-I965TestFixture class handles initialization and termination of the i965 driver
-context, display, etc. It also defines various C++ operators to convert to
-these types, amongst others. Additionally, it provides an interface that wraps
-various i965 driver functions. After calling a wrapped function within a test,
-the test should check HasFailure() with the appropriate assertion macro since
-these wrapper functions may generate fatal or non-fatal test assertions.
-
-The following is a basic example of how to use the I965TestFixture class to
-write a test:
-
- #include “i965_test_fixture.hâ€
- #include <vector>
- class MyDriverATest : public I965TestFixture
- {
- public:
- virtual void SetUp()
- {
- I965TestFixture::SetUp();
-
- // do local test SetUp stuff
- }
- virtual void TearDown()
- {
- // do local test TearDown stuff
-
- I965TestFixture::TearDown();
- }
- };
-
- TEST_F(MyDriverATest, test_case_1)
- {
- ConfigAttribs attribs(
- 1, {type: VAConfigAttribRTFormat, value: VA_RT_FORMAT_YUV420});
-
- // call I965TestFixture wrapper for i965_CreateConfig
- VAConfigID config = this->createConfig(
- VAProfileJPEGBaseline, VAEntrypointVLD, attribs);
- ASSERT_FALSE(HasFailure()); // abort and fail if wrapper call failed
- ASSERT_ID(config); // abort and fail if config id is not valid
-
- // convert I965TestFixture to driver context
- VADriverContextP ctx(*this);
- ASSERT_PTR(ctx); // abort and fail if invalid pointer
-
- // convert I965TestFixture to display
- VADisplay display(*this);
-
- // more testing...
- }
-
-To directly test a driver function that is only declared and defined in a .c
-implementation file, an extern prototype of that function should be declared and
-wrapped in an extern “C†block. The test/i965_internal_decl.h header does some
-of this for you already.
-
-To include a driver's C header file in a C++ test file, the #include should be
-wrapped within an extern “C†block. See test/i965_internal_decl.h for an
-example.
-
-
-Validation/QA
---------------
-
-Validation and QA Teams should compile the test executable and run it directly
-from their build tree. Without any command line options, the executable will
-execute all the tests and report the result to the console. For CI frameworks,
-the --gtest_output=xml:test_result.xml command line option can be specified to
-have the test results dumped to an xml file that can be processed by the CI
-framework. There are various other predefined gtest command line options that
-may also be useful, like test shuffling, repeating, seed, etc. (see --help for
-these options).
-
-
-Distribution
-------------
-
-A libva-intel-driver source distribution is generated during `make dist` and
-includes the necessary Google Test Framework source code and makefile rules
-along with the driver test source code.
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755
index 626d213..0000000
--- a/autogen.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#! /bin/sh
-
-srcdir=`dirname "$0"`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd "$srcdir"
-
-autoreconf -v --install || exit 1
-cd $ORIGDIR || exit $?
-
-if test -z "$NOCONFIGURE"; then
- "$srcdir"/configure "$@"
-fi
diff --git a/build/gen_version.sh b/build/gen_version.sh
deleted file mode 100644
index 586d588..0000000
--- a/build/gen_version.sh
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright (c) 2015 Intel Corporation. All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sub license, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice (including the
-# next paragraph) shall be included in all copies or substantial portions
-# of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-# IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
-# ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-#!/bin/sh
-
-top_srcdir="$1"
-srcdir="$2"
-
-# git version
-VERSION_FILE=".VERSION"
-OLD_VERSION_FILE=$VERSION_FILE.old
-NEW_VERSION_FILE=$VERSION_FILE.new
-PKG_VERSION_FILE=$VERSION_FILE.pkg
-HAVE_GIT=0;
-
-check_git() {
- git --version 2>&1 /dev/null
- if [ $? -eq "0" ]; then
- HAVE_GIT=1
- else
- HAVE_GIT=0;
- fi
-}
-
-gen_version() {
- echo $VERSION > $NEW_VERSION_FILE
- if [ $HAVE_GIT -eq "1" ]; then
- [ -d $top_srcdir/.git ] && \
- (cd $top_srcdir && git describe --tags) > $NEW_VERSION_FILE || :
- fi
- [ -f $srcdir/$PKG_VERSION_FILE ] && \
- cp -f $srcdir/$PKG_VERSION_FILE $NEW_VERSION_FILE || :
-}
-
-check_git;
-gen_version;
-
-OV=`[ -f $OLD_VERSION_FILE ] && cat $OLD_VERSION_FILE || :`;
-NV=`cat $NEW_VERSION_FILE`;
-if [ "$$OV" != "$$NV" -o ! -f intel_version.h ]; then
- cp -f $NEW_VERSION_FILE $OLD_VERSION_FILE;
- echo "Replace"
- sed -e "s|\@INTEL_DRIVER_GIT_VERSION\@|$NV|" \
- $srcdir/intel_version.h.in > $srcdir/intel_version.h;
-fi
diff --git a/configure.ac b/configure.ac
deleted file mode 100644
index ed3ebdf..0000000
--- a/configure.ac
+++ /dev/null
@@ -1,233 +0,0 @@
-# intel-driver package version number
-m4_define([intel_driver_major_version], [1])
-m4_define([intel_driver_minor_version], [8])
-m4_define([intel_driver_micro_version], [0])
-m4_define([intel_driver_pre_version], [1])
-m4_define([intel_driver_version],
- [intel_driver_major_version.intel_driver_minor_version.intel_driver_micro_version])
-m4_if(intel_driver_pre_version, [0], [], [
-m4_append([intel_driver_version], intel_driver_pre_version, [.pre])
-])
-
-# libva minimum version requirement
-m4_define([va_api_version], [0.39.4])
-m4_define([libva_package_version], [1.7.3])
-
-# libdrm minimum version requirement
-m4_define([libdrm_version], [2.4.52])
-
-AC_PREREQ([2.57])
-AC_INIT([intel_driver], [intel_driver_version], [haihao.xiang@intel.com],
- [libva-intel-driver])
-AC_CONFIG_SRCDIR([Makefile.am])
-AM_INIT_AUTOMAKE([1.9 tar-ustar])
-
-AC_CONFIG_HEADERS([src/config.h])
-
-INTEL_DRIVER_MAJOR_VERSION=intel_driver_major_version
-INTEL_DRIVER_MINOR_VERSION=intel_driver_minor_version
-INTEL_DRIVER_MICRO_VERSION=intel_driver_micro_version
-AC_DEFINE([INTEL_DRIVER_MAJOR_VERSION], [intel_driver_major_version], [Major version of the driver])
-AC_DEFINE([INTEL_DRIVER_MINOR_VERSION], [intel_driver_minor_version], [Minor version of the driver])
-AC_DEFINE([INTEL_DRIVER_MICRO_VERSION], [intel_driver_micro_version], [Micro version of the driver])
-AC_DEFINE([INTEL_DRIVER_PRE_VERSION], [intel_driver_pre_version], [Preversion of the driver])
-
-INTEL_DRIVER_LT_LDFLAGS="-avoid-version"
-AC_SUBST(INTEL_DRIVER_LT_LDFLAGS)
-
-dnl Use pretty build output with automake >= 1.11
-m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])], [
- AM_DEFAULT_VERBOSITY=1
- AC_SUBST(AM_DEFAULT_VERBOSITY)
-])
-
-AC_ARG_ENABLE(drm,
- [AC_HELP_STRING([--enable-drm],
- [build with VA/DRM API support @<:@default=yes@:>@])],
- [], [enable_drm="yes"])
-
-AC_ARG_ENABLE(x11,
- [AC_HELP_STRING([--enable-x11],
- [build with VA/X11 API support @<:@default=yes@:>@])],
- [], [enable_x11="yes"])
-
-AC_ARG_ENABLE([wayland],
- [AC_HELP_STRING([--enable-wayland],
- [build with VA/Wayland API support @<:@default=yes@:>@])],
- [], [enable_wayland="yes"])
-
-AC_ARG_ENABLE([hybrid-codec],
- [AC_HELP_STRING([--enable-hybrid-codec],
- [build with hybrid codec support @<:@default=no@:>@])],
- [], [enable_hybrid_codec="no"])
-
-AC_ARG_ENABLE([tests],
- [AC_HELP_STRING([--enable-tests],
- [build tests @<:@default=no@:>@])],
- [], [enable_tests="no"])
-
-AC_DISABLE_STATIC
-AC_PROG_LIBTOOL
-AC_PROG_CC
-AM_PROG_CC_C_O
-AC_PROG_CXX
-AC_C_BIGENDIAN
-AC_HEADER_STDC
-AC_SYS_LARGEFILE
-AC_CHECK_LIB([m], [sin])
-AC_CHECK_FUNCS([log2f])
-AC_CHECK_PROGS([PYTHON2], [python2 python])
-
-LIBVA_PACKAGE_VERSION=libva_package_version
-AC_SUBST(LIBVA_PACKAGE_VERSION)
-
-dnl Check for recent enough DRM
-LIBDRM_VERSION=libdrm_version
-PKG_CHECK_MODULES([DRM], [libdrm >= $LIBDRM_VERSION])
-AC_SUBST(LIBDRM_VERSION)
-
-dnl Check for gen4asm
-PKG_CHECK_MODULES(GEN4ASM, [intel-gen4asm >= 1.9], [gen4asm=yes], [gen4asm=no])
-AC_PATH_PROG([GEN4ASM], [intel-gen4asm])
-AS_IF([test "x$GEN4ASM" = "x" ], [AM_CONDITIONAL(HAVE_GEN4ASM, false)],
- [AM_CONDITIONAL(HAVE_GEN4ASM, [test x$gen4asm = xyes])])
-
-dnl Check for git
-AC_ARG_VAR([GIT], [Path to git program, if any])
-AC_PATH_PROG([GIT], [git])
-AM_CONDITIONAL([HAVE_GIT], [test -n "$GIT"])
-
-dnl Check for VA-API
-PKG_CHECK_MODULES(LIBVA_DEPS, [libva >= va_api_version])
-
-dnl Check for VA/DRM API
-USE_DRM="$enable_drm"
-if test "$USE_DRM" = "yes"; then
- PKG_CHECK_MODULES(LIBVA_DRM_DEPS, [libva-drm],
- [AC_DEFINE([HAVE_VA_DRM], [1], [Defined to 1 if VA/DRM API is enabled])],
- [USE_DRM="no"])
-
- # Check for <drm_fourcc.h>
- if test "$USE_DRM" = "yes"; then
- saved_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS $DRM_CFLAGS"
- AC_CHECK_HEADERS([drm_fourcc.h], [:], [USE_DRM="no"])
- CPPFLAGS="$saved_CPPFLAGS"
- fi
-fi
-AM_CONDITIONAL(USE_DRM, test "$USE_DRM" = "yes")
-
-if test "$enable_hybrid_codec" = "yes"; then
- AC_DEFINE([HAVE_HYBRID_CODEC], [1], [Defined to 1 if hybrid codec is needed])
-fi
-
-AM_CONDITIONAL(ENABLE_TESTS, test "$enable_tests" = "yes")
-
-VA_VERSION=`$PKG_CONFIG --modversion libva`
-VA_MAJOR_VERSION=`echo "$VA_VERSION" | cut -d'.' -f1`
-VA_MINOR_VERSION=`echo "$VA_VERSION" | cut -d'.' -f2`
-VA_MICRO_VERSION=`echo "$VA_VERSION" | cut -d'.' -f3`
-VA_VERSION_STR="$VA_VERSION"
-
-va_full_version_int=`expr ${VA_MAJOR_VERSION:-0} "*" 1000000 + \
- ${VA_MINOR_VERSION:-0} "*" 10000 + \
- ${VA_MICRO_VERSION:-0} "*" 100 + \
- 0`
-VA_DRIVER_INIT_FUNC="__vaDriverInit_${VA_MAJOR_VERSION}_${VA_MINOR_VERSION}"
-AC_DEFINE_UNQUOTED([VA_DRIVER_INIT_FUNC], [$VA_DRIVER_INIT_FUNC],
- [Define driver entry-point])
-
-dnl Check for VA/DRM API
-USE_X11="$enable_x11"
-if test "$USE_X11" = "yes"; then
- PKG_CHECK_MODULES(LIBVA_X11_DEPS, [libva-x11],
- [AC_DEFINE([HAVE_VA_X11], [1], [Defined to 1 if VA/X11 API is enabled])],
- [USE_X11="no"])
-fi
-AM_CONDITIONAL(USE_X11, test "$USE_X11" = "yes")
-
-dnl Check for VA-API drivers path
-AC_ARG_VAR(LIBVA_DRIVERS_PATH, [drivers install path])
-if test -z "$LIBVA_DRIVERS_PATH"; then
- AC_MSG_CHECKING([for VA drivers path])
- LIBVA_DRIVERS_PATH=`$PKG_CONFIG libva --variable driverdir`
-fi
-if test -z "$LIBVA_DRIVERS_PATH"; then
- LIBVA_DRIVERS_PATH="${libdir}/xorg/modules/drivers"
-fi
-AC_MSG_RESULT([$LIBVA_DRIVERS_PATH])
-AC_SUBST(LIBVA_DRIVERS_PATH)
-
-# Check for EGL
-if test "$enable_wayland" = "yes"; then
- enable_egl="yes"
-fi
-
-USE_EGL="no"
-if test "$enable_egl" = "yes"; then
- PKG_CHECK_MODULES([EGL], [egl], [USE_EGL="yes"], [USE_EGL="no"])
- saved_CPPFLAGS="$CPPFLAGS"
- saved_LIBS="$LIBS"
- CPPFLAGS="$CPPFLAGS $EGL_CFLAGS"
- LIBS="$LIBS $EGL_LIBS"
- AC_CHECK_HEADERS([EGL/egl.h], [:], [USE_EGL="no"])
- AC_CHECK_LIB([EGL], [eglGetDisplay], [:], [USE_EGL="no"])
- CPPFLAGS="$saved_CPPFLAGS"
- LIBS="$saved_LIBS"
-fi
-AM_CONDITIONAL(USE_EGL, test "$USE_EGL" = "yes")
-
-# Check for Wayland
-USE_WAYLAND="no"
-if test "$enable_wayland" = "yes"; then
- PKG_CHECK_MODULES([LIBVA_WAYLAND_DEPS], [libva-wayland],
- [USE_WAYLAND="yes"], [:])
-
- if test "$USE_WAYLAND" = "yes"; then
-
- WAYLAND_PREFIX=`$PKG_CONFIG --variable=prefix wayland-client`
- AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner],,
- [${WAYLAND_PREFIX}/bin$PATH_SEPARATOR$PATH])
-
- AC_DEFINE([HAVE_VA_WAYLAND], [1],
- [Defined to 1 if VA/Wayland API is enabled])
- fi
-fi
-AM_CONDITIONAL(USE_WAYLAND, test "$USE_WAYLAND" = "yes")
-
-AC_OUTPUT([
- Makefile
- debian.upstream/Makefile
- src/Makefile
- src/shaders/Makefile
- src/shaders/h264/Makefile
- src/shaders/h264/ildb/Makefile
- src/shaders/h264/mc/Makefile
- src/shaders/mpeg2/Makefile
- src/shaders/mpeg2/vld/Makefile
- src/shaders/post_processing/Makefile
- src/shaders/post_processing/gen5_6/Makefile
- src/shaders/post_processing/gen7/Makefile
- src/shaders/post_processing/gen75/Makefile
- src/shaders/post_processing/gen8/Makefile
- src/shaders/post_processing/gen9/Makefile
- src/shaders/render/Makefile
- src/shaders/utils/Makefile
- src/shaders/vme/Makefile
- test/Makefile
-])
-
-dnl Print summary
-BACKENDS=""
-AS_IF([test "$USE_DRM" = "yes"], [BACKENDS="$BACKENDS drm"])
-AS_IF([test "$USE_X11" = "yes"], [BACKENDS="$BACKENDS x11"])
-AS_IF([test "$USE_WAYLAND" = "yes"], [BACKENDS="$BACKENDS wayland"])
-
-echo
-echo $PACKAGE configuration summary:
-echo
-echo VA-API version ................... : $VA_VERSION_STR
-echo VA-API drivers path .............. : $LIBVA_DRIVERS_PATH
-echo Windowing systems ................ : $BACKENDS
-echo Build tests ...................... : $enable_tests
-echo
diff --git a/debian.upstream/Makefile.am b/debian.upstream/Makefile.am
deleted file mode 100644
index 04a848f..0000000
--- a/debian.upstream/Makefile.am
+++ /dev/null
@@ -1,30 +0,0 @@
-DEBIANFILES = \
- changelog.in \
- compat \
- control.in \
- copyright \
- libva-intel-driver.install \
- rules \
- $(NULL)
-
-DEBIANGENFILES = \
- changelog \
- control \
- $(NULL)
-
-EXTRA_DIST = $(DEBIANFILES)
-
-dist_noinst_DATA = $(DEBIANGENFILES)
-
-DISTCLEANFILES = $(DEBIANGENFILES)
-
-# Extra clean files so that maintainer-clean removes *everything*
-MAINTAINERCLEANFILES = Makefile.in
-
-$(DEBIANGENFILES): %: %.in Makefile
- -$(AM_V_GEN)sed \
- -e 's|\@DATE\@|'"`LC_ALL=C date +'%a, %d %b %Y %X %z'`"'|' \
- -e 's|\@LIBDRM_VERSION\@|$(LIBDRM_VERSION)|' \
- -e 's|\@LIBVA_PACKAGE_VERSION\@|$(LIBVA_PACKAGE_VERSION)|' \
- -e 's|\@PACKAGE_VERSION\@|$(PACKAGE_VERSION)|' \
- $< > $@
diff --git a/debian.upstream/changelog.in b/debian.upstream/changelog.in
deleted file mode 100644
index dff4a96..0000000
--- a/debian.upstream/changelog.in
+++ /dev/null
@@ -1,5 +0,0 @@
-libva-intel-driver (@PACKAGE_VERSION@-1) unstable; urgency=low
-
- * Autogenerated package, see NEWS file for ChangeLog.
-
- -- Gwenole Beauchesne <gwenole.beauchesne@intel.com> @DATE@
diff --git a/debian.upstream/compat b/debian.upstream/compat
deleted file mode 100644
index 7ed6ff8..0000000
--- a/debian.upstream/compat
+++ /dev/null
@@ -1 +0,0 @@
-5
diff --git a/debian.upstream/control.in b/debian.upstream/control.in
deleted file mode 100644
index 08b1029..0000000
--- a/debian.upstream/control.in
+++ /dev/null
@@ -1,28 +0,0 @@
-Source: libva-intel-driver
-Section: libs
-Priority: optional
-Maintainer: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
-Build-Depends: debhelper (>= 5),
- cdbs,
- libdrm-dev (>= @LIBDRM_VERSION@),
- libva-dev (>= @LIBVA_PACKAGE_VERSION@)
-Standards-Version: 3.7.2
-
-Package: libva-intel-driver
-Section: libs
-Architecture: any
-Depends: libva1 (>= @LIBVA_PACKAGE_VERSION@),
- ${shlibs:Depends}, ${misc:Depends}
-Description: VA driver for Intel G45 & HD Graphics family
- Video decode & encode driver for Intel G45 chipsets and Intel HD
- Graphics for Intel Core processor family.
-
-Package: libva-intel-driver-dbg
-Section: libdevel
-Architecture: any
-Depends: libva-intel-driver (= ${Source-Version})
-Description: VA driver for Intel G45 & HD Graphics family (debug symbols)
- Video decode & encode driver for Intel G45 chipsets and Intel HD
- Graphics for Intel Core processor family.
- .
- This package contains the debug files.
diff --git a/debian.upstream/copyright b/debian.upstream/copyright
deleted file mode 100644
index 8f3c4c3..0000000
--- a/debian.upstream/copyright
+++ /dev/null
@@ -1,25 +0,0 @@
-This package is maintained by:
-Gwenole Beauchesne <gwenole.beauchesne@intel.com>
-
-
-License:
-
- Permission is hereby granted, free of charge, to any person obtaining a
- copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sub license, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice (including the
- next paragraph) shall be included in all copies or substantial portions
- of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/debian.upstream/libva-intel-driver.install b/debian.upstream/libva-intel-driver.install
deleted file mode 100644
index daa01dc..0000000
--- a/debian.upstream/libva-intel-driver.install
+++ /dev/null
@@ -1 +0,0 @@
-debian/tmp/usr/lib/dri/*.so
diff --git a/debian.upstream/rules b/debian.upstream/rules
deleted file mode 100755
index 40b76be..0000000
--- a/debian.upstream/rules
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/make -f
-
-include /usr/share/cdbs/1/rules/debhelper.mk
-include /usr/share/cdbs/1/class/autotools.mk
-include /usr/share/cdbs/1/rules/utils.mk
-
-# Allow SMP build
-ifeq ($(DEBIAN_BUILD_NCPUS),)
- DEBIAN_BUILD_NCPUS = $(shell /usr/bin/getconf _NPROCESSORS_ONLN)
-endif
-ifneq ($(DEBIAN_BUILD_NCPUS),)
- EXTRA_MAKE_FLAGS += -j$(DEBIAN_BUILD_NCPUS)
-endif
-MAKE += $(EXTRA_MAKE_FLAGS)
diff --git a/src/Android.mk b/src/Android.mk
deleted file mode 100755
index ab06bb3..0000000
--- a/src/Android.mk
+++ /dev/null
@@ -1,105 +0,0 @@
-# Copyright (c) 2012 Intel Corporation. All Rights Reserved.
-#
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sub license, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice (including the
-# next paragraph) shall be included in all copies or substantial portions
-# of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-# IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
-# ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
- dso_utils.c \
- gen6_mfc.c \
- gen6_mfc_common.c \
- gen6_mfd.c \
- gen6_vme.c \
- gen7_vme.c \
- gen7_mfc.c \
- gen7_mfd.c \
- gen75_mfd.c \
- gen75_mfc.c \
- gen8_mfc.c \
- gen8_mfd.c \
- gen8_vme.c \
- gen9_vme.c \
- gen9_mfc.c \
- gen9_mfc_hevc.c \
- gen9_mfd.c \
- gen75_picture_process.c \
- gen75_vme.c \
- gen75_vpp_gpe.c \
- gen75_vpp_vebox.c \
- gen9_post_processing.c \
- i965_avc_bsd.c \
- i965_avc_hw_scoreboard.c\
- i965_avc_ildb.c \
- i965_decoder_utils.c \
- i965_device_info.c \
- i965_drv_video.c \
- i965_encoder.c \
- i965_encoder_utils.c \
- i965_media.c \
- i965_media_h264.c \
- i965_media_mpeg2.c \
- i965_gpe_utils.c \
- i965_post_processing.c \
- gen8_post_processing.c \
- i965_render.c \
- i965_vpp_avs.c \
- gen8_render.c \
- gen9_render.c \
- intel_batchbuffer.c \
- intel_batchbuffer_dump.c\
- intel_driver.c \
- intel_memman.c \
- object_heap.c \
- intel_media_common.c \
- $(NULL)
-
-GEN := $(LOCAL_PATH)/intel_version.h
-$(GEN): SCRIPT := $(LOCAL_PATH)/../build/gen_version.sh
-$(GEN): PRIVATE_PATH := $(LOCAL_PATH)
-$(GEN): PRIVATE_CUSTOM_TOOL = sh $(SCRIPT) $(PRIVATE_PATH)/.. $(PRIVATE_PATH) > $@
-$(GEN): $(LOCAL_PATH)/%.h : $(LOCAL_PATH)/%.h.in $(SCRIPT)
- $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-LOCAL_CFLAGS := -DLINUX -DANDROID -g -Wall -Wno-unused -fvisibility=hidden
-
-LOCAL_C_INCLUDES := \
- $(TARGET_OUT_HEADERS)/libva \
- $(TARGET_OUT_HEADERS)/libdrm
-
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE := i965_drv_video
-
-LOCAL_SHARED_LIBRARIES := libdl libdrm libdrm_intel libcutils \
- libva libva-android libstdc++
-
-ifeq ($(strip $(DRIVER_LOG_ENABLE)),true)
-LOCAL_CFLAGS += -DDRIVER_LOG_ENABLE
-LOCAL_SHARED_LIBRARIES += liblog
-endif
-
-include $(BUILD_SHARED_LIBRARY)
-
-
diff --git a/src/Makefile.am b/src/Makefile.am
deleted file mode 100755
index 424812b..0000000
--- a/src/Makefile.am
+++ /dev/null
@@ -1,232 +0,0 @@
-# Copyright (c) 2007 Intel Corporation. All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sub license, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice (including the
-# next paragraph) shall be included in all copies or substantial portions
-# of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-# IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
-# ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-SUBDIRS = shaders
-DIST_SUBDIRS = $(SUBDIRS)
-EXTRA_DIST =
-BUILT_SOURCES =
-
-AM_CPPFLAGS = \
- -DPTHREADS \
- $(DRM_CFLAGS) \
- $(LIBVA_DEPS_CFLAGS) \
- -DVA_DRIVERS_PATH="\"$(LIBVA_DRIVERS_PATH)\"" \
- $(NULL)
-
-driver_cflags = \
- -Wall \
- -fvisibility=hidden \
- $(NULL)
-
-driver_ldflags = \
- -avoid-version \
- -no-undefined \
- -Wl,--no-undefined \
- $(NULL)
-
-driver_libs = \
- -lpthread -lm -ldl \
- $(DRM_LIBS) -ldrm_intel \
- $(NULL)
-
-source_c = \
- dso_utils.c \
- gen6_mfc.c \
- gen6_mfc_common.c \
- gen6_mfd.c \
- gen6_vme.c \
- gen7_vme.c \
- gen7_mfc.c \
- gen7_mfd.c \
- gen75_mfd.c \
- gen75_mfc.c \
- gen8_mfc.c \
- gen8_mfd.c \
- gen8_vme.c \
- gen9_vme.c \
- gen9_mfc.c \
- gen9_mfc_hevc.c \
- gen9_mfd.c \
- gen9_vdenc.c \
- gen75_picture_process.c \
- gen75_vme.c \
- gen75_vpp_gpe.c \
- gen75_vpp_vebox.c \
- gen9_post_processing.c \
- i965_avc_bsd.c \
- i965_avc_hw_scoreboard.c\
- i965_avc_ildb.c \
- i965_decoder_utils.c \
- i965_device_info.c \
- i965_drv_video.c \
- i965_encoder.c \
- i965_encoder_utils.c \
- i965_media.c \
- i965_media_h264.c \
- i965_media_mpeg2.c \
- i965_gpe_utils.c \
- i965_post_processing.c \
- i965_yuv_coefs.c \
- gen8_post_processing.c \
- i965_render.c \
- i965_vpp_avs.c \
- gen8_render.c \
- gen9_render.c \
- intel_batchbuffer.c \
- intel_batchbuffer_dump.c\
- intel_driver.c \
- intel_memman.c \
- object_heap.c \
- intel_media_common.c \
- vp9_probs.c \
- gen9_vp9_encoder_kernels.c \
- gen9_vp9_const_def.c \
- gen9_vp9_encoder.c \
- intel_common_vpp_internal.c \
- $(NULL)
-
-source_h = \
- dso_utils.h \
- gen6_mfc.h \
- gen6_mfd.h \
- gen6_vme.h \
- gen7_mfd.h \
- gen75_picture_process.h \
- gen75_vpp_gpe.h \
- gen75_vpp_vebox.h \
- gen8_post_processing.h \
- gen9_mfd.h \
- gen9_mfc.h \
- gen9_vdenc.h \
- i965_avc_bsd.h \
- i965_avc_hw_scoreboard.h\
- i965_avc_ildb.h \
- i965_decoder.h \
- i965_decoder_utils.h \
- i965_defines.h \
- i965_drv_video.h \
- i965_encoder.h \
- i965_encoder_utils.h \
- i965_media.h \
- i965_media_h264.h \
- i965_media_mpeg2.h \
- i965_mutext.h \
- i965_gpe_utils.h \
- i965_pciids.h \
- i965_post_processing.h \
- i965_render.h \
- i965_structs.h \
- i965_vpp_avs.h \
- i965_yuv_coefs.h \
- intel_batchbuffer.h \
- intel_batchbuffer_dump.h\
- intel_compiler.h \
- intel_driver.h \
- intel_media.h \
- intel_memman.h \
- intel_version.h \
- object_heap.h \
- vp8_probs.h \
- vp9_probs.h \
- sysdeps.h \
- va_backend_compat.h \
- i965_fourcc.h \
- gen9_vp9_encoder.h \
- gen9_vp9_encapi.h \
- gen9_vp9_const_def.h \
- gen9_vp9_encoder_kernels.h \
- intel_gen_vppapi.h \
- intel_common_vpp_internal.h \
- $(NULL)
-
-# convenience library that can be linked by driver and tests
-noinst_LTLIBRARIES = libi965_drv_video.la
-libi965_drv_video_la_CFLAGS = $(driver_cflags)
-libi965_drv_video_la_LDFLAGS = $(driver_ldflags)
-libi965_drv_video_la_LIBADD = $(driver_libs)
-libi965_drv_video_la_SOURCES = $(source_c)
-
-# driver module
-i965_drv_video_la_LTLIBRARIES = i965_drv_video.la
-i965_drv_video_ladir = $(LIBVA_DRIVERS_PATH)
-i965_drv_video_la_CFLAGS = $(driver_cflags)
-i965_drv_video_la_LDFLAGS = -module $(driver_ldflags)
-i965_drv_video_la_LIBADD = libi965_drv_video.la $(driver_libs)
-i965_drv_video_la_SOURCES =
-
-noinst_HEADERS = $(source_h)
-
-if USE_X11
-source_c += i965_output_dri.c
-source_h += i965_output_dri.h
-endif
-
-if USE_WAYLAND
-source_c += i965_output_wayland.c
-source_h += i965_output_wayland.h
-source_h += $(protocol_source_h)
-driver_cflags += $(WAYLAND_CFLAGS)
-endif
-
-# git version
-VERSION_FILE = .VERSION
-OLD_VERSION_FILE = $(VERSION_FILE).old
-NEW_VERSION_FILE = $(VERSION_FILE).new
-PKG_VERSION_FILE = $(VERSION_FILE).pkg
-
-intel_version.h: gen-version
- $(AM_V_GEN) \
- OV=`[ -f $(OLD_VERSION_FILE) ] && cat $(OLD_VERSION_FILE) || :`; \
- NV=`cat $(NEW_VERSION_FILE)`; \
- if [ "$$OV" != "$$NV" -o ! -f intel_version.h ]; then \
- cp -f $(NEW_VERSION_FILE) $(OLD_VERSION_FILE); \
- $(SED) -e "s|\@INTEL_DRIVER_GIT_VERSION\@|$${NV}|" \
- $(srcdir)/intel_version.h.in > intel_version.h; \
- fi
-
-gen-version:
- @echo $(VERSION) > $(NEW_VERSION_FILE)
-if HAVE_GIT
- @[ -d $(top_srcdir)/.git ] && \
- (cd $(top_srcdir) && $(GIT) describe --tags) > $(NEW_VERSION_FILE) || :
-endif
- @[ -f $(srcdir)/$(PKG_VERSION_FILE) ] && \
- cp -f $(srcdir)/$(PKG_VERSION_FILE) $(NEW_VERSION_FILE) || :
-
-$(PKG_VERSION_FILE): $(NEW_VERSION_FILE)
- @cp -f $< $@
-
-BUILT_SOURCES += intel_version.h
-EXTRA_DIST += Android.mk intel_version.h.in $(PKG_VERSION_FILE)
-
-# Wayland protocol
-protocol_source_h = wayland-drm-client-protocol.h
-i965_output_wayland.c: $(protocol_source_h)
-%-client-protocol.h : %.xml
- $(AM_V_GEN)$(WAYLAND_SCANNER) client-header < $< > $@
-
-EXTRA_DIST += \
- wayland-drm.xml \
- $(NULL)
-
-# Extra clean files so that maintainer-clean removes *everything*
-MAINTAINERCLEANFILES = Makefile.in config.h.in
diff --git a/src/config_android.h b/src/config_android.h
deleted file mode 100644
index f3ecb92..0000000
--- a/src/config_android.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/* src/config.h. Generated from config.h.in by configure. */
-/* src/config.h.in. Generated from configure.ac by autoheader. */
-/* NOTE: THIS VERSION IS FOR ANDROID ONLY and manually adjusted */
-
-/* Define if building universal (internal helper macro) */
-/* #undef AC_APPLE_UNIVERSAL_BUILD */
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#define HAVE_DLFCN_H 1
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Defined to 1 if VA-API exposes JPEG decoding */
-#define HAVE_JPEG_DECODING 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Major version of the driver */
-#define INTEL_DRIVER_MAJOR_VERSION 1
-
-/* Micro version of the driver */
-#define INTEL_DRIVER_MICRO_VERSION 16
-
-/* Minor version of the driver */
-#define INTEL_DRIVER_MINOR_VERSION 0
-
-/* Preversion of the driver */
-#define INTEL_DRIVER_PRE_VERSION 1
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
- */
-#define LT_OBJDIR ".libs/"
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-/* #undef NO_MINUS_C_MINUS_O */
-
-/* Name of package */
-#define PACKAGE "libva-driver-intel"
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "haihao.xiang@intel.com"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "intel_driver"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "intel_driver 1.0.16.pre1"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "libva-driver-intel"
-
-/* Define to the home page for this package. */
-#define PACKAGE_URL ""
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "1.0.16.pre1"
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define driver entry-point */
-#define VA_DRIVER_INIT_FUNC __vaDriverInit_0_33
-
-/* Version number of package */
-#define VERSION "1.0.16.pre1"
-
-/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
- significant byte first (like Motorola and SPARC, unlike Intel). */
-#if defined AC_APPLE_UNIVERSAL_BUILD
-# if defined __BIG_ENDIAN__
-# define WORDS_BIGENDIAN 1
-# endif
-#else
-# ifndef WORDS_BIGENDIAN
-/* # undef WORDS_BIGENDIAN */
-# endif
-#endif
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-/* #undef _FILE_OFFSET_BITS */
-
-/* Define for large files, on AIX-style hosts. */
-/* #undef _LARGE_FILES */
-#ifdef ANDROID
-#define Drawable unsigned int
-#endif
diff --git a/src/dso_utils.c b/src/dso_utils.c
deleted file mode 100644
index 8fdea11..0000000
--- a/src/dso_utils.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2012 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#define _GNU_SOURCE 1
-#include <stdio.h>
-#include <stdlib.h>
-#include <dlfcn.h>
-#include "dso_utils.h"
-
-struct dso_handle {
- void *handle;
-};
-
-/* Opens the named shared library */
-struct dso_handle *
-dso_open(const char *path)
-{
- struct dso_handle *h;
-
- h = calloc(1, sizeof(*h));
- if (!h)
- return NULL;
-
- if (path) {
- h->handle = dlopen(path, RTLD_LAZY|RTLD_LOCAL);
- if (!h->handle)
- goto error;
- }
- else
- h->handle = RTLD_DEFAULT;
- return h;
-
-error:
- dso_close(h);
- return NULL;
-}
-
-/* Closes and disposed any allocated data */
-void
-dso_close(struct dso_handle *h)
-{
- if (!h)
- return;
-
- if (h->handle) {
- if (h->handle != RTLD_DEFAULT)
- dlclose(h->handle);
- h->handle = NULL;
- }
- free(h);
-}
-
-/* Load symbol into the supplied location */
-static bool
-get_symbol(struct dso_handle *h, void *func_vptr, const char *name)
-{
- dso_generic_func func, * const func_ptr = func_vptr;
- const char *error;
-
- dlerror();
- func = (dso_generic_func)dlsym(h->handle, name);
- error = dlerror();
- if (error) {
- fprintf(stderr, "error: failed to resolve %s(): %s\n", name, error);
- return false;
- }
- *func_ptr = func;
- return true;
-}
-
-/* Loads symbols into the supplied vtable */
-bool
-dso_get_symbols(
- struct dso_handle *h,
- void *vtable,
- unsigned int vtable_length,
- const struct dso_symbol *symbols
-)
-{
- const struct dso_symbol *s;
-
- for (s = symbols; s->name != NULL; s++) {
- if (s->offset + sizeof(dso_generic_func) > vtable_length)
- return false;
- if (!get_symbol(h, ((char *)vtable) + s->offset, s->name))
- return false;
- }
- return true;
-}
diff --git a/src/dso_utils.h b/src/dso_utils.h
deleted file mode 100644
index 9b8eba7..0000000
--- a/src/dso_utils.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2012 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef DSO_UTILS_H
-#define DSO_UTILS_H
-
-#include <stdbool.h>
-
-/** Generic pointer to function. */
-typedef void (*dso_generic_func)(void);
-
-/** Library handle (opaque). */
-struct dso_handle;
-
-/** Symbol lookup table. */
-struct dso_symbol {
- /** Symbol name */
- const char *name;
- /** Offset into the supplied vtable where symbol is to be loaded. */
- unsigned int offset;
-};
-
-/**
- * Opens the named shared library.
- *
- * @param[in] path the library name, or NULL to lookup into loaded libraries
- * @return the newly allocated library handle
- */
-struct dso_handle *
-dso_open(const char *path);
-
-/** Closes and disposed any allocated data. */
-void
-dso_close(struct dso_handle *h);
-
-/**
- * Loads symbols into the supplied vtable.
- *
- * @param[in] handle the DSO handle
- * @param[in] vtable the function table to fill in
- * @param[in] vtable_length the size (in bytes) of the function table
- * @param[in] symbols the NULL terminated array of symbols to lookup
- * @return true on success, false otherwise
- **/
-bool
-dso_get_symbols(
- struct dso_handle *h,
- void *vtable,
- unsigned int vtable_length,
- const struct dso_symbol *symbols
-);
-
-#endif /* DSO_UTILS_H */
diff --git a/src/gen6_mfc.c b/src/gen6_mfc.c
deleted file mode 100644
index 1765530..0000000
--- a/src/gen6_mfc.c
+++ /dev/null
@@ -1,1514 +0,0 @@
-/*
- * Copyright © 2010-2011 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Zhou Chang <chang.zhou@intel.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <math.h>
-
-#include "intel_batchbuffer.h"
-#include "i965_defines.h"
-#include "i965_structs.h"
-#include "i965_drv_video.h"
-#include "i965_encoder.h"
-#include "i965_encoder_utils.h"
-#include "gen6_mfc.h"
-#include "gen6_vme.h"
-#include "intel_media.h"
-
-#define SURFACE_STATE_PADDED_SIZE MAX(SURFACE_STATE_PADDED_SIZE_GEN6, SURFACE_STATE_PADDED_SIZE_GEN7)
-#define SURFACE_STATE_OFFSET(index) (SURFACE_STATE_PADDED_SIZE * index)
-#define BINDING_TABLE_OFFSET(index) (SURFACE_STATE_OFFSET(MAX_MEDIA_SURFACES_GEN6) + sizeof(unsigned int) * index)
-
-static const uint32_t gen6_mfc_batchbuffer_avc_intra[][4] = {
-#include "shaders/utils/mfc_batchbuffer_avc_intra.g6b"
-};
-
-static const uint32_t gen6_mfc_batchbuffer_avc_inter[][4] = {
-#include "shaders/utils/mfc_batchbuffer_avc_inter.g6b"
-};
-
-static struct i965_kernel gen6_mfc_kernels[] = {
- {
- "MFC AVC INTRA BATCHBUFFER ",
- MFC_BATCHBUFFER_AVC_INTRA,
- gen6_mfc_batchbuffer_avc_intra,
- sizeof(gen6_mfc_batchbuffer_avc_intra),
- NULL
- },
-
- {
- "MFC AVC INTER BATCHBUFFER ",
- MFC_BATCHBUFFER_AVC_INTER,
- gen6_mfc_batchbuffer_avc_inter,
- sizeof(gen6_mfc_batchbuffer_avc_inter),
- NULL
- },
-};
-
-static void
-gen6_mfc_pipe_mode_select(VADriverContextP ctx,
- int standard_select,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- assert(standard_select == MFX_FORMAT_AVC);
-
- BEGIN_BCS_BATCH(batch, 4);
-
- OUT_BCS_BATCH(batch, MFX_PIPE_MODE_SELECT | (4 - 2));
- OUT_BCS_BATCH(batch,
- (1 << 10) | /* disable Stream-Out , advanced QP/bitrate control need enable it*/
- ((!!mfc_context->post_deblocking_output.bo) << 9) | /* Post Deblocking Output */
- ((!!mfc_context->pre_deblocking_output.bo) << 8) | /* Pre Deblocking Output */
- (0 << 7) | /* disable TLB prefectch */
- (0 << 5) | /* not in stitch mode */
- (1 << 4) | /* encoding mode */
- (2 << 0)); /* Standard Select: AVC */
- OUT_BCS_BATCH(batch,
- (0 << 20) | /* round flag in PB slice */
- (0 << 19) | /* round flag in Intra8x8 */
- (0 << 7) | /* expand NOA bus flag */
- (1 << 6) | /* must be 1 */
- (0 << 5) | /* disable clock gating for NOA */
- (0 << 4) | /* terminate if AVC motion and POC table error occurs */
- (0 << 3) | /* terminate if AVC mbdata error occurs */
- (0 << 2) | /* terminate if AVC CABAC/CAVLC decode error occurs */
- (0 << 1) | /* AVC long field motion vector */
- (0 << 0)); /* always calculate AVC ILDB boundary strength */
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen6_mfc_surface_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- BEGIN_BCS_BATCH(batch, 6);
-
- OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- ((mfc_context->surface_state.height - 1) << 19) |
- ((mfc_context->surface_state.width - 1) << 6));
- OUT_BCS_BATCH(batch,
- (MFX_SURFACE_PLANAR_420_8 << 28) | /* 420 planar YUV surface */
- (1 << 27) | /* must be 1 for interleave U/V, hardware requirement */
- (0 << 22) | /* surface object control state, FIXME??? */
- ((mfc_context->surface_state.w_pitch - 1) << 3) | /* pitch */
- (0 << 2) | /* must be 0 for interleave U/V */
- (1 << 1) | /* must be y-tiled */
- (I965_TILEWALK_YMAJOR << 0)); /* tile walk, TILEWALK_YMAJOR */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* must be 0 for interleave U/V */
- (mfc_context->surface_state.h_pitch)); /* y offset for U(cb) */
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-void
-gen6_mfc_pipe_buf_addr_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- int i;
-
- BEGIN_BCS_BATCH(batch, 24);
-
- OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (24 - 2));
-
- if (mfc_context->pre_deblocking_output.bo)
- OUT_BCS_RELOC(batch, mfc_context->pre_deblocking_output.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0); /* pre output addr */
-
- if (mfc_context->post_deblocking_output.bo)
- OUT_BCS_RELOC(batch, mfc_context->post_deblocking_output.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0); /* post output addr */
- else
- OUT_BCS_BATCH(batch, 0);
-
- OUT_BCS_RELOC(batch, mfc_context->uncompressed_picture_source.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0); /* uncompressed data */
- OUT_BCS_RELOC(batch, mfc_context->macroblock_status_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0); /* StreamOut data*/
- OUT_BCS_RELOC(batch, mfc_context->intra_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_RELOC(batch, mfc_context->deblocking_filter_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- /* 7..22 Reference pictures*/
- for (i = 0; i < ARRAY_ELEMS(mfc_context->reference_surfaces); i++) {
- if ( mfc_context->reference_surfaces[i].bo != NULL) {
- OUT_BCS_RELOC(batch, mfc_context->reference_surfaces[i].bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- }
- }
- OUT_BCS_RELOC(batch, mfc_context->macroblock_status_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0); /* Macroblock status buffer*/
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen6_mfc_ind_obj_base_addr_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- BEGIN_BCS_BATCH(batch, 11);
-
- OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (11 - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- /* MFX Indirect MV Object Base Address */
- OUT_BCS_RELOC(batch, vme_context->vme_output.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- /*MFC Indirect PAK-BSE Object Base Address for Encoder*/
- OUT_BCS_RELOC(batch,
- mfc_context->mfc_indirect_pak_bse_object.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_RELOC(batch,
- mfc_context->mfc_indirect_pak_bse_object.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- mfc_context->mfc_indirect_pak_bse_object.end_offset);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-void
-gen6_mfc_bsp_buf_base_addr_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- BEGIN_BCS_BATCH(batch, 4);
-
- OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (4 - 2));
- OUT_BCS_RELOC(batch, mfc_context->bsd_mpc_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen6_mfc_avc_img_state(VADriverContextP ctx,struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
- int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
-
- BEGIN_BCS_BATCH(batch, 13);
- OUT_BCS_BATCH(batch, MFX_AVC_IMG_STATE | (13 - 2));
- OUT_BCS_BATCH(batch,
- ((width_in_mbs * height_in_mbs) & 0xFFFF));
- OUT_BCS_BATCH(batch,
- (height_in_mbs << 16) |
- (width_in_mbs << 0));
- OUT_BCS_BATCH(batch,
- (0 << 24) | /*Second Chroma QP Offset*/
- (0 << 16) | /*Chroma QP Offset*/
- (0 << 14) | /*Max-bit conformance Intra flag*/
- (0 << 13) | /*Max Macroblock size conformance Inter flag*/
- (1 << 12) | /*Should always be written as "1" */
- (0 << 10) | /*QM Preset FLag */
- (0 << 8) | /*Image Structure*/
- (0 << 0) ); /*Current Decoed Image Frame Store ID, reserved in Encode mode*/
- OUT_BCS_BATCH(batch,
- (400 << 16) | /*Mininum Frame size*/
- (0 << 15) | /*Disable reading of Macroblock Status Buffer*/
- (0 << 14) | /*Load BitStream Pointer only once, 1 slic 1 frame*/
- (0 << 13) | /*CABAC 0 word insertion test enable*/
- (1 << 12) | /*MVUnpackedEnable,compliant to DXVA*/
- (1 << 10) | /*Chroma Format IDC, 4:2:0*/
- (pPicParameter->pic_fields.bits.entropy_coding_mode_flag << 7) | /*0:CAVLC encoding mode,1:CABAC*/
- (0 << 6) | /*Only valid for VLD decoding mode*/
- (0 << 5) | /*Constrained Intra Predition Flag, from PPS*/
- (pSequenceParameter->seq_fields.bits.direct_8x8_inference_flag << 4) | /*Direct 8x8 inference flag*/
- (pPicParameter->pic_fields.bits.transform_8x8_mode_flag << 3) | /*8x8 or 4x4 IDCT Transform Mode Flag*/
- (1 << 2) | /*Frame MB only flag*/
- (0 << 1) | /*MBAFF mode is in active*/
- (0 << 0) ); /*Field picture flag*/
- OUT_BCS_BATCH(batch,
- (1<<16) | /*Frame Size Rate Control Flag*/
- (1<<12) |
- (1<<9) | /*MB level Rate Control Enabling Flag*/
- (1 << 3) | /*FrameBitRateMinReportMask*/
- (1 << 2) | /*FrameBitRateMaxReportMask*/
- (1 << 1) | /*InterMBMaxSizeReportMask*/
- (1 << 0) ); /*IntraMBMaxSizeReportMask*/
- OUT_BCS_BATCH(batch, /*Inter and Intra Conformance Max size limit*/
- (0x0600 << 16) | /*InterMbMaxSz 192 Byte*/
- (0x0800) ); /*IntraMbMaxSz 256 Byte*/
- OUT_BCS_BATCH(batch, 0x00000000); /*Reserved : MBZReserved*/
- OUT_BCS_BATCH(batch, 0x01020304); /*Slice QP Delta for bitrate control*/
- OUT_BCS_BATCH(batch, 0xFEFDFCFB);
- OUT_BCS_BATCH(batch, 0x80601004); /*MAX = 128KB, MIN = 64KB*/
- OUT_BCS_BATCH(batch, 0x00800001);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen6_mfc_avc_directmode_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- int i;
-
- BEGIN_BCS_BATCH(batch, 69);
-
- OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (69 - 2));
-
- /* Reference frames and Current frames */
- for(i = 0; i < NUM_MFC_DMV_BUFFERS; i++) {
- if ( mfc_context->direct_mv_buffers[i].bo != NULL) {
- OUT_BCS_RELOC(batch, mfc_context->direct_mv_buffers[i].bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- /* POL list */
- for(i = 0; i < 32; i++) {
- OUT_BCS_BATCH(batch, i/2);
- }
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen6_mfc_avc_slice_state(VADriverContextP ctx,
- VAEncPictureParameterBufferH264 *pic_param,
- VAEncSliceParameterBufferH264 *slice_param,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int rate_control_enable,
- int qp,
- struct intel_batchbuffer *batch)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
- int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
- int beginmb = slice_param->macroblock_address;
- int endmb = beginmb + slice_param->num_macroblocks;
- int beginx = beginmb % width_in_mbs;
- int beginy = beginmb / width_in_mbs;
- int nextx = endmb % width_in_mbs;
- int nexty = endmb / width_in_mbs;
- int slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
- int last_slice = (endmb == (width_in_mbs * height_in_mbs));
- int maxQpN, maxQpP;
- unsigned char correct[6], grow, shrink;
- int i;
- int weighted_pred_idc = 0;
- unsigned int luma_log2_weight_denom = slice_param->luma_log2_weight_denom;
- unsigned int chroma_log2_weight_denom = slice_param->chroma_log2_weight_denom;
- int num_ref_l0 = 0, num_ref_l1 = 0;
-
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- if (slice_type == SLICE_TYPE_I) {
- luma_log2_weight_denom = 0;
- chroma_log2_weight_denom = 0;
- } else if (slice_type == SLICE_TYPE_P) {
- weighted_pred_idc = pic_param->pic_fields.bits.weighted_pred_flag;
- num_ref_l0 = pic_param->num_ref_idx_l0_active_minus1 + 1;
-
- if (slice_param->num_ref_idx_active_override_flag)
- num_ref_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
- } else if (slice_type == SLICE_TYPE_B) {
- weighted_pred_idc = pic_param->pic_fields.bits.weighted_bipred_idc;
- num_ref_l0 = pic_param->num_ref_idx_l0_active_minus1 + 1;
- num_ref_l1 = pic_param->num_ref_idx_l1_active_minus1 + 1;
-
- if (slice_param->num_ref_idx_active_override_flag) {
- num_ref_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
- num_ref_l1 = slice_param->num_ref_idx_l1_active_minus1 + 1;
- }
-
- if (weighted_pred_idc == 2) {
- /* 8.4.3 - Derivation process for prediction weights (8-279) */
- luma_log2_weight_denom = 5;
- chroma_log2_weight_denom = 5;
- }
- }
-
- maxQpN = mfc_context->bit_rate_control_context[slice_type].MaxQpNegModifier;
- maxQpP = mfc_context->bit_rate_control_context[slice_type].MaxQpPosModifier;
-
- for (i = 0; i < 6; i++)
- correct[i] = mfc_context->bit_rate_control_context[slice_type].Correct[i];
-
- grow = mfc_context->bit_rate_control_context[slice_type].GrowInit +
- (mfc_context->bit_rate_control_context[slice_type].GrowResistance << 4);
- shrink = mfc_context->bit_rate_control_context[slice_type].ShrinkInit +
- (mfc_context->bit_rate_control_context[slice_type].ShrinkResistance << 4);
-
- BEGIN_BCS_BATCH(batch, 11);;
-
- OUT_BCS_BATCH(batch, MFX_AVC_SLICE_STATE | (11 - 2) );
- OUT_BCS_BATCH(batch, slice_type); /*Slice Type: I:P:B Slice*/
-
- OUT_BCS_BATCH(batch,
- (num_ref_l0 << 16) |
- (num_ref_l1 << 24) |
- (chroma_log2_weight_denom << 8) |
- (luma_log2_weight_denom << 0));
-
- OUT_BCS_BATCH(batch,
- (weighted_pred_idc << 30) |
- (slice_param->direct_spatial_mv_pred_flag<<29) | /*Direct Prediction Type*/
- (slice_param->disable_deblocking_filter_idc << 27) |
- (slice_param->cabac_init_idc << 24) |
- (qp<<16) | /*Slice Quantization Parameter*/
- ((slice_param->slice_beta_offset_div2 & 0xf) << 8) |
- ((slice_param->slice_alpha_c0_offset_div2 & 0xf) << 0));
- OUT_BCS_BATCH(batch,
- (beginy << 24) | /*First MB X&Y , the begin postion of current slice*/
- (beginx << 16) |
- slice_param->macroblock_address );
- OUT_BCS_BATCH(batch, (nexty << 16) | nextx); /*Next slice first MB X&Y*/
- OUT_BCS_BATCH(batch,
- (0/*rate_control_enable*/ << 31) | /*in CBR mode RateControlCounterEnable = enable*/
- (1 << 30) | /*ResetRateControlCounter*/
- (0 << 28) | /*RC Triggle Mode = Always Rate Control*/
- (4 << 24) | /*RC Stable Tolerance, middle level*/
- (0/*rate_control_enable*/ << 23) | /*RC Panic Enable*/
- (0 << 22) | /*QP mode, don't modfiy CBP*/
- (0 << 21) | /*MB Type Direct Conversion Enabled*/
- (0 << 20) | /*MB Type Skip Conversion Enabled*/
- (last_slice << 19) | /*IsLastSlice*/
- (0 << 18) | /*BitstreamOutputFlag Compressed BitStream Output Disable Flag 0:enable 1:disable*/
- (1 << 17) | /*HeaderPresentFlag*/
- (1 << 16) | /*SliceData PresentFlag*/
- (1 << 15) | /*TailPresentFlag*/
- (1 << 13) | /*RBSP NAL TYPE*/
- (0 << 12) ); /*CabacZeroWordInsertionEnable*/
- OUT_BCS_BATCH(batch, mfc_context->mfc_indirect_pak_bse_object.offset);
- OUT_BCS_BATCH(batch,
- (maxQpN << 24) | /*Target QP - 24 is lowest QP*/
- (maxQpP << 16) | /*Target QP + 20 is highest QP*/
- (shrink << 8) |
- (grow << 0));
- OUT_BCS_BATCH(batch,
- (correct[5] << 20) |
- (correct[4] << 16) |
- (correct[3] << 12) |
- (correct[2] << 8) |
- (correct[1] << 4) |
- (correct[0] << 0));
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void gen6_mfc_avc_qm_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- int i;
-
- BEGIN_BCS_BATCH(batch, 58);
-
- OUT_BCS_BATCH(batch, MFX_AVC_QM_STATE | 56);
- OUT_BCS_BATCH(batch, 0xFF ) ;
- for( i = 0; i < 56; i++) {
- OUT_BCS_BATCH(batch, 0x10101010);
- }
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void gen6_mfc_avc_fqm_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- int i;
-
- BEGIN_BCS_BATCH(batch, 113);
- OUT_BCS_BATCH(batch, MFC_AVC_FQM_STATE | (113 - 2));
-
- for(i = 0; i < 112;i++) {
- OUT_BCS_BATCH(batch, 0x10001000);
- }
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen6_mfc_avc_insert_object(VADriverContextP ctx, struct intel_encoder_context *encoder_context,
- unsigned int *insert_data, int lenght_in_dws, int data_bits_in_last_dw,
- int skip_emul_byte_count, int is_last_header, int is_end_of_slice, int emulation_flag,
- struct intel_batchbuffer *batch)
-{
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, lenght_in_dws + 2);
-
- OUT_BCS_BATCH(batch, MFC_AVC_INSERT_OBJECT | (lenght_in_dws + 2 - 2));
-
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* always start at offset 0 */
- (data_bits_in_last_dw << 8) |
- (skip_emul_byte_count << 4) |
- (!!emulation_flag << 3) |
- ((!!is_last_header) << 2) |
- ((!!is_end_of_slice) << 1) |
- (0 << 0)); /* FIXME: ??? */
-
- intel_batchbuffer_data(batch, insert_data, lenght_in_dws * 4);
- ADVANCE_BCS_BATCH(batch);
-}
-
-void
-gen6_mfc_init(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- dri_bo *bo;
- int i;
- int width_in_mbs = 0;
- int height_in_mbs = 0;
- int slice_batchbuffer_size;
-
- if (encoder_context->codec == CODEC_H264) {
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- height_in_mbs = pSequenceParameter->picture_height_in_mbs;
- } else {
- VAEncSequenceParameterBufferMPEG2 *pSequenceParameter = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
-
- assert(encoder_context->codec == CODEC_MPEG2);
-
- width_in_mbs = ALIGN(pSequenceParameter->picture_width, 16) / 16;
- height_in_mbs = ALIGN(pSequenceParameter->picture_height, 16) / 16;
- }
-
- slice_batchbuffer_size = 64 * width_in_mbs * height_in_mbs + 4096 +
- (SLICE_HEADER + SLICE_TAIL) * encode_state->num_slice_params_ext;
-
- /*Encode common setup for MFC*/
- dri_bo_unreference(mfc_context->post_deblocking_output.bo);
- mfc_context->post_deblocking_output.bo = NULL;
-
- dri_bo_unreference(mfc_context->pre_deblocking_output.bo);
- mfc_context->pre_deblocking_output.bo = NULL;
-
- dri_bo_unreference(mfc_context->uncompressed_picture_source.bo);
- mfc_context->uncompressed_picture_source.bo = NULL;
-
- dri_bo_unreference(mfc_context->mfc_indirect_pak_bse_object.bo);
- mfc_context->mfc_indirect_pak_bse_object.bo = NULL;
-
- for (i = 0; i < NUM_MFC_DMV_BUFFERS; i++){
- if (mfc_context->direct_mv_buffers[i].bo != NULL)
- dri_bo_unreference(mfc_context->direct_mv_buffers[i].bo);
- mfc_context->direct_mv_buffers[i].bo = NULL;
- }
-
- for (i = 0; i < MAX_MFC_REFERENCE_SURFACES; i++){
- if (mfc_context->reference_surfaces[i].bo != NULL)
- dri_bo_unreference(mfc_context->reference_surfaces[i].bo);
- mfc_context->reference_surfaces[i].bo = NULL;
- }
-
- dri_bo_unreference(mfc_context->intra_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- width_in_mbs * 64,
- 64);
- assert(bo);
- mfc_context->intra_row_store_scratch_buffer.bo = bo;
-
- dri_bo_unreference(mfc_context->macroblock_status_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- width_in_mbs * height_in_mbs * 16,
- 64);
- assert(bo);
- mfc_context->macroblock_status_buffer.bo = bo;
-
- dri_bo_unreference(mfc_context->deblocking_filter_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- 4 * width_in_mbs * 64, /* 4 * width_in_mbs * 64 */
- 64);
- assert(bo);
- mfc_context->deblocking_filter_row_store_scratch_buffer.bo = bo;
-
- dri_bo_unreference(mfc_context->bsd_mpc_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- 128 * width_in_mbs, /* 2 * widht_in_mbs * 64 */
- 0x1000);
- assert(bo);
- mfc_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
-
- dri_bo_unreference(mfc_context->mfc_batchbuffer_surface.bo);
- mfc_context->mfc_batchbuffer_surface.bo = NULL;
-
- dri_bo_unreference(mfc_context->aux_batchbuffer_surface.bo);
- mfc_context->aux_batchbuffer_surface.bo = NULL;
-
- if (mfc_context->aux_batchbuffer)
- intel_batchbuffer_free(mfc_context->aux_batchbuffer);
-
- mfc_context->aux_batchbuffer = intel_batchbuffer_new(&i965->intel, I915_EXEC_BSD,
- slice_batchbuffer_size);
- mfc_context->aux_batchbuffer_surface.bo = mfc_context->aux_batchbuffer->buffer;
- dri_bo_reference(mfc_context->aux_batchbuffer_surface.bo);
- mfc_context->aux_batchbuffer_surface.pitch = 16;
- mfc_context->aux_batchbuffer_surface.num_blocks = mfc_context->aux_batchbuffer->size / 16;
- mfc_context->aux_batchbuffer_surface.size_block = 16;
-
- i965_gpe_context_init(ctx, &mfc_context->gpe_context);
-}
-
-static void gen6_mfc_avc_pipeline_picture_programing( VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- mfc_context->pipe_mode_select(ctx, MFX_FORMAT_AVC, encoder_context);
- mfc_context->set_surface_state(ctx, encoder_context);
- mfc_context->ind_obj_base_addr_state(ctx, encoder_context);
- gen6_mfc_pipe_buf_addr_state(ctx, encoder_context);
- gen6_mfc_bsp_buf_base_addr_state(ctx, encoder_context);
- mfc_context->avc_img_state(ctx, encode_state, encoder_context);
- mfc_context->avc_qm_state(ctx, encode_state, encoder_context);
- mfc_context->avc_fqm_state(ctx, encode_state, encoder_context);
- gen6_mfc_avc_directmode_state(ctx, encoder_context);
- intel_mfc_avc_ref_idx_state(ctx, encode_state, encoder_context);
-}
-
-
-VAStatus
-gen6_mfc_run(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- intel_batchbuffer_flush(batch); //run the pipeline
-
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus
-gen6_mfc_stop(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int *encoded_bits_size)
-{
- VAStatus vaStatus = VA_STATUS_ERROR_UNKNOWN;
- VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VACodedBufferSegment *coded_buffer_segment;
-
- vaStatus = i965_MapBuffer(ctx, pPicParameter->coded_buf, (void **)&coded_buffer_segment);
- assert(vaStatus == VA_STATUS_SUCCESS);
- *encoded_bits_size = coded_buffer_segment->size * 8;
- i965_UnmapBuffer(ctx, pPicParameter->coded_buf);
-
- return VA_STATUS_SUCCESS;
-}
-
-
-static int
-gen6_mfc_avc_pak_object_intra(VADriverContextP ctx, int x, int y, int end_mb, int qp,unsigned int *msg,
- struct intel_encoder_context *encoder_context,
- unsigned char target_mb_size, unsigned char max_mb_size,
- struct intel_batchbuffer *batch)
-{
- int len_in_dwords = 11;
-
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, len_in_dwords);
-
- OUT_BCS_BATCH(batch, MFC_AVC_PAK_OBJECT | (len_in_dwords - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- (0 << 24) | /* PackedMvNum, Debug*/
- (0 << 20) | /* No motion vector */
- (1 << 19) | /* CbpDcY */
- (1 << 18) | /* CbpDcU */
- (1 << 17) | /* CbpDcV */
- (msg[0] & 0xFFFF) );
-
- OUT_BCS_BATCH(batch, (0xFFFF << 16) | (y << 8) | x); /* Code Block Pattern for Y*/
- OUT_BCS_BATCH(batch, 0x000F000F); /* Code Block Pattern */
- OUT_BCS_BATCH(batch, (0 << 27) | (end_mb << 26) | qp); /* Last MB */
-
- /*Stuff for Intra MB*/
- OUT_BCS_BATCH(batch, msg[1]); /* We using Intra16x16 no 4x4 predmode*/
- OUT_BCS_BATCH(batch, msg[2]);
- OUT_BCS_BATCH(batch, msg[3]&0xFC);
-
- /*MaxSizeInWord and TargetSzieInWord*/
- OUT_BCS_BATCH(batch, (max_mb_size << 24) |
- (target_mb_size << 16) );
-
- ADVANCE_BCS_BATCH(batch);
-
- return len_in_dwords;
-}
-
-static int
-gen6_mfc_avc_pak_object_inter(VADriverContextP ctx, int x, int y, int end_mb, int qp,
- unsigned int *msg, unsigned int offset,
- struct intel_encoder_context *encoder_context,
- unsigned char target_mb_size,unsigned char max_mb_size, int slice_type,
- struct intel_batchbuffer *batch)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- int len_in_dwords = 11;
-
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, len_in_dwords);
-
- OUT_BCS_BATCH(batch, MFC_AVC_PAK_OBJECT | (len_in_dwords - 2));
-
- OUT_BCS_BATCH(batch, msg[2]); /* 32 MV*/
- OUT_BCS_BATCH(batch, offset);
-
- OUT_BCS_BATCH(batch, msg[0]);
-
- OUT_BCS_BATCH(batch, (0xFFFF<<16) | (y << 8) | x); /* Code Block Pattern for Y*/
- OUT_BCS_BATCH(batch, 0x000F000F); /* Code Block Pattern */
-#if 0
- if ( slice_type == SLICE_TYPE_B) {
- OUT_BCS_BATCH(batch, (0xF<<28) | (end_mb << 26) | qp); /* Last MB */
- } else {
- OUT_BCS_BATCH(batch, (end_mb << 26) | qp); /* Last MB */
- }
-#else
- OUT_BCS_BATCH(batch, (end_mb << 26) | qp); /* Last MB */
-#endif
-
-
- /*Stuff for Inter MB*/
- OUT_BCS_BATCH(batch, msg[1]);
- OUT_BCS_BATCH(batch, vme_context->ref_index_in_mb[0]);
- OUT_BCS_BATCH(batch, vme_context->ref_index_in_mb[1]);
-
- /*MaxSizeInWord and TargetSzieInWord*/
- OUT_BCS_BATCH(batch, (max_mb_size << 24) |
- (target_mb_size << 16) );
-
- ADVANCE_BCS_BATCH(batch);
-
- return len_in_dwords;
-}
-
-static void
-gen6_mfc_avc_pipeline_slice_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int slice_index,
- struct intel_batchbuffer *slice_batch)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[slice_index]->buffer;
- unsigned int *msg = NULL, offset = 0;
- int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
- int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
- int last_slice = (pSliceParameter->macroblock_address + pSliceParameter->num_macroblocks) == (width_in_mbs * height_in_mbs);
- int i,x,y;
- int qp = pPicParameter->pic_init_qp + pSliceParameter->slice_qp_delta;
- unsigned int rate_control_mode = encoder_context->rate_control_mode;
- unsigned int tail_data[] = { 0x0, 0x0 };
- int slice_type = intel_avc_enc_slice_type_fixup(pSliceParameter->slice_type);
- int is_intra = slice_type == SLICE_TYPE_I;
- int qp_slice;
- int qp_mb;
-
- qp_slice = qp;
- if (rate_control_mode != VA_RC_CQP) {
- qp = mfc_context->brc.qp_prime_y[encoder_context->layer.curr_frame_layer_id][slice_type];
- if (encode_state->slice_header_index[slice_index] == 0) {
- pSliceParameter->slice_qp_delta = qp - pPicParameter->pic_init_qp;
- qp_slice = qp;
- }
- }
-
- /* only support for 8-bit pixel bit-depth */
- assert(pSequenceParameter->bit_depth_luma_minus8 == 0);
- assert(pSequenceParameter->bit_depth_chroma_minus8 == 0);
- assert(pPicParameter->pic_init_qp >= 0 && pPicParameter->pic_init_qp < 52);
- assert(qp >= 0 && qp < 52);
-
- gen6_mfc_avc_slice_state(ctx,
- pPicParameter,
- pSliceParameter,
- encode_state, encoder_context,
- (rate_control_mode != VA_RC_CQP), qp_slice, slice_batch);
-
- if ( slice_index == 0)
- intel_mfc_avc_pipeline_header_programing(ctx, encode_state, encoder_context, slice_batch);
-
- intel_avc_slice_insert_packed_data(ctx, encode_state, encoder_context, slice_index, slice_batch);
-
- dri_bo_map(vme_context->vme_output.bo , 1);
- msg = (unsigned int *)vme_context->vme_output.bo->virtual;
-
- if (is_intra) {
- msg += pSliceParameter->macroblock_address * INTRA_VME_OUTPUT_IN_DWS;
- } else {
- msg += pSliceParameter->macroblock_address * INTER_VME_OUTPUT_IN_DWS;
- msg += 32; /* the first 32 DWs are MVs */
- offset = pSliceParameter->macroblock_address * INTER_VME_OUTPUT_IN_BYTES;
- }
-
- for (i = pSliceParameter->macroblock_address;
- i < pSliceParameter->macroblock_address + pSliceParameter->num_macroblocks; i++) {
- int last_mb = (i == (pSliceParameter->macroblock_address + pSliceParameter->num_macroblocks - 1) );
- x = i % width_in_mbs;
- y = i / width_in_mbs;
-
- if (vme_context->roi_enabled) {
- qp_mb = *(vme_context->qp_per_mb + i);
- } else {
- qp_mb = qp;
- }
-
- if (is_intra) {
- assert(msg);
- gen6_mfc_avc_pak_object_intra(ctx, x, y, last_mb, qp_mb, msg, encoder_context, 0, 0, slice_batch);
- msg += INTRA_VME_OUTPUT_IN_DWS;
- } else {
- if (msg[0] & INTRA_MB_FLAG_MASK) {
- gen6_mfc_avc_pak_object_intra(ctx, x, y, last_mb, qp_mb, msg, encoder_context, 0, 0, slice_batch);
- } else {
- gen6_mfc_avc_pak_object_inter(ctx, x, y, last_mb, qp_mb,
- msg, offset, encoder_context,
- 0, 0, slice_type, slice_batch);
- }
-
- msg += INTER_VME_OUTPUT_IN_DWS;
- offset += INTER_VME_OUTPUT_IN_BYTES;
- }
- }
-
- dri_bo_unmap(vme_context->vme_output.bo);
-
- if ( last_slice ) {
- mfc_context->insert_object(ctx, encoder_context,
- tail_data, 2, 8,
- 2, 1, 1, 0, slice_batch);
- } else {
- mfc_context->insert_object(ctx, encoder_context,
- tail_data, 1, 8,
- 1, 1, 1, 0, slice_batch);
- }
-
-
-}
-
-static dri_bo *
-gen6_mfc_avc_software_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch;;
- dri_bo *batch_bo;
- int i;
-
- batch = mfc_context->aux_batchbuffer;
- batch_bo = batch->buffer;
-
- for (i = 0; i < encode_state->num_slice_params_ext; i++) {
- gen6_mfc_avc_pipeline_slice_programing(ctx, encode_state, encoder_context, i, batch);
- }
-
- intel_batchbuffer_align(batch, 8);
-
- BEGIN_BCS_BATCH(batch, 2);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, MI_BATCH_BUFFER_END);
- ADVANCE_BCS_BATCH(batch);
-
- dri_bo_reference(batch_bo);
-
- intel_batchbuffer_free(batch);
- mfc_context->aux_batchbuffer = NULL;
-
- return batch_bo;
-}
-
-
-static void
-gen6_mfc_batchbuffer_surfaces_input(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- assert(vme_context->vme_output.bo);
- mfc_context->buffer_suface_setup(ctx,
- &mfc_context->gpe_context,
- &vme_context->vme_output,
- BINDING_TABLE_OFFSET(BIND_IDX_VME_OUTPUT),
- SURFACE_STATE_OFFSET(BIND_IDX_VME_OUTPUT));
- assert(mfc_context->aux_batchbuffer_surface.bo);
- mfc_context->buffer_suface_setup(ctx,
- &mfc_context->gpe_context,
- &mfc_context->aux_batchbuffer_surface,
- BINDING_TABLE_OFFSET(BIND_IDX_MFC_SLICE_HEADER),
- SURFACE_STATE_OFFSET(BIND_IDX_MFC_SLICE_HEADER));
-}
-
-static void
-gen6_mfc_batchbuffer_surfaces_output(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
- mfc_context->mfc_batchbuffer_surface.num_blocks = width_in_mbs * height_in_mbs + encode_state->num_slice_params_ext * 8 + 1;
- mfc_context->mfc_batchbuffer_surface.size_block = 16 * CMD_LEN_IN_OWORD; /* 3 OWORDs */
- mfc_context->mfc_batchbuffer_surface.pitch = 16;
- mfc_context->mfc_batchbuffer_surface.bo = dri_bo_alloc(i965->intel.bufmgr,
- "MFC batchbuffer",
- mfc_context->mfc_batchbuffer_surface.num_blocks * mfc_context->mfc_batchbuffer_surface.size_block,
- 0x1000);
- mfc_context->buffer_suface_setup(ctx,
- &mfc_context->gpe_context,
- &mfc_context->mfc_batchbuffer_surface,
- BINDING_TABLE_OFFSET(BIND_IDX_MFC_BATCHBUFFER),
- SURFACE_STATE_OFFSET(BIND_IDX_MFC_BATCHBUFFER));
-}
-
-static void
-gen6_mfc_batchbuffer_surfaces_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- gen6_mfc_batchbuffer_surfaces_input(ctx, encode_state, encoder_context);
- gen6_mfc_batchbuffer_surfaces_output(ctx, encode_state, encoder_context);
-}
-
-static void
-gen6_mfc_batchbuffer_idrt_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct gen6_interface_descriptor_data *desc;
- int i;
- dri_bo *bo;
-
- bo = mfc_context->gpe_context.idrt.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- desc = bo->virtual;
-
- for (i = 0; i < mfc_context->gpe_context.num_kernels; i++) {
- struct i965_kernel *kernel;
-
- kernel = &mfc_context->gpe_context.kernels[i];
- assert(sizeof(*desc) == 32);
-
- /*Setup the descritor table*/
- memset(desc, 0, sizeof(*desc));
- desc->desc0.kernel_start_pointer = (kernel->bo->offset >> 6);
- desc->desc2.sampler_count = 0;
- desc->desc2.sampler_state_pointer = 0;
- desc->desc3.binding_table_entry_count = 2;
- desc->desc3.binding_table_pointer = (BINDING_TABLE_OFFSET(0) >> 5);
- desc->desc4.constant_urb_entry_read_offset = 0;
- desc->desc4.constant_urb_entry_read_length = 4;
-
- /*kernel start*/
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0,
- i * sizeof(*desc) + offsetof(struct gen6_interface_descriptor_data, desc0),
- kernel->bo);
- desc++;
- }
-
- dri_bo_unmap(bo);
-}
-
-static void
-gen6_mfc_batchbuffer_constant_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- (void)mfc_context;
-}
-
-static void
-gen6_mfc_batchbuffer_emit_object_command(struct intel_batchbuffer *batch,
- int index,
- int head_offset,
- int batchbuffer_offset,
- int head_size,
- int tail_size,
- int number_mb_cmds,
- int first_object,
- int last_object,
- int last_slice,
- int mb_x,
- int mb_y,
- int width_in_mbs,
- int qp,
- unsigned int ref_index[2])
-{
- BEGIN_BATCH(batch, 14);
-
- OUT_BATCH(batch, CMD_MEDIA_OBJECT | (14 - 2));
- OUT_BATCH(batch, index);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
-
- /*inline data */
- OUT_BATCH(batch, head_offset);
- OUT_BATCH(batch, batchbuffer_offset);
- OUT_BATCH(batch,
- head_size << 16 |
- tail_size);
- OUT_BATCH(batch,
- number_mb_cmds << 16 |
- first_object << 2 |
- last_object << 1 |
- last_slice);
- OUT_BATCH(batch,
- mb_y << 8 |
- mb_x);
- OUT_BATCH(batch,
- qp << 16 |
- width_in_mbs);
- OUT_BATCH(batch, ref_index[0]);
- OUT_BATCH(batch, ref_index[1]);
-
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen6_mfc_avc_batchbuffer_slice_command(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- VAEncSliceParameterBufferH264 *slice_param,
- int head_offset,
- unsigned short head_size,
- unsigned short tail_size,
- int batchbuffer_offset,
- int qp,
- int last_slice)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
- int total_mbs = slice_param->num_macroblocks;
- int number_mb_cmds = 128;
- int starting_mb = 0;
- int last_object = 0;
- int first_object = 1;
- int i;
- int mb_x, mb_y;
- int index = (slice_param->slice_type == SLICE_TYPE_I) ? MFC_BATCHBUFFER_AVC_INTRA : MFC_BATCHBUFFER_AVC_INTER;
-
- for (i = 0; i < total_mbs / number_mb_cmds; i++) {
- last_object = (total_mbs - starting_mb) == number_mb_cmds;
- mb_x = (slice_param->macroblock_address + starting_mb) % width_in_mbs;
- mb_y = (slice_param->macroblock_address + starting_mb) / width_in_mbs;
- assert(mb_x <= 255 && mb_y <= 255);
-
- starting_mb += number_mb_cmds;
-
- gen6_mfc_batchbuffer_emit_object_command(batch,
- index,
- head_offset,
- batchbuffer_offset,
- head_size,
- tail_size,
- number_mb_cmds,
- first_object,
- last_object,
- last_slice,
- mb_x,
- mb_y,
- width_in_mbs,
- qp,
- vme_context->ref_index_in_mb);
-
- if (first_object) {
- head_offset += head_size;
- batchbuffer_offset += head_size;
- }
-
- if (last_object) {
- head_offset += tail_size;
- batchbuffer_offset += tail_size;
- }
-
- batchbuffer_offset += number_mb_cmds * CMD_LEN_IN_OWORD;
-
- first_object = 0;
- }
-
- if (!last_object) {
- last_object = 1;
- number_mb_cmds = total_mbs % number_mb_cmds;
- mb_x = (slice_param->macroblock_address + starting_mb) % width_in_mbs;
- mb_y = (slice_param->macroblock_address + starting_mb) / width_in_mbs;
- assert(mb_x <= 255 && mb_y <= 255);
- starting_mb += number_mb_cmds;
-
- gen6_mfc_batchbuffer_emit_object_command(batch,
- index,
- head_offset,
- batchbuffer_offset,
- head_size,
- tail_size,
- number_mb_cmds,
- first_object,
- last_object,
- last_slice,
- mb_x,
- mb_y,
- width_in_mbs,
- qp,
- vme_context->ref_index_in_mb);
- }
-}
-
-/*
- * return size in Owords (16bytes)
- */
-static int
-gen6_mfc_avc_batchbuffer_slice(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int slice_index,
- int batchbuffer_offset)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *slice_batch = mfc_context->aux_batchbuffer;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[slice_index]->buffer;
- int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
- int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
- int last_slice = (pSliceParameter->macroblock_address + pSliceParameter->num_macroblocks) == (width_in_mbs * height_in_mbs);
- int qp = pPicParameter->pic_init_qp + pSliceParameter->slice_qp_delta;
- unsigned int rate_control_mode = encoder_context->rate_control_mode;
- unsigned int tail_data[] = { 0x0, 0x0 };
- long head_offset;
- int old_used = intel_batchbuffer_used_size(slice_batch), used;
- unsigned short head_size, tail_size;
- int slice_type = intel_avc_enc_slice_type_fixup(pSliceParameter->slice_type);
- int qp_slice;
-
- qp_slice = qp;
- if (rate_control_mode != VA_RC_CQP) {
- qp = mfc_context->brc.qp_prime_y[encoder_context->layer.curr_frame_layer_id][slice_type];
- if (encode_state->slice_header_index[slice_index] == 0) {
- pSliceParameter->slice_qp_delta = qp - pPicParameter->pic_init_qp;
- /* Use the adjusted qp when slice_header is generated by driver */
- qp_slice = qp;
- }
- }
-
- /* only support for 8-bit pixel bit-depth */
- assert(pSequenceParameter->bit_depth_luma_minus8 == 0);
- assert(pSequenceParameter->bit_depth_chroma_minus8 == 0);
- assert(pPicParameter->pic_init_qp >= 0 && pPicParameter->pic_init_qp < 52);
- assert(qp >= 0 && qp < 52);
-
- head_offset = old_used / 16;
- gen6_mfc_avc_slice_state(ctx,
- pPicParameter,
- pSliceParameter,
- encode_state,
- encoder_context,
- (rate_control_mode != VA_RC_CQP),
- qp_slice,
- slice_batch);
-
- if (slice_index == 0)
- intel_mfc_avc_pipeline_header_programing(ctx, encode_state, encoder_context, slice_batch);
-
- intel_avc_slice_insert_packed_data(ctx, encode_state, encoder_context, slice_index, slice_batch);
-
- intel_batchbuffer_align(slice_batch, 16); /* aligned by an Oword */
- used = intel_batchbuffer_used_size(slice_batch);
- head_size = (used - old_used) / 16;
- old_used = used;
-
- /* tail */
- if (last_slice) {
- mfc_context->insert_object(ctx,
- encoder_context,
- tail_data,
- 2,
- 8,
- 2,
- 1,
- 1,
- 0,
- slice_batch);
- } else {
- mfc_context->insert_object(ctx,
- encoder_context,
- tail_data,
- 1,
- 8,
- 1,
- 1,
- 1,
- 0,
- slice_batch);
- }
-
- intel_batchbuffer_align(slice_batch, 16); /* aligned by an Oword */
- used = intel_batchbuffer_used_size(slice_batch);
- tail_size = (used - old_used) / 16;
-
-
- gen6_mfc_avc_batchbuffer_slice_command(ctx,
- encoder_context,
- pSliceParameter,
- head_offset,
- head_size,
- tail_size,
- batchbuffer_offset,
- qp,
- last_slice);
-
- return head_size + tail_size + pSliceParameter->num_macroblocks * CMD_LEN_IN_OWORD;
-}
-
-static void
-gen6_mfc_avc_batchbuffer_pipeline(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- int i, size, offset = 0;
- intel_batchbuffer_start_atomic(batch, 0x4000);
- gen6_gpe_pipeline_setup(ctx, &mfc_context->gpe_context, batch);
-
- for ( i = 0; i < encode_state->num_slice_params_ext; i++) {
- size = gen6_mfc_avc_batchbuffer_slice(ctx, encode_state, encoder_context, i, offset);
- offset += size;
- }
-
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-}
-
-static void
-gen6_mfc_build_avc_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- gen6_mfc_batchbuffer_surfaces_setup(ctx, encode_state, encoder_context);
- gen6_mfc_batchbuffer_idrt_setup(ctx, encode_state, encoder_context);
- gen6_mfc_batchbuffer_constant_setup(ctx, encode_state, encoder_context);
- gen6_mfc_avc_batchbuffer_pipeline(ctx, encode_state, encoder_context);
-}
-
-static dri_bo *
-gen6_mfc_avc_hardware_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- gen6_mfc_build_avc_batchbuffer(ctx, encode_state, encoder_context);
- dri_bo_reference(mfc_context->mfc_batchbuffer_surface.bo);
-
- return mfc_context->mfc_batchbuffer_surface.bo;
-}
-
-
-
-static void
-gen6_mfc_avc_pipeline_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- dri_bo *slice_batch_bo;
-
- if ( intel_mfc_interlace_check(ctx, encode_state, encoder_context) ) {
- fprintf(stderr, "Current VA driver don't support interlace mode!\n");
- assert(0);
- return;
- }
-
- if (encoder_context->soft_batch_force)
- slice_batch_bo = gen6_mfc_avc_software_batchbuffer(ctx, encode_state, encoder_context);
- else
- slice_batch_bo = gen6_mfc_avc_hardware_batchbuffer(ctx, encode_state, encoder_context);
-
- // begin programing
- intel_batchbuffer_start_atomic_bcs(batch, 0x4000);
- intel_batchbuffer_emit_mi_flush(batch);
-
- // picture level programing
- gen6_mfc_avc_pipeline_picture_programing(ctx, encode_state, encoder_context);
-
- BEGIN_BCS_BATCH(batch, 2);
- OUT_BCS_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8));
- OUT_BCS_RELOC(batch,
- slice_batch_bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- ADVANCE_BCS_BATCH(batch);
-
- // end programing
- intel_batchbuffer_end_atomic(batch);
-
- dri_bo_unreference(slice_batch_bo);
-}
-
-VAStatus
-gen6_mfc_avc_encode_picture(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- unsigned int rate_control_mode = encoder_context->rate_control_mode;
- int current_frame_bits_size;
- int sts;
-
- for (;;) {
- gen6_mfc_init(ctx, encode_state, encoder_context);
- intel_mfc_avc_prepare(ctx, encode_state, encoder_context);
- /*Programing bcs pipeline*/
- gen6_mfc_avc_pipeline_programing(ctx, encode_state, encoder_context); //filling the pipeline
- gen6_mfc_run(ctx, encode_state, encoder_context);
- if (rate_control_mode == VA_RC_CBR || rate_control_mode == VA_RC_VBR) {
- gen6_mfc_stop(ctx, encode_state, encoder_context, &current_frame_bits_size);
- sts = intel_mfc_brc_postpack(encode_state, encoder_context, current_frame_bits_size);
- if (sts == BRC_NO_HRD_VIOLATION) {
- intel_mfc_hrd_context_update(encode_state, mfc_context);
- break;
- }
- else if (sts == BRC_OVERFLOW_WITH_MIN_QP || sts == BRC_UNDERFLOW_WITH_MAX_QP) {
- if (!mfc_context->hrd.violation_noted) {
- fprintf(stderr, "Unrepairable %s!\n", (sts == BRC_OVERFLOW_WITH_MIN_QP)? "overflow": "underflow");
- mfc_context->hrd.violation_noted = 1;
- }
- return VA_STATUS_SUCCESS;
- }
- } else {
- break;
- }
- }
-
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus
-gen6_mfc_pipeline(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus vaStatus;
-
- switch (profile) {
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- vaStatus = gen6_mfc_avc_encode_picture(ctx, encode_state, encoder_context);
- break;
-
- /* FIXME: add for other profile */
- default:
- vaStatus = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
- break;
- }
-
- return vaStatus;
-}
-
-void
-gen6_mfc_context_destroy(void *context)
-{
- struct gen6_mfc_context *mfc_context = context;
- int i;
-
- dri_bo_unreference(mfc_context->post_deblocking_output.bo);
- mfc_context->post_deblocking_output.bo = NULL;
-
- dri_bo_unreference(mfc_context->pre_deblocking_output.bo);
- mfc_context->pre_deblocking_output.bo = NULL;
-
- dri_bo_unreference(mfc_context->uncompressed_picture_source.bo);
- mfc_context->uncompressed_picture_source.bo = NULL;
-
- dri_bo_unreference(mfc_context->mfc_indirect_pak_bse_object.bo);
- mfc_context->mfc_indirect_pak_bse_object.bo = NULL;
-
- for (i = 0; i < NUM_MFC_DMV_BUFFERS; i++){
- dri_bo_unreference(mfc_context->direct_mv_buffers[i].bo);
- mfc_context->direct_mv_buffers[i].bo = NULL;
- }
-
- dri_bo_unreference(mfc_context->intra_row_store_scratch_buffer.bo);
- mfc_context->intra_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(mfc_context->macroblock_status_buffer.bo);
- mfc_context->macroblock_status_buffer.bo = NULL;
-
- dri_bo_unreference(mfc_context->deblocking_filter_row_store_scratch_buffer.bo);
- mfc_context->deblocking_filter_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(mfc_context->bsd_mpc_row_store_scratch_buffer.bo);
- mfc_context->bsd_mpc_row_store_scratch_buffer.bo = NULL;
-
-
- for (i = 0; i < MAX_MFC_REFERENCE_SURFACES; i++){
- dri_bo_unreference(mfc_context->reference_surfaces[i].bo);
- mfc_context->reference_surfaces[i].bo = NULL;
- }
-
- i965_gpe_context_destroy(&mfc_context->gpe_context);
-
- dri_bo_unreference(mfc_context->mfc_batchbuffer_surface.bo);
- mfc_context->mfc_batchbuffer_surface.bo = NULL;
-
- dri_bo_unreference(mfc_context->aux_batchbuffer_surface.bo);
- mfc_context->aux_batchbuffer_surface.bo = NULL;
-
- if (mfc_context->aux_batchbuffer)
- intel_batchbuffer_free(mfc_context->aux_batchbuffer);
-
- mfc_context->aux_batchbuffer = NULL;
-
- free(mfc_context);
-}
-
-Bool gen6_mfc_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = calloc(1, sizeof(struct gen6_mfc_context));
-
- if (!mfc_context)
- return False;
-
- mfc_context->gpe_context.surface_state_binding_table.length = (SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_MEDIA_SURFACES_GEN6;
-
- mfc_context->gpe_context.idrt.max_entries = MAX_GPE_KERNELS;
- mfc_context->gpe_context.idrt.entry_size = sizeof(struct gen6_interface_descriptor_data);
-
- mfc_context->gpe_context.curbe.length = 32 * 4;
-
- mfc_context->gpe_context.vfe_state.max_num_threads = 60 - 1;
- mfc_context->gpe_context.vfe_state.num_urb_entries = 16;
- mfc_context->gpe_context.vfe_state.gpgpu_mode = 0;
- mfc_context->gpe_context.vfe_state.urb_entry_size = 59 - 1;
- mfc_context->gpe_context.vfe_state.curbe_allocation_size = 37 - 1;
-
- i965_gpe_load_kernels(ctx,
- &mfc_context->gpe_context,
- gen6_mfc_kernels,
- NUM_MFC_KERNEL);
-
- mfc_context->pipe_mode_select = gen6_mfc_pipe_mode_select;
- mfc_context->set_surface_state = gen6_mfc_surface_state;
- mfc_context->ind_obj_base_addr_state = gen6_mfc_ind_obj_base_addr_state;
- mfc_context->avc_img_state = gen6_mfc_avc_img_state;
- mfc_context->avc_qm_state = gen6_mfc_avc_qm_state;
- mfc_context->avc_fqm_state = gen6_mfc_avc_fqm_state;
- mfc_context->insert_object = gen6_mfc_avc_insert_object;
- mfc_context->buffer_suface_setup = i965_gpe_buffer_suface_setup;
-
- encoder_context->mfc_context = mfc_context;
- encoder_context->mfc_context_destroy = gen6_mfc_context_destroy;
- encoder_context->mfc_pipeline = gen6_mfc_pipeline;
- encoder_context->mfc_brc_prepare = intel_mfc_brc_prepare;
-
- return True;
-}
diff --git a/src/gen6_mfc.h b/src/gen6_mfc.h
deleted file mode 100644
index 7a5d940..0000000
--- a/src/gen6_mfc.h
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Zhou Chang <chang.zhou@intel.com>
- *
- */
-
-#ifndef _GEN6_MFC_H_
-#define _GEN6_MFC_H_
-
-#include <drm.h>
-#include <i915_drm.h>
-#include <intel_bufmgr.h>
-
-#include "i965_encoder.h"
-#include "i965_gpe_utils.h"
-
-struct encode_state;
-
-#define MAX_MFC_REFERENCE_SURFACES 16
-#define NUM_MFC_DMV_BUFFERS 34
-
-#define INTRA_MB_FLAG_MASK 0x00002000
-
-/* The space required for slice header SLICE_STATE + header.
- * Is it enough? */
-#define SLICE_HEADER 80
-
-/* the space required for slice tail. */
-#define SLICE_TAIL 16
-
-
-#define MFC_BATCHBUFFER_AVC_INTRA 0
-#define MFC_BATCHBUFFER_AVC_INTER 1
-#define NUM_MFC_KERNEL 2
-
-#define BIND_IDX_VME_OUTPUT 0
-#define BIND_IDX_MFC_SLICE_HEADER 1
-#define BIND_IDX_MFC_BATCHBUFFER 2
-
-#define CMD_LEN_IN_OWORD 4
-
-#define BRC_CLIP(x, min, max) \
- { \
- x = ((x > (max)) ? (max) : ((x < (min)) ? (min) : x)); \
- }
-
-#define BRC_P_B_QP_DIFF 4
-#define BRC_I_P_QP_DIFF 2
-#define BRC_I_B_QP_DIFF (BRC_I_P_QP_DIFF + BRC_P_B_QP_DIFF)
-
-#define BRC_PWEIGHT 0.6 /* weight if P slice with comparison to I slice */
-#define BRC_BWEIGHT 0.25 /* weight if B slice with comparison to I slice */
-
-#define BRC_QP_MAX_CHANGE 5 /* maximum qp modification */
-#define BRC_CY 0.1 /* weight for */
-#define BRC_CX_UNDERFLOW 5.
-#define BRC_CX_OVERFLOW -4.
-
-#define BRC_PI_0_5 1.5707963267948966192313216916398
-
-typedef enum {
- VME_V_PRED = 0,
- VME_H_PRED = 1,
- VME_DC_PRED = 2,
- VME_PL_PRED = 3,
-
- VME_MB_INTRA_MODE_COUNT
-} VME_MB_INTRA_PRED_MODE;
-
-typedef enum {
- PAK_DC_PRED = 0,
- PAK_V_PRED = 1,
- PAK_H_PRED = 2,
- PAK_TM_PRED = 3,
-
- PAK_MB_INTRA_MODE_COUNT
-} VP8_PAK_MB_INTRA_PRED_MODE;
-
-typedef enum
-{
- VME_B_V_PRED = 0,
- VME_B_H_PRED = 1,
- VME_B_DC_PRED = 2,
- VME_B_DL_PRED = 3,
- VME_B_DR_PRED = 4,
- VME_B_VR_PRED = 5,
- VME_B_HD_PRED = 6,
- VME_B_VL_PRED = 7,
- VME_B_HU_PRED = 8,
-
- VME_B_INTRA_MODE_COUNT
-} VME_BLOCK_INTRA_PRED_MODE;
-
-typedef enum
-{
- PAK_B_DC_PRED = 0,
- PAK_B_TM_PRED = 1,
- PAK_B_VE_PRED = 2,
- PAK_B_HE_PRED = 3,
- PAK_B_LD_PRED = 4,
- PAK_B_RD_PRED = 5,
- PAK_B_VR_PRED = 6,
- PAK_B_VL_PRED = 7,
- PAK_B_HD_PRED = 8,
- PAK_B_HU_PRED = 9,
-
- PAK_B_INTRA_MODE_COUNT
-} VP8_PAK_BLOCK_INTRA_PRED_MODE;
-
-typedef struct
-{
- int vme_intra_mb_mode;
- int vp8_pak_intra_mb_mode;
-} vp8_intra_mb_mode_map_t;
-
-typedef struct
-{
- int vme_intra_block_mode;
- int vp8_pak_intra_block_mode;
-} vp8_intra_block_mode_map_t;
-
-typedef enum _gen6_brc_status
-{
- BRC_NO_HRD_VIOLATION = 0,
- BRC_UNDERFLOW = 1,
- BRC_OVERFLOW = 2,
- BRC_UNDERFLOW_WITH_MAX_QP = 3,
- BRC_OVERFLOW_WITH_MIN_QP = 4,
-} gen6_brc_status;
-
-struct gen6_mfc_avc_surface_aux
-{
- dri_bo *dmv_top;
- dri_bo *dmv_bottom;
-};
-
-struct gen6_mfc_context
-{
- struct {
- unsigned int width;
- unsigned int height;
- unsigned int w_pitch;
- unsigned int h_pitch;
- } surface_state;
-
- //MFX_PIPE_BUF_ADDR_STATE
- struct {
- dri_bo *bo;
- } post_deblocking_output; //OUTPUT: reconstructed picture
-
- struct {
- dri_bo *bo;
- } pre_deblocking_output; //OUTPUT: reconstructed picture with deblocked
-
- struct {
- dri_bo *bo;
- } uncompressed_picture_source; //INPUT: original compressed image
-
- struct {
- dri_bo *bo;
- } intra_row_store_scratch_buffer; //INTERNAL:
-
- struct {
- dri_bo *bo;
- } macroblock_status_buffer; //INTERNAL:
-
- struct {
- dri_bo *bo;
- } deblocking_filter_row_store_scratch_buffer; //INTERNAL:
-
- struct {
- dri_bo *bo;
- } reference_surfaces[MAX_MFC_REFERENCE_SURFACES]; //INTERNAL: refrence surfaces
-
- //MFX_IND_OBJ_BASE_ADDR_STATE
- struct{
- dri_bo *bo;
- } mfc_indirect_mv_object; //INPUT: the blocks' mv info
-
- struct {
- dri_bo *bo;
- int offset;
- int end_offset;
- } mfc_indirect_pak_bse_object; //OUTPUT: the compressed bitstream
-
- //MFX_BSP_BUF_BASE_ADDR_STATE
- struct {
- dri_bo *bo;
- } bsd_mpc_row_store_scratch_buffer; //INTERNAL:
-
- //MFX_AVC_DIRECTMODE_STATE
- struct {
- dri_bo *bo;
- } direct_mv_buffers[NUM_MFC_DMV_BUFFERS]; //INTERNAL: 0-31 as input,32 and 33 as output
-
- //Bit rate tracking context
- struct {
- unsigned int MaxQpNegModifier;
- unsigned int MaxQpPosModifier;
- unsigned char Correct[6];
- unsigned char GrowInit;
- unsigned char GrowResistance;
- unsigned char ShrinkInit;
- unsigned char ShrinkResistance;
- } bit_rate_control_context[3]; //INTERNAL: for I, P, B frames
-
- struct {
- int mode;
- int gop_nums[MAX_MFC_REFERENCE_SURFACES][3];
- int target_frame_size[MAX_TEMPORAL_LAYERS][3]; // I,P,B
- int qp_prime_y[MAX_TEMPORAL_LAYERS][3];
- double bits_per_frame[MAX_TEMPORAL_LAYERS];
- double qpf_rounding_accumulator[MAX_TEMPORAL_LAYERS];
- int bits_prev_frame[MAX_TEMPORAL_LAYERS];
- int prev_slice_type[MAX_TEMPORAL_LAYERS];
- } brc;
-
- struct {
- double current_buffer_fullness[MAX_TEMPORAL_LAYERS];
- double target_buffer_fullness[MAX_TEMPORAL_LAYERS];
- double buffer_capacity[MAX_TEMPORAL_LAYERS];
- unsigned int buffer_size[MAX_TEMPORAL_LAYERS];
- unsigned int violation_noted;
- } hrd;
-
- //HRD control context
- struct {
- int i_bit_rate_value;
-
- int i_initial_cpb_removal_delay;
- int i_cpb_removal_delay;
-
- int i_frame_number;
-
- int i_initial_cpb_removal_delay_length;
- int i_cpb_removal_delay_length;
- int i_dpb_output_delay_length;
- }vui_hrd;
-
- struct {
- unsigned char *vp8_frame_header;
- unsigned int frame_header_bit_count;
- unsigned int frame_header_qindex_update_pos;
- unsigned int frame_header_lf_update_pos;
- unsigned int frame_header_token_update_pos;
- unsigned int frame_header_bin_mv_upate_pos;
-
- unsigned int intermediate_partition_offset[8];
- unsigned int intermediate_buffer_max_size;
- unsigned int final_frame_byte_offset;
-
- unsigned char mb_segment_tree_probs[3];
- unsigned char y_mode_probs[4];
- unsigned char uv_mode_probs[3];
- unsigned char mv_probs[2][19];
-
- unsigned char prob_skip_false;
- unsigned char prob_intra;
- unsigned char prob_last;
- unsigned char prob_gf;
-
- dri_bo *frame_header_bo;
- dri_bo *intermediate_bo;
- dri_bo *final_frame_bo;
- dri_bo *stream_out_bo;
- dri_bo *coeff_probs_stream_in_bo;
- dri_bo *token_statistics_bo;
- dri_bo *mpc_row_store_bo;
- }vp8_state;
-
- //"buffered_QMatrix" will be used to buffer the QMatrix if the app sends one.
- // Or else, we will load a default QMatrix from the driver for JPEG encode.
- VAQMatrixBufferJPEG buffered_qmatrix;
- struct i965_gpe_context gpe_context;
- struct i965_buffer_surface mfc_batchbuffer_surface;
- struct intel_batchbuffer *aux_batchbuffer;
- struct i965_buffer_surface aux_batchbuffer_surface;
-
- void (*pipe_mode_select)(VADriverContextP ctx,
- int standard_select,
- struct intel_encoder_context *encoder_context);
- void (*set_surface_state)(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context);
- void (*ind_obj_base_addr_state)(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context);
- void (*avc_img_state)(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
- void (*avc_qm_state)(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
- void (*avc_fqm_state)(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
- void (*insert_object)(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- unsigned int *insert_data,
- int lenght_in_dws, int data_bits_in_last_dw,
- int skip_emul_byte_count,
- int is_last_header, int is_end_of_slice,
- int emulation_flag,
- struct intel_batchbuffer *batch);
- void (*buffer_suface_setup)(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct i965_buffer_surface *buffer_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset);
-};
-
-VAStatus gen6_mfc_pipeline(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
-void gen6_mfc_context_destroy(void *context);
-
-extern
-Bool gen6_mfc_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context);
-
-extern
-Bool gen7_mfc_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context);
-
-extern
-Bool gen75_mfc_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context);
-
-
-extern int intel_mfc_update_hrd(struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int frame_bits);
-
-extern int intel_mfc_brc_postpack(struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int frame_bits);
-
-extern void intel_mfc_hrd_context_update(struct encode_state *encode_state,
- struct gen6_mfc_context *mfc_context);
-
-extern int intel_mfc_interlace_check(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
-
-extern void intel_mfc_brc_prepare(struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
-
-extern void intel_mfc_avc_pipeline_header_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- struct intel_batchbuffer *slice_batch);
-
-extern VAStatus intel_mfc_avc_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
-
-extern int intel_avc_enc_slice_type_fixup(int type);
-
-extern void
-intel_mfc_avc_ref_idx_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
-
-extern
-Bool gen8_mfc_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context);
-
-extern void
-intel_avc_slice_insert_packed_data(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int slice_index,
- struct intel_batchbuffer *slice_batch);
-
-extern
-Bool gen9_mfc_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context);
-
-#endif /* _GEN6_MFC_BCS_H_ */
diff --git a/src/gen6_mfc_common.c b/src/gen6_mfc_common.c
deleted file mode 100644
index 0d21a11..0000000
--- a/src/gen6_mfc_common.c
+++ /dev/null
@@ -1,2394 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- * Zhao Yakui <yakui.zhao@intel.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <math.h>
-
-#include "intel_batchbuffer.h"
-#include "i965_defines.h"
-#include "i965_structs.h"
-#include "i965_drv_video.h"
-#include "i965_encoder.h"
-#include "i965_encoder_utils.h"
-#include "gen6_mfc.h"
-#include "gen6_vme.h"
-#include "gen9_mfc.h"
-#include "intel_media.h"
-
-#ifndef HAVE_LOG2F
-#define log2f(x) (logf(x)/(float)M_LN2)
-#endif
-
-int intel_avc_enc_slice_type_fixup(int slice_type)
-{
- if (slice_type == SLICE_TYPE_SP ||
- slice_type == SLICE_TYPE_P)
- slice_type = SLICE_TYPE_P;
- else if (slice_type == SLICE_TYPE_SI ||
- slice_type == SLICE_TYPE_I)
- slice_type = SLICE_TYPE_I;
- else {
- if (slice_type != SLICE_TYPE_B)
- WARN_ONCE("Invalid slice type for H.264 encoding!\n");
-
- slice_type = SLICE_TYPE_B;
- }
-
- return slice_type;
-}
-
-static void
-intel_mfc_bit_rate_control_context_init(struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- int i;
-
- for(i = 0 ; i < 3; i++) {
- mfc_context->bit_rate_control_context[i].MaxQpNegModifier = 6;
- mfc_context->bit_rate_control_context[i].MaxQpPosModifier = 6;
- mfc_context->bit_rate_control_context[i].GrowInit = 6;
- mfc_context->bit_rate_control_context[i].GrowResistance = 4;
- mfc_context->bit_rate_control_context[i].ShrinkInit = 6;
- mfc_context->bit_rate_control_context[i].ShrinkResistance = 4;
-
- mfc_context->bit_rate_control_context[i].Correct[0] = 8;
- mfc_context->bit_rate_control_context[i].Correct[1] = 4;
- mfc_context->bit_rate_control_context[i].Correct[2] = 2;
- mfc_context->bit_rate_control_context[i].Correct[3] = 2;
- mfc_context->bit_rate_control_context[i].Correct[4] = 4;
- mfc_context->bit_rate_control_context[i].Correct[5] = 8;
- }
-}
-
-static void intel_mfc_brc_init(struct encode_state *encode_state,
- struct intel_encoder_context* encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- double bitrate, framerate;
- double frame_per_bits = 8 * 3 * encoder_context->frame_width_in_pixel * encoder_context->frame_height_in_pixel / 2;
- double qp1_size = 0.1 * frame_per_bits;
- double qp51_size = 0.001 * frame_per_bits;
- int min_qp = MAX(1, encoder_context->brc.min_qp);
- double bpf, factor, hrd_factor;
- int inum = encoder_context->brc.num_iframes_in_gop,
- pnum = encoder_context->brc.num_pframes_in_gop,
- bnum = encoder_context->brc.num_bframes_in_gop; /* Gop structure: number of I, P, B frames in the Gop. */
- int intra_period = encoder_context->brc.gop_size;
- int i;
-
- if (encoder_context->layer.num_layers > 1)
- qp1_size = 0.15 * frame_per_bits;
-
- mfc_context->brc.mode = encoder_context->rate_control_mode;
-
- mfc_context->hrd.violation_noted = 0;
-
- for (i = 0; i < encoder_context->layer.num_layers; i++) {
- mfc_context->brc.qp_prime_y[i][SLICE_TYPE_I] = 26;
- mfc_context->brc.qp_prime_y[i][SLICE_TYPE_P] = 26;
- mfc_context->brc.qp_prime_y[i][SLICE_TYPE_B] = 26;
-
- if (i == 0) {
- bitrate = encoder_context->brc.bits_per_second[0];
- framerate = (double)encoder_context->brc.framerate[0].num / (double)encoder_context->brc.framerate[0].den;
- } else {
- bitrate = (encoder_context->brc.bits_per_second[i] - encoder_context->brc.bits_per_second[i - 1]);
- framerate = ((double)encoder_context->brc.framerate[i].num / (double)encoder_context->brc.framerate[i].den) -
- ((double)encoder_context->brc.framerate[i - 1].num / (double)encoder_context->brc.framerate[i - 1].den);
- }
-
- if (mfc_context->brc.mode == VA_RC_VBR && encoder_context->brc.target_percentage[i])
- bitrate = bitrate * encoder_context->brc.target_percentage[i] / 100;
-
- if (i == encoder_context->layer.num_layers - 1)
- factor = 1.0;
- else {
- factor = ((double)encoder_context->brc.framerate[i].num / (double)encoder_context->brc.framerate[i].den) /
- ((double)encoder_context->brc.framerate[i - 1].num / (double)encoder_context->brc.framerate[i - 1].den);
- }
-
- hrd_factor = (double)bitrate / encoder_context->brc.bits_per_second[encoder_context->layer.num_layers - 1];
-
- mfc_context->hrd.buffer_size[i] = (unsigned int)(encoder_context->brc.hrd_buffer_size * hrd_factor);
- mfc_context->hrd.current_buffer_fullness[i] =
- (double)(encoder_context->brc.hrd_initial_buffer_fullness < encoder_context->brc.hrd_buffer_size) ?
- encoder_context->brc.hrd_initial_buffer_fullness : encoder_context->brc.hrd_buffer_size / 2.;
- mfc_context->hrd.current_buffer_fullness[i] *= hrd_factor;
- mfc_context->hrd.target_buffer_fullness[i] = (double)encoder_context->brc.hrd_buffer_size * hrd_factor / 2.;
- mfc_context->hrd.buffer_capacity[i] = (double)encoder_context->brc.hrd_buffer_size * hrd_factor / qp1_size;
-
- if (encoder_context->layer.num_layers > 1) {
- if (i == 0) {
- intra_period = (int)(encoder_context->brc.gop_size * factor);
- inum = 1;
- pnum = (int)(encoder_context->brc.num_pframes_in_gop * factor);
- bnum = intra_period - inum - pnum;
- } else {
- intra_period = (int)(encoder_context->brc.gop_size * factor) - intra_period;
- inum = 0;
- pnum = (int)(encoder_context->brc.num_pframes_in_gop * factor) - pnum;
- bnum = intra_period - inum - pnum;
- }
- }
-
- mfc_context->brc.gop_nums[i][SLICE_TYPE_I] = inum;
- mfc_context->brc.gop_nums[i][SLICE_TYPE_P] = pnum;
- mfc_context->brc.gop_nums[i][SLICE_TYPE_B] = bnum;
-
- mfc_context->brc.target_frame_size[i][SLICE_TYPE_I] = (int)((double)((bitrate * intra_period)/framerate) /
- (double)(inum + BRC_PWEIGHT * pnum + BRC_BWEIGHT * bnum));
- mfc_context->brc.target_frame_size[i][SLICE_TYPE_P] = BRC_PWEIGHT * mfc_context->brc.target_frame_size[i][SLICE_TYPE_I];
- mfc_context->brc.target_frame_size[i][SLICE_TYPE_B] = BRC_BWEIGHT * mfc_context->brc.target_frame_size[i][SLICE_TYPE_I];
-
- bpf = mfc_context->brc.bits_per_frame[i] = bitrate/framerate;
-
- if (encoder_context->brc.initial_qp) {
- mfc_context->brc.qp_prime_y[i][SLICE_TYPE_I] = encoder_context->brc.initial_qp;
- mfc_context->brc.qp_prime_y[i][SLICE_TYPE_P] = encoder_context->brc.initial_qp;
- mfc_context->brc.qp_prime_y[i][SLICE_TYPE_B] = encoder_context->brc.initial_qp;
- } else {
- if ((bpf > qp51_size) && (bpf < qp1_size)) {
- mfc_context->brc.qp_prime_y[i][SLICE_TYPE_P] = 51 - 50*(bpf - qp51_size)/(qp1_size - qp51_size);
- }
- else if (bpf >= qp1_size)
- mfc_context->brc.qp_prime_y[i][SLICE_TYPE_P] = 1;
- else if (bpf <= qp51_size)
- mfc_context->brc.qp_prime_y[i][SLICE_TYPE_P] = 51;
-
- mfc_context->brc.qp_prime_y[i][SLICE_TYPE_I] = mfc_context->brc.qp_prime_y[i][SLICE_TYPE_P];
- mfc_context->brc.qp_prime_y[i][SLICE_TYPE_B] = mfc_context->brc.qp_prime_y[i][SLICE_TYPE_I];
- }
-
- BRC_CLIP(mfc_context->brc.qp_prime_y[i][SLICE_TYPE_I], min_qp, 51);
- BRC_CLIP(mfc_context->brc.qp_prime_y[i][SLICE_TYPE_P], min_qp, 51);
- BRC_CLIP(mfc_context->brc.qp_prime_y[i][SLICE_TYPE_B], min_qp, 51);
- }
-}
-
-int intel_mfc_update_hrd(struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int frame_bits)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- int layer_id = encoder_context->layer.curr_frame_layer_id;
- double prev_bf = mfc_context->hrd.current_buffer_fullness[layer_id];
-
- mfc_context->hrd.current_buffer_fullness[layer_id] -= frame_bits;
-
- if (mfc_context->hrd.buffer_size[layer_id] > 0 && mfc_context->hrd.current_buffer_fullness[layer_id] <= 0.) {
- mfc_context->hrd.current_buffer_fullness[layer_id] = prev_bf;
- return BRC_UNDERFLOW;
- }
-
- mfc_context->hrd.current_buffer_fullness[layer_id] += mfc_context->brc.bits_per_frame[layer_id];
- if (mfc_context->hrd.buffer_size[layer_id] > 0 && mfc_context->hrd.current_buffer_fullness[layer_id] > mfc_context->hrd.buffer_size[layer_id]) {
- if (mfc_context->brc.mode == VA_RC_VBR)
- mfc_context->hrd.current_buffer_fullness[layer_id] = mfc_context->hrd.buffer_size[layer_id];
- else {
- mfc_context->hrd.current_buffer_fullness[layer_id] = prev_bf;
- return BRC_OVERFLOW;
- }
- }
- return BRC_NO_HRD_VIOLATION;
-}
-
-static int intel_mfc_brc_postpack_cbr(struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int frame_bits)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- gen6_brc_status sts = BRC_NO_HRD_VIOLATION;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int slicetype = intel_avc_enc_slice_type_fixup(pSliceParameter->slice_type);
- int curr_frame_layer_id, next_frame_layer_id;
- int qpi, qpp, qpb;
- int qp; // quantizer of previously encoded slice of current type
- int qpn; // predicted quantizer for next frame of current type in integer format
- double qpf; // predicted quantizer for next frame of current type in float format
- double delta_qp; // QP correction
- int min_qp = MAX(1, encoder_context->brc.min_qp);
- int target_frame_size, frame_size_next;
- /* Notes:
- * x - how far we are from HRD buffer borders
- * y - how far we are from target HRD buffer fullness
- */
- double x, y;
- double frame_size_alpha;
-
- if (encoder_context->layer.num_layers < 2 || encoder_context->layer.size_frame_layer_ids == 0) {
- curr_frame_layer_id = 0;
- next_frame_layer_id = 0;
- } else {
- curr_frame_layer_id = encoder_context->layer.curr_frame_layer_id;
- next_frame_layer_id = encoder_context->layer.frame_layer_ids[encoder_context->num_frames_in_sequence % encoder_context->layer.size_frame_layer_ids];
- }
-
- /* checking wthether HRD compliance first */
- sts = intel_mfc_update_hrd(encode_state, encoder_context, frame_bits);
-
- if (sts == BRC_NO_HRD_VIOLATION) { // no HRD violation
- /* nothing */
- } else {
- next_frame_layer_id = curr_frame_layer_id;
- }
-
- mfc_context->brc.bits_prev_frame[curr_frame_layer_id] = frame_bits;
- frame_bits = mfc_context->brc.bits_prev_frame[next_frame_layer_id];
-
- mfc_context->brc.prev_slice_type[curr_frame_layer_id] = slicetype;
- slicetype = mfc_context->brc.prev_slice_type[next_frame_layer_id];
-
- /* 0 means the next frame is the first frame of next layer */
- if (frame_bits == 0)
- return sts;
-
- qpi = mfc_context->brc.qp_prime_y[next_frame_layer_id][SLICE_TYPE_I];
- qpp = mfc_context->brc.qp_prime_y[next_frame_layer_id][SLICE_TYPE_P];
- qpb = mfc_context->brc.qp_prime_y[next_frame_layer_id][SLICE_TYPE_B];
-
- qp = mfc_context->brc.qp_prime_y[next_frame_layer_id][slicetype];
-
- target_frame_size = mfc_context->brc.target_frame_size[next_frame_layer_id][slicetype];
- if (mfc_context->hrd.buffer_capacity[next_frame_layer_id] < 5)
- frame_size_alpha = 0;
- else
- frame_size_alpha = (double)mfc_context->brc.gop_nums[next_frame_layer_id][slicetype];
- if (frame_size_alpha > 30) frame_size_alpha = 30;
- frame_size_next = target_frame_size + (double)(target_frame_size - frame_bits) /
- (double)(frame_size_alpha + 1.);
-
- /* frame_size_next: avoiding negative number and too small value */
- if ((double)frame_size_next < (double)(target_frame_size * 0.25))
- frame_size_next = (int)((double)target_frame_size * 0.25);
-
- qpf = (double)qp * target_frame_size / frame_size_next;
- qpn = (int)(qpf + 0.5);
-
- if (qpn == qp) {
- /* setting qpn we round qpf making mistakes: now we are trying to compensate this */
- mfc_context->brc.qpf_rounding_accumulator[next_frame_layer_id] += qpf - qpn;
- if (mfc_context->brc.qpf_rounding_accumulator[next_frame_layer_id] > 1.0) {
- qpn++;
- mfc_context->brc.qpf_rounding_accumulator[next_frame_layer_id] = 0.;
- } else if (mfc_context->brc.qpf_rounding_accumulator[next_frame_layer_id] < -1.0) {
- qpn--;
- mfc_context->brc.qpf_rounding_accumulator[next_frame_layer_id] = 0.;
- }
- }
- /* making sure that QP is not changing too fast */
- if ((qpn - qp) > BRC_QP_MAX_CHANGE) qpn = qp + BRC_QP_MAX_CHANGE;
- else if ((qpn - qp) < -BRC_QP_MAX_CHANGE) qpn = qp - BRC_QP_MAX_CHANGE;
- /* making sure that with QP predictions we did do not leave QPs range */
- BRC_CLIP(qpn, 1, 51);
-
- /* calculating QP delta as some function*/
- x = mfc_context->hrd.target_buffer_fullness[next_frame_layer_id] - mfc_context->hrd.current_buffer_fullness[next_frame_layer_id];
- if (x > 0) {
- x /= mfc_context->hrd.target_buffer_fullness[next_frame_layer_id];
- y = mfc_context->hrd.current_buffer_fullness[next_frame_layer_id];
- }
- else {
- x /= (mfc_context->hrd.buffer_size[next_frame_layer_id] - mfc_context->hrd.target_buffer_fullness[next_frame_layer_id]);
- y = mfc_context->hrd.buffer_size[next_frame_layer_id] - mfc_context->hrd.current_buffer_fullness[next_frame_layer_id];
- }
- if (y < 0.01) y = 0.01;
- if (x > 1) x = 1;
- else if (x < -1) x = -1;
-
- delta_qp = BRC_QP_MAX_CHANGE*exp(-1/y)*sin(BRC_PI_0_5 * x);
- qpn = (int)(qpn + delta_qp + 0.5);
-
- /* making sure that with QP predictions we did do not leave QPs range */
- BRC_CLIP(qpn, min_qp, 51);
-
- if (sts == BRC_NO_HRD_VIOLATION) { // no HRD violation
- /* correcting QPs of slices of other types */
- if (slicetype == SLICE_TYPE_P) {
- if (abs(qpn + BRC_P_B_QP_DIFF - qpb) > 2)
- mfc_context->brc.qp_prime_y[next_frame_layer_id][SLICE_TYPE_B] += (qpn + BRC_P_B_QP_DIFF - qpb) >> 1;
- if (abs(qpn - BRC_I_P_QP_DIFF - qpi) > 2)
- mfc_context->brc.qp_prime_y[next_frame_layer_id][SLICE_TYPE_I] += (qpn - BRC_I_P_QP_DIFF - qpi) >> 1;
- } else if (slicetype == SLICE_TYPE_I) {
- if (abs(qpn + BRC_I_B_QP_DIFF - qpb) > 4)
- mfc_context->brc.qp_prime_y[next_frame_layer_id][SLICE_TYPE_B] += (qpn + BRC_I_B_QP_DIFF - qpb) >> 2;
- if (abs(qpn + BRC_I_P_QP_DIFF - qpp) > 2)
- mfc_context->brc.qp_prime_y[next_frame_layer_id][SLICE_TYPE_P] += (qpn + BRC_I_P_QP_DIFF - qpp) >> 2;
- } else { // SLICE_TYPE_B
- if (abs(qpn - BRC_P_B_QP_DIFF - qpp) > 2)
- mfc_context->brc.qp_prime_y[next_frame_layer_id][SLICE_TYPE_P] += (qpn - BRC_P_B_QP_DIFF - qpp) >> 1;
- if (abs(qpn - BRC_I_B_QP_DIFF - qpi) > 4)
- mfc_context->brc.qp_prime_y[next_frame_layer_id][SLICE_TYPE_I] += (qpn - BRC_I_B_QP_DIFF - qpi) >> 2;
- }
- BRC_CLIP(mfc_context->brc.qp_prime_y[next_frame_layer_id][SLICE_TYPE_I], min_qp, 51);
- BRC_CLIP(mfc_context->brc.qp_prime_y[next_frame_layer_id][SLICE_TYPE_P], min_qp, 51);
- BRC_CLIP(mfc_context->brc.qp_prime_y[next_frame_layer_id][SLICE_TYPE_B], min_qp, 51);
- } else if (sts == BRC_UNDERFLOW) { // underflow
- if (qpn <= qp) qpn = qp + 1;
- if (qpn > 51) {
- qpn = 51;
- sts = BRC_UNDERFLOW_WITH_MAX_QP; //underflow with maxQP
- }
- } else if (sts == BRC_OVERFLOW) {
- if (qpn >= qp) qpn = qp - 1;
- if (qpn < min_qp) { // overflow with minQP
- qpn = min_qp;
- sts = BRC_OVERFLOW_WITH_MIN_QP; // bit stuffing to be done
- }
- }
-
- mfc_context->brc.qp_prime_y[next_frame_layer_id][slicetype] = qpn;
-
- return sts;
-}
-
-static int intel_mfc_brc_postpack_vbr(struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int frame_bits)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- gen6_brc_status sts;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int slice_type = intel_avc_enc_slice_type_fixup(pSliceParameter->slice_type);
- int *qp = mfc_context->brc.qp_prime_y[0];
- int min_qp = MAX(1, encoder_context->brc.min_qp);
- int qp_delta, large_frame_adjustment;
-
- // This implements a simple reactive VBR rate control mode for single-layer H.264. The primary
- // aim here is to avoid the problematic behaviour that the CBR rate controller displays on
- // scene changes, where the QP can get pushed up by a large amount in a short period and
- // compromise the quality of following frames to a very visible degree.
- // The main idea, then, is to try to keep the HRD buffering above the target level most of the
- // time, so that when a large frame is generated (on a scene change or when the stream
- // complexity increases) we have plenty of slack to be able to encode the more difficult region
- // without compromising quality immediately on the following frames. It is optimistic about
- // the complexity of future frames, so even after generating one or more large frames on a
- // significant change it will try to keep the QP at its current level until the HRD buffer
- // bounds force a change to maintain the intended rate.
-
- sts = intel_mfc_update_hrd(encode_state, encoder_context, frame_bits);
-
- // This adjustment is applied to increase the QP by more than we normally would if a very
- // large frame is encountered and we are in danger of running out of slack.
- large_frame_adjustment = rint(2.0 * log(frame_bits / mfc_context->brc.target_frame_size[0][slice_type]));
-
- if (sts == BRC_UNDERFLOW) {
- // The frame is far too big and we don't have the bits available to send it, so it will
- // have to be re-encoded at a higher QP.
- qp_delta = +2;
- if (frame_bits > mfc_context->brc.target_frame_size[0][slice_type])
- qp_delta += large_frame_adjustment;
- } else if (sts == BRC_OVERFLOW) {
- // The frame is very small and we are now overflowing the HRD buffer. Currently this case
- // does not occur because we ignore overflow in VBR mode.
- assert(0 && "Overflow in VBR mode");
- } else if (frame_bits <= mfc_context->brc.target_frame_size[0][slice_type]) {
- // The frame is smaller than the average size expected for this frame type.
- if (mfc_context->hrd.current_buffer_fullness[0] >
- (mfc_context->hrd.target_buffer_fullness[0] + mfc_context->hrd.buffer_size[0]) / 2.0) {
- // We currently have lots of bits available, so decrease the QP slightly for the next
- // frame.
- qp_delta = -1;
- } else {
- // The HRD buffer fullness is increasing, so do nothing. (We may be under the target
- // level here, but are moving in the right direction.)
- qp_delta = 0;
- }
- } else {
- // The frame is larger than the average size expected for this frame type.
- if (mfc_context->hrd.current_buffer_fullness[0] > mfc_context->hrd.target_buffer_fullness[0]) {
- // We are currently over the target level, so do nothing.
- qp_delta = 0;
- } else if (mfc_context->hrd.current_buffer_fullness[0] > mfc_context->hrd.target_buffer_fullness[0] / 2.0) {
- // We are under the target level, but not critically. Increase the QP by one step if
- // continuing like this would underflow soon (currently within one second).
- if (mfc_context->hrd.current_buffer_fullness[0] /
- (double)(frame_bits - mfc_context->brc.target_frame_size[0][slice_type] + 1) <
- ((double)encoder_context->brc.framerate[0].num / (double)encoder_context->brc.framerate[0].den))
- qp_delta = +1;
- else
- qp_delta = 0;
- } else {
- // We are a long way under the target level. Always increase the QP, possibly by a
- // larger amount dependent on how big the frame we just made actually was.
- qp_delta = +1 + large_frame_adjustment;
- }
- }
-
- switch (slice_type) {
- case SLICE_TYPE_I:
- qp[SLICE_TYPE_I] += qp_delta;
- qp[SLICE_TYPE_P] = qp[SLICE_TYPE_I] + BRC_I_P_QP_DIFF;
- qp[SLICE_TYPE_B] = qp[SLICE_TYPE_I] + BRC_I_B_QP_DIFF;
- break;
- case SLICE_TYPE_P:
- qp[SLICE_TYPE_P] += qp_delta;
- qp[SLICE_TYPE_I] = qp[SLICE_TYPE_P] - BRC_I_P_QP_DIFF;
- qp[SLICE_TYPE_B] = qp[SLICE_TYPE_P] + BRC_P_B_QP_DIFF;
- break;
- case SLICE_TYPE_B:
- qp[SLICE_TYPE_B] += qp_delta;
- qp[SLICE_TYPE_I] = qp[SLICE_TYPE_B] - BRC_I_B_QP_DIFF;
- qp[SLICE_TYPE_P] = qp[SLICE_TYPE_B] - BRC_P_B_QP_DIFF;
- break;
- }
- BRC_CLIP(mfc_context->brc.qp_prime_y[0][SLICE_TYPE_I], min_qp, 51);
- BRC_CLIP(mfc_context->brc.qp_prime_y[0][SLICE_TYPE_P], min_qp, 51);
- BRC_CLIP(mfc_context->brc.qp_prime_y[0][SLICE_TYPE_B], min_qp, 51);
-
- if (sts == BRC_UNDERFLOW && qp[slice_type] == 51)
- sts = BRC_UNDERFLOW_WITH_MAX_QP;
- if (sts == BRC_OVERFLOW && qp[slice_type] == min_qp)
- sts = BRC_OVERFLOW_WITH_MIN_QP;
-
- return sts;
-}
-
-int intel_mfc_brc_postpack(struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int frame_bits)
-{
- switch (encoder_context->rate_control_mode) {
- case VA_RC_CBR:
- return intel_mfc_brc_postpack_cbr(encode_state, encoder_context, frame_bits);
- case VA_RC_VBR:
- return intel_mfc_brc_postpack_vbr(encode_state, encoder_context, frame_bits);
- }
- assert(0 && "Invalid RC mode");
-}
-
-static void intel_mfc_hrd_context_init(struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- unsigned int rate_control_mode = encoder_context->rate_control_mode;
- int target_bit_rate = encoder_context->brc.bits_per_second[encoder_context->layer.num_layers - 1];
-
- // current we only support CBR mode.
- if (rate_control_mode == VA_RC_CBR) {
- mfc_context->vui_hrd.i_bit_rate_value = target_bit_rate >> 10;
- mfc_context->vui_hrd.i_initial_cpb_removal_delay = ((target_bit_rate * 8) >> 10) * 0.5 * 1024 / target_bit_rate * 90000;
- mfc_context->vui_hrd.i_cpb_removal_delay = 2;
- mfc_context->vui_hrd.i_frame_number = 0;
-
- mfc_context->vui_hrd.i_initial_cpb_removal_delay_length = 24;
- mfc_context->vui_hrd.i_cpb_removal_delay_length = 24;
- mfc_context->vui_hrd.i_dpb_output_delay_length = 24;
- }
-
-}
-
-void
-intel_mfc_hrd_context_update(struct encode_state *encode_state,
- struct gen6_mfc_context *mfc_context)
-{
- mfc_context->vui_hrd.i_frame_number++;
-}
-
-int intel_mfc_interlace_check(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncSliceParameterBufferH264 *pSliceParameter;
- int i;
- int mbCount = 0;
- int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
- int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
-
- for (i = 0; i < encode_state->num_slice_params_ext; i++) {
- pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[i]->buffer;
- mbCount += pSliceParameter->num_macroblocks;
- }
-
- if ( mbCount == ( width_in_mbs * height_in_mbs ) )
- return 0;
-
- return 1;
-}
-
-void intel_mfc_brc_prepare(struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- unsigned int rate_control_mode = encoder_context->rate_control_mode;
-
- if (encoder_context->codec != CODEC_H264 &&
- encoder_context->codec != CODEC_H264_MVC)
- return;
-
- if (rate_control_mode != VA_RC_CQP) {
- /*Programing bit rate control */
- if (encoder_context->brc.need_reset) {
- intel_mfc_bit_rate_control_context_init(encode_state, encoder_context);
- intel_mfc_brc_init(encode_state, encoder_context);
- }
-
- /*Programing HRD control */
- if (encoder_context->brc.need_reset)
- intel_mfc_hrd_context_init(encode_state, encoder_context);
- }
-}
-
-void intel_mfc_avc_pipeline_header_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- struct intel_batchbuffer *slice_batch)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- int idx = va_enc_packed_type_to_idx(VAEncPackedHeaderH264_SPS);
- unsigned int rate_control_mode = encoder_context->rate_control_mode;
- unsigned int skip_emul_byte_cnt;
-
- if (encode_state->packed_header_data[idx]) {
- VAEncPackedHeaderParameterBuffer *param = NULL;
- unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer;
- unsigned int length_in_bits;
-
- assert(encode_state->packed_header_param[idx]);
- param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer;
- length_in_bits = param->bit_length;
-
- skip_emul_byte_cnt = intel_avc_find_skipemulcnt((unsigned char *)header_data, length_in_bits);
- mfc_context->insert_object(ctx,
- encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- skip_emul_byte_cnt,
- 0,
- 0,
- !param->has_emulation_bytes,
- slice_batch);
- }
-
- idx = va_enc_packed_type_to_idx(VAEncPackedHeaderH264_PPS);
-
- if (encode_state->packed_header_data[idx]) {
- VAEncPackedHeaderParameterBuffer *param = NULL;
- unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer;
- unsigned int length_in_bits;
-
- assert(encode_state->packed_header_param[idx]);
- param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer;
- length_in_bits = param->bit_length;
-
- skip_emul_byte_cnt = intel_avc_find_skipemulcnt((unsigned char *)header_data, length_in_bits);
-
- mfc_context->insert_object(ctx,
- encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- skip_emul_byte_cnt,
- 0,
- 0,
- !param->has_emulation_bytes,
- slice_batch);
- }
-
- idx = va_enc_packed_type_to_idx(VAEncPackedHeaderH264_SEI);
-
- if (encode_state->packed_header_data[idx]) {
- VAEncPackedHeaderParameterBuffer *param = NULL;
- unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer;
- unsigned int length_in_bits;
-
- assert(encode_state->packed_header_param[idx]);
- param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer;
- length_in_bits = param->bit_length;
-
- skip_emul_byte_cnt = intel_avc_find_skipemulcnt((unsigned char *)header_data, length_in_bits);
- mfc_context->insert_object(ctx,
- encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- skip_emul_byte_cnt,
- 0,
- 0,
- !param->has_emulation_bytes,
- slice_batch);
- } else if (rate_control_mode == VA_RC_CBR) {
- // this is frist AU
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- unsigned char *sei_data = NULL;
-
- int length_in_bits = build_avc_sei_buffer_timing(
- mfc_context->vui_hrd.i_initial_cpb_removal_delay_length,
- mfc_context->vui_hrd.i_initial_cpb_removal_delay,
- 0,
- mfc_context->vui_hrd.i_cpb_removal_delay_length, mfc_context->vui_hrd.i_cpb_removal_delay * mfc_context->vui_hrd.i_frame_number,
- mfc_context->vui_hrd.i_dpb_output_delay_length,
- 0,
- &sei_data);
- mfc_context->insert_object(ctx,
- encoder_context,
- (unsigned int *)sei_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- 5,
- 0,
- 0,
- 1,
- slice_batch);
- free(sei_data);
- }
-}
-
-VAStatus intel_mfc_avc_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct object_surface *obj_surface;
- struct object_buffer *obj_buffer;
- GenAvcSurface *gen6_avc_surface;
- dri_bo *bo;
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- int i, j, enable_avc_ildb = 0;
- VAEncSliceParameterBufferH264 *slice_param;
- struct i965_coded_buffer_segment *coded_buffer_segment;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
-
- if (IS_GEN6(i965->intel.device_info)) {
- /* On the SNB it should be fixed to 128 for the DMV buffer */
- width_in_mbs = 128;
- }
-
- for (j = 0; j < encode_state->num_slice_params_ext && enable_avc_ildb == 0; j++) {
- assert(encode_state->slice_params_ext && encode_state->slice_params_ext[j]->buffer);
- slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[j]->buffer;
-
- for (i = 0; i < encode_state->slice_params_ext[j]->num_elements; i++) {
- assert((slice_param->slice_type == SLICE_TYPE_I) ||
- (slice_param->slice_type == SLICE_TYPE_SI) ||
- (slice_param->slice_type == SLICE_TYPE_P) ||
- (slice_param->slice_type == SLICE_TYPE_SP) ||
- (slice_param->slice_type == SLICE_TYPE_B));
-
- if (slice_param->disable_deblocking_filter_idc != 1) {
- enable_avc_ildb = 1;
- break;
- }
-
- slice_param++;
- }
- }
-
- /*Setup all the input&output object*/
-
- /* Setup current frame and current direct mv buffer*/
- obj_surface = encode_state->reconstructed_object;
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
-
- if ( obj_surface->private_data == NULL) {
- gen6_avc_surface = calloc(sizeof(GenAvcSurface), 1);
- assert(gen6_avc_surface);
- gen6_avc_surface->dmv_top =
- dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- 68 * width_in_mbs * height_in_mbs,
- 64);
- gen6_avc_surface->dmv_bottom =
- dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- 68 * width_in_mbs * height_in_mbs,
- 64);
- assert(gen6_avc_surface->dmv_top);
- assert(gen6_avc_surface->dmv_bottom);
- obj_surface->private_data = (void *)gen6_avc_surface;
- obj_surface->free_private_data = (void *)gen_free_avc_surface;
- }
- gen6_avc_surface = (GenAvcSurface *) obj_surface->private_data;
- mfc_context->direct_mv_buffers[NUM_MFC_DMV_BUFFERS - 2].bo = gen6_avc_surface->dmv_top;
- mfc_context->direct_mv_buffers[NUM_MFC_DMV_BUFFERS - 1].bo = gen6_avc_surface->dmv_bottom;
- dri_bo_reference(gen6_avc_surface->dmv_top);
- dri_bo_reference(gen6_avc_surface->dmv_bottom);
-
- if (enable_avc_ildb) {
- mfc_context->post_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(mfc_context->post_deblocking_output.bo);
- } else {
- mfc_context->pre_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(mfc_context->pre_deblocking_output.bo);
- }
-
- mfc_context->surface_state.width = obj_surface->orig_width;
- mfc_context->surface_state.height = obj_surface->orig_height;
- mfc_context->surface_state.w_pitch = obj_surface->width;
- mfc_context->surface_state.h_pitch = obj_surface->height;
-
- /* Setup reference frames and direct mv buffers*/
- for(i = 0; i < MAX_MFC_REFERENCE_SURFACES; i++) {
- obj_surface = encode_state->reference_objects[i];
-
- if (obj_surface && obj_surface->bo) {
- mfc_context->reference_surfaces[i].bo = obj_surface->bo;
- dri_bo_reference(obj_surface->bo);
-
- /* Check DMV buffer */
- if ( obj_surface->private_data == NULL) {
-
- gen6_avc_surface = calloc(sizeof(GenAvcSurface), 1);
- assert(gen6_avc_surface);
- gen6_avc_surface->dmv_top =
- dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- 68 * width_in_mbs * height_in_mbs,
- 64);
- gen6_avc_surface->dmv_bottom =
- dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- 68 * width_in_mbs * height_in_mbs,
- 64);
- assert(gen6_avc_surface->dmv_top);
- assert(gen6_avc_surface->dmv_bottom);
- obj_surface->private_data = gen6_avc_surface;
- obj_surface->free_private_data = gen_free_avc_surface;
- }
-
- gen6_avc_surface = (GenAvcSurface *) obj_surface->private_data;
- /* Setup DMV buffer */
- mfc_context->direct_mv_buffers[i*2].bo = gen6_avc_surface->dmv_top;
- mfc_context->direct_mv_buffers[i*2+1].bo = gen6_avc_surface->dmv_bottom;
- dri_bo_reference(gen6_avc_surface->dmv_top);
- dri_bo_reference(gen6_avc_surface->dmv_bottom);
- } else {
- break;
- }
- }
-
- mfc_context->uncompressed_picture_source.bo = encode_state->input_yuv_object->bo;
- dri_bo_reference(mfc_context->uncompressed_picture_source.bo);
-
- obj_buffer = encode_state->coded_buf_object;
- bo = obj_buffer->buffer_store->bo;
- mfc_context->mfc_indirect_pak_bse_object.bo = bo;
- mfc_context->mfc_indirect_pak_bse_object.offset = I965_CODEDBUFFER_HEADER_SIZE;
- mfc_context->mfc_indirect_pak_bse_object.end_offset = ALIGN(obj_buffer->size_element - 0x1000, 0x1000);
- dri_bo_reference(mfc_context->mfc_indirect_pak_bse_object.bo);
-
- dri_bo_map(bo, 1);
- coded_buffer_segment = (struct i965_coded_buffer_segment *)bo->virtual;
- coded_buffer_segment->mapped = 0;
- coded_buffer_segment->codec = encoder_context->codec;
- dri_bo_unmap(bo);
-
- return vaStatus;
-}
-/*
- * The LUT uses the pair of 4-bit units: (shift, base) structure.
- * 2^K * X = value .
- * So it is necessary to convert one cost into the nearest LUT format.
- * The derivation is:
- * 2^K *x = 2^n * (1 + deltaX)
- * k + log2(x) = n + log2(1 + deltaX)
- * log2(x) = n - k + log2(1 + deltaX)
- * As X is in the range of [1, 15]
- * 4 > n - k + log2(1 + deltaX) >= 0
- * => n + log2(1 + deltaX) >= k > n - 4 + log2(1 + deltaX)
- * Then we can derive the corresponding K and get the nearest LUT format.
- */
-int intel_format_lutvalue(int value, int max)
-{
- int ret;
- int logvalue, temp1, temp2;
-
- if (value <= 0)
- return 0;
-
- logvalue = (int)(log2f((float)value));
- if (logvalue < 4) {
- ret = value;
- } else {
- int error, temp_value, base, j, temp_err;
- error = value;
- j = logvalue - 4 + 1;
- ret = -1;
- for(; j <= logvalue; j++) {
- if (j == 0) {
- base = value >> j;
- } else {
- base = (value + (1 << (j - 1)) - 1) >> j;
- }
- if (base >= 16)
- continue;
-
- temp_value = base << j;
- temp_err = abs(value - temp_value);
- if (temp_err < error) {
- error = temp_err;
- ret = (j << 4) | base;
- if (temp_err == 0)
- break;
- }
- }
- }
- temp1 = (ret & 0xf) << ((ret & 0xf0) >> 4);
- temp2 = (max & 0xf) << ((max & 0xf0) >> 4);
- if (temp1 > temp2)
- ret = max;
- return ret;
-
-}
-
-
-#define QP_MAX 52
-#define VP8_QP_MAX 128
-
-
-static float intel_lambda_qp(int qp)
-{
- float value, lambdaf;
- value = qp;
- value = value / 6 - 2;
- if (value < 0)
- value = 0;
- lambdaf = roundf(powf(2, value));
- return lambdaf;
-}
-
-static
-void intel_h264_calc_mbmvcost_qp(int qp,
- int slice_type,
- uint8_t *vme_state_message)
-{
- int m_cost, j, mv_count;
- float lambda, m_costf;
-
- assert(qp <= QP_MAX);
- lambda = intel_lambda_qp(qp);
-
- m_cost = lambda;
- vme_state_message[MODE_CHROMA_INTRA] = 0;
- vme_state_message[MODE_REFID_COST] = intel_format_lutvalue(m_cost, 0x8f);
-
- if (slice_type == SLICE_TYPE_I) {
- vme_state_message[MODE_INTRA_16X16] = 0;
- m_cost = lambda * 4;
- vme_state_message[MODE_INTRA_8X8] = intel_format_lutvalue(m_cost, 0x8f);
- m_cost = lambda * 16;
- vme_state_message[MODE_INTRA_4X4] = intel_format_lutvalue(m_cost, 0x8f);
- m_cost = lambda * 3;
- vme_state_message[MODE_INTRA_NONPRED] = intel_format_lutvalue(m_cost, 0x6f);
- } else {
- m_cost = 0;
- vme_state_message[MODE_INTER_MV0] = intel_format_lutvalue(m_cost, 0x6f);
- for (j = 1; j < 3; j++) {
- m_costf = (log2f((float)(j + 1)) + 1.718f) * lambda;
- m_cost = (int)m_costf;
- vme_state_message[MODE_INTER_MV0 + j] = intel_format_lutvalue(m_cost, 0x6f);
- }
- mv_count = 3;
- for (j = 4; j <= 64; j *= 2) {
- m_costf = (log2f((float)(j + 1)) + 1.718f) * lambda;
- m_cost = (int)m_costf;
- vme_state_message[MODE_INTER_MV0 + mv_count] = intel_format_lutvalue(m_cost, 0x6f);
- mv_count++;
- }
-
- if (qp <= 25) {
- vme_state_message[MODE_INTRA_16X16] = 0x4a;
- vme_state_message[MODE_INTRA_8X8] = 0x4a;
- vme_state_message[MODE_INTRA_4X4] = 0x4a;
- vme_state_message[MODE_INTRA_NONPRED] = 0x4a;
- vme_state_message[MODE_INTER_16X16] = 0x4a;
- vme_state_message[MODE_INTER_16X8] = 0x4a;
- vme_state_message[MODE_INTER_8X8] = 0x4a;
- vme_state_message[MODE_INTER_8X4] = 0x4a;
- vme_state_message[MODE_INTER_4X4] = 0x4a;
- vme_state_message[MODE_INTER_BWD] = 0x2a;
- return;
- }
- m_costf = lambda * 10;
- vme_state_message[MODE_INTRA_16X16] = intel_format_lutvalue(m_cost, 0x8f);
- m_cost = lambda * 14;
- vme_state_message[MODE_INTRA_8X8] = intel_format_lutvalue(m_cost, 0x8f);
- m_cost = lambda * 24;
- vme_state_message[MODE_INTRA_4X4] = intel_format_lutvalue(m_cost, 0x8f);
- m_costf = lambda * 3.5;
- m_cost = m_costf;
- vme_state_message[MODE_INTRA_NONPRED] = intel_format_lutvalue(m_cost, 0x6f);
- if (slice_type == SLICE_TYPE_P) {
- m_costf = lambda * 2.5;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_16X16] = intel_format_lutvalue(m_cost, 0x8f);
- m_costf = lambda * 4;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_16X8] = intel_format_lutvalue(m_cost, 0x8f);
- m_costf = lambda * 1.5;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_8X8] = intel_format_lutvalue(m_cost, 0x6f);
- m_costf = lambda * 3;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_8X4] = intel_format_lutvalue(m_cost, 0x6f);
- m_costf = lambda * 5;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_4X4] = intel_format_lutvalue(m_cost, 0x6f);
- /* BWD is not used in P-frame */
- vme_state_message[MODE_INTER_BWD] = 0;
- } else {
- m_costf = lambda * 2.5;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_16X16] = intel_format_lutvalue(m_cost, 0x8f);
- m_costf = lambda * 5.5;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_16X8] = intel_format_lutvalue(m_cost, 0x8f);
- m_costf = lambda * 3.5;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_8X8] = intel_format_lutvalue(m_cost, 0x6f);
- m_costf = lambda * 5.0;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_8X4] = intel_format_lutvalue(m_cost, 0x6f);
- m_costf = lambda * 6.5;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_4X4] = intel_format_lutvalue(m_cost, 0x6f);
- m_costf = lambda * 1.5;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_BWD] = intel_format_lutvalue(m_cost, 0x6f);
- }
- }
- return;
-}
-
-void intel_vme_update_mbmv_cost(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int qp;
- uint8_t *vme_state_message = (uint8_t *)(vme_context->vme_state_message);
-
- int slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
-
- if (encoder_context->rate_control_mode == VA_RC_CQP)
- qp = pic_param->pic_init_qp + slice_param->slice_qp_delta;
- else
- qp = mfc_context->brc.qp_prime_y[encoder_context->layer.curr_frame_layer_id][slice_type];
-
- if (vme_state_message == NULL)
- return;
-
- intel_h264_calc_mbmvcost_qp(qp, slice_type, vme_state_message);
-}
-
-void intel_vme_vp8_update_mbmv_cost(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncPictureParameterBufferVP8 *pic_param = (VAEncPictureParameterBufferVP8 *)encode_state->pic_param_ext->buffer;
- VAQMatrixBufferVP8 *q_matrix = (VAQMatrixBufferVP8 *)encode_state->q_matrix->buffer;
- int qp, m_cost, j, mv_count;
- uint8_t *vme_state_message = (uint8_t *)(vme_context->vme_state_message);
- float lambda, m_costf;
-
- int is_key_frame = !pic_param->pic_flags.bits.frame_type;
- int slice_type = (is_key_frame ? SLICE_TYPE_I : SLICE_TYPE_P);
-
- if (vme_state_message == NULL)
- return;
-
- if (encoder_context->rate_control_mode == VA_RC_CQP)
- qp = q_matrix->quantization_index[0];
- else
- qp = mfc_context->brc.qp_prime_y[encoder_context->layer.curr_frame_layer_id][slice_type];
-
- lambda = intel_lambda_qp(qp * QP_MAX / VP8_QP_MAX);
-
- m_cost = lambda;
- vme_state_message[MODE_CHROMA_INTRA] = intel_format_lutvalue(m_cost, 0x8f);
-
- if (is_key_frame) {
- vme_state_message[MODE_INTRA_16X16] = 0;
- m_cost = lambda * 16;
- vme_state_message[MODE_INTRA_4X4] = intel_format_lutvalue(m_cost, 0x8f);
- m_cost = lambda * 3;
- vme_state_message[MODE_INTRA_NONPRED] = intel_format_lutvalue(m_cost, 0x6f);
- } else {
- m_cost = 0;
- vme_state_message[MODE_INTER_MV0] = intel_format_lutvalue(m_cost, 0x6f);
- for (j = 1; j < 3; j++) {
- m_costf = (log2f((float)(j + 1)) + 1.718f) * lambda;
- m_cost = (int)m_costf;
- vme_state_message[MODE_INTER_MV0 + j] = intel_format_lutvalue(m_cost, 0x6f);
- }
- mv_count = 3;
- for (j = 4; j <= 64; j *= 2) {
- m_costf = (log2f((float)(j + 1)) + 1.718f) * lambda;
- m_cost = (int)m_costf;
- vme_state_message[MODE_INTER_MV0 + mv_count] = intel_format_lutvalue(m_cost, 0x6f);
- mv_count++;
- }
-
- if (qp < 92 ) {
- vme_state_message[MODE_INTRA_16X16] = 0x4a;
- vme_state_message[MODE_INTRA_4X4] = 0x4a;
- vme_state_message[MODE_INTRA_NONPRED] = 0x4a;
- vme_state_message[MODE_INTER_16X16] = 0x4a;
- vme_state_message[MODE_INTER_16X8] = 0x4a;
- vme_state_message[MODE_INTER_8X8] = 0x4a;
- vme_state_message[MODE_INTER_4X4] = 0x4a;
- vme_state_message[MODE_INTER_BWD] = 0;
- return;
- }
- m_costf = lambda * 10;
- vme_state_message[MODE_INTRA_16X16] = intel_format_lutvalue(m_cost, 0x8f);
- m_cost = lambda * 24;
- vme_state_message[MODE_INTRA_4X4] = intel_format_lutvalue(m_cost, 0x8f);
-
- m_costf = lambda * 3.5;
- m_cost = m_costf;
- vme_state_message[MODE_INTRA_NONPRED] = intel_format_lutvalue(m_cost, 0x6f);
-
- m_costf = lambda * 2.5;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_16X16] = intel_format_lutvalue(m_cost, 0x8f);
- m_costf = lambda * 4;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_16X8] = intel_format_lutvalue(m_cost, 0x8f);
- m_costf = lambda * 1.5;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_8X8] = intel_format_lutvalue(m_cost, 0x6f);
- m_costf = lambda * 5;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_4X4] = intel_format_lutvalue(m_cost, 0x6f);
- /* BWD is not used in P-frame */
- vme_state_message[MODE_INTER_BWD] = 0;
- }
-}
-
-#define MB_SCOREBOARD_A (1 << 0)
-#define MB_SCOREBOARD_B (1 << 1)
-#define MB_SCOREBOARD_C (1 << 2)
-void
-gen7_vme_scoreboard_init(VADriverContextP ctx, struct gen6_vme_context *vme_context)
-{
- vme_context->gpe_context.vfe_desc5.scoreboard0.enable = 1;
- vme_context->gpe_context.vfe_desc5.scoreboard0.type = SCOREBOARD_STALLING;
- vme_context->gpe_context.vfe_desc5.scoreboard0.mask = (MB_SCOREBOARD_A |
- MB_SCOREBOARD_B |
- MB_SCOREBOARD_C);
-
- /* In VME prediction the current mb depends on the neighbour
- * A/B/C macroblock. So the left/up/up-right dependency should
- * be considered.
- */
- vme_context->gpe_context.vfe_desc6.scoreboard1.delta_x0 = -1;
- vme_context->gpe_context.vfe_desc6.scoreboard1.delta_y0 = 0;
- vme_context->gpe_context.vfe_desc6.scoreboard1.delta_x1 = 0;
- vme_context->gpe_context.vfe_desc6.scoreboard1.delta_y1 = -1;
- vme_context->gpe_context.vfe_desc6.scoreboard1.delta_x2 = 1;
- vme_context->gpe_context.vfe_desc6.scoreboard1.delta_y2 = -1;
-
- vme_context->gpe_context.vfe_desc7.dword = 0;
- return;
-}
-
-/* check whether the mb of (x_index, y_index) is out of bound */
-static inline int loop_in_bounds(int x_index, int y_index, int first_mb, int num_mb, int mb_width, int mb_height)
-{
- int mb_index;
- if (x_index < 0 || x_index >= mb_width)
- return -1;
- if (y_index < 0 || y_index >= mb_height)
- return -1;
-
- mb_index = y_index * mb_width + x_index;
- if (mb_index < first_mb || mb_index > (first_mb + num_mb))
- return -1;
- return 0;
-}
-
-void
-gen7_vme_walker_fill_vme_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- int mb_width, int mb_height,
- int kernel,
- int transform_8x8_mode_flag,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- int mb_row;
- int s;
- unsigned int *command_ptr;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int qp,qp_mb,qp_index;
- int slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
-
- if (encoder_context->rate_control_mode == VA_RC_CQP)
- qp = pic_param->pic_init_qp + slice_param->slice_qp_delta;
- else
- qp = mfc_context->brc.qp_prime_y[encoder_context->layer.curr_frame_layer_id][slice_type];
-
-#define USE_SCOREBOARD (1 << 21)
-
- dri_bo_map(vme_context->vme_batchbuffer.bo, 1);
- command_ptr = vme_context->vme_batchbuffer.bo->virtual;
-
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[s]->buffer;
- int first_mb = pSliceParameter->macroblock_address;
- int num_mb = pSliceParameter->num_macroblocks;
- unsigned int mb_intra_ub, score_dep;
- int x_outer, y_outer, x_inner, y_inner;
- int xtemp_outer = 0;
-
- x_outer = first_mb % mb_width;
- y_outer = first_mb / mb_width;
- mb_row = y_outer;
-
- for (; x_outer < (mb_width -2 ) && !loop_in_bounds(x_outer, y_outer, first_mb, num_mb, mb_width, mb_height); ) {
- x_inner = x_outer;
- y_inner = y_outer;
- for (; !loop_in_bounds(x_inner, y_inner, first_mb, num_mb, mb_width, mb_height);) {
- mb_intra_ub = 0;
- score_dep = 0;
- if (x_inner != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- score_dep |= MB_SCOREBOARD_A;
- }
- if (y_inner != mb_row) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
- score_dep |= MB_SCOREBOARD_B;
- if (x_inner != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
- if (x_inner != (mb_width -1)) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- score_dep |= MB_SCOREBOARD_C;
- }
- }
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (9 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = USE_SCOREBOARD;
- /* Indirect data */
- *command_ptr++ = 0;
- /* the (X, Y) term of scoreboard */
- *command_ptr++ = ((y_inner << 16) | x_inner);
- *command_ptr++ = score_dep;
- /*inline data */
- *command_ptr++ = (mb_width << 16 | y_inner << 8 | x_inner);
- *command_ptr++ = ((1 << 18) | (1 << 16) | transform_8x8_mode_flag | (mb_intra_ub << 8));
- /* QP occupies one byte */
- if (vme_context->roi_enabled) {
- qp_index = y_inner * mb_width + x_inner;
- qp_mb = *(vme_context->qp_per_mb + qp_index);
- } else
- qp_mb = qp;
- *command_ptr++ = qp_mb;
- x_inner -= 2;
- y_inner += 1;
- }
- x_outer += 1;
- }
-
- xtemp_outer = mb_width - 2;
- if (xtemp_outer < 0)
- xtemp_outer = 0;
- x_outer = xtemp_outer;
- y_outer = first_mb / mb_width;
- for (;!loop_in_bounds(x_outer, y_outer, first_mb, num_mb, mb_width, mb_height); ) {
- y_inner = y_outer;
- x_inner = x_outer;
- for (; !loop_in_bounds(x_inner, y_inner, first_mb, num_mb, mb_width, mb_height);) {
- mb_intra_ub = 0;
- score_dep = 0;
- if (x_inner != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- score_dep |= MB_SCOREBOARD_A;
- }
- if (y_inner != mb_row) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
- score_dep |= MB_SCOREBOARD_B;
- if (x_inner != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
-
- if (x_inner != (mb_width -1)) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- score_dep |= MB_SCOREBOARD_C;
- }
- }
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (9 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = USE_SCOREBOARD;
- /* Indirect data */
- *command_ptr++ = 0;
- /* the (X, Y) term of scoreboard */
- *command_ptr++ = ((y_inner << 16) | x_inner);
- *command_ptr++ = score_dep;
- /*inline data */
- *command_ptr++ = (mb_width << 16 | y_inner << 8 | x_inner);
- *command_ptr++ = ((1 << 18) | (1 << 16) | transform_8x8_mode_flag | (mb_intra_ub << 8));
- /* qp occupies one byte */
- if (vme_context->roi_enabled) {
- qp_index = y_inner * mb_width + x_inner;
- qp_mb = *(vme_context->qp_per_mb + qp_index);
- } else
- qp_mb = qp;
- *command_ptr++ = qp_mb;
-
- x_inner -= 2;
- y_inner += 1;
- }
- x_outer++;
- if (x_outer >= mb_width) {
- y_outer += 1;
- x_outer = xtemp_outer;
- }
- }
- }
-
- *command_ptr++ = 0;
- *command_ptr++ = MI_BATCH_BUFFER_END;
-
- dri_bo_unmap(vme_context->vme_batchbuffer.bo);
-}
-
-static uint8_t
-intel_get_ref_idx_state_1(VAPictureH264 *va_pic, unsigned int frame_store_id)
-{
- unsigned int is_long_term =
- !!(va_pic->flags & VA_PICTURE_H264_LONG_TERM_REFERENCE);
- unsigned int is_top_field =
- !!(va_pic->flags & VA_PICTURE_H264_TOP_FIELD);
- unsigned int is_bottom_field =
- !!(va_pic->flags & VA_PICTURE_H264_BOTTOM_FIELD);
-
- return ((is_long_term << 6) |
- ((is_top_field ^ is_bottom_field ^ 1) << 5) |
- (frame_store_id << 1) |
- ((is_top_field ^ 1) & is_bottom_field));
-}
-
-void
-intel_mfc_avc_ref_idx_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- int slice_type;
- struct object_surface *obj_surface;
- unsigned int fref_entry, bref_entry;
- int frame_index, i;
- VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
-
- fref_entry = 0x80808080;
- bref_entry = 0x80808080;
- slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
-
- if (slice_type == SLICE_TYPE_P || slice_type == SLICE_TYPE_B) {
- int ref_idx_l0 = (vme_context->ref_index_in_mb[0] & 0xff);
-
- if (ref_idx_l0 > 3) {
- WARN_ONCE("ref_idx_l0 is out of range\n");
- ref_idx_l0 = 0;
- }
-
- obj_surface = vme_context->used_reference_objects[0];
- frame_index = -1;
- for (i = 0; i < 16; i++) {
- if (obj_surface &&
- obj_surface == encode_state->reference_objects[i]) {
- frame_index = i;
- break;
- }
- }
- if (frame_index == -1) {
- WARN_ONCE("RefPicList0 is not found in DPB!\n");
- } else {
- int ref_idx_l0_shift = ref_idx_l0 * 8;
- fref_entry &= ~(0xFF << ref_idx_l0_shift);
- fref_entry += (intel_get_ref_idx_state_1(vme_context->used_references[0], frame_index) << ref_idx_l0_shift);
- }
- }
-
- if (slice_type == SLICE_TYPE_B) {
- int ref_idx_l1 = (vme_context->ref_index_in_mb[1] & 0xff);
-
- if (ref_idx_l1 > 3) {
- WARN_ONCE("ref_idx_l1 is out of range\n");
- ref_idx_l1 = 0;
- }
-
- obj_surface = vme_context->used_reference_objects[1];
- frame_index = -1;
- for (i = 0; i < 16; i++) {
- if (obj_surface &&
- obj_surface == encode_state->reference_objects[i]) {
- frame_index = i;
- break;
- }
- }
- if (frame_index == -1) {
- WARN_ONCE("RefPicList1 is not found in DPB!\n");
- } else {
- int ref_idx_l1_shift = ref_idx_l1 * 8;
- bref_entry &= ~(0xFF << ref_idx_l1_shift);
- bref_entry += (intel_get_ref_idx_state_1(vme_context->used_references[1], frame_index) << ref_idx_l1_shift);
- }
- }
-
- BEGIN_BCS_BATCH(batch, 10);
- OUT_BCS_BATCH(batch, MFX_AVC_REF_IDX_STATE | 8);
- OUT_BCS_BATCH(batch, 0); //Select L0
- OUT_BCS_BATCH(batch, fref_entry); //Only 1 reference
- for(i = 0; i < 7; i++) {
- OUT_BCS_BATCH(batch, 0x80808080);
- }
- ADVANCE_BCS_BATCH(batch);
-
- BEGIN_BCS_BATCH(batch, 10);
- OUT_BCS_BATCH(batch, MFX_AVC_REF_IDX_STATE | 8);
- OUT_BCS_BATCH(batch, 1); //Select L1
- OUT_BCS_BATCH(batch, bref_entry); //Only 1 reference
- for(i = 0; i < 7; i++) {
- OUT_BCS_BATCH(batch, 0x80808080);
- }
- ADVANCE_BCS_BATCH(batch);
-}
-
-
-void intel_vme_mpeg2_state_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- uint32_t *vme_state_message = (uint32_t *)(vme_context->vme_state_message);
- VAEncSequenceParameterBufferMPEG2 *seq_param = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = ALIGN(seq_param->picture_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->picture_height, 16) / 16;
- uint32_t mv_x, mv_y;
- VAEncSliceParameterBufferMPEG2 *slice_param = NULL;
- VAEncPictureParameterBufferMPEG2 *pic_param = NULL;
- slice_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[0]->buffer;
-
- if (vme_context->mpeg2_level == MPEG2_LEVEL_LOW) {
- mv_x = 512;
- mv_y = 64;
- } else if (vme_context->mpeg2_level == MPEG2_LEVEL_MAIN) {
- mv_x = 1024;
- mv_y = 128;
- } else if (vme_context->mpeg2_level == MPEG2_LEVEL_HIGH) {
- mv_x = 2048;
- mv_y = 128;
- } else {
- WARN_ONCE("Incorrect Mpeg2 level setting!\n");
- mv_x = 512;
- mv_y = 64;
- }
-
- pic_param = (VAEncPictureParameterBufferMPEG2 *)encode_state->pic_param_ext->buffer;
- if (pic_param->picture_type != VAEncPictureTypeIntra) {
- int qp, m_cost, j, mv_count;
- float lambda, m_costf;
- slice_param = (VAEncSliceParameterBufferMPEG2 *)
- encode_state->slice_params_ext[0]->buffer;
- qp = slice_param->quantiser_scale_code;
- lambda = intel_lambda_qp(qp);
- /* No Intra prediction. So it is zero */
- vme_state_message[MODE_INTRA_8X8] = 0;
- vme_state_message[MODE_INTRA_4X4] = 0;
- vme_state_message[MODE_INTER_MV0] = 0;
- for (j = 1; j < 3; j++) {
- m_costf = (log2f((float)(j + 1)) + 1.718f) * lambda;
- m_cost = (int)m_costf;
- vme_state_message[MODE_INTER_MV0 + j] = intel_format_lutvalue(m_cost, 0x6f);
- }
- mv_count = 3;
- for (j = 4; j <= 64; j *= 2) {
- m_costf = (log2f((float)(j + 1)) + 1.718f) * lambda;
- m_cost = (int)m_costf;
- vme_state_message[MODE_INTER_MV0 + mv_count] =
- intel_format_lutvalue(m_cost, 0x6f);
- mv_count++;
- }
- m_cost = lambda;
- /* It can only perform the 16x16 search. So mode cost can be ignored for
- * the other mode. for example: 16x8/8x8
- */
- vme_state_message[MODE_INTRA_16X16] = intel_format_lutvalue(m_cost, 0x8f);
- vme_state_message[MODE_INTER_16X16] = intel_format_lutvalue(m_cost, 0x8f);
-
- vme_state_message[MODE_INTER_16X8] = 0;
- vme_state_message[MODE_INTER_8X8] = 0;
- vme_state_message[MODE_INTER_8X4] = 0;
- vme_state_message[MODE_INTER_4X4] = 0;
- vme_state_message[MODE_INTER_BWD] = intel_format_lutvalue(m_cost, 0x6f);
-
- }
- vme_state_message[MPEG2_MV_RANGE] = (mv_y << 16) | (mv_x);
-
- vme_state_message[MPEG2_PIC_WIDTH_HEIGHT] = (height_in_mbs << 16) |
- width_in_mbs;
-}
-
-void
-gen7_vme_mpeg2_walker_fill_vme_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- int mb_width, int mb_height,
- int kernel,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- unsigned int *command_ptr;
-
-#define MPEG2_SCOREBOARD (1 << 21)
-
- dri_bo_map(vme_context->vme_batchbuffer.bo, 1);
- command_ptr = vme_context->vme_batchbuffer.bo->virtual;
-
- {
- unsigned int mb_intra_ub, score_dep;
- int x_outer, y_outer, x_inner, y_inner;
- int xtemp_outer = 0;
- int first_mb = 0;
- int num_mb = mb_width * mb_height;
-
- x_outer = 0;
- y_outer = 0;
-
-
- for (; x_outer < (mb_width -2 ) && !loop_in_bounds(x_outer, y_outer, first_mb, num_mb, mb_width, mb_height); ) {
- x_inner = x_outer;
- y_inner = y_outer;
- for (; !loop_in_bounds(x_inner, y_inner, first_mb, num_mb, mb_width, mb_height);) {
- mb_intra_ub = 0;
- score_dep = 0;
- if (x_inner != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- score_dep |= MB_SCOREBOARD_A;
- }
- if (y_inner != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
- score_dep |= MB_SCOREBOARD_B;
-
- if (x_inner != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
-
- if (x_inner != (mb_width -1)) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- score_dep |= MB_SCOREBOARD_C;
- }
- }
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (8 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = MPEG2_SCOREBOARD;
- /* Indirect data */
- *command_ptr++ = 0;
- /* the (X, Y) term of scoreboard */
- *command_ptr++ = ((y_inner << 16) | x_inner);
- *command_ptr++ = score_dep;
- /*inline data */
- *command_ptr++ = (mb_width << 16 | y_inner << 8 | x_inner);
- *command_ptr++ = ((1 << 18) | (1 << 16) | (mb_intra_ub << 8));
- x_inner -= 2;
- y_inner += 1;
- }
- x_outer += 1;
- }
-
- xtemp_outer = mb_width - 2;
- if (xtemp_outer < 0)
- xtemp_outer = 0;
- x_outer = xtemp_outer;
- y_outer = 0;
- for (;!loop_in_bounds(x_outer, y_outer, first_mb, num_mb, mb_width, mb_height); ) {
- y_inner = y_outer;
- x_inner = x_outer;
- for (; !loop_in_bounds(x_inner, y_inner, first_mb, num_mb, mb_width, mb_height);) {
- mb_intra_ub = 0;
- score_dep = 0;
- if (x_inner != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- score_dep |= MB_SCOREBOARD_A;
- }
- if (y_inner != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
- score_dep |= MB_SCOREBOARD_B;
-
- if (x_inner != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
-
- if (x_inner != (mb_width -1)) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- score_dep |= MB_SCOREBOARD_C;
- }
- }
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (8 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = MPEG2_SCOREBOARD;
- /* Indirect data */
- *command_ptr++ = 0;
- /* the (X, Y) term of scoreboard */
- *command_ptr++ = ((y_inner << 16) | x_inner);
- *command_ptr++ = score_dep;
- /*inline data */
- *command_ptr++ = (mb_width << 16 | y_inner << 8 | x_inner);
- *command_ptr++ = ((1 << 18) | (1 << 16) | (mb_intra_ub << 8));
-
- x_inner -= 2;
- y_inner += 1;
- }
- x_outer++;
- if (x_outer >= mb_width) {
- y_outer += 1;
- x_outer = xtemp_outer;
- }
- }
- }
-
- *command_ptr++ = 0;
- *command_ptr++ = MI_BATCH_BUFFER_END;
-
- dri_bo_unmap(vme_context->vme_batchbuffer.bo);
- return;
-}
-
-static int
-avc_temporal_find_surface(VAPictureH264 *curr_pic,
- VAPictureH264 *ref_list,
- int num_pictures,
- int dir)
-{
- int i, found = -1, min = 0x7FFFFFFF;
-
- for (i = 0; i < num_pictures; i++) {
- int tmp;
-
- if ((ref_list[i].flags & VA_PICTURE_H264_INVALID) ||
- (ref_list[i].picture_id == VA_INVALID_SURFACE))
- break;
-
- tmp = curr_pic->TopFieldOrderCnt - ref_list[i].TopFieldOrderCnt;
-
- if (dir)
- tmp = -tmp;
-
- if (tmp > 0 && tmp < min) {
- min = tmp;
- found = i;
- }
- }
-
- return found;
-}
-
-void
-intel_avc_vme_reference_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int list_index,
- int surface_index,
- void (* vme_source_surface_state)(
- VADriverContextP ctx,
- int index,
- struct object_surface *obj_surface,
- struct intel_encoder_context *encoder_context))
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct object_surface *obj_surface = NULL;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VASurfaceID ref_surface_id;
- VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int max_num_references;
- VAPictureH264 *curr_pic;
- VAPictureH264 *ref_list;
- int ref_idx;
-
- if (list_index == 0) {
- max_num_references = pic_param->num_ref_idx_l0_active_minus1 + 1;
- ref_list = slice_param->RefPicList0;
- } else {
- max_num_references = pic_param->num_ref_idx_l1_active_minus1 + 1;
- ref_list = slice_param->RefPicList1;
- }
-
- if (max_num_references == 1) {
- if (list_index == 0) {
- ref_surface_id = slice_param->RefPicList0[0].picture_id;
- vme_context->used_references[0] = &slice_param->RefPicList0[0];
- } else {
- ref_surface_id = slice_param->RefPicList1[0].picture_id;
- vme_context->used_references[1] = &slice_param->RefPicList1[0];
- }
-
- if (ref_surface_id != VA_INVALID_SURFACE)
- obj_surface = SURFACE(ref_surface_id);
-
- if (!obj_surface ||
- !obj_surface->bo) {
- obj_surface = encode_state->reference_objects[list_index];
- vme_context->used_references[list_index] = &pic_param->ReferenceFrames[list_index];
- }
-
- ref_idx = 0;
- } else {
- curr_pic = &pic_param->CurrPic;
-
- /* select the reference frame in temporal space */
- ref_idx = avc_temporal_find_surface(curr_pic, ref_list, max_num_references, list_index == 1);
- ref_surface_id = ref_list[ref_idx].picture_id;
-
- if (ref_surface_id != VA_INVALID_SURFACE) /* otherwise warning later */
- obj_surface = SURFACE(ref_surface_id);
-
- vme_context->used_reference_objects[list_index] = obj_surface;
- vme_context->used_references[list_index] = &ref_list[ref_idx];
- }
-
- if (obj_surface &&
- obj_surface->bo) {
- assert(ref_idx >= 0);
- vme_context->used_reference_objects[list_index] = obj_surface;
- vme_source_surface_state(ctx, surface_index, obj_surface, encoder_context);
- vme_context->ref_index_in_mb[list_index] = (ref_idx << 24 |
- ref_idx << 16 |
- ref_idx << 8 |
- ref_idx);
- } else {
- vme_context->used_reference_objects[list_index] = NULL;
- vme_context->used_references[list_index] = NULL;
- vme_context->ref_index_in_mb[list_index] = 0;
- }
-}
-
-void intel_avc_slice_insert_packed_data(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int slice_index,
- struct intel_batchbuffer *slice_batch)
-{
- int count, i, start_index;
- unsigned int length_in_bits;
- VAEncPackedHeaderParameterBuffer *param = NULL;
- unsigned int *header_data = NULL;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- int slice_header_index;
-
- if (encode_state->slice_header_index[slice_index] == 0)
- slice_header_index = -1;
- else
- slice_header_index = (encode_state->slice_header_index[slice_index] & SLICE_PACKED_DATA_INDEX_MASK);
-
- count = encode_state->slice_rawdata_count[slice_index];
- start_index = (encode_state->slice_rawdata_index[slice_index] & SLICE_PACKED_DATA_INDEX_MASK);
-
- for (i = 0; i < count; i++) {
- unsigned int skip_emul_byte_cnt;
-
- header_data = (unsigned int *)encode_state->packed_header_data_ext[start_index + i]->buffer;
-
- param = (VAEncPackedHeaderParameterBuffer *)
- (encode_state->packed_header_params_ext[start_index + i]->buffer);
-
- /* skip the slice header packed data type as it is lastly inserted */
- if (param->type == VAEncPackedHeaderSlice)
- continue;
-
- length_in_bits = param->bit_length;
-
- skip_emul_byte_cnt = intel_avc_find_skipemulcnt((unsigned char *)header_data, length_in_bits);
-
- /* as the slice header is still required, the last header flag is set to
- * zero.
- */
- mfc_context->insert_object(ctx,
- encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- skip_emul_byte_cnt,
- 0,
- 0,
- !param->has_emulation_bytes,
- slice_batch);
- }
-
- if (slice_header_index == -1) {
- unsigned char *slice_header = NULL;
- int slice_header_length_in_bits = 0;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[slice_index]->buffer;
-
- /* No slice header data is passed. And the driver needs to generate it */
- /* For the Normal H264 */
- slice_header_length_in_bits = build_avc_slice_header(pSequenceParameter,
- pPicParameter,
- pSliceParameter,
- &slice_header);
- mfc_context->insert_object(ctx, encoder_context,
- (unsigned int *)slice_header,
- ALIGN(slice_header_length_in_bits, 32) >> 5,
- slice_header_length_in_bits & 0x1f,
- 5, /* first 5 bytes are start code + nal unit type */
- 1, 0, 1, slice_batch);
-
- free(slice_header);
- } else {
- unsigned int skip_emul_byte_cnt;
-
- header_data = (unsigned int *)encode_state->packed_header_data_ext[slice_header_index]->buffer;
-
- param = (VAEncPackedHeaderParameterBuffer *)
- (encode_state->packed_header_params_ext[slice_header_index]->buffer);
- length_in_bits = param->bit_length;
-
- /* as the slice header is the last header data for one slice,
- * the last header flag is set to one.
- */
- skip_emul_byte_cnt = intel_avc_find_skipemulcnt((unsigned char *)header_data, length_in_bits);
-
- mfc_context->insert_object(ctx,
- encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- skip_emul_byte_cnt,
- 1,
- 0,
- !param->has_emulation_bytes,
- slice_batch);
- }
-
- return;
-}
-
-void
-intel_h264_initialize_mbmv_cost(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int qp;
- dri_bo *bo;
- uint8_t *cost_table;
-
- int slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
-
-
- if (slice_type == SLICE_TYPE_I) {
- if (vme_context->i_qp_cost_table)
- return;
- } else if (slice_type == SLICE_TYPE_P) {
- if (vme_context->p_qp_cost_table)
- return;
- } else {
- if (vme_context->b_qp_cost_table)
- return;
- }
-
- /* It is enough to allocate 32 bytes for each qp. */
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "cost_table ",
- QP_MAX * 32,
- 64);
-
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- cost_table = (uint8_t *)(bo->virtual);
- for (qp = 0; qp < QP_MAX; qp++) {
- intel_h264_calc_mbmvcost_qp(qp, slice_type, cost_table);
- cost_table += 32;
- }
-
- dri_bo_unmap(bo);
-
- if (slice_type == SLICE_TYPE_I) {
- vme_context->i_qp_cost_table = bo;
- } else if (slice_type == SLICE_TYPE_P) {
- vme_context->p_qp_cost_table = bo;
- } else {
- vme_context->b_qp_cost_table = bo;
- }
-
- vme_context->cost_table_size = QP_MAX * 32;
- return;
-}
-
-extern void
-intel_h264_setup_cost_surface(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- dri_bo *bo;
-
-
- struct i965_buffer_surface cost_table;
-
- int slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
-
-
- if (slice_type == SLICE_TYPE_I) {
- bo = vme_context->i_qp_cost_table;
- } else if (slice_type == SLICE_TYPE_P) {
- bo = vme_context->p_qp_cost_table;
- } else {
- bo = vme_context->b_qp_cost_table;
- }
-
- cost_table.bo = bo;
- cost_table.num_blocks = QP_MAX;
- cost_table.pitch = 16;
- cost_table.size_block = 32;
-
- vme_context->vme_buffer_suface_setup(ctx,
- &vme_context->gpe_context,
- &cost_table,
- binding_table_offset,
- surface_state_offset);
-}
-
-/*
- * the idea of conversion between qp and qstep comes from scaling process
- * of transform coeff for Luma component in H264 spec.
- * 2^(Qpy / 6 - 6)
- * In order to avoid too small qstep, it is multiplied by 16.
- */
-static float intel_h264_qp_qstep(int qp)
-{
- float value, qstep;
- value = qp;
- value = value / 6 - 2;
- qstep = powf(2, value);
- return qstep;
-}
-
-static int intel_h264_qstep_qp(float qstep)
-{
- float qp;
-
- qp = 12.0f + 6.0f * log2f(qstep);
-
- return floorf(qp);
-}
-
-/*
- * Currently it is based on the following assumption:
- * SUM(roi_area * 1 / roi_qstep) + non_area * 1 / nonroi_qstep =
- * total_aread * 1 / baseqp_qstep
- *
- * qstep is the linearized quantizer of H264 quantizer
- */
-typedef struct {
- int row_start_in_mb;
- int row_end_in_mb;
- int col_start_in_mb;
- int col_end_in_mb;
-
- int width_mbs;
- int height_mbs;
-
- int roi_qp;
-} ROIRegionParam;
-
-static VAStatus
-intel_h264_enc_roi_cbr(VADriverContextP ctx,
- int base_qp,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- int nonroi_qp;
- int min_qp = MAX(1, encoder_context->brc.min_qp);
- bool quickfill = 0;
-
- ROIRegionParam param_regions[I965_MAX_NUM_ROI_REGIONS];
- int num_roi = 0;
- int i,j;
-
- float temp;
- float qstep_nonroi, qstep_base;
- float roi_area, total_area, nonroi_area;
- float sum_roi;
-
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
- int mbs_in_picture = width_in_mbs * height_in_mbs;
-
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAStatus vaStatus = VA_STATUS_SUCCESS;
-
- /* currently roi_value_is_qp_delta is the only supported mode of priority.
- *
- * qp_delta set by user is added to base_qp, which is then clapped by
- * [base_qp-min_delta, base_qp+max_delta].
- */
- ASSERT_RET(encoder_context->brc.roi_value_is_qp_delta, VA_STATUS_ERROR_INVALID_PARAMETER);
-
- num_roi = encoder_context->brc.num_roi;
-
- /* when the base_qp is lower than 12, the quality is quite good based
- * on the H264 test experience.
- * In such case it is unnecessary to adjust the quality for ROI region.
- */
- if (base_qp <= 12) {
- nonroi_qp = base_qp;
- quickfill = 1;
- goto qp_fill;
- }
-
- sum_roi = 0.0f;
- roi_area = 0;
- for (i = 0; i < num_roi; i++) {
- int row_start, row_end, col_start, col_end;
- int roi_width_mbs, roi_height_mbs;
- int mbs_in_roi;
- int roi_qp;
- float qstep_roi;
-
- col_start = encoder_context->brc.roi[i].left;
- col_end = encoder_context->brc.roi[i].right;
- row_start = encoder_context->brc.roi[i].top;
- row_end = encoder_context->brc.roi[i].bottom;
-
- col_start = col_start / 16;
- col_end = (col_end + 15) / 16;
- row_start = row_start / 16;
- row_end = (row_end + 15) / 16;
-
- roi_width_mbs = col_end - col_start;
- roi_height_mbs = row_end - row_start;
- mbs_in_roi = roi_width_mbs * roi_height_mbs;
-
- param_regions[i].row_start_in_mb = row_start;
- param_regions[i].row_end_in_mb = row_end;
- param_regions[i].col_start_in_mb = col_start;
- param_regions[i].col_end_in_mb = col_end;
- param_regions[i].width_mbs = roi_width_mbs;
- param_regions[i].height_mbs = roi_height_mbs;
-
- roi_qp = base_qp + encoder_context->brc.roi[i].value;
- BRC_CLIP(roi_qp, min_qp, 51);
-
- param_regions[i].roi_qp = roi_qp;
- qstep_roi = intel_h264_qp_qstep(roi_qp);
-
- roi_area += mbs_in_roi;
- sum_roi += mbs_in_roi / qstep_roi;
- }
-
- total_area = mbs_in_picture;
- nonroi_area = total_area - roi_area;
-
- qstep_base = intel_h264_qp_qstep(base_qp);
- temp = (total_area / qstep_base - sum_roi);
-
- if (temp < 0) {
- nonroi_qp = 51;
- } else {
- qstep_nonroi = nonroi_area / temp;
- nonroi_qp = intel_h264_qstep_qp(qstep_nonroi);
- }
-
- BRC_CLIP(nonroi_qp, min_qp, 51);
-
-qp_fill:
- memset(vme_context->qp_per_mb, nonroi_qp, mbs_in_picture);
- if (!quickfill) {
- char *qp_ptr;
-
- for (i = 0; i < num_roi; i++) {
- for (j = param_regions[i].row_start_in_mb; j < param_regions[i].row_end_in_mb; j++) {
- qp_ptr = vme_context->qp_per_mb + (j * width_in_mbs) + param_regions[i].col_start_in_mb;
- memset(qp_ptr, param_regions[i].roi_qp, param_regions[i].width_mbs);
- }
- }
- }
- return vaStatus;
-}
-
-extern void
-intel_h264_enc_roi_config(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- char *qp_ptr;
- int i, j;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
-
- int row_start, row_end, col_start, col_end;
- int num_roi = 0;
-
- vme_context->roi_enabled = 0;
- /* Restriction: Disable ROI when multi-slice is enabled */
- if (!encoder_context->context_roi || (encode_state->num_slice_params_ext > 1))
- return;
-
- vme_context->roi_enabled = !!encoder_context->brc.num_roi;
-
- if (!vme_context->roi_enabled)
- return;
-
- if ((vme_context->saved_width_mbs != width_in_mbs) ||
- (vme_context->saved_height_mbs != height_in_mbs)) {
- free(vme_context->qp_per_mb);
- vme_context->qp_per_mb = calloc(1, width_in_mbs * height_in_mbs);
-
- vme_context->saved_width_mbs = width_in_mbs;
- vme_context->saved_height_mbs = height_in_mbs;
- assert(vme_context->qp_per_mb);
- }
- if (encoder_context->rate_control_mode == VA_RC_CBR) {
- /*
- * TODO: More complex Qp adjust needs to be added.
- * Currently it is initialized to slice_qp.
- */
- VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int qp;
- int slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
-
- qp = mfc_context->brc.qp_prime_y[encoder_context->layer.curr_frame_layer_id][slice_type];
- intel_h264_enc_roi_cbr(ctx, qp, encode_state, encoder_context);
-
- } else if (encoder_context->rate_control_mode == VA_RC_CQP){
- VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int qp;
- int min_qp = MAX(1, encoder_context->brc.min_qp);
-
- qp = pic_param->pic_init_qp + slice_param->slice_qp_delta;
- memset(vme_context->qp_per_mb, qp, width_in_mbs * height_in_mbs);
-
-
- for (j = num_roi; j ; j--) {
- int qp_delta, qp_clip;
-
- col_start = encoder_context->brc.roi[i].left;
- col_end = encoder_context->brc.roi[i].right;
- row_start = encoder_context->brc.roi[i].top;
- row_end = encoder_context->brc.roi[i].bottom;
-
- col_start = col_start / 16;
- col_end = (col_end + 15) / 16;
- row_start = row_start / 16;
- row_end = (row_end + 15) / 16;
-
- qp_delta = encoder_context->brc.roi[i].value;
- qp_clip = qp + qp_delta;
-
- BRC_CLIP(qp_clip, min_qp, 51);
-
- for (i = row_start; i < row_end; i++) {
- qp_ptr = vme_context->qp_per_mb + (i * width_in_mbs) + col_start;
- memset(qp_ptr, qp_clip, (col_end - col_start));
- }
- }
- } else {
- /*
- * TODO: Disable it for non CBR-CQP.
- */
- vme_context->roi_enabled = 0;
- }
-
- if (vme_context->roi_enabled && IS_GEN7(i965->intel.device_info))
- encoder_context->soft_batch_force = 1;
-
- return;
-}
-
-/* HEVC */
-static int
-hevc_temporal_find_surface(VAPictureHEVC *curr_pic,
- VAPictureHEVC *ref_list,
- int num_pictures,
- int dir)
-{
- int i, found = -1, min = 0x7FFFFFFF;
-
- for (i = 0; i < num_pictures; i++) {
- int tmp;
-
- if ((ref_list[i].flags & VA_PICTURE_HEVC_INVALID) ||
- (ref_list[i].picture_id == VA_INVALID_SURFACE))
- break;
-
- tmp = curr_pic->pic_order_cnt - ref_list[i].pic_order_cnt;
-
- if (dir)
- tmp = -tmp;
-
- if (tmp > 0 && tmp < min) {
- min = tmp;
- found = i;
- }
- }
-
- return found;
-}
-void
-intel_hevc_vme_reference_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int list_index,
- int surface_index,
- void (* vme_source_surface_state)(
- VADriverContextP ctx,
- int index,
- struct object_surface *obj_surface,
- struct intel_encoder_context *encoder_context))
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct object_surface *obj_surface = NULL;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VASurfaceID ref_surface_id;
- VAEncSequenceParameterBufferHEVC *pSequenceParameter = (VAEncSequenceParameterBufferHEVC *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferHEVC *pic_param = (VAEncPictureParameterBufferHEVC *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferHEVC *slice_param = (VAEncSliceParameterBufferHEVC *)encode_state->slice_params_ext[0]->buffer;
- int max_num_references;
- VAPictureHEVC *curr_pic;
- VAPictureHEVC *ref_list;
- int ref_idx;
- unsigned int is_hevc10 = 0;
- GenHevcSurface *hevc_encoder_surface = NULL;
-
- if((pSequenceParameter->seq_fields.bits.bit_depth_luma_minus8 > 0)
- || (pSequenceParameter->seq_fields.bits.bit_depth_chroma_minus8 > 0))
- is_hevc10 = 1;
-
- if (list_index == 0) {
- max_num_references = pic_param->num_ref_idx_l0_default_active_minus1 + 1;
- ref_list = slice_param->ref_pic_list0;
- } else {
- max_num_references = pic_param->num_ref_idx_l1_default_active_minus1 + 1;
- ref_list = slice_param->ref_pic_list1;
- }
-
- if (max_num_references == 1) {
- if (list_index == 0) {
- ref_surface_id = slice_param->ref_pic_list0[0].picture_id;
- vme_context->used_references[0] = &slice_param->ref_pic_list0[0];
- } else {
- ref_surface_id = slice_param->ref_pic_list1[0].picture_id;
- vme_context->used_references[1] = &slice_param->ref_pic_list1[0];
- }
-
- if (ref_surface_id != VA_INVALID_SURFACE)
- obj_surface = SURFACE(ref_surface_id);
-
- if (!obj_surface ||
- !obj_surface->bo) {
- obj_surface = encode_state->reference_objects[list_index];
- vme_context->used_references[list_index] = &pic_param->reference_frames[list_index];
- }
-
- ref_idx = 0;
- } else {
- curr_pic = &pic_param->decoded_curr_pic;
-
- /* select the reference frame in temporal space */
- ref_idx = hevc_temporal_find_surface(curr_pic, ref_list, max_num_references, list_index == 1);
- ref_surface_id = ref_list[ref_idx].picture_id;
-
- if (ref_surface_id != VA_INVALID_SURFACE) /* otherwise warning later */
- obj_surface = SURFACE(ref_surface_id);
-
- vme_context->used_reference_objects[list_index] = obj_surface;
- vme_context->used_references[list_index] = &ref_list[ref_idx];
- }
-
- if (obj_surface &&
- obj_surface->bo) {
- assert(ref_idx >= 0);
- vme_context->used_reference_objects[list_index] = obj_surface;
-
- if(is_hevc10){
- hevc_encoder_surface = (GenHevcSurface *) obj_surface->private_data;
- assert(hevc_encoder_surface);
- obj_surface = hevc_encoder_surface->nv12_surface_obj;
- }
- vme_source_surface_state(ctx, surface_index, obj_surface, encoder_context);
- vme_context->ref_index_in_mb[list_index] = (ref_idx << 24 |
- ref_idx << 16 |
- ref_idx << 8 |
- ref_idx);
- } else {
- vme_context->used_reference_objects[list_index] = NULL;
- vme_context->used_references[list_index] = NULL;
- vme_context->ref_index_in_mb[list_index] = 0;
- }
-}
-
-void intel_vme_hevc_update_mbmv_cost(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncPictureParameterBufferHEVC *pic_param = (VAEncPictureParameterBufferHEVC *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferHEVC *slice_param = (VAEncSliceParameterBufferHEVC *)encode_state->slice_params_ext[0]->buffer;
- VAEncSequenceParameterBufferHEVC *pSequenceParameter = (VAEncSequenceParameterBufferHEVC *)encode_state->seq_param_ext->buffer;
- int qp, m_cost, j, mv_count;
- uint8_t *vme_state_message = (uint8_t *)(vme_context->vme_state_message);
- float lambda, m_costf;
-
- /* here no SI SP slice for HEVC, do not need slice fixup */
- int slice_type = slice_param->slice_type;
-
-
- qp = pic_param->pic_init_qp + slice_param->slice_qp_delta;
-
- if(encoder_context->rate_control_mode == VA_RC_CBR)
- {
- qp = mfc_context->bit_rate_control_context[slice_type].QpPrimeY;
- if(slice_type == HEVC_SLICE_B) {
- if(pSequenceParameter->ip_period == 1)
- {
- slice_type = HEVC_SLICE_P;
- qp = mfc_context->bit_rate_control_context[HEVC_SLICE_P].QpPrimeY;
-
- }else if(mfc_context->vui_hrd.i_frame_number % pSequenceParameter->ip_period == 1){
- slice_type = HEVC_SLICE_P;
- qp = mfc_context->bit_rate_control_context[HEVC_SLICE_P].QpPrimeY;
- }
- }
-
- }
-
- if (vme_state_message == NULL)
- return;
-
- assert(qp <= QP_MAX);
- lambda = intel_lambda_qp(qp);
- if (slice_type == HEVC_SLICE_I) {
- vme_state_message[MODE_INTRA_16X16] = 0;
- m_cost = lambda * 4;
- vme_state_message[MODE_INTRA_8X8] = intel_format_lutvalue(m_cost, 0x8f);
- m_cost = lambda * 16;
- vme_state_message[MODE_INTRA_4X4] = intel_format_lutvalue(m_cost, 0x8f);
- m_cost = lambda * 3;
- vme_state_message[MODE_INTRA_NONPRED] = intel_format_lutvalue(m_cost, 0x6f);
- } else {
- m_cost = 0;
- vme_state_message[MODE_INTER_MV0] = intel_format_lutvalue(m_cost, 0x6f);
- for (j = 1; j < 3; j++) {
- m_costf = (log2f((float)(j + 1)) + 1.718f) * lambda;
- m_cost = (int)m_costf;
- vme_state_message[MODE_INTER_MV0 + j] = intel_format_lutvalue(m_cost, 0x6f);
- }
- mv_count = 3;
- for (j = 4; j <= 64; j *= 2) {
- m_costf = (log2f((float)(j + 1)) + 1.718f) * lambda;
- m_cost = (int)m_costf;
- vme_state_message[MODE_INTER_MV0 + mv_count] = intel_format_lutvalue(m_cost, 0x6f);
- mv_count++;
- }
-
- if (qp <= 25) {
- vme_state_message[MODE_INTRA_16X16] = 0x4a;
- vme_state_message[MODE_INTRA_8X8] = 0x4a;
- vme_state_message[MODE_INTRA_4X4] = 0x4a;
- vme_state_message[MODE_INTRA_NONPRED] = 0x4a;
- vme_state_message[MODE_INTER_16X16] = 0x4a;
- vme_state_message[MODE_INTER_16X8] = 0x4a;
- vme_state_message[MODE_INTER_8X8] = 0x4a;
- vme_state_message[MODE_INTER_8X4] = 0x4a;
- vme_state_message[MODE_INTER_4X4] = 0x4a;
- vme_state_message[MODE_INTER_BWD] = 0x2a;
- return;
- }
- m_costf = lambda * 10;
- vme_state_message[MODE_INTRA_16X16] = intel_format_lutvalue(m_cost, 0x8f);
- m_cost = lambda * 14;
- vme_state_message[MODE_INTRA_8X8] = intel_format_lutvalue(m_cost, 0x8f);
- m_cost = lambda * 24;
- vme_state_message[MODE_INTRA_4X4] = intel_format_lutvalue(m_cost, 0x8f);
- m_costf = lambda * 3.5;
- m_cost = m_costf;
- vme_state_message[MODE_INTRA_NONPRED] = intel_format_lutvalue(m_cost, 0x6f);
- if (slice_type == HEVC_SLICE_P) {
- m_costf = lambda * 2.5;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_16X16] = intel_format_lutvalue(m_cost, 0x8f);
- m_costf = lambda * 4;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_16X8] = intel_format_lutvalue(m_cost, 0x8f);
- m_costf = lambda * 1.5;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_8X8] = intel_format_lutvalue(m_cost, 0x6f);
- m_costf = lambda * 3;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_8X4] = intel_format_lutvalue(m_cost, 0x6f);
- m_costf = lambda * 5;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_4X4] = intel_format_lutvalue(m_cost, 0x6f);
- /* BWD is not used in P-frame */
- vme_state_message[MODE_INTER_BWD] = 0;
- } else {
- m_costf = lambda * 2.5;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_16X16] = intel_format_lutvalue(m_cost, 0x8f);
- m_costf = lambda * 5.5;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_16X8] = intel_format_lutvalue(m_cost, 0x8f);
- m_costf = lambda * 3.5;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_8X8] = intel_format_lutvalue(m_cost, 0x6f);
- m_costf = lambda * 5.0;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_8X4] = intel_format_lutvalue(m_cost, 0x6f);
- m_costf = lambda * 6.5;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_4X4] = intel_format_lutvalue(m_cost, 0x6f);
- m_costf = lambda * 1.5;
- m_cost = m_costf;
- vme_state_message[MODE_INTER_BWD] = intel_format_lutvalue(m_cost, 0x6f);
- }
- }
-}
diff --git a/src/gen6_mfd.c b/src/gen6_mfd.c
deleted file mode 100755
index ed4829c..0000000
--- a/src/gen6_mfd.c
+++ /dev/null
@@ -1,1877 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-
-#include "sysdeps.h"
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "i965_decoder_utils.h"
-
-#include "gen6_mfd.h"
-#include "intel_media.h"
-
-static const uint32_t zigzag_direct[64] = {
- 0, 1, 8, 16, 9, 2, 3, 10,
- 17, 24, 32, 25, 18, 11, 4, 5,
- 12, 19, 26, 33, 40, 48, 41, 34,
- 27, 20, 13, 6, 7, 14, 21, 28,
- 35, 42, 49, 56, 57, 50, 43, 36,
- 29, 22, 15, 23, 30, 37, 44, 51,
- 58, 59, 52, 45, 38, 31, 39, 46,
- 53, 60, 61, 54, 47, 55, 62, 63
-};
-
-static void
-gen6_mfd_init_avc_surface(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- struct object_surface *obj_surface)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- GenAvcSurface *gen6_avc_surface = obj_surface->private_data;
- int height_in_mbs;
-
- obj_surface->free_private_data = gen_free_avc_surface;
- height_in_mbs = ((pic_param->picture_height_in_mbs_minus1 + 1) & 0xff); /* frame height */
-
- if (!gen6_avc_surface) {
- gen6_avc_surface = calloc(sizeof(GenAvcSurface), 1);
- assert(gen6_avc_surface);
- gen6_avc_surface->base.frame_store_id = -1;
- assert((obj_surface->size & 0x3f) == 0);
- obj_surface->private_data = gen6_avc_surface;
- }
-
- gen6_avc_surface->dmv_bottom_flag = (pic_param->pic_fields.bits.field_pic_flag &&
- !pic_param->seq_fields.bits.direct_8x8_inference_flag);
-
- if (gen6_avc_surface->dmv_top == NULL) {
- gen6_avc_surface->dmv_top = dri_bo_alloc(i965->intel.bufmgr,
- "direct mv w/r buffer",
- 128 * height_in_mbs * 64, /* scalable with frame height */
- 0x1000);
- }
-
- if (gen6_avc_surface->dmv_bottom_flag &&
- gen6_avc_surface->dmv_bottom == NULL) {
- gen6_avc_surface->dmv_bottom = dri_bo_alloc(i965->intel.bufmgr,
- "direct mv w/r buffer",
- 128 * height_in_mbs * 64, /* scalable with frame height */
- 0x1000);
- }
-}
-
-static void
-gen6_mfd_pipe_mode_select(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
-
- assert(standard_select == MFX_FORMAT_MPEG2 ||
- standard_select == MFX_FORMAT_AVC ||
- standard_select == MFX_FORMAT_VC1);
-
- BEGIN_BCS_BATCH(batch, 4);
- OUT_BCS_BATCH(batch, MFX_PIPE_MODE_SELECT | (4 - 2));
- OUT_BCS_BATCH(batch,
- (MFD_MODE_VLD << 16) | /* VLD mode */
- (0 << 10) | /* disable Stream-Out */
- (gen6_mfd_context->post_deblocking_output.valid << 9) | /* Post Deblocking Output */
- (gen6_mfd_context->pre_deblocking_output.valid << 8) | /* Pre Deblocking Output */
- (0 << 7) | /* disable TLB prefectch */
- (0 << 5) | /* not in stitch mode */
- (MFX_CODEC_DECODE << 4) | /* decoding mode */
- (standard_select << 0));
- OUT_BCS_BATCH(batch,
- (0 << 20) | /* round flag in PB slice */
- (0 << 19) | /* round flag in Intra8x8 */
- (0 << 7) | /* expand NOA bus flag */
- (1 << 6) | /* must be 1 */
- (0 << 5) | /* disable clock gating for NOA */
- (0 << 4) | /* terminate if AVC motion and POC table error occurs */
- (0 << 3) | /* terminate if AVC mbdata error occurs */
- (0 << 2) | /* terminate if AVC CABAC/CAVLC decode error occurs */
- (0 << 1) | /* AVC long field motion vector */
- (1 << 0)); /* always calculate AVC ILDB boundary strength */
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen6_mfd_surface_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
- struct object_surface *obj_surface = decode_state->render_object;
- unsigned int surface_format;
-
- surface_format = obj_surface->fourcc == VA_FOURCC_Y800 ?
- MFX_SURFACE_MONOCHROME : MFX_SURFACE_PLANAR_420_8;
-
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- ((obj_surface->orig_height - 1) << 19) |
- ((obj_surface->orig_width - 1) << 6));
- OUT_BCS_BATCH(batch,
- (surface_format << 28) | /* 420 planar YUV surface */
- (1 << 27) | /* must be 1 for interleave U/V, hardware requirement */
- (0 << 22) | /* surface object control state, FIXME??? */
- ((obj_surface->width - 1) << 3) | /* pitch */
- (0 << 2) | /* must be 0 for interleave U/V */
- (1 << 1) | /* must be y-tiled */
- (I965_TILEWALK_YMAJOR << 0)); /* tile walk, FIXME: must be 1 ??? */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* must be 0 for interleave U/V */
- (obj_surface->height)); /* y offset for U(cb) */
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen6_mfd_pipe_buf_addr_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
- int i;
-
- BEGIN_BCS_BATCH(batch, 24);
- OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (24 - 2));
- if (gen6_mfd_context->pre_deblocking_output.valid)
- OUT_BCS_RELOC(batch, gen6_mfd_context->pre_deblocking_output.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- if (gen6_mfd_context->post_deblocking_output.valid)
- OUT_BCS_RELOC(batch, gen6_mfd_context->post_deblocking_output.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
- OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
-
- if (gen6_mfd_context->intra_row_store_scratch_buffer.valid)
- OUT_BCS_RELOC(batch, gen6_mfd_context->intra_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- if (gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.valid)
- OUT_BCS_RELOC(batch, gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- /* DW 7..22 */
- for (i = 0; i < ARRAY_ELEMS(gen6_mfd_context->reference_surface); i++) {
- struct object_surface *obj_surface;
-
- if (gen6_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID &&
- gen6_mfd_context->reference_surface[i].obj_surface &&
- gen6_mfd_context->reference_surface[i].obj_surface->bo) {
- obj_surface = gen6_mfd_context->reference_surface[i].obj_surface;
-
- OUT_BCS_RELOC(batch, obj_surface->bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- OUT_BCS_BATCH(batch, 0); /* ignore DW23 for decoding */
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen6_mfd_ind_obj_base_addr_state(VADriverContextP ctx,
- dri_bo *slice_data_bo,
- int standard_select,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 11);
- OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (11 - 2));
- OUT_BCS_RELOC(batch, slice_data_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); /* MFX Indirect Bitstream Object Base Address */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen6_mfd_bsp_buf_base_addr_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 4);
- OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (4 - 2));
-
- if (gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.valid)
- OUT_BCS_RELOC(batch, gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- if (gen6_mfd_context->mpr_row_store_scratch_buffer.valid)
- OUT_BCS_RELOC(batch, gen6_mfd_context->mpr_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- if (gen6_mfd_context->bitplane_read_buffer.valid)
- OUT_BCS_RELOC(batch, gen6_mfd_context->bitplane_read_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen6_mfd_avc_img_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
- int qm_present_flag;
- int img_struct;
- int mbaff_frame_flag;
- unsigned int width_in_mbs, height_in_mbs;
- VAPictureParameterBufferH264 *pic_param;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
-
- if (decode_state->iq_matrix && decode_state->iq_matrix->buffer)
- qm_present_flag = 1;
- else
- qm_present_flag = 0; /* built-in QM matrices */
-
- if (pic_param->CurrPic.flags & VA_PICTURE_H264_TOP_FIELD)
- img_struct = 1;
- else if (pic_param->CurrPic.flags & VA_PICTURE_H264_BOTTOM_FIELD)
- img_struct = 3;
- else
- img_struct = 0;
-
- if ((img_struct & 0x1) == 0x1) {
- assert(pic_param->pic_fields.bits.field_pic_flag == 0x1);
- } else {
- assert(pic_param->pic_fields.bits.field_pic_flag == 0x0);
- }
-
- if (pic_param->seq_fields.bits.frame_mbs_only_flag) { /* a frame containing only frame macroblocks */
- assert(pic_param->seq_fields.bits.mb_adaptive_frame_field_flag == 0);
- assert(pic_param->pic_fields.bits.field_pic_flag == 0);
- } else {
- assert(pic_param->seq_fields.bits.direct_8x8_inference_flag == 1); /* see H.264 spec */
- }
-
- mbaff_frame_flag = (pic_param->seq_fields.bits.mb_adaptive_frame_field_flag &&
- !pic_param->pic_fields.bits.field_pic_flag);
-
- width_in_mbs = ((pic_param->picture_width_in_mbs_minus1 + 1) & 0xff);
- height_in_mbs = ((pic_param->picture_height_in_mbs_minus1 + 1) & 0xff); /* frame height */
- assert(!((width_in_mbs * height_in_mbs) & 0x8000)); /* hardware requirement */
-
- /* MFX unit doesn't support 4:2:2 and 4:4:4 picture */
- assert(pic_param->seq_fields.bits.chroma_format_idc == 0 || /* monochrome picture */
- pic_param->seq_fields.bits.chroma_format_idc == 1); /* 4:2:0 */
- assert(pic_param->seq_fields.bits.residual_colour_transform_flag == 0); /* only available for 4:4:4 */
-
- BEGIN_BCS_BATCH(batch, 13);
- OUT_BCS_BATCH(batch, MFX_AVC_IMG_STATE | (13 - 2));
- OUT_BCS_BATCH(batch,
- ((width_in_mbs * height_in_mbs) & 0x7fff));
- OUT_BCS_BATCH(batch,
- (height_in_mbs << 16) |
- (width_in_mbs << 0));
- OUT_BCS_BATCH(batch,
- ((pic_param->second_chroma_qp_index_offset & 0x1f) << 24) |
- ((pic_param->chroma_qp_index_offset & 0x1f) << 16) |
- (0 << 14) | /* Max-bit conformance Intra flag ??? FIXME */
- (0 << 13) | /* Max Macroblock size conformance Inter flag ??? FIXME */
- (1 << 12) | /* always 1, hardware requirement */
- (qm_present_flag << 10) |
- (img_struct << 8) |
- (16 << 0));
- OUT_BCS_BATCH(batch,
- (pic_param->seq_fields.bits.chroma_format_idc << 10) |
- (pic_param->pic_fields.bits.entropy_coding_mode_flag << 7) |
- ((!pic_param->pic_fields.bits.reference_pic_flag) << 6) |
- (pic_param->pic_fields.bits.constrained_intra_pred_flag << 5) |
- (pic_param->seq_fields.bits.direct_8x8_inference_flag << 4) |
- (pic_param->pic_fields.bits.transform_8x8_mode_flag << 3) |
- (pic_param->seq_fields.bits.frame_mbs_only_flag << 2) |
- (mbaff_frame_flag << 1) |
- (pic_param->pic_fields.bits.field_pic_flag << 0));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen6_mfd_avc_qm_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
- int cmd_len;
- VAIQMatrixBufferH264 *iq_matrix;
- VAPictureParameterBufferH264 *pic_param;
-
- if (!decode_state->iq_matrix || !decode_state->iq_matrix->buffer)
- return;
-
- iq_matrix = (VAIQMatrixBufferH264 *)decode_state->iq_matrix->buffer;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
-
- cmd_len = 2 + 6 * 4; /* always load six 4x4 scaling matrices */
-
- if (pic_param->pic_fields.bits.transform_8x8_mode_flag)
- cmd_len += 2 * 16; /* load two 8x8 scaling matrices */
-
- BEGIN_BCS_BATCH(batch, cmd_len);
- OUT_BCS_BATCH(batch, MFX_AVC_QM_STATE | (cmd_len - 2));
-
- if (pic_param->pic_fields.bits.transform_8x8_mode_flag)
- OUT_BCS_BATCH(batch,
- (0x0 << 8) | /* don't use default built-in matrices */
- (0xff << 0)); /* six 4x4 and two 8x8 scaling matrices */
- else
- OUT_BCS_BATCH(batch,
- (0x0 << 8) | /* don't use default built-in matrices */
- (0x3f << 0)); /* six 4x4 scaling matrices */
-
- intel_batchbuffer_data(batch, &iq_matrix->ScalingList4x4[0][0], 6 * 4 * 4);
-
- if (pic_param->pic_fields.bits.transform_8x8_mode_flag)
- intel_batchbuffer_data(batch, &iq_matrix->ScalingList8x8[0][0], 2 * 16 * 4);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen6_mfd_avc_directmode_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
- struct object_surface *obj_surface;
- GenAvcSurface *gen6_avc_surface;
- VAPictureH264 *va_pic;
- int i;
-
- BEGIN_BCS_BATCH(batch, 69);
- OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (69 - 2));
-
- /* reference surfaces 0..15 */
- for (i = 0; i < ARRAY_ELEMS(gen6_mfd_context->reference_surface); i++) {
- if (gen6_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID &&
- gen6_mfd_context->reference_surface[i].obj_surface &&
- gen6_mfd_context->reference_surface[i].obj_surface->private_data) {
-
- obj_surface = gen6_mfd_context->reference_surface[i].obj_surface;
- gen6_avc_surface = obj_surface->private_data;
- OUT_BCS_RELOC(batch, gen6_avc_surface->dmv_top,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
-
- if (gen6_avc_surface->dmv_bottom_flag == 1)
- OUT_BCS_RELOC(batch, gen6_avc_surface->dmv_bottom,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- else
- OUT_BCS_RELOC(batch, gen6_avc_surface->dmv_top,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- /* the current decoding frame/field */
- va_pic = &pic_param->CurrPic;
- obj_surface = decode_state->render_object;
- assert(obj_surface->bo && obj_surface->private_data);
- gen6_avc_surface = obj_surface->private_data;
-
- OUT_BCS_RELOC(batch, gen6_avc_surface->dmv_top,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- if (gen6_avc_surface->dmv_bottom_flag == 1)
- OUT_BCS_RELOC(batch, gen6_avc_surface->dmv_bottom,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_RELOC(batch, gen6_avc_surface->dmv_top,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- /* POC List */
- for (i = 0; i < ARRAY_ELEMS(gen6_mfd_context->reference_surface); i++) {
- obj_surface = gen6_mfd_context->reference_surface[i].obj_surface;
-
- if (obj_surface) {
- const VAPictureH264 * const va_pic = avc_find_picture(
- obj_surface->base.id, pic_param->ReferenceFrames,
- ARRAY_ELEMS(pic_param->ReferenceFrames));
-
- assert(va_pic != NULL);
- OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
- OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- va_pic = &pic_param->CurrPic;
- OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
- OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen6_mfd_avc_slice_state(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- VASliceParameterBufferH264 *next_slice_param,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
- int width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
- int height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1;
- int slice_hor_pos, slice_ver_pos, next_slice_hor_pos, next_slice_ver_pos;
- int num_ref_idx_l0, num_ref_idx_l1;
- int mbaff_picture = (!pic_param->pic_fields.bits.field_pic_flag &&
- pic_param->seq_fields.bits.mb_adaptive_frame_field_flag);
- int weighted_pred_idc = 0;
- int first_mb_in_slice = 0, first_mb_in_next_slice = 0;
- unsigned int chroma_log2_weight_denom, luma_log2_weight_denom;
- int slice_type;
-
- if (slice_param->slice_type == SLICE_TYPE_I ||
- slice_param->slice_type == SLICE_TYPE_SI) {
- slice_type = SLICE_TYPE_I;
- } else if (slice_param->slice_type == SLICE_TYPE_P ||
- slice_param->slice_type == SLICE_TYPE_SP) {
- slice_type = SLICE_TYPE_P;
- } else {
- assert(slice_param->slice_type == SLICE_TYPE_B);
- slice_type = SLICE_TYPE_B;
- }
-
- luma_log2_weight_denom = slice_param->luma_log2_weight_denom;
- chroma_log2_weight_denom = slice_param->chroma_log2_weight_denom;
-
- if (slice_type == SLICE_TYPE_I) {
- assert(slice_param->num_ref_idx_l0_active_minus1 == 0);
- assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
- num_ref_idx_l0 = 0;
- num_ref_idx_l1 = 0;
- } else if (slice_type == SLICE_TYPE_P) {
- assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
- num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
- num_ref_idx_l1 = 0;
- weighted_pred_idc = (pic_param->pic_fields.bits.weighted_pred_flag == 1);
- } else {
- num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
- num_ref_idx_l1 = slice_param->num_ref_idx_l1_active_minus1 + 1;
- weighted_pred_idc = pic_param->pic_fields.bits.weighted_bipred_idc;
-
- if (weighted_pred_idc == 2) {
- /* 8.4.3 - Derivation process for prediction weights (8-279) */
- luma_log2_weight_denom = 5;
- chroma_log2_weight_denom = 5;
- }
- }
-
- first_mb_in_slice = slice_param->first_mb_in_slice;
- slice_hor_pos = first_mb_in_slice % width_in_mbs;
- slice_ver_pos = first_mb_in_slice / width_in_mbs;
-
- if (mbaff_picture)
- slice_ver_pos = slice_ver_pos << 1;
-
- if (next_slice_param) {
- first_mb_in_next_slice = next_slice_param->first_mb_in_slice;
- next_slice_hor_pos = first_mb_in_next_slice % width_in_mbs;
- next_slice_ver_pos = first_mb_in_next_slice / width_in_mbs;
-
- if (mbaff_picture)
- next_slice_ver_pos = next_slice_ver_pos << 1;
- } else {
- next_slice_hor_pos = 0;
- next_slice_ver_pos = height_in_mbs;
- }
-
- BEGIN_BCS_BATCH(batch, 11); /* FIXME: is it 10??? */
- OUT_BCS_BATCH(batch, MFX_AVC_SLICE_STATE | (11 - 2));
- OUT_BCS_BATCH(batch, slice_type);
- OUT_BCS_BATCH(batch,
- (num_ref_idx_l1 << 24) |
- (num_ref_idx_l0 << 16) |
- (chroma_log2_weight_denom << 8) |
- (luma_log2_weight_denom << 0));
- OUT_BCS_BATCH(batch,
- (weighted_pred_idc << 30) |
- (slice_param->direct_spatial_mv_pred_flag << 29) |
- (slice_param->disable_deblocking_filter_idc << 27) |
- (slice_param->cabac_init_idc << 24) |
- ((pic_param->pic_init_qp_minus26 + 26 + slice_param->slice_qp_delta) << 16) |
- ((slice_param->slice_beta_offset_div2 & 0xf) << 8) |
- ((slice_param->slice_alpha_c0_offset_div2 & 0xf) << 0));
- OUT_BCS_BATCH(batch,
- (slice_ver_pos << 24) |
- (slice_hor_pos << 16) |
- (first_mb_in_slice << 0));
- OUT_BCS_BATCH(batch,
- (next_slice_ver_pos << 16) |
- (next_slice_hor_pos << 0));
- OUT_BCS_BATCH(batch,
- (next_slice_param == NULL) << 19); /* last slice flag */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static inline void
-gen6_mfd_avc_ref_idx_state(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- gen6_send_avc_ref_idx_state(
- gen6_mfd_context->base.batch,
- slice_param,
- gen6_mfd_context->reference_surface
- );
-}
-
-static void
-gen6_mfd_avc_weightoffset_state(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
- int i, j, num_weight_offset_table = 0;
- short weightoffsets[32 * 6];
-
- if ((slice_param->slice_type == SLICE_TYPE_P ||
- slice_param->slice_type == SLICE_TYPE_SP) &&
- (pic_param->pic_fields.bits.weighted_pred_flag == 1)) {
- num_weight_offset_table = 1;
- }
-
- if ((slice_param->slice_type == SLICE_TYPE_B) &&
- (pic_param->pic_fields.bits.weighted_bipred_idc == 1)) {
- num_weight_offset_table = 2;
- }
-
- for (i = 0; i < num_weight_offset_table; i++) {
- BEGIN_BCS_BATCH(batch, 98);
- OUT_BCS_BATCH(batch, MFX_AVC_WEIGHTOFFSET_STATE | (98 - 2));
- OUT_BCS_BATCH(batch, i);
-
- if (i == 0) {
- for (j = 0; j < 32; j++) {
- weightoffsets[j * 6 + 0] = slice_param->luma_weight_l0[j];
- weightoffsets[j * 6 + 1] = slice_param->luma_offset_l0[j];
- weightoffsets[j * 6 + 2] = slice_param->chroma_weight_l0[j][0];
- weightoffsets[j * 6 + 3] = slice_param->chroma_offset_l0[j][0];
- weightoffsets[j * 6 + 4] = slice_param->chroma_weight_l0[j][1];
- weightoffsets[j * 6 + 5] = slice_param->chroma_offset_l0[j][1];
- }
- } else {
- for (j = 0; j < 32; j++) {
- weightoffsets[j * 6 + 0] = slice_param->luma_weight_l1[j];
- weightoffsets[j * 6 + 1] = slice_param->luma_offset_l1[j];
- weightoffsets[j * 6 + 2] = slice_param->chroma_weight_l1[j][0];
- weightoffsets[j * 6 + 3] = slice_param->chroma_offset_l1[j][0];
- weightoffsets[j * 6 + 4] = slice_param->chroma_weight_l1[j][1];
- weightoffsets[j * 6 + 5] = slice_param->chroma_offset_l1[j][1];
- }
- }
-
- intel_batchbuffer_data(batch, weightoffsets, sizeof(weightoffsets));
- ADVANCE_BCS_BATCH(batch);
- }
-}
-
-static void
-gen6_mfd_avc_bsd_object(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- dri_bo *slice_data_bo,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
- unsigned int slice_data_bit_offset;
-
- slice_data_bit_offset = avc_get_first_mb_bit_offset(
- slice_data_bo,
- slice_param,
- pic_param->pic_fields.bits.entropy_coding_mode_flag
- );
-
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFD_AVC_BSD_OBJECT | (6 - 2));
- OUT_BCS_BATCH(batch,
- (slice_param->slice_data_size - slice_param->slice_data_offset));
- OUT_BCS_BATCH(batch, slice_param->slice_data_offset);
- OUT_BCS_BATCH(batch,
- (0 << 31) |
- (0 << 14) |
- (0 << 12) |
- (0 << 10) |
- (0 << 8));
- OUT_BCS_BATCH(batch,
- ((slice_data_bit_offset >> 3) << 16) |
- (1 << 7) |
- (1 << 6) |
- ((0x7 - (slice_data_bit_offset & 0x7)) << 0));
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen6_mfd_avc_phantom_slice_first(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *next_slice_param,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- gen6_mfd_avc_phantom_slice(ctx, pic_param, next_slice_param, gen6_mfd_context->base.batch);
-}
-
-static void
-gen6_mfd_avc_phantom_slice_last(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- gen6_mfd_avc_phantom_slice(ctx, pic_param, NULL, gen6_mfd_context->base.batch);
-}
-
-static void
-gen6_mfd_avc_decode_init(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- VAPictureParameterBufferH264 *pic_param;
- VASliceParameterBufferH264 *slice_param;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface;
- dri_bo *bo;
- int i, j, enable_avc_ildb = 0;
- int width_in_mbs;
-
- for (j = 0; j < decode_state->num_slice_params && enable_avc_ildb == 0; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j]->buffer;
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
- assert((slice_param->slice_type == SLICE_TYPE_I) ||
- (slice_param->slice_type == SLICE_TYPE_SI) ||
- (slice_param->slice_type == SLICE_TYPE_P) ||
- (slice_param->slice_type == SLICE_TYPE_SP) ||
- (slice_param->slice_type == SLICE_TYPE_B));
-
- if (slice_param->disable_deblocking_filter_idc != 1) {
- enable_avc_ildb = 1;
- break;
- }
-
- slice_param++;
- }
- }
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
- intel_update_avc_frame_store_index(ctx, decode_state, pic_param,
- gen6_mfd_context->reference_surface, &gen6_mfd_context->fs_ctx);
- width_in_mbs = ((pic_param->picture_width_in_mbs_minus1 + 1) & 0xff);
-
- /* Current decoded picture */
- obj_surface = decode_state->render_object;
- if (pic_param->pic_fields.bits.reference_pic_flag)
- obj_surface->flags |= SURFACE_REFERENCED;
- else
- obj_surface->flags &= ~SURFACE_REFERENCED;
-
- avc_ensure_surface_bo(ctx, decode_state, obj_surface, pic_param);
- gen6_mfd_init_avc_surface(ctx, pic_param, obj_surface);
-
- dri_bo_unreference(gen6_mfd_context->post_deblocking_output.bo);
- gen6_mfd_context->post_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen6_mfd_context->post_deblocking_output.bo);
- gen6_mfd_context->post_deblocking_output.valid = enable_avc_ildb;
-
- dri_bo_unreference(gen6_mfd_context->pre_deblocking_output.bo);
- gen6_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen6_mfd_context->pre_deblocking_output.bo);
- gen6_mfd_context->pre_deblocking_output.valid = !enable_avc_ildb;
-
- dri_bo_unreference(gen6_mfd_context->intra_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "intra row store",
- width_in_mbs * 64,
- 0x1000);
- assert(bo);
- gen6_mfd_context->intra_row_store_scratch_buffer.bo = bo;
- gen6_mfd_context->intra_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "deblocking filter row store",
- width_in_mbs * 64 * 4,
- 0x1000);
- assert(bo);
- gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = bo;
- gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "bsd mpc row store",
- width_in_mbs * 96,
- 0x1000);
- assert(bo);
- gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
- gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen6_mfd_context->mpr_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "mpr row store",
- width_in_mbs * 64,
- 0x1000);
- assert(bo);
- gen6_mfd_context->mpr_row_store_scratch_buffer.bo = bo;
- gen6_mfd_context->mpr_row_store_scratch_buffer.valid = 1;
-
- gen6_mfd_context->bitplane_read_buffer.valid = 0;
-}
-
-static void
-gen6_mfd_avc_decode_picture(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
- VAPictureParameterBufferH264 *pic_param;
- VASliceParameterBufferH264 *slice_param, *next_slice_param, *next_slice_group_param;
- dri_bo *slice_data_bo;
- int i, j;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
- gen6_mfd_avc_decode_init(ctx, decode_state, gen6_mfd_context);
-
- intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- gen6_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_AVC, gen6_mfd_context);
- gen6_mfd_surface_state(ctx, decode_state, MFX_FORMAT_AVC, gen6_mfd_context);
- gen6_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_AVC, gen6_mfd_context);
- gen6_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_AVC, gen6_mfd_context);
- gen6_mfd_avc_img_state(ctx, decode_state, gen6_mfd_context);
- gen6_mfd_avc_qm_state(ctx, decode_state, gen6_mfd_context);
-
- for (j = 0; j < decode_state->num_slice_params; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j]->buffer;
- slice_data_bo = decode_state->slice_datas[j]->bo;
- gen6_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_AVC, gen6_mfd_context);
-
- if (j == decode_state->num_slice_params - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j + 1]->buffer;
-
- if (j == 0 &&
- slice_param->first_mb_in_slice)
- gen6_mfd_avc_phantom_slice_first(ctx, pic_param, slice_param, gen6_mfd_context);
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
- assert((slice_param->slice_type == SLICE_TYPE_I) ||
- (slice_param->slice_type == SLICE_TYPE_SI) ||
- (slice_param->slice_type == SLICE_TYPE_P) ||
- (slice_param->slice_type == SLICE_TYPE_SP) ||
- (slice_param->slice_type == SLICE_TYPE_B));
-
- if (i < decode_state->slice_params[j]->num_elements - 1)
- next_slice_param = slice_param + 1;
- else
- next_slice_param = next_slice_group_param;
-
- gen6_mfd_avc_directmode_state(ctx, decode_state, pic_param, slice_param, gen6_mfd_context);
- gen6_mfd_avc_slice_state(ctx, pic_param, slice_param, next_slice_param, gen6_mfd_context);
- gen6_mfd_avc_ref_idx_state(ctx, pic_param, slice_param, gen6_mfd_context);
- gen6_mfd_avc_weightoffset_state(ctx, pic_param, slice_param, gen6_mfd_context);
- gen6_mfd_avc_bsd_object(ctx, pic_param, slice_param, slice_data_bo, gen6_mfd_context);
- slice_param++;
- }
- }
-
- gen6_mfd_avc_phantom_slice_last(ctx, pic_param, gen6_mfd_context);
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-}
-
-static void
-gen6_mfd_mpeg2_decode_init(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- VAPictureParameterBufferMPEG2 *pic_param;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface;
- dri_bo *bo;
- unsigned int width_in_mbs;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
- width_in_mbs = ALIGN(pic_param->horizontal_size, 16) / 16;
-
- mpeg2_set_reference_surfaces(
- ctx,
- gen6_mfd_context->reference_surface,
- decode_state,
- pic_param
- );
-
- /* Current decoded picture */
- obj_surface = decode_state->render_object;
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
-
- dri_bo_unreference(gen6_mfd_context->pre_deblocking_output.bo);
- gen6_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen6_mfd_context->pre_deblocking_output.bo);
- gen6_mfd_context->pre_deblocking_output.valid = 1;
-
- dri_bo_unreference(gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "bsd mpc row store",
- width_in_mbs * 96,
- 0x1000);
- assert(bo);
- gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
- gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
-
- gen6_mfd_context->post_deblocking_output.valid = 0;
- gen6_mfd_context->intra_row_store_scratch_buffer.valid = 0;
- gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 0;
- gen6_mfd_context->mpr_row_store_scratch_buffer.valid = 0;
- gen6_mfd_context->bitplane_read_buffer.valid = 0;
-}
-
-static void
-gen6_mfd_mpeg2_pic_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
- VAPictureParameterBufferMPEG2 *pic_param;
- unsigned int tff, pic_structure;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
-
- pic_structure = pic_param->picture_coding_extension.bits.picture_structure;
- if (pic_structure == MPEG_FRAME)
- tff = pic_param->picture_coding_extension.bits.top_field_first;
- else
- tff = !(pic_param->picture_coding_extension.bits.is_first_field ^
- (pic_structure & MPEG_TOP_FIELD));
-
- BEGIN_BCS_BATCH(batch, 4);
- OUT_BCS_BATCH(batch, MFX_MPEG2_PIC_STATE | (4 - 2));
- OUT_BCS_BATCH(batch,
- (pic_param->f_code & 0xf) << 28 | /* f_code[1][1] */
- ((pic_param->f_code >> 4) & 0xf) << 24 | /* f_code[1][0] */
- ((pic_param->f_code >> 8) & 0xf) << 20 | /* f_code[0][1] */
- ((pic_param->f_code >> 12) & 0xf) << 16 | /* f_code[0][0] */
- pic_param->picture_coding_extension.bits.intra_dc_precision << 14 |
- pic_param->picture_coding_extension.bits.picture_structure << 12 |
- tff << 11 |
- pic_param->picture_coding_extension.bits.frame_pred_frame_dct << 10 |
- pic_param->picture_coding_extension.bits.concealment_motion_vectors << 9 |
- pic_param->picture_coding_extension.bits.q_scale_type << 8 |
- pic_param->picture_coding_extension.bits.intra_vlc_format << 7 |
- pic_param->picture_coding_extension.bits.alternate_scan << 6);
- OUT_BCS_BATCH(batch,
- pic_param->picture_coding_type << 9);
- OUT_BCS_BATCH(batch,
- (ALIGN(pic_param->vertical_size, 16) / 16) << 16 |
- (ALIGN(pic_param->horizontal_size, 16) / 16));
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen6_mfd_mpeg2_qm_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
- VAIQMatrixBufferMPEG2 * const gen_iq_matrix = &gen6_mfd_context->iq_matrix.mpeg2;
- int i, j;
-
- /* Update internal QM state */
- if (decode_state->iq_matrix && decode_state->iq_matrix->buffer) {
- VAIQMatrixBufferMPEG2 * const iq_matrix =
- (VAIQMatrixBufferMPEG2 *)decode_state->iq_matrix->buffer;
-
- gen_iq_matrix->load_intra_quantiser_matrix =
- iq_matrix->load_intra_quantiser_matrix;
- if (iq_matrix->load_intra_quantiser_matrix) {
- for (j = 0; j < 64; j++)
- gen_iq_matrix->intra_quantiser_matrix[zigzag_direct[j]] =
- iq_matrix->intra_quantiser_matrix[j];
- }
-
- gen_iq_matrix->load_non_intra_quantiser_matrix =
- iq_matrix->load_non_intra_quantiser_matrix;
- if (iq_matrix->load_non_intra_quantiser_matrix) {
- for (j = 0; j < 64; j++)
- gen_iq_matrix->non_intra_quantiser_matrix[zigzag_direct[j]] =
- iq_matrix->non_intra_quantiser_matrix[j];
- }
- }
-
- /* Commit QM state to HW */
- for (i = 0; i < 2; i++) {
- unsigned char *qm = NULL;
-
- if (i == 0) {
- if (gen_iq_matrix->load_intra_quantiser_matrix)
- qm = gen_iq_matrix->intra_quantiser_matrix;
- } else {
- if (gen_iq_matrix->load_non_intra_quantiser_matrix)
- qm = gen_iq_matrix->non_intra_quantiser_matrix;
- }
-
- if (!qm)
- continue;
-
- BEGIN_BCS_BATCH(batch, 18);
- OUT_BCS_BATCH(batch, MFX_MPEG2_QM_STATE | (18 - 2));
- OUT_BCS_BATCH(batch, i);
- intel_batchbuffer_data(batch, qm, 64);
- ADVANCE_BCS_BATCH(batch);
- }
-}
-
-static void
-gen6_mfd_mpeg2_bsd_object(VADriverContextP ctx,
- VAPictureParameterBufferMPEG2 *pic_param,
- VASliceParameterBufferMPEG2 *slice_param,
- VASliceParameterBufferMPEG2 *next_slice_param,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
- unsigned int width_in_mbs = ALIGN(pic_param->horizontal_size, 16) / 16;
- int mb_count, vpos0, hpos0, vpos1, hpos1, is_field_pic_wa, is_field_pic = 0;
-
- if (pic_param->picture_coding_extension.bits.picture_structure == MPEG_TOP_FIELD ||
- pic_param->picture_coding_extension.bits.picture_structure == MPEG_BOTTOM_FIELD)
- is_field_pic = 1;
- is_field_pic_wa = is_field_pic &&
- gen6_mfd_context->wa_mpeg2_slice_vertical_position > 0;
-
- vpos0 = slice_param->slice_vertical_position / (1 + is_field_pic_wa);
- hpos0 = slice_param->slice_horizontal_position;
-
- if (next_slice_param == NULL) {
- vpos1 = ALIGN(pic_param->vertical_size, 16) / 16 / (1 + is_field_pic);
- hpos1 = 0;
- } else {
- vpos1 = next_slice_param->slice_vertical_position / (1 + is_field_pic_wa);
- hpos1 = next_slice_param->slice_horizontal_position;
- }
-
- mb_count = (vpos1 * width_in_mbs + hpos1) - (vpos0 * width_in_mbs + hpos0);
-
- BEGIN_BCS_BATCH(batch, 5);
- OUT_BCS_BATCH(batch, MFD_MPEG2_BSD_OBJECT | (5 - 2));
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_size - (slice_param->macroblock_offset >> 3));
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_offset + (slice_param->macroblock_offset >> 3));
- OUT_BCS_BATCH(batch,
- hpos0 << 24 |
- vpos0 << 16 |
- mb_count << 8 |
- (next_slice_param == NULL) << 5 |
- (next_slice_param == NULL) << 3 |
- (slice_param->macroblock_offset & 0x7));
- OUT_BCS_BATCH(batch,
- slice_param->quantiser_scale_code << 24);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen6_mfd_mpeg2_decode_picture(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
- VAPictureParameterBufferMPEG2 *pic_param;
- VASliceParameterBufferMPEG2 *slice_param, *next_slice_param;
- dri_bo *slice_data_bo;
- int group_idx = 0, pre_group_idx = -1, element_idx = 0;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
-
- gen6_mfd_mpeg2_decode_init(ctx, decode_state, gen6_mfd_context);
- intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- gen6_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_MPEG2, gen6_mfd_context);
- gen6_mfd_surface_state(ctx, decode_state, MFX_FORMAT_MPEG2, gen6_mfd_context);
- gen6_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_MPEG2, gen6_mfd_context);
- gen6_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_MPEG2, gen6_mfd_context);
- gen6_mfd_mpeg2_pic_state(ctx, decode_state, gen6_mfd_context);
- gen6_mfd_mpeg2_qm_state(ctx, decode_state, gen6_mfd_context);
-
- if (gen6_mfd_context->wa_mpeg2_slice_vertical_position < 0)
- gen6_mfd_context->wa_mpeg2_slice_vertical_position =
- mpeg2_wa_slice_vertical_position(decode_state, pic_param);
-
- slice_param = (VASliceParameterBufferMPEG2 *)decode_state->slice_params[group_idx]->buffer;
-
- for (; slice_param;) {
- if (pre_group_idx != group_idx) {
- slice_data_bo = decode_state->slice_datas[group_idx]->bo;
- gen6_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_MPEG2, gen6_mfd_context);
- pre_group_idx = group_idx;
- }
-
- next_slice_param = intel_mpeg2_find_next_slice(decode_state, pic_param, slice_param, &group_idx, &element_idx);
- gen6_mfd_mpeg2_bsd_object(ctx, pic_param, slice_param, next_slice_param, gen6_mfd_context);
- slice_param = next_slice_param;
- }
-
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-}
-
-static const int va_to_gen6_vc1_pic_type[5] = {
- GEN6_VC1_I_PICTURE,
- GEN6_VC1_P_PICTURE,
- GEN6_VC1_B_PICTURE,
- GEN6_VC1_BI_PICTURE,
- GEN6_VC1_P_PICTURE,
-};
-
-static const int va_to_gen6_vc1_mv[4] = {
- 1, /* 1-MV */
- 2, /* 1-MV half-pel */
- 3, /* 1-MV half-pef bilinear */
- 0, /* Mixed MV */
-};
-
-static const int b_picture_scale_factor[21] = {
- 128, 85, 170, 64, 192,
- 51, 102, 153, 204, 43,
- 215, 37, 74, 111, 148,
- 185, 222, 32, 96, 160,
- 224,
-};
-
-static const int va_to_gen6_vc1_condover[3] = {
- 0,
- 2,
- 3
-};
-
-static const int va_to_gen6_vc1_profile[4] = {
- GEN6_VC1_SIMPLE_PROFILE,
- GEN6_VC1_MAIN_PROFILE,
- GEN6_VC1_RESERVED_PROFILE,
- GEN6_VC1_ADVANCED_PROFILE
-};
-
-static void
-gen6_mfd_free_vc1_surface(void **data)
-{
- struct gen6_vc1_surface *gen6_vc1_surface = *data;
-
- if (!gen6_vc1_surface)
- return;
-
- dri_bo_unreference(gen6_vc1_surface->dmv);
- free(gen6_vc1_surface);
- *data = NULL;
-}
-
-static void
-gen6_mfd_init_vc1_surface(VADriverContextP ctx,
- VAPictureParameterBufferVC1 *pic_param,
- struct object_surface *obj_surface)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vc1_surface *gen6_vc1_surface = obj_surface->private_data;
- int height_in_mbs = ALIGN(pic_param->coded_height, 16) / 16;
-
- obj_surface->free_private_data = gen6_mfd_free_vc1_surface;
-
- if (!gen6_vc1_surface) {
- gen6_vc1_surface = calloc(sizeof(struct gen6_vc1_surface), 1);
-
- if (!gen6_vc1_surface)
- return;
-
- assert((obj_surface->size & 0x3f) == 0);
- obj_surface->private_data = gen6_vc1_surface;
- }
-
- gen6_vc1_surface->picture_type = pic_param->picture_fields.bits.picture_type;
-
- if (gen6_vc1_surface->dmv == NULL) {
- gen6_vc1_surface->dmv = dri_bo_alloc(i965->intel.bufmgr,
- "direct mv w/r buffer",
- 128 * height_in_mbs * 64, /* scalable with frame height */
- 0x1000);
- }
-}
-
-static void
-gen6_mfd_vc1_decode_init(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- VAPictureParameterBufferVC1 *pic_param;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface;
- dri_bo *bo;
- int width_in_mbs;
- int picture_type;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
- width_in_mbs = ALIGN(pic_param->coded_width, 16) / 16;
- picture_type = pic_param->picture_fields.bits.picture_type;
-
- intel_update_vc1_frame_store_index(ctx,
- decode_state,
- pic_param,
- gen6_mfd_context->reference_surface);
-
- /* Current decoded picture */
- obj_surface = decode_state->render_object;
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
- gen6_mfd_init_vc1_surface(ctx, pic_param, obj_surface);
-
- dri_bo_unreference(gen6_mfd_context->post_deblocking_output.bo);
- gen6_mfd_context->post_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen6_mfd_context->post_deblocking_output.bo);
- gen6_mfd_context->post_deblocking_output.valid = pic_param->entrypoint_fields.bits.loopfilter;
-
- dri_bo_unreference(gen6_mfd_context->pre_deblocking_output.bo);
- gen6_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen6_mfd_context->pre_deblocking_output.bo);
- gen6_mfd_context->pre_deblocking_output.valid = !pic_param->entrypoint_fields.bits.loopfilter;
-
- dri_bo_unreference(gen6_mfd_context->intra_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "intra row store",
- width_in_mbs * 64,
- 0x1000);
- assert(bo);
- gen6_mfd_context->intra_row_store_scratch_buffer.bo = bo;
- gen6_mfd_context->intra_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "deblocking filter row store",
- width_in_mbs * 7 * 64,
- 0x1000);
- assert(bo);
- gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = bo;
- gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "bsd mpc row store",
- width_in_mbs * 96,
- 0x1000);
- assert(bo);
- gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
- gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
-
- gen6_mfd_context->mpr_row_store_scratch_buffer.valid = 0;
-
- gen6_mfd_context->bitplane_read_buffer.valid = !!pic_param->bitplane_present.value;
- dri_bo_unreference(gen6_mfd_context->bitplane_read_buffer.bo);
-
- if (gen6_mfd_context->bitplane_read_buffer.valid) {
- int width_in_mbs = ALIGN(pic_param->coded_width, 16) / 16;
- int height_in_mbs = ALIGN(pic_param->coded_height, 16) / 16;
- int bitplane_width = ALIGN(width_in_mbs, 2) / 2;
- int src_w, src_h;
- uint8_t *src = NULL, *dst = NULL;
-
- assert(decode_state->bit_plane->buffer);
- src = decode_state->bit_plane->buffer;
-
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "VC-1 Bitplane",
- bitplane_width * height_in_mbs,
- 0x1000);
- assert(bo);
- gen6_mfd_context->bitplane_read_buffer.bo = bo;
-
- dri_bo_map(bo, True);
- assert(bo->virtual);
- dst = bo->virtual;
-
- for (src_h = 0; src_h < height_in_mbs; src_h++) {
- for(src_w = 0; src_w < width_in_mbs; src_w++) {
- int src_index, dst_index;
- int src_shift;
- uint8_t src_value;
-
- src_index = (src_h * width_in_mbs + src_w) / 2;
- src_shift = !((src_h * width_in_mbs + src_w) & 1) * 4;
- src_value = ((src[src_index] >> src_shift) & 0xf);
-
- if (picture_type == GEN6_VC1_SKIPPED_PICTURE){
- src_value |= 0x2;
- }
-
- dst_index = src_w / 2;
- dst[dst_index] = ((dst[dst_index] >> 4) | (src_value << 4));
- }
-
- if (src_w & 1)
- dst[src_w / 2] >>= 4;
-
- dst += bitplane_width;
- }
-
- dri_bo_unmap(bo);
- } else
- gen6_mfd_context->bitplane_read_buffer.bo = NULL;
-}
-
-static void
-gen6_mfd_vc1_pic_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
- VAPictureParameterBufferVC1 *pic_param;
- struct object_surface *obj_surface;
- int alt_pquant_config = 0, alt_pquant_edge_mask = 0, alt_pq;
- int dquant, dquantfrm, dqprofile, dqdbedge, dqsbedge, dqbilevel;
- int unified_mv_mode;
- int ref_field_pic_polarity = 0;
- int scale_factor = 0;
- int trans_ac_y = 0;
- int dmv_surface_valid = 0;
- int brfd = 0;
- int fcm = 0;
- int picture_type;
- int profile;
- int overlap;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
-
- profile = va_to_gen6_vc1_profile[pic_param->sequence_fields.bits.profile];
- dquant = pic_param->pic_quantizer_fields.bits.dquant;
- dquantfrm = pic_param->pic_quantizer_fields.bits.dq_frame;
- dqprofile = pic_param->pic_quantizer_fields.bits.dq_profile;
- dqdbedge = pic_param->pic_quantizer_fields.bits.dq_db_edge;
- dqsbedge = pic_param->pic_quantizer_fields.bits.dq_sb_edge;
- dqbilevel = pic_param->pic_quantizer_fields.bits.dq_binary_level;
- alt_pq = pic_param->pic_quantizer_fields.bits.alt_pic_quantizer;
-
- if (dquant == 0) {
- alt_pquant_config = 0;
- alt_pquant_edge_mask = 0;
- } else if (dquant == 2) {
- alt_pquant_config = 1;
- alt_pquant_edge_mask = 0xf;
- } else {
- assert(dquant == 1);
- if (dquantfrm == 0) {
- alt_pquant_config = 0;
- alt_pquant_edge_mask = 0;
- alt_pq = 0;
- } else {
- assert(dquantfrm == 1);
- alt_pquant_config = 1;
-
- switch (dqprofile) {
- case 3:
- if (dqbilevel == 0) {
- alt_pquant_config = 2;
- alt_pquant_edge_mask = 0;
- } else {
- assert(dqbilevel == 1);
- alt_pquant_config = 3;
- alt_pquant_edge_mask = 0;
- }
- break;
-
- case 0:
- alt_pquant_edge_mask = 0xf;
- break;
-
- case 1:
- if (dqdbedge == 3)
- alt_pquant_edge_mask = 0x9;
- else
- alt_pquant_edge_mask = (0x3 << dqdbedge);
-
- break;
-
- case 2:
- alt_pquant_edge_mask = (0x1 << dqsbedge);
- break;
-
- default:
- assert(0);
- }
- }
- }
-
- if (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation) {
- assert(pic_param->mv_fields.bits.mv_mode2 < 4);
- unified_mv_mode = va_to_gen6_vc1_mv[pic_param->mv_fields.bits.mv_mode2];
- } else {
- assert(pic_param->mv_fields.bits.mv_mode < 4);
- unified_mv_mode = va_to_gen6_vc1_mv[pic_param->mv_fields.bits.mv_mode];
- }
-
- if (pic_param->sequence_fields.bits.interlace == 1 &&
- pic_param->picture_fields.bits.frame_coding_mode != 0) { /* frame-interlace or field-interlace */
- /* FIXME: calculate reference field picture polarity */
- assert(0);
- ref_field_pic_polarity = 0;
- }
-
- if (pic_param->b_picture_fraction < 21)
- scale_factor = b_picture_scale_factor[pic_param->b_picture_fraction];
-
- picture_type = va_to_gen6_vc1_pic_type[pic_param->picture_fields.bits.picture_type];
-
- if (profile == GEN6_VC1_ADVANCED_PROFILE &&
- picture_type == GEN6_VC1_I_PICTURE)
- picture_type = GEN6_VC1_BI_PICTURE;
-
- if (picture_type == GEN6_VC1_I_PICTURE || picture_type == GEN6_VC1_BI_PICTURE) /* I picture */
- trans_ac_y = pic_param->transform_fields.bits.transform_ac_codingset_idx2;
- else {
- trans_ac_y = pic_param->transform_fields.bits.transform_ac_codingset_idx1;
- /*
- * 8.3.6.2.1 Transform Type Selection
- * If variable-sized transform coding is not enabled,
- * then the 8x8 transform shall be used for all blocks.
- * it is also MFX_VC1_PIC_STATE requirement.
- */
- if (pic_param->transform_fields.bits.variable_sized_transform_flag == 0) {
- pic_param->transform_fields.bits.mb_level_transform_type_flag = 1;
- pic_param->transform_fields.bits.frame_level_transform_type = 0;
- }
- }
-
- if (picture_type == GEN6_VC1_B_PICTURE) {
- struct gen6_vc1_surface *gen6_vc1_surface = NULL;
-
- obj_surface = decode_state->reference_objects[1];
-
- if (obj_surface)
- gen6_vc1_surface = obj_surface->private_data;
-
- if (!gen6_vc1_surface ||
- (va_to_gen6_vc1_pic_type[gen6_vc1_surface->picture_type] == GEN6_VC1_I_PICTURE ||
- va_to_gen6_vc1_pic_type[gen6_vc1_surface->picture_type] == GEN6_VC1_BI_PICTURE))
- dmv_surface_valid = 0;
- else
- dmv_surface_valid = 1;
- }
-
- assert(pic_param->picture_fields.bits.frame_coding_mode < 3);
-
- if (pic_param->picture_fields.bits.frame_coding_mode < 2)
- fcm = pic_param->picture_fields.bits.frame_coding_mode;
- else {
- if (pic_param->picture_fields.bits.top_field_first)
- fcm = 2;
- else
- fcm = 3;
- }
-
- if (pic_param->picture_fields.bits.picture_type == GEN6_VC1_B_PICTURE) { /* B picture */
- brfd = pic_param->reference_fields.bits.reference_distance;
- brfd = (scale_factor * brfd) >> 8;
- brfd = pic_param->reference_fields.bits.reference_distance - brfd - 1;
-
- if (brfd < 0)
- brfd = 0;
- }
-
- overlap = pic_param->sequence_fields.bits.overlap;
-
- if (overlap) {
- overlap = 0;
- if (profile != GEN6_VC1_ADVANCED_PROFILE){
- if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9 &&
- pic_param->picture_fields.bits.picture_type != GEN6_VC1_B_PICTURE) {
- overlap = 1;
- }
- }else {
- if (pic_param->picture_fields.bits.picture_type == GEN6_VC1_P_PICTURE &&
- pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
- overlap = 1;
- }
- if (pic_param->picture_fields.bits.picture_type == GEN6_VC1_I_PICTURE ||
- pic_param->picture_fields.bits.picture_type == GEN6_VC1_BI_PICTURE){
- if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
- overlap = 1;
- } else if (va_to_gen6_vc1_condover[pic_param->conditional_overlap_flag] == 2 ||
- va_to_gen6_vc1_condover[pic_param->conditional_overlap_flag] == 3) {
- overlap = 1;
- }
- }
- }
- }
-
- assert(pic_param->conditional_overlap_flag < 3);
- assert(pic_param->mv_fields.bits.mv_table < 4); /* FIXME: interlace mode */
-
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFX_VC1_PIC_STATE | (6 - 2));
- OUT_BCS_BATCH(batch,
- (ALIGN(pic_param->coded_height, 16) / 16) << 16 |
- (ALIGN(pic_param->coded_width, 16) / 16));
- OUT_BCS_BATCH(batch,
- pic_param->sequence_fields.bits.syncmarker << 31 |
- 1 << 29 | /* concealment */
- alt_pq << 24 |
- pic_param->entrypoint_fields.bits.loopfilter << 23 |
- overlap << 22 |
- (pic_param->pic_quantizer_fields.bits.quantizer == 0) << 21 | /* implicit quantizer */
- pic_param->pic_quantizer_fields.bits.pic_quantizer_scale << 16 |
- alt_pquant_edge_mask << 12 |
- alt_pquant_config << 10 |
- pic_param->pic_quantizer_fields.bits.half_qp << 9 |
- pic_param->pic_quantizer_fields.bits.pic_quantizer_type << 8 |
- va_to_gen6_vc1_condover[pic_param->conditional_overlap_flag] << 6 |
- !pic_param->picture_fields.bits.is_first_field << 5 |
- picture_type << 2 |
- fcm << 0);
- OUT_BCS_BATCH(batch,
- !!pic_param->bitplane_present.value << 23 |
- !pic_param->bitplane_present.flags.bp_forward_mb << 22 |
- !pic_param->bitplane_present.flags.bp_mv_type_mb << 21 |
- !pic_param->bitplane_present.flags.bp_skip_mb << 20 |
- !pic_param->bitplane_present.flags.bp_direct_mb << 19 |
- !pic_param->bitplane_present.flags.bp_overflags << 18 |
- !pic_param->bitplane_present.flags.bp_ac_pred << 17 |
- !pic_param->bitplane_present.flags.bp_field_tx << 16 |
- pic_param->mv_fields.bits.extended_dmv_range << 14 |
- pic_param->mv_fields.bits.extended_mv_range << 12 |
- pic_param->mv_fields.bits.four_mv_switch << 11 |
- pic_param->fast_uvmc_flag << 10 |
- unified_mv_mode << 8 |
- ref_field_pic_polarity << 6 |
- pic_param->reference_fields.bits.num_reference_pictures << 5 |
- pic_param->reference_fields.bits.reference_distance << 0);
- OUT_BCS_BATCH(batch,
- scale_factor << 24 |
- pic_param->mv_fields.bits.mv_table << 20 |
- pic_param->mv_fields.bits.four_mv_block_pattern_table << 18 |
- pic_param->mv_fields.bits.two_mv_block_pattern_table << 16 |
- pic_param->transform_fields.bits.frame_level_transform_type << 12 |
- pic_param->transform_fields.bits.mb_level_transform_type_flag << 11 |
- pic_param->mb_mode_table << 8 |
- trans_ac_y << 6 |
- pic_param->transform_fields.bits.transform_ac_codingset_idx1 << 4 |
- pic_param->transform_fields.bits.intra_transform_dc_table << 3 |
- pic_param->cbp_table << 0);
- OUT_BCS_BATCH(batch,
- dmv_surface_valid << 13 |
- brfd << 8 |
- ((ALIGN(pic_param->coded_width, 16) / 16 + 1) / 2 - 1));
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen6_mfd_vc1_pred_pipe_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
- VAPictureParameterBufferVC1 *pic_param;
- int interpolation_mode = 0;
- int intensitycomp_single;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
-
- if (pic_param->mv_fields.bits.mv_mode == VAMvMode1MvHalfPelBilinear ||
- (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation &&
- pic_param->mv_fields.bits.mv_mode2 == VAMvMode1MvHalfPelBilinear))
- interpolation_mode = 2; /* Half-pel bilinear */
- else if (pic_param->mv_fields.bits.mv_mode == VAMvMode1MvHalfPel ||
- (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation &&
- pic_param->mv_fields.bits.mv_mode2 == VAMvMode1MvHalfPel))
- interpolation_mode = 0; /* Half-pel bicubic */
- else
- interpolation_mode = 1; /* Quarter-pel bicubic */
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
- intensitycomp_single = (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation);
-
- BEGIN_BCS_BATCH(batch, 7);
- OUT_BCS_BATCH(batch, MFX_VC1_PRED_PIPE_STATE | (7 - 2));
- OUT_BCS_BATCH(batch,
- 0 << 8 | /* FIXME: interlace mode */
- pic_param->rounding_control << 4 |
- va_to_gen6_vc1_profile[pic_param->sequence_fields.bits.profile] << 2);
- OUT_BCS_BATCH(batch,
- pic_param->luma_shift << 16 |
- pic_param->luma_scale << 0); /* FIXME: Luma Scaling */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- interpolation_mode << 19 |
- pic_param->fast_uvmc_flag << 18 |
- 0 << 17 | /* FIXME: scale up or down ??? */
- pic_param->range_reduction_frame << 16 |
- 0 << 6 | /* FIXME: double ??? */
- 0 << 4 |
- intensitycomp_single << 2 |
- intensitycomp_single << 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-
-static void
-gen6_mfd_vc1_directmode_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
- struct object_surface *obj_surface;
- dri_bo *dmv_read_buffer = NULL, *dmv_write_buffer = NULL;
-
- obj_surface = decode_state->render_object;
-
- if (obj_surface && obj_surface->private_data) {
- dmv_write_buffer = ((struct gen6_vc1_surface *)(obj_surface->private_data))->dmv;
- }
-
- obj_surface = decode_state->reference_objects[1];
-
- if (obj_surface && obj_surface->private_data) {
- dmv_read_buffer = ((struct gen6_vc1_surface *)(obj_surface->private_data))->dmv;
- }
-
- BEGIN_BCS_BATCH(batch, 3);
- OUT_BCS_BATCH(batch, MFX_VC1_DIRECTMODE_STATE | (3 - 2));
-
- if (dmv_write_buffer)
- OUT_BCS_RELOC(batch, dmv_write_buffer,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- if (dmv_read_buffer)
- OUT_BCS_RELOC(batch, dmv_read_buffer,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static int
-gen6_mfd_vc1_get_macroblock_bit_offset(uint8_t *buf, int in_slice_data_bit_offset, int profile)
-{
- int out_slice_data_bit_offset;
- int slice_header_size = in_slice_data_bit_offset / 8;
- int i, j;
-
- if (profile != 3)
- out_slice_data_bit_offset = in_slice_data_bit_offset;
- else {
- for (i = 0, j = 0; i < slice_header_size; i++, j++) {
- if (!buf[j] && !buf[j + 1] && buf[j + 2] == 3 && buf[j + 3] < 4) {
- i++, j += 2;
- }
- }
-
- out_slice_data_bit_offset = 8 * j + in_slice_data_bit_offset % 8;
- }
-
- return out_slice_data_bit_offset;
-}
-
-static void
-gen6_mfd_vc1_bsd_object(VADriverContextP ctx,
- VAPictureParameterBufferVC1 *pic_param,
- VASliceParameterBufferVC1 *slice_param,
- VASliceParameterBufferVC1 *next_slice_param,
- dri_bo *slice_data_bo,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
- int next_slice_start_vert_pos;
- int macroblock_offset;
- uint8_t *slice_data = NULL;
-
- dri_bo_map(slice_data_bo, 0);
- slice_data = (uint8_t *)(slice_data_bo->virtual + slice_param->slice_data_offset);
- macroblock_offset = gen6_mfd_vc1_get_macroblock_bit_offset(slice_data,
- slice_param->macroblock_offset,
- pic_param->sequence_fields.bits.profile);
- dri_bo_unmap(slice_data_bo);
-
- if (next_slice_param)
- next_slice_start_vert_pos = next_slice_param->slice_vertical_position;
- else
- next_slice_start_vert_pos = ALIGN(pic_param->coded_height, 16) / 16;
-
- BEGIN_BCS_BATCH(batch, 4);
- OUT_BCS_BATCH(batch, MFD_VC1_BSD_OBJECT | (4 - 2));
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_size - (macroblock_offset >> 3));
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_offset + (macroblock_offset >> 3));
- OUT_BCS_BATCH(batch,
- slice_param->slice_vertical_position << 24 |
- next_slice_start_vert_pos << 16 |
- (macroblock_offset & 0x7));
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen6_mfd_vc1_decode_picture(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
- VAPictureParameterBufferVC1 *pic_param;
- VASliceParameterBufferVC1 *slice_param, *next_slice_param, *next_slice_group_param;
- dri_bo *slice_data_bo;
- int i, j;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
-
- gen6_mfd_vc1_decode_init(ctx, decode_state, gen6_mfd_context);
- intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- gen6_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_VC1, gen6_mfd_context);
- gen6_mfd_surface_state(ctx, decode_state, MFX_FORMAT_VC1, gen6_mfd_context);
- gen6_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_VC1, gen6_mfd_context);
- gen6_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_VC1, gen6_mfd_context);
- gen6_mfd_vc1_pic_state(ctx, decode_state, gen6_mfd_context);
- gen6_mfd_vc1_pred_pipe_state(ctx, decode_state, gen6_mfd_context);
- gen6_mfd_vc1_directmode_state(ctx, decode_state, gen6_mfd_context);
-
- for (j = 0; j < decode_state->num_slice_params; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferVC1 *)decode_state->slice_params[j]->buffer;
- slice_data_bo = decode_state->slice_datas[j]->bo;
- gen6_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_VC1, gen6_mfd_context);
-
- if (j == decode_state->num_slice_params - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VASliceParameterBufferVC1 *)decode_state->slice_params[j + 1]->buffer;
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
-
- if (i < decode_state->slice_params[j]->num_elements - 1)
- next_slice_param = slice_param + 1;
- else
- next_slice_param = next_slice_group_param;
-
- gen6_mfd_vc1_bsd_object(ctx, pic_param, slice_param, next_slice_param, slice_data_bo, gen6_mfd_context);
- slice_param++;
- }
- }
-
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-}
-
-static VAStatus
-gen6_mfd_decode_picture(VADriverContextP ctx,
- VAProfile profile,
- union codec_state *codec_state,
- struct hw_context *hw_context)
-
-{
- struct gen6_mfd_context *gen6_mfd_context = (struct gen6_mfd_context *)hw_context;
- struct decode_state *decode_state = &codec_state->decode;
- VAStatus vaStatus;
-
- assert(gen6_mfd_context);
-
- vaStatus = intel_decoder_sanity_check_input(ctx, profile, decode_state);
-
- if (vaStatus != VA_STATUS_SUCCESS)
- goto out;
-
- switch (profile) {
- case VAProfileMPEG2Simple:
- case VAProfileMPEG2Main:
- gen6_mfd_mpeg2_decode_picture(ctx, decode_state, gen6_mfd_context);
- break;
-
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- case VAProfileH264StereoHigh:
- gen6_mfd_avc_decode_picture(ctx, decode_state, gen6_mfd_context);
- break;
-
- case VAProfileVC1Simple:
- case VAProfileVC1Main:
- case VAProfileVC1Advanced:
- gen6_mfd_vc1_decode_picture(ctx, decode_state, gen6_mfd_context);
- break;
-
- default:
- assert(0);
- break;
- }
-
- vaStatus = VA_STATUS_SUCCESS;
-
-out:
- return vaStatus;
-}
-
-static void
-gen6_mfd_context_destroy(void *hw_context)
-{
- struct gen6_mfd_context *gen6_mfd_context = (struct gen6_mfd_context *)hw_context;
-
- dri_bo_unreference(gen6_mfd_context->post_deblocking_output.bo);
- gen6_mfd_context->post_deblocking_output.bo = NULL;
-
- dri_bo_unreference(gen6_mfd_context->pre_deblocking_output.bo);
- gen6_mfd_context->pre_deblocking_output.bo = NULL;
-
- dri_bo_unreference(gen6_mfd_context->intra_row_store_scratch_buffer.bo);
- gen6_mfd_context->intra_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
- gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
- gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(gen6_mfd_context->mpr_row_store_scratch_buffer.bo);
- gen6_mfd_context->mpr_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(gen6_mfd_context->bitplane_read_buffer.bo);
- gen6_mfd_context->bitplane_read_buffer.bo = NULL;
-
- intel_batchbuffer_free(gen6_mfd_context->base.batch);
- free(gen6_mfd_context);
-}
-
-struct hw_context *
-gen6_dec_hw_context_init(VADriverContextP ctx, struct object_config *obj_config)
-{
- struct intel_driver_data *intel = intel_driver_data(ctx);
- struct gen6_mfd_context *gen6_mfd_context = calloc(1, sizeof(struct gen6_mfd_context));
- int i;
-
- if (!gen6_mfd_context)
- return NULL;
-
- gen6_mfd_context->base.destroy = gen6_mfd_context_destroy;
- gen6_mfd_context->base.run = gen6_mfd_decode_picture;
- gen6_mfd_context->base.batch = intel_batchbuffer_new(intel, I915_EXEC_RENDER, 0);
-
- for (i = 0; i < ARRAY_ELEMS(gen6_mfd_context->reference_surface); i++) {
- gen6_mfd_context->reference_surface[i].surface_id = VA_INVALID_ID;
- gen6_mfd_context->reference_surface[i].frame_store_id = -1;
- gen6_mfd_context->reference_surface[i].obj_surface = NULL;
- }
-
- gen6_mfd_context->wa_mpeg2_slice_vertical_position = -1;
-
- return (struct hw_context *)gen6_mfd_context;
-}
diff --git a/src/gen6_mfd.h b/src/gen6_mfd.h
deleted file mode 100644
index f499803..0000000
--- a/src/gen6_mfd.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-
-#ifndef _GEN6_MFD_H_
-#define _GEN6_MFD_H_
-
-#include <xf86drm.h>
-#include <drm.h>
-#include <i915_drm.h>
-#include <intel_bufmgr.h>
-#include "i965_decoder.h"
-
-#define GEN6_VC1_I_PICTURE 0
-#define GEN6_VC1_P_PICTURE 1
-#define GEN6_VC1_B_PICTURE 2
-#define GEN6_VC1_BI_PICTURE 3
-#define GEN6_VC1_SKIPPED_PICTURE 4
-
-#define GEN6_VC1_SIMPLE_PROFILE 0
-#define GEN6_VC1_MAIN_PROFILE 1
-#define GEN6_VC1_ADVANCED_PROFILE 2
-#define GEN6_VC1_RESERVED_PROFILE 3
-
-struct gen6_vc1_surface
-{
- dri_bo *dmv;
- int picture_type;
-};
-
-struct hw_context;
-
-struct gen6_mfd_context
-{
- struct hw_context base;
-
- union {
- VAIQMatrixBufferMPEG2 mpeg2;
- } iq_matrix;
-
- GenFrameStoreContext fs_ctx;
- GenFrameStore reference_surface[MAX_GEN_REFERENCE_FRAMES];
- GenBuffer post_deblocking_output;
- GenBuffer pre_deblocking_output;
- GenBuffer intra_row_store_scratch_buffer;
- GenBuffer deblocking_filter_row_store_scratch_buffer;
- GenBuffer bsd_mpc_row_store_scratch_buffer;
- GenBuffer mpr_row_store_scratch_buffer;
- GenBuffer bitplane_read_buffer;
-
- int wa_mpeg2_slice_vertical_position;
-};
-
-#endif /* _GEN6_MFD_H_ */
diff --git a/src/gen6_vme.c b/src/gen6_vme.c
deleted file mode 100644
index 97dc3c9..0000000
--- a/src/gen6_vme.c
+++ /dev/null
@@ -1,676 +0,0 @@
-/*
- * Copyright © 2010-2011 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Zhou Chang <chang.zhou@intel.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "i965_encoder.h"
-#include "gen6_vme.h"
-#include "gen6_mfc.h"
-
-#define SURFACE_STATE_PADDED_SIZE MAX(SURFACE_STATE_PADDED_SIZE_GEN6, SURFACE_STATE_PADDED_SIZE_GEN7)
-#define SURFACE_STATE_OFFSET(index) (SURFACE_STATE_PADDED_SIZE * index)
-#define BINDING_TABLE_OFFSET(index) (SURFACE_STATE_OFFSET(MAX_MEDIA_SURFACES_GEN6) + sizeof(unsigned int) * index)
-
-#define CURBE_ALLOCATION_SIZE 37 /* in 256-bit */
-#define CURBE_TOTAL_DATA_LENGTH (4 * 32) /* in byte, it should be less than or equal to CURBE_ALLOCATION_SIZE * 32 */
-#define CURBE_URB_ENTRY_LENGTH 4 /* in 256-bit, it should be less than or equal to CURBE_TOTAL_DATA_LENGTH / 32 */
-
-enum VIDEO_CODING_TYPE{
- VIDEO_CODING_AVC = 0,
- VIDEO_CODING_SUM
-};
-
-enum AVC_VME_KERNEL_TYPE{
- AVC_VME_INTRA_SHADER = 0,
- AVC_VME_INTER_SHADER,
- AVC_VME_BATCHBUFFER,
- AVC_VME_KERNEL_SUM
-};
-
-static const uint32_t gen6_vme_intra_frame[][4] = {
-#include "shaders/vme/intra_frame.g6b"
-};
-
-static const uint32_t gen6_vme_inter_frame[][4] = {
-#include "shaders/vme/inter_frame.g6b"
-};
-
-static const uint32_t gen6_vme_batchbuffer[][4] = {
-#include "shaders/vme/batchbuffer.g6b"
-};
-
-static struct i965_kernel gen6_vme_kernels[] = {
- {
- "AVC VME Intra Frame",
- AVC_VME_INTRA_SHADER, /*index*/
- gen6_vme_intra_frame,
- sizeof(gen6_vme_intra_frame),
- NULL
- },
- {
- "AVC VME inter Frame",
- AVC_VME_INTER_SHADER,
- gen6_vme_inter_frame,
- sizeof(gen6_vme_inter_frame),
- NULL
- },
- {
- "AVC VME BATCHBUFFER",
- AVC_VME_BATCHBUFFER,
- gen6_vme_batchbuffer,
- sizeof(gen6_vme_batchbuffer),
- NULL
- },
-};
-
-/* only used for VME source surface state */
-static void
-gen6_vme_source_surface_state(VADriverContextP ctx,
- int index,
- struct object_surface *obj_surface,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- vme_context->vme_surface2_setup(ctx,
- &vme_context->gpe_context,
- obj_surface,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index));
-}
-
-static void
-gen6_vme_media_source_surface_state(VADriverContextP ctx,
- int index,
- struct object_surface *obj_surface,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- vme_context->vme_media_rw_surface_setup(ctx,
- &vme_context->gpe_context,
- obj_surface,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index),
- 0);
-}
-
-static void
-gen6_vme_output_buffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context)
-
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int is_intra = pSliceParameter->slice_type == SLICE_TYPE_I;
- int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
-
- vme_context->vme_output.num_blocks = width_in_mbs * height_in_mbs;
- vme_context->vme_output.pitch = 16; /* in bytes, always 16 */
-
- if (is_intra)
- vme_context->vme_output.size_block = INTRA_VME_OUTPUT_IN_BYTES;
- else
- vme_context->vme_output.size_block = INTER_VME_OUTPUT_IN_BYTES;
-
- vme_context->vme_output.bo = dri_bo_alloc(i965->intel.bufmgr,
- "VME output buffer",
- vme_context->vme_output.num_blocks * vme_context->vme_output.size_block,
- 0x1000);
- assert(vme_context->vme_output.bo);
- vme_context->vme_buffer_suface_setup(ctx,
- &vme_context->gpe_context,
- &vme_context->vme_output,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index));
-}
-
-static void
-gen6_vme_output_vme_batchbuffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context)
-
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
-
- vme_context->vme_batchbuffer.num_blocks = width_in_mbs * height_in_mbs + 1;
- vme_context->vme_batchbuffer.size_block = 32; /* 2 OWORDs */
- vme_context->vme_batchbuffer.pitch = 16;
- vme_context->vme_batchbuffer.bo = dri_bo_alloc(i965->intel.bufmgr,
- "VME batchbuffer",
- vme_context->vme_batchbuffer.num_blocks * vme_context->vme_batchbuffer.size_block,
- 0x1000);
- vme_context->vme_buffer_suface_setup(ctx,
- &vme_context->gpe_context,
- &vme_context->vme_batchbuffer,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index));
-}
-
-static VAStatus
-gen6_vme_surface_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct object_surface *obj_surface;
-
- /*Setup surfaces state*/
- /* current picture for encoding */
- obj_surface = encode_state->input_yuv_object;
- gen6_vme_source_surface_state(ctx, 0, obj_surface, encoder_context);
- gen6_vme_media_source_surface_state(ctx, 4, obj_surface, encoder_context);
-
- if (!is_intra) {
- VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int slice_type;
-
- slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
- assert(slice_type != SLICE_TYPE_I && slice_type != SLICE_TYPE_SI);
-
- intel_avc_vme_reference_state(ctx, encode_state, encoder_context, 0, 1, gen6_vme_source_surface_state);
-
- if (slice_type == SLICE_TYPE_B)
- intel_avc_vme_reference_state(ctx, encode_state, encoder_context, 1, 2, gen6_vme_source_surface_state);
- }
-
- /* VME output */
- gen6_vme_output_buffer_setup(ctx, encode_state, 3, encoder_context);
- gen6_vme_output_vme_batchbuffer_setup(ctx, encode_state, 5, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus gen6_vme_interface_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct gen6_interface_descriptor_data *desc;
- int i;
- dri_bo *bo;
-
- bo = vme_context->gpe_context.idrt.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- desc = bo->virtual;
-
- for (i = 0; i < vme_context->vme_kernel_sum; i++) {
- struct i965_kernel *kernel;
- kernel = &vme_context->gpe_context.kernels[i];
- assert(sizeof(*desc) == 32);
- /*Setup the descritor table*/
- memset(desc, 0, sizeof(*desc));
- desc->desc0.kernel_start_pointer = (kernel->bo->offset >> 6);
- desc->desc2.sampler_count = 1; /* FIXME: */
- desc->desc2.sampler_state_pointer = (vme_context->vme_state.bo->offset >> 5);
- desc->desc3.binding_table_entry_count = 1; /* FIXME: */
- desc->desc3.binding_table_pointer = (BINDING_TABLE_OFFSET(0) >> 5);
- desc->desc4.constant_urb_entry_read_offset = 0;
- desc->desc4.constant_urb_entry_read_length = CURBE_URB_ENTRY_LENGTH;
-
- /*kernel start*/
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0,
- i * sizeof(*desc) + offsetof(struct gen6_interface_descriptor_data, desc0),
- kernel->bo);
- /*Sampler State(VME state pointer)*/
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- (1 << 2), //
- i * sizeof(*desc) + offsetof(struct gen6_interface_descriptor_data, desc2),
- vme_context->vme_state.bo);
- desc++;
- }
- dri_bo_unmap(bo);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus gen6_vme_constant_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- // unsigned char *constant_buffer;
- unsigned int *vme_state_message;
- int mv_num = 32;
- if (vme_context->h264_level >= 30) {
- mv_num = 16;
- if (vme_context->h264_level >= 31)
- mv_num = 8;
- }
-
- dri_bo_map(vme_context->gpe_context.curbe.bo, 1);
- assert(vme_context->gpe_context.curbe.bo->virtual);
- // constant_buffer = vme_context->curbe.bo->virtual;
- vme_state_message = (unsigned int *)vme_context->gpe_context.curbe.bo->virtual;
- vme_state_message[31] = mv_num;
-
- /*TODO copy buffer into CURB*/
-
- dri_bo_unmap( vme_context->gpe_context.curbe.bo);
-
- return VA_STATUS_SUCCESS;
-}
-
-static const unsigned int intra_mb_mode_cost_table[] = {
- 0x31110001, // for qp0
- 0x09110001, // for qp1
- 0x15030001, // for qp2
- 0x0b030001, // for qp3
- 0x0d030011, // for qp4
- 0x17210011, // for qp5
- 0x41210011, // for qp6
- 0x19210011, // for qp7
- 0x25050003, // for qp8
- 0x1b130003, // for qp9
- 0x1d130003, // for qp10
- 0x27070021, // for qp11
- 0x51310021, // for qp12
- 0x29090021, // for qp13
- 0x35150005, // for qp14
- 0x2b0b0013, // for qp15
- 0x2d0d0013, // for qp16
- 0x37170007, // for qp17
- 0x61410031, // for qp18
- 0x39190009, // for qp19
- 0x45250015, // for qp20
- 0x3b1b000b, // for qp21
- 0x3d1d000d, // for qp22
- 0x47270017, // for qp23
- 0x71510041, // for qp24 ! center for qp=0..30
- 0x49290019, // for qp25
- 0x55350025, // for qp26
- 0x4b2b001b, // for qp27
- 0x4d2d001d, // for qp28
- 0x57370027, // for qp29
- 0x81610051, // for qp30
- 0x57270017, // for qp31
- 0x81510041, // for qp32 ! center for qp=31..51
- 0x59290019, // for qp33
- 0x65350025, // for qp34
- 0x5b2b001b, // for qp35
- 0x5d2d001d, // for qp36
- 0x67370027, // for qp37
- 0x91610051, // for qp38
- 0x69390029, // for qp39
- 0x75450035, // for qp40
- 0x6b3b002b, // for qp41
- 0x6d3d002d, // for qp42
- 0x77470037, // for qp43
- 0xa1710061, // for qp44
- 0x79490039, // for qp45
- 0x85550045, // for qp46
- 0x7b4b003b, // for qp47
- 0x7d4d003d, // for qp48
- 0x87570047, // for qp49
- 0xb1810071, // for qp50
- 0x89590049 // for qp51
-};
-
-static void gen6_vme_state_setup_fixup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- unsigned int *vme_state_message)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
-
- if (slice_param->slice_type != SLICE_TYPE_I &&
- slice_param->slice_type != SLICE_TYPE_SI)
- return;
-
- if (encoder_context->rate_control_mode == VA_RC_CQP)
- vme_state_message[16] = intra_mb_mode_cost_table[pic_param->pic_init_qp + slice_param->slice_qp_delta];
- else
- vme_state_message[16] = intra_mb_mode_cost_table[mfc_context->brc.qp_prime_y[encoder_context->layer.curr_frame_layer_id][SLICE_TYPE_I]];
-}
-
-static VAStatus gen6_vme_vme_state_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- unsigned int *vme_state_message;
- int i;
-
- //building VME state message
- dri_bo_map(vme_context->vme_state.bo, 1);
- assert(vme_context->vme_state.bo->virtual);
- vme_state_message = (unsigned int *)vme_context->vme_state.bo->virtual;
-
- if (encoder_context->quality_level != ENCODER_LOW_QUALITY) {
- vme_state_message[0] = 0x01010101;
- vme_state_message[1] = 0x10010101;
- vme_state_message[2] = 0x0F0F0F0F;
- vme_state_message[3] = 0x100F0F0F;
- vme_state_message[4] = 0x01010101;
- vme_state_message[5] = 0x10010101;
- vme_state_message[6] = 0x0F0F0F0F;
- vme_state_message[7] = 0x100F0F0F;
- vme_state_message[8] = 0x01010101;
- vme_state_message[9] = 0x10010101;
- vme_state_message[10] = 0x0F0F0F0F;
- vme_state_message[11] = 0x000F0F0F;
- vme_state_message[12] = 0x00;
- vme_state_message[13] = 0x00;
- } else {
- vme_state_message[0] = 0x10010101;
- vme_state_message[1] = 0x100F0F0F;
- vme_state_message[2] = 0x10010101;
- vme_state_message[3] = 0x000F0F0F;
- vme_state_message[4] = 0;
- vme_state_message[5] = 0;
- vme_state_message[6] = 0;
- vme_state_message[7] = 0;
- vme_state_message[8] = 0;
- vme_state_message[9] = 0;
- vme_state_message[10] = 0;
- vme_state_message[11] = 0;
- vme_state_message[12] = 0;
- vme_state_message[13] = 0;
- }
-
- vme_state_message[14] = 0x4a4a;
- vme_state_message[15] = 0x0;
- vme_state_message[16] = 0x4a4a4a4a;
- vme_state_message[17] = 0x4a4a4a4a;
- vme_state_message[18] = 0x21110100;
- vme_state_message[19] = 0x61514131;
-
- for(i = 20; i < 32; i++) {
- vme_state_message[i] = 0;
- }
- //vme_state_message[16] = 0x42424242; //cost function LUT set 0 for Intra
-
- gen6_vme_state_setup_fixup(ctx, encode_state, encoder_context, vme_state_message);
-
- dri_bo_unmap( vme_context->vme_state.bo);
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen6_vme_fill_vme_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- int mb_width, int mb_height,
- int kernel,
- int transform_8x8_mode_flag,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- int number_mb_cmds;
- int mb_x = 0, mb_y = 0;
- int i, s;
- unsigned int *command_ptr;
-
- dri_bo_map(vme_context->vme_batchbuffer.bo, 1);
- command_ptr = vme_context->vme_batchbuffer.bo->virtual;
-
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[s]->buffer;
- int slice_mb_begin = pSliceParameter->macroblock_address;
- int slice_mb_number = pSliceParameter->num_macroblocks;
-
- for (i = 0; i < slice_mb_number; ) {
- int mb_count = i + slice_mb_begin;
- mb_x = mb_count % mb_width;
- mb_y = mb_count / mb_width;
- if( i == 0 ) {
- number_mb_cmds = mb_width; // we must mark the slice edge.
- } else if ( (i + 128 ) <= slice_mb_number) {
- number_mb_cmds = 128;
- } else {
- number_mb_cmds = slice_mb_number - i;
- }
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (9 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
-
- /*inline data */
- *command_ptr++ = (mb_width << 16 | mb_y << 8 | mb_x);
- *command_ptr++ = (number_mb_cmds << 16 | transform_8x8_mode_flag | ((i==0) << 1));
- *command_ptr++ = encoder_context->quality_level;
-
- i += number_mb_cmds;
- }
- }
-
- *command_ptr++ = 0;
- *command_ptr++ = MI_BATCH_BUFFER_END;
-
- dri_bo_unmap(vme_context->vme_batchbuffer.bo);
-}
-
-static void gen6_vme_media_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- dri_bo *bo;
-
- i965_gpe_context_init(ctx, &vme_context->gpe_context);
-
- /* VME output buffer */
- dri_bo_unreference(vme_context->vme_output.bo);
- vme_context->vme_output.bo = NULL;
-
- dri_bo_unreference(vme_context->vme_batchbuffer.bo);
- vme_context->vme_batchbuffer.bo = NULL;
-
- /* VME state */
- dri_bo_unreference(vme_context->vme_state.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- 1024*16, 64);
- assert(bo);
- vme_context->vme_state.bo = bo;
-}
-
-static void gen6_vme_pipeline_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- int is_intra = pSliceParameter->slice_type == SLICE_TYPE_I;
- int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
-
- gen6_vme_fill_vme_batchbuffer(ctx,
- encode_state,
- width_in_mbs, height_in_mbs,
- is_intra ? AVC_VME_INTRA_SHADER : AVC_VME_INTER_SHADER,
- pPicParameter->pic_fields.bits.transform_8x8_mode_flag,
- encoder_context);
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- gen6_gpe_pipeline_setup(ctx, &vme_context->gpe_context, batch);
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8));
- OUT_RELOC(batch,
- vme_context->vme_batchbuffer.bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- ADVANCE_BATCH(batch);
-
- intel_batchbuffer_end_atomic(batch);
-}
-
-static VAStatus gen6_vme_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int is_intra = pSliceParameter->slice_type == SLICE_TYPE_I;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- if (!vme_context->h264_level ||
- (vme_context->h264_level != pSequenceParameter->level_idc)) {
- vme_context->h264_level = pSequenceParameter->level_idc;
- }
- /*Setup all the memory object*/
- gen6_vme_surface_setup(ctx, encode_state, is_intra, encoder_context);
- gen6_vme_interface_setup(ctx, encode_state, encoder_context);
- gen6_vme_constant_setup(ctx, encode_state, encoder_context);
- gen6_vme_vme_state_setup(ctx, encode_state, is_intra, encoder_context);
-
- /*Programing media pipeline*/
- gen6_vme_pipeline_programing(ctx, encode_state, encoder_context);
-
- return vaStatus;
-}
-
-static VAStatus gen6_vme_run(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- intel_batchbuffer_flush(batch);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus gen6_vme_stop(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen6_vme_pipeline(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- gen6_vme_media_init(ctx, encoder_context);
- gen6_vme_prepare(ctx, encode_state, encoder_context);
- gen6_vme_run(ctx, encode_state, encoder_context);
- gen6_vme_stop(ctx, encode_state, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen6_vme_context_destroy(void *context)
-{
- struct gen6_vme_context *vme_context = context;
-
- i965_gpe_context_destroy(&vme_context->gpe_context);
-
- dri_bo_unreference(vme_context->vme_output.bo);
- vme_context->vme_output.bo = NULL;
-
- dri_bo_unreference(vme_context->vme_state.bo);
- vme_context->vme_state.bo = NULL;
-
- dri_bo_unreference(vme_context->vme_batchbuffer.bo);
- vme_context->vme_batchbuffer.bo = NULL;
-
- free(vme_context->qp_per_mb);
- vme_context->qp_per_mb = NULL;
-
- free(vme_context);
-}
-
-Bool gen6_vme_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = NULL;
-
- if (encoder_context->codec != CODEC_H264) {
- /* Never get here */
- assert(0);
- return False;
- }
-
- vme_context = calloc(1, sizeof(struct gen6_vme_context));
-
- if (!vme_context)
- return False;
-
- vme_context->gpe_context.surface_state_binding_table.length =
- (SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_MEDIA_SURFACES_GEN6;
-
- vme_context->gpe_context.idrt.max_entries = MAX_INTERFACE_DESC_GEN6;
- vme_context->gpe_context.idrt.entry_size = sizeof(struct gen6_interface_descriptor_data);
- vme_context->gpe_context.curbe.length = CURBE_TOTAL_DATA_LENGTH;
-
- vme_context->gpe_context.vfe_state.max_num_threads = 60 - 1;
- vme_context->gpe_context.vfe_state.num_urb_entries = 16;
- vme_context->gpe_context.vfe_state.gpgpu_mode = 0;
- vme_context->gpe_context.vfe_state.urb_entry_size = 59 - 1;
- vme_context->gpe_context.vfe_state.curbe_allocation_size = CURBE_ALLOCATION_SIZE - 1;
-
- vme_context->video_coding_type = VIDEO_CODING_AVC;
- vme_context->vme_kernel_sum = AVC_VME_KERNEL_SUM;
- i965_gpe_load_kernels(ctx,
- &vme_context->gpe_context,
- gen6_vme_kernels,
- vme_context->vme_kernel_sum);
-
- encoder_context->vme_pipeline = gen6_vme_pipeline;
- vme_context->vme_surface2_setup = i965_gpe_surface2_setup;
- vme_context->vme_media_rw_surface_setup = i965_gpe_media_rw_surface_setup;
- vme_context->vme_buffer_suface_setup = i965_gpe_buffer_suface_setup;
-
- encoder_context->vme_context = vme_context;
- encoder_context->vme_context_destroy = gen6_vme_context_destroy;
-
- return True;
-}
diff --git a/src/gen6_vme.h b/src/gen6_vme.h
deleted file mode 100644
index f94085f..0000000
--- a/src/gen6_vme.h
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWAR
- *
- * Authors:
- * Zhou Chang <chang.zhou@intel.com>
- *
- */
-
-#ifndef _GEN6_VME_H_
-#define _GEN6_VME_H_
-
-#include <xf86drm.h>
-#include <drm.h>
-#include <i915_drm.h>
-#include <intel_bufmgr.h>
-
-#include "i965_gpe_utils.h"
-
-#define INTRA_VME_OUTPUT_IN_BYTES 16 /* in bytes */
-#define INTRA_VME_OUTPUT_IN_DWS (INTRA_VME_OUTPUT_IN_BYTES / 4)
-#define INTER_VME_OUTPUT_IN_BYTES 160 /* the first 128 bytes for MVs and the last 32 bytes for other info */
-#define INTER_VME_OUTPUT_IN_DWS (INTER_VME_OUTPUT_IN_BYTES / 4)
-
-#define MAX_INTERFACE_DESC_GEN6 MAX_GPE_KERNELS
-#define MAX_MEDIA_SURFACES_GEN6 34
-
-#define GEN6_VME_KERNEL_NUMBER 3
-
-#define INTEL_COST_TABLE_OFFSET 8
-
-struct encode_state;
-struct intel_encoder_context;
-
-struct gen6_vme_context
-{
- struct i965_gpe_context gpe_context;
-
- struct {
- dri_bo *bo;
- } vme_state;
-
- struct i965_buffer_surface vme_output;
- struct i965_buffer_surface vme_batchbuffer;
-
-
- void (*vme_surface2_setup)(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct object_surface *obj_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset);
- void (*vme_media_rw_surface_setup)(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct object_surface *obj_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset,
- int write_enabled);
- void (*vme_buffer_suface_setup)(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct i965_buffer_surface *buffer_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset);
- void (*vme_media_chroma_surface_setup)(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct object_surface *obj_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset,
- int write_enabled);
- void *vme_state_message;
- unsigned int h264_level;
- unsigned int hevc_level;
- unsigned int video_coding_type;
- unsigned int vme_kernel_sum;
- unsigned int mpeg2_level;
-
- struct object_surface *used_reference_objects[2];
- void *used_references[2];
- unsigned int ref_index_in_mb[2];
-
- dri_bo *i_qp_cost_table;
- dri_bo *p_qp_cost_table;
- dri_bo *b_qp_cost_table;
- int cost_table_size;
-
- /* one buffer define qp per mb. one byte for every mb.
- * If it needs to be accessed by GPU, it will be changed to dri_bo.
- */
- bool roi_enabled;
- char *qp_per_mb;
- int saved_width_mbs, saved_height_mbs;
-};
-
-#define MPEG2_PIC_WIDTH_HEIGHT 30
-#define MPEG2_MV_RANGE 29
-#define MPEG2_LEVEL_MASK 0x0f
-#define MPEG2_LEVEL_LOW 0x0a
-#define MPEG2_LEVEL_MAIN 0x08
-#define MPEG2_LEVEL_HIGH 0x04
-
-Bool gen6_vme_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context);
-Bool gen75_vme_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context);
-
-extern void intel_vme_update_mbmv_cost(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
-
-void intel_vme_vp8_update_mbmv_cost(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
-
-Bool gen7_vme_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context);
-
-#define MODE_INTRA_NONPRED 0
-#define MODE_INTRA_16X16 1
-#define MODE_INTRA_8X8 2
-#define MODE_INTRA_4X4 3
-#define MODE_INTER_16X8 4
-#define MODE_INTER_8X16 4
-#define MODE_INTER_8X8 5
-#define MODE_INTER_8X4 6
-#define MODE_INTER_4X8 6
-#define MODE_INTER_4X4 7
-#define MODE_INTER_16X16 8
-#define MODE_INTER_BWD 9
-#define MODE_REFID_COST 10
-#define MODE_CHROMA_INTRA 11
-
-#define MODE_INTER_MV0 12
-#define MODE_INTER_MV1 13
-#define MODE_INTER_MV2 14
-
-#define MODE_INTER_MV3 15
-#define MODE_INTER_MV4 16
-#define MODE_INTER_MV5 17
-#define MODE_INTER_MV6 18
-#define MODE_INTER_MV7 19
-
-#define INTRA_PRED_AVAIL_FLAG_AE 0x60
-#define INTRA_PRED_AVAIL_FLAG_B 0x10
-#define INTRA_PRED_AVAIL_FLAG_C 0x8
-#define INTRA_PRED_AVAIL_FLAG_D 0x4
-#define INTRA_PRED_AVAIL_FLAG_BCD_MASK 0x1C
-
-extern void
-gen7_vme_walker_fill_vme_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- int mb_width, int mb_height,
- int kernel,
- int transform_8x8_mode_flag,
- struct intel_encoder_context *encoder_context);
-
-extern void
-gen7_vme_scoreboard_init(VADriverContextP ctx, struct gen6_vme_context *vme_context);
-
-extern void
-intel_vme_mpeg2_state_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
-
-extern void
-gen7_vme_mpeg2_walker_fill_vme_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- int mb_width, int mb_height,
- int kernel,
- struct intel_encoder_context *encoder_context);
-
-void
-intel_avc_vme_reference_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int list_index,
- int surface_index,
- void (* vme_source_surface_state)(
- VADriverContextP ctx,
- int index,
- struct object_surface *obj_surface,
- struct intel_encoder_context *encoder_context));
-
-/* HEVC */
-void
-intel_hevc_vme_reference_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int list_index,
- int surface_index,
- void (* vme_source_surface_state)(
- VADriverContextP ctx,
- int index,
- struct object_surface *obj_surface,
- struct intel_encoder_context *encoder_context));
-
-void intel_vme_hevc_update_mbmv_cost(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
-
-
-extern Bool gen8_vme_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context);
-
-extern Bool gen9_vme_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context);
-
-extern void
-intel_h264_initialize_mbmv_cost(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
-
-extern void
-intel_h264_setup_cost_surface(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset);
-
-extern void
-intel_h264_enc_roi_config(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
-
-#endif /* _GEN6_VME_H_ */
diff --git a/src/gen75_mfc.c b/src/gen75_mfc.c
deleted file mode 100644
index 7b76b99..0000000
--- a/src/gen75_mfc.c
+++ /dev/null
@@ -1,2586 +0,0 @@
-/*
- * Copyright © 2010-2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <assert.h>
-
-#include "intel_batchbuffer.h"
-#include "i965_defines.h"
-#include "i965_structs.h"
-#include "i965_drv_video.h"
-#include "i965_encoder.h"
-#include "i965_encoder_utils.h"
-#include "gen6_mfc.h"
-#include "gen6_vme.h"
-#include "intel_media.h"
-
-#define AVC_INTRA_RDO_OFFSET 4
-#define AVC_INTER_RDO_OFFSET 10
-#define AVC_INTER_MSG_OFFSET 8
-#define AVC_INTER_MV_OFFSET 48
-#define AVC_RDO_MASK 0xFFFF
-
-#define SURFACE_STATE_PADDED_SIZE MAX(SURFACE_STATE_PADDED_SIZE_GEN6, SURFACE_STATE_PADDED_SIZE_GEN7)
-#define SURFACE_STATE_OFFSET(index) (SURFACE_STATE_PADDED_SIZE * index)
-#define BINDING_TABLE_OFFSET(index) (SURFACE_STATE_OFFSET(MAX_MEDIA_SURFACES_GEN6) + sizeof(unsigned int) * index)
-
-#define B0_STEP_REV 2
-#define IS_STEPPING_BPLUS(i965) ((i965->intel.revision) >= B0_STEP_REV)
-
-static const uint32_t gen75_mfc_batchbuffer_avc[][4] = {
-#include "shaders/utils/mfc_batchbuffer_hsw.g75b"
-};
-
-static struct i965_kernel gen75_mfc_kernels[] = {
- {
- "MFC AVC INTRA BATCHBUFFER ",
- MFC_BATCHBUFFER_AVC_INTRA,
- gen75_mfc_batchbuffer_avc,
- sizeof(gen75_mfc_batchbuffer_avc),
- NULL
- },
-};
-
-#define INTER_MODE_MASK 0x03
-#define INTER_8X8 0x03
-#define INTER_16X8 0x01
-#define INTER_8X16 0x02
-#define SUBMB_SHAPE_MASK 0x00FF00
-
-#define INTER_MV8 (4 << 20)
-#define INTER_MV32 (6 << 20)
-
-
-static void
-gen75_mfc_pipe_mode_select(VADriverContextP ctx,
- int standard_select,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- assert(standard_select == MFX_FORMAT_MPEG2 ||
- standard_select == MFX_FORMAT_AVC);
-
- BEGIN_BCS_BATCH(batch, 5);
-
- OUT_BCS_BATCH(batch, MFX_PIPE_MODE_SELECT | (5 - 2));
- OUT_BCS_BATCH(batch,
- (MFX_LONG_MODE << 17) | /* Must be long format for encoder */
- (MFD_MODE_VLD << 15) | /* VLD mode */
- (0 << 10) | /* Stream-Out Enable */
- ((!!mfc_context->post_deblocking_output.bo) << 9) | /* Post Deblocking Output */
- ((!!mfc_context->pre_deblocking_output.bo) << 8) | /* Pre Deblocking Output */
- (0 << 5) | /* not in stitch mode */
- (1 << 4) | /* encoding mode */
- (standard_select << 0)); /* standard select: avc or mpeg2 */
- OUT_BCS_BATCH(batch,
- (0 << 7) | /* expand NOA bus flag */
- (0 << 6) | /* disable slice-level clock gating */
- (0 << 5) | /* disable clock gating for NOA */
- (0 << 4) | /* terminate if AVC motion and POC table error occurs */
- (0 << 3) | /* terminate if AVC mbdata error occurs */
- (0 << 2) | /* terminate if AVC CABAC/CAVLC decode error occurs */
- (0 << 1) |
- (0 << 0));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfc_surface_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- BEGIN_BCS_BATCH(batch, 6);
-
- OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- ((mfc_context->surface_state.height - 1) << 18) |
- ((mfc_context->surface_state.width - 1) << 4));
- OUT_BCS_BATCH(batch,
- (MFX_SURFACE_PLANAR_420_8 << 28) | /* 420 planar YUV surface */
- (1 << 27) | /* must be 1 for interleave U/V, hardware requirement */
- (0 << 22) | /* surface object control state, FIXME??? */
- ((mfc_context->surface_state.w_pitch - 1) << 3) | /* pitch */
- (0 << 2) | /* must be 0 for interleave U/V */
- (1 << 1) | /* must be tiled */
- (I965_TILEWALK_YMAJOR << 0)); /* tile walk, TILEWALK_YMAJOR */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* must be 0 for interleave U/V */
- (mfc_context->surface_state.h_pitch)); /* y offset for U(cb) */
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfc_ind_obj_base_addr_state_bplus(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- BEGIN_BCS_BATCH(batch, 26);
-
- OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (26 - 2));
- /* the DW1-3 is for the MFX indirect bistream offset */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- /* the DW4-5 is the MFX upper bound */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW6-10 is for MFX Indirect MV Object Base Address */
- OUT_BCS_RELOC(batch, vme_context->vme_output.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0x80000000); /* must set, up to 2G */
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW11-15 is for MFX IT-COFF. Not used on encoder */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW16-20 is for MFX indirect DBLK. Not used on encoder */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW21-25 is for MFC Indirect PAK-BSE Object Base Address for Encoder*/
- OUT_BCS_RELOC(batch,
- mfc_context->mfc_indirect_pak_bse_object.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- OUT_BCS_RELOC(batch,
- mfc_context->mfc_indirect_pak_bse_object.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- mfc_context->mfc_indirect_pak_bse_object.end_offset);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfc_ind_obj_base_addr_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
-
- if (IS_STEPPING_BPLUS(i965)) {
- gen75_mfc_ind_obj_base_addr_state_bplus(ctx, encoder_context);
- return;
- }
-
- BEGIN_BCS_BATCH(batch, 11);
-
- OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (11 - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- /* MFX Indirect MV Object Base Address */
- OUT_BCS_RELOC(batch, vme_context->vme_output.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
- OUT_BCS_BATCH(batch, 0x80000000); /* must set, up to 2G */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- /*MFC Indirect PAK-BSE Object Base Address for Encoder*/
- OUT_BCS_RELOC(batch,
- mfc_context->mfc_indirect_pak_bse_object.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_RELOC(batch,
- mfc_context->mfc_indirect_pak_bse_object.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- mfc_context->mfc_indirect_pak_bse_object.end_offset);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfc_avc_img_state(VADriverContextP ctx, struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
-
- int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
- int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
-
- BEGIN_BCS_BATCH(batch, 16);
-
- OUT_BCS_BATCH(batch, MFX_AVC_IMG_STATE | (16 - 2));
- /*DW1. MB setting of frame */
- OUT_BCS_BATCH(batch,
- ((width_in_mbs * height_in_mbs - 1) & 0xFFFF));
- OUT_BCS_BATCH(batch,
- ((height_in_mbs - 1) << 16) |
- ((width_in_mbs - 1) << 0));
- /* DW3 QP setting */
- OUT_BCS_BATCH(batch,
- (0 << 24) | /* Second Chroma QP Offset */
- (0 << 16) | /* Chroma QP Offset */
- (0 << 14) | /* Max-bit conformance Intra flag */
- (0 << 13) | /* Max Macroblock size conformance Inter flag */
- (pPicParameter->pic_fields.bits.weighted_pred_flag << 12) | /*Weighted_Pred_Flag */
- (pPicParameter->pic_fields.bits.weighted_bipred_idc << 10) | /* Weighted_BiPred_Idc */
- (0 << 8) | /* FIXME: Image Structure */
- (0 << 0) ); /* Current Decoed Image Frame Store ID, reserved in Encode mode */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* Mininum Frame size */
- (0 << 15) | /* Disable reading of Macroblock Status Buffer */
- (0 << 14) | /* Load BitStream Pointer only once, 1 slic 1 frame */
- (0 << 13) | /* CABAC 0 word insertion test enable */
- (1 << 12) | /* MVUnpackedEnable,compliant to DXVA */
- (1 << 10) | /* Chroma Format IDC, 4:2:0 */
- (0 << 8) | /* FIXME: MbMvFormatFlag */
- (pPicParameter->pic_fields.bits.entropy_coding_mode_flag << 7) | /*0:CAVLC encoding mode,1:CABAC*/
- (0 << 6) | /* Only valid for VLD decoding mode */
- (0 << 5) | /* Constrained Intra Predition Flag, from PPS */
- (0 << 4) | /* Direct 8x8 inference flag */
- (pPicParameter->pic_fields.bits.transform_8x8_mode_flag << 3) | /*8x8 or 4x4 IDCT Transform Mode Flag*/
- (1 << 2) | /* Frame MB only flag */
- (0 << 1) | /* MBAFF mode is in active */
- (0 << 0)); /* Field picture flag */
- /* DW5 Trellis quantization */
- OUT_BCS_BATCH(batch, 0); /* Mainly about MB rate control and debug, just ignoring */
- OUT_BCS_BATCH(batch, /* Inter and Intra Conformance Max size limit */
- (0xBB8 << 16) | /* InterMbMaxSz */
- (0xEE8) ); /* IntraMbMaxSz */
- OUT_BCS_BATCH(batch, 0); /* Reserved */
- /* DW8. QP delta */
- OUT_BCS_BATCH(batch, 0); /* Slice QP Delta for bitrate control */
- OUT_BCS_BATCH(batch, 0); /* Slice QP Delta for bitrate control */
- /* DW10. Bit setting for MB */
- OUT_BCS_BATCH(batch, 0x8C000000);
- OUT_BCS_BATCH(batch, 0x00010000);
- /* DW12. */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0x02010100);
- /* DW14. For short format */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfc_qm_state(VADriverContextP ctx,
- int qm_type,
- unsigned int *qm,
- int qm_length,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- unsigned int qm_buffer[16];
-
- assert(qm_length <= 16);
- assert(sizeof(*qm) == 4);
- memcpy(qm_buffer, qm, qm_length * 4);
-
- BEGIN_BCS_BATCH(batch, 18);
- OUT_BCS_BATCH(batch, MFX_QM_STATE | (18 - 2));
- OUT_BCS_BATCH(batch, qm_type << 0);
- intel_batchbuffer_data(batch, qm_buffer, 16 * 4);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfc_avc_qm_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- unsigned int qm[16] = {
- 0x10101010, 0x10101010, 0x10101010, 0x10101010,
- 0x10101010, 0x10101010, 0x10101010, 0x10101010,
- 0x10101010, 0x10101010, 0x10101010, 0x10101010,
- 0x10101010, 0x10101010, 0x10101010, 0x10101010
- };
-
- gen75_mfc_qm_state(ctx, MFX_QM_AVC_4X4_INTRA_MATRIX, qm, 12, encoder_context);
- gen75_mfc_qm_state(ctx, MFX_QM_AVC_4X4_INTER_MATRIX, qm, 12, encoder_context);
- gen75_mfc_qm_state(ctx, MFX_QM_AVC_8x8_INTRA_MATRIX, qm, 16, encoder_context);
- gen75_mfc_qm_state(ctx, MFX_QM_AVC_8x8_INTER_MATRIX, qm, 16, encoder_context);
-}
-
-static void
-gen75_mfc_fqm_state(VADriverContextP ctx,
- int fqm_type,
- unsigned int *fqm,
- int fqm_length,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- unsigned int fqm_buffer[32];
-
- assert(fqm_length <= 32);
- assert(sizeof(*fqm) == 4);
- memcpy(fqm_buffer, fqm, fqm_length * 4);
-
- BEGIN_BCS_BATCH(batch, 34);
- OUT_BCS_BATCH(batch, MFX_FQM_STATE | (34 - 2));
- OUT_BCS_BATCH(batch, fqm_type << 0);
- intel_batchbuffer_data(batch, fqm_buffer, 32 * 4);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfc_avc_fqm_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- unsigned int qm[32] = {
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000
- };
-
- gen75_mfc_fqm_state(ctx, MFX_QM_AVC_4X4_INTRA_MATRIX, qm, 24, encoder_context);
- gen75_mfc_fqm_state(ctx, MFX_QM_AVC_4X4_INTER_MATRIX, qm, 24, encoder_context);
- gen75_mfc_fqm_state(ctx, MFX_QM_AVC_8x8_INTRA_MATRIX, qm, 32, encoder_context);
- gen75_mfc_fqm_state(ctx, MFX_QM_AVC_8x8_INTER_MATRIX, qm, 32, encoder_context);
-}
-
-static void
-gen75_mfc_avc_insert_object(VADriverContextP ctx, struct intel_encoder_context *encoder_context,
- unsigned int *insert_data, int lenght_in_dws, int data_bits_in_last_dw,
- int skip_emul_byte_count, int is_last_header, int is_end_of_slice, int emulation_flag,
- struct intel_batchbuffer *batch)
-{
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, lenght_in_dws + 2);
-
- OUT_BCS_BATCH(batch, MFX_INSERT_OBJECT | (lenght_in_dws + 2 - 2));
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* always start at offset 0 */
- (data_bits_in_last_dw << 8) |
- (skip_emul_byte_count << 4) |
- (!!emulation_flag << 3) |
- ((!!is_last_header) << 2) |
- ((!!is_end_of_slice) << 1) |
- (0 << 0)); /* FIXME: ??? */
- intel_batchbuffer_data(batch, insert_data, lenght_in_dws * 4);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-
-static void gen75_mfc_init(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- dri_bo *bo;
- int i;
- int width_in_mbs = 0;
- int height_in_mbs = 0;
- int slice_batchbuffer_size;
-
- if (encoder_context->codec == CODEC_H264 ||
- encoder_context->codec == CODEC_H264_MVC) {
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- height_in_mbs = pSequenceParameter->picture_height_in_mbs;
- } else {
- VAEncSequenceParameterBufferMPEG2 *pSequenceParameter = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
-
- assert(encoder_context->codec == CODEC_MPEG2);
-
- width_in_mbs = ALIGN(pSequenceParameter->picture_width, 16) / 16;
- height_in_mbs = ALIGN(pSequenceParameter->picture_height, 16) / 16;
- }
-
- slice_batchbuffer_size = 64 * width_in_mbs * height_in_mbs + 4096 +
- (SLICE_HEADER + SLICE_TAIL) * encode_state->num_slice_params_ext;
-
- /*Encode common setup for MFC*/
- dri_bo_unreference(mfc_context->post_deblocking_output.bo);
- mfc_context->post_deblocking_output.bo = NULL;
-
- dri_bo_unreference(mfc_context->pre_deblocking_output.bo);
- mfc_context->pre_deblocking_output.bo = NULL;
-
- dri_bo_unreference(mfc_context->uncompressed_picture_source.bo);
- mfc_context->uncompressed_picture_source.bo = NULL;
-
- dri_bo_unreference(mfc_context->mfc_indirect_pak_bse_object.bo);
- mfc_context->mfc_indirect_pak_bse_object.bo = NULL;
-
- for (i = 0; i < NUM_MFC_DMV_BUFFERS; i++){
- if (mfc_context->direct_mv_buffers[i].bo != NULL)
- dri_bo_unreference(mfc_context->direct_mv_buffers[i].bo);
- mfc_context->direct_mv_buffers[i].bo = NULL;
- }
-
- for (i = 0; i < MAX_MFC_REFERENCE_SURFACES; i++){
- if (mfc_context->reference_surfaces[i].bo != NULL)
- dri_bo_unreference(mfc_context->reference_surfaces[i].bo);
- mfc_context->reference_surfaces[i].bo = NULL;
- }
-
- dri_bo_unreference(mfc_context->intra_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- width_in_mbs * 64,
- 64);
- assert(bo);
- mfc_context->intra_row_store_scratch_buffer.bo = bo;
-
- dri_bo_unreference(mfc_context->macroblock_status_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- width_in_mbs * height_in_mbs * 16,
- 64);
- assert(bo);
- mfc_context->macroblock_status_buffer.bo = bo;
-
- dri_bo_unreference(mfc_context->deblocking_filter_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- 4 * width_in_mbs * 64, /* 4 * width_in_mbs * 64 */
- 64);
- assert(bo);
- mfc_context->deblocking_filter_row_store_scratch_buffer.bo = bo;
-
- dri_bo_unreference(mfc_context->bsd_mpc_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- 2 * width_in_mbs * 64, /* 2 * width_in_mbs * 64 */
- 0x1000);
- assert(bo);
- mfc_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
-
- dri_bo_unreference(mfc_context->mfc_batchbuffer_surface.bo);
- mfc_context->mfc_batchbuffer_surface.bo = NULL;
-
- dri_bo_unreference(mfc_context->aux_batchbuffer_surface.bo);
- mfc_context->aux_batchbuffer_surface.bo = NULL;
-
- if (mfc_context->aux_batchbuffer)
- intel_batchbuffer_free(mfc_context->aux_batchbuffer);
-
- mfc_context->aux_batchbuffer = intel_batchbuffer_new(&i965->intel, I915_EXEC_BSD,
- slice_batchbuffer_size);
- mfc_context->aux_batchbuffer_surface.bo = mfc_context->aux_batchbuffer->buffer;
- dri_bo_reference(mfc_context->aux_batchbuffer_surface.bo);
- mfc_context->aux_batchbuffer_surface.pitch = 16;
- mfc_context->aux_batchbuffer_surface.num_blocks = mfc_context->aux_batchbuffer->size / 16;
- mfc_context->aux_batchbuffer_surface.size_block = 16;
-
- i965_gpe_context_init(ctx, &mfc_context->gpe_context);
-}
-
-static void
-gen75_mfc_pipe_buf_addr_state_bplus(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- int i;
-
- BEGIN_BCS_BATCH(batch, 61);
-
- OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (61 - 2));
-
- /* the DW1-3 is for pre_deblocking */
- if (mfc_context->pre_deblocking_output.bo)
- OUT_BCS_RELOC(batch, mfc_context->pre_deblocking_output.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0); /* pre output addr */
-
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- /* the DW4-6 is for the post_deblocking */
-
- if (mfc_context->post_deblocking_output.bo)
- OUT_BCS_RELOC(batch, mfc_context->post_deblocking_output.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0); /* post output addr */
- else
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW7-9 is for the uncompressed_picture */
- OUT_BCS_RELOC(batch, mfc_context->uncompressed_picture_source.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0); /* uncompressed data */
-
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW10-12 is for the mb status */
- OUT_BCS_RELOC(batch, mfc_context->macroblock_status_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0); /* StreamOut data*/
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW13-15 is for the intra_row_store_scratch */
- OUT_BCS_RELOC(batch, mfc_context->intra_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW16-18 is for the deblocking filter */
- OUT_BCS_RELOC(batch, mfc_context->deblocking_filter_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW 19-50 is for Reference pictures*/
- for (i = 0; i < ARRAY_ELEMS(mfc_context->reference_surfaces); i++) {
- if ( mfc_context->reference_surfaces[i].bo != NULL) {
- OUT_BCS_RELOC(batch, mfc_context->reference_surfaces[i].bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- }
- OUT_BCS_BATCH(batch, 0);
- }
- OUT_BCS_BATCH(batch, 0);
-
- /* The DW 52-54 is for the MB status buffer */
- OUT_BCS_RELOC(batch, mfc_context->macroblock_status_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0); /* Macroblock status buffer*/
-
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW 55-57 is the ILDB buffer */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW 58-60 is the second ILDB buffer */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfc_pipe_buf_addr_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- int i;
-
- if (IS_STEPPING_BPLUS(i965)) {
- gen75_mfc_pipe_buf_addr_state_bplus(ctx, encoder_context);
- return;
- }
-
- BEGIN_BCS_BATCH(batch, 25);
-
- OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (25 - 2));
-
- if (mfc_context->pre_deblocking_output.bo)
- OUT_BCS_RELOC(batch, mfc_context->pre_deblocking_output.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0); /* pre output addr */
-
- if (mfc_context->post_deblocking_output.bo)
- OUT_BCS_RELOC(batch, mfc_context->post_deblocking_output.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0); /* post output addr */
- else
- OUT_BCS_BATCH(batch, 0);
-
- OUT_BCS_RELOC(batch, mfc_context->uncompressed_picture_source.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0); /* uncompressed data */
- OUT_BCS_RELOC(batch, mfc_context->macroblock_status_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0); /* StreamOut data*/
- OUT_BCS_RELOC(batch, mfc_context->intra_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_RELOC(batch, mfc_context->deblocking_filter_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- /* 7..22 Reference pictures*/
- for (i = 0; i < ARRAY_ELEMS(mfc_context->reference_surfaces); i++) {
- if ( mfc_context->reference_surfaces[i].bo != NULL) {
- OUT_BCS_RELOC(batch, mfc_context->reference_surfaces[i].bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- }
- }
- OUT_BCS_RELOC(batch, mfc_context->macroblock_status_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0); /* Macroblock status buffer*/
-
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfc_avc_directmode_state_bplus(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- int i;
-
- BEGIN_BCS_BATCH(batch, 71);
-
- OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (71 - 2));
-
- /* Reference frames and Current frames */
- /* the DW1-32 is for the direct MV for reference */
- for(i = 0; i < NUM_MFC_DMV_BUFFERS - 2; i += 2) {
- if ( mfc_context->direct_mv_buffers[i].bo != NULL) {
- OUT_BCS_RELOC(batch, mfc_context->direct_mv_buffers[i].bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- OUT_BCS_BATCH(batch, 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
- }
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW34-36 is the MV for the current reference */
- OUT_BCS_RELOC(batch, mfc_context->direct_mv_buffers[NUM_MFC_DMV_BUFFERS - 2].bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
-
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* POL list */
- for(i = 0; i < 32; i++) {
- OUT_BCS_BATCH(batch, i/2);
- }
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfc_avc_directmode_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- int i;
-
- if (IS_STEPPING_BPLUS(i965)) {
- gen75_mfc_avc_directmode_state_bplus(ctx, encoder_context);
- return;
- }
-
- BEGIN_BCS_BATCH(batch, 69);
-
- OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (69 - 2));
-
- /* Reference frames and Current frames */
- for(i = 0; i < NUM_MFC_DMV_BUFFERS; i++) {
- if ( mfc_context->direct_mv_buffers[i].bo != NULL) {
- OUT_BCS_RELOC(batch, mfc_context->direct_mv_buffers[i].bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- /* POL list */
- for(i = 0; i < 32; i++) {
- OUT_BCS_BATCH(batch, i/2);
- }
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-
-static void
-gen75_mfc_bsp_buf_base_addr_state_bplus(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- BEGIN_BCS_BATCH(batch, 10);
-
- OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (10 - 2));
- OUT_BCS_RELOC(batch, mfc_context->bsd_mpc_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW4-6 is for MPR Row Store Scratch Buffer Base Address */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW7-9 is for Bitplane Read Buffer Base Address */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfc_bsp_buf_base_addr_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
-
- if (IS_STEPPING_BPLUS(i965)) {
- gen75_mfc_bsp_buf_base_addr_state_bplus(ctx, encoder_context);
- return;
- }
-
- BEGIN_BCS_BATCH(batch, 4);
-
- OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (4 - 2));
- OUT_BCS_RELOC(batch, mfc_context->bsd_mpc_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-
-static void gen75_mfc_avc_pipeline_picture_programing( VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- mfc_context->pipe_mode_select(ctx, MFX_FORMAT_AVC, encoder_context);
- mfc_context->set_surface_state(ctx, encoder_context);
- mfc_context->ind_obj_base_addr_state(ctx, encoder_context);
- gen75_mfc_pipe_buf_addr_state(ctx, encoder_context);
- gen75_mfc_bsp_buf_base_addr_state(ctx, encoder_context);
- mfc_context->avc_img_state(ctx, encode_state, encoder_context);
- mfc_context->avc_qm_state(ctx, encode_state, encoder_context);
- mfc_context->avc_fqm_state(ctx, encode_state, encoder_context);
- gen75_mfc_avc_directmode_state(ctx, encoder_context);
- intel_mfc_avc_ref_idx_state(ctx, encode_state, encoder_context);
-}
-
-
-static VAStatus gen75_mfc_run(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- intel_batchbuffer_flush(batch); //run the pipeline
-
- return VA_STATUS_SUCCESS;
-}
-
-
-static VAStatus
-gen75_mfc_stop(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int *encoded_bits_size)
-{
- VAStatus vaStatus = VA_STATUS_ERROR_UNKNOWN;
- VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VACodedBufferSegment *coded_buffer_segment;
-
- vaStatus = i965_MapBuffer(ctx, pPicParameter->coded_buf, (void **)&coded_buffer_segment);
- assert(vaStatus == VA_STATUS_SUCCESS);
- *encoded_bits_size = coded_buffer_segment->size * 8;
- i965_UnmapBuffer(ctx, pPicParameter->coded_buf);
-
- return VA_STATUS_SUCCESS;
-}
-
-
-static void
-gen75_mfc_avc_slice_state(VADriverContextP ctx,
- VAEncPictureParameterBufferH264 *pic_param,
- VAEncSliceParameterBufferH264 *slice_param,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int rate_control_enable,
- int qp,
- struct intel_batchbuffer *batch)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
- int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
- int beginmb = slice_param->macroblock_address;
- int endmb = beginmb + slice_param->num_macroblocks;
- int beginx = beginmb % width_in_mbs;
- int beginy = beginmb / width_in_mbs;
- int nextx = endmb % width_in_mbs;
- int nexty = endmb / width_in_mbs;
- int slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
- int last_slice = (endmb == (width_in_mbs * height_in_mbs));
- int maxQpN, maxQpP;
- unsigned char correct[6], grow, shrink;
- int i;
- int weighted_pred_idc = 0;
- unsigned int luma_log2_weight_denom = slice_param->luma_log2_weight_denom;
- unsigned int chroma_log2_weight_denom = slice_param->chroma_log2_weight_denom;
- int num_ref_l0 = 0, num_ref_l1 = 0;
-
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- if (slice_type == SLICE_TYPE_I) {
- luma_log2_weight_denom = 0;
- chroma_log2_weight_denom = 0;
- } else if (slice_type == SLICE_TYPE_P) {
- weighted_pred_idc = pic_param->pic_fields.bits.weighted_pred_flag;
- num_ref_l0 = pic_param->num_ref_idx_l0_active_minus1 + 1;
-
- if (slice_param->num_ref_idx_active_override_flag)
- num_ref_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
- } else if (slice_type == SLICE_TYPE_B) {
- weighted_pred_idc = pic_param->pic_fields.bits.weighted_bipred_idc;
- num_ref_l0 = pic_param->num_ref_idx_l0_active_minus1 + 1;
- num_ref_l1 = pic_param->num_ref_idx_l1_active_minus1 + 1;
-
- if (slice_param->num_ref_idx_active_override_flag) {
- num_ref_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
- num_ref_l1 = slice_param->num_ref_idx_l1_active_minus1 + 1;
- }
-
- if (weighted_pred_idc == 2) {
- /* 8.4.3 - Derivation process for prediction weights (8-279) */
- luma_log2_weight_denom = 5;
- chroma_log2_weight_denom = 5;
- }
- }
-
- maxQpN = mfc_context->bit_rate_control_context[slice_type].MaxQpNegModifier;
- maxQpP = mfc_context->bit_rate_control_context[slice_type].MaxQpPosModifier;
-
- for (i = 0; i < 6; i++)
- correct[i] = mfc_context->bit_rate_control_context[slice_type].Correct[i];
-
- grow = mfc_context->bit_rate_control_context[slice_type].GrowInit +
- (mfc_context->bit_rate_control_context[slice_type].GrowResistance << 4);
- shrink = mfc_context->bit_rate_control_context[slice_type].ShrinkInit +
- (mfc_context->bit_rate_control_context[slice_type].ShrinkResistance << 4);
-
- BEGIN_BCS_BATCH(batch, 11);;
-
- OUT_BCS_BATCH(batch, MFX_AVC_SLICE_STATE | (11 - 2) );
- OUT_BCS_BATCH(batch, slice_type); /*Slice Type: I:P:B Slice*/
-
- OUT_BCS_BATCH(batch,
- (num_ref_l0 << 16) |
- (num_ref_l1 << 24) |
- (chroma_log2_weight_denom << 8) |
- (luma_log2_weight_denom << 0));
-
- OUT_BCS_BATCH(batch,
- (weighted_pred_idc << 30) |
- (slice_param->direct_spatial_mv_pred_flag<<29) | /*Direct Prediction Type*/
- (slice_param->disable_deblocking_filter_idc << 27) |
- (slice_param->cabac_init_idc << 24) |
- (qp<<16) | /*Slice Quantization Parameter*/
- ((slice_param->slice_beta_offset_div2 & 0xf) << 8) |
- ((slice_param->slice_alpha_c0_offset_div2 & 0xf) << 0));
- OUT_BCS_BATCH(batch,
- (beginy << 24) | /*First MB X&Y , the begin postion of current slice*/
- (beginx << 16) |
- slice_param->macroblock_address );
- OUT_BCS_BATCH(batch, (nexty << 16) | nextx); /*Next slice first MB X&Y*/
- OUT_BCS_BATCH(batch,
- (0/*rate_control_enable*/ << 31) | /*in CBR mode RateControlCounterEnable = enable*/
- (1 << 30) | /*ResetRateControlCounter*/
- (0 << 28) | /*RC Triggle Mode = Always Rate Control*/
- (4 << 24) | /*RC Stable Tolerance, middle level*/
- (0/*rate_control_enable*/ << 23) | /*RC Panic Enable*/
- (0 << 22) | /*QP mode, don't modfiy CBP*/
- (0 << 21) | /*MB Type Direct Conversion Enabled*/
- (0 << 20) | /*MB Type Skip Conversion Enabled*/
- (last_slice << 19) | /*IsLastSlice*/
- (0 << 18) | /*BitstreamOutputFlag Compressed BitStream Output Disable Flag 0:enable 1:disable*/
- (1 << 17) | /*HeaderPresentFlag*/
- (1 << 16) | /*SliceData PresentFlag*/
- (1 << 15) | /*TailPresentFlag*/
- (1 << 13) | /*RBSP NAL TYPE*/
- (0 << 12) ); /*CabacZeroWordInsertionEnable*/
- OUT_BCS_BATCH(batch, mfc_context->mfc_indirect_pak_bse_object.offset);
- OUT_BCS_BATCH(batch,
- (maxQpN << 24) | /*Target QP - 24 is lowest QP*/
- (maxQpP << 16) | /*Target QP + 20 is highest QP*/
- (shrink << 8) |
- (grow << 0));
- OUT_BCS_BATCH(batch,
- (correct[5] << 20) |
- (correct[4] << 16) |
- (correct[3] << 12) |
- (correct[2] << 8) |
- (correct[1] << 4) |
- (correct[0] << 0));
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-
-
-static int
-gen75_mfc_avc_pak_object_intra(VADriverContextP ctx, int x, int y, int end_mb,
- int qp,unsigned int *msg,
- struct intel_encoder_context *encoder_context,
- unsigned char target_mb_size, unsigned char max_mb_size,
- struct intel_batchbuffer *batch)
-{
- int len_in_dwords = 12;
- unsigned int intra_msg;
-#define INTRA_MSG_FLAG (1 << 13)
-#define INTRA_MBTYPE_MASK (0x1F0000)
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, len_in_dwords);
-
- intra_msg = msg[0] & 0xC0FF;
- intra_msg |= INTRA_MSG_FLAG;
- intra_msg |= ((msg[0] & INTRA_MBTYPE_MASK) >> 8);
- OUT_BCS_BATCH(batch, MFC_AVC_PAK_OBJECT | (len_in_dwords - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- (0 << 24) | /* PackedMvNum, Debug*/
- (0 << 20) | /* No motion vector */
- (1 << 19) | /* CbpDcY */
- (1 << 18) | /* CbpDcU */
- (1 << 17) | /* CbpDcV */
- intra_msg);
-
- OUT_BCS_BATCH(batch, (0xFFFF << 16) | (y << 8) | x); /* Code Block Pattern for Y*/
- OUT_BCS_BATCH(batch, 0x000F000F); /* Code Block Pattern */
- OUT_BCS_BATCH(batch, (0 << 27) | (end_mb << 26) | qp); /* Last MB */
-
- /*Stuff for Intra MB*/
- OUT_BCS_BATCH(batch, msg[1]); /* We using Intra16x16 no 4x4 predmode*/
- OUT_BCS_BATCH(batch, msg[2]);
- OUT_BCS_BATCH(batch, msg[3]&0xFF);
-
- /*MaxSizeInWord and TargetSzieInWord*/
- OUT_BCS_BATCH(batch, (max_mb_size << 24) |
- (target_mb_size << 16) );
-
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-
- return len_in_dwords;
-}
-
-static int
-gen75_mfc_avc_pak_object_inter(VADriverContextP ctx, int x, int y, int end_mb, int qp,
- unsigned int *msg, unsigned int offset,
- struct intel_encoder_context *encoder_context,
- unsigned char target_mb_size,unsigned char max_mb_size, int slice_type,
- struct intel_batchbuffer *batch)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- int len_in_dwords = 12;
- unsigned int inter_msg = 0;
- if (batch == NULL)
- batch = encoder_context->base.batch;
- {
-#define MSG_MV_OFFSET 4
- unsigned int *mv_ptr;
- mv_ptr = msg + MSG_MV_OFFSET;
- /* MV of VME output is based on 16 sub-blocks. So it is necessary
- * to convert them to be compatible with the format of AVC_PAK
- * command.
- */
- if ((msg[0] & INTER_MODE_MASK) == INTER_8X16) {
- /* MV[0] and MV[2] are replicated */
- mv_ptr[4] = mv_ptr[0];
- mv_ptr[5] = mv_ptr[1];
- mv_ptr[2] = mv_ptr[8];
- mv_ptr[3] = mv_ptr[9];
- mv_ptr[6] = mv_ptr[8];
- mv_ptr[7] = mv_ptr[9];
- } else if ((msg[0] & INTER_MODE_MASK) == INTER_16X8) {
- /* MV[0] and MV[1] are replicated */
- mv_ptr[2] = mv_ptr[0];
- mv_ptr[3] = mv_ptr[1];
- mv_ptr[4] = mv_ptr[16];
- mv_ptr[5] = mv_ptr[17];
- mv_ptr[6] = mv_ptr[24];
- mv_ptr[7] = mv_ptr[25];
- } else if (((msg[0] & INTER_MODE_MASK) == INTER_8X8) &&
- !(msg[1] & SUBMB_SHAPE_MASK)) {
- /* Don't touch MV[0] or MV[1] */
- mv_ptr[2] = mv_ptr[8];
- mv_ptr[3] = mv_ptr[9];
- mv_ptr[4] = mv_ptr[16];
- mv_ptr[5] = mv_ptr[17];
- mv_ptr[6] = mv_ptr[24];
- mv_ptr[7] = mv_ptr[25];
- }
- }
-
- BEGIN_BCS_BATCH(batch, len_in_dwords);
-
- OUT_BCS_BATCH(batch, MFC_AVC_PAK_OBJECT | (len_in_dwords - 2));
-
- inter_msg = 32;
- /* MV quantity */
- if ((msg[0] & INTER_MODE_MASK) == INTER_8X8) {
- if (msg[1] & SUBMB_SHAPE_MASK)
- inter_msg = 128;
- }
- OUT_BCS_BATCH(batch, inter_msg); /* 32 MV*/
- OUT_BCS_BATCH(batch, offset);
- inter_msg = msg[0] & (0x1F00FFFF);
- inter_msg |= INTER_MV8;
- inter_msg |= ((1 << 19) | (1 << 18) | (1 << 17));
- if (((msg[0] & INTER_MODE_MASK) == INTER_8X8) &&
- (msg[1] & SUBMB_SHAPE_MASK)) {
- inter_msg |= INTER_MV32;
- }
-
- OUT_BCS_BATCH(batch, inter_msg);
-
- OUT_BCS_BATCH(batch, (0xFFFF<<16) | (y << 8) | x); /* Code Block Pattern for Y*/
- OUT_BCS_BATCH(batch, 0x000F000F); /* Code Block Pattern */
-#if 0
- if ( slice_type == SLICE_TYPE_B) {
- OUT_BCS_BATCH(batch, (0xF<<28) | (end_mb << 26) | qp); /* Last MB */
- } else {
- OUT_BCS_BATCH(batch, (end_mb << 26) | qp); /* Last MB */
- }
-#else
- OUT_BCS_BATCH(batch, (end_mb << 26) | qp); /* Last MB */
-#endif
-
- inter_msg = msg[1] >> 8;
- /*Stuff for Inter MB*/
- OUT_BCS_BATCH(batch, inter_msg);
- OUT_BCS_BATCH(batch, vme_context->ref_index_in_mb[0]);
- OUT_BCS_BATCH(batch, vme_context->ref_index_in_mb[1]);
-
- /*MaxSizeInWord and TargetSzieInWord*/
- OUT_BCS_BATCH(batch, (max_mb_size << 24) |
- (target_mb_size << 16) );
-
- OUT_BCS_BATCH(batch, 0x0);
-
- ADVANCE_BCS_BATCH(batch);
-
- return len_in_dwords;
-}
-
-static void
-gen75_mfc_avc_pipeline_slice_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int slice_index,
- struct intel_batchbuffer *slice_batch)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[slice_index]->buffer;
- unsigned int *msg = NULL, offset = 0;
- unsigned char *msg_ptr = NULL;
- int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
- int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
- int last_slice = (pSliceParameter->macroblock_address + pSliceParameter->num_macroblocks) == (width_in_mbs * height_in_mbs);
- int i,x,y;
- int qp = pPicParameter->pic_init_qp + pSliceParameter->slice_qp_delta;
- unsigned int rate_control_mode = encoder_context->rate_control_mode;
- unsigned int tail_data[] = { 0x0, 0x0 };
- int slice_type = intel_avc_enc_slice_type_fixup(pSliceParameter->slice_type);
- int is_intra = slice_type == SLICE_TYPE_I;
- int qp_slice;
- int qp_mb;
-
- qp_slice = qp;
- if (rate_control_mode != VA_RC_CQP) {
- qp = mfc_context->brc.qp_prime_y[encoder_context->layer.curr_frame_layer_id][slice_type];
- if (encode_state->slice_header_index[slice_index] == 0) {
- pSliceParameter->slice_qp_delta = qp - pPicParameter->pic_init_qp;
- qp_slice = qp;
- }
- }
-
- /* only support for 8-bit pixel bit-depth */
- assert(pSequenceParameter->bit_depth_luma_minus8 == 0);
- assert(pSequenceParameter->bit_depth_chroma_minus8 == 0);
- assert(pPicParameter->pic_init_qp >= 0 && pPicParameter->pic_init_qp < 52);
- assert(qp >= 0 && qp < 52);
-
- gen75_mfc_avc_slice_state(ctx,
- pPicParameter,
- pSliceParameter,
- encode_state, encoder_context,
- (rate_control_mode != VA_RC_CQP), qp_slice, slice_batch);
-
- if ( slice_index == 0)
- intel_mfc_avc_pipeline_header_programing(ctx, encode_state, encoder_context, slice_batch);
-
- intel_avc_slice_insert_packed_data(ctx, encode_state, encoder_context, slice_index, slice_batch);
-
- dri_bo_map(vme_context->vme_output.bo , 1);
- msg_ptr = (unsigned char *)vme_context->vme_output.bo->virtual;
-
- if (is_intra) {
- msg = (unsigned int *) (msg_ptr + pSliceParameter->macroblock_address * vme_context->vme_output.size_block);
- } else {
- msg = (unsigned int *) (msg_ptr + pSliceParameter->macroblock_address * vme_context->vme_output.size_block);
- }
-
- for (i = pSliceParameter->macroblock_address;
- i < pSliceParameter->macroblock_address + pSliceParameter->num_macroblocks; i++) {
- int last_mb = (i == (pSliceParameter->macroblock_address + pSliceParameter->num_macroblocks - 1) );
- x = i % width_in_mbs;
- y = i / width_in_mbs;
- msg = (unsigned int *) (msg_ptr + i * vme_context->vme_output.size_block);
-
- if (vme_context->roi_enabled) {
- qp_mb = *(vme_context->qp_per_mb + i);
- } else
- qp_mb = qp;
-
- if (is_intra) {
- assert(msg);
- gen75_mfc_avc_pak_object_intra(ctx, x, y, last_mb, qp_mb, msg, encoder_context, 0, 0, slice_batch);
- } else {
- int inter_rdo, intra_rdo;
- inter_rdo = msg[AVC_INTER_RDO_OFFSET] & AVC_RDO_MASK;
- intra_rdo = msg[AVC_INTRA_RDO_OFFSET] & AVC_RDO_MASK;
- offset = i * vme_context->vme_output.size_block + AVC_INTER_MV_OFFSET;
- if (intra_rdo < inter_rdo) {
- gen75_mfc_avc_pak_object_intra(ctx, x, y, last_mb, qp_mb, msg, encoder_context, 0, 0, slice_batch);
- } else {
- msg += AVC_INTER_MSG_OFFSET;
- gen75_mfc_avc_pak_object_inter(ctx, x, y, last_mb, qp_mb,
- msg, offset, encoder_context,
- 0, 0, slice_type, slice_batch);
- }
- }
- }
-
- dri_bo_unmap(vme_context->vme_output.bo);
-
- if ( last_slice ) {
- mfc_context->insert_object(ctx, encoder_context,
- tail_data, 2, 8,
- 2, 1, 1, 0, slice_batch);
- } else {
- mfc_context->insert_object(ctx, encoder_context,
- tail_data, 1, 8,
- 1, 1, 1, 0, slice_batch);
- }
-}
-
-static dri_bo *
-gen75_mfc_avc_software_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch;
- dri_bo *batch_bo;
- int i;
-
- batch = mfc_context->aux_batchbuffer;
- batch_bo = batch->buffer;
- for (i = 0; i < encode_state->num_slice_params_ext; i++) {
- gen75_mfc_avc_pipeline_slice_programing(ctx, encode_state, encoder_context, i, batch);
- }
-
- intel_batchbuffer_align(batch, 8);
-
- BEGIN_BCS_BATCH(batch, 2);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, MI_BATCH_BUFFER_END);
- ADVANCE_BCS_BATCH(batch);
-
- dri_bo_reference(batch_bo);
-
- intel_batchbuffer_free(batch);
- mfc_context->aux_batchbuffer = NULL;
-
- return batch_bo;
-}
-
-
-static void
-gen75_mfc_batchbuffer_surfaces_input(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- assert(vme_context->vme_output.bo);
- mfc_context->buffer_suface_setup(ctx,
- &mfc_context->gpe_context,
- &vme_context->vme_output,
- BINDING_TABLE_OFFSET(BIND_IDX_VME_OUTPUT),
- SURFACE_STATE_OFFSET(BIND_IDX_VME_OUTPUT));
-}
-
-static void
-gen75_mfc_batchbuffer_surfaces_output(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- assert(mfc_context->aux_batchbuffer_surface.bo);
- mfc_context->buffer_suface_setup(ctx,
- &mfc_context->gpe_context,
- &mfc_context->aux_batchbuffer_surface,
- BINDING_TABLE_OFFSET(BIND_IDX_MFC_BATCHBUFFER),
- SURFACE_STATE_OFFSET(BIND_IDX_MFC_BATCHBUFFER));
-}
-
-static void
-gen75_mfc_batchbuffer_surfaces_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- gen75_mfc_batchbuffer_surfaces_input(ctx, encode_state, encoder_context);
- gen75_mfc_batchbuffer_surfaces_output(ctx, encode_state, encoder_context);
-}
-
-static void
-gen75_mfc_batchbuffer_idrt_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct gen6_interface_descriptor_data *desc;
- int i;
- dri_bo *bo;
-
- bo = mfc_context->gpe_context.idrt.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- desc = bo->virtual;
-
- for (i = 0; i < mfc_context->gpe_context.num_kernels; i++) {
- struct i965_kernel *kernel;
-
- kernel = &mfc_context->gpe_context.kernels[i];
- assert(sizeof(*desc) == 32);
-
- /*Setup the descritor table*/
- memset(desc, 0, sizeof(*desc));
- desc->desc0.kernel_start_pointer = (kernel->bo->offset >> 6);
- desc->desc2.sampler_count = 0;
- desc->desc2.sampler_state_pointer = 0;
- desc->desc3.binding_table_entry_count = 2;
- desc->desc3.binding_table_pointer = (BINDING_TABLE_OFFSET(0) >> 5);
- desc->desc4.constant_urb_entry_read_offset = 0;
- desc->desc4.constant_urb_entry_read_length = 4;
-
- /*kernel start*/
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0,
- i * sizeof(*desc) + offsetof(struct gen6_interface_descriptor_data, desc0),
- kernel->bo);
- desc++;
- }
-
- dri_bo_unmap(bo);
-}
-
-static void
-gen75_mfc_batchbuffer_constant_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- (void)mfc_context;
-}
-
-#define AVC_PAK_LEN_IN_BYTE 48
-#define AVC_PAK_LEN_IN_OWORD 3
-
-static void
-gen75_mfc_batchbuffer_emit_object_command(struct intel_batchbuffer *batch,
- uint32_t intra_flag,
- int head_offset,
- int number_mb_cmds,
- int slice_end_x,
- int slice_end_y,
- int mb_x,
- int mb_y,
- int width_in_mbs,
- int qp,
- uint32_t fwd_ref,
- uint32_t bwd_ref)
-{
- uint32_t temp_value;
- BEGIN_BATCH(batch, 14);
-
- OUT_BATCH(batch, CMD_MEDIA_OBJECT | (14 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
-
- /*inline data */
- OUT_BATCH(batch, head_offset / 16);
- OUT_BATCH(batch, (intra_flag) | (qp << 16));
- temp_value = (mb_x | (mb_y << 8) | (width_in_mbs << 16));
- OUT_BATCH(batch, temp_value);
-
- OUT_BATCH(batch, number_mb_cmds);
-
- OUT_BATCH(batch,
- ((slice_end_y << 8) | (slice_end_x)));
- OUT_BATCH(batch, fwd_ref);
- OUT_BATCH(batch, bwd_ref);
-
- OUT_BATCH(batch, MI_NOOP);
-
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen75_mfc_avc_batchbuffer_slice_command(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- VAEncSliceParameterBufferH264 *slice_param,
- int head_offset,
- int qp,
- int last_slice)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
- int total_mbs = slice_param->num_macroblocks;
- int slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
- int number_mb_cmds = 128;
- int starting_offset = 0;
- int mb_x, mb_y;
- int last_mb, slice_end_x, slice_end_y;
- int remaining_mb = total_mbs;
- uint32_t fwd_ref , bwd_ref, mb_flag;
-
- last_mb = slice_param->macroblock_address + total_mbs - 1;
- slice_end_x = last_mb % width_in_mbs;
- slice_end_y = last_mb / width_in_mbs;
-
- if (slice_type == SLICE_TYPE_I) {
- fwd_ref = 0;
- bwd_ref = 0;
- mb_flag = 1;
- } else {
- fwd_ref = vme_context->ref_index_in_mb[0];
- bwd_ref = vme_context->ref_index_in_mb[1];
- mb_flag = 0;
- }
-
- if (width_in_mbs >= 100) {
- number_mb_cmds = width_in_mbs / 5;
- } else if (width_in_mbs >= 80) {
- number_mb_cmds = width_in_mbs / 4;
- } else if (width_in_mbs >= 60) {
- number_mb_cmds = width_in_mbs / 3;
- } else if (width_in_mbs >= 40) {
- number_mb_cmds = width_in_mbs / 2;
- } else {
- number_mb_cmds = width_in_mbs;
- }
-
- do {
- if (number_mb_cmds >= remaining_mb) {
- number_mb_cmds = remaining_mb;
- }
- mb_x = (slice_param->macroblock_address + starting_offset) % width_in_mbs;
- mb_y = (slice_param->macroblock_address + starting_offset) / width_in_mbs;
-
- gen75_mfc_batchbuffer_emit_object_command(batch,
- mb_flag,
- head_offset,
- number_mb_cmds,
- slice_end_x,
- slice_end_y,
- mb_x,
- mb_y,
- width_in_mbs,
- qp,
- fwd_ref,
- bwd_ref);
-
- head_offset += (number_mb_cmds * AVC_PAK_LEN_IN_BYTE);
- remaining_mb -= number_mb_cmds;
- starting_offset += number_mb_cmds;
- } while (remaining_mb > 0);
-}
-
-/*
- * return size in Owords (16bytes)
- */
-static void
-gen75_mfc_avc_batchbuffer_slice(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int slice_index)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *slice_batch = mfc_context->aux_batchbuffer;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[slice_index]->buffer;
- int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
- int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
- int last_slice = (pSliceParameter->macroblock_address + pSliceParameter->num_macroblocks) == (width_in_mbs * height_in_mbs);
- int qp = pPicParameter->pic_init_qp + pSliceParameter->slice_qp_delta;
- unsigned int rate_control_mode = encoder_context->rate_control_mode;
- unsigned int tail_data[] = { 0x0, 0x0 };
- long head_offset;
- int slice_type = intel_avc_enc_slice_type_fixup(pSliceParameter->slice_type);
- int qp_slice;
-
- qp_slice = qp;
- if (rate_control_mode != VA_RC_CQP) {
- qp = mfc_context->brc.qp_prime_y[encoder_context->layer.curr_frame_layer_id][slice_type];
- if (encode_state->slice_header_index[slice_index] == 0) {
- pSliceParameter->slice_qp_delta = qp - pPicParameter->pic_init_qp;
- qp_slice = qp;
- }
- }
-
- /* only support for 8-bit pixel bit-depth */
- assert(pSequenceParameter->bit_depth_luma_minus8 == 0);
- assert(pSequenceParameter->bit_depth_chroma_minus8 == 0);
- assert(pPicParameter->pic_init_qp >= 0 && pPicParameter->pic_init_qp < 52);
- assert(qp >= 0 && qp < 52);
-
- gen75_mfc_avc_slice_state(ctx,
- pPicParameter,
- pSliceParameter,
- encode_state,
- encoder_context,
- (rate_control_mode != VA_RC_CQP),
- qp_slice,
- slice_batch);
-
- if (slice_index == 0)
- intel_mfc_avc_pipeline_header_programing(ctx, encode_state, encoder_context, slice_batch);
-
- intel_avc_slice_insert_packed_data(ctx, encode_state, encoder_context, slice_index, slice_batch);
-
- intel_batchbuffer_align(slice_batch, 16); /* aligned by an Oword */
- head_offset = intel_batchbuffer_used_size(slice_batch);
-
- slice_batch->ptr += pSliceParameter->num_macroblocks * AVC_PAK_LEN_IN_BYTE;
-
- gen75_mfc_avc_batchbuffer_slice_command(ctx,
- encoder_context,
- pSliceParameter,
- head_offset,
- qp,
- last_slice);
-
-
- /* Aligned for tail */
- intel_batchbuffer_align(slice_batch, 16); /* aligned by an Oword */
- if (last_slice) {
- mfc_context->insert_object(ctx,
- encoder_context,
- tail_data,
- 2,
- 8,
- 2,
- 1,
- 1,
- 0,
- slice_batch);
- } else {
- mfc_context->insert_object(ctx,
- encoder_context,
- tail_data,
- 1,
- 8,
- 1,
- 1,
- 1,
- 0,
- slice_batch);
- }
-
- return;
-}
-
-static void
-gen75_mfc_avc_batchbuffer_pipeline(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- int i;
- intel_batchbuffer_start_atomic(batch, 0x4000);
- gen6_gpe_pipeline_setup(ctx, &mfc_context->gpe_context, batch);
-
- for ( i = 0; i < encode_state->num_slice_params_ext; i++) {
- gen75_mfc_avc_batchbuffer_slice(ctx, encode_state, encoder_context, i);
- }
- {
- struct intel_batchbuffer *slice_batch = mfc_context->aux_batchbuffer;
- intel_batchbuffer_align(slice_batch, 8);
- BEGIN_BCS_BATCH(slice_batch, 2);
- OUT_BCS_BATCH(slice_batch, 0);
- OUT_BCS_BATCH(slice_batch, MI_BATCH_BUFFER_END);
- ADVANCE_BCS_BATCH(slice_batch);
- mfc_context->aux_batchbuffer = NULL;
- intel_batchbuffer_free(slice_batch);
- }
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-}
-
-static void
-gen75_mfc_build_avc_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- gen75_mfc_batchbuffer_surfaces_setup(ctx, encode_state, encoder_context);
- gen75_mfc_batchbuffer_idrt_setup(ctx, encode_state, encoder_context);
- gen75_mfc_batchbuffer_constant_setup(ctx, encode_state, encoder_context);
- gen75_mfc_avc_batchbuffer_pipeline(ctx, encode_state, encoder_context);
-}
-
-static dri_bo *
-gen75_mfc_avc_hardware_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- dri_bo_reference(mfc_context->aux_batchbuffer_surface.bo);
- gen75_mfc_build_avc_batchbuffer(ctx, encode_state, encoder_context);
-
- return mfc_context->aux_batchbuffer_surface.bo;
-}
-
-
-static void
-gen75_mfc_avc_pipeline_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- dri_bo *slice_batch_bo;
-
- if ( intel_mfc_interlace_check(ctx, encode_state, encoder_context) ) {
- fprintf(stderr, "Current VA driver don't support interlace mode!\n");
- assert(0);
- return;
- }
-
-
- if (encoder_context->soft_batch_force)
- slice_batch_bo = gen75_mfc_avc_software_batchbuffer(ctx, encode_state, encoder_context);
- else
- slice_batch_bo = gen75_mfc_avc_hardware_batchbuffer(ctx, encode_state, encoder_context);
-
- // begin programing
- intel_batchbuffer_start_atomic_bcs(batch, 0x4000);
- intel_batchbuffer_emit_mi_flush(batch);
-
- // picture level programing
- gen75_mfc_avc_pipeline_picture_programing(ctx, encode_state, encoder_context);
-
- BEGIN_BCS_BATCH(batch, 2);
- OUT_BCS_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8));
- OUT_BCS_RELOC(batch,
- slice_batch_bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- ADVANCE_BCS_BATCH(batch);
-
- // end programing
- intel_batchbuffer_end_atomic(batch);
-
- dri_bo_unreference(slice_batch_bo);
-}
-
-
-static VAStatus
-gen75_mfc_avc_encode_picture(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- unsigned int rate_control_mode = encoder_context->rate_control_mode;
- int current_frame_bits_size;
- int sts;
-
- for (;;) {
- gen75_mfc_init(ctx, encode_state, encoder_context);
- intel_mfc_avc_prepare(ctx, encode_state, encoder_context);
- /*Programing bcs pipeline*/
- gen75_mfc_avc_pipeline_programing(ctx, encode_state, encoder_context); //filling the pipeline
- gen75_mfc_run(ctx, encode_state, encoder_context);
- if (rate_control_mode == VA_RC_CBR || rate_control_mode == VA_RC_VBR) {
- gen75_mfc_stop(ctx, encode_state, encoder_context, &current_frame_bits_size);
- sts = intel_mfc_brc_postpack(encode_state, encoder_context, current_frame_bits_size);
- if (sts == BRC_NO_HRD_VIOLATION) {
- intel_mfc_hrd_context_update(encode_state, mfc_context);
- break;
- }
- else if (sts == BRC_OVERFLOW_WITH_MIN_QP || sts == BRC_UNDERFLOW_WITH_MAX_QP) {
- if (!mfc_context->hrd.violation_noted) {
- fprintf(stderr, "Unrepairable %s!\n", (sts == BRC_OVERFLOW_WITH_MIN_QP)? "overflow": "underflow");
- mfc_context->hrd.violation_noted = 1;
- }
- return VA_STATUS_SUCCESS;
- }
- } else {
- break;
- }
- }
-
- return VA_STATUS_SUCCESS;
-}
-
-/*
- * MPEG-2
- */
-
-static const int
-va_to_gen75_mpeg2_picture_type[3] = {
- 1, /* I */
- 2, /* P */
- 3 /* B */
-};
-
-static void
-gen75_mfc_mpeg2_pic_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct encode_state *encode_state)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncPictureParameterBufferMPEG2 *pic_param;
- int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
- int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
- VAEncSliceParameterBufferMPEG2 *slice_param = NULL;
-
- assert(encode_state->pic_param_ext && encode_state->pic_param_ext->buffer);
- pic_param = (VAEncPictureParameterBufferMPEG2 *)encode_state->pic_param_ext->buffer;
- slice_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[0]->buffer;
-
- BEGIN_BCS_BATCH(batch, 13);
- OUT_BCS_BATCH(batch, MFX_MPEG2_PIC_STATE | (13 - 2));
- OUT_BCS_BATCH(batch,
- (pic_param->f_code[1][1] & 0xf) << 28 | /* f_code[1][1] */
- (pic_param->f_code[1][0] & 0xf) << 24 | /* f_code[1][0] */
- (pic_param->f_code[0][1] & 0xf) << 20 | /* f_code[0][1] */
- (pic_param->f_code[0][0] & 0xf) << 16 | /* f_code[0][0] */
- pic_param->picture_coding_extension.bits.intra_dc_precision << 14 |
- pic_param->picture_coding_extension.bits.picture_structure << 12 |
- pic_param->picture_coding_extension.bits.top_field_first << 11 |
- pic_param->picture_coding_extension.bits.frame_pred_frame_dct << 10 |
- pic_param->picture_coding_extension.bits.concealment_motion_vectors << 9 |
- pic_param->picture_coding_extension.bits.q_scale_type << 8 |
- pic_param->picture_coding_extension.bits.intra_vlc_format << 7 |
- pic_param->picture_coding_extension.bits.alternate_scan << 6);
- OUT_BCS_BATCH(batch,
- 0 << 14 | /* LoadSlicePointerFlag, 0 means only loading bitstream pointer once */
- va_to_gen75_mpeg2_picture_type[pic_param->picture_type] << 9 |
- 0);
- OUT_BCS_BATCH(batch,
- 1 << 31 | /* slice concealment */
- (height_in_mbs - 1) << 16 |
- (width_in_mbs - 1));
- if (slice_param && slice_param->quantiser_scale_code >= 14)
- OUT_BCS_BATCH(batch, (3 << 1) | (1 << 4) | (5 << 8) | (1 << 12));
- else
- OUT_BCS_BATCH(batch, 0);
-
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- 0xFFF << 16 | /* InterMBMaxSize */
- 0xFFF << 0 | /* IntraMBMaxSize */
- 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfc_mpeg2_qm_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- unsigned char intra_qm[64] = {
- 8, 16, 19, 22, 26, 27, 29, 34,
- 16, 16, 22, 24, 27, 29, 34, 37,
- 19, 22, 26, 27, 29, 34, 34, 38,
- 22, 22, 26, 27, 29, 34, 37, 40,
- 22, 26, 27, 29, 32, 35, 40, 48,
- 26, 27, 29, 32, 35, 40, 48, 58,
- 26, 27, 29, 34, 38, 46, 56, 69,
- 27, 29, 35, 38, 46, 56, 69, 83
- };
-
- unsigned char non_intra_qm[64] = {
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16
- };
-
- gen75_mfc_qm_state(ctx, MFX_QM_MPEG_INTRA_QUANTIZER_MATRIX, (unsigned int *)intra_qm, 16, encoder_context);
- gen75_mfc_qm_state(ctx, MFX_QM_MPEG_NON_INTRA_QUANTIZER_MATRIX, (unsigned int *)non_intra_qm, 16,encoder_context);
-}
-
-static void
-gen75_mfc_mpeg2_fqm_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- unsigned short intra_fqm[64] = {
- 65536/0x8, 65536/0x10, 65536/0x13, 65536/0x16, 65536/0x16, 65536/0x1a, 65536/0x1a, 65536/0x1b,
- 65536/0x10, 65536/0x10, 65536/0x16, 65536/0x16, 65536/0x1a, 65536/0x1b, 65536/0x1b, 65536/0x1d,
- 65536/0x13, 65536/0x16, 65536/0x1a, 65536/0x1a, 65536/0x1b, 65536/0x1d, 65536/0x1d, 65536/0x23,
- 65536/0x16, 65536/0x18, 65536/0x1b, 65536/0x1b, 65536/0x13, 65536/0x20, 65536/0x22, 65536/0x26,
- 65536/0x1a, 65536/0x1b, 65536/0x13, 65536/0x13, 65536/0x20, 65536/0x23, 65536/0x26, 65536/0x2e,
- 65536/0x1b, 65536/0x1d, 65536/0x22, 65536/0x22, 65536/0x23, 65536/0x28, 65536/0x2e, 65536/0x38,
- 65536/0x1d, 65536/0x22, 65536/0x22, 65536/0x25, 65536/0x28, 65536/0x30, 65536/0x38, 65536/0x45,
- 65536/0x22, 65536/0x25, 65536/0x26, 65536/0x28, 65536/0x30, 65536/0x3a, 65536/0x45, 65536/0x53,
- };
-
- unsigned short non_intra_fqm[64] = {
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- };
-
- gen75_mfc_fqm_state(ctx, MFX_QM_MPEG_INTRA_QUANTIZER_MATRIX, (unsigned int *)intra_fqm, 32, encoder_context);
- gen75_mfc_fqm_state(ctx, MFX_QM_MPEG_NON_INTRA_QUANTIZER_MATRIX, (unsigned int *)non_intra_fqm, 32, encoder_context);
-}
-
-static void
-gen75_mfc_mpeg2_slicegroup_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- int x, int y,
- int next_x, int next_y,
- int is_fisrt_slice_group,
- int is_last_slice_group,
- int intra_slice,
- int qp,
- struct intel_batchbuffer *batch)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 8);
-
- OUT_BCS_BATCH(batch, MFC_MPEG2_SLICEGROUP_STATE | (8 - 2));
- OUT_BCS_BATCH(batch,
- 0 << 31 | /* MbRateCtrlFlag */
- !!is_last_slice_group << 19 | /* IsLastSliceGrp */
- 1 << 17 | /* Insert Header before the first slice group data */
- 1 << 16 | /* SliceData PresentFlag: always 1 */
- 1 << 15 | /* TailPresentFlag: always 1 */
- 0 << 14 | /* FirstSliceHdrDisabled: slice header for each slice */
- !!intra_slice << 13 | /* IntraSlice */
- !!intra_slice << 12 | /* IntraSliceFlag */
- 0);
- OUT_BCS_BATCH(batch,
- next_y << 24 |
- next_x << 16 |
- y << 8 |
- x << 0 |
- 0);
- OUT_BCS_BATCH(batch, qp); /* FIXME: SliceGroupQp */
- /* bitstream pointer is only loaded once for the first slice of a frame when
- * LoadSlicePointerFlag is 0
- */
- OUT_BCS_BATCH(batch, mfc_context->mfc_indirect_pak_bse_object.offset);
- OUT_BCS_BATCH(batch, 0); /* FIXME: */
- OUT_BCS_BATCH(batch, 0); /* FIXME: CorrectPoints */
- OUT_BCS_BATCH(batch, 0); /* FIXME: CVxxx */
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static int
-gen75_mfc_mpeg2_pak_object_intra(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- int x, int y,
- int first_mb_in_slice,
- int last_mb_in_slice,
- int first_mb_in_slice_group,
- int last_mb_in_slice_group,
- int mb_type,
- int qp_scale_code,
- int coded_block_pattern,
- unsigned char target_size_in_word,
- unsigned char max_size_in_word,
- struct intel_batchbuffer *batch)
-{
- int len_in_dwords = 9;
-
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, len_in_dwords);
-
- OUT_BCS_BATCH(batch, MFC_MPEG2_PAK_OBJECT | (len_in_dwords - 2));
- OUT_BCS_BATCH(batch,
- 0 << 24 | /* PackedMvNum */
- 0 << 20 | /* MvFormat */
- 7 << 17 | /* CbpDcY/CbpDcU/CbpDcV */
- 0 << 15 | /* TransformFlag: frame DCT */
- 0 << 14 | /* FieldMbFlag */
- 1 << 13 | /* IntraMbFlag */
- mb_type << 8 | /* MbType: Intra */
- 0 << 2 | /* SkipMbFlag */
- 0 << 0 | /* InterMbMode */
- 0);
- OUT_BCS_BATCH(batch, y << 16 | x);
- OUT_BCS_BATCH(batch,
- max_size_in_word << 24 |
- target_size_in_word << 16 |
- coded_block_pattern << 6 | /* CBP */
- 0);
- OUT_BCS_BATCH(batch,
- last_mb_in_slice << 31 |
- first_mb_in_slice << 30 |
- 0 << 27 | /* EnableCoeffClamp */
- last_mb_in_slice_group << 26 |
- 0 << 25 | /* MbSkipConvDisable */
- first_mb_in_slice_group << 24 |
- 0 << 16 | /* MvFieldSelect */
- qp_scale_code << 0 |
- 0);
- OUT_BCS_BATCH(batch, 0); /* MV[0][0] */
- OUT_BCS_BATCH(batch, 0); /* MV[1][0] */
- OUT_BCS_BATCH(batch, 0); /* MV[0][1] */
- OUT_BCS_BATCH(batch, 0); /* MV[1][1] */
-
- ADVANCE_BCS_BATCH(batch);
-
- return len_in_dwords;
-}
-
-#define MPEG2_INTER_MV_OFFSET 12
-
-static struct _mv_ranges
-{
- int low; /* in the unit of 1/2 pixel */
- int high; /* in the unit of 1/2 pixel */
-} mv_ranges[] = {
- {0, 0},
- {-16, 15},
- {-32, 31},
- {-64, 63},
- {-128, 127},
- {-256, 255},
- {-512, 511},
- {-1024, 1023},
- {-2048, 2047},
- {-4096, 4095}
-};
-
-static int
-mpeg2_motion_vector(int mv, int pos, int display_max, int f_code)
-{
- if (mv + pos * 16 * 2 < 0 ||
- mv + (pos + 1) * 16 * 2 > display_max * 2)
- mv = 0;
-
- if (f_code > 0 && f_code < 10) {
- if (mv < mv_ranges[f_code].low)
- mv = mv_ranges[f_code].low;
-
- if (mv > mv_ranges[f_code].high)
- mv = mv_ranges[f_code].high;
- }
-
- return mv;
-}
-
-static int
-gen75_mfc_mpeg2_pak_object_inter(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- unsigned int *msg,
- int width_in_mbs, int height_in_mbs,
- int x, int y,
- int first_mb_in_slice,
- int last_mb_in_slice,
- int first_mb_in_slice_group,
- int last_mb_in_slice_group,
- int qp_scale_code,
- unsigned char target_size_in_word,
- unsigned char max_size_in_word,
- struct intel_batchbuffer *batch)
-{
- VAEncPictureParameterBufferMPEG2 *pic_param = (VAEncPictureParameterBufferMPEG2 *)encode_state->pic_param_ext->buffer;
- int len_in_dwords = 9;
- short *mvptr, mvx0, mvy0, mvx1, mvy1;
-
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- mvptr = (short *)(msg + MPEG2_INTER_MV_OFFSET);
- mvx0 = mpeg2_motion_vector(mvptr[0] / 2, x, width_in_mbs * 16, pic_param->f_code[0][0]);
- mvy0 = mpeg2_motion_vector(mvptr[1] / 2, y, height_in_mbs * 16, pic_param->f_code[0][0]);
- mvx1 = mpeg2_motion_vector(mvptr[2] / 2, x, width_in_mbs * 16, pic_param->f_code[1][0]);
- mvy1 = mpeg2_motion_vector(mvptr[3] / 2, y, height_in_mbs * 16, pic_param->f_code[1][0]);
-
- BEGIN_BCS_BATCH(batch, len_in_dwords);
-
- OUT_BCS_BATCH(batch, MFC_MPEG2_PAK_OBJECT | (len_in_dwords - 2));
- OUT_BCS_BATCH(batch,
- 2 << 24 | /* PackedMvNum */
- 7 << 20 | /* MvFormat */
- 7 << 17 | /* CbpDcY/CbpDcU/CbpDcV */
- 0 << 15 | /* TransformFlag: frame DCT */
- 0 << 14 | /* FieldMbFlag */
- 0 << 13 | /* IntraMbFlag */
- 1 << 8 | /* MbType: Frame-based */
- 0 << 2 | /* SkipMbFlag */
- 0 << 0 | /* InterMbMode */
- 0);
- OUT_BCS_BATCH(batch, y << 16 | x);
- OUT_BCS_BATCH(batch,
- max_size_in_word << 24 |
- target_size_in_word << 16 |
- 0x3f << 6 | /* CBP */
- 0);
- OUT_BCS_BATCH(batch,
- last_mb_in_slice << 31 |
- first_mb_in_slice << 30 |
- 0 << 27 | /* EnableCoeffClamp */
- last_mb_in_slice_group << 26 |
- 0 << 25 | /* MbSkipConvDisable */
- first_mb_in_slice_group << 24 |
- 0 << 16 | /* MvFieldSelect */
- qp_scale_code << 0 |
- 0);
-
- OUT_BCS_BATCH(batch, (mvx0 & 0xFFFF) | mvy0 << 16); /* MV[0][0] */
- OUT_BCS_BATCH(batch, (mvx1 & 0xFFFF) | mvy1 << 16); /* MV[1][0] */
- OUT_BCS_BATCH(batch, 0); /* MV[0][1] */
- OUT_BCS_BATCH(batch, 0); /* MV[1][1] */
-
- ADVANCE_BCS_BATCH(batch);
-
- return len_in_dwords;
-}
-
-static void
-intel_mfc_mpeg2_pipeline_header_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- struct intel_batchbuffer *slice_batch)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- int idx = va_enc_packed_type_to_idx(VAEncPackedHeaderMPEG2_SPS);
-
- if (encode_state->packed_header_data[idx]) {
- VAEncPackedHeaderParameterBuffer *param = NULL;
- unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer;
- unsigned int length_in_bits;
-
- assert(encode_state->packed_header_param[idx]);
- param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer;
- length_in_bits = param->bit_length;
-
- mfc_context->insert_object(ctx,
- encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- 5, /* FIXME: check it */
- 0,
- 0,
- 0, /* Needn't insert emulation bytes for MPEG-2 */
- slice_batch);
- }
-
- idx = va_enc_packed_type_to_idx(VAEncPackedHeaderMPEG2_PPS);
-
- if (encode_state->packed_header_data[idx]) {
- VAEncPackedHeaderParameterBuffer *param = NULL;
- unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer;
- unsigned int length_in_bits;
-
- assert(encode_state->packed_header_param[idx]);
- param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer;
- length_in_bits = param->bit_length;
-
- mfc_context->insert_object(ctx,
- encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- 5, /* FIXME: check it */
- 0,
- 0,
- 0, /* Needn't insert emulation bytes for MPEG-2 */
- slice_batch);
- }
-}
-
-static void
-gen75_mfc_mpeg2_pipeline_slice_group(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int slice_index,
- VAEncSliceParameterBufferMPEG2 *next_slice_group_param,
- struct intel_batchbuffer *slice_batch)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncSequenceParameterBufferMPEG2 *seq_param = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
- VAEncSliceParameterBufferMPEG2 *slice_param = NULL;
- unsigned char tail_delimiter[] = {MPEG2_DELIMITER0, MPEG2_DELIMITER1, MPEG2_DELIMITER2, MPEG2_DELIMITER3, MPEG2_DELIMITER4, 0, 0, 0};
- unsigned char section_delimiter[] = {0x0, 0x0, 0x0, 0x0};
- int width_in_mbs = ALIGN(seq_param->picture_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->picture_height, 16) / 16;
- int i, j;
- int h_start_pos, v_start_pos, h_next_start_pos, v_next_start_pos;
- unsigned int *msg = NULL;
- unsigned char *msg_ptr = NULL;
-
- slice_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[slice_index]->buffer;
- h_start_pos = slice_param->macroblock_address % width_in_mbs;
- v_start_pos = slice_param->macroblock_address / width_in_mbs;
- assert(h_start_pos + slice_param->num_macroblocks <= width_in_mbs);
-
- dri_bo_map(vme_context->vme_output.bo , 0);
- msg_ptr = (unsigned char *)vme_context->vme_output.bo->virtual;
-
- if (next_slice_group_param) {
- h_next_start_pos = next_slice_group_param->macroblock_address % width_in_mbs;
- v_next_start_pos = next_slice_group_param->macroblock_address / width_in_mbs;
- } else {
- h_next_start_pos = 0;
- v_next_start_pos = height_in_mbs;
- }
-
- gen75_mfc_mpeg2_slicegroup_state(ctx,
- encoder_context,
- h_start_pos,
- v_start_pos,
- h_next_start_pos,
- v_next_start_pos,
- slice_index == 0,
- next_slice_group_param == NULL,
- slice_param->is_intra_slice,
- slice_param->quantiser_scale_code,
- slice_batch);
-
- if (slice_index == 0)
- intel_mfc_mpeg2_pipeline_header_programing(ctx, encode_state, encoder_context, slice_batch);
-
- /* Insert '00' to make sure the header is valid */
- mfc_context->insert_object(ctx,
- encoder_context,
- (unsigned int*)section_delimiter,
- 1,
- 8, /* 8bits in the last DWORD */
- 1, /* 1 byte */
- 1,
- 0,
- 0,
- slice_batch);
-
- for (i = 0; i < encode_state->slice_params_ext[slice_index]->num_elements; i++) {
- /* PAK for each macroblocks */
- for (j = 0; j < slice_param->num_macroblocks; j++) {
- int h_pos = (slice_param->macroblock_address + j) % width_in_mbs;
- int v_pos = (slice_param->macroblock_address + j) / width_in_mbs;
- int first_mb_in_slice = (j == 0);
- int last_mb_in_slice = (j == slice_param->num_macroblocks - 1);
- int first_mb_in_slice_group = (i == 0 && j == 0);
- int last_mb_in_slice_group = (i == encode_state->slice_params_ext[slice_index]->num_elements - 1 &&
- j == slice_param->num_macroblocks - 1);
-
- msg = (unsigned int *)(msg_ptr + (slice_param->macroblock_address + j) * vme_context->vme_output.size_block);
-
- if (slice_param->is_intra_slice) {
- gen75_mfc_mpeg2_pak_object_intra(ctx,
- encoder_context,
- h_pos, v_pos,
- first_mb_in_slice,
- last_mb_in_slice,
- first_mb_in_slice_group,
- last_mb_in_slice_group,
- 0x1a,
- slice_param->quantiser_scale_code,
- 0x3f,
- 0,
- 0xff,
- slice_batch);
- } else {
- int inter_rdo, intra_rdo;
- inter_rdo = msg[AVC_INTER_RDO_OFFSET] & AVC_RDO_MASK;
- intra_rdo = msg[AVC_INTRA_RDO_OFFSET] & AVC_RDO_MASK;
-
- if (intra_rdo < inter_rdo)
- gen75_mfc_mpeg2_pak_object_intra(ctx,
- encoder_context,
- h_pos, v_pos,
- first_mb_in_slice,
- last_mb_in_slice,
- first_mb_in_slice_group,
- last_mb_in_slice_group,
- 0x1a,
- slice_param->quantiser_scale_code,
- 0x3f,
- 0,
- 0xff,
- slice_batch);
- else
- gen75_mfc_mpeg2_pak_object_inter(ctx,
- encode_state,
- encoder_context,
- msg,
- width_in_mbs, height_in_mbs,
- h_pos, v_pos,
- first_mb_in_slice,
- last_mb_in_slice,
- first_mb_in_slice_group,
- last_mb_in_slice_group,
- slice_param->quantiser_scale_code,
- 0,
- 0xff,
- slice_batch);
- }
- }
-
- slice_param++;
- }
-
- dri_bo_unmap(vme_context->vme_output.bo);
-
- /* tail data */
- if (next_slice_group_param == NULL) { /* end of a picture */
- mfc_context->insert_object(ctx,
- encoder_context,
- (unsigned int *)tail_delimiter,
- 2,
- 8, /* 8bits in the last DWORD */
- 5, /* 5 bytes */
- 1,
- 1,
- 0,
- slice_batch);
- } else { /* end of a lsice group */
- mfc_context->insert_object(ctx,
- encoder_context,
- (unsigned int *)section_delimiter,
- 1,
- 8, /* 8bits in the last DWORD */
- 1, /* 1 byte */
- 1,
- 1,
- 0,
- slice_batch);
- }
-}
-
-/*
- * A batch buffer for all slices, including slice state,
- * slice insert object and slice pak object commands
- *
- */
-static dri_bo *
-gen75_mfc_mpeg2_software_slice_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch;
- VAEncSliceParameterBufferMPEG2 *next_slice_group_param = NULL;
- dri_bo *batch_bo;
- int i;
-
- batch = mfc_context->aux_batchbuffer;
- batch_bo = batch->buffer;
-
- for (i = 0; i < encode_state->num_slice_params_ext; i++) {
- if (i == encode_state->num_slice_params_ext - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[i + 1]->buffer;
-
- gen75_mfc_mpeg2_pipeline_slice_group(ctx, encode_state, encoder_context, i, next_slice_group_param, batch);
- }
-
- intel_batchbuffer_align(batch, 8);
-
- BEGIN_BCS_BATCH(batch, 2);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, MI_BATCH_BUFFER_END);
- ADVANCE_BCS_BATCH(batch);
-
- dri_bo_reference(batch_bo);
- intel_batchbuffer_free(batch);
- mfc_context->aux_batchbuffer = NULL;
-
- return batch_bo;
-}
-
-static void
-gen75_mfc_mpeg2_pipeline_picture_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- mfc_context->pipe_mode_select(ctx, MFX_FORMAT_MPEG2, encoder_context);
- mfc_context->set_surface_state(ctx, encoder_context);
- mfc_context->ind_obj_base_addr_state(ctx, encoder_context);
- gen75_mfc_pipe_buf_addr_state(ctx, encoder_context);
- gen75_mfc_bsp_buf_base_addr_state(ctx, encoder_context);
- gen75_mfc_mpeg2_pic_state(ctx, encoder_context, encode_state);
- gen75_mfc_mpeg2_qm_state(ctx, encoder_context);
- gen75_mfc_mpeg2_fqm_state(ctx, encoder_context);
-}
-
-static void
-gen75_mfc_mpeg2_pipeline_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- dri_bo *slice_batch_bo;
-
- slice_batch_bo = gen75_mfc_mpeg2_software_slice_batchbuffer(ctx, encode_state, encoder_context);
-
- // begin programing
- intel_batchbuffer_start_atomic_bcs(batch, 0x4000);
- intel_batchbuffer_emit_mi_flush(batch);
-
- // picture level programing
- gen75_mfc_mpeg2_pipeline_picture_programing(ctx, encode_state, encoder_context);
-
- BEGIN_BCS_BATCH(batch, 2);
- OUT_BCS_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8));
- OUT_BCS_RELOC(batch,
- slice_batch_bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- ADVANCE_BCS_BATCH(batch);
-
- // end programing
- intel_batchbuffer_end_atomic(batch);
-
- dri_bo_unreference(slice_batch_bo);
-}
-
-static VAStatus
-intel_mfc_mpeg2_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct object_surface *obj_surface;
- struct object_buffer *obj_buffer;
- struct i965_coded_buffer_segment *coded_buffer_segment;
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- dri_bo *bo;
- int i;
-
- /* reconstructed surface */
- obj_surface = encode_state->reconstructed_object;
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
- mfc_context->pre_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(mfc_context->pre_deblocking_output.bo);
- mfc_context->surface_state.width = obj_surface->orig_width;
- mfc_context->surface_state.height = obj_surface->orig_height;
- mfc_context->surface_state.w_pitch = obj_surface->width;
- mfc_context->surface_state.h_pitch = obj_surface->height;
-
- /* forward reference */
- obj_surface = encode_state->reference_objects[0];
-
- if (obj_surface && obj_surface->bo) {
- mfc_context->reference_surfaces[0].bo = obj_surface->bo;
- dri_bo_reference(mfc_context->reference_surfaces[0].bo);
- } else
- mfc_context->reference_surfaces[0].bo = NULL;
-
- /* backward reference */
- obj_surface = encode_state->reference_objects[1];
-
- if (obj_surface && obj_surface->bo) {
- mfc_context->reference_surfaces[1].bo = obj_surface->bo;
- dri_bo_reference(mfc_context->reference_surfaces[1].bo);
- } else {
- mfc_context->reference_surfaces[1].bo = mfc_context->reference_surfaces[0].bo;
-
- if (mfc_context->reference_surfaces[1].bo)
- dri_bo_reference(mfc_context->reference_surfaces[1].bo);
- }
-
- for (i = 2; i < ARRAY_ELEMS(mfc_context->reference_surfaces); i++) {
- mfc_context->reference_surfaces[i].bo = mfc_context->reference_surfaces[i & 1].bo;
-
- if (mfc_context->reference_surfaces[i].bo)
- dri_bo_reference(mfc_context->reference_surfaces[i].bo);
- }
-
- /* input YUV surface */
- obj_surface = encode_state->input_yuv_object;
- mfc_context->uncompressed_picture_source.bo = obj_surface->bo;
- dri_bo_reference(mfc_context->uncompressed_picture_source.bo);
-
- /* coded buffer */
- obj_buffer = encode_state->coded_buf_object;
- bo = obj_buffer->buffer_store->bo;
- mfc_context->mfc_indirect_pak_bse_object.bo = bo;
- mfc_context->mfc_indirect_pak_bse_object.offset = I965_CODEDBUFFER_HEADER_SIZE;
- mfc_context->mfc_indirect_pak_bse_object.end_offset = ALIGN(obj_buffer->size_element - 0x1000, 0x1000);
- dri_bo_reference(mfc_context->mfc_indirect_pak_bse_object.bo);
-
- /* set the internal flag to 0 to indicate the coded size is unknown */
- dri_bo_map(bo, 1);
- coded_buffer_segment = (struct i965_coded_buffer_segment *)bo->virtual;
- coded_buffer_segment->mapped = 0;
- coded_buffer_segment->codec = encoder_context->codec;
- dri_bo_unmap(bo);
-
- return vaStatus;
-}
-
-static VAStatus
-gen75_mfc_mpeg2_encode_picture(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- gen75_mfc_init(ctx, encode_state, encoder_context);
- intel_mfc_mpeg2_prepare(ctx, encode_state, encoder_context);
- /*Programing bcs pipeline*/
- gen75_mfc_mpeg2_pipeline_programing(ctx, encode_state, encoder_context);
- gen75_mfc_run(ctx, encode_state, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen75_mfc_context_destroy(void *context)
-{
- struct gen6_mfc_context *mfc_context = context;
- int i;
-
- dri_bo_unreference(mfc_context->post_deblocking_output.bo);
- mfc_context->post_deblocking_output.bo = NULL;
-
- dri_bo_unreference(mfc_context->pre_deblocking_output.bo);
- mfc_context->pre_deblocking_output.bo = NULL;
-
- dri_bo_unreference(mfc_context->uncompressed_picture_source.bo);
- mfc_context->uncompressed_picture_source.bo = NULL;
-
- dri_bo_unreference(mfc_context->mfc_indirect_pak_bse_object.bo);
- mfc_context->mfc_indirect_pak_bse_object.bo = NULL;
-
- for (i = 0; i < NUM_MFC_DMV_BUFFERS; i++){
- dri_bo_unreference(mfc_context->direct_mv_buffers[i].bo);
- mfc_context->direct_mv_buffers[i].bo = NULL;
- }
-
- dri_bo_unreference(mfc_context->intra_row_store_scratch_buffer.bo);
- mfc_context->intra_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(mfc_context->macroblock_status_buffer.bo);
- mfc_context->macroblock_status_buffer.bo = NULL;
-
- dri_bo_unreference(mfc_context->deblocking_filter_row_store_scratch_buffer.bo);
- mfc_context->deblocking_filter_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(mfc_context->bsd_mpc_row_store_scratch_buffer.bo);
- mfc_context->bsd_mpc_row_store_scratch_buffer.bo = NULL;
-
- for (i = 0; i < MAX_MFC_REFERENCE_SURFACES; i++){
- dri_bo_unreference(mfc_context->reference_surfaces[i].bo);
- mfc_context->reference_surfaces[i].bo = NULL;
- }
-
- i965_gpe_context_destroy(&mfc_context->gpe_context);
-
- dri_bo_unreference(mfc_context->mfc_batchbuffer_surface.bo);
- mfc_context->mfc_batchbuffer_surface.bo = NULL;
-
- dri_bo_unreference(mfc_context->aux_batchbuffer_surface.bo);
- mfc_context->aux_batchbuffer_surface.bo = NULL;
-
- if (mfc_context->aux_batchbuffer)
- intel_batchbuffer_free(mfc_context->aux_batchbuffer);
-
- mfc_context->aux_batchbuffer = NULL;
-
- free(mfc_context);
-}
-
-static VAStatus gen75_mfc_pipeline(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus vaStatus;
-
- switch (profile) {
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- case VAProfileH264MultiviewHigh:
- case VAProfileH264StereoHigh:
- vaStatus = gen75_mfc_avc_encode_picture(ctx, encode_state, encoder_context);
- break;
-
- /* FIXME: add for other profile */
- case VAProfileMPEG2Simple:
- case VAProfileMPEG2Main:
- vaStatus = gen75_mfc_mpeg2_encode_picture(ctx, encode_state, encoder_context);
- break;
-
- default:
- vaStatus = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
- break;
- }
-
- return vaStatus;
-}
-
-Bool gen75_mfc_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = calloc(1, sizeof(struct gen6_mfc_context));
-
- if (!mfc_context)
- return False;
-
- mfc_context->gpe_context.surface_state_binding_table.length = (SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_MEDIA_SURFACES_GEN6;
-
- mfc_context->gpe_context.idrt.max_entries = MAX_GPE_KERNELS;
- mfc_context->gpe_context.idrt.entry_size = sizeof(struct gen6_interface_descriptor_data);
-
- mfc_context->gpe_context.curbe.length = 32 * 4;
-
- mfc_context->gpe_context.vfe_state.max_num_threads = 60 - 1;
- mfc_context->gpe_context.vfe_state.num_urb_entries = 16;
- mfc_context->gpe_context.vfe_state.gpgpu_mode = 0;
- mfc_context->gpe_context.vfe_state.urb_entry_size = 59 - 1;
- mfc_context->gpe_context.vfe_state.curbe_allocation_size = 37 - 1;
-
- i965_gpe_load_kernels(ctx,
- &mfc_context->gpe_context,
- gen75_mfc_kernels,
- 1);
-
- mfc_context->pipe_mode_select = gen75_mfc_pipe_mode_select;
- mfc_context->set_surface_state = gen75_mfc_surface_state;
- mfc_context->ind_obj_base_addr_state = gen75_mfc_ind_obj_base_addr_state;
- mfc_context->avc_img_state = gen75_mfc_avc_img_state;
- mfc_context->avc_qm_state = gen75_mfc_avc_qm_state;
- mfc_context->avc_fqm_state = gen75_mfc_avc_fqm_state;
- mfc_context->insert_object = gen75_mfc_avc_insert_object;
- mfc_context->buffer_suface_setup = gen7_gpe_buffer_suface_setup;
-
- encoder_context->mfc_context = mfc_context;
- encoder_context->mfc_context_destroy = gen75_mfc_context_destroy;
- encoder_context->mfc_pipeline = gen75_mfc_pipeline;
- encoder_context->mfc_brc_prepare = intel_mfc_brc_prepare;
-
- return True;
-}
diff --git a/src/gen75_mfd.c b/src/gen75_mfd.c
deleted file mode 100644
index 6d8ff82..0000000
--- a/src/gen75_mfd.c
+++ /dev/null
@@ -1,3285 +0,0 @@
-/*
- * Copyright © 2011 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- * Zhao Yakui <yakui.zhao@intel.com>
- *
- */
-#include "sysdeps.h"
-
-#include <va/va_dec_jpeg.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "i965_decoder_utils.h"
-#include "gen7_mfd.h"
-#include "intel_media.h"
-
-#define B0_STEP_REV 2
-#define IS_STEPPING_BPLUS(i965) ((i965->intel.revision) >= B0_STEP_REV)
-
-static const uint32_t zigzag_direct[64] = {
- 0, 1, 8, 16, 9, 2, 3, 10,
- 17, 24, 32, 25, 18, 11, 4, 5,
- 12, 19, 26, 33, 40, 48, 41, 34,
- 27, 20, 13, 6, 7, 14, 21, 28,
- 35, 42, 49, 56, 57, 50, 43, 36,
- 29, 22, 15, 23, 30, 37, 44, 51,
- 58, 59, 52, 45, 38, 31, 39, 46,
- 53, 60, 61, 54, 47, 55, 62, 63
-};
-
-static void
-gen75_mfd_init_avc_surface(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- struct object_surface *obj_surface)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- GenAvcSurface *gen7_avc_surface = obj_surface->private_data;
- int width_in_mbs, height_in_mbs;
-
- obj_surface->free_private_data = gen_free_avc_surface;
- width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
- height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1; /* frame height */
-
- if (!gen7_avc_surface) {
- gen7_avc_surface = calloc(sizeof(GenAvcSurface), 1);
- assert(gen7_avc_surface);
- gen7_avc_surface->base.frame_store_id = -1;
- assert((obj_surface->size & 0x3f) == 0);
- obj_surface->private_data = gen7_avc_surface;
- }
-
- gen7_avc_surface->dmv_bottom_flag = (pic_param->pic_fields.bits.field_pic_flag &&
- !pic_param->seq_fields.bits.direct_8x8_inference_flag);
-
- if (gen7_avc_surface->dmv_top == NULL) {
- gen7_avc_surface->dmv_top = dri_bo_alloc(i965->intel.bufmgr,
- "direct mv w/r buffer",
- width_in_mbs * height_in_mbs * 128,
- 0x1000);
- assert(gen7_avc_surface->dmv_top);
- }
-
- if (gen7_avc_surface->dmv_bottom_flag &&
- gen7_avc_surface->dmv_bottom == NULL) {
- gen7_avc_surface->dmv_bottom = dri_bo_alloc(i965->intel.bufmgr,
- "direct mv w/r buffer",
- width_in_mbs * height_in_mbs * 128,
- 0x1000);
- assert(gen7_avc_surface->dmv_bottom);
- }
-}
-
-static void
-gen75_mfd_pipe_mode_select(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- assert(standard_select == MFX_FORMAT_MPEG2 ||
- standard_select == MFX_FORMAT_AVC ||
- standard_select == MFX_FORMAT_VC1 ||
- standard_select == MFX_FORMAT_JPEG);
-
- BEGIN_BCS_BATCH(batch, 5);
- OUT_BCS_BATCH(batch, MFX_PIPE_MODE_SELECT | (5 - 2));
- OUT_BCS_BATCH(batch,
- (MFX_LONG_MODE << 17) | /* Currently only support long format */
- (MFD_MODE_VLD << 15) | /* VLD mode */
- (0 << 10) | /* disable Stream-Out */
- (gen7_mfd_context->post_deblocking_output.valid << 9) | /* Post Deblocking Output */
- (gen7_mfd_context->pre_deblocking_output.valid << 8) | /* Pre Deblocking Output */
- (0 << 5) | /* not in stitch mode */
- (MFX_CODEC_DECODE << 4) | /* decoding mode */
- (standard_select << 0));
- OUT_BCS_BATCH(batch,
- (0 << 4) | /* terminate if AVC motion and POC table error occurs */
- (0 << 3) | /* terminate if AVC mbdata error occurs */
- (0 << 2) | /* terminate if AVC CABAC/CAVLC decode error occurs */
- (0 << 1) |
- (0 << 0));
- OUT_BCS_BATCH(batch, 0); /* pic status/error report id */
- OUT_BCS_BATCH(batch, 0); /* reserved */
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfd_surface_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- struct object_surface *obj_surface = decode_state->render_object;
- unsigned int y_cb_offset;
- unsigned int y_cr_offset;
- unsigned int surface_format;
-
- assert(obj_surface);
-
- y_cb_offset = obj_surface->y_cb_offset;
- y_cr_offset = obj_surface->y_cr_offset;
-
- surface_format = obj_surface->fourcc == VA_FOURCC_Y800 ?
- MFX_SURFACE_MONOCHROME : MFX_SURFACE_PLANAR_420_8;
-
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- ((obj_surface->orig_height - 1) << 18) |
- ((obj_surface->orig_width - 1) << 4));
- OUT_BCS_BATCH(batch,
- (surface_format << 28) | /* 420 planar YUV surface */
- ((standard_select != MFX_FORMAT_JPEG) << 27) | /* interleave chroma, set to 0 for JPEG */
- (0 << 22) | /* surface object control state, ignored */
- ((obj_surface->width - 1) << 3) | /* pitch */
- (0 << 2) | /* must be 0 */
- (1 << 1) | /* must be tiled */
- (I965_TILEWALK_YMAJOR << 0)); /* tile walk, must be 1 */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* X offset for U(Cb), must be 0 */
- (y_cb_offset << 0)); /* Y offset for U(Cb) */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* X offset for V(Cr), must be 0 */
- (y_cr_offset << 0)); /* Y offset for V(Cr), must be 0 for video codec, non-zoro for JPEG */
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfd_pipe_buf_addr_state_bplus(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int i;
-
- BEGIN_BCS_BATCH(batch, 61);
- OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (61 - 2));
- /* Pre-deblock 1-3 */
- if (gen7_mfd_context->pre_deblocking_output.valid)
- OUT_BCS_RELOC(batch, gen7_mfd_context->pre_deblocking_output.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- /* Post-debloing 4-6 */
- if (gen7_mfd_context->post_deblocking_output.valid)
- OUT_BCS_RELOC(batch, gen7_mfd_context->post_deblocking_output.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* uncompressed-video & stream out 7-12 */
- OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
- OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* intra row-store scratch 13-15 */
- if (gen7_mfd_context->intra_row_store_scratch_buffer.valid)
- OUT_BCS_RELOC(batch, gen7_mfd_context->intra_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- /* deblocking-filter-row-store 16-18 */
- if (gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid)
- OUT_BCS_RELOC(batch, gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* DW 19..50 */
- for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
- struct object_surface *obj_surface;
-
- if (gen7_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID &&
- gen7_mfd_context->reference_surface[i].obj_surface &&
- gen7_mfd_context->reference_surface[i].obj_surface->bo) {
- obj_surface = gen7_mfd_context->reference_surface[i].obj_surface;
-
- OUT_BCS_RELOC(batch, obj_surface->bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- }
- OUT_BCS_BATCH(batch, 0);
- }
- /* reference property 51 */
- OUT_BCS_BATCH(batch, 0);
-
- /* Macroblock status & ILDB 52-57 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the second Macroblock status 58-60 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfd_pipe_buf_addr_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- int i;
-
- if (IS_STEPPING_BPLUS(i965)) {
- gen75_mfd_pipe_buf_addr_state_bplus(ctx, decode_state,
- standard_select, gen7_mfd_context);
- return;
- }
-
- BEGIN_BCS_BATCH(batch, 25);
- OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (25 - 2));
- if (gen7_mfd_context->pre_deblocking_output.valid)
- OUT_BCS_RELOC(batch, gen7_mfd_context->pre_deblocking_output.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- if (gen7_mfd_context->post_deblocking_output.valid)
- OUT_BCS_RELOC(batch, gen7_mfd_context->post_deblocking_output.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
- OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
-
- if (gen7_mfd_context->intra_row_store_scratch_buffer.valid)
- OUT_BCS_RELOC(batch, gen7_mfd_context->intra_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- if (gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid)
- OUT_BCS_RELOC(batch, gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- /* DW 7..22 */
- for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
- struct object_surface *obj_surface;
-
- if (gen7_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID &&
- gen7_mfd_context->reference_surface[i].obj_surface &&
- gen7_mfd_context->reference_surface[i].obj_surface->bo) {
- obj_surface = gen7_mfd_context->reference_surface[i].obj_surface;
-
- OUT_BCS_RELOC(batch, obj_surface->bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- OUT_BCS_BATCH(batch, 0); /* ignore DW23 for decoding */
- OUT_BCS_BATCH(batch, 0); /* ignore DW24 for decoding */
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfd_ind_obj_base_addr_state_bplus(VADriverContextP ctx,
- dri_bo *slice_data_bo,
- int standard_select,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 26);
- OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (26 - 2));
- /* MFX In BS 1-5 */
- OUT_BCS_RELOC(batch, slice_data_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); /* MFX Indirect Bitstream Object Base Address */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- /* Upper bound 4-5 */
- OUT_BCS_BATCH(batch, 0x80000000); /* must set, up to 2G */
- OUT_BCS_BATCH(batch, 0);
-
- /* MFX indirect MV 6-10 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* MFX IT_COFF 11-15 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* MFX IT_DBLK 16-20 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* MFX PAK_BSE object for encoder 21-25 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfd_ind_obj_base_addr_state(VADriverContextP ctx,
- dri_bo *slice_data_bo,
- int standard_select,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
-
- if (IS_STEPPING_BPLUS(i965)) {
- gen75_mfd_ind_obj_base_addr_state_bplus(ctx, slice_data_bo,
- standard_select, gen7_mfd_context);
- return;
- }
-
- BEGIN_BCS_BATCH(batch, 11);
- OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (11 - 2));
- OUT_BCS_RELOC(batch, slice_data_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); /* MFX Indirect Bitstream Object Base Address */
- OUT_BCS_BATCH(batch, 0x80000000); /* must set, up to 2G */
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfd_bsp_buf_base_addr_state_bplus(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 10);
- OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (10 - 2));
-
- if (gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid)
- OUT_BCS_RELOC(batch, gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- /* MPR Row Store Scratch buffer 4-6 */
- if (gen7_mfd_context->mpr_row_store_scratch_buffer.valid)
- OUT_BCS_RELOC(batch, gen7_mfd_context->mpr_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* Bitplane 7-9 */
- if (gen7_mfd_context->bitplane_read_buffer.valid)
- OUT_BCS_RELOC(batch, gen7_mfd_context->bitplane_read_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfd_bsp_buf_base_addr_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
-
- if (IS_STEPPING_BPLUS(i965)) {
- gen75_mfd_bsp_buf_base_addr_state_bplus(ctx, decode_state,
- standard_select, gen7_mfd_context);
- return;
- }
-
- BEGIN_BCS_BATCH(batch, 4);
- OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (4 - 2));
-
- if (gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid)
- OUT_BCS_RELOC(batch, gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- if (gen7_mfd_context->mpr_row_store_scratch_buffer.valid)
- OUT_BCS_RELOC(batch, gen7_mfd_context->mpr_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- if (gen7_mfd_context->bitplane_read_buffer.valid)
- OUT_BCS_RELOC(batch, gen7_mfd_context->bitplane_read_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfd_qm_state(VADriverContextP ctx,
- int qm_type,
- unsigned char *qm,
- int qm_length,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- unsigned int qm_buffer[16];
-
- assert(qm_length <= 16 * 4);
- memcpy(qm_buffer, qm, qm_length);
-
- BEGIN_BCS_BATCH(batch, 18);
- OUT_BCS_BATCH(batch, MFX_QM_STATE | (18 - 2));
- OUT_BCS_BATCH(batch, qm_type << 0);
- intel_batchbuffer_data(batch, qm_buffer, 16 * 4);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfd_avc_img_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int img_struct;
- int mbaff_frame_flag;
- unsigned int width_in_mbs, height_in_mbs;
- VAPictureParameterBufferH264 *pic_param;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
-
- assert(!(pic_param->CurrPic.flags & VA_PICTURE_H264_INVALID));
-
- if (pic_param->CurrPic.flags & VA_PICTURE_H264_TOP_FIELD)
- img_struct = 1;
- else if (pic_param->CurrPic.flags & VA_PICTURE_H264_BOTTOM_FIELD)
- img_struct = 3;
- else
- img_struct = 0;
-
- if ((img_struct & 0x1) == 0x1) {
- assert(pic_param->pic_fields.bits.field_pic_flag == 0x1);
- } else {
- assert(pic_param->pic_fields.bits.field_pic_flag == 0x0);
- }
-
- if (pic_param->seq_fields.bits.frame_mbs_only_flag) { /* a frame containing only frame macroblocks */
- assert(pic_param->seq_fields.bits.mb_adaptive_frame_field_flag == 0);
- assert(pic_param->pic_fields.bits.field_pic_flag == 0);
- } else {
- assert(pic_param->seq_fields.bits.direct_8x8_inference_flag == 1); /* see H.264 spec */
- }
-
- mbaff_frame_flag = (pic_param->seq_fields.bits.mb_adaptive_frame_field_flag &&
- !pic_param->pic_fields.bits.field_pic_flag);
-
- width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
- height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1; /* frame height */
-
- /* MFX unit doesn't support 4:2:2 and 4:4:4 picture */
- assert(pic_param->seq_fields.bits.chroma_format_idc == 0 || /* monochrome picture */
- pic_param->seq_fields.bits.chroma_format_idc == 1); /* 4:2:0 */
- assert(pic_param->seq_fields.bits.residual_colour_transform_flag == 0); /* only available for 4:4:4 */
-
- BEGIN_BCS_BATCH(batch, 17);
- OUT_BCS_BATCH(batch, MFX_AVC_IMG_STATE | (17 - 2));
- OUT_BCS_BATCH(batch,
- (width_in_mbs * height_in_mbs - 1));
- OUT_BCS_BATCH(batch,
- ((height_in_mbs - 1) << 16) |
- ((width_in_mbs - 1) << 0));
- OUT_BCS_BATCH(batch,
- ((pic_param->second_chroma_qp_index_offset & 0x1f) << 24) |
- ((pic_param->chroma_qp_index_offset & 0x1f) << 16) |
- (0 << 14) | /* Max-bit conformance Intra flag ??? FIXME */
- (0 << 13) | /* Max Macroblock size conformance Inter flag ??? FIXME */
- (pic_param->pic_fields.bits.weighted_pred_flag << 12) | /* differ from GEN6 */
- (pic_param->pic_fields.bits.weighted_bipred_idc << 10) |
- (img_struct << 8));
- OUT_BCS_BATCH(batch,
- (pic_param->seq_fields.bits.chroma_format_idc << 10) |
- (pic_param->pic_fields.bits.entropy_coding_mode_flag << 7) |
- ((!pic_param->pic_fields.bits.reference_pic_flag) << 6) |
- (pic_param->pic_fields.bits.constrained_intra_pred_flag << 5) |
- (pic_param->seq_fields.bits.direct_8x8_inference_flag << 4) |
- (pic_param->pic_fields.bits.transform_8x8_mode_flag << 3) |
- (pic_param->seq_fields.bits.frame_mbs_only_flag << 2) |
- (mbaff_frame_flag << 1) |
- (pic_param->pic_fields.bits.field_pic_flag << 0));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfd_avc_qm_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- VAIQMatrixBufferH264 *iq_matrix;
- VAPictureParameterBufferH264 *pic_param;
-
- if (decode_state->iq_matrix && decode_state->iq_matrix->buffer)
- iq_matrix = (VAIQMatrixBufferH264 *)decode_state->iq_matrix->buffer;
- else
- iq_matrix = &gen7_mfd_context->iq_matrix.h264;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
-
- gen75_mfd_qm_state(ctx, MFX_QM_AVC_4X4_INTRA_MATRIX, &iq_matrix->ScalingList4x4[0][0], 3 * 16, gen7_mfd_context);
- gen75_mfd_qm_state(ctx, MFX_QM_AVC_4X4_INTER_MATRIX, &iq_matrix->ScalingList4x4[3][0], 3 * 16, gen7_mfd_context);
-
- if (pic_param->pic_fields.bits.transform_8x8_mode_flag) {
- gen75_mfd_qm_state(ctx, MFX_QM_AVC_8x8_INTRA_MATRIX, &iq_matrix->ScalingList8x8[0][0], 64, gen7_mfd_context);
- gen75_mfd_qm_state(ctx, MFX_QM_AVC_8x8_INTER_MATRIX, &iq_matrix->ScalingList8x8[1][0], 64, gen7_mfd_context);
- }
-}
-
-static inline void
-gen75_mfd_avc_picid_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- gen75_send_avc_picid_state(gen7_mfd_context->base.batch,
- gen7_mfd_context->reference_surface);
-}
-
-static void
-gen75_mfd_avc_directmode_state_bplus(VADriverContextP ctx,
- struct decode_state *decode_state,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- struct object_surface *obj_surface;
- GenAvcSurface *gen7_avc_surface;
- VAPictureH264 *va_pic;
- int i;
-
- BEGIN_BCS_BATCH(batch, 71);
- OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (71 - 2));
-
- /* reference surfaces 0..15 */
- for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
- if (gen7_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID &&
- gen7_mfd_context->reference_surface[i].obj_surface &&
- gen7_mfd_context->reference_surface[i].obj_surface->private_data) {
-
- obj_surface = gen7_mfd_context->reference_surface[i].obj_surface;
- gen7_avc_surface = obj_surface->private_data;
- OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_top,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- OUT_BCS_BATCH(batch, 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- OUT_BCS_BATCH(batch, 0);
-
- /* the current decoding frame/field */
- va_pic = &pic_param->CurrPic;
- obj_surface = decode_state->render_object;
- assert(obj_surface->bo && obj_surface->private_data);
- gen7_avc_surface = obj_surface->private_data;
-
- OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_top,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* POC List */
- for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
- obj_surface = gen7_mfd_context->reference_surface[i].obj_surface;
-
- if (obj_surface) {
- const VAPictureH264 * const va_pic = avc_find_picture(
- obj_surface->base.id, pic_param->ReferenceFrames,
- ARRAY_ELEMS(pic_param->ReferenceFrames));
-
- assert(va_pic != NULL);
- OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
- OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- va_pic = &pic_param->CurrPic;
- OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
- OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfd_avc_directmode_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- struct object_surface *obj_surface;
- GenAvcSurface *gen7_avc_surface;
- VAPictureH264 *va_pic;
- int i;
-
- if (IS_STEPPING_BPLUS(i965)) {
- gen75_mfd_avc_directmode_state_bplus(ctx, decode_state, pic_param, slice_param,
- gen7_mfd_context);
-
- return;
- }
-
- BEGIN_BCS_BATCH(batch, 69);
- OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (69 - 2));
-
- /* reference surfaces 0..15 */
- for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
- if (gen7_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID &&
- gen7_mfd_context->reference_surface[i].obj_surface &&
- gen7_mfd_context->reference_surface[i].obj_surface->private_data) {
-
- obj_surface = gen7_mfd_context->reference_surface[i].obj_surface;
- gen7_avc_surface = obj_surface->private_data;
-
- OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_top,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
-
- if (gen7_avc_surface->dmv_bottom_flag == 1)
- OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_bottom,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- else
- OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_top,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- /* the current decoding frame/field */
- va_pic = &pic_param->CurrPic;
- obj_surface = decode_state->render_object;
- assert(obj_surface->bo && obj_surface->private_data);
- gen7_avc_surface = obj_surface->private_data;
-
- OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_top,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- if (gen7_avc_surface->dmv_bottom_flag == 1)
- OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_bottom,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_top,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- /* POC List */
- for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
- obj_surface = gen7_mfd_context->reference_surface[i].obj_surface;
-
- if (obj_surface) {
- const VAPictureH264 * const va_pic = avc_find_picture(
- obj_surface->base.id, pic_param->ReferenceFrames,
- ARRAY_ELEMS(pic_param->ReferenceFrames));
-
- assert(va_pic != NULL);
- OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
- OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- va_pic = &pic_param->CurrPic;
- OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
- OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfd_avc_phantom_slice_first(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *next_slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- gen6_mfd_avc_phantom_slice(ctx, pic_param, next_slice_param, gen7_mfd_context->base.batch);
-}
-
-static void
-gen75_mfd_avc_slice_state(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- VASliceParameterBufferH264 *next_slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
- int height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1;
- int slice_hor_pos, slice_ver_pos, next_slice_hor_pos, next_slice_ver_pos;
- int num_ref_idx_l0, num_ref_idx_l1;
- int mbaff_picture = (!pic_param->pic_fields.bits.field_pic_flag &&
- pic_param->seq_fields.bits.mb_adaptive_frame_field_flag);
- int first_mb_in_slice = 0, first_mb_in_next_slice = 0;
- int slice_type;
-
- if (slice_param->slice_type == SLICE_TYPE_I ||
- slice_param->slice_type == SLICE_TYPE_SI) {
- slice_type = SLICE_TYPE_I;
- } else if (slice_param->slice_type == SLICE_TYPE_P ||
- slice_param->slice_type == SLICE_TYPE_SP) {
- slice_type = SLICE_TYPE_P;
- } else {
- assert(slice_param->slice_type == SLICE_TYPE_B);
- slice_type = SLICE_TYPE_B;
- }
-
- if (slice_type == SLICE_TYPE_I) {
- assert(slice_param->num_ref_idx_l0_active_minus1 == 0);
- assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
- num_ref_idx_l0 = 0;
- num_ref_idx_l1 = 0;
- } else if (slice_type == SLICE_TYPE_P) {
- assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
- num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
- num_ref_idx_l1 = 0;
- } else {
- num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
- num_ref_idx_l1 = slice_param->num_ref_idx_l1_active_minus1 + 1;
- }
-
- first_mb_in_slice = slice_param->first_mb_in_slice;
- slice_hor_pos = first_mb_in_slice % width_in_mbs;
- slice_ver_pos = first_mb_in_slice / width_in_mbs;
-
- if (mbaff_picture)
- slice_ver_pos = slice_ver_pos << 1;
-
- if (next_slice_param) {
- first_mb_in_next_slice = next_slice_param->first_mb_in_slice;
- next_slice_hor_pos = first_mb_in_next_slice % width_in_mbs;
- next_slice_ver_pos = first_mb_in_next_slice / width_in_mbs;
-
- if (mbaff_picture)
- next_slice_ver_pos = next_slice_ver_pos << 1;
- } else {
- next_slice_hor_pos = 0;
- next_slice_ver_pos = height_in_mbs / (1 + !!pic_param->pic_fields.bits.field_pic_flag);
- }
-
- BEGIN_BCS_BATCH(batch, 11); /* FIXME: is it 10??? */
- OUT_BCS_BATCH(batch, MFX_AVC_SLICE_STATE | (11 - 2));
- OUT_BCS_BATCH(batch, slice_type);
- OUT_BCS_BATCH(batch,
- (num_ref_idx_l1 << 24) |
- (num_ref_idx_l0 << 16) |
- (slice_param->chroma_log2_weight_denom << 8) |
- (slice_param->luma_log2_weight_denom << 0));
- OUT_BCS_BATCH(batch,
- (slice_param->direct_spatial_mv_pred_flag << 29) |
- (slice_param->disable_deblocking_filter_idc << 27) |
- (slice_param->cabac_init_idc << 24) |
- ((pic_param->pic_init_qp_minus26 + 26 + slice_param->slice_qp_delta) << 16) |
- ((slice_param->slice_beta_offset_div2 & 0xf) << 8) |
- ((slice_param->slice_alpha_c0_offset_div2 & 0xf) << 0));
- OUT_BCS_BATCH(batch,
- (slice_ver_pos << 24) |
- (slice_hor_pos << 16) |
- (first_mb_in_slice << 0));
- OUT_BCS_BATCH(batch,
- (next_slice_ver_pos << 16) |
- (next_slice_hor_pos << 0));
- OUT_BCS_BATCH(batch,
- (next_slice_param == NULL) << 19); /* last slice flag */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static inline void
-gen75_mfd_avc_ref_idx_state(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- gen6_send_avc_ref_idx_state(
- gen7_mfd_context->base.batch,
- slice_param,
- gen7_mfd_context->reference_surface
- );
-}
-
-static void
-gen75_mfd_avc_weightoffset_state(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int i, j, num_weight_offset_table = 0;
- short weightoffsets[32 * 6];
-
- if ((slice_param->slice_type == SLICE_TYPE_P ||
- slice_param->slice_type == SLICE_TYPE_SP) &&
- (pic_param->pic_fields.bits.weighted_pred_flag == 1)) {
- num_weight_offset_table = 1;
- }
-
- if ((slice_param->slice_type == SLICE_TYPE_B) &&
- (pic_param->pic_fields.bits.weighted_bipred_idc == 1)) {
- num_weight_offset_table = 2;
- }
-
- for (i = 0; i < num_weight_offset_table; i++) {
- BEGIN_BCS_BATCH(batch, 98);
- OUT_BCS_BATCH(batch, MFX_AVC_WEIGHTOFFSET_STATE | (98 - 2));
- OUT_BCS_BATCH(batch, i);
-
- if (i == 0) {
- for (j = 0; j < 32; j++) {
- weightoffsets[j * 6 + 0] = slice_param->luma_weight_l0[j];
- weightoffsets[j * 6 + 1] = slice_param->luma_offset_l0[j];
- weightoffsets[j * 6 + 2] = slice_param->chroma_weight_l0[j][0];
- weightoffsets[j * 6 + 3] = slice_param->chroma_offset_l0[j][0];
- weightoffsets[j * 6 + 4] = slice_param->chroma_weight_l0[j][1];
- weightoffsets[j * 6 + 5] = slice_param->chroma_offset_l0[j][1];
- }
- } else {
- for (j = 0; j < 32; j++) {
- weightoffsets[j * 6 + 0] = slice_param->luma_weight_l1[j];
- weightoffsets[j * 6 + 1] = slice_param->luma_offset_l1[j];
- weightoffsets[j * 6 + 2] = slice_param->chroma_weight_l1[j][0];
- weightoffsets[j * 6 + 3] = slice_param->chroma_offset_l1[j][0];
- weightoffsets[j * 6 + 4] = slice_param->chroma_weight_l1[j][1];
- weightoffsets[j * 6 + 5] = slice_param->chroma_offset_l1[j][1];
- }
- }
-
- intel_batchbuffer_data(batch, weightoffsets, sizeof(weightoffsets));
- ADVANCE_BCS_BATCH(batch);
- }
-}
-
-static void
-gen75_mfd_avc_bsd_object(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- dri_bo *slice_data_bo,
- VASliceParameterBufferH264 *next_slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int slice_data_bit_offset = avc_get_first_mb_bit_offset(slice_data_bo,
- slice_param,
- pic_param->pic_fields.bits.entropy_coding_mode_flag);
-
- /* the input bitsteam format on GEN7 differs from GEN6 */
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFD_AVC_BSD_OBJECT | (6 - 2));
- OUT_BCS_BATCH(batch,
- (slice_param->slice_data_size - slice_param->slice_data_offset));
- OUT_BCS_BATCH(batch, slice_param->slice_data_offset);
- OUT_BCS_BATCH(batch,
- (0 << 31) |
- (0 << 14) |
- (0 << 12) |
- (0 << 10) |
- (0 << 8));
- OUT_BCS_BATCH(batch,
- ((slice_data_bit_offset >> 3) << 16) |
- (1 << 7) |
- (0 << 5) |
- (0 << 4) |
- ((next_slice_param == NULL) << 3) | /* LastSlice Flag */
- (slice_data_bit_offset & 0x7));
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static inline void
-gen75_mfd_avc_context_init(
- VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context
-)
-{
- /* Initialize flat scaling lists */
- avc_gen_default_iq_matrix(&gen7_mfd_context->iq_matrix.h264);
-}
-
-static void
-gen75_mfd_avc_decode_init(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- VAPictureParameterBufferH264 *pic_param;
- VASliceParameterBufferH264 *slice_param;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface;
- dri_bo *bo;
- int i, j, enable_avc_ildb = 0;
- unsigned int width_in_mbs, height_in_mbs;
-
- for (j = 0; j < decode_state->num_slice_params && enable_avc_ildb == 0; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j]->buffer;
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
- assert((slice_param->slice_type == SLICE_TYPE_I) ||
- (slice_param->slice_type == SLICE_TYPE_SI) ||
- (slice_param->slice_type == SLICE_TYPE_P) ||
- (slice_param->slice_type == SLICE_TYPE_SP) ||
- (slice_param->slice_type == SLICE_TYPE_B));
-
- if (slice_param->disable_deblocking_filter_idc != 1) {
- enable_avc_ildb = 1;
- break;
- }
-
- slice_param++;
- }
- }
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
- gen75_update_avc_frame_store_index(ctx, decode_state, pic_param,
- gen7_mfd_context->reference_surface);
- width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
- height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1;
- assert(width_in_mbs > 0 && width_in_mbs <= 256); /* 4K */
- assert(height_in_mbs > 0 && height_in_mbs <= 256);
-
- /* Current decoded picture */
- obj_surface = decode_state->render_object;
- if (pic_param->pic_fields.bits.reference_pic_flag)
- obj_surface->flags |= SURFACE_REFERENCED;
- else
- obj_surface->flags &= ~SURFACE_REFERENCED;
-
- avc_ensure_surface_bo(ctx, decode_state, obj_surface, pic_param);
- gen75_mfd_init_avc_surface(ctx, pic_param, obj_surface);
-
- dri_bo_unreference(gen7_mfd_context->post_deblocking_output.bo);
- gen7_mfd_context->post_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen7_mfd_context->post_deblocking_output.bo);
- gen7_mfd_context->post_deblocking_output.valid = enable_avc_ildb;
-
- dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.valid = !enable_avc_ildb;
-
- dri_bo_unreference(gen7_mfd_context->intra_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "intra row store",
- width_in_mbs * 64,
- 0x1000);
- assert(bo);
- gen7_mfd_context->intra_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->intra_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "deblocking filter row store",
- width_in_mbs * 64 * 4,
- 0x1000);
- assert(bo);
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "bsd mpc row store",
- width_in_mbs * 64 * 2,
- 0x1000);
- assert(bo);
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen7_mfd_context->mpr_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "mpr row store",
- width_in_mbs * 64 * 2,
- 0x1000);
- assert(bo);
- gen7_mfd_context->mpr_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->mpr_row_store_scratch_buffer.valid = 1;
-
- gen7_mfd_context->bitplane_read_buffer.valid = 0;
-}
-
-static void
-gen75_mfd_avc_decode_picture(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferH264 *pic_param;
- VASliceParameterBufferH264 *slice_param, *next_slice_param, *next_slice_group_param;
- dri_bo *slice_data_bo;
- int i, j;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
- gen75_mfd_avc_decode_init(ctx, decode_state, gen7_mfd_context);
-
- intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- gen75_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_AVC, gen7_mfd_context);
- gen75_mfd_surface_state(ctx, decode_state, MFX_FORMAT_AVC, gen7_mfd_context);
- gen75_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_AVC, gen7_mfd_context);
- gen75_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_AVC, gen7_mfd_context);
- gen75_mfd_avc_qm_state(ctx, decode_state, gen7_mfd_context);
- gen75_mfd_avc_picid_state(ctx, decode_state, gen7_mfd_context);
- gen75_mfd_avc_img_state(ctx, decode_state, gen7_mfd_context);
-
- for (j = 0; j < decode_state->num_slice_params; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j]->buffer;
- slice_data_bo = decode_state->slice_datas[j]->bo;
- gen75_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_AVC, gen7_mfd_context);
-
- if (j == decode_state->num_slice_params - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j + 1]->buffer;
-
- if (j == 0 && slice_param->first_mb_in_slice)
- gen75_mfd_avc_phantom_slice_first(ctx, pic_param, slice_param, gen7_mfd_context);
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
- assert((slice_param->slice_type == SLICE_TYPE_I) ||
- (slice_param->slice_type == SLICE_TYPE_SI) ||
- (slice_param->slice_type == SLICE_TYPE_P) ||
- (slice_param->slice_type == SLICE_TYPE_SP) ||
- (slice_param->slice_type == SLICE_TYPE_B));
-
- if (i < decode_state->slice_params[j]->num_elements - 1)
- next_slice_param = slice_param + 1;
- else
- next_slice_param = next_slice_group_param;
-
- gen75_mfd_avc_directmode_state(ctx, decode_state, pic_param, slice_param, gen7_mfd_context);
- gen75_mfd_avc_ref_idx_state(ctx, pic_param, slice_param, gen7_mfd_context);
- gen75_mfd_avc_weightoffset_state(ctx, pic_param, slice_param, gen7_mfd_context);
- gen75_mfd_avc_slice_state(ctx, pic_param, slice_param, next_slice_param, gen7_mfd_context);
- gen75_mfd_avc_bsd_object(ctx, pic_param, slice_param, slice_data_bo, next_slice_param, gen7_mfd_context);
- slice_param++;
- }
- }
-
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-}
-
-static void
-gen75_mfd_mpeg2_decode_init(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- VAPictureParameterBufferMPEG2 *pic_param;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface;
- dri_bo *bo;
- unsigned int width_in_mbs;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
- width_in_mbs = ALIGN(pic_param->horizontal_size, 16) / 16;
-
- mpeg2_set_reference_surfaces(
- ctx,
- gen7_mfd_context->reference_surface,
- decode_state,
- pic_param
- );
-
- /* Current decoded picture */
- obj_surface = decode_state->render_object;
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
-
- dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.valid = 1;
-
- dri_bo_unreference(gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "bsd mpc row store",
- width_in_mbs * 96,
- 0x1000);
- assert(bo);
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
-
- gen7_mfd_context->post_deblocking_output.valid = 0;
- gen7_mfd_context->intra_row_store_scratch_buffer.valid = 0;
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 0;
- gen7_mfd_context->mpr_row_store_scratch_buffer.valid = 0;
- gen7_mfd_context->bitplane_read_buffer.valid = 0;
-}
-
-static void
-gen75_mfd_mpeg2_pic_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferMPEG2 *pic_param;
- unsigned int slice_concealment_disable_bit = 0;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
-
- slice_concealment_disable_bit = 1;
-
- BEGIN_BCS_BATCH(batch, 13);
- OUT_BCS_BATCH(batch, MFX_MPEG2_PIC_STATE | (13 - 2));
- OUT_BCS_BATCH(batch,
- (pic_param->f_code & 0xf) << 28 | /* f_code[1][1] */
- ((pic_param->f_code >> 4) & 0xf) << 24 | /* f_code[1][0] */
- ((pic_param->f_code >> 8) & 0xf) << 20 | /* f_code[0][1] */
- ((pic_param->f_code >> 12) & 0xf) << 16 | /* f_code[0][0] */
- pic_param->picture_coding_extension.bits.intra_dc_precision << 14 |
- pic_param->picture_coding_extension.bits.picture_structure << 12 |
- pic_param->picture_coding_extension.bits.top_field_first << 11 |
- pic_param->picture_coding_extension.bits.frame_pred_frame_dct << 10 |
- pic_param->picture_coding_extension.bits.concealment_motion_vectors << 9 |
- pic_param->picture_coding_extension.bits.q_scale_type << 8 |
- pic_param->picture_coding_extension.bits.intra_vlc_format << 7 |
- pic_param->picture_coding_extension.bits.alternate_scan << 6);
- OUT_BCS_BATCH(batch,
- pic_param->picture_coding_type << 9);
- OUT_BCS_BATCH(batch,
- (slice_concealment_disable_bit << 31) |
- ((ALIGN(pic_param->vertical_size, 16) / 16) - 1) << 16 |
- ((ALIGN(pic_param->horizontal_size, 16) / 16) - 1));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfd_mpeg2_qm_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- VAIQMatrixBufferMPEG2 * const gen_iq_matrix = &gen7_mfd_context->iq_matrix.mpeg2;
- int i, j;
-
- /* Update internal QM state */
- if (decode_state->iq_matrix && decode_state->iq_matrix->buffer) {
- VAIQMatrixBufferMPEG2 * const iq_matrix =
- (VAIQMatrixBufferMPEG2 *)decode_state->iq_matrix->buffer;
-
- if (gen_iq_matrix->load_intra_quantiser_matrix == -1 ||
- iq_matrix->load_intra_quantiser_matrix) {
- gen_iq_matrix->load_intra_quantiser_matrix =
- iq_matrix->load_intra_quantiser_matrix;
- if (iq_matrix->load_intra_quantiser_matrix) {
- for (j = 0; j < 64; j++)
- gen_iq_matrix->intra_quantiser_matrix[zigzag_direct[j]] =
- iq_matrix->intra_quantiser_matrix[j];
- }
- }
-
- if (gen_iq_matrix->load_non_intra_quantiser_matrix == -1 ||
- iq_matrix->load_non_intra_quantiser_matrix) {
- gen_iq_matrix->load_non_intra_quantiser_matrix =
- iq_matrix->load_non_intra_quantiser_matrix;
- if (iq_matrix->load_non_intra_quantiser_matrix) {
- for (j = 0; j < 64; j++)
- gen_iq_matrix->non_intra_quantiser_matrix[zigzag_direct[j]] =
- iq_matrix->non_intra_quantiser_matrix[j];
- }
- }
- }
-
- /* Commit QM state to HW */
- for (i = 0; i < 2; i++) {
- unsigned char *qm = NULL;
- int qm_type;
-
- if (i == 0) {
- if (gen_iq_matrix->load_intra_quantiser_matrix) {
- qm = gen_iq_matrix->intra_quantiser_matrix;
- qm_type = MFX_QM_MPEG_INTRA_QUANTIZER_MATRIX;
- }
- } else {
- if (gen_iq_matrix->load_non_intra_quantiser_matrix) {
- qm = gen_iq_matrix->non_intra_quantiser_matrix;
- qm_type = MFX_QM_MPEG_NON_INTRA_QUANTIZER_MATRIX;
- }
- }
-
- if (!qm)
- continue;
-
- gen75_mfd_qm_state(ctx, qm_type, qm, 64, gen7_mfd_context);
- }
-}
-
-static void
-gen75_mfd_mpeg2_bsd_object(VADriverContextP ctx,
- VAPictureParameterBufferMPEG2 *pic_param,
- VASliceParameterBufferMPEG2 *slice_param,
- VASliceParameterBufferMPEG2 *next_slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- unsigned int width_in_mbs = ALIGN(pic_param->horizontal_size, 16) / 16;
- int mb_count, vpos0, hpos0, vpos1, hpos1, is_field_pic_wa, is_field_pic = 0;
-
- if (pic_param->picture_coding_extension.bits.picture_structure == MPEG_TOP_FIELD ||
- pic_param->picture_coding_extension.bits.picture_structure == MPEG_BOTTOM_FIELD)
- is_field_pic = 1;
- is_field_pic_wa = is_field_pic &&
- gen7_mfd_context->wa_mpeg2_slice_vertical_position > 0;
-
- vpos0 = slice_param->slice_vertical_position / (1 + is_field_pic_wa);
- hpos0 = slice_param->slice_horizontal_position;
-
- if (next_slice_param == NULL) {
- vpos1 = ALIGN(pic_param->vertical_size, 16) / 16 / (1 + is_field_pic);
- hpos1 = 0;
- } else {
- vpos1 = next_slice_param->slice_vertical_position / (1 + is_field_pic_wa);
- hpos1 = next_slice_param->slice_horizontal_position;
- }
-
- mb_count = (vpos1 * width_in_mbs + hpos1) - (vpos0 * width_in_mbs + hpos0);
-
- BEGIN_BCS_BATCH(batch, 5);
- OUT_BCS_BATCH(batch, MFD_MPEG2_BSD_OBJECT | (5 - 2));
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_size - (slice_param->macroblock_offset >> 3));
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_offset + (slice_param->macroblock_offset >> 3));
- OUT_BCS_BATCH(batch,
- hpos0 << 24 |
- vpos0 << 16 |
- mb_count << 8 |
- (next_slice_param == NULL) << 5 |
- (next_slice_param == NULL) << 3 |
- (slice_param->macroblock_offset & 0x7));
- OUT_BCS_BATCH(batch,
- (slice_param->quantiser_scale_code << 24) |
- (vpos1 << 8 | hpos1));
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfd_mpeg2_decode_picture(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferMPEG2 *pic_param;
- VASliceParameterBufferMPEG2 *slice_param, *next_slice_param, *next_slice_group_param;
- dri_bo *slice_data_bo;
- int i, j;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
-
- gen75_mfd_mpeg2_decode_init(ctx, decode_state, gen7_mfd_context);
- intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- gen75_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_MPEG2, gen7_mfd_context);
- gen75_mfd_surface_state(ctx, decode_state, MFX_FORMAT_MPEG2, gen7_mfd_context);
- gen75_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_MPEG2, gen7_mfd_context);
- gen75_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_MPEG2, gen7_mfd_context);
- gen75_mfd_mpeg2_pic_state(ctx, decode_state, gen7_mfd_context);
- gen75_mfd_mpeg2_qm_state(ctx, decode_state, gen7_mfd_context);
-
- if (gen7_mfd_context->wa_mpeg2_slice_vertical_position < 0)
- gen7_mfd_context->wa_mpeg2_slice_vertical_position =
- mpeg2_wa_slice_vertical_position(decode_state, pic_param);
-
- for (j = 0; j < decode_state->num_slice_params; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferMPEG2 *)decode_state->slice_params[j]->buffer;
- slice_data_bo = decode_state->slice_datas[j]->bo;
- gen75_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_MPEG2, gen7_mfd_context);
-
- if (j == decode_state->num_slice_params - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VASliceParameterBufferMPEG2 *)decode_state->slice_params[j + 1]->buffer;
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
-
- if (i < decode_state->slice_params[j]->num_elements - 1)
- next_slice_param = slice_param + 1;
- else
- next_slice_param = next_slice_group_param;
-
- gen75_mfd_mpeg2_bsd_object(ctx, pic_param, slice_param, next_slice_param, gen7_mfd_context);
- slice_param++;
- }
- }
-
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-}
-
-static const int va_to_gen7_vc1_pic_type[5] = {
- GEN7_VC1_I_PICTURE,
- GEN7_VC1_P_PICTURE,
- GEN7_VC1_B_PICTURE,
- GEN7_VC1_BI_PICTURE,
- GEN7_VC1_P_PICTURE,
-};
-
-static const int va_to_gen7_vc1_mv[4] = {
- 1, /* 1-MV */
- 2, /* 1-MV half-pel */
- 3, /* 1-MV half-pef bilinear */
- 0, /* Mixed MV */
-};
-
-static const int b_picture_scale_factor[21] = {
- 128, 85, 170, 64, 192,
- 51, 102, 153, 204, 43,
- 215, 37, 74, 111, 148,
- 185, 222, 32, 96, 160,
- 224,
-};
-
-static const int va_to_gen7_vc1_condover[3] = {
- 0,
- 2,
- 3
-};
-
-static const int va_to_gen7_vc1_profile[4] = {
- GEN7_VC1_SIMPLE_PROFILE,
- GEN7_VC1_MAIN_PROFILE,
- GEN7_VC1_RESERVED_PROFILE,
- GEN7_VC1_ADVANCED_PROFILE
-};
-
-static void
-gen75_mfd_free_vc1_surface(void **data)
-{
- struct gen7_vc1_surface *gen7_vc1_surface = *data;
-
- if (!gen7_vc1_surface)
- return;
-
- dri_bo_unreference(gen7_vc1_surface->dmv);
- free(gen7_vc1_surface);
- *data = NULL;
-}
-
-static void
-gen75_mfd_init_vc1_surface(VADriverContextP ctx,
- VAPictureParameterBufferVC1 *pic_param,
- struct object_surface *obj_surface)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen7_vc1_surface *gen7_vc1_surface = obj_surface->private_data;
- int width_in_mbs = ALIGN(pic_param->coded_width, 16) / 16;
- int height_in_mbs = ALIGN(pic_param->coded_height, 16) / 16;
-
- obj_surface->free_private_data = gen75_mfd_free_vc1_surface;
-
- if (!gen7_vc1_surface) {
- gen7_vc1_surface = calloc(sizeof(struct gen7_vc1_surface), 1);
- assert(gen7_vc1_surface);
- assert((obj_surface->size & 0x3f) == 0);
- obj_surface->private_data = gen7_vc1_surface;
- }
-
- gen7_vc1_surface->picture_type = pic_param->picture_fields.bits.picture_type;
-
- if (gen7_vc1_surface->dmv == NULL) {
- gen7_vc1_surface->dmv = dri_bo_alloc(i965->intel.bufmgr,
- "direct mv w/r buffer",
- width_in_mbs * height_in_mbs * 64,
- 0x1000);
- }
-}
-
-static void
-gen75_mfd_vc1_decode_init(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- VAPictureParameterBufferVC1 *pic_param;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface;
- dri_bo *bo;
- int width_in_mbs;
- int picture_type;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
- width_in_mbs = ALIGN(pic_param->coded_width, 16) / 16;
- picture_type = pic_param->picture_fields.bits.picture_type;
-
- intel_update_vc1_frame_store_index(ctx,
- decode_state,
- pic_param,
- gen7_mfd_context->reference_surface);
-
- /* Current decoded picture */
- obj_surface = decode_state->render_object;
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
- gen75_mfd_init_vc1_surface(ctx, pic_param, obj_surface);
-
- dri_bo_unreference(gen7_mfd_context->post_deblocking_output.bo);
- gen7_mfd_context->post_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen7_mfd_context->post_deblocking_output.bo);
- gen7_mfd_context->post_deblocking_output.valid = pic_param->entrypoint_fields.bits.loopfilter;
-
- dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.valid = !pic_param->entrypoint_fields.bits.loopfilter;
-
- dri_bo_unreference(gen7_mfd_context->intra_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "intra row store",
- width_in_mbs * 64,
- 0x1000);
- assert(bo);
- gen7_mfd_context->intra_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->intra_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "deblocking filter row store",
- width_in_mbs * 7 * 64,
- 0x1000);
- assert(bo);
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "bsd mpc row store",
- width_in_mbs * 96,
- 0x1000);
- assert(bo);
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
-
- gen7_mfd_context->mpr_row_store_scratch_buffer.valid = 0;
-
- gen7_mfd_context->bitplane_read_buffer.valid = !!pic_param->bitplane_present.value;
- dri_bo_unreference(gen7_mfd_context->bitplane_read_buffer.bo);
-
- if (gen7_mfd_context->bitplane_read_buffer.valid) {
- int width_in_mbs = ALIGN(pic_param->coded_width, 16) / 16;
- int height_in_mbs = ALIGN(pic_param->coded_height, 16) / 16;
- int bitplane_width = ALIGN(width_in_mbs, 2) / 2;
- int src_w, src_h;
- uint8_t *src = NULL, *dst = NULL;
-
- assert(decode_state->bit_plane->buffer);
- src = decode_state->bit_plane->buffer;
-
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "VC-1 Bitplane",
- bitplane_width * height_in_mbs,
- 0x1000);
- assert(bo);
- gen7_mfd_context->bitplane_read_buffer.bo = bo;
-
- dri_bo_map(bo, True);
- assert(bo->virtual);
- dst = bo->virtual;
-
- for (src_h = 0; src_h < height_in_mbs; src_h++) {
- for(src_w = 0; src_w < width_in_mbs; src_w++) {
- int src_index, dst_index;
- int src_shift;
- uint8_t src_value;
-
- src_index = (src_h * width_in_mbs + src_w) / 2;
- src_shift = !((src_h * width_in_mbs + src_w) & 1) * 4;
- src_value = ((src[src_index] >> src_shift) & 0xf);
-
- if (picture_type == GEN7_VC1_SKIPPED_PICTURE){
- src_value |= 0x2;
- }
-
- dst_index = src_w / 2;
- dst[dst_index] = ((dst[dst_index] >> 4) | (src_value << 4));
- }
-
- if (src_w & 1)
- dst[src_w / 2] >>= 4;
-
- dst += bitplane_width;
- }
-
- dri_bo_unmap(bo);
- } else
- gen7_mfd_context->bitplane_read_buffer.bo = NULL;
-}
-
-static void
-gen75_mfd_vc1_pic_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferVC1 *pic_param;
- struct object_surface *obj_surface;
- int alt_pquant_config = 0, alt_pquant_edge_mask = 0, alt_pq;
- int dquant, dquantfrm, dqprofile, dqdbedge, dqsbedge, dqbilevel;
- int unified_mv_mode;
- int ref_field_pic_polarity = 0;
- int scale_factor = 0;
- int trans_ac_y = 0;
- int dmv_surface_valid = 0;
- int brfd = 0;
- int fcm = 0;
- int picture_type;
- int profile;
- int overlap;
- int interpolation_mode = 0;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
-
- profile = va_to_gen7_vc1_profile[pic_param->sequence_fields.bits.profile];
- dquant = pic_param->pic_quantizer_fields.bits.dquant;
- dquantfrm = pic_param->pic_quantizer_fields.bits.dq_frame;
- dqprofile = pic_param->pic_quantizer_fields.bits.dq_profile;
- dqdbedge = pic_param->pic_quantizer_fields.bits.dq_db_edge;
- dqsbedge = pic_param->pic_quantizer_fields.bits.dq_sb_edge;
- dqbilevel = pic_param->pic_quantizer_fields.bits.dq_binary_level;
- alt_pq = pic_param->pic_quantizer_fields.bits.alt_pic_quantizer;
-
- if (dquant == 0) {
- alt_pquant_config = 0;
- alt_pquant_edge_mask = 0;
- } else if (dquant == 2) {
- alt_pquant_config = 1;
- alt_pquant_edge_mask = 0xf;
- } else {
- assert(dquant == 1);
- if (dquantfrm == 0) {
- alt_pquant_config = 0;
- alt_pquant_edge_mask = 0;
- alt_pq = 0;
- } else {
- assert(dquantfrm == 1);
- alt_pquant_config = 1;
-
- switch (dqprofile) {
- case 3:
- if (dqbilevel == 0) {
- alt_pquant_config = 2;
- alt_pquant_edge_mask = 0;
- } else {
- assert(dqbilevel == 1);
- alt_pquant_config = 3;
- alt_pquant_edge_mask = 0;
- }
- break;
-
- case 0:
- alt_pquant_edge_mask = 0xf;
- break;
-
- case 1:
- if (dqdbedge == 3)
- alt_pquant_edge_mask = 0x9;
- else
- alt_pquant_edge_mask = (0x3 << dqdbedge);
-
- break;
-
- case 2:
- alt_pquant_edge_mask = (0x1 << dqsbedge);
- break;
-
- default:
- assert(0);
- }
- }
- }
-
- if (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation) {
- assert(pic_param->mv_fields.bits.mv_mode2 < 4);
- unified_mv_mode = va_to_gen7_vc1_mv[pic_param->mv_fields.bits.mv_mode2];
- } else {
- assert(pic_param->mv_fields.bits.mv_mode < 4);
- unified_mv_mode = va_to_gen7_vc1_mv[pic_param->mv_fields.bits.mv_mode];
- }
-
- if (pic_param->sequence_fields.bits.interlace == 1 &&
- pic_param->picture_fields.bits.frame_coding_mode != 0) { /* frame-interlace or field-interlace */
- /* FIXME: calculate reference field picture polarity */
- assert(0);
- ref_field_pic_polarity = 0;
- }
-
- if (pic_param->b_picture_fraction < 21)
- scale_factor = b_picture_scale_factor[pic_param->b_picture_fraction];
-
- picture_type = va_to_gen7_vc1_pic_type[pic_param->picture_fields.bits.picture_type];
-
- if (profile == GEN7_VC1_ADVANCED_PROFILE &&
- picture_type == GEN7_VC1_I_PICTURE)
- picture_type = GEN7_VC1_BI_PICTURE;
-
- if (picture_type == GEN7_VC1_I_PICTURE || picture_type == GEN7_VC1_BI_PICTURE) /* I picture */
- trans_ac_y = pic_param->transform_fields.bits.transform_ac_codingset_idx2;
- else {
- trans_ac_y = pic_param->transform_fields.bits.transform_ac_codingset_idx1;
-
- /*
- * 8.3.6.2.1 Transform Type Selection
- * If variable-sized transform coding is not enabled,
- * then the 8x8 transform shall be used for all blocks.
- * it is also MFX_VC1_PIC_STATE requirement.
- */
- if (pic_param->transform_fields.bits.variable_sized_transform_flag == 0) {
- pic_param->transform_fields.bits.mb_level_transform_type_flag = 1;
- pic_param->transform_fields.bits.frame_level_transform_type = 0;
- }
- }
-
- if (picture_type == GEN7_VC1_B_PICTURE) {
- struct gen7_vc1_surface *gen7_vc1_surface = NULL;
-
- obj_surface = decode_state->reference_objects[1];
-
- if (obj_surface)
- gen7_vc1_surface = obj_surface->private_data;
-
- if (!gen7_vc1_surface ||
- (va_to_gen7_vc1_pic_type[gen7_vc1_surface->picture_type] == GEN7_VC1_I_PICTURE ||
- va_to_gen7_vc1_pic_type[gen7_vc1_surface->picture_type] == GEN7_VC1_BI_PICTURE))
- dmv_surface_valid = 0;
- else
- dmv_surface_valid = 1;
- }
-
- assert(pic_param->picture_fields.bits.frame_coding_mode < 3);
-
- if (pic_param->picture_fields.bits.frame_coding_mode < 2)
- fcm = pic_param->picture_fields.bits.frame_coding_mode;
- else {
- if (pic_param->picture_fields.bits.top_field_first)
- fcm = 2;
- else
- fcm = 3;
- }
-
- if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_B_PICTURE) { /* B picture */
- brfd = pic_param->reference_fields.bits.reference_distance;
- brfd = (scale_factor * brfd) >> 8;
- brfd = pic_param->reference_fields.bits.reference_distance - brfd - 1;
-
- if (brfd < 0)
- brfd = 0;
- }
-
- overlap = pic_param->sequence_fields.bits.overlap;
-
- if (overlap) {
- overlap = 0;
- if (profile != GEN7_VC1_ADVANCED_PROFILE){
- if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9 &&
- pic_param->picture_fields.bits.picture_type != GEN7_VC1_B_PICTURE) {
- overlap = 1;
- }
- }else {
- if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_P_PICTURE &&
- pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
- overlap = 1;
- }
- if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_I_PICTURE ||
- pic_param->picture_fields.bits.picture_type == GEN7_VC1_BI_PICTURE){
- if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
- overlap = 1;
- } else if (va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 2 ||
- va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 3) {
- overlap = 1;
- }
- }
- }
- }
-
- assert(pic_param->conditional_overlap_flag < 3);
- assert(pic_param->mv_fields.bits.mv_table < 4); /* FIXME: interlace mode */
-
- if (pic_param->mv_fields.bits.mv_mode == VAMvMode1MvHalfPelBilinear ||
- (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation &&
- pic_param->mv_fields.bits.mv_mode2 == VAMvMode1MvHalfPelBilinear))
- interpolation_mode = 9; /* Half-pel bilinear */
- else if (pic_param->mv_fields.bits.mv_mode == VAMvMode1MvHalfPel ||
- (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation &&
- pic_param->mv_fields.bits.mv_mode2 == VAMvMode1MvHalfPel))
- interpolation_mode = 1; /* Half-pel bicubic */
- else
- interpolation_mode = 0; /* Quarter-pel bicubic */
-
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFD_VC1_LONG_PIC_STATE | (6 - 2));
- OUT_BCS_BATCH(batch,
- (((ALIGN(pic_param->coded_height, 16) / 16) - 1) << 16) |
- ((ALIGN(pic_param->coded_width, 16) / 16) - 1));
- OUT_BCS_BATCH(batch,
- ((ALIGN(pic_param->coded_width, 16) / 16 + 1) / 2 - 1) << 24 |
- dmv_surface_valid << 15 |
- (pic_param->pic_quantizer_fields.bits.quantizer == 0) << 14 | /* implicit quantizer */
- pic_param->rounding_control << 13 |
- pic_param->sequence_fields.bits.syncmarker << 12 |
- interpolation_mode << 8 |
- 0 << 7 | /* FIXME: scale up or down ??? */
- pic_param->range_reduction_frame << 6 |
- pic_param->entrypoint_fields.bits.loopfilter << 5 |
- overlap << 4 |
- !pic_param->picture_fields.bits.is_first_field << 3 |
- (pic_param->sequence_fields.bits.profile == 3) << 0);
- OUT_BCS_BATCH(batch,
- va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] << 29 |
- picture_type << 26 |
- fcm << 24 |
- alt_pq << 16 |
- pic_param->pic_quantizer_fields.bits.pic_quantizer_scale << 8 |
- scale_factor << 0);
- OUT_BCS_BATCH(batch,
- unified_mv_mode << 28 |
- pic_param->mv_fields.bits.four_mv_switch << 27 |
- pic_param->fast_uvmc_flag << 26 |
- ref_field_pic_polarity << 25 |
- pic_param->reference_fields.bits.num_reference_pictures << 24 |
- pic_param->reference_fields.bits.reference_distance << 20 |
- pic_param->reference_fields.bits.reference_distance << 16 | /* FIXME: ??? */
- pic_param->mv_fields.bits.extended_dmv_range << 10 |
- pic_param->mv_fields.bits.extended_mv_range << 8 |
- alt_pquant_edge_mask << 4 |
- alt_pquant_config << 2 |
- pic_param->pic_quantizer_fields.bits.half_qp << 1 |
- pic_param->pic_quantizer_fields.bits.pic_quantizer_type << 0);
- OUT_BCS_BATCH(batch,
- !!pic_param->bitplane_present.value << 31 |
- !pic_param->bitplane_present.flags.bp_forward_mb << 30 |
- !pic_param->bitplane_present.flags.bp_mv_type_mb << 29 |
- !pic_param->bitplane_present.flags.bp_skip_mb << 28 |
- !pic_param->bitplane_present.flags.bp_direct_mb << 27 |
- !pic_param->bitplane_present.flags.bp_overflags << 26 |
- !pic_param->bitplane_present.flags.bp_ac_pred << 25 |
- !pic_param->bitplane_present.flags.bp_field_tx << 24 |
- pic_param->mv_fields.bits.mv_table << 20 |
- pic_param->mv_fields.bits.four_mv_block_pattern_table << 18 |
- pic_param->mv_fields.bits.two_mv_block_pattern_table << 16 |
- pic_param->transform_fields.bits.frame_level_transform_type << 12 |
- pic_param->transform_fields.bits.mb_level_transform_type_flag << 11 |
- pic_param->mb_mode_table << 8 |
- trans_ac_y << 6 |
- pic_param->transform_fields.bits.transform_ac_codingset_idx1 << 4 |
- pic_param->transform_fields.bits.intra_transform_dc_table << 3 |
- pic_param->cbp_table << 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfd_vc1_pred_pipe_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferVC1 *pic_param;
- int intensitycomp_single;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
- intensitycomp_single = (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation);
-
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFX_VC1_PRED_PIPE_STATE | (6 - 2));
- OUT_BCS_BATCH(batch,
- 0 << 14 | /* FIXME: double ??? */
- 0 << 12 |
- intensitycomp_single << 10 |
- intensitycomp_single << 8 |
- 0 << 4 | /* FIXME: interlace mode */
- 0);
- OUT_BCS_BATCH(batch,
- pic_param->luma_shift << 16 |
- pic_param->luma_scale << 0); /* FIXME: Luma Scaling */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfd_vc1_directmode_state_bplus(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- struct object_surface *obj_surface;
- dri_bo *dmv_read_buffer = NULL, *dmv_write_buffer = NULL;
-
- obj_surface = decode_state->render_object;
-
- if (obj_surface && obj_surface->private_data) {
- dmv_write_buffer = ((struct gen7_vc1_surface *)(obj_surface->private_data))->dmv;
- }
-
- obj_surface = decode_state->reference_objects[1];
-
- if (obj_surface && obj_surface->private_data) {
- dmv_read_buffer = ((struct gen7_vc1_surface *)(obj_surface->private_data))->dmv;
- }
-
- BEGIN_BCS_BATCH(batch, 7);
- OUT_BCS_BATCH(batch, MFX_VC1_DIRECTMODE_STATE | (7 - 2));
-
- if (dmv_write_buffer)
- OUT_BCS_RELOC(batch, dmv_write_buffer,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- if (dmv_read_buffer)
- OUT_BCS_RELOC(batch, dmv_read_buffer,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfd_vc1_directmode_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface;
- dri_bo *dmv_read_buffer = NULL, *dmv_write_buffer = NULL;
-
- if (IS_STEPPING_BPLUS(i965)) {
- gen75_mfd_vc1_directmode_state_bplus(ctx, decode_state, gen7_mfd_context);
- return;
- }
-
- obj_surface = decode_state->render_object;
-
- if (obj_surface && obj_surface->private_data) {
- dmv_write_buffer = ((struct gen7_vc1_surface *)(obj_surface->private_data))->dmv;
- }
-
- obj_surface = decode_state->reference_objects[1];
-
- if (obj_surface && obj_surface->private_data) {
- dmv_read_buffer = ((struct gen7_vc1_surface *)(obj_surface->private_data))->dmv;
- }
-
- BEGIN_BCS_BATCH(batch, 3);
- OUT_BCS_BATCH(batch, MFX_VC1_DIRECTMODE_STATE | (3 - 2));
-
- if (dmv_write_buffer)
- OUT_BCS_RELOC(batch, dmv_write_buffer,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- if (dmv_read_buffer)
- OUT_BCS_RELOC(batch, dmv_read_buffer,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static int
-gen75_mfd_vc1_get_macroblock_bit_offset(uint8_t *buf, int in_slice_data_bit_offset, int profile)
-{
- int out_slice_data_bit_offset;
- int slice_header_size = in_slice_data_bit_offset / 8;
- int i, j;
-
- if (profile != 3)
- out_slice_data_bit_offset = in_slice_data_bit_offset;
- else {
- for (i = 0, j = 0; i < slice_header_size; i++, j++) {
- if (!buf[j] && !buf[j + 1] && buf[j + 2] == 3 && buf[j + 3] < 4) {
- i++, j += 2;
- }
- }
-
- out_slice_data_bit_offset = 8 * j + in_slice_data_bit_offset % 8;
- }
-
- return out_slice_data_bit_offset;
-}
-
-static void
-gen75_mfd_vc1_bsd_object(VADriverContextP ctx,
- VAPictureParameterBufferVC1 *pic_param,
- VASliceParameterBufferVC1 *slice_param,
- VASliceParameterBufferVC1 *next_slice_param,
- dri_bo *slice_data_bo,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int next_slice_start_vert_pos;
- int macroblock_offset;
- uint8_t *slice_data = NULL;
-
- dri_bo_map(slice_data_bo, 0);
- slice_data = (uint8_t *)(slice_data_bo->virtual + slice_param->slice_data_offset);
- macroblock_offset = gen75_mfd_vc1_get_macroblock_bit_offset(slice_data,
- slice_param->macroblock_offset,
- pic_param->sequence_fields.bits.profile);
- dri_bo_unmap(slice_data_bo);
-
- if (next_slice_param)
- next_slice_start_vert_pos = next_slice_param->slice_vertical_position;
- else
- next_slice_start_vert_pos = ALIGN(pic_param->coded_height, 16) / 16;
-
- BEGIN_BCS_BATCH(batch, 5);
- OUT_BCS_BATCH(batch, MFD_VC1_BSD_OBJECT | (5 - 2));
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_size - (macroblock_offset >> 3));
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_offset + (macroblock_offset >> 3));
- OUT_BCS_BATCH(batch,
- slice_param->slice_vertical_position << 16 |
- next_slice_start_vert_pos << 0);
- OUT_BCS_BATCH(batch,
- (macroblock_offset & 0x7));
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfd_vc1_decode_picture(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferVC1 *pic_param;
- VASliceParameterBufferVC1 *slice_param, *next_slice_param, *next_slice_group_param;
- dri_bo *slice_data_bo;
- int i, j;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
-
- gen75_mfd_vc1_decode_init(ctx, decode_state, gen7_mfd_context);
- intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- gen75_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_VC1, gen7_mfd_context);
- gen75_mfd_surface_state(ctx, decode_state, MFX_FORMAT_VC1, gen7_mfd_context);
- gen75_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_VC1, gen7_mfd_context);
- gen75_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_VC1, gen7_mfd_context);
- gen75_mfd_vc1_pic_state(ctx, decode_state, gen7_mfd_context);
- gen75_mfd_vc1_pred_pipe_state(ctx, decode_state, gen7_mfd_context);
- gen75_mfd_vc1_directmode_state(ctx, decode_state, gen7_mfd_context);
-
- for (j = 0; j < decode_state->num_slice_params; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferVC1 *)decode_state->slice_params[j]->buffer;
- slice_data_bo = decode_state->slice_datas[j]->bo;
- gen75_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_VC1, gen7_mfd_context);
-
- if (j == decode_state->num_slice_params - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VASliceParameterBufferVC1 *)decode_state->slice_params[j + 1]->buffer;
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
-
- if (i < decode_state->slice_params[j]->num_elements - 1)
- next_slice_param = slice_param + 1;
- else
- next_slice_param = next_slice_group_param;
-
- gen75_mfd_vc1_bsd_object(ctx, pic_param, slice_param, next_slice_param, slice_data_bo, gen7_mfd_context);
- slice_param++;
- }
- }
-
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-}
-
-static void
-gen75_mfd_jpeg_decode_init(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct object_surface *obj_surface;
- VAPictureParameterBufferJPEGBaseline *pic_param;
- int subsampling = SUBSAMPLE_YUV420;
- int fourcc = VA_FOURCC_IMC3;
-
- pic_param = (VAPictureParameterBufferJPEGBaseline *)decode_state->pic_param->buffer;
-
- if (pic_param->num_components == 1) {
- subsampling = SUBSAMPLE_YUV400;
- fourcc = VA_FOURCC_Y800;
- } else if (pic_param->num_components == 3) {
- int h1 = pic_param->components[0].h_sampling_factor;
- int h2 = pic_param->components[1].h_sampling_factor;
- int h3 = pic_param->components[2].h_sampling_factor;
- int v1 = pic_param->components[0].v_sampling_factor;
- int v2 = pic_param->components[1].v_sampling_factor;
- int v3 = pic_param->components[2].v_sampling_factor;
-
- if (h1 == 2 && h2 == 1 && h3 == 1 &&
- v1 == 2 && v2 == 1 && v3 == 1) {
- subsampling = SUBSAMPLE_YUV420;
- fourcc = VA_FOURCC_IMC3;
- } else if (h1 == 2 && h2 == 1 && h3 == 1 &&
- v1 == 1 && v2 == 1 && v3 == 1) {
- subsampling = SUBSAMPLE_YUV422H;
- fourcc = VA_FOURCC_422H;
- } else if (h1 == 1 && h2 == 1 && h3 == 1 &&
- v1 == 1 && v2 == 1 && v3 == 1) {
- subsampling = SUBSAMPLE_YUV444;
- fourcc = VA_FOURCC_444P;
- } else if (h1 == 4 && h2 == 1 && h3 == 1 &&
- v1 == 1 && v2 == 1 && v3 == 1) {
- subsampling = SUBSAMPLE_YUV411;
- fourcc = VA_FOURCC_411P;
- } else if (h1 == 1 && h2 == 1 && h3 == 1 &&
- v1 == 2 && v2 == 1 && v3 == 1) {
- subsampling = SUBSAMPLE_YUV422V;
- fourcc = VA_FOURCC_422V;
- } else if (h1 == 2 && h2 == 1 && h3 == 1 &&
- v1 == 2 && v2 == 2 && v3 == 2) {
- subsampling = SUBSAMPLE_YUV422H;
- fourcc = VA_FOURCC_422H;
- } else if (h1 == 2 && h2 == 2 && h3 == 2 &&
- v1 == 2 && v2 == 1 && v3 == 1) {
- subsampling = SUBSAMPLE_YUV422V;
- fourcc = VA_FOURCC_422V;
- } else
- assert(0);
- } else {
- assert(0);
- }
-
- /* Current decoded picture */
- obj_surface = decode_state->render_object;
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, fourcc, subsampling);
-
- dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.valid = 1;
-
- gen7_mfd_context->post_deblocking_output.bo = NULL;
- gen7_mfd_context->post_deblocking_output.valid = 0;
-
- gen7_mfd_context->intra_row_store_scratch_buffer.bo = NULL;
- gen7_mfd_context->intra_row_store_scratch_buffer.valid = 0;
-
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = NULL;
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 0;
-
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = NULL;
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 0;
-
- gen7_mfd_context->mpr_row_store_scratch_buffer.bo = NULL;
- gen7_mfd_context->mpr_row_store_scratch_buffer.valid = 0;
-
- gen7_mfd_context->bitplane_read_buffer.bo = NULL;
- gen7_mfd_context->bitplane_read_buffer.valid = 0;
-}
-
-static const int va_to_gen7_jpeg_rotation[4] = {
- GEN7_JPEG_ROTATION_0,
- GEN7_JPEG_ROTATION_90,
- GEN7_JPEG_ROTATION_180,
- GEN7_JPEG_ROTATION_270
-};
-
-static void
-gen75_mfd_jpeg_pic_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferJPEGBaseline *pic_param;
- int chroma_type = GEN7_YUV420;
- int frame_width_in_blks;
- int frame_height_in_blks;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferJPEGBaseline *)decode_state->pic_param->buffer;
-
- if (pic_param->num_components == 1)
- chroma_type = GEN7_YUV400;
- else if (pic_param->num_components == 3) {
- int h1 = pic_param->components[0].h_sampling_factor;
- int h2 = pic_param->components[1].h_sampling_factor;
- int h3 = pic_param->components[2].h_sampling_factor;
- int v1 = pic_param->components[0].v_sampling_factor;
- int v2 = pic_param->components[1].v_sampling_factor;
- int v3 = pic_param->components[2].v_sampling_factor;
-
- if (h1 == 2 && h2 == 1 && h3 == 1 &&
- v1 == 2 && v2 == 1 && v3 == 1)
- chroma_type = GEN7_YUV420;
- else if (h1 == 2 && h2 == 1 && h3 == 1 &&
- v1 == 1 && v2 == 1 && v3 == 1)
- chroma_type = GEN7_YUV422H_2Y;
- else if (h1 == 1 && h2 == 1 && h3 == 1 &&
- v1 == 1 && v2 == 1 && v3 == 1)
- chroma_type = GEN7_YUV444;
- else if (h1 == 4 && h2 == 1 && h3 == 1 &&
- v1 == 1 && v2 == 1 && v3 == 1)
- chroma_type = GEN7_YUV411;
- else if (h1 == 1 && h2 == 1 && h3 == 1 &&
- v1 == 2 && v2 == 1 && v3 == 1)
- chroma_type = GEN7_YUV422V_2Y;
- else if (h1 == 2 && h2 == 1 && h3 == 1 &&
- v1 == 2 && v2 == 2 && v3 == 2)
- chroma_type = GEN7_YUV422H_4Y;
- else if (h2 == 2 && h2 == 2 && h3 == 2 &&
- v1 == 2 && v2 == 1 && v3 == 1)
- chroma_type = GEN7_YUV422V_4Y;
- else
- assert(0);
- }
-
- if (chroma_type == GEN7_YUV400 ||
- chroma_type == GEN7_YUV444 ||
- chroma_type == GEN7_YUV422V_2Y) {
- frame_width_in_blks = ((pic_param->picture_width + 7) / 8);
- frame_height_in_blks = ((pic_param->picture_height + 7) / 8);
- } else if (chroma_type == GEN7_YUV411) {
- frame_width_in_blks = ((pic_param->picture_width + 31) / 32) * 4;
- frame_height_in_blks = ((pic_param->picture_height + 31) / 32) * 4;
- } else {
- frame_width_in_blks = ((pic_param->picture_width + 15) / 16) * 2;
- frame_height_in_blks = ((pic_param->picture_height + 15) / 16) * 2;
- }
-
- BEGIN_BCS_BATCH(batch, 3);
- OUT_BCS_BATCH(batch, MFX_JPEG_PIC_STATE | (3 - 2));
- OUT_BCS_BATCH(batch,
- (va_to_gen7_jpeg_rotation[0] << 4) | /* without rotation */
- (chroma_type << 0));
- OUT_BCS_BATCH(batch,
- ((frame_height_in_blks - 1) << 16) | /* FrameHeightInBlks */
- ((frame_width_in_blks - 1) << 0)); /* FrameWidthInBlks */
- ADVANCE_BCS_BATCH(batch);
-}
-
-static const int va_to_gen7_jpeg_hufftable[2] = {
- MFX_HUFFTABLE_ID_Y,
- MFX_HUFFTABLE_ID_UV
-};
-
-static void
-gen75_mfd_jpeg_huff_table_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context,
- int num_tables)
-{
- VAHuffmanTableBufferJPEGBaseline *huffman_table;
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int index;
-
- if (!decode_state->huffman_table || !decode_state->huffman_table->buffer)
- return;
-
- huffman_table = (VAHuffmanTableBufferJPEGBaseline *)decode_state->huffman_table->buffer;
-
- for (index = 0; index < num_tables; index++) {
- int id = va_to_gen7_jpeg_hufftable[index];
-
- if (!huffman_table->load_huffman_table[index])
- continue;
-
- BEGIN_BCS_BATCH(batch, 53);
- OUT_BCS_BATCH(batch, MFX_JPEG_HUFF_TABLE_STATE | (53 - 2));
- OUT_BCS_BATCH(batch, id);
- intel_batchbuffer_data(batch, huffman_table->huffman_table[index].num_dc_codes, 12);
- intel_batchbuffer_data(batch, huffman_table->huffman_table[index].dc_values, 12);
- intel_batchbuffer_data(batch, huffman_table->huffman_table[index].num_ac_codes, 16);
- intel_batchbuffer_data(batch, huffman_table->huffman_table[index].ac_values, 164);
- ADVANCE_BCS_BATCH(batch);
- }
-}
-
-static const int va_to_gen7_jpeg_qm[5] = {
- -1,
- MFX_QM_JPEG_LUMA_Y_QUANTIZER_MATRIX,
- MFX_QM_JPEG_CHROMA_CB_QUANTIZER_MATRIX,
- MFX_QM_JPEG_CHROMA_CR_QUANTIZER_MATRIX,
- MFX_QM_JPEG_ALPHA_QUANTIZER_MATRIX
-};
-
-static void
-gen75_mfd_jpeg_qm_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- VAPictureParameterBufferJPEGBaseline *pic_param;
- VAIQMatrixBufferJPEGBaseline *iq_matrix;
- int index;
-
- if (!decode_state->iq_matrix || !decode_state->iq_matrix->buffer)
- return;
-
- iq_matrix = (VAIQMatrixBufferJPEGBaseline *)decode_state->iq_matrix->buffer;
- pic_param = (VAPictureParameterBufferJPEGBaseline *)decode_state->pic_param->buffer;
-
- assert(pic_param->num_components <= 3);
-
- for (index = 0; index < pic_param->num_components; index++) {
- int id = pic_param->components[index].component_id - pic_param->components[0].component_id + 1;
- int qm_type;
- unsigned char *qm = iq_matrix->quantiser_table[pic_param->components[index].quantiser_table_selector];
- unsigned char raster_qm[64];
- int j;
-
- if (id > 4 || id < 1)
- continue;
-
- if (!iq_matrix->load_quantiser_table[pic_param->components[index].quantiser_table_selector])
- continue;
-
- qm_type = va_to_gen7_jpeg_qm[id];
-
- for (j = 0; j < 64; j++)
- raster_qm[zigzag_direct[j]] = qm[j];
-
- gen75_mfd_qm_state(ctx, qm_type, raster_qm, 64, gen7_mfd_context);
- }
-}
-
-static void
-gen75_mfd_jpeg_bsd_object(VADriverContextP ctx,
- VAPictureParameterBufferJPEGBaseline *pic_param,
- VASliceParameterBufferJPEGBaseline *slice_param,
- VASliceParameterBufferJPEGBaseline *next_slice_param,
- dri_bo *slice_data_bo,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int scan_component_mask = 0;
- int i;
-
- assert(slice_param->num_components > 0);
- assert(slice_param->num_components < 4);
- assert(slice_param->num_components <= pic_param->num_components);
-
- for (i = 0; i < slice_param->num_components; i++) {
- switch (slice_param->components[i].component_selector - pic_param->components[0].component_id + 1) {
- case 1:
- scan_component_mask |= (1 << 0);
- break;
- case 2:
- scan_component_mask |= (1 << 1);
- break;
- case 3:
- scan_component_mask |= (1 << 2);
- break;
- default:
- assert(0);
- break;
- }
- }
-
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFD_JPEG_BSD_OBJECT | (6 - 2));
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_size);
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_offset);
- OUT_BCS_BATCH(batch,
- slice_param->slice_horizontal_position << 16 |
- slice_param->slice_vertical_position << 0);
- OUT_BCS_BATCH(batch,
- ((slice_param->num_components != 1) << 30) | /* interleaved */
- (scan_component_mask << 27) | /* scan components */
- (0 << 26) | /* disable interrupt allowed */
- (slice_param->num_mcus << 0)); /* MCU count */
- OUT_BCS_BATCH(batch,
- (slice_param->restart_interval << 0)); /* RestartInterval */
- ADVANCE_BCS_BATCH(batch);
-}
-
-/* Workaround for JPEG decoding on Ivybridge */
-
-static struct {
- int width;
- int height;
- unsigned char data[32];
- int data_size;
- int data_bit_offset;
- int qp;
-} gen7_jpeg_wa_clip = {
- 16,
- 16,
- {
- 0x65, 0xb8, 0x40, 0x32, 0x13, 0xfd, 0x06, 0x6c,
- 0xfc, 0x0a, 0x50, 0x71, 0x5c, 0x00
- },
- 14,
- 40,
- 28,
-};
-
-static void
-gen75_jpeg_wa_init(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VAStatus status;
- struct object_surface *obj_surface;
-
- if (gen7_mfd_context->jpeg_wa_surface_id != VA_INVALID_SURFACE)
- i965_DestroySurfaces(ctx,
- &gen7_mfd_context->jpeg_wa_surface_id,
- 1);
-
- status = i965_CreateSurfaces(ctx,
- gen7_jpeg_wa_clip.width,
- gen7_jpeg_wa_clip.height,
- VA_RT_FORMAT_YUV420,
- 1,
- &gen7_mfd_context->jpeg_wa_surface_id);
- assert(status == VA_STATUS_SUCCESS);
-
- obj_surface = SURFACE(gen7_mfd_context->jpeg_wa_surface_id);
- assert(obj_surface);
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
- gen7_mfd_context->jpeg_wa_surface_object = obj_surface;
-
- if (!gen7_mfd_context->jpeg_wa_slice_data_bo) {
- gen7_mfd_context->jpeg_wa_slice_data_bo = dri_bo_alloc(i965->intel.bufmgr,
- "JPEG WA data",
- 0x1000,
- 0x1000);
- dri_bo_subdata(gen7_mfd_context->jpeg_wa_slice_data_bo,
- 0,
- gen7_jpeg_wa_clip.data_size,
- gen7_jpeg_wa_clip.data);
- }
-}
-
-static void
-gen75_jpeg_wa_pipe_mode_select(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 5);
- OUT_BCS_BATCH(batch, MFX_PIPE_MODE_SELECT | (5 - 2));
- OUT_BCS_BATCH(batch,
- (MFX_LONG_MODE << 17) | /* Currently only support long format */
- (MFD_MODE_VLD << 15) | /* VLD mode */
- (0 << 10) | /* disable Stream-Out */
- (0 << 9) | /* Post Deblocking Output */
- (1 << 8) | /* Pre Deblocking Output */
- (0 << 5) | /* not in stitch mode */
- (MFX_CODEC_DECODE << 4) | /* decoding mode */
- (MFX_FORMAT_AVC << 0));
- OUT_BCS_BATCH(batch,
- (0 << 4) | /* terminate if AVC motion and POC table error occurs */
- (0 << 3) | /* terminate if AVC mbdata error occurs */
- (0 << 2) | /* terminate if AVC CABAC/CAVLC decode error occurs */
- (0 << 1) |
- (0 << 0));
- OUT_BCS_BATCH(batch, 0); /* pic status/error report id */
- OUT_BCS_BATCH(batch, 0); /* reserved */
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_jpeg_wa_surface_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct object_surface *obj_surface = gen7_mfd_context->jpeg_wa_surface_object;
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- ((obj_surface->orig_width - 1) << 18) |
- ((obj_surface->orig_height - 1) << 4));
- OUT_BCS_BATCH(batch,
- (MFX_SURFACE_PLANAR_420_8 << 28) | /* 420 planar YUV surface */
- (1 << 27) | /* interleave chroma, set to 0 for JPEG */
- (0 << 22) | /* surface object control state, ignored */
- ((obj_surface->width - 1) << 3) | /* pitch */
- (0 << 2) | /* must be 0 */
- (1 << 1) | /* must be tiled */
- (I965_TILEWALK_YMAJOR << 0)); /* tile walk, must be 1 */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* X offset for U(Cb), must be 0 */
- (obj_surface->y_cb_offset << 0)); /* Y offset for U(Cb) */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* X offset for V(Cr), must be 0 */
- (0 << 0)); /* Y offset for V(Cr), must be 0 for video codec, non-zoro for JPEG */
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_jpeg_wa_pipe_buf_addr_state_bplus(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface = gen7_mfd_context->jpeg_wa_surface_object;
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- dri_bo *intra_bo;
- int i;
-
- intra_bo = dri_bo_alloc(i965->intel.bufmgr,
- "intra row store",
- 128 * 64,
- 0x1000);
-
- BEGIN_BCS_BATCH(batch, 61);
- OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (61 - 2));
- OUT_BCS_RELOC(batch,
- obj_surface->bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
-
- OUT_BCS_BATCH(batch, 0); /* post deblocking */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* uncompressed-video & stream out 7-12 */
- OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
- OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW 13-15 is for intra row store scratch */
- OUT_BCS_RELOC(batch,
- intra_bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW 16-18 is for deblocking filter */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* DW 19..50 */
- for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW52-54 is for mb status address */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- /* the DW56-60 is for ILDB & second ILDB address */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-
- dri_bo_unreference(intra_bo);
-}
-
-static void
-gen75_jpeg_wa_pipe_buf_addr_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface = gen7_mfd_context->jpeg_wa_surface_object;
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- dri_bo *intra_bo;
- int i;
-
- if (IS_STEPPING_BPLUS(i965)) {
- gen75_jpeg_wa_pipe_buf_addr_state_bplus(ctx, gen7_mfd_context);
- return;
- }
-
- intra_bo = dri_bo_alloc(i965->intel.bufmgr,
- "intra row store",
- 128 * 64,
- 0x1000);
-
- BEGIN_BCS_BATCH(batch, 25);
- OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (25 - 2));
- OUT_BCS_RELOC(batch,
- obj_surface->bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- OUT_BCS_BATCH(batch, 0); /* post deblocking */
-
- OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
- OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
-
- OUT_BCS_RELOC(batch,
- intra_bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- OUT_BCS_BATCH(batch, 0);
-
- /* DW 7..22 */
- for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
- OUT_BCS_BATCH(batch, 0);
- }
-
- OUT_BCS_BATCH(batch, 0); /* ignore DW23 for decoding */
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-
- dri_bo_unreference(intra_bo);
-}
-
-static void
-gen75_jpeg_wa_bsp_buf_base_addr_state_bplus(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- dri_bo *bsd_mpc_bo, *mpr_bo;
-
- bsd_mpc_bo = dri_bo_alloc(i965->intel.bufmgr,
- "bsd mpc row store",
- 11520, /* 1.5 * 120 * 64 */
- 0x1000);
-
- mpr_bo = dri_bo_alloc(i965->intel.bufmgr,
- "mpr row store",
- 7680, /* 1. 0 * 120 * 64 */
- 0x1000);
-
- BEGIN_BCS_BATCH(batch, 10);
- OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (10 - 2));
-
- OUT_BCS_RELOC(batch,
- bsd_mpc_bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- OUT_BCS_RELOC(batch,
- mpr_bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-
- dri_bo_unreference(bsd_mpc_bo);
- dri_bo_unreference(mpr_bo);
-}
-
-static void
-gen75_jpeg_wa_bsp_buf_base_addr_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- dri_bo *bsd_mpc_bo, *mpr_bo;
-
- if (IS_STEPPING_BPLUS(i965)) {
- gen75_jpeg_wa_bsp_buf_base_addr_state_bplus(ctx, gen7_mfd_context);
- return;
- }
-
- bsd_mpc_bo = dri_bo_alloc(i965->intel.bufmgr,
- "bsd mpc row store",
- 11520, /* 1.5 * 120 * 64 */
- 0x1000);
-
- mpr_bo = dri_bo_alloc(i965->intel.bufmgr,
- "mpr row store",
- 7680, /* 1. 0 * 120 * 64 */
- 0x1000);
-
- BEGIN_BCS_BATCH(batch, 4);
- OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (4 - 2));
-
- OUT_BCS_RELOC(batch,
- bsd_mpc_bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- OUT_BCS_RELOC(batch,
- mpr_bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-
- dri_bo_unreference(bsd_mpc_bo);
- dri_bo_unreference(mpr_bo);
-}
-
-static void
-gen75_jpeg_wa_avc_qm_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
-
-}
-
-static void
-gen75_jpeg_wa_avc_img_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int img_struct = 0;
- int mbaff_frame_flag = 0;
- unsigned int width_in_mbs = 1, height_in_mbs = 1;
-
- BEGIN_BCS_BATCH(batch, 16);
- OUT_BCS_BATCH(batch, MFX_AVC_IMG_STATE | (16 - 2));
- OUT_BCS_BATCH(batch,
- (width_in_mbs * height_in_mbs - 1));
- OUT_BCS_BATCH(batch,
- ((height_in_mbs - 1) << 16) |
- ((width_in_mbs - 1) << 0));
- OUT_BCS_BATCH(batch,
- (0 << 24) |
- (0 << 16) |
- (0 << 14) |
- (0 << 13) |
- (0 << 12) | /* differ from GEN6 */
- (0 << 10) |
- (img_struct << 8));
- OUT_BCS_BATCH(batch,
- (1 << 10) | /* 4:2:0 */
- (1 << 7) | /* CABAC */
- (0 << 6) |
- (0 << 5) |
- (0 << 4) |
- (0 << 3) |
- (1 << 2) |
- (mbaff_frame_flag << 1) |
- (0 << 0));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_jpeg_wa_avc_directmode_state_bplus(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int i;
-
- BEGIN_BCS_BATCH(batch, 71);
- OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (71 - 2));
-
- /* reference surfaces 0..15 */
- for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
- OUT_BCS_BATCH(batch, 0); /* top */
- OUT_BCS_BATCH(batch, 0); /* bottom */
- }
-
- OUT_BCS_BATCH(batch, 0);
-
- /* the current decoding frame/field */
- OUT_BCS_BATCH(batch, 0); /* top */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* POC List */
- for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_jpeg_wa_avc_directmode_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int i;
-
- if (IS_STEPPING_BPLUS(i965)) {
- gen75_jpeg_wa_avc_directmode_state_bplus(ctx, gen7_mfd_context);
- return;
- }
-
- BEGIN_BCS_BATCH(batch, 69);
- OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (69 - 2));
-
- /* reference surfaces 0..15 */
- for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
- OUT_BCS_BATCH(batch, 0); /* top */
- OUT_BCS_BATCH(batch, 0); /* bottom */
- }
-
- /* the current decoding frame/field */
- OUT_BCS_BATCH(batch, 0); /* top */
- OUT_BCS_BATCH(batch, 0); /* bottom */
-
- /* POC List */
- for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_jpeg_wa_ind_obj_base_addr_state_bplus(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 11);
- OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (11 - 2));
- OUT_BCS_RELOC(batch,
- gen7_mfd_context->jpeg_wa_slice_data_bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- OUT_BCS_BATCH(batch, 0x80000000); /* must set, up to 2G */
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_jpeg_wa_ind_obj_base_addr_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- if (IS_STEPPING_BPLUS(i965)) {
- gen75_jpeg_wa_ind_obj_base_addr_state_bplus(ctx, gen7_mfd_context);
- return;
- }
-
- BEGIN_BCS_BATCH(batch, 11);
- OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (11 - 2));
- OUT_BCS_RELOC(batch,
- gen7_mfd_context->jpeg_wa_slice_data_bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- OUT_BCS_BATCH(batch, 0x80000000); /* must set, up to 2G */
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_jpeg_wa_avc_bsd_object(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- /* the input bitsteam format on GEN7 differs from GEN6 */
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFD_AVC_BSD_OBJECT | (6 - 2));
- OUT_BCS_BATCH(batch, gen7_jpeg_wa_clip.data_size);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- (0 << 31) |
- (0 << 14) |
- (0 << 12) |
- (0 << 10) |
- (0 << 8));
- OUT_BCS_BATCH(batch,
- ((gen7_jpeg_wa_clip.data_bit_offset >> 3) << 16) |
- (0 << 5) |
- (0 << 4) |
- (1 << 3) | /* LastSlice Flag */
- (gen7_jpeg_wa_clip.data_bit_offset & 0x7));
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_jpeg_wa_avc_slice_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int slice_hor_pos = 0, slice_ver_pos = 0, next_slice_hor_pos = 0, next_slice_ver_pos = 1;
- int num_ref_idx_l0 = 0, num_ref_idx_l1 = 0;
- int first_mb_in_slice = 0;
- int slice_type = SLICE_TYPE_I;
-
- BEGIN_BCS_BATCH(batch, 11);
- OUT_BCS_BATCH(batch, MFX_AVC_SLICE_STATE | (11 - 2));
- OUT_BCS_BATCH(batch, slice_type);
- OUT_BCS_BATCH(batch,
- (num_ref_idx_l1 << 24) |
- (num_ref_idx_l0 << 16) |
- (0 << 8) |
- (0 << 0));
- OUT_BCS_BATCH(batch,
- (0 << 29) |
- (1 << 27) | /* disable Deblocking */
- (0 << 24) |
- (gen7_jpeg_wa_clip.qp << 16) |
- (0 << 8) |
- (0 << 0));
- OUT_BCS_BATCH(batch,
- (slice_ver_pos << 24) |
- (slice_hor_pos << 16) |
- (first_mb_in_slice << 0));
- OUT_BCS_BATCH(batch,
- (next_slice_ver_pos << 16) |
- (next_slice_hor_pos << 0));
- OUT_BCS_BATCH(batch, (1 << 19)); /* last slice flag */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen75_mfd_jpeg_wa(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- gen75_jpeg_wa_init(ctx, gen7_mfd_context);
- intel_batchbuffer_emit_mi_flush(batch);
- gen75_jpeg_wa_pipe_mode_select(ctx, gen7_mfd_context);
- gen75_jpeg_wa_surface_state(ctx, gen7_mfd_context);
- gen75_jpeg_wa_pipe_buf_addr_state(ctx, gen7_mfd_context);
- gen75_jpeg_wa_bsp_buf_base_addr_state(ctx, gen7_mfd_context);
- gen75_jpeg_wa_avc_qm_state(ctx, gen7_mfd_context);
- gen75_jpeg_wa_avc_img_state(ctx, gen7_mfd_context);
- gen75_jpeg_wa_ind_obj_base_addr_state(ctx, gen7_mfd_context);
-
- gen75_jpeg_wa_avc_directmode_state(ctx, gen7_mfd_context);
- gen75_jpeg_wa_avc_slice_state(ctx, gen7_mfd_context);
- gen75_jpeg_wa_avc_bsd_object(ctx, gen7_mfd_context);
-}
-
-void
-gen75_mfd_jpeg_decode_picture(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferJPEGBaseline *pic_param;
- VASliceParameterBufferJPEGBaseline *slice_param, *next_slice_param, *next_slice_group_param;
- dri_bo *slice_data_bo;
- int i, j, max_selector = 0;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferJPEGBaseline *)decode_state->pic_param->buffer;
-
- /* Currently only support Baseline DCT */
- gen75_mfd_jpeg_decode_init(ctx, decode_state, gen7_mfd_context);
- intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
- gen75_mfd_jpeg_wa(ctx, gen7_mfd_context);
- intel_batchbuffer_emit_mi_flush(batch);
- gen75_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_JPEG, gen7_mfd_context);
- gen75_mfd_surface_state(ctx, decode_state, MFX_FORMAT_JPEG, gen7_mfd_context);
- gen75_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_JPEG, gen7_mfd_context);
- gen75_mfd_jpeg_pic_state(ctx, decode_state, gen7_mfd_context);
- gen75_mfd_jpeg_qm_state(ctx, decode_state, gen7_mfd_context);
-
- for (j = 0; j < decode_state->num_slice_params; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferJPEGBaseline *)decode_state->slice_params[j]->buffer;
- slice_data_bo = decode_state->slice_datas[j]->bo;
- gen75_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_JPEG, gen7_mfd_context);
-
- if (j == decode_state->num_slice_params - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VASliceParameterBufferJPEGBaseline *)decode_state->slice_params[j + 1]->buffer;
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- int component;
-
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
-
- if (i < decode_state->slice_params[j]->num_elements - 1)
- next_slice_param = slice_param + 1;
- else
- next_slice_param = next_slice_group_param;
-
- for (component = 0; component < slice_param->num_components; component++) {
- if (max_selector < slice_param->components[component].dc_table_selector)
- max_selector = slice_param->components[component].dc_table_selector;
-
- if (max_selector < slice_param->components[component].ac_table_selector)
- max_selector = slice_param->components[component].ac_table_selector;
- }
-
- slice_param++;
- }
- }
-
- assert(max_selector < 2);
- gen75_mfd_jpeg_huff_table_state(ctx, decode_state, gen7_mfd_context, max_selector + 1);
-
- for (j = 0; j < decode_state->num_slice_params; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferJPEGBaseline *)decode_state->slice_params[j]->buffer;
- slice_data_bo = decode_state->slice_datas[j]->bo;
- gen75_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_JPEG, gen7_mfd_context);
-
- if (j == decode_state->num_slice_params - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VASliceParameterBufferJPEGBaseline *)decode_state->slice_params[j + 1]->buffer;
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
-
- if (i < decode_state->slice_params[j]->num_elements - 1)
- next_slice_param = slice_param + 1;
- else
- next_slice_param = next_slice_group_param;
-
- gen75_mfd_jpeg_bsd_object(ctx, pic_param, slice_param, next_slice_param, slice_data_bo, gen7_mfd_context);
- slice_param++;
- }
- }
-
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-}
-
-static VAStatus
-gen75_mfd_decode_picture(VADriverContextP ctx,
- VAProfile profile,
- union codec_state *codec_state,
- struct hw_context *hw_context)
-
-{
- struct gen7_mfd_context *gen7_mfd_context = (struct gen7_mfd_context *)hw_context;
- struct decode_state *decode_state = &codec_state->decode;
- VAStatus vaStatus;
-
- assert(gen7_mfd_context);
-
- vaStatus = intel_decoder_sanity_check_input(ctx, profile, decode_state);
-
- if (vaStatus != VA_STATUS_SUCCESS)
- goto out;
-
- gen7_mfd_context->wa_mpeg2_slice_vertical_position = -1;
-
- switch (profile) {
- case VAProfileMPEG2Simple:
- case VAProfileMPEG2Main:
- gen75_mfd_mpeg2_decode_picture(ctx, decode_state, gen7_mfd_context);
- break;
-
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- case VAProfileH264StereoHigh:
- case VAProfileH264MultiviewHigh:
- gen75_mfd_avc_decode_picture(ctx, decode_state, gen7_mfd_context);
- break;
-
- case VAProfileVC1Simple:
- case VAProfileVC1Main:
- case VAProfileVC1Advanced:
- gen75_mfd_vc1_decode_picture(ctx, decode_state, gen7_mfd_context);
- break;
-
- case VAProfileJPEGBaseline:
- gen75_mfd_jpeg_decode_picture(ctx, decode_state, gen7_mfd_context);
- break;
-
- default:
- assert(0);
- break;
- }
-
- vaStatus = VA_STATUS_SUCCESS;
-
-out:
- return vaStatus;
-}
-
-static void
-gen75_mfd_context_destroy(void *hw_context)
-{
- VADriverContextP ctx;
- struct gen7_mfd_context *gen7_mfd_context = (struct gen7_mfd_context *)hw_context;
-
- ctx = (VADriverContextP)(gen7_mfd_context->driver_context);
-
- dri_bo_unreference(gen7_mfd_context->post_deblocking_output.bo);
- gen7_mfd_context->post_deblocking_output.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->intra_row_store_scratch_buffer.bo);
- gen7_mfd_context->intra_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->mpr_row_store_scratch_buffer.bo);
- gen7_mfd_context->mpr_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->bitplane_read_buffer.bo);
- gen7_mfd_context->bitplane_read_buffer.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->jpeg_wa_slice_data_bo);
-
- if (gen7_mfd_context->jpeg_wa_surface_id != VA_INVALID_SURFACE) {
- i965_DestroySurfaces(ctx,
- &gen7_mfd_context->jpeg_wa_surface_id,
- 1);
- gen7_mfd_context->jpeg_wa_surface_object = NULL;
- }
-
- intel_batchbuffer_free(gen7_mfd_context->base.batch);
- free(gen7_mfd_context);
-}
-
-static void gen75_mfd_mpeg2_context_init(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- gen7_mfd_context->iq_matrix.mpeg2.load_intra_quantiser_matrix = -1;
- gen7_mfd_context->iq_matrix.mpeg2.load_non_intra_quantiser_matrix = -1;
- gen7_mfd_context->iq_matrix.mpeg2.load_chroma_intra_quantiser_matrix = -1;
- gen7_mfd_context->iq_matrix.mpeg2.load_chroma_non_intra_quantiser_matrix = -1;
-}
-
-struct hw_context *
-gen75_dec_hw_context_init(VADriverContextP ctx, struct object_config *obj_config)
-{
- struct intel_driver_data *intel = intel_driver_data(ctx);
- struct gen7_mfd_context *gen7_mfd_context = calloc(1, sizeof(struct gen7_mfd_context));
- int i;
-
- assert(gen7_mfd_context);
- gen7_mfd_context->base.destroy = gen75_mfd_context_destroy;
- gen7_mfd_context->base.run = gen75_mfd_decode_picture;
- gen7_mfd_context->base.batch = intel_batchbuffer_new(intel, I915_EXEC_RENDER, 0);
-
- for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
- gen7_mfd_context->reference_surface[i].surface_id = VA_INVALID_ID;
- gen7_mfd_context->reference_surface[i].frame_store_id = -1;
- gen7_mfd_context->reference_surface[i].obj_surface = NULL;
- }
-
- gen7_mfd_context->jpeg_wa_surface_id = VA_INVALID_SURFACE;
- gen7_mfd_context->jpeg_wa_surface_object = NULL;
-
- switch (obj_config->profile) {
- case VAProfileMPEG2Simple:
- case VAProfileMPEG2Main:
- gen75_mfd_mpeg2_context_init(ctx, gen7_mfd_context);
- break;
-
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- case VAProfileH264StereoHigh:
- case VAProfileH264MultiviewHigh:
- gen75_mfd_avc_context_init(ctx, gen7_mfd_context);
- break;
- default:
- break;
- }
-
- gen7_mfd_context->driver_context = ctx;
- return (struct hw_context *)gen7_mfd_context;
-}
diff --git a/src/gen75_picture_process.c b/src/gen75_picture_process.c
deleted file mode 100644
index d4106f3..0000000
--- a/src/gen75_picture_process.c
+++ /dev/null
@@ -1,644 +0,0 @@
-/*
- * Copyright © 2011 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Li Xiaowei <xiaowei.a.li@intel.com>
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-#include "i965_defines.h"
-#include "i965_structs.h"
-
-#include "i965_drv_video.h"
-#include "i965_post_processing.h"
-#include "gen75_picture_process.h"
-#include "gen8_post_processing.h"
-#include "intel_gen_vppapi.h"
-
-extern struct hw_context *
-i965_proc_context_init(VADriverContextP ctx,
- struct object_config *obj_config);
-
-static VAStatus
-gen75_vpp_fmt_cvt(VADriverContextP ctx,
- VAProfile profile,
- union codec_state *codec_state,
- struct hw_context *hw_context)
-{
- VAStatus va_status = VA_STATUS_SUCCESS;
- struct intel_video_process_context *proc_ctx =
- (struct intel_video_process_context *)hw_context;
-
- va_status = i965_proc_picture(ctx, profile, codec_state,
- proc_ctx->vpp_fmt_cvt_ctx);
-
- return va_status;
-}
-
-static VAStatus
-gen75_vpp_vebox(VADriverContextP ctx,
- struct intel_video_process_context* proc_ctx)
-{
- VAStatus va_status = VA_STATUS_SUCCESS;
- VAProcPipelineParameterBuffer* pipeline_param = proc_ctx->pipeline_param;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
-
- /* vpp features based on VEBox fixed function */
- if(proc_ctx->vpp_vebox_ctx == NULL) {
- proc_ctx->vpp_vebox_ctx = gen75_vebox_context_init(ctx);
- }
-
- proc_ctx->vpp_vebox_ctx->pipeline_param = pipeline_param;
- proc_ctx->vpp_vebox_ctx->surface_input_object = proc_ctx->surface_pipeline_input_object;
- proc_ctx->vpp_vebox_ctx->surface_output_object = proc_ctx->surface_render_output_object;
-
- if (IS_HASWELL(i965->intel.device_info))
- va_status = gen75_vebox_process_picture(ctx, proc_ctx->vpp_vebox_ctx);
- else if (IS_GEN8(i965->intel.device_info))
- va_status = gen8_vebox_process_picture(ctx, proc_ctx->vpp_vebox_ctx);
- else if (IS_GEN9(i965->intel.device_info))
- va_status = gen9_vebox_process_picture(ctx, proc_ctx->vpp_vebox_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;
-}
-
-static void
-rgb_to_yuv(unsigned int argb,
- unsigned char *y,
- unsigned char *u,
- unsigned char *v,
- unsigned char *a)
-{
- int r = ((argb >> 16) & 0xff);
- int g = ((argb >> 8) & 0xff);
- int b = ((argb >> 0) & 0xff);
-
- *y = (257 * r + 504 * g + 98 * b) / 1000 + 16;
- *v = (439 * r - 368 * g - 71 * b) / 1000 + 128;
- *u = (-148 * r - 291 * g + 439 * b) / 1000 + 128;
- *a = ((argb >> 24) & 0xff);
-}
-
-static void
-gen8plus_vpp_clear_surface(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context,
- struct object_surface *obj_surface,
- unsigned int color)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
- unsigned int blt_cmd, br13;
- unsigned int tiling = 0, swizzle = 0;
- int pitch;
- unsigned char y, u, v, a = 0;
- int region_width, region_height;
-
- /* Currently only support NV12 surface */
- if (!obj_surface || obj_surface->fourcc != VA_FOURCC_NV12)
- return;
-
- rgb_to_yuv(color, &y, &u, &v, &a);
-
- if (a == 0)
- return;
-
- dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
- blt_cmd = GEN8_XY_COLOR_BLT_CMD;
- pitch = obj_surface->width;
-
- if (tiling != I915_TILING_NONE) {
- assert(tiling == I915_TILING_Y);
- // blt_cmd |= XY_COLOR_BLT_DST_TILED;
- // pitch >>= 2;
- }
-
- br13 = 0xf0 << 16;
- br13 |= BR13_8;
- br13 |= pitch;
-
- intel_batchbuffer_start_atomic_blt(batch, 56);
- BEGIN_BLT_BATCH(batch, 14);
-
- region_width = obj_surface->width;
- region_height = obj_surface->height;
-
- OUT_BATCH(batch, blt_cmd);
- OUT_BATCH(batch, br13);
- OUT_BATCH(batch,
- 0 << 16 |
- 0);
- OUT_BATCH(batch,
- region_height << 16 |
- region_width);
- OUT_RELOC64(batch, obj_surface->bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- 0);
- OUT_BATCH(batch, y);
-
- br13 = 0xf0 << 16;
- br13 |= BR13_565;
- br13 |= pitch;
-
- region_width = obj_surface->width / 2;
- region_height = obj_surface->height / 2;
-
- if (tiling == I915_TILING_Y) {
- region_height = ALIGN(obj_surface->height / 2, 32);
- }
-
- OUT_BATCH(batch, blt_cmd);
- OUT_BATCH(batch, br13);
- OUT_BATCH(batch,
- 0 << 16 |
- 0);
- OUT_BATCH(batch,
- region_height << 16 |
- region_width);
- OUT_RELOC64(batch, obj_surface->bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- obj_surface->width * obj_surface->y_cb_offset);
- OUT_BATCH(batch, v << 8 | u);
-
- ADVANCE_BATCH(batch);
- intel_batchbuffer_end_atomic(batch);
-}
-
-VAStatus
-gen75_proc_picture(VADriverContextP ctx,
- VAProfile profile,
- union codec_state *codec_state,
- struct hw_context *hw_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct proc_state* proc_st = &(codec_state->proc);
- struct intel_video_process_context *proc_ctx =
- (struct intel_video_process_context *)hw_context;
- VAProcPipelineParameterBuffer *pipeline_param =
- (VAProcPipelineParameterBuffer *)proc_st->pipeline_param->buffer;
- struct object_surface *obj_dst_surf = NULL;
- struct object_surface *obj_src_surf = NULL;
-
- VAProcPipelineParameterBuffer pipeline_param2;
- struct object_surface *stage1_dst_surf = NULL;
- struct object_surface *stage2_dst_surf = NULL;
- VARectangle src_rect, dst_rect;
- VASurfaceID tmp_surfaces[2];
- VASurfaceID out_surface_id1 = VA_INVALID_ID, out_surface_id2 = VA_INVALID_ID;
- int num_tmp_surfaces = 0;
-
- VAStatus status;
-
- proc_ctx->pipeline_param = pipeline_param;
-
- if (proc_st->current_render_target == VA_INVALID_SURFACE ||
- pipeline_param->surface == VA_INVALID_SURFACE) {
- status = VA_STATUS_ERROR_INVALID_SURFACE;
- goto error;
- }
-
- obj_dst_surf = SURFACE(proc_st->current_render_target);
-
- if (!obj_dst_surf) {
- status = VA_STATUS_ERROR_INVALID_SURFACE;
- goto error;
- }
-
- obj_src_surf = SURFACE(proc_ctx->pipeline_param->surface);
-
- if (!obj_src_surf) {
- status = VA_STATUS_ERROR_INVALID_SURFACE;
- goto error;
- }
-
- if (!obj_src_surf->bo) {
- status = VA_STATUS_ERROR_INVALID_VALUE; /* The input surface is created without valid content */
- goto error;
- }
-
- if (pipeline_param->num_filters && !pipeline_param->filters) {
- status = VA_STATUS_ERROR_INVALID_PARAMETER;
- 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;
- 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);
- }
-
- if (pipeline_param->surface_region) {
- src_rect.x = pipeline_param->surface_region->x;
- src_rect.y = pipeline_param->surface_region->y;
- src_rect.width = pipeline_param->surface_region->width;
- src_rect.height = pipeline_param->surface_region->height;
- } else {
- src_rect.x = 0;
- src_rect.y = 0;
- src_rect.width = obj_src_surf->orig_width;
- src_rect.height = obj_src_surf->orig_height;
- }
-
- if (pipeline_param->output_region) {
- dst_rect.x = pipeline_param->output_region->x;
- dst_rect.y = pipeline_param->output_region->y;
- dst_rect.width = pipeline_param->output_region->width;
- dst_rect.height = pipeline_param->output_region->height;
- } else {
- dst_rect.x = 0;
- dst_rect.y = 0;
- dst_rect.width = obj_dst_surf->orig_width;
- dst_rect.height = obj_dst_surf->orig_height;
- }
-
- if (pipeline_param->num_filters == 0 || pipeline_param->filters == NULL ) {
-/* The Bit 2 is used to indicate that it is 10bit or 8bit.
- * The Bit 0/1 is used to indicate the 420/422/444 format
- */
-#define SRC_10BIT_420 (5 << 0)
-#define SRC_10BIT_422 (6 << 0)
-#define SRC_10BIT_444 (7 << 0)
-#define SRC_8BIT_420 (1 << 0)
-
-/* The Bit 6 is used to indicate that it is 10bit or 8bit.
- * The Bit 5/4 is used to indicate the 420/422/444 format
- */
-#define DST_10BIT_420 (5 << 4)
-#define DST_10BIT_422 (6 << 4)
-#define DST_10BIT_444 (7 << 4)
-#define DST_8BIT_420 (1 << 4)
-
-/* This is mainly for YUY2/RGBA. It is reserved for further */
-#define SRC_YUV_PACKED (1 << 3)
-#define DST_YUV_PACKED (1 << 7)
-
-#define MASK_CSC (0xFF)
-#define SCALE_10BIT_420 (SRC_10BIT_420 | DST_10BIT_420)
-#define SCALE_8BIT_420 (SRC_8BIT_420 | DST_8BIT_420)
-
- unsigned int scale_flag;
-
- scale_flag = 0;
- if (obj_src_surf->fourcc == VA_FOURCC_P010 ||
- obj_src_surf->fourcc == VA_FOURCC_I010)
- scale_flag |= SRC_10BIT_420;
-
- if (obj_dst_surf->fourcc == VA_FOURCC_P010 ||
- obj_dst_surf->fourcc == VA_FOURCC_I010)
- scale_flag |= DST_10BIT_420;
-
- if (obj_src_surf->fourcc == VA_FOURCC_NV12 ||
- obj_src_surf->fourcc == VA_FOURCC_I420)
- scale_flag |= SRC_8BIT_420;
-
- if (obj_dst_surf->fourcc == VA_FOURCC_NV12 ||
- obj_dst_surf->fourcc == VA_FOURCC_I420)
- scale_flag |= DST_8BIT_420;
-
- /* If P010 is converted without resolution change,
- * fall back to VEBOX
- */
- if (i965->intel.has_vebox &&
- (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))
- scale_flag = 0;
-
- if (((scale_flag & MASK_CSC) == SCALE_10BIT_420) &&
- 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;
- 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;
-
- 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);
- }
- if (((scale_flag & MASK_CSC) == SCALE_8BIT_420) &&
- intel_vpp_support_yuv420p8_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;
- 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;
-
- tmp_x = ALIGN_FLOOR(dst_rect.x, 4);
- tmp_width = dst_rect.x + dst_rect.width;
- tmp_width = tmp_width - tmp_x;
- dst_rect.x = tmp_x;
- dst_rect.width = tmp_width;
-
- if (obj_dst_surf->fourcc == VA_FOURCC_NV12 &&
- pipeline_param->output_background_color)
- gen8plus_vpp_clear_surface(ctx, &gpe_proc_ctx->pp_context,
- obj_dst_surf,
- pipeline_param->output_background_color);
-
- return intel_yuv420p8_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;
- vpp_stage3 = 0;
- if(pipeline_param->num_filters == 0 || pipeline_param->filters == NULL) {
- if(src_rect.x != dst_rect.x ||
- src_rect.y != dst_rect.y ||
- src_rect.width != dst_rect.width ||
- src_rect.height != dst_rect.height)
- vpp_stage2 = 1;
-
- if(obj_dst_surf->fourcc != VA_FOURCC_NV12 &&
- obj_dst_surf->fourcc != VA_FOURCC_P010)
- vpp_stage2 = 1;
- }
- else
- vpp_stage2 = 1;
-
- if(vpp_stage2 == 1) {
- if(obj_dst_surf->fourcc == VA_FOURCC_P010)
- vpp_stage3 = 1;
- }
- }
- else if(obj_dst_surf->fourcc == VA_FOURCC_P010) {
- vpp_stage2 = 1;
- vpp_stage3 = 1;
-
- if((obj_src_surf->fourcc == VA_FOURCC_NV12) &&
- (pipeline_param->num_filters == 0 || pipeline_param->filters == NULL)) {
- if((src_rect.x == dst_rect.x) &&
- (src_rect.y == dst_rect.y) &&
- (src_rect.width == dst_rect.width) &&
- (src_rect.height == dst_rect.height))
- vpp_stage2 = 0;
- }
- }
-
- if(vpp_stage1 == 1){
- memset((void *)&pipeline_param2, 0, sizeof(pipeline_param2));
- pipeline_param2.surface = pipeline_param->surface;
- pipeline_param2.surface_region = &src_rect;
- pipeline_param2.output_region = &src_rect;
- pipeline_param2.filter_flags = 0;
- pipeline_param2.num_filters = 0;
-
- proc_ctx->pipeline_param = &pipeline_param2;
-
- if(vpp_stage2 == 1) {
- status = i965_CreateSurfaces(ctx,
- obj_src_surf->orig_width,
- obj_src_surf->orig_height,
- VA_RT_FORMAT_YUV420,
- 1,
- &out_surface_id1);
- assert(status == VA_STATUS_SUCCESS);
- tmp_surfaces[num_tmp_surfaces++] = out_surface_id1;
- stage1_dst_surf = SURFACE(out_surface_id1);
- assert(stage1_dst_surf);
- i965_check_alloc_surface_bo(ctx, stage1_dst_surf, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
-
- proc_ctx->surface_render_output_object = stage1_dst_surf;
- }
-
- gen75_vpp_vebox(ctx, proc_ctx);
- }
-
- if((vpp_stage3 == 1) && (vpp_stage2 == 1)) {
- status = i965_CreateSurfaces(ctx,
- obj_dst_surf->orig_width,
- obj_dst_surf->orig_height,
- VA_RT_FORMAT_YUV420,
- 1,
- &out_surface_id2);
- assert(status == VA_STATUS_SUCCESS);
- tmp_surfaces[num_tmp_surfaces++] = out_surface_id2;
- stage2_dst_surf = SURFACE(out_surface_id2);
- assert(stage2_dst_surf);
- i965_check_alloc_surface_bo(ctx, stage2_dst_surf, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
- }
-
- VABufferID *filter_id = (VABufferID*) pipeline_param->filters;
-
- if(vpp_stage2 == 1) {
- if(stage1_dst_surf != NULL) {
- proc_ctx->surface_pipeline_input_object = stage1_dst_surf;
- proc_ctx->surface_render_output_object = obj_dst_surf;
-
- pipeline_param->surface = out_surface_id1;
- }
-
- if(stage2_dst_surf != NULL) {
- proc_ctx->surface_render_output_object = stage2_dst_surf;
-
- proc_st->current_render_target = out_surface_id2;
- }
-
- proc_ctx->pipeline_param = pipeline_param;
-
- if(pipeline_param->num_filters == 0 || pipeline_param->filters == NULL ){
- /* implicity surface format coversion and scaling */
-
- status = gen75_vpp_fmt_cvt(ctx, profile, codec_state, hw_context);
- if(status != VA_STATUS_SUCCESS)
- goto error;
- }else if(pipeline_param->num_filters == 1) {
- struct object_buffer * obj_buf = BUFFER((*filter_id) + 0);
-
- assert(obj_buf && obj_buf->buffer_store && obj_buf->buffer_store->buffer);
-
- if (!obj_buf ||
- !obj_buf->buffer_store ||
- !obj_buf->buffer_store->buffer) {
- status = VA_STATUS_ERROR_INVALID_FILTER_CHAIN;
- goto error;
- }
-
- VAProcFilterParameterBuffer* filter =
- (VAProcFilterParameterBuffer*)obj_buf-> buffer_store->buffer;
-
- if (filter->type == VAProcFilterNoiseReduction ||
- filter->type == VAProcFilterDeinterlacing ||
- filter->type == VAProcFilterSkinToneEnhancement ||
- filter->type == VAProcFilterSharpening ||
- filter->type == VAProcFilterColorBalance){
- gen75_vpp_vebox(ctx, proc_ctx);
- }
- }else if (pipeline_param->num_filters >= 2) {
- unsigned int i = 0;
- for (i = 0; i < pipeline_param->num_filters; i++){
- struct object_buffer * obj_buf = BUFFER(pipeline_param->filters[i]);
-
- if (!obj_buf ||
- !obj_buf->buffer_store ||
- !obj_buf->buffer_store->buffer) {
- status = VA_STATUS_ERROR_INVALID_FILTER_CHAIN;
- goto error;
- }
-
- VAProcFilterParameterBuffer* filter =
- (VAProcFilterParameterBuffer*)obj_buf-> buffer_store->buffer;
-
- if (filter->type != VAProcFilterNoiseReduction &&
- filter->type != VAProcFilterDeinterlacing &&
- filter->type != VAProcFilterSkinToneEnhancement &&
- filter->type != VAProcFilterColorBalance) {
- fprintf(stderr, "Do not support multiply filters outside vebox pipeline \n");
- assert(0);
- }
- }
- gen75_vpp_vebox(ctx, proc_ctx);
- }
- }
-
- if(vpp_stage3 == 1)
- {
- if(vpp_stage2 == 1) {
- memset(&pipeline_param2, 0, sizeof(pipeline_param2));
- pipeline_param2.surface = out_surface_id2;
- pipeline_param2.surface_region = &dst_rect;
- pipeline_param2.output_region = &dst_rect;
- pipeline_param2.filter_flags = 0;
- pipeline_param2.num_filters = 0;
-
- proc_ctx->pipeline_param = &pipeline_param2;
- proc_ctx->surface_pipeline_input_object = proc_ctx->surface_render_output_object;
- proc_ctx->surface_render_output_object = obj_dst_surf;
- }
-
- gen75_vpp_vebox(ctx, proc_ctx);
- }
-
- if (num_tmp_surfaces)
- i965_DestroySurfaces(ctx,
- tmp_surfaces,
- num_tmp_surfaces);
-
- return VA_STATUS_SUCCESS;
-
-error:
- if (num_tmp_surfaces)
- i965_DestroySurfaces(ctx,
- tmp_surfaces,
- num_tmp_surfaces);
-
- return status;
-}
-
-static void
-gen75_proc_context_destroy(void *hw_context)
-{
- struct intel_video_process_context *proc_ctx =
- (struct intel_video_process_context *)hw_context;
- VADriverContextP ctx = (VADriverContextP)(proc_ctx->driver_context);
-
- if(proc_ctx->vpp_fmt_cvt_ctx){
- proc_ctx->vpp_fmt_cvt_ctx->destroy(proc_ctx->vpp_fmt_cvt_ctx);
- proc_ctx->vpp_fmt_cvt_ctx = NULL;
- }
-
- if(proc_ctx->vpp_vebox_ctx){
- gen75_vebox_context_destroy(ctx,proc_ctx->vpp_vebox_ctx);
- proc_ctx->vpp_vebox_ctx = NULL;
- }
-
- free(proc_ctx);
-}
-
-struct hw_context *
-gen75_proc_context_init(VADriverContextP ctx,
- struct object_config *obj_config)
-{
- struct intel_video_process_context *proc_context
- = calloc(1, sizeof(struct intel_video_process_context));
-
- assert(proc_context);
- proc_context->base.destroy = gen75_proc_context_destroy;
- proc_context->base.run = gen75_proc_picture;
-
- proc_context->vpp_vebox_ctx = NULL;
- proc_context->vpp_fmt_cvt_ctx = NULL;
-
- proc_context->driver_context = ctx;
-
- return (struct hw_context *)proc_context;
-}
-
diff --git a/src/gen75_picture_process.h b/src/gen75_picture_process.h
deleted file mode 100644
index 2ac9d4e..0000000
--- a/src/gen75_picture_process.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Li Xiaowei <xiaowei.a.li@intel.com>
- *
- */
-#ifndef _GEN75_PICTURE_PROCESS_H
-#define _GEN75_PICTURE_PROCESS_H
-
-#include <va/va_vpp.h>
-#include "i965_drv_video.h"
-#include "gen75_vpp_vebox.h"
-
-struct intel_video_process_context
-{
- struct hw_context base;
- void* driver_context;
-
- struct intel_vebox_context *vpp_vebox_ctx;
- struct hw_context *vpp_fmt_cvt_ctx;
-
- VAProcPipelineParameterBuffer* pipeline_param;
-
- struct object_surface *surface_render_output_object;
- struct object_surface *surface_pipeline_input_object;
-};
-
-struct hw_context *
-gen75_proc_context_init(VADriverContextP ctx, struct object_config *obj_config);
-
-#endif
-
diff --git a/src/gen75_vme.c b/src/gen75_vme.c
deleted file mode 100644
index 79b1e23..0000000
--- a/src/gen75_vme.c
+++ /dev/null
@@ -1,1109 +0,0 @@
-/*
- * Copyright © 2010-2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-
-#include "sysdeps.h"
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "i965_encoder.h"
-#include "gen6_vme.h"
-#include "gen6_mfc.h"
-
-#define SURFACE_STATE_PADDED_SIZE MAX(SURFACE_STATE_PADDED_SIZE_GEN6, SURFACE_STATE_PADDED_SIZE_GEN7)
-#define SURFACE_STATE_OFFSET(index) (SURFACE_STATE_PADDED_SIZE * index)
-#define BINDING_TABLE_OFFSET(index) (SURFACE_STATE_OFFSET(MAX_MEDIA_SURFACES_GEN6) + sizeof(unsigned int) * index)
-
-#define VME_INTRA_SHADER 0
-#define VME_INTER_SHADER 1
-#define VME_BINTER_SHADER 3
-#define VME_BATCHBUFFER 2
-
-#define CURBE_ALLOCATION_SIZE 37 /* in 256-bit */
-#define CURBE_TOTAL_DATA_LENGTH (4 * 32) /* in byte, it should be less than or equal to CURBE_ALLOCATION_SIZE * 32 */
-#define CURBE_URB_ENTRY_LENGTH 4 /* in 256-bit, it should be less than or equal to CURBE_TOTAL_DATA_LENGTH / 32 */
-
-#define VME_MSG_LENGTH 32
-
-static const uint32_t gen75_vme_intra_frame[][4] = {
-#include "shaders/vme/intra_frame_haswell.g75b"
-};
-
-static const uint32_t gen75_vme_inter_frame[][4] = {
-#include "shaders/vme/inter_frame_haswell.g75b"
-};
-
-static const uint32_t gen75_vme_inter_bframe[][4] = {
-#include "shaders/vme/inter_bframe_haswell.g75b"
-};
-
-static const uint32_t gen75_vme_batchbuffer[][4] = {
-#include "shaders/vme/batchbuffer.g75b"
-};
-
-static struct i965_kernel gen75_vme_kernels[] = {
- {
- "VME Intra Frame",
- VME_INTRA_SHADER, /*index*/
- gen75_vme_intra_frame,
- sizeof(gen75_vme_intra_frame),
- NULL
- },
- {
- "VME inter Frame",
- VME_INTER_SHADER,
- gen75_vme_inter_frame,
- sizeof(gen75_vme_inter_frame),
- NULL
- },
- {
- "VME BATCHBUFFER",
- VME_BATCHBUFFER,
- gen75_vme_batchbuffer,
- sizeof(gen75_vme_batchbuffer),
- NULL
- },
- {
- "VME inter BFrame",
- VME_BINTER_SHADER,
- gen75_vme_inter_bframe,
- sizeof(gen75_vme_inter_bframe),
- NULL
- }
-};
-
-static const uint32_t gen75_vme_mpeg2_intra_frame[][4] = {
-#include "shaders/vme/intra_frame_haswell.g75b"
-};
-
-static const uint32_t gen75_vme_mpeg2_inter_frame[][4] = {
-#include "shaders/vme/mpeg2_inter_haswell.g75b"
-};
-
-static const uint32_t gen75_vme_mpeg2_batchbuffer[][4] = {
-#include "shaders/vme/batchbuffer.g75b"
-};
-
-static struct i965_kernel gen75_vme_mpeg2_kernels[] = {
- {
- "VME Intra Frame",
- VME_INTRA_SHADER, /*index*/
- gen75_vme_mpeg2_intra_frame,
- sizeof(gen75_vme_mpeg2_intra_frame),
- NULL
- },
- {
- "VME inter Frame",
- VME_INTER_SHADER,
- gen75_vme_mpeg2_inter_frame,
- sizeof(gen75_vme_mpeg2_inter_frame),
- NULL
- },
- {
- "VME BATCHBUFFER",
- VME_BATCHBUFFER,
- gen75_vme_mpeg2_batchbuffer,
- sizeof(gen75_vme_mpeg2_batchbuffer),
- NULL
- },
-};
-
-/* only used for VME source surface state */
-static void
-gen75_vme_source_surface_state(VADriverContextP ctx,
- int index,
- struct object_surface *obj_surface,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- vme_context->vme_surface2_setup(ctx,
- &vme_context->gpe_context,
- obj_surface,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index));
-}
-
-static void
-gen75_vme_media_source_surface_state(VADriverContextP ctx,
- int index,
- struct object_surface *obj_surface,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- vme_context->vme_media_rw_surface_setup(ctx,
- &vme_context->gpe_context,
- obj_surface,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index),
- 0);
-}
-
-static void
-gen75_vme_media_chroma_source_surface_state(VADriverContextP ctx,
- int index,
- struct object_surface *obj_surface,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- vme_context->vme_media_chroma_surface_setup(ctx,
- &vme_context->gpe_context,
- obj_surface,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index),
- 0);
-}
-
-static void
-gen75_vme_output_buffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context)
-
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int is_intra = pSliceParameter->slice_type == SLICE_TYPE_I;
- int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
-
- vme_context->vme_output.num_blocks = width_in_mbs * height_in_mbs;
- vme_context->vme_output.pitch = 16; /* in bytes, always 16 */
-
- if (is_intra)
- vme_context->vme_output.size_block = INTRA_VME_OUTPUT_IN_BYTES * 2;
- else
- vme_context->vme_output.size_block = INTRA_VME_OUTPUT_IN_BYTES * 24;
- /*
- * Inter MV . 32-byte Intra search + 16 IME info + 128 IME MV + 32 IME Ref
- * + 16 FBR Info + 128 FBR MV + 32 FBR Ref.
- * 16 * (2 + 2 * (1 + 8 + 2))= 16 * 24.
- */
-
- vme_context->vme_output.bo = dri_bo_alloc(i965->intel.bufmgr,
- "VME output buffer",
- vme_context->vme_output.num_blocks * vme_context->vme_output.size_block,
- 0x1000);
- assert(vme_context->vme_output.bo);
- vme_context->vme_buffer_suface_setup(ctx,
- &vme_context->gpe_context,
- &vme_context->vme_output,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index));
-}
-
-static void
-gen75_vme_output_vme_batchbuffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context)
-
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
-
- vme_context->vme_batchbuffer.num_blocks = width_in_mbs * height_in_mbs + 1;
- vme_context->vme_batchbuffer.size_block = 64; /* 4 OWORDs */
- vme_context->vme_batchbuffer.pitch = 16;
- vme_context->vme_batchbuffer.bo = dri_bo_alloc(i965->intel.bufmgr,
- "VME batchbuffer",
- vme_context->vme_batchbuffer.num_blocks * vme_context->vme_batchbuffer.size_block,
- 0x1000);
- vme_context->vme_buffer_suface_setup(ctx,
- &vme_context->gpe_context,
- &vme_context->vme_batchbuffer,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index));
-}
-
-static VAStatus
-gen75_vme_surface_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct object_surface *obj_surface;
-
- /*Setup surfaces state*/
- /* current picture for encoding */
- obj_surface = encode_state->input_yuv_object;
- gen75_vme_source_surface_state(ctx, 0, obj_surface, encoder_context);
- gen75_vme_media_source_surface_state(ctx, 4, obj_surface, encoder_context);
- gen75_vme_media_chroma_source_surface_state(ctx, 6, obj_surface, encoder_context);
-
- if (!is_intra) {
- VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int slice_type;
-
- slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
- assert(slice_type != SLICE_TYPE_I && slice_type != SLICE_TYPE_SI);
-
- intel_avc_vme_reference_state(ctx, encode_state, encoder_context, 0, 1, gen75_vme_source_surface_state);
-
- if (slice_type == SLICE_TYPE_B)
- intel_avc_vme_reference_state(ctx, encode_state, encoder_context, 1, 2, gen75_vme_source_surface_state);
- }
-
- /* VME output */
- gen75_vme_output_buffer_setup(ctx, encode_state, 3, encoder_context);
- gen75_vme_output_vme_batchbuffer_setup(ctx, encode_state, 5, encoder_context);
- intel_h264_setup_cost_surface(ctx, encode_state, encoder_context,
- BINDING_TABLE_OFFSET(INTEL_COST_TABLE_OFFSET),
- SURFACE_STATE_OFFSET(INTEL_COST_TABLE_OFFSET));
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus gen75_vme_interface_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct gen6_interface_descriptor_data *desc;
- int i;
- dri_bo *bo;
-
- bo = vme_context->gpe_context.idrt.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- desc = bo->virtual;
-
- for (i = 0; i < vme_context->vme_kernel_sum; i++) {
- struct i965_kernel *kernel;
- kernel = &vme_context->gpe_context.kernels[i];
- assert(sizeof(*desc) == 32);
- /*Setup the descritor table*/
- memset(desc, 0, sizeof(*desc));
- desc->desc0.kernel_start_pointer = (kernel->bo->offset >> 6);
- desc->desc2.sampler_count = 0; /* FIXME: */
- desc->desc2.sampler_state_pointer = 0;
- desc->desc3.binding_table_entry_count = 1; /* FIXME: */
- desc->desc3.binding_table_pointer = (BINDING_TABLE_OFFSET(0) >> 5);
- desc->desc4.constant_urb_entry_read_offset = 0;
- desc->desc4.constant_urb_entry_read_length = CURBE_URB_ENTRY_LENGTH;
-
- /*kernel start*/
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0,
- i * sizeof(*desc) + offsetof(struct gen6_interface_descriptor_data, desc0),
- kernel->bo);
- desc++;
- }
- dri_bo_unmap(bo);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus gen75_vme_constant_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int denom)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- unsigned char *constant_buffer;
- unsigned int *vme_state_message;
- int mv_num = 32;
-
- vme_state_message = (unsigned int *)vme_context->vme_state_message;
-
- if (encoder_context->codec == CODEC_H264 ||
- encoder_context->codec == CODEC_H264_MVC) {
- if (vme_context->h264_level >= 30) {
- mv_num = 16 / denom;
-
- if (vme_context->h264_level >= 31)
- mv_num = 8 / denom;
- }
- } else if (encoder_context->codec == CODEC_MPEG2) {
- mv_num = 2 / denom;
- }
-
- vme_state_message[31] = mv_num;
-
- dri_bo_map(vme_context->gpe_context.curbe.bo, 1);
- assert(vme_context->gpe_context.curbe.bo->virtual);
- constant_buffer = vme_context->gpe_context.curbe.bo->virtual;
-
- /* VME MV/Mb cost table is passed by using const buffer */
- /* Now it uses the fixed search path. So it is constructed directly
- * in the GPU shader.
- */
- memcpy(constant_buffer, (char *)vme_context->vme_state_message, 128);
-
- dri_bo_unmap(vme_context->gpe_context.curbe.bo);
-
- return VA_STATUS_SUCCESS;
-}
-
-static const unsigned int intra_mb_mode_cost_table[] = {
- 0x31110001, // for qp0
- 0x09110001, // for qp1
- 0x15030001, // for qp2
- 0x0b030001, // for qp3
- 0x0d030011, // for qp4
- 0x17210011, // for qp5
- 0x41210011, // for qp6
- 0x19210011, // for qp7
- 0x25050003, // for qp8
- 0x1b130003, // for qp9
- 0x1d130003, // for qp10
- 0x27070021, // for qp11
- 0x51310021, // for qp12
- 0x29090021, // for qp13
- 0x35150005, // for qp14
- 0x2b0b0013, // for qp15
- 0x2d0d0013, // for qp16
- 0x37170007, // for qp17
- 0x61410031, // for qp18
- 0x39190009, // for qp19
- 0x45250015, // for qp20
- 0x3b1b000b, // for qp21
- 0x3d1d000d, // for qp22
- 0x47270017, // for qp23
- 0x71510041, // for qp24 ! center for qp=0..30
- 0x49290019, // for qp25
- 0x55350025, // for qp26
- 0x4b2b001b, // for qp27
- 0x4d2d001d, // for qp28
- 0x57370027, // for qp29
- 0x81610051, // for qp30
- 0x57270017, // for qp31
- 0x81510041, // for qp32 ! center for qp=31..51
- 0x59290019, // for qp33
- 0x65350025, // for qp34
- 0x5b2b001b, // for qp35
- 0x5d2d001d, // for qp36
- 0x67370027, // for qp37
- 0x91610051, // for qp38
- 0x69390029, // for qp39
- 0x75450035, // for qp40
- 0x6b3b002b, // for qp41
- 0x6d3d002d, // for qp42
- 0x77470037, // for qp43
- 0xa1710061, // for qp44
- 0x79490039, // for qp45
- 0x85550045, // for qp46
- 0x7b4b003b, // for qp47
- 0x7d4d003d, // for qp48
- 0x87570047, // for qp49
- 0xb1810071, // for qp50
- 0x89590049 // for qp51
-};
-
-static void gen75_vme_state_setup_fixup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- unsigned int *vme_state_message)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
-
- if (slice_param->slice_type != SLICE_TYPE_I &&
- slice_param->slice_type != SLICE_TYPE_SI)
- return;
- if (encoder_context->rate_control_mode == VA_RC_CQP)
- vme_state_message[0] = intra_mb_mode_cost_table[pic_param->pic_init_qp + slice_param->slice_qp_delta];
- else
- vme_state_message[0] = intra_mb_mode_cost_table[mfc_context->brc.qp_prime_y[encoder_context->layer.curr_frame_layer_id][SLICE_TYPE_I]];
-}
-
-static VAStatus gen75_vme_vme_state_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- unsigned int *vme_state_message;
- int i;
-
- //pass the MV/Mb cost into VME message on HASWell
- assert(vme_context->vme_state_message);
- vme_state_message = (unsigned int *)vme_context->vme_state_message;
-
- vme_state_message[0] = 0x4a4a4a4a;
- vme_state_message[1] = 0x4a4a4a4a;
- vme_state_message[2] = 0x4a4a4a4a;
- vme_state_message[3] = 0x22120200;
- vme_state_message[4] = 0x62524232;
-
- for (i=5; i < 8; i++) {
- vme_state_message[i] = 0;
- }
-
- switch (encoder_context->codec) {
- case CODEC_H264:
- case CODEC_H264_MVC:
- gen75_vme_state_setup_fixup(ctx, encode_state, encoder_context, vme_state_message);
-
- break;
-
- default:
- /* no fixup */
- break;
- }
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen75_vme_fill_vme_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- int mb_width, int mb_height,
- int kernel,
- int transform_8x8_mode_flag,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- int mb_x = 0, mb_y = 0;
- int i, s;
- unsigned int *command_ptr;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int qp;
- int slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
- int qp_mb, qp_index;
-
- if (encoder_context->rate_control_mode == VA_RC_CQP)
- qp = pic_param->pic_init_qp + slice_param->slice_qp_delta;
- else
- qp = mfc_context->brc.qp_prime_y[encoder_context->layer.curr_frame_layer_id][slice_type];
-
- dri_bo_map(vme_context->vme_batchbuffer.bo, 1);
- command_ptr = vme_context->vme_batchbuffer.bo->virtual;
-
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[s]->buffer;
- int slice_mb_begin = pSliceParameter->macroblock_address;
- int slice_mb_number = pSliceParameter->num_macroblocks;
- unsigned int mb_intra_ub;
- int slice_mb_x = pSliceParameter->macroblock_address % mb_width;
- for (i = 0; i < slice_mb_number; ) {
- int mb_count = i + slice_mb_begin;
- mb_x = mb_count % mb_width;
- mb_y = mb_count / mb_width;
- mb_intra_ub = 0;
- if (mb_x != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- }
- if (mb_y != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
- if (mb_x != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
- if (mb_x != (mb_width -1))
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- }
- if (i < mb_width) {
- if (i == 0)
- mb_intra_ub &= ~(INTRA_PRED_AVAIL_FLAG_AE);
- mb_intra_ub &= ~(INTRA_PRED_AVAIL_FLAG_BCD_MASK);
- if ((i == (mb_width - 1)) && slice_mb_x) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- }
- }
-
- if ((i == mb_width) && slice_mb_x) {
- mb_intra_ub &= ~(INTRA_PRED_AVAIL_FLAG_D);
- }
- *command_ptr++ = (CMD_MEDIA_OBJECT | (9 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
-
- /*inline data */
- *command_ptr++ = (mb_width << 16 | mb_y << 8 | mb_x);
- *command_ptr++ = ((encoder_context->quality_level << 24) | (1 << 16) | transform_8x8_mode_flag | (mb_intra_ub << 8));
- /* qp occupies one byte */
- if (vme_context->roi_enabled) {
- qp_index = mb_y * mb_width + mb_x;
- qp_mb = *(vme_context->qp_per_mb + qp_index);
- } else
- qp_mb = qp;
- *command_ptr++ = qp_mb;
-
- i += 1;
- }
- }
-
- *command_ptr++ = 0;
- *command_ptr++ = MI_BATCH_BUFFER_END;
-
- dri_bo_unmap(vme_context->vme_batchbuffer.bo);
-}
-
-static void gen75_vme_media_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- i965_gpe_context_init(ctx, &vme_context->gpe_context);
-
- /* VME output buffer */
- dri_bo_unreference(vme_context->vme_output.bo);
- vme_context->vme_output.bo = NULL;
-
- dri_bo_unreference(vme_context->vme_batchbuffer.bo);
- vme_context->vme_batchbuffer.bo = NULL;
-
- /* VME state */
- dri_bo_unreference(vme_context->vme_state.bo);
- vme_context->vme_state.bo = NULL;
-}
-
-static void gen75_vme_pipeline_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
- int kernel_shader;
- bool allow_hwscore = true;
- int s;
- unsigned int is_low_quality = (encoder_context->quality_level == ENCODER_LOW_QUALITY);
-
- if (is_low_quality)
- allow_hwscore = false;
- else {
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[s]->buffer;
- if ((pSliceParameter->macroblock_address % width_in_mbs)) {
- allow_hwscore = false;
- break;
- }
- }
- }
-
- if ((pSliceParameter->slice_type == SLICE_TYPE_I) ||
- (pSliceParameter->slice_type == SLICE_TYPE_SI)) {
- kernel_shader = VME_INTRA_SHADER;
- } else if ((pSliceParameter->slice_type == SLICE_TYPE_P) ||
- (pSliceParameter->slice_type == SLICE_TYPE_SP)) {
- kernel_shader = VME_INTER_SHADER;
- } else {
- kernel_shader = VME_BINTER_SHADER;
- if (!allow_hwscore)
- kernel_shader = VME_INTER_SHADER;
- }
- if (allow_hwscore)
- gen7_vme_walker_fill_vme_batchbuffer(ctx,
- encode_state,
- width_in_mbs, height_in_mbs,
- kernel_shader,
- pPicParameter->pic_fields.bits.transform_8x8_mode_flag,
- encoder_context);
- else
- gen75_vme_fill_vme_batchbuffer(ctx,
- encode_state,
- width_in_mbs, height_in_mbs,
- kernel_shader,
- pPicParameter->pic_fields.bits.transform_8x8_mode_flag,
- encoder_context);
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- gen6_gpe_pipeline_setup(ctx, &vme_context->gpe_context, batch);
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8));
- OUT_RELOC(batch,
- vme_context->vme_batchbuffer.bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- ADVANCE_BATCH(batch);
-
- intel_batchbuffer_end_atomic(batch);
-}
-
-static VAStatus gen75_vme_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int is_intra = pSliceParameter->slice_type == SLICE_TYPE_I;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- if (!vme_context->h264_level ||
- (vme_context->h264_level != pSequenceParameter->level_idc)) {
- vme_context->h264_level = pSequenceParameter->level_idc;
- }
-
- intel_vme_update_mbmv_cost(ctx, encode_state, encoder_context);
- intel_h264_initialize_mbmv_cost(ctx, encode_state, encoder_context);
- intel_h264_enc_roi_config(ctx, encode_state, encoder_context);
-
- /*Setup all the memory object*/
- gen75_vme_surface_setup(ctx, encode_state, is_intra, encoder_context);
- gen75_vme_interface_setup(ctx, encode_state, encoder_context);
- //gen75_vme_vme_state_setup(ctx, encode_state, is_intra, encoder_context);
- gen75_vme_constant_setup(ctx, encode_state, encoder_context, (pSliceParameter->slice_type == SLICE_TYPE_B) ? 2 : 1);
-
- /*Programing media pipeline*/
- gen75_vme_pipeline_programing(ctx, encode_state, encoder_context);
-
- return vaStatus;
-}
-
-static VAStatus gen75_vme_run(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- intel_batchbuffer_flush(batch);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus gen75_vme_stop(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen75_vme_pipeline(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- gen75_vme_media_init(ctx, encoder_context);
- gen75_vme_prepare(ctx, encode_state, encoder_context);
- gen75_vme_run(ctx, encode_state, encoder_context);
- gen75_vme_stop(ctx, encode_state, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen75_vme_mpeg2_output_buffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncSequenceParameterBufferMPEG2 *seq_param = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = ALIGN(seq_param->picture_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->picture_height, 16) / 16;
-
- vme_context->vme_output.num_blocks = width_in_mbs * height_in_mbs;
- vme_context->vme_output.pitch = 16; /* in bytes, always 16 */
-
- if (is_intra)
- vme_context->vme_output.size_block = INTRA_VME_OUTPUT_IN_BYTES * 2;
- else
- vme_context->vme_output.size_block = INTRA_VME_OUTPUT_IN_BYTES * 24;
- /*
- * Inter MV . 32-byte Intra search + 16 IME info + 128 IME MV + 32 IME Ref
- * + 16 FBR Info + 128 FBR MV + 32 FBR Ref.
- * 16 * (2 + 2 * (1 + 8 + 2))= 16 * 24.
- */
-
- vme_context->vme_output.bo = dri_bo_alloc(i965->intel.bufmgr,
- "VME output buffer",
- vme_context->vme_output.num_blocks * vme_context->vme_output.size_block,
- 0x1000);
- assert(vme_context->vme_output.bo);
- vme_context->vme_buffer_suface_setup(ctx,
- &vme_context->gpe_context,
- &vme_context->vme_output,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index));
-}
-
-static void
-gen75_vme_mpeg2_output_vme_batchbuffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context)
-
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncSequenceParameterBufferMPEG2 *seq_param = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = ALIGN(seq_param->picture_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->picture_height, 16) / 16;
-
- vme_context->vme_batchbuffer.num_blocks = width_in_mbs * height_in_mbs + 1;
- vme_context->vme_batchbuffer.size_block = 64; /* 4 OWORDs */
- vme_context->vme_batchbuffer.pitch = 16;
- vme_context->vme_batchbuffer.bo = dri_bo_alloc(i965->intel.bufmgr,
- "VME batchbuffer",
- vme_context->vme_batchbuffer.num_blocks * vme_context->vme_batchbuffer.size_block,
- 0x1000);
- vme_context->vme_buffer_suface_setup(ctx,
- &vme_context->gpe_context,
- &vme_context->vme_batchbuffer,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index));
-}
-
-static VAStatus
-gen75_vme_mpeg2_surface_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct object_surface *obj_surface;
-
- /*Setup surfaces state*/
- /* current picture for encoding */
- obj_surface = encode_state->input_yuv_object;
- gen75_vme_source_surface_state(ctx, 0, obj_surface, encoder_context);
- gen75_vme_media_source_surface_state(ctx, 4, obj_surface, encoder_context);
- gen75_vme_media_chroma_source_surface_state(ctx, 6, obj_surface, encoder_context);
-
- if (!is_intra) {
- /* reference 0 */
- obj_surface = encode_state->reference_objects[0];
- if (obj_surface->bo != NULL)
- gen75_vme_source_surface_state(ctx, 1, obj_surface, encoder_context);
-
- /* reference 1 */
- obj_surface = encode_state->reference_objects[1];
- if (obj_surface && obj_surface->bo != NULL)
- gen75_vme_source_surface_state(ctx, 2, obj_surface, encoder_context);
- }
-
- /* VME output */
- gen75_vme_mpeg2_output_buffer_setup(ctx, encode_state, 3, is_intra, encoder_context);
- gen75_vme_mpeg2_output_vme_batchbuffer_setup(ctx, encode_state, 5, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen75_vme_mpeg2_fill_vme_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- int mb_width, int mb_height,
- int kernel,
- int transform_8x8_mode_flag,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- int mb_x = 0, mb_y = 0;
- int i, s, j;
- unsigned int *command_ptr;
-
-
- dri_bo_map(vme_context->vme_batchbuffer.bo, 1);
- command_ptr = vme_context->vme_batchbuffer.bo->virtual;
-
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- VAEncSliceParameterBufferMPEG2 *slice_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[s]->buffer;
-
- for (j = 0; j < encode_state->slice_params_ext[s]->num_elements; j++) {
- int slice_mb_begin = slice_param->macroblock_address;
- int slice_mb_number = slice_param->num_macroblocks;
- unsigned int mb_intra_ub;
- int slice_mb_x = slice_param->macroblock_address % mb_width;
-
- for (i = 0; i < slice_mb_number;) {
- int mb_count = i + slice_mb_begin;
-
- mb_x = mb_count % mb_width;
- mb_y = mb_count / mb_width;
- mb_intra_ub = 0;
-
- if (mb_x != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- }
-
- if (mb_y != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
-
- if (mb_x != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
-
- if (mb_x != (mb_width -1))
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- }
-
- if (i < mb_width) {
- if (i == 0)
- mb_intra_ub &= ~(INTRA_PRED_AVAIL_FLAG_AE);
-
- mb_intra_ub &= ~(INTRA_PRED_AVAIL_FLAG_BCD_MASK);
-
- if ((i == (mb_width - 1)) && slice_mb_x) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- }
- }
-
- if ((i == mb_width) && slice_mb_x) {
- mb_intra_ub &= ~(INTRA_PRED_AVAIL_FLAG_D);
- }
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (8 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
-
- /*inline data */
- *command_ptr++ = (mb_width << 16 | mb_y << 8 | mb_x);
- *command_ptr++ = ( (1 << 16) | transform_8x8_mode_flag | (mb_intra_ub << 8));
-
- i += 1;
- }
-
- slice_param++;
- }
- }
-
- *command_ptr++ = 0;
- *command_ptr++ = MI_BATCH_BUFFER_END;
-
- dri_bo_unmap(vme_context->vme_batchbuffer.bo);
-}
-
-static void
-gen75_vme_mpeg2_pipeline_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- VAEncPictureParameterBufferMPEG2 *pic_param = NULL;
- VAEncSequenceParameterBufferMPEG2 *seq_param = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = ALIGN(seq_param->picture_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->picture_height, 16) / 16;
- bool allow_hwscore = true;
- int s;
- int kernel_shader;
-
- pic_param = (VAEncPictureParameterBufferMPEG2 *)encode_state->pic_param_ext->buffer;
-
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- int j;
- VAEncSliceParameterBufferMPEG2 *slice_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[s]->buffer;
-
- for (j = 0; j < encode_state->slice_params_ext[s]->num_elements; j++) {
- if (slice_param->macroblock_address % width_in_mbs) {
- allow_hwscore = false;
- break;
- }
- }
- }
-
- pic_param = (VAEncPictureParameterBufferMPEG2 *)encode_state->pic_param_ext->buffer;
- if (pic_param->picture_type == VAEncPictureTypeIntra) {
- allow_hwscore = false;
- kernel_shader = VME_INTRA_SHADER;
- } else {
- kernel_shader = VME_INTER_SHADER;
- }
-
- if (allow_hwscore)
- gen7_vme_mpeg2_walker_fill_vme_batchbuffer(ctx,
- encode_state,
- width_in_mbs, height_in_mbs,
- kernel_shader,
- encoder_context);
- else
- gen75_vme_mpeg2_fill_vme_batchbuffer(ctx,
- encode_state,
- width_in_mbs, height_in_mbs,
- kernel_shader,
- 0,
- encoder_context);
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- gen6_gpe_pipeline_setup(ctx, &vme_context->gpe_context, batch);
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8));
- OUT_RELOC(batch,
- vme_context->vme_batchbuffer.bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- ADVANCE_BATCH(batch);
-
- intel_batchbuffer_end_atomic(batch);
-}
-
-static VAStatus
-gen75_vme_mpeg2_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- VAEncSliceParameterBufferMPEG2 *slice_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[0]->buffer;
-
- VAEncSequenceParameterBufferMPEG2 *seq_param = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- if ((!vme_context->mpeg2_level) ||
- (vme_context->mpeg2_level != (seq_param->sequence_extension.bits.profile_and_level_indication & MPEG2_LEVEL_MASK))) {
- vme_context->mpeg2_level = seq_param->sequence_extension.bits.profile_and_level_indication & MPEG2_LEVEL_MASK;
- }
-
- /*Setup all the memory object*/
- gen75_vme_mpeg2_surface_setup(ctx, encode_state, slice_param->is_intra_slice, encoder_context);
- gen75_vme_interface_setup(ctx, encode_state, encoder_context);
- gen75_vme_vme_state_setup(ctx, encode_state, slice_param->is_intra_slice, encoder_context);
- intel_vme_mpeg2_state_setup(ctx, encode_state, encoder_context);
- gen75_vme_constant_setup(ctx, encode_state, encoder_context, 1);
-
- /*Programing media pipeline*/
- gen75_vme_mpeg2_pipeline_programing(ctx, encode_state, slice_param->is_intra_slice, encoder_context);
-
- return vaStatus;
-}
-
-static VAStatus
-gen75_vme_mpeg2_pipeline(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- gen75_vme_media_init(ctx, encoder_context);
- gen75_vme_mpeg2_prepare(ctx, encode_state, encoder_context);
- gen75_vme_run(ctx, encode_state, encoder_context);
- gen75_vme_stop(ctx, encode_state, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen75_vme_context_destroy(void *context)
-{
- struct gen6_vme_context *vme_context = context;
-
- i965_gpe_context_destroy(&vme_context->gpe_context);
-
- dri_bo_unreference(vme_context->vme_output.bo);
- vme_context->vme_output.bo = NULL;
-
- dri_bo_unreference(vme_context->vme_state.bo);
- vme_context->vme_state.bo = NULL;
-
- dri_bo_unreference(vme_context->vme_batchbuffer.bo);
- vme_context->vme_batchbuffer.bo = NULL;
-
- free(vme_context->vme_state_message);
- vme_context->vme_state_message = NULL;
-
- dri_bo_unreference(vme_context->i_qp_cost_table);
- vme_context->i_qp_cost_table = NULL;
-
- dri_bo_unreference(vme_context->p_qp_cost_table);
- vme_context->p_qp_cost_table = NULL;
-
- dri_bo_unreference(vme_context->b_qp_cost_table);
- vme_context->b_qp_cost_table = NULL;
-
- free(vme_context->qp_per_mb);
- vme_context->qp_per_mb = NULL;
-
- free(vme_context);
-}
-
-Bool gen75_vme_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = calloc(1, sizeof(struct gen6_vme_context));
- struct i965_kernel *vme_kernel_list = NULL;
- int i965_kernel_num;
-
- switch (encoder_context->codec) {
- case CODEC_H264:
- case CODEC_H264_MVC:
- vme_kernel_list = gen75_vme_kernels;
- encoder_context->vme_pipeline = gen75_vme_pipeline;
- i965_kernel_num = sizeof(gen75_vme_kernels) / sizeof(struct i965_kernel);
- break;
-
- case CODEC_MPEG2:
- vme_kernel_list = gen75_vme_mpeg2_kernels;
- encoder_context->vme_pipeline = gen75_vme_mpeg2_pipeline;
- i965_kernel_num = sizeof(gen75_vme_mpeg2_kernels) / sizeof(struct i965_kernel);
-
- break;
-
- default:
- /* never get here */
- assert(0);
-
- break;
- }
-
- assert(vme_context);
- vme_context->vme_kernel_sum = i965_kernel_num;
- vme_context->gpe_context.surface_state_binding_table.length = (SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_MEDIA_SURFACES_GEN6;
-
- vme_context->gpe_context.idrt.max_entries = MAX_INTERFACE_DESC_GEN6;
- vme_context->gpe_context.idrt.entry_size = sizeof(struct gen6_interface_descriptor_data);
-
- vme_context->gpe_context.curbe.length = CURBE_TOTAL_DATA_LENGTH;
-
- vme_context->gpe_context.vfe_state.max_num_threads = 60 - 1;
- vme_context->gpe_context.vfe_state.num_urb_entries = 64;
- vme_context->gpe_context.vfe_state.gpgpu_mode = 0;
- vme_context->gpe_context.vfe_state.urb_entry_size = 16;
- vme_context->gpe_context.vfe_state.curbe_allocation_size = CURBE_ALLOCATION_SIZE - 1;
-
- gen7_vme_scoreboard_init(ctx, vme_context);
-
- i965_gpe_load_kernels(ctx,
- &vme_context->gpe_context,
- vme_kernel_list,
- i965_kernel_num);
- vme_context->vme_surface2_setup = gen7_gpe_surface2_setup;
- vme_context->vme_media_rw_surface_setup = gen7_gpe_media_rw_surface_setup;
- vme_context->vme_buffer_suface_setup = gen7_gpe_buffer_suface_setup;
- vme_context->vme_media_chroma_surface_setup = gen75_gpe_media_chroma_surface_setup;
-
- encoder_context->vme_context = vme_context;
- encoder_context->vme_context_destroy = gen75_vme_context_destroy;
-
- vme_context->vme_state_message = malloc(VME_MSG_LENGTH * sizeof(int));
-
- return True;
-}
diff --git a/src/gen75_vpp_gpe.c b/src/gen75_vpp_gpe.c
deleted file mode 100644
index 6f5e2ef..0000000
--- a/src/gen75_vpp_gpe.c
+++ /dev/null
@@ -1,900 +0,0 @@
-/*
- * Copyright © 2011 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Li Xiaowei <xiaowei.a.li@intel.com>
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-
-#include "i965_structs.h"
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "gen75_vpp_gpe.h"
-
-#define MAX_INTERFACE_DESC_GEN6 MAX_GPE_KERNELS
-#define MAX_MEDIA_SURFACES_GEN6 34
-
-#define SURFACE_STATE_OFFSET_GEN7(index) (SURFACE_STATE_PADDED_SIZE_GEN7 * (index))
-#define BINDING_TABLE_OFFSET_GEN7(index) (SURFACE_STATE_OFFSET_GEN7(MAX_MEDIA_SURFACES_GEN6) + sizeof(unsigned int) * (index))
-
-#define SURFACE_STATE_OFFSET_GEN8(index) (SURFACE_STATE_PADDED_SIZE_GEN8 * (index))
-#define BINDING_TABLE_OFFSET_GEN8(index) (SURFACE_STATE_OFFSET_GEN8(MAX_MEDIA_SURFACES_GEN6) + sizeof(unsigned int) * (index))
-
-#define CURBE_ALLOCATION_SIZE 37
-#define CURBE_TOTAL_DATA_LENGTH (4 * 32)
-#define CURBE_URB_ENTRY_LENGTH 4
-
-/* Shaders information for sharpening */
-static const unsigned int gen75_gpe_sharpening_h_blur[][4] = {
- #include "shaders/post_processing/gen75/sharpening_h_blur.g75b"
-};
-static const unsigned int gen75_gpe_sharpening_v_blur[][4] = {
- #include "shaders/post_processing/gen75/sharpening_v_blur.g75b"
-};
-static const unsigned int gen75_gpe_sharpening_unmask[][4] = {
- #include "shaders/post_processing/gen75/sharpening_unmask.g75b"
-};
-static struct i965_kernel gen75_vpp_sharpening_kernels[] = {
- {
- "vpp: sharpening(horizontal blur)",
- VPP_GPE_SHARPENING,
- gen75_gpe_sharpening_h_blur,
- sizeof(gen75_gpe_sharpening_h_blur),
- NULL
- },
- {
- "vpp: sharpening(vertical blur)",
- VPP_GPE_SHARPENING,
- gen75_gpe_sharpening_v_blur,
- sizeof(gen75_gpe_sharpening_v_blur),
- NULL
- },
- {
- "vpp: sharpening(unmask)",
- VPP_GPE_SHARPENING,
- gen75_gpe_sharpening_unmask,
- sizeof(gen75_gpe_sharpening_unmask),
- NULL
- },
-};
-
-/* sharpening kernels for Broadwell */
-static const unsigned int gen8_gpe_sharpening_h_blur[][4] = {
- #include "shaders/post_processing/gen8/sharpening_h_blur.g8b"
-};
-static const unsigned int gen8_gpe_sharpening_v_blur[][4] = {
- #include "shaders/post_processing/gen8/sharpening_v_blur.g8b"
-};
-static const unsigned int gen8_gpe_sharpening_unmask[][4] = {
- #include "shaders/post_processing/gen8/sharpening_unmask.g8b"
-};
-
-static struct i965_kernel gen8_vpp_sharpening_kernels[] = {
- {
- "vpp: sharpening(horizontal blur)",
- VPP_GPE_SHARPENING,
- gen8_gpe_sharpening_h_blur,
- sizeof(gen8_gpe_sharpening_h_blur),
- NULL
- },
- {
- "vpp: sharpening(vertical blur)",
- VPP_GPE_SHARPENING,
- gen8_gpe_sharpening_v_blur,
- sizeof(gen8_gpe_sharpening_v_blur),
- NULL
- },
- {
- "vpp: sharpening(unmask)",
- VPP_GPE_SHARPENING,
- gen8_gpe_sharpening_unmask,
- sizeof(gen8_gpe_sharpening_unmask),
- NULL
- },
-};
-
-static VAStatus
-gen75_gpe_process_surfaces_setup(VADriverContextP ctx,
- struct vpp_gpe_context *vpp_gpe_ctx)
-{
- struct object_surface *obj_surface;
- unsigned int i = 0;
- unsigned char input_surface_sum = (1 + vpp_gpe_ctx->forward_surf_sum +
- vpp_gpe_ctx->backward_surf_sum) * 2;
-
- /* Binding input NV12 surfaces (Luma + Chroma)*/
- for( i = 0; i < input_surface_sum; i += 2){
- obj_surface = vpp_gpe_ctx->surface_input_object[i/2];
- assert(obj_surface);
- gen7_gpe_media_rw_surface_setup(ctx,
- &vpp_gpe_ctx->gpe_ctx,
- obj_surface,
- BINDING_TABLE_OFFSET_GEN7(i),
- SURFACE_STATE_OFFSET_GEN7(i),
- 0);
-
- gen75_gpe_media_chroma_surface_setup(ctx,
- &vpp_gpe_ctx->gpe_ctx,
- obj_surface,
- BINDING_TABLE_OFFSET_GEN7(i + 1),
- SURFACE_STATE_OFFSET_GEN7(i + 1),
- 0);
- }
-
- /* Binding output NV12 surface(Luma + Chroma) */
- obj_surface = vpp_gpe_ctx->surface_output_object;
- assert(obj_surface);
- gen7_gpe_media_rw_surface_setup(ctx,
- &vpp_gpe_ctx->gpe_ctx,
- obj_surface,
- BINDING_TABLE_OFFSET_GEN7(input_surface_sum),
- SURFACE_STATE_OFFSET_GEN7(input_surface_sum),
- 1);
- gen75_gpe_media_chroma_surface_setup(ctx,
- &vpp_gpe_ctx->gpe_ctx,
- obj_surface,
- BINDING_TABLE_OFFSET_GEN7(input_surface_sum + 1),
- SURFACE_STATE_OFFSET_GEN7(input_surface_sum + 1),
- 1);
- /* Bind kernel return buffer surface */
- gen7_gpe_buffer_suface_setup(ctx,
- &vpp_gpe_ctx->gpe_ctx,
- &vpp_gpe_ctx->vpp_kernel_return,
- BINDING_TABLE_OFFSET_GEN7((input_surface_sum + 2)),
- SURFACE_STATE_OFFSET_GEN7(input_surface_sum + 2));
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen75_gpe_process_interface_setup(VADriverContextP ctx,
- struct vpp_gpe_context *vpp_gpe_ctx)
-{
- struct gen6_interface_descriptor_data *desc;
- dri_bo *bo = vpp_gpe_ctx->gpe_ctx.idrt.bo;
- int i;
-
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- desc = bo->virtual;
-
- /*Setup the descritor table*/
- for(i = 0; i < vpp_gpe_ctx->sub_shader_sum; i++){
- struct i965_kernel *kernel = &vpp_gpe_ctx->gpe_ctx.kernels[i];
- assert(sizeof(*desc) == 32);
- memset(desc, 0, sizeof(*desc));
- desc->desc0.kernel_start_pointer = (kernel->bo->offset >> 6);
- desc->desc2.sampler_count = 0; /* FIXME: */
- desc->desc2.sampler_state_pointer = 0;
- desc->desc3.binding_table_entry_count = 6; /* FIXME: */
- desc->desc3.binding_table_pointer = (BINDING_TABLE_OFFSET_GEN7(0) >> 5);
- desc->desc4.constant_urb_entry_read_offset = 0;
- desc->desc4.constant_urb_entry_read_length = 0;
-
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0,
- i* sizeof(*desc) + offsetof(struct gen6_interface_descriptor_data, desc0),
- kernel->bo);
- desc++;
- }
-
- dri_bo_unmap(bo);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen75_gpe_process_parameters_fill(VADriverContextP ctx,
- struct vpp_gpe_context *vpp_gpe_ctx)
-{
- unsigned int *command_ptr;
- unsigned int i, size = vpp_gpe_ctx->thread_param_size;
- unsigned char* position = NULL;
-
- /* Thread inline data setting*/
- dri_bo_map(vpp_gpe_ctx->vpp_batchbuffer.bo, 1);
- command_ptr = vpp_gpe_ctx->vpp_batchbuffer.bo->virtual;
-
- for(i = 0; i < vpp_gpe_ctx->thread_num; i ++)
- {
- *command_ptr++ = (CMD_MEDIA_OBJECT | (size/sizeof(int) + 6 - 2));
- *command_ptr++ = vpp_gpe_ctx->sub_shader_index;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
-
- /* copy thread inline data */
- position =(unsigned char*)(vpp_gpe_ctx->thread_param + size * i);
- memcpy(command_ptr, position, size);
- command_ptr += size/sizeof(int);
- }
-
- *command_ptr++ = 0;
- *command_ptr++ = MI_BATCH_BUFFER_END;
-
- dri_bo_unmap(vpp_gpe_ctx->vpp_batchbuffer.bo);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen75_gpe_process_pipeline_setup(VADriverContextP ctx,
- struct vpp_gpe_context *vpp_gpe_ctx)
-{
- intel_batchbuffer_start_atomic(vpp_gpe_ctx->batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(vpp_gpe_ctx->batch);
-
- gen6_gpe_pipeline_setup(ctx, &vpp_gpe_ctx->gpe_ctx, vpp_gpe_ctx->batch);
-
- gen75_gpe_process_parameters_fill(ctx, vpp_gpe_ctx);
-
- BEGIN_BATCH(vpp_gpe_ctx->batch, 2);
- OUT_BATCH(vpp_gpe_ctx->batch, MI_BATCH_BUFFER_START | (1 << 8));
- OUT_RELOC(vpp_gpe_ctx->batch,
- vpp_gpe_ctx->vpp_batchbuffer.bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- ADVANCE_BATCH(vpp_gpe_ctx->batch);
-
- intel_batchbuffer_end_atomic(vpp_gpe_ctx->batch);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen75_gpe_process_init(VADriverContextP ctx,
- struct vpp_gpe_context *vpp_gpe_ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- dri_bo *bo;
-
- unsigned int batch_buf_size = vpp_gpe_ctx->thread_num *
- (vpp_gpe_ctx->thread_param_size + 6 * sizeof(int)) + 16;
-
- vpp_gpe_ctx->vpp_kernel_return.num_blocks = vpp_gpe_ctx->thread_num;
- vpp_gpe_ctx->vpp_kernel_return.size_block = 16;
- vpp_gpe_ctx->vpp_kernel_return.pitch = 1;
- unsigned int kernel_return_size = vpp_gpe_ctx->vpp_kernel_return.num_blocks
- * vpp_gpe_ctx->vpp_kernel_return.size_block;
-
- dri_bo_unreference(vpp_gpe_ctx->vpp_batchbuffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "vpp batch buffer",
- batch_buf_size, 0x1000);
- vpp_gpe_ctx->vpp_batchbuffer.bo = bo;
-
- dri_bo_unreference(vpp_gpe_ctx->vpp_kernel_return.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "vpp kernel return buffer",
- kernel_return_size, 0x1000);
- vpp_gpe_ctx->vpp_kernel_return.bo = bo;
-
- vpp_gpe_ctx->gpe_context_init(ctx, &vpp_gpe_ctx->gpe_ctx);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen75_gpe_process_prepare(VADriverContextP ctx,
- struct vpp_gpe_context *vpp_gpe_ctx)
-{
- /*Setup all the memory object*/
- gen75_gpe_process_surfaces_setup(ctx, vpp_gpe_ctx);
- gen75_gpe_process_interface_setup(ctx, vpp_gpe_ctx);
- //gen75_gpe_process_constant_setup(ctx, vpp_gpe_ctx);
-
- /*Programing media pipeline*/
- gen75_gpe_process_pipeline_setup(ctx, vpp_gpe_ctx);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen75_gpe_process_run(VADriverContextP ctx,
- struct vpp_gpe_context *vpp_gpe_ctx)
-{
- intel_batchbuffer_flush(vpp_gpe_ctx->batch);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen75_gpe_process(VADriverContextP ctx,
- struct vpp_gpe_context * vpp_gpe_ctx)
-{
- VAStatus va_status = VA_STATUS_SUCCESS;
-
- va_status = gen75_gpe_process_init(ctx, vpp_gpe_ctx);
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
-
- va_status = gen75_gpe_process_prepare(ctx, vpp_gpe_ctx);
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
-
- va_status = gen75_gpe_process_run(ctx, vpp_gpe_ctx);
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen8_gpe_process_surfaces_setup(VADriverContextP ctx,
- struct vpp_gpe_context *vpp_gpe_ctx)
-{
- struct object_surface *obj_surface;
- unsigned int i = 0;
- unsigned char input_surface_sum = (1 + vpp_gpe_ctx->forward_surf_sum +
- vpp_gpe_ctx->backward_surf_sum) * 2;
-
- /* Binding input NV12 surfaces (Luma + Chroma)*/
- for( i = 0; i < input_surface_sum; i += 2){
- obj_surface = vpp_gpe_ctx->surface_input_object[i/2];
- assert(obj_surface);
- gen8_gpe_media_rw_surface_setup(ctx,
- &vpp_gpe_ctx->gpe_ctx,
- obj_surface,
- BINDING_TABLE_OFFSET_GEN8(i),
- SURFACE_STATE_OFFSET_GEN8(i),
- 0);
-
- gen8_gpe_media_chroma_surface_setup(ctx,
- &vpp_gpe_ctx->gpe_ctx,
- obj_surface,
- BINDING_TABLE_OFFSET_GEN8(i + 1),
- SURFACE_STATE_OFFSET_GEN8(i + 1),
- 0);
- }
-
- /* Binding output NV12 surface(Luma + Chroma) */
- obj_surface = vpp_gpe_ctx->surface_output_object;
- assert(obj_surface);
- gen8_gpe_media_rw_surface_setup(ctx,
- &vpp_gpe_ctx->gpe_ctx,
- obj_surface,
- BINDING_TABLE_OFFSET_GEN8(input_surface_sum),
- SURFACE_STATE_OFFSET_GEN8(input_surface_sum),
- 1);
- gen8_gpe_media_chroma_surface_setup(ctx,
- &vpp_gpe_ctx->gpe_ctx,
- obj_surface,
- BINDING_TABLE_OFFSET_GEN8(input_surface_sum + 1),
- SURFACE_STATE_OFFSET_GEN8(input_surface_sum + 1),
- 1);
- /* Bind kernel return buffer surface */
- gen7_gpe_buffer_suface_setup(ctx,
- &vpp_gpe_ctx->gpe_ctx,
- &vpp_gpe_ctx->vpp_kernel_return,
- BINDING_TABLE_OFFSET_GEN8((input_surface_sum + 2)),
- SURFACE_STATE_OFFSET_GEN8(input_surface_sum + 2));
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen8_gpe_process_interface_setup(VADriverContextP ctx,
- struct vpp_gpe_context *vpp_gpe_ctx)
-{
- struct gen8_interface_descriptor_data *desc;
- dri_bo *bo = vpp_gpe_ctx->gpe_ctx.idrt.bo;
- int i;
-
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- desc = (struct gen8_interface_descriptor_data *)(bo->virtual
- + vpp_gpe_ctx->gpe_ctx.idrt.offset);
-
- /*Setup the descritor table*/
- for (i = 0; i < vpp_gpe_ctx->sub_shader_sum; i++){
- struct i965_kernel *kernel;
- kernel = &vpp_gpe_ctx->gpe_ctx.kernels[i];
- assert(sizeof(*desc) == 32);
- /*Setup the descritor table*/
- memset(desc, 0, sizeof(*desc));
- desc->desc0.kernel_start_pointer = kernel->kernel_offset >> 6;
- desc->desc3.sampler_count = 0; /* FIXME: */
- desc->desc3.sampler_state_pointer = 0;
- desc->desc4.binding_table_entry_count = 6; /* FIXME: */
- desc->desc4.binding_table_pointer = (BINDING_TABLE_OFFSET_GEN8(0) >> 5);
- desc->desc5.constant_urb_entry_read_offset = 0;
- desc->desc5.constant_urb_entry_read_length = 0;
-
- desc++;
- }
-
- dri_bo_unmap(bo);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen8_gpe_process_parameters_fill(VADriverContextP ctx,
- struct vpp_gpe_context *vpp_gpe_ctx)
-{
- unsigned int *command_ptr;
- unsigned int i, size = vpp_gpe_ctx->thread_param_size;
- unsigned char* position = NULL;
-
- /* Thread inline data setting*/
- dri_bo_map(vpp_gpe_ctx->vpp_batchbuffer.bo, 1);
- command_ptr = vpp_gpe_ctx->vpp_batchbuffer.bo->virtual;
-
- for(i = 0; i < vpp_gpe_ctx->thread_num; i ++)
- {
- *command_ptr++ = (CMD_MEDIA_OBJECT | (size/sizeof(int) + 6 - 2));
- *command_ptr++ = vpp_gpe_ctx->sub_shader_index;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
-
- /* copy thread inline data */
- position =(unsigned char*)(vpp_gpe_ctx->thread_param + size * i);
- memcpy(command_ptr, position, size);
- command_ptr += size/sizeof(int);
-
- *command_ptr++ = CMD_MEDIA_STATE_FLUSH;
- *command_ptr++ = 0;
- }
-
- *command_ptr++ = 0;
- *command_ptr++ = MI_BATCH_BUFFER_END;
-
- dri_bo_unmap(vpp_gpe_ctx->vpp_batchbuffer.bo);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen8_gpe_process_pipeline_setup(VADriverContextP ctx,
- struct vpp_gpe_context *vpp_gpe_ctx)
-{
- intel_batchbuffer_start_atomic(vpp_gpe_ctx->batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(vpp_gpe_ctx->batch);
-
- gen8_gpe_pipeline_setup(ctx, &vpp_gpe_ctx->gpe_ctx, vpp_gpe_ctx->batch);
-
- gen8_gpe_process_parameters_fill(ctx, vpp_gpe_ctx);
-
- BEGIN_BATCH(vpp_gpe_ctx->batch, 3);
- OUT_BATCH(vpp_gpe_ctx->batch, MI_BATCH_BUFFER_START | (1 << 8) | (1 << 0));
- OUT_RELOC(vpp_gpe_ctx->batch,
- vpp_gpe_ctx->vpp_batchbuffer.bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- OUT_BATCH(vpp_gpe_ctx->batch, 0);
-
- ADVANCE_BATCH(vpp_gpe_ctx->batch);
-
- intel_batchbuffer_end_atomic(vpp_gpe_ctx->batch);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen8_gpe_process_init(VADriverContextP ctx,
- struct vpp_gpe_context *vpp_gpe_ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- dri_bo *bo;
-
- unsigned int batch_buf_size = vpp_gpe_ctx->thread_num *
- (vpp_gpe_ctx->thread_param_size + 6 * sizeof(int)) + 16;
-
- vpp_gpe_ctx->vpp_kernel_return.num_blocks = vpp_gpe_ctx->thread_num;
- vpp_gpe_ctx->vpp_kernel_return.size_block = 16;
- vpp_gpe_ctx->vpp_kernel_return.pitch = 1;
-
- unsigned int kernel_return_size = vpp_gpe_ctx->vpp_kernel_return.num_blocks
- * vpp_gpe_ctx->vpp_kernel_return.size_block;
-
- dri_bo_unreference(vpp_gpe_ctx->vpp_batchbuffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "vpp batch buffer",
- batch_buf_size, 0x1000);
- vpp_gpe_ctx->vpp_batchbuffer.bo = bo;
-
- dri_bo_unreference(vpp_gpe_ctx->vpp_kernel_return.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "vpp kernel return buffer",
- kernel_return_size, 0x1000);
- vpp_gpe_ctx->vpp_kernel_return.bo = bo;
-
- vpp_gpe_ctx->gpe_context_init(ctx, &vpp_gpe_ctx->gpe_ctx);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen8_gpe_process_prepare(VADriverContextP ctx,
- struct vpp_gpe_context *vpp_gpe_ctx)
-{
- /*Setup all the memory object*/
- gen8_gpe_process_surfaces_setup(ctx, vpp_gpe_ctx);
- gen8_gpe_process_interface_setup(ctx, vpp_gpe_ctx);
- //gen8_gpe_process_constant_setup(ctx, vpp_gpe_ctx);
-
- /*Programing media pipeline*/
- gen8_gpe_process_pipeline_setup(ctx, vpp_gpe_ctx);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen8_gpe_process_run(VADriverContextP ctx,
- struct vpp_gpe_context *vpp_gpe_ctx)
-{
- intel_batchbuffer_flush(vpp_gpe_ctx->batch);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen8_gpe_process(VADriverContextP ctx,
- struct vpp_gpe_context * vpp_gpe_ctx)
-{
- VAStatus va_status = VA_STATUS_SUCCESS;
-
- va_status = gen8_gpe_process_init(ctx, vpp_gpe_ctx);
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
-
- va_status = gen8_gpe_process_prepare(ctx, vpp_gpe_ctx);
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
-
- va_status = gen8_gpe_process_run(ctx, vpp_gpe_ctx);
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-vpp_gpe_process(VADriverContextP ctx,
- struct vpp_gpe_context * vpp_gpe_ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- if (IS_HASWELL(i965->intel.device_info))
- return gen75_gpe_process(ctx, vpp_gpe_ctx);
- else if (IS_GEN8(i965->intel.device_info) ||
- IS_GEN9(i965->intel.device_info))
- return gen8_gpe_process(ctx, vpp_gpe_ctx);
-
- return VA_STATUS_ERROR_UNIMPLEMENTED;
-}
-
-static VAStatus
-vpp_gpe_process_sharpening(VADriverContextP ctx,
- struct vpp_gpe_context * vpp_gpe_ctx)
-{
- VAStatus va_status = VA_STATUS_SUCCESS;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *origin_in_obj_surface = vpp_gpe_ctx->surface_input_object[0];
- struct object_surface *origin_out_obj_surface = vpp_gpe_ctx->surface_output_object;
-
- VAProcPipelineParameterBuffer* pipe = vpp_gpe_ctx->pipeline_param;
- VABufferID *filter_ids = (VABufferID*)pipe->filters ;
- struct object_buffer *obj_buf = BUFFER((*(filter_ids + 0)));
-
- assert(obj_buf && obj_buf->buffer_store && obj_buf->buffer_store->buffer);
-
- if (!obj_buf ||
- !obj_buf->buffer_store ||
- !obj_buf->buffer_store->buffer)
- goto error;
-
- VAProcFilterParameterBuffer* filter =
- (VAProcFilterParameterBuffer*)obj_buf-> buffer_store->buffer;
- float sharpening_intensity = filter->value;
-
- ThreadParameterSharpening thr_param;
- unsigned int thr_param_size = sizeof(ThreadParameterSharpening);
- unsigned int i;
- unsigned char * pos;
-
- if(vpp_gpe_ctx->is_first_frame){
- vpp_gpe_ctx->sub_shader_sum = 3;
- struct i965_kernel * vpp_kernels;
- if (IS_HASWELL(i965->intel.device_info))
- vpp_kernels = gen75_vpp_sharpening_kernels;
- else if (IS_GEN8(i965->intel.device_info) ||
- IS_GEN9(i965->intel.device_info)) // TODO: build the sharpening kernel for GEN9
- vpp_kernels = gen8_vpp_sharpening_kernels;
- else
- return VA_STATUS_ERROR_UNIMPLEMENTED;
-
- vpp_gpe_ctx->gpe_load_kernels(ctx,
- &vpp_gpe_ctx->gpe_ctx,
- vpp_kernels,
- vpp_gpe_ctx->sub_shader_sum);
- }
-
- if(vpp_gpe_ctx->surface_tmp == VA_INVALID_ID){
- va_status = i965_CreateSurfaces(ctx,
- vpp_gpe_ctx->in_frame_w,
- vpp_gpe_ctx->in_frame_h,
- VA_RT_FORMAT_YUV420,
- 1,
- &vpp_gpe_ctx->surface_tmp);
- assert(va_status == VA_STATUS_SUCCESS);
-
- struct object_surface * obj_surf = SURFACE(vpp_gpe_ctx->surface_tmp);
- assert(obj_surf);
-
- if (obj_surf) {
- i965_check_alloc_surface_bo(ctx, obj_surf, 1, VA_FOURCC_NV12,
- SUBSAMPLE_YUV420);
- vpp_gpe_ctx->surface_tmp_object = obj_surf;
- }
- }
-
- assert(sharpening_intensity >= 0.0 && sharpening_intensity <= 1.0);
- thr_param.l_amount = (unsigned int)(sharpening_intensity * 128);
- thr_param.d_amount = (unsigned int)(sharpening_intensity * 128);
-
- thr_param.base.pic_width = vpp_gpe_ctx->in_frame_w;
- thr_param.base.pic_height = vpp_gpe_ctx->in_frame_h;
-
- /* Step 1: horizontal blur process */
- vpp_gpe_ctx->forward_surf_sum = 0;
- vpp_gpe_ctx->backward_surf_sum = 0;
-
- vpp_gpe_ctx->thread_num = vpp_gpe_ctx->in_frame_h/16;
- vpp_gpe_ctx->thread_param_size = thr_param_size;
- vpp_gpe_ctx->thread_param = (unsigned char*) malloc(vpp_gpe_ctx->thread_param_size
- *vpp_gpe_ctx->thread_num);
- pos = vpp_gpe_ctx->thread_param;
-
- if (!pos) {
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
- }
-
- for( i = 0 ; i < vpp_gpe_ctx->thread_num; i++){
- thr_param.base.v_pos = 16 * i;
- thr_param.base.h_pos = 0;
- memcpy(pos, &thr_param, thr_param_size);
- pos += thr_param_size;
- }
-
- vpp_gpe_ctx->sub_shader_index = 0;
- va_status = vpp_gpe_process(ctx, vpp_gpe_ctx);
- free(vpp_gpe_ctx->thread_param);
-
- /* Step 2: vertical blur process */
- vpp_gpe_ctx->surface_input_object[0] = vpp_gpe_ctx->surface_output_object;
- vpp_gpe_ctx->surface_output_object = vpp_gpe_ctx->surface_tmp_object;
- vpp_gpe_ctx->forward_surf_sum = 0;
- vpp_gpe_ctx->backward_surf_sum = 0;
-
- vpp_gpe_ctx->thread_num = vpp_gpe_ctx->in_frame_w/16;
- vpp_gpe_ctx->thread_param_size = thr_param_size;
- vpp_gpe_ctx->thread_param = (unsigned char*) malloc(vpp_gpe_ctx->thread_param_size
- *vpp_gpe_ctx->thread_num);
- pos = vpp_gpe_ctx->thread_param;
-
- if (!pos) {
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
- }
-
- for( i = 0 ; i < vpp_gpe_ctx->thread_num; i++){
- thr_param.base.v_pos = 0;
- thr_param.base.h_pos = 16 * i;
- memcpy(pos, &thr_param, thr_param_size);
- pos += thr_param_size;
- }
-
- vpp_gpe_ctx->sub_shader_index = 1;
- vpp_gpe_process(ctx, vpp_gpe_ctx);
- free(vpp_gpe_ctx->thread_param);
-
- /* Step 3: apply the blur to original surface */
- vpp_gpe_ctx->surface_input_object[0] = origin_in_obj_surface;
- vpp_gpe_ctx->surface_input_object[1] = vpp_gpe_ctx->surface_tmp_object;
- vpp_gpe_ctx->surface_output_object = origin_out_obj_surface;
- vpp_gpe_ctx->forward_surf_sum = 1;
- vpp_gpe_ctx->backward_surf_sum = 0;
-
- vpp_gpe_ctx->thread_num = vpp_gpe_ctx->in_frame_h/4;
- vpp_gpe_ctx->thread_param_size = thr_param_size;
- vpp_gpe_ctx->thread_param = (unsigned char*) malloc(vpp_gpe_ctx->thread_param_size
- *vpp_gpe_ctx->thread_num);
- pos = vpp_gpe_ctx->thread_param;
-
- if (!pos) {
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
- }
-
- for( i = 0 ; i < vpp_gpe_ctx->thread_num; i++){
- thr_param.base.v_pos = 4 * i;
- thr_param.base.h_pos = 0;
- memcpy(pos, &thr_param, thr_param_size);
- pos += thr_param_size;
- }
-
- vpp_gpe_ctx->sub_shader_index = 2;
- va_status = vpp_gpe_process(ctx, vpp_gpe_ctx);
- free(vpp_gpe_ctx->thread_param);
-
- return va_status;
-
-error:
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-}
-
-VAStatus vpp_gpe_process_picture(VADriverContextP ctx,
- struct vpp_gpe_context * vpp_gpe_ctx)
-{
- VAStatus va_status = VA_STATUS_SUCCESS;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VAProcPipelineParameterBuffer* pipe = vpp_gpe_ctx->pipeline_param;
- VAProcFilterParameterBuffer* filter = NULL;
- unsigned int i;
- struct object_surface *obj_surface = NULL;
-
- if (pipe->num_filters && !pipe->filters)
- goto error;
-
- for(i = 0; i < pipe->num_filters; i++){
- struct object_buffer *obj_buf = BUFFER(pipe->filters[i]);
-
- assert(obj_buf && obj_buf->buffer_store && obj_buf->buffer_store->buffer);
-
- if (!obj_buf ||
- !obj_buf->buffer_store ||
- !obj_buf->buffer_store->buffer)
- goto error;
-
- filter = (VAProcFilterParameterBuffer*)obj_buf-> buffer_store->buffer;
- if(filter->type == VAProcFilterSharpening){
- break;
- }
- }
-
- assert(pipe->num_forward_references + pipe->num_backward_references <= 4);
- vpp_gpe_ctx->surface_input_object[0] = vpp_gpe_ctx->surface_pipeline_input_object;
-
- vpp_gpe_ctx->forward_surf_sum = 0;
- vpp_gpe_ctx->backward_surf_sum = 0;
-
- for(i = 0; i < pipe->num_forward_references; i ++)
- {
- obj_surface = SURFACE(pipe->forward_references[i]);
-
- assert(obj_surface);
- vpp_gpe_ctx->surface_input_object[i + 1] = obj_surface;
- vpp_gpe_ctx->forward_surf_sum++;
- }
-
- for(i = 0; i < pipe->num_backward_references; i ++)
- {
- obj_surface = SURFACE(pipe->backward_references[i]);
-
- assert(obj_surface);
- vpp_gpe_ctx->surface_input_object[vpp_gpe_ctx->forward_surf_sum + 1 + i ] = obj_surface;
- vpp_gpe_ctx->backward_surf_sum++;
- }
-
- obj_surface = vpp_gpe_ctx->surface_input_object[0];
- vpp_gpe_ctx->in_frame_w = obj_surface->orig_width;
- vpp_gpe_ctx->in_frame_h = obj_surface->orig_height;
-
- if(filter && filter->type == VAProcFilterSharpening) {
- va_status = vpp_gpe_process_sharpening(ctx, vpp_gpe_ctx);
- } else {
- va_status = VA_STATUS_ERROR_ATTR_NOT_SUPPORTED;
- }
-
- vpp_gpe_ctx->is_first_frame = 0;
-
- return va_status;
-
-error:
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-}
-
-void
-vpp_gpe_context_destroy(VADriverContextP ctx,
- struct vpp_gpe_context *vpp_gpe_ctx)
-{
- dri_bo_unreference(vpp_gpe_ctx->vpp_batchbuffer.bo);
- vpp_gpe_ctx->vpp_batchbuffer.bo = NULL;
-
- dri_bo_unreference(vpp_gpe_ctx->vpp_kernel_return.bo);
- vpp_gpe_ctx->vpp_kernel_return.bo = NULL;
-
- vpp_gpe_ctx->gpe_context_destroy(&vpp_gpe_ctx->gpe_ctx);
-
- if(vpp_gpe_ctx->surface_tmp != VA_INVALID_ID){
- assert(vpp_gpe_ctx->surface_tmp_object != NULL);
- i965_DestroySurfaces(ctx, &vpp_gpe_ctx->surface_tmp, 1);
- vpp_gpe_ctx->surface_tmp = VA_INVALID_ID;
- vpp_gpe_ctx->surface_tmp_object = NULL;
- }
-
- if (vpp_gpe_ctx->batch)
- intel_batchbuffer_free(vpp_gpe_ctx->batch);
-
- free(vpp_gpe_ctx);
-}
-
-struct vpp_gpe_context *
-vpp_gpe_context_init(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct vpp_gpe_context *vpp_gpe_ctx = calloc(1, sizeof(struct vpp_gpe_context));
- assert(vpp_gpe_ctx);
- struct i965_gpe_context *gpe_ctx = &(vpp_gpe_ctx->gpe_ctx);
-
- assert(IS_HASWELL(i965->intel.device_info) ||
- IS_GEN8(i965->intel.device_info) ||
- IS_GEN9(i965->intel.device_info));
-
- vpp_gpe_ctx->surface_tmp = VA_INVALID_ID;
- vpp_gpe_ctx->surface_tmp_object = NULL;
- vpp_gpe_ctx->batch = intel_batchbuffer_new(&i965->intel, I915_EXEC_RENDER, 0);
- vpp_gpe_ctx->is_first_frame = 1;
-
- gpe_ctx->vfe_state.max_num_threads = 60 - 1;
- gpe_ctx->vfe_state.num_urb_entries = 16;
- gpe_ctx->vfe_state.gpgpu_mode = 0;
- gpe_ctx->vfe_state.urb_entry_size = 59 - 1;
- gpe_ctx->vfe_state.curbe_allocation_size = CURBE_ALLOCATION_SIZE - 1;
-
- if (IS_HASWELL(i965->intel.device_info)) {
- vpp_gpe_ctx->gpe_context_init = i965_gpe_context_init;
- vpp_gpe_ctx->gpe_context_destroy = i965_gpe_context_destroy;
- vpp_gpe_ctx->gpe_load_kernels = i965_gpe_load_kernels;
- gpe_ctx->surface_state_binding_table.length =
- (SURFACE_STATE_PADDED_SIZE_GEN7 + sizeof(unsigned int)) * MAX_MEDIA_SURFACES_GEN6;
-
- gpe_ctx->curbe.length = CURBE_TOTAL_DATA_LENGTH;
- gpe_ctx->idrt.max_entries = MAX_INTERFACE_DESC_GEN6;
- gpe_ctx->idrt.entry_size = ALIGN(sizeof(struct gen6_interface_descriptor_data), 64);
-
- } else if (IS_GEN8(i965->intel.device_info) ||
- IS_GEN9(i965->intel.device_info)) {
- vpp_gpe_ctx->gpe_context_init = gen8_gpe_context_init;
- vpp_gpe_ctx->gpe_context_destroy = gen8_gpe_context_destroy;
- vpp_gpe_ctx->gpe_load_kernels = gen8_gpe_load_kernels;
- gpe_ctx->surface_state_binding_table.length =
- (SURFACE_STATE_PADDED_SIZE_GEN8 + sizeof(unsigned int)) * MAX_MEDIA_SURFACES_GEN6;
-
- gpe_ctx->curbe.length = CURBE_TOTAL_DATA_LENGTH;
- gpe_ctx->idrt.entry_size = ALIGN(sizeof(struct gen8_interface_descriptor_data), 64);
- gpe_ctx->idrt.max_entries = MAX_INTERFACE_DESC_GEN6;
- }
-
- return vpp_gpe_ctx;
-}
-
diff --git a/src/gen75_vpp_gpe.h b/src/gen75_vpp_gpe.h
deleted file mode 100644
index 5ffee2c..0000000
--- a/src/gen75_vpp_gpe.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Li Xiaowei <xiaowei.a.li@intel.com>
- *
- */
-
-#ifndef GEN75_VPP_GPE
-#define GEN75_VPP_GPE
-
-#include <drm.h>
-#include <i915_drm.h>
-#include <intel_bufmgr.h>
-#include <va/va_vpp.h>
-#include "i965_gpe_utils.h"
-
-#define MAX_SURF_IN_SUM 5
-
-enum VPP_GPE_TYPE{
- VPP_GPE_SHARPENING,
- VPP_GPE_BLENDING,
- VPP_GPE_SCENE_CHANGE_DETECTION,
- VPP_GPE_FILTER_SUM,
-};
-
-typedef struct _KernelParameterBase{
- unsigned short pic_width;
- unsigned short pic_height;
-}KernelParameterBase;
-
-typedef struct _KernelParameterSharpening{
- KernelParameterBase base;
-}KernelParameterSharpening;
-
-typedef struct _ThreadParameterBase{
- unsigned int pic_width;
- unsigned int pic_height;
- unsigned int v_pos;
- unsigned int h_pos;
-}ThreadParameterBase;
-
-typedef struct _ThreadParameterSharpenig{
- ThreadParameterBase base;
- unsigned int l_amount;
- unsigned int d_amount;
-}ThreadParameterSharpening;
-
-struct vpp_gpe_context{
- struct intel_batchbuffer *batch;
- struct i965_gpe_context gpe_ctx;
- struct i965_buffer_surface vpp_batchbuffer;
- struct i965_buffer_surface vpp_kernel_return;
-
- VAProcPipelineParameterBuffer *pipeline_param;
- enum VPP_GPE_TYPE filter_type;
- unsigned int sub_shader_index;
- unsigned int sub_shader_sum;
-
- unsigned char * kernel_param;
- unsigned int kernel_param_size;
-
- unsigned char * thread_param;
- unsigned int thread_param_size;
- unsigned int thread_num;
-
- struct object_surface *surface_pipeline_input_object;
- struct object_surface *surface_output_object;
- VASurfaceID surface_tmp;
- struct object_surface *surface_tmp_object;
- struct object_surface *surface_input_object[MAX_SURF_IN_SUM];
- unsigned int forward_surf_sum;
- unsigned int backward_surf_sum;
-
- unsigned int in_frame_w;
- unsigned int in_frame_h;
- unsigned int is_first_frame;
-
- void (*gpe_context_init)(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context);
-
- void (*gpe_context_destroy)(struct i965_gpe_context *gpe_context);
-
- void (*gpe_load_kernels)(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct i965_kernel *kernel_list,
- unsigned int num_kernels);
-
-};
-
-struct vpp_gpe_context *
-vpp_gpe_context_init(VADriverContextP ctx);
-
-void
-vpp_gpe_context_destroy(VADriverContextP ctx,
- struct vpp_gpe_context* vpp_context);
-
-VAStatus
-vpp_gpe_process_picture(VADriverContextP ctx,
- struct vpp_gpe_context * vpp_context);
-#endif
diff --git a/src/gen75_vpp_vebox.c b/src/gen75_vpp_vebox.c
deleted file mode 100644
index f6f541a..0000000
--- a/src/gen75_vpp_vebox.c
+++ /dev/null
@@ -1,2481 +0,0 @@
-/*
- * Copyright © 2011 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Li Xiaowei <xiaowei.a.li@intel.com>
- * Li Zhong <zhong.li@intel.com>
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <math.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-#include "i965_defines.h"
-#include "i965_structs.h"
-#include "gen75_vpp_vebox.h"
-#include "intel_media.h"
-
-#include "i965_post_processing.h"
-
-#define PI 3.1415926
-
-extern VAStatus
-i965_MapBuffer(VADriverContextP ctx, VABufferID buf_id, void **);
-
-extern VAStatus
-i965_UnmapBuffer(VADriverContextP ctx, VABufferID buf_id);
-
-extern VAStatus
-i965_DeriveImage(VADriverContextP ctx, VABufferID surface, VAImage *out_image);
-
-extern VAStatus
-i965_DestroyImage(VADriverContextP ctx, VAImageID image);
-
-VAStatus
-vpp_surface_convert(VADriverContextP ctx, struct object_surface *src_obj_surf,
- struct object_surface *dst_obj_surf)
-{
- VAStatus va_status = VA_STATUS_SUCCESS;
-
- assert(src_obj_surf->orig_width == dst_obj_surf->orig_width);
- assert(src_obj_surf->orig_height == dst_obj_surf->orig_height);
-
- VARectangle src_rect, dst_rect;
- src_rect.x = dst_rect.x = 0;
- src_rect.y = dst_rect.y = 0;
- src_rect.width = dst_rect.width = src_obj_surf->orig_width;
- src_rect.height = dst_rect.height = dst_obj_surf->orig_height;
-
- struct i965_surface src_surface, dst_surface;
- src_surface.base = (struct object_base *)src_obj_surf;
- src_surface.type = I965_SURFACE_TYPE_SURFACE;
- src_surface.flags = I965_SURFACE_FLAG_FRAME;
-
- dst_surface.base = (struct object_base *)dst_obj_surf;
- dst_surface.type = I965_SURFACE_TYPE_SURFACE;
- dst_surface.flags = I965_SURFACE_FLAG_FRAME;
-
- va_status = i965_image_processing(ctx,
- &src_surface,
- &src_rect,
- &dst_surface,
- &dst_rect);
- return va_status;
-}
-
-static VAStatus
-vpp_surface_scaling(VADriverContextP ctx, struct object_surface *src_obj_surf,
- struct object_surface *dst_obj_surf, uint32_t flags)
-{
- VAStatus va_status = VA_STATUS_SUCCESS;
-
- assert(src_obj_surf->fourcc == VA_FOURCC_NV12);
- assert(dst_obj_surf->fourcc == VA_FOURCC_NV12);
-
- VARectangle src_rect, dst_rect;
- src_rect.x = 0;
- src_rect.y = 0;
- src_rect.width = src_obj_surf->orig_width;
- src_rect.height = src_obj_surf->orig_height;
-
- dst_rect.x = 0;
- dst_rect.y = 0;
- dst_rect.width = dst_obj_surf->orig_width;
- dst_rect.height = dst_obj_surf->orig_height;
-
- va_status = i965_scaling_processing(ctx,
- src_obj_surf,
- &src_rect,
- dst_obj_surf,
- &dst_rect,
- flags);
-
- return va_status;
-}
-
-static VAStatus
-vpp_sharpness_filtering(VADriverContextP ctx,
- struct intel_vebox_context *proc_ctx)
-{
- VAStatus va_status = VA_STATUS_SUCCESS;
-
- if(proc_ctx->vpp_gpe_ctx == NULL){
- proc_ctx->vpp_gpe_ctx = vpp_gpe_context_init(ctx);
- }
-
- proc_ctx->vpp_gpe_ctx->pipeline_param = proc_ctx->pipeline_param;
- proc_ctx->vpp_gpe_ctx->surface_pipeline_input_object = proc_ctx->frame_store[FRAME_IN_CURRENT].obj_surface;
- proc_ctx->vpp_gpe_ctx->surface_output_object = proc_ctx->frame_store[FRAME_OUT_CURRENT].obj_surface;
-
- va_status = vpp_gpe_process_picture(ctx, proc_ctx->vpp_gpe_ctx);
-
- return va_status;
-}
-
-void hsw_veb_dndi_table(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- unsigned int* p_table ;
- unsigned int progressive_dn = 1;
- unsigned int dndi_top_first = 0;
- unsigned int is_mcdi_enabled = 0;
-
- if (proc_ctx->is_di_enabled) {
- const VAProcFilterParameterBufferDeinterlacing * const deint_params =
- proc_ctx->filter_di;
-
- progressive_dn = 0;
-
- /* If we are in "First Frame" mode, i.e. past frames are not
- available for motion measure, then don't use the TFF flag */
- dndi_top_first = !(deint_params->flags & (proc_ctx->is_first_frame ?
- VA_DEINTERLACING_BOTTOM_FIELD :
- VA_DEINTERLACING_BOTTOM_FIELD_FIRST));
-
- is_mcdi_enabled =
- (deint_params->algorithm == VAProcDeinterlacingMotionCompensated);
- }
-
- /*
- VAProcFilterParameterBufferDeinterlacing *di_param =
- (VAProcFilterParameterBufferDeinterlacing *) proc_ctx->filter_di;
-
- VAProcFilterParameterBuffer * dn_param =
- (VAProcFilterParameterBuffer *) proc_ctx->filter_dn;
- */
- p_table = (unsigned int *)proc_ctx->dndi_state_table.ptr;
-
- if (IS_HASWELL(i965->intel.device_info))
- *p_table ++ = 0; // reserved . w0
-
- *p_table ++ = ( 140 << 24 | // denoise STAD threshold . w1
- 192 << 16 | // dnmh_history_max
- 0 << 12 | // reserved
- 7 << 8 | // dnmh_delta[3:0]
- 38 ); // denoise ASD threshold
-
- *p_table ++ = ( 0 << 30 | // reserved . w2
- 0 << 24 | // temporal diff th
- 0 << 22 | // reserved.
- 0 << 16 | // low temporal diff th
- 2 << 13 | // STMM C2
- 1 << 8 | // denoise moving pixel th
- 38 ); // denoise th for sum of complexity measure
-
- *p_table ++ = ( 0 << 30 | // reserved . w3
- 12<< 24 | // good neighbor th[5:0]
- 9 << 20 | // CAT slope minus 1
- 5 << 16 | // SAD Tight in
- 0 << 14 | // smooth mv th
- 0 << 12 | // reserved
- 1 << 8 | // bne_edge_th[3:0]
- 20 ); // block noise estimate noise th
-
- *p_table ++ = ( 0 << 31 | // STMM blending constant select. w4
- 64 << 24 | // STMM trc1
- 125<< 16 | // STMM trc2
- 0 << 14 | // reserved
- 30 << 8 | // VECM_mul
- 150 ); // maximum STMM
-
- *p_table ++ = ( 118<< 24 | // minumum STMM . W5
- 0 << 22 | // STMM shift down
- 1 << 20 | // STMM shift up
- 5 << 16 | // STMM output shift
- 100 << 8 | // SDI threshold
- 5 ); // SDI delta
-
- *p_table ++ = ( 50 << 24 | // SDI fallback mode 1 T1 constant . W6
- 100 << 16 | // SDI fallback mode 1 T2 constant
- 37 << 8 | // SDI fallback mode 2 constant(angle2x1)
- 175 ); // FMD temporal difference threshold
-
- *p_table ++ = ( 16 << 24 | // FMD #1 vertical difference th . w7
- 100<< 16 | // FMD #2 vertical difference th
- 0 << 14 | // CAT th1
- 2 << 8 | // FMD tear threshold
- is_mcdi_enabled << 7 | // MCDI Enable, use motion compensated deinterlace algorithm
- progressive_dn << 6 | // progressive DN
- 0 << 4 | // reserved
- dndi_top_first << 3 | // DN/DI Top First
- 0 ); // reserved
-
- *p_table ++ = ( 0 << 29 | // reserved . W8
- 32 << 23 | // dnmh_history_init[5:0]
- 10 << 19 | // neighborPixel th
- 0 << 18 | // reserved
- 0 << 16 | // FMD for 2nd field of previous frame
- 25 << 10 | // MC pixel consistency th
- 0 << 8 | // FMD for 1st field for current frame
- 10 << 4 | // SAD THB
- 5 ); // SAD THA
-
- *p_table ++ = ( 0 << 24 | // reserved
- 140<< 16 | // chr_dnmh_stad_th
- 0 << 13 | // reserved
- 1 << 12 | // chrome denoise enable
- 13 << 6 | // chr temp diff th
- 7 ); // chr temp diff low
-
- if (IS_GEN8(i965->intel.device_info) ||
- IS_GEN9(i965->intel.device_info))
- *p_table ++ = 0; // parameters for hot pixel,
-}
-
-//Set default values for STDE
-void set_std_table_default(struct intel_vebox_context *proc_ctx, unsigned int *p_table) {
-
- //DWord 15
- *p_table ++ = ( 0 << 31 | // Reserved
- 0x3F8 << 21 | // SATB1 (10 bits, default 8, optimized value -8)
- 31 << 14 | // SATP3
- 6 << 7 | // SATP2
- 0x7A ); // SATP1 (7 bits, default 6, optimized value -6)
-
- //DWord 16
- *p_table ++ = ( 0 << 31 | // Reserved
- 297 << 20 | // SATS0
- 124 << 10 | // SATB3
- 8 ); // SATB2
-
- //DWord 17
- *p_table ++ = ( 0 << 22 | // Reserved
- 297 << 11 | // SATS2
- 85 ); // SATS1
-
- //DWord 18
- *p_table ++ = ( 14 << 25 | // HUEP3
- 6 << 18 | // HUEP2
- 0x7A << 11 | // HUEP1 (7 bits, default value -6 = 7Ah)
- 256 ); // SATS3
-
- //DWord 19
- *p_table ++ = ( 0 << 30 | // Reserved
- 256 << 20 | // HUEB3
- 8 << 10 | // HUEB2
- 0x3F8 ); // HUEB1 (10 bits, default value 8, optimized value -8)
-
- //DWord 20
- *p_table ++ = ( 0 << 22 | // Reserved
- 85 << 11 | // HUES1
- 384 ); // HUES0
-
- //DWord 21
- *p_table ++ = ( 0 << 22 | // Reserved
- 256 << 11 | // HUES3
- 384 ); // HUES2
-
- //DWord 22
- *p_table ++ = ( 0 << 31 | // Reserved
- 0 << 21 | // SATB1_DARK
- 31 << 14 | // SATP3_DARK
- 31 << 7 | // SATP2_DARK
- 0x7B ); // SATP1_DARK (7 bits, default value -11 = FF5h, optimized value -5)
-
- //DWord 23
- *p_table ++ = ( 0 << 31 | // Reserved
- 305 << 20 | // SATS0_DARK
- 124 << 10 | // SATB3_DARK
- 124 ); // SATB2_DARK
-
- //DWord 24
- *p_table ++ = ( 0 << 22 | // Reserved
- 256 << 11 | // SATS2_DARK
- 220 ); // SATS1_DARK
-
- //DWord 25
- *p_table ++ = ( 14 << 25 | // HUEP3_DARK
- 14 << 18 | // HUEP2_DARK
- 14 << 11 | // HUEP1_DARK
- 256 ); // SATS3_DARK
-
- //DWord 26
- *p_table ++ = ( 0 << 30 | // Reserved
- 56 << 20 | // HUEB3_DARK
- 56 << 10 | // HUEB2_DARK
- 56 ); // HUEB1_DARK
-
- //DWord 27
- *p_table ++ = ( 0 << 22 | // Reserved
- 256 << 11 | // HUES1_DARK
- 256 ); // HUES0_DARK
-
- //DWord 28
- *p_table ++ = ( 0 << 22 | // Reserved
- 256 << 11 | // HUES3_DARK
- 256 ); // HUES2_DARK
-}
-
-//Set values for STDE factor 3
-void set_std_table_3(struct intel_vebox_context *proc_ctx, unsigned int *p_table) {
-
- //DWord 15
- *p_table ++ = ( 0 << 31 | // Reserved
- 1016 << 21 | // SATB1 (10 bits, default 8, optimized value 1016)
- 31 << 14 | // SATP3
- 6 << 7 | // SATP2
- 122 ); // SATP1 (7 bits, default 6, optimized value 122)
-
- //DWord 16
- *p_table ++ = ( 0 << 31 | // Reserved
- 297 << 20 | // SATS0
- 124 << 10 | // SATB3
- 8 ); // SATB2
-
- //DWord 17
- *p_table ++ = ( 0 << 22 | // Reserved
- 297 << 11 | // SATS2
- 85 ); // SATS1
-
- //DWord 18
- *p_table ++ = ( 14 << 25 | // HUEP3
- 6 << 18 | // HUEP2
- 122 << 11 | // HUEP1 (7 bits, default value -6 = 7Ah, optimized 122)
- 256 ); // SATS3
-
- //DWord 19
- *p_table ++ = ( 0 << 30 | // Reserved
- 56 << 20 | // HUEB3 (default 256, optimized 56)
- 8 << 10 | // HUEB2
- 1016 ); // HUEB1 (10 bits, default value 8, optimized value 1016)
-
- //DWord 20
- *p_table ++ = ( 0 << 22 | // Reserved
- 85 << 11 | // HUES1
- 384 ); // HUES0
-
- //DWord 21
- *p_table ++ = ( 0 << 22 | // Reserved
- 256 << 11 | // HUES3
- 384 ); // HUES2
-
- //DWord 22
- *p_table ++ = ( 0 << 31 | // Reserved
- 0 << 21 | // SATB1_DARK
- 31 << 14 | // SATP3_DARK
- 31 << 7 | // SATP2_DARK
- 123 ); // SATP1_DARK (7 bits, default value -11 = FF5h, optimized value 123)
-
- //DWord 23
- *p_table ++ = ( 0 << 31 | // Reserved
- 305 << 20 | // SATS0_DARK
- 124 << 10 | // SATB3_DARK
- 124 ); // SATB2_DARK
-
- //DWord 24
- *p_table ++ = ( 0 << 22 | // Reserved
- 256 << 11 | // SATS2_DARK
- 220 ); // SATS1_DARK
-
- //DWord 25
- *p_table ++ = ( 14 << 25 | // HUEP3_DARK
- 14 << 18 | // HUEP2_DARK
- 14 << 11 | // HUEP1_DARK
- 256 ); // SATS3_DARK
-
- //DWord 26
- *p_table ++ = ( 0 << 30 | // Reserved
- 56 << 20 | // HUEB3_DARK
- 56 << 10 | // HUEB2_DARK
- 56 ); // HUEB1_DARK
-
- //DWord 27
- *p_table ++ = ( 0 << 22 | // Reserved
- 256 << 11 | // HUES1_DARK
- 256 ); // HUES0_DARK
-
- //DWord 28
- *p_table ++ = ( 0 << 22 | // Reserved
- 256 << 11 | // HUES3_DARK
- 256 ); // HUES2_DARK
-}
-
-//Set values for STDE factor 6
-void set_std_table_6(struct intel_vebox_context *proc_ctx, unsigned int *p_table) {
-
- //DWord 15
- *p_table ++ = ( 0 << 31 | // Reserved
- 0 << 21 | // SATB1 (10 bits, default 8, optimized value 0)
- 31 << 14 | // SATP3
- 31 << 7 | // SATP2 (default 6, optimized 31)
- 114 ); // SATP1 (7 bits, default 6, optimized value 114)
-
- //DWord 16
- *p_table ++ = ( 0 << 31 | // Reserved
- 467 << 20 | // SATS0 (default 297, optimized 467)
- 124 << 10 | // SATB3
- 124 ); // SATB2
-
- //DWord 17
- *p_table ++ = ( 0 << 22 | // Reserved
- 256 << 11 | // SATS2 (default 297, optimized 256)
- 176 ); // SATS1
-
- //DWord 18
- *p_table ++ = ( 14 << 25 | // HUEP3
- 14 << 18 | // HUEP2
- 14 << 11 | // HUEP1 (7 bits, default value -6 = 7Ah, optimized value 14)
- 256 ); // SATS3
-
- //DWord 19
- *p_table ++ = ( 0 << 30 | // Reserved
- 56 << 20 | // HUEB3
- 56 << 10 | // HUEB2
- 56 ); // HUEB1 (10 bits, default value 8, optimized value 56)
-
- //DWord 20
- *p_table ++ = ( 0 << 22 | // Reserved
- 256 << 11 | // HUES1
- 256 ); // HUES0
-
- //DWord 21
- *p_table ++ = ( 0 << 22 | // Reserved
- 256 << 11 | // HUES3
- 256 ); // HUES2
-
- //DWord 22
- *p_table ++ = ( 0 << 31 | // Reserved
- 0 << 21 | // SATB1_DARK
- 31 << 14 | // SATP3_DARK
- 31 << 7 | // SATP2_DARK
- 123 ); // SATP1_DARK (7 bits, default value -11 = FF5h, optimized value 123)
-
- //DWord 23
- *p_table ++ = ( 0 << 31 | // Reserved
- 305 << 20 | // SATS0_DARK
- 124 << 10 | // SATB3_DARK
- 124 ); // SATB2_DARK
-
- //DWord 24
- *p_table ++ = ( 0 << 22 | // Reserved
- 256 << 11 | // SATS2_DARK
- 220 ); // SATS1_DARK
-
- //DWord 25
- *p_table ++ = ( 14 << 25 | // HUEP3_DARK
- 14 << 18 | // HUEP2_DARK
- 14 << 11 | // HUEP1_DARK
- 256 ); // SATS3_DARK
-
- //DWord 26
- *p_table ++ = ( 0 << 30 | // Reserved
- 56 << 20 | // HUEB3_DARK
- 56 << 10 | // HUEB2_DARK
- 56 ); // HUEB1_DARK
-
- //DWord 27
- *p_table ++ = ( 0 << 22 | // Reserved
- 256 << 11 | // HUES1_DARK
- 256 ); // HUES0_DARK
-
- //DWord 28
- *p_table ++ = ( 0 << 22 | // Reserved
- 256 << 11 | // HUES3_DARK
- 256 ); // HUES2_DARK
-}
-
-//Set values for STDE factor 9
-void set_std_table_9(struct intel_vebox_context *proc_ctx, unsigned int *p_table) {
-
- //DWord 15
- *p_table ++ = ( 0 << 31 | // Reserved
- 0 << 21 | // SATB1 (10 bits, default 8, optimized value 0)
- 31 << 14 | // SATP3
- 31 << 7 | // SATP2 (default 6, optimized 31)
- 108 ); // SATP1 (7 bits, default 6, optimized value 108)
-
- //DWord 16
- *p_table ++ = ( 0 << 31 | // Reserved
- 721 << 20 | // SATS0 (default 297, optimized 721)
- 124 << 10 | // SATB3
- 124 ); // SATB2
-
- //DWord 17
- *p_table ++ = ( 0 << 22 | // Reserved
- 256 << 11 | // SATS2 (default 297, optimized 256)
- 156 ); // SATS1 (default 176, optimized 156)
-
- //DWord 18
- *p_table ++ = ( 14 << 25 | // HUEP3
- 14 << 18 | // HUEP2
- 14 << 11 | // HUEP1 (7 bits, default value -6 = 7Ah, optimized value 14)
- 256 ); // SATS3
-
- //DWord 19
- *p_table ++ = ( 0 << 30 | // Reserved
- 56 << 20 | // HUEB3
- 56 << 10 | // HUEB2
- 56 ); // HUEB1 (10 bits, default value 8, optimized value 56)
-
- //DWord 20
- *p_table ++ = ( 0 << 22 | // Reserved
- 256 << 11 | // HUES1
- 256 ); // HUES0
-
- //DWord 21
- *p_table ++ = ( 0 << 22 | // Reserved
- 256 << 11 | // HUES3
- 256 ); // HUES2
-
- //DWord 22
- *p_table ++ = ( 0 << 31 | // Reserved
- 0 << 21 | // SATB1_DARK
- 31 << 14 | // SATP3_DARK
- 31 << 7 | // SATP2_DARK
- 123 ); // SATP1_DARK (7 bits, default value -11 = FF5h, optimized value 123)
-
- //DWord 23
- *p_table ++ = ( 0 << 31 | // Reserved
- 305 << 20 | // SATS0_DARK
- 124 << 10 | // SATB3_DARK
- 124 ); // SATB2_DARK
-
- //DWord 24
- *p_table ++ = ( 0 << 22 | // Reserved
- 256 << 11 | // SATS2_DARK
- 220 ); // SATS1_DARK
-
- //DWord 25
- *p_table ++ = ( 14 << 25 | // HUEP3_DARK
- 14 << 18 | // HUEP2_DARK
- 14 << 11 | // HUEP1_DARK
- 256 ); // SATS3_DARK
-
- //DWord 26
- *p_table ++ = ( 0 << 30 | // Reserved
- 56 << 20 | // HUEB3_DARK
- 56 << 10 | // HUEB2_DARK
- 56 ); // HUEB1_DARK
-
- //DWord 27
- *p_table ++ = ( 0 << 22 | // Reserved
- 256 << 11 | // HUES1_DARK
- 256 ); // HUES0_DARK
-
- //DWord 28
- *p_table ++ = ( 0 << 22 | // Reserved
- 256 << 11 | // HUES3_DARK
- 256 ); // HUES2_DARK
-}
-
-
-void hsw_veb_iecp_std_table(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
-{
- unsigned int *p_table = (unsigned int *)proc_ctx->iecp_state_table.ptr;
-
- if(!(proc_ctx->filters_mask & VPP_IECP_STD_STE)){
- memset(p_table, 0, 29 * 4);
- }else{
- int stde_factor = 0; //default value
- VAProcFilterParameterBuffer * std_param = (VAProcFilterParameterBuffer *) proc_ctx->filter_iecp_std;
- stde_factor = std_param->value;
-
- //DWord 0
- *p_table ++ = ( 154 << 24 | // V_Mid
- 110 << 16 | // U_Mid
- 14 << 10 | // Hue_Max
- 31 << 4 | // Sat_Max
- 0 << 3 | // Reserved
- 0 << 2 | // Output Control is set to output the 1=STD score /0=Output Pixels
- 1 << 1 | // Set STE Enable
- 1 ); // Set STD Enable
-
- //DWord 1
- *p_table ++ = ( 0 << 31 | // Reserved
- 4 << 28 | // Diamond Margin
- 0 << 21 | // Diamond_du
- 3 << 18 | // HS_Margin
- 79 << 10 | // Cos(alpha)
- 0 << 8 | // Reserved
- 101 ); // Sin(alpha)
-
- //DWord 2
- *p_table ++ = ( 0 << 21 | // Reserved
- 100 << 13 | // Diamond_alpha
- 35 << 7 | // Diamond_Th
- 0 );
-
- //DWord 3
- *p_table ++ = ( 254 << 24 | // Y_point_3
- 47 << 16 | // Y_point_2
- 46 << 8 | // Y_point_1
- 1 << 7 | // VY_STD_Enable
- 0 ); // Reserved
-
- //DWord 4
- *p_table ++ = ( 0 << 18 | // Reserved
- 31 << 13 | // Y_slope_2
- 31 << 8 | // Y_slope_1
- 255 ); // Y_point_4
-
- //DWord 5
- *p_table ++ = ( 400 << 16 | // INV_Skin_types_margin = 20* Skin_Type_margin => 20*20
- 3300 ); // INV_Margin_VYL => 1/Margin_VYL
-
- //DWord 6
- *p_table ++ = ( 216 << 24 | // P1L
- 46 << 16 | // P0L
- 1600 ); // INV_Margin_VYU
-
- //DWord 7
- *p_table ++ = ( 130 << 24 | // B1L
- 133 << 16 | // B0L
- 236 << 8 | // P3L
- 236 ); // P2L
-
- //DWord 8
- *p_table ++ = ( 0 << 27 | // Reserved
- 0x7FB << 16 | // S0L (11 bits, Default value: -5 = FBh, pad it with 1s to make it 11bits)
- 130 << 8 | // B3L
- 130 );
-
- //DWord 9
- *p_table ++ = ( 0 << 22 | // Reserved
- 0 << 11 | // S2L
- 0); // S1L
-
- //DWord 10
- *p_table ++ = ( 0 << 27 | // Reserved
- 66 << 19 | // P1U
- 46 << 11 | // P0U
- 0 ); // S3
-
- //DWord 11
- *p_table ++ = ( 163 << 24 | // B1U
- 143 << 16 | // B0U
- 236 << 8 | // P3U
- 150 ); // P2U
-
- //DWord 12
- *p_table ++ = ( 0 << 27 | // Reserved
- 256 << 16 | // S0U
- 200 << 8 | // B3U
- 200 ); // B2U
-
- //DWord 13
- *p_table ++ = ( 0 << 22 | // Reserved
- 0x74D << 11 | // S2U (11 bits, Default value -179 = F4Dh)
- 113 ); // S1U
-
- //DWoord 14
- *p_table ++ = ( 0 << 28 | // Reserved
- 20 << 20 | // Skin_types_margin
- 120 << 12 | // Skin_types_thresh
- 1 << 11 | // Skin_Types_Enable
- 0 ); // S3U
-
- //Set DWord 15 through DWord 28 in their respective methods.
- switch(stde_factor) {
- case 3:
- set_std_table_3(proc_ctx, p_table);
- break;
-
- case 6:
- set_std_table_6(proc_ctx, p_table);
- break;
-
- case 9:
- set_std_table_9(proc_ctx, p_table);
- break;
-
- default:
- set_std_table_default(proc_ctx, p_table);
- break;
- }
- }//end of else
-}
-
-void hsw_veb_iecp_ace_table(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
-{
- unsigned int *p_table = (unsigned int*)(proc_ctx->iecp_state_table.ptr + 116);
-
- if(!(proc_ctx->filters_mask & VPP_IECP_ACE)){
- memset(p_table, 0, 13 * 4);
- }else{
- *p_table ++ = 0x00000068;
- *p_table ++ = 0x4c382410;
- *p_table ++ = 0x9c887460;
- *p_table ++ = 0xebd8c4b0;
- *p_table ++ = 0x604c3824;
-
- *p_table ++ = 0xb09c8874;
- *p_table ++ = 0x0000d8c4;
- *p_table ++ = 0x00000000;
- *p_table ++ = 0x00000000;
- *p_table ++ = 0x00000000;
-
- *p_table ++ = 0x00000000;
- *p_table ++ = 0x00000000;
- *p_table ++ = 0x00000000;
- }
-}
-
-void hsw_veb_iecp_tcc_table(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
-{
- unsigned int *p_table = (unsigned int*)(proc_ctx->iecp_state_table.ptr + 168);
-// VAProcFilterParameterBuffer * tcc_param =
-// (VAProcFilterParameterBuffer *) proc_ctx->filter_iecp_tcc;
-
- if(!(proc_ctx->filters_mask & VPP_IECP_TCC)){
- memset(p_table, 0, 11 * 4);
- }else{
- *p_table ++ = 0x00000000;
- *p_table ++ = 0x00000000;
- *p_table ++ = 0x1e34cc91;
- *p_table ++ = 0x3e3cce91;
- *p_table ++ = 0x02e80195;
-
- *p_table ++ = 0x0197046b;
- *p_table ++ = 0x01790174;
- *p_table ++ = 0x00000000;
- *p_table ++ = 0x00000000;
- *p_table ++ = 0x03030000;
-
- *p_table ++ = 0x009201c0;
- }
-}
-
-void hsw_veb_iecp_pro_amp_table(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
-{
- unsigned int contrast = 0x80; //default
- int brightness = 0x00; //default
- int cos_c_s = 256 ; //default
- int sin_c_s = 0; //default
- unsigned int *p_table = (unsigned int*)(proc_ctx->iecp_state_table.ptr + 212);
-
- if(!(proc_ctx->filters_mask & VPP_IECP_PRO_AMP)){
- memset(p_table, 0, 2 * 4);
- }else {
- float src_saturation = 1.0;
- float src_hue = 0.0;
- float src_contrast = 1.0;
- float src_brightness = 0.0;
- float tmp_value = 0.0;
- unsigned int i = 0;
-
- VAProcFilterParameterBufferColorBalance * amp_params =
- (VAProcFilterParameterBufferColorBalance *) proc_ctx->filter_iecp_amp;
-
- for (i = 0; i < proc_ctx->filter_iecp_amp_num_elements; i++){
- VAProcColorBalanceType attrib = amp_params[i].attrib;
-
- if(attrib == VAProcColorBalanceHue) {
- src_hue = amp_params[i].value; //(-180.0, 180.0)
- }else if(attrib == VAProcColorBalanceSaturation) {
- src_saturation = amp_params[i].value; //(0.0, 10.0)
- }else if(attrib == VAProcColorBalanceBrightness) {
- src_brightness = amp_params[i].value; // (-100.0, 100.0)
- brightness = intel_format_convert(src_brightness, 7, 4, 1);
- }else if(attrib == VAProcColorBalanceContrast) {
- src_contrast = amp_params[i].value; // (0.0, 10.0)
- contrast = intel_format_convert(src_contrast, 4, 7, 0);
- }
- }
-
- tmp_value = cos(src_hue/180*PI) * src_contrast * src_saturation;
- cos_c_s = intel_format_convert(tmp_value, 7, 8, 1);
-
- tmp_value = sin(src_hue/180*PI) * src_contrast * src_saturation;
- sin_c_s = intel_format_convert(tmp_value, 7, 8, 1);
-
- *p_table ++ = ( 0 << 28 | //reserved
- contrast << 17 | //contrast value (U4.7 format)
- 0 << 13 | //reserved
- brightness << 1| // S7.4 format
- 1);
-
- *p_table ++ = ( cos_c_s << 16 | // cos(h) * contrast * saturation
- sin_c_s); // sin(h) * contrast * saturation
-
- }
-}
-
-
-void hsw_veb_iecp_csc_transform_table(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
-{
- unsigned int *p_table = (unsigned int*)(proc_ctx->iecp_state_table.ptr + 220);
- float tran_coef[9] = {1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0};
- float v_coef[3] = {0.0, 0.0, 0.0};
- float u_coef[3] = {0.0, 0.0, 0.0};
- int is_transform_enabled = 0;
-
- if(!(proc_ctx->filters_mask & VPP_IECP_CSC_TRANSFORM)){
- memset(p_table, 0, 8 * 4);
- return;
- }
-
- if(proc_ctx->fourcc_input == VA_FOURCC_RGBA &&
- (proc_ctx->fourcc_output == VA_FOURCC_NV12 ||
- proc_ctx->fourcc_output == VA_FOURCC_YV12 ||
- proc_ctx->fourcc_output == VA_FOURCC_YVY2 ||
- proc_ctx->fourcc_output == VA_FOURCC_AYUV)) {
-
- tran_coef[0] = 0.257;
- tran_coef[1] = 0.504;
- tran_coef[2] = 0.098;
- tran_coef[3] = -0.148;
- tran_coef[4] = -0.291;
- tran_coef[5] = 0.439;
- tran_coef[6] = 0.439;
- tran_coef[7] = -0.368;
- tran_coef[8] = -0.071;
-
- u_coef[0] = 16 * 4;
- u_coef[1] = 128 * 4;
- u_coef[2] = 128 * 4;
-
- is_transform_enabled = 1;
- }else if((proc_ctx->fourcc_input == VA_FOURCC_NV12 ||
- proc_ctx->fourcc_input == VA_FOURCC_YV12 ||
- proc_ctx->fourcc_input == VA_FOURCC_YUY2 ||
- proc_ctx->fourcc_input == VA_FOURCC_AYUV) &&
- proc_ctx->fourcc_output == VA_FOURCC_RGBA) {
- tran_coef[0] = 1.164;
- tran_coef[1] = 0.000;
- tran_coef[2] = 1.569;
- tran_coef[3] = 1.164;
- tran_coef[4] = -0.813;
- tran_coef[5] = -0.392;
- tran_coef[6] = 1.164;
- tran_coef[7] = 2.017;
- tran_coef[8] = 0.000;
-
- v_coef[0] = -16 * 4;
- v_coef[1] = -128 * 4;
- v_coef[2] = -128 * 4;
-
- is_transform_enabled = 1;
- }else if(proc_ctx->fourcc_input != proc_ctx->fourcc_output){
- //enable when input and output format are different.
- is_transform_enabled = 1;
- }
-
- if(is_transform_enabled == 0){
- memset(p_table, 0, 8 * 4);
- }else{
- *p_table ++ = ( 0 << 29 | //reserved
- intel_format_convert(tran_coef[1], 2, 10, 1) << 16 | //c1, s2.10 format
- intel_format_convert(tran_coef[0], 2, 10, 1) << 3 | //c0, s2.10 format
- 0 << 2 | //reserved
- 0 << 1 | // yuv_channel swap
- is_transform_enabled);
-
- *p_table ++ = ( 0 << 26 | //reserved
- intel_format_convert(tran_coef[3], 2, 10, 1) << 13 |
- intel_format_convert(tran_coef[2], 2, 10, 1));
-
- *p_table ++ = ( 0 << 26 | //reserved
- intel_format_convert(tran_coef[5], 2, 10, 1) << 13 |
- intel_format_convert(tran_coef[4], 2, 10, 1));
-
- *p_table ++ = ( 0 << 26 | //reserved
- intel_format_convert(tran_coef[7], 2, 10, 1) << 13 |
- intel_format_convert(tran_coef[6], 2, 10, 1));
-
- *p_table ++ = ( 0 << 13 | //reserved
- intel_format_convert(tran_coef[8], 2, 10, 1));
-
- *p_table ++ = ( 0 << 22 | //reserved
- intel_format_convert(u_coef[0], 10, 0, 1) << 11 |
- intel_format_convert(v_coef[0], 10, 0, 1));
-
- *p_table ++ = ( 0 << 22 | //reserved
- intel_format_convert(u_coef[1], 10, 0, 1) << 11 |
- intel_format_convert(v_coef[1], 10, 0, 1));
-
- *p_table ++ = ( 0 << 22 | //reserved
- intel_format_convert(u_coef[2], 10, 0, 1) << 11 |
- intel_format_convert(v_coef[2], 10, 0, 1));
- }
-}
-
-void hsw_veb_iecp_aoi_table(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
-{
- unsigned int *p_table = (unsigned int*)(proc_ctx->iecp_state_table.ptr + 252);
- // VAProcFilterParameterBuffer * tcc_param =
- // (VAProcFilterParameterBuffer *) proc_ctx->filter_iecp_tcc;
-
- if(!(proc_ctx->filters_mask & VPP_IECP_AOI)){
- memset(p_table, 0, 3 * 4);
- }else{
- *p_table ++ = 0x00000000;
- *p_table ++ = 0x00030000;
- *p_table ++ = 0x00030000;
- }
-}
-
-void hsw_veb_state_table_setup(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
-{
- if(proc_ctx->filters_mask & VPP_DNDI_MASK) {
- dri_bo *dndi_bo = proc_ctx->dndi_state_table.bo;
- dri_bo_map(dndi_bo, 1);
- proc_ctx->dndi_state_table.ptr = dndi_bo->virtual;
-
- hsw_veb_dndi_table(ctx, proc_ctx);
-
- dri_bo_unmap(dndi_bo);
- }
-
- if(proc_ctx->filters_mask & VPP_IECP_MASK) {
- dri_bo *iecp_bo = proc_ctx->iecp_state_table.bo;
- dri_bo_map(iecp_bo, 1);
- proc_ctx->iecp_state_table.ptr = iecp_bo->virtual;
- memset(proc_ctx->iecp_state_table.ptr, 0, 97 * 4);
-
- hsw_veb_iecp_std_table(ctx, proc_ctx);
- hsw_veb_iecp_ace_table(ctx, proc_ctx);
- hsw_veb_iecp_tcc_table(ctx, proc_ctx);
- hsw_veb_iecp_pro_amp_table(ctx, proc_ctx);
- hsw_veb_iecp_csc_transform_table(ctx, proc_ctx);
- hsw_veb_iecp_aoi_table(ctx, proc_ctx);
-
- dri_bo_unmap(iecp_bo);
- }
-}
-
-void hsw_veb_state_command(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
-{
- struct intel_batchbuffer *batch = proc_ctx->batch;
-
- BEGIN_VEB_BATCH(batch, 6);
- OUT_VEB_BATCH(batch, VEB_STATE | (6 - 2));
- OUT_VEB_BATCH(batch,
- 0 << 26 | // state surface control bits
- 0 << 11 | // reserved.
- 0 << 10 | // pipe sync disable
- proc_ctx->current_output_type << 8 | // DI output frame
- 1 << 7 | // 444->422 downsample method
- 1 << 6 | // 422->420 downsample method
- proc_ctx->is_first_frame << 5 | // DN/DI first frame
- proc_ctx->is_di_enabled << 4 | // DI enable
- proc_ctx->is_dn_enabled << 3 | // DN enable
- proc_ctx->is_iecp_enabled << 2 | // global IECP enabled
- 0 << 1 | // ColorGamutCompressionEnable
- 0 ) ; // ColorGamutExpansionEnable.
-
- OUT_RELOC(batch,
- proc_ctx->dndi_state_table.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
-
- OUT_RELOC(batch,
- proc_ctx->iecp_state_table.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
-
- OUT_RELOC(batch,
- proc_ctx->gamut_state_table.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
-
- OUT_RELOC(batch,
- proc_ctx->vertex_state_table.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
-
- ADVANCE_VEB_BATCH(batch);
-}
-
-void hsw_veb_surface_state(VADriverContextP ctx, struct intel_vebox_context *proc_ctx, unsigned int is_output)
-{
- struct intel_batchbuffer *batch = proc_ctx->batch;
- unsigned int u_offset_y = 0, v_offset_y = 0;
- unsigned int is_uv_interleaved = 0, tiling = 0, swizzle = 0;
- unsigned int surface_format = PLANAR_420_8;
- struct object_surface* obj_surf = NULL;
- unsigned int surface_pitch = 0;
- unsigned int half_pitch_chroma = 0;
-
- if(is_output){
- obj_surf = proc_ctx->frame_store[FRAME_OUT_CURRENT].obj_surface;
- }else {
- obj_surf = proc_ctx->frame_store[FRAME_IN_CURRENT].obj_surface;
- }
-
- assert(obj_surf->fourcc == VA_FOURCC_NV12 ||
- obj_surf->fourcc == VA_FOURCC_YUY2 ||
- obj_surf->fourcc == VA_FOURCC_AYUV ||
- obj_surf->fourcc == VA_FOURCC_RGBA);
-
- if (obj_surf->fourcc == VA_FOURCC_NV12) {
- surface_format = PLANAR_420_8;
- surface_pitch = obj_surf->width;
- is_uv_interleaved = 1;
- half_pitch_chroma = 0;
- } else if (obj_surf->fourcc == VA_FOURCC_YUY2) {
- surface_format = YCRCB_NORMAL;
- surface_pitch = obj_surf->width * 2;
- is_uv_interleaved = 0;
- half_pitch_chroma = 0;
- } else if (obj_surf->fourcc == VA_FOURCC_AYUV) {
- surface_format = PACKED_444A_8;
- surface_pitch = obj_surf->width * 4;
- is_uv_interleaved = 0;
- half_pitch_chroma = 0;
- } else if (obj_surf->fourcc == VA_FOURCC_RGBA) {
- surface_format = R8G8B8A8_UNORM_SRGB;
- surface_pitch = obj_surf->width * 4;
- is_uv_interleaved = 0;
- half_pitch_chroma = 0;
- }
-
- u_offset_y = obj_surf->y_cb_offset;
- v_offset_y = obj_surf->y_cr_offset;
-
- dri_bo_get_tiling(obj_surf->bo, &tiling, &swizzle);
-
- BEGIN_VEB_BATCH(batch, 6);
- OUT_VEB_BATCH(batch, VEB_SURFACE_STATE | (6 - 2));
- OUT_VEB_BATCH(batch,
- 0 << 1 | // reserved
- is_output); // surface indentification.
-
- OUT_VEB_BATCH(batch,
- (obj_surf->orig_height - 1) << 18 | // height . w3
- (obj_surf->orig_width - 1) << 4 | // width
- 0); // reserve
-
- OUT_VEB_BATCH(batch,
- surface_format << 28 | // surface format, YCbCr420. w4
- is_uv_interleaved << 27 | // interleave chrome , two seperate palar
- 0 << 20 | // reserved
- (surface_pitch - 1) << 3 | // surface pitch, 64 align
- half_pitch_chroma << 2 | // half pitch for chrome
- !!tiling << 1 | // tiled surface, linear surface used
- (tiling == I915_TILING_Y)); // tiled walk, ignored when liner surface
-
- OUT_VEB_BATCH(batch,
- 0 << 29 | // reserved . w5
- 0 << 16 | // X offset for V(Cb)
- 0 << 15 | // reserved
- u_offset_y); // Y offset for V(Cb)
-
- OUT_VEB_BATCH(batch,
- 0 << 29 | // reserved . w6
- 0 << 16 | // X offset for V(Cr)
- 0 << 15 | // reserved
- v_offset_y ); // Y offset for V(Cr)
-
- ADVANCE_VEB_BATCH(batch);
-}
-
-void hsw_veb_dndi_iecp_command(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
-{
- struct intel_batchbuffer *batch = proc_ctx->batch;
- unsigned char frame_ctrl_bits = 0;
- struct object_surface *obj_surface = proc_ctx->frame_store[FRAME_IN_CURRENT].obj_surface;
- unsigned int width64 = ALIGN(proc_ctx->width_input, 64);
-
- assert(obj_surface);
- if (width64 > obj_surface->orig_width)
- width64 = obj_surface->orig_width;
-
- /* s1:update the previous and current input */
-/* tempFrame = proc_ctx->frame_store[FRAME_IN_PREVIOUS];
- proc_ctx->frame_store[FRAME_IN_PREVIOUS] = proc_ctx->frame_store[FRAME_IN_CURRENT]; ;
- proc_ctx->frame_store[FRAME_IN_CURRENT] = tempFrame;
-
- if(proc_ctx->surface_input_vebox != -1){
- vpp_surface_copy(ctx, proc_ctx->frame_store[FRAME_IN_CURRENT].surface_id,
- proc_ctx->surface_input_vebox);
- } else {
- vpp_surface_copy(ctx, proc_ctx->frame_store[FRAME_IN_CURRENT].surface_id,
- proc_ctx->surface_input);
- }
-*/
- /*s2: update the STMM input and output */
-/* tempFrame = proc_ctx->frame_store[FRAME_IN_STMM];
- proc_ctx->frame_store[FRAME_IN_STMM] = proc_ctx->frame_store[FRAME_OUT_STMM]; ;
- proc_ctx->frame_store[FRAME_OUT_STMM] = tempFrame;
-*/
- /*s3:set reloc buffer address */
- BEGIN_VEB_BATCH(batch, 10);
- OUT_VEB_BATCH(batch, VEB_DNDI_IECP_STATE | (10 - 2));
- OUT_VEB_BATCH(batch, (width64 - 1));
- OUT_RELOC(batch,
- proc_ctx->frame_store[FRAME_IN_CURRENT].obj_surface->bo,
- I915_GEM_DOMAIN_RENDER, 0, frame_ctrl_bits);
- OUT_RELOC(batch,
- proc_ctx->frame_store[FRAME_IN_PREVIOUS].obj_surface->bo,
- I915_GEM_DOMAIN_RENDER, 0, frame_ctrl_bits);
- OUT_RELOC(batch,
- proc_ctx->frame_store[FRAME_IN_STMM].obj_surface->bo,
- I915_GEM_DOMAIN_RENDER, 0, frame_ctrl_bits);
- OUT_RELOC(batch,
- proc_ctx->frame_store[FRAME_OUT_STMM].obj_surface->bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, frame_ctrl_bits);
- OUT_RELOC(batch,
- proc_ctx->frame_store[FRAME_OUT_CURRENT_DN].obj_surface->bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, frame_ctrl_bits);
- OUT_RELOC(batch,
- proc_ctx->frame_store[FRAME_OUT_CURRENT].obj_surface->bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, frame_ctrl_bits);
- OUT_RELOC(batch,
- proc_ctx->frame_store[FRAME_OUT_PREVIOUS].obj_surface->bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, frame_ctrl_bits);
- OUT_RELOC(batch,
- proc_ctx->frame_store[FRAME_OUT_STATISTIC].obj_surface->bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, frame_ctrl_bits);
-
- ADVANCE_VEB_BATCH(batch);
-}
-
-static void
-frame_store_reset(VEBFrameStore *fs)
-{
- fs->obj_surface = NULL;
- fs->surface_id = VA_INVALID_ID;
- fs->is_internal_surface = 0;
- fs->is_scratch_surface = 0;
-}
-
-static void
-frame_store_clear(VEBFrameStore *fs, VADriverContextP ctx)
-{
- if (fs->obj_surface && fs->is_scratch_surface) {
- VASurfaceID surface_id = fs->obj_surface->base.id;
- i965_DestroySurfaces(ctx, &surface_id, 1);
- }
- frame_store_reset(fs);
-}
-
-static VAStatus
-gen75_vebox_ensure_surfaces_storage(VADriverContextP ctx,
- struct intel_vebox_context *proc_ctx)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- struct object_surface *input_obj_surface, *output_obj_surface;
- unsigned int input_fourcc, output_fourcc;
- unsigned int input_sampling, output_sampling;
- unsigned int input_tiling, output_tiling;
- unsigned int i, swizzle;
- drm_intel_bo *bo;
- VAStatus status;
-
- /* Determine input surface info. Use native VEBOX format whenever
- possible. i.e. when the input surface format is not supported
- by the VEBOX engine, then allocate a temporary surface (live
- during the whole VPP pipeline lifetime)
-
- XXX: derive an actual surface format compatible with the input
- surface chroma format */
- input_obj_surface = proc_ctx->surface_input_vebox_object ?
- proc_ctx->surface_input_vebox_object : proc_ctx->surface_input_object;
- if (input_obj_surface->bo) {
- input_fourcc = input_obj_surface->fourcc;
- input_sampling = input_obj_surface->subsampling;
- dri_bo_get_tiling(input_obj_surface->bo, &input_tiling, &swizzle);
- input_tiling = !!input_tiling;
- }
- else {
- input_fourcc = VA_FOURCC_NV12;
- input_sampling = SUBSAMPLE_YUV420;
- input_tiling = 1;
- status = i965_check_alloc_surface_bo(ctx, input_obj_surface,
- input_tiling, input_fourcc, input_sampling);
- if (status != VA_STATUS_SUCCESS)
- return status;
- }
-
- /* Determine output surface info.
-
- XXX: derive an actual surface format compatible with the input
- surface chroma format */
- output_obj_surface = proc_ctx->surface_output_vebox_object ?
- proc_ctx->surface_output_vebox_object : proc_ctx->surface_output_object;
- if (output_obj_surface->bo) {
- output_fourcc = output_obj_surface->fourcc;
- output_sampling = output_obj_surface->subsampling;
- dri_bo_get_tiling(output_obj_surface->bo, &output_tiling, &swizzle);
- output_tiling = !!output_tiling;
- }
- else {
- output_fourcc = VA_FOURCC_NV12;
- output_sampling = SUBSAMPLE_YUV420;
- output_tiling = 1;
- status = i965_check_alloc_surface_bo(ctx, output_obj_surface,
- output_tiling, output_fourcc, output_sampling);
- if (status != VA_STATUS_SUCCESS)
- return status;
- }
-
- /* Update VEBOX pipeline formats */
- proc_ctx->fourcc_input = input_fourcc;
- proc_ctx->fourcc_output = output_fourcc;
- if (input_fourcc != output_fourcc) {
- proc_ctx->filters_mask |= VPP_IECP_CSC;
-
- if (input_fourcc == VA_FOURCC_RGBA &&
- (output_fourcc == VA_FOURCC_NV12 ||
- output_fourcc == VA_FOURCC_P010)) {
- proc_ctx->filters_mask |= VPP_IECP_CSC_TRANSFORM;
- } else if (output_fourcc == VA_FOURCC_RGBA &&
- (input_fourcc == VA_FOURCC_NV12 ||
- input_fourcc == VA_FOURCC_P010)) {
- proc_ctx->filters_mask |= VPP_IECP_CSC_TRANSFORM;
- }
- }
-
- proc_ctx->is_iecp_enabled = (proc_ctx->filters_mask & VPP_IECP_MASK) != 0;
-
- /* Create pipeline surfaces */
- for (i = 0; i < ARRAY_ELEMS(proc_ctx->frame_store); i ++) {
- struct object_surface *obj_surface;
- VASurfaceID new_surface;
-
- if (proc_ctx->frame_store[i].obj_surface)
- continue; // user allocated surface, not VEBOX internal
-
- status = i965_CreateSurfaces(ctx, proc_ctx->width_input,
- proc_ctx->height_input, VA_RT_FORMAT_YUV420, 1, &new_surface);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- obj_surface = SURFACE(new_surface);
- assert(obj_surface != NULL);
-
- if (i <= FRAME_IN_PREVIOUS || i == FRAME_OUT_CURRENT_DN) {
- status = i965_check_alloc_surface_bo(ctx, obj_surface,
- input_tiling, input_fourcc, input_sampling);
- }
- else if (i == FRAME_IN_STMM || i == FRAME_OUT_STMM) {
- status = i965_check_alloc_surface_bo(ctx, obj_surface,
- 1, input_fourcc, input_sampling);
- }
- else if (i >= FRAME_OUT_CURRENT) {
- status = i965_check_alloc_surface_bo(ctx, obj_surface,
- output_tiling, output_fourcc, output_sampling);
- }
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- proc_ctx->frame_store[i].obj_surface = obj_surface;
- proc_ctx->frame_store[i].is_internal_surface = 1;
- proc_ctx->frame_store[i].is_scratch_surface = 1;
- }
-
- /* Allocate DNDI state table */
- drm_intel_bo_unreference(proc_ctx->dndi_state_table.bo);
- bo = drm_intel_bo_alloc(i965->intel.bufmgr, "vebox: dndi state Buffer",
- 0x1000, 0x1000);
- proc_ctx->dndi_state_table.bo = bo;
- if (!bo)
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
-
- /* Allocate IECP state table */
- drm_intel_bo_unreference(proc_ctx->iecp_state_table.bo);
- bo = drm_intel_bo_alloc(i965->intel.bufmgr, "vebox: iecp state Buffer",
- 0x1000, 0x1000);
- proc_ctx->iecp_state_table.bo = bo;
- if (!bo)
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
-
- /* Allocate Gamut state table */
- drm_intel_bo_unreference(proc_ctx->gamut_state_table.bo);
- bo = drm_intel_bo_alloc(i965->intel.bufmgr, "vebox: gamut state Buffer",
- 0x1000, 0x1000);
- proc_ctx->gamut_state_table.bo = bo;
- if (!bo)
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
-
- /* Allocate vertex state table */
- drm_intel_bo_unreference(proc_ctx->vertex_state_table.bo);
- bo = drm_intel_bo_alloc(i965->intel.bufmgr, "vebox: vertex state Buffer",
- 0x1000, 0x1000);
- proc_ctx->vertex_state_table.bo = bo;
- if (!bo)
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen75_vebox_ensure_surfaces(VADriverContextP ctx,
- struct intel_vebox_context *proc_ctx)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface;
- VEBFrameStore *ifs, *ofs;
- bool is_new_frame = 0;
- int i;
-
- /* Update the previous input surface */
- obj_surface = proc_ctx->surface_input_object;
-
- is_new_frame = proc_ctx->frame_store[FRAME_IN_CURRENT].surface_id !=
- obj_surface->base.id;
- if (is_new_frame) {
- ifs = &proc_ctx->frame_store[FRAME_IN_PREVIOUS];
- ofs = &proc_ctx->frame_store[proc_ctx->is_dn_enabled ?
- FRAME_OUT_CURRENT_DN : FRAME_IN_CURRENT];
- do {
- const VAProcPipelineParameterBuffer * const pipe =
- proc_ctx->pipeline_param;
-
- if (pipe->num_forward_references < 1)
- break;
- if (pipe->forward_references[0] == VA_INVALID_ID)
- break;
-
- obj_surface = SURFACE(pipe->forward_references[0]);
- if (!obj_surface || obj_surface->base.id == ifs->surface_id)
- break;
-
- frame_store_clear(ifs, ctx);
- if (obj_surface->base.id == ofs->surface_id) {
- *ifs = *ofs;
- frame_store_reset(ofs);
- }
- else {
- ifs->obj_surface = obj_surface;
- ifs->surface_id = obj_surface->base.id;
- ifs->is_internal_surface = 0;
- ifs->is_scratch_surface = 0;
- }
- } while (0);
- }
-
- /* Update the input surface */
- obj_surface = proc_ctx->surface_input_vebox_object ?
- proc_ctx->surface_input_vebox_object : proc_ctx->surface_input_object;
-
- ifs = &proc_ctx->frame_store[FRAME_IN_CURRENT];
- frame_store_clear(ifs, ctx);
- ifs->obj_surface = obj_surface;
- ifs->surface_id = proc_ctx->surface_input_object->base.id;
- ifs->is_internal_surface = proc_ctx->surface_input_vebox_object != NULL;
- ifs->is_scratch_surface = 0;
-
- /* Update the Spatial Temporal Motion Measure (STMM) surfaces */
- if (is_new_frame) {
- const VEBFrameStore tmpfs = proc_ctx->frame_store[FRAME_IN_STMM];
- proc_ctx->frame_store[FRAME_IN_STMM] =
- proc_ctx->frame_store[FRAME_OUT_STMM];
- proc_ctx->frame_store[FRAME_OUT_STMM] = tmpfs;
- }
-
- /* Reset the output surfaces to defaults. i.e. clean from user surfaces */
- for (i = FRAME_OUT_CURRENT_DN; i <= FRAME_OUT_PREVIOUS; i++) {
- ofs = &proc_ctx->frame_store[i];
- if (!ofs->is_scratch_surface)
- ofs->obj_surface = NULL;
- ofs->surface_id = proc_ctx->surface_input_object->base.id;
- }
-
- /* Update the output surfaces */
- obj_surface = proc_ctx->surface_output_vebox_object ?
- proc_ctx->surface_output_vebox_object : proc_ctx->surface_output_object;
-
- proc_ctx->current_output_type = 2;
- if (proc_ctx->filters_mask == VPP_DNDI_DN && !proc_ctx->is_iecp_enabled)
- proc_ctx->current_output = FRAME_OUT_CURRENT_DN;
- else if (proc_ctx->is_di_adv_enabled && !proc_ctx->is_first_frame) {
- proc_ctx->current_output_type = 0;
- proc_ctx->current_output = proc_ctx->is_second_field ?
- FRAME_OUT_CURRENT : FRAME_OUT_PREVIOUS;
- }
- else
- proc_ctx->current_output = FRAME_OUT_CURRENT;
- ofs = &proc_ctx->frame_store[proc_ctx->current_output];
- frame_store_clear(ofs, ctx);
- ofs->obj_surface = obj_surface;
- ofs->surface_id = proc_ctx->surface_input_object->base.id;
- ofs->is_internal_surface = proc_ctx->surface_output_vebox_object != NULL;
- ofs->is_scratch_surface = 0;
-
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus hsw_veb_pre_format_convert(VADriverContextP ctx,
- struct intel_vebox_context *proc_ctx)
-{
- VAStatus va_status;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface* obj_surf_input = proc_ctx->surface_input_object;
- struct object_surface* obj_surf_output = proc_ctx->surface_output_object;
- struct object_surface* obj_surf_input_vebox;
- struct object_surface* obj_surf_output_vebox;
-
- proc_ctx->format_convert_flags = 0;
-
- if ((obj_surf_input == NULL) &&
- (proc_ctx->pipeline_param->surface_region == NULL))
- ASSERT_RET(0, VA_STATUS_ERROR_INVALID_PARAMETER);
-
- if ((obj_surf_output == NULL) &&
- (proc_ctx->pipeline_param->output_region == NULL))
- ASSERT_RET(0, VA_STATUS_ERROR_INVALID_PARAMETER);
-
- if (proc_ctx->pipeline_param->surface_region) {
- proc_ctx->width_input = proc_ctx->pipeline_param->surface_region->width;
- proc_ctx->height_input = proc_ctx->pipeline_param->surface_region->height;
- } else {
- proc_ctx->width_input = obj_surf_input->orig_width;
- proc_ctx->height_input = obj_surf_input->orig_height;
- }
-
- if (proc_ctx->pipeline_param->output_region) {
- proc_ctx->width_output = proc_ctx->pipeline_param->output_region->width;
- proc_ctx->height_output = proc_ctx->pipeline_param->output_region->height;
- } else {
- proc_ctx->width_output = obj_surf_output->orig_width;
- proc_ctx->height_output = obj_surf_output->orig_height;
- }
-
- /* only partial frame is not supported to be processed */
- /*
- assert(proc_ctx->width_input == proc_ctx->pipeline_param->surface_region->width);
- assert(proc_ctx->height_input == proc_ctx->pipeline_param->surface_region->height);
- assert(proc_ctx->width_output == proc_ctx->pipeline_param->output_region->width);
- assert(proc_ctx->height_output == proc_ctx->pipeline_param->output_region->height);
- */
-
- if(proc_ctx->width_output != proc_ctx->width_input ||
- proc_ctx->height_output != proc_ctx->height_input){
- proc_ctx->format_convert_flags |= POST_SCALING_CONVERT;
- }
-
- /* convert the following format to NV12 format */
- if(obj_surf_input->fourcc == VA_FOURCC_YV12 ||
- obj_surf_input->fourcc == VA_FOURCC_I420 ||
- obj_surf_input->fourcc == VA_FOURCC_IMC1 ||
- obj_surf_input->fourcc == VA_FOURCC_IMC3 ||
- obj_surf_input->fourcc == VA_FOURCC_RGBA ||
- obj_surf_input->fourcc == VA_FOURCC_BGRA){
-
- proc_ctx->format_convert_flags |= PRE_FORMAT_CONVERT;
-
- } else if(obj_surf_input->fourcc == VA_FOURCC_AYUV ||
- obj_surf_input->fourcc == VA_FOURCC_YUY2 ||
- obj_surf_input->fourcc == VA_FOURCC_NV12 ||
- obj_surf_input->fourcc == VA_FOURCC_P010){
-
- // nothing to do here
- } else {
- /* not support other format as input */
- ASSERT_RET(0, VA_STATUS_ERROR_UNIMPLEMENTED);
- }
-
- if (proc_ctx->format_convert_flags & PRE_FORMAT_CONVERT) {
- if(proc_ctx->surface_input_vebox_object == NULL){
- va_status = i965_CreateSurfaces(ctx,
- proc_ctx->width_input,
- proc_ctx->height_input,
- VA_RT_FORMAT_YUV420,
- 1,
- &(proc_ctx->surface_input_vebox));
- assert(va_status == VA_STATUS_SUCCESS);
- obj_surf_input_vebox = SURFACE(proc_ctx->surface_input_vebox);
- assert(obj_surf_input_vebox);
-
- if (obj_surf_input_vebox) {
- proc_ctx->surface_input_vebox_object = obj_surf_input_vebox;
- i965_check_alloc_surface_bo(ctx, obj_surf_input_vebox, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
- }
- }
-
- vpp_surface_convert(ctx, proc_ctx->surface_input_object, proc_ctx->surface_input_vebox_object);
- }
-
- /* create one temporary NV12 surfaces for conversion*/
- if(obj_surf_output->fourcc == VA_FOURCC_YV12 ||
- obj_surf_output->fourcc == VA_FOURCC_I420 ||
- obj_surf_output->fourcc == VA_FOURCC_IMC1 ||
- obj_surf_output->fourcc == VA_FOURCC_IMC3 ||
- obj_surf_output->fourcc == VA_FOURCC_RGBA ||
- obj_surf_output->fourcc == VA_FOURCC_BGRA) {
-
- proc_ctx->format_convert_flags |= POST_FORMAT_CONVERT;
- } else if(obj_surf_output->fourcc == VA_FOURCC_AYUV ||
- obj_surf_output->fourcc == VA_FOURCC_YUY2 ||
- obj_surf_output->fourcc == VA_FOURCC_NV12 ||
- obj_surf_output->fourcc == VA_FOURCC_P010) {
-
- /* Nothing to do here */
- } else {
- /* not support other format as input */
- ASSERT_RET(0, VA_STATUS_ERROR_UNIMPLEMENTED);
- }
-
- if(proc_ctx->format_convert_flags & POST_FORMAT_CONVERT ||
- proc_ctx->format_convert_flags & POST_SCALING_CONVERT){
- if(proc_ctx->surface_output_vebox_object == NULL){
- va_status = i965_CreateSurfaces(ctx,
- proc_ctx->width_input,
- proc_ctx->height_input,
- VA_RT_FORMAT_YUV420,
- 1,
- &(proc_ctx->surface_output_vebox));
- assert(va_status == VA_STATUS_SUCCESS);
- obj_surf_output_vebox = SURFACE(proc_ctx->surface_output_vebox);
- assert(obj_surf_output_vebox);
-
- if (obj_surf_output_vebox) {
- proc_ctx->surface_output_vebox_object = obj_surf_output_vebox;
- i965_check_alloc_surface_bo(ctx, obj_surf_output_vebox, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
- }
- }
- }
-
- if(proc_ctx->format_convert_flags & POST_SCALING_CONVERT){
- if(proc_ctx->surface_output_scaled_object == NULL){
- va_status = i965_CreateSurfaces(ctx,
- proc_ctx->width_output,
- proc_ctx->height_output,
- VA_RT_FORMAT_YUV420,
- 1,
- &(proc_ctx->surface_output_scaled));
- assert(va_status == VA_STATUS_SUCCESS);
- obj_surf_output_vebox = SURFACE(proc_ctx->surface_output_scaled);
- assert(obj_surf_output_vebox);
-
- if (obj_surf_output_vebox) {
- proc_ctx->surface_output_scaled_object = obj_surf_output_vebox;
- i965_check_alloc_surface_bo(ctx, obj_surf_output_vebox, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
- }
- }
- }
-
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus
-hsw_veb_post_format_convert(VADriverContextP ctx,
- struct intel_vebox_context *proc_ctx)
-{
- struct object_surface *obj_surface = NULL;
- VAStatus va_status = VA_STATUS_SUCCESS;
-
- obj_surface = proc_ctx->frame_store[proc_ctx->current_output].obj_surface;
-
- if (proc_ctx->format_convert_flags & POST_COPY_CONVERT) {
- /* copy the saved frame in the second call */
- va_status = vpp_surface_convert(ctx, obj_surface, proc_ctx->surface_output_object);
- } else if(!(proc_ctx->format_convert_flags & POST_FORMAT_CONVERT) &&
- !(proc_ctx->format_convert_flags & POST_SCALING_CONVERT)){
- /* Output surface format is covered by vebox pipeline and
- * processed picture is already store in output surface
- * so nothing will be done here */
- } else if ((proc_ctx->format_convert_flags & POST_FORMAT_CONVERT) &&
- !(proc_ctx->format_convert_flags & POST_SCALING_CONVERT)){
- /* convert and copy NV12 to YV12/IMC3/IMC2/RGBA output*/
- va_status = vpp_surface_convert(ctx, obj_surface, proc_ctx->surface_output_object);
-
- } else if(proc_ctx->format_convert_flags & POST_SCALING_CONVERT) {
- VAProcPipelineParameterBuffer * const pipe = proc_ctx->pipeline_param;
- /* scaling, convert and copy NV12 to YV12/IMC3/IMC2/RGBA output*/
- assert(obj_surface->fourcc == VA_FOURCC_NV12);
-
- /* first step :surface scaling */
- vpp_surface_scaling(ctx, obj_surface,
- proc_ctx->surface_output_scaled_object, pipe->filter_flags);
-
- /* second step: color format convert and copy to output */
- obj_surface = proc_ctx->surface_output_object;
-
- va_status = vpp_surface_convert(ctx, proc_ctx->surface_output_scaled_object, obj_surface);
- }
-
- return va_status;
-}
-
-static VAStatus
-gen75_vebox_init_pipe_params(VADriverContextP ctx,
- struct intel_vebox_context *proc_ctx)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- const VAProcPipelineParameterBuffer * const pipe = proc_ctx->pipeline_param;
- VAProcFilterParameterBuffer *filter;
- unsigned int i;
-
- proc_ctx->filters_mask = 0;
- for (i = 0; i < pipe->num_filters; i++) {
- struct object_buffer * const obj_buffer = BUFFER(pipe->filters[i]);
-
- assert(obj_buffer && obj_buffer->buffer_store);
- if (!obj_buffer || !obj_buffer->buffer_store)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- filter = (VAProcFilterParameterBuffer *)
- obj_buffer->buffer_store->buffer;
- switch (filter->type) {
- case VAProcFilterNoiseReduction:
- proc_ctx->filters_mask |= VPP_DNDI_DN;
- proc_ctx->filter_dn = filter;
- break;
- case VAProcFilterDeinterlacing:
- proc_ctx->filters_mask |= VPP_DNDI_DI;
- proc_ctx->filter_di = filter;
- break;
- case VAProcFilterColorBalance:
- proc_ctx->filters_mask |= VPP_IECP_PRO_AMP;
- proc_ctx->filter_iecp_amp = filter;
- proc_ctx->filter_iecp_amp_num_elements = obj_buffer->num_elements;
- break;
- case VAProcFilterSkinToneEnhancement:
- proc_ctx->filters_mask |= VPP_IECP_STD_STE;
- proc_ctx->filter_iecp_std = filter;
- break;
- case VAProcFilterSharpening:
- proc_ctx->filters_mask |= VPP_SHARP;
- break;
- default:
- WARN_ONCE("unsupported filter (type: %d)\n", filter->type);
- return VA_STATUS_ERROR_UNSUPPORTED_FILTER;
- }
- }
-
- if(proc_ctx->filters_mask == 0)
- proc_ctx->filters_mask |= VPP_IECP_CSC;
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen75_vebox_init_filter_params(VADriverContextP ctx,
- struct intel_vebox_context *proc_ctx)
-{
- proc_ctx->format_convert_flags = 0; /* initialized in hsw_veb_pre_format_convert() */
-
- proc_ctx->is_iecp_enabled = (proc_ctx->filters_mask & VPP_IECP_MASK) != 0;
- proc_ctx->is_dn_enabled = (proc_ctx->filters_mask & VPP_DNDI_DN) != 0;
- proc_ctx->is_di_enabled = (proc_ctx->filters_mask & VPP_DNDI_DI) != 0;
- proc_ctx->is_di_adv_enabled = 0;
- proc_ctx->is_first_frame = 0;
- proc_ctx->is_second_field = 0;
-
- /* Check whether we are deinterlacing the second field */
- if (proc_ctx->is_di_enabled) {
- const VAProcFilterParameterBufferDeinterlacing * const deint_params =
- proc_ctx->filter_di;
-
- const unsigned int tff =
- !(deint_params->flags & VA_DEINTERLACING_BOTTOM_FIELD_FIRST);
- const unsigned int is_top_field =
- !(deint_params->flags & VA_DEINTERLACING_BOTTOM_FIELD);
-
- if ((tff ^ is_top_field) != 0) {
- struct object_surface * const obj_surface =
- proc_ctx->surface_input_object;
-
- if (proc_ctx->frame_store[FRAME_IN_CURRENT].surface_id != obj_surface->base.id) {
- WARN_ONCE("invalid surface provided for second field\n");
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- }
- proc_ctx->is_second_field = 1;
- }
- }
-
- /* Check whether we are deinterlacing the first frame */
- if (proc_ctx->is_di_enabled) {
- const VAProcFilterParameterBufferDeinterlacing * const deint_params =
- proc_ctx->filter_di;
-
- switch (deint_params->algorithm) {
- case VAProcDeinterlacingBob:
- proc_ctx->is_first_frame = 1;
- break;
- case VAProcDeinterlacingMotionAdaptive:
- case VAProcDeinterlacingMotionCompensated:
- if (proc_ctx->frame_store[FRAME_IN_CURRENT].surface_id == VA_INVALID_ID)
- proc_ctx->is_first_frame = 1;
- else if (proc_ctx->is_second_field) {
- /* At this stage, we have already deinterlaced the
- first field successfully. So, the first frame flag
- is trigerred if the previous field was deinterlaced
- without reference frame */
- if (proc_ctx->frame_store[FRAME_IN_PREVIOUS].surface_id == VA_INVALID_ID)
- proc_ctx->is_first_frame = 1;
- }
- else {
- const VAProcPipelineParameterBuffer * const pipe =
- proc_ctx->pipeline_param;
-
- if (pipe->num_forward_references < 1 ||
- pipe->forward_references[0] == VA_INVALID_ID) {
- WARN_ONCE("A forward temporal reference is needed for Motion adaptive/compensated deinterlacing !!!\n");
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- }
- }
- proc_ctx->is_di_adv_enabled = 1;
- break;
- default:
- WARN_ONCE("unsupported deinterlacing algorithm (%d)\n",
- deint_params->algorithm);
- return VA_STATUS_ERROR_UNSUPPORTED_FILTER;
- }
- }
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus
-gen75_vebox_process_picture(VADriverContextP ctx,
- struct intel_vebox_context *proc_ctx)
-{
- VAStatus status;
-
- status = gen75_vebox_init_pipe_params(ctx, proc_ctx);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- status = gen75_vebox_init_filter_params(ctx, proc_ctx);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- status = hsw_veb_pre_format_convert(ctx, proc_ctx);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- status = gen75_vebox_ensure_surfaces(ctx, proc_ctx);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- status = gen75_vebox_ensure_surfaces_storage(ctx, proc_ctx);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- if (proc_ctx->filters_mask & VPP_SHARP_MASK) {
- vpp_sharpness_filtering(ctx, proc_ctx);
- } else if (proc_ctx->format_convert_flags & POST_COPY_CONVERT) {
- assert(proc_ctx->is_second_field);
- /* directly copy the saved frame in the second call */
- } else {
- intel_batchbuffer_start_atomic_veb(proc_ctx->batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(proc_ctx->batch);
- hsw_veb_state_table_setup(ctx, proc_ctx);
- hsw_veb_state_command(ctx, proc_ctx);
- hsw_veb_surface_state(ctx, proc_ctx, INPUT_SURFACE);
- hsw_veb_surface_state(ctx, proc_ctx, OUTPUT_SURFACE);
- hsw_veb_dndi_iecp_command(ctx, proc_ctx);
- intel_batchbuffer_end_atomic(proc_ctx->batch);
- intel_batchbuffer_flush(proc_ctx->batch);
- }
-
- status = hsw_veb_post_format_convert(ctx, proc_ctx);
-
- return status;
-}
-
-void gen75_vebox_context_destroy(VADriverContextP ctx,
- struct intel_vebox_context *proc_ctx)
-{
- int i;
-
- if(proc_ctx->vpp_gpe_ctx){
- vpp_gpe_context_destroy(ctx,proc_ctx->vpp_gpe_ctx);
- proc_ctx->vpp_gpe_ctx = NULL;
- }
-
- if(proc_ctx->surface_input_vebox != VA_INVALID_ID){
- i965_DestroySurfaces(ctx, &proc_ctx->surface_input_vebox, 1);
- proc_ctx->surface_input_vebox = VA_INVALID_ID;
- proc_ctx->surface_input_vebox_object = NULL;
- }
-
- if(proc_ctx->surface_output_vebox != VA_INVALID_ID){
- i965_DestroySurfaces(ctx, &proc_ctx->surface_output_vebox, 1);
- proc_ctx->surface_output_vebox = VA_INVALID_ID;
- proc_ctx->surface_output_vebox_object = NULL;
- }
-
- if(proc_ctx->surface_output_scaled != VA_INVALID_ID){
- i965_DestroySurfaces(ctx, &proc_ctx->surface_output_scaled, 1);
- proc_ctx->surface_output_scaled = VA_INVALID_ID;
- proc_ctx->surface_output_scaled_object = NULL;
- }
-
- for (i = 0; i < ARRAY_ELEMS(proc_ctx->frame_store); i++)
- frame_store_clear(&proc_ctx->frame_store[i], ctx);
-
- /* dndi state table */
- drm_intel_bo_unreference(proc_ctx->dndi_state_table.bo);
- proc_ctx->dndi_state_table.bo = NULL;
-
- /* iecp state table */
- drm_intel_bo_unreference(proc_ctx->iecp_state_table.bo);
- proc_ctx->iecp_state_table.bo = NULL;
-
- /* gamut statu table */
- drm_intel_bo_unreference(proc_ctx->gamut_state_table.bo);
- proc_ctx->gamut_state_table.bo = NULL;
-
- /* vertex state table */
- drm_intel_bo_unreference(proc_ctx->vertex_state_table.bo);
- proc_ctx->vertex_state_table.bo = NULL;
-
- intel_batchbuffer_free(proc_ctx->batch);
-
- free(proc_ctx);
-}
-
-struct intel_vebox_context * gen75_vebox_context_init(VADriverContextP ctx)
-{
- struct intel_driver_data *intel = intel_driver_data(ctx);
- struct intel_vebox_context *proc_context = calloc(1, sizeof(struct intel_vebox_context));
- int i;
-
- assert(proc_context);
- proc_context->batch = intel_batchbuffer_new(intel, I915_EXEC_VEBOX, 0);
-
- for (i = 0; i < ARRAY_ELEMS(proc_context->frame_store); i++)
- proc_context->frame_store[i].surface_id = VA_INVALID_ID;
-
- proc_context->filters_mask = 0;
- proc_context->surface_output_object = NULL;
- proc_context->surface_input_object = NULL;
- proc_context->surface_input_vebox = VA_INVALID_ID;
- proc_context->surface_input_vebox_object = NULL;
- proc_context->surface_output_vebox = VA_INVALID_ID;
- proc_context->surface_output_vebox_object = NULL;
- proc_context->surface_output_scaled = VA_INVALID_ID;
- proc_context->surface_output_scaled_object = NULL;
- proc_context->filters_mask = 0;
- proc_context->format_convert_flags = 0;
- proc_context->vpp_gpe_ctx = NULL;
-
- return proc_context;
-}
-
-void bdw_veb_state_command(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
-{
- struct intel_batchbuffer *batch = proc_ctx->batch;
-
- BEGIN_VEB_BATCH(batch, 0xc);
- OUT_VEB_BATCH(batch, VEB_STATE | (0xc - 2));
- OUT_VEB_BATCH(batch,
- 0 << 25 | // state surface control bits
- 0 << 23 | // reserved.
- 0 << 22 | // gamut expansion position
- 0 << 15 | // reserved.
- 0 << 14 | // single slice vebox enable
- 0 << 13 | // hot pixel filter enable
- 0 << 12 | // alpha plane enable
- 0 << 11 | // vignette enable
- 0 << 10 | // demosaic enable
- proc_ctx->current_output_type << 8 | // DI output frame
- 1 << 7 | // 444->422 downsample method
- 1 << 6 | // 422->420 downsample method
- proc_ctx->is_first_frame << 5 | // DN/DI first frame
- proc_ctx->is_di_enabled << 4 | // DI enable
- proc_ctx->is_dn_enabled << 3 | // DN enable
- proc_ctx->is_iecp_enabled << 2 | // global IECP enabled
- 0 << 1 | // ColorGamutCompressionEnable
- 0 ) ; // ColorGamutExpansionEnable.
-
- OUT_RELOC64(batch,
- proc_ctx->dndi_state_table.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
-
- OUT_RELOC64(batch,
- proc_ctx->iecp_state_table.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
-
- OUT_RELOC64(batch,
- proc_ctx->gamut_state_table.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
-
- OUT_RELOC64(batch,
- proc_ctx->vertex_state_table.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
-
-
- OUT_VEB_BATCH(batch, 0);/*caputre pipe state pointer*/
- OUT_VEB_BATCH(batch, 0);
-
- ADVANCE_VEB_BATCH(batch);
-}
-
-void bdw_veb_dndi_iecp_command(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
-{
- struct intel_batchbuffer *batch = proc_ctx->batch;
- unsigned char frame_ctrl_bits = 0;
- struct object_surface *obj_surface = proc_ctx->frame_store[FRAME_IN_CURRENT].obj_surface;
- unsigned int width64 = ALIGN(proc_ctx->width_input, 64);
-
- assert(obj_surface);
- if (width64 > obj_surface->orig_width)
- width64 = obj_surface->orig_width;
-
- BEGIN_VEB_BATCH(batch, 0x14);
- OUT_VEB_BATCH(batch, VEB_DNDI_IECP_STATE | (0x14 - 2));//DWord 0
- OUT_VEB_BATCH(batch, (width64 - 1));
-
- OUT_RELOC64(batch,
- proc_ctx->frame_store[FRAME_IN_CURRENT].obj_surface->bo,
- I915_GEM_DOMAIN_RENDER, 0, frame_ctrl_bits);//DWord 2
-
- OUT_RELOC64(batch,
- proc_ctx->frame_store[FRAME_IN_PREVIOUS].obj_surface->bo,
- I915_GEM_DOMAIN_RENDER, 0, frame_ctrl_bits);//DWord 4
-
- OUT_RELOC64(batch,
- proc_ctx->frame_store[FRAME_IN_STMM].obj_surface->bo,
- I915_GEM_DOMAIN_RENDER, 0, frame_ctrl_bits);//DWord 6
-
- OUT_RELOC64(batch,
- proc_ctx->frame_store[FRAME_OUT_STMM].obj_surface->bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, frame_ctrl_bits);//DWord 8
-
- OUT_RELOC64(batch,
- proc_ctx->frame_store[FRAME_OUT_CURRENT_DN].obj_surface->bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, frame_ctrl_bits);//DWord 10
-
- OUT_RELOC64(batch,
- proc_ctx->frame_store[FRAME_OUT_CURRENT].obj_surface->bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, frame_ctrl_bits);//DWord 12
-
- OUT_RELOC64(batch,
- proc_ctx->frame_store[FRAME_OUT_PREVIOUS].obj_surface->bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, frame_ctrl_bits);//DWord 14
-
- OUT_RELOC64(batch,
- proc_ctx->frame_store[FRAME_OUT_STATISTIC].obj_surface->bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, frame_ctrl_bits);//DWord 16
-
- OUT_VEB_BATCH(batch,0);//DWord 18
- OUT_VEB_BATCH(batch,0);//DWord 19
-
- ADVANCE_VEB_BATCH(batch);
-}
-
-VAStatus
-gen8_vebox_process_picture(VADriverContextP ctx,
- struct intel_vebox_context *proc_ctx)
-{
- VAStatus status;
-
- status = gen75_vebox_init_pipe_params(ctx, proc_ctx);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- status = gen75_vebox_init_filter_params(ctx, proc_ctx);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- status = hsw_veb_pre_format_convert(ctx, proc_ctx);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- status = gen75_vebox_ensure_surfaces(ctx, proc_ctx);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- status = gen75_vebox_ensure_surfaces_storage(ctx, proc_ctx);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- if (proc_ctx->filters_mask & VPP_SHARP_MASK) {
- vpp_sharpness_filtering(ctx, proc_ctx);
- } else if (proc_ctx->format_convert_flags & POST_COPY_CONVERT) {
- assert(proc_ctx->is_second_field);
- /* directly copy the saved frame in the second call */
- } else {
- intel_batchbuffer_start_atomic_veb(proc_ctx->batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(proc_ctx->batch);
- hsw_veb_state_table_setup(ctx, proc_ctx);
- bdw_veb_state_command(ctx, proc_ctx);
- hsw_veb_surface_state(ctx, proc_ctx, INPUT_SURFACE);
- hsw_veb_surface_state(ctx, proc_ctx, OUTPUT_SURFACE);
- bdw_veb_dndi_iecp_command(ctx, proc_ctx);
- intel_batchbuffer_end_atomic(proc_ctx->batch);
- intel_batchbuffer_flush(proc_ctx->batch);
- }
-
- status = hsw_veb_post_format_convert(ctx, proc_ctx);
-
- return status;
-}
-
-
-void
-skl_veb_dndi_table(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
-{
- unsigned int* p_table ;
- unsigned int progressive_dn = 1;
- unsigned int dndi_top_first = 0;
- unsigned int is_mcdi_enabled = 0;
-
- if (proc_ctx->is_di_enabled) {
- const VAProcFilterParameterBufferDeinterlacing * const deint_params =
- proc_ctx->filter_di;
-
- progressive_dn = 0;
-
- /* If we are in "First Frame" mode, i.e. past frames are not
- available for motion measure, then don't use the TFF flag */
- dndi_top_first = !(deint_params->flags & (proc_ctx->is_first_frame ?
- VA_DEINTERLACING_BOTTOM_FIELD :
- VA_DEINTERLACING_BOTTOM_FIELD_FIRST));
-
- is_mcdi_enabled =
- (deint_params->algorithm == VAProcDeinterlacingMotionCompensated);
- }
-
- /*
- VAProcFilterParameterBufferDeinterlacing *di_param =
- (VAProcFilterParameterBufferDeinterlacing *) proc_ctx->filter_di;
-
- VAProcFilterParameterBuffer * dn_param =
- (VAProcFilterParameterBuffer *) proc_ctx->filter_dn;
- */
- p_table = (unsigned int *)proc_ctx->dndi_state_table.ptr;
-
- *p_table ++ = ( 140 << 20 | // denoise stad threshold . w1
- 192 << 12 | // dnmh_history_max
- 7 << 8 | // dnmh_delta[3:0]
- 1 ); // denoise moving pixel threshold
-
- *p_table ++ = ( 38 << 20 | // denoise asd threshold
- 0 << 10 | // temporal diff th
- 0 ); // low temporal diff th
-
- *p_table ++ = ( progressive_dn << 28 | // progressive dn
- 38 << 16 | // denoise th for sum of complexity measure
- 32 << 10 | // dnmh_history_init[5:0]
- 0 ); // reserved
-
- *p_table ++ = ( 0 << 28 | // hot pixel count
- 0 << 20 | // hot pixel threshold
- 1 << 12 | // block noise estimate edge threshold
- 20 ); // block noise estimate noise threshold
-
- *p_table ++ = ( 140<< 16 | // chroma denoise stad threshold
- 0 << 13 | // reserved
- 1 << 12 | // chrome denoise enable
- 13 << 6 | // chr temp diff th
- 7 ); // chr temp diff low
-
- *p_table ++ = 0; // weight
-
- *p_table ++ = ( 0 << 16 | // dn_thmax
- 0 ); // dn_thmin
-
- *p_table ++ = ( 0 << 16 | // dn_prt5
- 0 ); // dn_dyn_thmin
-
- *p_table ++ = ( 0 << 16 | // dn_prt4
- 0 ); // dn_prt3
-
- *p_table ++ = ( 0 << 16 | // dn_prt2
- 0 ); // dn_prt1
-
- *p_table ++ = ( 0 << 16 | // dn_prt0
- 0 << 10 | // dn_wd22
- 0 << 5 | // dh_wd21
- 0 ); // dh_wd20
-
- *p_table ++ = ( 0 << 25 | // dn_wd12
- 0 << 20 | // dn_wd11
- 0 << 15 | // dn_wd10
- 0 << 10 | // dn_wd02
- 0 << 5 | // dn_wd01
- 0 ); // dn_wd00
-
- *p_table ++ = ( 2 << 10 | // stmm c2
- 9 << 6 | // cat slope minus 1
- 5 << 2 | // sad tight threshold
- 0 ); // smooth mv th
-
- *p_table ++ = ( 0 << 31 | // stmm blending constant select
- 64 << 24 | // stmm trc1
- 125<< 16 | // stmm trc2
- 0 << 14 | // reserved
- 30 << 8 | // multiplier for vecm
- 150 ); // maximum stmm
-
- *p_table ++ = ( 118<< 24 | // minumum stmm
- 0 << 22 | // stmm shift down
- 1 << 20 | // stmm shift up
- 5 << 16 | // stmm output shift
- 100 << 8 | // sdi threshold
- 5 ); // sdi delta
-
- *p_table ++ = ( 50 << 24 | // sdi fallback mode 1 t1 constant
- 100 << 16 | // sdi fallback mode 1 t2 constant
- 37 << 8 | // sdi fallback mode 2 constant(angle2x1)
- 175 ); // fmd temporal difference threshold
-
- *p_table ++ = ( 16 << 24 | // fmd #1 vertical difference th . w7
- 100<< 16 | // fmd #2 vertical difference th
- 0 << 14 | // cat threshold
- 2 << 8 | // fmd tear threshold
- is_mcdi_enabled << 7 | // mcdi enable, use motion compensated deinterlace algorithm
- dndi_top_first << 3 | // dn/di top first
- 0 ); // reserved
-
- *p_table ++ = ( 10 << 19 | // neighbor pixel threshold
- 0 << 16 | // fmd for 2nd field of previous frame
- 25 << 10 | // mc pixel consistency threshold
- 0 << 8 | // fmd for 1st field for current frame
- 10 << 4 | // sad thb
- 5 ); // sad tha
-}
-
-void skl_veb_iecp_csc_transform_table(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
-{
- unsigned int *p_table = (unsigned int*)(proc_ctx->iecp_state_table.ptr + 220);
- float tran_coef[9] = {1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0};
- float v_coef[3] = {0.0, 0.0, 0.0};
- float u_coef[3] = {0.0, 0.0, 0.0};
- int is_transform_enabled = 0;
-
- if(!(proc_ctx->filters_mask & VPP_IECP_CSC_TRANSFORM)){
- memset(p_table, 0, 12 * 4);
- return;
- }
-
- if(proc_ctx->fourcc_input == VA_FOURCC_RGBA &&
- (proc_ctx->fourcc_output == VA_FOURCC_NV12 ||
- proc_ctx->fourcc_output == VA_FOURCC_YV12 ||
- proc_ctx->fourcc_output == VA_FOURCC_YVY2 ||
- proc_ctx->fourcc_output == VA_FOURCC_AYUV)) {
-
- tran_coef[0] = 0.257;
- tran_coef[1] = 0.504;
- tran_coef[2] = 0.098;
- tran_coef[3] = -0.148;
- tran_coef[4] = -0.291;
- tran_coef[5] = 0.439;
- tran_coef[6] = 0.439;
- tran_coef[7] = -0.368;
- tran_coef[8] = -0.071;
-
- u_coef[0] = 16 * 4;
- u_coef[1] = 128 * 4;
- u_coef[2] = 128 * 4;
-
- is_transform_enabled = 1;
- }else if((proc_ctx->fourcc_input == VA_FOURCC_NV12 ||
- proc_ctx->fourcc_input == VA_FOURCC_YV12 ||
- proc_ctx->fourcc_input == VA_FOURCC_YUY2 ||
- proc_ctx->fourcc_input == VA_FOURCC_AYUV) &&
- proc_ctx->fourcc_output == VA_FOURCC_RGBA) {
- tran_coef[0] = 1.164;
- tran_coef[1] = 0.000;
- tran_coef[2] = 1.569;
- tran_coef[3] = 1.164;
- tran_coef[4] = -0.813;
- tran_coef[5] = -0.392;
- tran_coef[6] = 1.164;
- tran_coef[7] = 2.017;
- tran_coef[8] = 0.000;
-
- v_coef[0] = -16 * 4;
- v_coef[1] = -128 * 4;
- v_coef[2] = -128 * 4;
-
- is_transform_enabled = 1;
- }else if(proc_ctx->fourcc_input != proc_ctx->fourcc_output){
- //enable when input and output format are different.
- is_transform_enabled = 1;
- }
-
- if(is_transform_enabled == 0){
- memset(p_table, 0, 12 * 4);
- }else{
- *p_table ++ = ( is_transform_enabled << 31 |
- 0 << 29 | // yuv_channel swap
- intel_format_convert(tran_coef[0], 2, 16, 1)); //c0, s2.16 format
-
- *p_table ++ = ( 0 << 19 | //reserved
- intel_format_convert(tran_coef[1], 2, 16, 1)); //c1, s2.16 format
-
- *p_table ++ = ( 0 << 19 | //reserved
- intel_format_convert(tran_coef[2], 2, 16, 1)); //c2, s2.16 format
-
- *p_table ++ = ( 0 << 19 | //reserved
- intel_format_convert(tran_coef[3], 2, 16, 1)); //c3, s2.16 format
-
- *p_table ++ = ( 0 << 19 | //reserved
- intel_format_convert(tran_coef[4], 2, 16, 1)); //c4, s2.16 format
-
- *p_table ++ = ( 0 << 19 | //reserved
- intel_format_convert(tran_coef[5], 2, 16, 1)); //c5, s2.16 format
-
- *p_table ++ = ( 0 << 19 | //reserved
- intel_format_convert(tran_coef[6], 2, 16, 1)); //c6, s2.16 format
-
- *p_table ++ = ( 0 << 19 | //reserved
- intel_format_convert(tran_coef[7], 2, 16, 1)); //c7, s2.16 format
-
- *p_table ++ = ( 0 << 19 | //reserved
- intel_format_convert(tran_coef[8], 2, 16, 1)); //c8, s2.16 format
-
- *p_table ++ = ( intel_format_convert(u_coef[0], 16, 0, 1) << 16 |
- intel_format_convert(v_coef[0], 16, 0, 1));
-
- *p_table ++ = ( intel_format_convert(u_coef[1], 16, 0, 1) << 16 |
- intel_format_convert(v_coef[1], 16, 0, 1));
-
- *p_table ++ = ( intel_format_convert(u_coef[2], 16, 0, 1) << 16 |
- intel_format_convert(v_coef[2], 16, 0, 1));
- }
-}
-
-void skl_veb_iecp_aoi_table(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
-{
- unsigned int *p_table = (unsigned int*)(proc_ctx->iecp_state_table.ptr + 27 * sizeof(unsigned int));
-
- if (!(proc_ctx->filters_mask & VPP_IECP_AOI)) {
- memset(p_table, 0, 3 * 4);
- } else {
- *p_table ++ = 0x00000000;
- *p_table ++ = 0x00030000;
- *p_table ++ = 0x00030000;
- }
-}
-
-void skl_veb_state_table_setup(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
-{
- if(proc_ctx->filters_mask & VPP_DNDI_MASK) {
- dri_bo *dndi_bo = proc_ctx->dndi_state_table.bo;
- dri_bo_map(dndi_bo, 1);
- proc_ctx->dndi_state_table.ptr = dndi_bo->virtual;
-
- skl_veb_dndi_table(ctx, proc_ctx);
-
- dri_bo_unmap(dndi_bo);
- }
-
- if(proc_ctx->filters_mask & VPP_IECP_MASK) {
- dri_bo *iecp_bo = proc_ctx->iecp_state_table.bo;
- dri_bo_map(iecp_bo, 1);
- proc_ctx->iecp_state_table.ptr = iecp_bo->virtual;
- memset(proc_ctx->iecp_state_table.ptr, 0, 90 * 4);
-
- hsw_veb_iecp_std_table(ctx, proc_ctx);
- hsw_veb_iecp_ace_table(ctx, proc_ctx);
- hsw_veb_iecp_tcc_table(ctx, proc_ctx);
- hsw_veb_iecp_pro_amp_table(ctx, proc_ctx);
- skl_veb_iecp_csc_transform_table(ctx, proc_ctx);
- skl_veb_iecp_aoi_table(ctx, proc_ctx);
-
- dri_bo_unmap(iecp_bo);
- }
-}
-
-void
-skl_veb_state_command(VADriverContextP ctx, struct intel_vebox_context *proc_ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = proc_ctx->batch;
-
- BEGIN_VEB_BATCH(batch, 0x10);
- OUT_VEB_BATCH(batch, VEB_STATE | (0x10 - 2));
- OUT_VEB_BATCH(batch,
- ((i965->intel.mocs_state) << 25) | // state surface control bits
- 0 << 23 | // reserved.
- 0 << 22 | // gamut expansion position
- 0 << 15 | // reserved.
- 0 << 14 | // single slice vebox enable
- 0 << 13 | // hot pixel filter enable
- 0 << 12 | // alpha plane enable
- 0 << 11 | // vignette enable
- 0 << 10 | // demosaic enable
- proc_ctx->current_output_type << 8 | // DI output frame
- 1 << 7 | // 444->422 downsample method
- 1 << 6 | // 422->420 downsample method
- proc_ctx->is_first_frame << 5 | // DN/DI first frame
- proc_ctx->is_di_enabled << 4 | // DI enable
- proc_ctx->is_dn_enabled << 3 | // DN enable
- proc_ctx->is_iecp_enabled << 2 | // global IECP enabled
- 0 << 1 | // ColorGamutCompressionEnable
- 0 ) ; // ColorGamutExpansionEnable.
-
- OUT_RELOC(batch,
- proc_ctx->dndi_state_table.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
-
- OUT_VEB_BATCH(batch, 0);
-
- OUT_RELOC(batch,
- proc_ctx->iecp_state_table.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
-
- OUT_VEB_BATCH(batch, 0);
-
- OUT_RELOC(batch,
- proc_ctx->gamut_state_table.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
-
- OUT_VEB_BATCH(batch, 0);
-
- OUT_RELOC(batch,
- proc_ctx->vertex_state_table.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
-
- OUT_VEB_BATCH(batch, 0);
-
- OUT_VEB_BATCH(batch, 0);/*caputre pipe state pointer*/
- OUT_VEB_BATCH(batch, 0);
-
- OUT_VEB_BATCH(batch, 0);/*lace lut table state pointer*/
- OUT_VEB_BATCH(batch, 0);
-
- OUT_VEB_BATCH(batch, 0);/*gamma correction values address*/
- OUT_VEB_BATCH(batch, 0);
-
- ADVANCE_VEB_BATCH(batch);
-}
-
-void skl_veb_surface_state(VADriverContextP ctx, struct intel_vebox_context *proc_ctx, unsigned int is_output)
-{
- struct intel_batchbuffer *batch = proc_ctx->batch;
- unsigned int u_offset_y = 0, v_offset_y = 0;
- unsigned int is_uv_interleaved = 0, tiling = 0, swizzle = 0;
- unsigned int surface_format = PLANAR_420_8;
- struct object_surface* obj_surf = NULL;
- unsigned int surface_pitch = 0;
- unsigned int half_pitch_chroma = 0;
- unsigned int derived_pitch;
-
- if (is_output) {
- obj_surf = proc_ctx->frame_store[FRAME_OUT_CURRENT].obj_surface;
- } else {
- obj_surf = proc_ctx->frame_store[FRAME_IN_CURRENT].obj_surface;
- }
-
- assert(obj_surf->fourcc == VA_FOURCC_NV12 ||
- obj_surf->fourcc == VA_FOURCC_YUY2 ||
- obj_surf->fourcc == VA_FOURCC_AYUV ||
- obj_surf->fourcc == VA_FOURCC_RGBA ||
- obj_surf->fourcc == VA_FOURCC_P010);
-
- if (obj_surf->fourcc == VA_FOURCC_NV12) {
- surface_format = PLANAR_420_8;
- surface_pitch = obj_surf->width;
- is_uv_interleaved = 1;
- half_pitch_chroma = 0;
- } else if (obj_surf->fourcc == VA_FOURCC_YUY2) {
- surface_format = YCRCB_NORMAL;
- surface_pitch = obj_surf->width * 2;
- is_uv_interleaved = 0;
- half_pitch_chroma = 0;
- } else if (obj_surf->fourcc == VA_FOURCC_AYUV) {
- surface_format = PACKED_444A_8;
- surface_pitch = obj_surf->width * 4;
- is_uv_interleaved = 0;
- half_pitch_chroma = 0;
- } else if (obj_surf->fourcc == VA_FOURCC_RGBA) {
- surface_format = R8G8B8A8_UNORM_SRGB;
- surface_pitch = obj_surf->width * 4;
- is_uv_interleaved = 0;
- half_pitch_chroma = 0;
- } else if (obj_surf->fourcc == VA_FOURCC_P010) {
- surface_format = PLANAR_420_16;
- surface_pitch = obj_surf->width;
- is_uv_interleaved = 1;
- half_pitch_chroma = 0;
- }
-
- derived_pitch = surface_pitch;
-
- u_offset_y = obj_surf->y_cb_offset;
- v_offset_y = obj_surf->y_cr_offset;
-
- dri_bo_get_tiling(obj_surf->bo, &tiling, &swizzle);
-
- BEGIN_VEB_BATCH(batch, 9);
- OUT_VEB_BATCH(batch, VEB_SURFACE_STATE | (9 - 2));
- OUT_VEB_BATCH(batch,
- 0 << 1 | // reserved
- is_output); // surface indentification.
-
- OUT_VEB_BATCH(batch,
- (obj_surf->orig_height - 1) << 18 | // height . w3
- (obj_surf->orig_width - 1) << 4 | // width
- 0); // reserve
-
- OUT_VEB_BATCH(batch,
- surface_format << 28 | // surface format, YCbCr420. w4
- is_uv_interleaved << 27 | // interleave chrome , two seperate palar
- 0 << 20 | // reserved
- (surface_pitch - 1) << 3 | // surface pitch, 64 align
- half_pitch_chroma << 2 | // half pitch for chrome
- !!tiling << 1 | // tiled surface, linear surface used
- (tiling == I915_TILING_Y)); // tiled walk, ignored when liner surface
-
- OUT_VEB_BATCH(batch,
- 0 << 16 | // X offset for V(Cb)
- u_offset_y); // Y offset for V(Cb)
-
- OUT_VEB_BATCH(batch,
- 0 << 16 | // X offset for V(Cr)
- v_offset_y ); // Y offset for V(Cr)
-
- OUT_VEB_BATCH(batch, 0);
-
- OUT_VEB_BATCH(batch, derived_pitch - 1);
-
- OUT_VEB_BATCH(batch, 0);
-
- ADVANCE_VEB_BATCH(batch);
-}
-
-VAStatus
-gen9_vebox_process_picture(VADriverContextP ctx,
- struct intel_vebox_context *proc_ctx)
-{
- VAStatus status;
-
- status = gen75_vebox_init_pipe_params(ctx, proc_ctx);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- status = gen75_vebox_init_filter_params(ctx, proc_ctx);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- status = hsw_veb_pre_format_convert(ctx, proc_ctx);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- status = gen75_vebox_ensure_surfaces(ctx, proc_ctx);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- status = gen75_vebox_ensure_surfaces_storage(ctx, proc_ctx);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- if (proc_ctx->filters_mask & VPP_SHARP_MASK) {
- vpp_sharpness_filtering(ctx, proc_ctx);
- } else if (proc_ctx->format_convert_flags & POST_COPY_CONVERT) {
- assert(proc_ctx->is_second_field);
- /* directly copy the saved frame in the second call */
- } else {
- intel_batchbuffer_start_atomic_veb(proc_ctx->batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(proc_ctx->batch);
- skl_veb_state_table_setup(ctx, proc_ctx);
- skl_veb_state_command(ctx, proc_ctx);
- skl_veb_surface_state(ctx, proc_ctx, INPUT_SURFACE);
- skl_veb_surface_state(ctx, proc_ctx, OUTPUT_SURFACE);
- bdw_veb_dndi_iecp_command(ctx, proc_ctx);
- intel_batchbuffer_end_atomic(proc_ctx->batch);
- intel_batchbuffer_flush(proc_ctx->batch);
- }
-
- status = hsw_veb_post_format_convert(ctx, proc_ctx);
-
- return status;
-}
diff --git a/src/gen75_vpp_vebox.h b/src/gen75_vpp_vebox.h
deleted file mode 100644
index d1fb32d..0000000
--- a/src/gen75_vpp_vebox.h
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Li Xiaowei <xiaowei.a.li@intel.com>
- *
- */
-
-#ifndef _GEN75_VPP_VEBOX_H
-#define _GEN75_VPP_VEBOX_H
-
-#include <xf86drm.h>
-#include <drm.h>
-#include <i915_drm.h>
-#include <intel_bufmgr.h>
-#include <va/va_vpp.h>
-#include "i965_drv_video.h"
-
-#include "gen75_vpp_gpe.h"
-
-#define INPUT_SURFACE 0
-#define OUTPUT_SURFACE 1
-
-#define VPP_DNDI_DN 0x00000001
-#define VPP_DNDI_DI 0x00000002
-#define VPP_DNDI_MASK 0x000000ff
-#define VPP_IECP_STD_STE 0x00000100
-#define VPP_IECP_ACE 0x00000200
-#define VPP_IECP_TCC 0x00000400
-#define VPP_IECP_PRO_AMP 0x00000800
-#define VPP_IECP_CSC 0x00001000
-#define VPP_IECP_AOI 0x00002000
-#define VPP_IECP_CSC_TRANSFORM 0x00004000
-#define VPP_IECP_MASK 0x0000ff00
-#define VPP_SHARP 0x00010000
-#define VPP_SHARP_MASK 0x000f0000
-#define MAX_FILTER_SUM 8
-
-#define PRE_FORMAT_CONVERT 0x01
-#define POST_FORMAT_CONVERT 0x02
-#define POST_SCALING_CONVERT 0x04
-#define POST_COPY_CONVERT 0x08
-
-enum {
- FRAME_IN_CURRENT = 0,
- FRAME_IN_PREVIOUS,
- FRAME_IN_STMM,
- FRAME_OUT_STMM,
- FRAME_OUT_CURRENT_DN,
- FRAME_OUT_CURRENT,
- FRAME_OUT_PREVIOUS,
- FRAME_OUT_STATISTIC,
- FRAME_STORE_COUNT,
-};
-
-enum SURFACE_FORMAT{
- YCRCB_NORMAL = 0,
- YCRCB_SWAPUVY,
- YCRCB_SWAPUV,
- YCRCB_SWAPY,
- PLANAR_420_8, //NV12
- PACKED_444A_8,
- PACKED_422_16,
- R10G10B10A2_UNORM_SRGB,
- R8G8B8A8_UNORM_SRGB,
- PACKED_444_16,
- PLANAR_422_16,
- Y8_UNORM,
- PLANAR_420_16,
- R16G16B16A16,
- SURFACE_FORMAT_SUM
-};
-
-typedef struct veb_frame_store {
- struct object_surface *obj_surface;
- VASurfaceID surface_id; /* always relative to the input surface */
- unsigned int is_internal_surface : 1;
- unsigned int is_scratch_surface : 1;
-} VEBFrameStore;
-
-typedef struct veb_buffer {
- dri_bo *bo;
- char * ptr;
- unsigned char valid;
-} VEBBuffer;
-
-struct intel_vebox_context
-{
- struct intel_batchbuffer *batch;
-
- struct object_surface *surface_input_object;
- struct object_surface *surface_output_object;
- VASurfaceID surface_input_vebox;
- struct object_surface *surface_input_vebox_object;
- VASurfaceID surface_output_vebox;
- struct object_surface *surface_output_vebox_object;
- VASurfaceID surface_output_scaled;
- struct object_surface *surface_output_scaled_object;
-
- unsigned int fourcc_input;
- unsigned int fourcc_output;
-
- int width_input;
- int height_input;
- int width_output;
- int height_output;
-
- VEBFrameStore frame_store[FRAME_STORE_COUNT];
-
- VEBBuffer dndi_state_table;
- VEBBuffer iecp_state_table;
- VEBBuffer gamut_state_table;
- VEBBuffer vertex_state_table;
-
- unsigned int filters_mask;
- int current_output;
- int current_output_type; /* 0:Both, 1:Previous, 2:Current */
-
- VAProcPipelineParameterBuffer * pipeline_param;
- void * filter_dn;
- void * filter_di;
- void * filter_iecp_std;
- void * filter_iecp_ace;
- void * filter_iecp_tcc;
- void * filter_iecp_amp;
-
- unsigned int filter_iecp_amp_num_elements;
- unsigned char format_convert_flags;
-
- /* Temporary flags live until the current picture is processed */
- unsigned int is_iecp_enabled : 1;
- unsigned int is_dn_enabled : 1;
- unsigned int is_di_enabled : 1;
- unsigned int is_di_adv_enabled : 1;
- unsigned int is_first_frame : 1;
- unsigned int is_second_field : 1;
-
- struct vpp_gpe_context *vpp_gpe_ctx;
-};
-
-VAStatus gen75_vebox_process_picture(VADriverContextP ctx,
- struct intel_vebox_context *proc_ctx);
-
-void gen75_vebox_context_destroy(VADriverContextP ctx,
- struct intel_vebox_context *proc_ctx);
-
-struct intel_vebox_context * gen75_vebox_context_init(VADriverContextP ctx);
-
-VAStatus gen8_vebox_process_picture(VADriverContextP ctx,
- struct intel_vebox_context *proc_ctx);
-
-VAStatus gen9_vebox_process_picture(VADriverContextP ctx,
- struct intel_vebox_context *proc_ctx);
-
-#endif
diff --git a/src/gen7_mfc.c b/src/gen7_mfc.c
deleted file mode 100644
index ce43e90..0000000
--- a/src/gen7_mfc.c
+++ /dev/null
@@ -1,1173 +0,0 @@
-/*
- * Copyright © 2011 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Zhou Chang <chang.zhou@intel.com>
- * Xiang, Haihao <haihao.xiang@intel.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include "intel_batchbuffer.h"
-#include "i965_defines.h"
-#include "i965_structs.h"
-#include "i965_drv_video.h"
-#include "i965_encoder.h"
-#include "i965_encoder_utils.h"
-#include "gen6_mfc.h"
-#include "gen6_vme.h"
-
-#define SURFACE_STATE_PADDED_SIZE MAX(SURFACE_STATE_PADDED_SIZE_GEN6, SURFACE_STATE_PADDED_SIZE_GEN7)
-#define SURFACE_STATE_OFFSET(index) (SURFACE_STATE_PADDED_SIZE * index)
-#define BINDING_TABLE_OFFSET(index) (SURFACE_STATE_OFFSET(MAX_MEDIA_SURFACES_GEN6) + sizeof(unsigned int) * index)
-
-extern void
-gen6_mfc_pipe_buf_addr_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context);
-extern void
-gen6_mfc_bsp_buf_base_addr_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context);
-extern void
-gen6_mfc_init(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
-
-extern VAStatus
-gen6_mfc_run(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
-
-extern VAStatus
-gen6_mfc_stop(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int *encoded_bits_size);
-
-extern VAStatus
-gen6_mfc_avc_encode_picture(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
-
-static const uint32_t gen7_mfc_batchbuffer_avc_intra[][4] = {
-#include "shaders/utils/mfc_batchbuffer_avc_intra.g7b"
-};
-
-static const uint32_t gen7_mfc_batchbuffer_avc_inter[][4] = {
-#include "shaders/utils/mfc_batchbuffer_avc_inter.g7b"
-};
-
-static struct i965_kernel gen7_mfc_kernels[] = {
- {
- "MFC AVC INTRA BATCHBUFFER ",
- MFC_BATCHBUFFER_AVC_INTRA,
- gen7_mfc_batchbuffer_avc_intra,
- sizeof(gen7_mfc_batchbuffer_avc_intra),
- NULL
- },
-
- {
- "MFC AVC INTER BATCHBUFFER ",
- MFC_BATCHBUFFER_AVC_INTER,
- gen7_mfc_batchbuffer_avc_inter,
- sizeof(gen7_mfc_batchbuffer_avc_inter),
- NULL
- },
-};
-
-static void
-gen7_mfc_pipe_mode_select(VADriverContextP ctx,
- int standard_select,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- assert(standard_select == MFX_FORMAT_MPEG2 ||
- standard_select == MFX_FORMAT_AVC);
-
- BEGIN_BCS_BATCH(batch, 5);
-
- OUT_BCS_BATCH(batch, MFX_PIPE_MODE_SELECT | (5 - 2));
- OUT_BCS_BATCH(batch,
- (MFX_LONG_MODE << 17) | /* Must be long format for encoder */
- (MFD_MODE_VLD << 15) | /* VLD mode */
- (1 << 10) | /* Stream-Out Enable */
- ((!!mfc_context->post_deblocking_output.bo) << 9) | /* Post Deblocking Output */
- ((!!mfc_context->pre_deblocking_output.bo) << 8) | /* Pre Deblocking Output */
- (0 << 8) | /* Pre Deblocking Output */
- (0 << 5) | /* not in stitch mode */
- (1 << 4) | /* encoding mode */
- (standard_select << 0)); /* standard select: avc or mpeg2 */
- OUT_BCS_BATCH(batch,
- (0 << 7) | /* expand NOA bus flag */
- (0 << 6) | /* disable slice-level clock gating */
- (0 << 5) | /* disable clock gating for NOA */
- (0 << 4) | /* terminate if AVC motion and POC table error occurs */
- (0 << 3) | /* terminate if AVC mbdata error occurs */
- (0 << 2) | /* terminate if AVC CABAC/CAVLC decode error occurs */
- (0 << 1) |
- (0 << 0));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_mfc_surface_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- BEGIN_BCS_BATCH(batch, 6);
-
- OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- ((mfc_context->surface_state.height - 1) << 18) |
- ((mfc_context->surface_state.width - 1) << 4));
- OUT_BCS_BATCH(batch,
- (MFX_SURFACE_PLANAR_420_8 << 28) | /* 420 planar YUV surface */
- (1 << 27) | /* must be 1 for interleave U/V, hardware requirement */
- (0 << 22) | /* surface object control state, FIXME??? */
- ((mfc_context->surface_state.w_pitch - 1) << 3) | /* pitch */
- (0 << 2) | /* must be 0 for interleave U/V */
- (1 << 1) | /* must be tiled */
- (I965_TILEWALK_YMAJOR << 0)); /* tile walk, TILEWALK_YMAJOR */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* must be 0 for interleave U/V */
- (mfc_context->surface_state.h_pitch)); /* y offset for U(cb) */
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_mfc_ind_obj_base_addr_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- BEGIN_BCS_BATCH(batch, 11);
-
- OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (11 - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- /* MFX Indirect MV Object Base Address */
- OUT_BCS_RELOC(batch, vme_context->vme_output.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
- OUT_BCS_BATCH(batch, 0x80000000); /* must set, up to 2G */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- /*MFC Indirect PAK-BSE Object Base Address for Encoder*/
- OUT_BCS_RELOC(batch,
- mfc_context->mfc_indirect_pak_bse_object.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_RELOC(batch,
- mfc_context->mfc_indirect_pak_bse_object.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- mfc_context->mfc_indirect_pak_bse_object.end_offset);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_mfc_avc_img_state(VADriverContextP ctx, struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
-
- int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
- int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
-
- BEGIN_BCS_BATCH(batch, 16);
-
- OUT_BCS_BATCH(batch, MFX_AVC_IMG_STATE | (16 - 2));
- /*DW1 frame size */
- OUT_BCS_BATCH(batch,
- ((width_in_mbs * height_in_mbs - 1) & 0xFFFF));
- OUT_BCS_BATCH(batch,
- ((height_in_mbs - 1) << 16) |
- ((width_in_mbs - 1) << 0));
- /*DW3 Qp setting */
- OUT_BCS_BATCH(batch,
- (0 << 24) | /* Second Chroma QP Offset */
- (0 << 16) | /* Chroma QP Offset */
- (0 << 14) | /* Max-bit conformance Intra flag */
- (0 << 13) | /* Max Macroblock size conformance Inter flag */
- (pPicParameter->pic_fields.bits.weighted_pred_flag << 12) | /*Weighted_Pred_Flag */
- (pPicParameter->pic_fields.bits.weighted_bipred_idc << 10) | /* Weighted_BiPred_Idc */
- (0 << 8) | /* FIXME: Image Structure */
- (0 << 0) ); /* Current Decoed Image Frame Store ID, reserved in Encode mode */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* Mininum Frame size */
- (0 << 15) | /* Disable reading of Macroblock Status Buffer */
- (0 << 14) | /* Load BitStream Pointer only once, 1 slic 1 frame */
- (0 << 13) | /* CABAC 0 word insertion test enable */
- (1 << 12) | /* MVUnpackedEnable,compliant to DXVA */
- (1 << 10) | /* Chroma Format IDC, 4:2:0 */
- (0 << 9) | /* FIXME: MbMvFormatFlag */
- (pPicParameter->pic_fields.bits.entropy_coding_mode_flag << 7) | /*0:CAVLC encoding mode,1:CABAC*/
- (0 << 6) | /* Only valid for VLD decoding mode */
- (0 << 5) | /* Constrained Intra Predition Flag, from PPS */
- (0 << 4) | /* Direct 8x8 inference flag */
- (pPicParameter->pic_fields.bits.transform_8x8_mode_flag << 3) | /*8x8 or 4x4 IDCT Transform Mode Flag*/
- (1 << 2) | /* Frame MB only flag */
- (0 << 1) | /* MBAFF mode is in active */
- (0 << 0)); /* Field picture flag */
- /*DW5 trequllis quantization */
- OUT_BCS_BATCH(batch, 0); /* Mainly about MB rate control and debug, just ignoring */
- OUT_BCS_BATCH(batch, /* Inter and Intra Conformance Max size limit */
- (0xBB8 << 16) | /* InterMbMaxSz */
- (0xEE8) ); /* IntraMbMaxSz */
- /* DW7 */
- OUT_BCS_BATCH(batch, 0); /* Reserved */
- OUT_BCS_BATCH(batch, 0); /* Slice QP Delta for bitrate control */
- OUT_BCS_BATCH(batch, 0); /* Slice QP Delta for bitrate control */
- /* DW10 frame bit setting */
- OUT_BCS_BATCH(batch, 0x8C000000);
- OUT_BCS_BATCH(batch, 0x00010000);
- OUT_BCS_BATCH(batch, 0);
- /* DW13 Ref setting */
- OUT_BCS_BATCH(batch, 0x02010100);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_mfc_qm_state(VADriverContextP ctx,
- int qm_type,
- unsigned int *qm,
- int qm_length,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- unsigned int qm_buffer[16];
-
- assert(qm_length <= 16);
- assert(sizeof(*qm) == 4);
- memcpy(qm_buffer, qm, qm_length * 4);
-
- BEGIN_BCS_BATCH(batch, 18);
- OUT_BCS_BATCH(batch, MFX_QM_STATE | (18 - 2));
- OUT_BCS_BATCH(batch, qm_type << 0);
- intel_batchbuffer_data(batch, qm_buffer, 16 * 4);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_mfc_avc_qm_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- unsigned int qm[16] = {
- 0x10101010, 0x10101010, 0x10101010, 0x10101010,
- 0x10101010, 0x10101010, 0x10101010, 0x10101010,
- 0x10101010, 0x10101010, 0x10101010, 0x10101010,
- 0x10101010, 0x10101010, 0x10101010, 0x10101010
- };
-
- gen7_mfc_qm_state(ctx, MFX_QM_AVC_4X4_INTRA_MATRIX, qm, 12, encoder_context);
- gen7_mfc_qm_state(ctx, MFX_QM_AVC_4X4_INTER_MATRIX, qm, 12, encoder_context);
- gen7_mfc_qm_state(ctx, MFX_QM_AVC_8x8_INTRA_MATRIX, qm, 16, encoder_context);
- gen7_mfc_qm_state(ctx, MFX_QM_AVC_8x8_INTER_MATRIX, qm, 16, encoder_context);
-}
-
-static void
-gen7_mfc_fqm_state(VADriverContextP ctx,
- int fqm_type,
- unsigned int *fqm,
- int fqm_length,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- unsigned int fqm_buffer[32];
-
- assert(fqm_length <= 32);
- assert(sizeof(*fqm) == 4);
- memcpy(fqm_buffer, fqm, fqm_length * 4);
-
- BEGIN_BCS_BATCH(batch, 34);
- OUT_BCS_BATCH(batch, MFX_FQM_STATE | (34 - 2));
- OUT_BCS_BATCH(batch, fqm_type << 0);
- intel_batchbuffer_data(batch, fqm_buffer, 32 * 4);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_mfc_avc_fqm_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- unsigned int qm[32] = {
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000
- };
-
- gen7_mfc_fqm_state(ctx, MFX_QM_AVC_4X4_INTRA_MATRIX, qm, 24, encoder_context);
- gen7_mfc_fqm_state(ctx, MFX_QM_AVC_4X4_INTER_MATRIX, qm, 24, encoder_context);
- gen7_mfc_fqm_state(ctx, MFX_QM_AVC_8x8_INTRA_MATRIX, qm, 32, encoder_context);
- gen7_mfc_fqm_state(ctx, MFX_QM_AVC_8x8_INTER_MATRIX, qm, 32, encoder_context);
-}
-
-static void
-gen7_mfc_avc_insert_object(VADriverContextP ctx, struct intel_encoder_context *encoder_context,
- unsigned int *insert_data, int lenght_in_dws, int data_bits_in_last_dw,
- int skip_emul_byte_count, int is_last_header, int is_end_of_slice, int emulation_flag,
- struct intel_batchbuffer *batch)
-{
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, lenght_in_dws + 2);
-
- OUT_BCS_BATCH(batch, MFX_INSERT_OBJECT | (lenght_in_dws + 2 - 2));
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* always start at offset 0 */
- (data_bits_in_last_dw << 8) |
- (skip_emul_byte_count << 4) |
- (!!emulation_flag << 3) |
- ((!!is_last_header) << 2) |
- ((!!is_end_of_slice) << 1) |
- (0 << 0)); /* FIXME: ??? */
- intel_batchbuffer_data(batch, insert_data, lenght_in_dws * 4);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static const int
-va_to_gen7_mpeg2_picture_type[3] = {
- 1, /* I */
- 2, /* P */
- 3 /* B */
-};
-
-static void
-gen7_mfc_mpeg2_pic_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct encode_state *encode_state)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncPictureParameterBufferMPEG2 *pic_param;
- int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
- int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
- VAEncSliceParameterBufferMPEG2 *slice_param = NULL;
-
- assert(encode_state->pic_param_ext && encode_state->pic_param_ext->buffer);
- pic_param = (VAEncPictureParameterBufferMPEG2 *)encode_state->pic_param_ext->buffer;
- slice_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[0]->buffer;
-
- BEGIN_BCS_BATCH(batch, 13);
- OUT_BCS_BATCH(batch, MFX_MPEG2_PIC_STATE | (13 - 2));
- OUT_BCS_BATCH(batch,
- (pic_param->f_code[1][1] & 0xf) << 28 | /* f_code[1][1] */
- (pic_param->f_code[1][0] & 0xf) << 24 | /* f_code[1][0] */
- (pic_param->f_code[0][1] & 0xf) << 20 | /* f_code[0][1] */
- (pic_param->f_code[0][0] & 0xf) << 16 | /* f_code[0][0] */
- pic_param->picture_coding_extension.bits.intra_dc_precision << 14 |
- pic_param->picture_coding_extension.bits.picture_structure << 12 |
- pic_param->picture_coding_extension.bits.top_field_first << 11 |
- pic_param->picture_coding_extension.bits.frame_pred_frame_dct << 10 |
- pic_param->picture_coding_extension.bits.concealment_motion_vectors << 9 |
- pic_param->picture_coding_extension.bits.q_scale_type << 8 |
- pic_param->picture_coding_extension.bits.intra_vlc_format << 7 |
- pic_param->picture_coding_extension.bits.alternate_scan << 6);
- OUT_BCS_BATCH(batch,
- 0 << 14 | /* LoadSlicePointerFlag, 0 means only loading bitstream pointer once */
- va_to_gen7_mpeg2_picture_type[pic_param->picture_type] << 9 |
- 0);
- OUT_BCS_BATCH(batch,
- 1 << 31 | /* slice concealment */
- (height_in_mbs - 1) << 16 |
- (width_in_mbs - 1));
-
- if (slice_param && slice_param->quantiser_scale_code >= 14)
- OUT_BCS_BATCH(batch, (3 << 1) | (1 << 4) | (5 << 8) | (1 << 12));
- else
- OUT_BCS_BATCH(batch, 0);
-
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- 0xFFF << 16 | /* InterMBMaxSize */
- 0xFFF << 0 | /* IntraMBMaxSize */
- 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_mfc_mpeg2_qm_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- unsigned char intra_qm[64] = {
- 8, 16, 19, 22, 26, 27, 29, 34,
- 16, 16, 22, 24, 27, 29, 34, 37,
- 19, 22, 26, 27, 29, 34, 34, 38,
- 22, 22, 26, 27, 29, 34, 37, 40,
- 22, 26, 27, 29, 32, 35, 40, 48,
- 26, 27, 29, 32, 35, 40, 48, 58,
- 26, 27, 29, 34, 38, 46, 56, 69,
- 27, 29, 35, 38, 46, 56, 69, 83
- };
-
- unsigned char non_intra_qm[64] = {
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16
- };
-
- gen7_mfc_qm_state(ctx, MFX_QM_MPEG_INTRA_QUANTIZER_MATRIX, (unsigned int *)intra_qm, 16, encoder_context);
- gen7_mfc_qm_state(ctx, MFX_QM_MPEG_NON_INTRA_QUANTIZER_MATRIX, (unsigned int *)non_intra_qm, 16,encoder_context);
-}
-
-static void
-gen7_mfc_mpeg2_fqm_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- unsigned short intra_fqm[64] = {
- 65536/0x8, 65536/0x10, 65536/0x13, 65536/0x16, 65536/0x16, 65536/0x1a, 65536/0x1a, 65536/0x1b,
- 65536/0x10, 65536/0x10, 65536/0x16, 65536/0x16, 65536/0x1a, 65536/0x1b, 65536/0x1b, 65536/0x1d,
- 65536/0x13, 65536/0x16, 65536/0x1a, 65536/0x1a, 65536/0x1b, 65536/0x1d, 65536/0x1d, 65536/0x23,
- 65536/0x16, 65536/0x18, 65536/0x1b, 65536/0x1b, 65536/0x13, 65536/0x20, 65536/0x22, 65536/0x26,
- 65536/0x1a, 65536/0x1b, 65536/0x13, 65536/0x13, 65536/0x20, 65536/0x23, 65536/0x26, 65536/0x2e,
- 65536/0x1b, 65536/0x1d, 65536/0x22, 65536/0x22, 65536/0x23, 65536/0x28, 65536/0x2e, 65536/0x38,
- 65536/0x1d, 65536/0x22, 65536/0x22, 65536/0x25, 65536/0x28, 65536/0x30, 65536/0x38, 65536/0x45,
- 65536/0x22, 65536/0x25, 65536/0x26, 65536/0x28, 65536/0x30, 65536/0x3a, 65536/0x45, 65536/0x53,
- };
-
- unsigned short non_intra_fqm[64] = {
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- };
-
- gen7_mfc_fqm_state(ctx, MFX_QM_MPEG_INTRA_QUANTIZER_MATRIX, (unsigned int *)intra_fqm, 32, encoder_context);
- gen7_mfc_fqm_state(ctx, MFX_QM_MPEG_NON_INTRA_QUANTIZER_MATRIX, (unsigned int *)non_intra_fqm, 32, encoder_context);
-}
-
-static void
-gen7_mfc_mpeg2_slicegroup_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- int x, int y,
- int next_x, int next_y,
- int is_fisrt_slice_group,
- int is_last_slice_group,
- int intra_slice,
- int qp,
- struct intel_batchbuffer *batch)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 8);
-
- OUT_BCS_BATCH(batch, MFC_MPEG2_SLICEGROUP_STATE | (8 - 2));
- OUT_BCS_BATCH(batch,
- 0 << 31 | /* MbRateCtrlFlag */
- !!is_last_slice_group << 19 | /* IsLastSliceGrp */
- 1 << 17 | /* Insert Header before the first slice group data */
- 1 << 16 | /* SliceData PresentFlag: always 1 */
- 1 << 15 | /* TailPresentFlag: always 1 */
- 0 << 14 | /* FirstSliceHdrDisabled: slice header for each slice */
- !!intra_slice << 13 | /* IntraSlice */
- !!intra_slice << 12 | /* IntraSliceFlag */
- 0);
- OUT_BCS_BATCH(batch,
- next_y << 24 |
- next_x << 16 |
- y << 8 |
- x << 0 |
- 0);
- OUT_BCS_BATCH(batch, qp); /* FIXME: SliceGroupQp */
- /* bitstream pointer is only loaded once for the first slice of a frame when
- * LoadSlicePointerFlag is 0
- */
- OUT_BCS_BATCH(batch, mfc_context->mfc_indirect_pak_bse_object.offset);
- OUT_BCS_BATCH(batch, 0); /* FIXME: */
- OUT_BCS_BATCH(batch, 0); /* FIXME: CorrectPoints */
- OUT_BCS_BATCH(batch, 0); /* FIXME: CVxxx */
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static int
-gen7_mfc_mpeg2_pak_object_intra(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- int x, int y,
- int first_mb_in_slice,
- int last_mb_in_slice,
- int first_mb_in_slice_group,
- int last_mb_in_slice_group,
- int mb_type,
- int qp_scale_code,
- int coded_block_pattern,
- unsigned char target_size_in_word,
- unsigned char max_size_in_word,
- struct intel_batchbuffer *batch)
-{
- int len_in_dwords = 9;
-
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, len_in_dwords);
-
- OUT_BCS_BATCH(batch, MFC_MPEG2_PAK_OBJECT | (len_in_dwords - 2));
- OUT_BCS_BATCH(batch,
- 0 << 24 | /* PackedMvNum */
- 0 << 20 | /* MvFormat */
- 7 << 17 | /* CbpDcY/CbpDcU/CbpDcV */
- 0 << 15 | /* TransformFlag: frame DCT */
- 0 << 14 | /* FieldMbFlag */
- 1 << 13 | /* IntraMbFlag */
- mb_type << 8 | /* MbType: Intra */
- 0 << 2 | /* SkipMbFlag */
- 0 << 0 | /* InterMbMode */
- 0);
- OUT_BCS_BATCH(batch, y << 16 | x);
- OUT_BCS_BATCH(batch,
- max_size_in_word << 24 |
- target_size_in_word << 16 |
- coded_block_pattern << 6 | /* CBP */
- 0);
- OUT_BCS_BATCH(batch,
- last_mb_in_slice << 31 |
- first_mb_in_slice << 30 |
- 0 << 27 | /* EnableCoeffClamp */
- last_mb_in_slice_group << 26 |
- 0 << 25 | /* MbSkipConvDisable */
- first_mb_in_slice_group << 24 |
- 0 << 16 | /* MvFieldSelect */
- qp_scale_code << 0 |
- 0);
- OUT_BCS_BATCH(batch, 0); /* MV[0][0] */
- OUT_BCS_BATCH(batch, 0); /* MV[1][0] */
- OUT_BCS_BATCH(batch, 0); /* MV[0][1] */
- OUT_BCS_BATCH(batch, 0); /* MV[1][1] */
-
- ADVANCE_BCS_BATCH(batch);
-
- return len_in_dwords;
-}
-
-#define MV_OFFSET_IN_WORD 112
-
-static struct _mv_ranges
-{
- int low; /* in the unit of 1/2 pixel */
- int high; /* in the unit of 1/2 pixel */
-} mv_ranges[] = {
- {0, 0},
- {-16, 15},
- {-32, 31},
- {-64, 63},
- {-128, 127},
- {-256, 255},
- {-512, 511},
- {-1024, 1023},
- {-2048, 2047},
- {-4096, 4095}
-};
-
-static int
-mpeg2_motion_vector(int mv, int pos, int display_max, int f_code)
-{
- if (mv + pos * 16 * 2 < 0 ||
- mv + (pos + 1) * 16 * 2 > display_max * 2)
- mv = 0;
-
- if (f_code > 0 && f_code < 10) {
- if (mv < mv_ranges[f_code].low)
- mv = mv_ranges[f_code].low;
-
- if (mv > mv_ranges[f_code].high)
- mv = mv_ranges[f_code].high;
- }
-
- return mv;
-}
-
-static int
-gen7_mfc_mpeg2_pak_object_inter(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- unsigned int *msg,
- int width_in_mbs, int height_in_mbs,
- int x, int y,
- int first_mb_in_slice,
- int last_mb_in_slice,
- int first_mb_in_slice_group,
- int last_mb_in_slice_group,
- int qp_scale_code,
- unsigned char target_size_in_word,
- unsigned char max_size_in_word,
- struct intel_batchbuffer *batch)
-{
- VAEncPictureParameterBufferMPEG2 *pic_param = (VAEncPictureParameterBufferMPEG2 *)encode_state->pic_param_ext->buffer;
- int len_in_dwords = 9;
- short *mvptr, mvx0, mvy0, mvx1, mvy1;
-
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- mvptr = (short *)msg;
- mvx0 = mpeg2_motion_vector(mvptr[0] / 2, x, width_in_mbs * 16, pic_param->f_code[0][0]);
- mvy0 = mpeg2_motion_vector(mvptr[1] / 2, y, height_in_mbs * 16, pic_param->f_code[0][0]);
- mvx1 = mpeg2_motion_vector(mvptr[2] / 2, x, width_in_mbs * 16, pic_param->f_code[1][0]);
- mvy1 = mpeg2_motion_vector(mvptr[3] / 2, y, height_in_mbs * 16, pic_param->f_code[1][0]);
-
- BEGIN_BCS_BATCH(batch, len_in_dwords);
-
- OUT_BCS_BATCH(batch, MFC_MPEG2_PAK_OBJECT | (len_in_dwords - 2));
- OUT_BCS_BATCH(batch,
- 2 << 24 | /* PackedMvNum */
- 7 << 20 | /* MvFormat */
- 7 << 17 | /* CbpDcY/CbpDcU/CbpDcV */
- 0 << 15 | /* TransformFlag: frame DCT */
- 0 << 14 | /* FieldMbFlag */
- 0 << 13 | /* IntraMbFlag */
- 1 << 8 | /* MbType: Frame-based */
- 0 << 2 | /* SkipMbFlag */
- 0 << 0 | /* InterMbMode */
- 0);
- OUT_BCS_BATCH(batch, y << 16 | x);
- OUT_BCS_BATCH(batch,
- max_size_in_word << 24 |
- target_size_in_word << 16 |
- 0x3f << 6 | /* CBP */
- 0);
- OUT_BCS_BATCH(batch,
- last_mb_in_slice << 31 |
- first_mb_in_slice << 30 |
- 0 << 27 | /* EnableCoeffClamp */
- last_mb_in_slice_group << 26 |
- 0 << 25 | /* MbSkipConvDisable */
- first_mb_in_slice_group << 24 |
- 0 << 16 | /* MvFieldSelect */
- qp_scale_code << 0 |
- 0);
-
- OUT_BCS_BATCH(batch, (mvx0 & 0xFFFF) | mvy0 << 16); /* MV[0][0] */
- OUT_BCS_BATCH(batch, (mvx1 & 0xFFFF) | mvy1 << 16); /* MV[1][0] */
- OUT_BCS_BATCH(batch, 0); /* MV[0][1] */
- OUT_BCS_BATCH(batch, 0); /* MV[1][1] */
-
- ADVANCE_BCS_BATCH(batch);
-
- return len_in_dwords;
-}
-
-static void
-gen7_mfc_mpeg2_pipeline_header_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- struct intel_batchbuffer *slice_batch)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- int idx = va_enc_packed_type_to_idx(VAEncPackedHeaderMPEG2_SPS);
-
- if (encode_state->packed_header_data[idx]) {
- VAEncPackedHeaderParameterBuffer *param = NULL;
- unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer;
- unsigned int length_in_bits;
-
- assert(encode_state->packed_header_param[idx]);
- param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer;
- length_in_bits = param->bit_length;
-
- mfc_context->insert_object(ctx,
- encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- 5, /* FIXME: check it */
- 0,
- 0,
- 0, /* Needn't insert emulation bytes for MPEG-2 */
- slice_batch);
- }
-
- idx = va_enc_packed_type_to_idx(VAEncPackedHeaderMPEG2_PPS);
-
- if (encode_state->packed_header_data[idx]) {
- VAEncPackedHeaderParameterBuffer *param = NULL;
- unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer;
- unsigned int length_in_bits;
-
- assert(encode_state->packed_header_param[idx]);
- param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer;
- length_in_bits = param->bit_length;
-
- mfc_context->insert_object(ctx,
- encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- 5, /* FIXME: check it */
- 0,
- 0,
- 0, /* Needn't insert emulation bytes for MPEG-2 */
- slice_batch);
- }
-}
-
-static void
-gen7_mfc_mpeg2_pipeline_slice_group(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int slice_index,
- VAEncSliceParameterBufferMPEG2 *next_slice_group_param,
- struct intel_batchbuffer *slice_batch)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncSequenceParameterBufferMPEG2 *seq_param = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
- VAEncSliceParameterBufferMPEG2 *slice_param = NULL;
- unsigned char tail_delimiter[] = {MPEG2_DELIMITER0, MPEG2_DELIMITER1, MPEG2_DELIMITER2, MPEG2_DELIMITER3, MPEG2_DELIMITER4, 0, 0, 0};
- unsigned char section_delimiter[] = {0x0, 0x0, 0x0, 0x0};
- int width_in_mbs = ALIGN(seq_param->picture_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->picture_height, 16) / 16;
- int i, j;
- int h_start_pos, v_start_pos, h_next_start_pos, v_next_start_pos;
- unsigned int *msg = NULL;
- unsigned char *msg_ptr = NULL;
-
- slice_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[slice_index]->buffer;
- h_start_pos = slice_param->macroblock_address % width_in_mbs;
- v_start_pos = slice_param->macroblock_address / width_in_mbs;
- assert(h_start_pos + slice_param->num_macroblocks <= width_in_mbs);
-
- dri_bo_map(vme_context->vme_output.bo , 0);
- msg_ptr = (unsigned char *)vme_context->vme_output.bo->virtual;
-
- if (next_slice_group_param) {
- h_next_start_pos = next_slice_group_param->macroblock_address % width_in_mbs;
- v_next_start_pos = next_slice_group_param->macroblock_address / width_in_mbs;
- } else {
- h_next_start_pos = 0;
- v_next_start_pos = height_in_mbs;
- }
-
- gen7_mfc_mpeg2_slicegroup_state(ctx,
- encoder_context,
- h_start_pos,
- v_start_pos,
- h_next_start_pos,
- v_next_start_pos,
- slice_index == 0,
- next_slice_group_param == NULL,
- slice_param->is_intra_slice,
- slice_param->quantiser_scale_code,
- slice_batch);
-
- if (slice_index == 0)
- gen7_mfc_mpeg2_pipeline_header_programing(ctx, encode_state, encoder_context, slice_batch);
-
- /* Insert '00' to make sure the header is valid */
- mfc_context->insert_object(ctx,
- encoder_context,
- (unsigned int*)section_delimiter,
- 1,
- 8, /* 8bits in the last DWORD */
- 1, /* 1 byte */
- 1,
- 0,
- 0,
- slice_batch);
-
- for (i = 0; i < encode_state->slice_params_ext[slice_index]->num_elements; i++) {
- /* PAK for each macroblocks */
- for (j = 0; j < slice_param->num_macroblocks; j++) {
- int h_pos = (slice_param->macroblock_address + j) % width_in_mbs;
- int v_pos = (slice_param->macroblock_address + j) / width_in_mbs;
- int first_mb_in_slice = (j == 0);
- int last_mb_in_slice = (j == slice_param->num_macroblocks - 1);
- int first_mb_in_slice_group = (i == 0 && j == 0);
- int last_mb_in_slice_group = (i == encode_state->slice_params_ext[slice_index]->num_elements - 1 &&
- j == slice_param->num_macroblocks - 1);
-
- if (slice_param->is_intra_slice) {
- gen7_mfc_mpeg2_pak_object_intra(ctx,
- encoder_context,
- h_pos, v_pos,
- first_mb_in_slice,
- last_mb_in_slice,
- first_mb_in_slice_group,
- last_mb_in_slice_group,
- 0x1a,
- slice_param->quantiser_scale_code,
- 0x3f,
- 0,
- 0xff,
- slice_batch);
- } else {
- msg = (unsigned int *)(msg_ptr + (slice_param->macroblock_address + j) * vme_context->vme_output.size_block);
-
- if(msg[32] & INTRA_MB_FLAG_MASK) {
- gen7_mfc_mpeg2_pak_object_intra(ctx,
- encoder_context,
- h_pos, v_pos,
- first_mb_in_slice,
- last_mb_in_slice,
- first_mb_in_slice_group,
- last_mb_in_slice_group,
- 0x1a,
- slice_param->quantiser_scale_code,
- 0x3f,
- 0,
- 0xff,
- slice_batch);
- } else {
-
- gen7_mfc_mpeg2_pak_object_inter(ctx,
- encode_state,
- encoder_context,
- msg,
- width_in_mbs, height_in_mbs,
- h_pos, v_pos,
- first_mb_in_slice,
- last_mb_in_slice,
- first_mb_in_slice_group,
- last_mb_in_slice_group,
- slice_param->quantiser_scale_code,
- 0,
- 0xff,
- slice_batch);
- }
- }
- }
-
- slice_param++;
- }
-
- dri_bo_unmap(vme_context->vme_output.bo);
-
- /* tail data */
- if (next_slice_group_param == NULL) { /* end of a picture */
- mfc_context->insert_object(ctx,
- encoder_context,
- (unsigned int *)tail_delimiter,
- 2,
- 8, /* 8bits in the last DWORD */
- 5, /* 5 bytes */
- 1,
- 1,
- 0,
- slice_batch);
- } else { /* end of a lsice group */
- mfc_context->insert_object(ctx,
- encoder_context,
- (unsigned int *)section_delimiter,
- 1,
- 8, /* 8bits in the last DWORD */
- 1, /* 1 byte */
- 1,
- 1,
- 0,
- slice_batch);
- }
-}
-
-/*
- * A batch buffer for all slices, including slice state,
- * slice insert object and slice pak object commands
- *
- */
-static dri_bo *
-gen7_mfc_mpeg2_software_slice_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch;
- VAEncSliceParameterBufferMPEG2 *next_slice_group_param = NULL;
- dri_bo *batch_bo;
- int i;
-
- batch = mfc_context->aux_batchbuffer;
- batch_bo = batch->buffer;
-
- for (i = 0; i < encode_state->num_slice_params_ext; i++) {
- if (i == encode_state->num_slice_params_ext - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[i + 1]->buffer;
-
- gen7_mfc_mpeg2_pipeline_slice_group(ctx, encode_state, encoder_context, i, next_slice_group_param, batch);
- }
-
- intel_batchbuffer_align(batch, 8);
-
- BEGIN_BCS_BATCH(batch, 2);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, MI_BATCH_BUFFER_END);
- ADVANCE_BCS_BATCH(batch);
-
- dri_bo_reference(batch_bo);
- intel_batchbuffer_free(batch);
- mfc_context->aux_batchbuffer = NULL;
-
- return batch_bo;
-}
-
-static void
-gen7_mfc_mpeg2_pipeline_picture_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- mfc_context->pipe_mode_select(ctx, MFX_FORMAT_MPEG2, encoder_context);
- mfc_context->set_surface_state(ctx, encoder_context);
- mfc_context->ind_obj_base_addr_state(ctx, encoder_context);
- gen6_mfc_pipe_buf_addr_state(ctx, encoder_context);
- gen6_mfc_bsp_buf_base_addr_state(ctx, encoder_context);
- gen7_mfc_mpeg2_pic_state(ctx, encoder_context, encode_state);
- gen7_mfc_mpeg2_qm_state(ctx, encoder_context);
- gen7_mfc_mpeg2_fqm_state(ctx, encoder_context);
-}
-
-static void
-gen7_mfc_mpeg2_pipeline_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- dri_bo *slice_batch_bo;
-
- slice_batch_bo = gen7_mfc_mpeg2_software_slice_batchbuffer(ctx, encode_state, encoder_context);
-
- // begin programing
- intel_batchbuffer_start_atomic_bcs(batch, 0x4000);
- intel_batchbuffer_emit_mi_flush(batch);
-
- // picture level programing
- gen7_mfc_mpeg2_pipeline_picture_programing(ctx, encode_state, encoder_context);
-
- BEGIN_BCS_BATCH(batch, 2);
- OUT_BCS_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8));
- OUT_BCS_RELOC(batch,
- slice_batch_bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- ADVANCE_BCS_BATCH(batch);
-
- // end programing
- intel_batchbuffer_end_atomic(batch);
-
- dri_bo_unreference(slice_batch_bo);
-}
-
-static VAStatus
-gen7_mfc_mpeg2_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct object_surface *obj_surface;
- struct object_buffer *obj_buffer;
- struct i965_coded_buffer_segment *coded_buffer_segment;
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- dri_bo *bo;
- int i;
-
- /* reconstructed surface */
- obj_surface = encode_state->reconstructed_object;
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
- mfc_context->pre_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(mfc_context->pre_deblocking_output.bo);
- mfc_context->surface_state.width = obj_surface->orig_width;
- mfc_context->surface_state.height = obj_surface->orig_height;
- mfc_context->surface_state.w_pitch = obj_surface->width;
- mfc_context->surface_state.h_pitch = obj_surface->height;
-
- /* forward reference */
- obj_surface = encode_state->reference_objects[0];
-
- if (obj_surface && obj_surface->bo) {
- mfc_context->reference_surfaces[0].bo = obj_surface->bo;
- dri_bo_reference(mfc_context->reference_surfaces[0].bo);
- } else
- mfc_context->reference_surfaces[0].bo = NULL;
-
- /* backward reference */
- obj_surface = encode_state->reference_objects[1];
-
- if (obj_surface && obj_surface->bo) {
- mfc_context->reference_surfaces[1].bo = obj_surface->bo;
- dri_bo_reference(mfc_context->reference_surfaces[1].bo);
- } else {
- mfc_context->reference_surfaces[1].bo = mfc_context->reference_surfaces[0].bo;
-
- if (mfc_context->reference_surfaces[1].bo)
- dri_bo_reference(mfc_context->reference_surfaces[1].bo);
- }
-
- for (i = 2; i < ARRAY_ELEMS(mfc_context->reference_surfaces); i++) {
- mfc_context->reference_surfaces[i].bo = mfc_context->reference_surfaces[i & 1].bo;
-
- if (mfc_context->reference_surfaces[i].bo)
- dri_bo_reference(mfc_context->reference_surfaces[i].bo);
- }
-
- /* input YUV surface */
- obj_surface = encode_state->input_yuv_object;
- mfc_context->uncompressed_picture_source.bo = obj_surface->bo;
- dri_bo_reference(mfc_context->uncompressed_picture_source.bo);
-
- /* coded buffer */
- obj_buffer = encode_state->coded_buf_object;
- bo = obj_buffer->buffer_store->bo;
- mfc_context->mfc_indirect_pak_bse_object.bo = bo;
- mfc_context->mfc_indirect_pak_bse_object.offset = I965_CODEDBUFFER_HEADER_SIZE;
- mfc_context->mfc_indirect_pak_bse_object.end_offset = ALIGN(obj_buffer->size_element - 0x1000, 0x1000);
- dri_bo_reference(mfc_context->mfc_indirect_pak_bse_object.bo);
-
- /* set the internal flag to 0 to indicate the coded size is unknown */
- dri_bo_map(bo, 1);
- coded_buffer_segment = (struct i965_coded_buffer_segment *)bo->virtual;
- coded_buffer_segment->mapped = 0;
- coded_buffer_segment->codec = encoder_context->codec;
- dri_bo_unmap(bo);
-
- return vaStatus;
-}
-
-static VAStatus
-gen7_mfc_mpeg2_encode_picture(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- gen6_mfc_init(ctx, encode_state, encoder_context);
- gen7_mfc_mpeg2_prepare(ctx, encode_state, encoder_context);
- /*Programing bcs pipeline*/
- gen7_mfc_mpeg2_pipeline_programing(ctx, encode_state, encoder_context);
- gen6_mfc_run(ctx, encode_state, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus
-gen7_mfc_pipeline(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus vaStatus;
-
- switch (profile) {
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- vaStatus = gen6_mfc_avc_encode_picture(ctx, encode_state, encoder_context);
- break;
-
- case VAProfileMPEG2Simple:
- case VAProfileMPEG2Main:
- vaStatus = gen7_mfc_mpeg2_encode_picture(ctx, encode_state, encoder_context);
- break;
-
- /* FIXME: add for other profile */
- default:
- vaStatus = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
- break;
- }
-
- return vaStatus;
-}
-
-Bool
-gen7_mfc_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = calloc(1, sizeof(struct gen6_mfc_context));
-
- if (!mfc_context)
- return False;
-
- mfc_context->gpe_context.surface_state_binding_table.length = (SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_MEDIA_SURFACES_GEN6;
-
- mfc_context->gpe_context.idrt.max_entries = MAX_GPE_KERNELS;
- mfc_context->gpe_context.idrt.entry_size = sizeof(struct gen6_interface_descriptor_data);
-
- mfc_context->gpe_context.curbe.length = 32 * 4;
-
- mfc_context->gpe_context.vfe_state.max_num_threads = 60 - 1;
- mfc_context->gpe_context.vfe_state.num_urb_entries = 16;
- mfc_context->gpe_context.vfe_state.gpgpu_mode = 0;
- mfc_context->gpe_context.vfe_state.urb_entry_size = 59 - 1;
- mfc_context->gpe_context.vfe_state.curbe_allocation_size = 37 - 1;
-
- i965_gpe_load_kernels(ctx,
- &mfc_context->gpe_context,
- gen7_mfc_kernels,
- NUM_MFC_KERNEL);
-
- mfc_context->pipe_mode_select = gen7_mfc_pipe_mode_select;
- mfc_context->set_surface_state = gen7_mfc_surface_state;
- mfc_context->ind_obj_base_addr_state = gen7_mfc_ind_obj_base_addr_state;
- mfc_context->avc_img_state = gen7_mfc_avc_img_state;
- mfc_context->avc_qm_state = gen7_mfc_avc_qm_state;
- mfc_context->avc_fqm_state = gen7_mfc_avc_fqm_state;
- mfc_context->insert_object = gen7_mfc_avc_insert_object;
- mfc_context->buffer_suface_setup = gen7_gpe_buffer_suface_setup;
-
- encoder_context->mfc_context = mfc_context;
- encoder_context->mfc_context_destroy = gen6_mfc_context_destroy;
- encoder_context->mfc_pipeline = gen7_mfc_pipeline;
- encoder_context->mfc_brc_prepare = intel_mfc_brc_prepare;
-
- return True;
-}
diff --git a/src/gen7_mfd.c b/src/gen7_mfd.c
deleted file mode 100755
index 9cf4402..0000000
--- a/src/gen7_mfd.c
+++ /dev/null
@@ -1,2763 +0,0 @@
-/*
- * Copyright © 2011 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-
-#include "sysdeps.h"
-
-#include <va/va_dec_jpeg.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "i965_decoder_utils.h"
-
-#include "gen7_mfd.h"
-#include "intel_media.h"
-
-static const uint32_t zigzag_direct[64] = {
- 0, 1, 8, 16, 9, 2, 3, 10,
- 17, 24, 32, 25, 18, 11, 4, 5,
- 12, 19, 26, 33, 40, 48, 41, 34,
- 27, 20, 13, 6, 7, 14, 21, 28,
- 35, 42, 49, 56, 57, 50, 43, 36,
- 29, 22, 15, 23, 30, 37, 44, 51,
- 58, 59, 52, 45, 38, 31, 39, 46,
- 53, 60, 61, 54, 47, 55, 62, 63
-};
-
-static void
-gen7_mfd_init_avc_surface(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- struct object_surface *obj_surface)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- GenAvcSurface *gen7_avc_surface = obj_surface->private_data;
- int width_in_mbs, height_in_mbs;
-
- obj_surface->free_private_data = gen_free_avc_surface;
- width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
- height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1; /* frame height */
-
- if (!gen7_avc_surface) {
- gen7_avc_surface = calloc(sizeof(GenAvcSurface), 1);
- assert(gen7_avc_surface);
- gen7_avc_surface->base.frame_store_id = -1;
- assert((obj_surface->size & 0x3f) == 0);
- obj_surface->private_data = gen7_avc_surface;
- }
-
- gen7_avc_surface->dmv_bottom_flag = (pic_param->pic_fields.bits.field_pic_flag &&
- !pic_param->seq_fields.bits.direct_8x8_inference_flag);
-
- if (gen7_avc_surface->dmv_top == NULL) {
- gen7_avc_surface->dmv_top = dri_bo_alloc(i965->intel.bufmgr,
- "direct mv w/r buffer",
- width_in_mbs * (height_in_mbs + 1) * 64,
- 0x1000);
- assert(gen7_avc_surface->dmv_top);
- }
-
- if (gen7_avc_surface->dmv_bottom_flag &&
- gen7_avc_surface->dmv_bottom == NULL) {
- gen7_avc_surface->dmv_bottom = dri_bo_alloc(i965->intel.bufmgr,
- "direct mv w/r buffer",
- width_in_mbs * (height_in_mbs + 1) * 64,
- 0x1000);
- assert(gen7_avc_surface->dmv_bottom);
- }
-}
-
-static void
-gen7_mfd_pipe_mode_select(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- assert(standard_select == MFX_FORMAT_MPEG2 ||
- standard_select == MFX_FORMAT_AVC ||
- standard_select == MFX_FORMAT_VC1 ||
- standard_select == MFX_FORMAT_JPEG);
-
- BEGIN_BCS_BATCH(batch, 5);
- OUT_BCS_BATCH(batch, MFX_PIPE_MODE_SELECT | (5 - 2));
- OUT_BCS_BATCH(batch,
- (MFX_LONG_MODE << 17) | /* Currently only support long format */
- (MFD_MODE_VLD << 15) | /* VLD mode */
- (0 << 10) | /* disable Stream-Out */
- (gen7_mfd_context->post_deblocking_output.valid << 9) | /* Post Deblocking Output */
- (gen7_mfd_context->pre_deblocking_output.valid << 8) | /* Pre Deblocking Output */
- (0 << 5) | /* not in stitch mode */
- (MFX_CODEC_DECODE << 4) | /* decoding mode */
- (standard_select << 0));
- OUT_BCS_BATCH(batch,
- (0 << 4) | /* terminate if AVC motion and POC table error occurs */
- (0 << 3) | /* terminate if AVC mbdata error occurs */
- (0 << 2) | /* terminate if AVC CABAC/CAVLC decode error occurs */
- (0 << 1) |
- (0 << 0));
- OUT_BCS_BATCH(batch, 0); /* pic status/error report id */
- OUT_BCS_BATCH(batch, 0); /* reserved */
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_mfd_surface_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- struct object_surface *obj_surface = decode_state->render_object;
- unsigned int y_cb_offset;
- unsigned int y_cr_offset;
- unsigned int surface_format;
-
- assert(obj_surface);
-
- y_cb_offset = obj_surface->y_cb_offset;
- y_cr_offset = obj_surface->y_cr_offset;
-
- surface_format = obj_surface->fourcc == VA_FOURCC_Y800 ?
- MFX_SURFACE_MONOCHROME : MFX_SURFACE_PLANAR_420_8;
-
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- ((obj_surface->orig_height - 1) << 18) |
- ((obj_surface->orig_width - 1) << 4));
- OUT_BCS_BATCH(batch,
- (surface_format << 28) | /* 420 planar YUV surface */
- ((standard_select != MFX_FORMAT_JPEG) << 27) | /* interleave chroma, set to 0 for JPEG */
- (0 << 22) | /* surface object control state, ignored */
- ((obj_surface->width - 1) << 3) | /* pitch */
- (0 << 2) | /* must be 0 */
- (1 << 1) | /* must be tiled */
- (I965_TILEWALK_YMAJOR << 0)); /* tile walk, must be 1 */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* X offset for U(Cb), must be 0 */
- (y_cb_offset << 0)); /* Y offset for U(Cb) */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* X offset for V(Cr), must be 0 */
- (y_cr_offset << 0)); /* Y offset for V(Cr), must be 0 for video codec, non-zoro for JPEG */
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_mfd_pipe_buf_addr_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int i;
-
- BEGIN_BCS_BATCH(batch, 24);
- OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (24 - 2));
- if (gen7_mfd_context->pre_deblocking_output.valid)
- OUT_BCS_RELOC(batch, gen7_mfd_context->pre_deblocking_output.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- if (gen7_mfd_context->post_deblocking_output.valid)
- OUT_BCS_RELOC(batch, gen7_mfd_context->post_deblocking_output.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
- OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
-
- if (gen7_mfd_context->intra_row_store_scratch_buffer.valid)
- OUT_BCS_RELOC(batch, gen7_mfd_context->intra_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- if (gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid)
- OUT_BCS_RELOC(batch, gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- /* DW 7..22 */
- for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
- struct object_surface *obj_surface;
-
- if (gen7_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID &&
- gen7_mfd_context->reference_surface[i].obj_surface &&
- gen7_mfd_context->reference_surface[i].obj_surface->bo) {
- obj_surface = gen7_mfd_context->reference_surface[i].obj_surface;
-
- OUT_BCS_RELOC(batch, obj_surface->bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- OUT_BCS_BATCH(batch, 0); /* ignore DW23 for decoding */
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_mfd_ind_obj_base_addr_state(VADriverContextP ctx,
- dri_bo *slice_data_bo,
- int standard_select,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 11);
- OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (11 - 2));
- OUT_BCS_RELOC(batch, slice_data_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); /* MFX Indirect Bitstream Object Base Address */
- OUT_BCS_BATCH(batch, 0x80000000); /* must set, up to 2G */
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_mfd_bsp_buf_base_addr_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 4);
- OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (4 - 2));
-
- if (gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid)
- OUT_BCS_RELOC(batch, gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- if (gen7_mfd_context->mpr_row_store_scratch_buffer.valid)
- OUT_BCS_RELOC(batch, gen7_mfd_context->mpr_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- if (gen7_mfd_context->bitplane_read_buffer.valid)
- OUT_BCS_RELOC(batch, gen7_mfd_context->bitplane_read_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_mfd_qm_state(VADriverContextP ctx,
- int qm_type,
- unsigned char *qm,
- int qm_length,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- unsigned int qm_buffer[16];
-
- assert(qm_length <= 16 * 4);
- memcpy(qm_buffer, qm, qm_length);
-
- BEGIN_BCS_BATCH(batch, 18);
- OUT_BCS_BATCH(batch, MFX_QM_STATE | (18 - 2));
- OUT_BCS_BATCH(batch, qm_type << 0);
- intel_batchbuffer_data(batch, qm_buffer, 16 * 4);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_mfd_avc_img_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int img_struct;
- int mbaff_frame_flag;
- unsigned int width_in_mbs, height_in_mbs;
- VAPictureParameterBufferH264 *pic_param;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
-
- if (pic_param->CurrPic.flags & VA_PICTURE_H264_TOP_FIELD)
- img_struct = 1;
- else if (pic_param->CurrPic.flags & VA_PICTURE_H264_BOTTOM_FIELD)
- img_struct = 3;
- else
- img_struct = 0;
-
- if ((img_struct & 0x1) == 0x1) {
- assert(pic_param->pic_fields.bits.field_pic_flag == 0x1);
- } else {
- assert(pic_param->pic_fields.bits.field_pic_flag == 0x0);
- }
-
- if (pic_param->seq_fields.bits.frame_mbs_only_flag) { /* a frame containing only frame macroblocks */
- assert(pic_param->seq_fields.bits.mb_adaptive_frame_field_flag == 0);
- assert(pic_param->pic_fields.bits.field_pic_flag == 0);
- } else {
- assert(pic_param->seq_fields.bits.direct_8x8_inference_flag == 1); /* see H.264 spec */
- }
-
- mbaff_frame_flag = (pic_param->seq_fields.bits.mb_adaptive_frame_field_flag &&
- !pic_param->pic_fields.bits.field_pic_flag);
-
- width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
- height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1; /* frame height */
-
- /* MFX unit doesn't support 4:2:2 and 4:4:4 picture */
- assert(pic_param->seq_fields.bits.chroma_format_idc == 0 || /* monochrome picture */
- pic_param->seq_fields.bits.chroma_format_idc == 1); /* 4:2:0 */
- assert(pic_param->seq_fields.bits.residual_colour_transform_flag == 0); /* only available for 4:4:4 */
-
- BEGIN_BCS_BATCH(batch, 16);
- OUT_BCS_BATCH(batch, MFX_AVC_IMG_STATE | (16 - 2));
- OUT_BCS_BATCH(batch,
- (width_in_mbs * height_in_mbs - 1));
- OUT_BCS_BATCH(batch,
- ((height_in_mbs - 1) << 16) |
- ((width_in_mbs - 1) << 0));
- OUT_BCS_BATCH(batch,
- ((pic_param->second_chroma_qp_index_offset & 0x1f) << 24) |
- ((pic_param->chroma_qp_index_offset & 0x1f) << 16) |
- (0 << 14) | /* Max-bit conformance Intra flag ??? FIXME */
- (0 << 13) | /* Max Macroblock size conformance Inter flag ??? FIXME */
- (pic_param->pic_fields.bits.weighted_pred_flag << 12) | /* differ from GEN6 */
- (pic_param->pic_fields.bits.weighted_bipred_idc << 10) |
- (img_struct << 8));
- OUT_BCS_BATCH(batch,
- (pic_param->seq_fields.bits.chroma_format_idc << 10) |
- (pic_param->pic_fields.bits.entropy_coding_mode_flag << 7) |
- ((!pic_param->pic_fields.bits.reference_pic_flag) << 6) |
- (pic_param->pic_fields.bits.constrained_intra_pred_flag << 5) |
- (pic_param->seq_fields.bits.direct_8x8_inference_flag << 4) |
- (pic_param->pic_fields.bits.transform_8x8_mode_flag << 3) |
- (pic_param->seq_fields.bits.frame_mbs_only_flag << 2) |
- (mbaff_frame_flag << 1) |
- (pic_param->pic_fields.bits.field_pic_flag << 0));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_mfd_avc_qm_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- VAIQMatrixBufferH264 *iq_matrix;
- VAPictureParameterBufferH264 *pic_param;
-
- if (decode_state->iq_matrix && decode_state->iq_matrix->buffer)
- iq_matrix = (VAIQMatrixBufferH264 *)decode_state->iq_matrix->buffer;
- else
- iq_matrix = &gen7_mfd_context->iq_matrix.h264;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
-
- gen7_mfd_qm_state(ctx, MFX_QM_AVC_4X4_INTRA_MATRIX, &iq_matrix->ScalingList4x4[0][0], 3 * 16, gen7_mfd_context);
- gen7_mfd_qm_state(ctx, MFX_QM_AVC_4X4_INTER_MATRIX, &iq_matrix->ScalingList4x4[3][0], 3 * 16, gen7_mfd_context);
-
- if (pic_param->pic_fields.bits.transform_8x8_mode_flag) {
- gen7_mfd_qm_state(ctx, MFX_QM_AVC_8x8_INTRA_MATRIX, &iq_matrix->ScalingList8x8[0][0], 64, gen7_mfd_context);
- gen7_mfd_qm_state(ctx, MFX_QM_AVC_8x8_INTER_MATRIX, &iq_matrix->ScalingList8x8[1][0], 64, gen7_mfd_context);
- }
-}
-
-static void
-gen7_mfd_avc_directmode_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- struct object_surface *obj_surface;
- GenAvcSurface *gen7_avc_surface;
- VAPictureH264 *va_pic;
- int i;
-
- BEGIN_BCS_BATCH(batch, 69);
- OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (69 - 2));
-
- /* reference surfaces 0..15 */
- for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
- if (gen7_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID &&
- gen7_mfd_context->reference_surface[i].obj_surface &&
- gen7_mfd_context->reference_surface[i].obj_surface->private_data) {
-
- obj_surface = gen7_mfd_context->reference_surface[i].obj_surface;
- gen7_avc_surface = obj_surface->private_data;
- OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_top,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
-
- if (gen7_avc_surface->dmv_bottom_flag == 1)
- OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_bottom,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- else
- OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_top,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- /* the current decoding frame/field */
- va_pic = &pic_param->CurrPic;
- obj_surface = decode_state->render_object;
- assert(obj_surface->bo && obj_surface->private_data);
- gen7_avc_surface = obj_surface->private_data;
-
- OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_top,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- if (gen7_avc_surface->dmv_bottom_flag == 1)
- OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_bottom,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_RELOC(batch, gen7_avc_surface->dmv_top,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- /* POC List */
- for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
- obj_surface = gen7_mfd_context->reference_surface[i].obj_surface;
-
- if (obj_surface) {
- const VAPictureH264 * const va_pic = avc_find_picture(
- obj_surface->base.id, pic_param->ReferenceFrames,
- ARRAY_ELEMS(pic_param->ReferenceFrames));
-
- assert(va_pic != NULL);
- OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
- OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- va_pic = &pic_param->CurrPic;
- OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
- OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_mfd_avc_phantom_slice_first(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *next_slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- gen6_mfd_avc_phantom_slice(ctx, pic_param, next_slice_param, gen7_mfd_context->base.batch);
-}
-
-static void
-gen7_mfd_avc_slice_state(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- VASliceParameterBufferH264 *next_slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
- int height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1;
- int slice_hor_pos, slice_ver_pos, next_slice_hor_pos, next_slice_ver_pos;
- int num_ref_idx_l0, num_ref_idx_l1;
- int mbaff_picture = (!pic_param->pic_fields.bits.field_pic_flag &&
- pic_param->seq_fields.bits.mb_adaptive_frame_field_flag);
- int first_mb_in_slice = 0, first_mb_in_next_slice = 0;
- int slice_type;
-
- if (slice_param->slice_type == SLICE_TYPE_I ||
- slice_param->slice_type == SLICE_TYPE_SI) {
- slice_type = SLICE_TYPE_I;
- } else if (slice_param->slice_type == SLICE_TYPE_P ||
- slice_param->slice_type == SLICE_TYPE_SP) {
- slice_type = SLICE_TYPE_P;
- } else {
- assert(slice_param->slice_type == SLICE_TYPE_B);
- slice_type = SLICE_TYPE_B;
- }
-
- if (slice_type == SLICE_TYPE_I) {
- assert(slice_param->num_ref_idx_l0_active_minus1 == 0);
- assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
- num_ref_idx_l0 = 0;
- num_ref_idx_l1 = 0;
- } else if (slice_type == SLICE_TYPE_P) {
- assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
- num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
- num_ref_idx_l1 = 0;
- } else {
- num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
- num_ref_idx_l1 = slice_param->num_ref_idx_l1_active_minus1 + 1;
- }
-
- first_mb_in_slice = slice_param->first_mb_in_slice;
- slice_hor_pos = first_mb_in_slice % width_in_mbs;
- slice_ver_pos = first_mb_in_slice / width_in_mbs;
-
- if (mbaff_picture)
- slice_ver_pos = slice_ver_pos << 1;
-
- if (next_slice_param) {
- first_mb_in_next_slice = next_slice_param->first_mb_in_slice;
- next_slice_hor_pos = first_mb_in_next_slice % width_in_mbs;
- next_slice_ver_pos = first_mb_in_next_slice / width_in_mbs;
-
- if (mbaff_picture)
- next_slice_ver_pos = next_slice_ver_pos << 1;
- } else {
- next_slice_hor_pos = 0;
- next_slice_ver_pos = height_in_mbs / (1 + !!pic_param->pic_fields.bits.field_pic_flag);
- }
-
- BEGIN_BCS_BATCH(batch, 11); /* FIXME: is it 10??? */
- OUT_BCS_BATCH(batch, MFX_AVC_SLICE_STATE | (11 - 2));
- OUT_BCS_BATCH(batch, slice_type);
- OUT_BCS_BATCH(batch,
- (num_ref_idx_l1 << 24) |
- (num_ref_idx_l0 << 16) |
- (slice_param->chroma_log2_weight_denom << 8) |
- (slice_param->luma_log2_weight_denom << 0));
- OUT_BCS_BATCH(batch,
- (slice_param->direct_spatial_mv_pred_flag << 29) |
- (slice_param->disable_deblocking_filter_idc << 27) |
- (slice_param->cabac_init_idc << 24) |
- ((pic_param->pic_init_qp_minus26 + 26 + slice_param->slice_qp_delta) << 16) |
- ((slice_param->slice_beta_offset_div2 & 0xf) << 8) |
- ((slice_param->slice_alpha_c0_offset_div2 & 0xf) << 0));
- OUT_BCS_BATCH(batch,
- (slice_ver_pos << 24) |
- (slice_hor_pos << 16) |
- (first_mb_in_slice << 0));
- OUT_BCS_BATCH(batch,
- (next_slice_ver_pos << 16) |
- (next_slice_hor_pos << 0));
- OUT_BCS_BATCH(batch,
- (next_slice_param == NULL) << 19); /* last slice flag */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static inline void
-gen7_mfd_avc_ref_idx_state(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- gen6_send_avc_ref_idx_state(
- gen7_mfd_context->base.batch,
- slice_param,
- gen7_mfd_context->reference_surface
- );
-}
-
-static void
-gen7_mfd_avc_weightoffset_state(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int i, j, num_weight_offset_table = 0;
- short weightoffsets[32 * 6];
-
- if ((slice_param->slice_type == SLICE_TYPE_P ||
- slice_param->slice_type == SLICE_TYPE_SP) &&
- (pic_param->pic_fields.bits.weighted_pred_flag == 1)) {
- num_weight_offset_table = 1;
- }
-
- if ((slice_param->slice_type == SLICE_TYPE_B) &&
- (pic_param->pic_fields.bits.weighted_bipred_idc == 1)) {
- num_weight_offset_table = 2;
- }
-
- for (i = 0; i < num_weight_offset_table; i++) {
- BEGIN_BCS_BATCH(batch, 98);
- OUT_BCS_BATCH(batch, MFX_AVC_WEIGHTOFFSET_STATE | (98 - 2));
- OUT_BCS_BATCH(batch, i);
-
- if (i == 0) {
- for (j = 0; j < 32; j++) {
- weightoffsets[j * 6 + 0] = slice_param->luma_weight_l0[j];
- weightoffsets[j * 6 + 1] = slice_param->luma_offset_l0[j];
- weightoffsets[j * 6 + 2] = slice_param->chroma_weight_l0[j][0];
- weightoffsets[j * 6 + 3] = slice_param->chroma_offset_l0[j][0];
- weightoffsets[j * 6 + 4] = slice_param->chroma_weight_l0[j][1];
- weightoffsets[j * 6 + 5] = slice_param->chroma_offset_l0[j][1];
- }
- } else {
- for (j = 0; j < 32; j++) {
- weightoffsets[j * 6 + 0] = slice_param->luma_weight_l1[j];
- weightoffsets[j * 6 + 1] = slice_param->luma_offset_l1[j];
- weightoffsets[j * 6 + 2] = slice_param->chroma_weight_l1[j][0];
- weightoffsets[j * 6 + 3] = slice_param->chroma_offset_l1[j][0];
- weightoffsets[j * 6 + 4] = slice_param->chroma_weight_l1[j][1];
- weightoffsets[j * 6 + 5] = slice_param->chroma_offset_l1[j][1];
- }
- }
-
- intel_batchbuffer_data(batch, weightoffsets, sizeof(weightoffsets));
- ADVANCE_BCS_BATCH(batch);
- }
-}
-
-static void
-gen7_mfd_avc_bsd_object(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- dri_bo *slice_data_bo,
- VASliceParameterBufferH264 *next_slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- unsigned int slice_data_bit_offset;
-
- slice_data_bit_offset = avc_get_first_mb_bit_offset(
- slice_data_bo,
- slice_param,
- pic_param->pic_fields.bits.entropy_coding_mode_flag
- );
-
- /* the input bitsteam format on GEN7 differs from GEN6 */
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFD_AVC_BSD_OBJECT | (6 - 2));
- OUT_BCS_BATCH(batch,
- (slice_param->slice_data_size - slice_param->slice_data_offset));
- OUT_BCS_BATCH(batch, slice_param->slice_data_offset);
- OUT_BCS_BATCH(batch,
- (0 << 31) |
- (0 << 14) |
- (0 << 12) |
- (0 << 10) |
- (0 << 8));
- OUT_BCS_BATCH(batch,
- ((slice_data_bit_offset >> 3) << 16) |
- (1 << 7) |
- (0 << 5) |
- (0 << 4) |
- ((next_slice_param == NULL) << 3) | /* LastSlice Flag */
- (slice_data_bit_offset & 0x7));
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static inline void
-gen7_mfd_avc_context_init(
- VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context
-)
-{
- /* Initialize flat scaling lists */
- avc_gen_default_iq_matrix(&gen7_mfd_context->iq_matrix.h264);
-}
-
-static void
-gen7_mfd_avc_decode_init(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- VAPictureParameterBufferH264 *pic_param;
- VASliceParameterBufferH264 *slice_param;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface;
- dri_bo *bo;
- int i, j, enable_avc_ildb = 0;
- unsigned int width_in_mbs, height_in_mbs;
-
- for (j = 0; j < decode_state->num_slice_params && enable_avc_ildb == 0; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j]->buffer;
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
- assert((slice_param->slice_type == SLICE_TYPE_I) ||
- (slice_param->slice_type == SLICE_TYPE_SI) ||
- (slice_param->slice_type == SLICE_TYPE_P) ||
- (slice_param->slice_type == SLICE_TYPE_SP) ||
- (slice_param->slice_type == SLICE_TYPE_B));
-
- if (slice_param->disable_deblocking_filter_idc != 1) {
- enable_avc_ildb = 1;
- break;
- }
-
- slice_param++;
- }
- }
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
- intel_update_avc_frame_store_index(ctx, decode_state, pic_param,
- gen7_mfd_context->reference_surface, &gen7_mfd_context->fs_ctx);
- width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
- height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1;
- assert(width_in_mbs > 0 && width_in_mbs <= 256); /* 4K */
- assert(height_in_mbs > 0 && height_in_mbs <= 256);
-
- /* Current decoded picture */
- obj_surface = decode_state->render_object;
- if (pic_param->pic_fields.bits.reference_pic_flag)
- obj_surface->flags |= SURFACE_REFERENCED;
- else
- obj_surface->flags &= ~SURFACE_REFERENCED;
-
- avc_ensure_surface_bo(ctx, decode_state, obj_surface, pic_param);
- gen7_mfd_init_avc_surface(ctx, pic_param, obj_surface);
-
- dri_bo_unreference(gen7_mfd_context->post_deblocking_output.bo);
- gen7_mfd_context->post_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen7_mfd_context->post_deblocking_output.bo);
- gen7_mfd_context->post_deblocking_output.valid = enable_avc_ildb;
-
- dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.valid = !enable_avc_ildb;
-
- dri_bo_unreference(gen7_mfd_context->intra_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "intra row store",
- width_in_mbs * 64,
- 0x1000);
- assert(bo);
- gen7_mfd_context->intra_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->intra_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "deblocking filter row store",
- width_in_mbs * 64 * 4,
- 0x1000);
- assert(bo);
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "bsd mpc row store",
- width_in_mbs * 64 * 2,
- 0x1000);
- assert(bo);
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen7_mfd_context->mpr_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "mpr row store",
- width_in_mbs * 64 * 2,
- 0x1000);
- assert(bo);
- gen7_mfd_context->mpr_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->mpr_row_store_scratch_buffer.valid = 1;
-
- gen7_mfd_context->bitplane_read_buffer.valid = 0;
-}
-
-static void
-gen7_mfd_avc_decode_picture(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferH264 *pic_param;
- VASliceParameterBufferH264 *slice_param, *next_slice_param, *next_slice_group_param;
- dri_bo *slice_data_bo;
- int i, j;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
- gen7_mfd_avc_decode_init(ctx, decode_state, gen7_mfd_context);
-
- intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- gen7_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_AVC, gen7_mfd_context);
- gen7_mfd_surface_state(ctx, decode_state, MFX_FORMAT_AVC, gen7_mfd_context);
- gen7_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_AVC, gen7_mfd_context);
- gen7_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_AVC, gen7_mfd_context);
- gen7_mfd_avc_qm_state(ctx, decode_state, gen7_mfd_context);
- gen7_mfd_avc_img_state(ctx, decode_state, gen7_mfd_context);
-
- for (j = 0; j < decode_state->num_slice_params; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j]->buffer;
- slice_data_bo = decode_state->slice_datas[j]->bo;
- gen7_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_AVC, gen7_mfd_context);
-
- if (j == decode_state->num_slice_params - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j + 1]->buffer;
-
- if (j == 0 && slice_param->first_mb_in_slice)
- gen7_mfd_avc_phantom_slice_first(ctx, pic_param, slice_param, gen7_mfd_context);
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
- assert((slice_param->slice_type == SLICE_TYPE_I) ||
- (slice_param->slice_type == SLICE_TYPE_SI) ||
- (slice_param->slice_type == SLICE_TYPE_P) ||
- (slice_param->slice_type == SLICE_TYPE_SP) ||
- (slice_param->slice_type == SLICE_TYPE_B));
-
- if (i < decode_state->slice_params[j]->num_elements - 1)
- next_slice_param = slice_param + 1;
- else
- next_slice_param = next_slice_group_param;
-
- gen7_mfd_avc_directmode_state(ctx, decode_state, pic_param, slice_param, gen7_mfd_context);
- gen7_mfd_avc_ref_idx_state(ctx, pic_param, slice_param, gen7_mfd_context);
- gen7_mfd_avc_weightoffset_state(ctx, pic_param, slice_param, gen7_mfd_context);
- gen7_mfd_avc_slice_state(ctx, pic_param, slice_param, next_slice_param, gen7_mfd_context);
- gen7_mfd_avc_bsd_object(ctx, pic_param, slice_param, slice_data_bo, next_slice_param, gen7_mfd_context);
- slice_param++;
- }
- }
-
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-}
-
-static void
-gen7_mfd_mpeg2_decode_init(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- VAPictureParameterBufferMPEG2 *pic_param;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface;
- dri_bo *bo;
- unsigned int width_in_mbs;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
- width_in_mbs = ALIGN(pic_param->horizontal_size, 16) / 16;
-
- mpeg2_set_reference_surfaces(
- ctx,
- gen7_mfd_context->reference_surface,
- decode_state,
- pic_param
- );
-
- /* Current decoded picture */
- obj_surface = decode_state->render_object;
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
-
- dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.valid = 1;
-
- dri_bo_unreference(gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "bsd mpc row store",
- width_in_mbs * 96,
- 0x1000);
- assert(bo);
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
-
- gen7_mfd_context->post_deblocking_output.valid = 0;
- gen7_mfd_context->intra_row_store_scratch_buffer.valid = 0;
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 0;
- gen7_mfd_context->mpr_row_store_scratch_buffer.valid = 0;
- gen7_mfd_context->bitplane_read_buffer.valid = 0;
-}
-
-static void
-gen7_mfd_mpeg2_pic_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferMPEG2 *pic_param;
- unsigned int slice_concealment_disable_bit = 0;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
-
- if (IS_HASWELL(i965->intel.device_info)) {
- /* XXX: disable concealment for now */
- slice_concealment_disable_bit = 1;
- }
-
- BEGIN_BCS_BATCH(batch, 13);
- OUT_BCS_BATCH(batch, MFX_MPEG2_PIC_STATE | (13 - 2));
- OUT_BCS_BATCH(batch,
- (pic_param->f_code & 0xf) << 28 | /* f_code[1][1] */
- ((pic_param->f_code >> 4) & 0xf) << 24 | /* f_code[1][0] */
- ((pic_param->f_code >> 8) & 0xf) << 20 | /* f_code[0][1] */
- ((pic_param->f_code >> 12) & 0xf) << 16 | /* f_code[0][0] */
- pic_param->picture_coding_extension.bits.intra_dc_precision << 14 |
- pic_param->picture_coding_extension.bits.picture_structure << 12 |
- pic_param->picture_coding_extension.bits.top_field_first << 11 |
- pic_param->picture_coding_extension.bits.frame_pred_frame_dct << 10 |
- pic_param->picture_coding_extension.bits.concealment_motion_vectors << 9 |
- pic_param->picture_coding_extension.bits.q_scale_type << 8 |
- pic_param->picture_coding_extension.bits.intra_vlc_format << 7 |
- pic_param->picture_coding_extension.bits.alternate_scan << 6);
- OUT_BCS_BATCH(batch,
- pic_param->picture_coding_type << 9);
- OUT_BCS_BATCH(batch,
- (slice_concealment_disable_bit << 31) |
- ((ALIGN(pic_param->vertical_size, 16) / 16) - 1) << 16 |
- ((ALIGN(pic_param->horizontal_size, 16) / 16) - 1));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_mfd_mpeg2_qm_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- VAIQMatrixBufferMPEG2 * const gen_iq_matrix = &gen7_mfd_context->iq_matrix.mpeg2;
- int i, j;
-
- /* Update internal QM state */
- if (decode_state->iq_matrix && decode_state->iq_matrix->buffer) {
- VAIQMatrixBufferMPEG2 * const iq_matrix =
- (VAIQMatrixBufferMPEG2 *)decode_state->iq_matrix->buffer;
-
- if (gen_iq_matrix->load_intra_quantiser_matrix == -1 ||
- iq_matrix->load_intra_quantiser_matrix) {
- gen_iq_matrix->load_intra_quantiser_matrix =
- iq_matrix->load_intra_quantiser_matrix;
- if (iq_matrix->load_intra_quantiser_matrix) {
- for (j = 0; j < 64; j++)
- gen_iq_matrix->intra_quantiser_matrix[zigzag_direct[j]] =
- iq_matrix->intra_quantiser_matrix[j];
- }
- }
-
- if (gen_iq_matrix->load_non_intra_quantiser_matrix == -1 ||
- iq_matrix->load_non_intra_quantiser_matrix) {
- gen_iq_matrix->load_non_intra_quantiser_matrix =
- iq_matrix->load_non_intra_quantiser_matrix;
- if (iq_matrix->load_non_intra_quantiser_matrix) {
- for (j = 0; j < 64; j++)
- gen_iq_matrix->non_intra_quantiser_matrix[zigzag_direct[j]] =
- iq_matrix->non_intra_quantiser_matrix[j];
- }
- }
- }
-
- /* Commit QM state to HW */
- for (i = 0; i < 2; i++) {
- unsigned char *qm = NULL;
- int qm_type;
-
- if (i == 0) {
- if (gen_iq_matrix->load_intra_quantiser_matrix) {
- qm = gen_iq_matrix->intra_quantiser_matrix;
- qm_type = MFX_QM_MPEG_INTRA_QUANTIZER_MATRIX;
- }
- } else {
- if (gen_iq_matrix->load_non_intra_quantiser_matrix) {
- qm = gen_iq_matrix->non_intra_quantiser_matrix;
- qm_type = MFX_QM_MPEG_NON_INTRA_QUANTIZER_MATRIX;
- }
- }
-
- if (!qm)
- continue;
-
- gen7_mfd_qm_state(ctx, qm_type, qm, 64, gen7_mfd_context);
- }
-}
-
-uint32_t mpeg2_get_slice_data_length(dri_bo *slice_data_bo, VASliceParameterBufferMPEG2 *slice_param)
-{
- uint8_t *buf;
- uint32_t buf_offset = slice_param->slice_data_offset + (slice_param->macroblock_offset >> 3);
- uint32_t buf_size = slice_param->slice_data_size - (slice_param->macroblock_offset >> 3);
- uint32_t i = 0;
-
- dri_bo_map(slice_data_bo, 0);
- buf = (uint8_t *)slice_data_bo->virtual + buf_offset;
-
- if (buf_size < 4)
- return buf_size;
-
- while (i <= (buf_size - 4)) {
- if (buf[i + 2] > 1) {
- i += 3;
- } else if (buf[i + 1]) {
- i += 2;
- } else if (buf[i] || buf[i + 2] != 1) {
- i++;
- } else {
- break;
- }
- }
-
- if (i <= (buf_size - 4))
- buf_size = i;
-
- dri_bo_unmap(slice_data_bo);
- return buf_size;
-}
-
-static void
-gen7_mfd_mpeg2_bsd_object(VADriverContextP ctx,
- VAPictureParameterBufferMPEG2 *pic_param,
- VASliceParameterBufferMPEG2 *slice_param,
- dri_bo *slice_data_bo,
- VASliceParameterBufferMPEG2 *next_slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- unsigned int width_in_mbs = ALIGN(pic_param->horizontal_size, 16) / 16;
- int mb_count, vpos0, hpos0, vpos1, hpos1, is_field_pic_wa, is_field_pic = 0;
-
- if (pic_param->picture_coding_extension.bits.picture_structure == MPEG_TOP_FIELD ||
- pic_param->picture_coding_extension.bits.picture_structure == MPEG_BOTTOM_FIELD)
- is_field_pic = 1;
- is_field_pic_wa = is_field_pic &&
- gen7_mfd_context->wa_mpeg2_slice_vertical_position > 0;
-
- vpos0 = slice_param->slice_vertical_position / (1 + is_field_pic_wa);
- hpos0 = slice_param->slice_horizontal_position;
-
- if (next_slice_param == NULL) {
- vpos1 = ALIGN(pic_param->vertical_size, 16) / 16 / (1 + is_field_pic);
- hpos1 = 0;
- } else {
- vpos1 = next_slice_param->slice_vertical_position / (1 + is_field_pic_wa);
- hpos1 = next_slice_param->slice_horizontal_position;
- }
-
- mb_count = (vpos1 * width_in_mbs + hpos1) - (vpos0 * width_in_mbs + hpos0);
-
- BEGIN_BCS_BATCH(batch, 5);
- OUT_BCS_BATCH(batch, MFD_MPEG2_BSD_OBJECT | (5 - 2));
- OUT_BCS_BATCH(batch,
- mpeg2_get_slice_data_length(slice_data_bo, slice_param));
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_offset + (slice_param->macroblock_offset >> 3));
- OUT_BCS_BATCH(batch,
- hpos0 << 24 |
- vpos0 << 16 |
- mb_count << 8 |
- (next_slice_param == NULL) << 5 |
- (next_slice_param == NULL) << 3 |
- (slice_param->macroblock_offset & 0x7));
- OUT_BCS_BATCH(batch,
- (slice_param->quantiser_scale_code << 24) |
- (IS_HASWELL(i965->intel.device_info) ? (vpos1 << 8 | hpos1) : 0));
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_mfd_mpeg2_decode_picture(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferMPEG2 *pic_param;
- VASliceParameterBufferMPEG2 *slice_param, *next_slice_param, *next_slice_group_param;
- dri_bo *slice_data_bo;
- int i, j;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
-
- gen7_mfd_mpeg2_decode_init(ctx, decode_state, gen7_mfd_context);
- intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- gen7_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_MPEG2, gen7_mfd_context);
- gen7_mfd_surface_state(ctx, decode_state, MFX_FORMAT_MPEG2, gen7_mfd_context);
- gen7_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_MPEG2, gen7_mfd_context);
- gen7_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_MPEG2, gen7_mfd_context);
- gen7_mfd_mpeg2_pic_state(ctx, decode_state, gen7_mfd_context);
- gen7_mfd_mpeg2_qm_state(ctx, decode_state, gen7_mfd_context);
-
- if (gen7_mfd_context->wa_mpeg2_slice_vertical_position < 0)
- gen7_mfd_context->wa_mpeg2_slice_vertical_position =
- mpeg2_wa_slice_vertical_position(decode_state, pic_param);
-
- for (j = 0; j < decode_state->num_slice_params; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferMPEG2 *)decode_state->slice_params[j]->buffer;
- slice_data_bo = decode_state->slice_datas[j]->bo;
- gen7_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_MPEG2, gen7_mfd_context);
-
- if (j == decode_state->num_slice_params - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VASliceParameterBufferMPEG2 *)decode_state->slice_params[j + 1]->buffer;
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
-
- if (i < decode_state->slice_params[j]->num_elements - 1)
- next_slice_param = slice_param + 1;
- else
- next_slice_param = next_slice_group_param;
-
- gen7_mfd_mpeg2_bsd_object(ctx, pic_param, slice_param, slice_data_bo, next_slice_param, gen7_mfd_context);
- slice_param++;
- }
- }
-
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-}
-
-static const int va_to_gen7_vc1_pic_type[5] = {
- GEN7_VC1_I_PICTURE,
- GEN7_VC1_P_PICTURE,
- GEN7_VC1_B_PICTURE,
- GEN7_VC1_BI_PICTURE,
- GEN7_VC1_P_PICTURE,
-};
-
-static const int va_to_gen7_vc1_mv[4] = {
- 1, /* 1-MV */
- 2, /* 1-MV half-pel */
- 3, /* 1-MV half-pef bilinear */
- 0, /* Mixed MV */
-};
-
-static const int b_picture_scale_factor[21] = {
- 128, 85, 170, 64, 192,
- 51, 102, 153, 204, 43,
- 215, 37, 74, 111, 148,
- 185, 222, 32, 96, 160,
- 224,
-};
-
-static const int va_to_gen7_vc1_condover[3] = {
- 0,
- 2,
- 3
-};
-
-static const int va_to_gen7_vc1_profile[4] = {
- GEN7_VC1_SIMPLE_PROFILE,
- GEN7_VC1_MAIN_PROFILE,
- GEN7_VC1_RESERVED_PROFILE,
- GEN7_VC1_ADVANCED_PROFILE
-};
-
-static void
-gen7_mfd_free_vc1_surface(void **data)
-{
- struct gen7_vc1_surface *gen7_vc1_surface = *data;
-
- if (!gen7_vc1_surface)
- return;
-
- dri_bo_unreference(gen7_vc1_surface->dmv);
- free(gen7_vc1_surface);
- *data = NULL;
-}
-
-static void
-gen7_mfd_init_vc1_surface(VADriverContextP ctx,
- VAPictureParameterBufferVC1 *pic_param,
- struct object_surface *obj_surface)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen7_vc1_surface *gen7_vc1_surface = obj_surface->private_data;
- int width_in_mbs = ALIGN(pic_param->coded_width, 16) / 16;
- int height_in_mbs = ALIGN(pic_param->coded_height, 16) / 16;
-
- obj_surface->free_private_data = gen7_mfd_free_vc1_surface;
-
- if (!gen7_vc1_surface) {
- gen7_vc1_surface = calloc(sizeof(struct gen7_vc1_surface), 1);
- assert(gen7_vc1_surface);
- assert((obj_surface->size & 0x3f) == 0);
- obj_surface->private_data = gen7_vc1_surface;
- }
-
- gen7_vc1_surface->picture_type = pic_param->picture_fields.bits.picture_type;
-
- if (gen7_vc1_surface->dmv == NULL) {
- gen7_vc1_surface->dmv = dri_bo_alloc(i965->intel.bufmgr,
- "direct mv w/r buffer",
- width_in_mbs * height_in_mbs * 64,
- 0x1000);
- }
-}
-
-static void
-gen7_mfd_vc1_decode_init(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- VAPictureParameterBufferVC1 *pic_param;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface;
- dri_bo *bo;
- int width_in_mbs;
- int picture_type;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
- width_in_mbs = ALIGN(pic_param->coded_width, 16) / 16;
- picture_type = pic_param->picture_fields.bits.picture_type;
-
- intel_update_vc1_frame_store_index(ctx,
- decode_state,
- pic_param,
- gen7_mfd_context->reference_surface);
-
- /* Current decoded picture */
- obj_surface = decode_state->render_object;
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
- gen7_mfd_init_vc1_surface(ctx, pic_param, obj_surface);
-
- dri_bo_unreference(gen7_mfd_context->post_deblocking_output.bo);
- gen7_mfd_context->post_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen7_mfd_context->post_deblocking_output.bo);
- gen7_mfd_context->post_deblocking_output.valid = pic_param->entrypoint_fields.bits.loopfilter;
-
- dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.valid = !pic_param->entrypoint_fields.bits.loopfilter;
-
- dri_bo_unreference(gen7_mfd_context->intra_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "intra row store",
- width_in_mbs * 64,
- 0x1000);
- assert(bo);
- gen7_mfd_context->intra_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->intra_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "deblocking filter row store",
- width_in_mbs * 7 * 64,
- 0x1000);
- assert(bo);
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "bsd mpc row store",
- width_in_mbs * 96,
- 0x1000);
- assert(bo);
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
-
- gen7_mfd_context->mpr_row_store_scratch_buffer.valid = 0;
-
- gen7_mfd_context->bitplane_read_buffer.valid = !!pic_param->bitplane_present.value;
- dri_bo_unreference(gen7_mfd_context->bitplane_read_buffer.bo);
-
- if (gen7_mfd_context->bitplane_read_buffer.valid) {
- int width_in_mbs = ALIGN(pic_param->coded_width, 16) / 16;
- int height_in_mbs = ALIGN(pic_param->coded_height, 16) / 16;
- int bitplane_width = ALIGN(width_in_mbs, 2) / 2;
- int src_w, src_h;
- uint8_t *src = NULL, *dst = NULL;
-
- assert(decode_state->bit_plane->buffer);
- src = decode_state->bit_plane->buffer;
-
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "VC-1 Bitplane",
- bitplane_width * height_in_mbs,
- 0x1000);
- assert(bo);
- gen7_mfd_context->bitplane_read_buffer.bo = bo;
-
- dri_bo_map(bo, True);
- assert(bo->virtual);
- dst = bo->virtual;
-
- for (src_h = 0; src_h < height_in_mbs; src_h++) {
- for(src_w = 0; src_w < width_in_mbs; src_w++) {
- int src_index, dst_index;
- int src_shift;
- uint8_t src_value;
-
- src_index = (src_h * width_in_mbs + src_w) / 2;
- src_shift = !((src_h * width_in_mbs + src_w) & 1) * 4;
- src_value = ((src[src_index] >> src_shift) & 0xf);
-
- if (picture_type == GEN7_VC1_SKIPPED_PICTURE){
- src_value |= 0x2;
- }
-
- dst_index = src_w / 2;
- dst[dst_index] = ((dst[dst_index] >> 4) | (src_value << 4));
- }
-
- if (src_w & 1)
- dst[src_w / 2] >>= 4;
-
- dst += bitplane_width;
- }
-
- dri_bo_unmap(bo);
- } else
- gen7_mfd_context->bitplane_read_buffer.bo = NULL;
-}
-
-static void
-gen7_mfd_vc1_pic_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferVC1 *pic_param;
- struct object_surface *obj_surface;
- int alt_pquant_config = 0, alt_pquant_edge_mask = 0, alt_pq;
- int dquant, dquantfrm, dqprofile, dqdbedge, dqsbedge, dqbilevel;
- int unified_mv_mode;
- int ref_field_pic_polarity = 0;
- int scale_factor = 0;
- int trans_ac_y = 0;
- int dmv_surface_valid = 0;
- int brfd = 0;
- int fcm = 0;
- int picture_type;
- int profile;
- int overlap;
- int interpolation_mode = 0;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
-
- profile = va_to_gen7_vc1_profile[pic_param->sequence_fields.bits.profile];
- dquant = pic_param->pic_quantizer_fields.bits.dquant;
- dquantfrm = pic_param->pic_quantizer_fields.bits.dq_frame;
- dqprofile = pic_param->pic_quantizer_fields.bits.dq_profile;
- dqdbedge = pic_param->pic_quantizer_fields.bits.dq_db_edge;
- dqsbedge = pic_param->pic_quantizer_fields.bits.dq_sb_edge;
- dqbilevel = pic_param->pic_quantizer_fields.bits.dq_binary_level;
- alt_pq = pic_param->pic_quantizer_fields.bits.alt_pic_quantizer;
-
- if (dquant == 0) {
- alt_pquant_config = 0;
- alt_pquant_edge_mask = 0;
- } else if (dquant == 2) {
- alt_pquant_config = 1;
- alt_pquant_edge_mask = 0xf;
- } else {
- assert(dquant == 1);
- if (dquantfrm == 0) {
- alt_pquant_config = 0;
- alt_pquant_edge_mask = 0;
- alt_pq = 0;
- } else {
- assert(dquantfrm == 1);
- alt_pquant_config = 1;
-
- switch (dqprofile) {
- case 3:
- if (dqbilevel == 0) {
- alt_pquant_config = 2;
- alt_pquant_edge_mask = 0;
- } else {
- assert(dqbilevel == 1);
- alt_pquant_config = 3;
- alt_pquant_edge_mask = 0;
- }
- break;
-
- case 0:
- alt_pquant_edge_mask = 0xf;
- break;
-
- case 1:
- if (dqdbedge == 3)
- alt_pquant_edge_mask = 0x9;
- else
- alt_pquant_edge_mask = (0x3 << dqdbedge);
-
- break;
-
- case 2:
- alt_pquant_edge_mask = (0x1 << dqsbedge);
- break;
-
- default:
- assert(0);
- }
- }
- }
-
- if (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation) {
- assert(pic_param->mv_fields.bits.mv_mode2 < 4);
- unified_mv_mode = va_to_gen7_vc1_mv[pic_param->mv_fields.bits.mv_mode2];
- } else {
- assert(pic_param->mv_fields.bits.mv_mode < 4);
- unified_mv_mode = va_to_gen7_vc1_mv[pic_param->mv_fields.bits.mv_mode];
- }
-
- if (pic_param->sequence_fields.bits.interlace == 1 &&
- pic_param->picture_fields.bits.frame_coding_mode != 0) { /* frame-interlace or field-interlace */
- /* FIXME: calculate reference field picture polarity */
- assert(0);
- ref_field_pic_polarity = 0;
- }
-
- if (pic_param->b_picture_fraction < 21)
- scale_factor = b_picture_scale_factor[pic_param->b_picture_fraction];
-
- picture_type = va_to_gen7_vc1_pic_type[pic_param->picture_fields.bits.picture_type];
-
- if (profile == GEN7_VC1_ADVANCED_PROFILE &&
- picture_type == GEN7_VC1_I_PICTURE)
- picture_type = GEN7_VC1_BI_PICTURE;
-
- if (picture_type == GEN7_VC1_I_PICTURE || picture_type == GEN7_VC1_BI_PICTURE) /* I picture */
- trans_ac_y = pic_param->transform_fields.bits.transform_ac_codingset_idx2;
- else {
- trans_ac_y = pic_param->transform_fields.bits.transform_ac_codingset_idx1;
- /*
- * 8.3.6.2.1 Transform Type Selection
- * If variable-sized transform coding is not enabled,
- * then the 8x8 transform shall be used for all blocks.
- * it is also MFX_VC1_PIC_STATE requirement.
- */
- if (pic_param->transform_fields.bits.variable_sized_transform_flag == 0) {
- pic_param->transform_fields.bits.mb_level_transform_type_flag = 1;
- pic_param->transform_fields.bits.frame_level_transform_type = 0;
- }
- }
-
-
- if (picture_type == GEN7_VC1_B_PICTURE) {
- struct gen7_vc1_surface *gen7_vc1_surface = NULL;
-
- obj_surface = decode_state->reference_objects[1];
-
- if (obj_surface)
- gen7_vc1_surface = obj_surface->private_data;
-
- if (!gen7_vc1_surface ||
- (va_to_gen7_vc1_pic_type[gen7_vc1_surface->picture_type] == GEN7_VC1_I_PICTURE ||
- va_to_gen7_vc1_pic_type[gen7_vc1_surface->picture_type] == GEN7_VC1_BI_PICTURE))
- dmv_surface_valid = 0;
- else
- dmv_surface_valid = 1;
- }
-
- assert(pic_param->picture_fields.bits.frame_coding_mode < 3);
-
- if (pic_param->picture_fields.bits.frame_coding_mode < 2)
- fcm = pic_param->picture_fields.bits.frame_coding_mode;
- else {
- if (pic_param->picture_fields.bits.top_field_first)
- fcm = 2;
- else
- fcm = 3;
- }
-
- if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_B_PICTURE) { /* B picture */
- brfd = pic_param->reference_fields.bits.reference_distance;
- brfd = (scale_factor * brfd) >> 8;
- brfd = pic_param->reference_fields.bits.reference_distance - brfd - 1;
-
- if (brfd < 0)
- brfd = 0;
- }
-
- overlap = pic_param->sequence_fields.bits.overlap;
-
- if (overlap) {
- overlap = 0;
- if (profile != GEN7_VC1_ADVANCED_PROFILE) {
- if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9 &&
- pic_param->picture_fields.bits.picture_type != GEN7_VC1_B_PICTURE) {
- overlap = 1;
- }
- }else {
- if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_P_PICTURE &&
- pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
- overlap = 1;
- }
- if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_I_PICTURE ||
- pic_param->picture_fields.bits.picture_type == GEN7_VC1_BI_PICTURE){
- if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
- overlap = 1;
- } else if (va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 2 ||
- va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 3) {
- overlap = 1;
- }
- }
- }
- }
-
- assert(pic_param->conditional_overlap_flag < 3);
- assert(pic_param->mv_fields.bits.mv_table < 4); /* FIXME: interlace mode */
-
- if (pic_param->mv_fields.bits.mv_mode == VAMvMode1MvHalfPelBilinear ||
- (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation &&
- pic_param->mv_fields.bits.mv_mode2 == VAMvMode1MvHalfPelBilinear))
- interpolation_mode = 9; /* Half-pel bilinear */
- else if (pic_param->mv_fields.bits.mv_mode == VAMvMode1MvHalfPel ||
- (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation &&
- pic_param->mv_fields.bits.mv_mode2 == VAMvMode1MvHalfPel))
- interpolation_mode = 1; /* Half-pel bicubic */
- else
- interpolation_mode = 0; /* Quarter-pel bicubic */
-
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFD_VC1_LONG_PIC_STATE | (6 - 2));
- OUT_BCS_BATCH(batch,
- (((ALIGN(pic_param->coded_height, 16) / 16) - 1) << 16) |
- ((ALIGN(pic_param->coded_width, 16) / 16) - 1));
- OUT_BCS_BATCH(batch,
- ((ALIGN(pic_param->coded_width, 16) / 16 + 1) / 2 - 1) << 24 |
- dmv_surface_valid << 15 |
- (pic_param->pic_quantizer_fields.bits.quantizer == 0) << 14 | /* implicit quantizer */
- pic_param->rounding_control << 13 |
- pic_param->sequence_fields.bits.syncmarker << 12 |
- interpolation_mode << 8 |
- 0 << 7 | /* FIXME: scale up or down ??? */
- pic_param->range_reduction_frame << 6 |
- pic_param->entrypoint_fields.bits.loopfilter << 5 |
- overlap << 4 |
- !pic_param->picture_fields.bits.is_first_field << 3 |
- (pic_param->sequence_fields.bits.profile == 3) << 0);
- OUT_BCS_BATCH(batch,
- va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] << 29 |
- picture_type << 26 |
- fcm << 24 |
- alt_pq << 16 |
- pic_param->pic_quantizer_fields.bits.pic_quantizer_scale << 8 |
- scale_factor << 0);
- OUT_BCS_BATCH(batch,
- unified_mv_mode << 28 |
- pic_param->mv_fields.bits.four_mv_switch << 27 |
- pic_param->fast_uvmc_flag << 26 |
- ref_field_pic_polarity << 25 |
- pic_param->reference_fields.bits.num_reference_pictures << 24 |
- pic_param->reference_fields.bits.reference_distance << 20 |
- pic_param->reference_fields.bits.reference_distance << 16 | /* FIXME: ??? */
- pic_param->mv_fields.bits.extended_dmv_range << 10 |
- pic_param->mv_fields.bits.extended_mv_range << 8 |
- alt_pquant_edge_mask << 4 |
- alt_pquant_config << 2 |
- pic_param->pic_quantizer_fields.bits.half_qp << 1 |
- pic_param->pic_quantizer_fields.bits.pic_quantizer_type << 0);
- OUT_BCS_BATCH(batch,
- !!pic_param->bitplane_present.value << 31 |
- !pic_param->bitplane_present.flags.bp_forward_mb << 30 |
- !pic_param->bitplane_present.flags.bp_mv_type_mb << 29 |
- !pic_param->bitplane_present.flags.bp_skip_mb << 28 |
- !pic_param->bitplane_present.flags.bp_direct_mb << 27 |
- !pic_param->bitplane_present.flags.bp_overflags << 26 |
- !pic_param->bitplane_present.flags.bp_ac_pred << 25 |
- !pic_param->bitplane_present.flags.bp_field_tx << 24 |
- pic_param->mv_fields.bits.mv_table << 20 |
- pic_param->mv_fields.bits.four_mv_block_pattern_table << 18 |
- pic_param->mv_fields.bits.two_mv_block_pattern_table << 16 |
- pic_param->transform_fields.bits.frame_level_transform_type << 12 |
- pic_param->transform_fields.bits.mb_level_transform_type_flag << 11 |
- pic_param->mb_mode_table << 8 |
- trans_ac_y << 6 |
- pic_param->transform_fields.bits.transform_ac_codingset_idx1 << 4 |
- pic_param->transform_fields.bits.intra_transform_dc_table << 3 |
- pic_param->cbp_table << 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_mfd_vc1_pred_pipe_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferVC1 *pic_param;
- int intensitycomp_single;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
- intensitycomp_single = (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation);
-
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFX_VC1_PRED_PIPE_STATE | (6 - 2));
- OUT_BCS_BATCH(batch,
- 0 << 14 | /* FIXME: double ??? */
- 0 << 12 |
- intensitycomp_single << 10 |
- intensitycomp_single << 8 |
- 0 << 4 | /* FIXME: interlace mode */
- 0);
- OUT_BCS_BATCH(batch,
- pic_param->luma_shift << 16 |
- pic_param->luma_scale << 0); /* FIXME: Luma Scaling */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-
-static void
-gen7_mfd_vc1_directmode_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- struct object_surface *obj_surface;
- dri_bo *dmv_read_buffer = NULL, *dmv_write_buffer = NULL;
-
- obj_surface = decode_state->render_object;
-
- if (obj_surface && obj_surface->private_data) {
- dmv_write_buffer = ((struct gen7_vc1_surface *)(obj_surface->private_data))->dmv;
- }
-
- obj_surface = decode_state->reference_objects[1];
-
- if (obj_surface && obj_surface->private_data) {
- dmv_read_buffer = ((struct gen7_vc1_surface *)(obj_surface->private_data))->dmv;
- }
-
- BEGIN_BCS_BATCH(batch, 3);
- OUT_BCS_BATCH(batch, MFX_VC1_DIRECTMODE_STATE | (3 - 2));
-
- if (dmv_write_buffer)
- OUT_BCS_RELOC(batch, dmv_write_buffer,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- if (dmv_read_buffer)
- OUT_BCS_RELOC(batch, dmv_read_buffer,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static int
-gen7_mfd_vc1_get_macroblock_bit_offset(uint8_t *buf, int in_slice_data_bit_offset, int profile)
-{
- int out_slice_data_bit_offset;
- int slice_header_size = in_slice_data_bit_offset / 8;
- int i, j;
-
- if (profile != 3)
- out_slice_data_bit_offset = in_slice_data_bit_offset;
- else {
- for (i = 0, j = 0; i < slice_header_size; i++, j++) {
- if (!buf[j] && !buf[j + 1] && buf[j + 2] == 3 && buf[j + 3] < 4) {
- i++, j += 2;
- }
- }
-
- out_slice_data_bit_offset = 8 * j + in_slice_data_bit_offset % 8;
- }
-
- return out_slice_data_bit_offset;
-}
-
-static void
-gen7_mfd_vc1_bsd_object(VADriverContextP ctx,
- VAPictureParameterBufferVC1 *pic_param,
- VASliceParameterBufferVC1 *slice_param,
- VASliceParameterBufferVC1 *next_slice_param,
- dri_bo *slice_data_bo,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int next_slice_start_vert_pos;
- int macroblock_offset;
- uint8_t *slice_data = NULL;
-
- dri_bo_map(slice_data_bo, 0);
- slice_data = (uint8_t *)(slice_data_bo->virtual + slice_param->slice_data_offset);
- macroblock_offset = gen7_mfd_vc1_get_macroblock_bit_offset(slice_data,
- slice_param->macroblock_offset,
- pic_param->sequence_fields.bits.profile);
- dri_bo_unmap(slice_data_bo);
-
- if (next_slice_param)
- next_slice_start_vert_pos = next_slice_param->slice_vertical_position;
- else
- next_slice_start_vert_pos = ALIGN(pic_param->coded_height, 16) / 16;
-
- BEGIN_BCS_BATCH(batch, 5);
- OUT_BCS_BATCH(batch, MFD_VC1_BSD_OBJECT | (5 - 2));
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_size - (macroblock_offset >> 3));
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_offset + (macroblock_offset >> 3));
- OUT_BCS_BATCH(batch,
- slice_param->slice_vertical_position << 16 |
- next_slice_start_vert_pos << 0);
- OUT_BCS_BATCH(batch,
- (macroblock_offset & 0x7));
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_mfd_vc1_decode_picture(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferVC1 *pic_param;
- VASliceParameterBufferVC1 *slice_param, *next_slice_param, *next_slice_group_param;
- dri_bo *slice_data_bo;
- int i, j;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
-
- gen7_mfd_vc1_decode_init(ctx, decode_state, gen7_mfd_context);
- intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- gen7_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_VC1, gen7_mfd_context);
- gen7_mfd_surface_state(ctx, decode_state, MFX_FORMAT_VC1, gen7_mfd_context);
- gen7_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_VC1, gen7_mfd_context);
- gen7_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_VC1, gen7_mfd_context);
- gen7_mfd_vc1_pic_state(ctx, decode_state, gen7_mfd_context);
- gen7_mfd_vc1_pred_pipe_state(ctx, decode_state, gen7_mfd_context);
- gen7_mfd_vc1_directmode_state(ctx, decode_state, gen7_mfd_context);
-
- for (j = 0; j < decode_state->num_slice_params; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferVC1 *)decode_state->slice_params[j]->buffer;
- slice_data_bo = decode_state->slice_datas[j]->bo;
- gen7_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_VC1, gen7_mfd_context);
-
- if (j == decode_state->num_slice_params - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VASliceParameterBufferVC1 *)decode_state->slice_params[j + 1]->buffer;
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
-
- if (i < decode_state->slice_params[j]->num_elements - 1)
- next_slice_param = slice_param + 1;
- else
- next_slice_param = next_slice_group_param;
-
- gen7_mfd_vc1_bsd_object(ctx, pic_param, slice_param, next_slice_param, slice_data_bo, gen7_mfd_context);
- slice_param++;
- }
- }
-
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-}
-
-static void
-gen7_mfd_jpeg_decode_init(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct object_surface *obj_surface;
- VAPictureParameterBufferJPEGBaseline *pic_param;
- int subsampling = SUBSAMPLE_YUV420;
- int fourcc = VA_FOURCC_IMC3;
-
- pic_param = (VAPictureParameterBufferJPEGBaseline *)decode_state->pic_param->buffer;
-
- if (pic_param->num_components == 1) {
- subsampling = SUBSAMPLE_YUV400;
- fourcc = VA_FOURCC_Y800;
- } else if (pic_param->num_components == 3) {
- int h1 = pic_param->components[0].h_sampling_factor;
- int h2 = pic_param->components[1].h_sampling_factor;
- int h3 = pic_param->components[2].h_sampling_factor;
- int v1 = pic_param->components[0].v_sampling_factor;
- int v2 = pic_param->components[1].v_sampling_factor;
- int v3 = pic_param->components[2].v_sampling_factor;
-
- if (h1 == 2 && h2 == 1 && h3 == 1 &&
- v1 == 2 && v2 == 1 && v3 == 1) {
- subsampling = SUBSAMPLE_YUV420;
- fourcc = VA_FOURCC_IMC3;
- } else if (h1 == 2 && h2 == 1 && h3 == 1 &&
- v1 == 1 && v2 == 1 && v3 == 1) {
- subsampling = SUBSAMPLE_YUV422H;
- fourcc = VA_FOURCC_422H;
- } else if (h1 == 1 && h2 == 1 && h3 == 1 &&
- v1 == 1 && v2 == 1 && v3 == 1) {
- subsampling = SUBSAMPLE_YUV444;
- fourcc = VA_FOURCC_444P;
- } else if (h1 == 4 && h2 == 1 && h3 == 1 &&
- v1 == 1 && v2 == 1 && v3 == 1) {
- subsampling = SUBSAMPLE_YUV411;
- fourcc = VA_FOURCC_411P;
- } else if (h1 == 1 && h2 == 1 && h3 == 1 &&
- v1 == 2 && v2 == 1 && v3 == 1) {
- subsampling = SUBSAMPLE_YUV422V;
- fourcc = VA_FOURCC_422V;
- } else if (h1 == 2 && h2 == 1 && h3 == 1 &&
- v1 == 2 && v2 == 2 && v3 == 2) {
- subsampling = SUBSAMPLE_YUV422H;
- fourcc = VA_FOURCC_422H;
- } else if (h1 == 2 && h2 == 2 && h3 == 2 &&
- v1 == 2 && v2 == 1 && v3 == 1) {
- subsampling = SUBSAMPLE_YUV422V;
- fourcc = VA_FOURCC_422V;
- } else
- assert(0);
- } else {
- assert(0);
- }
-
- /* Current decoded picture */
- obj_surface = decode_state->render_object;
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, fourcc, subsampling);
-
- dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.valid = 1;
-
- gen7_mfd_context->post_deblocking_output.bo = NULL;
- gen7_mfd_context->post_deblocking_output.valid = 0;
-
- gen7_mfd_context->intra_row_store_scratch_buffer.bo = NULL;
- gen7_mfd_context->intra_row_store_scratch_buffer.valid = 0;
-
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = NULL;
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 0;
-
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = NULL;
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 0;
-
- gen7_mfd_context->mpr_row_store_scratch_buffer.bo = NULL;
- gen7_mfd_context->mpr_row_store_scratch_buffer.valid = 0;
-
- gen7_mfd_context->bitplane_read_buffer.bo = NULL;
- gen7_mfd_context->bitplane_read_buffer.valid = 0;
-}
-
-static const int va_to_gen7_jpeg_rotation[4] = {
- GEN7_JPEG_ROTATION_0,
- GEN7_JPEG_ROTATION_90,
- GEN7_JPEG_ROTATION_180,
- GEN7_JPEG_ROTATION_270
-};
-
-static void
-gen7_mfd_jpeg_pic_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferJPEGBaseline *pic_param;
- int chroma_type = GEN7_YUV420;
- int frame_width_in_blks;
- int frame_height_in_blks;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferJPEGBaseline *)decode_state->pic_param->buffer;
-
- if (pic_param->num_components == 1)
- chroma_type = GEN7_YUV400;
- else if (pic_param->num_components == 3) {
- int h1 = pic_param->components[0].h_sampling_factor;
- int h2 = pic_param->components[1].h_sampling_factor;
- int h3 = pic_param->components[2].h_sampling_factor;
- int v1 = pic_param->components[0].v_sampling_factor;
- int v2 = pic_param->components[1].v_sampling_factor;
- int v3 = pic_param->components[2].v_sampling_factor;
-
- if (h1 == 2 && h2 == 1 && h3 == 1 &&
- v1 == 2 && v2 == 1 && v3 == 1)
- chroma_type = GEN7_YUV420;
- else if (h1 == 2 && h2 == 1 && h3 == 1 &&
- v1 == 1 && v2 == 1 && v3 == 1)
- chroma_type = GEN7_YUV422H_2Y;
- else if (h1 == 1 && h2 == 1 && h3 == 1 &&
- v1 == 1 && v2 == 1 && v3 == 1)
- chroma_type = GEN7_YUV444;
- else if (h1 == 4 && h2 == 1 && h3 == 1 &&
- v1 == 1 && v2 == 1 && v3 == 1)
- chroma_type = GEN7_YUV411;
- else if (h1 == 1 && h2 == 1 && h3 == 1 &&
- v1 == 2 && v2 == 1 && v3 == 1)
- chroma_type = GEN7_YUV422V_2Y;
- else if (h1 == 2 && h2 == 1 && h3 == 1 &&
- v1 == 2 && v2 == 2 && v3 == 2)
- chroma_type = GEN7_YUV422H_4Y;
- else if (h2 == 2 && h2 == 2 && h3 == 2 &&
- v1 == 2 && v2 == 1 && v3 == 1)
- chroma_type = GEN7_YUV422V_4Y;
- else
- assert(0);
- }
-
- if (chroma_type == GEN7_YUV400 ||
- chroma_type == GEN7_YUV444 ||
- chroma_type == GEN7_YUV422V_2Y) {
- frame_width_in_blks = ((pic_param->picture_width + 7) / 8);
- frame_height_in_blks = ((pic_param->picture_height + 7) / 8);
- } else if (chroma_type == GEN7_YUV411) {
- frame_width_in_blks = ((pic_param->picture_width + 31) / 32) * 4;
- frame_height_in_blks = ((pic_param->picture_height + 31) / 32) * 4;
- } else {
- frame_width_in_blks = ((pic_param->picture_width + 15) / 16) * 2;
- frame_height_in_blks = ((pic_param->picture_height + 15) / 16) * 2;
- }
-
- BEGIN_BCS_BATCH(batch, 3);
- OUT_BCS_BATCH(batch, MFX_JPEG_PIC_STATE | (3 - 2));
- OUT_BCS_BATCH(batch,
- (va_to_gen7_jpeg_rotation[0] << 4) | /* without rotation */
- (chroma_type << 0));
- OUT_BCS_BATCH(batch,
- ((frame_height_in_blks - 1) << 16) | /* FrameHeightInBlks */
- ((frame_width_in_blks - 1) << 0)); /* FrameWidthInBlks */
- ADVANCE_BCS_BATCH(batch);
-}
-
-static const int va_to_gen7_jpeg_hufftable[2] = {
- MFX_HUFFTABLE_ID_Y,
- MFX_HUFFTABLE_ID_UV
-};
-
-static void
-gen7_mfd_jpeg_huff_table_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context,
- int num_tables)
-{
- VAHuffmanTableBufferJPEGBaseline *huffman_table;
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int index;
-
- if (!decode_state->huffman_table || !decode_state->huffman_table->buffer)
- return;
-
- huffman_table = (VAHuffmanTableBufferJPEGBaseline *)decode_state->huffman_table->buffer;
-
- for (index = 0; index < num_tables; index++) {
- int id = va_to_gen7_jpeg_hufftable[index];
- if (!huffman_table->load_huffman_table[index])
- continue;
- BEGIN_BCS_BATCH(batch, 53);
- OUT_BCS_BATCH(batch, MFX_JPEG_HUFF_TABLE_STATE | (53 - 2));
- OUT_BCS_BATCH(batch, id);
- intel_batchbuffer_data(batch, huffman_table->huffman_table[index].num_dc_codes, 12);
- intel_batchbuffer_data(batch, huffman_table->huffman_table[index].dc_values, 12);
- intel_batchbuffer_data(batch, huffman_table->huffman_table[index].num_ac_codes, 16);
- intel_batchbuffer_data(batch, huffman_table->huffman_table[index].ac_values, 164);
- ADVANCE_BCS_BATCH(batch);
- }
-}
-
-static const int va_to_gen7_jpeg_qm[5] = {
- -1,
- MFX_QM_JPEG_LUMA_Y_QUANTIZER_MATRIX,
- MFX_QM_JPEG_CHROMA_CB_QUANTIZER_MATRIX,
- MFX_QM_JPEG_CHROMA_CR_QUANTIZER_MATRIX,
- MFX_QM_JPEG_ALPHA_QUANTIZER_MATRIX
-};
-
-static void
-gen7_mfd_jpeg_qm_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- VAPictureParameterBufferJPEGBaseline *pic_param;
- VAIQMatrixBufferJPEGBaseline *iq_matrix;
- int index;
-
- if (!decode_state->iq_matrix || !decode_state->iq_matrix->buffer)
- return;
-
- iq_matrix = (VAIQMatrixBufferJPEGBaseline *)decode_state->iq_matrix->buffer;
- pic_param = (VAPictureParameterBufferJPEGBaseline *)decode_state->pic_param->buffer;
-
- assert(pic_param->num_components <= 3);
-
- for (index = 0; index < pic_param->num_components; index++) {
- int id = pic_param->components[index].component_id - pic_param->components[0].component_id + 1;
- int qm_type;
- unsigned char *qm = iq_matrix->quantiser_table[pic_param->components[index].quantiser_table_selector];
- unsigned char raster_qm[64];
- int j;
-
- if (id > 4 || id < 1)
- continue;
-
- if (!iq_matrix->load_quantiser_table[pic_param->components[index].quantiser_table_selector])
- continue;
-
- qm_type = va_to_gen7_jpeg_qm[id];
-
- for (j = 0; j < 64; j++)
- raster_qm[zigzag_direct[j]] = qm[j];
-
- gen7_mfd_qm_state(ctx, qm_type, raster_qm, 64, gen7_mfd_context);
- }
-}
-
-static void
-gen7_mfd_jpeg_bsd_object(VADriverContextP ctx,
- VAPictureParameterBufferJPEGBaseline *pic_param,
- VASliceParameterBufferJPEGBaseline *slice_param,
- VASliceParameterBufferJPEGBaseline *next_slice_param,
- dri_bo *slice_data_bo,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int scan_component_mask = 0;
- int i;
-
- assert(slice_param->num_components > 0);
- assert(slice_param->num_components < 4);
- assert(slice_param->num_components <= pic_param->num_components);
-
- for (i = 0; i < slice_param->num_components; i++) {
- switch (slice_param->components[i].component_selector - pic_param->components[0].component_id + 1) {
- case 1:
- scan_component_mask |= (1 << 0);
- break;
- case 2:
- scan_component_mask |= (1 << 1);
- break;
- case 3:
- scan_component_mask |= (1 << 2);
- break;
- default:
- assert(0);
- break;
- }
- }
-
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFD_JPEG_BSD_OBJECT | (6 - 2));
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_size);
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_offset);
- OUT_BCS_BATCH(batch,
- slice_param->slice_horizontal_position << 16 |
- slice_param->slice_vertical_position << 0);
- OUT_BCS_BATCH(batch,
- ((slice_param->num_components != 1) << 30) | /* interleaved */
- (scan_component_mask << 27) | /* scan components */
- (0 << 26) | /* disable interrupt allowed */
- (slice_param->num_mcus << 0)); /* MCU count */
- OUT_BCS_BATCH(batch,
- (slice_param->restart_interval << 0)); /* RestartInterval */
- ADVANCE_BCS_BATCH(batch);
-}
-
-/* Workaround for JPEG decoding on Ivybridge */
-
-static struct {
- int width;
- int height;
- unsigned char data[32];
- int data_size;
- int data_bit_offset;
- int qp;
-} gen7_jpeg_wa_clip = {
- 16,
- 16,
- {
- 0x65, 0xb8, 0x40, 0x32, 0x13, 0xfd, 0x06, 0x6c,
- 0xfc, 0x0a, 0x50, 0x71, 0x5c, 0x00
- },
- 14,
- 40,
- 28,
-};
-
-static void
-gen7_jpeg_wa_init(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VAStatus status;
- struct object_surface *obj_surface;
-
- if (gen7_mfd_context->jpeg_wa_surface_id != VA_INVALID_SURFACE)
- i965_DestroySurfaces(ctx,
- &gen7_mfd_context->jpeg_wa_surface_id,
- 1);
-
- status = i965_CreateSurfaces(ctx,
- gen7_jpeg_wa_clip.width,
- gen7_jpeg_wa_clip.height,
- VA_RT_FORMAT_YUV420,
- 1,
- &gen7_mfd_context->jpeg_wa_surface_id);
- assert(status == VA_STATUS_SUCCESS);
-
- obj_surface = SURFACE(gen7_mfd_context->jpeg_wa_surface_id);
- assert(obj_surface);
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
- gen7_mfd_context->jpeg_wa_surface_object = obj_surface;
-
- if (!gen7_mfd_context->jpeg_wa_slice_data_bo) {
- gen7_mfd_context->jpeg_wa_slice_data_bo = dri_bo_alloc(i965->intel.bufmgr,
- "JPEG WA data",
- 0x1000,
- 0x1000);
- dri_bo_subdata(gen7_mfd_context->jpeg_wa_slice_data_bo,
- 0,
- gen7_jpeg_wa_clip.data_size,
- gen7_jpeg_wa_clip.data);
- }
-}
-
-static void
-gen7_jpeg_wa_pipe_mode_select(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 5);
- OUT_BCS_BATCH(batch, MFX_PIPE_MODE_SELECT | (5 - 2));
- OUT_BCS_BATCH(batch,
- (MFX_LONG_MODE << 17) | /* Currently only support long format */
- (MFD_MODE_VLD << 15) | /* VLD mode */
- (0 << 10) | /* disable Stream-Out */
- (0 << 9) | /* Post Deblocking Output */
- (1 << 8) | /* Pre Deblocking Output */
- (0 << 5) | /* not in stitch mode */
- (MFX_CODEC_DECODE << 4) | /* decoding mode */
- (MFX_FORMAT_AVC << 0));
- OUT_BCS_BATCH(batch,
- (0 << 4) | /* terminate if AVC motion and POC table error occurs */
- (0 << 3) | /* terminate if AVC mbdata error occurs */
- (0 << 2) | /* terminate if AVC CABAC/CAVLC decode error occurs */
- (0 << 1) |
- (0 << 0));
- OUT_BCS_BATCH(batch, 0); /* pic status/error report id */
- OUT_BCS_BATCH(batch, 0); /* reserved */
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_jpeg_wa_surface_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct object_surface *obj_surface = gen7_mfd_context->jpeg_wa_surface_object;
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- ((obj_surface->orig_width - 1) << 18) |
- ((obj_surface->orig_height - 1) << 4));
- OUT_BCS_BATCH(batch,
- (MFX_SURFACE_PLANAR_420_8 << 28) | /* 420 planar YUV surface */
- (1 << 27) | /* interleave chroma, set to 0 for JPEG */
- (0 << 22) | /* surface object control state, ignored */
- ((obj_surface->width - 1) << 3) | /* pitch */
- (0 << 2) | /* must be 0 */
- (1 << 1) | /* must be tiled */
- (I965_TILEWALK_YMAJOR << 0)); /* tile walk, must be 1 */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* X offset for U(Cb), must be 0 */
- (obj_surface->y_cb_offset << 0)); /* Y offset for U(Cb) */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* X offset for V(Cr), must be 0 */
- (0 << 0)); /* Y offset for V(Cr), must be 0 for video codec, non-zoro for JPEG */
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_jpeg_wa_pipe_buf_addr_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface = gen7_mfd_context->jpeg_wa_surface_object;
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- dri_bo *intra_bo;
- int i;
-
- intra_bo = dri_bo_alloc(i965->intel.bufmgr,
- "intra row store",
- 128 * 64,
- 0x1000);
-
- BEGIN_BCS_BATCH(batch, 24);
- OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (24 - 2));
- OUT_BCS_RELOC(batch,
- obj_surface->bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- OUT_BCS_BATCH(batch, 0); /* post deblocking */
-
- OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
- OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
-
- OUT_BCS_RELOC(batch,
- intra_bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- OUT_BCS_BATCH(batch, 0);
-
- /* DW 7..22 */
- for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
- OUT_BCS_BATCH(batch, 0);
- }
-
- OUT_BCS_BATCH(batch, 0); /* ignore DW23 for decoding */
- ADVANCE_BCS_BATCH(batch);
-
- dri_bo_unreference(intra_bo);
-}
-
-static void
-gen7_jpeg_wa_bsp_buf_base_addr_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- dri_bo *bsd_mpc_bo, *mpr_bo;
-
- bsd_mpc_bo = dri_bo_alloc(i965->intel.bufmgr,
- "bsd mpc row store",
- 11520, /* 1.5 * 120 * 64 */
- 0x1000);
-
- mpr_bo = dri_bo_alloc(i965->intel.bufmgr,
- "mpr row store",
- 7680, /* 1. 0 * 120 * 64 */
- 0x1000);
-
- BEGIN_BCS_BATCH(batch, 4);
- OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (4 - 2));
-
- OUT_BCS_RELOC(batch,
- bsd_mpc_bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- OUT_BCS_RELOC(batch,
- mpr_bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-
- dri_bo_unreference(bsd_mpc_bo);
- dri_bo_unreference(mpr_bo);
-}
-
-static void
-gen7_jpeg_wa_avc_qm_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
-
-}
-
-static void
-gen7_jpeg_wa_avc_img_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int img_struct = 0;
- int mbaff_frame_flag = 0;
- unsigned int width_in_mbs = 1, height_in_mbs = 1;
-
- BEGIN_BCS_BATCH(batch, 16);
- OUT_BCS_BATCH(batch, MFX_AVC_IMG_STATE | (16 - 2));
- OUT_BCS_BATCH(batch,
- (width_in_mbs * height_in_mbs - 1));
- OUT_BCS_BATCH(batch,
- ((height_in_mbs - 1) << 16) |
- ((width_in_mbs - 1) << 0));
- OUT_BCS_BATCH(batch,
- (0 << 24) |
- (0 << 16) |
- (0 << 14) |
- (0 << 13) |
- (0 << 12) | /* differ from GEN6 */
- (0 << 10) |
- (img_struct << 8));
- OUT_BCS_BATCH(batch,
- (1 << 10) | /* 4:2:0 */
- (1 << 7) | /* CABAC */
- (0 << 6) |
- (0 << 5) |
- (0 << 4) |
- (0 << 3) |
- (1 << 2) |
- (mbaff_frame_flag << 1) |
- (0 << 0));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_jpeg_wa_avc_directmode_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int i;
-
- BEGIN_BCS_BATCH(batch, 69);
- OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (69 - 2));
-
- /* reference surfaces 0..15 */
- for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
- OUT_BCS_BATCH(batch, 0); /* top */
- OUT_BCS_BATCH(batch, 0); /* bottom */
- }
-
- /* the current decoding frame/field */
- OUT_BCS_BATCH(batch, 0); /* top */
- OUT_BCS_BATCH(batch, 0); /* bottom */
-
- /* POC List */
- for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_jpeg_wa_ind_obj_base_addr_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 11);
- OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (11 - 2));
- OUT_BCS_RELOC(batch,
- gen7_mfd_context->jpeg_wa_slice_data_bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- OUT_BCS_BATCH(batch, 0x80000000); /* must set, up to 2G */
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_jpeg_wa_avc_bsd_object(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- /* the input bitsteam format on GEN7 differs from GEN6 */
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFD_AVC_BSD_OBJECT | (6 - 2));
- OUT_BCS_BATCH(batch, gen7_jpeg_wa_clip.data_size);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- (0 << 31) |
- (0 << 14) |
- (0 << 12) |
- (0 << 10) |
- (0 << 8));
- OUT_BCS_BATCH(batch,
- ((gen7_jpeg_wa_clip.data_bit_offset >> 3) << 16) |
- (0 << 5) |
- (0 << 4) |
- (1 << 3) | /* LastSlice Flag */
- (gen7_jpeg_wa_clip.data_bit_offset & 0x7));
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_jpeg_wa_avc_slice_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int slice_hor_pos = 0, slice_ver_pos = 0, next_slice_hor_pos = 0, next_slice_ver_pos = 1;
- int num_ref_idx_l0 = 0, num_ref_idx_l1 = 0;
- int first_mb_in_slice = 0;
- int slice_type = SLICE_TYPE_I;
-
- BEGIN_BCS_BATCH(batch, 11);
- OUT_BCS_BATCH(batch, MFX_AVC_SLICE_STATE | (11 - 2));
- OUT_BCS_BATCH(batch, slice_type);
- OUT_BCS_BATCH(batch,
- (num_ref_idx_l1 << 24) |
- (num_ref_idx_l0 << 16) |
- (0 << 8) |
- (0 << 0));
- OUT_BCS_BATCH(batch,
- (0 << 29) |
- (1 << 27) | /* disable Deblocking */
- (0 << 24) |
- (gen7_jpeg_wa_clip.qp << 16) |
- (0 << 8) |
- (0 << 0));
- OUT_BCS_BATCH(batch,
- (slice_ver_pos << 24) |
- (slice_hor_pos << 16) |
- (first_mb_in_slice << 0));
- OUT_BCS_BATCH(batch,
- (next_slice_ver_pos << 16) |
- (next_slice_hor_pos << 0));
- OUT_BCS_BATCH(batch, (1 << 19)); /* last slice flag */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen7_mfd_jpeg_wa(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- gen7_jpeg_wa_init(ctx, gen7_mfd_context);
- intel_batchbuffer_emit_mi_flush(batch);
- gen7_jpeg_wa_pipe_mode_select(ctx, gen7_mfd_context);
- gen7_jpeg_wa_surface_state(ctx, gen7_mfd_context);
- gen7_jpeg_wa_pipe_buf_addr_state(ctx, gen7_mfd_context);
- gen7_jpeg_wa_bsp_buf_base_addr_state(ctx, gen7_mfd_context);
- gen7_jpeg_wa_avc_qm_state(ctx, gen7_mfd_context);
- gen7_jpeg_wa_avc_img_state(ctx, gen7_mfd_context);
- gen7_jpeg_wa_ind_obj_base_addr_state(ctx, gen7_mfd_context);
-
- gen7_jpeg_wa_avc_directmode_state(ctx, gen7_mfd_context);
- gen7_jpeg_wa_avc_slice_state(ctx, gen7_mfd_context);
- gen7_jpeg_wa_avc_bsd_object(ctx, gen7_mfd_context);
-}
-
-void
-gen7_mfd_jpeg_decode_picture(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferJPEGBaseline *pic_param;
- VASliceParameterBufferJPEGBaseline *slice_param, *next_slice_param, *next_slice_group_param;
- dri_bo *slice_data_bo;
- int i, j, max_selector = 0;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferJPEGBaseline *)decode_state->pic_param->buffer;
-
- /* Currently only support Baseline DCT */
- gen7_mfd_jpeg_decode_init(ctx, decode_state, gen7_mfd_context);
- intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
- gen7_mfd_jpeg_wa(ctx, gen7_mfd_context);
- intel_batchbuffer_emit_mi_flush(batch);
- gen7_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_JPEG, gen7_mfd_context);
- gen7_mfd_surface_state(ctx, decode_state, MFX_FORMAT_JPEG, gen7_mfd_context);
- gen7_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_JPEG, gen7_mfd_context);
- gen7_mfd_jpeg_pic_state(ctx, decode_state, gen7_mfd_context);
- gen7_mfd_jpeg_qm_state(ctx, decode_state, gen7_mfd_context);
-
- for (j = 0; j < decode_state->num_slice_params; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferJPEGBaseline *)decode_state->slice_params[j]->buffer;
- slice_data_bo = decode_state->slice_datas[j]->bo;
- gen7_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_JPEG, gen7_mfd_context);
-
- if (j == decode_state->num_slice_params - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VASliceParameterBufferJPEGBaseline *)decode_state->slice_params[j + 1]->buffer;
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- int component;
-
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
-
- if (i < decode_state->slice_params[j]->num_elements - 1)
- next_slice_param = slice_param + 1;
- else
- next_slice_param = next_slice_group_param;
-
- for (component = 0; component < slice_param->num_components; component++) {
- if (max_selector < slice_param->components[component].dc_table_selector)
- max_selector = slice_param->components[component].dc_table_selector;
-
- if (max_selector < slice_param->components[component].ac_table_selector)
- max_selector = slice_param->components[component].ac_table_selector;
- }
-
- slice_param++;
- }
- }
-
- assert(max_selector < 2);
- gen7_mfd_jpeg_huff_table_state(ctx, decode_state, gen7_mfd_context, max_selector + 1);
-
- for (j = 0; j < decode_state->num_slice_params; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferJPEGBaseline *)decode_state->slice_params[j]->buffer;
- slice_data_bo = decode_state->slice_datas[j]->bo;
- gen7_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_JPEG, gen7_mfd_context);
-
- if (j == decode_state->num_slice_params - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VASliceParameterBufferJPEGBaseline *)decode_state->slice_params[j + 1]->buffer;
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
-
- if (i < decode_state->slice_params[j]->num_elements - 1)
- next_slice_param = slice_param + 1;
- else
- next_slice_param = next_slice_group_param;
-
- gen7_mfd_jpeg_bsd_object(ctx, pic_param, slice_param, next_slice_param, slice_data_bo, gen7_mfd_context);
- slice_param++;
- }
- }
-
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-}
-
-static VAStatus
-gen7_mfd_decode_picture(VADriverContextP ctx,
- VAProfile profile,
- union codec_state *codec_state,
- struct hw_context *hw_context)
-
-{
- struct gen7_mfd_context *gen7_mfd_context = (struct gen7_mfd_context *)hw_context;
- struct decode_state *decode_state = &codec_state->decode;
- VAStatus vaStatus;
-
- assert(gen7_mfd_context);
-
- vaStatus = intel_decoder_sanity_check_input(ctx, profile, decode_state);
-
- if (vaStatus != VA_STATUS_SUCCESS)
- goto out;
-
- gen7_mfd_context->wa_mpeg2_slice_vertical_position = -1;
-
- switch (profile) {
- case VAProfileMPEG2Simple:
- case VAProfileMPEG2Main:
- gen7_mfd_mpeg2_decode_picture(ctx, decode_state, gen7_mfd_context);
- break;
-
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- case VAProfileH264StereoHigh:
- gen7_mfd_avc_decode_picture(ctx, decode_state, gen7_mfd_context);
- break;
-
- case VAProfileVC1Simple:
- case VAProfileVC1Main:
- case VAProfileVC1Advanced:
- gen7_mfd_vc1_decode_picture(ctx, decode_state, gen7_mfd_context);
- break;
-
- case VAProfileJPEGBaseline:
- gen7_mfd_jpeg_decode_picture(ctx, decode_state, gen7_mfd_context);
- break;
-
- default:
- assert(0);
- break;
- }
-
- vaStatus = VA_STATUS_SUCCESS;
-
-out:
- return vaStatus;
-}
-
-static void
-gen7_mfd_context_destroy(void *hw_context)
-{
- VADriverContextP ctx;
- struct gen7_mfd_context *gen7_mfd_context = (struct gen7_mfd_context *)hw_context;
-
- ctx = (VADriverContextP)(gen7_mfd_context->driver_context);
-
- dri_bo_unreference(gen7_mfd_context->post_deblocking_output.bo);
- gen7_mfd_context->post_deblocking_output.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->intra_row_store_scratch_buffer.bo);
- gen7_mfd_context->intra_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->mpr_row_store_scratch_buffer.bo);
- gen7_mfd_context->mpr_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->bitplane_read_buffer.bo);
- gen7_mfd_context->bitplane_read_buffer.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->jpeg_wa_slice_data_bo);
-
- if (gen7_mfd_context->jpeg_wa_surface_id != VA_INVALID_SURFACE) {
- i965_DestroySurfaces(ctx,
- &gen7_mfd_context->jpeg_wa_surface_id,
- 1);
- gen7_mfd_context->jpeg_wa_surface_object = NULL;
- }
-
- intel_batchbuffer_free(gen7_mfd_context->base.batch);
- free(gen7_mfd_context);
-}
-
-static void gen7_mfd_mpeg2_context_init(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- gen7_mfd_context->iq_matrix.mpeg2.load_intra_quantiser_matrix = -1;
- gen7_mfd_context->iq_matrix.mpeg2.load_non_intra_quantiser_matrix = -1;
- gen7_mfd_context->iq_matrix.mpeg2.load_chroma_intra_quantiser_matrix = -1;
- gen7_mfd_context->iq_matrix.mpeg2.load_chroma_non_intra_quantiser_matrix = -1;
-}
-
-struct hw_context *
-gen7_dec_hw_context_init(VADriverContextP ctx, struct object_config *obj_config)
-{
- struct intel_driver_data *intel = intel_driver_data(ctx);
- struct gen7_mfd_context *gen7_mfd_context = calloc(1, sizeof(struct gen7_mfd_context));
- int i;
-
- assert(gen7_mfd_context);
- gen7_mfd_context->base.destroy = gen7_mfd_context_destroy;
- gen7_mfd_context->base.run = gen7_mfd_decode_picture;
- gen7_mfd_context->base.batch = intel_batchbuffer_new(intel, I915_EXEC_RENDER, 0);
-
- for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
- gen7_mfd_context->reference_surface[i].surface_id = VA_INVALID_ID;
- gen7_mfd_context->reference_surface[i].frame_store_id = -1;
- gen7_mfd_context->reference_surface[i].obj_surface = NULL;
- }
-
- gen7_mfd_context->jpeg_wa_surface_id = VA_INVALID_SURFACE;
- gen7_mfd_context->jpeg_wa_surface_object = NULL;
-
- switch (obj_config->profile) {
- case VAProfileMPEG2Simple:
- case VAProfileMPEG2Main:
- gen7_mfd_mpeg2_context_init(ctx, gen7_mfd_context);
- break;
-
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- case VAProfileH264StereoHigh:
- gen7_mfd_avc_context_init(ctx, gen7_mfd_context);
- break;
- default:
- break;
- }
-
- gen7_mfd_context->driver_context = ctx;
- return (struct hw_context *)gen7_mfd_context;
-}
diff --git a/src/gen7_mfd.h b/src/gen7_mfd.h
deleted file mode 100644
index f268f5a..0000000
--- a/src/gen7_mfd.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright © 2011 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-
-#ifndef _GEN7_MFD_H_
-#define _GEN7_MFD_H_
-
-#include <xf86drm.h>
-#include <drm.h>
-#include <i915_drm.h>
-#include <intel_bufmgr.h>
-#include "i965_decoder.h"
-
-#define GEN7_VC1_I_PICTURE 0
-#define GEN7_VC1_P_PICTURE 1
-#define GEN7_VC1_B_PICTURE 2
-#define GEN7_VC1_BI_PICTURE 3
-#define GEN7_VC1_SKIPPED_PICTURE 4
-
-#define GEN7_VC1_SIMPLE_PROFILE 0
-#define GEN7_VC1_MAIN_PROFILE 1
-#define GEN7_VC1_ADVANCED_PROFILE 2
-#define GEN7_VC1_RESERVED_PROFILE 3
-
-#define GEN7_JPEG_ROTATION_0 0
-#define GEN7_JPEG_ROTATION_90 1
-#define GEN7_JPEG_ROTATION_270 2
-#define GEN7_JPEG_ROTATION_180 3
-
-#define GEN7_YUV400 0
-#define GEN7_YUV420 1
-#define GEN7_YUV422H_2Y 2
-#define GEN7_YUV444 3
-#define GEN7_YUV411 4
-#define GEN7_YUV422V_2Y 5
-#define GEN7_YUV422H_4Y 6
-#define GEN7_YUV422V_4Y 7
-
-struct gen7_vc1_surface
-{
- dri_bo *dmv;
- int picture_type;
-};
-
-struct hw_context;
-
-struct gen7_mfd_context
-{
- struct hw_context base;
-
- union {
- VAIQMatrixBufferMPEG2 mpeg2;
- VAIQMatrixBufferH264 h264; /* flat scaling lists (default) */
- } iq_matrix;
-
- GenFrameStoreContext fs_ctx;
- GenFrameStore reference_surface[MAX_GEN_REFERENCE_FRAMES];
- GenBuffer post_deblocking_output;
- GenBuffer pre_deblocking_output;
- GenBuffer intra_row_store_scratch_buffer;
- GenBuffer deblocking_filter_row_store_scratch_buffer;
- GenBuffer bsd_mpc_row_store_scratch_buffer;
- GenBuffer mpr_row_store_scratch_buffer;
- GenBuffer bitplane_read_buffer;
- GenBuffer segmentation_buffer;
-
- VASurfaceID jpeg_wa_surface_id;
- struct object_surface *jpeg_wa_surface_object;
- dri_bo *jpeg_wa_slice_data_bo;
-
- int wa_mpeg2_slice_vertical_position;
-
- void *driver_context;
-};
-
-#endif /* _GEN7_MFD_H_ */
diff --git a/src/gen7_vme.c b/src/gen7_vme.c
deleted file mode 100644
index 0362680..0000000
--- a/src/gen7_vme.c
+++ /dev/null
@@ -1,1171 +0,0 @@
-/*
- * Copyright © 2010-2011 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdbool.h>
-#include <string.h>
-#include <assert.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "i965_encoder.h"
-#include "gen6_vme.h"
-#include "gen6_mfc.h"
-#ifdef SURFACE_STATE_PADDED_SIZE
-#undef SURFACE_STATE_PADDED_SIZE
-#endif
-
-#define VME_MSG_LENGTH 32
-
-#define SURFACE_STATE_PADDED_SIZE SURFACE_STATE_PADDED_SIZE_GEN7
-#define SURFACE_STATE_OFFSET(index) (SURFACE_STATE_PADDED_SIZE * index)
-#define BINDING_TABLE_OFFSET(index) (SURFACE_STATE_OFFSET(MAX_MEDIA_SURFACES_GEN6) + sizeof(unsigned int) * index)
-
-#define CURBE_ALLOCATION_SIZE 37 /* in 256-bit */
-#define CURBE_TOTAL_DATA_LENGTH (4 * 32) /* in byte, it should be less than or equal to CURBE_ALLOCATION_SIZE * 32 */
-#define CURBE_URB_ENTRY_LENGTH 4 /* in 256-bit, it should be less than or equal to CURBE_TOTAL_DATA_LENGTH / 32 */
-
-enum VIDEO_CODING_TYPE{
- VIDEO_CODING_AVC = 0,
- VIDEO_CODING_MPEG2,
- VIDEO_CODING_SUM
-};
-
-enum AVC_VME_KERNEL_TYPE{
- AVC_VME_INTRA_SHADER = 0,
- AVC_VME_INTER_SHADER,
- AVC_VME_BATCHBUFFER,
- AVC_VME_BINTER_SHADER,
- AVC_VME_KERNEL_SUM
-};
-
-enum MPEG2_VME_KERNEL_TYPE{
- MPEG2_VME_INTER_SHADER = 0,
- MPEG2_VME_BATCHBUFFER,
- MPEG2_VME_KERNEL_SUM
-};
-
-
-static const uint32_t gen7_vme_intra_frame[][4] = {
-#include "shaders/vme/intra_frame_ivb.g7b"
-};
-
-static const uint32_t gen7_vme_inter_frame[][4] = {
-#include "shaders/vme/inter_frame_ivb.g7b"
-};
-
-static const uint32_t gen7_vme_batchbuffer[][4] = {
-#include "shaders/vme/batchbuffer.g7b"
-};
-
-static const uint32_t gen7_vme_binter_frame[][4] = {
-#include "shaders/vme/inter_bframe_ivb.g7b"
-};
-
-static struct i965_kernel gen7_vme_kernels[] = {
- {
- "AVC VME Intra Frame",
- AVC_VME_INTRA_SHADER, /*index*/
- gen7_vme_intra_frame,
- sizeof(gen7_vme_intra_frame),
- NULL
- },
- {
- "AVC VME inter Frame",
- AVC_VME_INTER_SHADER,
- gen7_vme_inter_frame,
- sizeof(gen7_vme_inter_frame),
- NULL
- },
- {
- "AVC VME BATCHBUFFER",
- AVC_VME_BATCHBUFFER,
- gen7_vme_batchbuffer,
- sizeof(gen7_vme_batchbuffer),
- NULL
- },
- {
- "AVC VME binter Frame",
- AVC_VME_BINTER_SHADER,
- gen7_vme_binter_frame,
- sizeof(gen7_vme_binter_frame),
- NULL
- }
-};
-
-static const uint32_t gen7_vme_mpeg2_inter_frame[][4] = {
-#include "shaders/vme/mpeg2_inter_ivb.g7b"
-};
-
-static const uint32_t gen7_vme_mpeg2_batchbuffer[][4] = {
-#include "shaders/vme/batchbuffer.g7b"
-};
-
-static struct i965_kernel gen7_vme_mpeg2_kernels[] = {
- {
- "MPEG2 VME inter Frame",
- MPEG2_VME_INTER_SHADER,
- gen7_vme_mpeg2_inter_frame,
- sizeof(gen7_vme_mpeg2_inter_frame),
- NULL
- },
- {
- "MPEG2 VME BATCHBUFFER",
- MPEG2_VME_BATCHBUFFER,
- gen7_vme_mpeg2_batchbuffer,
- sizeof(gen7_vme_mpeg2_batchbuffer),
- NULL
- },
-};
-
-/* only used for VME source surface state */
-static void
-gen7_vme_source_surface_state(VADriverContextP ctx,
- int index,
- struct object_surface *obj_surface,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- vme_context->vme_surface2_setup(ctx,
- &vme_context->gpe_context,
- obj_surface,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index));
-}
-
-static void
-gen7_vme_media_source_surface_state(VADriverContextP ctx,
- int index,
- struct object_surface *obj_surface,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- vme_context->vme_media_rw_surface_setup(ctx,
- &vme_context->gpe_context,
- obj_surface,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index),
- 0);
-}
-
-static void
-gen7_vme_output_buffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context)
-
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int is_intra = pSliceParameter->slice_type == SLICE_TYPE_I;
- int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
-
- vme_context->vme_output.num_blocks = width_in_mbs * height_in_mbs;
- vme_context->vme_output.pitch = 16; /* in bytes, always 16 */
-
- if (is_intra)
- vme_context->vme_output.size_block = INTRA_VME_OUTPUT_IN_BYTES;
- else
- vme_context->vme_output.size_block = INTER_VME_OUTPUT_IN_BYTES;
-
- vme_context->vme_output.bo = dri_bo_alloc(i965->intel.bufmgr,
- "VME output buffer",
- vme_context->vme_output.num_blocks * vme_context->vme_output.size_block,
- 0x1000);
- assert(vme_context->vme_output.bo);
- vme_context->vme_buffer_suface_setup(ctx,
- &vme_context->gpe_context,
- &vme_context->vme_output,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index));
-}
-
-static void
-gen7_vme_output_vme_batchbuffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context)
-
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
-
- vme_context->vme_batchbuffer.num_blocks = width_in_mbs * height_in_mbs + 1;
- vme_context->vme_batchbuffer.size_block = 64; /* 4 OWORDs */
- vme_context->vme_batchbuffer.pitch = 16;
- vme_context->vme_batchbuffer.bo = dri_bo_alloc(i965->intel.bufmgr,
- "VME batchbuffer",
- vme_context->vme_batchbuffer.num_blocks * vme_context->vme_batchbuffer.size_block,
- 0x1000);
- vme_context->vme_buffer_suface_setup(ctx,
- &vme_context->gpe_context,
- &vme_context->vme_batchbuffer,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index));
-}
-
-static VAStatus
-gen7_vme_surface_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct object_surface *obj_surface;
-
- /*Setup surfaces state*/
- /* current picture for encoding */
- obj_surface = encode_state->input_yuv_object;
- gen7_vme_source_surface_state(ctx, 0, obj_surface, encoder_context);
- gen7_vme_media_source_surface_state(ctx, 4, obj_surface, encoder_context);
-
- if (!is_intra) {
- VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int slice_type;
-
- slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
- assert(slice_type != SLICE_TYPE_I && slice_type != SLICE_TYPE_SI);
-
- intel_avc_vme_reference_state(ctx, encode_state, encoder_context, 0, 1, gen7_vme_source_surface_state);
-
- if (slice_type == SLICE_TYPE_B)
- intel_avc_vme_reference_state(ctx, encode_state, encoder_context, 1, 2, gen7_vme_source_surface_state);
- }
-
- /* VME output */
- gen7_vme_output_buffer_setup(ctx, encode_state, 3, encoder_context);
- gen7_vme_output_vme_batchbuffer_setup(ctx, encode_state, 5, encoder_context);
- intel_h264_setup_cost_surface(ctx, encode_state, encoder_context,
- BINDING_TABLE_OFFSET(INTEL_COST_TABLE_OFFSET),
- SURFACE_STATE_OFFSET(INTEL_COST_TABLE_OFFSET));
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus gen7_vme_interface_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct gen6_interface_descriptor_data *desc;
- int i;
- dri_bo *bo;
-
- bo = vme_context->gpe_context.idrt.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- desc = bo->virtual;
-
- for (i = 0; i < vme_context->vme_kernel_sum; i++) {
- struct i965_kernel *kernel;
- kernel = &vme_context->gpe_context.kernels[i];
- assert(sizeof(*desc) == 32);
- /*Setup the descritor table*/
- memset(desc, 0, sizeof(*desc));
- desc->desc0.kernel_start_pointer = (kernel->bo->offset >> 6);
- desc->desc2.sampler_count = 1; /* FIXME: */
- desc->desc2.sampler_state_pointer = (vme_context->vme_state.bo->offset >> 5);
- desc->desc3.binding_table_entry_count = 1; /* FIXME: */
- desc->desc3.binding_table_pointer = (BINDING_TABLE_OFFSET(0) >> 5);
- desc->desc4.constant_urb_entry_read_offset = 0;
- desc->desc4.constant_urb_entry_read_length = CURBE_URB_ENTRY_LENGTH;
-
- /*kernel start*/
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0,
- i * sizeof(*desc) + offsetof(struct gen6_interface_descriptor_data, desc0),
- kernel->bo);
- /*Sampler State(VME state pointer)*/
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- (1 << 2), //
- i * sizeof(*desc) + offsetof(struct gen6_interface_descriptor_data, desc2),
- vme_context->vme_state.bo);
- desc++;
- }
- dri_bo_unmap(bo);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus gen7_vme_constant_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- unsigned char *constant_buffer;
- unsigned int *vme_state_message;
- int mv_num;
-
- vme_state_message = (unsigned int *)vme_context->vme_state_message;
- mv_num = 32;
-
- if (encoder_context->codec == CODEC_H264) {
- if (vme_context->h264_level >= 30) {
- mv_num = 16;
-
- if (vme_context->h264_level >= 31)
- mv_num = 8;
- }
- } else if (encoder_context->codec == CODEC_MPEG2) {
- mv_num = 2;
- }
-
-
- vme_state_message[31] = mv_num;
-
- dri_bo_map(vme_context->gpe_context.curbe.bo, 1);
- assert(vme_context->gpe_context.curbe.bo->virtual);
- constant_buffer = vme_context->gpe_context.curbe.bo->virtual;
-
- /* Pass the required constant info into the constant buffer */
- memcpy(constant_buffer, (char *)vme_context->vme_state_message, 128);
-
- dri_bo_unmap( vme_context->gpe_context.curbe.bo);
-
- return VA_STATUS_SUCCESS;
-}
-
-
-static VAStatus gen7_vme_avc_state_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- unsigned int *vme_state_message;
- unsigned int *mb_cost_table;
- int i;
- VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- unsigned int is_low_quality = (encoder_context->quality_level == ENCODER_LOW_QUALITY);
- dri_bo *cost_bo;
- int slice_type;
- uint8_t *cost_ptr;
- int qp;
-
- slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
-
- if (slice_type == SLICE_TYPE_I) {
- cost_bo = vme_context->i_qp_cost_table;
- } else if (slice_type == SLICE_TYPE_P) {
- cost_bo = vme_context->p_qp_cost_table;
- } else {
- cost_bo = vme_context->b_qp_cost_table;
- }
-
- mb_cost_table = (unsigned int *)vme_context->vme_state_message;
- dri_bo_map(vme_context->vme_state.bo, 1);
- dri_bo_map(cost_bo, 0);
- assert(vme_context->vme_state.bo->virtual);
- assert(cost_bo->virtual);
- vme_state_message = (unsigned int *)vme_context->vme_state.bo->virtual;
-
- cost_ptr = (uint8_t *)cost_bo->virtual;
-
- /* up to 8 VME_SEARCH_PATH_LUT is supported */
- /* Two subsequent qp will share the same mode/motion-vector cost table */
- /* the range is from 0-51 */
- for (i = 0; i < 8; i++) {
-
- vme_state_message = (unsigned int *)vme_context->vme_state.bo->virtual +
- i * 32;
- if ((slice_type == SLICE_TYPE_P) && !is_low_quality) {
- vme_state_message[0] = 0x01010101;
- vme_state_message[1] = 0x10010101;
- vme_state_message[2] = 0x0F0F0F0F;
- vme_state_message[3] = 0x100F0F0F;
- vme_state_message[4] = 0x01010101;
- vme_state_message[5] = 0x10010101;
- vme_state_message[6] = 0x0F0F0F0F;
- vme_state_message[7] = 0x100F0F0F;
- vme_state_message[8] = 0x01010101;
- vme_state_message[9] = 0x10010101;
- vme_state_message[10] = 0x0F0F0F0F;
- vme_state_message[11] = 0x000F0F0F;
- vme_state_message[12] = 0x00;
- vme_state_message[13] = 0x00;
- } else {
- vme_state_message[0] = 0x10010101;
- vme_state_message[1] = 0x100F0F0F;
- vme_state_message[2] = 0x10010101;
- vme_state_message[3] = 0x000F0F0F;
- vme_state_message[4] = 0;
- vme_state_message[5] = 0;
- vme_state_message[6] = 0;
- vme_state_message[7] = 0;
- vme_state_message[8] = 0;
- vme_state_message[9] = 0;
- vme_state_message[10] = 0;
- vme_state_message[11] = 0;
- vme_state_message[12] = 0;
- vme_state_message[13] = 0;
- }
-
- qp = 8 * i;
-
- /* when qp is greater than 51, use the cost_table of qp=51 to fulfill */
- if (qp > 51) {
- qp = 51;
- }
- /* Setup the four LUT sets for MbMV cost */
- mb_cost_table = (unsigned int *)(cost_ptr + qp * 32);
- vme_state_message[14] = (mb_cost_table[2] & 0xFFFF);
- vme_state_message[16] = mb_cost_table[0];
- vme_state_message[17] = mb_cost_table[1];
- vme_state_message[18] = mb_cost_table[3];
- vme_state_message[19] = mb_cost_table[4];
-
- qp += 2;
- if (qp > 51) {
- qp = 51;
- }
- mb_cost_table = (unsigned int *)(cost_ptr + qp * 32);
- vme_state_message[14] |= ((mb_cost_table[2] & 0xFFFF) << 16);
- vme_state_message[20] = mb_cost_table[0];
- vme_state_message[21] = mb_cost_table[1];
- vme_state_message[22] = mb_cost_table[3];
- vme_state_message[23] = mb_cost_table[4];
-
- qp += 2;
- if (qp > 51) {
- qp = 51;
- }
- vme_state_message[15] = (mb_cost_table[2] & 0xFFFF);
- vme_state_message[24] = mb_cost_table[0];
- vme_state_message[25] = mb_cost_table[1];
- vme_state_message[26] = mb_cost_table[3];
- vme_state_message[27] = mb_cost_table[4];
-
- qp += 2;
- if (qp > 51) {
- qp = 51;
- }
- mb_cost_table = (unsigned int *)(cost_ptr + qp * 32);
- vme_state_message[15] |= ((mb_cost_table[2] & 0xFFFF) << 16);
- vme_state_message[28] = mb_cost_table[0];
- vme_state_message[29] = mb_cost_table[1];
- vme_state_message[30] = mb_cost_table[3];
- vme_state_message[31] = mb_cost_table[4];
- }
-
- dri_bo_unmap(cost_bo);
- dri_bo_unmap( vme_context->vme_state.bo);
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus gen7_vme_mpeg2_state_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- unsigned int *vme_state_message;
- int i;
- unsigned int *mb_cost_table;
-
- mb_cost_table = (unsigned int *)vme_context->vme_state_message;
-
- //building VME state message
- dri_bo_map(vme_context->vme_state.bo, 1);
- assert(vme_context->vme_state.bo->virtual);
- vme_state_message = (unsigned int *)vme_context->vme_state.bo->virtual;
-
- vme_state_message[0] = 0x01010101;
- vme_state_message[1] = 0x10010101;
- vme_state_message[2] = 0x0F0F0F0F;
- vme_state_message[3] = 0x100F0F0F;
- vme_state_message[4] = 0x01010101;
- vme_state_message[5] = 0x10010101;
- vme_state_message[6] = 0x0F0F0F0F;
- vme_state_message[7] = 0x100F0F0F;
- vme_state_message[8] = 0x01010101;
- vme_state_message[9] = 0x10010101;
- vme_state_message[10] = 0x0F0F0F0F;
- vme_state_message[11] = 0x000F0F0F;
- vme_state_message[12] = 0x00;
- vme_state_message[13] = 0x00;
-
- vme_state_message[14] = (mb_cost_table[2] & 0xFFFF);
- vme_state_message[15] = 0;
- vme_state_message[16] = mb_cost_table[0];
- vme_state_message[17] = 0;
- vme_state_message[18] = mb_cost_table[3];
- vme_state_message[19] = mb_cost_table[4];
-
- for(i = 20; i < 32; i++) {
- vme_state_message[i] = 0;
- }
- //vme_state_message[16] = 0x42424242; //cost function LUT set 0 for Intra
-
- dri_bo_unmap( vme_context->vme_state.bo);
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen7_vme_fill_vme_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- int mb_width, int mb_height,
- int kernel,
- int transform_8x8_mode_flag,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- int mb_x = 0, mb_y = 0;
- int i, s, j;
- unsigned int *command_ptr;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int qp;
- int slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
- int qp_mb, qp_index;
-
- if (encoder_context->rate_control_mode == VA_RC_CQP)
- qp = pic_param->pic_init_qp + slice_param->slice_qp_delta;
- else
- qp = mfc_context->brc.qp_prime_y[encoder_context->layer.curr_frame_layer_id][slice_type];
-
- dri_bo_map(vme_context->vme_batchbuffer.bo, 1);
- command_ptr = vme_context->vme_batchbuffer.bo->virtual;
-
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- VAEncSliceParameterBufferMPEG2 *slice_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[s]->buffer;
-
- for (j = 0; j < encode_state->slice_params_ext[s]->num_elements; j++) {
- int slice_mb_begin = slice_param->macroblock_address;
- int slice_mb_number = slice_param->num_macroblocks;
- unsigned int mb_intra_ub;
- int slice_mb_x = slice_param->macroblock_address % mb_width;
-
- for (i = 0; i < slice_mb_number;) {
- int mb_count = i + slice_mb_begin;
-
- mb_x = mb_count % mb_width;
- mb_y = mb_count / mb_width;
- mb_intra_ub = 0;
-
- if (mb_x != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- }
-
- if (mb_y != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
-
- if (mb_x != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
-
- if (mb_x != (mb_width -1))
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- }
-
- if (i < mb_width) {
- if (i == 0)
- mb_intra_ub &= ~(INTRA_PRED_AVAIL_FLAG_AE);
-
- mb_intra_ub &= ~(INTRA_PRED_AVAIL_FLAG_BCD_MASK);
-
- if ((i == (mb_width - 1)) && slice_mb_x) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- }
- }
-
- if ((i == mb_width) && slice_mb_x) {
- mb_intra_ub &= ~(INTRA_PRED_AVAIL_FLAG_D);
- }
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (9 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
-
- /*inline data */
- *command_ptr++ = (mb_width << 16 | mb_y << 8 | mb_x);
- *command_ptr++ = ((encoder_context->quality_level << 24) | (1 << 16) | transform_8x8_mode_flag | (mb_intra_ub << 8));
-
- if (vme_context->roi_enabled) {
- qp_index = mb_y * mb_width + mb_x;
- qp_mb = *(vme_context->qp_per_mb + qp_index);
- } else
- qp_mb = qp;
- *command_ptr++ = qp_mb;
-
- i += 1;
- }
-
- slice_param++;
- }
- }
-
- *command_ptr++ = 0;
- *command_ptr++ = MI_BATCH_BUFFER_END;
-
- dri_bo_unmap(vme_context->vme_batchbuffer.bo);
-}
-
-
-static void gen7_vme_media_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- dri_bo *bo;
-
- i965_gpe_context_init(ctx, &vme_context->gpe_context);
-
- /* VME output buffer */
- dri_bo_unreference(vme_context->vme_output.bo);
- vme_context->vme_output.bo = NULL;
-
- dri_bo_unreference(vme_context->vme_batchbuffer.bo);
- vme_context->vme_batchbuffer.bo = NULL;
-
- /* VME state */
- dri_bo_unreference(vme_context->vme_state.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- 1024*16, 64);
- assert(bo);
- vme_context->vme_state.bo = bo;
-}
-
-static void gen7_vme_pipeline_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
- int s;
- bool allow_hwscore = true;
- int kernel_shader;
- unsigned int is_low_quality = (encoder_context->quality_level == ENCODER_LOW_QUALITY);
-
- if (is_low_quality)
- allow_hwscore = false;
- else {
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[s]->buffer;
- if ((pSliceParameter->macroblock_address % width_in_mbs)) {
- allow_hwscore = false;
- break;
- }
- }
- }
-
- if ((pSliceParameter->slice_type == SLICE_TYPE_I) ||
- (pSliceParameter->slice_type == SLICE_TYPE_SI)) {
- kernel_shader = AVC_VME_INTRA_SHADER;
- } else if ((pSliceParameter->slice_type == SLICE_TYPE_P) ||
- (pSliceParameter->slice_type == SLICE_TYPE_SP)) {
- kernel_shader = AVC_VME_INTER_SHADER;
- } else {
- kernel_shader = AVC_VME_BINTER_SHADER;
- if (!allow_hwscore)
- kernel_shader = AVC_VME_INTER_SHADER;
- }
-
- if (allow_hwscore)
- gen7_vme_walker_fill_vme_batchbuffer(ctx,
- encode_state,
- width_in_mbs, height_in_mbs,
- kernel_shader,
- pPicParameter->pic_fields.bits.transform_8x8_mode_flag,
- encoder_context);
-
- else
- gen7_vme_fill_vme_batchbuffer(ctx,
- encode_state,
- width_in_mbs, height_in_mbs,
- kernel_shader,
- pPicParameter->pic_fields.bits.transform_8x8_mode_flag,
- encoder_context);
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- gen6_gpe_pipeline_setup(ctx, &vme_context->gpe_context, batch);
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8));
- OUT_RELOC(batch,
- vme_context->vme_batchbuffer.bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- ADVANCE_BATCH(batch);
-
- intel_batchbuffer_end_atomic(batch);
-}
-
-static VAStatus gen7_vme_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int is_intra = pSliceParameter->slice_type == SLICE_TYPE_I;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- if (!vme_context->h264_level ||
- (vme_context->h264_level != pSequenceParameter->level_idc)) {
- vme_context->h264_level = pSequenceParameter->level_idc;
- }
-
- intel_vme_update_mbmv_cost(ctx, encode_state, encoder_context);
- intel_h264_initialize_mbmv_cost(ctx, encode_state, encoder_context);
-
- /*Setup all the memory object*/
- gen7_vme_surface_setup(ctx, encode_state, is_intra, encoder_context);
- gen7_vme_interface_setup(ctx, encode_state, encoder_context);
- gen7_vme_constant_setup(ctx, encode_state, encoder_context);
- gen7_vme_avc_state_setup(ctx, encode_state, is_intra, encoder_context);
-
- /*Programing media pipeline*/
- gen7_vme_pipeline_programing(ctx, encode_state, encoder_context);
-
- return vaStatus;
-}
-
-static VAStatus gen7_vme_run(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- intel_batchbuffer_flush(batch);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus gen7_vme_stop(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen7_vme_pipeline(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- gen7_vme_media_init(ctx, encoder_context);
- gen7_vme_prepare(ctx, encode_state, encoder_context);
- gen7_vme_run(ctx, encode_state, encoder_context);
- gen7_vme_stop(ctx, encode_state, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen7_vme_mpeg2_output_buffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncSequenceParameterBufferMPEG2 *seq_param = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = ALIGN(seq_param->picture_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->picture_height, 16) / 16;
-
- vme_context->vme_output.num_blocks = width_in_mbs * height_in_mbs;
- vme_context->vme_output.pitch = 16; /* in bytes, always 16 */
-
- if (is_intra)
- vme_context->vme_output.size_block = INTRA_VME_OUTPUT_IN_BYTES;
- else
- vme_context->vme_output.size_block = INTER_VME_OUTPUT_IN_BYTES;
-
- vme_context->vme_output.bo = dri_bo_alloc(i965->intel.bufmgr,
- "VME output buffer",
- vme_context->vme_output.num_blocks * vme_context->vme_output.size_block,
- 0x1000);
- assert(vme_context->vme_output.bo);
- vme_context->vme_buffer_suface_setup(ctx,
- &vme_context->gpe_context,
- &vme_context->vme_output,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index));
-}
-
-static void
-gen7_vme_mpeg2_output_vme_batchbuffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context)
-
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncSequenceParameterBufferMPEG2 *seq_param = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = ALIGN(seq_param->picture_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->picture_height, 16) / 16;
-
- vme_context->vme_batchbuffer.num_blocks = width_in_mbs * height_in_mbs + 1;
- vme_context->vme_batchbuffer.size_block = 32; /* 4 OWORDs */
- vme_context->vme_batchbuffer.pitch = 16;
- vme_context->vme_batchbuffer.bo = dri_bo_alloc(i965->intel.bufmgr,
- "VME batchbuffer",
- vme_context->vme_batchbuffer.num_blocks * vme_context->vme_batchbuffer.size_block,
- 0x1000);
- vme_context->vme_buffer_suface_setup(ctx,
- &vme_context->gpe_context,
- &vme_context->vme_batchbuffer,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index));
-}
-
-static VAStatus
-gen7_vme_mpeg2_surface_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct object_surface *obj_surface;
-
- /*Setup surfaces state*/
- /* current picture for encoding */
- obj_surface = encode_state->input_yuv_object;
- gen7_vme_source_surface_state(ctx, 0, obj_surface, encoder_context);
- gen7_vme_media_source_surface_state(ctx, 4, obj_surface, encoder_context);
-
- if (!is_intra) {
- /* reference 0 */
- obj_surface = encode_state->reference_objects[0];
- if (obj_surface->bo != NULL)
- gen7_vme_source_surface_state(ctx, 1, obj_surface, encoder_context);
-
- /* reference 1 */
- obj_surface = encode_state->reference_objects[1];
- if (obj_surface && obj_surface->bo != NULL)
- gen7_vme_source_surface_state(ctx, 2, obj_surface, encoder_context);
- }
-
- /* VME output */
- gen7_vme_mpeg2_output_buffer_setup(ctx, encode_state, 3, is_intra, encoder_context);
- gen7_vme_mpeg2_output_vme_batchbuffer_setup(ctx, encode_state, 5, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen7_vme_mpeg2_fill_vme_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- int mb_width, int mb_height,
- int kernel,
- int transform_8x8_mode_flag,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- int mb_x = 0, mb_y = 0;
- int i, s, j;
- unsigned int *command_ptr;
-
- dri_bo_map(vme_context->vme_batchbuffer.bo, 1);
- command_ptr = vme_context->vme_batchbuffer.bo->virtual;
-
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- VAEncSliceParameterBufferMPEG2 *slice_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[s]->buffer;
-
- for (j = 0; j < encode_state->slice_params_ext[s]->num_elements; j++) {
- int slice_mb_begin = slice_param->macroblock_address;
- int slice_mb_number = slice_param->num_macroblocks;
- unsigned int mb_intra_ub;
-
- for (i = 0; i < slice_mb_number;) {
- int mb_count = i + slice_mb_begin;
-
- mb_x = mb_count % mb_width;
- mb_y = mb_count / mb_width;
- mb_intra_ub = 0;
-
- if (mb_x != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- }
-
- if (mb_y != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
-
- if (mb_x != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
-
- if (mb_x != (mb_width -1))
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- }
-
-
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (8 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
-
- /*inline data */
- *command_ptr++ = (mb_width << 16 | mb_y << 8 | mb_x);
- *command_ptr++ = ( (1 << 16) | transform_8x8_mode_flag | (mb_intra_ub << 8));
-
- i += 1;
- }
-
- slice_param++;
- }
- }
-
- *command_ptr++ = 0;
- *command_ptr++ = MI_BATCH_BUFFER_END;
-
- dri_bo_unmap(vme_context->vme_batchbuffer.bo);
-}
-
-static void
-gen7_vme_mpeg2_pipeline_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- VAEncSequenceParameterBufferMPEG2 *seq_param = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = ALIGN(seq_param->picture_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->picture_height, 16) / 16;
-
- bool allow_hwscore = true;
- int s;
-
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- int j;
- VAEncSliceParameterBufferMPEG2 *slice_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[s]->buffer;
-
- for (j = 0; j < encode_state->slice_params_ext[s]->num_elements; j++) {
- if (slice_param->macroblock_address % width_in_mbs) {
- allow_hwscore = false;
- break;
- }
- }
- }
-
- if (allow_hwscore)
- gen7_vme_mpeg2_walker_fill_vme_batchbuffer(ctx,
- encode_state,
- width_in_mbs, height_in_mbs,
- MPEG2_VME_INTER_SHADER,
- encoder_context);
- else
- gen7_vme_mpeg2_fill_vme_batchbuffer(ctx,
- encode_state,
- width_in_mbs, height_in_mbs,
- MPEG2_VME_INTER_SHADER,
- 0,
- encoder_context);
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- gen6_gpe_pipeline_setup(ctx, &vme_context->gpe_context, batch);
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8));
- OUT_RELOC(batch,
- vme_context->vme_batchbuffer.bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- ADVANCE_BATCH(batch);
-
- intel_batchbuffer_end_atomic(batch);
-}
-
-static VAStatus
-gen7_vme_mpeg2_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- VAEncSequenceParameterBufferMPEG2 *seq_param = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- if ((!vme_context->mpeg2_level) ||
- (vme_context->mpeg2_level != (seq_param->sequence_extension.bits.profile_and_level_indication & MPEG2_LEVEL_MASK))) {
- vme_context->mpeg2_level = seq_param->sequence_extension.bits.profile_and_level_indication & MPEG2_LEVEL_MASK;
- }
-
- /*Setup all the memory object*/
-
- intel_vme_mpeg2_state_setup(ctx, encode_state, encoder_context);
- gen7_vme_mpeg2_surface_setup(ctx, encode_state, 0, encoder_context);
- gen7_vme_interface_setup(ctx, encode_state, encoder_context);
- gen7_vme_constant_setup(ctx, encode_state, encoder_context);
- gen7_vme_mpeg2_state_setup(ctx, encode_state, 0, encoder_context);
-
- /*Programing media pipeline*/
- gen7_vme_mpeg2_pipeline_programing(ctx, encode_state, 0, encoder_context);
-
- return vaStatus;
-}
-
-static VAStatus
-gen7_vme_mpeg2_pipeline(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncSliceParameterBufferMPEG2 *slice_param =
- (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[0]->buffer;
- VAEncSequenceParameterBufferMPEG2 *seq_param =
- (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
-
- /*No need of to exec VME for Intra slice */
- if (slice_param->is_intra_slice) {
- if(!vme_context->vme_output.bo) {
- int w_in_mbs = ALIGN(seq_param->picture_width, 16) / 16;
- int h_in_mbs = ALIGN(seq_param->picture_height, 16) / 16;
-
- vme_context->vme_output.num_blocks = w_in_mbs * h_in_mbs;
- vme_context->vme_output.pitch = 16; /* in bytes, always 16 */
- vme_context->vme_output.size_block = INTRA_VME_OUTPUT_IN_BYTES;
- vme_context->vme_output.bo = dri_bo_alloc(i965->intel.bufmgr,
- "MPEG2 VME output buffer",
- vme_context->vme_output.num_blocks
- * vme_context->vme_output.size_block,
- 0x1000);
- }
-
- return VA_STATUS_SUCCESS;
- }
-
- gen7_vme_media_init(ctx, encoder_context);
- gen7_vme_mpeg2_prepare(ctx, encode_state, encoder_context);
- gen7_vme_run(ctx, encode_state, encoder_context);
- gen7_vme_stop(ctx, encode_state, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen7_vme_context_destroy(void *context)
-{
- struct gen6_vme_context *vme_context = context;
-
- i965_gpe_context_destroy(&vme_context->gpe_context);
-
- dri_bo_unreference(vme_context->vme_output.bo);
- vme_context->vme_output.bo = NULL;
-
- dri_bo_unreference(vme_context->vme_state.bo);
- vme_context->vme_state.bo = NULL;
-
- dri_bo_unreference(vme_context->vme_batchbuffer.bo);
- vme_context->vme_batchbuffer.bo = NULL;
-
- free(vme_context->vme_state_message);
- vme_context->vme_state_message = NULL;
-
- dri_bo_unreference(vme_context->i_qp_cost_table);
- vme_context->i_qp_cost_table = NULL;
-
- dri_bo_unreference(vme_context->p_qp_cost_table);
- vme_context->p_qp_cost_table = NULL;
-
- dri_bo_unreference(vme_context->b_qp_cost_table);
- vme_context->b_qp_cost_table = NULL;
-
- free(vme_context->qp_per_mb);
- vme_context->qp_per_mb = NULL;
-
- free(vme_context);
-}
-
-Bool gen7_vme_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = calloc(1, sizeof(struct gen6_vme_context));
- struct i965_kernel *vme_kernel_list = NULL;
-
- assert(vme_context);
- vme_context->gpe_context.surface_state_binding_table.length =
- (SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_MEDIA_SURFACES_GEN6;
-
- vme_context->gpe_context.idrt.max_entries = MAX_INTERFACE_DESC_GEN6;
- vme_context->gpe_context.idrt.entry_size = sizeof(struct gen6_interface_descriptor_data);
- vme_context->gpe_context.curbe.length = CURBE_TOTAL_DATA_LENGTH;
-
- vme_context->gpe_context.vfe_state.max_num_threads = 60 - 1;
- vme_context->gpe_context.vfe_state.num_urb_entries = 16;
- vme_context->gpe_context.vfe_state.gpgpu_mode = 0;
- vme_context->gpe_context.vfe_state.urb_entry_size = 59 - 1;
- vme_context->gpe_context.vfe_state.curbe_allocation_size = CURBE_ALLOCATION_SIZE - 1;
-
- gen7_vme_scoreboard_init(ctx, vme_context);
-
- if (encoder_context->codec == CODEC_H264) {
- vme_kernel_list = gen7_vme_kernels;
- vme_context->video_coding_type = VIDEO_CODING_AVC;
- vme_context->vme_kernel_sum = AVC_VME_KERNEL_SUM;
- encoder_context->vme_pipeline = gen7_vme_pipeline;
- } else if (encoder_context->codec == CODEC_MPEG2) {
- vme_kernel_list = gen7_vme_mpeg2_kernels;
- vme_context->video_coding_type = VIDEO_CODING_MPEG2;
- vme_context->vme_kernel_sum = MPEG2_VME_KERNEL_SUM;
- encoder_context->vme_pipeline = gen7_vme_mpeg2_pipeline;
- } else {
- /* Unsupported codec */
- assert(0);
- }
-
- i965_gpe_load_kernels(ctx,
- &vme_context->gpe_context,
- vme_kernel_list,
- vme_context->vme_kernel_sum);
-
- vme_context->vme_surface2_setup = gen7_gpe_surface2_setup;
- vme_context->vme_media_rw_surface_setup = gen7_gpe_media_rw_surface_setup;
- vme_context->vme_buffer_suface_setup = gen7_gpe_buffer_suface_setup;
-
- encoder_context->vme_context = vme_context;
- encoder_context->vme_context_destroy = gen7_vme_context_destroy;
- vme_context->vme_state_message = malloc(VME_MSG_LENGTH * sizeof(int));
-
- return True;
-}
diff --git a/src/gen8_mfc.c b/src/gen8_mfc.c
deleted file mode 100644
index bac1e2f..0000000
--- a/src/gen8_mfc.c
+++ /dev/null
@@ -1,4615 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <assert.h>
-
-#include "intel_batchbuffer.h"
-#include "i965_defines.h"
-#include "i965_structs.h"
-#include "i965_drv_video.h"
-#include "i965_encoder.h"
-#include "i965_encoder_utils.h"
-#include "gen6_mfc.h"
-#include "gen6_vme.h"
-#include "intel_media.h"
-#include <va/va_enc_jpeg.h>
-#include "vp8_probs.h"
-
-#define SURFACE_STATE_PADDED_SIZE SURFACE_STATE_PADDED_SIZE_GEN8
-#define SURFACE_STATE_OFFSET(index) (SURFACE_STATE_PADDED_SIZE * index)
-#define BINDING_TABLE_OFFSET(index) (SURFACE_STATE_OFFSET(MAX_MEDIA_SURFACES_GEN6) + sizeof(unsigned int) * index)
-
-#define MFC_SOFTWARE_BATCH 0
-
-#define B0_STEP_REV 2
-#define IS_STEPPING_BPLUS(i965) ((i965->intel.revision) >= B0_STEP_REV)
-
-//Zigzag scan order of the the Luma and Chroma components
-//Note: Jpeg Spec ISO/IEC 10918-1, Figure A.6 shows the zigzag order differently.
-//The Spec is trying to show the zigzag pattern with number positions. The below
-//table will use the pattern shown by A.6 and map the position of the elements in the array
-static const uint32_t zigzag_direct[64] = {
- 0, 1, 8, 16, 9, 2, 3, 10,
- 17, 24, 32, 25, 18, 11, 4, 5,
- 12, 19, 26, 33, 40, 48, 41, 34,
- 27, 20, 13, 6, 7, 14, 21, 28,
- 35, 42, 49, 56, 57, 50, 43, 36,
- 29, 22, 15, 23, 30, 37, 44, 51,
- 58, 59, 52, 45, 38, 31, 39, 46,
- 53, 60, 61, 54, 47, 55, 62, 63
-};
-
-//Default Luminance quantization table
-//Source: Jpeg Spec ISO/IEC 10918-1, Annex K, Table K.1
-static const uint8_t jpeg_luma_quant[64] = {
- 16, 11, 10, 16, 24, 40, 51, 61,
- 12, 12, 14, 19, 26, 58, 60, 55,
- 14, 13, 16, 24, 40, 57, 69, 56,
- 14, 17, 22, 29, 51, 87, 80, 62,
- 18, 22, 37, 56, 68, 109, 103, 77,
- 24, 35, 55, 64, 81, 104, 113, 92,
- 49, 64, 78, 87, 103, 121, 120, 101,
- 72, 92, 95, 98, 112, 100, 103, 99
-};
-
-//Default Chroma quantization table
-//Source: Jpeg Spec ISO/IEC 10918-1, Annex K, Table K.2
-static const uint8_t jpeg_chroma_quant[64] = {
- 17, 18, 24, 47, 99, 99, 99, 99,
- 18, 21, 26, 66, 99, 99, 99, 99,
- 24, 26, 56, 99, 99, 99, 99, 99,
- 47, 66, 99, 99, 99, 99, 99, 99,
- 99, 99, 99, 99, 99, 99, 99, 99,
- 99, 99, 99, 99, 99, 99, 99, 99,
- 99, 99, 99, 99, 99, 99, 99, 99,
- 99, 99, 99, 99, 99, 99, 99, 99
-};
-
-
-static const int va_to_gen7_jpeg_hufftable[2] = {
- MFX_HUFFTABLE_ID_Y,
- MFX_HUFFTABLE_ID_UV
-};
-
-static const uint32_t gen8_mfc_batchbuffer_avc[][4] = {
-#include "shaders/utils/mfc_batchbuffer_hsw.g8b"
-};
-
-static const uint32_t gen9_mfc_batchbuffer_avc[][4] = {
-#include "shaders/utils/mfc_batchbuffer_hsw.g9b"
-};
-
-static struct i965_kernel gen8_mfc_kernels[] = {
- {
- "MFC AVC INTRA BATCHBUFFER ",
- MFC_BATCHBUFFER_AVC_INTRA,
- gen8_mfc_batchbuffer_avc,
- sizeof(gen8_mfc_batchbuffer_avc),
- NULL
- },
-};
-
-static struct i965_kernel gen9_mfc_kernels[] = {
- {
- "MFC AVC INTRA BATCHBUFFER ",
- MFC_BATCHBUFFER_AVC_INTRA,
- gen9_mfc_batchbuffer_avc,
- sizeof(gen9_mfc_batchbuffer_avc),
- NULL
- },
-};
-
-static const uint32_t qm_flat[16] = {
- 0x10101010, 0x10101010, 0x10101010, 0x10101010,
- 0x10101010, 0x10101010, 0x10101010, 0x10101010,
- 0x10101010, 0x10101010, 0x10101010, 0x10101010,
- 0x10101010, 0x10101010, 0x10101010, 0x10101010
-};
-
-static const uint32_t fqm_flat[32] = {
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000
-};
-
-#define INTER_MODE_MASK 0x03
-#define INTER_8X8 0x03
-#define INTER_16X8 0x01
-#define INTER_8X16 0x02
-#define SUBMB_SHAPE_MASK 0x00FF00
-#define INTER_16X16 0x00
-
-#define INTER_MV8 (4 << 20)
-#define INTER_MV32 (6 << 20)
-
-
-static void
-gen8_mfc_pipe_mode_select(VADriverContextP ctx,
- int standard_select,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- assert(standard_select == MFX_FORMAT_MPEG2 ||
- standard_select == MFX_FORMAT_AVC ||
- standard_select == MFX_FORMAT_JPEG ||
- standard_select == MFX_FORMAT_VP8);
-
- BEGIN_BCS_BATCH(batch, 5);
-
- OUT_BCS_BATCH(batch, MFX_PIPE_MODE_SELECT | (5 - 2));
- OUT_BCS_BATCH(batch,
- (MFX_LONG_MODE << 17) | /* Must be long format for encoder */
- (MFD_MODE_VLD << 15) | /* VLD mode */
- (0 << 10) | /* Stream-Out Enable */
- ((!!mfc_context->post_deblocking_output.bo) << 9) | /* Post Deblocking Output */
- ((!!mfc_context->pre_deblocking_output.bo) << 8) | /* Pre Deblocking Output */
- (0 << 6) | /* frame statistics stream-out enable*/
- (0 << 5) | /* not in stitch mode */
- (1 << 4) | /* encoding mode */
- (standard_select << 0)); /* standard select: avc or mpeg2 or jpeg*/
- OUT_BCS_BATCH(batch,
- (0 << 7) | /* expand NOA bus flag */
- (0 << 6) | /* disable slice-level clock gating */
- (0 << 5) | /* disable clock gating for NOA */
- (0 << 4) | /* terminate if AVC motion and POC table error occurs */
- (0 << 3) | /* terminate if AVC mbdata error occurs */
- (0 << 2) | /* terminate if AVC CABAC/CAVLC decode error occurs */
- (0 << 1) |
- (0 << 0));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfc_surface_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- BEGIN_BCS_BATCH(batch, 6);
-
- OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- ((mfc_context->surface_state.height - 1) << 18) |
- ((mfc_context->surface_state.width - 1) << 4));
- OUT_BCS_BATCH(batch,
- (MFX_SURFACE_PLANAR_420_8 << 28) | /* 420 planar YUV surface */
- (1 << 27) | /* must be 1 for interleave U/V, hardware requirement */
- (0 << 22) | /* surface object control state, FIXME??? */
- ((mfc_context->surface_state.w_pitch - 1) << 3) | /* pitch */
- (0 << 2) | /* must be 0 for interleave U/V */
- (1 << 1) | /* must be tiled */
- (I965_TILEWALK_YMAJOR << 0)); /* tile walk, TILEWALK_YMAJOR */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* must be 0 for interleave U/V */
- (mfc_context->surface_state.h_pitch)); /* y offset for U(cb) */
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfc_ind_obj_base_addr_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- int vme_size;
- unsigned int bse_offset;
-
- BEGIN_BCS_BATCH(batch, 26);
-
- OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (26 - 2));
- /* the DW1-3 is for the MFX indirect bistream offset */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW4-5 is the MFX upper bound */
- if (encoder_context->codec == CODEC_VP8) {
- OUT_BCS_RELOC64(batch,
- mfc_context->mfc_indirect_pak_bse_object.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- mfc_context->mfc_indirect_pak_bse_object.end_offset);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- if(encoder_context->codec != CODEC_JPEG) {
- vme_size = vme_context->vme_output.size_block * vme_context->vme_output.num_blocks;
- /* the DW6-10 is for MFX Indirect MV Object Base Address */
- OUT_BCS_RELOC64(batch, vme_context->vme_output.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
- OUT_BCS_RELOC64(batch, vme_context->vme_output.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, vme_size);
- } else {
- /* No VME for JPEG */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- /* the DW11-15 is for MFX IT-COFF. Not used on encoder */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW16-20 is for MFX indirect DBLK. Not used on encoder */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW21-25 is for MFC Indirect PAK-BSE Object Base Address for Encoder*/
- bse_offset = (encoder_context->codec == CODEC_JPEG) ? (mfc_context->mfc_indirect_pak_bse_object.offset) : 0;
- OUT_BCS_RELOC64(batch,
- mfc_context->mfc_indirect_pak_bse_object.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- bse_offset);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- OUT_BCS_RELOC64(batch,
- mfc_context->mfc_indirect_pak_bse_object.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- mfc_context->mfc_indirect_pak_bse_object.end_offset);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfc_avc_img_state(VADriverContextP ctx, struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
-
- int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
- int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
-
- BEGIN_BCS_BATCH(batch, 16);
-
- OUT_BCS_BATCH(batch, MFX_AVC_IMG_STATE | (16 - 2));
- /*DW1. MB setting of frame */
- OUT_BCS_BATCH(batch,
- ((width_in_mbs * height_in_mbs - 1) & 0xFFFF));
- OUT_BCS_BATCH(batch,
- ((height_in_mbs - 1) << 16) |
- ((width_in_mbs - 1) << 0));
- /* DW3 QP setting */
- OUT_BCS_BATCH(batch,
- (0 << 24) | /* Second Chroma QP Offset */
- (0 << 16) | /* Chroma QP Offset */
- (0 << 14) | /* Max-bit conformance Intra flag */
- (0 << 13) | /* Max Macroblock size conformance Inter flag */
- (pPicParameter->pic_fields.bits.weighted_pred_flag << 12) | /*Weighted_Pred_Flag */
- (pPicParameter->pic_fields.bits.weighted_bipred_idc << 10) | /* Weighted_BiPred_Idc */
- (0 << 8) | /* FIXME: Image Structure */
- (0 << 0) ); /* Current Decoed Image Frame Store ID, reserved in Encode mode */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* Mininum Frame size */
- (0 << 15) | /* Disable reading of Macroblock Status Buffer */
- (0 << 14) | /* Load BitStream Pointer only once, 1 slic 1 frame */
- (0 << 13) | /* CABAC 0 word insertion test enable */
- (1 << 12) | /* MVUnpackedEnable,compliant to DXVA */
- (1 << 10) | /* Chroma Format IDC, 4:2:0 */
- (0 << 8) | /* FIXME: MbMvFormatFlag */
- (pPicParameter->pic_fields.bits.entropy_coding_mode_flag << 7) | /*0:CAVLC encoding mode,1:CABAC*/
- (0 << 6) | /* Only valid for VLD decoding mode */
- (0 << 5) | /* Constrained Intra Predition Flag, from PPS */
- (0 << 4) | /* Direct 8x8 inference flag */
- (pPicParameter->pic_fields.bits.transform_8x8_mode_flag << 3) | /*8x8 or 4x4 IDCT Transform Mode Flag*/
- (1 << 2) | /* Frame MB only flag */
- (0 << 1) | /* MBAFF mode is in active */
- (0 << 0)); /* Field picture flag */
- /* DW5 Trellis quantization */
- OUT_BCS_BATCH(batch, 0); /* Mainly about MB rate control and debug, just ignoring */
- OUT_BCS_BATCH(batch, /* Inter and Intra Conformance Max size limit */
- (0xBB8 << 16) | /* InterMbMaxSz */
- (0xEE8) ); /* IntraMbMaxSz */
- OUT_BCS_BATCH(batch, 0); /* Reserved */
- /* DW8. QP delta */
- OUT_BCS_BATCH(batch, 0); /* Slice QP Delta for bitrate control */
- OUT_BCS_BATCH(batch, 0); /* Slice QP Delta for bitrate control */
- /* DW10. Bit setting for MB */
- OUT_BCS_BATCH(batch, 0x8C000000);
- OUT_BCS_BATCH(batch, 0x00010000);
- /* DW12. */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0x02010100);
- /* DW14. For short format */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfc_qm_state(VADriverContextP ctx,
- int qm_type,
- const uint32_t *qm,
- int qm_length,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- unsigned int qm_buffer[16];
-
- assert(qm_length <= 16);
- assert(sizeof(*qm) == 4);
- memcpy(qm_buffer, qm, qm_length * 4);
-
- BEGIN_BCS_BATCH(batch, 18);
- OUT_BCS_BATCH(batch, MFX_QM_STATE | (18 - 2));
- OUT_BCS_BATCH(batch, qm_type << 0);
- intel_batchbuffer_data(batch, qm_buffer, 16 * 4);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfc_avc_qm_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- const unsigned int *qm_4x4_intra;
- const unsigned int *qm_4x4_inter;
- const unsigned int *qm_8x8_intra;
- const unsigned int *qm_8x8_inter;
- VAEncSequenceParameterBufferH264 *pSeqParameter =
- (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferH264 *pPicParameter =
- (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
-
- if (!pSeqParameter->seq_fields.bits.seq_scaling_matrix_present_flag
- && !pPicParameter->pic_fields.bits.pic_scaling_matrix_present_flag) {
- qm_4x4_intra = qm_4x4_inter = qm_8x8_intra = qm_8x8_inter = qm_flat;
- } else {
- VAIQMatrixBufferH264 *qm;
- assert(encode_state->q_matrix && encode_state->q_matrix->buffer);
- qm = (VAIQMatrixBufferH264 *)encode_state->q_matrix->buffer;
- qm_4x4_intra = (unsigned int *)qm->ScalingList4x4[0];
- qm_4x4_inter = (unsigned int *)qm->ScalingList4x4[3];
- qm_8x8_intra = (unsigned int *)qm->ScalingList8x8[0];
- qm_8x8_inter = (unsigned int *)qm->ScalingList8x8[1];
- }
-
- gen8_mfc_qm_state(ctx, MFX_QM_AVC_4X4_INTRA_MATRIX, qm_4x4_intra, 12, encoder_context);
- gen8_mfc_qm_state(ctx, MFX_QM_AVC_4X4_INTER_MATRIX, qm_4x4_inter, 12, encoder_context);
- gen8_mfc_qm_state(ctx, MFX_QM_AVC_8x8_INTRA_MATRIX, qm_8x8_intra, 16, encoder_context);
- gen8_mfc_qm_state(ctx, MFX_QM_AVC_8x8_INTER_MATRIX, qm_8x8_inter, 16, encoder_context);
-}
-
-static void
-gen8_mfc_fqm_state(VADriverContextP ctx,
- int fqm_type,
- const uint32_t *fqm,
- int fqm_length,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- unsigned int fqm_buffer[32];
-
- assert(fqm_length <= 32);
- assert(sizeof(*fqm) == 4);
- memcpy(fqm_buffer, fqm, fqm_length * 4);
-
- BEGIN_BCS_BATCH(batch, 34);
- OUT_BCS_BATCH(batch, MFX_FQM_STATE | (34 - 2));
- OUT_BCS_BATCH(batch, fqm_type << 0);
- intel_batchbuffer_data(batch, fqm_buffer, 32 * 4);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfc_avc_fill_fqm(uint8_t *qm, uint16_t *fqm, int len)
-{
- int i, j;
- for (i = 0; i < len; i++)
- for (j = 0; j < len; j++)
- fqm[i * len + j] = (1 << 16) / qm[j * len + i];
-}
-
-static void
-gen8_mfc_avc_fqm_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAEncSequenceParameterBufferH264 *pSeqParameter =
- (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferH264 *pPicParameter =
- (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
-
- if (!pSeqParameter->seq_fields.bits.seq_scaling_matrix_present_flag
- && !pPicParameter->pic_fields.bits.pic_scaling_matrix_present_flag) {
- gen8_mfc_fqm_state(ctx, MFX_QM_AVC_4X4_INTRA_MATRIX, fqm_flat, 24, encoder_context);
- gen8_mfc_fqm_state(ctx, MFX_QM_AVC_4X4_INTER_MATRIX, fqm_flat, 24, encoder_context);
- gen8_mfc_fqm_state(ctx, MFX_QM_AVC_8x8_INTRA_MATRIX, fqm_flat, 32, encoder_context);
- gen8_mfc_fqm_state(ctx, MFX_QM_AVC_8x8_INTER_MATRIX, fqm_flat, 32, encoder_context);
- } else {
- int i;
- uint32_t fqm[32];
- VAIQMatrixBufferH264 *qm;
- assert(encode_state->q_matrix && encode_state->q_matrix->buffer);
- qm = (VAIQMatrixBufferH264 *)encode_state->q_matrix->buffer;
-
- for (i = 0; i < 3; i++)
- gen8_mfc_avc_fill_fqm(qm->ScalingList4x4[i], (uint16_t *)fqm + 16 * i, 4);
- gen8_mfc_fqm_state(ctx, MFX_QM_AVC_4X4_INTRA_MATRIX, fqm, 24, encoder_context);
-
- for (i = 3; i < 6; i++)
- gen8_mfc_avc_fill_fqm(qm->ScalingList4x4[i], (uint16_t *)fqm + 16 * (i - 3), 4);
- gen8_mfc_fqm_state(ctx, MFX_QM_AVC_4X4_INTER_MATRIX, fqm, 24, encoder_context);
-
- gen8_mfc_avc_fill_fqm(qm->ScalingList8x8[0], (uint16_t *)fqm, 8);
- gen8_mfc_fqm_state(ctx, MFX_QM_AVC_8x8_INTRA_MATRIX, fqm, 32, encoder_context);
-
- gen8_mfc_avc_fill_fqm(qm->ScalingList8x8[1], (uint16_t *)fqm, 8);
- gen8_mfc_fqm_state(ctx, MFX_QM_AVC_8x8_INTER_MATRIX, fqm, 32, encoder_context);
- }
-}
-
-static void
-gen8_mfc_avc_insert_object(VADriverContextP ctx, struct intel_encoder_context *encoder_context,
- unsigned int *insert_data, int lenght_in_dws, int data_bits_in_last_dw,
- int skip_emul_byte_count, int is_last_header, int is_end_of_slice, int emulation_flag,
- struct intel_batchbuffer *batch)
-{
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- if (data_bits_in_last_dw == 0)
- data_bits_in_last_dw = 32;
-
- BEGIN_BCS_BATCH(batch, lenght_in_dws + 2);
-
- OUT_BCS_BATCH(batch, MFX_INSERT_OBJECT | (lenght_in_dws + 2 - 2));
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* always start at offset 0 */
- (data_bits_in_last_dw << 8) |
- (skip_emul_byte_count << 4) |
- (!!emulation_flag << 3) |
- ((!!is_last_header) << 2) |
- ((!!is_end_of_slice) << 1) |
- (0 << 0)); /* FIXME: ??? */
- intel_batchbuffer_data(batch, insert_data, lenght_in_dws * 4);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-
-static void gen8_mfc_init(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- dri_bo *bo;
- int i;
- int width_in_mbs = 0;
- int height_in_mbs = 0;
- int slice_batchbuffer_size;
-
- if (encoder_context->codec == CODEC_H264 ||
- encoder_context->codec == CODEC_H264_MVC) {
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- height_in_mbs = pSequenceParameter->picture_height_in_mbs;
- } else if (encoder_context->codec == CODEC_MPEG2) {
- VAEncSequenceParameterBufferMPEG2 *pSequenceParameter = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
-
- assert(encoder_context->codec == CODEC_MPEG2);
-
- width_in_mbs = ALIGN(pSequenceParameter->picture_width, 16) / 16;
- height_in_mbs = ALIGN(pSequenceParameter->picture_height, 16) / 16;
- } else {
- assert(encoder_context->codec == CODEC_JPEG);
- VAEncPictureParameterBufferJPEG *pic_param = (VAEncPictureParameterBufferJPEG *)encode_state->pic_param_ext->buffer;
-
- width_in_mbs = ALIGN(pic_param->picture_width, 16) / 16;
- height_in_mbs = ALIGN(pic_param->picture_height, 16) / 16;
- }
-
- slice_batchbuffer_size = 64 * width_in_mbs * height_in_mbs + 4096 +
- (SLICE_HEADER + SLICE_TAIL) * encode_state->num_slice_params_ext;
-
- /*Encode common setup for MFC*/
- dri_bo_unreference(mfc_context->post_deblocking_output.bo);
- mfc_context->post_deblocking_output.bo = NULL;
-
- dri_bo_unreference(mfc_context->pre_deblocking_output.bo);
- mfc_context->pre_deblocking_output.bo = NULL;
-
- dri_bo_unreference(mfc_context->uncompressed_picture_source.bo);
- mfc_context->uncompressed_picture_source.bo = NULL;
-
- dri_bo_unreference(mfc_context->mfc_indirect_pak_bse_object.bo);
- mfc_context->mfc_indirect_pak_bse_object.bo = NULL;
-
- for (i = 0; i < NUM_MFC_DMV_BUFFERS; i++){
- if (mfc_context->direct_mv_buffers[i].bo != NULL)
- dri_bo_unreference(mfc_context->direct_mv_buffers[i].bo);
- mfc_context->direct_mv_buffers[i].bo = NULL;
- }
-
- for (i = 0; i < MAX_MFC_REFERENCE_SURFACES; i++){
- if (mfc_context->reference_surfaces[i].bo != NULL)
- dri_bo_unreference(mfc_context->reference_surfaces[i].bo);
- mfc_context->reference_surfaces[i].bo = NULL;
- }
-
- dri_bo_unreference(mfc_context->intra_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- width_in_mbs * 64,
- 64);
- assert(bo);
- mfc_context->intra_row_store_scratch_buffer.bo = bo;
-
- dri_bo_unreference(mfc_context->macroblock_status_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- width_in_mbs * height_in_mbs * 16,
- 64);
- assert(bo);
- mfc_context->macroblock_status_buffer.bo = bo;
-
- dri_bo_unreference(mfc_context->deblocking_filter_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- 4 * width_in_mbs * 64, /* 4 * width_in_mbs * 64 */
- 64);
- assert(bo);
- mfc_context->deblocking_filter_row_store_scratch_buffer.bo = bo;
-
- dri_bo_unreference(mfc_context->bsd_mpc_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- 2 * width_in_mbs * 64, /* 2 * width_in_mbs * 64 */
- 0x1000);
- assert(bo);
- mfc_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
-
- dri_bo_unreference(mfc_context->mfc_batchbuffer_surface.bo);
- mfc_context->mfc_batchbuffer_surface.bo = NULL;
-
- dri_bo_unreference(mfc_context->aux_batchbuffer_surface.bo);
- mfc_context->aux_batchbuffer_surface.bo = NULL;
-
- if (mfc_context->aux_batchbuffer)
- intel_batchbuffer_free(mfc_context->aux_batchbuffer);
-
- mfc_context->aux_batchbuffer = intel_batchbuffer_new(&i965->intel, I915_EXEC_BSD, slice_batchbuffer_size);
- mfc_context->aux_batchbuffer_surface.bo = mfc_context->aux_batchbuffer->buffer;
- dri_bo_reference(mfc_context->aux_batchbuffer_surface.bo);
- mfc_context->aux_batchbuffer_surface.pitch = 16;
- mfc_context->aux_batchbuffer_surface.num_blocks = mfc_context->aux_batchbuffer->size / 16;
- mfc_context->aux_batchbuffer_surface.size_block = 16;
-
- gen8_gpe_context_init(ctx, &mfc_context->gpe_context);
-}
-
-static void
-gen8_mfc_pipe_buf_addr_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- int i;
-
- BEGIN_BCS_BATCH(batch, 61);
-
- OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (61 - 2));
-
- /* the DW1-3 is for pre_deblocking */
- if (mfc_context->pre_deblocking_output.bo)
- OUT_BCS_RELOC64(batch, mfc_context->pre_deblocking_output.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* pre output addr */
-
- }
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
- /* the DW4-6 is for the post_deblocking */
-
- if (mfc_context->post_deblocking_output.bo)
- OUT_BCS_RELOC64(batch, mfc_context->post_deblocking_output.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0); /* post output addr */
- else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* the DW7-9 is for the uncompressed_picture */
- OUT_BCS_RELOC64(batch, mfc_context->uncompressed_picture_source.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0); /* uncompressed data */
-
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* the DW10-12 is for the mb status */
- OUT_BCS_RELOC64(batch, mfc_context->macroblock_status_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0); /* StreamOut data*/
-
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* the DW13-15 is for the intra_row_store_scratch */
- OUT_BCS_RELOC64(batch, mfc_context->intra_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* the DW16-18 is for the deblocking filter */
- OUT_BCS_RELOC64(batch, mfc_context->deblocking_filter_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* the DW 19-50 is for Reference pictures*/
- for (i = 0; i < ARRAY_ELEMS(mfc_context->reference_surfaces); i++) {
- if ( mfc_context->reference_surfaces[i].bo != NULL) {
- OUT_BCS_RELOC64(batch, mfc_context->reference_surfaces[i].bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- }
-
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* The DW 52-54 is for the MB status buffer */
- OUT_BCS_RELOC64(batch, mfc_context->macroblock_status_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0); /* Macroblock status buffer*/
-
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* the DW 55-57 is the ILDB buffer */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW 58-60 is the second ILDB buffer */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfc_avc_directmode_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- int i;
-
- BEGIN_BCS_BATCH(batch, 71);
-
- OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (71 - 2));
-
- /* Reference frames and Current frames */
- /* the DW1-32 is for the direct MV for reference */
- for(i = 0; i < NUM_MFC_DMV_BUFFERS - 2; i += 2) {
- if ( mfc_context->direct_mv_buffers[i].bo != NULL) {
- OUT_BCS_RELOC64(batch, mfc_context->direct_mv_buffers[i].bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* the DW34-36 is the MV for the current reference */
- OUT_BCS_RELOC64(batch, mfc_context->direct_mv_buffers[NUM_MFC_DMV_BUFFERS - 2].bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
-
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* POL list */
- for(i = 0; i < 32; i++) {
- OUT_BCS_BATCH(batch, i/2);
- }
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-
-static void
-gen8_mfc_bsp_buf_base_addr_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- BEGIN_BCS_BATCH(batch, 10);
-
- OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (10 - 2));
- OUT_BCS_RELOC64(batch, mfc_context->bsd_mpc_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* the DW4-6 is for MPR Row Store Scratch Buffer Base Address */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW7-9 is for Bitplane Read Buffer Base Address */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-
-static void gen8_mfc_avc_pipeline_picture_programing( VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- mfc_context->pipe_mode_select(ctx, MFX_FORMAT_AVC, encoder_context);
- mfc_context->set_surface_state(ctx, encoder_context);
- mfc_context->ind_obj_base_addr_state(ctx, encoder_context);
- gen8_mfc_pipe_buf_addr_state(ctx, encoder_context);
- gen8_mfc_bsp_buf_base_addr_state(ctx, encoder_context);
- mfc_context->avc_img_state(ctx, encode_state, encoder_context);
- mfc_context->avc_qm_state(ctx, encode_state, encoder_context);
- mfc_context->avc_fqm_state(ctx, encode_state, encoder_context);
- gen8_mfc_avc_directmode_state(ctx, encoder_context);
- intel_mfc_avc_ref_idx_state(ctx, encode_state, encoder_context);
-}
-
-
-static VAStatus gen8_mfc_run(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- intel_batchbuffer_flush(batch); //run the pipeline
-
- return VA_STATUS_SUCCESS;
-}
-
-
-static VAStatus
-gen8_mfc_stop(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int *encoded_bits_size)
-{
- VAStatus vaStatus = VA_STATUS_ERROR_UNKNOWN;
- VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VACodedBufferSegment *coded_buffer_segment;
-
- vaStatus = i965_MapBuffer(ctx, pPicParameter->coded_buf, (void **)&coded_buffer_segment);
- assert(vaStatus == VA_STATUS_SUCCESS);
- *encoded_bits_size = coded_buffer_segment->size * 8;
- i965_UnmapBuffer(ctx, pPicParameter->coded_buf);
-
- return VA_STATUS_SUCCESS;
-}
-
-
-static void
-gen8_mfc_avc_slice_state(VADriverContextP ctx,
- VAEncPictureParameterBufferH264 *pic_param,
- VAEncSliceParameterBufferH264 *slice_param,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int rate_control_enable,
- int qp,
- struct intel_batchbuffer *batch)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
- int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
- int beginmb = slice_param->macroblock_address;
- int endmb = beginmb + slice_param->num_macroblocks;
- int beginx = beginmb % width_in_mbs;
- int beginy = beginmb / width_in_mbs;
- int nextx = endmb % width_in_mbs;
- int nexty = endmb / width_in_mbs;
- int slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
- int last_slice = (endmb == (width_in_mbs * height_in_mbs));
- int maxQpN, maxQpP;
- unsigned char correct[6], grow, shrink;
- int i;
- int weighted_pred_idc = 0;
- unsigned int luma_log2_weight_denom = slice_param->luma_log2_weight_denom;
- unsigned int chroma_log2_weight_denom = slice_param->chroma_log2_weight_denom;
- int num_ref_l0 = 0, num_ref_l1 = 0;
-
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- if (slice_type == SLICE_TYPE_I) {
- luma_log2_weight_denom = 0;
- chroma_log2_weight_denom = 0;
- } else if (slice_type == SLICE_TYPE_P) {
- weighted_pred_idc = pic_param->pic_fields.bits.weighted_pred_flag;
- num_ref_l0 = pic_param->num_ref_idx_l0_active_minus1 + 1;
-
- if (slice_param->num_ref_idx_active_override_flag)
- num_ref_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
- } else if (slice_type == SLICE_TYPE_B) {
- weighted_pred_idc = pic_param->pic_fields.bits.weighted_bipred_idc;
- num_ref_l0 = pic_param->num_ref_idx_l0_active_minus1 + 1;
- num_ref_l1 = pic_param->num_ref_idx_l1_active_minus1 + 1;
-
- if (slice_param->num_ref_idx_active_override_flag) {
- num_ref_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
- num_ref_l1 = slice_param->num_ref_idx_l1_active_minus1 + 1;
- }
-
- if (weighted_pred_idc == 2) {
- /* 8.4.3 - Derivation process for prediction weights (8-279) */
- luma_log2_weight_denom = 5;
- chroma_log2_weight_denom = 5;
- }
- }
-
- maxQpN = mfc_context->bit_rate_control_context[slice_type].MaxQpNegModifier;
- maxQpP = mfc_context->bit_rate_control_context[slice_type].MaxQpPosModifier;
-
- for (i = 0; i < 6; i++)
- correct[i] = mfc_context->bit_rate_control_context[slice_type].Correct[i];
-
- grow = mfc_context->bit_rate_control_context[slice_type].GrowInit +
- (mfc_context->bit_rate_control_context[slice_type].GrowResistance << 4);
- shrink = mfc_context->bit_rate_control_context[slice_type].ShrinkInit +
- (mfc_context->bit_rate_control_context[slice_type].ShrinkResistance << 4);
-
- BEGIN_BCS_BATCH(batch, 11);;
-
- OUT_BCS_BATCH(batch, MFX_AVC_SLICE_STATE | (11 - 2) );
- OUT_BCS_BATCH(batch, slice_type); /*Slice Type: I:P:B Slice*/
-
- OUT_BCS_BATCH(batch,
- (num_ref_l0 << 16) |
- (num_ref_l1 << 24) |
- (chroma_log2_weight_denom << 8) |
- (luma_log2_weight_denom << 0));
-
- OUT_BCS_BATCH(batch,
- (weighted_pred_idc << 30) |
- (slice_param->direct_spatial_mv_pred_flag<<29) | /*Direct Prediction Type*/
- (slice_param->disable_deblocking_filter_idc << 27) |
- (slice_param->cabac_init_idc << 24) |
- (qp<<16) | /*Slice Quantization Parameter*/
- ((slice_param->slice_beta_offset_div2 & 0xf) << 8) |
- ((slice_param->slice_alpha_c0_offset_div2 & 0xf) << 0));
- OUT_BCS_BATCH(batch,
- (beginy << 24) | /*First MB X&Y , the begin postion of current slice*/
- (beginx << 16) |
- slice_param->macroblock_address );
- OUT_BCS_BATCH(batch, (nexty << 16) | nextx); /*Next slice first MB X&Y*/
- OUT_BCS_BATCH(batch,
- (0/*rate_control_enable*/ << 31) | /*in CBR mode RateControlCounterEnable = enable*/
- (1 << 30) | /*ResetRateControlCounter*/
- (0 << 28) | /*RC Triggle Mode = Always Rate Control*/
- (4 << 24) | /*RC Stable Tolerance, middle level*/
- (0/*rate_control_enable*/ << 23) | /*RC Panic Enable*/
- (0 << 22) | /*QP mode, don't modfiy CBP*/
- (0 << 21) | /*MB Type Direct Conversion Enabled*/
- (0 << 20) | /*MB Type Skip Conversion Enabled*/
- (last_slice << 19) | /*IsLastSlice*/
- (0 << 18) | /*BitstreamOutputFlag Compressed BitStream Output Disable Flag 0:enable 1:disable*/
- (1 << 17) | /*HeaderPresentFlag*/
- (1 << 16) | /*SliceData PresentFlag*/
- (1 << 15) | /*TailPresentFlag*/
- (1 << 13) | /*RBSP NAL TYPE*/
- (0 << 12) ); /*CabacZeroWordInsertionEnable*/
- OUT_BCS_BATCH(batch, mfc_context->mfc_indirect_pak_bse_object.offset);
- OUT_BCS_BATCH(batch,
- (maxQpN << 24) | /*Target QP - 24 is lowest QP*/
- (maxQpP << 16) | /*Target QP + 20 is highest QP*/
- (shrink << 8) |
- (grow << 0));
- OUT_BCS_BATCH(batch,
- (correct[5] << 20) |
- (correct[4] << 16) |
- (correct[3] << 12) |
- (correct[2] << 8) |
- (correct[1] << 4) |
- (correct[0] << 0));
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-#define AVC_INTRA_RDO_OFFSET 4
-#define AVC_INTER_RDO_OFFSET 10
-#define AVC_INTER_MSG_OFFSET 8
-#define AVC_INTER_MV_OFFSET 48
-#define AVC_RDO_MASK 0xFFFF
-
-static int
-gen8_mfc_avc_pak_object_intra(VADriverContextP ctx, int x, int y, int end_mb,
- int qp,unsigned int *msg,
- struct intel_encoder_context *encoder_context,
- unsigned char target_mb_size, unsigned char max_mb_size,
- struct intel_batchbuffer *batch)
-{
- int len_in_dwords = 12;
- unsigned int intra_msg;
-#define INTRA_MSG_FLAG (1 << 13)
-#define INTRA_MBTYPE_MASK (0x1F0000)
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, len_in_dwords);
-
- intra_msg = msg[0] & 0xC0FF;
- intra_msg |= INTRA_MSG_FLAG;
- intra_msg |= ((msg[0] & INTRA_MBTYPE_MASK) >> 8);
- OUT_BCS_BATCH(batch, MFC_AVC_PAK_OBJECT | (len_in_dwords - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- (0 << 24) | /* PackedMvNum, Debug*/
- (0 << 20) | /* No motion vector */
- (1 << 19) | /* CbpDcY */
- (1 << 18) | /* CbpDcU */
- (1 << 17) | /* CbpDcV */
- intra_msg);
-
- OUT_BCS_BATCH(batch, (0xFFFF << 16) | (y << 8) | x); /* Code Block Pattern for Y*/
- OUT_BCS_BATCH(batch, 0x000F000F); /* Code Block Pattern */
- OUT_BCS_BATCH(batch, (0 << 27) | (end_mb << 26) | qp); /* Last MB */
-
- /*Stuff for Intra MB*/
- OUT_BCS_BATCH(batch, msg[1]); /* We using Intra16x16 no 4x4 predmode*/
- OUT_BCS_BATCH(batch, msg[2]);
- OUT_BCS_BATCH(batch, msg[3]&0xFF);
-
- /*MaxSizeInWord and TargetSzieInWord*/
- OUT_BCS_BATCH(batch, (max_mb_size << 24) |
- (target_mb_size << 16) );
-
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-
- return len_in_dwords;
-}
-
-static int
-gen8_mfc_avc_pak_object_inter(VADriverContextP ctx, int x, int y, int end_mb, int qp,
- unsigned int *msg, unsigned int offset,
- struct intel_encoder_context *encoder_context,
- unsigned char target_mb_size,unsigned char max_mb_size, int slice_type,
- struct intel_batchbuffer *batch)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- int len_in_dwords = 12;
- unsigned int inter_msg = 0;
- if (batch == NULL)
- batch = encoder_context->base.batch;
- {
-#define MSG_MV_OFFSET 4
- unsigned int *mv_ptr;
- mv_ptr = msg + MSG_MV_OFFSET;
- /* MV of VME output is based on 16 sub-blocks. So it is necessary
- * to convert them to be compatible with the format of AVC_PAK
- * command.
- */
- if ((msg[0] & INTER_MODE_MASK) == INTER_8X16) {
- /* MV[0] and MV[2] are replicated */
- mv_ptr[4] = mv_ptr[0];
- mv_ptr[5] = mv_ptr[1];
- mv_ptr[2] = mv_ptr[8];
- mv_ptr[3] = mv_ptr[9];
- mv_ptr[6] = mv_ptr[8];
- mv_ptr[7] = mv_ptr[9];
- } else if ((msg[0] & INTER_MODE_MASK) == INTER_16X8) {
- /* MV[0] and MV[1] are replicated */
- mv_ptr[2] = mv_ptr[0];
- mv_ptr[3] = mv_ptr[1];
- mv_ptr[4] = mv_ptr[16];
- mv_ptr[5] = mv_ptr[17];
- mv_ptr[6] = mv_ptr[24];
- mv_ptr[7] = mv_ptr[25];
- } else if (((msg[0] & INTER_MODE_MASK) == INTER_8X8) &&
- !(msg[1] & SUBMB_SHAPE_MASK)) {
- /* Don't touch MV[0] or MV[1] */
- mv_ptr[2] = mv_ptr[8];
- mv_ptr[3] = mv_ptr[9];
- mv_ptr[4] = mv_ptr[16];
- mv_ptr[5] = mv_ptr[17];
- mv_ptr[6] = mv_ptr[24];
- mv_ptr[7] = mv_ptr[25];
- }
- }
-
- BEGIN_BCS_BATCH(batch, len_in_dwords);
-
- OUT_BCS_BATCH(batch, MFC_AVC_PAK_OBJECT | (len_in_dwords - 2));
-
- inter_msg = 32;
- /* MV quantity */
- if ((msg[0] & INTER_MODE_MASK) == INTER_8X8) {
- if (msg[1] & SUBMB_SHAPE_MASK)
- inter_msg = 128;
- }
- OUT_BCS_BATCH(batch, inter_msg); /* 32 MV*/
- OUT_BCS_BATCH(batch, offset);
- inter_msg = msg[0] & (0x1F00FFFF);
- inter_msg |= INTER_MV8;
- inter_msg |= ((1 << 19) | (1 << 18) | (1 << 17));
- if (((msg[0] & INTER_MODE_MASK) == INTER_8X8) &&
- (msg[1] & SUBMB_SHAPE_MASK)) {
- inter_msg |= INTER_MV32;
- }
-
- OUT_BCS_BATCH(batch, inter_msg);
-
- OUT_BCS_BATCH(batch, (0xFFFF<<16) | (y << 8) | x); /* Code Block Pattern for Y*/
- OUT_BCS_BATCH(batch, 0x000F000F); /* Code Block Pattern */
-#if 0
- if ( slice_type == SLICE_TYPE_B) {
- OUT_BCS_BATCH(batch, (0xF<<28) | (end_mb << 26) | qp); /* Last MB */
- } else {
- OUT_BCS_BATCH(batch, (end_mb << 26) | qp); /* Last MB */
- }
-#else
- OUT_BCS_BATCH(batch, (end_mb << 26) | qp); /* Last MB */
-#endif
-
- inter_msg = msg[1] >> 8;
- /*Stuff for Inter MB*/
- OUT_BCS_BATCH(batch, inter_msg);
- OUT_BCS_BATCH(batch, vme_context->ref_index_in_mb[0]);
- OUT_BCS_BATCH(batch, vme_context->ref_index_in_mb[1]);
-
- /*MaxSizeInWord and TargetSzieInWord*/
- OUT_BCS_BATCH(batch, (max_mb_size << 24) |
- (target_mb_size << 16) );
-
- OUT_BCS_BATCH(batch, 0x0);
-
- ADVANCE_BCS_BATCH(batch);
-
- return len_in_dwords;
-}
-
-static void
-gen8_mfc_avc_pipeline_slice_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int slice_index,
- struct intel_batchbuffer *slice_batch)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[slice_index]->buffer;
- unsigned int *msg = NULL, offset = 0;
- unsigned char *msg_ptr = NULL;
- int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
- int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
- int last_slice = (pSliceParameter->macroblock_address + pSliceParameter->num_macroblocks) == (width_in_mbs * height_in_mbs);
- int i,x,y;
- int qp = pPicParameter->pic_init_qp + pSliceParameter->slice_qp_delta;
- unsigned int rate_control_mode = encoder_context->rate_control_mode;
- unsigned int tail_data[] = { 0x0, 0x0 };
- int slice_type = intel_avc_enc_slice_type_fixup(pSliceParameter->slice_type);
- int is_intra = slice_type == SLICE_TYPE_I;
- int qp_slice;
- int qp_mb;
-
- qp_slice = qp;
- if (rate_control_mode != VA_RC_CQP) {
- qp = mfc_context->brc.qp_prime_y[encoder_context->layer.curr_frame_layer_id][slice_type];
- if (encode_state->slice_header_index[slice_index] == 0) {
- pSliceParameter->slice_qp_delta = qp - pPicParameter->pic_init_qp;
- qp_slice = qp;
- }
- }
-
- /* only support for 8-bit pixel bit-depth */
- assert(pSequenceParameter->bit_depth_luma_minus8 == 0);
- assert(pSequenceParameter->bit_depth_chroma_minus8 == 0);
- assert(pPicParameter->pic_init_qp >= 0 && pPicParameter->pic_init_qp < 52);
- assert(qp >= 0 && qp < 52);
-
- gen8_mfc_avc_slice_state(ctx,
- pPicParameter,
- pSliceParameter,
- encode_state, encoder_context,
- (rate_control_mode != VA_RC_CQP), qp_slice, slice_batch);
-
- if ( slice_index == 0)
- intel_mfc_avc_pipeline_header_programing(ctx, encode_state, encoder_context, slice_batch);
-
- intel_avc_slice_insert_packed_data(ctx, encode_state, encoder_context, slice_index, slice_batch);
-
- dri_bo_map(vme_context->vme_output.bo , 1);
- msg_ptr = (unsigned char *)vme_context->vme_output.bo->virtual;
-
- if (is_intra) {
- msg = (unsigned int *) (msg_ptr + pSliceParameter->macroblock_address * vme_context->vme_output.size_block);
- } else {
- msg = (unsigned int *) (msg_ptr + pSliceParameter->macroblock_address * vme_context->vme_output.size_block);
- }
-
- for (i = pSliceParameter->macroblock_address;
- i < pSliceParameter->macroblock_address + pSliceParameter->num_macroblocks; i++) {
- int last_mb = (i == (pSliceParameter->macroblock_address + pSliceParameter->num_macroblocks - 1) );
- x = i % width_in_mbs;
- y = i / width_in_mbs;
- msg = (unsigned int *) (msg_ptr + i * vme_context->vme_output.size_block);
- if (vme_context->roi_enabled) {
- qp_mb = *(vme_context->qp_per_mb + i);
- } else
- qp_mb = qp;
-
- if (is_intra) {
- assert(msg);
- gen8_mfc_avc_pak_object_intra(ctx, x, y, last_mb, qp_mb, msg, encoder_context, 0, 0, slice_batch);
- } else {
- int inter_rdo, intra_rdo;
- inter_rdo = msg[AVC_INTER_RDO_OFFSET] & AVC_RDO_MASK;
- intra_rdo = msg[AVC_INTRA_RDO_OFFSET] & AVC_RDO_MASK;
- offset = i * vme_context->vme_output.size_block + AVC_INTER_MV_OFFSET;
- if (intra_rdo < inter_rdo) {
- gen8_mfc_avc_pak_object_intra(ctx, x, y, last_mb, qp_mb, msg, encoder_context, 0, 0, slice_batch);
- } else {
- msg += AVC_INTER_MSG_OFFSET;
- gen8_mfc_avc_pak_object_inter(ctx, x, y, last_mb, qp_mb, msg, offset, encoder_context, 0, 0, pSliceParameter->slice_type, slice_batch);
- }
- }
- }
-
- dri_bo_unmap(vme_context->vme_output.bo);
-
- if ( last_slice ) {
- mfc_context->insert_object(ctx, encoder_context,
- tail_data, 2, 8,
- 2, 1, 1, 0, slice_batch);
- } else {
- mfc_context->insert_object(ctx, encoder_context,
- tail_data, 1, 8,
- 1, 1, 1, 0, slice_batch);
- }
-}
-
-static dri_bo *
-gen8_mfc_avc_software_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch;
- dri_bo *batch_bo;
- int i;
-
- batch = mfc_context->aux_batchbuffer;
- batch_bo = batch->buffer;
- for (i = 0; i < encode_state->num_slice_params_ext; i++) {
- gen8_mfc_avc_pipeline_slice_programing(ctx, encode_state, encoder_context, i, batch);
- }
-
- intel_batchbuffer_align(batch, 8);
-
- BEGIN_BCS_BATCH(batch, 2);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, MI_BATCH_BUFFER_END);
- ADVANCE_BCS_BATCH(batch);
-
- dri_bo_reference(batch_bo);
- intel_batchbuffer_free(batch);
- mfc_context->aux_batchbuffer = NULL;
-
- return batch_bo;
-}
-
-
-static void
-gen8_mfc_batchbuffer_surfaces_input(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- assert(vme_context->vme_output.bo);
- mfc_context->buffer_suface_setup(ctx,
- &mfc_context->gpe_context,
- &vme_context->vme_output,
- BINDING_TABLE_OFFSET(BIND_IDX_VME_OUTPUT),
- SURFACE_STATE_OFFSET(BIND_IDX_VME_OUTPUT));
-}
-
-static void
-gen8_mfc_batchbuffer_surfaces_output(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- assert(mfc_context->aux_batchbuffer_surface.bo);
- mfc_context->buffer_suface_setup(ctx,
- &mfc_context->gpe_context,
- &mfc_context->aux_batchbuffer_surface,
- BINDING_TABLE_OFFSET(BIND_IDX_MFC_BATCHBUFFER),
- SURFACE_STATE_OFFSET(BIND_IDX_MFC_BATCHBUFFER));
-}
-
-static void
-gen8_mfc_batchbuffer_surfaces_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- gen8_mfc_batchbuffer_surfaces_input(ctx, encode_state, encoder_context);
- gen8_mfc_batchbuffer_surfaces_output(ctx, encode_state, encoder_context);
-}
-
-static void
-gen8_mfc_batchbuffer_idrt_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct gen8_interface_descriptor_data *desc;
- int i;
- dri_bo *bo;
- unsigned char *desc_ptr;
-
- bo = mfc_context->gpe_context.idrt.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- desc_ptr = (unsigned char *)bo->virtual + mfc_context->gpe_context.idrt.offset;
-
- desc = (struct gen8_interface_descriptor_data *)desc_ptr;
-
- for (i = 0; i < mfc_context->gpe_context.num_kernels; i++) {
- struct i965_kernel *kernel;
- kernel = &mfc_context->gpe_context.kernels[i];
- assert(sizeof(*desc) == 32);
- /*Setup the descritor table*/
- memset(desc, 0, sizeof(*desc));
- desc->desc0.kernel_start_pointer = kernel->kernel_offset >> 6;
- desc->desc3.sampler_count = 0;
- desc->desc3.sampler_state_pointer = 0;
- desc->desc4.binding_table_entry_count = 1;
- desc->desc4.binding_table_pointer = (BINDING_TABLE_OFFSET(0) >> 5);
- desc->desc5.constant_urb_entry_read_offset = 0;
- desc->desc5.constant_urb_entry_read_length = 4;
-
-
- desc++;
- }
-
- dri_bo_unmap(bo);
-
- return;
-}
-
-static void
-gen8_mfc_batchbuffer_constant_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- (void)mfc_context;
-}
-
-#define AVC_PAK_LEN_IN_BYTE 48
-#define AVC_PAK_LEN_IN_OWORD 3
-
-static void
-gen8_mfc_batchbuffer_emit_object_command(struct intel_batchbuffer *batch,
- uint32_t intra_flag,
- int head_offset,
- int number_mb_cmds,
- int slice_end_x,
- int slice_end_y,
- int mb_x,
- int mb_y,
- int width_in_mbs,
- int qp,
- uint32_t fwd_ref,
- uint32_t bwd_ref)
-{
- uint32_t temp_value;
- BEGIN_BATCH(batch, 14);
-
- OUT_BATCH(batch, CMD_MEDIA_OBJECT | (14 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
-
- /*inline data */
- OUT_BATCH(batch, head_offset / 16);
- OUT_BATCH(batch, (intra_flag) | (qp << 16));
- temp_value = (mb_x | (mb_y << 8) | (width_in_mbs << 16));
- OUT_BATCH(batch, temp_value);
-
- OUT_BATCH(batch, number_mb_cmds);
-
- OUT_BATCH(batch,
- ((slice_end_y << 8) | (slice_end_x)));
- OUT_BATCH(batch, fwd_ref);
- OUT_BATCH(batch, bwd_ref);
-
- OUT_BATCH(batch, MI_NOOP);
-
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen8_mfc_avc_batchbuffer_slice_command(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- VAEncSliceParameterBufferH264 *slice_param,
- int head_offset,
- int qp,
- int last_slice)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
- int total_mbs = slice_param->num_macroblocks;
- int slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
- int number_mb_cmds = 128;
- int starting_offset = 0;
- int mb_x, mb_y;
- int last_mb, slice_end_x, slice_end_y;
- int remaining_mb = total_mbs;
- uint32_t fwd_ref , bwd_ref, mb_flag;
- char tmp_qp;
- int number_roi_mbs, max_mb_cmds, i;
-
- last_mb = slice_param->macroblock_address + total_mbs - 1;
- slice_end_x = last_mb % width_in_mbs;
- slice_end_y = last_mb / width_in_mbs;
-
- if (slice_type == SLICE_TYPE_I) {
- fwd_ref = 0;
- bwd_ref = 0;
- mb_flag = 1;
- } else {
- fwd_ref = vme_context->ref_index_in_mb[0];
- bwd_ref = vme_context->ref_index_in_mb[1];
- mb_flag = 0;
- }
-
- if (width_in_mbs >= 100) {
- number_mb_cmds = width_in_mbs / 5;
- } else if (width_in_mbs >= 80) {
- number_mb_cmds = width_in_mbs / 4;
- } else if (width_in_mbs >= 60) {
- number_mb_cmds = width_in_mbs / 3;
- } else if (width_in_mbs >= 40) {
- number_mb_cmds = width_in_mbs / 2;
- } else {
- number_mb_cmds = width_in_mbs;
- }
-
- max_mb_cmds = number_mb_cmds;
-
- do {
- mb_x = (slice_param->macroblock_address + starting_offset) % width_in_mbs;
- mb_y = (slice_param->macroblock_address + starting_offset) / width_in_mbs;
-
- number_mb_cmds = max_mb_cmds;
- if (vme_context->roi_enabled) {
-
- number_roi_mbs = 1;
- tmp_qp = *(vme_context->qp_per_mb + starting_offset);
- for (i = 1; i < max_mb_cmds; i++) {
- if (tmp_qp != *(vme_context->qp_per_mb + starting_offset + i))
- break;
-
- number_roi_mbs++;
- }
-
- number_mb_cmds = number_roi_mbs;
- qp = tmp_qp;
- }
-
- if (number_mb_cmds >= remaining_mb) {
- number_mb_cmds = remaining_mb;
- }
-
- gen8_mfc_batchbuffer_emit_object_command(batch,
- mb_flag,
- head_offset,
- number_mb_cmds,
- slice_end_x,
- slice_end_y,
- mb_x,
- mb_y,
- width_in_mbs,
- qp,
- fwd_ref,
- bwd_ref);
-
- head_offset += (number_mb_cmds * AVC_PAK_LEN_IN_BYTE);
- remaining_mb -= number_mb_cmds;
- starting_offset += number_mb_cmds;
- } while (remaining_mb > 0);
-}
-
-static void
-gen8_mfc_avc_batchbuffer_slice(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int slice_index)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *slice_batch = mfc_context->aux_batchbuffer;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[slice_index]->buffer;
- int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
- int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
- int last_slice = (pSliceParameter->macroblock_address + pSliceParameter->num_macroblocks) == (width_in_mbs * height_in_mbs);
- int qp = pPicParameter->pic_init_qp + pSliceParameter->slice_qp_delta;
- unsigned int rate_control_mode = encoder_context->rate_control_mode;
- unsigned int tail_data[] = { 0x0, 0x0 };
- long head_offset;
- int slice_type = intel_avc_enc_slice_type_fixup(pSliceParameter->slice_type);
- int qp_slice;
-
- qp_slice = qp;
- if (rate_control_mode != VA_RC_CQP) {
- qp = mfc_context->brc.qp_prime_y[encoder_context->layer.curr_frame_layer_id][slice_type];
- if (encode_state->slice_header_index[slice_index] == 0) {
- pSliceParameter->slice_qp_delta = qp - pPicParameter->pic_init_qp;
- qp_slice = qp;
- }
- }
-
- /* only support for 8-bit pixel bit-depth */
- assert(pSequenceParameter->bit_depth_luma_minus8 == 0);
- assert(pSequenceParameter->bit_depth_chroma_minus8 == 0);
- assert(pPicParameter->pic_init_qp >= 0 && pPicParameter->pic_init_qp < 52);
- assert(qp >= 0 && qp < 52);
-
- gen8_mfc_avc_slice_state(ctx,
- pPicParameter,
- pSliceParameter,
- encode_state,
- encoder_context,
- (rate_control_mode != VA_RC_CQP),
- qp_slice,
- slice_batch);
-
- if (slice_index == 0)
- intel_mfc_avc_pipeline_header_programing(ctx, encode_state, encoder_context, slice_batch);
-
- intel_avc_slice_insert_packed_data(ctx, encode_state, encoder_context, slice_index, slice_batch);
-
- intel_batchbuffer_align(slice_batch, 64); /* aligned by an Cache-line */
- head_offset = intel_batchbuffer_used_size(slice_batch);
-
- slice_batch->ptr += pSliceParameter->num_macroblocks * AVC_PAK_LEN_IN_BYTE;
-
- gen8_mfc_avc_batchbuffer_slice_command(ctx,
- encoder_context,
- pSliceParameter,
- head_offset,
- qp,
- last_slice);
-
-
- /* Aligned for tail */
- intel_batchbuffer_align(slice_batch, 64); /* aligned by Cache-line */
- if (last_slice) {
- mfc_context->insert_object(ctx,
- encoder_context,
- tail_data,
- 2,
- 8,
- 2,
- 1,
- 1,
- 0,
- slice_batch);
- } else {
- mfc_context->insert_object(ctx,
- encoder_context,
- tail_data,
- 1,
- 8,
- 1,
- 1,
- 1,
- 0,
- slice_batch);
- }
-
- return;
-}
-
-static void
-gen8_mfc_avc_batchbuffer_pipeline(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- int i;
-
- intel_batchbuffer_start_atomic(batch, 0x4000);
-
- if (IS_GEN9(i965->intel.device_info))
- gen9_gpe_pipeline_setup(ctx, &mfc_context->gpe_context, batch);
- else
- gen8_gpe_pipeline_setup(ctx, &mfc_context->gpe_context, batch);
-
- for ( i = 0; i < encode_state->num_slice_params_ext; i++) {
- gen8_mfc_avc_batchbuffer_slice(ctx, encode_state, encoder_context, i);
- }
- {
- struct intel_batchbuffer *slice_batch = mfc_context->aux_batchbuffer;
-
- intel_batchbuffer_align(slice_batch, 8);
- BEGIN_BCS_BATCH(slice_batch, 2);
- OUT_BCS_BATCH(slice_batch, 0);
- OUT_BCS_BATCH(slice_batch, MI_BATCH_BUFFER_END);
- ADVANCE_BCS_BATCH(slice_batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, CMD_MEDIA_STATE_FLUSH);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- intel_batchbuffer_free(slice_batch);
- mfc_context->aux_batchbuffer = NULL;
- }
-
- if (IS_GEN9(i965->intel.device_info))
- gen9_gpe_pipeline_end(ctx, &mfc_context->gpe_context, batch);
-
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-
-}
-
-static void
-gen8_mfc_build_avc_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- gen8_mfc_batchbuffer_surfaces_setup(ctx, encode_state, encoder_context);
- gen8_mfc_batchbuffer_idrt_setup(ctx, encode_state, encoder_context);
- gen8_mfc_batchbuffer_constant_setup(ctx, encode_state, encoder_context);
- gen8_mfc_avc_batchbuffer_pipeline(ctx, encode_state, encoder_context);
-}
-
-static dri_bo *
-gen8_mfc_avc_hardware_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- dri_bo_reference(mfc_context->aux_batchbuffer_surface.bo);
- gen8_mfc_build_avc_batchbuffer(ctx, encode_state, encoder_context);
-
- return mfc_context->aux_batchbuffer_surface.bo;
-}
-
-static void
-gen8_mfc_avc_pipeline_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- dri_bo *slice_batch_bo;
-
- if ( intel_mfc_interlace_check(ctx, encode_state, encoder_context) ) {
- fprintf(stderr, "Current VA driver don't support interlace mode!\n");
- assert(0);
- return;
- }
-
- if (encoder_context->soft_batch_force)
- slice_batch_bo = gen8_mfc_avc_software_batchbuffer(ctx, encode_state, encoder_context);
- else
- slice_batch_bo = gen8_mfc_avc_hardware_batchbuffer(ctx, encode_state, encoder_context);
-
-
- // begin programing
- intel_batchbuffer_start_atomic_bcs(batch, 0x4000);
- intel_batchbuffer_emit_mi_flush(batch);
-
- // picture level programing
- gen8_mfc_avc_pipeline_picture_programing(ctx, encode_state, encoder_context);
-
- BEGIN_BCS_BATCH(batch, 3);
- OUT_BCS_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8) | (1 << 0));
- OUT_BCS_RELOC64(batch,
- slice_batch_bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- ADVANCE_BCS_BATCH(batch);
-
- // end programing
- intel_batchbuffer_end_atomic(batch);
-
- dri_bo_unreference(slice_batch_bo);
-}
-
-
-static VAStatus
-gen8_mfc_avc_encode_picture(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- unsigned int rate_control_mode = encoder_context->rate_control_mode;
- int current_frame_bits_size;
- int sts;
-
- for (;;) {
- gen8_mfc_init(ctx, encode_state, encoder_context);
- intel_mfc_avc_prepare(ctx, encode_state, encoder_context);
- /*Programing bcs pipeline*/
- gen8_mfc_avc_pipeline_programing(ctx, encode_state, encoder_context); //filling the pipeline
- gen8_mfc_run(ctx, encode_state, encoder_context);
- if (rate_control_mode == VA_RC_CBR || rate_control_mode == VA_RC_VBR) {
- gen8_mfc_stop(ctx, encode_state, encoder_context, &current_frame_bits_size);
- sts = intel_mfc_brc_postpack(encode_state, encoder_context, current_frame_bits_size);
- if (sts == BRC_NO_HRD_VIOLATION) {
- intel_mfc_hrd_context_update(encode_state, mfc_context);
- break;
- }
- else if (sts == BRC_OVERFLOW_WITH_MIN_QP || sts == BRC_UNDERFLOW_WITH_MAX_QP) {
- if (!mfc_context->hrd.violation_noted) {
- fprintf(stderr, "Unrepairable %s!\n", (sts == BRC_OVERFLOW_WITH_MIN_QP)? "overflow": "underflow");
- mfc_context->hrd.violation_noted = 1;
- }
- return VA_STATUS_SUCCESS;
- }
- } else {
- break;
- }
- }
-
- return VA_STATUS_SUCCESS;
-}
-
-/*
- * MPEG-2
- */
-
-static const int
-va_to_gen8_mpeg2_picture_type[3] = {
- 1, /* I */
- 2, /* P */
- 3 /* B */
-};
-
-static void
-gen8_mfc_mpeg2_pic_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct encode_state *encode_state)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncPictureParameterBufferMPEG2 *pic_param;
- int width_in_mbs = (mfc_context->surface_state.width + 15) / 16;
- int height_in_mbs = (mfc_context->surface_state.height + 15) / 16;
- VAEncSliceParameterBufferMPEG2 *slice_param = NULL;
-
- assert(encode_state->pic_param_ext && encode_state->pic_param_ext->buffer);
- pic_param = (VAEncPictureParameterBufferMPEG2 *)encode_state->pic_param_ext->buffer;
- slice_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[0]->buffer;
-
- BEGIN_BCS_BATCH(batch, 13);
- OUT_BCS_BATCH(batch, MFX_MPEG2_PIC_STATE | (13 - 2));
- OUT_BCS_BATCH(batch,
- (pic_param->f_code[1][1] & 0xf) << 28 | /* f_code[1][1] */
- (pic_param->f_code[1][0] & 0xf) << 24 | /* f_code[1][0] */
- (pic_param->f_code[0][1] & 0xf) << 20 | /* f_code[0][1] */
- (pic_param->f_code[0][0] & 0xf) << 16 | /* f_code[0][0] */
- pic_param->picture_coding_extension.bits.intra_dc_precision << 14 |
- pic_param->picture_coding_extension.bits.picture_structure << 12 |
- pic_param->picture_coding_extension.bits.top_field_first << 11 |
- pic_param->picture_coding_extension.bits.frame_pred_frame_dct << 10 |
- pic_param->picture_coding_extension.bits.concealment_motion_vectors << 9 |
- pic_param->picture_coding_extension.bits.q_scale_type << 8 |
- pic_param->picture_coding_extension.bits.intra_vlc_format << 7 |
- pic_param->picture_coding_extension.bits.alternate_scan << 6);
- OUT_BCS_BATCH(batch,
- 0 << 14 | /* LoadSlicePointerFlag, 0 means only loading bitstream pointer once */
- va_to_gen8_mpeg2_picture_type[pic_param->picture_type] << 9 |
- 0);
- OUT_BCS_BATCH(batch,
- 1 << 31 | /* slice concealment */
- (height_in_mbs - 1) << 16 |
- (width_in_mbs - 1));
-
- if (slice_param && slice_param->quantiser_scale_code >= 14)
- OUT_BCS_BATCH(batch, (3 << 1) | (1 << 4) | (5 << 8) | (1 << 12));
- else
- OUT_BCS_BATCH(batch, 0);
-
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- 0xFFF << 16 | /* InterMBMaxSize */
- 0xFFF << 0 | /* IntraMBMaxSize */
- 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfc_mpeg2_qm_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- unsigned char intra_qm[64] = {
- 8, 16, 19, 22, 26, 27, 29, 34,
- 16, 16, 22, 24, 27, 29, 34, 37,
- 19, 22, 26, 27, 29, 34, 34, 38,
- 22, 22, 26, 27, 29, 34, 37, 40,
- 22, 26, 27, 29, 32, 35, 40, 48,
- 26, 27, 29, 32, 35, 40, 48, 58,
- 26, 27, 29, 34, 38, 46, 56, 69,
- 27, 29, 35, 38, 46, 56, 69, 83
- };
-
- unsigned char non_intra_qm[64] = {
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16
- };
-
- gen8_mfc_qm_state(ctx, MFX_QM_MPEG_INTRA_QUANTIZER_MATRIX, (unsigned int *)intra_qm, 16, encoder_context);
- gen8_mfc_qm_state(ctx, MFX_QM_MPEG_NON_INTRA_QUANTIZER_MATRIX, (unsigned int *)non_intra_qm, 16,encoder_context);
-}
-
-static void
-gen8_mfc_mpeg2_fqm_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- unsigned short intra_fqm[64] = {
- 65536/0x8, 65536/0x10, 65536/0x13, 65536/0x16, 65536/0x16, 65536/0x1a, 65536/0x1a, 65536/0x1b,
- 65536/0x10, 65536/0x10, 65536/0x16, 65536/0x16, 65536/0x1a, 65536/0x1b, 65536/0x1b, 65536/0x1d,
- 65536/0x13, 65536/0x16, 65536/0x1a, 65536/0x1a, 65536/0x1b, 65536/0x1d, 65536/0x1d, 65536/0x23,
- 65536/0x16, 65536/0x18, 65536/0x1b, 65536/0x1b, 65536/0x13, 65536/0x20, 65536/0x22, 65536/0x26,
- 65536/0x1a, 65536/0x1b, 65536/0x13, 65536/0x13, 65536/0x20, 65536/0x23, 65536/0x26, 65536/0x2e,
- 65536/0x1b, 65536/0x1d, 65536/0x22, 65536/0x22, 65536/0x23, 65536/0x28, 65536/0x2e, 65536/0x38,
- 65536/0x1d, 65536/0x22, 65536/0x22, 65536/0x25, 65536/0x28, 65536/0x30, 65536/0x38, 65536/0x45,
- 65536/0x22, 65536/0x25, 65536/0x26, 65536/0x28, 65536/0x30, 65536/0x3a, 65536/0x45, 65536/0x53,
- };
-
- unsigned short non_intra_fqm[64] = {
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
- };
-
- gen8_mfc_fqm_state(ctx, MFX_QM_MPEG_INTRA_QUANTIZER_MATRIX, (unsigned int *)intra_fqm, 32, encoder_context);
- gen8_mfc_fqm_state(ctx, MFX_QM_MPEG_NON_INTRA_QUANTIZER_MATRIX, (unsigned int *)non_intra_fqm, 32, encoder_context);
-}
-
-static void
-gen8_mfc_mpeg2_slicegroup_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- int x, int y,
- int next_x, int next_y,
- int is_fisrt_slice_group,
- int is_last_slice_group,
- int intra_slice,
- int qp,
- struct intel_batchbuffer *batch)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 8);
-
- OUT_BCS_BATCH(batch, MFC_MPEG2_SLICEGROUP_STATE | (8 - 2));
- OUT_BCS_BATCH(batch,
- 0 << 31 | /* MbRateCtrlFlag */
- !!is_last_slice_group << 19 | /* IsLastSliceGrp */
- 1 << 17 | /* Insert Header before the first slice group data */
- 1 << 16 | /* SliceData PresentFlag: always 1 */
- 1 << 15 | /* TailPresentFlag: always 1 */
- 0 << 14 | /* FirstSliceHdrDisabled: slice header for each slice */
- !!intra_slice << 13 | /* IntraSlice */
- !!intra_slice << 12 | /* IntraSliceFlag */
- 0);
- OUT_BCS_BATCH(batch,
- next_y << 24 |
- next_x << 16 |
- y << 8 |
- x << 0 |
- 0);
- OUT_BCS_BATCH(batch, qp); /* FIXME: SliceGroupQp */
- /* bitstream pointer is only loaded once for the first slice of a frame when
- * LoadSlicePointerFlag is 0
- */
- OUT_BCS_BATCH(batch, mfc_context->mfc_indirect_pak_bse_object.offset);
- OUT_BCS_BATCH(batch, 0); /* FIXME: */
- OUT_BCS_BATCH(batch, 0); /* FIXME: CorrectPoints */
- OUT_BCS_BATCH(batch, 0); /* FIXME: CVxxx */
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static int
-gen8_mfc_mpeg2_pak_object_intra(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- int x, int y,
- int first_mb_in_slice,
- int last_mb_in_slice,
- int first_mb_in_slice_group,
- int last_mb_in_slice_group,
- int mb_type,
- int qp_scale_code,
- int coded_block_pattern,
- unsigned char target_size_in_word,
- unsigned char max_size_in_word,
- struct intel_batchbuffer *batch)
-{
- int len_in_dwords = 9;
-
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, len_in_dwords);
-
- OUT_BCS_BATCH(batch, MFC_MPEG2_PAK_OBJECT | (len_in_dwords - 2));
- OUT_BCS_BATCH(batch,
- 0 << 24 | /* PackedMvNum */
- 0 << 20 | /* MvFormat */
- 7 << 17 | /* CbpDcY/CbpDcU/CbpDcV */
- 0 << 15 | /* TransformFlag: frame DCT */
- 0 << 14 | /* FieldMbFlag */
- 1 << 13 | /* IntraMbFlag */
- mb_type << 8 | /* MbType: Intra */
- 0 << 2 | /* SkipMbFlag */
- 0 << 0 | /* InterMbMode */
- 0);
- OUT_BCS_BATCH(batch, y << 16 | x);
- OUT_BCS_BATCH(batch,
- max_size_in_word << 24 |
- target_size_in_word << 16 |
- coded_block_pattern << 6 | /* CBP */
- 0);
- OUT_BCS_BATCH(batch,
- last_mb_in_slice << 31 |
- first_mb_in_slice << 30 |
- 0 << 27 | /* EnableCoeffClamp */
- last_mb_in_slice_group << 26 |
- 0 << 25 | /* MbSkipConvDisable */
- first_mb_in_slice_group << 24 |
- 0 << 16 | /* MvFieldSelect */
- qp_scale_code << 0 |
- 0);
- OUT_BCS_BATCH(batch, 0); /* MV[0][0] */
- OUT_BCS_BATCH(batch, 0); /* MV[1][0] */
- OUT_BCS_BATCH(batch, 0); /* MV[0][1] */
- OUT_BCS_BATCH(batch, 0); /* MV[1][1] */
-
- ADVANCE_BCS_BATCH(batch);
-
- return len_in_dwords;
-}
-
-/* Byte offset */
-#define MPEG2_INTER_MV_OFFSET 48
-
-static struct _mv_ranges
-{
- int low; /* in the unit of 1/2 pixel */
- int high; /* in the unit of 1/2 pixel */
-} mv_ranges[] = {
- {0, 0},
- {-16, 15},
- {-32, 31},
- {-64, 63},
- {-128, 127},
- {-256, 255},
- {-512, 511},
- {-1024, 1023},
- {-2048, 2047},
- {-4096, 4095}
-};
-
-static int
-mpeg2_motion_vector(int mv, int pos, int display_max, int f_code)
-{
- if (mv + pos * 16 * 2 < 0 ||
- mv + (pos + 1) * 16 * 2 > display_max * 2)
- mv = 0;
-
- if (f_code > 0 && f_code < 10) {
- if (mv < mv_ranges[f_code].low)
- mv = mv_ranges[f_code].low;
-
- if (mv > mv_ranges[f_code].high)
- mv = mv_ranges[f_code].high;
- }
-
- return mv;
-}
-
-static int
-gen8_mfc_mpeg2_pak_object_inter(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- unsigned int *msg,
- int width_in_mbs, int height_in_mbs,
- int x, int y,
- int first_mb_in_slice,
- int last_mb_in_slice,
- int first_mb_in_slice_group,
- int last_mb_in_slice_group,
- int qp_scale_code,
- unsigned char target_size_in_word,
- unsigned char max_size_in_word,
- struct intel_batchbuffer *batch)
-{
- VAEncPictureParameterBufferMPEG2 *pic_param = (VAEncPictureParameterBufferMPEG2 *)encode_state->pic_param_ext->buffer;
- int len_in_dwords = 9;
- short *mvptr, mvx0, mvy0, mvx1, mvy1;
-
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- mvptr = (short *)((unsigned char *)msg + MPEG2_INTER_MV_OFFSET);;
- mvx0 = mpeg2_motion_vector(mvptr[0] / 2, x, width_in_mbs * 16, pic_param->f_code[0][0]);
- mvy0 = mpeg2_motion_vector(mvptr[1] / 2, y, height_in_mbs * 16, pic_param->f_code[0][0]);
- mvx1 = mpeg2_motion_vector(mvptr[2] / 2, x, width_in_mbs * 16, pic_param->f_code[1][0]);
- mvy1 = mpeg2_motion_vector(mvptr[3] / 2, y, height_in_mbs * 16, pic_param->f_code[1][0]);
-
- BEGIN_BCS_BATCH(batch, len_in_dwords);
-
- OUT_BCS_BATCH(batch, MFC_MPEG2_PAK_OBJECT | (len_in_dwords - 2));
- OUT_BCS_BATCH(batch,
- 2 << 24 | /* PackedMvNum */
- 7 << 20 | /* MvFormat */
- 7 << 17 | /* CbpDcY/CbpDcU/CbpDcV */
- 0 << 15 | /* TransformFlag: frame DCT */
- 0 << 14 | /* FieldMbFlag */
- 0 << 13 | /* IntraMbFlag */
- 1 << 8 | /* MbType: Frame-based */
- 0 << 2 | /* SkipMbFlag */
- 0 << 0 | /* InterMbMode */
- 0);
- OUT_BCS_BATCH(batch, y << 16 | x);
- OUT_BCS_BATCH(batch,
- max_size_in_word << 24 |
- target_size_in_word << 16 |
- 0x3f << 6 | /* CBP */
- 0);
- OUT_BCS_BATCH(batch,
- last_mb_in_slice << 31 |
- first_mb_in_slice << 30 |
- 0 << 27 | /* EnableCoeffClamp */
- last_mb_in_slice_group << 26 |
- 0 << 25 | /* MbSkipConvDisable */
- first_mb_in_slice_group << 24 |
- 0 << 16 | /* MvFieldSelect */
- qp_scale_code << 0 |
- 0);
-
- OUT_BCS_BATCH(batch, (mvx0 & 0xFFFF) | mvy0 << 16); /* MV[0][0] */
- OUT_BCS_BATCH(batch, (mvx1 & 0xFFFF) | mvy1 << 16); /* MV[1][0] */
- OUT_BCS_BATCH(batch, 0); /* MV[0][1] */
- OUT_BCS_BATCH(batch, 0); /* MV[1][1] */
-
- ADVANCE_BCS_BATCH(batch);
-
- return len_in_dwords;
-}
-
-static void
-intel_mfc_mpeg2_pipeline_header_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- struct intel_batchbuffer *slice_batch)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- int idx = va_enc_packed_type_to_idx(VAEncPackedHeaderMPEG2_SPS);
-
- if (encode_state->packed_header_data[idx]) {
- VAEncPackedHeaderParameterBuffer *param = NULL;
- unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer;
- unsigned int length_in_bits;
-
- assert(encode_state->packed_header_param[idx]);
- param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer;
- length_in_bits = param->bit_length;
-
- mfc_context->insert_object(ctx,
- encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- 5, /* FIXME: check it */
- 0,
- 0,
- 0, /* Needn't insert emulation bytes for MPEG-2 */
- slice_batch);
- }
-
- idx = va_enc_packed_type_to_idx(VAEncPackedHeaderMPEG2_PPS);
-
- if (encode_state->packed_header_data[idx]) {
- VAEncPackedHeaderParameterBuffer *param = NULL;
- unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer;
- unsigned int length_in_bits;
-
- assert(encode_state->packed_header_param[idx]);
- param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer;
- length_in_bits = param->bit_length;
-
- mfc_context->insert_object(ctx,
- encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- 5, /* FIXME: check it */
- 0,
- 0,
- 0, /* Needn't insert emulation bytes for MPEG-2 */
- slice_batch);
- }
-}
-
-static void
-gen8_mfc_mpeg2_pipeline_slice_group(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int slice_index,
- VAEncSliceParameterBufferMPEG2 *next_slice_group_param,
- struct intel_batchbuffer *slice_batch)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncSequenceParameterBufferMPEG2 *seq_param = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
- VAEncSliceParameterBufferMPEG2 *slice_param = NULL;
- unsigned char tail_delimiter[] = {MPEG2_DELIMITER0, MPEG2_DELIMITER1, MPEG2_DELIMITER2, MPEG2_DELIMITER3, MPEG2_DELIMITER4, 0, 0, 0};
- unsigned char section_delimiter[] = {0x0, 0x0, 0x0, 0x0};
- int width_in_mbs = ALIGN(seq_param->picture_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->picture_height, 16) / 16;
- int i, j;
- int h_start_pos, v_start_pos, h_next_start_pos, v_next_start_pos;
- unsigned int *msg = NULL;
- unsigned char *msg_ptr = NULL;
-
- slice_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[slice_index]->buffer;
- h_start_pos = slice_param->macroblock_address % width_in_mbs;
- v_start_pos = slice_param->macroblock_address / width_in_mbs;
- assert(h_start_pos + slice_param->num_macroblocks <= width_in_mbs);
-
- dri_bo_map(vme_context->vme_output.bo , 0);
- msg_ptr = (unsigned char *)vme_context->vme_output.bo->virtual;
-
- if (next_slice_group_param) {
- h_next_start_pos = next_slice_group_param->macroblock_address % width_in_mbs;
- v_next_start_pos = next_slice_group_param->macroblock_address / width_in_mbs;
- } else {
- h_next_start_pos = 0;
- v_next_start_pos = height_in_mbs;
- }
-
- gen8_mfc_mpeg2_slicegroup_state(ctx,
- encoder_context,
- h_start_pos,
- v_start_pos,
- h_next_start_pos,
- v_next_start_pos,
- slice_index == 0,
- next_slice_group_param == NULL,
- slice_param->is_intra_slice,
- slice_param->quantiser_scale_code,
- slice_batch);
-
- if (slice_index == 0)
- intel_mfc_mpeg2_pipeline_header_programing(ctx, encode_state, encoder_context, slice_batch);
-
- /* Insert '00' to make sure the header is valid */
- mfc_context->insert_object(ctx,
- encoder_context,
- (unsigned int*)section_delimiter,
- 1,
- 8, /* 8bits in the last DWORD */
- 1, /* 1 byte */
- 1,
- 0,
- 0,
- slice_batch);
-
- for (i = 0; i < encode_state->slice_params_ext[slice_index]->num_elements; i++) {
- /* PAK for each macroblocks */
- for (j = 0; j < slice_param->num_macroblocks; j++) {
- int h_pos = (slice_param->macroblock_address + j) % width_in_mbs;
- int v_pos = (slice_param->macroblock_address + j) / width_in_mbs;
- int first_mb_in_slice = (j == 0);
- int last_mb_in_slice = (j == slice_param->num_macroblocks - 1);
- int first_mb_in_slice_group = (i == 0 && j == 0);
- int last_mb_in_slice_group = (i == encode_state->slice_params_ext[slice_index]->num_elements - 1 &&
- j == slice_param->num_macroblocks - 1);
-
- msg = (unsigned int *)(msg_ptr + (slice_param->macroblock_address + j) * vme_context->vme_output.size_block);
-
- if (slice_param->is_intra_slice) {
- gen8_mfc_mpeg2_pak_object_intra(ctx,
- encoder_context,
- h_pos, v_pos,
- first_mb_in_slice,
- last_mb_in_slice,
- first_mb_in_slice_group,
- last_mb_in_slice_group,
- 0x1a,
- slice_param->quantiser_scale_code,
- 0x3f,
- 0,
- 0xff,
- slice_batch);
- } else {
- int inter_rdo, intra_rdo;
- inter_rdo = msg[AVC_INTER_RDO_OFFSET] & AVC_RDO_MASK;
- intra_rdo = msg[AVC_INTRA_RDO_OFFSET] & AVC_RDO_MASK;
-
- if (intra_rdo < inter_rdo)
- gen8_mfc_mpeg2_pak_object_intra(ctx,
- encoder_context,
- h_pos, v_pos,
- first_mb_in_slice,
- last_mb_in_slice,
- first_mb_in_slice_group,
- last_mb_in_slice_group,
- 0x1a,
- slice_param->quantiser_scale_code,
- 0x3f,
- 0,
- 0xff,
- slice_batch);
- else
- gen8_mfc_mpeg2_pak_object_inter(ctx,
- encode_state,
- encoder_context,
- msg,
- width_in_mbs, height_in_mbs,
- h_pos, v_pos,
- first_mb_in_slice,
- last_mb_in_slice,
- first_mb_in_slice_group,
- last_mb_in_slice_group,
- slice_param->quantiser_scale_code,
- 0,
- 0xff,
- slice_batch);
- }
- }
-
- slice_param++;
- }
-
- dri_bo_unmap(vme_context->vme_output.bo);
-
- /* tail data */
- if (next_slice_group_param == NULL) { /* end of a picture */
- mfc_context->insert_object(ctx,
- encoder_context,
- (unsigned int *)tail_delimiter,
- 2,
- 8, /* 8bits in the last DWORD */
- 5, /* 5 bytes */
- 1,
- 1,
- 0,
- slice_batch);
- } else { /* end of a lsice group */
- mfc_context->insert_object(ctx,
- encoder_context,
- (unsigned int *)section_delimiter,
- 1,
- 8, /* 8bits in the last DWORD */
- 1, /* 1 byte */
- 1,
- 1,
- 0,
- slice_batch);
- }
-}
-
-/*
- * A batch buffer for all slices, including slice state,
- * slice insert object and slice pak object commands
- *
- */
-static dri_bo *
-gen8_mfc_mpeg2_software_slice_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch;
- VAEncSliceParameterBufferMPEG2 *next_slice_group_param = NULL;
- dri_bo *batch_bo;
- int i;
-
- batch = mfc_context->aux_batchbuffer;
- batch_bo = batch->buffer;
-
- for (i = 0; i < encode_state->num_slice_params_ext; i++) {
- if (i == encode_state->num_slice_params_ext - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[i + 1]->buffer;
-
- gen8_mfc_mpeg2_pipeline_slice_group(ctx, encode_state, encoder_context, i, next_slice_group_param, batch);
- }
-
- intel_batchbuffer_align(batch, 8);
-
- BEGIN_BCS_BATCH(batch, 2);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, MI_BATCH_BUFFER_END);
- ADVANCE_BCS_BATCH(batch);
-
- dri_bo_reference(batch_bo);
- intel_batchbuffer_free(batch);
- mfc_context->aux_batchbuffer = NULL;
-
- return batch_bo;
-}
-
-static void
-gen8_mfc_mpeg2_pipeline_picture_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- mfc_context->pipe_mode_select(ctx, MFX_FORMAT_MPEG2, encoder_context);
- mfc_context->set_surface_state(ctx, encoder_context);
- mfc_context->ind_obj_base_addr_state(ctx, encoder_context);
- gen8_mfc_pipe_buf_addr_state(ctx, encoder_context);
- gen8_mfc_bsp_buf_base_addr_state(ctx, encoder_context);
- gen8_mfc_mpeg2_pic_state(ctx, encoder_context, encode_state);
- gen8_mfc_mpeg2_qm_state(ctx, encoder_context);
- gen8_mfc_mpeg2_fqm_state(ctx, encoder_context);
-}
-
-static void
-gen8_mfc_mpeg2_pipeline_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- dri_bo *slice_batch_bo;
-
- slice_batch_bo = gen8_mfc_mpeg2_software_slice_batchbuffer(ctx, encode_state, encoder_context);
-
- // begin programing
- intel_batchbuffer_start_atomic_bcs(batch, 0x4000);
- intel_batchbuffer_emit_mi_flush(batch);
-
- // picture level programing
- gen8_mfc_mpeg2_pipeline_picture_programing(ctx, encode_state, encoder_context);
-
- BEGIN_BCS_BATCH(batch, 4);
- OUT_BCS_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8) | (1 << 0));
- OUT_BCS_RELOC64(batch,
- slice_batch_bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-
- // end programing
- intel_batchbuffer_end_atomic(batch);
-
- dri_bo_unreference(slice_batch_bo);
-}
-
-static VAStatus
-intel_mfc_mpeg2_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct object_surface *obj_surface;
- struct object_buffer *obj_buffer;
- struct i965_coded_buffer_segment *coded_buffer_segment;
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- dri_bo *bo;
- int i;
-
- /* reconstructed surface */
- obj_surface = encode_state->reconstructed_object;
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
- mfc_context->pre_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(mfc_context->pre_deblocking_output.bo);
- mfc_context->surface_state.width = obj_surface->orig_width;
- mfc_context->surface_state.height = obj_surface->orig_height;
- mfc_context->surface_state.w_pitch = obj_surface->width;
- mfc_context->surface_state.h_pitch = obj_surface->height;
-
- /* forward reference */
- obj_surface = encode_state->reference_objects[0];
-
- if (obj_surface && obj_surface->bo) {
- mfc_context->reference_surfaces[0].bo = obj_surface->bo;
- dri_bo_reference(mfc_context->reference_surfaces[0].bo);
- } else
- mfc_context->reference_surfaces[0].bo = NULL;
-
- /* backward reference */
- obj_surface = encode_state->reference_objects[1];
-
- if (obj_surface && obj_surface->bo) {
- mfc_context->reference_surfaces[1].bo = obj_surface->bo;
- dri_bo_reference(mfc_context->reference_surfaces[1].bo);
- } else {
- mfc_context->reference_surfaces[1].bo = mfc_context->reference_surfaces[0].bo;
-
- if (mfc_context->reference_surfaces[1].bo)
- dri_bo_reference(mfc_context->reference_surfaces[1].bo);
- }
-
- for (i = 2; i < ARRAY_ELEMS(mfc_context->reference_surfaces); i++) {
- mfc_context->reference_surfaces[i].bo = mfc_context->reference_surfaces[i & 1].bo;
-
- if (mfc_context->reference_surfaces[i].bo)
- dri_bo_reference(mfc_context->reference_surfaces[i].bo);
- }
-
- /* input YUV surface */
- obj_surface = encode_state->input_yuv_object;
- mfc_context->uncompressed_picture_source.bo = obj_surface->bo;
- dri_bo_reference(mfc_context->uncompressed_picture_source.bo);
-
- /* coded buffer */
- obj_buffer = encode_state->coded_buf_object;
- bo = obj_buffer->buffer_store->bo;
- mfc_context->mfc_indirect_pak_bse_object.bo = bo;
- mfc_context->mfc_indirect_pak_bse_object.offset = I965_CODEDBUFFER_HEADER_SIZE;
- mfc_context->mfc_indirect_pak_bse_object.end_offset = ALIGN(obj_buffer->size_element - 0x1000, 0x1000);
- dri_bo_reference(mfc_context->mfc_indirect_pak_bse_object.bo);
-
- /* set the internal flag to 0 to indicate the coded size is unknown */
- dri_bo_map(bo, 1);
- coded_buffer_segment = (struct i965_coded_buffer_segment *)bo->virtual;
- coded_buffer_segment->mapped = 0;
- coded_buffer_segment->codec = encoder_context->codec;
- dri_bo_unmap(bo);
-
- return vaStatus;
-}
-
-static VAStatus
-gen8_mfc_mpeg2_encode_picture(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- gen8_mfc_init(ctx, encode_state, encoder_context);
- intel_mfc_mpeg2_prepare(ctx, encode_state, encoder_context);
- /*Programing bcs pipeline*/
- gen8_mfc_mpeg2_pipeline_programing(ctx, encode_state, encoder_context);
- gen8_mfc_run(ctx, encode_state, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-/* JPEG encode methods */
-
-static VAStatus
-intel_mfc_jpeg_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct object_surface *obj_surface;
- struct object_buffer *obj_buffer;
- struct i965_coded_buffer_segment *coded_buffer_segment;
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- dri_bo *bo;
-
- /* input YUV surface */
- obj_surface = encode_state->input_yuv_object;
- mfc_context->uncompressed_picture_source.bo = obj_surface->bo;
- dri_bo_reference(mfc_context->uncompressed_picture_source.bo);
-
- /* coded buffer */
- obj_buffer = encode_state->coded_buf_object;
- bo = obj_buffer->buffer_store->bo;
- mfc_context->mfc_indirect_pak_bse_object.bo = bo;
- mfc_context->mfc_indirect_pak_bse_object.offset = I965_CODEDBUFFER_HEADER_SIZE;
- mfc_context->mfc_indirect_pak_bse_object.end_offset = ALIGN(obj_buffer->size_element - 0x1000, 0x1000);
- dri_bo_reference(mfc_context->mfc_indirect_pak_bse_object.bo);
-
- /* set the internal flag to 0 to indicate the coded size is unknown */
- dri_bo_map(bo, 1);
- coded_buffer_segment = (struct i965_coded_buffer_segment *)bo->virtual;
- coded_buffer_segment->mapped = 0;
- coded_buffer_segment->codec = encoder_context->codec;
- dri_bo_unmap(bo);
-
- return vaStatus;
-}
-
-
-static void
-gen8_mfc_jpeg_set_surface_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct encode_state *encode_state)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct object_surface *obj_surface = encode_state->input_yuv_object;
- unsigned int input_fourcc;
- unsigned int y_cb_offset;
- unsigned int y_cr_offset;
- unsigned int surface_format;
-
- assert(obj_surface);
-
- y_cb_offset = obj_surface->y_cb_offset;
- y_cr_offset = obj_surface->y_cr_offset;
- input_fourcc = obj_surface->fourcc;
-
- surface_format = (obj_surface->fourcc == VA_FOURCC_Y800) ?
- MFX_SURFACE_MONOCHROME : MFX_SURFACE_PLANAR_420_8;
-
-
- switch (input_fourcc) {
- case VA_FOURCC_Y800: {
- surface_format = MFX_SURFACE_MONOCHROME;
- break;
- }
- case VA_FOURCC_NV12: {
- surface_format = MFX_SURFACE_PLANAR_420_8;
- break;
- }
- case VA_FOURCC_UYVY: {
- surface_format = MFX_SURFACE_YCRCB_SWAPY;
- break;
- }
- case VA_FOURCC_YUY2: {
- surface_format = MFX_SURFACE_YCRCB_NORMAL;
- break;
- }
- case VA_FOURCC_RGBA:
- case VA_FOURCC_444P: {
- surface_format = MFX_SURFACE_R8G8B8A8_UNORM;
- break;
- }
- }
-
- BEGIN_BCS_BATCH(batch, 6);
-
- OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- ((obj_surface->orig_height - 1) << 18) |
- ((obj_surface->orig_width - 1) << 4));
- OUT_BCS_BATCH(batch,
- (surface_format << 28) | /* Surface Format */
- (0 << 27) | /* must be 1 for interleave U/V, hardware requirement for AVC/VC1/MPEG and 0 for JPEG */
- (0 << 22) | /* surface object control state, FIXME??? */
- ((obj_surface->width - 1) << 3) | /* pitch */
- (0 << 2) | /* must be 0 for interleave U/V */
- (1 << 1) | /* must be tiled */
- (I965_TILEWALK_YMAJOR << 0)); /* tile walk, TILEWALK_YMAJOR */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* X offset for U(Cb), must be 0 */
- (y_cb_offset << 0)); /* Y offset for U(Cb) */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* X offset for V(Cr), must be 0 */
- (y_cr_offset << 0)); /* Y offset for V(Cr), must be 0 for video codec, non-zoeo for JPEG */
-
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfc_jpeg_pic_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct encode_state *encode_state)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct object_surface *obj_surface = encode_state->input_yuv_object;
- VAEncPictureParameterBufferJPEG *pic_param;
- unsigned int surface_format;
- unsigned int frame_width_in_blks;
- unsigned int frame_height_in_blks;
- unsigned int pixels_in_horizontal_lastMCU;
- unsigned int pixels_in_vertical_lastMCU;
- unsigned int input_surface_format;
- unsigned int output_mcu_format;
- unsigned int picture_width;
- unsigned int picture_height;
-
- assert(encode_state->pic_param_ext && encode_state->pic_param_ext->buffer);
- assert(obj_surface);
- pic_param = (VAEncPictureParameterBufferJPEG *)encode_state->pic_param_ext->buffer;
- surface_format = obj_surface->fourcc;
- picture_width = pic_param->picture_width;
- picture_height = pic_param->picture_height;
-
- switch (surface_format) {
- case VA_FOURCC_Y800: {
- input_surface_format = JPEG_ENC_SURFACE_Y8;
- output_mcu_format = JPEG_ENC_MCU_YUV400;
- break;
- }
- case VA_FOURCC_NV12: {
- input_surface_format = JPEG_ENC_SURFACE_NV12;
- output_mcu_format = JPEG_ENC_MCU_YUV420;
- break;
- }
- case VA_FOURCC_UYVY: {
- input_surface_format = JPEG_ENC_SURFACE_UYVY;
- output_mcu_format = JPEG_ENC_MCU_YUV422H_2Y;
- break;
- }
- case VA_FOURCC_YUY2: {
- input_surface_format = JPEG_ENC_SURFACE_YUY2;
- output_mcu_format = JPEG_ENC_MCU_YUV422H_2Y;
- break;
- }
-
- case VA_FOURCC_RGBA:
- case VA_FOURCC_444P: {
- input_surface_format = JPEG_ENC_SURFACE_RGB;
- output_mcu_format = JPEG_ENC_MCU_RGB;
- break;
- }
- default : {
- input_surface_format = JPEG_ENC_SURFACE_NV12;
- output_mcu_format = JPEG_ENC_MCU_YUV420;
- break;
- }
- }
-
-
- switch (output_mcu_format) {
-
- case JPEG_ENC_MCU_YUV400:
- case JPEG_ENC_MCU_RGB: {
- pixels_in_horizontal_lastMCU = (picture_width % 8);
- pixels_in_vertical_lastMCU = (picture_height % 8);
-
- //H1=1,V1=1 for YUV400 and YUV444. So, compute these values accordingly
- frame_width_in_blks = ((picture_width + 7) / 8);
- frame_height_in_blks = ((picture_height + 7) / 8);
- break;
- }
-
- case JPEG_ENC_MCU_YUV420: {
- if((picture_width % 2) == 0)
- pixels_in_horizontal_lastMCU = picture_width % 16;
- else
- pixels_in_horizontal_lastMCU = ((picture_width % 16) + 1) % 16;
-
- if((picture_height % 2) == 0)
- pixels_in_vertical_lastMCU = picture_height % 16;
- else
- pixels_in_vertical_lastMCU = ((picture_height % 16) + 1) % 16;
-
- //H1=2,V1=2 for YUV420. So, compute these values accordingly
- frame_width_in_blks = ((picture_width + 15) / 16) * 2;
- frame_height_in_blks = ((picture_height + 15) / 16) * 2;
- break;
- }
-
- case JPEG_ENC_MCU_YUV422H_2Y: {
- if(picture_width % 2 == 0)
- pixels_in_horizontal_lastMCU = picture_width % 16;
- else
- pixels_in_horizontal_lastMCU = ((picture_width % 16) + 1) % 16;
-
- pixels_in_vertical_lastMCU = picture_height % 8;
-
- //H1=2,V1=1 for YUV422H_2Y. So, compute these values accordingly
- frame_width_in_blks = ((picture_width + 15) / 16) * 2;
- frame_height_in_blks = ((picture_height + 7) / 8);
- break;
- }
- } //end of switch
-
- BEGIN_BCS_BATCH(batch, 3);
- /* DWORD 0 */
- OUT_BCS_BATCH(batch, MFX_JPEG_PIC_STATE | (3 - 2));
- /* DWORD 1 */
- OUT_BCS_BATCH(batch,
- ( pixels_in_horizontal_lastMCU << 26) | /* Pixels In Horizontal Last MCU */
- ( pixels_in_vertical_lastMCU << 21) | /* Pixels In Vertical Last MCU */
- ( input_surface_format << 8) | /* Input Surface format */
- ( output_mcu_format << 0)); /* Output MCU Structure */
- /* DWORD 2 */
- OUT_BCS_BATCH(batch,
- ((frame_height_in_blks - 1) << 16) | /* Frame Height In Blks Minus 1 */
- (JPEG_ENC_ROUND_QUANT_DEFAULT << 13) | /* Rounding Quant set to default value 0 */
- ((frame_width_in_blks - 1) << 0)); /* Frame Width In Blks Minus 1 */
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-get_reciprocal_dword_qm(unsigned char *raster_qm, uint32_t *dword_qm)
-{
- int i = 0, j = 0;
- short reciprocal_qm[64];
-
- for(i=0; i<64; i++) {
- reciprocal_qm[i] = 65535/(raster_qm[i]);
- }
-
- for(i=0; i<64; i++) {
- dword_qm[j] = ((reciprocal_qm[i+1] <<16) | (reciprocal_qm[i]));
- j++;
- i++;
- }
-
-}
-
-
-static void
-gen8_mfc_jpeg_fqm_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct encode_state *encode_state)
-{
- unsigned int quality = 0;
- uint32_t temp, i = 0, j = 0, dword_qm[32];
- VAEncPictureParameterBufferJPEG *pic_param;
- VAQMatrixBufferJPEG *qmatrix;
- unsigned char raster_qm[64], column_raster_qm[64];
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- assert(encode_state->pic_param_ext && encode_state->pic_param_ext->buffer);
- pic_param = (VAEncPictureParameterBufferJPEG *)encode_state->pic_param_ext->buffer;
- quality = pic_param->quality;
-
- //If the app sends the qmatrix, use it, buffer it for using it with the next frames
- //The app can send qmatrix for the first frame and not send for the subsequent frames
- if(encode_state->q_matrix && encode_state->q_matrix->buffer) {
- qmatrix = (VAQMatrixBufferJPEG *)encode_state->q_matrix->buffer;
-
- mfc_context->buffered_qmatrix.load_lum_quantiser_matrix = 1;
- memcpy(mfc_context->buffered_qmatrix.lum_quantiser_matrix, qmatrix->lum_quantiser_matrix, 64 * (sizeof(unsigned char)));
-
- if(pic_param->num_components > 1) {
- mfc_context->buffered_qmatrix.load_chroma_quantiser_matrix = 1;
- memcpy(mfc_context->buffered_qmatrix.chroma_quantiser_matrix, qmatrix->chroma_quantiser_matrix, 64 * (sizeof(unsigned char)));
- } else {
- mfc_context->buffered_qmatrix.load_chroma_quantiser_matrix = 0;
- }
-
- } else {
- //If the app doesnt send the qmatrix, use the buffered/default qmatrix
- qmatrix = &mfc_context->buffered_qmatrix;
- qmatrix->load_lum_quantiser_matrix = 1;
- qmatrix->load_chroma_quantiser_matrix = (pic_param->num_components > 1) ? 1 : 0;
- }
-
-
- //As per the design, normalization of the quality factor and scaling of the Quantization tables
- //based on the quality factor needs to be done in the driver before sending the values to the HW.
- //But note, the driver expects the scaled quantization tables (as per below logic) to be sent as
- //packed header information. The packed header is written as the header of the jpeg file. This
- //header information is used to decode the jpeg file. So, it is the app's responsibility to send
- //the correct header information (See build_packed_jpeg_header_buffer() in jpegenc.c in LibVa on
- //how to do this). QTables can be different for different applications. If no tables are provided,
- //the default tables in the driver are used.
-
- //Normalization of the quality factor
- if (quality > 100) quality=100;
- if (quality == 0) quality=1;
- quality = (quality < 50) ? (5000/quality) : (200 - (quality*2));
-
- //Step 1. Apply Quality factor and clip to range [1, 255] for luma and chroma Quantization matrices
- //Step 2. HW expects the 1/Q[i] values in the qm sent, so get reciprocals
- //Step 3. HW also expects 32 dwords, hence combine 2 (1/Q) values into 1 dword
- //Step 4. Send the Quantization matrix to the HW, use gen8_mfc_fqm_state
-
- //For luma (Y or R)
- if(qmatrix->load_lum_quantiser_matrix) {
- //apply quality to lum_quantiser_matrix
- for(i=0; i < 64; i++) {
- temp = (qmatrix->lum_quantiser_matrix[i] * quality)/100;
- //clamp to range [1,255]
- temp = (temp > 255) ? 255 : temp;
- temp = (temp < 1) ? 1 : temp;
- qmatrix->lum_quantiser_matrix[i] = (unsigned char)temp;
- }
-
- //For VAAPI, the VAQMatrixBuffer needs to be in zigzag order.
- //The App should send it in zigzag. Now, the driver has to extract the raster from it.
- for (j = 0; j < 64; j++)
- raster_qm[zigzag_direct[j]] = qmatrix->lum_quantiser_matrix[j];
-
- //Convert the raster order(row-ordered) to the column-raster (column by column).
- //To be consistent with the other encoders, send it in column order.
- //Need to double check if our HW expects col or row raster.
- for (j = 0; j < 64; j++) {
- int row = j / 8, col = j % 8;
- column_raster_qm[col * 8 + row] = raster_qm[j];
- }
-
- //Convert to raster QM to reciprocal. HW expects values in reciprocal.
- get_reciprocal_dword_qm(column_raster_qm, dword_qm);
-
- //send the luma qm to the command buffer
- gen8_mfc_fqm_state(ctx, MFX_QM_JPEG_LUMA_Y_QUANTIZER_MATRIX, dword_qm, 32, encoder_context);
- }
-
- //For Chroma, if chroma exists (Cb, Cr or G, B)
- if(qmatrix->load_chroma_quantiser_matrix) {
- //apply quality to chroma_quantiser_matrix
- for(i=0; i < 64; i++) {
- temp = (qmatrix->chroma_quantiser_matrix[i] * quality)/100;
- //clamp to range [1,255]
- temp = (temp > 255) ? 255 : temp;
- temp = (temp < 1) ? 1 : temp;
- qmatrix->chroma_quantiser_matrix[i] = (unsigned char)temp;
- }
-
- //For VAAPI, the VAQMatrixBuffer needs to be in zigzag order.
- //The App should send it in zigzag. Now, the driver has to extract the raster from it.
- for (j = 0; j < 64; j++)
- raster_qm[zigzag_direct[j]] = qmatrix->chroma_quantiser_matrix[j];
-
- //Convert the raster order(row-ordered) to the column-raster (column by column).
- //To be consistent with the other encoders, send it in column order.
- //Need to double check if our HW expects col or row raster.
- for (j = 0; j < 64; j++) {
- int row = j / 8, col = j % 8;
- column_raster_qm[col * 8 + row] = raster_qm[j];
- }
-
-
- //Convert to raster QM to reciprocal. HW expects values in reciprocal.
- get_reciprocal_dword_qm(column_raster_qm, dword_qm);
-
- //send the same chroma qm to the command buffer (for both U,V or G,B)
- gen8_mfc_fqm_state(ctx, MFX_QM_JPEG_CHROMA_CB_QUANTIZER_MATRIX, dword_qm, 32, encoder_context);
- gen8_mfc_fqm_state(ctx, MFX_QM_JPEG_CHROMA_CR_QUANTIZER_MATRIX, dword_qm, 32, encoder_context);
- }
-}
-
-
-//Translation of Table K.5 into code: This method takes the huffval from the
-//Huffmantable buffer and converts into index for the coefficients and size tables
-uint8_t map_huffval_to_index(uint8_t huff_val)
-{
- uint8_t index = 0;
-
- if(huff_val < 0xF0) {
- index = (((huff_val >> 4) & 0x0F) * 0xA) + (huff_val & 0x0F);
- } else {
- index = 1 + (((huff_val >> 4) & 0x0F) * 0xA) + (huff_val & 0x0F);
- }
-
- return index;
-}
-
-
-//Implementation of Flow chart Annex C - Figure C.1
-static void
-generate_huffman_codesizes_table(uint8_t *bits, uint8_t *huff_size_table, uint8_t *lastK)
-{
- uint8_t i=1, j=1, k=0;
-
- while(i <= 16) {
- while(j <= (uint8_t)bits[i-1]) {
- huff_size_table[k] = i;
- k = k+1;
- j = j+1;
- }
-
- i = i+1;
- j = 1;
- }
- huff_size_table[k] = 0;
- (*lastK) = k;
-}
-
-//Implementation of Flow chart Annex C - Figure C.2
-static void
-generate_huffman_codes_table(uint8_t *huff_size_table, uint16_t *huff_code_table)
-{
- uint8_t k=0;
- uint16_t code=0;
- uint8_t si=huff_size_table[k];
-
- while(huff_size_table[k] != 0) {
-
- while(huff_size_table[k] == si) {
-
- // An huffman code can never be 0xFFFF. Replace it with 0 if 0xFFFF
- if(code == 0xFFFF) {
- code = 0x0000;
- }
-
- huff_code_table[k] = code;
- code = code+1;
- k = k+1;
- }
-
- code <<= 1;
- si = si+1;
- }
-
-}
-
-//Implementation of Flow chat Annex C - Figure C.3
-static void
-generate_ordered_codes_table(uint8_t *huff_vals, uint8_t *huff_size_table, uint16_t *huff_code_table, uint8_t type, uint8_t lastK)
-{
- uint8_t huff_val_size=0, i=0, k=0;
-
- huff_val_size = (type == 0) ? 12 : 162;
- uint8_t huff_si_table[huff_val_size];
- uint16_t huff_co_table[huff_val_size];
-
- memset(huff_si_table, 0, sizeof(huff_si_table));
- memset(huff_co_table, 0, sizeof(huff_co_table));
-
- do {
- i = map_huffval_to_index(huff_vals[k]);
- huff_co_table[i] = huff_code_table[k];
- huff_si_table[i] = huff_size_table[k];
- k++;
- } while(k < lastK);
-
- memcpy(huff_size_table, huff_si_table, sizeof(uint8_t)*huff_val_size);
- memcpy(huff_code_table, huff_co_table, sizeof(uint16_t)*huff_val_size);
-}
-
-
-//This method converts the huffman table to code words which is needed by the HW
-//Flowcharts from Jpeg Spec Annex C - Figure C.1, Figure C.2, Figure C.3 are used here
-static void
-convert_hufftable_to_codes(VAHuffmanTableBufferJPEGBaseline *huff_buffer, uint32_t *table, uint8_t type, uint8_t index)
-{
- uint8_t lastK = 0, i=0;
- uint8_t huff_val_size = 0;
- uint8_t *huff_bits, *huff_vals;
-
- huff_val_size = (type == 0) ? 12 : 162;
- uint8_t huff_size_table[huff_val_size+1]; //The +1 for adding 0 at the end of huff_val_size
- uint16_t huff_code_table[huff_val_size];
-
- memset(huff_size_table, 0, sizeof(huff_size_table));
- memset(huff_code_table, 0, sizeof(huff_code_table));
-
- huff_bits = (type == 0) ? (huff_buffer->huffman_table[index].num_dc_codes) : (huff_buffer->huffman_table[index].num_ac_codes);
- huff_vals = (type == 0) ? (huff_buffer->huffman_table[index].dc_values) : (huff_buffer->huffman_table[index].ac_values);
-
-
- //Generation of table of Huffman code sizes
- generate_huffman_codesizes_table(huff_bits, huff_size_table, &lastK);
-
- //Generation of table of Huffman codes
- generate_huffman_codes_table(huff_size_table, huff_code_table);
-
- //Ordering procedure for encoding procedure code tables
- generate_ordered_codes_table(huff_vals, huff_size_table, huff_code_table, type, lastK);
-
- //HW expects Byte0: Code length; Byte1,Byte2: Code Word, Byte3: Dummy
- //Since IA is littlended, &, | and << accordingly to store the values in the DWord.
- for(i=0; i<huff_val_size; i++) {
- table[i] = 0;
- table[i] = ((huff_size_table[i] & 0xFF) | ((huff_code_table[i] & 0xFFFF) << 8));
- }
-
-}
-
-//send the huffman table using MFC_JPEG_HUFF_TABLE_STATE
-static void
-gen8_mfc_jpeg_huff_table_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int num_tables)
-{
- VAHuffmanTableBufferJPEGBaseline *huff_buffer;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- uint8_t index;
- uint32_t dc_table[12], ac_table[162];
-
- assert(encode_state->huffman_table && encode_state->huffman_table->buffer);
- huff_buffer = (VAHuffmanTableBufferJPEGBaseline *)encode_state->huffman_table->buffer;
-
- memset(dc_table, 0, 12);
- memset(ac_table, 0, 162);
-
- for (index = 0; index < num_tables; index++) {
- int id = va_to_gen7_jpeg_hufftable[index];
-
- if (!huff_buffer->load_huffman_table[index])
- continue;
-
- //load DC table with 12 DWords
- convert_hufftable_to_codes(huff_buffer, dc_table, 0, index); //0 for Dc
-
- //load AC table with 162 DWords
- convert_hufftable_to_codes(huff_buffer, ac_table, 1, index); //1 for AC
-
- BEGIN_BCS_BATCH(batch, 176);
- OUT_BCS_BATCH(batch, MFC_JPEG_HUFF_TABLE_STATE | (176 - 2));
- OUT_BCS_BATCH(batch, id); //Huff table id
-
- //DWord 2 - 13 has DC_TABLE
- intel_batchbuffer_data(batch, dc_table, 12*4);
-
- //Dword 14 -175 has AC_TABLE
- intel_batchbuffer_data(batch, ac_table, 162*4);
- ADVANCE_BCS_BATCH(batch);
- }
-}
-
-
-//This method is used to compute the MCU count used for setting MFC_JPEG_SCAN_OBJECT
-static void get_Y_sampling_factors(uint32_t surface_format, uint8_t *h_factor, uint8_t *v_factor)
-{
- switch (surface_format) {
- case VA_FOURCC_Y800: {
- (* h_factor) = 1;
- (* v_factor) = 1;
- break;
- }
- case VA_FOURCC_NV12: {
- (* h_factor) = 2;
- (* v_factor) = 2;
- break;
- }
- case VA_FOURCC_UYVY: {
- (* h_factor) = 2;
- (* v_factor) = 1;
- break;
- }
- case VA_FOURCC_YUY2: {
- (* h_factor) = 2;
- (* v_factor) = 1;
- break;
- }
- case VA_FOURCC_RGBA:
- case VA_FOURCC_444P: {
- (* h_factor) = 1;
- (* v_factor) = 1;
- break;
- }
- default : { //May be have to insert error handling here. For now just use as below
- (* h_factor) = 1;
- (* v_factor) = 1;
- break;
- }
- }
-}
-
-//set MFC_JPEG_SCAN_OBJECT
-static void
-gen8_mfc_jpeg_scan_object(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- uint32_t mcu_count, surface_format, Mx, My;
- uint8_t i, horizontal_sampling_factor, vertical_sampling_factor, huff_ac_table=0, huff_dc_table=0;
- uint8_t is_last_scan = 1; //Jpeg has only 1 scan per frame. When last scan, HW inserts EOI code.
- uint8_t head_present_flag=1; //Header has tables and app data
- uint16_t num_components, restart_interval; //Specifies number of MCUs in an ECS.
- VAEncSliceParameterBufferJPEG *slice_param;
- VAEncPictureParameterBufferJPEG *pic_param;
-
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct object_surface *obj_surface = encode_state->input_yuv_object;
-
- assert(encode_state->slice_params_ext[0] && encode_state->slice_params_ext[0]->buffer);
- assert(encode_state->pic_param_ext && encode_state->pic_param_ext->buffer);
- assert(obj_surface);
- pic_param = (VAEncPictureParameterBufferJPEG *)encode_state->pic_param_ext->buffer;
- slice_param = (VAEncSliceParameterBufferJPEG *)encode_state->slice_params_ext[0]->buffer;
- surface_format = obj_surface->fourcc;
-
- get_Y_sampling_factors(surface_format, &horizontal_sampling_factor, &vertical_sampling_factor);
-
- // Mx = #MCUs in a row, My = #MCUs in a column
- Mx = (pic_param->picture_width + (horizontal_sampling_factor*8 -1))/(horizontal_sampling_factor*8);
- My = (pic_param->picture_height + (vertical_sampling_factor*8 -1))/(vertical_sampling_factor*8);
- mcu_count = (Mx * My);
-
- num_components = pic_param->num_components;
- restart_interval = slice_param->restart_interval;
-
- //Depending on number of components and values set for table selectors,
- //only those bits are set in 24:22 for AC table, 20:18 for DC table
- for(i=0; i<num_components; i++) {
- huff_ac_table |= ((slice_param->components[i].ac_table_selector)<<i);
- huff_dc_table |= ((slice_param->components[i].dc_table_selector)<<i);
- }
-
-
- BEGIN_BCS_BATCH(batch, 3);
- /* DWORD 0 */
- OUT_BCS_BATCH(batch, MFC_JPEG_SCAN_OBJECT | (3 - 2));
- /* DWORD 1 */
- OUT_BCS_BATCH(batch, mcu_count << 0); //MCU Count
- /* DWORD 2 */
- OUT_BCS_BATCH(batch,
- (huff_ac_table << 22) | //Huffman AC Table
- (huff_dc_table << 18) | //Huffman DC Table
- (head_present_flag << 17) | //Head present flag
- (is_last_scan << 16) | //Is last scan
- (restart_interval << 0)); //Restart Interval
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfc_jpeg_pak_insert_object(struct intel_encoder_context *encoder_context, unsigned int *insert_data,
- int length_in_dws, int data_bits_in_last_dw, int is_last_header,
- int is_end_of_slice)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- assert(batch);
-
- if (data_bits_in_last_dw == 0)
- data_bits_in_last_dw = 32;
-
- BEGIN_BCS_BATCH(batch, length_in_dws + 2);
-
- OUT_BCS_BATCH(batch, MFX_INSERT_OBJECT | (length_in_dws + 2 - 2));
- //DWord 1
- OUT_BCS_BATCH(batch,
- (0 << 16) | //DataByteOffset 0 for JPEG Encoder
- (0 << 15) | //HeaderLengthExcludeFrmSize 0 for JPEG Encoder
- (data_bits_in_last_dw << 8) | //DataBitsInLastDW
- (0 << 4) | //SkipEmulByteCount 0 for JPEG Encoder
- (0 << 3) | //EmulationFlag 0 for JPEG Encoder
- ((!!is_last_header) << 2) | //LastHeaderFlag
- ((!!is_end_of_slice) << 1) | //EndOfSliceFlag
- (1 << 0)); //BitstreamStartReset 1 for JPEG Encoder
- //Data Paylaod
- intel_batchbuffer_data(batch, insert_data, length_in_dws*4);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-
-//send the jpeg headers to HW using MFX_PAK_INSERT_OBJECT
-static void
-gen8_mfc_jpeg_add_headers(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- if (encode_state->packed_header_data_ext) {
- VAEncPackedHeaderParameterBuffer *param = NULL;
- unsigned int *header_data = (unsigned int *)(*encode_state->packed_header_data_ext)->buffer;
- unsigned int length_in_bits;
-
- param = (VAEncPackedHeaderParameterBuffer *)(*encode_state->packed_header_params_ext)->buffer;
- length_in_bits = param->bit_length;
-
- gen8_mfc_jpeg_pak_insert_object(encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- 1,
- 1);
- }
-}
-
-//Initialize the buffered_qmatrix with the default qmatrix in the driver.
-//If the app sends the qmatrix, this will be replaced with the one app sends.
-static void
-jpeg_init_default_qmatrix(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- int i=0;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- //Load the the QM in zigzag order. If app sends QM, it is always in zigzag order.
- for(i=0; i<64; i++)
- mfc_context->buffered_qmatrix.lum_quantiser_matrix[i] = jpeg_luma_quant[zigzag_direct[i]];
-
- for(i=0; i<64; i++)
- mfc_context->buffered_qmatrix.chroma_quantiser_matrix[i] = jpeg_chroma_quant[zigzag_direct[i]];
-}
-
-/* This is at the picture level */
-static void
-gen8_mfc_jpeg_pipeline_picture_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- int i, j, component, max_selector = 0;
- VAEncSliceParameterBufferJPEG *slice_param;
-
- gen8_mfc_pipe_mode_select(ctx, MFX_FORMAT_JPEG, encoder_context);
- gen8_mfc_jpeg_set_surface_state(ctx, encoder_context, encode_state);
- gen8_mfc_pipe_buf_addr_state(ctx, encoder_context);
- gen8_mfc_ind_obj_base_addr_state(ctx, encoder_context);
- gen8_mfc_bsp_buf_base_addr_state(ctx, encoder_context);
- gen8_mfc_jpeg_pic_state(ctx, encoder_context, encode_state);
-
- //do the slice level encoding here
- gen8_mfc_jpeg_fqm_state(ctx, encoder_context, encode_state);
-
- //I dont think I need this for loop. Just to be consistent with other encoding logic...
- for(i = 0; i < encode_state->num_slice_params_ext; i++) {
- assert(encode_state->slice_params_ext && encode_state->slice_params_ext[i]->buffer);
- slice_param = (VAEncSliceParameterBufferJPEG *)encode_state->slice_params_ext[i]->buffer;
-
- for(j = 0; j < encode_state->slice_params_ext[i]->num_elements; j++) {
-
- for(component = 0; component < slice_param->num_components; component++) {
- if(max_selector < slice_param->components[component].dc_table_selector)
- max_selector = slice_param->components[component].dc_table_selector;
-
- if (max_selector < slice_param->components[component].ac_table_selector)
- max_selector = slice_param->components[component].ac_table_selector;
- }
-
- slice_param++;
- }
- }
-
- assert(max_selector < 2);
- //send the huffman table using MFC_JPEG_HUFF_TABLE
- gen8_mfc_jpeg_huff_table_state(ctx, encode_state, encoder_context, max_selector+1);
- //set MFC_JPEG_SCAN_OBJECT
- gen8_mfc_jpeg_scan_object(ctx, encode_state, encoder_context);
- //add headers using MFX_PAK_INSERT_OBJECT (it is refered as MFX_INSERT_OBJECT in this driver code)
- gen8_mfc_jpeg_add_headers(ctx, encode_state, encoder_context);
-
-}
-
-static void
-gen8_mfc_jpeg_pipeline_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- // begin programing
- intel_batchbuffer_start_atomic_bcs(batch, 0x4000);
- intel_batchbuffer_emit_mi_flush(batch);
-
- // picture level programing
- gen8_mfc_jpeg_pipeline_picture_programing(ctx, encode_state, encoder_context);
-
- // end programing
- intel_batchbuffer_end_atomic(batch);
-
-}
-
-
-static VAStatus
-gen8_mfc_jpeg_encode_picture(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- gen8_mfc_init(ctx, encode_state, encoder_context);
- intel_mfc_jpeg_prepare(ctx, encode_state, encoder_context);
- /*Programing bcs pipeline*/
- gen8_mfc_jpeg_pipeline_programing(ctx, encode_state, encoder_context);
- gen8_mfc_run(ctx, encode_state, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static int gen8_mfc_vp8_qindex_estimate(struct encode_state *encode_state,
- struct gen6_mfc_context *mfc_context,
- int target_frame_size,
- int is_key_frame)
-{
- VAEncSequenceParameterBufferVP8 *seq_param = (VAEncSequenceParameterBufferVP8 *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferVP8 *pic_param = (VAEncPictureParameterBufferVP8 *)encode_state->pic_param_ext->buffer;
- unsigned int max_qindex = pic_param->clamp_qindex_high;
- unsigned int min_qindex = pic_param->clamp_qindex_low;
- int width_in_mbs = ALIGN(seq_param->frame_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->frame_height, 16) / 16;
- int target_mb_size;
- int last_size_gap = -1;
- int per_mb_size_at_qindex;
- int target_qindex = min_qindex, i;
-
- /* make sure would not overflow*/
- if (target_frame_size >= (0x7fffffff >> 9))
- target_mb_size = (target_frame_size / width_in_mbs / height_in_mbs) << 9;
- else
- target_mb_size = (target_frame_size << 9) / width_in_mbs / height_in_mbs;
-
- for (i = min_qindex; i <= max_qindex; i++) {
- per_mb_size_at_qindex = vp8_bits_per_mb[!is_key_frame][i];
- target_qindex = i;
- if (per_mb_size_at_qindex <= target_mb_size) {
- if (target_mb_size - per_mb_size_at_qindex < last_size_gap)
- target_qindex--;
- break;
- }
- else
- last_size_gap = per_mb_size_at_qindex - target_mb_size;
- }
-
- return target_qindex;
-}
-
-static void gen8_mfc_vp8_brc_init(struct encode_state *encode_state,
- struct intel_encoder_context* encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncSequenceParameterBufferVP8 *seq_param = (VAEncSequenceParameterBufferVP8 *)encode_state->seq_param_ext->buffer;
- double bitrate = encoder_context->brc.bits_per_second[0];
- double framerate = (double)encoder_context->brc.framerate[0].num / (double)encoder_context->brc.framerate[0].den;
- int inum = 1, pnum = 0;
- int intra_period = seq_param->intra_period;
- int width_in_mbs = ALIGN(seq_param->frame_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->frame_height, 16) / 16;
- int max_frame_size = (vp8_bits_per_mb[0][0] >> 9) * width_in_mbs * height_in_mbs;/* vp8_bits_per_mb table mutilpled 512 */
-
- pnum = intra_period - 1;
-
- mfc_context->brc.mode = encoder_context->rate_control_mode;
-
- mfc_context->brc.target_frame_size[0][SLICE_TYPE_I] = (int)((double)((bitrate * intra_period) / framerate) /
- (double)(inum + BRC_PWEIGHT * pnum ));
- mfc_context->brc.target_frame_size[0][SLICE_TYPE_P] = BRC_PWEIGHT * mfc_context->brc.target_frame_size[0][SLICE_TYPE_I];
-
- mfc_context->brc.gop_nums[0][SLICE_TYPE_I] = inum;
- mfc_context->brc.gop_nums[0][SLICE_TYPE_P] = pnum;
-
- mfc_context->brc.bits_per_frame[0] = bitrate / framerate;
-
- mfc_context->brc.qp_prime_y[0][SLICE_TYPE_I] = gen8_mfc_vp8_qindex_estimate(encode_state,
- mfc_context,
- mfc_context->brc.target_frame_size[0][SLICE_TYPE_I],
- 1);
- mfc_context->brc.qp_prime_y[0][SLICE_TYPE_P] = gen8_mfc_vp8_qindex_estimate(encode_state,
- mfc_context,
- mfc_context->brc.target_frame_size[0][SLICE_TYPE_P],
- 0);
-
- if (encoder_context->brc.hrd_buffer_size)
- mfc_context->hrd.buffer_size[0] = (double)encoder_context->brc.hrd_buffer_size;
- else
- mfc_context->hrd.buffer_size[0] = bitrate;
- if (encoder_context->brc.hrd_initial_buffer_fullness &&
- encoder_context->brc.hrd_initial_buffer_fullness < mfc_context->hrd.buffer_size[0])
- mfc_context->hrd.current_buffer_fullness[0] = (double)encoder_context->brc.hrd_initial_buffer_fullness;
- else
- mfc_context->hrd.current_buffer_fullness[0] = mfc_context->hrd.buffer_size[0] / 2.0;
- mfc_context->hrd.target_buffer_fullness[0] = (double)mfc_context->hrd.buffer_size[0] / 2.0;
- mfc_context->hrd.buffer_capacity[0] = (double)mfc_context->hrd.buffer_size[0] / max_frame_size;
- mfc_context->hrd.violation_noted = 0;
-}
-
-static int gen8_mfc_vp8_brc_postpack(struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int frame_bits)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- gen6_brc_status sts = BRC_NO_HRD_VIOLATION;
- VAEncPictureParameterBufferVP8 *pic_param = (VAEncPictureParameterBufferVP8 *)encode_state->pic_param_ext->buffer;
- int is_key_frame = !pic_param->pic_flags.bits.frame_type;
- int slicetype = (is_key_frame ? SLICE_TYPE_I : SLICE_TYPE_P);
- int qpi = mfc_context->brc.qp_prime_y[0][SLICE_TYPE_I];
- int qpp = mfc_context->brc.qp_prime_y[0][SLICE_TYPE_P];
- int qp; // quantizer of previously encoded slice of current type
- int qpn; // predicted quantizer for next frame of current type in integer format
- double qpf; // predicted quantizer for next frame of current type in float format
- double delta_qp; // QP correction
- int target_frame_size, frame_size_next;
- /* Notes:
- * x - how far we are from HRD buffer borders
- * y - how far we are from target HRD buffer fullness
- */
- double x, y;
- double frame_size_alpha;
- unsigned int max_qindex = pic_param->clamp_qindex_high;
- unsigned int min_qindex = pic_param->clamp_qindex_low;
-
- qp = mfc_context->brc.qp_prime_y[0][slicetype];
-
- target_frame_size = mfc_context->brc.target_frame_size[0][slicetype];
- if (mfc_context->hrd.buffer_capacity[0] < 5)
- frame_size_alpha = 0;
- else
- frame_size_alpha = (double)mfc_context->brc.gop_nums[0][slicetype];
- if (frame_size_alpha > 30) frame_size_alpha = 30;
- frame_size_next = target_frame_size + (double)(target_frame_size - frame_bits) /
- (double)(frame_size_alpha + 1.);
-
- /* frame_size_next: avoiding negative number and too small value */
- if ((double)frame_size_next < (double)(target_frame_size * 0.25))
- frame_size_next = (int)((double)target_frame_size * 0.25);
-
- qpf = (double)qp * target_frame_size / frame_size_next;
- qpn = (int)(qpf + 0.5);
-
- if (qpn == qp) {
- /* setting qpn we round qpf making mistakes: now we are trying to compensate this */
- mfc_context->brc.qpf_rounding_accumulator[0] += qpf - qpn;
- if (mfc_context->brc.qpf_rounding_accumulator[0] > 1.0) {
- qpn++;
- mfc_context->brc.qpf_rounding_accumulator[0] = 0.;
- } else if (mfc_context->brc.qpf_rounding_accumulator[0] < -1.0) {
- qpn--;
- mfc_context->brc.qpf_rounding_accumulator[0] = 0.;
- }
- }
-
- /* making sure that QP is not changing too fast */
- if ((qpn - qp) > BRC_QP_MAX_CHANGE) qpn = qp + BRC_QP_MAX_CHANGE;
- else if ((qpn - qp) < -BRC_QP_MAX_CHANGE) qpn = qp - BRC_QP_MAX_CHANGE;
- /* making sure that with QP predictions we did do not leave QPs range */
- BRC_CLIP(qpn, min_qindex, max_qindex);
-
- /* checking wthether HRD compliance is still met */
- sts = intel_mfc_update_hrd(encode_state, encoder_context, frame_bits);
-
- /* calculating QP delta as some function*/
- x = mfc_context->hrd.target_buffer_fullness[0] - mfc_context->hrd.current_buffer_fullness[0];
- if (x > 0) {
- x /= mfc_context->hrd.target_buffer_fullness[0];
- y = mfc_context->hrd.current_buffer_fullness[0];
- }
- else {
- x /= (mfc_context->hrd.buffer_size[0] - mfc_context->hrd.target_buffer_fullness[0]);
- y = mfc_context->hrd.buffer_size[0] - mfc_context->hrd.current_buffer_fullness[0];
- }
- if (y < 0.01) y = 0.01;
- if (x > 1) x = 1;
- else if (x < -1) x = -1;
-
- delta_qp = BRC_QP_MAX_CHANGE*exp(-1/y)*sin(BRC_PI_0_5 * x);
- qpn = (int)(qpn + delta_qp + 0.5);
-
- /* making sure that with QP predictions we did do not leave QPs range */
- BRC_CLIP(qpn, min_qindex, max_qindex);
-
- if (sts == BRC_NO_HRD_VIOLATION) { // no HRD violation
- /* correcting QPs of slices of other types */
- if (!is_key_frame) {
- if (abs(qpn - BRC_I_P_QP_DIFF - qpi) > 4)
- mfc_context->brc.qp_prime_y[0][SLICE_TYPE_I] += (qpn - BRC_I_P_QP_DIFF - qpi) >> 2;
- } else {
- if (abs(qpn + BRC_I_P_QP_DIFF - qpp) > 4)
- mfc_context->brc.qp_prime_y[0][SLICE_TYPE_P] += (qpn + BRC_I_P_QP_DIFF - qpp) >> 2;
- }
- BRC_CLIP(mfc_context->brc.qp_prime_y[0][SLICE_TYPE_I], min_qindex, max_qindex);
- BRC_CLIP(mfc_context->brc.qp_prime_y[0][SLICE_TYPE_P], min_qindex, max_qindex);
- } else if (sts == BRC_UNDERFLOW) { // underflow
- if (qpn <= qp) qpn = qp + 2;
- if (qpn > max_qindex) {
- qpn = max_qindex;
- sts = BRC_UNDERFLOW_WITH_MAX_QP; //underflow with maxQP
- }
- } else if (sts == BRC_OVERFLOW) {
- if (qpn >= qp) qpn = qp - 2;
- if (qpn < min_qindex) { // < 0 (?) overflow with minQP
- qpn = min_qindex;
- sts = BRC_OVERFLOW_WITH_MIN_QP; // bit stuffing to be done
- }
- }
-
- mfc_context->brc.qp_prime_y[0][slicetype] = qpn;
-
- return sts;
-}
-
-static void gen8_mfc_vp8_hrd_context_init(struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- unsigned int rate_control_mode = encoder_context->rate_control_mode;
- int target_bit_rate = encoder_context->brc.bits_per_second[0];
-
- // current we only support CBR mode.
- if (rate_control_mode == VA_RC_CBR) {
- mfc_context->vui_hrd.i_bit_rate_value = target_bit_rate >> 10;
- mfc_context->vui_hrd.i_initial_cpb_removal_delay = ((target_bit_rate * 8) >> 10) * 0.5 * 1024 / target_bit_rate * 90000;
- mfc_context->vui_hrd.i_cpb_removal_delay = 2;
- mfc_context->vui_hrd.i_frame_number = 0;
-
- mfc_context->vui_hrd.i_initial_cpb_removal_delay_length = 24;
- mfc_context->vui_hrd.i_cpb_removal_delay_length = 24;
- mfc_context->vui_hrd.i_dpb_output_delay_length = 24;
- }
-
-}
-
-static void gen8_mfc_vp8_hrd_context_update(struct encode_state *encode_state,
- struct gen6_mfc_context *mfc_context)
-{
- mfc_context->vui_hrd.i_frame_number++;
-}
-
-static void gen8_mfc_vp8_brc_prepare(struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- unsigned int rate_control_mode = encoder_context->rate_control_mode;
-
- if (rate_control_mode == VA_RC_CBR) {
- bool brc_updated;
- assert(encoder_context->codec != CODEC_MPEG2);
-
- brc_updated = encoder_context->brc.need_reset;
-
- /*Programing bit rate control */
- if (brc_updated) {
- gen8_mfc_vp8_brc_init(encode_state, encoder_context);
- }
-
- /*Programing HRD control */
- if (brc_updated)
- gen8_mfc_vp8_hrd_context_init(encode_state, encoder_context);
- }
-}
-
-static void vp8_enc_state_init(struct gen6_mfc_context *mfc_context,
- VAEncPictureParameterBufferVP8 *pic_param,
- VAQMatrixBufferVP8 *q_matrix)
-{
-
- int is_key_frame = !pic_param->pic_flags.bits.frame_type;
- unsigned char *coeff_probs_stream_in_buffer;
-
- mfc_context->vp8_state.frame_header_lf_update_pos = 0;
- mfc_context->vp8_state.frame_header_qindex_update_pos = 0;
- mfc_context->vp8_state.frame_header_token_update_pos = 0;
- mfc_context->vp8_state.frame_header_bin_mv_upate_pos = 0;
-
- mfc_context->vp8_state.prob_skip_false = 255;
- memset(mfc_context->vp8_state.mb_segment_tree_probs, 0, sizeof(mfc_context->vp8_state.mb_segment_tree_probs));
- memcpy(mfc_context->vp8_state.mv_probs, vp8_default_mv_context, sizeof(mfc_context->vp8_state.mv_probs));
-
- if (is_key_frame) {
- memcpy(mfc_context->vp8_state.y_mode_probs, vp8_kf_ymode_prob, sizeof(mfc_context->vp8_state.y_mode_probs));
- memcpy(mfc_context->vp8_state.uv_mode_probs, vp8_kf_uv_mode_prob, sizeof(mfc_context->vp8_state.uv_mode_probs));
-
- mfc_context->vp8_state.prob_intra = 255;
- mfc_context->vp8_state.prob_last = 128;
- mfc_context->vp8_state.prob_gf = 128;
- } else {
- memcpy(mfc_context->vp8_state.y_mode_probs, vp8_ymode_prob, sizeof(mfc_context->vp8_state.y_mode_probs));
- memcpy(mfc_context->vp8_state.uv_mode_probs, vp8_uv_mode_prob, sizeof(mfc_context->vp8_state.uv_mode_probs));
-
- mfc_context->vp8_state.prob_intra = 63;
- mfc_context->vp8_state.prob_last = 128;
- mfc_context->vp8_state.prob_gf = 128;
- }
-
- mfc_context->vp8_state.prob_skip_false = vp8_base_skip_false_prob[q_matrix->quantization_index[0]];
-
- dri_bo_map(mfc_context->vp8_state.coeff_probs_stream_in_bo, 1);
- coeff_probs_stream_in_buffer = (unsigned char *)mfc_context->vp8_state.coeff_probs_stream_in_bo->virtual;
- assert(coeff_probs_stream_in_buffer);
- memcpy(coeff_probs_stream_in_buffer, vp8_default_coef_probs, sizeof(vp8_default_coef_probs));
- dri_bo_unmap(mfc_context->vp8_state.coeff_probs_stream_in_bo);
-}
-
-static void vp8_enc_state_update(struct gen6_mfc_context *mfc_context,
- VAQMatrixBufferVP8 *q_matrix)
-{
-
- /*some other probabilities need to be updated*/
-}
-
-extern void binarize_vp8_frame_header(VAEncSequenceParameterBufferVP8 *seq_param,
- VAEncPictureParameterBufferVP8 *pic_param,
- VAQMatrixBufferVP8 *q_matrix,
- struct gen6_mfc_context *mfc_context,
- struct intel_encoder_context *encoder_context);
-
-static void vp8_enc_frame_header_binarize(struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- struct gen6_mfc_context *mfc_context)
-{
- VAEncSequenceParameterBufferVP8 *seq_param = (VAEncSequenceParameterBufferVP8 *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferVP8 *pic_param = (VAEncPictureParameterBufferVP8 *)encode_state->pic_param_ext->buffer;
- VAQMatrixBufferVP8 *q_matrix = (VAQMatrixBufferVP8 *)encode_state->q_matrix->buffer;
- unsigned char *frame_header_buffer;
-
- binarize_vp8_frame_header(seq_param, pic_param, q_matrix, mfc_context, encoder_context);
-
- dri_bo_map(mfc_context->vp8_state.frame_header_bo, 1);
- frame_header_buffer = (unsigned char *)mfc_context->vp8_state.frame_header_bo->virtual;
- assert(frame_header_buffer);
- memcpy(frame_header_buffer, mfc_context->vp8_state.vp8_frame_header, (mfc_context->vp8_state.frame_header_bit_count + 7) / 8);
- free(mfc_context->vp8_state.vp8_frame_header);
- dri_bo_unmap(mfc_context->vp8_state.frame_header_bo);
-}
-
-#define MAX_VP8_FRAME_HEADER_SIZE 0x2000
-#define VP8_TOKEN_STATISTICS_BUFFER_SIZE 0x2000
-
-static void gen8_mfc_vp8_init(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- dri_bo *bo;
- int i;
- int width_in_mbs = 0;
- int height_in_mbs = 0;
- int slice_batchbuffer_size;
- int is_key_frame, slice_type, rate_control_mode;
-
- VAEncSequenceParameterBufferVP8 *pSequenceParameter = (VAEncSequenceParameterBufferVP8 *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferVP8 *pic_param = (VAEncPictureParameterBufferVP8 *)encode_state->pic_param_ext->buffer;
- VAQMatrixBufferVP8 *q_matrix = (VAQMatrixBufferVP8 *)encode_state->q_matrix->buffer;
-
- width_in_mbs = ALIGN(pSequenceParameter->frame_height, 16) / 16;
- height_in_mbs = ALIGN(pSequenceParameter->frame_height, 16) / 16;
-
- is_key_frame = !pic_param->pic_flags.bits.frame_type;
- slice_type = (is_key_frame ? SLICE_TYPE_I : SLICE_TYPE_P);
- rate_control_mode = encoder_context->rate_control_mode;
-
- if (rate_control_mode == VA_RC_CBR) {
- q_matrix->quantization_index[0] = mfc_context->brc.qp_prime_y[0][slice_type];
- for (i = 1; i < 4; i++)
- q_matrix->quantization_index[i] = q_matrix->quantization_index[0];
- for (i = 0; i < 5; i++)
- q_matrix->quantization_index_delta[i] = 0;
- }
-
- slice_batchbuffer_size = 64 * width_in_mbs * height_in_mbs + 4096 +
- (SLICE_HEADER + SLICE_TAIL);
-
- /*Encode common setup for MFC*/
- dri_bo_unreference(mfc_context->post_deblocking_output.bo);
- mfc_context->post_deblocking_output.bo = NULL;
-
- dri_bo_unreference(mfc_context->pre_deblocking_output.bo);
- mfc_context->pre_deblocking_output.bo = NULL;
-
- dri_bo_unreference(mfc_context->uncompressed_picture_source.bo);
- mfc_context->uncompressed_picture_source.bo = NULL;
-
- dri_bo_unreference(mfc_context->mfc_indirect_pak_bse_object.bo);
- mfc_context->mfc_indirect_pak_bse_object.bo = NULL;
-
- for (i = 0; i < NUM_MFC_DMV_BUFFERS; i++){
- if ( mfc_context->direct_mv_buffers[i].bo != NULL)
- dri_bo_unreference(mfc_context->direct_mv_buffers[i].bo);
- mfc_context->direct_mv_buffers[i].bo = NULL;
- }
-
- for (i = 0; i < MAX_MFC_REFERENCE_SURFACES; i++){
- if (mfc_context->reference_surfaces[i].bo != NULL)
- dri_bo_unreference(mfc_context->reference_surfaces[i].bo);
- mfc_context->reference_surfaces[i].bo = NULL;
- }
-
- dri_bo_unreference(mfc_context->intra_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- width_in_mbs * 64 * 16,
- 64);
- assert(bo);
- mfc_context->intra_row_store_scratch_buffer.bo = bo;
-
- dri_bo_unreference(mfc_context->macroblock_status_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- width_in_mbs * height_in_mbs * 16,
- 64);
- assert(bo);
- mfc_context->macroblock_status_buffer.bo = bo;
-
- dri_bo_unreference(mfc_context->deblocking_filter_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- 16 * width_in_mbs * 64, /* 16 * width_in_mbs * 64 */
- 64);
- assert(bo);
- mfc_context->deblocking_filter_row_store_scratch_buffer.bo = bo;
-
- dri_bo_unreference(mfc_context->bsd_mpc_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- 16 * width_in_mbs * 64, /* 16 * width_in_mbs * 64 */
- 0x1000);
- assert(bo);
- mfc_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
-
- dri_bo_unreference(mfc_context->mfc_batchbuffer_surface.bo);
- mfc_context->mfc_batchbuffer_surface.bo = NULL;
-
- dri_bo_unreference(mfc_context->aux_batchbuffer_surface.bo);
- mfc_context->aux_batchbuffer_surface.bo = NULL;
-
- if (mfc_context->aux_batchbuffer) {
- intel_batchbuffer_free(mfc_context->aux_batchbuffer);
- mfc_context->aux_batchbuffer = NULL;
- }
-
- mfc_context->aux_batchbuffer = intel_batchbuffer_new(&i965->intel, I915_EXEC_BSD, slice_batchbuffer_size);
- mfc_context->aux_batchbuffer_surface.bo = mfc_context->aux_batchbuffer->buffer;
- dri_bo_reference(mfc_context->aux_batchbuffer_surface.bo);
- mfc_context->aux_batchbuffer_surface.pitch = 16;
- mfc_context->aux_batchbuffer_surface.num_blocks = mfc_context->aux_batchbuffer->size / 16;
- mfc_context->aux_batchbuffer_surface.size_block = 16;
-
- gen8_gpe_context_init(ctx, &mfc_context->gpe_context);
-
- /* alloc vp8 encoding buffers*/
- dri_bo_unreference(mfc_context->vp8_state.frame_header_bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- MAX_VP8_FRAME_HEADER_SIZE,
- 0x1000);
- assert(bo);
- mfc_context->vp8_state.frame_header_bo = bo;
-
- mfc_context->vp8_state.intermediate_buffer_max_size = width_in_mbs * height_in_mbs * 384 * 9;
- for(i = 0; i < 8; i++) {
- mfc_context->vp8_state.intermediate_partition_offset[i] = width_in_mbs * height_in_mbs * 384 * (i + 1);
- }
- dri_bo_unreference(mfc_context->vp8_state.intermediate_bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- mfc_context->vp8_state.intermediate_buffer_max_size,
- 0x1000);
- assert(bo);
- mfc_context->vp8_state.intermediate_bo = bo;
-
- dri_bo_unreference(mfc_context->vp8_state.stream_out_bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- width_in_mbs * height_in_mbs * 16,
- 0x1000);
- assert(bo);
- mfc_context->vp8_state.stream_out_bo = bo;
-
- dri_bo_unreference(mfc_context->vp8_state.coeff_probs_stream_in_bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- sizeof(vp8_default_coef_probs),
- 0x1000);
- assert(bo);
- mfc_context->vp8_state.coeff_probs_stream_in_bo = bo;
-
- dri_bo_unreference(mfc_context->vp8_state.token_statistics_bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- VP8_TOKEN_STATISTICS_BUFFER_SIZE,
- 0x1000);
- assert(bo);
- mfc_context->vp8_state.token_statistics_bo = bo;
-
- dri_bo_unreference(mfc_context->vp8_state.mpc_row_store_bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- width_in_mbs * 16 * 64,
- 0x1000);
- assert(bo);
- mfc_context->vp8_state.mpc_row_store_bo = bo;
-
- vp8_enc_state_init(mfc_context, pic_param, q_matrix);
- vp8_enc_frame_header_binarize(encode_state, encoder_context, mfc_context);
-}
-
-static VAStatus
-intel_mfc_vp8_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct object_surface *obj_surface;
- struct object_buffer *obj_buffer;
- struct i965_coded_buffer_segment *coded_buffer_segment;
- VAEncPictureParameterBufferVP8 *pic_param = (VAEncPictureParameterBufferVP8 *)encode_state->pic_param_ext->buffer;
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- dri_bo *bo;
- int i;
-
- /* reconstructed surface */
- obj_surface = encode_state->reconstructed_object;
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC('N','V','1','2'), SUBSAMPLE_YUV420);
- if (pic_param->loop_filter_level[0] == 0) {
- mfc_context->pre_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(mfc_context->pre_deblocking_output.bo);
- } else {
- mfc_context->post_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(mfc_context->post_deblocking_output.bo);
- }
-
- mfc_context->surface_state.width = obj_surface->orig_width;
- mfc_context->surface_state.height = obj_surface->orig_height;
- mfc_context->surface_state.w_pitch = obj_surface->width;
- mfc_context->surface_state.h_pitch = obj_surface->height;
-
- /* set vp8 reference frames */
- for (i = 0; i < ARRAY_ELEMS(mfc_context->reference_surfaces); i++) {
- obj_surface = encode_state->reference_objects[i];
-
- if (obj_surface && obj_surface->bo) {
- mfc_context->reference_surfaces[i].bo = obj_surface->bo;
- dri_bo_reference(mfc_context->reference_surfaces[i].bo);
- } else {
- mfc_context->reference_surfaces[i].bo = NULL;
- }
- }
-
- /* input YUV surface */
- obj_surface = encode_state->input_yuv_object;
- mfc_context->uncompressed_picture_source.bo = obj_surface->bo;
- dri_bo_reference(mfc_context->uncompressed_picture_source.bo);
-
- /* coded buffer */
- obj_buffer = encode_state->coded_buf_object;
- bo = obj_buffer->buffer_store->bo;
- mfc_context->mfc_indirect_pak_bse_object.bo = bo;
- mfc_context->mfc_indirect_pak_bse_object.offset = I965_CODEDBUFFER_HEADER_SIZE;
- mfc_context->mfc_indirect_pak_bse_object.end_offset = ALIGN(obj_buffer->size_element - 0x1000, 0x1000);
- dri_bo_reference(mfc_context->mfc_indirect_pak_bse_object.bo);
-
- dri_bo_unreference(mfc_context->vp8_state.final_frame_bo);
- mfc_context->vp8_state.final_frame_bo = mfc_context->mfc_indirect_pak_bse_object.bo;
- mfc_context->vp8_state.final_frame_byte_offset = I965_CODEDBUFFER_HEADER_SIZE;
- dri_bo_reference(mfc_context->vp8_state.final_frame_bo);
-
- /* set the internal flag to 0 to indicate the coded size is unknown */
- dri_bo_map(bo, 1);
- coded_buffer_segment = (struct i965_coded_buffer_segment *)bo->virtual;
- coded_buffer_segment->mapped = 0;
- coded_buffer_segment->codec = encoder_context->codec;
- dri_bo_unmap(bo);
-
- return vaStatus;
-}
-
-static void
-gen8_mfc_vp8_encoder_cfg(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncSequenceParameterBufferVP8 *seq_param = (VAEncSequenceParameterBufferVP8 *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferVP8 *pic_param = (VAEncPictureParameterBufferVP8 *)encode_state->pic_param_ext->buffer;
-
- BEGIN_BCS_BATCH(batch, 30);
- OUT_BCS_BATCH(batch, MFX_VP8_ENCODER_CFG | (30 - 2)); /* SKL should be 31-2 ? */
-
- OUT_BCS_BATCH(batch,
- 0 << 9 | /* compressed bitstream output disable */
- 1 << 7 | /* disable per-segment delta qindex and loop filter in RC */
- 1 << 6 | /* RC initial pass */
- 0 << 4 | /* upate segment feature date flag */
- 1 << 3 | /* bitstream statistics output enable */
- 1 << 2 | /* token statistics output enable */
- 0 << 1 | /* final bitstream output disable */
- 0 << 0); /*DW1*/
-
- OUT_BCS_BATCH(batch, 0); /*DW2*/
-
- OUT_BCS_BATCH(batch,
- 0xfff << 16 | /* max intra mb bit count limit */
- 0xfff << 0 /* max inter mb bit count limit */
- ); /*DW3*/
-
- OUT_BCS_BATCH(batch, 0); /*DW4*/
- OUT_BCS_BATCH(batch, 0); /*DW5*/
- OUT_BCS_BATCH(batch, 0); /*DW6*/
- OUT_BCS_BATCH(batch, 0); /*DW7*/
- OUT_BCS_BATCH(batch, 0); /*DW8*/
- OUT_BCS_BATCH(batch, 0); /*DW9*/
- OUT_BCS_BATCH(batch, 0); /*DW10*/
- OUT_BCS_BATCH(batch, 0); /*DW11*/
- OUT_BCS_BATCH(batch, 0); /*DW12*/
- OUT_BCS_BATCH(batch, 0); /*DW13*/
- OUT_BCS_BATCH(batch, 0); /*DW14*/
- OUT_BCS_BATCH(batch, 0); /*DW15*/
- OUT_BCS_BATCH(batch, 0); /*DW16*/
- OUT_BCS_BATCH(batch, 0); /*DW17*/
- OUT_BCS_BATCH(batch, 0); /*DW18*/
- OUT_BCS_BATCH(batch, 0); /*DW19*/
- OUT_BCS_BATCH(batch, 0); /*DW20*/
- OUT_BCS_BATCH(batch, 0); /*DW21*/
-
- OUT_BCS_BATCH(batch,
- pic_param->pic_flags.bits.show_frame << 23 |
- pic_param->pic_flags.bits.version << 20
- ); /*DW22*/
-
- OUT_BCS_BATCH(batch,
- (seq_param->frame_height_scale << 14 | seq_param->frame_height) << 16 |
- (seq_param->frame_width_scale << 14 | seq_param->frame_width) << 0
- );
-
- /*DW24*/
- OUT_BCS_BATCH(batch, mfc_context->vp8_state.frame_header_bit_count); /* frame header bit count */
-
- /*DW25*/
- OUT_BCS_BATCH(batch, mfc_context->vp8_state.frame_header_qindex_update_pos); /* frame header bin buffer qindex update pointer */
-
- /*DW26*/
- OUT_BCS_BATCH(batch, mfc_context->vp8_state.frame_header_lf_update_pos); /* frame header bin buffer loop filter update pointer*/
-
- /*DW27*/
- OUT_BCS_BATCH(batch, mfc_context->vp8_state.frame_header_token_update_pos); /* frame header bin buffer token update pointer */
-
- /*DW28*/
- OUT_BCS_BATCH(batch, mfc_context->vp8_state.frame_header_bin_mv_upate_pos); /*frame header bin buffer mv update pointer */
-
- /*DW29*/
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfc_vp8_pic_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncSequenceParameterBufferVP8 *seq_param = (VAEncSequenceParameterBufferVP8 *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferVP8 *pic_param = (VAEncPictureParameterBufferVP8 *)encode_state->pic_param_ext->buffer;
- VAQMatrixBufferVP8 *q_matrix = (VAQMatrixBufferVP8 *)encode_state->q_matrix->buffer;
- int i, j, log2num;
-
- log2num = pic_param->pic_flags.bits.num_token_partitions;
-
- /*update mode and token probs*/
- vp8_enc_state_update(mfc_context, q_matrix);
-
- BEGIN_BCS_BATCH(batch, 38);
- OUT_BCS_BATCH(batch, MFX_VP8_PIC_STATE | (38 - 2));
- OUT_BCS_BATCH(batch,
- (ALIGN(seq_param->frame_height, 16) / 16 - 1) << 16 |
- (ALIGN(seq_param->frame_width, 16) / 16 - 1) << 0);
-
- OUT_BCS_BATCH(batch,
- log2num << 24 |
- pic_param->sharpness_level << 16 |
- pic_param->pic_flags.bits.sign_bias_alternate << 13 |
- pic_param->pic_flags.bits.sign_bias_golden << 12 |
- pic_param->pic_flags.bits.loop_filter_adj_enable << 11 |
- pic_param->pic_flags.bits.mb_no_coeff_skip << 10 |
- pic_param->pic_flags.bits.update_mb_segmentation_map << 9 |
- pic_param->pic_flags.bits.segmentation_enabled << 8 |
- !pic_param->pic_flags.bits.frame_type << 5 | /* 0 indicate an intra frame in VP8 stream/spec($9.1)*/
- (pic_param->pic_flags.bits.version / 2) << 4 |
- (pic_param->pic_flags.bits.version == 3) << 1 | /* full pixel mode for version 3 */
- !!pic_param->pic_flags.bits.version << 0); /* version 0: 6 tap */
-
- OUT_BCS_BATCH(batch,
- pic_param->loop_filter_level[3] << 24 |
- pic_param->loop_filter_level[2] << 16 |
- pic_param->loop_filter_level[1] << 8 |
- pic_param->loop_filter_level[0] << 0);
-
- OUT_BCS_BATCH(batch,
- q_matrix->quantization_index[3] << 24 |
- q_matrix->quantization_index[2] << 16 |
- q_matrix->quantization_index[1] << 8 |
- q_matrix->quantization_index[0] << 0);
-
- OUT_BCS_BATCH(batch,
- ((unsigned short)(q_matrix->quantization_index_delta[4]) >> 15) << 28 |
- abs(q_matrix->quantization_index_delta[4]) << 24 |
- ((unsigned short)(q_matrix->quantization_index_delta[3]) >> 15) << 20 |
- abs(q_matrix->quantization_index_delta[3]) << 16 |
- ((unsigned short)(q_matrix->quantization_index_delta[2]) >> 15) << 12 |
- abs(q_matrix->quantization_index_delta[2]) << 8 |
- ((unsigned short)(q_matrix->quantization_index_delta[1]) >> 15) << 4 |
- abs(q_matrix->quantization_index_delta[1]) << 0);
-
- OUT_BCS_BATCH(batch,
- ((unsigned short)(q_matrix->quantization_index_delta[0]) >> 15) << 4 |
- abs(q_matrix->quantization_index_delta[0]) << 0);
-
- OUT_BCS_BATCH(batch,
- pic_param->clamp_qindex_high << 8 |
- pic_param->clamp_qindex_low << 0);
-
- for (i = 8; i < 19; i++) {
- OUT_BCS_BATCH(batch, 0xffffffff);
- }
-
- OUT_BCS_BATCH(batch,
- mfc_context->vp8_state.mb_segment_tree_probs[2] << 16 |
- mfc_context->vp8_state.mb_segment_tree_probs[1] << 8 |
- mfc_context->vp8_state.mb_segment_tree_probs[0] << 0);
-
- OUT_BCS_BATCH(batch,
- mfc_context->vp8_state.prob_skip_false << 24 |
- mfc_context->vp8_state.prob_intra << 16 |
- mfc_context->vp8_state.prob_last << 8 |
- mfc_context->vp8_state.prob_gf << 0);
-
- OUT_BCS_BATCH(batch,
- mfc_context->vp8_state.y_mode_probs[3] << 24 |
- mfc_context->vp8_state.y_mode_probs[2] << 16 |
- mfc_context->vp8_state.y_mode_probs[1] << 8 |
- mfc_context->vp8_state.y_mode_probs[0] << 0);
-
- OUT_BCS_BATCH(batch,
- mfc_context->vp8_state.uv_mode_probs[2] << 16 |
- mfc_context->vp8_state.uv_mode_probs[1] << 8 |
- mfc_context->vp8_state.uv_mode_probs[0] << 0);
-
- /* MV update value, DW23-DW32 */
- for (i = 0; i < 2; i++) {
- for (j = 0; j < 20; j += 4) {
- OUT_BCS_BATCH(batch,
- (j + 3 == 19 ? 0 : mfc_context->vp8_state.mv_probs[i][j + 3]) << 24 |
- mfc_context->vp8_state.mv_probs[i][j + 2] << 16 |
- mfc_context->vp8_state.mv_probs[i][j + 1] << 8 |
- mfc_context->vp8_state.mv_probs[i][j + 0] << 0);
- }
- }
-
- OUT_BCS_BATCH(batch,
- (pic_param->ref_lf_delta[3] & 0x7f) << 24 |
- (pic_param->ref_lf_delta[2] & 0x7f) << 16 |
- (pic_param->ref_lf_delta[1] & 0x7f) << 8 |
- (pic_param->ref_lf_delta[0] & 0x7f) << 0);
-
- OUT_BCS_BATCH(batch,
- (pic_param->mode_lf_delta[3] & 0x7f) << 24 |
- (pic_param->mode_lf_delta[2] & 0x7f) << 16 |
- (pic_param->mode_lf_delta[1] & 0x7f) << 8 |
- (pic_param->mode_lf_delta[0] & 0x7f) << 0);
-
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-#define OUT_VP8_BUFFER(bo, offset) \
- if (bo) \
- OUT_BCS_RELOC64(batch, \
- bo, \
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, \
- offset); \
- else { \
- OUT_BCS_BATCH(batch, 0); \
- OUT_BCS_BATCH(batch, 0); \
- } \
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
-static void
-gen8_mfc_vp8_bsp_buf_base_addr_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- BEGIN_BCS_BATCH(batch, 32);
- OUT_BCS_BATCH(batch, MFX_VP8_BSP_BUF_BASE_ADDR_STATE | (32 - 2));
-
- OUT_VP8_BUFFER(mfc_context->vp8_state.frame_header_bo, 0);
-
- OUT_VP8_BUFFER(mfc_context->vp8_state.intermediate_bo, 0);
- OUT_BCS_BATCH(batch, mfc_context->vp8_state.intermediate_partition_offset[0]);
- OUT_BCS_BATCH(batch, mfc_context->vp8_state.intermediate_partition_offset[1]);
- OUT_BCS_BATCH(batch, mfc_context->vp8_state.intermediate_partition_offset[2]);
- OUT_BCS_BATCH(batch, mfc_context->vp8_state.intermediate_partition_offset[3]);
- OUT_BCS_BATCH(batch, mfc_context->vp8_state.intermediate_partition_offset[4]);
- OUT_BCS_BATCH(batch, mfc_context->vp8_state.intermediate_partition_offset[5]);
- OUT_BCS_BATCH(batch, mfc_context->vp8_state.intermediate_partition_offset[6]);
- OUT_BCS_BATCH(batch, mfc_context->vp8_state.intermediate_partition_offset[7]);
- OUT_BCS_BATCH(batch, mfc_context->vp8_state.intermediate_buffer_max_size);
-
- OUT_VP8_BUFFER(mfc_context->vp8_state.final_frame_bo, I965_CODEDBUFFER_HEADER_SIZE);
- OUT_BCS_BATCH(batch, 0);
-
- OUT_VP8_BUFFER(mfc_context->vp8_state.stream_out_bo, 0);
- OUT_VP8_BUFFER(mfc_context->vp8_state.coeff_probs_stream_in_bo, 0);
- OUT_VP8_BUFFER(mfc_context->vp8_state.token_statistics_bo, 0);
- OUT_VP8_BUFFER(mfc_context->vp8_state.mpc_row_store_bo, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfc_vp8_pipeline_picture_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
-
- mfc_context->pipe_mode_select(ctx, MFX_FORMAT_VP8, encoder_context);
- mfc_context->set_surface_state(ctx, encoder_context);
- mfc_context->ind_obj_base_addr_state(ctx, encoder_context);
- gen8_mfc_pipe_buf_addr_state(ctx, encoder_context);
- gen8_mfc_bsp_buf_base_addr_state(ctx, encoder_context);
- gen8_mfc_vp8_bsp_buf_base_addr_state(ctx, encode_state, encoder_context);
- gen8_mfc_vp8_pic_state(ctx, encode_state,encoder_context);
- gen8_mfc_vp8_encoder_cfg(ctx, encode_state, encoder_context);
-}
-
-static const unsigned char
-vp8_intra_mb_mode_map[VME_MB_INTRA_MODE_COUNT] = {
- PAK_V_PRED,
- PAK_H_PRED,
- PAK_DC_PRED,
- PAK_TM_PRED
-};
-
-static const unsigned char
-vp8_intra_block_mode_map[VME_B_INTRA_MODE_COUNT] = {
- PAK_B_VE_PRED,
- PAK_B_HE_PRED,
- PAK_B_DC_PRED,
- PAK_B_LD_PRED,
- PAK_B_RD_PRED,
- PAK_B_VR_PRED,
- PAK_B_HD_PRED,
- PAK_B_VL_PRED,
- PAK_B_HU_PRED
-};
-
-static int inline gen8_mfc_vp8_intra_mb_mode_map(unsigned int vme_pred_mode, int is_luma_4x4)
-{
- unsigned int i, pak_pred_mode = 0;
- unsigned int vme_sub_blocks_pred_mode[8], pak_sub_blocks_pred_mode[8]; /* 8 blocks's intra mode */
-
- if (!is_luma_4x4) {
- pak_pred_mode = vp8_intra_mb_mode_map[vme_pred_mode & 0x3];
- } else {
- for (i = 0; i < 8; i++) {
- vme_sub_blocks_pred_mode[i] = ((vme_pred_mode >> (4 * i)) & 0xf);
- assert(vme_sub_blocks_pred_mode[i] < VME_B_INTRA_MODE_COUNT);
- pak_sub_blocks_pred_mode[i] = vp8_intra_block_mode_map[vme_sub_blocks_pred_mode[i]];
- pak_pred_mode |= (pak_sub_blocks_pred_mode[i] << (4 * i));
- }
- }
-
- return pak_pred_mode;
-}
-static void
-gen8_mfc_vp8_pak_object_intra(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- unsigned int *msg,
- int x, int y,
- struct intel_batchbuffer *batch)
-{
- unsigned int vme_intra_mb_mode, vme_chroma_pred_mode;
- unsigned int pak_intra_mb_mode, pak_chroma_pred_mode;
- unsigned int vme_luma_pred_mode[2], pak_luma_pred_mode[2];
-
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- vme_intra_mb_mode = ((msg[0] & 0x30) >> 4);
- assert((vme_intra_mb_mode == 0) || (vme_intra_mb_mode == 2)); //vp8 only support intra_16x16 and intra_4x4
- pak_intra_mb_mode = (vme_intra_mb_mode >> 1);
-
- vme_luma_pred_mode[0] = msg[1];
- vme_luma_pred_mode[1] = msg[2];
- vme_chroma_pred_mode = msg[3] & 0x3;
-
- pak_luma_pred_mode[0] = gen8_mfc_vp8_intra_mb_mode_map(vme_luma_pred_mode[0], pak_intra_mb_mode);
- pak_luma_pred_mode[1] = gen8_mfc_vp8_intra_mb_mode_map(vme_luma_pred_mode[1], pak_intra_mb_mode);
- pak_chroma_pred_mode = gen8_mfc_vp8_intra_mb_mode_map(vme_chroma_pred_mode, 0);
-
- BEGIN_BCS_BATCH(batch, 7);
-
- OUT_BCS_BATCH(batch, MFX_VP8_PAK_OBJECT | (7 - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- (0 << 20) | /* mv format: intra mb */
- (0 << 18) | /* Segment ID */
- (0 << 17) | /* disable coeff clamp */
- (1 << 13) | /* intra mb flag */
- (0 << 11) | /* refer picture select: last frame */
- (pak_intra_mb_mode << 8) | /* mb type */
- (pak_chroma_pred_mode << 4) | /* mb uv mode */
- (0 << 2) | /* skip mb flag: disable */
- 0);
-
- OUT_BCS_BATCH(batch, (y << 16) | x);
- OUT_BCS_BATCH(batch, pak_luma_pred_mode[0]);
- OUT_BCS_BATCH(batch, pak_luma_pred_mode[1]);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfc_vp8_pak_object_inter(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- unsigned int *msg,
- int offset,
- int x, int y,
- struct intel_batchbuffer *batch)
-{
- int i;
-
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- /* only support inter_16x16 now */
- assert((msg[AVC_INTER_MSG_OFFSET] & INTER_MODE_MASK) == INTER_16X16);
- /* for inter_16x16, all 16 MVs should be same,
- * and move mv to the vme mb start address to make sure offset is 64 bytes aligned
- * as vp8 spec, all vp8 luma motion vectors are doulbled stored
- */
- msg[0] = (((msg[AVC_INTER_MV_OFFSET/4] & 0xffff0000) << 1) | ((msg[AVC_INTER_MV_OFFSET/4] << 1) & 0xffff));
-
- for (i = 1; i < 16; i++) {
- msg[i] = msg[0];
- }
-
- BEGIN_BCS_BATCH(batch, 7);
-
- OUT_BCS_BATCH(batch, MFX_VP8_PAK_OBJECT | (7 - 2));
- OUT_BCS_BATCH(batch,
- (0 << 29) | /* enable inline mv data: disable */
- 64);
- OUT_BCS_BATCH(batch,
- offset);
- OUT_BCS_BATCH(batch,
- (4 << 20) | /* mv format: inter */
- (0 << 18) | /* Segment ID */
- (0 << 17) | /* coeff clamp: disable */
- (0 << 13) | /* intra mb flag: inter mb */
- (0 << 11) | /* refer picture select: last frame */
- (0 << 8) | /* mb type: 16x16 */
- (0 << 4) | /* mb uv mode: dc_pred */
- (0 << 2) | /* skip mb flag: disable */
- 0);
-
- OUT_BCS_BATCH(batch, (y << 16) | x);
-
- /*new mv*/
- OUT_BCS_BATCH(batch, 0x8);
- OUT_BCS_BATCH(batch, 0x8);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfc_vp8_pak_pipeline(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- struct intel_batchbuffer *slice_batch)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncSequenceParameterBufferVP8 *seq_param = (VAEncSequenceParameterBufferVP8 *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferVP8 *pic_param = (VAEncPictureParameterBufferVP8 *)encode_state->pic_param_ext->buffer;
- int width_in_mbs = ALIGN(seq_param->frame_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->frame_height, 16) / 16;
- unsigned int *msg = NULL;
- unsigned char *msg_ptr = NULL;
- unsigned int i, offset, is_intra_frame;
-
- is_intra_frame = !pic_param->pic_flags.bits.frame_type;
-
- dri_bo_map(vme_context->vme_output.bo , 1);
- msg_ptr = (unsigned char *)vme_context->vme_output.bo->virtual;
-
- for( i = 0; i < width_in_mbs * height_in_mbs; i++) {
- int h_pos = i % width_in_mbs;
- int v_pos = i / width_in_mbs;
- msg = (unsigned int *) (msg_ptr + i * vme_context->vme_output.size_block);
-
- if (is_intra_frame) {
- gen8_mfc_vp8_pak_object_intra(ctx,
- encoder_context,
- msg,
- h_pos, v_pos,
- slice_batch);
- } else {
- int inter_rdo, intra_rdo;
- inter_rdo = msg[AVC_INTER_RDO_OFFSET] & AVC_RDO_MASK;
- intra_rdo = msg[AVC_INTRA_RDO_OFFSET] & AVC_RDO_MASK;
-
- if (intra_rdo < inter_rdo) {
- gen8_mfc_vp8_pak_object_intra(ctx,
- encoder_context,
- msg,
- h_pos, v_pos,
- slice_batch);
- } else {
- offset = i * vme_context->vme_output.size_block;
- gen8_mfc_vp8_pak_object_inter(ctx,
- encoder_context,
- msg,
- offset,
- h_pos, v_pos,
- slice_batch);
- }
- }
- }
-
- dri_bo_unmap(vme_context->vme_output.bo);
-}
-
-/*
- * A batch buffer for vp8 pak object commands
- */
-static dri_bo *
-gen8_mfc_vp8_software_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch;
- dri_bo *batch_bo;
-
- batch = mfc_context->aux_batchbuffer;
- batch_bo = batch->buffer;
-
- gen8_mfc_vp8_pak_pipeline(ctx, encode_state, encoder_context, batch);
-
- intel_batchbuffer_align(batch, 8);
-
- BEGIN_BCS_BATCH(batch, 2);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, MI_BATCH_BUFFER_END);
- ADVANCE_BCS_BATCH(batch);
-
- dri_bo_reference(batch_bo);
- intel_batchbuffer_free(batch);
- mfc_context->aux_batchbuffer = NULL;
-
- return batch_bo;
-}
-
-static void
-gen8_mfc_vp8_pipeline_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- dri_bo *slice_batch_bo;
-
- slice_batch_bo = gen8_mfc_vp8_software_batchbuffer(ctx, encode_state, encoder_context);
-
- // begin programing
- intel_batchbuffer_start_atomic_bcs(batch, 0x4000);
- intel_batchbuffer_emit_mi_flush(batch);
-
- // picture level programing
- gen8_mfc_vp8_pipeline_picture_programing(ctx, encode_state, encoder_context);
-
- BEGIN_BCS_BATCH(batch, 4);
- OUT_BCS_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8) | (1 << 0));
- OUT_BCS_RELOC64(batch,
- slice_batch_bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-
- // end programing
- intel_batchbuffer_end_atomic(batch);
-
- dri_bo_unreference(slice_batch_bo);
-}
-
-static int gen8_mfc_calc_vp8_coded_buffer_size(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncPictureParameterBufferVP8 *pic_param = (VAEncPictureParameterBufferVP8 *)encode_state->pic_param_ext->buffer;
- unsigned char is_intra_frame = !pic_param->pic_flags.bits.frame_type;
- unsigned int *vp8_encoding_status, i, first_partition_bytes, token_partition_bytes, vp8_coded_bytes;
-
- int partition_num = 1 << pic_param->pic_flags.bits.num_token_partitions;
-
- first_partition_bytes = token_partition_bytes = vp8_coded_bytes = 0;
-
- dri_bo_map(mfc_context->vp8_state.token_statistics_bo, 0);
-
- vp8_encoding_status = (unsigned int *)mfc_context->vp8_state.token_statistics_bo->virtual;
- first_partition_bytes = (vp8_encoding_status[0] + 7) / 8;
-
- for (i = 1; i <= partition_num; i++)
- token_partition_bytes += (vp8_encoding_status[i] + 7) / 8;
-
- /*coded_bytes includes P0~P8 partitions bytes + uncompresse date bytes + partion_size bytes in bitstream + 3 extra bytes */
- /*it seems the last partition size in vp8 status buffer is smaller than reality. so add 3 extra bytes */
- vp8_coded_bytes = first_partition_bytes + token_partition_bytes + (3 + 7 * !!is_intra_frame) + (partition_num - 1) * 3 + 3;
-
- dri_bo_unmap(mfc_context->vp8_state.token_statistics_bo);
-
- dri_bo_map(mfc_context->vp8_state.final_frame_bo, 0);
- struct i965_coded_buffer_segment *coded_buffer_segment = (struct i965_coded_buffer_segment *)(mfc_context->vp8_state.final_frame_bo->virtual);
- coded_buffer_segment->base.size = vp8_coded_bytes;
- dri_bo_unmap(mfc_context->vp8_state.final_frame_bo);
-
- return vp8_coded_bytes;
-}
-
-static VAStatus
-gen8_mfc_vp8_encode_picture(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- unsigned int rate_control_mode = encoder_context->rate_control_mode;
- int current_frame_bits_size;
- int sts;
-
- gen8_mfc_vp8_init(ctx, encode_state, encoder_context);
- intel_mfc_vp8_prepare(ctx, encode_state, encoder_context);
- /*Programing bcs pipeline*/
- gen8_mfc_vp8_pipeline_programing(ctx, encode_state, encoder_context);
- gen8_mfc_run(ctx, encode_state, encoder_context);
- current_frame_bits_size = 8 * gen8_mfc_calc_vp8_coded_buffer_size(ctx, encode_state, encoder_context);
-
- if (rate_control_mode == VA_RC_CBR /*|| rate_control_mode == VA_RC_VBR*/) {
- sts = gen8_mfc_vp8_brc_postpack(encode_state, encoder_context, current_frame_bits_size);
- if (sts == BRC_NO_HRD_VIOLATION) {
- gen8_mfc_vp8_hrd_context_update(encode_state, mfc_context);
- }
- else if (sts == BRC_OVERFLOW_WITH_MIN_QP || sts == BRC_UNDERFLOW_WITH_MAX_QP) {
- if (!mfc_context->hrd.violation_noted) {
- fprintf(stderr, "Unrepairable %s!\n", (sts == BRC_OVERFLOW_WITH_MIN_QP)? "overflow": "underflow");
- mfc_context->hrd.violation_noted = 1;
- }
- return VA_STATUS_SUCCESS;
- }
- }
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen8_mfc_context_destroy(void *context)
-{
- struct gen6_mfc_context *mfc_context = context;
- int i;
-
- dri_bo_unreference(mfc_context->post_deblocking_output.bo);
- mfc_context->post_deblocking_output.bo = NULL;
-
- dri_bo_unreference(mfc_context->pre_deblocking_output.bo);
- mfc_context->pre_deblocking_output.bo = NULL;
-
- dri_bo_unreference(mfc_context->uncompressed_picture_source.bo);
- mfc_context->uncompressed_picture_source.bo = NULL;
-
- dri_bo_unreference(mfc_context->mfc_indirect_pak_bse_object.bo);
- mfc_context->mfc_indirect_pak_bse_object.bo = NULL;
-
- for (i = 0; i < NUM_MFC_DMV_BUFFERS; i++){
- dri_bo_unreference(mfc_context->direct_mv_buffers[i].bo);
- mfc_context->direct_mv_buffers[i].bo = NULL;
- }
-
- dri_bo_unreference(mfc_context->intra_row_store_scratch_buffer.bo);
- mfc_context->intra_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(mfc_context->macroblock_status_buffer.bo);
- mfc_context->macroblock_status_buffer.bo = NULL;
-
- dri_bo_unreference(mfc_context->deblocking_filter_row_store_scratch_buffer.bo);
- mfc_context->deblocking_filter_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(mfc_context->bsd_mpc_row_store_scratch_buffer.bo);
- mfc_context->bsd_mpc_row_store_scratch_buffer.bo = NULL;
-
-
- for (i = 0; i < MAX_MFC_REFERENCE_SURFACES; i++){
- dri_bo_unreference(mfc_context->reference_surfaces[i].bo);
- mfc_context->reference_surfaces[i].bo = NULL;
- }
-
- gen8_gpe_context_destroy(&mfc_context->gpe_context);
-
- dri_bo_unreference(mfc_context->mfc_batchbuffer_surface.bo);
- mfc_context->mfc_batchbuffer_surface.bo = NULL;
-
- dri_bo_unreference(mfc_context->aux_batchbuffer_surface.bo);
- mfc_context->aux_batchbuffer_surface.bo = NULL;
-
- if (mfc_context->aux_batchbuffer)
- intel_batchbuffer_free(mfc_context->aux_batchbuffer);
-
- mfc_context->aux_batchbuffer = NULL;
-
- dri_bo_unreference(mfc_context->vp8_state.coeff_probs_stream_in_bo);
- mfc_context->vp8_state.coeff_probs_stream_in_bo = NULL;
-
- dri_bo_unreference(mfc_context->vp8_state.final_frame_bo);
- mfc_context->vp8_state.final_frame_bo = NULL;
-
- dri_bo_unreference(mfc_context->vp8_state.frame_header_bo);
- mfc_context->vp8_state.frame_header_bo = NULL;
-
- dri_bo_unreference(mfc_context->vp8_state.intermediate_bo);
- mfc_context->vp8_state.intermediate_bo = NULL;
-
- dri_bo_unreference(mfc_context->vp8_state.mpc_row_store_bo);
- mfc_context->vp8_state.mpc_row_store_bo = NULL;
-
- dri_bo_unreference(mfc_context->vp8_state.stream_out_bo);
- mfc_context->vp8_state.stream_out_bo = NULL;
-
- dri_bo_unreference(mfc_context->vp8_state.token_statistics_bo);
- mfc_context->vp8_state.token_statistics_bo = NULL;
-
- free(mfc_context);
-}
-
-static VAStatus gen8_mfc_pipeline(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus vaStatus;
-
- switch (profile) {
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- case VAProfileH264MultiviewHigh:
- case VAProfileH264StereoHigh:
- vaStatus = gen8_mfc_avc_encode_picture(ctx, encode_state, encoder_context);
- break;
-
- /* FIXME: add for other profile */
- case VAProfileMPEG2Simple:
- case VAProfileMPEG2Main:
- vaStatus = gen8_mfc_mpeg2_encode_picture(ctx, encode_state, encoder_context);
- break;
-
- case VAProfileJPEGBaseline:
- jpeg_init_default_qmatrix(ctx, encoder_context);
- vaStatus = gen8_mfc_jpeg_encode_picture(ctx, encode_state, encoder_context);
- break;
-
- case VAProfileVP8Version0_3:
- vaStatus = gen8_mfc_vp8_encode_picture(ctx, encode_state, encoder_context);
- break;
-
- default:
- vaStatus = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
- break;
- }
-
- return vaStatus;
-}
-
-Bool gen8_mfc_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_mfc_context *mfc_context = calloc(1, sizeof(struct gen6_mfc_context));
-
- assert(mfc_context);
- mfc_context->gpe_context.surface_state_binding_table.length = (SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_MEDIA_SURFACES_GEN6;
-
- mfc_context->gpe_context.idrt.entry_size = ALIGN(sizeof(struct gen8_interface_descriptor_data), 64);
- mfc_context->gpe_context.idrt.max_entries = MAX_INTERFACE_DESC_GEN6;
- mfc_context->gpe_context.curbe.length = 32 * 4;
- mfc_context->gpe_context.sampler.entry_size = 0;
- mfc_context->gpe_context.sampler.max_entries = 0;
-
- if (i965->intel.eu_total > 0)
- mfc_context->gpe_context.vfe_state.max_num_threads = 6 * i965->intel.eu_total;
- else
- mfc_context->gpe_context.vfe_state.max_num_threads = 60 - 1;
-
- mfc_context->gpe_context.vfe_state.num_urb_entries = 16;
- mfc_context->gpe_context.vfe_state.gpgpu_mode = 0;
- mfc_context->gpe_context.vfe_state.urb_entry_size = 59 - 1;
- mfc_context->gpe_context.vfe_state.curbe_allocation_size = 37 - 1;
-
- if (IS_GEN9(i965->intel.device_info)) {
- gen8_gpe_load_kernels(ctx,
- &mfc_context->gpe_context,
- gen9_mfc_kernels,
- 1);
- } else {
- gen8_gpe_load_kernels(ctx,
- &mfc_context->gpe_context,
- gen8_mfc_kernels,
- 1);
- }
-
- mfc_context->pipe_mode_select = gen8_mfc_pipe_mode_select;
- mfc_context->set_surface_state = gen8_mfc_surface_state;
- mfc_context->ind_obj_base_addr_state = gen8_mfc_ind_obj_base_addr_state;
- mfc_context->avc_img_state = gen8_mfc_avc_img_state;
- mfc_context->avc_qm_state = gen8_mfc_avc_qm_state;
- mfc_context->avc_fqm_state = gen8_mfc_avc_fqm_state;
- mfc_context->insert_object = gen8_mfc_avc_insert_object;
- mfc_context->buffer_suface_setup = gen8_gpe_buffer_suface_setup;
-
- encoder_context->mfc_context = mfc_context;
- encoder_context->mfc_context_destroy = gen8_mfc_context_destroy;
- encoder_context->mfc_pipeline = gen8_mfc_pipeline;
-
- if (encoder_context->codec == CODEC_VP8)
- encoder_context->mfc_brc_prepare = gen8_mfc_vp8_brc_prepare;
- else
- encoder_context->mfc_brc_prepare = intel_mfc_brc_prepare;
-
- return True;
-}
diff --git a/src/gen8_mfd.c b/src/gen8_mfd.c
deleted file mode 100644
index 07d0968..0000000
--- a/src/gen8_mfd.c
+++ /dev/null
@@ -1,3228 +0,0 @@
-/*
- * Copyright © 2011 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- * Zhao Yakui <yakui.zhao@intel.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <math.h>
-#include <va/va_dec_jpeg.h>
-#include <va/va_dec_vp8.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "i965_decoder_utils.h"
-
-#include "gen7_mfd.h"
-#include "intel_media.h"
-
-#define B0_STEP_REV 2
-#define IS_STEPPING_BPLUS(i965) ((i965->intel.revision) >= B0_STEP_REV)
-
-static const uint32_t zigzag_direct[64] = {
- 0, 1, 8, 16, 9, 2, 3, 10,
- 17, 24, 32, 25, 18, 11, 4, 5,
- 12, 19, 26, 33, 40, 48, 41, 34,
- 27, 20, 13, 6, 7, 14, 21, 28,
- 35, 42, 49, 56, 57, 50, 43, 36,
- 29, 22, 15, 23, 30, 37, 44, 51,
- 58, 59, 52, 45, 38, 31, 39, 46,
- 53, 60, 61, 54, 47, 55, 62, 63
-};
-
-static void
-gen8_mfd_init_avc_surface(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- struct object_surface *obj_surface)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- GenAvcSurface *gen7_avc_surface = obj_surface->private_data;
- int width_in_mbs, height_in_mbs;
-
- obj_surface->free_private_data = gen_free_avc_surface;
- width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
- height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1; /* frame height */
-
- if (!gen7_avc_surface) {
- gen7_avc_surface = calloc(sizeof(GenAvcSurface), 1);
-
- if (!gen7_avc_surface)
- return;
-
- gen7_avc_surface->base.frame_store_id = -1;
- assert((obj_surface->size & 0x3f) == 0);
- obj_surface->private_data = gen7_avc_surface;
- }
-
- /* DMV buffers now relate to the whole frame, irrespective of
- field coding modes */
- if (gen7_avc_surface->dmv_top == NULL) {
- gen7_avc_surface->dmv_top = dri_bo_alloc(i965->intel.bufmgr,
- "direct mv w/r buffer",
- width_in_mbs * height_in_mbs * 128,
- 0x1000);
- assert(gen7_avc_surface->dmv_top);
- }
-}
-
-static void
-gen8_mfd_pipe_mode_select(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- assert(standard_select == MFX_FORMAT_MPEG2 ||
- standard_select == MFX_FORMAT_AVC ||
- standard_select == MFX_FORMAT_VC1 ||
- standard_select == MFX_FORMAT_JPEG ||
- standard_select == MFX_FORMAT_VP8);
-
- BEGIN_BCS_BATCH(batch, 5);
- OUT_BCS_BATCH(batch, MFX_PIPE_MODE_SELECT | (5 - 2));
- OUT_BCS_BATCH(batch,
- (MFX_LONG_MODE << 17) | /* Currently only support long format */
- (MFD_MODE_VLD << 15) | /* VLD mode */
- (0 << 10) | /* disable Stream-Out */
- (gen7_mfd_context->post_deblocking_output.valid << 9) | /* Post Deblocking Output */
- (gen7_mfd_context->pre_deblocking_output.valid << 8) | /* Pre Deblocking Output */
- (0 << 5) | /* not in stitch mode */
- (MFX_CODEC_DECODE << 4) | /* decoding mode */
- (standard_select << 0));
- OUT_BCS_BATCH(batch,
- (0 << 4) | /* terminate if AVC motion and POC table error occurs */
- (0 << 3) | /* terminate if AVC mbdata error occurs */
- (0 << 2) | /* terminate if AVC CABAC/CAVLC decode error occurs */
- (0 << 1) |
- (0 << 0));
- OUT_BCS_BATCH(batch, 0); /* pic status/error report id */
- OUT_BCS_BATCH(batch, 0); /* reserved */
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfd_surface_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- struct object_surface *obj_surface = decode_state->render_object;
- unsigned int y_cb_offset;
- unsigned int y_cr_offset;
- unsigned int surface_format;
-
- assert(obj_surface);
-
- y_cb_offset = obj_surface->y_cb_offset;
- y_cr_offset = obj_surface->y_cr_offset;
-
- surface_format = obj_surface->fourcc == VA_FOURCC_Y800 ?
- MFX_SURFACE_MONOCHROME : MFX_SURFACE_PLANAR_420_8;
-
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- ((obj_surface->orig_height - 1) << 18) |
- ((obj_surface->orig_width - 1) << 4));
- OUT_BCS_BATCH(batch,
- (surface_format << 28) | /* 420 planar YUV surface */
- ((standard_select != MFX_FORMAT_JPEG) << 27) | /* interleave chroma, set to 0 for JPEG */
- (0 << 22) | /* surface object control state, ignored */
- ((obj_surface->width - 1) << 3) | /* pitch */
- (0 << 2) | /* must be 0 */
- (1 << 1) | /* must be tiled */
- (I965_TILEWALK_YMAJOR << 0)); /* tile walk, must be 1 */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* X offset for U(Cb), must be 0 */
- (y_cb_offset << 0)); /* Y offset for U(Cb) */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* X offset for V(Cr), must be 0 */
- (y_cr_offset << 0)); /* Y offset for V(Cr), must be 0 for video codec, non-zoro for JPEG */
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfd_pipe_buf_addr_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int i;
-
- BEGIN_BCS_BATCH(batch, 61);
- OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (61 - 2));
- /* Pre-deblock 1-3 */
- if (gen7_mfd_context->pre_deblocking_output.valid)
- OUT_BCS_RELOC64(batch, gen7_mfd_context->pre_deblocking_output.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else {
- OUT_BCS_BATCH(batch, 0);
-
- OUT_BCS_BATCH(batch, 0);
- }
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* Post-debloing 4-6 */
- if (gen7_mfd_context->post_deblocking_output.valid)
- OUT_BCS_RELOC64(batch, gen7_mfd_context->post_deblocking_output.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else {
- OUT_BCS_BATCH(batch, 0);
-
- OUT_BCS_BATCH(batch, 0);
- }
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* uncompressed-video & stream out 7-12 */
- OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
- OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* intra row-store scratch 13-15 */
- if (gen7_mfd_context->intra_row_store_scratch_buffer.valid)
- OUT_BCS_RELOC64(batch, gen7_mfd_context->intra_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else {
- OUT_BCS_BATCH(batch, 0);
-
- OUT_BCS_BATCH(batch, 0);
- }
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* deblocking-filter-row-store 16-18 */
- if (gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid)
- OUT_BCS_RELOC64(batch, gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 19..50 */
- for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
- struct object_surface *obj_surface;
-
- if (gen7_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID &&
- gen7_mfd_context->reference_surface[i].obj_surface &&
- gen7_mfd_context->reference_surface[i].obj_surface->bo) {
- obj_surface = gen7_mfd_context->reference_surface[i].obj_surface;
-
- OUT_BCS_RELOC64(batch, obj_surface->bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- }
-
- /* reference property 51 */
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* Macroblock status & ILDB 52-57 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the second Macroblock status 58-60 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfd_ind_obj_base_addr_state(VADriverContextP ctx,
- dri_bo *slice_data_bo,
- int standard_select,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
-
- BEGIN_BCS_BATCH(batch, 26);
- OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (26 - 2));
- /* MFX In BS 1-5 */
- OUT_BCS_RELOC64(batch, slice_data_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); /* MFX Indirect Bitstream Object Base Address */
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
- /* Upper bound 4-5 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* MFX indirect MV 6-10 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* MFX IT_COFF 11-15 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* MFX IT_DBLK 16-20 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* MFX PAK_BSE object for encoder 21-25 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfd_bsp_buf_base_addr_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
-
- BEGIN_BCS_BATCH(batch, 10);
- OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (10 - 2));
-
- if (gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid)
- OUT_BCS_RELOC64(batch, gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
- /* MPR Row Store Scratch buffer 4-6 */
- if (gen7_mfd_context->mpr_row_store_scratch_buffer.valid)
- OUT_BCS_RELOC64(batch, gen7_mfd_context->mpr_row_store_scratch_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* Bitplane 7-9 */
- if (gen7_mfd_context->bitplane_read_buffer.valid)
- OUT_BCS_RELOC64(batch, gen7_mfd_context->bitplane_read_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfd_qm_state(VADriverContextP ctx,
- int qm_type,
- unsigned char *qm,
- int qm_length,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- unsigned int qm_buffer[16];
-
- assert(qm_length <= 16 * 4);
- memcpy(qm_buffer, qm, qm_length);
-
- BEGIN_BCS_BATCH(batch, 18);
- OUT_BCS_BATCH(batch, MFX_QM_STATE | (18 - 2));
- OUT_BCS_BATCH(batch, qm_type << 0);
- intel_batchbuffer_data(batch, qm_buffer, 16 * 4);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfd_avc_img_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int img_struct;
- int mbaff_frame_flag;
- unsigned int width_in_mbs, height_in_mbs;
- VAPictureParameterBufferH264 *pic_param;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
- assert(!(pic_param->CurrPic.flags & VA_PICTURE_H264_INVALID));
-
- if (pic_param->CurrPic.flags & VA_PICTURE_H264_TOP_FIELD)
- img_struct = 1;
- else if (pic_param->CurrPic.flags & VA_PICTURE_H264_BOTTOM_FIELD)
- img_struct = 3;
- else
- img_struct = 0;
-
- if ((img_struct & 0x1) == 0x1) {
- assert(pic_param->pic_fields.bits.field_pic_flag == 0x1);
- } else {
- assert(pic_param->pic_fields.bits.field_pic_flag == 0x0);
- }
-
- if (pic_param->seq_fields.bits.frame_mbs_only_flag) { /* a frame containing only frame macroblocks */
- assert(pic_param->seq_fields.bits.mb_adaptive_frame_field_flag == 0);
- assert(pic_param->pic_fields.bits.field_pic_flag == 0);
- } else {
- assert(pic_param->seq_fields.bits.direct_8x8_inference_flag == 1); /* see H.264 spec */
- }
-
- mbaff_frame_flag = (pic_param->seq_fields.bits.mb_adaptive_frame_field_flag &&
- !pic_param->pic_fields.bits.field_pic_flag);
-
- width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
- height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1; /* frame height */
-
- /* MFX unit doesn't support 4:2:2 and 4:4:4 picture */
- assert(pic_param->seq_fields.bits.chroma_format_idc == 0 || /* monochrome picture */
- pic_param->seq_fields.bits.chroma_format_idc == 1); /* 4:2:0 */
- assert(pic_param->seq_fields.bits.residual_colour_transform_flag == 0); /* only available for 4:4:4 */
-
- BEGIN_BCS_BATCH(batch, 17);
- OUT_BCS_BATCH(batch, MFX_AVC_IMG_STATE | (17 - 2));
- OUT_BCS_BATCH(batch,
- (width_in_mbs * height_in_mbs - 1));
- OUT_BCS_BATCH(batch,
- ((height_in_mbs - 1) << 16) |
- ((width_in_mbs - 1) << 0));
- OUT_BCS_BATCH(batch,
- ((pic_param->second_chroma_qp_index_offset & 0x1f) << 24) |
- ((pic_param->chroma_qp_index_offset & 0x1f) << 16) |
- (0 << 14) | /* Max-bit conformance Intra flag ??? FIXME */
- (0 << 13) | /* Max Macroblock size conformance Inter flag ??? FIXME */
- (pic_param->pic_fields.bits.weighted_pred_flag << 12) | /* differ from GEN6 */
- (pic_param->pic_fields.bits.weighted_bipred_idc << 10) |
- (img_struct << 8));
- OUT_BCS_BATCH(batch,
- (pic_param->seq_fields.bits.chroma_format_idc << 10) |
- (pic_param->pic_fields.bits.entropy_coding_mode_flag << 7) |
- ((!pic_param->pic_fields.bits.reference_pic_flag) << 6) |
- (pic_param->pic_fields.bits.constrained_intra_pred_flag << 5) |
- (pic_param->seq_fields.bits.direct_8x8_inference_flag << 4) |
- (pic_param->pic_fields.bits.transform_8x8_mode_flag << 3) |
- (pic_param->seq_fields.bits.frame_mbs_only_flag << 2) |
- (mbaff_frame_flag << 1) |
- (pic_param->pic_fields.bits.field_pic_flag << 0));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfd_avc_qm_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- VAIQMatrixBufferH264 *iq_matrix;
- VAPictureParameterBufferH264 *pic_param;
-
- if (decode_state->iq_matrix && decode_state->iq_matrix->buffer)
- iq_matrix = (VAIQMatrixBufferH264 *)decode_state->iq_matrix->buffer;
- else
- iq_matrix = &gen7_mfd_context->iq_matrix.h264;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
-
- gen8_mfd_qm_state(ctx, MFX_QM_AVC_4X4_INTRA_MATRIX, &iq_matrix->ScalingList4x4[0][0], 3 * 16, gen7_mfd_context);
- gen8_mfd_qm_state(ctx, MFX_QM_AVC_4X4_INTER_MATRIX, &iq_matrix->ScalingList4x4[3][0], 3 * 16, gen7_mfd_context);
-
- if (pic_param->pic_fields.bits.transform_8x8_mode_flag) {
- gen8_mfd_qm_state(ctx, MFX_QM_AVC_8x8_INTRA_MATRIX, &iq_matrix->ScalingList8x8[0][0], 64, gen7_mfd_context);
- gen8_mfd_qm_state(ctx, MFX_QM_AVC_8x8_INTER_MATRIX, &iq_matrix->ScalingList8x8[1][0], 64, gen7_mfd_context);
- }
-}
-
-static inline void
-gen8_mfd_avc_picid_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- gen75_send_avc_picid_state(gen7_mfd_context->base.batch,
- gen7_mfd_context->reference_surface);
-}
-
-static void
-gen8_mfd_avc_directmode_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- struct object_surface *obj_surface;
- GenAvcSurface *gen7_avc_surface;
- VAPictureH264 *va_pic;
- int i;
-
- BEGIN_BCS_BATCH(batch, 71);
- OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (71 - 2));
-
- /* reference surfaces 0..15 */
- for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
- if (gen7_mfd_context->reference_surface[i].surface_id != VA_INVALID_ID &&
- gen7_mfd_context->reference_surface[i].obj_surface &&
- gen7_mfd_context->reference_surface[i].obj_surface->private_data) {
-
- obj_surface = gen7_mfd_context->reference_surface[i].obj_surface;
- gen7_avc_surface = obj_surface->private_data;
-
- OUT_BCS_RELOC64(batch, gen7_avc_surface->dmv_top,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* the current decoding frame/field */
- va_pic = &pic_param->CurrPic;
- obj_surface = decode_state->render_object;
- assert(obj_surface->bo && obj_surface->private_data);
- gen7_avc_surface = obj_surface->private_data;
-
- OUT_BCS_RELOC64(batch, gen7_avc_surface->dmv_top,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* POC List */
- for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
- obj_surface = gen7_mfd_context->reference_surface[i].obj_surface;
-
- if (obj_surface) {
- const VAPictureH264 * const va_pic = avc_find_picture(
- obj_surface->base.id, pic_param->ReferenceFrames,
- ARRAY_ELEMS(pic_param->ReferenceFrames));
-
- assert(va_pic != NULL);
- OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
- OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- va_pic = &pic_param->CurrPic;
- OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
- OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfd_avc_phantom_slice_first(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *next_slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- gen6_mfd_avc_phantom_slice(ctx, pic_param, next_slice_param, gen7_mfd_context->base.batch);
-}
-
-static void
-gen8_mfd_avc_slice_state(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- VASliceParameterBufferH264 *next_slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
- int height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1;
- int slice_hor_pos, slice_ver_pos, next_slice_hor_pos, next_slice_ver_pos;
- int num_ref_idx_l0, num_ref_idx_l1;
- int mbaff_picture = (!pic_param->pic_fields.bits.field_pic_flag &&
- pic_param->seq_fields.bits.mb_adaptive_frame_field_flag);
- int first_mb_in_slice = 0, first_mb_in_next_slice = 0;
- int slice_type;
-
- if (slice_param->slice_type == SLICE_TYPE_I ||
- slice_param->slice_type == SLICE_TYPE_SI) {
- slice_type = SLICE_TYPE_I;
- } else if (slice_param->slice_type == SLICE_TYPE_P ||
- slice_param->slice_type == SLICE_TYPE_SP) {
- slice_type = SLICE_TYPE_P;
- } else {
- assert(slice_param->slice_type == SLICE_TYPE_B);
- slice_type = SLICE_TYPE_B;
- }
-
- if (slice_type == SLICE_TYPE_I) {
- assert(slice_param->num_ref_idx_l0_active_minus1 == 0);
- assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
- num_ref_idx_l0 = 0;
- num_ref_idx_l1 = 0;
- } else if (slice_type == SLICE_TYPE_P) {
- assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
- num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
- num_ref_idx_l1 = 0;
- } else {
- num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
- num_ref_idx_l1 = slice_param->num_ref_idx_l1_active_minus1 + 1;
- }
-
- first_mb_in_slice = slice_param->first_mb_in_slice;
- slice_hor_pos = first_mb_in_slice % width_in_mbs;
- slice_ver_pos = first_mb_in_slice / width_in_mbs;
-
- if (mbaff_picture)
- slice_ver_pos = slice_ver_pos << 1;
- if (next_slice_param) {
- first_mb_in_next_slice = next_slice_param->first_mb_in_slice;
- next_slice_hor_pos = first_mb_in_next_slice % width_in_mbs;
- next_slice_ver_pos = first_mb_in_next_slice / width_in_mbs;
-
- if (mbaff_picture)
- next_slice_ver_pos = next_slice_ver_pos << 1;
- } else {
- next_slice_hor_pos = 0;
- next_slice_ver_pos = height_in_mbs / (1 + !!pic_param->pic_fields.bits.field_pic_flag);
- }
-
- BEGIN_BCS_BATCH(batch, 11); /* FIXME: is it 10??? */
- OUT_BCS_BATCH(batch, MFX_AVC_SLICE_STATE | (11 - 2));
- OUT_BCS_BATCH(batch, slice_type);
- OUT_BCS_BATCH(batch,
- (num_ref_idx_l1 << 24) |
- (num_ref_idx_l0 << 16) |
- (slice_param->chroma_log2_weight_denom << 8) |
- (slice_param->luma_log2_weight_denom << 0));
- OUT_BCS_BATCH(batch,
- (slice_param->direct_spatial_mv_pred_flag << 29) |
- (slice_param->disable_deblocking_filter_idc << 27) |
- (slice_param->cabac_init_idc << 24) |
- ((pic_param->pic_init_qp_minus26 + 26 + slice_param->slice_qp_delta) << 16) |
- ((slice_param->slice_beta_offset_div2 & 0xf) << 8) |
- ((slice_param->slice_alpha_c0_offset_div2 & 0xf) << 0));
- OUT_BCS_BATCH(batch,
- (slice_ver_pos << 24) |
- (slice_hor_pos << 16) |
- (first_mb_in_slice << 0));
- OUT_BCS_BATCH(batch,
- (next_slice_ver_pos << 16) |
- (next_slice_hor_pos << 0));
- OUT_BCS_BATCH(batch,
- (next_slice_param == NULL) << 19); /* last slice flag */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static inline void
-gen8_mfd_avc_ref_idx_state(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- gen6_send_avc_ref_idx_state(
- gen7_mfd_context->base.batch,
- slice_param,
- gen7_mfd_context->reference_surface
- );
-}
-
-static void
-gen8_mfd_avc_weightoffset_state(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int i, j, num_weight_offset_table = 0;
- short weightoffsets[32 * 6];
-
- if ((slice_param->slice_type == SLICE_TYPE_P ||
- slice_param->slice_type == SLICE_TYPE_SP) &&
- (pic_param->pic_fields.bits.weighted_pred_flag == 1)) {
- num_weight_offset_table = 1;
- }
-
- if ((slice_param->slice_type == SLICE_TYPE_B) &&
- (pic_param->pic_fields.bits.weighted_bipred_idc == 1)) {
- num_weight_offset_table = 2;
- }
-
- for (i = 0; i < num_weight_offset_table; i++) {
- BEGIN_BCS_BATCH(batch, 98);
- OUT_BCS_BATCH(batch, MFX_AVC_WEIGHTOFFSET_STATE | (98 - 2));
- OUT_BCS_BATCH(batch, i);
-
- if (i == 0) {
- for (j = 0; j < 32; j++) {
- weightoffsets[j * 6 + 0] = slice_param->luma_weight_l0[j];
- weightoffsets[j * 6 + 1] = slice_param->luma_offset_l0[j];
- weightoffsets[j * 6 + 2] = slice_param->chroma_weight_l0[j][0];
- weightoffsets[j * 6 + 3] = slice_param->chroma_offset_l0[j][0];
- weightoffsets[j * 6 + 4] = slice_param->chroma_weight_l0[j][1];
- weightoffsets[j * 6 + 5] = slice_param->chroma_offset_l0[j][1];
- }
- } else {
- for (j = 0; j < 32; j++) {
- weightoffsets[j * 6 + 0] = slice_param->luma_weight_l1[j];
- weightoffsets[j * 6 + 1] = slice_param->luma_offset_l1[j];
- weightoffsets[j * 6 + 2] = slice_param->chroma_weight_l1[j][0];
- weightoffsets[j * 6 + 3] = slice_param->chroma_offset_l1[j][0];
- weightoffsets[j * 6 + 4] = slice_param->chroma_weight_l1[j][1];
- weightoffsets[j * 6 + 5] = slice_param->chroma_offset_l1[j][1];
- }
- }
-
- intel_batchbuffer_data(batch, weightoffsets, sizeof(weightoffsets));
- ADVANCE_BCS_BATCH(batch);
- }
-}
-
-static void
-gen8_mfd_avc_bsd_object(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- dri_bo *slice_data_bo,
- VASliceParameterBufferH264 *next_slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int slice_data_bit_offset = avc_get_first_mb_bit_offset(slice_data_bo,
- slice_param,
- pic_param->pic_fields.bits.entropy_coding_mode_flag);
-
- /* the input bitsteam format on GEN7 differs from GEN6 */
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFD_AVC_BSD_OBJECT | (6 - 2));
- OUT_BCS_BATCH(batch,
- (slice_param->slice_data_size));
- OUT_BCS_BATCH(batch, slice_param->slice_data_offset);
- OUT_BCS_BATCH(batch,
- (0 << 31) |
- (0 << 14) |
- (0 << 12) |
- (0 << 10) |
- (0 << 8));
- OUT_BCS_BATCH(batch,
- ((slice_data_bit_offset >> 3) << 16) |
- (1 << 7) |
- (0 << 5) |
- (0 << 4) |
- ((next_slice_param == NULL) << 3) | /* LastSlice Flag */
- (slice_data_bit_offset & 0x7));
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static inline void
-gen8_mfd_avc_context_init(
- VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context
-)
-{
- /* Initialize flat scaling lists */
- avc_gen_default_iq_matrix(&gen7_mfd_context->iq_matrix.h264);
-}
-
-static void
-gen8_mfd_avc_decode_init(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- VAPictureParameterBufferH264 *pic_param;
- VASliceParameterBufferH264 *slice_param;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface;
- dri_bo *bo;
- int i, j, enable_avc_ildb = 0;
- unsigned int width_in_mbs, height_in_mbs;
-
- for (j = 0; j < decode_state->num_slice_params && enable_avc_ildb == 0; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j]->buffer;
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
- assert((slice_param->slice_type == SLICE_TYPE_I) ||
- (slice_param->slice_type == SLICE_TYPE_SI) ||
- (slice_param->slice_type == SLICE_TYPE_P) ||
- (slice_param->slice_type == SLICE_TYPE_SP) ||
- (slice_param->slice_type == SLICE_TYPE_B));
-
- if (slice_param->disable_deblocking_filter_idc != 1) {
- enable_avc_ildb = 1;
- break;
- }
-
- slice_param++;
- }
- }
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
- gen75_update_avc_frame_store_index(ctx, decode_state, pic_param,
- gen7_mfd_context->reference_surface);
- width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
- height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1;
- assert(width_in_mbs > 0 && width_in_mbs <= 256); /* 4K */
- assert(height_in_mbs > 0 && height_in_mbs <= 256);
-
- /* Current decoded picture */
- obj_surface = decode_state->render_object;
- if (pic_param->pic_fields.bits.reference_pic_flag)
- obj_surface->flags |= SURFACE_REFERENCED;
- else
- obj_surface->flags &= ~SURFACE_REFERENCED;
-
- avc_ensure_surface_bo(ctx, decode_state, obj_surface, pic_param);
- gen8_mfd_init_avc_surface(ctx, pic_param, obj_surface);
-
- dri_bo_unreference(gen7_mfd_context->post_deblocking_output.bo);
- gen7_mfd_context->post_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen7_mfd_context->post_deblocking_output.bo);
- gen7_mfd_context->post_deblocking_output.valid = enable_avc_ildb;
-
- dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.valid = !enable_avc_ildb;
-
- dri_bo_unreference(gen7_mfd_context->intra_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "intra row store",
- width_in_mbs * 64,
- 0x1000);
- assert(bo);
- gen7_mfd_context->intra_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->intra_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "deblocking filter row store",
- width_in_mbs * 64 * 4,
- 0x1000);
- assert(bo);
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "bsd mpc row store",
- width_in_mbs * 64 * 2,
- 0x1000);
- assert(bo);
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen7_mfd_context->mpr_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "mpr row store",
- width_in_mbs * 64 * 2,
- 0x1000);
- assert(bo);
- gen7_mfd_context->mpr_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->mpr_row_store_scratch_buffer.valid = 1;
-
- gen7_mfd_context->bitplane_read_buffer.valid = 0;
-}
-
-static void
-gen8_mfd_avc_decode_picture(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferH264 *pic_param;
- VASliceParameterBufferH264 *slice_param, *next_slice_param, *next_slice_group_param;
- dri_bo *slice_data_bo;
- int i, j;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
- gen8_mfd_avc_decode_init(ctx, decode_state, gen7_mfd_context);
-
- intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- gen8_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_AVC, gen7_mfd_context);
- gen8_mfd_surface_state(ctx, decode_state, MFX_FORMAT_AVC, gen7_mfd_context);
- gen8_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_AVC, gen7_mfd_context);
- gen8_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_AVC, gen7_mfd_context);
- gen8_mfd_avc_qm_state(ctx, decode_state, gen7_mfd_context);
- gen8_mfd_avc_picid_state(ctx, decode_state, gen7_mfd_context);
- gen8_mfd_avc_img_state(ctx, decode_state, gen7_mfd_context);
-
- for (j = 0; j < decode_state->num_slice_params; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j]->buffer;
- slice_data_bo = decode_state->slice_datas[j]->bo;
- gen8_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_AVC, gen7_mfd_context);
-
- if (j == decode_state->num_slice_params - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j + 1]->buffer;
-
- if (j == 0 && slice_param->first_mb_in_slice)
- gen8_mfd_avc_phantom_slice_first(ctx, pic_param, slice_param, gen7_mfd_context);
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
- assert((slice_param->slice_type == SLICE_TYPE_I) ||
- (slice_param->slice_type == SLICE_TYPE_SI) ||
- (slice_param->slice_type == SLICE_TYPE_P) ||
- (slice_param->slice_type == SLICE_TYPE_SP) ||
- (slice_param->slice_type == SLICE_TYPE_B));
-
- if (i < decode_state->slice_params[j]->num_elements - 1)
- next_slice_param = slice_param + 1;
- else
- next_slice_param = next_slice_group_param;
-
- gen8_mfd_avc_directmode_state(ctx, decode_state, pic_param, slice_param, gen7_mfd_context);
- gen8_mfd_avc_ref_idx_state(ctx, pic_param, slice_param, gen7_mfd_context);
- gen8_mfd_avc_weightoffset_state(ctx, pic_param, slice_param, gen7_mfd_context);
- gen8_mfd_avc_slice_state(ctx, pic_param, slice_param, next_slice_param, gen7_mfd_context);
- gen8_mfd_avc_bsd_object(ctx, pic_param, slice_param, slice_data_bo, next_slice_param, gen7_mfd_context);
- slice_param++;
- }
- }
-
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-}
-
-static void
-gen8_mfd_mpeg2_decode_init(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- VAPictureParameterBufferMPEG2 *pic_param;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface;
- dri_bo *bo;
- unsigned int width_in_mbs;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
- width_in_mbs = ALIGN(pic_param->horizontal_size, 16) / 16;
-
- mpeg2_set_reference_surfaces(
- ctx,
- gen7_mfd_context->reference_surface,
- decode_state,
- pic_param
- );
-
- /* Current decoded picture */
- obj_surface = decode_state->render_object;
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
-
- dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.valid = 1;
-
- dri_bo_unreference(gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "bsd mpc row store",
- width_in_mbs * 96,
- 0x1000);
- assert(bo);
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
-
- gen7_mfd_context->post_deblocking_output.valid = 0;
- gen7_mfd_context->intra_row_store_scratch_buffer.valid = 0;
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 0;
- gen7_mfd_context->mpr_row_store_scratch_buffer.valid = 0;
- gen7_mfd_context->bitplane_read_buffer.valid = 0;
-}
-
-static void
-gen8_mfd_mpeg2_pic_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferMPEG2 *pic_param;
- unsigned int slice_concealment_disable_bit = 0;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
-
- slice_concealment_disable_bit = 1;
-
- BEGIN_BCS_BATCH(batch, 13);
- OUT_BCS_BATCH(batch, MFX_MPEG2_PIC_STATE | (13 - 2));
- OUT_BCS_BATCH(batch,
- (pic_param->f_code & 0xf) << 28 | /* f_code[1][1] */
- ((pic_param->f_code >> 4) & 0xf) << 24 | /* f_code[1][0] */
- ((pic_param->f_code >> 8) & 0xf) << 20 | /* f_code[0][1] */
- ((pic_param->f_code >> 12) & 0xf) << 16 | /* f_code[0][0] */
- pic_param->picture_coding_extension.bits.intra_dc_precision << 14 |
- pic_param->picture_coding_extension.bits.picture_structure << 12 |
- pic_param->picture_coding_extension.bits.top_field_first << 11 |
- pic_param->picture_coding_extension.bits.frame_pred_frame_dct << 10 |
- pic_param->picture_coding_extension.bits.concealment_motion_vectors << 9 |
- pic_param->picture_coding_extension.bits.q_scale_type << 8 |
- pic_param->picture_coding_extension.bits.intra_vlc_format << 7 |
- pic_param->picture_coding_extension.bits.alternate_scan << 6);
- OUT_BCS_BATCH(batch,
- pic_param->picture_coding_type << 9);
- OUT_BCS_BATCH(batch,
- (slice_concealment_disable_bit << 31) |
- ((ALIGN(pic_param->vertical_size, 16) / 16) - 1) << 16 |
- ((ALIGN(pic_param->horizontal_size, 16) / 16) - 1));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfd_mpeg2_qm_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- VAIQMatrixBufferMPEG2 * const gen_iq_matrix = &gen7_mfd_context->iq_matrix.mpeg2;
- int i, j;
-
- /* Update internal QM state */
- if (decode_state->iq_matrix && decode_state->iq_matrix->buffer) {
- VAIQMatrixBufferMPEG2 * const iq_matrix =
- (VAIQMatrixBufferMPEG2 *)decode_state->iq_matrix->buffer;
-
- if (gen_iq_matrix->load_intra_quantiser_matrix == -1 ||
- iq_matrix->load_intra_quantiser_matrix) {
- gen_iq_matrix->load_intra_quantiser_matrix =
- iq_matrix->load_intra_quantiser_matrix;
- if (iq_matrix->load_intra_quantiser_matrix) {
- for (j = 0; j < 64; j++)
- gen_iq_matrix->intra_quantiser_matrix[zigzag_direct[j]] =
- iq_matrix->intra_quantiser_matrix[j];
- }
- }
-
- if (gen_iq_matrix->load_non_intra_quantiser_matrix == -1 ||
- iq_matrix->load_non_intra_quantiser_matrix) {
- gen_iq_matrix->load_non_intra_quantiser_matrix =
- iq_matrix->load_non_intra_quantiser_matrix;
- if (iq_matrix->load_non_intra_quantiser_matrix) {
- for (j = 0; j < 64; j++)
- gen_iq_matrix->non_intra_quantiser_matrix[zigzag_direct[j]] =
- iq_matrix->non_intra_quantiser_matrix[j];
- }
- }
- }
-
- /* Commit QM state to HW */
- for (i = 0; i < 2; i++) {
- unsigned char *qm = NULL;
- int qm_type;
-
- if (i == 0) {
- if (gen_iq_matrix->load_intra_quantiser_matrix) {
- qm = gen_iq_matrix->intra_quantiser_matrix;
- qm_type = MFX_QM_MPEG_INTRA_QUANTIZER_MATRIX;
- }
- } else {
- if (gen_iq_matrix->load_non_intra_quantiser_matrix) {
- qm = gen_iq_matrix->non_intra_quantiser_matrix;
- qm_type = MFX_QM_MPEG_NON_INTRA_QUANTIZER_MATRIX;
- }
- }
-
- if (!qm)
- continue;
-
- gen8_mfd_qm_state(ctx, qm_type, qm, 64, gen7_mfd_context);
- }
-}
-
-static void
-gen8_mfd_mpeg2_bsd_object(VADriverContextP ctx,
- VAPictureParameterBufferMPEG2 *pic_param,
- VASliceParameterBufferMPEG2 *slice_param,
- VASliceParameterBufferMPEG2 *next_slice_param,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- unsigned int width_in_mbs = ALIGN(pic_param->horizontal_size, 16) / 16;
- int mb_count, vpos0, hpos0, vpos1, hpos1, is_field_pic_wa, is_field_pic = 0;
-
- if (pic_param->picture_coding_extension.bits.picture_structure == MPEG_TOP_FIELD ||
- pic_param->picture_coding_extension.bits.picture_structure == MPEG_BOTTOM_FIELD)
- is_field_pic = 1;
- is_field_pic_wa = is_field_pic &&
- gen7_mfd_context->wa_mpeg2_slice_vertical_position > 0;
-
- vpos0 = slice_param->slice_vertical_position / (1 + is_field_pic_wa);
- hpos0 = slice_param->slice_horizontal_position;
-
- if (next_slice_param == NULL) {
- vpos1 = ALIGN(pic_param->vertical_size, 16) / 16 / (1 + is_field_pic);
- hpos1 = 0;
- } else {
- vpos1 = next_slice_param->slice_vertical_position / (1 + is_field_pic_wa);
- hpos1 = next_slice_param->slice_horizontal_position;
- }
-
- mb_count = (vpos1 * width_in_mbs + hpos1) - (vpos0 * width_in_mbs + hpos0);
-
- BEGIN_BCS_BATCH(batch, 5);
- OUT_BCS_BATCH(batch, MFD_MPEG2_BSD_OBJECT | (5 - 2));
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_size - (slice_param->macroblock_offset >> 3));
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_offset + (slice_param->macroblock_offset >> 3));
- OUT_BCS_BATCH(batch,
- hpos0 << 24 |
- vpos0 << 16 |
- mb_count << 8 |
- (next_slice_param == NULL) << 5 |
- (next_slice_param == NULL) << 3 |
- (slice_param->macroblock_offset & 0x7));
- OUT_BCS_BATCH(batch,
- (slice_param->quantiser_scale_code << 24) |
- (vpos1 << 8 | hpos1));
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfd_mpeg2_decode_picture(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferMPEG2 *pic_param;
- VASliceParameterBufferMPEG2 *slice_param, *next_slice_param, *next_slice_group_param;
- dri_bo *slice_data_bo;
- int i, j;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
-
- gen8_mfd_mpeg2_decode_init(ctx, decode_state, gen7_mfd_context);
- intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- gen8_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_MPEG2, gen7_mfd_context);
- gen8_mfd_surface_state(ctx, decode_state, MFX_FORMAT_MPEG2, gen7_mfd_context);
- gen8_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_MPEG2, gen7_mfd_context);
- gen8_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_MPEG2, gen7_mfd_context);
- gen8_mfd_mpeg2_pic_state(ctx, decode_state, gen7_mfd_context);
- gen8_mfd_mpeg2_qm_state(ctx, decode_state, gen7_mfd_context);
-
- if (gen7_mfd_context->wa_mpeg2_slice_vertical_position < 0)
- gen7_mfd_context->wa_mpeg2_slice_vertical_position =
- mpeg2_wa_slice_vertical_position(decode_state, pic_param);
-
- for (j = 0; j < decode_state->num_slice_params; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferMPEG2 *)decode_state->slice_params[j]->buffer;
- slice_data_bo = decode_state->slice_datas[j]->bo;
- gen8_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_MPEG2, gen7_mfd_context);
-
- if (j == decode_state->num_slice_params - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VASliceParameterBufferMPEG2 *)decode_state->slice_params[j + 1]->buffer;
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
-
- if (i < decode_state->slice_params[j]->num_elements - 1)
- next_slice_param = slice_param + 1;
- else
- next_slice_param = next_slice_group_param;
-
- gen8_mfd_mpeg2_bsd_object(ctx, pic_param, slice_param, next_slice_param, gen7_mfd_context);
- slice_param++;
- }
- }
-
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-}
-
-static const int va_to_gen7_vc1_pic_type[5] = {
- GEN7_VC1_I_PICTURE,
- GEN7_VC1_P_PICTURE,
- GEN7_VC1_B_PICTURE,
- GEN7_VC1_BI_PICTURE,
- GEN7_VC1_P_PICTURE,
-};
-
-static const int va_to_gen7_vc1_mv[4] = {
- 1, /* 1-MV */
- 2, /* 1-MV half-pel */
- 3, /* 1-MV half-pef bilinear */
- 0, /* Mixed MV */
-};
-
-static const int b_picture_scale_factor[21] = {
- 128, 85, 170, 64, 192,
- 51, 102, 153, 204, 43,
- 215, 37, 74, 111, 148,
- 185, 222, 32, 96, 160,
- 224,
-};
-
-static const int va_to_gen7_vc1_condover[3] = {
- 0,
- 2,
- 3
-};
-
-static const int va_to_gen7_vc1_profile[4] = {
- GEN7_VC1_SIMPLE_PROFILE,
- GEN7_VC1_MAIN_PROFILE,
- GEN7_VC1_RESERVED_PROFILE,
- GEN7_VC1_ADVANCED_PROFILE
-};
-
-static void
-gen8_mfd_free_vc1_surface(void **data)
-{
- struct gen7_vc1_surface *gen7_vc1_surface = *data;
-
- if (!gen7_vc1_surface)
- return;
-
- dri_bo_unreference(gen7_vc1_surface->dmv);
- free(gen7_vc1_surface);
- *data = NULL;
-}
-
-static void
-gen8_mfd_init_vc1_surface(VADriverContextP ctx,
- VAPictureParameterBufferVC1 *pic_param,
- struct object_surface *obj_surface)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen7_vc1_surface *gen7_vc1_surface = obj_surface->private_data;
- int width_in_mbs = ALIGN(pic_param->coded_width, 16) / 16;
- int height_in_mbs = ALIGN(pic_param->coded_height, 16) / 16;
-
- obj_surface->free_private_data = gen8_mfd_free_vc1_surface;
-
- if (!gen7_vc1_surface) {
- gen7_vc1_surface = calloc(sizeof(struct gen7_vc1_surface), 1);
-
- if (!gen7_vc1_surface)
- return;
-
- assert((obj_surface->size & 0x3f) == 0);
- obj_surface->private_data = gen7_vc1_surface;
- }
-
- gen7_vc1_surface->picture_type = pic_param->picture_fields.bits.picture_type;
-
- if (gen7_vc1_surface->dmv == NULL) {
- gen7_vc1_surface->dmv = dri_bo_alloc(i965->intel.bufmgr,
- "direct mv w/r buffer",
- width_in_mbs * height_in_mbs * 64,
- 0x1000);
- }
-}
-
-static void
-gen8_mfd_vc1_decode_init(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- VAPictureParameterBufferVC1 *pic_param;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface;
- dri_bo *bo;
- int width_in_mbs;
- int picture_type;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
- width_in_mbs = ALIGN(pic_param->coded_width, 16) / 16;
- picture_type = pic_param->picture_fields.bits.picture_type;
-
- intel_update_vc1_frame_store_index(ctx,
- decode_state,
- pic_param,
- gen7_mfd_context->reference_surface);
-
- /* Current decoded picture */
- obj_surface = decode_state->render_object;
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
- gen8_mfd_init_vc1_surface(ctx, pic_param, obj_surface);
-
- dri_bo_unreference(gen7_mfd_context->post_deblocking_output.bo);
- gen7_mfd_context->post_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen7_mfd_context->post_deblocking_output.bo);
- gen7_mfd_context->post_deblocking_output.valid = pic_param->entrypoint_fields.bits.loopfilter;
-
- dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.valid = !pic_param->entrypoint_fields.bits.loopfilter;
-
- dri_bo_unreference(gen7_mfd_context->intra_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "intra row store",
- width_in_mbs * 64,
- 0x1000);
- assert(bo);
- gen7_mfd_context->intra_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->intra_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "deblocking filter row store",
- width_in_mbs * 7 * 64,
- 0x1000);
- assert(bo);
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "bsd mpc row store",
- width_in_mbs * 96,
- 0x1000);
- assert(bo);
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
-
- gen7_mfd_context->mpr_row_store_scratch_buffer.valid = 0;
-
- gen7_mfd_context->bitplane_read_buffer.valid = !!pic_param->bitplane_present.value;
- dri_bo_unreference(gen7_mfd_context->bitplane_read_buffer.bo);
-
- if (gen7_mfd_context->bitplane_read_buffer.valid) {
- int width_in_mbs = ALIGN(pic_param->coded_width, 16) / 16;
- int height_in_mbs = ALIGN(pic_param->coded_height, 16) / 16;
- int bitplane_width = ALIGN(width_in_mbs, 2) / 2;
- int src_w, src_h;
- uint8_t *src = NULL, *dst = NULL;
-
- assert(decode_state->bit_plane->buffer);
- src = decode_state->bit_plane->buffer;
-
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "VC-1 Bitplane",
- bitplane_width * height_in_mbs,
- 0x1000);
- assert(bo);
- gen7_mfd_context->bitplane_read_buffer.bo = bo;
-
- dri_bo_map(bo, True);
- assert(bo->virtual);
- dst = bo->virtual;
-
- for (src_h = 0; src_h < height_in_mbs; src_h++) {
- for(src_w = 0; src_w < width_in_mbs; src_w++) {
- int src_index, dst_index;
- int src_shift;
- uint8_t src_value;
-
- src_index = (src_h * width_in_mbs + src_w) / 2;
- src_shift = !((src_h * width_in_mbs + src_w) & 1) * 4;
- src_value = ((src[src_index] >> src_shift) & 0xf);
-
- if (picture_type == GEN7_VC1_SKIPPED_PICTURE){
- src_value |= 0x2;
- }
-
- dst_index = src_w / 2;
- dst[dst_index] = ((dst[dst_index] >> 4) | (src_value << 4));
- }
-
- if (src_w & 1)
- dst[src_w / 2] >>= 4;
-
- dst += bitplane_width;
- }
-
- dri_bo_unmap(bo);
- } else
- gen7_mfd_context->bitplane_read_buffer.bo = NULL;
-}
-
-static void
-gen8_mfd_vc1_pic_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferVC1 *pic_param;
- struct object_surface *obj_surface;
- int alt_pquant_config = 0, alt_pquant_edge_mask = 0, alt_pq;
- int dquant, dquantfrm, dqprofile, dqdbedge, dqsbedge, dqbilevel;
- int unified_mv_mode;
- int ref_field_pic_polarity = 0;
- int scale_factor = 0;
- int trans_ac_y = 0;
- int dmv_surface_valid = 0;
- int brfd = 0;
- int fcm = 0;
- int picture_type;
- int profile;
- int overlap;
- int interpolation_mode = 0;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
-
- profile = va_to_gen7_vc1_profile[pic_param->sequence_fields.bits.profile];
- dquant = pic_param->pic_quantizer_fields.bits.dquant;
- dquantfrm = pic_param->pic_quantizer_fields.bits.dq_frame;
- dqprofile = pic_param->pic_quantizer_fields.bits.dq_profile;
- dqdbedge = pic_param->pic_quantizer_fields.bits.dq_db_edge;
- dqsbedge = pic_param->pic_quantizer_fields.bits.dq_sb_edge;
- dqbilevel = pic_param->pic_quantizer_fields.bits.dq_binary_level;
- alt_pq = pic_param->pic_quantizer_fields.bits.alt_pic_quantizer;
-
- if (dquant == 0) {
- alt_pquant_config = 0;
- alt_pquant_edge_mask = 0;
- } else if (dquant == 2) {
- alt_pquant_config = 1;
- alt_pquant_edge_mask = 0xf;
- } else {
- assert(dquant == 1);
- if (dquantfrm == 0) {
- alt_pquant_config = 0;
- alt_pquant_edge_mask = 0;
- alt_pq = 0;
- } else {
- assert(dquantfrm == 1);
- alt_pquant_config = 1;
-
- switch (dqprofile) {
- case 3:
- if (dqbilevel == 0) {
- alt_pquant_config = 2;
- alt_pquant_edge_mask = 0;
- } else {
- assert(dqbilevel == 1);
- alt_pquant_config = 3;
- alt_pquant_edge_mask = 0;
- }
- break;
-
- case 0:
- alt_pquant_edge_mask = 0xf;
- break;
-
- case 1:
- if (dqdbedge == 3)
- alt_pquant_edge_mask = 0x9;
- else
- alt_pquant_edge_mask = (0x3 << dqdbedge);
-
- break;
-
- case 2:
- alt_pquant_edge_mask = (0x1 << dqsbedge);
- break;
-
- default:
- assert(0);
- }
- }
- }
-
- if (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation) {
- assert(pic_param->mv_fields.bits.mv_mode2 < 4);
- unified_mv_mode = va_to_gen7_vc1_mv[pic_param->mv_fields.bits.mv_mode2];
- } else {
- assert(pic_param->mv_fields.bits.mv_mode < 4);
- unified_mv_mode = va_to_gen7_vc1_mv[pic_param->mv_fields.bits.mv_mode];
- }
-
- if (pic_param->sequence_fields.bits.interlace == 1 &&
- pic_param->picture_fields.bits.frame_coding_mode != 0) { /* frame-interlace or field-interlace */
- /* FIXME: calculate reference field picture polarity */
- assert(0);
- ref_field_pic_polarity = 0;
- }
-
- if (pic_param->b_picture_fraction < 21)
- scale_factor = b_picture_scale_factor[pic_param->b_picture_fraction];
-
- picture_type = va_to_gen7_vc1_pic_type[pic_param->picture_fields.bits.picture_type];
-
- if (profile == GEN7_VC1_ADVANCED_PROFILE &&
- picture_type == GEN7_VC1_I_PICTURE)
- picture_type = GEN7_VC1_BI_PICTURE;
-
- if (picture_type == GEN7_VC1_I_PICTURE || picture_type == GEN7_VC1_BI_PICTURE) /* I picture */
- trans_ac_y = pic_param->transform_fields.bits.transform_ac_codingset_idx2;
- else {
- trans_ac_y = pic_param->transform_fields.bits.transform_ac_codingset_idx1;
-
- /*
- * 8.3.6.2.1 Transform Type Selection
- * If variable-sized transform coding is not enabled,
- * then the 8x8 transform shall be used for all blocks.
- * it is also MFX_VC1_PIC_STATE requirement.
- */
- if (pic_param->transform_fields.bits.variable_sized_transform_flag == 0) {
- pic_param->transform_fields.bits.mb_level_transform_type_flag = 1;
- pic_param->transform_fields.bits.frame_level_transform_type = 0;
- }
- }
-
- if (picture_type == GEN7_VC1_B_PICTURE) {
- struct gen7_vc1_surface *gen7_vc1_surface = NULL;
-
- obj_surface = decode_state->reference_objects[1];
-
- if (obj_surface)
- gen7_vc1_surface = obj_surface->private_data;
-
- if (!gen7_vc1_surface ||
- (va_to_gen7_vc1_pic_type[gen7_vc1_surface->picture_type] == GEN7_VC1_I_PICTURE ||
- va_to_gen7_vc1_pic_type[gen7_vc1_surface->picture_type] == GEN7_VC1_BI_PICTURE))
- dmv_surface_valid = 0;
- else
- dmv_surface_valid = 1;
- }
-
- assert(pic_param->picture_fields.bits.frame_coding_mode < 3);
-
- if (pic_param->picture_fields.bits.frame_coding_mode < 2)
- fcm = pic_param->picture_fields.bits.frame_coding_mode;
- else {
- if (pic_param->picture_fields.bits.top_field_first)
- fcm = 2;
- else
- fcm = 3;
- }
-
- if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_B_PICTURE) { /* B picture */
- brfd = pic_param->reference_fields.bits.reference_distance;
- brfd = (scale_factor * brfd) >> 8;
- brfd = pic_param->reference_fields.bits.reference_distance - brfd - 1;
-
- if (brfd < 0)
- brfd = 0;
- }
-
- overlap = pic_param->sequence_fields.bits.overlap;
-
- if (overlap) {
- overlap = 0;
- if (profile != GEN7_VC1_ADVANCED_PROFILE){
- if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9 &&
- pic_param->picture_fields.bits.picture_type != GEN7_VC1_B_PICTURE) {
- overlap = 1;
- }
- }else {
- if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_P_PICTURE &&
- pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
- overlap = 1;
- }
- if (pic_param->picture_fields.bits.picture_type == GEN7_VC1_I_PICTURE ||
- pic_param->picture_fields.bits.picture_type == GEN7_VC1_BI_PICTURE){
- if (pic_param->pic_quantizer_fields.bits.pic_quantizer_scale >= 9){
- overlap = 1;
- } else if (va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 2 ||
- va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] == 3) {
- overlap = 1;
- }
- }
- }
- }
-
- assert(pic_param->conditional_overlap_flag < 3);
- assert(pic_param->mv_fields.bits.mv_table < 4); /* FIXME: interlace mode */
-
- if (pic_param->mv_fields.bits.mv_mode == VAMvMode1MvHalfPelBilinear ||
- (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation &&
- pic_param->mv_fields.bits.mv_mode2 == VAMvMode1MvHalfPelBilinear))
- interpolation_mode = 9; /* Half-pel bilinear */
- else if (pic_param->mv_fields.bits.mv_mode == VAMvMode1MvHalfPel ||
- (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation &&
- pic_param->mv_fields.bits.mv_mode2 == VAMvMode1MvHalfPel))
- interpolation_mode = 1; /* Half-pel bicubic */
- else
- interpolation_mode = 0; /* Quarter-pel bicubic */
-
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFD_VC1_LONG_PIC_STATE | (6 - 2));
- OUT_BCS_BATCH(batch,
- (((ALIGN(pic_param->coded_height, 16) / 16) - 1) << 16) |
- ((ALIGN(pic_param->coded_width, 16) / 16) - 1));
- OUT_BCS_BATCH(batch,
- ((ALIGN(pic_param->coded_width, 16) / 16 + 1) / 2 - 1) << 24 |
- dmv_surface_valid << 15 |
- (pic_param->pic_quantizer_fields.bits.quantizer == 0) << 14 | /* implicit quantizer */
- pic_param->rounding_control << 13 |
- pic_param->sequence_fields.bits.syncmarker << 12 |
- interpolation_mode << 8 |
- 0 << 7 | /* FIXME: scale up or down ??? */
- pic_param->range_reduction_frame << 6 |
- pic_param->entrypoint_fields.bits.loopfilter << 5 |
- overlap << 4 |
- !pic_param->picture_fields.bits.is_first_field << 3 |
- (pic_param->sequence_fields.bits.profile == 3) << 0);
- OUT_BCS_BATCH(batch,
- va_to_gen7_vc1_condover[pic_param->conditional_overlap_flag] << 29 |
- picture_type << 26 |
- fcm << 24 |
- alt_pq << 16 |
- pic_param->pic_quantizer_fields.bits.pic_quantizer_scale << 8 |
- scale_factor << 0);
- OUT_BCS_BATCH(batch,
- unified_mv_mode << 28 |
- pic_param->mv_fields.bits.four_mv_switch << 27 |
- pic_param->fast_uvmc_flag << 26 |
- ref_field_pic_polarity << 25 |
- pic_param->reference_fields.bits.num_reference_pictures << 24 |
- pic_param->reference_fields.bits.reference_distance << 20 |
- pic_param->reference_fields.bits.reference_distance << 16 | /* FIXME: ??? */
- pic_param->mv_fields.bits.extended_dmv_range << 10 |
- pic_param->mv_fields.bits.extended_mv_range << 8 |
- alt_pquant_edge_mask << 4 |
- alt_pquant_config << 2 |
- pic_param->pic_quantizer_fields.bits.half_qp << 1 |
- pic_param->pic_quantizer_fields.bits.pic_quantizer_type << 0);
- OUT_BCS_BATCH(batch,
- !!pic_param->bitplane_present.value << 31 |
- !pic_param->bitplane_present.flags.bp_forward_mb << 30 |
- !pic_param->bitplane_present.flags.bp_mv_type_mb << 29 |
- !pic_param->bitplane_present.flags.bp_skip_mb << 28 |
- !pic_param->bitplane_present.flags.bp_direct_mb << 27 |
- !pic_param->bitplane_present.flags.bp_overflags << 26 |
- !pic_param->bitplane_present.flags.bp_ac_pred << 25 |
- !pic_param->bitplane_present.flags.bp_field_tx << 24 |
- pic_param->mv_fields.bits.mv_table << 20 |
- pic_param->mv_fields.bits.four_mv_block_pattern_table << 18 |
- pic_param->mv_fields.bits.two_mv_block_pattern_table << 16 |
- pic_param->transform_fields.bits.frame_level_transform_type << 12 |
- pic_param->transform_fields.bits.mb_level_transform_type_flag << 11 |
- pic_param->mb_mode_table << 8 |
- trans_ac_y << 6 |
- pic_param->transform_fields.bits.transform_ac_codingset_idx1 << 4 |
- pic_param->transform_fields.bits.intra_transform_dc_table << 3 |
- pic_param->cbp_table << 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfd_vc1_pred_pipe_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferVC1 *pic_param;
- int intensitycomp_single;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
- intensitycomp_single = (pic_param->mv_fields.bits.mv_mode == VAMvModeIntensityCompensation);
-
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFX_VC1_PRED_PIPE_STATE | (6 - 2));
- OUT_BCS_BATCH(batch,
- 0 << 14 | /* FIXME: double ??? */
- 0 << 12 |
- intensitycomp_single << 10 |
- intensitycomp_single << 8 |
- 0 << 4 | /* FIXME: interlace mode */
- 0);
- OUT_BCS_BATCH(batch,
- pic_param->luma_shift << 16 |
- pic_param->luma_scale << 0); /* FIXME: Luma Scaling */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfd_vc1_directmode_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- struct object_surface *obj_surface;
- dri_bo *dmv_read_buffer = NULL, *dmv_write_buffer = NULL;
-
- obj_surface = decode_state->render_object;
-
- if (obj_surface && obj_surface->private_data) {
- dmv_write_buffer = ((struct gen7_vc1_surface *)(obj_surface->private_data))->dmv;
- }
-
- obj_surface = decode_state->reference_objects[1];
-
- if (obj_surface && obj_surface->private_data) {
- dmv_read_buffer = ((struct gen7_vc1_surface *)(obj_surface->private_data))->dmv;
- }
-
- BEGIN_BCS_BATCH(batch, 7);
- OUT_BCS_BATCH(batch, MFX_VC1_DIRECTMODE_STATE | (7 - 2));
-
- if (dmv_write_buffer)
- OUT_BCS_RELOC64(batch, dmv_write_buffer,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- if (dmv_read_buffer)
- OUT_BCS_RELOC64(batch, dmv_read_buffer,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static int
-gen8_mfd_vc1_get_macroblock_bit_offset(uint8_t *buf, int in_slice_data_bit_offset, int profile)
-{
- int out_slice_data_bit_offset;
- int slice_header_size = in_slice_data_bit_offset / 8;
- int i, j;
-
- if (profile != 3)
- out_slice_data_bit_offset = in_slice_data_bit_offset;
- else {
- for (i = 0, j = 0; i < slice_header_size; i++, j++) {
- if (!buf[j] && !buf[j + 1] && buf[j + 2] == 3 && buf[j + 3] < 4) {
- i++, j += 2;
- }
- }
-
- out_slice_data_bit_offset = 8 * j + in_slice_data_bit_offset % 8;
- }
-
- return out_slice_data_bit_offset;
-}
-
-static void
-gen8_mfd_vc1_bsd_object(VADriverContextP ctx,
- VAPictureParameterBufferVC1 *pic_param,
- VASliceParameterBufferVC1 *slice_param,
- VASliceParameterBufferVC1 *next_slice_param,
- dri_bo *slice_data_bo,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int next_slice_start_vert_pos;
- int macroblock_offset;
- uint8_t *slice_data = NULL;
-
- dri_bo_map(slice_data_bo, 0);
- slice_data = (uint8_t *)(slice_data_bo->virtual + slice_param->slice_data_offset);
- macroblock_offset = gen8_mfd_vc1_get_macroblock_bit_offset(slice_data,
- slice_param->macroblock_offset,
- pic_param->sequence_fields.bits.profile);
- dri_bo_unmap(slice_data_bo);
-
- if (next_slice_param)
- next_slice_start_vert_pos = next_slice_param->slice_vertical_position;
- else
- next_slice_start_vert_pos = ALIGN(pic_param->coded_height, 16) / 16;
-
- BEGIN_BCS_BATCH(batch, 5);
- OUT_BCS_BATCH(batch, MFD_VC1_BSD_OBJECT | (5 - 2));
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_size - (macroblock_offset >> 3));
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_offset + (macroblock_offset >> 3));
- OUT_BCS_BATCH(batch,
- slice_param->slice_vertical_position << 16 |
- next_slice_start_vert_pos << 0);
- OUT_BCS_BATCH(batch,
- (macroblock_offset & 0x7));
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfd_vc1_decode_picture(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferVC1 *pic_param;
- VASliceParameterBufferVC1 *slice_param, *next_slice_param, *next_slice_group_param;
- dri_bo *slice_data_bo;
- int i, j;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
-
- gen8_mfd_vc1_decode_init(ctx, decode_state, gen7_mfd_context);
- intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- gen8_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_VC1, gen7_mfd_context);
- gen8_mfd_surface_state(ctx, decode_state, MFX_FORMAT_VC1, gen7_mfd_context);
- gen8_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_VC1, gen7_mfd_context);
- gen8_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_VC1, gen7_mfd_context);
- gen8_mfd_vc1_pic_state(ctx, decode_state, gen7_mfd_context);
- gen8_mfd_vc1_pred_pipe_state(ctx, decode_state, gen7_mfd_context);
- gen8_mfd_vc1_directmode_state(ctx, decode_state, gen7_mfd_context);
-
- for (j = 0; j < decode_state->num_slice_params; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferVC1 *)decode_state->slice_params[j]->buffer;
- slice_data_bo = decode_state->slice_datas[j]->bo;
- gen8_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_VC1, gen7_mfd_context);
-
- if (j == decode_state->num_slice_params - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VASliceParameterBufferVC1 *)decode_state->slice_params[j + 1]->buffer;
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
-
- if (i < decode_state->slice_params[j]->num_elements - 1)
- next_slice_param = slice_param + 1;
- else
- next_slice_param = next_slice_group_param;
-
- gen8_mfd_vc1_bsd_object(ctx, pic_param, slice_param, next_slice_param, slice_data_bo, gen7_mfd_context);
- slice_param++;
- }
- }
-
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-}
-
-static void
-gen8_mfd_jpeg_decode_init(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct object_surface *obj_surface;
- VAPictureParameterBufferJPEGBaseline *pic_param;
- int subsampling = SUBSAMPLE_YUV420;
- int fourcc = VA_FOURCC_IMC3;
-
- pic_param = (VAPictureParameterBufferJPEGBaseline *)decode_state->pic_param->buffer;
-
- if (pic_param->num_components == 1) {
- subsampling = SUBSAMPLE_YUV400;
- fourcc = VA_FOURCC_Y800;
- } else if (pic_param->num_components == 3) {
- int h1 = pic_param->components[0].h_sampling_factor;
- int h2 = pic_param->components[1].h_sampling_factor;
- int h3 = pic_param->components[2].h_sampling_factor;
- int v1 = pic_param->components[0].v_sampling_factor;
- int v2 = pic_param->components[1].v_sampling_factor;
- int v3 = pic_param->components[2].v_sampling_factor;
-
- if (h1 == 2 && h2 == 1 && h3 == 1 &&
- v1 == 2 && v2 == 1 && v3 == 1) {
- subsampling = SUBSAMPLE_YUV420;
- fourcc = VA_FOURCC_IMC3;
- } else if (h1 == 2 && h2 == 1 && h3 == 1 &&
- v1 == 1 && v2 == 1 && v3 == 1) {
- subsampling = SUBSAMPLE_YUV422H;
- fourcc = VA_FOURCC_422H;
- } else if (h1 == 1 && h2 == 1 && h3 == 1 &&
- v1 == 1 && v2 == 1 && v3 == 1) {
- subsampling = SUBSAMPLE_YUV444;
- fourcc = VA_FOURCC_444P;
- } else if (h1 == 4 && h2 == 1 && h3 == 1 &&
- v1 == 1 && v2 == 1 && v3 == 1) {
- subsampling = SUBSAMPLE_YUV411;
- fourcc = VA_FOURCC_411P;
- } else if (h1 == 1 && h2 == 1 && h3 == 1 &&
- v1 == 2 && v2 == 1 && v3 == 1) {
- subsampling = SUBSAMPLE_YUV422V;
- fourcc = VA_FOURCC_422V;
- } else if (h1 == 2 && h2 == 1 && h3 == 1 &&
- v1 == 2 && v2 == 2 && v3 == 2) {
- subsampling = SUBSAMPLE_YUV422H;
- fourcc = VA_FOURCC_422H;
- } else if (h1 == 2 && h2 == 2 && h3 == 2 &&
- v1 == 2 && v2 == 1 && v3 == 1) {
- subsampling = SUBSAMPLE_YUV422V;
- fourcc = VA_FOURCC_422V;
- } else
- assert(0);
- }
- else {
- assert(0);
- }
-
- /* Current decoded picture */
- obj_surface = decode_state->render_object;
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, fourcc, subsampling);
-
- dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.valid = 1;
-
- gen7_mfd_context->post_deblocking_output.bo = NULL;
- gen7_mfd_context->post_deblocking_output.valid = 0;
-
- gen7_mfd_context->intra_row_store_scratch_buffer.bo = NULL;
- gen7_mfd_context->intra_row_store_scratch_buffer.valid = 0;
-
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = NULL;
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 0;
-
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = NULL;
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 0;
-
- gen7_mfd_context->mpr_row_store_scratch_buffer.bo = NULL;
- gen7_mfd_context->mpr_row_store_scratch_buffer.valid = 0;
-
- gen7_mfd_context->bitplane_read_buffer.bo = NULL;
- gen7_mfd_context->bitplane_read_buffer.valid = 0;
-}
-
-static const int va_to_gen7_jpeg_rotation[4] = {
- GEN7_JPEG_ROTATION_0,
- GEN7_JPEG_ROTATION_90,
- GEN7_JPEG_ROTATION_180,
- GEN7_JPEG_ROTATION_270
-};
-
-static void
-gen8_mfd_jpeg_pic_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferJPEGBaseline *pic_param;
- int chroma_type = GEN7_YUV420;
- int frame_width_in_blks;
- int frame_height_in_blks;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferJPEGBaseline *)decode_state->pic_param->buffer;
-
- if (pic_param->num_components == 1)
- chroma_type = GEN7_YUV400;
- else if (pic_param->num_components == 3) {
- int h1 = pic_param->components[0].h_sampling_factor;
- int h2 = pic_param->components[1].h_sampling_factor;
- int h3 = pic_param->components[2].h_sampling_factor;
- int v1 = pic_param->components[0].v_sampling_factor;
- int v2 = pic_param->components[1].v_sampling_factor;
- int v3 = pic_param->components[2].v_sampling_factor;
-
- if (h1 == 2 && h2 == 1 && h3 == 1 &&
- v1 == 2 && v2 == 1 && v3 == 1)
- chroma_type = GEN7_YUV420;
- else if (h1 == 2 && h2 == 1 && h3 == 1 &&
- v1 == 1 && v2 == 1 && v3 == 1)
- chroma_type = GEN7_YUV422H_2Y;
- else if (h1 == 1 && h2 == 1 && h3 == 1 &&
- v1 == 1 && v2 == 1 && v3 == 1)
- chroma_type = GEN7_YUV444;
- else if (h1 == 4 && h2 == 1 && h3 == 1 &&
- v1 == 1 && v2 == 1 && v3 == 1)
- chroma_type = GEN7_YUV411;
- else if (h1 == 1 && h2 == 1 && h3 == 1 &&
- v1 == 2 && v2 == 1 && v3 == 1)
- chroma_type = GEN7_YUV422V_2Y;
- else if (h1 == 2 && h2 == 1 && h3 == 1 &&
- v1 == 2 && v2 == 2 && v3 == 2)
- chroma_type = GEN7_YUV422H_4Y;
- else if (h2 == 2 && h2 == 2 && h3 == 2 &&
- v1 == 2 && v2 == 1 && v3 == 1)
- chroma_type = GEN7_YUV422V_4Y;
- else
- assert(0);
- }
-
- if (chroma_type == GEN7_YUV400 ||
- chroma_type == GEN7_YUV444 ||
- chroma_type == GEN7_YUV422V_2Y) {
- frame_width_in_blks = ((pic_param->picture_width + 7) / 8);
- frame_height_in_blks = ((pic_param->picture_height + 7) / 8);
- } else if (chroma_type == GEN7_YUV411) {
- frame_width_in_blks = ((pic_param->picture_width + 31) / 32) * 4;
- frame_height_in_blks = ((pic_param->picture_height + 31) / 32) * 4;
- } else {
- frame_width_in_blks = ((pic_param->picture_width + 15) / 16) * 2;
- frame_height_in_blks = ((pic_param->picture_height + 15) / 16) * 2;
- }
-
- BEGIN_BCS_BATCH(batch, 3);
- OUT_BCS_BATCH(batch, MFX_JPEG_PIC_STATE | (3 - 2));
- OUT_BCS_BATCH(batch,
- (va_to_gen7_jpeg_rotation[0] << 4) | /* without rotation */
- (chroma_type << 0));
- OUT_BCS_BATCH(batch,
- ((frame_height_in_blks - 1) << 16) | /* FrameHeightInBlks */
- ((frame_width_in_blks - 1) << 0)); /* FrameWidthInBlks */
- ADVANCE_BCS_BATCH(batch);
-}
-
-static const int va_to_gen7_jpeg_hufftable[2] = {
- MFX_HUFFTABLE_ID_Y,
- MFX_HUFFTABLE_ID_UV
-};
-
-static void
-gen8_mfd_jpeg_huff_table_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context,
- int num_tables)
-{
- VAHuffmanTableBufferJPEGBaseline *huffman_table;
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int index;
-
- if (!decode_state->huffman_table || !decode_state->huffman_table->buffer)
- return;
-
- huffman_table = (VAHuffmanTableBufferJPEGBaseline *)decode_state->huffman_table->buffer;
-
- for (index = 0; index < num_tables; index++) {
- int id = va_to_gen7_jpeg_hufftable[index];
- if (!huffman_table->load_huffman_table[index])
- continue;
- BEGIN_BCS_BATCH(batch, 53);
- OUT_BCS_BATCH(batch, MFX_JPEG_HUFF_TABLE_STATE | (53 - 2));
- OUT_BCS_BATCH(batch, id);
- intel_batchbuffer_data(batch, huffman_table->huffman_table[index].num_dc_codes, 12);
- intel_batchbuffer_data(batch, huffman_table->huffman_table[index].dc_values, 12);
- intel_batchbuffer_data(batch, huffman_table->huffman_table[index].num_ac_codes, 16);
- intel_batchbuffer_data(batch, huffman_table->huffman_table[index].ac_values, 164);
- ADVANCE_BCS_BATCH(batch);
- }
-}
-
-static const int va_to_gen7_jpeg_qm[5] = {
- -1,
- MFX_QM_JPEG_LUMA_Y_QUANTIZER_MATRIX,
- MFX_QM_JPEG_CHROMA_CB_QUANTIZER_MATRIX,
- MFX_QM_JPEG_CHROMA_CR_QUANTIZER_MATRIX,
- MFX_QM_JPEG_ALPHA_QUANTIZER_MATRIX
-};
-
-static void
-gen8_mfd_jpeg_qm_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- VAPictureParameterBufferJPEGBaseline *pic_param;
- VAIQMatrixBufferJPEGBaseline *iq_matrix;
- int index;
-
- if (!decode_state->iq_matrix || !decode_state->iq_matrix->buffer)
- return;
-
- iq_matrix = (VAIQMatrixBufferJPEGBaseline *)decode_state->iq_matrix->buffer;
- pic_param = (VAPictureParameterBufferJPEGBaseline *)decode_state->pic_param->buffer;
-
- assert(pic_param->num_components <= 3);
-
- for (index = 0; index < pic_param->num_components; index++) {
- int id = pic_param->components[index].component_id - pic_param->components[0].component_id + 1;
- int qm_type;
- unsigned char *qm = iq_matrix->quantiser_table[pic_param->components[index].quantiser_table_selector];
- unsigned char raster_qm[64];
- int j;
-
- if (id > 4 || id < 1)
- continue;
-
- if (!iq_matrix->load_quantiser_table[pic_param->components[index].quantiser_table_selector])
- continue;
-
- qm_type = va_to_gen7_jpeg_qm[id];
-
- for (j = 0; j < 64; j++)
- raster_qm[zigzag_direct[j]] = qm[j];
-
- gen8_mfd_qm_state(ctx, qm_type, raster_qm, 64, gen7_mfd_context);
- }
-}
-
-static void
-gen8_mfd_jpeg_bsd_object(VADriverContextP ctx,
- VAPictureParameterBufferJPEGBaseline *pic_param,
- VASliceParameterBufferJPEGBaseline *slice_param,
- VASliceParameterBufferJPEGBaseline *next_slice_param,
- dri_bo *slice_data_bo,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int scan_component_mask = 0;
- int i;
-
- assert(slice_param->num_components > 0);
- assert(slice_param->num_components < 4);
- assert(slice_param->num_components <= pic_param->num_components);
-
- for (i = 0; i < slice_param->num_components; i++) {
- switch (slice_param->components[i].component_selector - pic_param->components[0].component_id + 1) {
- case 1:
- scan_component_mask |= (1 << 0);
- break;
- case 2:
- scan_component_mask |= (1 << 1);
- break;
- case 3:
- scan_component_mask |= (1 << 2);
- break;
- default:
- assert(0);
- break;
- }
- }
-
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFD_JPEG_BSD_OBJECT | (6 - 2));
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_size);
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_offset);
- OUT_BCS_BATCH(batch,
- slice_param->slice_horizontal_position << 16 |
- slice_param->slice_vertical_position << 0);
- OUT_BCS_BATCH(batch,
- ((slice_param->num_components != 1) << 30) | /* interleaved */
- (scan_component_mask << 27) | /* scan components */
- (0 << 26) | /* disable interrupt allowed */
- (slice_param->num_mcus << 0)); /* MCU count */
- OUT_BCS_BATCH(batch,
- (slice_param->restart_interval << 0)); /* RestartInterval */
- ADVANCE_BCS_BATCH(batch);
-}
-
-/* Workaround for JPEG decoding on Ivybridge */
-#ifdef JPEG_WA
-
-static struct {
- int width;
- int height;
- unsigned char data[32];
- int data_size;
- int data_bit_offset;
- int qp;
-} gen7_jpeg_wa_clip = {
- 16,
- 16,
- {
- 0x65, 0xb8, 0x40, 0x32, 0x13, 0xfd, 0x06, 0x6c,
- 0xfc, 0x0a, 0x50, 0x71, 0x5c, 0x00
- },
- 14,
- 40,
- 28,
-};
-
-static void
-gen8_jpeg_wa_init(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VAStatus status;
- struct object_surface *obj_surface;
-
- if (gen7_mfd_context->jpeg_wa_surface_id != VA_INVALID_SURFACE)
- i965_DestroySurfaces(ctx,
- &gen7_mfd_context->jpeg_wa_surface_id,
- 1);
-
- status = i965_CreateSurfaces(ctx,
- gen7_jpeg_wa_clip.width,
- gen7_jpeg_wa_clip.height,
- VA_RT_FORMAT_YUV420,
- 1,
- &gen7_mfd_context->jpeg_wa_surface_id);
- assert(status == VA_STATUS_SUCCESS);
-
- obj_surface = SURFACE(gen7_mfd_context->jpeg_wa_surface_id);
- assert(obj_surface);
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
- gen7_mfd_context->jpeg_wa_surface_object = obj_surface;
-
- if (!gen7_mfd_context->jpeg_wa_slice_data_bo) {
- gen7_mfd_context->jpeg_wa_slice_data_bo = dri_bo_alloc(i965->intel.bufmgr,
- "JPEG WA data",
- 0x1000,
- 0x1000);
- dri_bo_subdata(gen7_mfd_context->jpeg_wa_slice_data_bo,
- 0,
- gen7_jpeg_wa_clip.data_size,
- gen7_jpeg_wa_clip.data);
- }
-}
-
-static void
-gen8_jpeg_wa_pipe_mode_select(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 5);
- OUT_BCS_BATCH(batch, MFX_PIPE_MODE_SELECT | (5 - 2));
- OUT_BCS_BATCH(batch,
- (MFX_LONG_MODE << 17) | /* Currently only support long format */
- (MFD_MODE_VLD << 15) | /* VLD mode */
- (0 << 10) | /* disable Stream-Out */
- (0 << 9) | /* Post Deblocking Output */
- (1 << 8) | /* Pre Deblocking Output */
- (0 << 5) | /* not in stitch mode */
- (MFX_CODEC_DECODE << 4) | /* decoding mode */
- (MFX_FORMAT_AVC << 0));
- OUT_BCS_BATCH(batch,
- (0 << 4) | /* terminate if AVC motion and POC table error occurs */
- (0 << 3) | /* terminate if AVC mbdata error occurs */
- (0 << 2) | /* terminate if AVC CABAC/CAVLC decode error occurs */
- (0 << 1) |
- (0 << 0));
- OUT_BCS_BATCH(batch, 0); /* pic status/error report id */
- OUT_BCS_BATCH(batch, 0); /* reserved */
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_jpeg_wa_surface_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct object_surface *obj_surface = gen7_mfd_context->jpeg_wa_surface_object;
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- ((obj_surface->orig_width - 1) << 18) |
- ((obj_surface->orig_height - 1) << 4));
- OUT_BCS_BATCH(batch,
- (MFX_SURFACE_PLANAR_420_8 << 28) | /* 420 planar YUV surface */
- (1 << 27) | /* interleave chroma, set to 0 for JPEG */
- (0 << 22) | /* surface object control state, ignored */
- ((obj_surface->width - 1) << 3) | /* pitch */
- (0 << 2) | /* must be 0 */
- (1 << 1) | /* must be tiled */
- (I965_TILEWALK_YMAJOR << 0)); /* tile walk, must be 1 */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* X offset for U(Cb), must be 0 */
- (obj_surface->y_cb_offset << 0)); /* Y offset for U(Cb) */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* X offset for V(Cr), must be 0 */
- (0 << 0)); /* Y offset for V(Cr), must be 0 for video codec, non-zoro for JPEG */
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_jpeg_wa_pipe_buf_addr_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface = gen7_mfd_context->jpeg_wa_surface_object;
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- dri_bo *intra_bo;
- int i;
-
- intra_bo = dri_bo_alloc(i965->intel.bufmgr,
- "intra row store",
- 128 * 64,
- 0x1000);
-
- BEGIN_BCS_BATCH(batch, 61);
- OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (61 - 2));
- OUT_BCS_RELOC64(batch,
- obj_surface->bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
-
- OUT_BCS_BATCH(batch, 0); /* post deblocking */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* uncompressed-video & stream out 7-12 */
- OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
- OUT_BCS_BATCH(batch, 0); /* ignore for decoding */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW 13-15 is for intra row store scratch */
- OUT_BCS_RELOC64(batch,
- intra_bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* the DW 16-18 is for deblocking filter */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* DW 19..50 */
- for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW52-54 is for mb status address */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- /* the DW56-60 is for ILDB & second ILDB address */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-
- dri_bo_unreference(intra_bo);
-}
-
-static void
-gen8_jpeg_wa_bsp_buf_base_addr_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- dri_bo *bsd_mpc_bo, *mpr_bo;
-
- bsd_mpc_bo = dri_bo_alloc(i965->intel.bufmgr,
- "bsd mpc row store",
- 11520, /* 1.5 * 120 * 64 */
- 0x1000);
-
- mpr_bo = dri_bo_alloc(i965->intel.bufmgr,
- "mpr row store",
- 7680, /* 1. 0 * 120 * 64 */
- 0x1000);
-
- BEGIN_BCS_BATCH(batch, 10);
- OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (10 - 2));
-
- OUT_BCS_RELOC64(batch,
- bsd_mpc_bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- OUT_BCS_RELOC64(batch,
- mpr_bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-
- dri_bo_unreference(bsd_mpc_bo);
- dri_bo_unreference(mpr_bo);
-}
-
-static void
-gen8_jpeg_wa_avc_qm_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
-
-}
-
-static void
-gen8_jpeg_wa_avc_img_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int img_struct = 0;
- int mbaff_frame_flag = 0;
- unsigned int width_in_mbs = 1, height_in_mbs = 1;
-
- BEGIN_BCS_BATCH(batch, 16);
- OUT_BCS_BATCH(batch, MFX_AVC_IMG_STATE | (16 - 2));
- OUT_BCS_BATCH(batch,
- width_in_mbs * height_in_mbs);
- OUT_BCS_BATCH(batch,
- ((height_in_mbs - 1) << 16) |
- ((width_in_mbs - 1) << 0));
- OUT_BCS_BATCH(batch,
- (0 << 24) |
- (0 << 16) |
- (0 << 14) |
- (0 << 13) |
- (0 << 12) | /* differ from GEN6 */
- (0 << 10) |
- (img_struct << 8));
- OUT_BCS_BATCH(batch,
- (1 << 10) | /* 4:2:0 */
- (1 << 7) | /* CABAC */
- (0 << 6) |
- (0 << 5) |
- (0 << 4) |
- (0 << 3) |
- (1 << 2) |
- (mbaff_frame_flag << 1) |
- (0 << 0));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_jpeg_wa_avc_directmode_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int i;
-
- BEGIN_BCS_BATCH(batch, 71);
- OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (71 - 2));
-
- /* reference surfaces 0..15 */
- for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
- OUT_BCS_BATCH(batch, 0); /* top */
- OUT_BCS_BATCH(batch, 0); /* bottom */
- }
-
- OUT_BCS_BATCH(batch, 0);
-
- /* the current decoding frame/field */
- OUT_BCS_BATCH(batch, 0); /* top */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* POC List */
- for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_jpeg_wa_ind_obj_base_addr_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 11);
- OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (11 - 2));
- OUT_BCS_RELOC64(batch,
- gen7_mfd_context->jpeg_wa_slice_data_bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* ignore for VLD mode */
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_jpeg_wa_avc_bsd_object(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- /* the input bitsteam format on GEN7 differs from GEN6 */
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFD_AVC_BSD_OBJECT | (6 - 2));
- OUT_BCS_BATCH(batch, gen7_jpeg_wa_clip.data_size);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- (0 << 31) |
- (0 << 14) |
- (0 << 12) |
- (0 << 10) |
- (0 << 8));
- OUT_BCS_BATCH(batch,
- ((gen7_jpeg_wa_clip.data_bit_offset >> 3) << 16) |
- (0 << 5) |
- (0 << 4) |
- (1 << 3) | /* LastSlice Flag */
- (gen7_jpeg_wa_clip.data_bit_offset & 0x7));
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_jpeg_wa_avc_slice_state(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int slice_hor_pos = 0, slice_ver_pos = 0, next_slice_hor_pos = 0, next_slice_ver_pos = 1;
- int num_ref_idx_l0 = 0, num_ref_idx_l1 = 0;
- int first_mb_in_slice = 0;
- int slice_type = SLICE_TYPE_I;
-
- BEGIN_BCS_BATCH(batch, 11);
- OUT_BCS_BATCH(batch, MFX_AVC_SLICE_STATE | (11 - 2));
- OUT_BCS_BATCH(batch, slice_type);
- OUT_BCS_BATCH(batch,
- (num_ref_idx_l1 << 24) |
- (num_ref_idx_l0 << 16) |
- (0 << 8) |
- (0 << 0));
- OUT_BCS_BATCH(batch,
- (0 << 29) |
- (1 << 27) | /* disable Deblocking */
- (0 << 24) |
- (gen7_jpeg_wa_clip.qp << 16) |
- (0 << 8) |
- (0 << 0));
- OUT_BCS_BATCH(batch,
- (slice_ver_pos << 24) |
- (slice_hor_pos << 16) |
- (first_mb_in_slice << 0));
- OUT_BCS_BATCH(batch,
- (next_slice_ver_pos << 16) |
- (next_slice_hor_pos << 0));
- OUT_BCS_BATCH(batch, (1 << 19)); /* last slice flag */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfd_jpeg_wa(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- gen8_jpeg_wa_init(ctx, gen7_mfd_context);
- intel_batchbuffer_emit_mi_flush(batch);
- gen8_jpeg_wa_pipe_mode_select(ctx, gen7_mfd_context);
- gen8_jpeg_wa_surface_state(ctx, gen7_mfd_context);
- gen8_jpeg_wa_pipe_buf_addr_state(ctx, gen7_mfd_context);
- gen8_jpeg_wa_bsp_buf_base_addr_state(ctx, gen7_mfd_context);
- gen8_jpeg_wa_avc_qm_state(ctx, gen7_mfd_context);
- gen8_jpeg_wa_avc_img_state(ctx, gen7_mfd_context);
- gen8_jpeg_wa_ind_obj_base_addr_state(ctx, gen7_mfd_context);
-
- gen8_jpeg_wa_avc_directmode_state(ctx, gen7_mfd_context);
- gen8_jpeg_wa_avc_slice_state(ctx, gen7_mfd_context);
- gen8_jpeg_wa_avc_bsd_object(ctx, gen7_mfd_context);
-}
-
-#endif
-
-void
-gen8_mfd_jpeg_decode_picture(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferJPEGBaseline *pic_param;
- VASliceParameterBufferJPEGBaseline *slice_param, *next_slice_param, *next_slice_group_param;
- dri_bo *slice_data_bo;
- int i, j, max_selector = 0;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferJPEGBaseline *)decode_state->pic_param->buffer;
-
- /* Currently only support Baseline DCT */
- gen8_mfd_jpeg_decode_init(ctx, decode_state, gen7_mfd_context);
- intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
-#ifdef JPEG_WA
- gen8_mfd_jpeg_wa(ctx, gen7_mfd_context);
-#endif
- intel_batchbuffer_emit_mi_flush(batch);
- gen8_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_JPEG, gen7_mfd_context);
- gen8_mfd_surface_state(ctx, decode_state, MFX_FORMAT_JPEG, gen7_mfd_context);
- gen8_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_JPEG, gen7_mfd_context);
- gen8_mfd_jpeg_pic_state(ctx, decode_state, gen7_mfd_context);
- gen8_mfd_jpeg_qm_state(ctx, decode_state, gen7_mfd_context);
-
- for (j = 0; j < decode_state->num_slice_params; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferJPEGBaseline *)decode_state->slice_params[j]->buffer;
- slice_data_bo = decode_state->slice_datas[j]->bo;
- gen8_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_JPEG, gen7_mfd_context);
-
- if (j == decode_state->num_slice_params - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VASliceParameterBufferJPEGBaseline *)decode_state->slice_params[j + 1]->buffer;
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- int component;
-
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
-
- if (i < decode_state->slice_params[j]->num_elements - 1)
- next_slice_param = slice_param + 1;
- else
- next_slice_param = next_slice_group_param;
-
- for (component = 0; component < slice_param->num_components; component++) {
- if (max_selector < slice_param->components[component].dc_table_selector)
- max_selector = slice_param->components[component].dc_table_selector;
-
- if (max_selector < slice_param->components[component].ac_table_selector)
- max_selector = slice_param->components[component].ac_table_selector;
- }
-
- slice_param++;
- }
- }
-
- assert(max_selector < 2);
- gen8_mfd_jpeg_huff_table_state(ctx, decode_state, gen7_mfd_context, max_selector + 1);
-
- for (j = 0; j < decode_state->num_slice_params; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferJPEGBaseline *)decode_state->slice_params[j]->buffer;
- slice_data_bo = decode_state->slice_datas[j]->bo;
- gen8_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_JPEG, gen7_mfd_context);
-
- if (j == decode_state->num_slice_params - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VASliceParameterBufferJPEGBaseline *)decode_state->slice_params[j + 1]->buffer;
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
-
- if (i < decode_state->slice_params[j]->num_elements - 1)
- next_slice_param = slice_param + 1;
- else
- next_slice_param = next_slice_group_param;
-
- gen8_mfd_jpeg_bsd_object(ctx, pic_param, slice_param, next_slice_param, slice_data_bo, gen7_mfd_context);
- slice_param++;
- }
- }
-
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-}
-
-static const int vp8_dc_qlookup[128] =
-{
- 4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, 15, 16, 17, 17,
- 18, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 25, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- 91, 93, 95, 96, 98, 100, 101, 102, 104, 106, 108, 110, 112, 114, 116, 118,
- 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 143, 145, 148, 151, 154, 157,
-};
-
-static const int vp8_ac_qlookup[128] =
-{
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76,
- 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108,
- 110, 112, 114, 116, 119, 122, 125, 128, 131, 134, 137, 140, 143, 146, 149, 152,
- 155, 158, 161, 164, 167, 170, 173, 177, 181, 185, 189, 193, 197, 201, 205, 209,
- 213, 217, 221, 225, 229, 234, 239, 245, 249, 254, 259, 264, 269, 274, 279, 284,
-};
-
-static inline unsigned int vp8_clip_quantization_index(int index)
-{
- if(index > 127)
- return 127;
- else if(index <0)
- return 0;
-
- return index;
-}
-
-static void
-gen8_mfd_vp8_decode_init(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct object_surface *obj_surface;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- dri_bo *bo;
- VAPictureParameterBufferVP8 *pic_param = (VAPictureParameterBufferVP8 *)decode_state->pic_param->buffer;
- int width_in_mbs = (pic_param->frame_width + 15) / 16;
- int height_in_mbs = (pic_param->frame_height + 15) / 16;
-
- assert(width_in_mbs > 0 && width_in_mbs <= 256); /* 4K */
- assert(height_in_mbs > 0 && height_in_mbs <= 256);
-
- intel_update_vp8_frame_store_index(ctx,
- decode_state,
- pic_param,
- gen7_mfd_context->reference_surface);
-
- /* Current decoded picture */
- obj_surface = decode_state->render_object;
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
-
- dri_bo_unreference(gen7_mfd_context->post_deblocking_output.bo);
- gen7_mfd_context->post_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen7_mfd_context->post_deblocking_output.bo);
- gen7_mfd_context->post_deblocking_output.valid = !pic_param->pic_fields.bits.loop_filter_disable;
-
- dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.bo = obj_surface->bo;
- dri_bo_reference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.valid = pic_param->pic_fields.bits.loop_filter_disable;
-
- intel_ensure_vp8_segmentation_buffer(ctx,
- &gen7_mfd_context->segmentation_buffer, width_in_mbs, height_in_mbs);
-
- /* The same as AVC */
- dri_bo_unreference(gen7_mfd_context->intra_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "intra row store",
- width_in_mbs * 64,
- 0x1000);
- assert(bo);
- gen7_mfd_context->intra_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->intra_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "deblocking filter row store",
- width_in_mbs * 64 * 4,
- 0x1000);
- assert(bo);
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "bsd mpc row store",
- width_in_mbs * 64 * 2,
- 0x1000);
- assert(bo);
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.valid = 1;
-
- dri_bo_unreference(gen7_mfd_context->mpr_row_store_scratch_buffer.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "mpr row store",
- width_in_mbs * 64 * 2,
- 0x1000);
- assert(bo);
- gen7_mfd_context->mpr_row_store_scratch_buffer.bo = bo;
- gen7_mfd_context->mpr_row_store_scratch_buffer.valid = 1;
-
- gen7_mfd_context->bitplane_read_buffer.valid = 0;
-}
-
-static void
-gen8_mfd_vp8_pic_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferVP8 *pic_param = (VAPictureParameterBufferVP8 *)decode_state->pic_param->buffer;
- VAIQMatrixBufferVP8 *iq_matrix = (VAIQMatrixBufferVP8 *)decode_state->iq_matrix->buffer;
- VASliceParameterBufferVP8 *slice_param = (VASliceParameterBufferVP8 *)decode_state->slice_params[0]->buffer; /* one slice per frame */
- dri_bo *probs_bo = decode_state->probability_data->bo;
- int i, j,log2num;
- unsigned int quantization_value[4][6];
-
- /* There is no safe way to error out if the segmentation buffer
- could not be allocated. So, instead of aborting, simply decode
- something even if the result may look totally inacurate */
- const unsigned int enable_segmentation =
- pic_param->pic_fields.bits.segmentation_enabled &&
- gen7_mfd_context->segmentation_buffer.valid;
-
- log2num = (int)log2(slice_param->num_of_partitions - 1);
-
- BEGIN_BCS_BATCH(batch, 38);
- OUT_BCS_BATCH(batch, MFX_VP8_PIC_STATE | (38 - 2));
- OUT_BCS_BATCH(batch,
- (ALIGN(pic_param->frame_height, 16) / 16 - 1) << 16 |
- (ALIGN(pic_param->frame_width, 16) / 16 - 1) << 0);
- OUT_BCS_BATCH(batch,
- log2num << 24 |
- pic_param->pic_fields.bits.sharpness_level << 16 |
- pic_param->pic_fields.bits.sign_bias_alternate << 13 |
- pic_param->pic_fields.bits.sign_bias_golden << 12 |
- pic_param->pic_fields.bits.loop_filter_adj_enable << 11 |
- pic_param->pic_fields.bits.mb_no_coeff_skip << 10 |
- (enable_segmentation &&
- pic_param->pic_fields.bits.update_mb_segmentation_map) << 9 |
- pic_param->pic_fields.bits.segmentation_enabled << 8 |
- (enable_segmentation &&
- !pic_param->pic_fields.bits.update_mb_segmentation_map) << 7 |
- (enable_segmentation &&
- pic_param->pic_fields.bits.update_mb_segmentation_map) << 6 |
- (pic_param->pic_fields.bits.key_frame == 0 ? 1 : 0) << 5 | /* 0 indicate an intra frame in VP8 stream/spec($9.1)*/
- pic_param->pic_fields.bits.filter_type << 4 |
- (pic_param->pic_fields.bits.version == 3) << 1 | /* full pixel mode for version 3 */
- !!pic_param->pic_fields.bits.version << 0); /* version 0: 6 tap */
-
- OUT_BCS_BATCH(batch,
- pic_param->loop_filter_level[3] << 24 |
- pic_param->loop_filter_level[2] << 16 |
- pic_param->loop_filter_level[1] << 8 |
- pic_param->loop_filter_level[0] << 0);
-
- /* Quantizer Value for 4 segmetns, DW4-DW15 */
- for (i = 0; i < 4; i++) {
- quantization_value[i][0] = vp8_ac_qlookup[vp8_clip_quantization_index(iq_matrix->quantization_index[i][0])];/*yac*/
- quantization_value[i][1] = vp8_dc_qlookup[vp8_clip_quantization_index(iq_matrix->quantization_index[i][1])];/*ydc*/
- quantization_value[i][2] = 2*vp8_dc_qlookup[vp8_clip_quantization_index(iq_matrix->quantization_index[i][2])];/*y2dc*/
- /* 101581>>16 is equivalent to 155/100 */
- quantization_value[i][3] = (101581*vp8_ac_qlookup[vp8_clip_quantization_index(iq_matrix->quantization_index[i][3])]) >> 16;/*y2ac*/
- quantization_value[i][4] = vp8_dc_qlookup[vp8_clip_quantization_index(iq_matrix->quantization_index[i][4])];/*uvdc*/
- quantization_value[i][5] = vp8_ac_qlookup[vp8_clip_quantization_index(iq_matrix->quantization_index[i][5])];/*uvac*/
-
- quantization_value[i][3] = (quantization_value[i][3] > 8 ? quantization_value[i][3] : 8);
- quantization_value[i][4] = (quantization_value[i][4] < 132 ? quantization_value[i][4] : 132);
-
- OUT_BCS_BATCH(batch,
- quantization_value[i][0] << 16 | /* Y1AC */
- quantization_value[i][1] << 0); /* Y1DC */
- OUT_BCS_BATCH(batch,
- quantization_value[i][5] << 16 | /* UVAC */
- quantization_value[i][4] << 0); /* UVDC */
- OUT_BCS_BATCH(batch,
- quantization_value[i][3] << 16 | /* Y2AC */
- quantization_value[i][2] << 0); /* Y2DC */
- }
-
- /* CoeffProbability table for non-key frame, DW16-DW18 */
- if (probs_bo) {
- OUT_BCS_RELOC64(batch, probs_bo,
- 0, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- OUT_BCS_BATCH(batch,
- pic_param->mb_segment_tree_probs[2] << 16 |
- pic_param->mb_segment_tree_probs[1] << 8 |
- pic_param->mb_segment_tree_probs[0] << 0);
-
- OUT_BCS_BATCH(batch,
- pic_param->prob_skip_false << 24 |
- pic_param->prob_intra << 16 |
- pic_param->prob_last << 8 |
- pic_param->prob_gf << 0);
-
- OUT_BCS_BATCH(batch,
- pic_param->y_mode_probs[3] << 24 |
- pic_param->y_mode_probs[2] << 16 |
- pic_param->y_mode_probs[1] << 8 |
- pic_param->y_mode_probs[0] << 0);
-
- OUT_BCS_BATCH(batch,
- pic_param->uv_mode_probs[2] << 16 |
- pic_param->uv_mode_probs[1] << 8 |
- pic_param->uv_mode_probs[0] << 0);
-
- /* MV update value, DW23-DW32 */
- for (i = 0; i < 2; i++) {
- for (j = 0; j < 20; j += 4) {
- OUT_BCS_BATCH(batch,
- (j + 3 == 19 ? 0 : pic_param->mv_probs[i][j + 3]) << 24 |
- pic_param->mv_probs[i][j + 2] << 16 |
- pic_param->mv_probs[i][j + 1] << 8 |
- pic_param->mv_probs[i][j + 0] << 0);
- }
- }
-
- OUT_BCS_BATCH(batch,
- (pic_param->loop_filter_deltas_ref_frame[3] & 0x7f) << 24 |
- (pic_param->loop_filter_deltas_ref_frame[2] & 0x7f) << 16 |
- (pic_param->loop_filter_deltas_ref_frame[1] & 0x7f) << 8 |
- (pic_param->loop_filter_deltas_ref_frame[0] & 0x7f) << 0);
-
- OUT_BCS_BATCH(batch,
- (pic_param->loop_filter_deltas_mode[3] & 0x7f) << 24 |
- (pic_param->loop_filter_deltas_mode[2] & 0x7f) << 16 |
- (pic_param->loop_filter_deltas_mode[1] & 0x7f) << 8 |
- (pic_param->loop_filter_deltas_mode[0] & 0x7f) << 0);
-
- /* segmentation id stream base address, DW35-DW37 */
- if (enable_segmentation) {
- OUT_BCS_RELOC64(batch, gen7_mfd_context->segmentation_buffer.bo,
- 0, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
- }
- else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen8_mfd_vp8_bsd_object(VADriverContextP ctx,
- VAPictureParameterBufferVP8 *pic_param,
- VASliceParameterBufferVP8 *slice_param,
- dri_bo *slice_data_bo,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int i, log2num;
- unsigned int offset = slice_param->slice_data_offset + ((slice_param->macroblock_offset + 7 ) >> 3);
- unsigned int used_bits = 8-pic_param->bool_coder_ctx.count;
- unsigned int partition_size_0 = slice_param->partition_size[0];
-
- assert(pic_param->bool_coder_ctx.count >= 0 && pic_param->bool_coder_ctx.count <= 7);
- if (used_bits == 8) {
- used_bits = 0;
- offset += 1;
- partition_size_0 -= 1;
- }
-
- assert(slice_param->num_of_partitions >= 2);
- assert(slice_param->num_of_partitions <= 9);
-
- log2num = (int)log2(slice_param->num_of_partitions - 1);
-
- BEGIN_BCS_BATCH(batch, 22);
- OUT_BCS_BATCH(batch, MFD_VP8_BSD_OBJECT | (22 - 2));
- OUT_BCS_BATCH(batch,
- used_bits << 16 | /* Partition 0 CPBAC Entropy Count */
- pic_param->bool_coder_ctx.range << 8 | /* Partition 0 Count Entropy Range */
- log2num << 4 |
- (slice_param->macroblock_offset & 0x7));
- OUT_BCS_BATCH(batch,
- pic_param->bool_coder_ctx.value << 24 | /* Partition 0 Count Entropy Value */
- 0);
-
- OUT_BCS_BATCH(batch, partition_size_0 + 1);
- OUT_BCS_BATCH(batch, offset);
- //partion sizes in bytes are present after the above first partition when there are more than one token partition
- offset += (partition_size_0 + 3 * (slice_param->num_of_partitions - 2));
- for (i = 1; i < 9; i++) {
- if (i < slice_param->num_of_partitions) {
- OUT_BCS_BATCH(batch, slice_param->partition_size[i] + 1);
- OUT_BCS_BATCH(batch, offset);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- offset += slice_param->partition_size[i];
- }
-
- OUT_BCS_BATCH(batch, 0); /* concealment method */
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-void
-gen8_mfd_vp8_decode_picture(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- VAPictureParameterBufferVP8 *pic_param;
- VASliceParameterBufferVP8 *slice_param;
- dri_bo *slice_data_bo;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferVP8 *)decode_state->pic_param->buffer;
-
- /* one slice per frame */
- if (decode_state->num_slice_params != 1 ||
- (!decode_state->slice_params ||
- !decode_state->slice_params[0] ||
- (decode_state->slice_params[0]->num_elements != 1 || decode_state->slice_params[0]->buffer == NULL)) ||
- (!decode_state->slice_datas ||
- !decode_state->slice_datas[0] ||
- !decode_state->slice_datas[0]->bo) ||
- !decode_state->probability_data) {
- WARN_ONCE("Wrong parameters for VP8 decoding\n");
-
- return;
- }
-
- slice_param = (VASliceParameterBufferVP8 *)decode_state->slice_params[0]->buffer;
- slice_data_bo = decode_state->slice_datas[0]->bo;
-
- gen8_mfd_vp8_decode_init(ctx, decode_state, gen7_mfd_context);
- intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- gen8_mfd_pipe_mode_select(ctx, decode_state, MFX_FORMAT_VP8, gen7_mfd_context);
- gen8_mfd_surface_state(ctx, decode_state, MFX_FORMAT_VP8, gen7_mfd_context);
- gen8_mfd_pipe_buf_addr_state(ctx, decode_state, MFX_FORMAT_VP8, gen7_mfd_context);
- gen8_mfd_bsp_buf_base_addr_state(ctx, decode_state, MFX_FORMAT_VP8, gen7_mfd_context);
- gen8_mfd_ind_obj_base_addr_state(ctx, slice_data_bo, MFX_FORMAT_VP8, gen7_mfd_context);
- gen8_mfd_vp8_pic_state(ctx, decode_state, gen7_mfd_context);
- gen8_mfd_vp8_bsd_object(ctx, pic_param, slice_param, slice_data_bo, gen7_mfd_context);
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-}
-
-static VAStatus
-gen8_mfd_decode_picture(VADriverContextP ctx,
- VAProfile profile,
- union codec_state *codec_state,
- struct hw_context *hw_context)
-
-{
- struct gen7_mfd_context *gen7_mfd_context = (struct gen7_mfd_context *)hw_context;
- struct decode_state *decode_state = &codec_state->decode;
- VAStatus vaStatus;
-
- assert(gen7_mfd_context);
-
- vaStatus = intel_decoder_sanity_check_input(ctx, profile, decode_state);
-
- if (vaStatus != VA_STATUS_SUCCESS)
- goto out;
-
- gen7_mfd_context->wa_mpeg2_slice_vertical_position = -1;
-
- switch (profile) {
- case VAProfileMPEG2Simple:
- case VAProfileMPEG2Main:
- gen8_mfd_mpeg2_decode_picture(ctx, decode_state, gen7_mfd_context);
- break;
-
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- case VAProfileH264StereoHigh:
- case VAProfileH264MultiviewHigh:
- gen8_mfd_avc_decode_picture(ctx, decode_state, gen7_mfd_context);
- break;
-
- case VAProfileVC1Simple:
- case VAProfileVC1Main:
- case VAProfileVC1Advanced:
- gen8_mfd_vc1_decode_picture(ctx, decode_state, gen7_mfd_context);
- break;
-
- case VAProfileJPEGBaseline:
- gen8_mfd_jpeg_decode_picture(ctx, decode_state, gen7_mfd_context);
- break;
-
- case VAProfileVP8Version0_3:
- gen8_mfd_vp8_decode_picture(ctx, decode_state, gen7_mfd_context);
- break;
-
- default:
- assert(0);
- break;
- }
-
- vaStatus = VA_STATUS_SUCCESS;
-
-out:
- return vaStatus;
-}
-
-static void
-gen8_mfd_context_destroy(void *hw_context)
-{
- VADriverContextP ctx;
- struct gen7_mfd_context *gen7_mfd_context = (struct gen7_mfd_context *)hw_context;
-
- ctx = (VADriverContextP)(gen7_mfd_context->driver_context);
-
- dri_bo_unreference(gen7_mfd_context->post_deblocking_output.bo);
- gen7_mfd_context->post_deblocking_output.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->pre_deblocking_output.bo);
- gen7_mfd_context->pre_deblocking_output.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->intra_row_store_scratch_buffer.bo);
- gen7_mfd_context->intra_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
- gen7_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
- gen7_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->mpr_row_store_scratch_buffer.bo);
- gen7_mfd_context->mpr_row_store_scratch_buffer.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->bitplane_read_buffer.bo);
- gen7_mfd_context->bitplane_read_buffer.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->segmentation_buffer.bo);
- gen7_mfd_context->segmentation_buffer.bo = NULL;
-
- dri_bo_unreference(gen7_mfd_context->jpeg_wa_slice_data_bo);
-
- if (gen7_mfd_context->jpeg_wa_surface_id != VA_INVALID_SURFACE) {
- i965_DestroySurfaces(ctx,
- &gen7_mfd_context->jpeg_wa_surface_id,
- 1);
- gen7_mfd_context->jpeg_wa_surface_object = NULL;
- }
-
- intel_batchbuffer_free(gen7_mfd_context->base.batch);
- free(gen7_mfd_context);
-}
-
-static void gen8_mfd_mpeg2_context_init(VADriverContextP ctx,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- gen7_mfd_context->iq_matrix.mpeg2.load_intra_quantiser_matrix = -1;
- gen7_mfd_context->iq_matrix.mpeg2.load_non_intra_quantiser_matrix = -1;
- gen7_mfd_context->iq_matrix.mpeg2.load_chroma_intra_quantiser_matrix = -1;
- gen7_mfd_context->iq_matrix.mpeg2.load_chroma_non_intra_quantiser_matrix = -1;
-}
-
-struct hw_context *
-gen8_dec_hw_context_init(VADriverContextP ctx, struct object_config *obj_config)
-{
- struct intel_driver_data *intel = intel_driver_data(ctx);
- struct gen7_mfd_context *gen7_mfd_context = calloc(1, sizeof(struct gen7_mfd_context));
- int i;
-
- if (!gen7_mfd_context)
- return NULL;
-
- gen7_mfd_context->base.destroy = gen8_mfd_context_destroy;
- gen7_mfd_context->base.run = gen8_mfd_decode_picture;
- gen7_mfd_context->base.batch = intel_batchbuffer_new(intel, I915_EXEC_RENDER, 0);
-
- for (i = 0; i < ARRAY_ELEMS(gen7_mfd_context->reference_surface); i++) {
- gen7_mfd_context->reference_surface[i].surface_id = VA_INVALID_ID;
- gen7_mfd_context->reference_surface[i].frame_store_id = -1;
- }
-
- gen7_mfd_context->jpeg_wa_surface_id = VA_INVALID_SURFACE;
- gen7_mfd_context->segmentation_buffer.valid = 0;
-
- switch (obj_config->profile) {
- case VAProfileMPEG2Simple:
- case VAProfileMPEG2Main:
- gen8_mfd_mpeg2_context_init(ctx, gen7_mfd_context);
- break;
-
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- case VAProfileH264StereoHigh:
- case VAProfileH264MultiviewHigh:
- gen8_mfd_avc_context_init(ctx, gen7_mfd_context);
- break;
- default:
- break;
- }
-
- gen7_mfd_context->driver_context = ctx;
- return (struct hw_context *)gen7_mfd_context;
-}
diff --git a/src/gen8_post_processing.c b/src/gen8_post_processing.c
deleted file mode 100644
index 35e46f9..0000000
--- a/src/gen8_post_processing.c
+++ /dev/null
@@ -1,2131 +0,0 @@
-/*
- * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- * Zhao Yakui <yakui.zhao@intel.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-#include "i965_defines.h"
-#include "i965_structs.h"
-#include "i965_drv_video.h"
-#include "i965_post_processing.h"
-#include "i965_render.h"
-#include "i965_yuv_coefs.h"
-#include "intel_media.h"
-
-#include "gen75_picture_process.h"
-#include "intel_common_vpp_internal.h"
-
-#define SURFACE_STATE_PADDED_SIZE SURFACE_STATE_PADDED_SIZE_GEN8
-
-#define SURFACE_STATE_OFFSET(index) (SURFACE_STATE_PADDED_SIZE * index)
-#define BINDING_TABLE_OFFSET SURFACE_STATE_OFFSET(MAX_PP_SURFACES)
-
-#define GPU_ASM_BLOCK_WIDTH 16
-#define GPU_ASM_BLOCK_HEIGHT 8
-#define GPU_ASM_X_OFFSET_ALIGNMENT 4
-
-#define VA_STATUS_SUCCESS_1 0xFFFFFFFE
-
-VAStatus pp_null_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param);
-
-VAStatus gen8_pp_plx_avs_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param);
-
-/* TODO: Modify the shader and then compile it again.
- * Currently it is derived from Haswell*/
-static const uint32_t pp_null_gen8[][4] = {
-};
-
-static const uint32_t pp_nv12_load_save_nv12_gen8[][4] = {
-#include "shaders/post_processing/gen8/pl2_to_pl2.g8b"
-};
-
-static const uint32_t pp_nv12_load_save_pl3_gen8[][4] = {
-#include "shaders/post_processing/gen8/pl2_to_pl3.g8b"
-};
-
-static const uint32_t pp_pl3_load_save_nv12_gen8[][4] = {
-#include "shaders/post_processing/gen8/pl3_to_pl2.g8b"
-};
-
-static const uint32_t pp_pl3_load_save_pl3_gen8[][4] = {
-#include "shaders/post_processing/gen8/pl3_to_pl3.g8b"
-};
-
-static const uint32_t pp_nv12_scaling_gen8[][4] = {
-#include "shaders/post_processing/gen8/pl2_to_pl2.g8b"
-};
-
-static const uint32_t pp_nv12_avs_gen8[][4] = {
-#include "shaders/post_processing/gen8/pl2_to_pl2.g8b"
-};
-
-static const uint32_t pp_nv12_dndi_gen8[][4] = {
-// #include "shaders/post_processing/gen7/dndi.g75b"
-};
-
-static const uint32_t pp_nv12_dn_gen8[][4] = {
-// #include "shaders/post_processing/gen7/nv12_dn_nv12.g75b"
-};
-static const uint32_t pp_nv12_load_save_pa_gen8[][4] = {
-#include "shaders/post_processing/gen8/pl2_to_pa.g8b"
-};
-static const uint32_t pp_pl3_load_save_pa_gen8[][4] = {
-#include "shaders/post_processing/gen8/pl3_to_pa.g8b"
-};
-static const uint32_t pp_pa_load_save_nv12_gen8[][4] = {
-#include "shaders/post_processing/gen8/pa_to_pl2.g8b"
-};
-static const uint32_t pp_pa_load_save_pl3_gen8[][4] = {
-#include "shaders/post_processing/gen8/pa_to_pl3.g8b"
-};
-static const uint32_t pp_pa_load_save_pa_gen8[][4] = {
-#include "shaders/post_processing/gen8/pa_to_pa.g8b"
-};
-static const uint32_t pp_rgbx_load_save_nv12_gen8[][4] = {
-#include "shaders/post_processing/gen8/rgbx_to_nv12.g8b"
-};
-static const uint32_t pp_nv12_load_save_rgbx_gen8[][4] = {
-#include "shaders/post_processing/gen8/pl2_to_rgbx.g8b"
-};
-
-static struct pp_module pp_modules_gen8[] = {
- {
- {
- "NULL module (for testing)",
- PP_NULL,
- pp_null_gen8,
- sizeof(pp_null_gen8),
- NULL,
- },
-
- pp_null_initialize,
- },
-
- {
- {
- "NV12_NV12",
- PP_NV12_LOAD_SAVE_N12,
- pp_nv12_load_save_nv12_gen8,
- sizeof(pp_nv12_load_save_nv12_gen8),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "NV12_PL3",
- PP_NV12_LOAD_SAVE_PL3,
- pp_nv12_load_save_pl3_gen8,
- sizeof(pp_nv12_load_save_pl3_gen8),
- NULL,
- },
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "PL3_NV12",
- PP_PL3_LOAD_SAVE_N12,
- pp_pl3_load_save_nv12_gen8,
- sizeof(pp_pl3_load_save_nv12_gen8),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "PL3_PL3",
- PP_PL3_LOAD_SAVE_PL3,
- pp_pl3_load_save_pl3_gen8,
- sizeof(pp_pl3_load_save_pl3_gen8),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "NV12 Scaling module",
- PP_NV12_SCALING,
- pp_nv12_scaling_gen8,
- sizeof(pp_nv12_scaling_gen8),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "NV12 AVS module",
- PP_NV12_AVS,
- pp_nv12_avs_gen8,
- sizeof(pp_nv12_avs_gen8),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "NV12 DNDI module",
- PP_NV12_DNDI,
- pp_nv12_dndi_gen8,
- sizeof(pp_nv12_dndi_gen8),
- NULL,
- },
-
- pp_null_initialize,
- },
-
- {
- {
- "NV12 DN module",
- PP_NV12_DN,
- pp_nv12_dn_gen8,
- sizeof(pp_nv12_dn_gen8),
- NULL,
- },
-
- pp_null_initialize,
- },
- {
- {
- "NV12_PA module",
- PP_NV12_LOAD_SAVE_PA,
- pp_nv12_load_save_pa_gen8,
- sizeof(pp_nv12_load_save_pa_gen8),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "PL3_PA module",
- PP_PL3_LOAD_SAVE_PA,
- pp_pl3_load_save_pa_gen8,
- sizeof(pp_pl3_load_save_pa_gen8),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "PA_NV12 module",
- PP_PA_LOAD_SAVE_NV12,
- pp_pa_load_save_nv12_gen8,
- sizeof(pp_pa_load_save_nv12_gen8),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "PA_PL3 module",
- PP_PA_LOAD_SAVE_PL3,
- pp_pa_load_save_pl3_gen8,
- sizeof(pp_pa_load_save_pl3_gen8),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "PA_PA module",
- PP_PA_LOAD_SAVE_PA,
- pp_pa_load_save_pa_gen8,
- sizeof(pp_pa_load_save_pa_gen8),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "RGBX_NV12 module",
- PP_RGBX_LOAD_SAVE_NV12,
- pp_rgbx_load_save_nv12_gen8,
- sizeof(pp_rgbx_load_save_nv12_gen8),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "NV12_RGBX module",
- PP_NV12_LOAD_SAVE_RGBX,
- pp_nv12_load_save_rgbx_gen8,
- sizeof(pp_nv12_load_save_rgbx_gen8),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-};
-
-#define MAX_SCALING_SURFACES 16
-
-#define DEFAULT_MOCS 0
-
-static const uint32_t pp_yuv420p8_scaling_gen8[][4] = {
-#include "shaders/post_processing/gen8/conv_nv12.g8b"
-};
-
-static int
-pp_get_surface_fourcc(VADriverContextP ctx, const struct i965_surface *surface)
-{
- 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
-gen8_pp_set_surface_tiling(struct gen8_surface_state *ss, unsigned int tiling)
-{
- switch (tiling) {
- case I915_TILING_NONE:
- ss->ss0.tiled_surface = 0;
- ss->ss0.tile_walk = 0;
- break;
- case I915_TILING_X:
- ss->ss0.tiled_surface = 1;
- ss->ss0.tile_walk = I965_TILEWALK_XMAJOR;
- break;
- case I915_TILING_Y:
- ss->ss0.tiled_surface = 1;
- ss->ss0.tile_walk = I965_TILEWALK_YMAJOR;
- break;
- }
-}
-
-static void
-gen8_pp_set_surface2_tiling(struct gen8_surface_state2 *ss, unsigned int tiling)
-{
- switch (tiling) {
- case I915_TILING_NONE:
- ss->ss2.tiled_surface = 0;
- ss->ss2.tile_walk = 0;
- break;
- case I915_TILING_X:
- ss->ss2.tiled_surface = 1;
- ss->ss2.tile_walk = I965_TILEWALK_XMAJOR;
- break;
- case I915_TILING_Y:
- ss->ss2.tiled_surface = 1;
- ss->ss2.tile_walk = I965_TILEWALK_YMAJOR;
- break;
- }
-}
-
-
-static void
-gen8_pp_set_surface_state(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- dri_bo *surf_bo, unsigned long surf_bo_offset,
- int width, int height, int pitch, int format,
- int index, int is_target)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen8_surface_state *ss;
- dri_bo *ss_bo;
- unsigned int tiling;
- unsigned int swizzle;
-
- dri_bo_get_tiling(surf_bo, &tiling, &swizzle);
- ss_bo = pp_context->surface_state_binding_table.bo;
- assert(ss_bo);
-
- dri_bo_map(ss_bo, True);
- assert(ss_bo->virtual);
- ss = (struct gen8_surface_state *)((char *)ss_bo->virtual + SURFACE_STATE_OFFSET(index));
- memset(ss, 0, sizeof(*ss));
-
- if (IS_GEN9(i965->intel.device_info))
- ss->ss1.surface_mocs = GEN9_CACHE_PTE;
-
- ss->ss0.surface_type = I965_SURFACE_2D;
- ss->ss0.surface_format = format;
- ss->ss8.base_addr = surf_bo->offset + surf_bo_offset;
- ss->ss2.width = width - 1;
- ss->ss2.height = height - 1;
- ss->ss3.pitch = pitch - 1;
-
- /* Always set 1(align 4 mode) per B-spec */
- ss->ss0.vertical_alignment = 1;
- ss->ss0.horizontal_alignment = 1;
-
- gen8_pp_set_surface_tiling(ss, tiling);
- gen8_render_set_surface_scs(ss);
- dri_bo_emit_reloc(ss_bo,
- I915_GEM_DOMAIN_RENDER, is_target ? I915_GEM_DOMAIN_RENDER : 0,
- surf_bo_offset,
- SURFACE_STATE_OFFSET(index) + offsetof(struct gen8_surface_state, ss8),
- surf_bo);
- ((unsigned int *)((char *)ss_bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
- dri_bo_unmap(ss_bo);
-}
-
-
-static void
-gen8_pp_set_surface2_state(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- dri_bo *surf_bo, unsigned long surf_bo_offset,
- int width, int height, int wpitch,
- int xoffset, int yoffset,
- int format, int interleave_chroma,
- int index)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen8_surface_state2 *ss2;
- dri_bo *ss2_bo;
- unsigned int tiling;
- unsigned int swizzle;
-
- dri_bo_get_tiling(surf_bo, &tiling, &swizzle);
- ss2_bo = pp_context->surface_state_binding_table.bo;
- assert(ss2_bo);
-
- dri_bo_map(ss2_bo, True);
- assert(ss2_bo->virtual);
- ss2 = (struct gen8_surface_state2 *)((char *)ss2_bo->virtual + SURFACE_STATE_OFFSET(index));
- memset(ss2, 0, sizeof(*ss2));
-
- if (IS_GEN9(i965->intel.device_info))
- ss2->ss5.surface_object_mocs = GEN9_CACHE_PTE;
-
- ss2->ss6.base_addr = surf_bo->offset + surf_bo_offset;
- ss2->ss1.cbcr_pixel_offset_v_direction = 0;
- ss2->ss1.width = width - 1;
- ss2->ss1.height = height - 1;
- ss2->ss2.pitch = wpitch - 1;
- ss2->ss2.interleave_chroma = interleave_chroma;
- ss2->ss2.surface_format = format;
- ss2->ss3.x_offset_for_cb = xoffset;
- ss2->ss3.y_offset_for_cb = yoffset;
- gen8_pp_set_surface2_tiling(ss2, tiling);
- dri_bo_emit_reloc(ss2_bo,
- I915_GEM_DOMAIN_RENDER, 0,
- surf_bo_offset,
- SURFACE_STATE_OFFSET(index) + offsetof(struct gen8_surface_state2, ss6),
- surf_bo);
- ((unsigned int *)((char *)ss2_bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
- dri_bo_unmap(ss2_bo);
-}
-
-static void
-gen8_pp_set_media_rw_message_surface(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *surface,
- int base_index, int is_target,
- const VARectangle *rect,
- int *width, int *height, int *pitch, int *offset)
-{
- struct object_surface *obj_surface;
- struct object_image *obj_image;
- dri_bo *bo;
- int fourcc = pp_get_surface_fourcc(ctx, surface);
- const i965_fourcc_info *fourcc_info = get_fourcc_info(fourcc);
-
- if (fourcc_info == NULL)
- return;
-
- if (surface->type == I965_SURFACE_TYPE_SURFACE) {
- obj_surface = (struct object_surface *)surface->base;
- bo = obj_surface->bo;
- 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;
- offset[0] = 0;
-
- if (fourcc_info->num_planes == 1 && is_target)
- width[0] = width[0] * (fourcc_info->bpp[0] / 8); /* surface format is R8 */
-
- width[1] = MIN(rect->x / fourcc_info->hfactor + rect->width / fourcc_info->hfactor, obj_surface->cb_cr_width);
- height[1] = MIN(rect->y / fourcc_info->vfactor + rect->height / fourcc_info->vfactor, obj_surface->cb_cr_height);
- pitch[1] = obj_surface->cb_cr_pitch;
- offset[1] = obj_surface->y_cb_offset * obj_surface->width;
-
- width[2] = MIN(rect->x / fourcc_info->hfactor + rect->width / fourcc_info->hfactor, obj_surface->cb_cr_width);
- height[2] = MIN(rect->y / fourcc_info->vfactor + rect->height / fourcc_info->vfactor, obj_surface->cb_cr_height);
- pitch[2] = obj_surface->cb_cr_pitch;
- offset[2] = obj_surface->y_cr_offset * obj_surface->width;
- } else {
- int U = 0, V = 0;
-
- /* FIXME: add support for ARGB/ABGR image */
- obj_image = (struct object_image *)surface->base;
- bo = obj_image->bo;
- 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];
- offset[0] = obj_image->image.offsets[0];
-
- if (fourcc_info->num_planes == 1) {
- if (is_target)
- width[0] = width[0] * (fourcc_info->bpp[0] / 8); /* surface format is R8 */
- } else if (fourcc_info->num_planes == 2) {
- U = 1, V = 1;
- } else {
- assert(fourcc_info->num_components == 3);
-
- U = fourcc_info->components[1].plane;
- V = fourcc_info->components[2].plane;
- assert((U == 1 && V == 2) ||
- (U == 2 && V == 1));
- }
-
- /* Always set width/height although they aren't used for fourcc_info->num_planes == 1 */
- width[1] = MIN(rect->x / fourcc_info->hfactor + rect->width / fourcc_info->hfactor, obj_image->image.width / fourcc_info->hfactor);
- height[1] = MIN(rect->y / fourcc_info->vfactor + rect->height / fourcc_info->vfactor, obj_image->image.height / fourcc_info->vfactor);
- pitch[1] = obj_image->image.pitches[U];
- offset[1] = obj_image->image.offsets[U];
-
- width[2] = MIN(rect->x / fourcc_info->hfactor + rect->width / fourcc_info->hfactor, obj_image->image.width / fourcc_info->hfactor);
- height[2] = MIN(rect->y / fourcc_info->vfactor + rect->height / fourcc_info->vfactor, obj_image->image.height / fourcc_info->vfactor);
- pitch[2] = obj_image->image.pitches[V];
- offset[2] = obj_image->image.offsets[V];
- }
-
- if (is_target) {
- gen8_pp_set_surface_state(ctx, pp_context,
- bo, 0,
- ALIGN(width[0], 4) / 4, height[0], pitch[0],
- I965_SURFACEFORMAT_R8_UINT,
- base_index, 1);
-
- if (fourcc_info->num_planes == 2) {
- gen8_pp_set_surface_state(ctx, pp_context,
- bo, offset[1],
- ALIGN(width[1], 2) / 2, height[1], pitch[1],
- I965_SURFACEFORMAT_R8G8_SINT,
- base_index + 1, 1);
- } else if (fourcc_info->num_planes == 3) {
- gen8_pp_set_surface_state(ctx, pp_context,
- bo, offset[1],
- ALIGN(width[1], 4) / 4, height[1], pitch[1],
- I965_SURFACEFORMAT_R8_SINT,
- base_index + 1, 1);
- gen8_pp_set_surface_state(ctx, pp_context,
- bo, offset[2],
- ALIGN(width[2], 4) / 4, height[2], pitch[2],
- I965_SURFACEFORMAT_R8_SINT,
- base_index + 2, 1);
- }
-
- if (fourcc_info->format == I965_COLOR_RGB) {
- struct gen7_pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
- /* the format is MSB: X-B-G-R */
- pp_static_parameter->grf2.save_avs_rgb_swap = 0;
- if ((fourcc == VA_FOURCC_BGRA) ||
- (fourcc == VA_FOURCC_BGRX)) {
- /* It is stored as MSB: X-R-G-B */
- pp_static_parameter->grf2.save_avs_rgb_swap = 1;
- }
- }
- } else {
- int format0 = SURFACE_FORMAT_Y8_UNORM;
-
- switch (fourcc) {
- case VA_FOURCC_YUY2:
- format0 = SURFACE_FORMAT_YCRCB_NORMAL;
- break;
-
- case VA_FOURCC_UYVY:
- format0 = SURFACE_FORMAT_YCRCB_SWAPY;
- break;
-
- default:
- break;
- }
-
- if (fourcc_info->format == I965_COLOR_RGB) {
- struct gen7_pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
- /* Only R8G8B8A8_UNORM is supported for BGRX or RGBX */
- format0 = SURFACE_FORMAT_R8G8B8A8_UNORM;
- pp_static_parameter->grf2.src_avs_rgb_swap = 0;
- if ((fourcc == VA_FOURCC_BGRA) ||
- (fourcc == VA_FOURCC_BGRX)) {
- pp_static_parameter->grf2.src_avs_rgb_swap = 1;
- }
- }
-
- gen8_pp_set_surface2_state(ctx, pp_context,
- bo, offset[0],
- width[0], height[0], pitch[0],
- 0, 0,
- format0, 0,
- base_index);
-
- if (fourcc_info->num_planes == 2) {
- gen8_pp_set_surface2_state(ctx, pp_context,
- bo, offset[1],
- width[1], height[1], pitch[1],
- 0, 0,
- SURFACE_FORMAT_R8B8_UNORM, 0,
- base_index + 1);
- } else if (fourcc_info->num_planes == 3) {
- gen8_pp_set_surface2_state(ctx, pp_context,
- bo, offset[1],
- width[1], height[1], pitch[1],
- 0, 0,
- SURFACE_FORMAT_R8_UNORM, 0,
- base_index + 1);
- gen8_pp_set_surface2_state(ctx, pp_context,
- bo, offset[2],
- width[2], height[2], pitch[2],
- 0, 0,
- SURFACE_FORMAT_R8_UNORM, 0,
- base_index + 2);
- }
-
- gen8_pp_set_surface_state(ctx, pp_context,
- bo, 0,
- ALIGN(width[0], 4) / 4, height[0], pitch[0],
- I965_SURFACEFORMAT_R8_UINT,
- base_index + 3, 1);
-
- if (fourcc_info->num_planes == 2) {
- gen8_pp_set_surface_state(ctx, pp_context,
- bo, offset[1],
- ALIGN(width[1], 2) / 2, height[1], pitch[1],
- I965_SURFACEFORMAT_R8G8_SINT,
- base_index + 4, 1);
- } else if (fourcc_info->num_planes == 3) {
- gen8_pp_set_surface_state(ctx, pp_context,
- bo, offset[1],
- ALIGN(width[1], 4) / 4, height[1], pitch[1],
- I965_SURFACEFORMAT_R8_SINT,
- base_index + 4, 1);
- gen8_pp_set_surface_state(ctx, pp_context,
- bo, offset[2],
- ALIGN(width[2], 4) / 4, height[2], pitch[2],
- I965_SURFACEFORMAT_R8_SINT,
- base_index + 5, 1);
- }
- }
-}
-
-static int
-pp_null_x_steps(void *private_context)
-{
- return 1;
-}
-
-static int
-pp_null_y_steps(void *private_context)
-{
- return 1;
-}
-
-static int
-pp_null_set_block_parameter(struct i965_post_processing_context *pp_context, int x, int y)
-{
- return 0;
-}
-
-VAStatus
-pp_null_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param)
-{
- /* private function & data */
- pp_context->pp_x_steps = pp_null_x_steps;
- pp_context->pp_y_steps = pp_null_y_steps;
- pp_context->private_context = NULL;
- pp_context->pp_set_block_parameter = pp_null_set_block_parameter;
-
- dst_surface->flags = src_surface->flags;
-
- return VA_STATUS_SUCCESS;
-}
-
-static void calculate_boundary_block_mask(struct i965_post_processing_context *pp_context, const VARectangle *dst_rect)
-{
- int i, dst_width_adjust;
- /* x offset of dest surface must be dword aligned.
- * so we have to extend dst surface on left edge, and mask out pixels not interested
- */
- if (dst_rect->x%GPU_ASM_X_OFFSET_ALIGNMENT) {
- pp_context->block_horizontal_mask_left = 0;
- for (i=dst_rect->x%GPU_ASM_X_OFFSET_ALIGNMENT; i<GPU_ASM_BLOCK_WIDTH; i++)
- {
- pp_context->block_horizontal_mask_left |= 1<<i;
- }
- }
- else {
- pp_context->block_horizontal_mask_left = 0xffff;
- }
-
- dst_width_adjust = dst_rect->width + dst_rect->x%GPU_ASM_X_OFFSET_ALIGNMENT;
- if (dst_width_adjust%GPU_ASM_BLOCK_WIDTH){
- pp_context->block_horizontal_mask_right = (1 << (dst_width_adjust%GPU_ASM_BLOCK_WIDTH)) - 1;
- }
- else {
- pp_context->block_horizontal_mask_right = 0xffff;
- }
-
- if (dst_rect->height%GPU_ASM_BLOCK_HEIGHT){
- pp_context->block_vertical_mask_bottom = (1 << (dst_rect->height%GPU_ASM_BLOCK_HEIGHT)) - 1;
- }
- else {
- pp_context->block_vertical_mask_bottom = 0xff;
- }
-
-}
-
-static int
-gen7_pp_avs_x_steps(void *private_context)
-{
- struct pp_avs_context *pp_avs_context = private_context;
-
- return pp_avs_context->dest_w / 16;
-}
-
-static int
-gen7_pp_avs_y_steps(void *private_context)
-{
- struct pp_avs_context *pp_avs_context = private_context;
-
- return pp_avs_context->dest_h / 16;
-}
-
-static int
-gen7_pp_avs_set_block_parameter(struct i965_post_processing_context *pp_context, int x, int y)
-{
- struct pp_avs_context *pp_avs_context = (struct pp_avs_context *)pp_context->private_context;
- struct gen7_pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
-
- pp_inline_parameter->grf9.destination_block_horizontal_origin = x * 16 + pp_avs_context->dest_x;
- pp_inline_parameter->grf9.destination_block_vertical_origin = y * 16 + pp_avs_context->dest_y;
- pp_inline_parameter->grf9.constant_0 = 0xffffffff;
- pp_inline_parameter->grf9.sampler_load_main_video_x_scaling_step = pp_avs_context->horiz_range / pp_avs_context->src_w;
-
- return 0;
-}
-
-static void gen7_update_src_surface_uv_offset(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context,
- const struct i965_surface *surface)
-{
- struct gen7_pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
- int fourcc = pp_get_surface_fourcc(ctx, surface);
-
- if (fourcc == VA_FOURCC_YUY2) {
- pp_static_parameter->grf2.di_destination_packed_y_component_offset = 0;
- pp_static_parameter->grf2.di_destination_packed_u_component_offset = 1;
- pp_static_parameter->grf2.di_destination_packed_v_component_offset = 3;
- } else if (fourcc == VA_FOURCC_UYVY) {
- pp_static_parameter->grf2.di_destination_packed_y_component_offset = 1;
- pp_static_parameter->grf2.di_destination_packed_u_component_offset = 0;
- pp_static_parameter->grf2.di_destination_packed_v_component_offset = 2;
- }
-}
-
-static const AVSConfig gen8_avs_config = {
- .coeff_frac_bits = 6,
- .coeff_epsilon = 1.0f / (1U << 6),
- .num_phases = 16,
- .num_luma_coeffs = 8,
- .num_chroma_coeffs = 4,
-
- .coeff_range = {
- .lower_bound = {
- .y_k_h = { -2, -2, -2, -2, -2, -2, -2, -2 },
- .y_k_v = { -2, -2, -2, -2, -2, -2, -2, -2 },
- .uv_k_h = { -1, -2, -2, -1 },
- .uv_k_v = { -1, -2, -2, -1 },
- },
- .upper_bound = {
- .y_k_h = { 2, 2, 2, 2, 2, 2, 2, 2 },
- .y_k_v = { 2, 2, 2, 2, 2, 2, 2, 2 },
- .uv_k_h = { 1, 2, 2, 1 },
- .uv_k_v = { 1, 2, 2, 1 },
- },
- },
-};
-
-static int
-gen8_pp_get_8tap_filter_mode(VADriverContextP ctx,
- const struct i965_surface *surface)
-{
- int fourcc = pp_get_surface_fourcc(ctx, surface);
-
- if (fourcc == VA_FOURCC_YUY2 ||
- fourcc == VA_FOURCC_UYVY)
- return 1;
- else
- return 3;
-}
-
-static int
-gen8_pp_kernel_use_media_read_msg(VADriverContextP ctx,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- const struct i965_surface *dst_surface,
- const VARectangle *dst_rect)
-{
- int src_fourcc = pp_get_surface_fourcc(ctx, src_surface);
- int dst_fourcc = pp_get_surface_fourcc(ctx, dst_surface);
- const i965_fourcc_info *src_fourcc_info = get_fourcc_info(src_fourcc);
- const i965_fourcc_info *dst_fourcc_info = get_fourcc_info(dst_fourcc);
-
- if (!src_fourcc_info ||
- src_fourcc_info->subsampling != SUBSAMPLE_YUV420 ||
- !dst_fourcc_info ||
- dst_fourcc_info->subsampling != SUBSAMPLE_YUV420)
- return 0;
-
- if (src_rect->x == dst_rect->x &&
- src_rect->y == dst_rect->y &&
- src_rect->width == dst_rect->width &&
- src_rect->height == dst_rect->height)
- return 1;
-
- return 0;
-}
-
-VAStatus
-gen8_pp_plx_avs_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param)
-{
-/* TODO: Add the sampler_8x8 state */
- struct pp_avs_context *pp_avs_context = (struct pp_avs_context *)&pp_context->pp_avs_context;
- struct gen7_pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
- struct gen8_sampler_8x8_avs *sampler_8x8;
- int i;
- int width[3], height[3], pitch[3], offset[3];
- int src_width, src_height;
- unsigned char *cc_ptr;
- AVSState * const avs = &pp_avs_context->state;
- float sx, sy;
- const float * yuv_to_rgb_coefs;
- size_t yuv_to_rgb_coefs_size;
-
- memset(pp_static_parameter, 0, sizeof(struct gen7_pp_static_parameter));
-
- /* source surface */
- gen8_pp_set_media_rw_message_surface(ctx, pp_context, src_surface, 0, 0,
- src_rect,
- width, height, pitch, offset);
- src_height = height[0];
- src_width = width[0];
-
- /* destination surface */
- gen8_pp_set_media_rw_message_surface(ctx, pp_context, dst_surface, 24, 1,
- dst_rect,
- width, height, pitch, offset);
-
- /* sampler 8x8 state */
- dri_bo_map(pp_context->dynamic_state.bo, True);
- assert(pp_context->dynamic_state.bo->virtual);
-
- cc_ptr = (unsigned char *) pp_context->dynamic_state.bo->virtual +
- pp_context->sampler_offset;
- /* Currently only one gen8 sampler_8x8 is initialized */
- sampler_8x8 = (struct gen8_sampler_8x8_avs *) cc_ptr;
- memset(sampler_8x8, 0, sizeof(*sampler_8x8));
-
- sampler_8x8->dw0.gain_factor = 44;
- sampler_8x8->dw0.weak_edge_threshold = 1;
- sampler_8x8->dw0.strong_edge_threshold = 8;
- /* Use the value like that on Ivy instead of default
- * sampler_8x8->dw0.r3x_coefficient = 5;
- */
- sampler_8x8->dw0.r3x_coefficient = 27;
- sampler_8x8->dw0.r3c_coefficient = 5;
-
- sampler_8x8->dw2.global_noise_estimation = 255;
- sampler_8x8->dw2.non_edge_weight = 1;
- sampler_8x8->dw2.regular_weight = 2;
- sampler_8x8->dw2.strong_edge_weight = 7;
- /* Use the value like that on Ivy instead of default
- * sampler_8x8->dw2.r5x_coefficient = 7;
- * sampler_8x8->dw2.r5cx_coefficient = 7;
- * sampler_8x8->dw2.r5c_coefficient = 7;
- */
- sampler_8x8->dw2.r5x_coefficient = 9;
- sampler_8x8->dw2.r5cx_coefficient = 8;
- sampler_8x8->dw2.r5c_coefficient = 3;
-
- sampler_8x8->dw3.sin_alpha = 101; /* sin_alpha = 0 */
- sampler_8x8->dw3.cos_alpha = 79; /* cos_alpha = 0 */
- sampler_8x8->dw3.sat_max = 0x1f;
- sampler_8x8->dw3.hue_max = 14;
- /* The 8tap filter will determine whether the adaptive Filter is
- * applied for all channels(dw153).
- * If the 8tap filter is disabled, the adaptive filter should be disabled.
- * Only when 8tap filter is enabled, it can be enabled or not.
- */
- sampler_8x8->dw3.enable_8tap_filter = gen8_pp_get_8tap_filter_mode(ctx, src_surface);
- sampler_8x8->dw3.ief4_smooth_enable = 0;
-
- sampler_8x8->dw4.s3u = 0;
- sampler_8x8->dw4.diamond_margin = 4;
- sampler_8x8->dw4.vy_std_enable = 0;
- sampler_8x8->dw4.umid = 110;
- sampler_8x8->dw4.vmid = 154;
-
- sampler_8x8->dw5.diamond_dv = 0;
- sampler_8x8->dw5.diamond_th = 35;
- sampler_8x8->dw5.diamond_alpha = 100; /* diamond_alpha = 0 */
- sampler_8x8->dw5.hs_margin = 3;
- sampler_8x8->dw5.diamond_du = 2;
-
- sampler_8x8->dw6.y_point1 = 46;
- sampler_8x8->dw6.y_point2 = 47;
- sampler_8x8->dw6.y_point3 = 254;
- sampler_8x8->dw6.y_point4 = 255;
-
- sampler_8x8->dw7.inv_margin_vyl = 3300; /* inv_margin_vyl = 0 */
-
- sampler_8x8->dw8.inv_margin_vyu = 1600; /* inv_margin_vyu = 0 */
- sampler_8x8->dw8.p0l = 46;
- sampler_8x8->dw8.p1l = 216;
-
- sampler_8x8->dw9.p2l = 236;
- sampler_8x8->dw9.p3l = 236;
- sampler_8x8->dw9.b0l = 133;
- sampler_8x8->dw9.b1l = 130;
-
- sampler_8x8->dw10.b2l = 130;
- sampler_8x8->dw10.b3l = 130;
- /* s0l = -5 / 256. s2.8 */
- sampler_8x8->dw10.s0l = 1029; /* s0l = 0 */
- sampler_8x8->dw10.y_slope2 = 31; /* y_slop2 = 0 */
-
- sampler_8x8->dw11.s1l = 0;
- sampler_8x8->dw11.s2l = 0;
-
- sampler_8x8->dw12.s3l = 0;
- sampler_8x8->dw12.p0u = 46;
- sampler_8x8->dw12.p1u = 66;
- sampler_8x8->dw12.y_slope1 = 31; /* y_slope1 = 0 */
-
- sampler_8x8->dw13.p2u = 130;
- sampler_8x8->dw13.p3u = 236;
- sampler_8x8->dw13.b0u = 143;
- sampler_8x8->dw13.b1u = 163;
-
- sampler_8x8->dw14.b2u = 200;
- sampler_8x8->dw14.b3u = 140;
- sampler_8x8->dw14.s0u = 256; /* s0u = 0 */
-
- sampler_8x8->dw15.s1u = 113; /* s1u = 0 */
- sampler_8x8->dw15.s2u = 1203; /* s2u = 0 */
-
- sx = (float)dst_rect->width / src_rect->width;
- sy = (float)dst_rect->height / src_rect->height;
- avs_update_coefficients(avs, sx, sy, pp_context->filter_flags);
-
- assert(avs->config->num_phases >= 16);
- for (i = 0; i <= 16; i++) {
- struct gen8_sampler_8x8_avs_coefficients * const sampler_8x8_state =
- &sampler_8x8->coefficients[i];
- const AVSCoeffs * const coeffs = &avs->coeffs[i];
-
- sampler_8x8_state->dw0.table_0x_filter_c0 =
- intel_format_convert(coeffs->y_k_h[0], 1, 6, 1);
- sampler_8x8_state->dw0.table_0y_filter_c0 =
- intel_format_convert(coeffs->y_k_v[0], 1, 6, 1);
- sampler_8x8_state->dw0.table_0x_filter_c1 =
- intel_format_convert(coeffs->y_k_h[1], 1, 6, 1);
- sampler_8x8_state->dw0.table_0y_filter_c1 =
- intel_format_convert(coeffs->y_k_v[1], 1, 6, 1);
-
- sampler_8x8_state->dw1.table_0x_filter_c2 =
- intel_format_convert(coeffs->y_k_h[2], 1, 6, 1);
- sampler_8x8_state->dw1.table_0y_filter_c2 =
- intel_format_convert(coeffs->y_k_v[2], 1, 6, 1);
- sampler_8x8_state->dw1.table_0x_filter_c3 =
- intel_format_convert(coeffs->y_k_h[3], 1, 6, 1);
- sampler_8x8_state->dw1.table_0y_filter_c3 =
- intel_format_convert(coeffs->y_k_v[3], 1, 6, 1);
-
- sampler_8x8_state->dw2.table_0x_filter_c4 =
- intel_format_convert(coeffs->y_k_h[4], 1, 6, 1);
- sampler_8x8_state->dw2.table_0y_filter_c4 =
- intel_format_convert(coeffs->y_k_v[4], 1, 6, 1);
- sampler_8x8_state->dw2.table_0x_filter_c5 =
- intel_format_convert(coeffs->y_k_h[5], 1, 6, 1);
- sampler_8x8_state->dw2.table_0y_filter_c5 =
- intel_format_convert(coeffs->y_k_v[5], 1, 6, 1);
-
- sampler_8x8_state->dw3.table_0x_filter_c6 =
- intel_format_convert(coeffs->y_k_h[6], 1, 6, 1);
- sampler_8x8_state->dw3.table_0y_filter_c6 =
- intel_format_convert(coeffs->y_k_v[6], 1, 6, 1);
- sampler_8x8_state->dw3.table_0x_filter_c7 =
- intel_format_convert(coeffs->y_k_h[7], 1, 6, 1);
- sampler_8x8_state->dw3.table_0y_filter_c7 =
- intel_format_convert(coeffs->y_k_v[7], 1, 6, 1);
-
- sampler_8x8_state->dw4.pad0 = 0;
- sampler_8x8_state->dw5.pad0 = 0;
- sampler_8x8_state->dw4.table_1x_filter_c2 =
- intel_format_convert(coeffs->uv_k_h[0], 1, 6, 1);
- sampler_8x8_state->dw4.table_1x_filter_c3 =
- intel_format_convert(coeffs->uv_k_h[1], 1, 6, 1);
- sampler_8x8_state->dw5.table_1x_filter_c4 =
- intel_format_convert(coeffs->uv_k_h[2], 1, 6, 1);
- sampler_8x8_state->dw5.table_1x_filter_c5 =
- intel_format_convert(coeffs->uv_k_h[3], 1, 6, 1);
-
- sampler_8x8_state->dw6.pad0 =
- sampler_8x8_state->dw7.pad0 =
- sampler_8x8_state->dw6.table_1y_filter_c2 =
- intel_format_convert(coeffs->uv_k_v[0], 1, 6, 1);
- sampler_8x8_state->dw6.table_1y_filter_c3 =
- intel_format_convert(coeffs->uv_k_v[1], 1, 6, 1);
- sampler_8x8_state->dw7.table_1y_filter_c4 =
- intel_format_convert(coeffs->uv_k_v[2], 1, 6, 1);
- sampler_8x8_state->dw7.table_1y_filter_c5 =
- intel_format_convert(coeffs->uv_k_v[3], 1, 6, 1);
- }
-
- sampler_8x8->dw152.default_sharpness_level =
- -avs_is_needed(pp_context->filter_flags);
- sampler_8x8->dw153.adaptive_filter_for_all_channel = 1;
- sampler_8x8->dw153.bypass_y_adaptive_filtering = 1;
- sampler_8x8->dw153.bypass_x_adaptive_filtering = 1;
-
- for ( ; i <= avs->config->num_phases; i++) {
- struct gen8_sampler_8x8_avs_coefficients * const sampler_8x8_state =
- &sampler_8x8->coefficients1[i - 17];
- const AVSCoeffs * const coeffs = &avs->coeffs[i];
-
- sampler_8x8_state->dw0.table_0x_filter_c0 =
- intel_format_convert(coeffs->y_k_h[0], 1, 6, 1);
- sampler_8x8_state->dw0.table_0y_filter_c0 =
- intel_format_convert(coeffs->y_k_v[0], 1, 6, 1);
- sampler_8x8_state->dw0.table_0x_filter_c1 =
- intel_format_convert(coeffs->y_k_h[1], 1, 6, 1);
- sampler_8x8_state->dw0.table_0y_filter_c1 =
- intel_format_convert(coeffs->y_k_v[1], 1, 6, 1);
-
- sampler_8x8_state->dw1.table_0x_filter_c2 =
- intel_format_convert(coeffs->y_k_h[2], 1, 6, 1);
- sampler_8x8_state->dw1.table_0y_filter_c2 =
- intel_format_convert(coeffs->y_k_v[2], 1, 6, 1);
- sampler_8x8_state->dw1.table_0x_filter_c3 =
- intel_format_convert(coeffs->y_k_h[3], 1, 6, 1);
- sampler_8x8_state->dw1.table_0y_filter_c3 =
- intel_format_convert(coeffs->y_k_v[3], 1, 6, 1);
-
- sampler_8x8_state->dw2.table_0x_filter_c4 =
- intel_format_convert(coeffs->y_k_h[4], 1, 6, 1);
- sampler_8x8_state->dw2.table_0y_filter_c4 =
- intel_format_convert(coeffs->y_k_v[4], 1, 6, 1);
- sampler_8x8_state->dw2.table_0x_filter_c5 =
- intel_format_convert(coeffs->y_k_h[5], 1, 6, 1);
- sampler_8x8_state->dw2.table_0y_filter_c5 =
- intel_format_convert(coeffs->y_k_v[5], 1, 6, 1);
-
- sampler_8x8_state->dw3.table_0x_filter_c6 =
- intel_format_convert(coeffs->y_k_h[6], 1, 6, 1);
- sampler_8x8_state->dw3.table_0y_filter_c6 =
- intel_format_convert(coeffs->y_k_v[6], 1, 6, 1);
- sampler_8x8_state->dw3.table_0x_filter_c7 =
- intel_format_convert(coeffs->y_k_h[7], 1, 6, 1);
- sampler_8x8_state->dw3.table_0y_filter_c7 =
- intel_format_convert(coeffs->y_k_v[7], 1, 6, 1);
-
- sampler_8x8_state->dw4.pad0 = 0;
- sampler_8x8_state->dw5.pad0 = 0;
- sampler_8x8_state->dw4.table_1x_filter_c2 =
- intel_format_convert(coeffs->uv_k_h[0], 1, 6, 1);
- sampler_8x8_state->dw4.table_1x_filter_c3 =
- intel_format_convert(coeffs->uv_k_h[1], 1, 6, 1);
- sampler_8x8_state->dw5.table_1x_filter_c4 =
- intel_format_convert(coeffs->uv_k_h[2], 1, 6, 1);
- sampler_8x8_state->dw5.table_1x_filter_c5 =
- intel_format_convert(coeffs->uv_k_h[3], 1, 6, 1);
-
- sampler_8x8_state->dw6.pad0 =
- sampler_8x8_state->dw7.pad0 =
- sampler_8x8_state->dw6.table_1y_filter_c2 =
- intel_format_convert(coeffs->uv_k_v[0], 1, 6, 1);
- sampler_8x8_state->dw6.table_1y_filter_c3 =
- intel_format_convert(coeffs->uv_k_v[1], 1, 6, 1);
- sampler_8x8_state->dw7.table_1y_filter_c4 =
- intel_format_convert(coeffs->uv_k_v[2], 1, 6, 1);
- sampler_8x8_state->dw7.table_1y_filter_c5 =
- intel_format_convert(coeffs->uv_k_v[3], 1, 6, 1);
- }
-
- dri_bo_unmap(pp_context->dynamic_state.bo);
-
-
- /* private function & data */
- pp_context->pp_x_steps = gen7_pp_avs_x_steps;
- pp_context->pp_y_steps = gen7_pp_avs_y_steps;
- pp_context->private_context = &pp_context->pp_avs_context;
- pp_context->pp_set_block_parameter = gen7_pp_avs_set_block_parameter;
-
- int dst_left_edge_extend = dst_rect->x%GPU_ASM_X_OFFSET_ALIGNMENT;
- pp_avs_context->dest_x = dst_rect->x - dst_left_edge_extend;
- pp_avs_context->dest_y = dst_rect->y;
- pp_avs_context->dest_w = ALIGN(dst_rect->width + dst_left_edge_extend, 16);
- pp_avs_context->dest_h = ALIGN(dst_rect->height, 16);
- pp_avs_context->src_w = src_rect->width;
- pp_avs_context->src_h = src_rect->height;
- pp_avs_context->horiz_range = (float)src_rect->width / src_width;
-
- int dw = (pp_avs_context->src_w - 1) / 16 + 1;
- dw = MAX(dw, dst_rect->width + dst_left_edge_extend);
-
- pp_static_parameter->grf1.pointer_to_inline_parameter = 7;
- pp_static_parameter->grf2.avs_wa_enable = gen8_pp_kernel_use_media_read_msg(ctx,
- src_surface, src_rect,
- dst_surface, dst_rect); /* reuse this flag for media block reading on gen8+ */
- pp_static_parameter->grf2.alpha = 255;
-
- pp_static_parameter->grf3.sampler_load_horizontal_scaling_step_ratio = (float) pp_avs_context->src_w / dw;
- pp_static_parameter->grf4.sampler_load_vertical_scaling_step = (float) src_rect->height / src_height / dst_rect->height;
- pp_static_parameter->grf5.sampler_load_vertical_frame_origin = (float) src_rect->y / src_height -
- (float) pp_avs_context->dest_y * pp_static_parameter->grf4.sampler_load_vertical_scaling_step;
- pp_static_parameter->grf6.sampler_load_horizontal_frame_origin = (float) src_rect->x / src_width -
- (float) pp_avs_context->dest_x * pp_avs_context->horiz_range / dw;
-
- gen7_update_src_surface_uv_offset(ctx, pp_context, dst_surface);
-
- yuv_to_rgb_coefs = i915_color_standard_to_coefs (i915_filter_to_color_standard (src_surface->flags &
- VA_SRC_COLOR_MASK),
- &yuv_to_rgb_coefs_size);
- memcpy(&pp_static_parameter->grf7, yuv_to_rgb_coefs, yuv_to_rgb_coefs_size);
-
- dst_surface->flags = src_surface->flags;
-
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus
-gen8_pp_initialize(
- VADriverContextP ctx,
- struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- int pp_index,
- void * filter_param
-)
-{
- VAStatus va_status;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- dri_bo *bo;
- int bo_size;
- unsigned int end_offset;
- struct pp_module *pp_module;
- int static_param_size, inline_param_size;
-
- dri_bo_unreference(pp_context->surface_state_binding_table.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "surface state & binding table",
- (SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_PP_SURFACES,
- 4096);
- assert(bo);
- pp_context->surface_state_binding_table.bo = bo;
-
- pp_context->idrt.num_interface_descriptors = 0;
-
- pp_context->sampler_size = 4 * 4096;
-
- bo_size = 4096 + pp_context->curbe_size + pp_context->sampler_size
- + pp_context->idrt_size;
-
- dri_bo_unreference(pp_context->dynamic_state.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "dynamic_state",
- bo_size,
- 4096);
-
- assert(bo);
- pp_context->dynamic_state.bo = bo;
- pp_context->dynamic_state.bo_size = bo_size;
-
- end_offset = 0;
- pp_context->dynamic_state.end_offset = 0;
-
- /* Constant buffer offset */
- pp_context->curbe_offset = ALIGN(end_offset, 64);
- end_offset = pp_context->curbe_offset + pp_context->curbe_size;
-
- /* Interface descriptor offset */
- pp_context->idrt_offset = ALIGN(end_offset, 64);
- end_offset = pp_context->idrt_offset + pp_context->idrt_size;
-
- /* Sampler state offset */
- pp_context->sampler_offset = ALIGN(end_offset, 64);
- end_offset = pp_context->sampler_offset + pp_context->sampler_size;
-
- /* update the end offset of dynamic_state */
- pp_context->dynamic_state.end_offset = ALIGN(end_offset, 64);
-
- static_param_size = sizeof(struct gen7_pp_static_parameter);
- inline_param_size = sizeof(struct gen7_pp_inline_parameter);
-
- memset(pp_context->pp_static_parameter, 0, static_param_size);
- memset(pp_context->pp_inline_parameter, 0, inline_param_size);
-
- assert(pp_index >= PP_NULL && pp_index < NUM_PP_MODULES);
- pp_context->current_pp = pp_index;
- pp_module = &pp_context->pp_modules[pp_index];
-
- if (pp_module->initialize)
- va_status = pp_module->initialize(ctx, pp_context,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect,
- filter_param);
- else
- va_status = VA_STATUS_ERROR_UNIMPLEMENTED;
-
- calculate_boundary_block_mask(pp_context, dst_rect);
-
- return va_status;
-}
-
-static void
-gen8_pp_interface_descriptor_table(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct gen8_interface_descriptor_data *desc;
- dri_bo *bo;
- int pp_index = pp_context->current_pp;
- unsigned char *cc_ptr;
-
- bo = pp_context->dynamic_state.bo;
-
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- cc_ptr = (unsigned char *)bo->virtual + pp_context->idrt_offset;
-
- desc = (struct gen8_interface_descriptor_data *) cc_ptr +
- pp_context->idrt.num_interface_descriptors;
-
- memset(desc, 0, sizeof(*desc));
- desc->desc0.kernel_start_pointer =
- pp_context->pp_modules[pp_index].kernel.kernel_offset >> 6; /* reloc */
- desc->desc2.single_program_flow = 1;
- desc->desc2.floating_point_mode = FLOATING_POINT_IEEE_754;
- desc->desc3.sampler_count = 0; /* 1 - 4 samplers used */
- desc->desc3.sampler_state_pointer = pp_context->sampler_offset >> 5;
- desc->desc4.binding_table_entry_count = 0;
- desc->desc4.binding_table_pointer = (BINDING_TABLE_OFFSET >> 5);
- desc->desc5.constant_urb_entry_read_offset = 0;
-
- desc->desc5.constant_urb_entry_read_length = 8; /* grf 1-8 */
-
- dri_bo_unmap(bo);
- pp_context->idrt.num_interface_descriptors++;
-}
-
-
-static void
-gen8_pp_upload_constants(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- unsigned char *constant_buffer;
- int param_size;
-
- assert(sizeof(struct gen7_pp_static_parameter) == 256);
-
- param_size = sizeof(struct gen7_pp_static_parameter);
-
- dri_bo_map(pp_context->dynamic_state.bo, 1);
- assert(pp_context->dynamic_state.bo->virtual);
- constant_buffer = (unsigned char *) pp_context->dynamic_state.bo->virtual +
- pp_context->curbe_offset;
-
- memcpy(constant_buffer, pp_context->pp_static_parameter, param_size);
- dri_bo_unmap(pp_context->dynamic_state.bo);
- return;
-}
-
-void
-gen8_pp_states_setup(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- gen8_pp_interface_descriptor_table(ctx, pp_context);
- gen8_pp_upload_constants(ctx, pp_context);
-}
-
-static void
-gen6_pp_pipeline_select(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
-
- BEGIN_BATCH(batch, 1);
- OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_MEDIA);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen8_pp_state_base_address(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
-
- BEGIN_BATCH(batch, 16);
- OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | (16 - 2));
- /* DW1 Generate state address */
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
-
- /* DW4-5. Surface state address */
- OUT_RELOC64(batch, pp_context->surface_state_binding_table.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY); /* Surface state base address */
-
- /* DW6-7. Dynamic state address */
- OUT_RELOC64(batch, pp_context->dynamic_state.bo, I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_SAMPLER,
- 0, 0 | BASE_ADDRESS_MODIFY);
-
- /* DW8. Indirect object address */
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0);
-
- /* DW10-11. Instruction base address */
- OUT_RELOC64(batch, pp_context->instruction_state.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY);
-
- OUT_BATCH(batch, 0xFFFF0000 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0xFFFF0000 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0xFFFF0000 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0xFFFF0000 | BASE_ADDRESS_MODIFY);
- ADVANCE_BATCH(batch);
-}
-
-void
-gen8_pp_vfe_state(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
-
- BEGIN_BATCH(batch, 9);
- OUT_BATCH(batch, CMD_MEDIA_VFE_STATE | (9 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch,
- (pp_context->vfe_gpu_state.max_num_threads - 1) << 16 |
- pp_context->vfe_gpu_state.num_urb_entries << 8);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch,
- (pp_context->vfe_gpu_state.urb_entry_size) << 16 |
- /* URB Entry Allocation Size, in 256 bits unit */
- (pp_context->vfe_gpu_state.curbe_allocation_size));
- /* CURBE Allocation Size, in 256 bits unit */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-void
-gen8_interface_descriptor_load(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
-
- BEGIN_BATCH(batch, 6);
-
- OUT_BATCH(batch, CMD_MEDIA_STATE_FLUSH);
- OUT_BATCH(batch, 0);
-
- OUT_BATCH(batch, CMD_MEDIA_INTERFACE_DESCRIPTOR_LOAD | (4 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch,
- pp_context->idrt.num_interface_descriptors * sizeof(struct gen8_interface_descriptor_data));
- OUT_BATCH(batch, pp_context->idrt_offset);
- ADVANCE_BATCH(batch);
-}
-
-void
-gen8_pp_curbe_load(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
- int param_size = 64;
-
- param_size = sizeof(struct gen7_pp_static_parameter);
-
- BEGIN_BATCH(batch, 4);
- OUT_BATCH(batch, CMD_MEDIA_CURBE_LOAD | (4 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch,
- param_size);
- OUT_BATCH(batch, pp_context->curbe_offset);
- ADVANCE_BATCH(batch);
-}
-
-void
-gen8_pp_object_walker(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = pp_context->batch;
- int x, x_steps, y, y_steps;
- int param_size, command_length_in_dws, extra_cmd_in_dws;
- dri_bo *command_buffer;
- unsigned int *command_ptr;
-
- param_size = sizeof(struct gen7_pp_inline_parameter);
-
- x_steps = pp_context->pp_x_steps(pp_context->private_context);
- y_steps = pp_context->pp_y_steps(pp_context->private_context);
- command_length_in_dws = 6 + (param_size >> 2);
- extra_cmd_in_dws = 2;
- command_buffer = dri_bo_alloc(i965->intel.bufmgr,
- "command objects buffer",
- (command_length_in_dws + extra_cmd_in_dws) * 4 * x_steps * y_steps + 64,
- 4096);
-
- dri_bo_map(command_buffer, 1);
- command_ptr = command_buffer->virtual;
-
- for (y = 0; y < y_steps; y++) {
- for (x = 0; x < x_steps; x++) {
- if (!pp_context->pp_set_block_parameter(pp_context, x, y)) {
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (command_length_in_dws - 2));
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- memcpy(command_ptr, pp_context->pp_inline_parameter, param_size);
- command_ptr += (param_size >> 2);
-
- *command_ptr++ = CMD_MEDIA_STATE_FLUSH;
- *command_ptr++ = 0;
- }
- }
- }
-
- if ((command_length_in_dws + extra_cmd_in_dws) * x_steps * y_steps % 2 == 0)
- *command_ptr++ = 0;
-
- *command_ptr++ = MI_BATCH_BUFFER_END;
- *command_ptr++ = 0;
-
- dri_bo_unmap(command_buffer);
-
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8) | (1 << 0));
- OUT_RELOC64(batch, command_buffer,
- I915_GEM_DOMAIN_COMMAND, 0, 0);
- ADVANCE_BATCH(batch);
-
- dri_bo_unreference(command_buffer);
-
- /* Have to execute the batch buffer here becuase MI_BATCH_BUFFER_END
- * will cause control to pass back to ring buffer
- */
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
- intel_batchbuffer_start_atomic(batch, 0x1000);
-}
-
-static void
-gen8_pp_pipeline_setup(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- gen6_pp_pipeline_select(ctx, pp_context);
- gen8_pp_state_base_address(ctx, pp_context);
- gen8_pp_vfe_state(ctx, pp_context);
- gen8_pp_curbe_load(ctx, pp_context);
- gen8_interface_descriptor_load(ctx, pp_context);
- gen8_pp_vfe_state(ctx, pp_context);
- gen8_pp_object_walker(ctx, pp_context);
- intel_batchbuffer_end_atomic(batch);
-}
-
-static VAStatus
-gen8_post_processing(
- VADriverContextP ctx,
- struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- int pp_index,
- void * filter_param
-)
-{
- VAStatus va_status;
-
- va_status = gen8_pp_initialize(ctx, pp_context,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect,
- pp_index,
- filter_param);
-
- if (va_status == VA_STATUS_SUCCESS) {
- gen8_pp_states_setup(ctx, pp_context);
- gen8_pp_pipeline_setup(ctx, pp_context);
- }
-
- return va_status;
-}
-
-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->scaling_8bit_initialized & VPPGPE_8BIT_420) {
- gen8_gpe_context_destroy(&pp_context->scaling_yuv420p8_context);
- pp_context->scaling_8bit_initialized &= ~(VPPGPE_8BIT_420);
- }
-
- if(pp_context->vebox_proc_ctx){
- gen75_vebox_context_destroy(ctx,pp_context->vebox_proc_ctx);
- pp_context->vebox_proc_ctx = NULL;
- }
-
- dri_bo_unreference(pp_context->surface_state_binding_table.bo);
- pp_context->surface_state_binding_table.bo = NULL;
-
- dri_bo_unreference(pp_context->pp_dn_context.stmm_bo);
- pp_context->pp_dn_context.stmm_bo = NULL;
-
- if (pp_context->instruction_state.bo) {
- dri_bo_unreference(pp_context->instruction_state.bo);
- pp_context->instruction_state.bo = NULL;
- }
-
- if (pp_context->indirect_state.bo) {
- dri_bo_unreference(pp_context->indirect_state.bo);
- pp_context->indirect_state.bo = NULL;
- }
-
- if (pp_context->dynamic_state.bo) {
- dri_bo_unreference(pp_context->dynamic_state.bo);
- pp_context->dynamic_state.bo = NULL;
- }
-
- free(pp_context->pp_static_parameter);
- free(pp_context->pp_inline_parameter);
- pp_context->pp_static_parameter = NULL;
- pp_context->pp_inline_parameter = NULL;
-}
-
-#define VPP_CURBE_ALLOCATION_SIZE 32
-
-void
-gen8_post_processing_context_common_init(VADriverContextP ctx,
- void *data,
- struct pp_module *pp_modules,
- int num_pp_modules,
- struct intel_batchbuffer *batch)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- int i, kernel_size;
- unsigned int kernel_offset, end_offset;
- unsigned char *kernel_ptr;
- struct pp_module *pp_module;
- struct i965_post_processing_context *pp_context = data;
-
- if (i965->intel.eu_total > 0)
- pp_context->vfe_gpu_state.max_num_threads = 6 * i965->intel.eu_total;
- else
- pp_context->vfe_gpu_state.max_num_threads = 60;
- pp_context->vfe_gpu_state.num_urb_entries = 59;
- pp_context->vfe_gpu_state.gpgpu_mode = 0;
- pp_context->vfe_gpu_state.urb_entry_size = 16 - 1;
- pp_context->vfe_gpu_state.curbe_allocation_size = VPP_CURBE_ALLOCATION_SIZE;
-
- pp_context->intel_post_processing = gen8_post_processing;
- pp_context->finalize = gen8_post_processing_context_finalize;
-
- assert(ARRAY_ELEMS(pp_context->pp_modules) == num_pp_modules);
-
- memcpy(pp_context->pp_modules, pp_modules, sizeof(pp_context->pp_modules));
-
- kernel_size = 4096 ;
-
- for (i = 0; i < NUM_PP_MODULES; i++) {
- pp_module = &pp_context->pp_modules[i];
-
- if (pp_module->kernel.bin && pp_module->kernel.size) {
- kernel_size += pp_module->kernel.size;
- }
- }
-
- pp_context->instruction_state.bo = dri_bo_alloc(i965->intel.bufmgr,
- "kernel shader",
- kernel_size,
- 0x1000);
- if (pp_context->instruction_state.bo == NULL) {
- WARN_ONCE("failure to allocate the buffer space for kernel shader in VPP\n");
- return;
- }
-
- assert(pp_context->instruction_state.bo);
-
-
- pp_context->instruction_state.bo_size = kernel_size;
- pp_context->instruction_state.end_offset = 0;
- end_offset = 0;
-
- dri_bo_map(pp_context->instruction_state.bo, 1);
- kernel_ptr = (unsigned char *)(pp_context->instruction_state.bo->virtual);
-
- for (i = 0; i < NUM_PP_MODULES; i++) {
- pp_module = &pp_context->pp_modules[i];
-
- kernel_offset = ALIGN(end_offset, 64);
- pp_module->kernel.kernel_offset = kernel_offset;
-
- if (pp_module->kernel.bin && pp_module->kernel.size) {
-
- memcpy(kernel_ptr + kernel_offset, pp_module->kernel.bin, pp_module->kernel.size);
- end_offset = kernel_offset + pp_module->kernel.size;
- }
- }
-
- pp_context->instruction_state.end_offset = ALIGN(end_offset, 64);
-
- dri_bo_unmap(pp_context->instruction_state.bo);
-
- /* static & inline parameters */
- pp_context->pp_static_parameter = calloc(sizeof(struct gen7_pp_static_parameter), 1);
- pp_context->pp_inline_parameter = calloc(sizeof(struct gen7_pp_inline_parameter), 1);
-
- pp_context->batch = batch;
-
- pp_context->idrt_size = 5 * sizeof(struct gen8_interface_descriptor_data);
- pp_context->curbe_size = 256;
-
-}
-
-void
-gen8_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_gen8, ARRAY_ELEMS(pp_modules_gen8), batch);
- avs_init_state(&pp_context->pp_avs_context.state, &gen8_avs_config);
-
- /* initialize the YUV420 8-Bit scaling context. The below is supported.
- * NV12 ->NV12
- * NV12 ->I420
- * I420 ->I420
- * I420 ->NV12
- */
- gpe_context = &pp_context->scaling_yuv420p8_context;
- memset(&scaling_kernel, 0, sizeof(scaling_kernel));
- scaling_kernel.bin = pp_yuv420p8_scaling_gen8;
- scaling_kernel.size = sizeof(pp_yuv420p8_scaling_gen8);
- gen8_gpe_load_kernels(ctx, gpe_context, &scaling_kernel, 1);
- gpe_context->idrt.entry_size = ALIGN(sizeof(struct gen8_interface_descriptor_data), 64);
- gpe_context->idrt.max_entries = 1;
- gpe_context->sampler.entry_size = ALIGN(sizeof(struct gen8_sampler_state), 64);
- gpe_context->sampler.max_entries = 1;
- gpe_context->curbe.length = ALIGN(sizeof(struct scaling_input_parameter), 32);
-
- 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_GEN8, 64);
-
- if (i965->intel.eu_total > 0) {
- gpe_context->vfe_state.max_num_threads = i965->intel.eu_total * 6;
- } else {
- 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;
- if (i965->intel.has_bsd2)
- gpe_context->vfe_state.num_urb_entries = 127;
- else
- gpe_context->vfe_state.num_urb_entries = 64;
-
- gpe_context->vfe_state.gpgpu_mode = 0;
-
- gen8_gpe_context_init(ctx, gpe_context);
- pp_context->scaling_8bit_initialized = VPPGPE_8BIT_420;
- return;
-}
-
-static void
-gen8_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);
-
- gen8_gpe_pipeline_setup(ctx, gpe_context, batch);
- gen8_gpe_media_object_walker(ctx, gpe_context, batch, param);
- gen8_gpe_media_state_flush(ctx, gpe_context, batch);
-
-
- intel_batchbuffer_end_atomic(batch);
-
- intel_batchbuffer_flush(batch);
- return;
-}
-
-static void
-gen8_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_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
-gen8_vpp_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->sampler.bo, 1);
-
- if (gpe_context->sampler.bo->virtual == NULL)
- return;
-
- assert(gpe_context->sampler.bo->virtual);
-
- sampler_state = (struct gen8_sampler_state *)
- (gpe_context->sampler.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->sampler.bo);
-}
-
-static void
-gen8_gpe_context_yuv420p8_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 = i965_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_NV12) {
- scaling_curbe->dw7.src_packed = 1;
- }
-
- fourcc = pp_get_surface_fourcc(ctx, dst_surface);
-
- if (fourcc == VA_FOURCC_NV12) {
- scaling_curbe->dw7.dst_packed = 1;
- }
-
- i965_gpe_context_unmap_curbe(gpe_context);
-}
-
-static bool
-gen8_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 || fourcc == VA_FOURCC_NV12) {
- 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/I420 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 || fourcc == VA_FOURCC_NV12) {
- 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/I420 format */
- /* YV12 is TBD */
- 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
-gen8_gpe_context_yuv420p8_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 (gen8_pp_context_get_surface_conf(ctx, src_surface, src_rect,
- width, height, pitch,
- bo_offset)) {
- bti = BTI_SCALING_INPUT_Y;
- /* Input surface */
- gen8_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
- bo_offset[0],
- width[0], height[0],
- pitch[0], 0,
- I965_SURFACEFORMAT_R8_UNORM,
- bti, 0);
- if (fourcc == VA_FOURCC_NV12) {
- gen8_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
- bo_offset[1],
- width[1], height[1],
- pitch[1], 0,
- I965_SURFACEFORMAT_R8G8_UNORM,
- bti + 1, 0);
- } else {
- gen8_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
- bo_offset[1],
- width[1], height[1],
- pitch[1], 0,
- I965_SURFACEFORMAT_R8_UNORM,
- bti + 1, 0);
-
- gen8_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
- bo_offset[2],
- width[2], height[2],
- pitch[2], 0,
- I965_SURFACEFORMAT_R8_UNORM,
- bti + 2, 0);
- }
- }
-
- 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 (gen8_pp_context_get_surface_conf(ctx, dst_surface, dst_rect,
- width, height, pitch,
- bo_offset)) {
- bti = BTI_SCALING_OUTPUT_Y;
- /* Input surface */
- gen8_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
- bo_offset[0],
- width[0], height[0],
- pitch[0], 1,
- I965_SURFACEFORMAT_R8_UINT,
- bti, 0);
- if (fourcc == VA_FOURCC_NV12) {
- gen8_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, 0);
- } else {
- gen8_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
- bo_offset[1],
- width[1], height[1],
- pitch[1], 1,
- I965_SURFACEFORMAT_R8_UINT,
- bti + 1, 0);
-
- gen8_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
- bo_offset[2],
- width[2], height[2],
- pitch[2], 1,
- I965_SURFACEFORMAT_R8_UINT,
- bti + 2, 0);
- }
- }
-
- return;
-}
-
-VAStatus
-gen8_yuv420p8_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_8bit_initialized & VPPGPE_8BIT_420))
- return VA_STATUS_ERROR_UNIMPLEMENTED;
-
- gpe_context = &pp_context->scaling_yuv420p8_context;
-
- gen8_gpe_context_init(ctx, gpe_context);
- gen8_vpp_scaling_sample_state(ctx, gpe_context, src_rect, dst_rect);
- gen8_gpe_reset_binding_table(ctx, gpe_context);
- gen8_gpe_context_yuv420p8_scaling_curbe(ctx, gpe_context,
- src_rect, src_surface,
- dst_rect, dst_surface);
-
- gen8_gpe_context_yuv420p8_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);
-
- gen8_run_kernel_media_object_walker(ctx, pp_context->batch,
- gpe_context,
- &media_object_walker_param);
-
- return VA_STATUS_SUCCESS;
-}
diff --git a/src/gen8_post_processing.h b/src/gen8_post_processing.h
deleted file mode 100644
index 18f523e..0000000
--- a/src/gen8_post_processing.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-#ifndef _GEN8_POST_PROCESSING_H_
-#define _GEN8_POST_PROCESSING_H_
-
-VAStatus pp_null_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param);
-
-VAStatus
-gen8_pp_plx_avs_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param);
-
-VAStatus
-gen8_pp_nv12_blending_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param);
-
-void
-gen8_pp_vfe_state(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context);
-
-void
-gen8_interface_descriptor_load(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context);
-
-void
-gen8_pp_curbe_load(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context);
-
-void
-gen8_pp_object_walker(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context);
-
-void
-gen8_pp_states_setup(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context);
-
-VAStatus
-gen8_pp_initialize(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- int pp_index,
- void *filter_param);
-
-void
-gen8_post_processing_context_common_init(VADriverContextP ctx,
- void *data,
- struct pp_module *pp_modules,
- int num_pp_modules,
- struct intel_batchbuffer *batch);
-
-#endif
diff --git a/src/gen8_render.c b/src/gen8_render.c
deleted file mode 100644
index 1bfe04c..0000000
--- a/src/gen8_render.c
+++ /dev/null
@@ -1,1819 +0,0 @@
-/*
- * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Eric Anholt <eric@anholt.net>
- * Keith Packard <keithp@keithp.com>
- * Xiang Haihao <haihao.xiang@intel.com>
- * Zhao Yakui <yakui.zhao@intel.com>
- *
- */
-
-/*
- * Most of rendering codes are ported from xf86-video-intel/src/i965_video.c
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <math.h>
-
-#include <va/va_drmcommon.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "i965_structs.h"
-#include "i965_yuv_coefs.h"
-
-#include "i965_render.h"
-
-#define SF_KERNEL_NUM_GRF 16
-#define SF_MAX_THREADS 1
-
-#define PS_KERNEL_NUM_GRF 48
-#define PS_MAX_THREADS 32
-
-/* Programs for Gen8 */
-static const uint32_t sf_kernel_static_gen8[][4] ={
-
-};
-static const uint32_t ps_kernel_static_gen8[][4] = {
-#include "shaders/render/exa_wm_src_affine.g8b"
-#include "shaders/render/exa_wm_src_sample_planar.g8b"
-#include "shaders/render/exa_wm_yuv_color_balance.g8b"
-#include "shaders/render/exa_wm_yuv_rgb.g8b"
-#include "shaders/render/exa_wm_write.g8b"
-};
-
-static const uint32_t ps_subpic_kernel_static_gen8[][4] = {
-#include "shaders/render/exa_wm_src_affine.g8b"
-#include "shaders/render/exa_wm_src_sample_argb.g8b"
-#include "shaders/render/exa_wm_write.g8b"
-};
-
-
-#define SURFACE_STATE_PADDED_SIZE SURFACE_STATE_PADDED_SIZE_GEN8
-
-#define SURFACE_STATE_OFFSET(index) (SURFACE_STATE_PADDED_SIZE * index)
-#define BINDING_TABLE_OFFSET SURFACE_STATE_OFFSET(MAX_RENDER_SURFACES)
-
-enum {
- SF_KERNEL = 0,
- PS_KERNEL,
- PS_SUBPIC_KERNEL
-};
-
-static struct i965_kernel render_kernels_gen8[] = {
- {
- "SF",
- SF_KERNEL,
- sf_kernel_static_gen8,
- sizeof(sf_kernel_static_gen8),
- NULL
- },
- {
- "PS",
- PS_KERNEL,
- ps_kernel_static_gen8,
- sizeof(ps_kernel_static_gen8),
- NULL
- },
-
- {
- "PS_SUBPIC",
- PS_SUBPIC_KERNEL,
- ps_subpic_kernel_static_gen8,
- sizeof(ps_subpic_kernel_static_gen8),
- NULL
- }
-};
-
-#define URB_VS_ENTRIES 8
-#define URB_VS_ENTRY_SIZE 1
-
-#define URB_GS_ENTRIES 0
-#define URB_GS_ENTRY_SIZE 0
-
-#define URB_CLIP_ENTRIES 0
-#define URB_CLIP_ENTRY_SIZE 0
-
-#define URB_SF_ENTRIES 1
-#define URB_SF_ENTRY_SIZE 2
-
-#define URB_CS_ENTRIES 4
-#define URB_CS_ENTRY_SIZE 4
-
-static void
-gen8_render_set_surface_tiling(struct gen8_surface_state *ss, uint32_t tiling)
-{
- switch (tiling) {
- case I915_TILING_NONE:
- ss->ss0.tiled_surface = 0;
- ss->ss0.tile_walk = 0;
- break;
- case I915_TILING_X:
- ss->ss0.tiled_surface = 1;
- ss->ss0.tile_walk = I965_TILEWALK_XMAJOR;
- break;
- case I915_TILING_Y:
- ss->ss0.tiled_surface = 1;
- ss->ss0.tile_walk = I965_TILEWALK_YMAJOR;
- break;
- }
-}
-
-/* Set "Shader Channel Select" for GEN8+ */
-void
-gen8_render_set_surface_scs(struct gen8_surface_state *ss)
-{
- ss->ss7.shader_chanel_select_r = HSW_SCS_RED;
- ss->ss7.shader_chanel_select_g = HSW_SCS_GREEN;
- ss->ss7.shader_chanel_select_b = HSW_SCS_BLUE;
- ss->ss7.shader_chanel_select_a = HSW_SCS_ALPHA;
-}
-
-static void
-gen8_render_set_surface_state(
- struct gen8_surface_state *ss,
- dri_bo *bo,
- unsigned long offset,
- int width,
- int height,
- int pitch,
- int format,
- unsigned int flags
-)
-{
- unsigned int tiling;
- unsigned int swizzle;
-
- memset(ss, 0, sizeof(*ss));
-
- switch (flags & (VA_TOP_FIELD|VA_BOTTOM_FIELD)) {
- case VA_BOTTOM_FIELD:
- ss->ss0.vert_line_stride_ofs = 1;
- /* fall-through */
- case VA_TOP_FIELD:
- ss->ss0.vert_line_stride = 1;
- height /= 2;
- break;
- }
-
- ss->ss0.surface_type = I965_SURFACE_2D;
- ss->ss0.surface_format = format;
-
- ss->ss8.base_addr = bo->offset + offset;
-
- ss->ss2.width = width - 1;
- ss->ss2.height = height - 1;
-
- ss->ss3.pitch = pitch - 1;
-
- /* Always set 1(align 4 mode) per B-spec */
- ss->ss0.vertical_alignment = 1;
- ss->ss0.horizontal_alignment = 1;
-
- dri_bo_get_tiling(bo, &tiling, &swizzle);
- gen8_render_set_surface_tiling(ss, tiling);
-}
-
-static void
-gen8_render_src_surface_state(
- VADriverContextP ctx,
- int index,
- dri_bo *region,
- unsigned long offset,
- int w,
- int h,
- int pitch,
- int format,
- unsigned int flags
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- void *ss;
- dri_bo *ss_bo = render_state->wm.surface_state_binding_table_bo;
-
- assert(index < MAX_RENDER_SURFACES);
-
- dri_bo_map(ss_bo, 1);
- assert(ss_bo->virtual);
- ss = (char *)ss_bo->virtual + SURFACE_STATE_OFFSET(index);
-
- gen8_render_set_surface_state(ss,
- region, offset,
- w, h,
- pitch, format, flags);
- gen8_render_set_surface_scs(ss);
- dri_bo_emit_reloc(ss_bo,
- I915_GEM_DOMAIN_SAMPLER, 0,
- offset,
- SURFACE_STATE_OFFSET(index) + offsetof(struct gen8_surface_state, ss8),
- region);
-
- ((unsigned int *)((char *)ss_bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
- dri_bo_unmap(ss_bo);
- render_state->wm.sampler_count++;
-}
-
-static void
-gen8_render_src_surfaces_state(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- unsigned int flags
-)
-{
- int region_pitch;
- int rw, rh;
- dri_bo *region;
-
- region_pitch = obj_surface->width;
- rw = obj_surface->orig_width;
- rh = obj_surface->orig_height;
- region = obj_surface->bo;
-
- gen8_render_src_surface_state(ctx, 1, region, 0, rw, rh, region_pitch, I965_SURFACEFORMAT_R8_UNORM, flags); /* Y */
- gen8_render_src_surface_state(ctx, 2, region, 0, rw, rh, region_pitch, I965_SURFACEFORMAT_R8_UNORM, flags);
-
- if (obj_surface->fourcc == VA_FOURCC_Y800) /* single plane for grayscale */
- return;
-
- if (obj_surface->fourcc == VA_FOURCC_NV12) {
- gen8_render_src_surface_state(ctx, 3, region,
- region_pitch * obj_surface->y_cb_offset,
- obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
- I965_SURFACEFORMAT_R8G8_UNORM, flags); /* UV */
- gen8_render_src_surface_state(ctx, 4, region,
- region_pitch * obj_surface->y_cb_offset,
- obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
- I965_SURFACEFORMAT_R8G8_UNORM, flags);
- } else {
- gen8_render_src_surface_state(ctx, 3, region,
- region_pitch * obj_surface->y_cb_offset,
- obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
- I965_SURFACEFORMAT_R8_UNORM, flags); /* U */
- gen8_render_src_surface_state(ctx, 4, region,
- region_pitch * obj_surface->y_cb_offset,
- obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
- I965_SURFACEFORMAT_R8_UNORM, flags);
- gen8_render_src_surface_state(ctx, 5, region,
- region_pitch * obj_surface->y_cr_offset,
- obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
- I965_SURFACEFORMAT_R8_UNORM, flags); /* V */
- gen8_render_src_surface_state(ctx, 6, region,
- region_pitch * obj_surface->y_cr_offset,
- obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
- I965_SURFACEFORMAT_R8_UNORM, flags);
- }
-}
-
-static void
-gen8_subpic_render_src_surfaces_state(VADriverContextP ctx,
- struct object_surface *obj_surface)
-{
- dri_bo *subpic_region;
- unsigned int index = obj_surface->subpic_render_idx;
- struct object_subpic *obj_subpic = obj_surface->obj_subpic[index];
- struct object_image *obj_image = obj_subpic->obj_image;
-
- assert(obj_surface);
- assert(obj_surface->bo);
- subpic_region = obj_image->bo;
- /*subpicture surface*/
- gen8_render_src_surface_state(ctx, 1, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->pitch, obj_subpic->format, 0);
- gen8_render_src_surface_state(ctx, 2, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->pitch, obj_subpic->format, 0);
-}
-
-static void
-gen8_render_dest_surface_state(VADriverContextP ctx, int index)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct intel_region *dest_region = render_state->draw_region;
- void *ss;
- dri_bo *ss_bo = render_state->wm.surface_state_binding_table_bo;
- int format;
- assert(index < MAX_RENDER_SURFACES);
-
- if (dest_region->cpp == 2) {
- format = I965_SURFACEFORMAT_B5G6R5_UNORM;
- } else {
- format = I965_SURFACEFORMAT_B8G8R8A8_UNORM;
- }
-
- dri_bo_map(ss_bo, 1);
- assert(ss_bo->virtual);
- ss = (char *)ss_bo->virtual + SURFACE_STATE_OFFSET(index);
-
- gen8_render_set_surface_state(ss,
- dest_region->bo, 0,
- dest_region->width, dest_region->height,
- dest_region->pitch, format, 0);
- gen8_render_set_surface_scs(ss);
- dri_bo_emit_reloc(ss_bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- 0,
- SURFACE_STATE_OFFSET(index) + offsetof(struct gen8_surface_state, ss8),
- dest_region->bo);
-
- ((unsigned int *)((char *)ss_bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
- dri_bo_unmap(ss_bo);
-}
-
-static void
-i965_fill_vertex_buffer(
- VADriverContextP ctx,
- float tex_coords[4], /* [(u1,v1);(u2,v2)] */
- float vid_coords[4] /* [(x1,y1);(x2,y2)] */
-)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- float vb[12];
-
- enum { X1, Y1, X2, Y2 };
-
- static const unsigned int g_rotation_indices[][6] = {
- [VA_ROTATION_NONE] = { X2, Y2, X1, Y2, X1, Y1 },
- [VA_ROTATION_90] = { X2, Y1, X2, Y2, X1, Y2 },
- [VA_ROTATION_180] = { X1, Y1, X2, Y1, X2, Y2 },
- [VA_ROTATION_270] = { X1, Y2, X1, Y1, X2, Y1 },
- };
-
- const unsigned int * const rotation_indices =
- g_rotation_indices[i965->rotation_attrib->value];
-
- vb[0] = tex_coords[rotation_indices[0]]; /* bottom-right corner */
- vb[1] = tex_coords[rotation_indices[1]];
- vb[2] = vid_coords[X2];
- vb[3] = vid_coords[Y2];
-
- vb[4] = tex_coords[rotation_indices[2]]; /* bottom-left corner */
- vb[5] = tex_coords[rotation_indices[3]];
- vb[6] = vid_coords[X1];
- vb[7] = vid_coords[Y2];
-
- vb[8] = tex_coords[rotation_indices[4]]; /* top-left corner */
- vb[9] = tex_coords[rotation_indices[5]];
- vb[10] = vid_coords[X1];
- vb[11] = vid_coords[Y1];
-
- dri_bo_subdata(i965->render_state.vb.vertex_buffer, 0, sizeof(vb), vb);
-}
-
-static void
-i965_subpic_render_upload_vertex(VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *output_rect)
-{
- unsigned int index = obj_surface->subpic_render_idx;
- struct object_subpic *obj_subpic = obj_surface->obj_subpic[index];
- float tex_coords[4], vid_coords[4];
- VARectangle dst_rect;
-
- if (obj_subpic->flags & VA_SUBPICTURE_DESTINATION_IS_SCREEN_COORD)
- dst_rect = obj_subpic->dst_rect;
- else {
- const float sx = (float)output_rect->width / obj_surface->orig_width;
- const float sy = (float)output_rect->height / obj_surface->orig_height;
- dst_rect.x = output_rect->x + sx * obj_subpic->dst_rect.x;
- dst_rect.y = output_rect->y + sy * obj_subpic->dst_rect.y;
- dst_rect.width = sx * obj_subpic->dst_rect.width;
- dst_rect.height = sy * obj_subpic->dst_rect.height;
- }
-
- tex_coords[0] = (float)obj_subpic->src_rect.x / obj_subpic->width;
- tex_coords[1] = (float)obj_subpic->src_rect.y / obj_subpic->height;
- tex_coords[2] = (float)(obj_subpic->src_rect.x + obj_subpic->src_rect.width) / obj_subpic->width;
- tex_coords[3] = (float)(obj_subpic->src_rect.y + obj_subpic->src_rect.height) / obj_subpic->height;
-
- vid_coords[0] = dst_rect.x;
- vid_coords[1] = dst_rect.y;
- vid_coords[2] = (float)(dst_rect.x + dst_rect.width);
- vid_coords[3] = (float)(dst_rect.y + dst_rect.height);
-
- i965_fill_vertex_buffer(ctx, tex_coords, vid_coords);
-}
-
-static void
-i965_render_upload_vertex(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct intel_region *dest_region = render_state->draw_region;
- float tex_coords[4], vid_coords[4];
- int width, height;
-
- width = obj_surface->orig_width;
- height = obj_surface->orig_height;
-
- tex_coords[0] = (float)src_rect->x / width;
- tex_coords[1] = (float)src_rect->y / height;
- tex_coords[2] = (float)(src_rect->x + src_rect->width) / width;
- tex_coords[3] = (float)(src_rect->y + src_rect->height) / height;
-
- vid_coords[0] = dest_region->x + dst_rect->x;
- vid_coords[1] = dest_region->y + dst_rect->y;
- vid_coords[2] = vid_coords[0] + dst_rect->width;
- vid_coords[3] = vid_coords[1] + dst_rect->height;
-
- i965_fill_vertex_buffer(ctx, tex_coords, vid_coords);
-}
-
-static void
-i965_render_drawing_rectangle(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
- struct intel_region *dest_region = render_state->draw_region;
-
- BEGIN_BATCH(batch, 4);
- OUT_BATCH(batch, CMD_DRAWING_RECTANGLE | 2);
- OUT_BATCH(batch, 0x00000000);
- OUT_BATCH(batch, (dest_region->width - 1) | (dest_region->height - 1) << 16);
- OUT_BATCH(batch, 0x00000000);
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_render_upload_image_palette(
- VADriverContextP ctx,
- struct object_image *obj_image,
- unsigned int alpha
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- unsigned int i;
-
- assert(obj_image);
-
- if (!obj_image)
- return;
-
- if (obj_image->image.num_palette_entries == 0)
- return;
-
- BEGIN_BATCH(batch, 1 + obj_image->image.num_palette_entries);
- OUT_BATCH(batch, CMD_SAMPLER_PALETTE_LOAD | (obj_image->image.num_palette_entries - 1));
- /*fill palette*/
- //int32_t out[16]; //0-23:color 23-31:alpha
- for (i = 0; i < obj_image->image.num_palette_entries; i++)
- OUT_BATCH(batch, (alpha << 24) | obj_image->palette[i]);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen8_clear_dest_region(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
- struct intel_region *dest_region = render_state->draw_region;
- unsigned int blt_cmd, br13;
- int pitch;
-
- blt_cmd = GEN8_XY_COLOR_BLT_CMD;
- br13 = 0xf0 << 16;
- pitch = dest_region->pitch;
-
- if (dest_region->cpp == 4) {
- br13 |= BR13_8888;
- blt_cmd |= (XY_COLOR_BLT_WRITE_RGB | XY_COLOR_BLT_WRITE_ALPHA);
- } else {
- assert(dest_region->cpp == 2);
- br13 |= BR13_565;
- }
-
- if (dest_region->tiling != I915_TILING_NONE) {
- blt_cmd |= XY_COLOR_BLT_DST_TILED;
- pitch /= 4;
- }
-
- br13 |= pitch;
-
- intel_batchbuffer_start_atomic_blt(batch, 24);
- BEGIN_BLT_BATCH(batch, 7);
-
- OUT_BATCH(batch, blt_cmd);
- OUT_BATCH(batch, br13);
- OUT_BATCH(batch, (dest_region->y << 16) | (dest_region->x));
- OUT_BATCH(batch, ((dest_region->y + dest_region->height) << 16) |
- (dest_region->x + dest_region->width));
- OUT_RELOC(batch, dest_region->bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- 0);
- OUT_BATCH(batch, 0x0);
- OUT_BATCH(batch, 0x0);
- ADVANCE_BATCH(batch);
- intel_batchbuffer_end_atomic(batch);
-}
-
-
-/*
- * for GEN8
- */
-#define ALIGNMENT 64
-
-static void
-gen8_render_initialize(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- dri_bo *bo;
- int size;
- unsigned int end_offset;
-
- /* VERTEX BUFFER */
- dri_bo_unreference(render_state->vb.vertex_buffer);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "vertex buffer",
- 4096,
- 4096);
- assert(bo);
- render_state->vb.vertex_buffer = bo;
-
- /* WM */
- dri_bo_unreference(render_state->wm.surface_state_binding_table_bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "surface state & binding table",
- (SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_RENDER_SURFACES,
- 4096);
- assert(bo);
- render_state->wm.surface_state_binding_table_bo = bo;
-
- render_state->curbe_size = 256;
-
- render_state->wm.sampler_count = 0;
-
- render_state->sampler_size = MAX_SAMPLERS * sizeof(struct gen8_sampler_state);
-
- render_state->cc_state_size = sizeof(struct gen6_color_calc_state);
-
- render_state->cc_viewport_size = sizeof(struct i965_cc_viewport);
-
- render_state->blend_state_size = sizeof(struct gen8_global_blend_state) +
- 16 * sizeof(struct gen8_blend_state_rt);
-
- render_state->sf_clip_size = 1024;
-
- render_state->scissor_size = 1024;
-
- size = ALIGN(render_state->curbe_size, ALIGNMENT) +
- ALIGN(render_state->sampler_size, ALIGNMENT) +
- ALIGN(render_state->cc_viewport_size, ALIGNMENT) +
- ALIGN(render_state->cc_state_size, ALIGNMENT) +
- ALIGN(render_state->blend_state_size, ALIGNMENT) +
- ALIGN(render_state->sf_clip_size, ALIGNMENT) +
- ALIGN(render_state->scissor_size, ALIGNMENT);
-
- dri_bo_unreference(render_state->dynamic_state.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "dynamic_state",
- size,
- 4096);
-
- render_state->dynamic_state.bo = bo;
-
- end_offset = 0;
- render_state->dynamic_state.end_offset = 0;
-
- /* Constant buffer offset */
- render_state->curbe_offset = end_offset;
- end_offset += ALIGN(render_state->curbe_size, ALIGNMENT);
-
- /* Sampler_state */
- render_state->sampler_offset = end_offset;
- end_offset += ALIGN(render_state->sampler_size, ALIGNMENT);
-
- /* CC_VIEWPORT_state */
- render_state->cc_viewport_offset = end_offset;
- end_offset += ALIGN(render_state->cc_viewport_size, ALIGNMENT);
-
- /* CC_STATE_state */
- render_state->cc_state_offset = end_offset;
- end_offset += ALIGN(render_state->cc_state_size, ALIGNMENT);
-
- /* Blend_state */
- render_state->blend_state_offset = end_offset;
- end_offset += ALIGN(render_state->blend_state_size, ALIGNMENT);
-
- /* SF_CLIP_state */
- render_state->sf_clip_offset = end_offset;
- end_offset += ALIGN(render_state->sf_clip_size, ALIGNMENT);
-
- /* SCISSOR_state */
- render_state->scissor_offset = end_offset;
- end_offset += ALIGN(render_state->scissor_size, ALIGNMENT);
-
- /* update the end offset of dynamic_state */
- render_state->dynamic_state.end_offset = end_offset;
-
-}
-
-static void
-gen8_render_sampler(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct gen8_sampler_state *sampler_state;
- int i;
- unsigned char *cc_ptr;
-
- assert(render_state->wm.sampler_count > 0);
- assert(render_state->wm.sampler_count <= MAX_SAMPLERS);
-
- dri_bo_map(render_state->dynamic_state.bo, 1);
- assert(render_state->dynamic_state.bo->virtual);
-
- cc_ptr = (unsigned char *) render_state->dynamic_state.bo->virtual +
- render_state->sampler_offset;
-
- sampler_state = (struct gen8_sampler_state *) cc_ptr;
-
- for (i = 0; i < render_state->wm.sampler_count; i++) {
- memset(sampler_state, 0, sizeof(*sampler_state));
- 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;
- sampler_state++;
- }
-
- dri_bo_unmap(render_state->dynamic_state.bo);
-}
-
-static void
-gen8_render_blend_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct gen8_global_blend_state *global_blend_state;
- struct gen8_blend_state_rt *blend_state;
- unsigned char *cc_ptr;
-
- dri_bo_map(render_state->dynamic_state.bo, 1);
- assert(render_state->dynamic_state.bo->virtual);
-
- cc_ptr = (unsigned char *) render_state->dynamic_state.bo->virtual +
- render_state->blend_state_offset;
-
- global_blend_state = (struct gen8_global_blend_state*) cc_ptr;
-
- memset(global_blend_state, 0, render_state->blend_state_size);
- /* Global blend state + blend_state for Render Target */
- blend_state = (struct gen8_blend_state_rt *)(global_blend_state + 1);
- blend_state->blend1.logic_op_enable = 1;
- blend_state->blend1.logic_op_func = 0xc;
- blend_state->blend1.pre_blend_clamp_enable = 1;
-
- dri_bo_unmap(render_state->dynamic_state.bo);
-}
-
-
-static void
-gen8_render_cc_viewport(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct i965_cc_viewport *cc_viewport;
- unsigned char *cc_ptr;
-
- dri_bo_map(render_state->dynamic_state.bo, 1);
- assert(render_state->dynamic_state.bo->virtual);
-
- cc_ptr = (unsigned char *) render_state->dynamic_state.bo->virtual +
- render_state->cc_viewport_offset;
-
- cc_viewport = (struct i965_cc_viewport *) cc_ptr;
-
- memset(cc_viewport, 0, sizeof(*cc_viewport));
-
- cc_viewport->min_depth = -1.e35;
- cc_viewport->max_depth = 1.e35;
-
- dri_bo_unmap(render_state->dynamic_state.bo);
-}
-
-static void
-gen8_render_color_calc_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct gen6_color_calc_state *color_calc_state;
- unsigned char *cc_ptr;
-
- dri_bo_map(render_state->dynamic_state.bo, 1);
- assert(render_state->dynamic_state.bo->virtual);
-
- cc_ptr = (unsigned char *) render_state->dynamic_state.bo->virtual +
- render_state->cc_state_offset;
-
- color_calc_state = (struct gen6_color_calc_state *) cc_ptr;
-
- memset(color_calc_state, 0, sizeof(*color_calc_state));
- color_calc_state->constant_r = 1.0;
- color_calc_state->constant_g = 0.0;
- color_calc_state->constant_b = 1.0;
- color_calc_state->constant_a = 1.0;
- dri_bo_unmap(render_state->dynamic_state.bo);
-}
-
-#define PI 3.1415926
-
-static void
-gen8_render_upload_constants(VADriverContextP ctx,
- struct object_surface *obj_surface,
- unsigned int flags)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- unsigned short *constant_buffer;
- unsigned char *cc_ptr;
- float *color_balance_base;
- float contrast = (float)i965->contrast_attrib->value / DEFAULT_CONTRAST;
- float brightness = (float)i965->brightness_attrib->value / 255; /* YUV is float in the shader */
- float hue = (float)i965->hue_attrib->value / 180 * PI;
- float saturation = (float)i965->saturation_attrib->value / DEFAULT_SATURATION;
- float *yuv_to_rgb;
- unsigned int color_flag;
- const float* yuv_coefs;
- size_t coefs_length;
-
- dri_bo_map(render_state->dynamic_state.bo, 1);
- assert(render_state->dynamic_state.bo->virtual);
-
- cc_ptr = (unsigned char *) render_state->dynamic_state.bo->virtual +
- render_state->curbe_offset;
-
- constant_buffer = (unsigned short *) cc_ptr;
-
- if (obj_surface->subsampling == SUBSAMPLE_YUV400) {
- assert(obj_surface->fourcc == VA_FOURCC_Y800);
-
- *constant_buffer = 2;
- } else {
- if (obj_surface->fourcc == VA_FOURCC_NV12)
- *constant_buffer = 1;
- else
- *constant_buffer = 0;
- }
-
- if (i965->contrast_attrib->value == DEFAULT_CONTRAST &&
- i965->brightness_attrib->value == DEFAULT_BRIGHTNESS &&
- i965->hue_attrib->value == DEFAULT_HUE &&
- i965->saturation_attrib->value == DEFAULT_SATURATION)
- constant_buffer[1] = 1; /* skip color balance transformation */
- else
- constant_buffer[1] = 0;
-
- color_balance_base = (float *)constant_buffer + 4;
- *color_balance_base++ = contrast;
- *color_balance_base++ = brightness;
- *color_balance_base++ = cos(hue) * contrast * saturation;
- *color_balance_base++ = sin(hue) * contrast * saturation;
-
- color_flag = flags & VA_SRC_COLOR_MASK;
- yuv_to_rgb = (float *)constant_buffer + 8;
-
- yuv_coefs = i915_color_standard_to_coefs(i915_filter_to_color_standard(color_flag),
- &coefs_length);
- memcpy(yuv_to_rgb, yuv_coefs, coefs_length);
-
- dri_bo_unmap(render_state->dynamic_state.bo);
-}
-
-static void
-gen8_render_setup_states(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect,
- unsigned int flags
-)
-{
- gen8_render_dest_surface_state(ctx, 0);
- gen8_render_src_surfaces_state(ctx, obj_surface, flags);
- gen8_render_sampler(ctx);
- gen8_render_cc_viewport(ctx);
- gen8_render_color_calc_state(ctx);
- gen8_render_blend_state(ctx);
- gen8_render_upload_constants(ctx, obj_surface, flags);
- i965_render_upload_vertex(ctx, obj_surface, src_rect, dst_rect);
-}
-
-static void
-gen8_emit_state_base_address(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- BEGIN_BATCH(batch, 16);
- OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | (16 - 2));
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* General state base address */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /*DW4 */
- OUT_RELOC(batch, render_state->wm.surface_state_binding_table_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY); /* Surface state base address */
- OUT_BATCH(batch, 0);
-
- /*DW6*/
- /* Dynamic state base address */
- OUT_RELOC(batch, render_state->dynamic_state.bo, I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_SAMPLER,
- 0, BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0);
-
- /*DW8*/
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Indirect object base address */
- OUT_BATCH(batch, 0);
-
- /*DW10 */
- /* Instruction base address */
- OUT_RELOC(batch, render_state->instruction_state.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0);
-
- /*DW12 */
- OUT_BATCH(batch, 0xFFFF0000 | BASE_ADDRESS_MODIFY); /* General state upper bound */
- OUT_BATCH(batch, 0xFFFF0000 | BASE_ADDRESS_MODIFY); /* Dynamic state upper bound */
- OUT_BATCH(batch, 0xFFFF0000 | BASE_ADDRESS_MODIFY); /* Indirect object upper bound */
- OUT_BATCH(batch, 0xFFFF0000 | BASE_ADDRESS_MODIFY); /* Instruction access upper bound */
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen8_emit_cc_state_pointers(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN6_3DSTATE_CC_STATE_POINTERS | (2 - 2));
- OUT_BATCH(batch, (render_state->cc_state_offset + 1));
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_BLEND_STATE_POINTERS | (2 - 2));
- OUT_BATCH(batch, (render_state->blend_state_offset + 1));
- ADVANCE_BATCH(batch);
-
-}
-
-static void
-gen8_emit_vertices(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- BEGIN_BATCH(batch, 5);
- OUT_BATCH(batch, CMD_VERTEX_BUFFERS | (5 - 2));
- OUT_BATCH(batch,
- (0 << GEN8_VB0_BUFFER_INDEX_SHIFT) |
- (0 << GEN8_VB0_MOCS_SHIFT) |
- GEN7_VB0_ADDRESS_MODIFYENABLE |
- ((4 * 4) << VB0_BUFFER_PITCH_SHIFT));
- OUT_RELOC(batch, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 12 * 4);
- ADVANCE_BATCH(batch);
-
- /* Topology in 3D primitive is overrided by VF_TOPOLOGY command */
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN8_3DSTATE_VF_TOPOLOGY | (2 - 2));
- OUT_BATCH(batch,
- _3DPRIM_RECTLIST);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 7);
- OUT_BATCH(batch, CMD_3DPRIMITIVE | (7 - 2));
- OUT_BATCH(batch,
- GEN7_3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL);
- OUT_BATCH(batch, 3); /* vertex count per instance */
- OUT_BATCH(batch, 0); /* start vertex offset */
- OUT_BATCH(batch, 1); /* single instance */
- OUT_BATCH(batch, 0); /* start instance location */
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen8_emit_vertex_element_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- int i;
-
- /*
- * The VUE layout
- * dword 0-3: pad (0, 0, 0. 0)
- * dword 4-7: position (x, y, 1.0, 1.0),
- * dword 8-11: texture coordinate 0 (u0, v0, 1.0, 1.0)
- */
-
- /* Set up our vertex elements, sourced from the single vertex buffer. */
- OUT_BATCH(batch, CMD_VERTEX_ELEMENTS | (7 - 2));
-
- /* Element state 0. These are 4 dwords of 0 required for the VUE format.
- * We don't really know or care what they do.
- */
-
- OUT_BATCH(batch, (0 << GEN8_VE0_VERTEX_BUFFER_INDEX_SHIFT) |
- GEN8_VE0_VALID |
- (I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
- (0 << VE0_OFFSET_SHIFT));
- OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_0 << VE1_VFCOMPONENT_0_SHIFT) |
- (I965_VFCOMPONENT_STORE_0 << VE1_VFCOMPONENT_1_SHIFT) |
- (I965_VFCOMPONENT_STORE_0 << VE1_VFCOMPONENT_2_SHIFT) |
- (I965_VFCOMPONENT_STORE_0 << VE1_VFCOMPONENT_3_SHIFT));
-
- /* offset 8: X, Y -> {x, y, 1.0, 1.0} */
- OUT_BATCH(batch, (0 << GEN8_VE0_VERTEX_BUFFER_INDEX_SHIFT) |
- GEN8_VE0_VALID |
- (I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
- (8 << VE0_OFFSET_SHIFT));
- OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
- (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT));
-
- /* offset 0: u,v -> {U, V, 1.0, 1.0} */
- OUT_BATCH(batch, (0 << GEN8_VE0_VERTEX_BUFFER_INDEX_SHIFT) |
- GEN8_VE0_VALID |
- (I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
- (0 << VE0_OFFSET_SHIFT));
- OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
- (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT));
-
- /* Disable instancing for all vertex elements. */
- for (i = 0; i < 3; i++) {
- OUT_BATCH(batch, GEN8_3DSTATE_VF_INSTANCING | (3 - 2));
- OUT_BATCH(batch, i);
- OUT_BATCH(batch, 0);
- }
-
- /* Disable system-generated values. */
- OUT_BATCH(batch, GEN8_3DSTATE_VF_SGVS | (2 - 2));
- OUT_BATCH(batch, 0);
-}
-
-static void
-gen8_emit_vs_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- /* disable VS constant buffer */
- BEGIN_BATCH(batch, 11);
- OUT_BATCH(batch, GEN6_3DSTATE_CONSTANT_VS | (11 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /* CS Buffer 0 */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /* CS Buffer 1 */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /* CS Buffer 2 */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /* CS Buffer 3 */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 9);
- OUT_BATCH(batch, GEN6_3DSTATE_VS | (9 - 2));
- OUT_BATCH(batch, 0); /* without VS kernel */
- OUT_BATCH(batch, 0);
- /* VS shader dispatch flag */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /* DW6. VS shader GRF and URB buffer definition */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0); /* pass-through */
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_BINDING_TABLE_POINTERS_VS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_SAMPLER_STATE_POINTERS_VS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
-}
-
-/*
- * URB layout on GEN8
- * ----------------------------------------
- * | PS Push Constants (8KB) | VS entries |
- * ----------------------------------------
- */
-static void
-gen8_emit_urb(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- unsigned int num_urb_entries = 64;
-
- /* The minimum urb entries is 64 */
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_VS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_DS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_HS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_GS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- /* Size is 8Kbs and base address is 0Kb */
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_PS | (2 - 2));
- /* Size is 8Kbs and base address is 0Kb */
- OUT_BATCH(batch,
- (0 << GEN8_PUSH_CONSTANT_BUFFER_OFFSET_SHIFT) |
- (8 << GEN8_PUSH_CONSTANT_BUFFER_SIZE_SHIFT));
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_URB_VS | (2 - 2));
- OUT_BATCH(batch,
- (num_urb_entries << GEN7_URB_ENTRY_NUMBER_SHIFT) |
- (4 - 1) << GEN7_URB_ENTRY_SIZE_SHIFT |
- (4 << GEN7_URB_STARTING_ADDRESS_SHIFT));
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_URB_GS | (2 - 2));
- OUT_BATCH(batch,
- (0 << GEN7_URB_ENTRY_SIZE_SHIFT) |
- (5 << GEN7_URB_STARTING_ADDRESS_SHIFT));
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_URB_HS | (2 - 2));
- OUT_BATCH(batch,
- (0 << GEN7_URB_ENTRY_SIZE_SHIFT) |
- (6 << GEN7_URB_STARTING_ADDRESS_SHIFT));
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_URB_DS | (2 - 2));
- OUT_BATCH(batch,
- (0 << GEN7_URB_ENTRY_SIZE_SHIFT) |
- (7 << GEN7_URB_STARTING_ADDRESS_SHIFT));
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen8_emit_bypass_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- /* bypass GS */
- BEGIN_BATCH(batch, 11);
- OUT_BATCH(batch, GEN6_3DSTATE_CONSTANT_GS | (11 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 10);
- OUT_BATCH(batch, GEN6_3DSTATE_GS | (10 - 2));
- /* GS shader address */
- OUT_BATCH(batch, 0); /* without GS kernel */
- OUT_BATCH(batch, 0);
- /* DW3. GS shader dispatch flag */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /* DW6. GS shader GRF and URB offset/length */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0); /* pass-through */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_BINDING_TABLE_POINTERS_GS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_SAMPLER_STATE_POINTERS_GS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- /* disable HS */
- BEGIN_BATCH(batch, 11);
- OUT_BATCH(batch, GEN7_3DSTATE_CONSTANT_HS | (11 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 9);
- OUT_BATCH(batch, GEN7_3DSTATE_HS | (9 - 2));
- OUT_BATCH(batch, 0);
- /*DW2. HS pass-through */
- OUT_BATCH(batch, 0);
- /*DW3. HS shader address */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /*DW5. HS shader flag. URB offset/length and so on */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_BINDING_TABLE_POINTERS_HS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_SAMPLER_STATE_POINTERS_HS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- /* Disable TE */
- BEGIN_BATCH(batch, 4);
- OUT_BATCH(batch, GEN7_3DSTATE_TE | (4 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- /* Disable DS */
- BEGIN_BATCH(batch, 11);
- OUT_BATCH(batch, GEN7_3DSTATE_CONSTANT_DS | (11 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 9);
- OUT_BATCH(batch, GEN7_3DSTATE_DS | (9 - 2));
- /* DW1. DS shader pointer */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /* DW3-5. DS shader dispatch flag.*/
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /* DW6-7. DS shader pass-through, GRF,URB offset/Length,Thread Number*/
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /* DW8. DS shader output URB */
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_BINDING_TABLE_POINTERS_DS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_SAMPLER_STATE_POINTERS_DS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- /* Disable STREAMOUT */
- BEGIN_BATCH(batch, 5);
- OUT_BATCH(batch, GEN7_3DSTATE_STREAMOUT | (5 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen8_emit_invarient_states(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- BEGIN_BATCH(batch, 1);
- OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_3D);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN8_3DSTATE_MULTISAMPLE | (2 - 2));
- OUT_BATCH(batch, GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_CENTER |
- GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_1); /* 1 sample/pixel */
- ADVANCE_BATCH(batch);
-
- /* Update 3D Multisample pattern */
- BEGIN_BATCH(batch, 9);
- OUT_BATCH(batch, GEN8_3DSTATE_SAMPLE_PATTERN | (9 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN6_3DSTATE_SAMPLE_MASK | (2 - 2));
- OUT_BATCH(batch, 1);
- ADVANCE_BATCH(batch);
-
- /* Set system instruction pointer */
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch, CMD_STATE_SIP | 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen8_emit_clip_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- OUT_BATCH(batch, GEN6_3DSTATE_CLIP | (4 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0); /* pass-through */
- OUT_BATCH(batch, 0);
-}
-
-static void
-gen8_emit_sf_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- BEGIN_BATCH(batch, 5);
- OUT_BATCH(batch, GEN8_3DSTATE_RASTER | (5 - 2));
- OUT_BATCH(batch, GEN8_3DSTATE_RASTER_CULL_NONE);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
-
- BEGIN_BATCH(batch, 4);
- OUT_BATCH(batch, GEN7_3DSTATE_SBE | (4 - 2));
- OUT_BATCH(batch,
- (GEN8_SBE_FORCE_URB_ENTRY_READ_LENGTH) |
- (GEN8_SBE_FORCE_URB_ENTRY_READ_OFFSET) |
- (1 << GEN7_SBE_NUM_OUTPUTS_SHIFT) |
- (1 << GEN7_SBE_URB_ENTRY_READ_LENGTH_SHIFT) |
- (1 << GEN8_SBE_URB_ENTRY_READ_OFFSET_SHIFT));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- /* SBE for backend setup */
- BEGIN_BATCH(batch, 11);
- OUT_BATCH(batch, GEN8_3DSTATE_SBE_SWIZ | (11 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 4);
- OUT_BATCH(batch, GEN6_3DSTATE_SF | (4 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 2 << GEN6_3DSTATE_SF_TRIFAN_PROVOKE_SHIFT);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen8_emit_wm_state(VADriverContextP ctx, int kernel)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
- unsigned int num_samples = 0;
- unsigned int max_threads;
-
- max_threads = i965->intel.device_info->max_wm_threads - 2;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN8_3DSTATE_PSEXTRA | (2 - 2));
- OUT_BATCH(batch,
- (GEN8_PSX_PIXEL_SHADER_VALID | GEN8_PSX_ATTRIBUTE_ENABLE));
- ADVANCE_BATCH(batch);
-
- if (kernel == PS_KERNEL) {
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN8_3DSTATE_PSBLEND | (2 - 2));
- OUT_BATCH(batch,
- GEN8_PS_BLEND_HAS_WRITEABLE_RT);
- ADVANCE_BATCH(batch);
- } else if (kernel == PS_SUBPIC_KERNEL) {
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN8_3DSTATE_PSBLEND | (2 - 2));
- OUT_BATCH(batch,
- (GEN8_PS_BLEND_HAS_WRITEABLE_RT |
- GEN8_PS_BLEND_COLOR_BUFFER_BLEND_ENABLE |
- (I965_BLENDFACTOR_SRC_ALPHA << GEN8_PS_BLEND_SRC_ALPHA_BLEND_FACTOR_SHIFT) |
- (I965_BLENDFACTOR_INV_SRC_ALPHA << GEN8_PS_BLEND_DST_ALPHA_BLEND_FACTOR_SHIFT) |
- (I965_BLENDFACTOR_SRC_ALPHA << GEN8_PS_BLEND_SRC_BLEND_FACTOR_SHIFT) |
- (I965_BLENDFACTOR_INV_SRC_ALPHA << GEN8_PS_BLEND_DST_BLEND_FACTOR_SHIFT)));
- ADVANCE_BATCH(batch);
- }
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN6_3DSTATE_WM | (2 - 2));
- OUT_BATCH(batch,
- GEN7_WM_PERSPECTIVE_PIXEL_BARYCENTRIC);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 11);
- OUT_BATCH(batch, GEN6_3DSTATE_CONSTANT_PS | (11 - 2));
- OUT_BATCH(batch, URB_CS_ENTRY_SIZE);
- OUT_BATCH(batch, 0);
- /*DW3-4. Constant buffer 0 */
- OUT_BATCH(batch, render_state->curbe_offset);
- OUT_BATCH(batch, 0);
-
- /*DW5-10. Constant buffer 1-3 */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 12);
- OUT_BATCH(batch, GEN7_3DSTATE_PS | (12 - 2));
- /* PS shader address */
- OUT_BATCH(batch, render_state->render_kernels[kernel].kernel_offset);
-
- OUT_BATCH(batch, 0);
- /* DW3. PS shader flag .Binding table cnt/sample cnt */
- OUT_BATCH(batch,
- (1 << GEN7_PS_SAMPLER_COUNT_SHIFT) |
- (5 << GEN7_PS_BINDING_TABLE_ENTRY_COUNT_SHIFT) |
- GEN7_PS_VECTOR_MASK_ENABLE);
- /* DW4-5. Scatch space */
- OUT_BATCH(batch, 0); /* scratch space base offset */
- OUT_BATCH(batch, 0);
- /* DW6. PS shader threads. */
- OUT_BATCH(batch,
- ((max_threads - 1) << GEN8_PS_MAX_THREADS_SHIFT) | num_samples |
- GEN7_PS_PUSH_CONSTANT_ENABLE |
- GEN7_PS_16_DISPATCH_ENABLE);
- /* DW7. PS shader GRF */
- OUT_BATCH(batch,
- (6 << GEN7_PS_DISPATCH_START_GRF_SHIFT_0));
- OUT_BATCH(batch, 0); /* kernel 1 pointer */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0); /* kernel 2 pointer */
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_BINDING_TABLE_POINTERS_PS | (2 - 2));
- OUT_BATCH(batch, BINDING_TABLE_OFFSET);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen8_emit_depth_buffer_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- BEGIN_BATCH(batch, 8);
- OUT_BATCH(batch, GEN7_3DSTATE_DEPTH_BUFFER | (8 - 2));
- OUT_BATCH(batch,
- (I965_DEPTHFORMAT_D32_FLOAT << 18) |
- (I965_SURFACE_NULL << 29));
- /* DW2-3. Depth Buffer Address */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /* DW4-7. Surface structure */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- /* Update the Hier Depth buffer */
- BEGIN_BATCH(batch, 5);
- OUT_BATCH(batch, GEN7_3DSTATE_HIER_DEPTH_BUFFER | (5 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- /* Update the stencil buffer */
- BEGIN_BATCH(batch, 5);
- OUT_BATCH(batch, GEN7_3DSTATE_STENCIL_BUFFER | (5 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch, GEN7_3DSTATE_CLEAR_PARAMS | (3 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen8_emit_depth_stencil_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch, GEN8_3DSTATE_WM_DEPTH_STENCIL | (3 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen8_emit_wm_hz_op(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- BEGIN_BATCH(batch, 5);
- OUT_BATCH(batch, GEN8_3DSTATE_WM_HZ_OP | (5 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen8_emit_viewport_state_pointers(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_CC | (2 - 2));
- OUT_BATCH(batch, render_state->cc_viewport_offset);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CL | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen8_emit_sampler_state_pointers(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_SAMPLER_STATE_POINTERS_PS | (2 - 2));
- OUT_BATCH(batch, render_state->sampler_offset);
- ADVANCE_BATCH(batch);
-}
-
-
-static void
-gen7_emit_drawing_rectangle(VADriverContextP ctx)
-{
- i965_render_drawing_rectangle(ctx);
-}
-
-static void
-gen8_render_emit_states(VADriverContextP ctx, int kernel)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- gen8_emit_invarient_states(ctx);
- gen8_emit_state_base_address(ctx);
- gen8_emit_viewport_state_pointers(ctx);
- gen8_emit_urb(ctx);
- gen8_emit_cc_state_pointers(ctx);
- gen8_emit_sampler_state_pointers(ctx);
- gen8_emit_wm_hz_op(ctx);
- gen8_emit_bypass_state(ctx);
- gen8_emit_vs_state(ctx);
- gen8_emit_clip_state(ctx);
- gen8_emit_sf_state(ctx);
- gen8_emit_depth_stencil_state(ctx);
- gen8_emit_wm_state(ctx, kernel);
- gen8_emit_depth_buffer_state(ctx);
- gen7_emit_drawing_rectangle(ctx);
- gen8_emit_vertex_element_state(ctx);
- gen8_emit_vertices(ctx);
- intel_batchbuffer_end_atomic(batch);
-}
-
-static void
-gen8_render_put_surface(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect,
- unsigned int flags
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- gen8_render_initialize(ctx);
- gen8_render_setup_states(ctx, obj_surface, src_rect, dst_rect, flags);
- gen8_clear_dest_region(ctx);
- gen8_render_emit_states(ctx, PS_KERNEL);
- intel_batchbuffer_flush(batch);
-}
-
-static void
-gen8_subpicture_render_blend_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct gen8_global_blend_state *global_blend_state;
- struct gen8_blend_state_rt *blend_state;
- unsigned char *cc_ptr;
-
- dri_bo_map(render_state->dynamic_state.bo, 1);
- assert(render_state->dynamic_state.bo->virtual);
-
- cc_ptr = (unsigned char *) render_state->dynamic_state.bo->virtual +
- render_state->blend_state_offset;
-
- global_blend_state = (struct gen8_global_blend_state*) cc_ptr;
-
- memset(global_blend_state, 0, render_state->blend_state_size);
- /* Global blend state + blend_state for Render Target */
- blend_state = (struct gen8_blend_state_rt *)(global_blend_state + 1);
- blend_state->blend0.color_blend_func = I965_BLENDFUNCTION_ADD;
- blend_state->blend0.dest_blend_factor = I965_BLENDFACTOR_INV_SRC_ALPHA;
- blend_state->blend0.src_blend_factor = I965_BLENDFACTOR_SRC_ALPHA;
- blend_state->blend0.alpha_blend_func = I965_BLENDFUNCTION_ADD;
- blend_state->blend0.ia_dest_blend_factor = I965_BLENDFACTOR_INV_SRC_ALPHA;
- blend_state->blend0.ia_src_blend_factor = I965_BLENDFACTOR_SRC_ALPHA;
- blend_state->blend0.colorbuf_blend = 1;
- blend_state->blend1.post_blend_clamp_enable = 1;
- blend_state->blend1.pre_blend_clamp_enable = 1;
- blend_state->blend1.clamp_range = 0; /* clamp range [0, 1] */
-
- dri_bo_unmap(render_state->dynamic_state.bo);
-}
-
-static void
-gen8_subpic_render_upload_constants(VADriverContextP ctx,
- struct object_surface *obj_surface)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- float *constant_buffer;
- float global_alpha = 1.0;
- unsigned int index = obj_surface->subpic_render_idx;
- struct object_subpic *obj_subpic = obj_surface->obj_subpic[index];
- unsigned char *cc_ptr;
-
- if (obj_subpic->flags & VA_SUBPICTURE_GLOBAL_ALPHA) {
- global_alpha = obj_subpic->global_alpha;
- }
-
-
- dri_bo_map(render_state->dynamic_state.bo, 1);
- assert(render_state->dynamic_state.bo->virtual);
-
- cc_ptr = (unsigned char *) render_state->dynamic_state.bo->virtual +
- render_state->curbe_offset;
-
- constant_buffer = (float *) cc_ptr;
- *constant_buffer = global_alpha;
-
- dri_bo_unmap(render_state->dynamic_state.bo);
-}
-
-static void
-gen8_subpicture_render_setup_states(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect
-)
-{
- gen8_render_dest_surface_state(ctx, 0);
- gen8_subpic_render_src_surfaces_state(ctx, obj_surface);
- gen8_render_sampler(ctx);
- gen8_render_cc_viewport(ctx);
- gen8_render_color_calc_state(ctx);
- gen8_subpicture_render_blend_state(ctx);
- gen8_subpic_render_upload_constants(ctx, obj_surface);
- i965_subpic_render_upload_vertex(ctx, obj_surface, dst_rect);
-}
-
-static void
-gen8_render_put_subpicture(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- unsigned int index = obj_surface->subpic_render_idx;
- struct object_subpic *obj_subpic = obj_surface->obj_subpic[index];
-
- assert(obj_subpic);
- gen8_render_initialize(ctx);
- gen8_subpicture_render_setup_states(ctx, obj_surface, src_rect, dst_rect);
- gen8_render_emit_states(ctx, PS_SUBPIC_KERNEL);
- i965_render_upload_image_palette(ctx, obj_subpic->obj_image, 0xff);
- intel_batchbuffer_flush(batch);
-}
-
-static void
-gen8_render_terminate(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
-
- dri_bo_unreference(render_state->vb.vertex_buffer);
- render_state->vb.vertex_buffer = NULL;
-
- dri_bo_unreference(render_state->wm.surface_state_binding_table_bo);
- render_state->wm.surface_state_binding_table_bo = NULL;
-
- if (render_state->instruction_state.bo) {
- dri_bo_unreference(render_state->instruction_state.bo);
- render_state->instruction_state.bo = NULL;
- }
-
- if (render_state->dynamic_state.bo) {
- dri_bo_unreference(render_state->dynamic_state.bo);
- render_state->dynamic_state.bo = NULL;
- }
-
- if (render_state->indirect_state.bo) {
- dri_bo_unreference(render_state->indirect_state.bo);
- render_state->indirect_state.bo = NULL;
- }
-
- if (render_state->draw_region) {
- dri_bo_unreference(render_state->draw_region->bo);
- free(render_state->draw_region);
- render_state->draw_region = NULL;
- }
-}
-
-bool
-gen8_render_init(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- int i, kernel_size;
- unsigned int kernel_offset, end_offset;
- unsigned char *kernel_ptr;
- struct i965_kernel *kernel;
-
- render_state->render_put_surface = gen8_render_put_surface;
- render_state->render_put_subpicture = gen8_render_put_subpicture;
- render_state->render_terminate = gen8_render_terminate;
-
- memcpy(render_state->render_kernels, render_kernels_gen8,
- sizeof(render_state->render_kernels));
-
- kernel_size = 4096;
-
- for (i = 0; i < NUM_RENDER_KERNEL; i++) {
- kernel = &render_state->render_kernels[i];
-
- if (!kernel->size)
- continue;
-
- kernel_size += kernel->size;
- }
-
- render_state->instruction_state.bo = dri_bo_alloc(i965->intel.bufmgr,
- "kernel shader",
- kernel_size,
- 0x1000);
- if (render_state->instruction_state.bo == NULL) {
- WARN_ONCE("failure to allocate the buffer space for kernel shader\n");
- return false;
- }
-
- assert(render_state->instruction_state.bo);
-
- render_state->instruction_state.bo_size = kernel_size;
- render_state->instruction_state.end_offset = 0;
- end_offset = 0;
-
- dri_bo_map(render_state->instruction_state.bo, 1);
- kernel_ptr = (unsigned char *)(render_state->instruction_state.bo->virtual);
- for (i = 0; i < NUM_RENDER_KERNEL; i++) {
- kernel = &render_state->render_kernels[i];
- kernel_offset = end_offset;
- kernel->kernel_offset = kernel_offset;
-
- if (!kernel->size)
- continue;
-
- memcpy(kernel_ptr + kernel_offset, kernel->bin, kernel->size);
-
- end_offset += ALIGN(kernel->size, ALIGNMENT);
- }
-
- render_state->instruction_state.end_offset = end_offset;
-
- dri_bo_unmap(render_state->instruction_state.bo);
-
- return true;
-}
diff --git a/src/gen8_vme.c b/src/gen8_vme.c
deleted file mode 100644
index 65b8e25..0000000
--- a/src/gen8_vme.c
+++ /dev/null
@@ -1,1415 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- * Xiang Haihao <haihao.xiang@intel.com>
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdbool.h>
-#include <string.h>
-#include <assert.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "i965_encoder.h"
-#include "gen6_vme.h"
-#include "gen6_mfc.h"
-
-#ifdef SURFACE_STATE_PADDED_SIZE
-#undef SURFACE_STATE_PADDED_SIZE
-#endif
-
-#define SURFACE_STATE_PADDED_SIZE SURFACE_STATE_PADDED_SIZE_GEN8
-#define SURFACE_STATE_OFFSET(index) (SURFACE_STATE_PADDED_SIZE * index)
-#define BINDING_TABLE_OFFSET(index) (SURFACE_STATE_OFFSET(MAX_MEDIA_SURFACES_GEN6) + sizeof(unsigned int) * index)
-
-#define VME_INTRA_SHADER 0
-#define VME_INTER_SHADER 1
-#define VME_BINTER_SHADER 2
-
-#define CURBE_ALLOCATION_SIZE 37 /* in 256-bit */
-#define CURBE_TOTAL_DATA_LENGTH (4 * 32) /* in byte, it should be less than or equal to CURBE_ALLOCATION_SIZE * 32 */
-#define CURBE_URB_ENTRY_LENGTH 4 /* in 256-bit, it should be less than or equal to CURBE_TOTAL_DATA_LENGTH / 32 */
-
-#define VME_MSG_LENGTH 32
-
-static const uint32_t gen8_vme_intra_frame[][4] = {
-#include "shaders/vme/intra_frame_gen8.g8b"
-};
-
-static const uint32_t gen8_vme_inter_frame[][4] = {
-#include "shaders/vme/inter_frame_gen8.g8b"
-};
-
-static const uint32_t gen8_vme_inter_bframe[][4] = {
-#include "shaders/vme/inter_bframe_gen8.g8b"
-};
-
-static struct i965_kernel gen8_vme_kernels[] = {
- {
- "VME Intra Frame",
- VME_INTRA_SHADER, /*index*/
- gen8_vme_intra_frame,
- sizeof(gen8_vme_intra_frame),
- NULL
- },
- {
- "VME inter Frame",
- VME_INTER_SHADER,
- gen8_vme_inter_frame,
- sizeof(gen8_vme_inter_frame),
- NULL
- },
- {
- "VME inter BFrame",
- VME_BINTER_SHADER,
- gen8_vme_inter_bframe,
- sizeof(gen8_vme_inter_bframe),
- NULL
- }
-};
-
-static const uint32_t gen8_vme_mpeg2_intra_frame[][4] = {
-#include "shaders/vme/intra_frame_gen8.g8b"
-};
-
-static const uint32_t gen8_vme_mpeg2_inter_frame[][4] = {
-#include "shaders/vme/mpeg2_inter_gen8.g8b"
-};
-
-static struct i965_kernel gen8_vme_mpeg2_kernels[] = {
- {
- "VME Intra Frame",
- VME_INTRA_SHADER, /*index*/
- gen8_vme_mpeg2_intra_frame,
- sizeof(gen8_vme_mpeg2_intra_frame),
- NULL
- },
- {
- "VME inter Frame",
- VME_INTER_SHADER,
- gen8_vme_mpeg2_inter_frame,
- sizeof(gen8_vme_mpeg2_inter_frame),
- NULL
- },
-};
-
-static const uint32_t gen8_vme_vp8_intra_frame[][4] = {
-#include "shaders/vme/vp8_intra_frame_gen8.g8b"
-};
-
-static const uint32_t gen8_vme_vp8_inter_frame[][4] = {
-#include "shaders/vme/vp8_inter_frame_gen8.g8b"
-};
-
-static struct i965_kernel gen8_vme_vp8_kernels[] = {
- {
- "VME Intra Frame",
- VME_INTRA_SHADER, /*index*/
- gen8_vme_vp8_intra_frame,
- sizeof(gen8_vme_vp8_intra_frame),
- NULL
- },
- {
- "VME inter Frame",
- VME_INTER_SHADER,
- gen8_vme_vp8_inter_frame,
- sizeof(gen8_vme_vp8_inter_frame),
- NULL
- },
-};
-
-/* only used for VME source surface state */
-static void
-gen8_vme_source_surface_state(VADriverContextP ctx,
- int index,
- struct object_surface *obj_surface,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- vme_context->vme_surface2_setup(ctx,
- &vme_context->gpe_context,
- obj_surface,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index));
-}
-
-static void
-gen8_vme_media_source_surface_state(VADriverContextP ctx,
- int index,
- struct object_surface *obj_surface,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- vme_context->vme_media_rw_surface_setup(ctx,
- &vme_context->gpe_context,
- obj_surface,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index),
- 0);
-}
-
-static void
-gen8_vme_media_chroma_source_surface_state(VADriverContextP ctx,
- int index,
- struct object_surface *obj_surface,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- vme_context->vme_media_chroma_surface_setup(ctx,
- &vme_context->gpe_context,
- obj_surface,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index),
- 0);
-}
-
-static void
-gen8_vme_output_buffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context,
- int is_intra,
- int width_in_mbs,
- int height_in_mbs)
-
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- vme_context->vme_output.num_blocks = width_in_mbs * height_in_mbs;
- vme_context->vme_output.pitch = 16; /* in bytes, always 16 */
-
- if (is_intra)
- vme_context->vme_output.size_block = INTRA_VME_OUTPUT_IN_BYTES * 2;
- else
- vme_context->vme_output.size_block = INTRA_VME_OUTPUT_IN_BYTES * 24;
- /*
- * Inter MV . 32-byte Intra search + 16 IME info + 128 IME MV + 32 IME Ref
- * + 16 FBR Info + 128 FBR MV + 32 FBR Ref.
- * 16 * (2 + 2 * (1 + 8 + 2))= 16 * 24.
- */
-
- vme_context->vme_output.bo = dri_bo_alloc(i965->intel.bufmgr,
- "VME output buffer",
- vme_context->vme_output.num_blocks * vme_context->vme_output.size_block,
- 0x1000);
- assert(vme_context->vme_output.bo);
- vme_context->vme_buffer_suface_setup(ctx,
- &vme_context->gpe_context,
- &vme_context->vme_output,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index));
-}
-
-static void
-gen8_vme_avc_output_buffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context)
-{
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int is_intra = pSliceParameter->slice_type == SLICE_TYPE_I;
- int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
-
- gen8_vme_output_buffer_setup(ctx, encode_state, index, encoder_context, is_intra, width_in_mbs, height_in_mbs);
-
-}
-
-static void
-gen8_vme_output_vme_batchbuffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context,
- int width_in_mbs,
- int height_in_mbs)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- vme_context->vme_batchbuffer.num_blocks = width_in_mbs * height_in_mbs + 1;
- vme_context->vme_batchbuffer.size_block = 64; /* 4 OWORDs */
- vme_context->vme_batchbuffer.pitch = 16;
- vme_context->vme_batchbuffer.bo = dri_bo_alloc(i965->intel.bufmgr,
- "VME batchbuffer",
- vme_context->vme_batchbuffer.num_blocks * vme_context->vme_batchbuffer.size_block,
- 0x1000);
- vme_context->vme_buffer_suface_setup(ctx,
- &vme_context->gpe_context,
- &vme_context->vme_batchbuffer,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index));
-}
-
-static void
-gen8_vme_avc_output_vme_batchbuffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context)
-{
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
-
- gen8_vme_output_vme_batchbuffer_setup(ctx, encode_state, index, encoder_context, width_in_mbs, height_in_mbs);
-}
-
-static VAStatus
-gen8_vme_surface_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct object_surface *obj_surface;
-
- /*Setup surfaces state*/
- /* current picture for encoding */
- obj_surface = encode_state->input_yuv_object;
- gen8_vme_source_surface_state(ctx, 0, obj_surface, encoder_context);
- gen8_vme_media_source_surface_state(ctx, 4, obj_surface, encoder_context);
- gen8_vme_media_chroma_source_surface_state(ctx, 6, obj_surface, encoder_context);
-
- if (!is_intra) {
- VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int slice_type;
-
- slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
- assert(slice_type != SLICE_TYPE_I && slice_type != SLICE_TYPE_SI);
-
- intel_avc_vme_reference_state(ctx, encode_state, encoder_context, 0, 1, gen8_vme_source_surface_state);
-
- if (slice_type == SLICE_TYPE_B)
- intel_avc_vme_reference_state(ctx, encode_state, encoder_context, 1, 2, gen8_vme_source_surface_state);
- }
-
- /* VME output */
- gen8_vme_avc_output_buffer_setup(ctx, encode_state, 3, encoder_context);
- gen8_vme_avc_output_vme_batchbuffer_setup(ctx, encode_state, 5, encoder_context);
- intel_h264_setup_cost_surface(ctx, encode_state, encoder_context,
- BINDING_TABLE_OFFSET(INTEL_COST_TABLE_OFFSET),
- SURFACE_STATE_OFFSET(INTEL_COST_TABLE_OFFSET));
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus gen8_vme_interface_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct gen8_interface_descriptor_data *desc;
- int i;
- dri_bo *bo;
- unsigned char *desc_ptr;
-
- bo = vme_context->gpe_context.idrt.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- desc_ptr = (unsigned char *)bo->virtual + vme_context->gpe_context.idrt.offset;
-
- desc = (struct gen8_interface_descriptor_data *)desc_ptr;
-
- for (i = 0; i < vme_context->vme_kernel_sum; i++) {
- struct i965_kernel *kernel;
- kernel = &vme_context->gpe_context.kernels[i];
- assert(sizeof(*desc) == 32);
- /*Setup the descritor table*/
- memset(desc, 0, sizeof(*desc));
- desc->desc0.kernel_start_pointer = kernel->kernel_offset >> 6;
- desc->desc3.sampler_count = 0; /* FIXME: */
- desc->desc3.sampler_state_pointer = 0;
- desc->desc4.binding_table_entry_count = 1; /* FIXME: */
- desc->desc4.binding_table_pointer = (BINDING_TABLE_OFFSET(0) >> 5);
- desc->desc5.constant_urb_entry_read_offset = 0;
- desc->desc5.constant_urb_entry_read_length = CURBE_URB_ENTRY_LENGTH;
-
-
- desc++;
- }
-
- dri_bo_unmap(bo);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus gen8_vme_constant_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int denom)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- unsigned char *constant_buffer;
- unsigned int *vme_state_message;
- int mv_num = 32;
-
- vme_state_message = (unsigned int *)vme_context->vme_state_message;
-
- if (encoder_context->codec == CODEC_H264 ||
- encoder_context->codec == CODEC_H264_MVC) {
- if (vme_context->h264_level >= 30) {
- mv_num = 16 / denom;
-
- if (vme_context->h264_level >= 31)
- mv_num = 8 / denom;
- }
- } else if (encoder_context->codec == CODEC_MPEG2) {
- mv_num = 2 / denom;
- }
-
- vme_state_message[31] = mv_num;
-
- dri_bo_map(vme_context->gpe_context.curbe.bo, 1);
- assert(vme_context->gpe_context.curbe.bo->virtual);
- constant_buffer = (unsigned char *)vme_context->gpe_context.curbe.bo->virtual +
- vme_context->gpe_context.curbe.offset;
-
- /* VME MV/Mb cost table is passed by using const buffer */
- /* Now it uses the fixed search path. So it is constructed directly
- * in the GPU shader.
- */
- memcpy(constant_buffer, (char *)vme_context->vme_state_message, 128);
-
- dri_bo_unmap(vme_context->gpe_context.curbe.bo);
-
- return VA_STATUS_SUCCESS;
-}
-
-#define MB_SCOREBOARD_A (1 << 0)
-#define MB_SCOREBOARD_B (1 << 1)
-#define MB_SCOREBOARD_C (1 << 2)
-
-/* check whether the mb of (x_index, y_index) is out of bound */
-static inline int loop_in_bounds(int x_index, int y_index, int first_mb, int num_mb, int mb_width, int mb_height)
-{
- int mb_index;
- if (x_index < 0 || x_index >= mb_width)
- return -1;
- if (y_index < 0 || y_index >= mb_height)
- return -1;
-
- mb_index = y_index * mb_width + x_index;
- if (mb_index < first_mb || mb_index > (first_mb + num_mb))
- return -1;
- return 0;
-}
-
-static void
-gen8wa_vme_walker_fill_vme_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- int mb_width, int mb_height,
- int kernel,
- int transform_8x8_mode_flag,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- int mb_row;
- int s;
- unsigned int *command_ptr;
-
-#define USE_SCOREBOARD (1 << 21)
-
- dri_bo_map(vme_context->vme_batchbuffer.bo, 1);
- command_ptr = vme_context->vme_batchbuffer.bo->virtual;
-
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[s]->buffer;
- int first_mb = pSliceParameter->macroblock_address;
- int num_mb = pSliceParameter->num_macroblocks;
- unsigned int mb_intra_ub, score_dep;
- int x_outer, y_outer, x_inner, y_inner;
- int xtemp_outer = 0;
-
- x_outer = first_mb % mb_width;
- y_outer = first_mb / mb_width;
- mb_row = y_outer;
-
- for (; x_outer < (mb_width -2 ) && !loop_in_bounds(x_outer, y_outer, first_mb, num_mb, mb_width, mb_height); ) {
- x_inner = x_outer;
- y_inner = y_outer;
- for (; !loop_in_bounds(x_inner, y_inner, first_mb, num_mb, mb_width, mb_height);) {
- mb_intra_ub = 0;
- score_dep = 0;
- if (x_inner != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- score_dep |= MB_SCOREBOARD_A;
- }
- if (y_inner != mb_row) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
- score_dep |= MB_SCOREBOARD_B;
- if (x_inner != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
- if (x_inner != (mb_width -1)) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- score_dep |= MB_SCOREBOARD_C;
- }
- }
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (8 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = USE_SCOREBOARD;
- /* Indirect data */
- *command_ptr++ = 0;
- /* the (X, Y) term of scoreboard */
- *command_ptr++ = ((y_inner << 16) | x_inner);
- *command_ptr++ = score_dep;
- /*inline data */
- *command_ptr++ = (mb_width << 16 | y_inner << 8 | x_inner);
- *command_ptr++ = ((1 << 18) | (1 << 16) | transform_8x8_mode_flag | (mb_intra_ub << 8));
- *command_ptr++ = CMD_MEDIA_STATE_FLUSH;
- *command_ptr++ = 0;
-
- x_inner -= 2;
- y_inner += 1;
- }
- x_outer += 1;
- }
-
- xtemp_outer = mb_width - 2;
- if (xtemp_outer < 0)
- xtemp_outer = 0;
- x_outer = xtemp_outer;
- y_outer = first_mb / mb_width;
- for (;!loop_in_bounds(x_outer, y_outer, first_mb, num_mb, mb_width, mb_height); ) {
- y_inner = y_outer;
- x_inner = x_outer;
- for (; !loop_in_bounds(x_inner, y_inner, first_mb, num_mb, mb_width, mb_height);) {
- mb_intra_ub = 0;
- score_dep = 0;
- if (x_inner != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- score_dep |= MB_SCOREBOARD_A;
- }
- if (y_inner != mb_row) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
- score_dep |= MB_SCOREBOARD_B;
- if (x_inner != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
-
- if (x_inner != (mb_width -1)) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- score_dep |= MB_SCOREBOARD_C;
- }
- }
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (8 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = USE_SCOREBOARD;
- /* Indirect data */
- *command_ptr++ = 0;
- /* the (X, Y) term of scoreboard */
- *command_ptr++ = ((y_inner << 16) | x_inner);
- *command_ptr++ = score_dep;
- /*inline data */
- *command_ptr++ = (mb_width << 16 | y_inner << 8 | x_inner);
- *command_ptr++ = ((1 << 18) | (1 << 16) | transform_8x8_mode_flag | (mb_intra_ub << 8));
-
- *command_ptr++ = CMD_MEDIA_STATE_FLUSH;
- *command_ptr++ = 0;
- x_inner -= 2;
- y_inner += 1;
- }
- x_outer++;
- if (x_outer >= mb_width) {
- y_outer += 1;
- x_outer = xtemp_outer;
- }
- }
- }
-
- *command_ptr++ = MI_BATCH_BUFFER_END;
- *command_ptr++ = 0;
-
- dri_bo_unmap(vme_context->vme_batchbuffer.bo);
-}
-
-static void
-gen8_vme_fill_vme_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- int mb_width, int mb_height,
- int kernel,
- int transform_8x8_mode_flag,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- int mb_x = 0, mb_y = 0;
- int i, s;
- unsigned int *command_ptr;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int qp;
- int slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
- int qp_mb, qp_index;
-
- if (encoder_context->rate_control_mode == VA_RC_CQP)
- qp = pic_param->pic_init_qp + slice_param->slice_qp_delta;
- else
- qp = mfc_context->brc.qp_prime_y[encoder_context->layer.curr_frame_layer_id][slice_type];
-
- dri_bo_map(vme_context->vme_batchbuffer.bo, 1);
- command_ptr = vme_context->vme_batchbuffer.bo->virtual;
-
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[s]->buffer;
- int slice_mb_begin = pSliceParameter->macroblock_address;
- int slice_mb_number = pSliceParameter->num_macroblocks;
- unsigned int mb_intra_ub;
- int slice_mb_x = pSliceParameter->macroblock_address % mb_width;
- for (i = 0; i < slice_mb_number; ) {
- int mb_count = i + slice_mb_begin;
- mb_x = mb_count % mb_width;
- mb_y = mb_count / mb_width;
- mb_intra_ub = 0;
- if (mb_x != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- }
- if (mb_y != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
- if (mb_x != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
- if (mb_x != (mb_width -1))
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- }
- if (i < mb_width) {
- if (i == 0)
- mb_intra_ub &= ~(INTRA_PRED_AVAIL_FLAG_AE);
- mb_intra_ub &= ~(INTRA_PRED_AVAIL_FLAG_BCD_MASK);
- if ((i == (mb_width - 1)) && slice_mb_x) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- }
- }
-
- if ((i == mb_width) && slice_mb_x) {
- mb_intra_ub &= ~(INTRA_PRED_AVAIL_FLAG_D);
- }
- *command_ptr++ = (CMD_MEDIA_OBJECT | (9 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
-
- /*inline data */
- *command_ptr++ = (mb_width << 16 | mb_y << 8 | mb_x);
- *command_ptr++ = ((encoder_context->quality_level << 24) | (1 << 16) | transform_8x8_mode_flag | (mb_intra_ub << 8));
- /* qp occupies one byte */
- if (vme_context->roi_enabled) {
- qp_index = mb_y * mb_width + mb_x;
- qp_mb = *(vme_context->qp_per_mb + qp_index);
- } else
- qp_mb = qp;
- *command_ptr++ = qp_mb;
-
- *command_ptr++ = CMD_MEDIA_STATE_FLUSH;
- *command_ptr++ = 0;
- i += 1;
- }
- }
-
- *command_ptr++ = MI_BATCH_BUFFER_END;
- *command_ptr++ = 0;
-
- dri_bo_unmap(vme_context->vme_batchbuffer.bo);
-}
-
-static void gen8_vme_media_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- gen8_gpe_context_init(ctx, &vme_context->gpe_context);
-
- /* VME output buffer */
- dri_bo_unreference(vme_context->vme_output.bo);
- vme_context->vme_output.bo = NULL;
-
- dri_bo_unreference(vme_context->vme_batchbuffer.bo);
- vme_context->vme_batchbuffer.bo = NULL;
-
- /* VME state */
- dri_bo_unreference(vme_context->vme_state.bo);
- vme_context->vme_state.bo = NULL;
-}
-
-static void gen8_vme_pipeline_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
- int kernel_shader;
- bool allow_hwscore = true;
- int s;
- unsigned int is_low_quality = (encoder_context->quality_level == ENCODER_LOW_QUALITY);
-
- if (is_low_quality)
- allow_hwscore = false;
- else {
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[s]->buffer;
- if ((pSliceParameter->macroblock_address % width_in_mbs)) {
- allow_hwscore = false;
- break;
- }
- }
- }
-
- if ((pSliceParameter->slice_type == SLICE_TYPE_I) ||
- (pSliceParameter->slice_type == SLICE_TYPE_SI)) {
- kernel_shader = VME_INTRA_SHADER;
- } else if ((pSliceParameter->slice_type == SLICE_TYPE_P) ||
- (pSliceParameter->slice_type == SLICE_TYPE_SP)) {
- kernel_shader = VME_INTER_SHADER;
- } else {
- kernel_shader = VME_BINTER_SHADER;
- if (!allow_hwscore)
- kernel_shader = VME_INTER_SHADER;
- }
- if (allow_hwscore)
- gen8wa_vme_walker_fill_vme_batchbuffer(ctx,
- encode_state,
- width_in_mbs, height_in_mbs,
- kernel_shader,
- pPicParameter->pic_fields.bits.transform_8x8_mode_flag,
- encoder_context);
- else
- gen8_vme_fill_vme_batchbuffer(ctx,
- encode_state,
- width_in_mbs, height_in_mbs,
- kernel_shader,
- pPicParameter->pic_fields.bits.transform_8x8_mode_flag,
- encoder_context);
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- gen8_gpe_pipeline_setup(ctx, &vme_context->gpe_context, batch);
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8) | (1 << 0));
- OUT_RELOC64(batch,
- vme_context->vme_batchbuffer.bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- ADVANCE_BATCH(batch);
-
- intel_batchbuffer_end_atomic(batch);
-}
-
-static VAStatus gen8_vme_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int is_intra = pSliceParameter->slice_type == SLICE_TYPE_I;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- if (!vme_context->h264_level ||
- (vme_context->h264_level != pSequenceParameter->level_idc)) {
- vme_context->h264_level = pSequenceParameter->level_idc;
- }
-
- intel_vme_update_mbmv_cost(ctx, encode_state, encoder_context);
- intel_h264_initialize_mbmv_cost(ctx, encode_state, encoder_context);
- intel_h264_enc_roi_config(ctx, encode_state, encoder_context);
-
- /*Setup all the memory object*/
- gen8_vme_surface_setup(ctx, encode_state, is_intra, encoder_context);
- gen8_vme_interface_setup(ctx, encode_state, encoder_context);
- //gen8_vme_vme_state_setup(ctx, encode_state, is_intra, encoder_context);
- gen8_vme_constant_setup(ctx, encode_state, encoder_context, (pSliceParameter->slice_type == SLICE_TYPE_B) ? 2 : 1);
-
- /*Programing media pipeline*/
- gen8_vme_pipeline_programing(ctx, encode_state, encoder_context);
-
- return vaStatus;
-}
-
-static VAStatus gen8_vme_run(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- intel_batchbuffer_flush(batch);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus gen8_vme_stop(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen8_vme_pipeline(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- gen8_vme_media_init(ctx, encoder_context);
- gen8_vme_prepare(ctx, encode_state, encoder_context);
- gen8_vme_run(ctx, encode_state, encoder_context);
- gen8_vme_stop(ctx, encode_state, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen8_vme_mpeg2_output_buffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- VAEncSequenceParameterBufferMPEG2 *seq_param = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = ALIGN(seq_param->picture_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->picture_height, 16) / 16;
-
- gen8_vme_output_buffer_setup(ctx, encode_state, index, encoder_context, is_intra, width_in_mbs, height_in_mbs);
-}
-
-static void
-gen8_vme_mpeg2_output_vme_batchbuffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context)
-{
- VAEncSequenceParameterBufferMPEG2 *seq_param = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = ALIGN(seq_param->picture_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->picture_height, 16) / 16;
-
- gen8_vme_output_vme_batchbuffer_setup(ctx, encode_state, index, encoder_context, width_in_mbs, height_in_mbs);
-}
-
-static VAStatus
-gen8_vme_mpeg2_surface_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct object_surface *obj_surface;
-
- /*Setup surfaces state*/
- /* current picture for encoding */
- obj_surface = encode_state->input_yuv_object;
- gen8_vme_source_surface_state(ctx, 0, obj_surface, encoder_context);
- gen8_vme_media_source_surface_state(ctx, 4, obj_surface, encoder_context);
- gen8_vme_media_chroma_source_surface_state(ctx, 6, obj_surface, encoder_context);
-
- if (!is_intra) {
- /* reference 0 */
- obj_surface = encode_state->reference_objects[0];
-
- if (obj_surface->bo != NULL)
- gen8_vme_source_surface_state(ctx, 1, obj_surface, encoder_context);
-
- /* reference 1 */
- obj_surface = encode_state->reference_objects[1];
-
- if (obj_surface && obj_surface->bo != NULL)
- gen8_vme_source_surface_state(ctx, 2, obj_surface, encoder_context);
- }
-
- /* VME output */
- gen8_vme_mpeg2_output_buffer_setup(ctx, encode_state, 3, is_intra, encoder_context);
- gen8_vme_mpeg2_output_vme_batchbuffer_setup(ctx, encode_state, 5, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen8wa_vme_mpeg2_walker_fill_vme_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- int mb_width, int mb_height,
- int kernel,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- unsigned int *command_ptr;
-
-#define MPEG2_SCOREBOARD (1 << 21)
-
- dri_bo_map(vme_context->vme_batchbuffer.bo, 1);
- command_ptr = vme_context->vme_batchbuffer.bo->virtual;
-
- {
- unsigned int mb_intra_ub, score_dep;
- int x_outer, y_outer, x_inner, y_inner;
- int xtemp_outer = 0;
- int first_mb = 0;
- int num_mb = mb_width * mb_height;
-
- x_outer = 0;
- y_outer = 0;
-
-
- for (; x_outer < (mb_width -2 ) && !loop_in_bounds(x_outer, y_outer, first_mb, num_mb, mb_width, mb_height); ) {
- x_inner = x_outer;
- y_inner = y_outer;
- for (; !loop_in_bounds(x_inner, y_inner, first_mb, num_mb, mb_width, mb_height);) {
- mb_intra_ub = 0;
- score_dep = 0;
- if (x_inner != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- score_dep |= MB_SCOREBOARD_A;
- }
- if (y_inner != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
- score_dep |= MB_SCOREBOARD_B;
-
- if (x_inner != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
-
- if (x_inner != (mb_width -1)) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- score_dep |= MB_SCOREBOARD_C;
- }
- }
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (8 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = MPEG2_SCOREBOARD;
- /* Indirect data */
- *command_ptr++ = 0;
- /* the (X, Y) term of scoreboard */
- *command_ptr++ = ((y_inner << 16) | x_inner);
- *command_ptr++ = score_dep;
- /*inline data */
- *command_ptr++ = (mb_width << 16 | y_inner << 8 | x_inner);
- *command_ptr++ = ((1 << 18) | (1 << 16) | (mb_intra_ub << 8));
- *command_ptr++ = CMD_MEDIA_STATE_FLUSH;
- *command_ptr++ = 0;
-
- x_inner -= 2;
- y_inner += 1;
- }
- x_outer += 1;
- }
-
- xtemp_outer = mb_width - 2;
- if (xtemp_outer < 0)
- xtemp_outer = 0;
- x_outer = xtemp_outer;
- y_outer = 0;
- for (;!loop_in_bounds(x_outer, y_outer, first_mb, num_mb, mb_width, mb_height); ) {
- y_inner = y_outer;
- x_inner = x_outer;
- for (; !loop_in_bounds(x_inner, y_inner, first_mb, num_mb, mb_width, mb_height);) {
- mb_intra_ub = 0;
- score_dep = 0;
- if (x_inner != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- score_dep |= MB_SCOREBOARD_A;
- }
- if (y_inner != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
- score_dep |= MB_SCOREBOARD_B;
-
- if (x_inner != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
-
- if (x_inner != (mb_width -1)) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- score_dep |= MB_SCOREBOARD_C;
- }
- }
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (8 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = MPEG2_SCOREBOARD;
- /* Indirect data */
- *command_ptr++ = 0;
- /* the (X, Y) term of scoreboard */
- *command_ptr++ = ((y_inner << 16) | x_inner);
- *command_ptr++ = score_dep;
- /*inline data */
- *command_ptr++ = (mb_width << 16 | y_inner << 8 | x_inner);
- *command_ptr++ = ((1 << 18) | (1 << 16) | (mb_intra_ub << 8));
-
- *command_ptr++ = CMD_MEDIA_STATE_FLUSH;
- *command_ptr++ = 0;
- x_inner -= 2;
- y_inner += 1;
- }
- x_outer++;
- if (x_outer >= mb_width) {
- y_outer += 1;
- x_outer = xtemp_outer;
- }
- }
- }
-
- *command_ptr++ = MI_BATCH_BUFFER_END;
- *command_ptr++ = 0;
-
- dri_bo_unmap(vme_context->vme_batchbuffer.bo);
- return;
-}
-
-static void
-gen8_vme_mpeg2_fill_vme_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- int mb_width, int mb_height,
- int kernel,
- int transform_8x8_mode_flag,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- int mb_x = 0, mb_y = 0;
- int i, s, j;
- unsigned int *command_ptr;
-
-
- dri_bo_map(vme_context->vme_batchbuffer.bo, 1);
- command_ptr = vme_context->vme_batchbuffer.bo->virtual;
-
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- VAEncSliceParameterBufferMPEG2 *slice_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[s]->buffer;
-
- for (j = 0; j < encode_state->slice_params_ext[s]->num_elements; j++) {
- int slice_mb_begin = slice_param->macroblock_address;
- int slice_mb_number = slice_param->num_macroblocks;
- unsigned int mb_intra_ub;
-
- for (i = 0; i < slice_mb_number;) {
- int mb_count = i + slice_mb_begin;
-
- mb_x = mb_count % mb_width;
- mb_y = mb_count / mb_width;
- mb_intra_ub = 0;
-
- if (mb_x != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- }
-
- if (mb_y != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
-
- if (mb_x != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
-
- if (mb_x != (mb_width -1))
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- }
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (8 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
-
- /*inline data */
- *command_ptr++ = (mb_width << 16 | mb_y << 8 | mb_x);
- *command_ptr++ = ( (1 << 16) | transform_8x8_mode_flag | (mb_intra_ub << 8));
-
- *command_ptr++ = CMD_MEDIA_STATE_FLUSH;
- *command_ptr++ = 0;
- i += 1;
- }
-
- slice_param++;
- }
- }
-
- *command_ptr++ = MI_BATCH_BUFFER_END;
- *command_ptr++ = 0;
-
- dri_bo_unmap(vme_context->vme_batchbuffer.bo);
-}
-
-static void
-gen8_vme_mpeg2_pipeline_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- VAEncSequenceParameterBufferMPEG2 *seq_param = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = ALIGN(seq_param->picture_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->picture_height, 16) / 16;
- bool allow_hwscore = true;
- int s;
- int kernel_shader;
- VAEncPictureParameterBufferMPEG2 *pic_param = NULL;
-
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- int j;
- VAEncSliceParameterBufferMPEG2 *slice_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[s]->buffer;
-
- for (j = 0; j < encode_state->slice_params_ext[s]->num_elements; j++) {
- if (slice_param->macroblock_address % width_in_mbs) {
- allow_hwscore = false;
- break;
- }
- }
- }
-
- pic_param = (VAEncPictureParameterBufferMPEG2 *)encode_state->pic_param_ext->buffer;
- if (pic_param->picture_type == VAEncPictureTypeIntra) {
- allow_hwscore = false;
- kernel_shader = VME_INTRA_SHADER;
- } else {
- kernel_shader = VME_INTER_SHADER;
- }
-
- if (allow_hwscore)
- gen8wa_vme_mpeg2_walker_fill_vme_batchbuffer(ctx,
- encode_state,
- width_in_mbs, height_in_mbs,
- kernel_shader,
- encoder_context);
- else
- gen8_vme_mpeg2_fill_vme_batchbuffer(ctx,
- encode_state,
- width_in_mbs, height_in_mbs,
- is_intra ? VME_INTRA_SHADER : VME_INTER_SHADER,
- 0,
- encoder_context);
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- gen8_gpe_pipeline_setup(ctx, &vme_context->gpe_context, batch);
- BEGIN_BATCH(batch, 4);
- OUT_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8) | (1 << 0));
- OUT_RELOC64(batch,
- vme_context->vme_batchbuffer.bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- intel_batchbuffer_end_atomic(batch);
-}
-
-static VAStatus
-gen8_vme_mpeg2_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- VAEncSliceParameterBufferMPEG2 *slice_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[0]->buffer;
- VAEncSequenceParameterBufferMPEG2 *seq_param = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- if ((!vme_context->mpeg2_level) ||
- (vme_context->mpeg2_level != (seq_param->sequence_extension.bits.profile_and_level_indication & MPEG2_LEVEL_MASK))) {
- vme_context->mpeg2_level = seq_param->sequence_extension.bits.profile_and_level_indication & MPEG2_LEVEL_MASK;
- }
-
-
- /*Setup all the memory object*/
- gen8_vme_mpeg2_surface_setup(ctx, encode_state, slice_param->is_intra_slice, encoder_context);
- gen8_vme_interface_setup(ctx, encode_state, encoder_context);
- //gen8_vme_vme_state_setup(ctx, encode_state, slice_param->is_intra_slice, encoder_context);
- intel_vme_mpeg2_state_setup(ctx, encode_state, encoder_context);
- gen8_vme_constant_setup(ctx, encode_state, encoder_context, 1);
-
- /*Programing media pipeline*/
- gen8_vme_mpeg2_pipeline_programing(ctx, encode_state, slice_param->is_intra_slice, encoder_context);
-
- return vaStatus;
-}
-
-static VAStatus
-gen8_vme_mpeg2_pipeline(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- gen8_vme_media_init(ctx, encoder_context);
- gen8_vme_mpeg2_prepare(ctx, encode_state, encoder_context);
- gen8_vme_run(ctx, encode_state, encoder_context);
- gen8_vme_stop(ctx, encode_state, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen8_vme_vp8_output_buffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- VAEncSequenceParameterBufferVP8 *seq_param = (VAEncSequenceParameterBufferVP8 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = ALIGN(seq_param->frame_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->frame_height, 16) / 16;
-
- gen8_vme_output_buffer_setup(ctx, encode_state, index, encoder_context, is_intra, width_in_mbs, height_in_mbs);
-}
-
-static void
-gen8_vme_vp8_output_vme_batchbuffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context)
-{
- VAEncSequenceParameterBufferVP8 *seq_param = (VAEncSequenceParameterBufferVP8 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = ALIGN(seq_param->frame_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->frame_height, 16) / 16;
-
- gen8_vme_output_vme_batchbuffer_setup(ctx, encode_state, index, encoder_context, width_in_mbs, height_in_mbs);
-}
-
-static VAStatus
-gen8_vme_vp8_surface_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct object_surface *obj_surface;
-
- /*Setup surfaces state*/
- /* current picture for encoding */
- obj_surface = encode_state->input_yuv_object;
- gen8_vme_source_surface_state(ctx, 0, obj_surface, encoder_context);
- gen8_vme_media_source_surface_state(ctx, 4, obj_surface, encoder_context);
- gen8_vme_media_chroma_source_surface_state(ctx, 6, obj_surface, encoder_context);
-
- if (!is_intra) {
- /* reference 0 */
- obj_surface = encode_state->reference_objects[0];
-
- if (obj_surface->bo != NULL)
- gen8_vme_source_surface_state(ctx, 1, obj_surface, encoder_context);
-
- /* reference 1 */
- obj_surface = encode_state->reference_objects[1];
-
- if (obj_surface && obj_surface->bo != NULL)
- gen8_vme_source_surface_state(ctx, 2, obj_surface, encoder_context);
- }
-
- /* VME output */
- gen8_vme_vp8_output_buffer_setup(ctx, encode_state, 3, is_intra, encoder_context);
- gen8_vme_vp8_output_vme_batchbuffer_setup(ctx, encode_state, 5, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen8_vme_vp8_pipeline_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- VAEncSequenceParameterBufferVP8 *seq_param = (VAEncSequenceParameterBufferVP8 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = ALIGN(seq_param->frame_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->frame_height, 16) / 16;
- int kernel_shader = (is_intra ? VME_INTRA_SHADER : VME_INTER_SHADER);
-
- gen8wa_vme_mpeg2_walker_fill_vme_batchbuffer(ctx,
- encode_state,
- width_in_mbs, height_in_mbs,
- kernel_shader,
- encoder_context);
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- gen8_gpe_pipeline_setup(ctx, &vme_context->gpe_context, batch);
- BEGIN_BATCH(batch, 4);
- OUT_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8) | (1 << 0));
- OUT_RELOC64(batch,
- vme_context->vme_batchbuffer.bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- intel_batchbuffer_end_atomic(batch);
-}
-
-static VAStatus gen8_vme_vp8_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- VAEncPictureParameterBufferVP8 *pPicParameter = (VAEncPictureParameterBufferVP8 *)encode_state->pic_param_ext->buffer;
- int is_intra = !pPicParameter->pic_flags.bits.frame_type;
-
- /* update vp8 mbmv cost */
- intel_vme_vp8_update_mbmv_cost(ctx, encode_state, encoder_context);
-
- /*Setup all the memory object*/
- gen8_vme_vp8_surface_setup(ctx, encode_state, is_intra, encoder_context);
- gen8_vme_interface_setup(ctx, encode_state, encoder_context);
- gen8_vme_constant_setup(ctx, encode_state, encoder_context, 1);
-
- /*Programing media pipeline*/
- gen8_vme_vp8_pipeline_programing(ctx, encode_state, is_intra, encoder_context);
-
- return vaStatus;
-}
-
-static VAStatus
-gen8_vme_vp8_pipeline(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- gen8_vme_media_init(ctx, encoder_context);
- gen8_vme_vp8_prepare(ctx, encode_state, encoder_context);
- gen8_vme_run(ctx, encode_state, encoder_context);
- gen8_vme_stop(ctx, encode_state, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen8_vme_context_destroy(void *context)
-{
- struct gen6_vme_context *vme_context = context;
-
- gen8_gpe_context_destroy(&vme_context->gpe_context);
-
- dri_bo_unreference(vme_context->vme_output.bo);
- vme_context->vme_output.bo = NULL;
-
- dri_bo_unreference(vme_context->vme_state.bo);
- vme_context->vme_state.bo = NULL;
-
- dri_bo_unreference(vme_context->vme_batchbuffer.bo);
- vme_context->vme_batchbuffer.bo = NULL;
-
- free(vme_context->vme_state_message);
- vme_context->vme_state_message = NULL;
-
- dri_bo_unreference(vme_context->i_qp_cost_table);
- vme_context->i_qp_cost_table = NULL;
-
- dri_bo_unreference(vme_context->p_qp_cost_table);
- vme_context->p_qp_cost_table = NULL;
-
- dri_bo_unreference(vme_context->b_qp_cost_table);
- vme_context->b_qp_cost_table = NULL;
-
- free(vme_context->qp_per_mb);
- vme_context->qp_per_mb = NULL;
-
- free(vme_context);
-}
-
-Bool gen8_vme_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = NULL;
- struct i965_kernel *vme_kernel_list = NULL;
- int i965_kernel_num;
-
- switch (encoder_context->codec) {
- case CODEC_H264:
- case CODEC_H264_MVC:
- vme_kernel_list = gen8_vme_kernels;
- encoder_context->vme_pipeline = gen8_vme_pipeline;
- i965_kernel_num = sizeof(gen8_vme_kernels) / sizeof(struct i965_kernel);
- break;
-
- case CODEC_MPEG2:
- vme_kernel_list = gen8_vme_mpeg2_kernels;
- encoder_context->vme_pipeline = gen8_vme_mpeg2_pipeline;
- i965_kernel_num = sizeof(gen8_vme_mpeg2_kernels) / sizeof(struct i965_kernel);
- break;
-
- case CODEC_JPEG:
- //JPEG encode doesnt have vme. So, set the corresponding fields to NULL.
- encoder_context->vme_context = NULL;
- encoder_context->vme_pipeline = NULL;
- encoder_context->vme_context_destroy = NULL;
- break;
-
- case CODEC_VP8:
- vme_kernel_list = gen8_vme_vp8_kernels;
- encoder_context->vme_pipeline = gen8_vme_vp8_pipeline;
- i965_kernel_num = sizeof(gen8_vme_vp8_kernels) / sizeof(struct i965_kernel);
- break;
-
- default:
- /* never get here */
- assert(0);
-
- break;
- }
-
- //If the codec is JPEG, bypass VME
- if(encoder_context->codec != CODEC_JPEG) {
- vme_context = calloc(1, sizeof(struct gen6_vme_context));
- assert(vme_context);
- vme_context->vme_kernel_sum = i965_kernel_num;
- vme_context->gpe_context.surface_state_binding_table.length = (SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_MEDIA_SURFACES_GEN6;
-
- vme_context->gpe_context.idrt.entry_size = ALIGN(sizeof(struct gen8_interface_descriptor_data), 64);
- vme_context->gpe_context.idrt.max_entries = MAX_INTERFACE_DESC_GEN6;
-
- vme_context->gpe_context.curbe.length = CURBE_TOTAL_DATA_LENGTH;
- vme_context->gpe_context.sampler.entry_size = 0;
- vme_context->gpe_context.sampler.max_entries = 0;
-
- if (i965->intel.eu_total > 0) {
- vme_context->gpe_context.vfe_state.max_num_threads = 6 *
- i965->intel.eu_total;
- } else
- vme_context->gpe_context.vfe_state.max_num_threads = 60 - 1;
-
- vme_context->gpe_context.vfe_state.num_urb_entries = 64;
- vme_context->gpe_context.vfe_state.gpgpu_mode = 0;
- vme_context->gpe_context.vfe_state.urb_entry_size = 16;
- vme_context->gpe_context.vfe_state.curbe_allocation_size = CURBE_ALLOCATION_SIZE - 1;
-
- gen7_vme_scoreboard_init(ctx, vme_context);
-
- gen8_gpe_load_kernels(ctx,
- &vme_context->gpe_context,
- vme_kernel_list,
- i965_kernel_num);
- vme_context->vme_surface2_setup = gen8_gpe_surface2_setup;
- vme_context->vme_media_rw_surface_setup = gen8_gpe_media_rw_surface_setup;
- vme_context->vme_buffer_suface_setup = gen8_gpe_buffer_suface_setup;
- vme_context->vme_media_chroma_surface_setup = gen8_gpe_media_chroma_surface_setup;
-
- encoder_context->vme_context = vme_context;
- encoder_context->vme_context_destroy = gen8_vme_context_destroy;
-
- vme_context->vme_state_message = malloc(VME_MSG_LENGTH * sizeof(int));
- }
-
- return True;
-}
diff --git a/src/gen9_mfc.c b/src/gen9_mfc.c
deleted file mode 100644
index ce038b1..0000000
--- a/src/gen9_mfc.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <assert.h>
-
-#include "intel_batchbuffer.h"
-#include "i965_defines.h"
-#include "i965_structs.h"
-#include "i965_drv_video.h"
-#include "i965_encoder.h"
-#include "gen6_mfc.h"
-#include "gen9_mfc.h"
-#include "gen9_vdenc.h"
-#include "gen9_vp9_encapi.h"
-
-Bool gen9_mfc_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- switch (encoder_context->codec) {
- case CODEC_VP8:
- case CODEC_MPEG2:
- case CODEC_JPEG:
- return gen8_mfc_context_init(ctx, encoder_context);
-
- case CODEC_H264:
- case CODEC_H264_MVC:
- if (encoder_context->low_power_mode)
- return gen9_vdenc_context_init(ctx, encoder_context);
- else
- return gen8_mfc_context_init(ctx, encoder_context);
-
- case CODEC_HEVC:
- return gen9_hcpe_context_init(ctx, encoder_context);
-
- case CODEC_VP9:
- return gen9_vp9_pak_context_init(ctx, encoder_context);
- }
-
- /* Other profile/entrypoint pairs never get here, see gen9_enc_hw_context_init() */
- assert(0);
- return False;
-}
diff --git a/src/gen9_mfc.h b/src/gen9_mfc.h
deleted file mode 100644
index 8e7d5ad..0000000
--- a/src/gen9_mfc.h
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Qu Pengfei <Pengfei.Qu@intel.com>
- *
- */
-
-#ifndef GEN9_MFC_H
-#define GEN9_MFC_H
-
-#include <drm.h>
-#include <i915_drm.h>
-#include <intel_bufmgr.h>
-
-#include "i965_gpe_utils.h"
-
-struct encode_state;
-
-#define MAX_HCP_REFERENCE_SURFACES 8
-#define NUM_HCP_CURRENT_COLLOCATED_MV_TEMPORAL_BUFFERS 9
-
-#define INTRA_MB_FLAG_MASK 0x00002000
-
-/* The space required for slice header SLICE_STATE + header.
- * Is it enough? */
-#define SLICE_HEADER 80
-
-/* the space required for slice tail. */
-#define SLICE_TAIL 16
-
-#define __SOFTWARE__ 0
-
-#define HCP_BATCHBUFFER_HEVC_INTRA 0
-#define HCP_BATCHBUFFER_HEVC_INTER 1
-#define NUM_HCP_KERNEL 2
-
-#define BIND_IDX_VME_OUTPUT 0
-#define BIND_IDX_HCP_SLICE_HEADER 1
-#define BIND_IDX_HCP_BATCHBUFFER 2
-
-#define CMD_LEN_IN_OWORD 4
-
-struct gen9_hcpe_context {
- struct {
- unsigned int width;
- unsigned int height;
- unsigned int w_pitch;
- unsigned int h_pitch;
- } surface_state;
-
- //HCP_PIPE_BUF_ADDR_STATE
-
- struct {
- dri_bo *bo;
- } deblocking_filter_line_buffer; //OUTPUT: reconstructed picture with deblocked
-
- struct {
- dri_bo *bo;
- } deblocking_filter_tile_line_buffer; //OUTPUT: reconstructed picture with deblocked
-
- struct {
- dri_bo *bo;
- } deblocking_filter_tile_column_buffer; //OUTPUT: reconstructed picture with deblocked
-
- struct {
- dri_bo *bo;
- } uncompressed_picture_source; //INPUT: original compressed image
-
- struct {
- dri_bo *bo;
- } metadata_line_buffer; //INTERNAL:metadata
-
- struct {
- dri_bo *bo;
- } metadata_tile_line_buffer; //INTERNAL:metadata
-
- struct {
- dri_bo *bo;
- } metadata_tile_column_buffer; //INTERNAL:metadata
-
- struct {
- dri_bo *bo;
- } sao_line_buffer; //INTERNAL:SAO not used in skylake
-
- struct {
- dri_bo *bo;
- } sao_tile_line_buffer; //INTERNAL:SAO not used in skylake
-
- struct {
- dri_bo *bo;
- } sao_tile_column_buffer; //INTERNAL:SAO not used in skylake
-
- struct {
- dri_bo *bo;
- } current_collocated_mv_temporal_buffer[NUM_HCP_CURRENT_COLLOCATED_MV_TEMPORAL_BUFFERS]; //
-
- struct {
- dri_bo *bo;
- } reference_surfaces[MAX_HCP_REFERENCE_SURFACES]; //INTERNAL: refrence surfaces
-
- //HCP_IND_OBJ_BASE_ADDR_STATE
- struct {
- dri_bo *bo;
- } hcp_indirect_cu_object; //INPUT: the cu' mv info
-
- struct {
- dri_bo *bo;
- int offset;
- int end_offset;
- } hcp_indirect_pak_bse_object; //OUTPUT: the compressed bitstream
-
- //Bit rate tracking context
- struct {
- unsigned int QpPrimeY;
- unsigned int MaxQpNegModifier;
- unsigned int MaxQpPosModifier;
- unsigned char MaxSizeInWord;
- unsigned char TargetSizeInWord;
- unsigned char Correct[6];
- unsigned char GrowInit;
- unsigned char GrowResistance;
- unsigned char ShrinkInit;
- unsigned char ShrinkResistance;
-
- unsigned int target_mb_size;
- unsigned int target_frame_size;
- } bit_rate_control_context[3]; //INTERNAL: for I, P, B frames
-
- struct {
- int mode;
- int gop_nums[3];
- int target_frame_size[3]; // I,P,B
- double bits_per_frame;
- double qpf_rounding_accumulator;
- } brc;
-
- struct {
- double current_buffer_fullness;
- double target_buffer_fullness;
- double buffer_capacity;
- unsigned int buffer_size;
- unsigned int violation_noted;
- } hrd;
-
- //HRD control context
- struct {
- int i_bit_rate_value; // scale?
- int i_cpb_size_value; // scale?
-
- int i_initial_cpb_removal_delay;
- int i_cpb_removal_delay;
-
- int i_frame_number;
-
- int i_initial_cpb_removal_delay_length;
- int i_cpb_removal_delay_length;
- int i_dpb_output_delay_length;
- } vui_hrd;
-
- // picture width and height
- struct {
- uint16_t picture_width_in_samples;
- uint16_t picture_height_in_samples;
- uint16_t picture_width_in_ctbs;
- uint16_t picture_height_in_ctbs;
- uint16_t picture_width_in_min_cb_minus1;
- uint16_t picture_height_in_min_cb_minus1;
- uint16_t picture_width_in_mbs; /* to use on skylake */
- uint16_t picture_height_in_mbs;/* to sue on skylake */
- uint8_t ctb_size;
- uint8_t min_cb_size;
- } pic_size;
-
- VAQMatrixBufferHEVC iq_matrix_hevc;
-
- struct i965_gpe_context gpe_context;
- struct i965_buffer_surface hcp_batchbuffer_surface;
- struct intel_batchbuffer *aux_batchbuffer;
- struct i965_buffer_surface aux_batchbuffer_surface;
-
- void (*pipe_mode_select)(VADriverContextP ctx,
- int standard_select,
- struct intel_encoder_context *encoder_context);
- void (*set_surface_state)(VADriverContextP ctx, struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
- void (*ind_obj_base_addr_state)(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context);
- void (*fqm_state)(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context);
- void (*qm_state)(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context);
- void (*pic_state)(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
- void (*insert_object)(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- unsigned int *insert_data,
- int lenght_in_dws, int data_bits_in_last_dw,
- int skip_emul_byte_count,
- int is_last_header, int is_end_of_slice,
- int emulation_flag,
- struct intel_batchbuffer *batch);
- void (*buffer_suface_setup)(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct i965_buffer_surface *buffer_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset);
-};
-
-VAStatus gen9_hcpe_pipeline(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
-
-/* HEVC BRC */
-extern int intel_hcpe_update_hrd(struct encode_state *encode_state,
- struct gen9_hcpe_context *hcpe_context,
- int frame_bits);
-
-extern int intel_hcpe_brc_postpack(struct encode_state *encode_state,
- struct gen9_hcpe_context *hcpe_context,
- int frame_bits);
-
-extern void intel_hcpe_hrd_context_update(struct encode_state *encode_state,
- struct gen9_hcpe_context *hcpe_context);
-
-extern int intel_hcpe_interlace_check(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
-
-extern void intel_hcpe_brc_prepare(struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
-
-/* HEVC HCP pipeline */
-extern void intel_hcpe_hevc_pipeline_header_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- struct intel_batchbuffer *slice_batch);
-
-extern VAStatus intel_hcpe_hevc_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
-
-extern void
-intel_hcpe_hevc_ref_idx_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
-
-extern void
-intel_hevc_slice_insert_packed_data(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int slice_index,
- struct intel_batchbuffer *slice_batch);
-
-extern
-Bool gen9_hcpe_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context);
-
-void gen9_hcpe_context_destroy(void *context);
-
-#endif /* GEN9_MFC_H */
diff --git a/src/gen9_mfc_hevc.c b/src/gen9_mfc_hevc.c
deleted file mode 100644
index ea22aed..0000000
--- a/src/gen9_mfc_hevc.c
+++ /dev/null
@@ -1,2687 +0,0 @@
-/*
- * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Qu Pengfei <Pengfei.Qu@intel.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <assert.h>
-
-#include "intel_batchbuffer.h"
-#include "i965_defines.h"
-#include "i965_structs.h"
-#include "i965_drv_video.h"
-#include "i965_encoder.h"
-#include "i965_encoder_utils.h"
-#include "gen9_mfc.h"
-#include "gen6_vme.h"
-#include "intel_media.h"
-
-typedef enum _gen6_brc_status {
- BRC_NO_HRD_VIOLATION = 0,
- BRC_UNDERFLOW = 1,
- BRC_OVERFLOW = 2,
- BRC_UNDERFLOW_WITH_MAX_QP = 3,
- BRC_OVERFLOW_WITH_MIN_QP = 4,
-} gen6_brc_status;
-
-/* BRC define */
-#define BRC_CLIP(x, min, max) \
- { \
- x = ((x > (max)) ? (max) : ((x < (min)) ? (min) : x)); \
- }
-
-#define BRC_P_B_QP_DIFF 4
-#define BRC_I_P_QP_DIFF 2
-#define BRC_I_B_QP_DIFF (BRC_I_P_QP_DIFF + BRC_P_B_QP_DIFF)
-
-#define BRC_PWEIGHT 0.6 /* weight if P slice with comparison to I slice */
-#define BRC_BWEIGHT 0.25 /* weight if B slice with comparison to I slice */
-
-#define BRC_QP_MAX_CHANGE 5 /* maximum qp modification */
-#define BRC_CY 0.1 /* weight for */
-#define BRC_CX_UNDERFLOW 5.
-#define BRC_CX_OVERFLOW -4.
-
-#define BRC_PI_0_5 1.5707963267948966192313216916398
-
-/* intel buffer write */
-#define ALLOC_ENCODER_BUFFER(gen_buffer, string, size) do { \
- dri_bo_unreference(gen_buffer->bo); \
- gen_buffer->bo = dri_bo_alloc(i965->intel.bufmgr, \
- string, \
- size, \
- 0x1000); \
- assert(gen_buffer->bo); \
- } while (0);
-
-
-#define OUT_BUFFER_X(buf_bo, is_target, ma) do { \
- if (buf_bo) { \
- OUT_BCS_RELOC64(batch, \
- buf_bo, \
- I915_GEM_DOMAIN_INSTRUCTION, \
- is_target ? I915_GEM_DOMAIN_INSTRUCTION : 0, \
- 0); \
- } else { \
- OUT_BCS_BATCH(batch, 0); \
- OUT_BCS_BATCH(batch, 0); \
- } \
- if (ma) \
- OUT_BCS_BATCH(batch, i965->intel.mocs_state); \
- } while (0)
-
-#define OUT_BUFFER_MA_TARGET(buf_bo) OUT_BUFFER_X(buf_bo, 1, 1)
-#define OUT_BUFFER_MA_REFERENCE(buf_bo) OUT_BUFFER_X(buf_bo, 0, 1)
-#define OUT_BUFFER_NMA_TARGET(buf_bo) OUT_BUFFER_X(buf_bo, 1, 0)
-#define OUT_BUFFER_NMA_REFERENCE(buf_bo) OUT_BUFFER_X(buf_bo, 0, 0)
-
-
-#define SURFACE_STATE_PADDED_SIZE SURFACE_STATE_PADDED_SIZE_GEN8
-#define SURFACE_STATE_OFFSET(index) (SURFACE_STATE_PADDED_SIZE * index)
-#define BINDING_TABLE_OFFSET(index) (SURFACE_STATE_OFFSET(MAX_MEDIA_SURFACES_GEN6) + sizeof(unsigned int) * index)
-
-#define HCP_SOFTWARE_SKYLAKE 1
-
-#define NUM_HCPE_KERNEL 2
-
-#define INTER_MODE_MASK 0x03
-#define INTER_8X8 0x03
-#define INTER_16X8 0x01
-#define INTER_8X16 0x02
-#define SUBMB_SHAPE_MASK 0x00FF00
-
-#define INTER_MV8 (4 << 20)
-#define INTER_MV32 (6 << 20)
-
-
-/* HEVC */
-
-/* utils */
-static void
-hevc_gen_default_iq_matrix_encoder(VAQMatrixBufferHEVC *iq_matrix)
-{
- /* Flat_4x4_16 */
- memset(&iq_matrix->scaling_lists_4x4, 16, sizeof(iq_matrix->scaling_lists_4x4));
-
- /* Flat_8x8_16 */
- memset(&iq_matrix->scaling_lists_8x8, 16, sizeof(iq_matrix->scaling_lists_8x8));
-
- /* Flat_16x16_16 */
- memset(&iq_matrix->scaling_lists_16x16, 16, sizeof(iq_matrix->scaling_lists_16x16));
-
- /* Flat_32x32_16 */
- memset(&iq_matrix->scaling_lists_32x32, 16, sizeof(iq_matrix->scaling_lists_32x32));
-
- /* Flat_16x16_dc_16 */
- memset(&iq_matrix->scaling_list_dc_16x16, 16, sizeof(iq_matrix->scaling_list_dc_16x16));
-
- /* Flat_32x32_dc_16 */
- memset(&iq_matrix->scaling_list_dc_32x32, 16, sizeof(iq_matrix->scaling_list_dc_32x32));
-}
-
-/* HEVC picture and slice state related */
-
-static void
-gen9_hcpe_pipe_mode_select(VADriverContextP ctx,
- int standard_select,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- assert(standard_select == HCP_CODEC_HEVC);
-
- if(IS_KBL(i965->intel.device_info))
- {
- BEGIN_BCS_BATCH(batch, 6);
-
- OUT_BCS_BATCH(batch, HCP_PIPE_MODE_SELECT | (6 - 2));
- }
- else
- {
- BEGIN_BCS_BATCH(batch, 4);
-
- OUT_BCS_BATCH(batch, HCP_PIPE_MODE_SELECT | (4 - 2));
- }
-
- OUT_BCS_BATCH(batch,
- (standard_select << 5) |
- (0 << 3) | /* disable Pic Status / Error Report */
- HCP_CODEC_SELECT_ENCODE);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- if(IS_KBL(i965->intel.device_info))
- {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_hcpe_surface_state(VADriverContextP ctx, struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct object_surface *obj_surface = encode_state->reconstructed_object;
- struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context;
- VAEncSequenceParameterBufferHEVC *pSequenceParameter = (VAEncSequenceParameterBufferHEVC *)encode_state->seq_param_ext->buffer;
- unsigned int surface_format = SURFACE_FORMAT_PLANAR_420_8;
-
- /* to do */
- unsigned int y_cb_offset;
-
- assert(obj_surface);
-
- if((pSequenceParameter->seq_fields.bits.bit_depth_luma_minus8 > 0)
- || (pSequenceParameter->seq_fields.bits.bit_depth_chroma_minus8 > 0))
- {
- assert(obj_surface->fourcc == VA_FOURCC_P010);
- surface_format = SURFACE_FORMAT_P010;
- }
-
- y_cb_offset = obj_surface->y_cb_offset;
-
- BEGIN_BCS_BATCH(batch, 3);
- OUT_BCS_BATCH(batch, HCP_SURFACE_STATE | (3 - 2));
- OUT_BCS_BATCH(batch,
- (1 << 28) | /* surface id */
- (mfc_context->surface_state.w_pitch - 1)); /* pitch - 1 */
- OUT_BCS_BATCH(batch,
- surface_format << 28 |
- y_cb_offset);
- ADVANCE_BCS_BATCH(batch);
-
- BEGIN_BCS_BATCH(batch, 3);
- OUT_BCS_BATCH(batch, HCP_SURFACE_STATE | (3 - 2));
- OUT_BCS_BATCH(batch,
- (0 << 28) | /* surface id */
- (mfc_context->surface_state.w_pitch - 1)); /* pitch - 1 */
- OUT_BCS_BATCH(batch,
- surface_format << 28 |
- y_cb_offset);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_hcpe_pipe_buf_addr_state(VADriverContextP ctx, struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context;
- struct object_surface *obj_surface;
- GenHevcSurface *hcpe_hevc_surface;
- dri_bo *bo;
- unsigned int i;
-
- if(IS_KBL(i965->intel.device_info))
- {
- BEGIN_BCS_BATCH(batch, 104);
-
- OUT_BCS_BATCH(batch, HCP_PIPE_BUF_ADDR_STATE | (104 - 2));
- }
- else
- {
- BEGIN_BCS_BATCH(batch, 95);
-
- OUT_BCS_BATCH(batch, HCP_PIPE_BUF_ADDR_STATE | (95 - 2));
- }
-
- obj_surface = encode_state->reconstructed_object;
- assert(obj_surface && obj_surface->bo);
- hcpe_hevc_surface = obj_surface->private_data;
- assert(hcpe_hevc_surface && hcpe_hevc_surface->motion_vector_temporal_bo);
-
- OUT_BUFFER_MA_TARGET(obj_surface->bo); /* DW 1..3 */
- OUT_BUFFER_MA_TARGET(mfc_context->deblocking_filter_line_buffer.bo);/* DW 4..6 */
- OUT_BUFFER_MA_TARGET(mfc_context->deblocking_filter_tile_line_buffer.bo); /* DW 7..9 */
- OUT_BUFFER_MA_TARGET(mfc_context->deblocking_filter_tile_column_buffer.bo); /* DW 10..12 */
- OUT_BUFFER_MA_TARGET(mfc_context->metadata_line_buffer.bo); /* DW 13..15 */
- OUT_BUFFER_MA_TARGET(mfc_context->metadata_tile_line_buffer.bo); /* DW 16..18 */
- OUT_BUFFER_MA_TARGET(mfc_context->metadata_tile_column_buffer.bo); /* DW 19..21 */
- OUT_BUFFER_MA_TARGET(mfc_context->sao_line_buffer.bo); /* DW 22..24 */
- OUT_BUFFER_MA_TARGET(mfc_context->sao_tile_line_buffer.bo); /* DW 25..27 */
- OUT_BUFFER_MA_TARGET(mfc_context->sao_tile_column_buffer.bo); /* DW 28..30 */
- OUT_BUFFER_MA_TARGET(hcpe_hevc_surface->motion_vector_temporal_bo); /* DW 31..33 */
- OUT_BUFFER_MA_TARGET(NULL); /* DW 34..36, reserved */
-
- /* here only max 8 reference allowed */
- for (i = 0; i < ARRAY_ELEMS(mfc_context->reference_surfaces); i++) {
- bo = mfc_context->reference_surfaces[i].bo;
-
- if (bo) {
- OUT_BUFFER_NMA_REFERENCE(bo);
- } else
- OUT_BUFFER_NMA_REFERENCE(NULL);
- }
- OUT_BCS_BATCH(batch, 0); /* DW 53, memory address attributes */
-
- OUT_BUFFER_MA_TARGET(mfc_context->uncompressed_picture_source.bo); /* DW 54..56, uncompressed picture source */
- OUT_BUFFER_MA_TARGET(NULL); /* DW 57..59, ignore */
- OUT_BUFFER_MA_TARGET(NULL); /* DW 60..62, ignore */
- OUT_BUFFER_MA_TARGET(NULL); /* DW 63..65, ignore */
-
- for (i = 0; i < ARRAY_ELEMS(mfc_context->current_collocated_mv_temporal_buffer) - 1; i++) {
- bo = mfc_context->current_collocated_mv_temporal_buffer[i].bo;
-
- if (bo) {
- OUT_BUFFER_NMA_REFERENCE(bo);
- } else
- OUT_BUFFER_NMA_REFERENCE(NULL);
- }
- OUT_BCS_BATCH(batch, 0); /* DW 82, memory address attributes */
-
- OUT_BUFFER_MA_TARGET(NULL); /* DW 83..85, ignore for HEVC */
- OUT_BUFFER_MA_TARGET(NULL); /* DW 86..88, ignore for HEVC */
- OUT_BUFFER_MA_TARGET(NULL); /* DW 89..91, ignore for HEVC */
- OUT_BUFFER_MA_TARGET(NULL); /* DW 92..94, ignore for HEVC */
-
- if(IS_KBL(i965->intel.device_info))
- {
- for(i = 0;i < 9;i++)
- OUT_BCS_BATCH(batch, 0);
- }
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_hcpe_ind_obj_base_addr_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context;
-
- /* to do */
- BEGIN_BCS_BATCH(batch, 14);
-
- OUT_BCS_BATCH(batch, HCP_IND_OBJ_BASE_ADDR_STATE | (14 - 2));
- OUT_BUFFER_MA_REFERENCE(NULL); /* DW 1..3 igonre for encoder*/
- OUT_BUFFER_NMA_REFERENCE(NULL); /* DW 4..5, Upper Bound */
- OUT_BUFFER_MA_TARGET(mfc_context->hcp_indirect_cu_object.bo); /* DW 6..8, CU */
- /* DW 9..11, PAK-BSE */
- OUT_BCS_RELOC64(batch,
- mfc_context->hcp_indirect_pak_bse_object.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- mfc_context->hcp_indirect_pak_bse_object.offset);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
- OUT_BCS_RELOC64(batch,
- mfc_context->hcp_indirect_pak_bse_object.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- mfc_context->hcp_indirect_pak_bse_object.end_offset);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_hcpe_fqm_state(VADriverContextP ctx,
- int size_id,
- int color_component,
- int pred_type,
- int dc,
- unsigned int *fqm,
- int fqm_length,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- unsigned int fqm_buffer[32];
-
- assert(fqm_length <= 32);
- assert(sizeof(*fqm) == 4);
- memset(fqm_buffer, 0, sizeof(fqm_buffer));
- memcpy(fqm_buffer, fqm, fqm_length * 4);
-
- BEGIN_BCS_BATCH(batch, 34);
-
- OUT_BCS_BATCH(batch, HCP_FQM_STATE | (34 - 2));
- OUT_BCS_BATCH(batch,
- dc << 16 |
- color_component << 3 |
- size_id << 1 |
- pred_type);
- intel_batchbuffer_data(batch, fqm_buffer, 32 * 4);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-
-static void
-gen9_hcpe_hevc_fqm_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- unsigned int qm[32] = {
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000
- };
-
- gen9_hcpe_fqm_state(ctx,
- 0, 0, 0, 0,
- qm, 8,
- encoder_context);
- gen9_hcpe_fqm_state(ctx,
- 0, 0, 1, 0,
- qm, 8,
- encoder_context);
- gen9_hcpe_fqm_state(ctx,
- 1, 0, 0, 0,
- qm, 32,
- encoder_context);
- gen9_hcpe_fqm_state(ctx,
- 1, 0, 1, 0,
- qm, 32,
- encoder_context);
- gen9_hcpe_fqm_state(ctx,
- 2, 0, 0, 0x1000,
- qm, 0,
- encoder_context);
- gen9_hcpe_fqm_state(ctx,
- 2, 0, 1, 0x1000,
- qm, 0,
- encoder_context);
- gen9_hcpe_fqm_state(ctx,
- 3, 0, 0, 0x1000,
- qm, 0,
- encoder_context);
- gen9_hcpe_fqm_state(ctx,
- 3, 0, 1, 0x1000,
- qm, 0,
- encoder_context);
-}
-
-static void
-gen9_hcpe_qm_state(VADriverContextP ctx,
- int size_id,
- int color_component,
- int pred_type,
- int dc,
- unsigned int *qm,
- int qm_length,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- unsigned int qm_buffer[16];
-
- assert(qm_length <= 16);
- assert(sizeof(*qm) == 4);
- memset(qm_buffer, 0, sizeof(qm_buffer));
- memcpy(qm_buffer, qm, qm_length * 4);
-
- BEGIN_BCS_BATCH(batch, 18);
-
- OUT_BCS_BATCH(batch, HCP_QM_STATE | (18 - 2));
- OUT_BCS_BATCH(batch,
- dc << 5 |
- color_component << 3 |
- size_id << 1 |
- pred_type);
- intel_batchbuffer_data(batch, qm_buffer, 16 * 4);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_hcpe_hevc_qm_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
-
- int i;
-
- unsigned int qm[16] = {
- 0x10101010, 0x10101010, 0x10101010, 0x10101010,
- 0x10101010, 0x10101010, 0x10101010, 0x10101010,
- 0x10101010, 0x10101010, 0x10101010, 0x10101010,
- 0x10101010, 0x10101010, 0x10101010, 0x10101010
- };
-
- for (i = 0; i < 6; i++) {
- gen9_hcpe_qm_state(ctx,
- 0, i % 3, i / 3, 0,
- qm, 4,
- encoder_context);
- }
-
- for (i = 0; i < 6; i++) {
- gen9_hcpe_qm_state(ctx,
- 1, i % 3, i / 3, 0,
- qm, 16,
- encoder_context);
- }
-
- for (i = 0; i < 6; i++) {
- gen9_hcpe_qm_state(ctx,
- 2, i % 3, i / 3, 16,
- qm, 16,
- encoder_context);
- }
-
- for (i = 0; i < 2; i++) {
- gen9_hcpe_qm_state(ctx,
- 3, 0, i % 2, 16,
- qm, 16,
- encoder_context);
- }
-}
-
-static void
-gen9_hcpe_hevc_pic_state(VADriverContextP ctx, struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context;
- VAEncPictureParameterBufferHEVC *pic_param ;
- VAEncSequenceParameterBufferHEVC *seq_param ;
-
- int max_pcm_size_minus3 = 0, min_pcm_size_minus3 = 0;
- int pcm_sample_bit_depth_luma_minus1 = 7, pcm_sample_bit_depth_chroma_minus1 = 7;
- /*
- * 7.4.3.1
- *
- * When not present, the value of loop_filter_across_tiles_enabled_flag
- * is inferred to be equal to 1.
- */
- int loop_filter_across_tiles_enabled_flag = 0;
- pic_param = (VAEncPictureParameterBufferHEVC *)encode_state->pic_param_ext->buffer;
- seq_param = (VAEncSequenceParameterBufferHEVC *)encode_state->seq_param_ext->buffer;
-
- int log2_cu_size = seq_param->log2_min_luma_coding_block_size_minus3 + 3;
- int log2_ctb_size = seq_param->log2_diff_max_min_luma_coding_block_size + log2_cu_size;
- int ctb_size = 1 << log2_ctb_size;
- double rawctubits = 8 * 3 * ctb_size * ctb_size / 2.0;
- int maxctubits = (int)(5 * rawctubits / 3) ;
- double bitrate = (double)encoder_context->brc.bits_per_second[0];
- double framebitrate = bitrate / 32 / 8; //32 byte unit
- int minframebitrate = 0;//(int) (framebitrate * 3 / 10);
- int maxframebitrate = (int)(framebitrate * 10 / 10);
- int maxdeltaframebitrate = 0x1c5c; //(int) (framebitrate * 1/ 10);
- int mindeltaframebitrate = 0; //(int) (framebitrate * 1/ 10);
- int minframesize = 0;//(int)(rawframebits * 1/50);
-
- if (seq_param->seq_fields.bits.pcm_enabled_flag) {
- max_pcm_size_minus3 = seq_param->log2_max_pcm_luma_coding_block_size_minus3;
- min_pcm_size_minus3 = seq_param->log2_min_pcm_luma_coding_block_size_minus3;
- pcm_sample_bit_depth_luma_minus1 = (seq_param->pcm_sample_bit_depth_luma_minus1 & 0x0f);
- pcm_sample_bit_depth_chroma_minus1 = (seq_param->pcm_sample_bit_depth_chroma_minus1 & 0x0f);
- } else {
- max_pcm_size_minus3 = MIN(seq_param->log2_min_luma_coding_block_size_minus3 + seq_param->log2_diff_max_min_luma_coding_block_size, 2);
- }
-
- if (pic_param->pic_fields.bits.tiles_enabled_flag)
- loop_filter_across_tiles_enabled_flag = pic_param->pic_fields.bits.loop_filter_across_tiles_enabled_flag;
-
- /* set zero for encoder */
- loop_filter_across_tiles_enabled_flag = 0;
-
- if(IS_KBL(i965->intel.device_info))
- {
- BEGIN_BCS_BATCH(batch, 31);
-
- OUT_BCS_BATCH(batch, HCP_PIC_STATE | (31 - 2));
- }
- else
- {
- BEGIN_BCS_BATCH(batch, 19);
-
- OUT_BCS_BATCH(batch, HCP_PIC_STATE | (19 - 2));
- }
-
- OUT_BCS_BATCH(batch,
- mfc_context->pic_size.picture_height_in_min_cb_minus1 << 16 |
- 0 << 14 |
- mfc_context->pic_size.picture_width_in_min_cb_minus1);
- OUT_BCS_BATCH(batch,
- max_pcm_size_minus3 << 10 |
- min_pcm_size_minus3 << 8 |
- (seq_param->log2_min_transform_block_size_minus2 +
- seq_param->log2_diff_max_min_transform_block_size) << 6 |
- seq_param->log2_min_transform_block_size_minus2 << 4 |
- (seq_param->log2_min_luma_coding_block_size_minus3 +
- seq_param->log2_diff_max_min_luma_coding_block_size) << 2 |
- seq_param->log2_min_luma_coding_block_size_minus3);
- OUT_BCS_BATCH(batch, 0); /* DW 3, ignored */
- OUT_BCS_BATCH(batch,
- (IS_KBL(i965->intel.device_info)? 1 : 0) << 27 | /* CU packet structure is 0 for SKL */
- seq_param->seq_fields.bits.strong_intra_smoothing_enabled_flag << 26 |
- pic_param->pic_fields.bits.transquant_bypass_enabled_flag << 25 |
- seq_param->seq_fields.bits.amp_enabled_flag << 23 |
- pic_param->pic_fields.bits.transform_skip_enabled_flag << 22 |
- 0 << 21 | /* 0 for encoder !(pic_param->decoded_curr_pic.flags & VA_PICTURE_HEVC_BOTTOM_FIELD)*/
- 0 << 20 | /* 0 for encoder !!(pic_param->decoded_curr_pic.flags & VA_PICTURE_HEVC_FIELD_PIC)*/
- pic_param->pic_fields.bits.weighted_pred_flag << 19 |
- pic_param->pic_fields.bits.weighted_bipred_flag << 18 |
- pic_param->pic_fields.bits.tiles_enabled_flag << 17 | /* 0 for encoder */
- pic_param->pic_fields.bits.entropy_coding_sync_enabled_flag << 16 |
- loop_filter_across_tiles_enabled_flag << 15 |
- pic_param->pic_fields.bits.sign_data_hiding_enabled_flag << 13 | /* 0 for encoder */
- pic_param->log2_parallel_merge_level_minus2 << 10 | /* 0 for encoder */
- pic_param->pic_fields.bits.constrained_intra_pred_flag << 9 | /* 0 for encoder */
- seq_param->seq_fields.bits.pcm_loop_filter_disabled_flag << 8 |
- (pic_param->diff_cu_qp_delta_depth & 0x03) << 6 | /* 0 for encoder */
- pic_param->pic_fields.bits.cu_qp_delta_enabled_flag << 5 | /* 0 for encoder */
- seq_param->seq_fields.bits.pcm_enabled_flag << 4 |
- seq_param->seq_fields.bits.sample_adaptive_offset_enabled_flag << 3 | /* 0 for encoder */
- 0);
- OUT_BCS_BATCH(batch,
- seq_param->seq_fields.bits.bit_depth_luma_minus8 << 27 | /* 10 bit for KBL+*/
- seq_param->seq_fields.bits.bit_depth_chroma_minus8 << 24 | /* 10 bit for KBL+ */
- pcm_sample_bit_depth_luma_minus1 << 20 |
- pcm_sample_bit_depth_chroma_minus1 << 16 |
- seq_param->max_transform_hierarchy_depth_inter << 13 | /* for encoder */
- seq_param->max_transform_hierarchy_depth_intra << 10 | /* for encoder */
- (pic_param->pps_cr_qp_offset & 0x1f) << 5 |
- (pic_param->pps_cb_qp_offset & 0x1f));
- OUT_BCS_BATCH(batch,
- 0 << 29 | /* must be 0 for encoder */
- maxctubits); /* DW 6, max LCU bit size allowed for encoder */
- OUT_BCS_BATCH(batch,
- 0 << 31 | /* frame bitrate max unit */
- maxframebitrate); /* DW 7, frame bitrate max 0:13 */
- OUT_BCS_BATCH(batch,
- 0 << 31 | /* frame bitrate min unit */
- minframebitrate); /* DW 8, frame bitrate min 0:13 */
- OUT_BCS_BATCH(batch,
- maxdeltaframebitrate << 16 | /* frame bitrate max delta ,help to select deltaQP of slice*/
- mindeltaframebitrate); /* DW 9,(0,14) frame bitrate min delta ,help to select deltaQP of slice*/
- OUT_BCS_BATCH(batch, 0x07050402); /* DW 10, frame delta qp max */
- OUT_BCS_BATCH(batch, 0x0d0b0908);
- OUT_BCS_BATCH(batch, 0); /* DW 12, frame delta qp min */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0x04030200); /* DW 14, frame delta qp max range */
- OUT_BCS_BATCH(batch, 0x100c0806); /* DW 15 */
- OUT_BCS_BATCH(batch, 0x04030200); /* DW 16, frame delta qp min range */
- OUT_BCS_BATCH(batch, 0x100c0806);
- OUT_BCS_BATCH(batch,
- 0 << 30 |
- minframesize); /* DW 18, min frame size units */
-
- if(IS_KBL(i965->intel.device_info))
- {
- int i = 0;
-
- for(i = 0;i < 12;i++)
- OUT_BCS_BATCH(batch, 0);
- }
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-
-static void
-gen9_hcpe_hevc_insert_object(VADriverContextP ctx, struct intel_encoder_context *encoder_context,
- unsigned int *insert_data, int lenght_in_dws, int data_bits_in_last_dw,
- int skip_emul_byte_count, int is_last_header, int is_end_of_slice, int emulation_flag,
- struct intel_batchbuffer *batch)
-{
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- if (data_bits_in_last_dw == 0)
- data_bits_in_last_dw = 32;
-
- BEGIN_BCS_BATCH(batch, lenght_in_dws + 2);
-
- OUT_BCS_BATCH(batch, HCP_INSERT_PAK_OBJECT | (lenght_in_dws + 2 - 2));
- OUT_BCS_BATCH(batch,
- (0 << 31) | /* inline payload */
- (0 << 16) | /* always start at offset 0 */
- (0 << 15) | /* HeaderLengthExcludeFrmSize */
- (data_bits_in_last_dw << 8) |
- (skip_emul_byte_count << 4) |
- (!!emulation_flag << 3) |
- ((!!is_last_header) << 2) |
- ((!!is_end_of_slice) << 1) |
- (0 << 0)); /* Reserved */
- intel_batchbuffer_data(batch, insert_data, lenght_in_dws * 4);
-
- ADVANCE_BCS_BATCH(batch);
-}
-/*
-// To be do: future
-static uint8_t
-intel_get_ref_idx_state_1(VAPictureHEVC *va_pic, unsigned int frame_store_id)
-{
- unsigned int is_long_term =
- !!(va_pic->flags & VA_PICTURE_HEVC_LONG_TERM_REFERENCE);
- unsigned int is_top_field =
- !!!(va_pic->flags & VA_PICTURE_HEVC_BOTTOM_FIELD);
- unsigned int is_bottom_field =
- !!(va_pic->flags & VA_PICTURE_HEVC_BOTTOM_FIELD);
-
- return ((is_long_term << 6) |
- ((is_top_field ^ is_bottom_field ^ 1) << 5) |
- (frame_store_id << 1) |
- ((is_top_field ^ 1) & is_bottom_field));
-}
-*/
-static void
-gen9_hcpe_ref_idx_state_1(struct intel_batchbuffer *batch,
- int list,
- struct intel_encoder_context *encoder_context,
- struct encode_state *encode_state)
-{
- int i;
- VAEncPictureParameterBufferHEVC *pic_param = (VAEncPictureParameterBufferHEVC *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferHEVC *slice_param = (VAEncSliceParameterBufferHEVC *)encode_state->slice_params_ext[0]->buffer;
- uint8_t num_ref_minus1 = (list ? slice_param->num_ref_idx_l1_active_minus1 : slice_param->num_ref_idx_l0_active_minus1);
- VAPictureHEVC *ref_list = (list ? slice_param->ref_pic_list1 : slice_param->ref_pic_list0);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct object_surface *obj_surface;
- int frame_index;
-
- int ref_idx_l0 = (vme_context->ref_index_in_mb[list] & 0xff);
-
- if (ref_idx_l0 > 3) {
- WARN_ONCE("ref_idx_l0 is out of range\n");
- ref_idx_l0 = 0;
- }
-
- obj_surface = vme_context->used_reference_objects[list];
- frame_index = -1;
- for (i = 0; i < 16; i++) {
- if (obj_surface &&
- obj_surface == encode_state->reference_objects[i]) {
- frame_index = i;
- break;
- }
- }
- if (frame_index == -1) {
- WARN_ONCE("RefPicList 0 or 1 is not found in DPB!\n");
- }
-
- BEGIN_BCS_BATCH(batch, 18);
-
- OUT_BCS_BATCH(batch, HCP_REF_IDX_STATE | (18 - 2));
- OUT_BCS_BATCH(batch,
- num_ref_minus1 << 1 |
- list);
-
- for (i = 0; i < 16; i++) {
- if (i < MIN((num_ref_minus1 + 1), 15)) {
- VAPictureHEVC *ref_pic = &ref_list[i];
- VAPictureHEVC *curr_pic = &pic_param->decoded_curr_pic;
-
- OUT_BCS_BATCH(batch,
- 1 << 15 | /* bottom_field_flag 0 */
- 0 << 14 | /* field_pic_flag 0 */
- !!(ref_pic->flags & VA_PICTURE_HEVC_LONG_TERM_REFERENCE) << 13 | /* short term is 1 */
- 0 << 12 | /* disable WP */
- 0 << 11 | /* disable WP */
- frame_index << 8 |
- (CLAMP(-128, 127, curr_pic->pic_order_cnt - ref_pic->pic_order_cnt) & 0xff));
- } else {
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-void
-intel_hcpe_hevc_ref_idx_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context
- )
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- VAEncSliceParameterBufferHEVC *slice_param = (VAEncSliceParameterBufferHEVC *)encode_state->slice_params_ext[0]->buffer;
-
- if (slice_param->slice_type == HEVC_SLICE_I)
- return;
-
- gen9_hcpe_ref_idx_state_1(batch, 0, encoder_context, encode_state);
-
- if (slice_param->slice_type == HEVC_SLICE_P)
- return;
-
- gen9_hcpe_ref_idx_state_1(batch, 1, encoder_context, encode_state);
-}
-
-static void
-gen9_hcpe_hevc_slice_state(VADriverContextP ctx,
- VAEncPictureParameterBufferHEVC *pic_param,
- VAEncSliceParameterBufferHEVC *slice_param,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- struct intel_batchbuffer *batch)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VAEncSequenceParameterBufferHEVC *pSequenceParameter = (VAEncSequenceParameterBufferHEVC *)encode_state->seq_param_ext->buffer;
- int slice_type = slice_param->slice_type;
-
- int log2_cu_size = pSequenceParameter->log2_min_luma_coding_block_size_minus3 + 3;
- int log2_ctb_size = pSequenceParameter->log2_diff_max_min_luma_coding_block_size + log2_cu_size;
- int ctb_size = 1 << log2_ctb_size;
- int width_in_ctb = (pSequenceParameter->pic_width_in_luma_samples + ctb_size - 1) / ctb_size;
- int height_in_ctb = (pSequenceParameter->pic_height_in_luma_samples + ctb_size - 1) / ctb_size;
- int last_slice = (((slice_param->slice_segment_address + slice_param->num_ctu_in_slice) == (width_in_ctb * height_in_ctb)) ? 1 : 0);
-
- int slice_hor_pos, slice_ver_pos, next_slice_hor_pos, next_slice_ver_pos;
-
- slice_hor_pos = slice_param->slice_segment_address % width_in_ctb;
- slice_ver_pos = slice_param->slice_segment_address / width_in_ctb;
-
- next_slice_hor_pos = (slice_param->slice_segment_address + slice_param->num_ctu_in_slice) % width_in_ctb;
- next_slice_ver_pos = (slice_param->slice_segment_address + slice_param->num_ctu_in_slice) / width_in_ctb;
-
- /* only support multi slice begin from row start address */
- assert((slice_param->slice_segment_address % width_in_ctb) == 0);
-
- if (last_slice == 1) {
- if (slice_param->slice_segment_address == 0) {
- next_slice_hor_pos = 0;
- next_slice_ver_pos = height_in_ctb;
- } else {
- next_slice_hor_pos = 0;
- next_slice_ver_pos = 0;
- }
- }
-
- if(IS_KBL(i965->intel.device_info))
- {
- BEGIN_BCS_BATCH(batch, 11);
-
- OUT_BCS_BATCH(batch, HCP_SLICE_STATE | (11 - 2));
- }
- else
- {
- BEGIN_BCS_BATCH(batch, 9);
-
- OUT_BCS_BATCH(batch, HCP_SLICE_STATE | (9 - 2));
- }
-
- OUT_BCS_BATCH(batch,
- slice_ver_pos << 16 |
- slice_hor_pos);
- OUT_BCS_BATCH(batch,
- next_slice_ver_pos << 16 |
- next_slice_hor_pos);
- OUT_BCS_BATCH(batch,
- (slice_param->slice_cr_qp_offset & 0x1f) << 17 |
- (slice_param->slice_cb_qp_offset & 0x1f) << 12 |
- (pic_param->pic_init_qp + slice_param->slice_qp_delta) << 6 |
- slice_param->slice_fields.bits.slice_temporal_mvp_enabled_flag << 5 |
- slice_param->slice_fields.bits.dependent_slice_segment_flag << 4 |
- last_slice << 2 |
- slice_type);
- OUT_BCS_BATCH(batch,
- 0 << 26 |
- (slice_param->max_num_merge_cand - 1) << 23 |
- slice_param->slice_fields.bits.cabac_init_flag << 22 |
- slice_param->luma_log2_weight_denom << 19 |
- (slice_param->luma_log2_weight_denom + slice_param->delta_chroma_log2_weight_denom) << 16 |
- slice_param->slice_fields.bits.collocated_from_l0_flag << 15 |
- (slice_type != HEVC_SLICE_B) << 14 |
- slice_param->slice_fields.bits.mvd_l1_zero_flag << 13 |
- slice_param->slice_fields.bits.slice_sao_luma_flag << 12 |
- slice_param->slice_fields.bits.slice_sao_chroma_flag << 11 |
- slice_param->slice_fields.bits.slice_loop_filter_across_slices_enabled_flag << 10 |
- (slice_param->slice_beta_offset_div2 & 0xf) << 5 |
- (slice_param->slice_tc_offset_div2 & 0xf) << 1 |
- slice_param->slice_fields.bits.slice_deblocking_filter_disabled_flag);
- OUT_BCS_BATCH(batch, 0); /* DW 5 ,ignore for encoder.*/
- OUT_BCS_BATCH(batch,
- 4 << 26 |
- 4 << 20 |
- 0);
- OUT_BCS_BATCH(batch,
- 1 << 10 | /* header insertion enable */
- 1 << 9 | /* slice data enable */
- 1 << 8 | /* tail insertion enable, must at end of frame, not slice */
- 1 << 2 | /* RBSP or EBSP, EmulationByteSliceInsertEnable */
- 1 << 1 | /* cabacZeroWordInsertionEnable */
- 0); /* Ignored for decoding */
- OUT_BCS_BATCH(batch, 0); /* PAK-BSE data start offset */
-
- if(IS_KBL(i965->intel.device_info))
- {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-/* HEVC pipe line related */
-static void gen9_hcpe_hevc_pipeline_picture_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context;
-
- mfc_context->pipe_mode_select(ctx, HCP_CODEC_HEVC, encoder_context);
- mfc_context->set_surface_state(ctx, encode_state, encoder_context);
- gen9_hcpe_pipe_buf_addr_state(ctx, encode_state, encoder_context);
- mfc_context->ind_obj_base_addr_state(ctx, encoder_context);
-
- mfc_context->qm_state(ctx, encoder_context);
- mfc_context->fqm_state(ctx, encoder_context);
- mfc_context->pic_state(ctx, encode_state, encoder_context);
- intel_hcpe_hevc_ref_idx_state(ctx, encode_state, encoder_context);
-}
-
-static void gen9_hcpe_init(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- /* to do */
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context;
- VAEncSequenceParameterBufferHEVC *pSequenceParameter = (VAEncSequenceParameterBufferHEVC *)encode_state->seq_param_ext->buffer;
- VAEncSliceParameterBufferHEVC *slice_param = (VAEncSliceParameterBufferHEVC *)encode_state->slice_params_ext[0]->buffer;
- dri_bo *bo;
- int i, size = 0;
- int slice_batchbuffer_size;
- int slice_type = slice_param->slice_type;
- int is_inter = (slice_type != HEVC_SLICE_I);
-
- int log2_cu_size = pSequenceParameter->log2_min_luma_coding_block_size_minus3 + 3;
- int log2_ctb_size = pSequenceParameter->log2_diff_max_min_luma_coding_block_size + log2_cu_size;
- int ctb_size = 1 << log2_ctb_size;
- int cu_size = 1 << log2_cu_size;
-
- int width_in_ctb = ALIGN(pSequenceParameter->pic_width_in_luma_samples , ctb_size) / ctb_size;
- int height_in_ctb = ALIGN(pSequenceParameter->pic_height_in_luma_samples, ctb_size) / ctb_size;
- int width_in_cu = ALIGN(pSequenceParameter->pic_width_in_luma_samples , cu_size) / cu_size;
- int height_in_cu = ALIGN(pSequenceParameter->pic_height_in_luma_samples, cu_size) / cu_size;
- int width_in_mb = ALIGN(pSequenceParameter->pic_width_in_luma_samples , 16) / 16;
- int height_in_mb = ALIGN(pSequenceParameter->pic_height_in_luma_samples, 16) / 16;
-
- int num_cu_record = 64;
- int size_shift = 3;
-
- if((pSequenceParameter->seq_fields.bits.bit_depth_luma_minus8 > 0)
- || (pSequenceParameter->seq_fields.bits.bit_depth_chroma_minus8 > 0))
- size_shift = 2;
-
- if (log2_ctb_size == 5) num_cu_record = 16;
- else if (log2_ctb_size == 4) num_cu_record = 4;
- else if (log2_ctb_size == 6) num_cu_record = 64;
-
- /* frame size in samples, cu,ctu, mb */
- mfc_context->pic_size.picture_width_in_samples = pSequenceParameter->pic_width_in_luma_samples;
- mfc_context->pic_size.picture_height_in_samples = pSequenceParameter->pic_height_in_luma_samples;
- mfc_context->pic_size.ctb_size = ctb_size;
- mfc_context->pic_size.picture_width_in_ctbs = width_in_ctb;
- mfc_context->pic_size.picture_height_in_ctbs = height_in_ctb;
- mfc_context->pic_size.min_cb_size = cu_size;
- mfc_context->pic_size.picture_width_in_min_cb_minus1 = width_in_cu - 1;
- mfc_context->pic_size.picture_height_in_min_cb_minus1 = height_in_cu - 1;
- mfc_context->pic_size.picture_width_in_mbs = width_in_mb;
- mfc_context->pic_size.picture_height_in_mbs = height_in_mb;
-
- slice_batchbuffer_size = 64 * width_in_ctb * width_in_ctb + 4096 +
- (SLICE_HEADER + SLICE_TAIL) * encode_state->num_slice_params_ext;
-
- /*Encode common setup for HCP*/
- /*deblocking */
- dri_bo_unreference(mfc_context->deblocking_filter_line_buffer.bo);
- mfc_context->deblocking_filter_line_buffer.bo = NULL;
-
- dri_bo_unreference(mfc_context->deblocking_filter_tile_line_buffer.bo);
- mfc_context->deblocking_filter_tile_line_buffer.bo = NULL;
-
- dri_bo_unreference(mfc_context->deblocking_filter_tile_column_buffer.bo);
- mfc_context->deblocking_filter_tile_column_buffer.bo = NULL;
-
- /* input source */
- dri_bo_unreference(mfc_context->uncompressed_picture_source.bo);
- mfc_context->uncompressed_picture_source.bo = NULL;
-
- /* metadata */
- dri_bo_unreference(mfc_context->metadata_line_buffer.bo);
- mfc_context->metadata_line_buffer.bo = NULL;
-
- dri_bo_unreference(mfc_context->metadata_tile_line_buffer.bo);
- mfc_context->metadata_tile_line_buffer.bo = NULL;
-
- dri_bo_unreference(mfc_context->metadata_tile_column_buffer.bo);
- mfc_context->metadata_tile_column_buffer.bo = NULL;
-
- /* sao */
- dri_bo_unreference(mfc_context->sao_line_buffer.bo);
- mfc_context->sao_line_buffer.bo = NULL;
-
- dri_bo_unreference(mfc_context->sao_tile_line_buffer.bo);
- mfc_context->sao_tile_line_buffer.bo = NULL;
-
- dri_bo_unreference(mfc_context->sao_tile_column_buffer.bo);
- mfc_context->sao_tile_column_buffer.bo = NULL;
-
- /* mv temporal buffer */
- for (i = 0; i < NUM_HCP_CURRENT_COLLOCATED_MV_TEMPORAL_BUFFERS; i++) {
- if (mfc_context->current_collocated_mv_temporal_buffer[i].bo != NULL)
- dri_bo_unreference(mfc_context->current_collocated_mv_temporal_buffer[i].bo);
- mfc_context->current_collocated_mv_temporal_buffer[i].bo = NULL;
- }
-
- /* reference */
- for (i = 0; i < MAX_HCP_REFERENCE_SURFACES; i++) {
- if (mfc_context->reference_surfaces[i].bo != NULL)
- dri_bo_unreference(mfc_context->reference_surfaces[i].bo);
- mfc_context->reference_surfaces[i].bo = NULL;
- }
-
- /* indirect data CU recording */
- dri_bo_unreference(mfc_context->hcp_indirect_cu_object.bo);
- mfc_context->hcp_indirect_cu_object.bo = NULL;
-
- dri_bo_unreference(mfc_context->hcp_indirect_pak_bse_object.bo);
- mfc_context->hcp_indirect_pak_bse_object.bo = NULL;
-
- /* Current internal buffer for HCP */
-
- size = ALIGN(pSequenceParameter->pic_width_in_luma_samples, 32) >> size_shift;
- size <<= 6;
- ALLOC_ENCODER_BUFFER((&mfc_context->deblocking_filter_line_buffer), "line buffer", size);
- ALLOC_ENCODER_BUFFER((&mfc_context->deblocking_filter_tile_line_buffer), "tile line buffer", size);
-
- size = ALIGN(pSequenceParameter->pic_height_in_luma_samples + 6 * width_in_ctb, 32) >> size_shift;
- size <<= 6;
- ALLOC_ENCODER_BUFFER((&mfc_context->deblocking_filter_tile_column_buffer), "tile column buffer", size);
-
- if (is_inter) {
- size = (((pSequenceParameter->pic_width_in_luma_samples + 15) >> 4) * 188 + 9 * width_in_ctb + 1023) >> 9;
- size <<= 6;
- ALLOC_ENCODER_BUFFER((&mfc_context->metadata_line_buffer), "metadata line buffer", size);
-
- size = (((pSequenceParameter->pic_width_in_luma_samples + 15) >> 4) * 172 + 9 * width_in_ctb + 1023) >> 9;
- size <<= 6;
- ALLOC_ENCODER_BUFFER((&mfc_context->metadata_tile_line_buffer), "metadata tile line buffer", size);
-
- size = (((pSequenceParameter->pic_height_in_luma_samples + 15) >> 4) * 176 + 89 * width_in_ctb + 1023) >> 9;
- size <<= 6;
- ALLOC_ENCODER_BUFFER((&mfc_context->metadata_tile_column_buffer), "metadata tile column buffer", size);
- } else {
- size = (pSequenceParameter->pic_width_in_luma_samples + 8 * width_in_ctb + 1023) >> 9;
- size <<= 6;
- ALLOC_ENCODER_BUFFER((&mfc_context->metadata_line_buffer), "metadata line buffer", size);
-
- size = (pSequenceParameter->pic_width_in_luma_samples + 16 * width_in_ctb + 1023) >> 9;
- size <<= 6;
- ALLOC_ENCODER_BUFFER((&mfc_context->metadata_tile_line_buffer), "metadata tile line buffer", size);
-
- size = (pSequenceParameter->pic_height_in_luma_samples + 8 * height_in_ctb + 1023) >> 9;
- size <<= 6;
- ALLOC_ENCODER_BUFFER((&mfc_context->metadata_tile_column_buffer), "metadata tile column buffer", size);
- }
-
- size = ALIGN(((pSequenceParameter->pic_width_in_luma_samples >> 1) + 3 * width_in_ctb), 16) >> size_shift;
- size <<= 6;
- ALLOC_ENCODER_BUFFER((&mfc_context->sao_line_buffer), "sao line buffer", size);
-
- size = ALIGN(((pSequenceParameter->pic_width_in_luma_samples >> 1) + 6 * width_in_ctb), 16) >> size_shift;
- size <<= 6;
- ALLOC_ENCODER_BUFFER((&mfc_context->sao_tile_line_buffer), "sao tile line buffer", size);
-
- size = ALIGN(((pSequenceParameter->pic_height_in_luma_samples >> 1) + 6 * height_in_ctb), 16) >> size_shift;
- size <<= 6;
- ALLOC_ENCODER_BUFFER((&mfc_context->sao_tile_column_buffer), "sao tile column buffer", size);
-
- /////////////////////
- dri_bo_unreference(mfc_context->hcp_indirect_cu_object.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "Indirect data CU Buffer",
- width_in_ctb * height_in_ctb * num_cu_record * 16 * 4,
- 0x1000);
- assert(bo);
- mfc_context->hcp_indirect_cu_object.bo = bo;
-
- /* to do pak bse object buffer */
- /* to do current collocated mv temporal buffer */
-
- dri_bo_unreference(mfc_context->hcp_batchbuffer_surface.bo);
- mfc_context->hcp_batchbuffer_surface.bo = NULL;
-
- dri_bo_unreference(mfc_context->aux_batchbuffer_surface.bo);
- mfc_context->aux_batchbuffer_surface.bo = NULL;
-
- if (mfc_context->aux_batchbuffer)
- intel_batchbuffer_free(mfc_context->aux_batchbuffer);
-
- mfc_context->aux_batchbuffer = intel_batchbuffer_new(&i965->intel, I915_EXEC_BSD, slice_batchbuffer_size);
- mfc_context->aux_batchbuffer_surface.bo = mfc_context->aux_batchbuffer->buffer;
- dri_bo_reference(mfc_context->aux_batchbuffer_surface.bo);
- mfc_context->aux_batchbuffer_surface.pitch = 16;
- mfc_context->aux_batchbuffer_surface.num_blocks = mfc_context->aux_batchbuffer->size / 16;
- mfc_context->aux_batchbuffer_surface.size_block = 16;
-}
-
-static VAStatus gen9_hcpe_run(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- intel_batchbuffer_flush(batch); //run the pipeline
-
- return VA_STATUS_SUCCESS;
-}
-
-
-static VAStatus
-gen9_hcpe_stop(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int *encoded_bits_size)
-{
- VAStatus vaStatus = VA_STATUS_ERROR_UNKNOWN;
- VAEncPictureParameterBufferHEVC *pPicParameter = (VAEncPictureParameterBufferHEVC *)encode_state->pic_param_ext->buffer;
- VACodedBufferSegment *coded_buffer_segment;
-
- vaStatus = i965_MapBuffer(ctx, pPicParameter->coded_buf, (void **)&coded_buffer_segment);
- assert(vaStatus == VA_STATUS_SUCCESS);
- *encoded_bits_size = coded_buffer_segment->size * 8;
- i965_UnmapBuffer(ctx, pPicParameter->coded_buf);
-
- return VA_STATUS_SUCCESS;
-}
-
-
-int intel_hevc_find_skipemulcnt(unsigned char *buf, int bits_length)
-{
- /* to do */
- int i, found;
- int leading_zero_cnt, byte_length, zero_byte;
- int nal_unit_type;
- int skip_cnt = 0;
-
-#define NAL_UNIT_TYPE_MASK 0x7e
-#define HW_MAX_SKIP_LENGTH 15
-
- byte_length = ALIGN(bits_length, 32) >> 3;
-
-
- leading_zero_cnt = 0;
- found = 0;
- for (i = 0; i < byte_length - 4; i++) {
- if (((buf[i] == 0) && (buf[i + 1] == 0) && (buf[i + 2] == 1)) ||
- ((buf[i] == 0) && (buf[i + 1] == 0) && (buf[i + 2] == 0) && (buf[i + 3] == 1))) {
- found = 1;
- break;
- }
- leading_zero_cnt++;
- }
- if (!found) {
- /* warning message is complained. But anyway it will be inserted. */
- WARN_ONCE("Invalid packed header data. "
- "Can't find the 000001 start_prefix code\n");
- return 0;
- }
- i = leading_zero_cnt;
-
- zero_byte = 0;
- if (!((buf[i] == 0) && (buf[i + 1] == 0) && (buf[i + 2] == 1)))
- zero_byte = 1;
-
- skip_cnt = leading_zero_cnt + zero_byte + 3;
-
- /* the unit header byte is accounted */
- nal_unit_type = (buf[skip_cnt]) & NAL_UNIT_TYPE_MASK;
- skip_cnt += 1;
- skip_cnt += 1; /* two bytes length of nal headers in hevc */
-
- if (nal_unit_type == 14 || nal_unit_type == 20 || nal_unit_type == 21) {
- /* more unit header bytes are accounted for MVC/SVC */
- //skip_cnt += 3;
- }
- if (skip_cnt > HW_MAX_SKIP_LENGTH) {
- WARN_ONCE("Too many leading zeros are padded for packed data. "
- "It is beyond the HW range.!!!\n");
- }
- return skip_cnt;
-}
-
-#ifdef HCP_SOFTWARE_SKYLAKE
-
-static int
-gen9_hcpe_hevc_pak_object(VADriverContextP ctx, int lcu_x, int lcu_y, int isLast_ctb,
- struct intel_encoder_context *encoder_context,
- int cu_count_in_lcu, unsigned int split_coding_unit_flag,
- struct intel_batchbuffer *batch)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- int len_in_dwords = 3;
-
- if(IS_KBL(i965->intel.device_info))
- len_in_dwords = 5;
-
- if (batch == NULL)
- batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, len_in_dwords);
-
- OUT_BCS_BATCH(batch, HCP_PAK_OBJECT | (len_in_dwords - 2));
- OUT_BCS_BATCH(batch,
- (((isLast_ctb > 0) ? 1 : 0) << 31) | /* last ctb?*/
- ((cu_count_in_lcu - 1) << 24) | /* No motion vector */
- split_coding_unit_flag);
-
- OUT_BCS_BATCH(batch, (lcu_y << 16) | lcu_x); /* LCU for Y*/
-
- if(IS_KBL(i965->intel.device_info))
- {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- ADVANCE_BCS_BATCH(batch);
-
- return len_in_dwords;
-}
-
-#define AVC_INTRA_RDO_OFFSET 4
-#define AVC_INTER_RDO_OFFSET 10
-#define AVC_INTER_MSG_OFFSET 8
-#define AVC_INTER_MV_OFFSET 48
-#define AVC_RDO_MASK 0xFFFF
-
-#define AVC_INTRA_MODE_MASK 0x30
-#define AVC_INTRA_16X16 0x00
-#define AVC_INTRA_8X8 0x01
-#define AVC_INTRA_4X4 0x02
-
-#define AVC_INTER_MODE_MASK 0x03
-#define AVC_INTER_8X8 0x03
-#define AVC_INTER_8X16 0x02
-#define AVC_INTER_16X8 0x01
-#define AVC_INTER_16X16 0x00
-#define AVC_SUBMB_SHAPE_MASK 0x00FF00
-
-/* VME output message, write back message */
-#define AVC_INTER_SUBMB_PRE_MODE_MASK 0x00ff0000
-#define AVC_SUBMB_SHAPE_MASK 0x00FF00
-
-/* here 1 MB = 1CU = 16x16 */
-static void
-gen9_hcpe_hevc_fill_indirect_cu_intra(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int qp, unsigned int *msg,
- int ctb_x, int ctb_y,
- int mb_x, int mb_y,
- int ctb_width_in_mb, int width_in_ctb, int num_cu_record, int slice_type,int cu_index,int index)
-{
- /* here cu == mb, so we use mb address as the cu address */
- /* to fill the indirect cu by the vme out */
- static int intra_mode_8x8_avc2hevc[9] = {26, 10, 1, 34, 18, 24, 13, 28, 8};
- static int intra_mode_16x16_avc2hevc[4] = {26, 10, 1, 34};
- struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context;
- unsigned char * cu_record_ptr = NULL;
- unsigned int * cu_msg = NULL;
- int ctb_address = (ctb_y * width_in_ctb + ctb_x) * num_cu_record;
- int mb_address_in_ctb = 0;
- int cu_address = (ctb_address + mb_address_in_ctb + cu_index) * 16 * 4;
- int zero = 0;
- int is_inter = 0;
- int intraMbMode = 0;
- int cu_part_mode = 0;
- int intraMode[4];
- int inerpred_idc = 0;
- int intra_chroma_mode = 5;
- int cu_size = 1;
- int tu_size = 0x55;
- int tu_count = 4;
- int chroma_mode_remap[4]={5,4,3,2};
-
- if (!is_inter) inerpred_idc = 0xff;
-
- intraMbMode = (msg[0] & AVC_INTRA_MODE_MASK) >> 4;
-
- intra_chroma_mode = (msg[3] & 0x3);
- intra_chroma_mode = chroma_mode_remap[intra_chroma_mode];
- if (intraMbMode == AVC_INTRA_16X16) {
- cu_part_mode = 0; //2Nx2N
- cu_size = 1;
- tu_size = 0x55;
- tu_count = 4;
- intraMode[0] = intra_mode_16x16_avc2hevc[msg[1] & 0xf];
- intraMode[1] = intra_mode_16x16_avc2hevc[msg[1] & 0xf];
- intraMode[2] = intra_mode_16x16_avc2hevc[msg[1] & 0xf];
- intraMode[3] = intra_mode_16x16_avc2hevc[msg[1] & 0xf];
- } else if (intraMbMode == AVC_INTRA_8X8) {
- cu_part_mode = 0; //2Nx2N
- cu_size = 0;
- tu_size = 0;
- tu_count = 4;
- intraMode[0] = intra_mode_8x8_avc2hevc[msg[1] >> (index << 2) & 0xf];
- intraMode[1] = intra_mode_8x8_avc2hevc[msg[1] >> (index << 2) & 0xf];
- intraMode[2] = intra_mode_8x8_avc2hevc[msg[1] >> (index << 2) & 0xf];
- intraMode[3] = intra_mode_8x8_avc2hevc[msg[1] >> (index << 2) & 0xf];
-
- } else { // for 4x4 to use 8x8 replace
- cu_part_mode = 3; //NxN
- cu_size = 0;
- tu_size = 0;
- tu_count = 4;
- intraMode[0] = intra_mode_8x8_avc2hevc[msg[1] >> ((index << 4) + 0) & 0xf];
- intraMode[1] = intra_mode_8x8_avc2hevc[msg[1] >> ((index << 4) + 4) & 0xf];
- intraMode[2] = intra_mode_8x8_avc2hevc[msg[1] >> ((index << 4) + 8) & 0xf];
- intraMode[3] = intra_mode_8x8_avc2hevc[msg[1] >> ((index << 4) + 12) & 0xf];
-
- }
-
- cu_record_ptr = (unsigned char *)mfc_context->hcp_indirect_cu_object.bo->virtual;
- /* get the mb info from the vme out */
- cu_msg = (unsigned int *)(cu_record_ptr + cu_address);
-
- cu_msg[0] = (inerpred_idc << 24 | /* interpred_idc[3:0][1:0] */
- zero << 23 | /* reserved */
- qp << 16 | /* CU_qp */
- zero << 11 | /* reserved */
- intra_chroma_mode << 8 | /* intra_chroma_mode */
- zero << 7 | /* IPCM_enable , reserved for SKL*/
- cu_part_mode << 4 | /* cu_part_mode */
- zero << 3 | /* cu_transquant_bypass_flag */
- is_inter << 2 | /* cu_pred_mode :intra 1,inter 1*/
- cu_size /* cu_size */
- );
- cu_msg[1] = (zero << 30 | /* reserved */
- intraMode[3] << 24 | /* intra_mode */
- zero << 22 | /* reserved */
- intraMode[2] << 16 | /* intra_mode */
- zero << 14 | /* reserved */
- intraMode[1] << 8 | /* intra_mode */
- zero << 6 | /* reserved */
- intraMode[0] /* intra_mode */
- );
- /* l0: 4 MV (x,y); l1ï¼› 4 MV (x,y) */
- cu_msg[2] = (zero << 16 | /* mvx_l0[1] */
- zero /* mvx_l0[0] */
- );
- cu_msg[3] = (zero << 16 | /* mvx_l0[3] */
- zero /* mvx_l0[2] */
- );
- cu_msg[4] = (zero << 16 | /* mvy_l0[1] */
- zero /* mvy_l0[0] */
- );
- cu_msg[5] = (zero << 16 | /* mvy_l0[3] */
- zero /* mvy_l0[2] */
- );
-
- cu_msg[6] = (zero << 16 | /* mvx_l1[1] */
- zero /* mvx_l1[0] */
- );
- cu_msg[7] = (zero << 16 | /* mvx_l1[3] */
- zero /* mvx_l1[2] */
- );
- cu_msg[8] = (zero << 16 | /* mvy_l1[1] */
- zero /* mvy_l1[0] */
- );
- cu_msg[9] = (zero << 16 | /* mvy_l1[3] */
- zero /* mvy_l1[2] */
- );
-
- cu_msg[10] = (zero << 28 | /* ref_idx_l1[3] */
- zero << 24 | /* ref_idx_l1[2] */
- zero << 20 | /* ref_idx_l1[1] */
- zero << 16 | /* ref_idx_l1[0] */
- zero << 12 | /* ref_idx_l0[3] */
- zero << 8 | /* ref_idx_l0[2] */
- zero << 4 | /* ref_idx_l0[1] */
- zero /* ref_idx_l0[0] */
- );
-
- cu_msg[11] = tu_size; /* tu_size 00000000 00000000 00000000 10101010 or 0x0*/
- cu_msg[12] = ((tu_count - 1) << 28 | /* tu count - 1 */
- zero << 16 | /* reserved */
- zero /* tu_xform_Yskip[15:0] */
- );
- cu_msg[13] = (zero << 16 | /* tu_xform_Vskip[15:0] */
- zero /* tu_xform_Uskip[15:0] */
- );
- cu_msg[14] = zero ;
- cu_msg[15] = zero ;
-}
-
-/* here 1 MB = 1CU = 16x16 */
-static void
-gen9_hcpe_hevc_fill_indirect_cu_inter(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int qp, unsigned int *msg,
- int ctb_x, int ctb_y,
- int mb_x, int mb_y,
- int ctb_width_in_mb, int width_in_ctb, int num_cu_record, int slice_type, int cu_index,int index)
-{
- /* here cu == mb, so we use mb address as the cu address */
- /* to fill the indirect cu by the vme out */
- struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- unsigned char * cu_record_ptr = NULL;
- unsigned int * cu_msg = NULL;
- int ctb_address = (ctb_y * width_in_ctb + ctb_x) * num_cu_record;
- int mb_address_in_ctb = 0;
- int cu_address = (ctb_address + mb_address_in_ctb + cu_index) * 16 * 4;
- int zero = 0;
- int cu_part_mode = 0;
- int submb_pre_mode = 0;
- int is_inter = 1;
- int cu_size = 1;
- int tu_size = 0x55;
- int tu_count = 4;
- int inter_mode = 0;
-
- unsigned int *mv_ptr;
- {
- inter_mode = (msg[0] & AVC_INTER_MODE_MASK);
- submb_pre_mode = (msg[1] & AVC_INTER_SUBMB_PRE_MODE_MASK) >> 16;
-#define MSG_MV_OFFSET 4
- mv_ptr = msg + MSG_MV_OFFSET;
- /* MV of VME output is based on 16 sub-blocks. So it is necessary
- * to convert them to be compatible with the format of AVC_PAK
- * command.
- */
- /* 0/2/4/6/8... : l0, 1/3/5/7...: l1 ; now it only support 16x16,16x8,8x16,8x8*/
-
- if (inter_mode == AVC_INTER_16X16) {
- mv_ptr[4] = mv_ptr[0];
- mv_ptr[5] = mv_ptr[1];
- mv_ptr[2] = mv_ptr[0];
- mv_ptr[3] = mv_ptr[1];
- mv_ptr[6] = mv_ptr[0];
- mv_ptr[7] = mv_ptr[1];
- cu_part_mode = 0;
- cu_size = 1;
- tu_size = 0x55;
- tu_count = 4;
- } else if (inter_mode == AVC_INTER_8X16) {
- mv_ptr[4] = mv_ptr[0];
- mv_ptr[5] = mv_ptr[1];
- mv_ptr[2] = mv_ptr[8];
- mv_ptr[3] = mv_ptr[9];
- mv_ptr[6] = mv_ptr[8];
- mv_ptr[7] = mv_ptr[9];
- cu_part_mode = 1;
- cu_size = 1;
- tu_size = 0x55;
- tu_count = 4;
- } else if (inter_mode == AVC_INTER_16X8) {
- mv_ptr[2] = mv_ptr[0];
- mv_ptr[3] = mv_ptr[1];
- mv_ptr[4] = mv_ptr[16];
- mv_ptr[5] = mv_ptr[17];
- mv_ptr[6] = mv_ptr[24];
- mv_ptr[7] = mv_ptr[25];
- cu_part_mode = 2;
- cu_size = 1;
- tu_size = 0x55;
- tu_count = 4;
- }else if(inter_mode == AVC_INTER_8X8) {
- mv_ptr[0] = mv_ptr[index * 8 + 0 ];
- mv_ptr[1] = mv_ptr[index * 8 + 1 ];
- mv_ptr[2] = mv_ptr[index * 8 + 0 ];
- mv_ptr[3] = mv_ptr[index * 8 + 1 ];
- mv_ptr[4] = mv_ptr[index * 8 + 0 ];
- mv_ptr[5] = mv_ptr[index * 8 + 1 ];
- mv_ptr[6] = mv_ptr[index * 8 + 0 ];
- mv_ptr[7] = mv_ptr[index * 8 + 1 ];
- cu_part_mode = 0;
- cu_size = 0;
- tu_size = 0x0;
- tu_count = 4;
-
- }else
- {
- mv_ptr[4] = mv_ptr[0];
- mv_ptr[5] = mv_ptr[1];
- mv_ptr[2] = mv_ptr[0];
- mv_ptr[3] = mv_ptr[1];
- mv_ptr[6] = mv_ptr[0];
- mv_ptr[7] = mv_ptr[1];
- cu_part_mode = 0;
- cu_size = 1;
- tu_size = 0x55;
- tu_count = 4;
-
- }
- }
-
- cu_record_ptr = (unsigned char *)mfc_context->hcp_indirect_cu_object.bo->virtual;
- /* get the mb info from the vme out */
- cu_msg = (unsigned int *)(cu_record_ptr + cu_address);
-
- cu_msg[0] = (submb_pre_mode << 24 | /* interpred_idc[3:0][1:0] */
- zero << 23 | /* reserved */
- qp << 16 | /* CU_qp */
- zero << 11 | /* reserved */
- 5 << 8 | /* intra_chroma_mode */
- zero << 7 | /* IPCM_enable , reserved for SKL*/
- cu_part_mode << 4 | /* cu_part_mode */
- zero << 3 | /* cu_transquant_bypass_flag */
- is_inter << 2 | /* cu_pred_mode :intra 1,inter 1*/
- cu_size /* cu_size */
- );
- cu_msg[1] = (zero << 30 | /* reserved */
- zero << 24 | /* intra_mode */
- zero << 22 | /* reserved */
- zero << 16 | /* intra_mode */
- zero << 14 | /* reserved */
- zero << 8 | /* intra_mode */
- zero << 6 | /* reserved */
- zero /* intra_mode */
- );
- /* l0: 4 MV (x,y); l1ï¼› 4 MV (x,y) */
- cu_msg[2] = ((mv_ptr[2] & 0xffff) << 16 | /* mvx_l0[1] */
- (mv_ptr[0] & 0xffff) /* mvx_l0[0] */
- );
- cu_msg[3] = ((mv_ptr[6] & 0xffff) << 16 | /* mvx_l0[3] */
- (mv_ptr[4] & 0xffff) /* mvx_l0[2] */
- );
- cu_msg[4] = ((mv_ptr[2] & 0xffff0000) | /* mvy_l0[1] */
- (mv_ptr[0] & 0xffff0000) >> 16 /* mvy_l0[0] */
- );
- cu_msg[5] = ((mv_ptr[6] & 0xffff0000) | /* mvy_l0[3] */
- (mv_ptr[4] & 0xffff0000) >> 16 /* mvy_l0[2] */
- );
-
- cu_msg[6] = ((mv_ptr[3] & 0xffff) << 16 | /* mvx_l1[1] */
- (mv_ptr[1] & 0xffff) /* mvx_l1[0] */
- );
- cu_msg[7] = ((mv_ptr[7] & 0xffff) << 16 | /* mvx_l1[3] */
- (mv_ptr[5] & 0xffff) /* mvx_l1[2] */
- );
- cu_msg[8] = ((mv_ptr[3] & 0xffff0000) | /* mvy_l1[1] */
- (mv_ptr[1] & 0xffff0000) >> 16 /* mvy_l1[0] */
- );
- cu_msg[9] = ((mv_ptr[7] & 0xffff0000) | /* mvy_l1[3] */
- (mv_ptr[5] & 0xffff0000) >> 16 /* mvy_l1[2] */
- );
-
- cu_msg[10] = (((vme_context->ref_index_in_mb[1] >> 24) & 0xf) << 28 | /* ref_idx_l1[3] */
- ((vme_context->ref_index_in_mb[1] >> 16) & 0xf) << 24 | /* ref_idx_l1[2] */
- ((vme_context->ref_index_in_mb[1] >> 8) & 0xf) << 20 | /* ref_idx_l1[1] */
- ((vme_context->ref_index_in_mb[1] >> 0) & 0xf) << 16 | /* ref_idx_l1[0] */
- ((vme_context->ref_index_in_mb[0] >> 24) & 0xf) << 12 | /* ref_idx_l0[3] */
- ((vme_context->ref_index_in_mb[0] >> 16) & 0xf) << 8 | /* ref_idx_l0[2] */
- ((vme_context->ref_index_in_mb[0] >> 8) & 0xf) << 4 | /* ref_idx_l0[1] */
- ((vme_context->ref_index_in_mb[0] >> 0) & 0xf) /* ref_idx_l0[0] */
- );
-
- cu_msg[11] = tu_size; /* tu_size 00000000 00000000 00000000 10101010 or 0x0*/
- cu_msg[12] = ((tu_count - 1) << 28 | /* tu count - 1 */
- zero << 16 | /* reserved */
- zero /* tu_xform_Yskip[15:0] */
- );
- cu_msg[13] = (zero << 16 | /* tu_xform_Vskip[15:0] */
- zero /* tu_xform_Uskip[15:0] */
- );
- cu_msg[14] = zero ;
- cu_msg[15] = zero ;
-}
-
-#define HEVC_SPLIT_CU_FLAG_64_64 ((0x1<<20)|(0xf<<16)|(0x0<<12)|(0x0<<8)|(0x0<<4)|(0x0))
-#define HEVC_SPLIT_CU_FLAG_32_32 ((0x1<<20)|(0x0<<16)|(0x0<<12)|(0x0<<8)|(0x0<<4)|(0x0))
-#define HEVC_SPLIT_CU_FLAG_16_16 ((0x0<<20)|(0x0<<16)|(0x0<<12)|(0x0<<8)|(0x0<<4)|(0x0))
-#define HEVC_SPLIT_CU_FLAG_8_8 ((0x1<<20)|(0x0<<16)|(0x0<<12)|(0x0<<8)|(0x0<<4)|(0x0))
-
-
-void
-intel_hevc_slice_insert_packed_data(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int slice_index,
- struct intel_batchbuffer *slice_batch)
-{
- int count, i, start_index;
- unsigned int length_in_bits;
- VAEncPackedHeaderParameterBuffer *param = NULL;
- unsigned int *header_data = NULL;
- struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context;
- int slice_header_index;
-
- if (encode_state->slice_header_index[slice_index] == 0)
- slice_header_index = -1;
- else
- slice_header_index = (encode_state->slice_header_index[slice_index] & SLICE_PACKED_DATA_INDEX_MASK);
-
- count = encode_state->slice_rawdata_count[slice_index];
- start_index = (encode_state->slice_rawdata_index[slice_index] & SLICE_PACKED_DATA_INDEX_MASK);
-
- for (i = 0; i < count; i++) {
- unsigned int skip_emul_byte_cnt;
-
- header_data = (unsigned int *)encode_state->packed_header_data_ext[start_index + i]->buffer;
-
- param = (VAEncPackedHeaderParameterBuffer *)
- (encode_state->packed_header_params_ext[start_index + i]->buffer);
-
- /* skip the slice header packed data type as it is lastly inserted */
- if (param->type == VAEncPackedHeaderSlice)
- continue;
-
- length_in_bits = param->bit_length;
-
- skip_emul_byte_cnt = intel_hevc_find_skipemulcnt((unsigned char *)header_data, length_in_bits);
-
- /* as the slice header is still required, the last header flag is set to
- * zero.
- */
- mfc_context->insert_object(ctx,
- encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- skip_emul_byte_cnt,
- 0,
- 0,
- !param->has_emulation_bytes,
- slice_batch);
- }
-
- if (slice_header_index == -1) {
- unsigned char *slice_header = NULL;
- int slice_header_length_in_bits = 0;
- VAEncSequenceParameterBufferHEVC *pSequenceParameter = (VAEncSequenceParameterBufferHEVC *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferHEVC *pPicParameter = (VAEncPictureParameterBufferHEVC *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferHEVC *pSliceParameter = (VAEncSliceParameterBufferHEVC *)encode_state->slice_params_ext[slice_index]->buffer;
-
- /* For the Normal HEVC */
- slice_header_length_in_bits = build_hevc_slice_header(pSequenceParameter,
- pPicParameter,
- pSliceParameter,
- &slice_header,
- 0);
- mfc_context->insert_object(ctx, encoder_context,
- (unsigned int *)slice_header,
- ALIGN(slice_header_length_in_bits, 32) >> 5,
- slice_header_length_in_bits & 0x1f,
- 5, /* first 6 bytes are start code + nal unit type */
- 1, 0, 1, slice_batch);
- free(slice_header);
- } else {
- unsigned int skip_emul_byte_cnt;
-
- header_data = (unsigned int *)encode_state->packed_header_data_ext[slice_header_index]->buffer;
-
- param = (VAEncPackedHeaderParameterBuffer *)
- (encode_state->packed_header_params_ext[slice_header_index]->buffer);
- length_in_bits = param->bit_length;
-
- /* as the slice header is the last header data for one slice,
- * the last header flag is set to one.
- */
- skip_emul_byte_cnt = intel_hevc_find_skipemulcnt((unsigned char *)header_data, length_in_bits);
-
- mfc_context->insert_object(ctx,
- encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- skip_emul_byte_cnt,
- 1,
- 0,
- !param->has_emulation_bytes,
- slice_batch);
- }
-
- return;
-}
-
-static void
-gen9_hcpe_hevc_pipeline_slice_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int slice_index,
- struct intel_batchbuffer *slice_batch)
-{
- struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncSequenceParameterBufferHEVC *pSequenceParameter = (VAEncSequenceParameterBufferHEVC *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferHEVC *pPicParameter = (VAEncPictureParameterBufferHEVC *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferHEVC *pSliceParameter = (VAEncSliceParameterBufferHEVC *)encode_state->slice_params_ext[slice_index]->buffer;
- int qp_slice = pPicParameter->pic_init_qp + pSliceParameter->slice_qp_delta;
- unsigned int rate_control_mode = encoder_context->rate_control_mode;
- //unsigned char *slice_header = NULL; // for future use
- //int slice_header_length_in_bits = 0;
- unsigned int tail_data[] = { 0x0, 0x0 };
- int slice_type = pSliceParameter->slice_type;
-
- int log2_cu_size = pSequenceParameter->log2_min_luma_coding_block_size_minus3 + 3;
- int log2_ctb_size = pSequenceParameter->log2_diff_max_min_luma_coding_block_size + log2_cu_size;
- int ctb_size = 1 << log2_ctb_size;
- int width_in_ctb = (pSequenceParameter->pic_width_in_luma_samples + ctb_size - 1) / ctb_size;
- int height_in_ctb = (pSequenceParameter->pic_height_in_luma_samples + ctb_size - 1) / ctb_size;
- int last_slice = (pSliceParameter->slice_segment_address + pSliceParameter->num_ctu_in_slice) == (width_in_ctb * height_in_ctb);
- int ctb_width_in_mb = (ctb_size + 15) / 16;
- int i_ctb, ctb_x, ctb_y;
- unsigned int split_coding_unit_flag = 0;
- int width_in_mbs = (pSequenceParameter->pic_width_in_luma_samples + 15) / 16;
- int row_pad_flag = (pSequenceParameter->pic_height_in_luma_samples % ctb_size)> 0 ? 1:0;
- int col_pad_flag = (pSequenceParameter->pic_width_in_luma_samples % ctb_size)> 0 ? 1:0;
-
- int is_intra = (slice_type == HEVC_SLICE_I);
- unsigned int *msg = NULL;
- unsigned char *msg_ptr = NULL;
- int macroblock_address = 0;
- int num_cu_record = 64;
- int cu_count = 1;
- int tmp_mb_mode = 0;
- int mb_x = 0, mb_y = 0;
- int mb_addr = 0;
- int cu_index = 0;
- int inter_rdo, intra_rdo;
- int qp;
- int drop_cu_row_in_last_mb = 0;
- int drop_cu_column_in_last_mb = 0;
-
- if (log2_ctb_size == 5) num_cu_record = 16;
- else if (log2_ctb_size == 4) num_cu_record = 4;
- else if (log2_ctb_size == 6) num_cu_record = 64;
-
- qp = qp_slice;
- if (rate_control_mode == VA_RC_CBR) {
- qp = mfc_context->bit_rate_control_context[slice_type].QpPrimeY;
- if(slice_type == HEVC_SLICE_B) {
- if(pSequenceParameter->ip_period == 1)
- {
- qp = mfc_context->bit_rate_control_context[HEVC_SLICE_P].QpPrimeY;
-
- }else if(mfc_context->vui_hrd.i_frame_number % pSequenceParameter->ip_period == 1){
- qp = mfc_context->bit_rate_control_context[HEVC_SLICE_P].QpPrimeY;
- }
- }
- if (encode_state->slice_header_index[slice_index] == 0) {
- pSliceParameter->slice_qp_delta = qp - pPicParameter->pic_init_qp;
- }
- }
-
- /* only support for 8-bit pixel bit-depth */
- assert(pSequenceParameter->seq_fields.bits.bit_depth_luma_minus8 >= 0 && pSequenceParameter->seq_fields.bits.bit_depth_luma_minus8 <= 2);
- assert(pSequenceParameter->seq_fields.bits.bit_depth_chroma_minus8 >= 0 && pSequenceParameter->seq_fields.bits.bit_depth_chroma_minus8 <= 2);
- assert(pPicParameter->pic_init_qp >= 0 && pPicParameter->pic_init_qp < 52);
- assert(qp >= 0 && qp < 52);
-
- {
- gen9_hcpe_hevc_slice_state(ctx,
- pPicParameter,
- pSliceParameter,
- encode_state, encoder_context,
- slice_batch);
-
- if (slice_index == 0)
- intel_hcpe_hevc_pipeline_header_programing(ctx, encode_state, encoder_context, slice_batch);
-
- intel_hevc_slice_insert_packed_data(ctx, encode_state, encoder_context, slice_index, slice_batch);
-
- /*
- slice_header_length_in_bits = build_hevc_slice_header(pSequenceParameter, pPicParameter, pSliceParameter, &slice_header, slice_index);
- int skip_emul_byte_cnt = intel_hevc_find_skipemulcnt((unsigned char *)slice_header, slice_header_length_in_bits);
-
- mfc_context->insert_object(ctx, encoder_context,
- (unsigned int *)slice_header, ALIGN(slice_header_length_in_bits, 32) >> 5, slice_header_length_in_bits & 0x1f,
- skip_emul_byte_cnt,
- 1, 0, 1, slice_batch);
- free(slice_header);
- */
- }
-
-
-
- split_coding_unit_flag = (ctb_width_in_mb == 4) ? HEVC_SPLIT_CU_FLAG_64_64 : ((ctb_width_in_mb == 2) ? HEVC_SPLIT_CU_FLAG_32_32 : HEVC_SPLIT_CU_FLAG_16_16);
-
- dri_bo_map(vme_context->vme_output.bo , 1);
- msg_ptr = (unsigned char *)vme_context->vme_output.bo->virtual;
- dri_bo_map(mfc_context->hcp_indirect_cu_object.bo , 1);
-
- for (i_ctb = pSliceParameter->slice_segment_address;i_ctb < pSliceParameter->slice_segment_address + pSliceParameter->num_ctu_in_slice; i_ctb++) {
- int last_ctb = (i_ctb == (pSliceParameter->slice_segment_address + pSliceParameter->num_ctu_in_slice - 1));
- int ctb_height_in_mb_internal = ctb_width_in_mb;
- int ctb_width_in_mb_internal = ctb_width_in_mb;
- int max_cu_num_in_mb = 4;
-
- ctb_x = i_ctb % width_in_ctb;
- ctb_y = i_ctb / width_in_ctb;
-
- drop_cu_row_in_last_mb = 0;
- drop_cu_column_in_last_mb = 0;
-
- if(ctb_y == (height_in_ctb - 1) && row_pad_flag)
- {
- ctb_height_in_mb_internal = (pSequenceParameter->pic_height_in_luma_samples - (ctb_y * ctb_size) + 15)/16;
-
- if((log2_cu_size == 3) && (pSequenceParameter->pic_height_in_luma_samples % 16))
- drop_cu_row_in_last_mb = (16 - (pSequenceParameter->pic_height_in_luma_samples % 16))>>log2_cu_size;
- }
-
- if(ctb_x == (width_in_ctb - 1) && col_pad_flag)
- {
- ctb_width_in_mb_internal = (pSequenceParameter->pic_width_in_luma_samples - (ctb_x * ctb_size) + 15) / 16;
-
- if((log2_cu_size == 3) && (pSequenceParameter->pic_width_in_luma_samples % 16))
- drop_cu_column_in_last_mb = (16 - (pSequenceParameter->pic_width_in_luma_samples % 16))>>log2_cu_size;
- }
-
- mb_x = 0;
- mb_y = 0;
- macroblock_address = ctb_y * width_in_mbs * ctb_width_in_mb + ctb_x * ctb_width_in_mb;
- split_coding_unit_flag = ((ctb_width_in_mb == 2) ? HEVC_SPLIT_CU_FLAG_32_32 : HEVC_SPLIT_CU_FLAG_16_16);
- cu_count = 1;
- cu_index = 0;
- mb_addr = 0;
- msg = NULL;
- for (mb_y = 0; mb_y < ctb_height_in_mb_internal; mb_y++)
- {
- mb_addr = macroblock_address + mb_y * width_in_mbs ;
- for (mb_x = 0; mb_x < ctb_width_in_mb_internal; mb_x++)
- {
- max_cu_num_in_mb = 4;
- if(drop_cu_row_in_last_mb && (mb_y == ctb_height_in_mb_internal - 1))
- max_cu_num_in_mb /= 2;
-
- if(drop_cu_column_in_last_mb && (mb_x == ctb_width_in_mb_internal - 1))
- max_cu_num_in_mb /= 2;
-
- /* get the mb info from the vme out */
- msg = (unsigned int *)(msg_ptr + mb_addr * vme_context->vme_output.size_block);
-
- inter_rdo = msg[AVC_INTER_RDO_OFFSET] & AVC_RDO_MASK;
- intra_rdo = msg[AVC_INTRA_RDO_OFFSET] & AVC_RDO_MASK;
- /*fill to indirect cu */
- /*to do */
- if (is_intra || intra_rdo < inter_rdo) {
- /* fill intra cu */
- tmp_mb_mode = (msg[0] & AVC_INTRA_MODE_MASK) >> 4;
- if(max_cu_num_in_mb < 4){
- if(tmp_mb_mode == AVC_INTRA_16X16)
- {
- msg[0] = (msg[0] & !AVC_INTRA_MODE_MASK) | (AVC_INTRA_8X8<<4);
- tmp_mb_mode = AVC_INTRA_8X8;
- }
-
- gen9_hcpe_hevc_fill_indirect_cu_intra(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,0);
- if(--max_cu_num_in_mb > 0)
- gen9_hcpe_hevc_fill_indirect_cu_intra(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,2);
-
- if(ctb_width_in_mb == 2)
- split_coding_unit_flag |= 0x1 << (mb_x + mb_y * ctb_width_in_mb + 16);
- else if(ctb_width_in_mb == 1)
- split_coding_unit_flag |= 0x1 << 20;
- }
- else if(tmp_mb_mode == AVC_INTRA_16X16) {
- gen9_hcpe_hevc_fill_indirect_cu_intra(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,0);
- } else { // for 4x4 to use 8x8 replace
- gen9_hcpe_hevc_fill_indirect_cu_intra(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,0);
- gen9_hcpe_hevc_fill_indirect_cu_intra(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,1);
- gen9_hcpe_hevc_fill_indirect_cu_intra(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,2);
- gen9_hcpe_hevc_fill_indirect_cu_intra(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,3);
- if(ctb_width_in_mb == 2)
- split_coding_unit_flag |= 0x1 << (mb_x + mb_y * ctb_width_in_mb + 16);
- else if(ctb_width_in_mb == 1)
- split_coding_unit_flag |= 0x1 << 20;
- }
- } else {
- msg += AVC_INTER_MSG_OFFSET;
- /* fill inter cu */
- tmp_mb_mode = msg[0] & AVC_INTER_MODE_MASK;
- if(max_cu_num_in_mb < 4)
- {
- if(tmp_mb_mode != AVC_INTER_8X8)
- {
- msg[0] = (msg[0] & !AVC_INTER_MODE_MASK) | AVC_INTER_8X8;
- tmp_mb_mode = AVC_INTER_8X8;
- }
- gen9_hcpe_hevc_fill_indirect_cu_inter(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,0);
- if(--max_cu_num_in_mb > 0)
- gen9_hcpe_hevc_fill_indirect_cu_inter(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,1);
-
- if(ctb_width_in_mb == 2)
- split_coding_unit_flag |= 0x1 << (mb_x + mb_y * ctb_width_in_mb + 16);
- else if(ctb_width_in_mb == 1)
- split_coding_unit_flag |= 0x1 << 20;
- }
- else if (tmp_mb_mode == AVC_INTER_8X8){
- gen9_hcpe_hevc_fill_indirect_cu_inter(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,0);
- gen9_hcpe_hevc_fill_indirect_cu_inter(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,1);
- gen9_hcpe_hevc_fill_indirect_cu_inter(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,2);
- gen9_hcpe_hevc_fill_indirect_cu_inter(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,3);
- if(ctb_width_in_mb == 2)
- split_coding_unit_flag |= 0x1 << (mb_x + mb_y * ctb_width_in_mb + 16);
- else if(ctb_width_in_mb == 1)
- split_coding_unit_flag |= 0x1 << 20;
-
- }else if(tmp_mb_mode == AVC_INTER_16X16 ||
- tmp_mb_mode == AVC_INTER_8X16 ||
- tmp_mb_mode == AVC_INTER_16X8) {
- gen9_hcpe_hevc_fill_indirect_cu_inter(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,0);
- }
- }
- mb_addr++;
- }
- }
-
- cu_count = cu_index;
- // PAK object fill accordingly.
- gen9_hcpe_hevc_pak_object(ctx, ctb_x, ctb_y, last_ctb, encoder_context, cu_count, split_coding_unit_flag, slice_batch);
- }
-
- dri_bo_unmap(mfc_context->hcp_indirect_cu_object.bo);
- dri_bo_unmap(vme_context->vme_output.bo);
-
- if (last_slice) {
- mfc_context->insert_object(ctx, encoder_context,
- tail_data, 2, 8,
- 2, 1, 1, 0, slice_batch);
- } else {
- mfc_context->insert_object(ctx, encoder_context,
- tail_data, 1, 8,
- 1, 1, 1, 0, slice_batch);
- }
-}
-
-static dri_bo *
-gen9_hcpe_hevc_software_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch;
- dri_bo *batch_bo;
- int i;
-
- batch = mfc_context->aux_batchbuffer;
- batch_bo = batch->buffer;
-
- for (i = 0; i < encode_state->num_slice_params_ext; i++) {
- gen9_hcpe_hevc_pipeline_slice_programing(ctx, encode_state, encoder_context, i, batch);
- }
-
- intel_batchbuffer_align(batch, 8);
-
- BEGIN_BCS_BATCH(batch, 2);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, MI_BATCH_BUFFER_END);
- ADVANCE_BCS_BATCH(batch);
-
- dri_bo_reference(batch_bo);
- intel_batchbuffer_free(batch);
- mfc_context->aux_batchbuffer = NULL;
-
- return batch_bo;
-}
-
-#else
-
-#endif
-
-static void
-gen9_hcpe_hevc_pipeline_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- dri_bo *slice_batch_bo;
-
-#ifdef HCP_SOFTWARE_SKYLAKE
- slice_batch_bo = gen9_hcpe_hevc_software_batchbuffer(ctx, encode_state, encoder_context);
-#else
- slice_batch_bo = gen9_hcpe_hevc_hardware_batchbuffer(ctx, encode_state, encoder_context);
-#endif
-
- // begin programing
- if (i965->intel.has_bsd2)
- intel_batchbuffer_start_atomic_bcs_override(batch, 0x4000, BSD_RING0);
- else
- intel_batchbuffer_start_atomic_bcs(batch, 0x4000);
- intel_batchbuffer_emit_mi_flush(batch);
-
- // picture level programing
- gen9_hcpe_hevc_pipeline_picture_programing(ctx, encode_state, encoder_context);
-
- BEGIN_BCS_BATCH(batch, 3);
- OUT_BCS_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8) | (1 << 0));
- OUT_BCS_RELOC64(batch,
- slice_batch_bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- ADVANCE_BCS_BATCH(batch);
-
- // end programing
- intel_batchbuffer_end_atomic(batch);
-
- dri_bo_unreference(slice_batch_bo);
-}
-
-void intel_hcpe_hevc_pipeline_header_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- struct intel_batchbuffer *slice_batch)
-{
- struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context;
- int idx = va_enc_packed_type_to_idx(VAEncPackedHeaderHEVC_VPS);
- unsigned int skip_emul_byte_cnt;
-
- if (encode_state->packed_header_data[idx]) {
- VAEncPackedHeaderParameterBuffer *param = NULL;
- unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer;
- unsigned int length_in_bits;
-
- assert(encode_state->packed_header_param[idx]);
- param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer;
- length_in_bits = param->bit_length;
-
- skip_emul_byte_cnt = intel_hevc_find_skipemulcnt((unsigned char *)header_data, length_in_bits);
- mfc_context->insert_object(ctx,
- encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- skip_emul_byte_cnt,
- 0,
- 0,
- !param->has_emulation_bytes,
- slice_batch);
- }
-
- idx = va_enc_packed_type_to_idx(VAEncPackedHeaderHEVC_VPS) + 1; // index to SPS
-
- if (encode_state->packed_header_data[idx]) {
- VAEncPackedHeaderParameterBuffer *param = NULL;
- unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer;
- unsigned int length_in_bits;
-
- assert(encode_state->packed_header_param[idx]);
- param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer;
- length_in_bits = param->bit_length;
-
- skip_emul_byte_cnt = intel_hevc_find_skipemulcnt((unsigned char *)header_data, length_in_bits);
- mfc_context->insert_object(ctx,
- encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- skip_emul_byte_cnt,
- 0,
- 0,
- !param->has_emulation_bytes,
- slice_batch);
- }
-
- idx = va_enc_packed_type_to_idx(VAEncPackedHeaderHEVC_PPS);
-
- if (encode_state->packed_header_data[idx]) {
- VAEncPackedHeaderParameterBuffer *param = NULL;
- unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer;
- unsigned int length_in_bits;
-
- assert(encode_state->packed_header_param[idx]);
- param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer;
- length_in_bits = param->bit_length;
-
- skip_emul_byte_cnt = intel_hevc_find_skipemulcnt((unsigned char *)header_data, length_in_bits);
-
- mfc_context->insert_object(ctx,
- encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- skip_emul_byte_cnt,
- 0,
- 0,
- !param->has_emulation_bytes,
- slice_batch);
- }
-
- idx = va_enc_packed_type_to_idx(VAEncPackedHeaderHEVC_SEI);
-
- if (encode_state->packed_header_data[idx]) {
- VAEncPackedHeaderParameterBuffer *param = NULL;
- unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer;
- unsigned int length_in_bits;
-
- assert(encode_state->packed_header_param[idx]);
- param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer;
- length_in_bits = param->bit_length;
-
- skip_emul_byte_cnt = intel_hevc_find_skipemulcnt((unsigned char *)header_data, length_in_bits);
- mfc_context->insert_object(ctx,
- encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- skip_emul_byte_cnt,
- 0,
- 0,
- !param->has_emulation_bytes,
- slice_batch);
- }
-}
-
-VAStatus intel_hcpe_hevc_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context;
- struct object_surface *obj_surface;
- struct object_buffer *obj_buffer;
- GenHevcSurface *hevc_encoder_surface;
- dri_bo *bo;
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- int i;
- struct i965_coded_buffer_segment *coded_buffer_segment;
-
- /*Setup all the input&output object*/
-
- /* Setup current frame and current direct mv buffer*/
- obj_surface = encode_state->reconstructed_object;
-
- hevc_encoder_surface = (GenHevcSurface *) obj_surface->private_data;
- assert(hevc_encoder_surface);
-
- if (hevc_encoder_surface) {
- hevc_encoder_surface->has_p010_to_nv12_done=0;
- hevc_encoder_surface->base.frame_store_id = -1;
- mfc_context->current_collocated_mv_temporal_buffer[NUM_HCP_CURRENT_COLLOCATED_MV_TEMPORAL_BUFFERS - 1].bo = hevc_encoder_surface->motion_vector_temporal_bo;
- dri_bo_reference(hevc_encoder_surface->motion_vector_temporal_bo);
- }
-
- mfc_context->surface_state.width = obj_surface->orig_width;
- mfc_context->surface_state.height = obj_surface->orig_height;
- mfc_context->surface_state.w_pitch = obj_surface->width;
- mfc_context->surface_state.h_pitch = obj_surface->height;
-
- /* Setup reference frames and direct mv buffers*/
- for (i = 0; i < MAX_HCP_REFERENCE_SURFACES; i++) {
- obj_surface = encode_state->reference_objects[i];
-
- if (obj_surface && obj_surface->bo) {
- mfc_context->reference_surfaces[i].bo = obj_surface->bo;
- dri_bo_reference(obj_surface->bo);
-
- /* Check MV temporal buffer */
- hevc_encoder_surface = (GenHevcSurface *) obj_surface->private_data;
- assert(hevc_encoder_surface);
-
- if (hevc_encoder_surface) {
- hevc_encoder_surface->base.frame_store_id = -1;
- /* Setup MV temporal buffer */
- mfc_context->current_collocated_mv_temporal_buffer[i].bo = hevc_encoder_surface->motion_vector_temporal_bo;
- dri_bo_reference(hevc_encoder_surface->motion_vector_temporal_bo);
- }
- } else {
- break;
- }
- }
-
-
- mfc_context->uncompressed_picture_source.bo = encode_state->input_yuv_object->bo;
- dri_bo_reference(mfc_context->uncompressed_picture_source.bo);
-
- obj_buffer = encode_state->coded_buf_object;
- bo = obj_buffer->buffer_store->bo;
- mfc_context->hcp_indirect_pak_bse_object.bo = bo;
- mfc_context->hcp_indirect_pak_bse_object.offset = I965_CODEDBUFFER_HEADER_SIZE;
- mfc_context->hcp_indirect_pak_bse_object.end_offset = ALIGN(obj_buffer->size_element - 0x1000, 0x1000);
- dri_bo_reference(mfc_context->hcp_indirect_pak_bse_object.bo);
-
- dri_bo_map(bo, 1);
- coded_buffer_segment = (struct i965_coded_buffer_segment *)(bo->virtual);
- coded_buffer_segment->mapped = 0;
- coded_buffer_segment->codec = encoder_context->codec;
- dri_bo_unmap(bo);
-
- return vaStatus;
-}
-
-/* HEVC BRC related */
-
-static void
-intel_hcpe_bit_rate_control_context_init(struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context;
- VAEncSequenceParameterBufferHEVC *pSequenceParameter = (VAEncSequenceParameterBufferHEVC *)encode_state->seq_param_ext->buffer;
- int ctb_size = 16;
- int width_in_mbs = (pSequenceParameter->pic_width_in_luma_samples + ctb_size - 1) / ctb_size;
- int height_in_mbs = (pSequenceParameter->pic_height_in_luma_samples + ctb_size - 1) / ctb_size;
-
- double fps = (double)encoder_context->brc.framerate[0].num / (double)encoder_context->brc.framerate[0].den;
- double bitrate = encoder_context->brc.bits_per_second[0];
- int inter_mb_size = bitrate * 1.0 / (fps + 4.0) / width_in_mbs / height_in_mbs;
- int intra_mb_size = inter_mb_size * 5.0;
- int i;
-
- mfc_context->bit_rate_control_context[HEVC_SLICE_I].target_mb_size = intra_mb_size;
- mfc_context->bit_rate_control_context[HEVC_SLICE_I].target_frame_size = intra_mb_size * width_in_mbs * height_in_mbs;
- mfc_context->bit_rate_control_context[HEVC_SLICE_P].target_mb_size = inter_mb_size;
- mfc_context->bit_rate_control_context[HEVC_SLICE_P].target_frame_size = inter_mb_size * width_in_mbs * height_in_mbs;
- mfc_context->bit_rate_control_context[HEVC_SLICE_B].target_mb_size = inter_mb_size;
- mfc_context->bit_rate_control_context[HEVC_SLICE_B].target_frame_size = inter_mb_size * width_in_mbs * height_in_mbs;
-
- for (i = 0 ; i < 3; i++) {
- mfc_context->bit_rate_control_context[i].QpPrimeY = 26;
- mfc_context->bit_rate_control_context[i].MaxQpNegModifier = 6;
- mfc_context->bit_rate_control_context[i].MaxQpPosModifier = 6;
- mfc_context->bit_rate_control_context[i].GrowInit = 6;
- mfc_context->bit_rate_control_context[i].GrowResistance = 4;
- mfc_context->bit_rate_control_context[i].ShrinkInit = 6;
- mfc_context->bit_rate_control_context[i].ShrinkResistance = 4;
-
- mfc_context->bit_rate_control_context[i].Correct[0] = 8;
- mfc_context->bit_rate_control_context[i].Correct[1] = 4;
- mfc_context->bit_rate_control_context[i].Correct[2] = 2;
- mfc_context->bit_rate_control_context[i].Correct[3] = 2;
- mfc_context->bit_rate_control_context[i].Correct[4] = 4;
- mfc_context->bit_rate_control_context[i].Correct[5] = 8;
- }
-
- mfc_context->bit_rate_control_context[HEVC_SLICE_I].TargetSizeInWord = (intra_mb_size + 16) / 16;
- mfc_context->bit_rate_control_context[HEVC_SLICE_P].TargetSizeInWord = (inter_mb_size + 16) / 16;
- mfc_context->bit_rate_control_context[HEVC_SLICE_B].TargetSizeInWord = (inter_mb_size + 16) / 16;
-
- mfc_context->bit_rate_control_context[HEVC_SLICE_I].MaxSizeInWord = mfc_context->bit_rate_control_context[HEVC_SLICE_I].TargetSizeInWord * 1.5;
- mfc_context->bit_rate_control_context[HEVC_SLICE_P].MaxSizeInWord = mfc_context->bit_rate_control_context[HEVC_SLICE_P].TargetSizeInWord * 1.5;
- mfc_context->bit_rate_control_context[HEVC_SLICE_B].MaxSizeInWord = mfc_context->bit_rate_control_context[HEVC_SLICE_B].TargetSizeInWord * 1.5;
-}
-
-static void intel_hcpe_brc_init(struct encode_state *encode_state,
- struct intel_encoder_context* encoder_context)
-{
- struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context;
- VAEncSequenceParameterBufferHEVC *pSequenceParameter = (VAEncSequenceParameterBufferHEVC *)encode_state->seq_param_ext->buffer;
-
- double bitrate = (double)encoder_context->brc.bits_per_second[0];
- double framerate = (double)encoder_context->brc.framerate[0].num / (double)encoder_context->brc.framerate[0].den;
- int inum = 1, pnum = 0, bnum = 0; /* Gop structure: number of I, P, B frames in the Gop. */
- int intra_period = pSequenceParameter->intra_period;
- int ip_period = pSequenceParameter->ip_period;
- double qp1_size = 0.1 * 8 * 3 * pSequenceParameter->pic_width_in_luma_samples * pSequenceParameter->pic_height_in_luma_samples / 2;
- double qp51_size = 0.001 * 8 * 3 * pSequenceParameter->pic_width_in_luma_samples * pSequenceParameter->pic_height_in_luma_samples / 2;
- double bpf;
- int ratio_min = 1;
- int ratio_max = 32;
- int ratio = 8;
- double buffer_size = 0;
- int bpp = 1;
-
- if((pSequenceParameter->seq_fields.bits.bit_depth_luma_minus8 > 0) ||
- (pSequenceParameter->seq_fields.bits.bit_depth_chroma_minus8 > 0))
- bpp = 2;
-
- qp1_size = qp1_size * bpp;
- qp51_size = qp51_size * bpp;
-
- if (pSequenceParameter->ip_period) {
- pnum = (intra_period + ip_period - 1) / ip_period - 1;
- bnum = intra_period - inum - pnum;
- }
-
- mfc_context->brc.mode = encoder_context->rate_control_mode;
-
- mfc_context->brc.target_frame_size[HEVC_SLICE_I] = (int)((double)((bitrate * intra_period) / framerate) /
- (double)(inum + BRC_PWEIGHT * pnum + BRC_BWEIGHT * bnum));
- mfc_context->brc.target_frame_size[HEVC_SLICE_P] = BRC_PWEIGHT * mfc_context->brc.target_frame_size[HEVC_SLICE_I];
- mfc_context->brc.target_frame_size[HEVC_SLICE_B] = BRC_BWEIGHT * mfc_context->brc.target_frame_size[HEVC_SLICE_I];
-
- mfc_context->brc.gop_nums[HEVC_SLICE_I] = inum;
- mfc_context->brc.gop_nums[HEVC_SLICE_P] = pnum;
- mfc_context->brc.gop_nums[HEVC_SLICE_B] = bnum;
-
- bpf = mfc_context->brc.bits_per_frame = bitrate / framerate;
-
- if (!encoder_context->brc.hrd_buffer_size)
- {
- mfc_context->hrd.buffer_size = bitrate * ratio;
- mfc_context->hrd.current_buffer_fullness =
- (double)(bitrate * ratio/2 < mfc_context->hrd.buffer_size) ?
- bitrate * ratio/2 : mfc_context->hrd.buffer_size / 2.;
- }else
- {
- buffer_size = (double)encoder_context->brc.hrd_buffer_size;
- if(buffer_size < bitrate * ratio_min)
- {
- buffer_size = bitrate * ratio_min;
- }else if (buffer_size > bitrate * ratio_max)
- {
- buffer_size = bitrate * ratio_max ;
- }
- mfc_context->hrd.buffer_size =buffer_size;
- if(encoder_context->brc.hrd_initial_buffer_fullness)
- {
- mfc_context->hrd.current_buffer_fullness =
- (double)(encoder_context->brc.hrd_initial_buffer_fullness < mfc_context->hrd.buffer_size) ?
- encoder_context->brc.hrd_initial_buffer_fullness : mfc_context->hrd.buffer_size / 2.;
- }else
- {
- mfc_context->hrd.current_buffer_fullness = mfc_context->hrd.buffer_size / 2.;
-
- }
- }
-
- mfc_context->hrd.target_buffer_fullness = (double)mfc_context->hrd.buffer_size / 2.;
- mfc_context->hrd.buffer_capacity = (double)mfc_context->hrd.buffer_size / qp1_size;
- mfc_context->hrd.violation_noted = 0;
-
- if ((bpf > qp51_size) && (bpf < qp1_size)) {
- mfc_context->bit_rate_control_context[HEVC_SLICE_P].QpPrimeY = 51 - 50 * (bpf - qp51_size) / (qp1_size - qp51_size);
- } else if (bpf >= qp1_size)
- mfc_context->bit_rate_control_context[HEVC_SLICE_P].QpPrimeY = 1;
- else if (bpf <= qp51_size)
- mfc_context->bit_rate_control_context[HEVC_SLICE_P].QpPrimeY = 51;
-
- mfc_context->bit_rate_control_context[HEVC_SLICE_I].QpPrimeY = mfc_context->bit_rate_control_context[HEVC_SLICE_P].QpPrimeY;
- mfc_context->bit_rate_control_context[HEVC_SLICE_B].QpPrimeY = mfc_context->bit_rate_control_context[HEVC_SLICE_I].QpPrimeY;
-
- BRC_CLIP(mfc_context->bit_rate_control_context[HEVC_SLICE_I].QpPrimeY, 1, 36);
- BRC_CLIP(mfc_context->bit_rate_control_context[HEVC_SLICE_P].QpPrimeY, 1, 40);
- BRC_CLIP(mfc_context->bit_rate_control_context[HEVC_SLICE_B].QpPrimeY, 1, 45);
-}
-
-int intel_hcpe_update_hrd(struct encode_state *encode_state,
- struct gen9_hcpe_context *mfc_context,
- int frame_bits)
-{
- double prev_bf = mfc_context->hrd.current_buffer_fullness;
-
- mfc_context->hrd.current_buffer_fullness -= frame_bits;
-
- if (mfc_context->hrd.buffer_size > 0 && mfc_context->hrd.current_buffer_fullness <= 0.) {
- mfc_context->hrd.current_buffer_fullness = prev_bf;
- return BRC_UNDERFLOW;
- }
-
- mfc_context->hrd.current_buffer_fullness += mfc_context->brc.bits_per_frame;
- if (mfc_context->hrd.buffer_size > 0 && mfc_context->hrd.current_buffer_fullness > mfc_context->hrd.buffer_size) {
- if (mfc_context->brc.mode == VA_RC_VBR)
- mfc_context->hrd.current_buffer_fullness = mfc_context->hrd.buffer_size;
- else {
- mfc_context->hrd.current_buffer_fullness = prev_bf;
- return BRC_OVERFLOW;
- }
- }
- return BRC_NO_HRD_VIOLATION;
-}
-
-int intel_hcpe_brc_postpack(struct encode_state *encode_state,
- struct gen9_hcpe_context *mfc_context,
- int frame_bits)
-{
- gen6_brc_status sts = BRC_NO_HRD_VIOLATION;
- VAEncSequenceParameterBufferHEVC *pSequenceParameter = (VAEncSequenceParameterBufferHEVC *)encode_state->seq_param_ext->buffer;
- VAEncSliceParameterBufferHEVC *pSliceParameter = (VAEncSliceParameterBufferHEVC *)encode_state->slice_params_ext[0]->buffer;
- int slicetype = pSliceParameter->slice_type;
- int qpi = mfc_context->bit_rate_control_context[HEVC_SLICE_I].QpPrimeY;
- int qpp = mfc_context->bit_rate_control_context[HEVC_SLICE_P].QpPrimeY;
- int qpb = mfc_context->bit_rate_control_context[HEVC_SLICE_B].QpPrimeY;
- int qp; // quantizer of previously encoded slice of current type
- int qpn; // predicted quantizer for next frame of current type in integer format
- double qpf; // predicted quantizer for next frame of current type in float format
- double delta_qp; // QP correction
- int target_frame_size, frame_size_next;
- /* Notes:
- * x - how far we are from HRD buffer borders
- * y - how far we are from target HRD buffer fullness
- */
- double x, y;
- double frame_size_alpha;
-
- if(slicetype == HEVC_SLICE_B) {
- if(pSequenceParameter->ip_period == 1)
- {
- slicetype = HEVC_SLICE_P;
- }else if(mfc_context->vui_hrd.i_frame_number % pSequenceParameter->ip_period == 1){
- slicetype = HEVC_SLICE_P;
- }
- }
-
- qp = mfc_context->bit_rate_control_context[slicetype].QpPrimeY;
-
- target_frame_size = mfc_context->brc.target_frame_size[slicetype];
- if (mfc_context->hrd.buffer_capacity < 5)
- frame_size_alpha = 0;
- else
- frame_size_alpha = (double)mfc_context->brc.gop_nums[slicetype];
- if (frame_size_alpha > 30) frame_size_alpha = 30;
- frame_size_next = target_frame_size + (double)(target_frame_size - frame_bits) /
- (double)(frame_size_alpha + 1.);
-
- /* frame_size_next: avoiding negative number and too small value */
- if ((double)frame_size_next < (double)(target_frame_size * 0.25))
- frame_size_next = (int)((double)target_frame_size * 0.25);
-
- qpf = (double)qp * target_frame_size / frame_size_next;
- qpn = (int)(qpf + 0.5);
-
- if (qpn == qp) {
- /* setting qpn we round qpf making mistakes: now we are trying to compensate this */
- mfc_context->brc.qpf_rounding_accumulator += qpf - qpn;
- if (mfc_context->brc.qpf_rounding_accumulator > 1.0) {
- qpn++;
- mfc_context->brc.qpf_rounding_accumulator = 0.;
- } else if (mfc_context->brc.qpf_rounding_accumulator < -1.0) {
- qpn--;
- mfc_context->brc.qpf_rounding_accumulator = 0.;
- }
- }
- /* making sure that QP is not changing too fast */
- if ((qpn - qp) > BRC_QP_MAX_CHANGE) qpn = qp + BRC_QP_MAX_CHANGE;
- else if ((qpn - qp) < -BRC_QP_MAX_CHANGE) qpn = qp - BRC_QP_MAX_CHANGE;
- /* making sure that with QP predictions we did do not leave QPs range */
- BRC_CLIP(qpn, 1, 51);
-
- /* checking wthether HRD compliance is still met */
- sts = intel_hcpe_update_hrd(encode_state, mfc_context, frame_bits);
-
- /* calculating QP delta as some function*/
- x = mfc_context->hrd.target_buffer_fullness - mfc_context->hrd.current_buffer_fullness;
- if (x > 0) {
- x /= mfc_context->hrd.target_buffer_fullness;
- y = mfc_context->hrd.current_buffer_fullness;
- } else {
- x /= (mfc_context->hrd.buffer_size - mfc_context->hrd.target_buffer_fullness);
- y = mfc_context->hrd.buffer_size - mfc_context->hrd.current_buffer_fullness;
- }
- if (y < 0.01) y = 0.01;
- if (x > 1) x = 1;
- else if (x < -1) x = -1;
-
- delta_qp = BRC_QP_MAX_CHANGE * exp(-1 / y) * sin(BRC_PI_0_5 * x);
- qpn = (int)(qpn + delta_qp + 0.5);
-
- /* making sure that with QP predictions we did do not leave QPs range */
- BRC_CLIP(qpn, 1, 51);
-
- if (sts == BRC_NO_HRD_VIOLATION) { // no HRD violation
- /* correcting QPs of slices of other types */
- if (slicetype == HEVC_SLICE_P) {
- if (abs(qpn + BRC_P_B_QP_DIFF - qpb) > 2)
- mfc_context->bit_rate_control_context[HEVC_SLICE_B].QpPrimeY += (qpn + BRC_P_B_QP_DIFF - qpb) >> 1;
- if (abs(qpn - BRC_I_P_QP_DIFF - qpi) > 2)
- mfc_context->bit_rate_control_context[HEVC_SLICE_I].QpPrimeY += (qpn - BRC_I_P_QP_DIFF - qpi) >> 1;
- } else if (slicetype == HEVC_SLICE_I) {
- if (abs(qpn + BRC_I_B_QP_DIFF - qpb) > 4)
- mfc_context->bit_rate_control_context[HEVC_SLICE_B].QpPrimeY += (qpn + BRC_I_B_QP_DIFF - qpb) >> 2;
- if (abs(qpn + BRC_I_P_QP_DIFF - qpp) > 2)
- mfc_context->bit_rate_control_context[HEVC_SLICE_P].QpPrimeY += (qpn + BRC_I_P_QP_DIFF - qpp) >> 2;
- } else { // HEVC_SLICE_B
- if (abs(qpn - BRC_P_B_QP_DIFF - qpp) > 2)
- mfc_context->bit_rate_control_context[HEVC_SLICE_P].QpPrimeY += (qpn - BRC_P_B_QP_DIFF - qpp) >> 1;
- if (abs(qpn - BRC_I_B_QP_DIFF - qpi) > 4)
- mfc_context->bit_rate_control_context[HEVC_SLICE_I].QpPrimeY += (qpn - BRC_I_B_QP_DIFF - qpi) >> 2;
- }
- BRC_CLIP(mfc_context->bit_rate_control_context[HEVC_SLICE_I].QpPrimeY, 1, 51);
- BRC_CLIP(mfc_context->bit_rate_control_context[HEVC_SLICE_P].QpPrimeY, 1, 51);
- BRC_CLIP(mfc_context->bit_rate_control_context[HEVC_SLICE_B].QpPrimeY, 1, 51);
- } else if (sts == BRC_UNDERFLOW) { // underflow
- if (qpn <= qp) qpn = qp + 1;
- if (qpn > 51) {
- qpn = 51;
- sts = BRC_UNDERFLOW_WITH_MAX_QP; //underflow with maxQP
- }
- } else if (sts == BRC_OVERFLOW) {
- if (qpn >= qp) qpn = qp - 1;
- if (qpn < 1) { // < 0 (?) overflow with minQP
- qpn = 1;
- sts = BRC_OVERFLOW_WITH_MIN_QP; // bit stuffing to be done
- }
- }
-
- mfc_context->bit_rate_control_context[slicetype].QpPrimeY = qpn;
-
- return sts;
-}
-
-static void intel_hcpe_hrd_context_init(struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context;
- unsigned int rate_control_mode = encoder_context->rate_control_mode;
- unsigned int target_bit_rate = encoder_context->brc.bits_per_second[0];
-
- // current we only support CBR mode.
- if (rate_control_mode == VA_RC_CBR) {
- mfc_context->vui_hrd.i_bit_rate_value = target_bit_rate >> 10;
- mfc_context->vui_hrd.i_cpb_size_value = (target_bit_rate * 8) >> 10;
- mfc_context->vui_hrd.i_initial_cpb_removal_delay = mfc_context->vui_hrd.i_cpb_size_value * 0.5 * 1024 / target_bit_rate * 90000;
- mfc_context->vui_hrd.i_cpb_removal_delay = 2;
- mfc_context->vui_hrd.i_frame_number = 0;
-
- mfc_context->vui_hrd.i_initial_cpb_removal_delay_length = 24;
- mfc_context->vui_hrd.i_cpb_removal_delay_length = 24;
- mfc_context->vui_hrd.i_dpb_output_delay_length = 24;
- }
-
-}
-
-void
-intel_hcpe_hrd_context_update(struct encode_state *encode_state,
- struct gen9_hcpe_context *mfc_context)
-{
- mfc_context->vui_hrd.i_frame_number++;
-}
-
-int intel_hcpe_interlace_check(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAEncSliceParameterBufferHEVC *pSliceParameter;
- VAEncSequenceParameterBufferHEVC *pSequenceParameter = (VAEncSequenceParameterBufferHEVC *)encode_state->seq_param_ext->buffer;
- int log2_cu_size = pSequenceParameter->log2_min_luma_coding_block_size_minus3 + 3;
- int log2_ctb_size = pSequenceParameter->log2_diff_max_min_luma_coding_block_size + log2_cu_size;
- int ctb_size = 1 << log2_ctb_size;
- int width_in_ctb = (pSequenceParameter->pic_width_in_luma_samples + ctb_size - 1) / ctb_size;
- int height_in_ctb = (pSequenceParameter->pic_height_in_luma_samples + ctb_size - 1) / ctb_size;
- int i;
- int ctbCount = 0;
-
- for (i = 0; i < encode_state->num_slice_params_ext; i++) {
- pSliceParameter = (VAEncSliceParameterBufferHEVC *)encode_state->slice_params_ext[i]->buffer;
- ctbCount += pSliceParameter->num_ctu_in_slice;
- }
-
- if (ctbCount == (width_in_ctb * height_in_ctb))
- return 0;
-
- return 1;
-}
-
-void intel_hcpe_brc_prepare(struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- unsigned int rate_control_mode = encoder_context->rate_control_mode;
- struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context;
-
- if (rate_control_mode == VA_RC_CBR) {
- bool brc_updated;
- assert(encoder_context->codec != CODEC_MPEG2);
-
- brc_updated = encoder_context->brc.need_reset;
-
- /*Programing bit rate control */
- if ((mfc_context->bit_rate_control_context[HEVC_SLICE_I].MaxSizeInWord == 0) ||
- brc_updated) {
- intel_hcpe_bit_rate_control_context_init(encode_state, encoder_context);
- intel_hcpe_brc_init(encode_state, encoder_context);
- }
-
- /*Programing HRD control */
- if ((mfc_context->vui_hrd.i_cpb_size_value == 0) || brc_updated)
- intel_hcpe_hrd_context_init(encode_state, encoder_context);
- }
-}
-
-/* HEVC interface API for encoder */
-
-static VAStatus
-gen9_hcpe_hevc_encode_picture(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_hcpe_context *hcpe_context = encoder_context->mfc_context;
- unsigned int rate_control_mode = encoder_context->rate_control_mode;
- int current_frame_bits_size;
- int sts;
-
- for (;;) {
- gen9_hcpe_init(ctx, encode_state, encoder_context);
- intel_hcpe_hevc_prepare(ctx, encode_state, encoder_context);
- /*Programing bcs pipeline*/
- gen9_hcpe_hevc_pipeline_programing(ctx, encode_state, encoder_context); //filling the pipeline
- gen9_hcpe_run(ctx, encode_state, encoder_context);
- if (rate_control_mode == VA_RC_CBR /*|| rate_control_mode == VA_RC_VBR*/) {
- gen9_hcpe_stop(ctx, encode_state, encoder_context, &current_frame_bits_size);
- sts = intel_hcpe_brc_postpack(encode_state, hcpe_context, current_frame_bits_size);
- if (sts == BRC_NO_HRD_VIOLATION) {
- intel_hcpe_hrd_context_update(encode_state, hcpe_context);
- break;
- } else if (sts == BRC_OVERFLOW_WITH_MIN_QP || sts == BRC_UNDERFLOW_WITH_MAX_QP) {
- if (!hcpe_context->hrd.violation_noted) {
- fprintf(stderr, "Unrepairable %s!\n", (sts == BRC_OVERFLOW_WITH_MIN_QP) ? "overflow" : "underflow");
- hcpe_context->hrd.violation_noted = 1;
- }
- return VA_STATUS_SUCCESS;
- }
- } else {
- break;
- }
- }
-
- return VA_STATUS_SUCCESS;
-}
-
-void
-gen9_hcpe_context_destroy(void *context)
-{
- struct gen9_hcpe_context *hcpe_context = context;
- int i;
-
- dri_bo_unreference(hcpe_context->deblocking_filter_line_buffer.bo);
- hcpe_context->deblocking_filter_line_buffer.bo = NULL;
-
- dri_bo_unreference(hcpe_context->deblocking_filter_tile_line_buffer.bo);
- hcpe_context->deblocking_filter_tile_line_buffer.bo = NULL;
-
- dri_bo_unreference(hcpe_context->deblocking_filter_tile_column_buffer.bo);
- hcpe_context->deblocking_filter_tile_column_buffer.bo = NULL;
-
- dri_bo_unreference(hcpe_context->uncompressed_picture_source.bo);
- hcpe_context->uncompressed_picture_source.bo = NULL;
-
- dri_bo_unreference(hcpe_context->metadata_line_buffer.bo);
- hcpe_context->metadata_line_buffer.bo = NULL;
-
- dri_bo_unreference(hcpe_context->metadata_tile_line_buffer.bo);
- hcpe_context->metadata_tile_line_buffer.bo = NULL;
-
- dri_bo_unreference(hcpe_context->metadata_tile_column_buffer.bo);
- hcpe_context->metadata_tile_column_buffer.bo = NULL;
-
- dri_bo_unreference(hcpe_context->sao_line_buffer.bo);
- hcpe_context->sao_line_buffer.bo = NULL;
-
- dri_bo_unreference(hcpe_context->sao_tile_line_buffer.bo);
- hcpe_context->sao_tile_line_buffer.bo = NULL;
-
- dri_bo_unreference(hcpe_context->sao_tile_column_buffer.bo);
- hcpe_context->sao_tile_column_buffer.bo = NULL;
-
- /* mv temporal buffer */
- for (i = 0; i < NUM_HCP_CURRENT_COLLOCATED_MV_TEMPORAL_BUFFERS; i++) {
- if (hcpe_context->current_collocated_mv_temporal_buffer[i].bo != NULL)
- dri_bo_unreference(hcpe_context->current_collocated_mv_temporal_buffer[i].bo);
- hcpe_context->current_collocated_mv_temporal_buffer[i].bo = NULL;
- }
-
- for (i = 0; i < MAX_HCP_REFERENCE_SURFACES; i++) {
- dri_bo_unreference(hcpe_context->reference_surfaces[i].bo);
- hcpe_context->reference_surfaces[i].bo = NULL;
- }
-
- dri_bo_unreference(hcpe_context->hcp_indirect_cu_object.bo);
- hcpe_context->hcp_indirect_cu_object.bo = NULL;
-
- dri_bo_unreference(hcpe_context->hcp_indirect_pak_bse_object.bo);
- hcpe_context->hcp_indirect_pak_bse_object.bo = NULL;
-
- dri_bo_unreference(hcpe_context->hcp_batchbuffer_surface.bo);
- hcpe_context->hcp_batchbuffer_surface.bo = NULL;
-
- dri_bo_unreference(hcpe_context->aux_batchbuffer_surface.bo);
- hcpe_context->aux_batchbuffer_surface.bo = NULL;
-
- if (hcpe_context->aux_batchbuffer)
- intel_batchbuffer_free(hcpe_context->aux_batchbuffer);
-
- hcpe_context->aux_batchbuffer = NULL;
-
- free(hcpe_context);
-}
-
-VAStatus gen9_hcpe_pipeline(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus vaStatus;
-
- switch (profile) {
- case VAProfileHEVCMain:
- case VAProfileHEVCMain10:
- vaStatus = gen9_hcpe_hevc_encode_picture(ctx, encode_state, encoder_context);
- break;
-
- default:
- vaStatus = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
- break;
- }
-
- return vaStatus;
-}
-
-Bool gen9_hcpe_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct gen9_hcpe_context *hcpe_context = calloc(1, sizeof(struct gen9_hcpe_context));
-
- assert(hcpe_context);
- hcpe_context->pipe_mode_select = gen9_hcpe_pipe_mode_select;
- hcpe_context->set_surface_state = gen9_hcpe_surface_state;
- hcpe_context->ind_obj_base_addr_state = gen9_hcpe_ind_obj_base_addr_state;
- hcpe_context->pic_state = gen9_hcpe_hevc_pic_state;
- hcpe_context->qm_state = gen9_hcpe_hevc_qm_state;
- hcpe_context->fqm_state = gen9_hcpe_hevc_fqm_state;
- hcpe_context->insert_object = gen9_hcpe_hevc_insert_object;
- hcpe_context->buffer_suface_setup = gen8_gpe_buffer_suface_setup;
-
- encoder_context->mfc_context = hcpe_context;
- encoder_context->mfc_context_destroy = gen9_hcpe_context_destroy;
- encoder_context->mfc_pipeline = gen9_hcpe_pipeline;
- encoder_context->mfc_brc_prepare = intel_hcpe_brc_prepare;
-
- hevc_gen_default_iq_matrix_encoder(&hcpe_context->iq_matrix_hevc);
-
- return True;
-}
diff --git a/src/gen9_mfd.c b/src/gen9_mfd.c
deleted file mode 100644
index fed1bc1..0000000
--- a/src/gen9_mfd.c
+++ /dev/null
@@ -1,2008 +0,0 @@
-/*
- * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-
-#include "sysdeps.h"
-
-#include <va/va.h>
-#include <va/va_dec_hevc.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "i965_decoder_utils.h"
-
-#include "gen9_mfd.h"
-#include "intel_media.h"
-#include "vp9_probs.h"
-
-#define OUT_BUFFER(buf_bo, is_target, ma) do { \
- if (buf_bo) { \
- OUT_BCS_RELOC64(batch, \
- buf_bo, \
- I915_GEM_DOMAIN_RENDER, \
- is_target ? I915_GEM_DOMAIN_RENDER : 0, \
- 0); \
- } else { \
- OUT_BCS_BATCH(batch, 0); \
- OUT_BCS_BATCH(batch, 0); \
- } \
- if (ma) \
- OUT_BCS_BATCH(batch, i965->intel.mocs_state); \
- } while (0)
-
-#define OUT_BUFFER_MA_TARGET(buf_bo) OUT_BUFFER(buf_bo, 1, 1)
-#define OUT_BUFFER_MA_REFERENCE(buf_bo) OUT_BUFFER(buf_bo, 0, 1)
-#define OUT_BUFFER_NMA_TARGET(buf_bo) OUT_BUFFER(buf_bo, 1, 0)
-#define OUT_BUFFER_NMA_REFERENCE(buf_bo) OUT_BUFFER(buf_bo, 0, 0)
-
-static void
-gen9_hcpd_init_hevc_surface(VADriverContextP ctx,
- VAPictureParameterBufferHEVC *pic_param,
- struct object_surface *obj_surface,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- GenHevcSurface *gen9_hevc_surface;
-
- if (!obj_surface)
- return;
-
- obj_surface->free_private_data = gen_free_hevc_surface;
- gen9_hevc_surface = obj_surface->private_data;
-
- if (!gen9_hevc_surface) {
- gen9_hevc_surface = calloc(sizeof(GenHevcSurface), 1);
- assert(gen9_hevc_surface);
- gen9_hevc_surface->base.frame_store_id = -1;
- obj_surface->private_data = gen9_hevc_surface;
- }
-
- if (gen9_hevc_surface->motion_vector_temporal_bo == NULL) {
- uint32_t size;
-
- if (gen9_hcpd_context->ctb_size == 16)
- size = ((gen9_hcpd_context->picture_width_in_pixels + 63) >> 6) *
- ((gen9_hcpd_context->picture_height_in_pixels + 15) >> 4);
- else
- size = ((gen9_hcpd_context->picture_width_in_pixels + 31) >> 5) *
- ((gen9_hcpd_context->picture_height_in_pixels + 31) >> 5);
-
- size <<= 6; /* in unit of 64bytes */
- gen9_hevc_surface->motion_vector_temporal_bo = dri_bo_alloc(i965->intel.bufmgr,
- "motion vector temporal buffer",
- size,
- 0x1000);
- }
-}
-
-static VAStatus
-gen9_hcpd_hevc_decode_init(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VAPictureParameterBufferHEVC *pic_param;
- struct object_surface *obj_surface;
- uint32_t size;
- int size_shift = 3;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferHEVC *)decode_state->pic_param->buffer;
- intel_update_hevc_frame_store_index(ctx,
- decode_state,
- pic_param,
- gen9_hcpd_context->reference_surfaces,
- &gen9_hcpd_context->fs_ctx);
-
- gen9_hcpd_context->picture_width_in_pixels = pic_param->pic_width_in_luma_samples;
- gen9_hcpd_context->picture_height_in_pixels = pic_param->pic_height_in_luma_samples;
- gen9_hcpd_context->ctb_size = (1 << (pic_param->log2_min_luma_coding_block_size_minus3 +
- 3 +
- pic_param->log2_diff_max_min_luma_coding_block_size));
- gen9_hcpd_context->picture_width_in_ctbs = ALIGN(gen9_hcpd_context->picture_width_in_pixels, gen9_hcpd_context->ctb_size) / gen9_hcpd_context->ctb_size;
- gen9_hcpd_context->picture_height_in_ctbs = ALIGN(gen9_hcpd_context->picture_height_in_pixels, gen9_hcpd_context->ctb_size) / gen9_hcpd_context->ctb_size;
- gen9_hcpd_context->min_cb_size = (1 << (pic_param->log2_min_luma_coding_block_size_minus3 + 3));
- gen9_hcpd_context->picture_width_in_min_cb_minus1 = gen9_hcpd_context->picture_width_in_pixels / gen9_hcpd_context->min_cb_size - 1;
- gen9_hcpd_context->picture_height_in_min_cb_minus1 = gen9_hcpd_context->picture_height_in_pixels / gen9_hcpd_context->min_cb_size - 1;
-
- /* Current decoded picture */
- obj_surface = decode_state->render_object;
- hevc_ensure_surface_bo(ctx, decode_state, obj_surface, pic_param);
- gen9_hcpd_init_hevc_surface(ctx, pic_param, obj_surface, gen9_hcpd_context);
-
- if((pic_param->bit_depth_luma_minus8 > 0)
- || (pic_param->bit_depth_chroma_minus8 > 0))
- size_shift = 2;
-
- size = ALIGN(gen9_hcpd_context->picture_width_in_pixels, 32) >> size_shift;
- size <<= 6;
- ALLOC_GEN_BUFFER((&gen9_hcpd_context->deblocking_filter_line_buffer), "line buffer", size);
- ALLOC_GEN_BUFFER((&gen9_hcpd_context->deblocking_filter_tile_line_buffer), "tile line buffer", size);
-
- size = ALIGN(gen9_hcpd_context->picture_height_in_pixels + 6 * gen9_hcpd_context->picture_height_in_ctbs, 32) >> size_shift;
- size <<= 6;
- ALLOC_GEN_BUFFER((&gen9_hcpd_context->deblocking_filter_tile_column_buffer), "tile column buffer", size);
-
- size = (((gen9_hcpd_context->picture_width_in_pixels + 15) >> 4) * 188 + 9 * gen9_hcpd_context->picture_width_in_ctbs + 1023) >> 9;
- size <<= 6;
- ALLOC_GEN_BUFFER((&gen9_hcpd_context->metadata_line_buffer), "metadata line buffer", size);
-
- size = (((gen9_hcpd_context->picture_width_in_pixels + 15) >> 4) * 172 + 9 * gen9_hcpd_context->picture_width_in_ctbs + 1023) >> 9;
- size <<= 6;
- ALLOC_GEN_BUFFER((&gen9_hcpd_context->metadata_tile_line_buffer), "metadata tile line buffer", size);
-
- if (IS_CHERRYVIEW(i965->intel.device_info))
- size = (((gen9_hcpd_context->picture_height_in_pixels + 15) >> 4) * 256 + 9 * gen9_hcpd_context->picture_height_in_ctbs + 1023) >> 9;
- else
- size = (((gen9_hcpd_context->picture_height_in_pixels + 15) >> 4) * 176 + 89 * gen9_hcpd_context->picture_height_in_ctbs + 1023) >> 9;
- size <<= 6;
- ALLOC_GEN_BUFFER((&gen9_hcpd_context->metadata_tile_column_buffer), "metadata tile column buffer", size);
-
- size = ALIGN(((gen9_hcpd_context->picture_width_in_pixels >> 1) + 3 * gen9_hcpd_context->picture_width_in_ctbs), 16) >> size_shift;
- size <<= 6;
- ALLOC_GEN_BUFFER((&gen9_hcpd_context->sao_line_buffer), "sao line buffer", size);
-
- size = ALIGN(((gen9_hcpd_context->picture_width_in_pixels >> 1) + 6 * gen9_hcpd_context->picture_width_in_ctbs), 16) >> size_shift;
- size <<= 6;
- ALLOC_GEN_BUFFER((&gen9_hcpd_context->sao_tile_line_buffer), "sao tile line buffer", size);
-
- size = ALIGN(((gen9_hcpd_context->picture_height_in_pixels >> 1) + 6 * gen9_hcpd_context->picture_height_in_ctbs), 16) >> size_shift;
- size <<= 6;
- ALLOC_GEN_BUFFER((&gen9_hcpd_context->sao_tile_column_buffer), "sao tile column buffer", size);
-
- gen9_hcpd_context->first_inter_slice_collocated_ref_idx = 0;
- gen9_hcpd_context->first_inter_slice_collocated_from_l0_flag = 0;
- gen9_hcpd_context->first_inter_slice_valid = 0;
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen9_hcpd_pipe_mode_select(VADriverContextP ctx,
- struct decode_state *decode_state,
- int codec,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch;
-
- assert((codec == HCP_CODEC_HEVC) || (codec == HCP_CODEC_VP9));
-
- if(IS_KBL(i965->intel.device_info))
- {
- BEGIN_BCS_BATCH(batch, 6);
-
- OUT_BCS_BATCH(batch, HCP_PIPE_MODE_SELECT | (6 - 2));
- }
- else
- {
- BEGIN_BCS_BATCH(batch, 4);
-
- OUT_BCS_BATCH(batch, HCP_PIPE_MODE_SELECT | (4 - 2));
- }
- OUT_BCS_BATCH(batch,
- (codec << 5) |
- (0 << 3) | /* disable Pic Status / Error Report */
- HCP_CODEC_SELECT_DECODE);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- if(IS_KBL(i965->intel.device_info))
- {
- if(codec == HCP_CODEC_VP9)
- OUT_BCS_BATCH(batch, 1<<6);
- else
- OUT_BCS_BATCH(batch, 0);
-
- OUT_BCS_BATCH(batch, 0);
- }
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_hcpd_surface_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch;
- struct object_surface *obj_surface = decode_state->render_object;
- unsigned int y_cb_offset;
- VAPictureParameterBufferHEVC *pic_param;
-
- assert(obj_surface);
-
- pic_param = (VAPictureParameterBufferHEVC *)decode_state->pic_param->buffer;
- y_cb_offset = obj_surface->y_cb_offset;
-
- BEGIN_BCS_BATCH(batch, 3);
-
- OUT_BCS_BATCH(batch, HCP_SURFACE_STATE | (3 - 2));
- OUT_BCS_BATCH(batch,
- (0 << 28) | /* surface id */
- (obj_surface->width - 1)); /* pitch - 1 */
- if((pic_param->bit_depth_luma_minus8 > 0)
- || (pic_param->bit_depth_chroma_minus8 > 0))
- {
- OUT_BCS_BATCH(batch,
- (SURFACE_FORMAT_P010 << 28) |
- y_cb_offset);
- }
- else
- {
- OUT_BCS_BATCH(batch,
- (SURFACE_FORMAT_PLANAR_420_8 << 28) |
- y_cb_offset);
- }
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_hcpd_pipe_buf_addr_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch;
- struct object_surface *obj_surface;
- GenHevcSurface *gen9_hevc_surface;
- int i;
-
- BEGIN_BCS_BATCH(batch, 95);
-
- OUT_BCS_BATCH(batch, HCP_PIPE_BUF_ADDR_STATE | (95 - 2));
-
- obj_surface = decode_state->render_object;
- assert(obj_surface && obj_surface->bo);
- gen9_hevc_surface = obj_surface->private_data;
- assert(gen9_hevc_surface && gen9_hevc_surface->motion_vector_temporal_bo);
-
- OUT_BUFFER_MA_TARGET(obj_surface->bo); /* DW 1..3 */
- OUT_BUFFER_MA_TARGET(gen9_hcpd_context->deblocking_filter_line_buffer.bo);/* DW 4..6 */
- OUT_BUFFER_MA_TARGET(gen9_hcpd_context->deblocking_filter_tile_line_buffer.bo); /* DW 7..9 */
- OUT_BUFFER_MA_TARGET(gen9_hcpd_context->deblocking_filter_tile_column_buffer.bo); /* DW 10..12 */
- OUT_BUFFER_MA_TARGET(gen9_hcpd_context->metadata_line_buffer.bo); /* DW 13..15 */
- OUT_BUFFER_MA_TARGET(gen9_hcpd_context->metadata_tile_line_buffer.bo); /* DW 16..18 */
- OUT_BUFFER_MA_TARGET(gen9_hcpd_context->metadata_tile_column_buffer.bo); /* DW 19..21 */
- OUT_BUFFER_MA_TARGET(gen9_hcpd_context->sao_line_buffer.bo); /* DW 22..24 */
- OUT_BUFFER_MA_TARGET(gen9_hcpd_context->sao_tile_line_buffer.bo); /* DW 25..27 */
- OUT_BUFFER_MA_TARGET(gen9_hcpd_context->sao_tile_column_buffer.bo); /* DW 28..30 */
- OUT_BUFFER_MA_TARGET(gen9_hevc_surface->motion_vector_temporal_bo); /* DW 31..33 */
- OUT_BUFFER_MA_TARGET(NULL); /* DW 34..36, reserved */
-
- for (i = 0; i < ARRAY_ELEMS(gen9_hcpd_context->reference_surfaces); i++) {
- obj_surface = gen9_hcpd_context->reference_surfaces[i].obj_surface;
-
- if (obj_surface)
- OUT_BUFFER_NMA_REFERENCE(obj_surface->bo);
- else
- OUT_BUFFER_NMA_REFERENCE(NULL);
- }
- OUT_BCS_BATCH(batch, 0); /* DW 53, memory address attributes */
-
- OUT_BUFFER_MA_REFERENCE(NULL); /* DW 54..56, ignore for decoding mode */
- OUT_BUFFER_MA_TARGET(NULL);
- OUT_BUFFER_MA_TARGET(NULL);
- OUT_BUFFER_MA_TARGET(NULL);
-
- for (i = 0; i < ARRAY_ELEMS(gen9_hcpd_context->reference_surfaces); i++) {
- obj_surface = gen9_hcpd_context->reference_surfaces[i].obj_surface;
- gen9_hevc_surface = NULL;
-
- if (obj_surface && obj_surface->private_data)
- gen9_hevc_surface = obj_surface->private_data;
-
- if (gen9_hevc_surface)
- OUT_BUFFER_NMA_REFERENCE(gen9_hevc_surface->motion_vector_temporal_bo);
- else
- OUT_BUFFER_NMA_REFERENCE(NULL);
- }
- OUT_BCS_BATCH(batch, 0); /* DW 82, memory address attributes */
-
- OUT_BUFFER_MA_TARGET(NULL); /* DW 83..85, ignore for HEVC */
- OUT_BUFFER_MA_TARGET(NULL); /* DW 86..88, ignore for HEVC */
- OUT_BUFFER_MA_TARGET(NULL); /* DW 89..91, ignore for HEVC */
- OUT_BUFFER_MA_TARGET(NULL); /* DW 92..94, ignore for HEVC */
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_hcpd_ind_obj_base_addr_state(VADriverContextP ctx,
- dri_bo *slice_data_bo,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 14);
-
- OUT_BCS_BATCH(batch, HCP_IND_OBJ_BASE_ADDR_STATE | (14 - 2));
- OUT_BUFFER_MA_REFERENCE(slice_data_bo); /* DW 1..3 */
- OUT_BUFFER_NMA_REFERENCE(NULL); /* DW 4..5, Upper Bound */
- OUT_BUFFER_MA_REFERENCE(NULL); /* DW 6..8, CU, ignored */
- OUT_BUFFER_MA_TARGET(NULL); /* DW 9..11, PAK-BSE, ignored */
- OUT_BUFFER_NMA_TARGET(NULL); /* DW 12..13, Upper Bound */
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_hcpd_qm_state(VADriverContextP ctx,
- int size_id,
- int color_component,
- int pred_type,
- int dc,
- unsigned char *qm,
- int qm_length,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch;
- unsigned char qm_buffer[64];
-
- assert(qm_length <= 64);
- memset(qm_buffer, 0, sizeof(qm_buffer));
- memcpy(qm_buffer, qm, qm_length);
-
- BEGIN_BCS_BATCH(batch, 18);
-
- OUT_BCS_BATCH(batch, HCP_QM_STATE | (18 - 2));
- OUT_BCS_BATCH(batch,
- dc << 5 |
- color_component << 3 |
- size_id << 1 |
- pred_type);
- intel_batchbuffer_data(batch, qm_buffer, 64);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_hcpd_hevc_qm_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- VAIQMatrixBufferHEVC *iq_matrix;
- VAPictureParameterBufferHEVC *pic_param;
- int i;
-
- if (decode_state->iq_matrix && decode_state->iq_matrix->buffer)
- iq_matrix = (VAIQMatrixBufferHEVC *)decode_state->iq_matrix->buffer;
- else
- iq_matrix = &gen9_hcpd_context->iq_matrix_hevc;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferHEVC *)decode_state->pic_param->buffer;
-
- if (!pic_param->pic_fields.bits.scaling_list_enabled_flag)
- iq_matrix = &gen9_hcpd_context->iq_matrix_hevc;
-
- for (i = 0; i < 6; i++) {
- gen9_hcpd_qm_state(ctx,
- 0, i % 3, i / 3, 0,
- iq_matrix->ScalingList4x4[i], 16,
- gen9_hcpd_context);
- }
-
- for (i = 0; i < 6; i++) {
- gen9_hcpd_qm_state(ctx,
- 1, i % 3, i / 3, 0,
- iq_matrix->ScalingList8x8[i], 64,
- gen9_hcpd_context);
- }
-
- for (i = 0; i < 6; i++) {
- gen9_hcpd_qm_state(ctx,
- 2, i % 3, i / 3, iq_matrix->ScalingListDC16x16[i],
- iq_matrix->ScalingList16x16[i], 64,
- gen9_hcpd_context);
- }
-
- for (i = 0; i < 2; i++) {
- gen9_hcpd_qm_state(ctx,
- 3, 0, i % 2, iq_matrix->ScalingListDC32x32[i],
- iq_matrix->ScalingList32x32[i], 64,
- gen9_hcpd_context);
- }
-}
-
-static void
-gen9_hcpd_pic_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch;
- VAPictureParameterBufferHEVC *pic_param;
- int max_pcm_size_minus3 = 0, min_pcm_size_minus3 = 0;
- int pcm_sample_bit_depth_luma_minus1 = 7, pcm_sample_bit_depth_chroma_minus1 = 7;
- /*
- * 7.4.3.1
- *
- * When not present, the value of loop_filter_across_tiles_enabled_flag
- * is inferred to be equal to 1.
- */
- int loop_filter_across_tiles_enabled_flag = 1;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferHEVC *)decode_state->pic_param->buffer;
-
- if (pic_param->pic_fields.bits.pcm_enabled_flag) {
- max_pcm_size_minus3 = pic_param->log2_min_pcm_luma_coding_block_size_minus3 +
- pic_param->log2_diff_max_min_pcm_luma_coding_block_size;
- min_pcm_size_minus3 = pic_param->log2_min_pcm_luma_coding_block_size_minus3;
- pcm_sample_bit_depth_luma_minus1 = (pic_param->pcm_sample_bit_depth_luma_minus1 & 0x0f);
- pcm_sample_bit_depth_chroma_minus1 = (pic_param->pcm_sample_bit_depth_chroma_minus1 & 0x0f);
- } else {
- max_pcm_size_minus3 = MIN(pic_param->log2_min_luma_coding_block_size_minus3 + pic_param->log2_diff_max_min_luma_coding_block_size, 2);
- }
-
- if (pic_param->pic_fields.bits.tiles_enabled_flag)
- loop_filter_across_tiles_enabled_flag = pic_param->pic_fields.bits.loop_filter_across_tiles_enabled_flag;
-
- BEGIN_BCS_BATCH(batch, 19);
-
- OUT_BCS_BATCH(batch, HCP_PIC_STATE | (19 - 2));
-
- OUT_BCS_BATCH(batch,
- gen9_hcpd_context->picture_height_in_min_cb_minus1 << 16 |
- gen9_hcpd_context->picture_width_in_min_cb_minus1);
- OUT_BCS_BATCH(batch,
- max_pcm_size_minus3 << 10 |
- min_pcm_size_minus3 << 8 |
- (pic_param->log2_min_transform_block_size_minus2 +
- pic_param->log2_diff_max_min_transform_block_size) << 6 |
- pic_param->log2_min_transform_block_size_minus2 << 4 |
- (pic_param->log2_min_luma_coding_block_size_minus3 +
- pic_param->log2_diff_max_min_luma_coding_block_size) << 2 |
- pic_param->log2_min_luma_coding_block_size_minus3);
- OUT_BCS_BATCH(batch, 0); /* DW 3, ignored */
- OUT_BCS_BATCH(batch,
- 0 << 27 |
- pic_param->pic_fields.bits.strong_intra_smoothing_enabled_flag << 26 |
- pic_param->pic_fields.bits.transquant_bypass_enabled_flag << 25 |
- pic_param->pic_fields.bits.amp_enabled_flag << 23 |
- pic_param->pic_fields.bits.transform_skip_enabled_flag << 22 |
- !(pic_param->CurrPic.flags & VA_PICTURE_HEVC_BOTTOM_FIELD) << 21 |
- !!(pic_param->CurrPic.flags & VA_PICTURE_HEVC_FIELD_PIC) << 20 |
- pic_param->pic_fields.bits.weighted_pred_flag << 19 |
- pic_param->pic_fields.bits.weighted_bipred_flag << 18 |
- pic_param->pic_fields.bits.tiles_enabled_flag << 17 |
- pic_param->pic_fields.bits.entropy_coding_sync_enabled_flag << 16 |
- loop_filter_across_tiles_enabled_flag << 15 |
- pic_param->pic_fields.bits.sign_data_hiding_enabled_flag << 13 |
- pic_param->log2_parallel_merge_level_minus2 << 10 |
- pic_param->pic_fields.bits.constrained_intra_pred_flag << 9 |
- pic_param->pic_fields.bits.pcm_loop_filter_disabled_flag << 8 |
- (pic_param->diff_cu_qp_delta_depth & 0x03) << 6 |
- pic_param->pic_fields.bits.cu_qp_delta_enabled_flag << 5 |
- pic_param->pic_fields.bits.pcm_enabled_flag << 4 |
- pic_param->slice_parsing_fields.bits.sample_adaptive_offset_enabled_flag << 3 |
- 0);
- OUT_BCS_BATCH(batch,
- pic_param->bit_depth_luma_minus8 << 27 |
- pic_param->bit_depth_chroma_minus8 << 24 |
- pcm_sample_bit_depth_luma_minus1 << 20 |
- pcm_sample_bit_depth_chroma_minus1 << 16 |
- pic_param->max_transform_hierarchy_depth_inter << 13 |
- pic_param->max_transform_hierarchy_depth_intra << 10 |
- (pic_param->pps_cr_qp_offset & 0x1f) << 5 |
- (pic_param->pps_cb_qp_offset & 0x1f));
- OUT_BCS_BATCH(batch,
- 0 << 29 |
- 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* DW 10 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0); /* DW 15 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_hcpd_tile_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch;
- VAPictureParameterBufferHEVC *pic_param;
- uint8_t pos_col[20], pos_row[24];
- int i;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferHEVC *)decode_state->pic_param->buffer;
-
- memset(pos_col, 0, sizeof(pos_col));
- memset(pos_row, 0, sizeof(pos_row));
-
- for (i = 0; i <= MIN(pic_param->num_tile_columns_minus1, 18); i++)
- pos_col[i + 1] = pos_col[i] + pic_param->column_width_minus1[i] + 1;
-
- for (i = 0; i <= MIN(pic_param->num_tile_rows_minus1, 20); i++)
- pos_row[i + 1] = pos_row[i] + pic_param->row_height_minus1[i] + 1;
-
- BEGIN_BCS_BATCH(batch, 13);
-
- OUT_BCS_BATCH(batch, HCP_TILE_STATE | (13 - 2));
-
- OUT_BCS_BATCH(batch,
- pic_param->num_tile_columns_minus1 << 5 |
- pic_param->num_tile_rows_minus1);
- intel_batchbuffer_data(batch, pos_col, 20);
- intel_batchbuffer_data(batch, pos_row, 24);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static int
-gen9_hcpd_get_reference_picture_frame_id(VAPictureHEVC *ref_pic,
- GenFrameStore frame_store[MAX_GEN_HCP_REFERENCE_FRAMES])
-{
- int i;
-
- if (ref_pic->picture_id == VA_INVALID_ID ||
- (ref_pic->flags & VA_PICTURE_HEVC_INVALID))
- return 0;
-
- for (i = 0; i < MAX_GEN_HCP_REFERENCE_FRAMES; i++) {
- if (ref_pic->picture_id == frame_store[i].surface_id) {
- assert(frame_store[i].frame_store_id < MAX_GEN_HCP_REFERENCE_FRAMES);
- return frame_store[i].frame_store_id;
- }
- }
-
- /* Should never get here !!! */
- assert(0);
- return 0;
-}
-
-static void
-gen9_hcpd_ref_idx_state_1(struct intel_batchbuffer *batch,
- int list,
- VAPictureParameterBufferHEVC *pic_param,
- VASliceParameterBufferHEVC *slice_param,
- GenFrameStore frame_store[MAX_GEN_HCP_REFERENCE_FRAMES])
-{
- int i;
- uint8_t num_ref_minus1 = (list ? slice_param->num_ref_idx_l1_active_minus1 : slice_param->num_ref_idx_l0_active_minus1);
- uint8_t *ref_list = slice_param->RefPicList[list];
-
- BEGIN_BCS_BATCH(batch, 18);
-
- OUT_BCS_BATCH(batch, HCP_REF_IDX_STATE | (18 - 2));
- OUT_BCS_BATCH(batch,
- num_ref_minus1 << 1 |
- list);
-
- for (i = 0; i < 16; i++) {
- if (i < MIN((num_ref_minus1 + 1), 15)) {
- VAPictureHEVC *ref_pic = &pic_param->ReferenceFrames[ref_list[i]];
- VAPictureHEVC *curr_pic = &pic_param->CurrPic;
-
- OUT_BCS_BATCH(batch,
- !(ref_pic->flags & VA_PICTURE_HEVC_BOTTOM_FIELD) << 15 |
- !!(ref_pic->flags & VA_PICTURE_HEVC_FIELD_PIC) << 14 |
- !!(ref_pic->flags & VA_PICTURE_HEVC_LONG_TERM_REFERENCE) << 13 |
- 0 << 12 |
- 0 << 11 |
- gen9_hcpd_get_reference_picture_frame_id(ref_pic, frame_store) << 8 |
- (CLAMP(-128, 127, curr_pic->pic_order_cnt - ref_pic->pic_order_cnt) & 0xff));
- } else {
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_hcpd_ref_idx_state(VADriverContextP ctx,
- VAPictureParameterBufferHEVC *pic_param,
- VASliceParameterBufferHEVC *slice_param,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch;
-
- if (slice_param->LongSliceFlags.fields.slice_type == HEVC_SLICE_I)
- return;
-
- gen9_hcpd_ref_idx_state_1(batch, 0, pic_param, slice_param, gen9_hcpd_context->reference_surfaces);
-
- if (slice_param->LongSliceFlags.fields.slice_type == HEVC_SLICE_P)
- return;
-
- gen9_hcpd_ref_idx_state_1(batch, 1, pic_param, slice_param, gen9_hcpd_context->reference_surfaces);
-}
-
-static void
-gen9_hcpd_weightoffset_state_1(struct intel_batchbuffer *batch,
- int list,
- VASliceParameterBufferHEVC *slice_param)
-{
- int i;
- uint8_t num_ref_minus1 = (list == 1) ? slice_param->num_ref_idx_l1_active_minus1 : slice_param->num_ref_idx_l0_active_minus1;
- int8_t *luma_offset = (list == 1) ? slice_param->luma_offset_l1 : slice_param->luma_offset_l0;
- int8_t *delta_luma_weight = (list == 1) ? slice_param->delta_luma_weight_l1 : slice_param->delta_luma_weight_l0;
- int8_t (* chroma_offset)[2] = (list == 1) ? slice_param->ChromaOffsetL1 : slice_param->ChromaOffsetL0;
- int8_t (* delta_chroma_weight)[2] = (list == 1) ? slice_param->delta_chroma_weight_l1 : slice_param->delta_chroma_weight_l0;
-
- BEGIN_BCS_BATCH(batch, 34);
-
- OUT_BCS_BATCH(batch, HCP_WEIGHTOFFSET | (34 - 2));
- OUT_BCS_BATCH(batch, list);
-
- for (i = 0; i < 16; i++) {
- if (i < MIN((num_ref_minus1 + 1), 15)) {
- OUT_BCS_BATCH(batch,
- (luma_offset[i] & 0xff) << 8 |
- (delta_luma_weight[i] & 0xff));
- } else {
- OUT_BCS_BATCH(batch, 0);
- }
- }
- for (i = 0; i < 16; i++) {
- if (i < MIN((num_ref_minus1 + 1), 15)) {
- OUT_BCS_BATCH(batch,
- (chroma_offset[i][1] & 0xff) << 24 |
- (delta_chroma_weight[i][1] & 0xff) << 16 |
- (chroma_offset[i][0] & 0xff) << 8 |
- (delta_chroma_weight[i][0] & 0xff));
- } else {
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_hcpd_weightoffset_state(VADriverContextP ctx,
- VAPictureParameterBufferHEVC *pic_param,
- VASliceParameterBufferHEVC *slice_param,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch;
-
- if (slice_param->LongSliceFlags.fields.slice_type == HEVC_SLICE_I)
- return;
-
- if ((slice_param->LongSliceFlags.fields.slice_type == HEVC_SLICE_P &&
- !pic_param->pic_fields.bits.weighted_pred_flag) ||
- (slice_param->LongSliceFlags.fields.slice_type == HEVC_SLICE_B &&
- !pic_param->pic_fields.bits.weighted_bipred_flag))
- return;
-
- gen9_hcpd_weightoffset_state_1(batch, 0, slice_param);
-
- if (slice_param->LongSliceFlags.fields.slice_type == HEVC_SLICE_P)
- return;
-
- gen9_hcpd_weightoffset_state_1(batch, 1, slice_param);
-}
-
-static int
-gen9_hcpd_get_collocated_ref_idx(VADriverContextP ctx,
- VAPictureParameterBufferHEVC *pic_param,
- VASliceParameterBufferHEVC *slice_param,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- uint8_t *ref_list;
- VAPictureHEVC *ref_pic;
-
- if (slice_param->collocated_ref_idx > 14)
- return 0;
-
- if (!slice_param->LongSliceFlags.fields.slice_temporal_mvp_enabled_flag)
- return 0;
-
- if (slice_param->LongSliceFlags.fields.slice_type == HEVC_SLICE_I)
- return 0;
-
- if (slice_param->LongSliceFlags.fields.slice_type == HEVC_SLICE_P ||
- (slice_param->LongSliceFlags.fields.slice_type == HEVC_SLICE_B &&
- slice_param->LongSliceFlags.fields.collocated_from_l0_flag))
- ref_list = slice_param->RefPicList[0];
- else {
- assert(slice_param->LongSliceFlags.fields.slice_type == HEVC_SLICE_B);
- ref_list = slice_param->RefPicList[1];
- }
-
- ref_pic = &pic_param->ReferenceFrames[ref_list[slice_param->collocated_ref_idx]];
-
- return gen9_hcpd_get_reference_picture_frame_id(ref_pic, gen9_hcpd_context->reference_surfaces);
-}
-
-static int
-gen9_hcpd_is_list_low_delay(uint8_t ref_list_count,
- uint8_t ref_list[15],
- VAPictureHEVC *curr_pic,
- VAPictureHEVC ref_surfaces[15])
-{
- int i;
-
- for (i = 0; i < MIN(ref_list_count, 15); i++) {
- VAPictureHEVC *ref_pic;
-
- if (ref_list[i] > 14)
- continue;
-
- ref_pic = &ref_surfaces[ref_list[i]];
-
- if (ref_pic->pic_order_cnt > curr_pic->pic_order_cnt)
- return 0;
- }
-
- return 1;
-}
-
-static int
-gen9_hcpd_is_low_delay(VADriverContextP ctx,
- VAPictureParameterBufferHEVC *pic_param,
- VASliceParameterBufferHEVC *slice_param)
-{
- if (slice_param->LongSliceFlags.fields.slice_type == HEVC_SLICE_I)
- return 0;
- else if (slice_param->LongSliceFlags.fields.slice_type == HEVC_SLICE_P)
- return gen9_hcpd_is_list_low_delay(slice_param->num_ref_idx_l0_active_minus1 + 1,
- slice_param->RefPicList[0],
- &pic_param->CurrPic,
- pic_param->ReferenceFrames);
- else
- return gen9_hcpd_is_list_low_delay(slice_param->num_ref_idx_l0_active_minus1 + 1,
- slice_param->RefPicList[0],
- &pic_param->CurrPic,
- pic_param->ReferenceFrames) &&
- gen9_hcpd_is_list_low_delay(slice_param->num_ref_idx_l1_active_minus1 + 1,
- slice_param->RefPicList[1],
- &pic_param->CurrPic,
- pic_param->ReferenceFrames);
-}
-
-static void
-gen9_hcpd_slice_state(VADriverContextP ctx,
- VAPictureParameterBufferHEVC *pic_param,
- VASliceParameterBufferHEVC *slice_param,
- VASliceParameterBufferHEVC *next_slice_param,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch;
- int slice_hor_pos, slice_ver_pos, next_slice_hor_pos, next_slice_ver_pos;
- unsigned short collocated_ref_idx, collocated_from_l0_flag;
- int sliceqp_sign_flag = 0, sliceqp = 0;
-
- slice_hor_pos = slice_param->slice_segment_address % gen9_hcpd_context->picture_width_in_ctbs;
- slice_ver_pos = slice_param->slice_segment_address / gen9_hcpd_context->picture_width_in_ctbs;
-
- if (next_slice_param) {
- next_slice_hor_pos = next_slice_param->slice_segment_address % gen9_hcpd_context->picture_width_in_ctbs;
- next_slice_ver_pos = next_slice_param->slice_segment_address / gen9_hcpd_context->picture_width_in_ctbs;
- } else {
- next_slice_hor_pos = 0;
- next_slice_ver_pos = 0;
- }
-
- collocated_ref_idx = gen9_hcpd_get_collocated_ref_idx(ctx, pic_param, slice_param, gen9_hcpd_context);
- collocated_from_l0_flag = slice_param->LongSliceFlags.fields.collocated_from_l0_flag;
-
- if ((!gen9_hcpd_context->first_inter_slice_valid) &&
- (slice_param->LongSliceFlags.fields.slice_type != HEVC_SLICE_I) &&
- slice_param->LongSliceFlags.fields.slice_temporal_mvp_enabled_flag) {
- gen9_hcpd_context->first_inter_slice_collocated_ref_idx = collocated_ref_idx;
- gen9_hcpd_context->first_inter_slice_collocated_from_l0_flag = collocated_from_l0_flag;
- gen9_hcpd_context->first_inter_slice_valid = 1;
- }
-
- /* HW requirement */
- if (gen9_hcpd_context->first_inter_slice_valid &&
- ((slice_param->LongSliceFlags.fields.slice_type == HEVC_SLICE_I) ||
- (!slice_param->LongSliceFlags.fields.slice_temporal_mvp_enabled_flag))) {
- collocated_ref_idx = gen9_hcpd_context->first_inter_slice_collocated_ref_idx;
- collocated_from_l0_flag = gen9_hcpd_context->first_inter_slice_collocated_from_l0_flag;
- }
-
- sliceqp = pic_param->init_qp_minus26 + 26 + slice_param->slice_qp_delta;
- if((pic_param->bit_depth_luma_minus8 > 0)
- || (pic_param->bit_depth_chroma_minus8 > 0))
- {
- if(sliceqp < 0)
- {
- sliceqp_sign_flag = 1;
- sliceqp = -sliceqp;
- }
- }
-
- BEGIN_BCS_BATCH(batch, 9);
-
- OUT_BCS_BATCH(batch, HCP_SLICE_STATE | (9 - 2));
-
- OUT_BCS_BATCH(batch,
- slice_ver_pos << 16 |
- slice_hor_pos);
- OUT_BCS_BATCH(batch,
- next_slice_ver_pos << 16 |
- next_slice_hor_pos);
- OUT_BCS_BATCH(batch,
- (slice_param->slice_cr_qp_offset & 0x1f) << 17 |
- (slice_param->slice_cb_qp_offset & 0x1f) << 12 |
- sliceqp << 6 |
- slice_param->LongSliceFlags.fields.slice_temporal_mvp_enabled_flag << 5 |
- slice_param->LongSliceFlags.fields.dependent_slice_segment_flag << 4 |
- sliceqp_sign_flag << 3 |
- !next_slice_param << 2 |
- slice_param->LongSliceFlags.fields.slice_type);
- OUT_BCS_BATCH(batch,
- collocated_ref_idx << 26 |
- (5 - slice_param->five_minus_max_num_merge_cand - 1) << 23 |
- slice_param->LongSliceFlags.fields.cabac_init_flag << 22 |
- slice_param->luma_log2_weight_denom << 19 |
- ((slice_param->luma_log2_weight_denom + slice_param->delta_chroma_log2_weight_denom) & 0x7) << 16 |
- collocated_from_l0_flag << 15 |
- gen9_hcpd_is_low_delay(ctx, pic_param, slice_param) << 14 |
- slice_param->LongSliceFlags.fields.mvd_l1_zero_flag << 13 |
- slice_param->LongSliceFlags.fields.slice_sao_luma_flag << 12 |
- slice_param->LongSliceFlags.fields.slice_sao_chroma_flag << 11 |
- slice_param->LongSliceFlags.fields.slice_loop_filter_across_slices_enabled_flag << 10 |
- (slice_param->slice_beta_offset_div2 & 0xf) << 5 |
- (slice_param->slice_tc_offset_div2 & 0xf) << 1 |
- slice_param->LongSliceFlags.fields.slice_deblocking_filter_disabled_flag);
- OUT_BCS_BATCH(batch,
- slice_param->slice_data_byte_offset); /* DW 5 */
- OUT_BCS_BATCH(batch,
- 0 << 26 |
- 0 << 20 |
- 0);
- OUT_BCS_BATCH(batch, 0); /* Ignored for decoding */
- OUT_BCS_BATCH(batch, 0); /* Ignored for decoding */
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_hcpd_bsd_object(VADriverContextP ctx,
- VASliceParameterBufferHEVC *slice_param,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 3);
-
- OUT_BCS_BATCH(batch, HCP_BSD_OBJECT | (3 - 2));
-
- OUT_BCS_BATCH(batch, slice_param->slice_data_size);
- OUT_BCS_BATCH(batch, slice_param->slice_data_offset);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static VAStatus
-gen9_hcpd_hevc_decode_picture(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- VAStatus vaStatus;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch;
- VAPictureParameterBufferHEVC *pic_param;
- VASliceParameterBufferHEVC *slice_param, *next_slice_param, *next_slice_group_param;
- dri_bo *slice_data_bo;
- int i, j;
-
- vaStatus = gen9_hcpd_hevc_decode_init(ctx, decode_state, gen9_hcpd_context);
-
- if (vaStatus != VA_STATUS_SUCCESS)
- goto out;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferHEVC *)decode_state->pic_param->buffer;
-
- if (i965->intel.has_bsd2)
- intel_batchbuffer_start_atomic_bcs_override(batch, 0x1000, BSD_RING0);
- else
- intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
-
- gen9_hcpd_pipe_mode_select(ctx, decode_state, HCP_CODEC_HEVC, gen9_hcpd_context);
- gen9_hcpd_surface_state(ctx, decode_state, gen9_hcpd_context);
- gen9_hcpd_pipe_buf_addr_state(ctx, decode_state, gen9_hcpd_context);
- gen9_hcpd_hevc_qm_state(ctx, decode_state, gen9_hcpd_context);
- gen9_hcpd_pic_state(ctx, decode_state, gen9_hcpd_context);
-
- if (pic_param->pic_fields.bits.tiles_enabled_flag)
- gen9_hcpd_tile_state(ctx, decode_state, gen9_hcpd_context);
-
- /* Need to double it works or not if the two slice groups have differenct slice data buffers */
- for (j = 0; j < decode_state->num_slice_params; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferHEVC *)decode_state->slice_params[j]->buffer;
- slice_data_bo = decode_state->slice_datas[j]->bo;
-
- gen9_hcpd_ind_obj_base_addr_state(ctx, slice_data_bo, gen9_hcpd_context);
-
- if (j == decode_state->num_slice_params - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VASliceParameterBufferHEVC *)decode_state->slice_params[j + 1]->buffer;
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- if (i < decode_state->slice_params[j]->num_elements - 1)
- next_slice_param = slice_param + 1;
- else
- next_slice_param = next_slice_group_param;
-
- gen9_hcpd_slice_state(ctx, pic_param, slice_param, next_slice_param, gen9_hcpd_context);
- gen9_hcpd_ref_idx_state(ctx, pic_param, slice_param, gen9_hcpd_context);
- gen9_hcpd_weightoffset_state(ctx, pic_param, slice_param, gen9_hcpd_context);
- gen9_hcpd_bsd_object(ctx, slice_param, gen9_hcpd_context);
- slice_param++;
- }
- }
-
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-
-out:
- return vaStatus;
-}
-
-/*********************************************************/
-/* VP9 Code */
-/*********************************************************/
-
-
-#define VP9_PROB_BUFFER_FIRST_PART_SIZE 2010
-#define VP9_PROB_BUFFER_SECOND_PART_SIZE 10
-#define VP9_PROB_BUFFER_KEY_INTER_OFFSET 1667
-#define VP9_PROB_BUFFER_KEY_INTER_SIZE 343
-
-#define VP9_PROB_BUFFER_UPDATE_NO 0
-#define VP9_PROB_BUFFER_UPDATE_SECNE_1 1
-#define VP9_PROB_BUFFER_UPDATE_SECNE_2 2
-#define VP9_PROB_BUFFER_UPDATE_SECNE_3 3
-#define VP9_PROB_BUFFER_UPDATE_SECNE_4 4
-#define VP9_PROB_BUFFER_UPDATE_SECNE_5 5
-
-#define VP9_PROB_BUFFER_SAVED_NO 0
-#define VP9_PROB_BUFFER_SAVED_SECNE_1 1
-#define VP9_PROB_BUFFER_SAVED_SECNE_2 2
-
-#define VP9_PROB_BUFFER_RESTORED_NO 0
-#define VP9_PROB_BUFFER_RESTORED_SECNE_1 1
-#define VP9_PROB_BUFFER_RESTORED_SECNE_2 2
-#define VP9_PROB_BUFFER_RESTORED_SECNE_MAX (VP9_PROB_BUFFER_RESTORED_SECNE_2 + 1)
-
-#define ALLOC_MV_BUFFER(gen_buffer, string, size,width,height) \
- do { \
- dri_bo_unreference(gen_buffer->bo); \
- gen_buffer->bo = dri_bo_alloc(i965->intel.bufmgr, \
- string, \
- size, \
- 0x1000); \
- assert(gen_buffer->bo); \
- gen_buffer->frame_width = width ; \
- gen_buffer->frame_height = height; \
- } while (0)
-
-static void
-vp9_update_segmentId_buffer(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VADecPictureParameterBufferVP9 *pic_param;
-
- int size = 0;
- int is_scaling = 0;
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VADecPictureParameterBufferVP9 *)decode_state->pic_param->buffer;
-
- size = gen9_hcpd_context->picture_width_in_ctbs * gen9_hcpd_context->picture_height_in_ctbs * 1 ;
- size <<= 6;
- if (gen9_hcpd_context->vp9_segment_id_buffer.bo == NULL || pic_param->frame_width > gen9_hcpd_context->last_frame.frame_width || pic_param->frame_height > gen9_hcpd_context->last_frame.frame_height)
- {
- ALLOC_GEN_BUFFER((&gen9_hcpd_context->vp9_segment_id_buffer), "vp9 segment id buffer", size);
- }
-
- is_scaling = (pic_param->frame_width != gen9_hcpd_context->last_frame.frame_width) || (pic_param->frame_height != gen9_hcpd_context->last_frame.frame_height);
-
- if((pic_param->pic_fields.bits.frame_type == HCP_VP9_KEY_FRAME) ||
- pic_param->pic_fields.bits.error_resilient_mode ||
- pic_param->pic_fields.bits.intra_only || is_scaling) {
-
- //VP9 Segment ID buffer needs to be zero
- dri_bo_map(gen9_hcpd_context->vp9_segment_id_buffer.bo,1);
- memset((unsigned char *)gen9_hcpd_context->vp9_segment_id_buffer.bo->virtual,0, size);
- dri_bo_unmap(gen9_hcpd_context->vp9_segment_id_buffer.bo);
- }
-}
-
-static void
-vp9_update_mv_temporal_buffer(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VADecPictureParameterBufferVP9 *pic_param;
- int size = 0;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VADecPictureParameterBufferVP9 *)decode_state->pic_param->buffer;
-
- size = gen9_hcpd_context->picture_width_in_ctbs * gen9_hcpd_context->picture_height_in_ctbs * 9 ;
- size <<= 6; //CL aligned
- if (gen9_hcpd_context->vp9_mv_temporal_buffer_curr.bo == NULL || pic_param->frame_width > gen9_hcpd_context->vp9_mv_temporal_buffer_curr.frame_width || pic_param->frame_height > gen9_hcpd_context->vp9_mv_temporal_buffer_curr.frame_height)
- {
- ALLOC_MV_BUFFER((&gen9_hcpd_context->vp9_mv_temporal_buffer_curr), "vp9 curr mv temporal buffer", size,pic_param->frame_width,pic_param->frame_height);
- }
- if (gen9_hcpd_context->vp9_mv_temporal_buffer_last.bo == NULL)
- {
- ALLOC_MV_BUFFER((&gen9_hcpd_context->vp9_mv_temporal_buffer_last), "vp9 last mv temporal buffer", size,pic_param->frame_width,pic_param->frame_height);
- }
-
-}
-
-static void
-vp9_gen_default_probabilities(VADriverContextP ctx, struct gen9_hcpd_context *gen9_hcpd_context)
-{
- int i = 0;
- uint32_t size = 0;
-
- size = sizeof(FRAME_CONTEXT);
- memset(&gen9_hcpd_context->vp9_fc_key_default,0,size);
- memset(&gen9_hcpd_context->vp9_fc_inter_default,0,size);
- memset(&gen9_hcpd_context->vp9_frame_ctx,0,size*FRAME_CONTEXTS);
- //more code to come here below
-
- //1. key default
- gen9_hcpd_context->vp9_fc_key_default.tx_probs = default_tx_probs;
- //dummy 52
- vp9_copy(gen9_hcpd_context->vp9_fc_key_default.coeff_probs4x4, default_coef_probs_4x4);
- vp9_copy(gen9_hcpd_context->vp9_fc_key_default.coeff_probs8x8, default_coef_probs_8x8);
- vp9_copy(gen9_hcpd_context->vp9_fc_key_default.coeff_probs16x16, default_coef_probs_16x16);
- vp9_copy(gen9_hcpd_context->vp9_fc_key_default.coeff_probs32x32, default_coef_probs_32x32);
- //dummy 16
- vp9_copy(gen9_hcpd_context->vp9_fc_key_default.skip_probs, default_skip_probs);
- vp9_copy(gen9_hcpd_context->vp9_fc_key_default.partition_prob, vp9_kf_partition_probs);
- //dummy 47
- vp9_copy(gen9_hcpd_context->vp9_fc_key_default.uv_mode_prob, vp9_kf_uv_mode_prob);
- vp9_copy(gen9_hcpd_context->vp9_fc_key_default.seg_tree_probs, default_seg_tree_probs);
- vp9_copy(gen9_hcpd_context->vp9_fc_key_default.seg_pred_probs, default_seg_pred_probs);
-
- //2. inter default
- gen9_hcpd_context->vp9_fc_inter_default.tx_probs = default_tx_probs;
- //dummy 52
- vp9_copy(gen9_hcpd_context->vp9_fc_inter_default.coeff_probs4x4, default_coef_probs_4x4);
- vp9_copy(gen9_hcpd_context->vp9_fc_inter_default.coeff_probs8x8, default_coef_probs_8x8);
- vp9_copy(gen9_hcpd_context->vp9_fc_inter_default.coeff_probs16x16, default_coef_probs_16x16);
- vp9_copy(gen9_hcpd_context->vp9_fc_inter_default.coeff_probs32x32, default_coef_probs_32x32);
- //dummy 16
- vp9_copy(gen9_hcpd_context->vp9_fc_inter_default.skip_probs, default_skip_probs);
- vp9_copy(gen9_hcpd_context->vp9_fc_inter_default.inter_mode_probs, default_inter_mode_probs);
- vp9_copy(gen9_hcpd_context->vp9_fc_inter_default.switchable_interp_prob, default_switchable_interp_prob);
- vp9_copy(gen9_hcpd_context->vp9_fc_inter_default.intra_inter_prob, default_intra_inter_p);
- vp9_copy(gen9_hcpd_context->vp9_fc_inter_default.comp_inter_prob, default_comp_inter_p);
- vp9_copy(gen9_hcpd_context->vp9_fc_inter_default.single_ref_prob, default_single_ref_p);
- vp9_copy(gen9_hcpd_context->vp9_fc_inter_default.comp_ref_prob, default_comp_ref_p);
- vp9_copy(gen9_hcpd_context->vp9_fc_inter_default.y_mode_prob, default_if_y_probs);
- vp9_copy(gen9_hcpd_context->vp9_fc_inter_default.partition_prob, default_partition_probs);
- gen9_hcpd_context->vp9_fc_inter_default.nmvc = default_nmv_context;
- //dummy 47
- vp9_copy(gen9_hcpd_context->vp9_fc_inter_default.uv_mode_prob, default_if_uv_probs);
- vp9_copy(gen9_hcpd_context->vp9_fc_inter_default.seg_tree_probs, default_seg_tree_probs);
- vp9_copy(gen9_hcpd_context->vp9_fc_inter_default.seg_pred_probs, default_seg_pred_probs);
-
- for(i = 0; i < FRAME_CONTEXTS; i++)
- {
- gen9_hcpd_context->vp9_frame_ctx[i] = gen9_hcpd_context->vp9_fc_inter_default;
- }
-}
-
-static void
-vp9_update_probabilities(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- VADecPictureParameterBufferVP9 *pic_param;
- int i = 0;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VADecPictureParameterBufferVP9 *)decode_state->pic_param->buffer;
-
- //first part buffer update: Case 1)Reset all 4 probablity buffers
- if((pic_param->pic_fields.bits.frame_type == HCP_VP9_KEY_FRAME) ||pic_param->pic_fields.bits.intra_only||pic_param->pic_fields.bits.error_resilient_mode)
- {
- if((pic_param->pic_fields.bits.frame_type == HCP_VP9_KEY_FRAME) ||
- (pic_param->pic_fields.bits.reset_frame_context == 3)||
- pic_param->pic_fields.bits.error_resilient_mode)
- {
- //perform full buffer update
- for(i = 0; i < FRAME_CONTEXTS; i++)
- {
- memcpy(&gen9_hcpd_context->vp9_frame_ctx[i],&gen9_hcpd_context->vp9_fc_inter_default,VP9_PROB_BUFFER_FIRST_PART_SIZE);
-
- vp9_copy(gen9_hcpd_context->vp9_frame_ctx[i].seg_tree_probs, default_seg_tree_probs);
- vp9_copy(gen9_hcpd_context->vp9_frame_ctx[i].seg_pred_probs, default_seg_pred_probs);
- }
- }else if(pic_param->pic_fields.bits.reset_frame_context == 2&&pic_param->pic_fields.bits.intra_only)
- {
- memcpy(&gen9_hcpd_context->vp9_frame_ctx[pic_param->pic_fields.bits.frame_context_idx],&gen9_hcpd_context->vp9_fc_inter_default,VP9_PROB_BUFFER_FIRST_PART_SIZE);
- }
- pic_param->pic_fields.bits.frame_context_idx = 0;
- }
-
- //Case 3) Update only segment probabilities
- if((pic_param->pic_fields.bits.segmentation_enabled &&
- pic_param->pic_fields.bits.segmentation_update_map))
- {
- //Update seg_tree_probs and seg_pred_probs accordingly
- for (i=0; i<SEG_TREE_PROBS; i++)
- {
- gen9_hcpd_context->vp9_frame_ctx[pic_param->pic_fields.bits.frame_context_idx].seg_tree_probs[i] = pic_param->mb_segment_tree_probs[i];
- }
- for (i=0; i<PREDICTION_PROBS; i++)
- {
- gen9_hcpd_context->vp9_frame_ctx[pic_param->pic_fields.bits.frame_context_idx].seg_pred_probs[i] = pic_param->segment_pred_probs[i];
- }
- }
-
- //update vp9_fc according to frame_context_id
- {
- void *pfc = (void *)&gen9_hcpd_context->vp9_frame_ctx[pic_param->pic_fields.bits.frame_context_idx];
- void *pprob = NULL;
-
- dri_bo_map(gen9_hcpd_context->vp9_probability_buffer.bo,1);
-
- pprob = (void *)gen9_hcpd_context->vp9_probability_buffer.bo->virtual;
- memcpy(pprob,pfc,2048);
- //only update 343bytes for key or intra_only frame
- if(pic_param->pic_fields.bits.frame_type == HCP_VP9_KEY_FRAME ||
- pic_param->pic_fields.bits.intra_only)
- {
- memcpy(pprob + VP9_PROB_BUFFER_FIRST_PART_SIZE - VP9_PROB_BUFFER_KEY_INTER_SIZE
- , gen9_hcpd_context->vp9_fc_key_default.inter_mode_probs
- , VP9_PROB_BUFFER_KEY_INTER_SIZE);
- }
-
- dri_bo_unmap(gen9_hcpd_context->vp9_probability_buffer.bo);
- }
-}
-
-static void
-gen9_hcpd_init_vp9_surface(VADriverContextP ctx,
- VADecPictureParameterBufferVP9 *pic_param,
- struct object_surface *obj_surface,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- GenVP9Surface *gen9_vp9_surface;
-
- if (!obj_surface)
- return;
-
- obj_surface->free_private_data = gen_free_vp9_surface;
- gen9_vp9_surface = obj_surface->private_data;
-
- if (!gen9_vp9_surface) {
- gen9_vp9_surface = calloc(sizeof(GenVP9Surface), 1);
- assert(gen9_vp9_surface);
- gen9_vp9_surface->base.frame_store_id = -1;
- obj_surface->private_data = gen9_vp9_surface;
- }
-
- gen9_vp9_surface->frame_width = pic_param->frame_width;
- gen9_vp9_surface->frame_height = pic_param->frame_height;
-
-}
-
-static VAStatus
-gen9_hcpd_vp9_decode_init(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VADecPictureParameterBufferVP9 *pic_param;
- struct object_surface *obj_surface;
- uint32_t size;
- int width_in_mbs=0, height_in_mbs=0;
- int bit_depth_minus8 = 0;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VADecPictureParameterBufferVP9 *)decode_state->pic_param->buffer;
-
- width_in_mbs = (pic_param->frame_width + 15) / 16;
- height_in_mbs = (pic_param->frame_height + 15) / 16;
-
- //For BXT, we support only till 4K
- assert(width_in_mbs > 0 && width_in_mbs <= 256); /* 4K */
- assert(height_in_mbs > 0 && height_in_mbs <= 256);
-
- if(!(i965->codec_info->vp9_dec_profiles & (1U<<pic_param->profile)))
- return VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
-
- if(pic_param->profile >= 2)
- {
- if(pic_param->bit_depth >= 8)
- bit_depth_minus8 = pic_param->bit_depth - 8;
-
- if(bit_depth_minus8 == 2)
- {
- if(!(i965->codec_info->vp9_dec_chroma_formats & VA_RT_FORMAT_YUV420_10BPP))
- return VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT;
- }
- else if((bit_depth_minus8 > 2) || (bit_depth_minus8 == 1) || (bit_depth_minus8 < 0))
- return VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT;
- }
-
- //Update the frame store buffers with the reference frames information
- intel_update_vp9_frame_store_index(ctx,
- decode_state,
- pic_param,
- gen9_hcpd_context->reference_surfaces);
-
- /* Current decoded picture */
- obj_surface = decode_state->render_object;
- //Ensure there is a tiled render surface in NV12 format. If not, create one.
- vp9_ensure_surface_bo(ctx, decode_state, obj_surface, pic_param);
-
-
- //Super block in VP9 is 64x64
- gen9_hcpd_context->ctb_size = 64;
- gen9_hcpd_context->min_cb_size = 8; //Min block size is 4 or 8?
-
- //If picture width/height is not multiple of 64, needs to upsize it to the next 64 pixels
- //before calculation below.
- gen9_hcpd_context->picture_width_in_ctbs = ALIGN(pic_param->frame_width, gen9_hcpd_context->ctb_size) / gen9_hcpd_context->ctb_size;
- gen9_hcpd_context->picture_height_in_ctbs = ALIGN(pic_param->frame_height, gen9_hcpd_context->ctb_size) / gen9_hcpd_context->ctb_size;
-
- gen9_hcpd_context->picture_width_in_min_cb_minus1 = ALIGN(pic_param->frame_width, gen9_hcpd_context->min_cb_size) / gen9_hcpd_context->min_cb_size - 1;
- gen9_hcpd_context->picture_height_in_min_cb_minus1 = ALIGN(pic_param->frame_height, gen9_hcpd_context->min_cb_size) / gen9_hcpd_context->min_cb_size - 1;
-
- gen9_hcpd_context->picture_width_in_pixels = (gen9_hcpd_context->picture_width_in_min_cb_minus1 + 1) * gen9_hcpd_context->min_cb_size ;
- gen9_hcpd_context->picture_height_in_pixels = (gen9_hcpd_context->picture_height_in_min_cb_minus1 + 1) * gen9_hcpd_context->min_cb_size ;
-
- gen9_hcpd_init_vp9_surface(ctx, pic_param, obj_surface, gen9_hcpd_context);
-
- if(pic_param->profile >= 2)
- size = gen9_hcpd_context->picture_width_in_ctbs*36; //num_width_in_SB * 36
- else
- size = gen9_hcpd_context->picture_width_in_ctbs*18; //num_width_in_SB * 18
- size<<=6;
- ALLOC_GEN_BUFFER((&gen9_hcpd_context->deblocking_filter_line_buffer), "line buffer", size);
- ALLOC_GEN_BUFFER((&gen9_hcpd_context->deblocking_filter_tile_line_buffer), "tile line buffer", size);
-
- if(pic_param->profile >= 2)
- size = gen9_hcpd_context->picture_height_in_ctbs*34; //num_height_in_SB * 17
- else
- size = gen9_hcpd_context->picture_height_in_ctbs*17; //num_height_in_SB * 17
- size<<=6;
- ALLOC_GEN_BUFFER((&gen9_hcpd_context->deblocking_filter_tile_column_buffer), "tile column buffer", size);
-
- size = gen9_hcpd_context->picture_width_in_ctbs*5; //num_width_in_SB * 5
- size<<=6;
- ALLOC_GEN_BUFFER((&gen9_hcpd_context->metadata_line_buffer), "metadata line buffer", size);
- ALLOC_GEN_BUFFER((&gen9_hcpd_context->metadata_tile_line_buffer), "metadata tile line buffer", size);
-
- size = gen9_hcpd_context->picture_height_in_ctbs*5; //num_height_in_SB * 5
- size<<=6;
- ALLOC_GEN_BUFFER((&gen9_hcpd_context->metadata_tile_column_buffer), "metadata tile column buffer", size);
-
- size =gen9_hcpd_context->picture_width_in_ctbs*1; //num_width_in_SB * 1
- size<<=6;
- ALLOC_GEN_BUFFER((&gen9_hcpd_context->hvd_line_rowstore_buffer), "hvd line rowstore buffer", size);
- ALLOC_GEN_BUFFER((&gen9_hcpd_context->hvd_tile_rowstore_buffer), "hvd tile rowstore buffer", size);
-
- size = 32;
- size<<=6;
- ALLOC_GEN_BUFFER((&gen9_hcpd_context->vp9_probability_buffer), "vp9 probability buffer", size);
-
- gen9_hcpd_context->first_inter_slice_collocated_ref_idx = 0;
- gen9_hcpd_context->first_inter_slice_collocated_from_l0_flag = 0;
- gen9_hcpd_context->first_inter_slice_valid = 0;
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen9_hcpd_vp9_surface_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch;
- struct object_surface *obj_surface = decode_state->render_object;
- struct object_surface *tmp_obj_surface = NULL;
- unsigned int y_cb_offset;
- int i = 0;
-
- assert(obj_surface);
-
- y_cb_offset = obj_surface->y_cb_offset;
-
- BEGIN_BCS_BATCH(batch, 3);
-
- OUT_BCS_BATCH(batch, HCP_SURFACE_STATE | (3 - 2));
- OUT_BCS_BATCH(batch,
- (0 << 28) | /* surface id */
- (obj_surface->width - 1)); /* pitch - 1 */
- OUT_BCS_BATCH(batch,
- (((obj_surface->fourcc == VA_FOURCC_P010) ? SURFACE_FORMAT_P010: SURFACE_FORMAT_PLANAR_420_8) << 28) |
- y_cb_offset);
- ADVANCE_BCS_BATCH(batch);
-
- tmp_obj_surface = obj_surface;
-
- for(i = 0; i < 3; i++)
- {
- obj_surface = gen9_hcpd_context->reference_surfaces[i].obj_surface;
- if (obj_surface && obj_surface->private_data)
- {
- BEGIN_BCS_BATCH(batch, 3);
-
- OUT_BCS_BATCH(batch, HCP_SURFACE_STATE | (3 - 2));
- OUT_BCS_BATCH(batch,
- ((i + 2) << 28) | /* surface id */
- (obj_surface->width - 1)); /* pitch - 1 */
- OUT_BCS_BATCH(batch,
- (((obj_surface->fourcc == VA_FOURCC_P010) ? SURFACE_FORMAT_P010: SURFACE_FORMAT_PLANAR_420_8) << 28) |
- obj_surface->y_cb_offset);
- ADVANCE_BCS_BATCH(batch);
- }else
- {
- BEGIN_BCS_BATCH(batch, 3);
-
- OUT_BCS_BATCH(batch, HCP_SURFACE_STATE | (3 - 2));
- OUT_BCS_BATCH(batch,
- ((i + 2) << 28) | /* surface id */
- (tmp_obj_surface->width - 1)); /* pitch - 1 */
- OUT_BCS_BATCH(batch,
- (((tmp_obj_surface->fourcc == VA_FOURCC_P010) ? SURFACE_FORMAT_P010: SURFACE_FORMAT_PLANAR_420_8) << 28) |
- tmp_obj_surface->y_cb_offset);
- ADVANCE_BCS_BATCH(batch);
- }
- }
-}
-
-static void
-gen9_hcpd_vp9_pipe_buf_addr_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch;
- struct object_surface *obj_surface;
- int i=0;
-
- BEGIN_BCS_BATCH(batch, 95);
-
- OUT_BCS_BATCH(batch, HCP_PIPE_BUF_ADDR_STATE | (95 - 2));
-
- obj_surface = decode_state->render_object;
- assert(obj_surface && obj_surface->bo);
-
- OUT_BUFFER_MA_TARGET(obj_surface->bo); /* DW 1..3 */
- OUT_BUFFER_MA_TARGET(gen9_hcpd_context->deblocking_filter_line_buffer.bo);/* DW 4..6 */
- OUT_BUFFER_MA_TARGET(gen9_hcpd_context->deblocking_filter_tile_line_buffer.bo); /* DW 7..9 */
- OUT_BUFFER_MA_TARGET(gen9_hcpd_context->deblocking_filter_tile_column_buffer.bo); /* DW 10..12 */
- OUT_BUFFER_MA_TARGET(gen9_hcpd_context->metadata_line_buffer.bo); /* DW 13..15 */
- OUT_BUFFER_MA_TARGET(gen9_hcpd_context->metadata_tile_line_buffer.bo); /* DW 16..18 */
- OUT_BUFFER_MA_TARGET(gen9_hcpd_context->metadata_tile_column_buffer.bo); /* DW 19..21 */
- OUT_BUFFER_MA_TARGET(NULL); /* DW 22..24, ignore for VP9 */
- OUT_BUFFER_MA_TARGET(NULL); /* DW 25..27, ignore for VP9 */
- OUT_BUFFER_MA_TARGET(NULL); /* DW 28..30, ignore for VP9 */
- OUT_BUFFER_MA_TARGET(gen9_hcpd_context->vp9_mv_temporal_buffer_curr.bo); /* DW 31..33 */
-
- OUT_BUFFER_MA_TARGET(NULL); /* DW 34..36, reserved */
-
- /* DW 37..52 - Reference picture address */
- for (i = 0; i < 3; i++)
- {
- obj_surface = gen9_hcpd_context->reference_surfaces[i].obj_surface;
-
- if (obj_surface)
- {
- OUT_BUFFER_NMA_REFERENCE(obj_surface->bo);
- }
- else
- OUT_BUFFER_NMA_REFERENCE(NULL);
- }
- for (; i < ARRAY_ELEMS(gen9_hcpd_context->reference_surfaces); i++)
- {
- OUT_BUFFER_NMA_REFERENCE(NULL);
- }
- OUT_BCS_BATCH(batch, 0); /* DW 53, memory address attributes */
-
- OUT_BUFFER_MA_REFERENCE(NULL); /* DW 54..56, ignore for decoding mode */
- OUT_BUFFER_MA_TARGET(NULL); /* DW 57..59, StreamOutEnable - used for transcoding */
- OUT_BUFFER_MA_TARGET(NULL); /* DW 60..62, DecodedPictureStatusError, ignored */
- OUT_BUFFER_MA_TARGET(NULL); /* DW 63..65, Ignored */
-
- /* DW 66..81 - for 8 Collocated motion vectors */
- for (i = 0; i < 1; i++)
- {
- OUT_BUFFER_NMA_REFERENCE(gen9_hcpd_context->vp9_mv_temporal_buffer_last.bo);
- }
- for (; i < ARRAY_ELEMS(gen9_hcpd_context->reference_surfaces); i++)
- {
- OUT_BUFFER_NMA_REFERENCE(NULL);
- }
-
- OUT_BCS_BATCH(batch, 0); /* DW 82, memory address attributes */
-
- OUT_BUFFER_MA_TARGET(gen9_hcpd_context->vp9_probability_buffer.bo); /* DW 83..85, VP9 Probability bufffer */
- OUT_BUFFER_MA_TARGET(gen9_hcpd_context->vp9_segment_id_buffer.bo); /* DW 86..88, VP9 Segment ID buffer */
- OUT_BUFFER_MA_TARGET(gen9_hcpd_context->hvd_line_rowstore_buffer.bo);/* DW 89..91, VP9 HVD Line Rowstore buffer */
- OUT_BUFFER_MA_TARGET(gen9_hcpd_context->hvd_tile_rowstore_buffer.bo);/* DW 92..94, VP9 HVD Tile Rowstore buffer */
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static inline int
-gen9_hcpd_vp9_valid_ref_frame_size(int ref_width, int ref_height,
- int cur_width, int cur_height) {
- return 2 * cur_width >= ref_width &&
- 2 * cur_height >= ref_height &&
- cur_width <= 16 * ref_width &&
- cur_height <= 16 * ref_height;
-}
-static void
-gen9_hcpd_vp9_pic_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch;
- VADecPictureParameterBufferVP9 *pic_param;
- struct object_surface *obj_surface;
- GenVP9Surface *gen9_vp9_surface;
- uint16_t scale_h = 0;
- uint16_t scale_w = 0;
- uint16_t frame_width_in_pixel = 0;
- uint16_t frame_height_in_pixel = 0;
- uint16_t fwidth = 64;
- uint16_t fheight = 64;
- int i;
- int bit_depth_minus8 = 0;
-
-#define LEN_COMMAND_OWN 12
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VADecPictureParameterBufferVP9 *)decode_state->pic_param->buffer;
-
- uint8_t segmentIDStreamInEnable = 0;
- uint8_t segmentIDStreamOutEnable = (pic_param->pic_fields.bits.segmentation_enabled && pic_param->pic_fields.bits.segmentation_update_map);
-
- // For KEY_FRAME or INTRA_ONLY frame, this bit should be set to "0".
- uint8_t segmentation_temporal_update =
- ((pic_param->pic_fields.bits.frame_type == HCP_VP9_KEY_FRAME) || (pic_param->pic_fields.bits.intra_only)) ? 0 : pic_param->pic_fields.bits.segmentation_temporal_update;
-
-
- if(pic_param->pic_fields.bits.intra_only || (pic_param->pic_fields.bits.frame_type == HCP_VP9_KEY_FRAME))
- {
- segmentIDStreamInEnable = 1;
- }else if(pic_param->pic_fields.bits.segmentation_enabled)
- {
- if(!pic_param->pic_fields.bits.segmentation_update_map)
- {
- segmentIDStreamInEnable = 1;
-
- }else if( pic_param->pic_fields.bits.segmentation_temporal_update)
- {
- segmentIDStreamInEnable = 1;
- }
- }
-
- if(pic_param->pic_fields.bits.error_resilient_mode)
- {
- segmentIDStreamInEnable = 1;
- }
-
- //frame type of previous frame (Key or Non-Key Frame).
- uint8_t last_frame_type = gen9_hcpd_context->last_frame.frame_type;
-
- uint8_t use_pre_frame_mvs = 0;
- use_pre_frame_mvs = !((pic_param->pic_fields.bits.error_resilient_mode) ||
- (pic_param->frame_width != gen9_hcpd_context->last_frame.frame_width) ||
- (pic_param->frame_height != gen9_hcpd_context->last_frame.frame_height) ||
- (pic_param->pic_fields.bits.intra_only) ||
- (pic_param->pic_fields.bits.frame_type == HCP_VP9_KEY_FRAME)||
- (gen9_hcpd_context->last_frame.intra_only)||
- (last_frame_type == HCP_VP9_KEY_FRAME) ||
- (!gen9_hcpd_context->last_frame.show_frame));
-
- uint8_t adapt_probabilities_flag = 0;
- if((pic_param->pic_fields.bits.error_resilient_mode || pic_param->pic_fields.bits.frame_parallel_decoding_mode))
- adapt_probabilities_flag = 0; //0: Do not adapt (error resilient or frame_parallel_mode are set)
- else if(!(pic_param->pic_fields.bits.error_resilient_mode) && !(pic_param->pic_fields.bits.frame_parallel_decoding_mode))
- adapt_probabilities_flag = 1; //1: Adapt (not error resilient and not frame_ parallel_mode)
-
- frame_width_in_pixel = (gen9_hcpd_context->picture_width_in_min_cb_minus1 + 1) * gen9_hcpd_context->min_cb_size ;
- frame_height_in_pixel = (gen9_hcpd_context->picture_height_in_min_cb_minus1 + 1) * gen9_hcpd_context->min_cb_size ;
-
- fwidth = (fwidth > frame_width_in_pixel)?frame_width_in_pixel:fwidth;
- fheight = (fheight > frame_height_in_pixel)?frame_height_in_pixel:fheight;
-
- if(pic_param->profile >= 2)
- {
- if(pic_param->bit_depth >= 8)
- bit_depth_minus8 = pic_param->bit_depth - 8;
- }
-
- BEGIN_BCS_BATCH(batch, LEN_COMMAND_OWN);
-
- OUT_BCS_BATCH(batch, HCP_VP9_PIC_STATE | (LEN_COMMAND_OWN - 2));
-
- OUT_BCS_BATCH(batch,
- (frame_height_in_pixel - 1) << 16 |
- (frame_width_in_pixel - 1)); /* DW 1 */
- OUT_BCS_BATCH(batch,
- segmentIDStreamInEnable << 31 |
- segmentIDStreamOutEnable << 30 |
- pic_param->pic_fields.bits.lossless_flag << 29 |
- segmentation_temporal_update << 28 |
- pic_param->pic_fields.bits.segmentation_update_map << 27 |
- pic_param->pic_fields.bits.segmentation_enabled << 26 |
- pic_param->sharpness_level << 23 |
- pic_param->filter_level << 17 |
- pic_param->pic_fields.bits.frame_parallel_decoding_mode << 16 |
- pic_param->pic_fields.bits.error_resilient_mode << 15 |
- pic_param->pic_fields.bits.refresh_frame_context << 14 |
- last_frame_type << 13 |
- 0 << 12 | /* tx select mode */
- 0 << 11 | /* Hybrid Prediction Mode */
- use_pre_frame_mvs << 10 |
- pic_param->pic_fields.bits.alt_ref_frame_sign_bias << 9 |
- pic_param->pic_fields.bits.golden_ref_frame_sign_bias << 8 |
- pic_param->pic_fields.bits.last_ref_frame_sign_bias << 7 |
- pic_param->pic_fields.bits.mcomp_filter_type << 4 |
- pic_param->pic_fields.bits.allow_high_precision_mv << 3 |
- pic_param->pic_fields.bits.intra_only <<2 |
- adapt_probabilities_flag << 1 |
- pic_param->pic_fields.bits.frame_type <<0); /* DW 2 */
- OUT_BCS_BATCH(batch,
- pic_param->profile << 28 |
- bit_depth_minus8 << 24 |
- 0 << 22 | /* only support 4:2:0 */
- pic_param->log2_tile_rows << 8 |
- pic_param->log2_tile_columns <<0); /* DW 3 */
- // resolution change case
-
- // DW4-DW6
- for(i = 0; i < 3; i++)
- {
- obj_surface = gen9_hcpd_context->reference_surfaces[i].obj_surface;
- gen9_vp9_surface = NULL;
- scale_w = 0;
- scale_h = 0;
- if (obj_surface && obj_surface->private_data)
- {
- gen9_vp9_surface = obj_surface->private_data;
- if(!gen9_hcpd_vp9_valid_ref_frame_size(gen9_vp9_surface->frame_width,gen9_vp9_surface->frame_height,pic_param->frame_width,pic_param->frame_height))
- {
- scale_w = -1;
- scale_h = -1;
- }else
- {
- scale_w = (gen9_vp9_surface->frame_width << 14) /pic_param->frame_width ;
- scale_h = (gen9_vp9_surface->frame_height << 14) /pic_param->frame_height ;
- }
- OUT_BCS_BATCH(batch,
- scale_w<<16 |
- scale_h);
- }else
- {
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- // DW7-DW9
- for(i = 0; i < 3; i++)
- {
- obj_surface = gen9_hcpd_context->reference_surfaces[i].obj_surface;
- gen9_vp9_surface = NULL;
-
- if (obj_surface && obj_surface->private_data)
- {
- gen9_vp9_surface = obj_surface->private_data;
- OUT_BCS_BATCH(batch,
- ((gen9_vp9_surface->frame_height- 1)&0x3fff)<<16 |
- ((gen9_vp9_surface->frame_width - 1)&0x3fff));
- }else
- {
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- OUT_BCS_BATCH(batch,
- pic_param->first_partition_size << 16 |
- pic_param->frame_header_length_in_bytes <<0); /* DW 10 */
- OUT_BCS_BATCH(batch,
- (0 << 3) |
- (0 << 2) |
- (1 << 1) |
- (0 << 0)); /* DW 11, ignored */
- //Rest of the DWs are not valid for BXT
- for(i = 12; i < LEN_COMMAND_OWN; i++)
- {
- OUT_BCS_BATCH(batch, 0);
- }
-
- ADVANCE_BCS_BATCH(batch);
-
-}
-
-static void
-gen9_hcpd_vp9_segment_state(VADriverContextP ctx,
- VADecPictureParameterBufferVP9 *pic_param,
- VASegmentParameterVP9 *seg_param, uint8_t seg_id,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch;
-
- int segment_ref = seg_param->segment_flags.fields.segment_reference;
-
- if((pic_param->pic_fields.bits.frame_type == HCP_VP9_KEY_FRAME)
- || (pic_param->pic_fields.bits.intra_only))
- segment_ref = 0;
-
- BEGIN_BCS_BATCH(batch, 7);
-
- OUT_BCS_BATCH(batch, HCP_VP9_SEGMENT_STATE | (7 - 2));
- OUT_BCS_BATCH(batch, seg_id << 0); /* DW 1 - SegmentID */
- OUT_BCS_BATCH(batch,
- seg_param->segment_flags.fields.segment_reference_enabled << 3 |
- segment_ref << 1 |
- seg_param->segment_flags.fields.segment_reference_skipped <<0 ); /* DW 2 */
- if(pic_param->filter_level)
- {
- OUT_BCS_BATCH(batch,
- seg_param->filter_level[1][1] << 24 | //FilterLevelRef1Mode1
- seg_param->filter_level[1][0] << 16 | //FilterLevelRef1Mode0
- seg_param->filter_level[0][1] << 8 | //FilterLevelRef0Mode1
- seg_param->filter_level[0][0] << 0 ); //FilterLevelRef0Mode0 /* DW 3 */
- OUT_BCS_BATCH(batch,
- seg_param->filter_level[3][1] << 24 | //FilterLevelRef3Mode1
- seg_param->filter_level[3][0] << 16 | //FilterLevelRef3Mode0
- seg_param->filter_level[2][1] << 8 | //FilterLevelRef2Mode1
- seg_param->filter_level[2][0] << 0 ); //FilterLevelRef2Mode0 /* DW 4 */
- }else
- {
- OUT_BCS_BATCH(batch,
- 0 ); /* DW 3 */
- OUT_BCS_BATCH(batch,
- 0 ); /* DW 4 */
- }
- OUT_BCS_BATCH(batch,
- seg_param->luma_ac_quant_scale << 16 |
- seg_param->luma_dc_quant_scale << 0 ); /* DW 5 */
- OUT_BCS_BATCH(batch,
- seg_param->chroma_ac_quant_scale << 16 |
- seg_param->chroma_dc_quant_scale << 0 ); /* DW 6 */
-
- ADVANCE_BCS_BATCH(batch);
-
-}
-
-static void
-gen9_hcpd_vp9_bsd_object(VADriverContextP ctx,
- VADecPictureParameterBufferVP9 *pic_param,
- VASliceParameterBufferVP9 *slice_param,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch;
- int slice_data_size = slice_param->slice_data_size - pic_param->frame_header_length_in_bytes;
- int slice_data_offset = slice_param->slice_data_offset + pic_param->frame_header_length_in_bytes;
-
- BEGIN_BCS_BATCH(batch, 3);
-
- OUT_BCS_BATCH(batch, HCP_BSD_OBJECT | (3 - 2));
-
- OUT_BCS_BATCH(batch, slice_data_size );
- OUT_BCS_BATCH(batch, slice_data_offset);
-
- ADVANCE_BCS_BATCH(batch);
-
-}
-
-static VAStatus
-gen9_hcpd_vp9_decode_picture(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch;
- VADecPictureParameterBufferVP9 *pic_param;
- VASliceParameterBufferVP9 *slice_param;
- dri_bo *slice_data_bo;
- dri_bo *tmp_bo;
- uint16_t tmp;
- int i = 0, num_segments=0;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- assert(decode_state->slice_params && decode_state->slice_params[0]->buffer);
- slice_param = (VASliceParameterBufferVP9 *)decode_state->slice_params[0]->buffer;
- pic_param = (VADecPictureParameterBufferVP9 *)decode_state->pic_param->buffer;
-
- if(slice_param->slice_data_size == 1)
- {
- goto out;
- }
-
- vaStatus = gen9_hcpd_vp9_decode_init(ctx, decode_state, gen9_hcpd_context);
-
- if (vaStatus != VA_STATUS_SUCCESS)
- goto out;
-
- //Update segment id buffer if needed
- vp9_update_segmentId_buffer(ctx, decode_state, gen9_hcpd_context);
- //Update mv buffer if needed
- vp9_update_mv_temporal_buffer(ctx, decode_state, gen9_hcpd_context);
- //Update probability buffer if needed
- vp9_update_probabilities(ctx, decode_state, gen9_hcpd_context);
-
- if (i965->intel.has_bsd2)
- intel_batchbuffer_start_atomic_bcs_override(batch, 0x1000, BSD_RING0);
- else
- intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
-
- gen9_hcpd_pipe_mode_select(ctx, decode_state, HCP_CODEC_VP9, gen9_hcpd_context);
- //Not sure what the surface id value should be: Gold? ALtRef? PrevRef? or Just RefPic?
- gen9_hcpd_vp9_surface_state(ctx, decode_state, gen9_hcpd_context);
-
- //Only one VASliceParameterBufferVP9 should be sent per frame
- slice_data_bo = decode_state->slice_datas[0]->bo;
-
- gen9_hcpd_ind_obj_base_addr_state(ctx, slice_data_bo, gen9_hcpd_context);
-
- gen9_hcpd_vp9_pipe_buf_addr_state(ctx, decode_state, gen9_hcpd_context);
- //If segmentation is disabled, only SegParam[0] is valid,
- //all others should be populated with 0
- if(!pic_param->pic_fields.bits.segmentation_enabled)
- num_segments = 1;
- else //If segmentation is enabled, all 8 entries should be valid.
- num_segments = 8;
-
- for(i=0; i<num_segments; i++) {
- VASegmentParameterVP9 seg_param = slice_param->seg_param[i];
- gen9_hcpd_vp9_segment_state(ctx, pic_param, &seg_param, i, gen9_hcpd_context);
- }
-
- gen9_hcpd_vp9_pic_state(ctx, decode_state, gen9_hcpd_context);
-
- gen9_hcpd_vp9_bsd_object(ctx, pic_param, slice_param, gen9_hcpd_context);
-
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-
- // keep track of the last frame status
- gen9_hcpd_context->last_frame.frame_width = pic_param->frame_width;
- gen9_hcpd_context->last_frame.frame_height = pic_param->frame_height;
- gen9_hcpd_context->last_frame.show_frame = pic_param->pic_fields.bits.show_frame;
- gen9_hcpd_context->last_frame.frame_type = pic_param->pic_fields.bits.frame_type;
- gen9_hcpd_context->last_frame.refresh_frame_context = pic_param->pic_fields.bits.refresh_frame_context;
- gen9_hcpd_context->last_frame.frame_context_idx = pic_param->pic_fields.bits.frame_context_idx;
- gen9_hcpd_context->last_frame.intra_only = pic_param->pic_fields.bits.intra_only;
-
- // switch mv buffer
- if(pic_param->pic_fields.bits.frame_type != HCP_VP9_KEY_FRAME)
- {
- tmp_bo = gen9_hcpd_context->vp9_mv_temporal_buffer_last.bo;
- gen9_hcpd_context->vp9_mv_temporal_buffer_last.bo = gen9_hcpd_context->vp9_mv_temporal_buffer_curr.bo;
- gen9_hcpd_context->vp9_mv_temporal_buffer_curr.bo = tmp_bo;
-
- tmp = gen9_hcpd_context->vp9_mv_temporal_buffer_last.frame_width;
- gen9_hcpd_context->vp9_mv_temporal_buffer_last.frame_width = gen9_hcpd_context->vp9_mv_temporal_buffer_curr.frame_width;
- gen9_hcpd_context->vp9_mv_temporal_buffer_curr.frame_width = tmp;
-
- tmp = gen9_hcpd_context->vp9_mv_temporal_buffer_last.frame_height;
- gen9_hcpd_context->vp9_mv_temporal_buffer_last.frame_height = gen9_hcpd_context->vp9_mv_temporal_buffer_curr.frame_height;
- gen9_hcpd_context->vp9_mv_temporal_buffer_curr.frame_height = tmp;
-
-
- }
- //update vp9_frame_ctx according to frame_context_id
- if (pic_param->pic_fields.bits.refresh_frame_context)
- {
- void *pfc = (void *)&gen9_hcpd_context->vp9_frame_ctx[pic_param->pic_fields.bits.frame_context_idx];
- void *pprob = NULL;
-
- //update vp9_fc to frame_context
- dri_bo_map(gen9_hcpd_context->vp9_probability_buffer.bo,1);
- pprob = (void *)gen9_hcpd_context->vp9_probability_buffer.bo->virtual;
- if(pic_param->pic_fields.bits.frame_type == HCP_VP9_KEY_FRAME||
- pic_param->pic_fields.bits.intra_only)
- memcpy(pfc, pprob, VP9_PROB_BUFFER_FIRST_PART_SIZE - VP9_PROB_BUFFER_KEY_INTER_SIZE);
- else
- memcpy(pfc, pprob, VP9_PROB_BUFFER_FIRST_PART_SIZE);
-
- dri_bo_unmap(gen9_hcpd_context->vp9_probability_buffer.bo);
- }
-
-out:
- return vaStatus;
-}
-
-
-static VAStatus
-gen9_hcpd_decode_picture(VADriverContextP ctx,
- VAProfile profile,
- union codec_state *codec_state,
- struct hw_context *hw_context)
-{
- struct gen9_hcpd_context *gen9_hcpd_context = (struct gen9_hcpd_context *)hw_context;
- struct decode_state *decode_state = &codec_state->decode;
- VAStatus vaStatus;
-
- assert(gen9_hcpd_context);
-
- vaStatus = intel_decoder_sanity_check_input(ctx, profile, decode_state);
-
- if (vaStatus != VA_STATUS_SUCCESS)
- goto out;
-
- switch (profile) {
- case VAProfileHEVCMain:
- case VAProfileHEVCMain10:
- vaStatus = gen9_hcpd_hevc_decode_picture(ctx, decode_state, gen9_hcpd_context);
- break;
- case VAProfileVP9Profile0:
- case VAProfileVP9Profile2:
- vaStatus = gen9_hcpd_vp9_decode_picture(ctx, decode_state, gen9_hcpd_context);
- break;
-
- default:
- /* should never get here 1!! */
- assert(0);
- break;
- }
-
-out:
- return vaStatus;
-}
-
-static void
-gen9_hcpd_context_destroy(void *hw_context)
-{
- struct gen9_hcpd_context *gen9_hcpd_context = (struct gen9_hcpd_context *)hw_context;
-
- FREE_GEN_BUFFER((&gen9_hcpd_context->deblocking_filter_line_buffer));
- FREE_GEN_BUFFER((&gen9_hcpd_context->deblocking_filter_tile_line_buffer));
- FREE_GEN_BUFFER((&gen9_hcpd_context->deblocking_filter_tile_column_buffer));
- FREE_GEN_BUFFER((&gen9_hcpd_context->metadata_line_buffer));
- FREE_GEN_BUFFER((&gen9_hcpd_context->metadata_tile_line_buffer));
- FREE_GEN_BUFFER((&gen9_hcpd_context->metadata_tile_column_buffer));
- FREE_GEN_BUFFER((&gen9_hcpd_context->sao_line_buffer));
- FREE_GEN_BUFFER((&gen9_hcpd_context->sao_tile_line_buffer));
- FREE_GEN_BUFFER((&gen9_hcpd_context->sao_tile_column_buffer));
- FREE_GEN_BUFFER((&gen9_hcpd_context->hvd_line_rowstore_buffer));
- FREE_GEN_BUFFER((&gen9_hcpd_context->hvd_tile_rowstore_buffer));
- FREE_GEN_BUFFER((&gen9_hcpd_context->vp9_probability_buffer));
- FREE_GEN_BUFFER((&gen9_hcpd_context->vp9_segment_id_buffer));
- dri_bo_unreference(gen9_hcpd_context->vp9_mv_temporal_buffer_curr.bo);
- dri_bo_unreference(gen9_hcpd_context->vp9_mv_temporal_buffer_last.bo);
-
- intel_batchbuffer_free(gen9_hcpd_context->base.batch);
- free(gen9_hcpd_context);
-}
-
-static void
-gen9_hcpd_hevc_context_init(VADriverContextP ctx,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
- hevc_gen_default_iq_matrix(&gen9_hcpd_context->iq_matrix_hevc);
-}
-
-static void
-gen9_hcpd_vp9_context_init(VADriverContextP ctx,
- struct gen9_hcpd_context *gen9_hcpd_context)
-{
-
- gen9_hcpd_context->last_frame.frame_height = 0;
- gen9_hcpd_context->last_frame.show_frame = 0;
- gen9_hcpd_context->last_frame.frame_type = 0;
- gen9_hcpd_context->last_frame.refresh_frame_context = 0;
- gen9_hcpd_context->last_frame.frame_context_idx = 0;
- gen9_hcpd_context->last_frame.intra_only = 0;
- gen9_hcpd_context->last_frame.prob_buffer_saved_flag = 0;
- gen9_hcpd_context->last_frame.prob_buffer_restored_flag = 0;
-
- //Super block in VP9 is 64x64
- gen9_hcpd_context->ctb_size = 64;
- gen9_hcpd_context->min_cb_size = 8; //Min block size is 8
-
- vp9_gen_default_probabilities(ctx, gen9_hcpd_context);
-}
-
-static struct hw_context *
-gen9_hcpd_context_init(VADriverContextP ctx, struct object_config *object_config)
-{
- struct intel_driver_data *intel = intel_driver_data(ctx);
- struct gen9_hcpd_context *gen9_hcpd_context = calloc(1, sizeof(struct gen9_hcpd_context));
- int i;
-
- if (!gen9_hcpd_context)
- return NULL;
-
- gen9_hcpd_context->base.destroy = gen9_hcpd_context_destroy;
- gen9_hcpd_context->base.run = gen9_hcpd_decode_picture;
- gen9_hcpd_context->base.batch = intel_batchbuffer_new(intel, I915_EXEC_VEBOX, 0);
-
- for (i = 0; i < ARRAY_ELEMS(gen9_hcpd_context->reference_surfaces); i++) {
- gen9_hcpd_context->reference_surfaces[i].surface_id = VA_INVALID_ID;
- gen9_hcpd_context->reference_surfaces[i].frame_store_id = -1;
- gen9_hcpd_context->reference_surfaces[i].obj_surface = NULL;
- }
-
- switch (object_config->profile) {
- case VAProfileHEVCMain:
- case VAProfileHEVCMain10:
- gen9_hcpd_hevc_context_init(ctx, gen9_hcpd_context);
- break;
- case VAProfileVP9Profile0:
- case VAProfileVP9Profile2:
- gen9_hcpd_vp9_context_init(ctx, gen9_hcpd_context);
- break;
-
- default:
- break;
- }
-
- return (struct hw_context *)gen9_hcpd_context;
-}
-
-struct hw_context *
-gen9_dec_hw_context_init(VADriverContextP ctx, struct object_config *obj_config)
-{
- if (obj_config->profile == VAProfileHEVCMain ||
- obj_config->profile == VAProfileHEVCMain10 ||
- obj_config->profile == VAProfileVP9Profile0 ||
- obj_config->profile == VAProfileVP9Profile2) {
- return gen9_hcpd_context_init(ctx, obj_config);
- } else {
- return gen8_dec_hw_context_init(ctx, obj_config);
- }
-}
-
-void gen9_max_resolution(struct i965_driver_data *i965,
- struct object_config *obj_config,
- int *w, /* out */
- int *h) /* out */
-{
- if (obj_config->profile == VAProfileJPEGBaseline) {
- *w = 8192;
- *h = 8192;
- } else {
- *w = i965->codec_info->max_width;
- *h = i965->codec_info->max_height;
- }
-}
diff --git a/src/gen9_mfd.h b/src/gen9_mfd.h
deleted file mode 100644
index b335408..0000000
--- a/src/gen9_mfd.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-
-#ifndef GEN9_MFD_H
-#define GEN9_MFD_H
-
-#include <xf86drm.h>
-#include <drm.h>
-#include <i915_drm.h>
-#include <intel_bufmgr.h>
-#include "i965_decoder.h"
-#include "vp9_probs.h"
-
-struct hw_context;
-
-typedef struct vp9_frame_status
-{
- uint16_t frame_width;
- uint16_t frame_height;
- uint8_t frame_type;
- uint8_t show_frame;
- uint8_t refresh_frame_context;
- uint8_t frame_context_idx;
- uint8_t intra_only;
- uint8_t prob_buffer_saved_flag;
- uint8_t prob_buffer_restored_flag;
-}vp9_last_frame_status;
-
-typedef struct vp9_mv_temporal_buffer
-{
- dri_bo *bo;
- uint16_t frame_width;
- uint16_t frame_height;
-}VP9_MV_BUFFER;
-
-struct gen9_hcpd_context
-{
- struct hw_context base;
-
- GenFrameStoreContext fs_ctx;
-
- GenFrameStore reference_surfaces[MAX_GEN_HCP_REFERENCE_FRAMES];
-
- VAIQMatrixBufferHEVC iq_matrix_hevc;
-
- uint16_t picture_width_in_pixels;
- uint16_t picture_height_in_pixels;
- uint16_t picture_width_in_ctbs;
- uint16_t picture_height_in_ctbs;
- uint16_t picture_width_in_min_cb_minus1;
- uint16_t picture_height_in_min_cb_minus1;
- uint8_t ctb_size;
- uint8_t min_cb_size;
-
- GenBuffer deblocking_filter_line_buffer;
- GenBuffer deblocking_filter_tile_line_buffer;
- GenBuffer deblocking_filter_tile_column_buffer;
- GenBuffer metadata_line_buffer;
- GenBuffer metadata_tile_line_buffer;
- GenBuffer metadata_tile_column_buffer;
- GenBuffer sao_line_buffer;
- GenBuffer sao_tile_line_buffer;
- GenBuffer sao_tile_column_buffer;
- GenBuffer hvd_line_rowstore_buffer;
- GenBuffer hvd_tile_rowstore_buffer;
- GenBuffer vp9_probability_buffer;
- GenBuffer vp9_segment_id_buffer;
- VP9_MV_BUFFER vp9_mv_temporal_buffer_curr;
- VP9_MV_BUFFER vp9_mv_temporal_buffer_last;
-
- unsigned short first_inter_slice_collocated_ref_idx;
- unsigned short first_inter_slice_collocated_from_l0_flag;
- int first_inter_slice_valid;
-
- vp9_last_frame_status last_frame;
- FRAME_CONTEXT vp9_frame_ctx[FRAME_CONTEXTS];
- FRAME_CONTEXT vp9_fc_inter_default;
- FRAME_CONTEXT vp9_fc_key_default;
-};
-
-#endif /* GEN9_MFD_H */
diff --git a/src/gen9_post_processing.c b/src/gen9_post_processing.c
deleted file mode 100644
index 88d092b..0000000
--- a/src/gen9_post_processing.c
+++ /dev/null
@@ -1,1183 +0,0 @@
-/*
- * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-#include "i965_defines.h"
-#include "i965_structs.h"
-#include "i965_drv_video.h"
-#include "i965_post_processing.h"
-#include "i965_render.h"
-#include "intel_media.h"
-
-#include "gen8_post_processing.h"
-#include "gen75_picture_process.h"
-#include "intel_gen_vppapi.h"
-#include "intel_common_vpp_internal.h"
-
-static const uint32_t pp_null_gen9[][4] = {
-};
-
-static const uint32_t pp_nv12_load_save_nv12_gen9[][4] = {
-#include "shaders/post_processing/gen9/pl2_to_pl2.g9b"
-};
-
-static const uint32_t pp_nv12_load_save_pl3_gen9[][4] = {
-#include "shaders/post_processing/gen9/pl2_to_pl3.g9b"
-};
-
-static const uint32_t pp_pl3_load_save_nv12_gen9[][4] = {
-#include "shaders/post_processing/gen9/pl3_to_pl2.g9b"
-};
-
-static const uint32_t pp_pl3_load_save_pl3_gen9[][4] = {
-#include "shaders/post_processing/gen9/pl3_to_pl3.g9b"
-};
-
-static const uint32_t pp_nv12_scaling_gen9[][4] = {
-#include "shaders/post_processing/gen9/pl2_to_pl2.g9b"
-};
-
-static const uint32_t pp_nv12_avs_gen9[][4] = {
-#include "shaders/post_processing/gen9/pl2_to_pl2.g9b"
-};
-
-static const uint32_t pp_nv12_dndi_gen9[][4] = {
-};
-
-static const uint32_t pp_nv12_dn_gen9[][4] = {
-};
-
-static const uint32_t pp_nv12_load_save_pa_gen9[][4] = {
-#include "shaders/post_processing/gen9/pl2_to_pa.g9b"
-};
-
-static const uint32_t pp_pl3_load_save_pa_gen9[][4] = {
-#include "shaders/post_processing/gen9/pl3_to_pa.g9b"
-};
-
-static const uint32_t pp_pa_load_save_nv12_gen9[][4] = {
-#include "shaders/post_processing/gen9/pa_to_pl2.g9b"
-};
-
-static const uint32_t pp_pa_load_save_pl3_gen9[][4] = {
-#include "shaders/post_processing/gen9/pa_to_pl3.g9b"
-};
-
-static const uint32_t pp_pa_load_save_pa_gen9[][4] = {
-#include "shaders/post_processing/gen9/pa_to_pa.g9b"
-};
-
-static const uint32_t pp_rgbx_load_save_nv12_gen9[][4] = {
-#include "shaders/post_processing/gen9/rgbx_to_nv12.g9b"
-};
-
-static const uint32_t pp_nv12_load_save_rgbx_gen9[][4] = {
-#include "shaders/post_processing/gen9/pl2_to_rgbx.g9b"
-};
-
-static const uint32_t pp_nv12_blending_gen9[][4] = {
-};
-
-#define MAX_SCALING_SURFACES 16
-
-#define DEFAULT_MOCS 0x02
-
-static const uint32_t pp_10bit_scaling_gen9[][4] = {
-#include "shaders/post_processing/gen9/conv_p010.g9b"
-};
-
-static const uint32_t pp_yuv420p8_scaling_gen9[][4] = {
-#include "shaders/post_processing/gen9/conv_nv12.g9b"
-};
-
-static struct pp_module pp_modules_gen9[] = {
- {
- {
- "NULL module (for testing)",
- PP_NULL,
- pp_null_gen9,
- sizeof(pp_null_gen9),
- NULL,
- },
-
- pp_null_initialize,
- },
-
- {
- {
- "NV12_NV12",
- PP_NV12_LOAD_SAVE_N12,
- pp_nv12_load_save_nv12_gen9,
- sizeof(pp_nv12_load_save_nv12_gen9),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "NV12_PL3",
- PP_NV12_LOAD_SAVE_PL3,
- pp_nv12_load_save_pl3_gen9,
- sizeof(pp_nv12_load_save_pl3_gen9),
- NULL,
- },
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "PL3_NV12",
- PP_PL3_LOAD_SAVE_N12,
- pp_pl3_load_save_nv12_gen9,
- sizeof(pp_pl3_load_save_nv12_gen9),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "PL3_PL3",
- PP_PL3_LOAD_SAVE_PL3,
- pp_pl3_load_save_pl3_gen9,
- sizeof(pp_pl3_load_save_pl3_gen9),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "NV12 Scaling module",
- PP_NV12_SCALING,
- pp_nv12_scaling_gen9,
- sizeof(pp_nv12_scaling_gen9),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "NV12 AVS module",
- PP_NV12_AVS,
- pp_nv12_avs_gen9,
- sizeof(pp_nv12_avs_gen9),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "NV12 DNDI module",
- PP_NV12_DNDI,
- pp_nv12_dndi_gen9,
- sizeof(pp_nv12_dndi_gen9),
- NULL,
- },
-
- pp_null_initialize,
- },
-
- {
- {
- "NV12 DN module",
- PP_NV12_DN,
- pp_nv12_dn_gen9,
- sizeof(pp_nv12_dn_gen9),
- NULL,
- },
-
- pp_null_initialize,
- },
- {
- {
- "NV12_PA module",
- PP_NV12_LOAD_SAVE_PA,
- pp_nv12_load_save_pa_gen9,
- sizeof(pp_nv12_load_save_pa_gen9),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "PL3_PA module",
- PP_PL3_LOAD_SAVE_PA,
- pp_pl3_load_save_pa_gen9,
- sizeof(pp_pl3_load_save_pa_gen9),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "PA_NV12 module",
- PP_PA_LOAD_SAVE_NV12,
- pp_pa_load_save_nv12_gen9,
- sizeof(pp_pa_load_save_nv12_gen9),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "PA_PL3 module",
- PP_PA_LOAD_SAVE_PL3,
- pp_pa_load_save_pl3_gen9,
- sizeof(pp_pa_load_save_pl3_gen9),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "PA_PA module",
- PP_PA_LOAD_SAVE_PA,
- pp_pa_load_save_pa_gen9,
- sizeof(pp_pa_load_save_pa_gen9),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "RGBX_NV12 module",
- PP_RGBX_LOAD_SAVE_NV12,
- pp_rgbx_load_save_nv12_gen9,
- sizeof(pp_rgbx_load_save_nv12_gen9),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-
- {
- {
- "NV12_RGBX module",
- PP_NV12_LOAD_SAVE_RGBX,
- pp_nv12_load_save_rgbx_gen9,
- sizeof(pp_nv12_load_save_rgbx_gen9),
- NULL,
- },
-
- gen8_pp_plx_avs_initialize,
- },
-};
-
-static const AVSConfig gen9_avs_config = {
- .coeff_frac_bits = 6,
- .coeff_epsilon = 1.0f / (1U << 6),
- .num_phases = 31,
- .num_luma_coeffs = 8,
- .num_chroma_coeffs = 4,
-
- .coeff_range = {
- .lower_bound = {
- .y_k_h = { -2, -2, -2, -2, -2, -2, -2, -2 },
- .y_k_v = { -2, -2, -2, -2, -2, -2, -2, -2 },
- .uv_k_h = { -2, -2, -2, -2 },
- .uv_k_v = { -2, -2, -2, -2 },
- },
- .upper_bound = {
- .y_k_h = { 2, 2, 2, 2, 2, 2, 2, 2 },
- .y_k_v = { 2, 2, 2, 2, 2, 2, 2, 2 },
- .uv_k_h = { 2, 2, 2, 2 },
- .uv_k_v = { 2, 2, 2, 2 },
- },
- },
-};
-
-static void
-gen9_pp_pipeline_select(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
-
- BEGIN_BATCH(batch, 1);
- OUT_BATCH(batch,
- CMD_PIPELINE_SELECT |
- PIPELINE_SELECT_MEDIA |
- GEN9_FORCE_MEDIA_AWAKE_ON |
- GEN9_MEDIA_DOP_GATE_OFF |
- GEN9_PIPELINE_SELECTION_MASK |
- GEN9_MEDIA_DOP_GATE_MASK |
- GEN9_FORCE_MEDIA_AWAKE_MASK);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen9_pp_state_base_address(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
-
- BEGIN_BATCH(batch, 19);
- OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | (19 - 2));
- /* DW1 Generate state address */
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /* DW4-5 Surface state address */
- OUT_RELOC64(batch, pp_context->surface_state_binding_table.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY); /* Surface state base address */
- /* DW6-7 Dynamic state address */
- OUT_RELOC64(batch, pp_context->dynamic_state.bo, I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_SAMPLER,
- 0, 0 | BASE_ADDRESS_MODIFY);
-
- /* DW8. Indirect object address */
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0);
-
- /* DW10-11 Instruction base address */
- OUT_RELOC64(batch, pp_context->instruction_state.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY);
-
- OUT_BATCH(batch, 0xFFFF0000 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0xFFFF0000 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0xFFFF0000 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0xFFFF0000 | BASE_ADDRESS_MODIFY);
-
- /* Bindless surface state base address */
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0xfffff000);
-
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen9_pp_end_pipeline(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
-
- BEGIN_BATCH(batch, 1);
- OUT_BATCH(batch,
- CMD_PIPELINE_SELECT |
- PIPELINE_SELECT_MEDIA |
- GEN9_FORCE_MEDIA_AWAKE_OFF |
- GEN9_MEDIA_DOP_GATE_ON |
- GEN9_PIPELINE_SELECTION_MASK |
- GEN9_MEDIA_DOP_GATE_MASK |
- GEN9_FORCE_MEDIA_AWAKE_MASK);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen9_pp_pipeline_setup(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- gen9_pp_pipeline_select(ctx, pp_context);
- gen9_pp_state_base_address(ctx, pp_context);
- gen8_pp_vfe_state(ctx, pp_context);
- gen8_pp_curbe_load(ctx, pp_context);
- gen8_interface_descriptor_load(ctx, pp_context);
- gen8_pp_object_walker(ctx, pp_context);
- gen9_pp_end_pipeline(ctx, pp_context);
- intel_batchbuffer_end_atomic(batch);
-}
-
-static VAStatus
-gen9_post_processing(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- int pp_index,
- void * filter_param)
-{
- VAStatus va_status;
-
- va_status = gen8_pp_initialize(ctx, pp_context,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect,
- pp_index,
- filter_param);
-
- if (va_status == VA_STATUS_SUCCESS) {
- gen8_pp_states_setup(ctx, pp_context);
- gen9_pp_pipeline_setup(ctx, pp_context);
- }
-
- return va_status;
-}
-
-static void
-gen9_vpp_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->sampler.bo, 1);
-
- if (gpe_context->sampler.bo->virtual == NULL)
- return;
-
- assert(gpe_context->sampler.bo->virtual);
-
- sampler_state = (struct gen8_sampler_state *)
- (gpe_context->sampler.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->sampler.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.entry_size = ALIGN(sizeof(struct gen8_interface_descriptor_data), 64);
- gpe_context->idrt.max_entries = 1;
- gpe_context->sampler.entry_size = ALIGN(sizeof(struct gen8_sampler_state), 64);
- gpe_context->sampler.max_entries = 1;
- gpe_context->curbe.length = ALIGN(sizeof(struct scaling_input_parameter), 64);
-
- 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.eu_total > 0) {
- gpe_context->vfe_state.max_num_threads = i965->intel.eu_total * 6;
- } else {
- 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;
-
- /* initialize the YUV420 8-Bit scaling context. The below is supported.
- * NV12 ->NV12
- * NV12 ->I420
- * I420 ->I420
- * I420 ->NV12
- */
- gpe_context = &pp_context->scaling_yuv420p8_context;
- memset(&scaling_kernel, 0, sizeof(scaling_kernel));
- scaling_kernel.bin = pp_yuv420p8_scaling_gen9;
- scaling_kernel.size = sizeof(pp_yuv420p8_scaling_gen9);
- gen8_gpe_load_kernels(ctx, gpe_context, &scaling_kernel, 1);
- gpe_context->idrt.entry_size = ALIGN(sizeof(struct gen8_interface_descriptor_data), 64);
- gpe_context->idrt.max_entries = 1;
- gpe_context->sampler.entry_size = ALIGN(sizeof(struct gen8_sampler_state), 64);
- gpe_context->sampler.max_entries = 1;
- gpe_context->curbe.length = ALIGN(sizeof(struct scaling_input_parameter), 32);
-
- 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.eu_total > 0) {
- gpe_context->vfe_state.max_num_threads = i965->intel.eu_total * 6;
- } else {
- 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_8bit_initialized = VPPGPE_8BIT_420;
- 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_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);
- gen8_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 = i965_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 */
-
- i965_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 || fourcc == VA_FOURCC_NV12) {
- 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/I420 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 || fourcc == VA_FOURCC_NV12) {
- 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/I420 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_vpp_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;
-}
-
-static void
-gen9_gpe_context_yuv420p8_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 = i965_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_NV12) {
- scaling_curbe->dw7.src_packed = 1;
- }
-
- fourcc = pp_get_surface_fourcc(ctx, dst_surface);
-
- if (fourcc == VA_FOURCC_NV12) {
- scaling_curbe->dw7.dst_packed = 1;
- }
-
- i965_gpe_context_unmap_curbe(gpe_context);
-}
-
-static void
-gen9_gpe_context_yuv420p8_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_R8_UNORM,
- bti, 0);
- if (fourcc == VA_FOURCC_NV12) {
- gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
- bo_offset[1],
- width[1], height[1],
- pitch[1], 0,
- I965_SURFACEFORMAT_R8G8_UNORM,
- bti + 1, 0);
- } else {
- gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
- bo_offset[1],
- width[1], height[1],
- pitch[1], 0,
- I965_SURFACEFORMAT_R8_UNORM,
- bti + 1, 0);
-
- gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
- bo_offset[2],
- width[2], height[2],
- pitch[2], 0,
- I965_SURFACEFORMAT_R8_UNORM,
- bti + 2, 0);
- }
- }
-
- 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_R8_UINT,
- bti, 0);
- if (fourcc == VA_FOURCC_NV12) {
- 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, 0);
- } else {
- gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
- bo_offset[1],
- width[1], height[1],
- pitch[1], 1,
- I965_SURFACEFORMAT_R8_UINT,
- bti + 1, 0);
-
- gen9_add_dri_buffer_2d_gpe_surface(ctx, gpe_context, bo,
- bo_offset[2],
- width[2], height[2],
- pitch[2], 1,
- I965_SURFACEFORMAT_R8_UINT,
- bti + 2, 0);
- }
- }
-
- return;
-}
-
-VAStatus
-gen9_yuv420p8_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_8bit_initialized & VPPGPE_8BIT_420))
- return VA_STATUS_ERROR_UNIMPLEMENTED;
-
- gpe_context = &pp_context->scaling_yuv420p8_context;
-
- gen8_gpe_context_init(ctx, gpe_context);
- gen9_vpp_scaling_sample_state(ctx, gpe_context, src_rect, dst_rect);
- gen9_gpe_reset_binding_table(ctx, gpe_context);
- gen9_gpe_context_yuv420p8_scaling_curbe(ctx, gpe_context,
- src_rect, src_surface,
- dst_rect, dst_surface);
-
- gen9_gpe_context_yuv420p8_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/gen9_render.c b/src/gen9_render.c
deleted file mode 100644
index 4c24443..0000000
--- a/src/gen9_render.c
+++ /dev/null
@@ -1,1842 +0,0 @@
-/*
- * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Eric Anholt <eric@anholt.net>
- * Keith Packard <keithp@keithp.com>
- * Xiang Haihao <haihao.xiang@intel.com>
- * Zhao Yakui <yakui.zhao@intel.com>
- *
- */
-
-/*
- * Most of rendering codes are ported from xf86-video-intel/src/i965_video.c
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <math.h>
-
-#include <va/va_drmcommon.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "i965_structs.h"
-#include "i965_yuv_coefs.h"
-
-#include "i965_render.h"
-
-/* Programs for Gen8 */
-static const uint32_t sf_kernel_static_gen9[][4] ={
-
-};
-static const uint32_t ps_kernel_static_gen9[][4] = {
-#include "shaders/render/exa_wm_src_affine.g9b"
-#include "shaders/render/exa_wm_src_sample_planar.g9b"
-#include "shaders/render/exa_wm_yuv_color_balance.g9b"
-#include "shaders/render/exa_wm_yuv_rgb.g9b"
-#include "shaders/render/exa_wm_write.g9b"
-};
-
-static const uint32_t ps_subpic_kernel_static_gen9[][4] = {
-#include "shaders/render/exa_wm_src_affine.g9b"
-#include "shaders/render/exa_wm_src_sample_argb.g9b"
-#include "shaders/render/exa_wm_write.g9b"
-};
-
-
-#define SURFACE_STATE_PADDED_SIZE SURFACE_STATE_PADDED_SIZE_GEN8
-
-#define SURFACE_STATE_OFFSET(index) (SURFACE_STATE_PADDED_SIZE * index)
-#define BINDING_TABLE_OFFSET SURFACE_STATE_OFFSET(MAX_RENDER_SURFACES)
-
-enum {
- SF_KERNEL = 0,
- PS_KERNEL,
- PS_SUBPIC_KERNEL
-};
-
-static struct i965_kernel render_kernels_gen9[] = {
- {
- "SF",
- SF_KERNEL,
- sf_kernel_static_gen9,
- sizeof(sf_kernel_static_gen9),
- NULL
- },
- {
- "PS",
- PS_KERNEL,
- ps_kernel_static_gen9,
- sizeof(ps_kernel_static_gen9),
- NULL
- },
-
- {
- "PS_SUBPIC",
- PS_SUBPIC_KERNEL,
- ps_subpic_kernel_static_gen9,
- sizeof(ps_subpic_kernel_static_gen9),
- NULL
- }
-};
-
-#define URB_VS_ENTRIES 8
-#define URB_VS_ENTRY_SIZE 1
-
-#define URB_GS_ENTRIES 0
-#define URB_GS_ENTRY_SIZE 0
-
-#define URB_CLIP_ENTRIES 0
-#define URB_CLIP_ENTRY_SIZE 0
-
-#define URB_SF_ENTRIES 1
-#define URB_SF_ENTRY_SIZE 2
-
-#define URB_CS_ENTRIES 4
-#define URB_CS_ENTRY_SIZE 4
-
-static void
-gen9_render_set_surface_tiling(struct gen8_surface_state *ss, uint32_t tiling)
-{
- switch (tiling) {
- case I915_TILING_NONE:
- ss->ss0.tiled_surface = 0;
- ss->ss0.tile_walk = 0;
- break;
- case I915_TILING_X:
- ss->ss0.tiled_surface = 1;
- ss->ss0.tile_walk = I965_TILEWALK_XMAJOR;
- break;
- case I915_TILING_Y:
- ss->ss0.tiled_surface = 1;
- ss->ss0.tile_walk = I965_TILEWALK_YMAJOR;
- break;
- }
-}
-
-/* Set "Shader Channel Select" for GEN9+ */
-static void
-gen9_render_set_surface_scs(struct gen8_surface_state *ss)
-{
- ss->ss7.shader_chanel_select_r = HSW_SCS_RED;
- ss->ss7.shader_chanel_select_g = HSW_SCS_GREEN;
- ss->ss7.shader_chanel_select_b = HSW_SCS_BLUE;
- ss->ss7.shader_chanel_select_a = HSW_SCS_ALPHA;
-}
-
-static void
-gen9_render_set_surface_state(
- struct gen8_surface_state *ss,
- dri_bo *bo,
- unsigned long offset,
- int width,
- int height,
- int pitch,
- int format,
- unsigned int flags
-)
-{
- unsigned int tiling;
- unsigned int swizzle;
-
- memset(ss, 0, sizeof(*ss));
-
- switch (flags & (VA_TOP_FIELD|VA_BOTTOM_FIELD)) {
- case VA_BOTTOM_FIELD:
- ss->ss0.vert_line_stride_ofs = 1;
- /* fall-through */
- case VA_TOP_FIELD:
- ss->ss0.vert_line_stride = 1;
- height /= 2;
- break;
- }
-
- ss->ss0.surface_type = I965_SURFACE_2D;
- ss->ss0.surface_format = format;
-
- ss->ss8.base_addr = bo->offset + offset;
-
- ss->ss2.width = width - 1;
- ss->ss2.height = height - 1;
-
- ss->ss3.pitch = pitch - 1;
-
- /* Always set 1(align 4 mode) per B-spec */
- ss->ss0.vertical_alignment = 1;
- ss->ss0.horizontal_alignment = 1;
-
- dri_bo_get_tiling(bo, &tiling, &swizzle);
- gen9_render_set_surface_tiling(ss, tiling);
-}
-
-static void
-gen9_render_src_surface_state(
- VADriverContextP ctx,
- int index,
- dri_bo *region,
- unsigned long offset,
- int w,
- int h,
- int pitch,
- int format,
- unsigned int flags
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- void *ss;
- dri_bo *ss_bo = render_state->wm.surface_state_binding_table_bo;
-
- assert(index < MAX_RENDER_SURFACES);
-
- dri_bo_map(ss_bo, 1);
- assert(ss_bo->virtual);
- ss = (char *)ss_bo->virtual + SURFACE_STATE_OFFSET(index);
-
- gen9_render_set_surface_state(ss,
- region, offset,
- w, h,
- pitch, format, flags);
- gen9_render_set_surface_scs(ss);
- dri_bo_emit_reloc(ss_bo,
- I915_GEM_DOMAIN_SAMPLER, 0,
- offset,
- SURFACE_STATE_OFFSET(index) + offsetof(struct gen8_surface_state, ss8),
- region);
-
- ((unsigned int *)((char *)ss_bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
- dri_bo_unmap(ss_bo);
- render_state->wm.sampler_count++;
-}
-
-static void
-gen9_render_src_surfaces_state(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- unsigned int flags
-)
-{
- int region_pitch;
- int rw, rh;
- dri_bo *region;
-
- region_pitch = obj_surface->width;
- rw = obj_surface->orig_width;
- rh = obj_surface->orig_height;
- region = obj_surface->bo;
-
- if (obj_surface->fourcc == VA_FOURCC('P', '0', '1', '0')) {
- gen9_render_src_surface_state(ctx, 1, region, 0, rw, rh, region_pitch, I965_SURFACEFORMAT_R16_UNORM, flags); /* Y */
- gen9_render_src_surface_state(ctx, 2, region, 0, rw, rh, region_pitch, I965_SURFACEFORMAT_R16_UNORM, flags);
- gen9_render_src_surface_state(ctx, 3, region,
- region_pitch * obj_surface->y_cb_offset,
- obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
- I965_SURFACEFORMAT_R16G16_UNORM, flags); /* UV */
- gen9_render_src_surface_state(ctx, 4, region,
- region_pitch * obj_surface->y_cb_offset,
- obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
- I965_SURFACEFORMAT_R16G16_UNORM, flags);
- } else {
- gen9_render_src_surface_state(ctx, 1, region, 0, rw, rh, region_pitch, I965_SURFACEFORMAT_R8_UNORM, flags); /* Y */
- gen9_render_src_surface_state(ctx, 2, region, 0, rw, rh, region_pitch, I965_SURFACEFORMAT_R8_UNORM, flags);
-
- if (obj_surface->fourcc == VA_FOURCC('N', 'V', '1', '2')) {
- gen9_render_src_surface_state(ctx, 3, region,
- region_pitch * obj_surface->y_cb_offset,
- obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
- I965_SURFACEFORMAT_R8G8_UNORM, flags); /* UV */
- gen9_render_src_surface_state(ctx, 4, region,
- region_pitch * obj_surface->y_cb_offset,
- obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
- I965_SURFACEFORMAT_R8G8_UNORM, flags);
- } else {
- gen9_render_src_surface_state(ctx, 3, region,
- region_pitch * obj_surface->y_cb_offset,
- obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
- I965_SURFACEFORMAT_R8_UNORM, flags); /* U */
- gen9_render_src_surface_state(ctx, 4, region,
- region_pitch * obj_surface->y_cb_offset,
- obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
- I965_SURFACEFORMAT_R8_UNORM, flags);
- gen9_render_src_surface_state(ctx, 5, region,
- region_pitch * obj_surface->y_cr_offset,
- obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
- I965_SURFACEFORMAT_R8_UNORM, flags); /* V */
- gen9_render_src_surface_state(ctx, 6, region,
- region_pitch * obj_surface->y_cr_offset,
- obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
- I965_SURFACEFORMAT_R8_UNORM, flags);
- }
- }
-}
-
-static void
-gen9_subpic_render_src_surfaces_state(VADriverContextP ctx,
- struct object_surface *obj_surface)
-{
- dri_bo *subpic_region;
- unsigned int index = obj_surface->subpic_render_idx;
- struct object_subpic *obj_subpic = obj_surface->obj_subpic[index];
- struct object_image *obj_image = obj_subpic->obj_image;
-
- assert(obj_surface);
- assert(obj_surface->bo);
- subpic_region = obj_image->bo;
- /*subpicture surface*/
- gen9_render_src_surface_state(ctx, 1, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->pitch, obj_subpic->format, 0);
- gen9_render_src_surface_state(ctx, 2, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->pitch, obj_subpic->format, 0);
-}
-
-static void
-gen9_render_dest_surface_state(VADriverContextP ctx, int index)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct intel_region *dest_region = render_state->draw_region;
- void *ss;
- dri_bo *ss_bo = render_state->wm.surface_state_binding_table_bo;
- int format;
- assert(index < MAX_RENDER_SURFACES);
-
- if (dest_region->cpp == 2) {
- format = I965_SURFACEFORMAT_B5G6R5_UNORM;
- } else {
- format = I965_SURFACEFORMAT_B8G8R8A8_UNORM;
- }
-
- dri_bo_map(ss_bo, 1);
- assert(ss_bo->virtual);
- ss = (char *)ss_bo->virtual + SURFACE_STATE_OFFSET(index);
-
- gen9_render_set_surface_state(ss,
- dest_region->bo, 0,
- dest_region->width, dest_region->height,
- dest_region->pitch, format, 0);
- gen9_render_set_surface_scs(ss);
- dri_bo_emit_reloc(ss_bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- 0,
- SURFACE_STATE_OFFSET(index) + offsetof(struct gen8_surface_state, ss8),
- dest_region->bo);
-
- ((unsigned int *)((char *)ss_bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
- dri_bo_unmap(ss_bo);
-}
-
-static void
-i965_fill_vertex_buffer(
- VADriverContextP ctx,
- float tex_coords[4], /* [(u1,v1);(u2,v2)] */
- float vid_coords[4] /* [(x1,y1);(x2,y2)] */
-)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- float vb[12];
-
- enum { X1, Y1, X2, Y2 };
-
- static const unsigned int g_rotation_indices[][6] = {
- [VA_ROTATION_NONE] = { X2, Y2, X1, Y2, X1, Y1 },
- [VA_ROTATION_90] = { X2, Y1, X2, Y2, X1, Y2 },
- [VA_ROTATION_180] = { X1, Y1, X2, Y1, X2, Y2 },
- [VA_ROTATION_270] = { X1, Y2, X1, Y1, X2, Y1 },
- };
-
- const unsigned int * const rotation_indices =
- g_rotation_indices[i965->rotation_attrib->value];
-
- vb[0] = tex_coords[rotation_indices[0]]; /* bottom-right corner */
- vb[1] = tex_coords[rotation_indices[1]];
- vb[2] = vid_coords[X2];
- vb[3] = vid_coords[Y2];
-
- vb[4] = tex_coords[rotation_indices[2]]; /* bottom-left corner */
- vb[5] = tex_coords[rotation_indices[3]];
- vb[6] = vid_coords[X1];
- vb[7] = vid_coords[Y2];
-
- vb[8] = tex_coords[rotation_indices[4]]; /* top-left corner */
- vb[9] = tex_coords[rotation_indices[5]];
- vb[10] = vid_coords[X1];
- vb[11] = vid_coords[Y1];
-
- dri_bo_subdata(i965->render_state.vb.vertex_buffer, 0, sizeof(vb), vb);
-}
-
-static void
-i965_subpic_render_upload_vertex(VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *output_rect)
-{
- unsigned int index = obj_surface->subpic_render_idx;
- struct object_subpic *obj_subpic = obj_surface->obj_subpic[index];
- float tex_coords[4], vid_coords[4];
- VARectangle dst_rect;
-
- if (obj_subpic->flags & VA_SUBPICTURE_DESTINATION_IS_SCREEN_COORD)
- dst_rect = obj_subpic->dst_rect;
- else {
- const float sx = (float)output_rect->width / obj_surface->orig_width;
- const float sy = (float)output_rect->height / obj_surface->orig_height;
- dst_rect.x = output_rect->x + sx * obj_subpic->dst_rect.x;
- dst_rect.y = output_rect->y + sy * obj_subpic->dst_rect.y;
- dst_rect.width = sx * obj_subpic->dst_rect.width;
- dst_rect.height = sy * obj_subpic->dst_rect.height;
- }
-
- tex_coords[0] = (float)obj_subpic->src_rect.x / obj_subpic->width;
- tex_coords[1] = (float)obj_subpic->src_rect.y / obj_subpic->height;
- tex_coords[2] = (float)(obj_subpic->src_rect.x + obj_subpic->src_rect.width) / obj_subpic->width;
- tex_coords[3] = (float)(obj_subpic->src_rect.y + obj_subpic->src_rect.height) / obj_subpic->height;
-
- vid_coords[0] = dst_rect.x;
- vid_coords[1] = dst_rect.y;
- vid_coords[2] = (float)(dst_rect.x + dst_rect.width);
- vid_coords[3] = (float)(dst_rect.y + dst_rect.height);
-
- i965_fill_vertex_buffer(ctx, tex_coords, vid_coords);
-}
-
-static void
-i965_render_upload_vertex(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct intel_region *dest_region = render_state->draw_region;
- float tex_coords[4], vid_coords[4];
- int width, height;
-
- width = obj_surface->orig_width;
- height = obj_surface->orig_height;
-
- tex_coords[0] = (float)src_rect->x / width;
- tex_coords[1] = (float)src_rect->y / height;
- tex_coords[2] = (float)(src_rect->x + src_rect->width) / width;
- tex_coords[3] = (float)(src_rect->y + src_rect->height) / height;
-
- vid_coords[0] = dest_region->x + dst_rect->x;
- vid_coords[1] = dest_region->y + dst_rect->y;
- vid_coords[2] = vid_coords[0] + dst_rect->width;
- vid_coords[3] = vid_coords[1] + dst_rect->height;
-
- i965_fill_vertex_buffer(ctx, tex_coords, vid_coords);
-}
-
-static void
-i965_render_drawing_rectangle(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
- struct intel_region *dest_region = render_state->draw_region;
-
- BEGIN_BATCH(batch, 4);
- OUT_BATCH(batch, CMD_DRAWING_RECTANGLE | 2);
- OUT_BATCH(batch, 0x00000000);
- OUT_BATCH(batch, (dest_region->width - 1) | (dest_region->height - 1) << 16);
- OUT_BATCH(batch, 0x00000000);
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_render_upload_image_palette(
- VADriverContextP ctx,
- struct object_image *obj_image,
- unsigned int alpha
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- unsigned int i;
-
- assert(obj_image);
-
- if (!obj_image)
- return;
-
- if (obj_image->image.num_palette_entries == 0)
- return;
-
- BEGIN_BATCH(batch, 1 + obj_image->image.num_palette_entries);
- OUT_BATCH(batch, CMD_SAMPLER_PALETTE_LOAD | (obj_image->image.num_palette_entries - 1));
- /*fill palette*/
- //int32_t out[16]; //0-23:color 23-31:alpha
- for (i = 0; i < obj_image->image.num_palette_entries; i++)
- OUT_BATCH(batch, (alpha << 24) | obj_image->palette[i]);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen9_clear_dest_region(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
- struct intel_region *dest_region = render_state->draw_region;
- unsigned int blt_cmd, br13;
- int pitch;
-
- blt_cmd = GEN8_XY_COLOR_BLT_CMD;
- br13 = 0xf0 << 16;
- pitch = dest_region->pitch;
-
- if (dest_region->cpp == 4) {
- br13 |= BR13_8888;
- blt_cmd |= (XY_COLOR_BLT_WRITE_RGB | XY_COLOR_BLT_WRITE_ALPHA);
- } else {
- assert(dest_region->cpp == 2);
- br13 |= BR13_565;
- }
-
- if (dest_region->tiling != I915_TILING_NONE) {
- blt_cmd |= XY_COLOR_BLT_DST_TILED;
- pitch /= 4;
- }
-
- br13 |= pitch;
-
- intel_batchbuffer_start_atomic_blt(batch, 24);
- BEGIN_BLT_BATCH(batch, 7);
-
- OUT_BATCH(batch, blt_cmd);
- OUT_BATCH(batch, br13);
- OUT_BATCH(batch, (dest_region->y << 16) | (dest_region->x));
- OUT_BATCH(batch, ((dest_region->y + dest_region->height) << 16) |
- (dest_region->x + dest_region->width));
- OUT_RELOC(batch, dest_region->bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- 0);
- OUT_BATCH(batch, 0x0);
- OUT_BATCH(batch, 0x0);
- ADVANCE_BATCH(batch);
- intel_batchbuffer_end_atomic(batch);
-}
-
-
-/*
- * for GEN8
- */
-#define ALIGNMENT 64
-
-static void
-gen9_render_initialize(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- dri_bo *bo;
- int size;
- unsigned int end_offset;
-
- /* VERTEX BUFFER */
- dri_bo_unreference(render_state->vb.vertex_buffer);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "vertex buffer",
- 4096,
- 4096);
- assert(bo);
- render_state->vb.vertex_buffer = bo;
-
- /* WM */
- dri_bo_unreference(render_state->wm.surface_state_binding_table_bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "surface state & binding table",
- (SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_RENDER_SURFACES,
- 4096);
- assert(bo);
- render_state->wm.surface_state_binding_table_bo = bo;
-
- render_state->curbe_size = 256;
-
- render_state->wm.sampler_count = 0;
-
- render_state->sampler_size = MAX_SAMPLERS * sizeof(struct gen8_sampler_state);
-
- render_state->cc_state_size = sizeof(struct gen6_color_calc_state);
-
- render_state->cc_viewport_size = sizeof(struct i965_cc_viewport);
-
- render_state->blend_state_size = sizeof(struct gen8_global_blend_state) +
- 16 * sizeof(struct gen8_blend_state_rt);
-
- render_state->sf_clip_size = 1024;
-
- render_state->scissor_size = 1024;
-
- size = ALIGN(render_state->curbe_size, ALIGNMENT) +
- ALIGN(render_state->sampler_size, ALIGNMENT) +
- ALIGN(render_state->cc_viewport_size, ALIGNMENT) +
- ALIGN(render_state->cc_state_size, ALIGNMENT) +
- ALIGN(render_state->blend_state_size, ALIGNMENT) +
- ALIGN(render_state->sf_clip_size, ALIGNMENT) +
- ALIGN(render_state->scissor_size, ALIGNMENT);
-
- dri_bo_unreference(render_state->dynamic_state.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "dynamic_state",
- size,
- 4096);
-
- render_state->dynamic_state.bo = bo;
-
- end_offset = 0;
- render_state->dynamic_state.end_offset = 0;
-
- /* Constant buffer offset */
- render_state->curbe_offset = end_offset;
- end_offset += ALIGN(render_state->curbe_size, ALIGNMENT);
-
- /* Sampler_state */
- render_state->sampler_offset = end_offset;
- end_offset += ALIGN(render_state->sampler_size, ALIGNMENT);
-
- /* CC_VIEWPORT_state */
- render_state->cc_viewport_offset = end_offset;
- end_offset += ALIGN(render_state->cc_viewport_size, ALIGNMENT);
-
- /* CC_STATE_state */
- render_state->cc_state_offset = end_offset;
- end_offset += ALIGN(render_state->cc_state_size, ALIGNMENT);
-
- /* Blend_state */
- render_state->blend_state_offset = end_offset;
- end_offset += ALIGN(render_state->blend_state_size, ALIGNMENT);
-
- /* SF_CLIP_state */
- render_state->sf_clip_offset = end_offset;
- end_offset += ALIGN(render_state->sf_clip_size, ALIGNMENT);
-
- /* SCISSOR_state */
- render_state->scissor_offset = end_offset;
- end_offset += ALIGN(render_state->scissor_size, ALIGNMENT);
-
- /* update the end offset of dynamic_state */
- render_state->dynamic_state.end_offset = end_offset;
-
-}
-
-static void
-gen9_render_sampler(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct gen8_sampler_state *sampler_state;
- int i;
- unsigned char *cc_ptr;
-
- assert(render_state->wm.sampler_count > 0);
- assert(render_state->wm.sampler_count <= MAX_SAMPLERS);
-
- dri_bo_map(render_state->dynamic_state.bo, 1);
- assert(render_state->dynamic_state.bo->virtual);
-
- cc_ptr = (unsigned char *) render_state->dynamic_state.bo->virtual +
- render_state->sampler_offset;
-
- sampler_state = (struct gen8_sampler_state *) cc_ptr;
-
- for (i = 0; i < render_state->wm.sampler_count; i++) {
- memset(sampler_state, 0, sizeof(*sampler_state));
- 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;
- sampler_state++;
- }
-
- dri_bo_unmap(render_state->dynamic_state.bo);
-}
-
-static void
-gen9_render_blend_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct gen8_global_blend_state *global_blend_state;
- struct gen8_blend_state_rt *blend_state;
- unsigned char *cc_ptr;
-
- dri_bo_map(render_state->dynamic_state.bo, 1);
- assert(render_state->dynamic_state.bo->virtual);
-
- cc_ptr = (unsigned char *) render_state->dynamic_state.bo->virtual +
- render_state->blend_state_offset;
-
- global_blend_state = (struct gen8_global_blend_state*) cc_ptr;
-
- memset(global_blend_state, 0, render_state->blend_state_size);
- /* Global blend state + blend_state for Render Target */
- blend_state = (struct gen8_blend_state_rt *)(global_blend_state + 1);
- blend_state->blend1.logic_op_enable = 1;
- blend_state->blend1.logic_op_func = 0xc;
- blend_state->blend1.pre_blend_clamp_enable = 1;
-
- dri_bo_unmap(render_state->dynamic_state.bo);
-}
-
-
-static void
-gen9_render_cc_viewport(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct i965_cc_viewport *cc_viewport;
- unsigned char *cc_ptr;
-
- dri_bo_map(render_state->dynamic_state.bo, 1);
- assert(render_state->dynamic_state.bo->virtual);
-
- cc_ptr = (unsigned char *) render_state->dynamic_state.bo->virtual +
- render_state->cc_viewport_offset;
-
- cc_viewport = (struct i965_cc_viewport *) cc_ptr;
-
- memset(cc_viewport, 0, sizeof(*cc_viewport));
-
- cc_viewport->min_depth = -1.e35;
- cc_viewport->max_depth = 1.e35;
-
- dri_bo_unmap(render_state->dynamic_state.bo);
-}
-
-static void
-gen9_render_color_calc_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct gen6_color_calc_state *color_calc_state;
- unsigned char *cc_ptr;
-
- dri_bo_map(render_state->dynamic_state.bo, 1);
- assert(render_state->dynamic_state.bo->virtual);
-
- cc_ptr = (unsigned char *) render_state->dynamic_state.bo->virtual +
- render_state->cc_state_offset;
-
- color_calc_state = (struct gen6_color_calc_state *) cc_ptr;
-
- memset(color_calc_state, 0, sizeof(*color_calc_state));
- color_calc_state->constant_r = 1.0;
- color_calc_state->constant_g = 0.0;
- color_calc_state->constant_b = 1.0;
- color_calc_state->constant_a = 1.0;
- dri_bo_unmap(render_state->dynamic_state.bo);
-}
-
-#define PI 3.1415926
-
-static void
-gen9_render_upload_constants(VADriverContextP ctx,
- struct object_surface *obj_surface,
- unsigned int flags)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- unsigned short *constant_buffer;
- unsigned char *cc_ptr;
- float *color_balance_base;
- float contrast = (float)i965->contrast_attrib->value / DEFAULT_CONTRAST;
- float brightness = (float)i965->brightness_attrib->value / 255; /* YUV is float in the shader */
- float hue = (float)i965->hue_attrib->value / 180 * PI;
- float saturation = (float)i965->saturation_attrib->value / DEFAULT_SATURATION;
- float *yuv_to_rgb;
- unsigned int color_flag;
- const float* yuv_coefs;
- size_t coefs_length;
-
- dri_bo_map(render_state->dynamic_state.bo, 1);
- assert(render_state->dynamic_state.bo->virtual);
-
- cc_ptr = (unsigned char *) render_state->dynamic_state.bo->virtual +
- render_state->curbe_offset;
-
- constant_buffer = (unsigned short *) cc_ptr;
-
- if (obj_surface->subsampling == SUBSAMPLE_YUV400) {
- assert(obj_surface->fourcc == VA_FOURCC('Y', '8', '0', '0'));
-
- *constant_buffer = 2;
- } else {
- if (obj_surface->fourcc == VA_FOURCC('N', 'V', '1', '2') ||
- obj_surface->fourcc == VA_FOURCC('P', '0', '1', '0'))
- *constant_buffer = 1;
- else
- *constant_buffer = 0;
- }
-
- if (i965->contrast_attrib->value == DEFAULT_CONTRAST &&
- i965->brightness_attrib->value == DEFAULT_BRIGHTNESS &&
- i965->hue_attrib->value == DEFAULT_HUE &&
- i965->saturation_attrib->value == DEFAULT_SATURATION)
- constant_buffer[1] = 1; /* skip color balance transformation */
- else
- constant_buffer[1] = 0;
-
- color_balance_base = (float *)constant_buffer + 4;
- *color_balance_base++ = contrast;
- *color_balance_base++ = brightness;
- *color_balance_base++ = cos(hue) * contrast * saturation;
- *color_balance_base++ = sin(hue) * contrast * saturation;
-
- color_flag = flags & VA_SRC_COLOR_MASK;
- yuv_to_rgb = (float *)constant_buffer + 8;
-
- yuv_coefs = i915_color_standard_to_coefs(i915_filter_to_color_standard(color_flag),
- &coefs_length);
- memcpy(yuv_to_rgb, yuv_coefs, coefs_length);
-
- dri_bo_unmap(render_state->dynamic_state.bo);
-}
-
-static void
-gen9_render_setup_states(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect,
- unsigned int flags
-)
-{
- gen9_render_dest_surface_state(ctx, 0);
- gen9_render_src_surfaces_state(ctx, obj_surface, flags);
- gen9_render_sampler(ctx);
- gen9_render_cc_viewport(ctx);
- gen9_render_color_calc_state(ctx);
- gen9_render_blend_state(ctx);
- gen9_render_upload_constants(ctx, obj_surface, flags);
- i965_render_upload_vertex(ctx, obj_surface, src_rect, dst_rect);
-}
-
-static void
-gen9_emit_state_base_address(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- BEGIN_BATCH(batch, 19);
- OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | (19 - 2));
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* General state base address */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /*DW4 */
- OUT_RELOC(batch, render_state->wm.surface_state_binding_table_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY); /* Surface state base address */
- OUT_BATCH(batch, 0);
-
- /*DW6*/
- /* Dynamic state base address */
- OUT_RELOC(batch, render_state->dynamic_state.bo, I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_SAMPLER,
- 0, BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0);
-
- /*DW8*/
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Indirect object base address */
- OUT_BATCH(batch, 0);
-
- /*DW10 */
- /* Instruction base address */
- OUT_RELOC(batch, render_state->instruction_state.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0);
-
- /*DW12 */
- OUT_BATCH(batch, 0xFFFF0000 | BASE_ADDRESS_MODIFY); /* General state upper bound */
- OUT_BATCH(batch, 0xFFFF0000 | BASE_ADDRESS_MODIFY); /* Dynamic state upper bound */
- OUT_BATCH(batch, 0xFFFF0000 | BASE_ADDRESS_MODIFY); /* Indirect object upper bound */
- OUT_BATCH(batch, 0xFFFF0000 | BASE_ADDRESS_MODIFY); /* Instruction access upper bound */
-
- /* the bindless surface state address */
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0xFFFF0000);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen9_emit_cc_state_pointers(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN6_3DSTATE_CC_STATE_POINTERS | (2 - 2));
- OUT_BATCH(batch, (render_state->cc_state_offset + 1));
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_BLEND_STATE_POINTERS | (2 - 2));
- OUT_BATCH(batch, (render_state->blend_state_offset + 1));
- ADVANCE_BATCH(batch);
-
-}
-
-static void
-gen9_emit_vertices(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- BEGIN_BATCH(batch, 5);
- OUT_BATCH(batch, CMD_VERTEX_BUFFERS | (5 - 2));
- OUT_BATCH(batch,
- (0 << GEN8_VB0_BUFFER_INDEX_SHIFT) |
- (0 << GEN8_VB0_MOCS_SHIFT) |
- GEN7_VB0_ADDRESS_MODIFYENABLE |
- ((4 * 4) << VB0_BUFFER_PITCH_SHIFT));
- OUT_RELOC(batch, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 12 * 4);
- ADVANCE_BATCH(batch);
-
- /* Topology in 3D primitive is overrided by VF_TOPOLOGY command */
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN8_3DSTATE_VF_TOPOLOGY | (2 - 2));
- OUT_BATCH(batch,
- _3DPRIM_RECTLIST);
- ADVANCE_BATCH(batch);
-
- OUT_BATCH(batch, GEN7_3DSTATE_VF | (2 - 2));
- OUT_BATCH(batch, 0);
-
- OUT_BATCH(batch, GEN8_3DSTATE_VF_INSTANCING | (3 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
-
- OUT_BATCH(batch, GEN8_3DSTATE_VF_SGVS | (2 - 2));
- OUT_BATCH(batch, 0);
-
- BEGIN_BATCH(batch, 7);
- OUT_BATCH(batch, CMD_3DPRIMITIVE | (7 - 2));
- OUT_BATCH(batch,
- GEN7_3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL);
- OUT_BATCH(batch, 3); /* vertex count per instance */
- OUT_BATCH(batch, 0); /* start vertex offset */
- OUT_BATCH(batch, 1); /* single instance */
- OUT_BATCH(batch, 0); /* start instance location */
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen9_emit_vertex_element_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- int i;
-
- /*
- * The VUE layout
- * dword 0-3: pad (0, 0, 0. 0)
- * dword 4-7: position (x, y, 1.0, 1.0),
- * dword 8-11: texture coordinate 0 (u0, v0, 1.0, 1.0)
- */
-
- /* Set up our vertex elements, sourced from the single vertex buffer. */
- OUT_BATCH(batch, CMD_VERTEX_ELEMENTS | (7 - 2));
-
- /* Element state 0. These are 4 dwords of 0 required for the VUE format.
- * We don't really know or care what they do.
- */
-
- OUT_BATCH(batch, (0 << GEN8_VE0_VERTEX_BUFFER_INDEX_SHIFT) |
- GEN8_VE0_VALID |
- (I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
- (0 << VE0_OFFSET_SHIFT));
- OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_0 << VE1_VFCOMPONENT_0_SHIFT) |
- (I965_VFCOMPONENT_STORE_0 << VE1_VFCOMPONENT_1_SHIFT) |
- (I965_VFCOMPONENT_STORE_0 << VE1_VFCOMPONENT_2_SHIFT) |
- (I965_VFCOMPONENT_STORE_0 << VE1_VFCOMPONENT_3_SHIFT));
-
- /* offset 8: X, Y -> {x, y, 1.0, 1.0} */
- OUT_BATCH(batch, (0 << GEN8_VE0_VERTEX_BUFFER_INDEX_SHIFT) |
- GEN8_VE0_VALID |
- (I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
- (8 << VE0_OFFSET_SHIFT));
- OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
- (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT));
-
- /* offset 0: u,v -> {U, V, 1.0, 1.0} */
- OUT_BATCH(batch, (0 << GEN8_VE0_VERTEX_BUFFER_INDEX_SHIFT) |
- GEN8_VE0_VALID |
- (I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
- (0 << VE0_OFFSET_SHIFT));
- OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
- (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT));
-
- /* Disable instancing for all vertex elements. */
- for (i = 0; i < 3; i++) {
- OUT_BATCH(batch, GEN8_3DSTATE_VF_INSTANCING | (3 - 2));
- OUT_BATCH(batch, i);
- OUT_BATCH(batch, 0);
- }
-}
-
-static void
-gen9_emit_vs_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- /* disable VS constant buffer */
- BEGIN_BATCH(batch, 11);
- OUT_BATCH(batch, GEN6_3DSTATE_CONSTANT_VS | (11 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /* CS Buffer 0 */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /* CS Buffer 1 */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /* CS Buffer 2 */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /* CS Buffer 3 */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 9);
- OUT_BATCH(batch, GEN6_3DSTATE_VS | (9 - 2));
- OUT_BATCH(batch, 0); /* without VS kernel */
- OUT_BATCH(batch, 0);
- /* VS shader dispatch flag */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /* DW6. VS shader GRF and URB buffer definition */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0); /* pass-through */
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_BINDING_TABLE_POINTERS_VS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_SAMPLER_STATE_POINTERS_VS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
-}
-
-/*
- * URB layout on GEN8
- * ----------------------------------------
- * | PS Push Constants (8KB) | VS entries |
- * ----------------------------------------
- */
-static void
-gen9_emit_urb(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- unsigned int num_urb_entries = 64;
-
- /* The minimum urb entries is 64 */
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_VS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_DS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_HS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_GS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- /* Size is 8Kbs and base address is 0Kb */
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_PS | (2 - 2));
- /* Size is 8Kbs and base address is 0Kb */
- OUT_BATCH(batch,
- (0 << GEN8_PUSH_CONSTANT_BUFFER_OFFSET_SHIFT) |
- (8 << GEN8_PUSH_CONSTANT_BUFFER_SIZE_SHIFT));
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_URB_VS | (2 - 2));
- OUT_BATCH(batch,
- (num_urb_entries << GEN7_URB_ENTRY_NUMBER_SHIFT) |
- (4 - 1) << GEN7_URB_ENTRY_SIZE_SHIFT |
- (4 << GEN7_URB_STARTING_ADDRESS_SHIFT));
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_URB_GS | (2 - 2));
- OUT_BATCH(batch,
- (0 << GEN7_URB_ENTRY_SIZE_SHIFT) |
- (5 << GEN7_URB_STARTING_ADDRESS_SHIFT));
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_URB_HS | (2 - 2));
- OUT_BATCH(batch,
- (0 << GEN7_URB_ENTRY_SIZE_SHIFT) |
- (6 << GEN7_URB_STARTING_ADDRESS_SHIFT));
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_URB_DS | (2 - 2));
- OUT_BATCH(batch,
- (0 << GEN7_URB_ENTRY_SIZE_SHIFT) |
- (7 << GEN7_URB_STARTING_ADDRESS_SHIFT));
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen9_emit_bypass_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- /* bypass GS */
- BEGIN_BATCH(batch, 11);
- OUT_BATCH(batch, GEN6_3DSTATE_CONSTANT_GS | (11 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 10);
- OUT_BATCH(batch, GEN6_3DSTATE_GS | (10 - 2));
- /* GS shader address */
- OUT_BATCH(batch, 0); /* without GS kernel */
- OUT_BATCH(batch, 0);
- /* DW3. GS shader dispatch flag */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /* DW6. GS shader GRF and URB offset/length */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0); /* pass-through */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_BINDING_TABLE_POINTERS_GS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_SAMPLER_STATE_POINTERS_GS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- /* disable HS */
- BEGIN_BATCH(batch, 11);
- OUT_BATCH(batch, GEN7_3DSTATE_CONSTANT_HS | (11 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 9);
- OUT_BATCH(batch, GEN7_3DSTATE_HS | (9 - 2));
- OUT_BATCH(batch, 0);
- /*DW2. HS pass-through */
- OUT_BATCH(batch, 0);
- /*DW3. HS shader address */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /*DW5. HS shader flag. URB offset/length and so on */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_BINDING_TABLE_POINTERS_HS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_SAMPLER_STATE_POINTERS_HS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- /* Disable TE */
- BEGIN_BATCH(batch, 4);
- OUT_BATCH(batch, GEN7_3DSTATE_TE | (4 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- /* Disable DS */
- BEGIN_BATCH(batch, 11);
- OUT_BATCH(batch, GEN7_3DSTATE_CONSTANT_DS | (11 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 11);
- OUT_BATCH(batch, GEN7_3DSTATE_DS | (11 - 2));
- /* DW1. DS shader pointer */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /* DW3-5. DS shader dispatch flag.*/
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /* DW6-7. DS shader pass-through, GRF,URB offset/Length,Thread Number*/
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /* DW8. DS shader output URB */
- OUT_BATCH(batch, 0);
-
- /* Dual-patch kernel start pointer */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_BINDING_TABLE_POINTERS_DS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_SAMPLER_STATE_POINTERS_DS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- /* Disable STREAMOUT */
- BEGIN_BATCH(batch, 5);
- OUT_BATCH(batch, GEN7_3DSTATE_STREAMOUT | (5 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen9_emit_invarient_states(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- BEGIN_BATCH(batch, 1);
- OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_3D |
- GEN9_PIPELINE_SELECTION_MASK);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN8_3DSTATE_MULTISAMPLE | (2 - 2));
- OUT_BATCH(batch, GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_CENTER |
- GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_1); /* 1 sample/pixel */
- ADVANCE_BATCH(batch);
-
- /* Update 3D Multisample pattern */
- BEGIN_BATCH(batch, 9);
- OUT_BATCH(batch, GEN8_3DSTATE_SAMPLE_PATTERN | (9 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN6_3DSTATE_SAMPLE_MASK | (2 - 2));
- OUT_BATCH(batch, 1);
- ADVANCE_BATCH(batch);
-
- /* Set system instruction pointer */
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch, CMD_STATE_SIP | 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen9_emit_clip_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- OUT_BATCH(batch, GEN6_3DSTATE_CLIP | (4 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0); /* pass-through */
- OUT_BATCH(batch, 0);
-}
-
-static void
-gen9_emit_sf_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- BEGIN_BATCH(batch, 5);
- OUT_BATCH(batch, GEN8_3DSTATE_RASTER | (5 - 2));
- OUT_BATCH(batch, GEN8_3DSTATE_RASTER_CULL_NONE);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
-
- BEGIN_BATCH(batch, 6);
- OUT_BATCH(batch, GEN7_3DSTATE_SBE | (6 - 2));
- OUT_BATCH(batch,
- (GEN8_SBE_FORCE_URB_ENTRY_READ_LENGTH) |
- (GEN8_SBE_FORCE_URB_ENTRY_READ_OFFSET) |
- (1 << GEN7_SBE_NUM_OUTPUTS_SHIFT) |
- (1 << GEN7_SBE_URB_ENTRY_READ_LENGTH_SHIFT) |
- (1 << GEN8_SBE_URB_ENTRY_READ_OFFSET_SHIFT));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, GEN9_SBE_ACTIVE_COMPONENT_XYZW);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- /* SBE for backend setup */
- BEGIN_BATCH(batch, 11);
- OUT_BATCH(batch, GEN8_3DSTATE_SBE_SWIZ | (11 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 4);
- OUT_BATCH(batch, GEN6_3DSTATE_SF | (4 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 2 << GEN6_3DSTATE_SF_TRIFAN_PROVOKE_SHIFT);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen9_emit_wm_state(VADriverContextP ctx, int kernel)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
- unsigned int num_samples = 0;
- unsigned int max_threads;
-
- max_threads = i965->intel.device_info->max_wm_threads - 2;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN8_3DSTATE_PSEXTRA | (2 - 2));
- OUT_BATCH(batch,
- (GEN8_PSX_PIXEL_SHADER_VALID | GEN8_PSX_ATTRIBUTE_ENABLE));
- ADVANCE_BATCH(batch);
-
- if (kernel == PS_KERNEL) {
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN8_3DSTATE_PSBLEND | (2 - 2));
- OUT_BATCH(batch,
- GEN8_PS_BLEND_HAS_WRITEABLE_RT);
- ADVANCE_BATCH(batch);
- } else if (kernel == PS_SUBPIC_KERNEL) {
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN8_3DSTATE_PSBLEND | (2 - 2));
- OUT_BATCH(batch,
- (GEN8_PS_BLEND_HAS_WRITEABLE_RT |
- GEN8_PS_BLEND_COLOR_BUFFER_BLEND_ENABLE |
- (I965_BLENDFACTOR_SRC_ALPHA << GEN8_PS_BLEND_SRC_ALPHA_BLEND_FACTOR_SHIFT) |
- (I965_BLENDFACTOR_INV_SRC_ALPHA << GEN8_PS_BLEND_DST_ALPHA_BLEND_FACTOR_SHIFT) |
- (I965_BLENDFACTOR_SRC_ALPHA << GEN8_PS_BLEND_SRC_BLEND_FACTOR_SHIFT) |
- (I965_BLENDFACTOR_INV_SRC_ALPHA << GEN8_PS_BLEND_DST_BLEND_FACTOR_SHIFT)));
- ADVANCE_BATCH(batch);
- }
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN6_3DSTATE_WM | (2 - 2));
- OUT_BATCH(batch,
- GEN7_WM_PERSPECTIVE_PIXEL_BARYCENTRIC);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 11);
- OUT_BATCH(batch, GEN6_3DSTATE_CONSTANT_PS | (11 - 2));
- OUT_BATCH(batch, URB_CS_ENTRY_SIZE);
- OUT_BATCH(batch, 0);
- /*DW3-4. Constant buffer 0 */
- OUT_BATCH(batch, render_state->curbe_offset);
- OUT_BATCH(batch, 0);
-
- /*DW5-10. Constant buffer 1-3 */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 12);
- OUT_BATCH(batch, GEN7_3DSTATE_PS | (12 - 2));
- /* PS shader address */
- OUT_BATCH(batch, render_state->render_kernels[kernel].kernel_offset);
-
- OUT_BATCH(batch, 0);
- /* DW3. PS shader flag .Binding table cnt/sample cnt */
- OUT_BATCH(batch,
- (1 << GEN7_PS_SAMPLER_COUNT_SHIFT) |
- (5 << GEN7_PS_BINDING_TABLE_ENTRY_COUNT_SHIFT) |
- GEN7_PS_VECTOR_MASK_ENABLE);
- /* DW4-5. Scatch space */
- OUT_BATCH(batch, 0); /* scratch space base offset */
- OUT_BATCH(batch, 0);
- /* DW6. PS shader threads. */
- OUT_BATCH(batch,
- ((max_threads - 1) << GEN8_PS_MAX_THREADS_SHIFT) | num_samples |
- GEN7_PS_PUSH_CONSTANT_ENABLE |
- GEN7_PS_16_DISPATCH_ENABLE);
- /* DW7. PS shader GRF */
- OUT_BATCH(batch,
- (6 << GEN7_PS_DISPATCH_START_GRF_SHIFT_0));
- OUT_BATCH(batch, 0); /* kernel 1 pointer */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0); /* kernel 2 pointer */
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_BINDING_TABLE_POINTERS_PS | (2 - 2));
- OUT_BATCH(batch, BINDING_TABLE_OFFSET);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen9_emit_depth_buffer_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- BEGIN_BATCH(batch, 8);
- OUT_BATCH(batch, GEN7_3DSTATE_DEPTH_BUFFER | (8 - 2));
- OUT_BATCH(batch,
- (I965_DEPTHFORMAT_D32_FLOAT << 18) |
- (I965_SURFACE_NULL << 29));
- /* DW2-3. Depth Buffer Address */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- /* DW4-7. Surface structure */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- /* Update the Hier Depth buffer */
- BEGIN_BATCH(batch, 5);
- OUT_BATCH(batch, GEN7_3DSTATE_HIER_DEPTH_BUFFER | (5 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- /* Update the stencil buffer */
- BEGIN_BATCH(batch, 5);
- OUT_BATCH(batch, GEN7_3DSTATE_STENCIL_BUFFER | (5 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch, GEN7_3DSTATE_CLEAR_PARAMS | (3 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen9_emit_depth_stencil_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch, GEN8_3DSTATE_WM_DEPTH_STENCIL | (3 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen9_emit_wm_hz_op(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- BEGIN_BATCH(batch, 5);
- OUT_BATCH(batch, GEN8_3DSTATE_WM_HZ_OP | (5 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen9_emit_viewport_state_pointers(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_CC | (2 - 2));
- OUT_BATCH(batch, render_state->cc_viewport_offset);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CL | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen9_emit_sampler_state_pointers(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_SAMPLER_STATE_POINTERS_PS | (2 - 2));
- OUT_BATCH(batch, render_state->sampler_offset);
- ADVANCE_BATCH(batch);
-}
-
-
-static void
-gen9_emit_drawing_rectangle(VADriverContextP ctx)
-{
- i965_render_drawing_rectangle(ctx);
-}
-
-static void
-gen9_render_emit_states(VADriverContextP ctx, int kernel)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- gen9_emit_invarient_states(ctx);
- gen9_emit_state_base_address(ctx);
- gen9_emit_viewport_state_pointers(ctx);
- gen9_emit_urb(ctx);
- gen9_emit_cc_state_pointers(ctx);
- gen9_emit_sampler_state_pointers(ctx);
- gen9_emit_wm_hz_op(ctx);
- gen9_emit_bypass_state(ctx);
- gen9_emit_vs_state(ctx);
- gen9_emit_clip_state(ctx);
- gen9_emit_sf_state(ctx);
- gen9_emit_depth_stencil_state(ctx);
- gen9_emit_wm_state(ctx, kernel);
- gen9_emit_depth_buffer_state(ctx);
- gen9_emit_drawing_rectangle(ctx);
- gen9_emit_vertex_element_state(ctx);
- gen9_emit_vertices(ctx);
- intel_batchbuffer_end_atomic(batch);
-}
-
-static void
-gen9_render_put_surface(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect,
- unsigned int flags
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- gen9_render_initialize(ctx);
- gen9_render_setup_states(ctx, obj_surface, src_rect, dst_rect, flags);
- gen9_clear_dest_region(ctx);
- gen9_render_emit_states(ctx, PS_KERNEL);
- intel_batchbuffer_flush(batch);
-}
-
-static void
-gen9_subpicture_render_blend_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct gen8_global_blend_state *global_blend_state;
- struct gen8_blend_state_rt *blend_state;
- unsigned char *cc_ptr;
-
- dri_bo_map(render_state->dynamic_state.bo, 1);
- assert(render_state->dynamic_state.bo->virtual);
-
- cc_ptr = (unsigned char *) render_state->dynamic_state.bo->virtual +
- render_state->blend_state_offset;
-
- global_blend_state = (struct gen8_global_blend_state*) cc_ptr;
-
- memset(global_blend_state, 0, render_state->blend_state_size);
- /* Global blend state + blend_state for Render Target */
- blend_state = (struct gen8_blend_state_rt *)(global_blend_state + 1);
- blend_state->blend0.color_blend_func = I965_BLENDFUNCTION_ADD;
- blend_state->blend0.dest_blend_factor = I965_BLENDFACTOR_INV_SRC_ALPHA;
- blend_state->blend0.src_blend_factor = I965_BLENDFACTOR_SRC_ALPHA;
- blend_state->blend0.alpha_blend_func = I965_BLENDFUNCTION_ADD;
- blend_state->blend0.ia_dest_blend_factor = I965_BLENDFACTOR_INV_SRC_ALPHA;
- blend_state->blend0.ia_src_blend_factor = I965_BLENDFACTOR_SRC_ALPHA;
- blend_state->blend0.colorbuf_blend = 1;
- blend_state->blend1.post_blend_clamp_enable = 1;
- blend_state->blend1.pre_blend_clamp_enable = 1;
- blend_state->blend1.clamp_range = 0; /* clamp range [0, 1] */
-
- dri_bo_unmap(render_state->dynamic_state.bo);
-}
-
-static void
-gen9_subpic_render_upload_constants(VADriverContextP ctx,
- struct object_surface *obj_surface)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- float *constant_buffer;
- float global_alpha = 1.0;
- unsigned int index = obj_surface->subpic_render_idx;
- struct object_subpic *obj_subpic = obj_surface->obj_subpic[index];
- unsigned char *cc_ptr;
-
- if (obj_subpic->flags & VA_SUBPICTURE_GLOBAL_ALPHA) {
- global_alpha = obj_subpic->global_alpha;
- }
-
-
- dri_bo_map(render_state->dynamic_state.bo, 1);
- assert(render_state->dynamic_state.bo->virtual);
-
- cc_ptr = (unsigned char *) render_state->dynamic_state.bo->virtual +
- render_state->curbe_offset;
-
- constant_buffer = (float *) cc_ptr;
- *constant_buffer = global_alpha;
-
- dri_bo_unmap(render_state->dynamic_state.bo);
-}
-
-static void
-gen9_subpicture_render_setup_states(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect
-)
-{
- gen9_render_dest_surface_state(ctx, 0);
- gen9_subpic_render_src_surfaces_state(ctx, obj_surface);
- gen9_render_sampler(ctx);
- gen9_render_cc_viewport(ctx);
- gen9_render_color_calc_state(ctx);
- gen9_subpicture_render_blend_state(ctx);
- gen9_subpic_render_upload_constants(ctx, obj_surface);
- i965_subpic_render_upload_vertex(ctx, obj_surface, dst_rect);
-}
-
-static void
-gen9_render_put_subpicture(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- unsigned int index = obj_surface->subpic_render_idx;
- struct object_subpic *obj_subpic = obj_surface->obj_subpic[index];
-
- assert(obj_subpic);
- gen9_render_initialize(ctx);
- gen9_subpicture_render_setup_states(ctx, obj_surface, src_rect, dst_rect);
- gen9_render_emit_states(ctx, PS_SUBPIC_KERNEL);
- i965_render_upload_image_palette(ctx, obj_subpic->obj_image, 0xff);
- intel_batchbuffer_flush(batch);
-}
-
-static void
-gen9_render_terminate(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
-
- dri_bo_unreference(render_state->vb.vertex_buffer);
- render_state->vb.vertex_buffer = NULL;
-
- dri_bo_unreference(render_state->wm.surface_state_binding_table_bo);
- render_state->wm.surface_state_binding_table_bo = NULL;
-
- if (render_state->instruction_state.bo) {
- dri_bo_unreference(render_state->instruction_state.bo);
- render_state->instruction_state.bo = NULL;
- }
-
- if (render_state->dynamic_state.bo) {
- dri_bo_unreference(render_state->dynamic_state.bo);
- render_state->dynamic_state.bo = NULL;
- }
-
- if (render_state->indirect_state.bo) {
- dri_bo_unreference(render_state->indirect_state.bo);
- render_state->indirect_state.bo = NULL;
- }
-
- if (render_state->draw_region) {
- dri_bo_unreference(render_state->draw_region->bo);
- free(render_state->draw_region);
- render_state->draw_region = NULL;
- }
-}
-
-bool
-gen9_render_init(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- int i, kernel_size;
- unsigned int kernel_offset, end_offset;
- unsigned char *kernel_ptr;
- struct i965_kernel *kernel;
-
- render_state->render_put_surface = gen9_render_put_surface;
- render_state->render_put_subpicture = gen9_render_put_subpicture;
- render_state->render_terminate = gen9_render_terminate;
-
- memcpy(render_state->render_kernels, render_kernels_gen9,
- sizeof(render_state->render_kernels));
-
- kernel_size = 4096;
-
- for (i = 0; i < NUM_RENDER_KERNEL; i++) {
- kernel = &render_state->render_kernels[i];
-
- if (!kernel->size)
- continue;
-
- kernel_size += ALIGN(kernel->size, ALIGNMENT);
- }
-
- render_state->instruction_state.bo = dri_bo_alloc(i965->intel.bufmgr,
- "kernel shader",
- kernel_size,
- 0x1000);
- if (render_state->instruction_state.bo == NULL) {
- WARN_ONCE("failure to allocate the buffer space for kernel shader\n");
- return false;
- }
-
- assert(render_state->instruction_state.bo);
-
- render_state->instruction_state.bo_size = kernel_size;
- render_state->instruction_state.end_offset = 0;
- end_offset = 0;
-
- dri_bo_map(render_state->instruction_state.bo, 1);
- kernel_ptr = (unsigned char *)(render_state->instruction_state.bo->virtual);
- for (i = 0; i < NUM_RENDER_KERNEL; i++) {
- kernel = &render_state->render_kernels[i];
- kernel_offset = end_offset;
- kernel->kernel_offset = kernel_offset;
-
- if (!kernel->size)
- continue;
-
- memcpy(kernel_ptr + kernel_offset, kernel->bin, kernel->size);
-
- end_offset += ALIGN(kernel->size, ALIGNMENT);
- }
-
- render_state->instruction_state.end_offset = end_offset;
-
- dri_bo_unmap(render_state->instruction_state.bo);
-
- return true;
-}
diff --git a/src/gen9_vdenc.c b/src/gen9_vdenc.c
deleted file mode 100644
index caaa433..0000000
--- a/src/gen9_vdenc.c
+++ /dev/null
@@ -1,3899 +0,0 @@
-/*
- * Copyright © 2015 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <assert.h>
-
-#include "intel_batchbuffer.h"
-#include "i965_defines.h"
-#include "i965_structs.h"
-#include "i965_drv_video.h"
-#include "i965_encoder.h"
-#include "i965_encoder_utils.h"
-#include "intel_media.h"
-#include "gen9_vdenc.h"
-
-extern int
-intel_avc_enc_slice_type_fixup(int slice_type);
-
-static const uint8_t buf_rate_adj_tab_i_lowdelay[72] = {
- 0, 0, -8, -12, -16, -20, -28, -36,
- 0, 0, -4, -8, -12, -16, -24, -32,
- 4, 2, 0, -1, -3, -8, -16, -24,
- 8, 4, 2, 0, -1, -4, -8, -16,
- 20, 16, 4, 0, -1, -4, -8, -16,
- 24, 20, 16, 8, 4, 0, -4, -8,
- 28, 24, 20, 16, 8, 4, 0, -8,
- 32, 24, 20, 16, 8, 4, 0, -4,
- 64, 48, 28, 20, 16, 12, 8, 4,
-};
-
-static const uint8_t buf_rate_adj_tab_p_lowdelay[72] = {
- -8, -24, -32, -40, -44, -48, -52, -80,
- -8, -16, -32, -40, -40, -44, -44, -56,
- 0, 0, -12, -20, -24, -28, -32, -36,
- 8, 4, 0, 0, -8, -16, -24, -32,
- 32, 16, 8, 4, -4, -8, -16, -20,
- 36, 24, 16, 8, 4, -2, -4, -8,
- 40, 36, 24, 20, 16, 8, 0, -8,
- 48, 40, 28, 24, 20, 12, 0, -4,
- 64, 48, 28, 20, 16, 12, 8, 4,
-};
-
-static const uint8_t buf_rate_adj_tab_b_lowdelay[72] = {
- 0, -4, -8, -16, -24, -32, -40, -48,
- 1, 0, -4, -8, -16, -24, -32, -40,
- 4, 2, 0, -1, -3, -8, -16, -24,
- 8, 4, 2, 0, -1, -4, -8, -16,
- 20, 16, 4, 0, -1, -4, -8, -16,
- 24, 20, 16, 8, 4, 0, -4, -8,
- 28, 24, 20, 16, 8, 4, 0, -8,
- 32, 24, 20, 16, 8, 4, 0, -4,
- 64, 48, 28, 20, 16, 12, 8, 4,
-};
-
-static const int8_t dist_qp_adj_tab_i_vbr[81] = {
- +0, 0, 0, 0, 0, 3, 4, 6, 8,
- +0, 0, 0, 0, 0, 2, 3, 5, 7,
- -1, 0, 0, 0, 0, 2, 2, 4, 5,
- -1, -1, 0, 0, 0, 1, 2, 2, 4,
- -2, -2, -1, 0, 0, 0, 1, 2, 4,
- -2, -2, -1, 0, 0, 0, 1, 2, 4,
- -3, -2, -1, -1, 0, 0, 1, 2, 5,
- -3, -2, -1, -1, 0, 0, 2, 4, 7,
- -4, -3, -2, -1, 0, 1, 3, 5, 8,
-};
-
-static const int8_t dist_qp_adj_tab_p_vbr[81] = {
- -1, 0, 0, 0, 0, 1, 1, 2, 3,
- -1, -1, 0, 0, 0, 1, 1, 2, 3,
- -2, -1, -1, 0, 0, 1, 1, 2, 3,
- -3, -2, -2, -1, 0, 0, 1, 2, 3,
- -3, -2, -1, -1, 0, 0, 1, 2, 3,
- -3, -2, -1, -1, 0, 0, 1, 2, 3,
- -3, -2, -1, -1, 0, 0, 1, 2, 3,
- -3, -2, -1, -1, 0, 0, 1, 2, 3,
- -3, -2, -1, -1, 0, 0, 1, 2, 3,
-};
-
-static const int8_t dist_qp_adj_tab_b_vbr[81] = {
- +0, 0, 0, 0, 0, 2, 3, 3, 4,
- +0, 0, 0, 0, 0, 2, 3, 3, 4,
- -1, 0, 0, 0, 0, 2, 2, 3, 3,
- -1, -1, 0, 0, 0, 1, 2, 2, 2,
- -1, -1, -1, 0, 0, 0, 1, 2, 2,
- -2, -1, -1, 0, 0, 0, 0, 1, 2,
- -2, -1, -1, -1, 0, 0, 0, 1, 3,
- -2, -2, -1, -1, 0, 0, 1, 1, 3,
- -2, -2, -1, -1, 0, 1, 1, 2, 4,
-};
-
-static const int8_t buf_rate_adj_tab_i_vbr[72] = {
- -4, -20, -28, -36, -40, -44, -48, -80,
- +0, -8, -12, -20, -24, -28, -32, -36,
- +0, 0, -8, -16, -20, -24, -28, -32,
- +8, 4, 0, 0, -8, -16, -24, -28,
- 32, 24, 16, 2, -4, -8, -16, -20,
- 36, 32, 28, 16, 8, 0, -4, -8,
- 40, 36, 24, 20, 16, 8, 0, -8,
- 48, 40, 28, 24, 20, 12, 0, -4,
- 64, 48, 28, 20, 16, 12, 8, 4,
-};
-
-static const int8_t buf_rate_adj_tab_p_vbr[72] = {
- -8, -24, -32, -44, -48, -56, -64, -80,
- -8, -16, -32, -40, -44, -52, -56, -64,
- +0, 0, -16, -28, -36, -40, -44, -48,
- +8, 4, 0, 0, -8, -16, -24, -36,
- 20, 12, 4, 0, -8, -8, -8, -16,
- 24, 16, 8, 8, 8, 0, -4, -8,
- 40, 36, 24, 20, 16, 8, 0, -8,
- 48, 40, 28, 24, 20, 12, 0, -4,
- 64, 48, 28, 20, 16, 12, 8, 4,
-};
-
-static const int8_t buf_rate_adj_tab_b_vbr[72] = {
- 0, -4, -8, -16, -24, -32, -40, -48,
- 1, 0, -4, -8, -16, -24, -32, -40,
- 4, 2, 0, -1, -3, -8, -16, -24,
- 8, 4, 2, 0, -1, -4, -8, -16,
- 20, 16, 4, 0, -1, -4, -8, -16,
- 24, 20, 16, 8, 4, 0, -4, -8,
- 28, 24, 20, 16, 8, 4, 0, -8,
- 32, 24, 20, 16, 8, 4, 0, -4,
- 64, 48, 28, 20, 16, 12, 8, 4,
-};
-
-static struct huc_brc_update_constant_data
-gen9_brc_update_constant_data = {
- .global_rate_qp_adj_tab_i = {
- 48, 40, 32, 24, 16, 8, 0, -8,
- 40, 32, 24, 16, 8, 0, -8, -16,
- 32, 24, 16, 8, 0, -8, -16, -24,
- 24, 16, 8, 0, -8, -16, -24, -32,
- 16, 8, 0, -8, -16, -24, -32, -40,
- 8, 0, -8, -16, -24, -32, -40, -48,
- 0, -8, -16, -24, -32, -40, -48, -56,
- 48, 40, 32, 24, 16, 8, 0, -8,
- },
-
- .global_rate_qp_adj_tab_p = {
- 48, 40, 32, 24, 16, 8, 0, -8,
- 40, 32, 24, 16, 8, 0, -8, -16,
- 16, 8, 8, 4, -8, -16, -16, -24,
- 8, 0, 0, -8, -16, -16, -16, -24,
- 8, 0, 0, -24, -32, -32, -32, -48,
- 0, -16, -16, -24, -32, -48, -56, -64,
- -8, -16, -32, -32, -48, -48, -56, -64,
- -16,-32, -48, -48, -48, -56, -64, -80,
- },
-
- .global_rate_qp_adj_tab_b = {
- 48, 40, 32, 24, 16, 8, 0, -8,
- 40, 32, 24, 16, 8, 0, -8, -16,
- 32, 24, 16, 8, 0, -8, -16, -24,
- 24, 16, 8, 0, -8, -8, -16, -24,
- 16, 8, 0, 0, -8, -16, -24, -32,
- 16, 8, 0, 0, -8, -16, -24, -32,
- 0, -8, -8, -16, -32, -48, -56, -64,
- 0, -8, -8, -16, -32, -48, -56, -64
- },
-
- .dist_threshld_i = { 2, 4, 8, 12, 19, 32, 64, 128, 0, 0 },
- .dist_threshld_p = { 2, 4, 8, 12, 19, 32, 64, 128, 0, 0 },
- .dist_threshld_b = { 2, 4, 8, 12, 19, 32, 64, 128, 0, 0 },
-
- .dist_qp_adj_tab_i = {
- 0, 0, 0, 0, 0, 3, 4, 6, 8,
- 0, 0, 0, 0, 0, 2, 3, 5, 7,
- -1, 0, 0, 0, 0, 2, 2, 4, 5,
- -1, -1, 0, 0, 0, 1, 2, 2, 4,
- -2, -2, -1, 0, 0, 0, 1, 2, 4,
- -2, -2, -1, 0, 0, 0, 1, 2, 4,
- -3, -2, -1, -1, 0, 0, 1, 2, 5,
- -3, -2, -1, -1, 0, 0, 2, 4, 7,
- -4, -3, -2, -1, 0, 1, 3, 5, 8,
- },
-
- .dist_qp_adj_tab_p = {
- -1, 0, 0, 0, 0, 1, 1, 2, 3,
- -1, -1, 0, 0, 0, 1, 1, 2, 3,
- -2, -1, -1, 0, 0, 1, 1, 2, 3,
- -3, -2, -2, -1, 0, 0, 1, 2, 3,
- -3, -2, -1, -1, 0, 0, 1, 2, 3,
- -3, -2, -1, -1, 0, 0, 1, 2, 3,
- -3, -2, -1, -1, 0, 0, 1, 2, 3,
- -3, -2, -1, -1, 0, 0, 1, 2, 3,
- -3, -2, -1, -1, 0, 0, 1, 2, 3,
- },
-
- .dist_qp_adj_tab_b = {
- 0, 0, 0, 0, 0, 2, 3, 3, 4,
- 0, 0, 0, 0, 0, 2, 3, 3, 4,
- -1, 0, 0, 0, 0, 2, 2, 3, 3,
- -1, -1, 0, 0, 0, 1, 2, 2, 2,
- -1, -1, -1, 0, 0, 0, 1, 2, 2,
- -2, -1, -1, 0, 0, 0, 0, 1, 2,
- -2, -1, -1, -1, 0, 0, 0, 1, 3,
- -2, -2, -1, -1, 0, 0, 1, 1, 3,
- -2, -2, -1, -1, 0, 1, 1, 2, 4,
- },
-
- /* default table for non lowdelay */
- .buf_rate_adj_tab_i = {
- -4, -20, -28, -36, -40, -44, -48, -80,
- 0, -8, -12, -20, -24, -28, -32, -36,
- 0, 0, -8, -16, -20, -24, -28, -32,
- 8, 4, 0, 0, -8, -16, -24, -28,
- 32, 24, 16, 2, -4, -8, -16, -20,
- 36, 32, 28, 16, 8, 0, -4, -8,
- 40, 36, 24, 20, 16, 8, 0, -8,
- 48, 40, 28, 24, 20, 12, 0, -4,
- 64, 48, 28, 20, 16, 12, 8, 4,
- },
-
- /* default table for non lowdelay */
- .buf_rate_adj_tab_p = {
- -8, -24, -32, -44, -48, -56, -64, -80,
- -8, -16, -32, -40, -44, -52, -56, -64,
- 0, 0, -16, -28, -36, -40, -44, -48,
- 8, 4, 0, 0, -8, -16, -24, -36,
- 20, 12, 4, 0, -8, -8, -8, -16,
- 24, 16, 8, 8, 8, 0, -4, -8,
- 40, 36, 24, 20, 16, 8, 0, -8,
- 48, 40, 28, 24, 20, 12, 0, -4,
- 64, 48, 28, 20, 16, 12, 8, 4,
- },
-
- /* default table for non lowdelay */
- .buf_rate_adj_tab_b = {
- 0, -4, -8, -16, -24, -32, -40, -48,
- 1, 0, -4, -8, -16, -24, -32, -40,
- 4, 2, 0, -1, -3, -8, -16, -24,
- 8, 4, 2, 0, -1, -4, -8, -16,
- 20, 16, 4, 0, -1, -4, -8, -16,
- 24, 20, 16, 8, 4, 0, -4, -8,
- 28, 24, 20, 16, 8, 4, 0, -8,
- 32, 24, 20, 16, 8, 4, 0, -4,
- 64, 48, 28, 20, 16, 12, 8, 4,
- },
-
- .frame_size_min_tab_p = { 1, 2, 4, 6, 8, 10, 16, 16, 16 },
- .frame_size_min_tab_i = { 1, 2, 4, 8, 16, 20, 24, 32, 36 },
-
- .frame_size_max_tab_p = { 48, 64, 80, 96, 112, 128, 144, 160, 160 },
- .frame_size_max_tab_i = { 48, 64, 80, 96, 112, 128, 144, 160, 160 },
-
- .frame_size_scg_tab_p = { 4, 8, 12, 16, 20, 24, 24, 0, 0 },
- .frame_size_scg_tab_i = { 4, 8, 12, 16, 20, 24, 24, 0, 0 },
-
- .i_intra_non_pred = {
- 0x0e, 0x0e, 0x0e, 0x18, 0x19, 0x1b, 0x1c, 0x0d, 0x0f, 0x18, 0x19, 0x0d, 0x0f, 0x0f,
- 0x0c, 0x0e, 0x0c, 0x0c, 0x0a, 0x0a, 0x0b, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x07, 0x07, 0x07, 0x07, 0x07,
- },
-
- .i_intra_16x16 = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- },
-
- .i_intra_8x8 = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x04, 0x04, 0x04, 0x06, 0x06, 0x06,
- 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07,
- },
-
- .i_intra_4x4 = {
- 0x2e, 0x2e, 0x2e, 0x38, 0x39, 0x3a, 0x3b, 0x2c, 0x2e, 0x38, 0x39, 0x2d, 0x2f, 0x38,
- 0x2e, 0x38, 0x2e, 0x38, 0x2f, 0x2e, 0x38, 0x38, 0x38, 0x38, 0x2f, 0x2f, 0x2f, 0x2e,
- 0x2d, 0x2c, 0x2b, 0x2a, 0x29, 0x28, 0x1e, 0x1c, 0x1b, 0x1a, 0x19, 0x18, 0x0e, 0x0d,
- },
-
- .i_intra_chroma = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- },
-
- .p_intra_non_pred = {
- 0x06, 0x06, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x05, 0x06, 0x07, 0x08, 0x06, 0x07, 0x07,
- 0x07, 0x07, 0x06, 0x07, 0x07, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
- 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
- },
-
- .p_intra_16x16 = {
- 0x1b, 0x1b, 0x1b, 0x1c, 0x1e, 0x28, 0x29, 0x1a, 0x1b, 0x1c, 0x1e, 0x1a, 0x1c, 0x1d,
- 0x1b, 0x1c, 0x1c, 0x1c, 0x1c, 0x1b, 0x1c, 0x1c, 0x1d, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
- 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c
- },
-
- .p_intra_8x8 = {
- 0x1d, 0x1d, 0x1d, 0x1e, 0x28, 0x29, 0x2a, 0x1b, 0x1d, 0x1e, 0x28, 0x1c, 0x1d, 0x1f,
- 0x1d, 0x1e, 0x1d, 0x1e, 0x1d, 0x1d, 0x1f, 0x1e, 0x1e, 0x1e, 0x1d, 0x1e, 0x1e, 0x1d,
- 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e,
- },
-
- .p_intra_4x4 = {
- 0x38, 0x38, 0x38, 0x39, 0x3a, 0x3b, 0x3d, 0x2e, 0x38, 0x39, 0x3a, 0x2f, 0x39, 0x3a,
- 0x38, 0x39, 0x38, 0x39, 0x39, 0x38, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
- 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
- },
-
- .p_intra_chroma = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- },
-
- .p_inter_16x8 = {
- 0x07, 0x07, 0x07, 0x08, 0x09, 0x0b, 0x0c, 0x06, 0x07, 0x09, 0x0a, 0x07, 0x08, 0x09,
- 0x08, 0x09, 0x08, 0x09, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x08, 0x08, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
- },
-
- .p_inter_8x8 = {
- 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02,
- 0x02, 0x03, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
- },
-
- .p_inter_16x16 = {
- 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
- 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
- 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
- },
-
- .p_ref_id = {
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
- 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04
- },
-
- .hme_mv_cost = {
- /* mv = 0 */
- {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- },
-
- /* mv <= 16 */
- {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- },
-
- /* mv <= 32 */
- {
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- },
-
- /* mv <= 64 */
- {
- 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
- 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
- 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
- },
-
- /* mv <= 128 */
- {
- 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
- 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
- 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
- },
-
- /* mv <= 256 */
- {
- 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
- 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
- 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
- },
-
- /* mv <= 512 */
- {
- 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a,
- 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a,
- 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
- },
-
- /* mv <= 1024 */
- {
- 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a,
- 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a,
- 0x1a, 0x1a, 0x1a, 0x1a, 0x1f, 0x2a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d
- },
- },
-};
-
-/* 11 DWs */
-static uint8_t vdenc_const_qp_lambda[44] = {
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
- 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x07,
- 0x07, 0x08, 0x09, 0x0a, 0x0c, 0x0d, 0x0f, 0x11, 0x13, 0x15,
- 0x17, 0x1a, 0x1e, 0x21, 0x25, 0x2a, 0x2f, 0x35, 0x3b, 0x42,
- 0x4a, 0x53, 0x00, 0x00
-};
-
-/* 14 DWs */
-static uint16_t vdenc_const_skip_threshold[28] = {
-
-};
-
-/* 14 DWs */
-static uint16_t vdenc_const_sic_forward_transform_coeff_threshold_0[28] = {
-
-};
-
-/* 7 DWs */
-static uint8_t vdenc_const_sic_forward_transform_coeff_threshold_1[28] = {
-
-};
-
-/* 7 DWs */
-static uint8_t vdenc_const_sic_forward_transform_coeff_threshold_2[28] = {
-
-};
-
-/* 7 DWs */
-static uint8_t vdenc_const_sic_forward_transform_coeff_threshold_3[28] = {
-
-};
-
-/* P frame */
-/* 11 DWs */
-static uint8_t vdenc_const_qp_lambda_p[44] = {
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
- 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x07,
- 0x07, 0x08, 0x09, 0x0a, 0x0c, 0x0d, 0x0f, 0x11, 0x13, 0x15,
- 0x17, 0x1a, 0x1e, 0x21, 0x25, 0x2a, 0x2f, 0x35, 0x3b, 0x42,
- 0x4a, 0x53, 0x00, 0x00
-};
-
-/* 14 DWs */
-static uint16_t vdenc_const_skip_threshold_p[28] = {
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0004, 0x0007, 0x000b,
- 0x0011, 0x0019, 0x0023, 0x0032, 0x0044, 0x005b, 0x0077, 0x0099,
- 0x00c2, 0x00f1, 0x0128, 0x0168, 0x01b0, 0x0201, 0x025c, 0x02c2,
- 0x0333, 0x03b0, 0x0000, 0x0000
-};
-
-/* 14 DWs */
-static uint16_t vdenc_const_sic_forward_transform_coeff_threshold_0_p[28] = {
- 0x02, 0x02, 0x03, 0x04, 0x04, 0x05, 0x07, 0x09, 0x0b, 0x0e,
- 0x12, 0x14, 0x18, 0x1d, 0x20, 0x25, 0x2a, 0x34, 0x39, 0x3f,
- 0x4e, 0x51, 0x5b, 0x63, 0x6f, 0x7f, 0x00, 0x00
-};
-
-/* 7 DWs */
-static uint8_t vdenc_const_sic_forward_transform_coeff_threshold_1_p[28] = {
- 0x03, 0x04, 0x05, 0x05, 0x07, 0x09, 0x0b, 0x0e, 0x12, 0x17,
- 0x1c, 0x21, 0x27, 0x2c, 0x33, 0x3b, 0x41, 0x51, 0x5c, 0x1a,
- 0x1e, 0x21, 0x22, 0x26, 0x2c, 0x30, 0x00, 0x00
-};
-
-/* 7 DWs */
-static uint8_t vdenc_const_sic_forward_transform_coeff_threshold_2_p[28] = {
- 0x02, 0x02, 0x03, 0x04, 0x04, 0x05, 0x07, 0x09, 0x0b, 0x0e,
- 0x12, 0x14, 0x18, 0x1d, 0x20, 0x25, 0x2a, 0x34, 0x39, 0x0f,
- 0x13, 0x14, 0x16, 0x18, 0x1b, 0x1f, 0x00, 0x00
-};
-
-/* 7 DWs */
-static uint8_t vdenc_const_sic_forward_transform_coeff_threshold_3_p[28] = {
- 0x04, 0x05, 0x06, 0x09, 0x0b, 0x0d, 0x12, 0x16, 0x1b, 0x23,
- 0x2c, 0x33, 0x3d, 0x45, 0x4f, 0x5b, 0x66, 0x7f, 0x8e, 0x2a,
- 0x2f, 0x32, 0x37, 0x3c, 0x45, 0x4c, 0x00, 0x00
-};
-
-static const double
-vdenc_brc_dev_threshi0_fp_neg[4] = { 0.80, 0.60, 0.34, 0.2 };
-
-static const double
-vdenc_brc_dev_threshi0_fp_pos[4] = { 0.2, 0.4, 0.66, 0.9 };
-
-static const double
-vdenc_brc_dev_threshpb0_fp_neg[4] = { 0.90, 0.66, 0.46, 0.3 };
-
-static const double
-vdenc_brc_dev_threshpb0_fp_pos[4] = { 0.3, 0.46, 0.70, 0.90 };
-
-static const double
-vdenc_brc_dev_threshvbr0_neg[4] = { 0.90, 0.70, 0.50, 0.3 };
-
-static const double
-vdenc_brc_dev_threshvbr0_pos[4] = { 0.4, 0.5, 0.75, 0.90 };
-
-static const unsigned char
-vdenc_brc_estrate_thresh_p0[7] = { 4, 8, 12, 16, 20, 24, 28 };
-
-static const unsigned char
-vdenc_brc_estrate_thresh_i0[7] = { 4, 8, 12, 16, 20, 24, 28 };
-
-static const uint16_t
-vdenc_brc_start_global_adjust_frame[4] = { 10, 50, 100, 150 };
-
-static const uint8_t
-vdenc_brc_global_rate_ratio_threshold[7] = { 80, 90, 95, 101, 105, 115, 130};
-
-static const uint8_t
-vdenc_brc_start_global_adjust_mult[5] = { 1, 1, 3, 2, 1 };
-
-static const uint8_t
-vdenc_brc_start_global_adjust_div[5] = { 40, 5, 5, 3, 1 };
-
-static const int8_t
-vdenc_brc_global_rate_ratio_threshold_qp[8] = { -3, -2, -1, 0, 1, 1, 2, 3 };
-
-const int vdenc_mode_const[2][12][52] = {
- //INTRASLICE
- {
- //LUTMODE_INTRA_NONPRED
- {
- 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, //QP=[0 ~12]
- 16, 18, 22, 24, 13, 15, 16, 18, 13, 15, 15, 12, 14, //QP=[13~25]
- 12, 12, 10, 10, 11, 10, 10, 10, 9, 9, 8, 8, 8, //QP=[26~38]
- 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, //QP=[39~51]
- },
-
- //LUTMODE_INTRA_16x16, LUTMODE_INTRA
- {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[0 ~12]
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[13~25]
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[26~38]
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[39~51]
- },
-
- //LUTMODE_INTRA_8x8
- {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[0 ~12]
- 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, //QP=[13~25]
- 1, 1, 1, 1, 1, 4, 4, 4, 4, 6, 6, 6, 6, //QP=[26~38]
- 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, //QP=[39~51]
- },
-
- //LUTMODE_INTRA_4x4
- {
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, //QP=[0 ~12]
- 64, 72, 80, 88, 48, 56, 64, 72, 53, 59, 64, 56, 64, //QP=[13~25]
- 57, 64, 58, 55, 64, 64, 64, 64, 59, 59, 60, 57, 50, //QP=[26~38]
- 46, 42, 38, 34, 31, 27, 23, 22, 19, 18, 16, 14, 13, //QP=[39~51]
- },
-
- //LUTMODE_INTER_16x8, LUTMODE_INTER_8x16
- { 0, },
-
- //LUTMODE_INTER_8X8Q
- { 0, },
-
- //LUTMODE_INTER_8X4Q, LUTMODE_INTER_4X8Q, LUTMODE_INTER_16x8_FIELD
- { 0, },
-
- //LUTMODE_INTER_4X4Q, LUTMODE_INTER_8X8_FIELD
- { 0, },
-
- //LUTMODE_INTER_16x16, LUTMODE_INTER
- { 0, },
-
- //LUTMODE_INTER_BWD
- { 0, },
-
- //LUTMODE_REF_ID
- { 0, },
-
- //LUTMODE_INTRA_CHROMA
- { 0, },
- },
-
- //PREDSLICE
- {
- //LUTMODE_INTRA_NONPRED
- {
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, //QP=[0 ~12]
- 7, 8, 9, 10, 5, 6, 7, 8, 6, 7, 7, 7, 7, //QP=[13~25]
- 6, 7, 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, //QP=[26~38]
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, //QP=[39~51]
- },
-
- //LUTMODE_INTRA_16x16, LUTMODE_INTRA
- {
- 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 24, 28, 31, 35, 19, 21, 24, 28, 20, 24, 25, 21, 24,
- 24, 24, 24, 21, 24, 24, 26, 24, 24, 24, 24, 24, 24,
- 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-
- },
-
- //LUTMODE_INTRA_8x8
- {
- 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, //QP=[0 ~12]
- 28, 32, 36, 40, 22, 26, 28, 32, 24, 26, 30, 26, 28, //QP=[13~25]
- 26, 28, 26, 26, 30, 28, 28, 28, 26, 28, 28, 26, 28, //QP=[26~38]
- 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, //QP=[39~51]
- },
-
- //LUTMODE_INTRA_4x4
- {
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, //QP=[0 ~12]
- 72, 80, 88, 104, 56, 64, 72, 80, 58, 68, 76, 64, 68, //QP=[13~25]
- 64, 68, 68, 64, 70, 70, 70, 70, 68, 68, 68, 68, 68, //QP=[26~38]
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, //QP=[39~51]
- },
-
- //LUTMODE_INTER_16x8, LUTMODE_INTER_8x16
- {
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, //QP=[0 ~12]
- 8, 9, 11, 12, 6, 7, 9, 10, 7, 8, 9, 8, 9, //QP=[13~25]
- 8, 9, 8, 8, 9, 9, 9, 9, 8, 8, 8, 8, 8, //QP=[26~38]
- 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, //QP=[39~51]
- },
-
- //LUTMODE_INTER_8X8Q
- {
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, //QP=[0 ~12]
- 2, 3, 3, 3, 2, 2, 2, 3, 2, 2, 2, 2, 3, //QP=[13~25]
- 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, //QP=[26~38]
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, //QP=[39~51]
- },
-
- //LUTMODE_INTER_8X4Q, LUTMODE_INTER_4X8Q, LUTMODE_INTER_16X8_FIELD
- {
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //QP=[0 ~12]
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //QP=[13~25]
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //QP=[26~38]
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //QP=[39~51]
- },
-
- //LUTMODE_INTER_4X4Q, LUTMODE_INTER_8x8_FIELD
- {
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, //QP=[0 ~12]
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, //QP=[13~25]
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, //QP=[26~38]
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, //QP=[39~51]
- },
-
- //LUTMODE_INTER_16x16, LUTMODE_INTER
- {
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //QP=[0 ~12]
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, //QP=[13~25]
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, //QP=[26~38]
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, //QP=[39~51]
- },
-
- //LUTMODE_INTER_BWD
- {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[0 ~12]
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[13~25]
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[26~38]
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[39~51]
- },
-
- //LUTMODE_REF_ID
- {
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //QP=[0 ~12]
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //QP=[13~25]
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //QP=[26~38]
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //QP=[39~51]
- },
-
- //LUTMODE_INTRA_CHROMA
- {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[0 ~12]
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[13~25]
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[26~38]
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[39~51]
- },
- },
-};
-
-const int vdenc_mv_cost_skipbias_qpel[8] = {
- //PREDSLICE
- 0, 6, 6, 9, 10, 13, 14, 16
-};
-
-const int vdenc_hme_cost[8][52] = {
- //mv=0
- {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[0 ~12]
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[13 ~25]
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[26 ~38]
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[39 ~51]
- },
- //mv<=16
- {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[0 ~12]
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[13 ~25]
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[26 ~38]
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[39 ~51]
- },
- //mv<=32
- {
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, //QP=[0 ~12]
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, //QP=[13 ~25]
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, //QP=[26 ~38]
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, //QP=[39 ~51]
- },
- //mv<=64
- {
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //QP=[0 ~12]
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //QP=[13 ~25]
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //QP=[26 ~38]
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //QP=[39 ~51]
- },
- //mv<=128
- {
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //QP=[0 ~12]
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //QP=[13 ~25]
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //QP=[26 ~38]
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //QP=[39 ~51]
- },
- //mv<=256
- {
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //QP=[0 ~12]
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //QP=[13 ~25]
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //QP=[26 ~38]
- 10, 10, 10, 10, 20, 30, 40, 50, 50, 50, 50, 50, 50, //QP=[39 ~51]
- },
- //mv<=512
- {
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, //QP=[0 ~12]
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, //QP=[13 ~25]
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, //QP=[26 ~38]
- 20, 20, 20, 40, 60, 80, 100, 100, 100, 100, 100, 100, 100, //QP=[39 ~51]
- },
-
- //mv<=1024
- {
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, //QP=[0 ~12]
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, //QP=[13 ~25]
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, //QP=[26 ~38]
- 20, 20, 30, 50, 100, 200, 200, 200, 200, 200, 200, 200, 200, //QP=[39 ~51]
- },
-};
-
-#define OUT_BUFFER_2DW(batch, bo, is_target, delta) do { \
- if (bo) { \
- OUT_BCS_RELOC64(batch, \
- bo, \
- I915_GEM_DOMAIN_RENDER, \
- is_target ? I915_GEM_DOMAIN_RENDER : 0, \
- delta); \
- } else { \
- OUT_BCS_BATCH(batch, 0); \
- OUT_BCS_BATCH(batch, 0); \
- } \
- } while (0)
-
-#define OUT_BUFFER_3DW(batch, bo, is_target, delta, attr) do { \
- OUT_BUFFER_2DW(batch, bo, is_target, delta); \
- OUT_BCS_BATCH(batch, i965->intel.mocs_state); \
- } while (0)
-
-#define ALLOC_VDENC_BUFFER_RESOURCE(buffer, bfsize, des) do { \
- buffer.type = I965_GPE_RESOURCE_BUFFER; \
- buffer.width = bfsize; \
- buffer.height = 1; \
- buffer.pitch = buffer.width; \
- buffer.size = buffer.pitch; \
- buffer.tiling = I915_TILING_NONE; \
- i965_allocate_gpe_resource(i965->intel.bufmgr, \
- &buffer, \
- bfsize, \
- (des)); \
- } while (0)
-
-static int
-gen9_vdenc_get_max_vmv_range(int level)
-{
- int max_vmv_range = 512;
-
- if (level == 10)
- max_vmv_range = 256;
- else if (level <= 20)
- max_vmv_range = 512;
- else if (level <= 30)
- max_vmv_range = 1024;
- else
- max_vmv_range = 2048;
-
- return max_vmv_range;
-}
-
-static unsigned char
-map_44_lut_value(unsigned int v, unsigned char max)
-{
- unsigned int maxcost;
- int d;
- unsigned char ret;
-
- if (v == 0) {
- return 0;
- }
-
- maxcost = ((max & 15) << (max >> 4));
-
- if (v >= maxcost) {
- return max;
- }
-
- d = (int)(log((double)v) / log(2.0)) - 3;
-
- if (d < 0) {
- d = 0;
- }
-
- ret = (unsigned char)((d << 4) + (int)((v + (d == 0 ? 0 : (1 << (d - 1)))) >> d));
- ret = (ret & 0xf) == 0 ? (ret | 8) : ret;
-
- return ret;
-}
-
-static void
-gen9_vdenc_update_misc_parameters(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- int i;
-
- vdenc_context->gop_size = encoder_context->brc.gop_size;
- vdenc_context->ref_dist = encoder_context->brc.num_bframes_in_gop + 1;
-
- if (vdenc_context->internal_rate_mode != I965_BRC_CQP &&
- encoder_context->brc.need_reset) {
- /* So far, vdenc doesn't support temporal layer */
- vdenc_context->framerate = encoder_context->brc.framerate[0];
-
- vdenc_context->vbv_buffer_size_in_bit = encoder_context->brc.hrd_buffer_size;
- vdenc_context->init_vbv_buffer_fullness_in_bit = encoder_context->brc.hrd_initial_buffer_fullness;
-
- vdenc_context->max_bit_rate = ALIGN(encoder_context->brc.bits_per_second[0], 1000) / 1000;
- vdenc_context->mb_brc_enabled = encoder_context->brc.mb_rate_control[0];
- vdenc_context->brc_need_reset = (vdenc_context->brc_initted && encoder_context->brc.need_reset);
-
- if (vdenc_context->internal_rate_mode == I965_BRC_CBR) {
- vdenc_context->min_bit_rate = vdenc_context->max_bit_rate;
- vdenc_context->target_bit_rate = vdenc_context->max_bit_rate;
- } else {
- assert(vdenc_context->internal_rate_mode == I965_BRC_VBR);
- vdenc_context->min_bit_rate = vdenc_context->max_bit_rate * (2 * encoder_context->brc.target_percentage[0] - 100) / 100;
- vdenc_context->target_bit_rate = vdenc_context->max_bit_rate * encoder_context->brc.target_percentage[0] / 100;
- }
- }
-
- vdenc_context->mb_brc_enabled = 1;
- vdenc_context->num_roi = MIN(encoder_context->brc.num_roi, 3);
- vdenc_context->max_delta_qp = encoder_context->brc.roi_max_delta_qp;
- vdenc_context->min_delta_qp = encoder_context->brc.roi_min_delta_qp;
- vdenc_context->vdenc_streamin_enable = !!vdenc_context->num_roi;
-
- for (i = 0; i < vdenc_context->num_roi; i++) {
- vdenc_context->roi[i].left = encoder_context->brc.roi[i].left >> 4;
- vdenc_context->roi[i].right = encoder_context->brc.roi[i].right >> 4;
- vdenc_context->roi[i].top = encoder_context->brc.roi[i].top >> 4;
- vdenc_context->roi[i].bottom = encoder_context->brc.roi[i].top >> 4;
- vdenc_context->roi[i].value = encoder_context->brc.roi[i].value;
- }
-}
-
-static void
-gen9_vdenc_update_parameters(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- VAEncSequenceParameterBufferH264 *seq_param = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
-
- if (profile == VAProfileH264High)
- vdenc_context->transform_8x8_mode_enable = !!pic_param->pic_fields.bits.transform_8x8_mode_flag;
- else
- vdenc_context->transform_8x8_mode_enable = 0;
-
- vdenc_context->frame_width_in_mbs = seq_param->picture_width_in_mbs;
- vdenc_context->frame_height_in_mbs = seq_param->picture_height_in_mbs;
-
- vdenc_context->frame_width = vdenc_context->frame_width_in_mbs * 16;
- vdenc_context->frame_height = vdenc_context->frame_height_in_mbs * 16;
-
- vdenc_context->down_scaled_width_in_mb4x = WIDTH_IN_MACROBLOCKS(vdenc_context->frame_width / SCALE_FACTOR_4X);
- vdenc_context->down_scaled_height_in_mb4x = HEIGHT_IN_MACROBLOCKS(vdenc_context->frame_height / SCALE_FACTOR_4X);
- vdenc_context->down_scaled_width_4x = vdenc_context->down_scaled_width_in_mb4x * 16;
- vdenc_context->down_scaled_height_4x = ((vdenc_context->down_scaled_height_in_mb4x + 1) >> 1) * 16;
- vdenc_context->down_scaled_height_4x = ALIGN(vdenc_context->down_scaled_height_4x, 32) << 1;
-
- gen9_vdenc_update_misc_parameters(ctx, encode_state, encoder_context);
-
- vdenc_context->current_pass = 0;
- vdenc_context->num_passes = 1;
-
- if (vdenc_context->internal_rate_mode == I965_BRC_CBR ||
- vdenc_context->internal_rate_mode == I965_BRC_VBR)
- vdenc_context->brc_enabled = 1;
- else
- vdenc_context->brc_enabled = 0;
-
- if (vdenc_context->brc_enabled &&
- (!vdenc_context->init_vbv_buffer_fullness_in_bit ||
- !vdenc_context->vbv_buffer_size_in_bit ||
- !vdenc_context->max_bit_rate ||
- !vdenc_context->target_bit_rate ||
- !vdenc_context->framerate.num ||
- !vdenc_context->framerate.den))
- vdenc_context->brc_enabled = 0;
-
- if (!vdenc_context->brc_enabled) {
- vdenc_context->target_bit_rate = 0;
- vdenc_context->max_bit_rate = 0;
- vdenc_context->min_bit_rate = 0;
- vdenc_context->init_vbv_buffer_fullness_in_bit = 0;
- vdenc_context->vbv_buffer_size_in_bit = 0;
- } else {
- vdenc_context->num_passes = NUM_OF_BRC_PAK_PASSES;
- }
-}
-
-static void
-gen9_vdenc_avc_calculate_mode_cost(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int qp)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- unsigned int frame_type = vdenc_context->frame_type;
-
- memset(vdenc_context->mode_cost, 0, sizeof(vdenc_context->mode_cost));
- memset(vdenc_context->mv_cost, 0, sizeof(vdenc_context->mv_cost));
- memset(vdenc_context->hme_mv_cost, 0, sizeof(vdenc_context->hme_mv_cost));
-
- vdenc_context->mode_cost[VDENC_LUTMODE_INTRA_NONPRED] = map_44_lut_value((uint32_t)(vdenc_mode_const[frame_type][VDENC_LUTMODE_INTRA_NONPRED][qp]), 0x6f);
- vdenc_context->mode_cost[VDENC_LUTMODE_INTRA_16x16] = map_44_lut_value((uint32_t)(vdenc_mode_const[frame_type][VDENC_LUTMODE_INTRA_16x16][qp]), 0x8f);
- vdenc_context->mode_cost[VDENC_LUTMODE_INTRA_8x8] = map_44_lut_value((uint32_t)(vdenc_mode_const[frame_type][VDENC_LUTMODE_INTRA_8x8][qp]), 0x8f);
- vdenc_context->mode_cost[VDENC_LUTMODE_INTRA_4x4] = map_44_lut_value((uint32_t)(vdenc_mode_const[frame_type][VDENC_LUTMODE_INTRA_4x4][qp]), 0x8f);
-
- if (frame_type == VDENC_FRAME_P) {
- vdenc_context->mode_cost[VDENC_LUTMODE_INTER_16x16] = map_44_lut_value((uint32_t)(vdenc_mode_const[frame_type][VDENC_LUTMODE_INTER_16x16][qp]), 0x8f);
- vdenc_context->mode_cost[VDENC_LUTMODE_INTER_16x8] = map_44_lut_value((uint32_t)(vdenc_mode_const[frame_type][VDENC_LUTMODE_INTER_16x8][qp]), 0x8f);
- vdenc_context->mode_cost[VDENC_LUTMODE_INTER_8X8Q] = map_44_lut_value((uint32_t)(vdenc_mode_const[frame_type][VDENC_LUTMODE_INTER_8X8Q][qp]), 0x6f);
- vdenc_context->mode_cost[VDENC_LUTMODE_INTER_8X4Q] = map_44_lut_value((uint32_t)(vdenc_mode_const[frame_type][VDENC_LUTMODE_INTER_8X4Q][qp]), 0x6f);
- vdenc_context->mode_cost[VDENC_LUTMODE_INTER_4X4Q] = map_44_lut_value((uint32_t)(vdenc_mode_const[frame_type][VDENC_LUTMODE_INTER_4X4Q][qp]), 0x6f);
- vdenc_context->mode_cost[VDENC_LUTMODE_REF_ID] = map_44_lut_value((uint32_t)(vdenc_mode_const[frame_type][VDENC_LUTMODE_REF_ID][qp]), 0x6f);
-
- vdenc_context->mv_cost[0] = map_44_lut_value((uint32_t)(vdenc_mv_cost_skipbias_qpel[0]), 0x6f);
- vdenc_context->mv_cost[1] = map_44_lut_value((uint32_t)(vdenc_mv_cost_skipbias_qpel[1]), 0x6f);
- vdenc_context->mv_cost[2] = map_44_lut_value((uint32_t)(vdenc_mv_cost_skipbias_qpel[2]), 0x6f);
- vdenc_context->mv_cost[3] = map_44_lut_value((uint32_t)(vdenc_mv_cost_skipbias_qpel[3]), 0x6f);
- vdenc_context->mv_cost[4] = map_44_lut_value((uint32_t)(vdenc_mv_cost_skipbias_qpel[4]), 0x6f);
- vdenc_context->mv_cost[5] = map_44_lut_value((uint32_t)(vdenc_mv_cost_skipbias_qpel[5]), 0x6f);
- vdenc_context->mv_cost[6] = map_44_lut_value((uint32_t)(vdenc_mv_cost_skipbias_qpel[6]), 0x6f);
- vdenc_context->mv_cost[7] = map_44_lut_value((uint32_t)(vdenc_mv_cost_skipbias_qpel[7]), 0x6f);
-
- vdenc_context->hme_mv_cost[0] = map_44_lut_value((uint32_t)(vdenc_hme_cost[0][qp]), 0x6f);
- vdenc_context->hme_mv_cost[1] = map_44_lut_value((uint32_t)(vdenc_hme_cost[1][qp]), 0x6f);
- vdenc_context->hme_mv_cost[2] = map_44_lut_value((uint32_t)(vdenc_hme_cost[2][qp]), 0x6f);
- vdenc_context->hme_mv_cost[3] = map_44_lut_value((uint32_t)(vdenc_hme_cost[3][qp]), 0x6f);
- vdenc_context->hme_mv_cost[4] = map_44_lut_value((uint32_t)(vdenc_hme_cost[4][qp]), 0x6f);
- vdenc_context->hme_mv_cost[5] = map_44_lut_value((uint32_t)(vdenc_hme_cost[5][qp]), 0x6f);
- vdenc_context->hme_mv_cost[6] = map_44_lut_value((uint32_t)(vdenc_hme_cost[6][qp]), 0x6f);
- vdenc_context->hme_mv_cost[7] = map_44_lut_value((uint32_t)(vdenc_hme_cost[7][qp]), 0x6f);
- }
-}
-
-static void
-gen9_vdenc_update_roi_in_streamin_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct gen9_vdenc_streamin_state *streamin_state;
- int row, col, i;
-
- if (!vdenc_context->num_roi)
- return;
-
- streamin_state = (struct gen9_vdenc_streamin_state *)i965_map_gpe_resource(&vdenc_context->vdenc_streamin_res);
-
- if (!streamin_state)
- return;
-
- for (col = 0; col < vdenc_context->frame_width_in_mbs; col++) {
- for (row = 0; row < vdenc_context->frame_height_in_mbs; row++) {
- streamin_state[row * vdenc_context->frame_width_in_mbs + col].dw0.roi_selection = 0; /* non-ROI region */
-
- /* The last one has higher priority */
- for (i = vdenc_context->num_roi - 1; i >= 0; i--) {
- if ((col >= vdenc_context->roi[i].left && col <= vdenc_context->roi[i].right) &&
- (row >= vdenc_context->roi[i].top && row <= vdenc_context->roi[i].bottom)) {
- streamin_state[row * vdenc_context->frame_width_in_mbs + col].dw0.roi_selection = i + 1;
-
- break;
- }
- }
- }
- }
-
- i965_unmap_gpe_resource(&vdenc_context->vdenc_streamin_res);
-}
-
-static VAStatus
-gen9_vdenc_avc_prepare(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct i965_coded_buffer_segment *coded_buffer_segment;
- struct object_surface *obj_surface;
- struct object_buffer *obj_buffer;
- VAEncPictureParameterBufferH264 *pic_param;
- VAEncSliceParameterBufferH264 *slice_param;
- VDEncAvcSurface *vdenc_avc_surface;
- dri_bo *bo;
- int i, j, enable_avc_ildb = 0;
- int qp;
- char *pbuffer;
-
- gen9_vdenc_update_parameters(ctx, profile, encode_state, encoder_context);
-
- for (j = 0; j < encode_state->num_slice_params_ext && enable_avc_ildb == 0; j++) {
- assert(encode_state->slice_params_ext && encode_state->slice_params_ext[j]->buffer);
- slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[j]->buffer;
-
- for (i = 0; i < encode_state->slice_params_ext[j]->num_elements; i++) {
- assert((slice_param->slice_type == SLICE_TYPE_I) ||
- (slice_param->slice_type == SLICE_TYPE_SI) ||
- (slice_param->slice_type == SLICE_TYPE_P) ||
- (slice_param->slice_type == SLICE_TYPE_SP) ||
- (slice_param->slice_type == SLICE_TYPE_B));
-
- if (slice_param->disable_deblocking_filter_idc != 1) {
- enable_avc_ildb = 1;
- break;
- }
-
- slice_param++;
- }
- }
-
- /* Setup current frame */
- obj_surface = encode_state->reconstructed_object;
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
-
- if (obj_surface->private_data == NULL) {
- vdenc_avc_surface = calloc(sizeof(VDEncAvcSurface), 1);
- assert(vdenc_avc_surface);
-
- vdenc_avc_surface->ctx = ctx;
- i965_CreateSurfaces(ctx,
- vdenc_context->down_scaled_width_4x,
- vdenc_context->down_scaled_height_4x,
- VA_RT_FORMAT_YUV420,
- 1,
- &vdenc_avc_surface->scaled_4x_surface_id);
- vdenc_avc_surface->scaled_4x_surface_obj = SURFACE(vdenc_avc_surface->scaled_4x_surface_id);
- assert(vdenc_avc_surface->scaled_4x_surface_obj);
- i965_check_alloc_surface_bo(ctx,
- vdenc_avc_surface->scaled_4x_surface_obj,
- 1,
- VA_FOURCC_NV12,
- SUBSAMPLE_YUV420);
-
- obj_surface->private_data = (void *)vdenc_avc_surface;
- obj_surface->free_private_data = (void *)vdenc_free_avc_surface;
- }
-
- vdenc_avc_surface = (VDEncAvcSurface *)obj_surface->private_data;
- assert(vdenc_avc_surface->scaled_4x_surface_obj);
-
- /* Reconstructed surfaces */
- i965_free_gpe_resource(&vdenc_context->recon_surface_res);
- i965_free_gpe_resource(&vdenc_context->scaled_4x_recon_surface_res);
- i965_free_gpe_resource(&vdenc_context->post_deblocking_output_res);
- i965_free_gpe_resource(&vdenc_context->pre_deblocking_output_res);
-
- i965_object_surface_to_2d_gpe_resource(&vdenc_context->recon_surface_res, obj_surface);
- i965_object_surface_to_2d_gpe_resource(&vdenc_context->scaled_4x_recon_surface_res, vdenc_avc_surface->scaled_4x_surface_obj);
-
- if (enable_avc_ildb) {
- i965_object_surface_to_2d_gpe_resource(&vdenc_context->post_deblocking_output_res, obj_surface);
- } else {
- i965_object_surface_to_2d_gpe_resource(&vdenc_context->pre_deblocking_output_res, obj_surface);
- }
-
-
- /* Reference surfaces */
- for (i = 0; i < ARRAY_ELEMS(vdenc_context->list_reference_res); i++) {
- assert(ARRAY_ELEMS(vdenc_context->list_reference_res) ==
- ARRAY_ELEMS(vdenc_context->list_scaled_4x_reference_res));
- i965_free_gpe_resource(&vdenc_context->list_reference_res[i]);
- i965_free_gpe_resource(&vdenc_context->list_scaled_4x_reference_res[i]);
- obj_surface = encode_state->reference_objects[i];
-
- if (obj_surface && obj_surface->bo) {
- i965_object_surface_to_2d_gpe_resource(&vdenc_context->list_reference_res[i], obj_surface);
-
- if (obj_surface->private_data == NULL) {
- vdenc_avc_surface = calloc(sizeof(VDEncAvcSurface), 1);
- assert(vdenc_avc_surface);
-
- vdenc_avc_surface->ctx = ctx;
- i965_CreateSurfaces(ctx,
- vdenc_context->down_scaled_width_4x,
- vdenc_context->down_scaled_height_4x,
- VA_RT_FORMAT_YUV420,
- 1,
- &vdenc_avc_surface->scaled_4x_surface_id);
- vdenc_avc_surface->scaled_4x_surface_obj = SURFACE(vdenc_avc_surface->scaled_4x_surface_id);
- assert(vdenc_avc_surface->scaled_4x_surface_obj);
- i965_check_alloc_surface_bo(ctx,
- vdenc_avc_surface->scaled_4x_surface_obj,
- 1,
- VA_FOURCC_NV12,
- SUBSAMPLE_YUV420);
-
- obj_surface->private_data = vdenc_avc_surface;
- obj_surface->free_private_data = gen_free_avc_surface;
- }
-
- vdenc_avc_surface = obj_surface->private_data;
- i965_object_surface_to_2d_gpe_resource(&vdenc_context->list_scaled_4x_reference_res[i], vdenc_avc_surface->scaled_4x_surface_obj);
- }
- }
-
- /* Input YUV surface */
- i965_free_gpe_resource(&vdenc_context->uncompressed_input_surface_res);
- i965_object_surface_to_2d_gpe_resource(&vdenc_context->uncompressed_input_surface_res, encode_state->input_yuv_object);
-
- /* Encoded bitstream */
- obj_buffer = encode_state->coded_buf_object;
- bo = obj_buffer->buffer_store->bo;
- i965_free_gpe_resource(&vdenc_context->compressed_bitstream.res);
- i965_dri_object_to_buffer_gpe_resource(&vdenc_context->compressed_bitstream.res, bo);
- vdenc_context->compressed_bitstream.start_offset = I965_CODEDBUFFER_HEADER_SIZE;
- vdenc_context->compressed_bitstream.end_offset = ALIGN(obj_buffer->size_element - 0x1000, 0x1000);
-
- /* Status buffer */
- i965_free_gpe_resource(&vdenc_context->status_bffuer.res);
- i965_dri_object_to_buffer_gpe_resource(&vdenc_context->status_bffuer.res, bo);
- vdenc_context->status_bffuer.base_offset = offsetof(struct i965_coded_buffer_segment, codec_private_data);
- vdenc_context->status_bffuer.size = ALIGN(sizeof(struct gen9_vdenc_status), 64);
- vdenc_context->status_bffuer.bytes_per_frame_offset = offsetof(struct gen9_vdenc_status, bytes_per_frame);
- assert(vdenc_context->status_bffuer.base_offset + vdenc_context->status_bffuer.size <
- vdenc_context->compressed_bitstream.start_offset);
-
- dri_bo_map(bo, 1);
-
- coded_buffer_segment = (struct i965_coded_buffer_segment *)bo->virtual;
- coded_buffer_segment->mapped = 0;
- coded_buffer_segment->codec = encoder_context->codec;
- coded_buffer_segment->status_support = 1;
-
- pbuffer = bo->virtual;
- pbuffer += vdenc_context->status_bffuer.base_offset;
- memset(pbuffer, 0, vdenc_context->status_bffuer.size);
-
- dri_bo_unmap(bo);
-
- i965_free_gpe_resource(&vdenc_context->mfx_intra_row_store_scratch_res);
- ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->mfx_intra_row_store_scratch_res,
- vdenc_context->frame_width_in_mbs * 64,
- "Intra row store scratch buffer");
-
- i965_free_gpe_resource(&vdenc_context->mfx_deblocking_filter_row_store_scratch_res);
- ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->mfx_deblocking_filter_row_store_scratch_res,
- vdenc_context->frame_width_in_mbs * 256,
- "Deblocking filter row store scratch buffer");
-
- i965_free_gpe_resource(&vdenc_context->mfx_bsd_mpc_row_store_scratch_res);
- ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->mfx_bsd_mpc_row_store_scratch_res,
- vdenc_context->frame_width_in_mbs * 128,
- "BSD/MPC row store scratch buffer");
-
- i965_free_gpe_resource(&vdenc_context->vdenc_row_store_scratch_res);
- ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->vdenc_row_store_scratch_res,
- vdenc_context->frame_width_in_mbs * 64,
- "VDENC row store scratch buffer");
-
- assert(sizeof(struct gen9_vdenc_streamin_state) == 64);
- i965_free_gpe_resource(&vdenc_context->vdenc_streamin_res);
- ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->vdenc_streamin_res,
- vdenc_context->frame_width_in_mbs *
- vdenc_context->frame_height_in_mbs *
- sizeof(struct gen9_vdenc_streamin_state),
- "VDENC StreamIn buffer");
-
- /*
- * Calculate the index for each reference surface in list0 for the first slice
- * TODO: other slices
- */
- pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
-
- vdenc_context->num_refs[0] = pic_param->num_ref_idx_l0_active_minus1 + 1;
-
- if (slice_param->num_ref_idx_active_override_flag)
- vdenc_context->num_refs[0] = slice_param->num_ref_idx_l0_active_minus1 + 1;
-
- if (vdenc_context->num_refs[0] > ARRAY_ELEMS(vdenc_context->list_ref_idx[0]))
- return VA_STATUS_ERROR_INVALID_VALUE;
-
- for (i = 0; i < ARRAY_ELEMS(vdenc_context->list_ref_idx[0]); i++) {
- VAPictureH264 *va_pic;
-
- assert(ARRAY_ELEMS(slice_param->RefPicList0) == ARRAY_ELEMS(vdenc_context->list_ref_idx[0]));
- vdenc_context->list_ref_idx[0][i] = 0;
-
- if (i >= vdenc_context->num_refs[0])
- continue;
-
- va_pic = &slice_param->RefPicList0[i];
-
- for (j = 0; j < ARRAY_ELEMS(encode_state->reference_objects); j++) {
- obj_surface = encode_state->reference_objects[j];
-
- if (obj_surface &&
- obj_surface->bo &&
- obj_surface->base.id == va_pic->picture_id) {
-
- assert(obj_surface->base.id != VA_INVALID_SURFACE);
- vdenc_context->list_ref_idx[0][i] = j;
-
- break;
- }
- }
- }
-
- if (slice_param->slice_type == SLICE_TYPE_I ||
- slice_param->slice_type == SLICE_TYPE_SI)
- vdenc_context->frame_type = VDENC_FRAME_I;
- else
- vdenc_context->frame_type = VDENC_FRAME_P;
-
- qp = pic_param->pic_init_qp + slice_param->slice_qp_delta;
-
- gen9_vdenc_avc_calculate_mode_cost(ctx, encode_state, encoder_context, qp);
- gen9_vdenc_update_roi_in_streamin_state(ctx, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen9_vdenc_huc_pipe_mode_select(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct huc_pipe_mode_select_parameter *params)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 3);
-
- OUT_BCS_BATCH(batch, HUC_PIPE_MODE_SELECT | (3 - 2));
- OUT_BCS_BATCH(batch,
- (params->huc_stream_object_enable << 10) |
- (params->indirect_stream_out_enable << 4));
- OUT_BCS_BATCH(batch,
- params->media_soft_reset_counter);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vdenc_huc_imem_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct huc_imem_state_parameter *params)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 5);
-
- OUT_BCS_BATCH(batch, HUC_IMEM_STATE | (5 - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, params->huc_firmware_descriptor);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vdenc_huc_dmem_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct huc_dmem_state_parameter *params)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 6);
-
- OUT_BCS_BATCH(batch, HUC_DMEM_STATE | (6 - 2));
- OUT_BUFFER_3DW(batch, params->huc_data_source_res->bo, 0, 0, 0);
- OUT_BCS_BATCH(batch, params->huc_data_destination_base_address);
- OUT_BCS_BATCH(batch, params->huc_data_length);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-/*
-static void
-gen9_vdenc_huc_cfg_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct huc_cfg_state_parameter *params)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 2);
-
- OUT_BCS_BATCH(batch, HUC_CFG_STATE | (2 - 2));
- OUT_BCS_BATCH(batch, !!params->force_reset);
-
- ADVANCE_BCS_BATCH(batch);
-}
-*/
-static void
-gen9_vdenc_huc_virtual_addr_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct huc_virtual_addr_parameter *params)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- int i;
-
- BEGIN_BCS_BATCH(batch, 49);
-
- OUT_BCS_BATCH(batch, HUC_VIRTUAL_ADDR_STATE | (49 - 2));
-
- for (i = 0; i < 16; i++) {
- if (params->regions[i].huc_surface_res && params->regions[i].huc_surface_res->bo)
- OUT_BUFFER_3DW(batch,
- params->regions[i].huc_surface_res->bo,
- !!params->regions[i].is_target, 0, 0);
- else
- OUT_BUFFER_3DW(batch, NULL, 0, 0, 0);
- }
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vdenc_huc_ind_obj_base_addr_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct huc_ind_obj_base_addr_parameter *params)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 11);
-
- OUT_BCS_BATCH(batch, HUC_IND_OBJ_BASE_ADDR_STATE | (11 - 2));
-
- if (params->huc_indirect_stream_in_object_res)
- OUT_BUFFER_3DW(batch,
- params->huc_indirect_stream_in_object_res->bo,
- 0, 0, 0);
- else
- OUT_BUFFER_3DW(batch, NULL, 0, 0, 0);
-
- OUT_BUFFER_2DW(batch, NULL, 0, 0); /* ignore access upper bound */
-
- if (params->huc_indirect_stream_out_object_res)
- OUT_BUFFER_3DW(batch,
- params->huc_indirect_stream_out_object_res->bo,
- 1, 0, 0);
- else
- OUT_BUFFER_3DW(batch, NULL, 0, 0, 0);
-
- OUT_BUFFER_2DW(batch, NULL, 0, 0); /* ignore access upper bound */
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vdenc_huc_store_huc_status2(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gpe_mi_store_register_mem_parameter mi_store_register_mem_params;
- struct gpe_mi_store_data_imm_parameter mi_store_data_imm_params;
-
- /* Write HUC_STATUS2 mask (1 << 6) */
- memset(&mi_store_data_imm_params, 0, sizeof(mi_store_data_imm_params));
- mi_store_data_imm_params.bo = vdenc_context->huc_status2_res.bo;
- mi_store_data_imm_params.offset = 0;
- mi_store_data_imm_params.dw0 = (1 << 6);
- gen8_gpe_mi_store_data_imm(ctx, batch, &mi_store_data_imm_params);
-
- /* Store HUC_STATUS2 */
- memset(&mi_store_register_mem_params, 0, sizeof(mi_store_register_mem_params));
- mi_store_register_mem_params.mmio_offset = VCS0_HUC_STATUS2;
- mi_store_register_mem_params.bo = vdenc_context->huc_status2_res.bo;
- mi_store_register_mem_params.offset = 4;
- gen8_gpe_mi_store_register_mem(ctx, batch, &mi_store_register_mem_params);
-}
-
-static void
-gen9_vdenc_huc_stream_object(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct huc_stream_object_parameter *params)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 5);
-
- OUT_BCS_BATCH(batch, HUC_STREAM_OBJECT | (5 - 2));
- OUT_BCS_BATCH(batch, params->indirect_stream_in_data_length);
- OUT_BCS_BATCH(batch,
- (1 << 31) | /* Must be 1 */
- params->indirect_stream_in_start_address);
- OUT_BCS_BATCH(batch, params->indirect_stream_out_start_address);
- OUT_BCS_BATCH(batch,
- (!!params->huc_bitstream_enable << 29) |
- (params->length_mode << 27) |
- (!!params->stream_out << 26) |
- (!!params->emulation_prevention_byte_removal << 25) |
- (!!params->start_code_search_engine << 24) |
- (params->start_code_byte2 << 16) |
- (params->start_code_byte1 << 8) |
- params->start_code_byte0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vdenc_huc_start(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct huc_start_parameter *params)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 2);
-
- OUT_BCS_BATCH(batch, HUC_START | (2 - 2));
- OUT_BCS_BATCH(batch, !!params->last_stream_object);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vdenc_vd_pipeline_flush(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct vd_pipeline_flush_parameter *params)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 2);
-
- OUT_BCS_BATCH(batch, VD_PIPELINE_FLUSH | (2 - 2));
- OUT_BCS_BATCH(batch,
- params->mfx_pipeline_command_flush << 19 |
- params->mfl_pipeline_command_flush << 18 |
- params->vdenc_pipeline_command_flush << 17 |
- params->hevc_pipeline_command_flush << 16 |
- params->vd_command_message_parser_done << 4 |
- params->mfx_pipeline_done << 3 |
- params->mfl_pipeline_done << 2 |
- params->vdenc_pipeline_done << 1 |
- params->hevc_pipeline_done);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static int
-gen9_vdenc_get_max_mbps(int level_idc)
-{
- int max_mbps = 11880;
-
- switch (level_idc) {
- case 20:
- max_mbps = 11880;
- break;
-
- case 21:
- max_mbps = 19800;
- break;
-
- case 22:
- max_mbps = 20250;
- break;
-
- case 30:
- max_mbps = 40500;
- break;
-
- case 31:
- max_mbps = 108000;
- break;
-
- case 32:
- max_mbps = 216000;
- break;
-
- case 40:
- case 41:
- max_mbps = 245760;
- break;
-
- case 42:
- max_mbps = 522240;
- break;
-
- case 50:
- max_mbps = 589824;
- break;
-
- case 51:
- max_mbps = 983040;
- break;
-
- case 52:
- max_mbps = 2073600;
- break;
-
- default:
- break;
- }
-
- return max_mbps;
-};
-
-static unsigned int
-gen9_vdenc_get_profile_level_max_frame(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- int level_idc)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- double bits_per_mb, tmpf;
- int max_mbps, num_mb_per_frame;
- uint64_t max_byte_per_frame0, max_byte_per_frame1;
- unsigned int ret;
-
- if (level_idc >= 31 && level_idc <= 40)
- bits_per_mb = 96.0;
- else
- bits_per_mb = 192.0;
-
- max_mbps = gen9_vdenc_get_max_mbps(level_idc);
- num_mb_per_frame = vdenc_context->frame_width_in_mbs * vdenc_context->frame_height_in_mbs;
-
- tmpf = (double)num_mb_per_frame;
-
- if (tmpf < max_mbps / 172.0)
- tmpf = max_mbps / 172.0;
-
- max_byte_per_frame0 = (uint64_t)(tmpf * bits_per_mb);
- max_byte_per_frame1 = (uint64_t)(((double)max_mbps * vdenc_context->framerate.den) /
- (double)vdenc_context->framerate.num * bits_per_mb);
-
- /* TODO: check VAEncMiscParameterTypeMaxFrameSize */
- ret = (unsigned int)MIN(max_byte_per_frame0, max_byte_per_frame1);
- ret = (unsigned int)MIN(ret, vdenc_context->frame_height * vdenc_context->frame_height);
-
- return ret;
-}
-
-static int
-gen9_vdenc_calculate_initial_qp(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- float x0 = 0, y0 = 1.19f, x1 = 1.75f, y1 = 1.75f;
- unsigned frame_size;
- int qp, delat_qp;
-
- frame_size = (vdenc_context->frame_width * vdenc_context->frame_height * 3 / 2);
- qp = (int)(1.0 / 1.2 * pow(10.0,
- (log10(frame_size * 2.0 / 3.0 * vdenc_context->framerate.num /
- ((double)vdenc_context->target_bit_rate * 1000.0 * vdenc_context->framerate.den)) - x0) *
- (y1 - y0) / (x1 - x0) + y0) + 0.5);
- qp += 2;
- delat_qp = (int)(9 - (vdenc_context->vbv_buffer_size_in_bit * ((double)vdenc_context->framerate.num) /
- ((double)vdenc_context->target_bit_rate * 1000.0 * vdenc_context->framerate.den)));
- if (delat_qp > 0)
- qp += delat_qp;
-
- qp = CLAMP(1, 51, qp);
- qp--;
-
- if (qp < 0)
- qp = 1;
-
- return qp;
-}
-
-static void
-gen9_vdenc_update_huc_brc_init_dmem(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct huc_brc_init_dmem *dmem;
- VAEncSequenceParameterBufferH264 *seq_param = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- double input_bits_per_frame, bps_ratio;
- int i;
-
- vdenc_context->brc_init_reset_input_bits_per_frame =
- ((double)vdenc_context->max_bit_rate * 1000.0 * vdenc_context->framerate.den) / vdenc_context->framerate.num;
- vdenc_context->brc_init_current_target_buf_full_in_bits = vdenc_context->brc_init_reset_input_bits_per_frame;
- vdenc_context->brc_target_size = vdenc_context->init_vbv_buffer_fullness_in_bit;
-
- dmem = (struct huc_brc_init_dmem *)i965_map_gpe_resource(&vdenc_context->brc_init_reset_dmem_res);
-
- if (!dmem)
- return;
-
- memset(dmem, 0, sizeof(*dmem));
-
- dmem->brc_func = vdenc_context->brc_initted ? 2 : 0;
-
- dmem->frame_width = vdenc_context->frame_width;
- dmem->frame_height = vdenc_context->frame_height;
-
- dmem->target_bitrate = vdenc_context->target_bit_rate * 1000;
- dmem->min_rate = vdenc_context->min_bit_rate * 1000;
- dmem->max_rate = vdenc_context->max_bit_rate * 1000;
- dmem->buffer_size = vdenc_context->vbv_buffer_size_in_bit;
- dmem->init_buffer_fullness = vdenc_context->init_vbv_buffer_fullness_in_bit;
-
- if (dmem->init_buffer_fullness > vdenc_context->init_vbv_buffer_fullness_in_bit)
- dmem->init_buffer_fullness = vdenc_context->vbv_buffer_size_in_bit;
-
- if (vdenc_context->internal_rate_mode == I965_BRC_CBR)
- dmem->brc_flag |= 0x10;
- else if (vdenc_context->internal_rate_mode == I965_BRC_VBR)
- dmem->brc_flag |= 0x20;
-
- dmem->frame_rate_m = vdenc_context->framerate.num;
- dmem->frame_rate_d = vdenc_context->framerate.den;
-
- dmem->profile_level_max_frame = gen9_vdenc_get_profile_level_max_frame(ctx, encoder_context, seq_param->level_idc);
-
- if (vdenc_context->ref_dist && vdenc_context->gop_size > 0)
- dmem->num_p_in_gop = (vdenc_context->gop_size - 1) / vdenc_context->ref_dist;
-
- dmem->min_qp = 10;
- dmem->max_qp = 51;
-
- input_bits_per_frame = ((double)vdenc_context->max_bit_rate * 1000.0 * vdenc_context->framerate.den) / vdenc_context->framerate.num;
- bps_ratio = input_bits_per_frame /
- ((double)vdenc_context->vbv_buffer_size_in_bit * vdenc_context->framerate.den / vdenc_context->framerate.num);
-
- if (bps_ratio < 0.1)
- bps_ratio = 0.1;
-
- if (bps_ratio > 3.5)
- bps_ratio = 3.5;
-
- for (i = 0; i < 4; i++) {
- dmem->dev_thresh_pb0[i] = (char)(-50 * pow(vdenc_brc_dev_threshpb0_fp_neg[i], bps_ratio));
- dmem->dev_thresh_pb0[i + 4] = (char)(50 * pow(vdenc_brc_dev_threshpb0_fp_pos[i], bps_ratio));
-
- dmem->dev_thresh_i0[i] = (char)(-50 * pow(vdenc_brc_dev_threshi0_fp_neg[i], bps_ratio));
- dmem->dev_thresh_i0[i + 4] = (char)(50 * pow(vdenc_brc_dev_threshi0_fp_pos[i], bps_ratio));
-
- dmem->dev_thresh_vbr0[i] = (char)(-50 * pow(vdenc_brc_dev_threshvbr0_neg[i], bps_ratio));
- dmem->dev_thresh_vbr0[i + 4] = (char)(100 * pow(vdenc_brc_dev_threshvbr0_pos[i], bps_ratio));
- }
-
- dmem->init_qp_ip = gen9_vdenc_calculate_initial_qp(ctx, encode_state, encoder_context);
-
- if (vdenc_context->mb_brc_enabled) {
- dmem->mb_qp_ctrl = 1;
- dmem->dist_qp_delta[0] = -5;
- dmem->dist_qp_delta[1] = -2;
- dmem->dist_qp_delta[2] = 2;
- dmem->dist_qp_delta[3] = 5;
- }
-
- dmem->slice_size_ctrl_en = 0; /* TODO: add support for slice size control */
-
- dmem->oscillation_qp_delta = 0; /* TODO: add support */
- dmem->first_iframe_no_hrd_check = 0;/* TODO: add support */
-
- // 2nd re-encode pass if possible
- if (vdenc_context->frame_width_in_mbs * vdenc_context->frame_height_in_mbs >= (3840 * 2160 / 256)) {
- dmem->top_qp_delta_thr_for_2nd_pass = 5;
- dmem->bottom_qp_delta_thr_for_2nd_pass = 5;
- dmem->top_frame_size_threshold_for_2nd_pass = 80;
- dmem->bottom_frame_size_threshold_for_2nd_pass = 80;
- } else {
- dmem->top_qp_delta_thr_for_2nd_pass = 2;
- dmem->bottom_qp_delta_thr_for_2nd_pass = 1;
- dmem->top_frame_size_threshold_for_2nd_pass = 32;
- dmem->bottom_frame_size_threshold_for_2nd_pass = 24;
- }
-
- dmem->qp_select_for_first_pass = 1;
- dmem->mb_header_compensation = 1;
- dmem->delta_qp_adaptation = 1;
- dmem->max_crf_quality_factor = 52;
-
- dmem->crf_quality_factor = 0; /* TODO: add support for CRF */
- dmem->scenario_info = 0;
-
- memcpy(&dmem->estrate_thresh_i0, vdenc_brc_estrate_thresh_i0, sizeof(dmem->estrate_thresh_i0));
- memcpy(&dmem->estrate_thresh_p0, vdenc_brc_estrate_thresh_p0, sizeof(dmem->estrate_thresh_p0));
-
- i965_unmap_gpe_resource(&vdenc_context->brc_init_reset_dmem_res);
-}
-
-static void
-gen9_vdenc_huc_brc_init_reset(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct huc_pipe_mode_select_parameter pipe_mode_select_params;
- struct huc_imem_state_parameter imem_state_params;
- struct huc_dmem_state_parameter dmem_state_params;
- struct huc_virtual_addr_parameter virtual_addr_params;
- struct huc_ind_obj_base_addr_parameter ind_obj_base_addr_params;
- struct huc_stream_object_parameter stream_object_params;
- struct huc_start_parameter start_params;
- struct vd_pipeline_flush_parameter pipeline_flush_params;
- struct gpe_mi_flush_dw_parameter mi_flush_dw_params;
-
- vdenc_context->brc_target_size = vdenc_context->init_vbv_buffer_fullness_in_bit;
-
- memset(&imem_state_params, 0, sizeof(imem_state_params));
- imem_state_params.huc_firmware_descriptor = HUC_BRC_INIT_RESET;
- gen9_vdenc_huc_imem_state(ctx, encoder_context, &imem_state_params);
-
- memset(&pipe_mode_select_params, 0, sizeof(pipe_mode_select_params));
- gen9_vdenc_huc_pipe_mode_select(ctx, encoder_context, &pipe_mode_select_params);
-
- gen9_vdenc_update_huc_brc_init_dmem(ctx, encode_state, encoder_context);
- memset(&dmem_state_params, 0, sizeof(dmem_state_params));
- dmem_state_params.huc_data_source_res = &vdenc_context->brc_init_reset_dmem_res;
- dmem_state_params.huc_data_destination_base_address = HUC_DMEM_DATA_OFFSET;
- dmem_state_params.huc_data_length = ALIGN(sizeof(struct huc_brc_init_dmem), 64);
- gen9_vdenc_huc_dmem_state(ctx, encoder_context, &dmem_state_params);
-
- memset(&virtual_addr_params, 0, sizeof(virtual_addr_params));
- virtual_addr_params.regions[0].huc_surface_res = &vdenc_context->brc_history_buffer_res;
- virtual_addr_params.regions[0].is_target = 1;
- gen9_vdenc_huc_virtual_addr_state(ctx, encoder_context, &virtual_addr_params);
-
- memset(&ind_obj_base_addr_params, 0, sizeof(ind_obj_base_addr_params));
- ind_obj_base_addr_params.huc_indirect_stream_in_object_res = &vdenc_context->huc_dummy_res;
- ind_obj_base_addr_params.huc_indirect_stream_out_object_res = NULL;
- gen9_vdenc_huc_ind_obj_base_addr_state(ctx, encoder_context, &ind_obj_base_addr_params);
-
- memset(&stream_object_params, 0, sizeof(stream_object_params));
- stream_object_params.indirect_stream_in_data_length = 1;
- stream_object_params.indirect_stream_in_start_address = 0;
- gen9_vdenc_huc_stream_object(ctx, encoder_context, &stream_object_params);
-
- gen9_vdenc_huc_store_huc_status2(ctx, encoder_context);
-
- memset(&start_params, 0, sizeof(start_params));
- start_params.last_stream_object = 1;
- gen9_vdenc_huc_start(ctx, encoder_context, &start_params);
-
- memset(&pipeline_flush_params, 0, sizeof(pipeline_flush_params));
- pipeline_flush_params.hevc_pipeline_done = 1;
- pipeline_flush_params.hevc_pipeline_command_flush = 1;
- gen9_vdenc_vd_pipeline_flush(ctx, encoder_context, &pipeline_flush_params);
-
- memset(&mi_flush_dw_params, 0, sizeof(mi_flush_dw_params));
- mi_flush_dw_params.video_pipeline_cache_invalidate = 1;
- gen8_gpe_mi_flush_dw(ctx, batch, &mi_flush_dw_params);
-}
-
-static void
-gen9_vdenc_update_huc_update_dmem(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct huc_brc_update_dmem *dmem;
- int i, num_p_in_gop = 0;
-
- dmem = (struct huc_brc_update_dmem *)i965_map_gpe_resource(&vdenc_context->brc_update_dmem_res[vdenc_context->current_pass]);
-
- if (!dmem)
- return;
-
- dmem->brc_func = 1;
-
- if (vdenc_context->brc_initted && (vdenc_context->current_pass == 0)) {
- vdenc_context->brc_init_previous_target_buf_full_in_bits =
- (uint32_t)(vdenc_context->brc_init_current_target_buf_full_in_bits);
- vdenc_context->brc_init_current_target_buf_full_in_bits += vdenc_context->brc_init_reset_input_bits_per_frame;
- vdenc_context->brc_target_size += vdenc_context->brc_init_reset_input_bits_per_frame;
- }
-
- if (vdenc_context->brc_target_size > vdenc_context->vbv_buffer_size_in_bit)
- vdenc_context->brc_target_size -= vdenc_context->vbv_buffer_size_in_bit;
-
- dmem->target_size = vdenc_context->brc_target_size;
-
- dmem->peak_tx_bits_per_frame = (uint32_t)(vdenc_context->brc_init_current_target_buf_full_in_bits - vdenc_context->brc_init_previous_target_buf_full_in_bits);
-
- dmem->target_slice_size = 0; // TODO: add support for slice size control
-
- memcpy(dmem->start_global_adjust_frame, vdenc_brc_start_global_adjust_frame, sizeof(dmem->start_global_adjust_frame));
- memcpy(dmem->global_rate_ratio_threshold, vdenc_brc_global_rate_ratio_threshold, sizeof(dmem->global_rate_ratio_threshold));
-
- dmem->current_frame_type = (vdenc_context->frame_type + 2) % 3; // I frame:2, P frame:0, B frame:1
-
- memcpy(dmem->start_global_adjust_mult, vdenc_brc_start_global_adjust_mult, sizeof(dmem->start_global_adjust_mult));
- memcpy(dmem->start_global_adjust_div, vdenc_brc_start_global_adjust_div, sizeof(dmem->start_global_adjust_div));
- memcpy(dmem->global_rate_ratio_threshold_qp, vdenc_brc_global_rate_ratio_threshold_qp, sizeof(dmem->global_rate_ratio_threshold_qp));
-
- dmem->current_pak_pass = vdenc_context->current_pass;
- dmem->max_num_passes = 2;
-
- dmem->scene_change_detect_enable = 1;
- dmem->scene_change_prev_intra_percent_threshold = 96;
- dmem->scene_change_cur_intra_perent_threshold = 192;
-
- if (vdenc_context->ref_dist && vdenc_context->gop_size > 0)
- num_p_in_gop = (vdenc_context->gop_size - 1) / vdenc_context->ref_dist;
-
- for (i = 0; i < 2; i++)
- dmem->scene_change_width[i] = MIN((num_p_in_gop + 1) / 5, 6);
-
- if (vdenc_context->is_low_delay)
- dmem->ip_average_coeff = 0;
- else
- dmem->ip_average_coeff = 128;
-
- dmem->skip_frame_size = 0;
- dmem->num_of_frames_skipped = 0;
-
- dmem->roi_source = 0; // TODO: add support for dirty ROI
- dmem->hme_detection_enable = 0; // TODO: support HME kernel
- dmem->hme_cost_enable = 1;
-
- dmem->second_level_batchbuffer_size = 228;
-
- i965_unmap_gpe_resource(&vdenc_context->brc_update_dmem_res[vdenc_context->current_pass]);
-}
-
-static void
-gen9_vdenc_init_mfx_avc_img_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- struct gen9_mfx_avc_img_state *pstate,
- int use_huc)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- VAEncSequenceParameterBufferH264 *seq_param = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
-
- memset(pstate, 0, sizeof(*pstate));
-
- pstate->dw0.value = (MFX_AVC_IMG_STATE | (sizeof(*pstate) / 4 - 2));
-
- pstate->dw1.frame_size_in_mbs_minus1 = vdenc_context->frame_width_in_mbs * vdenc_context->frame_height_in_mbs - 1;
-
- pstate->dw2.frame_width_in_mbs_minus1 = vdenc_context->frame_width_in_mbs - 1;
- pstate->dw2.frame_height_in_mbs_minus1 = vdenc_context->frame_height_in_mbs - 1;
-
- pstate->dw3.image_structure = 0;
- pstate->dw3.weighted_bipred_idc = pic_param->pic_fields.bits.weighted_bipred_idc;
- pstate->dw3.weighted_pred_flag = pic_param->pic_fields.bits.weighted_pred_flag;
- pstate->dw3.brc_domain_rate_control_enable = !!use_huc;
- pstate->dw3.chroma_qp_offset = pic_param->chroma_qp_index_offset;
- pstate->dw3.second_chroma_qp_offset = pic_param->second_chroma_qp_index_offset;
-
- pstate->dw4.field_picture_flag = 0;
- pstate->dw4.mbaff_mode_active = seq_param->seq_fields.bits.mb_adaptive_frame_field_flag;
- pstate->dw4.frame_mb_only_flag = seq_param->seq_fields.bits.frame_mbs_only_flag;
- pstate->dw4.transform_8x8_idct_mode_flag = vdenc_context->transform_8x8_mode_enable;
- pstate->dw4.direct_8x8_interface_flag = seq_param->seq_fields.bits.direct_8x8_inference_flag;
- pstate->dw4.constrained_intra_prediction_flag = pic_param->pic_fields.bits.constrained_intra_pred_flag;
- pstate->dw4.entropy_coding_flag = pic_param->pic_fields.bits.entropy_coding_mode_flag;
- pstate->dw4.mb_mv_format_flag = 1;
- pstate->dw4.chroma_format_idc = seq_param->seq_fields.bits.chroma_format_idc;
- pstate->dw4.mv_unpacked_flag = 1;
- pstate->dw4.insert_test_flag = 0;
- pstate->dw4.load_slice_pointer_flag = 0;
- pstate->dw4.macroblock_stat_enable = 0; /* Always 0 in VDEnc mode */
- pstate->dw4.minimum_frame_size = 0;
-
- pstate->dw5.intra_mb_max_bit_flag = 1;
- pstate->dw5.inter_mb_max_bit_flag = 1;
- pstate->dw5.frame_size_over_flag = 1;
- pstate->dw5.frame_size_under_flag = 1;
- pstate->dw5.intra_mb_ipcm_flag = 1;
- pstate->dw5.mb_rate_ctrl_flag = 0; /* Always 0 in VDEnc mode */
- pstate->dw5.non_first_pass_flag = 0;
- pstate->dw5.aq_enable = pstate->dw5.aq_rounding = 0;
- pstate->dw5.aq_chroma_disable = 1;
-
- pstate->dw6.intra_mb_max_size = 2700;
- pstate->dw6.inter_mb_max_size = 4095;
-
- pstate->dw8.slice_delta_qp_max0 = 0;
- pstate->dw8.slice_delta_qp_max1 = 0;
- pstate->dw8.slice_delta_qp_max2 = 0;
- pstate->dw8.slice_delta_qp_max3 = 0;
-
- pstate->dw9.slice_delta_qp_min0 = 0;
- pstate->dw9.slice_delta_qp_min1 = 0;
- pstate->dw9.slice_delta_qp_min2 = 0;
- pstate->dw9.slice_delta_qp_min3 = 0;
-
- pstate->dw10.frame_bitrate_min = 0;
- pstate->dw10.frame_bitrate_min_unit = 1;
- pstate->dw10.frame_bitrate_min_unit_mode = 1;
- pstate->dw10.frame_bitrate_max = (1 << 14) - 1;
- pstate->dw10.frame_bitrate_max_unit = 1;
- pstate->dw10.frame_bitrate_max_unit_mode = 1;
-
- pstate->dw11.frame_bitrate_min_delta = 0;
- pstate->dw11.frame_bitrate_max_delta = 0;
-
- pstate->dw12.vad_error_logic = 1;
- /* TODO: set paramters DW19/DW20 for slices */
-}
-
-static void
-gen9_vdenc_init_vdenc_img_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- struct gen9_vdenc_img_state *pstate,
- int update_cost)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- VAEncSequenceParameterBufferH264 *seq_param = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
-
- memset(pstate, 0, sizeof(*pstate));
-
- pstate->dw0.value = (VDENC_IMG_STATE | (sizeof(*pstate) / 4 - 2));
-
- if (vdenc_context->frame_type == VDENC_FRAME_I) {
- pstate->dw4.intra_sad_measure_adjustment = 2;
- pstate->dw4.sub_macroblock_sub_partition_mask = 0x70;
-
- pstate->dw5.cre_prefetch_enable = 1;
-
- pstate->dw9.mode0_cost = 10;
- pstate->dw9.mode1_cost = 0;
- pstate->dw9.mode2_cost = 3;
- pstate->dw9.mode3_cost = 30;
-
- pstate->dw20.penalty_for_intra_16x16_non_dc_prediction = 36;
- pstate->dw20.penalty_for_intra_8x8_non_dc_prediction = 12;
- pstate->dw20.penalty_for_intra_4x4_non_dc_prediction = 4;
-
- pstate->dw22.small_mb_size_in_word = 0xff;
- pstate->dw22.large_mb_size_in_word = 0xff;
-
- pstate->dw27.max_hmv_r = 0x2000;
- pstate->dw27.max_vmv_r = 0x200;
-
- pstate->dw33.qp_range_check_upper_bound = 0x33;
- pstate->dw33.qp_range_check_lower_bound = 0x0a;
- pstate->dw33.qp_range_check_value = 0x0f;
- } else {
- pstate->dw2.bidirectional_weight = 0x20;
-
- pstate->dw4.subpel_mode = 3;
- pstate->dw4.bme_disable_for_fbr_message = 1;
- pstate->dw4.inter_sad_measure_adjustment = 2;
- pstate->dw4.intra_sad_measure_adjustment = 2;
- pstate->dw4.sub_macroblock_sub_partition_mask = 0x70;
-
- pstate->dw5.cre_prefetch_enable = 1;
-
- pstate->dw8.non_skip_zero_mv_const_added = 1;
- pstate->dw8.non_skip_mb_mode_const_added = 1;
- pstate->dw8.ref_id_cost_mode_select = 1;
-
- pstate->dw9.mode0_cost = 7;
- pstate->dw9.mode1_cost = 26;
- pstate->dw9.mode2_cost = 30;
- pstate->dw9.mode3_cost = 57;
-
- pstate->dw10.mode4_cost = 8;
- pstate->dw10.mode5_cost = 2;
- pstate->dw10.mode6_cost = 4;
- pstate->dw10.mode7_cost = 6;
-
- pstate->dw11.mode8_cost = 5;
- pstate->dw11.mode9_cost = 0;
- pstate->dw11.ref_id_cost = 4;
- pstate->dw11.chroma_intra_mode_cost = 0;
-
- pstate->dw12_13.mv_cost.dw0.mv0_cost = 0;
- pstate->dw12_13.mv_cost.dw0.mv1_cost = 6;
- pstate->dw12_13.mv_cost.dw0.mv2_cost = 6;
- pstate->dw12_13.mv_cost.dw0.mv3_cost = 9;
- pstate->dw12_13.mv_cost.dw1.mv4_cost = 10;
- pstate->dw12_13.mv_cost.dw1.mv5_cost = 13;
- pstate->dw12_13.mv_cost.dw1.mv6_cost = 14;
- pstate->dw12_13.mv_cost.dw1.mv7_cost = 24;
-
- pstate->dw20.penalty_for_intra_16x16_non_dc_prediction = 36;
- pstate->dw20.penalty_for_intra_8x8_non_dc_prediction = 12;
- pstate->dw20.penalty_for_intra_4x4_non_dc_prediction = 4;
-
- pstate->dw22.small_mb_size_in_word = 0xff;
- pstate->dw22.large_mb_size_in_word = 0xff;
-
- pstate->dw27.max_hmv_r = 0x2000;
- pstate->dw27.max_vmv_r = 0x200;
-
- pstate->dw31.offset0_for_zone0_neg_zone1_boundary = 800;
-
- pstate->dw32.offset1_for_zone1_neg_zone2_boundary = 1600;
- pstate->dw32.offset2_for_zone2_neg_zone3_boundary = 2400;
-
- pstate->dw33.qp_range_check_upper_bound = 0x33;
- pstate->dw33.qp_range_check_lower_bound = 0x0a;
- pstate->dw33.qp_range_check_value = 0x0f;
-
- pstate->dw34.midpoint_distortion = 0x640;
- }
-
- /* ROI will be updated in HuC kernel for CBR/VBR */
- if (!vdenc_context->brc_enabled && vdenc_context->num_roi) {
- pstate->dw34.roi_enable = 1;
-
- pstate->dw30.roi_qp_adjustment_for_zone1 = CLAMP(-8, 7, vdenc_context->roi[0].value);
-
- if (vdenc_context->num_roi > 1)
- pstate->dw30.roi_qp_adjustment_for_zone2 = CLAMP(-8, 7, vdenc_context->roi[1].value);
-
- if (vdenc_context->num_roi > 2)
- pstate->dw30.roi_qp_adjustment_for_zone3 = CLAMP(-8, 7, vdenc_context->roi[2].value);
- }
-
- pstate->dw1.transform_8x8_flag = vdenc_context->transform_8x8_mode_enable;
- pstate->dw1.extended_pak_obj_cmd_enable = !!vdenc_context->use_extended_pak_obj_cmd;
-
- pstate->dw3.picture_width = vdenc_context->frame_width_in_mbs;
-
- pstate->dw4.forward_transform_skip_check_enable = 1; /* TODO: double-check it */
-
- pstate->dw5.picture_height_minus1 = vdenc_context->frame_height_in_mbs - 1;
- pstate->dw5.picture_type = vdenc_context->frame_type;
- pstate->dw5.constrained_intra_prediction_flag = pic_param->pic_fields.bits.constrained_intra_pred_flag;
-
- if (vdenc_context->frame_type == VDENC_FRAME_P) {
- pstate->dw5.hme_ref1_disable = vdenc_context->num_refs[0] == 1 ? 1 : 0;
- }
-
- pstate->dw5.mb_slice_threshold_value = 0;
-
- pstate->dw6.slice_macroblock_height_minus1 = vdenc_context->frame_height_in_mbs - 1; /* single slice onlye */
-
- if (pstate->dw1.transform_8x8_flag)
- pstate->dw8.luma_intra_partition_mask = 0;
- else
- pstate->dw8.luma_intra_partition_mask = (1 << 1); /* disable transform_8x8 */
-
- pstate->dw14.qp_prime_y = pic_param->pic_init_qp + slice_param->slice_qp_delta; /* TODO: check whether it is OK to use the first slice only */
-
- if (update_cost) {
- pstate->dw9.mode0_cost = vdenc_context->mode_cost[0];
- pstate->dw9.mode1_cost = vdenc_context->mode_cost[1];
- pstate->dw9.mode2_cost = vdenc_context->mode_cost[2];
- pstate->dw9.mode3_cost = vdenc_context->mode_cost[3];
-
- pstate->dw10.mode4_cost = vdenc_context->mode_cost[4];
- pstate->dw10.mode5_cost = vdenc_context->mode_cost[5];
- pstate->dw10.mode6_cost = vdenc_context->mode_cost[6];
- pstate->dw10.mode7_cost = vdenc_context->mode_cost[7];
-
- pstate->dw11.mode8_cost = vdenc_context->mode_cost[8];
- pstate->dw11.mode9_cost = vdenc_context->mode_cost[9];
- pstate->dw11.ref_id_cost = vdenc_context->mode_cost[10];
- pstate->dw11.chroma_intra_mode_cost = vdenc_context->mode_cost[11];
-
- pstate->dw12_13.mv_cost.dw0.mv0_cost = vdenc_context->mv_cost[0];
- pstate->dw12_13.mv_cost.dw0.mv1_cost = vdenc_context->mv_cost[1];
- pstate->dw12_13.mv_cost.dw0.mv2_cost = vdenc_context->mv_cost[2];
- pstate->dw12_13.mv_cost.dw0.mv3_cost = vdenc_context->mv_cost[3];
- pstate->dw12_13.mv_cost.dw1.mv4_cost = vdenc_context->mv_cost[4];
- pstate->dw12_13.mv_cost.dw1.mv5_cost = vdenc_context->mv_cost[5];
- pstate->dw12_13.mv_cost.dw1.mv6_cost = vdenc_context->mv_cost[6];
- pstate->dw12_13.mv_cost.dw1.mv7_cost = vdenc_context->mv_cost[7];
-
- pstate->dw28_29.hme_mv_cost.dw0.mv0_cost = vdenc_context->hme_mv_cost[0];
- pstate->dw28_29.hme_mv_cost.dw0.mv1_cost = vdenc_context->hme_mv_cost[1];
- pstate->dw28_29.hme_mv_cost.dw0.mv2_cost = vdenc_context->hme_mv_cost[2];
- pstate->dw28_29.hme_mv_cost.dw0.mv3_cost = vdenc_context->hme_mv_cost[3];
- pstate->dw28_29.hme_mv_cost.dw1.mv4_cost = vdenc_context->hme_mv_cost[4];
- pstate->dw28_29.hme_mv_cost.dw1.mv5_cost = vdenc_context->hme_mv_cost[5];
- pstate->dw28_29.hme_mv_cost.dw1.mv6_cost = vdenc_context->hme_mv_cost[6];
- pstate->dw28_29.hme_mv_cost.dw1.mv7_cost = vdenc_context->hme_mv_cost[7];
- }
-
- pstate->dw27.max_vmv_r = gen9_vdenc_get_max_vmv_range(seq_param->level_idc);
-
- pstate->dw34.image_state_qp_override = (vdenc_context->internal_rate_mode == I965_BRC_CQP) ? 1 : 0;
-
- /* TODO: check rolling I */
-
- /* TODO: handle ROI */
-
- /* TODO: check stream in support */
-}
-
-static void
-gen9_vdenc_init_img_states(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct gen9_mfx_avc_img_state *mfx_img_cmd;
- struct gen9_vdenc_img_state *vdenc_img_cmd;
- char *pbuffer;
-
- pbuffer = i965_map_gpe_resource(&vdenc_context->vdenc_avc_image_state_res);
-
- if (!pbuffer)
- return;
-
- mfx_img_cmd = (struct gen9_mfx_avc_img_state *)pbuffer;
- gen9_vdenc_init_mfx_avc_img_state(ctx, encode_state, encoder_context, mfx_img_cmd, 1);
- pbuffer += sizeof(*mfx_img_cmd);
-
- vdenc_img_cmd = (struct gen9_vdenc_img_state *)pbuffer;
- gen9_vdenc_init_vdenc_img_state(ctx, encode_state, encoder_context, vdenc_img_cmd, 0);
- pbuffer += sizeof(*vdenc_img_cmd);
-
- /* Add batch buffer end command */
- *((unsigned int *)pbuffer) = MI_BATCH_BUFFER_END;
-
- i965_unmap_gpe_resource(&vdenc_context->vdenc_avc_image_state_res);
-}
-
-static void
-gen9_vdenc_huc_brc_update_constant_data(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- char *pbuffer;
-
- pbuffer = i965_map_gpe_resource(&vdenc_context->brc_constant_data_res);
-
- if (!pbuffer)
- return;
-
- if (vdenc_context->internal_rate_mode == I965_BRC_VBR) {
- memcpy(gen9_brc_update_constant_data.dist_qp_adj_tab_i, dist_qp_adj_tab_i_vbr, sizeof(dist_qp_adj_tab_i_vbr));
- memcpy(gen9_brc_update_constant_data.dist_qp_adj_tab_p, dist_qp_adj_tab_p_vbr, sizeof(dist_qp_adj_tab_p_vbr));
- memcpy(gen9_brc_update_constant_data.dist_qp_adj_tab_b, dist_qp_adj_tab_b_vbr, sizeof(dist_qp_adj_tab_b_vbr));
- memcpy(gen9_brc_update_constant_data.buf_rate_adj_tab_i, buf_rate_adj_tab_i_vbr, sizeof(buf_rate_adj_tab_i_vbr));
- memcpy(gen9_brc_update_constant_data.buf_rate_adj_tab_p, buf_rate_adj_tab_p_vbr, sizeof(buf_rate_adj_tab_p_vbr));
- memcpy(gen9_brc_update_constant_data.buf_rate_adj_tab_b, buf_rate_adj_tab_b_vbr, sizeof(buf_rate_adj_tab_b_vbr));
- }
-
- memcpy(pbuffer, &gen9_brc_update_constant_data, sizeof(gen9_brc_update_constant_data));
-
- i965_unmap_gpe_resource(&vdenc_context->brc_constant_data_res);
-}
-
-static void
-gen9_vdenc_huc_brc_update(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct huc_pipe_mode_select_parameter pipe_mode_select_params;
- struct huc_imem_state_parameter imem_state_params;
- struct huc_dmem_state_parameter dmem_state_params;
- struct huc_virtual_addr_parameter virtual_addr_params;
- struct huc_ind_obj_base_addr_parameter ind_obj_base_addr_params;
- struct huc_stream_object_parameter stream_object_params;
- struct huc_start_parameter start_params;
- struct vd_pipeline_flush_parameter pipeline_flush_params;
- struct gpe_mi_store_register_mem_parameter mi_store_register_mem_params;
- struct gpe_mi_store_data_imm_parameter mi_store_data_imm_params;
- struct gpe_mi_flush_dw_parameter mi_flush_dw_params;
-
- memset(&mi_flush_dw_params, 0, sizeof(mi_flush_dw_params));
- mi_flush_dw_params.video_pipeline_cache_invalidate = 1;
- gen8_gpe_mi_flush_dw(ctx, batch, &mi_flush_dw_params);
-
- if (!vdenc_context->brc_initted || vdenc_context->brc_need_reset) {
- struct gpe_mi_conditional_batch_buffer_end_parameter mi_conditional_batch_buffer_end_params;
-
- memset(&mi_conditional_batch_buffer_end_params, 0, sizeof(mi_conditional_batch_buffer_end_params));
- mi_conditional_batch_buffer_end_params.bo = vdenc_context->huc_status2_res.bo;
- gen9_gpe_mi_conditional_batch_buffer_end(ctx, batch, &mi_conditional_batch_buffer_end_params);
- }
-
- gen9_vdenc_init_img_states(ctx, encode_state, encoder_context);
-
- memset(&imem_state_params, 0, sizeof(imem_state_params));
- imem_state_params.huc_firmware_descriptor = HUC_BRC_UPDATE;
- gen9_vdenc_huc_imem_state(ctx, encoder_context, &imem_state_params);
-
- memset(&pipe_mode_select_params, 0, sizeof(pipe_mode_select_params));
- gen9_vdenc_huc_pipe_mode_select(ctx, encoder_context, &pipe_mode_select_params);
-
- gen9_vdenc_update_huc_update_dmem(ctx, encoder_context);
- memset(&dmem_state_params, 0, sizeof(dmem_state_params));
- dmem_state_params.huc_data_source_res = &vdenc_context->brc_update_dmem_res[vdenc_context->current_pass];
- dmem_state_params.huc_data_destination_base_address = HUC_DMEM_DATA_OFFSET;
- dmem_state_params.huc_data_length = ALIGN(sizeof(struct huc_brc_update_dmem), 64);
- gen9_vdenc_huc_dmem_state(ctx, encoder_context, &dmem_state_params);
-
- gen9_vdenc_huc_brc_update_constant_data(ctx, encode_state, encoder_context);
- memset(&virtual_addr_params, 0, sizeof(virtual_addr_params));
- virtual_addr_params.regions[0].huc_surface_res = &vdenc_context->brc_history_buffer_res;
- virtual_addr_params.regions[0].is_target = 1;
- virtual_addr_params.regions[1].huc_surface_res = &vdenc_context->vdenc_statistics_res;
- virtual_addr_params.regions[2].huc_surface_res = &vdenc_context->pak_statistics_res;
- virtual_addr_params.regions[3].huc_surface_res = &vdenc_context->vdenc_avc_image_state_res;
- virtual_addr_params.regions[4].huc_surface_res = &vdenc_context->hme_detection_summary_buffer_res;
- virtual_addr_params.regions[4].is_target = 1;
- virtual_addr_params.regions[5].huc_surface_res = &vdenc_context->brc_constant_data_res;
- virtual_addr_params.regions[6].huc_surface_res = &vdenc_context->second_level_batch_res;
- virtual_addr_params.regions[6].is_target = 1;
- gen9_vdenc_huc_virtual_addr_state(ctx, encoder_context, &virtual_addr_params);
-
- memset(&ind_obj_base_addr_params, 0, sizeof(ind_obj_base_addr_params));
- ind_obj_base_addr_params.huc_indirect_stream_in_object_res = &vdenc_context->huc_dummy_res;
- ind_obj_base_addr_params.huc_indirect_stream_out_object_res = NULL;
- gen9_vdenc_huc_ind_obj_base_addr_state(ctx, encoder_context, &ind_obj_base_addr_params);
-
- memset(&stream_object_params, 0, sizeof(stream_object_params));
- stream_object_params.indirect_stream_in_data_length = 1;
- stream_object_params.indirect_stream_in_start_address = 0;
- gen9_vdenc_huc_stream_object(ctx, encoder_context, &stream_object_params);
-
- gen9_vdenc_huc_store_huc_status2(ctx, encoder_context);
-
- memset(&start_params, 0, sizeof(start_params));
- start_params.last_stream_object = 1;
- gen9_vdenc_huc_start(ctx, encoder_context, &start_params);
-
- memset(&pipeline_flush_params, 0, sizeof(pipeline_flush_params));
- pipeline_flush_params.hevc_pipeline_done = 1;
- pipeline_flush_params.hevc_pipeline_command_flush = 1;
- gen9_vdenc_vd_pipeline_flush(ctx, encoder_context, &pipeline_flush_params);
-
- memset(&mi_flush_dw_params, 0, sizeof(mi_flush_dw_params));
- mi_flush_dw_params.video_pipeline_cache_invalidate = 1;
- gen8_gpe_mi_flush_dw(ctx, batch, &mi_flush_dw_params);
-
- /* Store HUC_STATUS */
- memset(&mi_store_register_mem_params, 0, sizeof(mi_store_register_mem_params));
- mi_store_register_mem_params.mmio_offset = VCS0_HUC_STATUS;
- mi_store_register_mem_params.bo = vdenc_context->huc_status_res.bo;
- gen8_gpe_mi_store_register_mem(ctx, batch, &mi_store_register_mem_params);
-
- /* Write HUC_STATUS mask (1 << 31) */
- memset(&mi_store_data_imm_params, 0, sizeof(mi_store_data_imm_params));
- mi_store_data_imm_params.bo = vdenc_context->huc_status_res.bo;
- mi_store_data_imm_params.offset = 4;
- mi_store_data_imm_params.dw0 = (1 << 31);
- gen8_gpe_mi_store_data_imm(ctx, batch, &mi_store_data_imm_params);
-}
-
-static void
-gen9_vdenc_mfx_pipe_mode_select(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 5);
-
- OUT_BCS_BATCH(batch, MFX_PIPE_MODE_SELECT | (5 - 2));
- OUT_BCS_BATCH(batch,
- (1 << 29) |
- (MFX_LONG_MODE << 17) | /* Must be long format for encoder */
- (MFD_MODE_VLD << 15) |
- (1 << 13) | /* VDEnc mode */
- ((!!vdenc_context->post_deblocking_output_res.bo) << 9) | /* Post Deblocking Output */
- ((!!vdenc_context->pre_deblocking_output_res.bo) << 8) | /* Pre Deblocking Output */
- (1 << 7) | /* Scaled surface enable */
- (1 << 6) | /* Frame statistics stream out enable, always '1' in VDEnc mode */
- (1 << 4) | /* encoding mode */
- (MFX_FORMAT_AVC << 0));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vdenc_mfx_surface_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct i965_gpe_resource *gpe_resource,
- int id)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 6);
-
- OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2));
- OUT_BCS_BATCH(batch, id);
- OUT_BCS_BATCH(batch,
- ((gpe_resource->height - 1) << 18) |
- ((gpe_resource->width - 1) << 4));
- OUT_BCS_BATCH(batch,
- (MFX_SURFACE_PLANAR_420_8 << 28) | /* 420 planar YUV surface */
- (1 << 27) | /* must be 1 for interleave U/V, hardware requirement */
- ((gpe_resource->pitch - 1) << 3) | /* pitch */
- (0 << 2) | /* must be 0 for interleave U/V */
- (1 << 1) | /* must be tiled */
- (I965_TILEWALK_YMAJOR << 0)); /* tile walk, TILEWALK_YMAJOR */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* must be 0 for interleave U/V */
- (gpe_resource->y_cb_offset)); /* y offset for U(cb) */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* must be 0 for interleave U/V */
- (gpe_resource->y_cb_offset)); /* y offset for U(cb) */
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vdenc_mfx_pipe_buf_addr_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- int i;
-
- BEGIN_BCS_BATCH(batch, 65);
-
- OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (65 - 2));
-
- /* the DW1-3 is for pre_deblocking */
- OUT_BUFFER_3DW(batch, vdenc_context->pre_deblocking_output_res.bo, 1, 0, 0);
-
- /* the DW4-6 is for the post_deblocking */
- OUT_BUFFER_3DW(batch, vdenc_context->post_deblocking_output_res.bo, 1, 0, 0);
-
- /* the DW7-9 is for the uncompressed_picture */
- OUT_BUFFER_3DW(batch, vdenc_context->uncompressed_input_surface_res.bo, 0, 0, 0);
-
- /* the DW10-12 is for PAK information (write) */
- OUT_BUFFER_3DW(batch, vdenc_context->pak_statistics_res.bo, 1, 0, 0);
-
- /* the DW13-15 is for the intra_row_store_scratch */
- OUT_BUFFER_3DW(batch, vdenc_context->mfx_intra_row_store_scratch_res.bo, 1, 0, 0);
-
- /* the DW16-18 is for the deblocking filter */
- OUT_BUFFER_3DW(batch, vdenc_context->mfx_deblocking_filter_row_store_scratch_res.bo, 1, 0, 0);
-
- /* the DW 19-50 is for Reference pictures*/
- for (i = 0; i < ARRAY_ELEMS(vdenc_context->list_reference_res); i++) {
- OUT_BUFFER_2DW(batch, vdenc_context->list_reference_res[i].bo, 0, 0);
- }
-
- /* DW 51, reference picture attributes */
- OUT_BCS_BATCH(batch, 0);
-
- /* The DW 52-54 is for PAK information (read) */
- OUT_BUFFER_3DW(batch, vdenc_context->pak_statistics_res.bo, 0, 0, 0);
-
- /* the DW 55-57 is the ILDB buffer */
- OUT_BUFFER_3DW(batch, NULL, 0, 0, 0);
-
- /* the DW 58-60 is the second ILDB buffer */
- OUT_BUFFER_3DW(batch, NULL, 0, 0, 0);
-
- /* DW 61, memory compress enable & mode */
- OUT_BCS_BATCH(batch, 0);
-
- /* the DW 62-64 is the 4x Down Scaling surface */
- OUT_BUFFER_3DW(batch, vdenc_context->scaled_4x_recon_surface_res.bo, 0, 0, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vdenc_mfx_ind_obj_base_addr_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 26);
-
- OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (26 - 2));
- /* The DW1-5 is for the MFX indirect bistream offset, ignore for VDEnc mode */
- OUT_BUFFER_3DW(batch, NULL, 0, 0, 0);
- OUT_BUFFER_2DW(batch, NULL, 0, 0);
-
- /* the DW6-10 is for MFX Indirect MV Object Base Address, ignore for VDEnc mode */
- OUT_BUFFER_3DW(batch, NULL, 0, 0, 0);
- OUT_BUFFER_2DW(batch, NULL, 0, 0);
-
- /* The DW11-15 is for MFX IT-COFF. Not used on encoder */
- OUT_BUFFER_3DW(batch, NULL, 0, 0, 0);
- OUT_BUFFER_2DW(batch, NULL, 0, 0);
-
- /* The DW16-20 is for MFX indirect DBLK. Not used on encoder */
- OUT_BUFFER_3DW(batch, NULL, 0, 0, 0);
- OUT_BUFFER_2DW(batch, NULL, 0, 0);
-
- /* The DW21-25 is for MFC Indirect PAK-BSE Object Base Address for Encoder
- * Note: an offset is specified in MFX_AVC_SLICE_STATE
- */
- OUT_BUFFER_3DW(batch,
- vdenc_context->compressed_bitstream.res.bo,
- 1,
- 0,
- 0);
- OUT_BUFFER_2DW(batch,
- vdenc_context->compressed_bitstream.res.bo,
- 1,
- vdenc_context->compressed_bitstream.end_offset);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vdenc_mfx_bsp_buf_base_addr_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 10);
-
- OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (10 - 2));
-
- /* The DW1-3 is for bsd/mpc row store scratch buffer */
- OUT_BUFFER_3DW(batch, vdenc_context->mfx_bsd_mpc_row_store_scratch_res.bo, 1, 0, 0);
-
- /* The DW4-6 is for MPR Row Store Scratch Buffer Base Address, ignore for encoder */
- OUT_BUFFER_3DW(batch, NULL, 0, 0, 0);
-
- /* The DW7-9 is for Bitplane Read Buffer Base Address, ignore for encoder */
- OUT_BUFFER_3DW(batch, NULL, 0, 0, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vdenc_mfx_qm_state(VADriverContextP ctx,
- int qm_type,
- unsigned int *qm,
- int qm_length,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- unsigned int qm_buffer[16];
-
- assert(qm_length <= 16);
- assert(sizeof(*qm) == 4);
- memcpy(qm_buffer, qm, qm_length * 4);
-
- BEGIN_BCS_BATCH(batch, 18);
- OUT_BCS_BATCH(batch, MFX_QM_STATE | (18 - 2));
- OUT_BCS_BATCH(batch, qm_type << 0);
- intel_batchbuffer_data(batch, qm_buffer, 16 * 4);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vdenc_mfx_avc_qm_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- /* TODO: add support for non flat matrix */
- unsigned int qm[16] = {
- 0x10101010, 0x10101010, 0x10101010, 0x10101010,
- 0x10101010, 0x10101010, 0x10101010, 0x10101010,
- 0x10101010, 0x10101010, 0x10101010, 0x10101010,
- 0x10101010, 0x10101010, 0x10101010, 0x10101010
- };
-
- gen9_vdenc_mfx_qm_state(ctx, MFX_QM_AVC_4X4_INTRA_MATRIX, qm, 12, encoder_context);
- gen9_vdenc_mfx_qm_state(ctx, MFX_QM_AVC_4X4_INTER_MATRIX, qm, 12, encoder_context);
- gen9_vdenc_mfx_qm_state(ctx, MFX_QM_AVC_8x8_INTRA_MATRIX, qm, 16, encoder_context);
- gen9_vdenc_mfx_qm_state(ctx, MFX_QM_AVC_8x8_INTER_MATRIX, qm, 16, encoder_context);
-}
-
-static void
-gen9_vdenc_mfx_fqm_state(VADriverContextP ctx,
- int fqm_type,
- unsigned int *fqm,
- int fqm_length,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- unsigned int fqm_buffer[32];
-
- assert(fqm_length <= 32);
- assert(sizeof(*fqm) == 4);
- memcpy(fqm_buffer, fqm, fqm_length * 4);
-
- BEGIN_BCS_BATCH(batch, 34);
- OUT_BCS_BATCH(batch, MFX_FQM_STATE | (34 - 2));
- OUT_BCS_BATCH(batch, fqm_type << 0);
- intel_batchbuffer_data(batch, fqm_buffer, 32 * 4);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vdenc_mfx_avc_fqm_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- /* TODO: add support for non flat matrix */
- unsigned int qm[32] = {
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000,
- 0x10001000, 0x10001000, 0x10001000, 0x10001000
- };
-
- gen9_vdenc_mfx_fqm_state(ctx, MFX_QM_AVC_4X4_INTRA_MATRIX, qm, 24, encoder_context);
- gen9_vdenc_mfx_fqm_state(ctx, MFX_QM_AVC_4X4_INTER_MATRIX, qm, 24, encoder_context);
- gen9_vdenc_mfx_fqm_state(ctx, MFX_QM_AVC_8x8_INTRA_MATRIX, qm, 32, encoder_context);
- gen9_vdenc_mfx_fqm_state(ctx, MFX_QM_AVC_8x8_INTER_MATRIX, qm, 32, encoder_context);
-}
-
-static void
-gen9_vdenc_mfx_avc_img_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen9_mfx_avc_img_state mfx_img_cmd;
-
- gen9_vdenc_init_mfx_avc_img_state(ctx, encode_state, encoder_context, &mfx_img_cmd, 0);
-
- BEGIN_BCS_BATCH(batch, (sizeof(mfx_img_cmd) >> 2));
- intel_batchbuffer_data(batch, &mfx_img_cmd, sizeof(mfx_img_cmd));
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vdenc_vdenc_pipe_mode_select(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 2);
-
- OUT_BCS_BATCH(batch, VDENC_PIPE_MODE_SELECT | (2 - 2));
- OUT_BCS_BATCH(batch,
- (vdenc_context->vdenc_streamin_enable << 9) |
- (vdenc_context->vdenc_pak_threshold_check_enable << 8) |
- (1 << 7) | /* Tlb prefetch enable */
- (1 << 5) | /* Frame Statistics Stream-Out Enable */
- (VDENC_CODEC_AVC << 0));
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vdenc_vdenc_surface_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct i965_gpe_resource *gpe_resource,
- int vdenc_surface_cmd)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 6);
-
- OUT_BCS_BATCH(batch, vdenc_surface_cmd | (6 - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- ((gpe_resource->height - 1) << 18) |
- ((gpe_resource->width - 1) << 4));
- OUT_BCS_BATCH(batch,
- (VDENC_SURFACE_PLANAR_420_8 << 28) | /* 420 planar YUV surface only on SKL */
- (1 << 27) | /* must be 1 for interleave U/V, hardware requirement */
- ((gpe_resource->pitch - 1) << 3) | /* pitch */
- (0 << 2) | /* must be 0 for interleave U/V */
- (1 << 1) | /* must be tiled */
- (I965_TILEWALK_YMAJOR << 0)); /* tile walk, TILEWALK_YMAJOR */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* must be 0 for interleave U/V */
- (gpe_resource->y_cb_offset)); /* y offset for U(cb) */
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* must be 0 for interleave U/V */
- (gpe_resource->y_cb_offset)); /* y offset for v(cr) */
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vdenc_vdenc_src_surface_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct i965_gpe_resource *gpe_resource)
-{
- gen9_vdenc_vdenc_surface_state(ctx, encoder_context, gpe_resource, VDENC_SRC_SURFACE_STATE);
-}
-
-static void
-gen9_vdenc_vdenc_ref_surface_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct i965_gpe_resource *gpe_resource)
-{
- gen9_vdenc_vdenc_surface_state(ctx, encoder_context, gpe_resource, VDENC_REF_SURFACE_STATE);
-}
-
-static void
-gen9_vdenc_vdenc_ds_ref_surface_state(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct i965_gpe_resource *gpe_resource)
-{
- gen9_vdenc_vdenc_surface_state(ctx, encoder_context, gpe_resource, VDENC_DS_REF_SURFACE_STATE);
-}
-
-static void
-gen9_vdenc_vdenc_pipe_buf_addr_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 37);
-
- OUT_BCS_BATCH(batch, VDENC_PIPE_BUF_ADDR_STATE | (37 - 2));
-
- /* DW1-6 for DS FWD REF0/REF1 */
- OUT_BUFFER_3DW(batch, vdenc_context->list_scaled_4x_reference_res[vdenc_context->list_ref_idx[0][0]].bo, 0, 0, 0);
- OUT_BUFFER_3DW(batch, vdenc_context->list_scaled_4x_reference_res[vdenc_context->list_ref_idx[0][1]].bo, 0, 0, 0);
-
- /* DW7-9 for DS BWD REF0, ignored on SKL */
- OUT_BUFFER_3DW(batch, NULL, 0, 0, 0);
-
- /* DW10-12 for uncompressed input data */
- OUT_BUFFER_3DW(batch, vdenc_context->uncompressed_input_surface_res.bo, 0, 0, 0);
-
- /* DW13-DW15 for streamin data */
- if (vdenc_context->vdenc_streamin_enable)
- OUT_BUFFER_3DW(batch, vdenc_context->vdenc_streamin_res.bo, 0, 0, 0);
- else
- OUT_BUFFER_3DW(batch, NULL, 0, 0, 0);
-
- /* DW16-DW18 for row scratch buffer */
- OUT_BUFFER_3DW(batch, vdenc_context->vdenc_row_store_scratch_res.bo, 1, 0, 0);
-
- /* DW19-DW21, ignored on SKL */
- OUT_BUFFER_3DW(batch, NULL, 0, 0, 0);
-
- /* DW22-DW27 for FWD REF0/REF1 */
- OUT_BUFFER_3DW(batch, vdenc_context->list_reference_res[vdenc_context->list_ref_idx[0][0]].bo, 0, 0, 0);
- OUT_BUFFER_3DW(batch, vdenc_context->list_reference_res[vdenc_context->list_ref_idx[0][1]].bo, 0, 0, 0);
-
- /* DW28-DW30 for FWD REF2, ignored on SKL */
- OUT_BUFFER_3DW(batch, NULL, 0, 0, 0);
-
- /* DW31-DW33 for BDW REF0, ignored on SKL */
- OUT_BUFFER_3DW(batch, NULL, 0, 0, 0);
-
- /* DW34-DW36 for VDEnc statistics streamout */
- OUT_BUFFER_3DW(batch, vdenc_context->vdenc_statistics_res.bo, 1, 0, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vdenc_vdenc_const_qpt_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 61);
-
- OUT_BCS_BATCH(batch, VDENC_CONST_QPT_STATE | (61 - 2));
-
- if (vdenc_context->frame_type == VDENC_FRAME_I) {
- /* DW1-DW11 */
- intel_batchbuffer_data(batch, vdenc_const_qp_lambda, sizeof(vdenc_const_qp_lambda));
-
- /* DW12-DW25 */
- intel_batchbuffer_data(batch, vdenc_const_skip_threshold, sizeof(vdenc_const_skip_threshold));
-
- /* DW26-DW39 */
- intel_batchbuffer_data(batch, vdenc_const_sic_forward_transform_coeff_threshold_0, sizeof(vdenc_const_sic_forward_transform_coeff_threshold_0));
-
- /* DW40-DW46 */
- intel_batchbuffer_data(batch, vdenc_const_sic_forward_transform_coeff_threshold_1, sizeof(vdenc_const_sic_forward_transform_coeff_threshold_1));
-
- /* DW47-DW53 */
- intel_batchbuffer_data(batch, vdenc_const_sic_forward_transform_coeff_threshold_2, sizeof(vdenc_const_sic_forward_transform_coeff_threshold_2));
-
- /* DW54-DW60 */
- intel_batchbuffer_data(batch, vdenc_const_sic_forward_transform_coeff_threshold_3, sizeof(vdenc_const_sic_forward_transform_coeff_threshold_3));
- } else {
- int i;
-
- for (i = 0; i < 28; i++) {
- vdenc_const_skip_threshold_p[i] *= 3;
- }
-
- /* DW1-DW11 */
- intel_batchbuffer_data(batch, vdenc_const_qp_lambda_p, sizeof(vdenc_const_qp_lambda_p));
-
- /* DW12-DW25 */
- intel_batchbuffer_data(batch, vdenc_const_skip_threshold_p, sizeof(vdenc_const_skip_threshold_p));
-
- /* DW26-DW39 */
- intel_batchbuffer_data(batch, vdenc_const_sic_forward_transform_coeff_threshold_0_p, sizeof(vdenc_const_sic_forward_transform_coeff_threshold_0_p));
-
- /* DW40-DW46 */
- intel_batchbuffer_data(batch, vdenc_const_sic_forward_transform_coeff_threshold_1_p, sizeof(vdenc_const_sic_forward_transform_coeff_threshold_1_p));
-
- /* DW47-DW53 */
- intel_batchbuffer_data(batch, vdenc_const_sic_forward_transform_coeff_threshold_2_p, sizeof(vdenc_const_sic_forward_transform_coeff_threshold_2_p));
-
- /* DW54-DW60 */
- intel_batchbuffer_data(batch, vdenc_const_sic_forward_transform_coeff_threshold_3_p, sizeof(vdenc_const_sic_forward_transform_coeff_threshold_3_p));
- }
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vdenc_vdenc_walker_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 2);
-
- OUT_BCS_BATCH(batch, VDENC_WALKER_STATE | (2 - 2));
- OUT_BCS_BATCH(batch, 0); /* All fields are set to 0 */
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen95_vdenc_vdecn_weihgtsoffsets_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- VAEncSliceParameterBufferH264 *slice_param)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
-
- BEGIN_BCS_BATCH(batch, 3);
-
- OUT_BCS_BATCH(batch, VDENC_WEIGHTSOFFSETS_STATE | (3 - 2));
-
- if (pic_param->pic_fields.bits.weighted_pred_flag == 1) {
- OUT_BCS_BATCH(batch, (slice_param->luma_offset_l0[1] << 24 |
- slice_param->luma_weight_l0[1] << 16 |
- slice_param->luma_offset_l0[0] << 8 |
- slice_param->luma_weight_l0[0] << 0));
- OUT_BCS_BATCH(batch, (slice_param->luma_offset_l0[2] << 8 |
- slice_param->luma_weight_l0[2] << 0));
- } else {
- OUT_BCS_BATCH(batch, (0 << 24 |
- 1 << 16 |
- 0 << 8 |
- 1 << 0));
- OUT_BCS_BATCH(batch, (0 << 8 |
- 1 << 0));
- }
-
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen95_vdenc_vdenc_walker_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- VAEncSliceParameterBufferH264 *slice_param,
- VAEncSliceParameterBufferH264 *next_slice_param)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- int slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
- int slice_hor_pos, slice_ver_pos, next_slice_hor_pos, next_slice_ver_pos;
- int luma_log2_weight_denom, weighted_pred_idc;
-
- slice_hor_pos = slice_param->macroblock_address % vdenc_context->frame_width_in_mbs;
- slice_ver_pos = slice_param->macroblock_address / vdenc_context->frame_height_in_mbs;
-
- if (next_slice_param) {
- next_slice_hor_pos = next_slice_param->macroblock_address % vdenc_context->frame_width_in_mbs;
- next_slice_ver_pos = next_slice_param->macroblock_address / vdenc_context->frame_height_in_mbs;
- } else {
- next_slice_hor_pos = 0;
- next_slice_ver_pos = vdenc_context->frame_height_in_mbs;
- }
-
- if (slice_type == SLICE_TYPE_P)
- weighted_pred_idc = pic_param->pic_fields.bits.weighted_pred_flag;
- else
- weighted_pred_idc = 0;
-
- if (weighted_pred_idc == 1)
- luma_log2_weight_denom = slice_param->luma_log2_weight_denom;
- else
- luma_log2_weight_denom = 0;
-
- BEGIN_BCS_BATCH(batch, 4);
-
- OUT_BCS_BATCH(batch, VDENC_WALKER_STATE | (4 - 2));
- OUT_BCS_BATCH(batch, (slice_hor_pos << 16 |
- slice_ver_pos));
- OUT_BCS_BATCH(batch, (next_slice_hor_pos << 16 |
- next_slice_ver_pos));
- OUT_BCS_BATCH(batch, luma_log2_weight_denom);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vdenc_vdenc_img_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen9_vdenc_img_state vdenc_img_cmd;
-
- gen9_vdenc_init_vdenc_img_state(ctx, encode_state, encoder_context, &vdenc_img_cmd, 1);
-
- BEGIN_BCS_BATCH(batch, (sizeof(vdenc_img_cmd) >> 2));
- intel_batchbuffer_data(batch, &vdenc_img_cmd, sizeof(vdenc_img_cmd));
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vdenc_mfx_avc_insert_object(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- unsigned int *insert_data, int lenght_in_dws, int data_bits_in_last_dw,
- int skip_emul_byte_count, int is_last_header, int is_end_of_slice, int emulation_flag,
- int slice_header_indicator)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- if (data_bits_in_last_dw == 0)
- data_bits_in_last_dw = 32;
-
- BEGIN_BCS_BATCH(batch, lenght_in_dws + 2);
-
- OUT_BCS_BATCH(batch, MFX_INSERT_OBJECT | (lenght_in_dws));
- OUT_BCS_BATCH(batch,
- (0 << 16) | /* always start at offset 0 */
- (slice_header_indicator << 14) |
- (data_bits_in_last_dw << 8) |
- (skip_emul_byte_count << 4) |
- (!!emulation_flag << 3) |
- ((!!is_last_header) << 2) |
- ((!!is_end_of_slice) << 1) |
- (0 << 0)); /* TODO: check this flag */
- intel_batchbuffer_data(batch, insert_data, lenght_in_dws * 4);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vdenc_mfx_avc_insert_slice_packed_data(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int slice_index,
- unsigned int insert_one_zero_byte)
-{
- VAEncPackedHeaderParameterBuffer *param = NULL;
- unsigned int length_in_bits;
- unsigned int *header_data = NULL;
- int count, i, start_index;
- int slice_header_index;
-
- if (encode_state->slice_header_index[slice_index] == 0)
- slice_header_index = -1;
- else
- slice_header_index = (encode_state->slice_header_index[slice_index] & SLICE_PACKED_DATA_INDEX_MASK);
-
- count = encode_state->slice_rawdata_count[slice_index];
- start_index = (encode_state->slice_rawdata_index[slice_index] & SLICE_PACKED_DATA_INDEX_MASK);
-
- for (i = 0; i < count; i++) {
- unsigned int skip_emul_byte_cnt;
-
- header_data = (unsigned int *)encode_state->packed_header_data_ext[start_index + i]->buffer;
-
- param = (VAEncPackedHeaderParameterBuffer *)(encode_state->packed_header_params_ext[start_index + i]->buffer);
-
- /* skip the slice header packed data type as it is lastly inserted */
- if (param->type == VAEncPackedHeaderSlice)
- continue;
-
- length_in_bits = param->bit_length;
-
- skip_emul_byte_cnt = intel_avc_find_skipemulcnt((unsigned char *)header_data, length_in_bits);
-
- /* as the slice header is still required, the last header flag is set to
- * zero.
- */
- gen9_vdenc_mfx_avc_insert_object(ctx,
- encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- skip_emul_byte_cnt,
- 0,
- 0,
- !param->has_emulation_bytes,
- 0);
-
- insert_one_zero_byte = 0;
- }
-
- /* Insert one zero byte before the slice header if no any other NAL unit is inserted, required on KBL */
- if (insert_one_zero_byte) {
- unsigned int insert_data[] = { 0, };
-
- gen9_vdenc_mfx_avc_insert_object(ctx,
- encoder_context,
- insert_data,
- 1,
- 8,
- 1,
- 0, 0, 0, 0);
- }
-
- if (slice_header_index == -1) {
- VAEncSequenceParameterBufferH264 *seq_param = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *slice_params = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[slice_index]->buffer;
- unsigned char *slice_header = NULL, *slice_header1 = NULL;
- int slice_header_length_in_bits = 0;
-
- /* No slice header data is passed. And the driver needs to generate it */
- /* For the Normal H264 */
- slice_header_length_in_bits = build_avc_slice_header(seq_param,
- pic_param,
- slice_params,
- &slice_header);
-
- slice_header1 = slice_header;
-
- if (insert_one_zero_byte) {
- slice_header1 += 1;
- slice_header_length_in_bits -= 8;
- }
-
- gen9_vdenc_mfx_avc_insert_object(ctx,
- encoder_context,
- (unsigned int *)slice_header1,
- ALIGN(slice_header_length_in_bits, 32) >> 5,
- slice_header_length_in_bits & 0x1f,
- 5, /* first 5 bytes are start code + nal unit type */
- 1, 0, 1,
- 1);
-
- free(slice_header);
- } else {
- unsigned int skip_emul_byte_cnt;
- unsigned char *slice_header1 = NULL;
-
- header_data = (unsigned int *)encode_state->packed_header_data_ext[slice_header_index]->buffer;
-
- param = (VAEncPackedHeaderParameterBuffer *)(encode_state->packed_header_params_ext[slice_header_index]->buffer);
- length_in_bits = param->bit_length;
-
- slice_header1 = (unsigned char *)header_data;
-
- if (insert_one_zero_byte) {
- slice_header1 += 1;
- length_in_bits -= 8;
- }
-
- /* as the slice header is the last header data for one slice,
- * the last header flag is set to one.
- */
- skip_emul_byte_cnt = intel_avc_find_skipemulcnt((unsigned char *)header_data, length_in_bits);
-
- if (insert_one_zero_byte)
- skip_emul_byte_cnt -= 1;
-
- gen9_vdenc_mfx_avc_insert_object(ctx,
- encoder_context,
- (unsigned int *)slice_header1,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- skip_emul_byte_cnt,
- 1,
- 0,
- !param->has_emulation_bytes,
- 1);
- }
-
- return;
-}
-
-static void
-gen9_vdenc_mfx_avc_inset_headers(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- VAEncSliceParameterBufferH264 *slice_param,
- int slice_index)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- int idx = va_enc_packed_type_to_idx(VAEncPackedHeaderH264_SPS);
- unsigned int internal_rate_mode = vdenc_context->internal_rate_mode;
- unsigned int skip_emul_byte_cnt;
- unsigned int insert_one_zero_byte = 0;
-
- if (slice_index == 0) {
- insert_one_zero_byte = 1;
-
- if (encode_state->packed_header_data[idx]) {
- VAEncPackedHeaderParameterBuffer *param = NULL;
- unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer;
- unsigned int length_in_bits;
-
- assert(encode_state->packed_header_param[idx]);
- param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer;
- length_in_bits = param->bit_length;
-
- skip_emul_byte_cnt = intel_avc_find_skipemulcnt((unsigned char *)header_data, length_in_bits);
- gen9_vdenc_mfx_avc_insert_object(ctx,
- encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- skip_emul_byte_cnt,
- 0,
- 0,
- !param->has_emulation_bytes,
- 0);
-
- insert_one_zero_byte = 0;
- }
-
- idx = va_enc_packed_type_to_idx(VAEncPackedHeaderH264_PPS);
-
- if (encode_state->packed_header_data[idx]) {
- VAEncPackedHeaderParameterBuffer *param = NULL;
- unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer;
- unsigned int length_in_bits;
-
- assert(encode_state->packed_header_param[idx]);
- param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer;
- length_in_bits = param->bit_length;
-
- skip_emul_byte_cnt = intel_avc_find_skipemulcnt((unsigned char *)header_data, length_in_bits);
-
- gen9_vdenc_mfx_avc_insert_object(ctx,
- encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- skip_emul_byte_cnt,
- 0,
- 0,
- !param->has_emulation_bytes,
- 0);
-
- insert_one_zero_byte = 0;
- }
-
- idx = va_enc_packed_type_to_idx(VAEncPackedHeaderH264_SEI);
-
- if (encode_state->packed_header_data[idx]) {
- VAEncPackedHeaderParameterBuffer *param = NULL;
- unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer;
- unsigned int length_in_bits;
-
- assert(encode_state->packed_header_param[idx]);
- param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer;
- length_in_bits = param->bit_length;
-
- skip_emul_byte_cnt = intel_avc_find_skipemulcnt((unsigned char *)header_data, length_in_bits);
- gen9_vdenc_mfx_avc_insert_object(ctx,
- encoder_context,
- header_data,
- ALIGN(length_in_bits, 32) >> 5,
- length_in_bits & 0x1f,
- skip_emul_byte_cnt,
- 0,
- 0,
- !param->has_emulation_bytes,
- 0);
-
- insert_one_zero_byte = 0;
- } else if (internal_rate_mode == I965_BRC_CBR) {
- /* TODO: insert others */
- }
- }
-
- if (vdenc_context->is_frame_level_vdenc)
- insert_one_zero_byte = 0;
-
- gen9_vdenc_mfx_avc_insert_slice_packed_data(ctx,
- encode_state,
- encoder_context,
- slice_index,
- insert_one_zero_byte);
-}
-
-static void
-gen9_vdenc_mfx_avc_slice_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- VAEncPictureParameterBufferH264 *pic_param,
- VAEncSliceParameterBufferH264 *slice_param,
- VAEncSliceParameterBufferH264 *next_slice_param)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- unsigned int luma_log2_weight_denom = slice_param->luma_log2_weight_denom;
- unsigned int chroma_log2_weight_denom = slice_param->chroma_log2_weight_denom;
- unsigned char correct[6], grow, shrink;
- int slice_hor_pos, slice_ver_pos, next_slice_hor_pos, next_slice_ver_pos;
- int max_qp_n, max_qp_p;
- int i;
- int weighted_pred_idc = 0;
- int num_ref_l0 = 0, num_ref_l1 = 0;
- int slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
- int slice_qp = pic_param->pic_init_qp + slice_param->slice_qp_delta; // TODO: fix for CBR&VBR */
- int inter_rounding = 0;
-
- if (vdenc_context->internal_rate_mode != I965_BRC_CQP)
- inter_rounding = 3;
-
- slice_hor_pos = slice_param->macroblock_address % vdenc_context->frame_width_in_mbs;
- slice_ver_pos = slice_param->macroblock_address / vdenc_context->frame_height_in_mbs;
-
- if (next_slice_param) {
- next_slice_hor_pos = next_slice_param->macroblock_address % vdenc_context->frame_width_in_mbs;
- next_slice_ver_pos = next_slice_param->macroblock_address / vdenc_context->frame_height_in_mbs;
- } else {
- next_slice_hor_pos = 0;
- next_slice_ver_pos = vdenc_context->frame_height_in_mbs;
- }
-
- if (slice_type == SLICE_TYPE_I) {
- luma_log2_weight_denom = 0;
- chroma_log2_weight_denom = 0;
- } else if (slice_type == SLICE_TYPE_P) {
- weighted_pred_idc = pic_param->pic_fields.bits.weighted_pred_flag;
- num_ref_l0 = pic_param->num_ref_idx_l0_active_minus1 + 1;
-
- if (slice_param->num_ref_idx_active_override_flag)
- num_ref_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
- } else if (slice_type == SLICE_TYPE_B) {
- weighted_pred_idc = pic_param->pic_fields.bits.weighted_bipred_idc;
- num_ref_l0 = pic_param->num_ref_idx_l0_active_minus1 + 1;
- num_ref_l1 = pic_param->num_ref_idx_l1_active_minus1 + 1;
-
- if (slice_param->num_ref_idx_active_override_flag) {
- num_ref_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
- num_ref_l1 = slice_param->num_ref_idx_l1_active_minus1 + 1;
- }
-
- if (weighted_pred_idc == 2) {
- /* 8.4.3 - Derivation process for prediction weights (8-279) */
- luma_log2_weight_denom = 5;
- chroma_log2_weight_denom = 5;
- }
- }
-
- max_qp_n = 0; /* TODO: update it */
- max_qp_p = 0; /* TODO: update it */
- grow = 0; /* TODO: update it */
- shrink = 0; /* TODO: update it */
-
- for (i = 0; i < 6; i++)
- correct[i] = 0; /* TODO: update it */
-
- BEGIN_BCS_BATCH(batch, 11);
-
- OUT_BCS_BATCH(batch, MFX_AVC_SLICE_STATE | (11 - 2) );
- OUT_BCS_BATCH(batch, slice_type);
- OUT_BCS_BATCH(batch,
- (num_ref_l0 << 16) |
- (num_ref_l1 << 24) |
- (chroma_log2_weight_denom << 8) |
- (luma_log2_weight_denom << 0));
- OUT_BCS_BATCH(batch,
- (weighted_pred_idc << 30) |
- (slice_param->direct_spatial_mv_pred_flag << 29) |
- (slice_param->disable_deblocking_filter_idc << 27) |
- (slice_param->cabac_init_idc << 24) |
- (slice_qp << 16) |
- ((slice_param->slice_beta_offset_div2 & 0xf) << 8) |
- ((slice_param->slice_alpha_c0_offset_div2 & 0xf) << 0));
-
- OUT_BCS_BATCH(batch,
- slice_ver_pos << 24 |
- slice_hor_pos << 16 |
- slice_param->macroblock_address);
- OUT_BCS_BATCH(batch,
- next_slice_ver_pos << 16 |
- next_slice_hor_pos);
-
- OUT_BCS_BATCH(batch,
- (0 << 31) | /* TODO: ignore it for VDENC ??? */
- (!slice_param->macroblock_address << 30) | /* ResetRateControlCounter */
- (2 << 28) | /* Loose Rate Control */
- (0 << 24) | /* RC Stable Tolerance */
- (0 << 23) | /* RC Panic Enable */
- (1 << 22) | /* CBP mode */
- (0 << 21) | /* MB Type Direct Conversion, 0: Enable, 1: Disable */
- (0 << 20) | /* MB Type Skip Conversion, 0: Enable, 1: Disable */
- (!next_slice_param << 19) | /* Is Last Slice */
- (0 << 18) | /* BitstreamOutputFlag Compressed BitStream Output Disable Flag 0:enable 1:disable */
- (1 << 17) | /* HeaderPresentFlag */
- (1 << 16) | /* SliceData PresentFlag */
- (0 << 15) | /* TailPresentFlag, TODO: check it on VDEnc */
- (1 << 13) | /* RBSP NAL TYPE */
- (1 << 12)); /* CabacZeroWordInsertionEnable */
-
- OUT_BCS_BATCH(batch, vdenc_context->compressed_bitstream.start_offset);
-
- OUT_BCS_BATCH(batch,
- (max_qp_n << 24) | /*Target QP - 24 is lowest QP*/
- (max_qp_p << 16) | /*Target QP + 20 is highest QP*/
- (shrink << 8) |
- (grow << 0));
- OUT_BCS_BATCH(batch,
- (1 << 31) |
- (inter_rounding << 28) |
- (1 << 27) |
- (5 << 24) |
- (correct[5] << 20) |
- (correct[4] << 16) |
- (correct[3] << 12) |
- (correct[2] << 8) |
- (correct[1] << 4) |
- (correct[0] << 0));
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static uint8_t
-gen9_vdenc_mfx_get_ref_idx_state(VAPictureH264 *va_pic, unsigned int frame_store_id)
-{
- unsigned int is_long_term =
- !!(va_pic->flags & VA_PICTURE_H264_LONG_TERM_REFERENCE);
- unsigned int is_top_field =
- !!(va_pic->flags & VA_PICTURE_H264_TOP_FIELD);
- unsigned int is_bottom_field =
- !!(va_pic->flags & VA_PICTURE_H264_BOTTOM_FIELD);
-
- return ((is_long_term << 6) |
- ((is_top_field ^ is_bottom_field ^ 1) << 5) |
- (frame_store_id << 1) |
- ((is_top_field ^ 1) & is_bottom_field));
-}
-
-static void
-gen9_vdenc_mfx_avc_ref_idx_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- VAEncSliceParameterBufferH264 *slice_param)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- VAPictureH264 *ref_pic;
- int i, slice_type, ref_idx_shift;
- unsigned int fwd_ref_entry;
-
- fwd_ref_entry = 0x80808080;
- slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
-
- for (i = 0; i < MAX(vdenc_context->num_refs[0], 2); i++) {
- ref_pic = &slice_param->RefPicList0[i];
- ref_idx_shift = vdenc_context->list_ref_idx[0][i] * 8;
-
- fwd_ref_entry &= ~(0xFF << ref_idx_shift);
- fwd_ref_entry += (gen9_vdenc_mfx_get_ref_idx_state(ref_pic, vdenc_context->list_ref_idx[0][i]) << ref_idx_shift);
- }
-
- if (slice_type == SLICE_TYPE_P) {
- BEGIN_BCS_BATCH(batch, 10);
- OUT_BCS_BATCH(batch, MFX_AVC_REF_IDX_STATE | 8);
- OUT_BCS_BATCH(batch, 0); // L0
- OUT_BCS_BATCH(batch, fwd_ref_entry);
-
- for (i = 0; i < 7; i++) {
- OUT_BCS_BATCH(batch, 0x80808080);
- }
-
- ADVANCE_BCS_BATCH(batch);
- }
-
- if (slice_type == SLICE_TYPE_B) {
- /* VDEnc on SKL doesn't support BDW */
- assert(0);
- }
-}
-
-static void
-gen9_vdenc_mfx_avc_weightoffset_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- VAEncPictureParameterBufferH264 *pic_param,
- VAEncSliceParameterBufferH264 *slice_param)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- int i, slice_type;
- short weightoffsets[32 * 6];
-
- slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
-
- if (slice_type == SLICE_TYPE_P &&
- pic_param->pic_fields.bits.weighted_pred_flag == 1) {
-
- for (i = 0; i < 32; i++) {
- weightoffsets[i * 6 + 0] = slice_param->luma_weight_l0[i];
- weightoffsets[i * 6 + 1] = slice_param->luma_offset_l0[i];
- weightoffsets[i * 6 + 2] = slice_param->chroma_weight_l0[i][0];
- weightoffsets[i * 6 + 3] = slice_param->chroma_offset_l0[i][0];
- weightoffsets[i * 6 + 4] = slice_param->chroma_weight_l0[i][1];
- weightoffsets[i * 6 + 5] = slice_param->chroma_offset_l0[i][1];
- }
-
- BEGIN_BCS_BATCH(batch, 98);
- OUT_BCS_BATCH(batch, MFX_AVC_WEIGHTOFFSET_STATE | (98 - 2));
- OUT_BCS_BATCH(batch, 0);
- intel_batchbuffer_data(batch, weightoffsets, sizeof(weightoffsets));
-
- ADVANCE_BCS_BATCH(batch);
- }
-
- if (slice_type == SLICE_TYPE_B) {
- /* VDEnc on SKL doesn't support BWD */
- assert(0);
- }
-}
-
-static void
-gen9_vdenc_mfx_avc_single_slice(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- VAEncSliceParameterBufferH264 *slice_param,
- VAEncSliceParameterBufferH264 *next_slice_param,
- int slice_index)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
-
- gen9_vdenc_mfx_avc_ref_idx_state(ctx, encode_state, encoder_context, slice_param);
- gen9_vdenc_mfx_avc_weightoffset_state(ctx,
- encode_state,
- encoder_context,
- pic_param,
- slice_param);
- gen9_vdenc_mfx_avc_slice_state(ctx,
- encode_state,
- encoder_context,
- pic_param,
- slice_param,
- next_slice_param);
- gen9_vdenc_mfx_avc_inset_headers(ctx,
- encode_state,
- encoder_context,
- slice_param,
- slice_index);
-
- if (!vdenc_context->is_frame_level_vdenc) {
- gen95_vdenc_vdecn_weihgtsoffsets_state(ctx,
- encode_state,
- encoder_context,
- slice_param);
- gen95_vdenc_vdenc_walker_state(ctx,
- encode_state,
- encoder_context,
- slice_param,
- next_slice_param);
- }
-}
-
-static void
-gen9_vdenc_mfx_vdenc_avc_slices(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gpe_mi_flush_dw_parameter mi_flush_dw_params;
- VAEncSliceParameterBufferH264 *slice_param, *next_slice_param, *next_slice_group_param;
- int i, j;
- int slice_index = 0;
- int has_tail = 0; /* TODO: check it later */
-
- for (j = 0; j < encode_state->num_slice_params_ext; j++) {
- slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[j]->buffer;
-
- if (j == encode_state->num_slice_params_ext - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[j + 1]->buffer;
-
- for (i = 0; i < encode_state->slice_params_ext[j]->num_elements; i++) {
- if (i < encode_state->slice_params_ext[j]->num_elements - 1)
- next_slice_param = slice_param + 1;
- else
- next_slice_param = next_slice_group_param;
-
- gen9_vdenc_mfx_avc_single_slice(ctx,
- encode_state,
- encoder_context,
- slice_param,
- next_slice_param,
- slice_index);
-
- if (vdenc_context->is_frame_level_vdenc)
- break;
- else {
- struct vd_pipeline_flush_parameter pipeline_flush_params;
- int insert_mi_flush;
-
- memset(&pipeline_flush_params, 0, sizeof(pipeline_flush_params));
-
- if (next_slice_group_param) {
- pipeline_flush_params.mfx_pipeline_done = 0;
- insert_mi_flush = 1;
- } else if (i < encode_state->slice_params_ext[j]->num_elements - 1) {
- pipeline_flush_params.mfx_pipeline_done = 0;
- insert_mi_flush = 1;
- } else {
- pipeline_flush_params.mfx_pipeline_done = !has_tail;
- insert_mi_flush = 0;
- }
-
- pipeline_flush_params.vdenc_pipeline_done = 1;
- pipeline_flush_params.vdenc_pipeline_command_flush = 1;
- pipeline_flush_params.vd_command_message_parser_done = 1;
- gen9_vdenc_vd_pipeline_flush(ctx, encoder_context, &pipeline_flush_params);
-
- if (insert_mi_flush) {
- memset(&mi_flush_dw_params, 0, sizeof(mi_flush_dw_params));
- mi_flush_dw_params.video_pipeline_cache_invalidate = 1;
- gen8_gpe_mi_flush_dw(ctx, batch, &mi_flush_dw_params);
- }
- }
-
- slice_param++;
- slice_index++;
- }
-
- if (vdenc_context->is_frame_level_vdenc)
- break;
- }
-
- if (vdenc_context->is_frame_level_vdenc) {
- struct vd_pipeline_flush_parameter pipeline_flush_params;
-
- gen9_vdenc_vdenc_walker_state(ctx, encode_state, encoder_context);
-
- memset(&pipeline_flush_params, 0, sizeof(pipeline_flush_params));
- pipeline_flush_params.mfx_pipeline_done = !has_tail;
- pipeline_flush_params.vdenc_pipeline_done = 1;
- pipeline_flush_params.vdenc_pipeline_command_flush = 1;
- pipeline_flush_params.vd_command_message_parser_done = 1;
- gen9_vdenc_vd_pipeline_flush(ctx, encoder_context, &pipeline_flush_params);
- }
-
- if (has_tail) {
- /* TODO: insert a tail if required */
- }
-
- memset(&mi_flush_dw_params, 0, sizeof(mi_flush_dw_params));
- mi_flush_dw_params.video_pipeline_cache_invalidate = 1;
- gen8_gpe_mi_flush_dw(ctx, batch, &mi_flush_dw_params);
-}
-
-static void
-gen9_vdenc_mfx_vdenc_pipeline(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gpe_mi_batch_buffer_start_parameter mi_batch_buffer_start_params;
-
- if (vdenc_context->brc_enabled) {
- struct gpe_mi_conditional_batch_buffer_end_parameter mi_conditional_batch_buffer_end_params;
-
- memset(&mi_conditional_batch_buffer_end_params, 0, sizeof(mi_conditional_batch_buffer_end_params));
- mi_conditional_batch_buffer_end_params.bo = vdenc_context->huc_status2_res.bo;
- gen9_gpe_mi_conditional_batch_buffer_end(ctx, batch, &mi_conditional_batch_buffer_end_params);
- }
-
- if (vdenc_context->current_pass) {
- struct gpe_mi_conditional_batch_buffer_end_parameter mi_conditional_batch_buffer_end_params;
-
- memset(&mi_conditional_batch_buffer_end_params, 0, sizeof(mi_conditional_batch_buffer_end_params));
- mi_conditional_batch_buffer_end_params.bo = vdenc_context->huc_status_res.bo;
- gen9_gpe_mi_conditional_batch_buffer_end(ctx, batch, &mi_conditional_batch_buffer_end_params);
- }
-
- gen9_vdenc_mfx_pipe_mode_select(ctx, encode_state, encoder_context);
-
- gen9_vdenc_mfx_surface_state(ctx, encoder_context, &vdenc_context->recon_surface_res, 0);
- gen9_vdenc_mfx_surface_state(ctx, encoder_context, &vdenc_context->uncompressed_input_surface_res, 4);
- gen9_vdenc_mfx_surface_state(ctx, encoder_context, &vdenc_context->scaled_4x_recon_surface_res, 5);
-
- gen9_vdenc_mfx_pipe_buf_addr_state(ctx, encoder_context);
- gen9_vdenc_mfx_ind_obj_base_addr_state(ctx, encoder_context);
- gen9_vdenc_mfx_bsp_buf_base_addr_state(ctx, encoder_context);
-
- gen9_vdenc_vdenc_pipe_mode_select(ctx, encode_state, encoder_context);
- gen9_vdenc_vdenc_src_surface_state(ctx, encoder_context, &vdenc_context->uncompressed_input_surface_res);
- gen9_vdenc_vdenc_ref_surface_state(ctx, encoder_context, &vdenc_context->recon_surface_res);
- gen9_vdenc_vdenc_ds_ref_surface_state(ctx, encoder_context, &vdenc_context->scaled_4x_recon_surface_res);
- gen9_vdenc_vdenc_pipe_buf_addr_state(ctx, encode_state, encoder_context);
- gen9_vdenc_vdenc_const_qpt_state(ctx, encode_state, encoder_context);
-
- if (!vdenc_context->brc_enabled) {
- gen9_vdenc_mfx_avc_img_state(ctx, encode_state, encoder_context);
- gen9_vdenc_vdenc_img_state(ctx, encode_state, encoder_context);
- } else {
- memset(&mi_batch_buffer_start_params, 0, sizeof(mi_batch_buffer_start_params));
- mi_batch_buffer_start_params.is_second_level = 1; /* Must be the second level batch buffer */
- mi_batch_buffer_start_params.bo = vdenc_context->second_level_batch_res.bo;
- gen8_gpe_mi_batch_buffer_start(ctx, batch, &mi_batch_buffer_start_params);
- }
-
- gen9_vdenc_mfx_avc_qm_state(ctx, encoder_context);
- gen9_vdenc_mfx_avc_fqm_state(ctx, encoder_context);
-
- gen9_vdenc_mfx_vdenc_avc_slices(ctx, encode_state, encoder_context);
-}
-
-static void
-gen9_vdenc_context_brc_prepare(struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- unsigned int rate_control_mode = encoder_context->rate_control_mode;
-
- switch (rate_control_mode & 0x7f) {
- case VA_RC_CBR:
- vdenc_context->internal_rate_mode = I965_BRC_CBR;
- break;
-
- case VA_RC_VBR:
- vdenc_context->internal_rate_mode = I965_BRC_VBR;
- break;
-
- case VA_RC_CQP:
- default:
- vdenc_context->internal_rate_mode = I965_BRC_CQP;
- break;
- }
-}
-
-static void
-gen9_vdenc_read_status(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gpe_mi_store_register_mem_parameter mi_store_register_mem_params;
- struct gpe_mi_flush_dw_parameter mi_flush_dw_params;
- unsigned int base_offset = vdenc_context->status_bffuer.base_offset;
- int i;
-
- memset(&mi_flush_dw_params, 0, sizeof(mi_flush_dw_params));
- gen8_gpe_mi_flush_dw(ctx, batch, &mi_flush_dw_params);
-
- memset(&mi_store_register_mem_params, 0, sizeof(mi_store_register_mem_params));
- mi_store_register_mem_params.mmio_offset = MFC_BITSTREAM_BYTECOUNT_FRAME_REG; /* TODO: fix it if VDBOX2 is used */
- mi_store_register_mem_params.bo = vdenc_context->status_bffuer.res.bo;
- mi_store_register_mem_params.offset = base_offset + vdenc_context->status_bffuer.bytes_per_frame_offset;
- gen8_gpe_mi_store_register_mem(ctx, batch, &mi_store_register_mem_params);
-
- /* Update DMEM buffer for BRC Update */
- for (i = 0; i < NUM_OF_BRC_PAK_PASSES; i++) {
- mi_store_register_mem_params.mmio_offset = MFC_BITSTREAM_BYTECOUNT_FRAME_REG; /* TODO: fix it if VDBOX2 is used */
- mi_store_register_mem_params.bo = vdenc_context->brc_update_dmem_res[i].bo;
- mi_store_register_mem_params.offset = 5 * sizeof(uint32_t);
- gen8_gpe_mi_store_register_mem(ctx, batch, &mi_store_register_mem_params);
-
- mi_store_register_mem_params.mmio_offset = MFC_IMAGE_STATUS_CTRL_REG; /* TODO: fix it if VDBOX2 is used */
- mi_store_register_mem_params.bo = vdenc_context->brc_update_dmem_res[i].bo;
- mi_store_register_mem_params.offset = 7 * sizeof(uint32_t);
- gen8_gpe_mi_store_register_mem(ctx, batch, &mi_store_register_mem_params);
- }
-}
-
-static VAStatus
-gen9_vdenc_avc_check_capability(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAEncSliceParameterBufferH264 *slice_param;
- int i, j;
-
- for (j = 0; j < encode_state->num_slice_params_ext; j++) {
- slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[j]->buffer;
-
- for (i = 0; i < encode_state->slice_params_ext[j]->num_elements; i++) {
- if (slice_param->slice_type == SLICE_TYPE_B)
- return VA_STATUS_ERROR_UNKNOWN;
-
- slice_param++;
- }
- }
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen9_vdenc_avc_encode_picture(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus va_status;
- struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- va_status = gen9_vdenc_avc_check_capability(ctx, encode_state, encoder_context);
-
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
-
- gen9_vdenc_avc_prepare(ctx, profile, encode_state, encoder_context);
-
- for (vdenc_context->current_pass = 0; vdenc_context->current_pass < vdenc_context->num_passes; vdenc_context->current_pass++) {
- vdenc_context->is_first_pass = (vdenc_context->current_pass == 0);
- vdenc_context->is_last_pass = (vdenc_context->current_pass == (vdenc_context->num_passes - 1));
-
- intel_batchbuffer_start_atomic_bcs_override(batch, 0x1000, BSD_RING0);
-
- intel_batchbuffer_emit_mi_flush(batch);
-
- if (vdenc_context->brc_enabled) {
- if (!vdenc_context->brc_initted || vdenc_context->brc_need_reset)
- gen9_vdenc_huc_brc_init_reset(ctx, encode_state, encoder_context);
-
- gen9_vdenc_huc_brc_update(ctx, encode_state, encoder_context);
- intel_batchbuffer_emit_mi_flush(batch);
- }
-
- gen9_vdenc_mfx_vdenc_pipeline(ctx, encode_state, encoder_context);
- gen9_vdenc_read_status(ctx, encoder_context);
-
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-
- vdenc_context->brc_initted = 1;
- vdenc_context->brc_need_reset = 0;
- }
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen9_vdenc_pipeline(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus vaStatus;
-
- switch (profile) {
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- vaStatus = gen9_vdenc_avc_encode_picture(ctx, profile, encode_state, encoder_context);
- break;
-
- default:
- vaStatus = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
- break;
- }
-
- return vaStatus;
-}
-
-static void
-gen9_vdenc_free_resources(struct gen9_vdenc_context *vdenc_context)
-{
- int i;
-
- i965_free_gpe_resource(&vdenc_context->brc_init_reset_dmem_res);
- i965_free_gpe_resource(&vdenc_context->brc_history_buffer_res);
- i965_free_gpe_resource(&vdenc_context->brc_stream_in_res);
- i965_free_gpe_resource(&vdenc_context->brc_stream_out_res);
- i965_free_gpe_resource(&vdenc_context->huc_dummy_res);
-
- for (i = 0; i < NUM_OF_BRC_PAK_PASSES; i++)
- i965_free_gpe_resource(&vdenc_context->brc_update_dmem_res[i]);
-
- i965_free_gpe_resource(&vdenc_context->vdenc_statistics_res);
- i965_free_gpe_resource(&vdenc_context->pak_statistics_res);
- i965_free_gpe_resource(&vdenc_context->vdenc_avc_image_state_res);
- i965_free_gpe_resource(&vdenc_context->hme_detection_summary_buffer_res);
- i965_free_gpe_resource(&vdenc_context->brc_constant_data_res);
- i965_free_gpe_resource(&vdenc_context->second_level_batch_res);
-
- i965_free_gpe_resource(&vdenc_context->huc_status_res);
- i965_free_gpe_resource(&vdenc_context->huc_status2_res);
-
- i965_free_gpe_resource(&vdenc_context->recon_surface_res);
- i965_free_gpe_resource(&vdenc_context->scaled_4x_recon_surface_res);
- i965_free_gpe_resource(&vdenc_context->post_deblocking_output_res);
- i965_free_gpe_resource(&vdenc_context->pre_deblocking_output_res);
-
- for (i = 0; i < ARRAY_ELEMS(vdenc_context->list_reference_res); i++) {
- i965_free_gpe_resource(&vdenc_context->list_reference_res[i]);
- i965_free_gpe_resource(&vdenc_context->list_scaled_4x_reference_res[i]);
- }
-
- i965_free_gpe_resource(&vdenc_context->uncompressed_input_surface_res);
- i965_free_gpe_resource(&vdenc_context->compressed_bitstream.res);
- i965_free_gpe_resource(&vdenc_context->status_bffuer.res);
-
- i965_free_gpe_resource(&vdenc_context->mfx_intra_row_store_scratch_res);
- i965_free_gpe_resource(&vdenc_context->mfx_deblocking_filter_row_store_scratch_res);
- i965_free_gpe_resource(&vdenc_context->mfx_bsd_mpc_row_store_scratch_res);
- i965_free_gpe_resource(&vdenc_context->vdenc_row_store_scratch_res);
-
- i965_free_gpe_resource(&vdenc_context->vdenc_streamin_res);
-}
-
-static void
-gen9_vdenc_context_destroy(void *context)
-{
- struct gen9_vdenc_context *vdenc_context = context;
-
- gen9_vdenc_free_resources(vdenc_context);
-
- free(vdenc_context);
-}
-
-static void
-gen9_vdenc_allocate_resources(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct gen9_vdenc_context *vdenc_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- int i;
-
- ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->brc_init_reset_dmem_res,
- ALIGN(sizeof(struct huc_brc_init_dmem), 64),
- "HuC Init&Reset DMEM buffer");
-
- ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->brc_history_buffer_res,
- ALIGN(HUC_BRC_HISTORY_BUFFER_SIZE, 0x1000),
- "HuC History buffer");
-
- ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->brc_stream_in_res,
- ALIGN(HUC_BRC_STREAM_INOUT_BUFFER_SIZE, 0x1000),
- "HuC Stream In buffer");
-
- ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->brc_stream_out_res,
- ALIGN(HUC_BRC_STREAM_INOUT_BUFFER_SIZE, 0x1000),
- "HuC Stream Out buffer");
-
- ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->huc_dummy_res,
- 0x1000,
- "HuC dummy buffer");
-
- for (i = 0; i < NUM_OF_BRC_PAK_PASSES; i++) {
- ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->brc_update_dmem_res[i],
- ALIGN(sizeof(struct huc_brc_update_dmem), 64),
- "HuC BRC Update buffer");
- i965_zero_gpe_resource(&vdenc_context->brc_update_dmem_res[i]);
- }
-
- ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->vdenc_statistics_res,
- ALIGN(VDENC_STATISTICS_SIZE, 0x1000),
- "VDENC statistics buffer");
-
- ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->pak_statistics_res,
- ALIGN(PAK_STATISTICS_SIZE, 0x1000),
- "PAK statistics buffer");
-
- ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->vdenc_avc_image_state_res,
- ALIGN(VDENC_AVC_IMAGE_STATE_SIZE, 0x1000),
- "VDENC/AVC image state buffer");
-
- ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->hme_detection_summary_buffer_res,
- ALIGN(HME_DETECTION_SUMMARY_BUFFER_SIZE, 0x1000),
- "HME summary buffer");
-
- ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->brc_constant_data_res,
- ALIGN(BRC_CONSTANT_DATA_SIZE, 0x1000),
- "BRC constant buffer");
-
- ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->second_level_batch_res,
- ALIGN(VDENC_AVC_IMAGE_STATE_SIZE, 0x1000),
- "Second level batch buffer");
-
- ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->huc_status_res,
- 0x1000,
- "HuC Status buffer");
-
- ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->huc_status2_res,
- 0x1000,
- "HuC Status buffer");
-}
-
-static void
-gen9_vdenc_hw_interfaces_init(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct gen9_vdenc_context *vdenc_context)
-{
- vdenc_context->is_frame_level_vdenc = 1;
-}
-
-static void
-gen95_vdenc_hw_interfaces_init(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct gen9_vdenc_context *vdenc_context)
-{
- vdenc_context->use_extended_pak_obj_cmd = 1;
-}
-
-static void
-vdenc_hw_interfaces_init(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct gen9_vdenc_context *vdenc_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
-
- if (IS_KBL(i965->intel.device_info)) {
- gen95_vdenc_hw_interfaces_init(ctx, encoder_context, vdenc_context);
- } else {
- gen9_vdenc_hw_interfaces_init(ctx, encoder_context, vdenc_context);
- }
-}
-
-static VAStatus
-gen9_vdenc_context_get_status(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct i965_coded_buffer_segment *coded_buffer_segment)
-{
- struct gen9_vdenc_status *vdenc_status = (struct gen9_vdenc_status *)coded_buffer_segment->codec_private_data;
-
- coded_buffer_segment->base.size = vdenc_status->bytes_per_frame;
-
- return VA_STATUS_SUCCESS;
-}
-
-Bool
-gen9_vdenc_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct gen9_vdenc_context *vdenc_context = calloc(1, sizeof(struct gen9_vdenc_context));
-
- if (!vdenc_context)
- return False;
-
- vdenc_context->brc_initted = 0;
- vdenc_context->brc_need_reset = 0;
- vdenc_context->is_low_delay = 0;
- vdenc_context->current_pass = 0;
- vdenc_context->num_passes = 1;
- vdenc_context->vdenc_streamin_enable = 0;
- vdenc_context->vdenc_pak_threshold_check_enable = 0;
- vdenc_context->is_frame_level_vdenc = 0;
-
- vdenc_hw_interfaces_init(ctx, encoder_context, vdenc_context);
- gen9_vdenc_allocate_resources(ctx, encoder_context, vdenc_context);
-
- encoder_context->mfc_context = vdenc_context;
- encoder_context->mfc_context_destroy = gen9_vdenc_context_destroy;
- encoder_context->mfc_pipeline = gen9_vdenc_pipeline;
- encoder_context->mfc_brc_prepare = gen9_vdenc_context_brc_prepare;
- encoder_context->get_status = gen9_vdenc_context_get_status;
-
- return True;
-}
diff --git a/src/gen9_vdenc.h b/src/gen9_vdenc.h
deleted file mode 100644
index ad0f2ae..0000000
--- a/src/gen9_vdenc.h
+++ /dev/null
@@ -1,908 +0,0 @@
-/*
- * Copyright © 2015 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-
-#ifndef GEN9_VDENC_H
-#define GEN9_VDENC_H
-
-#include <drm.h>
-#include <i915_drm.h>
-#include <intel_bufmgr.h>
-
-#include "i965_gpe_utils.h"
-#include "i965_encoder.h"
-
-struct encode_state;
-
-#define HUC_BRC_INIT_RESET 4
-#define HUC_BRC_UPDATE 5
-
-#define HUC_DMEM_DATA_OFFSET 0x2000
-
-#define NUM_OF_BRC_PAK_PASSES 2
-
-#define HUC_BRC_HISTORY_BUFFER_SIZE 832
-#define HUC_BRC_STREAM_INOUT_BUFFER_SIZE 4096
-#define VDENC_STATISTICS_SIZE 128
-#define PAK_STATISTICS_SIZE 256
-#define VDENC_AVC_IMAGE_STATE_SIZE (sizeof(struct gen9_mfx_avc_img_state) + sizeof(struct gen9_vdenc_img_state) + 2 * sizeof(int))
-#define HME_DETECTION_SUMMARY_BUFFER_SIZE 256
-#define BRC_CONSTANT_DATA_SIZE 4096
-#define BRC_DEBUG_OUTPUT_SIZE 4096
-
-#define HUC_STATUS_MMIO_OFFSET 0x0D000
-
-#define SCALE_FACTOR_4X 4
-
-#define VDENC_FRAME_I 0
-#define VDENC_FRAME_P 1
-
-#define VDENC_LUTMODE_INTRA_NONPRED 0x00
-#define VDENC_LUTMODE_INTRA 0x01
-#define VDENC_LUTMODE_INTRA_16x16 0x01
-#define VDENC_LUTMODE_INTRA_8x8 0x02
-#define VDENC_LUTMODE_INTRA_4x4 0x03
-#define VDENC_LUTMODE_INTER_16x8 0x04
-#define VDENC_LUTMODE_INTER_8x16 0x04
-#define VDENC_LUTMODE_INTER_8X8Q 0x05
-#define VDENC_LUTMODE_INTER_8X4Q 0x06
-#define VDENC_LUTMODE_INTER_4X8Q 0x06
-#define VDENC_LUTMODE_INTER_16x8_FIELD 0x06
-#define VDENC_LUTMODE_INTER_4X4Q 0x07
-#define VDENC_LUTMODE_INTER_8x8_FIELD 0x07
-#define VDENC_LUTMODE_INTER 0x08
-#define VDENC_LUTMODE_INTER_16x16 0x08
-#define VDENC_LUTMODE_INTER_BWD 0x09
-#define VDENC_LUTMODE_REF_ID 0x0A
-#define VDENC_LUTMODE_INTRA_CHROMA 0x0B
-
-struct gen9_mfx_avc_img_state
-{
- union {
- struct {
- uint32_t dword_length:16;
- uint32_t sub_opcode_b:5;
- uint32_t sub_opcode_a:3;
- uint32_t command_opcode:3;
- uint32_t pipeline:2;
- uint32_t command_type:3;
- };
-
- uint32_t value;
- } dw0;
-
- struct {
- uint32_t frame_size_in_mbs_minus1:16;
- uint32_t pad0:16;
- } dw1;
-
- struct {
- uint32_t frame_width_in_mbs_minus1:8;
- uint32_t pad0:8;
- uint32_t frame_height_in_mbs_minus1:8;
- uint32_t pad1:8;
- } dw2;
-
- struct {
- uint32_t pad0:8;
- uint32_t image_structure:2;
- uint32_t weighted_bipred_idc:2;
- uint32_t weighted_pred_flag:1;
- uint32_t brc_domain_rate_control_enable:1;
- uint32_t pad1:2;
- uint32_t chroma_qp_offset:5;
- uint32_t pad2:3;
- uint32_t second_chroma_qp_offset:5;
- uint32_t pad3:3;
- } dw3;
-
- struct {
- uint32_t field_picture_flag:1;
- uint32_t mbaff_mode_active:1;
- uint32_t frame_mb_only_flag:1;
- uint32_t transform_8x8_idct_mode_flag:1;
- uint32_t direct_8x8_interface_flag:1;
- uint32_t constrained_intra_prediction_flag:1;
- uint32_t current_img_dispoable_flag:1;
- uint32_t entropy_coding_flag:1;
- uint32_t mb_mv_format_flag:1;
- uint32_t pad0:1;
- uint32_t chroma_format_idc:2;
- uint32_t mv_unpacked_flag:1;
- uint32_t insert_test_flag:1;
- uint32_t load_slice_pointer_flag:1;
- uint32_t macroblock_stat_enable:1;
- uint32_t minimum_frame_size:16;
- } dw4;
-
- struct {
- uint32_t intra_mb_max_bit_flag:1;
- uint32_t inter_mb_max_bit_flag:1;
- uint32_t frame_size_over_flag:1;
- uint32_t frame_size_under_flag:1;
- uint32_t pad0:3;
- uint32_t intra_mb_ipcm_flag:1;
- uint32_t pad1:1;
- uint32_t mb_rate_ctrl_flag:1;
- uint32_t min_frame_size_units:2;
- uint32_t inter_mb_zero_cbp_flag:1;
- uint32_t pad2:3;
- uint32_t non_first_pass_flag:1;
- uint32_t pad3:10;
- uint32_t aq_chroma_disable:1;
- uint32_t aq_rounding:3;
- uint32_t aq_enable:1;
- } dw5;
-
- struct {
- uint32_t intra_mb_max_size:12;
- uint32_t pad0:4;
- uint32_t inter_mb_max_size:12;
- uint32_t pad1:4;
- } dw6;
-
- struct {
- uint32_t pad0;
- } dw7;
-
- struct {
- uint32_t slice_delta_qp_max0:8;
- uint32_t slice_delta_qp_max1:8;
- uint32_t slice_delta_qp_max2:8;
- uint32_t slice_delta_qp_max3:8;
- } dw8;
-
- struct {
- uint32_t slice_delta_qp_min0:8;
- uint32_t slice_delta_qp_min1:8;
- uint32_t slice_delta_qp_min2:8;
- uint32_t slice_delta_qp_min3:8;
- } dw9;
-
- struct {
- uint32_t frame_bitrate_min:14;
- uint32_t frame_bitrate_min_unit_mode:1;
- uint32_t frame_bitrate_min_unit:1;
- uint32_t frame_bitrate_max:14;
- uint32_t frame_bitrate_max_unit_mode:1;
- uint32_t frame_bitrate_max_unit:1;
- } dw10;
-
- struct {
- uint32_t frame_bitrate_min_delta:15;
- uint32_t pad0:1;
- uint32_t frame_bitrate_max_delta:15;
- uint32_t pad1:1;
- } dw11;
-
- struct {
- uint32_t pad0:18;
- uint32_t vad_error_logic:1;
- uint32_t pad1:13;
- } dw12;
-
- struct {
- uint32_t pic_qp_init_minus26:8;
- uint32_t pic_num_ref_idx_l0_active_minus1:6;
- uint32_t pad0:2;
- uint32_t pic_num_ref_idx_l1_active_minus1:6;
- uint32_t pad1:2;
- uint32_t num_ref_frames:5;
- uint32_t is_curr_pic_has_mmco5:1;
- } dw13;
-
- struct {
- uint32_t pic_order_present_flag:1;
- uint32_t delta_pic_order_always_zero_flag:1;
- uint32_t pic_order_cnt_type:2;
- uint32_t pad0:4;
- uint32_t slice_group_map_type:3;
- uint32_t redundant_pic_cnt_present_flag:1;
- uint32_t num_slice_groups_minus1:3;
- uint32_t deblock_filter_ctrl_present_flag:1;
- uint32_t log2_max_frame_num_minus4:8;
- uint32_t log2_max_pic_order_cnt_lsb_minus4:8;
- } dw14;
-
- struct {
- uint32_t slice_group_change_rate:16;
- uint32_t curr_pic_frame_num:16;
- } dw15;
-
- struct {
- uint32_t current_frame_view_id:10;
- uint32_t pad0:2;
- uint32_t max_view_idx_l0:4;
- uint32_t pad1:2;
- uint32_t max_view_idx_l1:4;
- uint32_t pad2:9;
- uint32_t inter_view_order_disable:1;
- } dw16;
-
- struct {
- uint32_t fqp:3; // Must be zero for SKL
- uint32_t fqp_offset:3; // Must be zero for SKL
- uint32_t pad0:2;
- uint32_t ext_brc_dm_stat_en:1; // Must be zero for SKL
- uint32_t pad1:7;
- uint32_t brc_dm_avg_mb_qp:6; // Must be zero for SKL
- uint32_t pad2:10;
- } dw17;
-
- struct {
- uint32_t brc_domain_target_frame_size;
- } dw18;
-
- struct {
- uint32_t threshold_size_in_bytes;
- } dw19;
-
- struct {
- uint32_t target_slice_size_in_bytes;
- } dw20;
-};
-
-struct gen9_image_state_cost
-{
- struct {
- uint32_t mv0_cost:8;
- uint32_t mv1_cost:8;
- uint32_t mv2_cost:8;
- uint32_t mv3_cost:8;
- } dw0;
-
- struct {
- uint32_t mv4_cost:8;
- uint32_t mv5_cost:8;
- uint32_t mv6_cost:8;
- uint32_t mv7_cost:8;
- } dw1;
-};
-
-struct gen9_vdenc_img_state
-{
- union {
- struct {
- uint32_t dword_length:12;
- uint32_t pad0:4;
- uint32_t sub_opcode_b:5;
- uint32_t sub_opcode_a:2;
- uint32_t command_opcode:4;
- uint32_t pipeline:2;
- uint32_t command_type:3;
- };
-
- uint32_t value;
- } dw0;
-
- struct {
- uint32_t pad0:2;
- uint32_t bidirectional_mix_disable:1;
- uint32_t pad1:1;
- uint32_t time_budget_overflow_check:1;
- uint32_t pad2:1;
- uint32_t extended_pak_obj_cmd_enable:1;
- uint32_t transform_8x8_flag:1;
- uint32_t vdenc_l1_cache_priority:2;
- uint32_t pad3:22;
- } dw1;
-
- struct {
- uint32_t pad0:16;
- uint32_t bidirectional_weight:6;
- uint32_t pad1:6;
- uint32_t unidirection_mix_disable:1;
- uint32_t pad2:3;
- } dw2;
-
- struct {
- uint32_t pad0:16;
- uint32_t picture_width:16;
- } dw3;
-
- struct {
- uint32_t pad0:12;
- uint32_t subpel_mode:2;
- uint32_t pad1:3;
- uint32_t forward_transform_skip_check_enable:1;
- uint32_t bme_disable_for_fbr_message:1;
- uint32_t block_based_skip_enabled:1;
- uint32_t inter_sad_measure_adjustment:2;
- uint32_t intra_sad_measure_adjustment:2;
- uint32_t sub_macroblock_sub_partition_mask:7;
- uint32_t block_based_skip_type:1;
- } dw4;
-
- struct {
- uint32_t picture_height_minus1:16;
- uint32_t cre_prefetch_enable:1;
- uint32_t hme_ref1_disable:1;
- uint32_t mb_slice_threshold_value:4;
- uint32_t pad0:4;
- uint32_t constrained_intra_prediction_flag:1;
- uint32_t pad1:2;
- uint32_t picture_type:2;
- uint32_t pad2:1;
- } dw5;
-
- struct {
- uint32_t slice_macroblock_height_minus1:16;
- uint32_t pad0:16;
- } dw6;
-
- struct {
- uint32_t pad0;
- } dw7;
-
- struct {
- uint32_t luma_intra_partition_mask:5;
- uint32_t non_skip_zero_mv_const_added:1;
- uint32_t non_skip_mb_mode_const_added:1;
- uint32_t pad0:9;
- uint32_t mv_cost_scaling_factor:2;
- uint32_t bilinear_filter_enable:1;
- uint32_t pad1:3;
- uint32_t ref_id_cost_mode_select:1;
- uint32_t pad2:9;
- } dw8;
-
- struct {
- uint32_t mode0_cost:8;
- uint32_t mode1_cost:8;
- uint32_t mode2_cost:8;
- uint32_t mode3_cost:8;
- } dw9;
-
- struct {
- uint32_t mode4_cost:8;
- uint32_t mode5_cost:8;
- uint32_t mode6_cost:8;
- uint32_t mode7_cost:8;
- } dw10;
-
- struct {
- uint32_t mode8_cost:8;
- uint32_t mode9_cost:8;
- uint32_t ref_id_cost:8;
- uint32_t chroma_intra_mode_cost:8;
- } dw11;
-
- struct {
- struct gen9_image_state_cost mv_cost;
- } dw12_13;
-
- struct {
- uint32_t qp_prime_y:8;
- uint32_t pad0:16;
- uint32_t target_size_in_word:8;
- } dw14;
-
- struct {
- uint32_t pad0;
- } dw15;
-
- struct {
- uint32_t pad0;
- } dw16;
-
- struct {
- uint32_t avc_intra_4x4_mode_mask:9;
- uint32_t pad0:7;
- uint32_t avc_intra_8x8_mode_mask:9;
- uint32_t pad1:7;
- } dw17;
-
- struct {
- uint32_t avc_intra_16x16_mode_mask:4;
- uint32_t avc_intra_chroma_mode_mask:4;
- uint32_t intra_compute_type_intra_compute_type:2;
- uint32_t pad0:22;
- } dw18;
-
- struct {
- uint32_t pad0;
- } dw19;
-
- struct {
- uint32_t penalty_for_intra_16x16_non_dc_prediction:8;
- uint32_t penalty_for_intra_8x8_non_dc_prediction:8;
- uint32_t penalty_for_intra_4x4_non_dc_prediction:8;
- uint32_t pad0:8;
- } dw20;
-
- struct {
- uint32_t pad0;
- } dw21;
-
- struct {
- uint32_t panic_mode_mb_threadhold:16;
- uint32_t small_mb_size_in_word:8;
- uint32_t large_mb_size_in_word:8;
- } dw22;
-
- struct {
- uint32_t l0_number_of_reference_minus1:8;
- uint32_t pad0:8;
- uint32_t l1_number_of_reference_minus1:8;
- uint32_t pad1:8;
- } dw23;
-
- struct {
- uint32_t pad0;
- } dw24;
-
- struct {
- uint32_t pad0;
- } dw25;
-
- struct {
- uint32_t pad0:8;
- uint32_t hme_ref_windows_combining_threshold:8;
- uint32_t pad1:16;
- } dw26;
-
- struct {
- uint32_t max_hmv_r:16;
- uint32_t max_vmv_r:16;
- } dw27;
-
- struct {
- struct gen9_image_state_cost hme_mv_cost;
- } dw28_29;
-
- struct {
- uint32_t roi_qp_adjustment_for_zone0:4;
- uint32_t roi_qp_adjustment_for_zone1:4;
- uint32_t roi_qp_adjustment_for_zone2:4;
- uint32_t roi_qp_adjustment_for_zone3:4;
- uint32_t qp_adjustment_for_shape_best_intra_4x4_winner:4;
- uint32_t qp_adjustment_for_shape_best_intra_8x8_winner:4;
- uint32_t qp_adjustment_for_shape_best_intra_16x16_winner:4;
- uint32_t pad0:4;
- } dw30;
-
- struct {
- uint32_t best_distortion_qp_adjustment_for_zone0:4;
- uint32_t best_distortion_qp_adjustment_for_zone1:4;
- uint32_t best_distortion_qp_adjustment_for_zone2:4;
- uint32_t best_distortion_qp_adjustment_for_zone3:4;
- uint32_t offset0_for_zone0_neg_zone1_boundary:16;
- } dw31;
-
- struct {
- uint32_t offset1_for_zone1_neg_zone2_boundary:16;
- uint32_t offset2_for_zone2_neg_zone3_boundary:16;
- } dw32;
-
- struct {
- uint32_t qp_range_check_upper_bound:8;
- uint32_t qp_range_check_lower_bound:8;
- uint32_t pad0:8;
- uint32_t qp_range_check_value:4;
- uint32_t pad1:4;
- } dw33;
-
- struct {
- uint32_t roi_enable:1;
- uint32_t fwd_predictor0_mv_enable:1;
- uint32_t bdw_predictor1_mv_enable:1;
- uint32_t mb_level_qp_enable:1;
- uint32_t target_size_in_words_mb_max_size_in_words_mb_enable:1;
- uint32_t pad0:3;
- uint32_t ppmv_disable:1;
- uint32_t coefficient_clamp_enable:1;
- uint32_t long_term_reference_frame_bwd_ref0_indicator:1;
- uint32_t long_term_reference_frame_fwd_ref2_indicator:1;
- uint32_t long_term_reference_frame_fwd_ref1_indicator:1;
- uint32_t long_term_reference_frame_fwd_ref0_indicator:1;
- uint32_t image_state_qp_override:1;
- uint32_t pad1:1;
- uint32_t midpoint_distortion:16;
- } dw34;
-};
-
-struct gen9_vdenc_streamin_state
-{
- struct {
- uint32_t roi_selection:8;
- uint32_t force_intra:1;
- uint32_t force_skip:1;
- uint32_t pad0:22;
- } dw0;
-
- struct {
- uint32_t qp_prime_y:8;
- uint32_t target_size_in_word:8;
- uint32_t max_size_in_word:8;
- uint32_t pad0:8;
- } dw1;
-
- struct {
- uint32_t fwd_predictor_x:16;
- uint32_t fwd_predictor_y:16;
- } dw2;
-
- struct {
- uint32_t bwd_predictore_x:16;
- uint32_t bwd_predictore_y:16;
- } dw3;
-
- struct {
- uint32_t fwd_ref_id0:4;
- uint32_t bdw_ref_id0:4;
- uint32_t pad0:24;
- } dw4;
-
- struct {
- uint32_t pad0[11];
- } dw5_15;
-};
-
-struct huc_brc_update_constant_data
-{
- uint8_t global_rate_qp_adj_tab_i[64];
- uint8_t global_rate_qp_adj_tab_p[64];
- uint8_t global_rate_qp_adj_tab_b[64];
- uint8_t dist_threshld_i[10];
- uint8_t dist_threshld_p[10];
- uint8_t dist_threshld_b[10];
- uint8_t dist_qp_adj_tab_i[81];
- uint8_t dist_qp_adj_tab_p[81];
- uint8_t dist_qp_adj_tab_b[81];
- int8_t buf_rate_adj_tab_i[72];
- int8_t buf_rate_adj_tab_p[72];
- int8_t buf_rate_adj_tab_b[72];
- uint8_t frame_size_min_tab_p[9];
- uint8_t frame_size_min_tab_b[9];
- uint8_t frame_size_min_tab_i[9];
- uint8_t frame_size_max_tab_p[9];
- uint8_t frame_size_max_tab_b[9];
- uint8_t frame_size_max_tab_i[9];
- uint8_t frame_size_scg_tab_p[9];
- uint8_t frame_size_scg_tab_b[9];
- uint8_t frame_size_scg_tab_i[9];
- /* cost table 14*42 = 588 bytes */
- uint8_t i_intra_non_pred[42];
- uint8_t i_intra_16x16[42];
- uint8_t i_intra_8x8[42];
- uint8_t i_intra_4x4[42];
- uint8_t i_intra_chroma[42];
- uint8_t p_intra_non_pred[42];
- uint8_t p_intra_16x16[42];
- uint8_t p_intra_8x8[42];
- uint8_t p_intra_4x4[42];
- uint8_t p_intra_chroma[42];
- uint8_t p_inter_16x8[42];
- uint8_t p_inter_8x8[42];
- uint8_t p_inter_16x16[42];
- uint8_t p_ref_id[42];
- uint8_t hme_mv_cost[8][42];
- uint8_t pad0[42];
-};
-
-struct huc_brc_init_dmem
-{
- uint8_t brc_func; // 0: Init; 2: Reset
- uint8_t os_enabled; // Always 1
- uint8_t pad0[2];
- uint16_t brc_flag; // ICQ or CQP with slice size control: 0x00 CBR: 0x10; VBR: 0x20; VCM: 0x40; LOWDELAY: 0x80.
- uint16_t pad1;
- uint16_t frame_width; // Luma width in bytes
- uint16_t frame_height; // Luma height in bytes
- uint32_t target_bitrate; // target bitrate, set by application
- uint32_t min_rate; // 0
- uint32_t max_rate; // Maximum bit rate in bits per second (bps).
- uint32_t buffer_size; // buffer size in bits
- uint32_t init_buffer_fullness; // initial buffer fullness in bits
- uint32_t profile_level_max_frame; // user defined. refer to AVC BRC HLD for conformance check and correction
- uint32_t frame_rate_m; // FrameRateM is the number of frames in FrameRateD
- uint32_t frame_rate_d; // If driver gets this FrameRateD from VUI, it is the num_units_in_tick field (32 bits UINT).
- uint16_t num_p_in_gop; // number of P frames in a GOP
- uint16_t num_b_in_gop; // number of B frames in a GOP
- uint16_t min_qp; // 10
- uint16_t max_qp; // 51
- int8_t dev_thresh_pb0[8]; // lowdelay ? (-45, -33, -23, -15, -8, 0, 15, 25) : (-46, -38, -30, -23, 23, 30, 40, 46)
- int8_t dev_thresh_vbr0[8]; // lowdelay ? (-45, -35, -25, -15, -8, 0, 20, 40) : (-46, -40, -32, -23, 56, 64, 83, 93)
- int8_t dev_thresh_i0[8]; // lowdelay ? (-40, -30, -17, -10, -5, 0, 10, 20) : (-43, -36, -25, -18, 18, 28, 38, 46)
- uint8_t init_qp_ip; // Initial QP for I and P
-
- uint8_t pad2; // Reserved
- uint8_t init_qp_b; // Initial QP for B
- uint8_t mb_qp_ctrl; // Enable MB level QP control (global)
- uint8_t slice_size_ctrl_en; // Enable slice size control
- int8_t intra_qp_delta[3]; // set to zero for all by default
- int8_t skip_qp_delta; // Reserved
- int8_t dist_qp_delta[4]; // lowdelay ? (-5, -2, 2, 5) : (0, 0, 0, 0)
- uint8_t oscillation_qp_delta; // BRCFLAG_ISVCM ? 16 : 0
- uint8_t first_iframe_no_hrd_check; // BRCFLAG_ISVCM ? 1 : 0
- uint8_t skip_frame_enable_flag;
- uint8_t top_qp_delta_thr_for_2nd_pass; // =1. QP Delta threshold for second pass.
- uint8_t top_frame_size_threshold_for_2nd_pass; // lowdelay ? 10 : 50. Top frame size threshold for second pass
- uint8_t bottom_frame_size_threshold_for_2nd_pass; // lowdelay ? 10 : 200. Bottom frame size threshold for second pass
- uint8_t qp_select_for_first_pass; // lowdelay ? 0 : 1. =0 to use previous frame final QP; or =1 to use (targetQP + previousQP) / 2.
- uint8_t mb_header_compensation; // Reserved
- uint8_t over_shoot_carry_flag; // set to zero by default
- uint8_t over_shoot_skip_frame_pct; // set to zero by default
- uint8_t estrate_thresh_p0[7]; // 4, 8, 12, 16, 20, 24, 28
- uint8_t estrate_thresh_b0[7]; // 4, 8, 12, 16, 20, 24, 28
- uint8_t estrate_thresh_i0[7]; // 4, 8, 12, 16, 20, 24, 28
- uint8_t fqp_enable; // ExtendedBrcDomainEn
- uint8_t scenario_info; // 0: UNKNOWN, 1: DISPLAYREMOTING, 2: VIDEOCONFERENCE, 3: ARCHIVE, 4: LIVESTREAMING.
- uint8_t static_Region_streamin; // should be programmed from par file
- uint8_t delta_qp_adaptation; // =1,
- uint8_t max_crf_quality_factor; // =52,
- uint8_t crf_quality_factor; // =25,
- uint8_t bottom_qp_delta_thr_for_2nd_pass;// =1. QP Delta threshold for second pass.
- uint8_t sliding_window_size; // =30, the window size (in frames) used to compute bit rate
- uint8_t sliding_widow_rc_enable; // =0, sliding window based rate control (SWRC) disabled, 1: enabled
- uint8_t sliding_window_max_rate_ratio; // =120, ratio between the max rate within the window and average target bitrate
- uint8_t low_delay_golden_frame_boost; // only for lowdelay mode, 0 (default): no boost for I and scene change frames, 1: boost
- uint8_t pad3[61]; // Must be zero
-};
-
-struct huc_brc_update_dmem
-{
- uint8_t brc_func; // =1 for Update, other values are reserved for future use
- uint8_t pad0[3];
- uint32_t target_size; // refer to AVC BRC HLD for calculation
- uint32_t frame_number; // frame number
- uint32_t peak_tx_bits_per_frame; // current global target bits - previous global target bits (global target bits += input bits per frame)
- uint32_t frame_budget; // target time counter
- uint32_t frame_byte_count; // PAK output via MMIO
- uint32_t timing_budget_overflow; // PAK output via MMIO
- uint32_t slice_size_violation; // PAK output via MMIO
- uint32_t ipcm_non_conformant; // PAK output via MMIO
-
- uint16_t start_global_adjust_frame[4]; // 10, 50, 100, 150
- uint16_t mb_budget[52]; // MB bugdet for QP 0 - 51.
- uint16_t target_slice_size; // target slice size
- uint16_t slcsz_thr_deltai[42]; // slice size threshold delta for I frame
- uint16_t slcsz_thr_deltap[42]; // slice size threshold delta for P frame
- uint16_t num_of_frames_skipped; // Recording how many frames have been skipped.
- uint16_t skip_frame_size; // Recording the skip frame size for one frame. =NumMBs * 1, assuming one bit per mb for skip frame.
- uint16_t static_region_pct; // One entry, recording the percentage of static region
- uint8_t global_rate_ratio_threshold[7]; // 80,95,99,101,105,125,160
- uint8_t current_frame_type; // I frame: 2; P frame: 0; B frame: 1.
- uint8_t start_global_adjust_mult[5]; // 1, 1, 3, 2, 1
- uint8_t start_global_adjust_div[5]; // 40, 5, 5, 3, 1
- uint8_t global_rate_ratio_threshold_qp[8]; // 253,254,255,0,1,1,2,3
- uint8_t current_pak_pass; // current pak pass number
- uint8_t max_num_passes; // 2
- uint8_t scene_change_width[2]; // set both to MIN((NumP + 1) / 5, 6)
- uint8_t scene_change_detect_enable; // Enable scene change detection
- uint8_t scene_change_prev_intra_percent_threshold; // =96. scene change previous intra percentage threshold
- uint8_t scene_change_cur_intra_perent_threshold; // =192. scene change current intra percentage threshold
- uint8_t ip_average_coeff; // lowdelay ? 0 : 128
- uint8_t min_qp_adjustment; // Minimum QP increase step
- uint8_t timing_budget_check; // Flag indicating if kernel will check timing budget.
- int8_t roi_qp_delta_i8[4]; // Application specified ROI QP Adjustment for Zone0, Zone1, Zone2 and Zone3.
- uint8_t cqp_qp_value; // Application specified target QP in BRC_ICQ mode
- uint8_t cqp_fqp; // Application specified fine position in BRC_ICQ mode
- uint8_t hme_detection_enable; // 0: default, 1: HuC BRC kernel requires information from HME detection kernel output
- uint8_t hme_cost_enable; // 0: default, 1: driver provides HME cost table
- uint8_t disable_pframe_8x8_transform;
- uint8_t skl_cabac_wa_enable;
- uint8_t roi_source; // =0: disable, 1: ROIMap from HME Static Region or from App dirty rectangle, 2: ROIMap from App
- uint8_t slice_size_consertative_threshold; // =0, 0: do not set conservative threshold (suggested for video conference) 1: set conservative threshold for non-video conference
- uint16_t max_target_slice_size; // default: 1498, max target slice size from app DDI
- uint16_t max_num_slice_allowed; // computed by driver based on level idc
- uint16_t second_level_batchbuffer_size; // second level batch buffer (SLBB) size in bytes, the input buffer will contain two SLBBs A and B, A followed by B, A and B have the same structure.
- uint16_t second_level_batchbuffer_b_offset; // offset in bytes from the beginning of the input buffer, it points to the start of SLBB B, set by driver for skip frame support
- uint16_t avc_img_state_offset; // offset in bytes from the beginning of SLBB A
-
- /* HME distortion based QP adjustment */
- uint16_t ave_hme_dist;
- uint8_t hme_dist_available; // 0: disabled, 1: enabled
-
- uint8_t pad1[63];
-};
-
-struct gen9_vdenc_status
-{
- uint32_t bytes_per_frame;
-};
-
-struct gen9_vdenc_context
-{
- uint32_t frame_width_in_mbs;
- uint32_t frame_height_in_mbs;
- uint32_t frame_width; // frame_width_in_mbs * 16
- uint32_t frame_height; // frame_height_in_mbs * 16
- uint32_t down_scaled_width_in_mb4x;
- uint32_t down_scaled_height_in_mb4x;
- uint32_t down_scaled_width_4x; // down_scaled_width_in_mb4x * 16
- uint32_t down_scaled_height_4x; // down_scaled_height_in_mbs * 16
-
- uint32_t target_bit_rate; /* in kbps */
- uint32_t max_bit_rate; /* in kbps */
- uint32_t min_bit_rate; /* in kbps */
- uint64_t init_vbv_buffer_fullness_in_bit;
- uint64_t vbv_buffer_size_in_bit;
- struct intel_fraction framerate;
- uint32_t gop_size;
- uint32_t ref_dist;
- uint32_t brc_target_size;
- double brc_init_current_target_buf_full_in_bits;
- double brc_init_reset_input_bits_per_frame;
- uint32_t brc_init_reset_buf_size_in_bits;
- uint32_t brc_init_previous_target_buf_full_in_bits;
-
- uint8_t mode_cost[12];
- uint8_t mv_cost[8];
- uint8_t hme_mv_cost[8];
-
- uint32_t num_roi;
- uint32_t max_delta_qp;
- uint32_t min_delta_qp;
- struct intel_roi roi[3];
-
- uint32_t brc_initted:1;
- uint32_t brc_need_reset:1;
- uint32_t is_low_delay:1;
- uint32_t brc_enabled:1;
- uint32_t internal_rate_mode:4;
- uint32_t current_pass:4;
- uint32_t num_passes:4;
- uint32_t is_first_pass:1;
- uint32_t is_last_pass:1;
-
- uint32_t vdenc_streamin_enable:1;
- uint32_t vdenc_pak_threshold_check_enable:1;
- uint32_t pad1:1;
- uint32_t transform_8x8_mode_enable:1;
- uint32_t frame_type:2;
-
- uint32_t mb_brc_enabled:1;
- uint32_t is_frame_level_vdenc:1;
- uint32_t use_extended_pak_obj_cmd:1;
- uint32_t pad0:29;
-
- struct i965_gpe_resource brc_init_reset_dmem_res;
- struct i965_gpe_resource brc_history_buffer_res;
- struct i965_gpe_resource brc_stream_in_res;
- struct i965_gpe_resource brc_stream_out_res;
- struct i965_gpe_resource huc_dummy_res;
-
- struct i965_gpe_resource brc_update_dmem_res[NUM_OF_BRC_PAK_PASSES];
- struct i965_gpe_resource vdenc_statistics_res;
- struct i965_gpe_resource pak_statistics_res;
- struct i965_gpe_resource vdenc_avc_image_state_res;
- struct i965_gpe_resource hme_detection_summary_buffer_res;
- struct i965_gpe_resource brc_constant_data_res;
- struct i965_gpe_resource second_level_batch_res;
-
- struct i965_gpe_resource huc_status_res;
- struct i965_gpe_resource huc_status2_res;
-
- struct i965_gpe_resource recon_surface_res;
- struct i965_gpe_resource scaled_4x_recon_surface_res;
- struct i965_gpe_resource post_deblocking_output_res;
- struct i965_gpe_resource pre_deblocking_output_res;
- struct i965_gpe_resource list_reference_res[16];
- struct i965_gpe_resource list_scaled_4x_reference_res[16];
- struct i965_gpe_resource uncompressed_input_surface_res; // Input
-
- struct {
- struct i965_gpe_resource res; // Output
- uint32_t start_offset;
- uint32_t end_offset;
- } compressed_bitstream;
-
- struct i965_gpe_resource mfx_intra_row_store_scratch_res; // MFX internal buffer
- struct i965_gpe_resource mfx_deblocking_filter_row_store_scratch_res; // MFX internal buffer
- struct i965_gpe_resource mfx_bsd_mpc_row_store_scratch_res; // MFX internal buffer
- struct i965_gpe_resource vdenc_row_store_scratch_res; // VDENC internal buffer
-
- struct i965_gpe_resource vdenc_streamin_res;
-
- uint32_t num_refs[2];
- uint32_t list_ref_idx[2][32];
-
- struct {
- struct i965_gpe_resource res;
- uint32_t base_offset;
- uint32_t size;
- uint32_t bytes_per_frame_offset;
- } status_bffuer;
-};
-
-struct huc_pipe_mode_select_parameter
-{
- uint32_t huc_stream_object_enable;
- uint32_t indirect_stream_out_enable;
- uint32_t media_soft_reset_counter;
-};
-
-struct huc_imem_state_parameter
-{
- uint32_t huc_firmware_descriptor;
-};
-
-struct huc_dmem_state_parameter
-{
- struct i965_gpe_resource *huc_data_source_res;
- uint32_t huc_data_destination_base_address;
- uint32_t huc_data_length;
-};
-
-struct huc_cfg_state_parameter
-{
- uint32_t force_reset;
-};
-
-
-struct huc_virtual_addr_parameter
-{
- struct {
- struct i965_gpe_resource *huc_surface_res;
- uint32_t is_target;
- } regions[16];
-};
-
-struct huc_ind_obj_base_addr_parameter
-{
- struct i965_gpe_resource *huc_indirect_stream_in_object_res;
- struct i965_gpe_resource *huc_indirect_stream_out_object_res;
-};
-
-struct huc_stream_object_parameter
-{
- uint32_t indirect_stream_in_data_length;
- uint32_t indirect_stream_in_start_address;
- uint32_t indirect_stream_out_start_address;
- uint32_t huc_bitstream_enable;
- uint32_t length_mode;
- uint32_t stream_out;
- uint32_t emulation_prevention_byte_removal;
- uint32_t start_code_search_engine;
- uint8_t start_code_byte2;
- uint8_t start_code_byte1;
- uint8_t start_code_byte0;
-};
-
-struct huc_start_parameter
-{
- uint32_t last_stream_object;
-};
-
-struct vd_pipeline_flush_parameter
-{
- uint32_t hevc_pipeline_done;
- uint32_t vdenc_pipeline_done;
- uint32_t mfl_pipeline_done;
- uint32_t mfx_pipeline_done;
- uint32_t vd_command_message_parser_done;
- uint32_t hevc_pipeline_command_flush;
- uint32_t vdenc_pipeline_command_flush;
- uint32_t mfl_pipeline_command_flush;
- uint32_t mfx_pipeline_command_flush;
-};
-
-extern Bool
-gen9_vdenc_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context);
-
-#endif /* GEN9_VDENC_H */
diff --git a/src/gen9_vme.c b/src/gen9_vme.c
deleted file mode 100644
index e98dc71..0000000
--- a/src/gen9_vme.c
+++ /dev/null
@@ -1,2065 +0,0 @@
-/*
- * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- * Xiang Haihao <haihao.xiang@intel.com>
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdbool.h>
-#include <string.h>
-#include <assert.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "i965_encoder.h"
-#include "gen6_vme.h"
-#include "gen6_mfc.h"
-#include "gen9_mfc.h"
-#include "intel_media.h"
-#include "gen9_vp9_encapi.h"
-#include "i965_post_processing.h"
-
-#ifdef SURFACE_STATE_PADDED_SIZE
-#undef SURFACE_STATE_PADDED_SIZE
-#endif
-
-#define SURFACE_STATE_PADDED_SIZE SURFACE_STATE_PADDED_SIZE_GEN8
-#define SURFACE_STATE_OFFSET(index) (SURFACE_STATE_PADDED_SIZE * index)
-#define BINDING_TABLE_OFFSET(index) (SURFACE_STATE_OFFSET(MAX_MEDIA_SURFACES_GEN6) + sizeof(unsigned int) * index)
-
-#define VME_INTRA_SHADER 0
-#define VME_INTER_SHADER 1
-#define VME_BINTER_SHADER 2
-
-#define CURBE_ALLOCATION_SIZE 37 /* in 256-bit */
-#define CURBE_TOTAL_DATA_LENGTH (4 * 32) /* in byte, it should be less than or equal to CURBE_ALLOCATION_SIZE * 32 */
-#define CURBE_URB_ENTRY_LENGTH 4 /* in 256-bit, it should be less than or equal to CURBE_TOTAL_DATA_LENGTH / 32 */
-
-#define VME_MSG_LENGTH 32
-
-static const uint32_t gen9_vme_intra_frame[][4] = {
-#include "shaders/vme/intra_frame_gen9.g9b"
-};
-
-static const uint32_t gen9_vme_inter_frame[][4] = {
-#include "shaders/vme/inter_frame_gen9.g9b"
-};
-
-static const uint32_t gen9_vme_inter_bframe[][4] = {
-#include "shaders/vme/inter_bframe_gen9.g9b"
-};
-
-static struct i965_kernel gen9_vme_kernels[] = {
- {
- "VME Intra Frame",
- VME_INTRA_SHADER, /*index*/
- gen9_vme_intra_frame,
- sizeof(gen9_vme_intra_frame),
- NULL
- },
- {
- "VME inter Frame",
- VME_INTER_SHADER,
- gen9_vme_inter_frame,
- sizeof(gen9_vme_inter_frame),
- NULL
- },
- {
- "VME inter BFrame",
- VME_BINTER_SHADER,
- gen9_vme_inter_bframe,
- sizeof(gen9_vme_inter_bframe),
- NULL
- }
-};
-
-static const uint32_t gen9_vme_mpeg2_intra_frame[][4] = {
-#include "shaders/vme/intra_frame_gen9.g9b"
-};
-
-static const uint32_t gen9_vme_mpeg2_inter_frame[][4] = {
-#include "shaders/vme/mpeg2_inter_gen9.g9b"
-};
-
-static struct i965_kernel gen9_vme_mpeg2_kernels[] = {
- {
- "VME Intra Frame",
- VME_INTRA_SHADER, /*index*/
- gen9_vme_mpeg2_intra_frame,
- sizeof(gen9_vme_mpeg2_intra_frame),
- NULL
- },
- {
- "VME inter Frame",
- VME_INTER_SHADER,
- gen9_vme_mpeg2_inter_frame,
- sizeof(gen9_vme_mpeg2_inter_frame),
- NULL
- },
-};
-
-static const uint32_t gen9_vme_vp8_intra_frame[][4] = {
-#include "shaders/vme/vp8_intra_frame_gen9.g9b"
-};
-
-static const uint32_t gen9_vme_vp8_inter_frame[][4] = {
-#include "shaders/vme/vp8_inter_frame_gen9.g9b"
-};
-
-static struct i965_kernel gen9_vme_vp8_kernels[] = {
- {
- "VME Intra Frame",
- VME_INTRA_SHADER, /*index*/
- gen9_vme_vp8_intra_frame,
- sizeof(gen9_vme_vp8_intra_frame),
- NULL
- },
- {
- "VME inter Frame",
- VME_INTER_SHADER,
- gen9_vme_vp8_inter_frame,
- sizeof(gen9_vme_vp8_inter_frame),
- NULL
- },
-};
-
-/* HEVC */
-
-static const uint32_t gen9_vme_hevc_intra_frame[][4] = {
-#include "shaders/vme/intra_frame_gen9.g9b"
-};
-
-static const uint32_t gen9_vme_hevc_inter_frame[][4] = {
-#include "shaders/vme/inter_frame_gen9.g9b"
-};
-
-static const uint32_t gen9_vme_hevc_inter_bframe[][4] = {
-#include "shaders/vme/inter_bframe_gen9.g9b"
-};
-
-static struct i965_kernel gen9_vme_hevc_kernels[] = {
- {
- "VME Intra Frame",
- VME_INTRA_SHADER, /*index*/
- gen9_vme_hevc_intra_frame,
- sizeof(gen9_vme_hevc_intra_frame),
- NULL
- },
- {
- "VME inter Frame",
- VME_INTER_SHADER,
- gen9_vme_hevc_inter_frame,
- sizeof(gen9_vme_hevc_inter_frame),
- NULL
- },
- {
- "VME inter BFrame",
- VME_BINTER_SHADER,
- gen9_vme_hevc_inter_bframe,
- sizeof(gen9_vme_hevc_inter_bframe),
- NULL
- }
-};
-/* only used for VME source surface state */
-static void
-gen9_vme_source_surface_state(VADriverContextP ctx,
- int index,
- struct object_surface *obj_surface,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- vme_context->vme_surface2_setup(ctx,
- &vme_context->gpe_context,
- obj_surface,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index));
-}
-
-static void
-gen9_vme_media_source_surface_state(VADriverContextP ctx,
- int index,
- struct object_surface *obj_surface,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- vme_context->vme_media_rw_surface_setup(ctx,
- &vme_context->gpe_context,
- obj_surface,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index),
- 0);
-}
-
-static void
-gen9_vme_media_chroma_source_surface_state(VADriverContextP ctx,
- int index,
- struct object_surface *obj_surface,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- vme_context->vme_media_chroma_surface_setup(ctx,
- &vme_context->gpe_context,
- obj_surface,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index),
- 0);
-}
-
-static void
-gen9_vme_output_buffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context,
- int is_intra,
- int width_in_mbs,
- int height_in_mbs)
-
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- vme_context->vme_output.num_blocks = width_in_mbs * height_in_mbs;
- vme_context->vme_output.pitch = 16; /* in bytes, always 16 */
-
- if (is_intra)
- vme_context->vme_output.size_block = INTRA_VME_OUTPUT_IN_BYTES * 2;
- else
- vme_context->vme_output.size_block = INTRA_VME_OUTPUT_IN_BYTES * 24;
- /*
- * Inter MV . 32-byte Intra search + 16 IME info + 128 IME MV + 32 IME Ref
- * + 16 FBR Info + 128 FBR MV + 32 FBR Ref.
- * 16 * (2 + 2 * (1 + 8 + 2))= 16 * 24.
- */
-
- vme_context->vme_output.bo = dri_bo_alloc(i965->intel.bufmgr,
- "VME output buffer",
- vme_context->vme_output.num_blocks * vme_context->vme_output.size_block,
- 0x1000);
- assert(vme_context->vme_output.bo);
- vme_context->vme_buffer_suface_setup(ctx,
- &vme_context->gpe_context,
- &vme_context->vme_output,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index));
-}
-
-static void
-gen9_vme_avc_output_buffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context)
-{
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int is_intra = pSliceParameter->slice_type == SLICE_TYPE_I;
- int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
-
- gen9_vme_output_buffer_setup(ctx, encode_state, index, encoder_context, is_intra, width_in_mbs, height_in_mbs);
-
-}
-
-static void
-gen9_vme_output_vme_batchbuffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context,
- int width_in_mbs,
- int height_in_mbs)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- vme_context->vme_batchbuffer.num_blocks = width_in_mbs * height_in_mbs + 1;
- vme_context->vme_batchbuffer.size_block = 64; /* 4 OWORDs */
- vme_context->vme_batchbuffer.pitch = 16;
- vme_context->vme_batchbuffer.bo = dri_bo_alloc(i965->intel.bufmgr,
- "VME batchbuffer",
- vme_context->vme_batchbuffer.num_blocks * vme_context->vme_batchbuffer.size_block,
- 0x1000);
- vme_context->vme_buffer_suface_setup(ctx,
- &vme_context->gpe_context,
- &vme_context->vme_batchbuffer,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index));
-}
-
-static void
-gen9_vme_avc_output_vme_batchbuffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context)
-{
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
-
- gen9_vme_output_vme_batchbuffer_setup(ctx, encode_state, index, encoder_context, width_in_mbs, height_in_mbs);
-}
-
-
-static VAStatus
-gen9_vme_surface_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct object_surface *obj_surface;
-
- /*Setup surfaces state*/
- /* current picture for encoding */
- obj_surface = encode_state->input_yuv_object;
- assert(obj_surface);
- gen9_vme_source_surface_state(ctx, 0, obj_surface, encoder_context);
- gen9_vme_media_source_surface_state(ctx, 4, obj_surface, encoder_context);
- gen9_vme_media_chroma_source_surface_state(ctx, 6, obj_surface, encoder_context);
-
- if (!is_intra) {
- VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int slice_type;
-
- slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
- assert(slice_type != SLICE_TYPE_I && slice_type != SLICE_TYPE_SI);
-
- intel_avc_vme_reference_state(ctx, encode_state, encoder_context, 0, 1, gen9_vme_source_surface_state);
-
- if (slice_type == SLICE_TYPE_B)
- intel_avc_vme_reference_state(ctx, encode_state, encoder_context, 1, 2, gen9_vme_source_surface_state);
- }
-
- /* VME output */
- gen9_vme_avc_output_buffer_setup(ctx, encode_state, 3, encoder_context);
- gen9_vme_avc_output_vme_batchbuffer_setup(ctx, encode_state, 5, encoder_context);
- intel_h264_setup_cost_surface(ctx, encode_state, encoder_context,
- BINDING_TABLE_OFFSET(INTEL_COST_TABLE_OFFSET),
- SURFACE_STATE_OFFSET(INTEL_COST_TABLE_OFFSET));
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus gen9_vme_interface_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct gen8_interface_descriptor_data *desc;
- int i;
- dri_bo *bo;
- unsigned char *desc_ptr;
-
- bo = vme_context->gpe_context.idrt.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- desc_ptr = (unsigned char *)bo->virtual + vme_context->gpe_context.idrt.offset;
-
- desc = (struct gen8_interface_descriptor_data *)desc_ptr;
-
- for (i = 0; i < vme_context->vme_kernel_sum; i++) {
- struct i965_kernel *kernel;
- kernel = &vme_context->gpe_context.kernels[i];
- assert(sizeof(*desc) == 32);
- /*Setup the descritor table*/
- memset(desc, 0, sizeof(*desc));
- desc->desc0.kernel_start_pointer = kernel->kernel_offset >> 6;
- desc->desc3.sampler_count = 0; /* FIXME: */
- desc->desc3.sampler_state_pointer = 0;
- desc->desc4.binding_table_entry_count = 1; /* FIXME: */
- desc->desc4.binding_table_pointer = (BINDING_TABLE_OFFSET(0) >> 5);
- desc->desc5.constant_urb_entry_read_offset = 0;
- desc->desc5.constant_urb_entry_read_length = CURBE_URB_ENTRY_LENGTH;
-
- desc++;
- }
-
- dri_bo_unmap(bo);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus gen9_vme_constant_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int denom)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- unsigned char *constant_buffer;
- unsigned int *vme_state_message;
- int mv_num = 32;
-
- vme_state_message = (unsigned int *)vme_context->vme_state_message;
-
- if (encoder_context->codec == CODEC_H264 ||
- encoder_context->codec == CODEC_H264_MVC) {
- if (vme_context->h264_level >= 30) {
- mv_num = 16 / denom;
-
- if (vme_context->h264_level >= 31)
- mv_num = 8 / denom;
- }
- } else if (encoder_context->codec == CODEC_MPEG2) {
- mv_num = 2 / denom;
- }else if (encoder_context->codec == CODEC_HEVC) {
- if (vme_context->hevc_level >= 30*3) {
- mv_num = 16;
-
- if (vme_context->hevc_level >= 31*3)
- mv_num = 8;
- }/* use the avc level setting */
- }
-
- vme_state_message[31] = mv_num;
-
- dri_bo_map(vme_context->gpe_context.curbe.bo, 1);
- assert(vme_context->gpe_context.curbe.bo->virtual);
- constant_buffer = (unsigned char *)vme_context->gpe_context.curbe.bo->virtual +
- vme_context->gpe_context.curbe.offset;
-
- /* VME MV/Mb cost table is passed by using const buffer */
- /* Now it uses the fixed search path. So it is constructed directly
- * in the GPU shader.
- */
- memcpy(constant_buffer, (char *)vme_context->vme_state_message, 128);
-
- dri_bo_unmap(vme_context->gpe_context.curbe.bo);
-
- return VA_STATUS_SUCCESS;
-}
-
-#define MB_SCOREBOARD_A (1 << 0)
-#define MB_SCOREBOARD_B (1 << 1)
-#define MB_SCOREBOARD_C (1 << 2)
-
-/* check whether the mb of (x_index, y_index) is out of bound */
-static inline int loop_in_bounds(int x_index, int y_index, int first_mb, int num_mb, int mb_width, int mb_height)
-{
- int mb_index;
- if (x_index < 0 || x_index >= mb_width)
- return -1;
- if (y_index < 0 || y_index >= mb_height)
- return -1;
-
- mb_index = y_index * mb_width + x_index;
- if (mb_index < first_mb || mb_index > (first_mb + num_mb))
- return -1;
- return 0;
-}
-
-static void
-gen9wa_vme_walker_fill_vme_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- int mb_width, int mb_height,
- int kernel,
- int transform_8x8_mode_flag,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- int mb_row;
- int s;
- unsigned int *command_ptr;
-
-#define USE_SCOREBOARD (1 << 21)
-
- dri_bo_map(vme_context->vme_batchbuffer.bo, 1);
- command_ptr = vme_context->vme_batchbuffer.bo->virtual;
-
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[s]->buffer;
- int first_mb = pSliceParameter->macroblock_address;
- int num_mb = pSliceParameter->num_macroblocks;
- unsigned int mb_intra_ub, score_dep;
- int x_outer, y_outer, x_inner, y_inner;
- int xtemp_outer = 0;
-
- x_outer = first_mb % mb_width;
- y_outer = first_mb / mb_width;
- mb_row = y_outer;
-
- for (; x_outer < (mb_width -2 ) && !loop_in_bounds(x_outer, y_outer, first_mb, num_mb, mb_width, mb_height); ) {
- x_inner = x_outer;
- y_inner = y_outer;
- for (; !loop_in_bounds(x_inner, y_inner, first_mb, num_mb, mb_width, mb_height);) {
- mb_intra_ub = 0;
- score_dep = 0;
- if (x_inner != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- score_dep |= MB_SCOREBOARD_A;
- }
- if (y_inner != mb_row) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
- score_dep |= MB_SCOREBOARD_B;
- if (x_inner != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
- if (x_inner != (mb_width -1)) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- score_dep |= MB_SCOREBOARD_C;
- }
- }
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (8 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = USE_SCOREBOARD;
- /* Indirect data */
- *command_ptr++ = 0;
- /* the (X, Y) term of scoreboard */
- *command_ptr++ = ((y_inner << 16) | x_inner);
- *command_ptr++ = score_dep;
- /*inline data */
- *command_ptr++ = (mb_width << 16 | y_inner << 8 | x_inner);
- *command_ptr++ = ((1 << 18) | (1 << 16) | transform_8x8_mode_flag | (mb_intra_ub << 8));
- *command_ptr++ = CMD_MEDIA_STATE_FLUSH;
- *command_ptr++ = 0;
-
- x_inner -= 2;
- y_inner += 1;
- }
- x_outer += 1;
- }
-
- xtemp_outer = mb_width - 2;
- if (xtemp_outer < 0)
- xtemp_outer = 0;
- x_outer = xtemp_outer;
- y_outer = first_mb / mb_width;
- for (;!loop_in_bounds(x_outer, y_outer, first_mb, num_mb, mb_width, mb_height); ) {
- y_inner = y_outer;
- x_inner = x_outer;
- for (; !loop_in_bounds(x_inner, y_inner, first_mb, num_mb, mb_width, mb_height);) {
- mb_intra_ub = 0;
- score_dep = 0;
- if (x_inner != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- score_dep |= MB_SCOREBOARD_A;
- }
- if (y_inner != mb_row) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
- score_dep |= MB_SCOREBOARD_B;
- if (x_inner != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
-
- if (x_inner != (mb_width -1)) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- score_dep |= MB_SCOREBOARD_C;
- }
- }
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (8 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = USE_SCOREBOARD;
- /* Indirect data */
- *command_ptr++ = 0;
- /* the (X, Y) term of scoreboard */
- *command_ptr++ = ((y_inner << 16) | x_inner);
- *command_ptr++ = score_dep;
- /*inline data */
- *command_ptr++ = (mb_width << 16 | y_inner << 8 | x_inner);
- *command_ptr++ = ((1 << 18) | (1 << 16) | transform_8x8_mode_flag | (mb_intra_ub << 8));
-
- *command_ptr++ = CMD_MEDIA_STATE_FLUSH;
- *command_ptr++ = 0;
- x_inner -= 2;
- y_inner += 1;
- }
- x_outer++;
- if (x_outer >= mb_width) {
- y_outer += 1;
- x_outer = xtemp_outer;
- }
- }
- }
-
- *command_ptr++ = MI_BATCH_BUFFER_END;
- *command_ptr++ = 0;
-
- dri_bo_unmap(vme_context->vme_batchbuffer.bo);
-}
-
-static void
-gen9_vme_fill_vme_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- int mb_width, int mb_height,
- int kernel,
- int transform_8x8_mode_flag,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- int mb_x = 0, mb_y = 0;
- int i, s;
- unsigned int *command_ptr;
- struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
- VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int qp;
- int slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
- int qp_mb, qp_index;
-
- if (encoder_context->rate_control_mode == VA_RC_CQP)
- qp = pic_param->pic_init_qp + slice_param->slice_qp_delta;
- else
- qp = mfc_context->brc.qp_prime_y[encoder_context->layer.curr_frame_layer_id][slice_type];
-
- dri_bo_map(vme_context->vme_batchbuffer.bo, 1);
- command_ptr = vme_context->vme_batchbuffer.bo->virtual;
-
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[s]->buffer;
- int slice_mb_begin = pSliceParameter->macroblock_address;
- int slice_mb_number = pSliceParameter->num_macroblocks;
- unsigned int mb_intra_ub;
- int slice_mb_x = pSliceParameter->macroblock_address % mb_width;
- for (i = 0; i < slice_mb_number; ) {
- int mb_count = i + slice_mb_begin;
- mb_x = mb_count % mb_width;
- mb_y = mb_count / mb_width;
- mb_intra_ub = 0;
- if (mb_x != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- }
- if (mb_y != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
- if (mb_x != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
- if (mb_x != (mb_width -1))
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- }
- if (i < mb_width) {
- if (i == 0)
- mb_intra_ub &= ~(INTRA_PRED_AVAIL_FLAG_AE);
- mb_intra_ub &= ~(INTRA_PRED_AVAIL_FLAG_BCD_MASK);
- if ((i == (mb_width - 1)) && slice_mb_x) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- }
- }
-
- if ((i == mb_width) && slice_mb_x) {
- mb_intra_ub &= ~(INTRA_PRED_AVAIL_FLAG_D);
- }
- *command_ptr++ = (CMD_MEDIA_OBJECT | (9 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
-
- /*inline data */
- *command_ptr++ = (mb_width << 16 | mb_y << 8 | mb_x);
- *command_ptr++ = ((encoder_context->quality_level << 24) | (1 << 16) | transform_8x8_mode_flag | (mb_intra_ub << 8));
- /* qp occupies one byte */
- if (vme_context->roi_enabled) {
- qp_index = mb_y * mb_width + mb_x;
- qp_mb = *(vme_context->qp_per_mb + qp_index);
- } else
- qp_mb = qp;
- *command_ptr++ = qp_mb;
-
- *command_ptr++ = CMD_MEDIA_STATE_FLUSH;
- *command_ptr++ = 0;
- i += 1;
- }
- }
-
- *command_ptr++ = MI_BATCH_BUFFER_END;
- *command_ptr++ = 0;
-
- dri_bo_unmap(vme_context->vme_batchbuffer.bo);
-}
-
-static void gen9_vme_media_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- gen8_gpe_context_init(ctx, &vme_context->gpe_context);
-
- /* VME output buffer */
- dri_bo_unreference(vme_context->vme_output.bo);
- vme_context->vme_output.bo = NULL;
-
- dri_bo_unreference(vme_context->vme_batchbuffer.bo);
- vme_context->vme_batchbuffer.bo = NULL;
-
- /* VME state */
- dri_bo_unreference(vme_context->vme_state.bo);
- vme_context->vme_state.bo = NULL;
-}
-
-static void gen9_vme_pipeline_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- VAEncPictureParameterBufferH264 *pPicParameter = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
- int kernel_shader;
- bool allow_hwscore = true;
- int s;
- unsigned int is_low_quality = (encoder_context->quality_level == ENCODER_LOW_QUALITY);
-
- if (is_low_quality)
- allow_hwscore = false;
- else {
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[s]->buffer;
- if ((pSliceParameter->macroblock_address % width_in_mbs)) {
- allow_hwscore = false;
- break;
- }
- }
- }
-
- if ((pSliceParameter->slice_type == SLICE_TYPE_I) ||
- (pSliceParameter->slice_type == SLICE_TYPE_SI)) {
- kernel_shader = VME_INTRA_SHADER;
- } else if ((pSliceParameter->slice_type == SLICE_TYPE_P) ||
- (pSliceParameter->slice_type == SLICE_TYPE_SP)) {
- kernel_shader = VME_INTER_SHADER;
- } else {
- kernel_shader = VME_BINTER_SHADER;
- if (!allow_hwscore)
- kernel_shader = VME_INTER_SHADER;
- }
- if (allow_hwscore)
- gen9wa_vme_walker_fill_vme_batchbuffer(ctx,
- encode_state,
- width_in_mbs, height_in_mbs,
- kernel_shader,
- pPicParameter->pic_fields.bits.transform_8x8_mode_flag,
- encoder_context);
- else
- gen9_vme_fill_vme_batchbuffer(ctx,
- encode_state,
- width_in_mbs, height_in_mbs,
- kernel_shader,
- pPicParameter->pic_fields.bits.transform_8x8_mode_flag,
- encoder_context);
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- gen9_gpe_pipeline_setup(ctx, &vme_context->gpe_context, batch);
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8) | (1 << 0));
- OUT_RELOC64(batch,
- vme_context->vme_batchbuffer.bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- ADVANCE_BATCH(batch);
-
- gen9_gpe_pipeline_end(ctx, &vme_context->gpe_context, batch);
-
- intel_batchbuffer_end_atomic(batch);
-}
-
-static VAStatus gen9_vme_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
- int is_intra = pSliceParameter->slice_type == SLICE_TYPE_I;
- VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- if (!vme_context->h264_level ||
- (vme_context->h264_level != pSequenceParameter->level_idc)) {
- vme_context->h264_level = pSequenceParameter->level_idc;
- }
-
- intel_vme_update_mbmv_cost(ctx, encode_state, encoder_context);
- intel_h264_initialize_mbmv_cost(ctx, encode_state, encoder_context);
- intel_h264_enc_roi_config(ctx, encode_state, encoder_context);
-
- /*Setup all the memory object*/
- gen9_vme_surface_setup(ctx, encode_state, is_intra, encoder_context);
- gen9_vme_interface_setup(ctx, encode_state, encoder_context);
- //gen9_vme_vme_state_setup(ctx, encode_state, is_intra, encoder_context);
- gen9_vme_constant_setup(ctx, encode_state, encoder_context, (pSliceParameter->slice_type == SLICE_TYPE_B) ? 2 : 1);
-
- /*Programing media pipeline*/
- gen9_vme_pipeline_programing(ctx, encode_state, encoder_context);
-
- return vaStatus;
-}
-
-static VAStatus gen9_vme_run(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- intel_batchbuffer_flush(batch);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus gen9_vme_stop(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen9_vme_pipeline(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- gen9_vme_media_init(ctx, encoder_context);
- gen9_vme_prepare(ctx, encode_state, encoder_context);
- gen9_vme_run(ctx, encode_state, encoder_context);
- gen9_vme_stop(ctx, encode_state, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen9_vme_mpeg2_output_buffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-
-{
- VAEncSequenceParameterBufferMPEG2 *seq_param = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = ALIGN(seq_param->picture_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->picture_height, 16) / 16;
-
- gen9_vme_output_buffer_setup(ctx, encode_state, index, encoder_context, is_intra, width_in_mbs, height_in_mbs);
-}
-
-static void
-gen9_vme_mpeg2_output_vme_batchbuffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context)
-
-{
- VAEncSequenceParameterBufferMPEG2 *seq_param = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = ALIGN(seq_param->picture_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->picture_height, 16) / 16;
-
- gen9_vme_output_vme_batchbuffer_setup(ctx, encode_state, index, encoder_context, width_in_mbs, height_in_mbs);
-}
-
-static VAStatus
-gen9_vme_mpeg2_surface_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct object_surface *obj_surface;
-
- /*Setup surfaces state*/
- /* current picture for encoding */
- obj_surface = encode_state->input_yuv_object;
- gen9_vme_source_surface_state(ctx, 0, obj_surface, encoder_context);
- gen9_vme_media_source_surface_state(ctx, 4, obj_surface, encoder_context);
- gen9_vme_media_chroma_source_surface_state(ctx, 6, obj_surface, encoder_context);
-
- if (!is_intra) {
- /* reference 0 */
- obj_surface = encode_state->reference_objects[0];
-
- if (obj_surface->bo != NULL)
- gen9_vme_source_surface_state(ctx, 1, obj_surface, encoder_context);
-
- /* reference 1 */
- obj_surface = encode_state->reference_objects[1];
-
- if (obj_surface && obj_surface->bo != NULL)
- gen9_vme_source_surface_state(ctx, 2, obj_surface, encoder_context);
- }
-
- /* VME output */
- gen9_vme_mpeg2_output_buffer_setup(ctx, encode_state, 3, is_intra, encoder_context);
- gen9_vme_mpeg2_output_vme_batchbuffer_setup(ctx, encode_state, 5, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen9wa_vme_mpeg2_walker_fill_vme_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- int mb_width, int mb_height,
- int kernel,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- unsigned int *command_ptr;
-
-#define MPEG2_SCOREBOARD (1 << 21)
-
- dri_bo_map(vme_context->vme_batchbuffer.bo, 1);
- command_ptr = vme_context->vme_batchbuffer.bo->virtual;
-
- {
- unsigned int mb_intra_ub, score_dep;
- int x_outer, y_outer, x_inner, y_inner;
- int xtemp_outer = 0;
- int first_mb = 0;
- int num_mb = mb_width * mb_height;
-
- x_outer = 0;
- y_outer = 0;
-
- for (; x_outer < (mb_width -2 ) && !loop_in_bounds(x_outer, y_outer, first_mb, num_mb, mb_width, mb_height); ) {
- x_inner = x_outer;
- y_inner = y_outer;
- for (; !loop_in_bounds(x_inner, y_inner, first_mb, num_mb, mb_width, mb_height);) {
- mb_intra_ub = 0;
- score_dep = 0;
- if (x_inner != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- score_dep |= MB_SCOREBOARD_A;
- }
- if (y_inner != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
- score_dep |= MB_SCOREBOARD_B;
-
- if (x_inner != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
-
- if (x_inner != (mb_width -1)) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- score_dep |= MB_SCOREBOARD_C;
- }
- }
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (8 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = MPEG2_SCOREBOARD;
- /* Indirect data */
- *command_ptr++ = 0;
- /* the (X, Y) term of scoreboard */
- *command_ptr++ = ((y_inner << 16) | x_inner);
- *command_ptr++ = score_dep;
- /*inline data */
- *command_ptr++ = (mb_width << 16 | y_inner << 8 | x_inner);
- *command_ptr++ = ((1 << 18) | (1 << 16) | (mb_intra_ub << 8));
- *command_ptr++ = CMD_MEDIA_STATE_FLUSH;
- *command_ptr++ = 0;
-
- x_inner -= 2;
- y_inner += 1;
- }
- x_outer += 1;
- }
-
- xtemp_outer = mb_width - 2;
- if (xtemp_outer < 0)
- xtemp_outer = 0;
- x_outer = xtemp_outer;
- y_outer = 0;
- for (;!loop_in_bounds(x_outer, y_outer, first_mb, num_mb, mb_width, mb_height); ) {
- y_inner = y_outer;
- x_inner = x_outer;
- for (; !loop_in_bounds(x_inner, y_inner, first_mb, num_mb, mb_width, mb_height);) {
- mb_intra_ub = 0;
- score_dep = 0;
- if (x_inner != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- score_dep |= MB_SCOREBOARD_A;
- }
- if (y_inner != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
- score_dep |= MB_SCOREBOARD_B;
-
- if (x_inner != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
-
- if (x_inner != (mb_width -1)) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- score_dep |= MB_SCOREBOARD_C;
- }
- }
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (8 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = MPEG2_SCOREBOARD;
- /* Indirect data */
- *command_ptr++ = 0;
- /* the (X, Y) term of scoreboard */
- *command_ptr++ = ((y_inner << 16) | x_inner);
- *command_ptr++ = score_dep;
- /*inline data */
- *command_ptr++ = (mb_width << 16 | y_inner << 8 | x_inner);
- *command_ptr++ = ((1 << 18) | (1 << 16) | (mb_intra_ub << 8));
-
- *command_ptr++ = CMD_MEDIA_STATE_FLUSH;
- *command_ptr++ = 0;
- x_inner -= 2;
- y_inner += 1;
- }
- x_outer++;
- if (x_outer >= mb_width) {
- y_outer += 1;
- x_outer = xtemp_outer;
- }
- }
- }
-
- *command_ptr++ = MI_BATCH_BUFFER_END;
- *command_ptr++ = 0;
-
- dri_bo_unmap(vme_context->vme_batchbuffer.bo);
- return;
-}
-
-static void
-gen9_vme_mpeg2_fill_vme_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- int mb_width, int mb_height,
- int kernel,
- int transform_8x8_mode_flag,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- int mb_x = 0, mb_y = 0;
- int i, s, j;
- unsigned int *command_ptr;
-
-
- dri_bo_map(vme_context->vme_batchbuffer.bo, 1);
- command_ptr = vme_context->vme_batchbuffer.bo->virtual;
-
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- VAEncSliceParameterBufferMPEG2 *slice_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[s]->buffer;
-
- for (j = 0; j < encode_state->slice_params_ext[s]->num_elements; j++) {
- int slice_mb_begin = slice_param->macroblock_address;
- int slice_mb_number = slice_param->num_macroblocks;
- unsigned int mb_intra_ub;
-
- for (i = 0; i < slice_mb_number;) {
- int mb_count = i + slice_mb_begin;
-
- mb_x = mb_count % mb_width;
- mb_y = mb_count / mb_width;
- mb_intra_ub = 0;
-
- if (mb_x != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- }
-
- if (mb_y != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
-
- if (mb_x != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
-
- if (mb_x != (mb_width -1))
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- }
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (8 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
-
- /*inline data */
- *command_ptr++ = (mb_width << 16 | mb_y << 8 | mb_x);
- *command_ptr++ = ( (1 << 16) | transform_8x8_mode_flag | (mb_intra_ub << 8));
-
- *command_ptr++ = CMD_MEDIA_STATE_FLUSH;
- *command_ptr++ = 0;
- i += 1;
- }
-
- slice_param++;
- }
- }
-
- *command_ptr++ = MI_BATCH_BUFFER_END;
- *command_ptr++ = 0;
-
- dri_bo_unmap(vme_context->vme_batchbuffer.bo);
-}
-
-static void
-gen9_vme_mpeg2_pipeline_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- VAEncSequenceParameterBufferMPEG2 *seq_param = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = ALIGN(seq_param->picture_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->picture_height, 16) / 16;
- bool allow_hwscore = true;
- int s;
- int kernel_shader;
- VAEncPictureParameterBufferMPEG2 *pic_param = NULL;
-
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- int j;
- VAEncSliceParameterBufferMPEG2 *slice_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[s]->buffer;
-
- for (j = 0; j < encode_state->slice_params_ext[s]->num_elements; j++) {
- if (slice_param->macroblock_address % width_in_mbs) {
- allow_hwscore = false;
- break;
- }
- }
- }
-
- pic_param = (VAEncPictureParameterBufferMPEG2 *)encode_state->pic_param_ext->buffer;
- if (pic_param->picture_type == VAEncPictureTypeIntra) {
- allow_hwscore = false;
- kernel_shader = VME_INTRA_SHADER;
- } else {
- kernel_shader = VME_INTER_SHADER;
- }
-
- if (allow_hwscore)
- gen9wa_vme_mpeg2_walker_fill_vme_batchbuffer(ctx,
- encode_state,
- width_in_mbs, height_in_mbs,
- kernel_shader,
- encoder_context);
- else
- gen9_vme_mpeg2_fill_vme_batchbuffer(ctx,
- encode_state,
- width_in_mbs, height_in_mbs,
- is_intra ? VME_INTRA_SHADER : VME_INTER_SHADER,
- 0,
- encoder_context);
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- gen9_gpe_pipeline_setup(ctx, &vme_context->gpe_context, batch);
- BEGIN_BATCH(batch, 4);
- OUT_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8) | (1 << 0));
- OUT_RELOC64(batch,
- vme_context->vme_batchbuffer.bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- gen9_gpe_pipeline_end(ctx, &vme_context->gpe_context, batch);
-
- intel_batchbuffer_end_atomic(batch);
-}
-
-static VAStatus
-gen9_vme_mpeg2_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- VAEncSliceParameterBufferMPEG2 *slice_param = (VAEncSliceParameterBufferMPEG2 *)encode_state->slice_params_ext[0]->buffer;
- VAEncSequenceParameterBufferMPEG2 *seq_param = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- if ((!vme_context->mpeg2_level) ||
- (vme_context->mpeg2_level != (seq_param->sequence_extension.bits.profile_and_level_indication & MPEG2_LEVEL_MASK))) {
- vme_context->mpeg2_level = seq_param->sequence_extension.bits.profile_and_level_indication & MPEG2_LEVEL_MASK;
- }
-
- /*Setup all the memory object*/
- gen9_vme_mpeg2_surface_setup(ctx, encode_state, slice_param->is_intra_slice, encoder_context);
- gen9_vme_interface_setup(ctx, encode_state, encoder_context);
- //gen9_vme_vme_state_setup(ctx, encode_state, slice_param->is_intra_slice, encoder_context);
- intel_vme_mpeg2_state_setup(ctx, encode_state, encoder_context);
- gen9_vme_constant_setup(ctx, encode_state, encoder_context, 1);
-
- /*Programing media pipeline*/
- gen9_vme_mpeg2_pipeline_programing(ctx, encode_state, slice_param->is_intra_slice, encoder_context);
-
- return vaStatus;
-}
-
-static VAStatus
-gen9_vme_mpeg2_pipeline(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- gen9_vme_media_init(ctx, encoder_context);
- gen9_vme_mpeg2_prepare(ctx, encode_state, encoder_context);
- gen9_vme_run(ctx, encode_state, encoder_context);
- gen9_vme_stop(ctx, encode_state, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen9_vme_vp8_output_buffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- VAEncSequenceParameterBufferVP8 *seq_param = (VAEncSequenceParameterBufferVP8 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = ALIGN(seq_param->frame_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->frame_height, 16) / 16;
-
- gen9_vme_output_buffer_setup(ctx, encode_state, index, encoder_context, is_intra, width_in_mbs, height_in_mbs);
-}
-
-static void
-gen9_vme_vp8_output_vme_batchbuffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context)
-{
- VAEncSequenceParameterBufferVP8 *seq_param = (VAEncSequenceParameterBufferVP8 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = ALIGN(seq_param->frame_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->frame_height, 16) / 16;
-
- gen9_vme_output_vme_batchbuffer_setup(ctx, encode_state, index, encoder_context, width_in_mbs, height_in_mbs);
-}
-
-static VAStatus
-gen9_vme_vp8_surface_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct object_surface *obj_surface;
-
- /*Setup surfaces state*/
- /* current picture for encoding */
- obj_surface = encode_state->input_yuv_object;
- gen9_vme_source_surface_state(ctx, 0, obj_surface, encoder_context);
- gen9_vme_media_source_surface_state(ctx, 4, obj_surface, encoder_context);
- gen9_vme_media_chroma_source_surface_state(ctx, 6, obj_surface, encoder_context);
-
- if (!is_intra) {
- /* reference 0 */
- obj_surface = encode_state->reference_objects[0];
-
- if (obj_surface->bo != NULL)
- gen9_vme_source_surface_state(ctx, 1, obj_surface, encoder_context);
-
- /* reference 1 */
- obj_surface = encode_state->reference_objects[1];
-
- if (obj_surface && obj_surface->bo != NULL)
- gen9_vme_source_surface_state(ctx, 2, obj_surface, encoder_context);
- }
-
- /* VME output */
- gen9_vme_vp8_output_buffer_setup(ctx, encode_state, 3, is_intra, encoder_context);
- gen9_vme_vp8_output_vme_batchbuffer_setup(ctx, encode_state, 5, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen9_vme_vp8_pipeline_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- VAEncSequenceParameterBufferVP8 *seq_param = (VAEncSequenceParameterBufferVP8 *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = ALIGN(seq_param->frame_width, 16) / 16;
- int height_in_mbs = ALIGN(seq_param->frame_height, 16) / 16;
- int kernel_shader = (is_intra ? VME_INTRA_SHADER : VME_INTER_SHADER);
-
- gen9wa_vme_mpeg2_walker_fill_vme_batchbuffer(ctx,
- encode_state,
- width_in_mbs, height_in_mbs,
- kernel_shader,
- encoder_context);
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- gen9_gpe_pipeline_setup(ctx, &vme_context->gpe_context, batch);
- BEGIN_BATCH(batch, 4);
- OUT_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8) | (1 << 0));
- OUT_RELOC64(batch,
- vme_context->vme_batchbuffer.bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- gen9_gpe_pipeline_end(ctx, &vme_context->gpe_context, batch);
-
- intel_batchbuffer_end_atomic(batch);
-}
-
-static VAStatus gen9_vme_vp8_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- VAEncPictureParameterBufferVP8 *pPicParameter = (VAEncPictureParameterBufferVP8 *)encode_state->pic_param_ext->buffer;
- int is_intra = !pPicParameter->pic_flags.bits.frame_type;
-
- /* update vp8 mbmv cost */
- intel_vme_vp8_update_mbmv_cost(ctx, encode_state, encoder_context);
-
- /*Setup all the memory object*/
- gen9_vme_vp8_surface_setup(ctx, encode_state, is_intra, encoder_context);
- gen9_vme_interface_setup(ctx, encode_state, encoder_context);
- gen9_vme_constant_setup(ctx, encode_state, encoder_context, 1);
-
- /*Programing media pipeline*/
- gen9_vme_vp8_pipeline_programing(ctx, encode_state, is_intra, encoder_context);
-
- return vaStatus;
-}
-
-static VAStatus
-gen9_vme_vp8_pipeline(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- gen9_vme_media_init(ctx, encoder_context);
- gen9_vme_vp8_prepare(ctx, encode_state, encoder_context);
- gen9_vme_run(ctx, encode_state, encoder_context);
- gen9_vme_stop(ctx, encode_state, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-/* HEVC */
-
-static void
-gen9_vme_hevc_output_buffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context)
-
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncSequenceParameterBufferHEVC *pSequenceParameter = (VAEncSequenceParameterBufferHEVC *)encode_state->seq_param_ext->buffer;
- VAEncSliceParameterBufferHEVC *pSliceParameter = (VAEncSliceParameterBufferHEVC *)encode_state->slice_params_ext[0]->buffer;
- int is_intra = pSliceParameter->slice_type == HEVC_SLICE_I;
- int width_in_mbs = (pSequenceParameter->pic_width_in_luma_samples + 15)/16;
- int height_in_mbs = (pSequenceParameter->pic_height_in_luma_samples + 15)/16;
-
-
- vme_context->vme_output.num_blocks = width_in_mbs * height_in_mbs;
- vme_context->vme_output.pitch = 16; /* in bytes, always 16 */
-
- if (is_intra)
- vme_context->vme_output.size_block = INTRA_VME_OUTPUT_IN_BYTES * 2;
- else
- vme_context->vme_output.size_block = INTRA_VME_OUTPUT_IN_BYTES * 24;
- /*
- * Inter MV . 32-byte Intra search + 16 IME info + 128 IME MV + 32 IME Ref
- * + 16 FBR Info + 128 FBR MV + 32 FBR Ref.
- * 16 * (2 + 2 * (1 + 8 + 2))= 16 * 24.
- */
-
- vme_context->vme_output.bo = dri_bo_alloc(i965->intel.bufmgr,
- "VME output buffer",
- vme_context->vme_output.num_blocks * vme_context->vme_output.size_block,
- 0x1000);
- assert(vme_context->vme_output.bo);
- vme_context->vme_buffer_suface_setup(ctx,
- &vme_context->gpe_context,
- &vme_context->vme_output,
- BINDING_TABLE_OFFSET(index),
- SURFACE_STATE_OFFSET(index));
-}
-
-static void
-gen9_vme_hevc_output_vme_batchbuffer_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int index,
- struct intel_encoder_context *encoder_context)
-
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- VAEncSequenceParameterBufferHEVC *pSequenceParameter = (VAEncSequenceParameterBufferHEVC *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = (pSequenceParameter->pic_width_in_luma_samples + 15)/16;
- int height_in_mbs = (pSequenceParameter->pic_height_in_luma_samples + 15)/16;
-
- vme_context->vme_batchbuffer.num_blocks = width_in_mbs * height_in_mbs + 1;
- vme_context->vme_batchbuffer.size_block = 64; /* 4 OWORDs */
- vme_context->vme_batchbuffer.pitch = 16;
- vme_context->vme_batchbuffer.bo = dri_bo_alloc(i965->intel.bufmgr,
- "VME batchbuffer",
- vme_context->vme_batchbuffer.num_blocks * vme_context->vme_batchbuffer.size_block,
- 0x1000);
-}
-static VAStatus
-gen9_vme_hevc_surface_setup(VADriverContextP ctx,
- struct encode_state *encode_state,
- int is_intra,
- struct intel_encoder_context *encoder_context)
-{
- struct object_surface *obj_surface;
- VAEncSequenceParameterBufferHEVC *pSequenceParameter = (VAEncSequenceParameterBufferHEVC *)encode_state->seq_param_ext->buffer;
- GenHevcSurface *hevc_encoder_surface = NULL;
-
- /*Setup surfaces state*/
- /* current picture for encoding */
- obj_surface = encode_state->input_yuv_object;
-
- if((pSequenceParameter->seq_fields.bits.bit_depth_luma_minus8 > 0)
- || (pSequenceParameter->seq_fields.bits.bit_depth_chroma_minus8 > 0)) {
- hevc_encoder_surface = (GenHevcSurface *) obj_surface->private_data;
- assert(hevc_encoder_surface);
- obj_surface = hevc_encoder_surface->nv12_surface_obj;
- }
- gen9_vme_source_surface_state(ctx, 0, obj_surface, encoder_context);
- gen9_vme_media_source_surface_state(ctx, 4, obj_surface, encoder_context);
- gen9_vme_media_chroma_source_surface_state(ctx, 6, obj_surface, encoder_context);
-
- if (!is_intra) {
- VAEncSliceParameterBufferHEVC *slice_param = (VAEncSliceParameterBufferHEVC *)encode_state->slice_params_ext[0]->buffer;
- int slice_type;
-
- slice_type = slice_param->slice_type;
- assert(slice_type != HEVC_SLICE_I);
-
- /* to do HEVC */
- intel_hevc_vme_reference_state(ctx, encode_state, encoder_context, 0, 1, gen9_vme_source_surface_state);
-
- if (slice_type == HEVC_SLICE_B)
- intel_hevc_vme_reference_state(ctx, encode_state, encoder_context, 1, 2, gen9_vme_source_surface_state);
- }
-
- /* VME output */
- gen9_vme_hevc_output_buffer_setup(ctx, encode_state, 3, encoder_context);
- gen9_vme_hevc_output_vme_batchbuffer_setup(ctx, encode_state, 5, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-static void
-gen9wa_vme_hevc_walker_fill_vme_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- int mb_width, int mb_height,
- int kernel,
- int transform_8x8_mode_flag,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- int mb_row;
- int s;
- unsigned int *command_ptr;
- VAEncSequenceParameterBufferHEVC *pSequenceParameter = (VAEncSequenceParameterBufferHEVC *)encode_state->seq_param_ext->buffer;
- int log2_cu_size = pSequenceParameter->log2_min_luma_coding_block_size_minus3 + 3;
- int log2_ctb_size = pSequenceParameter->log2_diff_max_min_luma_coding_block_size + log2_cu_size;
- int ctb_size = 1 << log2_ctb_size;
- int num_mb_in_ctb = (ctb_size + 15)/16;
- num_mb_in_ctb = num_mb_in_ctb * num_mb_in_ctb;
-
-#define USE_SCOREBOARD (1 << 21)
-
- dri_bo_map(vme_context->vme_batchbuffer.bo, 1);
- command_ptr = vme_context->vme_batchbuffer.bo->virtual;
-
- /*slice_segment_address must picture_width_in_ctb alainment */
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- VAEncSliceParameterBufferHEVC *pSliceParameter = (VAEncSliceParameterBufferHEVC *)encode_state->slice_params_ext[s]->buffer;
- int first_mb = pSliceParameter->slice_segment_address * num_mb_in_ctb;
- int num_mb = pSliceParameter->num_ctu_in_slice * num_mb_in_ctb;
- unsigned int mb_intra_ub, score_dep;
- int x_outer, y_outer, x_inner, y_inner;
- int xtemp_outer = 0;
-
- x_outer = first_mb % mb_width;
- y_outer = first_mb / mb_width;
- mb_row = y_outer;
-
- for (; x_outer < (mb_width -2 ) && !loop_in_bounds(x_outer, y_outer, first_mb, num_mb, mb_width, mb_height); ) {
- x_inner = x_outer;
- y_inner = y_outer;
- for (; !loop_in_bounds(x_inner, y_inner, first_mb, num_mb, mb_width, mb_height);) {
- mb_intra_ub = 0;
- score_dep = 0;
- if (x_inner != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- score_dep |= MB_SCOREBOARD_A;
- }
- if (y_inner != mb_row) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
- score_dep |= MB_SCOREBOARD_B;
- if (x_inner != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
- if (x_inner != (mb_width -1)) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- score_dep |= MB_SCOREBOARD_C;
- }
- }
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (8 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = USE_SCOREBOARD;
- /* Indirect data */
- *command_ptr++ = 0;
- /* the (X, Y) term of scoreboard */
- *command_ptr++ = ((y_inner << 16) | x_inner);
- *command_ptr++ = score_dep;
- /*inline data */
- *command_ptr++ = (mb_width << 16 | y_inner << 8 | x_inner);
- *command_ptr++ = ((1 << 18) | (1 << 16) | transform_8x8_mode_flag | (mb_intra_ub << 8));
- *command_ptr++ = CMD_MEDIA_STATE_FLUSH;
- *command_ptr++ = 0;
-
- x_inner -= 2;
- y_inner += 1;
- }
- x_outer += 1;
- }
-
- xtemp_outer = mb_width - 2;
- if (xtemp_outer < 0)
- xtemp_outer = 0;
- x_outer = xtemp_outer;
- y_outer = first_mb / mb_width;
- for (;!loop_in_bounds(x_outer, y_outer, first_mb, num_mb, mb_width, mb_height); ) {
- y_inner = y_outer;
- x_inner = x_outer;
- for (; !loop_in_bounds(x_inner, y_inner, first_mb, num_mb, mb_width, mb_height);) {
- mb_intra_ub = 0;
- score_dep = 0;
- if (x_inner != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- score_dep |= MB_SCOREBOARD_A;
- }
- if (y_inner != mb_row) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
- score_dep |= MB_SCOREBOARD_B;
- if (x_inner != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
-
- if (x_inner != (mb_width -1)) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- score_dep |= MB_SCOREBOARD_C;
- }
- }
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (8 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = USE_SCOREBOARD;
- /* Indirect data */
- *command_ptr++ = 0;
- /* the (X, Y) term of scoreboard */
- *command_ptr++ = ((y_inner << 16) | x_inner);
- *command_ptr++ = score_dep;
- /*inline data */
- *command_ptr++ = (mb_width << 16 | y_inner << 8 | x_inner);
- *command_ptr++ = ((1 << 18) | (1 << 16) | transform_8x8_mode_flag | (mb_intra_ub << 8));
-
- *command_ptr++ = CMD_MEDIA_STATE_FLUSH;
- *command_ptr++ = 0;
- x_inner -= 2;
- y_inner += 1;
- }
- x_outer++;
- if (x_outer >= mb_width) {
- y_outer += 1;
- x_outer = xtemp_outer;
- }
- }
- }
-
- *command_ptr++ = MI_BATCH_BUFFER_END;
- *command_ptr++ = 0;
-
- dri_bo_unmap(vme_context->vme_batchbuffer.bo);
-}
-
-static void
-gen9_vme_hevc_fill_vme_batchbuffer(VADriverContextP ctx,
- struct encode_state *encode_state,
- int mb_width, int mb_height,
- int kernel,
- int transform_8x8_mode_flag,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- int mb_x = 0, mb_y = 0;
- int i, s;
- unsigned int *command_ptr;
- VAEncSequenceParameterBufferHEVC *pSequenceParameter = (VAEncSequenceParameterBufferHEVC *)encode_state->seq_param_ext->buffer;
- int log2_cu_size = pSequenceParameter->log2_min_luma_coding_block_size_minus3 + 3;
- int log2_ctb_size = pSequenceParameter->log2_diff_max_min_luma_coding_block_size + log2_cu_size;
-
- int ctb_size = 1 << log2_ctb_size;
- int num_mb_in_ctb = (ctb_size + 15)/16;
- num_mb_in_ctb = num_mb_in_ctb * num_mb_in_ctb;
-
- dri_bo_map(vme_context->vme_batchbuffer.bo, 1);
- command_ptr = vme_context->vme_batchbuffer.bo->virtual;
-
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- VAEncSliceParameterBufferHEVC *pSliceParameter = (VAEncSliceParameterBufferHEVC *)encode_state->slice_params_ext[s]->buffer;
- int slice_mb_begin = pSliceParameter->slice_segment_address * num_mb_in_ctb;
- int slice_mb_number = pSliceParameter->num_ctu_in_slice * num_mb_in_ctb;
-
- unsigned int mb_intra_ub;
- int slice_mb_x = slice_mb_begin % mb_width;
- for (i = 0; i < slice_mb_number; ) {
- int mb_count = i + slice_mb_begin;
- mb_x = mb_count % mb_width;
- mb_y = mb_count / mb_width;
- mb_intra_ub = 0;
-
- if (mb_x != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_AE;
- }
- if (mb_y != 0) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_B;
- if (mb_x != 0)
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_D;
- if (mb_x != (mb_width -1))
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- }
- if (i < mb_width) {
- if (i == 0)
- mb_intra_ub &= ~(INTRA_PRED_AVAIL_FLAG_AE);
- mb_intra_ub &= ~(INTRA_PRED_AVAIL_FLAG_BCD_MASK);
- if ((i == (mb_width - 1)) && slice_mb_x) {
- mb_intra_ub |= INTRA_PRED_AVAIL_FLAG_C;
- }
- }
-
- if ((i == mb_width) && slice_mb_x) {
- mb_intra_ub &= ~(INTRA_PRED_AVAIL_FLAG_D);
- }
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (8 - 2));
- *command_ptr++ = kernel;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
-
- /*inline data */
- *command_ptr++ = (mb_width << 16 | mb_y << 8 | mb_x);
- *command_ptr++ = ( (1 << 16) | transform_8x8_mode_flag | (mb_intra_ub << 8));
-
- *command_ptr++ = CMD_MEDIA_STATE_FLUSH;
- *command_ptr++ = 0;
- i += 1;
- }
- }
-
- *command_ptr++ = MI_BATCH_BUFFER_END;
- *command_ptr++ = 0;
-
- dri_bo_unmap(vme_context->vme_batchbuffer.bo);
-}
-
-static void gen9_vme_hevc_pipeline_programing(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- VAEncSliceParameterBufferHEVC *pSliceParameter = (VAEncSliceParameterBufferHEVC *)encode_state->slice_params_ext[0]->buffer;
- VAEncSequenceParameterBufferHEVC *pSequenceParameter = (VAEncSequenceParameterBufferHEVC *)encode_state->seq_param_ext->buffer;
- int width_in_mbs = (pSequenceParameter->pic_width_in_luma_samples + 15)/16;
- int height_in_mbs = (pSequenceParameter->pic_height_in_luma_samples + 15)/16;
- int kernel_shader;
- bool allow_hwscore = true;
- int s;
-
- int log2_cu_size = pSequenceParameter->log2_min_luma_coding_block_size_minus3 + 3;
- int log2_ctb_size = pSequenceParameter->log2_diff_max_min_luma_coding_block_size + log2_cu_size;
-
- int ctb_size = 1 << log2_ctb_size;
- int num_mb_in_ctb = (ctb_size + 15)/16;
- int transform_8x8_mode_flag = 1;
- num_mb_in_ctb = num_mb_in_ctb * num_mb_in_ctb;
-
- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
- pSliceParameter = (VAEncSliceParameterBufferHEVC *)encode_state->slice_params_ext[s]->buffer;
- int slice_mb_begin = pSliceParameter->slice_segment_address * num_mb_in_ctb;
- if ((slice_mb_begin % width_in_mbs)) {
- allow_hwscore = false;
- break;
- }
- }
-
- if (pSliceParameter->slice_type == HEVC_SLICE_I) {
- kernel_shader = VME_INTRA_SHADER;
- } else if (pSliceParameter->slice_type == HEVC_SLICE_P) {
- kernel_shader = VME_INTER_SHADER;
- } else {
- kernel_shader = VME_BINTER_SHADER;
- if (!allow_hwscore)
- kernel_shader = VME_INTER_SHADER;
- }
- if (allow_hwscore)
- gen9wa_vme_hevc_walker_fill_vme_batchbuffer(ctx,
- encode_state,
- width_in_mbs, height_in_mbs,
- kernel_shader,
- transform_8x8_mode_flag,
- encoder_context);
- else
- gen9_vme_hevc_fill_vme_batchbuffer(ctx,
- encode_state,
- width_in_mbs, height_in_mbs,
- kernel_shader,
- transform_8x8_mode_flag,
- encoder_context);
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- gen9_gpe_pipeline_setup(ctx, &vme_context->gpe_context, batch);
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8) | (1 << 0));
- OUT_RELOC64(batch,
- vme_context->vme_batchbuffer.bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- ADVANCE_BATCH(batch);
-
- gen9_gpe_pipeline_end(ctx, &vme_context->gpe_context, batch);
-
- intel_batchbuffer_end_atomic(batch);
-}
-
-static VAStatus gen9_intel_init_hevc_surface(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct encode_state *encode_state,
- struct object_surface *input_obj_surface)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context;
- VAEncSequenceParameterBufferHEVC *pSequenceParameter = (VAEncSequenceParameterBufferHEVC *)encode_state->seq_param_ext->buffer;
- GenHevcSurface *hevc_encoder_surface;
- struct i965_surface src_surface, dst_surface;
- struct object_surface *obj_surface;
- VARectangle rect;
- VAStatus status;
-
- uint32_t size;
-
- obj_surface = input_obj_surface;
- assert(obj_surface && obj_surface->bo);
-
- if (obj_surface->private_data == NULL) {
-
- if (mfc_context->pic_size.ctb_size == 16)
- size = ((pSequenceParameter->pic_width_in_luma_samples + 63) >> 6) *
- ((pSequenceParameter->pic_height_in_luma_samples + 15) >> 4);
- else
- size = ((pSequenceParameter->pic_width_in_luma_samples + 31) >> 5) *
- ((pSequenceParameter->pic_height_in_luma_samples + 31) >> 5);
- size <<= 6; /* in unit of 64bytes */
-
- hevc_encoder_surface = calloc(sizeof(GenHevcSurface), 1);
-
- assert(hevc_encoder_surface);
- hevc_encoder_surface->motion_vector_temporal_bo =
- dri_bo_alloc(i965->intel.bufmgr,
- "motion vector temporal buffer",
- size,
- 0x1000);
- assert(hevc_encoder_surface->motion_vector_temporal_bo);
-
- hevc_encoder_surface->ctx = ctx;
- hevc_encoder_surface->nv12_surface_obj = NULL;
- hevc_encoder_surface->nv12_surface_id = VA_INVALID_SURFACE;
- hevc_encoder_surface->has_p010_to_nv12_done = 0;
-
- obj_surface->private_data = (void *)hevc_encoder_surface;
- obj_surface->free_private_data = (void *)gen_free_hevc_surface;
- }
-
- hevc_encoder_surface = (GenHevcSurface *) obj_surface->private_data;
-
- if(!hevc_encoder_surface->has_p010_to_nv12_done && obj_surface->fourcc == VA_FOURCC_P010)
- {
- // convert input
- rect.x = 0;
- rect.y = 0;
- rect.width = obj_surface->orig_width;
- rect.height = obj_surface->orig_height;
-
- src_surface.base = (struct object_base *)obj_surface;
- src_surface.type = I965_SURFACE_TYPE_SURFACE;
- src_surface.flags = I965_SURFACE_FLAG_FRAME;
-
- if(SURFACE(hevc_encoder_surface->nv12_surface_id) == NULL)
- {
- status = i965_CreateSurfaces(ctx,
- obj_surface->orig_width,
- obj_surface->orig_height,
- VA_RT_FORMAT_YUV420,
- 1,
- &hevc_encoder_surface->nv12_surface_id);
- assert(status == VA_STATUS_SUCCESS);
-
- if (status != VA_STATUS_SUCCESS)
- return status;
- }
-
- obj_surface = SURFACE(hevc_encoder_surface->nv12_surface_id);
- hevc_encoder_surface->nv12_surface_obj = obj_surface;
- assert(obj_surface);
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
-
- dst_surface.base = (struct object_base *)obj_surface;
- dst_surface.type = I965_SURFACE_TYPE_SURFACE;
- dst_surface.flags = I965_SURFACE_FLAG_FRAME;
-
- status = i965_image_processing(ctx,
- &src_surface,
- &rect,
- &dst_surface,
- &rect);
- assert(status == VA_STATUS_SUCCESS);
- hevc_encoder_surface->has_p010_to_nv12_done = 1;
- }
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus gen9_intel_hevc_input_check(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context;
- struct object_surface *obj_surface;
- GenHevcSurface *hevc_encoder_surface = NULL;
- int i;
- int fourcc;
-
- obj_surface = SURFACE(encode_state->current_render_target);
- assert(obj_surface && obj_surface->bo);
- hevc_encoder_surface = (GenHevcSurface *) obj_surface->private_data;
- if(hevc_encoder_surface)
- hevc_encoder_surface->has_p010_to_nv12_done = 0;
- gen9_intel_init_hevc_surface(ctx,encoder_context,encode_state,obj_surface);
-
- fourcc = obj_surface->fourcc;
- /* Setup current frame and current direct mv buffer*/
- obj_surface = encode_state->reconstructed_object;
- if(fourcc == VA_FOURCC_P010)
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_P010, SUBSAMPLE_YUV420);
- else
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
- hevc_encoder_surface = NULL;
- hevc_encoder_surface = (GenHevcSurface *) obj_surface->private_data;
- if(hevc_encoder_surface)
- hevc_encoder_surface->has_p010_to_nv12_done = 1;
- gen9_intel_init_hevc_surface(ctx,encoder_context,encode_state,obj_surface);
-
- /* Setup reference frames and direct mv buffers*/
- for (i = 0; i < MAX_HCP_REFERENCE_SURFACES; i++) {
- obj_surface = encode_state->reference_objects[i];
-
- if (obj_surface && obj_surface->bo) {
- mfc_context->reference_surfaces[i].bo = obj_surface->bo;
- dri_bo_reference(obj_surface->bo);
-
- gen9_intel_init_hevc_surface(ctx,encoder_context,encode_state,obj_surface);
- } else {
- break;
- }
- }
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus gen9_vme_hevc_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- VAEncSliceParameterBufferHEVC *pSliceParameter = (VAEncSliceParameterBufferHEVC *)encode_state->slice_params_ext[0]->buffer;
- int is_intra = pSliceParameter->slice_type == HEVC_SLICE_I;
- VAEncSequenceParameterBufferHEVC *pSequenceParameter = (VAEncSequenceParameterBufferHEVC *)encode_state->seq_param_ext->buffer;
- struct gen6_vme_context *vme_context = encoder_context->vme_context;
-
- /* here use the avc level for hevc vme */
- if (!vme_context->hevc_level ||
- (vme_context->hevc_level != pSequenceParameter->general_level_idc)) {
- vme_context->hevc_level = pSequenceParameter->general_level_idc;
- }
-
- //internal input check for main10
- gen9_intel_hevc_input_check(ctx,encode_state,encoder_context);
-
- intel_vme_hevc_update_mbmv_cost(ctx, encode_state, encoder_context);
-
- /*Setup all the memory object*/
- gen9_vme_hevc_surface_setup(ctx, encode_state, is_intra, encoder_context);
- gen9_vme_interface_setup(ctx, encode_state, encoder_context);
- //gen9_vme_vme_state_setup(ctx, encode_state, is_intra, encoder_context);
- gen9_vme_constant_setup(ctx, encode_state, encoder_context, 1);
-
- /*Programing media pipeline*/
- gen9_vme_hevc_pipeline_programing(ctx, encode_state, encoder_context);
-
- return vaStatus;
-}
-
-
-static VAStatus
-gen9_vme_hevc_pipeline(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- gen9_vme_media_init(ctx, encoder_context);
- gen9_vme_hevc_prepare(ctx, encode_state, encoder_context);
- gen9_vme_run(ctx, encode_state, encoder_context);
- gen9_vme_stop(ctx, encode_state, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-
-static void
-gen9_vme_context_destroy(void *context)
-{
- struct gen6_vme_context *vme_context = context;
-
- gen8_gpe_context_destroy(&vme_context->gpe_context);
-
- dri_bo_unreference(vme_context->vme_output.bo);
- vme_context->vme_output.bo = NULL;
-
- dri_bo_unreference(vme_context->vme_state.bo);
- vme_context->vme_state.bo = NULL;
-
- dri_bo_unreference(vme_context->vme_batchbuffer.bo);
- vme_context->vme_batchbuffer.bo = NULL;
-
- free(vme_context->vme_state_message);
- vme_context->vme_state_message = NULL;
-
- dri_bo_unreference(vme_context->i_qp_cost_table);
- vme_context->i_qp_cost_table = NULL;
-
- dri_bo_unreference(vme_context->p_qp_cost_table);
- vme_context->p_qp_cost_table = NULL;
-
- dri_bo_unreference(vme_context->b_qp_cost_table);
- vme_context->b_qp_cost_table = NULL;
-
- free(vme_context->qp_per_mb);
- vme_context->qp_per_mb = NULL;
-
- free(vme_context);
-}
-
-Bool gen9_vme_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_vme_context *vme_context;
- struct i965_kernel *vme_kernel_list = NULL;
- int i965_kernel_num;
-
- if (encoder_context->low_power_mode || encoder_context->codec == CODEC_JPEG) {
- encoder_context->vme_context = NULL;
- encoder_context->vme_pipeline = NULL;
- encoder_context->vme_context_destroy = NULL;
-
- return True;
- } else if (encoder_context->codec == CODEC_VP9) {
- return gen9_vp9_vme_context_init(ctx, encoder_context);
- }
-
- vme_context = calloc(1, sizeof(struct gen6_vme_context));
-
- switch (encoder_context->codec) {
- case CODEC_H264:
- case CODEC_H264_MVC:
- vme_kernel_list = gen9_vme_kernels;
- encoder_context->vme_pipeline = gen9_vme_pipeline;
- i965_kernel_num = sizeof(gen9_vme_kernels) / sizeof(struct i965_kernel);
- break;
-
- case CODEC_MPEG2:
- vme_kernel_list = gen9_vme_mpeg2_kernels;
- encoder_context->vme_pipeline = gen9_vme_mpeg2_pipeline;
- i965_kernel_num = sizeof(gen9_vme_mpeg2_kernels) / sizeof(struct i965_kernel);
- break;
-
- case CODEC_VP8:
- vme_kernel_list = gen9_vme_vp8_kernels;
- encoder_context->vme_pipeline = gen9_vme_vp8_pipeline;
- i965_kernel_num = sizeof(gen9_vme_vp8_kernels) / sizeof(struct i965_kernel);
- break;
-
- case CODEC_HEVC:
- vme_kernel_list = gen9_vme_hevc_kernels;
- encoder_context->vme_pipeline = gen9_vme_hevc_pipeline;
- i965_kernel_num = sizeof(gen9_vme_hevc_kernels) / sizeof(struct i965_kernel);
- break;
-
- default:
- /* never get here */
- assert(0);
-
- break;
- }
-
- assert(vme_context);
- vme_context->vme_kernel_sum = i965_kernel_num;
- vme_context->gpe_context.surface_state_binding_table.length = (SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_MEDIA_SURFACES_GEN6;
-
- vme_context->gpe_context.idrt.entry_size = ALIGN(sizeof(struct gen8_interface_descriptor_data), 64);
- vme_context->gpe_context.idrt.max_entries = MAX_INTERFACE_DESC_GEN6;
- vme_context->gpe_context.curbe.length = CURBE_TOTAL_DATA_LENGTH;
- vme_context->gpe_context.sampler.entry_size = 0;
- vme_context->gpe_context.sampler.max_entries = 0;
-
- if (i965->intel.eu_total > 0) {
- vme_context->gpe_context.vfe_state.max_num_threads = 6 *
- i965->intel.eu_total;
- } else
- vme_context->gpe_context.vfe_state.max_num_threads = 60 - 1;
-
- vme_context->gpe_context.vfe_state.num_urb_entries = 64;
- vme_context->gpe_context.vfe_state.gpgpu_mode = 0;
- vme_context->gpe_context.vfe_state.urb_entry_size = 16;
- vme_context->gpe_context.vfe_state.curbe_allocation_size = CURBE_ALLOCATION_SIZE - 1;
-
- gen7_vme_scoreboard_init(ctx, vme_context);
-
- gen8_gpe_load_kernels(ctx,
- &vme_context->gpe_context,
- vme_kernel_list,
- i965_kernel_num);
- vme_context->vme_surface2_setup = gen8_gpe_surface2_setup;
- vme_context->vme_media_rw_surface_setup = gen8_gpe_media_rw_surface_setup;
- vme_context->vme_buffer_suface_setup = gen8_gpe_buffer_suface_setup;
- vme_context->vme_media_chroma_surface_setup = gen8_gpe_media_chroma_surface_setup;
-
- encoder_context->vme_context = vme_context;
- encoder_context->vme_context_destroy = gen9_vme_context_destroy;
-
- vme_context->vme_state_message = malloc(VME_MSG_LENGTH * sizeof(int));
-
- return True;
-}
diff --git a/src/gen9_vp9_const_def.c b/src/gen9_vp9_const_def.c
deleted file mode 100644
index 8268814..0000000
--- a/src/gen9_vp9_const_def.c
+++ /dev/null
@@ -1,1716 +0,0 @@
-/*
- * * Copyright (c) 2016, Intel Corporation
- *
- * All rights reserved.
- * Redistribution. Redistribution and use in binary form, without modification, are
- * permitted provided that the following conditions are met:
- * Redistributions must reproduce the above copyright notice and the following
- * disclaimer in the documentation and/or other materials provided with the
- * distribution.
- * Neither the name of Intel Corporation nor the names of its suppliers may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- * No reverse engineering, decompilation, or disassembly of this software is permitted.
- * Limited patent license. Intel Corporation grants a world-wide, royalty-free,
- * nonexclusive license under patents it now or hereafter owns or controls to make, have made,
- * use, import, offer to sell and sell (.Utilize.) this software, but solely to the extent that any
- * such patent is necessary to Utilize the software alone. The patent license shall not apply
- * to any combinations which include this software. No hardware per se is licensed here under.
-
- * DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
- * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdint.h>
-
-const unsigned int vp9_fullspiral_ime_search_path_delta[14] = {
- 0x0101F00F, 0x0F0F1010, 0xF0F0F00F, 0x01010101, 0x10101010, 0x0F0F0F0F, 0xF0F0F00F, 0x0101F0F0, 0x01010101, 0x10101010, 0x0F0F1010, 0x0F0F0F0F, 0xF0F0F00F, 0xF0F0F0F0
-};
-
-const unsigned int vp9_diamond_ime_search_path_delta[14] = {
- 0x120FF10F, 0x1E22E20D, 0x20E2FF10, 0x2EDD06FC, 0x11D33FF1, 0xEB1FF33D, 0x4EF1F1F1, 0xF1F21211, 0x0DFFFFE0, 0x11201F1F, 0x1105F1CF, 0x00000000, 0x00000000, 0x00000000
-};
-
-const unsigned int vp9_brc_const_data_i_g9[4448] = {
- 0x0032000A, 0x00960064, 0x67614B28, 0xFCFAA07D, 0x040200FE, 0x03010106, 0x05280102, 0x04010305,
- 0x78503C1E, 0x04FFC88C, 0x78503C1E, 0x28FFC88C, 0x02B47850, 0x120E0A06, 0x0A060402, 0x0200000E,
- 0x00000804, 0xFE040200, 0x02000000, 0x00FEFCFA, 0xFCF8F600, 0xF4F200FE, 0xEEFEFCF8, 0xFEFCF6F2,
- 0x100A0402, 0x08040214, 0x0200100C, 0x000C0804, 0x04020000, 0x000000FE, 0xFEFEFC02, 0xFCFA0000,
- 0xF600FEFE, 0x00FEFCFA, 0xFCF8F4F2, 0x000000FE, 0x0C080000, 0x00001410, 0x06000000, 0xFE120E0A,
- 0x00000000, 0x0E0C0806, 0x0000FEFC, 0x06040200, 0xFEFCFA0A, 0x02000000, 0xFCF80A06, 0x000000FE,
- 0xF60A0602, 0x00FEFCFA, 0x0A060200, 0xFEFCF8F4, 0x06020000, 0xFCF8F40A, 0x020000FE, 0x00000A06,
- 0x06000000, 0x00120E0A, 0x00000000, 0x100C0A06, 0x000000FE, 0x0E0A0600, 0x00FEFC10, 0x08040000,
- 0xFCFA0C0A, 0x000000FE, 0xF80A0802, 0x0000FEFC, 0x0A080200, 0xFEFEFCF8, 0x08000000, 0xFCFAF80A,
- 0x000000FE, 0xF8F60A02, 0x0000FEFC, 0x00080200, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x02061200, 0x00000036, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x28190702, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010002,
- 0x050D2501, 0x0000006D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x38290E03, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020004,
- 0x050D2502, 0x0000006D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x38290E03, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020004,
- 0x050D2503, 0x0000006D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x38290E03, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020004,
- 0x06102E04, 0x00000088, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x3A2B1904, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020005,
- 0x06102E05, 0x00000088, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x3A2B1904, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020005,
- 0x07133706, 0x000000A3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x3C2E1B05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030006,
- 0x07133707, 0x000000A3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x3C2E1B05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030006,
- 0x07133708, 0x000000A3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x3C2E1B05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030006,
- 0x08164009, 0x000000BE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x3E381D05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030007,
- 0x0816400A, 0x000000BE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x3E381D05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030007,
- 0x0A1A4A0B, 0x000000DA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x48391E06, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040008,
- 0x0A1A4A0C, 0x000000DA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x48391E06, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040008,
- 0x0B1D530D, 0x000000F5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x493A2807, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040009,
- 0x0B1D530E, 0x000000F5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x493A2807, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040009,
- 0x0B1D530F, 0x000000F5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x493A2807, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040009,
- 0x0C205C10, 0x00000110, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x4A3B2908, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000A,
- 0x0C205C11, 0x00000110, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x4A3B2908, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000A,
- 0x0D236512, 0x0000012B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x4B3C2A09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000B,
- 0x0D236513, 0x0000012B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x4B3C2A09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000B,
- 0x0E266E14, 0x00000146, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x4C3E2B09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000C,
- 0x0E266E15, 0x00000146, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x4C3E2B09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000C,
- 0x102A7816, 0x00000162, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x4D3F2C0A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000D,
- 0x102A7817, 0x00000162, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x4D3F2C0A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000D,
- 0x102A7818, 0x00000162, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x4D3F2C0A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000D,
- 0x112D8119, 0x0000017D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x4E482C0B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000E,
- 0x112D811A, 0x0000017D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x4E482C0B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000E,
- 0x12308A1B, 0x00000198, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x4F482D0C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000F,
- 0x12308A1C, 0x00000198, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x4F482D0C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000F,
- 0x1333931D, 0x000001B3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x58492E0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080010,
- 0x1333931E, 0x000001B3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x58492E0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080010,
- 0x1333931F, 0x000001B3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x58492E0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080010,
- 0x14369C20, 0x000001CE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x594A2F0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080011,
- 0x14369C21, 0x000001CE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x594A2F0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080011,
- 0x163AA622, 0x000001EA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x594A380E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090012,
- 0x163AA623, 0x000001EA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x594A380E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090012,
- 0x173DAF24, 0x00000205, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5A4B380F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090013,
- 0x173DAF25, 0x00000205, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5A4B380F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090013,
- 0x173DAF26, 0x00000205, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5A4B380F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090013,
- 0x1840B827, 0x00000220, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5A4B3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0014,
- 0x1840B828, 0x00000220, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5A4B3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0014,
- 0x1943C129, 0x0000023B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5B4C3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0015,
- 0x1943C12A, 0x0000023B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5B4C3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0015,
- 0x1943C12B, 0x0000023B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5B4C3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0015,
- 0x1A46CA2C, 0x00000256, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5B4C3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0016,
- 0x1A46CA2D, 0x00000256, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5B4C3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0016,
- 0x1B49D32E, 0x00000271, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5C4D3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0017,
- 0x1B49D32F, 0x00000271, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5C4D3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0017,
- 0x1D4DDD30, 0x0000028D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5C4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0018,
- 0x1D4DDD31, 0x0000028D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5C4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0018,
- 0x1D4DDD32, 0x0000028D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5C4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0018,
- 0x1E50E633, 0x000002A8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5D4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0019,
- 0x1E50E634, 0x000002A8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5D4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0019,
- 0x1F53EF35, 0x000002C3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5D4F3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001A,
- 0x1F53EF36, 0x000002C3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5D4F3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001A,
- 0x1F53EF37, 0x000002C3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5D4F3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001A,
- 0x2056F838, 0x000002DE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5E4F3C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001B,
- 0x2056F839, 0x000002DE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5E4F3C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001B,
- 0x2159FF3A, 0x000002F9, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5E583C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001C,
- 0x2159FF3B, 0x000002F9, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5E583C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001C,
- 0x2159FF3C, 0x000002F9, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5E583C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001C,
- 0x235DFF3D, 0x00000315, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001D,
- 0x235DFF3E, 0x00000315, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001D,
- 0x2460FF3F, 0x00000330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001E,
- 0x2460FF40, 0x00000330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001E,
- 0x2563FF41, 0x0000034B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x68593E1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001F,
- 0x2563FF42, 0x0000034B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x68593E1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001F,
- 0x2563FF43, 0x0000034B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x68593E1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001F,
- 0x2666FF44, 0x00000366, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x68593E1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100020,
- 0x2666FF45, 0x00000366, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x68593E1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100020,
- 0x2769FF46, 0x00000381, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x68593F1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100021,
- 0x2769FF47, 0x00000381, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x68593F1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100021,
- 0x2769FF48, 0x00000381, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x68593F1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100021,
- 0x296DFF49, 0x0000039D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110022,
- 0x296DFF4A, 0x0000039D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110022,
- 0x2A70FF4B, 0x000003B8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110023,
- 0x2A70FF4C, 0x000003B8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110023,
- 0x2A70FF4D, 0x000003B8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110023,
- 0x2B73FF4E, 0x000003D3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x695A481E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120024,
- 0x2B73FF4F, 0x000003D3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x695A481E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120024,
- 0x2C76FF50, 0x000003EE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x695A481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120025,
- 0x2C76FF51, 0x000003EE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x695A481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120025,
- 0x2C76FF52, 0x000003EE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x695A481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120025,
- 0x2D79FF53, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6A5B481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130026,
- 0x2D79FF54, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6A5B481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130026,
- 0x2F7DFF55, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6A5B491F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130027,
- 0x2F7DFF56, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6A5B491F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130027,
- 0x2F7DFF57, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6A5B491F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130027,
- 0x3080FF58, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6A5B4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140028,
- 0x3080FF59, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6A5B4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140028,
- 0x3080FF5A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6A5B4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140028,
- 0x3183FF5B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140029,
- 0x3183FF5C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140029,
- 0x3286FF5D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002A,
- 0x3286FF5E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002A,
- 0x3286FF5F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002A,
- 0x3389FF60, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6B5C4929, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002B,
- 0x358DFF61, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6B5C4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0016002C,
- 0x3690FF62, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0016002D,
- 0x3793FF63, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0017002E,
- 0x3793FF64, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0017002E,
- 0x3896FF65, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0017002F,
- 0x3999FF66, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6C5D4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00180030,
- 0x3B9DFF67, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00180031,
- 0x3B9DFF68, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00180031,
- 0x3CA0FF69, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00190032,
- 0x3DA3FF6A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00190033,
- 0x3EA6FF6B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6D5F4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001A0034,
- 0x3EA6FF6C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6D5F4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001A0034,
- 0x3FA9FF6D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6E5F4C2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001A0035,
- 0x41ADFF6E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6E5F4C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001B0036,
- 0x42B0FF6F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6E5F4C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001B0037,
- 0x42B0FF70, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6E5F4C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001B0037,
- 0x43B3FF71, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6E684C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001C0038,
- 0x44B6FF72, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6F684D2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001C0039,
- 0x45B9FF73, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6F684D2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001D003A,
- 0x45B9FF74, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6F684D2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001D003A,
- 0x47BDFF75, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6F684D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001D003B,
- 0x48C0FF76, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6F684D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001E003C,
- 0x48C0FF77, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x6F684D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001E003C,
- 0x49C3FF78, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x78694D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001E003D,
- 0x4AC6FF79, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x78694E2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001F003E,
- 0x4BC9FF7A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x78694E2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001F003F,
- 0x4DCDFF7B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x78694E2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200040,
- 0x4ED0FF7C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x78694E2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200041,
- 0x50D6FF7D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x79694F2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00210043,
- 0x51D9FF7E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x796A4F2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00220044,
- 0x52DCFF7F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x796A4F2E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00220045,
- 0x54E0FF80, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x796A4F2E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00230046,
- 0x55E3FF81, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x796A582E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00230047,
- 0x56E6FF82, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x796A582E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00240048,
- 0x57E9FF83, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x796A582E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00240049,
- 0x58ECFF84, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x796A582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0025004A,
- 0x5AF0FF85, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7A6B582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0025004B,
- 0x5BF3FF86, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7A6B582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0026004C,
- 0x5CF6FF87, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7A6B582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0026004D,
- 0x5DF9FF88, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7A6B592F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0027004E,
- 0x5EFCFF89, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7A6B5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0027004F,
- 0x60FFFF8A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7A6B5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280050,
- 0x62FFFF8B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00290052,
- 0x63FFFF8C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00290053,
- 0x64FFFF8D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002A0054,
- 0x67FFFF8E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002B0056,
- 0x68FFFF8F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7B6C5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002B0057,
- 0x69FFFF90, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7B6C5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002C0058,
- 0x6CFFFF91, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002D005A,
- 0x6DFFFF92, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002D005B,
- 0x6EFFFF93, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002E005C,
- 0x6FFFFF94, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002E005D,
- 0x72FFFF95, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002F005F,
- 0x73FFFF96, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7C6D5B39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00300060,
- 0x74FFFF97, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7C6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00300061,
- 0x76FFFF98, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7D6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00310063,
- 0x79FFFF99, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7D6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00320065,
- 0x7AFFFF9A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7D6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00330066,
- 0x7CFFFF9B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7D6F5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340068,
- 0x7EFFFF9C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7D6F5C3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340069,
- 0x80FFFF9D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7E6F5C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0035006B,
- 0x81FFFF9E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7E6F5C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0036006C,
- 0x83FFFF9F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7E6F5C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0037006E,
- 0x85FFFFA0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7E785C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0037006F,
- 0x87FFFFA1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7E785C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380071,
- 0x89FFFFA2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7F785D3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00390073,
- 0x8BFFFFA3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7F785D3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003A0074,
- 0x8DFFFFA4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7F785D3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003B0076,
- 0x8FFFFFA5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x7F785D3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003C0078,
- 0x91FFFFA6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x88785D3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003C0079,
- 0x93FFFFA7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x88795E3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003D007B,
- 0x95FFFFA8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x88795E3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003E007D,
- 0x97FFFFA9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x88795E3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003F007E,
- 0x99FFFFAA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x88795E3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00400080,
- 0x9BFFFFAB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x88795E3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00410082,
- 0x9EFFFFAC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x88795F3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00420084,
- 0xA0FFFFAD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x89795F3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00430086,
- 0xA3FFFFAE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x897A5F3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440088,
- 0xA5FFFFAF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x897A5F3E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0045008A,
- 0xA7FFFFB0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x897A5F3E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0046008C,
- 0xAAFFFFB1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x897A683E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0047008E,
- 0xACFFFFB2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x897A683E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00480090,
- 0xAFFFFFB3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x897A683E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00490092,
- 0xB1FFFFB4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x897A683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004A0094,
- 0xB3FFFFB5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8A7B683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004B0096,
- 0xB6FFFFB6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8A7B683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004C0098,
- 0xB8FFFFB7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8A7B683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004D009A,
- 0xBAFFFFB8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8A7B693F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004E009C,
- 0xBDFFFFB9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8A7B693F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004F009E,
- 0xC0FFFFBA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8A7B6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005000A1,
- 0xC3FFFFBB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8A7B6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005100A3,
- 0xC5FFFFBC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005200A5,
- 0xC8FFFFBD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005300A7,
- 0xCBFFFFBE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005500AA,
- 0xCEFFFFBF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005600AC,
- 0xD0FFFFC0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8B7C6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005700AE,
- 0xD4FFFFC1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8B7C6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005800B1,
- 0xD6FFFFC2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8B7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005900B3,
- 0xDAFFFFC3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005B00B6,
- 0xDCFFFFC4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005C00B8,
- 0xE0FFFFC5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005D00BB,
- 0xE2FFFFC6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005E00BD,
- 0xE6FFFFC7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8C7D6B49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006000C0,
- 0xE8FFFFC8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8C7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006100C2,
- 0xEBFFFFC9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006200C5,
- 0xEFFFFFCA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006400C8,
- 0xF3FFFFCB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006500CB,
- 0xF5FFFFCC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006600CD,
- 0xF9FFFFCD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8D7F6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006800D0,
- 0xFCFFFFCE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8E7F6C4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006900D3,
- 0xFFFFFFCF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8E7F6C4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006B00D6,
- 0xFFFFFFD0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8E7F6C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006C00D9,
- 0xFFFFFFD1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8E7F6C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006E00DC,
- 0xFFFFFFD2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8E886C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006F00DF,
- 0xFFFFFFD3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F886C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007100E3,
- 0xFFFFFFD4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F886D4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007300E6,
- 0xFFFFFFD5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F886D4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007400E9,
- 0xFFFFFFD6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F886D4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007600ED,
- 0xFFFFFFD7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F886D4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007800F1,
- 0xFFFFFFD8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F896D4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007A00F4,
- 0xFFFFFFD9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F896E4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007C00F8,
- 0xFFFFFFDA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F896E4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007E00FC,
- 0xFFFFFFDB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F896E4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00800100,
- 0xFFFFFFDC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F896E4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00820105,
- 0xFFFFFFDD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F896F4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00840109,
- 0xFFFFFFDE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F896F4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0086010D,
- 0xFFFFFFDF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8A6F4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00890112,
- 0xFFFFFFE0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8A6F4E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x008B0117,
- 0xFFFFFFE1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8A784E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x008E011C,
- 0xFFFFFFE2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8A784E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00900121,
- 0xFFFFFFE3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8A784E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00930127,
- 0xFFFFFFE4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8B784F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0096012D,
- 0xFFFFFFE5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8B784F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00990133,
- 0xFFFFFFE6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8B794F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x009C0139,
- 0xFFFFFFE7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8B7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00A00140,
- 0xFFFFFFE8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8B7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00A30147,
- 0xFFFFFFE9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8C7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00A7014E,
- 0xFFFFFFEA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8C7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00AB0156,
- 0xFFFFFFEB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8C7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00AF015E,
- 0xFFFFFFEC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8D7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00B30166,
- 0xFFFFFFED, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8D7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00B80170,
- 0xFFFFFFEE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8D7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00BC0179,
- 0xFFFFFFEF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8E7B59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C10183,
- 0xFFFFFFF0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8E7B5A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C7018E,
- 0xFFFFFFF1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8E7B5A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00CC0199,
- 0xFFFFFFF2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8F7C5A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00D201A5,
- 0xFFFFFFF3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8F7C5B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00D901B2,
- 0xFFFFFFF4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8F7C5B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00E001C0,
- 0xFFFFFFF5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8F7D5B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00E701CE,
- 0xFFFFFFF6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8F7D5C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00EE01DD,
- 0xFFFFFFF7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8F7E5C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00F701EE,
- 0xFFFFFFF8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8F7E5C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00FF01FF,
- 0xFFFFFFF9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8F7F5D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01080211,
- 0xFFFFFFFA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8F7F5D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01120225,
- 0xFFFFFFFB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8F885E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x011C0239,
- 0xFFFFFFFC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8F885E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01280250,
- 0xFFFFFFFD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8F885F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01340268,
- 0xFFFFFFFE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8F8968, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01400281,
- 0xFFFFFFFF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x8F8F8968, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x014E029C,
- 0x00080004, 0x00090008, 0x000B000A, 0x000C000C, 0x000E000D, 0x0010000F, 0x00120011, 0x00130013,
- 0x00150014, 0x00170016, 0x00190018, 0x001A001A, 0x001C001B, 0x001E001D, 0x0020001F, 0x00210020,
- 0x00230022, 0x00250024, 0x00260026, 0x00280027, 0x002A0029, 0x002B002B, 0x002D002C, 0x002F002E,
- 0x00300030, 0x00320031, 0x00340033, 0x00350035, 0x00370036, 0x00390038, 0x003A0039, 0x003C003B,
- 0x003E003D, 0x003F003E, 0x00410040, 0x00420042, 0x00440043, 0x00460045, 0x00470046, 0x00490048,
- 0x004A004A, 0x004C004B, 0x004E004D, 0x004F004E, 0x00510050, 0x00520051, 0x00540053, 0x00550055,
- 0x00580057, 0x005C005A, 0x005F005D, 0x00620060, 0x00650063, 0x00680066, 0x006B0069, 0x006E006C,
- 0x0071006F, 0x00740072, 0x00760075, 0x00790078, 0x007D007B, 0x0081007F, 0x00860083, 0x008A0088,
- 0x008E008C, 0x00920090, 0x00960094, 0x009A0098, 0x009E009C, 0x00A400A1, 0x00A900A6, 0x00AE00AC,
- 0x00B400B1, 0x00B900B6, 0x00BE00BB, 0x00C300C0, 0x00CA00C7, 0x00D000CD, 0x00D600D3, 0x00DC00D9,
- 0x00E200DF, 0x00E900E6, 0x00F000ED, 0x00F700F3, 0x00FD00FA, 0x01050101, 0x010D0109, 0x01140110,
- 0x011C0118, 0x01240120, 0x012C0128, 0x01350130, 0x013D0139, 0x01460142, 0x014F014A, 0x01580154,
- 0x0162015D, 0x016C0167, 0x01760171, 0x0180017B, 0x018B0185, 0x01960190, 0x01A1019B, 0x01AD01A7,
- 0x01B901B3, 0x01C601BF, 0x01D301CD, 0x01E201DB, 0x01F101E9, 0x020101F9, 0x0212020A, 0x0225021B,
- 0x0239022F, 0x024E0243, 0x0266025A, 0x02800272, 0x029C028E, 0x02BC02AC, 0x02E002CD, 0x030702F3,
- 0x0333031C, 0x0365034B, 0x039D0380, 0x03DC03BB, 0x042203FE, 0x0473044A, 0x04D004A0, 0x05380502,
- 0x00080004, 0x000A0009, 0x000C000B, 0x000E000D, 0x0010000F, 0x00120011, 0x00140013, 0x00160015,
- 0x00180017, 0x001A0019, 0x001C001B, 0x001E001D, 0x0020001F, 0x00220021, 0x00240023, 0x00260025,
- 0x00280027, 0x002A0029, 0x002C002B, 0x002E002D, 0x0030002F, 0x00320031, 0x00340033, 0x00360035,
- 0x00380037, 0x003A0039, 0x003C003B, 0x003E003D, 0x0040003F, 0x00420041, 0x00440043, 0x00460045,
- 0x00480047, 0x004A0049, 0x004C004B, 0x004E004D, 0x0050004F, 0x00520051, 0x00540053, 0x00560055,
- 0x00580057, 0x005A0059, 0x005C005B, 0x005E005D, 0x0060005F, 0x00620061, 0x00640063, 0x00660065,
- 0x006A0068, 0x006E006C, 0x00720070, 0x00760074, 0x007A0078, 0x007E007C, 0x00820080, 0x00860084,
- 0x008A0088, 0x008E008C, 0x00920090, 0x00960094, 0x009B0098, 0x00A1009E, 0x00A700A4, 0x00AD00AA,
- 0x00B300B0, 0x00B900B6, 0x00BF00BC, 0x00C500C2, 0x00CB00C8, 0x00D300CF, 0x00DB00D7, 0x00E300DF,
- 0x00EB00E7, 0x00F300EF, 0x00FB00F7, 0x010400FF, 0x010E0109, 0x01180113, 0x0122011D, 0x012C0127,
- 0x01370131, 0x0143013D, 0x014F0149, 0x015B0155, 0x01670161, 0x0175016E, 0x0183017C, 0x0191018A,
- 0x01A00198, 0x01B001A8, 0x01C001B8, 0x01D101C8, 0x01E301DA, 0x01F501EC, 0x020801FE, 0x021C0212,
- 0x02300226, 0x0246023B, 0x025C0251, 0x02730267, 0x028B027F, 0x02A40297, 0x02BE02B1, 0x02D902CB,
- 0x02F502E7, 0x03120303, 0x03300321, 0x03500340, 0x03710360, 0x03930382, 0x03B703A5, 0x03DC03C9,
- 0x040203EF, 0x042A0416, 0x0454043F, 0x047F0469, 0x04AC0495, 0x04DB04C3, 0x050C04F3, 0x053F0525,
- 0x05740559, 0x05AB058F, 0x05E405C7, 0x061F0601, 0x065C063D, 0x069C067C, 0x06DF06BD, 0x07240701
-};
-
-const unsigned int vp9_brc_const_data_p_g9[4448] = {
- 0x0032000A, 0x00960064, 0x67614B28, 0xFCFAA07D, 0x040200FE, 0x03010106, 0x05280102, 0x04010305,
- 0x78503C1E, 0x04FFC88C, 0x78503C1E, 0x28FFC88C, 0x02B47850, 0x120E0A06, 0x0A060402, 0x0200000E,
- 0x00000804, 0xFE040200, 0x02000000, 0x00FEFCFA, 0xFCF8F600, 0xF4F200FE, 0xEEFEFCF8, 0xFEFCF6F2,
- 0x100A0402, 0x08040214, 0x0200100C, 0x000C0804, 0x04020000, 0x000000FE, 0xFEFEFC02, 0xFCFA0000,
- 0xF600FEFE, 0x00FEFCFA, 0xFCF8F4F2, 0x000000FE, 0x0C080000, 0x00001410, 0x06000000, 0xFE120E0A,
- 0x00000000, 0x0E0C0806, 0x0000FEFC, 0x06040200, 0xFEFCFA0A, 0x02000000, 0xFCF80A06, 0x000000FE,
- 0xF60A0602, 0x00FEFCFA, 0x0A060200, 0xFEFCF8F4, 0x06020000, 0xFCF8F40A, 0x020000FE, 0x00000A06,
- 0x06000000, 0x00120E0A, 0x00000000, 0x100C0A06, 0x000000FE, 0x0E0A0600, 0x00FEFC10, 0x08040000,
- 0xFCFA0C0A, 0x000000FE, 0xF80A0802, 0x0000FEFC, 0x0A080200, 0xFEFEFCF8, 0x08000000, 0xFCFAF80A,
- 0x000000FE, 0xF8F60A02, 0x0000FEFC, 0x00080200, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x040C2400, 0x00000000, 0x00010001, 0x00010000, 0x00010000, 0x00020002, 0x00030002, 0x00040003,
- 0x02020100, 0x04030302, 0x39070402, 0x6F6F0103, 0x00010001, 0x00000000, 0x00000004, 0x00010004,
- 0x08184801, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007,
- 0x04030200, 0x08070605, 0x490D0903, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x00020008,
- 0x08184802, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007,
- 0x04030200, 0x08070605, 0x490D0903, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x00020008,
- 0x091B5103, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007,
- 0x04030200, 0x08070605, 0x4A0F0A04, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x00020009,
- 0x0A1E5A04, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007,
- 0x04030200, 0x08070605, 0x4B180B04, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x0002000A,
- 0x0B216305, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007,
- 0x04030200, 0x08070605, 0x4D190C04, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x0002000B,
- 0x0C246C06, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A,
- 0x06050400, 0x0C0A0807, 0x4E1A0D05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000C,
- 0x0C246C07, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A,
- 0x06050400, 0x0C0A0807, 0x4E1A0D05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000C,
- 0x0D277508, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A,
- 0x06050400, 0x0C0A0807, 0x4F1B0E05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000D,
- 0x0E2A7E09, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A,
- 0x06050400, 0x0C0A0807, 0x581C0F05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000E,
- 0x0F2D870A, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A,
- 0x06050400, 0x0C0A0807, 0x591D1806, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000F,
- 0x1030900B, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D,
- 0x08060500, 0x180D0B0A, 0x591D1906, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040010,
- 0x1133990C, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D,
- 0x08060500, 0x180D0B0A, 0x5A1E1A07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040011,
- 0x1236A20D, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D,
- 0x08060500, 0x180D0B0A, 0x5A1F1A07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040012,
- 0x1339AB0E, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D,
- 0x08060500, 0x180D0B0A, 0x5B281B07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040013,
- 0x1339AB0F, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D,
- 0x08060500, 0x180D0B0A, 0x5B281B07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040013,
- 0x143CB410, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011,
- 0x0A080600, 0x1A190E0C, 0x5B281B08, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050014,
- 0x153FBD11, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011,
- 0x0A080600, 0x1A190E0C, 0x5C291C08, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050015,
- 0x1642C612, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011,
- 0x0A080600, 0x1A190E0C, 0x5D291C09, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050016,
- 0x1745CF13, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011,
- 0x0A080600, 0x1A190E0C, 0x5D2A1D09, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050017,
- 0x1848D814, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014,
- 0x0C090700, 0x1C1A190F, 0x5E2A1D09, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x00060018,
- 0x194BE115, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014,
- 0x0C090700, 0x1C1A190F, 0x5E2A1E0A, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x00060019,
- 0x1A4EEA16, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014,
- 0x0C090700, 0x1C1A190F, 0x5F2B1E0A, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x0006001A,
- 0x1A4EEA17, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014,
- 0x0C090700, 0x1C1A190F, 0x5F2B1E0A, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x0006001A,
- 0x1B51F318, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014,
- 0x0C090700, 0x1C1A190F, 0x5F2B1F0B, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x0006001B,
- 0x1C54FC19, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017,
- 0x0E0B0800, 0x1E1C1A19, 0x682C280B, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001C,
- 0x1D57FF1A, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017,
- 0x0E0B0800, 0x1E1C1A19, 0x682C280B, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001D,
- 0x1E5AFF1B, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017,
- 0x0E0B0800, 0x1E1C1A19, 0x692C280C, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001E,
- 0x1F5DFF1C, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017,
- 0x0E0B0800, 0x1E1C1A19, 0x692D290C, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001F,
- 0x2060FF1D, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B,
- 0x180D0900, 0x281E1C1A, 0x692D290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080020,
- 0x2060FF1E, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B,
- 0x180D0900, 0x281E1C1A, 0x692D290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080020,
- 0x2163FF1F, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B,
- 0x180D0900, 0x281E1C1A, 0x692E290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080021,
- 0x2266FF20, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B,
- 0x180D0900, 0x281E1C1A, 0x6A2E290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080022,
- 0x2369FF21, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B,
- 0x180D0900, 0x281E1C1A, 0x6A2E2A0E, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080023,
- 0x246CFF22, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E,
- 0x190E0B00, 0x291F1D1B, 0x6A2F2A0E, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090024,
- 0x256FFF23, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E,
- 0x190E0B00, 0x291F1D1B, 0x6B2F2A0E, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090025,
- 0x2672FF24, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E,
- 0x190E0B00, 0x291F1D1B, 0x6B382B0F, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090026,
- 0x2672FF25, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E,
- 0x190E0B00, 0x291F1D1B, 0x6B382B0F, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090026,
- 0x2775FF26, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E,
- 0x190E0B00, 0x291F1D1B, 0x6B382B0F, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090027,
- 0x2878FF27, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021,
- 0x1A180C00, 0x2A281E1C, 0x6B382B18, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A0028,
- 0x297BFF28, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021,
- 0x1A180C00, 0x2A281E1C, 0x6C382B18, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A0029,
- 0x2A7EFF29, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021,
- 0x1A180C00, 0x2A281E1C, 0x6C392C18, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A002A,
- 0x2B81FF2A, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021,
- 0x1A180C00, 0x2A281E1C, 0x6C392C19, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A002B,
- 0x2B81FF2B, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021,
- 0x1A180C00, 0x2A281E1C, 0x6C392C19, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A002B,
- 0x2C84FF2C, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025,
- 0x1B190D00, 0x2B29281E, 0x6D392C19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002C,
- 0x2D87FF2D, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025,
- 0x1B190D00, 0x2B29281E, 0x6D392C19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002D,
- 0x2E8AFF2E, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025,
- 0x1B190D00, 0x2B29281E, 0x6D392D19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002E,
- 0x2F8DFF2F, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025,
- 0x1B190D00, 0x2B29281E, 0x6D3A2D19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002F,
- 0x3090FF30, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028,
- 0x1C1A0E00, 0x2C2A291F, 0x6E3A2D1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0030,
- 0x3090FF31, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028,
- 0x1C1A0E00, 0x2C2A291F, 0x6E3A2D1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0030,
- 0x3193FF32, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028,
- 0x1C1A0E00, 0x2C2A291F, 0x6E3A2E1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0031,
- 0x3296FF33, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028,
- 0x1C1A0E00, 0x2C2A291F, 0x6E3A2E1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0032,
- 0x3399FF34, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028,
- 0x1C1A0E00, 0x2C2A291F, 0x6F3B2E1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0033,
- 0x349CFF35, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B,
- 0x1D1A0F00, 0x2D2B2928, 0x6F3B2E1A, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0034,
- 0x359FFF36, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B,
- 0x1D1A0F00, 0x2D2B2928, 0x6F3B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0035,
- 0x359FFF37, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B,
- 0x1D1A0F00, 0x2D2B2928, 0x6F3B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0035,
- 0x36A2FF38, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B,
- 0x1D1A0F00, 0x2D2B2928, 0x6F3B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0036,
- 0x37A5FF39, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B,
- 0x1D1A0F00, 0x2D2B2928, 0x783B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0037,
- 0x38A8FF3A, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E,
- 0x1E1B1800, 0x2E2C2A29, 0x783C2F1B, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E0038,
- 0x39ABFF3B, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E,
- 0x1E1B1800, 0x2E2C2A29, 0x783C381B, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E0039,
- 0x39ABFF3C, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E,
- 0x1E1B1800, 0x2E2C2A29, 0x783C381B, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E0039,
- 0x3AAEFF3D, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E,
- 0x1E1B1800, 0x2E2C2A29, 0x783C381C, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E003A,
- 0x3BB1FF3E, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E,
- 0x1E1B1800, 0x2E2C2A29, 0x783C381C, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E003B,
- 0x3CB4FF3F, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032,
- 0x1F1C1900, 0x2F2D2B29, 0x793C381C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003C,
- 0x3DB7FF40, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032,
- 0x1F1C1900, 0x2F2D2B29, 0x793D381C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003D,
- 0x3EBAFF41, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032,
- 0x1F1C1900, 0x2F2D2B29, 0x793D391C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003E,
- 0x3EBAFF42, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032,
- 0x1F1C1900, 0x2F2D2B29, 0x793D391C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003E,
- 0x3FBDFF43, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032,
- 0x1F1C1900, 0x2F2D2B29, 0x793D391D, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003F,
- 0x40C0FF44, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035,
- 0x281D1A00, 0x382D2B2A, 0x793D391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100040,
- 0x41C3FF45, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035,
- 0x281D1A00, 0x382D2B2A, 0x793D391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100041,
- 0x42C6FF46, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035,
- 0x281D1A00, 0x382D2B2A, 0x793E391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100042,
- 0x42C6FF47, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035,
- 0x281D1A00, 0x382D2B2A, 0x793E391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100042,
- 0x43C9FF48, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035,
- 0x281D1A00, 0x382D2B2A, 0x7A3E391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100043,
- 0x44CCFF49, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038,
- 0x291E1A00, 0x382E2C2A, 0x7A3E391E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110044,
- 0x45CFFF4A, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038,
- 0x291E1A00, 0x382E2C2A, 0x7A3E391E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110045,
- 0x46D2FF4B, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038,
- 0x291E1A00, 0x382E2C2A, 0x7A3E3A1E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110046,
- 0x46D2FF4C, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038,
- 0x291E1A00, 0x382E2C2A, 0x7A3E3A1E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110046,
- 0x47D5FF4D, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038,
- 0x291E1A00, 0x382E2C2A, 0x7A3F3A1E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110047,
- 0x48D8FF4E, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C,
- 0x291E1B00, 0x392F2D2B, 0x7A3F3A1E, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x00120048,
- 0x49DBFF4F, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C,
- 0x291E1B00, 0x392F2D2B, 0x7A3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x00120049,
- 0x4ADEFF50, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C,
- 0x291E1B00, 0x392F2D2B, 0x7B3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x0012004A,
- 0x4ADEFF51, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C,
- 0x291E1B00, 0x392F2D2B, 0x7B3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x0012004A,
- 0x4BE1FF52, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C,
- 0x291E1B00, 0x392F2D2B, 0x7B3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x0012004B,
- 0x4CE4FF53, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F,
- 0x2A1F1B00, 0x39382D2C, 0x7B483A1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004C,
- 0x4DE7FF54, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F,
- 0x2A1F1B00, 0x39382D2C, 0x7B483B1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004D,
- 0x4EEAFF55, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F,
- 0x2A1F1B00, 0x39382D2C, 0x7B483B1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004E,
- 0x4EEAFF56, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F,
- 0x2A1F1B00, 0x39382D2C, 0x7B483B1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004E,
- 0x4FEDFF57, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F,
- 0x2A1F1B00, 0x39382D2C, 0x7B483B28, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004F,
- 0x50F0FF58, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042,
- 0x2A281C00, 0x3A382E2C, 0x7B483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140050,
- 0x51F3FF59, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042,
- 0x2A281C00, 0x3A382E2C, 0x7C483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140051,
- 0x51F3FF5A, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042,
- 0x2A281C00, 0x3A382E2C, 0x7C483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140051,
- 0x52F6FF5B, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042,
- 0x2A281C00, 0x3A382E2C, 0x7C483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140052,
- 0x53F9FF5C, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042,
- 0x2A281C00, 0x3A382E2C, 0x7C493B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140053,
- 0x54FCFF5D, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046,
- 0x2B281D00, 0x3A392F2D, 0x7C493C28, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150054,
- 0x55FFFF5E, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046,
- 0x2B281D00, 0x3A392F2D, 0x7C493C28, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150055,
- 0x55FFFF5F, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046,
- 0x2B281D00, 0x3A392F2D, 0x7C493C28, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150055,
- 0x57FFFF60, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046,
- 0x2B281D00, 0x3A392F2D, 0x7C493C29, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150057,
- 0x58FFFF61, 0x00000000, 0x0011001A, 0x00150009, 0x001A0000, 0x002D0022, 0x003E0035, 0x00560049,
- 0x2B291D00, 0x3B39382D, 0x7D493C29, 0x6F6F1F2F, 0x001B000C, 0x00000000, 0x00000056, 0x00160058,
- 0x5AFFFF62, 0x00000000, 0x0011001A, 0x00150009, 0x001A0000, 0x002D0022, 0x003E0035, 0x00560049,
- 0x2B291D00, 0x3B39382D, 0x7D493C29, 0x6F6F1F2F, 0x001B000C, 0x00000000, 0x00000056, 0x0016005A,
- 0x5CFFFF63, 0x00000000, 0x0012001B, 0x00160009, 0x001B0000, 0x002F0024, 0x00410038, 0x005A004C,
- 0x2C291E00, 0x3B3A382E, 0x7D493D29, 0x6F6F2838, 0x001B000D, 0x00000000, 0x0000005A, 0x0017005C,
- 0x5DFFFF64, 0x00000000, 0x0012001B, 0x00160009, 0x001B0000, 0x002F0024, 0x00410038, 0x005A004C,
- 0x2C291E00, 0x3B3A382E, 0x7D4A3D29, 0x6F6F2838, 0x001B000D, 0x00000000, 0x0000005A, 0x0017005D,
- 0x5FFFFF65, 0x00000000, 0x0012001B, 0x00160009, 0x001B0000, 0x002F0024, 0x00410038, 0x005A004C,
- 0x2C291E00, 0x3B3A382E, 0x7E4A3D29, 0x6F6F2838, 0x001B000D, 0x00000000, 0x0000005A, 0x0017005F,
- 0x60FFFF66, 0x00000000, 0x0013001C, 0x00170009, 0x001C0000, 0x00310026, 0x0044003A, 0x005E0050,
- 0x2C2A1E00, 0x3C3A392F, 0x7E4A3D2A, 0x6F6F2838, 0x001C000D, 0x00000000, 0x0000005E, 0x00180060,
- 0x62FFFF67, 0x00000000, 0x0013001C, 0x00170009, 0x001C0000, 0x00310026, 0x0044003A, 0x005E0050,
- 0x2C2A1E00, 0x3C3A392F, 0x7E4A3D2A, 0x6F6F2838, 0x001C000D, 0x00000000, 0x0000005E, 0x00180062,
- 0x63FFFF68, 0x00000000, 0x0013001C, 0x00170009, 0x001C0000, 0x00310026, 0x0044003A, 0x005E0050,
- 0x2C2A1E00, 0x3C3A392F, 0x7E4A3E2A, 0x6F6F2838, 0x001C000D, 0x00000000, 0x0000005E, 0x00180063,
- 0x65FFFF69, 0x00000000, 0x0014001D, 0x0018000A, 0x001D0000, 0x00330027, 0x0046003D, 0x00620053,
- 0x2D2A1F00, 0x3C3A392F, 0x7E4A3E2A, 0x6F6F2939, 0x001C000E, 0x00000000, 0x00000062, 0x00190065,
- 0x66FFFF6A, 0x00000000, 0x0014001D, 0x0018000A, 0x001D0000, 0x00330027, 0x0046003D, 0x00620053,
- 0x2D2A1F00, 0x3C3A392F, 0x7E4A3E2A, 0x6F6F2939, 0x001C000E, 0x00000000, 0x00000062, 0x00190066,
- 0x68FFFF6B, 0x00000000, 0x0014001E, 0x0019000A, 0x001E0000, 0x00350029, 0x0049003F, 0x00660056,
- 0x2D2A1F00, 0x3D3B3938, 0x7F4B3E2A, 0x6F6F2939, 0x001D000E, 0x00000000, 0x00000066, 0x001A0068,
- 0x69FFFF6C, 0x00000000, 0x0014001E, 0x0019000A, 0x001E0000, 0x00350029, 0x0049003F, 0x00660056,
- 0x2D2A1F00, 0x3D3B3938, 0x7F4B3E2A, 0x6F6F2939, 0x001D000E, 0x00000000, 0x00000066, 0x001A0069,
- 0x6BFFFF6D, 0x00000000, 0x0014001E, 0x0019000A, 0x001E0000, 0x00350029, 0x0049003F, 0x00660056,
- 0x2D2A1F00, 0x3D3B3938, 0x7F4B3F2B, 0x6F6F2939, 0x001D000E, 0x00000000, 0x00000066, 0x001A006B,
- 0x6CFFFF6E, 0x00000000, 0x00150020, 0x001A000B, 0x00200000, 0x0037002A, 0x004C0041, 0x0069005A,
- 0x2E2B2800, 0x3D3B3A38, 0x7F4B3F2B, 0x6F6F2939, 0x001D000F, 0x00000000, 0x00000069, 0x001B006C,
- 0x6EFFFF6F, 0x00000000, 0x00150020, 0x001A000B, 0x00200000, 0x0037002A, 0x004C0041, 0x0069005A,
- 0x2E2B2800, 0x3D3B3A38, 0x884B3F2B, 0x6F6F2939, 0x001D000F, 0x00000000, 0x00000069, 0x001B006E,
- 0x6FFFFF70, 0x00000000, 0x00150020, 0x001A000B, 0x00200000, 0x0037002A, 0x004C0041, 0x0069005A,
- 0x2E2B2800, 0x3D3B3A38, 0x884B3F2B, 0x6F6F2939, 0x001D000F, 0x00000000, 0x00000069, 0x001B006F,
- 0x71FFFF71, 0x00000000, 0x00160021, 0x001B000B, 0x00210000, 0x0039002C, 0x004F0044, 0x006D005D,
- 0x2E2B2800, 0x3E3C3A39, 0x884C482B, 0x6F6F2A3A, 0x001E000F, 0x00000000, 0x0000006D, 0x001C0071,
- 0x72FFFF72, 0x00000000, 0x00160021, 0x001B000B, 0x00210000, 0x0039002C, 0x004F0044, 0x006D005D,
- 0x2E2B2800, 0x3E3C3A39, 0x884C482B, 0x6F6F2A3A, 0x001E000F, 0x00000000, 0x0000006D, 0x001C0072,
- 0x74FFFF73, 0x00000000, 0x00170022, 0x001C000B, 0x00220000, 0x003B002D, 0x00520046, 0x00710060,
- 0x2F2B2900, 0x3E3C3A39, 0x884C482B, 0x6F6F2A3A, 0x001E0018, 0x00000000, 0x00000071, 0x001D0074,
- 0x75FFFF74, 0x00000000, 0x00170022, 0x001C000B, 0x00220000, 0x003B002D, 0x00520046, 0x00710060,
- 0x2F2B2900, 0x3E3C3A39, 0x884C482C, 0x6F6F2A3A, 0x001E0018, 0x00000000, 0x00000071, 0x001D0075,
- 0x76FFFF75, 0x00000000, 0x00170022, 0x001C000B, 0x00220000, 0x003B002D, 0x00520046, 0x00710060,
- 0x2F2B2900, 0x3E3C3A39, 0x884C482C, 0x6F6F2A3A, 0x001E0018, 0x00000000, 0x00000071, 0x001D0076,
- 0x78FFFF76, 0x00000000, 0x00170023, 0x001D000C, 0x00230000, 0x003D002F, 0x00540049, 0x00750064,
- 0x2F2C2900, 0x3F3D3B39, 0x894C482C, 0x6F6F2A3A, 0x001F0018, 0x00000000, 0x00000075, 0x001E0078,
- 0x79FFFF77, 0x00000000, 0x00170023, 0x001D000C, 0x00230000, 0x003D002F, 0x00540049, 0x00750064,
- 0x2F2C2900, 0x3F3D3B39, 0x894C482C, 0x6F6F2A3A, 0x001F0018, 0x00000000, 0x00000075, 0x001E0079,
- 0x7BFFFF78, 0x00000000, 0x00170023, 0x001D000C, 0x00230000, 0x003D002F, 0x00540049, 0x00750064,
- 0x2F2C2900, 0x3F3D3B39, 0x894D482C, 0x6F6F2A3A, 0x001F0018, 0x00000000, 0x00000075, 0x001E007B,
- 0x7DFFFF79, 0x00000000, 0x00180024, 0x001E000C, 0x00240000, 0x003F0030, 0x0057004B, 0x00790067,
- 0x382C2900, 0x3F3D3B39, 0x894D492C, 0x6F6F2B3B, 0x001F0019, 0x00000000, 0x00000079, 0x001F007D,
- 0x7FFFFF7A, 0x00000000, 0x00180024, 0x001E000C, 0x00240000, 0x003F0030, 0x0057004B, 0x00790067,
- 0x382C2900, 0x3F3D3B39, 0x894D492D, 0x6F6F2B3B, 0x001F0019, 0x00000000, 0x00000079, 0x001F007F,
- 0x81FFFF7B, 0x00000000, 0x00190026, 0x001F000D, 0x00260000, 0x00410032, 0x005A004E, 0x007D006A,
- 0x382D2A00, 0x483D3B3A, 0x894D492D, 0x6F6F2B3B, 0x00280019, 0x00000000, 0x0000007D, 0x00200081,
- 0x83FFFF7C, 0x00000000, 0x00190026, 0x001F000D, 0x00260000, 0x00410032, 0x005A004E, 0x007D006A,
- 0x382D2A00, 0x483D3B3A, 0x894D492D, 0x6F6F2B3B, 0x00280019, 0x00000000, 0x0000007D, 0x00200083,
- 0x86FFFF7D, 0x00000000, 0x001A0027, 0x0020000D, 0x00270000, 0x00430034, 0x005D0050, 0x0081006E,
- 0x382D2A00, 0x483E3C3A, 0x8A4E492D, 0x6F6F2B3B, 0x00280019, 0x00000000, 0x00000081, 0x00210086,
- 0x88FFFF7E, 0x00000000, 0x001B0028, 0x0021000D, 0x00280000, 0x00450035, 0x00600052, 0x00850071,
- 0x392D2A00, 0x483E3C3A, 0x8A4E492D, 0x6F6F2C3C, 0x0028001A, 0x00000000, 0x00000085, 0x00220088,
- 0x8AFFFF7F, 0x00000000, 0x001B0028, 0x0021000D, 0x00280000, 0x00450035, 0x00600052, 0x00850071,
- 0x392D2A00, 0x483E3C3A, 0x8A4E492E, 0x6F6F2C3C, 0x0028001A, 0x00000000, 0x00000085, 0x0022008A,
- 0x8CFFFF80, 0x00000000, 0x001B0029, 0x0022000E, 0x00290000, 0x00470037, 0x00620055, 0x00890074,
- 0x392E2A00, 0x493F3C3B, 0x8A4E4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x00000089, 0x0023008C,
- 0x8EFFFF81, 0x00000000, 0x001B0029, 0x0022000E, 0x00290000, 0x00470037, 0x00620055, 0x00890074,
- 0x392E2A00, 0x493F3C3B, 0x8A4F4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x00000089, 0x0023008E,
- 0x90FFFF82, 0x00000000, 0x001C002A, 0x0023000E, 0x002A0000, 0x00490038, 0x00650057, 0x008D0078,
- 0x392E2B00, 0x493F3D3B, 0x8A4F4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x0000008D, 0x00240090,
- 0x92FFFF83, 0x00000000, 0x001C002A, 0x0023000E, 0x002A0000, 0x00490038, 0x00650057, 0x008D0078,
- 0x392E2B00, 0x493F3D3B, 0x8A4F4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x0000008D, 0x00240092,
- 0x94FFFF84, 0x00000000, 0x001D002B, 0x0024000E, 0x002B0000, 0x004B003A, 0x0068005A, 0x0091007B,
- 0x392F2B00, 0x493F3D3B, 0x8B4F4A2F, 0x6F6F2D3D, 0x0029001A, 0x00000000, 0x00000091, 0x00250094,
- 0x96FFFF85, 0x00000000, 0x001D002B, 0x0024000E, 0x002B0000, 0x004B003A, 0x0068005A, 0x0091007B,
- 0x392F2B00, 0x493F3D3B, 0x8B4F4A2F, 0x6F6F2D3D, 0x0029001A, 0x00000000, 0x00000091, 0x00250096,
- 0x98FFFF86, 0x00000000, 0x001E002D, 0x0025000F, 0x002D0000, 0x004D003B, 0x006B005C, 0x0094007E,
- 0x3A2F2B00, 0x49483D3C, 0x8B584A2F, 0x6F6F2D3D, 0x0029001B, 0x00000000, 0x00000094, 0x00260098,
- 0x9AFFFF87, 0x00000000, 0x001E002D, 0x0025000F, 0x002D0000, 0x004D003B, 0x006B005C, 0x0094007E,
- 0x3A2F2B00, 0x49483D3C, 0x8B584B2F, 0x6F6F2D3D, 0x0029001B, 0x00000000, 0x00000094, 0x0026009A,
- 0x9CFFFF88, 0x00000000, 0x001E002E, 0x0026000F, 0x002E0000, 0x004F003D, 0x006E005E, 0x00980081,
- 0x3A2F2C00, 0x4A483E3C, 0x8B584B2F, 0x6F6F2D3D, 0x002A001B, 0x00000000, 0x00000098, 0x0027009C,
- 0x9EFFFF89, 0x00000000, 0x001E002E, 0x0026000F, 0x002E0000, 0x004F003D, 0x006E005E, 0x00980081,
- 0x3A2F2C00, 0x4A483E3C, 0x8B584B38, 0x6F6F2D3D, 0x002A001B, 0x00000000, 0x00000098, 0x0027009E,
- 0xA1FFFF8A, 0x00000000, 0x001F002F, 0x00270010, 0x002F0000, 0x0051003F, 0x00710061, 0x009C0085,
- 0x3A382C00, 0x4A483E3C, 0x8B584B38, 0x6F6F2E3E, 0x002A001B, 0x00000000, 0x0000009C, 0x002800A1,
- 0xA4FFFF8B, 0x00000000, 0x00200030, 0x00280010, 0x00300000, 0x00530040, 0x00730063, 0x00A00088,
- 0x3A382C00, 0x4A493E3C, 0x8C584B38, 0x6F6F2E3E, 0x002A001B, 0x00000000, 0x000000A0, 0x002900A4,
- 0xA6FFFF8C, 0x00000000, 0x00200030, 0x00280010, 0x00300000, 0x00530040, 0x00730063, 0x00A00088,
- 0x3A382C00, 0x4A493E3C, 0x8C594B38, 0x6F6F2E3E, 0x002A001B, 0x00000000, 0x000000A0, 0x002900A6,
- 0xA9FFFF8D, 0x00000000, 0x00210031, 0x00290010, 0x00310000, 0x00550042, 0x00760066, 0x00A4008B,
- 0x3B382C00, 0x4A493F3D, 0x8C594C38, 0x6F6F2E3E, 0x002A001C, 0x00000000, 0x000000A4, 0x002A00A9,
- 0xACFFFF8E, 0x00000000, 0x00220032, 0x002A0011, 0x00320000, 0x00570043, 0x00790068, 0x00A8008F,
- 0x3B382D00, 0x4B493F3D, 0x8C594C38, 0x6F6F2F3F, 0x002B001C, 0x00000000, 0x000000A8, 0x002B00AC,
- 0xAEFFFF8F, 0x00000000, 0x00220032, 0x002A0011, 0x00320000, 0x00570043, 0x00790068, 0x00A8008F,
- 0x3B382D00, 0x4B493F3D, 0x8C594C39, 0x6F6F2F3F, 0x002B001C, 0x00000000, 0x000000A8, 0x002B00AE,
- 0xB1FFFF90, 0x00000000, 0x00220034, 0x002B0011, 0x00340000, 0x00590045, 0x007C006B, 0x00AC0092,
- 0x3B392D00, 0x4B49483D, 0x8D594C39, 0x6F6F2F3F, 0x002B001C, 0x00000000, 0x000000AC, 0x002C00B1,
- 0xB4FFFF91, 0x00000000, 0x00230035, 0x002C0012, 0x00350000, 0x005B0046, 0x007F006D, 0x00B00095,
- 0x3B392D00, 0x4B49483E, 0x8D594C39, 0x6F6F383F, 0x002B001D, 0x00000000, 0x000000B0, 0x002D00B4,
- 0xB6FFFF92, 0x00000000, 0x00230035, 0x002C0012, 0x00350000, 0x005B0046, 0x007F006D, 0x00B00095,
- 0x3B392D00, 0x4B49483E, 0x8D594C39, 0x6F6F383F, 0x002B001D, 0x00000000, 0x000000B0, 0x002D00B6,
- 0xB9FFFF93, 0x00000000, 0x00240036, 0x002D0012, 0x00360000, 0x005D0048, 0x0081006F, 0x00B40099,
- 0x3C392E00, 0x4B4A483E, 0x8D5A4D39, 0x6F6F3848, 0x002B001D, 0x00000000, 0x000000B4, 0x002E00B9,
- 0xBBFFFF94, 0x00000000, 0x00240036, 0x002D0012, 0x00360000, 0x005D0048, 0x0081006F, 0x00B40099,
- 0x3C392E00, 0x4B4A483E, 0x8D5A4D39, 0x6F6F3848, 0x002B001D, 0x00000000, 0x000000B4, 0x002E00BB,
- 0xBEFFFF95, 0x00000000, 0x00250037, 0x002E0012, 0x00370000, 0x005F0049, 0x00840072, 0x00B8009C,
- 0x3C392E00, 0x4C4A483E, 0x8E5A4D39, 0x6F6F3848, 0x002C001D, 0x00000000, 0x000000B8, 0x002F00BE,
- 0xC0FFFF96, 0x00000000, 0x00260038, 0x002F0013, 0x00380000, 0x0062004B, 0x00870074, 0x00BC009F,
- 0x3C392E00, 0x4C4A483F, 0x8E5A4D39, 0x6F6F3848, 0x002C001D, 0x00000000, 0x000000BC, 0x003000C0,
- 0xC3FFFF97, 0x00000000, 0x00260038, 0x002F0013, 0x00380000, 0x0062004B, 0x00870074, 0x00BC009F,
- 0x3C392E00, 0x4C4A483F, 0x8E5A4D3A, 0x6F6F3848, 0x002C001D, 0x00000000, 0x000000BC, 0x003000C3,
- 0xC7FFFF98, 0x00000000, 0x00260039, 0x00300013, 0x00390000, 0x0064004D, 0x008A0077, 0x00BF00A3,
- 0x3D3A2E00, 0x4C4A493F, 0x8E5A4E3A, 0x6F6F3848, 0x002C001E, 0x00000000, 0x000000BF, 0x003100C7,
- 0xCAFFFF99, 0x00000000, 0x0027003B, 0x00310014, 0x003B0000, 0x0066004E, 0x008D0079, 0x00C300A6,
- 0x3D3A2F00, 0x4C4A493F, 0x8E5A4E3A, 0x6F6F3949, 0x002C001E, 0x00000000, 0x000000C3, 0x003200CA,
- 0xCDFFFF9A, 0x00000000, 0x0028003C, 0x00320014, 0x003C0000, 0x00680050, 0x008F007C, 0x00C700A9,
- 0x3D3A2F00, 0x4C4B4948, 0x8F5B4E3A, 0x6F6F3949, 0x002D001E, 0x00000000, 0x000000C7, 0x003300CD,
- 0xD0FFFF9B, 0x00000000, 0x0029003D, 0x00330014, 0x003D0000, 0x006A0051, 0x0092007E, 0x00CB00AD,
- 0x3D3A2F00, 0x4D4B4948, 0x8F5B4E3A, 0x6F6F3949, 0x002D001E, 0x00000000, 0x000000CB, 0x003400D0,
- 0xD3FFFF9C, 0x00000000, 0x0029003D, 0x00330014, 0x003D0000, 0x006A0051, 0x0092007E, 0x00CB00AD,
- 0x3D3A2F00, 0x4D4B4948, 0x8F5B4E3A, 0x6F6F3949, 0x002D001E, 0x00000000, 0x000000CB, 0x003400D3,
- 0xD6FFFF9D, 0x00000000, 0x0029003E, 0x00340015, 0x003E0000, 0x006C0053, 0x00950080, 0x00CF00B0,
- 0x3E3A3800, 0x4D4B4948, 0x8F5B4F3B, 0x6F6F3949, 0x002D001F, 0x00000000, 0x000000CF, 0x003500D6,
- 0xD9FFFF9E, 0x00000000, 0x002A003F, 0x00350015, 0x003F0000, 0x006E0054, 0x00980083, 0x00D300B3,
- 0x3E3B3800, 0x4D4B4A48, 0x8F5B4F3B, 0x6F6F3949, 0x002D001F, 0x00000000, 0x000000D3, 0x003600D9,
- 0xDCFFFF9F, 0x00000000, 0x002B0040, 0x00360015, 0x00400000, 0x00700056, 0x009B0085, 0x00D700B7,
- 0x3E3B3800, 0x4D4B4A48, 0x8F5B4F3B, 0x6F6F3949, 0x002E001F, 0x00000000, 0x000000D7, 0x003700DC,
- 0xDFFFFFA0, 0x00000000, 0x002B0040, 0x00360015, 0x00400000, 0x00700056, 0x009B0085, 0x00D700B7,
- 0x3E3B3800, 0x4D4B4A48, 0x8F5B4F3B, 0x6F6F3949, 0x002E001F, 0x00000000, 0x000000D7, 0x003700DF,
- 0xE2FFFFA1, 0x00000000, 0x002C0042, 0x00370016, 0x00420000, 0x00720058, 0x009E0088, 0x00DB00BA,
- 0x3E3B3800, 0x4E4C4A49, 0x8F5C4F3B, 0x6F6F3A4A, 0x002E0028, 0x00000000, 0x000000DB, 0x003800E2,
- 0xE6FFFFA2, 0x00000000, 0x002D0043, 0x00380016, 0x00430000, 0x00740059, 0x00A0008A, 0x00DF00BD,
- 0x3F3B3800, 0x4E4C4A49, 0x8F5C583B, 0x6F6F3A4A, 0x002E0028, 0x00000000, 0x000000DF, 0x003900E6,
- 0xE9FFFFA3, 0x00000000, 0x002D0044, 0x00390017, 0x00440000, 0x0076005B, 0x00A3008C, 0x00E300C1,
- 0x3F3B3900, 0x4E4C4A49, 0x8F5C583B, 0x6F6F3A4A, 0x002E0028, 0x00000000, 0x000000E3, 0x003A00E9,
- 0xEDFFFFA4, 0x00000000, 0x002E0045, 0x003A0017, 0x00450000, 0x0078005C, 0x00A6008F, 0x00E600C4,
- 0x3F3C3900, 0x4E4C4A49, 0x8F5C583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000E6, 0x003B00ED,
- 0xF0FFFFA5, 0x00000000, 0x002F0046, 0x003B0017, 0x00460000, 0x007A005E, 0x00A90091, 0x00EA00C7,
- 0x3F3C3900, 0x4F4C4B49, 0x8F5C583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000EA, 0x003C00F0,
- 0xF3FFFFA6, 0x00000000, 0x002F0046, 0x003B0017, 0x00460000, 0x007A005E, 0x00A90091, 0x00EA00C7,
- 0x3F3C3900, 0x4F4C4B49, 0x8F5C583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000EA, 0x003C00F3,
- 0xF7FFFFA7, 0x00000000, 0x00300047, 0x003C0018, 0x00470000, 0x007C005F, 0x00AC0094, 0x00EE00CB,
- 0x483C3900, 0x4F4D4B49, 0x8F5D583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000EE, 0x003D00F7,
- 0xFAFFFFA8, 0x00000000, 0x00300049, 0x003D0018, 0x00490000, 0x007E0061, 0x00AE0096, 0x00F200CE,
- 0x483C3900, 0x4F4D4B49, 0x8F5D593C, 0x6F6F3B4B, 0x002F0029, 0x00000000, 0x000000F2, 0x003E00FA,
- 0xFDFFFFA9, 0x00000000, 0x0031004A, 0x003E0019, 0x004A0000, 0x00800062, 0x00B10099, 0x00F600D1,
- 0x483C3900, 0x4F4D4B4A, 0x8F5D593C, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x000000F6, 0x003F00FD,
- 0xFFFFFFAA, 0x00000000, 0x0032004B, 0x003F0019, 0x004B0000, 0x00820064, 0x00B4009B, 0x00FA00D5,
- 0x483D3900, 0x584D4B4A, 0x8F5D593D, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x000000FA, 0x00400101,
- 0xFFFFFFAB, 0x00000000, 0x0033004C, 0x003F0019, 0x004C0000, 0x00840066, 0x00B7009D, 0x00FE00D8,
- 0x483D3A00, 0x584E4B4A, 0x8F5D593D, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x000000FE, 0x00410105,
- 0xFFFFFFAC, 0x00000000, 0x0034004D, 0x0040001A, 0x004D0000, 0x00860067, 0x00BA00A0, 0x010200DB,
- 0x483D3A00, 0x584E4C4A, 0x8F5E593D, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x00000102, 0x00420109,
- 0xFFFFFFAD, 0x00000000, 0x0034004F, 0x0041001A, 0x004F0000, 0x00880069, 0x00BC00A2, 0x010600DE,
- 0x493D3A00, 0x584E4C4A, 0x8F5E593D, 0x6F6F3C4B, 0x00380029, 0x00000000, 0x00000106, 0x0043010D,
- 0xFFFFFFAE, 0x00000000, 0x00350050, 0x0042001B, 0x00500000, 0x008A006A, 0x00BF00A5, 0x010A00E2,
- 0x493D3A00, 0x584E4C4A, 0x8F5E593D, 0x6F6F3C4C, 0x00380029, 0x00000000, 0x0000010A, 0x00440110,
- 0xFFFFFFAF, 0x00000000, 0x00360051, 0x0043001B, 0x00510000, 0x008C006C, 0x00C200A7, 0x010E00E5,
- 0x493E3A00, 0x584E4C4A, 0x8F5E593E, 0x6F6F3C4C, 0x0038002A, 0x00000000, 0x0000010E, 0x00450114,
- 0xFFFFFFB0, 0x00000000, 0x00370052, 0x0044001B, 0x00520000, 0x008E006D, 0x00C500AA, 0x011100E8,
- 0x493E3A00, 0x594F4C4B, 0x8F5E5A3E, 0x6F6F3C4C, 0x0039002A, 0x00000000, 0x00000111, 0x00460118,
- 0xFFFFFFB1, 0x00000000, 0x00370053, 0x0045001C, 0x00530000, 0x0090006F, 0x00C800AC, 0x011500EC,
- 0x493E3A00, 0x594F4D4B, 0x8F5F5A3E, 0x6F6F3C4C, 0x0039002A, 0x00000000, 0x00000115, 0x0047011C,
- 0xFFFFFFB2, 0x00000000, 0x00380054, 0x0046001C, 0x00540000, 0x00920071, 0x00CB00AE, 0x011900EF,
- 0x493E3B00, 0x594F4D4B, 0x8F5F5A3E, 0x6F6F3C4C, 0x0039002A, 0x00000000, 0x00000119, 0x00480120,
- 0xFFFFFFB3, 0x00000000, 0x00390056, 0x0047001D, 0x00560000, 0x00940072, 0x00CD00B1, 0x011D00F2,
- 0x493E3B00, 0x594F4D4B, 0x8F5F5A3E, 0x6F6F3D4D, 0x0039002A, 0x00000000, 0x0000011D, 0x00490124,
- 0xFFFFFFB4, 0x00000000, 0x003A0057, 0x0048001D, 0x00570000, 0x00960074, 0x00D000B3, 0x012100F6,
- 0x493F3B00, 0x594F4D4B, 0x8F5F5A3F, 0x6F6F3D4D, 0x0039002A, 0x00000000, 0x00000121, 0x004A0128,
- 0xFFFFFFB5, 0x00000000, 0x003B0058, 0x0049001D, 0x00580000, 0x00980075, 0x00D300B6, 0x012500F9,
- 0x4A3F3B00, 0x59584D4B, 0x8F5F5A3F, 0x6F6F3D4D, 0x0039002A, 0x00000000, 0x00000125, 0x004B012C,
- 0xFFFFFFB6, 0x00000000, 0x003B0059, 0x004A001E, 0x00590000, 0x009A0077, 0x00D600B8, 0x012900FC,
- 0x4A3F3B00, 0x59584D4C, 0x8F685A3F, 0x6F6F3D4D, 0x0039002B, 0x00000000, 0x00000129, 0x004C0130,
- 0xFFFFFFB7, 0x00000000, 0x003C005A, 0x004B001E, 0x005A0000, 0x009C0078, 0x00D900BA, 0x012D0100,
- 0x4A3F3B00, 0x59584E4C, 0x8F685B3F, 0x6F6F3D4D, 0x0039002B, 0x00000000, 0x0000012D, 0x004D0135,
- 0xFFFFFFB8, 0x00000000, 0x003D005B, 0x004C001E, 0x005B0000, 0x009E007A, 0x00DB00BD, 0x01310103,
- 0x4A3F3B00, 0x5A584E4C, 0x8F685B3F, 0x6F6F3D4D, 0x003A002B, 0x00000000, 0x00000131, 0x004E0139,
- 0xFFFFFFB9, 0x00000000, 0x003E005D, 0x004D001F, 0x005D0000, 0x00A0007B, 0x00DE00BF, 0x01350106,
- 0x4A3F3C00, 0x5A584E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000135, 0x004F013D,
- 0xFFFFFFBA, 0x00000000, 0x003F005E, 0x004E001F, 0x005E0000, 0x00A3007D, 0x00E100C2, 0x0139010A,
- 0x4A483C00, 0x5A584E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000139, 0x00500142,
- 0xFFFFFFBB, 0x00000000, 0x003F005F, 0x004F0020, 0x005F0000, 0x00A5007F, 0x00E400C4, 0x013C010D,
- 0x4A483C00, 0x5A584E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x0000013C, 0x00510146,
- 0xFFFFFFBC, 0x00000000, 0x00400060, 0x00500020, 0x00600000, 0x00A70080, 0x00E700C7, 0x01400110,
- 0x4A483C00, 0x5A594E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000140, 0x0052014A,
- 0xFFFFFFBD, 0x00000000, 0x00410061, 0x00510020, 0x00610000, 0x00A90082, 0x00E900C9, 0x01440114,
- 0x4B483C00, 0x5A594F4D, 0x8F695B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000144, 0x0053014F,
- 0xFFFFFFBE, 0x00000000, 0x00420064, 0x00530021, 0x00640000, 0x00AD0085, 0x00EF00CE, 0x014C011A,
- 0x4B483D00, 0x5A594F4D, 0x8F695C48, 0x6F6F3F4F, 0x003A002C, 0x00000000, 0x0000014C, 0x00550154,
- 0xFFFFFFBF, 0x00000000, 0x00430065, 0x00540022, 0x00650000, 0x00AF0086, 0x00F200D0, 0x0150011E,
- 0x4B483D00, 0x5B594F4D, 0x8F695C48, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x00000150, 0x00560158,
- 0xFFFFFFC0, 0x00000000, 0x00440066, 0x00550022, 0x00660000, 0x00B10088, 0x00F500D3, 0x01540121,
- 0x4B493D00, 0x5B594F4D, 0x8F695C49, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x00000154, 0x0057015D,
- 0xFFFFFFC1, 0x00000000, 0x00450067, 0x00560022, 0x00670000, 0x00B3008A, 0x00F800D5, 0x01580124,
- 0x4B493D00, 0x5B59584D, 0x8F695C49, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x00000158, 0x00580162,
- 0xFFFFFFC2, 0x00000000, 0x00460068, 0x00570023, 0x00680000, 0x00B5008B, 0x00FA00D8, 0x015C0128,
- 0x4B493D00, 0x5B59584E, 0x8F695C49, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x0000015C, 0x00590167,
- 0xFFFFFFC3, 0x00000000, 0x0047006B, 0x00590024, 0x006B0000, 0x00B9008E, 0x010000DC, 0x0163012E,
- 0x4C493D00, 0x5B59584E, 0x8F695C49, 0x6F6F4858, 0x003B002D, 0x00000000, 0x00000163, 0x005B016C,
- 0xFFFFFFC4, 0x00000000, 0x0048006C, 0x005A0024, 0x006C0000, 0x00BB0090, 0x010300DF, 0x01670131,
- 0x4C493E00, 0x5B5A584E, 0x8F695D49, 0x6F6F4858, 0x003B002D, 0x00000000, 0x00000167, 0x005C0171,
- 0xFFFFFFC5, 0x00000000, 0x0049006D, 0x005B0024, 0x006D0000, 0x00BD0091, 0x010600E1, 0x016B0135,
- 0x4C493E00, 0x5B5A584E, 0x8F6A5D49, 0x6F6F4858, 0x003B002D, 0x00000000, 0x0000016B, 0x005D0176,
- 0xFFFFFFC6, 0x00000000, 0x0049006E, 0x005C0025, 0x006E0000, 0x00BF0093, 0x010800E4, 0x016F0138,
- 0x4C493E00, 0x5B5A584E, 0x8F6A5D49, 0x6F6F4858, 0x003C002D, 0x00000000, 0x0000016F, 0x005E017B,
- 0xFFFFFFC7, 0x00000000, 0x004B0071, 0x005E0026, 0x00710000, 0x00C30096, 0x010E00E9, 0x0177013F,
- 0x4C493E00, 0x5C5A584F, 0x8F6A5D49, 0x6F6F4858, 0x003C002D, 0x00000000, 0x00000177, 0x00600180,
- 0xFFFFFFC8, 0x00000000, 0x004C0072, 0x005F0026, 0x00720000, 0x00C50098, 0x011100EB, 0x017B0142,
- 0x4C4A3E00, 0x5C5A594F, 0x8F6A5D4A, 0x6F6F4858, 0x003C002D, 0x00000000, 0x0000017B, 0x00610185,
- 0xFFFFFFC9, 0x00000000, 0x004D0073, 0x00600026, 0x00730000, 0x00C70099, 0x011400ED, 0x017F0145,
- 0x4C4A3E00, 0x5C5A594F, 0x8F6A5E4A, 0x6F6F4858, 0x003C002E, 0x00000000, 0x0000017F, 0x0062018B,
- 0xFFFFFFCA, 0x00000000, 0x004E0075, 0x00620027, 0x00750000, 0x00CB009C, 0x011900F2, 0x0187014C,
- 0x4D4A3F00, 0x5C5A594F, 0x8F6A5E4A, 0x6F6F4959, 0x003C002E, 0x00000000, 0x00000187, 0x00640190,
- 0xFFFFFFCB, 0x00000000, 0x004F0076, 0x00630027, 0x00760000, 0x00CD009E, 0x011C00F5, 0x018B014F,
- 0x4D4A3F00, 0x5C5A594F, 0x8F6A5E4A, 0x6F6F4959, 0x003C002E, 0x00000000, 0x0000018B, 0x00650196,
- 0xFFFFFFCC, 0x00000000, 0x00500078, 0x00640028, 0x00780000, 0x00CF009F, 0x011F00F7, 0x018E0153,
- 0x4D4A3F00, 0x5C5B594F, 0x8F6B5E4A, 0x6F6F4959, 0x003D002E, 0x00000000, 0x0000018E, 0x0066019B,
- 0xFFFFFFCD, 0x00000000, 0x0051007A, 0x00660029, 0x007A0000, 0x00D300A3, 0x012500FC, 0x01960159,
- 0x4D4A3F00, 0x5D5B5958, 0x8F6B5E4A, 0x6F6F4959, 0x003D002E, 0x00000000, 0x00000196, 0x006801A1,
- 0xFFFFFFCE, 0x00000000, 0x0052007B, 0x00670029, 0x007B0000, 0x00D500A4, 0x012700FE, 0x019A015D,
- 0x4D4A3F00, 0x5D5B5958, 0x8F6B5E4A, 0x6F6F4959, 0x003D002E, 0x00000000, 0x0000019A, 0x006901A7,
- 0xFFFFFFCF, 0x00000000, 0x0054007D, 0x0068002A, 0x007D0000, 0x00D900A7, 0x012D0103, 0x01A20163,
- 0x4E4A4800, 0x5D5B5958, 0x8F6B5F4B, 0x6F6F4959, 0x003D002F, 0x00000000, 0x000001A2, 0x006B01AD,
- 0xFFFFFFD0, 0x00000000, 0x0054007F, 0x0069002A, 0x007F0000, 0x00DB00A9, 0x01300106, 0x01A60167,
- 0x4E4B4800, 0x5D5B5A58, 0x8F6B5F4B, 0x6F6F4959, 0x003D002F, 0x00000000, 0x000001A6, 0x006C01B3,
- 0xFFFFFFD1, 0x00000000, 0x00560081, 0x006B002B, 0x00810000, 0x00DF00AC, 0x0135010A, 0x01AE016D,
- 0x4E4B4800, 0x5D5B5A58, 0x8F6B5F4B, 0x6F6F4959, 0x003D002F, 0x00000000, 0x000001AE, 0x006E01B9,
- 0xFFFFFFD2, 0x00000000, 0x00570082, 0x006C002B, 0x00820000, 0x00E100AD, 0x0138010D, 0x01B20171,
- 0x4E4B4800, 0x5E5C5A58, 0x8F6B5F4B, 0x6F6F4A5A, 0x003E002F, 0x00000000, 0x000001B2, 0x006F01BF,
- 0xFFFFFFD3, 0x00000000, 0x00580084, 0x006E002C, 0x00840000, 0x00E600B1, 0x013E0112, 0x01B90177,
- 0x4E4B4800, 0x5E5C5A59, 0x8F6C684B, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001B9, 0x007101C6,
- 0xFFFFFFD4, 0x00000000, 0x005A0087, 0x0070002D, 0x00870000, 0x00EA00B4, 0x01430117, 0x01C1017E,
- 0x4F4B4800, 0x5E5C5A59, 0x8F6C684B, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001C1, 0x007301CD,
- 0xFFFFFFD5, 0x00000000, 0x005B0088, 0x0071002D, 0x00880000, 0x00EC00B5, 0x01460119, 0x01C50181,
- 0x4F4B4900, 0x5E5C5A59, 0x8F6C684B, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001C5, 0x007401D3,
- 0xFFFFFFD6, 0x00000000, 0x005C008A, 0x0073002E, 0x008A0000, 0x00F000B8, 0x014C011E, 0x01CD0188,
- 0x4F4C4900, 0x5E5C5A59, 0x8F6C684C, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001CD, 0x007601DB,
- 0xFFFFFFD7, 0x00000000, 0x005E008D, 0x0075002F, 0x008D0000, 0x00F400BC, 0x01520123, 0x01D5018E,
- 0x4F4C4900, 0x5F5C5B59, 0x8F6C684C, 0x6F6F4A5A, 0x003F0038, 0x00000000, 0x000001D5, 0x007801E2,
- 0xFFFFFFD8, 0x00000000, 0x005F008F, 0x00770030, 0x008F0000, 0x00F800BF, 0x01570127, 0x01DD0195,
- 0x584C4900, 0x5F5D5B59, 0x8F6D684C, 0x6F6F4A5A, 0x003F0038, 0x00000000, 0x000001DD, 0x007A01E9,
- 0xFFFFFFD9, 0x00000000, 0x00610091, 0x00790030, 0x00910000, 0x00FC00C2, 0x015D012C, 0x01E4019C,
- 0x584C4900, 0x5F5D5B59, 0x8F6D694C, 0x6F6F4B5B, 0x003F0039, 0x00000000, 0x000001E4, 0x007C01F1,
- 0xFFFFFFDA, 0x00000000, 0x00620094, 0x007B0031, 0x00940000, 0x010000C5, 0x01620131, 0x01EC01A2,
- 0x584C4900, 0x5F5D5B5A, 0x8F6D694C, 0x6F6F4B5B, 0x003F0039, 0x00000000, 0x000001EC, 0x007E01F9,
- 0xFFFFFFDB, 0x00000000, 0x00640096, 0x007D0032, 0x00960000, 0x010400C8, 0x01680136, 0x01F401A9,
- 0x584D4900, 0x685D5B5A, 0x8F6D694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x000001F4, 0x00800201,
- 0xFFFFFFDC, 0x00000000, 0x00660098, 0x007F0033, 0x00980000, 0x010800CB, 0x016E013B, 0x01FC01B0,
- 0x584D4A00, 0x685E5B5A, 0x8F6D694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x000001FC, 0x0082020A,
- 0xFFFFFFDD, 0x00000000, 0x0067009B, 0x00810034, 0x009B0000, 0x010C00CE, 0x01730140, 0x020401B6,
- 0x584D4A00, 0x685E5C5A, 0x8F6E694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x00000204, 0x00840212,
- 0xFFFFFFDE, 0x00000000, 0x0069009D, 0x00830034, 0x009D0000, 0x011000D1, 0x01790145, 0x020B01BD,
- 0x594D4A00, 0x685E5C5A, 0x8F6E694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x0000020B, 0x0086021B,
- 0xFFFFFFDF, 0x00000000, 0x006B00A1, 0x00860036, 0x00A10000, 0x011600D6, 0x0181014C, 0x021701C7,
- 0x594D4A00, 0x685E5C5A, 0x8F6E694D, 0x6F6F4C5C, 0x00480039, 0x00000000, 0x00000217, 0x00890225,
- 0xFFFFFFE0, 0x00000000, 0x006D00A3, 0x00880036, 0x00A30000, 0x011A00D9, 0x01870151, 0x021F01CE,
- 0x594E4A00, 0x685E5C5B, 0x8F6E6A4E, 0x6F6F4C5C, 0x0049003A, 0x00000000, 0x0000021F, 0x008B022F,
- 0xFFFFFFE1, 0x00000000, 0x006F00A6, 0x008B0037, 0x00A60000, 0x012000DE, 0x018F0158, 0x022B01D7,
- 0x594E4A00, 0x695F5C5B, 0x8F6F6A4E, 0x6F6F4C5C, 0x0049003A, 0x00000000, 0x0000022B, 0x008E0239,
- 0xFFFFFFE2, 0x00000000, 0x007100A9, 0x008D0038, 0x00A90000, 0x012500E1, 0x0195015D, 0x023301DE,
- 0x594E4B00, 0x695F5D5B, 0x8F6F6A4E, 0x6F6F4C5C, 0x0049003A, 0x00000000, 0x00000233, 0x00900243,
- 0xFFFFFFE3, 0x00000000, 0x007300AC, 0x00900039, 0x00AC0000, 0x012B00E6, 0x019D0164, 0x023E01E8,
- 0x594E4B00, 0x695F5D5B, 0x8F6F6A4E, 0x6F6F4D5D, 0x0049003A, 0x00000000, 0x0000023E, 0x0093024E,
- 0xFFFFFFE4, 0x00000000, 0x007500B0, 0x0092003B, 0x00B00000, 0x013100EA, 0x01A6016B, 0x024A01F2,
- 0x5A4F4B00, 0x69685D5B, 0x8F6F6A4F, 0x6F6F4D5D, 0x0049003A, 0x00000000, 0x0000024A, 0x0096025A,
- 0xFFFFFFE5, 0x00000000, 0x007800B3, 0x0095003C, 0x00B30000, 0x013700EF, 0x01AE0173, 0x025601FC,
- 0x5A4F4B00, 0x69685D5C, 0x8F786B4F, 0x6F6F4D5D, 0x0049003B, 0x00000000, 0x00000256, 0x00990266,
- 0xFFFFFFE6, 0x00000000, 0x007A00B7, 0x0098003D, 0x00B70000, 0x013D00F4, 0x01B7017A, 0x02610206,
- 0x5A4F4B00, 0x6A685E5C, 0x8F786B4F, 0x6F6F4D5D, 0x004A003B, 0x00000000, 0x00000261, 0x009C0272,
- 0xFFFFFFE7, 0x00000000, 0x007D00BC, 0x009C003F, 0x00BC0000, 0x014500FA, 0x01C20184, 0x02710213,
- 0x5A584C00, 0x6A685E5C, 0x8F786B58, 0x6F6F4E5E, 0x004A003B, 0x00000000, 0x00000271, 0x00A00280,
- 0xFFFFFFE8, 0x00000000, 0x007F00BF, 0x009F0040, 0x00BF0000, 0x014B00FF, 0x01CA018B, 0x027D021D,
- 0x5A584C00, 0x6A685E5C, 0x8F786B58, 0x6F6F4E5E, 0x004A003B, 0x00000000, 0x0000027D, 0x00A3028E,
- 0xFFFFFFE9, 0x00000000, 0x008200C4, 0x00A30041, 0x00C40000, 0x01530105, 0x01D60194, 0x028C022A,
- 0x5B584C00, 0x6A695F5D, 0x8F796B58, 0x6F6F4E5E, 0x004A003B, 0x00000000, 0x0000028C, 0x00A7029C,
- 0xFFFFFFEA, 0x00000000, 0x008600C8, 0x00A70043, 0x00C80000, 0x015B010B, 0x01E1019E, 0x029C0238,
- 0x5B584D00, 0x6A695F5D, 0x8F796C58, 0x6F6F4F5F, 0x004A003C, 0x00000000, 0x0000029C, 0x00AB02AC,
- 0xFFFFFFEB, 0x00000000, 0x008900CD, 0x00AB0044, 0x00CD0000, 0x01630111, 0x01EC01A8, 0x02AC0245,
- 0x5B594D00, 0x6B695F5D, 0x8F796C59, 0x6F6F4F5F, 0x004B003C, 0x00000000, 0x000002AC, 0x00AF02BC,
- 0xFFFFFFEC, 0x00000000, 0x008C00D2, 0x00AF0046, 0x00D20000, 0x016C0118, 0x01F701B2, 0x02BB0252,
- 0x5B594D00, 0x6B69685E, 0x8F796C59, 0x6F6F4F5F, 0x004B003C, 0x00000000, 0x000002BB, 0x00B302CD,
- 0xFFFFFFED, 0x00000000, 0x009000D8, 0x00B40048, 0x00D80000, 0x01760120, 0x020601BE, 0x02CF0263,
- 0x5C594E00, 0x6B6A685E, 0x8F796D59, 0x6F6F5868, 0x004B003D, 0x00000000, 0x000002CF, 0x00B802E0,
- 0xFFFFFFEE, 0x00000000, 0x009300DC, 0x00B80049, 0x00DC0000, 0x017E0126, 0x021101C7, 0x02DE0270,
- 0x5C594E00, 0x6B6A685E, 0x8F7A6D59, 0x6F6F5868, 0x004C003D, 0x00000000, 0x000002DE, 0x00BC02F3,
- 0xFFFFFFEF, 0x00000000, 0x009700E2, 0x00BC004B, 0x00E20000, 0x0188012E, 0x021F01D3, 0x02F20281,
- 0x5C594E00, 0x6C6A685F, 0x8F7A6D59, 0x6F6F5868, 0x004C003D, 0x00000000, 0x000002F2, 0x00C10307,
- 0xFFFFFFF0, 0x00000000, 0x009B00E9, 0x00C2004E, 0x00E90000, 0x01940137, 0x023001E2, 0x03090295,
- 0x5D5A4F00, 0x6C6A695F, 0x8F7A6E5A, 0x6F6F5969, 0x004C003E, 0x00000000, 0x00000309, 0x00C7031C,
- 0xFFFFFFF1, 0x00000000, 0x009F00EF, 0x00C70050, 0x00EF0000, 0x019E013F, 0x023E01EE, 0x031D02A5,
- 0x5D5A4F00, 0x6C6B695F, 0x8F7B6E5A, 0x6F6F5969, 0x004C003E, 0x00000000, 0x0000031D, 0x00CC0333,
- 0xFFFFFFF2, 0x00000000, 0x00A400F6, 0x00CD0052, 0x00F60000, 0x01AB0148, 0x024F01FD, 0x033402B9,
- 0x5D5A4F00, 0x6D6B6968, 0x8F7B6E5A, 0x6F6F5969, 0x004D003E, 0x00000000, 0x00000334, 0x00D2034B,
- 0xFFFFFFF3, 0x00000000, 0x00AA00FE, 0x00D40055, 0x00FE0000, 0x01B90153, 0x0262020E, 0x035002D1,
- 0x5E5B5800, 0x6D6B6A68, 0x8F7B6F5B, 0x6F6F5969, 0x004D003F, 0x00000000, 0x00000350, 0x00D90365,
- 0xFFFFFFF4, 0x00000000, 0x00AF0107, 0x00DB0058, 0x01070000, 0x01C7015E, 0x0276021F, 0x036B02E8,
- 0x5E5B5800, 0x6E6C6A68, 0x8F7B6F5B, 0x6F6F5A6A, 0x004E003F, 0x00000000, 0x0000036B, 0x00E00380,
- 0xFFFFFFF5, 0x00000000, 0x00B4010F, 0x00E2005A, 0x010F0000, 0x01D50169, 0x028A022F, 0x038602FF,
- 0x5F5B5800, 0x6E6C6A69, 0x8F7C785B, 0x6F6F5A6A, 0x004E0048, 0x00000000, 0x00000386, 0x00E7039D,
- 0xFFFFFFF6, 0x00000000, 0x00BA0117, 0x00E8005D, 0x01170000, 0x01E30174, 0x029D0240, 0x03A20316,
- 0x5F5C5900, 0x6F6C6A69, 0x8F7C785C, 0x6F6F5A6A, 0x004F0048, 0x00000000, 0x000003A2, 0x00EE03BB,
- 0xFFFFFFF7, 0x00000000, 0x00C10121, 0x00F10060, 0x01210000, 0x01F60182, 0x02B70256, 0x03C50334,
- 0x685C5900, 0x6F6D6B69, 0x8F7D785C, 0x6F6F5B6B, 0x004F0048, 0x00000000, 0x000003C5, 0x00F703DC,
- 0xFFFFFFF8, 0x00000000, 0x00C7012B, 0x00F90064, 0x012B0000, 0x0206018E, 0x02CD026A, 0x03E4034F,
- 0x685C5900, 0x6F6D6B6A, 0x8F7D795C, 0x6F6F5B6B, 0x00580049, 0x00000000, 0x000003E4, 0x00FF03FE,
- 0xFFFFFFF9, 0x00000000, 0x00CE0135, 0x01020067, 0x01350000, 0x0218019D, 0x02E7027F, 0x0407036D,
- 0x685D5A00, 0x6F6E6C6A, 0x8F7E795D, 0x6F6F5B6B, 0x00580049, 0x00000000, 0x00000407, 0x01080422,
- 0xFFFFFFFA, 0x00000000, 0x00D60141, 0x010C006B, 0x01410000, 0x022D01AC, 0x03030298, 0x042E038E,
- 0x695D5A00, 0x6F6E6C6A, 0x8F7E795D, 0x6F6F5C6C, 0x00580049, 0x00000000, 0x0000042E, 0x0112044A,
- 0xFFFFFFFB, 0x00000000, 0x00DE014D, 0x0115006F, 0x014D0000, 0x024101BC, 0x031F02B0, 0x045503AF,
- 0x695E5A00, 0x6F6F6C6B, 0x8F7F7A5E, 0x6F6F5C6C, 0x0059004A, 0x00000000, 0x00000455, 0x011C0473,
- 0xFFFFFFFC, 0x00000000, 0x00E7015B, 0x01210074, 0x015B0000, 0x025901CF, 0x034102CD, 0x048403D7,
- 0x695E5B00, 0x6F6F6D6B, 0x8F7F7A5E, 0x6F6F5D6D, 0x0059004A, 0x00000000, 0x00000484, 0x012804A0,
- 0xFFFFFFFD, 0x00000000, 0x00F10169, 0x012D0078, 0x01690000, 0x027201E1, 0x036202EA, 0x04B303FF,
- 0x6A5F5B00, 0x6F6F6E6C, 0x8F887B5F, 0x6F6F5D6D, 0x0059004B, 0x00000000, 0x000004B3, 0x013404D0,
- 0xFFFFFFFE, 0x00000000, 0x00FA0177, 0x0139007D, 0x01770000, 0x028A01F4, 0x03840307, 0x04E20427,
- 0x6A685C00, 0x6F6F6E6C, 0x8F887B68, 0x6F6F5E6E, 0x005A004B, 0x00000000, 0x000004E2, 0x01400502,
- 0xFFFFFFFF, 0x00000000, 0x01050187, 0x01460082, 0x01870000, 0x02A6020A, 0x03AB0329, 0x05190455,
- 0x6B685C00, 0x6F6F6F6D, 0x8F897B68, 0x6F6F5E6E, 0x005A004B, 0x00000000, 0x00000519, 0x014E0538,
- 0x00080004, 0x00090008, 0x000B000A, 0x000C000C, 0x000E000D, 0x0010000F, 0x00120011, 0x00130013,
- 0x00150014, 0x00170016, 0x00190018, 0x001A001A, 0x001C001B, 0x001E001D, 0x0020001F, 0x00210020,
- 0x00230022, 0x00250024, 0x00260026, 0x00280027, 0x002A0029, 0x002B002B, 0x002D002C, 0x002F002E,
- 0x00300030, 0x00320031, 0x00340033, 0x00350035, 0x00370036, 0x00390038, 0x003A0039, 0x003C003B,
- 0x003E003D, 0x003F003E, 0x00410040, 0x00420042, 0x00440043, 0x00460045, 0x00470046, 0x00490048,
- 0x004A004A, 0x004C004B, 0x004E004D, 0x004F004E, 0x00510050, 0x00520051, 0x00540053, 0x00550055,
- 0x00580057, 0x005C005A, 0x005F005D, 0x00620060, 0x00650063, 0x00680066, 0x006B0069, 0x006E006C,
- 0x0071006F, 0x00740072, 0x00760075, 0x00790078, 0x007D007B, 0x0081007F, 0x00860083, 0x008A0088,
- 0x008E008C, 0x00920090, 0x00960094, 0x009A0098, 0x009E009C, 0x00A400A1, 0x00A900A6, 0x00AE00AC,
- 0x00B400B1, 0x00B900B6, 0x00BE00BB, 0x00C300C0, 0x00CA00C7, 0x00D000CD, 0x00D600D3, 0x00DC00D9,
- 0x00E200DF, 0x00E900E6, 0x00F000ED, 0x00F700F3, 0x00FD00FA, 0x01050101, 0x010D0109, 0x01140110,
- 0x011C0118, 0x01240120, 0x012C0128, 0x01350130, 0x013D0139, 0x01460142, 0x014F014A, 0x01580154,
- 0x0162015D, 0x016C0167, 0x01760171, 0x0180017B, 0x018B0185, 0x01960190, 0x01A1019B, 0x01AD01A7,
- 0x01B901B3, 0x01C601BF, 0x01D301CD, 0x01E201DB, 0x01F101E9, 0x020101F9, 0x0212020A, 0x0225021B,
- 0x0239022F, 0x024E0243, 0x0266025A, 0x02800272, 0x029C028E, 0x02BC02AC, 0x02E002CD, 0x030702F3,
- 0x0333031C, 0x0365034B, 0x039D0380, 0x03DC03BB, 0x042203FE, 0x0473044A, 0x04D004A0, 0x05380502,
- 0x00080004, 0x000A0009, 0x000C000B, 0x000E000D, 0x0010000F, 0x00120011, 0x00140013, 0x00160015,
- 0x00180017, 0x001A0019, 0x001C001B, 0x001E001D, 0x0020001F, 0x00220021, 0x00240023, 0x00260025,
- 0x00280027, 0x002A0029, 0x002C002B, 0x002E002D, 0x0030002F, 0x00320031, 0x00340033, 0x00360035,
- 0x00380037, 0x003A0039, 0x003C003B, 0x003E003D, 0x0040003F, 0x00420041, 0x00440043, 0x00460045,
- 0x00480047, 0x004A0049, 0x004C004B, 0x004E004D, 0x0050004F, 0x00520051, 0x00540053, 0x00560055,
- 0x00580057, 0x005A0059, 0x005C005B, 0x005E005D, 0x0060005F, 0x00620061, 0x00640063, 0x00660065,
- 0x006A0068, 0x006E006C, 0x00720070, 0x00760074, 0x007A0078, 0x007E007C, 0x00820080, 0x00860084,
- 0x008A0088, 0x008E008C, 0x00920090, 0x00960094, 0x009B0098, 0x00A1009E, 0x00A700A4, 0x00AD00AA,
- 0x00B300B0, 0x00B900B6, 0x00BF00BC, 0x00C500C2, 0x00CB00C8, 0x00D300CF, 0x00DB00D7, 0x00E300DF,
- 0x00EB00E7, 0x00F300EF, 0x00FB00F7, 0x010400FF, 0x010E0109, 0x01180113, 0x0122011D, 0x012C0127,
- 0x01370131, 0x0143013D, 0x014F0149, 0x015B0155, 0x01670161, 0x0175016E, 0x0183017C, 0x0191018A,
- 0x01A00198, 0x01B001A8, 0x01C001B8, 0x01D101C8, 0x01E301DA, 0x01F501EC, 0x020801FE, 0x021C0212,
- 0x02300226, 0x0246023B, 0x025C0251, 0x02730267, 0x028B027F, 0x02A40297, 0x02BE02B1, 0x02D902CB,
- 0x02F502E7, 0x03120303, 0x03300321, 0x03500340, 0x03710360, 0x03930382, 0x03B703A5, 0x03DC03C9,
- 0x040203EF, 0x042A0416, 0x0454043F, 0x047F0469, 0x04AC0495, 0x04DB04C3, 0x050C04F3, 0x053F0525,
- 0x05740559, 0x05AB058F, 0x05E405C7, 0x061F0601, 0x065C063D, 0x069C067C, 0x06DF06BD, 0x07240701
-};
-
-const unsigned int gen9_vp9_avs_coeffs[256] = {
- 0x00000000, 0x40400000, 0x00000000, 0x00000000, 0x40000000, 0x00000000, 0x40000000, 0x00000000,
- 0x0101FFFF, 0x4040FEFE, 0xFFFF0202, 0x00000101, 0x40FF0000, 0x00000001, 0x40FF0000, 0x00000001,
- 0x0202FFFF, 0x4141FCFC, 0xFEFE0404, 0xFFFF0101, 0x3FFE0000, 0x00000003, 0x3FFE0000, 0x00000003,
- 0x0303FFFF, 0x3F3FFBFB, 0xFDFD0606, 0xFFFF0202, 0x3EFD0000, 0x00000005, 0x3EFD0000, 0x00000005,
- 0x0303FEFE, 0x4040F9F9, 0xFCFC0909, 0xFFFF0202, 0x3EFC0000, 0x00000006, 0x3EFC0000, 0x00000006,
- 0x0404FEFE, 0x3F3FF8F8, 0xFBFB0B0B, 0xFEFE0303, 0x3CFC0000, 0x00000008, 0x3CFC0000, 0x00000008,
- 0x0505FDFD, 0x3E3EF7F7, 0xFAFA0E0E, 0xFEFE0303, 0x3CFB0000, 0x0000FF0A, 0x3CFB0000, 0x0000FF0A,
- 0x0505FDFD, 0x3D3DF5F5, 0xF9F91111, 0xFEFE0404, 0x39FB0000, 0x0000FF0D, 0x39FB0000, 0x0000FF0D,
- 0x0606FDFD, 0x3B3BF5F5, 0xF8F81414, 0xFDFD0404, 0x37FB0000, 0x0000FF0F, 0x37FB0000, 0x0000FF0F,
- 0x0606FCFC, 0x3B3BF4F4, 0xF7F71616, 0xFDFD0505, 0x35FB0000, 0x0000FF11, 0x35FB0000, 0x0000FF11,
- 0x0707FCFC, 0x3939F3F3, 0xF6F61919, 0xFDFD0505, 0x33FB0000, 0x0000FE14, 0x33FB0000, 0x0000FE14,
- 0x0707FCFC, 0x3737F3F3, 0xF5F51C1C, 0xFCFC0606, 0x31FB0000, 0x0000FE16, 0x31FB0000, 0x0000FE16,
- 0x0707FCFC, 0x3535F2F2, 0xF5F51F1F, 0xFCFC0606, 0x2EFB0000, 0x0000FE19, 0x2EFB0000, 0x0000FE19,
- 0x0707FCFC, 0x3232F2F2, 0xF4F42222, 0xFCFC0707, 0x2CFB0000, 0x0000FD1C, 0x2CFB0000, 0x0000FD1C,
- 0x0707FCFC, 0x3030F2F2, 0xF3F32525, 0xFCFC0707, 0x29FB0000, 0x0000FD1F, 0x29FB0000, 0x0000FD1F,
- 0x0707FCFC, 0x2D2DF2F2, 0xF3F32828, 0xFCFC0707, 0x27FC0000, 0x0000FC21, 0x27FC0000, 0x0000FC21,
- 0x0707FCFC, 0x2929F3F3, 0xF3F32B2B, 0xFCFC0707, 0x24FC0000, 0x0000FC24, 0x24FC0000, 0x0000FC24,
- 0x0707FCFC, 0x2828F3F3, 0xF2F22D2D, 0xFCFC0707, 0x21FC0000, 0x0000FC27, 0x21FC0000, 0x0000FC27,
- 0x0707FCFC, 0x2525F3F3, 0xF2F23030, 0xFCFC0707, 0x1FFD0000, 0x0000FB29, 0x1FFD0000, 0x0000FB29,
- 0x0707FCFC, 0x2222F4F4, 0xF2F23232, 0xFCFC0707, 0x1CFD0000, 0x0000FB2C, 0x1CFD0000, 0x0000FB2C,
- 0x0606FCFC, 0x1F1FF5F5, 0xF2F23535, 0xFCFC0707, 0x19FE0000, 0x0000FB2E, 0x19FE0000, 0x0000FB2E,
- 0x0606FCFC, 0x1C1CF5F5, 0xF3F33737, 0xFCFC0707, 0x16FE0000, 0x0000FB31, 0x16FE0000, 0x0000FB31,
- 0x0505FDFD, 0x1919F6F6, 0xF3F33939, 0xFCFC0707, 0x14FE0000, 0x0000FB33, 0x14FE0000, 0x0000FB33,
- 0x0505FDFD, 0x1616F7F7, 0xF4F43B3B, 0xFCFC0606, 0x11FF0000, 0x0000FB35, 0x11FF0000, 0x0000FB35,
- 0x0404FDFD, 0x1414F8F8, 0xF5F53B3B, 0xFDFD0606, 0x0FFF0000, 0x0000FB37, 0x0FFF0000, 0x0000FB37,
- 0x0404FEFE, 0x1111F9F9, 0xF5F53D3D, 0xFDFD0505, 0x0DFF0000, 0x0000FB39, 0x0DFF0000, 0x0000FB39,
- 0x0303FEFE, 0x0E0EFAFA, 0xF7F73E3E, 0xFDFD0505, 0x0AFF0000, 0x0000FB3C, 0x0AFF0000, 0x0000FB3C,
- 0x0303FEFE, 0x0B0BFBFB, 0xF8F83F3F, 0xFEFE0404, 0x08000000, 0x0000FC3C, 0x08000000, 0x0000FC3C,
- 0x0202FFFF, 0x0909FCFC, 0xF9F94040, 0xFEFE0303, 0x06000000, 0x0000FC3E, 0x06000000, 0x0000FC3E,
- 0x0202FFFF, 0x0606FDFD, 0xFBFB3F3F, 0xFFFF0303, 0x05000000, 0x0000FD3E, 0x05000000, 0x0000FD3E,
- 0x0101FFFF, 0x0404FEFE, 0xFCFC4141, 0xFFFF0202, 0x03000000, 0x0000FE3F, 0x03000000, 0x0000FE3F,
- 0x01010000, 0x0202FFFF, 0xFEFE4040, 0xFFFF0101, 0x01000000, 0x0000FF40, 0x01000000, 0x0000FF40,
-};
-
-const unsigned int intel_vp9_costlut_key[4096] = {
- 0x02061200, 0x00000036, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x28190702, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010002,
- 0x050D2501, 0x0000006D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x38290E03, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020004,
- 0x050D2502, 0x0000006D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x38290E03, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020004,
- 0x050D2503, 0x0000006D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x38290E03, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020004,
- 0x06102E04, 0x00000088, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3A2B1904, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020005,
- 0x06102E05, 0x00000088, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3A2B1904, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020005,
- 0x07133706, 0x000000A3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3C2E1B05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030006,
- 0x07133707, 0x000000A3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3C2E1B05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030006,
- 0x07133708, 0x000000A3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3C2E1B05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030006,
- 0x08164009, 0x000000BE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3E381D05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030007,
- 0x0816400A, 0x000000BE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3E381D05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030007,
- 0x0A1A4A0B, 0x000000DA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x48391E06, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040008,
- 0x0A1A4A0C, 0x000000DA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x48391E06, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040008,
- 0x0B1D530D, 0x000000F5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x493A2807, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040009,
- 0x0B1D530E, 0x000000F5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x493A2807, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040009,
- 0x0B1D530F, 0x000000F5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x493A2807, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040009,
- 0x0C205C10, 0x00000110, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4A3B2908, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000A,
- 0x0C205C11, 0x00000110, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4A3B2908, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000A,
- 0x0D236512, 0x0000012B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4B3C2A09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000B,
- 0x0D236513, 0x0000012B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4B3C2A09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000B,
- 0x0E266E14, 0x00000146, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4C3E2B09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000C,
- 0x0E266E15, 0x00000146, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4C3E2B09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000C,
- 0x102A7816, 0x00000162, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4D3F2C0A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000D,
- 0x102A7817, 0x00000162, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4D3F2C0A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000D,
- 0x102A7818, 0x00000162, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4D3F2C0A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000D,
- 0x112D8119, 0x0000017D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4E482C0B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000E,
- 0x112D811A, 0x0000017D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4E482C0B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000E,
- 0x12308A1B, 0x00000198, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4F482D0C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000F,
- 0x12308A1C, 0x00000198, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4F482D0C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000F,
- 0x1333931D, 0x000001B3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x58492E0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080010,
- 0x1333931E, 0x000001B3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x58492E0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080010,
- 0x1333931F, 0x000001B3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x58492E0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080010,
- 0x14369C20, 0x000001CE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x594A2F0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080011,
- 0x14369C21, 0x000001CE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x594A2F0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080011,
- 0x163AA622, 0x000001EA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x594A380E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090012,
- 0x163AA623, 0x000001EA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x594A380E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090012,
- 0x173DAF24, 0x00000205, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5A4B380F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090013,
- 0x173DAF25, 0x00000205, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5A4B380F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090013,
- 0x173DAF26, 0x00000205, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5A4B380F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090013,
- 0x1840B827, 0x00000220, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5A4B3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0014,
- 0x1840B828, 0x00000220, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5A4B3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0014,
- 0x1943C129, 0x0000023B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5B4C3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0015,
- 0x1943C12A, 0x0000023B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5B4C3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0015,
- 0x1943C12B, 0x0000023B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5B4C3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0015,
- 0x1A46CA2C, 0x00000256, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5B4C3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0016,
- 0x1A46CA2D, 0x00000256, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5B4C3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0016,
- 0x1B49D32E, 0x00000271, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5C4D3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0017,
- 0x1B49D32F, 0x00000271, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5C4D3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0017,
- 0x1D4DDD30, 0x0000028D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5C4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0018,
- 0x1D4DDD31, 0x0000028D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5C4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0018,
- 0x1D4DDD32, 0x0000028D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5C4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0018,
- 0x1E50E633, 0x000002A8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5D4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0019,
- 0x1E50E634, 0x000002A8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5D4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0019,
- 0x1F53EF35, 0x000002C3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5D4F3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001A,
- 0x1F53EF36, 0x000002C3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5D4F3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001A,
- 0x1F53EF37, 0x000002C3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5D4F3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001A,
- 0x2056F838, 0x000002DE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5E4F3C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001B,
- 0x2056F839, 0x000002DE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5E4F3C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001B,
- 0x2159FF3A, 0x000002F9, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5E583C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001C,
- 0x2159FF3B, 0x000002F9, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5E583C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001C,
- 0x2159FF3C, 0x000002F9, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5E583C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001C,
- 0x235DFF3D, 0x00000315, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001D,
- 0x235DFF3E, 0x00000315, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001D,
- 0x2460FF3F, 0x00000330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001E,
- 0x2460FF40, 0x00000330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001E,
- 0x2563FF41, 0x0000034B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593E1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001F,
- 0x2563FF42, 0x0000034B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593E1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001F,
- 0x2563FF43, 0x0000034B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593E1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001F,
- 0x2666FF44, 0x00000366, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593E1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100020,
- 0x2666FF45, 0x00000366, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593E1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100020,
- 0x2769FF46, 0x00000381, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593F1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100021,
- 0x2769FF47, 0x00000381, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593F1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100021,
- 0x2769FF48, 0x00000381, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593F1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100021,
- 0x296DFF49, 0x0000039D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110022,
- 0x296DFF4A, 0x0000039D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110022,
- 0x2A70FF4B, 0x000003B8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110023,
- 0x2A70FF4C, 0x000003B8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110023,
- 0x2A70FF4D, 0x000003B8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110023,
- 0x2B73FF4E, 0x000003D3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A481E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120024,
- 0x2B73FF4F, 0x000003D3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A481E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120024,
- 0x2C76FF50, 0x000003EE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120025,
- 0x2C76FF51, 0x000003EE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120025,
- 0x2C76FF52, 0x000003EE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120025,
- 0x2D79FF53, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130026,
- 0x2D79FF54, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130026,
- 0x2F7DFF55, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B491F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130027,
- 0x2F7DFF56, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B491F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130027,
- 0x2F7DFF57, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B491F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130027,
- 0x3080FF58, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140028,
- 0x3080FF59, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140028,
- 0x3080FF5A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140028,
- 0x3183FF5B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140029,
- 0x3183FF5C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140029,
- 0x3286FF5D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002A,
- 0x3286FF5E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002A,
- 0x3286FF5F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002A,
- 0x3389FF60, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6B5C4929, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002B,
- 0x358DFF61, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6B5C4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0016002C,
- 0x3690FF62, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0016002D,
- 0x3793FF63, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0017002E,
- 0x3793FF64, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0017002E,
- 0x3896FF65, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0017002F,
- 0x3999FF66, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6C5D4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00180030,
- 0x3B9DFF67, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00180031,
- 0x3B9DFF68, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00180031,
- 0x3CA0FF69, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00190032,
- 0x3DA3FF6A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00190033,
- 0x3EA6FF6B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6D5F4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001A0034,
- 0x3EA6FF6C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6D5F4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001A0034,
- 0x3FA9FF6D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6E5F4C2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001A0035,
- 0x41ADFF6E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6E5F4C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001B0036,
- 0x42B0FF6F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6E5F4C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001B0037,
- 0x42B0FF70, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6E5F4C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001B0037,
- 0x43B3FF71, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6E684C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001C0038,
- 0x44B6FF72, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6F684D2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001C0039,
- 0x45B9FF73, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6F684D2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001D003A,
- 0x45B9FF74, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6F684D2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001D003A,
- 0x47BDFF75, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6F684D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001D003B,
- 0x48C0FF76, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6F684D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001E003C,
- 0x48C0FF77, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6F684D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001E003C,
- 0x49C3FF78, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x78694D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001E003D,
- 0x4AC6FF79, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x78694E2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001F003E,
- 0x4BC9FF7A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x78694E2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001F003F,
- 0x4DCDFF7B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x78694E2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200040,
- 0x4ED0FF7C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x78694E2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200041,
- 0x50D6FF7D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x79694F2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00210043,
- 0x51D9FF7E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x796A4F2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00220044,
- 0x52DCFF7F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x796A4F2E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00220045,
- 0x54E0FF80, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x796A4F2E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00230046,
- 0x55E3FF81, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x796A582E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00230047,
- 0x56E6FF82, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x796A582E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00240048,
- 0x57E9FF83, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x796A582E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00240049,
- 0x58ECFF84, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x796A582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0025004A,
- 0x5AF0FF85, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7A6B582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0025004B,
- 0x5BF3FF86, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7A6B582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0026004C,
- 0x5CF6FF87, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7A6B582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0026004D,
- 0x5DF9FF88, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7A6B592F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0027004E,
- 0x5EFCFF89, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7A6B5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0027004F,
- 0x60FFFF8A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7A6B5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280050,
- 0x62FFFF8B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00290052,
- 0x63FFFF8C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00290053,
- 0x64FFFF8D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002A0054,
- 0x67FFFF8E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002B0056,
- 0x68FFFF8F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B6C5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002B0057,
- 0x69FFFF90, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B6C5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002C0058,
- 0x6CFFFF91, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002D005A,
- 0x6DFFFF92, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002D005B,
- 0x6EFFFF93, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002E005C,
- 0x6FFFFF94, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002E005D,
- 0x72FFFF95, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002F005F,
- 0x73FFFF96, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7C6D5B39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00300060,
- 0x74FFFF97, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7C6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00300061,
- 0x76FFFF98, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7D6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00310063,
- 0x79FFFF99, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7D6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00320065,
- 0x7AFFFF9A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7D6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00330066,
- 0x7CFFFF9B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7D6F5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340068,
- 0x7EFFFF9C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7D6F5C3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340069,
- 0x80FFFF9D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7E6F5C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0035006B,
- 0x81FFFF9E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7E6F5C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0036006C,
- 0x83FFFF9F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7E6F5C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0037006E,
- 0x85FFFFA0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7E785C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0037006F,
- 0x87FFFFA1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7E785C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380071,
- 0x89FFFFA2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7F785D3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00390073,
- 0x8BFFFFA3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7F785D3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003A0074,
- 0x8DFFFFA4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7F785D3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003B0076,
- 0x8FFFFFA5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7F785D3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003C0078,
- 0x91FFFFA6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x88785D3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003C0079,
- 0x93FFFFA7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x88795E3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003D007B,
- 0x95FFFFA8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x88795E3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003E007D,
- 0x97FFFFA9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x88795E3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003F007E,
- 0x99FFFFAA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x88795E3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00400080,
- 0x9BFFFFAB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x88795E3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00410082,
- 0x9EFFFFAC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x88795F3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00420084,
- 0xA0FFFFAD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x89795F3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00430086,
- 0xA3FFFFAE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x897A5F3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440088,
- 0xA5FFFFAF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x897A5F3E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0045008A,
- 0xA7FFFFB0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x897A5F3E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0046008C,
- 0xAAFFFFB1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x897A683E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0047008E,
- 0xACFFFFB2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x897A683E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00480090,
- 0xAFFFFFB3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x897A683E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00490092,
- 0xB1FFFFB4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x897A683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004A0094,
- 0xB3FFFFB5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A7B683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004B0096,
- 0xB6FFFFB6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A7B683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004C0098,
- 0xB8FFFFB7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A7B683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004D009A,
- 0xBAFFFFB8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A7B693F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004E009C,
- 0xBDFFFFB9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A7B693F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004F009E,
- 0xC0FFFFBA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A7B6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005000A1,
- 0xC3FFFFBB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A7B6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005100A3,
- 0xC5FFFFBC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005200A5,
- 0xC8FFFFBD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005300A7,
- 0xCBFFFFBE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005500AA,
- 0xCEFFFFBF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005600AC,
- 0xD0FFFFC0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8B7C6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005700AE,
- 0xD4FFFFC1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8B7C6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005800B1,
- 0xD6FFFFC2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8B7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005900B3,
- 0xDAFFFFC3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005B00B6,
- 0xDCFFFFC4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005C00B8,
- 0xE0FFFFC5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005D00BB,
- 0xE2FFFFC6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005E00BD,
- 0xE6FFFFC7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8C7D6B49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006000C0,
- 0xE8FFFFC8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8C7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006100C2,
- 0xEBFFFFC9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006200C5,
- 0xEFFFFFCA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006400C8,
- 0xF3FFFFCB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006500CB,
- 0xF5FFFFCC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006600CD,
- 0xF9FFFFCD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8D7F6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006800D0,
- 0xFCFFFFCE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8E7F6C4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006900D3,
- 0xFFFFFFCF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8E7F6C4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006B00D6,
- 0xFFFFFFD0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8E7F6C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006C00D9,
- 0xFFFFFFD1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8E7F6C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006E00DC,
- 0xFFFFFFD2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8E886C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006F00DF,
- 0xFFFFFFD3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F886C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007100E3,
- 0xFFFFFFD4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F886D4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007300E6,
- 0xFFFFFFD5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F886D4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007400E9,
- 0xFFFFFFD6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F886D4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007600ED,
- 0xFFFFFFD7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F886D4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007800F1,
- 0xFFFFFFD8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F896D4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007A00F4,
- 0xFFFFFFD9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F896E4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007C00F8,
- 0xFFFFFFDA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F896E4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007E00FC,
- 0xFFFFFFDB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F896E4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00800100,
- 0xFFFFFFDC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F896E4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00820105,
- 0xFFFFFFDD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F896F4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00840109,
- 0xFFFFFFDE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F896F4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0086010D,
- 0xFFFFFFDF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8A6F4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00890112,
- 0xFFFFFFE0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8A6F4E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x008B0117,
- 0xFFFFFFE1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8A784E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x008E011C,
- 0xFFFFFFE2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8A784E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00900121,
- 0xFFFFFFE3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8A784E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00930127,
- 0xFFFFFFE4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8B784F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0096012D,
- 0xFFFFFFE5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8B784F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00990133,
- 0xFFFFFFE6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8B794F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x009C0139,
- 0xFFFFFFE7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8B7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00A00140,
- 0xFFFFFFE8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8B7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00A30147,
- 0xFFFFFFE9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8C7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00A7014E,
- 0xFFFFFFEA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8C7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00AB0156,
- 0xFFFFFFEB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8C7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00AF015E,
- 0xFFFFFFEC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8D7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00B30166,
- 0xFFFFFFED, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8D7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00B80170,
- 0xFFFFFFEE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8D7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00BC0179,
- 0xFFFFFFEF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8E7B59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C10183,
- 0xFFFFFFF0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8E7B5A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C7018E,
- 0xFFFFFFF1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8E7B5A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00CC0199,
- 0xFFFFFFF2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7C5A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00D201A5,
- 0xFFFFFFF3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7C5B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00D901B2,
- 0xFFFFFFF4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7C5B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00E001C0,
- 0xFFFFFFF5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7D5B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00E701CE,
- 0xFFFFFFF6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7D5C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00EE01DD,
- 0xFFFFFFF7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7E5C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00F701EE,
- 0xFFFFFFF8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7E5C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00FF01FF,
- 0xFFFFFFF9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7F5D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01080211,
- 0xFFFFFFFA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7F5D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01120225,
- 0xFFFFFFFB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F885E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x011C0239,
- 0xFFFFFFFC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F885E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01280250,
- 0xFFFFFFFD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F885F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01340268,
- 0xFFFFFFFE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F8968, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01400281,
- 0xFFFFFFFF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F8968, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x014E029C,
-};
-
-const unsigned int intel_vp9_costlut_p[4096] = {
- 0x040C2400, 0x00000010, 0x00010001, 0x00010000, 0x00010000, 0x00020002, 0x00030002, 0x00040003, 0x02020100, 0x04030302, 0x39070402, 0x6F6F0103, 0x00010001, 0x00000000, 0x00000004, 0x00010004,
- 0x08184801, 0x00000001, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, 0x04030200, 0x08070605, 0x490D0903, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x00020008,
- 0x08184802, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, 0x04030200, 0x08070605, 0x490D0903, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x00020008,
- 0x091B5103, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, 0x04030200, 0x08070605, 0x4A0F0A04, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x00020009,
- 0x0A1E5A04, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, 0x04030200, 0x08070605, 0x4B180B04, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x0002000A,
- 0x0B216305, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, 0x04030200, 0x08070605, 0x4D190C04, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x0002000B,
- 0x0C246C06, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, 0x06050400, 0x0C0A0807, 0x4E1A0D05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000C,
- 0x0C246C07, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, 0x06050400, 0x0C0A0807, 0x4E1A0D05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000C,
- 0x0D277508, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, 0x06050400, 0x0C0A0807, 0x4F1B0E05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000D,
- 0x0E2A7E09, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, 0x06050400, 0x0C0A0807, 0x581C0F05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000E,
- 0x0F2D870A, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, 0x06050400, 0x0C0A0807, 0x591D1806, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000F,
- 0x1030900B, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, 0x08060500, 0x180D0B0A, 0x591D1906, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040010,
- 0x1133990C, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, 0x08060500, 0x180D0B0A, 0x5A1E1A07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040011,
- 0x1236A20D, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, 0x08060500, 0x180D0B0A, 0x5A1F1A07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040012,
- 0x1339AB0E, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, 0x08060500, 0x180D0B0A, 0x5B281B07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040013,
- 0x1339AB0F, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, 0x08060500, 0x180D0B0A, 0x5B281B07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040013,
- 0x143CB410, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011, 0x0A080600, 0x1A190E0C, 0x5B281B08, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050014,
- 0x153FBD11, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011, 0x0A080600, 0x1A190E0C, 0x5C291C08, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050015,
- 0x1642C612, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011, 0x0A080600, 0x1A190E0C, 0x5D291C09, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050016,
- 0x1745CF13, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011, 0x0A080600, 0x1A190E0C, 0x5D2A1D09, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050017,
- 0x1848D814, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, 0x0C090700, 0x1C1A190F, 0x5E2A1D09, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x00060018,
- 0x194BE115, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, 0x0C090700, 0x1C1A190F, 0x5E2A1E0A, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x00060019,
- 0x1A4EEA16, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, 0x0C090700, 0x1C1A190F, 0x5F2B1E0A, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x0006001A,
- 0x1A4EEA17, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, 0x0C090700, 0x1C1A190F, 0x5F2B1E0A, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x0006001A,
- 0x1B51F318, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, 0x0C090700, 0x1C1A190F, 0x5F2B1F0B, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x0006001B,
- 0x1C54FC19, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017, 0x0E0B0800, 0x1E1C1A19, 0x682C280B, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001C,
- 0x1D57FF1A, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017, 0x0E0B0800, 0x1E1C1A19, 0x682C280B, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001D,
- 0x1E5AFF1B, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017, 0x0E0B0800, 0x1E1C1A19, 0x692C280C, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001E,
- 0x1F5DFF1C, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017, 0x0E0B0800, 0x1E1C1A19, 0x692D290C, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001F,
- 0x2060FF1D, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, 0x180D0900, 0x281E1C1A, 0x692D290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080020,
- 0x2060FF1E, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, 0x180D0900, 0x281E1C1A, 0x692D290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080020,
- 0x2163FF1F, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, 0x180D0900, 0x281E1C1A, 0x692E290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080021,
- 0x2266FF20, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, 0x180D0900, 0x281E1C1A, 0x6A2E290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080022,
- 0x2369FF21, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, 0x180D0900, 0x281E1C1A, 0x6A2E2A0E, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080023,
- 0x246CFF22, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, 0x190E0B00, 0x291F1D1B, 0x6A2F2A0E, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090024,
- 0x256FFF23, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, 0x190E0B00, 0x291F1D1B, 0x6B2F2A0E, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090025,
- 0x2672FF24, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, 0x190E0B00, 0x291F1D1B, 0x6B382B0F, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090026,
- 0x2672FF25, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, 0x190E0B00, 0x291F1D1B, 0x6B382B0F, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090026,
- 0x2775FF26, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, 0x190E0B00, 0x291F1D1B, 0x6B382B0F, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090027,
- 0x2878FF27, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, 0x1A180C00, 0x2A281E1C, 0x6B382B18, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A0028,
- 0x297BFF28, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, 0x1A180C00, 0x2A281E1C, 0x6C382B18, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A0029,
- 0x2A7EFF29, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, 0x1A180C00, 0x2A281E1C, 0x6C392C18, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A002A,
- 0x2B81FF2A, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, 0x1A180C00, 0x2A281E1C, 0x6C392C19, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A002B,
- 0x2B81FF2B, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, 0x1A180C00, 0x2A281E1C, 0x6C392C19, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A002B,
- 0x2C84FF2C, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025, 0x1B190D00, 0x2B29281E, 0x6D392C19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002C,
- 0x2D87FF2D, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025, 0x1B190D00, 0x2B29281E, 0x6D392C19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002D,
- 0x2E8AFF2E, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025, 0x1B190D00, 0x2B29281E, 0x6D392D19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002E,
- 0x2F8DFF2F, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025, 0x1B190D00, 0x2B29281E, 0x6D3A2D19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002F,
- 0x3090FF30, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, 0x1C1A0E00, 0x2C2A291F, 0x6E3A2D1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0030,
- 0x3090FF31, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, 0x1C1A0E00, 0x2C2A291F, 0x6E3A2D1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0030,
- 0x3193FF32, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, 0x1C1A0E00, 0x2C2A291F, 0x6E3A2E1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0031,
- 0x3296FF33, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, 0x1C1A0E00, 0x2C2A291F, 0x6E3A2E1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0032,
- 0x3399FF34, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, 0x1C1A0E00, 0x2C2A291F, 0x6F3B2E1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0033,
- 0x349CFF35, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, 0x1D1A0F00, 0x2D2B2928, 0x6F3B2E1A, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0034,
- 0x359FFF36, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, 0x1D1A0F00, 0x2D2B2928, 0x6F3B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0035,
- 0x359FFF37, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, 0x1D1A0F00, 0x2D2B2928, 0x6F3B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0035,
- 0x36A2FF38, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, 0x1D1A0F00, 0x2D2B2928, 0x6F3B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0036,
- 0x37A5FF39, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, 0x1D1A0F00, 0x2D2B2928, 0x783B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0037,
- 0x38A8FF3A, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, 0x1E1B1800, 0x2E2C2A29, 0x783C2F1B, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E0038,
- 0x39ABFF3B, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, 0x1E1B1800, 0x2E2C2A29, 0x783C381B, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E0039,
- 0x39ABFF3C, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, 0x1E1B1800, 0x2E2C2A29, 0x783C381B, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E0039,
- 0x3AAEFF3D, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, 0x1E1B1800, 0x2E2C2A29, 0x783C381C, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E003A,
- 0x3BB1FF3E, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, 0x1E1B1800, 0x2E2C2A29, 0x783C381C, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E003B,
- 0x3CB4FF3F, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, 0x1F1C1900, 0x2F2D2B29, 0x793C381C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003C,
- 0x3DB7FF40, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, 0x1F1C1900, 0x2F2D2B29, 0x793D381C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003D,
- 0x3EBAFF41, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, 0x1F1C1900, 0x2F2D2B29, 0x793D391C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003E,
- 0x3EBAFF42, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, 0x1F1C1900, 0x2F2D2B29, 0x793D391C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003E,
- 0x3FBDFF43, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, 0x1F1C1900, 0x2F2D2B29, 0x793D391D, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003F,
- 0x40C0FF44, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, 0x281D1A00, 0x382D2B2A, 0x793D391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100040,
- 0x41C3FF45, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, 0x281D1A00, 0x382D2B2A, 0x793D391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100041,
- 0x42C6FF46, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, 0x281D1A00, 0x382D2B2A, 0x793E391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100042,
- 0x42C6FF47, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, 0x281D1A00, 0x382D2B2A, 0x793E391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100042,
- 0x43C9FF48, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, 0x281D1A00, 0x382D2B2A, 0x7A3E391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100043,
- 0x44CCFF49, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, 0x291E1A00, 0x382E2C2A, 0x7A3E391E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110044,
- 0x45CFFF4A, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, 0x291E1A00, 0x382E2C2A, 0x7A3E391E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110045,
- 0x46D2FF4B, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, 0x291E1A00, 0x382E2C2A, 0x7A3E3A1E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110046,
- 0x46D2FF4C, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, 0x291E1A00, 0x382E2C2A, 0x7A3E3A1E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110046,
- 0x47D5FF4D, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, 0x291E1A00, 0x382E2C2A, 0x7A3F3A1E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110047,
- 0x48D8FF4E, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, 0x291E1B00, 0x392F2D2B, 0x7A3F3A1E, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x00120048,
- 0x49DBFF4F, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, 0x291E1B00, 0x392F2D2B, 0x7A3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x00120049,
- 0x4ADEFF50, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, 0x291E1B00, 0x392F2D2B, 0x7B3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x0012004A,
- 0x4ADEFF51, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, 0x291E1B00, 0x392F2D2B, 0x7B3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x0012004A,
- 0x4BE1FF52, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, 0x291E1B00, 0x392F2D2B, 0x7B3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x0012004B,
- 0x4CE4FF53, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, 0x2A1F1B00, 0x39382D2C, 0x7B483A1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004C,
- 0x4DE7FF54, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, 0x2A1F1B00, 0x39382D2C, 0x7B483B1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004D,
- 0x4EEAFF55, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, 0x2A1F1B00, 0x39382D2C, 0x7B483B1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004E,
- 0x4EEAFF56, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, 0x2A1F1B00, 0x39382D2C, 0x7B483B1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004E,
- 0x4FEDFF57, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, 0x2A1F1B00, 0x39382D2C, 0x7B483B28, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004F,
- 0x50F0FF58, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, 0x2A281C00, 0x3A382E2C, 0x7B483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140050,
- 0x51F3FF59, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, 0x2A281C00, 0x3A382E2C, 0x7C483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140051,
- 0x51F3FF5A, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, 0x2A281C00, 0x3A382E2C, 0x7C483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140051,
- 0x52F6FF5B, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, 0x2A281C00, 0x3A382E2C, 0x7C483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140052,
- 0x53F9FF5C, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, 0x2A281C00, 0x3A382E2C, 0x7C493B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140053,
- 0x54FCFF5D, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046, 0x2B281D00, 0x3A392F2D, 0x7C493C28, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150054,
- 0x55FFFF5E, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046, 0x2B281D00, 0x3A392F2D, 0x7C493C28, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150055,
- 0x55FFFF5F, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046, 0x2B281D00, 0x3A392F2D, 0x7C493C28, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150055,
- 0x57FFFF60, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046, 0x2B281D00, 0x3A392F2D, 0x7C493C29, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150057,
- 0x58FFFF61, 0x00000000, 0x0011001A, 0x00150009, 0x001A0000, 0x002D0022, 0x003E0035, 0x00560049, 0x2B291D00, 0x3B39382D, 0x7D493C29, 0x6F6F1F2F, 0x001B000C, 0x00000000, 0x00000056, 0x00160058,
- 0x5AFFFF62, 0x00000000, 0x0011001A, 0x00150009, 0x001A0000, 0x002D0022, 0x003E0035, 0x00560049, 0x2B291D00, 0x3B39382D, 0x7D493C29, 0x6F6F1F2F, 0x001B000C, 0x00000000, 0x00000056, 0x0016005A,
- 0x5CFFFF63, 0x00000000, 0x0012001B, 0x00160009, 0x001B0000, 0x002F0024, 0x00410038, 0x005A004C, 0x2C291E00, 0x3B3A382E, 0x7D493D29, 0x6F6F2838, 0x001B000D, 0x00000000, 0x0000005A, 0x0017005C,
- 0x5DFFFF64, 0x00000000, 0x0012001B, 0x00160009, 0x001B0000, 0x002F0024, 0x00410038, 0x005A004C, 0x2C291E00, 0x3B3A382E, 0x7D4A3D29, 0x6F6F2838, 0x001B000D, 0x00000000, 0x0000005A, 0x0017005D,
- 0x5FFFFF65, 0x00000000, 0x0012001B, 0x00160009, 0x001B0000, 0x002F0024, 0x00410038, 0x005A004C, 0x2C291E00, 0x3B3A382E, 0x7E4A3D29, 0x6F6F2838, 0x001B000D, 0x00000000, 0x0000005A, 0x0017005F,
- 0x60FFFF66, 0x00000000, 0x0013001C, 0x00170009, 0x001C0000, 0x00310026, 0x0044003A, 0x005E0050, 0x2C2A1E00, 0x3C3A392F, 0x7E4A3D2A, 0x6F6F2838, 0x001C000D, 0x00000000, 0x0000005E, 0x00180060,
- 0x62FFFF67, 0x00000000, 0x0013001C, 0x00170009, 0x001C0000, 0x00310026, 0x0044003A, 0x005E0050, 0x2C2A1E00, 0x3C3A392F, 0x7E4A3D2A, 0x6F6F2838, 0x001C000D, 0x00000000, 0x0000005E, 0x00180062,
- 0x63FFFF68, 0x00000000, 0x0013001C, 0x00170009, 0x001C0000, 0x00310026, 0x0044003A, 0x005E0050, 0x2C2A1E00, 0x3C3A392F, 0x7E4A3E2A, 0x6F6F2838, 0x001C000D, 0x00000000, 0x0000005E, 0x00180063,
- 0x65FFFF69, 0x00000000, 0x0014001D, 0x0018000A, 0x001D0000, 0x00330027, 0x0046003D, 0x00620053, 0x2D2A1F00, 0x3C3A392F, 0x7E4A3E2A, 0x6F6F2939, 0x001C000E, 0x00000000, 0x00000062, 0x00190065,
- 0x66FFFF6A, 0x00000000, 0x0014001D, 0x0018000A, 0x001D0000, 0x00330027, 0x0046003D, 0x00620053, 0x2D2A1F00, 0x3C3A392F, 0x7E4A3E2A, 0x6F6F2939, 0x001C000E, 0x00000000, 0x00000062, 0x00190066,
- 0x68FFFF6B, 0x00000000, 0x0014001E, 0x0019000A, 0x001E0000, 0x00350029, 0x0049003F, 0x00660056, 0x2D2A1F00, 0x3D3B3938, 0x7F4B3E2A, 0x6F6F2939, 0x001D000E, 0x00000000, 0x00000066, 0x001A0068,
- 0x69FFFF6C, 0x00000000, 0x0014001E, 0x0019000A, 0x001E0000, 0x00350029, 0x0049003F, 0x00660056, 0x2D2A1F00, 0x3D3B3938, 0x7F4B3E2A, 0x6F6F2939, 0x001D000E, 0x00000000, 0x00000066, 0x001A0069,
- 0x6BFFFF6D, 0x00000000, 0x0014001E, 0x0019000A, 0x001E0000, 0x00350029, 0x0049003F, 0x00660056, 0x2D2A1F00, 0x3D3B3938, 0x7F4B3F2B, 0x6F6F2939, 0x001D000E, 0x00000000, 0x00000066, 0x001A006B,
- 0x6CFFFF6E, 0x00000000, 0x00150020, 0x001A000B, 0x00200000, 0x0037002A, 0x004C0041, 0x0069005A, 0x2E2B2800, 0x3D3B3A38, 0x7F4B3F2B, 0x6F6F2939, 0x001D000F, 0x00000000, 0x00000069, 0x001B006C,
- 0x6EFFFF6F, 0x00000000, 0x00150020, 0x001A000B, 0x00200000, 0x0037002A, 0x004C0041, 0x0069005A, 0x2E2B2800, 0x3D3B3A38, 0x884B3F2B, 0x6F6F2939, 0x001D000F, 0x00000000, 0x00000069, 0x001B006E,
- 0x6FFFFF70, 0x00000000, 0x00150020, 0x001A000B, 0x00200000, 0x0037002A, 0x004C0041, 0x0069005A, 0x2E2B2800, 0x3D3B3A38, 0x884B3F2B, 0x6F6F2939, 0x001D000F, 0x00000000, 0x00000069, 0x001B006F,
- 0x71FFFF71, 0x00000000, 0x00160021, 0x001B000B, 0x00210000, 0x0039002C, 0x004F0044, 0x006D005D, 0x2E2B2800, 0x3E3C3A39, 0x884C482B, 0x6F6F2A3A, 0x001E000F, 0x00000000, 0x0000006D, 0x001C0071,
- 0x72FFFF72, 0x00000000, 0x00160021, 0x001B000B, 0x00210000, 0x0039002C, 0x004F0044, 0x006D005D, 0x2E2B2800, 0x3E3C3A39, 0x884C482B, 0x6F6F2A3A, 0x001E000F, 0x00000000, 0x0000006D, 0x001C0072,
- 0x74FFFF73, 0x00000000, 0x00170022, 0x001C000B, 0x00220000, 0x003B002D, 0x00520046, 0x00710060, 0x2F2B2900, 0x3E3C3A39, 0x884C482B, 0x6F6F2A3A, 0x001E0018, 0x00000000, 0x00000071, 0x001D0074,
- 0x75FFFF74, 0x00000000, 0x00170022, 0x001C000B, 0x00220000, 0x003B002D, 0x00520046, 0x00710060, 0x2F2B2900, 0x3E3C3A39, 0x884C482C, 0x6F6F2A3A, 0x001E0018, 0x00000000, 0x00000071, 0x001D0075,
- 0x76FFFF75, 0x00000000, 0x00170022, 0x001C000B, 0x00220000, 0x003B002D, 0x00520046, 0x00710060, 0x2F2B2900, 0x3E3C3A39, 0x884C482C, 0x6F6F2A3A, 0x001E0018, 0x00000000, 0x00000071, 0x001D0076,
- 0x78FFFF76, 0x00000000, 0x00170023, 0x001D000C, 0x00230000, 0x003D002F, 0x00540049, 0x00750064, 0x2F2C2900, 0x3F3D3B39, 0x894C482C, 0x6F6F2A3A, 0x001F0018, 0x00000000, 0x00000075, 0x001E0078,
- 0x79FFFF77, 0x00000000, 0x00170023, 0x001D000C, 0x00230000, 0x003D002F, 0x00540049, 0x00750064, 0x2F2C2900, 0x3F3D3B39, 0x894C482C, 0x6F6F2A3A, 0x001F0018, 0x00000000, 0x00000075, 0x001E0079,
- 0x7BFFFF78, 0x00000000, 0x00170023, 0x001D000C, 0x00230000, 0x003D002F, 0x00540049, 0x00750064, 0x2F2C2900, 0x3F3D3B39, 0x894D482C, 0x6F6F2A3A, 0x001F0018, 0x00000000, 0x00000075, 0x001E007B,
- 0x7DFFFF79, 0x00000000, 0x00180024, 0x001E000C, 0x00240000, 0x003F0030, 0x0057004B, 0x00790067, 0x382C2900, 0x3F3D3B39, 0x894D492C, 0x6F6F2B3B, 0x001F0019, 0x00000000, 0x00000079, 0x001F007D,
- 0x7FFFFF7A, 0x00000000, 0x00180024, 0x001E000C, 0x00240000, 0x003F0030, 0x0057004B, 0x00790067, 0x382C2900, 0x3F3D3B39, 0x894D492D, 0x6F6F2B3B, 0x001F0019, 0x00000000, 0x00000079, 0x001F007F,
- 0x81FFFF7B, 0x00000000, 0x00190026, 0x001F000D, 0x00260000, 0x00410032, 0x005A004E, 0x007D006A, 0x382D2A00, 0x483D3B3A, 0x894D492D, 0x6F6F2B3B, 0x00280019, 0x00000000, 0x0000007D, 0x00200081,
- 0x83FFFF7C, 0x00000000, 0x00190026, 0x001F000D, 0x00260000, 0x00410032, 0x005A004E, 0x007D006A, 0x382D2A00, 0x483D3B3A, 0x894D492D, 0x6F6F2B3B, 0x00280019, 0x00000000, 0x0000007D, 0x00200083,
- 0x86FFFF7D, 0x00000000, 0x001A0027, 0x0020000D, 0x00270000, 0x00430034, 0x005D0050, 0x0081006E, 0x382D2A00, 0x483E3C3A, 0x8A4E492D, 0x6F6F2B3B, 0x00280019, 0x00000000, 0x00000081, 0x00210086,
- 0x88FFFF7E, 0x00000000, 0x001B0028, 0x0021000D, 0x00280000, 0x00450035, 0x00600052, 0x00850071, 0x392D2A00, 0x483E3C3A, 0x8A4E492D, 0x6F6F2C3C, 0x0028001A, 0x00000000, 0x00000085, 0x00220088,
- 0x8AFFFF7F, 0x00000000, 0x001B0028, 0x0021000D, 0x00280000, 0x00450035, 0x00600052, 0x00850071, 0x392D2A00, 0x483E3C3A, 0x8A4E492E, 0x6F6F2C3C, 0x0028001A, 0x00000000, 0x00000085, 0x0022008A,
- 0x8CFFFF80, 0x00000000, 0x001B0029, 0x0022000E, 0x00290000, 0x00470037, 0x00620055, 0x00890074, 0x392E2A00, 0x493F3C3B, 0x8A4E4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x00000089, 0x0023008C,
- 0x8EFFFF81, 0x00000000, 0x001B0029, 0x0022000E, 0x00290000, 0x00470037, 0x00620055, 0x00890074, 0x392E2A00, 0x493F3C3B, 0x8A4F4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x00000089, 0x0023008E,
- 0x90FFFF82, 0x00000000, 0x001C002A, 0x0023000E, 0x002A0000, 0x00490038, 0x00650057, 0x008D0078, 0x392E2B00, 0x493F3D3B, 0x8A4F4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x0000008D, 0x00240090,
- 0x92FFFF83, 0x00000000, 0x001C002A, 0x0023000E, 0x002A0000, 0x00490038, 0x00650057, 0x008D0078, 0x392E2B00, 0x493F3D3B, 0x8A4F4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x0000008D, 0x00240092,
- 0x94FFFF84, 0x00000000, 0x001D002B, 0x0024000E, 0x002B0000, 0x004B003A, 0x0068005A, 0x0091007B, 0x392F2B00, 0x493F3D3B, 0x8B4F4A2F, 0x6F6F2D3D, 0x0029001A, 0x00000000, 0x00000091, 0x00250094,
- 0x96FFFF85, 0x00000000, 0x001D002B, 0x0024000E, 0x002B0000, 0x004B003A, 0x0068005A, 0x0091007B, 0x392F2B00, 0x493F3D3B, 0x8B4F4A2F, 0x6F6F2D3D, 0x0029001A, 0x00000000, 0x00000091, 0x00250096,
- 0x98FFFF86, 0x00000000, 0x001E002D, 0x0025000F, 0x002D0000, 0x004D003B, 0x006B005C, 0x0094007E, 0x3A2F2B00, 0x49483D3C, 0x8B584A2F, 0x6F6F2D3D, 0x0029001B, 0x00000000, 0x00000094, 0x00260098,
- 0x9AFFFF87, 0x00000000, 0x001E002D, 0x0025000F, 0x002D0000, 0x004D003B, 0x006B005C, 0x0094007E, 0x3A2F2B00, 0x49483D3C, 0x8B584B2F, 0x6F6F2D3D, 0x0029001B, 0x00000000, 0x00000094, 0x0026009A,
- 0x9CFFFF88, 0x00000000, 0x001E002E, 0x0026000F, 0x002E0000, 0x004F003D, 0x006E005E, 0x00980081, 0x3A2F2C00, 0x4A483E3C, 0x8B584B2F, 0x6F6F2D3D, 0x002A001B, 0x00000000, 0x00000098, 0x0027009C,
- 0x9EFFFF89, 0x00000000, 0x001E002E, 0x0026000F, 0x002E0000, 0x004F003D, 0x006E005E, 0x00980081, 0x3A2F2C00, 0x4A483E3C, 0x8B584B38, 0x6F6F2D3D, 0x002A001B, 0x00000000, 0x00000098, 0x0027009E,
- 0xA1FFFF8A, 0x00000000, 0x001F002F, 0x00270010, 0x002F0000, 0x0051003F, 0x00710061, 0x009C0085, 0x3A382C00, 0x4A483E3C, 0x8B584B38, 0x6F6F2E3E, 0x002A001B, 0x00000000, 0x0000009C, 0x002800A1,
- 0xA4FFFF8B, 0x00000000, 0x00200030, 0x00280010, 0x00300000, 0x00530040, 0x00730063, 0x00A00088, 0x3A382C00, 0x4A493E3C, 0x8C584B38, 0x6F6F2E3E, 0x002A001B, 0x00000000, 0x000000A0, 0x002900A4,
- 0xA6FFFF8C, 0x00000000, 0x00200030, 0x00280010, 0x00300000, 0x00530040, 0x00730063, 0x00A00088, 0x3A382C00, 0x4A493E3C, 0x8C594B38, 0x6F6F2E3E, 0x002A001B, 0x00000000, 0x000000A0, 0x002900A6,
- 0xA9FFFF8D, 0x00000000, 0x00210031, 0x00290010, 0x00310000, 0x00550042, 0x00760066, 0x00A4008B, 0x3B382C00, 0x4A493F3D, 0x8C594C38, 0x6F6F2E3E, 0x002A001C, 0x00000000, 0x000000A4, 0x002A00A9,
- 0xACFFFF8E, 0x00000000, 0x00220032, 0x002A0011, 0x00320000, 0x00570043, 0x00790068, 0x00A8008F, 0x3B382D00, 0x4B493F3D, 0x8C594C38, 0x6F6F2F3F, 0x002B001C, 0x00000000, 0x000000A8, 0x002B00AC,
- 0xAEFFFF8F, 0x00000000, 0x00220032, 0x002A0011, 0x00320000, 0x00570043, 0x00790068, 0x00A8008F, 0x3B382D00, 0x4B493F3D, 0x8C594C39, 0x6F6F2F3F, 0x002B001C, 0x00000000, 0x000000A8, 0x002B00AE,
- 0xB1FFFF90, 0x00000000, 0x00220034, 0x002B0011, 0x00340000, 0x00590045, 0x007C006B, 0x00AC0092, 0x3B392D00, 0x4B49483D, 0x8D594C39, 0x6F6F2F3F, 0x002B001C, 0x00000000, 0x000000AC, 0x002C00B1,
- 0xB4FFFF91, 0x00000000, 0x00230035, 0x002C0012, 0x00350000, 0x005B0046, 0x007F006D, 0x00B00095, 0x3B392D00, 0x4B49483E, 0x8D594C39, 0x6F6F383F, 0x002B001D, 0x00000000, 0x000000B0, 0x002D00B4,
- 0xB6FFFF92, 0x00000000, 0x00230035, 0x002C0012, 0x00350000, 0x005B0046, 0x007F006D, 0x00B00095, 0x3B392D00, 0x4B49483E, 0x8D594C39, 0x6F6F383F, 0x002B001D, 0x00000000, 0x000000B0, 0x002D00B6,
- 0xB9FFFF93, 0x00000000, 0x00240036, 0x002D0012, 0x00360000, 0x005D0048, 0x0081006F, 0x00B40099, 0x3C392E00, 0x4B4A483E, 0x8D5A4D39, 0x6F6F3848, 0x002B001D, 0x00000000, 0x000000B4, 0x002E00B9,
- 0xBBFFFF94, 0x00000000, 0x00240036, 0x002D0012, 0x00360000, 0x005D0048, 0x0081006F, 0x00B40099, 0x3C392E00, 0x4B4A483E, 0x8D5A4D39, 0x6F6F3848, 0x002B001D, 0x00000000, 0x000000B4, 0x002E00BB,
- 0xBEFFFF95, 0x00000000, 0x00250037, 0x002E0012, 0x00370000, 0x005F0049, 0x00840072, 0x00B8009C, 0x3C392E00, 0x4C4A483E, 0x8E5A4D39, 0x6F6F3848, 0x002C001D, 0x00000000, 0x000000B8, 0x002F00BE,
- 0xC0FFFF96, 0x00000000, 0x00260038, 0x002F0013, 0x00380000, 0x0062004B, 0x00870074, 0x00BC009F, 0x3C392E00, 0x4C4A483F, 0x8E5A4D39, 0x6F6F3848, 0x002C001D, 0x00000000, 0x000000BC, 0x003000C0,
- 0xC3FFFF97, 0x00000000, 0x00260038, 0x002F0013, 0x00380000, 0x0062004B, 0x00870074, 0x00BC009F, 0x3C392E00, 0x4C4A483F, 0x8E5A4D3A, 0x6F6F3848, 0x002C001D, 0x00000000, 0x000000BC, 0x003000C3,
- 0xC7FFFF98, 0x00000000, 0x00260039, 0x00300013, 0x00390000, 0x0064004D, 0x008A0077, 0x00BF00A3, 0x3D3A2E00, 0x4C4A493F, 0x8E5A4E3A, 0x6F6F3848, 0x002C001E, 0x00000000, 0x000000BF, 0x003100C7,
- 0xCAFFFF99, 0x00000000, 0x0027003B, 0x00310014, 0x003B0000, 0x0066004E, 0x008D0079, 0x00C300A6, 0x3D3A2F00, 0x4C4A493F, 0x8E5A4E3A, 0x6F6F3949, 0x002C001E, 0x00000000, 0x000000C3, 0x003200CA,
- 0xCDFFFF9A, 0x00000000, 0x0028003C, 0x00320014, 0x003C0000, 0x00680050, 0x008F007C, 0x00C700A9, 0x3D3A2F00, 0x4C4B4948, 0x8F5B4E3A, 0x6F6F3949, 0x002D001E, 0x00000000, 0x000000C7, 0x003300CD,
- 0xD0FFFF9B, 0x00000000, 0x0029003D, 0x00330014, 0x003D0000, 0x006A0051, 0x0092007E, 0x00CB00AD, 0x3D3A2F00, 0x4D4B4948, 0x8F5B4E3A, 0x6F6F3949, 0x002D001E, 0x00000000, 0x000000CB, 0x003400D0,
- 0xD3FFFF9C, 0x00000000, 0x0029003D, 0x00330014, 0x003D0000, 0x006A0051, 0x0092007E, 0x00CB00AD, 0x3D3A2F00, 0x4D4B4948, 0x8F5B4E3A, 0x6F6F3949, 0x002D001E, 0x00000000, 0x000000CB, 0x003400D3,
- 0xD6FFFF9D, 0x00000000, 0x0029003E, 0x00340015, 0x003E0000, 0x006C0053, 0x00950080, 0x00CF00B0, 0x3E3A3800, 0x4D4B4948, 0x8F5B4F3B, 0x6F6F3949, 0x002D001F, 0x00000000, 0x000000CF, 0x003500D6,
- 0xD9FFFF9E, 0x00000000, 0x002A003F, 0x00350015, 0x003F0000, 0x006E0054, 0x00980083, 0x00D300B3, 0x3E3B3800, 0x4D4B4A48, 0x8F5B4F3B, 0x6F6F3949, 0x002D001F, 0x00000000, 0x000000D3, 0x003600D9,
- 0xDCFFFF9F, 0x00000000, 0x002B0040, 0x00360015, 0x00400000, 0x00700056, 0x009B0085, 0x00D700B7, 0x3E3B3800, 0x4D4B4A48, 0x8F5B4F3B, 0x6F6F3949, 0x002E001F, 0x00000000, 0x000000D7, 0x003700DC,
- 0xDFFFFFA0, 0x00000000, 0x002B0040, 0x00360015, 0x00400000, 0x00700056, 0x009B0085, 0x00D700B7, 0x3E3B3800, 0x4D4B4A48, 0x8F5B4F3B, 0x6F6F3949, 0x002E001F, 0x00000000, 0x000000D7, 0x003700DF,
- 0xE2FFFFA1, 0x00000000, 0x002C0042, 0x00370016, 0x00420000, 0x00720058, 0x009E0088, 0x00DB00BA, 0x3E3B3800, 0x4E4C4A49, 0x8F5C4F3B, 0x6F6F3A4A, 0x002E0028, 0x00000000, 0x000000DB, 0x003800E2,
- 0xE6FFFFA2, 0x00000000, 0x002D0043, 0x00380016, 0x00430000, 0x00740059, 0x00A0008A, 0x00DF00BD, 0x3F3B3800, 0x4E4C4A49, 0x8F5C583B, 0x6F6F3A4A, 0x002E0028, 0x00000000, 0x000000DF, 0x003900E6,
- 0xE9FFFFA3, 0x00000000, 0x002D0044, 0x00390017, 0x00440000, 0x0076005B, 0x00A3008C, 0x00E300C1, 0x3F3B3900, 0x4E4C4A49, 0x8F5C583B, 0x6F6F3A4A, 0x002E0028, 0x00000000, 0x000000E3, 0x003A00E9,
- 0xEDFFFFA4, 0x00000000, 0x002E0045, 0x003A0017, 0x00450000, 0x0078005C, 0x00A6008F, 0x00E600C4, 0x3F3C3900, 0x4E4C4A49, 0x8F5C583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000E6, 0x003B00ED,
- 0xF0FFFFA5, 0x00000000, 0x002F0046, 0x003B0017, 0x00460000, 0x007A005E, 0x00A90091, 0x00EA00C7, 0x3F3C3900, 0x4F4C4B49, 0x8F5C583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000EA, 0x003C00F0,
- 0xF3FFFFA6, 0x00000000, 0x002F0046, 0x003B0017, 0x00460000, 0x007A005E, 0x00A90091, 0x00EA00C7, 0x3F3C3900, 0x4F4C4B49, 0x8F5C583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000EA, 0x003C00F3,
- 0xF7FFFFA7, 0x00000000, 0x00300047, 0x003C0018, 0x00470000, 0x007C005F, 0x00AC0094, 0x00EE00CB, 0x483C3900, 0x4F4D4B49, 0x8F5D583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000EE, 0x003D00F7,
- 0xFAFFFFA8, 0x00000000, 0x00300049, 0x003D0018, 0x00490000, 0x007E0061, 0x00AE0096, 0x00F200CE, 0x483C3900, 0x4F4D4B49, 0x8F5D593C, 0x6F6F3B4B, 0x002F0029, 0x00000000, 0x000000F2, 0x003E00FA,
- 0xFDFFFFA9, 0x00000000, 0x0031004A, 0x003E0019, 0x004A0000, 0x00800062, 0x00B10099, 0x00F600D1, 0x483C3900, 0x4F4D4B4A, 0x8F5D593C, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x000000F6, 0x003F00FD,
- 0xFFFFFFAA, 0x00000000, 0x0032004B, 0x003F0019, 0x004B0000, 0x00820064, 0x00B4009B, 0x00FA00D5, 0x483D3900, 0x584D4B4A, 0x8F5D593D, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x000000FA, 0x00400101,
- 0xFFFFFFAB, 0x00000000, 0x0033004C, 0x003F0019, 0x004C0000, 0x00840066, 0x00B7009D, 0x00FE00D8, 0x483D3A00, 0x584E4B4A, 0x8F5D593D, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x000000FE, 0x00410105,
- 0xFFFFFFAC, 0x00000000, 0x0034004D, 0x0040001A, 0x004D0000, 0x00860067, 0x00BA00A0, 0x010200DB, 0x483D3A00, 0x584E4C4A, 0x8F5E593D, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x00000102, 0x00420109,
- 0xFFFFFFAD, 0x00000000, 0x0034004F, 0x0041001A, 0x004F0000, 0x00880069, 0x00BC00A2, 0x010600DE, 0x493D3A00, 0x584E4C4A, 0x8F5E593D, 0x6F6F3C4B, 0x00380029, 0x00000000, 0x00000106, 0x0043010D,
- 0xFFFFFFAE, 0x00000000, 0x00350050, 0x0042001B, 0x00500000, 0x008A006A, 0x00BF00A5, 0x010A00E2, 0x493D3A00, 0x584E4C4A, 0x8F5E593D, 0x6F6F3C4C, 0x00380029, 0x00000000, 0x0000010A, 0x00440110,
- 0xFFFFFFAF, 0x00000000, 0x00360051, 0x0043001B, 0x00510000, 0x008C006C, 0x00C200A7, 0x010E00E5, 0x493E3A00, 0x584E4C4A, 0x8F5E593E, 0x6F6F3C4C, 0x0038002A, 0x00000000, 0x0000010E, 0x00450114,
- 0xFFFFFFB0, 0x00000000, 0x00370052, 0x0044001B, 0x00520000, 0x008E006D, 0x00C500AA, 0x011100E8, 0x493E3A00, 0x594F4C4B, 0x8F5E5A3E, 0x6F6F3C4C, 0x0039002A, 0x00000000, 0x00000111, 0x00460118,
- 0xFFFFFFB1, 0x00000000, 0x00370053, 0x0045001C, 0x00530000, 0x0090006F, 0x00C800AC, 0x011500EC, 0x493E3A00, 0x594F4D4B, 0x8F5F5A3E, 0x6F6F3C4C, 0x0039002A, 0x00000000, 0x00000115, 0x0047011C,
- 0xFFFFFFB2, 0x00000000, 0x00380054, 0x0046001C, 0x00540000, 0x00920071, 0x00CB00AE, 0x011900EF, 0x493E3B00, 0x594F4D4B, 0x8F5F5A3E, 0x6F6F3C4C, 0x0039002A, 0x00000000, 0x00000119, 0x00480120,
- 0xFFFFFFB3, 0x00000000, 0x00390056, 0x0047001D, 0x00560000, 0x00940072, 0x00CD00B1, 0x011D00F2, 0x493E3B00, 0x594F4D4B, 0x8F5F5A3E, 0x6F6F3D4D, 0x0039002A, 0x00000000, 0x0000011D, 0x00490124,
- 0xFFFFFFB4, 0x00000000, 0x003A0057, 0x0048001D, 0x00570000, 0x00960074, 0x00D000B3, 0x012100F6, 0x493F3B00, 0x594F4D4B, 0x8F5F5A3F, 0x6F6F3D4D, 0x0039002A, 0x00000000, 0x00000121, 0x004A0128,
- 0xFFFFFFB5, 0x00000000, 0x003B0058, 0x0049001D, 0x00580000, 0x00980075, 0x00D300B6, 0x012500F9, 0x4A3F3B00, 0x59584D4B, 0x8F5F5A3F, 0x6F6F3D4D, 0x0039002A, 0x00000000, 0x00000125, 0x004B012C,
- 0xFFFFFFB6, 0x00000000, 0x003B0059, 0x004A001E, 0x00590000, 0x009A0077, 0x00D600B8, 0x012900FC, 0x4A3F3B00, 0x59584D4C, 0x8F685A3F, 0x6F6F3D4D, 0x0039002B, 0x00000000, 0x00000129, 0x004C0130,
- 0xFFFFFFB7, 0x00000000, 0x003C005A, 0x004B001E, 0x005A0000, 0x009C0078, 0x00D900BA, 0x012D0100, 0x4A3F3B00, 0x59584E4C, 0x8F685B3F, 0x6F6F3D4D, 0x0039002B, 0x00000000, 0x0000012D, 0x004D0135,
- 0xFFFFFFB8, 0x00000000, 0x003D005B, 0x004C001E, 0x005B0000, 0x009E007A, 0x00DB00BD, 0x01310103, 0x4A3F3B00, 0x5A584E4C, 0x8F685B3F, 0x6F6F3D4D, 0x003A002B, 0x00000000, 0x00000131, 0x004E0139,
- 0xFFFFFFB9, 0x00000000, 0x003E005D, 0x004D001F, 0x005D0000, 0x00A0007B, 0x00DE00BF, 0x01350106, 0x4A3F3C00, 0x5A584E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000135, 0x004F013D,
- 0xFFFFFFBA, 0x00000000, 0x003F005E, 0x004E001F, 0x005E0000, 0x00A3007D, 0x00E100C2, 0x0139010A, 0x4A483C00, 0x5A584E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000139, 0x00500142,
- 0xFFFFFFBB, 0x00000000, 0x003F005F, 0x004F0020, 0x005F0000, 0x00A5007F, 0x00E400C4, 0x013C010D, 0x4A483C00, 0x5A584E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x0000013C, 0x00510146,
- 0xFFFFFFBC, 0x00000000, 0x00400060, 0x00500020, 0x00600000, 0x00A70080, 0x00E700C7, 0x01400110, 0x4A483C00, 0x5A594E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000140, 0x0052014A,
- 0xFFFFFFBD, 0x00000000, 0x00410061, 0x00510020, 0x00610000, 0x00A90082, 0x00E900C9, 0x01440114, 0x4B483C00, 0x5A594F4D, 0x8F695B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000144, 0x0053014F,
- 0xFFFFFFBE, 0x00000000, 0x00420064, 0x00530021, 0x00640000, 0x00AD0085, 0x00EF00CE, 0x014C011A, 0x4B483D00, 0x5A594F4D, 0x8F695C48, 0x6F6F3F4F, 0x003A002C, 0x00000000, 0x0000014C, 0x00550154,
- 0xFFFFFFBF, 0x00000000, 0x00430065, 0x00540022, 0x00650000, 0x00AF0086, 0x00F200D0, 0x0150011E, 0x4B483D00, 0x5B594F4D, 0x8F695C48, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x00000150, 0x00560158,
- 0xFFFFFFC0, 0x00000000, 0x00440066, 0x00550022, 0x00660000, 0x00B10088, 0x00F500D3, 0x01540121, 0x4B493D00, 0x5B594F4D, 0x8F695C49, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x00000154, 0x0057015D,
- 0xFFFFFFC1, 0x00000000, 0x00450067, 0x00560022, 0x00670000, 0x00B3008A, 0x00F800D5, 0x01580124, 0x4B493D00, 0x5B59584D, 0x8F695C49, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x00000158, 0x00580162,
- 0xFFFFFFC2, 0x00000000, 0x00460068, 0x00570023, 0x00680000, 0x00B5008B, 0x00FA00D8, 0x015C0128, 0x4B493D00, 0x5B59584E, 0x8F695C49, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x0000015C, 0x00590167,
- 0xFFFFFFC3, 0x00000000, 0x0047006B, 0x00590024, 0x006B0000, 0x00B9008E, 0x010000DC, 0x0163012E, 0x4C493D00, 0x5B59584E, 0x8F695C49, 0x6F6F4858, 0x003B002D, 0x00000000, 0x00000163, 0x005B016C,
- 0xFFFFFFC4, 0x00000000, 0x0048006C, 0x005A0024, 0x006C0000, 0x00BB0090, 0x010300DF, 0x01670131, 0x4C493E00, 0x5B5A584E, 0x8F695D49, 0x6F6F4858, 0x003B002D, 0x00000000, 0x00000167, 0x005C0171,
- 0xFFFFFFC5, 0x00000000, 0x0049006D, 0x005B0024, 0x006D0000, 0x00BD0091, 0x010600E1, 0x016B0135, 0x4C493E00, 0x5B5A584E, 0x8F6A5D49, 0x6F6F4858, 0x003B002D, 0x00000000, 0x0000016B, 0x005D0176,
- 0xFFFFFFC6, 0x00000000, 0x0049006E, 0x005C0025, 0x006E0000, 0x00BF0093, 0x010800E4, 0x016F0138, 0x4C493E00, 0x5B5A584E, 0x8F6A5D49, 0x6F6F4858, 0x003C002D, 0x00000000, 0x0000016F, 0x005E017B,
- 0xFFFFFFC7, 0x00000000, 0x004B0071, 0x005E0026, 0x00710000, 0x00C30096, 0x010E00E9, 0x0177013F, 0x4C493E00, 0x5C5A584F, 0x8F6A5D49, 0x6F6F4858, 0x003C002D, 0x00000000, 0x00000177, 0x00600180,
- 0xFFFFFFC8, 0x00000000, 0x004C0072, 0x005F0026, 0x00720000, 0x00C50098, 0x011100EB, 0x017B0142, 0x4C4A3E00, 0x5C5A594F, 0x8F6A5D4A, 0x6F6F4858, 0x003C002D, 0x00000000, 0x0000017B, 0x00610185,
- 0xFFFFFFC9, 0x00000000, 0x004D0073, 0x00600026, 0x00730000, 0x00C70099, 0x011400ED, 0x017F0145, 0x4C4A3E00, 0x5C5A594F, 0x8F6A5E4A, 0x6F6F4858, 0x003C002E, 0x00000000, 0x0000017F, 0x0062018B,
- 0xFFFFFFCA, 0x00000000, 0x004E0075, 0x00620027, 0x00750000, 0x00CB009C, 0x011900F2, 0x0187014C, 0x4D4A3F00, 0x5C5A594F, 0x8F6A5E4A, 0x6F6F4959, 0x003C002E, 0x00000000, 0x00000187, 0x00640190,
- 0xFFFFFFCB, 0x00000000, 0x004F0076, 0x00630027, 0x00760000, 0x00CD009E, 0x011C00F5, 0x018B014F, 0x4D4A3F00, 0x5C5A594F, 0x8F6A5E4A, 0x6F6F4959, 0x003C002E, 0x00000000, 0x0000018B, 0x00650196,
- 0xFFFFFFCC, 0x00000000, 0x00500078, 0x00640028, 0x00780000, 0x00CF009F, 0x011F00F7, 0x018E0153, 0x4D4A3F00, 0x5C5B594F, 0x8F6B5E4A, 0x6F6F4959, 0x003D002E, 0x00000000, 0x0000018E, 0x0066019B,
- 0xFFFFFFCD, 0x00000000, 0x0051007A, 0x00660029, 0x007A0000, 0x00D300A3, 0x012500FC, 0x01960159, 0x4D4A3F00, 0x5D5B5958, 0x8F6B5E4A, 0x6F6F4959, 0x003D002E, 0x00000000, 0x00000196, 0x006801A1,
- 0xFFFFFFCE, 0x00000000, 0x0052007B, 0x00670029, 0x007B0000, 0x00D500A4, 0x012700FE, 0x019A015D, 0x4D4A3F00, 0x5D5B5958, 0x8F6B5E4A, 0x6F6F4959, 0x003D002E, 0x00000000, 0x0000019A, 0x006901A7,
- 0xFFFFFFCF, 0x00000000, 0x0054007D, 0x0068002A, 0x007D0000, 0x00D900A7, 0x012D0103, 0x01A20163, 0x4E4A4800, 0x5D5B5958, 0x8F6B5F4B, 0x6F6F4959, 0x003D002F, 0x00000000, 0x000001A2, 0x006B01AD,
- 0xFFFFFFD0, 0x00000000, 0x0054007F, 0x0069002A, 0x007F0000, 0x00DB00A9, 0x01300106, 0x01A60167, 0x4E4B4800, 0x5D5B5A58, 0x8F6B5F4B, 0x6F6F4959, 0x003D002F, 0x00000000, 0x000001A6, 0x006C01B3,
- 0xFFFFFFD1, 0x00000000, 0x00560081, 0x006B002B, 0x00810000, 0x00DF00AC, 0x0135010A, 0x01AE016D, 0x4E4B4800, 0x5D5B5A58, 0x8F6B5F4B, 0x6F6F4959, 0x003D002F, 0x00000000, 0x000001AE, 0x006E01B9,
- 0xFFFFFFD2, 0x00000000, 0x00570082, 0x006C002B, 0x00820000, 0x00E100AD, 0x0138010D, 0x01B20171, 0x4E4B4800, 0x5E5C5A58, 0x8F6B5F4B, 0x6F6F4A5A, 0x003E002F, 0x00000000, 0x000001B2, 0x006F01BF,
- 0xFFFFFFD3, 0x00000000, 0x00580084, 0x006E002C, 0x00840000, 0x00E600B1, 0x013E0112, 0x01B90177, 0x4E4B4800, 0x5E5C5A59, 0x8F6C684B, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001B9, 0x007101C6,
- 0xFFFFFFD4, 0x00000000, 0x005A0087, 0x0070002D, 0x00870000, 0x00EA00B4, 0x01430117, 0x01C1017E, 0x4F4B4800, 0x5E5C5A59, 0x8F6C684B, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001C1, 0x007301CD,
- 0xFFFFFFD5, 0x00000000, 0x005B0088, 0x0071002D, 0x00880000, 0x00EC00B5, 0x01460119, 0x01C50181, 0x4F4B4900, 0x5E5C5A59, 0x8F6C684B, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001C5, 0x007401D3,
- 0xFFFFFFD6, 0x00000000, 0x005C008A, 0x0073002E, 0x008A0000, 0x00F000B8, 0x014C011E, 0x01CD0188, 0x4F4C4900, 0x5E5C5A59, 0x8F6C684C, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001CD, 0x007601DB,
- 0xFFFFFFD7, 0x00000000, 0x005E008D, 0x0075002F, 0x008D0000, 0x00F400BC, 0x01520123, 0x01D5018E, 0x4F4C4900, 0x5F5C5B59, 0x8F6C684C, 0x6F6F4A5A, 0x003F0038, 0x00000000, 0x000001D5, 0x007801E2,
- 0xFFFFFFD8, 0x00000000, 0x005F008F, 0x00770030, 0x008F0000, 0x00F800BF, 0x01570127, 0x01DD0195, 0x584C4900, 0x5F5D5B59, 0x8F6D684C, 0x6F6F4A5A, 0x003F0038, 0x00000000, 0x000001DD, 0x007A01E9,
- 0xFFFFFFD9, 0x00000000, 0x00610091, 0x00790030, 0x00910000, 0x00FC00C2, 0x015D012C, 0x01E4019C, 0x584C4900, 0x5F5D5B59, 0x8F6D694C, 0x6F6F4B5B, 0x003F0039, 0x00000000, 0x000001E4, 0x007C01F1,
- 0xFFFFFFDA, 0x00000000, 0x00620094, 0x007B0031, 0x00940000, 0x010000C5, 0x01620131, 0x01EC01A2, 0x584C4900, 0x5F5D5B5A, 0x8F6D694C, 0x6F6F4B5B, 0x003F0039, 0x00000000, 0x000001EC, 0x007E01F9,
- 0xFFFFFFDB, 0x00000000, 0x00640096, 0x007D0032, 0x00960000, 0x010400C8, 0x01680136, 0x01F401A9, 0x584D4900, 0x685D5B5A, 0x8F6D694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x000001F4, 0x00800201,
- 0xFFFFFFDC, 0x00000000, 0x00660098, 0x007F0033, 0x00980000, 0x010800CB, 0x016E013B, 0x01FC01B0, 0x584D4A00, 0x685E5B5A, 0x8F6D694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x000001FC, 0x0082020A,
- 0xFFFFFFDD, 0x00000000, 0x0067009B, 0x00810034, 0x009B0000, 0x010C00CE, 0x01730140, 0x020401B6, 0x584D4A00, 0x685E5C5A, 0x8F6E694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x00000204, 0x00840212,
- 0xFFFFFFDE, 0x00000000, 0x0069009D, 0x00830034, 0x009D0000, 0x011000D1, 0x01790145, 0x020B01BD, 0x594D4A00, 0x685E5C5A, 0x8F6E694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x0000020B, 0x0086021B,
- 0xFFFFFFDF, 0x00000000, 0x006B00A1, 0x00860036, 0x00A10000, 0x011600D6, 0x0181014C, 0x021701C7, 0x594D4A00, 0x685E5C5A, 0x8F6E694D, 0x6F6F4C5C, 0x00480039, 0x00000000, 0x00000217, 0x00890225,
- 0xFFFFFFE0, 0x00000000, 0x006D00A3, 0x00880036, 0x00A30000, 0x011A00D9, 0x01870151, 0x021F01CE, 0x594E4A00, 0x685E5C5B, 0x8F6E6A4E, 0x6F6F4C5C, 0x0049003A, 0x00000000, 0x0000021F, 0x008B022F,
- 0xFFFFFFE1, 0x00000000, 0x006F00A6, 0x008B0037, 0x00A60000, 0x012000DE, 0x018F0158, 0x022B01D7, 0x594E4A00, 0x695F5C5B, 0x8F6F6A4E, 0x6F6F4C5C, 0x0049003A, 0x00000000, 0x0000022B, 0x008E0239,
- 0xFFFFFFE2, 0x00000000, 0x007100A9, 0x008D0038, 0x00A90000, 0x012500E1, 0x0195015D, 0x023301DE, 0x594E4B00, 0x695F5D5B, 0x8F6F6A4E, 0x6F6F4C5C, 0x0049003A, 0x00000000, 0x00000233, 0x00900243,
- 0xFFFFFFE3, 0x00000000, 0x007300AC, 0x00900039, 0x00AC0000, 0x012B00E6, 0x019D0164, 0x023E01E8, 0x594E4B00, 0x695F5D5B, 0x8F6F6A4E, 0x6F6F4D5D, 0x0049003A, 0x00000000, 0x0000023E, 0x0093024E,
- 0xFFFFFFE4, 0x00000000, 0x007500B0, 0x0092003B, 0x00B00000, 0x013100EA, 0x01A6016B, 0x024A01F2, 0x5A4F4B00, 0x69685D5B, 0x8F6F6A4F, 0x6F6F4D5D, 0x0049003A, 0x00000000, 0x0000024A, 0x0096025A,
- 0xFFFFFFE5, 0x00000000, 0x007800B3, 0x0095003C, 0x00B30000, 0x013700EF, 0x01AE0173, 0x025601FC, 0x5A4F4B00, 0x69685D5C, 0x8F786B4F, 0x6F6F4D5D, 0x0049003B, 0x00000000, 0x00000256, 0x00990266,
- 0xFFFFFFE6, 0x00000000, 0x007A00B7, 0x0098003D, 0x00B70000, 0x013D00F4, 0x01B7017A, 0x02610206, 0x5A4F4B00, 0x6A685E5C, 0x8F786B4F, 0x6F6F4D5D, 0x004A003B, 0x00000000, 0x00000261, 0x009C0272,
- 0xFFFFFFE7, 0x00000000, 0x007D00BC, 0x009C003F, 0x00BC0000, 0x014500FA, 0x01C20184, 0x02710213, 0x5A584C00, 0x6A685E5C, 0x8F786B58, 0x6F6F4E5E, 0x004A003B, 0x00000000, 0x00000271, 0x00A00280,
- 0xFFFFFFE8, 0x00000000, 0x007F00BF, 0x009F0040, 0x00BF0000, 0x014B00FF, 0x01CA018B, 0x027D021D, 0x5A584C00, 0x6A685E5C, 0x8F786B58, 0x6F6F4E5E, 0x004A003B, 0x00000000, 0x0000027D, 0x00A3028E,
- 0xFFFFFFE9, 0x00000000, 0x008200C4, 0x00A30041, 0x00C40000, 0x01530105, 0x01D60194, 0x028C022A, 0x5B584C00, 0x6A695F5D, 0x8F796B58, 0x6F6F4E5E, 0x004A003B, 0x00000000, 0x0000028C, 0x00A7029C,
- 0xFFFFFFEA, 0x00000000, 0x008600C8, 0x00A70043, 0x00C80000, 0x015B010B, 0x01E1019E, 0x029C0238, 0x5B584D00, 0x6A695F5D, 0x8F796C58, 0x6F6F4F5F, 0x004A003C, 0x00000000, 0x0000029C, 0x00AB02AC,
- 0xFFFFFFEB, 0x00000000, 0x008900CD, 0x00AB0044, 0x00CD0000, 0x01630111, 0x01EC01A8, 0x02AC0245, 0x5B594D00, 0x6B695F5D, 0x8F796C59, 0x6F6F4F5F, 0x004B003C, 0x00000000, 0x000002AC, 0x00AF02BC,
- 0xFFFFFFEC, 0x00000000, 0x008C00D2, 0x00AF0046, 0x00D20000, 0x016C0118, 0x01F701B2, 0x02BB0252, 0x5B594D00, 0x6B69685E, 0x8F796C59, 0x6F6F4F5F, 0x004B003C, 0x00000000, 0x000002BB, 0x00B302CD,
- 0xFFFFFFED, 0x00000000, 0x009000D8, 0x00B40048, 0x00D80000, 0x01760120, 0x020601BE, 0x02CF0263, 0x5C594E00, 0x6B6A685E, 0x8F796D59, 0x6F6F5868, 0x004B003D, 0x00000000, 0x000002CF, 0x00B802E0,
- 0xFFFFFFEE, 0x00000000, 0x009300DC, 0x00B80049, 0x00DC0000, 0x017E0126, 0x021101C7, 0x02DE0270, 0x5C594E00, 0x6B6A685E, 0x8F7A6D59, 0x6F6F5868, 0x004C003D, 0x00000000, 0x000002DE, 0x00BC02F3,
- 0xFFFFFFEF, 0x00000000, 0x009700E2, 0x00BC004B, 0x00E20000, 0x0188012E, 0x021F01D3, 0x02F20281, 0x5C594E00, 0x6C6A685F, 0x8F7A6D59, 0x6F6F5868, 0x004C003D, 0x00000000, 0x000002F2, 0x00C10307,
- 0xFFFFFFF0, 0x00000000, 0x009B00E9, 0x00C2004E, 0x00E90000, 0x01940137, 0x023001E2, 0x03090295, 0x5D5A4F00, 0x6C6A695F, 0x8F7A6E5A, 0x6F6F5969, 0x004C003E, 0x00000000, 0x00000309, 0x00C7031C,
- 0xFFFFFFF1, 0x00000000, 0x009F00EF, 0x00C70050, 0x00EF0000, 0x019E013F, 0x023E01EE, 0x031D02A5, 0x5D5A4F00, 0x6C6B695F, 0x8F7B6E5A, 0x6F6F5969, 0x004C003E, 0x00000000, 0x0000031D, 0x00CC0333,
- 0xFFFFFFF2, 0x00000000, 0x00A400F6, 0x00CD0052, 0x00F60000, 0x01AB0148, 0x024F01FD, 0x033402B9, 0x5D5A4F00, 0x6D6B6968, 0x8F7B6E5A, 0x6F6F5969, 0x004D003E, 0x00000000, 0x00000334, 0x00D2034B,
- 0xFFFFFFF3, 0x00000000, 0x00AA00FE, 0x00D40055, 0x00FE0000, 0x01B90153, 0x0262020E, 0x035002D1, 0x5E5B5800, 0x6D6B6A68, 0x8F7B6F5B, 0x6F6F5969, 0x004D003F, 0x00000000, 0x00000350, 0x00D90365,
- 0xFFFFFFF4, 0x00000000, 0x00AF0107, 0x00DB0058, 0x01070000, 0x01C7015E, 0x0276021F, 0x036B02E8, 0x5E5B5800, 0x6E6C6A68, 0x8F7B6F5B, 0x6F6F5A6A, 0x004E003F, 0x00000000, 0x0000036B, 0x00E00380,
- 0xFFFFFFF5, 0x00000000, 0x00B4010F, 0x00E2005A, 0x010F0000, 0x01D50169, 0x028A022F, 0x038602FF, 0x5F5B5800, 0x6E6C6A69, 0x8F7C785B, 0x6F6F5A6A, 0x004E0048, 0x00000000, 0x00000386, 0x00E7039D,
- 0xFFFFFFF6, 0x00000000, 0x00BA0117, 0x00E8005D, 0x01170000, 0x01E30174, 0x029D0240, 0x03A20316, 0x5F5C5900, 0x6F6C6A69, 0x8F7C785C, 0x6F6F5A6A, 0x004F0048, 0x00000000, 0x000003A2, 0x00EE03BB,
- 0xFFFFFFF7, 0x00000000, 0x00C10121, 0x00F10060, 0x01210000, 0x01F60182, 0x02B70256, 0x03C50334, 0x685C5900, 0x6F6D6B69, 0x8F7D785C, 0x6F6F5B6B, 0x004F0048, 0x00000000, 0x000003C5, 0x00F703DC,
- 0xFFFFFFF8, 0x00000000, 0x00C7012B, 0x00F90064, 0x012B0000, 0x0206018E, 0x02CD026A, 0x03E4034F, 0x685C5900, 0x6F6D6B6A, 0x8F7D795C, 0x6F6F5B6B, 0x00580049, 0x00000000, 0x000003E4, 0x00FF03FE,
- 0xFFFFFFF9, 0x00000000, 0x00CE0135, 0x01020067, 0x01350000, 0x0218019D, 0x02E7027F, 0x0407036D, 0x685D5A00, 0x6F6E6C6A, 0x8F7E795D, 0x6F6F5B6B, 0x00580049, 0x00000000, 0x00000407, 0x01080422,
- 0xFFFFFFFA, 0x00000000, 0x00D60141, 0x010C006B, 0x01410000, 0x022D01AC, 0x03030298, 0x042E038E, 0x695D5A00, 0x6F6E6C6A, 0x8F7E795D, 0x6F6F5C6C, 0x00580049, 0x00000000, 0x0000042E, 0x0112044A,
- 0xFFFFFFFB, 0x00000000, 0x00DE014D, 0x0115006F, 0x014D0000, 0x024101BC, 0x031F02B0, 0x045503AF, 0x695E5A00, 0x6F6F6C6B, 0x8F7F7A5E, 0x6F6F5C6C, 0x0059004A, 0x00000000, 0x00000455, 0x011C0473,
- 0xFFFFFFFC, 0x00000000, 0x00E7015B, 0x01210074, 0x015B0000, 0x025901CF, 0x034102CD, 0x048403D7, 0x695E5B00, 0x6F6F6D6B, 0x8F7F7A5E, 0x6F6F5D6D, 0x0059004A, 0x00000000, 0x00000484, 0x012804A0,
- 0xFFFFFFFD, 0x00000000, 0x00F10169, 0x012D0078, 0x01690000, 0x027201E1, 0x036202EA, 0x04B303FF, 0x6A5F5B00, 0x6F6F6E6C, 0x8F887B5F, 0x6F6F5D6D, 0x0059004B, 0x00000000, 0x000004B3, 0x013404D0,
- 0xFFFFFFFE, 0x00000000, 0x00FA0177, 0x0139007D, 0x01770000, 0x028A01F4, 0x03840307, 0x04E20427, 0x6A685C00, 0x6F6F6E6C, 0x8F887B68, 0x6F6F5E6E, 0x005A004B, 0x00000000, 0x000004E2, 0x01400502,
- 0xFFFFFFFF, 0x00000000, 0x01050187, 0x01460082, 0x01870000, 0x02A6020A, 0x03AB0329, 0x05190455, 0x6B685C00, 0x6F6F6F6D, 0x8F897B68, 0x6F6F5E6E, 0x005A004B, 0x00000000, 0x00000519, 0x014E0538,
-};
diff --git a/src/gen9_vp9_const_def.h b/src/gen9_vp9_const_def.h
deleted file mode 100644
index 6d29336..0000000
--- a/src/gen9_vp9_const_def.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright © 2016 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWAR
- *
- * Authors:
- * Zhao, Yakui <yakui.zhao@intel.com>
- *
- */
-
-#ifndef _GEN9_VP9_CONST_H
-#define _GEN9_VP9_CONST_H
-
-extern const unsigned int vp9_fullspiral_ime_search_path_delta[14];
-
-extern const unsigned int vp9_diamond_ime_search_path_delta[14];
-
-extern const int vp9_brc_const_data_p_g9[4448];
-extern const int vp9_brc_const_data_i_g9[4448];
-
-extern const unsigned int gen9_vp9_avs_coeffs[256];
-
-extern const unsigned int intel_vp9_costlut_key[4096];
-extern const unsigned int intel_vp9_costlut_p[4096];
-
-#endif
diff --git a/src/gen9_vp9_encapi.h b/src/gen9_vp9_encapi.h
deleted file mode 100644
index 99963fc..0000000
--- a/src/gen9_vp9_encapi.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright © 2016 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- *
- */
-
-#ifndef _INTEL_VP9_ENC_API_H_
-#define _INTEL_VP9_ENC_API_H_
-
-#include <va/va.h>
-
-struct intel_encoder_context;
-struct hw_context;
-
-extern Bool
-gen9_vp9_vme_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context);
-
-extern Bool
-gen9_vp9_pak_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context);
-
-#endif // _INTE_VP9_ENC_API_H_
diff --git a/src/gen9_vp9_encoder.c b/src/gen9_vp9_encoder.c
deleted file mode 100644
index f5c250b..0000000
--- a/src/gen9_vp9_encoder.c
+++ /dev/null
@@ -1,5885 +0,0 @@
-/*
- * Copyright © 2016 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWAR
- *
- * Authors:
- * Zhao, Yakui <yakui.zhao@intel.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdbool.h>
-#include <string.h>
-#include <math.h>
-#include <assert.h>
-#include <va/va.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "i965_encoder.h"
-#include "gen9_vp9_encapi.h"
-#include "gen9_vp9_encoder.h"
-#include "gen9_vp9_encoder_kernels.h"
-#include "vp9_probs.h"
-#include "gen9_vp9_const_def.h"
-
-#define MAX_VP9_ENCODER_SURFACES 64
-
-#define MAX_URB_SIZE 4096 /* In register */
-#define NUM_KERNELS_PER_GPE_CONTEXT 1
-
-#define VP9_BRC_KBPS 1000
-
-#define BRC_KERNEL_CBR 0x0010
-#define BRC_KERNEL_VBR 0x0020
-#define BRC_KERNEL_AVBR 0x0040
-#define BRC_KERNEL_CQL 0x0080
-
-#define DEFAULT_MOCS 0x02
-#define VP9_PIC_STATE_BUFFER_SIZE 192
-
-typedef struct _intel_kernel_header_
-{
- uint32_t reserved : 6;
- uint32_t kernel_start_pointer : 26;
-} intel_kernel_header;
-
-typedef struct _intel_vp9_kernel_header {
- int nKernelCount;
- intel_kernel_header PLY_DSCALE;
- intel_kernel_header VP9_ME_P;
- intel_kernel_header VP9_Enc_I_32x32;
- intel_kernel_header VP9_Enc_I_16x16;
- intel_kernel_header VP9_Enc_P;
- intel_kernel_header VP9_Enc_TX;
- intel_kernel_header VP9_DYS;
-
- intel_kernel_header VP9BRC_Intra_Distortion;
- intel_kernel_header VP9BRC_Init;
- intel_kernel_header VP9BRC_Reset;
- intel_kernel_header VP9BRC_Update;
-} intel_vp9_kernel_header;
-
-#define DYS_1X_FLAG 0x01
-#define DYS_4X_FLAG 0x02
-#define DYS_16X_FLAG 0x04
-
-struct vp9_surface_param {
- uint32_t frame_width;
- uint32_t frame_height;
-};
-
-static uint32_t intel_convert_sign_mag(int val, int sign_bit_pos)
-{
- uint32_t ret_val = 0;
- if (val < 0)
- {
- val = -val;
- ret_val = ((1 << (sign_bit_pos - 1)) | (val & ((1 << (sign_bit_pos - 1)) - 1)));
- }
- else
- {
- ret_val = val & ((1 << (sign_bit_pos - 1)) - 1);
- }
- return ret_val;
-}
-
-static bool
-intel_vp9_get_kernel_header_and_size(
- void *pvbinary,
- int binary_size,
- INTEL_VP9_ENC_OPERATION operation,
- int krnstate_idx,
- struct i965_kernel *ret_kernel)
-{
- typedef uint32_t BIN_PTR[4];
-
- char *bin_start;
- intel_vp9_kernel_header *pkh_table;
- intel_kernel_header *pcurr_header, *pinvalid_entry, *pnext_header;
- int next_krnoffset;
-
- if (!pvbinary || !ret_kernel)
- return false;
-
- bin_start = (char *)pvbinary;
- pkh_table = (intel_vp9_kernel_header *)pvbinary;
- pinvalid_entry = &(pkh_table->VP9BRC_Update) + 1;
- next_krnoffset = binary_size;
-
- if ((operation == INTEL_VP9_ENC_SCALING4X) || (operation == INTEL_VP9_ENC_SCALING2X))
- {
- pcurr_header = &pkh_table->PLY_DSCALE;
- }
- else if (operation == INTEL_VP9_ENC_ME)
- {
- pcurr_header = &pkh_table->VP9_ME_P;
- }
- else if (operation == INTEL_VP9_ENC_MBENC)
- {
- pcurr_header = &pkh_table->VP9_Enc_I_32x32;
- }
- else if (operation == INTEL_VP9_ENC_DYS)
- {
- pcurr_header = &pkh_table->VP9_DYS;
- }
- else if (operation == INTEL_VP9_ENC_BRC)
- {
- pcurr_header = &pkh_table->VP9BRC_Intra_Distortion;
- }
- else
- {
- return false;
- }
-
- pcurr_header += krnstate_idx;
- ret_kernel->bin = (const BIN_PTR *)(bin_start + (pcurr_header->kernel_start_pointer << 6));
-
- pnext_header = (pcurr_header + 1);
- if (pnext_header < pinvalid_entry)
- {
- next_krnoffset = pnext_header->kernel_start_pointer << 6;
- }
- ret_kernel->size = next_krnoffset - (pcurr_header->kernel_start_pointer << 6);
-
- return true;
-}
-
-
-static void
-gen9_free_surfaces_vp9(void **data)
-{
- struct gen9_surface_vp9 *vp9_surface;
-
- if (!data || !*data)
- return;
-
- vp9_surface = *data;
-
- if (vp9_surface->scaled_4x_surface_obj) {
- i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->scaled_4x_surface_id, 1);
- vp9_surface->scaled_4x_surface_id = VA_INVALID_SURFACE;
- vp9_surface->scaled_4x_surface_obj = NULL;
- }
-
- if (vp9_surface->scaled_16x_surface_obj) {
- i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->scaled_16x_surface_id, 1);
- vp9_surface->scaled_16x_surface_id = VA_INVALID_SURFACE;
- vp9_surface->scaled_16x_surface_obj = NULL;
- }
-
- if (vp9_surface->dys_4x_surface_obj) {
- i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->dys_4x_surface_id, 1);
- vp9_surface->dys_4x_surface_id = VA_INVALID_SURFACE;
- vp9_surface->dys_4x_surface_obj = NULL;
- }
-
- if (vp9_surface->dys_16x_surface_obj) {
- i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->dys_16x_surface_id, 1);
- vp9_surface->dys_16x_surface_id = VA_INVALID_SURFACE;
- vp9_surface->dys_16x_surface_obj = NULL;
- }
-
- if (vp9_surface->dys_surface_obj) {
- i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->dys_surface_id, 1);
- vp9_surface->dys_surface_id = VA_INVALID_SURFACE;
- vp9_surface->dys_surface_obj = NULL;
- }
-
- free(vp9_surface);
-
- *data = NULL;
-
- return;
-}
-
-static VAStatus
-gen9_vp9_init_check_surfaces(VADriverContextP ctx,
- struct object_surface *obj_surface,
- struct vp9_surface_param *surface_param)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen9_surface_vp9 *vp9_surface;
- int downscaled_width_4x, downscaled_height_4x;
- int downscaled_width_16x, downscaled_height_16x;
-
- if (!obj_surface || !obj_surface->bo)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- if (obj_surface->private_data &&
- obj_surface->free_private_data != gen9_free_surfaces_vp9) {
- obj_surface->free_private_data(&obj_surface->private_data);
- obj_surface->private_data = NULL;
- }
-
- if (obj_surface->private_data) {
- /* if the frame width/height is already the same as the expected,
- * it is unncessary to reallocate it.
- */
- vp9_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data);
- if (vp9_surface->frame_width >= surface_param->frame_width ||
- vp9_surface->frame_height >= surface_param->frame_height)
- return VA_STATUS_SUCCESS;
-
- obj_surface->free_private_data(&obj_surface->private_data);
- obj_surface->private_data = NULL;
- vp9_surface = NULL;
- }
-
- vp9_surface = calloc(1, sizeof(struct gen9_surface_vp9));
-
- if (!vp9_surface)
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
-
- vp9_surface->ctx = ctx;
- obj_surface->private_data = vp9_surface;
- obj_surface->free_private_data = gen9_free_surfaces_vp9;
-
- vp9_surface->frame_width = surface_param->frame_width;
- vp9_surface->frame_height = surface_param->frame_height;
-
- downscaled_width_4x = ALIGN(surface_param->frame_width / 4, 16);
- downscaled_height_4x = ALIGN(surface_param->frame_height / 4, 16);
-
- i965_CreateSurfaces(ctx,
- downscaled_width_4x,
- downscaled_height_4x,
- VA_RT_FORMAT_YUV420,
- 1,
- &vp9_surface->scaled_4x_surface_id);
-
- vp9_surface->scaled_4x_surface_obj = SURFACE(vp9_surface->scaled_4x_surface_id);
-
- if (!vp9_surface->scaled_4x_surface_obj) {
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
- }
-
- i965_check_alloc_surface_bo(ctx, vp9_surface->scaled_4x_surface_obj, 1,
- VA_FOURCC('N', 'V', '1', '2'), SUBSAMPLE_YUV420);
-
- downscaled_width_16x = ALIGN(surface_param->frame_width / 16, 16);
- downscaled_height_16x = ALIGN(surface_param->frame_height / 16, 16);
- i965_CreateSurfaces(ctx,
- downscaled_width_16x,
- downscaled_height_16x,
- VA_RT_FORMAT_YUV420,
- 1,
- &vp9_surface->scaled_16x_surface_id);
- vp9_surface->scaled_16x_surface_obj = SURFACE(vp9_surface->scaled_16x_surface_id);
-
- if (!vp9_surface->scaled_16x_surface_obj) {
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
- }
-
- i965_check_alloc_surface_bo(ctx, vp9_surface->scaled_16x_surface_obj, 1,
- VA_FOURCC('N', 'V', '1', '2'), SUBSAMPLE_YUV420);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen9_vp9_check_dys_surfaces(VADriverContextP ctx,
- struct object_surface *obj_surface,
- struct vp9_surface_param *surface_param)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen9_surface_vp9 *vp9_surface;
- int dys_width_4x, dys_height_4x;
- int dys_width_16x, dys_height_16x;
-
- /* As this is handled after the surface checking, it is unnecessary
- * to check the surface bo and vp9_priv_surface again
- */
-
- vp9_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data);
-
- if (!vp9_surface)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- /* if the frame_width/height of dys_surface is the same as
- * the expected, it is unnecessary to allocate it again
- */
- if (vp9_surface->dys_frame_width == surface_param->frame_width &&
- vp9_surface->dys_frame_width == surface_param->frame_width)
- return VA_STATUS_SUCCESS;
-
- if (vp9_surface->dys_4x_surface_obj) {
- i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->dys_4x_surface_id, 1);
- vp9_surface->dys_4x_surface_id = VA_INVALID_SURFACE;
- vp9_surface->dys_4x_surface_obj = NULL;
- }
-
- if (vp9_surface->dys_16x_surface_obj) {
- i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->dys_16x_surface_id, 1);
- vp9_surface->dys_16x_surface_id = VA_INVALID_SURFACE;
- vp9_surface->dys_16x_surface_obj = NULL;
- }
-
- if (vp9_surface->dys_surface_obj) {
- i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->dys_surface_id, 1);
- vp9_surface->dys_surface_id = VA_INVALID_SURFACE;
- vp9_surface->dys_surface_obj = NULL;
- }
-
- vp9_surface->dys_frame_width = surface_param->frame_width;
- vp9_surface->dys_frame_height = surface_param->frame_height;
-
- i965_CreateSurfaces(ctx,
- surface_param->frame_width,
- surface_param->frame_height,
- VA_RT_FORMAT_YUV420,
- 1,
- &vp9_surface->dys_surface_id);
- vp9_surface->dys_surface_obj = SURFACE(vp9_surface->dys_surface_id);
-
- if (!vp9_surface->dys_surface_obj) {
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
- }
-
- i965_check_alloc_surface_bo(ctx, vp9_surface->dys_surface_obj, 1,
- VA_FOURCC('N', 'V', '1', '2'), SUBSAMPLE_YUV420);
-
- dys_width_4x = ALIGN(surface_param->frame_width / 4, 16);
- dys_height_4x = ALIGN(surface_param->frame_width / 4, 16);
-
- i965_CreateSurfaces(ctx,
- dys_width_4x,
- dys_height_4x,
- VA_RT_FORMAT_YUV420,
- 1,
- &vp9_surface->dys_4x_surface_id);
-
- vp9_surface->dys_4x_surface_obj = SURFACE(vp9_surface->dys_4x_surface_id);
-
- if (!vp9_surface->dys_4x_surface_obj) {
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
- }
-
- i965_check_alloc_surface_bo(ctx, vp9_surface->dys_4x_surface_obj, 1,
- VA_FOURCC('N', 'V', '1', '2'), SUBSAMPLE_YUV420);
-
- dys_width_16x = ALIGN(surface_param->frame_width / 16, 16);
- dys_height_16x = ALIGN(surface_param->frame_width / 16, 16);
- i965_CreateSurfaces(ctx,
- dys_width_16x,
- dys_height_16x,
- VA_RT_FORMAT_YUV420,
- 1,
- &vp9_surface->dys_16x_surface_id);
- vp9_surface->dys_16x_surface_obj = SURFACE(vp9_surface->dys_16x_surface_id);
-
- if (!vp9_surface->dys_16x_surface_obj) {
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
- }
-
- i965_check_alloc_surface_bo(ctx, vp9_surface->dys_16x_surface_obj, 1,
- VA_FOURCC('N', 'V', '1', '2'), SUBSAMPLE_YUV420);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen9_vp9_allocate_resources(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int allocate)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context;
- struct gen9_vp9_state *vp9_state;
- int allocate_flag, i;
- int res_size;
- uint32_t frame_width_in_sb, frame_height_in_sb, frame_sb_num;
- unsigned int width, height;
-
- vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state;
-
- if (!vp9_state || !vp9_state->pic_param)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- /* the buffer related with BRC is not changed. So it is allocated
- * based on the input parameter
- */
- if (allocate) {
- i965_free_gpe_resource(&vme_context->res_brc_history_buffer);
- i965_free_gpe_resource(&vme_context->res_brc_const_data_buffer);
- i965_free_gpe_resource(&vme_context->res_brc_mbenc_curbe_write_buffer);
- i965_free_gpe_resource(&vme_context->res_pic_state_brc_read_buffer);
- i965_free_gpe_resource(&vme_context->res_pic_state_brc_write_hfw_read_buffer);
- i965_free_gpe_resource(&vme_context->res_pic_state_hfw_write_buffer);
- i965_free_gpe_resource(&vme_context->res_seg_state_brc_read_buffer);
- i965_free_gpe_resource(&vme_context->res_seg_state_brc_write_buffer);
- i965_free_gpe_resource(&vme_context->res_brc_bitstream_size_buffer);
- i965_free_gpe_resource(&vme_context->res_brc_hfw_data_buffer);
- i965_free_gpe_resource(&vme_context->res_brc_mmdk_pak_buffer);
-
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_brc_history_buffer,
- VP9_BRC_HISTORY_BUFFER_SIZE,
- "Brc History buffer");
- if (!allocate_flag)
- goto failed_allocation;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_brc_const_data_buffer,
- VP9_BRC_CONSTANTSURFACE_SIZE,
- "Brc Constant buffer");
- if (!allocate_flag)
- goto failed_allocation;
-
- res_size = ALIGN(sizeof(vp9_mbenc_curbe_data), 64) + 128 +
- ALIGN(sizeof(struct gen8_interface_descriptor_data), 64) * NUM_VP9_MBENC;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_brc_mbenc_curbe_write_buffer,
- res_size,
- "Brc Curbe write");
- if (!allocate_flag)
- goto failed_allocation;
-
- res_size = VP9_PIC_STATE_BUFFER_SIZE * 4;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_pic_state_brc_read_buffer,
- res_size,
- "Pic State Brc_read");
- if (!allocate_flag)
- goto failed_allocation;
-
- res_size = VP9_PIC_STATE_BUFFER_SIZE * 4;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_pic_state_brc_write_hfw_read_buffer,
- res_size,
- "Pic State Brc_write Hfw_Read");
- if (!allocate_flag)
- goto failed_allocation;
-
- res_size = VP9_PIC_STATE_BUFFER_SIZE * 4;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_pic_state_hfw_write_buffer,
- res_size,
- "Pic State Hfw Write");
- if (!allocate_flag)
- goto failed_allocation;
-
- res_size = VP9_SEGMENT_STATE_BUFFER_SIZE;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_seg_state_brc_read_buffer,
- res_size,
- "Segment state brc_read");
- if (!allocate_flag)
- goto failed_allocation;
-
- res_size = VP9_SEGMENT_STATE_BUFFER_SIZE;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_seg_state_brc_write_buffer,
- res_size,
- "Segment state brc_write");
- if (!allocate_flag)
- goto failed_allocation;
-
- res_size = VP9_BRC_BITSTREAM_SIZE_BUFFER_SIZE;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_brc_bitstream_size_buffer,
- res_size,
- "Brc bitstream buffer");
- if (!allocate_flag)
- goto failed_allocation;
-
- res_size = VP9_HFW_BRC_DATA_BUFFER_SIZE;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_brc_hfw_data_buffer,
- res_size,
- "mfw Brc data");
- if (!allocate_flag)
- goto failed_allocation;
-
- res_size = VP9_BRC_MMDK_PAK_BUFFER_SIZE;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_brc_mmdk_pak_buffer,
- res_size,
- "Brc mmdk_pak");
- if (!allocate_flag)
- goto failed_allocation;
- }
-
- /* If the width/height of allocated buffer is greater than the expected,
- * it is unnecessary to allocate it again
- */
- if (vp9_state->res_width >= vp9_state->frame_width &&
- vp9_state->res_height >= vp9_state->frame_height) {
-
- return VA_STATUS_SUCCESS;
- }
- frame_width_in_sb = ALIGN(vp9_state->frame_width, 64) / 64;
- frame_height_in_sb = ALIGN(vp9_state->frame_height, 64) / 64;
- frame_sb_num = frame_width_in_sb * frame_height_in_sb;
-
- i965_free_gpe_resource(&vme_context->res_hvd_line_buffer);
- res_size = frame_width_in_sb * 64;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_hvd_line_buffer,
- res_size,
- "VP9 hvd line line");
- if (!allocate_flag)
- goto failed_allocation;
-
- i965_free_gpe_resource(&vme_context->res_hvd_tile_line_buffer);
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_hvd_tile_line_buffer,
- res_size,
- "VP9 hvd tile_line line");
- if (!allocate_flag)
- goto failed_allocation;
-
- i965_free_gpe_resource(&vme_context->res_deblocking_filter_line_buffer);
- res_size = frame_width_in_sb * 18 * 64;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_deblocking_filter_line_buffer,
- res_size,
- "VP9 deblocking filter line");
- if (!allocate_flag)
- goto failed_allocation;
-
- i965_free_gpe_resource(&vme_context->res_deblocking_filter_tile_line_buffer);
- res_size = frame_width_in_sb * 18 * 64;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_deblocking_filter_tile_line_buffer,
- res_size,
- "VP9 deblocking tile line");
- if (!allocate_flag)
- goto failed_allocation;
-
- i965_free_gpe_resource(&vme_context->res_deblocking_filter_tile_col_buffer);
- res_size = frame_height_in_sb * 17 * 64;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_deblocking_filter_tile_col_buffer,
- res_size,
- "VP9 deblocking tile col");
- if (!allocate_flag)
- goto failed_allocation;
-
- i965_free_gpe_resource(&vme_context->res_metadata_line_buffer);
- res_size = frame_width_in_sb * 5 * 64;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_metadata_line_buffer,
- res_size,
- "VP9 metadata line");
- if (!allocate_flag)
- goto failed_allocation;
-
- i965_free_gpe_resource(&vme_context->res_metadata_tile_line_buffer);
- res_size = frame_width_in_sb * 5 * 64;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_metadata_tile_line_buffer,
- res_size,
- "VP9 metadata tile line");
- if (!allocate_flag)
- goto failed_allocation;
-
- i965_free_gpe_resource(&vme_context->res_metadata_tile_col_buffer);
- res_size = frame_height_in_sb * 5 * 64;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_metadata_tile_col_buffer,
- res_size,
- "VP9 metadata tile col");
- if (!allocate_flag)
- goto failed_allocation;
-
- i965_free_gpe_resource(&vme_context->res_prob_buffer);
- res_size = 2048;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_prob_buffer,
- res_size,
- "VP9 prob");
- if (!allocate_flag)
- goto failed_allocation;
-
- i965_free_gpe_resource(&vme_context->res_segmentid_buffer);
- res_size = frame_sb_num * 64;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_segmentid_buffer,
- res_size,
- "VP9 segment id");
- if (!allocate_flag)
- goto failed_allocation;
-
- i965_zero_gpe_resource(&vme_context->res_segmentid_buffer);
-
- i965_free_gpe_resource(&vme_context->res_prob_delta_buffer);
- res_size = 29 * 64;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_prob_delta_buffer,
- res_size,
- "VP9 prob delta");
- if (!allocate_flag)
- goto failed_allocation;
-
- i965_zero_gpe_resource(&vme_context->res_segmentid_buffer);
-
- i965_free_gpe_resource(&vme_context->res_prob_delta_buffer);
- res_size = 29 * 64;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_prob_delta_buffer,
- res_size,
- "VP9 prob delta");
- if (!allocate_flag)
- goto failed_allocation;
-
- i965_free_gpe_resource(&vme_context->res_compressed_input_buffer);
- res_size = 32 * 64;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_compressed_input_buffer,
- res_size,
- "VP9 compressed_input buffer");
- if (!allocate_flag)
- goto failed_allocation;
-
- i965_free_gpe_resource(&vme_context->res_prob_counter_buffer);
- res_size = 193 * 64;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_prob_counter_buffer,
- res_size,
- "VP9 prob counter");
- if (!allocate_flag)
- goto failed_allocation;
-
- i965_free_gpe_resource(&vme_context->res_tile_record_streamout_buffer);
- res_size = frame_sb_num * 64;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_tile_record_streamout_buffer,
- res_size,
- "VP9 tile record stream_out");
- if (!allocate_flag)
- goto failed_allocation;
-
- i965_free_gpe_resource(&vme_context->res_cu_stat_streamout_buffer);
- res_size = frame_sb_num * 64;
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_cu_stat_streamout_buffer,
- res_size,
- "VP9 CU stat stream_out");
- if (!allocate_flag)
- goto failed_allocation;
-
- width = vp9_state->downscaled_width_4x_in_mb * 32;
- height = vp9_state->downscaled_height_4x_in_mb * 16;
- i965_free_gpe_resource(&vme_context->s4x_memv_data_buffer);
- allocate_flag = i965_gpe_allocate_2d_resource(i965->intel.bufmgr,
- &vme_context->s4x_memv_data_buffer,
- width, height,
- ALIGN(width, 64),
- "VP9 4x MEMV data");
- if (!allocate_flag)
- goto failed_allocation;
-
- width = vp9_state->downscaled_width_4x_in_mb * 8;
- height = vp9_state->downscaled_height_4x_in_mb * 16;
- i965_free_gpe_resource(&vme_context->s4x_memv_distortion_buffer);
- allocate_flag = i965_gpe_allocate_2d_resource(i965->intel.bufmgr,
- &vme_context->s4x_memv_distortion_buffer,
- width, height,
- ALIGN(width, 64),
- "VP9 4x MEMV distorion");
- if (!allocate_flag)
- goto failed_allocation;
-
- width = ALIGN(vp9_state->downscaled_width_16x_in_mb * 32, 64);
- height = vp9_state->downscaled_height_16x_in_mb * 16;
- i965_free_gpe_resource(&vme_context->s16x_memv_data_buffer);
- allocate_flag = i965_gpe_allocate_2d_resource(i965->intel.bufmgr,
- &vme_context->s16x_memv_data_buffer,
- width, height,
- width,
- "VP9 16x MEMV data");
- if (!allocate_flag)
- goto failed_allocation;
-
- width = vp9_state->frame_width_in_mb * 16;
- height = vp9_state->frame_height_in_mb * 8;
- i965_free_gpe_resource(&vme_context->res_output_16x16_inter_modes);
- allocate_flag = i965_gpe_allocate_2d_resource(i965->intel.bufmgr,
- &vme_context->res_output_16x16_inter_modes,
- width, height,
- ALIGN(width, 64),
- "VP9 output inter_mode");
- if (!allocate_flag)
- goto failed_allocation;
-
- res_size = vp9_state->frame_width_in_mb * vp9_state->frame_height_in_mb *
- 16 * 4;
- for (i = 0; i < 2; i++) {
- i965_free_gpe_resource(&vme_context->res_mode_decision[i]);
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_mode_decision[i],
- res_size,
- "VP9 mode decision");
- if (!allocate_flag)
- goto failed_allocation;
-
- }
-
- res_size = frame_sb_num * 9 * 64;
- for (i = 0; i < 2; i++) {
- i965_free_gpe_resource(&vme_context->res_mv_temporal_buffer[i]);
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_mv_temporal_buffer[i],
- res_size,
- "VP9 temporal mv");
- if (!allocate_flag)
- goto failed_allocation;
- }
-
- vp9_state->mb_data_offset = ALIGN(frame_sb_num * 16, 4096) + 4096;
- res_size = vp9_state->mb_data_offset + frame_sb_num * 64 * 64 + 1000;
- i965_free_gpe_resource(&vme_context->res_mb_code_surface);
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_mb_code_surface,
- ALIGN(res_size, 4096),
- "VP9 mb_code surface");
- if (!allocate_flag)
- goto failed_allocation;
-
- res_size = 128;
- i965_free_gpe_resource(&vme_context->res_pak_uncompressed_input_buffer);
- allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr,
- &vme_context->res_pak_uncompressed_input_buffer,
- ALIGN(res_size, 4096),
- "VP9 pak_uncompressed_input");
- if (!allocate_flag)
- goto failed_allocation;
-
- if (!vme_context->frame_header_data) {
- /* allocate 512 bytes for generating the uncompressed header */
- vme_context->frame_header_data = calloc(1, 512);
- }
-
- vp9_state->res_width = vp9_state->frame_width;
- vp9_state->res_height = vp9_state->frame_height;
-
- return VA_STATUS_SUCCESS;
-
-failed_allocation:
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
-}
-
-static void
-gen9_vp9_free_resources(struct gen9_encoder_context_vp9 *vme_context)
-{
- int i;
- struct gen9_vp9_state *vp9_state = (struct gen9_vp9_state *) vme_context->enc_priv_state;
-
- if (vp9_state->brc_enabled) {
- i965_free_gpe_resource(&vme_context->res_brc_history_buffer);
- i965_free_gpe_resource(&vme_context->res_brc_const_data_buffer);
- i965_free_gpe_resource(&vme_context->res_brc_mbenc_curbe_write_buffer);
- i965_free_gpe_resource(&vme_context->res_pic_state_brc_read_buffer);
- i965_free_gpe_resource(&vme_context->res_pic_state_brc_write_hfw_read_buffer);
- i965_free_gpe_resource(&vme_context->res_pic_state_hfw_write_buffer);
- i965_free_gpe_resource(&vme_context->res_seg_state_brc_read_buffer);
- i965_free_gpe_resource(&vme_context->res_seg_state_brc_write_buffer);
- i965_free_gpe_resource(&vme_context->res_brc_bitstream_size_buffer);
- i965_free_gpe_resource(&vme_context->res_brc_hfw_data_buffer);
- i965_free_gpe_resource(&vme_context->res_brc_mmdk_pak_buffer);
- }
-
- i965_free_gpe_resource(&vme_context->res_hvd_line_buffer);
- i965_free_gpe_resource(&vme_context->res_hvd_tile_line_buffer);
- i965_free_gpe_resource(&vme_context->res_deblocking_filter_line_buffer);
- i965_free_gpe_resource(&vme_context->res_deblocking_filter_tile_line_buffer);
- i965_free_gpe_resource(&vme_context->res_deblocking_filter_tile_col_buffer);
- i965_free_gpe_resource(&vme_context->res_metadata_line_buffer);
- i965_free_gpe_resource(&vme_context->res_metadata_tile_line_buffer);
- i965_free_gpe_resource(&vme_context->res_metadata_tile_col_buffer);
- i965_free_gpe_resource(&vme_context->res_prob_buffer);
- i965_free_gpe_resource(&vme_context->res_segmentid_buffer);
- i965_free_gpe_resource(&vme_context->res_prob_delta_buffer);
- i965_free_gpe_resource(&vme_context->res_prob_counter_buffer);
- i965_free_gpe_resource(&vme_context->res_tile_record_streamout_buffer);
- i965_free_gpe_resource(&vme_context->res_cu_stat_streamout_buffer);
- i965_free_gpe_resource(&vme_context->s4x_memv_data_buffer);
- i965_free_gpe_resource(&vme_context->s4x_memv_distortion_buffer);
- i965_free_gpe_resource(&vme_context->s16x_memv_data_buffer);
- i965_free_gpe_resource(&vme_context->res_output_16x16_inter_modes);
- for (i = 0; i < 2; i++) {
- i965_free_gpe_resource(&vme_context->res_mode_decision[i]);
- }
-
- for (i = 0; i < 2; i++) {
- i965_free_gpe_resource(&vme_context->res_mv_temporal_buffer[i]);
- }
-
- i965_free_gpe_resource(&vme_context->res_compressed_input_buffer);
- i965_free_gpe_resource(&vme_context->res_mb_code_surface);
- i965_free_gpe_resource(&vme_context->res_pak_uncompressed_input_buffer);
-
- if (vme_context->frame_header_data) {
- free(vme_context->frame_header_data);
- vme_context->frame_header_data = NULL;
- }
- return;
-}
-
-static void
-gen9_init_media_object_walker_parameter(struct intel_encoder_context *encoder_context,
- struct vp9_encoder_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) {
- 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;
-
- if (kernel_walker_param->walker_degree == VP9_45Z_DEGREE) {
- // 45z degree
- walker_param->scoreboard_mask = 0x0F;
-
- walker_param->global_loop_exec_count = 0x3FF;
- walker_param->local_loop_exec_count = 0x3FF;
-
- walker_param->global_resolution.x = (unsigned int)(kernel_walker_param->resolution_x / 2.f) + 1;
- walker_param->global_resolution.y = 2 * kernel_walker_param->resolution_y;
-
- walker_param->global_start.x = 0;
- walker_param->global_start.y = 0;
-
- walker_param->global_outer_loop_stride.x = walker_param->global_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 = walker_param->global_resolution.y;
-
- walker_param->block_resolution.x = walker_param->global_resolution.x;
- walker_param->block_resolution.y = walker_param->global_resolution.y;
-
- walker_param->local_start.x = 0;
- walker_param->local_start.y = 0;
-
- walker_param->local_outer_loop_stride.x = 1;
- walker_param->local_outer_loop_stride.y = 0;
-
- walker_param->local_inner_loop_unit.x = -1;
- walker_param->local_inner_loop_unit.y = 4;
-
- walker_param->middle_loop_extra_steps = 3;
- walker_param->mid_loop_unit_x = 0;
- walker_param->mid_loop_unit_y = 1;
- } else {
- // 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;
- }
- }
-}
-
-static void
-gen9_add_2d_gpe_surface(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct object_surface *obj_surface,
- int is_uv_surface,
- int is_media_block_rw,
- unsigned int format,
- int index)
-{
- struct i965_gpe_resource gpe_resource;
- struct i965_gpe_surface gpe_surface;
-
- memset(&gpe_surface, 0, sizeof(gpe_surface));
-
- i965_object_surface_to_2d_gpe_resource(&gpe_resource, obj_surface);
- gpe_surface.gpe_resource = &gpe_resource;
- gpe_surface.is_2d_surface = 1;
- gpe_surface.is_uv_surface = !!is_uv_surface;
- gpe_surface.is_media_block_rw = !!is_media_block_rw;
-
- gpe_surface.cacheability_control = DEFAULT_MOCS;
- gpe_surface.format = format;
-
- gen9_gpe_context_add_surface(gpe_context, &gpe_surface, index);
- i965_free_gpe_resource(&gpe_resource);
-}
-
-static void
-gen9_add_adv_gpe_surface(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct object_surface *obj_surface,
- int index)
-{
- struct i965_gpe_resource gpe_resource;
- struct i965_gpe_surface gpe_surface;
-
- memset(&gpe_surface, 0, sizeof(gpe_surface));
-
- i965_object_surface_to_2d_gpe_resource(&gpe_resource, obj_surface);
- gpe_surface.gpe_resource = &gpe_resource;
- gpe_surface.is_adv_surface = 1;
- gpe_surface.cacheability_control = DEFAULT_MOCS;
- gpe_surface.v_direction = 2;
-
- gen9_gpe_context_add_surface(gpe_context, &gpe_surface, index);
- i965_free_gpe_resource(&gpe_resource);
-}
-
-static void
-gen9_add_buffer_gpe_surface(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct i965_gpe_resource *gpe_buffer,
- int is_raw_buffer,
- unsigned int size,
- unsigned int offset,
- int index)
-{
- struct i965_gpe_surface gpe_surface;
-
- memset(&gpe_surface, 0, sizeof(gpe_surface));
-
- gpe_surface.gpe_resource = gpe_buffer;
- gpe_surface.is_buffer = 1;
- gpe_surface.is_raw_buffer = !!is_raw_buffer;
- gpe_surface.cacheability_control = DEFAULT_MOCS;
- gpe_surface.size = size;
- gpe_surface.offset = offset;
-
- gen9_gpe_context_add_surface(gpe_context, &gpe_surface, index);
-}
-
-static void
-gen9_add_buffer_2d_gpe_surface(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct i965_gpe_resource *gpe_buffer,
- int is_media_block_rw,
- unsigned int format,
- int index)
-{
- struct i965_gpe_surface gpe_surface;
-
- memset(&gpe_surface, 0, sizeof(gpe_surface));
-
- gpe_surface.gpe_resource = gpe_buffer;
- 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;
-
- gen9_gpe_context_add_surface(gpe_context, &gpe_surface, index);
-}
-
-static void
-gen9_add_dri_buffer_gpe_surface(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- dri_bo *bo,
- int is_raw_buffer,
- unsigned int size,
- unsigned int offset,
- int index)
-{
- struct i965_gpe_resource gpe_resource;
-
- i965_dri_object_to_buffer_gpe_resource(&gpe_resource, bo);
- gen9_add_buffer_gpe_surface(ctx,
- gpe_context,
- &gpe_resource,
- is_raw_buffer,
- size,
- offset,
- index);
-
- i965_free_gpe_resource(&gpe_resource);
-}
-
-/*
-static void
-gen9_add_dri_buffer_2d_gpe_surface(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- dri_bo *bo,
- unsigned int width,
- unsigned int height,
- unsigned int pitch,
- int is_media_block_rw,
- unsigned int format,
- int index)
-{
- struct i965_gpe_resource gpe_resource;
-
- i965_dri_object_to_2d_gpe_resource(&gpe_resource, bo, width, height, pitch);
- gen9_add_buffer_2d_gpe_surface(ctx,
- gpe_context,
- &gpe_resource,
- is_media_block_rw,
- format,
- index);
-
- i965_free_gpe_resource(&gpe_resource);
-}
-*/
-
-static void
-gen9_run_kernel_media_object(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct i965_gpe_context *gpe_context,
- int media_function,
- struct gpe_media_object_parameter *param)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct vp9_encode_status_buffer_internal *status_buffer;
- struct gen9_vp9_state *vp9_state;
- struct gpe_mi_store_data_imm_parameter mi_store_data_imm;
-
- vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state);
- if (!vp9_state || !batch)
- return;
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
-
- status_buffer = &(vp9_state->status_buffer);
- memset(&mi_store_data_imm, 0, sizeof(mi_store_data_imm));
- mi_store_data_imm.bo = status_buffer->bo;
- mi_store_data_imm.offset = status_buffer->media_index_offset;
- mi_store_data_imm.dw0 = media_function;
- gen8_gpe_mi_store_data_imm(ctx, batch, &mi_store_data_imm);
-
- intel_batchbuffer_emit_mi_flush(batch);
- gen9_gpe_pipeline_setup(ctx, gpe_context, batch);
- gen8_gpe_media_object(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);
-}
-
-static void
-gen9_run_kernel_media_object_walker(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct i965_gpe_context *gpe_context,
- int media_function,
- struct gpe_media_object_walker_parameter *param)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct vp9_encode_status_buffer_internal *status_buffer;
- struct gen9_vp9_state *vp9_state;
- struct gpe_mi_store_data_imm_parameter mi_store_data_imm;
-
- vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state);
- if (!vp9_state || !batch)
- return;
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
-
- intel_batchbuffer_emit_mi_flush(batch);
-
- status_buffer = &(vp9_state->status_buffer);
- memset(&mi_store_data_imm, 0, sizeof(mi_store_data_imm));
- mi_store_data_imm.bo = status_buffer->bo;
- mi_store_data_imm.offset = status_buffer->media_index_offset;
- mi_store_data_imm.dw0 = media_function;
- gen8_gpe_mi_store_data_imm(ctx, batch, &mi_store_data_imm);
-
- gen9_gpe_pipeline_setup(ctx, gpe_context, batch);
- gen8_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);
-}
-
-static
-void gen9_vp9_set_curbe_brc(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct i965_gpe_context *gpe_context,
- struct intel_encoder_context *encoder_context,
- struct gen9_vp9_brc_curbe_param *param)
-{
- VAEncSequenceParameterBufferVP9 *seq_param;
- VAEncPictureParameterBufferVP9 *pic_param;
- VAEncMiscParameterTypeVP9PerSegmantParam *segment_param;
- vp9_brc_curbe_data *cmd;
- double dbps_ratio, dInputBitsPerFrame;
- struct gen9_vp9_state *vp9_state;
-
- vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state;
-
- pic_param = param->ppic_param;
- seq_param = param->pseq_param;
- segment_param = param->psegment_param;
-
- cmd = i965_gpe_context_map_curbe(gpe_context);
-
- if (!cmd)
- return;
-
- memset(cmd, 0, sizeof(vp9_brc_curbe_data));
-
- if (!vp9_state->dys_enabled)
- {
- cmd->dw0.frame_width = pic_param->frame_width_src;
- cmd->dw0.frame_height = pic_param->frame_height_src;
- }
- else
- {
- cmd->dw0.frame_width = pic_param->frame_width_dst;
- cmd->dw0.frame_height = pic_param->frame_height_dst;
- }
-
- cmd->dw1.frame_type = vp9_state->picture_coding_type;
- cmd->dw1.segmentation_enable = 0;
- cmd->dw1.ref_frame_flags = vp9_state->ref_frame_flag;
- cmd->dw1.num_tlevels = 1;
-
- switch(param->media_state_type)
- {
- case VP9_MEDIA_STATE_BRC_INIT_RESET:
- {
- cmd->dw3.max_level_ratiot0 = 0;
- cmd->dw3.max_level_ratiot1 = 0;
- cmd->dw3.max_level_ratiot2 = 0;
- cmd->dw3.max_level_ratiot3 = 0;
-
- cmd->dw4.profile_level_max_frame = seq_param->max_frame_width *
- seq_param->max_frame_height;
- cmd->dw5.init_buf_fullness = vp9_state->init_vbv_buffer_fullness_in_bit;
- cmd->dw6.buf_size = vp9_state->vbv_buffer_size_in_bit;
- cmd->dw7.target_bit_rate = (vp9_state->target_bit_rate + VP9_BRC_KBPS - 1) / VP9_BRC_KBPS *
- VP9_BRC_KBPS;
- cmd->dw8.max_bit_rate = (vp9_state->max_bit_rate + VP9_BRC_KBPS - 1) / VP9_BRC_KBPS *
- VP9_BRC_KBPS;
- cmd->dw9.min_bit_rate = (vp9_state->min_bit_rate + VP9_BRC_KBPS - 1) / VP9_BRC_KBPS *
- VP9_BRC_KBPS;
- cmd->dw10.frame_ratem = vp9_state->framerate.num;
- cmd->dw11.frame_rated = vp9_state->framerate.den;
-
- cmd->dw14.avbr_accuracy = 30;
- cmd->dw14.avbr_convergence = 150;
-
- if (encoder_context->rate_control_mode == VA_RC_CBR)
- {
- cmd->dw12.brc_flag = BRC_KERNEL_CBR;
- cmd->dw8.max_bit_rate = cmd->dw7.target_bit_rate;
- cmd->dw9.min_bit_rate = 0;
- }
- else if (encoder_context->rate_control_mode == VA_RC_VBR)
- {
- cmd->dw12.brc_flag = BRC_KERNEL_VBR;
- }
- else
- {
- cmd->dw12.brc_flag = BRC_KERNEL_CQL;
- cmd->dw16.cq_level = 30;
- }
- cmd->dw12.gopp = seq_param->intra_period - 1;
-
- cmd->dw13.init_frame_width = pic_param->frame_width_src;
- cmd->dw13.init_frame_height = pic_param->frame_height_src;
-
- cmd->dw15.min_qp = 0;
- cmd->dw15.max_qp = 255;
-
- cmd->dw16.cq_level = 30;
-
- cmd->dw17.enable_dynamic_scaling = vp9_state->dys_in_use;
- cmd->dw17.brc_overshoot_cbr_pct = 150;
-
- dInputBitsPerFrame = (double)cmd->dw8.max_bit_rate * (double)vp9_state->framerate.den / (double)vp9_state->framerate.num;
- dbps_ratio = dInputBitsPerFrame / ((double)vp9_state->vbv_buffer_size_in_bit / 30.0);
- if (dbps_ratio < 0.1)
- dbps_ratio = 0.1;
- if (dbps_ratio > 3.5)
- dbps_ratio = 3.5;
-
- *param->pbrc_init_reset_buf_size_in_bits = cmd->dw6.buf_size;
- *param->pbrc_init_reset_input_bits_per_frame = dInputBitsPerFrame;
-
- cmd->dw18.pframe_deviation_threshold0 = (uint32_t)(-50 * pow(0.90, dbps_ratio));
- cmd->dw18.pframe_deviation_threshold1 = (uint32_t)(-50 * pow(0.66, dbps_ratio));
- cmd->dw18.pframe_deviation_threshold2 = (uint32_t)(-50 * pow(0.46, dbps_ratio));
- cmd->dw18.pframe_deviation_threshold3 = (uint32_t)(-50 * pow(0.3, dbps_ratio));
- cmd->dw19.pframe_deviation_threshold4 = (uint32_t)(50 * pow(0.3, dbps_ratio));
- cmd->dw19.pframe_deviation_threshold5 = (uint32_t)(50 * pow(0.46, dbps_ratio));
- cmd->dw19.pframe_deviation_threshold6 = (uint32_t)(50 * pow(0.7, dbps_ratio));
- cmd->dw19.pframe_deviation_threshold7 = (uint32_t)(50 * pow(0.9, dbps_ratio));
-
- cmd->dw20.vbr_deviation_threshold0 = (uint32_t)(-50 * pow(0.9, dbps_ratio));
- cmd->dw20.vbr_deviation_threshold1 = (uint32_t)(-50 * pow(0.7, dbps_ratio));
- cmd->dw20.vbr_deviation_threshold2 = (uint32_t)(-50 * pow(0.5, dbps_ratio));
- cmd->dw20.vbr_deviation_threshold3 = (uint32_t)(-50 * pow(0.3, dbps_ratio));
- cmd->dw21.vbr_deviation_threshold4 = (uint32_t)(100 * pow(0.4, dbps_ratio));
- cmd->dw21.vbr_deviation_threshold5 = (uint32_t)(100 * pow(0.5, dbps_ratio));
- cmd->dw21.vbr_deviation_threshold6 = (uint32_t)(100 * pow(0.75, dbps_ratio));
- cmd->dw21.vbr_deviation_threshold7 = (uint32_t)(100 * pow(0.9, dbps_ratio));
-
- cmd->dw22.kframe_deviation_threshold0 = (uint32_t)(-50 * pow(0.8, dbps_ratio));
- cmd->dw22.kframe_deviation_threshold1 = (uint32_t)(-50 * pow(0.6, dbps_ratio));
- cmd->dw22.kframe_deviation_threshold2 = (uint32_t)(-50 * pow(0.34, dbps_ratio));
- cmd->dw22.kframe_deviation_threshold3 = (uint32_t)(-50 * pow(0.2, dbps_ratio));
- cmd->dw23.kframe_deviation_threshold4 = (uint32_t)(50 * pow(0.2, dbps_ratio));
- cmd->dw23.kframe_deviation_threshold5 = (uint32_t)(50 * pow(0.4, dbps_ratio));
- cmd->dw23.kframe_deviation_threshold6 = (uint32_t)(50 * pow(0.66, dbps_ratio));
- cmd->dw23.kframe_deviation_threshold7 = (uint32_t)(50 * pow(0.9, dbps_ratio));
-
- break;
- }
- case VP9_MEDIA_STATE_BRC_UPDATE:
- {
- cmd->dw15.min_qp = 0;
- cmd->dw15.max_qp = 255;
-
- cmd->dw25.frame_number = param->frame_number;
-
- // Used in dynamic scaling. set to zero for now
- cmd->dw27.hrd_buffer_fullness_upper_limit = 0;
- cmd->dw28.hrd_buffer_fullness_lower_limit = 0;
-
- if (pic_param->pic_flags.bits.segmentation_enabled) {
- cmd->dw32.seg_delta_qp0 = segment_param->seg_data[0].segment_qindex_delta;
- cmd->dw32.seg_delta_qp1 = segment_param->seg_data[1].segment_qindex_delta;
- cmd->dw32.seg_delta_qp2 = segment_param->seg_data[2].segment_qindex_delta;
- cmd->dw32.seg_delta_qp3 = segment_param->seg_data[3].segment_qindex_delta;
-
- cmd->dw33.seg_delta_qp4 = segment_param->seg_data[4].segment_qindex_delta;
- cmd->dw33.seg_delta_qp5 = segment_param->seg_data[5].segment_qindex_delta;
- cmd->dw33.seg_delta_qp6 = segment_param->seg_data[6].segment_qindex_delta;
- cmd->dw33.seg_delta_qp7 = segment_param->seg_data[7].segment_qindex_delta;
- }
-
- //cmd->dw34.temporal_id = pPicParams->temporal_idi;
- cmd->dw34.temporal_id = 0;
- cmd->dw34.multi_ref_qp_check = param->multi_ref_qp_check;
-
- cmd->dw35.max_num_pak_passes = param->brc_num_pak_passes;
- cmd->dw35.sync_async = 0;
- cmd->dw35.mbrc = param->mbbrc_enabled;
- if (*param->pbrc_init_current_target_buf_full_in_bits >
- ((double)(*param->pbrc_init_reset_buf_size_in_bits))) {
- *param->pbrc_init_current_target_buf_full_in_bits -=
- (double)(*param->pbrc_init_reset_buf_size_in_bits);
- cmd->dw35.overflow = 1;
- }
- else
- cmd->dw35.overflow = 0;
-
- cmd->dw24.target_size = (uint32_t)(*param->pbrc_init_current_target_buf_full_in_bits);
-
- cmd->dw36.segmentation = pic_param->pic_flags.bits.segmentation_enabled;
-
- *param->pbrc_init_current_target_buf_full_in_bits += *param->pbrc_init_reset_input_bits_per_frame;
-
- cmd->dw38.qdelta_ydc = pic_param->luma_dc_qindex_delta;
- cmd->dw38.qdelta_uvdc = pic_param->chroma_dc_qindex_delta;
- cmd->dw38.qdelta_uvac = pic_param->chroma_ac_qindex_delta;
-
- break;
- }
- case VP9_MEDIA_STATE_ENC_I_FRAME_DIST:
- cmd->dw2.intra_mode_disable = 0;
- break;
- default:
- break;
- }
-
- cmd->dw48.brc_y4x_input_bti = VP9_BTI_BRC_SRCY4X_G9;
- cmd->dw49.brc_vme_coarse_intra_input_bti = VP9_BTI_BRC_VME_COARSE_INTRA_G9;
- cmd->dw50.brc_history_buffer_bti = VP9_BTI_BRC_HISTORY_G9;
- cmd->dw51.brc_const_data_input_bti = VP9_BTI_BRC_CONSTANT_DATA_G9;
- cmd->dw52.brc_distortion_bti = VP9_BTI_BRC_DISTORTION_G9;
- cmd->dw53.brc_mmdk_pak_output_bti = VP9_BTI_BRC_MMDK_PAK_OUTPUT_G9;
- cmd->dw54.brc_enccurbe_input_bti = VP9_BTI_BRC_MBENC_CURBE_INPUT_G9;
- cmd->dw55.brc_enccurbe_output_bti = VP9_BTI_BRC_MBENC_CURBE_OUTPUT_G9;
- cmd->dw56.brc_pic_state_input_bti = VP9_BTI_BRC_PIC_STATE_INPUT_G9;
- cmd->dw57.brc_pic_state_output_bti = VP9_BTI_BRC_PIC_STATE_OUTPUT_G9;
- cmd->dw58.brc_seg_state_input_bti = VP9_BTI_BRC_SEGMENT_STATE_INPUT_G9;
- cmd->dw59.brc_seg_state_output_bti = VP9_BTI_BRC_SEGMENT_STATE_OUTPUT_G9;
- cmd->dw60.brc_bitstream_size_data_bti = VP9_BTI_BRC_BITSTREAM_SIZE_G9;
- cmd->dw61.brc_hfw_data_output_bti = VP9_BTI_BRC_HFW_DATA_G9;
-
- i965_gpe_context_unmap_curbe(gpe_context);
- return;
-}
-
-static void
-gen9_brc_init_reset_add_surfaces_vp9(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- struct i965_gpe_context *gpe_context)
-{
- struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context;
-
- gen9_add_buffer_gpe_surface(ctx,
- gpe_context,
- &vme_context->res_brc_history_buffer,
- 0,
- vme_context->res_brc_history_buffer.size,
- 0,
- VP9_BTI_BRC_HISTORY_G9);
-
- gen9_add_buffer_2d_gpe_surface(ctx,
- gpe_context,
- &vme_context->s4x_memv_distortion_buffer,
- 1,
- I965_SURFACEFORMAT_R8_UNORM,
- VP9_BTI_BRC_DISTORTION_G9);
-}
-
-/* The function related with BRC */
-static VAStatus
-gen9_vp9_brc_init_reset_kernel(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context;
- struct vp9_brc_context *brc_context = &vme_context->brc_context;
- struct gpe_media_object_parameter media_object_param;
- struct i965_gpe_context *gpe_context;
- int gpe_index = VP9_BRC_INIT;
- int media_function = VP9_MEDIA_STATE_BRC_INIT_RESET;
- struct gen9_vp9_brc_curbe_param brc_initreset_curbe;
- VAEncPictureParameterBufferVP9 *pic_param;
- struct gen9_vp9_state *vp9_state;
-
- vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state;
-
- if (!vp9_state || !vp9_state->pic_param)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- pic_param = vp9_state->pic_param;
-
- if (vp9_state->brc_inited)
- gpe_index = VP9_BRC_RESET;
-
- gpe_context = &brc_context->gpe_contexts[gpe_index];
-
- gen8_gpe_context_init(ctx, gpe_context);
- gen9_gpe_reset_binding_table(ctx, gpe_context);
-
- brc_initreset_curbe.media_state_type = media_function;
- brc_initreset_curbe.curr_frame = pic_param->reconstructed_frame;
- brc_initreset_curbe.ppic_param = vp9_state->pic_param;
- brc_initreset_curbe.pseq_param = vp9_state->seq_param;
- brc_initreset_curbe.psegment_param = vp9_state->segment_param;
- brc_initreset_curbe.frame_width = vp9_state->frame_width;
- brc_initreset_curbe.frame_height = vp9_state->frame_height;
- brc_initreset_curbe.pbrc_init_current_target_buf_full_in_bits =
- &vp9_state->brc_init_current_target_buf_full_in_bits;
- brc_initreset_curbe.pbrc_init_reset_buf_size_in_bits =
- &vp9_state->brc_init_reset_buf_size_in_bits;
- brc_initreset_curbe.pbrc_init_reset_input_bits_per_frame =
- &vp9_state->brc_init_reset_input_bits_per_frame;
- brc_initreset_curbe.picture_coding_type = vp9_state->picture_coding_type;
- brc_initreset_curbe.initbrc = !vp9_state->brc_inited;
- brc_initreset_curbe.mbbrc_enabled = 0;
- brc_initreset_curbe.ref_frame_flag = vp9_state->ref_frame_flag;
-
- vme_context->pfn_set_curbe_brc(ctx, encode_state,
- gpe_context,
- encoder_context,
- &brc_initreset_curbe);
-
- gen9_brc_init_reset_add_surfaces_vp9(ctx, encode_state, encoder_context, gpe_context);
- gen8_gpe_setup_interface_data(ctx, gpe_context);
-
- memset(&media_object_param, 0, sizeof(media_object_param));
- gen9_run_kernel_media_object(ctx, encoder_context, gpe_context, media_function, &media_object_param);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen9_brc_intra_dist_add_surfaces_vp9(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- struct i965_gpe_context *gpe_context)
-{
- struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context;
-
- struct object_surface *obj_surface;
- struct gen9_surface_vp9 *vp9_priv_surface;
-
- /* sScaled4xSurface surface */
- obj_surface = encode_state->reconstructed_object;
-
- vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data);
-
- obj_surface = vp9_priv_surface->scaled_4x_surface_obj;
- gen9_add_2d_gpe_surface(ctx, gpe_context,
- obj_surface,
- 0, 1,
- I965_SURFACEFORMAT_R8_UNORM,
- VP9_BTI_BRC_SRCY4X_G9
- );
-
- gen9_add_adv_gpe_surface(ctx, gpe_context,
- obj_surface,
- VP9_BTI_BRC_VME_COARSE_INTRA_G9);
-
- gen9_add_buffer_2d_gpe_surface(ctx,
- gpe_context,
- &vme_context->s4x_memv_distortion_buffer,
- 1,
- I965_SURFACEFORMAT_R8_UNORM,
- VP9_BTI_BRC_DISTORTION_G9);
-
- return;
-}
-
-/* The function related with BRC */
-static VAStatus
-gen9_vp9_brc_intra_dist_kernel(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context;
- struct vp9_brc_context *brc_context = &vme_context->brc_context;
- struct i965_gpe_context *gpe_context;
- int gpe_index = VP9_BRC_INTRA_DIST;
- int media_function = VP9_MEDIA_STATE_ENC_I_FRAME_DIST;
- struct gen9_vp9_brc_curbe_param brc_intra_dist_curbe;
- VAEncPictureParameterBufferVP9 *pic_param;
- struct gen9_vp9_state *vp9_state;
- struct gpe_media_object_walker_parameter media_object_walker_param;
- struct vp9_encoder_kernel_walker_parameter kernel_walker_param;
-
- vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state;
-
- if (!vp9_state || !vp9_state->pic_param)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- pic_param = vp9_state->pic_param;
-
- gpe_context = &brc_context->gpe_contexts[gpe_index];
-
- gen8_gpe_context_init(ctx, gpe_context);
- gen9_gpe_reset_binding_table(ctx, gpe_context);
-
- brc_intra_dist_curbe.media_state_type = media_function;
- brc_intra_dist_curbe.curr_frame = pic_param->reconstructed_frame;
- brc_intra_dist_curbe.ppic_param = vp9_state->pic_param;
- brc_intra_dist_curbe.pseq_param = vp9_state->seq_param;
- brc_intra_dist_curbe.psegment_param = vp9_state->segment_param;
- brc_intra_dist_curbe.frame_width = vp9_state->frame_width;
- brc_intra_dist_curbe.frame_height = vp9_state->frame_height;
- brc_intra_dist_curbe.pbrc_init_current_target_buf_full_in_bits =
- &vp9_state->brc_init_current_target_buf_full_in_bits;
- brc_intra_dist_curbe.pbrc_init_reset_buf_size_in_bits =
- &vp9_state->brc_init_reset_buf_size_in_bits;
- brc_intra_dist_curbe.pbrc_init_reset_input_bits_per_frame =
- &vp9_state->brc_init_reset_input_bits_per_frame;
- brc_intra_dist_curbe.picture_coding_type = vp9_state->picture_coding_type;
- brc_intra_dist_curbe.initbrc = !vp9_state->brc_inited;
- brc_intra_dist_curbe.mbbrc_enabled = 0;
- brc_intra_dist_curbe.ref_frame_flag = vp9_state->ref_frame_flag;
-
- vme_context->pfn_set_curbe_brc(ctx, encode_state,
- gpe_context,
- encoder_context,
- &brc_intra_dist_curbe);
-
- /* zero distortion buffer */
- i965_zero_gpe_resource(&vme_context->s4x_memv_distortion_buffer);
-
- gen9_brc_intra_dist_add_surfaces_vp9(ctx, encode_state, encoder_context, gpe_context);
- gen8_gpe_setup_interface_data(ctx, gpe_context);
-
- memset(&kernel_walker_param, 0, sizeof(kernel_walker_param));
- kernel_walker_param.resolution_x = vme_context->downscaled_width_in_mb4x;
- kernel_walker_param.resolution_y = vme_context->downscaled_height_in_mb4x;
- kernel_walker_param.no_dependency = 1;
-
- gen9_init_media_object_walker_parameter(encoder_context, &kernel_walker_param, &media_object_walker_param);
-
- gen9_run_kernel_media_object_walker(ctx, encoder_context,
- gpe_context,
- media_function,
- &media_object_walker_param);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-intel_vp9enc_construct_picstate_batchbuf(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- struct i965_gpe_resource *gpe_resource)
-{
- struct gen9_vp9_state *vp9_state;
- VAEncPictureParameterBufferVP9 *pic_param;
- int frame_width_minus1, frame_height_minus1;
- int is_lossless = 0;
- int is_intra_only = 0;
- unsigned int last_frame_type;
- unsigned int ref_flags;
- unsigned int use_prev_frame_mvs, adapt_flag;
- struct gen9_surface_vp9 *vp9_surface = NULL;
- struct object_surface *obj_surface = NULL;
- uint32_t scale_h = 0;
- uint32_t scale_w = 0;
-
- char *pdata;
- int i, j;
- unsigned int *cmd_ptr, cmd_value, tmp;
-
- pdata = i965_map_gpe_resource(gpe_resource);
- vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state;
-
- if (!vp9_state || !vp9_state->pic_param || !pdata)
- return;
-
- pic_param = vp9_state->pic_param;
- frame_width_minus1 = ALIGN(pic_param->frame_width_dst, 8) - 1;
- frame_height_minus1 = ALIGN(pic_param->frame_height_dst, 8) - 1;
- if ((pic_param->luma_ac_qindex == 0) &&
- (pic_param->luma_dc_qindex_delta == 0) &&
- (pic_param->chroma_ac_qindex_delta == 0) &&
- (pic_param->chroma_dc_qindex_delta == 0))
- is_lossless = 1;
-
- if (pic_param->pic_flags.bits.frame_type)
- is_intra_only = pic_param->pic_flags.bits.intra_only;
-
- last_frame_type = vp9_state->vp9_last_frame.frame_type;
-
- use_prev_frame_mvs = 0;
- if (pic_param->pic_flags.bits.frame_type == HCP_VP9_KEY_FRAME) {
- last_frame_type = 0;
- ref_flags = 0;
- } else {
- ref_flags = ((pic_param->ref_flags.bits.ref_arf_sign_bias << 9) |
- (pic_param->ref_flags.bits.ref_gf_sign_bias << 8) |
- (pic_param->ref_flags.bits.ref_last_sign_bias << 7)
- );
- if (!pic_param->pic_flags.bits.error_resilient_mode &&
- (pic_param->frame_width_dst == vp9_state->vp9_last_frame.frame_width) &&
- (pic_param->frame_height_dst == vp9_state->vp9_last_frame.frame_height) &&
- !pic_param->pic_flags.bits.intra_only &&
- vp9_state->vp9_last_frame.show_frame &&
- ((vp9_state->vp9_last_frame.frame_type == HCP_VP9_INTER_FRAME) &&
- !vp9_state->vp9_last_frame.intra_only)
- )
- use_prev_frame_mvs = 1;
- }
- adapt_flag = 0;
- if (!pic_param->pic_flags.bits.error_resilient_mode &&
- !pic_param->pic_flags.bits.frame_parallel_decoding_mode)
- adapt_flag = 1;
-
- for (i = 0; i < 4; i++) {
- uint32_t non_first_pass;
- non_first_pass = 1;
- if (i == 0)
- non_first_pass = 0;
-
- cmd_ptr =(unsigned int *)(pdata + i * VP9_PIC_STATE_BUFFER_SIZE);
-
- *cmd_ptr++ = (HCP_VP9_PIC_STATE | (33 - 2));
- *cmd_ptr++ = (frame_height_minus1 << 16 |
- frame_width_minus1);
- /* dw2 */
- *cmd_ptr++ = ( 0 << 31 | /* disable segment_in */
- 0 << 30 | /* disable segment_out */
- is_lossless << 29 | /* loseless */
- (pic_param->pic_flags.bits.segmentation_enabled && pic_param->pic_flags.bits.segmentation_temporal_update) << 28 | /* temporal update */
- (pic_param->pic_flags.bits.segmentation_enabled && pic_param->pic_flags.bits.segmentation_update_map) << 27 | /* temporal update */
- (pic_param->pic_flags.bits.segmentation_enabled << 26) |
- (pic_param->sharpness_level << 23) |
- (pic_param->filter_level << 17) |
- (pic_param->pic_flags.bits.frame_parallel_decoding_mode << 16) |
- (pic_param->pic_flags.bits.error_resilient_mode << 15) |
- (pic_param->pic_flags.bits.refresh_frame_context << 14) |
- (last_frame_type << 13) |
- (vp9_state->tx_mode == TX_MODE_SELECT) << 12 |
- (pic_param->pic_flags.bits.comp_prediction_mode == REFERENCE_MODE_SELECT) << 11 |
- (use_prev_frame_mvs) << 10 |
- ref_flags |
- (pic_param->pic_flags.bits.mcomp_filter_type << 4) |
- (pic_param->pic_flags.bits.allow_high_precision_mv << 3) |
- (is_intra_only << 2) |
- (adapt_flag << 1) |
- (pic_param->pic_flags.bits.frame_type) << 0);
-
- *cmd_ptr++ =((0 << 28) | /* VP9Profile0 */
- (0 << 24) | /* 8-bit depth */
- (0 << 22) | /* only 420 format */
- (0 << 0) | /* sse statistics */
- (pic_param->log2_tile_rows << 8) |
- (pic_param->log2_tile_columns << 0));
-
- /* dw4..6 */
- if (pic_param->pic_flags.bits.frame_type &&
- !pic_param->pic_flags.bits.intra_only) {
- for (j = 0; j < 3; j++) {
- obj_surface = encode_state->reference_objects[j];
- scale_w = 0;
- scale_h = 0;
- if (obj_surface && obj_surface->private_data) {
- vp9_surface = obj_surface->private_data;
- scale_w = (vp9_surface->frame_width << 14) / pic_param->frame_width_dst;
- scale_h = (vp9_surface->frame_height << 14) / pic_param->frame_height_dst;
- *cmd_ptr++ = (scale_w << 16 |
- scale_h);
- } else
- *cmd_ptr++ = 0;
- }
- } else {
- *cmd_ptr++ = 0;
- *cmd_ptr++ = 0;
- *cmd_ptr++ = 0;
- }
- /* dw7..9 */
- for(j = 0; j < 3; j++) {
- obj_surface = encode_state->reference_objects[j];
- vp9_surface = NULL;
-
- if (obj_surface && obj_surface->private_data) {
- vp9_surface = obj_surface->private_data;
- *cmd_ptr++ = (vp9_surface->frame_height - 1) << 16 |
- (vp9_surface->frame_width - 1);
- } else
- *cmd_ptr++ = 0;
- }
- /* dw10 */
- *cmd_ptr++ = 0;
- /* dw11 */
- *cmd_ptr++ = (1 << 1);
- *cmd_ptr++ = 0;
-
- /* dw13 */
- *cmd_ptr++ = ((1 << 25) | /* header insertation for VP9 */
- (0 << 24) | /* tail insertation */
- (pic_param->luma_ac_qindex << 16) |
- 0 /* compressed header bin count */);
-
- /* dw14 */
- tmp = intel_convert_sign_mag(pic_param->luma_dc_qindex_delta, 5);
- cmd_value = (tmp << 16);
- tmp = intel_convert_sign_mag(pic_param->chroma_dc_qindex_delta, 5);
- cmd_value |= (tmp << 8);
- tmp = intel_convert_sign_mag(pic_param->chroma_ac_qindex_delta, 5);
- cmd_value |= tmp;
- *cmd_ptr++ = cmd_value;
-
- tmp = intel_convert_sign_mag(pic_param->ref_lf_delta[0], 7);
- cmd_value = tmp;
- tmp = intel_convert_sign_mag(pic_param->ref_lf_delta[1], 7);
- cmd_value |= (tmp << 8);
- tmp = intel_convert_sign_mag(pic_param->ref_lf_delta[2], 7);
- cmd_value |= (tmp << 16);
- tmp = intel_convert_sign_mag(pic_param->ref_lf_delta[3], 7);
- cmd_value |= (tmp << 24);
- *cmd_ptr++ = cmd_value;
-
- /* dw16 */
- tmp = intel_convert_sign_mag(pic_param->mode_lf_delta[0], 7);
- cmd_value = tmp;
- tmp = intel_convert_sign_mag(pic_param->mode_lf_delta[1], 7);
- cmd_value |= (tmp << 8);
- *cmd_ptr++ = cmd_value;
-
- /* dw17 */
- *cmd_ptr++ = vp9_state->frame_header.bit_offset_ref_lf_delta |
- (vp9_state->frame_header.bit_offset_mode_lf_delta << 16);
- *cmd_ptr++ = vp9_state->frame_header.bit_offset_qindex |
- (vp9_state->frame_header.bit_offset_lf_level << 16);
-
- /* dw19 */
- *cmd_ptr++ = (1 << 26 | (1 << 25) |
- non_first_pass << 16);
- /* dw20 */
- *cmd_ptr++ = (1 << 31) | (256);
-
- /* dw21 */
- *cmd_ptr++ = (0 << 31) | 1;
-
- /* dw22-dw24. Frame_delta_qindex_range */
- *cmd_ptr++ = 0;
- *cmd_ptr++ = 0;
- *cmd_ptr++ = 0;
-
- /* dw25-26. frame_delta_lf_range */
- *cmd_ptr++ = 0;
- *cmd_ptr++ = 0;
-
- /* dw27. frame_delta_lf_min */
- *cmd_ptr++ = 0;
-
- /* dw28..30 */
- *cmd_ptr++ = 0;
- *cmd_ptr++ = 0;
- *cmd_ptr++ = 0;
-
- /* dw31 */
- *cmd_ptr++ = (0 << 30) | 1;
- /* dw32 */
- *cmd_ptr++ = vp9_state->frame_header.bit_offset_first_partition_size;
-
- *cmd_ptr++ = 0;
- *cmd_ptr++ = MI_BATCH_BUFFER_END;
- }
-
- i965_unmap_gpe_resource(gpe_resource);
-}
-
-static void
-gen9_brc_update_add_surfaces_vp9(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- struct i965_gpe_context *brc_gpe_context,
- struct i965_gpe_context *mbenc_gpe_context)
-{
- struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context;
-
- /* 0. BRC history buffer */
- gen9_add_buffer_gpe_surface(ctx,
- brc_gpe_context,
- &vme_context->res_brc_history_buffer,
- 0,
- vme_context->res_brc_history_buffer.size,
- 0,
- VP9_BTI_BRC_HISTORY_G9);
-
- /* 1. Constant data buffer */
- gen9_add_buffer_gpe_surface(ctx,
- brc_gpe_context,
- &vme_context->res_brc_const_data_buffer,
- 0,
- vme_context->res_brc_const_data_buffer.size,
- 0,
- VP9_BTI_BRC_CONSTANT_DATA_G9);
-
- /* 2. Distortion 2D surface buffer */
- gen9_add_buffer_2d_gpe_surface(ctx,
- brc_gpe_context,
- &vme_context->s4x_memv_distortion_buffer,
- 1,
- I965_SURFACEFORMAT_R8_UNORM,
- VP9_BTI_BRC_DISTORTION_G9);
-
- /* 3. pak buffer */
- gen9_add_buffer_gpe_surface(ctx,
- brc_gpe_context,
- &vme_context->res_brc_mmdk_pak_buffer,
- 0,
- vme_context->res_brc_mmdk_pak_buffer.size,
- 0,
- VP9_BTI_BRC_MMDK_PAK_OUTPUT_G9);
- /* 4. Mbenc curbe input buffer */
- gen9_add_dri_buffer_gpe_surface(ctx,
- brc_gpe_context,
- mbenc_gpe_context->curbe.bo,
- 0,
- ALIGN(mbenc_gpe_context->curbe.length, 64),
- mbenc_gpe_context->curbe.offset,
- VP9_BTI_BRC_MBENC_CURBE_INPUT_G9);
- /* 5. Mbenc curbe output buffer */
- gen9_add_dri_buffer_gpe_surface(ctx,
- brc_gpe_context,
- mbenc_gpe_context->curbe.bo,
- 0,
- ALIGN(mbenc_gpe_context->curbe.length, 64),
- mbenc_gpe_context->curbe.offset,
- VP9_BTI_BRC_MBENC_CURBE_OUTPUT_G9);
-
- /* 6. BRC_PIC_STATE read buffer */
- gen9_add_buffer_gpe_surface(ctx, brc_gpe_context,
- &vme_context->res_pic_state_brc_read_buffer,
- 0,
- vme_context->res_pic_state_brc_read_buffer.size,
- 0,
- VP9_BTI_BRC_PIC_STATE_INPUT_G9);
-
- /* 7. BRC_PIC_STATE write buffer */
- gen9_add_buffer_gpe_surface(ctx, brc_gpe_context,
- &vme_context->res_pic_state_brc_write_hfw_read_buffer,
- 0,
- vme_context->res_pic_state_brc_write_hfw_read_buffer.size,
- 0,
- VP9_BTI_BRC_PIC_STATE_OUTPUT_G9);
-
- /* 8. SEGMENT_STATE read buffer */
- gen9_add_buffer_gpe_surface(ctx, brc_gpe_context,
- &vme_context->res_seg_state_brc_read_buffer,
- 0,
- vme_context->res_seg_state_brc_read_buffer.size,
- 0,
- VP9_BTI_BRC_SEGMENT_STATE_INPUT_G9);
-
- /* 9. SEGMENT_STATE write buffer */
- gen9_add_buffer_gpe_surface(ctx, brc_gpe_context,
- &vme_context->res_seg_state_brc_write_buffer,
- 0,
- vme_context->res_seg_state_brc_write_buffer.size,
- 0,
- VP9_BTI_BRC_SEGMENT_STATE_OUTPUT_G9);
-
- /* 10. Bitstream size buffer */
- gen9_add_buffer_gpe_surface(ctx, brc_gpe_context,
- &vme_context->res_brc_bitstream_size_buffer,
- 0,
- vme_context->res_brc_bitstream_size_buffer.size,
- 0,
- VP9_BTI_BRC_BITSTREAM_SIZE_G9);
-
- gen9_add_buffer_gpe_surface(ctx, brc_gpe_context,
- &vme_context->res_brc_hfw_data_buffer,
- 0,
- vme_context->res_brc_hfw_data_buffer.size,
- 0,
- VP9_BTI_BRC_HFW_DATA_G9);
-
- return;
-}
-
-static VAStatus
-gen9_vp9_brc_update_kernel(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context;
- struct vp9_brc_context *brc_context = &vme_context->brc_context;
- struct i965_gpe_context *brc_gpe_context, *mbenc_gpe_context;
- int mbenc_index, gpe_index = VP9_BRC_UPDATE;
- int media_function = VP9_MEDIA_STATE_BRC_UPDATE;
- int mbenc_function;
- struct gen9_vp9_brc_curbe_param brc_update_curbe_param;
- VAEncPictureParameterBufferVP9 *pic_param;
- struct gen9_vp9_state *vp9_state;
- struct gen9_vp9_mbenc_curbe_param mbenc_curbe_param;
- struct gpe_media_object_parameter media_object_param;
-
- vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state;
- if (!vp9_state || !vp9_state->pic_param)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- pic_param = vp9_state->pic_param;
- // Setup VP9 MbEnc Curbe
- if (vp9_state->picture_coding_type) {
- mbenc_function = VP9_MEDIA_STATE_MBENC_P;
- mbenc_index = VP9_MBENC_IDX_INTER;
- } else {
- mbenc_function = VP9_MEDIA_STATE_MBENC_I_32x32;
- mbenc_index = VP9_MBENC_IDX_KEY_32x32;
- }
-
- mbenc_gpe_context = &(vme_context->mbenc_context.gpe_contexts[mbenc_index]);
-
- memset(&mbenc_curbe_param, 0, sizeof(mbenc_curbe_param));
-
- mbenc_curbe_param.ppic_param = vp9_state->pic_param;
- mbenc_curbe_param.pseq_param = vp9_state->seq_param;
- mbenc_curbe_param.psegment_param = vp9_state->segment_param;
- //mbenc_curbe_param.ppRefList = &(vp9_state->pRefList[0]);
- mbenc_curbe_param.last_ref_obj = vp9_state->last_ref_obj;
- mbenc_curbe_param.golden_ref_obj = vp9_state->golden_ref_obj;
- mbenc_curbe_param.alt_ref_obj = vp9_state->alt_ref_obj;
- mbenc_curbe_param.frame_width_in_mb = ALIGN(vp9_state->frame_width, 16) / 16;
- mbenc_curbe_param.frame_height_in_mb = ALIGN(vp9_state->frame_height, 16) / 16;
- mbenc_curbe_param.hme_enabled = vp9_state->hme_enabled;
- mbenc_curbe_param.ref_frame_flag = vp9_state->ref_frame_flag;
- mbenc_curbe_param.multi_ref_qp_check = vp9_state->multi_ref_qp_check;
- mbenc_curbe_param.picture_coding_type = vp9_state->picture_coding_type;
- mbenc_curbe_param.media_state_type = mbenc_function;
-
- vme_context->pfn_set_curbe_mbenc(ctx, encode_state,
- mbenc_gpe_context,
- encoder_context,
- &mbenc_curbe_param);
-
- vp9_state->mbenc_curbe_set_in_brc_update = true;
-
- brc_gpe_context = &brc_context->gpe_contexts[gpe_index];
-
- gen8_gpe_context_init(ctx, brc_gpe_context);
- gen9_gpe_reset_binding_table(ctx, brc_gpe_context);
-
- memset(&brc_update_curbe_param, 0, sizeof(brc_update_curbe_param));
-
- // Setup BRC Update Curbe
- brc_update_curbe_param.media_state_type = media_function;
- brc_update_curbe_param.curr_frame = pic_param->reconstructed_frame;
- brc_update_curbe_param.ppic_param = vp9_state->pic_param;
- brc_update_curbe_param.pseq_param = vp9_state->seq_param;
- brc_update_curbe_param.psegment_param = vp9_state->segment_param;
- brc_update_curbe_param.picture_coding_type = vp9_state->picture_coding_type;
- brc_update_curbe_param.frame_width_in_mb = ALIGN(vp9_state->frame_width, 16) / 16;
- brc_update_curbe_param.frame_height_in_mb = ALIGN(vp9_state->frame_height, 16) / 16;
- brc_update_curbe_param.hme_enabled = vp9_state->hme_enabled;
- brc_update_curbe_param.b_used_ref = 1;
- brc_update_curbe_param.frame_number = vp9_state->frame_number;
- brc_update_curbe_param.ref_frame_flag = vp9_state->ref_frame_flag;
- brc_update_curbe_param.mbbrc_enabled = 0;
- brc_update_curbe_param.multi_ref_qp_check = vp9_state->multi_ref_qp_check;
- brc_update_curbe_param.brc_num_pak_passes = vp9_state->num_pak_passes;
-
- brc_update_curbe_param.pbrc_init_current_target_buf_full_in_bits =
- &vp9_state->brc_init_current_target_buf_full_in_bits;
- brc_update_curbe_param.pbrc_init_reset_buf_size_in_bits =
- &vp9_state->brc_init_reset_buf_size_in_bits;
- brc_update_curbe_param.pbrc_init_reset_input_bits_per_frame =
- &vp9_state->brc_init_reset_input_bits_per_frame;
-
- vme_context->pfn_set_curbe_brc(ctx, encode_state,
- brc_gpe_context,
- encoder_context,
- &brc_update_curbe_param);
-
-
- // Check if the constant data surface is present
- if (vp9_state->brc_constant_buffer_supported)
- {
- char *brc_const_buffer;
- brc_const_buffer = i965_map_gpe_resource(&vme_context->res_brc_const_data_buffer);
-
- if (!brc_const_buffer)
- return VA_STATUS_ERROR_OPERATION_FAILED;
-
- if (vp9_state->picture_coding_type)
- memcpy(brc_const_buffer, vp9_brc_const_data_p_g9,
- sizeof(vp9_brc_const_data_p_g9));
- else
- memcpy(brc_const_buffer, vp9_brc_const_data_i_g9,
- sizeof(vp9_brc_const_data_i_g9));
-
- i965_unmap_gpe_resource(&vme_context->res_brc_const_data_buffer);
- }
-
- if (pic_param->pic_flags.bits.segmentation_enabled)
- {
- //reallocate the vme_state->mb_segment_map_surface
- /* this will be added later */
- }
-
- {
- pic_param->filter_level = 0;
- // clear the filter level value in picParams ebfore programming pic state, as this value will be determined and updated by BRC.
- intel_vp9enc_construct_picstate_batchbuf(ctx, encode_state,
- encoder_context, &vme_context->res_pic_state_brc_read_buffer);
- }
-
- gen9_brc_update_add_surfaces_vp9(ctx, encode_state,
- encoder_context,
- brc_gpe_context,
- mbenc_gpe_context);
-
- gen8_gpe_setup_interface_data(ctx, brc_gpe_context);
- memset(&media_object_param, 0, sizeof(media_object_param));
- gen9_run_kernel_media_object(ctx, encoder_context,
- brc_gpe_context,
- media_function,
- &media_object_param);
- return VA_STATUS_SUCCESS;
-}
-
-static
-void gen9_vp9_set_curbe_me(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct i965_gpe_context *gpe_context,
- struct intel_encoder_context *encoder_context,
- struct gen9_vp9_me_curbe_param *param)
-{
- vp9_me_curbe_data *me_cmd;
- int enc_media_state;
- int me_mode;
- unsigned int width, height;
- uint32_t l0_ref_frames;
- uint32_t scale_factor;
-
- if (param->b16xme_enabled) {
- if (param->use_16x_me)
- me_mode = VP9_ENC_ME16X_BEFORE_ME4X;
- else
- me_mode = VP9_ENC_ME4X_AFTER_ME16X;
- } else {
- me_mode = VP9_ENC_ME4X_ONLY;
- }
-
- if (me_mode == VP9_ENC_ME16X_BEFORE_ME4X)
- scale_factor = 16;
- else
- scale_factor = 4;
-
- if (param->use_16x_me)
- enc_media_state = VP9_MEDIA_STATE_16X_ME;
- else
- enc_media_state = VP9_MEDIA_STATE_4X_ME;
-
- me_cmd = i965_gpe_context_map_curbe(gpe_context);
-
- if (!me_cmd)
- return;
-
- memset(me_cmd, 0, sizeof(vp9_me_curbe_data));
-
- me_cmd->dw1.max_num_mvs = 0x10;
- me_cmd->dw1.bi_weight = 0x00;
-
- me_cmd->dw2.max_num_su = 0x39;
- me_cmd->dw2.max_len_sp = 0x39;
-
- me_cmd->dw3.sub_mb_part_mask = 0x77;
- me_cmd->dw3.inter_sad = 0x00;
- me_cmd->dw3.intra_sad = 0x00;
- me_cmd->dw3.bme_disable_fbr = 0x01;
- me_cmd->dw3.sub_pel_mode = 0x03;
-
- width = param->frame_width / scale_factor;
- height = param->frame_height / scale_factor;
-
- me_cmd->dw4.picture_width = ALIGN(width, 16) / 16;
- me_cmd->dw4.picture_height_minus1 = ALIGN(height, 16) / 16 - 1;
-
- me_cmd->dw5.ref_width = 0x30;
- me_cmd->dw5.ref_height = 0x28;
-
- if (enc_media_state == VP9_MEDIA_STATE_4X_ME)
- me_cmd->dw6.write_distortions = 0x01;
-
- me_cmd->dw6.use_mv_from_prev_step = me_mode == VP9_ENC_ME4X_AFTER_ME16X ? 1 : 0;
- me_cmd->dw6.super_combine_dist = 0x5;
- me_cmd->dw6.max_vmvr = 0x7fc;
-
- l0_ref_frames = (param->ref_frame_flag & 0x01) +
- !!(param->ref_frame_flag & 0x02) +
- !!(param->ref_frame_flag & 0x04);
- me_cmd->dw13.num_ref_idx_l0_minus1 = (l0_ref_frames > 0) ? l0_ref_frames - 1 : 0;
- me_cmd->dw13.num_ref_idx_l1_minus1 = 0;
-
- me_cmd->dw14.l0_ref_pic_polarity_bits = 0;
- me_cmd->dw14.l1_ref_pic_polarity_bits = 0;
-
- me_cmd->dw15.mv_shift_factor = 0x02;
-
- {
- memcpy((void *)((char *)me_cmd + 64),
- vp9_diamond_ime_search_path_delta,
- sizeof(vp9_diamond_ime_search_path_delta));
- }
-
-
- me_cmd->dw32._4x_memv_output_data_surf_index = VP9_BTI_ME_MV_DATA_SURFACE;
- me_cmd->dw33._16x_32x_memv_input_data_surf_index = VP9_BTI_16XME_MV_DATA_SURFACE;
- me_cmd->dw34._4x_me_output_dist_surf_index = VP9_BTI_ME_DISTORTION_SURFACE;
- me_cmd->dw35._4x_me_output_brc_dist_surf_index = VP9_BTI_ME_BRC_DISTORTION_SURFACE;
- me_cmd->dw36.vme_fwd_inter_pred_surf_index = VP9_BTI_ME_CURR_PIC_L0;
- me_cmd->dw37.vme_bdw_inter_pred_surf_index = VP9_BTI_ME_CURR_PIC_L1;
-
- i965_gpe_context_unmap_curbe(gpe_context);
-}
-
-static void
-gen9_vp9_send_me_surface(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct i965_gpe_context *gpe_context,
- struct intel_encoder_context *encoder_context,
- struct gen9_vp9_me_surface_param *param)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface;
- struct gen9_surface_vp9 *vp9_priv_surface;
- struct object_surface *input_surface;
- struct i965_gpe_resource *gpe_resource;
- int ref_bti;
-
- obj_surface = SURFACE(param->curr_pic);
-
- if (!obj_surface || !obj_surface->private_data)
- return;
-
- vp9_priv_surface = obj_surface->private_data;
- if (param->use_16x_me)
- {
- gpe_resource = param->pres_16x_memv_data_buffer;
- }
- else
- {
- gpe_resource = param->pres_4x_memv_data_buffer;
- }
-
- gen9_add_buffer_2d_gpe_surface(ctx, gpe_context,
- gpe_resource,
- 1,
- I965_SURFACEFORMAT_R8_UNORM,
- VP9_BTI_ME_MV_DATA_SURFACE);
-
- if (param->b16xme_enabled) {
- gpe_resource = param->pres_16x_memv_data_buffer;
- gen9_add_buffer_2d_gpe_surface(ctx, gpe_context,
- gpe_resource,
- 1,
- I965_SURFACEFORMAT_R8_UNORM,
- VP9_BTI_16XME_MV_DATA_SURFACE);
- }
-
- if (!param->use_16x_me) {
- gpe_resource = param->pres_me_brc_distortion_buffer;
-
- gen9_add_buffer_2d_gpe_surface(ctx, gpe_context,
- gpe_resource,
- 1,
- I965_SURFACEFORMAT_R8_UNORM,
- VP9_BTI_ME_BRC_DISTORTION_SURFACE);
-
- gpe_resource = param->pres_me_distortion_buffer;
-
- gen9_add_buffer_2d_gpe_surface(ctx, gpe_context,
- gpe_resource,
- 1,
- I965_SURFACEFORMAT_R8_UNORM,
- VP9_BTI_ME_DISTORTION_SURFACE);
- }
-
- if (param->use_16x_me)
- input_surface = vp9_priv_surface->scaled_16x_surface_obj;
- else
- input_surface = vp9_priv_surface->scaled_4x_surface_obj;
-
- gen9_add_adv_gpe_surface(ctx, gpe_context,
- input_surface,
- VP9_BTI_ME_CURR_PIC_L0);
-
- ref_bti = VP9_BTI_ME_CURR_PIC_L0 + 1;
-
-
- if (param->last_ref_pic) {
- obj_surface = param->last_ref_pic;
- vp9_priv_surface = obj_surface->private_data;
-
- if (param->use_16x_me)
- input_surface = vp9_priv_surface->scaled_16x_surface_obj;
- else
- input_surface = vp9_priv_surface->scaled_4x_surface_obj;
-
- if (param->dys_enabled &&
- ((vp9_priv_surface->frame_width != param->frame_width) ||
- (vp9_priv_surface->frame_height != param->frame_height))) {
- if (param->use_16x_me)
- input_surface = vp9_priv_surface->dys_16x_surface_obj;
- else
- input_surface = vp9_priv_surface->dys_4x_surface_obj;
- }
- gen9_add_adv_gpe_surface(ctx, gpe_context,
- input_surface,
- ref_bti);
- gen9_add_adv_gpe_surface(ctx, gpe_context,
- input_surface,
- ref_bti + 1);
- ref_bti += 2;
- }
-
- if (param->golden_ref_pic) {
- obj_surface = param->golden_ref_pic;
- vp9_priv_surface = obj_surface->private_data;
-
- if (param->use_16x_me)
- input_surface = vp9_priv_surface->scaled_16x_surface_obj;
- else
- input_surface = vp9_priv_surface->scaled_4x_surface_obj;
-
- if (param->dys_enabled &&
- ((vp9_priv_surface->frame_width != param->frame_width) ||
- (vp9_priv_surface->frame_height != param->frame_height))) {
- if (param->use_16x_me)
- input_surface = vp9_priv_surface->dys_16x_surface_obj;
- else
- input_surface = vp9_priv_surface->dys_4x_surface_obj;
- }
-
- gen9_add_adv_gpe_surface(ctx, gpe_context,
- input_surface,
- ref_bti);
- gen9_add_adv_gpe_surface(ctx, gpe_context,
- input_surface,
- ref_bti + 1);
- ref_bti += 2;
- }
-
- if (param->alt_ref_pic) {
- obj_surface = param->alt_ref_pic;
- vp9_priv_surface = obj_surface->private_data;
-
- if (param->use_16x_me)
- input_surface = vp9_priv_surface->scaled_16x_surface_obj;
- else
- input_surface = vp9_priv_surface->scaled_4x_surface_obj;
-
- if (param->dys_enabled &&
- ((vp9_priv_surface->frame_width != param->frame_width) ||
- (vp9_priv_surface->frame_height != param->frame_height))) {
- if (param->use_16x_me)
- input_surface = vp9_priv_surface->dys_16x_surface_obj;
- else
- input_surface = vp9_priv_surface->dys_4x_surface_obj;
- }
- gen9_add_adv_gpe_surface(ctx, gpe_context,
- input_surface,
- ref_bti);
- gen9_add_adv_gpe_surface(ctx, gpe_context,
- input_surface,
- ref_bti + 1);
- ref_bti += 2;
- }
-
- return;
-}
-
-static
-void gen9_me_add_surfaces_vp9(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- struct i965_gpe_context *gpe_context,
- int use_16x_me)
-{
- struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context;
- struct gen9_vp9_me_surface_param me_surface_param;
- struct gen9_vp9_state *vp9_state;
-
- vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state);
-
- /* sScaled4xSurface surface */
- memset(&me_surface_param, 0, sizeof(me_surface_param));
- me_surface_param.last_ref_pic = vp9_state->last_ref_obj;
- me_surface_param.golden_ref_pic = vp9_state->golden_ref_obj;
- me_surface_param.alt_ref_pic = vp9_state->alt_ref_obj;
- me_surface_param.curr_pic = vp9_state->curr_frame;
- me_surface_param.pres_4x_memv_data_buffer = &vme_context->s4x_memv_data_buffer;
- me_surface_param.pres_16x_memv_data_buffer = &vme_context->s16x_memv_data_buffer;
- me_surface_param.pres_me_distortion_buffer = &vme_context->s4x_memv_distortion_buffer;
- me_surface_param.pres_me_brc_distortion_buffer = &vme_context->s4x_memv_distortion_buffer;
-
- if (use_16x_me) {
- me_surface_param.downscaled_width_in_mb = vp9_state->downscaled_width_16x_in_mb;
- me_surface_param.downscaled_height_in_mb = vp9_state->downscaled_height_16x_in_mb;
- } else {
- me_surface_param.downscaled_width_in_mb = vp9_state->downscaled_width_4x_in_mb;
- me_surface_param.downscaled_height_in_mb = vp9_state->downscaled_height_4x_in_mb;
- }
- me_surface_param.frame_width = vp9_state->frame_width;
- me_surface_param.frame_height = vp9_state->frame_height;
-
- me_surface_param.use_16x_me = use_16x_me;
- me_surface_param.b16xme_enabled = vp9_state->b16xme_enabled;
- me_surface_param.dys_enabled = vp9_state->dys_in_use;
-
- vme_context->pfn_send_me_surface(ctx, encode_state,
- gpe_context,
- encoder_context,
- &me_surface_param);
- return;
-}
-
-static VAStatus
-gen9_vp9_me_kernel(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int use_16x_me)
-{
- struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context;
- struct i965_gpe_context *gpe_context;
- int media_function;
- struct gen9_vp9_me_curbe_param me_curbe_param;
- struct gen9_vp9_state *vp9_state;
- struct gpe_media_object_walker_parameter media_object_walker_param;
- struct vp9_encoder_kernel_walker_parameter kernel_walker_param;
-
- vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state;
- if (!vp9_state || !vp9_state->pic_param)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- if (use_16x_me)
- media_function = VP9_MEDIA_STATE_16X_ME;
- else
- media_function = VP9_MEDIA_STATE_4X_ME;
-
- gpe_context = &(vme_context->me_context.gpe_context);
-
- gen8_gpe_context_init(ctx, gpe_context);
- gen9_gpe_reset_binding_table(ctx, gpe_context);
-
- memset(&me_curbe_param, 0, sizeof(me_curbe_param));
- me_curbe_param.ppic_param = vp9_state->pic_param;
- me_curbe_param.pseq_param = vp9_state->seq_param;
- me_curbe_param.frame_width = vp9_state->frame_width;
- me_curbe_param.frame_height = vp9_state->frame_height;
- me_curbe_param.ref_frame_flag = vp9_state->ref_frame_flag;
- me_curbe_param.use_16x_me = use_16x_me;
- me_curbe_param.b16xme_enabled = vp9_state->b16xme_enabled;
- vme_context->pfn_set_curbe_me(ctx, encode_state,
- gpe_context,
- encoder_context,
- &me_curbe_param);
-
- gen9_me_add_surfaces_vp9(ctx, encode_state,
- encoder_context,
- gpe_context,
- use_16x_me);
-
- gen8_gpe_setup_interface_data(ctx, gpe_context);
-
- memset(&kernel_walker_param, 0, sizeof(kernel_walker_param));
- if (use_16x_me) {
- kernel_walker_param.resolution_x = vp9_state->downscaled_width_16x_in_mb;
- kernel_walker_param.resolution_y = vp9_state->downscaled_height_16x_in_mb;
- } else {
- kernel_walker_param.resolution_x = vp9_state->downscaled_width_4x_in_mb;
- kernel_walker_param.resolution_y = vp9_state->downscaled_height_4x_in_mb;
- }
- kernel_walker_param.no_dependency = 1;
-
- gen9_init_media_object_walker_parameter(encoder_context, &kernel_walker_param, &media_object_walker_param);
-
- gen9_run_kernel_media_object_walker(ctx, encoder_context,
- gpe_context,
- media_function,
- &media_object_walker_param);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen9_vp9_set_curbe_scaling_cm(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct i965_gpe_context *gpe_context,
- struct intel_encoder_context *encoder_context,
- struct gen9_vp9_scaling_curbe_param *curbe_param)
-{
- vp9_scaling4x_curbe_data_cm *curbe_cmd;
-
- curbe_cmd = i965_gpe_context_map_curbe(gpe_context);
-
- if (!curbe_cmd)
- return;
-
- memset(curbe_cmd, 0, sizeof(vp9_scaling4x_curbe_data_cm));
-
- curbe_cmd->dw0.input_picture_width = curbe_param->input_picture_width;
- curbe_cmd->dw0.input_picture_height = curbe_param->input_picture_height;
-
- curbe_cmd->dw1.input_y_bti = VP9_BTI_SCALING_FRAME_SRC_Y;
- curbe_cmd->dw2.output_y_bti = VP9_BTI_SCALING_FRAME_DST_Y;
-
-
- curbe_cmd->dw6.enable_mb_variance_output = 0;
- curbe_cmd->dw6.enable_mb_pixel_average_output = 0;
- curbe_cmd->dw6.enable_blk8x8_stat_output = 0;
-
- if (curbe_param->mb_variance_output_enabled ||
- curbe_param->mb_pixel_average_output_enabled)
- {
- curbe_cmd->dw10.mbv_proc_stat_bti = VP9_BTI_SCALING_FRAME_MBVPROCSTATS_DST_CM;
- }
-
- i965_gpe_context_unmap_curbe(gpe_context);
- return;
-}
-
-static void
-gen9_vp9_send_scaling_surface(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct i965_gpe_context *gpe_context,
- struct intel_encoder_context *encoder_context,
- struct gen9_vp9_scaling_surface_param *scaling_surface_param)
-{
- vp9_bti_scaling_offset *scaling_bti;
- unsigned int surface_format;
-
- scaling_bti = scaling_surface_param->p_scaling_bti;
-
- if (scaling_surface_param->scaling_out_use_32unorm_surf_fmt)
- surface_format = I965_SURFACEFORMAT_R32_UNORM;
- else if (scaling_surface_param->scaling_out_use_16unorm_surf_fmt)
- surface_format = I965_SURFACEFORMAT_R16_UNORM;
- else
- surface_format = I965_SURFACEFORMAT_R8_UNORM;
-
- gen9_add_2d_gpe_surface(ctx, gpe_context,
- scaling_surface_param->input_surface,
- 0, 1, surface_format,
- scaling_bti->scaling_frame_src_y);
-
- gen9_add_2d_gpe_surface(ctx, gpe_context,
- scaling_surface_param->output_surface,
- 0, 1, surface_format,
- scaling_bti->scaling_frame_dst_y);
-
-
- return;
-}
-
-static VAStatus
-gen9_vp9_scaling_kernel(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int use_16x_scaling)
-{
- struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context;
- struct i965_gpe_context *gpe_context;
- int media_function;
- struct gen9_vp9_scaling_curbe_param scaling_curbe_param;
- struct gen9_vp9_scaling_surface_param scaling_surface_param;
- struct gen9_vp9_state *vp9_state;
- VAEncPictureParameterBufferVP9 *pic_param;
- struct gpe_media_object_walker_parameter media_object_walker_param;
- struct vp9_encoder_kernel_walker_parameter kernel_walker_param;
- struct object_surface *obj_surface;
- struct object_surface *input_surface, *output_surface;
- struct gen9_surface_vp9 *vp9_priv_surface;
- unsigned int downscaled_width_in_mb, downscaled_height_in_mb;
- unsigned int input_frame_width, input_frame_height;
- unsigned int output_frame_width, output_frame_height;
-
- vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state;
- if (!vp9_state || !vp9_state->pic_param)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- pic_param = vp9_state->pic_param;
-
- if (use_16x_scaling)
- media_function = VP9_MEDIA_STATE_16X_SCALING;
- else
- media_function = VP9_MEDIA_STATE_4X_SCALING;
-
- gpe_context = &(vme_context->scaling_context.gpe_contexts[0]);
-
- gen8_gpe_context_init(ctx, gpe_context);
- gen9_gpe_reset_binding_table(ctx, gpe_context);
-
- obj_surface = encode_state->reconstructed_object;
- vp9_priv_surface = obj_surface->private_data;
-
- if (use_16x_scaling)
- {
- downscaled_width_in_mb = vp9_state->downscaled_width_16x_in_mb;
- downscaled_height_in_mb = vp9_state->downscaled_height_16x_in_mb;
-
- input_surface = vp9_priv_surface->scaled_4x_surface_obj;
- input_frame_width = vp9_state->frame_width_4x;
- input_frame_height = vp9_state->frame_height_4x;
-
- output_surface = vp9_priv_surface->scaled_16x_surface_obj;
- output_frame_width = vp9_state->frame_width_16x;
- output_frame_height = vp9_state->frame_height_16x;
- } else {
- downscaled_width_in_mb = vp9_state->downscaled_width_4x_in_mb;
- downscaled_height_in_mb = vp9_state->downscaled_height_4x_in_mb;
-
- if (vp9_state->dys_in_use &&
- ((pic_param->frame_width_src != pic_param->frame_width_dst) ||
- (pic_param->frame_height_src != pic_param->frame_height_dst)))
- input_surface = vp9_priv_surface->dys_surface_obj;
- else
- input_surface = encode_state->input_yuv_object;
-
- input_frame_width = vp9_state->frame_width;
- input_frame_height = vp9_state->frame_height;
-
- output_surface = vp9_priv_surface->scaled_4x_surface_obj;
- output_frame_width = vp9_state->frame_width_4x;
- output_frame_height = vp9_state->frame_height_4x;
- }
-
- memset(&scaling_curbe_param, 0, sizeof(scaling_curbe_param));
-
- scaling_curbe_param.input_picture_width = input_frame_width;
- scaling_curbe_param.input_picture_height = input_frame_height;
-
- scaling_curbe_param.use_16x_scaling = use_16x_scaling;
- scaling_curbe_param.use_32x_scaling = 0;
-
- if (use_16x_scaling)
- scaling_curbe_param.mb_variance_output_enabled = 0;
- else
- scaling_curbe_param.mb_variance_output_enabled = vp9_state->adaptive_transform_decision_enabled;
-
- scaling_curbe_param.blk8x8_stat_enabled = 0;
-
- vme_context->pfn_set_curbe_scaling(ctx, encode_state,
- gpe_context,
- encoder_context,
- &scaling_curbe_param);
-
- memset(&scaling_surface_param, 0, sizeof(scaling_surface_param));
- scaling_surface_param.p_scaling_bti = (void *)(&vme_context->scaling_context.scaling_4x_bti);
- scaling_surface_param.input_surface = input_surface;
- scaling_surface_param.input_frame_width = input_frame_width;
- scaling_surface_param.input_frame_height = input_frame_height;
-
- scaling_surface_param.output_surface = output_surface;
- scaling_surface_param.output_frame_width = output_frame_width;
- scaling_surface_param.output_frame_height = output_frame_height;
- scaling_surface_param.scaling_out_use_16unorm_surf_fmt = 0;
- scaling_surface_param.scaling_out_use_32unorm_surf_fmt = 1;
-
- vme_context->pfn_send_scaling_surface(ctx, encode_state,
- gpe_context,
- encoder_context,
- &scaling_surface_param);
-
- gen8_gpe_setup_interface_data(ctx, gpe_context);
-
- memset(&kernel_walker_param, 0, sizeof(kernel_walker_param));
- /* the scaling is based on 8x8 blk level */
- kernel_walker_param.resolution_x = downscaled_width_in_mb * 2;
- kernel_walker_param.resolution_y = downscaled_height_in_mb * 2;
- kernel_walker_param.no_dependency = 1;
-
- gen9_init_media_object_walker_parameter(encoder_context, &kernel_walker_param, &media_object_walker_param);
-
- gen9_run_kernel_media_object_walker(ctx, encoder_context,
- gpe_context,
- media_function,
- &media_object_walker_param);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen9_vp9_dys_set_sampler_state(struct i965_gpe_context *gpe_context)
-{
- struct gen9_sampler_8x8_avs *sampler_cmd;
-
- if (!gpe_context)
- return;
-
- dri_bo_map(gpe_context->sampler.bo, 1);
-
- if (!gpe_context->sampler.bo->virtual)
- return;
-
- sampler_cmd = (struct gen9_sampler_8x8_avs *)
- (gpe_context->sampler.bo->virtual + gpe_context->sampler.offset);
-
- memset(sampler_cmd, 0, sizeof(struct gen9_sampler_8x8_avs));
-
- sampler_cmd->dw0.r3c_coefficient = 15;
- sampler_cmd->dw0.r3x_coefficient = 6;
- sampler_cmd->dw0.strong_edge_threshold = 8;
- sampler_cmd->dw0.weak_edge_threshold = 1;
- sampler_cmd->dw0.gain_factor = 32;
-
- sampler_cmd->dw2.r5c_coefficient = 3;
- sampler_cmd->dw2.r5cx_coefficient = 8;
- sampler_cmd->dw2.r5x_coefficient = 9;
- sampler_cmd->dw2.strong_edge_weight = 6;
- sampler_cmd->dw2.regular_weight = 3;
- sampler_cmd->dw2.non_edge_weight = 2;
- sampler_cmd->dw2.global_noise_estimation = 255;
-
- sampler_cmd->dw3.enable_8tap_adaptive_filter = 0;
- sampler_cmd->dw3.cos_alpha = 79;
- sampler_cmd->dw3.sin_alpha = 101;
-
- sampler_cmd->dw5.diamond_du = 0;
- sampler_cmd->dw5.hs_margin = 3;
- sampler_cmd->dw5.diamond_alpha = 100;
-
- sampler_cmd->dw7.inv_margin_vyl = 3300;
-
- sampler_cmd->dw8.inv_margin_vyu = 1600;
-
- sampler_cmd->dw10.y_slope2 = 24;
- sampler_cmd->dw10.s0l = 1792;
-
- sampler_cmd->dw12.y_slope1 = 24;
-
- sampler_cmd->dw14.s0u = 256;
-
- sampler_cmd->dw15.s2u = 1792;
- sampler_cmd->dw15.s1u = 0;
-
- memcpy(sampler_cmd->coefficients,
- &gen9_vp9_avs_coeffs[0],
- 17 * sizeof(struct gen8_sampler_8x8_avs_coefficients));
-
- sampler_cmd->dw152.default_sharpness_level = 255;
- sampler_cmd->dw152.max_derivative_4_pixels = 7;
- sampler_cmd->dw152.max_derivative_8_pixels = 20;
- sampler_cmd->dw152.transition_area_with_4_pixels = 4;
- sampler_cmd->dw152.transition_area_with_8_pixels = 5;
-
- sampler_cmd->dw153.bypass_x_adaptive_filtering = 1;
- sampler_cmd->dw153.bypass_y_adaptive_filtering = 1;
- sampler_cmd->dw153.adaptive_filter_for_all_channel = 0;
-
- memcpy(sampler_cmd->extra_coefficients,
- &gen9_vp9_avs_coeffs[17 * 8],
- 15 * sizeof(struct gen8_sampler_8x8_avs_coefficients));
-
- dri_bo_unmap(gpe_context->sampler.bo);
-}
-
-static void
-gen9_vp9_set_curbe_dys(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct i965_gpe_context *gpe_context,
- struct intel_encoder_context *encoder_context,
- struct gen9_vp9_dys_curbe_param *curbe_param)
-{
- vp9_dys_curbe_data *curbe_cmd;
-
- curbe_cmd = i965_gpe_context_map_curbe(gpe_context);
-
- if (!curbe_cmd)
- return;
-
- memset(curbe_cmd, 0, sizeof(vp9_dys_curbe_data));
-
- curbe_cmd->dw0.input_frame_width = curbe_param->input_width;
- curbe_cmd->dw0.input_frame_height = curbe_param->input_height;
-
- curbe_cmd->dw1.output_frame_width = curbe_param->output_width;
- curbe_cmd->dw1.output_frame_height = curbe_param->output_height;
-
- curbe_cmd->dw2.delta_u = 1.0f / curbe_param->output_width;
- curbe_cmd->dw3.delta_v = 1.0f / curbe_param->output_height;
-
- curbe_cmd->dw16.input_frame_nv12_bti = VP9_BTI_DYS_INPUT_NV12;
- curbe_cmd->dw17.output_frame_y_bti = VP9_BTI_DYS_OUTPUT_Y;
- curbe_cmd->dw18.avs_sample_idx = 0;
-
- i965_gpe_context_unmap_curbe(gpe_context);
-}
-
-static void
-gen9_vp9_send_dys_surface(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct i965_gpe_context *gpe_context,
- struct intel_encoder_context *encoder_context,
- struct gen9_vp9_dys_surface_param *surface_param)
-{
-
- if (surface_param->input_frame)
- gen9_add_adv_gpe_surface(ctx,
- gpe_context,
- surface_param->input_frame,
- VP9_BTI_DYS_INPUT_NV12);
-
- if (surface_param->output_frame) {
- gen9_add_2d_gpe_surface(ctx,
- gpe_context,
- surface_param->output_frame,
- 0,
- 1,
- I965_SURFACEFORMAT_R8_UNORM,
- VP9_BTI_DYS_OUTPUT_Y);
-
- gen9_add_2d_gpe_surface(ctx,
- gpe_context,
- surface_param->output_frame,
- 1,
- 1,
- I965_SURFACEFORMAT_R16_UINT,
- VP9_BTI_DYS_OUTPUT_UV);
- }
-
- return;
-}
-
-static VAStatus
-gen9_vp9_dys_kernel(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- gen9_vp9_dys_kernel_param *dys_kernel_param)
-{
- struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context;
- struct i965_gpe_context *gpe_context;
- int media_function;
- struct gen9_vp9_dys_curbe_param curbe_param;
- struct gen9_vp9_dys_surface_param surface_param;
- struct gpe_media_object_walker_parameter media_object_walker_param;
- struct vp9_encoder_kernel_walker_parameter kernel_walker_param;
- unsigned int resolution_x, resolution_y;
-
- media_function = VP9_MEDIA_STATE_DYS;
- gpe_context = &vme_context->dys_context.gpe_context;
-
- //gen8_gpe_context_init(ctx, gpe_context);
- gen9_gpe_reset_binding_table(ctx, gpe_context);
-
- /* sampler state is configured only when initializing the GPE context */
-
- memset(&curbe_param, 0, sizeof(curbe_param));
- curbe_param.input_width = dys_kernel_param->input_width;
- curbe_param.input_height = dys_kernel_param->input_height;
- curbe_param.output_width = dys_kernel_param->output_width;
- curbe_param.output_height = dys_kernel_param->output_height;
- vme_context->pfn_set_curbe_dys(ctx, encode_state,
- gpe_context,
- encoder_context,
- &curbe_param);
-
- // Add surface states
- memset(&surface_param, 0, sizeof(surface_param));
- surface_param.input_frame = dys_kernel_param->input_surface;
- surface_param.output_frame = dys_kernel_param->output_surface;
- surface_param.vert_line_stride = 0;
- surface_param.vert_line_stride_offset = 0;
-
- vme_context->pfn_send_dys_surface(ctx,
- encode_state,
- gpe_context,
- encoder_context,
- &surface_param);
-
- resolution_x = ALIGN(dys_kernel_param->output_width, 16) / 16;
- resolution_y = ALIGN(dys_kernel_param->output_height, 16) / 16;
-
- gen8_gpe_setup_interface_data(ctx, gpe_context);
-
- memset(&kernel_walker_param, 0, sizeof(kernel_walker_param));
- kernel_walker_param.resolution_x = resolution_x;
- kernel_walker_param.resolution_y = resolution_y;
- kernel_walker_param.no_dependency = 1;
-
- gen9_init_media_object_walker_parameter(encoder_context, &kernel_walker_param, &media_object_walker_param);
-
- gen9_run_kernel_media_object_walker(ctx, encoder_context,
- gpe_context,
- media_function,
- &media_object_walker_param);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen9_vp9_run_dys_refframes(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_vp9_state *vp9_state;
- VAEncPictureParameterBufferVP9 *pic_param;
- gen9_vp9_dys_kernel_param dys_kernel_param;
- struct object_surface *obj_surface;
- struct object_surface *input_surface, *output_surface;
- struct gen9_surface_vp9 *vp9_priv_surface;
-
- vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state;
-
- if (!vp9_state || !vp9_state->pic_param)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- pic_param = vp9_state->pic_param;
-
- if ((pic_param->frame_width_src != pic_param->frame_width_dst) ||
- (pic_param->frame_height_src != pic_param->frame_height_dst)) {
- input_surface = encode_state->input_yuv_object;
- obj_surface = encode_state->reconstructed_object;
- vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data);
- output_surface = vp9_priv_surface->dys_surface_obj;
-
- memset(&dys_kernel_param, 0, sizeof(dys_kernel_param));
- dys_kernel_param.input_width = pic_param->frame_width_src;
- dys_kernel_param.input_height = pic_param->frame_height_src;
- dys_kernel_param.input_surface = input_surface;
- dys_kernel_param.output_width = pic_param->frame_width_dst;
- dys_kernel_param.output_height = pic_param->frame_height_dst;
- dys_kernel_param.output_surface = output_surface;
- gen9_vp9_dys_kernel(ctx, encode_state,
- encoder_context,
- &dys_kernel_param);
- }
-
- if ((vp9_state->dys_ref_frame_flag & VP9_LAST_REF) &&
- vp9_state->last_ref_obj) {
- obj_surface = vp9_state->last_ref_obj;
- vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data);
-
- input_surface = obj_surface;
- output_surface = vp9_priv_surface->dys_surface_obj;
-
- dys_kernel_param.input_width = vp9_priv_surface->frame_width;
- dys_kernel_param.input_height = vp9_priv_surface->frame_height;
- dys_kernel_param.input_surface = input_surface;
-
- dys_kernel_param.output_width = pic_param->frame_width_dst;
- dys_kernel_param.output_height = pic_param->frame_height_dst;
- dys_kernel_param.output_surface = output_surface;
-
- gen9_vp9_dys_kernel(ctx, encode_state,
- encoder_context,
- &dys_kernel_param);
-
- if (vp9_state->hme_enabled) {
- dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_width / 4), 16);
- dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_height / 4), 16);
- dys_kernel_param.input_surface = vp9_priv_surface->scaled_4x_surface_obj;
-
- dys_kernel_param.output_width = vp9_state->frame_width_4x;
- dys_kernel_param.output_height = vp9_state->frame_height_4x;
- dys_kernel_param.output_surface = vp9_priv_surface->dys_4x_surface_obj;
-
- gen9_vp9_dys_kernel(ctx, encode_state,
- encoder_context,
- &dys_kernel_param);
-
- /* Does it really need to do the 16x HME if the
- * resolution is different?
- * Maybe it should be restricted
- */
- if (vp9_state->b16xme_enabled) {
- dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_width / 16), 16);
- dys_kernel_param.input_height = ALIGN((vp9_priv_surface->frame_height / 16), 16);
- dys_kernel_param.input_surface = vp9_priv_surface->scaled_16x_surface_obj;
-
- dys_kernel_param.output_width = vp9_state->frame_width_16x;
- dys_kernel_param.output_height = vp9_state->frame_height_16x;
- dys_kernel_param.output_surface = vp9_priv_surface->dys_16x_surface_obj;
-
- gen9_vp9_dys_kernel(ctx, encode_state,
- encoder_context,
- &dys_kernel_param);
- }
- }
- }
-
- if ((vp9_state->dys_ref_frame_flag & VP9_GOLDEN_REF) &&
- vp9_state->golden_ref_obj) {
- obj_surface = vp9_state->golden_ref_obj;
- vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data);
-
- input_surface = obj_surface;
- output_surface = vp9_priv_surface->dys_surface_obj;
-
- dys_kernel_param.input_width = vp9_priv_surface->frame_width;
- dys_kernel_param.input_height = vp9_priv_surface->frame_height;
- dys_kernel_param.input_surface = input_surface;
-
- dys_kernel_param.output_width = pic_param->frame_width_dst;
- dys_kernel_param.output_height = pic_param->frame_height_dst;
- dys_kernel_param.output_surface = output_surface;
-
- gen9_vp9_dys_kernel(ctx, encode_state,
- encoder_context,
- &dys_kernel_param);
-
- if (vp9_state->hme_enabled) {
- dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_width / 4), 16);
- dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_height / 4), 16);
- dys_kernel_param.input_surface = vp9_priv_surface->scaled_4x_surface_obj;
-
- dys_kernel_param.output_width = vp9_state->frame_width_4x;
- dys_kernel_param.output_height = vp9_state->frame_height_4x;
- dys_kernel_param.output_surface = vp9_priv_surface->dys_4x_surface_obj;
-
- gen9_vp9_dys_kernel(ctx, encode_state,
- encoder_context,
- &dys_kernel_param);
-
- /* Does it really need to do the 16x HME if the
- * resolution is different?
- * Maybe it should be restricted
- */
- if (vp9_state->b16xme_enabled) {
- dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_width / 16), 16);
- dys_kernel_param.input_height = ALIGN((vp9_priv_surface->frame_height / 16), 16);
- dys_kernel_param.input_surface = vp9_priv_surface->scaled_16x_surface_obj;
-
- dys_kernel_param.output_width = vp9_state->frame_width_16x;
- dys_kernel_param.output_height = vp9_state->frame_height_16x;
- dys_kernel_param.output_surface = vp9_priv_surface->dys_16x_surface_obj;
-
- gen9_vp9_dys_kernel(ctx, encode_state,
- encoder_context,
- &dys_kernel_param);
- }
- }
- }
-
- if ((vp9_state->dys_ref_frame_flag & VP9_ALT_REF) &&
- vp9_state->alt_ref_obj) {
- obj_surface = vp9_state->alt_ref_obj;
- vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data);
-
- input_surface = obj_surface;
- output_surface = vp9_priv_surface->dys_surface_obj;
-
- dys_kernel_param.input_width = vp9_priv_surface->frame_width;
- dys_kernel_param.input_height = vp9_priv_surface->frame_height;
- dys_kernel_param.input_surface = input_surface;
-
- dys_kernel_param.output_width = pic_param->frame_width_dst;
- dys_kernel_param.output_height = pic_param->frame_height_dst;
- dys_kernel_param.output_surface = output_surface;
-
- gen9_vp9_dys_kernel(ctx, encode_state,
- encoder_context,
- &dys_kernel_param);
-
- if (vp9_state->hme_enabled) {
- dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_width / 4), 16);
- dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_height / 4), 16);
- dys_kernel_param.input_surface = vp9_priv_surface->scaled_4x_surface_obj;
-
- dys_kernel_param.output_width = vp9_state->frame_width_4x;
- dys_kernel_param.output_height = vp9_state->frame_height_4x;
- dys_kernel_param.output_surface = vp9_priv_surface->dys_4x_surface_obj;
-
- gen9_vp9_dys_kernel(ctx, encode_state,
- encoder_context,
- &dys_kernel_param);
-
- /* Does it really need to do the 16x HME if the
- * resolution is different?
- * Maybe it should be restricted
- */
- if (vp9_state->b16xme_enabled) {
- dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_width / 16), 16);
- dys_kernel_param.input_height = ALIGN((vp9_priv_surface->frame_height / 16), 16);
- dys_kernel_param.input_surface = vp9_priv_surface->scaled_16x_surface_obj;
-
- dys_kernel_param.output_width = vp9_state->frame_width_16x;
- dys_kernel_param.output_height = vp9_state->frame_height_16x;
- dys_kernel_param.output_surface = vp9_priv_surface->dys_16x_surface_obj;
-
- gen9_vp9_dys_kernel(ctx, encode_state,
- encoder_context,
- &dys_kernel_param);
- }
- }
- }
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen9_vp9_set_curbe_mbenc(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct i965_gpe_context *gpe_context,
- struct intel_encoder_context *encoder_context,
- struct gen9_vp9_mbenc_curbe_param *curbe_param)
-{
- struct gen9_vp9_state *vp9_state;
- VAEncMiscParameterTypeVP9PerSegmantParam *seg_param, tmp_seg_param;
- vp9_mbenc_curbe_data *curbe_cmd;
- VAEncPictureParameterBufferVP9 *pic_param;
- int i, segment_count;
- int seg_qindex;
- struct object_surface *obj_surface;
- struct gen9_surface_vp9 *vp9_priv_surface;
-
- vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state;
-
- if (!vp9_state || !vp9_state->pic_param)
- return;
-
- pic_param = curbe_param->ppic_param;
- seg_param = curbe_param->psegment_param;
-
- if (!seg_param) {
- memset(&tmp_seg_param, 0, sizeof(tmp_seg_param));
- seg_param = &tmp_seg_param;
- }
-
- curbe_cmd = i965_gpe_context_map_curbe(gpe_context);
-
- if (!curbe_cmd)
- return;
-
- memset(curbe_cmd, 0, sizeof(vp9_mbenc_curbe_data));
-
- if (vp9_state->dys_in_use)
- {
- curbe_cmd->dw0.frame_width = pic_param->frame_width_dst;
- curbe_cmd->dw0.frame_height = pic_param->frame_height_dst;
- }
- else
- {
- curbe_cmd->dw0.frame_width = pic_param->frame_width_src;
- curbe_cmd->dw0.frame_height = pic_param->frame_height_src;
- }
-
- curbe_cmd->dw1.frame_type = curbe_param->picture_coding_type;
-
- curbe_cmd->dw1.segmentation_enable = pic_param->pic_flags.bits.segmentation_enabled;
- if (pic_param->pic_flags.bits.segmentation_enabled)
- segment_count = 8;
- else
- segment_count = 1;
-
- curbe_cmd->dw1.ref_frame_flags = curbe_param->ref_frame_flag;
-
- //right now set them to normal settings
- if (curbe_param->picture_coding_type)
- {
- switch (vp9_state->target_usage)
- {
- case INTEL_ENC_VP9_TU_QUALITY:
- curbe_cmd->dw1.min_16for32_check = 0x00;
- curbe_cmd->dw2.multi_pred = 0x02;
- curbe_cmd->dw2.len_sp = 0x39;
- curbe_cmd->dw2.search_x = 0x30;
- curbe_cmd->dw2.search_y = 0x28;
- curbe_cmd->dw3.min_ref_for32_check = 0x01;
- curbe_cmd->dw4.skip16_threshold = 0x000A;
- curbe_cmd->dw4.disable_mr_threshold = 0x000C;
-
- memcpy(&curbe_cmd->dw16,
- vp9_diamond_ime_search_path_delta,
- 14 * sizeof(unsigned int));
- break;
- case INTEL_ENC_VP9_TU_PERFORMANCE:
- curbe_cmd->dw1.min_16for32_check = 0x02;
- curbe_cmd->dw2.multi_pred = 0x00;
- curbe_cmd->dw2.len_sp = 0x10;
- curbe_cmd->dw2.search_x = 0x20;
- curbe_cmd->dw2.search_y = 0x20;
- curbe_cmd->dw3.min_ref_for32_check = 0x03;
- curbe_cmd->dw4.skip16_threshold = 0x0014;
- curbe_cmd->dw4.disable_mr_threshold = 0x0016;
-
- memcpy(&curbe_cmd->dw16,
- vp9_fullspiral_ime_search_path_delta,
- 14 * sizeof(unsigned int));
-
- break;
- default: // normal settings
- curbe_cmd->dw1.min_16for32_check = 0x01;
- curbe_cmd->dw2.multi_pred = 0x00;
- curbe_cmd->dw2.len_sp = 0x19;
- curbe_cmd->dw2.search_x = 0x30;
- curbe_cmd->dw2.search_y = 0x28;
- curbe_cmd->dw3.min_ref_for32_check = 0x02;
- curbe_cmd->dw4.skip16_threshold = 0x000F;
- curbe_cmd->dw4.disable_mr_threshold = 0x0011;
-
- memcpy(&curbe_cmd->dw16,
- vp9_diamond_ime_search_path_delta,
- 14 * sizeof(unsigned int));
- break;
- }
-
- curbe_cmd->dw3.hme_enabled = curbe_param->hme_enabled;
- curbe_cmd->dw3.multi_ref_qp_check = curbe_param->multi_ref_qp_check;
- // co-located predictor must be disabled when dynamic scaling is enabled
- curbe_cmd->dw3.disable_temp_pred = vp9_state->dys_in_use;
- }
-
- curbe_cmd->dw5.inter_round = 0;
- curbe_cmd->dw5.intra_round = 4;
- curbe_cmd->dw5.frame_qpindex = pic_param->luma_ac_qindex;
-
- for (i = 0; i < segment_count; i++)
- {
- seg_qindex = pic_param->luma_ac_qindex + pic_param->luma_dc_qindex_delta
- + seg_param->seg_data[i].segment_qindex_delta;
-
- seg_qindex = CLAMP(0, 255, seg_qindex);
-
- if (curbe_param->picture_coding_type)
- memcpy(&curbe_cmd->segments[i],
- &intel_vp9_costlut_p[seg_qindex * 16],
- 16 * sizeof(unsigned int));
- else
- memcpy(&curbe_cmd->segments[i],
- &intel_vp9_costlut_key[seg_qindex * 16],
- 16 * sizeof(unsigned int));
- }
-
- if (curbe_param->picture_coding_type)
- {
- if (curbe_cmd->dw3.multi_ref_qp_check)
- {
- if (curbe_param->ref_frame_flag & 0x01)
- {
- obj_surface = curbe_param->last_ref_obj;
- vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data);
- curbe_cmd->dw8.last_ref_qp = vp9_quant_dc[vp9_priv_surface->qp_value];
- }
-
- if (curbe_param->ref_frame_flag & 0x02)
- {
- obj_surface = curbe_param->golden_ref_obj;
- vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data);
- curbe_cmd->dw8.golden_ref_qp = vp9_quant_dc[vp9_priv_surface->qp_value];
- }
-
- if (curbe_param->ref_frame_flag & 0x04)
- {
- obj_surface = curbe_param->alt_ref_obj;
- vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data);
- curbe_cmd->dw9.alt_ref_qp = vp9_quant_dc[vp9_priv_surface->qp_value];
- }
- }
- }
- curbe_cmd->dw160.enc_curr_y_surf_bti = VP9_BTI_MBENC_CURR_Y_G9;
- curbe_cmd->dw162.enc_curr_nv12_surf_bti = VP9_BTI_MBENC_CURR_NV12_G9;
- curbe_cmd->dw166.segmentation_map_bti = VP9_BTI_MBENC_SEGMENTATION_MAP_G9;
- curbe_cmd->dw172.mode_decision_bti = VP9_BTI_MBENC_MODE_DECISION_G9;
- curbe_cmd->dw167.tx_curbe_bti = VP9_BTI_MBENC_TX_CURBE_G9;
- curbe_cmd->dw168.hme_mvdata_bti = VP9_BTI_MBENC_HME_MV_DATA_G9;
- curbe_cmd->dw169.hme_distortion_bti = VP9_BTI_MBENC_HME_DISTORTION_G9;
- curbe_cmd->dw171.mode_decision_prev_bti = VP9_BTI_MBENC_MODE_DECISION_PREV_G9;
- curbe_cmd->dw172.mode_decision_bti = VP9_BTI_MBENC_MODE_DECISION_G9;
- curbe_cmd->dw173.output_16x16_inter_modes_bti = VP9_BTI_MBENC_OUT_16x16_INTER_MODES_G9;
- curbe_cmd->dw174.cu_record_bti = VP9_BTI_MBENC_CU_RECORDS_G9;
- curbe_cmd->dw175.pak_data_bti = VP9_BTI_MBENC_PAK_DATA_G9;
-
- i965_gpe_context_unmap_curbe(gpe_context);
- return;
-}
-
-static void
-gen9_vp9_send_mbenc_surface(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct i965_gpe_context *gpe_context,
- struct intel_encoder_context *encoder_context,
- struct gen9_vp9_mbenc_surface_param *mbenc_param)
-{
- struct gen9_vp9_state *vp9_state;
- unsigned int res_size;
- unsigned int frame_width_in_sb, frame_height_in_sb;
- struct object_surface *obj_surface, *tmp_input;
- struct gen9_surface_vp9 *vp9_priv_surface;
- int media_function;
-
- vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state;
-
- if (!vp9_state || !vp9_state->pic_param)
- return;
-
- frame_width_in_sb = ALIGN(mbenc_param->frame_width, 64) / 64;
- frame_height_in_sb = ALIGN(mbenc_param->frame_height, 64) / 64;
- media_function = mbenc_param->media_state_type;
-
- switch (media_function)
- {
- case VP9_MEDIA_STATE_MBENC_I_32x32:
- {
- obj_surface = mbenc_param->curr_frame_obj;
-
- gen9_add_2d_gpe_surface(ctx,
- gpe_context,
- obj_surface,
- 0,
- 1,
- I965_SURFACEFORMAT_R8_UNORM,
- VP9_BTI_MBENC_CURR_Y_G9);
-
- gen9_add_2d_gpe_surface(ctx,
- gpe_context,
- obj_surface,
- 1,
- 1,
- I965_SURFACEFORMAT_R16_UINT,
- VP9_BTI_MBENC_CURR_UV_G9);
-
-
- if (mbenc_param->segmentation_enabled)
- {
- gen9_add_buffer_2d_gpe_surface(ctx,
- gpe_context,
- mbenc_param->pres_segmentation_map,
- 1,
- I965_SURFACEFORMAT_R8_UNORM,
- VP9_BTI_MBENC_SEGMENTATION_MAP_G9);
-
- }
-
- res_size = 16 * mbenc_param->frame_width_in_mb *
- mbenc_param->frame_height_in_mb * sizeof(unsigned int);
- gen9_add_buffer_gpe_surface(ctx,
- gpe_context,
- mbenc_param->pres_mode_decision,
- 0,
- res_size / 4,
- 0,
- VP9_BTI_MBENC_MODE_DECISION_G9);
-
- break;
- }
- case VP9_MEDIA_STATE_MBENC_I_16x16:
- {
- obj_surface = mbenc_param->curr_frame_obj;
-
- gen9_add_2d_gpe_surface(ctx,
- gpe_context,
- obj_surface,
- 0,
- 1,
- I965_SURFACEFORMAT_R8_UNORM,
- VP9_BTI_MBENC_CURR_Y_G9);
-
- gen9_add_2d_gpe_surface(ctx,
- gpe_context,
- obj_surface,
- 1,
- 1,
- I965_SURFACEFORMAT_R16_UINT,
- VP9_BTI_MBENC_CURR_UV_G9);
-
- gen9_add_adv_gpe_surface(ctx, gpe_context,
- obj_surface,
- VP9_BTI_MBENC_CURR_NV12_G9);
-
- if (mbenc_param->segmentation_enabled)
- {
- gen9_add_buffer_2d_gpe_surface(ctx,
- gpe_context,
- mbenc_param->pres_segmentation_map,
- 1,
- I965_SURFACEFORMAT_R8_UNORM,
- VP9_BTI_MBENC_SEGMENTATION_MAP_G9);
-
- }
-
- res_size = 16 * mbenc_param->frame_width_in_mb *
- mbenc_param->frame_height_in_mb * sizeof(unsigned int);
- gen9_add_buffer_gpe_surface(ctx,
- gpe_context,
- mbenc_param->pres_mode_decision,
- 0,
- res_size / 4,
- 0,
- VP9_BTI_MBENC_MODE_DECISION_G9);
-
- res_size = 160;
-
- gen9_add_dri_buffer_gpe_surface(ctx,
- gpe_context,
- mbenc_param->gpe_context_tx->curbe.bo,
- 0,
- ALIGN(res_size, 64),
- mbenc_param->gpe_context_tx->curbe.offset,
- VP9_BTI_MBENC_TX_CURBE_G9);
-
- break;
- }
- case VP9_MEDIA_STATE_MBENC_P:
- {
- obj_surface = mbenc_param->curr_frame_obj;
-
- gen9_add_2d_gpe_surface(ctx,
- gpe_context,
- obj_surface,
- 0,
- 1,
- I965_SURFACEFORMAT_R8_UNORM,
- VP9_BTI_MBENC_CURR_Y_G9);
-
- gen9_add_2d_gpe_surface(ctx, gpe_context,
- obj_surface,
- 1,
- 1,
- I965_SURFACEFORMAT_R16_UINT,
- VP9_BTI_MBENC_CURR_UV_G9);
-
- gen9_add_adv_gpe_surface(ctx, gpe_context,
- obj_surface,
- VP9_BTI_MBENC_CURR_NV12_G9);
-
- if (mbenc_param->last_ref_obj)
- {
- obj_surface = mbenc_param->last_ref_obj;
- vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data);
-
- if (vp9_state->dys_in_use &&
- ((vp9_priv_surface->frame_width != vp9_state->frame_width) ||
- (vp9_priv_surface->frame_height != vp9_state->frame_height)))
- tmp_input = vp9_priv_surface->dys_surface_obj;
- else
- tmp_input = obj_surface;
-
- gen9_add_adv_gpe_surface(ctx, gpe_context,
- tmp_input,
- VP9_BTI_MBENC_LAST_NV12_G9);
-
- gen9_add_adv_gpe_surface(ctx, gpe_context,
- tmp_input,
- VP9_BTI_MBENC_LAST_NV12_G9 + 1);
-
- }
-
- if (mbenc_param->golden_ref_obj)
- {
- obj_surface = mbenc_param->golden_ref_obj;
- vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data);
-
- if (vp9_state->dys_in_use &&
- ((vp9_priv_surface->frame_width != vp9_state->frame_width) ||
- (vp9_priv_surface->frame_height != vp9_state->frame_height)))
- tmp_input = vp9_priv_surface->dys_surface_obj;
- else
- tmp_input = obj_surface;
-
- gen9_add_adv_gpe_surface(ctx, gpe_context,
- tmp_input,
- VP9_BTI_MBENC_GOLD_NV12_G9);
-
- gen9_add_adv_gpe_surface(ctx, gpe_context,
- tmp_input,
- VP9_BTI_MBENC_GOLD_NV12_G9 + 1);
-
- }
-
- if (mbenc_param->alt_ref_obj)
- {
- obj_surface = mbenc_param->alt_ref_obj;
- vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data);
-
- if (vp9_state->dys_in_use &&
- ((vp9_priv_surface->frame_width != vp9_state->frame_width) ||
- (vp9_priv_surface->frame_height != vp9_state->frame_height)))
- tmp_input = vp9_priv_surface->dys_surface_obj;
- else
- tmp_input = obj_surface;
-
- gen9_add_adv_gpe_surface(ctx, gpe_context,
- tmp_input,
- VP9_BTI_MBENC_ALTREF_NV12_G9);
-
- gen9_add_adv_gpe_surface(ctx, gpe_context,
- tmp_input,
- VP9_BTI_MBENC_ALTREF_NV12_G9 + 1);
-
- }
-
- if (mbenc_param->hme_enabled)
- {
- gen9_add_buffer_2d_gpe_surface(ctx, gpe_context,
- mbenc_param->ps4x_memv_data_buffer,
- 1,
- I965_SURFACEFORMAT_R8_UNORM,
- VP9_BTI_MBENC_HME_MV_DATA_G9);
-
- gen9_add_buffer_2d_gpe_surface(ctx, gpe_context,
- mbenc_param->ps4x_memv_distortion_buffer,
- 1,
- I965_SURFACEFORMAT_R8_UNORM,
- VP9_BTI_MBENC_HME_DISTORTION_G9);
- }
-
- if (mbenc_param->segmentation_enabled)
- {
- gen9_add_buffer_2d_gpe_surface(ctx,
- gpe_context,
- mbenc_param->pres_segmentation_map,
- 1,
- I965_SURFACEFORMAT_R8_UNORM,
- VP9_BTI_MBENC_SEGMENTATION_MAP_G9);
-
- }
-
- res_size = 16 * mbenc_param->frame_width_in_mb *
- mbenc_param->frame_height_in_mb * sizeof(unsigned int);
- gen9_add_buffer_gpe_surface(ctx,
- gpe_context,
- mbenc_param->pres_mode_decision_prev,
- 0,
- res_size / 4,
- 0,
- VP9_BTI_MBENC_MODE_DECISION_PREV_G9);
-
- gen9_add_buffer_gpe_surface(ctx,
- gpe_context,
- mbenc_param->pres_mode_decision,
- 0,
- res_size / 4,
- 0,
- VP9_BTI_MBENC_MODE_DECISION_G9);
-
- gen9_add_buffer_2d_gpe_surface(ctx,
- gpe_context,
- mbenc_param->pres_output_16x16_inter_modes,
- 1,
- I965_SURFACEFORMAT_R8_UNORM,
- VP9_BTI_MBENC_OUT_16x16_INTER_MODES_G9);
-
- res_size = 160;
-
- gen9_add_dri_buffer_gpe_surface(ctx,
- gpe_context,
- mbenc_param->gpe_context_tx->curbe.bo,
- 0,
- ALIGN(res_size, 64),
- mbenc_param->gpe_context_tx->curbe.offset,
- VP9_BTI_MBENC_TX_CURBE_G9);
-
-
- break;
- }
- case VP9_MEDIA_STATE_MBENC_TX:
- {
- obj_surface = mbenc_param->curr_frame_obj;
-
- gen9_add_2d_gpe_surface(ctx,
- gpe_context,
- obj_surface,
- 0,
- 1,
- I965_SURFACEFORMAT_R8_UNORM,
- VP9_BTI_MBENC_CURR_Y_G9);
-
- gen9_add_2d_gpe_surface(ctx,
- gpe_context,
- obj_surface,
- 1,
- 1,
- I965_SURFACEFORMAT_R16_UINT,
- VP9_BTI_MBENC_CURR_UV_G9);
-
- if (mbenc_param->segmentation_enabled)
- {
- gen9_add_buffer_2d_gpe_surface(ctx,
- gpe_context,
- mbenc_param->pres_segmentation_map,
- 1,
- I965_SURFACEFORMAT_R8_UNORM,
- VP9_BTI_MBENC_SEGMENTATION_MAP_G9);
-
- }
-
- res_size = 16 * mbenc_param->frame_width_in_mb *
- mbenc_param->frame_height_in_mb * sizeof(unsigned int);
- gen9_add_buffer_gpe_surface(ctx,
- gpe_context,
- mbenc_param->pres_mode_decision,
- 0,
- res_size / 4,
- 0,
- VP9_BTI_MBENC_MODE_DECISION_G9);
-
- res_size = frame_width_in_sb * frame_height_in_sb * 4 * sizeof(unsigned int);
- gen9_add_buffer_gpe_surface(ctx,
- gpe_context,
- mbenc_param->pres_mb_code_surface,
- 0,
- res_size / 4,
- 0,
- VP9_BTI_MBENC_PAK_DATA_G9);
-
- // CU Record
- res_size = frame_width_in_sb * frame_height_in_sb *
- 64 * 16 * sizeof(unsigned int);
-
- gen9_add_buffer_gpe_surface(ctx,
- gpe_context,
- mbenc_param->pres_mb_code_surface,
- 0,
- res_size / 4,
- mbenc_param->mb_data_offset,
- VP9_BTI_MBENC_CU_RECORDS_G9);
- }
- default:
- break;
- }
-
- return;
-}
-
-static VAStatus
-gen9_vp9_mbenc_kernel(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- int media_function)
-{
- struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context;
- struct i965_gpe_context *gpe_context, *tx_gpe_context;
- struct gpe_media_object_walker_parameter media_object_walker_param;
- struct vp9_encoder_kernel_walker_parameter kernel_walker_param;
- unsigned int resolution_x, resolution_y;
- struct gen9_vp9_state *vp9_state;
- VAEncPictureParameterBufferVP9 *pic_param;
- struct gen9_vp9_mbenc_curbe_param curbe_param;
- struct gen9_vp9_mbenc_surface_param surface_param;
- VAStatus va_status = VA_STATUS_SUCCESS;
- int mbenc_gpe_index = 0;
- struct object_surface *obj_surface;
- struct gen9_surface_vp9 *vp9_priv_surface;
-
- vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state;
-
- if (!vp9_state || !vp9_state->pic_param)
- return VA_STATUS_ERROR_ENCODING_ERROR;
-
- pic_param = vp9_state->pic_param;
-
- switch (media_function)
- {
- case VP9_MEDIA_STATE_MBENC_I_32x32:
- mbenc_gpe_index = VP9_MBENC_IDX_KEY_32x32;
- break;
-
- case VP9_MEDIA_STATE_MBENC_I_16x16:
- mbenc_gpe_index = VP9_MBENC_IDX_KEY_16x16;
- break;
-
- case VP9_MEDIA_STATE_MBENC_P:
- mbenc_gpe_index = VP9_MBENC_IDX_INTER;
- break;
-
- case VP9_MEDIA_STATE_MBENC_TX:
- mbenc_gpe_index = VP9_MBENC_IDX_TX;
- break;
-
- default:
- va_status = VA_STATUS_ERROR_OPERATION_FAILED;
- return va_status;
- }
-
- gpe_context = &(vme_context->mbenc_context.gpe_contexts[mbenc_gpe_index]);
- tx_gpe_context = &(vme_context->mbenc_context.gpe_contexts[VP9_MBENC_IDX_TX]);
-
- gen9_gpe_reset_binding_table(ctx, gpe_context);
-
- // Set curbe
- if (!vp9_state->mbenc_curbe_set_in_brc_update)
- {
- if(media_function == VP9_MEDIA_STATE_MBENC_I_32x32 ||
- media_function == VP9_MEDIA_STATE_MBENC_P)
- {
- memset(&curbe_param, 0, sizeof(curbe_param));
- curbe_param.ppic_param = vp9_state->pic_param;
- curbe_param.pseq_param = vp9_state->seq_param;
- curbe_param.psegment_param = vp9_state->segment_param;
- curbe_param.frame_width_in_mb = vp9_state->frame_width_in_mb;
- curbe_param.frame_height_in_mb = vp9_state->frame_height_in_mb;
- curbe_param.last_ref_obj = vp9_state->last_ref_obj;
- curbe_param.golden_ref_obj = vp9_state->golden_ref_obj;
- curbe_param.alt_ref_obj = vp9_state->alt_ref_obj;
- curbe_param.hme_enabled = vp9_state->hme_enabled;
- curbe_param.ref_frame_flag = vp9_state->ref_frame_flag;
- curbe_param.picture_coding_type = vp9_state->picture_coding_type;
- curbe_param.media_state_type = media_function;
- curbe_param.mbenc_curbe_set_in_brc_update = vp9_state->mbenc_curbe_set_in_brc_update;
-
- vme_context->pfn_set_curbe_mbenc(ctx,
- encode_state,
- gpe_context,
- encoder_context,
- &curbe_param);
- }
- }
-
- memset(&surface_param, 0, sizeof(surface_param));
- surface_param.media_state_type = media_function;
- surface_param.picture_coding_type = vp9_state->picture_coding_type;
- surface_param.frame_width = vp9_state->frame_width;
- surface_param.frame_height = vp9_state->frame_height;
- surface_param.frame_width_in_mb = vp9_state->frame_width_in_mb;
- surface_param.frame_height_in_mb = vp9_state->frame_height_in_mb;
- surface_param.hme_enabled = vp9_state->hme_enabled;
- surface_param.segmentation_enabled = pic_param->pic_flags.bits.segmentation_enabled;
- surface_param.pres_segmentation_map = &vme_context->mb_segment_map_surface;
- surface_param.ps4x_memv_data_buffer = &vme_context->s4x_memv_data_buffer;
- surface_param.ps4x_memv_distortion_buffer = &vme_context->s4x_memv_distortion_buffer;
- surface_param.pres_mode_decision =
- &vme_context->res_mode_decision[vp9_state->curr_mode_decision_index];
- surface_param.pres_mode_decision_prev =
- &vme_context->res_mode_decision[!vp9_state->curr_mode_decision_index];
- surface_param.pres_output_16x16_inter_modes = &vme_context->res_output_16x16_inter_modes;
- surface_param.pres_mbenc_curbe_buffer = NULL;
- surface_param.last_ref_obj = vp9_state->last_ref_obj;
- surface_param.golden_ref_obj = vp9_state->golden_ref_obj;
- surface_param.alt_ref_obj = vp9_state->alt_ref_obj;
- surface_param.pres_mb_code_surface = &vme_context->res_mb_code_surface;
- surface_param.gpe_context_tx = tx_gpe_context;
- surface_param.mb_data_offset = vp9_state->mb_data_offset;
-
- obj_surface = encode_state->reconstructed_object;
- vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data);
- if (vp9_state->dys_in_use &&
- (pic_param->frame_width_src != pic_param->frame_height_dst ||
- pic_param->frame_height_src != pic_param->frame_height_dst)) {
- obj_surface = vp9_priv_surface->dys_surface_obj;
- } else
- obj_surface = encode_state->input_yuv_object;
-
- surface_param.curr_frame_obj = obj_surface;
-
- vme_context->pfn_send_mbenc_surface(ctx,
- encode_state,
- gpe_context,
- encoder_context,
- &surface_param);
-
- if (media_function == VP9_MEDIA_STATE_MBENC_I_32x32) {
- resolution_x = ALIGN(vp9_state->frame_width, 32) / 32;
- resolution_y = ALIGN(vp9_state->frame_height, 32) / 32;
- } else {
- resolution_x = ALIGN(vp9_state->frame_width, 16) / 16;
- resolution_y = ALIGN(vp9_state->frame_height, 16) / 16;
- }
-
- memset(&kernel_walker_param, 0, sizeof(kernel_walker_param));
- kernel_walker_param.resolution_x = resolution_x;
- kernel_walker_param.resolution_y = resolution_y;
-
- if (media_function == VP9_MEDIA_STATE_MBENC_P ||
- media_function == VP9_MEDIA_STATE_MBENC_I_16x16) {
- kernel_walker_param.use_scoreboard = 1;
- kernel_walker_param.no_dependency = 0;
- kernel_walker_param.walker_degree = VP9_45Z_DEGREE;
- } else {
- kernel_walker_param.use_scoreboard = 0;
- kernel_walker_param.no_dependency = 1;
- }
-
- gen8_gpe_setup_interface_data(ctx, gpe_context);
-
- gen9_init_media_object_walker_parameter(encoder_context, &kernel_walker_param, &media_object_walker_param);
-
- gen9_run_kernel_media_object_walker(ctx, encoder_context,
- gpe_context,
- media_function,
- &media_object_walker_param);
- return va_status;
-}
-
-static void
-gen9_init_gpe_context_vp9(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct vp9_encoder_kernel_parameter *kernel_param)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
-
- gpe_context->curbe.length = kernel_param->curbe_size; // in bytes
-
- gpe_context->sampler.entry_size = 0;
- gpe_context->sampler.max_entries = 0;
-
- if (kernel_param->sampler_size) {
- gpe_context->sampler.entry_size = ALIGN(kernel_param->sampler_size, 64);
- gpe_context->sampler.max_entries = 1;
- }
-
- gpe_context->idrt.entry_size = ALIGN(sizeof(struct gen8_interface_descriptor_data), 64); // 8 dws, 1 register
- gpe_context->idrt.max_entries = NUM_KERNELS_PER_GPE_CONTEXT;
-
- gpe_context->surface_state_binding_table.max_entries = MAX_VP9_ENCODER_SURFACES;
- gpe_context->surface_state_binding_table.binding_table_offset = 0;
- gpe_context->surface_state_binding_table.surface_state_offset = ALIGN(MAX_VP9_ENCODER_SURFACES * 4, 64);
- gpe_context->surface_state_binding_table.length = ALIGN(MAX_VP9_ENCODER_SURFACES * 4, 64) + ALIGN(MAX_VP9_ENCODER_SURFACES * SURFACE_STATE_PADDED_SIZE_GEN9, 64);
-
- if (i965->intel.eu_total > 0)
- gpe_context->vfe_state.max_num_threads = 6 * i965->intel.eu_total;
- else
- gpe_context->vfe_state.max_num_threads = 112; // 16 EU * 7 threads
-
- gpe_context->vfe_state.curbe_allocation_size = MAX(1, ALIGN(gpe_context->curbe.length, 32) >> 5); // in registers
- gpe_context->vfe_state.urb_entry_size = MAX(1, ALIGN(kernel_param->inline_data_size, 32) >> 5); // in registers
- gpe_context->vfe_state.num_urb_entries = (MAX_URB_SIZE -
- gpe_context->vfe_state.curbe_allocation_size -
- ((gpe_context->idrt.entry_size >> 5) *
- gpe_context->idrt.max_entries)) / gpe_context->vfe_state.urb_entry_size;
- gpe_context->vfe_state.num_urb_entries = CLAMP(1, 127, gpe_context->vfe_state.num_urb_entries);
- gpe_context->vfe_state.gpgpu_mode = 0;
-}
-
-static void
-gen9_init_vfe_scoreboard_vp9(struct i965_gpe_context *gpe_context,
- struct vp9_encoder_scoreboard_parameter *scoreboard_param)
-{
- gpe_context->vfe_desc5.scoreboard0.mask = scoreboard_param->mask;
- gpe_context->vfe_desc5.scoreboard0.type = scoreboard_param->type;
- gpe_context->vfe_desc5.scoreboard0.enable = scoreboard_param->enable;
-
- if (scoreboard_param->walkpat_flag) {
- gpe_context->vfe_desc5.scoreboard0.mask = 0x0F;
- gpe_context->vfe_desc5.scoreboard0.type = 1;
-
- gpe_context->vfe_desc6.scoreboard1.delta_x0 = 0x0;
- gpe_context->vfe_desc6.scoreboard1.delta_y0 = 0xF;
-
- gpe_context->vfe_desc6.scoreboard1.delta_x1 = 0x0;
- gpe_context->vfe_desc6.scoreboard1.delta_y1 = 0xE;
-
- gpe_context->vfe_desc6.scoreboard1.delta_x2 = 0xF;
- gpe_context->vfe_desc6.scoreboard1.delta_y2 = 0x3;
-
- gpe_context->vfe_desc6.scoreboard1.delta_x3 = 0xF;
- gpe_context->vfe_desc6.scoreboard1.delta_y3 = 0x1;
- } else {
- // Scoreboard 0
- gpe_context->vfe_desc6.scoreboard1.delta_x0 = 0xF;
- gpe_context->vfe_desc6.scoreboard1.delta_y0 = 0x0;
-
- // Scoreboard 1
- gpe_context->vfe_desc6.scoreboard1.delta_x1 = 0x0;
- gpe_context->vfe_desc6.scoreboard1.delta_y1 = 0xF;
-
- // Scoreboard 2
- gpe_context->vfe_desc6.scoreboard1.delta_x2 = 0x1;
- gpe_context->vfe_desc6.scoreboard1.delta_y2 = 0xF;
-
- // Scoreboard 3
- gpe_context->vfe_desc6.scoreboard1.delta_x3 = 0xF;
- gpe_context->vfe_desc6.scoreboard1.delta_y3 = 0xF;
-
- // Scoreboard 4
- gpe_context->vfe_desc7.scoreboard2.delta_x4 = 0xF;
- gpe_context->vfe_desc7.scoreboard2.delta_y4 = 0x1;
-
- // Scoreboard 5
- gpe_context->vfe_desc7.scoreboard2.delta_x5 = 0x0;
- gpe_context->vfe_desc7.scoreboard2.delta_y5 = 0xE;
-
- // Scoreboard 6
- gpe_context->vfe_desc7.scoreboard2.delta_x6 = 0x1;
- gpe_context->vfe_desc7.scoreboard2.delta_y6 = 0xE;
-
- // Scoreboard 7
- gpe_context->vfe_desc7.scoreboard2.delta_x6 = 0xF;
- gpe_context->vfe_desc7.scoreboard2.delta_y6 = 0xE;
- }
-}
-
-#define VP9_MI_BLOCK_MASK 0x07
-#define VP9_VME_REF_WIN 48
-
-static VAStatus
-gen9_encode_vp9_check_parameter(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen9_vp9_state *vp9_state;
- VAEncPictureParameterBufferVP9 *pic_param;
- VAEncMiscParameterTypeVP9PerSegmantParam *seg_param;
- VAEncSequenceParameterBufferVP9 *seq_param;
- struct object_surface *obj_surface;
- struct object_buffer *obj_buffer;
- struct gen9_surface_vp9 *vp9_priv_surface;
-
- vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state;
-
- if (!encode_state->pic_param_ext ||
- !encode_state->pic_param_ext->buffer) {
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- }
- pic_param = (VAEncPictureParameterBufferVP9 *)encode_state->pic_param_ext->buffer;
-
- if (pic_param->frame_width_src & VP9_MI_BLOCK_MASK ||
- pic_param->frame_height_src & VP9_MI_BLOCK_MASK ||
- pic_param->frame_width_dst & VP9_MI_BLOCK_MASK ||
- pic_param->frame_height_dst & VP9_MI_BLOCK_MASK)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- obj_buffer = BUFFER(pic_param->coded_buf);
-
- if (!obj_buffer ||
- !obj_buffer->buffer_store ||
- !obj_buffer->buffer_store->bo)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- encode_state->coded_buf_object = obj_buffer;
-
- vp9_state->status_buffer.bo = obj_buffer->buffer_store->bo;
-
- encode_state->reconstructed_object = SURFACE(pic_param->reconstructed_frame);
-
- if (!encode_state->reconstructed_object ||
- !encode_state->input_yuv_object)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- vp9_state->curr_frame = pic_param->reconstructed_frame;
- vp9_state->ref_frame_flag = 0;
- if (pic_param->pic_flags.bits.frame_type == KEY_FRAME ||
- pic_param->pic_flags.bits.intra_only) {
- /* this will be regarded as I-frame type */
- vp9_state->picture_coding_type = 0;
- vp9_state->last_ref_obj = NULL;
- vp9_state->golden_ref_obj = NULL;
- vp9_state->alt_ref_obj = NULL;
- } else {
- vp9_state->picture_coding_type = 1;
- vp9_state->ref_frame_flag = pic_param->ref_flags.bits.ref_frame_ctrl_l0 |
- pic_param->ref_flags.bits.ref_frame_ctrl_l1;
-
- obj_surface = SURFACE(pic_param->reference_frames[pic_param->ref_flags.bits.ref_last_idx]);
- vp9_state->last_ref_obj = obj_surface;
- if (!obj_surface ||
- !obj_surface->bo ||
- !obj_surface->private_data) {
- vp9_state->last_ref_obj = NULL;
- vp9_state->ref_frame_flag &= ~(VP9_LAST_REF);
- }
-
- obj_surface = SURFACE(pic_param->reference_frames[pic_param->ref_flags.bits.ref_gf_idx]);
- vp9_state->golden_ref_obj = obj_surface;
- if (!obj_surface ||
- !obj_surface->bo ||
- !obj_surface->private_data) {
- vp9_state->golden_ref_obj = NULL;
- vp9_state->ref_frame_flag &= ~(VP9_GOLDEN_REF);
- }
-
- obj_surface = SURFACE(pic_param->reference_frames[pic_param->ref_flags.bits.ref_arf_idx]);
- vp9_state->alt_ref_obj = obj_surface;
- if (!obj_surface ||
- !obj_surface->bo ||
- !obj_surface->private_data) {
- vp9_state->alt_ref_obj = NULL;
- vp9_state->ref_frame_flag &= ~(VP9_ALT_REF);
- }
-
- /* remove the duplicated flag and ref frame list */
- if (vp9_state->ref_frame_flag & VP9_LAST_REF) {
- if (pic_param->reference_frames[pic_param->ref_flags.bits.ref_last_idx] ==
- pic_param->reference_frames[pic_param->ref_flags.bits.ref_gf_idx]) {
- vp9_state->ref_frame_flag &= ~(VP9_GOLDEN_REF);
- vp9_state->golden_ref_obj = NULL;
- }
-
- if (pic_param->reference_frames[pic_param->ref_flags.bits.ref_last_idx] ==
- pic_param->reference_frames[pic_param->ref_flags.bits.ref_arf_idx]) {
- vp9_state->ref_frame_flag &= ~(VP9_ALT_REF);
- vp9_state->alt_ref_obj = NULL;
- }
- }
-
- if (vp9_state->ref_frame_flag & VP9_GOLDEN_REF) {
- if (pic_param->reference_frames[pic_param->ref_flags.bits.ref_gf_idx] ==
- pic_param->reference_frames[pic_param->ref_flags.bits.ref_arf_idx]) {
- vp9_state->ref_frame_flag &= ~(VP9_ALT_REF);
- vp9_state->alt_ref_obj = NULL;
- }
- }
-
- if (vp9_state->ref_frame_flag == 0)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- }
-
- seg_param = NULL;
- if (pic_param->pic_flags.bits.segmentation_enabled) {
- if (!encode_state->q_matrix ||
- !encode_state->q_matrix->buffer) {
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- }
- seg_param = (VAEncMiscParameterTypeVP9PerSegmantParam *)
- encode_state->q_matrix->buffer;
- }
-
- seq_param = NULL;
- if (encode_state->seq_param_ext &&
- encode_state->seq_param_ext->buffer)
- seq_param = (VAEncSequenceParameterBufferVP9 *)encode_state->seq_param_ext->buffer;
-
- if (!seq_param) {
- seq_param = &vp9_state->bogus_seq_param;
- }
-
- vp9_state->pic_param = pic_param;
- vp9_state->segment_param = seg_param;
- vp9_state->seq_param = seq_param;
-
- obj_surface = encode_state->reconstructed_object;
- if (pic_param->frame_width_dst > obj_surface->orig_width ||
- pic_param->frame_height_dst > obj_surface->orig_height)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- if (!vp9_state->dys_enabled &&
- ((pic_param->frame_width_src != pic_param->frame_width_dst) ||
- (pic_param->frame_height_src != pic_param->frame_height_dst)))
- return VA_STATUS_ERROR_UNIMPLEMENTED;
-
- if (vp9_state->brc_enabled) {
- if (vp9_state->first_frame || vp9_state->picture_coding_type == KEY_FRAME) {
- vp9_state->brc_reset = encoder_context->brc.need_reset || vp9_state->first_frame;
-
- if (!encoder_context->brc.framerate[0].num || !encoder_context->brc.framerate[0].den ||
- !encoder_context->brc.bits_per_second[0])
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- vp9_state->gop_size = encoder_context->brc.gop_size;
- vp9_state->framerate = encoder_context->brc.framerate[0];
-
- if (encoder_context->rate_control_mode == VA_RC_CBR ||
- !encoder_context->brc.target_percentage[0]) {
- vp9_state->target_bit_rate = encoder_context->brc.bits_per_second[0];
- vp9_state->max_bit_rate = vp9_state->target_bit_rate;
- vp9_state->min_bit_rate = vp9_state->target_bit_rate;
- } else {
- vp9_state->max_bit_rate = encoder_context->brc.bits_per_second[0];
- vp9_state->target_bit_rate = vp9_state->max_bit_rate * encoder_context->brc.target_percentage[0] / 100;
- if (2 * vp9_state->target_bit_rate < vp9_state->max_bit_rate)
- vp9_state->min_bit_rate = 0;
- else
- vp9_state->min_bit_rate = 2 * vp9_state->target_bit_rate - vp9_state->max_bit_rate;
- }
-
- if (encoder_context->brc.hrd_buffer_size)
- vp9_state->vbv_buffer_size_in_bit = encoder_context->brc.hrd_buffer_size;
- else if (encoder_context->brc.window_size)
- vp9_state->vbv_buffer_size_in_bit = (uint64_t)vp9_state->max_bit_rate * encoder_context->brc.window_size / 1000;
- else
- vp9_state->vbv_buffer_size_in_bit = vp9_state->max_bit_rate;
- if (encoder_context->brc.hrd_initial_buffer_fullness)
- vp9_state->init_vbv_buffer_fullness_in_bit = encoder_context->brc.hrd_initial_buffer_fullness;
- else
- vp9_state->init_vbv_buffer_fullness_in_bit = vp9_state->vbv_buffer_size_in_bit / 2;
- }
- }
-
- vp9_state->frame_width = pic_param->frame_width_dst;
- vp9_state->frame_height = pic_param->frame_height_dst;
-
- vp9_state->frame_width_4x = ALIGN(vp9_state->frame_width / 4, 16);
- vp9_state->frame_height_4x = ALIGN(vp9_state->frame_height / 4, 16);
-
- vp9_state->frame_width_16x = ALIGN(vp9_state->frame_width / 16, 16);
- vp9_state->frame_height_16x = ALIGN(vp9_state->frame_height / 16, 16);
-
- vp9_state->frame_width_in_mb = ALIGN(vp9_state->frame_width, 16) / 16;
- vp9_state->frame_height_in_mb = ALIGN(vp9_state->frame_height, 16) / 16;
-
- vp9_state->downscaled_width_4x_in_mb = vp9_state->frame_width_4x / 16;
- vp9_state->downscaled_height_4x_in_mb = vp9_state->frame_height_4x / 16;
- vp9_state->downscaled_width_16x_in_mb = vp9_state->frame_width_16x / 16;
- vp9_state->downscaled_height_16x_in_mb = vp9_state->frame_height_16x / 16;
-
- vp9_state->dys_in_use = 0;
- if(pic_param->frame_width_src != pic_param->frame_width_dst ||
- pic_param->frame_height_src != pic_param->frame_height_dst)
- vp9_state->dys_in_use = 1;
- vp9_state->dys_ref_frame_flag = 0;
- /* check the dys setting. The dys is supported by default. */
- if (pic_param->pic_flags.bits.frame_type != KEY_FRAME &&
- !pic_param->pic_flags.bits.intra_only) {
- vp9_state->dys_ref_frame_flag = vp9_state->ref_frame_flag;
-
- if ((vp9_state->ref_frame_flag & VP9_LAST_REF) &&
- vp9_state->last_ref_obj) {
- obj_surface = vp9_state->last_ref_obj;
- vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data);
-
- if (vp9_state->frame_width == vp9_priv_surface->frame_width &&
- vp9_state->frame_height == vp9_priv_surface->frame_height)
- vp9_state->dys_ref_frame_flag &= ~(VP9_LAST_REF);
- }
- if ((vp9_state->ref_frame_flag & VP9_GOLDEN_REF) &&
- vp9_state->golden_ref_obj) {
- obj_surface = vp9_state->golden_ref_obj;
- vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data);
-
- if (vp9_state->frame_width == vp9_priv_surface->frame_width &&
- vp9_state->frame_height == vp9_priv_surface->frame_height)
- vp9_state->dys_ref_frame_flag &= ~(VP9_GOLDEN_REF);
- }
- if ((vp9_state->ref_frame_flag & VP9_ALT_REF) &&
- vp9_state->alt_ref_obj) {
- obj_surface = vp9_state->alt_ref_obj;
- vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data);
-
- if (vp9_state->frame_width == vp9_priv_surface->frame_width &&
- vp9_state->frame_height == vp9_priv_surface->frame_height)
- vp9_state->dys_ref_frame_flag &= ~(VP9_ALT_REF);
- }
- if (vp9_state->dys_ref_frame_flag)
- vp9_state->dys_in_use = 1;
- }
-
- if (vp9_state->hme_supported) {
- vp9_state->hme_enabled = 1;
- } else {
- vp9_state->hme_enabled = 0;
- }
-
- if (vp9_state->b16xme_supported) {
- vp9_state->b16xme_enabled = 1;
- } else {
- vp9_state->b16xme_enabled = 0;
- }
-
- /* disable HME/16xME if the size is too small */
- if (vp9_state->frame_width_4x <= VP9_VME_REF_WIN ||
- vp9_state->frame_height_4x <= VP9_VME_REF_WIN) {
- vp9_state->hme_enabled = 0;
- vp9_state->b16xme_enabled = 0;
- }
-
- if (vp9_state->frame_width_16x < VP9_VME_REF_WIN ||
- vp9_state->frame_height_16x < VP9_VME_REF_WIN)
- vp9_state->b16xme_enabled = 0;
-
- if (pic_param->pic_flags.bits.frame_type == HCP_VP9_KEY_FRAME ||
- pic_param->pic_flags.bits.intra_only) {
- vp9_state->hme_enabled = 0;
- vp9_state->b16xme_enabled = 0;
- }
-
- vp9_state->mbenc_keyframe_dist_enabled = 0;
- if ((vp9_state->picture_coding_type == KEY_FRAME) &&
- vp9_state->brc_distortion_buffer_supported)
- vp9_state->mbenc_keyframe_dist_enabled = 1;
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen9_vme_gpe_kernel_prepare_vp9(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context;
- struct vp9_surface_param surface_param;
- struct gen9_vp9_state *vp9_state;
- VAEncPictureParameterBufferVP9 *pic_param;
- struct object_surface *obj_surface;
- struct gen9_surface_vp9 *vp9_surface;
- int driver_header_flag = 0;
- VAStatus va_status;
-
- vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state;
-
- if (!vp9_state || !vp9_state->pic_param)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- pic_param = vp9_state->pic_param;
-
- /* this is to check whether the driver should generate the uncompressed header */
- driver_header_flag = 1;
- if (encode_state->packed_header_data_ext &&
- encode_state->packed_header_data_ext[0] &&
- pic_param->bit_offset_first_partition_size) {
- VAEncPackedHeaderParameterBuffer *param = NULL;
-
- param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_params_ext[0]->buffer;
-
- if (param->type == VAEncPackedHeaderRawData) {
- char *header_data;
- unsigned int length_in_bits;
-
- header_data = (char *)encode_state->packed_header_data_ext[0]->buffer;
- length_in_bits = param->bit_length;
- driver_header_flag = 0;
-
- vp9_state->frame_header.bit_offset_first_partition_size =
- pic_param->bit_offset_first_partition_size;
- vp9_state->header_length = ALIGN(length_in_bits, 8) >> 3;
- vp9_state->alias_insert_data = header_data;
-
- vp9_state->frame_header.bit_offset_ref_lf_delta = pic_param->bit_offset_ref_lf_delta;
- vp9_state->frame_header.bit_offset_mode_lf_delta = pic_param->bit_offset_mode_lf_delta;
- vp9_state->frame_header.bit_offset_lf_level = pic_param->bit_offset_lf_level;
- vp9_state->frame_header.bit_offset_qindex = pic_param->bit_offset_qindex;
- vp9_state->frame_header.bit_offset_segmentation = pic_param->bit_offset_segmentation;
- vp9_state->frame_header.bit_size_segmentation = pic_param->bit_size_segmentation;
- }
- }
-
- if (driver_header_flag) {
- memset(&vp9_state->frame_header, 0, sizeof(vp9_state->frame_header));
- intel_write_uncompressed_header(encode_state,
- VAProfileVP9Profile0,
- vme_context->frame_header_data,
- &vp9_state->header_length,
- &vp9_state->frame_header);
- vp9_state->alias_insert_data = vme_context->frame_header_data;
- }
-
- va_status = i965_check_alloc_surface_bo(ctx, encode_state->input_yuv_object,
- 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
-
- va_status = i965_check_alloc_surface_bo(ctx, encode_state->reconstructed_object,
- 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
-
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
-
- surface_param.frame_width = vp9_state->frame_width;
- surface_param.frame_height = vp9_state->frame_height;
- va_status = gen9_vp9_init_check_surfaces(ctx,
- encode_state->reconstructed_object,
- &surface_param);
-
- {
- vp9_surface = (struct gen9_surface_vp9*)encode_state->reconstructed_object;
-
- vp9_surface->qp_value = pic_param->luma_ac_qindex + pic_param->luma_dc_qindex_delta;
- }
- if (vp9_state->dys_in_use &&
- (pic_param->frame_width_src != pic_param->frame_width_dst ||
- pic_param->frame_height_src != pic_param->frame_height_dst)) {
- surface_param.frame_width = pic_param->frame_width_dst;
- surface_param.frame_height = pic_param->frame_height_dst;
- va_status = gen9_vp9_check_dys_surfaces(ctx,
- encode_state->reconstructed_object,
- &surface_param);
-
- if (va_status)
- return va_status;
- }
-
- if (vp9_state->dys_ref_frame_flag) {
- if ((vp9_state->dys_ref_frame_flag & VP9_LAST_REF) &&
- vp9_state->last_ref_obj) {
- obj_surface = vp9_state->last_ref_obj;
- surface_param.frame_width = vp9_state->frame_width;
- surface_param.frame_height = vp9_state->frame_height;
- va_status = gen9_vp9_check_dys_surfaces(ctx,
- obj_surface,
- &surface_param);
-
- if (va_status)
- return va_status;
- }
- if ((vp9_state->dys_ref_frame_flag & VP9_GOLDEN_REF) &&
- vp9_state->golden_ref_obj) {
- obj_surface = vp9_state->golden_ref_obj;
- surface_param.frame_width = vp9_state->frame_width;
- surface_param.frame_height = vp9_state->frame_height;
- va_status = gen9_vp9_check_dys_surfaces(ctx,
- obj_surface,
- &surface_param);
-
- if (va_status)
- return va_status;
- }
- if ((vp9_state->dys_ref_frame_flag & VP9_ALT_REF) &&
- vp9_state->alt_ref_obj) {
- obj_surface = vp9_state->alt_ref_obj;
- surface_param.frame_width = vp9_state->frame_width;
- surface_param.frame_height = vp9_state->frame_height;
- va_status = gen9_vp9_check_dys_surfaces(ctx,
- obj_surface,
- &surface_param);
-
- if (va_status)
- return va_status;
- }
- }
-
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
- /* check the corresponding ref_frame_flag && dys_ref_frame_flag */
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen9_vme_gpe_kernel_init_vp9(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context;
- struct vp9_mbenc_context *mbenc_context = &vme_context->mbenc_context;
- struct vp9_dys_context *dys_context = &vme_context->dys_context;
- struct gpe_dynamic_state_parameter ds_param;
- int i;
-
- /*
- * BRC will update MBEnc curbe data buffer, so initialize GPE context for
- * MBEnc first
- */
- for (i = 0; i < NUM_VP9_MBENC; i++) {
- gen8_gpe_context_init(ctx, &mbenc_context->gpe_contexts[i]);
- }
-
- /*
- * VP9_MBENC_XXX uses the same dynamic state buffer as they share the same
- * curbe_buffer.
- */
- ds_param.bo_size = ALIGN(sizeof(vp9_mbenc_curbe_data), 64) + 128 +
- ALIGN(sizeof(struct gen8_interface_descriptor_data), 64) * NUM_VP9_MBENC;
- mbenc_context->mbenc_bo_dys = dri_bo_alloc(i965->intel.bufmgr,
- "mbenc_dys",
- ds_param.bo_size,
- 0x1000);
- mbenc_context->mbenc_bo_size = ds_param.bo_size;
-
- ds_param.bo = mbenc_context->mbenc_bo_dys;
- ds_param.curbe_offset = 0;
- ds_param.sampler_offset = ALIGN(sizeof(vp9_mbenc_curbe_data), 64);
- for (i = 0; i < NUM_VP9_MBENC; i++) {
- ds_param.idrt_offset = ds_param.sampler_offset + 128 +
- ALIGN(sizeof(struct gen8_interface_descriptor_data), 64) * i;
-
- gen8_gpe_context_set_dynamic_buffer(ctx,
- &mbenc_context->gpe_contexts[i],
- &ds_param);
- }
-
- gen8_gpe_context_init(ctx, &dys_context->gpe_context);
- gen9_vp9_dys_set_sampler_state(&dys_context->gpe_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen9_vme_gpe_kernel_final_vp9(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context;
- struct vp9_mbenc_context *mbenc_context = &vme_context->mbenc_context;
-
- dri_bo_unreference(mbenc_context->mbenc_bo_dys);
- mbenc_context->mbenc_bo_dys = NULL;
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen9_vme_gpe_kernel_run_vp9(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context;
- struct gen9_vp9_state *vp9_state;
- int i;
-
- vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state;
-
- if (!vp9_state || !vp9_state->pic_param)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- if (vp9_state->dys_in_use) {
- gen9_vp9_run_dys_refframes(ctx, encode_state, encoder_context);
- }
-
- if (vp9_state->brc_enabled && (vp9_state->brc_reset || !vp9_state->brc_inited)) {
- gen9_vp9_brc_init_reset_kernel(ctx, encode_state, encoder_context);
- }
-
- if (vp9_state->picture_coding_type == KEY_FRAME) {
- for (i = 0; i < 2; i++)
- i965_zero_gpe_resource(&vme_context->res_mode_decision[i]);
- }
-
- if (vp9_state->hme_supported) {
- gen9_vp9_scaling_kernel(ctx, encode_state,
- encoder_context,
- 0);
- if (vp9_state->b16xme_supported) {
- gen9_vp9_scaling_kernel(ctx, encode_state,
- encoder_context,
- 1);
- }
- }
-
- if (vp9_state->picture_coding_type && vp9_state->hme_enabled) {
- if (vp9_state->b16xme_enabled)
- gen9_vp9_me_kernel(ctx, encode_state,
- encoder_context,
- 1);
-
- gen9_vp9_me_kernel(ctx, encode_state,
- encoder_context,
- 0);
- }
-
- if (vp9_state->brc_enabled) {
- if (vp9_state->mbenc_keyframe_dist_enabled)
- gen9_vp9_brc_intra_dist_kernel(ctx,
- encode_state,
- encoder_context);
-
- gen9_vp9_brc_update_kernel(ctx, encode_state,
- encoder_context);
- }
-
- if (vp9_state->picture_coding_type == KEY_FRAME) {
- gen9_vp9_mbenc_kernel(ctx, encode_state,
- encoder_context,
- VP9_MEDIA_STATE_MBENC_I_32x32);
- gen9_vp9_mbenc_kernel(ctx, encode_state,
- encoder_context,
- VP9_MEDIA_STATE_MBENC_I_16x16);
- } else {
- gen9_vp9_mbenc_kernel(ctx, encode_state,
- encoder_context,
- VP9_MEDIA_STATE_MBENC_P);
- }
-
- gen9_vp9_mbenc_kernel(ctx, encode_state,
- encoder_context,
- VP9_MEDIA_STATE_MBENC_TX);
-
- vp9_state->curr_mode_decision_index ^= 1;
- if (vp9_state->brc_enabled) {
- vp9_state->brc_inited = 1;
- vp9_state->brc_reset = 0;
- }
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen9_vme_pipeline_vp9(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus va_status;
- struct gen9_vp9_state *vp9_state;
-
- vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state;
-
- if (!vp9_state)
- return VA_STATUS_ERROR_INVALID_CONTEXT;
-
- va_status = gen9_encode_vp9_check_parameter(ctx, encode_state, encoder_context);
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
-
- va_status = gen9_vp9_allocate_resources(ctx, encode_state,
- encoder_context,
- !vp9_state->brc_allocated);
-
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
- vp9_state->brc_allocated = 1;
-
- va_status = gen9_vme_gpe_kernel_prepare_vp9(ctx, encode_state, encoder_context);
-
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
-
- va_status = gen9_vme_gpe_kernel_init_vp9(ctx, encode_state, encoder_context);
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
-
- va_status = gen9_vme_gpe_kernel_run_vp9(ctx, encode_state, encoder_context);
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
-
- gen9_vme_gpe_kernel_final_vp9(ctx, encode_state, encoder_context);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen9_vme_brc_context_destroy_vp9(struct vp9_brc_context *brc_context)
-{
- int i;
-
- for (i = 0; i < NUM_VP9_BRC; i++)
- gen8_gpe_context_destroy(&brc_context->gpe_contexts[i]);
-}
-
-static void
-gen9_vme_scaling_context_destroy_vp9(struct vp9_scaling_context *scaling_context)
-{
- int i;
-
- for (i = 0; i < NUM_VP9_SCALING; i++)
- gen8_gpe_context_destroy(&scaling_context->gpe_contexts[i]);
-}
-
-static void
-gen9_vme_me_context_destroy_vp9(struct vp9_me_context *me_context)
-{
- gen8_gpe_context_destroy(&me_context->gpe_context);
-}
-
-static void
-gen9_vme_mbenc_context_destroy_vp9(struct vp9_mbenc_context *mbenc_context)
-{
- int i;
-
- for (i = 0; i < NUM_VP9_MBENC; i++)
- gen8_gpe_context_destroy(&mbenc_context->gpe_contexts[i]);
- dri_bo_unreference(mbenc_context->mbenc_bo_dys);
- mbenc_context->mbenc_bo_size = 0;
-}
-
-static void
-gen9_vme_dys_context_destroy_vp9(struct vp9_dys_context *dys_context)
-{
- gen8_gpe_context_destroy(&dys_context->gpe_context);
-}
-
-static void
-gen9_vme_kernel_context_destroy_vp9(struct gen9_encoder_context_vp9 *vme_context)
-{
- gen9_vp9_free_resources(vme_context);
- gen9_vme_scaling_context_destroy_vp9(&vme_context->scaling_context);
- gen9_vme_me_context_destroy_vp9(&vme_context->me_context);
- gen9_vme_mbenc_context_destroy_vp9(&vme_context->mbenc_context);
- gen9_vme_brc_context_destroy_vp9(&vme_context->brc_context);
- gen9_vme_dys_context_destroy_vp9(&vme_context->dys_context);
-
- return;
-}
-
-static void
-gen9_vme_context_destroy_vp9(void *context)
-{
- struct gen9_encoder_context_vp9 *vme_context = context;
-
- if (!vme_context)
- return;
-
- gen9_vme_kernel_context_destroy_vp9(vme_context);
-
- free(vme_context);
-
- return;
-}
-
-static void
-gen9_vme_scaling_context_init_vp9(VADriverContextP ctx,
- struct gen9_encoder_context_vp9 *vme_context,
- struct vp9_scaling_context *scaling_context)
-{
- struct i965_gpe_context *gpe_context = NULL;
- struct vp9_encoder_kernel_parameter kernel_param;
- struct vp9_encoder_scoreboard_parameter scoreboard_param;
- struct i965_kernel scale_kernel;
-
- kernel_param.curbe_size = sizeof(vp9_scaling4x_curbe_data_cm);
- kernel_param.inline_data_size = sizeof(vp9_scaling4x_inline_data_cm);
- kernel_param.sampler_size = 0;
-
- memset(&scoreboard_param, 0, sizeof(scoreboard_param));
- scoreboard_param.mask = 0xFF;
- scoreboard_param.enable = vme_context->use_hw_scoreboard;
- scoreboard_param.type = vme_context->use_hw_non_stalling_scoreboard;
- scoreboard_param.walkpat_flag = 0;
-
- gpe_context = &scaling_context->gpe_contexts[0];
- gen9_init_gpe_context_vp9(ctx, gpe_context, &kernel_param);
- gen9_init_vfe_scoreboard_vp9(gpe_context, &scoreboard_param);
-
- scaling_context->scaling_4x_bti.scaling_frame_src_y = VP9_BTI_SCALING_FRAME_SRC_Y;
- scaling_context->scaling_4x_bti.scaling_frame_dst_y = VP9_BTI_SCALING_FRAME_DST_Y;
- scaling_context->scaling_4x_bti.scaling_frame_mbv_proc_stat_dst =
- VP9_BTI_SCALING_FRAME_MBVPROCSTATS_DST_CM;
-
- memset(&scale_kernel, 0, sizeof(scale_kernel));
-
- intel_vp9_get_kernel_header_and_size((void *)media_vp9_kernels,
- sizeof(media_vp9_kernels),
- INTEL_VP9_ENC_SCALING4X,
- 0,
- &scale_kernel);
-
- gen8_gpe_load_kernels(ctx,
- gpe_context,
- &scale_kernel,
- 1);
-
- kernel_param.curbe_size = sizeof(vp9_scaling2x_curbe_data_cm);
- kernel_param.inline_data_size = 0;
- kernel_param.sampler_size = 0;
-
- gpe_context = &scaling_context->gpe_contexts[1];
- gen9_init_gpe_context_vp9(ctx, gpe_context, &kernel_param);
- gen9_init_vfe_scoreboard_vp9(gpe_context, &scoreboard_param);
-
- memset(&scale_kernel, 0, sizeof(scale_kernel));
-
- intel_vp9_get_kernel_header_and_size((void *)media_vp9_kernels,
- sizeof(media_vp9_kernels),
- INTEL_VP9_ENC_SCALING2X,
- 0,
- &scale_kernel);
-
- gen8_gpe_load_kernels(ctx,
- gpe_context,
- &scale_kernel,
- 1);
-
- scaling_context->scaling_2x_bti.scaling_frame_src_y = VP9_BTI_SCALING_FRAME_SRC_Y;
- scaling_context->scaling_2x_bti.scaling_frame_dst_y = VP9_BTI_SCALING_FRAME_DST_Y;
- return;
-}
-
-static void
-gen9_vme_me_context_init_vp9(VADriverContextP ctx,
- struct gen9_encoder_context_vp9 *vme_context,
- struct vp9_me_context *me_context)
-{
- struct i965_gpe_context *gpe_context = NULL;
- struct vp9_encoder_kernel_parameter kernel_param;
- struct vp9_encoder_scoreboard_parameter scoreboard_param;
- struct i965_kernel scale_kernel;
-
- kernel_param.curbe_size = sizeof(vp9_me_curbe_data);
- kernel_param.inline_data_size = 0;
- kernel_param.sampler_size = 0;
-
- memset(&scoreboard_param, 0, sizeof(scoreboard_param));
- scoreboard_param.mask = 0xFF;
- scoreboard_param.enable = vme_context->use_hw_scoreboard;
- scoreboard_param.type = vme_context->use_hw_non_stalling_scoreboard;
- scoreboard_param.walkpat_flag = 0;
-
- gpe_context = &me_context->gpe_context;
- gen9_init_gpe_context_vp9(ctx, gpe_context, &kernel_param);
- gen9_init_vfe_scoreboard_vp9(gpe_context, &scoreboard_param);
-
- memset(&scale_kernel, 0, sizeof(scale_kernel));
-
- intel_vp9_get_kernel_header_and_size((void *)media_vp9_kernels,
- sizeof(media_vp9_kernels),
- INTEL_VP9_ENC_ME,
- 0,
- &scale_kernel);
-
- gen8_gpe_load_kernels(ctx,
- gpe_context,
- &scale_kernel,
- 1);
-
- return;
-}
-
-static void
-gen9_vme_mbenc_context_init_vp9(VADriverContextP ctx,
- struct gen9_encoder_context_vp9 *vme_context,
- struct vp9_mbenc_context *mbenc_context)
-{
- struct i965_gpe_context *gpe_context = NULL;
- struct vp9_encoder_kernel_parameter kernel_param;
- struct vp9_encoder_scoreboard_parameter scoreboard_param;
- int i;
- struct i965_kernel scale_kernel;
-
- kernel_param.curbe_size = sizeof(vp9_mbenc_curbe_data);
- kernel_param.inline_data_size = 0;
- kernel_param.sampler_size = 0;
-
- memset(&scoreboard_param, 0, sizeof(scoreboard_param));
- scoreboard_param.mask = 0xFF;
- scoreboard_param.enable = vme_context->use_hw_scoreboard;
- scoreboard_param.type = vme_context->use_hw_non_stalling_scoreboard;
-
- for (i = 0; i < NUM_VP9_MBENC; i++) {
- gpe_context = &mbenc_context->gpe_contexts[i];
-
- if ((i == VP9_MBENC_IDX_KEY_16x16) ||
- (i == VP9_MBENC_IDX_INTER)) {
- scoreboard_param.walkpat_flag = 1;
- } else
- scoreboard_param.walkpat_flag = 0;
-
- gen9_init_gpe_context_vp9(ctx, gpe_context, &kernel_param);
- gen9_init_vfe_scoreboard_vp9(gpe_context, &scoreboard_param);
-
- memset(&scale_kernel, 0, sizeof(scale_kernel));
-
- intel_vp9_get_kernel_header_and_size((void *)media_vp9_kernels,
- sizeof(media_vp9_kernels),
- INTEL_VP9_ENC_MBENC,
- i,
- &scale_kernel);
-
- gen8_gpe_load_kernels(ctx,
- gpe_context,
- &scale_kernel,
- 1);
- }
-}
-
-static void
-gen9_vme_brc_context_init_vp9(VADriverContextP ctx,
- struct gen9_encoder_context_vp9 *vme_context,
- struct vp9_brc_context *brc_context)
-{
- struct i965_gpe_context *gpe_context = NULL;
- struct vp9_encoder_kernel_parameter kernel_param;
- struct vp9_encoder_scoreboard_parameter scoreboard_param;
- int i;
- struct i965_kernel scale_kernel;
-
- kernel_param.curbe_size = sizeof(vp9_brc_curbe_data);
- kernel_param.inline_data_size = 0;
- kernel_param.sampler_size = 0;
-
- memset(&scoreboard_param, 0, sizeof(scoreboard_param));
- scoreboard_param.mask = 0xFF;
- scoreboard_param.enable = vme_context->use_hw_scoreboard;
- scoreboard_param.type = vme_context->use_hw_non_stalling_scoreboard;
-
- for (i = 0; i < NUM_VP9_BRC; i++) {
- gpe_context = &brc_context->gpe_contexts[i];
- gen9_init_gpe_context_vp9(ctx, gpe_context, &kernel_param);
- gen9_init_vfe_scoreboard_vp9(gpe_context, &scoreboard_param);
-
- memset(&scale_kernel, 0, sizeof(scale_kernel));
-
- intel_vp9_get_kernel_header_and_size((void *)media_vp9_kernels,
- sizeof(media_vp9_kernels),
- INTEL_VP9_ENC_BRC,
- i,
- &scale_kernel);
-
- gen8_gpe_load_kernels(ctx,
- gpe_context,
- &scale_kernel,
- 1);
- }
-}
-
-static void
-gen9_vme_dys_context_init_vp9(VADriverContextP ctx,
- struct gen9_encoder_context_vp9 *vme_context,
- struct vp9_dys_context *dys_context)
-{
- struct i965_gpe_context *gpe_context = NULL;
- struct vp9_encoder_kernel_parameter kernel_param;
- struct vp9_encoder_scoreboard_parameter scoreboard_param;
- struct i965_kernel scale_kernel;
-
- kernel_param.curbe_size = sizeof(vp9_dys_curbe_data);
- kernel_param.inline_data_size = 0;
- kernel_param.sampler_size = sizeof(struct gen9_sampler_8x8_avs);
-
- memset(&scoreboard_param, 0, sizeof(scoreboard_param));
- scoreboard_param.mask = 0xFF;
- scoreboard_param.enable = vme_context->use_hw_scoreboard;
- scoreboard_param.type = vme_context->use_hw_non_stalling_scoreboard;
- scoreboard_param.walkpat_flag = 0;
-
- gpe_context = &dys_context->gpe_context;
- gen9_init_gpe_context_vp9(ctx, gpe_context, &kernel_param);
- gen9_init_vfe_scoreboard_vp9(gpe_context, &scoreboard_param);
-
- memset(&scale_kernel, 0, sizeof(scale_kernel));
-
- intel_vp9_get_kernel_header_and_size((void *)media_vp9_kernels,
- sizeof(media_vp9_kernels),
- INTEL_VP9_ENC_DYS,
- 0,
- &scale_kernel);
-
- gen8_gpe_load_kernels(ctx,
- gpe_context,
- &scale_kernel,
- 1);
-
- return;
-}
-
-static Bool
-gen9_vme_kernels_context_init_vp9(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct gen9_encoder_context_vp9 *vme_context)
-{
- gen9_vme_scaling_context_init_vp9(ctx, vme_context, &vme_context->scaling_context);
- gen9_vme_me_context_init_vp9(ctx, vme_context, &vme_context->me_context);
- gen9_vme_mbenc_context_init_vp9(ctx, vme_context, &vme_context->mbenc_context);
- gen9_vme_dys_context_init_vp9(ctx, vme_context, &vme_context->dys_context);
- gen9_vme_brc_context_init_vp9(ctx, vme_context, &vme_context->brc_context);
-
- vme_context->pfn_set_curbe_brc = gen9_vp9_set_curbe_brc;
- vme_context->pfn_set_curbe_me = gen9_vp9_set_curbe_me;
- vme_context->pfn_send_me_surface = gen9_vp9_send_me_surface;
- vme_context->pfn_send_scaling_surface = gen9_vp9_send_scaling_surface;
-
- vme_context->pfn_set_curbe_scaling = gen9_vp9_set_curbe_scaling_cm;
-
- vme_context->pfn_send_dys_surface = gen9_vp9_send_dys_surface;
- vme_context->pfn_set_curbe_dys = gen9_vp9_set_curbe_dys;
- vme_context->pfn_set_curbe_mbenc = gen9_vp9_set_curbe_mbenc;
- vme_context->pfn_send_mbenc_surface = gen9_vp9_send_mbenc_surface;
- return true;
-}
-
-static
-void gen9_vp9_write_compressed_element(char *buffer,
- int index,
- int prob,
- bool value)
-{
- struct vp9_compressed_element *base_element, *vp9_element;
- base_element = (struct vp9_compressed_element *)buffer;
-
- vp9_element = base_element + (index >> 1);
- if (index % 2) {
- vp9_element->b_valid = 1;
- vp9_element->b_probdiff_select = 1;
- vp9_element->b_prob_select = (prob == 252) ? 1: 0;
- vp9_element->b_bin = value;
- } else {
- vp9_element->a_valid = 1;
- vp9_element->a_probdiff_select = 1;
- vp9_element->a_prob_select = (prob == 252) ? 1: 0;
- vp9_element->a_bin = value;
- }
-}
-
-static void
-intel_vp9enc_refresh_frame_internal_buffers(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context;
- VAEncPictureParameterBufferVP9 *pic_param;
- struct gen9_vp9_state *vp9_state;
- char *buffer;
- int i;
-
- vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state);
-
- if (!pak_context || !vp9_state || !vp9_state->pic_param)
- return;
-
- pic_param = vp9_state->pic_param;
- if ((pic_param->pic_flags.bits.frame_type == HCP_VP9_KEY_FRAME) ||
- (pic_param->pic_flags.bits.intra_only) ||
- pic_param->pic_flags.bits.error_resilient_mode) {
- /* reset current frame_context */
- intel_init_default_vp9_probs(&vp9_state->vp9_current_fc);
- if ((pic_param->pic_flags.bits.frame_type == HCP_VP9_KEY_FRAME) ||
- pic_param->pic_flags.bits.error_resilient_mode ||
- (pic_param->pic_flags.bits.reset_frame_context == 3)) {
- for (i = 0; i < 4; i++)
- memcpy(&vp9_state->vp9_frame_ctx[i],
- &vp9_state->vp9_current_fc,
- sizeof(FRAME_CONTEXT));
- } else if (pic_param->pic_flags.bits.reset_frame_context == 2) {
- i = pic_param->pic_flags.bits.frame_context_idx;
- memcpy(&vp9_state->vp9_frame_ctx[i],
- &vp9_state->vp9_current_fc, sizeof(FRAME_CONTEXT));
- }
- /* reset the frame_ctx_idx = 0 */
- vp9_state->frame_ctx_idx = 0;
- } else {
- vp9_state->frame_ctx_idx = pic_param->pic_flags.bits.frame_context_idx;
- }
-
- i965_zero_gpe_resource(&pak_context->res_compressed_input_buffer);
- buffer = i965_map_gpe_resource(&pak_context->res_compressed_input_buffer);
-
- if (!buffer)
- return;
-
- /* write tx_size */
- if ((pic_param->luma_ac_qindex == 0) &&
- (pic_param->luma_dc_qindex_delta == 0) &&
- (pic_param->chroma_ac_qindex_delta == 0) &&
- (pic_param->chroma_dc_qindex_delta == 0)) {
- /* lossless flag */
- /* nothing is needed */
- gen9_vp9_write_compressed_element(buffer,
- 0, 128, 0);
- gen9_vp9_write_compressed_element(buffer,
- 1, 128, 0);
- gen9_vp9_write_compressed_element(buffer,
- 2, 128, 0);
- } else {
- if (vp9_state->tx_mode == TX_MODE_SELECT) {
- gen9_vp9_write_compressed_element(buffer,
- 0, 128, 1);
- gen9_vp9_write_compressed_element(buffer,
- 1, 128, 1);
- gen9_vp9_write_compressed_element(buffer,
- 2, 128, 1);
- } else if (vp9_state->tx_mode == ALLOW_32X32) {
- gen9_vp9_write_compressed_element(buffer,
- 0, 128, 1);
- gen9_vp9_write_compressed_element(buffer,
- 1, 128, 1);
- gen9_vp9_write_compressed_element(buffer,
- 2, 128, 0);
- } else {
- unsigned int tx_mode;
-
- tx_mode = vp9_state->tx_mode;
- gen9_vp9_write_compressed_element(buffer,
- 0, 128, ((tx_mode) & 2));
- gen9_vp9_write_compressed_element(buffer,
- 1, 128, ((tx_mode) & 1));
- gen9_vp9_write_compressed_element(buffer,
- 2, 128, 0);
- }
-
- if (vp9_state->tx_mode == TX_MODE_SELECT) {
-
- gen9_vp9_write_compressed_element(buffer,
- 3, 128, 0);
-
- gen9_vp9_write_compressed_element(buffer,
- 7, 128, 0);
-
- gen9_vp9_write_compressed_element(buffer,
- 15, 128, 0);
- }
- }
- /*Setup all the input&output object*/
-
- {
- /* update the coeff_update flag */
- gen9_vp9_write_compressed_element(buffer,
- 27, 128, 0);
- gen9_vp9_write_compressed_element(buffer,
- 820, 128, 0);
- gen9_vp9_write_compressed_element(buffer,
- 1613, 128, 0);
- gen9_vp9_write_compressed_element(buffer,
- 2406, 128, 0);
- }
-
-
- if (pic_param->pic_flags.bits.frame_type && !pic_param->pic_flags.bits.intra_only)
- {
- bool allow_comp = !(
- (pic_param->ref_flags.bits.ref_last_sign_bias && pic_param->ref_flags.bits.ref_gf_sign_bias && pic_param->ref_flags.bits.ref_arf_sign_bias) ||
- (!pic_param->ref_flags.bits.ref_last_sign_bias && !pic_param->ref_flags.bits.ref_gf_sign_bias && !pic_param->ref_flags.bits.ref_arf_sign_bias)
- );
-
- if (allow_comp)
- {
- if (pic_param->pic_flags.bits.comp_prediction_mode == REFERENCE_MODE_SELECT) {
- gen9_vp9_write_compressed_element(buffer,
- 3271, 128, 1);
- gen9_vp9_write_compressed_element(buffer,
- 3272, 128, 1);
- }
- else if (pic_param->pic_flags.bits.comp_prediction_mode == COMPOUND_REFERENCE) {
- gen9_vp9_write_compressed_element(buffer,
- 3271, 128, 1);
- gen9_vp9_write_compressed_element(buffer,
- 3272, 128, 0);
- }
- else {
-
- gen9_vp9_write_compressed_element(buffer,
- 3271, 128, 0);
- gen9_vp9_write_compressed_element(buffer,
- 3272, 128, 0);
- }
- }
- }
-
- i965_unmap_gpe_resource(&pak_context->res_compressed_input_buffer);
-}
-
-
-static void
-gen9_pak_vp9_pipe_mode_select(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- struct gen9_hcpe_pipe_mode_select_param *pipe_mode_param)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 6);
-
- OUT_BCS_BATCH(batch, HCP_PIPE_MODE_SELECT | (6 - 2));
- OUT_BCS_BATCH(batch,
- (pipe_mode_param->stream_out << 12) |
- (pipe_mode_param->codec_mode << 5) |
- (0 << 3) | /* disable Pic Status / Error Report */
- (pipe_mode_param->stream_out << 2) |
- HCP_CODEC_SELECT_ENCODE);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, (1 << 6));
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_vp9_add_surface_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- hcp_surface_state *hcp_state)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- if (!hcp_state)
- return;
-
- BEGIN_BCS_BATCH(batch, 3);
- OUT_BCS_BATCH(batch, HCP_SURFACE_STATE | (3 - 2));
- OUT_BCS_BATCH(batch,
- (hcp_state->dw1.surface_id << 28) |
- (hcp_state->dw1.surface_pitch - 1)
- );
- OUT_BCS_BATCH(batch,
- (hcp_state->dw2.surface_format << 28) |
- (hcp_state->dw2.y_cb_offset)
- );
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_pak_vp9_pipe_buf_addr_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context;
- struct gen9_vp9_state *vp9_state;
- unsigned int i;
- struct object_surface *obj_surface;
-
- vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state);
-
- if (!vp9_state || !vp9_state->pic_param)
- return;
-
-
- BEGIN_BCS_BATCH(batch, 104);
-
- OUT_BCS_BATCH(batch, HCP_PIPE_BUF_ADDR_STATE | (104 - 2));
-
- obj_surface = encode_state->reconstructed_object;
-
- /* reconstructed obj_surface is already checked. So this is skipped */
- /* DW 1..3 decoded surface */
- OUT_RELOC64(batch,
- obj_surface->bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 4..6 deblocking line */
- OUT_RELOC64(batch,
- pak_context->res_deblocking_filter_line_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 7..9 deblocking tile line */
- OUT_RELOC64(batch,
- pak_context->res_deblocking_filter_tile_line_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 10..12 deblocking tile col */
- OUT_RELOC64(batch,
- pak_context->res_deblocking_filter_tile_col_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 13..15 metadata line */
- OUT_RELOC64(batch,
- pak_context->res_metadata_line_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 16..18 metadata tile line */
- OUT_RELOC64(batch,
- pak_context->res_metadata_tile_line_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 19..21 metadata tile col */
- OUT_RELOC64(batch,
- pak_context->res_metadata_tile_col_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 22..30 SAO is not used for VP9 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* DW 31..33 Current Motion vector temporal buffer */
- OUT_RELOC64(batch,
- pak_context->res_mv_temporal_buffer[vp9_state->curr_mv_temporal_index].bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 34..36 Not used */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* Only the first three reference_frame is used for VP9 */
- /* DW 37..52 for reference_frame */
- i = 0;
- if (vp9_state->picture_coding_type) {
- for (i = 0; i < 3; i++) {
-
- if (pak_context->reference_surfaces[i].bo) {
- OUT_RELOC64(batch,
- pak_context->reference_surfaces[i].bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
- }
- }
-
- for (; i < 8; i++) {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 54..56 for source input */
- OUT_RELOC64(batch,
- pak_context->uncompressed_picture_source.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 57..59 StreamOut is not used */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* DW 60..62. Not used for encoder */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* DW 63..65. ILDB Not used for encoder */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* DW 66..81 For the collocated motion vector temporal buffer */
- if (vp9_state->picture_coding_type) {
- int prev_index = vp9_state->curr_mv_temporal_index ^ 0x01;
- OUT_RELOC64(batch,
- pak_context->res_mv_temporal_buffer[prev_index].bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- for (i = 1; i < 8; i++) {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 83..85 VP9 prob buffer */
- OUT_RELOC64(batch,
- pak_context->res_prob_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 86..88 Segment id buffer */
- if (pak_context->res_segmentid_buffer.bo) {
- OUT_RELOC64(batch,
- pak_context->res_segmentid_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 89..91 HVD line rowstore buffer */
- OUT_RELOC64(batch,
- pak_context->res_hvd_line_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 92..94 HVD tile line rowstore buffer */
- OUT_RELOC64(batch,
- pak_context->res_hvd_tile_line_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 95..97 SAO streamout. Not used for VP9 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* reserved for KBL. 98..100 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* 101..103 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_pak_vp9_ind_obj_base_addr_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context;
- struct gen9_vp9_state *vp9_state;
-
- vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state);
-
- /* to do */
- BEGIN_BCS_BATCH(batch, 29);
-
- OUT_BCS_BATCH(batch, HCP_IND_OBJ_BASE_ADDR_STATE | (29 - 2));
-
- /* indirect bitstream object base */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- /* the upper bound of indirect bitstream object */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* DW 6: Indirect CU object base address */
- OUT_RELOC64(batch,
- pak_context->res_mb_code_surface.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0, /* No write domain */
- vp9_state->mb_data_offset);
- /* default attribute */
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 9..11, PAK-BSE */
- OUT_RELOC64(batch,
- pak_context->indirect_pak_bse_object.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- pak_context->indirect_pak_bse_object.offset);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 12..13 upper bound */
- OUT_RELOC64(batch,
- pak_context->indirect_pak_bse_object.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- pak_context->indirect_pak_bse_object.end_offset);
-
- /* DW 14..16 compressed header buffer */
- OUT_RELOC64(batch,
- pak_context->res_compressed_input_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 17..19 prob counter streamout */
- OUT_RELOC64(batch,
- pak_context->res_prob_counter_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 20..22 prob delta streamin */
- OUT_RELOC64(batch,
- pak_context->res_prob_delta_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 23..25 Tile record streamout */
- OUT_RELOC64(batch,
- pak_context->res_tile_record_streamout_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- /* DW 26..28 CU record streamout */
- OUT_RELOC64(batch,
- pak_context->res_cu_stat_streamout_buffer.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_BATCH(batch, i965->intel.mocs_state);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen9_pak_vp9_segment_state(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- VAEncSegParamVP9 *seg_param, uint8_t seg_id)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- uint32_t batch_value, tmp;
- VAEncPictureParameterBufferVP9 *pic_param;
-
- if (!encode_state->pic_param_ext ||
- !encode_state->pic_param_ext->buffer) {
- return;
- }
-
- pic_param = (VAEncPictureParameterBufferVP9 *)encode_state->pic_param_ext->buffer;
-
- batch_value = seg_param->seg_flags.bits.segment_reference;
- if (pic_param->pic_flags.bits.frame_type == HCP_VP9_KEY_FRAME ||
- pic_param->pic_flags.bits.intra_only)
- batch_value = 0;
-
- BEGIN_BCS_BATCH(batch, 8);
-
- OUT_BCS_BATCH(batch, HCP_VP9_SEGMENT_STATE | (8 - 2));
- OUT_BCS_BATCH(batch, seg_id << 0); /* DW 1 - SegmentID */
- OUT_BCS_BATCH(batch,
- (seg_param->seg_flags.bits.segment_reference_enabled << 3) |
- (batch_value << 1) |
- (seg_param->seg_flags.bits.segment_reference_skipped <<0)
- );
-
- /* DW 3..6 is not used for encoder */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
-
- /* DW 7 Mode */
- tmp = intel_convert_sign_mag(seg_param->segment_qindex_delta, 9);
- batch_value = tmp;
- tmp = intel_convert_sign_mag(seg_param->segment_lf_level_delta, 7);
- batch_value |= (tmp << 16);
- OUT_BCS_BATCH(batch, batch_value);
-
- ADVANCE_BCS_BATCH(batch);
-
-}
-
-static void
-intel_vp9enc_construct_pak_insertobj_batchbuffer(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct i965_gpe_resource *obj_batch_buffer)
-{
- struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context;
- struct gen9_vp9_state *vp9_state;
- int uncompressed_header_length;
- unsigned int *cmd_ptr;
- unsigned int dw_length, bits_in_last_dw;
-
- vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state);
-
- if (!pak_context || !vp9_state || !vp9_state->pic_param)
- return;
-
- uncompressed_header_length = vp9_state->header_length;
- cmd_ptr = i965_map_gpe_resource(obj_batch_buffer);
-
- if (!cmd_ptr)
- return;
-
- bits_in_last_dw = uncompressed_header_length % 4;
- bits_in_last_dw *= 8;
-
- if (bits_in_last_dw == 0)
- bits_in_last_dw = 32;
-
- /* get the DWORD length of the inserted_data */
- dw_length = ALIGN(uncompressed_header_length, 4) / 4;
- *cmd_ptr++ = HCP_INSERT_PAK_OBJECT | dw_length;
-
- *cmd_ptr++ = ((0 << 31) | /* indirect payload */
- (0 << 16) | /* the start offset in first DW */
- (0 << 15) |
- (bits_in_last_dw << 8) | /* bits_in_last_dw */
- (0 << 4) | /* skip emulation byte count. 0 for VP9 */
- (0 << 3) | /* emulation flag. 0 for VP9 */
- (1 << 2) | /* last header flag. */
- (0 << 1));
- memcpy(cmd_ptr, vp9_state->alias_insert_data, dw_length * sizeof(unsigned int));
-
- cmd_ptr += dw_length;
-
- *cmd_ptr++ = MI_NOOP;
- *cmd_ptr++ = MI_BATCH_BUFFER_END;
- i965_unmap_gpe_resource(obj_batch_buffer);
-}
-
-static void
-gen9_vp9_pak_picture_level(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context;
- struct object_surface *obj_surface;
- VAEncPictureParameterBufferVP9 *pic_param;
- VAEncMiscParameterTypeVP9PerSegmantParam *seg_param, tmp_seg_param;
- struct gen9_vp9_state *vp9_state;
- struct gen9_surface_vp9 *vp9_priv_surface;
- int i;
- struct gen9_hcpe_pipe_mode_select_param mode_param;
- hcp_surface_state hcp_surface;
- struct gpe_mi_batch_buffer_start_parameter second_level_batch;
- int segment_count;
-
- vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state);
-
- if (!pak_context || !vp9_state || !vp9_state->pic_param)
- return;
-
- pic_param = vp9_state->pic_param;
- seg_param = vp9_state->segment_param;
-
- if (vp9_state->curr_pak_pass == 0)
- {
- intel_vp9enc_construct_pak_insertobj_batchbuffer(ctx, encoder_context,
- &pak_context->res_pak_uncompressed_input_buffer);
-
- // Check if driver already programmed pic state as part of BRC update kernel programming.
- if (!vp9_state->brc_enabled)
- {
- intel_vp9enc_construct_picstate_batchbuf(ctx, encode_state,
- encoder_context, &pak_context->res_pic_state_brc_write_hfw_read_buffer);
- }
- }
-
- if (vp9_state->curr_pak_pass == 0)
- {
- intel_vp9enc_refresh_frame_internal_buffers(ctx, encoder_context);
- }
-
- {
- /* copy the frame_context[frame_idx] into curr_frame_context */
- memcpy(&vp9_state->vp9_current_fc,
- &(vp9_state->vp9_frame_ctx[vp9_state->frame_ctx_idx]),
- sizeof(FRAME_CONTEXT));
- {
- uint8_t *prob_ptr;
-
- prob_ptr = i965_map_gpe_resource(&pak_context->res_prob_buffer);
-
- if (!prob_ptr)
- return;
-
- /* copy the current fc to vp9_prob buffer */
- memcpy(prob_ptr, &vp9_state->vp9_current_fc, sizeof(FRAME_CONTEXT));
- if ((pic_param->pic_flags.bits.frame_type == HCP_VP9_KEY_FRAME) ||
- pic_param->pic_flags.bits.intra_only) {
- FRAME_CONTEXT *frame_ptr = (FRAME_CONTEXT *)prob_ptr;
-
- memcpy(frame_ptr->partition_prob, vp9_kf_partition_probs,
- sizeof(vp9_kf_partition_probs));
- memcpy(frame_ptr->uv_mode_prob, vp9_kf_uv_mode_prob,
- sizeof(vp9_kf_uv_mode_prob));
- }
- i965_unmap_gpe_resource(&pak_context->res_prob_buffer);
- }
- }
-
- if (vp9_state->brc_enabled && vp9_state->curr_pak_pass) {
- /* read image status and insert the conditional end cmd */
- /* image ctrl/status is already accessed */
- struct gpe_mi_conditional_batch_buffer_end_parameter mi_cond_end;
- struct vp9_encode_status_buffer_internal *status_buffer;
-
- status_buffer = &vp9_state->status_buffer;
- memset(&mi_cond_end, 0, sizeof(mi_cond_end));
- mi_cond_end.offset = status_buffer->image_status_mask_offset;
- mi_cond_end.bo = status_buffer->bo;
- mi_cond_end.compare_data = 0;
- mi_cond_end.compare_mask_mode_disabled = 1;
- gen9_gpe_mi_conditional_batch_buffer_end(ctx, batch,
- &mi_cond_end);
- }
-
- mode_param.codec_mode = 1;
- mode_param.stream_out = 0;
- gen9_pak_vp9_pipe_mode_select(ctx, encode_state, encoder_context, &mode_param);
-
- /* reconstructed surface */
- memset(&hcp_surface, 0, sizeof(hcp_surface));
- obj_surface = encode_state->reconstructed_object;
- hcp_surface.dw1.surface_id = 0;
- hcp_surface.dw1.surface_pitch = obj_surface->width;
- hcp_surface.dw2.surface_format = SURFACE_FORMAT_PLANAR_420_8;
- hcp_surface.dw2.y_cb_offset = obj_surface->y_cb_offset;
- gen9_vp9_add_surface_state(ctx, encode_state, encoder_context,
- &hcp_surface);
-
- /* Input surface */
- if (vp9_state->dys_in_use &&
- ((pic_param->frame_width_src != pic_param->frame_width_dst) ||
- (pic_param->frame_height_src != pic_param->frame_height_dst))) {
- vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data);
- obj_surface = vp9_priv_surface->dys_surface_obj;
- } else {
- obj_surface = encode_state->input_yuv_object;
- }
-
- hcp_surface.dw1.surface_id = 1;
- hcp_surface.dw1.surface_pitch = obj_surface->width;
- hcp_surface.dw2.surface_format = SURFACE_FORMAT_PLANAR_420_8;
- hcp_surface.dw2.y_cb_offset = obj_surface->y_cb_offset;
- gen9_vp9_add_surface_state(ctx, encode_state, encoder_context,
- &hcp_surface);
-
- if (vp9_state->picture_coding_type) {
- /* Add surface for last */
- if (vp9_state->last_ref_obj) {
- obj_surface = vp9_state->last_ref_obj;
- hcp_surface.dw1.surface_id = 2;
- hcp_surface.dw1.surface_pitch = obj_surface->width;
- hcp_surface.dw2.surface_format = SURFACE_FORMAT_PLANAR_420_8;
- hcp_surface.dw2.y_cb_offset = obj_surface->y_cb_offset;
- gen9_vp9_add_surface_state(ctx, encode_state, encoder_context,
- &hcp_surface);
- }
- if (vp9_state->golden_ref_obj) {
- obj_surface = vp9_state->golden_ref_obj;
- hcp_surface.dw1.surface_id = 3;
- hcp_surface.dw1.surface_pitch = obj_surface->width;
- hcp_surface.dw2.surface_format = SURFACE_FORMAT_PLANAR_420_8;
- hcp_surface.dw2.y_cb_offset = obj_surface->y_cb_offset;
- gen9_vp9_add_surface_state(ctx, encode_state, encoder_context,
- &hcp_surface);
- }
- if (vp9_state->alt_ref_obj) {
- obj_surface = vp9_state->alt_ref_obj;
- hcp_surface.dw1.surface_id = 4;
- hcp_surface.dw1.surface_pitch = obj_surface->width;
- hcp_surface.dw2.surface_format = SURFACE_FORMAT_PLANAR_420_8;
- hcp_surface.dw2.y_cb_offset = obj_surface->y_cb_offset;
- gen9_vp9_add_surface_state(ctx, encode_state, encoder_context,
- &hcp_surface);
- }
- }
-
- gen9_pak_vp9_pipe_buf_addr_state(ctx, encode_state, encoder_context);
-
- gen9_pak_vp9_ind_obj_base_addr_state(ctx, encode_state, encoder_context);
-
- // Using picstate zero with updated QP and LF deltas by HuC for repak, irrespective of how many Pak passes were run in multi-pass mode.
- memset(&second_level_batch, 0, sizeof(second_level_batch));
-
- if (vp9_state->curr_pak_pass == 0) {
- second_level_batch.offset = 0;
- } else
- second_level_batch.offset = vp9_state->curr_pak_pass * VP9_PIC_STATE_BUFFER_SIZE;
-
- second_level_batch.is_second_level = 1;
- second_level_batch.bo = pak_context->res_pic_state_brc_write_hfw_read_buffer.bo;
-
- gen8_gpe_mi_batch_buffer_start(ctx, batch, &second_level_batch);
-
- if (pic_param->pic_flags.bits.segmentation_enabled &&
- seg_param)
- segment_count = 8;
- else {
- segment_count = 1;
- memset(&tmp_seg_param, 0, sizeof(tmp_seg_param));
- seg_param = &tmp_seg_param;
- }
- for (i = 0; i < segment_count; i++)
- {
- gen9_pak_vp9_segment_state(ctx, encode_state,
- encoder_context,
- &seg_param->seg_data[i], i);
- }
-
- /* Insert the uncompressed header buffer */
- second_level_batch.is_second_level = 1;
- second_level_batch.offset = 0;
- second_level_batch.bo = pak_context->res_pak_uncompressed_input_buffer.bo;
-
- gen8_gpe_mi_batch_buffer_start(ctx, batch, &second_level_batch);
-
- /* PAK_OBJECT */
- second_level_batch.is_second_level = 1;
- second_level_batch.offset = 0;
- second_level_batch.bo = pak_context->res_mb_code_surface.bo;
- gen8_gpe_mi_batch_buffer_start(ctx, batch, &second_level_batch);
-
- return;
-}
-
-static void
-gen9_vp9_read_mfc_status(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context;
- struct gpe_mi_store_register_mem_parameter mi_store_reg_mem_param;
- struct gpe_mi_flush_dw_parameter mi_flush_dw_param;
- //struct gpe_mi_copy_mem_parameter mi_copy_mem_param;
- struct vp9_encode_status_buffer_internal *status_buffer;
- struct gen9_vp9_state *vp9_state;
-
- vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state);
- if (!vp9_state || !pak_context || !batch)
- return;
-
- status_buffer = &(vp9_state->status_buffer);
-
- memset(&mi_flush_dw_param, 0, sizeof(mi_flush_dw_param));
- gen8_gpe_mi_flush_dw(ctx, batch, &mi_flush_dw_param);
-
- memset(&mi_store_reg_mem_param, 0, sizeof(mi_store_reg_mem_param));
- mi_store_reg_mem_param.bo = status_buffer->bo;
- mi_store_reg_mem_param.offset = status_buffer->bs_byte_count_offset;
- mi_store_reg_mem_param.mmio_offset = status_buffer->vp9_bs_frame_reg_offset;
- gen8_gpe_mi_store_register_mem(ctx, batch, &mi_store_reg_mem_param);
-
- mi_store_reg_mem_param.bo = pak_context->res_brc_bitstream_size_buffer.bo;
- mi_store_reg_mem_param.offset = 0;
- mi_store_reg_mem_param.mmio_offset = status_buffer->vp9_bs_frame_reg_offset;
- gen8_gpe_mi_store_register_mem(ctx, batch, &mi_store_reg_mem_param);
-
- /* Read HCP Image status */
- mi_store_reg_mem_param.bo = status_buffer->bo;
- mi_store_reg_mem_param.offset = status_buffer->image_status_mask_offset;
- mi_store_reg_mem_param.mmio_offset =
- status_buffer->vp9_image_mask_reg_offset;
- gen8_gpe_mi_store_register_mem(ctx, batch, &mi_store_reg_mem_param);
-
- mi_store_reg_mem_param.bo = status_buffer->bo;
- mi_store_reg_mem_param.offset = status_buffer->image_status_ctrl_offset;
- mi_store_reg_mem_param.mmio_offset =
- status_buffer->vp9_image_ctrl_reg_offset;
- gen8_gpe_mi_store_register_mem(ctx, batch, &mi_store_reg_mem_param);
-
- mi_store_reg_mem_param.bo = pak_context->res_brc_bitstream_size_buffer.bo;
- mi_store_reg_mem_param.offset = 4;
- mi_store_reg_mem_param.mmio_offset =
- status_buffer->vp9_image_ctrl_reg_offset;
- gen8_gpe_mi_store_register_mem(ctx, batch, &mi_store_reg_mem_param);
-
- gen8_gpe_mi_flush_dw(ctx, batch, &mi_flush_dw_param);
-
- return;
-}
-
-static VAStatus
-gen9_vp9_pak_pipeline_prepare(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context;
- struct object_surface *obj_surface;
- struct object_buffer *obj_buffer;
- struct i965_coded_buffer_segment *coded_buffer_segment;
- VAEncPictureParameterBufferVP9 *pic_param;
- struct gen9_vp9_state *vp9_state;
- dri_bo *bo;
- int i;
-
- vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state);
- if (!vp9_state ||
- !vp9_state->pic_param)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- pic_param = vp9_state->pic_param;
-
- /* reconstructed surface */
- obj_surface = encode_state->reconstructed_object;
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
-
- dri_bo_unreference(pak_context->reconstructed_object.bo);
-
- pak_context->reconstructed_object.bo = obj_surface->bo;
- dri_bo_reference(pak_context->reconstructed_object.bo);
-
- /* set vp9 reference frames */
- for (i = 0; i < ARRAY_ELEMS(pak_context->reference_surfaces); i++) {
- if (pak_context->reference_surfaces[i].bo)
- dri_bo_unreference(pak_context->reference_surfaces[i].bo);
- pak_context->reference_surfaces[i].bo = NULL;
- }
-
- /* Three reference frames are enough for VP9 */
- if (pic_param->pic_flags.bits.frame_type &&
- !pic_param->pic_flags.bits.intra_only) {
- for (i = 0; i < 3; i++) {
- obj_surface = encode_state->reference_objects[i];
- if (obj_surface && obj_surface->bo) {
- pak_context->reference_surfaces[i].bo = obj_surface->bo;
- dri_bo_reference(obj_surface->bo);
- }
- }
- }
-
- /* input YUV surface */
- dri_bo_unreference(pak_context->uncompressed_picture_source.bo);
- pak_context->uncompressed_picture_source.bo = NULL;
- obj_surface = encode_state->reconstructed_object;
- if (vp9_state->dys_in_use &&
- ((pic_param->frame_width_src != pic_param->frame_width_dst) ||
- (pic_param->frame_height_src != pic_param->frame_height_dst))) {
- struct gen9_surface_vp9 *vp9_priv_surface =
- (struct gen9_surface_vp9 *)(obj_surface->private_data);
- obj_surface = vp9_priv_surface->dys_surface_obj;
- } else
- obj_surface = encode_state->input_yuv_object;
-
- pak_context->uncompressed_picture_source.bo = obj_surface->bo;
- dri_bo_reference(pak_context->uncompressed_picture_source.bo);
-
- /* coded buffer */
- dri_bo_unreference(pak_context->indirect_pak_bse_object.bo);
- pak_context->indirect_pak_bse_object.bo = NULL;
- obj_buffer = encode_state->coded_buf_object;
- bo = obj_buffer->buffer_store->bo;
- pak_context->indirect_pak_bse_object.offset = I965_CODEDBUFFER_HEADER_SIZE;
- pak_context->indirect_pak_bse_object.end_offset = ALIGN((obj_buffer->size_element - 0x1000), 0x1000);
- pak_context->indirect_pak_bse_object.bo = bo;
- dri_bo_reference(pak_context->indirect_pak_bse_object.bo);
-
- /* set the internal flag to 0 to indicate the coded size is unknown */
- dri_bo_map(bo, 1);
- coded_buffer_segment = (struct i965_coded_buffer_segment *)bo->virtual;
- coded_buffer_segment->mapped = 0;
- coded_buffer_segment->codec = encoder_context->codec;
- coded_buffer_segment->status_support = 1;
- dri_bo_unmap(bo);
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-gen9_vp9_pak_brc_prepare(struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
-}
-
-static void
-gen9_vp9_pak_context_destroy(void *context)
-{
- struct gen9_encoder_context_vp9 *pak_context = context;
- int i;
-
- dri_bo_unreference(pak_context->reconstructed_object.bo);
- pak_context->reconstructed_object.bo = NULL;
-
- dri_bo_unreference(pak_context->uncompressed_picture_source.bo);
- pak_context->uncompressed_picture_source.bo = NULL;
-
- dri_bo_unreference(pak_context->indirect_pak_bse_object.bo);
- pak_context->indirect_pak_bse_object.bo = NULL;
-
- for (i = 0; i < 8; i++){
- dri_bo_unreference(pak_context->reference_surfaces[i].bo);
- pak_context->reference_surfaces[i].bo = NULL;
- }
-
- /* vme & pak same the same structure, so don't free the context here */
-}
-
-static VAStatus
-gen9_vp9_pak_pipeline(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = encoder_context->base.batch;
- struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context;
- VAStatus va_status;
- struct gen9_vp9_state *vp9_state;
- VAEncPictureParameterBufferVP9 *pic_param;
- int i;
-
- vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state);
-
- if (!vp9_state || !vp9_state->pic_param || !pak_context)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- va_status = gen9_vp9_pak_pipeline_prepare(ctx, encode_state, encoder_context);
-
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
-
- if (i965->intel.has_bsd2)
- intel_batchbuffer_start_atomic_bcs_override(batch, 0x1000, BSD_RING0);
- else
- intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
-
- intel_batchbuffer_emit_mi_flush(batch);
-
- BEGIN_BCS_BATCH(batch, 64);
- for (i = 0; i < 64; i++)
- OUT_BCS_BATCH(batch, MI_NOOP);
-
- ADVANCE_BCS_BATCH(batch);
-
- for (vp9_state->curr_pak_pass = 0;
- vp9_state->curr_pak_pass < vp9_state->num_pak_passes;
- vp9_state->curr_pak_pass++) {
-
- if (vp9_state->curr_pak_pass == 0) {
- /* Initialize the VP9 Image Ctrl reg for the first pass */
- struct gpe_mi_load_register_imm_parameter mi_load_reg_imm;
- struct vp9_encode_status_buffer_internal *status_buffer;
-
- status_buffer = &(vp9_state->status_buffer);
- memset(&mi_load_reg_imm, 0, sizeof(mi_load_reg_imm));
- mi_load_reg_imm.mmio_offset = status_buffer->vp9_image_ctrl_reg_offset;
- mi_load_reg_imm.data = 0;
- gen8_gpe_mi_load_register_imm(ctx, batch, &mi_load_reg_imm);
- }
- gen9_vp9_pak_picture_level(ctx, encode_state, encoder_context);
- gen9_vp9_read_mfc_status(ctx, encoder_context);
- }
-
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-
- pic_param = vp9_state->pic_param;
- vp9_state->vp9_last_frame.frame_width = pic_param->frame_width_dst;
- vp9_state->vp9_last_frame.frame_height = pic_param->frame_height_dst;
- vp9_state->vp9_last_frame.frame_type = pic_param->pic_flags.bits.frame_type;
- vp9_state->vp9_last_frame.show_frame = pic_param->pic_flags.bits.show_frame;
- vp9_state->vp9_last_frame.refresh_frame_context = pic_param->pic_flags.bits.refresh_frame_context;
- vp9_state->vp9_last_frame.frame_context_idx = pic_param->pic_flags.bits.frame_context_idx;
- vp9_state->vp9_last_frame.intra_only = pic_param->pic_flags.bits.intra_only;
- vp9_state->frame_number++;
- vp9_state->curr_mv_temporal_index ^= 1;
- vp9_state->first_frame = 0;
-
- return VA_STATUS_SUCCESS;
-}
-
-Bool
-gen9_vp9_vme_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- struct gen9_encoder_context_vp9 *vme_context = NULL;
- struct gen9_vp9_state *vp9_state = NULL;
-
- vme_context = calloc(1, sizeof(struct gen9_encoder_context_vp9));
- vp9_state = calloc(1, sizeof(struct gen9_vp9_state));
-
- if (!vme_context || !vp9_state) {
- if (vme_context)
- free(vme_context);
- if (vp9_state)
- free(vp9_state);
- return false;
- }
-
- encoder_context->enc_priv_state = vp9_state;
- vme_context->enc_priv_state = vp9_state;
-
- /* Initialize the features that are supported by VP9 */
- vme_context->hme_supported = 1;
- vme_context->use_hw_scoreboard = 1;
- vme_context->use_hw_non_stalling_scoreboard = 1;
-
- vp9_state->tx_mode = TX_MODE_SELECT;
- vp9_state->multi_ref_qp_check = 0;
- vp9_state->target_usage = INTEL_ENC_VP9_TU_NORMAL;
- vp9_state->num_pak_passes = 1;
- vp9_state->hme_supported = vme_context->hme_supported;
- vp9_state->b16xme_supported = 1;
-
- if (encoder_context->rate_control_mode != VA_RC_NONE &&
- encoder_context->rate_control_mode != VA_RC_CQP) {
- vp9_state->brc_enabled = 1;
- vp9_state->brc_distortion_buffer_supported = 1;
- vp9_state->brc_constant_buffer_supported = 1;
- vp9_state->num_pak_passes = 4;
- }
- vp9_state->dys_enabled = 1; /* this is supported by default */
- vp9_state->first_frame = 1;
-
- /* the definition of status buffer offset for VP9 */
- {
- struct vp9_encode_status_buffer_internal *status_buffer;
- uint32_t base_offset = offsetof(struct i965_coded_buffer_segment, codec_private_data);
-
- status_buffer = &vp9_state->status_buffer;
- memset(status_buffer, 0,
- sizeof(struct vp9_encode_status_buffer_internal));
-
- status_buffer->bs_byte_count_offset = base_offset + offsetof(struct vp9_encode_status, bs_byte_count);
- status_buffer->image_status_mask_offset = base_offset + offsetof(struct vp9_encode_status, image_status_mask);
- status_buffer->image_status_ctrl_offset = base_offset + offsetof(struct vp9_encode_status, image_status_ctrl);
- status_buffer->media_index_offset = base_offset + offsetof(struct vp9_encode_status, media_index);
-
- status_buffer->vp9_bs_frame_reg_offset = 0x1E9E0;
- status_buffer->vp9_image_mask_reg_offset = 0x1E9F0;
- status_buffer->vp9_image_ctrl_reg_offset = 0x1E9F4;
- }
-
- gen9_vme_kernels_context_init_vp9(ctx, encoder_context, vme_context);
-
- encoder_context->vme_context = vme_context;
- encoder_context->vme_pipeline = gen9_vme_pipeline_vp9;
- encoder_context->vme_context_destroy = gen9_vme_context_destroy_vp9;
-
- return true;
-}
-
-static VAStatus
-gen9_vp9_get_coded_status(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct i965_coded_buffer_segment *coded_buf_seg)
-{
- struct vp9_encode_status *vp9_encode_status;
-
- if (!encoder_context || !coded_buf_seg)
- return VA_STATUS_ERROR_INVALID_BUFFER;
-
- vp9_encode_status = (struct vp9_encode_status *)coded_buf_seg->codec_private_data;
- coded_buf_seg->base.size = vp9_encode_status->bs_byte_count;
-
- /* One VACodedBufferSegment for VP9 will be added later.
- * It will be linked to the next element of coded_buf_seg->base.next
- */
-
- return VA_STATUS_SUCCESS;
-}
-
-Bool
-gen9_vp9_pak_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context)
-{
- /* VME & PAK share the same context */
- struct gen9_encoder_context_vp9 *pak_context = encoder_context->vme_context;
-
- if (!pak_context)
- return false;
-
- encoder_context->mfc_context = pak_context;
- encoder_context->mfc_context_destroy = gen9_vp9_pak_context_destroy;
- encoder_context->mfc_pipeline = gen9_vp9_pak_pipeline;
- encoder_context->mfc_brc_prepare = gen9_vp9_pak_brc_prepare;
- encoder_context->get_status = gen9_vp9_get_coded_status;
- return true;
-}
diff --git a/src/gen9_vp9_encoder.h b/src/gen9_vp9_encoder.h
deleted file mode 100644
index 972e2ad..0000000
--- a/src/gen9_vp9_encoder.h
+++ /dev/null
@@ -1,1973 +0,0 @@
-/*
- * Copyright © 2016 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWAR
- *
- * Authors:
- * Zhao, Yakui <yakui.zhao@intel.com>
- *
- */
-
-#ifndef GEN9_VP9_ENCODER_H
-#define GEN9_VP9_ENCODER_H
-
-#include <drm.h>
-#include <i915_drm.h>
-#include <intel_bufmgr.h>
-
-#include <va/va.h>
-#include "i965_gpe_utils.h"
-
-#include "vp9_probs.h"
-
-struct encode_state;
-struct intel_encoder_context;
-
-#define KEY_FRAME 0
-#define INTER_FRAME 1
-
-#define INTEL_BRC_NONE 0
-#define INTEL_BRC_CBR 1
-#define INTEL_BRC_VBR 2
-#define INTEL_BRC_CQP 3
-
-typedef enum _VP9_MEDIA_STATE_TYPE
-{
- VP9_MEDIA_STATE_ENC_I_FRAME_DIST = 0,
- VP9_MEDIA_STATE_32X_SCALING ,
- VP9_MEDIA_STATE_16X_SCALING ,
- VP9_MEDIA_STATE_4X_SCALING ,
- VP9_MEDIA_STATE_32X_ME ,
- VP9_MEDIA_STATE_16X_ME ,
- VP9_MEDIA_STATE_4X_ME ,
- VP9_MEDIA_STATE_BRC_INIT_RESET ,
- VP9_MEDIA_STATE_BRC_UPDATE ,
- VP9_MEDIA_STATE_MBENC_I_32x32 ,
- VP9_MEDIA_STATE_MBENC_I_16x16 ,
- VP9_MEDIA_STATE_MBENC_P ,
- VP9_MEDIA_STATE_MBENC_TX ,
- VP9_MEDIA_STATE_DYS ,
- VP9_NUM_MEDIA_STATES
-} VP9_MEDIA_STATE_TYPE;
-
-
-enum vp9_walker_degree
-{
- VP9_NO_DEGREE = 0,
- VP9_26_DEGREE,
- VP9_45Z_DEGREE
-};
-
-struct vp9_encoder_kernel_parameter
-{
- unsigned int curbe_size;
- unsigned int inline_data_size;
- unsigned int sampler_size;
-};
-
-struct vp9_encoder_kernel_walker_parameter
-{
- unsigned int walker_degree;
- unsigned int use_scoreboard;
- unsigned int scoreboard_mask;
- unsigned int no_dependency;
- unsigned int resolution_x;
- unsigned int resolution_y;
-};
-
-struct vp9_encoder_scoreboard_parameter
-{
- unsigned int mask;
- unsigned int type;
- unsigned int enable;
- unsigned int walkpat_flag;
-};
-
-typedef enum _INTEL_VP9_ENC_OPERATION
-{
- INTEL_VP9_ENC_SCALING4X = 0,
- INTEL_VP9_ENC_SCALING2X,
- INTEL_VP9_ENC_ME,
- INTEL_VP9_ENC_BRC,
- INTEL_VP9_ENC_MBENC,
- INTEL_VP9_ENC_DYS
-} INTEL_VP9_ENC_OPERATION;
-
-struct gen9_surface_vp9
-{
- VADriverContextP ctx;
- VASurfaceID scaled_4x_surface_id;
- struct object_surface *scaled_4x_surface_obj;
- VASurfaceID scaled_16x_surface_id;
- struct object_surface *scaled_16x_surface_obj;
-
- VASurfaceID dys_surface_id;
- struct object_surface *dys_surface_obj;
- VASurfaceID dys_4x_surface_id;
- struct object_surface *dys_4x_surface_obj;
- VASurfaceID dys_16x_surface_id;
- struct object_surface *dys_16x_surface_obj;
- int dys_frame_width;
- int dys_frame_height;
- int frame_width;
- int frame_height;
- unsigned int qp_value;
- uint8_t dys_hme_flag;
-};
-
-/* The definition for Scaling */
-enum vp9_binding_table_offset_scaling
-{
- VP9_BTI_SCALING_FRAME_SRC_Y = 0,
- VP9_BTI_SCALING_FRAME_DST_Y = 1,
- VP9_BTI_SCALING_FRAME_MBVPROCSTATS_DST_CM = 6,
- VP9_BTI_SCALING_NUM_SURFACES = 8
-};
-
-
-typedef struct _vp9_scaling4x_curbe_data_cm
-{
- struct
- {
- uint32_t input_picture_width :16;
- uint32_t input_picture_height :16;
- } dw0;
-
- struct {
- uint32_t input_y_bti;
- } dw1;
-
- struct {
- uint32_t output_y_bti;
- } dw2;
-
- struct {
- uint32_t reserved;
- } dw3;
-
- struct {
- uint32_t reserved;
- } dw4;
-
- struct {
- uint32_t reserved;
- } dw5;
-
- struct
- {
- uint32_t reserved0 : 1;
- uint32_t enable_mb_variance_output : 1;
- uint32_t enable_mb_pixel_average_output : 1;
- uint32_t enable_blk8x8_stat_output : 1;
- uint32_t reserved1 : 28;
- } dw6;
-
- struct {
- uint32_t reserved;
- } dw7;
-
- struct {
- uint32_t reserved;
- } dw8;
-
- struct {
- uint32_t reserved;
- } dw9;
-
- struct {
- uint32_t mbv_proc_stat_bti;
- } dw10;
-
- struct {
- uint32_t reserved;
- } dw11;
-} vp9_scaling4x_curbe_data_cm;
-
-typedef struct _vp9_scaling2x_curbe_data_cm
-{
- struct
- {
- uint32_t input_picture_width :16;
- uint32_t input_picture_height :16;
- } dw0;
-
- /* dw1-dw7 */
- uint32_t reserved1[7];
-
- struct {
- uint32_t input_y_bti;
- } dw8;
-
- struct {
- uint32_t output_y_bti;
- } dw9;
-
- uint32_t reserved2[2];
-} vp9_scaling2x_curbe_data_cm;
-
-typedef struct _vp9_scaling4x_inline_data_cm
-{
- struct
- {
- uint32_t dstblk_hori_origin : 16;
- uint32_t dstblk_vert_origin : 16;
- } dw0;
-
- struct
- {
- uint32_t horiblk_compmask_layer0 : 16;
- uint32_t vertblk_compmask_layer0 : 16;
- } dw1;
-
- struct
- {
- uint32_t horiblk_compmask_layer1 : 16;
- uint32_t vertblk_compmask_layer1 : 16;
- } dw2;
-
- struct
- {
- uint32_t horiblk_compmask_layer2 : 16;
- uint32_t vertblk_compmask_layer2 : 16;
- } dw3;
-
- struct
- {
- float video_xscaling_step;
- } dw4;
-
- struct
- {
- float video_step_delta;
- } dw5;
-
-
- struct
- {
- uint32_t vert_blk_num :17;
- uint32_t area_interest :1;
- uint32_t reserved :14;
- } dw6;
-
- struct
- {
- uint32_t grp_id_num;
- } dw7;
-
- struct
- {
- uint32_t horiblk_compmask_layer3 : 16;
- uint32_t vertblk_compmask_layer3 : 16;
- } dw8;
-
- struct
- {
- uint32_t horiblk_compmask_layer4 : 16;
- uint32_t vertblk_compmask_layer4 : 16;
- } dw9;
-
- struct
- {
- uint32_t horiblk_compmask_layer5 : 16;
- uint32_t vertblk_compmask_layer5 : 16;
- } dw10;
-
- struct
- {
- uint32_t horiblk_compmask_layer6 : 16;
- uint32_t vertblk_compmask_layer6 : 16;
- } dw11;
-
- struct
- {
- uint32_t horiblk_compmask_layer7 : 16;
- uint32_t vertblk_compmask_layer7 : 16;
- } dw12;
-
- struct {
- uint32_t reserved;
- } dw13;
-
- struct {
- uint32_t reserved;
- } dw14;
-
- struct {
- uint32_t reserved;
- } dw15;
-} vp9_scaling4x_inline_data_cm;
-
-#define VP9_SCALING_4X 0
-#define VP9_SCALING_2X 1
-#define NUM_VP9_SCALING 2
-
-typedef struct _vp9_bti_scaling_offset
-{
- uint32_t scaling_frame_src_y;
- uint32_t scaling_frame_dst_y;
- uint32_t reserved;
- uint32_t scaling_frame_mbv_proc_stat_dst;
-} vp9_bti_scaling_offset;
-
-struct vp9_scaling_context
-{
- struct i965_gpe_context gpe_contexts[NUM_VP9_SCALING];
- vp9_bti_scaling_offset scaling_4x_bti;
- vp9_bti_scaling_offset scaling_2x_bti;
-};
-
-struct gen9_search_path_delta
-{
- char search_path_delta_x:4;
- char search_path_delta_y:4;
-};
-
-struct vp9_binding_table_me
-{
- uint32_t memv_data_surface_offset;
- uint32_t memv16x_data_surface_offset;
- uint32_t me_dist_offset;
- uint32_t me_brc_dist_offset;
- uint32_t me_curr_picl0_offset;
- uint32_t me_curr_picl1_offset;
-};
-
-enum vp9_binding_table_offset_me
-{
- VP9_BTI_ME_MV_DATA_SURFACE = 0,
- VP9_BTI_16XME_MV_DATA_SURFACE = 1,
- VP9_BTI_ME_DISTORTION_SURFACE = 2,
- VP9_BTI_ME_BRC_DISTORTION_SURFACE = 3,
- VP9_BTI_ME_CURR_PIC_L0 = 4,
- VP9_BTI_ME_CURR_PIC_L1 = VP9_BTI_ME_CURR_PIC_L0 + 17,
- VP9_BTI_ME_NUM_SURFACES = VP9_BTI_ME_CURR_PIC_L1 + 5
-};
-
-enum VP9_ENC_ME_MODES
-{
- VP9_ENC_ME16X_BEFORE_ME4X = 0,
- VP9_ENC_ME16X_ONLY = 1,
- VP9_ENC_ME4X_ONLY = 2,
- VP9_ENC_ME4X_AFTER_ME16X = 3
-};
-
-typedef struct _vp9_me_curbe_data
-{
- struct
- {
- uint32_t skip_mode_enable:1;
- uint32_t adaptive_enable:1;
- uint32_t bi_mix_dis:1;
- uint32_t reserved0:2;
- uint32_t early_ime_success_enable:1;
- uint32_t reserved1:1;
- uint32_t t8x8_flag_for_inter_enable:1;
- uint32_t reserved2:16;
- uint32_t early_ime_stop:8;
- } dw0;
-
- struct {
- uint32_t max_num_mvs:6;
- uint32_t reserved0:10;
- uint32_t bi_weight:6;
- uint32_t reserved1:6;
- uint32_t uni_mix_disable:1;
- uint32_t reserved2:3;
- } dw1;
-
- struct {
- uint32_t max_len_sp:8;
- uint32_t max_num_su:8;
- uint32_t reserved0:16;
- } dw2;
-
- struct {
- uint32_t src_size:2;
- uint32_t reserved0:2;
- uint32_t mb_type_remap:2;
- uint32_t src_Access:1;
- uint32_t ref_access:1;
- uint32_t search_ctrl:3;
- uint32_t dual_search_path_option:1;
- uint32_t sub_pel_mode:2;
- uint32_t skip_type:1;
- uint32_t disable_field_cache_allocation:1;
- uint32_t inter_chroma_mode:1;
- uint32_t ft_enable:1;
- uint32_t bme_disable_fbr:1;
- uint32_t block_based_skip_enable:1;
- uint32_t inter_sad:2;
- uint32_t intra_sad:2;
- uint32_t sub_mb_part_mask:7;
- uint32_t reserved1:1;
- } dw3;
-
- struct {
- uint32_t reserved0:8;
- uint32_t picture_height_minus1:8;
- uint32_t picture_width:8;
- uint32_t reserved1:8;
- } dw4;
-
- struct {
- uint32_t reserved0:8;
- uint32_t qp_prime_y:8;
- uint32_t ref_width:8;
- uint32_t ref_height:8;
- } dw5;
-
- struct {
- uint32_t reserved0:3;
- uint32_t write_distortions:1;
- uint32_t use_mv_from_prev_step:1;
- uint32_t reserved1:3;
- uint32_t super_combine_dist:8;
- uint32_t max_vmvr:16;
- } dw6;
-
- struct {
- uint32_t reserved0:16;
- uint32_t mv_cost_scale_factor:2;
- uint32_t bilinear_enable:1;
- uint32_t src_field_polarity:1;
- uint32_t weightedsad_harr:1;
- uint32_t ac_only_haar:1;
- uint32_t ref_id_cost_mode:1;
- uint32_t reserved1:1;
- uint32_t skip_center_mask:8;
- } dw7;
-
- struct {
- uint32_t mode_0_cost:8;
- uint32_t mode_1_cost:8;
- uint32_t mode_2_cost:8;
- uint32_t mode_3_cost:8;
- } dw8;
-
- struct {
- uint32_t mode_4_cost:8;
- uint32_t mode_5_cost:8;
- uint32_t mode_6_cost:8;
- uint32_t mode_7_cost:8;
- } dw9;
-
- struct {
- uint32_t mode_8_cost:8;
- uint32_t mode_9_cost:8;
- uint32_t ref_id_cost:8;
- uint32_t chroma_intra_mode_cost:8;
- } dw10;
-
- struct {
- uint32_t mv_0_cost:8;
- uint32_t mv_1_cost:8;
- uint32_t mv_2_cost:8;
- uint32_t mv_3_cost:8;
- } dw11;
-
- struct {
- uint32_t mv_4_cost:8;
- uint32_t mv_5_cost:8;
- uint32_t mv_6_cost:8;
- uint32_t mv_7_cost:8;
- } dw12;
-
- struct {
- uint32_t num_ref_idx_l0_minus1:8;
- uint32_t num_ref_idx_l1_minus1:8;
- uint32_t actual_mb_width:8;
- uint32_t actual_mb_height:8;
- } dw13;
-
- struct {
- uint32_t l0_ref_pic_polarity_bits:8;
- uint32_t l1_ref_pic_polarity_bits:2;
- uint32_t reserved:22;
- } dw14;
-
- struct {
- uint32_t prev_mv_read_pos_factor : 8;
- uint32_t mv_shift_factor : 8;
- uint32_t reserved:16;
- } dw15;
-
- struct {
- struct gen9_search_path_delta sp_delta_0;
- struct gen9_search_path_delta sp_delta_1;
- struct gen9_search_path_delta sp_delta_2;
- struct gen9_search_path_delta sp_delta_3;
- } dw16;
-
- struct {
- struct gen9_search_path_delta sp_delta_4;
- struct gen9_search_path_delta sp_delta_5;
- struct gen9_search_path_delta sp_delta_6;
- struct gen9_search_path_delta sp_delta_7;
- } dw17;
-
- struct {
- struct gen9_search_path_delta sp_delta_8;
- struct gen9_search_path_delta sp_delta_9;
- struct gen9_search_path_delta sp_delta_10;
- struct gen9_search_path_delta sp_delta_11;
- } dw18;
-
- struct {
- struct gen9_search_path_delta sp_delta_12;
- struct gen9_search_path_delta sp_delta_13;
- struct gen9_search_path_delta sp_delta_14;
- struct gen9_search_path_delta sp_delta_15;
- } dw19;
-
- struct {
- struct gen9_search_path_delta sp_delta_16;
- struct gen9_search_path_delta sp_delta_17;
- struct gen9_search_path_delta sp_delta_18;
- struct gen9_search_path_delta sp_delta_19;
- } dw20;
-
- struct {
- struct gen9_search_path_delta sp_delta_20;
- struct gen9_search_path_delta sp_delta_21;
- struct gen9_search_path_delta sp_delta_22;
- struct gen9_search_path_delta sp_delta_23;
- } dw21;
-
- struct {
- struct gen9_search_path_delta sp_delta_24;
- struct gen9_search_path_delta sp_delta_25;
- struct gen9_search_path_delta sp_delta_26;
- struct gen9_search_path_delta sp_delta_27;
- } dw22;
-
- struct {
- struct gen9_search_path_delta sp_delta_28;
- struct gen9_search_path_delta sp_delta_29;
- struct gen9_search_path_delta sp_delta_30;
- struct gen9_search_path_delta sp_delta_31;
- } dw23;
-
- struct {
- struct gen9_search_path_delta sp_delta_32;
- struct gen9_search_path_delta sp_delta_33;
- struct gen9_search_path_delta sp_delta_34;
- struct gen9_search_path_delta sp_delta_35;
- } dw24;
-
- struct {
- struct gen9_search_path_delta sp_delta_36;
- struct gen9_search_path_delta sp_delta_37;
- struct gen9_search_path_delta sp_delta_38;
- struct gen9_search_path_delta sp_delta_39;
- } dw25;
-
- struct {
- struct gen9_search_path_delta sp_delta_40;
- struct gen9_search_path_delta sp_delta_41;
- struct gen9_search_path_delta sp_delta_42;
- struct gen9_search_path_delta sp_delta_43;
- } dw26;
-
- struct {
- struct gen9_search_path_delta sp_delta_44;
- struct gen9_search_path_delta sp_delta_45;
- struct gen9_search_path_delta sp_delta_46;
- struct gen9_search_path_delta sp_delta_47;
- } dw27;
-
- struct {
- struct gen9_search_path_delta sp_delta_48;
- struct gen9_search_path_delta sp_delta_49;
- struct gen9_search_path_delta sp_delta_50;
- struct gen9_search_path_delta sp_delta_51;
- } dw28;
-
- struct {
- struct gen9_search_path_delta sp_delta_52;
- struct gen9_search_path_delta sp_delta_53;
- struct gen9_search_path_delta sp_delta_54;
- struct gen9_search_path_delta sp_delta_55;
- } dw29;
-
- struct {
- uint32_t reserved0;
- } dw30;
-
- struct {
- uint32_t reserved0;
- } dw31;
-
- struct {
- uint32_t _4x_memv_output_data_surf_index;
- } dw32;
-
- struct {
- uint32_t _16x_32x_memv_input_data_surf_index;
- } dw33;
-
- struct {
- uint32_t _4x_me_output_dist_surf_index;
- } dw34;
-
- struct {
- uint32_t _4x_me_output_brc_dist_surf_index;
- } dw35;
-
- struct {
- uint32_t vme_fwd_inter_pred_surf_index;
- } dw36;
-
- struct {
- uint32_t vme_bdw_inter_pred_surf_index;
- } dw37;
-
- /* reserved */
- struct {
- uint32_t reserved;
- } dw38;
-} vp9_me_curbe_data;
-
-struct vp9_me_context
-{
- struct i965_gpe_context gpe_context;
- struct vp9_binding_table_me vp9_me_bti;
-};
-
-
-enum vp9_binding_table_offset_mbenc
-{
- VP9_BTI_MBENC_CURR_Y_G9 = 0,
- VP9_BTI_MBENC_CURR_UV_G9 = 1,
- VP9_BTI_MBENC_CURR_NV12_G9 = 2,
- VP9_BTI_MBENC_LAST_NV12_G9 = 3,
- VP9_BTI_MBENC_GOLD_NV12_G9 = 5,
- VP9_BTI_MBENC_ALTREF_NV12_G9 = 7,
- VP9_BTI_MBENC_SEGMENTATION_MAP_G9 = 8,
- VP9_BTI_MBENC_TX_CURBE_G9 = 9,
- VP9_BTI_MBENC_HME_MV_DATA_G9 = 10,
- VP9_BTI_MBENC_HME_DISTORTION_G9 = 11,
- VP9_BTI_MBENC_MODE_DECISION_PREV_G9 = 12,
- VP9_BTI_MBENC_MODE_DECISION_G9 = 13,
- VP9_BTI_MBENC_OUT_16x16_INTER_MODES_G9 = 14,
- VP9_BTI_MBENC_CU_RECORDS_G9 = 15,
- VP9_BTI_MBENC_PAK_DATA_G9 = 16,
- VP9_BTI_MBENC_NUM_SURFACES_G9 = 17,
-};
-
-struct vp9_binding_table_mbenc_i32
-{
- uint32_t mbenc_curr_y;
- uint32_t mbenc_curr_uv;
- uint32_t mbenc_segmentation_map;
- uint32_t mbenc_mode_decision;
-};
-
-struct vp9_binding_table_mbenc_i16
-{
- uint32_t mbenc_curr_y;
- uint32_t mbenc_curr_uv;
- uint32_t mbenc_curr_nv12;
- uint32_t mbenc_segmentation_map;
- uint32_t mbenc_tx_curbe;
- uint32_t mbenc_mode_decision;
-};
-
-struct vp9_binding_table_mbenc_p
-{
- uint32_t mbenc_curr_y;
- uint32_t mbenc_curr_uv;
- uint32_t mbenc_curr_nv12;
- uint32_t mbenc_lastref_pic;
- uint32_t mbenc_goldref_pic;
- uint32_t mbenc_altref_pic;
- uint32_t mbenc_hme_mvdata;
- uint32_t mbenc_hme_distortion;
- uint32_t mbenc_segmentation_map;
- uint32_t mbenc_tx_curbe;
- uint32_t mbenc_mode_decision_prev;
- uint32_t mbenc_mode_decision;
- uint32_t mbenc_output_intermodes16x16;
-};
-
-struct vp9_binding_table_mbenc_tx
-{
- uint32_t mbenc_curr_y;
- uint32_t mbenc_curr_uv;
- uint32_t mbenc_segmentation_map;
- uint32_t mbenc_mode_decision;
- uint32_t mbenc_cu_records;
- uint32_t mbenc_pak_data;
-};
-
-typedef struct _vp9_mbenc_curbe_data
-{
- struct {
- uint32_t frame_width:16;
- uint32_t frame_height:16;
- } dw0;
-
- struct {
- uint32_t frame_type : 8;
- uint32_t segmentation_enable : 8;
- uint32_t ref_frame_flags : 8;
- uint32_t min_16for32_check : 8;
- } dw1;
-
- struct {
- uint32_t multi_pred : 8;
- uint32_t len_sp : 8;
- uint32_t search_x : 8;
- uint32_t search_y : 8;
- } dw2;
-
- struct {
- uint32_t hme_enabled : 8;
- uint32_t multi_ref_qp_check : 8;
- uint32_t disable_temp_pred : 8;
- uint32_t min_ref_for32_check : 8;
- } dw3;
-
- struct {
- uint32_t skip16_threshold : 16;
- uint32_t disable_mr_threshold : 16;
- } dw4;
-
- struct {
- uint32_t enable_mbrc : 8;
- uint32_t inter_round : 8;
- uint32_t intra_round : 8;
- uint32_t frame_qpindex : 8;
- } dw5;
-
- struct {
- uint32_t reserved;
- } dw6;
-
- struct {
- uint32_t reserved;
- } dw7;
-
- struct {
- uint32_t last_ref_qp : 16;
- uint32_t golden_ref_qp : 16;
- } dw8;
-
- struct {
- uint32_t alt_ref_qp : 16;
- uint32_t reserved : 16;
- } dw9;
-
- struct {
- uint32_t sum_intra_dist;
- } dw10;
-
- struct {
- uint32_t sum_inter_dist;
- } dw11;
-
- struct {
- uint32_t num_intra;
- } dw12;
-
- struct {
- uint32_t num_lastref;
- } dw13;
-
- struct {
- uint32_t num_goldref;
- } dw14;
-
- struct {
- uint32_t num_altref;
- } dw15;
-
- struct {
- uint32_t ime_search_path_delta03;
- } dw16;
-
- struct {
- uint32_t ime_search_path_delta47;
- } dw17;
-
- struct {
- uint32_t ime_search_path_delta811;
- } dw18;
-
- struct {
- uint32_t ime_search_path_delta1215;
- } dw19;
-
- struct {
- uint32_t ime_search_path_delta1619;
- } dw20;
-
- struct {
- uint32_t ime_search_path_delta2023;
- } dw21;
-
- struct {
- uint32_t ime_search_path_delta2427;
- } dw22;
-
- struct {
- uint32_t ime_search_path_delta2831;
- } dw23;
-
- struct {
- uint32_t ime_search_path_delta3235;
- } dw24;
-
- struct {
- uint32_t ime_search_path_delta3639;
- } dw25;
-
- struct {
- uint32_t ime_search_path_delta4043;
- } dw26;
-
- struct {
- uint32_t ime_search_path_delta4447;
- } dw27;
-
- struct {
- uint32_t ime_search_path_delta4851;
- } dw28;
-
- struct {
- uint32_t ime_search_path_delta5255;
- } dw29;
-
- struct {
- uint32_t reserved;
- } dw30;
-
- struct {
- uint32_t reserved;
- } dw31;
-
- /* DW 32 */
- struct {
- struct {
- uint32_t segment_qpindex : 8;
- uint32_t intra_non_dcpenalty_16x16 : 8;
- uint32_t intra_non_dcpenalty_8x8 : 8;
- uint32_t intra_non_dcpenalty_4x4 : 8;
- } dw32;
-
- struct {
- uint32_t intra_non_dcpenalty_32x32 : 16;
- uint32_t reserved : 16;
- } dw33;
-
-
- struct {
- uint32_t zero_cost : 16;
- uint32_t near_cost : 16;
- } dw34;
-
- struct {
- uint32_t nearest_cost : 16;
- uint32_t refid_cost : 16;
- } dw35;
-
- struct {
- uint32_t mv_cost0 : 16;
- uint32_t mv_cost1 : 16;
- } dw36;
-
- struct {
- uint32_t mv_cost2 : 16;
- uint32_t mv_cost3 : 16;
- } dw37;
-
- struct {
- uint32_t mv_cost4 : 16;
- uint32_t mv_cost5 : 16;
- } dw38;
-
- struct {
- uint32_t mv_cost6 : 16;
- uint32_t mv_cost7 : 16;
- } dw39;
-
- struct {
- uint32_t mv_cost0 : 8;
- uint32_t mv_cost1 : 8;
- uint32_t mv_cost2 : 8;
- uint32_t mv_cost3 : 8;
- } dw40;
-
- struct {
- uint32_t mv_cost4 : 8;
- uint32_t mv_cost5 : 8;
- uint32_t mv_cost6 : 8;
- uint32_t mv_cost7 : 8;
- } dw41;
-
- struct {
- uint32_t mode_cost0 : 8;
- uint32_t mode_cost1 : 8;
- uint32_t mode_cost2 : 8;
- uint32_t mode_cost3 : 8;
- } dw42;
-
- struct {
- uint32_t mode_cost4 : 8;
- uint32_t mode_cost5 : 8;
- uint32_t mode_cost6 : 8;
- uint32_t mode_cost7 : 8;
- } dw43;
-
- struct {
- uint32_t mode_cost8 : 8;
- uint32_t mode_cost9 : 8;
- uint32_t refid_cost : 8;
- uint32_t reserved : 8;
- } dw44;
-
- struct {
- uint32_t mode_cost_intra32x32 : 16;
- uint32_t mode_cost_inter32x32 : 16;
- } dw45;
-
- struct {
- uint32_t mode_cost_intra32x16 : 16;
- uint32_t reserved : 16;
- } dw46;
-
- struct {
- uint32_t lambda_intra : 16;
- uint32_t lambda_inter : 16;
- } dw47;
- } segments[8];
-
- /*
- Segment 0: dw32 - dw47
- Segment 1 : dw48 - dw63
- Segment 2 : dw64 - dw79
- Segment 3 : dw80 - dw95
- Segment 4 : dw96 - dw111
- Segment 5 : dw112 - dw127
- Segment 6 : dw128 - dw143
- Segment 7 : dw144 - dw159
- */
-
- // dw160
- struct {
- uint32_t enc_curr_y_surf_bti;
- } dw160;
-
- struct {
- uint32_t reserved;
- } dw161;
-
- struct {
- uint32_t enc_curr_nv12_surf_bti;
- } dw162;
-
- struct {
- uint32_t reserved;
- } dw163;
-
- struct {
- uint32_t reserved;
- } dw164;
-
- struct {
- uint32_t reserved;
- } dw165;
-
- struct {
- uint32_t segmentation_map_bti;
- } dw166;
-
- struct {
- uint32_t tx_curbe_bti;
- } dw167;
-
- struct {
- uint32_t hme_mvdata_bti;
- } dw168;
-
- struct {
- uint32_t hme_distortion_bti;
- } dw169;
-
- struct {
- uint32_t reserved;
- } dw170;
-
- struct {
- uint32_t mode_decision_prev_bti;
- } dw171;
-
- struct {
- uint32_t mode_decision_bti;
- } dw172;
-
- struct {
- uint32_t output_16x16_inter_modes_bti;
- } dw173;
-
- struct {
- uint32_t cu_record_bti;
- } dw174;
-
- struct {
- uint32_t pak_data_bti;
- } dw175;
-} vp9_mbenc_curbe_data;
-
-
-
-#define VP9_MBENC_IDX_KEY_32x32 0
-#define VP9_MBENC_IDX_KEY_16x16 1
-#define VP9_MBENC_IDX_INTER 2
-#define VP9_MBENC_IDX_TX 3
-#define NUM_VP9_MBENC 4
-
-struct vp9_mbenc_context
-{
- struct i965_gpe_context gpe_contexts[NUM_VP9_MBENC];
- struct vp9_binding_table_mbenc_tx vp9_mbenc_tx_bti;
- struct vp9_binding_table_mbenc_i32 vp9_mbenc_i32_bti;
- struct vp9_binding_table_mbenc_i16 vp9_mbenc_i16_bti;
- struct vp9_binding_table_mbenc_p vp9_mbenc_p_bti;
- dri_bo *mbenc_bo_dys;
- int mbenc_bo_size;
-};
-
-enum vp9_binding_table_offset_dys
-{
- VP9_BTI_DYS_INPUT_NV12 = 0,
- VP9_BTI_DYS_OUTPUT_Y = 1,
- VP9_BTI_DYS_OUTPUT_UV = 2,
- VP9_BTI_DYS_NUM_SURFACES = 3
-};
-
-struct vp9_binding_table_dys
-{
- uint32_t dys_input_frame_nv12;
- uint32_t dys_output_frame_y;
- uint32_t dys_output_frame_uv;
-};
-
-typedef struct _vp9_dys_curbe_data
-{
- struct {
- uint32_t input_frame_width : 16;
- uint32_t input_frame_height: 16;
- } dw0;
-
- struct {
- uint32_t output_frame_width : 16;
- uint32_t output_frame_height: 16;
- } dw1;
-
- struct {
- float delta_u;
- } dw2;
-
- struct {
- float delta_v;
- } dw3;
-
- /* DW4-15 */
- uint32_t reserved[12];
-
- struct {
- uint32_t input_frame_nv12_bti;
- } dw16;
-
- struct {
- uint32_t output_frame_y_bti;
- } dw17;
-
- struct {
- uint32_t avs_sample_idx;
- } dw18;
-} vp9_dys_curbe_data;
-
-// DYS kernel parameters
-typedef struct _gen9_vp9_dys_kernel_param
-{
- uint32_t input_width;
- uint32_t input_height;
- uint32_t output_width;
- uint32_t output_height;
- struct object_surface *input_surface;
- struct object_surface *output_surface;
-} gen9_vp9_dys_kernel_param;
-
-struct vp9_dys_context {
- struct i965_gpe_context gpe_context;
- struct vp9_binding_table_dys vp9_dys_bti;
-};
-
-enum vp9_binding_table_offset_brc
-{
- VP9_BTI_BRC_SRCY4X_G9 = 0,
- VP9_BTI_BRC_VME_COARSE_INTRA_G9 = 1,
- VP9_BTI_BRC_HISTORY_G9 = 2,
- VP9_BTI_BRC_CONSTANT_DATA_G9 = 3,
- VP9_BTI_BRC_DISTORTION_G9 = 4,
- VP9_BTI_BRC_MMDK_PAK_OUTPUT_G9 = 5,
- VP9_BTI_BRC_MBENC_CURBE_INPUT_G9 = 6,
- VP9_BTI_BRC_MBENC_CURBE_OUTPUT_G9 = 7,
- VP9_BTI_BRC_PIC_STATE_INPUT_G9 = 8,
- VP9_BTI_BRC_PIC_STATE_OUTPUT_G9 = 9,
- VP9_BTI_BRC_SEGMENT_STATE_INPUT_G9 = 10,
- VP9_BTI_BRC_SEGMENT_STATE_OUTPUT_G9 = 11,
- VP9_BTI_BRC_BITSTREAM_SIZE_G9 = 12,
- VP9_BTI_BRC_HFW_DATA_G9 = 13,
- VP9_BTI_BRC_NUM_SURFACES_G9 = 14,
-};
-
-struct vp9_binding_table_brc_intra_dist
-{
- uint32_t intra_dist_src_y4xsurface;
- uint32_t brc_intra_dist_vme_coarse_intra;
- uint32_t brc_intra_dist_distortion_buffer;
-};
-
-struct vp9_binding_table_brc_init
-{
- uint32_t brc_history_buffer;
- uint32_t brc_distortion_buffer;
-};
-
-
-typedef struct _vp9_brc_curbe_data
-{
- struct {
- uint32_t frame_width : 16;
- uint32_t frame_height : 16;
- } dw0;
-
- struct {
- uint32_t frame_type : 8;
- uint32_t segmentation_enable : 8;
- uint32_t ref_frame_flags : 8;
- uint32_t num_tlevels : 8;
- } dw1;
-
- struct {
- uint32_t reserved : 16;
- uint32_t intra_mode_disable : 8;
- uint32_t loop_filter_type : 8;
- } dw2;
-
- struct {
- uint32_t max_level_ratiot0 : 8;
- uint32_t max_level_ratiot1 : 8;
- uint32_t max_level_ratiot2 : 8;
- uint32_t max_level_ratiot3 : 8;
- } dw3;
-
- struct {
- uint32_t profile_level_max_frame;
- } dw4;
-
- struct {
- uint32_t init_buf_fullness;
- } dw5;
-
- struct {
- uint32_t buf_size;
- } dw6;
-
- struct {
- uint32_t target_bit_rate;
- } dw7;
-
- struct {
- uint32_t max_bit_rate;
- } dw8;
-
- struct {
- uint32_t min_bit_rate;
- } dw9;
-
- struct {
- uint32_t frame_ratem;
- } dw10;
-
- struct {
- uint32_t frame_rated;
- } dw11;
-
- struct {
- uint32_t brc_flag : 16;
- uint32_t gopp : 16;
- } dw12;
-
- struct {
- uint32_t init_frame_width : 16;
- uint32_t init_frame_height : 16;
- } dw13;
-
- struct {
- uint32_t avbr_accuracy : 16;
- uint32_t avbr_convergence : 16;
- } dw14;
-
- struct {
- uint32_t min_qp : 16;
- uint32_t max_qp : 16;
- } dw15;
-
- struct {
- uint32_t cq_level : 16;
- uint32_t reserved : 16;
- } dw16;
-
- struct {
- uint32_t enable_dynamic_scaling : 16;
- uint32_t brc_overshoot_cbr_pct : 16;
- } dw17;
-
- struct {
- uint32_t pframe_deviation_threshold0 : 8;
- uint32_t pframe_deviation_threshold1 : 8;
- uint32_t pframe_deviation_threshold2 : 8;
- uint32_t pframe_deviation_threshold3 : 8;
- } dw18;
-
- struct {
- uint32_t pframe_deviation_threshold4 : 8;
- uint32_t pframe_deviation_threshold5 : 8;
- uint32_t pframe_deviation_threshold6 : 8;
- uint32_t pframe_deviation_threshold7 : 8;
- } dw19;
-
- struct {
- uint32_t vbr_deviation_threshold0 : 8;
- uint32_t vbr_deviation_threshold1 : 8;
- uint32_t vbr_deviation_threshold2 : 8;
- uint32_t vbr_deviation_threshold3 : 8;
- } dw20;
-
- struct {
- uint32_t vbr_deviation_threshold4 : 8;
- uint32_t vbr_deviation_threshold5 : 8;
- uint32_t vbr_deviation_threshold6 : 8;
- uint32_t vbr_deviation_threshold7 : 8;
- } dw21;
-
- struct {
- uint32_t kframe_deviation_threshold0 : 8;
- uint32_t kframe_deviation_threshold1 : 8;
- uint32_t kframe_deviation_threshold2 : 8;
- uint32_t kframe_deviation_threshold3 : 8;
- } dw22;
-
- struct {
- uint32_t kframe_deviation_threshold4 : 8;
- uint32_t kframe_deviation_threshold5 : 8;
- uint32_t kframe_deviation_threshold6 : 8;
- uint32_t kframe_deviation_threshold7 : 8;
- } dw23;
-
- struct {
- uint32_t target_size;
- } dw24;
-
- struct {
- uint32_t frame_number;
- } dw25;
-
- struct {
- uint32_t reserved;
- } dw26;
-
- struct {
- uint32_t hrd_buffer_fullness_upper_limit;
- } dw27;
-
- struct {
- uint32_t hrd_buffer_fullness_lower_limit;
- } dw28;
-
- struct {
- uint32_t reserved;
- } dw29;
-
- struct {
- uint32_t reserved;
- } dw30;
-
- struct {
- uint32_t reserved;
- } dw31;
-
- struct {
- uint32_t seg_delta_qp0 : 8;
- uint32_t seg_delta_qp1 : 8;
- uint32_t seg_delta_qp2 : 8;
- uint32_t seg_delta_qp3 : 8;
- } dw32;
-
- struct {
- uint32_t seg_delta_qp4 : 8;
- uint32_t seg_delta_qp5 : 8;
- uint32_t seg_delta_qp6 : 8;
- uint32_t seg_delta_qp7 : 8;
- } dw33;
-
- struct {
- uint32_t temporal_id : 8;
- uint32_t multi_ref_qp_check : 8;
- uint32_t reserved : 16;
- } dw34;
-
- struct {
- uint32_t max_num_pak_passes : 8;
- uint32_t sync_async : 8;
- uint32_t overflow : 8;
- uint32_t mbrc : 8;
- } dw35;
-
- struct {
- uint32_t reserved : 16;
- uint32_t segmentation : 8;
- uint32_t reserved1 : 8;
- } dw36;
-
- struct {
- uint32_t cur_qpindex : 8;
- uint32_t lastref_qpindex : 8;
- uint32_t goldref_qpindex : 8;
- uint32_t altref_qpindex : 8;
- } dw37;
-
- struct {
- uint32_t qdelta_ydc : 8;
- uint32_t qdelta_uvac : 8;
- uint32_t qdelta_uvdc : 8;
- uint32_t reserved : 8;
- } dw38;
-
- struct {
- uint32_t reserved;
- } dw39;
-
- struct {
- uint32_t reserved;
- } dw40;
-
- struct {
- uint32_t reserved;
- } dw41;
-
- struct {
- uint32_t reserved;
- } dw42;
-
- struct {
- uint32_t reserved;
- } dw43;
-
- struct {
- uint32_t reserved;
- } dw44;
-
- struct {
- uint32_t reserved;
- } dw45;
-
- struct {
- uint32_t reserved;
- } dw46;
-
- struct {
- uint32_t reserved;
- } dw47;
-
- struct {
- uint32_t brc_y4x_input_bti;
- } dw48;
-
- struct {
- uint32_t brc_vme_coarse_intra_input_bti;
- } dw49;
-
- struct {
- uint32_t brc_history_buffer_bti;
- } dw50;
-
- struct {
- uint32_t brc_const_data_input_bti;
- } dw51;
-
- struct {
- uint32_t brc_distortion_bti;
- } dw52;
-
- struct {
- uint32_t brc_mmdk_pak_output_bti;
- } dw53;
-
- struct {
- uint32_t brc_enccurbe_input_bti;
- } dw54;
-
- struct {
- uint32_t brc_enccurbe_output_bti;
- } dw55;
-
- struct {
- uint32_t brc_pic_state_input_bti;
- } dw56;
-
- struct {
- uint32_t brc_pic_state_output_bti;
- } dw57;
-
- struct {
- uint32_t brc_seg_state_input_bti;
- } dw58;
-
- struct {
- uint32_t brc_seg_state_output_bti;
- } dw59;
-
- struct {
- uint32_t brc_bitstream_size_data_bti;
- } dw60;
-
- struct {
- uint32_t brc_hfw_data_output_bti;
- } dw61;
-
- struct {
- uint32_t reserved;
- } dw62;
-
- struct {
- uint32_t reserved;
- } dw63;
-} vp9_brc_curbe_data;
-
-
-#define VP9_BRC_INTRA_DIST 0
-#define VP9_BRC_INIT 1
-#define VP9_BRC_RESET 2
-#define VP9_BRC_UPDATE 3
-#define NUM_VP9_BRC 4
-
-struct vp9_brc_context {
- struct i965_gpe_context gpe_contexts[NUM_VP9_BRC];
-};
-
-struct gen9_vp9_scaling_curbe_param
-{
- uint32_t input_picture_width;
- uint32_t input_picture_height;
- bool use_16x_scaling;
- bool use_32x_scaling;
- bool mb_variance_output_enabled;
- bool mb_pixel_average_output_enabled;
- bool blk8x8_stat_enabled;
-};
-
-struct gen9_vp9_me_curbe_param
-{
- VAEncSequenceParameterBufferVP9 *pseq_param;
- VAEncPictureParameterBufferVP9 *ppic_param;
- uint32_t frame_width;
- uint32_t frame_height;
- uint32_t ref_frame_flag;
- bool use_16x_me;
- bool b16xme_enabled;
-};
-
-struct gen9_vp9_mbenc_curbe_param
-{
- VAEncSequenceParameterBufferVP9 *pseq_param;
- VAEncPictureParameterBufferVP9 *ppic_param;
- VAEncMiscParameterTypeVP9PerSegmantParam *psegment_param;
-
- uint16_t frame_width_in_mb;
- uint16_t frame_height_in_mb;
- uint16_t frame_type;
- bool hme_enabled;
- uint8_t ref_frame_flag;
- VP9_MEDIA_STATE_TYPE media_state_type;
- struct object_surface *curr_obj;
- struct object_surface *last_ref_obj;
- struct object_surface *golden_ref_obj;
- struct object_surface *alt_ref_obj;
- int picture_coding_type;
- bool mbenc_curbe_set_in_brc_update;
- bool multi_ref_qp_check;
-};
-
-struct gen9_vp9_dys_curbe_param
-{
- uint32_t input_width;
- uint32_t input_height;
- uint32_t output_width;
- uint32_t output_height;
-};
-
-struct gen9_vp9_brc_curbe_param
-{
- VAEncSequenceParameterBufferVP9 *pseq_param;
- VAEncPictureParameterBufferVP9 *ppic_param;
- VAEncMiscParameterTypeVP9PerSegmantParam *psegment_param;
-
- VASurfaceID curr_frame;
- uint32_t picture_coding_type;
- /* the unit is in bits */
- double *pbrc_init_current_target_buf_full_in_bits;
- double *pbrc_init_reset_input_bits_per_frame;
- uint32_t *pbrc_init_reset_buf_size_in_bits;
- uint32_t frame_width;
- uint32_t frame_height;
- uint32_t frame_width_in_mb;
- uint32_t frame_height_in_mb;
- uint32_t ref_frame_flag;
- bool hme_enabled;
- bool initbrc;
- bool mbbrc_enabled;
- bool b_used_ref;
- int32_t brc_num_pak_passes;
- bool multi_ref_qp_check;
- int16_t frame_number;
- VP9_MEDIA_STATE_TYPE media_state_type;
-};
-
-struct gen9_vp9_scaling_surface_param
-{
- VASurfaceID curr_pic;
- void *p_scaling_bti;
- struct object_surface *input_surface;
- struct object_surface *output_surface;
- uint32_t input_frame_width;
- uint32_t input_frame_height;
- uint32_t output_frame_width;
- uint32_t output_frame_height;
- uint32_t vert_line_stride;
- uint32_t vert_line_stride_offset;
- bool scaling_out_use_16unorm_surf_fmt;
- bool scaling_out_use_32unorm_surf_fmt;
- bool mbv_proc_stat_enabled;
- struct i965_gpe_resource *pres_mbv_proc_stat_buffer;
-};
-
-struct gen9_vp9_brc_init_constant_buffer_param
-{
- struct i965_gpe_resource *pres_brc_const_data_buffer;
- uint16_t picture_coding_type;
-};
-
-struct gen9_vp9_dys_surface_param
-{
- struct object_surface *input_frame;
- struct object_surface *output_frame;
- uint32_t vert_line_stride;
- uint32_t vert_line_stride_offset;
-};
-
-struct gen9_vp9_me_surface_param
-{
- VASurfaceID curr_pic;
- struct object_surface *last_ref_pic;
- struct object_surface *golden_ref_pic;
- struct object_surface *alt_ref_pic;
-
- struct i965_gpe_resource *pres_4x_memv_data_buffer;
- struct i965_gpe_resource *pres_16x_memv_data_buffer;
- struct i965_gpe_resource *pres_me_distortion_buffer;
- struct i965_gpe_resource *pres_me_brc_distortion_buffer;
- uint32_t downscaled_width_in_mb;
- uint32_t downscaled_height_in_mb;
- uint32_t frame_width;
- uint32_t frame_height;
- bool use_16x_me;
- bool b16xme_enabled;
- bool dys_enabled;
-};
-
-struct gen9_vp9_mbenc_surface_param
-{
- int media_state_type;
- struct object_surface *last_ref_obj;
- struct object_surface *golden_ref_obj;
- struct object_surface *alt_ref_obj;
- struct object_surface *curr_frame_obj;
- unsigned short picture_coding_type;
- unsigned int curr_surface_offset;
- struct i965_gpe_resource *ps4x_memv_data_buffer;
- struct i965_gpe_resource *ps4x_memv_distortion_buffer;
- struct i965_gpe_resource *ps_me_brc_distortion_buffer;
- uint32_t frame_width;
- uint32_t frame_height;
- uint32_t frame_width_in_mb;
- uint32_t frame_height_in_mb;
- bool hme_enabled;
- bool segmentation_enabled;
- uint32_t mb_data_offset;
- struct i965_gpe_resource *pres_mb_code_surface;
- struct i965_gpe_resource *pres_segmentation_map;
- struct i965_gpe_resource *pres_mode_decision_prev;
- struct i965_gpe_resource *pres_mode_decision;
- struct i965_gpe_resource *pres_mbenc_curbe_buffer;
- struct i965_gpe_resource *pres_output_16x16_inter_modes;
- struct i965_gpe_resource *pres_mode_decision_i32;
-
- struct i965_gpe_context *gpe_context_tx;
-};
-
-typedef struct _vp9_frame_status_
-{
- uint16_t frame_width;
- uint16_t frame_height;
- uint8_t frame_type;
- uint8_t show_frame;
- uint8_t refresh_frame_context;
- uint8_t frame_context_idx;
- uint8_t intra_only;
-} vp9_frame_status;
-
-struct gen9_hcpe_pipe_mode_select_param
-{
- uint32_t codec_mode;
- uint32_t stream_out;
-};
-
-typedef struct _hcp_surface_state {
- struct {
- uint32_t surface_pitch : 17;
- uint32_t reserved : 11;
- uint32_t surface_id : 4;
- } dw1;
-
- struct {
- uint32_t y_cb_offset : 15;
- uint32_t reserved : 12;
- uint32_t surface_format : 5;
- } dw2;
-
- struct {
- uint32_t default_alpha : 16;
- uint32_t y_cr_offset : 16;
- } dw3;
-
- struct {
- uint32_t auxilary_index : 11;
- uint32_t reserved0 : 1;
- uint32_t memory_compression : 1;
- uint32_t reserved1 : 18;
- } dw4;
-} hcp_surface_state;
-
-struct gen9_encoder_context_vp9
-{
- struct vp9_scaling_context scaling_context;
- struct vp9_me_context me_context;
- struct vp9_mbenc_context mbenc_context;
- struct vp9_brc_context brc_context;
- struct vp9_dys_context dys_context;
- void *enc_priv_state;
-
- struct i965_gpe_resource res_brc_history_buffer;
- struct i965_gpe_resource res_brc_const_data_buffer;
- struct i965_gpe_resource res_brc_mmdk_pak_buffer;
- struct i965_gpe_resource res_brc_mbenc_curbe_write_buffer;
- struct i965_gpe_resource res_pic_state_brc_read_buffer;
- struct i965_gpe_resource res_pic_state_brc_write_hfw_read_buffer;
- struct i965_gpe_resource res_pic_state_hfw_write_buffer;
- struct i965_gpe_resource res_seg_state_brc_read_buffer;
- struct i965_gpe_resource res_seg_state_brc_write_buffer;
- struct i965_gpe_resource res_brc_bitstream_size_buffer;
- struct i965_gpe_resource res_brc_hfw_data_buffer;
-
- struct i965_gpe_resource s4x_memv_distortion_buffer;
- struct i965_gpe_resource mb_segment_map_surface;
- struct i965_gpe_resource s4x_memv_data_buffer;
- struct i965_gpe_resource s16x_memv_data_buffer;
- struct i965_gpe_resource res_mode_decision[2];
- struct i965_gpe_resource res_output_16x16_inter_modes;
- struct i965_gpe_resource res_mb_code_surface;
-
- /* PAK resource */
- struct i965_gpe_resource res_hvd_line_buffer;
- struct i965_gpe_resource res_hvd_tile_line_buffer;
- struct i965_gpe_resource res_deblocking_filter_line_buffer;
- struct i965_gpe_resource res_deblocking_filter_tile_line_buffer;
- struct i965_gpe_resource res_deblocking_filter_tile_col_buffer;
-
- struct i965_gpe_resource res_metadata_line_buffer;
- struct i965_gpe_resource res_metadata_tile_line_buffer;
- struct i965_gpe_resource res_metadata_tile_col_buffer;
-
- struct i965_gpe_resource res_segmentid_buffer;
- struct i965_gpe_resource res_prob_buffer;
- struct i965_gpe_resource res_prob_delta_buffer;
- struct i965_gpe_resource res_prob_counter_buffer;
-
- struct i965_gpe_resource res_compressed_input_buffer;
- struct i965_gpe_resource res_tile_record_streamout_buffer;
- struct i965_gpe_resource res_cu_stat_streamout_buffer;
- struct i965_gpe_resource res_mv_temporal_buffer[2];
- struct i965_gpe_resource res_pak_uncompressed_input_buffer;
-
- char *frame_header_data;
-
- unsigned int use_hw_scoreboard;
- unsigned int use_hw_non_stalling_scoreboard;
- unsigned int mb_stats_supported;
- unsigned int hme_supported;
- unsigned int b32xme_supported;
-
- unsigned int downscaled_width_in_mb4x;
- unsigned int downscaled_height_in_mb4x;
-
- void (*pfn_set_sample_state_dys)(
- VADriverContextP ctx,
- struct encode_state *encode_state,
- struct i965_gpe_context *gpe_context,
- struct intel_encoder_context *encoder_context);
-
- void (*pfn_set_curbe_mbenc)(
- VADriverContextP ctx,
- struct encode_state *encode_state,
- struct i965_gpe_context *gpe_context,
- struct intel_encoder_context *encoder_context,
- struct gen9_vp9_mbenc_curbe_param *param);
-
- void (*pfn_set_curbe_me)(
- VADriverContextP ctx,
- struct encode_state *encode_state,
- struct i965_gpe_context *gpe_context,
- struct intel_encoder_context *encoder_context,
- struct gen9_vp9_me_curbe_param *param);
-
- void (*pfn_set_curbe_scaling)(
- VADriverContextP ctx,
- struct encode_state *encode_state,
- struct i965_gpe_context *gpe_context,
- struct intel_encoder_context *encoder_context,
- struct gen9_vp9_scaling_curbe_param *param);
-
- void (*pfn_set_curbe_dys)(
- VADriverContextP ctx,
- struct encode_state *encode_state,
- struct i965_gpe_context *gpe_context,
- struct intel_encoder_context *encoder_context,
- struct gen9_vp9_dys_curbe_param *param);
-
- void (*pfn_set_curbe_brc)(
- VADriverContextP ctx,
- struct encode_state *encode_state,
- struct i965_gpe_context *gpe_context,
- struct intel_encoder_context *encoder_context,
- struct gen9_vp9_brc_curbe_param *param);
-
- void (*pfn_send_me_surface)(
- VADriverContextP ctx,
- struct encode_state *encode_state,
- struct i965_gpe_context *gpe_context,
- struct intel_encoder_context *encoder_context,
- struct gen9_vp9_me_surface_param *param);
-
- void (*pfn_send_mbenc_surface)(
- VADriverContextP ctx,
- struct encode_state *encode_state,
- struct i965_gpe_context *gpe_context,
- struct intel_encoder_context *encoder_context,
- struct gen9_vp9_mbenc_surface_param *mbenc_param);
-
- void (*pfn_send_scaling_surface)(
- VADriverContextP ctx,
- struct encode_state *encode_state,
- struct i965_gpe_context *gpe_context,
- struct intel_encoder_context *encoder_context,
- struct gen9_vp9_scaling_surface_param *param);
-
- void (*pfn_send_dys_surface)(
- VADriverContextP ctx,
- struct encode_state *encode_state,
- struct i965_gpe_context *gpe_context,
- struct intel_encoder_context *encoder_context,
- struct gen9_vp9_dys_surface_param *param);
-
- struct {
- dri_bo *bo;
- } reconstructed_object;
-
- struct {
- dri_bo *bo;
- } uncompressed_picture_source;
-
- struct {
- dri_bo *bo;
- int offset;
- int end_offset;
- int status_offset;
- } indirect_pak_bse_object;
-
- struct {
- dri_bo *bo;
- } reference_surfaces[8];
-};
-
-enum INTEL_ENC_VP9_TU_MODE
-{
- INTEL_ENC_VP9_TU_QUALITY = 0,
- INTEL_ENC_VP9_TU_NORMAL,
- INTEL_ENC_VP9_TU_PERFORMANCE
-};
-
-#define VP9_LAST_REF 0x01
-#define VP9_GOLDEN_REF 0x02
-#define VP9_ALT_REF 0x04
-
-struct vp9_encode_status
-{
- uint32_t bs_byte_count;
- uint32_t image_status_mask;
- uint32_t image_status_ctrl;
- uint32_t media_index;
-};
-
-struct vp9_encode_status_buffer_internal
-{
- uint32_t bs_byte_count_offset;
- uint32_t reserved[15];
-
- uint32_t image_status_mask_offset;
- uint32_t image_status_ctrl_offset;
-
- uint32_t vp9_image_mask_reg_offset;
- uint32_t vp9_image_ctrl_reg_offset;
- uint32_t vp9_bs_frame_reg_offset;
- dri_bo *bo;
-
- uint32_t media_index_offset;
-};
-
-
-struct gen9_vp9_state {
- unsigned int brc_inited;
- unsigned int brc_reset;
- unsigned int brc_enabled;
- unsigned int use_hw_scoreboard;
- unsigned int use_hw_non_stalling_scoreborad;
- unsigned int hme_supported;
- unsigned int b16xme_supported;
- unsigned int hme_enabled;
- unsigned int b16xme_enabled;
-
- unsigned int frame_width;
- unsigned int frame_height;
- unsigned int frame_width_in_mb;
- unsigned int frame_height_in_mb;
- unsigned int frame_width_4x;
- unsigned int frame_height_4x;
- unsigned int frame_width_16x;
- unsigned int frame_height_16x;
- unsigned int downscaled_width_4x_in_mb;
- unsigned int downscaled_height_4x_in_mb;
- unsigned int downscaled_width_16x_in_mb;
- unsigned int downscaled_height_16x_in_mb;
-
- unsigned int res_width;
- unsigned int res_height;
- int brc_allocated;
- VASurfaceID curr_frame;
- VASurfaceID last_ref_pic;
- VASurfaceID alt_ref_pic;
- VASurfaceID golden_ref_pic;
-
- struct object_surface *input_surface_obj;
- struct object_surface *last_ref_obj;
- struct object_surface *golden_ref_obj;
- struct object_surface *alt_ref_obj;
-
- VAEncSequenceParameterBufferVP9 *seq_param;
- VAEncSequenceParameterBufferVP9 bogus_seq_param;
- VAEncPictureParameterBufferVP9 *pic_param;
- VAEncMiscParameterTypeVP9PerSegmantParam *segment_param;
- double brc_init_current_target_buf_full_in_bits;
- double brc_init_reset_input_bits_per_frame;
- uint32_t brc_init_reset_buf_size_in_bits;
- unsigned int gop_size;
- unsigned int target_bit_rate;
- unsigned int max_bit_rate;
- unsigned int min_bit_rate;
- unsigned long init_vbv_buffer_fullness_in_bit;
- unsigned long vbv_buffer_size_in_bit;
- int frame_number;
- struct intel_fraction framerate;
- uint8_t ref_frame_flag;
- uint8_t dys_ref_frame_flag;
- uint8_t picture_coding_type;
- unsigned int adaptive_transform_decision_enabled;
- int curr_mode_decision_index;
- int target_usage;
- unsigned int mb_data_offset;
- int curr_pak_pass;
- bool first_frame;
- bool dys_enabled;
- bool dys_in_use;
- bool mbenc_curbe_set_in_brc_update;
- bool multi_ref_qp_check;
- bool brc_distortion_buffer_supported;
- bool brc_constant_buffer_supported;
- bool mbenc_keyframe_dist_enabled;
- unsigned int curr_mv_temporal_index;
- int tx_mode;
- int num_pak_passes;
- char *alias_insert_data;
- int header_length;
- vp9_header_bitoffset frame_header;
-
- struct vp9_encode_status_buffer_internal status_buffer;
-
- /* the frame context related with VP9 encoding */
- FRAME_CONTEXT vp9_frame_ctx[FRAME_CONTEXTS];
- FRAME_CONTEXT vp9_current_fc;
- int frame_ctx_idx;
-
- vp9_frame_status vp9_last_frame;
-};
-
-struct vp9_compressed_element {
- uint8_t a_valid : 1;
- uint8_t a_probdiff_select: 1;
- uint8_t a_prob_select : 1;
- uint8_t a_bin : 1;
- uint8_t b_valid : 1;
- uint8_t b_probdiff_select: 1;
- uint8_t b_prob_select : 1;
- uint8_t b_bin : 1;
-};
-
-#define VP9_BRC_HISTORY_BUFFER_SIZE 768
-#define VP9_BRC_CONSTANTSURFACE_SIZE 17792
-#define VP9_BRC_BITSTREAM_SIZE_BUFFER_SIZE 16
-#define VP9_BRC_MMDK_PAK_BUFFER_SIZE 64
-#define VP9_SEGMENT_STATE_BUFFER_SIZE 256
-#define VP9_HFW_BRC_DATA_BUFFER_SIZE 32
-
-#endif /* GEN9_VP9_ENCODER_H */
diff --git a/src/gen9_vp9_encoder_kernels.c b/src/gen9_vp9_encoder_kernels.c
deleted file mode 100644
index 5d79acf..0000000
--- a/src/gen9_vp9_encoder_kernels.c
+++ /dev/null
@@ -1,4955 +0,0 @@
-/*
- * * Copyright (c) 2016, Intel Corporation
- *
- * All rights reserved.
- * Redistribution. Redistribution and use in binary form, without modification, are
- * permitted provided that the following conditions are met:
- * Redistributions must reproduce the above copyright notice and the following
- * disclaimer in the documentation and/or other materials provided with the
- * distribution.
- * Neither the name of Intel Corporation nor the names of its suppliers may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- * No reverse engineering, decompilation, or disassembly of this software is permitted.
- * Limited patent license. Intel Corporation grants a world-wide, royalty-free,
- * nonexclusive license under patents it now or hereafter owns or controls to make, have made,
- * use, import, offer to sell and sell (.Utilize.) this software, but solely to the extent that any
- * such patent is necessary to Utilize the software alone. The patent license shall not apply
- * to any combinations which include this software. No hardware per se is licensed here under.
-
- * DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
- * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "gen9_vp9_encoder_kernels.h"
-
-
-const unsigned int media_vp9_kernels[AllVP9ENC_SZ] = {
-0x0000000b,0x00000048,0x00001c48,0x00002b08,0x00009c88,0x0000b5c8,0x00011c88,0x00017d08,
-0x000183c8,0x00018ac8,0x0001a748,0x0001bac8,0x00000000,0x00000000,0x00000000,0x00000000,
-0x00000005,0x2f82124c,0x16000004,0x07ff07ff,0x00000005,0x2f80124c,0x16000006,0x07ff07ff,
-0x00000001,0x2f861648,0x00000000,0x00000000,0x00000009,0x2f841248,0x16000f82,0x00030003,
-0x00000009,0x2f881248,0x16000f80,0x00030003,0x00000001,0x202c1248,0x00000f88,0x00000000,
-0x00000040,0x202e1248,0x16000f88,0x00080008,0x0000000c,0x20301248,0x16000022,0x00020002,
-0x00000040,0x203c1248,0x1200002e,0x00004030,0x03000010,0x20001240,0x1200002e,0x00000030,
-0x00010001,0x2f861248,0x0000003c,0x00000000,0x00000040,0x20441248,0x1e000030,0xffffffff,
-0x04000010,0x20001240,0x12000f88,0x00000030,0x00010001,0x202c1248,0x00000044,0x00000000,
-0x00010001,0x2f861648,0x00000000,0x00070007,0x00000009,0x20601248,0x1600002c,0x00020002,
-0x20004d01,0x00000407,0x00000009,0x20801228,0x16000f84,0x00020002,0x00000001,0x20841208,
-0x00000060,0x00000000,0x00000001,0x2088060c,0x00000000,0x0007001f,0x00000040,0x22000204,
-0x06000024,0x02890000,0x0c600031,0x2b803a0c,0x00000080,0x00000200,0x00000040,0x20841228,
-0x16000060,0x00080008,0x0c600031,0x2c803a0c,0x00000080,0x00000200,0x00000040,0x20841228,
-0x16000060,0x00100010,0x0c600031,0x2d803a0c,0x00000080,0x00000200,0x00000040,0x20841228,
-0x16000060,0x00180018,0x0c600031,0x2e803a0c,0x00000080,0x00000200,0x00800040,0x20a02248,
-0x228d0b80,0x008d0ba0,0x00800040,0x20e02248,0x228d0bc0,0x008d0be0,0x00800040,0x21202248,
-0x228d0c00,0x008d0c20,0x00800040,0x21602248,0x228d0c40,0x008d0c60,0x00800040,0x21a02248,
-0x228d0c80,0x008d0ca0,0x00800040,0x21e02248,0x228d0cc0,0x008d0ce0,0x00800040,0x22202248,
-0x228d0d00,0x008d0d20,0x00800040,0x22602248,0x228d0d40,0x008d0d60,0x00600040,0x22a01248,
-0x124000a0,0x004000a2,0x00600040,0x22b01248,0x124000e0,0x004000e2,0x00600040,0x22c01248,
-0x12400120,0x00400122,0x00600040,0x22d01248,0x12400160,0x00400162,0x00600040,0x22e01248,
-0x124001a0,0x004001a2,0x00600040,0x22f01248,0x124001e0,0x004001e2,0x00600040,0x23001248,
-0x12400220,0x00400222,0x00600040,0x23101248,0x12400260,0x00400262,0x00a00040,0x22a01248,
-0x168d02a0,0x00020002,0x00a00040,0x22e01248,0x168d02e0,0x00020002,0x00a0000c,0x22a01248,
-0x168d02a0,0x00020002,0x00a0000c,0x22e01248,0x168d02e0,0x00020002,0x00600040,0x22a01248,
-0x128d02a0,0x008d02b0,0x00600040,0x22c01248,0x128d02c0,0x008d02d0,0x00600040,0x22e01248,
-0x128d02e0,0x008d02f0,0x00600040,0x23001248,0x128d0300,0x008d0310,0x00600040,0x20601248,
-0x12aa02a0,0x00aa02a2,0x00600040,0x20701248,0x12aa02e0,0x00aa02e2,0x00800040,0x20601248,
-0x168d0060,0x00020002,0x0080000c,0x40801288,0x168d0060,0x00020002,0x00400001,0x23402288,
-0x00400080,0x00000000,0x00400001,0x23482288,0x00400088,0x00000000,0x00400001,0x23502288,
-0x00400090,0x00000000,0x00400001,0x23582288,0x00400098,0x00000000,0x00800040,0x20a02248,
-0x228d0b90,0x008d0bb0,0x00800040,0x20e02248,0x228d0bd0,0x008d0bf0,0x00800040,0x21202248,
-0x228d0c10,0x008d0c30,0x00800040,0x21602248,0x228d0c50,0x008d0c70,0x00800040,0x21a02248,
-0x228d0c90,0x008d0cb0,0x00800040,0x21e02248,0x228d0cd0,0x008d0cf0,0x00800040,0x22202248,
-0x228d0d10,0x008d0d30,0x00800040,0x22602248,0x228d0d50,0x008d0d70,0x00600040,0x22a01248,
-0x124000a0,0x004000a2,0x00600040,0x22b01248,0x124000e0,0x004000e2,0x00600040,0x22c01248,
-0x12400120,0x00400122,0x00600040,0x22d01248,0x12400160,0x00400162,0x00600040,0x22e01248,
-0x124001a0,0x004001a2,0x00600040,0x22f01248,0x124001e0,0x004001e2,0x00600040,0x23001248,
-0x12400220,0x00400222,0x00600040,0x23101248,0x12400260,0x00400262,0x00a00040,0x22a01248,
-0x168d02a0,0x00020002,0x00a00040,0x22e01248,0x168d02e0,0x00020002,0x00a0000c,0x22a01248,
-0x168d02a0,0x00020002,0x00a0000c,0x22e01248,0x168d02e0,0x00020002,0x00600040,0x22a01248,
-0x128d02a0,0x008d02b0,0x00600040,0x22c01248,0x128d02c0,0x008d02d0,0x00600040,0x22e01248,
-0x128d02e0,0x008d02f0,0x00600040,0x23001248,0x128d0300,0x008d0310,0x00600040,0x20601248,
-0x12aa02a0,0x00aa02a2,0x00600040,0x20701248,0x12aa02e0,0x00aa02e2,0x00800040,0x20601248,
-0x168d0060,0x00020002,0x0080000c,0x40801288,0x168d0060,0x00020002,0x00400001,0x23442288,
-0x00400080,0x00000000,0x00400001,0x234c2288,0x00400088,0x00000000,0x00400001,0x23542288,
-0x00400090,0x00000000,0x00400001,0x235c2288,0x00400098,0x00000000,0x00800040,0x20a02248,
-0x228d0d80,0x008d0da0,0x00800040,0x20e02248,0x228d0dc0,0x008d0de0,0x00800040,0x21202248,
-0x228d0e00,0x008d0e20,0x00800040,0x21602248,0x228d0e40,0x008d0e60,0x00800040,0x21a02248,
-0x228d0e80,0x008d0ea0,0x00800040,0x21e02248,0x228d0ec0,0x008d0ee0,0x00800040,0x22202248,
-0x228d0f00,0x008d0f20,0x00800040,0x22602248,0x228d0f40,0x008d0f60,0x00600040,0x22a01248,
-0x124000a0,0x004000a2,0x00600040,0x22b01248,0x124000e0,0x004000e2,0x00600040,0x22c01248,
-0x12400120,0x00400122,0x00600040,0x22d01248,0x12400160,0x00400162,0x00600040,0x22e01248,
-0x124001a0,0x004001a2,0x00600040,0x22f01248,0x124001e0,0x004001e2,0x00600040,0x23001248,
-0x12400220,0x00400222,0x00600040,0x23101248,0x12400260,0x00400262,0x00a00040,0x22a01248,
-0x168d02a0,0x00020002,0x00a00040,0x22e01248,0x168d02e0,0x00020002,0x00a0000c,0x22a01248,
-0x168d02a0,0x00020002,0x00a0000c,0x22e01248,0x168d02e0,0x00020002,0x00600040,0x22a01248,
-0x128d02a0,0x008d02b0,0x00600040,0x22c01248,0x128d02c0,0x008d02d0,0x00600040,0x22e01248,
-0x128d02e0,0x008d02f0,0x00600040,0x23001248,0x128d0300,0x008d0310,0x00600040,0x20601248,
-0x12aa02a0,0x00aa02a2,0x00600040,0x20701248,0x12aa02e0,0x00aa02e2,0x00800040,0x20601248,
-0x168d0060,0x00020002,0x0080000c,0x40801288,0x168d0060,0x00020002,0x00400001,0x23602288,
-0x00400080,0x00000000,0x00400001,0x23682288,0x00400088,0x00000000,0x00400001,0x23702288,
-0x00400090,0x00000000,0x00400001,0x23782288,0x00400098,0x00000000,0x00800040,0x20a02248,
-0x228d0d90,0x008d0db0,0x00800040,0x20e02248,0x228d0dd0,0x008d0df0,0x00800040,0x21202248,
-0x228d0e10,0x008d0e30,0x00800040,0x21602248,0x228d0e50,0x008d0e70,0x00800040,0x21a02248,
-0x228d0e90,0x008d0eb0,0x00800040,0x21e02248,0x228d0ed0,0x008d0ef0,0x00800040,0x22202248,
-0x228d0f10,0x008d0f30,0x00800040,0x22602248,0x228d0f50,0x008d0f70,0x00600040,0x22a01248,
-0x124000a0,0x004000a2,0x00600040,0x22b01248,0x124000e0,0x004000e2,0x00600040,0x22c01248,
-0x12400120,0x00400122,0x00600040,0x22d01248,0x12400160,0x00400162,0x00600040,0x22e01248,
-0x124001a0,0x004001a2,0x00600040,0x22f01248,0x124001e0,0x004001e2,0x00600040,0x23001248,
-0x12400220,0x00400222,0x00600040,0x23101248,0x12400260,0x00400262,0x00a00040,0x22a01248,
-0x168d02a0,0x00020002,0x00a00040,0x22e01248,0x168d02e0,0x00020002,0x00a0000c,0x22a01248,
-0x168d02a0,0x00020002,0x00a0000c,0x22e01248,0x168d02e0,0x00020002,0x00600040,0x22a01248,
-0x128d02a0,0x008d02b0,0x00600040,0x22c01248,0x128d02c0,0x008d02d0,0x00600040,0x22e01248,
-0x128d02e0,0x008d02f0,0x00600040,0x23001248,0x128d0300,0x008d0310,0x00600040,0x20601248,
-0x12aa02a0,0x00aa02a2,0x00600040,0x20701248,0x12aa02e0,0x00aa02e2,0x00800040,0x20601248,
-0x168d0060,0x00020002,0x0080000c,0x40801288,0x168d0060,0x00020002,0x00400001,0x23642288,
-0x00400080,0x00000000,0x00400001,0x236c2288,0x00400088,0x00000000,0x00400001,0x23742288,
-0x00400090,0x00000000,0x00400001,0x237c2288,0x00400098,0x00000000,0x02000010,0x20001260,
-0x1e000f86,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000068,0x20004d01,0x00000307,
-0x00000001,0x20601208,0x00000f84,0x00000000,0x00000001,0x20641208,0x00000f88,0x00000000,
-0x00000001,0x2068060c,0x00000000,0x00070007,0x00000040,0x22000204,0x06000028,0x020a8000,
-0x0c600033,0x0001a014,0x00002062,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000268,
-0x00000040,0x20241228,0x16004f86,0x00070007,0x00000041,0x202c1248,0x16000024,0x00080008,
-0x00000040,0x22001240,0x1600002c,0x03400340,0x00600001,0x20502288,0x00208000,0x00000000,
-0x05000010,0x20000200,0x16000024,0x00010001,0x00000001,0x20441e68,0x00000000,0x00010001,
-0x00010002,0x404c1a88,0x1e000044,0x00000000,0x02600005,0x20002260,0x1600004c,0x00010001,
-0x00610001,0x23482288,0x008d0050,0x00000000,0x05000010,0x20000200,0x16000024,0x00020002,
-0x00010002,0x404c1a88,0x1e000044,0x00000000,0x02600005,0x20002260,0x1600004c,0x00010001,
-0x00610001,0x23502288,0x008d0050,0x00000000,0x05000010,0x20000200,0x16000024,0x00030003,
-0x00010002,0x404c1a88,0x1e000044,0x00000000,0x02600005,0x20002260,0x1600004c,0x00010001,
-0x00610001,0x23582288,0x008d0050,0x00000000,0x05000010,0x20000200,0x16000024,0x00040004,
-0x00010002,0x404c1a88,0x1e000044,0x00000000,0x02600005,0x20002260,0x1600004c,0x00010001,
-0x00610001,0x23602288,0x008d0050,0x00000000,0x05000010,0x20000200,0x16000024,0x00050005,
-0x00010002,0x404c1a88,0x1e000044,0x00000000,0x02600005,0x20002260,0x1600004c,0x00010001,
-0x00610001,0x23682288,0x008d0050,0x00000000,0x05000010,0x20000200,0x16000024,0x00060006,
-0x00010002,0x404c1a88,0x1e000044,0x00000000,0x02600005,0x20002260,0x1600004c,0x00010001,
-0x00610001,0x23702288,0x008d0050,0x00000000,0x05000010,0x20000200,0x16000024,0x00070007,
-0x00010002,0x404c1a88,0x1e000044,0x00000000,0x02600005,0x20002260,0x1600004c,0x00010001,
-0x00610001,0x23782288,0x008d0050,0x00000000,0x20004d01,0x00000307,0x00000001,0x20601208,
-0x00000f84,0x00000000,0x00000001,0x20641208,0x00000f88,0x00000000,0x00000001,0x2068060c,
-0x00000000,0x00070007,0x00000040,0x22000204,0x06000028,0x020a8000,0x0c600033,0x0001a014,
-0x00002062,0x00000000,0x00000005,0x4f840248,0x16000038,0x00010001,0x00000005,0x4f880248,
-0x16000038,0x00020002,0x00000005,0x4f8c0248,0x16000038,0x00040004,0x01000010,0x20000200,
-0x16000038,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000ed8,0x00a00041,0x20602248,
-0x228d0b80,0x008d0b80,0x00a00041,0x20a02248,0x228d0ba0,0x008d0ba0,0x00a00041,0x20e02248,
-0x228d0bc0,0x008d0bc0,0x00a00041,0x21202248,0x228d0be0,0x008d0be0,0x00a00041,0x21602248,
-0x228d0c00,0x008d0c00,0x00a00041,0x21a02248,0x228d0c20,0x008d0c20,0x00a00041,0x21e02248,
-0x228d0c40,0x008d0c40,0x00a00041,0x22202248,0x228d0c60,0x008d0c60,0x00a00041,0x22602248,
-0x228d0c80,0x008d0c80,0x00a00041,0x22a02248,0x228d0ca0,0x008d0ca0,0x00a00041,0x22e02248,
-0x228d0cc0,0x008d0cc0,0x00a00041,0x23202248,0x228d0ce0,0x008d0ce0,0x00a00041,0x23602248,
-0x228d0d00,0x008d0d00,0x00a00041,0x23a02248,0x228d0d20,0x008d0d20,0x00a00041,0x23e02248,
-0x228d0d40,0x008d0d40,0x00a00041,0x24202248,0x228d0d60,0x008d0d60,0x00a00041,0x24602248,
-0x228d0d80,0x008d0d80,0x00a00041,0x24a02248,0x228d0da0,0x008d0da0,0x00a00041,0x24e02248,
-0x228d0dc0,0x008d0dc0,0x00a00041,0x25202248,0x228d0de0,0x008d0de0,0x00a00041,0x25602248,
-0x228d0e00,0x008d0e00,0x00a00041,0x25a02248,0x228d0e20,0x008d0e20,0x00a00041,0x25e02248,
-0x228d0e40,0x008d0e40,0x00a00041,0x26202248,0x228d0e60,0x008d0e60,0x00a00041,0x26602248,
-0x228d0e80,0x008d0e80,0x00a00041,0x26a02248,0x228d0ea0,0x008d0ea0,0x00a00041,0x26e02248,
-0x228d0ec0,0x008d0ec0,0x00a00041,0x27202248,0x228d0ee0,0x008d0ee0,0x00a00041,0x27602248,
-0x228d0f00,0x008d0f00,0x00a00041,0x27a02248,0x228d0f20,0x008d0f20,0x00a00041,0x27e02248,
-0x228d0f40,0x008d0f40,0x00a00041,0x28202248,0x228d0f60,0x008d0f60,0x00800040,0x28602248,
-0x228d0b80,0x008d0ba0,0x00800040,0x28802248,0x228d0bc0,0x008d0be0,0x00800040,0x28a02248,
-0x228d0c00,0x008d0c20,0x00800040,0x28c02248,0x228d0c40,0x008d0c60,0x00800040,0x28e02248,
-0x228d0c80,0x008d0ca0,0x00800040,0x29002248,0x228d0cc0,0x008d0ce0,0x00800040,0x29202248,
-0x228d0d00,0x008d0d20,0x00800040,0x29402248,0x228d0d40,0x008d0d60,0x00a00040,0x28601248,
-0x128d0860,0x008d08a0,0x00a00040,0x28a01248,0x128d08e0,0x008d0920,0x00a00040,0x28601248,
-0x128d0860,0x008d08a0,0x00800040,0x28601248,0x128d0860,0x008d0880,0x00600040,0x28601248,
-0x128d0860,0x008d0870,0x00400040,0x28601248,0x12690860,0x00690868,0x00200040,0x28601248,
-0x12450860,0x00450864,0x80000040,0x20501208,0x12000860,0x00000862,0x00800040,0x29601208,
-0x128d0060,0x008d00a0,0x00800040,0x29a01208,0x128d00e0,0x008d0120,0x00800040,0x29e01208,
-0x128d0160,0x008d01a0,0x00800040,0x2a201208,0x128d01e0,0x008d0220,0x00800040,0x2a601208,
-0x128d0260,0x008d02a0,0x00800040,0x2aa01208,0x128d02e0,0x008d0320,0x00800040,0x2ae01208,
-0x128d0360,0x008d03a0,0x00800040,0x2b201208,0x128d03e0,0x008d0420,0x20013640,0x4d4b4be7,
-0x20013640,0x514f4de7,0x20013640,0x55534fe7,0x20013640,0x595751e7,0x20013640,0x4d4b4be7,
-0x20013640,0x514f4de7,0x20013640,0x4d4b4be7,0x20012b40,0x4c4b4be7,0x606d2140,0x4b4b4bad,
-0x00200040,0x29600208,0x02450960,0x00450968,0x80000040,0x2f900208,0x02000960,0x00000964,
-0x00800040,0x28602248,0x228d0b90,0x008d0bb0,0x00800040,0x28802248,0x228d0bd0,0x008d0bf0,
-0x00800040,0x28a02248,0x228d0c10,0x008d0c30,0x00800040,0x28c02248,0x228d0c50,0x008d0c70,
-0x00800040,0x28e02248,0x228d0c90,0x008d0cb0,0x00800040,0x29002248,0x228d0cd0,0x008d0cf0,
-0x00800040,0x29202248,0x228d0d10,0x008d0d30,0x00800040,0x29402248,0x228d0d50,0x008d0d70,
-0x00a00040,0x28601248,0x128d0860,0x008d08a0,0x00a00040,0x28a01248,0x128d08e0,0x008d0920,
-0x00a00040,0x28601248,0x128d0860,0x008d08a0,0x00800040,0x28601248,0x128d0860,0x008d0880,
-0x00600040,0x28601248,0x128d0860,0x008d0870,0x00400040,0x28601248,0x12690860,0x00690868,
-0x00200040,0x28601248,0x12450860,0x00450864,0x80000040,0x20541208,0x12000860,0x00000862,
-0x00800040,0x29601208,0x128d0080,0x008d00c0,0x00800040,0x29a01208,0x128d0100,0x008d0140,
-0x00800040,0x29e01208,0x128d0180,0x008d01c0,0x00800040,0x2a201208,0x128d0200,0x008d0240,
-0x00800040,0x2a601208,0x128d0280,0x008d02c0,0x00800040,0x2aa01208,0x128d0300,0x008d0340,
-0x00800040,0x2ae01208,0x128d0380,0x008d03c0,0x00800040,0x2b201208,0x128d0400,0x008d0440,
-0x20013640,0x4d4b4be7,0x20013640,0x514f4de7,0x20013640,0x55534fe7,0x20013640,0x595751e7,
-0x20013640,0x4d4b4be7,0x20013640,0x514f4de7,0x20013640,0x4d4b4be7,0x20012b40,0x4c4b4be7,
-0x606d2140,0x4b4b4bad,0x00200040,0x29600208,0x02450960,0x00450968,0x80000040,0x2f940208,
-0x02000960,0x00000964,0x00800040,0x28602248,0x228d0d80,0x008d0da0,0x00800040,0x28802248,
-0x228d0dc0,0x008d0de0,0x00800040,0x28a02248,0x228d0e00,0x008d0e20,0x00800040,0x28c02248,
-0x228d0e40,0x008d0e60,0x00800040,0x28e02248,0x228d0e80,0x008d0ea0,0x00800040,0x29002248,
-0x228d0ec0,0x008d0ee0,0x00800040,0x29202248,0x228d0f00,0x008d0f20,0x00800040,0x29402248,
-0x228d0f40,0x008d0f60,0x00a00040,0x28601248,0x128d0860,0x008d08a0,0x00a00040,0x28a01248,
-0x128d08e0,0x008d0920,0x00a00040,0x28601248,0x128d0860,0x008d08a0,0x00800040,0x28601248,
-0x128d0860,0x008d0880,0x00600040,0x28601248,0x128d0860,0x008d0870,0x00400040,0x28601248,
-0x12690860,0x00690868,0x00200040,0x28601248,0x12450860,0x00450864,0x80000040,0x20581208,
-0x12000860,0x00000862,0x00800040,0x29601208,0x128d0460,0x008d04a0,0x00800040,0x29a01208,
-0x128d04e0,0x008d0520,0x00800040,0x29e01208,0x128d0560,0x008d05a0,0x00800040,0x2a201208,
-0x128d05e0,0x008d0620,0x00800040,0x2a601208,0x128d0660,0x008d06a0,0x00800040,0x2aa01208,
-0x128d06e0,0x008d0720,0x00800040,0x2ae01208,0x128d0760,0x008d07a0,0x00800040,0x2b201208,
-0x128d07e0,0x008d0820,0x20013640,0x4d4b4be7,0x20013640,0x514f4de7,0x20013640,0x55534fe7,
-0x20013640,0x595751e7,0x20013640,0x4d4b4be7,0x20013640,0x514f4de7,0x20013640,0x4d4b4be7,
-0x20012b40,0x4c4b4be7,0x606d2140,0x4b4b4bad,0x00200040,0x29600208,0x02450960,0x00450968,
-0x80000040,0x2f980208,0x02000960,0x00000964,0x00800040,0x28602248,0x228d0d90,0x008d0db0,
-0x00800040,0x28802248,0x228d0dd0,0x008d0df0,0x00800040,0x28a02248,0x228d0e10,0x008d0e30,
-0x00800040,0x28c02248,0x228d0e50,0x008d0e70,0x00800040,0x28e02248,0x228d0e90,0x008d0eb0,
-0x00800040,0x29002248,0x228d0ed0,0x008d0ef0,0x00800040,0x29202248,0x228d0f10,0x008d0f30,
-0x00800040,0x29402248,0x228d0f50,0x008d0f70,0x00a00040,0x28601248,0x128d0860,0x008d08a0,
-0x00a00040,0x28a01248,0x128d08e0,0x008d0920,0x00a00040,0x28601248,0x128d0860,0x008d08a0,
-0x00800040,0x28601248,0x128d0860,0x008d0880,0x00600040,0x28601248,0x128d0860,0x008d0870,
-0x00400040,0x28601248,0x12690860,0x00690868,0x00200040,0x28601248,0x12450860,0x00450864,
-0x80000040,0x205c1208,0x12000860,0x00000862,0x00800040,0x29601208,0x128d0480,0x008d04c0,
-0x00800040,0x29a01208,0x128d0500,0x008d0540,0x00800040,0x29e01208,0x128d0580,0x008d05c0,
-0x00800040,0x2a201208,0x128d0600,0x008d0640,0x00800040,0x2a601208,0x128d0680,0x008d06c0,
-0x00800040,0x2aa01208,0x128d0700,0x008d0740,0x00800040,0x2ae01208,0x128d0780,0x008d07c0,
-0x00800040,0x2b201208,0x128d0800,0x008d0840,0x20013640,0x4d4b4be7,0x20013640,0x514f4de7,
-0x20013640,0x55534fe7,0x20013640,0x595751e7,0x20013640,0x4d4b4be7,0x20013640,0x514f4de7,
-0x20013640,0x4d4b4be7,0x20012b40,0x4c4b4be7,0x606d2140,0x4b4b4bad,0x00200040,0x29600208,
-0x02450960,0x00450968,0x80000040,0x2f9c0208,0x02000960,0x00000964,0x0040000c,0x21c00208,
-0x16690050,0x00080008,0x00400041,0x20500208,0x02690050,0x00690050,0x0040000c,0x20500208,
-0x16690050,0x00080008,0x00400040,0x2f900208,0x02690f90,0x00694050,0x0040000c,0x2f900208,
-0x16690f90,0x00080008,0x05400010,0x20000200,0x02690f90,0x00000034,0x00000001,0x20601e68,
-0x00000000,0x00010001,0x00410002,0x20701a48,0x1e000060,0x00000000,0x00400001,0x22401208,
-0x00690070,0x00000000,0x0000000c,0x20801248,0x16000020,0x00040004,0x00000005,0x20841228,
-0x16000020,0x000f000f,0x03000010,0x20000a20,0x1e000084,0x00000000,0x00010002,0x20a01a28,
-0x1e000060,0x00000000,0x00000040,0x40c01248,0x0a000080,0x000000a0,0x00000041,0x20c41228,
-0x12000f80,0x000000c0,0x00000040,0x20440a28,0x120000c4,0x00000f82,0x00000041,0x21d00a08,
-0x1e000044,0x00680068,0x00000041,0x20241208,0x160000c0,0x00340034,0x00000040,0x20e00228,
-0x020001d0,0x00000024,0x00800001,0x21001e08,0x00000000,0x00000000,0x00800001,0x21401e08,
-0x00000000,0x00000000,0x00600001,0x20f02648,0x00000000,0xcba98765,0x00600001,0x22001208,
-0x008d00f0,0x00000000,0x00600001,0x21801208,0x008d00f0,0x00000000,0x00600001,0x20602668,
-0x00000000,0x76543210,0x00600040,0x21a01a08,0x1e8d0060,0x00120012,0x0000000c,0x21d00a08,
-0x1e0001d0,0x00020002,0x0000000c,0x21d40a08,0x1e0000e0,0x00020002,0x01000010,0x20001260,
-0x1e000f84,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000058,0x20004d01,0x00000307,
-0x00000009,0x20601228,0x16000f82,0x00030003,0x00000009,0x20641228,0x16000f80,0x00010001,
-0x00000001,0x2068060c,0x00000000,0x00010007,0x00000040,0x22000204,0x06000040,0x020a8000,
-0x0c600033,0x00012014,0x00002061,0x00000000,0x01000010,0x20001260,0x1e000f88,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000040,0x00000001,0x21000208,0x00000f90,0x00000000,
-0x00000001,0x21200208,0x00000f94,0x00000000,0x00000001,0x21400208,0x00000f98,0x00000000,
-0x00000001,0x21600208,0x00000f9c,0x00000000,0x01000010,0x20001260,0x1e000f8c,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000040,0x00000001,0x21100208,0x000001c0,0x00000000,
-0x00000001,0x21300208,0x000001c4,0x00000000,0x00000001,0x21500208,0x000001c8,0x00000000,
-0x00000001,0x21700208,0x000001cc,0x00000000,0x01000006,0x20001220,0x12000f88,0x00000f8c,
-0x00010020,0x34000004,0x0e001400,0x00000220,0x00000041,0x20241228,0x16000f82,0x00200020,
-0x04000010,0x20000a20,0x12000024,0x00000020,0x00010020,0x34000004,0x0e001400,0x000001f0,
-0x00000041,0x20241228,0x16000f80,0x00200020,0x04000010,0x20000a20,0x12000024,0x00000022,
-0x00010020,0x34000004,0x0e001400,0x000001c0,0x00000041,0x20241228,0x16000f82,0x00200020,
-0x00000040,0x20400a28,0x1e000024,0x00100010,0x05000010,0x20000a20,0x12000040,0x00000020,
-0x00010020,0x34000004,0x0e001400,0x00000058,0x20004d01,0x00000307,0x00000001,0x2068020c,
-0x000001d0,0x00000000,0x20004b01,0x00100407,0x20004b01,0x00080507,0x00000040,0x22000204,
-0x06000048,0x060ac200,0x0a600031,0x20003a00,0x00000060,0x00000200,0x00000020,0x34000004,
-0x0e001400,0x00000048,0x20004d01,0x00000307,0x00000001,0x2068020c,0x000001d0,0x00000000,
-0x20005601,0x000c0407,0x20005601,0x00080607,0x00000040,0x22000204,0x06000048,0x0a0ac300,
-0x0a800031,0x20003a40,0x00000060,0x00000200,0x00000041,0x20241228,0x16000f82,0x00200020,
-0x00000040,0x20400a28,0x1e000024,0x00100010,0x05000010,0x20000a20,0x12000040,0x00000020,
-0x00010020,0x34000004,0x0e001400,0x00000058,0x20004d01,0x00000307,0x00000001,0x2068020c,
-0x000001d4,0x00000000,0x20004b01,0x00100407,0x20004b01,0x000a0507,0x00000040,0x22000204,
-0x06000048,0x060ac200,0x0a600031,0x20003a00,0x00000060,0x00000200,0x00000020,0x34000004,
-0x0e001400,0x00000048,0x20004d01,0x00000307,0x00000001,0x2068020c,0x000001d4,0x00000000,
-0x20005601,0x000c0407,0x20005601,0x000a0607,0x00000040,0x22000204,0x06000048,0x0a0ac300,
-0x0a800031,0x20003a40,0x00000060,0x00000200,0x20004d01,0x00007f07,0x07000031,0x20003a00,
-0x06000fe0,0x82000010,0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c,
-0x20005601,0x00011b07,0x00000001,0x20b41e68,0x00000000,0x00010001,0x00000005,0x23e0124c,
-0x16000004,0x07ff07ff,0x00000005,0x23e2124c,0x16000006,0x07ff07ff,0x00600001,0x24001608,
-0x00000000,0x00000000,0x00200001,0x25101608,0x00000000,0x00000000,0x00200040,0x20c02268,
-0x1e450376,0xfff0fff0,0x02000005,0x20002220,0x1e000378,0x00100010,0x00200001,0x440c0208,
-0x0040036c,0x00000000,0x20005601,0x00031d07,0x00000009,0x23e41268,0x160003e0,0x00040004,
-0x00000009,0x23ec1268,0x160003e2,0x00040004,0x0020000c,0x23f81a48,0x1e4500c0,0x00010001,
-0x00010002,0x43f01a88,0x1e0000b4,0x00000000,0x02000005,0x20002220,0x1e000378,0x00080008,
-0x00000001,0x44141e88,0x00000000,0x00000000,0x00600001,0x24201608,0x00000000,0x00000000,
-0x00000001,0x24280208,0x00000368,0x00000000,0x00000001,0x43f21e88,0x00000000,0x00000000,
-0x0020000c,0x20e01208,0x164503f8,0x00020002,0x00200001,0x24b81e08,0x00000000,0x00000000,
-0x00010002,0x43f41a88,0x1e0000b4,0x00000000,0x00000001,0x26002244,0x00000398,0x00000000,
-0x00000001,0x23fc1608,0x00000000,0x00000000,0x00000040,0x43e62288,0x1e000371,0x00010001,
-0x0000000c,0x25002228,0x1600036c,0x00070007,0x00200001,0x21001a68,0x006600e0,0x00000000,
-0x20004b01,0x001d2407,0x00200001,0x24b00208,0x004503d0,0x00000000,0x60004101,0x001e2505,
-0x00000001,0x24081a48,0x000003e4,0x00000000,0x00000001,0x23e81a68,0x000003e4,0x00000000,
-0x00000001,0x240a1a48,0x000003ec,0x00000000,0x00000009,0x20b41a28,0x1e000102,0x00040004,
-0x00000001,0x23ea1a68,0x000003ec,0x00000000,0x00000001,0x43ee2288,0x00000414,0x00000000,
-0x00200001,0x24200208,0x00450360,0x00000000,0x00000001,0x243c0208,0x0000037c,0x00000000,
-0x00000040,0x20c01a28,0x0a000100,0x000000b4,0x00000001,0x40b41eac,0x00000000,0x00ff00ff,
-0x00000001,0x61200a8c,0x000000c0,0x00000000,0x00610001,0x25102aa8,0x000000b4,0x00000000,
-0x05000010,0x20002260,0x1e000394,0x00000000,0x00200001,0x242a2288,0x00000120,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000bc8,0x02000005,0x20000a20,0x1e000500,0x00010001,
-0x00000040,0x22002240,0x160003ee,0x05100510,0x00000001,0x25281648,0x00000000,0xffffffff,
-0x00010002,0x44252aa8,0x1e008000,0x00000000,0x01000010,0x20002260,0x1e0003f0,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x000004c8,0x00000009,0x20bc2228,0x220003e6,0x0000039c,
-0x00000009,0x20b81208,0x220003e2,0x0000039c,0x00000009,0x20b41208,0x220003e0,0x0000039c,
-0x20004d01,0x00000907,0x00000040,0x22000204,0x060000a4,0x02190000,0x20086001,0x07000900,
-0x00000001,0x21801e68,0x00000000,0x00010001,0x00000040,0x20c00a28,0x1e0000bc,0x00030003,
-0x00000001,0x43f21e88,0x00000000,0x00010001,0x00000009,0x21200228,0x160000b4,0x00030003,
-0x00000005,0x20e00a08,0x1e0000c0,0xfffcfffc,0x00000041,0x21000208,0x220000e0,0x000003ee,
-0x00000040,0x21240228,0x020000b8,0x00000100,0x0c600031,0x21403a0c,0x00000120,0x00000200,
-0x00600001,0x2600228c,0x008d0140,0x00000000,0x0040000c,0x21601a48,0x1e692600,0x00020002,
-0x05400010,0x20001240,0x22690160,0x00000379,0x00410002,0x20c01a48,0x1e000180,0x00000000,
-0x00000005,0x20e01228,0x120000c0,0x000000c2,0x02000005,0x20000a20,0x1e0000e0,0x00010001,
-0x00010001,0x43f21e88,0x00000000,0x00000000,0x01000010,0x20002260,0x1e0003f2,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000348,0x00200040,0x20bc2248,0x1e450376,0xfff0fff0,
-0x0000000c,0x20b61a68,0x1e00037a,0x00020002,0x00000001,0x20b41e68,0x00000000,0x02000200,
-0x0020000c,0x20b81a68,0x1e450600,0x00020002,0x00000009,0x20c82268,0x1e000371,0x00040004,
-0x00000009,0x20c42268,0x1e000372,0x00040004,0x20004b01,0x00203107,0x0020000c,0x20c01248,
-0x164500bc,0x00010001,0x20004b01,0x00213207,0x00200040,0x21101a28,0x1a4503e8,0x004500b4,
-0x00200040,0x21301a28,0x124500b8,0x004500bc,0x00200040,0x21501a28,0x124500b8,0x004540bc,
-0x00200040,0x21401a28,0x1a4503e8,0x004540b4,0x00000040,0x20c61a68,0x1e0000c8,0x00100010,
-0x00200040,0x20e01a68,0x124500b8,0x004540c0,0x00400001,0x26582288,0x000003ee,0x00000000,
-0x00200040,0x21200a28,0x12450110,0x004540bc,0x03200010,0x20000a20,0x1a450130,0x004500b4,
-0x00200040,0x21102228,0x1e454376,0x00050005,0x20004b01,0x001c3307,0x00200040,0x21601a28,
-0x1e4500c4,0xffffffff,0x00200040,0x21001a68,0x1a4500e0,0x004503e8,0x00200040,0x20e01a28,
-0x1e4500c4,0xffffffff,0x00600001,0x26801608,0x00000000,0x00000000,0x00210001,0x21001a68,
-0x00660120,0x00000000,0x05200010,0x20000a20,0x1a450150,0x004540b4,0x00200005,0x21800a28,
-0x0e450110,0x0000fffc,0x00200005,0x20d00a28,0x0e450160,0x0000fffc,0x20005701,0x00241107,
-0x20005701,0x00330f07,0x00210001,0x21001a68,0x00660140,0x00000000,0x00200001,0x21401e68,
-0x00000000,0x00000000,0x00000040,0x22000204,0x060000b0,0x0c98c000,0x00800001,0x22001648,
-0x00000000,0x00000000,0x03200010,0x20001a20,0x0a450100,0x004500e0,0x00210001,0x21001a68,
-0x006600d0,0x00000000,0x06200010,0x20001a60,0x22450100,0x00454376,0x00210001,0x21001a68,
-0x00660180,0x00000000,0x00200040,0x26201a68,0x1a450100,0x004543e8,0x20005701,0x00310d07,
-0x00200001,0x21201a68,0x00450620,0x00000000,0x00000001,0x21a4020c,0x00000140,0x00000000,
-0x20005701,0x00311307,0x00000005,0x41ad228c,0x160001ad,0x00f800f8,0x20004001,0x00090d00,
-0x00000006,0x41ad228c,0x160001ad,0x00000000,0x08600031,0x26a03a0c,0x000001a0,0x00000200,
-0x00000040,0x22000204,0x060000b0,0x10786000,0x00000005,0x26740a28,0x0e0006b8,0x00ffff00,
-0x00000005,0x46742288,0x1e0006a0,0x00030003,0x20004b01,0x00381907,0x20004b01,0x00361707,
-0x20004b01,0x00391a07,0x20004b01,0x00371807,0x20005701,0x00331507,0x00000001,0x42b62288,
-0x00000676,0x00000000,0x00000001,0x42b52288,0x00000675,0x00000000,0x00000005,0x42b42288,
-0x1e000674,0x00030003,0x0d600031,0x25203a0c,0x00000260,0x00000200,0x00a00009,0x25401a68,
-0x228d0540,0x0000039d,0x00a00009,0x25801a68,0x228d0580,0x0000039d,0x01000010,0x20002260,
-0x1e0003f2,0x00000000,0x20004b01,0x00213207,0x20004b01,0x00203107,0x00600001,0x26801608,
-0x00000000,0x00000000,0x20004b01,0x001c3307,0x00400001,0x26582288,0x000003ee,0x00000000,
-0x00200001,0x26201268,0x004543f8,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000c0,
-0x20005701,0x00310607,0x00200001,0x21e01e68,0x00000000,0x00000000,0x00200001,0x21c01268,
-0x004543f8,0x00000000,0x20005701,0x00330807,0x20005701,0x00240a07,0x00000005,0x40cd228c,
-0x160000cd,0x00f800f8,0x20004b01,0x003c0c07,0x20004b01,0x003d0d07,0x00000040,0x22000204,
-0x060000b0,0x10794000,0x00000001,0x20c4020c,0x000001e0,0x00000000,0x20004001,0x000e0600,
-0x00800001,0x21201648,0x00000000,0x00000000,0x00000006,0x40cd228c,0x160000cd,0x00000000,
-0x08600031,0x27c03a0c,0x000000c0,0x00000200,0x00000020,0x34000004,0x0e001400,0x000000a0,
-0x20005701,0x00310807,0x00200001,0x20c01268,0x004543f8,0x00000000,0x00200001,0x20e01e68,
-0x00000000,0x00000000,0x20005701,0x00330a07,0x20005701,0x00240c07,0x00000005,0x410d228c,
-0x1600010d,0x00f800f8,0x00000040,0x22000204,0x060000b0,0x0c784000,0x20004001,0x00060800,
-0x00000001,0x2104020c,0x000000e0,0x00000000,0x00800001,0x21601648,0x00000000,0x00000000,
-0x00000006,0x410d228c,0x1600010d,0x00000000,0x08600031,0x27c03a0c,0x00000100,0x00000200,
-0x00000005,0x26740a28,0x0e0007d8,0x00ffff00,0x00000005,0x46742288,0x1e0007c0,0x00030003,
-0x20004b01,0x003f0a07,0x00000040,0x22000204,0x060000b0,0x10786000,0x20004b01,0x00400b07,
-0x20004b01,0x00410c07,0x20004b01,0x00420d07,0x20005701,0x00310607,0x20005701,0x00330807,
-0x00000001,0x41162288,0x00000676,0x00000000,0x00000001,0x41152288,0x00000675,0x00000000,
-0x00000005,0x41142288,0x1e000674,0x00030003,0x00000001,0x20b41e68,0x00000000,0x00010001,
-0x0d600031,0x28a03a0c,0x000000c0,0x00000200,0x20004d01,0x00000607,0x00000040,0x22000204,
-0x060000a0,0x020a8000,0x00000001,0x20c8060c,0x00000000,0x0003001f,0x00000009,0x20c01a28,
-0x1e0003e4,0x00010001,0x05000010,0x20001240,0x12000528,0x000008a8,0x00a00009,0x28c01a68,
-0x228d08c0,0x0000039d,0x00a00009,0x29001a68,0x228d0900,0x0000039d,0x00010002,0x41c01a88,
-0x1e0000b4,0x00000000,0x0000000c,0x20b41a08,0x1e0003ec,0x00020002,0x00a00001,0x21e02248,
-0x000001c0,0x00000000,0x00000040,0x20c40228,0x020000b4,0x000003fc,0x02600005,0x20001260,
-0x168d01e0,0x00010001,0x00610002,0x22201a68,0x1a8d0540,0x008d08c0,0x02600005,0x20001260,
-0x168d01f0,0x00010001,0x00610002,0x22401a68,0x1a8d0550,0x008d08d0,0x02600005,0x20001260,
-0x168d0200,0x00010001,0x00610002,0x22601a68,0x1a8d0580,0x008d0900,0x02600005,0x20001260,
-0x168d0210,0x00010001,0x00610002,0x22801a68,0x1a8d0590,0x008d0910,0x02600005,0x20001260,
-0x168d01e0,0x00010001,0x00610002,0x22301a68,0x1a8d0560,0x008d08e0,0x02600005,0x20001260,
-0x168d01f0,0x00010001,0x00610002,0x22501a68,0x1a8d0570,0x008d08f0,0x02600005,0x20001260,
-0x168d0200,0x00010001,0x00610002,0x22701a68,0x1a8d05a0,0x008d0920,0x02600005,0x20001260,
-0x168d0210,0x00010001,0x00610002,0x22901a68,0x1a8d05b0,0x008d0930,0x01000010,0x20002260,
-0x1e0003f4,0x00000000,0x0c600033,0x00011014,0x000020c4,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000200,0x05000010,0x20001240,0x12000528,0x000008a8,0x00000001,0x20b41e68,
-0x00000000,0x00010001,0x00010002,0x40c01a88,0x1e0000b4,0x00000000,0x00a00001,0x20e02248,
-0x000000c0,0x00000000,0x02800005,0x20001260,0x168d00e0,0x00010001,0x00810002,0x41202288,
-0x228d05c0,0x008d0940,0x02800005,0x20001260,0x168d0100,0x00010001,0x00800001,0x29802288,
-0x00400120,0x00000000,0x00810002,0x41402288,0x228d05d0,0x008d0950,0x02000010,0x20002260,
-0x1e0003ee,0x00000000,0x00800001,0x29902288,0x00400140,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000060,0x20004d01,0x00000707,0x20004b01,0x004c0607,0x00000040,0x22000204,
-0x060000ac,0x020a8000,0x00000001,0x20e8060c,0x00000000,0x00030007,0x0000000c,0x20e41a28,
-0x1e0003ec,0x00020002,0x0000000c,0x20e01a28,0x1e0003e4,0x00010001,0x0c600033,0x00006014,
-0x000020e1,0x00000000,0x20004b01,0x004c0607,0x0000000c,0x20b41a08,0x1e0003ec,0x00020002,
-0x20004d01,0x00000707,0x00000040,0x22000204,0x060000a8,0x020a8000,0x00000001,0x20e8060c,
-0x00000000,0x00030007,0x0000000c,0x20e01a28,0x1e0003e4,0x00010001,0x00400001,0x60c21248,
-0x006000c0,0x00000000,0x00000040,0x20e40228,0x020000b4,0x000003fc,0x00200001,0x20d41248,
-0x004500d8,0x00000000,0x00200001,0x20c41248,0x004500c8,0x00000000,0x00200001,0x20d81248,
-0x004500d0,0x00000000,0x00200001,0x20c81248,0x004500c0,0x00000000,0x00200001,0x20dc1248,
-0x004500d4,0x00000000,0x00200001,0x20cc1248,0x004500c4,0x00000000,0x0c600033,0x00006014,
-0x000020e1,0x00000000,0x00000040,0x43ee2288,0x1e0003ee,0x00010001,0x00000009,0x20b42208,
-0x1e0003e6,0x00020002,0x06000010,0x20002260,0x220003ee,0x00000394,0x00000040,0x23fc0208,
-0x020003fc,0x000000b4,0x00010020,0x34000004,0x0e001400,0xfffff438,0x20004d01,0x00007f07,
-0x07000031,0x20003a00,0x06000fe0,0x82000010,0x2000007d,0x2000000c,0x2000007d,0x2000000c,
-0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c,
-0x00000005,0x26c0124c,0x16000004,0x07ff07ff,0x00000005,0x26c2124c,0x16000006,0x07ff07ff,
-0x06000010,0x20002260,0x1e000025,0x00000000,0x00000001,0x26c41248,0x000006c0,0x00000000,
-0x00000001,0x26c61248,0x000006c2,0x00000000,0x00200009,0x26c81248,0x164506c4,0x00050005,
-0x00010020,0x34000004,0x0e001400,0x000000f0,0x00200041,0x22b01248,0x164506c4,0x00020002,
-0x20004d01,0x00001707,0x00000040,0x22000204,0x060002b8,0x02190000,0x20086001,0x00001700,
-0x00200040,0x22c01248,0x164502b0,0x00010001,0x00000001,0x22e01228,0x000002c0,0x00000000,
-0x00000001,0x22e41228,0x000002c2,0x00000000,0x0c600031,0x23003a0c,0x000002e0,0x00000200,
-0x00400001,0x2320228c,0x00690300,0x00000000,0x00000041,0x23402228,0x1e000320,0x00400040,
-0x00000040,0x23600a28,0x1e000340,0x00800080,0x00000040,0x22001240,0x16000360,0x00200020,
-0x00800001,0x20a02288,0x00208000,0x00000000,0x00800001,0x20b02288,0x00208010,0x00000000,
-0x00800001,0x20c02288,0x00208020,0x00000000,0x00800001,0x20d02288,0x00208030,0x00000000,
-0x00200040,0x22c01228,0x164506c8,0x00200020,0x00000001,0x22f01e68,0x00000000,0x00010001,
-0x00600001,0x22e01648,0x00000000,0x00000000,0x00000040,0x22a41228,0x16000020,0x000f000f,
-0x03200010,0x20000a20,0x124502c0,0x00450020,0x0000000c,0x46cc0a48,0x1e0002a4,0x00040004,
-0x00210002,0x22e01a48,0x1e0002f0,0x00000000,0x2203eb10,0x00170007,0x00000001,0x23001048,
-0x00000600,0x00000000,0x02000005,0x20001200,0x16000300,0x00030003,0x00010020,0x34000004,
-0x0e001400,0x00006f38,0x03200010,0x20001260,0x1e4506c8,0x00000000,0x00000001,0x22a41e68,
-0x00000000,0x00010001,0x00000001,0x47401e88,0x00000000,0x007f007f,0x00800001,0x27001648,
-0x00000000,0x81818181,0x00800001,0x27201648,0x00000000,0x7f7f7f7f,0x00600001,0x26e01e08,
-0x00000000,0x00000000,0x00210002,0x26d01a48,0x1e0002a4,0x00000000,0x03000010,0x20001260,
-0x1e0006c2,0x00000000,0x00000001,0x46ce1e88,0x00000000,0x00000000,0x00010001,0x47401e88,
-0x00000000,0x00810081,0x06000010,0x20001260,0x1e0006ca,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000050,0x20004d01,0x00001707,0x00000040,0x22000204,0x060002a0,0x02190000,
-0x20086001,0x1f001700,0x00000040,0x22e41228,0x1e0006ca,0xffffffff,0x00000001,0x22e01228,
-0x000006c8,0x00000000,0x0c600031,0x27203a0c,0x000002e0,0x00000200,0x06000010,0x20001260,
-0x1e0006c8,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000078,0x20004d01,0x00001707,
-0x00000040,0x22000204,0x060002a0,0x02490000,0x00000001,0x22e8060c,0x00000000,0x001f0000,
-0x00000001,0x22e41228,0x000006ca,0x00000000,0x00000040,0x22e01228,0x1e0006c8,0xffffffff,
-0x0c600031,0x23003a0c,0x000002e0,0x00000200,0x00800001,0x27102288,0x00600340,0x00000000,
-0x00800001,0x27002288,0x00600300,0x00000000,0x02000010,0x20000200,0x060006d0,0x00010001,
-0x00010020,0x34000004,0x0e001400,0x00000078,0x00000040,0x22a41228,0x1e0006c8,0xffffffff,
-0x20004d01,0x00001707,0x00000040,0x22000204,0x060002a0,0x02190000,0x20086001,0x00001700,
-0x00000040,0x22e41228,0x1e0006ca,0xffffffff,0x20144001,0x00151700,0x0c600031,0x23003a0c,
-0x000002e0,0x00000200,0x00400001,0x22c0228c,0x00690300,0x00000000,0x00000001,0x47402288,
-0x000002c0,0x00000000,0x20004b01,0x00381707,0x20004b01,0x00391807,0x00000040,0x22000204,
-0x060002a0,0x02490000,0x03200010,0x20001260,0x1e4506c8,0x00000000,0x00000040,0x23a01228,
-0x160006d0,0x00040004,0x00200001,0x23841648,0x00000000,0x00000000,0x00800001,0x67602288,
-0x008d0700,0x00000000,0x00a00040,0x23202248,0x224002e0,0x004002e1,0x20004d01,0x00001707,
-0x00000001,0x22e8060c,0x00000000,0x001f0003,0x00000001,0x22e41228,0x000006ca,0x00000000,
-0x00800040,0x23601248,0x12400320,0x00400322,0x00000001,0x22e01228,0x000006c8,0x00000000,
-0x00000040,0x63c00a88,0x120003a0,0x000006d2,0x00800001,0x67a02288,0x008d0710,0x00000000,
-0x00800001,0x67612288,0x008d0700,0x00000000,0x00600040,0x22b01248,0x12400360,0x00400362,
-0x0c600031,0x27e03a0c,0x000002e0,0x00000200,0x00000040,0x22e01228,0x160006c8,0x00040004,
-0x00000001,0x22e41228,0x000006ca,0x00000000,0x00800001,0x67a12288,0x008d0710,0x00000000,
-0x00800001,0x67622288,0x008d0700,0x00000000,0x00400040,0x22c01248,0x124002b0,0x004002b2,
-0x00800001,0x67a22288,0x008d0710,0x00000000,0x0c600031,0x28603a0c,0x000002e0,0x00000200,
-0x00000040,0x22e01228,0x160006c8,0x00080008,0x00000001,0x22e41228,0x000006ca,0x00000000,
-0x00800001,0x67632288,0x008d0700,0x00000000,0x00200040,0x23801248,0x124002c0,0x004002c2,
-0x00800001,0x67a32288,0x008d0710,0x00000000,0x0c600031,0x28e03a0c,0x000002e0,0x00000200,
-0x00000040,0x22e01228,0x160006c8,0x000c000c,0x00000001,0x22e41228,0x000006ca,0x00000000,
-0x00200040,0x23801248,0x16450380,0x00100010,0x0c600031,0x29603a0c,0x000002e0,0x00000200,
-0x00210001,0x23841248,0x00450380,0x00000000,0x01000010,0x20002260,0x1e0003c0,0x00040004,
-0x00000040,0x23c41228,0x12000384,0x00000386,0x0000000c,0x26d40a08,0x220003c4,0x000003c0,
-0x00010001,0x26d41608,0x00000000,0x00800080,0x03000010,0x20000200,0x060006e0,0x7fffffff,
-0x00a00040,0x2b602268,0x228d08a0,0x000046d4,0x00a00040,0x2ba02268,0x228d08c0,0x000046d4,
-0x00a00040,0x2aa02268,0x228d0840,0x000046d4,0x00a00040,0x29e02268,0x228d07e0,0x000046d4,
-0x00a00040,0x2a602268,0x228d0820,0x000046d4,0x00a00040,0x2ae02268,0x228d0860,0x000046d4,
-0x00a00040,0x2a202268,0x228d0800,0x000046d4,0x00a00040,0x2b202268,0x228d0880,0x000046d4,
-0x00010020,0x34000004,0x0e001400,0x00000548,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,
-0x00800040,0x29e01a68,0x1a4009e0,0x004049e2,0x00800040,0x23001a68,0x1a400a20,0x00400a22,
-0x00800040,0x2a001a68,0x1a400a20,0x00404a22,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,
-0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2,
-0x00800040,0x2a201a68,0x1a400a60,0x00404a62,0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2,
-0x00800040,0x2aa01a68,0x1a400b60,0x00404b62,0x00800040,0x2a801a68,0x1a400b20,0x00404b22,
-0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2,0x00a00008,0x24c01a68,0x1e8d09e0,0x00010001,
-0x00a00008,0x25001a68,0x1e8d0a20,0x00010001,0x00a00008,0x25801a68,0x1e8d0aa0,0x00010001,
-0x00a00008,0x25401a68,0x1e8d0a60,0x00010001,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,
-0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2,0x00800040,0x23801a68,0x1a400b20,0x00400b22,
-0x00800040,0x23a01a68,0x1a400b60,0x00400b62,0x00a00001,0x29e01a48,0x008d24c0,0x00000000,
-0x00a00001,0x2a201a48,0x008d2500,0x00000000,0x00a00001,0x2aa01a48,0x008d2580,0x00000000,
-0x00a00001,0x2a601a48,0x008d2540,0x00000000,0x00600040,0x43e01a68,0x1a6002e0,0x006002e4,
-0x00600040,0x44001a68,0x1a600320,0x00600324,0x00600040,0x4b001a68,0x1a600320,0x00604324,
-0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4,0x00600040,0x44201a68,0x1a600360,0x00600364,
-0x00600040,0x4b201a68,0x1a600360,0x00604364,0x00600040,0x4b401a68,0x1a6003a0,0x006043a4,
-0x00600040,0x44401a68,0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,0x1a6002e2,0x006002e6,
-0x00600040,0x44021a68,0x1a600322,0x00600326,0x00600040,0x4b021a68,0x1a600322,0x00604326,
-0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6,0x00600040,0x44221a68,0x1a600362,0x00600366,
-0x00600040,0x4b221a68,0x1a600362,0x00604366,0x00600040,0x4b421a68,0x1a6003a2,0x006043a6,
-0x00600040,0x44421a68,0x1a6003a2,0x006003a6,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,
-0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x23001a68,0x1a400a20,0x00400a22,
-0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x24601a68,0x1a4003e0,0x004003e2,
-0x00a00008,0x25c01a68,0x1e8d0ae0,0x00010001,0x00a00008,0x26001a68,0x1e8d0b20,0x00010001,
-0x00800040,0x24801a68,0x1a400420,0x00400422,0x00800040,0x23801a68,0x1a400320,0x00400322,
-0x00800040,0x23601a68,0x1a4002e0,0x004002e2,0x00800040,0x2b601a68,0x1a4003e0,0x004043e2,
-0x00800040,0x2b801a68,0x1a400420,0x00404422,0x00a00001,0x2ae01a48,0x008d25c0,0x00000000,
-0x00a00001,0x2b201a48,0x008d2600,0x00000000,0x00800040,0x24a01a68,0x1a400460,0x00400462,
-0x00800040,0x2ba01a68,0x1a400460,0x00404462,0x00800040,0x23a01a48,0x1a400360,0x00400362,
-0x00a00008,0x26401a68,0x1e8d0b60,0x00010001,0x0080000c,0x24401a28,0x1e8d04a0,0x00010001,
-0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,
-0x00a00008,0x26801a68,0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48,0x008d2640,0x00000000,
-0x00800001,0x44c00a48,0x008d2440,0x00000000,0x00800040,0x23c01a48,0x1a400360,0x00400362,
-0x00a00001,0x2ba01a48,0x008d2680,0x00000000,0x00800040,0x24001a48,0x1a400b60,0x00400b62,
-0x00800001,0x24801248,0x004004c0,0x00000000,0x00800040,0x23a01248,0x128d03a0,0x008d03c0,
-0x00800040,0x25001a48,0x128d0ba0,0x008d0480,0x00800040,0x23a01248,0x128d03a0,0x008d0400,
-0x00800040,0x23a01248,0x128d03a0,0x008d0500,0x04600002,0x22c01248,0x128d03a0,0x008d03b0,
-0x00600040,0x22e01208,0x128d03a0,0x008d03b0,0x00600001,0x23001268,0x008d02c0,0x00000000,
-0x606d2140,0x171717ad,0x04400002,0x23201a48,0x1a690300,0x00690308,0x00200040,0x22e00208,
-0x024502e0,0x004502e8,0x00400001,0x23401268,0x00690320,0x00000000,0x00000040,0x22a40208,
-0x020002e0,0x000002e4,0x04200002,0x23601a48,0x1a450340,0x00450344,0x00000040,0x26e00208,
-0x020006e0,0x000002a4,0x04000002,0x23801248,0x12000360,0x00000362,0x00200001,0x23c01248,
-0x00000380,0x00000000,0x04000002,0x26e41208,0x020003c0,0x000006e4,0x03000010,0x20000200,
-0x060006e0,0x7fffffff,0x00a00040,0x2ae02268,0x228d0960,0x000046d4,0x00a00040,0x2b602268,
-0x228d09a0,0x000046d4,0x00a00040,0x2aa02268,0x228d0940,0x000046d4,0x00a00040,0x29e02268,
-0x228d08e0,0x000046d4,0x00a00040,0x2a602268,0x228d0920,0x000046d4,0x00a00040,0x2a202268,
-0x228d0900,0x000046d4,0x00a00040,0x2b202268,0x228d0980,0x000046d4,0x00a00040,0x2ba02268,
-0x228d09c0,0x000046d4,0x00010020,0x34000004,0x0e001400,0x00000548,0x00800040,0x22e01a68,
-0x1a4009e0,0x004009e2,0x00800040,0x29e01a68,0x1a4009e0,0x004049e2,0x00800040,0x23001a68,
-0x1a400a20,0x00400a22,0x00800040,0x2a001a68,0x1a400a20,0x00404a22,0x00800040,0x23401a68,
-0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x2a401a68,
-0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68,0x1a400a60,0x00404a62,0x00800040,0x2ac01a68,
-0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68,0x1a400b60,0x00404b62,0x00800040,0x2a801a68,
-0x1a400b20,0x00404b22,0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2,0x00a00008,0x24c01a68,
-0x1e8d09e0,0x00010001,0x00a00008,0x25001a68,0x1e8d0a20,0x00010001,0x00a00008,0x25801a68,
-0x1e8d0aa0,0x00010001,0x00a00008,0x25401a68,0x1e8d0a60,0x00010001,0x00800040,0x23601a68,
-0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2,0x00800040,0x23801a68,
-0x1a400b20,0x00400b22,0x00800040,0x23a01a68,0x1a400b60,0x00400b62,0x00a00001,0x29e01a48,
-0x008d24c0,0x00000000,0x00a00001,0x2a201a48,0x008d2500,0x00000000,0x00a00001,0x2aa01a48,
-0x008d2580,0x00000000,0x00a00001,0x2a601a48,0x008d2540,0x00000000,0x00600040,0x43e01a68,
-0x1a6002e0,0x006002e4,0x00600040,0x44001a68,0x1a600320,0x00600324,0x00600040,0x4b001a68,
-0x1a600320,0x00604324,0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4,0x00600040,0x44201a68,
-0x1a600360,0x00600364,0x00600040,0x4b201a68,0x1a600360,0x00604364,0x00600040,0x4b401a68,
-0x1a6003a0,0x006043a4,0x00600040,0x44401a68,0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,
-0x1a6002e2,0x006002e6,0x00600040,0x44021a68,0x1a600322,0x00600326,0x00600040,0x4b021a68,
-0x1a600322,0x00604326,0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6,0x00600040,0x44221a68,
-0x1a600362,0x00600366,0x00600040,0x4b221a68,0x1a600362,0x00604366,0x00600040,0x4b421a68,
-0x1a6003a2,0x006043a6,0x00600040,0x44421a68,0x1a6003a2,0x006003a6,0x00800040,0x23401a68,
-0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x23001a68,
-0x1a400a20,0x00400a22,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x24601a68,
-0x1a4003e0,0x004003e2,0x00a00008,0x25c01a68,0x1e8d0ae0,0x00010001,0x00a00008,0x26001a68,
-0x1e8d0b20,0x00010001,0x00800040,0x24801a68,0x1a400420,0x00400422,0x00800040,0x23801a68,
-0x1a400320,0x00400322,0x00800040,0x23601a68,0x1a4002e0,0x004002e2,0x00800040,0x2b601a68,
-0x1a4003e0,0x004043e2,0x00800040,0x2b801a68,0x1a400420,0x00404422,0x00a00001,0x2ae01a48,
-0x008d25c0,0x00000000,0x00a00001,0x2b201a48,0x008d2600,0x00000000,0x00800040,0x24a01a68,
-0x1a400460,0x00400462,0x00800040,0x2ba01a68,0x1a400460,0x00404462,0x00800040,0x23a01a48,
-0x1a400360,0x00400362,0x00a00008,0x26401a68,0x1e8d0b60,0x00010001,0x0080000c,0x24401a28,
-0x1e8d04a0,0x00010001,0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23601a68,
-0x1a400ae0,0x00400ae2,0x00a00008,0x26801a68,0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48,
-0x008d2640,0x00000000,0x00800001,0x44c00a48,0x008d2440,0x00000000,0x00800040,0x23c01a48,
-0x1a400360,0x00400362,0x00a00001,0x2ba01a48,0x008d2680,0x00000000,0x00800040,0x24001a48,
-0x1a400b60,0x00400b62,0x00800001,0x24801248,0x004004c0,0x00000000,0x00800040,0x23a01248,
-0x128d03a0,0x008d03c0,0x00800040,0x25001a48,0x128d0ba0,0x008d0480,0x00800040,0x23a01248,
-0x128d03a0,0x008d0400,0x00800040,0x23a01248,0x128d03a0,0x008d0500,0x04600002,0x22c01248,
-0x128d03a0,0x008d03b0,0x00600040,0x22e01208,0x128d03a0,0x008d03b0,0x00600001,0x23001268,
-0x008d02c0,0x00000000,0x606d2140,0x171717ad,0x04400002,0x23201a48,0x1a690300,0x00690308,
-0x00200040,0x22e00208,0x024502e0,0x004502e8,0x00400001,0x23401268,0x00690320,0x00000000,
-0x00000040,0x22a40208,0x020002e0,0x000002e4,0x04200002,0x23601a48,0x1a450340,0x00450344,
-0x00000040,0x26e00208,0x020006e0,0x000002a4,0x04000002,0x23801248,0x12000360,0x00000362,
-0x00200001,0x23c01248,0x00000380,0x00000000,0x04000002,0x26e41208,0x020003c0,0x000006e4,
-0x20005601,0x00396100,0x20145601,0x00396500,0x20005601,0x00395f00,0x20145601,0x00396300,
-0x03000010,0x20000200,0x060006e8,0x7fffffff,0x00a00040,0x2aa02268,0x228d0840,0x008d4c40,
-0x00a00040,0x2a602268,0x228d0820,0x008d4c20,0x00a00040,0x2ba02268,0x228d08c0,0x008d4cc0,
-0x00a00040,0x2b602268,0x228d08a0,0x008d4ca0,0x00a00040,0x29e02268,0x228d07e0,0x008d4be0,
-0x00a00040,0x2a202268,0x228d0800,0x008d4c00,0x00a00040,0x2ae02268,0x228d0860,0x008d4c60,
-0x00a00040,0x2b202268,0x228d0880,0x008d4c80,0x00010020,0x34000004,0x0e001400,0x00000548,
-0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x29e01a68,0x1a4009e0,0x004049e2,
-0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x2a001a68,0x1a400a20,0x00404a22,
-0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,
-0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68,0x1a400a60,0x00404a62,
-0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68,0x1a400b60,0x00404b62,
-0x00800040,0x2a801a68,0x1a400b20,0x00404b22,0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2,
-0x00a00008,0x24c01a68,0x1e8d09e0,0x00010001,0x00a00008,0x25001a68,0x1e8d0a20,0x00010001,
-0x00a00008,0x25801a68,0x1e8d0aa0,0x00010001,0x00a00008,0x25401a68,0x1e8d0a60,0x00010001,
-0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2,
-0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23a01a68,0x1a400b60,0x00400b62,
-0x00a00001,0x29e01a48,0x008d24c0,0x00000000,0x00a00001,0x2a201a48,0x008d2500,0x00000000,
-0x00a00001,0x2aa01a48,0x008d2580,0x00000000,0x00a00001,0x2a601a48,0x008d2540,0x00000000,
-0x00600040,0x43e01a68,0x1a6002e0,0x006002e4,0x00600040,0x44001a68,0x1a600320,0x00600324,
-0x00600040,0x4b001a68,0x1a600320,0x00604324,0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4,
-0x00600040,0x44201a68,0x1a600360,0x00600364,0x00600040,0x4b201a68,0x1a600360,0x00604364,
-0x00600040,0x4b401a68,0x1a6003a0,0x006043a4,0x00600040,0x44401a68,0x1a6003a0,0x006003a4,
-0x00600040,0x43e21a68,0x1a6002e2,0x006002e6,0x00600040,0x44021a68,0x1a600322,0x00600326,
-0x00600040,0x4b021a68,0x1a600322,0x00604326,0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6,
-0x00600040,0x44221a68,0x1a600362,0x00600366,0x00600040,0x4b221a68,0x1a600362,0x00604366,
-0x00600040,0x4b421a68,0x1a6003a2,0x006043a6,0x00600040,0x44421a68,0x1a6003a2,0x006003a6,
-0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,
-0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,
-0x00800040,0x24601a68,0x1a4003e0,0x004003e2,0x00a00008,0x25c01a68,0x1e8d0ae0,0x00010001,
-0x00a00008,0x26001a68,0x1e8d0b20,0x00010001,0x00800040,0x24801a68,0x1a400420,0x00400422,
-0x00800040,0x23801a68,0x1a400320,0x00400322,0x00800040,0x23601a68,0x1a4002e0,0x004002e2,
-0x00800040,0x2b601a68,0x1a4003e0,0x004043e2,0x00800040,0x2b801a68,0x1a400420,0x00404422,
-0x00a00001,0x2ae01a48,0x008d25c0,0x00000000,0x00a00001,0x2b201a48,0x008d2600,0x00000000,
-0x00800040,0x24a01a68,0x1a400460,0x00400462,0x00800040,0x2ba01a68,0x1a400460,0x00404462,
-0x00800040,0x23a01a48,0x1a400360,0x00400362,0x00a00008,0x26401a68,0x1e8d0b60,0x00010001,
-0x0080000c,0x24401a28,0x1e8d04a0,0x00010001,0x00800040,0x23801a68,0x1a400b20,0x00400b22,
-0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00a00008,0x26801a68,0x1e8d0ba0,0x00010001,
-0x00a00001,0x2b601a48,0x008d2640,0x00000000,0x00800001,0x44c00a48,0x008d2440,0x00000000,
-0x00800040,0x23c01a48,0x1a400360,0x00400362,0x00a00001,0x2ba01a48,0x008d2680,0x00000000,
-0x00800040,0x24001a48,0x1a400b60,0x00400b62,0x00800001,0x24801248,0x004004c0,0x00000000,
-0x00800040,0x23a01248,0x128d03a0,0x008d03c0,0x00800040,0x25001a48,0x128d0ba0,0x008d0480,
-0x00800040,0x23a01248,0x128d03a0,0x008d0400,0x00800040,0x23a01248,0x128d03a0,0x008d0500,
-0x04600002,0x22c01248,0x128d03a0,0x008d03b0,0x00600040,0x22e01208,0x128d03a0,0x008d03b0,
-0x00600001,0x23001268,0x008d02c0,0x00000000,0x606d2140,0x171717ad,0x04400002,0x23201a48,
-0x1a690300,0x00690308,0x00200040,0x22e00208,0x024502e0,0x004502e8,0x00400001,0x23401268,
-0x00690320,0x00000000,0x00000040,0x22a40208,0x020002e0,0x000002e4,0x04200002,0x23601a48,
-0x1a450340,0x00450344,0x00000040,0x26e80208,0x020006e8,0x000002a4,0x04000002,0x23801248,
-0x12000360,0x00000362,0x00200001,0x23c01248,0x00000380,0x00000000,0x04000002,0x26ec1208,
-0x020003c0,0x000006ec,0x20185601,0x00396100,0x201c5601,0x00396500,0x20185601,0x00395f00,
-0x201c5601,0x00396300,0x03000010,0x20000200,0x060006e8,0x7fffffff,0x00a00040,0x2aa02268,
-0x228d0940,0x008d4c40,0x00a00040,0x2a602268,0x228d0920,0x008d4c20,0x00a00040,0x2ba02268,
-0x228d09c0,0x008d4cc0,0x00a00040,0x2b602268,0x228d09a0,0x008d4ca0,0x00a00040,0x29e02268,
-0x228d08e0,0x008d4be0,0x00a00040,0x2a202268,0x228d0900,0x008d4c00,0x00a00040,0x2ae02268,
-0x228d0960,0x008d4c60,0x00a00040,0x2b202268,0x228d0980,0x008d4c80,0x00010020,0x34000004,
-0x0e001400,0x00000548,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x29e01a68,
-0x1a4009e0,0x004049e2,0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x2a001a68,
-0x1a400a20,0x00404a22,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,
-0x1a400a60,0x00400a62,0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68,
-0x1a400a60,0x00404a62,0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68,
-0x1a400b60,0x00404b62,0x00800040,0x2a801a68,0x1a400b20,0x00404b22,0x00800040,0x2a601a68,
-0x1a400ae0,0x00404ae2,0x00a00008,0x24c01a68,0x1e8d09e0,0x00010001,0x00a00008,0x25001a68,
-0x1e8d0a20,0x00010001,0x00a00008,0x25801a68,0x1e8d0aa0,0x00010001,0x00a00008,0x25401a68,
-0x1e8d0a60,0x00010001,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68,
-0x1a400ba0,0x00400ba2,0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23a01a68,
-0x1a400b60,0x00400b62,0x00a00001,0x29e01a48,0x008d24c0,0x00000000,0x00a00001,0x2a201a48,
-0x008d2500,0x00000000,0x00a00001,0x2aa01a48,0x008d2580,0x00000000,0x00a00001,0x2a601a48,
-0x008d2540,0x00000000,0x00600040,0x43e01a68,0x1a6002e0,0x006002e4,0x00600040,0x44001a68,
-0x1a600320,0x00600324,0x00600040,0x4b001a68,0x1a600320,0x00604324,0x00600040,0x4ae01a68,
-0x1a6002e0,0x006042e4,0x00600040,0x44201a68,0x1a600360,0x00600364,0x00600040,0x4b201a68,
-0x1a600360,0x00604364,0x00600040,0x4b401a68,0x1a6003a0,0x006043a4,0x00600040,0x44401a68,
-0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,0x1a6002e2,0x006002e6,0x00600040,0x44021a68,
-0x1a600322,0x00600326,0x00600040,0x4b021a68,0x1a600322,0x00604326,0x00600040,0x4ae21a68,
-0x1a6002e2,0x006042e6,0x00600040,0x44221a68,0x1a600362,0x00600366,0x00600040,0x4b221a68,
-0x1a600362,0x00604366,0x00600040,0x4b421a68,0x1a6003a2,0x006043a6,0x00600040,0x44421a68,
-0x1a6003a2,0x006003a6,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,
-0x1a400a60,0x00400a62,0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x22e01a68,
-0x1a4009e0,0x004009e2,0x00800040,0x24601a68,0x1a4003e0,0x004003e2,0x00a00008,0x25c01a68,
-0x1e8d0ae0,0x00010001,0x00a00008,0x26001a68,0x1e8d0b20,0x00010001,0x00800040,0x24801a68,
-0x1a400420,0x00400422,0x00800040,0x23801a68,0x1a400320,0x00400322,0x00800040,0x23601a68,
-0x1a4002e0,0x004002e2,0x00800040,0x2b601a68,0x1a4003e0,0x004043e2,0x00800040,0x2b801a68,
-0x1a400420,0x00404422,0x00a00001,0x2ae01a48,0x008d25c0,0x00000000,0x00a00001,0x2b201a48,
-0x008d2600,0x00000000,0x00800040,0x24a01a68,0x1a400460,0x00400462,0x00800040,0x2ba01a68,
-0x1a400460,0x00404462,0x00800040,0x23a01a48,0x1a400360,0x00400362,0x00a00008,0x26401a68,
-0x1e8d0b60,0x00010001,0x0080000c,0x24401a28,0x1e8d04a0,0x00010001,0x00800040,0x23801a68,
-0x1a400b20,0x00400b22,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00a00008,0x26801a68,
-0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48,0x008d2640,0x00000000,0x00800001,0x44c00a48,
-0x008d2440,0x00000000,0x00800040,0x23c01a48,0x1a400360,0x00400362,0x00a00001,0x2ba01a48,
-0x008d2680,0x00000000,0x00800040,0x24001a48,0x1a400b60,0x00400b62,0x00800001,0x24801248,
-0x004004c0,0x00000000,0x00800040,0x23a01248,0x128d03a0,0x008d03c0,0x00800040,0x25001a48,
-0x128d0ba0,0x008d0480,0x00800040,0x23a01248,0x128d03a0,0x008d0400,0x00800040,0x23a01248,
-0x128d03a0,0x008d0500,0x04600002,0x22c01248,0x128d03a0,0x008d03b0,0x00600040,0x22e01208,
-0x128d03a0,0x008d03b0,0x00600001,0x23001268,0x008d02c0,0x00000000,0x606d2140,0x171717ad,
-0x04400002,0x23201a48,0x1a690300,0x00690308,0x00200040,0x22e00208,0x024502e0,0x004502e8,
-0x00400001,0x23401268,0x00690320,0x00000000,0x00000040,0x22a40208,0x020002e0,0x000002e4,
-0x04200002,0x23601a48,0x1a450340,0x00450344,0x00000040,0x26e80208,0x020006e8,0x000002a4,
-0x04000002,0x23801248,0x12000360,0x00000362,0x00200001,0x23c01248,0x00000380,0x00000000,
-0x04000002,0x26ec1208,0x020003c0,0x000006ec,0x20005601,0x003d6507,0x20005601,0x003b6307,
-0x20005601,0x003d6107,0x20005601,0x003b5f07,0x03000010,0x20000200,0x060006f0,0x7fffffff,
-0x00a00040,0x2ba02268,0x228d08c0,0x008d4cc0,0x00a00040,0x2b602268,0x228d08a0,0x008d4ca0,
-0x00a00040,0x2b202268,0x228d0880,0x008d4c80,0x00a00040,0x2ae02268,0x228d0860,0x008d4c60,
-0x00a00040,0x2a602268,0x228d0820,0x008d4c20,0x00a00040,0x2aa02268,0x228d0840,0x008d4c40,
-0x00a00040,0x29e02268,0x228d07e0,0x008d4be0,0x00a00040,0x2a202268,0x228d0800,0x008d4c00,
-0x00010020,0x34000004,0x0e001400,0x00000548,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,
-0x00800040,0x29e01a68,0x1a4009e0,0x004049e2,0x00800040,0x23001a68,0x1a400a20,0x00400a22,
-0x00800040,0x2a001a68,0x1a400a20,0x00404a22,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,
-0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2,
-0x00800040,0x2a201a68,0x1a400a60,0x00404a62,0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2,
-0x00800040,0x2aa01a68,0x1a400b60,0x00404b62,0x00800040,0x2a801a68,0x1a400b20,0x00404b22,
-0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2,0x00a00008,0x24c01a68,0x1e8d09e0,0x00010001,
-0x00a00008,0x25001a68,0x1e8d0a20,0x00010001,0x00a00008,0x25801a68,0x1e8d0aa0,0x00010001,
-0x00a00008,0x25401a68,0x1e8d0a60,0x00010001,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,
-0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2,0x00800040,0x23801a68,0x1a400b20,0x00400b22,
-0x00800040,0x23a01a68,0x1a400b60,0x00400b62,0x00a00001,0x29e01a48,0x008d24c0,0x00000000,
-0x00a00001,0x2a201a48,0x008d2500,0x00000000,0x00a00001,0x2aa01a48,0x008d2580,0x00000000,
-0x00a00001,0x2a601a48,0x008d2540,0x00000000,0x00600040,0x43e01a68,0x1a6002e0,0x006002e4,
-0x00600040,0x44001a68,0x1a600320,0x00600324,0x00600040,0x4b001a68,0x1a600320,0x00604324,
-0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4,0x00600040,0x44201a68,0x1a600360,0x00600364,
-0x00600040,0x4b201a68,0x1a600360,0x00604364,0x00600040,0x4b401a68,0x1a6003a0,0x006043a4,
-0x00600040,0x44401a68,0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,0x1a6002e2,0x006002e6,
-0x00600040,0x44021a68,0x1a600322,0x00600326,0x00600040,0x4b021a68,0x1a600322,0x00604326,
-0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6,0x00600040,0x44221a68,0x1a600362,0x00600366,
-0x00600040,0x4b221a68,0x1a600362,0x00604366,0x00600040,0x4b421a68,0x1a6003a2,0x006043a6,
-0x00600040,0x44421a68,0x1a6003a2,0x006003a6,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,
-0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x23001a68,0x1a400a20,0x00400a22,
-0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x24601a68,0x1a4003e0,0x004003e2,
-0x00a00008,0x25c01a68,0x1e8d0ae0,0x00010001,0x00a00008,0x26001a68,0x1e8d0b20,0x00010001,
-0x00800040,0x24801a68,0x1a400420,0x00400422,0x00800040,0x23801a68,0x1a400320,0x00400322,
-0x00800040,0x23601a68,0x1a4002e0,0x004002e2,0x00800040,0x2b601a68,0x1a4003e0,0x004043e2,
-0x00800040,0x2b801a68,0x1a400420,0x00404422,0x00a00001,0x2ae01a48,0x008d25c0,0x00000000,
-0x00a00001,0x2b201a48,0x008d2600,0x00000000,0x00800040,0x24a01a68,0x1a400460,0x00400462,
-0x00800040,0x2ba01a68,0x1a400460,0x00404462,0x00800040,0x23a01a48,0x1a400360,0x00400362,
-0x00a00008,0x26401a68,0x1e8d0b60,0x00010001,0x0080000c,0x24401a28,0x1e8d04a0,0x00010001,
-0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,
-0x00a00008,0x26801a68,0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48,0x008d2640,0x00000000,
-0x00800001,0x44c00a48,0x008d2440,0x00000000,0x00800040,0x23c01a48,0x1a400360,0x00400362,
-0x00a00001,0x2ba01a48,0x008d2680,0x00000000,0x00800040,0x24001a48,0x1a400b60,0x00400b62,
-0x00800001,0x24801248,0x004004c0,0x00000000,0x00800040,0x23a01248,0x128d03a0,0x008d03c0,
-0x00800040,0x25001a48,0x128d0ba0,0x008d0480,0x00800040,0x23a01248,0x128d03a0,0x008d0400,
-0x00800040,0x23a01248,0x128d03a0,0x008d0500,0x04600002,0x22c01248,0x128d03a0,0x008d03b0,
-0x00600040,0x22e01208,0x128d03a0,0x008d03b0,0x00600001,0x23001268,0x008d02c0,0x00000000,
-0x606d2140,0x171717ad,0x04400002,0x23201a48,0x1a690300,0x00690308,0x00200040,0x22e00208,
-0x024502e0,0x004502e8,0x00400001,0x23401268,0x00690320,0x00000000,0x00000040,0x22a40208,
-0x020002e0,0x000002e4,0x04200002,0x23601a48,0x1a450340,0x00450344,0x00000040,0x26f00208,
-0x020006f0,0x000002a4,0x04000002,0x23801248,0x12000360,0x00000362,0x00200001,0x23c01248,
-0x00000380,0x00000000,0x04000002,0x26f41208,0x020003c0,0x000006f4,0x03000010,0x20000200,
-0x060006f0,0x7fffffff,0x00a00040,0x2a602268,0x228d0920,0x008d4c20,0x00a00040,0x29e02268,
-0x228d08e0,0x008d4be0,0x00a00040,0x2aa02268,0x228d0940,0x008d4c40,0x00a00040,0x2b602268,
-0x228d09a0,0x008d4ca0,0x00a00040,0x2ae02268,0x228d0960,0x008d4c60,0x00a00040,0x2ba02268,
-0x228d09c0,0x008d4cc0,0x00a00040,0x2b202268,0x228d0980,0x008d4c80,0x00a00040,0x2a202268,
-0x228d0900,0x008d4c00,0x00010020,0x34000004,0x0e001400,0x00000548,0x00800040,0x22e01a68,
-0x1a4009e0,0x004009e2,0x00800040,0x29e01a68,0x1a4009e0,0x004049e2,0x00800040,0x23001a68,
-0x1a400a20,0x00400a22,0x00800040,0x2a001a68,0x1a400a20,0x00404a22,0x00800040,0x23401a68,
-0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x2a401a68,
-0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68,0x1a400a60,0x00404a62,0x00800040,0x2ac01a68,
-0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68,0x1a400b60,0x00404b62,0x00800040,0x2a801a68,
-0x1a400b20,0x00404b22,0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2,0x00a00008,0x24c01a68,
-0x1e8d09e0,0x00010001,0x00a00008,0x25001a68,0x1e8d0a20,0x00010001,0x00a00008,0x25801a68,
-0x1e8d0aa0,0x00010001,0x00a00008,0x25401a68,0x1e8d0a60,0x00010001,0x00800040,0x23601a68,
-0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2,0x00800040,0x23801a68,
-0x1a400b20,0x00400b22,0x00800040,0x23a01a68,0x1a400b60,0x00400b62,0x00a00001,0x29e01a48,
-0x008d24c0,0x00000000,0x00a00001,0x2a201a48,0x008d2500,0x00000000,0x00a00001,0x2aa01a48,
-0x008d2580,0x00000000,0x00a00001,0x2a601a48,0x008d2540,0x00000000,0x00600040,0x43e01a68,
-0x1a6002e0,0x006002e4,0x00600040,0x44001a68,0x1a600320,0x00600324,0x00600040,0x4b001a68,
-0x1a600320,0x00604324,0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4,0x00600040,0x44201a68,
-0x1a600360,0x00600364,0x00600040,0x4b201a68,0x1a600360,0x00604364,0x00600040,0x4b401a68,
-0x1a6003a0,0x006043a4,0x00600040,0x44401a68,0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,
-0x1a6002e2,0x006002e6,0x00600040,0x44021a68,0x1a600322,0x00600326,0x00600040,0x4b021a68,
-0x1a600322,0x00604326,0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6,0x00600040,0x44221a68,
-0x1a600362,0x00600366,0x00600040,0x4b221a68,0x1a600362,0x00604366,0x00600040,0x4b421a68,
-0x1a6003a2,0x006043a6,0x00600040,0x44421a68,0x1a6003a2,0x006003a6,0x00800040,0x23401a68,
-0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x23001a68,
-0x1a400a20,0x00400a22,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x24601a68,
-0x1a4003e0,0x004003e2,0x00a00008,0x25c01a68,0x1e8d0ae0,0x00010001,0x00a00008,0x26001a68,
-0x1e8d0b20,0x00010001,0x00800040,0x24801a68,0x1a400420,0x00400422,0x00800040,0x23801a68,
-0x1a400320,0x00400322,0x00800040,0x23601a68,0x1a4002e0,0x004002e2,0x00800040,0x2b601a68,
-0x1a4003e0,0x004043e2,0x00800040,0x2b801a68,0x1a400420,0x00404422,0x00a00001,0x2ae01a48,
-0x008d25c0,0x00000000,0x00a00001,0x2b201a48,0x008d2600,0x00000000,0x00800040,0x24a01a68,
-0x1a400460,0x00400462,0x00800040,0x2ba01a68,0x1a400460,0x00404462,0x00800040,0x23a01a48,
-0x1a400360,0x00400362,0x00a00008,0x26401a68,0x1e8d0b60,0x00010001,0x0080000c,0x24401a28,
-0x1e8d04a0,0x00010001,0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23601a68,
-0x1a400ae0,0x00400ae2,0x00a00008,0x26801a68,0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48,
-0x008d2640,0x00000000,0x00800001,0x44c00a48,0x008d2440,0x00000000,0x00800040,0x23c01a48,
-0x1a400360,0x00400362,0x00a00001,0x2ba01a48,0x008d2680,0x00000000,0x00800040,0x24001a48,
-0x1a400b60,0x00400b62,0x00800001,0x24801248,0x004004c0,0x00000000,0x00800040,0x23a01248,
-0x128d03a0,0x008d03c0,0x00800040,0x25001a48,0x128d0ba0,0x008d0480,0x00800040,0x23a01248,
-0x128d03a0,0x008d0400,0x00800040,0x23a01248,0x128d03a0,0x008d0500,0x04600002,0x22c01248,
-0x128d03a0,0x008d03b0,0x00600040,0x22e01208,0x128d03a0,0x008d03b0,0x00600001,0x23001268,
-0x008d02c0,0x00000000,0x606d2140,0x171717ad,0x04400002,0x23201a48,0x1a690300,0x00690308,
-0x00200040,0x22e00208,0x024502e0,0x004502e8,0x00400001,0x23401268,0x00690320,0x00000000,
-0x00000040,0x22a40208,0x020002e0,0x000002e4,0x04200002,0x23601a48,0x1a450340,0x00450344,
-0x00000040,0x26f00208,0x020006f0,0x000002a4,0x04000002,0x23801248,0x12000360,0x00000362,
-0x00200001,0x23c01248,0x00000380,0x00000000,0x04000002,0x26f41208,0x020003c0,0x000006f4,
-0x20005601,0x00396100,0x20005601,0x00395f00,0x20145601,0x00396500,0x20145601,0x00396300,
-0x00a00040,0x2da02268,0x228d0c40,0x008d07c0,0x00a00040,0x2d602268,0x228d0c20,0x008d07a0,
-0x00a00040,0x2ce02268,0x228d0be0,0x008d0760,0x00a00040,0x2d202268,0x228d0c00,0x008d0780,
-0x80800040,0x4c401a88,0x22400da0,0x00004740,0x80800040,0x4c201a88,0x22400d60,0x00004740,
-0x80800040,0x4be01a88,0x22400ce0,0x00004740,0x80800040,0x4c001a88,0x22400d20,0x00004740,
-0x80800040,0x4c411a88,0x22400da2,0x00004740,0x80800040,0x4c211a88,0x22400d62,0x00004740,
-0x80800040,0x4be11a88,0x22400ce2,0x00004740,0x80800040,0x4c011a88,0x22400d22,0x00004740,
-0x00a00040,0x2da02268,0x228d0cc0,0x008d07c0,0x00a00040,0x2d602268,0x228d0ca0,0x008d07a0,
-0x00a00040,0x2ce02268,0x228d0c60,0x008d0760,0x00a00040,0x2d202268,0x228d0c80,0x008d0780,
-0x80800040,0x4cc01a88,0x22400da0,0x00004740,0x80800040,0x4ca01a88,0x22400d60,0x00004740,
-0x80800040,0x4c601a88,0x22400ce0,0x00004740,0x80800040,0x4c801a88,0x22400d20,0x00004740,
-0x80800040,0x4cc11a88,0x22400da2,0x00004740,0x80800040,0x4ca11a88,0x22400d62,0x00004740,
-0x80800040,0x4c611a88,0x22400ce2,0x00004740,0x80800040,0x4c811a88,0x22400d22,0x00004740,
-0x03000010,0x20000200,0x060006f8,0x7fffffff,0x00a00040,0x2aa02268,0x228d0840,0x008d4c40,
-0x00a00040,0x2a602268,0x228d0820,0x008d4c20,0x00a00040,0x29e02268,0x228d07e0,0x008d4be0,
-0x00a00040,0x2a202268,0x228d0800,0x008d4c00,0x00a00040,0x2ba02268,0x228d08c0,0x008d4cc0,
-0x00a00040,0x2b602268,0x228d08a0,0x008d4ca0,0x00a00040,0x2ae02268,0x228d0860,0x008d4c60,
-0x00a00040,0x2b202268,0x228d0880,0x008d4c80,0x00010020,0x34000004,0x0e001400,0x00000548,
-0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x29e01a68,0x1a4009e0,0x004049e2,
-0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x2a001a68,0x1a400a20,0x00404a22,
-0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,
-0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68,0x1a400a60,0x00404a62,
-0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68,0x1a400b60,0x00404b62,
-0x00800040,0x2a801a68,0x1a400b20,0x00404b22,0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2,
-0x00a00008,0x24c01a68,0x1e8d09e0,0x00010001,0x00a00008,0x25001a68,0x1e8d0a20,0x00010001,
-0x00a00008,0x25801a68,0x1e8d0aa0,0x00010001,0x00a00008,0x25401a68,0x1e8d0a60,0x00010001,
-0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2,
-0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23a01a68,0x1a400b60,0x00400b62,
-0x00a00001,0x29e01a48,0x008d24c0,0x00000000,0x00a00001,0x2a201a48,0x008d2500,0x00000000,
-0x00a00001,0x2aa01a48,0x008d2580,0x00000000,0x00a00001,0x2a601a48,0x008d2540,0x00000000,
-0x00600040,0x43e01a68,0x1a6002e0,0x006002e4,0x00600040,0x44001a68,0x1a600320,0x00600324,
-0x00600040,0x4b001a68,0x1a600320,0x00604324,0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4,
-0x00600040,0x44201a68,0x1a600360,0x00600364,0x00600040,0x4b201a68,0x1a600360,0x00604364,
-0x00600040,0x4b401a68,0x1a6003a0,0x006043a4,0x00600040,0x44401a68,0x1a6003a0,0x006003a4,
-0x00600040,0x43e21a68,0x1a6002e2,0x006002e6,0x00600040,0x44021a68,0x1a600322,0x00600326,
-0x00600040,0x4b021a68,0x1a600322,0x00604326,0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6,
-0x00600040,0x44221a68,0x1a600362,0x00600366,0x00600040,0x4b221a68,0x1a600362,0x00604366,
-0x00600040,0x4b421a68,0x1a6003a2,0x006043a6,0x00600040,0x44421a68,0x1a6003a2,0x006003a6,
-0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,
-0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,
-0x00800040,0x24601a68,0x1a4003e0,0x004003e2,0x00a00008,0x25c01a68,0x1e8d0ae0,0x00010001,
-0x00a00008,0x26001a68,0x1e8d0b20,0x00010001,0x00800040,0x24801a68,0x1a400420,0x00400422,
-0x00800040,0x23801a68,0x1a400320,0x00400322,0x00800040,0x23601a68,0x1a4002e0,0x004002e2,
-0x00800040,0x2b601a68,0x1a4003e0,0x004043e2,0x00800040,0x2b801a68,0x1a400420,0x00404422,
-0x00a00001,0x2ae01a48,0x008d25c0,0x00000000,0x00a00001,0x2b201a48,0x008d2600,0x00000000,
-0x00800040,0x24a01a68,0x1a400460,0x00400462,0x00800040,0x2ba01a68,0x1a400460,0x00404462,
-0x00800040,0x23a01a48,0x1a400360,0x00400362,0x00a00008,0x26401a68,0x1e8d0b60,0x00010001,
-0x0080000c,0x24401a28,0x1e8d04a0,0x00010001,0x00800040,0x23801a68,0x1a400b20,0x00400b22,
-0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00a00008,0x26801a68,0x1e8d0ba0,0x00010001,
-0x00a00001,0x2b601a48,0x008d2640,0x00000000,0x00800001,0x44c00a48,0x008d2440,0x00000000,
-0x00800040,0x23c01a48,0x1a400360,0x00400362,0x00a00001,0x2ba01a48,0x008d2680,0x00000000,
-0x00800040,0x24001a48,0x1a400b60,0x00400b62,0x00800001,0x24801248,0x004004c0,0x00000000,
-0x00800040,0x23a01248,0x128d03a0,0x008d03c0,0x00800040,0x25001a48,0x128d0ba0,0x008d0480,
-0x00800040,0x23a01248,0x128d03a0,0x008d0400,0x00800040,0x23a01248,0x128d03a0,0x008d0500,
-0x04600002,0x22c01248,0x128d03a0,0x008d03b0,0x00600040,0x22e01208,0x128d03a0,0x008d03b0,
-0x00600001,0x23001268,0x008d02c0,0x00000000,0x606d2140,0x171717ad,0x04400002,0x23201a48,
-0x1a690300,0x00690308,0x00200040,0x22e00208,0x024502e0,0x004502e8,0x00400001,0x23401268,
-0x00690320,0x00000000,0x00000040,0x22a40208,0x020002e0,0x000002e4,0x04200002,0x23601a48,
-0x1a450340,0x00450344,0x00000040,0x26f80208,0x020006f8,0x000002a4,0x04000002,0x23801248,
-0x12000360,0x00000362,0x00200001,0x23c01248,0x00000380,0x00000000,0x04000002,0x26fc1208,
-0x020003c0,0x000006fc,0x20185601,0x00396100,0x20185601,0x00395f00,0x201c5601,0x00396500,
-0x201c5601,0x00396300,0x00a00040,0x2da02268,0x228d0c40,0x008d07c0,0x00a00040,0x2d602268,
-0x228d0c20,0x008d07a0,0x00a00040,0x2ce02268,0x228d0be0,0x008d0760,0x00a00040,0x2d202268,
-0x228d0c00,0x008d0780,0x80800040,0x4c401a88,0x22400da0,0x00004740,0x80800040,0x4c201a88,
-0x22400d60,0x00004740,0x80800040,0x4be01a88,0x22400ce0,0x00004740,0x80800040,0x4c001a88,
-0x22400d20,0x00004740,0x80800040,0x4c411a88,0x22400da2,0x00004740,0x80800040,0x4c211a88,
-0x22400d62,0x00004740,0x80800040,0x4be11a88,0x22400ce2,0x00004740,0x80800040,0x4c011a88,
-0x22400d22,0x00004740,0x00a00040,0x2da02268,0x228d0cc0,0x008d07c0,0x00a00040,0x2d602268,
-0x228d0ca0,0x008d07a0,0x00a00040,0x2ce02268,0x228d0c60,0x008d0760,0x00a00040,0x2d202268,
-0x228d0c80,0x008d0780,0x80800040,0x4cc01a88,0x22400da0,0x00004740,0x80800040,0x4ca01a88,
-0x22400d60,0x00004740,0x80800040,0x4c601a88,0x22400ce0,0x00004740,0x80800040,0x4c801a88,
-0x22400d20,0x00004740,0x80800040,0x4cc11a88,0x22400da2,0x00004740,0x80800040,0x4ca11a88,
-0x22400d62,0x00004740,0x80800040,0x4c611a88,0x22400ce2,0x00004740,0x80800040,0x4c811a88,
-0x22400d22,0x00004740,0x03000010,0x20000200,0x060006f8,0x7fffffff,0x00a00040,0x2aa02268,
-0x228d0940,0x008d4c40,0x00a00040,0x2a602268,0x228d0920,0x008d4c20,0x00a00040,0x29e02268,
-0x228d08e0,0x008d4be0,0x00a00040,0x2a202268,0x228d0900,0x008d4c00,0x00a00040,0x2ba02268,
-0x228d09c0,0x008d4cc0,0x00a00040,0x2b602268,0x228d09a0,0x008d4ca0,0x00a00040,0x2ae02268,
-0x228d0960,0x008d4c60,0x00a00040,0x2b202268,0x228d0980,0x008d4c80,0x00010020,0x34000004,
-0x0e001400,0x00000548,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x29e01a68,
-0x1a4009e0,0x004049e2,0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x2a001a68,
-0x1a400a20,0x00404a22,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,
-0x1a400a60,0x00400a62,0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68,
-0x1a400a60,0x00404a62,0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68,
-0x1a400b60,0x00404b62,0x00800040,0x2a801a68,0x1a400b20,0x00404b22,0x00800040,0x2a601a68,
-0x1a400ae0,0x00404ae2,0x00a00008,0x24c01a68,0x1e8d09e0,0x00010001,0x00a00008,0x25001a68,
-0x1e8d0a20,0x00010001,0x00a00008,0x25801a68,0x1e8d0aa0,0x00010001,0x00a00008,0x25401a68,
-0x1e8d0a60,0x00010001,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68,
-0x1a400ba0,0x00400ba2,0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23a01a68,
-0x1a400b60,0x00400b62,0x00a00001,0x29e01a48,0x008d24c0,0x00000000,0x00a00001,0x2a201a48,
-0x008d2500,0x00000000,0x00a00001,0x2aa01a48,0x008d2580,0x00000000,0x00a00001,0x2a601a48,
-0x008d2540,0x00000000,0x00600040,0x43e01a68,0x1a6002e0,0x006002e4,0x00600040,0x44001a68,
-0x1a600320,0x00600324,0x00600040,0x4b001a68,0x1a600320,0x00604324,0x00600040,0x4ae01a68,
-0x1a6002e0,0x006042e4,0x00600040,0x44201a68,0x1a600360,0x00600364,0x00600040,0x4b201a68,
-0x1a600360,0x00604364,0x00600040,0x4b401a68,0x1a6003a0,0x006043a4,0x00600040,0x44401a68,
-0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,0x1a6002e2,0x006002e6,0x00600040,0x44021a68,
-0x1a600322,0x00600326,0x00600040,0x4b021a68,0x1a600322,0x00604326,0x00600040,0x4ae21a68,
-0x1a6002e2,0x006042e6,0x00600040,0x44221a68,0x1a600362,0x00600366,0x00600040,0x4b221a68,
-0x1a600362,0x00604366,0x00600040,0x4b421a68,0x1a6003a2,0x006043a6,0x00600040,0x44421a68,
-0x1a6003a2,0x006003a6,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,
-0x1a400a60,0x00400a62,0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x22e01a68,
-0x1a4009e0,0x004009e2,0x00800040,0x24601a68,0x1a4003e0,0x004003e2,0x00a00008,0x25c01a68,
-0x1e8d0ae0,0x00010001,0x00a00008,0x26001a68,0x1e8d0b20,0x00010001,0x00800040,0x24801a68,
-0x1a400420,0x00400422,0x00800040,0x23801a68,0x1a400320,0x00400322,0x00800040,0x23601a68,
-0x1a4002e0,0x004002e2,0x00800040,0x2b601a68,0x1a4003e0,0x004043e2,0x00800040,0x2b801a68,
-0x1a400420,0x00404422,0x00a00001,0x2ae01a48,0x008d25c0,0x00000000,0x00a00001,0x2b201a48,
-0x008d2600,0x00000000,0x00800040,0x24a01a68,0x1a400460,0x00400462,0x00800040,0x2ba01a68,
-0x1a400460,0x00404462,0x00800040,0x23a01a48,0x1a400360,0x00400362,0x00a00008,0x26401a68,
-0x1e8d0b60,0x00010001,0x0080000c,0x24401a28,0x1e8d04a0,0x00010001,0x00800040,0x23801a68,
-0x1a400b20,0x00400b22,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00a00008,0x26801a68,
-0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48,0x008d2640,0x00000000,0x00800001,0x44c00a48,
-0x008d2440,0x00000000,0x00800040,0x23c01a48,0x1a400360,0x00400362,0x00a00001,0x2ba01a48,
-0x008d2680,0x00000000,0x00800040,0x24001a48,0x1a400b60,0x00400b62,0x00800001,0x24801248,
-0x004004c0,0x00000000,0x00800040,0x23a01248,0x128d03a0,0x008d03c0,0x00800040,0x25001a48,
-0x128d0ba0,0x008d0480,0x00800040,0x23a01248,0x128d03a0,0x008d0400,0x00800040,0x23a01248,
-0x128d03a0,0x008d0500,0x04600002,0x22c01248,0x128d03a0,0x008d03b0,0x00600040,0x22e01208,
-0x128d03a0,0x008d03b0,0x00600001,0x23001268,0x008d02c0,0x00000000,0x606d2140,0x171717ad,
-0x04400002,0x23201a48,0x1a690300,0x00690308,0x00200040,0x22e00208,0x024502e0,0x004502e8,
-0x00400001,0x23401268,0x00690320,0x00000000,0x00000040,0x22a40208,0x020002e0,0x000002e4,
-0x04200002,0x23601a48,0x1a450340,0x00450344,0x00000040,0x26f80208,0x020006f8,0x000002a4,
-0x04000002,0x23801248,0x12000360,0x00000362,0x00200001,0x23c01248,0x00000380,0x00000000,
-0x04000002,0x26fc1208,0x020003c0,0x000006fc,0x20004d01,0x00001707,0x00000040,0x22000204,
-0x060002a0,0x02490000,0x00000001,0x22e8060c,0x00000000,0x001f0003,0x00000001,0x22e41228,
-0x000006ca,0x00000000,0x00000040,0x22e01228,0x160006c8,0x00100010,0x03000010,0x20000200,
-0x060006e0,0x7fffffff,0x0c600031,0x27e03a0c,0x000002e0,0x00000200,0x00000040,0x22e01228,
-0x160006c8,0x00140014,0x00000001,0x22e41228,0x000006ca,0x00000000,0x0c600031,0x28603a0c,
-0x000002e0,0x00000200,0x00000040,0x22e01228,0x160006c8,0x00180018,0x00000001,0x22e41228,
-0x000006ca,0x00000000,0x0c600031,0x28e03a0c,0x000002e0,0x00000200,0x00000040,0x22e01228,
-0x160006c8,0x001c001c,0x00000001,0x22e41228,0x000006ca,0x00000000,0x00a00040,0x29e02268,
-0x228d07e0,0x000046d4,0x00a00040,0x2aa02268,0x228d0840,0x000046d4,0x00a00040,0x2a202268,
-0x228d0800,0x000046d4,0x00a00040,0x2a602268,0x228d0820,0x000046d4,0x00a00040,0x2ba02268,
-0x228d08c0,0x000046d4,0x00a00040,0x2ae02268,0x228d0860,0x000046d4,0x00a00040,0x2b602268,
-0x228d08a0,0x000046d4,0x00a00040,0x2b202268,0x228d0880,0x000046d4,0x0c600031,0x29603a0c,
-0x000002e0,0x00000200,0x00010020,0x34000004,0x0e001400,0x00000548,0x00800040,0x22e01a68,
-0x1a4009e0,0x004009e2,0x00800040,0x29e01a68,0x1a4009e0,0x004049e2,0x00800040,0x23001a68,
-0x1a400a20,0x00400a22,0x00800040,0x2a001a68,0x1a400a20,0x00404a22,0x00800040,0x23401a68,
-0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x2a401a68,
-0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68,0x1a400a60,0x00404a62,0x00800040,0x2ac01a68,
-0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68,0x1a400b60,0x00404b62,0x00800040,0x2a801a68,
-0x1a400b20,0x00404b22,0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2,0x00a00008,0x24a01a68,
-0x1e8d09e0,0x00010001,0x00a00008,0x24e01a68,0x1e8d0a20,0x00010001,0x00a00008,0x25601a68,
-0x1e8d0aa0,0x00010001,0x00a00008,0x25201a68,0x1e8d0a60,0x00010001,0x00800040,0x23601a68,
-0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2,0x00800040,0x23801a68,
-0x1a400b20,0x00400b22,0x00800040,0x23a01a68,0x1a400b60,0x00400b62,0x00a00001,0x29e01a48,
-0x008d24a0,0x00000000,0x00a00001,0x2a201a48,0x008d24e0,0x00000000,0x00a00001,0x2aa01a48,
-0x008d2560,0x00000000,0x00a00001,0x2a601a48,0x008d2520,0x00000000,0x00600040,0x43e01a68,
-0x1a6002e0,0x006002e4,0x00600040,0x44001a68,0x1a600320,0x00600324,0x00600040,0x4b001a68,
-0x1a600320,0x00604324,0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4,0x00600040,0x44201a68,
-0x1a600360,0x00600364,0x00600040,0x4b201a68,0x1a600360,0x00604364,0x00600040,0x4b401a68,
-0x1a6003a0,0x006043a4,0x00600040,0x44401a68,0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,
-0x1a6002e2,0x006002e6,0x00600040,0x44021a68,0x1a600322,0x00600326,0x00600040,0x4b021a68,
-0x1a600322,0x00604326,0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6,0x00600040,0x44221a68,
-0x1a600362,0x00600366,0x00600040,0x4b221a68,0x1a600362,0x00604366,0x00600040,0x4b421a68,
-0x1a6003a2,0x006043a6,0x00600040,0x44421a68,0x1a6003a2,0x006003a6,0x00800040,0x23401a68,
-0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x23001a68,
-0x1a400a20,0x00400a22,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x24601a68,
-0x1a4003e0,0x004003e2,0x00a00008,0x25a01a68,0x1e8d0ae0,0x00010001,0x00a00008,0x25e01a68,
-0x1e8d0b20,0x00010001,0x00800040,0x24801a68,0x1a400420,0x00400422,0x00800040,0x23801a68,
-0x1a400320,0x00400322,0x00800040,0x23601a68,0x1a4002e0,0x004002e2,0x00800040,0x2b601a68,
-0x1a4003e0,0x004043e2,0x00800040,0x2b801a68,0x1a400420,0x00404422,0x00a00001,0x2ae01a48,
-0x008d25a0,0x00000000,0x00a00001,0x2b201a48,0x008d25e0,0x00000000,0x00800040,0x22a01a68,
-0x1a400460,0x00400462,0x00800040,0x2ba01a68,0x1a400460,0x00404462,0x00800040,0x23a01a48,
-0x1a400360,0x00400362,0x00a00008,0x26201a68,0x1e8d0b60,0x00010001,0x0080000c,0x24401a28,
-0x1e8d02a0,0x00010001,0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23601a68,
-0x1a400ae0,0x00400ae2,0x00a00008,0x26601a68,0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48,
-0x008d2620,0x00000000,0x00800001,0x44800a48,0x008d2440,0x00000000,0x00800040,0x23c01a48,
-0x1a400360,0x00400362,0x00a00001,0x2ba01a48,0x008d2660,0x00000000,0x00800040,0x24001a48,
-0x1a400b60,0x00400b62,0x00800001,0x24c01248,0x00400480,0x00000000,0x00800040,0x23a01248,
-0x128d03a0,0x008d03c0,0x00800040,0x24e01a48,0x128d0ba0,0x008d04c0,0x00800040,0x23a01248,
-0x128d03a0,0x008d0400,0x00800040,0x23a01248,0x128d03a0,0x008d04e0,0x04600002,0x23001248,
-0x128d03a0,0x008d03b0,0x00600040,0x22e01208,0x128d03a0,0x008d03b0,0x00600001,0x23201268,
-0x008d0300,0x00000000,0x606d2140,0x171717ad,0x04400002,0x22a01a48,0x1a690320,0x00690328,
-0x00200040,0x22e00208,0x024502e0,0x004502e8,0x00400001,0x23401268,0x006902a0,0x00000000,
-0x00000040,0x22c00208,0x020002e0,0x000002e4,0x04200002,0x23601a48,0x1a450340,0x00450344,
-0x00000040,0x26e00208,0x020006e0,0x000002c0,0x04000002,0x23801248,0x12000360,0x00000362,
-0x00200001,0x23c01248,0x00000380,0x00000000,0x04000002,0x26e41208,0x020003c0,0x000006e4,
-0x03000010,0x20000200,0x060006e0,0x7fffffff,0x00a00040,0x2ae02268,0x228d0960,0x000046d4,
-0x00a00040,0x2b602268,0x228d09a0,0x000046d4,0x00a00040,0x2aa02268,0x228d0940,0x000046d4,
-0x00a00040,0x29e02268,0x228d08e0,0x000046d4,0x00a00040,0x2a602268,0x228d0920,0x000046d4,
-0x00a00040,0x2a202268,0x228d0900,0x000046d4,0x00a00040,0x2b202268,0x228d0980,0x000046d4,
-0x00a00040,0x2ba02268,0x228d09c0,0x000046d4,0x00010020,0x34000004,0x0e001400,0x00000548,
-0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x29e01a68,0x1a4009e0,0x004049e2,
-0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x2a001a68,0x1a400a20,0x00404a22,
-0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,
-0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68,0x1a400a60,0x00404a62,
-0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68,0x1a400b60,0x00404b62,
-0x00800040,0x2a801a68,0x1a400b20,0x00404b22,0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2,
-0x00a00008,0x24a01a68,0x1e8d09e0,0x00010001,0x00a00008,0x24e01a68,0x1e8d0a20,0x00010001,
-0x00a00008,0x25601a68,0x1e8d0aa0,0x00010001,0x00a00008,0x25201a68,0x1e8d0a60,0x00010001,
-0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2,
-0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23a01a68,0x1a400b60,0x00400b62,
-0x00a00001,0x29e01a48,0x008d24a0,0x00000000,0x00a00001,0x2a201a48,0x008d24e0,0x00000000,
-0x00a00001,0x2aa01a48,0x008d2560,0x00000000,0x00a00001,0x2a601a48,0x008d2520,0x00000000,
-0x00600040,0x43e01a68,0x1a6002e0,0x006002e4,0x00600040,0x44001a68,0x1a600320,0x00600324,
-0x00600040,0x4b001a68,0x1a600320,0x00604324,0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4,
-0x00600040,0x44201a68,0x1a600360,0x00600364,0x00600040,0x4b201a68,0x1a600360,0x00604364,
-0x00600040,0x4b401a68,0x1a6003a0,0x006043a4,0x00600040,0x44401a68,0x1a6003a0,0x006003a4,
-0x00600040,0x43e21a68,0x1a6002e2,0x006002e6,0x00600040,0x44021a68,0x1a600322,0x00600326,
-0x00600040,0x4b021a68,0x1a600322,0x00604326,0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6,
-0x00600040,0x44221a68,0x1a600362,0x00600366,0x00600040,0x4b221a68,0x1a600362,0x00604366,
-0x00600040,0x4b421a68,0x1a6003a2,0x006043a6,0x00600040,0x44421a68,0x1a6003a2,0x006003a6,
-0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,
-0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,
-0x00800040,0x24601a68,0x1a4003e0,0x004003e2,0x00a00008,0x25a01a68,0x1e8d0ae0,0x00010001,
-0x00a00008,0x25e01a68,0x1e8d0b20,0x00010001,0x00800040,0x24801a68,0x1a400420,0x00400422,
-0x00800040,0x23801a68,0x1a400320,0x00400322,0x00800040,0x23601a68,0x1a4002e0,0x004002e2,
-0x00800040,0x2b601a68,0x1a4003e0,0x004043e2,0x00800040,0x2b801a68,0x1a400420,0x00404422,
-0x00a00001,0x2ae01a48,0x008d25a0,0x00000000,0x00a00001,0x2b201a48,0x008d25e0,0x00000000,
-0x00800040,0x22a01a68,0x1a400460,0x00400462,0x00800040,0x2ba01a68,0x1a400460,0x00404462,
-0x00800040,0x23a01a48,0x1a400360,0x00400362,0x00a00008,0x26201a68,0x1e8d0b60,0x00010001,
-0x0080000c,0x24401a28,0x1e8d02a0,0x00010001,0x00800040,0x23801a68,0x1a400b20,0x00400b22,
-0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00a00008,0x26601a68,0x1e8d0ba0,0x00010001,
-0x00a00001,0x2b601a48,0x008d2620,0x00000000,0x00800001,0x44800a48,0x008d2440,0x00000000,
-0x00800040,0x23c01a48,0x1a400360,0x00400362,0x00a00001,0x2ba01a48,0x008d2660,0x00000000,
-0x00800040,0x24001a48,0x1a400b60,0x00400b62,0x00800001,0x24c01248,0x00400480,0x00000000,
-0x00800040,0x23a01248,0x128d03a0,0x008d03c0,0x00800040,0x24e01a48,0x128d0ba0,0x008d04c0,
-0x00800040,0x23a01248,0x128d03a0,0x008d0400,0x00800040,0x23a01248,0x128d03a0,0x008d04e0,
-0x04600002,0x23001248,0x128d03a0,0x008d03b0,0x00600040,0x22e01208,0x128d03a0,0x008d03b0,
-0x00600001,0x23201268,0x008d0300,0x00000000,0x606d2140,0x171717ad,0x04400002,0x22a01a48,
-0x1a690320,0x00690328,0x00200040,0x22e00208,0x024502e0,0x004502e8,0x00400001,0x23401268,
-0x006902a0,0x00000000,0x00000040,0x22c00208,0x020002e0,0x000002e4,0x04200002,0x23601a48,
-0x1a450340,0x00450344,0x00000040,0x26e00208,0x020006e0,0x000002c0,0x04000002,0x23801248,
-0x12000360,0x00000362,0x00200001,0x23c01248,0x00000380,0x00000000,0x04000002,0x26e41208,
-0x020003c0,0x000006e4,0x20285601,0x00396500,0x20285601,0x00396300,0x20205601,0x00395f00,
-0x20205601,0x00396100,0x03000010,0x20000200,0x020006e8,0x000006e0,0x00a00040,0x2ba02268,
-0x228d08c0,0x008d4cc0,0x00a00040,0x2b602268,0x228d08a0,0x008d4ca0,0x00a00040,0x2b202268,
-0x228d0880,0x008d4c80,0x00a00040,0x2ae02268,0x228d0860,0x008d4c60,0x00a00040,0x29e02268,
-0x228d07e0,0x008d4be0,0x00a00040,0x2a202268,0x228d0800,0x008d4c00,0x00a00040,0x2a602268,
-0x228d0820,0x008d4c20,0x00a00040,0x2aa02268,0x228d0840,0x008d4c40,0x00000001,0x26d80208,
-0x000006e0,0x00000000,0x00000001,0x26dc0208,0x000006e4,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000548,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x29e01a68,
-0x1a4009e0,0x004049e2,0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x2a001a68,
-0x1a400a20,0x00404a22,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,
-0x1a400a60,0x00400a62,0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68,
-0x1a400a60,0x00404a62,0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68,
-0x1a400b60,0x00404b62,0x00800040,0x2a801a68,0x1a400b20,0x00404b22,0x00800040,0x2a601a68,
-0x1a400ae0,0x00404ae2,0x00a00008,0x24a01a68,0x1e8d09e0,0x00010001,0x00a00008,0x24e01a68,
-0x1e8d0a20,0x00010001,0x00a00008,0x25601a68,0x1e8d0aa0,0x00010001,0x00a00008,0x25201a68,
-0x1e8d0a60,0x00010001,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68,
-0x1a400ba0,0x00400ba2,0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23a01a68,
-0x1a400b60,0x00400b62,0x00a00001,0x29e01a48,0x008d24a0,0x00000000,0x00a00001,0x2a201a48,
-0x008d24e0,0x00000000,0x00a00001,0x2aa01a48,0x008d2560,0x00000000,0x00a00001,0x2a601a48,
-0x008d2520,0x00000000,0x00600040,0x43e01a68,0x1a6002e0,0x006002e4,0x00600040,0x44001a68,
-0x1a600320,0x00600324,0x00600040,0x4b001a68,0x1a600320,0x00604324,0x00600040,0x4ae01a68,
-0x1a6002e0,0x006042e4,0x00600040,0x44201a68,0x1a600360,0x00600364,0x00600040,0x4b201a68,
-0x1a600360,0x00604364,0x00600040,0x4b401a68,0x1a6003a0,0x006043a4,0x00600040,0x44401a68,
-0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,0x1a6002e2,0x006002e6,0x00600040,0x44021a68,
-0x1a600322,0x00600326,0x00600040,0x4b021a68,0x1a600322,0x00604326,0x00600040,0x4ae21a68,
-0x1a6002e2,0x006042e6,0x00600040,0x44221a68,0x1a600362,0x00600366,0x00600040,0x4b221a68,
-0x1a600362,0x00604366,0x00600040,0x4b421a68,0x1a6003a2,0x006043a6,0x00600040,0x44421a68,
-0x1a6003a2,0x006003a6,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,
-0x1a400a60,0x00400a62,0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x22e01a68,
-0x1a4009e0,0x004009e2,0x00800040,0x24601a68,0x1a4003e0,0x004003e2,0x00a00008,0x25a01a68,
-0x1e8d0ae0,0x00010001,0x00a00008,0x25e01a68,0x1e8d0b20,0x00010001,0x00800040,0x24801a68,
-0x1a400420,0x00400422,0x00800040,0x23801a68,0x1a400320,0x00400322,0x00800040,0x23601a68,
-0x1a4002e0,0x004002e2,0x00800040,0x2b601a68,0x1a4003e0,0x004043e2,0x00800040,0x2b801a68,
-0x1a400420,0x00404422,0x00a00001,0x2ae01a48,0x008d25a0,0x00000000,0x00a00001,0x2b201a48,
-0x008d25e0,0x00000000,0x00800040,0x22a01a68,0x1a400460,0x00400462,0x00800040,0x2ba01a68,
-0x1a400460,0x00404462,0x00800040,0x23a01a48,0x1a400360,0x00400362,0x00a00008,0x26201a68,
-0x1e8d0b60,0x00010001,0x0080000c,0x24401a28,0x1e8d02a0,0x00010001,0x00800040,0x23801a68,
-0x1a400b20,0x00400b22,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00a00008,0x26601a68,
-0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48,0x008d2620,0x00000000,0x00800001,0x44800a48,
-0x008d2440,0x00000000,0x00800040,0x23c01a48,0x1a400360,0x00400362,0x00a00001,0x2ba01a48,
-0x008d2660,0x00000000,0x00800040,0x24001a48,0x1a400b60,0x00400b62,0x00800001,0x24c01248,
-0x00400480,0x00000000,0x00800040,0x23a01248,0x128d03a0,0x008d03c0,0x00800040,0x24e01a48,
-0x128d0ba0,0x008d04c0,0x00800040,0x23a01248,0x128d03a0,0x008d0400,0x00800040,0x23a01248,
-0x128d03a0,0x008d04e0,0x04600002,0x23001248,0x128d03a0,0x008d03b0,0x00600040,0x22e01208,
-0x128d03a0,0x008d03b0,0x00600001,0x23201268,0x008d0300,0x00000000,0x606d2140,0x171717ad,
-0x04400002,0x22a01a48,0x1a690320,0x00690328,0x00200040,0x22e00208,0x024502e0,0x004502e8,
-0x00400001,0x23401268,0x006902a0,0x00000000,0x00000040,0x22c00208,0x020002e0,0x000002e4,
-0x04200002,0x23601a48,0x1a450340,0x00450344,0x00000040,0x26e80208,0x020006e8,0x000002c0,
-0x04000002,0x23801248,0x12000360,0x00000362,0x00200001,0x23c01248,0x00000380,0x00000000,
-0x04000002,0x26ec1208,0x020003c0,0x000006ec,0x00800001,0x2c200208,0x00000738,0x00000000,
-0x00800001,0x2ca00208,0x0000073c,0x00000000,0x00800001,0x2be00208,0x00000738,0x00000000,
-0x00800001,0x2c600208,0x0000073c,0x00000000,0x03000010,0x20000200,0x020006e8,0x000006e0,
-0x00a00040,0x2aa02268,0x228d0940,0x008d4c40,0x00a00040,0x2a602268,0x228d0920,0x008d4c20,
-0x00a00040,0x2ba02268,0x228d09c0,0x008d4cc0,0x00a00040,0x2b602268,0x228d09a0,0x008d4ca0,
-0x00a00040,0x29e02268,0x228d08e0,0x008d4be0,0x00a00040,0x2a202268,0x228d0900,0x008d4c00,
-0x00a00040,0x2ae02268,0x228d0960,0x008d4c60,0x00a00040,0x2b202268,0x228d0980,0x008d4c80,
-0x00010020,0x34000004,0x0e001400,0x00000548,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,
-0x00800040,0x29e01a68,0x1a4009e0,0x004049e2,0x00800040,0x23001a68,0x1a400a20,0x00400a22,
-0x00800040,0x2a001a68,0x1a400a20,0x00404a22,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,
-0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2,
-0x00800040,0x2a201a68,0x1a400a60,0x00404a62,0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2,
-0x00800040,0x2aa01a68,0x1a400b60,0x00404b62,0x00800040,0x2a801a68,0x1a400b20,0x00404b22,
-0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2,0x00a00008,0x24a01a68,0x1e8d09e0,0x00010001,
-0x00a00008,0x24e01a68,0x1e8d0a20,0x00010001,0x00a00008,0x25601a68,0x1e8d0aa0,0x00010001,
-0x00a00008,0x25201a68,0x1e8d0a60,0x00010001,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,
-0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2,0x00800040,0x23801a68,0x1a400b20,0x00400b22,
-0x00800040,0x23a01a68,0x1a400b60,0x00400b62,0x00a00001,0x29e01a48,0x008d24a0,0x00000000,
-0x00a00001,0x2a201a48,0x008d24e0,0x00000000,0x00a00001,0x2aa01a48,0x008d2560,0x00000000,
-0x00a00001,0x2a601a48,0x008d2520,0x00000000,0x00600040,0x43e01a68,0x1a6002e0,0x006002e4,
-0x00600040,0x44001a68,0x1a600320,0x00600324,0x00600040,0x4b001a68,0x1a600320,0x00604324,
-0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4,0x00600040,0x44201a68,0x1a600360,0x00600364,
-0x00600040,0x4b201a68,0x1a600360,0x00604364,0x00600040,0x4b401a68,0x1a6003a0,0x006043a4,
-0x00600040,0x44401a68,0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,0x1a6002e2,0x006002e6,
-0x00600040,0x44021a68,0x1a600322,0x00600326,0x00600040,0x4b021a68,0x1a600322,0x00604326,
-0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6,0x00600040,0x44221a68,0x1a600362,0x00600366,
-0x00600040,0x4b221a68,0x1a600362,0x00604366,0x00600040,0x4b421a68,0x1a6003a2,0x006043a6,
-0x00600040,0x44421a68,0x1a6003a2,0x006003a6,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,
-0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x23001a68,0x1a400a20,0x00400a22,
-0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x24601a68,0x1a4003e0,0x004003e2,
-0x00a00008,0x25a01a68,0x1e8d0ae0,0x00010001,0x00a00008,0x25e01a68,0x1e8d0b20,0x00010001,
-0x00800040,0x24801a68,0x1a400420,0x00400422,0x00800040,0x23801a68,0x1a400320,0x00400322,
-0x00800040,0x23601a68,0x1a4002e0,0x004002e2,0x00800040,0x2b601a68,0x1a4003e0,0x004043e2,
-0x00800040,0x2b801a68,0x1a400420,0x00404422,0x00a00001,0x2ae01a48,0x008d25a0,0x00000000,
-0x00a00001,0x2b201a48,0x008d25e0,0x00000000,0x00800040,0x22a01a68,0x1a400460,0x00400462,
-0x00800040,0x2ba01a68,0x1a400460,0x00404462,0x00800040,0x23a01a48,0x1a400360,0x00400362,
-0x00a00008,0x26201a68,0x1e8d0b60,0x00010001,0x0080000c,0x24401a28,0x1e8d02a0,0x00010001,
-0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,
-0x00a00008,0x26601a68,0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48,0x008d2620,0x00000000,
-0x00800001,0x44800a48,0x008d2440,0x00000000,0x00800040,0x23c01a48,0x1a400360,0x00400362,
-0x00a00001,0x2ba01a48,0x008d2660,0x00000000,0x00800040,0x24001a48,0x1a400b60,0x00400b62,
-0x00800001,0x24c01248,0x00400480,0x00000000,0x00800040,0x23a01248,0x128d03a0,0x008d03c0,
-0x00800040,0x24e01a48,0x128d0ba0,0x008d04c0,0x00800040,0x23a01248,0x128d03a0,0x008d0400,
-0x00800040,0x23a01248,0x128d03a0,0x008d04e0,0x04600002,0x23001248,0x128d03a0,0x008d03b0,
-0x00600040,0x22e01208,0x128d03a0,0x008d03b0,0x00600001,0x23201268,0x008d0300,0x00000000,
-0x606d2140,0x171717ad,0x04400002,0x22a01a48,0x1a690320,0x00690328,0x00200040,0x22e00208,
-0x024502e0,0x004502e8,0x00400001,0x23401268,0x006902a0,0x00000000,0x00000040,0x22c00208,
-0x020002e0,0x000002e4,0x04200002,0x23601a48,0x1a450340,0x00450344,0x00000040,0x26e80208,
-0x020006e8,0x000002c0,0x04000002,0x23801248,0x12000360,0x00000362,0x00200001,0x23c01248,
-0x00000380,0x00000000,0x04000002,0x26ec1208,0x020003c0,0x000006ec,0x00000040,0x27440208,
-0x120006e8,0x000000a4,0x04000010,0x20000200,0x02000744,0x000006e0,0x00010020,0x34000004,
-0x0e001400,0x00000030,0x00000001,0x26d80208,0x00000744,0x00000000,0x00000001,0x46ce1e88,
-0x00000000,0x00010001,0x00000001,0x26dc0208,0x000006ec,0x00000000,0x20005601,0x003d6507,
-0x20005601,0x003b6307,0x20005601,0x003d6107,0x20005601,0x003b5f07,0x03000010,0x20000200,
-0x020006f0,0x000006d8,0x00a00040,0x2ba02268,0x228d08c0,0x008d4cc0,0x00a00040,0x2b602268,
-0x228d08a0,0x008d4ca0,0x00a00040,0x2b202268,0x228d0880,0x008d4c80,0x00a00040,0x2ae02268,
-0x228d0860,0x008d4c60,0x00a00040,0x2a602268,0x228d0820,0x008d4c20,0x00a00040,0x2aa02268,
-0x228d0840,0x008d4c40,0x00a00040,0x29e02268,0x228d07e0,0x008d4be0,0x00a00040,0x2a202268,
-0x228d0800,0x008d4c00,0x00010020,0x34000004,0x0e001400,0x00000548,0x00800040,0x22e01a68,
-0x1a4009e0,0x004009e2,0x00800040,0x29e01a68,0x1a4009e0,0x004049e2,0x00800040,0x23001a68,
-0x1a400a20,0x00400a22,0x00800040,0x2a001a68,0x1a400a20,0x00404a22,0x00800040,0x23401a68,
-0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x2a401a68,
-0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68,0x1a400a60,0x00404a62,0x00800040,0x2ac01a68,
-0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68,0x1a400b60,0x00404b62,0x00800040,0x2a801a68,
-0x1a400b20,0x00404b22,0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2,0x00a00008,0x24a01a68,
-0x1e8d09e0,0x00010001,0x00a00008,0x24e01a68,0x1e8d0a20,0x00010001,0x00a00008,0x25601a68,
-0x1e8d0aa0,0x00010001,0x00a00008,0x25201a68,0x1e8d0a60,0x00010001,0x00800040,0x23601a68,
-0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2,0x00800040,0x23801a68,
-0x1a400b20,0x00400b22,0x00800040,0x23a01a68,0x1a400b60,0x00400b62,0x00a00001,0x29e01a48,
-0x008d24a0,0x00000000,0x00a00001,0x2a201a48,0x008d24e0,0x00000000,0x00a00001,0x2aa01a48,
-0x008d2560,0x00000000,0x00a00001,0x2a601a48,0x008d2520,0x00000000,0x00600040,0x43e01a68,
-0x1a6002e0,0x006002e4,0x00600040,0x44001a68,0x1a600320,0x00600324,0x00600040,0x4b001a68,
-0x1a600320,0x00604324,0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4,0x00600040,0x44201a68,
-0x1a600360,0x00600364,0x00600040,0x4b201a68,0x1a600360,0x00604364,0x00600040,0x4b401a68,
-0x1a6003a0,0x006043a4,0x00600040,0x44401a68,0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,
-0x1a6002e2,0x006002e6,0x00600040,0x44021a68,0x1a600322,0x00600326,0x00600040,0x4b021a68,
-0x1a600322,0x00604326,0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6,0x00600040,0x44221a68,
-0x1a600362,0x00600366,0x00600040,0x4b221a68,0x1a600362,0x00604366,0x00600040,0x4b421a68,
-0x1a6003a2,0x006043a6,0x00600040,0x44421a68,0x1a6003a2,0x006003a6,0x00800040,0x23401a68,
-0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x23001a68,
-0x1a400a20,0x00400a22,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x24601a68,
-0x1a4003e0,0x004003e2,0x00a00008,0x25a01a68,0x1e8d0ae0,0x00010001,0x00a00008,0x25e01a68,
-0x1e8d0b20,0x00010001,0x00800040,0x24801a68,0x1a400420,0x00400422,0x00800040,0x23801a68,
-0x1a400320,0x00400322,0x00800040,0x23601a68,0x1a4002e0,0x004002e2,0x00800040,0x2b601a68,
-0x1a4003e0,0x004043e2,0x00800040,0x2b801a68,0x1a400420,0x00404422,0x00a00001,0x2ae01a48,
-0x008d25a0,0x00000000,0x00a00001,0x2b201a48,0x008d25e0,0x00000000,0x00800040,0x22a01a68,
-0x1a400460,0x00400462,0x00800040,0x2ba01a68,0x1a400460,0x00404462,0x00800040,0x23a01a48,
-0x1a400360,0x00400362,0x00a00008,0x26201a68,0x1e8d0b60,0x00010001,0x0080000c,0x24401a28,
-0x1e8d02a0,0x00010001,0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23601a68,
-0x1a400ae0,0x00400ae2,0x00a00008,0x26601a68,0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48,
-0x008d2620,0x00000000,0x00800001,0x44800a48,0x008d2440,0x00000000,0x00800040,0x23c01a48,
-0x1a400360,0x00400362,0x00a00001,0x2ba01a48,0x008d2660,0x00000000,0x00800040,0x24001a48,
-0x1a400b60,0x00400b62,0x00800001,0x24c01248,0x00400480,0x00000000,0x00800040,0x23a01248,
-0x128d03a0,0x008d03c0,0x00800040,0x24e01a48,0x128d0ba0,0x008d04c0,0x00800040,0x23a01248,
-0x128d03a0,0x008d0400,0x00800040,0x23a01248,0x128d03a0,0x008d04e0,0x04600002,0x23001248,
-0x128d03a0,0x008d03b0,0x00600040,0x22e01208,0x128d03a0,0x008d03b0,0x00600001,0x23201268,
-0x008d0300,0x00000000,0x606d2140,0x171717ad,0x04400002,0x22a01a48,0x1a690320,0x00690328,
-0x00200040,0x22e00208,0x024502e0,0x004502e8,0x00400001,0x23401268,0x006902a0,0x00000000,
-0x00000040,0x22c00208,0x020002e0,0x000002e4,0x04200002,0x23601a48,0x1a450340,0x00450344,
-0x00000040,0x26f00208,0x020006f0,0x000002c0,0x04000002,0x23801248,0x12000360,0x00000362,
-0x00200001,0x23c01248,0x00000380,0x00000000,0x04000002,0x26f41208,0x020003c0,0x000006f4,
-0x03000010,0x20000200,0x020006f0,0x000006d8,0x00a00040,0x2a602268,0x228d0920,0x008d4c20,
-0x00a00040,0x29e02268,0x228d08e0,0x008d4be0,0x00a00040,0x2aa02268,0x228d0940,0x008d4c40,
-0x00a00040,0x2b602268,0x228d09a0,0x008d4ca0,0x00a00040,0x2ae02268,0x228d0960,0x008d4c60,
-0x00a00040,0x2ba02268,0x228d09c0,0x008d4cc0,0x00a00040,0x2b202268,0x228d0980,0x008d4c80,
-0x00a00040,0x2a202268,0x228d0900,0x008d4c00,0x00010020,0x34000004,0x0e001400,0x00000548,
-0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x29e01a68,0x1a4009e0,0x004049e2,
-0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x2a001a68,0x1a400a20,0x00404a22,
-0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,
-0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68,0x1a400a60,0x00404a62,
-0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68,0x1a400b60,0x00404b62,
-0x00800040,0x2a801a68,0x1a400b20,0x00404b22,0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2,
-0x00a00008,0x24a01a68,0x1e8d09e0,0x00010001,0x00a00008,0x24e01a68,0x1e8d0a20,0x00010001,
-0x00a00008,0x25601a68,0x1e8d0aa0,0x00010001,0x00a00008,0x25201a68,0x1e8d0a60,0x00010001,
-0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2,
-0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23a01a68,0x1a400b60,0x00400b62,
-0x00a00001,0x29e01a48,0x008d24a0,0x00000000,0x00a00001,0x2a201a48,0x008d24e0,0x00000000,
-0x00a00001,0x2aa01a48,0x008d2560,0x00000000,0x00a00001,0x2a601a48,0x008d2520,0x00000000,
-0x00600040,0x43e01a68,0x1a6002e0,0x006002e4,0x00600040,0x44001a68,0x1a600320,0x00600324,
-0x00600040,0x4b001a68,0x1a600320,0x00604324,0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4,
-0x00600040,0x44201a68,0x1a600360,0x00600364,0x00600040,0x4b201a68,0x1a600360,0x00604364,
-0x00600040,0x4b401a68,0x1a6003a0,0x006043a4,0x00600040,0x44401a68,0x1a6003a0,0x006003a4,
-0x00600040,0x43e21a68,0x1a6002e2,0x006002e6,0x00600040,0x44021a68,0x1a600322,0x00600326,
-0x00600040,0x4b021a68,0x1a600322,0x00604326,0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6,
-0x00600040,0x44221a68,0x1a600362,0x00600366,0x00600040,0x4b221a68,0x1a600362,0x00604366,
-0x00600040,0x4b421a68,0x1a6003a2,0x006043a6,0x00600040,0x44421a68,0x1a6003a2,0x006003a6,
-0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,
-0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,
-0x00800040,0x24601a68,0x1a4003e0,0x004003e2,0x00a00008,0x25a01a68,0x1e8d0ae0,0x00010001,
-0x00a00008,0x25e01a68,0x1e8d0b20,0x00010001,0x00800040,0x24801a68,0x1a400420,0x00400422,
-0x00800040,0x23801a68,0x1a400320,0x00400322,0x00800040,0x23601a68,0x1a4002e0,0x004002e2,
-0x00800040,0x2b601a68,0x1a4003e0,0x004043e2,0x00800040,0x2b801a68,0x1a400420,0x00404422,
-0x00a00001,0x2ae01a48,0x008d25a0,0x00000000,0x00a00001,0x2b201a48,0x008d25e0,0x00000000,
-0x00800040,0x22a01a68,0x1a400460,0x00400462,0x00800040,0x2ba01a68,0x1a400460,0x00404462,
-0x00800040,0x23a01a48,0x1a400360,0x00400362,0x00a00008,0x26201a68,0x1e8d0b60,0x00010001,
-0x0080000c,0x24401a28,0x1e8d02a0,0x00010001,0x00800040,0x23801a68,0x1a400b20,0x00400b22,
-0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00a00008,0x26601a68,0x1e8d0ba0,0x00010001,
-0x00a00001,0x2b601a48,0x008d2620,0x00000000,0x00800001,0x44800a48,0x008d2440,0x00000000,
-0x00800040,0x23c01a48,0x1a400360,0x00400362,0x00a00001,0x2ba01a48,0x008d2660,0x00000000,
-0x00800040,0x24001a48,0x1a400b60,0x00400b62,0x00800001,0x24c01248,0x00400480,0x00000000,
-0x00800040,0x23a01248,0x128d03a0,0x008d03c0,0x00800040,0x24e01a48,0x128d0ba0,0x008d04c0,
-0x00800040,0x23a01248,0x128d03a0,0x008d0400,0x00800040,0x23a01248,0x128d03a0,0x008d04e0,
-0x04600002,0x23001248,0x128d03a0,0x008d03b0,0x00600040,0x22e01208,0x128d03a0,0x008d03b0,
-0x00600001,0x23201268,0x008d0300,0x00000000,0x606d2140,0x171717ad,0x04400002,0x22a01a48,
-0x1a690320,0x00690328,0x00200040,0x22e00208,0x024502e0,0x004502e8,0x00400001,0x23401268,
-0x006902a0,0x00000000,0x00000040,0x22c00208,0x020002e0,0x000002e4,0x04200002,0x23601a48,
-0x1a450340,0x00450344,0x00000040,0x26f00208,0x020006f0,0x000002c0,0x04000002,0x23801248,
-0x12000360,0x00000362,0x00200001,0x23c01248,0x00000380,0x00000000,0x04000002,0x26f41208,
-0x020003c0,0x000006f4,0x00000040,0x27440208,0x120006f0,0x000000a4,0x04000010,0x20000200,
-0x02000744,0x000006d8,0x00010020,0x34000004,0x0e001400,0x00000030,0x00000001,0x26d80208,
-0x00000744,0x00000000,0x00000001,0x46ce1e88,0x00000000,0x00020002,0x00000001,0x26dc0208,
-0x000006f4,0x00000000,0x20205601,0x00396100,0x20205601,0x00395f00,0x20285601,0x00396500,
-0x20285601,0x00396300,0x00a00040,0x2da02268,0x228d0c40,0x008d07c0,0x00a00040,0x2d602268,
-0x228d0c20,0x008d07a0,0x00a00040,0x2ce02268,0x228d0be0,0x008d0760,0x00a00040,0x2d202268,
-0x228d0c00,0x008d0780,0x80800040,0x4c401a88,0x22400da0,0x00004740,0x80800040,0x4c201a88,
-0x22400d60,0x00004740,0x80800040,0x4be01a88,0x22400ce0,0x00004740,0x80800040,0x4c001a88,
-0x22400d20,0x00004740,0x80800040,0x4c411a88,0x22400da2,0x00004740,0x80800040,0x4c211a88,
-0x22400d62,0x00004740,0x80800040,0x4be11a88,0x22400ce2,0x00004740,0x80800040,0x4c011a88,
-0x22400d22,0x00004740,0x00a00040,0x2da02268,0x228d0cc0,0x008d07c0,0x00a00040,0x2d602268,
-0x228d0ca0,0x008d07a0,0x00a00040,0x2ce02268,0x228d0c60,0x008d0760,0x00a00040,0x2d202268,
-0x228d0c80,0x008d0780,0x80800040,0x4cc01a88,0x22400da0,0x00004740,0x80800040,0x4ca01a88,
-0x22400d60,0x00004740,0x80800040,0x4c601a88,0x22400ce0,0x00004740,0x80800040,0x4c801a88,
-0x22400d20,0x00004740,0x80800040,0x4cc11a88,0x22400da2,0x00004740,0x80800040,0x4ca11a88,
-0x22400d62,0x00004740,0x80800040,0x4c611a88,0x22400ce2,0x00004740,0x80800040,0x4c811a88,
-0x22400d22,0x00004740,0x03000010,0x20000200,0x020006f8,0x000006d8,0x00a00040,0x2aa02268,
-0x228d0840,0x008d4c40,0x00a00040,0x2a602268,0x228d0820,0x008d4c20,0x00a00040,0x29e02268,
-0x228d07e0,0x008d4be0,0x00a00040,0x2a202268,0x228d0800,0x008d4c00,0x00a00040,0x2ba02268,
-0x228d08c0,0x008d4cc0,0x00a00040,0x2b602268,0x228d08a0,0x008d4ca0,0x00a00040,0x2ae02268,
-0x228d0860,0x008d4c60,0x00a00040,0x2b202268,0x228d0880,0x008d4c80,0x00010020,0x34000004,
-0x0e001400,0x00000548,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x29e01a68,
-0x1a4009e0,0x004049e2,0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x2a001a68,
-0x1a400a20,0x00404a22,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,
-0x1a400a60,0x00400a62,0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68,
-0x1a400a60,0x00404a62,0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68,
-0x1a400b60,0x00404b62,0x00800040,0x2a801a68,0x1a400b20,0x00404b22,0x00800040,0x2a601a68,
-0x1a400ae0,0x00404ae2,0x00a00008,0x24a01a68,0x1e8d09e0,0x00010001,0x00a00008,0x24e01a68,
-0x1e8d0a20,0x00010001,0x00a00008,0x25601a68,0x1e8d0aa0,0x00010001,0x00a00008,0x25201a68,
-0x1e8d0a60,0x00010001,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68,
-0x1a400ba0,0x00400ba2,0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23a01a68,
-0x1a400b60,0x00400b62,0x00a00001,0x29e01a48,0x008d24a0,0x00000000,0x00a00001,0x2a201a48,
-0x008d24e0,0x00000000,0x00a00001,0x2aa01a48,0x008d2560,0x00000000,0x00a00001,0x2a601a48,
-0x008d2520,0x00000000,0x00600040,0x43e01a68,0x1a6002e0,0x006002e4,0x00600040,0x44001a68,
-0x1a600320,0x00600324,0x00600040,0x4b001a68,0x1a600320,0x00604324,0x00600040,0x4ae01a68,
-0x1a6002e0,0x006042e4,0x00600040,0x44201a68,0x1a600360,0x00600364,0x00600040,0x4b201a68,
-0x1a600360,0x00604364,0x00600040,0x4b401a68,0x1a6003a0,0x006043a4,0x00600040,0x44401a68,
-0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,0x1a6002e2,0x006002e6,0x00600040,0x44021a68,
-0x1a600322,0x00600326,0x00600040,0x4b021a68,0x1a600322,0x00604326,0x00600040,0x4ae21a68,
-0x1a6002e2,0x006042e6,0x00600040,0x44221a68,0x1a600362,0x00600366,0x00600040,0x4b221a68,
-0x1a600362,0x00604366,0x00600040,0x4b421a68,0x1a6003a2,0x006043a6,0x00600040,0x44421a68,
-0x1a6003a2,0x006003a6,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,
-0x1a400a60,0x00400a62,0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x22e01a68,
-0x1a4009e0,0x004009e2,0x00800040,0x24601a68,0x1a4003e0,0x004003e2,0x00a00008,0x25a01a68,
-0x1e8d0ae0,0x00010001,0x00a00008,0x25e01a68,0x1e8d0b20,0x00010001,0x00800040,0x24801a68,
-0x1a400420,0x00400422,0x00800040,0x23801a68,0x1a400320,0x00400322,0x00800040,0x23601a68,
-0x1a4002e0,0x004002e2,0x00800040,0x2b601a68,0x1a4003e0,0x004043e2,0x00800040,0x2b801a68,
-0x1a400420,0x00404422,0x00a00001,0x2ae01a48,0x008d25a0,0x00000000,0x00a00001,0x2b201a48,
-0x008d25e0,0x00000000,0x00800040,0x22a01a68,0x1a400460,0x00400462,0x00800040,0x2ba01a68,
-0x1a400460,0x00404462,0x00800040,0x23a01a48,0x1a400360,0x00400362,0x00a00008,0x26201a68,
-0x1e8d0b60,0x00010001,0x0080000c,0x24401a28,0x1e8d02a0,0x00010001,0x00800040,0x23801a68,
-0x1a400b20,0x00400b22,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00a00008,0x26601a68,
-0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48,0x008d2620,0x00000000,0x00800001,0x44800a48,
-0x008d2440,0x00000000,0x00800040,0x23c01a48,0x1a400360,0x00400362,0x00a00001,0x2ba01a48,
-0x008d2660,0x00000000,0x00800040,0x24001a48,0x1a400b60,0x00400b62,0x00800001,0x24c01248,
-0x00400480,0x00000000,0x00800040,0x23a01248,0x128d03a0,0x008d03c0,0x00800040,0x24e01a48,
-0x128d0ba0,0x008d04c0,0x00800040,0x23a01248,0x128d03a0,0x008d0400,0x00800040,0x23a01248,
-0x128d03a0,0x008d04e0,0x04600002,0x23001248,0x128d03a0,0x008d03b0,0x00600040,0x22e01208,
-0x128d03a0,0x008d03b0,0x00600001,0x23201268,0x008d0300,0x00000000,0x606d2140,0x171717ad,
-0x04400002,0x22a01a48,0x1a690320,0x00690328,0x00200040,0x22e00208,0x024502e0,0x004502e8,
-0x00400001,0x23401268,0x006902a0,0x00000000,0x00000040,0x22c00208,0x020002e0,0x000002e4,
-0x04200002,0x23601a48,0x1a450340,0x00450344,0x00000040,0x26f80208,0x020006f8,0x000002c0,
-0x04000002,0x23801248,0x12000360,0x00000362,0x00200001,0x23c01248,0x00000380,0x00000000,
-0x04000002,0x26fc1208,0x020003c0,0x000006fc,0x00800001,0x2c200208,0x00000738,0x00000000,
-0x00800001,0x2be00208,0x00000738,0x00000000,0x00800001,0x2ca00208,0x0000073c,0x00000000,
-0x00800001,0x2c600208,0x0000073c,0x00000000,0x00a00040,0x2da02268,0x228d0c40,0x008d07c0,
-0x00a00040,0x2d602268,0x228d0c20,0x008d07a0,0x00a00040,0x2ce02268,0x228d0be0,0x008d0760,
-0x00a00040,0x2d202268,0x228d0c00,0x008d0780,0x80800040,0x4c401a88,0x22400da0,0x00004740,
-0x80800040,0x4c201a88,0x22400d60,0x00004740,0x80800040,0x4be01a88,0x22400ce0,0x00004740,
-0x80800040,0x4c001a88,0x22400d20,0x00004740,0x80800040,0x4c411a88,0x22400da2,0x00004740,
-0x80800040,0x4c211a88,0x22400d62,0x00004740,0x80800040,0x4be11a88,0x22400ce2,0x00004740,
-0x80800040,0x4c011a88,0x22400d22,0x00004740,0x00a00040,0x2da02268,0x228d0cc0,0x008d07c0,
-0x00a00040,0x2d602268,0x228d0ca0,0x008d07a0,0x00a00040,0x2ce02268,0x228d0c60,0x008d0760,
-0x00a00040,0x2d202268,0x228d0c80,0x008d0780,0x80800040,0x4cc01a88,0x22400da0,0x00004740,
-0x80800040,0x4ca01a88,0x22400d60,0x00004740,0x80800040,0x4c601a88,0x22400ce0,0x00004740,
-0x80800040,0x4c801a88,0x22400d20,0x00004740,0x80800040,0x4cc11a88,0x22400da2,0x00004740,
-0x80800040,0x4ca11a88,0x22400d62,0x00004740,0x80800040,0x4c611a88,0x22400ce2,0x00004740,
-0x80800040,0x4c811a88,0x22400d22,0x00004740,0x03000010,0x20000200,0x020006f8,0x000006d8,
-0x00a00040,0x2aa02268,0x228d0940,0x008d4c40,0x00a00040,0x2a602268,0x228d0920,0x008d4c20,
-0x00a00040,0x29e02268,0x228d08e0,0x008d4be0,0x00a00040,0x2a202268,0x228d0900,0x008d4c00,
-0x00a00040,0x2ba02268,0x228d09c0,0x008d4cc0,0x00a00040,0x2b602268,0x228d09a0,0x008d4ca0,
-0x00a00040,0x2ae02268,0x228d0960,0x008d4c60,0x00a00040,0x2b202268,0x228d0980,0x008d4c80,
-0x00010020,0x34000004,0x0e001400,0x00000548,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,
-0x00800040,0x29e01a68,0x1a4009e0,0x004049e2,0x00800040,0x23001a68,0x1a400a20,0x00400a22,
-0x00800040,0x2a001a68,0x1a400a20,0x00404a22,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,
-0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2,
-0x00800040,0x2a201a68,0x1a400a60,0x00404a62,0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2,
-0x00800040,0x2aa01a68,0x1a400b60,0x00404b62,0x00800040,0x2a801a68,0x1a400b20,0x00404b22,
-0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2,0x00a00008,0x24a01a68,0x1e8d09e0,0x00010001,
-0x00a00008,0x24e01a68,0x1e8d0a20,0x00010001,0x00a00008,0x25601a68,0x1e8d0aa0,0x00010001,
-0x00a00008,0x25201a68,0x1e8d0a60,0x00010001,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,
-0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2,0x00800040,0x23801a68,0x1a400b20,0x00400b22,
-0x00800040,0x23a01a68,0x1a400b60,0x00400b62,0x00a00001,0x29e01a48,0x008d24a0,0x00000000,
-0x00a00001,0x2a201a48,0x008d24e0,0x00000000,0x00a00001,0x2aa01a48,0x008d2560,0x00000000,
-0x00a00001,0x2a601a48,0x008d2520,0x00000000,0x00600040,0x43e01a68,0x1a6002e0,0x006002e4,
-0x00600040,0x44001a68,0x1a600320,0x00600324,0x00600040,0x4b001a68,0x1a600320,0x00604324,
-0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4,0x00600040,0x44201a68,0x1a600360,0x00600364,
-0x00600040,0x4b201a68,0x1a600360,0x00604364,0x00600040,0x4b401a68,0x1a6003a0,0x006043a4,
-0x00600040,0x44401a68,0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,0x1a6002e2,0x006002e6,
-0x00600040,0x44021a68,0x1a600322,0x00600326,0x00600040,0x4b021a68,0x1a600322,0x00604326,
-0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6,0x00600040,0x44221a68,0x1a600362,0x00600366,
-0x00600040,0x4b221a68,0x1a600362,0x00604366,0x00600040,0x4b421a68,0x1a6003a2,0x006043a6,
-0x00600040,0x44421a68,0x1a6003a2,0x006003a6,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,
-0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x23001a68,0x1a400a20,0x00400a22,
-0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x24601a68,0x1a4003e0,0x004003e2,
-0x00a00008,0x25a01a68,0x1e8d0ae0,0x00010001,0x00a00008,0x25e01a68,0x1e8d0b20,0x00010001,
-0x00800040,0x24801a68,0x1a400420,0x00400422,0x00800040,0x23801a68,0x1a400320,0x00400322,
-0x00800040,0x23601a68,0x1a4002e0,0x004002e2,0x00800040,0x2b601a68,0x1a4003e0,0x004043e2,
-0x00800040,0x2b801a68,0x1a400420,0x00404422,0x00a00001,0x2ae01a48,0x008d25a0,0x00000000,
-0x00a00001,0x2b201a48,0x008d25e0,0x00000000,0x00800040,0x22a01a68,0x1a400460,0x00400462,
-0x00800040,0x2ba01a68,0x1a400460,0x00404462,0x00800040,0x23a01a48,0x1a400360,0x00400362,
-0x00a00008,0x26201a68,0x1e8d0b60,0x00010001,0x0080000c,0x24401a28,0x1e8d02a0,0x00010001,
-0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,
-0x00a00008,0x26601a68,0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48,0x008d2620,0x00000000,
-0x00800001,0x44800a48,0x008d2440,0x00000000,0x00800040,0x23c01a48,0x1a400360,0x00400362,
-0x00a00001,0x2ba01a48,0x008d2660,0x00000000,0x00800040,0x24001a48,0x1a400b60,0x00400b62,
-0x00800001,0x24c01248,0x00400480,0x00000000,0x00800040,0x23a01248,0x128d03a0,0x008d03c0,
-0x00800040,0x24e01a48,0x128d0ba0,0x008d04c0,0x00800040,0x23a01248,0x128d03a0,0x008d0400,
-0x00800040,0x23a01248,0x128d03a0,0x008d04e0,0x04600002,0x23001248,0x128d03a0,0x008d03b0,
-0x00600040,0x22e01208,0x128d03a0,0x008d03b0,0x00600001,0x23201268,0x008d0300,0x00000000,
-0x606d2140,0x171717ad,0x04400002,0x22a01a48,0x1a690320,0x00690328,0x00200040,0x22e00208,
-0x024502e0,0x004502e8,0x00400001,0x23401268,0x006902a0,0x00000000,0x00000040,0x22c00208,
-0x020002e0,0x000002e4,0x04200002,0x23601a48,0x1a450340,0x00450344,0x00000040,0x26f80208,
-0x020006f8,0x000002c0,0x04000002,0x23801248,0x12000360,0x00000362,0x00200001,0x23c01248,
-0x00000380,0x00000000,0x04000002,0x26fc1208,0x020003c0,0x000006fc,0x00000040,0x27440208,
-0x120006f8,0x000000a4,0x04000010,0x20000200,0x02000744,0x000006d8,0x00010020,0x34000004,
-0x0e001400,0x00000030,0x00000001,0x26d80208,0x00000744,0x00000000,0x00000001,0x46ce1e88,
-0x00000000,0x00090009,0x00000001,0x26dc0208,0x000006fc,0x00000000,0x00000041,0x22a01208,
-0x160000dc,0x08a008a0,0x00000041,0x22e41208,0x160000dc,0x03c003c0,0x00000041,0x23201208,
-0x160000dc,0x02800280,0x00000040,0x22c00208,0x160002a0,0x00800080,0x00000040,0x23000208,
-0x160002e4,0x00800080,0x00000040,0x23400208,0x16000320,0x00800080,0x0000000c,0x22e00208,
-0x160002c0,0x00080008,0x0000000c,0x27480208,0x16000300,0x00080008,0x0000000c,0x274c0208,
-0x16000340,0x00080008,0x04000010,0x20000200,0x020006dc,0x000002e0,0x00010020,0x34000004,
-0x0e001400,0x000000a0,0x04000010,0x20000200,0x020006dc,0x00000748,0x00010020,0x34000004,
-0x0e001400,0x00000060,0x04000010,0x20000200,0x020006dc,0x0000074c,0x00010020,0x34000004,
-0x0e001400,0x00000020,0x00000001,0x27501608,0x00000000,0x00030003,0x00000020,0x34000004,
-0x0e001400,0x00000050,0x00000001,0x27501608,0x00000000,0x00020002,0x00000020,0x34000004,
-0x0e001400,0x00000030,0x00000001,0x27501608,0x00000000,0x00010001,0x00000020,0x34000004,
-0x0e001400,0x00000010,0x00000001,0x27501608,0x00000000,0x00000000,0x00000041,0x22c01228,
-0x160006c2,0x00020002,0x00000041,0x23441228,0x160006c0,0x00020002,0x00000001,0x62a0028c,
-0x00000750,0x00000000,0x00800001,0x22e01608,0x00000000,0x00000000,0x00000040,0x22000204,
-0x060002d0,0x020a0300,0x00000001,0x43002288,0x000006ce,0x00000000,0x00000040,0x23200a28,
-0x1e0002c0,0x00010001,0x00000040,0x23600a28,0x1e000344,0x00010001,0x00000001,0x42ee2288,
-0x000002a0,0x00000000,0x00000040,0x23140208,0x120006d8,0x000000d4,0x00000041,0x23400a28,
-0x12000320,0x000006cc,0x00000040,0x23800a28,0x0a000340,0x00000360,0x00000041,0x23a00a28,
-0x1e000380,0x00400040,0x00000008,0x23c80a08,0x1e0003a0,0x00040004,0x0a800033,0x00017054,
-0x000023c2,0x00000000,0x20004d01,0x00007e07,0x07000031,0x20003a00,0x06000fc0,0x82000010,
-0x20004d01,0x00007f07,0x07000031,0x20003a00,0x06000fe0,0x82000010,0x2000007d,0x2000000c,
-0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c,
-0x00200001,0x24ec1248,0x00450020,0x00000000,0x00000005,0x22a6124c,0x16000006,0x07ff07ff,
-0x00000005,0x22a4124c,0x16000004,0x07ff07ff,0x00000040,0x22c01228,0x160004ec,0x000f000f,
-0x00000005,0x24001260,0x160002a6,0x00010001,0x0000000c,0x24e81248,0x160002a6,0x00010001,
-0x0000000c,0x44f00a48,0x1e0002c0,0x00040004,0x00000048,0x24e01248,0x1e0002a4,0x00020002,
-0x00000001,0x24e61248,0x000004e8,0x00000000,0x00000041,0x22e01228,0x120004e8,0x000004f0,
-0x05000010,0x20001240,0x120004e0,0x000004f0,0x00000001,0x24e41248,0x000004e0,0x00000000,
-0x00000040,0x24f40a08,0x120002e0,0x000004e0,0x00010020,0x34000004,0x0e001400,0x00000030,
-0x0a600032,0x22e03a08,0x06000000,0x0219e000,0x20004d01,0x00171707,0x20004d01,0x00007d07,
-0x07000031,0x20003a00,0x06000fa0,0x82000010,0x06000010,0x20002260,0x1e000025,0x00000000,
-0x00200009,0x24f81248,0x164504e4,0x00040004,0x00010020,0x34000004,0x0e001400,0x000000c0,
-0x20004d01,0x00001707,0x00000040,0x22000204,0x060002b8,0x02190000,0x20086001,0x00001700,
-0x00000001,0x22e41208,0x000004e8,0x00000000,0x00000001,0x22e01208,0x000004e0,0x00000000,
-0x0c600031,0x23003a0c,0x000002e0,0x00000200,0x00400001,0x22c0228c,0x00690300,0x00000000,
-0x00000041,0x22a42228,0x1e0002c0,0x00400040,0x00000040,0x23200a28,0x1e0002a4,0x00800080,
-0x00000040,0x22001240,0x16000320,0x00200020,0x00800001,0x20a02288,0x00208000,0x00000000,
-0x00800001,0x20b02288,0x00208010,0x00000000,0x00800001,0x20c02288,0x00208020,0x00000000,
-0x00200005,0x22b01228,0x164504e4,0x00010001,0x00000001,0x22a41e68,0x00000000,0x00010001,
-0x00600001,0x22c01648,0x00000000,0x00000000,0x00200040,0x22e01228,0x164504f8,0x00100010,
-0x00600001,0x23401648,0x00000000,0x00000000,0x00800001,0x25801e08,0x00000000,0x00000000,
-0x03200010,0x20000a20,0x1e4502b0,0x00000000,0x00800001,0x26001e08,0x00000000,0x00000000,
-0x00800001,0x26401e08,0x00000000,0x00000000,0x00600001,0x26281648,0x00000000,0x7f7f7f7f,
-0x00600001,0x26401648,0x00000000,0x81818181,0x00210002,0x22c01a48,0x1e0002a4,0x00000000,
-0x00000001,0x45bd1e88,0x00000000,0x00000000,0x00800001,0x25c01e08,0x00000000,0x00000000,
-0x00000001,0x25140e28,0x00000000,0x08060504,0x00800001,0x26702288,0x008d0628,0x00000000,
-0x2203eb10,0x00160007,0x00600001,0x22c02648,0x00000000,0x76543210,0x00800001,0x26602288,
-0x008d0640,0x00000000,0x00000001,0x25080e28,0x00000000,0x09010200,0x00000001,0x25100e28,
-0x00000000,0x03010002,0x00000001,0x45281688,0x00000000,0x00070007,0x00000001,0x22a61048,
-0x00000600,0x00000000,0x06200010,0x20000a20,0x124502e0,0x00450020,0x00600001,0x25601208,
-0x008d02c0,0x00000000,0x00600001,0x22c01648,0x00000000,0x00000000,0x00000001,0x25240e28,
-0x00000000,0x08060504,0x00000001,0x25200e28,0x00000000,0x03000201,0x00600001,0x25401e08,
-0x00000000,0x00000000,0x00000005,0x44fc1288,0x160002a6,0x00030003,0x00210002,0x25001a48,
-0x1e0002a4,0x00000000,0x00000001,0x25181e68,0x00000000,0x08070807,0x00000001,0x258c0608,
-0x00000000,0x00a83000,0x00000001,0x45a01e88,0x00000000,0x00020002,0x00200001,0x25881248,
-0x004504f8,0x00000000,0x00000001,0x46241e88,0x00000000,0x00880088,0x01000010,0x20002260,
-0x1e0004fc,0x00030003,0x00000005,0x22ac1228,0x12000500,0x00000502,0x00400001,0x26381648,
-0x00000000,0x7f7f7f7f,0x00000001,0x465e2288,0x000000a3,0x00000000,0x00200001,0x265c2288,
-0x004500a1,0x00000000,0x00000001,0x26541648,0x00000000,0x00000000,0x00000001,0x46272288,
-0x000005bd,0x00000000,0x00010002,0x23001a28,0x1e0002a4,0x00000000,0x01200010,0x20000a20,
-0x1e4502b0,0x00000000,0x00000001,0x25c00208,0x000000c8,0x00000000,0x00000005,0x65040a88,
-0x0a0002ac,0x00000300,0x00210002,0x22e01a48,0x1e0002a4,0x00000000,0x00200041,0x22e41248,
-0x164502e0,0x00100010,0x00200040,0x22e01248,0x164504f8,0x00100010,0x00200040,0x23001228,
-0x124504f8,0x004502e4,0x00200040,0x23200a28,0x1e450300,0x00100010,0x00000006,0x43022288,
-0x1e0005bc,0x00010001,0x03200010,0x20000a20,0x12450320,0x00450020,0x00210002,0x23401a48,
-0x1e0002a4,0x00000000,0x2203eb10,0x001a0007,0x00000001,0x22a61048,0x00000600,0x00000000,
-0x03200010,0x20001240,0x124502e0,0x00450020,0x00000005,0x450c1288,0x160002a6,0x00030003,
-0x00210002,0x22c01a48,0x1e0002a4,0x00000000,0x2203eb10,0x00160007,0x00000001,0x22a61048,
-0x00000600,0x00000000,0x00000005,0x23001248,0x160002a6,0x00030003,0x03000010,0x20001260,
-0x1e000300,0x00000000,0x00010001,0x45bc2288,0x00000302,0x00000000,0x01000010,0x20001260,
-0x1e0004e0,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000c8,0x20004d01,0x00001707,
-0x00000040,0x22000204,0x060002a0,0x02290000,0x00000001,0x22e8060c,0x00000000,0x000f0000,
-0x00000001,0x22e41228,0x0000058a,0x00000000,0x00000040,0x22e01228,0x1e000588,0xffffffff,
-0x0c600031,0x23003a0c,0x000002e0,0x00000200,0x00000040,0x22e01228,0x1e000588,0xfffcfffc,
-0x00000040,0x22000204,0x060002a0,0x02190001,0x0000000c,0x22e41228,0x1600058a,0x00010001,
-0x00000001,0x22e8060c,0x00000000,0x00070003,0x0c600031,0x23403a0c,0x000002e0,0x00000200,
-0x00800001,0x26402288,0x00600300,0x00000000,0x00800001,0x26602288,0x00650342,0x00000000,
-0x01000010,0x20001260,0x1e0004e8,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000c8,
-0x00000040,0x22a41228,0x1e000588,0xfff8fff8,0x20004d01,0x00001707,0x00000040,0x22000204,
-0x060002a0,0x02190000,0x20086001,0x1f001700,0x00000040,0x22e41228,0x1e00058a,0xffffffff,
-0x0000000c,0x22c01228,0x1600058a,0x00010001,0x20144001,0x00151700,0x0c600031,0x26803a0c,
-0x000002e0,0x00000200,0x00000040,0x22000204,0x060002a0,0x02190001,0x00000040,0x22e40a28,
-0x1e0002c0,0xffffffff,0x0c600031,0x26a03a0c,0x000002e0,0x00000200,0x00400001,0x26280208,
-0x00690688,0x00000000,0x00600001,0x26382288,0x00000637,0x00000000,0x00400001,0x26700208,
-0x006906a8,0x00000000,0x02000010,0x20001260,0x1e0004e0,0x00000000,0x00000001,0x22a41e68,
-0x00000000,0x00010001,0x02010010,0x20001260,0x1e0004e8,0x00000000,0x00010002,0x22c01a28,
-0x1e0002a4,0x00000000,0x01000010,0x20000a20,0x1e0002c0,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000030,0x00200001,0x26542288,0x004506a6,0x00000000,0x00000001,0x46272288,
-0x00000687,0x00000000,0x00000006,0x45bd2288,0x1e0005bd,0x00040004,0x00000005,0x22b01228,
-0x160004e8,0x00010001,0x02000010,0x20001260,0x1e0004e8,0x00000000,0x00000040,0x22a41228,
-0x160004e0,0x00010001,0x00000005,0x22ac1228,0x160004e0,0x00010001,0x00000001,0x22e01e68,
-0x00000000,0x00010001,0x05010010,0x20000a20,0x120002a4,0x000004f0,0x00000040,0x22c00a28,
-0x0a0002ac,0x000002b0,0x02010010,0x20000a20,0x1e0002c0,0x00020002,0x00010002,0x23001a28,
-0x1e0002e0,0x00000000,0x01000010,0x20000a20,0x1e000300,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000020,0x00200001,0x26380208,0x00450698,0x00000000,0x00000006,0x45bd2288,
-0x1e0005bd,0x00080008,0x02000010,0x20002260,0x1e0004fc,0x00000000,0x00000006,0x45bd2288,
-0x1e0005bd,0x00700070,0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x44e21e88,
-0x00000000,0x000f000f,0x00000020,0x34000004,0x0e001400,0x00000090,0x02000010,0x20002260,
-0x1e0004fc,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x44e21e88,
-0x00000000,0x00010001,0x00000020,0x34000004,0x0e001400,0x00000050,0x02000010,0x20002260,
-0x1e0004fc,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x44e21e88,
-0x00000000,0x00020002,0x00000020,0x34000004,0x0e001400,0x00000010,0x00000001,0x44e21e88,
-0x00000000,0x00030003,0x00000004,0x22a42228,0x000004e2,0x00000000,0x00000005,0x62c00a88,
-0x1e0002a4,0x00ff00ff,0x00000001,0x26002244,0x000002c0,0x00000000,0x00618005,0x36001044,
-0x168d1600,0x7fff7fff,0x00000009,0x22e00208,0x160004f4,0x00060006,0x00000040,0x22000204,
-0x060002d0,0x02480400,0x00000040,0x251c0228,0x1e0002e0,0xffc0ffc0,0x03000002,0x251c0a28,
-0x1e00051c,0x00000000,0x00000008,0x23080a08,0x1e00051c,0x00040004,0x0a800032,0x27403a6c,
-0x00000300,0x00000200,0x00000040,0x23200228,0x120004f4,0x000044f0,0x00000041,0x23400a28,
-0x1e000320,0x00400040,0x04000040,0x251c0a28,0x1e000340,0xffc0ffc0,0x00010020,0x34000004,
-0x0e001400,0x00000070,0x00000040,0x22a40228,0x120004f4,0x000044f0,0x00000040,0x22000204,
-0x060002d0,0x02280300,0x00000041,0x251c0a28,0x1e0002a4,0x00400040,0x03000002,0x251c0a28,
-0x1e00051c,0x00000000,0x00000008,0x22e80a08,0x1e00051c,0x00040004,0x0a800031,0x27003a6c,
-0x000002e0,0x00000200,0x00000020,0x34000004,0x0e001400,0x00000030,0x00000008,0x22e80a08,
-0x1e00051c,0x00040004,0x00000040,0x22000204,0x060002d0,0x02480400,0x0a800031,0x26c03a6c,
-0x000002e0,0x00000200,0x0020000c,0x23701208,0x16450724,0x00080008,0x0020000c,0x22b01208,
-0x16400762,0x00040004,0x0020000c,0x23b01208,0x16450724,0x000c000c,0x0020000c,0x22f01208,
-0x16400762,0x000c000c,0x03200010,0x20001260,0x1e4504e4,0x00000000,0x20005701,0x00302307,
-0x00200005,0x63800288,0x16450370,0x000f000f,0x00200005,0x62c00288,0x164502b0,0x000f000f,
-0x00200005,0x23c00208,0x164503b0,0x000f000f,0x00200005,0x23000208,0x164502f0,0x000f000f,
-0x20005701,0x002c1f07,0x20005701,0x002e2107,0x00200001,0x23a02288,0x00600380,0x00000000,
-0x00200001,0x22e02288,0x006002c0,0x00000000,0x00200009,0x22b00208,0x164503c0,0x00040004,
-0x00200009,0x23200208,0x16450300,0x00040004,0x00000040,0x22000204,0x060002a8,0x10782000,
-0x00800001,0x28a01608,0x00000000,0x00000000,0x00200006,0x62c02288,0x024503a0,0x004502b0,
-0x00200006,0x63402288,0x024502e0,0x00450320,0x00200001,0x23622288,0x006002c0,0x00000000,
-0x00200001,0x23602288,0x00600340,0x00000000,0x00210002,0x26501248,0x16450360,0x22222222,
-0x06000010,0x20002260,0x1e000504,0x00000000,0x20005701,0x00322507,0x0d600031,0x27c03a0c,
-0x000003e0,0x00000200,0x00010020,0x34000004,0x0e001400,0x00000280,0x00000040,0x22a40208,
-0x020006f4,0x00000734,0x01000010,0x20002260,0x1e000034,0x00000000,0x00000040,0x22c00208,
-0x020002a4,0x00000774,0x00000040,0x252c0208,0x120002c0,0x000007cc,0x00010020,0x34000004,
-0x0e001400,0x00000060,0x00600040,0x22e00208,0x168d0560,0x000a000a,0x00000001,0x25481608,
-0x00000000,0x00040004,0x05000002,0x25400208,0x020007b4,0x0000052c,0x00000040,0x22000204,
-0x060002bc,0x0210b700,0x00600009,0x23000208,0x168d02e0,0x00020002,0x0c600033,0x08e2a018,
-0x00002301,0x00000000,0x04000010,0x20000200,0x020007b4,0x0000052c,0x00010020,0x34000004,
-0x0e001400,0x000001b0,0x00000001,0x48cd1e88,0x00000000,0x00090009,0x00000040,0x22002240,
-0x160007a0,0x05100510,0x00000001,0x48ad1e88,0x00000000,0x00010001,0x00000001,0x48ae2288,
-0x0000078e,0x00000000,0x00000001,0x48ac2288,0x000008cd,0x00000000,0x00000006,0x22a42248,
-0x1e008000,0x22202220,0x00000040,0x23e00208,0x120004f4,0x000044f0,0x00000005,0x42c02288,
-0x1e0007a0,0x000f000f,0x00000001,0x28d40208,0x000007b4,0x00000000,0x00400001,0x28c01248,
-0x000002a4,0x00000000,0x00000009,0x22a40208,0x160004f4,0x00060006,0x00000040,0x22000204,
-0x060002d0,0x020a0400,0x00000009,0x24000208,0x160003e0,0x00060006,0x00400001,0x28c82288,
-0x000002c0,0x00000000,0x00000040,0x22c00228,0x1e0002a4,0xffc0ffc0,0x00000040,0x24200228,
-0x1e000400,0xffc0ffc0,0x20005601,0x00451b07,0x20005601,0x00451707,0x20005601,0x00451907,
-0x00000008,0x24480a08,0x1e000420,0x00040004,0x00000001,0x48cc2288,0x000008ad,0x00000000,
-0x00000008,0x24680a08,0x1e0002c0,0x00040004,0x0a800033,0x00017054,0x00002444,0x00000000,
-0x20005601,0x00451d07,0x00000040,0x22000204,0x060002d0,0x020a0400,0x0a800033,0x0001b054,
-0x00002464,0x00000000,0x0a600031,0x24803a08,0x06000000,0x0219e000,0x20004d01,0x00242407,
-0x20004d01,0x00007e07,0x07000031,0x20003a00,0x06000fc0,0x82000010,0x01000010,0x20002260,
-0x1e000034,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000c0,0x03000010,0x20002260,
-0x1e00050c,0x00000000,0x00000001,0x22ac1e68,0x00000000,0x00010001,0x00000005,0x22a41228,
-0x12000500,0x00000502,0x00010002,0x22c01a28,0x1e0002ac,0x00000000,0x01000005,0x20000a20,
-0x0a0002a4,0x000002c0,0x00010020,0x34000004,0x0e001400,0x00000060,0x00600040,0x22e00208,
-0x168d0560,0x000a000a,0x00000001,0x25401208,0x000007cc,0x00000000,0x00000001,0x25481608,
-0x00000000,0x00010001,0x00000040,0x22000204,0x060002bc,0x0210b700,0x00600009,0x23000208,
-0x168d02e0,0x00020002,0x0c600033,0x08e2a018,0x00002301,0x00000000,0x02000005,0x44ea2288,
-0x1e0007c0,0x00ff00ff,0x00000005,0x25302228,0x1e0007d8,0x00030003,0x00000001,0x25341608,
-0x00000000,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000050,0x00000040,0x22001240,
-0x16000530,0x05080508,0x00000001,0x24f21648,0x00000000,0x06060606,0x00400001,0x25342288,
-0x00008000,0x00000000,0x00000001,0x48cc1e88,0x00000000,0x00010001,0x00000020,0x34000004,
-0x0e001400,0x00000760,0x02000010,0x20002260,0x1e0004ea,0x00100010,0x00010020,0x34000004,
-0x0e001400,0x00000260,0x00200040,0x22b01228,0x164504f8,0x00080008,0x00000001,0x22c01e68,
-0x00000000,0x00010001,0x00200001,0x42a41688,0x00000000,0x00000000,0x00000001,0x48cc1e88,
-0x00000000,0x00040004,0x00000040,0x22e81228,0x160004f8,0x00100010,0x00000040,0x22ac1228,
-0x160004fa,0x00100010,0x00000001,0x42e01e88,0x00000000,0x00000000,0x04200010,0x20000a20,
-0x124502b0,0x00450020,0x00000001,0x24f21648,0x00000000,0x03030303,0x00210002,0x42a41a88,
-0x1e0002c0,0x00000000,0x00000040,0x42c22288,0x220002a4,0x000002a6,0x01000010,0x20002260,
-0x1e0002c2,0x00010001,0x00010001,0x48cc1e88,0x00000000,0x00020002,0x01000010,0x20002260,
-0x1e0002c2,0x00020002,0x00010001,0x48cc1e88,0x00000000,0x00010001,0x01000010,0x20001240,
-0x120007d0,0x000007d2,0x01010010,0x20001240,0x120007d4,0x000007d6,0x00010002,0x22e41a28,
-0x1e0002c0,0x00000000,0x05000010,0x20000a20,0x120002e8,0x000004ec,0x00010002,0x23001a28,
-0x1e0002c0,0x00000000,0x05000010,0x20000a20,0x120002ac,0x000004ee,0x00000005,0x22a40a28,
-0x0a0002e4,0x00000300,0x00010002,0x22c41a28,0x1e0002c0,0x00000000,0x00000005,0x22c80a28,
-0x0a0002a4,0x000002c4,0x02000005,0x20000a20,0x1e0002c8,0x00010001,0x00010001,0x42e01e88,
-0x00000000,0x00010001,0x01000010,0x20001240,0x120007d0,0x000007d4,0x01010010,0x20001240,
-0x120007d2,0x000007d6,0x00010002,0x23041a28,0x1e0002c0,0x00000000,0x00000005,0x23200a28,
-0x0a000304,0x00000300,0x00000005,0x23400a28,0x0a000320,0x000002c4,0x02000005,0x20000a20,
-0x1e000340,0x00010001,0x00010001,0x42e01e88,0x00000000,0x00010001,0x02000005,0x20002260,
-0x160002e0,0x00010001,0x00010001,0x48cc1e88,0x00000000,0x00010001,0x02000005,0x20002260,
-0x160002e0,0x00010001,0x00010001,0x44f31e88,0x00000000,0x00060006,0x00000020,0x34000004,
-0x0e001400,0x000004e0,0x0060000c,0x22e02208,0x168d07d0,0x00040004,0x00600005,0x49002288,
-0x1e8d07d0,0x000f000f,0x00000001,0x24f21648,0x00000000,0x00000000,0x00000001,0x25381608,
-0x00000000,0x00000000,0x00600005,0x63000288,0x168d02e0,0x000f000f,0x00600001,0x49012288,
-0x00600300,0x00000000,0x00000040,0x22001240,0x16000538,0x09000900,0x00000040,0x22a40208,
-0x16000538,0x00010001,0x00000001,0x22ac2228,0x00008000,0x00000000,0x00000040,0x22001240,
-0x160002a4,0x09000900,0x00600001,0x22c01648,0x00000000,0x00000000,0x01400010,0x20000a20,
-0x220002ac,0x00208000,0x00000001,0x22d41e68,0x00000000,0x00010001,0x00410002,0x22c01a48,
-0x1e0002d4,0x00000000,0x2203eb10,0x00160007,0x00000001,0x22e01048,0x00000600,0x00000000,
-0x00000005,0x23001208,0x160002e0,0x00070007,0x06000010,0x20000200,0x16000300,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000070,0x00000040,0x22001240,0x16000538,0x09000900,
-0x00000040,0x22002240,0x17e08000,0x05200520,0x00000001,0x42a42288,0x00008000,0x00000000,
-0x0000000c,0x22ac0208,0x16000538,0x00020002,0x00000040,0x22001240,0x160002ac,0x05340534,
-0x00000001,0xc0002288,0x000002a4,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000268,
-0x00000040,0x22a40208,0x16000538,0x00010001,0x00000040,0x22ac0208,0x16000538,0x00020002,
-0x00000040,0x22001240,0x160002a4,0x09000900,0x00000001,0x22c02228,0x00008000,0x00000000,
-0x00000040,0x22001240,0x160002ac,0x09000900,0x00600001,0x22e01648,0x00000000,0x00000000,
-0x01200010,0x20000a20,0x220002c0,0x00208000,0x00000001,0x22f01e68,0x00000000,0x00010001,
-0x00210002,0x22e01a48,0x1e0002f0,0x00000000,0x2203eb10,0x00170007,0x00000001,0x23001048,
-0x00000600,0x00000000,0x00000005,0x23201208,0x16000300,0x00030003,0x06000010,0x20000200,
-0x16000320,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000080,0x00000040,0x22a40208,
-0x16000538,0x00010001,0x00000040,0x22001240,0x160002a4,0x09000900,0x00000040,0x22002240,
-0x17e08000,0x05200520,0x00000001,0x42c02288,0x00008000,0x00000000,0x0000000c,0x22c40208,
-0x16000538,0x00020002,0x00000040,0x22001240,0x160002c4,0x05340534,0x00000001,0xc0002288,
-0x000002c0,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000110,0x00000040,0x22a40208,
-0x16000538,0x00020002,0x00000040,0x22001240,0x160002a4,0x09000900,0x02000010,0x20002220,
-0x22008000,0x00008001,0x00010020,0x34000004,0x0e001400,0x00000080,0x00000040,0x22a40208,
-0x16000538,0x00020002,0x00000040,0x22001240,0x160002a4,0x09000900,0x00000040,0x22002240,
-0x17e08000,0x05200520,0x00000001,0x42c02288,0x00008000,0x00000000,0x0000000c,0x22c40208,
-0x16000538,0x00020002,0x00000040,0x22001240,0x160002c4,0x05340534,0x00000001,0xc0002288,
-0x000002c0,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000050,0x00000040,0x22001240,
-0x16000530,0x05080508,0x00000001,0x42a42288,0x00008000,0x00000000,0x0000000c,0x22ac0208,
-0x16000538,0x00020002,0x00000040,0x22001240,0x160002ac,0x05340534,0x00000001,0xc0002288,
-0x000002a4,0x00000000,0x00000040,0x25380208,0x16000538,0x00040004,0x05000010,0x20000200,
-0x16000538,0x00100010,0x00010020,0x34000004,0x0e001400,0xfffffc30,0x00200040,0x22b01228,
-0x164504f8,0x00080008,0x00000001,0x22c01e68,0x00000000,0x00010001,0x00200001,0x42a41688,
-0x00000000,0x00000000,0x00000001,0x48cc1e88,0x00000000,0x00040004,0x04200010,0x20000a20,
-0x124502b0,0x00450020,0x00210002,0x42a41a88,0x1e0002c0,0x00000000,0x00000040,0x42e02288,
-0x220002a4,0x000002a6,0x01000010,0x20002260,0x1e0002e0,0x00010001,0x00010001,0x48cc1e88,
-0x00000000,0x00020002,0x01000010,0x20002260,0x1e0002e0,0x00020002,0x00010001,0x48cc1e88,
-0x00000000,0x00010001,0x00000009,0x22a40228,0x160004f4,0x00060006,0x00000001,0x48ac2288,
-0x000004f2,0x00000000,0x00000040,0x22000204,0x060002d0,0x020a0300,0x00000001,0x28c80208,
-0x00000534,0x00000000,0x00000001,0x48ae1e88,0x00000000,0x00000000,0x00400001,0x28c01248,
-0x006907d0,0x00000000,0x00000001,0x28d41208,0x000007cc,0x00000000,0x00000001,0x48cd2288,
-0x000004f3,0x00000000,0x00000008,0x22e80a08,0x1e0002a4,0x00040004,0x0a800033,0x00045054,
-0x000022e2,0x00000000,0x0a600031,0x23003a08,0x06000000,0x0219e000,0x20004d01,0x00181807,
-0x20004d01,0x00007f07,0x07000031,0x20003a00,0x06000fe0,0x82000010,0x2000007d,0x2000000c,
-0x00200040,0x22e01228,0x16450020,0x000f000f,0x00000005,0x22a6124c,0x16000006,0x07ff07ff,
-0x00000005,0x22a4124c,0x16000004,0x07ff07ff,0x00200001,0x2c601248,0x00450020,0x00000000,
-0x0020000c,0x43000a48,0x1e4502e0,0x00040004,0x00000005,0x24001260,0x160002a6,0x00010001,
-0x00000008,0x25c21248,0x160002a6,0x00010001,0x00200001,0x287c1248,0x00400300,0x00000000,
-0x00000048,0x25c01248,0x1e0002a4,0x00020002,0x00000001,0x25c41248,0x000005c2,0x00000000,
-0x04000010,0x20001240,0x120005c0,0x0000087c,0x00200009,0x2c641248,0x164505c0,0x00040004,
-0x00010020,0x34000004,0x0e001400,0x00006478,0x06000010,0x20002260,0x1e000025,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x000000c0,0x20004d01,0x00001707,0x00000040,0x22000204,
-0x060002b8,0x02190000,0x20086001,0x00001700,0x00000001,0x22e41208,0x000005c4,0x00000000,
-0x00000001,0x22e01228,0x000005c0,0x00000000,0x0c600031,0x23003a0c,0x000002e0,0x00000200,
-0x00400001,0x2320228c,0x00690300,0x00000000,0x00000041,0x22a42228,0x1e000320,0x00100010,
-0x00000040,0x22c80a28,0x1e0002a4,0x00200020,0x00000041,0x23401248,0x160002c8,0x00040004,
-0x00000040,0x22001240,0x16000340,0x00200020,0x00600001,0x20a00208,0x00208000,0x00000000,
-0x00600001,0x20c00208,0x00208020,0x00000000,0x0000004d,0x22a42208,0x00000026,0x00000000,
-0x00600001,0x22e02648,0x00000000,0x76543210,0x00000040,0x22002240,0x16000026,0x05d005d0,
-0x00800001,0x28201608,0x00000000,0x00000000,0x00800001,0x26801608,0x00000000,0x00000000,
-0x00800001,0x28801608,0x00000000,0x00000000,0x00800001,0x28c01608,0x00000000,0x00000000,
-0x00800001,0x29001608,0x00000000,0x00000000,0x00800001,0x29401608,0x00000000,0x00000000,
-0x00800001,0x26c01608,0x00000000,0x00000000,0x00000001,0x25d40e28,0x00000000,0x390e0d03,
-0x00000001,0x25d00e28,0x00000000,0x09020100,0x00000001,0x486c1e88,0x00000000,0x00010001,
-0x00600001,0x2bc01e08,0x00000000,0x00000000,0x20106101,0xff0054f8,0x00000001,0x6c680288,
-0x000002a4,0x00000000,0x00600001,0x2c801208,0x008d02e0,0x00000000,0x60004101,0x00044205,
-0x00200001,0x28500208,0x00450090,0x00000000,0x20004b01,0x00034107,0x00000001,0x45c42288,
-0x00008000,0x00000000,0x00000005,0x486e2288,0x1e0005c4,0x00030003,0x00000040,0x22c82228,
-0x1e00086e,0xffffffff,0x00000041,0x23001248,0x160002c8,0x00020002,0x00000040,0x22001240,
-0x16000300,0x00200020,0x00000001,0x25c61248,0x00008020,0x00000000,0x00000001,0x22ac12e8,
-0x00000032,0x00000000,0x00000001,0x236412e8,0x00000030,0x00000000,0x00000001,0x22a422e8,
-0x000000a0,0x00000000,0x00000009,0x23001228,0x1600087e,0x00020002,0x00000001,0x236022e8,
-0x000000a0,0x00000000,0x02000010,0x20002260,0x1e000c68,0x00010001,0x00200001,0x28701648,
-0x00000000,0x00000000,0x09000038,0x22e03ae8,0x3e0002ac,0x41200000,0x09000038,0x23803ae8,
-0x3e000364,0x41200000,0x00000040,0x23a00a28,0x1e000300,0x000f000f,0x00000009,0x25c81228,
-0x160005c0,0x00010001,0x00000001,0x28741648,0x00000000,0x00000000,0x00000041,0x23203ae8,
-0x3a0002a4,0x000002e0,0x00000005,0x22a40a08,0x1e0003a0,0xfff0fff0,0x00000041,0x22c83ae8,
-0x3a000360,0x00000380,0x00000001,0x43403a4c,0x00000320,0x00000000,0x00000001,0x23201e68,
-0x00000000,0x00010001,0x0000000c,0x22e00208,0x160002a4,0x00040004,0x00000001,0x40303a48,
-0x000002c8,0x00000000,0x00000001,0x20321248,0x00000340,0x00000000,0x00010002,0x22c81a28,
-0x1e000320,0x00000000,0x00000009,0x25d80208,0x160002e0,0x00020002,0x01000005,0x20002220,
-0x0a00002d,0x000002c8,0x00000040,0x25cc0228,0x120045d8,0x000005c2,0x00010020,0x34000004,
-0x0e001400,0x00000078,0x00000041,0x22a40208,0x220005d8,0x0000086e,0x20004d01,0x00001707,
-0x00000040,0x22000204,0x060002c4,0x02190000,0x20184001,0x002e1700,0x20086001,0x01001700,
-0x00000040,0x22e40228,0x020002a4,0x000005cc,0x0c600031,0x23003a0c,0x000002e0,0x00000200,
-0x00200001,0x2320124c,0x00450300,0x00000000,0x00000001,0x23801248,0x00000320,0x00000000,
-0x06000010,0x20002260,0x1e000c68,0x00000000,0x00000001,0x45d41e88,0x00000000,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x000002d8,0x00000041,0x22a42228,0x1e0005d4,0x00020002,
-0x00000041,0x23002248,0x160005d4,0x00020002,0x0000000c,0x22c82228,0x0a0005c4,0x000002a4,
-0x00000040,0x22001240,0x16000300,0x0ba00ba0,0x00000005,0x22e00a28,0x1e0002c8,0x00030003,
-0x00000040,0x25d00a28,0x1e0002e0,0xffffffff,0x00000001,0x4c6c0a68,0x000005d0,0x00000000,
-0x00000001,0xa0001a68,0x00000c6c,0x00000000,0x00000040,0x23201a28,0x1e000c6c,0x00010001,
-0x00000001,0x23401e68,0x00000000,0x00010001,0x00000040,0x25cc0228,0x020005cc,0x000005d8,
-0x02000010,0x20000a20,0x22000320,0x0000086e,0x00010002,0x23601a28,0x1e000340,0x00000000,
-0x01000005,0x20002220,0x0a00002d,0x00000360,0x00010020,0x34000004,0x0e001400,0x00000108,
-0x00000041,0x22a41248,0x160005d0,0x00020002,0x00000040,0x22001240,0x160002a4,0x00200020,
-0x00000001,0x22a61248,0x00008020,0x00000000,0x20004d01,0x00001707,0x00000040,0x22000204,
-0x060002c4,0x02190000,0x00000001,0x22e4020c,0x000005cc,0x00000000,0x20184001,0x002e1700,
-0x20086001,0x01001700,0x01000010,0x20001240,0x120005c6,0x000002a6,0x00000001,0x22c81e68,
-0x00000000,0x00010001,0x0c600031,0x23003a0c,0x000002e0,0x00000200,0x00000040,0x22001240,
-0x160002a4,0x08700870,0x00200001,0x2320124c,0x00450300,0x00000000,0x03010010,0x20001240,
-0x12000320,0x00000380,0x05110010,0x20001240,0x120005c6,0x000002a6,0x00010002,0xa0001a48,
-0x1e0002c8,0x00000000,0x03000010,0x20001220,0x1e008000,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x000000b0,0x06000010,0x20002260,0x1e00002c,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000090,0x20004d01,0x00001707,0x00000040,0x22000204,0x060002c0,0x02190000,
-0x00000001,0x22e4020c,0x000005cc,0x00000000,0x20086001,0x03001700,0x00000041,0x22e00a28,
-0x1e0005c8,0x00040004,0x00000041,0x22a41248,0x160005d0,0x00040004,0x0c600031,0x23003a0c,
-0x000002e0,0x00000200,0x00000040,0x22001240,0x160002a4,0x08600860,0x00200001,0x23201a6c,
-0x00450300,0x00000000,0x00000001,0xa0000208,0x00000320,0x00000000,0x00000040,0x45d42288,
-0x1e0005d4,0x00010001,0x05000010,0x20002260,0x220005d4,0x00000c68,0x00010020,0x34000004,
-0x0e001400,0xfffffd28,0x00200001,0x22b01e48,0x00000000,0x00010001,0x00200001,0x22e00208,
-0x000005c0,0x00000000,0x00200001,0x22b41e48,0x00000000,0x00020002,0x00600001,0x23001648,
-0x00000000,0x00000000,0x00000001,0x43b01e88,0x00000000,0x00020002,0x00000001,0x25d40e28,
-0x00000000,0x5f004a00,0x00000001,0x25dc0e28,0x00000000,0xff000000,0x00000001,0x25d00e28,
-0x00000000,0x1f050a00,0x00000001,0x25d80e28,0x00000000,0x3f250000,0x646fc110,0x151700ad,
-0x00410002,0x23001a48,0x1e0002b0,0x00000000,0x2203eb10,0x00180007,0x00000001,0x22a41048,
-0x00000600,0x00000000,0x00000005,0x22ac1208,0x160002a4,0x000f000f,0x00000040,0x22001240,
-0x160002ac,0x05d005d0,0x00000001,0x48762288,0x00008000,0x00000000,0x00600001,0x22e02668,
-0x00000000,0x33221100,0x20104101,0x002e6600,0x00000040,0x22000204,0x060002cc,0x02180200,
-0x00000001,0x22c81648,0x00000000,0x00000000,0x02000005,0x20002260,0x1600002e,0x00010001,
-0x00200001,0x23b01268,0x00450c64,0x00000000,0x00600001,0x23801648,0x00000000,0x00000000,
-0x00800001,0x25e01608,0x00000000,0x00000000,0x00600040,0x2cd01a68,0x1a8d0cd0,0x008d42e0,
-0x00200040,0x22e01268,0x12450020,0x00454c64,0x00010002,0x2c6a1248,0x160002c8,0x01000100,
-0x00800001,0x26201608,0x00000000,0x00000000,0x00200001,0x26601648,0x00000000,0x00000000,
-0x00600001,0x23a02648,0x00000000,0x00011011,0x00600001,0x2ca01a28,0x008d0cd0,0x00000000,
-0x00200040,0x23b41a68,0x1e4502e0,0xfff0fff0,0x00600001,0x22e01648,0x00000000,0x00000000,
-0x00400041,0x4cd01a68,0x1e400cd0,0x00100010,0x00400041,0x4ca40a28,0x12400ca4,0x0000087c,
-0x00400041,0x23401a28,0x1e6903b0,0x00080008,0x00400041,0x4cd21a68,0x1e400cd2,0x00040004,
-0x03600002,0x2ca00a28,0x1e8d0ca0,0x00000000,0x00400040,0x23b00a28,0x1e690340,0x00800080,
-0x00600041,0x2ca00a28,0x1e8d0ca0,0x00400040,0x00200001,0x23b00a28,0x004543b0,0x00000000,
-0x00600001,0x4b600a28,0x000003b8,0x00000000,0x00600001,0x4b640a28,0x000003bc,0x00000000,
-0x00000040,0x22ac0a28,0x0a000ca0,0x00000ca4,0x00600001,0x4be00a28,0x000003b0,0x00000000,
-0x00600001,0x4be40a28,0x000003b4,0x00000000,0x00000008,0x23080a08,0x1e0002ac,0x00040004,
-0x0a600031,0x23203a0c,0x00000300,0x00000200,0x00200005,0x23001228,0x164505c0,0x00010001,
-0x00200040,0x23101228,0x16450c64,0x00100010,0x03200010,0x20000a20,0x1e450300,0x00000000,
-0x00210002,0x22e01a48,0x1e0002b0,0x00000000,0x2203eb10,0x00170007,0x00000001,0x22a41048,
-0x00000600,0x00000000,0x06200010,0x20000a20,0x12450310,0x00450020,0x00000005,0x42ac1288,
-0x160002a4,0x00030003,0x00210002,0x2c741a48,0x1e0002b0,0x00000000,0x01000010,0x20002260,
-0x1e0002ac,0x00030003,0x00000005,0x22c81228,0x12000c74,0x00000c76,0x00010002,0x22d81a28,
-0x1e0002b0,0x00000000,0x01200010,0x20000a20,0x1e450300,0x00000000,0x00000005,0x68780a88,
-0x0a0002c8,0x000002d8,0x00210002,0x23201a48,0x1e0002b0,0x00000000,0x00200041,0x22e01248,
-0x16450320,0x00100010,0x00200040,0x23401228,0x12450c64,0x004502e0,0x00200040,0x23600a28,
-0x1e450340,0x00100010,0x03200010,0x20000a20,0x12450360,0x00450020,0x00210002,0x23801a48,
-0x1e0002b0,0x00000000,0x2203eb10,0x001c0007,0x00000001,0x22a41048,0x00000600,0x00000000,
-0x01000005,0x20002220,0x1e000878,0x00010001,0x00000005,0x4c701288,0x160002a4,0x00030003,
-0x00000001,0x4d182288,0x00000324,0x00000000,0x00000001,0x2c400208,0x00000330,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000440,0x04200010,0x20001240,0x164505c0,0x00020002,
-0x00000001,0x22a41e68,0x00000000,0x00010001,0x00600001,0x22e01648,0x00000000,0x00000000,
-0x00000001,0x25c40e28,0x00000000,0xff254a00,0x00210002,0x22e01a48,0x1e0002a4,0x00000000,
-0x2203eb10,0x00170007,0x00000001,0x22c81048,0x00000600,0x00000000,0x00000005,0x23001208,
-0x160002c8,0x00030003,0x00000040,0x22001240,0x16000300,0x05c405c4,0x00000001,0x4c6e2288,
-0x00008000,0x00000000,0x00000040,0x23200a28,0x0a000ca8,0x00000cac,0x00000040,0x22000204,
-0x060002cc,0x02180200,0x00200040,0x22b01268,0x12450020,0x00454c64,0x20104101,0x002e5d00,
-0x00200040,0x23b01268,0x16450c64,0xfff0fff0,0x03600010,0x20001260,0x1e8d00b0,0x03ff03ff,
-0x00600001,0x22f02648,0x00000000,0xfedcba98,0x00000008,0x23480a08,0x1e000320,0x00040004,
-0x00200040,0x23b41a68,0x1e4502b0,0xfff0fff0,0x00600040,0x23001228,0x128d0bb0,0x008d43a0,
-0x0a600031,0x23603a0c,0x00000340,0x00000200,0x00600001,0x23401248,0x008d00b0,0x00000000,
-0x00400041,0x22e01a28,0x1e6903b0,0x00080008,0x00610001,0x23401648,0x00000000,0x03ff03ff,
-0x00600009,0x43200a48,0x1e8d0300,0x00040004,0x00400040,0x23b00a28,0x1e6902e0,0x00800080,
-0x00400040,0x22b01268,0x12690348,0x00694346,0x00600001,0x22e02648,0x00000000,0x76543210,
-0x00600001,0x2bb01248,0x00400320,0x00000000,0x00000001,0x25e81248,0x00000346,0x00000000,
-0x00000001,0x25e41248,0x00000344,0x00000000,0x00000001,0x26001248,0x0000034a,0x00000000,
-0x00200001,0x23b00a28,0x004543b0,0x00000000,0x00600001,0x4b200a28,0x000003b8,0x00000000,
-0x00400041,0x23201a28,0x120002b0,0x006902e0,0x00600040,0x23101a48,0x1e8d02e0,0x00180018,
-0x00600040,0x23001a48,0x1e8d02e0,0x00100010,0x00800041,0x24c01a28,0x120002b6,0x008d02e0,
-0x00600001,0x4ae00a28,0x000003b0,0x00000000,0x00800041,0x24001a28,0x120002b4,0x008d02e0,
-0x00600001,0x4b240a28,0x000003bc,0x00000000,0x00800041,0x25001a28,0x120002b6,0x008d0300,
-0x00600001,0x4ae40a28,0x000003b4,0x00000000,0x00600041,0x23a01a28,0x120002b2,0x008d02e0,
-0x00000001,0x26201248,0x0000034c,0x00000000,0x0080000c,0x25400a28,0x1e8d04c0,0x00050005,
-0x0080000c,0x24400a28,0x1e8d0400,0x00040004,0x0080000c,0x25800a28,0x1e8d0500,0x00050005,
-0x00000001,0x25f01248,0x00000348,0x00000000,0x00000040,0x22a41228,0x120005e4,0x000005e8,
-0x0060000c,0x23c00a28,0x1e8d03a0,0x00030003,0x00000001,0x25e01248,0x00000340,0x00000000,
-0x00000001,0x26601248,0x0000034e,0x00000000,0x00000001,0x25e21248,0x00000342,0x00000000,
-0x00800040,0x44801248,0x0a000600,0x008d0440,0x0000000c,0x42c80a4c,0x1e0002a4,0x00010001,
-0x00600040,0x43e01248,0x0a0005f0,0x008d03c0,0x00800001,0x26001248,0x00400480,0x00000000,
-0x00000001,0x25e61248,0x000002c8,0x00000000,0x00600001,0x25f01248,0x004003e0,0x00000000,
-0x00000001,0x4cc82288,0x00000364,0x00000000,0x0040000c,0x23600a28,0x1e690320,0x00020002,
-0x00000001,0x2ac00208,0x00000370,0x00000000,0x00800040,0x43201248,0x0a000620,0x008d0580,
-0x00400040,0x43801248,0x0a0005e8,0x00690360,0x00800001,0x26401248,0x00400320,0x00000000,
-0x00400001,0x25e81248,0x00400380,0x00000000,0x00800040,0x43601248,0x0a000620,0x008d0540,
-0x00800001,0x26201248,0x00400360,0x00000000,0x00200001,0x22a42268,0x0045002a,0x00000000,
-0x00200040,0x22b01228,0x164505c0,0x00010001,0x00600001,0x23000e08,0x00000000,0x00020001,
-0x00000001,0x22c81e68,0x00000000,0x00010001,0x00600001,0x2d201e28,0x00000000,0x00000000,
-0x00600001,0x2e800208,0x0000087c,0x00000000,0x00000001,0x48bc1e88,0x00000000,0x00040004,
-0x20144b01,0x00157200,0x00200040,0x22a41248,0x16450c64,0x00100010,0x00800040,0x2e201a68,
-0x1e8d4300,0x00ff00ff,0x00200040,0x23101228,0x1245087c,0x004545c0,0x00800041,0x2e801a68,
-0x1e8d0e80,0x00100010,0x00800040,0x22e01a68,0x1e8d0e40,0xfff0fff0,0x03200010,0x20001240,
-0x124502a4,0x00450020,0x00800040,0x23201a68,0x1e8d4e40,0x00050005,0x00800040,0x23a01a68,
-0x1e8d0e80,0xffffffff,0x00800008,0x2de01a68,0x1e8d02e0,0x00010001,0x00200009,0x22e00a28,
-0x1e4502b0,0x00070007,0x00800005,0x23601a68,0x1e8d0320,0xfffcfffc,0x00000006,0x43222288,
-0x1e0008bc,0x00010001,0x00600001,0x29281648,0x00000000,0x7f7f7f7f,0x00600001,0x29401648,
-0x00000000,0x81818181,0x20144b01,0x00636d00,0x00200001,0x23000a28,0x004542e0,0x00000000,
-0x00600001,0x22e01648,0x00000000,0x00000000,0x00210002,0x22e01a48,0x1e0002c8,0x00000000,
-0x00800040,0x2d801a68,0x1e8d0e40,0xfff0fff0,0x00200009,0x24200a28,0x1e450310,0x00070007,
-0x00800005,0x23e01a68,0x1e8d03a0,0xfffcfffc,0x00400001,0x4d200a28,0x00000300,0x00000000,
-0x2203eb10,0x00170007,0x00600001,0x2d401e28,0x00000000,0x00000000,0x00800001,0x2dc01e68,
-0x00000000,0x00ff00ff,0x00800001,0x29702288,0x008d0928,0x00000000,0x00800001,0x29602288,
-0x008d0940,0x00000000,0x00000001,0x23001048,0x00000600,0x00000000,0x00800040,0x2d601a68,
-0x1a8d0360,0x008d4da0,0x00800040,0x2e001a68,0x1a8d0d80,0x008d4e20,0x00800040,0x2e601a68,
-0x1a8d03e0,0x008d4da0,0x00000005,0x23201248,0x16000300,0x00030003,0x00400001,0x4d400a28,
-0x00000420,0x00000000,0x00200001,0x28881248,0x00450c64,0x00000000,0x00000001,0x488e1e88,
-0x00000000,0x00ac00ac,0x00000006,0x48a02288,0x1e0008a0,0x00030003,0x00400001,0x29381648,
-0x00000000,0x7f7f7f7f,0x00000001,0x49271e88,0x00000000,0x00000000,0x03000010,0x20001260,
-0x1e000320,0x00000000,0x00000001,0x49241e88,0x00000000,0x00880088,0x00000001,0x29541648,
-0x00000000,0x00000000,0x00000001,0x488d1e88,0x00000000,0x00300030,0x00400001,0x4d240a28,
-0x00000304,0x00000000,0x00400001,0x4d440a28,0x00000424,0x00000000,0x00010001,0x48bc2288,
-0x00000322,0x00000000,0x01000010,0x20001260,0x1e0005c0,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x000000c8,0x20004d01,0x00001707,0x00000040,0x22000204,0x060002a0,0x02290000,
-0x00000001,0x22e8060c,0x00000000,0x000f0000,0x00000001,0x22e41228,0x0000088a,0x00000000,
-0x00000040,0x22e01228,0x1e000888,0xffffffff,0x0c600031,0x23003a0c,0x000002e0,0x00000200,
-0x00000040,0x22e01228,0x1e000888,0xfffcfffc,0x00000040,0x22000204,0x060002a0,0x02190001,
-0x0000000c,0x22e41228,0x1600088a,0x00010001,0x00000001,0x22e8060c,0x00000000,0x00070003,
-0x0c600031,0x23403a0c,0x000002e0,0x00000200,0x00800001,0x29402288,0x00600300,0x00000000,
-0x00800001,0x29602288,0x00650342,0x00000000,0x01000010,0x20001260,0x1e0005c2,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x000000c8,0x00000040,0x22a41228,0x1e000888,0xfff8fff8,
-0x20004d01,0x00001707,0x00000040,0x22000204,0x060002a0,0x02190000,0x20086001,0x1f001700,
-0x00000040,0x22e41228,0x1e00088a,0xffffffff,0x0000000c,0x22c81228,0x1600088a,0x00010001,
-0x20144001,0x00151700,0x0c600031,0x23203a0c,0x000002e0,0x00000200,0x00000040,0x22000204,
-0x060002a0,0x02190001,0x00000040,0x22e40a28,0x1e0002c8,0xffffffff,0x0c600031,0x22e03a0c,
-0x000002e0,0x00000200,0x00400001,0x29280208,0x00690328,0x00000000,0x00600001,0x29382288,
-0x00000937,0x00000000,0x00400001,0x29700208,0x006902e8,0x00000000,0x02000010,0x20001260,
-0x1e0005c0,0x00000000,0x00000001,0x22a41e68,0x00000000,0x00010001,0x02010010,0x20001260,
-0x1e0005c2,0x00000000,0x00010002,0x22c81a28,0x1e0002a4,0x00000000,0x01000010,0x20000a20,
-0x1e0002c8,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000030,0x00000006,0x48bd2288,
-0x1e0008bd,0x00040004,0x00000001,0x49272288,0x00000327,0x00000000,0x00200001,0x29542288,
-0x004502e6,0x00000000,0x00000005,0x22b01228,0x160005c2,0x00010001,0x02000010,0x20001260,
-0x1e0005c2,0x00000000,0x00000040,0x22a41228,0x160005c0,0x00010001,0x00000005,0x22ac1228,
-0x160005c0,0x00010001,0x00000001,0x22e01e68,0x00000000,0x00010001,0x05010010,0x20000a20,
-0x120002a4,0x0000087c,0x00000040,0x22c80a28,0x0a0002ac,0x000002b0,0x02010010,0x20000a20,
-0x1e0002c8,0x00020002,0x00010002,0x23001a28,0x1e0002e0,0x00000000,0x01000010,0x20000a20,
-0x1e000300,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,0x00000006,0x48bd2288,
-0x1e0008bd,0x00080008,0x00200001,0x29380208,0x00450338,0x00000000,0x00200040,0x22a41248,
-0x16450c64,0x00100010,0x00000001,0x22ac1e68,0x00000000,0x00010001,0x00600001,0x22e01648,
-0x00000000,0x00000000,0x00000001,0x488f1e88,0x00000000,0x00700070,0x00000001,0x48a91e88,
-0x00000000,0x00390039,0x00000005,0x23202228,0x1e0008a4,0x00c000c0,0x00200001,0x28cc0208,
-0x004500c0,0x00000000,0x03200010,0x20001240,0x124502a4,0x00450020,0x00000001,0x495e2288,
-0x000000a3,0x00000000,0x00000001,0x48ca2288,0x000000d2,0x00000000,0x00200001,0x28c82288,
-0x004500d0,0x00000000,0x00000001,0x48a82288,0x000008a9,0x00000000,0x00000006,0x488e2288,
-0x1e00088e,0x00040004,0x00000001,0x48a61e88,0x00000000,0x00200020,0x00210002,0x22e01a48,
-0x1e0002ac,0x00000000,0x00200040,0x22ac2248,0x1e45002a,0xfff0fff0,0x00000001,0x48be1e88,
-0x00000000,0x00400040,0x00000006,0x48bd2288,0x1e0008bd,0x00700070,0x00200001,0x29501e48,
-0x00000000,0x22222222,0x00000001,0x48bf1e88,0x00000000,0x00010001,0x00200001,0x28c00208,
-0x004500c8,0x00000000,0x2203eb10,0x00170007,0x00200005,0x22e41248,0x164505c0,0x00010001,
-0x00000001,0x42e01e88,0x00000000,0x00000000,0x00200008,0x22a41248,0x164502ac,0x00030003,
-0x00200001,0x295c2288,0x004500a1,0x00000000,0x00200001,0x28962288,0x0045002a,0x00000000,
-0x00000006,0x68a40a88,0x1e000320,0x00200020,0x00000001,0x22c81048,0x00000600,0x00000000,
-0x00000005,0x23001248,0x160002c8,0x00030003,0x00200005,0x22c81248,0x164502a4,0x000f000f,
-0x03000010,0x20001260,0x1e000300,0x00000000,0x00000009,0x42d81288,0x160002ca,0x00040004,
-0x00010001,0x488f1e88,0x00000000,0x00770077,0x05000010,0x20002260,0x1e000029,0x00390039,
-0x00000006,0x48aa2288,0x120002d8,0x000002c8,0x00010001,0x48a82288,0x00000029,0x00000000,
-0x01000010,0x20000200,0x160002e4,0x00000000,0x00010001,0x42e01e88,0x00000000,0x000f000f,
-0x01000010,0x20000200,0x160002e4,0x00010001,0x00010001,0x42e01e88,0x00000000,0x00010001,
-0x01000010,0x20000200,0x060002e4,0x00010000,0x00010001,0x42e01e88,0x00000000,0x00020002,
-0x01000010,0x20000200,0x060002e4,0x00010001,0x00010001,0x42e01e88,0x00000000,0x00030003,
-0x00000004,0x22a42228,0x000002e0,0x00000000,0x00000005,0x62c80a88,0x1e0002a4,0x00ff00ff,
-0x00000001,0x26002244,0x000002c8,0x00000000,0x00618005,0x36001044,0x168d1600,0x7fff7fff,
-0x00000040,0x24000a28,0x0a000ca0,0x00000cb4,0x00000040,0x22000204,0x060002d0,0x02280300,
-0x00800001,0x23801608,0x00000000,0x00000000,0x00800001,0x23001608,0x00000000,0x00000000,
-0x00800001,0x23401608,0x00000000,0x00000000,0x00000008,0x24280a08,0x1e000400,0x00040004,
-0x0a800032,0x23003a6c,0x00000420,0x00000200,0x00000040,0x22c80a28,0x0a000ca8,0x00000ca4,
-0x00000040,0x24400a28,0x0a000ca0,0x00000cac,0x00000040,0x22a40a28,0x0a000cb0,0x00000ca4,
-0x00000040,0x24000a28,0x0a000ca8,0x00000cac,0x00000001,0x2aa80208,0x00000318,0x00000000,
-0x00000001,0x4d152288,0x00000304,0x00000000,0x00000001,0x2c340208,0x00000318,0x00000000,
-0x00000008,0x25080a08,0x1e0002c8,0x00040004,0x00000008,0x22e80a08,0x1e000440,0x00040004,
-0x00000008,0x24680a08,0x1e0002a4,0x00040004,0x00000040,0x22a40a28,0x0a000cb0,0x00000cb4,
-0x00000001,0x487a1e88,0x00000000,0x00000000,0x00000001,0x4cc22288,0x00000304,0x00000000,
-0x0a800031,0x24c03a6c,0x00000500,0x00000200,0x0a800031,0x23403a6c,0x000002e0,0x00000200,
-0x0a800031,0x24803a6c,0x00000460,0x00000200,0x00000008,0x24480a08,0x1e0002a4,0x00040004,
-0x00000008,0x22e80a08,0x1e000400,0x00040004,0x00000040,0x22000204,0x060002d0,0x02180200,
-0x0a600031,0x24203a0c,0x000002e0,0x00000200,0x0a600031,0x24603a0c,0x00000440,0x00000200,
-0x60104101,0x00261c05,0x60244101,0x00261d05,0x00200001,0x4d102288,0x00000344,0x00000000,
-0x00200001,0x22c82288,0x00450342,0x00000000,0x60204101,0x00241d05,0x60004101,0x00241c05,
-0x00200001,0x4c200208,0x00450358,0x00000000,0x00200001,0x4d112288,0x00000394,0x00000000,
-0x00200001,0x22ca2288,0x00450390,0x00000000,0x00200001,0x4c240208,0x004003b4,0x00000000,
-0x00000001,0x2aac0208,0x000003a4,0x00000000,0x00000001,0x2c380208,0x000003a4,0x00000000,
-0x00000001,0x4cc32288,0x00000384,0x00000000,0x01000010,0x20002260,0x1e000d11,0x00000000,
-0x00000001,0x4d142288,0x00000424,0x00000000,0x00000001,0x2c300208,0x0000043c,0x00000000,
-0x00000001,0x4cc42288,0x00000464,0x00000000,0x00000001,0x2ab00208,0x0000047c,0x00000000,
-0x00000001,0x4d172288,0x00000464,0x00000000,0x00000001,0x2c3c0208,0x0000047c,0x00000000,
-0x03010010,0x20001260,0x1e0005c0,0x00000000,0x00000001,0x4d162288,0x00000384,0x00000000,
-0x00010001,0x29501248,0x000002ca,0x00000000,0x01000010,0x20002260,0x1e000d10,0x00000000,
-0x03010010,0x20001260,0x1e0005c2,0x00000000,0x00010001,0x29521248,0x000002c8,0x00000000,
-0x06000010,0x20002260,0x1e000c68,0x00000000,0x00010020,0x34000004,0x0e001400,0x000018c0,
-0x00000041,0x22a42248,0x1600087a,0x00020002,0x00000040,0x22001240,0x160002a4,0x0ba00ba0,
-0x00000001,0x2c6c1a68,0x00008000,0x00000000,0x05000010,0x20000200,0x12000a94,0x00000032,
-0x00000001,0x22e01e68,0x00000000,0x00010001,0x00000041,0x22c81a48,0x12000c6c,0x000000ae,
-0x00800001,0x23801648,0x00000000,0x00000000,0x00400001,0x28b82288,0x00000c6c,0x00000000,
-0x05110010,0x20000200,0x12000a90,0x00000032,0x00400040,0x23a01208,0x126900a8,0x000002c8,
-0x00010002,0x23001a28,0x1e0002e0,0x00000000,0x02000010,0x20000a20,0x1e000300,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x000017f0,0x00000040,0x22a41a28,0x1e000c6c,0x00040004,
-0x00000040,0x22001240,0x160002a4,0x06e006e0,0x00000001,0xc0001e88,0x00000000,0x00010001,
-0x00000040,0x22c81a28,0x1e000c6c,0x00010001,0x03000010,0x20002260,0x1e000028,0x00000000,
-0x00000001,0x22d81e68,0x00000000,0x00080008,0x00000006,0x22e21248,0x22000c6a,0x00000876,
-0x20005601,0x00611807,0x20005601,0x00611a07,0x01010010,0x20002220,0x0a00086e,0x000002c8,
-0x00000001,0x62e00a88,0x000002c8,0x00000000,0x00600001,0x2ce01e08,0x00000000,0x00000000,
-0x00010002,0x43b01a88,0x1e0002d8,0x00020002,0x01800010,0x20002260,0x228d0d10,0x000002e0,
-0x00000001,0x22a41048,0x00000600,0x00000000,0x02800010,0x20002260,0x1e8d0d10,0x00000000,
-0x00000005,0x23b41248,0x120002e2,0x000002a4,0x00000001,0x22a41048,0x00000600,0x00000000,
-0x00000005,0x23b61248,0x120002e2,0x000002a4,0x0000004c,0x23b80208,0x000003b4,0x00000000,
-0x03000010,0x20000200,0x160003b8,0x00180018,0x00010020,0x34000004,0x0e001400,0x00000520,
-0x00000041,0x22a41248,0x160003b8,0x00040004,0x00000040,0x22001240,0x160002a4,0x03000300,
-0x00000001,0x2ce00208,0x00008000,0x00000000,0x02800010,0x20000220,0x028d0c20,0x00000ce0,
-0x00000001,0x22c81048,0x00000600,0x00000000,0x02800010,0x20000220,0x028d0c20,0x00000ce0,
-0x00000001,0x22ca1048,0x00000600,0x00000000,0x00000005,0x23b40208,0x020003b4,0x000002c8,
-0x0000004c,0x22c00208,0x000003b4,0x00000000,0x03000010,0x20000200,0x160002c0,0x00180018,
-0x00010020,0x34000004,0x0e001400,0x00000470,0x00000041,0x22a41248,0x160002c0,0x00040004,
-0x00000040,0x22001240,0x160002a4,0x03000300,0x00000001,0x2ce40208,0x00008000,0x00000000,
-0x01000010,0x20002260,0x1e0003b0,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000420,
-0x02800010,0x20000220,0x028d0c20,0x00000ce4,0x00000001,0x22a41048,0x00000600,0x00000000,
-0x02800010,0x20000220,0x028d0c20,0x00000ce4,0x00000001,0x22a61048,0x00000600,0x00000000,
-0x00000005,0x23b40208,0x020003b4,0x000002a4,0x0000004c,0x23b00208,0x000003b4,0x00000000,
-0x03000010,0x20000200,0x160003b0,0x00180018,0x00010020,0x34000004,0x0e001400,0x000003a0,
-0x00000041,0x22a41248,0x160003b0,0x00040004,0x00000040,0x22001240,0x160002a4,0x03000300,
-0x00000001,0x2ce80208,0x00008000,0x00000000,0x02800010,0x20000220,0x028d0c20,0x00000ce8,
-0x00000001,0x22c81048,0x00000600,0x00000000,0x02800010,0x20000220,0x028d0c20,0x00000ce8,
-0x00000001,0x22ca1048,0x00000600,0x00000000,0x00000005,0x23b40208,0x020003b4,0x000002c8,
-0x0000004c,0x23b00208,0x000003b4,0x00000000,0x03000010,0x20000200,0x160003b0,0x00180018,
-0x00010020,0x34000004,0x0e001400,0x000002f0,0x00000041,0x22a41248,0x160003b0,0x00040004,
-0x00000040,0x22001240,0x160002a4,0x03000300,0x00000001,0x2cec0208,0x00008000,0x00000000,
-0x02800010,0x20000220,0x028d0c20,0x00000cec,0x00000001,0x22c81048,0x00000600,0x00000000,
-0x02800010,0x20000220,0x028d0c20,0x00000cec,0x00000001,0x22ca1048,0x00000600,0x00000000,
-0x00000005,0x23b40208,0x020003b4,0x000002c8,0x0000004c,0x23b00208,0x000003b4,0x00000000,
-0x03000010,0x20000200,0x160003b0,0x00180018,0x00010020,0x34000004,0x0e001400,0x00000240,
-0x00000041,0x22a41248,0x160003b0,0x00040004,0x00000040,0x22001240,0x160002a4,0x03000300,
-0x00000001,0x2cf00208,0x00008000,0x00000000,0x02800010,0x20000220,0x028d0c20,0x00000cf0,
-0x00000001,0x22c81048,0x00000600,0x00000000,0x02800010,0x20000220,0x028d0c20,0x00000cf0,
-0x00000001,0x22ca1048,0x00000600,0x00000000,0x00000005,0x23b40208,0x020003b4,0x000002c8,
-0x0000004c,0x23b00208,0x000003b4,0x00000000,0x03000010,0x20000200,0x160003b0,0x00180018,
-0x00010020,0x34000004,0x0e001400,0x00000190,0x00000041,0x22a41248,0x160003b0,0x00040004,
-0x00000040,0x22001240,0x160002a4,0x03000300,0x00000001,0x2cf40208,0x00008000,0x00000000,
-0x02800010,0x20000220,0x028d0c20,0x00000cf4,0x00000001,0x22c81048,0x00000600,0x00000000,
-0x02800010,0x20000220,0x028d0c20,0x00000cf4,0x00000001,0x22ca1048,0x00000600,0x00000000,
-0x00000005,0x23b40208,0x020003b4,0x000002c8,0x0000004c,0x23b00208,0x000003b4,0x00000000,
-0x03000010,0x20000200,0x160003b0,0x00180018,0x00010020,0x34000004,0x0e001400,0x000000e0,
-0x00000041,0x22a41248,0x160003b0,0x00040004,0x00000040,0x22001240,0x160002a4,0x03000300,
-0x00000001,0x2cf80208,0x00008000,0x00000000,0x02800010,0x20000220,0x028d0c20,0x00000cf8,
-0x00000001,0x22c81048,0x00000600,0x00000000,0x02800010,0x20000220,0x028d0c20,0x00000cf8,
-0x00000001,0x22ca1048,0x00000600,0x00000000,0x00000005,0x23b40208,0x020003b4,0x000002c8,
-0x0000004c,0x22c00208,0x000003b4,0x00000000,0x03000010,0x20000200,0x160002c0,0x00180018,
-0x00010020,0x34000004,0x0e001400,0x00000030,0x00000041,0x22a41248,0x160002c0,0x00040004,
-0x00000040,0x22001240,0x160002a4,0x03000300,0x00000001,0x2cfc0208,0x00008000,0x00000000,
-0x04800002,0x42e00a68,0x1a8d0be0,0x008d0ce0,0x00000040,0x22000204,0x060002a8,0x10782000,
-0x00800001,0x2ce01a68,0x004002e0,0x00000000,0x06800002,0x43200a68,0x1a8d0b60,0x008d0ce0,
-0x00800001,0x2ce01a68,0x00400320,0x00000000,0x0000000c,0x22c81a28,0x1e000ce2,0x00010001,
-0x0000000c,0x22a41a28,0x1e000ce0,0x00010001,0x0020000c,0x29001a68,0x1e450ce0,0x00010001,
-0x00200001,0x23801a68,0x00450ce0,0x00000000,0x00000001,0x43600a6c,0x000002c8,0x00000000,
-0x00400001,0x68e00a68,0x000002a4,0x00000000,0x00400001,0x68e21a68,0x00000360,0x00000000,
-0x0d600031,0x29803a0c,0x00000880,0x00000200,0x00000040,0x23a80208,0x120003a8,0x00000988,
-0x00200001,0x23901248,0x00450988,0x00000000,0x04000010,0x20000200,0x020003a8,0x00000a94,
-0x00010020,0x34000004,0x0e001400,0x00000040,0x00200001,0x2a681648,0x00000000,0x0a0a0a0a,
-0x20004b01,0x004c7507,0x00000040,0x4a641a88,0x1e000c6c,0x00010001,0x20104101,0x004d5300,
-0x00000001,0x2a940208,0x000003a8,0x00000000,0x01000010,0x20002260,0x1e00086c,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000070,0x0000000c,0x22a42228,0x16000980,0x00040004,
-0x00000005,0x4a882288,0x1e000998,0x00030003,0x00000001,0x486c1e88,0x00000000,0x00000000,
-0x00400001,0x2a801248,0x00690990,0x00000000,0x00000001,0x2a901208,0x0000098c,0x00000000,
-0x00000001,0x49251e88,0x00000000,0x00020002,0x00000005,0x6a6d0a88,0x1e0002a4,0x00030003,
-0x01000010,0x20000200,0x02000ce0,0x00000ce4,0x00010020,0x34000004,0x0e001400,0x000000d0,
-0x0020000c,0x29001a68,0x1e450ce4,0x00010001,0x00000040,0x22000204,0x060002a8,0x10782000,
-0x00200001,0x23841a68,0x00450ce4,0x00000000,0x0d600031,0x29803a0c,0x00000880,0x00000200,
-0x00000040,0x23a40208,0x120003a4,0x00000988,0x00200001,0x23941248,0x00450988,0x00000000,
-0x04000010,0x20000200,0x020003a4,0x00000a94,0x00010020,0x34000004,0x0e001400,0x00000080,
-0x00200001,0x2a681648,0x00000000,0x0b0b0b0b,0x20004b01,0x004c7507,0x00000040,0x4a641a88,
-0x1e000c6c,0x00010001,0x20104101,0x004d5300,0x00000001,0x2a940208,0x000003a4,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x00000030,0x00000040,0x22a41a28,0x1e000c6c,0x00080008,
-0x00000040,0x22001240,0x160002a4,0x06e006e0,0x00000001,0xc0001e88,0x00000000,0x00010001,
-0x02000010,0x20000200,0x16000ce0,0x00000000,0x00000001,0x22a41e68,0x00000000,0x00010001,
-0x02010010,0x20000200,0x16000ce4,0x00000000,0x00010002,0x22c81a28,0x1e0002a4,0x00000000,
-0x01000010,0x20000a20,0x1e0002c8,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000c0,
-0x00200001,0x29001e68,0x00000000,0x00000000,0x00000040,0x22000204,0x060002a8,0x10782000,
-0x00200001,0x23881a68,0x00450900,0x00000000,0x0d600031,0x29803a0c,0x00000880,0x00000200,
-0x00000040,0x23a00208,0x120003a0,0x00000988,0x00200001,0x23981248,0x00450988,0x00000000,
-0x04000010,0x20000200,0x020003a0,0x00000a94,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x00200001,0x2a681648,0x00000000,0x0c0c0c0c,0x20004b01,0x004c7507,0x00000040,0x4a641a88,
-0x1e000c6c,0x00010001,0x20104101,0x004d5300,0x00000001,0x2a940208,0x000003a0,0x00000000,
-0x00000041,0x22a41a28,0x1e000c6c,0x00020002,0x00000041,0x22c81248,0x160002a4,0x00100010,
-0x00000040,0x22001240,0x160002c8,0x06800680,0x00600001,0xa0000208,0x008d0380,0x00000000,
-0x0000000c,0x22e01208,0x16000030,0x00010001,0x05000010,0x20000200,0x12000a94,0x00000030,
-0x00000001,0x23001e68,0x00000000,0x00010001,0x05110010,0x20000200,0x02000a90,0x000002e0,
-0x00010002,0x23201a28,0x1e000300,0x00000000,0x02000010,0x20000a20,0x1e000320,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000cb0,0x00000041,0x22a41a48,0x1e000c6c,0x00020002,
-0x00000040,0x22001240,0x160002a4,0x08700870,0x02000005,0x20002220,0x1200002d,0x00008000,
-0x00010020,0x34000004,0x0e001400,0x00000c40,0x00000041,0x22a41a48,0x1e000c6c,0x00040004,
-0x00200008,0x287c1a68,0x1e450ce0,0x00010001,0x00200001,0x2d001608,0x00000000,0x00000000,
-0x00000040,0x22001240,0x160002a4,0x08600860,0x00200001,0x22b01a68,0x0045087c,0x00000000,
-0x00000001,0x22b40208,0x00008000,0x00000000,0x00200001,0x22e00208,0x000002b0,0x00000000,
-0x00400008,0x22f01a68,0x1e6902b0,0x00020002,0x0040000c,0x22e01a68,0x1e6902e0,0x00020002,
-0x00400040,0x2ec01a68,0x1a6902f0,0x00694de0,0x00400040,0x23101a68,0x1a6902e0,0x00694e20,
-0x00400040,0x23001a68,0x1a690ec0,0x006942e0,0x00400040,0x23201a68,0x1a6902e0,0x00694e00,
-0x00000001,0x22e01e68,0x00000000,0x00010001,0x06400010,0x20001a60,0x1a690300,0x00694dc0,
-0x00400040,0x23301a28,0x1a690300,0x00690d80,0x00410001,0x2ec01a68,0x00690310,0x00000000,
-0x04400010,0x20000a20,0x1a690330,0x00690dc0,0x00410001,0x2ec01a68,0x00690320,0x00000000,
-0x00400040,0x23401a68,0x1a690ec0,0x00690da0,0x06400040,0x20001a20,0x1a690340,0x00690e40,
-0x00410001,0x2ec01a68,0x00690d60,0x00000000,0x04400010,0x20001a60,0x1a690340,0x00690e80,
-0x00410001,0x2ec01a68,0x00690e60,0x00000000,0x00200040,0x22a41a68,0x1a450ec4,0x00454ec0,
-0x00200001,0x22c81a48,0x004522a4,0x00000000,0x05000010,0x20001260,0x1e0002c8,0x00070007,
-0x05010010,0x20001260,0x1e0002ca,0x00070007,0x01110010,0x20002260,0x1e00002c,0x00000000,
-0x00010002,0x4c781a88,0x1e0002e0,0x00000000,0x01000005,0x20002220,0x1e000c78,0x00010001,
-0x00010020,0x34000004,0x0e001400,0x00000130,0x00200001,0x28801a68,0x00450ec0,0x00000000,
-0x00200001,0x23001e68,0x00000000,0x00000000,0x20005701,0x00461b07,0x20005701,0x00411d07,
-0x00000040,0x22000204,0x060002a8,0x0c98c000,0x20005701,0x00441907,0x00200001,0x22e01a68,
-0x00450880,0x00000000,0x00800001,0x23801a48,0x008d08e0,0x00000000,0x00000001,0x2324020c,
-0x00000300,0x00000000,0x20005701,0x00462107,0x00000005,0x432d228c,0x1600032d,0x00f800f8,
-0x20004001,0x00171900,0x20005701,0x00441f07,0x00000006,0x432d228c,0x1600032d,0x00000000,
-0x08600031,0x27003a0c,0x00000320,0x00000200,0x00000040,0x22000204,0x060002a8,0x10786000,
-0x20005601,0x00392307,0x00000005,0x44342288,0x1e000700,0x00030003,0x20005601,0x003b2507,
-0x00000001,0x4435228c,0x00000719,0x00000000,0x00000001,0x4436228c,0x0000071a,0x00000000,
-0x0d600031,0x29803a0c,0x000003e0,0x00000200,0x00000020,0x34000004,0x0e001400,0x00000280,
-0x00200001,0x28801a68,0x00450ec0,0x00000000,0x00200001,0x23001e68,0x00000000,0x00000000,
-0x20005701,0x00461b07,0x20005701,0x00411d07,0x00000040,0x22000204,0x060002a8,0x0c98c000,
-0x20005701,0x00441907,0x00200001,0x22e01a68,0x00450880,0x00000000,0x00800001,0x23801a48,
-0x008d08e0,0x00000000,0x00000001,0x2324020c,0x00000300,0x00000000,0x20005701,0x00441f07,
-0x00000005,0x432d228c,0x1600032d,0x00f800f8,0x20004001,0x00171900,0x00200001,0x28801a68,
-0x00450ec4,0x00000000,0x20005701,0x00462107,0x00200001,0x23001e68,0x00000000,0x00000000,
-0x20005701,0x00462907,0x00000006,0x432d228c,0x1600032d,0x00000000,0x20005701,0x00442707,
-0x00200001,0x22e01a68,0x00450880,0x00000000,0x20005601,0x00412b07,0x00800001,0x25401a48,
-0x008d08e0,0x00000000,0x08600031,0x27003a0c,0x00000320,0x00000200,0x00000040,0x22000204,
-0x060002a8,0x10786000,0x00000005,0x44ed228c,0x160004ed,0x00f800f8,0x00000001,0x24e4020c,
-0x00000300,0x00000000,0x20004001,0x00172700,0x20005701,0x00461b07,0x20005701,0x00441907,
-0x00000006,0x44ed228c,0x160004ed,0x00000000,0x00000001,0x4436228c,0x0000071a,0x00000000,
-0x20005601,0x00392307,0x00000005,0x44342288,0x1e000700,0x00030003,0x20005601,0x003b2507,
-0x00000001,0x4435228c,0x00000719,0x00000000,0x20005601,0x003f2d07,0x0d600031,0x29803a0c,
-0x000003e0,0x00000200,0x00000040,0x22000204,0x060002a8,0x1099c000,0x08600031,0x27003a0c,
-0x000004e0,0x00000200,0x00000040,0x22000204,0x060002a8,0x10786000,0x20005601,0x00391d07,
-0x00000005,0x43742288,0x1e000700,0x00030003,0x20005601,0x003b1f07,0x00000001,0x4375228c,
-0x00000719,0x00000000,0x00000001,0x4376228c,0x0000071a,0x00000000,0x0d600031,0x24203a0c,
-0x00000320,0x00000200,0x04000010,0x20001240,0x12000428,0x00000988,0x00010020,0x34000004,
-0x0e001400,0x00000018,0x20005601,0x00255007,0x20005601,0x00234e07,0x20005601,0x00214c07,
-0x04000010,0x20001200,0x02000988,0x00000a94,0x00010020,0x34000004,0x0e001400,0x00000058,
-0x00200001,0x2a780208,0x008009e0,0x00000000,0x00000001,0x2a941208,0x00000988,0x00000000,
-0x00200001,0x2a681648,0x00000000,0x0d0d0d0d,0x00000040,0x4a641a88,0x1e000c6c,0x00010001,
-0x00200001,0x2a700208,0x008009a0,0x00000000,0x20004b01,0x004c7507,0x00000040,0x22a41a28,
-0x1e000c6c,0x00010001,0x03000010,0x20002260,0x1e000028,0x00000000,0x00000001,0x22c81e68,
-0x00000000,0x00010001,0x01010010,0x20002220,0x0a00086e,0x000002a4,0x00010002,0x22e01a28,
-0x1e0002c8,0x00000000,0x01000010,0x20000a20,0x1e0002e0,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x000005a8,0x00200040,0x22a42268,0x1e45002a,0xfff0fff0,0x0080000c,0x23201a68,
-0x1e8d0ce0,0x00030003,0x00000001,0x43801e8c,0x00000000,0x00010001,0x00200008,0x22c81a68,
-0x1e4502a4,0x00010001,0x00200040,0x22e01a68,0x1a450ec0,0x004502c8,0x20004b01,0x00171800,
-0x00800040,0x23401a68,0x1a8d0300,0x008d4320,0x00800001,0x23601a48,0x008d2340,0x00000000,
-0x05600010,0x20001260,0x1e400360,0x00070007,0x05610010,0x20001260,0x1e400362,0x00070007,
-0x00610001,0x2d002288,0x00000380,0x00000000,0x02000010,0x20002260,0x1e000c78,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x000000a8,0x00200040,0x22a42268,0x1e45002a,0xfff0fff0,
-0x0080000c,0x23201a68,0x1e8d0ce0,0x00030003,0x00000001,0x43801e8c,0x00000000,0x00010001,
-0x00200008,0x22c81a68,0x1e4502a4,0x00010001,0x00200040,0x22e01a68,0x1a450ec4,0x004502c8,
-0x20004b01,0x00171800,0x00800040,0x23401a68,0x1a8d0300,0x008d4320,0x00800001,0x23601a48,
-0x008d2340,0x00000000,0x05600010,0x20001260,0x1e400360,0x00070007,0x05610010,0x20001260,
-0x1e400362,0x00070007,0x00610001,0x2d002288,0x00000380,0x00000000,0x0080000c,0x22e01a68,
-0x1e8d0ce0,0x00010001,0x00200001,0x22a41a68,0x0045087c,0x00000000,0x00000001,0x4c721e88,
-0x00000000,0x00000000,0x00000001,0x487c1e88,0x00000000,0x00010001,0x00800008,0x23201a68,
-0x1e8d02e0,0x00020002,0x20144b01,0x00151800,0x00800040,0x25c01a68,0x1a8d0320,0x008d4de0,
-0x0080000c,0x23001a68,0x1e8d0300,0x00020002,0x00800040,0x23401a68,0x1a8d05c0,0x008d4300,
-0x00800040,0x23601a68,0x1a8d0300,0x008d4e20,0x00800040,0x23a01a68,0x1a8d0300,0x008d4e00,
-0x06800010,0x20001a60,0x1e8d0340,0xff01ff01,0x00800040,0x23e01a28,0x1a8d0340,0x008d0d80,
-0x00810001,0x25c01a68,0x008d0360,0x00000000,0x04800010,0x20000a20,0x1e8d03e0,0x00ff00ff,
-0x00810001,0x25c01a68,0x008d03a0,0x00000000,0x00800040,0x24201a68,0x1a8d05c0,0x008d0da0,
-0x06800040,0x20001a20,0x1a8d0420,0x008d0e40,0x00810001,0x25c01a68,0x008d0d60,0x00000000,
-0x04800010,0x20001a60,0x1a8d0420,0x008d0e80,0x00810001,0x25c01a68,0x008d0e60,0x00000000,
-0x00000040,0x22002240,0x1600087c,0x0d000d00,0x02000010,0x20002220,0x1e008000,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000290,0x04000010,0x20002260,0x22000c72,0x00000028,
-0x00010020,0x34000004,0x0e001400,0x000002a0,0x00000041,0x22a42248,0x1600087c,0x00040004,
-0x00000040,0x4c722288,0x1e000c72,0x00010001,0x00000040,0x22001240,0x160002a4,0x05c005c0,
-0x00000001,0x28800208,0x00008000,0x00000000,0x20005701,0x00442007,0x00200001,0x23c01a68,
-0x00450880,0x00000000,0x00200001,0x23e01e68,0x00000000,0x00000000,0x20005701,0x00462207,
-0x00000040,0x22000204,0x060002a8,0x0c98c000,0x00000005,0x440d228c,0x1600040d,0x00f800f8,
-0x20005701,0x00412407,0x20004001,0x001e2000,0x00000001,0x2404020c,0x000003e0,0x00000000,
-0x00800001,0x24601a48,0x008d08e0,0x00000000,0x00000006,0x440d228c,0x1600040d,0x00000000,
-0x20005701,0x00462807,0x20005701,0x00442607,0x00200040,0x22c82268,0x1e45002a,0xfff0fff0,
-0x0080000c,0x23401a68,0x1e8d0ce0,0x00030003,0x08600031,0x27003a0c,0x00000400,0x00000200,
-0x00000040,0x22000204,0x060002a8,0x10786000,0x00000001,0x43a01e8c,0x00000000,0x00010001,
-0x00200008,0x22e01a68,0x1e4502c8,0x00010001,0x00200040,0x23001a68,0x1a450880,0x004502e0,
-0x20004b01,0x00181900,0x00000001,0x4515228c,0x00000719,0x00000000,0x00000001,0x4516228c,
-0x0000071a,0x00000000,0x20005601,0x00392a07,0x00000005,0x45142288,0x1e000700,0x00030003,
-0x20005601,0x003b2c07,0x00800040,0x23601a68,0x1a8d0320,0x008d4340,0x0d600031,0x29803a0c,
-0x000004c0,0x00000200,0x00800001,0x23801a48,0x008d2360,0x00000000,0x05600010,0x20001260,
-0x1e400380,0x00070007,0x05610010,0x20001260,0x1e400382,0x00070007,0x00610001,0x2d002288,
-0x000003a0,0x00000000,0x04000010,0x20001200,0x02000988,0x00000a94,0x00010020,0x34000004,
-0x0e001400,0x00000058,0x00200001,0x2a780208,0x008009e0,0x00000000,0x00000001,0x2a941208,
-0x00000988,0x00000000,0x00200001,0x2a681648,0x00000000,0x0d0d0d0d,0x00000040,0x4a641a88,
-0x1e000c6c,0x00010001,0x00200001,0x2a700208,0x008009a0,0x00000000,0x20004b01,0x004c7507,
-0x00000040,0x487c2288,0x1e00087c,0x00010001,0x05000010,0x20002260,0x1e00087c,0x00080008,
-0x00010020,0x34000004,0x0e001400,0xfffffd10,0x00000040,0x487a2288,0x1e00087a,0x00010001,
-0x05000010,0x20002260,0x2200087a,0x00000c68,0x00010020,0x34000004,0x0e001400,0xffffe740,
-0x02000005,0x4a6c2288,0x1e000ea0,0x00030003,0x00200001,0x2a981208,0x00450ea8,0x00000000,
-0x00600009,0x2a701a68,0x1e8d0a70,0x00010001,0x00010020,0x34000004,0x0e001400,0x000001a0,
-0x00000040,0x2c6c2268,0x1e000a64,0xffffffff,0x00000041,0x22a41a28,0x1e000c6c,0x00020002,
-0x00000041,0x22c81248,0x160002a4,0x00100010,0x00000040,0x22001240,0x160002c8,0x06800680,
-0x00000040,0x22021240,0x160002c8,0x06800680,0x02000010,0x20000200,0x02000a70,0x00008000,
-0x02010010,0x20000200,0x02000a70,0x00008204,0x02010010,0x20000200,0x16000a70,0x00000000,
-0x00000001,0x22e01e68,0x00000000,0x00010001,0x00010002,0x23001a28,0x1e0002e0,0x00000000,
-0x01000010,0x20000a20,0x1e000300,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000190,
-0x00000041,0x22a41a28,0x1e000c6c,0x00020002,0x0020000c,0x29001a68,0x1e450a70,0x00010001,
-0x00000040,0x22000204,0x060002a8,0x10782000,0x00400001,0x28b82288,0x00000c6c,0x00000000,
-0x00000041,0x22ac1248,0x160002a4,0x00100010,0x0d600031,0x29803a0c,0x00000880,0x00000200,
-0x00000040,0x22001240,0x160002ac,0x06800680,0x00200001,0xa00c1a68,0x00450a70,0x00000000,
-0x00000040,0x22c80a28,0x1e0002a4,0x00010001,0x00000041,0x22e01248,0x160002c8,0x00100010,
-0x00000040,0x22001240,0x160002e0,0x06800680,0x00200001,0xa00c1248,0x00450988,0x00000000,
-0x00000001,0x2a9c1208,0x0000098a,0x00000000,0x00000020,0x34000004,0x0e001400,0x000000b0,
-0x00000040,0x42a42288,0x1e000a64,0xffffffff,0x00400001,0x49000208,0x00690a70,0x00000000,
-0x00000001,0x48bf1e88,0x00000000,0x00550055,0x00000006,0x488d2288,0x1e00088d,0x00400040,
-0x00000040,0x22000204,0x060002a8,0x10782000,0x00400001,0x28b82288,0x000002a4,0x00000000,
-0x0080000c,0x29001a68,0x1e8d0900,0x00010001,0x0d600031,0x29803a0c,0x00000880,0x00000200,
-0x00000001,0x48bf1e88,0x00000000,0x00010001,0x00000005,0x488d2288,0x1e00088d,0x00bf00bf,
-0x00000001,0x2a9c1208,0x0000098a,0x00000000,0x04000010,0x20000200,0x02000a90,0x00000a94,
-0x00010020,0x34000004,0x0e001400,0x00000090,0x00000041,0x22a42228,0x1e000a6d,0x00030003,
-0x00000001,0x2a681608,0x00000000,0x00000000,0x00000001,0x46ec1e88,0x00000000,0x00000000,
-0x00600001,0x2a701e68,0x00000000,0x00000000,0x00000001,0x4c721e88,0x00000000,0x00000000,
-0x00000001,0x4a641e88,0x00000000,0x00000000,0x00000001,0x26e00208,0x00000a90,0x00000000,
-0x00000040,0x6a6d0a88,0x1e0042a4,0x00060006,0x00000020,0x34000004,0x0e001400,0x000001a0,
-0x02000010,0x20002260,0x1e000a6c,0x00000000,0x00000001,0x4c721e88,0x00000000,0x00010001,
-0x00010020,0x34000004,0x0e001400,0x00000048,0x01000010,0x20000200,0x06000c74,0x00010001,
-0x00010020,0x34000004,0x0e001400,0x00000028,0x00000001,0x4a6c1e88,0x00000000,0x00030003,
-0x20244101,0x00535300,0x00200001,0x2a681648,0x00000000,0x0d0d0d0d,0x01000010,0x20002260,
-0x1e000a6c,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000098,0x01400010,0x20000200,
-0x16690a70,0x00000000,0x00000001,0x22a41e68,0x00000000,0x00010001,0x00600001,0x22e01648,
-0x00000000,0x00000000,0x00000001,0x43001e8c,0x00000000,0x000c000c,0x00200001,0x2a681648,
-0x00000000,0x0d0d0d0d,0x00410002,0x22e01a48,0x1e0002a4,0x00000000,0x2203eb10,0x00170007,
-0x00000001,0x22c81048,0x00000600,0x00000000,0x00000005,0x26001240,0x160002c8,0x000f000f,
-0x00410001,0x2a682288,0x00000300,0x00000000,0x04600002,0x42e00a68,0x1a8d0d20,0x008d0a70,
-0x00000040,0x4a6c2288,0x1e004a6c,0x00060006,0x00000001,0x46ec2288,0x00000a64,0x00000000,
-0x00000001,0x26e00208,0x00000a94,0x00000000,0x00600001,0x2a701a68,0x004002e0,0x00000000,
-0x06600002,0x43000a68,0x1a8d0d40,0x008d0a70,0x00600001,0x2a701a68,0x00400300,0x00000000,
-0x20004d01,0x00001707,0x00000040,0x22000204,0x060002d4,0x020a8000,0x00000001,0x22e8060c,
-0x00000000,0x0007000f,0x00000041,0x22e41a28,0x1e000cd2,0x00020002,0x00000001,0x22e01a28,
-0x00000cd0,0x00000000,0x01000005,0x20002220,0x1e000878,0x00010001,0x00000001,0x4c781e88,
-0x00000000,0x00000000,0x0c600033,0x00034014,0x000022e4,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00002090,0x00000040,0x23a00a28,0x0a000cb8,0x00000cac,0x00000040,0x22c80a28,
-0x0a000ca8,0x00000cb4,0x00000040,0x24600a28,0x0a000cb0,0x00000cac,0x00000040,0x22a40a28,
-0x0a000ca8,0x00000cbc,0x00000040,0x22000204,0x060002d0,0x02280300,0x00000008,0x23c80a08,
-0x1e0003a0,0x00040004,0x00000008,0x23880a08,0x1e0002c8,0x00040004,0x00000008,0x24880a08,
-0x1e000460,0x00040004,0x00000008,0x22e80a08,0x1e0002a4,0x00040004,0x00000040,0x22a40a28,
-0x0a000cb8,0x00000cbc,0x0a800031,0x23e03a6c,0x000003c0,0x00000200,0x0a800031,0x23403a6c,
-0x00000380,0x00000200,0x0a800031,0x24203a6c,0x00000480,0x00000200,0x0a800031,0x23003a6c,
-0x000002e0,0x00000200,0x00000040,0x22000204,0x060002d0,0x02180200,0x00000008,0x22e80a08,
-0x1e0002a4,0x00040004,0x0a600031,0x23803a0c,0x000002e0,0x00000200,0x60204101,0x001f2605,
-0x60004101,0x001f2505,0x00000001,0x4cc02288,0x00000344,0x00000000,0x00000001,0x2aa00208,
-0x0000035c,0x00000000,0x60104101,0x00212505,0x60244101,0x00212605,0x00000001,0x2ab40208,
-0x00000318,0x00000000,0x00000001,0x4cc52288,0x00000304,0x00000000,0x00000001,0x2ab80208,
-0x000004c4,0x00000000,0x00000001,0x4cc62288,0x000004a4,0x00000000,0x20006101,0xff0021f8,
-0x00000001,0x4cc12288,0x000004b4,0x00000000,0x00000001,0x2aa40208,0x000004dc,0x00000000,
-0x00400001,0x24301e08,0x00000000,0x00000000,0x00000001,0x2abc0208,0x0000039c,0x00000000,
-0x00000001,0x4cc72288,0x00000384,0x00000000,0x0a600031,0x22e03a08,0x06000000,0x0219e000,
-0x20004d01,0x00171707,0x20004d01,0x00001d07,0x00000040,0x22000204,0x060002d4,0x02890000,
-0x00000001,0x23a8060c,0x00000000,0x0007001f,0x00000041,0x23a41a28,0x1e000cd6,0x00020002,
-0x00000001,0x23a01a28,0x00000cd4,0x00000000,0x06000010,0x20002260,0x1e000c68,0x00000000,
-0x00000001,0x44401e88,0x00000000,0x00000000,0x0c800031,0x26803a4c,0x000003a0,0x00000200,
-0x00000001,0x23a01a28,0x00000cd4,0x00000000,0x00000041,0x23a41a28,0x1e000cd2,0x00020002,
-0x0c800031,0x27803a4c,0x000003a0,0x00000200,0x00400005,0x42ac2288,0x22690744,0x00690754,
-0x00000040,0x22e00208,0x02000740,0x00000750,0x00000001,0x44492288,0x0000075c,0x00000000,
-0x00000001,0x44482288,0x0000074c,0x00000000,0x00400005,0x42d82288,0x224002ac,0x00690844,
-0x00000001,0x444b2288,0x0000085c,0x00000000,0x00000001,0x444a2288,0x0000084c,0x00000000,
-0x00000040,0x23000208,0x020002e0,0x00000840,0x00200005,0x4c7c2288,0x226002d8,0x00400854,
-0x00200005,0x4c7d2288,0x226002da,0x00400855,0x00000001,0x24480208,0x00000448,0x00000000,
-0x00000040,0x24440208,0x02000300,0x00000850,0x00010020,0x34000004,0x0e001400,0x00001858,
-0x00000041,0x22a42248,0x16000440,0x00020002,0x00000040,0x22001240,0x160002a4,0x0ba00ba0,
-0x00000001,0x2c6c1a68,0x00008000,0x00000000,0x00000040,0x22001240,0x16000c6c,0x0c7c0c7c,
-0x01000010,0x20002220,0x1e008000,0x00000000,0x00010020,0x34000004,0x0e001400,0x000017f8,
-0x00000040,0x22a41a28,0x1e000c6c,0x00010001,0x00000001,0x22c81e68,0x00000000,0x00010001,
-0x00600001,0x22e01648,0x00000000,0x00000000,0x01400010,0x20002220,0x0a690448,0x000002a4,
-0x00410002,0x22e01a48,0x1e0002c8,0x00000000,0x2203eb10,0x00170007,0x00000001,0x23001048,
-0x00000600,0x00000000,0x00000005,0x43201288,0x16000300,0x000f000f,0x0000004d,0x23402208,
-0x00000320,0x00000000,0x05000010,0x20000200,0x22000340,0x0000002f,0x00010020,0x34000004,
-0x0e001400,0x00001720,0x00000040,0x42a41a88,0x1e000c6c,0x00010001,0x00000006,0x22a61248,
-0x22000c6a,0x00000c6e,0x20005601,0x00551907,0x20005601,0x00551707,0x00600001,0x2ce01e08,
-0x00000000,0x00000000,0x01800010,0x20002260,0x228d0cc0,0x000002a4,0x00000001,0x22c81048,
-0x00000600,0x00000000,0x02800010,0x20002260,0x1e8d0cc0,0x00000000,0x00000005,0x244c1248,
-0x120002a6,0x000002c8,0x00000001,0x22c81048,0x00000600,0x00000000,0x00000005,0x244e1248,
-0x120002a6,0x000002c8,0x0000004c,0x24500208,0x0000044c,0x00000000,0x03000010,0x20000200,
-0x16000450,0x00180018,0x00010020,0x34000004,0x0e001400,0x000000e0,0x00000041,0x22a41248,
-0x16000450,0x00040004,0x00000040,0x22001240,0x160002a4,0x02e002e0,0x00000001,0x2ce00208,
-0x00008000,0x00000000,0x02800010,0x20000220,0x028d0aa0,0x00000ce0,0x00000001,0x22c81048,
-0x00000600,0x00000000,0x02800010,0x20000220,0x028d0aa0,0x00000ce0,0x00000001,0x22ca1048,
-0x00000600,0x00000000,0x00000005,0x244c0208,0x0200044c,0x000002c8,0x0000004c,0x22c00208,
-0x0000044c,0x00000000,0x03000010,0x20000200,0x160002c0,0x00180018,0x00010020,0x34000004,
-0x0e001400,0x00000030,0x00000041,0x22a41248,0x160002c0,0x00040004,0x00000040,0x22001240,
-0x160002a4,0x02e002e0,0x00000001,0x2ce40208,0x00008000,0x00000000,0x00000041,0x22a41a28,
-0x1e000c6c,0x00020002,0x04800002,0x42e00a68,0x1a8d0ae0,0x008d0ce0,0x00000001,0x42ac0a48,
-0x000002a4,0x00000000,0x00800001,0x2ce01a68,0x004002e0,0x00000000,0x00000009,0x22c81248,
-0x160002ac,0x00050005,0x06800002,0x43200a68,0x1a8d0b20,0x008d0ce0,0x00000040,0x22001240,
-0x160002c8,0x06800680,0x00800001,0x2ce01a68,0x00400320,0x00000000,0x00600001,0x23e00208,
-0x00208000,0x00000000,0x00000040,0x22001240,0x160002c8,0x07800780,0x00600001,0x24000208,
-0x00208000,0x00000000,0x00000040,0x43600a48,0x1e0002a4,0x00010001,0x00000009,0x23801248,
-0x16000360,0x00050005,0x00000040,0x22001240,0x16000380,0x06800680,0x00600001,0x24801248,
-0x00408000,0x00000000,0x00000040,0x22001240,0x16000380,0x07800780,0x00600001,0x24901248,
-0x00408000,0x00000000,0x00000040,0x22001240,0x16000380,0x06800680,0x00600001,0x24601248,
-0x00408002,0x00000000,0x00000040,0x22001240,0x16000380,0x07800780,0x00600001,0x24701248,
-0x00408002,0x00000000,0x01800010,0x20000220,0x028d03e0,0x00000ce0,0x00000001,0x22a41e68,
-0x00000000,0x00010001,0x00000001,0x22ac1a08,0x00000c6c,0x00000000,0x00400001,0x28b82288,
-0x00000c6c,0x00000000,0x0020000c,0x29001a68,0x1e450ce0,0x00010001,0x00000001,0x48ca1e88,
-0x00000000,0x00000000,0x00000041,0x24421a48,0x12000c6c,0x000000ae,0x00810002,0x42e01a88,
-0x1e0002a4,0x00000000,0x00800001,0x23002288,0x004002e0,0x00000000,0x00400001,0x63031e88,
-0x00000000,0x00000000,0x00800041,0x23201228,0x228d0480,0x008d0300,0x00800041,0x23801248,
-0x228d0460,0x008d0300,0x03400010,0x20000200,0x16690300,0x00000000,0x0000000c,0x23001a28,
-0x1e000ce2,0x00010001,0x20018b40,0x1a191be7,0x0000000c,0x23401a28,0x1e000ce0,0x00010001,
-0x04600002,0x23a01248,0x128d0380,0x008d0390,0x00000041,0x23200228,0x120002ac,0x000000ae,
-0x00410002,0x24501a48,0x1e0002a4,0x00000000,0x606d8140,0x1b1b1bad,0x00400001,0x68e00a68,
-0x00000340,0x00000000,0x04400002,0x23c01248,0x126903a0,0x006903a8,0x02000010,0x20001260,
-0x1e000450,0x00000000,0x00200040,0x23600a28,0x0a450360,0x00450368,0x04200002,0x22c81248,
-0x124503c0,0x004503c4,0x00000040,0x24340a08,0x0a000360,0x00000364,0x00000001,0x43600a6c,
-0x00000300,0x00000000,0x04000002,0x22e01248,0x120002c8,0x000002ca,0x00000040,0x22a40208,
-0x12000434,0x000000ac,0x00400001,0x68e21a68,0x00000360,0x00000000,0x00000001,0x24381208,
-0x000002e0,0x00000000,0x00000040,0x24300a08,0x02000320,0x000002a4,0x00010020,0x34000004,
-0x0e001400,0x000000b0,0x03000010,0x20000200,0x02000430,0x00000420,0x00000001,0x22a41e68,
-0x00000000,0x00010001,0x03110010,0x20000200,0x02000430,0x00000444,0x00010002,0x22c81a28,
-0x1e0002a4,0x00000000,0x02000010,0x20000a20,0x1e0002c8,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x000002c0,0x00200001,0x28881248,0x00450bb0,0x00000000,0x00000040,0x22000204,
-0x060002a8,0x10782000,0x0d600031,0x29803a0c,0x00000880,0x00000200,0x00000040,0x24300208,
-0x12000430,0x00000988,0x03000002,0x24381208,0x0200098a,0x00000438,0x02000010,0x20001260,
-0x1e000452,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000b0,0x03000010,0x20000200,
-0x02000430,0x00000420,0x00000001,0x22a41e68,0x00000000,0x00010001,0x03110010,0x20000200,
-0x02000430,0x00000444,0x00010002,0x22c81a28,0x1e0002a4,0x00000000,0x02000010,0x20000a20,
-0x1e0002c8,0x00000000,0x00010020,0x34000004,0x0e001400,0x000001f0,0x00200001,0x28881248,
-0x00450bb4,0x00000000,0x00000040,0x22000204,0x060002a8,0x10782000,0x0d600031,0x29803a0c,
-0x00000880,0x00000200,0x00000040,0x24300208,0x12000430,0x00000988,0x03000002,0x24381208,
-0x0200098a,0x00000438,0x02000010,0x20001260,0x1e000454,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x000000b0,0x03000010,0x20000200,0x02000430,0x00000420,0x00000001,0x22a41e68,
-0x00000000,0x00010001,0x03110010,0x20000200,0x02000430,0x00000444,0x00010002,0x22c81a28,
-0x1e0002a4,0x00000000,0x02000010,0x20000a20,0x1e0002c8,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000120,0x00200001,0x28881248,0x00450bb8,0x00000000,0x00000040,0x22000204,
-0x060002a8,0x10782000,0x0d600031,0x29803a0c,0x00000880,0x00000200,0x00000040,0x24300208,
-0x12000430,0x00000988,0x03000002,0x24381208,0x0200098a,0x00000438,0x02000010,0x20001260,
-0x1e000456,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000b0,0x03000010,0x20000200,
-0x02000430,0x00000420,0x00000001,0x22a41e68,0x00000000,0x00010001,0x03110010,0x20000200,
-0x02000430,0x00000444,0x00010002,0x22c81a28,0x1e0002a4,0x00000000,0x02000010,0x20000a20,
-0x1e0002c8,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000050,0x00200001,0x28881248,
-0x00450bbc,0x00000000,0x00000040,0x22000204,0x060002a8,0x10782000,0x0d600031,0x29803a0c,
-0x00000880,0x00000200,0x00000040,0x24300208,0x12000430,0x00000988,0x03000002,0x24381208,
-0x0200098a,0x00000438,0x04000010,0x20000200,0x02000430,0x00000420,0x00010020,0x34000004,
-0x0e001400,0x00000058,0x00000040,0x22a40208,0x12000430,0x000040ac,0x60204101,0x00212105,
-0x00200001,0x2cd81a68,0x00450ce0,0x00000000,0x00000001,0x4cdc1e88,0x00000000,0x000a000a,
-0x00000040,0x4cde1a88,0x1e000c6c,0x00010001,0x00000040,0x24240208,0x120002a4,0x00004442,
-0x01000010,0x20000200,0x02000ce0,0x00000ce4,0x00010020,0x34000004,0x0e001400,0x00000548,
-0x01800010,0x20000220,0x028d03e0,0x00000ce4,0x00000001,0x22a41e68,0x00000000,0x00010001,
-0x0020000c,0x29001a68,0x1e450ce4,0x00010001,0x00810002,0x42e01a88,0x1e0002a4,0x00000000,
-0x00800001,0x23002288,0x004002e0,0x00000000,0x00400001,0x63031e88,0x00000000,0x00000000,
-0x00800041,0x23201228,0x228d0480,0x008d0300,0x00800041,0x23801248,0x228d0460,0x008d0300,
-0x03400010,0x20000200,0x16690300,0x00000000,0x20018b40,0x1a191be7,0x0000000c,0x23401a28,
-0x1e000ce6,0x00010001,0x04600002,0x23a01248,0x128d0380,0x008d0390,0x0000000c,0x23201a28,
-0x1e000ce4,0x00010001,0x00410002,0x24501a48,0x1e0002a4,0x00000000,0x606d8140,0x1b1b1bad,
-0x00000001,0x43000a6c,0x00000340,0x00000000,0x04400002,0x23c01248,0x126903a0,0x006903a8,
-0x00400001,0x68e00a68,0x00000320,0x00000000,0x02000010,0x20001260,0x1e000450,0x00000000,
-0x00200040,0x23600a28,0x0a450360,0x00450368,0x00400001,0x68e21a68,0x00000300,0x00000000,
-0x04200002,0x22c81248,0x124503c0,0x004503c4,0x00000040,0x24340a08,0x0a000360,0x00000364,
-0x04000002,0x22e01248,0x120002c8,0x000002ca,0x00000040,0x22a40208,0x12000434,0x000000aa,
-0x00000001,0x24381208,0x000002e0,0x00000000,0x00000040,0x24300208,0x120002a4,0x00000442,
-0x00010020,0x34000004,0x0e001400,0x000000b0,0x03000010,0x20000200,0x02000430,0x00000420,
-0x00000001,0x22a41e68,0x00000000,0x00010001,0x03110010,0x20000200,0x02000430,0x00000444,
-0x00010002,0x22c81a28,0x1e0002a4,0x00000000,0x02000010,0x20000a20,0x1e0002c8,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x000002c0,0x00200001,0x28881248,0x00450bb0,0x00000000,
-0x00000040,0x22000204,0x060002a8,0x10782000,0x0d600031,0x29803a0c,0x00000880,0x00000200,
-0x00000040,0x24300208,0x12000430,0x00000988,0x03000002,0x24381208,0x0200098a,0x00000438,
-0x02000010,0x20001260,0x1e000452,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000b0,
-0x03000010,0x20000200,0x02000430,0x00000420,0x00000001,0x22a41e68,0x00000000,0x00010001,
-0x03110010,0x20000200,0x02000430,0x00000444,0x00010002,0x22c81a28,0x1e0002a4,0x00000000,
-0x02000010,0x20000a20,0x1e0002c8,0x00000000,0x00010020,0x34000004,0x0e001400,0x000001f0,
-0x00200001,0x28881248,0x00450bb4,0x00000000,0x00000040,0x22000204,0x060002a8,0x10782000,
-0x0d600031,0x29803a0c,0x00000880,0x00000200,0x00000040,0x24300208,0x12000430,0x00000988,
-0x03000002,0x24381208,0x0200098a,0x00000438,0x02000010,0x20001260,0x1e000454,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x000000b0,0x03000010,0x20000200,0x02000430,0x00000420,
-0x00000001,0x22a41e68,0x00000000,0x00010001,0x03110010,0x20000200,0x02000430,0x00000444,
-0x00010002,0x22c81a28,0x1e0002a4,0x00000000,0x02000010,0x20000a20,0x1e0002c8,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000120,0x00200001,0x28881248,0x00450bb8,0x00000000,
-0x00000040,0x22000204,0x060002a8,0x10782000,0x0d600031,0x29803a0c,0x00000880,0x00000200,
-0x00000040,0x24300208,0x12000430,0x00000988,0x03000002,0x24381208,0x0200098a,0x00000438,
-0x02000010,0x20001260,0x1e000456,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000b0,
-0x03000010,0x20000200,0x02000430,0x00000420,0x00000001,0x22a41e68,0x00000000,0x00010001,
-0x03110010,0x20000200,0x02000430,0x00000444,0x00010002,0x22c81a28,0x1e0002a4,0x00000000,
-0x02000010,0x20000a20,0x1e0002c8,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000050,
-0x00200001,0x28881248,0x00450bbc,0x00000000,0x00000040,0x22000204,0x060002a8,0x10782000,
-0x0d600031,0x29803a0c,0x00000880,0x00000200,0x00000040,0x24300208,0x12000430,0x00000988,
-0x03000002,0x24381208,0x0200098a,0x00000438,0x04000010,0x20000200,0x02000430,0x00000420,
-0x00010020,0x34000004,0x0e001400,0x00000058,0x00000040,0x22a40208,0x12000430,0x000040aa,
-0x60204101,0x00212105,0x00200001,0x2cd81a68,0x00450ce4,0x00000000,0x00000001,0x4cdc1e88,
-0x00000000,0x000b000b,0x00000040,0x4cde1a88,0x1e000c6c,0x00010001,0x00000040,0x24240208,
-0x120002a4,0x00004442,0x02000010,0x20000200,0x16000ce0,0x00000000,0x00000001,0x22a41e68,
-0x00000000,0x00010001,0x02010010,0x20000200,0x16000ce4,0x00000000,0x02010010,0x20000200,
-0x02000ce0,0x00000ce4,0x00010002,0x22c81a28,0x1e0002a4,0x00000000,0x01000010,0x20000a20,
-0x1e0002c8,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000168,0x01800010,0x20000220,
-0x168d03e0,0x00000000,0x00000001,0x22a41e68,0x00000000,0x00010001,0x00810002,0x42e01a88,
-0x1e0002a4,0x00000000,0x00800001,0x23002288,0x004002e0,0x00000000,0x00400001,0x63031e88,
-0x00000000,0x00000000,0x00800041,0x23201228,0x228d0480,0x008d0300,0x00800041,0x23801248,
-0x228d0460,0x008d0300,0x20018b40,0x1a191be7,0x04600002,0x23a01248,0x128d0380,0x008d0390,
-0x606d8140,0x1b1b1bad,0x04400002,0x23c01248,0x126903a0,0x006903a8,0x00200040,0x23600a28,
-0x0a450360,0x00450368,0x04200002,0x22c81248,0x124503c0,0x004503c4,0x00000040,0x24340a08,
-0x0a000360,0x00000364,0x04000002,0x22a41248,0x120002c8,0x000002ca,0x00000040,0x22e00208,
-0x12000434,0x000000a8,0x00000001,0x24381208,0x000002a4,0x00000000,0x00000040,0x24300208,
-0x120002e0,0x00000442,0x04000010,0x20000200,0x02000430,0x00000420,0x00010020,0x34000004,
-0x0e001400,0x00000038,0x00000001,0x4cdc1e88,0x00000000,0x000c000c,0x00000040,0x4cde1a88,
-0x1e000c6c,0x00010001,0x00200001,0x2cd81e68,0x00000000,0x00000000,0x60204101,0x00212105,
-0x00000040,0x22a41a28,0x1e000c6c,0x00080008,0x00200001,0x22b03648,0x00000000,0x10101010,
-0x00000040,0x22001240,0x160002a4,0x07400740,0x00200041,0x22b01248,0x164502b0,0x00100010,
-0x00200040,0x22001040,0x12000200,0x004502b0,0x00200001,0x22ac2288,0x01e08000,0x00000000,
-0x00000040,0x22001240,0x160002a4,0x08400840,0x00200040,0x22001040,0x12000200,0x004502b0,
-0x00200001,0x22ae2288,0x01e08000,0x00000000,0x02400005,0x20002260,0x166902ac,0x00010001,
-0x00410001,0x63e40208,0x006003e0,0x00000000,0x01800010,0x20000220,0x028d03e0,0x00000ce0,
-0x00000001,0x22c81048,0x00000600,0x00000000,0x01800010,0x20000220,0x028d03e0,0x00000ce4,
-0x00000001,0x22d81048,0x00000600,0x00000000,0x01800010,0x20000220,0x168d03e0,0x00000000,
-0x00000006,0x22e01228,0x120002c8,0x000002d8,0x00000001,0x22dc1048,0x00000600,0x00000000,
-0x00000006,0x23000a28,0x120002e0,0x000002dc,0x00000004,0x44580a48,0x00000300,0x00000000,
-0x06000010,0x20001260,0x1e000458,0x00000000,0x00010020,0x34000004,0x0e001400,0x000005e8,
-0x0000004c,0x22a41208,0x00000458,0x00000000,0x00000041,0x22c81248,0x160002a4,0x00040004,
-0x00000040,0x22001240,0x160002c8,0x03e003e0,0x00000001,0x244c0208,0x00008000,0x00000000,
-0x01800010,0x20000220,0x028d03e0,0x0000044c,0x00000001,0x22e01e68,0x00000000,0x00010001,
-0x00810002,0x24a01a48,0x1e0002e0,0x00000000,0x02800010,0x20001260,0x168d04a0,0x00000000,
-0x00000001,0x23001048,0x00000600,0x00000000,0x0000004d,0x23201208,0x00000300,0x00000000,
-0x00000004,0x23041228,0x00000300,0x00000000,0x00000001,0x63400288,0x00000320,0x00000000,
-0x00000005,0x44581248,0x0a000458,0x00000304,0x06000010,0x20002260,0x22000340,0x00000027,
-0x00010020,0x34000004,0x0e001400,0x000004d8,0x00800001,0x22e02288,0x004004a0,0x00000000,
-0x00800041,0x23201228,0x128d0480,0x008d04a0,0x00000001,0x22a41e68,0x00000000,0x00010001,
-0x00600001,0x23001648,0x00000000,0x00000000,0x00000040,0x23841208,0x120000d6,0x00000442,
-0x03400010,0x20000200,0x166902e0,0x00000000,0x00800041,0x22e01248,0x128d0460,0x008d04a0,
-0x20018b40,0x1a191be7,0x00000001,0x43c61e88,0x00000000,0x00010001,0x00000001,0x43c41e88,
-0x00000000,0x00000000,0x00410002,0x23001a48,0x1e0002a4,0x00000000,0x04600002,0x23a01248,
-0x128d02e0,0x008d02f0,0x606d8140,0x1b1b1bad,0x2203eb10,0x00180007,0x04400002,0x22b01248,
-0x126903a0,0x006903a8,0x00200040,0x23600a28,0x0a450360,0x00450368,0x00000001,0x22c81048,
-0x00000600,0x00000000,0x04200002,0x23001248,0x124502b0,0x004502b4,0x00000040,0x23800a08,
-0x0a000360,0x00000364,0x00000005,0x43c01288,0x160002c8,0x000f000f,0x04000002,0x23c21248,
-0x12000300,0x00000302,0x00000040,0x245c0208,0x02000380,0x00000384,0x00000001,0x22a41e68,
-0x00000000,0x00010001,0x00000009,0x22c81a28,0x220002a4,0x000003c4,0x02000005,0x20002220,
-0x0a0003c0,0x000002c8,0x00010020,0x34000004,0x0e001400,0x00000150,0x03000010,0x20000200,
-0x0200045c,0x00000420,0x00010020,0x34000004,0x0e001400,0x00000160,0x03000010,0x20000200,
-0x0200045c,0x00000444,0x00010020,0x34000004,0x0e001400,0x00000140,0x00000041,0x22c82248,
-0x160003c4,0x00040004,0x02000005,0x20002260,0x160003c6,0x00010001,0x00000001,0x22a41e68,
-0x00000000,0x00240024,0x00000040,0x22001240,0x160002c8,0x0bb00bb0,0x00010002,0x48bc1a88,
-0x1e0002a4,0x00040004,0x00000001,0x28880208,0x00008000,0x00000000,0x0000000c,0x23001a28,
-0x1e000ce2,0x00010001,0x0000000c,0x22e01a28,0x1e000ce0,0x00010001,0x0020000c,0x29001a68,
-0x1e45044c,0x00010001,0x00000040,0x22000204,0x060002a8,0x10782000,0x00000001,0x43c61e88,
-0x00000000,0x00000000,0x00000001,0x43200a6c,0x00000300,0x00000000,0x00400001,0x68e00a68,
-0x000002e0,0x00000000,0x00400001,0x68e21a68,0x00000320,0x00000000,0x0d600031,0x29803a0c,
-0x00000880,0x00000200,0x00000040,0x245c0208,0x1200045c,0x00000988,0x03000002,0x23c21248,
-0x1200098a,0x000003c2,0x00000040,0x43c42288,0x1e0003c4,0x00010001,0x05000010,0x20002260,
-0x1e0003c4,0x00040004,0x00010020,0x34000004,0x0e001400,0xfffffe40,0x01000010,0x20002260,
-0x1e0003c6,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000090,0x00200040,0x22b01a28,
-0x1a45044c,0x00454ce0,0x00000001,0x22041640,0x00000000,0x05e005e0,0x00000001,0x22021640,
-0x00000000,0x0cd40cd4,0x0020000c,0x42e00a68,0x1e4502b0,0x00010001,0x00200001,0x2cd41a68,
-0x004002e0,0x00000000,0x0080002c,0x24500008,0x0e450000,0x00000f50,0x00008001,0x20000204,
-0x00000000,0x00000000,0x00200001,0x23c41a68,0x00450cd4,0x00000000,0x00000040,0x245c0208,
-0x1200045c,0x000003c0,0x04000010,0x20000200,0x0200045c,0x00000420,0x00010020,0x34000004,
-0x0e001400,0x00000100,0x00200040,0x22b01a28,0x1a45044c,0x00454ce0,0x00000001,0x22041640,
-0x00000000,0x05e005e0,0x00000001,0x24281208,0x000003c2,0x00000000,0x00000001,0x24200208,
-0x0000045c,0x00000000,0x00000001,0x22021640,0x00000000,0x0cd00cd0,0x0020000c,0x42e00a68,
-0x1e4502b0,0x00010001,0x00200001,0x2cd01a68,0x004002e0,0x00000000,0x0080002c,0x24500008,
-0x0e450000,0x00000e80,0x00008001,0x20000204,0x00000000,0x00000000,0x00000040,0x22a40208,
-0x12000420,0x00004442,0x00000040,0x4cde1a88,0x1e000c6c,0x00010001,0x00200001,0x23c41a68,
-0x00450cd0,0x00000000,0x00000001,0x4cdc1e88,0x00000000,0x000d000d,0x00200001,0x2cd81a68,
-0x0045044c,0x00000000,0x00000040,0x22c80208,0x120002a4,0x000040d6,0x00000040,0x24240208,
-0x120002c8,0x000043c0,0x03000010,0x20001260,0x1e000458,0x00000000,0x00010020,0x34000004,
-0x0e001400,0xfffffa18,0x00000040,0x44402288,0x1e000440,0x00010001,0x05000010,0x20002260,
-0x22000440,0x00000c68,0x00010020,0x34000004,0x0e001400,0xffffe7a8,0x03000010,0x20000200,
-0x02000420,0x00000444,0x00010020,0x34000004,0x0e001400,0x00000080,0x00400001,0x2a682288,
-0x00000cdc,0x00000000,0x00000001,0x2a940208,0x00000420,0x00000000,0x00400001,0x2a700208,
-0x00000cd8,0x00000000,0x00000001,0x4c721e88,0x00000000,0x00010001,0x00000001,0x4a642288,
-0x00000cde,0x00000000,0x00000001,0x4c781e88,0x00000000,0x00010001,0x00000001,0x4a6c1e88,
-0x00000000,0x00090009,0x00200001,0x2a980208,0x00450424,0x00000000,0x01000010,0x20002260,
-0x1e000034,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000400,0x03000010,0x20000200,
-0x02000420,0x00000444,0x00010020,0x34000004,0x0e001400,0x00000060,0x00000040,0x22a42228,
-0x1e000a64,0x00020002,0x00000001,0x2bc40208,0x00000420,0x00000000,0x00000041,0x22c81248,
-0x160002a4,0x00040004,0x00000040,0x22001240,0x160002c8,0x0bc00bc0,0x00000001,0xa0001608,
-0x00000000,0x00100010,0x00000020,0x34000004,0x0e001400,0x00000340,0x01400010,0x20002260,
-0x1e690448,0x00000000,0x00000001,0x22a41e68,0x00000000,0x00010001,0x00600001,0x23201648,
-0x00000000,0x00000000,0x00000001,0x22e80208,0x00000840,0x00000000,0x00000001,0x22e40208,
-0x00000750,0x00000000,0x00000001,0x22e00208,0x00000740,0x00000000,0x00000001,0x22ec0208,
-0x00000850,0x00000000,0x00400001,0x22f01e08,0x00000000,0x00000000,0x00410002,0x23201a48,
-0x1e0002a4,0x00000000,0x00600001,0x23401648,0x00000000,0x00000000,0x00600001,0x23601648,
-0x00000000,0x00000000,0x00400001,0x23001608,0x00000000,0x00000000,0x2203eb10,0x00190007,
-0x00400001,0x23601248,0x00690320,0x00000000,0x00000001,0x22a61048,0x00000600,0x00000000,
-0x00000005,0x26001240,0x160002a6,0x000f000f,0x00410001,0x22f00208,0x006902e0,0x00000000,
-0x02400010,0x20002260,0x1e690448,0x00000000,0x00200040,0x22b00208,0x024502f0,0x004502f8,
-0x00410002,0x23401a48,0x1e0002a4,0x00000000,0x00000040,0x2bc00208,0x020002b0,0x000002b4,
-0x2203eb10,0x001a0007,0x00600001,0x23401648,0x00000000,0x00000000,0x00000001,0x22a61048,
-0x00000600,0x00000000,0x00000005,0x26001240,0x160002a6,0x000f000f,0x00410001,0x23000208,
-0x006902e0,0x00000000,0x2203eb10,0x001b0007,0x00600001,0x22e01648,0x00000000,0x00000000,
-0x00200040,0x23300208,0x02450300,0x00450308,0x00000001,0x22a61048,0x00000600,0x00000000,
-0x01400010,0x20002260,0x1e690448,0x00010001,0x00600001,0x23001648,0x00000000,0x00000000,
-0x00000040,0x2bc40208,0x02000330,0x00000334,0x00000005,0x42c81288,0x160002a6,0x000f000f,
-0x00410002,0x23401a48,0x1e0002a4,0x00000000,0x0000004d,0x2bc82208,0x000002c8,0x00000000,
-0x2203eb10,0x001a0007,0x00000001,0x22a61048,0x00000600,0x00000000,0x01400010,0x20002260,
-0x1e690448,0x00020002,0x00000005,0x42c81288,0x160002a6,0x000f000f,0x00410002,0x22e01a48,
-0x1e0002a4,0x00000000,0x0000004d,0x22ac2208,0x000002c8,0x00000000,0x2203eb10,0x00170007,
-0x00000009,0x2bcc0208,0x160002ac,0x00020002,0x00000001,0x22a61048,0x00000600,0x00000000,
-0x01400010,0x20002260,0x1e690448,0x00030003,0x00000005,0x42c81288,0x160002a6,0x000f000f,
-0x00410002,0x23001a48,0x1e0002a4,0x00000000,0x0000004d,0x22d82208,0x000002c8,0x00000000,
-0x2203eb10,0x00180007,0x00000009,0x2bd00208,0x160002d8,0x00020002,0x00000001,0x22a61048,
-0x00000600,0x00000000,0x00000005,0x42c81288,0x160002a6,0x000f000f,0x0000004d,0x23202208,
-0x000002c8,0x00000000,0x00000009,0x2bd40208,0x16000320,0x00020002,0x00600040,0x22e00208,
-0x168d0c80,0x000a000a,0x00000040,0x22000204,0x060002bc,0x0210b700,0x00600009,0x23000208,
-0x168d02e0,0x00020002,0x0c600033,0x02e5e018,0x00002301,0x00000000,0x01000010,0x20002260,
-0x1e000034,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000170,0x03000010,0x20002260,
-0x1e000c70,0x00000000,0x00000001,0x22ac1e68,0x00000000,0x00010001,0x00000005,0x22a41228,
-0x12000c74,0x00000c76,0x00010002,0x22c81a28,0x1e0002ac,0x00000000,0x01000005,0x20000a20,
-0x0a0002a4,0x000002c8,0x00010020,0x34000004,0x0e001400,0x00000110,0x01000010,0x20002260,
-0x1e000c72,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000060,0x00000040,0x22a42228,
-0x1e000a64,0x00020002,0x00000001,0x2bc40208,0x00000a94,0x00000000,0x00000041,0x22c81248,
-0x160002a4,0x00040004,0x00000040,0x22001240,0x160002c8,0x0bc00bc0,0x00000001,0xa0001608,
-0x00000000,0x00040004,0x00000020,0x34000004,0x0e001400,0x00000050,0x00000040,0x22a42228,
-0x1e000a64,0x00020002,0x00000001,0x2bc00208,0x00000a90,0x00000000,0x00000041,0x22c81248,
-0x160002a4,0x00040004,0x00000040,0x22001240,0x160002c8,0x0bc00bc0,0x00000001,0xa0001608,
-0x00000000,0x00010001,0x00600040,0x22e00208,0x168d0c80,0x000a000a,0x00000040,0x22000204,
-0x060002bc,0x0210b700,0x00600009,0x23000208,0x168d02e0,0x00020002,0x0c600033,0x02e5e018,
-0x00002301,0x00000000,0x01000010,0x20002260,0x1e000c72,0x00000000,0x00800001,0x20201608,
-0x00000000,0x00000000,0x00000001,0x402d2288,0x00000c78,0x00000000,0x00000001,0x402f2288,
-0x00000c72,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000a0,0x00000001,0x404d2288,
-0x00000a6c,0x00000000,0x00000001,0x402e1e88,0x00000000,0x00000000,0x00000001,0x20280208,
-0x00000a68,0x00000000,0x00200001,0x20580208,0x00450a98,0x00000000,0x00000001,0x20541608,
-0x00000000,0x00000000,0x00000001,0x20500208,0x00000a94,0x00000000,0x00400001,0x20242288,
-0x00000a64,0x00000000,0x00600001,0x20301a68,0x008d0a70,0x00000000,0x00000001,0x402c2288,
-0x0000004d,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000380,0x01000010,0x20001240,
-0x12000a80,0x00000a82,0x00000001,0x22a61e68,0x00000000,0x00010001,0x00000040,0x22b01228,
-0x16000c64,0x00100010,0x00000040,0x22dc1228,0x16000c66,0x00100010,0x00000001,0x42a41e88,
-0x00000000,0x00000000,0x0000000c,0x23601228,0x16000a82,0x00040004,0x0000000c,0x23841228,
-0x16000a82,0x000c000c,0x01010010,0x20001240,0x12000a84,0x00000a86,0x0000000c,0x23241228,
-0x16000a84,0x000c000c,0x0000000c,0x23641228,0x16000a86,0x00080008,0x0000000c,0x23c41228,
-0x16000a86,0x00040004,0x00000001,0x402c2288,0x00000a6d,0x00000000,0x00000005,0x23800a28,
-0x1e000360,0x000f000f,0x00000009,0x23a00a28,0x1e000384,0x00040004,0x00010002,0x22ac1a28,
-0x1e0002a6,0x00000000,0x05000010,0x20000a20,0x120002b0,0x00000c60,0x00000005,0x23041228,
-0x1e000a86,0xf000f000,0x00400001,0x20401248,0x00690a80,0x00000000,0x00000001,0x404d2288,
-0x0000002c,0x00000000,0x00000001,0x2c680e28,0x00000000,0x09010200,0x00000006,0x23c00a28,
-0x0a000380,0x000003a0,0x00000005,0x23800a28,0x1e000364,0x000f000f,0x00010002,0x22c81a28,
-0x1e0002a6,0x00000000,0x05000010,0x20000a20,0x120002dc,0x00000c62,0x00000009,0x23a00a28,
-0x1e000380,0x00080008,0x00000005,0x22d80a28,0x0a0002ac,0x000002c8,0x00010002,0x22e01a28,
-0x1e0002a6,0x00000000,0x00000005,0x22e40a28,0x0a0002d8,0x000002e0,0x02000005,0x20000a20,
-0x1e0002e4,0x00010001,0x00010001,0x42a41e88,0x00000000,0x00010001,0x01000010,0x20001240,
-0x12000a80,0x00000a84,0x01010010,0x20001240,0x12000a82,0x00000a86,0x00010002,0x23001a28,
-0x1e0002a6,0x00000000,0x00000005,0x23200a28,0x0a000300,0x000002c8,0x00000005,0x22c80a28,
-0x1e0003c4,0x000f000f,0x00000005,0x23400a28,0x0a000320,0x000002e0,0x00000009,0x22e00a28,
-0x1e0002c8,0x00080008,0x02000005,0x20000a20,0x1e000340,0x00010001,0x00000009,0x23400a28,
-0x1e000324,0x00040004,0x00000006,0x23000a28,0x0a0003c0,0x000002e0,0x00010001,0x42a41e88,
-0x00000000,0x00010001,0x00000006,0x40200a48,0x0a000300,0x00000304,0x02000005,0x20002260,
-0x160002a4,0x00010001,0x0000000c,0x22a41228,0x16000a84,0x00080008,0x00010001,0x404d1e88,
-0x00000000,0x00060006,0x00000005,0x23200a28,0x1e0002a4,0x000f000f,0x02000010,0x20002260,
-0x1e000a6d,0x00060006,0x00000006,0x23600a28,0x0a000320,0x00000340,0x00000006,0x22c80a28,
-0x0a000360,0x000003a0,0x00000006,0x42e00a4c,0x0a0002c8,0x00000304,0x00000001,0x20221248,
-0x000002e0,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x22002240,
-0x16000a88,0x0c680c68,0x00400001,0x20482288,0x00008000,0x00000000,0x00000001,0x20501608,
-0x00000000,0x00000000,0x00000001,0x20540208,0x00000a90,0x00000000,0x01000010,0x20002260,
-0x1e000c78,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000b0,0x00000040,0x22a40a28,
-0x0a000ca8,0x00000cac,0x20005601,0x00011707,0x00000040,0x22000204,0x060002d0,0x020a0400,
-0x20005601,0x00011907,0x00000040,0x22c80a28,0x0a000ca8,0x00000ca4,0x00000008,0x23680a08,
-0x1e0002a4,0x00040004,0x00000008,0x23880a08,0x1e0002c8,0x00040004,0x0a800033,0x00017054,
-0x00002364,0x00000000,0x00000040,0x22000204,0x060002d0,0x020a0400,0x00000001,0x434c1e88,
-0x00000000,0x00010001,0x0a800033,0x00017054,0x00002384,0x00000000,0x00000020,0x34000004,
-0x0e001400,0x000001b0,0x06000010,0x20002260,0x1e00004d,0x00060006,0x00200040,0x22b01228,
-0x16450c64,0x00080008,0x00000001,0x22c81e68,0x00000000,0x00010001,0x00200001,0x42a41688,
-0x00000000,0x00000000,0x01000010,0x20002262,0x1e00004d,0x00030003,0x00000040,0x23200a28,
-0x0a000ca0,0x00000ca4,0x00000040,0x22000204,0x060002d0,0x020a0300,0x00010001,0x404c1e88,
-0x00000000,0x00010001,0x06000010,0x20002260,0x1e00004d,0x00030003,0x00010002,0x22d81a2a,
-0x1e0002c8,0x00000000,0x00000008,0x23480a08,0x1e000320,0x00040004,0x00010001,0x404c1e88,
-0x00000000,0x00040004,0x04200010,0x20000a20,0x124502b0,0x00450c60,0x00000001,0x46200a44,
-0x000002d8,0x00000000,0x00210002,0x42a41a88,0x1e0002c8,0x00000000,0x00010002,0x22e0124a,
-0x160002c8,0x00000000,0x00000040,0x42ca2288,0x220002a4,0x000002a6,0x01000010,0x20002260,
-0x1e0002ca,0x00010001,0x00010002,0x22dc1248,0x160002c8,0x00000000,0x02000005,0x20001240,
-0x120002dc,0x000002e0,0x00010001,0x404c1e88,0x00000000,0x00020002,0x01000010,0x20002260,
-0x1e0002ca,0x00020002,0x00010002,0x23001a28,0x1e0002c8,0x00000000,0x00000005,0x22a40a28,
-0x0a000300,0x000002d8,0x02000005,0x20000a20,0x1e0002a4,0x00010001,0x00010001,0x404c1e88,
-0x00000000,0x00010001,0x0a800033,0x00001054,0x00002342,0x00000000,0x0a600031,0x22e03a08,
-0x06000000,0x0219e000,0x20004d01,0x00171707,0x20004d01,0x00007e07,0x07000031,0x20003a00,
-0x06000fc0,0x82000010,0x0a600032,0x22e03a08,0x06000000,0x0219e000,0x20004d01,0x00171707,
-0x20004d01,0x00007f07,0x07000031,0x20003a00,0x06000fe0,0x82000010,0x00008001,0x20000204,
-0x00000000,0x00000000,0x00200001,0xa2001a68,0x0020a200,0x00000000,0x00200040,0x22a41a68,
-0x1e208200,0xffc0ffc0,0x00200008,0x22c81a68,0x1e4502a4,0x00020002,0x00200040,0x22e01248,
-0x1a008480,0x004502c8,0x00000041,0x22e41248,0x17e08200,0x00020002,0x00000040,0x22001040,
-0x12000204,0x000002e4,0x00000001,0x23001248,0x00008000,0x00000000,0x00000041,0x23041248,
-0x17e08202,0x00020002,0x00000040,0x22001040,0x12000204,0x00000304,0x00000001,0x23021248,
-0x00008000,0x00000000,0x05200010,0x20001a20,0x1e208200,0x00400040,0x00210001,0x22e01248,
-0x00450300,0x00000000,0x00000040,0x22c01248,0x120002e0,0x000002e2,0x05000002,0x22c01248,
-0x160002c0,0x03ff03ff,0x00000001,0x23c01248,0x000002c0,0x00000000,0x0080002d,0x20000220,
-0x00450450,0x00000000,0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c,
-0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c,
-0x00200040,0x22b01228,0x16450020,0x000f000f,0x00200001,0x29081648,0x00000000,0x00000000,
-0x00000005,0x290a124c,0x16000006,0x07ff07ff,0x00000005,0x2908124c,0x16000004,0x07ff07ff,
-0x00000040,0x22000204,0x060002d0,0x02280300,0x06000010,0x20002260,0x1e000025,0x00000000,
-0x00000001,0x49401e88,0x00000000,0x00000000,0x0020000c,0x42c00a48,0x1e4502b0,0x00040004,
-0x00200001,0x29041248,0x00450020,0x00000000,0x00200009,0x29001248,0x16450908,0x00040004,
-0x00200001,0x290c1248,0x004002c0,0x00000000,0x00000041,0x22e01228,0x1200090a,0x0000090c,
-0x00000040,0x23000a08,0x120002e0,0x00000908,0x00000009,0x23200228,0x16000300,0x00060006,
-0x00000008,0x23480a08,0x1e000320,0x00040004,0x0a800031,0x28c03a6c,0x00000340,0x00000200,
-0x00010020,0x34000004,0x0e001400,0x00000380,0x02000010,0x20002260,0x1e0008cc,0x00090009,
-0x00010020,0x34000004,0x0e001400,0x00000280,0x00000005,0x22a41228,0x0e000908,0x0000fffe,
-0x20004d01,0x00001707,0x00000040,0x22000204,0x060002b8,0x02190000,0x00000001,0x22e8060c,
-0x00000000,0x00010001,0x00000005,0x22e41228,0x0e00090a,0x0000fffe,0x00000001,0x23241608,
-0x00000000,0x00000000,0x20144001,0x00151700,0x0c600031,0x23003a0c,0x000002e0,0x00000200,
-0x00600001,0x22c0228c,0x008d0300,0x00000000,0x00400001,0x23202288,0x006502c0,0x00000000,
-0x00000041,0x23282228,0x1e000320,0x00400040,0x00000040,0x23400a28,0x1e000328,0x00800080,
-0x00000040,0x22001240,0x16000340,0x00200020,0x00000001,0x43242288,0x00008000,0x00000000,
-0x00000041,0x23602228,0x1e000321,0x00400040,0x00000040,0x23800a28,0x1e000360,0x00800080,
-0x00000040,0x22001240,0x16000380,0x00200020,0x00000001,0x43252288,0x00008000,0x00000000,
-0x00000041,0x22a42228,0x1e000322,0x00400040,0x00000040,0x22e00a28,0x1e0002a4,0x00800080,
-0x00000040,0x22001240,0x160002e0,0x00200020,0x00000001,0x43262288,0x00008000,0x00000000,
-0x00000041,0x22c02228,0x1e000323,0x00400040,0x00000040,0x23000a28,0x1e0002c0,0x00800080,
-0x00000040,0x22001240,0x16000300,0x00200020,0x00000001,0x43282288,0x00008000,0x00000000,
-0x05000010,0x20002260,0x22000326,0x00000328,0x00000001,0x49402288,0x00000323,0x00000000,
-0x00010001,0x49402288,0x00000322,0x00000000,0x05000010,0x20002260,0x22000326,0x00000328,
-0x00010001,0x43282288,0x00000326,0x00000000,0x05000010,0x20002260,0x22000324,0x00000328,
-0x05000002,0x43282288,0x22000324,0x00000328,0x00010001,0x49402288,0x00000320,0x00000000,
-0x05000010,0x20002260,0x22000325,0x00000328,0x00010001,0x49402288,0x00000321,0x00000000,
-0x00800001,0x20a02288,0x00208000,0x00000000,0x00800001,0x20b02288,0x00208010,0x00000000,
-0x00800001,0x20c02288,0x00208020,0x00000000,0x00800001,0x20d02288,0x00208030,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x000000e0,0x20004d01,0x00001707,0x00000040,0x22000204,
-0x060002b8,0x02190000,0x20086001,0x00001700,0x00000001,0x22e41228,0x0000090a,0x00000000,
-0x00000001,0x22e01228,0x00000908,0x00000000,0x0c600031,0x23003a0c,0x000002e0,0x00000200,
-0x00400001,0x22c0228c,0x00690300,0x00000000,0x00000041,0x22a42228,0x1e0002c0,0x00400040,
-0x00000001,0x49402288,0x000002c0,0x00000000,0x00000040,0x23200a28,0x1e0002a4,0x00800080,
-0x00000040,0x22001240,0x16000320,0x00200020,0x00800001,0x20a02288,0x00208000,0x00000000,
-0x00800001,0x20b02288,0x00208010,0x00000000,0x00800001,0x20c02288,0x00208020,0x00000000,
-0x00800001,0x20d02288,0x00208030,0x00000000,0x02000010,0x20002260,0x1e0008cf,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000770,0x02000010,0x20002260,0x1e0008cc,0x00090009,
-0x00000001,0x23001e28,0x00000000,0x02010201,0x00000001,0x23081e68,0x00000000,0x00090009,
-0x00000001,0x29500e28,0x00000000,0x03000201,0x00000001,0x49581688,0x00000000,0x00070007,
-0x00000001,0x29540e28,0x00000000,0x08060504,0x00000001,0x23041608,0x00000000,0x00000000,
-0x00000001,0x230c0e28,0x00000000,0x09000201,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x00000005,0x22a41228,0x160008e0,0x000f000f,0x00000040,0x22001240,0x160002a4,0x03000300,
-0x00000001,0x29102248,0x00008000,0x00000000,0x00000020,0x34000004,0x0e001400,0x000006a0,
-0x02000010,0x20002260,0x1e0008cc,0x00060006,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x00000005,0x22a41228,0x160008e0,0x000f000f,0x00000040,0x22001240,0x160002a4,0x030c030c,
-0x00000001,0x29102248,0x00008000,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000640,
-0x02000010,0x20002260,0x1e0008cc,0x00030003,0x00010020,0x34000004,0x0e001400,0x000000d0,
-0x00000005,0x22a41228,0x160008e0,0x000f000f,0x00000040,0x22001240,0x160002a4,0x09500950,
-0x00000001,0x29102248,0x00008000,0x00000000,0x00000005,0x22a41228,0x160008e2,0x000f000f,
-0x00000040,0x22001240,0x160002a4,0x09500950,0x00000001,0x29122248,0x00008000,0x00000000,
-0x00000005,0x22a41228,0x160008e4,0x000f000f,0x00000040,0x22001240,0x160002a4,0x09500950,
-0x00000001,0x29142248,0x00008000,0x00000000,0x00000005,0x22a41228,0x160008e6,0x000f000f,
-0x00000040,0x22001240,0x160002a4,0x09500950,0x00000001,0x29162248,0x00008000,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x00000550,0x00000005,0x22a41228,0x1e0008e0,0x000f000f,
-0x0000000c,0x22a81228,0x160008e0,0x00040004,0x00000040,0x22001240,0x160002a4,0x09500950,
-0x00000005,0x22a40a28,0x1e0002a8,0x000f000f,0x00000001,0x22ac2228,0x00008000,0x00000000,
-0x00000040,0x22001240,0x160002a4,0x09500950,0x00000001,0x42e12288,0x00008000,0x00000000,
-0x0000000c,0x22a81228,0x160008e0,0x00080008,0x00000005,0x22a40a28,0x1e0002a8,0x000f000f,
-0x00000040,0x22001240,0x160002a4,0x09500950,0x00000001,0x42e22288,0x00008000,0x00000000,
-0x0000000c,0x22a81228,0x160008e0,0x000c000c,0x00000005,0x22a40a28,0x1e0002a8,0x000f000f,
-0x00000040,0x22001240,0x160002a4,0x09500950,0x00000005,0x22a41228,0x1e0008e2,0x000f000f,
-0x00000009,0x22b02228,0x1e008000,0x000c000c,0x00000040,0x22001240,0x160002a4,0x09500950,
-0x00000001,0x42e42288,0x00008000,0x00000000,0x0000000c,0x22a81228,0x160008e2,0x00040004,
-0x00000005,0x22a40a28,0x1e0002a8,0x000f000f,0x00000040,0x22001240,0x160002a4,0x09500950,
-0x00000001,0x42e52288,0x00008000,0x00000000,0x0000000c,0x22a81228,0x160008e2,0x00080008,
-0x00000005,0x22a40a28,0x1e0002a8,0x000f000f,0x00000040,0x22001240,0x160002a4,0x09500950,
-0x00000001,0x42e62288,0x00008000,0x00000000,0x0000000c,0x22a81228,0x160008e2,0x000c000c,
-0x00000005,0x22a40a28,0x1e0002a8,0x000f000f,0x00000040,0x22001240,0x160002a4,0x09500950,
-0x00000001,0x42e72288,0x00008000,0x00000000,0x00000005,0x22a41228,0x1e0008e4,0x000f000f,
-0x00000040,0x22001240,0x160002a4,0x09500950,0x00000001,0x42e82288,0x00008000,0x00000000,
-0x0000000c,0x22a81228,0x160008e4,0x00040004,0x00000005,0x22a40a28,0x1e0002a8,0x000f000f,
-0x00000040,0x22001240,0x160002a4,0x09500950,0x00000001,0x42e92288,0x00008000,0x00000000,
-0x0000000c,0x22a81228,0x160008e4,0x00080008,0x00000005,0x22a40a28,0x1e0002a8,0x000f000f,
-0x00000040,0x22001240,0x160002a4,0x09500950,0x00000001,0x42ea2288,0x00008000,0x00000000,
-0x0000000c,0x22a81228,0x160008e4,0x000c000c,0x00000005,0x22a40a28,0x1e0002a8,0x000f000f,
-0x00000040,0x22001240,0x160002a4,0x09500950,0x00000001,0x42eb2288,0x00008000,0x00000000,
-0x00000005,0x22a41228,0x1e0008e6,0x000f000f,0x00000040,0x22001240,0x160002a4,0x09500950,
-0x00000001,0x42ec2288,0x00008000,0x00000000,0x0000000c,0x22a81228,0x160008e6,0x00040004,
-0x00000005,0x22a40a28,0x1e0002a8,0x000f000f,0x00000040,0x22001240,0x160002a4,0x09500950,
-0x00000001,0x42ed2288,0x00008000,0x00000000,0x0000000c,0x22a81228,0x160008e6,0x00080008,
-0x00000005,0x22a40a28,0x1e0002a8,0x000f000f,0x00000040,0x22001240,0x160002a4,0x09500950,
-0x00000001,0x42ee2288,0x00008000,0x00000000,0x0000000c,0x22a81228,0x160008e6,0x000c000c,
-0x00000005,0x22a40a28,0x1e0002a8,0x000f000f,0x00000040,0x22001240,0x160002a4,0x09500950,
-0x00000001,0x42c02288,0x00008000,0x00000000,0x00000009,0x22c42228,0x1e0002e2,0x00080008,
-0x00000009,0x22f42228,0x1e0002e1,0x00040004,0x00000009,0x23202228,0x1e0002e7,0x000c000c,
-0x00000009,0x23242228,0x1e0002e6,0x00080008,0x00000009,0x23042228,0x1e0002ee,0x00080008,
-0x00000009,0x23442228,0x1e0002e5,0x00040004,0x00000009,0x23a02228,0x1e0002eb,0x000c000c,
-0x00000006,0x22f00a28,0x0a0002b0,0x000002c4,0x00000009,0x22c42228,0x1e0002ea,0x00080008,
-0x00000006,0x23400a28,0x0a000320,0x00000324,0x00000009,0x23242228,0x1e0002ed,0x00040004,
-0x00000006,0x23000a28,0x0a0002f0,0x000002f4,0x00000006,0x23c00a28,0x0a0003a0,0x000002c4,
-0x00000009,0x22f02228,0x1e0002e9,0x00040004,0x00000006,0x23600a28,0x0a000340,0x00000344,
-0x00000006,0x49100a48,0x0a000300,0x000002ac,0x00000009,0x23002228,0x1e0002c0,0x000c000c,
-0x00000006,0x22a40a28,0x0a0003c0,0x000002f0,0x00000006,0x43800a4c,0x22000360,0x000002e4,
-0x00000006,0x23200a28,0x0a000300,0x00000304,0x00000006,0x49140a48,0x220002a4,0x000002e8,
-0x00000001,0x29121248,0x00000380,0x00000000,0x00000006,0x23400a28,0x0a000320,0x00000324,
-0x00000006,0x43600a4c,0x22000340,0x000002ec,0x00000001,0x29161248,0x00000360,0x00000000,
-0x02000010,0x20002260,0x1e0008cf,0x00000000,0x00010020,0x34000004,0x0e001400,0x00002c40,
-0x02000010,0x20002260,0x1e0008cd,0x00000000,0x00010020,0x34000004,0x0e001400,0x00002c20,
-0x02000010,0x20002260,0x1e0008cc,0x00060006,0x00010020,0x34000004,0x0e001400,0x00000f50,
-0x03200009,0x25d01208,0x16450908,0x00040004,0x20004d01,0x00001707,0x00000040,0x22000204,
-0x060002a0,0x02290000,0x00000001,0x22e8060c,0x00000000,0x000f0003,0x00000001,0x22a41e68,
-0x00000000,0x00010001,0x00000001,0x46001e88,0x00000000,0x007f007f,0x00600001,0x24c01648,
-0x00000000,0x81818181,0x00000001,0x22e00228,0x000005d0,0x00000000,0x00000001,0x22e40228,
-0x000005d4,0x00000000,0x00000005,0x44d01288,0x16000910,0x000f000f,0x00600001,0x25c01648,
-0x00000000,0x7f7f7f7f,0x00210002,0x25d81a48,0x1e0002a4,0x00000000,0x03000010,0x20001260,
-0x1e00090a,0x00000000,0x00200001,0x29501e08,0x00000000,0x00000000,0x0c600031,0x23c03a0c,
-0x000002e0,0x00000200,0x00000040,0x22e00228,0x160005d0,0x00040004,0x00000001,0x22e40228,
-0x000005d4,0x00000000,0x00010001,0x46001e88,0x00000000,0x00810081,0x06000010,0x20000200,
-0x160005d4,0x00000000,0x0c600031,0x24003a0c,0x000002e0,0x00000200,0x00000040,0x22e00228,
-0x160005d0,0x00080008,0x00000001,0x22e40228,0x000005d4,0x00000000,0x0c600031,0x24403a0c,
-0x000002e0,0x00000200,0x00000040,0x22e00228,0x160005d0,0x000c000c,0x00000001,0x22e40228,
-0x000005d4,0x00000000,0x0c600031,0x24803a0c,0x000002e0,0x00000200,0x00010020,0x34000004,
-0x0e001400,0x00000060,0x20004d01,0x00001707,0x00000040,0x22000204,0x060002a0,0x02190000,
-0x20086001,0x0f001700,0x00000040,0x22e40228,0x1e0005d4,0xffffffff,0x00000001,0x22e00228,
-0x000005d0,0x00000000,0x0c600031,0x23003a0c,0x000002e0,0x00000200,0x00800001,0x25c0228c,
-0x008d0300,0x00000000,0x06000010,0x20000200,0x160005d0,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000068,0x20004d01,0x00001707,0x00000040,0x22000204,0x060002a0,0x02290000,
-0x00000001,0x22e8060c,0x00000000,0x000f0000,0x00000001,0x22e40228,0x000005d4,0x00000000,
-0x00000040,0x22e00228,0x1e0005d0,0xffffffff,0x0c600031,0x23003a0c,0x000002e0,0x00000200,
-0x00800001,0x24c02288,0x00600300,0x00000000,0x02000010,0x20000200,0x060005d8,0x00010001,
-0x00010020,0x34000004,0x0e001400,0x00000070,0x20004d01,0x00001707,0x00000040,0x22000204,
-0x060002a0,0x02190000,0x20086001,0x00001700,0x00000040,0x22e40228,0x1e0005d4,0xffffffff,
-0x00000040,0x22e00228,0x1e0005d0,0xffffffff,0x0c600031,0x23003a0c,0x000002e0,0x00000200,
-0x00400001,0x22c0228c,0x00690300,0x00000000,0x00000001,0x46002288,0x000002c0,0x00000000,
-0x02000010,0x20002260,0x1e0004d0,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000190,
-0x00800001,0x22e02248,0x008d04c0,0x00000000,0x00800001,0x23002248,0x008d05c0,0x00000000,
-0x03200010,0x20000200,0x164505d0,0x00000000,0x00000040,0x23601228,0x160005d8,0x00030003,
-0x00200001,0x22c41648,0x00000000,0x00000000,0x00800040,0x23201248,0x124002e0,0x004002e2,
-0x00000040,0x63800a88,0x12000360,0x000005da,0x00600040,0x23401248,0x12400320,0x00400322,
-0x00400040,0x22b01248,0x12400340,0x00400342,0x00200040,0x22c01248,0x124002b0,0x004002b2,
-0x00200040,0x22c01248,0x164502c0,0x00080008,0x00210001,0x22c41248,0x004502c0,0x00000000,
-0x01000010,0x20002260,0x1e000380,0x00030003,0x00000040,0x23841228,0x120002c4,0x000002c6,
-0x0000000c,0x23a00a08,0x22000384,0x00000380,0x00010001,0x23a01608,0x00000000,0x00800080,
-0x00a00040,0x27402268,0x228d0400,0x000043a0,0x00a00040,0x26c02268,0x228d03c0,0x000043a0,
-0x00a00040,0x27802268,0x228d0420,0x000043a0,0x00a00040,0x28402268,0x228d0480,0x000043a0,
-0x00a00040,0x27c02268,0x228d0440,0x000043a0,0x00a00040,0x28002268,0x228d0460,0x000043a0,
-0x00a00040,0x27002268,0x228d03e0,0x000043a0,0x00a00040,0x28802268,0x228d04a0,0x000043a0,
-0x00000020,0x34000004,0x0e001400,0x00000460,0x02000010,0x20002260,0x1e0004d0,0x00010001,
-0x00010020,0x34000004,0x0e001400,0x000000b0,0x201c5601,0x002e2c00,0x20145601,0x002e2800,
-0x20185601,0x002e2a00,0x20005601,0x002e2600,0x00a00040,0x28802268,0x228d04a0,0x008d45a0,
-0x00a00040,0x28402268,0x228d0480,0x008d4580,0x00a00040,0x27802268,0x228d0420,0x008d4520,
-0x00a00040,0x27402268,0x228d0400,0x008d4500,0x00a00040,0x27c02268,0x228d0440,0x008d4540,
-0x00a00040,0x28002268,0x228d0460,0x008d4560,0x00a00040,0x26c02268,0x228d03c0,0x008d44c0,
-0x00a00040,0x27002268,0x228d03e0,0x008d44e0,0x00000020,0x34000004,0x0e001400,0x00000390,
-0x02000010,0x20002260,0x1e0004d0,0x00020002,0x00010020,0x34000004,0x0e001400,0x000000f0,
-0x00800001,0x62e02288,0x008d04c0,0x00000000,0x00800001,0x62e12288,0x008d04c0,0x00000000,
-0x00800001,0x62e22288,0x008d04c0,0x00000000,0x00800001,0x62e32288,0x008d04c0,0x00000000,
-0x20005601,0x00172607,0x20005601,0x00172a07,0x20005601,0x00172807,0x20005601,0x00172c07,
-0x00a00040,0x27002268,0x228d03e0,0x008d44e0,0x00a00040,0x26c02268,0x228d03c0,0x008d44c0,
-0x00a00040,0x28002268,0x228d0460,0x008d4560,0x00a00040,0x27c02268,0x228d0440,0x008d4540,
-0x00a00040,0x27402268,0x228d0400,0x008d4500,0x00a00040,0x27802268,0x228d0420,0x008d4520,
-0x00a00040,0x28402268,0x228d0480,0x008d4580,0x00a00040,0x28802268,0x228d04a0,0x008d45a0,
-0x00000020,0x34000004,0x0e001400,0x00000280,0x02000010,0x20002260,0x1e0004d0,0x00090009,
-0x00010020,0x34000004,0x0e001400,0x00000260,0x00800001,0x62e02288,0x008d04c0,0x00000000,
-0x00800001,0x62e12288,0x008d04c0,0x00000000,0x00800001,0x62e22288,0x008d04c0,0x00000000,
-0x00800001,0x62e32288,0x008d04c0,0x00000000,0x20005601,0x002e2600,0x20145601,0x002e2800,
-0x20185601,0x002e2a00,0x201c5601,0x002e2c00,0x00a00040,0x23602268,0x228d04e0,0x008d0300,
-0x00a00040,0x23202268,0x228d04c0,0x008d02e0,0x80800040,0x44e01a88,0x22400360,0x00004600,
-0x80800040,0x44e11a88,0x22400362,0x00004600,0x80800040,0x44c01a88,0x22400320,0x00004600,
-0x80800040,0x44c11a88,0x22400322,0x00004600,0x00a00040,0x23602268,0x228d0520,0x008d0300,
-0x00a00040,0x23202268,0x228d0500,0x008d02e0,0x80800040,0x45201a88,0x22400360,0x00004600,
-0x80800040,0x45211a88,0x22400362,0x00004600,0x80800040,0x45001a88,0x22400320,0x00004600,
-0x80800040,0x45011a88,0x22400322,0x00004600,0x00a00040,0x23602268,0x228d0560,0x008d0300,
-0x00a00040,0x23202268,0x228d0540,0x008d02e0,0x80800040,0x45601a88,0x22400360,0x00004600,
-0x80800040,0x45611a88,0x22400362,0x00004600,0x80800040,0x45401a88,0x22400320,0x00004600,
-0x80800040,0x45411a88,0x22400322,0x00004600,0x00a00040,0x23602268,0x228d05a0,0x008d0300,
-0x00a00040,0x23202268,0x228d0580,0x008d02e0,0x80800040,0x45a01a88,0x22400360,0x00004600,
-0x80800040,0x45a11a88,0x22400362,0x00004600,0x80800040,0x45801a88,0x22400320,0x00004600,
-0x80800040,0x45811a88,0x22400322,0x00004600,0x00a00040,0x27002268,0x228d03e0,0x008d44e0,
-0x00a00040,0x26c02268,0x228d03c0,0x008d44c0,0x00a00040,0x27802268,0x228d0420,0x008d4520,
-0x00a00040,0x27402268,0x228d0400,0x008d4500,0x00a00040,0x28002268,0x228d0460,0x008d4560,
-0x00a00040,0x27c02268,0x228d0440,0x008d4540,0x00a00040,0x28802268,0x228d04a0,0x008d45a0,
-0x00a00040,0x28402268,0x228d0480,0x008d4580,0x00800040,0x22e01a68,0x1a4006c0,0x004006c2,
-0x00800040,0x26c01a68,0x1a4006c0,0x004046c2,0x00800040,0x23001a68,0x1a400700,0x00400702,
-0x00800040,0x26e01a68,0x1a400700,0x00404702,0x00800040,0x23401a68,0x1a400780,0x00400782,
-0x00800040,0x23201a68,0x1a400740,0x00400742,0x00800040,0x27201a68,0x1a400780,0x00404782,
-0x00800040,0x27001a68,0x1a400740,0x00404742,0x00800040,0x27a01a68,0x1a400880,0x00404882,
-0x00800040,0x27801a68,0x1a400840,0x00404842,0x00800040,0x27601a68,0x1a400800,0x00404802,
-0x00800040,0x27401a68,0x1a4007c0,0x004047c2,0x00a00008,0x24c01a68,0x1e8d06c0,0x00010001,
-0x00a00008,0x25001a68,0x1e8d0700,0x00010001,0x00a00008,0x25801a68,0x1e8d0780,0x00010001,
-0x00a00008,0x25401a68,0x1e8d0740,0x00010001,0x00800040,0x23601a68,0x1a4007c0,0x004007c2,
-0x00800040,0x23c01a68,0x1a400880,0x00400882,0x00800040,0x23801a68,0x1a400800,0x00400802,
-0x00800040,0x23a01a68,0x1a400840,0x00400842,0x00a00001,0x26c01a48,0x008d24c0,0x00000000,
-0x00a00001,0x27001a48,0x008d2500,0x00000000,0x00a00001,0x27801a48,0x008d2580,0x00000000,
-0x00a00001,0x27401a48,0x008d2540,0x00000000,0x00600040,0x43e01a68,0x1a6002e0,0x006002e4,
-0x00600040,0x44001a68,0x1a600320,0x00600324,0x00600040,0x47e01a68,0x1a600320,0x00604324,
-0x00600040,0x47c01a68,0x1a6002e0,0x006042e4,0x00600040,0x44201a68,0x1a600360,0x00600364,
-0x00600040,0x48001a68,0x1a600360,0x00604364,0x00600040,0x48201a68,0x1a6003a0,0x006043a4,
-0x00600040,0x44401a68,0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,0x1a6002e2,0x006002e6,
-0x00600040,0x44021a68,0x1a600322,0x00600326,0x00600040,0x47e21a68,0x1a600322,0x00604326,
-0x00600040,0x47c21a68,0x1a6002e2,0x006042e6,0x00600040,0x44221a68,0x1a600362,0x00600366,
-0x00600040,0x48021a68,0x1a600362,0x00604366,0x00600040,0x48221a68,0x1a6003a2,0x006043a6,
-0x00600040,0x44421a68,0x1a6003a2,0x006003a6,0x00800040,0x23401a68,0x1a400780,0x00400782,
-0x00800040,0x23201a68,0x1a400740,0x00400742,0x00800040,0x23001a68,0x1a400700,0x00400702,
-0x00800040,0x22e01a68,0x1a4006c0,0x004006c2,0x00800040,0x24601a68,0x1a4003e0,0x004003e2,
-0x00a00008,0x25c01a68,0x1e8d07c0,0x00010001,0x00a00008,0x26001a68,0x1e8d0800,0x00010001,
-0x00800040,0x24801a68,0x1a400420,0x00400422,0x00800040,0x23801a68,0x1a400320,0x00400322,
-0x00800040,0x23601a68,0x1a4002e0,0x004002e2,0x00800040,0x28401a68,0x1a4003e0,0x004043e2,
-0x00800040,0x28601a68,0x1a400420,0x00404422,0x00a00001,0x27c01a48,0x008d25c0,0x00000000,
-0x00a00001,0x28001a48,0x008d2600,0x00000000,0x00800040,0x24a01a68,0x1a400460,0x00400462,
-0x00800040,0x28801a68,0x1a400460,0x00404462,0x00800040,0x23a01a48,0x1a400360,0x00400362,
-0x00a00008,0x26401a68,0x1e8d0840,0x00010001,0x0080000c,0x24401a28,0x1e8d04a0,0x00010001,
-0x00800040,0x23801a68,0x1a400800,0x00400802,0x00800040,0x23601a68,0x1a4007c0,0x004007c2,
-0x00a00008,0x26801a68,0x1e8d0880,0x00010001,0x00a00001,0x28401a48,0x008d2640,0x00000000,
-0x00800001,0x44c00a48,0x008d2440,0x00000000,0x00800040,0x23c01a48,0x1a400360,0x00400362,
-0x00a00001,0x28801a48,0x008d2680,0x00000000,0x00800040,0x24001a48,0x1a400840,0x00400842,
-0x00800001,0x24801248,0x004004c0,0x00000000,0x00800040,0x23a01248,0x128d03a0,0x008d03c0,
-0x00000041,0x23801208,0x160000dc,0x08a008a0,0x00000001,0x29181608,0x00000000,0x00000000,
-0x00800040,0x25001a48,0x128d0880,0x008d0480,0x00800040,0x23a01248,0x128d03a0,0x008d0400,
-0x00000040,0x23c00208,0x16000380,0x00800080,0x00800040,0x23a01248,0x128d03a0,0x008d0500,
-0x0000000c,0x23e00208,0x160003c0,0x00080008,0x04600002,0x22e01248,0x128d03a0,0x008d03b0,
-0x00000041,0x23a01208,0x160000dc,0x03c003c0,0x00600001,0x23001268,0x008d02e0,0x00000000,
-0x00000040,0x22e00208,0x160003a0,0x00800080,0x04400002,0x22b01a48,0x1a690300,0x00690308,
-0x0000000c,0x291c0208,0x160002e0,0x00080008,0x00400001,0x22c01268,0x006902b0,0x00000000,
-0x04200002,0x23201a48,0x1a4502c0,0x004502c4,0x04000002,0x23401248,0x12000320,0x00000322,
-0x00200001,0x23601248,0x00000340,0x00000000,0x04000002,0x29541208,0x02000360,0x00000954,
-0x04000010,0x20000200,0x02000954,0x000003e0,0x00010020,0x34000004,0x0e001400,0x00000060,
-0x04000010,0x20000200,0x02000954,0x0000091c,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29181e28,0x00000000,0x00020002,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x29181e28,0x00000000,0x00010001,0x00000001,0x29180a08,0x00000918,0x00000000,
-0x00000001,0x62a4028c,0x00000918,0x00000000,0x00000001,0x48ce2288,0x000002a4,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x00001cb0,0x02000010,0x20002260,0x1e0008cc,0x00030003,
-0x00010020,0x34000004,0x0e001400,0x00001c90,0x00200009,0x27901208,0x16450908,0x00040004,
-0x20004d01,0x00001707,0x00000040,0x22000204,0x060002a0,0x02290000,0x00000001,0x22e8060c,
-0x00000000,0x000f0003,0x03000010,0x20001260,0x1e00090a,0x00000000,0x00000001,0x47801e88,
-0x00000000,0x007f007f,0x00600001,0x27401648,0x00000000,0x7f7f7f7f,0x00000001,0x22e00228,
-0x00000790,0x00000000,0x00000001,0x22e40228,0x00000794,0x00000000,0x00000005,0x491b1288,
-0x16000916,0x000f000f,0x00000005,0x491a1288,0x16000914,0x000f000f,0x00010001,0x47801e88,
-0x00000000,0x00810081,0x01000010,0x20001260,0x1e000908,0x00000000,0x00000005,0x49191288,
-0x16000912,0x000f000f,0x00000005,0x49181288,0x16000910,0x000f000f,0x0c600031,0x23003a0c,
-0x000002e0,0x00000200,0x00000040,0x22e00228,0x16000790,0x00040004,0x00000001,0x22e40228,
-0x00000794,0x00000000,0x00600001,0x27c01648,0x00000000,0x81818181,0x00400001,0x27501648,
-0x00000000,0x7f7f7f7f,0x0c600031,0x23403a0c,0x000002e0,0x00000200,0x00000040,0x22e00228,
-0x16000790,0x00080008,0x00000001,0x22e40228,0x00000794,0x00000000,0x0c600031,0x23803a0c,
-0x000002e0,0x00000200,0x00000040,0x22e00228,0x16000790,0x000c000c,0x00000001,0x22e40228,
-0x00000794,0x00000000,0x60204101,0x00192d05,0x60004101,0x00182805,0x0c600031,0x23c03a0c,
-0x000002e0,0x00000200,0x60204101,0x00182905,0x60004101,0x00192c05,0x00000001,0x27100208,
-0x0000031c,0x00000000,0x00800001,0x27002288,0x00600343,0x00000000,0x60104101,0x001b2c05,
-0x60244101,0x001b2d05,0x00000001,0x27140208,0x0000035c,0x00000000,0x60244101,0x001a2905,
-0x60104101,0x001a2805,0x60004101,0x001d2e05,0x60204101,0x001c2b05,0x60204101,0x001d2f05,
-0x60004101,0x001c2a05,0x00000001,0x27180208,0x0000039c,0x00000000,0x60244101,0x001f2f05,
-0x60104101,0x001f2e05,0x00000001,0x271c0208,0x000003dc,0x00000000,0x60104101,0x001e2a05,
-0x60244101,0x001e2b05,0x00010020,0x34000004,0x0e001400,0x00000068,0x20004d01,0x00001707,
-0x00000040,0x22000204,0x060002a0,0x02290000,0x00000001,0x22e8060c,0x00000000,0x000f0000,
-0x00000001,0x22e40228,0x00000794,0x00000000,0x00000040,0x22e00228,0x1e000790,0xffffffff,
-0x0c600031,0x23003a0c,0x000002e0,0x00000200,0x00800001,0x27c02288,0x00600300,0x00000000,
-0x01000010,0x20001260,0x1e00090a,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000110,
-0x20004d01,0x00001707,0x00000040,0x22000204,0x060002a0,0x02190000,0x20086001,0x0f001700,
-0x00000040,0x22e40228,0x1e000794,0xffffffff,0x00000001,0x22e00228,0x00000790,0x00000000,
-0x00000040,0x22a41228,0x1e00090c,0xffffffff,0x0c600031,0x23003a0c,0x000002e0,0x00000200,
-0x01000010,0x20001220,0x0a000908,0x000002a4,0x00800001,0x2740228c,0x008d0300,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000070,0x20004d01,0x00001707,0x00000040,0x22000204,
-0x060002a0,0x02190000,0x20086001,0x07001700,0x00000040,0x22e40228,0x1e000794,0xffffffff,
-0x00000040,0x22e00228,0x16000790,0x00100010,0x0c600031,0x23003a0c,0x000002e0,0x00000200,
-0x00600001,0x2750228c,0x008d0300,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00600001,0x27502288,0x0000074f,0x00000000,0x01000010,0x20001260,0x1e000908,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000090,0x01000010,0x20001260,0x1e00090a,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000070,0x20004d01,0x00001707,0x00000040,0x22000204,
-0x060002a0,0x02190000,0x20086001,0x00001700,0x00000040,0x22e40228,0x1e000794,0xffffffff,
-0x00000040,0x22e00228,0x1e000790,0xffffffff,0x0c600031,0x23003a0c,0x000002e0,0x00000200,
-0x00400001,0x22c0228c,0x00690300,0x00000000,0x00000001,0x47802288,0x000002c0,0x00000000,
-0x00400001,0x27d01608,0x00000000,0x00000000,0x00000001,0x47581e88,0x00000000,0x00000000,
-0x00200001,0x29501608,0x00000000,0x00000000,0x00600001,0x27902668,0x00000000,0x01234567,
-0x00000001,0x275c1608,0x00000000,0x00000000,0x02000010,0x20000200,0x1600075c,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000038,0x00200001,0x29500208,0x004507c0,0x00000000,
-0x60104101,0x003a3e05,0x00000001,0x47582288,0x00000780,0x00000000,0x00000020,0x34000004,
-0x0e001400,0x00000118,0x02000010,0x20000200,0x1600075c,0x00010001,0x00010020,0x34000004,
-0x0e001400,0x00000040,0x00400001,0x27d00208,0x00690748,0x00000000,0x00000001,0x47582288,
-0x00000747,0x00000000,0x00200001,0x29500208,0x00450700,0x00000000,0x00000020,0x34000004,
-0x0e001400,0x000000b8,0x02000010,0x20000200,0x1600075c,0x00020002,0x00010020,0x34000004,
-0x0e001400,0x00000038,0x00200001,0x29500208,0x004507c8,0x00000000,0x00000001,0x47582288,
-0x000007c7,0x00000000,0x60244101,0x00383e05,0x00000020,0x34000004,0x0e001400,0x00000060,
-0x02000010,0x20000200,0x1600075c,0x00030003,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x00200001,0x27d80208,0x00450750,0x00000000,0x00200001,0x29500208,0x00450708,0x00000000,
-0x00200001,0x27d00208,0x00450718,0x00000000,0x00000001,0x47582288,0x00000717,0x00000000,
-0x00000040,0x22001240,0x1600075c,0x09180918,0x02000010,0x20002220,0x1e008000,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x000000b0,0x00200001,0x22e00208,0x004507d0,0x00000000,
-0x00200001,0x22e80208,0x00450950,0x00000000,0x00600040,0x23002248,0x228d02e0,0x008d02e8,
-0x00400040,0x23001248,0x12690300,0x00690308,0x00200040,0x23001248,0x12450300,0x00450304,
-0x00000040,0x22a41208,0x12000300,0x00000302,0x00000040,0x22c00208,0x160002a4,0x00080008,
-0x0000000c,0x23200208,0x160002c0,0x00040004,0x00a00001,0x23402288,0x00000320,0x00000000,
-0x00a00001,0x23602288,0x00000320,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000180,
-0x00000040,0x22001240,0x1600075c,0x09180918,0x02000010,0x20002220,0x1e008000,0x00010001,
-0x00010020,0x34000004,0x0e001400,0x00000090,0x00200001,0x23400208,0x004507d0,0x00000000,
-0x00200001,0x23480208,0x00450340,0x00000000,0x00200001,0x23580208,0x00450348,0x00000000,
-0x00200001,0x23500208,0x00450348,0x00000000,0x00200001,0x23680208,0x00450348,0x00000000,
-0x00200001,0x23600208,0x00450348,0x00000000,0x00200001,0x23700208,0x00450348,0x00000000,
-0x00200001,0x23780208,0x00450348,0x00000000,0x00000020,0x34000004,0x0e001400,0x000000c0,
-0x00000040,0x22001240,0x1600075c,0x09180918,0x02000010,0x20002220,0x1e008000,0x00020002,
-0x00010020,0x34000004,0x0e001400,0x00000090,0x00200001,0x22b00208,0x00450950,0x00000000,
-0x00600001,0x23502288,0x000002b2,0x00000000,0x00600001,0x23402288,0x000002b0,0x00000000,
-0x00600001,0x23582288,0x000002b3,0x00000000,0x00600001,0x23702288,0x000002b6,0x00000000,
-0x00600001,0x23602288,0x000002b4,0x00000000,0x00600001,0x23682288,0x000002b5,0x00000000,
-0x00600001,0x23482288,0x000002b1,0x00000000,0x00600001,0x23782288,0x000002b7,0x00000000,
-0x00000040,0x22001240,0x1600075c,0x09180918,0x02000010,0x20002220,0x1e008000,0x00030003,
-0x00010020,0x34000004,0x0e001400,0x00000108,0x60204101,0x003e1705,0x00800001,0x22f02288,
-0x000002ef,0x00000000,0x00800041,0x23002228,0x1e8d02e1,0x00020002,0x00800040,0x23402228,
-0x0a8d07d0,0x008d0300,0x00800040,0x23800a28,0x228d0340,0x008d02e2,0x00800040,0x23c00a28,
-0x1e8d0380,0x00020002,0x0080000c,0x64000a88,0x1e8d03c0,0x00020002,0x00800001,0x24402288,
-0x00600400,0x00000000,0x00600001,0x23502288,0x008d0442,0x00000000,0x00200001,0x23400208,
-0x00450440,0x00000000,0x00600001,0x23582288,0x008d0443,0x00000000,0x00600001,0x23702288,
-0x008d0446,0x00000000,0x00200001,0x23600208,0x00450444,0x00000000,0x00600001,0x23682288,
-0x008d0445,0x00000000,0x00600001,0x23482288,0x008d0441,0x00000000,0x00600001,0x23782288,
-0x008d0447,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000a58,0x00000040,0x22001240,
-0x1600075c,0x09180918,0x02000010,0x20002220,0x1e008000,0x00040004,0x00010020,0x34000004,
-0x0e001400,0x00000130,0x00600040,0x22001240,0x168d0790,0x09500950,0x00600001,0x22e02288,
-0x01e08000,0x00000000,0x00000001,0x42e82288,0x00000758,0x00000000,0x00600001,0x22e92288,
-0x008d07d0,0x00000000,0x00800041,0x23002228,0x1e8d02e1,0x00020002,0x00800040,0x23402228,
-0x0a8d02e0,0x008d0300,0x00800040,0x23800a28,0x228d0340,0x008d02e2,0x00800040,0x23c00a28,
-0x1e8d0380,0x00020002,0x0080000c,0x64000a88,0x1e8d03c0,0x00020002,0x00800001,0x24402288,
-0x00600400,0x00000000,0x00600001,0x23502288,0x008d0445,0x00000000,0x00600001,0x23402288,
-0x008d0447,0x00000000,0x00200001,0x23580208,0x00450444,0x00000000,0x00600001,0x23702288,
-0x008d0441,0x00000000,0x00600001,0x23602288,0x008d0443,0x00000000,0x00600001,0x23682288,
-0x008d0442,0x00000000,0x00600001,0x23482288,0x008d0446,0x00000000,0x00200001,0x23780208,
-0x00450440,0x00000000,0x00000020,0x34000004,0x0e001400,0x000008f8,0x00000040,0x22001240,
-0x1600075c,0x09180918,0x02000010,0x20002220,0x1e008000,0x00050005,0x00010020,0x34000004,
-0x0e001400,0x00000190,0x00600040,0x22001240,0x168d0790,0x09500950,0x00600001,0x22e02288,
-0x01e08000,0x00000000,0x00000001,0x42e82288,0x00000758,0x00000000,0x00600001,0x22e92288,
-0x008d07d0,0x00000000,0x00800041,0x23002228,0x1e8d02e1,0x00020002,0x00600040,0x24602228,
-0x228d02e8,0x008d07d0,0x00800040,0x23402228,0x0a8d02e0,0x008d0300,0x00600040,0x24800a28,
-0x1e8d0460,0x00010001,0x00800040,0x23800a28,0x228d0340,0x008d02e2,0x0060000c,0x64a00a88,
-0x1e8d0480,0x00010001,0x00800040,0x23c00a28,0x1e8d0380,0x00020002,0x00600001,0x44c82288,
-0x006004a0,0x00000000,0x0080000c,0x64000a88,0x1e8d03c0,0x00020002,0x00800001,0x24402288,
-0x00600400,0x00000000,0x00200001,0x24c00208,0x00450440,0x00000000,0x00600001,0x44c92288,
-0x008d0448,0x00000000,0x00600001,0x23602288,0x004004c4,0x00000000,0x00600001,0x23702288,
-0x004004c2,0x00000000,0x00600001,0x23582288,0x004004c5,0x00000000,0x00600001,0x23402288,
-0x004004c8,0x00000000,0x00600001,0x23502288,0x004004c6,0x00000000,0x00600001,0x23482288,
-0x004004c7,0x00000000,0x00600001,0x23682288,0x004004c3,0x00000000,0x00600001,0x23782288,
-0x004004c1,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000738,0x00000040,0x22001240,
-0x1600075c,0x09180918,0x02000010,0x20002220,0x1e008000,0x00080008,0x00010020,0x34000004,
-0x0e001400,0x00000168,0x60204101,0x003e1705,0x00800001,0x22f02288,0x000002ef,0x00000000,
-0x00600040,0x24602228,0x228d02e0,0x008d02e1,0x00800041,0x23002228,0x1e8d02e1,0x00020002,
-0x00600040,0x24800a28,0x1e8d0460,0x00010001,0x00800040,0x23402228,0x0a8d07d0,0x008d0300,
-0x0060000c,0x64a00a88,0x1e8d0480,0x00010001,0x00800040,0x23800a28,0x228d0340,0x008d02e2,
-0x00600001,0x44c02288,0x006004a0,0x00000000,0x00800040,0x23c00a28,0x1e8d0380,0x00020002,
-0x0080000c,0x64000a88,0x1e8d03c0,0x00020002,0x00800001,0x24402288,0x00600400,0x00000000,
-0x00200001,0x24d00208,0x00450448,0x00000000,0x00600001,0x44c12288,0x008d0440,0x00000000,
-0x00200001,0x23480208,0x00450440,0x00000000,0x00600001,0x23602288,0x004004c4,0x00000000,
-0x00600001,0x23702288,0x004004c6,0x00000000,0x00600001,0x23582288,0x004004c3,0x00000000,
-0x00600001,0x23402288,0x004004c0,0x00000000,0x00600001,0x23502288,0x004004c2,0x00000000,
-0x00600001,0x23682288,0x004004c5,0x00000000,0x00600001,0x23782288,0x004004c7,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x000005a0,0x00000040,0x22001240,0x1600075c,0x09180918,
-0x02000010,0x20002220,0x1e008000,0x00060006,0x00010020,0x34000004,0x0e001400,0x000001a0,
-0x00600040,0x22001240,0x168d0790,0x09500950,0x00600001,0x22e02288,0x01e08000,0x00000000,
-0x00000001,0x42e82288,0x00000758,0x00000000,0x00600001,0x22e92288,0x008d07d0,0x00000000,
-0x00200001,0x23000208,0x004502e0,0x00000000,0x00800041,0x23202228,0x1e8d02e1,0x00020002,
-0x00600040,0x24602228,0x228d0300,0x008d02e1,0x00800040,0x23602228,0x0a8d02e0,0x008d0320,
-0x00600040,0x24800a28,0x1e8d0460,0x00010001,0x00800040,0x23a00a28,0x228d0360,0x008d02e2,
-0x0060000c,0x64a00a88,0x1e8d0480,0x00010001,0x00800040,0x23e00a28,0x1e8d03a0,0x00020002,
-0x00600001,0x44c02288,0x006004a0,0x00000000,0x0080000c,0x64200a88,0x1e8d03e0,0x00020002,
-0x00800001,0x23102288,0x00600420,0x00000000,0x00600001,0x44c12288,0x008d0310,0x00000000,
-0x00200001,0x24d00208,0x00450318,0x00000000,0x00600001,0x23602288,0x008d04c6,0x00000000,
-0x00200001,0x23580208,0x004504c8,0x00000000,0x00600001,0x23702288,0x008d04c2,0x00000000,
-0x00200001,0x23680208,0x004504c4,0x00000000,0x00200001,0x23780208,0x004504c0,0x00000000,
-0x00600001,0x23402288,0x008d04ce,0x00000000,0x00600001,0x23502288,0x008d04ca,0x00000000,
-0x00200001,0x23480208,0x004504cc,0x00000000,0x00000020,0x34000004,0x0e001400,0x000003d0,
-0x00000040,0x22001240,0x1600075c,0x09180918,0x02000010,0x20002220,0x1e008000,0x00070007,
-0x00010020,0x34000004,0x0e001400,0x000003a0,0x00200001,0x22e00208,0x00450950,0x00000000,
-0x00600001,0x22e82288,0x000002e7,0x00000000,0x00600041,0x23602228,0x1e8d02e1,0x00020002,
-0x00600040,0x23002228,0x228d0950,0x008d02e1,0x00600040,0x23802228,0x0a8d0950,0x008d0360,
-0x00600040,0x23200a28,0x1e8d0300,0x00010001,0x00a00001,0x23602288,0x00000957,0x00000000,
-0x00600040,0x23a00a28,0x228d0380,0x008d02e2,0x0060000c,0x63400a88,0x1e8d0320,0x00010001,
-0x00600040,0x23c00a28,0x1e8d03a0,0x00020002,0x00600001,0x22b02288,0x00600340,0x00000000,
-0x00a00001,0x23402288,0x00000957,0x00000000,0x0060000c,0x63e00a88,0x1e8d03c0,0x00020002,
-0x00000001,0x43642288,0x000002b6,0x00000000,0x00000001,0x434a2288,0x000002b2,0x00000000,
-0x00000001,0x434c2288,0x000002b3,0x00000000,0x00000001,0x435c2288,0x000002b5,0x00000000,
-0x00000001,0x43542288,0x000002b4,0x00000000,0x00000001,0x43482288,0x000002b1,0x00000000,
-0x00600001,0x22c02288,0x006003e0,0x00000000,0x00000001,0x435e2288,0x00000364,0x00000000,
-0x00000001,0x43442288,0x0000034a,0x00000000,0x00000001,0x43462288,0x0000034c,0x00000000,
-0x00000001,0x43562288,0x0000035c,0x00000000,0x00000001,0x434e2288,0x00000354,0x00000000,
-0x00000001,0x43402288,0x000002b0,0x00000000,0x00000001,0x43512288,0x000002c2,0x00000000,
-0x00000001,0x434d2288,0x000002c3,0x00000000,0x00000001,0x435d2288,0x000002c5,0x00000000,
-0x00000001,0x43552288,0x000002c4,0x00000000,0x00000001,0x43652288,0x000002c6,0x00000000,
-0x00000001,0x43492288,0x000002c1,0x00000000,0x00000001,0x43422288,0x00000348,0x00000000,
-0x00000001,0x434b2288,0x00000351,0x00000000,0x00000001,0x43472288,0x0000034d,0x00000000,
-0x00000001,0x43572288,0x0000035d,0x00000000,0x00000001,0x434f2288,0x00000355,0x00000000,
-0x00000001,0x435f2288,0x00000365,0x00000000,0x00000001,0x43412288,0x000002c0,0x00000000,
-0x00000001,0x43702288,0x0000035e,0x00000000,0x00000001,0x436a2288,0x0000035e,0x00000000,
-0x00000001,0x43502288,0x00000344,0x00000000,0x00000001,0x43582288,0x00000346,0x00000000,
-0x00000001,0x43522288,0x00000346,0x00000000,0x00000001,0x43622288,0x00000356,0x00000000,
-0x00000001,0x43682288,0x00000356,0x00000000,0x00000001,0x435a2288,0x0000034e,0x00000000,
-0x00000001,0x43602288,0x0000034e,0x00000000,0x00000001,0x43432288,0x00000349,0x00000000,
-0x00000001,0x43452288,0x0000034b,0x00000000,0x00000001,0x43592288,0x00000347,0x00000000,
-0x00000001,0x43532288,0x00000347,0x00000000,0x00000001,0x43692288,0x00000357,0x00000000,
-0x00000001,0x43632288,0x00000357,0x00000000,0x00000001,0x435b2288,0x0000034f,0x00000000,
-0x00000001,0x43612288,0x0000034f,0x00000000,0x00000001,0x43712288,0x0000035f,0x00000000,
-0x00000001,0x436b2288,0x0000035f,0x00000000,0x02000010,0x20000200,0x1600075c,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000050,0x00400001,0x26200208,0x00400360,0x00000000,
-0x00400001,0x26000208,0x00400340,0x00000000,0x00400001,0x26300208,0x00400364,0x00000000,
-0x00400001,0x26100208,0x00400344,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000140,
-0x02000010,0x20000200,0x1600075c,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000050,
-0x00400001,0x26600208,0x00400360,0x00000000,0x00400001,0x26400208,0x00400340,0x00000000,
-0x00400001,0x26700208,0x00400364,0x00000000,0x00400001,0x26500208,0x00400344,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x000000d0,0x02000010,0x20000200,0x1600075c,0x00020002,
-0x00010020,0x34000004,0x0e001400,0x00000050,0x00400001,0x26a00208,0x00400360,0x00000000,
-0x00400001,0x26800208,0x00400340,0x00000000,0x00400001,0x26b00208,0x00400364,0x00000000,
-0x00400001,0x26900208,0x00400344,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060,
-0x02000010,0x20000200,0x1600075c,0x00030003,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x00400001,0x26e00208,0x00400360,0x00000000,0x00400001,0x26c00208,0x00400340,0x00000000,
-0x00400001,0x26f00208,0x00400364,0x00000000,0x00400001,0x26d00208,0x00400344,0x00000000,
-0x00000040,0x275c0208,0x1600075c,0x00010001,0x05000010,0x20000200,0x1600075c,0x00040004,
-0x00010020,0x34000004,0x0e001400,0xffffeec0,0x00a00040,0x22e02268,0x228d0500,0x008d4600,
-0x00a00040,0x23202268,0x228d0520,0x008d4620,0x00a00040,0x23602268,0x228d0540,0x008d4640,
-0x00a00040,0x23a02268,0x228d0560,0x008d4660,0x00800040,0x24e01a68,0x1a4002e0,0x004002e2,
-0x00a00040,0x24602268,0x228d05c0,0x008d46c0,0x00a00040,0x23e02268,0x228d0580,0x008d4680,
-0x00a00040,0x24a02268,0x228d05e0,0x008d46e0,0x00a00040,0x24202268,0x228d05a0,0x008d46a0,
-0x00800040,0x22e01a68,0x1a4002e0,0x004042e2,0x00800040,0x25001a68,0x1a400320,0x00400322,
-0x00800040,0x23001a68,0x1a400320,0x00404322,0x00800040,0x25201a68,0x1a400360,0x00400362,
-0x00800040,0x25401a68,0x1a4003a0,0x004003a2,0x00800040,0x23401a68,0x1a4003a0,0x004043a2,
-0x00800040,0x23201a68,0x1a400360,0x00404362,0x00800040,0x23c01a68,0x1a4004a0,0x004044a2,
-0x00800040,0x23a01a68,0x1a400460,0x00404462,0x00800040,0x23801a68,0x1a400420,0x00404422,
-0x00800040,0x23601a68,0x1a4003e0,0x004043e2,0x00a00008,0x26c01a68,0x1e8d02e0,0x00010001,
-0x00a00008,0x27001a68,0x1e8d0320,0x00010001,0x00a00008,0x27801a68,0x1e8d03a0,0x00010001,
-0x00a00008,0x27401a68,0x1e8d0360,0x00010001,0x00800040,0x25601a68,0x1a4003e0,0x004003e2,
-0x00800040,0x25c01a68,0x1a4004a0,0x004004a2,0x00800040,0x25801a68,0x1a400420,0x00400422,
-0x00800040,0x25a01a68,0x1a400460,0x00400462,0x00a00001,0x22e01a48,0x008d26c0,0x00000000,
-0x00a00001,0x23201a48,0x008d2700,0x00000000,0x00a00001,0x23a01a48,0x008d2780,0x00000000,
-0x00a00001,0x23601a48,0x008d2740,0x00000000,0x00600040,0x45e01a68,0x1a6004e0,0x006004e4,
-0x00600040,0x46001a68,0x1a600520,0x00600524,0x00600040,0x44001a68,0x1a600520,0x00604524,
-0x00600040,0x43e01a68,0x1a6004e0,0x006044e4,0x00600040,0x46201a68,0x1a600560,0x00600564,
-0x00600040,0x44201a68,0x1a600560,0x00604564,0x00600040,0x44401a68,0x1a6005a0,0x006045a4,
-0x00600040,0x46401a68,0x1a6005a0,0x006005a4,0x00600040,0x45e21a68,0x1a6004e2,0x006004e6,
-0x00600040,0x46021a68,0x1a600522,0x00600526,0x00600040,0x44021a68,0x1a600522,0x00604526,
-0x00600040,0x43e21a68,0x1a6004e2,0x006044e6,0x00600040,0x46221a68,0x1a600562,0x00600566,
-0x00600040,0x44221a68,0x1a600562,0x00604566,0x00600040,0x44421a68,0x1a6005a2,0x006045a6,
-0x00600040,0x46421a68,0x1a6005a2,0x006005a6,0x00800040,0x25401a68,0x1a4003a0,0x004003a2,
-0x00800040,0x25201a68,0x1a400360,0x00400362,0x00800040,0x25001a68,0x1a400320,0x00400322,
-0x00800040,0x24e01a68,0x1a4002e0,0x004002e2,0x00800040,0x26601a68,0x1a4005e0,0x004005e2,
-0x00a00008,0x27c01a68,0x1e8d03e0,0x00010001,0x00a00008,0x28001a68,0x1e8d0420,0x00010001,
-0x00800040,0x26801a68,0x1a400620,0x00400622,0x00800040,0x25801a68,0x1a400520,0x00400522,
-0x00800040,0x25601a68,0x1a4004e0,0x004004e2,0x00800040,0x24601a68,0x1a4005e0,0x004045e2,
-0x00800040,0x24801a68,0x1a400620,0x00404622,0x00a00001,0x23e01a48,0x008d27c0,0x00000000,
-0x00a00001,0x24201a48,0x008d2800,0x00000000,0x00800040,0x26a01a68,0x1a400660,0x00400662,
-0x00800040,0x24a01a68,0x1a400660,0x00404662,0x00800040,0x25a01a48,0x1a400560,0x00400562,
-0x00a00008,0x28401a68,0x1e8d0460,0x00010001,0x0080000c,0x26401a28,0x1e8d06a0,0x00010001,
-0x00800040,0x25801a68,0x1a400420,0x00400422,0x00800040,0x25601a68,0x1a4003e0,0x004003e2,
-0x00a00008,0x28801a68,0x1e8d04a0,0x00010001,0x00a00001,0x24601a48,0x008d2840,0x00000000,
-0x00800001,0x46c00a48,0x008d2640,0x00000000,0x00800040,0x25c01a48,0x1a400560,0x00400562,
-0x00a00001,0x24a01a48,0x008d2880,0x00000000,0x00800040,0x26001a48,0x1a400460,0x00400462,
-0x00800001,0x26801248,0x004006c0,0x00000000,0x00800040,0x25a01248,0x128d05a0,0x008d05c0,
-0x00000041,0x25801208,0x160000dc,0x08a008a0,0x00200001,0x22b01e08,0x00000000,0x00000000,
-0x00800040,0x27001a48,0x128d04a0,0x008d0680,0x00800040,0x25a01248,0x128d05a0,0x008d0600,
-0x00000040,0x25c00208,0x16000580,0x00800080,0x00800040,0x25a01248,0x128d05a0,0x008d0700,
-0x0000000c,0x22e00208,0x160005c0,0x00080008,0x04600002,0x24e01248,0x128d05a0,0x008d05b0,
-0x00600001,0x25001268,0x008d04e0,0x00000000,0x04400002,0x22c01a48,0x1a690500,0x00690508,
-0x00400001,0x25201268,0x006902c0,0x00000000,0x04200002,0x22a41a48,0x1a450520,0x00450524,
-0x04000002,0x25401248,0x120002a4,0x000002a6,0x00200001,0x25601248,0x00000540,0x00000000,
-0x04000002,0x22b41208,0x02000560,0x000002b4,0x04000010,0x20000200,0x020002b4,0x000002e0,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x29181608,0x00000000,0x00010001,
-0x00000020,0x34000004,0x0e001400,0x00000010,0x00000001,0x29181608,0x00000000,0x00000000,
-0x00000001,0x62a4028c,0x00000918,0x00000000,0x00000001,0x48ce2288,0x000002a4,0x00000000,
-0x01000010,0x20002260,0x1e0008cf,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000360,
-0x02000010,0x20002260,0x1e0008cc,0x00090009,0x00010020,0x34000004,0x0e001400,0x00000160,
-0x00000041,0x22a41228,0x160000de,0x06400640,0x00000041,0x22e41228,0x160000de,0x03800380,
-0x00000040,0x22c00a28,0x1e0002a4,0x00800080,0x00000040,0x23000a28,0x1e0002e4,0x00800080,
-0x0000000c,0x22e00a08,0x1e0002c0,0x00080008,0x0000000c,0x29180a08,0x1e000300,0x00080008,
-0x04000010,0x20001200,0x020008fc,0x000002e0,0x00010020,0x34000004,0x0e001400,0x000000a0,
-0x04000010,0x20001200,0x020008fc,0x00000918,0x00010020,0x34000004,0x0e001400,0x00000060,
-0x04000010,0x20001200,0x020008fc,0x00000918,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29181e28,0x00000000,0x00030003,0x00000020,0x34000004,0x0e001400,0x00000050,
-0x00000001,0x29181e28,0x00000000,0x00020002,0x00000020,0x34000004,0x0e001400,0x00000030,
-0x00000001,0x29181e28,0x00000000,0x00010001,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x29181e28,0x00000000,0x00000000,0x00000001,0x62a40a8c,0x00000918,0x00000000,
-0x00000001,0x48ce2288,0x000002a4,0x00000000,0x00000020,0x34000004,0x0e001400,0x000001e0,
-0x02000010,0x20002260,0x1e0008cc,0x00060006,0x00010020,0x34000004,0x0e001400,0x00000120,
-0x00000041,0x22a41228,0x160000de,0x06400640,0x00000041,0x22e41228,0x160000de,0x03800380,
-0x00000040,0x22c00a28,0x1e0002a4,0x00800080,0x00000040,0x23000a28,0x1e0002e4,0x00800080,
-0x0000000c,0x22e00a08,0x1e0002c0,0x00080008,0x0000000c,0x29180a08,0x1e000300,0x00080008,
-0x04000010,0x20001200,0x020008fc,0x000002e0,0x00010020,0x34000004,0x0e001400,0x00000060,
-0x04000010,0x20001200,0x020008fc,0x00000918,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29181e28,0x00000000,0x00020002,0x00000020,0x34000004,0x0e001400,0x00000030,
-0x00000001,0x29181e28,0x00000000,0x00010001,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x29181e28,0x00000000,0x00000000,0x00000001,0x62a40a8c,0x00000918,0x00000000,
-0x00000001,0x48ce2288,0x000002a4,0x00000000,0x00000020,0x34000004,0x0e001400,0x000000a0,
-0x00000041,0x22a41228,0x160000de,0x06400640,0x00000040,0x22c00a28,0x1e0002a4,0x00800080,
-0x0000000c,0x22e00a08,0x1e0002c0,0x00080008,0x04000010,0x20001200,0x020008fc,0x000002e0,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x29181e28,0x00000000,0x00010001,
-0x00000020,0x34000004,0x0e001400,0x00000010,0x00000001,0x29181e28,0x00000000,0x00000000,
-0x00000001,0x62a40a8c,0x00000918,0x00000000,0x00000001,0x48ce2288,0x000002a4,0x00000000,
-0x01000010,0x20002260,0x1e000025,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000b50,
-0x01000010,0x20002260,0x1e000034,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000b30,
-0x00000001,0x22a41e68,0x00000000,0x00010001,0x03000010,0x20002260,0x1e000037,0x00bf00bf,
-0x00000001,0x29501e28,0x00000000,0x00010001,0x00000001,0x29441608,0x00000000,0x00000000,
-0x00000001,0x29481e08,0x00000000,0x00000000,0x00010002,0x49581a88,0x1e0002a4,0x00000000,
-0x05000010,0x20002260,0x1e000037,0x003f003f,0x00010002,0x49541a88,0x1e0002a4,0x00000000,
-0x01000010,0x20002260,0x1e0008c8,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000050,
-0x00000040,0x22a80208,0x02000054,0x00000058,0x00000009,0x22a40208,0x1600004c,0x00020002,
-0x00000040,0x22c00208,0x020002a8,0x0000005c,0x0c000038,0x291c0208,0x020002a4,0x000002c0,
-0x00000020,0x34000004,0x0e001400,0x00000010,0x0c000038,0x291c0208,0x02000048,0x00000050,
-0x02000010,0x20002260,0x1e0008cc,0x00090009,0x00010020,0x34000004,0x0e001400,0x00000320,
-0x00000040,0x22a41228,0x16000020,0x000f000f,0x00000005,0x22c41228,0x0e00090a,0x0000fffe,
-0x00000005,0x22d41228,0x0e000908,0x0000fffe,0x00000040,0x22000204,0x060002c8,0x02484400,
-0x00000001,0x49181e88,0x00000000,0x00010001,0x00000001,0x494c1e88,0x00000000,0x00000000,
-0x0000000c,0x42c00a48,0x1e0002a4,0x00040004,0x00000040,0x23c00a28,0x1e0002c4,0x00010001,
-0x00000041,0x22cc0a28,0x120002c4,0x000002c0,0x00000041,0x23e00a28,0x120003c0,0x000002c0,
-0x00000040,0x22e00a28,0x0a0002cc,0x000002d4,0x00000040,0x24000a28,0x0a0003e0,0x000002d4,
-0x00000041,0x23000a28,0x1e0002e0,0x00340034,0x00000041,0x22a40a28,0x1e000400,0x00340034,
-0x00000001,0x22e01e68,0x00000000,0x00010001,0x00000001,0x23280a0c,0x00000300,0x00000000,
-0x00000001,0x24280a0c,0x000002a4,0x00000000,0x0a800031,0x23403a6c,0x00000320,0x00000200,
-0x0a800031,0x24403a6c,0x00000420,0x00000200,0x03000010,0x20000200,0x16000354,0x00800080,
-0x03110010,0x20000200,0x16000388,0x00800080,0x03110010,0x20000200,0x16000454,0x00800080,
-0x03110010,0x20000200,0x16000488,0x00800080,0x00010002,0x42e41a88,0x1e0002e0,0x00000000,
-0x04000010,0x20000200,0x16000354,0x04000400,0x04110010,0x20000200,0x16000388,0x04000400,
-0x04110010,0x20000200,0x16000454,0x04000400,0x04110010,0x20000200,0x16000488,0x04000400,
-0x00010002,0x495c1a88,0x1e0002e0,0x00000000,0x01000010,0x20002260,0x1e0002e4,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x49181e88,0x00000000,0x00000000,
-0x01000010,0x20002260,0x1e00095c,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x494c1e88,0x00000000,0x00010001,0x06000010,0x20002260,0x1e0008c8,0x00090009,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x29481a08,0x1a0028d0,0x000028d2,
-0x03000010,0x20002260,0x1e0008c8,0x00090009,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x06000010,0x20000200,0x1600091c,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x0000000c,0x29500228,0x160008f4,0x00020002,0x00000020,0x34000004,0x0e001400,0x00000210,
-0x06000010,0x20002260,0x1e0008c8,0x00090009,0x00010020,0x34000004,0x0e001400,0x000001f0,
-0x06000010,0x20000200,0x1600091c,0x00000000,0x00010020,0x34000004,0x0e001400,0x000001d0,
-0x0000000c,0x29500228,0x160008f0,0x00020002,0x00000020,0x34000004,0x0e001400,0x000001b0,
-0x00000040,0x22a41228,0x16000020,0x000f000f,0x00000040,0x22000204,0x060002c8,0x02284300,
-0x00000001,0x23a01e68,0x00000000,0x00010001,0x0000000c,0x42c00a48,0x1e0002a4,0x00040004,
-0x00000041,0x22e01228,0x120002c0,0x0000090a,0x00000040,0x23000a28,0x120002e0,0x00000908,
-0x00000041,0x23200a28,0x1e000300,0x00340034,0x00000001,0x23480a0c,0x00000320,0x00000000,
-0x0a800031,0x23603a6c,0x00000340,0x00000200,0x06000010,0x20000200,0x16000374,0x00800080,
-0x00010002,0x49181a88,0x1e0003a0,0x00000000,0x03000010,0x20000200,0x16000374,0x04000400,
-0x00010002,0x494c1a88,0x1e0003a0,0x00000000,0x01000010,0x20002260,0x1e0008c4,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x29481a08,0x1a0028d0,0x000028d2,
-0x02000010,0x20002260,0x1e0008c4,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x06000010,0x20000200,0x1600091c,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29500228,0x000008f4,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000050,
-0x01000010,0x20002260,0x1e0008c4,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000030,
-0x06000010,0x20000200,0x1600091c,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x29500228,0x000008f0,0x00000000,0x02000010,0x20002260,0x1e000918,0x00010001,
-0x00010020,0x34000004,0x0e001400,0x00000040,0x03000010,0x20000200,0x16000948,0x00200020,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x29441608,0x00000000,0x00010001,
-0x00000020,0x34000004,0x0e001400,0x00000110,0x02000010,0x20002260,0x1e00094c,0x00010001,
-0x00010020,0x34000004,0x0e001400,0x00000040,0x03000010,0x20000200,0x16000948,0x00200020,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x29441608,0x00000000,0x00030003,
-0x00000020,0x34000004,0x0e001400,0x000000b0,0x02000010,0x20002260,0x1e000918,0x00010001,
-0x00010020,0x34000004,0x0e001400,0x00000040,0x05000010,0x20000200,0x16000948,0x00800080,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x29441608,0x00000000,0x00020002,
-0x00000020,0x34000004,0x0e001400,0x00000050,0x02000010,0x20002260,0x1e00094c,0x00010001,
-0x00010020,0x34000004,0x0e001400,0x00000030,0x05000010,0x20000200,0x16000948,0x00800080,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x29441608,0x00000000,0x00040004,
-0x02000010,0x20000200,0x16000944,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x02000010,0x20002260,0x1e000954,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x49401e88,0x00000000,0x00010001,0x00000020,0x34000004,0x0e001400,0x00000370,
-0x02000010,0x20000200,0x16000944,0x00030003,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x02000010,0x20002260,0x1e000954,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x49401e88,0x00000000,0x00020002,0x00000020,0x34000004,0x0e001400,0x00000310,
-0x02000010,0x20000200,0x16000944,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x02000010,0x20002260,0x1e000958,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x49401e88,0x00000000,0x00060006,0x00000020,0x34000004,0x0e001400,0x000002b0,
-0x02000010,0x20000200,0x16000944,0x00040004,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x02000010,0x20002260,0x1e000958,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x49401e88,0x00000000,0x00070007,0x00000020,0x34000004,0x0e001400,0x00000250,
-0x00000041,0x22a40a08,0x1e000950,0x000a000a,0x00000041,0x22a80208,0x1600091c,0x000d000d,
-0x06000010,0x20000200,0x020002a4,0x000002a8,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x02000010,0x20002260,0x1e000958,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x49401e88,0x00000000,0x00060006,0x00000020,0x34000004,0x0e001400,0x000001d0,
-0x00000041,0x22a40a08,0x1e000950,0x000a000a,0x00000041,0x22a80208,0x1600091c,0x000b000b,
-0x05000010,0x20000200,0x020002a4,0x000002a8,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x02000010,0x20002260,0x1e000958,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x49401e88,0x00000000,0x00050005,0x00000020,0x34000004,0x0e001400,0x00000150,
-0x00000041,0x22a40a08,0x1e000950,0x000a000a,0x00000041,0x22a80208,0x1600091c,0x00090009,
-0x05000010,0x20000200,0x020002a4,0x000002a8,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x49401e88,0x00000000,0x00000000,0x00000020,0x34000004,0x0e001400,0x000000f0,
-0x00000041,0x22a40a08,0x1e000950,0x000a000a,0x00000041,0x22a80208,0x1600091c,0x00070007,
-0x05000010,0x20000200,0x020002a4,0x000002a8,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x02000010,0x20002260,0x1e000954,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x49401e88,0x00000000,0x00040004,0x00000020,0x34000004,0x0e001400,0x00000070,
-0x00000041,0x22a40a08,0x1e000950,0x000a000a,0x00000041,0x22a80208,0x1600091c,0x00070007,
-0x04000010,0x20000200,0x020002a4,0x000002a8,0x00010020,0x34000004,0x0e001400,0x00000030,
-0x02000010,0x20002260,0x1e000954,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x49401e88,0x00000000,0x00030003,0x0020000c,0x24d01208,0x16450908,0x00020002,
-0x00200040,0x22a41248,0x16450020,0x003f003f,0x00600001,0x22e02648,0x00000000,0x32103210,
-0x00000041,0x23641208,0x1600090c,0x00030003,0x00600001,0x22f02648,0x00000000,0x32103210,
-0x00000001,0x295c0e28,0x00000000,0x0f0e0b0a,0x00000001,0x29580e28,0x00000000,0x0d0c0908,
-0x00200001,0x24c41248,0x006604d0,0x00000000,0x00200008,0x291c1248,0x164502a4,0x00060006,
-0x00600001,0x23201208,0x008d02e0,0x00000000,0x00600001,0x23001208,0x008d02e0,0x00000000,
-0x00000041,0x22a41208,0x1600090c,0x00020002,0x00600001,0x22e02648,0x00000000,0x32103210,
-0x00000001,0x29540e28,0x00000000,0x07060302,0x00200009,0x23401248,0x164504c4,0x00020002,
-0x00000041,0x22c01228,0x120004c6,0x0000091c,0x00400040,0x23300208,0x02690330,0x00000364,
-0x00400040,0x23100208,0x12690310,0x0000090c,0x602d2140,0x15191905,0x00000001,0x29500e28,
-0x00000000,0x05040100,0x20004d01,0x00002007,0x00000041,0x23441228,0x12000342,0x0000090c,
-0x00000040,0x24c00a08,0x120002c0,0x000004c4,0x00200040,0x22c01248,0x1245090c,0x00454340,
-0x00000040,0x22000204,0x060002d0,0x0228c300,0x00800009,0x23800208,0x168d0300,0x00040004,
-0x00600001,0x24202648,0x00000000,0x11110000,0x00000040,0x23600a08,0x12000344,0x00000340,
-0x00600001,0x24302648,0x00000000,0x33332222,0x04800010,0x20001260,0x128d02e0,0x000002c0,
-0x00800040,0x23c00208,0x168d0380,0x000b000b,0x00800041,0x23002248,0x168d0950,0x00040004,
-0x00000009,0x24080208,0x16000360,0x00040004,0x00000001,0x29181608,0x00000000,0x00000000,
-0x0a800033,0x0441e078,0x00002402,0x00000000,0x00810001,0x24401608,0x00000000,0x00000000,
-0x04800010,0x20001260,0x128d0420,0x000002c2,0x00600040,0x22001240,0x168d0300,0x04400440,
-0x00810001,0x24401608,0x00000000,0x00000000,0x00600001,0x23200208,0x01e08000,0x00000000,
-0x00600040,0x22001240,0x168d0310,0x04400440,0x00600001,0x23400208,0x01e08000,0x00000000,
-0x00600040,0x22e02248,0x22600320,0x00600340,0x00800001,0x24902288,0x00600321,0x00000000,
-0x00800001,0x24802288,0x00600320,0x00000000,0x00000001,0x44c81e88,0x00000000,0x00000000,
-0x00000001,0x491a1e88,0x00000000,0x00100010,0x00400040,0x22e01248,0x126902e0,0x006902e8,
-0x00200040,0x22e01248,0x124502e0,0x004502e4,0x00000040,0x44ca1288,0x120002e0,0x000002e2,
-0x00000041,0x22a42228,0x1e0004c8,0x00040004,0x00000001,0x62a80a88,0x000002a4,0x00000000,
-0x00000040,0x22001240,0x160002a4,0x04800480,0x00000040,0x22c02228,0x1e0002a8,0x00010001,
-0x00000001,0x22c42228,0x00008000,0x00000000,0x00000040,0x22001240,0x160002c0,0x04800480,
-0x00000040,0x22e00a28,0x220002c4,0x00008000,0x00000040,0x23000a28,0x220002e0,0x00008001,
-0x01000040,0x60000a81,0x22000300,0x00008002,0x00000001,0x23201e68,0x00000000,0x00010001,
-0x00000040,0x22001240,0x160002a4,0x04900490,0x00000009,0x43401a88,0x22000320,0x000004c8,
-0x02000010,0x20002220,0x1e008000,0x00090009,0x00010002,0x44cc2288,0x1e000340,0x00000000,
-0x00010001,0x44cc1e89,0x00000000,0x00000000,0x01000010,0x20002260,0x1e0004cc,0x00000000,
-0x00000006,0x491a2288,0x2200091a,0x000004cc,0x00010020,0x34000004,0x0e001400,0x000000f0,
-0x00000001,0x44ce1e88,0x00000000,0x00000000,0x00000041,0x22a42228,0x1e0004c8,0x00040004,
-0x00000040,0x22c00a28,0x220002a4,0x000004ce,0x00000040,0x22001240,0x160002c0,0x04900490,
-0x06000010,0x20002220,0x1e008000,0x00030003,0x00000001,0x22c41e68,0x00000000,0x00010001,
-0x00000040,0x22001240,0x160002c0,0x04800480,0x00010002,0x44cc1a88,0x1e0002c4,0x00000000,
-0x01000010,0x20002220,0x1e008000,0x00000000,0x00010001,0x44cc1e88,0x00000000,0x00000000,
-0x00000040,0x44ce2288,0x1e0004ce,0x00010001,0x00000009,0x22e02228,0x0a0004cc,0x000002c0,
-0x05000010,0x20002260,0x1e0004ce,0x00040004,0x00000006,0x49181248,0x0a000918,0x000002e0,
-0x00010020,0x34000004,0x0e001400,0xffffff20,0x00000040,0x44c82288,0x1e0004c8,0x00010001,
-0x05000010,0x20002260,0x1e0004c8,0x00040004,0x00010020,0x34000004,0x0e001400,0xfffffdc0,
-0x00200009,0x22b01208,0x164504c4,0x00020002,0x00200040,0x62c01288,0x02450908,0x004542b0,
-0x00200001,0x22e02288,0x006002c0,0x00000000,0x00000041,0x22e42228,0x1e0002e1,0x00040004,
-0x00000040,0x23000a28,0x220002e4,0x000002e0,0x00000040,0x22001240,0x16000300,0x09500950,
-0x02000001,0x60000a80,0x00000300,0x00000000,0x00000001,0x43202288,0x00008000,0x00000000,
-0x00000040,0x22002240,0x16000320,0x04800480,0x00000001,0x44942288,0x00008000,0x00000000,
-0x00000001,0x23380e28,0x00000000,0x0b0a0908,0x00000001,0x23340e28,0x00000000,0x07060504,
-0x00000001,0x23300e28,0x00000000,0x03020100,0x00000001,0x233c0e28,0x00000000,0x0f0e0d0c,
-0x00000001,0x42a41e8c,0x00000000,0x00000000,0x00000009,0x22c40208,0x160004c0,0x00060006,
-0x04800010,0x20002261,0x228d0330,0x00000320,0x00810001,0x24802289,0x000002a4,0x00000000,
-0x00600040,0x22e02248,0x228d0480,0x008d0488,0x00400040,0x22e01248,0x126902e0,0x006902e8,
-0x00200040,0x22e01248,0x124502e0,0x004502e4,0x00000040,0x42c01288,0x120002e0,0x000002e2,
-0x00000040,0x23000208,0x220002c4,0x000002c0,0x00000009,0x24900208,0x16000300,0x00060006,
-0x00010020,0x34000004,0x0e001400,0x00000120,0x00000040,0x22a40208,0x160004c0,0x00010001,
-0x00000041,0x22a81208,0x1200091c,0x0000091e,0x00000001,0x22c01e68,0x00000000,0x00c000c0,
-0x00000040,0x22f02228,0x1e0004ca,0xffffffff,0x00000001,0x23200608,0x00000000,0x05000000,
-0x00000009,0x23400228,0x160004c0,0x00040004,0x00200001,0x22e81248,0x006604d0,0x00000000,
-0x00000001,0x22e00608,0x00000000,0x73b50001,0x01000010,0x20000200,0x020002a4,0x000002a8,
-0x00000040,0x22000204,0x060002dc,0x020a0000,0x00000008,0x23680a08,0x1e000340,0x00040004,
-0x00010002,0x44cc1a88,0x1e0002c0,0x00000000,0x00000006,0x63000a8c,0x220002f0,0x000004cc,
-0x03000010,0x20002260,0x1e0004cc,0x00000000,0x00000001,0x491b2288,0x00000300,0x00000000,
-0x00010002,0x22ec0208,0x16000320,0x00000000,0x00000001,0x22e40208,0x00000918,0x00000000,
-0x0a400033,0x00017014,0x00002361,0x00000000,0x02000010,0x20002260,0x1e000494,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000018,0x20004d01,0x00007d07,0x07000031,0x20003a00,
-0x06000fa0,0x82000010,0x02000005,0x20002260,0x160008cf,0x00010001,0x00000001,0x44801e88,
-0x00000000,0x00000000,0x00800001,0x23801e08,0x00000000,0x00000000,0x00000001,0x24821648,
-0x00000000,0x00000000,0x00600001,0x23c01608,0x00000000,0x00000000,0x00010002,0x44842288,
-0x22000035,0x00000036,0x01000010,0x20002260,0x1e0008ce,0x00010001,0x00010001,0x44801e88,
-0x00000000,0x00010001,0x02000005,0x20002260,0x160008cf,0x00010001,0x00010001,0x44801e88,
-0x00000000,0x00010001,0x01000010,0x20002260,0x1e0008ce,0x00000000,0x00010001,0x44801e88,
-0x00000000,0x00020002,0x01000010,0x20002260,0x1e0008cd,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000120,0x01000010,0x20002260,0x1e0008cf,0x00000000,0x00000001,0x43c01e88,
-0x00000000,0x00020002,0x00000001,0x43c21e88,0x00000000,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000080,0x03000010,0x20002260,0x1e0008ce,0x00010001,0x00000001,0x43c11e88,
-0x00000000,0x00010001,0x00200001,0x23d41248,0x004508d0,0x00000000,0x00200001,0x24822288,
-0x00000940,0x00000000,0x00200001,0x23ce2288,0x000008c4,0x00000000,0x00200001,0x23ca2288,
-0x000008ce,0x00000000,0x00010001,0x44801e88,0x00000000,0x00000000,0x00000020,0x34000004,
-0x0e001400,0x00000c98,0x00000005,0x42a41288,0x16000910,0x000f000f,0x00200001,0x24822288,
-0x00000940,0x00000000,0x00200001,0x23ca2288,0x000008ce,0x00000000,0x00400001,0x23c62288,
-0x000002a4,0x00000000,0x00200001,0x23c42288,0x000002a4,0x00000000,0x00000020,0x34000004,
-0x0e001400,0x00000c38,0x02000010,0x20002260,0x1e0008cc,0x00060006,0x00010020,0x34000004,
-0x0e001400,0x00000100,0x01000010,0x20002260,0x1e0008cf,0x00000000,0x00000001,0x43c01e88,
-0x00000000,0x00010001,0x00000001,0x43c21e88,0x00000000,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000060,0x00000001,0x43c11e88,0x00000000,0x00010001,0x00200001,0x23d41248,
-0x004508d0,0x00000000,0x00200001,0x24822288,0x00000940,0x00000000,0x00200001,0x23ce2288,
-0x000008c4,0x00000000,0x00200001,0x23ca2288,0x000008ce,0x00000000,0x00000020,0x34000004,
-0x0e001400,0x00000b78,0x00000005,0x42a41288,0x16000910,0x000f000f,0x00200001,0x24822288,
-0x00000940,0x00000000,0x00200001,0x23ca2288,0x000008ce,0x00000000,0x00400001,0x23c62288,
-0x000002a4,0x00000000,0x00200001,0x23c42288,0x000002a4,0x00000000,0x00000020,0x34000004,
-0x0e001400,0x00000b18,0x02000010,0x20002260,0x1e0008cc,0x00050005,0x00010020,0x34000004,
-0x0e001400,0x000000d0,0x00000001,0x43c01e88,0x00000000,0x00010001,0x01000010,0x20002260,
-0x1e0008cf,0x00000000,0x00000001,0x43c22288,0x000003c0,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000ab8,0x00000001,0x43ca2288,0x000008ce,0x00000000,0x00000001,0x43cf2288,
-0x000008c6,0x00000000,0x00200001,0x23dc1248,0x004508d8,0x00000000,0x00000001,0x43ce2288,
-0x000008c4,0x00000000,0x00200001,0x24822288,0x00000940,0x00000000,0x00000001,0x43c11e88,
-0x00000000,0x00010001,0x00200001,0x23d41248,0x004508d0,0x00000000,0x00000001,0x43cb2288,
-0x000003ca,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000a28,0x01000010,0x20002260,
-0x1e0008cc,0x00040004,0x00010020,0x34000004,0x0e001400,0x00000948,0x06000010,0x20002260,
-0x1e000494,0x00000000,0x00000001,0x44861e88,0x00000000,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000900,0x02000010,0x20002260,0x1e0008cc,0x00030003,0x00010020,0x34000004,
-0x0e001400,0x00000510,0x01000010,0x20002260,0x1e0008cf,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x000000c0,0x00000001,0x43c01e88,0x00000000,0x00000000,0x00000040,0x22002240,
-0x16000486,0x08c008c0,0x00000001,0x43c11e88,0x00000000,0x00010001,0x00000001,0x43c22288,
-0x000003c0,0x00000000,0x00200001,0x23ce2288,0x00008004,0x00000000,0x00000041,0x22a42228,
-0x1e000486,0x00020002,0x00000041,0x22c01248,0x160002a4,0x00020002,0x00000040,0x22001240,
-0x160002c0,0x08c008c0,0x00200001,0x23d41248,0x00208010,0x00000000,0x00200001,0x24822288,
-0x00000940,0x00000000,0x00200001,0x23ca2288,0x000008ce,0x00000000,0x00000020,0x34000004,
-0x0e001400,0x00000550,0x02000010,0x20001240,0x12000910,0x00000912,0x00010020,0x34000004,
-0x0e001400,0x00000120,0x02000010,0x20001240,0x12000910,0x00000914,0x00010020,0x34000004,
-0x0e001400,0x00000100,0x02000010,0x20001240,0x12000914,0x00000916,0x00010020,0x34000004,
-0x0e001400,0x000000e0,0x00000040,0x22a41228,0x16000900,0x00100010,0x04000010,0x20000a20,
-0x120002a4,0x00000904,0x00010020,0x34000004,0x0e001400,0x000000b0,0x00000040,0x22a41228,
-0x16000902,0x00100010,0x04000010,0x20000a20,0x120002a4,0x00000906,0x00010020,0x34000004,
-0x0e001400,0x00000080,0x00000005,0x42a41288,0x16000910,0x000f000f,0x00000001,0x43c01e88,
-0x00000000,0x00010001,0x00200001,0x23ca2288,0x000008ce,0x00000000,0x00200001,0x24822288,
-0x00000940,0x00000000,0x00000001,0x43c21e88,0x00000000,0x00000000,0x00200001,0x23c62288,
-0x000002a4,0x00000000,0x00200001,0x23c42288,0x004503c6,0x00000000,0x00000020,0x34000004,
-0x0e001400,0x00000410,0x02000010,0x20001240,0x12000910,0x00000912,0x00010020,0x34000004,
-0x0e001400,0x00000100,0x02000010,0x20001240,0x12000914,0x00000916,0x00010020,0x34000004,
-0x0e001400,0x000000e0,0x00000040,0x22a41228,0x16000900,0x00100010,0x04000010,0x20000a20,
-0x120002a4,0x00000904,0x00010020,0x34000004,0x0e001400,0x000000b0,0x00000040,0x22a41228,
-0x16000902,0x00100010,0x04000010,0x20000a20,0x120002a4,0x00000906,0x00010020,0x34000004,
-0x0e001400,0x00000080,0x00000001,0x43c01e88,0x00000000,0x00010001,0x00000005,0x43c61288,
-0x16000910,0x000f000f,0x00000005,0x43c71288,0x16000914,0x000f000f,0x00200001,0x24822288,
-0x00000940,0x00000000,0x00200001,0x23ca2288,0x000008ce,0x00000000,0x00000001,0x43c22288,
-0x000003c0,0x00000000,0x00200001,0x23c42288,0x000003c6,0x00000000,0x00000020,0x34000004,
-0x0e001400,0x000002f0,0x02000010,0x20001240,0x12000910,0x00000914,0x00010020,0x34000004,
-0x0e001400,0x00000100,0x02000010,0x20001240,0x12000912,0x00000916,0x00010020,0x34000004,
-0x0e001400,0x000000e0,0x00000040,0x22a41228,0x16000900,0x00100010,0x04000010,0x20000a20,
-0x120002a4,0x00000904,0x00010020,0x34000004,0x0e001400,0x000000b0,0x00000040,0x22a41228,
-0x16000902,0x00100010,0x04000010,0x20000a20,0x120002a4,0x00000906,0x00010020,0x34000004,
-0x0e001400,0x00000080,0x00000005,0x43c61288,0x16000910,0x000f000f,0x00000001,0x43c21e88,
-0x00000000,0x00020002,0x00000005,0x43c71288,0x16000912,0x000f000f,0x00000001,0x43c01e88,
-0x00000000,0x00010001,0x00200001,0x24822288,0x00000940,0x00000000,0x00200001,0x23ca2288,
-0x000008ce,0x00000000,0x00200001,0x23c42288,0x000003c6,0x00000000,0x00000020,0x34000004,
-0x0e001400,0x000001d0,0x00000041,0x22a42248,0x16000486,0x00020002,0x00000001,0x43c01e88,
-0x00000000,0x00000000,0x00000040,0x22001240,0x160002a4,0x09100910,0x00000001,0x43c22288,
-0x000003c0,0x00000000,0x00000005,0x42c01288,0x1e008000,0x000f000f,0x00200001,0x23c62288,
-0x000002c0,0x00000000,0x00000005,0x42e01288,0x1e008000,0x000f000f,0x00200001,0x24822288,
-0x00000940,0x00000000,0x00200001,0x23ca2288,0x000008ce,0x00000000,0x00200001,0x23c42288,
-0x000002e0,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000120,0x02000010,0x20002260,
-0x1e0008cf,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000100,0x00000040,0x22002240,
-0x16000486,0x08c008c0,0x00000001,0x43c01e88,0x00000000,0x00000000,0x00000001,0x43c21e88,
-0x00000000,0x00030003,0x00000005,0x42a42288,0x1e008028,0x000f000f,0x00000041,0x22c02248,
-0x16000486,0x00020002,0x00200001,0x23c42288,0x000002a4,0x00000000,0x00000040,0x22001240,
-0x160002c0,0x09100910,0x00000005,0x43c61288,0x1e008000,0x000f000f,0x0000000c,0x22e01228,
-0x1e008000,0x00040004,0x00000005,0x63000a8c,0x1e0002e0,0x000f000f,0x00000001,0x43c72288,
-0x00000300,0x00000000,0x0000000c,0x23201228,0x1e008000,0x00080008,0x00000005,0x63c80a88,
-0x1e000320,0x000f000f,0x0000000c,0x43c91288,0x1e008000,0x000c000c,0x00200001,0x24822288,
-0x00000940,0x00000000,0x00000001,0x23ca1648,0x00000000,0x00000000,0x00000005,0x22a42228,
-0x1e0003c0,0x00030003,0x00000009,0x22a82228,0x1e0003c2,0x00040004,0x00000009,0x22c02228,
-0x1e0003c1,0x00040004,0x00000009,0x22e42228,0x1e0003c1,0x00050005,0x00000040,0x43aa2288,
-0x22000484,0x00000480,0x00200001,0x23881248,0x004503d4,0x00000000,0x00000001,0x43831e88,
-0x00000000,0x00000000,0x00000009,0x23602228,0x1e0003cb,0x00020002,0x00000006,0x63800a88,
-0x0a0002a4,0x000002a8,0x00000005,0x22a82228,0x1e0003cf,0x00030003,0x00000006,0x22e02228,
-0x0a0003c5,0x000002c0,0x00000005,0x22a42228,0x1e0003ce,0x00030003,0x00000009,0x23202228,
-0x1e0003aa,0x00040004,0x00000040,0x44862288,0x1e000486,0x00010001,0x00200005,0x43842288,
-0x1e4003c6,0x000f000f,0x00000008,0x22e80a08,0x1e000490,0x00040004,0x00000009,0x22c00a28,
-0x1e0002a8,0x00040004,0x00000006,0x63000a8c,0x0a0002e0,0x000002e4,0x00000005,0x22e42228,
-0x1e0003d1,0x00030003,0x00000006,0x6340228c,0x0a0003aa,0x00000320,0x00000005,0x22e02228,
-0x1e0003d0,0x00030003,0x00600001,0x23981648,0x00000000,0x00000000,0x00000001,0x43812288,
-0x000003c4,0x00000000,0x00000006,0x63a80a88,0x0a0002a4,0x000002c0,0x00000009,0x22a42228,
-0x1e000483,0x00030003,0x00000001,0x43822288,0x00000300,0x00000000,0x00000009,0x23000a28,
-0x1e0002e4,0x00040004,0x00000040,0x22000204,0x060002d8,0x020a0300,0x00200001,0x23941248,
-0x00450388,0x00000000,0x00200001,0x238c1248,0x00450388,0x00000000,0x00200001,0x23901248,
-0x00450388,0x00000000,0x00000006,0x62c00a8c,0x220002a4,0x00000482,0x00000001,0x43ad2288,
-0x00000383,0x00000000,0x00000001,0x43af2288,0x00000383,0x00000000,0x00000006,0x63ac0a88,
-0x22000360,0x000003ca,0x00200005,0x43852288,0x1e4003c7,0x000f000f,0x00000001,0x43aa2288,
-0x00000340,0x00000000,0x00000006,0x63a90a88,0x0a0002e0,0x00000300,0x00000001,0x43ae2288,
-0x000002c0,0x00000000,0x05000010,0x20002260,0x22000486,0x00000494,0x00000040,0x24900208,
-0x16000490,0x00400040,0x0a800033,0x0001c054,0x000022e2,0x00000000,0x00010020,0x34000004,
-0x0e001400,0xfffff700,0x20004d01,0x00007e07,0x07000031,0x20003a00,0x06000fc0,0x82000010,
-0x01000010,0x20002260,0x1e0008cf,0x00000000,0x00000001,0x43c01e88,0x00000000,0x00010001,
-0x00000001,0x43c21e88,0x00000000,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000080,
-0x00000001,0x43ca2288,0x000008ce,0x00000000,0x00000001,0x43cf2288,0x000008c5,0x00000000,
-0x00200001,0x23dc1248,0x004508d4,0x00000000,0x00000001,0x43ce2288,0x000008c4,0x00000000,
-0x00200001,0x24822288,0x00000940,0x00000000,0x00000001,0x43c11e88,0x00000000,0x00010001,
-0x00200001,0x23d41248,0x004508d0,0x00000000,0x00000001,0x43cb2288,0x000003ca,0x00000000,
-0x00000005,0x22a42228,0x1e0003c0,0x00030003,0x00000009,0x22a82228,0x1e0003c2,0x00040004,
-0x00000009,0x22c02228,0x1e0003c1,0x00040004,0x00000009,0x22e42228,0x1e0003c1,0x00050005,
-0x00000040,0x43aa2288,0x22000484,0x00000480,0x00000001,0x43831e88,0x00000000,0x00000000,
-0x00000009,0x23602228,0x1e0003cb,0x00020002,0x00200005,0x43842288,0x1e4003c6,0x000f000f,
-0x00000006,0x63800a88,0x0a0002a4,0x000002a8,0x00000005,0x22a82228,0x1e0003cf,0x00030003,
-0x00000006,0x22e02228,0x0a0003c5,0x000002c0,0x00000005,0x22a42228,0x1e0003ce,0x00030003,
-0x00000009,0x23202228,0x1e0003aa,0x00040004,0x00000008,0x22e80a08,0x1e000490,0x00040004,
-0x00600001,0x23981648,0x00000000,0x00000000,0x00400001,0x23901648,0x00000000,0x00000000,
-0x00000009,0x22c00a28,0x1e0002a8,0x00040004,0x00000006,0x63000a8c,0x0a0002e0,0x000002e4,
-0x00000005,0x22e42228,0x1e0003d1,0x00030003,0x00000006,0x6340228c,0x0a0003aa,0x00000320,
-0x00000005,0x22e02228,0x1e0003d0,0x00030003,0x00200001,0x238c1248,0x004503dc,0x00000000,
-0x00200001,0x23881248,0x004503d4,0x00000000,0x00000006,0x63a80a88,0x0a0002a4,0x000002c0,
-0x00000009,0x22a42228,0x1e000483,0x00030003,0x00000001,0x43822288,0x00000300,0x00000000,
-0x00000009,0x23000a28,0x1e0002e4,0x00040004,0x00000001,0x43812288,0x000003c4,0x00000000,
-0x00000040,0x22000204,0x060002d8,0x020a0300,0x00000001,0x43af2288,0x00000383,0x00000000,
-0x00000001,0x43ad2288,0x00000383,0x00000000,0x00000006,0x62c00a8c,0x220002a4,0x00000482,
-0x00000006,0x63ac0a88,0x22000360,0x000003ca,0x00200005,0x43852288,0x1e4003c7,0x000f000f,
-0x00000001,0x43aa2288,0x00000340,0x00000000,0x00000006,0x63a90a88,0x0a0002e0,0x00000300,
-0x00000001,0x43ae2288,0x000002c0,0x00000000,0x0a800033,0x0001c054,0x000022e2,0x00000000,
-0x20004d01,0x00007f07,0x07000031,0x20003a00,0x06000fe0,0x82000010,0x2000007d,0x2000000c,
-0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c,
-0x00000005,0x206c124c,0x16000004,0x07ff07ff,0x00000005,0x206e124c,0x16000006,0x07ff07ff,
-0x00800001,0x20801608,0x00000000,0x00000000,0x00000001,0x20701248,0x0000006c,0x00000000,
-0x00000001,0x20721248,0x0000006e,0x00000000,0x00200041,0x20c01228,0x16450070,0x00100010,
-0x00200001,0x20d00ae8,0x004500c0,0x00000000,0x00200041,0x20e03ae8,0x3a4500d0,0x00450028,
-0x00000001,0x29b83ee8,0x00000000,0x00000000,0x20004b01,0x00004c07,0x00000001,0x29880608,
-0x00000000,0x00000000,0x00000001,0x29a03ee8,0x00000000,0x00000000,0x00000001,0x29a41e08,
-0x00000000,0x00000000,0x00000001,0x29a83ae8,0x000000e0,0x00000000,0x00000001,0x29ac3ae8,
-0x000000e4,0x00000000,0x00000001,0x29b03ae8,0x00000028,0x00000000,0x00000001,0x29b43ae8,
-0x0000002c,0x00000000,0x00000001,0x29bc1608,0x00000000,0x00000000,0x00000040,0x22000204,
-0x06000060,0x050eb000,0x00000009,0x20c8020c,0x06000068,0x00000008,0x00000040,0x22000004,
-0x02000200,0x000000c8,0x02800031,0x21003a48,0x00000980,0x00000200,0x00000001,0x29f83ee8,
-0x00000000,0x00000000,0x20004b01,0x004c4e07,0x00000001,0x29e03ee8,0x00000000,0x00000000,
-0x00000001,0x29e41e08,0x00000000,0x00010001,0x00000001,0x29e83ae8,0x000000e0,0x00000000,
-0x00000001,0x29ec3ae8,0x000000e4,0x00000000,0x00000001,0x29f03ae8,0x00000028,0x00000000,
-0x00000001,0x29f43ae8,0x0000002c,0x00000000,0x00000001,0x29fc1608,0x00000000,0x00000000,
-0x00000040,0x22000204,0x06000060,0x050eb000,0x00000009,0x20cc020c,0x06000068,0x00000008,
-0x00000040,0x22000004,0x02000200,0x000000cc,0x02800031,0x23003a48,0x000009c0,0x00000200,
-0x00000001,0x2a383ee8,0x00000000,0x00000000,0x20004b01,0x004e5007,0x00000001,0x2a203ee8,
-0x00000000,0x00000000,0x00000001,0x2a241e08,0x00000000,0x00020002,0x00000001,0x2a283ae8,
-0x000000e0,0x00000000,0x00000001,0x2a2c3ae8,0x000000e4,0x00000000,0x00000001,0x2a303ae8,
-0x00000028,0x00000000,0x00000001,0x2a343ae8,0x0000002c,0x00000000,0x00000001,0x2a3c1608,
-0x00000000,0x00000000,0x00000040,0x22000204,0x06000060,0x050eb000,0x00000009,0x20d8020c,
-0x06000068,0x00000008,0x00000040,0x22000004,0x02000200,0x000000d8,0x02800031,0x25003a48,
-0x00000a00,0x00000200,0x00000001,0x2a783ee8,0x00000000,0x00000000,0x20004b01,0x00505207,
-0x00000001,0x2a603ee8,0x00000000,0x00000000,0x00000001,0x2a641e08,0x00000000,0x00030003,
-0x00000001,0x2a683ae8,0x000000e0,0x00000000,0x00000001,0x2a6c3ae8,0x000000e4,0x00000000,
-0x00000001,0x2a703ae8,0x00000028,0x00000000,0x00000001,0x2a743ae8,0x0000002c,0x00000000,
-0x00000001,0x2a7c1608,0x00000000,0x00000000,0x00000040,0x22000204,0x06000060,0x050eb000,
-0x00000009,0x20dc020c,0x06000068,0x00000008,0x00000040,0x22000004,0x02000200,0x000000dc,
-0x02800031,0x27003a48,0x00000a40,0x00000200,0x00a00001,0x29002288,0x00400181,0x00000000,
-0x00a00001,0x29202288,0x004001c1,0x00000000,0x00a00001,0x29402288,0x00400381,0x00000000,
-0x00a00001,0x29602288,0x004003c1,0x00000000,0x00000041,0x20741228,0x1600006c,0x00100010,
-0x00000041,0x20781228,0x1600006e,0x00100010,0x20004d01,0x00005407,0x00000001,0x2a88060c,
-0x00000000,0x0007000f,0x20284001,0x00035400,0x00000001,0x2a84020c,0x00000078,0x00000000,
-0x00000040,0x22000204,0x06000064,0x020a8000,0x0c600033,0x00048014,0x00002a84,0x00000000,
-0x00a00001,0x29002288,0x00400581,0x00000000,0x00a00001,0x29202288,0x004005c1,0x00000000,
-0x00a00001,0x29402288,0x00400781,0x00000000,0x00a00001,0x29602288,0x004007c1,0x00000000,
-0x20004d01,0x00005507,0x00000040,0x2aa40a28,0x1e000078,0x00080008,0x00000001,0x2aa8060c,
-0x00000000,0x0007000f,0x20284001,0x00035500,0x00000040,0x22000204,0x06000064,0x020a8000,
-0x0c600033,0x00048014,0x00002aa4,0x00000000,0x00600001,0x40802288,0x00600201,0x00000000,
-0x00600001,0x40902288,0x00600241,0x00000000,0x00600001,0x40812288,0x00600101,0x00000000,
-0x00600001,0x40912288,0x00600141,0x00000000,0x00600001,0x40a02288,0x00600401,0x00000000,
-0x00600001,0x40b02288,0x00600441,0x00000000,0x00600001,0x40a12288,0x00600301,0x00000000,
-0x00600001,0x40b12288,0x00600341,0x00000000,0x00000041,0x207c1228,0x1600006e,0x00080008,
-0x20004d01,0x00005607,0x00000001,0x2ac8060c,0x00000000,0x0003000f,0x20284001,0x00035600,
-0x00000001,0x2ac4020c,0x0000007c,0x00000000,0x00000040,0x22000204,0x06000064,0x020a8001,
-0x0c600033,0x00004014,0x00002ac2,0x00000000,0x00600001,0x40802288,0x00600601,0x00000000,
-0x00600001,0x40902288,0x00600641,0x00000000,0x00600001,0x40812288,0x00600501,0x00000000,
-0x00600001,0x40912288,0x00600541,0x00000000,0x00600001,0x40a02288,0x00600801,0x00000000,
-0x00600001,0x40b02288,0x00600841,0x00000000,0x00600001,0x40a12288,0x00600701,0x00000000,
-0x00600001,0x40b12288,0x00600741,0x00000000,0x20004d01,0x00005707,0x00000040,0x2ae40a28,
-0x1e00007c,0x00040004,0x00000001,0x2ae8060c,0x00000000,0x0003000f,0x20284001,0x00035700,
-0x00000040,0x22000204,0x06000064,0x020a8001,0x0c600033,0x00004014,0x00002ae2,0x00000000,
-0x20004d01,0x00007f07,0x07000031,0x20003a00,0x06000fe0,0x82000010,0x2000007d,0x2000000c,
-0x00000005,0x20ea124c,0x16000006,0x07ff07ff,0x01000005,0x20e81248,0x16000004,0x07ff07ff,
-0x00000001,0x22961e68,0x00000000,0x00810081,0x00600001,0x22602668,0x00000000,0x00000086,
-0x00800001,0x21801608,0x00000000,0x00000000,0x00800001,0x21001608,0x00000000,0x00000000,
-0x03400010,0x20001261,0x1e0000ea,0x00000000,0x00000009,0x22981208,0x160000ea,0x00040004,
-0x00000009,0x22901208,0x160000e8,0x00040004,0x00800001,0x21c01608,0x00000000,0x00000000,
-0x00800001,0x22001e68,0x00000000,0x00000000,0x00410002,0x43701a89,0x1e000296,0x007f007f,
-0x00800001,0x22201648,0x00000000,0x00000000,0x00800001,0x21401608,0x00000000,0x00000000,
-0x00000001,0x40f41e88,0x00000000,0x00000000,0x00200001,0x20f81648,0x00000000,0x7f7f7f7f,
-0x00600001,0x22402648,0x00000000,0x75438102,0x00600001,0x22701648,0x00000000,0x7f7f7f7f,
-0x00600001,0x22801648,0x00000000,0x81818181,0x0020000c,0x20ec1248,0x16450020,0x00040004,
-0x00200001,0x22501a48,0x00450260,0x00000000,0x00000001,0x429c0268,0x00000298,0x00000000,
-0x00000001,0x42940268,0x00000290,0x00000000,0x00400001,0x20fc2288,0x00400370,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000098,0x20004d01,0x00002407,0x00000040,0x22000204,
-0x060000e0,0x02390000,0x00000001,0x2488060c,0x00000000,0x00170003,0x00000040,0x24841a28,
-0x1e00029c,0xffffffff,0x00000040,0x24801a28,0x1e000294,0xfffcfffc,0x03400010,0x20001260,
-0x1e0000ea,0x00000000,0x0c600031,0x22a03a0c,0x00000480,0x00000200,0x00600001,0x22882288,
-0x006002c7,0x00000000,0x00600001,0x22802288,0x006002a7,0x00000000,0x00410001,0x20fc2288,
-0x000002a3,0x00000000,0x01000010,0x20001260,0x1e0000ea,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x000000c0,0x20004d01,0x00002507,0x00000040,0x22000204,0x060000e0,0x02190000,
-0x20086001,0x13002500,0x00000040,0x24a41a28,0x1e00029c,0xffffffff,0x00000001,0x24a01a08,
-0x00000294,0x00000000,0x0000000c,0x23341208,0x160000ec,0x00020002,0x0c600031,0x23003a0c,
-0x000004a0,0x00000200,0x00000040,0x23380208,0x1e000334,0xffffffff,0x05400010,0x20001200,
-0x020000e8,0x00000338,0x60004101,0x00181905,0x00000001,0x23300208,0x00000310,0x00000000,
-0x60104101,0x00181305,0x00410002,0x44702288,0x22690330,0x0000032f,0x00400001,0x20f82288,
-0x00400470,0x00000000,0x01000010,0x20001260,0x1e0000ea,0x00000000,0x00000001,0x40f61e88,
-0x00000000,0x00700070,0x00010020,0x34000004,0x0e001400,0x00000030,0x01000010,0x20001260,
-0x1e0000e8,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x40f61e88,
-0x00000000,0x00740074,0x01000010,0x20001260,0x1e0000ea,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000050,0x00000040,0x233c1208,0x160000e8,0x00010001,0x0000000c,0x23401208,
-0x160000ec,0x00020002,0x04000010,0x20000200,0x0200033c,0x00000340,0x00010020,0x34000004,
-0x0e001400,0x00000010,0x00000006,0x40f62288,0x1e0000f6,0x00080008,0x01000005,0x20002220,
-0x1e00002a,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x40f41e88,
-0x00000000,0x00010001,0x01000005,0x20002220,0x1e00002a,0x00040004,0x00010020,0x34000004,
-0x0e001400,0x00000010,0x00000006,0x40f42288,0x1e0000f4,0x00020002,0x01000005,0x20002220,
-0x1e00002a,0x00080008,0x00010020,0x34000004,0x0e001400,0x00000010,0x00000006,0x40f42288,
-0x1e0000f4,0x00040004,0x00000006,0x410e2288,0x1e00010e,0x00080008,0x00600041,0x23501248,
-0x168d0220,0x00020002,0x00000001,0x413c2288,0x000000f4,0x00000000,0x00600001,0x21b82288,
-0x000900f8,0x00000000,0x00000006,0x41202288,0x1e000120,0x00020002,0x00000005,0x210a1a48,
-0x1e00029c,0xfffefffe,0x00400001,0x21a80208,0x00690270,0x00000000,0x00000006,0x410e2288,
-0x1e00010e,0x00200020,0x00600040,0x22001240,0x168d0350,0x02400240,0x00000001,0x41a51e88,
-0x00000000,0x00010001,0x60004101,0x00140e05,0x00600001,0x21f01648,0x00000000,0x7f7f7f7f,
-0x00600001,0x21e01648,0x00000000,0x81818181,0x00000001,0x21081a48,0x00000294,0x00000000,
-0x00000001,0x413d2288,0x000000f6,0x00000000,0x00000001,0x41a72288,0x000000fc,0x00000000,
-0x00000006,0x410e2288,0x1e00010e,0x00800080,0x00000009,0x23441228,0x1e008200,0x00040004,
-0x00000006,0x61d01288,0x0a008000,0x00000344,0x00000009,0x23481228,0x1e008600,0x00040004,
-0x00000006,0x61d11288,0x0a008400,0x00000348,0x00000009,0x234c1228,0x1e008a00,0x00040004,
-0x00000006,0x6364128c,0x0a008800,0x0000034c,0x00000001,0x41d22288,0x00000364,0x00000000,
-0x00000009,0x23601228,0x1e008e00,0x00040004,0x00000006,0x6368128c,0x0a008c00,0x00000360,
-0x00000001,0x41d32288,0x00000368,0x00000000,0x20005701,0x000a2807,0x00000040,0x22000204,
-0x060000e4,0x10782000,0x20005701,0x000c2a07,0x20005701,0x00082607,0x20005701,0x000e2c07,
-0x20004d01,0x00002e07,0x20086001,0x03002e00,0x00000001,0x25c41208,0x000000ea,0x00000000,
-0x00000041,0x25c01228,0x160000e8,0x00040004,0x0d600031,0x23803a0c,0x000004c0,0x00000200,
-0x00000040,0x22000204,0x060000f0,0x020a8000,0x00000001,0x22001a68,0x0000038c,0x00000000,
-0x00200001,0x24601a68,0x00450200,0x00000000,0x0c600033,0x00023014,0x000025c1,0x00000000,
-0x0a600031,0x25e03a08,0x06000000,0x0219e000,0x20004d01,0x002f2f07,0x20004d01,0x00007f07,
-0x07000031,0x20003a00,0x06000fe0,0x82000010,0x2000007d,0x2000000c,0x2000007d,0x2000000c,
-0x00000001,0x22a01e28,0x00000000,0x00000000,0x00000040,0x20e00a28,0x1e0002a0,0x00040004,
-0x00000041,0x21021248,0x160002a0,0x00040004,0x00000041,0x21001248,0x160000e0,0x00040004,
-0x00000040,0x22021240,0x16000100,0x00200020,0x00000040,0x22001240,0x16000102,0x02c002c0,
-0x00000001,0xa0000a08,0x00008200,0x00000000,0x00000040,0x22a00a28,0x1e0002a0,0x00010001,
-0x05000010,0x20000a20,0x1e0002a0,0x00140014,0x00010020,0x34000004,0x0e001400,0xffffff70,
-0x00800001,0x25a01e08,0x00000000,0x00000000,0x00000001,0x25b81248,0x000002e0,0x00000000,
-0x00800001,0x23201e08,0x00000000,0x00000000,0x00800001,0x23e01e08,0x00000000,0x00000000,
-0x00800001,0x23601e08,0x00000000,0x00000000,0x01000005,0x20001220,0x160005b8,0x00100010,
-0x00800001,0x24201e08,0x00000000,0x00000000,0x00800001,0x24e01e08,0x00000000,0x00000000,
-0x00800001,0x24601e08,0x00000000,0x00000000,0x00800001,0x25201e08,0x00000000,0x00000000,
-0x00800001,0x25601e08,0x00000000,0x00000000,0x00800001,0x25e01e08,0x00000000,0x00000000,
-0x00800001,0x24a01e08,0x00000000,0x00000000,0x00800001,0x23a01e08,0x00000000,0x00000000,
-0x00000001,0x22a40208,0x00000330,0x00000000,0x00000001,0x25cc1248,0x000002f6,0x00000000,
-0x00000001,0x25c01248,0x000002e6,0x00000000,0x00000001,0x25c61248,0x000002ec,0x00000000,
-0x00000001,0x25c21248,0x000002e8,0x00000000,0x00000001,0x25c81248,0x000002ee,0x00000000,
-0x00000001,0x25ca1248,0x000002f0,0x00000000,0x00000001,0x25c41248,0x000002ea,0x00000000,
-0x00000001,0x25be1248,0x000002e4,0x00000000,0x00000001,0x25ba1248,0x000002e2,0x00000000,
-0x20004b01,0x00161907,0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22a81e28,
-0x00000000,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000090,0x01000005,0x20001220,
-0x160005b8,0x00200020,0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22a81e28,
-0x00000000,0x00010001,0x00000020,0x34000004,0x0e001400,0x00000050,0x01000005,0x20001220,
-0x160005b8,0x00400040,0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22a81e28,
-0x00000000,0x00020002,0x00000020,0x34000004,0x0e001400,0x00000010,0x00000001,0x22a81e28,
-0x00000000,0x00030003,0x00000001,0x62ac0a88,0x000002a8,0x00000000,0x00000001,0x65f00a88,
-0x000002a8,0x00000000,0x00000005,0x20e00008,0x06001000,0xffffffcf,0x00008006,0x30000200,
-0x160000e0,0x00300030,0x00000001,0x210402e8,0x0000033c,0x00000000,0x00000001,0x214402e8,
-0x00000330,0x00000000,0x00000001,0x210002e8,0x0000032c,0x00000000,0x00000001,0x212402e8,
-0x00000338,0x00000000,0x00000040,0x20e01208,0x160005ba,0x00010001,0x00000001,0x42bd1e88,
-0x00000000,0x00320032,0x00000001,0x42bf1e88,0x00000000,0x00730073,0x00000001,0x42bc1e88,
-0x00000000,0x001e001e,0x00000041,0x21603ae8,0x3a000144,0x00000104,0x00000041,0x21203ae8,
-0x3a000100,0x00000104,0x00000001,0x26241e28,0x00000000,0x00000000,0x05000002,0x22b80208,
-0x160000e0,0xffffffff,0x00000001,0x46231e88,0x00000000,0x00780078,0x00000001,0x46221e88,
-0x00000000,0x00460046,0x00000001,0x46211e88,0x00000000,0x00320032,0x09000038,0x21803ae8,
-0x3a000160,0x00000124,0x09000038,0x21403ae8,0x3a000120,0x00000124,0x00000001,0x46201e88,
-0x00000000,0x001e001e,0x00000001,0x42be1e88,0x00000000,0x005a005a,0x00000001,0x45d40248,
-0x000002b8,0x00000000,0x00000046,0x21a03ae8,0x00000180,0x00000000,0x00000046,0x21843ae8,
-0x00000140,0x00000000,0x00000001,0x22b43a08,0x000001a0,0x00000000,0x00000001,0x23443a08,
-0x000001a0,0x00000000,0x00000001,0x23403a08,0x00000184,0x00000000,0x00000001,0x22b03a08,
-0x00000184,0x00000000,0x00000040,0x22001240,0x16000624,0x02bc02bc,0x00000001,0x262822e8,
-0x00008000,0x00000000,0x0d000038,0x20e00208,0x0600032c,0x00000064,0x02000010,0x20000200,
-0x160000e0,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000110,0x0c000038,0x20e00208,
-0x0600032c,0x00000064,0x00000040,0x21080a28,0x1e000624,0x00560056,0x00000041,0x21201248,
-0x16000108,0x00040004,0x00000001,0x210002e8,0x000000e0,0x00000000,0x00000040,0x22001240,
-0x16000120,0x03200320,0x00000041,0x21043ae8,0x3a000628,0x00000100,0x00000001,0xa0003a28,
-0x00000104,0x00000000,0x00000040,0x22001240,0x16000624,0x06200620,0x00000001,0x214022e8,
-0x00008000,0x00000000,0x00000040,0x21480a28,0x1e000624,0x00480048,0x00000041,0x21443ae8,
-0x3a000140,0x00000100,0x00000041,0x21601248,0x16000148,0x00040004,0x00000040,0x22001240,
-0x16000160,0x03200320,0x00000001,0xa0003a28,0x00000144,0x00000000,0x00000041,0x20e03ae8,
-0x3a000140,0x00000100,0x00000001,0xa0203a28,0x000000e0,0x00000000,0x00000020,0x34000004,
-0x0e001400,0x00000120,0x00000001,0x20e002e8,0x0000032c,0x00000000,0x00000040,0x21040a28,
-0x1e000624,0x00560056,0x00000041,0x20e43ae8,0x3a000628,0x000000e0,0x00000041,0x21201248,
-0x16000104,0x00040004,0x09000038,0x21003ae8,0x3e0000e4,0x42c80000,0x00000040,0x22001240,
-0x16000120,0x03200320,0x00000001,0xa0003a28,0x00000100,0x00000000,0x00000040,0x22001240,
-0x16000624,0x06200620,0x00000001,0x214022e8,0x00008000,0x00000000,0x00000041,0x21443ae8,
-0x3a000140,0x000000e0,0x00000040,0x21640a28,0x1e000624,0x00480048,0x09000038,0x21603ae8,
-0x3e000144,0x42c80000,0x00000041,0x21801248,0x16000164,0x00040004,0x00000040,0x22001240,
-0x16000180,0x03200320,0x00000001,0xa0003a28,0x00000160,0x00000000,0x00000041,0x21a03ae8,
-0x3a000140,0x000000e0,0x09000038,0x21c03ae8,0x3e0001a0,0x42c80000,0x00000001,0xa0203a28,
-0x000001c0,0x00000000,0x00000040,0x26240a28,0x1e000624,0x00010001,0x05000010,0x20000a20,
-0x1e000624,0x00040004,0x00010020,0x34000004,0x0e001400,0xfffffd50,0x00000001,0x26241e28,
-0x00000000,0x00000000,0x00000040,0x20e00a28,0x1e000624,0x00100010,0x00000040,0x22001240,
-0x160000e0,0x02f802f8,0x00000001,0x262c2ae8,0x00008000,0x00000000,0x0d000038,0x21000208,
-0x06000328,0x00000064,0x02000010,0x20000200,0x16000100,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000130,0x0c000038,0x20e00208,0x06000328,0x00000064,0x00000040,0x21080a28,
-0x1e000624,0x003e003e,0x00000041,0x21201248,0x16000108,0x00040004,0x00000001,0x210002e8,
-0x000000e0,0x00000000,0x00000040,0x22001240,0x16000120,0x03200320,0x00000041,0x21043ae8,
-0x3a00062c,0x00000100,0x00000001,0xa0003a28,0x00000104,0x00000000,0x00000040,0x21400a28,
-0x1e000624,0x00380038,0x00000040,0x22001240,0x16000140,0x02c002c0,0x00000001,0x21602ae8,
-0x00008000,0x00000000,0x00000040,0x21840a28,0x1e000624,0x002a002a,0x00000041,0x21803ae8,
-0x3a000160,0x00000100,0x00000041,0x21a01248,0x16000184,0x00040004,0x00000040,0x22021240,
-0x160001a0,0x03200320,0x00000001,0xa2003a28,0x00000180,0x00000000,0x00000001,0x20e02ae8,
-0x00008008,0x00000000,0x00000041,0x21c03ae8,0x3a0000e0,0x00000100,0x00000001,0xa2283a28,
-0x000001c0,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000140,0x00000001,0x20e002e8,
-0x00000328,0x00000000,0x00000040,0x21040a28,0x1e000624,0x003e003e,0x00000041,0x20e43ae8,
-0x3a00062c,0x000000e0,0x00000041,0x21201248,0x16000104,0x00040004,0x09000038,0x21003ae8,
-0x3e0000e4,0x42c80000,0x00000040,0x22001240,0x16000120,0x03200320,0x00000001,0xa0003a28,
-0x00000100,0x00000000,0x00000040,0x21400a28,0x1e000624,0x00380038,0x00000040,0x22001240,
-0x16000140,0x02c002c0,0x00000001,0x21602ae8,0x00008000,0x00000000,0x00000041,0x21803ae8,
-0x3a000160,0x000000e0,0x00000040,0x21a40a28,0x1e000624,0x002a002a,0x09000038,0x21a03ae8,
-0x3e000180,0x42c80000,0x00000041,0x21c01248,0x160001a4,0x00040004,0x00000040,0x22021240,
-0x160001c0,0x03200320,0x00000001,0xa2003a28,0x000001a0,0x00000000,0x00000001,0x20e42ae8,
-0x00008008,0x00000000,0x00000041,0x21203ae8,0x3a0000e4,0x000000e0,0x09000038,0x21003ae8,
-0x3e000120,0x42c80000,0x00000001,0xa2283a28,0x00000100,0x00000000,0x00000040,0x26240a28,
-0x1e000624,0x00010001,0x05000010,0x20000a20,0x1e000624,0x00080008,0x00010020,0x34000004,
-0x0e001400,0xfffffd00,0x00000001,0x23480208,0x00000324,0x00000000,0x00000040,0x20e00208,
-0x02000348,0x000002b4,0x04000010,0x20000200,0x020000e0,0x00000328,0x00010020,0x34000004,
-0x0e001400,0x00000020,0x00000001,0x26301608,0x00000000,0x00000000,0x00000020,0x34000004,
-0x0e001400,0x00000070,0x02000010,0x20002260,0x1e0005f0,0x00010001,0x00010020,0x34000004,
-0x0e001400,0x00000020,0x00000001,0x26341608,0x00000000,0x00000000,0x00000020,0x34000004,
-0x0e001400,0x00000020,0x00000040,0x20e00208,0x02000348,0x000002b4,0x00000040,0x26340208,
-0x020000e0,0x00004328,0x00000001,0x26300208,0x00000634,0x00000000,0x00000041,0x20e01228,
-0x160005ba,0x00190019,0x00000001,0x214002e8,0x00000338,0x00000000,0x00000001,0x214402e8,
-0x0000033c,0x00000000,0x00000041,0x21040208,0x120002b0,0x000005d4,0x00000001,0x24fc1608,
-0x00000000,0x00000000,0x00000001,0x239c0208,0x00000348,0x00000000,0x00000001,0x23980208,
-0x00000630,0x00000000,0x00000040,0x21000a08,0x1e0000e0,0x012c012c,0x09000038,0x20e03ae8,
-0x3a000140,0x00000144,0x00000001,0x25000208,0x000004fc,0x00000000,0x0c000038,0x21200208,
-0x02000104,0x00000100,0x00000001,0x23600208,0x000004fc,0x00000000,0x00000001,0x238c0208,
-0x000004fc,0x00000000,0x00000001,0x41603a4c,0x000000e0,0x00000000,0x00000041,0x24e40208,
-0x16000120,0x00190019,0x00000041,0x23900208,0x16000120,0x012c012c,0x00000001,0x25da1248,
-0x00000160,0x00000000,0x00000001,0x23880208,0x000004e4,0x00000000,0x01000005,0x20001220,
-0x160005da,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x25da1248,
-0x160005da,0x00010001,0x02000010,0x20000200,0x160002a4,0x00000000,0x0000000c,0x26381228,
-0x160005da,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x25a00a08,
-0x00000638,0x00000000,0x00000041,0x25240208,0x020005a0,0x000002b0,0x00000040,0x20e01208,
-0x1e0005cc,0xff9cff9c,0x02000010,0x20000200,0x160002a4,0x00000000,0x00000041,0x21000208,
-0x020000e0,0x00000524,0x0c000038,0x251c0208,0x06000100,0x00000064,0x00010020,0x34000004,
-0x0e001400,0x000000b0,0x06000010,0x20000a20,0x1e000638,0x00000000,0x00000001,0x26241e28,
-0x00000000,0x00000000,0x00000001,0x25201608,0x00000000,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000070,0x00000040,0x20e00a28,0x1e000624,0x00820082,0x00000041,0x21001248,
-0x160000e0,0x00040004,0x00000040,0x22001240,0x16000100,0x03200320,0x00000001,0xa0001608,
-0x00000000,0x00000000,0x00000040,0x26240a28,0x1e000624,0x00010001,0x05000010,0x20000a20,
-0x0a000624,0x00000638,0x00010020,0x34000004,0x0e001400,0xffffff90,0x02000010,0x20002260,
-0x1e0002ac,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000030,0x00000041,0x40e00a4c,
-0x1e000638,0x00020002,0x00000001,0x25da1248,0x000000e0,0x00000000,0x00000020,0x34000004,
-0x0e001400,0x00000030,0x03000010,0x20001260,0x1e0005da,0x001e001e,0x00010020,0x34000004,
-0x0e001400,0x00000010,0x00000001,0x25da1648,0x00000000,0x003c003c,0x06000010,0x20000200,
-0x160002b8,0x001e001e,0x00010020,0x34000004,0x0e001400,0x00000020,0x01000005,0x20001220,
-0x160005da,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000090,0x00000009,0x40e0024c,
-0x160002b8,0x00010001,0x00000001,0x25da1248,0x000000e0,0x00000000,0x04000010,0x20001260,
-0x1e0005da,0x000c000c,0x00010020,0x34000004,0x0e001400,0x00000050,0x00000001,0x20e01608,
-0x00000000,0x000c000c,0x00000001,0x20e41208,0x000005da,0x00000000,0x0c000038,0x21000228,
-0x020000e0,0x000000e4,0x00000041,0x41200a4c,0x12000100,0x000005da,0x00000001,0x25da1248,
-0x00000120,0x00000000,0x00000041,0x20e01228,0x120005be,0x000005c0,0x00000001,0x21a802e8,
-0x0000033c,0x00000000,0x00000001,0x218402e8,0x00000338,0x00000000,0x00000001,0x21a402e8,
-0x0000032c,0x00000000,0x00000001,0x24ec1608,0x00000000,0x00000000,0x00000001,0x23800208,
-0x000002c4,0x00000000,0x00000001,0x25dc1248,0x000002e4,0x00000000,0x00000041,0x21000a28,
-0x1e0000e0,0x00030003,0x02000038,0x20e03ee8,0x00000000,0x41200000,0x00000041,0x21c03ae8,
-0x3a0001a4,0x000001a8,0x00000001,0x25e01248,0x000002f4,0x00000000,0x00000001,0x25de1248,
-0x000002e6,0x00000000,0x00000001,0x24f40208,0x000004ec,0x00000000,0x0000000c,0x21200a28,
-0x1e000100,0x00010001,0x00000001,0x24f00208,0x000004ec,0x00000000,0x00000001,0x24f80208,
-0x000004ec,0x00000000,0x00000001,0x21400ae8,0x00000120,0x00000000,0x00000040,0x21603ae8,
-0x3a000140,0x00000140,0x09000038,0x21803ae8,0x3e000160,0x40400000,0x00000041,0x21a03ae8,
-0x3a000180,0x00000184,0x00000001,0x21803ee8,0x00000000,0x41200000,0x09000038,0x21e03ae8,
-0x3a0001a0,0x000001c0,0x02000038,0x22003ae8,0x000001e0,0x00000000,0x09000038,0x21003ae8,
-0x3a000200,0x000000e0,0x00000040,0x21203ae8,0x3e000100,0x80000000,0x00000041,0x21403ae8,
-0x3e000120,0x3f0f5c28,0x09000038,0x21603ae8,0x3e000140,0x3fe00000,0x00000040,0x22203ae8,
-0x3e000160,0x3f9851ec,0x0a000038,0x22403ae8,0x3a000180,0x00000220,0x00000041,0x22603ae8,
-0x3e000240,0x3f555555,0x00000040,0x22803ae8,0x3e000260,0x3f000000,0x00000001,0x21a03a28,
-0x00000280,0x00000000,0x00000001,0x21c00ae8,0x000001a0,0x00000000,0x00000041,0x21e03ae8,
-0x3e0001c0,0x40a00000,0x00000001,0x20e03a28,0x000001e0,0x00000000,0x00000040,0x21000a28,
-0x1e0000e0,0xffecffec,0x05000002,0x21200a28,0x1e000100,0x00c800c8,0x04000002,0x263c0a28,
-0x1e000120,0x00010001,0x06000010,0x20000a20,0x1e00063c,0x00040004,0x00010020,0x34000004,
-0x0e001400,0x00000020,0x00000040,0x26400a28,0x1e00063c,0xfffcfffc,0x00000020,0x34000004,
-0x0e001400,0x00000010,0x00000001,0x26400a28,0x0000063c,0x00000000,0x00000001,0x20e01208,
-0x000005ba,0x00000000,0x00000041,0x21680208,0x1600033c,0x00140014,0x02000010,0x20002260,
-0x1e0002ac,0x00030003,0x0c000038,0x21000228,0x060000e0,0x0000001e,0x0c000038,0x21800208,
-0x02000338,0x00000168,0x00000040,0x41200a68,0x1e000100,0xffffffff,0x00000041,0x21a00208,
-0x16000180,0x000c000c,0x05000002,0x21401a28,0x1e000120,0x00140014,0x04000002,0x41600a68,
-0x1e000140,0x00000000,0x00000001,0x21641a08,0x00000160,0x00000000,0x00000040,0x21c00208,
-0x02000164,0x000001a0,0x00000001,0x41600268,0x000001c0,0x00000000,0x00000040,0x21e00a28,
-0x1a000640,0x00004160,0x05000002,0x22000a28,0x1e0001e0,0x00c800c8,0x04000002,0x26400a28,
-0x1e000200,0x00010001,0x00000040,0x263c0a28,0x1e000640,0x00140014,0x00010020,0x34000004,
-0x0e001400,0x00000050,0x00000040,0x20e01228,0x1e0005ca,0xffe0ffe0,0x04000002,0x263c1228,
-0x0a0005ca,0x0000063c,0x04000010,0x20000a20,0x0a000640,0x000000e0,0x00010020,0x34000004,
-0x0e001400,0x00000010,0x00000040,0x26401228,0x1e0005ca,0xffe0ffe0,0x04000002,0x26401228,
-0x0a0005c6,0x00000640,0x00000005,0x21800208,0x06000024,0xff000000,0x00000005,0x21400208,
-0x0600002c,0xff000000,0x04000002,0x263c1228,0x0a0005c6,0x0000063c,0x00000005,0x21000a28,
-0x0e00002c,0x00ff0000,0x00000001,0x23741608,0x00000000,0x00000000,0x00000001,0x45f31ea8,
-0x00000000,0xffffffff,0x05000002,0x26401228,0x0a0005c8,0x00000640,0x0000000c,0x66440288,
-0x16000180,0x00180018,0x00000001,0x45f61e88,0x00000000,0x00000000,0x0000000c,0x6160028c,
-0x16000140,0x00180018,0x05000002,0x65e91288,0x0a0005c8,0x0000063c,0x0000000c,0x61200a8c,
-0x1e000100,0x00100010,0x00000005,0x65fc0a88,0x1e00002c,0x00ff00ff,0x00000001,0x60e00a8c,
-0x00000640,0x00000000,0x00000040,0x21a00a28,0x1e000640,0x00060006,0x06000010,0x20002260,
-0x1e000644,0x00010001,0x00000001,0x24d41e28,0x00000000,0xffffffff,0x00600001,0x249c1e28,
-0x00000000,0xffffffff,0x00200001,0x24cc1e28,0x00000000,0xffffffff,0x00000001,0x24e81608,
-0x00000000,0x00010001,0x00000001,0x45eb2288,0x000000e0,0x00000000,0x05000002,0x26400a28,
-0x1e0001a0,0x00f000f0,0x00000005,0x20e00a28,0x0e00002c,0x0000ff00,0x00000001,0x25d81648,
-0x00000000,0x00000000,0x00400001,0x24bc1e28,0x00000000,0xffffffff,0x00000001,0x237c0208,
-0x00000374,0x00000000,0x00000001,0x23780208,0x00000374,0x00000000,0x00000001,0x45e82aa8,
-0x000005f3,0x00000000,0x00000001,0x45f82aa8,0x000005f3,0x00000000,0x00000001,0x45f52288,
-0x00000644,0x00000000,0x00000001,0x45f22288,0x000005f6,0x00000000,0x00000001,0x45ff2288,
-0x00000160,0x00000000,0x00000001,0x45ed2288,0x000005e9,0x00000000,0x00000001,0x45fe2288,
-0x00000120,0x00000000,0x00000001,0x45ef2288,0x000005eb,0x00000000,0x00000040,0x263c0a28,
-0x1e000640,0x00140014,0x0000000c,0x65fd0a88,0x1e0000e0,0x00080008,0x00010020,0x34000004,
-0x0e001400,0x00000330,0x00000041,0x21002228,0x1e0005fc,0x000c000c,0x00000041,0x20e00208,
-0x220002b0,0x000005fc,0x00000001,0x21602228,0x000005fd,0x00000000,0x00000041,0x21400208,
-0x220002b0,0x000005fd,0x0c000038,0x21040a28,0x0e000100,0x00000040,0x0000000c,0x24d80208,
-0x160000e0,0x00060006,0x0c000038,0x20e00a28,0x0a000100,0x00000160,0x0000000c,0x24dc0208,
-0x16000140,0x00060006,0x00000040,0x26480a28,0x1e000104,0xfff4fff4,0x00000040,0x26400a28,
-0x0a000640,0x00004648,0x00000040,0x263c0a28,0x0a00063c,0x00004648,0x00000040,0x26480a28,
-0x1e0000e0,0xfff4fff4,0x00000001,0x61200a8c,0x00000640,0x00000000,0x00000001,0x65ed0a88,
-0x0000063c,0x00000000,0x06000010,0x20000a20,0x1e000648,0x000c000c,0x00000001,0x45ef2288,
-0x00000120,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,0x0000000c,0x20e00a28,
-0x1e000648,0x00020002,0x00000040,0x26480a28,0x1e0000e0,0x000c000c,0x06000010,0x20002260,
-0x1e000644,0x00020002,0x00000040,0x65f90a88,0x0a000648,0x0000063c,0x00010020,0x34000004,
-0x0e001400,0x000001a0,0x00000041,0x21002228,0x1e0005fc,0x000c000c,0x00000001,0x21042228,
-0x000005fe,0x00000000,0x00000041,0x20e00208,0x220002b0,0x000005fe,0x0c000038,0x21200a28,
-0x0a000100,0x00000104,0x0000000c,0x24e00208,0x160000e0,0x00060006,0x00000040,0x26480a28,
-0x1e000120,0xfff4fff4,0x06000010,0x20000a20,0x1e000648,0x000c000c,0x00010020,0x34000004,
-0x0e001400,0x00000020,0x0000000c,0x20e00a28,0x1e000648,0x00020002,0x00000040,0x26480a28,
-0x1e0000e0,0x000c000c,0x00000040,0x60e00a8c,0x0a000648,0x0000063c,0x06000010,0x20002260,
-0x1e000644,0x00030003,0x00000001,0x45fa2288,0x000000e0,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x000000c0,0x00000041,0x21002228,0x1e0005fc,0x000c000c,0x00000001,0x21042228,
-0x000005ff,0x00000000,0x00000041,0x20e00208,0x220002b0,0x000005ff,0x0c000038,0x21200a28,
-0x0a000100,0x00000104,0x0000000c,0x25040208,0x160000e0,0x00060006,0x00000040,0x26480a28,
-0x1e000120,0xfff4fff4,0x06000010,0x20000a20,0x1e000648,0x000c000c,0x00010020,0x34000004,
-0x0e001400,0x00000020,0x0000000c,0x20e00a28,0x1e000648,0x00020002,0x00000040,0x26480a28,
-0x1e0000e0,0x000c000c,0x00000040,0x60e00a8c,0x0a000648,0x0000063c,0x00000001,0x45fb2288,
-0x000000e0,0x00000000,0x00000001,0x60e00a8c,0x00000640,0x00000000,0x00000001,0x65e90a88,
-0x0000063c,0x00000000,0x00000001,0x45eb2288,0x000000e0,0x00000000,0x00000001,0x250c1608,
-0x00000000,0x00000000,0x00000001,0x264c1e28,0x00000000,0x00000000,0x00000001,0x25140208,
-0x0000050c,0x00000000,0x00000001,0x25100208,0x0000050c,0x00000000,0x00000001,0x23680208,
-0x0000050c,0x00000000,0x00000001,0x23640208,0x0000050c,0x00000000,0x00000001,0x236c0208,
-0x0000050c,0x00000000,0x00000001,0x23700208,0x0000050c,0x00000000,0x00000009,0x20e00a28,
-0x1e00064c,0x00050005,0x00000009,0x20e40a28,0x1e00064c,0x00070007,0x00000041,0x21001248,
-0x160000e0,0x00040004,0x00000040,0x22001240,0x16000100,0x03200320,0x00600001,0x21200208,
-0x00208000,0x00000000,0x00600001,0x21400208,0x00208020,0x00000000,0x00600001,0x21600208,
-0x00208040,0x00000000,0x00600001,0x21800208,0x00208060,0x00000000,0x00000040,0x264c0a28,
-0x1e00064c,0x00010001,0x00000008,0x21a80a08,0x1e0000e4,0x00040004,0x00000040,0x22000204,
-0x060000e8,0x020a0400,0x05000010,0x20000a20,0x1e00064c,0x00060006,0x0a800033,0x00009054,
-0x000021a4,0x00000000,0x00010020,0x34000004,0x0e001400,0xffffff20,0x0000000c,0x20e01228,
-0x16000020,0x00020002,0x0000000c,0x21241228,0x16000022,0x00020002,0x00800001,0x26601e08,
-0x00000000,0x00000000,0x00800001,0x26a01e08,0x00000000,0x00000000,0x00800001,0x27201e08,
-0x00000000,0x00000000,0x00000040,0x21000a28,0x1e0000e0,0x000f000f,0x00000040,0x21400a28,
-0x1e000124,0x000f000f,0x00800001,0x26e01e08,0x00000000,0x00000000,0x00000001,0x26581e28,
-0x00000000,0x00000000,0x00000005,0x21200a08,0x1e000100,0xfff0fff0,0x00000005,0x21600a08,
-0x1e000140,0xfff0fff0,0x0000000c,0x21640208,0x16000120,0x00020002,0x0600000c,0x26540208,
-0x16000160,0x00020002,0x00000009,0x26500208,0x16000164,0x00010001,0x00010020,0x34000004,
-0x0e001400,0x000000e8,0x06000010,0x20000200,0x16000650,0x00000000,0x00000001,0x265c1e28,
-0x00000000,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000088,0x20004d01,0x00000807,
-0x00000001,0x2100020c,0x0000065c,0x00000000,0x00000040,0x265c0a28,0x1e00065c,0x00100010,
-0x00000040,0x22000204,0x060000f0,0x020a8000,0x00000001,0x2104020c,0x00000658,0x00000000,
-0x00000001,0x2108060c,0x00000000,0x0007001f,0x05000010,0x20000200,0x0200065c,0x00000650,
-0x0c600033,0x00033014,0x00002108,0x00000000,0x00010020,0x34000004,0x0e001400,0xffffff78,
-0x00000040,0x26580a28,0x1e000658,0x00100010,0x05000010,0x20000200,0x02000658,0x00000654,
-0x00010020,0x34000004,0x0e001400,0xffffff18,0x20004d01,0x00007f07,0x07000031,0x20003a00,
-0x06000fe0,0x82000010,0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c,
-0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c,
-0x00000001,0x22a01e28,0x00000000,0x00000000,0x00000040,0x20e00a28,0x1e0002a0,0x00040004,
-0x00000041,0x21021248,0x160002a0,0x00040004,0x00000041,0x21001248,0x160000e0,0x00040004,
-0x00000040,0x22021240,0x16000100,0x00200020,0x00000040,0x22001240,0x16000102,0x02c002c0,
-0x00000001,0xa0000a08,0x00008200,0x00000000,0x00000040,0x22a00a28,0x1e0002a0,0x00010001,
-0x05000010,0x20000a20,0x1e0002a0,0x00140014,0x00010020,0x34000004,0x0e001400,0xffffff70,
-0x00000001,0x22a41e28,0x00000000,0x00000000,0x00000009,0x20e40a28,0x1e0002a4,0x00070007,
-0x00000040,0x22000204,0x060000e8,0x02480400,0x00000009,0x20e00a28,0x1e0002a4,0x00050005,
-0x00000008,0x21080a08,0x1e0000e4,0x00040004,0x00000041,0x21a01248,0x160000e0,0x00040004,
-0x0a800031,0x21203a6c,0x00000100,0x00000200,0x00000040,0x22001240,0x160001a0,0x03200320,
-0x00600001,0xa0000208,0x008d0120,0x00000000,0x00600001,0xa0200208,0x008d0140,0x00000000,
-0x00600001,0xa0400208,0x008d0160,0x00000000,0x00600001,0xa0600208,0x008d0180,0x00000000,
-0x00000040,0x22a40a28,0x1e0002a4,0x00010001,0x05000010,0x20000a20,0x1e0002a4,0x00060006,
-0x00010020,0x34000004,0x0e001400,0xffffff20,0x00000001,0x25b81248,0x000002e0,0x00000000,
-0x00000001,0x22a80208,0x00000330,0x00000000,0x00000001,0x25c81248,0x000002ee,0x00000000,
-0x00000001,0x25cc1248,0x000002f6,0x00000000,0x00000001,0x25c61248,0x000002ec,0x00000000,
-0x00000001,0x25c01248,0x000002e6,0x00000000,0x00000001,0x25c41248,0x000002ea,0x00000000,
-0x01000005,0x20001220,0x160005b8,0x00100010,0x00000001,0x25be1248,0x000002e4,0x00000000,
-0x00000001,0x25ba1248,0x000002e2,0x00000000,0x00000001,0x25c21248,0x000002e8,0x00000000,
-0x00000001,0x25ca1248,0x000002f0,0x00000000,0x20004b01,0x00161907,0x00010020,0x34000004,
-0x0e001400,0x00000020,0x00000001,0x22ac1e28,0x00000000,0x00000000,0x00000020,0x34000004,
-0x0e001400,0x00000090,0x01000005,0x20001220,0x160005b8,0x00200020,0x00010020,0x34000004,
-0x0e001400,0x00000020,0x00000001,0x22ac1e28,0x00000000,0x00010001,0x00000020,0x34000004,
-0x0e001400,0x00000050,0x01000005,0x20001220,0x160005b8,0x00400040,0x00010020,0x34000004,
-0x0e001400,0x00000020,0x00000001,0x22ac1e28,0x00000000,0x00020002,0x00000020,0x34000004,
-0x0e001400,0x00000010,0x00000001,0x22ac1e28,0x00000000,0x00030003,0x00000001,0x62b00a88,
-0x000002ac,0x00000000,0x00000001,0x65f00a88,0x000002ac,0x00000000,0x00000005,0x20e00008,
-0x06001000,0xffffffcf,0x00008006,0x30000200,0x160000e0,0x00300030,0x00000001,0x212402e8,
-0x00000338,0x00000000,0x00000001,0x210402e8,0x0000033c,0x00000000,0x00000001,0x214402e8,
-0x00000330,0x00000000,0x00000001,0x210002e8,0x0000032c,0x00000000,0x09000038,0x20e03ae8,
-0x3a000124,0x00000104,0x00000041,0x21603ae8,0x3a000144,0x00000104,0x00000041,0x21203ae8,
-0x3a000100,0x00000104,0x09000038,0x21803ae8,0x3a000160,0x00000124,0x09000038,0x21403ae8,
-0x3a000120,0x00000124,0x00000001,0x41c03a4c,0x000000e0,0x00000000,0x00000001,0x25da1248,
-0x000001c0,0x00000000,0x00000046,0x21a03ae8,0x00000180,0x00000000,0x00000046,0x21843ae8,
-0x00000140,0x00000000,0x01000005,0x20001220,0x160005da,0x00010001,0x00000001,0x23443a08,
-0x000001a0,0x00000000,0x00000001,0x23403a08,0x00000184,0x00000000,0x00000001,0x22b43a08,
-0x00000184,0x00000000,0x00000001,0x24e43a08,0x00000184,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000010,0x00000040,0x25da1248,0x160005da,0x00010001,0x02000010,0x20000200,
-0x160002a8,0x00000000,0x0000000c,0x22b81228,0x160005da,0x00010001,0x00010020,0x34000004,
-0x0e001400,0x00000010,0x00000001,0x25a00a08,0x000002b8,0x00000000,0x00000041,0x25240208,
-0x020005a0,0x000002b4,0x00000040,0x20e01208,0x1e0005cc,0xff9cff9c,0x02000010,0x20000200,
-0x160002a8,0x00000000,0x00000041,0x21000208,0x020000e0,0x00000524,0x0c000038,0x251c0208,
-0x06000100,0x00000064,0x00010020,0x34000004,0x0e001400,0x000000b0,0x06000010,0x20000a20,
-0x1e0002b8,0x00000000,0x00000001,0x25201608,0x00000000,0x00000000,0x00000001,0x22a01e28,
-0x00000000,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000070,0x00000040,0x20e00a28,
-0x1e0002a0,0x00820082,0x00000041,0x21001248,0x160000e0,0x00040004,0x00000040,0x22001240,
-0x16000100,0x03200320,0x00000001,0xa0001608,0x00000000,0x00000000,0x00000040,0x22a00a28,
-0x1e0002a0,0x00010001,0x05000010,0x20000a20,0x0a0002a0,0x000002b8,0x00010020,0x34000004,
-0x0e001400,0xffffff90,0x02000010,0x20002260,0x1e0002b0,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000030,0x00000041,0x40e00a4c,0x1e0002b8,0x00020002,0x00000001,0x25da1248,
-0x000000e0,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000030,0x03000010,0x20001260,
-0x1e0005da,0x001e001e,0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x25da1648,
-0x00000000,0x003c003c,0x00000040,0x20e01208,0x160005ba,0x00010001,0x01000010,0x20002260,
-0x1e0002b0,0x00030003,0x05000002,0x45d40248,0x160000e0,0xffffffff,0x00010020,0x34000004,
-0x0e001400,0x000002d0,0x00000041,0x20e01228,0x120005be,0x000005c0,0x00000001,0x21a802e8,
-0x0000033c,0x00000000,0x00000001,0x218402e8,0x00000338,0x00000000,0x00000001,0x21a402e8,
-0x0000032c,0x00000000,0x00000041,0x21000a28,0x1e0000e0,0x00030003,0x02000038,0x20e03ee8,
-0x00000000,0x41200000,0x00000041,0x21c03ae8,0x3a0001a4,0x000001a8,0x0000000c,0x21200a28,
-0x1e000100,0x00010001,0x00000001,0x21400ae8,0x00000120,0x00000000,0x00000040,0x21603ae8,
-0x3a000140,0x00000140,0x09000038,0x21803ae8,0x3e000160,0x40400000,0x00000041,0x21a03ae8,
-0x3a000180,0x00000184,0x00000001,0x21803ee8,0x00000000,0x41200000,0x09000038,0x21e03ae8,
-0x3a0001a0,0x000001c0,0x02000038,0x22003ae8,0x000001e0,0x00000000,0x09000038,0x21003ae8,
-0x3a000200,0x000000e0,0x00000040,0x21203ae8,0x3e000100,0x80000000,0x00000041,0x21403ae8,
-0x3e000120,0x3f0f5c28,0x09000038,0x21603ae8,0x3e000140,0x3fe00000,0x00000040,0x22203ae8,
-0x3e000160,0x3f9851ec,0x0a000038,0x22403ae8,0x3a000180,0x00000220,0x00000041,0x22603ae8,
-0x3e000240,0x3f555555,0x00000040,0x22803ae8,0x3e000260,0x3f000000,0x00000001,0x21a03a28,
-0x00000280,0x00000000,0x00000001,0x21c00ae8,0x000001a0,0x00000000,0x00000041,0x21e03ae8,
-0x3e0001c0,0x40a00000,0x00000001,0x20e03a28,0x000001e0,0x00000000,0x00000040,0x21000a28,
-0x1e0000e0,0xffecffec,0x05000002,0x21200a28,0x1e000100,0x00c800c8,0x04000002,0x22bc0a28,
-0x1e000120,0x00010001,0x06000010,0x20000a20,0x1e0002bc,0x00040004,0x00010020,0x34000004,
-0x0e001400,0x00000020,0x00000040,0x26200a28,0x1e0002bc,0xfffcfffc,0x00000020,0x34000004,
-0x0e001400,0x00000010,0x00000001,0x26200a28,0x000002bc,0x00000000,0x00000001,0x20e01208,
-0x000005ba,0x00000000,0x0c000038,0x21000228,0x060000e0,0x0000001e,0x00000040,0x41200a68,
-0x1e000100,0xffffffff,0x05000002,0x21401a28,0x1e000120,0x00140014,0x04000002,0x41600a68,
-0x1e000140,0x00000000,0x00000040,0x21800a28,0x1a000620,0x00004160,0x05000002,0x21a00a28,
-0x1e000180,0x00c800c8,0x04000002,0x26200a28,0x1e0001a0,0x00010001,0x00000040,0x22bc0a28,
-0x1e000620,0x00140014,0x00000020,0x34000004,0x0e001400,0x00000060,0x06000010,0x20001260,
-0x1e0005ca,0x00040004,0x00000001,0x22bc1228,0x000005ca,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000020,0x00000040,0x26201228,0x1e0005ca,0xfffcfffc,0x00000020,0x34000004,
-0x0e001400,0x00000010,0x00000001,0x26201228,0x000005ca,0x00000000,0x04000002,0x26201228,
-0x0a0005c6,0x00000620,0x04000002,0x22bc1228,0x0a0005c6,0x000002bc,0x00000001,0x462b1e88,
-0x00000000,0x00780078,0x00000001,0x462a1e88,0x00000000,0x00460046,0x00000001,0x46271e88,
-0x00000000,0x00730073,0x00000001,0x46291e88,0x00000000,0x00320032,0x00000001,0x46261e88,
-0x00000000,0x005a005a,0x05000002,0x60e0128c,0x0a0005c8,0x00000620,0x05000002,0x65ed1288,
-0x0a0005c8,0x000002bc,0x00000001,0x46251e88,0x00000000,0x00320032,0x00000001,0x46241e88,
-0x00000000,0x001e001e,0x00000001,0x46281e88,0x00000000,0x001e001e,0x00000001,0x22a01e28,
-0x00000000,0x00000000,0x00000001,0x45ef2288,0x000000e0,0x00000000,0x00000001,0x45e92288,
-0x000005ed,0x00000000,0x00000001,0x45eb2288,0x000005ef,0x00000000,0x00000040,0x22001240,
-0x160002a0,0x06240624,0x00000001,0x262c22e8,0x00008000,0x00000000,0x0d000038,0x20e00208,
-0x0600032c,0x00000064,0x02000010,0x20000200,0x160000e0,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000110,0x0c000038,0x20e00208,0x0600032c,0x00000064,0x00000040,0x21080a28,
-0x1e0002a0,0x00560056,0x00000041,0x21201248,0x16000108,0x00040004,0x00000001,0x210002e8,
-0x000000e0,0x00000000,0x00000040,0x22001240,0x16000120,0x03200320,0x00000041,0x21043ae8,
-0x3a00062c,0x00000100,0x00000001,0xa0003a28,0x00000104,0x00000000,0x00000040,0x22001240,
-0x160002a0,0x06280628,0x00000001,0x214022e8,0x00008000,0x00000000,0x00000040,0x21480a28,
-0x1e0002a0,0x00480048,0x00000041,0x21443ae8,0x3a000140,0x00000100,0x00000041,0x21601248,
-0x16000148,0x00040004,0x00000040,0x22001240,0x16000160,0x03200320,0x00000001,0xa0003a28,
-0x00000144,0x00000000,0x00000041,0x20e03ae8,0x3a000140,0x00000100,0x00000001,0xa0203a28,
-0x000000e0,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000120,0x00000001,0x20e002e8,
-0x0000032c,0x00000000,0x00000040,0x21040a28,0x1e0002a0,0x00560056,0x00000041,0x20e43ae8,
-0x3a00062c,0x000000e0,0x00000041,0x21201248,0x16000104,0x00040004,0x09000038,0x21003ae8,
-0x3e0000e4,0x42c80000,0x00000040,0x22001240,0x16000120,0x03200320,0x00000001,0xa0003a28,
-0x00000100,0x00000000,0x00000040,0x22001240,0x160002a0,0x06280628,0x00000001,0x214022e8,
-0x00008000,0x00000000,0x00000041,0x21443ae8,0x3a000140,0x000000e0,0x00000040,0x21640a28,
-0x1e0002a0,0x00480048,0x09000038,0x21603ae8,0x3e000144,0x42c80000,0x00000041,0x21801248,
-0x16000164,0x00040004,0x00000040,0x22001240,0x16000180,0x03200320,0x00000001,0xa0003a28,
-0x00000160,0x00000000,0x00000041,0x21a03ae8,0x3a000140,0x000000e0,0x09000038,0x21c03ae8,
-0x3e0001a0,0x42c80000,0x00000001,0xa0203a28,0x000001c0,0x00000000,0x00000040,0x22a00a28,
-0x1e0002a0,0x00010001,0x05000010,0x20000a20,0x1e0002a0,0x00040004,0x00010020,0x34000004,
-0x0e001400,0xfffffd50,0x00000001,0x22a01e28,0x00000000,0x00000000,0x00000040,0x20e00a28,
-0x1e0002a0,0x00100010,0x00000040,0x22001240,0x160000e0,0x02f802f8,0x00000001,0x26302ae8,
-0x00008000,0x00000000,0x0d000038,0x21000208,0x06000328,0x00000064,0x02000010,0x20000200,
-0x16000100,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000130,0x0c000038,0x20e00208,
-0x06000328,0x00000064,0x00000040,0x21080a28,0x1e0002a0,0x003e003e,0x00000041,0x21201248,
-0x16000108,0x00040004,0x00000001,0x210002e8,0x000000e0,0x00000000,0x00000040,0x22001240,
-0x16000120,0x03200320,0x00000041,0x21043ae8,0x3a000630,0x00000100,0x00000001,0xa0003a28,
-0x00000104,0x00000000,0x00000040,0x21400a28,0x1e0002a0,0x00380038,0x00000040,0x22001240,
-0x16000140,0x02c002c0,0x00000001,0x21602ae8,0x00008000,0x00000000,0x00000040,0x21840a28,
-0x1e0002a0,0x002a002a,0x00000041,0x21803ae8,0x3a000160,0x00000100,0x00000041,0x21a01248,
-0x16000184,0x00040004,0x00000040,0x22021240,0x160001a0,0x03200320,0x00000001,0xa2003a28,
-0x00000180,0x00000000,0x00000001,0x20e02ae8,0x00008008,0x00000000,0x00000041,0x21c03ae8,
-0x3a0000e0,0x00000100,0x00000001,0xa2283a28,0x000001c0,0x00000000,0x00000020,0x34000004,
-0x0e001400,0x00000140,0x00000001,0x20e002e8,0x00000328,0x00000000,0x00000040,0x21040a28,
-0x1e0002a0,0x003e003e,0x00000041,0x20e43ae8,0x3a000630,0x000000e0,0x00000041,0x21201248,
-0x16000104,0x00040004,0x09000038,0x21003ae8,0x3e0000e4,0x42c80000,0x00000040,0x22001240,
-0x16000120,0x03200320,0x00000001,0xa0003a28,0x00000100,0x00000000,0x00000040,0x21400a28,
-0x1e0002a0,0x00380038,0x00000040,0x22001240,0x16000140,0x02c002c0,0x00000001,0x21602ae8,
-0x00008000,0x00000000,0x00000041,0x21803ae8,0x3a000160,0x000000e0,0x00000040,0x21a40a28,
-0x1e0002a0,0x002a002a,0x09000038,0x21a03ae8,0x3e000180,0x42c80000,0x00000041,0x21c01248,
-0x160001a4,0x00040004,0x00000040,0x22021240,0x160001c0,0x03200320,0x00000001,0xa2003a28,
-0x000001a0,0x00000000,0x00000001,0x20e42ae8,0x00008008,0x00000000,0x00000041,0x21203ae8,
-0x3a0000e4,0x000000e0,0x09000038,0x21003ae8,0x3e000120,0x42c80000,0x00000001,0xa2283a28,
-0x00000100,0x00000000,0x00000040,0x22a00a28,0x1e0002a0,0x00010001,0x05000010,0x20000a20,
-0x1e0002a0,0x00080008,0x00010020,0x34000004,0x0e001400,0xfffffd00,0x00000001,0x26341e28,
-0x00000000,0x00000000,0x00000009,0x20e00a28,0x1e000634,0x00050005,0x00000009,0x20e40a28,
-0x1e000634,0x00070007,0x00000041,0x21001248,0x160000e0,0x00040004,0x00000040,0x22001240,
-0x16000100,0x03200320,0x00600001,0x21200208,0x00208000,0x00000000,0x00600001,0x21400208,
-0x00208020,0x00000000,0x00600001,0x21600208,0x00208040,0x00000000,0x00600001,0x21800208,
-0x00208060,0x00000000,0x00000040,0x26340a28,0x1e000634,0x00010001,0x00000008,0x21a80a08,
-0x1e0000e4,0x00040004,0x00000040,0x22000204,0x060000e8,0x020a0400,0x05000010,0x20000a20,
-0x1e000634,0x00060006,0x0a800033,0x00009054,0x000021a4,0x00000000,0x00010020,0x34000004,
-0x0e001400,0xffffff20,0x0000000c,0x20e01228,0x16000020,0x00020002,0x0000000c,0x21241228,
-0x16000022,0x00020002,0x00800001,0x26801e08,0x00000000,0x00000000,0x00800001,0x26c01e08,
-0x00000000,0x00000000,0x00800001,0x27001e08,0x00000000,0x00000000,0x00000040,0x21000a28,
-0x1e0000e0,0x000f000f,0x00000040,0x21400a28,0x1e000124,0x000f000f,0x00800001,0x26401e08,
-0x00000000,0x00000000,0x00000001,0x27401e28,0x00000000,0x00000000,0x00000005,0x21200a08,
-0x1e000100,0xfff0fff0,0x00000005,0x21600a08,0x1e000140,0xfff0fff0,0x0000000c,0x21640208,
-0x16000120,0x00020002,0x0600000c,0x263c0208,0x16000160,0x00020002,0x00000009,0x26380208,
-0x16000164,0x00010001,0x00010020,0x34000004,0x0e001400,0x000000e0,0x06000010,0x20000200,
-0x16000638,0x00000000,0x00000001,0x27441e28,0x00000000,0x00000000,0x00010020,0x34000004,
-0x0e001400,0x00000080,0x20004d01,0x00000807,0x20144001,0x003a0800,0x00000040,0x27440a28,
-0x1e000744,0x00100010,0x00000040,0x22000204,0x060000f0,0x020a8000,0x00000001,0x2104020c,
-0x00000740,0x00000000,0x00000001,0x2108060c,0x00000000,0x0007001f,0x05000010,0x20000200,
-0x02000744,0x00000638,0x0c600033,0x00032014,0x00002108,0x00000000,0x00010020,0x34000004,
-0x0e001400,0xffffff80,0x00000040,0x27400a28,0x1e000740,0x00100010,0x05000010,0x20000200,
-0x02000740,0x0000063c,0x00010020,0x34000004,0x0e001400,0xffffff20,0x20004d01,0x00007f07,
-0x07000031,0x20003a00,0x06000fe0,0x82000010,0x2000007d,0x2000000c,0x2000007d,0x2000000c,
-0x00000001,0x21401e28,0x00000000,0x00000000,0x00000040,0x20e00a28,0x1e000140,0x00180018,
-0x00000041,0x211a1248,0x16000140,0x00040004,0x00000041,0x21181248,0x160000e0,0x00040004,
-0x00000040,0x22021240,0x16000118,0x00200020,0x00000040,0x22001240,0x1600011a,0x07400740,
-0x00000001,0xa0000a08,0x00008200,0x00000000,0x00000040,0x21400a28,0x1e000140,0x00010001,
-0x05000010,0x20000a20,0x1e000140,0x00110011,0x00010020,0x34000004,0x0e001400,0xffffff70,
-0x00000001,0x21c01e28,0x00000000,0x00000000,0x00000009,0x20e40a28,0x1e0001c0,0x00070007,
-0x00000040,0x22000204,0x060000e8,0x02480400,0x00000009,0x20e00a28,0x1e0001c0,0x00050005,
-0x00000008,0x21280a08,0x1e0000e4,0x00040004,0x00000041,0x21181248,0x160000e0,0x00040004,
-0x0a800031,0x21403a6c,0x00000120,0x00000200,0x00000040,0x22001240,0x16000118,0x02400240,
-0x00600001,0xa0000208,0x008d0140,0x00000000,0x00600001,0xa0200208,0x008d0160,0x00000000,
-0x00600001,0xa0400208,0x008d0180,0x00000000,0x00600001,0xa0600208,0x008d01a0,0x00000000,
-0x00000040,0x21c00a28,0x1e0001c0,0x00010001,0x05000010,0x20000a20,0x1e0001c0,0x00060006,
-0x00010020,0x34000004,0x0e001400,0xffffff20,0x00000001,0x21c01e28,0x00000000,0x00000000,
-0x00000009,0x20e40a28,0x1e0001c0,0x00070007,0x00000040,0x22000204,0x060000ec,0x02480400,
-0x00000009,0x20e00a28,0x1e0001c0,0x00050005,0x00000008,0x21280a08,0x1e0000e4,0x00040004,
-0x00000041,0x21181248,0x160000e0,0x00040004,0x0a800031,0x21403a6c,0x00000120,0x00000200,
-0x00000040,0x22001240,0x16000118,0x05400540,0x00600001,0xa0000208,0x008d0140,0x00000000,
-0x00600001,0xa0200208,0x008d0160,0x00000000,0x00600001,0xa0400208,0x008d0180,0x00000000,
-0x00600001,0xa0600208,0x008d01a0,0x00000000,0x00000040,0x21c00a28,0x1e0001c0,0x00010001,
-0x05000010,0x20000a20,0x1e0001c0,0x00030003,0x00010020,0x34000004,0x0e001400,0xffffff20,
-0x02000001,0x4ad422a8,0x00000024,0x00000000,0x00000001,0x2ad80208,0x00000408,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x4ad41ea8,0x00000000,0x00020002,
-0x00000020,0x34000004,0x0e001400,0x00000010,0x00000001,0x4ad41ea8,0x00000000,0x00000000,
-0x00000041,0x20e00208,0x1600025c,0x000a000a,0x0000000c,0x21201208,0x160004fa,0x00010001,
-0x0000000c,0x21401208,0x160004fa,0x00020002,0x06000010,0x20002260,0x1e000515,0x00010001,
-0x00000001,0x26c80228,0x00000260,0x00000000,0x00000001,0x45142288,0x00000768,0x00000000,
-0x00000001,0x4ac02288,0x00000515,0x00000000,0x0c000038,0x21180208,0x02000258,0x000000e0,
-0x00000040,0x2adc2228,0x1e00050b,0xffecffec,0x00000001,0x4ac22aa8,0x00000508,0x00000000,
-0x00000001,0x2ad01608,0x00000000,0x00000000,0x00000001,0x46cc2288,0x00000516,0x00000000,
-0x00000040,0x2ac80228,0x02000280,0x00000120,0x00000040,0x2ac40228,0x02000280,0x00000140,
-0x00000001,0x2acc0228,0x00000118,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000090,
-0x00000040,0x20e02228,0x1e000514,0x00140014,0x00000001,0x2ac81e28,0x00000000,0x00000000,
-0x00000001,0x2ac41e28,0x00000000,0x00000000,0x00000040,0x22001240,0x160000e0,0x05080508,
-0x00000041,0x21180208,0x220006c8,0x00008000,0x02000010,0x20002a60,0x1e000ad4,0x00020002,
-0x0000000c,0x26c80228,0x16000118,0x00060006,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x45092288,0x1e00050b,0x00040004,0x0000000c,0x21201228,0x16000022,0x00020002,
-0x0000000c,0x20e01228,0x16000020,0x00020002,0x02000010,0x20001240,0x12000020,0x000004fc,
-0x00000001,0x4ad61e88,0x00000000,0x00000000,0x00000040,0x21400a28,0x1e000120,0x000f000f,
-0x00000040,0x21180a28,0x1e0000e0,0x000f000f,0x00000005,0x26d40a08,0x1e000140,0xfff0fff0,
-0x00000005,0x26d00a08,0x1e000118,0xfff0fff0,0x0000000c,0x21800208,0x160006d4,0x00040004,
-0x0000000c,0x21600208,0x160006d0,0x00040004,0x00000009,0x46c00248,0x16000180,0x00020002,
-0x00000009,0x46c40248,0x16000160,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x02000010,0x20001240,0x12000022,0x000004fe,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000040,0x240c0208,0x1600040c,0x00010001,0x00000020,0x34000004,0x0e001400,0x00000060,
-0x00000001,0x240c1608,0x00000000,0x00000000,0x00000001,0x4ad61e88,0x00000000,0x00010001,
-0x00000001,0x24fc1248,0x00000020,0x00000000,0x00000001,0x24fe1248,0x00000022,0x00000000,
-0x00000001,0x24140208,0x0000040c,0x00000000,0x00000001,0x24180208,0x0000040c,0x00000000,
-0x00000009,0x21181228,0x160006c4,0x00020002,0x00000009,0x21441228,0x160006c0,0x00020002,
-0x0000000c,0x20e00208,0x160006d0,0x00020002,0x00800001,0x27c01608,0x00000000,0x00000000,
-0x00800001,0x28801608,0x00000000,0x00000000,0x00000040,0x21200a28,0x1e000118,0x000f000f,
-0x00000040,0x21600a28,0x1e000144,0x000f000f,0x00000009,0x26d00208,0x160000e0,0x00010001,
-0x00800001,0x28001608,0x00000000,0x00000000,0x00800001,0x28401608,0x00000000,0x00000000,
-0x0000000c,0x21400a28,0x1e000120,0x00040004,0x0000000c,0x21800a28,0x1e000160,0x00040004,
-0x01000005,0x611c0288,0x160006d0,0x000f000f,0x0000000c,0x26d40208,0x160006d4,0x00020002,
-0x00000001,0x26c01608,0x00000000,0x00000000,0x00600001,0x27f01e48,0x00000000,0x00030003,
-0x00600001,0x27e01e48,0x00000000,0x00020002,0x00600001,0x27d01e48,0x00000000,0x00010001,
-0x00600001,0x28801e48,0x00000000,0x000c000c,0x00600001,0x28901e48,0x00000000,0x000d000d,
-0x00600001,0x28a01e48,0x00000000,0x000e000e,0x00600001,0x28b01e48,0x00000000,0x000f000f,
-0x00600001,0x28001e48,0x00000000,0x00040004,0x00600001,0x28201e48,0x00000000,0x00060006,
-0x00600001,0x28301e48,0x00000000,0x00070007,0x00600001,0x28101e48,0x00000000,0x00050005,
-0x00600001,0x28401e48,0x00000000,0x00080008,0x00600001,0x28501e48,0x00000000,0x00090009,
-0x00600001,0x28601e48,0x00000000,0x000a000a,0x00600001,0x28701e48,0x00000000,0x000b000b,
-0x00000041,0x26c40a28,0x0a000140,0x00000180,0x00010020,0x34000004,0x0e001400,0x00000bc0,
-0x06000010,0x20000200,0x160006d4,0x00000000,0x00800001,0x2a001608,0x00000000,0x00000000,
-0x00800001,0x2a401608,0x00000000,0x00000000,0x00800001,0x2a801608,0x00000000,0x00000000,
-0x00800001,0x29c01608,0x00000000,0x00000000,0x00000001,0x26d81608,0x00000000,0x00000000,
-0x00000001,0x2a041e48,0x00000000,0x00020002,0x00000001,0x2a021e48,0x00000000,0x00010001,
-0x00000001,0x2a141e48,0x00000000,0x00020002,0x00000001,0x2a081e48,0x00000000,0x00040004,
-0x00000001,0x2a061e48,0x00000000,0x00030003,0x00000001,0x2a181e48,0x00000000,0x00040004,
-0x00000001,0x2a0a1e48,0x00000000,0x00050005,0x00000001,0x2a1a1e48,0x00000000,0x00050005,
-0x00000001,0x2a0c1e48,0x00000000,0x00060006,0x00000001,0x2a1c1e48,0x00000000,0x00060006,
-0x00000001,0x2a221e48,0x00000000,0x00010001,0x00000001,0x2a0e1e48,0x00000000,0x00070007,
-0x00000001,0x2a321e48,0x00000000,0x00010001,0x00000001,0x2a241e48,0x00000000,0x00020002,
-0x00000001,0x2a341e48,0x00000000,0x00020002,0x00000001,0x2a261e48,0x00000000,0x00030003,
-0x00000001,0x2a361e48,0x00000000,0x00030003,0x00000001,0x2a281e48,0x00000000,0x00040004,
-0x00000001,0x2a381e48,0x00000000,0x00040004,0x00000001,0x2a2a1e48,0x00000000,0x00050005,
-0x00000001,0x2a3a1e48,0x00000000,0x00050005,0x00000001,0x2a2c1e48,0x00000000,0x00060006,
-0x00000001,0x2a3c1e48,0x00000000,0x00060006,0x00000001,0x2a2e1e48,0x00000000,0x00070007,
-0x00000001,0x2a3e1e48,0x00000000,0x00070007,0x00000001,0x2a161e48,0x00000000,0x00030003,
-0x00000001,0x2a121e48,0x00000000,0x00010001,0x00000001,0x2a1e1e48,0x00000000,0x00070007,
-0x00000001,0x2a441e48,0x00000000,0x00020002,0x00000001,0x2a421e48,0x00000000,0x00010001,
-0x00000001,0x2a541e48,0x00000000,0x00020002,0x00000001,0x2a481e48,0x00000000,0x00040004,
-0x00000001,0x2a461e48,0x00000000,0x00030003,0x00000001,0x2a581e48,0x00000000,0x00040004,
-0x00000001,0x2a4a1e48,0x00000000,0x00050005,0x00000001,0x2a5a1e48,0x00000000,0x00050005,
-0x00000001,0x2a4c1e48,0x00000000,0x00060006,0x00000001,0x2a5c1e48,0x00000000,0x00060006,
-0x00000001,0x2a621e48,0x00000000,0x00010001,0x00000001,0x2a4e1e48,0x00000000,0x00070007,
-0x00000001,0x2a721e48,0x00000000,0x00010001,0x00000001,0x2a641e48,0x00000000,0x00020002,
-0x00000001,0x2a741e48,0x00000000,0x00020002,0x00000001,0x2a661e48,0x00000000,0x00030003,
-0x00000001,0x2a761e48,0x00000000,0x00030003,0x00000001,0x2a681e48,0x00000000,0x00040004,
-0x00000001,0x2a781e48,0x00000000,0x00040004,0x00000001,0x2a6a1e48,0x00000000,0x00050005,
-0x00000001,0x2a7a1e48,0x00000000,0x00050005,0x00000001,0x2a6c1e48,0x00000000,0x00060006,
-0x00000001,0x2a7c1e48,0x00000000,0x00060006,0x00000001,0x2a6e1e48,0x00000000,0x00070007,
-0x00000001,0x2a7e1e48,0x00000000,0x00070007,0x00000001,0x2a561e48,0x00000000,0x00030003,
-0x00000001,0x2a521e48,0x00000000,0x00010001,0x00000001,0x2a5e1e48,0x00000000,0x00070007,
-0x00000001,0x2a841e48,0x00000000,0x00020002,0x00000001,0x2a821e48,0x00000000,0x00010001,
-0x00000001,0x2a941e48,0x00000000,0x00020002,0x00000001,0x2a881e48,0x00000000,0x00040004,
-0x00000001,0x2a861e48,0x00000000,0x00030003,0x00000001,0x2a981e48,0x00000000,0x00040004,
-0x00000001,0x2a8a1e48,0x00000000,0x00050005,0x00000001,0x2a9a1e48,0x00000000,0x00050005,
-0x00000001,0x2a8c1e48,0x00000000,0x00060006,0x00000001,0x2a9c1e48,0x00000000,0x00060006,
-0x00000001,0x2aa21e48,0x00000000,0x00010001,0x00000001,0x2a8e1e48,0x00000000,0x00070007,
-0x00000001,0x2ab21e48,0x00000000,0x00010001,0x00000001,0x2aa41e48,0x00000000,0x00020002,
-0x00000001,0x2ab41e48,0x00000000,0x00020002,0x00000001,0x2aa61e48,0x00000000,0x00030003,
-0x00000001,0x2ab61e48,0x00000000,0x00030003,0x00000001,0x2aa81e48,0x00000000,0x00040004,
-0x00000001,0x2ab81e48,0x00000000,0x00040004,0x00000001,0x2aaa1e48,0x00000000,0x00050005,
-0x00000001,0x2aba1e48,0x00000000,0x00050005,0x00000001,0x2aac1e48,0x00000000,0x00060006,
-0x00000001,0x2abc1e48,0x00000000,0x00060006,0x00000001,0x2aae1e48,0x00000000,0x00070007,
-0x00000001,0x2abe1e48,0x00000000,0x00070007,0x00000001,0x2a961e48,0x00000000,0x00030003,
-0x00000001,0x2a921e48,0x00000000,0x00010001,0x00000001,0x2a9e1e48,0x00000000,0x00070007,
-0x00000001,0x29c41e48,0x00000000,0x00020002,0x00000001,0x29c21e48,0x00000000,0x00010001,
-0x00000001,0x29d41e48,0x00000000,0x00020002,0x00000001,0x29c81e48,0x00000000,0x00040004,
-0x00000001,0x29c61e48,0x00000000,0x00030003,0x00000001,0x29d81e48,0x00000000,0x00040004,
-0x00000001,0x29ca1e48,0x00000000,0x00050005,0x00000001,0x29da1e48,0x00000000,0x00050005,
-0x00000001,0x29cc1e48,0x00000000,0x00060006,0x00000001,0x29dc1e48,0x00000000,0x00060006,
-0x00000001,0x29e21e48,0x00000000,0x00010001,0x00000001,0x29ce1e48,0x00000000,0x00070007,
-0x00000001,0x29f21e48,0x00000000,0x00010001,0x00000001,0x29e41e48,0x00000000,0x00020002,
-0x00000001,0x29f41e48,0x00000000,0x00020002,0x00000001,0x29e61e48,0x00000000,0x00030003,
-0x00000001,0x29f61e48,0x00000000,0x00030003,0x00000001,0x29e81e48,0x00000000,0x00040004,
-0x00000001,0x29f81e48,0x00000000,0x00040004,0x00000001,0x29ea1e48,0x00000000,0x00050005,
-0x00000001,0x29fa1e48,0x00000000,0x00050005,0x00000001,0x29ec1e48,0x00000000,0x00060006,
-0x00000001,0x29fc1e48,0x00000000,0x00060006,0x00000001,0x29ee1e48,0x00000000,0x00070007,
-0x00000001,0x29fe1e48,0x00000000,0x00070007,0x00000001,0x29d61e48,0x00000000,0x00030003,
-0x00000001,0x29d21e48,0x00000000,0x00010001,0x00000001,0x29de1e48,0x00000000,0x00070007,
-0x00010020,0x34000004,0x0e001400,0x00000780,0x06000010,0x20000200,0x160006d0,0x00000000,
-0x00000001,0x21181608,0x00000000,0x00000000,0x00010020,0x34000004,0x0e001400,0x000003a0,
-0x20004d01,0x00000907,0x00000040,0x22000204,0x060000f0,0x02890000,0x00000001,0x2128060c,
-0x00000000,0x000f000f,0x00000001,0x21240228,0x000006d8,0x00000000,0x00000001,0x21200228,
-0x00000118,0x00000000,0x05800010,0x20001220,0x028d07c0,0x000006d4,0x00800001,0x28c01608,
-0x00000000,0x00000000,0x00800001,0x29001608,0x00000000,0x00000000,0x0c800031,0x21403a4c,
-0x00000120,0x00000200,0x00800001,0x29401608,0x00000000,0x00000000,0x00800001,0x29801608,
-0x00000000,0x00000000,0x00000040,0x20e00208,0x020006d0,0x00004118,0x00810001,0x28c01248,
-0x008d0140,0x00000000,0x05800010,0x20001220,0x028d07e0,0x000006d4,0x00810001,0x28e01248,
-0x008d0160,0x00000000,0x05800010,0x20001220,0x028d0800,0x000006d4,0x00810001,0x29001248,
-0x008d0180,0x00000000,0x05800010,0x20001220,0x028d0820,0x000006d4,0x00810001,0x29201248,
-0x008d01a0,0x00000000,0x05800010,0x20001220,0x028d0840,0x000006d4,0x00810001,0x29401248,
-0x008d01c0,0x00000000,0x05800010,0x20001220,0x028d0860,0x000006d4,0x00810001,0x29601248,
-0x008d01e0,0x00000000,0x05800010,0x20001220,0x028d0880,0x000006d4,0x00810001,0x29801248,
-0x008d0200,0x00000000,0x05800010,0x20001220,0x028d08a0,0x000006d4,0x00810001,0x29a01248,
-0x008d0220,0x00000000,0x02000010,0x20000200,0x220000e0,0x0000011c,0x00010020,0x34000004,
-0x0e001400,0x00000110,0x0000000c,0x20e02228,0x1600011c,0x00010001,0x04800010,0x20001220,
-0x0a8d09c0,0x000000e0,0x00810001,0x28c01648,0x00000000,0x00000000,0x04800010,0x20001220,
-0x0a8d09e0,0x000000e0,0x00810001,0x28e01648,0x00000000,0x00000000,0x04800010,0x20001220,
-0x0a8d0a00,0x000000e0,0x00810001,0x29001648,0x00000000,0x00000000,0x04800010,0x20001220,
-0x0a8d0a20,0x000000e0,0x00810001,0x29201648,0x00000000,0x00000000,0x04800010,0x20001220,
-0x0a8d0a40,0x000000e0,0x00810001,0x29401648,0x00000000,0x00000000,0x04800010,0x20001220,
-0x0a8d0a60,0x000000e0,0x00810001,0x29601648,0x00000000,0x00000000,0x04800010,0x20001220,
-0x0a8d0a80,0x000000e0,0x00810001,0x29801648,0x00000000,0x00000000,0x04800010,0x20001220,
-0x0a8d0aa0,0x000000e0,0x00810001,0x29a01648,0x00000000,0x00000000,0x00800040,0x21201208,
-0x128d08c0,0x008d08e0,0x00800040,0x21601208,0x128d0900,0x008d0920,0x00800040,0x21a01208,
-0x128d0940,0x008d0960,0x00800040,0x21e01208,0x128d0980,0x008d09a0,0x00000040,0x21180208,
-0x16000118,0x00100010,0x20013640,0x0b0909e7,0x20013640,0x0f0d0be7,0x05000010,0x20000200,
-0x02000118,0x000006d0,0x20013640,0x0b0909e7,0x20012b40,0x0a0909e7,0x606d2140,0x090909ad,
-0x00200040,0x21200208,0x02450120,0x00450128,0x00000040,0x20e00208,0x02000120,0x00000124,
-0x00000040,0x26c00208,0x020006c0,0x000000e0,0x00010020,0x34000004,0x0e001400,0xfffffc60,
-0x00000040,0x26d80208,0x160006d8,0x00100010,0x00a00040,0x28401248,0x168d0840,0x00100010,
-0x00a00040,0x27c01248,0x168d07c0,0x00100010,0x05000010,0x20000200,0x020006d8,0x000006d4,
-0x00a00040,0x28801248,0x168d0880,0x00100010,0x00a00040,0x28001248,0x168d0800,0x00100010,
-0x00010020,0x34000004,0x0e001400,0xfffffbc0,0x00000020,0x34000004,0x0e001400,0x00000330,
-0x06000010,0x20000200,0x160006d4,0x00000000,0x00000001,0x26d81608,0x00000000,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000300,0x06000010,0x20000200,0x160006d0,0x00000000,
-0x00000001,0x21181608,0x00000000,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000260,
-0x20004d01,0x00000907,0x00000040,0x22000204,0x060000f0,0x02890000,0x00000001,0x2128060c,
-0x00000000,0x000f000f,0x00000001,0x21240228,0x000006d8,0x00000000,0x00000001,0x21200228,
-0x00000118,0x00000000,0x05800010,0x20001220,0x028d07c0,0x000006d4,0x00800001,0x28c01608,
-0x00000000,0x00000000,0x00800001,0x29001608,0x00000000,0x00000000,0x0c800031,0x21403a4c,
-0x00000120,0x00000200,0x00800001,0x29401608,0x00000000,0x00000000,0x00800001,0x29801608,
-0x00000000,0x00000000,0x00000040,0x21180208,0x16000118,0x00100010,0x00810001,0x28c01248,
-0x008d0140,0x00000000,0x05800010,0x20001220,0x028d07e0,0x000006d4,0x00810001,0x28e01248,
-0x008d0160,0x00000000,0x05800010,0x20001220,0x028d0800,0x000006d4,0x00800040,0x21201208,
-0x128d08c0,0x008d08e0,0x00810001,0x29001248,0x008d0180,0x00000000,0x05800010,0x20001220,
-0x028d0820,0x000006d4,0x00810001,0x29201248,0x008d01a0,0x00000000,0x05800010,0x20001220,
-0x028d0840,0x000006d4,0x00800040,0x21601208,0x128d0900,0x008d0920,0x00810001,0x29401248,
-0x008d01c0,0x00000000,0x05800010,0x20001220,0x028d0860,0x000006d4,0x20013640,0x0b0909e7,
-0x00810001,0x29601248,0x008d01e0,0x00000000,0x05800010,0x20001220,0x028d0880,0x000006d4,
-0x00800040,0x21a01208,0x128d0940,0x008d0960,0x00810001,0x29801248,0x008d0200,0x00000000,
-0x05800010,0x20001220,0x028d08a0,0x000006d4,0x00810001,0x29a01248,0x008d0220,0x00000000,
-0x05000010,0x20000200,0x02000118,0x000006d0,0x00800040,0x21e01208,0x128d0980,0x008d09a0,
-0x20013640,0x0f0d0be7,0x20013640,0x0b0909e7,0x20012b40,0x0a0909e7,0x606d2140,0x090909ad,
-0x00200040,0x21200208,0x02450120,0x00450128,0x00000040,0x20e00208,0x02000120,0x00000124,
-0x00000040,0x26c00208,0x020006c0,0x000000e0,0x00010020,0x34000004,0x0e001400,0xfffffda0,
-0x00000040,0x26d80208,0x160006d8,0x00100010,0x00a00040,0x28401248,0x168d0840,0x00100010,
-0x00a00040,0x27c01248,0x168d07c0,0x00100010,0x05000010,0x20000200,0x020006d8,0x000006d4,
-0x00a00040,0x28801248,0x168d0880,0x00100010,0x00a00040,0x28001248,0x168d0800,0x00100010,
-0x00010020,0x34000004,0x0e001400,0xfffffd00,0x02000010,0x20002a60,0x1e000ad4,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x00000041,0x26c40a28,0x1e0006c4,0x00100010,
-0x00000040,0x22000204,0x06000110,0x02180000,0x00000001,0x2128160c,0x00000000,0x00000000,
-0x00000040,0x20e00208,0x020002a0,0x00000260,0x02000010,0x20002260,0x1e00076d,0x00010001,
-0x00000001,0x41922aa8,0x00000518,0x00000000,0x00000001,0x41902aa8,0x00000513,0x00000000,
-0x00000040,0x24c80208,0x160004c8,0x00010001,0x00000001,0x22040a28,0x00000268,0x00000000,
-0x0a400031,0x21803a0c,0x00000120,0x00000200,0x00000001,0x26d00a28,0x00000248,0x00000000,
-0x00000009,0x22000208,0x16000180,0x00030003,0x00000040,0x22a00208,0x020000e0,0x00004200,
-0x00000040,0x24c40208,0x020004c4,0x00000200,0x00010020,0x34000004,0x0e001400,0x00000130,
-0x01000010,0x20002a60,0x1e000513,0xffffffff,0x00010020,0x34000004,0x0e001400,0x00000080,
-0x00000040,0x21182a28,0x1e000513,0x001a001a,0x0000000c,0x20e00208,0x16000200,0x00030003,
-0x00000041,0x21201248,0x16000118,0x00040004,0x00000040,0x227c0208,0x0200027c,0x000000e0,
-0x00000040,0x22001240,0x16000120,0x02400240,0x0000000c,0x21400208,0x16008000,0x00030003,
-0x00000040,0x227c0208,0x0200027c,0x00004140,0x00000001,0xa0000208,0x00000200,0x00000000,
-0x02000010,0x20002a60,0x1e000ac2,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x22000208,0x000002b0,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000050,
-0x02000010,0x20002a60,0x1e000190,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000030,
-0x02000010,0x20002a60,0x1e000ad4,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x0000000c,0x22000a08,0x1e000200,0x00020002,0x02000010,0x20002260,0x1e00076d,0x00020002,
-0x00010020,0x34000004,0x0e001400,0x000001f0,0x01000010,0x20002a60,0x1e000192,0xffffffff,
-0x00010020,0x34000004,0x0e001400,0x000000c0,0x00000040,0x21202a28,0x1e000192,0x001a001a,
-0x0000000c,0x20e00208,0x16000200,0x00030003,0x0000000c,0x21180208,0x16000420,0x00030003,
-0x00000041,0x21401248,0x16000120,0x00040004,0x00000040,0x227c0208,0x0200027c,0x000000e0,
-0x00000040,0x22001240,0x16000140,0x02400240,0x00000040,0x227c0208,0x0200027c,0x00004118,
-0x00000001,0xa0000208,0x00000200,0x00000000,0x00000040,0x21600208,0x02000204,0x00004200,
-0x00000040,0x22040228,0x02000160,0x00000420,0x05000002,0x22040a28,0x0a0006d0,0x00000204,
-0x04000002,0x22040a28,0x1e000204,0x00000000,0x02000010,0x20002a60,0x1e000ac2,0x00020002,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22000208,0x000002b0,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x000000b0,0x02000010,0x20002a60,0x1e000190,0x00020002,
-0x00010020,0x34000004,0x0e001400,0x00000040,0x02000010,0x20002a60,0x1e000ad4,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22000208,0x000002a8,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x00000050,0x02000010,0x20002a60,0x1e000192,0x00020002,
-0x00010020,0x34000004,0x0e001400,0x00000030,0x02000010,0x20002a60,0x1e000ad4,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x0000000c,0x22000a08,0x1e000200,0x00020002,
-0x00000001,0x24200208,0x0000041c,0x00000000,0x00000001,0x241c0208,0x00000200,0x00000000,
-0x06000010,0x20000a20,0x1e0002b8,0x00000000,0x00000001,0x22080208,0x00000200,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000070,0x04000010,0x20000200,0x02000200,0x000002b8,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x20e00208,0x020002b8,0x00004200,
-0x00000040,0x22080208,0x02000200,0x000040e0,0x03000010,0x20000200,0x16000208,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x22081608,0x00000000,0x00010001,
-0x01000010,0x20002a60,0x1e000ac2,0xffffffff,0x00010020,0x34000004,0x0e001400,0x00001550,
-0x00000040,0x20e02a28,0x1e000ac2,0x001a001a,0x00000041,0x21181248,0x160000e0,0x00040004,
-0x00000040,0x22001240,0x16000118,0x02400240,0x00000001,0xa0000208,0x00000200,0x00000000,
-0x00000040,0x220c2268,0x2200052c,0x00000187,0x04000010,0x20001a40,0x1200020c,0x0000005c,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x21101228,0x0000005c,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x00000010,0x05000002,0x21101228,0x1a00005e,0x0000020c,
-0x03000010,0x20002260,0x1e000ac0,0x00010001,0x00000001,0x420c0a68,0x00000110,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000210,0x00000040,0x20e00a08,0x1e000ac8,0x00020002,
-0x01000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x000001e0,
-0x00000040,0x20e00a08,0x1e000ac4,0x00020002,0x01000010,0x20000200,0x02000ad8,0x000000e0,
-0x00010020,0x34000004,0x0e001400,0x000001b0,0x00000040,0x20e02a28,0x1e000ac2,0x00010001,
-0x00000040,0x22001240,0x160000e0,0x05080508,0x00000040,0x21182228,0x1e008000,0x00050005,
-0x06000010,0x20001a20,0x0a00020c,0x00000118,0x00010020,0x34000004,0x0e001400,0x00000070,
-0x00000040,0x20e02a28,0x1e000ac2,0x00010001,0x00000040,0x22001240,0x160000e0,0x05080508,
-0x00000001,0x44002260,0x00008000,0x00000000,0x00000048,0x21201a28,0x1e00020c,0x00070007,
-0x0000000c,0x61180a8c,0x1e000120,0x00030003,0x00000001,0xc0002288,0x00000118,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x000000f0,0x00000040,0x20e02a28,0x1e000ac2,0x00010001,
-0x00000040,0x22001240,0x160000e0,0x05080508,0x00000040,0x21182228,0x1e008000,0xfffbfffb,
-0x04000010,0x20001a20,0x0a00020c,0x00000118,0x00010020,0x34000004,0x0e001400,0x00000070,
-0x00000040,0x20e02a28,0x1e000ac2,0x00010001,0x00000040,0x22001240,0x160000e0,0x05080508,
-0x00000001,0x44002260,0x00008000,0x00000000,0x00000048,0x21201a28,0x1e00020c,0x00070007,
-0x0000000c,0x61180a8c,0x1e000120,0x00030003,0x00000001,0xc0002288,0x00000118,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x00000030,0x00000040,0x20e02a28,0x1e000ac2,0x00010001,
-0x00000040,0x22001240,0x160000e0,0x05080508,0x00000001,0xc0001a88,0x0000020c,0x00000000,
-0x06000010,0x20002260,0x1e000ac0,0x00010001,0x00010020,0x34000004,0x0e001400,0x000007d0,
-0x01000010,0x20002a60,0x1e000ad4,0x00020002,0x00010020,0x34000004,0x0e001400,0x000007b0,
-0x00000040,0x20e02228,0x1e000768,0x006e006e,0x00000001,0x2ad00a08,0x000006c8,0x00000000,
-0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240,
-0x00000001,0x26c80228,0x00008000,0x00000000,0x02000010,0x20002260,0x1e000768,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000230,0x05000010,0x20000200,0x02000ad0,0x000006c8,
-0x00010020,0x34000004,0x0e001400,0x000000a0,0x00000009,0x20e00208,0x16000ad0,0x00030003,
-0x06000010,0x20002260,0x1e000509,0x000a000a,0x0c000038,0x21180208,0x020000e0,0x000006c8,
-0x00000040,0x21200228,0x1e000118,0xfff8fff8,0x05000002,0x2adc0a28,0x1e000120,0x00050005,
-0x00010020,0x34000004,0x0e001400,0x00000130,0x00000040,0x40e02268,0x0a000509,0x00004adc,
-0x05000002,0x21181a28,0x1e0000e0,0x00ff00ff,0x04000002,0x65090a88,0x1e000118,0x00010001,
-0x00000020,0x34000004,0x0e001400,0x000000f0,0x04000010,0x20000200,0x02000ad0,0x000006c8,
-0x00010020,0x34000004,0x0e001400,0x000000d0,0x06000010,0x20000200,0x16000ad8,0x000a000a,
-0x00010020,0x34000004,0x0e001400,0x000000b0,0x00000041,0x20e00a08,0x1e0006c8,0x000c000c,
-0x02000010,0x20002260,0x1e000768,0x00000000,0x0c000038,0x21180208,0x020000e0,0x00000ad0,
-0x00000040,0x21200228,0x1e000118,0xfff4fff4,0x05000002,0x2adc0a28,0x1e000120,0x00050005,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x05000002,0x20e00a28,0x1e000adc,0x00010001,
-0x04000002,0x2adc0a28,0x1e0000e0,0x00000000,0x00000040,0x40e02268,0x0a000509,0x00000adc,
-0x05000002,0x21181a28,0x1e0000e0,0x00ff00ff,0x04000002,0x65090a88,0x1e000118,0x00010001,
-0x03000010,0x20002260,0x1e000509,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x45091e88,0x00000000,0x00010001,0x00000020,0x34000004,0x0e001400,0x00000400,
-0x06000010,0x20002260,0x1e000509,0x00d400d4,0x00010020,0x34000004,0x0e001400,0x000003e0,
-0x00000001,0x45091e88,0x00000000,0x00d400d4,0x00000020,0x34000004,0x0e001400,0x000003c0,
-0x05000010,0x20000200,0x02000ad0,0x000006c8,0x00010020,0x34000004,0x0e001400,0x00000140,
-0x00000041,0x20e00208,0x16000ad0,0x000a000a,0x00000040,0x21602228,0x1e000768,0x00100010,
-0x0c000038,0x21180208,0x020000e0,0x000006c8,0x00000040,0x22001240,0x16000160,0x05080508,
-0x00000040,0x21200228,0x1e000118,0xfff6fff6,0x05000002,0x21400a28,0x1e000120,0x00050005,
-0x04000002,0x2adc0a28,0x1e000140,0x00000000,0x06000010,0x20002220,0x0a008000,0x00000adc,
-0x00010020,0x34000004,0x0e001400,0x00000070,0x00000040,0x20e02228,0x1e000768,0x00100010,
-0x00000040,0x22001240,0x160000e0,0x05080508,0x00000040,0x41182268,0x0a008000,0x00004adc,
-0x05000002,0x21201a28,0x1e000118,0x00ff00ff,0x04000002,0x61400a8c,0x1e000120,0x00010001,
-0x00000001,0xc0002288,0x00000140,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000100,
-0x00000040,0x20e02228,0x1e000768,0x00100010,0x00000040,0x22001240,0x160000e0,0x05080508,
-0x00000001,0xc0001e88,0x00000000,0x00020002,0x00000020,0x34000004,0x0e001400,0x000000c0,
-0x04000010,0x20000200,0x02000ad0,0x000006c8,0x00010020,0x34000004,0x0e001400,0x000000a0,
-0x00000041,0x20e00a08,0x1e0006c8,0x00080008,0x00000040,0x21402228,0x1e000768,0x00100010,
-0x0c000038,0x21180208,0x020000e0,0x00000ad0,0x00000040,0x22001240,0x16000140,0x05080508,
-0x00000040,0x21200228,0x1e000118,0xfff8fff8,0x05000002,0x2adc0a28,0x1e000120,0x00050005,
-0x00000040,0x41602268,0x0a008000,0x00000adc,0x05000002,0x21801a28,0x1e000160,0x00ff00ff,
-0x04000002,0x61a00a8c,0x1e000180,0x00010001,0x00000001,0xc0002288,0x000001a0,0x00000000,
-0x00000040,0x20e02228,0x1e000768,0x00790079,0x00000041,0x21181248,0x160000e0,0x00040004,
-0x00000040,0x22001240,0x16000118,0x02400240,0x00000040,0xa0000208,0x02008000,0x000006c8,
-0x00000040,0x21202228,0x1e000768,0x00100010,0x00000041,0x21401248,0x16000120,0x00040004,
-0x00000040,0x22001240,0x16000140,0x02400240,0x00000040,0xa0000208,0x02008000,0x00000ad0,
-0x06000010,0x20000200,0x16000ad8,0x001e001e,0x00010020,0x34000004,0x0e001400,0x00000100,
-0x00000040,0x20e42228,0x1e000768,0x00100010,0x00000040,0x20e02228,0x1e000768,0x00790079,
-0x00000041,0x21181248,0x160000e4,0x00040004,0x00000041,0x211a1248,0x160000e0,0x00040004,
-0x00000040,0x22021240,0x16000118,0x02400240,0x00000040,0x22001240,0x1600011a,0x02400240,
-0x00000040,0x26c80228,0x02008000,0x0000c200,0x00000041,0x21200a28,0x1e0006c8,0x00020002,
-0x00000040,0x22001240,0x160000e4,0x05080508,0x0c000038,0x21400a28,0x0a000120,0x00000ad0,
-0x04000002,0x21600a28,0x1e000140,0xfffcfffc,0x05000002,0x2adc0a28,0x1e000160,0x00040004,
-0x00000040,0x41802268,0x0a008000,0x00000adc,0x05000002,0x21a01a28,0x1e000180,0x00ff00ff,
-0x04000002,0x61c00a8c,0x1e0001a0,0x00010001,0x00000001,0xc0002288,0x000001c0,0x00000000,
-0x00000040,0x20e02228,0x1e000768,0x00100010,0x00000040,0x22001240,0x160000e0,0x05080508,
-0x03000010,0x20002220,0x1e008000,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x00000040,0x20e02228,0x1e000768,0x00100010,0x00000040,0x22001240,0x160000e0,0x05080508,
-0x00000001,0xc0001e88,0x00000000,0x00010001,0x00000020,0x34000004,0x0e001400,0x00000070,
-0x00000040,0x20e02228,0x1e000768,0x00100010,0x00000040,0x22001240,0x160000e0,0x05080508,
-0x06000010,0x20002220,0x1e008000,0x00ff00ff,0x00010020,0x34000004,0x0e001400,0x00000030,
-0x00000040,0x20e02228,0x1e000768,0x00100010,0x00000040,0x22001240,0x160000e0,0x05080508,
-0x00000001,0xc0001e88,0x00000000,0x00ff00ff,0x00000040,0x20e02228,0x1e0006cc,0x006e006e,
-0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240,
-0x00000001,0xa0000208,0x00000200,0x00000000,0x00000001,0x45121e88,0x00000000,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x000008e0,0x0000000c,0x220c1208,0x160004fa,0x00020002,
-0x0000000c,0x22101208,0x160004fa,0x00010001,0x06000010,0x20000200,0x1600020c,0x000a000a,
-0x00010020,0x34000004,0x0e001400,0x00000030,0x04000010,0x20000a20,0x1e000acc,0x00040004,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x220c1608,0x00000000,0x000a000a,
-0x00000040,0x20e00a08,0x1e000ac8,0x00020002,0x04000002,0x220c0208,0x1600020c,0x00020002,
-0x02000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x01000010,0x20002260,0x1e00076d,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000a0,
-0x00000040,0x20e00a08,0x1e000ac8,0x00030003,0x02000010,0x20000200,0x02000ad8,0x000000e0,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x01000010,0x20002260,0x1e00076d,0x00010001,
-0x00010020,0x34000004,0x0e001400,0x00000050,0x00000040,0x20e00a08,0x1e000ac8,0x00040004,
-0x02000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x000001c0,
-0x02000010,0x20002260,0x1e00076d,0x00020002,0x00010020,0x34000004,0x0e001400,0x000001a0,
-0x00000041,0x20e00208,0x16000210,0x000a000a,0x00000041,0x20e40208,0x1600020c,0x000e000e,
-0x00000041,0x2ad00208,0x02000260,0x0000020c,0x00000040,0x21240208,0x1e0000e0,0xfff6fff6,
-0x00000040,0x21180208,0x020000e0,0x000040e4,0x06000010,0x20000200,0x02000200,0x00000ad0,
-0x00000041,0x21200208,0x02000118,0x00000260,0x0c000038,0x24040208,0x02000120,0x00000124,
-0x00010020,0x34000004,0x0e001400,0x000000b0,0x00000041,0x20e00208,0x16000200,0x00060006,
-0x00000040,0x21402a28,0x1e000ac2,0x00010001,0x0c000038,0x21180208,0x020000e0,0x00000ad0,
-0x00000040,0x22001240,0x16000140,0x05080508,0x00000040,0x21200228,0x1e000118,0xfffafffa,
-0x05000002,0x2adc0a28,0x1e000120,0x00040004,0x00000040,0x41602268,0x0a008000,0x00000adc,
-0x05000002,0x21801a28,0x1e000160,0x00ff00ff,0x04000002,0x61a00a8c,0x1e000180,0x00010001,
-0x00000001,0xc0002288,0x000001a0,0x00000000,0x00000020,0x34000004,0x0e001400,0x000004f0,
-0x04000010,0x20000200,0x02000200,0x00000ad0,0x00010020,0x34000004,0x0e001400,0x000004d0,
-0x00000040,0x20e00208,0x02000ad0,0x00004200,0x0c000038,0x21180208,0x020000e0,0x00000210,
-0x00000040,0x24040208,0x02000404,0x00000118,0x00000020,0x34000004,0x0e001400,0x00000490,
-0x00000040,0x20e00a08,0x1e000ac4,0x00020002,0x02000010,0x20000200,0x02000ad8,0x000000e0,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x01000010,0x20002260,0x1e00076d,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x000000a0,0x00000040,0x20e00a08,0x1e000ac4,0x00030003,
-0x02000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x01000010,0x20002260,0x1e00076d,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000050,
-0x00000040,0x20e00a08,0x1e000ac4,0x00040004,0x02000010,0x20000200,0x02000ad8,0x000000e0,
-0x00010020,0x34000004,0x0e001400,0x00000180,0x02000010,0x20002260,0x1e00076d,0x00020002,
-0x00010020,0x34000004,0x0e001400,0x00000160,0x0000000c,0x20e00208,0x1600020c,0x00010001,
-0x00000041,0x2ad00208,0x02000260,0x000000e0,0x06000010,0x20000200,0x02000200,0x00000ad0,
-0x00010020,0x34000004,0x0e001400,0x000000b0,0x00000041,0x20e00208,0x16000200,0x00060006,
-0x00000040,0x21402a28,0x1e000ac2,0x00010001,0x0c000038,0x21180208,0x020000e0,0x00000ad0,
-0x00000040,0x22001240,0x16000140,0x05080508,0x00000040,0x21200228,0x1e000118,0xfffafffa,
-0x05000002,0x2adc0a28,0x1e000120,0x00020002,0x00000040,0x41602268,0x0a008000,0x00000adc,
-0x05000002,0x21801a28,0x1e000160,0x00ff00ff,0x04000002,0x61a00a8c,0x1e000180,0x00010001,
-0x00000001,0xc0002288,0x000001a0,0x00000000,0x00000020,0x34000004,0x0e001400,0x000002b0,
-0x04000010,0x20000200,0x02000200,0x00000ad0,0x00010020,0x34000004,0x0e001400,0x00000290,
-0x00000040,0x20e00208,0x02000ad0,0x00004200,0x0000000c,0x20e40208,0x16000210,0x00010001,
-0x0c000038,0x21180208,0x020000e0,0x000000e4,0x00000040,0x24040208,0x02000404,0x00000118,
-0x00000020,0x34000004,0x0e001400,0x00000240,0x06000010,0x20000200,0x02000200,0x00000404,
-0x00010020,0x34000004,0x0e001400,0x000000b0,0x00000041,0x20e00208,0x16000200,0x00060006,
-0x00000040,0x21402a28,0x1e000ac2,0x00010001,0x0c000038,0x21180208,0x020000e0,0x00000404,
-0x00000040,0x22001240,0x16000140,0x05080508,0x00000040,0x21200228,0x1e000118,0xfffafffa,
-0x05000002,0x2adc0a28,0x1e000120,0x00060006,0x00000040,0x41602268,0x0a008000,0x00000adc,
-0x05000002,0x21801a28,0x1e000160,0x00ff00ff,0x04000002,0x61a00a8c,0x1e000180,0x00010001,
-0x00000001,0xc0002288,0x000001a0,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000170,
-0x04000010,0x20000200,0x02000200,0x00000404,0x00010020,0x34000004,0x0e001400,0x00000150,
-0x00000009,0x20e00208,0x16000404,0x00030003,0x02000010,0x20002260,0x1e00076d,0x00020002,
-0x0c000038,0x21180208,0x020000e0,0x00000200,0x00000040,0x21200228,0x1e000118,0xfff8fff8,
-0x05000002,0x2adc0a28,0x1e000120,0x000a000a,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x0c000038,0x2adc0a28,0x0e000adc,0x00000003,0x00000040,0x20e02a28,0x1e000ac2,0x00010001,
-0x00000040,0x22001240,0x160000e0,0x05080508,0x06000010,0x20002220,0x0a008000,0x00000adc,
-0x00010020,0x34000004,0x0e001400,0x00000070,0x00000040,0x20e02a28,0x1e000ac2,0x00010001,
-0x00000040,0x22001240,0x160000e0,0x05080508,0x00000040,0x41182268,0x0a008000,0x00004adc,
-0x05000002,0x21201a28,0x1e000118,0x00ff00ff,0x04000002,0x61400a8c,0x1e000120,0x00010001,
-0x00000001,0xc0002288,0x00000140,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000030,
-0x00000040,0x20e02a28,0x1e000ac2,0x00010001,0x00000040,0x22001240,0x160000e0,0x05080508,
-0x00000001,0xc0001e88,0x00000000,0x00000000,0x00000040,0x20e00a08,0x1e000ac8,0x00010001,
-0x02000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000030,
-0x00000001,0x45121e88,0x00000000,0x00010001,0x00000041,0x2ad00208,0x02000260,0x0000020c,
-0x00000020,0x34000004,0x0e001400,0x00000080,0x00000040,0x20e00a08,0x1e000ac4,0x00010001,
-0x02000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000030,
-0x0000000c,0x20e00208,0x1600020c,0x00010001,0x00000041,0x2ad00208,0x02000260,0x000000e0,
-0x00000020,0x34000004,0x0e001400,0x00000020,0x00000001,0x45121e88,0x00000000,0x00000000,
-0x00000001,0x2ad00208,0x00000404,0x00000000,0x00000040,0x20e02a28,0x1e000ac2,0x00010001,
-0x00000041,0x20e40208,0x160006c0,0x00140014,0x00000040,0x22001240,0x160000e0,0x05080508,
-0x0c000038,0x21180208,0x020000e4,0x00000ad0,0x0000000c,0x211c2208,0x1e008000,0x00020002,
-0x00000040,0x2adc0228,0x02000118,0x0000011c,0x01000010,0x20002260,0x1e00076e,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x22700a28,0x0a000270,0x000046d0,
-0x04000040,0x22040228,0x02000204,0x00004200,0x00000040,0x226c0a28,0x1e00026c,0x00010001,
-0x00000001,0x220c0a08,0x00000740,0x00000000,0x00000001,0x21100a08,0x00000274,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000060,0x01000010,0x20002260,0x1e00076e,0x00000000,
-0x00000040,0x22040228,0x0200020c,0x00004110,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x22040a28,0x0a000204,0x000046d0,0x05000002,0x22040a28,0x0a0006d0,0x00000204,
-0x00000020,0x34000004,0x0e001400,0x00000030,0x00000040,0x20e00208,0x0200020c,0x00004270,
-0x00000040,0x21180228,0x020000e0,0x00004200,0x05000002,0x22040a28,0x0a000118,0x000006d0,
-0x00000001,0x22680a28,0x00000204,0x00000000,0x02000010,0x20002260,0x1e000510,0x00000000,
-0x00000040,0x22700228,0x02004204,0x0000020c,0x00000001,0x21101e28,0x00000000,0x00000000,
-0x00000001,0x22bc0a28,0x00000268,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000040,0x20e00a28,0x0a000204,0x00000264,0x00000040,0x21100a28,0x0a0000e0,0x000046d0,
-0x00000001,0x22b80a28,0x00000110,0x00000000,0x00000040,0x21202a28,0x1e000ac2,0x001a001a,
-0x0000000c,0x21180208,0x16000260,0x00030003,0x0000000c,0x20e00208,0x16000208,0x00030003,
-0x00000041,0x21401248,0x16000120,0x00040004,0x00000040,0x22780208,0x02000278,0x00000118,
-0x00000040,0x227c0208,0x0200027c,0x000000e0,0x00000040,0x22001240,0x16000140,0x02400240,
-0x00000001,0xa0000208,0x00000208,0x00000000,0x00000001,0x20e002e8,0x000002a8,0x00000000,
-0x00000001,0x221002e8,0x000002b0,0x00000000,0x00000001,0x20e412e8,0x000004da,0x00000000,
-0x00000001,0x211802e8,0x000002ac,0x00000000,0x00000001,0x211c12e8,0x000004dc,0x00000000,
-0x00000001,0x212002e8,0x00000258,0x00000000,0x00000001,0x214412e8,0x000004f4,0x00000000,
-0x00000001,0x214002e8,0x0000025c,0x00000000,0x0c000038,0x21600a28,0x0e0006d0,0x00000002,
-0x0040015b,0x10820000,0x792109c9,0x01c7240e,0x02000010,0x20002260,0x1e000510,0x00000000,
-0x00000001,0x45182aa8,0x00000513,0x00000000,0x00000001,0x45132aa8,0x00000508,0x00000000,
-0x00000041,0x21403ae8,0x3a000140,0x00000144,0x00000001,0x22081e28,0x00000000,0x00020002,
-0x00000001,0x220c1e28,0x00000000,0x00040004,0x0040015b,0x10820000,0xf92109c9,0x02372411,
-0x00000001,0x22740a28,0x00000740,0x00000000,0x00000001,0x45082aa8,0x00000ad4,0x00000000,
-0x00000041,0x22103ae8,0x3a000210,0x00000120,0x09000038,0x221c3ae8,0x3a000210,0x00000140,
-0x00000040,0x22100a28,0x0a000204,0x00004160,0x00010020,0x34000004,0x0e001400,0x00000030,
-0x0000000c,0x20e00a28,0x1e000210,0x00020002,0x00000040,0x22100a28,0x0a000210,0x000000e0,
-0x00000020,0x34000004,0x0e001400,0x00000050,0x02000010,0x20002260,0x1e000510,0x00010001,
-0x00010020,0x34000004,0x0e001400,0x00000030,0x00000040,0x20e00208,0x02000278,0x0000427c,
-0x00000009,0x21180228,0x160000e0,0x00030003,0x05000002,0x22100a28,0x0a000118,0x00000210,
-0x00000001,0x26c81608,0x00000000,0x00000000,0x00000001,0x26cc1e28,0x00000000,0x00000000,
-0x00000001,0x22141608,0x00000000,0x00000000,0x00000041,0x20e02a28,0x1e000ad4,0x00050005,
-0x00000040,0x21180a28,0x1e0000e0,0x005f005f,0x00000040,0x21200a28,0x0a000118,0x000006cc,
-0x00000041,0x21401248,0x16000120,0x00040004,0x00000040,0x22001240,0x16000140,0x02400240,
-0x05000010,0x20000a20,0x1e008000,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000070,
-0x00000041,0x20e02a28,0x1e000ad4,0x00050005,0x00000040,0x21180a28,0x1e0000e0,0x005f005f,
-0x00000040,0x21200a28,0x0a000118,0x000006cc,0x00000041,0x21401248,0x16000120,0x00040004,
-0x00000040,0x22001240,0x16000140,0x02400240,0x00000040,0x26c80208,0x020006c8,0x00008000,
-0x00000040,0x22140208,0x16000214,0x00010001,0x00000040,0x26cc0a28,0x1e0006cc,0x00010001,
-0x05000010,0x20000a20,0x1e0006cc,0x00050005,0x00010020,0x34000004,0x0e001400,0xfffffef0,
-0x06000010,0x20000200,0x16000214,0x00030003,0x00010020,0x34000004,0x0e001400,0x000002f0,
-0x00000001,0x26d00608,0x00000000,0xffffffff,0x00000001,0x26d41608,0x00000000,0x00000000,
-0x00000001,0x26cc1e28,0x00000000,0x00000000,0x00000041,0x20e02a28,0x1e000ad4,0x00050005,
-0x00000040,0x21180a28,0x1e0000e0,0x005f005f,0x00000040,0x21200a28,0x0a000118,0x000006cc,
-0x00000041,0x21401248,0x16000120,0x00040004,0x00000040,0x22001240,0x16000140,0x02400240,
-0x05000010,0x20000a20,0x1e008000,0x00000000,0x00010020,0x34000004,0x0e001400,0x000001a0,
-0x00000041,0x20e02a28,0x1e000ad4,0x00050005,0x00000040,0x21180a28,0x1e0000e0,0x005f005f,
-0x00000040,0x21200a28,0x0a000118,0x000006cc,0x00000041,0x21401248,0x16000120,0x00040004,
-0x00000040,0x22001240,0x16000140,0x02400240,0x04000010,0x20000200,0x02008000,0x000006d0,
-0x00010020,0x34000004,0x0e001400,0x00000060,0x00000041,0x20e02a28,0x1e000ad4,0x00050005,
-0x00000040,0x21180a28,0x1e0000e0,0x005f005f,0x00000040,0x21200a28,0x0a000118,0x000006cc,
-0x00000041,0x21401248,0x16000120,0x00040004,0x00000040,0x22001240,0x16000140,0x02400240,
-0x00000001,0x26d00a08,0x00008000,0x00000000,0x00000041,0x20e02a28,0x1e000ad4,0x00050005,
-0x00000040,0x21180a28,0x1e0000e0,0x005f005f,0x00000040,0x21200a28,0x0a000118,0x000006cc,
-0x00000041,0x21401248,0x16000120,0x00040004,0x00000040,0x22001240,0x16000140,0x02400240,
-0x06000010,0x20000200,0x02008000,0x000006d4,0x00010020,0x34000004,0x0e001400,0x00000060,
-0x00000041,0x20e02a28,0x1e000ad4,0x00050005,0x00000040,0x21180a28,0x1e0000e0,0x005f005f,
-0x00000040,0x21200a28,0x0a000118,0x000006cc,0x00000041,0x21401248,0x16000120,0x00040004,
-0x00000040,0x22001240,0x16000140,0x02400240,0x00000001,0x26d40a08,0x00008000,0x00000000,
-0x00000040,0x26cc0a28,0x1e0006cc,0x00010001,0x05000010,0x20000a20,0x1e0006cc,0x00050005,
-0x00010020,0x34000004,0x0e001400,0xfffffdc0,0x04000010,0x20000200,0x060006d0,0xffffffff,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x26c80208,0x020006c8,0x000046d0,
-0x00000040,0x22140208,0x1e000214,0xffffffff,0x06000010,0x20000200,0x160006d4,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x26c80208,0x020006c8,0x000046d4,
-0x00000040,0x22140208,0x1e000214,0xffffffff,0x06000010,0x20000200,0x16000214,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000060,0x00000001,0x20e002e8,0x000006c8,0x00000000,
-0x00000001,0x20e402e8,0x00000214,0x00000000,0x09000038,0x21183ae8,0x3a0000e0,0x000000e4,
-0x00000001,0x21203a08,0x00000118,0x00000000,0x00000040,0x26c80208,0x16000120,0x00010001,
-0x00000020,0x34000004,0x0e001400,0x00000120,0x02000010,0x20002a60,0x1e000ad4,0x00000000,
-0x00000001,0x26c81608,0x00000000,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000070,
-0x00000040,0x20e00208,0x1600029c,0x00680068,0x00000041,0x21181248,0x160000e0,0x00040004,
-0x00000040,0x22001240,0x16000118,0x02400240,0x00000041,0x21200a28,0x1e008000,0x00050005,
-0x00000001,0x22141608,0x00000000,0x00010001,0x0000000c,0x26c80a08,0x1e000120,0x00020002,
-0x00000020,0x34000004,0x0e001400,0x00000080,0x02000010,0x20002a60,0x1e000ad4,0x00010001,
-0x00010020,0x34000004,0x0e001400,0x00000060,0x00000040,0x20e00208,0x16000294,0x005e005e,
-0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240,
-0x00000041,0x21200a28,0x1e008000,0x00050005,0x00000001,0x22141608,0x00000000,0x00010001,
-0x0000000c,0x26c80a08,0x1e000120,0x00020002,0x00000001,0x20e002e8,0x000006c8,0x00000000,
-0x02000010,0x20002a60,0x1e000ad4,0x00010001,0x04000002,0x26c40a28,0x1e0006c4,0x00010001,
-0x09000038,0x21183ae8,0x3e0000e0,0x41a00000,0x0a000038,0x21203ae8,0x3e000118,0x3ecccccd,
-0x04000002,0x22183ae8,0x3e000120,0x3dcccccd,0x00000001,0x26c83ae8,0x00000218,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x000000b0,0x00000001,0x20e002e8,0x000006c0,0x00000000,
-0x00000001,0x20e40ae8,0x000006c4,0x00000000,0x09000038,0x21183ae8,0x3a0000e0,0x000000e4,
-0x06000010,0x20003ae0,0x3e000118,0x40400000,0x00010020,0x34000004,0x0e001400,0x000000b0,
-0x00000041,0x20e40a28,0x1e0006c4,0x00140014,0x00000001,0x20e002e8,0x000006c0,0x00000000,
-0x00000001,0x21180ae8,0x000000e4,0x00000000,0x09000038,0x21203ae8,0x3a0000e0,0x00000118,
-0x0a000038,0x22183ae8,0x3e000120,0x3ecccccd,0x00000020,0x34000004,0x0e001400,0x00000050,
-0x00000041,0x20e40a28,0x1e0006c4,0x00140014,0x00000001,0x20e002e8,0x000006c0,0x00000000,
-0x00000001,0x21180ae8,0x000000e4,0x00000000,0x09000038,0x21203ae8,0x3a0000e0,0x00000118,
-0x0a000038,0x22183ae8,0x3e000120,0x3ecccccd,0x04000002,0x22183ae8,0x3e000218,0x3dcccccd,
-0x06000010,0x20000200,0x16000ad8,0x000a000a,0x00000041,0x20e03ae8,0x3e000218,0x42c80000,
-0x09000038,0x21183ae8,0x3a0000e0,0x000006c8,0x00000001,0x26c83a08,0x00000118,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000130,0x00000040,0x20e00228,0x1e0006c8,0xff9cff9c,
-0x03000010,0x20002260,0x1e000ac0,0x00010001,0x0c000038,0x21180a28,0x0e0000e0,0x00000004,
-0x05000002,0x26cc0a28,0x1e000118,0x00090009,0x00010020,0x34000004,0x0e001400,0x000000e0,
-0x00000040,0x20e02a28,0x1e000ac2,0x00010001,0x00000040,0x22001240,0x160000e0,0x05080508,
-0x04000010,0x20002220,0x0a008000,0x000046cc,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x00000040,0x20e02a28,0x1e000ac2,0x00010001,0x00000040,0x22001240,0x160000e0,0x05080508,
-0x00000001,0xc0001e88,0x00000000,0x00020002,0x00000020,0x34000004,0x0e001400,0x00000060,
-0x00000040,0x20e02a28,0x1e000ac2,0x00010001,0x00000040,0x22001240,0x160000e0,0x05080508,
-0x00000040,0x41182268,0x0a008000,0x000006cc,0x05000002,0x21201a28,0x1e000118,0x00ff00ff,
-0x04000002,0x61400a8c,0x1e000120,0x00010001,0x00000001,0xc0002288,0x00000140,0x00000000,
-0x02000010,0x20002a60,0x1e000ad4,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000050,
-0x00000001,0x20e002e8,0x000006c0,0x00000000,0x00000001,0x20e40ae8,0x000006c4,0x00000000,
-0x09000038,0x21183ae8,0x3a0000e0,0x000000e4,0x06000010,0x20003ae0,0x3e000118,0x40400000,
-0x00010020,0x34000004,0x0e001400,0x00000340,0x00000040,0x20e02a28,0x1e000ad4,0x00150015,
-0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240,
-0x00000001,0x26cc0208,0x00008000,0x00000000,0x06000010,0x20000200,0x160006c8,0x00b400b4,
-0x00010020,0x34000004,0x0e001400,0x00000210,0x01000010,0x20002a60,0x1e000ad4,0x00020002,
-0x00010020,0x34000004,0x0e001400,0x000001f0,0x01000010,0x20002a60,0x1e000ad4,0x00010001,
-0x00010020,0x34000004,0x0e001400,0x000001d0,0x05000010,0x20003ae0,0x3e000218,0x40800000,
-0x00010020,0x34000004,0x0e001400,0x000001b0,0x00000041,0x211c2a28,0x1e000ad4,0x00050005,
-0x0000000c,0x20e00208,0x160006c0,0x00030003,0x00000040,0x21200a08,0x1e00011c,0x005f005f,
-0x0c000038,0x21180208,0x020000e0,0x000006c4,0x00000040,0x21240208,0x02000120,0x000006cc,
-0x00000041,0x21401248,0x16000124,0x00040004,0x00000040,0x22021240,0x16000140,0x02400240,
-0x00000001,0xa2000228,0x00000118,0x00000000,0x00000040,0x21600208,0x160006cc,0x00010001,
-0x0d000038,0x21800208,0x06000160,0x00000005,0x00000040,0x21a00208,0x02000120,0x00000180,
-0x00000041,0x21c01248,0x160001a0,0x00040004,0x00000040,0x22001240,0x160001c0,0x02400240,
-0x00000001,0xa0000a28,0x00008200,0x00000000,0x00000040,0x20e00208,0x160006cc,0x00020002,
-0x0d000038,0x211c0208,0x060000e0,0x00000005,0x00000040,0x21e00208,0x02000120,0x0000011c,
-0x00000041,0x21241248,0x160001e0,0x00040004,0x00000040,0x22001240,0x16000124,0x02400240,
-0x00000001,0xa0000228,0x00000118,0x00000000,0x00000040,0x21400208,0x160006cc,0x00030003,
-0x0d000038,0x21600208,0x06000140,0x00000005,0x00000040,0x21800208,0x02000120,0x00000160,
-0x00000041,0x21a01248,0x16000180,0x00040004,0x00000040,0x22001240,0x160001a0,0x02400240,
-0x00000001,0xa0000228,0x00000118,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000070,
-0x00000041,0x20e42a28,0x1e000ad4,0x00050005,0x0c000038,0x20e00208,0x020006c0,0x000006c4,
-0x00000040,0x21180a08,0x1e0000e4,0x005f005f,0x00000040,0x21200208,0x02000118,0x000006cc,
-0x00000041,0x21401248,0x16000120,0x00040004,0x00000040,0x22001240,0x16000140,0x02400240,
-0x00000001,0xa0000228,0x000000e0,0x00000000,0x00000040,0x20e00208,0x160006cc,0x00010001,
-0x00000040,0x211c2a28,0x1e000ad4,0x00150015,0x0d000038,0x21180208,0x060000e0,0x00000005,
-0x00000041,0x21201248,0x1600011c,0x00040004,0x00000040,0x22001240,0x16000120,0x02400240,
-0x00000001,0xa0000208,0x00000118,0x00000000,0x00000040,0x20e02a28,0x1e000ad4,0x00010001,
-0x00000040,0x22001240,0x160000e0,0x05080508,0x00000001,0x29402268,0x00008000,0x00000000,
-0x02000010,0x20002a60,0x1e000ad4,0x00020002,0x00000001,0x26c01628,0x00000000,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000980,0x06000010,0x20000a20,0x1e00026c,0x00000000,
-0x00000001,0x45121e88,0x00000000,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000370,
-0x00000001,0x26c01e28,0x00000000,0x00040004,0x00000001,0x26c41e28,0x00000000,0x00030003,
-0x00000040,0x20e00a28,0x1e0006c4,0x003e003e,0x0000000c,0x26c00a28,0x1e0006c0,0x00010001,
-0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240,
-0x04000010,0x20000a20,0x0a008000,0x00000210,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000040,0x26c40a28,0x0a0006c4,0x000006c0,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x26c40a28,0x0a0006c4,0x000046c0,0x03000010,0x20000a20,0x1e0006c0,0x00000000,
-0x00010020,0x34000004,0x0e001400,0xffffff50,0x00000040,0x20e00a28,0x1e0006c4,0x003e003e,
-0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240,
-0x04000010,0x20000a20,0x0a008000,0x00000210,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x26c40a28,0x1e0006c4,0x00010001,0x00000040,0x20e00a28,0x1e0006c4,0x003e003e,
-0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240,
-0x04000010,0x20000a20,0x0a008000,0x00000210,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x26c40a28,0x1e0006c4,0x00010001,0x00000001,0x220c0a28,0x000006c4,0x00000000,
-0x00000001,0x26c01e28,0x00000000,0x00020002,0x00000001,0x26c41e28,0x00000000,0x00010001,
-0x00000040,0x20e00a28,0x1e0006c4,0x00560056,0x0000000c,0x26c00a28,0x1e0006c0,0x00010001,
-0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240,
-0x00000001,0x21200ae8,0x00008000,0x00000000,0x04000010,0x20003ae0,0x3a000120,0x0000021c,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x26c40a28,0x0a0006c4,0x000006c0,
-0x00000020,0x34000004,0x0e001400,0x00000010,0x00000040,0x26c40a28,0x0a0006c4,0x000046c0,
-0x03000010,0x20000a20,0x1e0006c0,0x00000000,0x00010020,0x34000004,0x0e001400,0xffffff40,
-0x00000040,0x20e00a28,0x1e0006c4,0x00560056,0x00000041,0x21181248,0x160000e0,0x00040004,
-0x00000040,0x22001240,0x16000118,0x02400240,0x00000001,0x21200ae8,0x00008000,0x00000000,
-0x04000010,0x20003ae0,0x3a000120,0x0000021c,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x26c40a28,0x1e0006c4,0x00010001,0x00000040,0x20e00a28,0x1e0006c4,0x00560056,
-0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240,
-0x00000001,0x21200ae8,0x00008000,0x00000000,0x04000010,0x20003ae0,0x3a000120,0x0000021c,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x26c40a28,0x1e0006c4,0x00010001,
-0x00000001,0x22080a28,0x000006c4,0x00000000,0x06000010,0x20002260,0x1e000ac0,0x00010001,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x22081e28,0x00000000,0x00020002,
-0x00000041,0x20e00a28,0x1e00020c,0x00050005,0x00000040,0x21180a28,0x1e0000e0,0x00330033,
-0x00000040,0x21200a28,0x0a000118,0x00000208,0x00000040,0x22001240,0x16000120,0x05400540,
-0x00000040,0x29402268,0x2a00050b,0x00008000,0x06000010,0x20000200,0x16000214,0x00000000,
-0x00000001,0x26c01e28,0x00000000,0x00080008,0x00010020,0x34000004,0x0e001400,0x000001c0,
-0x00000001,0x22081e28,0x00000000,0x00030003,0x00000001,0x21101e28,0x00000000,0x00040004,
-0x00000040,0x20e00a28,0x1e000208,0x001f001f,0x0000000c,0x21100a28,0x1e000110,0x00010001,
-0x00000040,0x22001240,0x160000e0,0x05400540,0x04000010,0x20002200,0x02008000,0x000006c8,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x22080a28,0x0a000208,0x00000110,
-0x00000020,0x34000004,0x0e001400,0x00000010,0x00000040,0x22080a28,0x0a000208,0x00004110,
-0x03000010,0x20000a20,0x1e000110,0x00000000,0x00010020,0x34000004,0x0e001400,0xffffff60,
-0x00000040,0x20e00a28,0x1e000208,0x001f001f,0x00000040,0x22001240,0x160000e0,0x05400540,
-0x04000010,0x20002200,0x02008000,0x000006c8,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x22080a28,0x1e000208,0x00010001,0x00000040,0x20e00a28,0x1e000208,0x001f001f,
-0x00000040,0x22001240,0x160000e0,0x05400540,0x04000010,0x20002200,0x02008000,0x000006c8,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x22080a28,0x1e000208,0x00010001,
-0x00000041,0x20e00a28,0x1e00020c,0x00090009,0x00000001,0x26c00a28,0x00000208,0x00000000,
-0x00000040,0x21180a28,0x1e0000e0,0x008d008d,0x00000040,0x21200a28,0x0a000118,0x00000208,
-0x00000040,0x22001240,0x16000120,0x05400540,0x00000040,0x29401a68,0x2a000940,0x00008000,
-0x05000010,0x20000a20,0x1e0006c0,0x00070007,0x00010020,0x34000004,0x0e001400,0x00000350,
-0x03000010,0x20000a20,0x1e00020c,0x00010001,0x00000041,0x22083ae8,0x3e000218,0x3e2aaaab,
-0x00010020,0x34000004,0x0e001400,0x00000060,0x04000010,0x20003ae0,0x3e000208,0x3f99999a,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22083ee8,0x00000000,0x3f99999a,
-0x00000020,0x34000004,0x0e001400,0x000000f0,0x05000002,0x22083ae8,0x3e000208,0x3fd9999a,
-0x00000020,0x34000004,0x0e001400,0x000000d0,0x03000010,0x20000a20,0x1e00020c,0x00020002,
-0x00010020,0x34000004,0x0e001400,0x00000060,0x04000010,0x20003ae0,0x3e000208,0x3f800000,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22083ee8,0x00000000,0x3f800000,
-0x00000020,0x34000004,0x0e001400,0x00000070,0x05000002,0x22083ae8,0x3e000208,0x3fc00000,
-0x00000020,0x34000004,0x0e001400,0x00000050,0x04000010,0x20003ae0,0x3e000208,0x3e99999a,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22083ee8,0x00000000,0x3e99999a,
-0x00000020,0x34000004,0x0e001400,0x00000010,0x05000002,0x22083ae8,0x3e000208,0x3fa66666,
-0x00000001,0x20e022e8,0x0000050f,0x00000000,0x00000040,0x20e43ae8,0x3e004208,0x3f800000,
-0x03000010,0x20000a20,0x1e00020c,0x00010001,0x00000041,0x21183ae8,0x3a0000e0,0x000000e4,
-0x09000038,0x21203ae8,0x3e000118,0x42fa0000,0x00000040,0x21403ae8,0x3a000120,0x00000208,
-0x00000041,0x21603ae8,0x3a000140,0x000000e0,0x00000001,0x49403a68,0x00000160,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x29401a68,0x1e000940,0x00060006,
-0x00000020,0x34000004,0x0e001400,0x00000070,0x03000010,0x20000a20,0x1e00020c,0x00020002,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x29401a68,0x1e000940,0x00040004,
-0x00000020,0x34000004,0x0e001400,0x00000030,0x03000010,0x20000a20,0x1e00020c,0x00030003,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x29401a68,0x1e000940,0x00020002,
-0x05000002,0x20e01a28,0x1e000940,0x00f000f0,0x06000010,0x20002260,0x1e000ac0,0x00010001,
-0x04000002,0x49400a68,0x1e0000e0,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000050,
-0x00000040,0x20e01a28,0x1e000940,0x00040004,0x04000010,0x20002220,0x0a000509,0x000000e0,
-0x00010020,0x34000004,0x0e001400,0x00000060,0x00000040,0x45091a88,0x1e000940,0x00040004,
-0x00000020,0x34000004,0x0e001400,0x00000040,0x00000040,0x20e01a28,0x1e000940,0x000c000c,
-0x04000010,0x20002220,0x0a000509,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x45091a88,0x1e000940,0x000c000c,0x02000010,0x20002a60,0x1e000ad4,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000880,0x06000010,0x20002260,0x1e000ac0,0x00010001,
-0x00010020,0x34000004,0x0e001400,0x00000070,0x06000010,0x20002260,0x1e000768,0x00000000,
-0x00000001,0x29402268,0x00000509,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000070,
-0x00000040,0x20e02228,0x1e000768,0x00100010,0x00000040,0x22001240,0x160000e0,0x05080508,
-0x00000001,0x29402268,0x00008000,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000030,
-0x00000040,0x20e02a28,0x1e000ac2,0x00010001,0x00000040,0x22001240,0x160000e0,0x05080508,
-0x00000001,0x29402268,0x00008000,0x00000000,0x06000010,0x20000200,0x16000214,0x00000000,
-0x00000001,0x26c01e28,0x00000000,0x00080008,0x00010020,0x34000004,0x0e001400,0x00000420,
-0x00000001,0x220c1e28,0x00000000,0x00040004,0x00000001,0x22081e28,0x00000000,0x00030003,
-0x00000040,0x20e00a28,0x1e000208,0x002a002a,0x0000000c,0x220c0a28,0x1e00020c,0x00010001,
-0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240,
-0x04000010,0x20000a20,0x0a008000,0x00000210,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000040,0x22080a28,0x0a000208,0x0000020c,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x22080a28,0x0a000208,0x0000420c,0x03000010,0x20000a20,0x1e00020c,0x00000000,
-0x00010020,0x34000004,0x0e001400,0xffffff50,0x00000040,0x20e00a28,0x1e000208,0x002a002a,
-0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240,
-0x04000010,0x20000a20,0x0a008000,0x00000210,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x22080a28,0x1e000208,0x00010001,0x00000040,0x20e00a28,0x1e000208,0x002a002a,
-0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240,
-0x04000010,0x20000a20,0x0a008000,0x00000210,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x22080a28,0x1e000208,0x00010001,0x00000001,0x220c0a28,0x00000208,0x00000000,
-0x00000001,0x22101e28,0x00000000,0x00030003,0x00000001,0x21101e28,0x00000000,0x00040004,
-0x00000040,0x20e00a28,0x1e000210,0x00270027,0x0000000c,0x21100a28,0x1e000110,0x00010001,
-0x00000040,0x22001240,0x160000e0,0x05400540,0x04000010,0x20002200,0x02008000,0x000006c8,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x22100a28,0x0a000210,0x00000110,
-0x00000020,0x34000004,0x0e001400,0x00000010,0x00000040,0x22100a28,0x0a000210,0x00004110,
-0x03000010,0x20000a20,0x1e000110,0x00000000,0x00010020,0x34000004,0x0e001400,0xffffff60,
-0x00000040,0x20e00a28,0x1e000210,0x00270027,0x00000040,0x22001240,0x160000e0,0x05400540,
-0x04000010,0x20002200,0x02008000,0x000006c8,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x22100a28,0x1e000210,0x00010001,0x00000040,0x20e00a28,0x1e000210,0x00270027,
-0x00000040,0x22001240,0x160000e0,0x05400540,0x04000010,0x20002200,0x02008000,0x000006c8,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x22100a28,0x1e000210,0x00010001,
-0x00000041,0x20e00a28,0x1e000208,0x00090009,0x00000001,0x26c00a28,0x00000210,0x00000000,
-0x00000040,0x21180a28,0x1e0000e0,0x00de00de,0x00000040,0x21200a28,0x0a000118,0x00000210,
-0x00000040,0x22001240,0x16000120,0x05400540,0x00000040,0x29401a68,0x2a000940,0x00008000,
-0x00000040,0x29401a68,0x2a000940,0x00008000,0x00000040,0x21102268,0x2a00050b,0x00008000,
-0x00000001,0x21400a28,0x00000120,0x00000000,0x04000002,0x21101268,0x1a0004e6,0x00000110,
-0x00000040,0x22001240,0x16000140,0x05400540,0x05000002,0x450b1288,0x1a0004e8,0x00000110,
-0x00000040,0x21102268,0x2a000511,0x00008000,0x04000002,0x21101268,0x1a0004e6,0x00000110,
-0x06000010,0x20001a40,0x12000110,0x000004e8,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x21101268,0x000004e8,0x00000000,0x00000001,0x45111a88,0x00000110,0x00000000,
-0x04000010,0x20000a20,0x1e0006c0,0x00070007,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x02000010,0x20002260,0x1e000ad6,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000330,
-0x03000010,0x20000a20,0x1e00020c,0x00010001,0x00000041,0x22083ae8,0x3e000218,0x3e4ccccd,
-0x00010020,0x34000004,0x0e001400,0x00000060,0x04000010,0x20003ae0,0x3e000208,0x3f99999a,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22083ee8,0x00000000,0x3f99999a,
-0x00000020,0x34000004,0x0e001400,0x000000f0,0x05000002,0x22083ae8,0x3e000208,0x3fd9999a,
-0x00000020,0x34000004,0x0e001400,0x000000d0,0x03000010,0x20000a20,0x1e00020c,0x00020002,
-0x00010020,0x34000004,0x0e001400,0x00000060,0x04000010,0x20003ae0,0x3e000208,0x3f8ccccd,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22083ee8,0x00000000,0x3f8ccccd,
-0x00000020,0x34000004,0x0e001400,0x00000070,0x05000002,0x22083ae8,0x3e000208,0x3fc00000,
-0x00000020,0x34000004,0x0e001400,0x00000050,0x04000010,0x20003ae0,0x3e000208,0x3f000000,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22083ee8,0x00000000,0x3f000000,
-0x00000020,0x34000004,0x0e001400,0x00000010,0x05000002,0x22083ae8,0x3e000208,0x3fd9999a,
-0x00000001,0x20e022e8,0x0000050d,0x00000000,0x00000040,0x20e43ae8,0x3e004208,0x3f800000,
-0x06000010,0x20002260,0x1e00050f,0x000a000a,0x00000041,0x21183ae8,0x3a0000e0,0x000000e4,
-0x09000038,0x21203ae8,0x3e000118,0x42fa0000,0x00000040,0x22083ae8,0x3a000120,0x00000208,
-0x00010020,0x34000004,0x0e001400,0x000000b0,0x06000010,0x20000a20,0x1e00020c,0x00070007,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22083ee8,0x00000000,0x3f59999a,
-0x00000020,0x34000004,0x0e001400,0x00000070,0x06000010,0x20000a20,0x1e00020c,0x00060006,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22083ee8,0x00000000,0x3f666666,
-0x00000020,0x34000004,0x0e001400,0x00000030,0x05000010,0x20000a20,0x1e00020c,0x00040004,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x22083ee8,0x00000000,0x3f733333,
-0x00000001,0x20e022e8,0x0000050f,0x00000000,0x00000040,0x21800208,0x1e000ad8,0xffffffff,
-0x00000001,0x45121e88,0x00000000,0x00010001,0x00000041,0x21183ae8,0x3a000208,0x000000e0,
-0x00000040,0x22800208,0x12000180,0x000044fa,0x00000001,0x41203a68,0x00000118,0x00000000,
-0x04000002,0x21401a68,0x1a000120,0x00000940,0x05000002,0x21601a28,0x1e000140,0x00fa00fa,
-0x04000002,0x49400a68,0x1e000160,0x00020002,0x00000001,0x450b1a88,0x00000940,0x00000000,
-0x00000040,0x45111a88,0x1e000940,0x00040004,0x00000040,0x20e00208,0x1600027c,0x00010001,
-0x00000040,0x21200208,0x16000278,0x00010001,0x00000001,0x220c1e28,0x00000000,0x00010001,
-0x00000001,0x21101e28,0x00000000,0x00020002,0x00000001,0x211802e8,0x000000e0,0x00000000,
-0x00000001,0x214002e8,0x00000120,0x00000000,0x00000041,0x22103ae8,0x3e000118,0x42c80000,
-0x09000038,0x22103ae8,0x3a000210,0x00000140,0x00000001,0x22083a28,0x00000210,0x00000000,
-0x00000041,0x20e01248,0x1600020c,0x00020002,0x0000000c,0x21100a28,0x1e000110,0x00010001,
-0x00000040,0x22001240,0x160000e0,0x05400540,0x04000010,0x20001200,0x02008000,0x00000ad8,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x220c0a28,0x0a00020c,0x00000110,
-0x00000020,0x34000004,0x0e001400,0x00000010,0x00000040,0x220c0a28,0x0a00020c,0x00004110,
-0x03000010,0x20000a20,0x1e000110,0x00000000,0x00010020,0x34000004,0x0e001400,0xffffff60,
-0x00000041,0x20e01248,0x1600020c,0x00020002,0x00000040,0x22001240,0x160000e0,0x05400540,
-0x04000010,0x20001200,0x02008000,0x00000ad8,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x220c0a28,0x1e00020c,0x00010001,0x00000041,0x20e01248,0x1600020c,0x00020002,
-0x00000040,0x22001240,0x160000e0,0x05400540,0x04000010,0x20001200,0x02008000,0x00000ad8,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x220c0a28,0x1e00020c,0x00010001,
-0x00000040,0x20e00a28,0x1e00020c,0x00150015,0x00000040,0x22080a28,0x1e000208,0xff9cff9c,
-0x00000040,0x22001240,0x160000e0,0x05400540,0x00000041,0x22080a28,0x2a000208,0x00008000,
-0x00000001,0x21182a28,0x00008005,0x00000000,0x00000040,0x2ad80208,0x16000ad8,0x00010001,
-0x0c000038,0x21200a28,0x0a000208,0x00000118,0x00000040,0x24080208,0x16000408,0x00010001,
-0x0d000038,0x21400208,0x06000ad8,0x000000ff,0x00000040,0x22080a28,0x1e000120,0x00640064,
-0x02000010,0x20000200,0x16000140,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x06000010,0x20000200,0x16000ad8,0x00ff00ff,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x0000000c,0x227c0a08,0x1e00027c,0x00010001,0x0000000c,0x22780a08,0x1e000278,0x00010001,
-0x00000001,0x220c1e28,0x00000000,0x00020002,0x00000001,0x21101e28,0x00000000,0x00030003,
-0x00000040,0x20e00a28,0x1e00020c,0x00080008,0x0000000c,0x21100a28,0x1e000110,0x00010001,
-0x00000040,0x22001240,0x160000e0,0x05400540,0x04000010,0x20002220,0x0a008000,0x00000208,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x220c0a28,0x0a00020c,0x00000110,
-0x00000020,0x34000004,0x0e001400,0x00000010,0x00000040,0x220c0a28,0x0a00020c,0x00004110,
-0x03000010,0x20000a20,0x1e000110,0x00000000,0x00010020,0x34000004,0x0e001400,0xffffff60,
-0x00000040,0x20e00a28,0x1e00020c,0x00080008,0x00000040,0x22001240,0x160000e0,0x05400540,
-0x04000010,0x20002220,0x0a008000,0x00000208,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x220c0a28,0x1e00020c,0x00010001,0x00000040,0x20e00a28,0x1e00020c,0x00080008,
-0x00000040,0x22001240,0x160000e0,0x05400540,0x04000010,0x20002220,0x0a008000,0x00000208,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x220c0a28,0x1e00020c,0x00010001,
-0x02000010,0x20002260,0x1e000768,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000210,
-0x00000040,0x20e00a28,0x1e00020c,0x000e000e,0x00000040,0x22001240,0x160000e0,0x05400540,
-0x00000041,0x21182a28,0x1e008000,0x00020002,0x00000040,0x49401a68,0x0a000940,0x00000118,
-0x06000010,0x20002a20,0x1e008000,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x04000010,0x20000a20,0x1e0006c0,0x00070007,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000040,0x29401a68,0x1e000940,0x00040004,0x00000020,0x34000004,0x0e001400,0x00000170,
-0x04000010,0x20000a20,0x1e0006c0,0x00070007,0x00010020,0x34000004,0x0e001400,0x00000150,
-0x06000010,0x20000200,0x16000ad8,0x00640064,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x04000010,0x20000a20,0x1e000208,0x00620062,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x03000010,0x20001a60,0x1e000940,0x00140014,0x00010020,0x34000004,0x0e001400,0x000000c0,
-0x06000010,0x20000200,0x16000ad8,0x00c800c8,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x04000010,0x20000a20,0x1e000208,0x00600060,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x03000010,0x20001a60,0x1e000940,0x000c000c,0x00010020,0x34000004,0x0e001400,0x00000060,
-0x06000010,0x20000200,0x16000ad8,0x00c800c8,0x00010020,0x34000004,0x0e001400,0x00000070,
-0x04000010,0x20000a20,0x1e000208,0x005a005a,0x00010020,0x34000004,0x0e001400,0x00000050,
-0x06000010,0x20001a60,0x1e000940,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000030,
-0x06000010,0x20001a60,0x1e000940,0x00040004,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x29401a68,0x1e000940,0xfffcfffc,0x06000010,0x20002260,0x1e000ac0,0x00010001,
-0x00010020,0x34000004,0x0e001400,0x00000290,0x04000010,0x20000a20,0x1e000208,0x00640064,
-0x00000001,0x45162288,0x00000768,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000100,
-0x00000040,0x20e00a28,0x1e004208,0x00640064,0x0c000038,0x21180a28,0x0e0000e0,0x00000002,
-0x05000002,0x220c0a28,0x1e000118,0x00050005,0x06000010,0x20002220,0x0a000509,0x0000020c,
-0x00010020,0x34000004,0x0e001400,0x000001b0,0x00000040,0x40e01a68,0x0a000940,0x0000420c,
-0x02000010,0x20002260,0x1e000768,0x00000000,0x05000002,0x21181a28,0x1e0000e0,0x00ff00ff,
-0x04000002,0x49400a68,0x1e000118,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000040,0x65092288,0x0a000509,0x0000420c,0x00000020,0x34000004,0x0e001400,0x00000140,
-0x00000040,0x20e02228,0x1e000768,0x00100010,0x00000040,0x22001240,0x160000e0,0x05080508,
-0x00000001,0xc0001a88,0x00000940,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000100,
-0x00000040,0x20e00a28,0x1e000208,0xff9cff9c,0x02000010,0x20002260,0x1e000768,0x00000000,
-0x0c000038,0x21180a28,0x0e0000e0,0x00000002,0x05000002,0x220c0a28,0x1e000118,0x00050005,
-0x00000040,0x41201a68,0x0a000940,0x0000020c,0x05000002,0x21401a28,0x1e000120,0x00ff00ff,
-0x04000002,0x49400a68,0x1e000140,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000050,
-0x0c000038,0x20e00a28,0x0e00020c,0x00000003,0x00000040,0x41182268,0x0a000509,0x000000e0,
-0x05000002,0x21201a28,0x1e000118,0x00ff00ff,0x04000002,0x65090a88,0x1e000120,0x00010001,
-0x00000020,0x34000004,0x0e001400,0x00000030,0x00000040,0x20e02228,0x1e000768,0x00100010,
-0x00000040,0x22001240,0x160000e0,0x05080508,0x00000001,0xc0001a88,0x00000940,0x00000000,
-0x02000010,0x20002260,0x1e000768,0x00000000,0x00010020,0x34000004,0x0e001400,0x000003e0,
-0x0000000c,0x20e01a28,0x1e000940,0x00050005,0x00000040,0x220c0a28,0x1e0000e0,0x000c000c,
-0x00000040,0x49401a68,0x0a000940,0x0000420c,0x00000020,0x34000004,0x0e001400,0x000003a0,
-0x00000040,0x20e00a08,0x1e000ac8,0x00020002,0x02000010,0x20000200,0x02000ad8,0x000000e0,
-0x00010020,0x34000004,0x0e001400,0x00000190,0x0000000c,0x20e01a28,0x1e000940,0x00020002,
-0x0000000c,0x211c1a28,0x1e000940,0x00030003,0x00000040,0x21601a28,0x1e000940,0xffc4ffc4,
-0x0000000c,0x21241a28,0x1e000940,0x00040004,0x04000010,0x20001a60,0x1e000940,0x00180018,
-0x00000040,0x21180a28,0x1e0000e0,0x000c000c,0x04000002,0x21800a28,0x0a000160,0x00000adc,
-0x00000040,0x21200a28,0x0a000118,0x0000011c,0x04000002,0x2adc0a28,0x1e000180,0x00280028,
-0x00000040,0x21400a28,0x0a000120,0x00000124,0x05000002,0x220c0a28,0x1e000140,0x003c003c,
-0x00010020,0x34000004,0x0e001400,0x00000030,0x0000000c,0x20e01a28,0x1e000940,0x00010001,
-0x00000040,0x49401a68,0x0a000940,0x000040e0,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x49401a68,0x0a000940,0x0000420c,0x06000010,0x20000a20,0x1e000208,0x00640064,
-0x05000002,0x49401a68,0x0a000940,0x00000adc,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000040,0x20e00a28,0x1e000208,0xff9cff9c,0x00000040,0x49401a68,0x0a000940,0x000000e0,
-0x05000002,0x20e01a28,0x1e000940,0x00ff00ff,0x04000002,0x49400a68,0x1e0000e0,0x00010001,
-0x00000001,0x45111a88,0x00000940,0x00000000,0x00000020,0x34000004,0x0e001400,0x000001e0,
-0x00000040,0x20e00a08,0x1e000ac4,0x00020002,0x02000010,0x20000200,0x02000ad8,0x000000e0,
-0x00010020,0x34000004,0x0e001400,0x00000180,0x00000040,0x20e01a28,0x1e000940,0xffd8ffd8,
-0x04000010,0x20000a20,0x0a000adc,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000040,0x2adc1a28,0x1e000940,0xffd8ffd8,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x04000002,0x2adc0a28,0x1e000adc,0x003c003c,0x04000010,0x20001a60,0x1e000940,0x00180018,
-0x00010020,0x34000004,0x0e001400,0x00000030,0x0000000c,0x20e01a28,0x1e000940,0x00020002,
-0x00000040,0x49401a68,0x0a000940,0x000040e0,0x00000020,0x34000004,0x0e001400,0x00000030,
-0x0000000c,0x20e01a28,0x1e000940,0x00020002,0x00000040,0x21180a28,0x1e0000e0,0x00060006,
-0x00000040,0x49401a68,0x0a000940,0x00004118,0x06000010,0x20000a20,0x1e000208,0x00640064,
-0x05000002,0x49401a68,0x0a000940,0x00000adc,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000040,0x20e00a28,0x1e000208,0xff9cff9c,0x00000040,0x49401a68,0x0a000940,0x000000e0,
-0x00000040,0x20e02228,0x1e000511,0x00100010,0x04000010,0x20001a20,0x0a000940,0x000000e0,
-0x00010020,0x34000004,0x0e001400,0x00000050,0x00000001,0x45121e88,0x00000000,0x00010001,
-0x00000020,0x34000004,0x0e001400,0x00000030,0x02000010,0x20000200,0x16000ad8,0x00020002,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x45111a88,0x00000940,0x00000000,
-0x06000010,0x20000a20,0x1e0002b8,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000030,
-0x06000010,0x20001a60,0x1e000940,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x29401a68,0x1e000940,0xffffffff,0x02000010,0x20002260,0x1e000510,0x00030003,
-0x00010020,0x34000004,0x0e001400,0x000000e0,0x00000040,0x20e00a08,0x1e000ac8,0x00020002,
-0x01000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000070,
-0x01000010,0x20002a60,0x1e000ad4,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000050,
-0x00000040,0x20e00a08,0x1e000ac4,0x00020002,0x01000010,0x20000200,0x02000ad8,0x000000e0,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x04000002,0x29401268,0x1a0004ea,0x00000940,
-0x00000020,0x34000004,0x0e001400,0x00000040,0x00000040,0x20e01228,0x1e0004ea,0xffe0ffe0,
-0x04000010,0x20001a20,0x0a000940,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x29401268,0x1e0004ea,0xffe0ffe0,0x00000040,0x20e02a28,0x1e000ad4,0x001a001a,
-0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240,
-0x0000000c,0x22080228,0x16008000,0x00030003,0x00000040,0x21202a28,0x1e000ad4,0x00010001,
-0x00000040,0x22001240,0x16000120,0x05080508,0x00000001,0x22102228,0x00008000,0x00000000,
-0x02000010,0x20002a60,0x1e000ad4,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000070,
-0x02000010,0x20002a60,0x1e000ac2,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000050,
-0x06000010,0x20001a60,0x22000940,0x00000509,0x00010020,0x34000004,0x0e001400,0x00000030,
-0x00000041,0x20e02228,0x1e000509,0x00030003,0x00000040,0x21181a28,0x0a000940,0x000000e0,
-0x0000000c,0x49400a68,0x1e000118,0x00020002,0x04000002,0x29401268,0x1a0004e6,0x00000940,
-0x00000001,0x220c1e28,0x00000000,0x00000000,0x00000001,0x21101e28,0x00000000,0x00000000,
-0x05000002,0x29401268,0x1a0004e8,0x00000940,0x00000040,0x22001240,0x16000110,0x07600760,
-0x00000040,0x40e02aa8,0x2a008000,0x00004760,0x00000040,0x21100a28,0x1e000110,0x00010001,
-0x05000002,0x220c2a28,0x0a0000e0,0x0000020c,0x05000010,0x20000a20,0x1e000110,0x00080008,
-0x00010020,0x34000004,0x0e001400,0xffffffa0,0x00000040,0x20e00a28,0x1a00020c,0x00000940,
-0x04000010,0x20000a20,0x1a0000e0,0x0000005c,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000040,0x20e01a28,0x0a00005c,0x0000420c,0x00000040,0x49401a68,0x0a000940,0x000000e0,
-0x01000010,0x20000a20,0x1e000208,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000100,
-0x01000010,0x20000a20,0x1e000210,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000e0,
-0x04000002,0x29401a68,0x1e000940,0x00010001,0x00000041,0x20e00a28,0x0a000208,0x00000210,
-0x0000000c,0x211c0a28,0x1e000204,0x00030003,0x0000000c,0x21200a28,0x1e0002b8,0x00030003,
-0x00000001,0x20e41a28,0x00000940,0x00000000,0x0c000038,0x21180a28,0x0a0000e0,0x000000e4,
-0x05000002,0x22040a28,0x0a000118,0x0000011c,0x06000010,0x20000a20,0x0a000120,0x00000204,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x0000000c,0x21100a28,0x1e0002b8,0x00030003,
-0x00000020,0x34000004,0x0e001400,0x00000010,0x00000001,0x21100a28,0x00000204,0x00000000,
-0x00000001,0x22040a28,0x00000110,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x0000000c,0x22040a28,0x1e000260,0x00030003,0x00000040,0x20e00a08,0x1e000ac8,0x00020002,
-0x01000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x000001a0,
-0x01000010,0x20002a60,0x1e000ad4,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000180,
-0x01000010,0x20002260,0x1e000512,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000160,
-0x00000040,0x20e00a08,0x1e000ac4,0x00020002,0x02000010,0x20000200,0x02000ad8,0x000000e0,
-0x00010020,0x34000004,0x0e001400,0x00000080,0x01000010,0x20002260,0x1e000510,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000030,0x00000040,0x20e00a08,0x1e000acc,0x00090009,
-0x00000041,0x21100228,0x02000260,0x000000e0,0x00000020,0x34000004,0x0e001400,0x00000100,
-0x00000040,0x20e00a08,0x1e000acc,0x00060006,0x00000041,0x21100228,0x02000260,0x000000e0,
-0x00000020,0x34000004,0x0e001400,0x000000d0,0x01000010,0x20002260,0x1e000510,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000060,0x06000010,0x20000a20,0x1e000acc,0x00030003,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000009,0x21100228,0x16000ad0,0x00030003,
-0x00000020,0x34000004,0x0e001400,0x00000070,0x00000009,0x21100228,0x16000ad0,0x00020002,
-0x00000020,0x34000004,0x0e001400,0x00000050,0x0000000c,0x20e00208,0x16000ad0,0x00010001,
-0x00000040,0x21100228,0x02000ad0,0x000000e0,0x00000020,0x34000004,0x0e001400,0x00000020,
-0x00000040,0x20e00a08,0x1e000acc,0x000a000a,0x00000041,0x21100228,0x02000260,0x000000e0,
-0x0000000c,0x21100a28,0x1e000110,0x00030003,0x00000001,0x2148160c,0x00000000,0x000c000c,
-0x00000001,0x2168160c,0x00000000,0x00180018,0x00000001,0x2188160c,0x00000000,0x00240024,
-0x00000001,0x2128160c,0x00000000,0x00000000,0x00000040,0x22000204,0x06000100,0x02480400,
-0x06000010,0x20000a20,0x0a000204,0x00000110,0x0a800031,0x28403a6c,0x00000140,0x00000200,
-0x0a800031,0x26c03a6c,0x00000180,0x00000200,0x0a800031,0x27c03a6c,0x00000160,0x00000200,
-0x0a800031,0x28c03a6c,0x00000120,0x00000200,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x0c000038,0x22040a28,0x0e000110,0x00000002,0x00000040,0x20e00a28,0x0a000110,0x00004204,
-0x04000010,0x20000a20,0x1e0000e0,0x01000100,0x00010020,0x34000004,0x0e001400,0x000005a0,
-0x00000041,0x20e00a28,0x0a000208,0x00000210,0x00000040,0x20e40a28,0x1e000204,0x00010001,
-0x04000010,0x20001a60,0x1e000940,0x00300030,0x0c000038,0x21180a28,0x0a0000e0,0x000000e4,
-0x00000040,0x21200a28,0x1a000118,0x00004940,0x0000000c,0x21400a28,0x1e002120,0x00010001,
-0x05000002,0x22040a28,0x1e000140,0x003c003c,0x0000000c,0x21800a28,0x1e000204,0x00040004,
-0x0000000c,0x21600a28,0x1e000204,0x00050005,0x0000000c,0x21c00a28,0x1e000204,0x00030003,
-0x04000002,0x61a00a8c,0x1e000180,0x00040004,0x04000002,0x69180a88,0x1e000160,0x00030003,
-0x04000002,0x691c0a88,0x1e0001c0,0x00060006,0x00000001,0x491a2288,0x000001a0,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000060,0x0000000c,0x20e00a28,0x1e000204,0x00020002,
-0x04000002,0x60e40a8c,0x1e0000e0,0x00080008,0x04000002,0x61180a8c,0x1e0000e0,0x00070007,
-0x00000001,0x491e2288,0x000000e4,0x00000000,0x00000001,0x489e2288,0x00000118,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x00000070,0x0000000c,0x20e00a28,0x1e000204,0x00020002,
-0x04000002,0x20e40a28,0x1e0000e0,0x00080008,0x04000002,0x21200a28,0x1e0000e0,0x00070007,
-0x05000002,0x61180a8c,0x1e0000e4,0x000c000c,0x05000002,0x61400a8c,0x1e000120,0x000c000c,
-0x00000001,0x491e2288,0x00000118,0x00000000,0x00000001,0x489e2288,0x00000140,0x00000000,
-0x00000040,0x21202228,0x2200091a,0x0000091c,0x00000040,0x21802228,0x2200091c,0x0000091e,
-0x00000040,0x20e02228,0x22000918,0x0000091a,0x06000010,0x20002260,0x1e00076c,0x00010001,
-0x00000040,0x491f2288,0x1e00091e,0x00010001,0x0c000038,0x21400a28,0x0e000120,0x00000002,
-0x0c000038,0x21a00a28,0x0e000180,0x00000002,0x0c000038,0x21180a28,0x0e0000e0,0x00000002,
-0x00000001,0x61600a8c,0x00000140,0x00000000,0x00000001,0x691d0a88,0x000001a0,0x00000000,
-0x00000001,0x69190a88,0x00000118,0x00000000,0x00000001,0x491b2288,0x00000160,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000940,0x0000000c,0x21180a28,0x1e000204,0x00040004,
-0x0000000c,0x20e00a28,0x1e000204,0x00050005,0x0000000c,0x21400a28,0x1e000204,0x00030003,
-0x00000001,0x481a1e88,0x00000000,0x00030003,0x00000001,0x481c1e88,0x00000000,0x00040004,
-0x00000001,0x47181e88,0x00000000,0x00010001,0x00000001,0x48181e88,0x00000000,0x00020002,
-0x04000002,0x61200a8c,0x1e000118,0x00040004,0x04000002,0x68980a88,0x1e0000e0,0x00030003,
-0x04000002,0x689c0a88,0x1e000140,0x00050005,0x00000001,0x481e1e88,0x00000000,0x00060006,
-0x00000040,0x489f2288,0x1e00089e,0x00010001,0x00000001,0x471a2288,0x00000718,0x00000000,
-0x00000001,0x471c2288,0x00000818,0x00000000,0x00000001,0x489a2288,0x00000120,0x00000000,
-0x00000040,0x21202228,0x22000818,0x0000081a,0x00000040,0x20e02228,0x2200089c,0x0000089e,
-0x00000001,0x471e2288,0x00000818,0x00000000,0x00000040,0x481f2288,0x1e00081e,0x00010001,
-0x00000040,0x21602228,0x22000898,0x0000089a,0x00000040,0x21a02228,0x2200089a,0x0000089c,
-0x0c000038,0x21180a28,0x0e0000e0,0x00000002,0x0c000038,0x21400a28,0x0e000120,0x00000002,
-0x00000040,0x21202228,0x22000718,0x0000071a,0x0c000038,0x21800a28,0x0e000160,0x00000002,
-0x00000040,0x21602228,0x2200081a,0x0000081c,0x0c000038,0x21c00a28,0x0e0001a0,0x00000002,
-0x00000040,0x471f2288,0x1e00071e,0x00010001,0x00000001,0x689d0a88,0x00000118,0x00000000,
-0x00000040,0x21182228,0x2200081c,0x0000081e,0x00000001,0x68190a88,0x00000140,0x00000000,
-0x0c000038,0x21400a28,0x0e000120,0x00000002,0x00000001,0x68990a88,0x00000180,0x00000000,
-0x0c000038,0x21800a28,0x0e000160,0x00000002,0x0c000038,0x21a00a28,0x0e000118,0x00000002,
-0x00000001,0x61e00a8c,0x000001c0,0x00000000,0x00000001,0x67190a88,0x00000140,0x00000000,
-0x00000001,0x60e00a8c,0x00000180,0x00000000,0x00000040,0x21802228,0x2200071c,0x0000071e,
-0x00000001,0x681d0a88,0x000001a0,0x00000000,0x00000001,0x489b2288,0x000001e0,0x00000000,
-0x00000001,0x481b2288,0x000000e0,0x00000000,0x00000040,0x20e02228,0x2200071a,0x0000071c,
-0x0c000038,0x21a00a28,0x0e000180,0x00000002,0x0c000038,0x21600a28,0x0e0000e0,0x00000002,
-0x00000001,0x671d0a88,0x000001a0,0x00000000,0x00000001,0x61180a8c,0x00000160,0x00000000,
-0x00000001,0x471b2288,0x00000118,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000630,
-0x00000001,0x22081e28,0x00000000,0x00020002,0x00000001,0x22041e28,0x00000000,0x00010001,
-0x00000040,0x20e00a28,0x1e000204,0x002f002f,0x00000001,0x41181a88,0x00000940,0x00000000,
-0x0000000c,0x22080a28,0x1e000208,0x00010001,0x00000040,0x22001240,0x160000e0,0x05400540,
-0x04000010,0x20002220,0x22008000,0x00000118,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000040,0x22040a28,0x0a000204,0x00000208,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x22040a28,0x0a000204,0x00004208,0x03000010,0x20000a20,0x1e000208,0x00000000,
-0x00010020,0x34000004,0x0e001400,0xffffff50,0x00000040,0x20e00a28,0x1e000204,0x002f002f,
-0x00000001,0x41181a88,0x00000940,0x00000000,0x00000040,0x22001240,0x160000e0,0x05400540,
-0x04000010,0x20002220,0x22008000,0x00000118,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x22040a28,0x1e000204,0x00010001,0x00000040,0x20e00a28,0x1e000204,0x002f002f,
-0x00000001,0x41181a88,0x00000940,0x00000000,0x00000040,0x22001240,0x160000e0,0x05400540,
-0x04000010,0x20002220,0x22008000,0x00000118,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x22040a28,0x1e000204,0x00010001,0x00000040,0x60e00a8c,0x1e000204,0x00050005,
-0x04000010,0x20001a60,0x1e000940,0x00310031,0x00000040,0x691c0a88,0x1e000204,0x00080008,
-0x00000001,0x49181e88,0x00000000,0x00030003,0x00000001,0x491a2288,0x000000e0,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000050,0x00000040,0x61180a8c,0x1e000204,0x00090009,
-0x00000040,0x60e00a8c,0x1e000204,0x000a000a,0x00000001,0x489e2288,0x00000118,0x00000000,
-0x00000001,0x491e2288,0x000000e0,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060,
-0x00000040,0x21200a28,0x1e000204,0x00090009,0x00000040,0x20e00a28,0x1e000204,0x000a000a,
-0x05000002,0x61400a8c,0x1e000120,0x000c000c,0x05000002,0x61180a8c,0x1e0000e0,0x000c000c,
-0x00000001,0x489e2288,0x00000140,0x00000000,0x00000001,0x491e2288,0x00000118,0x00000000,
-0x00000040,0x21202228,0x2200091a,0x0000091c,0x00000040,0x21802228,0x2200091c,0x0000091e,
-0x00000040,0x20e02228,0x22000918,0x0000091a,0x06000010,0x20002260,0x1e00076c,0x00010001,
-0x00000040,0x491f2288,0x1e00091e,0x00010001,0x0c000038,0x21400a28,0x0e000120,0x00000002,
-0x0c000038,0x21a00a28,0x0e000180,0x00000002,0x0c000038,0x21180a28,0x0e0000e0,0x00000002,
-0x00000001,0x61600a8c,0x00000140,0x00000000,0x00000001,0x691d0a88,0x000001a0,0x00000000,
-0x00000001,0x69190a88,0x00000118,0x00000000,0x00000001,0x491b2288,0x00000160,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x000002c0,0x00000040,0x60e00a8c,0x1e000204,0x00040004,
-0x00000001,0x48981e88,0x00000000,0x00030003,0x00000040,0x689c0a88,0x1e000204,0x00070007,
-0x00000040,0x681c0a88,0x1e000204,0x00060006,0x00000001,0x471c1e88,0x00000000,0x00040004,
-0x00000001,0x471e1e88,0x00000000,0x00060006,0x00000001,0x47181e88,0x00000000,0x00020002,
-0x00000001,0x489a2288,0x000000e0,0x00000000,0x00000040,0x60e00a8c,0x1e000204,0x00080008,
-0x00000001,0x471a2288,0x00000898,0x00000000,0x00000040,0x21a02228,0x2200089c,0x0000089e,
-0x00000040,0x489f2288,0x1e00089e,0x00010001,0x00000001,0x48182288,0x00000898,0x00000000,
-0x00000040,0x471f2288,0x1e00071e,0x00010001,0x00000040,0x21402228,0x2200089a,0x0000089c,
-0x00000040,0x21182228,0x22000898,0x0000089a,0x00000001,0x481a2288,0x0000089a,0x00000000,
-0x00000001,0x481e2288,0x000000e0,0x00000000,0x00000040,0x20e02228,0x22000718,0x0000071a,
-0x0c000038,0x21c00a28,0x0e0001a0,0x00000002,0x0c000038,0x21600a28,0x0e000140,0x00000002,
-0x0c000038,0x21200a28,0x0e000118,0x00000002,0x00000040,0x21182228,0x2200081a,0x0000081c,
-0x00000040,0x481f2288,0x1e00081e,0x00010001,0x00000001,0x689d0a88,0x000001c0,0x00000000,
-0x00000001,0x61800a8c,0x00000160,0x00000000,0x00000040,0x21602228,0x2200081c,0x0000081e,
-0x00000001,0x68990a88,0x00000120,0x00000000,0x0c000038,0x21200a28,0x0e000118,0x00000002,
-0x0c000038,0x21180a28,0x0e0000e0,0x00000002,0x00000001,0x489b2288,0x00000180,0x00000000,
-0x0c000038,0x21800a28,0x0e000160,0x00000002,0x00000001,0x48192288,0x00000899,0x00000000,
-0x00000001,0x61400a8c,0x00000120,0x00000000,0x00000040,0x21202228,0x2200071a,0x0000071c,
-0x00000001,0x67190a88,0x00000118,0x00000000,0x00000001,0x681d0a88,0x00000180,0x00000000,
-0x00000040,0x21802228,0x2200071c,0x0000071e,0x00000001,0x481b2288,0x00000140,0x00000000,
-0x0c000038,0x21400a28,0x0e000120,0x00000002,0x0c000038,0x21a00a28,0x0e000180,0x00000002,
-0x00000001,0x61600a8c,0x00000140,0x00000000,0x00000001,0x671d0a88,0x000001a0,0x00000000,
-0x00000001,0x471b2288,0x00000160,0x00000000,0x02000010,0x20002260,0x1e000510,0x00000000,
-0x00000001,0x22101e28,0x00000000,0x00000000,0x00000001,0x22140228,0x0000043c,0x00000000,
-0x00000001,0x22040228,0x000004c0,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000340,
-0x00000040,0x20e00a08,0x1e000204,0x00020002,0x00000041,0x22100228,0x16000260,0x000c000c,
-0x04000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000060,
-0x00000040,0x20e00208,0x16000ad8,0x00800080,0x00000040,0x24400208,0x02000440,0x00000200,
-0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240,
-0x00000001,0xa0000208,0x00000200,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000150,
-0x00000040,0x24400208,0x02000440,0x00004448,0x06000040,0x20000a20,0x1e000204,0xffffffff,
-0x00000001,0x22081e28,0x00000000,0x00000000,0x00000040,0x24400208,0x02000440,0x00000200,
-0x00010020,0x34000004,0x0e001400,0x000000c0,0x00000040,0x20e00a28,0x1e000208,0x00830083,
-0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240,
-0x00000001,0x21200208,0x00008000,0x00000000,0x00000040,0x21240a28,0x1e000208,0x00820082,
-0x00000041,0x21401248,0x16000124,0x00040004,0x00000040,0x22001240,0x16000140,0x02400240,
-0x00000001,0xa0000208,0x00000120,0x00000000,0x00000040,0x22080a28,0x1e000208,0x00010001,
-0x00000040,0x21600a28,0x1e000204,0xffffffff,0x05000010,0x20000a20,0x0a000208,0x00000160,
-0x00010020,0x34000004,0x0e001400,0xffffff40,0x00000040,0x20e00a28,0x1e000208,0x00820082,
-0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240,
-0x00000001,0xa0000208,0x00000200,0x00000000,0x00000040,0x20e00a08,0x1e000204,0x00010001,
-0x05000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000120,
-0x00000040,0x22100228,0x02000440,0x00004444,0x03000010,0x20001a60,0x1e000940,0x00040004,
-0x00000041,0x20e00a28,0x1e000210,0x00040004,0x0c000038,0x21180a28,0x0a0000e0,0x00000260,
-0x04000002,0x21200a28,0x1e000118,0xfffcfffc,0x05000002,0x21100a28,0x1e000120,0x00040004,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x05000010,0x20000a20,0x1e000110,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x49401a68,0x0a000940,0x00000110,
-0x00000040,0x20e00a08,0x0a000214,0x00004210,0x0000000c,0x21180228,0x16000260,0x00010001,
-0x00000040,0x22100228,0x020000e0,0x00000448,0x04000010,0x20000a20,0x0a000210,0x00000118,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x0000000c,0x22100228,0x16000260,0x00010001,
-0x04000002,0x29401268,0x1a0004e6,0x00000940,0x05000002,0x29401268,0x1a0004e8,0x00000940,
-0x00000040,0x20e00a08,0x1e000ac8,0x00030003,0x02000010,0x20000200,0x02000ad8,0x000000e0,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x0000000c,0x20e01208,0x160004dc,0x00010001,
-0x00000040,0x22ac0208,0x020002ac,0x000000e0,0x00000040,0x20e00a08,0x1e000ac8,0x00020002,
-0x01000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x000001f0,
-0x01000010,0x20002a60,0x1e000ad4,0x00020002,0x00010020,0x34000004,0x0e001400,0x000001d0,
-0x01000010,0x20002260,0x1e000512,0x00010001,0x00010020,0x34000004,0x0e001400,0x000001b0,
-0x00000040,0x20e00a08,0x1e000ac4,0x00020002,0x02000010,0x20000200,0x02000ad8,0x000000e0,
-0x00010020,0x34000004,0x0e001400,0x00000080,0x01000010,0x20002260,0x1e000510,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000030,0x00000040,0x20e00a08,0x1e000acc,0x00090009,
-0x00000041,0x21100208,0x02000260,0x000000e0,0x00000020,0x34000004,0x0e001400,0x00000190,
-0x00000040,0x20e00a08,0x1e000acc,0x00060006,0x00000041,0x21100208,0x02000260,0x000000e0,
-0x00000020,0x34000004,0x0e001400,0x00000160,0x01000010,0x20002260,0x1e000510,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x000000b0,0x06000010,0x20000a20,0x1e000acc,0x00030003,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000009,0x21100208,0x16000ad0,0x00030003,
-0x00000020,0x34000004,0x0e001400,0x00000010,0x00000009,0x21100208,0x16000ad0,0x00020002,
-0x06000010,0x20002260,0x1e000ac0,0x00010001,0x00010020,0x34000004,0x0e001400,0x000000d0,
-0x02000010,0x20002260,0x1e000768,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000b0,
-0x00000040,0x21100208,0x02000110,0x00000110,0x00000020,0x34000004,0x0e001400,0x00000090,
-0x0000000c,0x20e00208,0x16000ad0,0x00010001,0x00000040,0x21100208,0x02000ad0,0x000000e0,
-0x00000020,0x34000004,0x0e001400,0x00000060,0x00000040,0x20e00a08,0x1e000acc,0x00090009,
-0x02000010,0x20002a60,0x1e000ad4,0x00020002,0x00000041,0x21100208,0x02000260,0x000000e0,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000009,0x20e00208,0x16000260,0x00020002,
-0x00000040,0x21100208,0x02000110,0x000000e0,0x02000010,0x20002260,0x1e000510,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000040,0x00000040,0x20e00a08,0x1e000204,0x00010001,
-0x05000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x21100a08,0x00000210,0x00000000,0x0000000c,0x22040208,0x16000110,0x00080008,
-0x00000001,0x42021e88,0x00000000,0x00000000,0x06000010,0x20000200,0x16000204,0x007f007f,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x0000000c,0x22040a08,0x1e000204,0x00070007,
-0x00000001,0x42021e88,0x00000000,0x00010001,0x00000001,0x21201ae8,0x00000940,0x00000000,
-0x00000005,0x20e42228,0x1e000202,0x00010001,0x00000005,0x20e00208,0x16000204,0x3fff3fff,
-0x00000001,0x29141608,0x00000000,0x00000000,0x04000010,0x20002260,0x1e00002b,0x00020002,
-0x0000000c,0x42001a88,0x1e000940,0x00010001,0x00000001,0x48f61a88,0x00000940,0x00000000,
-0x00000041,0x21243ae8,0x3e000120,0x3ecb1d56,0x00000040,0x21443ae8,0x3e000120,0xc2ff0000,
-0x00000009,0x21180a08,0x1e0000e4,0x001f001f,0x00000001,0x29200208,0x00000914,0x00000000,
-0x00000040,0x21403ae8,0x3e000124,0xc197e502,0x00000041,0x21643ae8,0x3e000144,0x37229ad3,
-0x00000041,0x21483ae8,0x3e000144,0x3a047cd2,0x00000006,0x29100208,0x020000e0,0x00000118,
-0x00000041,0x21803ae8,0x3a000164,0x00000144,0x0040015b,0x0b020000,0x7920a1c9,0x02972414,
-0x0040015b,0x0d020400,0x7920b1c9,0x03072414,0x00000001,0x20e03a28,0x000001a0,0x00000000,
-0x00000001,0x42040a68,0x000000e0,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000a0,
-0x02000010,0x20002260,0x1e00002b,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x05000010,0x20001a60,0x1e000940,0x00280028,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x42001a88,0x00000204,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000030,
-0x00000001,0x20e01a28,0x00000940,0x00000000,0x0c000038,0x21180a28,0x0e0000e0,0x00000004,
-0x00000001,0x62000a88,0x00000118,0x00000000,0x05000002,0x42002288,0x1e000200,0x003f003f,
-0x04000010,0x20001a60,0x1e000940,0x00280028,0x00010020,0x34000004,0x0e001400,0x00000030,
-0x00000001,0x20e01a28,0x00000940,0x00000000,0x0c000038,0x21180a28,0x0e0000e0,0x00000004,
-0x00000001,0x42040a68,0x00000118,0x00000000,0x00000009,0x20e02228,0x1e000200,0x00010001,
-0x05000002,0x22041a68,0x1e000204,0x003f003f,0x00000001,0x22081e28,0x00000000,0x00000000,
-0x00000006,0x6118228c,0x0a0008ca,0x000000e0,0x00000001,0x48ca2288,0x00000118,0x00000000,
-0x00000040,0x20e00a28,0x1e000208,0x00580058,0x00000040,0x22001240,0x160000e0,0x08c008c0,
-0x00000040,0x22101a68,0x22000940,0x00008000,0x04000010,0x20001a60,0x1e000210,0x00280028,
-0x00010020,0x34000004,0x0e001400,0x00000040,0x00000001,0x20e01a28,0x00000210,0x00000000,
-0x0c000038,0x21180a28,0x0e0000e0,0x00000004,0x00000001,0x42100a68,0x00000118,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x000000b0,0x00000001,0x20e01ae8,0x00000210,0x00000000,
-0x00000041,0x20e43ae8,0x3e0000e0,0x3ecb1d56,0x00000040,0x211c3ae8,0x3e0000e0,0xc2ff0000,
-0x00000040,0x21183ae8,0x3e0000e4,0xc197e502,0x00000041,0x21443ae8,0x3e00011c,0x37229ad3,
-0x00000041,0x21203ae8,0x3e00011c,0x3a047cd2,0x00000041,0x21603ae8,0x3a000144,0x0000011c,
-0x0040015b,0x0a020000,0xf9208dc9,0x02472411,0x0040015b,0x0c020400,0xf920a1c9,0x02c72411,
-0x00000001,0x21a03a28,0x00000180,0x00000000,0x00000001,0x42100a68,0x000001a0,0x00000000,
-0x05000002,0x22101a68,0x1e000210,0x003f003f,0x00000040,0x20e40a28,0x1e000208,0x00640064,
-0x00000040,0x20e01a28,0x1a000210,0x00004204,0x00000040,0x22001240,0x160000e4,0x08c008c0,
-0x00000001,0x61180a8c,0x000000e0,0x00000000,0x00000001,0xc0002288,0x00000118,0x00000000,
-0x00000040,0x22080a28,0x1e000208,0x00010001,0x05000010,0x20000a20,0x1e000208,0x00080008,
-0x00010020,0x34000004,0x0e001400,0xfffffe30,0x00000001,0x292c1608,0x00000000,0x00000000,
-0x00000001,0x2128160c,0x00000000,0x00000000,0x00000001,0x49371e88,0x00000000,0x001c001c,
-0x00000001,0x49301e88,0x00000000,0x00000000,0x00000001,0x49361e88,0x00000000,0x00180018,
-0x00000001,0x49351e88,0x00000000,0x00140014,0x00000001,0x49341e88,0x00000000,0x00100010,
-0x00000001,0x49331e88,0x00000000,0x000c000c,0x00000001,0x49321e88,0x00000000,0x00080008,
-0x00000001,0x49311e88,0x00000000,0x00040004,0x00000040,0x22000204,0x06000104,0x020a0400,
-0x00000001,0x29380208,0x0000092c,0x00000000,0x00000001,0x293c0208,0x0000092c,0x00000000,
-0x00000001,0x2148160c,0x00000000,0x00080008,0x00000001,0x2168160c,0x00000000,0x00080008,
-0x06000010,0x20002260,0x1e00076c,0x00010001,0x0a800033,0x00046054,0x00002124,0x00000000,
-0x00000040,0x22000204,0x06000100,0x02280300,0x0a800031,0x21803a6c,0x00000140,0x00000200,
-0x00000040,0x22000204,0x06000104,0x020a0300,0x0a800033,0x0000c054,0x00002162,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000910,0x00000009,0x20e02228,0x1e000200,0x00010001,
-0x00200001,0x28900208,0x00450910,0x00000000,0x00000001,0x22081e28,0x00000000,0x00000000,
-0x00000001,0x28a01608,0x00000000,0x00000000,0x00000001,0x48762288,0x000008f6,0x00000000,
-0x00000006,0x6118228c,0x0a00084a,0x000000e0,0x00000001,0x484a2288,0x00000118,0x00000000,
-0x00000040,0x20e00a28,0x1e000208,0x00580058,0x00000040,0x22001240,0x160000e0,0x08400840,
-0x00000040,0x22101a68,0x22000940,0x00008000,0x04000010,0x20001a60,0x1e000210,0x00280028,
-0x00010020,0x34000004,0x0e001400,0x00000040,0x00000001,0x20e01a28,0x00000210,0x00000000,
-0x0c000038,0x21180a28,0x0e0000e0,0x00000004,0x00000001,0x42100a68,0x00000118,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x000000b0,0x00000001,0x20e01ae8,0x00000210,0x00000000,
-0x00000041,0x20e43ae8,0x3e0000e0,0x3ecb1d56,0x00000040,0x211c3ae8,0x3e0000e0,0xc2ff0000,
-0x00000040,0x21183ae8,0x3e0000e4,0xc197e502,0x00000041,0x21443ae8,0x3e00011c,0x37229ad3,
-0x00000041,0x21203ae8,0x3e00011c,0x3a047cd2,0x00000041,0x21603ae8,0x3a000144,0x0000011c,
-0x0040015b,0x0a020000,0xf9208dc9,0x02472411,0x0040015b,0x0c020400,0xf920a1c9,0x02c72411,
-0x00000001,0x21a03a28,0x00000180,0x00000000,0x00000001,0x42100a68,0x000001a0,0x00000000,
-0x05000002,0x22101a68,0x1e000210,0x003f003f,0x00000040,0x20e40a28,0x1e000208,0x00640064,
-0x00000040,0x20e01a28,0x1a000210,0x00004204,0x00000040,0x22001240,0x160000e4,0x08400840,
-0x00000001,0x61180a8c,0x000000e0,0x00000000,0x00000001,0xc0002288,0x00000118,0x00000000,
-0x00000040,0x22080a28,0x1e000208,0x00010001,0x05000010,0x20000a20,0x1e000208,0x00080008,
-0x00010020,0x34000004,0x0e001400,0xfffffe30,0x00000001,0x2128160c,0x00000000,0x000c000c,
-0x00400001,0x28ac0208,0x0069092c,0x00000000,0x00000001,0x28bc0208,0x0000093c,0x00000000,
-0x00000040,0x22000204,0x06000104,0x020a0400,0x00000001,0x2148160c,0x00000000,0x00140014,
-0x00000001,0x2168160c,0x00000000,0x00140014,0x06000010,0x20002260,0x1e00076c,0x00020002,
-0x0a800033,0x00042054,0x00002124,0x00000000,0x00000040,0x22000204,0x06000100,0x02280300,
-0x0a800031,0x21803a6c,0x00000140,0x00000200,0x00000040,0x22000204,0x06000104,0x020a0300,
-0x0a800033,0x0000c054,0x00002162,0x00000000,0x00010020,0x34000004,0x0e001400,0x000002f0,
-0x00000009,0x20e02228,0x1e000200,0x00010001,0x00200001,0x28100208,0x00450910,0x00000000,
-0x00000001,0x22081e28,0x00000000,0x00000000,0x00000001,0x28201608,0x00000000,0x00000000,
-0x00000001,0x47f62288,0x000008f6,0x00000000,0x00000006,0x6118228c,0x0a0007ca,0x000000e0,
-0x00000001,0x47ca2288,0x00000118,0x00000000,0x00000040,0x20e00a28,0x1e000208,0x00580058,
-0x00000040,0x22001240,0x160000e0,0x07c007c0,0x00000040,0x22101a68,0x22000940,0x00008000,
-0x04000010,0x20001a60,0x1e000210,0x00280028,0x00010020,0x34000004,0x0e001400,0x00000040,
-0x00000001,0x20e01a28,0x00000210,0x00000000,0x0c000038,0x21180a28,0x0e0000e0,0x00000004,
-0x00000001,0x42100a68,0x00000118,0x00000000,0x00000020,0x34000004,0x0e001400,0x000000b0,
-0x00000001,0x20e01ae8,0x00000210,0x00000000,0x00000041,0x20e43ae8,0x3e0000e0,0x3ecb1d56,
-0x00000040,0x211c3ae8,0x3e0000e0,0xc2ff0000,0x00000040,0x21183ae8,0x3e0000e4,0xc197e502,
-0x00000041,0x21443ae8,0x3e00011c,0x37229ad3,0x00000041,0x21203ae8,0x3e00011c,0x3a047cd2,
-0x00000041,0x21603ae8,0x3a000144,0x0000011c,0x0040015b,0x0a020000,0xf9208dc9,0x02472411,
-0x0040015b,0x0c020400,0xf920a1c9,0x02c72411,0x00000001,0x21a03a28,0x00000180,0x00000000,
-0x00000001,0x42100a68,0x000001a0,0x00000000,0x05000002,0x22101a68,0x1e000210,0x003f003f,
-0x00000040,0x20e40a28,0x1e000208,0x00640064,0x00000040,0x20e01a28,0x1a000210,0x00004204,
-0x00000040,0x22001240,0x160000e4,0x07c007c0,0x00000001,0x61180a8c,0x000000e0,0x00000000,
-0x00000001,0xc0002288,0x00000118,0x00000000,0x00000040,0x22080a28,0x1e000208,0x00010001,
-0x05000010,0x20000a20,0x1e000208,0x00080008,0x00010020,0x34000004,0x0e001400,0xfffffe30,
-0x00000001,0x2128160c,0x00000000,0x00180018,0x00000001,0x283c0208,0x0000093c,0x00000000,
-0x00400001,0x282c0208,0x0069092c,0x00000000,0x00000040,0x22000204,0x06000104,0x020a0400,
-0x00000001,0x2148160c,0x00000000,0x00200020,0x00000001,0x2168160c,0x00000000,0x00200020,
-0x0a800033,0x0003e054,0x00002124,0x00000000,0x00000040,0x22000204,0x06000100,0x02280300,
-0x0a800031,0x21803a6c,0x00000140,0x00000200,0x00000040,0x22000204,0x06000104,0x020a0300,
-0x0a800033,0x0000c054,0x00002162,0x00000000,0x06000010,0x20002260,0x1e00076c,0x00030003,
-0x00010020,0x34000004,0x0e001400,0x000002f0,0x00000009,0x20e02228,0x1e000200,0x00010001,
-0x00200001,0x27100208,0x00450910,0x00000000,0x00000001,0x22081e28,0x00000000,0x00000000,
-0x00000001,0x27201608,0x00000000,0x00000000,0x00000001,0x46f62288,0x000008f6,0x00000000,
-0x00000006,0x6118228c,0x0a0006ca,0x000000e0,0x00000001,0x46ca2288,0x00000118,0x00000000,
-0x00000040,0x20e00a28,0x1e000208,0x00580058,0x00000040,0x22001240,0x160000e0,0x06c006c0,
-0x00000040,0x22101a68,0x22000940,0x00008000,0x04000010,0x20001a60,0x1e000210,0x00280028,
-0x00010020,0x34000004,0x0e001400,0x00000040,0x00000001,0x20e01a28,0x00000210,0x00000000,
-0x0c000038,0x21180a28,0x0e0000e0,0x00000004,0x00000001,0x42100a68,0x00000118,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x000000b0,0x00000001,0x20e01ae8,0x00000210,0x00000000,
-0x00000041,0x20e43ae8,0x3e0000e0,0x3ecb1d56,0x00000040,0x211c3ae8,0x3e0000e0,0xc2ff0000,
-0x00000040,0x21183ae8,0x3e0000e4,0xc197e502,0x00000041,0x21443ae8,0x3e00011c,0x37229ad3,
-0x00000041,0x21203ae8,0x3e00011c,0x3a047cd2,0x00000041,0x21603ae8,0x3a000144,0x0000011c,
-0x0040015b,0x0a020000,0xf9208dc9,0x02472411,0x0040015b,0x0c020400,0xf920a1c9,0x02c72411,
-0x00000001,0x21a03a28,0x00000180,0x00000000,0x00000001,0x42100a68,0x000001a0,0x00000000,
-0x05000002,0x22101a68,0x1e000210,0x003f003f,0x00000040,0x20e40a28,0x1e000208,0x00640064,
-0x00000040,0x20e01a28,0x1a000210,0x00004204,0x00000040,0x22001240,0x160000e4,0x06c006c0,
-0x00000001,0x61180a8c,0x000000e0,0x00000000,0x00000001,0xc0002288,0x00000118,0x00000000,
-0x00000040,0x22080a28,0x1e000208,0x00010001,0x05000010,0x20000a20,0x1e000208,0x00080008,
-0x00010020,0x34000004,0x0e001400,0xfffffe30,0x00000001,0x2128160c,0x00000000,0x00240024,
-0x00000001,0x273c0208,0x0000093c,0x00000000,0x00400001,0x272c0208,0x0069092c,0x00000000,
-0x00000040,0x22000204,0x06000104,0x020a0400,0x00000001,0x2148160c,0x00000000,0x002c002c,
-0x00000001,0x2168160c,0x00000000,0x002c002c,0x0a800033,0x00036054,0x00002124,0x00000000,
-0x00000040,0x22000204,0x06000100,0x02280300,0x0a800031,0x21803a6c,0x00000140,0x00000200,
-0x00000040,0x22000204,0x06000104,0x020a0300,0x0a800033,0x0000c054,0x00002162,0x00000000,
-0x00000040,0x20e00a08,0x1e000ac8,0x00030003,0x02000010,0x20000200,0x02000ad8,0x000000e0,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x01000010,0x20002260,0x1e00076d,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x000000a0,0x00000040,0x20e00a08,0x1e000ac8,0x00040004,
-0x02000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x01000010,0x20002260,0x1e00076d,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000050,
-0x00000040,0x20e00a08,0x1e000ac8,0x00050005,0x02000010,0x20000200,0x02000ad8,0x000000e0,
-0x00010020,0x34000004,0x0e001400,0x00000040,0x02000010,0x20002260,0x1e00076d,0x00020002,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x0000000c,0x20e01208,0x160004fa,0x00010001,
-0x00000040,0x22800208,0x02000280,0x000000e0,0x00000040,0x20e00a28,0x1a00020c,0x00000940,
-0x04000010,0x20000a20,0x1a0000e0,0x0000005c,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000040,0x20e01a28,0x0a00005c,0x0000420c,0x00000040,0x49401a68,0x0a000940,0x000000e0,
-0x03000010,0x20001a40,0x12000940,0x000004e6,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000040,0x24180208,0x16000418,0x00010001,0x00000020,0x34000004,0x0e001400,0x00000030,
-0x05000010,0x20001a40,0x12000940,0x000004e8,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x24140208,0x16000414,0x00010001,0x02000010,0x20001260,0x1e000500,0x00010001,
-0x00000001,0x49571e88,0x00000000,0x00020002,0x00000001,0x21d00208,0x00000410,0x00000000,
-0x00000001,0x49561e88,0x00000000,0x00050005,0x00000001,0x49531e88,0x00000000,0x00010001,
-0x00000001,0x49551e88,0x00000000,0x00050005,0x00000001,0x49521e88,0x00000000,0x00030003,
-0x00000001,0x49511e88,0x00000000,0x00040004,0x00000001,0x49501e88,0x00000000,0x00010001,
-0x00000001,0x49541e88,0x00000000,0x00010001,0x00400001,0x21c01e08,0x00000000,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000290,0x05000010,0x20000200,0x1200040c,0x000004fa,
-0x00010020,0x34000004,0x0e001400,0x00000270,0x00000001,0x21000228,0x000002a0,0x00000000,
-0x06000010,0x20000a20,0x0a000100,0x0000074c,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000040,0x21d00208,0x1e000410,0xffffffff,0x00000020,0x34000004,0x0e001400,0x00000030,
-0x04000010,0x20000a20,0x0a000100,0x00000750,0x00010020,0x34000004,0x0e001400,0x00000010,
-0x00000040,0x21d00208,0x16000410,0x00010001,0x05000002,0x21d00208,0x160001d0,0x00030003,
-0x00000040,0x22001240,0x160001d0,0x09500950,0x00000041,0x20e01228,0x220004de,0x00008000,
-0x00000001,0x21180ae8,0x000000e0,0x00000000,0x00000001,0x211c22e8,0x00008004,0x00000000,
-0x09000038,0x21203ae8,0x3a000118,0x0000011c,0x00000001,0x41d43a48,0x00000120,0x00000000,
-0x00000041,0x21401228,0x220004e0,0x00008000,0x00000001,0x21600ae8,0x00000140,0x00000000,
-0x0000000c,0x21a01228,0x160004de,0x00010001,0x09000038,0x21803ae8,0x3a000160,0x0000011c,
-0x04000010,0x20001220,0x0a0001d4,0x000001a0,0x00000001,0x41d83a48,0x00000180,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x0000000c,0x21d41248,0x160004de,0x00010001,
-0x00000020,0x34000004,0x0e001400,0x00000010,0x05000002,0x21d41248,0x120004de,0x000001d4,
-0x0000000c,0x20e01228,0x160004e0,0x00010001,0x04000010,0x20001220,0x0a0001d8,0x000000e0,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x0000000c,0x21d81248,0x160004e0,0x00010001,
-0x00000020,0x34000004,0x0e001400,0x00000010,0x05000002,0x21d81248,0x120004e0,0x000001d8,
-0x00000040,0x21181228,0x160001d8,0x00070007,0x00000040,0x20e01228,0x160001d4,0x00070007,
-0x00000001,0x24100208,0x000001d0,0x00000000,0x00000005,0x41d80a48,0x1e000118,0xfff8fff8,
-0x00000005,0x41d40a48,0x1e0000e0,0xfff8fff8,0x00000001,0x21c81208,0x000001d8,0x00000000,
-0x00000001,0x21c41208,0x000001d4,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x21c41208,0x00000020,0x00000000,0x00000001,0x21c81208,0x00000022,0x00000000,
-0x01000010,0x20002260,0x1e000512,0x00000000,0x00000001,0x41c01e88,0x00000000,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x41c01e88,0x00000000,0x00010001,
-0x00000040,0x22000204,0x060000f4,0x020a0000,0x00000001,0x2128160c,0x00000000,0x00000000,
-0x04000010,0x20002260,0x1e00002b,0x00020002,0x0000000c,0x420c1aa8,0x1e000940,0x00010001,
-0x00000001,0x42001ea8,0x00000000,0x00000000,0x0a400033,0x0000e014,0x00002121,0x00000000,
-0x00600001,0x21c01e08,0x00000000,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000130,
-0x02000010,0x20002260,0x1e00002b,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000e0,
-0x05000010,0x20001a60,0x1e000940,0x00280028,0x00010020,0x34000004,0x0e001400,0x000000c0,
-0x00000001,0x20e01ae8,0x00000940,0x00000000,0x00000041,0x20e43ae8,0x3e0000e0,0x3ecb1d56,
-0x00000040,0x211c3ae8,0x3e0000e0,0xc2ff0000,0x00000040,0x21183ae8,0x3e0000e4,0xc197e502,
-0x00000041,0x21443ae8,0x3e00011c,0x37229ad3,0x00000041,0x21203ae8,0x3e00011c,0x3a047cd2,
-0x00000041,0x21603ae8,0x3a000144,0x0000011c,0x0040015b,0x0a020000,0xf9208dc9,0x02472411,
-0x0040015b,0x0c020400,0xf920a1c9,0x02c72411,0x00000001,0x21a03a28,0x00000180,0x00000000,
-0x00000001,0x620c0aa8,0x000001a0,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000030,
-0x00000001,0x20e01a28,0x00000940,0x00000000,0x0c000038,0x21180a28,0x0e0000e0,0x00000004,
-0x00000001,0x620c0aa8,0x00000118,0x00000000,0x05000002,0x20e02a28,0x1e00020c,0x003f003f,
-0x01000010,0x20002260,0x1e000772,0x00000000,0x00000001,0x41c01a88,0x00000940,0x00000000,
-0x04000002,0x620c0aa8,0x1e0000e0,0x00000000,0x00000001,0x41c12a88,0x0000020c,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000570,0x00000001,0x22041a68,0x00000940,0x00000000,
-0x0000000c,0x420c1aa8,0x1e000940,0x00010001,0x00000001,0x22081e28,0x00000000,0x00000000,
-0x00000041,0x20e00a28,0x1e000208,0x00200020,0x00000040,0x22000204,0x06000108,0x02180200,
-0x02000010,0x20002260,0x1e00076f,0x00000000,0x00000008,0x21280a08,0x1e0000e0,0x00040004,
-0x0a600031,0x25403a2c,0x00000120,0x00000200,0x00010020,0x34000004,0x0e001400,0x00000100,
-0x00000040,0x22001240,0x16000208,0x07600760,0x00000040,0x21001a28,0x2a000940,0x00008000,
-0x00000001,0x42040a68,0x00000100,0x00000000,0x04000010,0x20001a60,0x1a000204,0x0000005c,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x21001a68,0x0000005c,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x00000060,0x06000010,0x20001a60,0x1a000204,0x0000005e,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x21001a68,0x0000005e,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x00000010,0x00000001,0x41000a68,0x00000100,0x00000000,
-0x00000001,0x21001a68,0x00000100,0x00000000,0x00000001,0x22041a68,0x00000100,0x00000000,
-0x0000000c,0x420c1aa8,0x1e000100,0x00010001,0x00000020,0x34000004,0x0e001400,0x00000110,
-0x01000010,0x20000a20,0x1e000208,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000f0,
-0x00000040,0x22001240,0x16000208,0x07600760,0x00000040,0x21001a28,0x2a000940,0x00008000,
-0x00000001,0x42040a68,0x00000100,0x00000000,0x04000010,0x20001a60,0x1a000204,0x0000005c,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x21001a68,0x0000005c,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x00000060,0x06000010,0x20001a60,0x1a000204,0x0000005e,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x21001a68,0x0000005e,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x00000010,0x00000001,0x41000a68,0x00000100,0x00000000,
-0x00000001,0x21001a68,0x00000100,0x00000000,0x00000001,0x22041a68,0x00000100,0x00000000,
-0x0000000c,0x420c1aa8,0x1e000100,0x00010001,0x04000010,0x20002260,0x1e00002b,0x00020002,
-0x00010020,0x34000004,0x0e001400,0x00000130,0x02000010,0x20002260,0x1e00002b,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x000000e0,0x05000010,0x20001a60,0x1e000204,0x00280028,
-0x00010020,0x34000004,0x0e001400,0x000000c0,0x00000001,0x20e01ae8,0x00000204,0x00000000,
-0x00000041,0x20e43ae8,0x3e0000e0,0x3ecb1d56,0x00000040,0x211c3ae8,0x3e0000e0,0xc2ff0000,
-0x00000040,0x21183ae8,0x3e0000e4,0xc197e502,0x00000041,0x21443ae8,0x3e00011c,0x37229ad3,
-0x00000041,0x21203ae8,0x3e00011c,0x3a047cd2,0x00000041,0x21603ae8,0x3a000144,0x0000011c,
-0x0040015b,0x0a020000,0xf9208dc9,0x02472411,0x0040015b,0x0c020400,0xf920a1c9,0x02c72411,
-0x00000001,0x21a03a28,0x00000180,0x00000000,0x00000001,0x620c0aa8,0x000001a0,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x00000030,0x00000001,0x20e01a28,0x00000204,0x00000000,
-0x0c000038,0x21180a28,0x0e0000e0,0x00000004,0x00000001,0x620c0aa8,0x00000118,0x00000000,
-0x05000002,0x20e02a28,0x1e00020c,0x003f003f,0x02000010,0x20000a20,0x1e000208,0x00000000,
-0x04000002,0x21000a28,0x1e0000e0,0x00000000,0x00000001,0x620c0aa8,0x00000100,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x62000aa8,0x00000100,0x00000000,
-0x04000040,0x42022aa8,0x2a00020c,0x00004200,0x00000005,0x455e2aa8,0x1e000202,0x003f003f,
-0x00010020,0x34000004,0x0e001400,0x00000040,0x00000001,0x20e02a68,0x00004202,0x00000000,
-0x00000005,0x21181a28,0x1e0000e0,0x003f003f,0x00000006,0x61200aac,0x1e000118,0x00400040,
-0x00000001,0x455e2aa8,0x00000120,0x00000000,0x00000040,0x20e00a28,0x1e000208,0x00040004,
-0x00000040,0x22001240,0x160000e0,0x01c001c0,0x00000001,0xc0001a88,0x00000204,0x00000000,
-0x00000001,0xc0082a88,0x0000020c,0x00000000,0x00000041,0x21180a28,0x1e000208,0x00200020,
-0x00000040,0x22080a28,0x1e000208,0x00010001,0x00000040,0x22000204,0x0600010c,0x020a0200,
-0x00000008,0x21280a08,0x1e000118,0x00040004,0x05000010,0x20000a20,0x1e000208,0x00080008,
-0x0a600033,0x0002a014,0x00002121,0x00000000,0x00010020,0x34000004,0x0e001400,0xfffffac0,
-0x00000040,0x29481a28,0x2a000940,0x000000b8,0x00000001,0x2128160c,0x00000000,0x00000000,
-0x00000040,0x22000204,0x06000114,0x020a0200,0x00000001,0x49440a68,0x00000948,0x00000000,
-0x0a600033,0x0000e014,0x00002121,0x00000000,0x04000010,0x20001a60,0x1a000944,0x0000005c,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x29421a68,0x0000005c,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x00000060,0x06000010,0x20001a60,0x1a000944,0x0000005e,
-0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x29441a68,0x0000005e,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x00000010,0x00000001,0x49440a68,0x00000948,0x00000000,
-0x00000001,0x29421a68,0x00000944,0x00000000,0x00000041,0x20e01a28,0x1e000942,0x00400040,
-0x00000040,0x22000204,0x060000ec,0x02280300,0x00000001,0x21601e68,0x00000000,0x00010001,
-0x01000010,0x20002260,0x1e00076f,0x00000000,0x00000001,0x2148160c,0x00000000,0x00080008,
-0x00000040,0x21180a28,0x1e0000e0,0x01800180,0x00010002,0x21801a28,0x1e000160,0x00000000,
-0x00000008,0x21280a08,0x1e000118,0x00040004,0x01000005,0x20002220,0x0a000025,0x00000180,
-0x0a800031,0x25403a6c,0x00000120,0x00000200,0x00000040,0x22000204,0x060000fc,0x020a0300,
-0x0a800033,0x0002a054,0x00002142,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000e00,
-0x00000040,0x29481a28,0x2a000940,0x00000761,0x00000001,0x49440a68,0x00000948,0x00000000,
-0x04000010,0x20001a60,0x1a000944,0x0000005c,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060,
-0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000,
-0x00000040,0x29481a28,0x2a000942,0x000000b8,0x00000001,0x49440a68,0x00000948,0x00000000,
-0x04000010,0x20001a60,0x1a000944,0x0000005c,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060,
-0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000,
-0x00000041,0x20e01a28,0x1e000942,0x00400040,0x00000040,0x22000204,0x060000ec,0x02280300,
-0x00000040,0x29481a28,0x2a000940,0x00000762,0x00000001,0x2148160c,0x00000000,0x000c000c,
-0x00000040,0x21180a28,0x1e0000e0,0x01800180,0x00000001,0x49440a68,0x00000948,0x00000000,
-0x00000008,0x21280a08,0x1e000118,0x00040004,0x04000010,0x20001a60,0x1a000944,0x0000005c,
-0x0a800031,0x25403a6c,0x00000120,0x00000200,0x00000040,0x22000204,0x060000fc,0x020a0300,
-0x0a800033,0x0002a054,0x00002142,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060,
-0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000,
-0x00000040,0x29481a28,0x2a000942,0x000000b8,0x00000001,0x49440a68,0x00000948,0x00000000,
-0x04000010,0x20001a60,0x1a000944,0x0000005c,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060,
-0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000,
-0x00000041,0x20e01a28,0x1e000942,0x00400040,0x00000040,0x22000204,0x060000ec,0x02280300,
-0x00000040,0x29481a28,0x2a000940,0x00000763,0x00000001,0x2148160c,0x00000000,0x00100010,
-0x00000040,0x21180a28,0x1e0000e0,0x01800180,0x00000001,0x49440a68,0x00000948,0x00000000,
-0x00000008,0x21280a08,0x1e000118,0x00040004,0x04000010,0x20001a60,0x1a000944,0x0000005c,
-0x0a800031,0x25403a6c,0x00000120,0x00000200,0x00000040,0x22000204,0x060000fc,0x020a0300,
-0x0a800033,0x0002a054,0x00002142,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060,
-0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000,
-0x00000040,0x29481a28,0x2a000942,0x000000b8,0x00000001,0x49440a68,0x00000948,0x00000000,
-0x04000010,0x20001a60,0x1a000944,0x0000005c,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060,
-0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000,
-0x00000041,0x20e01a28,0x1e000942,0x00400040,0x00000040,0x22000204,0x060000ec,0x02280300,
-0x00000040,0x29481a28,0x2a000940,0x00000764,0x00000001,0x2148160c,0x00000000,0x00140014,
-0x00000040,0x21180a28,0x1e0000e0,0x01800180,0x00000001,0x49440a68,0x00000948,0x00000000,
-0x00000008,0x21280a08,0x1e000118,0x00040004,0x04000010,0x20001a60,0x1a000944,0x0000005c,
-0x0a800031,0x25403a6c,0x00000120,0x00000200,0x00000040,0x22000204,0x060000fc,0x020a0300,
-0x0a800033,0x0002a054,0x00002142,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060,
-0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000,
-0x00000040,0x29481a28,0x2a000942,0x000000b8,0x00000001,0x49440a68,0x00000948,0x00000000,
-0x04000010,0x20001a60,0x1a000944,0x0000005c,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060,
-0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000,
-0x00000041,0x20e01a28,0x1e000942,0x00400040,0x00000040,0x22000204,0x060000ec,0x02280300,
-0x00000040,0x29481a28,0x2a000940,0x00000765,0x00000001,0x2148160c,0x00000000,0x00180018,
-0x00000040,0x21180a28,0x1e0000e0,0x01800180,0x00000001,0x49440a68,0x00000948,0x00000000,
-0x00000008,0x21280a08,0x1e000118,0x00040004,0x04000010,0x20001a60,0x1a000944,0x0000005c,
-0x0a800031,0x25403a6c,0x00000120,0x00000200,0x00000040,0x22000204,0x060000fc,0x020a0300,
-0x0a800033,0x0002a054,0x00002142,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060,
-0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000,
-0x00000040,0x29481a28,0x2a000942,0x000000b8,0x00000001,0x49440a68,0x00000948,0x00000000,
-0x04000010,0x20001a60,0x1a000944,0x0000005c,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060,
-0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000,
-0x00000041,0x20e01a28,0x1e000942,0x00400040,0x00000040,0x22000204,0x060000ec,0x02280300,
-0x00000040,0x29481a28,0x2a000940,0x00000766,0x00000001,0x2148160c,0x00000000,0x001c001c,
-0x00000040,0x21180a28,0x1e0000e0,0x01800180,0x00000001,0x49440a68,0x00000948,0x00000000,
-0x00000008,0x21280a08,0x1e000118,0x00040004,0x04000010,0x20001a60,0x1a000944,0x0000005c,
-0x0a800031,0x25403a6c,0x00000120,0x00000200,0x00000040,0x22000204,0x060000fc,0x020a0300,
-0x0a800033,0x0002a054,0x00002142,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060,
-0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000,
-0x00000040,0x29481a28,0x2a000942,0x000000b8,0x00000001,0x49440a68,0x00000948,0x00000000,
-0x04000010,0x20001a60,0x1a000944,0x0000005c,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060,
-0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000,
-0x00000041,0x20e01a28,0x1e000942,0x00400040,0x00000040,0x22000204,0x060000ec,0x02280300,
-0x00000040,0x29481a28,0x2a000940,0x00000767,0x00000001,0x2148160c,0x00000000,0x00200020,
-0x00000040,0x21180a28,0x1e0000e0,0x01800180,0x00000001,0x49440a68,0x00000948,0x00000000,
-0x00000008,0x21280a08,0x1e000118,0x00040004,0x04000010,0x20001a60,0x1a000944,0x0000005c,
-0x0a800031,0x25403a6c,0x00000120,0x00000200,0x00000040,0x22000204,0x060000fc,0x020a0300,
-0x0a800033,0x0002a054,0x00002142,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060,
-0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000,
-0x00000040,0x29481a28,0x2a000942,0x000000b8,0x00000001,0x49440a68,0x00000948,0x00000000,
-0x04000010,0x20001a60,0x1a000944,0x0000005c,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060,
-0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020,
-0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010,
-0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000,
-0x00000041,0x20e01a28,0x1e000942,0x00400040,0x00000040,0x22000204,0x060000ec,0x02280300,
-0x00000001,0x2148160c,0x00000000,0x00240024,0x00000040,0x21180a28,0x1e0000e0,0x01800180,
-0x00000008,0x21280a08,0x1e000118,0x00040004,0x0a800031,0x25403a6c,0x00000120,0x00000200,
-0x00000040,0x22000204,0x060000fc,0x020a0300,0x0a800033,0x0002a054,0x00002142,0x00000000,
-0x00000001,0x2128160c,0x00000000,0x00000000,0x00000040,0x22000204,0x060000f8,0x02480400,
-0x00000001,0x21c8160c,0x00000000,0x00000000,0x00000001,0x21e8160c,0x00000000,0x00280028,
-0x00000001,0x2208160c,0x00000000,0x00280028,0x01000010,0x20002260,0x1e000769,0x00000000,
-0x0a800031,0x21403a6c,0x00000120,0x00000200,0x00000040,0x22000204,0x060000fc,0x020a0400,
-0x00000001,0x41571a88,0x00000940,0x00000000,0x0a800033,0x0000a054,0x000021c4,0x00000000,
-0x00000040,0x22000204,0x060000f8,0x02280300,0x0a800031,0x25403a6c,0x000001e0,0x00000200,
-0x00000040,0x22000204,0x060000fc,0x020a0300,0x0a800033,0x0002a054,0x00002202,0x00000000,
-0x00010020,0x34000004,0x0e001400,0x000003e0,0x00000001,0x2128160c,0x00000000,0x00020002,
-0x00000040,0x22000204,0x060000f8,0x02180200,0x02000010,0x20002a60,0x1e000ad4,0x00020002,
-0x0a600031,0x20803a0c,0x00000120,0x00000200,0x00010020,0x34000004,0x0e001400,0x00000030,
-0x00000001,0x45212288,0x00000520,0x00000000,0x00000001,0x45222288,0x00000521,0x00000000,
-0x00000001,0x45232288,0x00000521,0x00000000,0x00000040,0x20e02228,0x1e000774,0x00180018,
-0x00000040,0x22001240,0x160000e0,0x05080508,0x00000001,0xc0001a88,0x00000940,0x00000000,
-0x00000040,0x21182228,0x1e000775,0x00180018,0x00000040,0x22001240,0x16000118,0x05080508,
-0x00000001,0x49442288,0x00008000,0x00000000,0x00000040,0x21202228,0x1e000776,0x00180018,
-0x00000040,0x22001240,0x16000120,0x05080508,0x00000001,0x49422288,0x00008000,0x00000000,
-0x00000040,0x21402228,0x1e000777,0x00180018,0x00000040,0x22001240,0x16000140,0x05080508,
-0x00000001,0x49462288,0x00008000,0x00000000,0x02000010,0x20002a60,0x1e000ac2,0xffffffff,
-0x00010020,0x34000004,0x0e001400,0x00000040,0x00000001,0x20801648,0x00000000,0x00000000,
-0x00000001,0x20821248,0x00000080,0x00000000,0x00000001,0x20841248,0x00000082,0x00000000,
-0x00000020,0x34000004,0x0e001400,0x00000210,0x0000000c,0x40e42288,0x16000944,0x00040004,
-0x00000005,0x20e02228,0x1e000944,0x000f000f,0x00000040,0x22000204,0x060000ec,0x02180200,
-0x00000041,0x21182228,0x1e0000e4,0x00200020,0x00000041,0x21601248,0x160000e0,0x00020002,
-0x00000040,0x21200a28,0x1e000118,0x41804180,0x00000008,0x21480a08,0x1e000120,0x00040004,
-0x0a600031,0x20403a0c,0x00000140,0x00000200,0x00000040,0x22001240,0x16000160,0x00400040,
-0x00000001,0x20801248,0x00008000,0x00000000,0x0000000c,0x41842288,0x16000942,0x00040004,
-0x00000005,0x21802228,0x1e000942,0x000f000f,0x00000040,0x22000204,0x060000ec,0x02180200,
-0x00000041,0x21a02228,0x1e000184,0x00200020,0x00000041,0x21181248,0x16000180,0x00020002,
-0x00000040,0x21c00a28,0x1e0001a0,0x41804180,0x00000008,0x21e80a08,0x1e0001c0,0x00040004,
-0x0a600031,0x20403a0c,0x000001e0,0x00000200,0x00000040,0x22001240,0x16000118,0x00400040,
-0x00000001,0x20821248,0x00008000,0x00000000,0x0000000c,0x40e42288,0x16000946,0x00040004,
-0x00000005,0x20e02228,0x1e000946,0x000f000f,0x00000040,0x22000204,0x060000ec,0x02180200,
-0x00000041,0x21202228,0x1e0000e4,0x00200020,0x00000041,0x21a01248,0x160000e0,0x00020002,
-0x00000040,0x21400a28,0x1e000120,0x41804180,0x00000008,0x21680a08,0x1e000140,0x00040004,
-0x0a600031,0x20403a0c,0x00000160,0x00000200,0x00000040,0x22001240,0x160001a0,0x00400040,
-0x00000001,0x24f21248,0x00008000,0x00000000,0x00000001,0x24ee1248,0x00000080,0x00000000,
-0x00000001,0x24f01248,0x00000082,0x00000000,0x00000001,0x20841248,0x000004f2,0x00000000,
-0x00000001,0x2128160c,0x00000000,0x00020002,0x00000040,0x22000204,0x060000fc,0x020a0200,
-0x0a600033,0x00004014,0x00002121,0x00000000,0x00000001,0x452c1a88,0x00000940,0x00000000,
-0x00000001,0x20401e28,0x00000000,0x00000000,0x00000009,0x20e00a28,0x1e000040,0x00050005,
-0x00000009,0x20e40a28,0x1e000040,0x00070007,0x00000041,0x21181248,0x160000e0,0x00040004,
-0x00000040,0x22001240,0x16000118,0x02400240,0x00600001,0x21200208,0x00208000,0x00000000,
-0x00600001,0x21400208,0x00208020,0x00000000,0x00600001,0x21600208,0x00208040,0x00000000,
-0x00600001,0x21800208,0x00208060,0x00000000,0x00000040,0x20400a28,0x1e000040,0x00010001,
-0x00000008,0x21a80a08,0x1e0000e4,0x00040004,0x00000040,0x22000204,0x060000e8,0x020a0400,
-0x05000010,0x20000a20,0x1e000040,0x00060006,0x0a800033,0x00009054,0x000021a4,0x00000000,
-0x00010020,0x34000004,0x0e001400,0xffffff20,0x20004d01,0x00007f07,0x07000031,0x20003a00,
-0x06000fe0,0x82000010,0x0000007e,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,
-0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
-0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
-0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
-0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000
-};
diff --git a/src/gen9_vp9_encoder_kernels.h b/src/gen9_vp9_encoder_kernels.h
deleted file mode 100644
index 961919c..0000000
--- a/src/gen9_vp9_encoder_kernels.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright © 2016 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWAR
- *
- * Authors:
- * Zhao, Yakui <yakui.zhao@intel.com>
- *
- */
-
-#ifndef _GEN9_VP9_ENCODER_KERNELS_H
-#define _GEN9_VP9_ENCODER_KERNELS_H
-
-#define AllVP9ENC_SZ 39334
-extern const unsigned int media_vp9_kernels[AllVP9ENC_SZ];
-
-#endif
diff --git a/src/i965_avc_bsd.c b/src/i965_avc_bsd.c
deleted file mode 100644
index 157a107..0000000
--- a/src/i965_avc_bsd.c
+++ /dev/null
@@ -1,899 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-#include "sysdeps.h"
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "i965_avc_bsd.h"
-#include "i965_media_h264.h"
-#include "i965_media.h"
-#include "i965_decoder_utils.h"
-#include "intel_media.h"
-
-static void
-i965_avc_bsd_init_avc_bsd_surface(VADriverContextP ctx,
- struct object_surface *obj_surface,
- VAPictureParameterBufferH264 *pic_param,
- struct i965_h264_context *i965_h264_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- GenAvcSurface *avc_bsd_surface = obj_surface->private_data;
-
- obj_surface->free_private_data = gen_free_avc_surface;
-
- if (!avc_bsd_surface) {
- avc_bsd_surface = calloc(sizeof(GenAvcSurface), 1);
- assert(avc_bsd_surface);
- avc_bsd_surface->base.frame_store_id = -1;
- assert((obj_surface->size & 0x3f) == 0);
- obj_surface->private_data = avc_bsd_surface;
- }
-
- avc_bsd_surface->dmv_bottom_flag = (pic_param->pic_fields.bits.field_pic_flag &&
- !pic_param->seq_fields.bits.direct_8x8_inference_flag);
-
- if (avc_bsd_surface->dmv_top == NULL) {
- avc_bsd_surface->dmv_top = dri_bo_alloc(i965->intel.bufmgr,
- "direct mv w/r buffer",
- DMV_SIZE,
- 0x1000);
- }
-
- if (avc_bsd_surface->dmv_bottom_flag &&
- avc_bsd_surface->dmv_bottom == NULL) {
- avc_bsd_surface->dmv_bottom = dri_bo_alloc(i965->intel.bufmgr,
- "direct mv w/r buffer",
- DMV_SIZE,
- 0x1000);
- }
-}
-
-static void
-i965_bsd_ind_obj_base_address(VADriverContextP ctx,
- struct decode_state *decode_state,
- int slice,
- struct i965_h264_context *i965_h264_context)
-
-{
- struct intel_batchbuffer *batch = i965_h264_context->batch;
-
- dri_bo *ind_bo = decode_state->slice_datas[slice]->bo;
-
- BEGIN_BCS_BATCH(batch, 3);
- OUT_BCS_BATCH(batch, CMD_BSD_IND_OBJ_BASE_ADDR | (3 - 2));
- OUT_BCS_RELOC(batch, ind_bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-i965_avc_bsd_img_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct i965_h264_context *i965_h264_context)
-{
- struct intel_batchbuffer *batch = i965_h264_context->batch;
- int qm_present_flag;
- int img_struct;
- int mbaff_frame_flag;
- unsigned int avc_it_command_header;
- unsigned int width_in_mbs, height_in_mbs;
- VAPictureParameterBufferH264 *pic_param;
-
- if (decode_state->iq_matrix && decode_state->iq_matrix->buffer)
- qm_present_flag = 1;
- else
- qm_present_flag = 0; /* built-in QM matrices */
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
-
- if (pic_param->CurrPic.flags & VA_PICTURE_H264_TOP_FIELD)
- img_struct = 1;
- else if (pic_param->CurrPic.flags & VA_PICTURE_H264_BOTTOM_FIELD)
- img_struct = 3;
- else
- img_struct = 0;
-
- if ((img_struct & 0x1) == 0x1) {
- assert(pic_param->pic_fields.bits.field_pic_flag == 0x1);
- } else {
- assert(pic_param->pic_fields.bits.field_pic_flag == 0x0);
- }
-
- if (pic_param->seq_fields.bits.frame_mbs_only_flag) { /* a frame containing only frame macroblocks */
- assert(pic_param->seq_fields.bits.mb_adaptive_frame_field_flag == 0);
- assert(pic_param->pic_fields.bits.field_pic_flag == 0);
- } else {
- assert(pic_param->seq_fields.bits.direct_8x8_inference_flag == 1); /* see H.264 spec */
- }
-
- mbaff_frame_flag = (pic_param->seq_fields.bits.mb_adaptive_frame_field_flag &&
- !pic_param->pic_fields.bits.field_pic_flag);
-
- width_in_mbs = ((pic_param->picture_width_in_mbs_minus1 + 1) & 0xff);
- height_in_mbs = ((pic_param->picture_height_in_mbs_minus1 + 1) & 0xff); /* frame height */
-
- assert(!((width_in_mbs * height_in_mbs) & 0x8000)); /* hardware requirement */
-
- /* BSD unit doesn't support 4:2:2 and 4:4:4 picture */
- assert(pic_param->seq_fields.bits.chroma_format_idc == 0 || /* monochrome picture */
- pic_param->seq_fields.bits.chroma_format_idc == 1); /* 4:2:0 */
- assert(pic_param->seq_fields.bits.residual_colour_transform_flag == 0); /* only available for 4:4:4 */
-
- avc_it_command_header = (CMD_MEDIA_OBJECT_EX | (12 - 2));
-
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, CMD_AVC_BSD_IMG_STATE | (6 - 2));
- OUT_BCS_BATCH(batch,
- ((width_in_mbs * height_in_mbs) & 0x7fff));
- OUT_BCS_BATCH(batch,
- (height_in_mbs << 16) |
- (width_in_mbs << 0));
- OUT_BCS_BATCH(batch,
- ((pic_param->second_chroma_qp_index_offset & 0x1f) << 24) |
- ((pic_param->chroma_qp_index_offset & 0x1f) << 16) |
- (SCAN_RASTER_ORDER << 15) | /* AVC ILDB Data */
- (SCAN_SPECIAL_ORDER << 14) | /* AVC IT Command */
- (SCAN_RASTER_ORDER << 13) | /* AVC IT Data */
- (1 << 12) | /* always 1, hardware requirement */
- (qm_present_flag << 10) |
- (img_struct << 8) |
- (16 << 0)); /* FIXME: always support 16 reference frames ??? */
- OUT_BCS_BATCH(batch,
- (RESIDUAL_DATA_OFFSET << 24) | /* residual data offset */
- (0 << 17) | /* don't overwrite SRT */
- (0 << 16) | /* Un-SRT (Unsynchronized Root Thread) */
- (0 << 12) | /* FIXME: no 16MV ??? */
- (pic_param->seq_fields.bits.chroma_format_idc << 10) |
- (i965_h264_context->enable_avc_ildb << 8) | /* Enable ILDB writing output */
- (pic_param->pic_fields.bits.entropy_coding_mode_flag << 7) |
- ((!pic_param->pic_fields.bits.reference_pic_flag) << 6) |
- (pic_param->pic_fields.bits.constrained_intra_pred_flag << 5) |
- (pic_param->seq_fields.bits.direct_8x8_inference_flag << 4) |
- (pic_param->pic_fields.bits.transform_8x8_mode_flag << 3) |
- (pic_param->seq_fields.bits.frame_mbs_only_flag << 2) |
- (mbaff_frame_flag << 1) |
- (pic_param->pic_fields.bits.field_pic_flag << 0));
- OUT_BCS_BATCH(batch, avc_it_command_header);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-i965_avc_bsd_qm_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct i965_h264_context *i965_h264_context)
-{
- struct intel_batchbuffer *batch = i965_h264_context->batch;
- int cmd_len;
- VAIQMatrixBufferH264 *iq_matrix;
- VAPictureParameterBufferH264 *pic_param;
-
- if (!decode_state->iq_matrix || !decode_state->iq_matrix->buffer)
- return;
-
- iq_matrix = (VAIQMatrixBufferH264 *)decode_state->iq_matrix->buffer;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
-
- cmd_len = 2 + 6 * 4; /* always load six 4x4 scaling matrices */
-
- if (pic_param->pic_fields.bits.transform_8x8_mode_flag)
- cmd_len += 2 * 16; /* load two 8x8 scaling matrices */
-
- BEGIN_BCS_BATCH(batch, cmd_len);
- OUT_BCS_BATCH(batch, CMD_AVC_BSD_QM_STATE | (cmd_len - 2));
-
- if (pic_param->pic_fields.bits.transform_8x8_mode_flag)
- OUT_BCS_BATCH(batch,
- (0x0 << 8) | /* don't use default built-in matrices */
- (0xff << 0)); /* six 4x4 and two 8x8 scaling matrices */
- else
- OUT_BCS_BATCH(batch,
- (0x0 << 8) | /* don't use default built-in matrices */
- (0x3f << 0)); /* six 4x4 scaling matrices */
-
- intel_batchbuffer_data(batch, &iq_matrix->ScalingList4x4[0][0], 6 * 4 * 4);
-
- if (pic_param->pic_fields.bits.transform_8x8_mode_flag)
- intel_batchbuffer_data(batch, &iq_matrix->ScalingList8x8[0][0], 2 * 16 * 4);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-i965_avc_bsd_slice_state(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- struct i965_h264_context *i965_h264_context)
-{
- struct intel_batchbuffer *batch = i965_h264_context->batch;
- int present_flag, cmd_len, list, j;
- uint8_t ref_idx_state[32];
- char weightoffsets[32 * 6];
-
- /* don't issue SLICE_STATE for intra-prediction decoding */
- if (slice_param->slice_type == SLICE_TYPE_I ||
- slice_param->slice_type == SLICE_TYPE_SI)
- return;
-
- cmd_len = 2;
-
- if (slice_param->slice_type == SLICE_TYPE_P ||
- slice_param->slice_type == SLICE_TYPE_SP) {
- present_flag = PRESENT_REF_LIST0;
- cmd_len += 8;
- } else {
- present_flag = PRESENT_REF_LIST0 | PRESENT_REF_LIST1;
- cmd_len += 16;
- }
-
- if ((slice_param->slice_type == SLICE_TYPE_P ||
- slice_param->slice_type == SLICE_TYPE_SP) &&
- (pic_param->pic_fields.bits.weighted_pred_flag == 1)) {
- present_flag |= PRESENT_WEIGHT_OFFSET_L0;
- cmd_len += 48;
- }
-
- if ((slice_param->slice_type == SLICE_TYPE_B) &&
- (pic_param->pic_fields.bits.weighted_bipred_idc == 1)) {
- present_flag |= PRESENT_WEIGHT_OFFSET_L0 | PRESENT_WEIGHT_OFFSET_L1;
- cmd_len += 96;
- }
-
- BEGIN_BCS_BATCH(batch, cmd_len);
- OUT_BCS_BATCH(batch, CMD_AVC_BSD_SLICE_STATE | (cmd_len - 2));
- OUT_BCS_BATCH(batch, present_flag);
-
- for (list = 0; list < 2; list++) {
- int flag, num_va_pics;
- VAPictureH264 *va_pic;
-
- if (list == 0) {
- flag = PRESENT_REF_LIST0;
- va_pic = slice_param->RefPicList0;
- num_va_pics = slice_param->num_ref_idx_l0_active_minus1 + 1;
- } else {
- flag = PRESENT_REF_LIST1;
- va_pic = slice_param->RefPicList1;
- num_va_pics = slice_param->num_ref_idx_l1_active_minus1 + 1;
- }
-
- if (!(present_flag & flag))
- continue;
-
- gen5_fill_avc_ref_idx_state(
- ref_idx_state,
- va_pic, num_va_pics,
- i965_h264_context->fsid_list
- );
- intel_batchbuffer_data(batch, ref_idx_state, sizeof(ref_idx_state));
- }
-
- i965_h264_context->weight128_luma_l0 = 0;
- i965_h264_context->weight128_luma_l1 = 0;
- i965_h264_context->weight128_chroma_l0 = 0;
- i965_h264_context->weight128_chroma_l1 = 0;
-
- i965_h264_context->weight128_offset0_flag = 0;
- i965_h264_context->weight128_offset0 = 0;
-
- if (present_flag & PRESENT_WEIGHT_OFFSET_L0) {
- for (j = 0; j < 32; j++) {
- weightoffsets[j * 6 + 0] = slice_param->luma_offset_l0[j];
- weightoffsets[j * 6 + 1] = slice_param->luma_weight_l0[j];
- weightoffsets[j * 6 + 2] = slice_param->chroma_offset_l0[j][0];
- weightoffsets[j * 6 + 3] = slice_param->chroma_weight_l0[j][0];
- weightoffsets[j * 6 + 4] = slice_param->chroma_offset_l0[j][1];
- weightoffsets[j * 6 + 5] = slice_param->chroma_weight_l0[j][1];
-
- if (pic_param->pic_fields.bits.weighted_pred_flag == 1 ||
- pic_param->pic_fields.bits.weighted_bipred_idc == 1) {
- if (i965_h264_context->use_hw_w128) {
- if (slice_param->luma_weight_l0[j] == 128)
- i965_h264_context->weight128_luma_l0 |= (1 << j);
-
- if (slice_param->chroma_weight_l0[j][0] == 128 ||
- slice_param->chroma_weight_l0[j][1] == 128)
- i965_h264_context->weight128_chroma_l0 |= (1 << j);
- } else {
- /* FIXME: workaround for weight 128 */
- if (slice_param->luma_weight_l0[j] == 128 ||
- slice_param->chroma_weight_l0[j][0] == 128 ||
- slice_param->chroma_weight_l0[j][1] == 128)
- i965_h264_context->weight128_offset0_flag = 1;
- }
- }
- }
-
- intel_batchbuffer_data(batch, weightoffsets, sizeof(weightoffsets));
- }
-
- if (present_flag & PRESENT_WEIGHT_OFFSET_L1) {
- for (j = 0; j < 32; j++) {
- weightoffsets[j * 6 + 0] = slice_param->luma_offset_l1[j];
- weightoffsets[j * 6 + 1] = slice_param->luma_weight_l1[j];
- weightoffsets[j * 6 + 2] = slice_param->chroma_offset_l1[j][0];
- weightoffsets[j * 6 + 3] = slice_param->chroma_weight_l1[j][0];
- weightoffsets[j * 6 + 4] = slice_param->chroma_offset_l1[j][1];
- weightoffsets[j * 6 + 5] = slice_param->chroma_weight_l1[j][1];
-
- if (pic_param->pic_fields.bits.weighted_bipred_idc == 1) {
- if (i965_h264_context->use_hw_w128) {
- if (slice_param->luma_weight_l1[j] == 128)
- i965_h264_context->weight128_luma_l1 |= (1 << j);
-
- if (slice_param->chroma_weight_l1[j][0] == 128 ||
- slice_param->chroma_weight_l1[j][1] == 128)
- i965_h264_context->weight128_chroma_l1 |= (1 << j);
- } else {
- if (slice_param->luma_weight_l0[j] == 128 ||
- slice_param->chroma_weight_l0[j][0] == 128 ||
- slice_param->chroma_weight_l0[j][1] == 128)
- i965_h264_context->weight128_offset0_flag = 1;
- }
- }
- }
-
- intel_batchbuffer_data(batch, weightoffsets, sizeof(weightoffsets));
- }
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-i965_avc_bsd_buf_base_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- struct i965_h264_context *i965_h264_context)
-{
- struct intel_batchbuffer *batch = i965_h264_context->batch;
- struct i965_avc_bsd_context *i965_avc_bsd_context;
- int i;
- VAPictureH264 *va_pic;
- struct object_surface *obj_surface;
- GenAvcSurface *avc_bsd_surface;
-
- i965_avc_bsd_context = &i965_h264_context->i965_avc_bsd_context;
-
- BEGIN_BCS_BATCH(batch, 74);
- OUT_BCS_BATCH(batch, CMD_AVC_BSD_BUF_BASE_STATE | (74 - 2));
- OUT_BCS_RELOC(batch, i965_avc_bsd_context->bsd_raw_store.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_RELOC(batch, i965_avc_bsd_context->mpr_row_store.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BCS_RELOC(batch, i965_h264_context->avc_it_command_mb_info.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- i965_h264_context->avc_it_command_mb_info.mbs * i965_h264_context->use_avc_hw_scoreboard * MB_CMD_IN_BYTES);
- OUT_BCS_RELOC(batch, i965_h264_context->avc_it_data.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- (i965_h264_context->avc_it_data.write_offset << 6));
-
- if (i965_h264_context->enable_avc_ildb)
- OUT_BCS_RELOC(batch, i965_h264_context->avc_ildb_data.bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_BATCH(batch, 0);
-
- for (i = 0; i < ARRAY_ELEMS(i965_h264_context->fsid_list); i++) {
- obj_surface = i965_h264_context->fsid_list[i].obj_surface;
- if (obj_surface && obj_surface->private_data) {
- avc_bsd_surface = obj_surface->private_data;
-
- OUT_BCS_RELOC(batch, avc_bsd_surface->dmv_top,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
-
- if (avc_bsd_surface->dmv_bottom_flag == 1)
- OUT_BCS_RELOC(batch, avc_bsd_surface->dmv_bottom,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- else
- OUT_BCS_RELOC(batch, avc_bsd_surface->dmv_top,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- va_pic = &pic_param->CurrPic;
- obj_surface = decode_state->render_object;
- if (pic_param->pic_fields.bits.reference_pic_flag)
- obj_surface->flags |= SURFACE_REFERENCED;
- else
- obj_surface->flags &= ~SURFACE_REFERENCED;
- i965_check_alloc_surface_bo(ctx, obj_surface, 0, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
-
- /* initial uv component for YUV400 case */
- if (pic_param->seq_fields.bits.chroma_format_idc == 0) {
- unsigned int uv_offset = obj_surface->width * obj_surface->height;
- unsigned int uv_size = obj_surface->width * obj_surface->height / 2;
-
- dri_bo_map(obj_surface->bo, 1);
- memset(obj_surface->bo->virtual + uv_offset, 0x80, uv_size);
- dri_bo_unmap(obj_surface->bo);
- }
-
- i965_avc_bsd_init_avc_bsd_surface(ctx, obj_surface, pic_param, i965_h264_context);
- avc_bsd_surface = obj_surface->private_data;
-
- OUT_BCS_RELOC(batch, avc_bsd_surface->dmv_top,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- if (avc_bsd_surface->dmv_bottom_flag == 1)
- OUT_BCS_RELOC(batch, avc_bsd_surface->dmv_bottom,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- else
- OUT_BCS_RELOC(batch, avc_bsd_surface->dmv_top,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-
- /* POC List */
- for (i = 0; i < ARRAY_ELEMS(i965_h264_context->fsid_list); i++) {
- obj_surface = i965_h264_context->fsid_list[i].obj_surface;
-
- if (obj_surface) {
- const VAPictureH264 * const va_pic = avc_find_picture(
- obj_surface->base.id, pic_param->ReferenceFrames,
- ARRAY_ELEMS(pic_param->ReferenceFrames));
-
- assert(va_pic != NULL);
- OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
- OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
- } else {
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
- }
-
- va_pic = &pic_param->CurrPic;
- OUT_BCS_BATCH(batch, va_pic->TopFieldOrderCnt);
- OUT_BCS_BATCH(batch, va_pic->BottomFieldOrderCnt);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-g4x_avc_bsd_object(VADriverContextP ctx,
- struct decode_state *decode_state,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- int slice_index,
- struct i965_h264_context *i965_h264_context)
-{
- struct intel_batchbuffer *batch = i965_h264_context->batch;
- int width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
- int height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1; /* frame height */
-
- if (slice_param) {
- int encrypted, counter_value, cmd_len;
- int slice_hor_pos, slice_ver_pos;
- int num_ref_idx_l0, num_ref_idx_l1;
- int mbaff_picture = (!pic_param->pic_fields.bits.field_pic_flag &&
- pic_param->seq_fields.bits.mb_adaptive_frame_field_flag);
- unsigned int slice_data_bit_offset;
- int weighted_pred_idc = 0;
- int first_mb_in_slice = 0;
- int slice_type;
-
- encrypted = 0; /* FIXME: which flag in VAAPI is used for encryption? */
-
- if (encrypted) {
- cmd_len = 9;
- counter_value = 0; /* FIXME: ??? */
- } else
- cmd_len = 8;
-
-
- slice_data_bit_offset = avc_get_first_mb_bit_offset_with_epb(
- decode_state->slice_datas[slice_index]->bo,
- slice_param,
- pic_param->pic_fields.bits.entropy_coding_mode_flag
- );
-
- if (slice_param->slice_type == SLICE_TYPE_I ||
- slice_param->slice_type == SLICE_TYPE_SI)
- slice_type = SLICE_TYPE_I;
- else if (slice_param->slice_type == SLICE_TYPE_P ||
- slice_param->slice_type == SLICE_TYPE_SP)
- slice_type = SLICE_TYPE_P;
- else {
- assert(slice_param->slice_type == SLICE_TYPE_B);
- slice_type = SLICE_TYPE_B;
- }
-
- if (slice_type == SLICE_TYPE_I) {
- assert(slice_param->num_ref_idx_l0_active_minus1 == 0);
- assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
- num_ref_idx_l0 = 0;
- num_ref_idx_l1 = 0;
- } else if (slice_type == SLICE_TYPE_P) {
- assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
- num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
- num_ref_idx_l1 = 0;
- } else {
- num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
- num_ref_idx_l1 = slice_param->num_ref_idx_l1_active_minus1 + 1;
- }
-
- if (slice_type == SLICE_TYPE_P)
- weighted_pred_idc = pic_param->pic_fields.bits.weighted_pred_flag;
- else if (slice_type == SLICE_TYPE_B)
- weighted_pred_idc = pic_param->pic_fields.bits.weighted_bipred_idc;
-
- first_mb_in_slice = slice_param->first_mb_in_slice << mbaff_picture;
- slice_hor_pos = first_mb_in_slice % width_in_mbs;
- slice_ver_pos = first_mb_in_slice / width_in_mbs;
-
- BEGIN_BCS_BATCH(batch, cmd_len);
- OUT_BCS_BATCH(batch, CMD_AVC_BSD_OBJECT | (cmd_len - 2));
- OUT_BCS_BATCH(batch,
- (encrypted << 31) |
- ((slice_param->slice_data_size - (slice_data_bit_offset >> 3)) << 0));
- OUT_BCS_BATCH(batch,
- (slice_param->slice_data_offset +
- (slice_data_bit_offset >> 3)));
- OUT_BCS_BATCH(batch,
- (0 << 31) | /* concealment mode: 0->intra 16x16 prediction, 1->inter P Copy */
- (0 << 14) | /* ignore BSDPrematureComplete Error handling */
- (0 << 13) | /* FIXME: ??? */
- (0 << 12) | /* ignore MPR Error handling */
- (0 << 10) | /* ignore Entropy Error handling */
- (0 << 8) | /* ignore MB Header Error handling */
- (slice_type << 0));
- OUT_BCS_BATCH(batch,
- (num_ref_idx_l1 << 24) |
- (num_ref_idx_l0 << 16) |
- (slice_param->chroma_log2_weight_denom << 8) |
- (slice_param->luma_log2_weight_denom << 0));
- OUT_BCS_BATCH(batch,
- (weighted_pred_idc << 30) |
- (slice_param->direct_spatial_mv_pred_flag << 29) |
- (slice_param->disable_deblocking_filter_idc << 27) |
- (slice_param->cabac_init_idc << 24) |
- ((pic_param->pic_init_qp_minus26 + 26 + slice_param->slice_qp_delta) << 16) |
- ((slice_param->slice_beta_offset_div2 & 0xf) << 8) |
- ((slice_param->slice_alpha_c0_offset_div2 & 0xf) << 0));
- OUT_BCS_BATCH(batch,
- (slice_ver_pos << 24) |
- (slice_hor_pos << 16) |
- (first_mb_in_slice << 0));
- OUT_BCS_BATCH(batch,
- (1 << 7) |
- ((0x7 - (slice_data_bit_offset & 0x7)) << 0));
-
- if (encrypted) {
- OUT_BCS_BATCH(batch, counter_value);
- }
-
- ADVANCE_BCS_BATCH(batch);
- } else {
- BEGIN_BCS_BATCH(batch, 8);
- OUT_BCS_BATCH(batch, CMD_AVC_BSD_OBJECT | (8 - 2));
- OUT_BCS_BATCH(batch, 0); /* indirect data length for phantom slice is 0 */
- OUT_BCS_BATCH(batch, 0); /* indirect data start address for phantom slice is 0 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, width_in_mbs * height_in_mbs / (1 + !!pic_param->pic_fields.bits.field_pic_flag));
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
- }
-}
-
-static void
-ironlake_avc_bsd_object(VADriverContextP ctx,
- struct decode_state *decode_state,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- int slice_index,
- struct i965_h264_context *i965_h264_context)
-{
- struct intel_batchbuffer *batch = i965_h264_context->batch;
- int width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
- int height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1; /* frame height */
-
- if (slice_param) {
- int encrypted, counter_value;
- int slice_hor_pos, slice_ver_pos;
- int num_ref_idx_l0, num_ref_idx_l1;
- int mbaff_picture = (!pic_param->pic_fields.bits.field_pic_flag &&
- pic_param->seq_fields.bits.mb_adaptive_frame_field_flag);
- unsigned int slice_data_bit_offset;
- int weighted_pred_idc = 0;
- int first_mb_in_slice;
- int slice_type;
-
- encrypted = 0; /* FIXME: which flag in VAAPI is used for encryption? */
-
- if (encrypted) {
- counter_value = 0; /* FIXME: ??? */
- } else
- counter_value = 0;
-
- slice_data_bit_offset = avc_get_first_mb_bit_offset_with_epb(
- decode_state->slice_datas[slice_index]->bo,
- slice_param,
- pic_param->pic_fields.bits.entropy_coding_mode_flag
- );
-
- if (slice_param->slice_type == SLICE_TYPE_I ||
- slice_param->slice_type == SLICE_TYPE_SI)
- slice_type = SLICE_TYPE_I;
- else if (slice_param->slice_type == SLICE_TYPE_P ||
- slice_param->slice_type == SLICE_TYPE_SP)
- slice_type = SLICE_TYPE_P;
- else {
- assert(slice_param->slice_type == SLICE_TYPE_B);
- slice_type = SLICE_TYPE_B;
- }
-
- if (slice_type == SLICE_TYPE_I) {
- assert(slice_param->num_ref_idx_l0_active_minus1 == 0);
- assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
- num_ref_idx_l0 = 0;
- num_ref_idx_l1 = 0;
- } else if (slice_type == SLICE_TYPE_P) {
- assert(slice_param->num_ref_idx_l1_active_minus1 == 0);
- num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
- num_ref_idx_l1 = 0;
- } else {
- num_ref_idx_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1;
- num_ref_idx_l1 = slice_param->num_ref_idx_l1_active_minus1 + 1;
- }
-
- if (slice_type == SLICE_TYPE_P)
- weighted_pred_idc = pic_param->pic_fields.bits.weighted_pred_flag;
- else if (slice_type == SLICE_TYPE_B)
- weighted_pred_idc = pic_param->pic_fields.bits.weighted_bipred_idc;
-
- first_mb_in_slice = slice_param->first_mb_in_slice << mbaff_picture;
- slice_hor_pos = first_mb_in_slice % width_in_mbs;
- slice_ver_pos = first_mb_in_slice / width_in_mbs;
-
- BEGIN_BCS_BATCH(batch, 16);
- OUT_BCS_BATCH(batch, CMD_AVC_BSD_OBJECT | (16 - 2));
- OUT_BCS_BATCH(batch,
- (encrypted << 31) |
- (0 << 30) | /* FIXME: packet based bit stream */
- (0 << 29) | /* FIXME: packet format */
- ((slice_param->slice_data_size - (slice_data_bit_offset >> 3)) << 0));
- OUT_BCS_BATCH(batch,
- (slice_param->slice_data_offset +
- (slice_data_bit_offset >> 3)));
- OUT_BCS_BATCH(batch,
- (0 << 31) | /* concealment mode: 0->intra 16x16 prediction, 1->inter P Copy */
- (0 << 14) | /* ignore BSDPrematureComplete Error handling */
- (0 << 13) | /* FIXME: ??? */
- (0 << 12) | /* ignore MPR Error handling */
- (0 << 10) | /* ignore Entropy Error handling */
- (0 << 8) | /* ignore MB Header Error handling */
- (slice_type << 0));
- OUT_BCS_BATCH(batch,
- (num_ref_idx_l1 << 24) |
- (num_ref_idx_l0 << 16) |
- (slice_param->chroma_log2_weight_denom << 8) |
- (slice_param->luma_log2_weight_denom << 0));
- OUT_BCS_BATCH(batch,
- (weighted_pred_idc << 30) |
- (slice_param->direct_spatial_mv_pred_flag << 29) |
- (slice_param->disable_deblocking_filter_idc << 27) |
- (slice_param->cabac_init_idc << 24) |
- ((pic_param->pic_init_qp_minus26 + 26 + slice_param->slice_qp_delta) << 16) |
- ((slice_param->slice_beta_offset_div2 & 0xf) << 8) |
- ((slice_param->slice_alpha_c0_offset_div2 & 0xf) << 0));
- OUT_BCS_BATCH(batch,
- (slice_ver_pos << 24) |
- (slice_hor_pos << 16) |
- (first_mb_in_slice << 0));
- OUT_BCS_BATCH(batch,
- (1 << 7) |
- ((0x7 - (slice_data_bit_offset & 0x7)) << 0));
- OUT_BCS_BATCH(batch, counter_value);
-
- /* FIXME: dw9-dw11 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, i965_h264_context->weight128_luma_l0);
- OUT_BCS_BATCH(batch, i965_h264_context->weight128_luma_l1);
- OUT_BCS_BATCH(batch, i965_h264_context->weight128_chroma_l0);
- OUT_BCS_BATCH(batch, i965_h264_context->weight128_chroma_l1);
-
- ADVANCE_BCS_BATCH(batch);
- } else {
- BEGIN_BCS_BATCH(batch, 16);
- OUT_BCS_BATCH(batch, CMD_AVC_BSD_OBJECT | (16 - 2));
- OUT_BCS_BATCH(batch, 0); /* indirect data length for phantom slice is 0 */
- OUT_BCS_BATCH(batch, 0); /* indirect data start address for phantom slice is 0 */
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, width_in_mbs * height_in_mbs / (1 + !!pic_param->pic_fields.bits.field_pic_flag));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
- }
-}
-
-static void
-i965_avc_bsd_object(VADriverContextP ctx,
- struct decode_state *decode_state,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *slice_param,
- int slice_index,
- struct i965_h264_context *i965_h264_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
-
- if (IS_IRONLAKE(i965->intel.device_info))
- ironlake_avc_bsd_object(ctx, decode_state, pic_param, slice_param, slice_index, i965_h264_context);
- else
- g4x_avc_bsd_object(ctx, decode_state, pic_param, slice_param, slice_index, i965_h264_context);
-}
-
-static void
-i965_avc_bsd_phantom_slice(VADriverContextP ctx,
- struct decode_state *decode_state,
- VAPictureParameterBufferH264 *pic_param,
- struct i965_h264_context *i965_h264_context)
-{
- i965_avc_bsd_object(ctx, decode_state, pic_param, NULL, 0, i965_h264_context);
-}
-
-void
-i965_avc_bsd_pipeline(VADriverContextP ctx, struct decode_state *decode_state, void *h264_context)
-{
- struct i965_h264_context *i965_h264_context = (struct i965_h264_context *)h264_context;
- struct intel_batchbuffer *batch = i965_h264_context->batch;
- VAPictureParameterBufferH264 *pic_param;
- VASliceParameterBufferH264 *slice_param;
- int i, j;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
- intel_update_avc_frame_store_index(ctx, decode_state, pic_param,
- i965_h264_context->fsid_list, &i965_h264_context->fs_ctx);
-
- i965_h264_context->enable_avc_ildb = 0;
- i965_h264_context->picture.i_flag = 1;
-
- for (j = 0; j < decode_state->num_slice_params && i965_h264_context->enable_avc_ildb == 0; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j]->buffer;
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
- assert((slice_param->slice_type == SLICE_TYPE_I) ||
- (slice_param->slice_type == SLICE_TYPE_SI) ||
- (slice_param->slice_type == SLICE_TYPE_P) ||
- (slice_param->slice_type == SLICE_TYPE_SP) ||
- (slice_param->slice_type == SLICE_TYPE_B));
-
- if (slice_param->disable_deblocking_filter_idc != 1) {
- i965_h264_context->enable_avc_ildb = 1;
- break;
- }
-
- slice_param++;
- }
- }
-
- intel_batchbuffer_start_atomic_bcs(batch, 0x1000);
-
- i965_avc_bsd_img_state(ctx, decode_state, i965_h264_context);
- i965_avc_bsd_qm_state(ctx, decode_state, i965_h264_context);
-
- for (j = 0; j < decode_state->num_slice_params; j++) {
- assert(decode_state->slice_params && decode_state->slice_params[j]->buffer);
- slice_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j]->buffer;
-
- i965_bsd_ind_obj_base_address(ctx, decode_state, j, i965_h264_context);
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
- assert((slice_param->slice_type == SLICE_TYPE_I) ||
- (slice_param->slice_type == SLICE_TYPE_SI) ||
- (slice_param->slice_type == SLICE_TYPE_P) ||
- (slice_param->slice_type == SLICE_TYPE_SP) ||
- (slice_param->slice_type == SLICE_TYPE_B));
-
- if (i965_h264_context->picture.i_flag &&
- (slice_param->slice_type != SLICE_TYPE_I ||
- slice_param->slice_type != SLICE_TYPE_SI))
- i965_h264_context->picture.i_flag = 0;
-
- i965_avc_bsd_slice_state(ctx, pic_param, slice_param, i965_h264_context);
- i965_avc_bsd_buf_base_state(ctx, decode_state, pic_param, slice_param, i965_h264_context);
- i965_avc_bsd_object(ctx, decode_state, pic_param, slice_param, j, i965_h264_context);
- slice_param++;
- }
- }
-
- i965_avc_bsd_phantom_slice(ctx, decode_state, pic_param, i965_h264_context);
- intel_batchbuffer_emit_mi_flush(batch);
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
-}
-
-void
-i965_avc_bsd_decode_init(VADriverContextP ctx, void *h264_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_h264_context *i965_h264_context = (struct i965_h264_context *)h264_context;
- struct i965_avc_bsd_context *i965_avc_bsd_context;
- dri_bo *bo;
-
- assert(i965_h264_context);
- i965_avc_bsd_context = &i965_h264_context->i965_avc_bsd_context;
-
- dri_bo_unreference(i965_avc_bsd_context->bsd_raw_store.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "bsd raw store",
- 0x3000, /* at least 11520 bytes to support 120 MBs per row */
- 64);
- assert(bo);
- i965_avc_bsd_context->bsd_raw_store.bo = bo;
-
- dri_bo_unreference(i965_avc_bsd_context->mpr_row_store.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "mpr row store",
- 0x2000, /* at least 7680 bytes to support 120 MBs per row */
- 64);
- assert(bo);
- i965_avc_bsd_context->mpr_row_store.bo = bo;
-}
-
-Bool
-i965_avc_bsd_ternimate(struct i965_avc_bsd_context *i965_avc_bsd_context)
-{
- dri_bo_unreference(i965_avc_bsd_context->bsd_raw_store.bo);
- dri_bo_unreference(i965_avc_bsd_context->mpr_row_store.bo);
-
- return True;
-}
diff --git a/src/i965_avc_bsd.h b/src/i965_avc_bsd.h
deleted file mode 100644
index 7f83007..0000000
--- a/src/i965_avc_bsd.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-
-#ifndef __I965_AVC_BSD_H__
-#define __I965_AVC_BSD_H__
-
-#define DMV_SIZE 0x88000 /* 557056 bytes for a frame */
-
-struct i965_avc_bsd_context
-{
- struct {
- dri_bo *bo;
- } bsd_raw_store;
-
- struct {
- dri_bo *bo;
- } mpr_row_store;
-};
-
-void i965_avc_bsd_pipeline(VADriverContextP, struct decode_state *, void *h264_context);
-void i965_avc_bsd_decode_init(VADriverContextP, void *h264_context);
-Bool i965_avc_bsd_ternimate(struct i965_avc_bsd_context *);
-
-#endif /* __I965_AVC_BSD_H__ */
-
diff --git a/src/i965_avc_hw_scoreboard.c b/src/i965_avc_hw_scoreboard.c
deleted file mode 100644
index f866599..0000000
--- a/src/i965_avc_hw_scoreboard.c
+++ /dev/null
@@ -1,461 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "i965_avc_hw_scoreboard.h"
-#include "i965_media_h264.h"
-#include "i965_media.h"
-
-/* On Ironlake */
-#include "shaders/h264/mc/export.inc.gen5"
-
-enum {
- AVC_HW_SCOREBOARD = 0,
- AVC_HW_SCOREBOARD_MBAFF
-};
-
-static unsigned long avc_hw_scoreboard_kernel_offset[] = {
- SETHWSCOREBOARD_IP_GEN5 * INST_UNIT_GEN5,
- SETHWSCOREBOARD_MBAFF_IP_GEN5 * INST_UNIT_GEN5
-};
-
-static unsigned int avc_hw_scoreboard_constants[] = {
- 0x08040201,
- 0x00000010,
- 0x08000210,
- 0x00000000,
- 0x08040201,
- 0x08040210,
- 0x01000010,
- 0x08040200
-};
-
-static void
-i965_avc_hw_scoreboard_surface_state(struct i965_h264_context *i965_h264_context)
-{
- struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
- struct i965_surface_state *ss;
- dri_bo *bo;
-
- bo = avc_hw_scoreboard_context->surface.ss_bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- ss = bo->virtual;
- memset(ss, 0, sizeof(*ss));
- ss->ss0.surface_type = I965_SURFACE_BUFFER;
- ss->ss1.base_addr = avc_hw_scoreboard_context->surface.s_bo->offset;
- ss->ss2.width = ((avc_hw_scoreboard_context->surface.total_mbs * MB_CMD_IN_OWS - 1) & 0x7f);
- ss->ss2.height = (((avc_hw_scoreboard_context->surface.total_mbs * MB_CMD_IN_OWS - 1) >> 7) & 0x1fff);
- ss->ss3.depth = (((avc_hw_scoreboard_context->surface.total_mbs * MB_CMD_IN_OWS - 1) >> 20) & 0x7f);
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- 0,
- offsetof(struct i965_surface_state, ss1),
- avc_hw_scoreboard_context->surface.s_bo);
- dri_bo_unmap(bo);
-}
-
-static void
-i965_avc_hw_scoreboard_interface_descriptor_table(struct i965_h264_context *i965_h264_context)
-{
- struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
- struct i965_interface_descriptor *desc;
- dri_bo *bo;
-
- bo = avc_hw_scoreboard_context->idrt.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- desc = bo->virtual;
- memset(desc, 0, sizeof(*desc));
- desc->desc0.grf_reg_blocks = 7;
- desc->desc0.kernel_start_pointer = (avc_hw_scoreboard_context->hw_kernel.bo->offset +
- avc_hw_scoreboard_context->hw_kernel.offset) >> 6; /* reloc */
- desc->desc1.const_urb_entry_read_offset = 0;
- desc->desc1.const_urb_entry_read_len = 1;
- desc->desc3.binding_table_entry_count = 0;
- desc->desc3.binding_table_pointer =
- avc_hw_scoreboard_context->binding_table.bo->offset >> 5; /*reloc */
-
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- desc->desc0.grf_reg_blocks + avc_hw_scoreboard_context->hw_kernel.offset,
- offsetof(struct i965_interface_descriptor, desc0),
- avc_hw_scoreboard_context->hw_kernel.bo);
-
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- desc->desc3.binding_table_entry_count,
- offsetof(struct i965_interface_descriptor, desc3),
- avc_hw_scoreboard_context->binding_table.bo);
-
- dri_bo_unmap(bo);
-}
-
-static void
-i965_avc_hw_scoreboard_binding_table(struct i965_h264_context *i965_h264_context)
-{
- struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
- unsigned int *binding_table;
- dri_bo *bo = avc_hw_scoreboard_context->binding_table.bo;
-
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- binding_table = bo->virtual;
- memset(binding_table, 0, bo->size);
- binding_table[0] = avc_hw_scoreboard_context->surface.ss_bo->offset;
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0,
- 0,
- avc_hw_scoreboard_context->surface.ss_bo);
- dri_bo_unmap(bo);
-}
-
-static void
-i965_avc_hw_scoreboard_vfe_state(struct i965_h264_context *i965_h264_context)
-{
- struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
- struct i965_vfe_state *vfe_state;
- dri_bo *bo;
-
- bo = avc_hw_scoreboard_context->vfe_state.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- vfe_state = bo->virtual;
- memset(vfe_state, 0, sizeof(*vfe_state));
- vfe_state->vfe1.max_threads = avc_hw_scoreboard_context->urb.num_vfe_entries - 1;
- vfe_state->vfe1.urb_entry_alloc_size = avc_hw_scoreboard_context->urb.size_vfe_entry - 1;
- vfe_state->vfe1.num_urb_entries = avc_hw_scoreboard_context->urb.num_vfe_entries;
- vfe_state->vfe1.vfe_mode = VFE_GENERIC_MODE;
- vfe_state->vfe1.children_present = 0;
- vfe_state->vfe2.interface_descriptor_base =
- avc_hw_scoreboard_context->idrt.bo->offset >> 4; /* reloc */
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0,
- offsetof(struct i965_vfe_state, vfe2),
- avc_hw_scoreboard_context->idrt.bo);
- dri_bo_unmap(bo);
-}
-
-static void
-i965_avc_hw_scoreboard_upload_constants(struct i965_h264_context *i965_h264_context)
-{
- struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
- unsigned char *constant_buffer;
-
- if (avc_hw_scoreboard_context->curbe.upload)
- return;
-
- dri_bo_map(avc_hw_scoreboard_context->curbe.bo, 1);
- assert(avc_hw_scoreboard_context->curbe.bo->virtual);
- constant_buffer = avc_hw_scoreboard_context->curbe.bo->virtual;
- memcpy(constant_buffer, avc_hw_scoreboard_constants, sizeof(avc_hw_scoreboard_constants));
- dri_bo_unmap(avc_hw_scoreboard_context->curbe.bo);
- avc_hw_scoreboard_context->curbe.upload = 1;
-}
-
-static void
-i965_avc_hw_scoreboard_states_setup(struct i965_h264_context *i965_h264_context)
-{
- i965_avc_hw_scoreboard_surface_state(i965_h264_context);
- i965_avc_hw_scoreboard_binding_table(i965_h264_context);
- i965_avc_hw_scoreboard_interface_descriptor_table(i965_h264_context);
- i965_avc_hw_scoreboard_vfe_state(i965_h264_context);
- i965_avc_hw_scoreboard_upload_constants(i965_h264_context);
-}
-
-static void
-i965_avc_hw_scoreboard_pipeline_select(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
-{
- struct intel_batchbuffer *batch = i965_h264_context->batch;
-
- BEGIN_BATCH(batch, 1);
- OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_MEDIA);
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_avc_hw_scoreboard_urb_layout(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
-{
- struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965_h264_context->batch;
- unsigned int vfe_fence, cs_fence;
-
- vfe_fence = avc_hw_scoreboard_context->urb.cs_start;
- cs_fence = i965->intel.device_info->urb_size;
-
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch, CMD_URB_FENCE | UF0_VFE_REALLOC | UF0_CS_REALLOC | 1);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch,
- (vfe_fence << UF2_VFE_FENCE_SHIFT) | /* VFE_SIZE */
- (cs_fence << UF2_CS_FENCE_SHIFT)); /* CS_SIZE */
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_avc_hw_scoreboard_state_base_address(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
-{
- struct intel_batchbuffer *batch = i965_h264_context->batch;
-
- BEGIN_BATCH(batch, 8);
- OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | 6);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_avc_hw_scoreboard_state_pointers(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
-{
- struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
- struct intel_batchbuffer *batch = i965_h264_context->batch;
-
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch, CMD_MEDIA_STATE_POINTERS | 1);
- OUT_BATCH(batch, 0);
- OUT_RELOC(batch, avc_hw_scoreboard_context->vfe_state.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_avc_hw_scoreboard_cs_urb_layout(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
-{
- struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
- struct intel_batchbuffer *batch = i965_h264_context->batch;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, CMD_CS_URB_STATE | 0);
- OUT_BATCH(batch,
- ((avc_hw_scoreboard_context->urb.size_cs_entry - 1) << 4) | /* URB Entry Allocation Size */
- (avc_hw_scoreboard_context->urb.num_cs_entries << 0)); /* Number of URB Entries */
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_avc_hw_scoreboard_constant_buffer(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
-{
- struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
- struct intel_batchbuffer *batch = i965_h264_context->batch;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, CMD_CONSTANT_BUFFER | (1 << 8) | (2 - 2));
- OUT_RELOC(batch, avc_hw_scoreboard_context->curbe.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- avc_hw_scoreboard_context->urb.size_cs_entry - 1);
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_avc_hw_scoreboard_objects(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
-{
- struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
- struct intel_batchbuffer *batch = i965_h264_context->batch;
- int number_mb_cmds = 512;
- int starting_mb_number = avc_hw_scoreboard_context->inline_data.starting_mb_number;
- int i;
-
- for (i = 0; i < avc_hw_scoreboard_context->inline_data.num_mb_cmds / 512; i++) {
- BEGIN_BATCH(batch, 6);
- OUT_BATCH(batch, CMD_MEDIA_OBJECT | 4);
- OUT_BATCH(batch, 0); /* interface descriptor offset: 0 */
- OUT_BATCH(batch, 0); /* no indirect data */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, ((number_mb_cmds << 16) |
- (starting_mb_number << 0)));
- OUT_BATCH(batch, avc_hw_scoreboard_context->inline_data.pic_width_in_mbs);
- ADVANCE_BATCH(batch);
-
- starting_mb_number += 512;
- }
-
- number_mb_cmds = avc_hw_scoreboard_context->inline_data.num_mb_cmds % 512;
-
- if (number_mb_cmds) {
- BEGIN_BATCH(batch, 6);
- OUT_BATCH(batch, CMD_MEDIA_OBJECT | 4);
- OUT_BATCH(batch, 0); /* interface descriptor offset: 0 */
- OUT_BATCH(batch, 0); /* no indirect data */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, ((number_mb_cmds << 16) |
- (starting_mb_number << 0)));
- OUT_BATCH(batch, avc_hw_scoreboard_context->inline_data.pic_width_in_mbs);
- ADVANCE_BATCH(batch);
- }
-}
-
-static void
-i965_avc_hw_scoreboard_pipeline_setup(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
-{
- struct intel_batchbuffer *batch = i965_h264_context->batch;
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- i965_avc_hw_scoreboard_pipeline_select(ctx, i965_h264_context);
- i965_avc_hw_scoreboard_state_base_address(ctx, i965_h264_context);
- i965_avc_hw_scoreboard_state_pointers(ctx, i965_h264_context);
- i965_avc_hw_scoreboard_urb_layout(ctx, i965_h264_context);
- i965_avc_hw_scoreboard_cs_urb_layout(ctx, i965_h264_context);
- i965_avc_hw_scoreboard_constant_buffer(ctx, i965_h264_context);
- i965_avc_hw_scoreboard_objects(ctx, i965_h264_context);
- intel_batchbuffer_end_atomic(batch);
-}
-
-void
-i965_avc_hw_scoreboard(VADriverContextP ctx, struct decode_state *decode_state, void *h264_context)
-{
- struct i965_h264_context *i965_h264_context = (struct i965_h264_context *)h264_context;
-
- if (i965_h264_context->use_avc_hw_scoreboard) {
- struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
-
- avc_hw_scoreboard_context->inline_data.num_mb_cmds = i965_h264_context->avc_it_command_mb_info.mbs;
- avc_hw_scoreboard_context->inline_data.starting_mb_number = i965_h264_context->avc_it_command_mb_info.mbs;
- avc_hw_scoreboard_context->inline_data.pic_width_in_mbs = i965_h264_context->picture.width_in_mbs;
- avc_hw_scoreboard_context->surface.total_mbs = i965_h264_context->avc_it_command_mb_info.mbs * 2;
-
- dri_bo_unreference(avc_hw_scoreboard_context->hw_kernel.bo);
- avc_hw_scoreboard_context->hw_kernel.bo = i965_h264_context->avc_kernels[H264_AVC_COMBINED].bo;
- assert(avc_hw_scoreboard_context->hw_kernel.bo != NULL);
- dri_bo_reference(avc_hw_scoreboard_context->hw_kernel.bo);
-
- if (i965_h264_context->picture.mbaff_frame_flag)
- avc_hw_scoreboard_context->hw_kernel.offset = avc_hw_scoreboard_kernel_offset[AVC_HW_SCOREBOARD_MBAFF];
- else
- avc_hw_scoreboard_context->hw_kernel.offset = avc_hw_scoreboard_kernel_offset[AVC_HW_SCOREBOARD];
-
- i965_avc_hw_scoreboard_states_setup(i965_h264_context);
- i965_avc_hw_scoreboard_pipeline_setup(ctx, i965_h264_context);
- }
-}
-
-void
-i965_avc_hw_scoreboard_decode_init(VADriverContextP ctx, void *h264_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_h264_context *i965_h264_context = (struct i965_h264_context *)h264_context;
-
- if (i965_h264_context->use_avc_hw_scoreboard) {
- struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context = &i965_h264_context->avc_hw_scoreboard_context;
- dri_bo *bo;
-
- if (avc_hw_scoreboard_context->curbe.bo == NULL) {
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "constant buffer",
- 4096, 64);
- assert(bo);
- avc_hw_scoreboard_context->curbe.bo = bo;
- avc_hw_scoreboard_context->curbe.upload = 0;
- }
-
- dri_bo_unreference(avc_hw_scoreboard_context->surface.s_bo);
- avc_hw_scoreboard_context->surface.s_bo = i965_h264_context->avc_it_command_mb_info.bo;
- assert(avc_hw_scoreboard_context->surface.s_bo != NULL);
- dri_bo_reference(avc_hw_scoreboard_context->surface.s_bo);
-
- dri_bo_unreference(avc_hw_scoreboard_context->surface.ss_bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "surface state",
- sizeof(struct i965_surface_state), 32);
- assert(bo);
- avc_hw_scoreboard_context->surface.ss_bo = bo;
-
- dri_bo_unreference(avc_hw_scoreboard_context->binding_table.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "binding table",
- MAX_MEDIA_SURFACES * sizeof(unsigned int), 32);
- assert(bo);
- avc_hw_scoreboard_context->binding_table.bo = bo;
-
- dri_bo_unreference(avc_hw_scoreboard_context->idrt.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "interface discriptor",
- MAX_INTERFACE_DESC * sizeof(struct i965_interface_descriptor), 16);
- assert(bo);
- avc_hw_scoreboard_context->idrt.bo = bo;
-
- dri_bo_unreference(avc_hw_scoreboard_context->vfe_state.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "vfe state",
- sizeof(struct i965_vfe_state), 32);
- assert(bo);
- avc_hw_scoreboard_context->vfe_state.bo = bo;
-
- avc_hw_scoreboard_context->urb.num_vfe_entries = 32;
- avc_hw_scoreboard_context->urb.size_vfe_entry = 2;
- avc_hw_scoreboard_context->urb.num_cs_entries = 1;
- avc_hw_scoreboard_context->urb.size_cs_entry = 1;
- avc_hw_scoreboard_context->urb.vfe_start = 0;
- avc_hw_scoreboard_context->urb.cs_start = avc_hw_scoreboard_context->urb.vfe_start +
- avc_hw_scoreboard_context->urb.num_vfe_entries * avc_hw_scoreboard_context->urb.size_vfe_entry;
- assert(avc_hw_scoreboard_context->urb.cs_start +
- avc_hw_scoreboard_context->urb.num_cs_entries * avc_hw_scoreboard_context->urb.size_cs_entry <= i965->intel.device_info->urb_size);
- }
-}
-
-Bool
-i965_avc_hw_scoreboard_ternimate(struct i965_avc_hw_scoreboard_context *avc_hw_scoreboard_context)
-{
- dri_bo_unreference(avc_hw_scoreboard_context->curbe.bo);
- avc_hw_scoreboard_context->curbe.bo = NULL;
-
- dri_bo_unreference(avc_hw_scoreboard_context->surface.ss_bo);
- avc_hw_scoreboard_context->surface.ss_bo = NULL;
-
- dri_bo_unreference(avc_hw_scoreboard_context->surface.s_bo);
- avc_hw_scoreboard_context->surface.s_bo = NULL;
-
- dri_bo_unreference(avc_hw_scoreboard_context->binding_table.bo);
- avc_hw_scoreboard_context->binding_table.bo = NULL;
-
- dri_bo_unreference(avc_hw_scoreboard_context->idrt.bo);
- avc_hw_scoreboard_context->idrt.bo = NULL;
-
- dri_bo_unreference(avc_hw_scoreboard_context->vfe_state.bo);
- avc_hw_scoreboard_context->vfe_state.bo = NULL;
-
- dri_bo_unreference(avc_hw_scoreboard_context->hw_kernel.bo);
- avc_hw_scoreboard_context->hw_kernel.bo = NULL;
-
- return True;
-}
diff --git a/src/i965_avc_hw_scoreboard.h b/src/i965_avc_hw_scoreboard.h
deleted file mode 100644
index bca8831..0000000
--- a/src/i965_avc_hw_scoreboard.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-
-#ifndef __I965_AVC_HW_SCOREBOARD_H__
-#define __I965_AVC_HW_SCOREBOARD_H__
-
-struct i965_avc_hw_scoreboard_context
-{
- struct {
- unsigned int num_mb_cmds;
- unsigned int starting_mb_number;
- unsigned int pic_width_in_mbs;
- } inline_data;
-
- struct {
- dri_bo *ss_bo;
- dri_bo *s_bo;
- unsigned int total_mbs;
- } surface;
-
- struct {
- dri_bo *bo;
- } binding_table;
-
- struct {
- dri_bo *bo;
- } idrt;
-
- struct {
- dri_bo *bo;
- } vfe_state;
-
- struct {
- dri_bo *bo;
- int upload;
- } curbe;
-
- struct {
- dri_bo *bo;
- unsigned long offset;
- } hw_kernel;
-
- struct {
- unsigned int vfe_start;
- unsigned int cs_start;
-
- unsigned int num_vfe_entries;
- unsigned int num_cs_entries;
-
- unsigned int size_vfe_entry;
- unsigned int size_cs_entry;
- } urb;
-};
-
-void i965_avc_hw_scoreboard(VADriverContextP, struct decode_state *, void *h264_context);
-void i965_avc_hw_scoreboard_decode_init(VADriverContextP, void *h264_context);
-Bool i965_avc_hw_scoreboard_ternimate(struct i965_avc_hw_scoreboard_context *);
-
-#endif /* __I965_AVC_HW_SCOREBOARD_H__ */
-
diff --git a/src/i965_avc_ildb.c b/src/i965_avc_ildb.c
deleted file mode 100644
index d414c90..0000000
--- a/src/i965_avc_ildb.c
+++ /dev/null
@@ -1,650 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "i965_avc_ildb.h"
-#include "i965_media_h264.h"
-#include "i965_media.h"
-
-/* On Cantiga */
-#include "shaders/h264/mc/export.inc"
-
-/* On Ironlake */
-#include "shaders/h264/mc/export.inc.gen5"
-
-#define PICTURE_FRAME 0
-#define PICTURE_FIELD 1
-#define PICTURE_MBAFF 2
-
-enum {
- AVC_ILDB_ROOT_Y_ILDB_FRAME,
- AVC_ILDB_CHILD_Y_ILDB_FRAME,
- AVC_ILDB_ROOT_UV_ILDB_FRAME,
- AVC_ILDB_CHILD_UV_ILDB_FRAME,
- AVC_ILDB_ROOT_Y_ILDB_FIELD,
- AVC_ILDB_CHILD_Y_ILDB_FIELD,
- AVC_ILDB_ROOT_UV_ILDB_FIELD,
- AVC_ILDB_CHILD_UV_ILDB_FIELD,
- AVC_ILDB_ROOT_Y_ILDB_MBAFF,
- AVC_ILDB_CHILD_Y_ILDB_MBAFF,
- AVC_ILDB_ROOT_UV_ILDB_MBAFF,
- AVC_ILDB_CHILD_UV_ILDB_MBAFF
-};
-
-static unsigned long avc_ildb_kernel_offset_gen4[] = {
- AVC_ILDB_ROOT_Y_ILDB_FRAME_IP * INST_UNIT_GEN4,
- AVC_ILDB_CHILD_Y_ILDB_FRAME_IP * INST_UNIT_GEN4,
- AVC_ILDB_ROOT_UV_ILDB_FRAME_IP * INST_UNIT_GEN4,
- AVC_ILDB_CHILD_UV_ILDB_FRAME_IP * INST_UNIT_GEN4,
- AVC_ILDB_ROOT_Y_ILDB_FIELD_IP * INST_UNIT_GEN4,
- AVC_ILDB_CHILD_Y_ILDB_FIELD_IP * INST_UNIT_GEN4,
- AVC_ILDB_ROOT_UV_ILDB_FIELD_IP * INST_UNIT_GEN4,
- AVC_ILDB_CHILD_UV_ILDB_FIELD_IP * INST_UNIT_GEN4,
- AVC_ILDB_ROOT_Y_ILDB_MBAFF_IP * INST_UNIT_GEN4,
- AVC_ILDB_CHILD_Y_ILDB_MBAFF_IP * INST_UNIT_GEN4,
- AVC_ILDB_ROOT_UV_ILDB_MBAFF_IP * INST_UNIT_GEN4,
- AVC_ILDB_CHILD_UV_ILDB_MBAFF_IP * INST_UNIT_GEN4
-};
-
-static unsigned long avc_ildb_kernel_offset_gen5[] = {
- AVC_ILDB_ROOT_Y_ILDB_FRAME_IP_GEN5 * INST_UNIT_GEN5,
- AVC_ILDB_CHILD_Y_ILDB_FRAME_IP_GEN5 * INST_UNIT_GEN5,
- AVC_ILDB_ROOT_UV_ILDB_FRAME_IP_GEN5 * INST_UNIT_GEN5,
- AVC_ILDB_CHILD_UV_ILDB_FRAME_IP_GEN5 * INST_UNIT_GEN5,
- AVC_ILDB_ROOT_Y_ILDB_FIELD_IP_GEN5 * INST_UNIT_GEN5,
- AVC_ILDB_CHILD_Y_ILDB_FIELD_IP_GEN5 * INST_UNIT_GEN5,
- AVC_ILDB_ROOT_UV_ILDB_FIELD_IP_GEN5 * INST_UNIT_GEN5,
- AVC_ILDB_CHILD_UV_ILDB_FIELD_IP_GEN5 * INST_UNIT_GEN5,
- AVC_ILDB_ROOT_Y_ILDB_MBAFF_IP_GEN5 * INST_UNIT_GEN5,
- AVC_ILDB_CHILD_Y_ILDB_MBAFF_IP_GEN5 * INST_UNIT_GEN5,
- AVC_ILDB_ROOT_UV_ILDB_MBAFF_IP_GEN5 * INST_UNIT_GEN5,
- AVC_ILDB_CHILD_UV_ILDB_MBAFF_IP_GEN5 * INST_UNIT_GEN5
-};
-
-struct avc_ildb_root_input
-{
- unsigned int blocks_per_row : 16;
- unsigned int blocks_per_column : 16;
-
- unsigned int picture_type : 16;
- unsigned int max_concurrent_threads : 16;
-
- unsigned int debug_field : 16;
- unsigned int mbaff_frame_flag : 1;
- unsigned int bottom_field_flag : 1;
- unsigned int control_data_expansion_flag : 1;
- unsigned int chroma_format : 1;
- unsigned int pad0 : 12;
-
- unsigned int ramp_constant_0;
-
- unsigned int ramp_constant_1;
-
- int constant_0 : 8;
- int constant_1 : 8;
- int pad1 : 16;
-
- unsigned int pad2;
- unsigned int pad3;
-};
-
-#define NUM_AVC_ILDB_INTERFACES ARRAY_ELEMS(avc_ildb_kernel_offset_gen4)
-static unsigned long *avc_ildb_kernel_offset = NULL;
-
-static void
-i965_avc_ildb_surface_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct i965_h264_context *i965_h264_context)
-{
- struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;
- struct i965_surface_state *ss;
- struct object_surface *obj_surface;
- VAPictureParameterBufferH264 *pic_param;
- VAPictureH264 *va_pic;
- dri_bo *bo;
- int i;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
- va_pic = &pic_param->CurrPic;
- obj_surface = decode_state->render_object;
-
- avc_ildb_context->surface[SURFACE_EDGE_CONTROL_DATA].s_bo = i965_h264_context->avc_ildb_data.bo;
- dri_bo_reference(avc_ildb_context->surface[SURFACE_EDGE_CONTROL_DATA].s_bo);
- avc_ildb_context->surface[SURFACE_EDGE_CONTROL_DATA].offset = 0;
- avc_ildb_context->surface[SURFACE_EDGE_CONTROL_DATA].surface_type = I965_SURFACE_BUFFER;
- avc_ildb_context->surface[SURFACE_EDGE_CONTROL_DATA].width = ((avc_ildb_context->mbs_per_picture * EDGE_CONTROL_DATA_IN_DWS - 1) & 0x7f);
- avc_ildb_context->surface[SURFACE_EDGE_CONTROL_DATA].height = (((avc_ildb_context->mbs_per_picture * EDGE_CONTROL_DATA_IN_DWS - 1) >> 7) & 0x1fff);
- avc_ildb_context->surface[SURFACE_EDGE_CONTROL_DATA].depth = (((avc_ildb_context->mbs_per_picture * EDGE_CONTROL_DATA_IN_DWS - 1) >> 20) & 0x7f);
- avc_ildb_context->surface[SURFACE_EDGE_CONTROL_DATA].pitch = EDGE_CONTROL_DATA_IN_BTYES - 1;
- avc_ildb_context->surface[SURFACE_EDGE_CONTROL_DATA].is_target = 0;
-
- avc_ildb_context->surface[SURFACE_SRC_Y].s_bo = obj_surface->bo;
- dri_bo_reference(avc_ildb_context->surface[SURFACE_SRC_Y].s_bo);
- avc_ildb_context->surface[SURFACE_SRC_Y].offset = 0;
- avc_ildb_context->surface[SURFACE_SRC_Y].surface_type = I965_SURFACE_2D;
- avc_ildb_context->surface[SURFACE_SRC_Y].format = I965_SURFACEFORMAT_R8_SINT;
- avc_ildb_context->surface[SURFACE_SRC_Y].width = obj_surface->width / 4 - 1;
- avc_ildb_context->surface[SURFACE_SRC_Y].height = obj_surface->height - 1;
- avc_ildb_context->surface[SURFACE_SRC_Y].depth = 0;
- avc_ildb_context->surface[SURFACE_SRC_Y].pitch = obj_surface->width - 1;
- avc_ildb_context->surface[SURFACE_SRC_Y].vert_line_stride = !!(va_pic->flags & (VA_PICTURE_H264_TOP_FIELD | VA_PICTURE_H264_BOTTOM_FIELD));
- avc_ildb_context->surface[SURFACE_SRC_Y].vert_line_stride_ofs = !!(va_pic->flags & VA_PICTURE_H264_BOTTOM_FIELD);
- avc_ildb_context->surface[SURFACE_SRC_Y].is_target = 0;
-
- avc_ildb_context->surface[SURFACE_SRC_UV].s_bo = obj_surface->bo;
- dri_bo_reference(avc_ildb_context->surface[SURFACE_SRC_UV].s_bo);
- avc_ildb_context->surface[SURFACE_SRC_UV].offset = obj_surface->width * obj_surface->height;
- avc_ildb_context->surface[SURFACE_SRC_UV].surface_type = I965_SURFACE_2D;
- avc_ildb_context->surface[SURFACE_SRC_UV].format = I965_SURFACEFORMAT_R8G8_SINT;
- avc_ildb_context->surface[SURFACE_SRC_UV].width = obj_surface->width / 4 - 1;
- avc_ildb_context->surface[SURFACE_SRC_UV].height = obj_surface->height / 2 - 1;
- avc_ildb_context->surface[SURFACE_SRC_UV].depth = 0;
- avc_ildb_context->surface[SURFACE_SRC_UV].pitch = obj_surface->width - 1;
- avc_ildb_context->surface[SURFACE_SRC_UV].vert_line_stride = !!(va_pic->flags & (VA_PICTURE_H264_TOP_FIELD | VA_PICTURE_H264_BOTTOM_FIELD));
- avc_ildb_context->surface[SURFACE_SRC_UV].vert_line_stride_ofs = !!(va_pic->flags & VA_PICTURE_H264_BOTTOM_FIELD);
- avc_ildb_context->surface[SURFACE_SRC_UV].is_target = 0;
-
- avc_ildb_context->surface[SURFACE_DEST_Y].s_bo = obj_surface->bo;
- dri_bo_reference(avc_ildb_context->surface[SURFACE_DEST_Y].s_bo);
- avc_ildb_context->surface[SURFACE_DEST_Y].offset = 0;
- avc_ildb_context->surface[SURFACE_DEST_Y].surface_type = I965_SURFACE_2D;
- avc_ildb_context->surface[SURFACE_DEST_Y].format = I965_SURFACEFORMAT_R8_SINT;
- avc_ildb_context->surface[SURFACE_DEST_Y].width = obj_surface->width / 4 - 1;
- avc_ildb_context->surface[SURFACE_DEST_Y].height = obj_surface->height - 1;
- avc_ildb_context->surface[SURFACE_DEST_Y].depth = 0;
- avc_ildb_context->surface[SURFACE_DEST_Y].pitch = obj_surface->width - 1;
- avc_ildb_context->surface[SURFACE_DEST_Y].vert_line_stride = !!(va_pic->flags & (VA_PICTURE_H264_TOP_FIELD | VA_PICTURE_H264_BOTTOM_FIELD));
- avc_ildb_context->surface[SURFACE_DEST_Y].vert_line_stride_ofs = !!(va_pic->flags & VA_PICTURE_H264_BOTTOM_FIELD);
- avc_ildb_context->surface[SURFACE_DEST_Y].is_target = 1;
-
- avc_ildb_context->surface[SURFACE_DEST_UV].s_bo = obj_surface->bo;
- dri_bo_reference(avc_ildb_context->surface[SURFACE_DEST_UV].s_bo);
- avc_ildb_context->surface[SURFACE_DEST_UV].offset = obj_surface->width * obj_surface->height;
- avc_ildb_context->surface[SURFACE_DEST_UV].surface_type = I965_SURFACE_2D;
- avc_ildb_context->surface[SURFACE_DEST_UV].format = I965_SURFACEFORMAT_R8G8_SINT;
- avc_ildb_context->surface[SURFACE_DEST_UV].width = obj_surface->width / 4 - 1;
- avc_ildb_context->surface[SURFACE_DEST_UV].height = obj_surface->height / 2 - 1;
- avc_ildb_context->surface[SURFACE_DEST_UV].depth = 0;
- avc_ildb_context->surface[SURFACE_DEST_UV].pitch = obj_surface->width - 1;
- avc_ildb_context->surface[SURFACE_DEST_UV].vert_line_stride = !!(va_pic->flags & (VA_PICTURE_H264_TOP_FIELD | VA_PICTURE_H264_BOTTOM_FIELD));
- avc_ildb_context->surface[SURFACE_DEST_UV].vert_line_stride_ofs = !!(va_pic->flags & VA_PICTURE_H264_BOTTOM_FIELD);
- avc_ildb_context->surface[SURFACE_DEST_UV].is_target = 1;
-
- for (i = 0; i < NUM_AVC_ILDB_SURFACES; i++) {
- bo = avc_ildb_context->surface[i].ss_bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- ss = bo->virtual;
- memset(ss, 0, sizeof(*ss));
- ss->ss0.surface_type = avc_ildb_context->surface[i].surface_type;
- ss->ss0.surface_format = avc_ildb_context->surface[i].format;
- ss->ss0.vert_line_stride = avc_ildb_context->surface[i].vert_line_stride;
- ss->ss0.vert_line_stride_ofs = avc_ildb_context->surface[i].vert_line_stride_ofs;
- ss->ss1.base_addr = avc_ildb_context->surface[i].s_bo->offset + avc_ildb_context->surface[i].offset;
- ss->ss2.width = avc_ildb_context->surface[i].width;
- ss->ss2.height = avc_ildb_context->surface[i].height;
- ss->ss3.depth = avc_ildb_context->surface[i].depth;
- ss->ss3.pitch = avc_ildb_context->surface[i].pitch;
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_RENDER,
- avc_ildb_context->surface[i].is_target ? I915_GEM_DOMAIN_RENDER : 0,
- avc_ildb_context->surface[i].offset,
- offsetof(struct i965_surface_state, ss1),
- avc_ildb_context->surface[i].s_bo);
- dri_bo_unmap(bo);
- }
-}
-
-static void
-i965_avc_ildb_binding_table(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
-{
- struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;
- unsigned int *binding_table;
- dri_bo *bo = avc_ildb_context->binding_table.bo;
- int i;
-
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- binding_table = bo->virtual;
- memset(binding_table, 0, bo->size);
-
- for (i = 0; i < NUM_AVC_ILDB_SURFACES; i++) {
- binding_table[i] = avc_ildb_context->surface[i].ss_bo->offset;
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0,
- i * sizeof(*binding_table),
- avc_ildb_context->surface[i].ss_bo);
- }
-
- dri_bo_unmap(bo);
-}
-
-static void
-i965_avc_ildb_interface_descriptor_table(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
-{
- struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;
- struct i965_interface_descriptor *desc;
- dri_bo *bo;
- int i;
-
- bo = avc_ildb_context->idrt.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- desc = bo->virtual;
-
- for (i = 0; i < NUM_AVC_ILDB_INTERFACES; i++) {
- int kernel_offset = avc_ildb_kernel_offset[i];
- memset(desc, 0, sizeof(*desc));
- desc->desc0.grf_reg_blocks = 7;
- desc->desc0.kernel_start_pointer = (i965_h264_context->avc_kernels[H264_AVC_COMBINED].bo->offset + kernel_offset) >> 6; /* reloc */
- desc->desc1.const_urb_entry_read_offset = 0;
- desc->desc1.const_urb_entry_read_len = ((i == AVC_ILDB_ROOT_Y_ILDB_FRAME ||
- i == AVC_ILDB_ROOT_Y_ILDB_FIELD ||
- i == AVC_ILDB_ROOT_Y_ILDB_MBAFF) ? 1 : 0);
- desc->desc3.binding_table_entry_count = 0;
- desc->desc3.binding_table_pointer =
- avc_ildb_context->binding_table.bo->offset >> 5; /*reloc */
-
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- desc->desc0.grf_reg_blocks + kernel_offset,
- i * sizeof(*desc) + offsetof(struct i965_interface_descriptor, desc0),
- i965_h264_context->avc_kernels[H264_AVC_COMBINED].bo);
-
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- desc->desc3.binding_table_entry_count,
- i * sizeof(*desc) + offsetof(struct i965_interface_descriptor, desc3),
- avc_ildb_context->binding_table.bo);
- desc++;
- }
-
- dri_bo_unmap(bo);
-}
-
-static void
-i965_avc_ildb_vfe_state(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
-{
- struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;
- struct i965_vfe_state *vfe_state;
- dri_bo *bo;
-
- bo = avc_ildb_context->vfe_state.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- vfe_state = bo->virtual;
- memset(vfe_state, 0, sizeof(*vfe_state));
- vfe_state->vfe1.max_threads = 0;
- vfe_state->vfe1.urb_entry_alloc_size = avc_ildb_context->urb.size_vfe_entry - 1;
- vfe_state->vfe1.num_urb_entries = avc_ildb_context->urb.num_vfe_entries;
- vfe_state->vfe1.vfe_mode = VFE_GENERIC_MODE;
- vfe_state->vfe1.children_present = 1;
- vfe_state->vfe2.interface_descriptor_base =
- avc_ildb_context->idrt.bo->offset >> 4; /* reloc */
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0,
- offsetof(struct i965_vfe_state, vfe2),
- avc_ildb_context->idrt.bo);
- dri_bo_unmap(bo);
-}
-
-static void
-i965_avc_ildb_upload_constants(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct i965_h264_context *i965_h264_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;
- VAPictureParameterBufferH264 *pic_param;
- struct avc_ildb_root_input *root_input;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
-
- dri_bo_map(avc_ildb_context->curbe.bo, 1);
- assert(avc_ildb_context->curbe.bo->virtual);
- root_input = avc_ildb_context->curbe.bo->virtual;
-
- if (IS_IRONLAKE(i965->intel.device_info)) {
- root_input->max_concurrent_threads = 76; /* 72 - 2 + 8 - 2 */
- } else {
- root_input->max_concurrent_threads = 54; /* 50 - 2 + 8 - 2 */
- }
-
- if (pic_param->pic_fields.bits.field_pic_flag)
- root_input->picture_type = PICTURE_FIELD;
- else {
- if (pic_param->seq_fields.bits.mb_adaptive_frame_field_flag)
- root_input->picture_type = PICTURE_MBAFF;
- else
- root_input->picture_type = PICTURE_FRAME;
- }
-
- avc_ildb_context->picture_type = root_input->picture_type;
- root_input->blocks_per_row = pic_param->picture_width_in_mbs_minus1 + 1;
- root_input->blocks_per_column = (pic_param->picture_height_in_mbs_minus1 + 1) /
- (1 + (root_input->picture_type != PICTURE_FRAME));
- avc_ildb_context->mbs_per_picture = (pic_param->picture_width_in_mbs_minus1 + 1) *
- (pic_param->picture_height_in_mbs_minus1 + 1);
-
- root_input->mbaff_frame_flag = (root_input->picture_type == PICTURE_MBAFF);
- root_input->bottom_field_flag = !!(pic_param->CurrPic.flags & VA_PICTURE_H264_BOTTOM_FIELD);
- root_input->control_data_expansion_flag = 1; /* Always 1 on G4x+ */
- root_input->chroma_format = (pic_param->seq_fields.bits.chroma_format_idc != 1); /* 0=4:0:0, 1=4:2:0 */
-
- root_input->ramp_constant_0 = 0x03020100;
-
- root_input->ramp_constant_1 = 0x07060504;
-
- root_input->constant_0 = -2;
- root_input->constant_1 = 1;
-
- dri_bo_unmap(avc_ildb_context->curbe.bo);
-}
-
-static void
-i965_avc_ildb_states_setup(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct i965_h264_context *i965_h264_context)
-{
- i965_avc_ildb_surface_state(ctx, decode_state, i965_h264_context);
- i965_avc_ildb_binding_table(ctx, i965_h264_context);
- i965_avc_ildb_interface_descriptor_table(ctx, i965_h264_context);
- i965_avc_ildb_vfe_state(ctx, i965_h264_context);
- i965_avc_ildb_upload_constants(ctx, decode_state, i965_h264_context);
-}
-
-static void
-i965_avc_ildb_pipeline_select(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
-{
- struct intel_batchbuffer *batch = i965_h264_context->batch;
-
- BEGIN_BATCH(batch, 1);
- OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_MEDIA);
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_avc_ildb_urb_layout(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;
- struct intel_batchbuffer *batch = i965_h264_context->batch;
- unsigned int vfe_fence, cs_fence;
-
- vfe_fence = avc_ildb_context->urb.cs_start;
- cs_fence = i965->intel.device_info->urb_size;
-
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch, CMD_URB_FENCE | UF0_VFE_REALLOC | UF0_CS_REALLOC | 1);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch,
- (vfe_fence << UF2_VFE_FENCE_SHIFT) | /* VFE_SIZE */
- (cs_fence << UF2_CS_FENCE_SHIFT)); /* CS_SIZE */
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_avc_ildb_state_base_address(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965_h264_context->batch;
-
- if (IS_IRONLAKE(i965->intel.device_info)) {
- BEGIN_BATCH(batch, 8);
- OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | 6);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- ADVANCE_BATCH(batch);
- } else {
- BEGIN_BATCH(batch, 6);
- OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | 4);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- ADVANCE_BATCH(batch);
- }
-}
-
-static void
-i965_avc_ildb_state_pointers(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
-{
- struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;
- struct intel_batchbuffer *batch = i965_h264_context->batch;
-
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch, CMD_MEDIA_STATE_POINTERS | 1);
- OUT_BATCH(batch, 0);
- OUT_RELOC(batch, avc_ildb_context->vfe_state.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_avc_ildb_cs_urb_layout(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
-{
- struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;
- struct intel_batchbuffer *batch = i965_h264_context->batch;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, CMD_CS_URB_STATE | 0);
- OUT_BATCH(batch,
- ((avc_ildb_context->urb.size_cs_entry - 1) << 4) | /* URB Entry Allocation Size */
- (avc_ildb_context->urb.num_cs_entries << 0)); /* Number of URB Entries */
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_avc_ildb_constant_buffer(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
-{
- struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;
- struct intel_batchbuffer *batch = i965_h264_context->batch;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, CMD_CONSTANT_BUFFER | (1 << 8) | (2 - 2));
- OUT_RELOC(batch, avc_ildb_context->curbe.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- avc_ildb_context->urb.size_cs_entry - 1);
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_avc_ildb_objects(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
-{
- struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;
- struct intel_batchbuffer *batch = i965_h264_context->batch;
-
- BEGIN_BATCH(batch, 6);
- OUT_BATCH(batch, CMD_MEDIA_OBJECT | 4);
-
- switch (avc_ildb_context->picture_type) {
- case PICTURE_FRAME:
- OUT_BATCH(batch, AVC_ILDB_ROOT_Y_ILDB_FRAME);
- break;
-
- case PICTURE_FIELD:
- OUT_BATCH(batch, AVC_ILDB_ROOT_Y_ILDB_FIELD);
- break;
-
- case PICTURE_MBAFF:
- OUT_BATCH(batch, AVC_ILDB_ROOT_Y_ILDB_MBAFF);
- break;
-
- default:
- assert(0);
- OUT_BATCH(batch, 0);
- break;
- }
-
- OUT_BATCH(batch, 0); /* no indirect data */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_avc_ildb_pipeline_setup(VADriverContextP ctx, struct i965_h264_context *i965_h264_context)
-{
- struct intel_batchbuffer *batch = i965_h264_context->batch;
-
- intel_batchbuffer_emit_mi_flush(batch);
- i965_avc_ildb_pipeline_select(ctx, i965_h264_context);
- i965_avc_ildb_state_base_address(ctx, i965_h264_context);
- i965_avc_ildb_state_pointers(ctx, i965_h264_context);
- i965_avc_ildb_urb_layout(ctx, i965_h264_context);
- i965_avc_ildb_cs_urb_layout(ctx, i965_h264_context);
- i965_avc_ildb_constant_buffer(ctx, i965_h264_context);
- i965_avc_ildb_objects(ctx, i965_h264_context);
-}
-
-void
-i965_avc_ildb(VADriverContextP ctx, struct decode_state *decode_state, void *h264_context)
-{
- struct i965_h264_context *i965_h264_context = (struct i965_h264_context *)h264_context;
-
- if (i965_h264_context->enable_avc_ildb) {
- i965_avc_ildb_states_setup(ctx, decode_state, i965_h264_context);
- i965_avc_ildb_pipeline_setup(ctx, i965_h264_context);
- }
-}
-
-void
-i965_avc_ildb_decode_init(VADriverContextP ctx, void *h264_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_h264_context *i965_h264_context = (struct i965_h264_context *)h264_context;
- struct i965_avc_ildb_context *avc_ildb_context = &i965_h264_context->avc_ildb_context;;
- dri_bo *bo;
- int i;
-
- dri_bo_unreference(avc_ildb_context->curbe.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "constant buffer",
- 4096, 64);
- assert(bo);
- avc_ildb_context->curbe.bo = bo;
-
- dri_bo_unreference(avc_ildb_context->binding_table.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "binding table",
- NUM_AVC_ILDB_SURFACES * sizeof(unsigned int), 32);
- assert(bo);
- avc_ildb_context->binding_table.bo = bo;
-
- dri_bo_unreference(avc_ildb_context->idrt.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "interface discriptor",
- NUM_AVC_ILDB_INTERFACES * sizeof(struct i965_interface_descriptor), 16);
- assert(bo);
- avc_ildb_context->idrt.bo = bo;
-
- dri_bo_unreference(avc_ildb_context->vfe_state.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "vfe state",
- sizeof(struct i965_vfe_state), 32);
- assert(bo);
- avc_ildb_context->vfe_state.bo = bo;
-
- avc_ildb_context->urb.num_vfe_entries = 1;
- avc_ildb_context->urb.size_vfe_entry = 640;
- avc_ildb_context->urb.num_cs_entries = 1;
- avc_ildb_context->urb.size_cs_entry = 1;
- avc_ildb_context->urb.vfe_start = 0;
- avc_ildb_context->urb.cs_start = avc_ildb_context->urb.vfe_start +
- avc_ildb_context->urb.num_vfe_entries * avc_ildb_context->urb.size_vfe_entry;
- assert(avc_ildb_context->urb.cs_start +
- avc_ildb_context->urb.num_cs_entries * avc_ildb_context->urb.size_cs_entry <= i965->intel.device_info->urb_size);
-
- for (i = 0; i < NUM_AVC_ILDB_SURFACES; i++) {
- dri_bo_unreference(avc_ildb_context->surface[i].s_bo);
- avc_ildb_context->surface[i].s_bo = NULL;
-
- dri_bo_unreference(avc_ildb_context->surface[i].ss_bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "surface state",
- sizeof(struct i965_surface_state), 32);
- assert(bo);
- avc_ildb_context->surface[i].ss_bo = bo;
- }
-
- /* kernel offset */
- assert(NUM_AVC_ILDB_INTERFACES == ARRAY_ELEMS(avc_ildb_kernel_offset_gen5));
-
- if (IS_IRONLAKE(i965->intel.device_info)) {
- avc_ildb_kernel_offset = avc_ildb_kernel_offset_gen5;
- } else {
- avc_ildb_kernel_offset = avc_ildb_kernel_offset_gen4;
- }
-}
-
-Bool
-i965_avc_ildb_ternimate(struct i965_avc_ildb_context *avc_ildb_context)
-{
- int i;
-
- dri_bo_unreference(avc_ildb_context->curbe.bo);
- avc_ildb_context->curbe.bo = NULL;
-
- dri_bo_unreference(avc_ildb_context->binding_table.bo);
- avc_ildb_context->binding_table.bo = NULL;
-
- dri_bo_unreference(avc_ildb_context->idrt.bo);
- avc_ildb_context->idrt.bo = NULL;
-
- dri_bo_unreference(avc_ildb_context->vfe_state.bo);
- avc_ildb_context->vfe_state.bo = NULL;
-
- for (i = 0; i < NUM_AVC_ILDB_SURFACES; i++) {
- dri_bo_unreference(avc_ildb_context->surface[i].ss_bo);
- avc_ildb_context->surface[i].ss_bo = NULL;
-
- dri_bo_unreference(avc_ildb_context->surface[i].s_bo);
- avc_ildb_context->surface[i].s_bo = NULL;
- }
-
- return True;
-}
diff --git a/src/i965_avc_ildb.h b/src/i965_avc_ildb.h
deleted file mode 100644
index ff16ac6..0000000
--- a/src/i965_avc_ildb.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-
-#ifndef __I965_AVC_ILDB_H__
-#define __I965_AVC_ILDB_H__
-
-#define SURFACE_EDGE_CONTROL_DATA 0
-#define SURFACE_SRC_Y 1
-#define SURFACE_SRC_UV 2
-#define SURFACE_DEST_Y 3
-#define SURFACE_DEST_UV 4
-
-#define NUM_AVC_ILDB_SURFACES 5
-
-#define EDGE_CONTROL_DATA_IN_DWS 16
-#define EDGE_CONTROL_DATA_IN_BTYES 64
-
-struct i965_avc_ildb_context
-{
- struct {
- dri_bo *bo;
- } curbe;
-
- struct {
- dri_bo *ss_bo;
- dri_bo *s_bo;
- unsigned long offset;
- int surface_type;
- int width;
- int height;
- int depth;
- int pitch;
- int format;
- int vert_line_stride;
- int vert_line_stride_ofs;
- int is_target;
- } surface[NUM_AVC_ILDB_SURFACES];
-
- struct {
- dri_bo *bo;
- } binding_table;
-
- struct {
- dri_bo *bo;
- } idrt;
-
- struct {
- dri_bo *bo;
- } vfe_state;
-
- struct {
- unsigned int vfe_start;
- unsigned int cs_start;
-
- unsigned int num_vfe_entries;
- unsigned int num_cs_entries;
-
- unsigned int size_vfe_entry;
- unsigned int size_cs_entry;
- } urb;
-
- int picture_type;
- int mbs_per_picture;
-};
-
-void i965_avc_ildb(VADriverContextP, struct decode_state *, void *h264_context);
-void i965_avc_ildb_decode_init(VADriverContextP, void *h264_context);
-Bool i965_avc_ildb_ternimate(struct i965_avc_ildb_context *);
-
-#endif /* __I965_AVC_ILDB_H__ */
-
diff --git a/src/i965_decoder.h b/src/i965_decoder.h
deleted file mode 100644
index 9ef0349..0000000
--- a/src/i965_decoder.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (C) 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef I965_DECODER_H
-#define I965_DECODER_H
-
-#include <stdint.h>
-#include <stdlib.h>
-
-#include <va/va.h>
-#include <va/va_dec_vp8.h>
-#include <va/va_dec_hevc.h>
-#include <intel_bufmgr.h>
-
-#define MAX_GEN_REFERENCE_FRAMES 16
-#define MAX_GEN_HCP_REFERENCE_FRAMES 8
-
-#define ALLOC_GEN_BUFFER(gen_buffer, string, size) do { \
- dri_bo_unreference(gen_buffer->bo); \
- gen_buffer->bo = dri_bo_alloc(i965->intel.bufmgr, \
- string, \
- size, \
- 0x1000); \
- assert(gen_buffer->bo); \
- gen_buffer->valid = 1; \
- } while (0);
-
-#define FREE_GEN_BUFFER(gen_buffer) do { \
- dri_bo_unreference(gen_buffer->bo); \
- gen_buffer->bo = NULL; \
- gen_buffer->valid = 0; \
- } while (0)
-
-typedef struct gen_frame_store GenFrameStore;
-struct gen_frame_store {
- VASurfaceID surface_id;
- int frame_store_id;
- struct object_surface *obj_surface;
-
- /* This represents the time when this frame store was last used to
- hold a reference frame. This is not connected to a presentation
- timestamp (PTS), and this is not a common decoding time stamp
- (DTS) either. It serves the purpose of tracking retired
- reference frame candidates.
-
- This is only used for H.264 decoding on platforms before Haswell */
- uint64_t ref_age;
-};
-
-typedef struct gen_frame_store_context GenFrameStoreContext;
-struct gen_frame_store_context {
- uint64_t age;
- int prev_poc;
-};
-
-typedef struct gen_buffer GenBuffer;
-struct gen_buffer {
- dri_bo *bo;
- int valid;
-};
-
-struct hw_context *
-gen75_dec_hw_context_init(VADriverContextP ctx, struct object_config *obj_config);
-
-extern struct hw_context *
-gen8_dec_hw_context_init(VADriverContextP ctx, struct object_config *obj_config);
-#endif /* I965_DECODER_H */
diff --git a/src/i965_decoder_utils.c b/src/i965_decoder_utils.c
deleted file mode 100644
index 640fd14..0000000
--- a/src/i965_decoder_utils.c
+++ /dev/null
@@ -1,1533 +0,0 @@
-/*
- * Copyright (C) 2006-2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-#include "sysdeps.h"
-#include <limits.h>
-#include <alloca.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_media.h"
-#include "i965_drv_video.h"
-#include "i965_decoder_utils.h"
-#include "i965_defines.h"
-
-/* Set reference surface if backing store exists */
-static inline int
-set_ref_frame(
- struct i965_driver_data *i965,
- GenFrameStore *ref_frame,
- VASurfaceID va_surface,
- struct object_surface *obj_surface
-)
-{
- if (va_surface == VA_INVALID_ID)
- return 0;
-
- if (!obj_surface || !obj_surface->bo)
- return 0;
-
- ref_frame->surface_id = va_surface;
- ref_frame->obj_surface = obj_surface;
- return 1;
-}
-
-/* Check wether codec layer incorrectly fills in slice_vertical_position */
-int
-mpeg2_wa_slice_vertical_position(
- struct decode_state *decode_state,
- VAPictureParameterBufferMPEG2 *pic_param
-)
-{
- unsigned int i, j, mb_height, vpos, last_vpos = 0;
-
- /* Assume progressive sequence if we got a progressive frame */
- if (pic_param->picture_coding_extension.bits.progressive_frame)
- return 0;
-
- /* Wait for a field coded picture */
- if (pic_param->picture_coding_extension.bits.picture_structure == MPEG_FRAME)
- return -1;
-
- assert(decode_state && decode_state->slice_params);
-
- mb_height = (pic_param->vertical_size + 31) / 32;
-
- for (j = 0; j < decode_state->num_slice_params; j++) {
- struct buffer_store * const buffer_store =
- decode_state->slice_params[j];
-
- for (i = 0; i < buffer_store->num_elements; i++) {
- VASliceParameterBufferMPEG2 * const slice_param =
- ((VASliceParameterBufferMPEG2 *)buffer_store->buffer) + i;
-
- vpos = slice_param->slice_vertical_position;
- if (vpos >= mb_height || vpos == last_vpos + 2) {
- WARN_ONCE("codec layer incorrectly fills in MPEG-2 slice_vertical_position. Workaround applied\n");
- return 1;
- }
- last_vpos = vpos;
- }
- }
- return 0;
-}
-
-/* Build MPEG-2 reference frames array */
-void
-mpeg2_set_reference_surfaces(
- VADriverContextP ctx,
- GenFrameStore ref_frames[MAX_GEN_REFERENCE_FRAMES],
- struct decode_state *decode_state,
- VAPictureParameterBufferMPEG2 *pic_param
-)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- VASurfaceID va_surface;
- unsigned pic_structure, is_second_field, n = 0;
- struct object_surface *obj_surface;
-
- pic_structure = pic_param->picture_coding_extension.bits.picture_structure;
- is_second_field = pic_structure != MPEG_FRAME &&
- !pic_param->picture_coding_extension.bits.is_first_field;
-
- ref_frames[0].surface_id = VA_INVALID_ID;
- ref_frames[0].obj_surface = NULL;
-
- /* Reference frames are indexed by frame store ID (0:top, 1:bottom) */
- switch (pic_param->picture_coding_type) {
- case MPEG_P_PICTURE:
- if (is_second_field && pic_structure == MPEG_BOTTOM_FIELD) {
- va_surface = decode_state->current_render_target;
- obj_surface = decode_state->render_object;
- n += set_ref_frame(i965, &ref_frames[n], va_surface, obj_surface);
- }
- va_surface = pic_param->forward_reference_picture;
- obj_surface = decode_state->reference_objects[0];
- n += set_ref_frame(i965, &ref_frames[n], va_surface, obj_surface);
- break;
-
- case MPEG_B_PICTURE:
- va_surface = pic_param->forward_reference_picture;
- obj_surface = decode_state->reference_objects[0];
- n += set_ref_frame(i965, &ref_frames[n], va_surface, obj_surface);
- va_surface = pic_param->backward_reference_picture;
- obj_surface = decode_state->reference_objects[1];
- n += set_ref_frame(i965, &ref_frames[n], va_surface, obj_surface);
- break;
- }
-
- while (n != 2) {
- ref_frames[n].obj_surface = ref_frames[0].obj_surface;
- ref_frames[n++].surface_id = ref_frames[0].surface_id;
- }
-
- if (pic_param->picture_coding_extension.bits.frame_pred_frame_dct)
- return;
-
- ref_frames[2].surface_id = VA_INVALID_ID;
- ref_frames[2].obj_surface = NULL;
-
- /* Bottom field pictures used as reference */
- switch (pic_param->picture_coding_type) {
- case MPEG_P_PICTURE:
- if (is_second_field && pic_structure == MPEG_TOP_FIELD) {
- va_surface = decode_state->current_render_target;
- obj_surface = decode_state->render_object;
- n += set_ref_frame(i965, &ref_frames[n], va_surface, obj_surface);
- }
- va_surface = pic_param->forward_reference_picture;
- obj_surface = decode_state->reference_objects[0];
- n += set_ref_frame(i965, &ref_frames[n], va_surface, obj_surface);
- break;
-
- case MPEG_B_PICTURE:
- va_surface = pic_param->forward_reference_picture;
- obj_surface = decode_state->reference_objects[0];
- n += set_ref_frame(i965, &ref_frames[n], va_surface, obj_surface);
- va_surface = pic_param->backward_reference_picture;
- obj_surface = decode_state->reference_objects[1];
- n += set_ref_frame(i965, &ref_frames[n], va_surface, obj_surface);
- break;
- }
-
- while (n != 4) {
- ref_frames[n].obj_surface = ref_frames[2].obj_surface;
- ref_frames[n++].surface_id = ref_frames[2].surface_id;
- }
-}
-
-/* Ensure the supplied VA surface has valid storage for decoding the
- current picture */
-VAStatus
-avc_ensure_surface_bo(
- VADriverContextP ctx,
- struct decode_state *decode_state,
- struct object_surface *obj_surface,
- const VAPictureParameterBufferH264 *pic_param
-)
-{
- VAStatus va_status;
- uint32_t hw_fourcc, fourcc, subsample, chroma_format;
-
- /* Validate chroma format */
- switch (pic_param->seq_fields.bits.chroma_format_idc) {
- case 0: // Grayscale
- fourcc = VA_FOURCC_Y800;
- subsample = SUBSAMPLE_YUV400;
- chroma_format = VA_RT_FORMAT_YUV400;
- break;
- case 1: // YUV 4:2:0
- fourcc = VA_FOURCC_NV12;
- subsample = SUBSAMPLE_YUV420;
- chroma_format = VA_RT_FORMAT_YUV420;
- break;
- default:
- return VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT;
- }
-
- /* Determine the HW surface format, bound to VA config needs */
- if ((decode_state->base.chroma_formats & chroma_format) == chroma_format)
- hw_fourcc = fourcc;
- else {
- hw_fourcc = 0;
- switch (fourcc) {
- case VA_FOURCC_Y800: // Implement with an NV12 surface
- if (decode_state->base.chroma_formats & VA_RT_FORMAT_YUV420) {
- hw_fourcc = VA_FOURCC_NV12;
- subsample = SUBSAMPLE_YUV420;
- }
- break;
- }
- }
- if (!hw_fourcc)
- return VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT;
-
- /* (Re-)allocate the underlying surface buffer store, if necessary */
- if (!obj_surface->bo || obj_surface->fourcc != hw_fourcc) {
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
-
- i965_destroy_surface_storage(obj_surface);
- va_status = i965_check_alloc_surface_bo(ctx, obj_surface,
- i965->codec_info->has_tiled_surface, hw_fourcc, subsample);
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
- }
-
- /* Fake chroma components if grayscale is implemented on top of NV12 */
- if (fourcc == VA_FOURCC_Y800 && hw_fourcc == VA_FOURCC_NV12) {
- const uint32_t uv_offset = obj_surface->width * obj_surface->height;
- const uint32_t uv_size = obj_surface->width * obj_surface->height / 2;
-
- drm_intel_gem_bo_map_gtt(obj_surface->bo);
- memset(obj_surface->bo->virtual + uv_offset, 0x80, uv_size);
- drm_intel_gem_bo_unmap_gtt(obj_surface->bo);
- }
- return VA_STATUS_SUCCESS;
-}
-
-/* Generate flat scaling matrices for H.264 decoding */
-void
-avc_gen_default_iq_matrix(VAIQMatrixBufferH264 *iq_matrix)
-{
- /* Flat_4x4_16 */
- memset(&iq_matrix->ScalingList4x4, 16, sizeof(iq_matrix->ScalingList4x4));
-
- /* Flat_8x8_16 */
- memset(&iq_matrix->ScalingList8x8, 16, sizeof(iq_matrix->ScalingList8x8));
-}
-
-/* Returns the POC of the supplied VA picture */
-static int
-avc_get_picture_poc(const VAPictureH264 *va_pic)
-{
- int structure, field_poc[2];
-
- structure = va_pic->flags &
- (VA_PICTURE_H264_TOP_FIELD | VA_PICTURE_H264_BOTTOM_FIELD);
- field_poc[0] = structure != VA_PICTURE_H264_BOTTOM_FIELD ?
- va_pic->TopFieldOrderCnt : INT_MAX;
- field_poc[1] = structure != VA_PICTURE_H264_TOP_FIELD ?
- va_pic->BottomFieldOrderCnt : INT_MAX;
- return MIN(field_poc[0], field_poc[1]);
-}
-
-/* Returns a unique picture ID that represents the supplied VA surface object */
-int
-avc_get_picture_id(struct object_surface *obj_surface)
-{
- int pic_id;
-
- /* This highly depends on how the internal VA objects are organized.
-
- Theory of operations:
- The VA objects are maintained in heaps so that any released VA
- surface will become free again for future allocation. This means
- that holes in there are filled in for subsequent allocations.
- So, this ultimately means that we could just use the Heap ID of
- the VA surface as the resulting picture ID (16 bits) */
- pic_id = 1 + (obj_surface->base.id & OBJECT_HEAP_ID_MASK);
- return (pic_id <= 0xffff) ? pic_id : -1;
-}
-
-/* Finds the VA/H264 picture associated with the specified VA surface id */
-VAPictureH264 *
-avc_find_picture(VASurfaceID id, VAPictureH264 *pic_list, int pic_list_count)
-{
- int i;
-
- if (id != VA_INVALID_ID) {
- for (i = 0; i < pic_list_count; i++) {
- VAPictureH264 * const va_pic = &pic_list[i];
- if (va_pic->picture_id == id &&
- !(va_pic->flags & VA_PICTURE_H264_INVALID))
- return va_pic;
- }
- }
- return NULL;
-}
-
-/* Get first macroblock bit offset for BSD, minus EPB count (AVC) */
-/* XXX: slice_data_bit_offset does not account for EPB */
-unsigned int
-avc_get_first_mb_bit_offset(
- dri_bo *slice_data_bo,
- VASliceParameterBufferH264 *slice_param,
- unsigned int mode_flag
-)
-{
- unsigned int slice_data_bit_offset = slice_param->slice_data_bit_offset;
-
- if (mode_flag == ENTROPY_CABAC)
- slice_data_bit_offset = ALIGN(slice_data_bit_offset, 0x8);
- return slice_data_bit_offset;
-}
-
-/* Get first macroblock bit offset for BSD, with EPB count (AVC) */
-/* XXX: slice_data_bit_offset does not account for EPB */
-unsigned int
-avc_get_first_mb_bit_offset_with_epb(
- dri_bo *slice_data_bo,
- VASliceParameterBufferH264 *slice_param,
- unsigned int mode_flag
-)
-{
- unsigned int in_slice_data_bit_offset = slice_param->slice_data_bit_offset;
- unsigned int out_slice_data_bit_offset;
- unsigned int i, j, n, buf_size, data_size, header_size;
- uint8_t *buf;
- int ret;
-
- header_size = slice_param->slice_data_bit_offset / 8;
- data_size = slice_param->slice_data_size - slice_param->slice_data_offset;
- buf_size = (header_size * 3 + 1) / 2; // Max possible header size (x1.5)
-
- if (buf_size > data_size)
- buf_size = data_size;
-
- buf = alloca(buf_size);
- ret = dri_bo_get_subdata(
- slice_data_bo, slice_param->slice_data_offset,
- buf_size, buf
- );
- assert(ret == 0);
-
- for (i = 2, j = 2, n = 0; i < buf_size && j < header_size; i++, j++) {
- if (buf[i] == 0x03 && buf[i - 1] == 0x00 && buf[i - 2] == 0x00)
- i += 2, j++, n++;
- }
-
- out_slice_data_bit_offset = in_slice_data_bit_offset + n * 8;
-
- if (mode_flag == ENTROPY_CABAC)
- out_slice_data_bit_offset = ALIGN(out_slice_data_bit_offset, 0x8);
- return out_slice_data_bit_offset;
-}
-
-static inline uint8_t
-get_ref_idx_state_1(const VAPictureH264 *va_pic, unsigned int frame_store_id)
-{
- /* The H.264 standard, and the VA-API specification, allows for at
- least 3 states for a picture: "used for short-term reference",
- "used for long-term reference", or considered as not used for
- reference.
-
- The latter is used in the MVC inter prediction and inter-view
- prediction process (H.8.4). This has an incidence on the
- colZeroFlag variable, as defined in 8.4.1.2.
-
- Since it is not possible to directly program that flag, let's
- make the hardware derive this value by assimilating "considered
- as not used for reference" to a "not used for short-term
- reference", and subsequently making it "used for long-term
- reference" to fit the definition of Bit6 here */
- const unsigned int ref_flags = VA_PICTURE_H264_SHORT_TERM_REFERENCE |
- VA_PICTURE_H264_LONG_TERM_REFERENCE;
- const unsigned int is_long_term =
- ((va_pic->flags & ref_flags) != VA_PICTURE_H264_SHORT_TERM_REFERENCE);
- const unsigned int is_top_field =
- !!(va_pic->flags & VA_PICTURE_H264_TOP_FIELD);
- const unsigned int is_bottom_field =
- !!(va_pic->flags & VA_PICTURE_H264_BOTTOM_FIELD);
-
- return ((is_long_term << 6) |
- ((is_top_field ^ is_bottom_field ^ 1) << 5) |
- (frame_store_id << 1) |
- ((is_top_field ^ 1) & is_bottom_field));
-}
-
-/* Fill in Reference List Entries (Gen5+: ILK, SNB, IVB) */
-void
-gen5_fill_avc_ref_idx_state(
- uint8_t state[32],
- const VAPictureH264 ref_list[32],
- unsigned int ref_list_count,
- const GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES]
-)
-{
- int i, j;
-
- for (i = 0; i < ref_list_count; i++) {
- const VAPictureH264 * const va_pic = &ref_list[i];
-
- if ((va_pic->flags & VA_PICTURE_H264_INVALID) ||
- va_pic->picture_id == VA_INVALID_ID) {
- state[i] = 0xff;
- continue;
- }
-
- for (j = 0; j < MAX_GEN_REFERENCE_FRAMES; j++) {
- if (frame_store[j].surface_id == va_pic->picture_id)
- break;
- }
-
- if (j != MAX_GEN_REFERENCE_FRAMES) { // Found picture in the Frame Store
- const GenFrameStore * const fs = &frame_store[j];
- assert(fs->frame_store_id == j); // Current architecture/assumption
- state[i] = get_ref_idx_state_1(va_pic, fs->frame_store_id);
- }
- else {
- WARN_ONCE("Invalid RefPicListX[] entry!!! It is not included in DPB\n");
- state[i] = get_ref_idx_state_1(va_pic, 0) | 0x80;
- }
- }
-
- for (; i < 32; i++)
- state[i] = 0xff;
-}
-
-/* Emit Reference List Entries (Gen6+: SNB, IVB) */
-static void
-gen6_send_avc_ref_idx_state_1(
- struct intel_batchbuffer *batch,
- unsigned int list,
- const VAPictureH264 *ref_list,
- unsigned int ref_list_count,
- const GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES]
-)
-{
- uint8_t ref_idx_state[32];
-
- BEGIN_BCS_BATCH(batch, 10);
- OUT_BCS_BATCH(batch, MFX_AVC_REF_IDX_STATE | (10 - 2));
- OUT_BCS_BATCH(batch, list);
- gen5_fill_avc_ref_idx_state(
- ref_idx_state,
- ref_list, ref_list_count,
- frame_store
- );
- intel_batchbuffer_data(batch, ref_idx_state, sizeof(ref_idx_state));
- ADVANCE_BCS_BATCH(batch);
-}
-
-void
-gen6_send_avc_ref_idx_state(
- struct intel_batchbuffer *batch,
- const VASliceParameterBufferH264 *slice_param,
- const GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES]
-)
-{
- if (slice_param->slice_type == SLICE_TYPE_I ||
- slice_param->slice_type == SLICE_TYPE_SI)
- return;
-
- /* RefPicList0 */
- gen6_send_avc_ref_idx_state_1(
- batch, 0,
- slice_param->RefPicList0, slice_param->num_ref_idx_l0_active_minus1 + 1,
- frame_store
- );
-
- if (slice_param->slice_type != SLICE_TYPE_B)
- return;
-
- /* RefPicList1 */
- gen6_send_avc_ref_idx_state_1(
- batch, 1,
- slice_param->RefPicList1, slice_param->num_ref_idx_l1_active_minus1 + 1,
- frame_store
- );
-}
-
-static void
-gen6_mfd_avc_phantom_slice_state(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *next_slice_param,
- struct intel_batchbuffer *batch)
-{
- int width_in_mbs = pic_param->picture_width_in_mbs_minus1 + 1;
- int height_in_mbs = pic_param->picture_height_in_mbs_minus1 + 1; /* frame height */
- int slice_hor_pos, slice_ver_pos, slice_start_mb_num, next_slice_hor_pos, next_slice_ver_pos;
- int mbaff_picture = (!pic_param->pic_fields.bits.field_pic_flag &&
- pic_param->seq_fields.bits.mb_adaptive_frame_field_flag);
-
- if (next_slice_param) {
- int first_mb_in_next_slice;
-
- slice_hor_pos = 0;
- slice_ver_pos = 0;
- slice_start_mb_num = 0;
- first_mb_in_next_slice = next_slice_param->first_mb_in_slice << mbaff_picture;
- next_slice_hor_pos = first_mb_in_next_slice % width_in_mbs;
- next_slice_ver_pos = first_mb_in_next_slice / width_in_mbs;
- } else {
- slice_hor_pos = 0;
- slice_ver_pos = height_in_mbs;
- slice_start_mb_num = width_in_mbs * height_in_mbs / (1 + !!pic_param->pic_fields.bits.field_pic_flag);
- next_slice_hor_pos = 0;
- next_slice_ver_pos = 0;
- }
-
- BEGIN_BCS_BATCH(batch, 11);
- OUT_BCS_BATCH(batch, MFX_AVC_SLICE_STATE | (11 - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch,
- slice_ver_pos << 24 |
- slice_hor_pos << 16 |
- slice_start_mb_num << 0);
- OUT_BCS_BATCH(batch,
- next_slice_ver_pos << 16 |
- next_slice_hor_pos << 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
-gen6_mfd_avc_phantom_slice_bsd_object(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- struct intel_batchbuffer *batch)
-{
-
- BEGIN_BCS_BATCH(batch, 6);
- OUT_BCS_BATCH(batch, MFD_AVC_BSD_OBJECT | (6 - 2));
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
-}
-
-void
-gen6_mfd_avc_phantom_slice(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *next_slice_param,
- struct intel_batchbuffer *batch)
-{
- gen6_mfd_avc_phantom_slice_state(ctx, pic_param, next_slice_param, batch);
- gen6_mfd_avc_phantom_slice_bsd_object(ctx, pic_param, batch);
-}
-
-/* Comparison function for sorting out the array of free frame store entries */
-static int
-compare_avc_ref_store_func(const void *p1, const void *p2)
-{
- const GenFrameStore * const fs1 = *((GenFrameStore **)p1);
- const GenFrameStore * const fs2 = *((GenFrameStore **)p2);
-
- return fs1->ref_age - fs2->ref_age;
-}
-
-static void
-intel_update_codec_frame_store_index(
- VADriverContextP ctx,
- struct decode_state *decode_state,
- int poc,
- GenFrameStore frame_store[],
- int num_elements,
- GenFrameStoreContext *fs_ctx
-)
-{
- GenFrameStore **free_refs = calloc(num_elements, sizeof(GenFrameStore *));
- uint32_t used_refs = 0, add_refs = 0;
- uint64_t age;
- int i, n, num_free_refs;
-
- if (!free_refs)
- return;
-
- /* Detect changes of access unit */
- if (fs_ctx->age == 0 || fs_ctx->prev_poc != poc)
- fs_ctx->age++;
- fs_ctx->prev_poc = poc;
- age = fs_ctx->age;
-
- /* Tag entries that are still available in our Frame Store */
- for (i = 0; i < ARRAY_ELEMS(decode_state->reference_objects); i++) {
- struct object_surface * const obj_surface =
- decode_state->reference_objects[i];
- if (!obj_surface)
- continue;
-
- GenCodecSurface * const codec_surface = obj_surface->private_data;
- if (!codec_surface)
- continue;
- if (codec_surface->frame_store_id >= 0) {
- GenFrameStore * const fs =
- &frame_store[codec_surface->frame_store_id];
- if (fs->surface_id == obj_surface->base.id) {
- fs->obj_surface = obj_surface;
- fs->ref_age = age;
- used_refs |= 1 << fs->frame_store_id;
- continue;
- }
- }
- add_refs |= 1 << i;
- }
-
- /* Build and sort out the list of retired candidates. The resulting
- list is ordered by increasing age when they were last used */
- for (i = 0, n = 0; i < num_elements; i++) {
- if (!(used_refs & (1 << i))) {
- GenFrameStore * const fs = &frame_store[i];
- fs->obj_surface = NULL;
- free_refs[n++] = fs;
- }
- }
- num_free_refs = n;
- qsort(&free_refs[0], n, sizeof(free_refs[0]), compare_avc_ref_store_func);
-
- /* Append the new reference frames */
- for (i = 0, n = 0; i < ARRAY_ELEMS(decode_state->reference_objects); i++) {
- struct object_surface * const obj_surface =
- decode_state->reference_objects[i];
- if (!obj_surface || !(add_refs & (1 << i)))
- continue;
-
- GenCodecSurface * const codec_surface = obj_surface->private_data;
- if (!codec_surface)
- continue;
- if (n < num_free_refs) {
- GenFrameStore * const fs = free_refs[n++];
- fs->surface_id = obj_surface->base.id;
- fs->obj_surface = obj_surface;
- fs->frame_store_id = fs - frame_store;
- fs->ref_age = age;
- codec_surface->frame_store_id = fs->frame_store_id;
- continue;
- }
- WARN_ONCE("No free slot found for DPB reference list!!!\n");
- }
-
- free(free_refs);
-}
-
-void
-intel_update_avc_frame_store_index(
- VADriverContextP ctx,
- struct decode_state *decode_state,
- VAPictureParameterBufferH264 *pic_param,
- GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES],
- GenFrameStoreContext *fs_ctx
-)
-{
- intel_update_codec_frame_store_index(ctx,
- decode_state,
- avc_get_picture_poc(&pic_param->CurrPic),
- frame_store,
- MAX_GEN_REFERENCE_FRAMES,
- fs_ctx);
-}
-
-void
-intel_update_hevc_frame_store_index(
- VADriverContextP ctx,
- struct decode_state *decode_state,
- VAPictureParameterBufferHEVC *pic_param,
- GenFrameStore frame_store[MAX_GEN_HCP_REFERENCE_FRAMES],
- GenFrameStoreContext *fs_ctx
- )
-{
- int i, n = 0;
-
- for (i = 0; i < ARRAY_ELEMS(decode_state->reference_objects); i++) {
- struct object_surface * const obj_surface = decode_state->reference_objects[i];
-
- if (!obj_surface)
- continue;
-
- GenFrameStore * const fs = &frame_store[n];
- fs->surface_id = obj_surface->base.id;
- fs->obj_surface = obj_surface;
- fs->frame_store_id = n++;
-
- if (n == MAX_GEN_HCP_REFERENCE_FRAMES)
- break;
- }
-
- for (; n < MAX_GEN_HCP_REFERENCE_FRAMES; n++) {
- GenFrameStore * const fs = &frame_store[n];
-
- fs->surface_id = VA_INVALID_ID;
- fs->obj_surface = NULL;
- fs->frame_store_id = -1;
- }
-}
-
-void
-gen75_update_avc_frame_store_index(
- VADriverContextP ctx,
- struct decode_state *decode_state,
- VAPictureParameterBufferH264 *pic_param,
- GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES]
-)
-{
- int i, n;
-
- /* Construct the Frame Store array, in compact form. i.e. empty or
- invalid entries are discarded. */
- for (i = 0, n = 0; i < ARRAY_ELEMS(decode_state->reference_objects); i++) {
- struct object_surface * const obj_surface =
- decode_state->reference_objects[i];
- if (!obj_surface)
- continue;
-
- GenFrameStore * const fs = &frame_store[n];
- fs->surface_id = obj_surface->base.id;
- fs->obj_surface = obj_surface;
- fs->frame_store_id = n++;
- }
-
- /* Any remaining entry is marked as invalid */
- for (; n < MAX_GEN_REFERENCE_FRAMES; n++) {
- GenFrameStore * const fs = &frame_store[n];
- fs->surface_id = VA_INVALID_ID;
- fs->obj_surface = NULL;
- fs->frame_store_id = -1;
- }
-}
-
-bool
-gen75_fill_avc_picid_list(
- uint16_t pic_ids[16],
- GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES]
-)
-{
- int i, pic_id;
-
- /* Fill in with known picture IDs. The Frame Store array is in
- compact form, i.e. empty entries are only to be found at the
- end of the array: there are no holes in the set of active
- reference frames */
- for (i = 0; i < MAX_GEN_REFERENCE_FRAMES; i++) {
- GenFrameStore * const fs = &frame_store[i];
- if (!fs->obj_surface)
- break;
- pic_id = avc_get_picture_id(fs->obj_surface);
- if (pic_id < 0)
- return false;
- pic_ids[i] = pic_id;
- }
-
- /* When an element of the list is not relevant the value of the
- picture ID shall be set to 0 */
- for (; i < MAX_GEN_REFERENCE_FRAMES; i++)
- pic_ids[i] = 0;
- return true;
-}
-
-bool
-gen75_send_avc_picid_state(
- struct intel_batchbuffer *batch,
- GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES]
-)
-{
- uint16_t pic_ids[16];
-
- if (!gen75_fill_avc_picid_list(pic_ids, frame_store))
- return false;
-
- BEGIN_BCS_BATCH(batch, 10);
- OUT_BCS_BATCH(batch, MFD_AVC_PICID_STATE | (10 - 2));
- OUT_BCS_BATCH(batch, 0); // enable Picture ID Remapping
- intel_batchbuffer_data(batch, pic_ids, sizeof(pic_ids));
- ADVANCE_BCS_BATCH(batch);
- return true;
-}
-
-void
-intel_update_vc1_frame_store_index(VADriverContextP ctx,
- struct decode_state *decode_state,
- VAPictureParameterBufferVC1 *pic_param,
- GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES])
-{
- struct object_surface *obj_surface;
- int i;
-
- obj_surface = decode_state->reference_objects[0];
-
- if (pic_param->forward_reference_picture == VA_INVALID_ID ||
- !obj_surface ||
- !obj_surface->bo) {
- frame_store[0].surface_id = VA_INVALID_ID;
- frame_store[0].obj_surface = NULL;
- } else {
- frame_store[0].surface_id = pic_param->forward_reference_picture;
- frame_store[0].obj_surface = obj_surface;
- }
-
- obj_surface = decode_state->reference_objects[1];
-
- if (pic_param->backward_reference_picture == VA_INVALID_ID ||
- !obj_surface ||
- !obj_surface->bo) {
- frame_store[1].surface_id = frame_store[0].surface_id;
- frame_store[1].obj_surface = frame_store[0].obj_surface;
- } else {
- frame_store[1].surface_id = pic_param->backward_reference_picture;
- frame_store[1].obj_surface = obj_surface;
- }
- for (i = 2; i < MAX_GEN_REFERENCE_FRAMES; i++) {
- frame_store[i].surface_id = frame_store[i % 2].surface_id;
- frame_store[i].obj_surface = frame_store[i % 2].obj_surface;
- }
-
-}
-
-void
-intel_update_vp8_frame_store_index(VADriverContextP ctx,
- struct decode_state *decode_state,
- VAPictureParameterBufferVP8 *pic_param,
- GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES])
-{
- struct object_surface *obj_surface;
- int i;
-
- obj_surface = decode_state->reference_objects[0];
-
- if (pic_param->last_ref_frame == VA_INVALID_ID ||
- !obj_surface ||
- !obj_surface->bo) {
- frame_store[0].surface_id = VA_INVALID_ID;
- frame_store[0].obj_surface = NULL;
- } else {
- frame_store[0].surface_id = pic_param->last_ref_frame;
- frame_store[0].obj_surface = obj_surface;
- }
-
- obj_surface = decode_state->reference_objects[1];
-
- if (pic_param->golden_ref_frame == VA_INVALID_ID ||
- !obj_surface ||
- !obj_surface->bo) {
- frame_store[1].surface_id = frame_store[0].surface_id;
- frame_store[1].obj_surface = frame_store[0].obj_surface;
- } else {
- frame_store[1].surface_id = pic_param->golden_ref_frame;
- frame_store[1].obj_surface = obj_surface;
- }
-
- obj_surface = decode_state->reference_objects[2];
-
- if (pic_param->alt_ref_frame == VA_INVALID_ID ||
- !obj_surface ||
- !obj_surface->bo) {
- frame_store[2].surface_id = frame_store[0].surface_id;
- frame_store[2].obj_surface = frame_store[0].obj_surface;
- } else {
- frame_store[2].surface_id = pic_param->alt_ref_frame;
- frame_store[2].obj_surface = obj_surface;
- }
-
- for (i = 3; i < MAX_GEN_REFERENCE_FRAMES; i++) {
- frame_store[i].surface_id = frame_store[i % 2].surface_id;
- frame_store[i].obj_surface = frame_store[i % 2].obj_surface;
- }
-
-}
-
-//Obtain the reference frames from the decode state and store them in frame store.
-void
-intel_update_vp9_frame_store_index(VADriverContextP ctx,
- struct decode_state *decode_state,
- VADecPictureParameterBufferVP9 *pic_param,
- GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES])
-{
- struct object_surface *obj_surface;
- int i=0, index=0;
-
- //Check for the validity of the last reference frame
- obj_surface = decode_state->reference_objects[0];
-
- index = pic_param->pic_fields.bits.last_ref_frame;
- if (pic_param->reference_frames[index] == VA_INVALID_ID ||
- !obj_surface ||
- !obj_surface->bo) {
- frame_store[0].surface_id = VA_INVALID_ID;
- frame_store[0].obj_surface = NULL;
- } else {
- frame_store[0].surface_id = pic_param->reference_frames[index];
- frame_store[0].obj_surface = obj_surface;
- }
-
- //Check for the validity of the golden reference frame
- obj_surface = decode_state->reference_objects[1];
-
- index = pic_param->pic_fields.bits.golden_ref_frame;
- if (pic_param->reference_frames[index] == VA_INVALID_ID ||
- !obj_surface ||
- !obj_surface->bo) {
- frame_store[1].surface_id = frame_store[0].surface_id;
- frame_store[1].obj_surface = frame_store[0].obj_surface;
- } else {
- frame_store[1].surface_id = pic_param->reference_frames[index];
- frame_store[1].obj_surface = obj_surface;
- }
-
- //Check for the validity of the altref reference frame
- obj_surface = decode_state->reference_objects[2];
-
- index = pic_param->pic_fields.bits.alt_ref_frame;
- if (pic_param->reference_frames[index] == VA_INVALID_ID ||
- !obj_surface ||
- !obj_surface->bo) {
- frame_store[2].surface_id = frame_store[0].surface_id;
- frame_store[2].obj_surface = frame_store[0].obj_surface;
- } else {
- frame_store[2].surface_id = pic_param->reference_frames[index];
- frame_store[2].obj_surface = obj_surface;
- }
-
- //Set the remaining framestores to either last/golden/altref
- for (i = 3; i < MAX_GEN_REFERENCE_FRAMES; i++) {
- frame_store[i].surface_id = frame_store[i % 2].surface_id;
- frame_store[i].obj_surface = frame_store[i % 2].obj_surface;
- }
-
-}
-
-static VAStatus
-intel_decoder_check_avc_parameter(VADriverContextP ctx,
- VAProfile h264_profile,
- struct decode_state *decode_state)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VAPictureParameterBufferH264 *pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
- VAStatus va_status;
- struct object_surface *obj_surface;
- int i;
- VASliceParameterBufferH264 *slice_param, *next_slice_param, *next_slice_group_param;
- int j;
-
- ASSERT_RET(!(pic_param->CurrPic.flags & VA_PICTURE_H264_INVALID), VA_STATUS_ERROR_INVALID_PARAMETER);
- ASSERT_RET((pic_param->CurrPic.picture_id != VA_INVALID_SURFACE), VA_STATUS_ERROR_INVALID_PARAMETER);
- ASSERT_RET((pic_param->CurrPic.picture_id == decode_state->current_render_target), VA_STATUS_ERROR_INVALID_PARAMETER);
-
- if ((h264_profile != VAProfileH264Baseline)) {
- if (pic_param->num_slice_groups_minus1 ||
- pic_param->pic_fields.bits.redundant_pic_cnt_present_flag) {
- WARN_ONCE("Unsupported the FMO/ASO constraints!!!\n");
- goto error;
- }
- }
-
- /* Fill in the reference objects array with the actual VA surface
- objects with 1:1 correspondance with any entry in ReferenceFrames[],
- i.e. including "holes" for invalid entries, that are expanded
- to NULL in the reference_objects[] array */
- for (i = 0; i < ARRAY_ELEMS(pic_param->ReferenceFrames); i++) {
- const VAPictureH264 * const va_pic = &pic_param->ReferenceFrames[i];
-
- obj_surface = NULL;
- if (!(va_pic->flags & VA_PICTURE_H264_INVALID) &&
- va_pic->picture_id != VA_INVALID_ID) {
- obj_surface = SURFACE(pic_param->ReferenceFrames[i].picture_id);
- if (!obj_surface)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- /*
- * Sometimes a dummy frame comes from the upper layer
- * library, call i965_check_alloc_surface_bo() to make
- * sure the store buffer is allocated for this reference
- * frame
- */
- va_status = avc_ensure_surface_bo(ctx, decode_state, obj_surface,
- pic_param);
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
- }
- decode_state->reference_objects[i] = obj_surface;
- }
-
- for (j = 0; j < decode_state->num_slice_params; j++) {
- ASSERT_RET((decode_state->slice_params && decode_state->slice_params[j]->buffer), VA_STATUS_ERROR_INVALID_PARAMETER);
- slice_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j]->buffer;
-
- if (j == decode_state->num_slice_params - 1)
- next_slice_group_param = NULL;
- else
- next_slice_group_param = (VASliceParameterBufferH264 *)decode_state->slice_params[j + 1]->buffer;
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
-
- if (i < decode_state->slice_params[j]->num_elements - 1)
- next_slice_param = slice_param + 1;
- else
- next_slice_param = next_slice_group_param;
-
- if (next_slice_param != NULL) {
- /* If the mb position of next_slice is less than or equal to the current slice,
- * discard the current frame.
- */
- if (next_slice_param->first_mb_in_slice <= slice_param->first_mb_in_slice) {
- next_slice_param = NULL;
- WARN_ONCE("!!!incorrect slice_param. The first_mb_in_slice of next_slice is less"
- " than or equal to that in current slice\n");
- goto error;
- }
- }
- }
- }
-
- return VA_STATUS_SUCCESS;
-
-error:
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-}
-
-static VAStatus
-intel_decoder_check_mpeg2_parameter(VADriverContextP ctx,
- struct decode_state *decode_state)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VAPictureParameterBufferMPEG2 *pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
- struct object_surface *obj_surface;
- int i = 0;
-
- if (pic_param->picture_coding_type == MPEG_I_PICTURE) {
- } else if (pic_param->picture_coding_type == MPEG_P_PICTURE) {
- obj_surface = SURFACE(pic_param->forward_reference_picture);
-
- if (!obj_surface || !obj_surface->bo)
- decode_state->reference_objects[i++] = NULL;
- else
- decode_state->reference_objects[i++] = obj_surface;
- } else if (pic_param->picture_coding_type == MPEG_B_PICTURE) {
- obj_surface = SURFACE(pic_param->forward_reference_picture);
-
- if (!obj_surface || !obj_surface->bo)
- decode_state->reference_objects[i++] = NULL;
- else
- decode_state->reference_objects[i++] = obj_surface;
-
- obj_surface = SURFACE(pic_param->backward_reference_picture);
-
- if (!obj_surface || !obj_surface->bo)
- decode_state->reference_objects[i++] = NULL;
- else
- decode_state->reference_objects[i++] = obj_surface;
- } else
- goto error;
-
- for ( ; i < 16; i++)
- decode_state->reference_objects[i] = NULL;
-
- return VA_STATUS_SUCCESS;
-
-error:
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-}
-
-static VAStatus
-intel_decoder_check_vc1_parameter(VADriverContextP ctx,
- struct decode_state *decode_state)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VAPictureParameterBufferVC1 *pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
- struct object_surface *obj_surface;
- int i = 0;
-
- if (pic_param->sequence_fields.bits.interlace == 1 &&
- pic_param->picture_fields.bits.frame_coding_mode != 0) { /* frame-interlace or field-interlace */
- return VA_STATUS_ERROR_DECODING_ERROR;
- }
-
- if (pic_param->picture_fields.bits.picture_type == 0 ||
- pic_param->picture_fields.bits.picture_type == 3) {
- } else if (pic_param->picture_fields.bits.picture_type == 1 ||
- pic_param->picture_fields.bits.picture_type == 4) {
- obj_surface = SURFACE(pic_param->forward_reference_picture);
-
- if (!obj_surface || !obj_surface->bo)
- decode_state->reference_objects[i++] = NULL;
- else
- decode_state->reference_objects[i++] = obj_surface;
- } else if (pic_param->picture_fields.bits.picture_type == 2) {
- obj_surface = SURFACE(pic_param->forward_reference_picture);
-
- if (!obj_surface || !obj_surface->bo)
- decode_state->reference_objects[i++] = NULL;
- else
- decode_state->reference_objects[i++] = obj_surface;
-
- obj_surface = SURFACE(pic_param->backward_reference_picture);
-
- if (!obj_surface || !obj_surface->bo)
- decode_state->reference_objects[i++] = NULL;
- else
- decode_state->reference_objects[i++] = obj_surface;
- } else
- goto error;
-
- for ( ; i < 16; i++)
- decode_state->reference_objects[i] = NULL;
-
- return VA_STATUS_SUCCESS;
-
-error:
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-}
-
-static VAStatus
-intel_decoder_check_vp8_parameter(VADriverContextP ctx,
- struct decode_state *decode_state)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VAPictureParameterBufferVP8 *pic_param = (VAPictureParameterBufferVP8 *)decode_state->pic_param->buffer;
- struct object_surface *obj_surface;
- int i = 0;
-
- if (pic_param->last_ref_frame != VA_INVALID_SURFACE) {
- obj_surface = SURFACE(pic_param->last_ref_frame);
-
- if (obj_surface && obj_surface->bo)
- decode_state->reference_objects[i++] = obj_surface;
- else
- decode_state->reference_objects[i++] = NULL;
- }
-
- if (pic_param->golden_ref_frame != VA_INVALID_SURFACE) {
- obj_surface = SURFACE(pic_param->golden_ref_frame);
-
- if (obj_surface && obj_surface->bo)
- decode_state->reference_objects[i++] = obj_surface;
- else
- decode_state->reference_objects[i++] = NULL;
- }
-
- if (pic_param->alt_ref_frame != VA_INVALID_SURFACE) {
- obj_surface = SURFACE(pic_param->alt_ref_frame);
-
- if (obj_surface && obj_surface->bo)
- decode_state->reference_objects[i++] = obj_surface;
- else
- decode_state->reference_objects[i++] = NULL;
- }
-
- for ( ; i < 16; i++)
- decode_state->reference_objects[i] = NULL;
-
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus
-hevc_ensure_surface_bo(
- VADriverContextP ctx,
- struct decode_state *decode_state,
- struct object_surface *obj_surface,
- const VAPictureParameterBufferHEVC *pic_param
-)
-{
- VAStatus va_status = VA_STATUS_SUCCESS;
- int update = 0;
- unsigned int fourcc = VA_FOURCC_NV12;
-
- if((pic_param->bit_depth_luma_minus8 > 0)
- || (pic_param->bit_depth_chroma_minus8 > 0))
- {
- if(obj_surface->fourcc != VA_FOURCC_P010)
- {
- update = 1;
- fourcc = VA_FOURCC_P010;
- }
- }
- else if(obj_surface->fourcc != VA_FOURCC_NV12)
- {
- update = 1;
- fourcc = VA_FOURCC_NV12;
- }
-
- /* (Re-)allocate the underlying surface buffer store, if necessary */
- if (!obj_surface->bo || update) {
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
-
- i965_destroy_surface_storage(obj_surface);
-
- va_status = i965_check_alloc_surface_bo(ctx,
- obj_surface,
- i965->codec_info->has_tiled_surface,
- fourcc,
- SUBSAMPLE_YUV420);
- }
-
- return va_status;
-}
-
-//Ensure there is a tiled render surface in NV12 format. If not, create one.
-VAStatus
-vp9_ensure_surface_bo(
- VADriverContextP ctx,
- struct decode_state *decode_state,
- struct object_surface *obj_surface,
- const VADecPictureParameterBufferVP9 *pic_param
-)
-{
- VAStatus va_status = VA_STATUS_SUCCESS;
- int update = 0;
- unsigned int fourcc = VA_FOURCC_NV12;
-
- if(pic_param->profile >= 2)
- {
- if(obj_surface->fourcc != VA_FOURCC_P010)
- {
- update = 1;
- fourcc = VA_FOURCC_P010;
- }
- }
- else if(obj_surface->fourcc != VA_FOURCC_NV12)
- {
- update = 1;
- fourcc = VA_FOURCC_NV12;
- }
-
- /* (Re-)allocate the underlying surface buffer store, if necessary */
- if (!obj_surface->bo || update) {
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
-
- i965_destroy_surface_storage(obj_surface);
-
- va_status = i965_check_alloc_surface_bo(ctx,
- obj_surface,
- i965->codec_info->has_tiled_surface,
- fourcc,
- SUBSAMPLE_YUV420);
- }
-
- return va_status;
-}
-
-static VAStatus
-intel_decoder_check_hevc_parameter(VADriverContextP ctx,
- struct decode_state *decode_state)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VAPictureParameterBufferHEVC *pic_param = (VAPictureParameterBufferHEVC *)decode_state->pic_param->buffer;
- VAStatus va_status = VA_STATUS_ERROR_INVALID_PARAMETER;
- struct object_surface *obj_surface;
- int i;
- int min_cb_size;
-
- if (pic_param->CurrPic.flags & VA_PICTURE_HEVC_INVALID ||
- pic_param->CurrPic.picture_id == VA_INVALID_SURFACE)
- goto error;
-
- if (pic_param->CurrPic.picture_id != decode_state->current_render_target)
- goto error;
-
- min_cb_size = (1 << (pic_param->log2_min_luma_coding_block_size_minus3 + 3));
-
- if (pic_param->pic_width_in_luma_samples % min_cb_size ||
- pic_param->pic_height_in_luma_samples % min_cb_size)
- goto error;
-
- /* Fill in the reference objects array with the actual VA surface
- objects with 1:1 correspondance with any entry in ReferenceFrames[],
- i.e. including "holes" for invalid entries, that are expanded
- to NULL in the reference_objects[] array */
- for (i = 0; i < ARRAY_ELEMS(pic_param->ReferenceFrames); i++) {
- const VAPictureHEVC * const va_pic = &pic_param->ReferenceFrames[i];
-
- obj_surface = NULL;
-
- /*
- * Only the index with (VA_PICTURE_HEVC_RPS_ST_CURR_BEFORE |
- * VA_PICTURE_HEVC_RPS_ST_CURR_AFTER | VA_PICTURE_HEVC_RPS_LT_CURR)
- * is valid
- */
- if (!(va_pic->flags & VA_PICTURE_HEVC_INVALID) &&
- (va_pic->picture_id != VA_INVALID_ID) &&
- (va_pic->flags & (VA_PICTURE_HEVC_RPS_ST_CURR_BEFORE |
- VA_PICTURE_HEVC_RPS_ST_CURR_AFTER |
- VA_PICTURE_HEVC_RPS_LT_CURR))) {
-
- obj_surface = SURFACE(pic_param->ReferenceFrames[i].picture_id);
-
- if (!obj_surface) {
- va_status = VA_STATUS_ERROR_INVALID_SURFACE;
- goto error;
- }
-
- va_status = hevc_ensure_surface_bo(ctx, decode_state, obj_surface,
- pic_param);
-
- if (va_status != VA_STATUS_SUCCESS)
- goto error;
- }
-
- decode_state->reference_objects[i] = obj_surface;
- }
-
- va_status = VA_STATUS_SUCCESS;
-
-error:
- return va_status;
-}
-
-//Obtains reference frames from the picture parameter and
-//then sets the reference frames in the decode_state
-static VAStatus
-intel_decoder_check_vp9_parameter(VADriverContextP ctx,
- VAProfile profile,
- struct decode_state *decode_state)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VADecPictureParameterBufferVP9 *pic_param = (VADecPictureParameterBufferVP9 *)decode_state->pic_param->buffer;
- VAStatus va_status = VA_STATUS_ERROR_INVALID_PARAMETER;
- struct object_surface *obj_surface;
- int i=0, index=0;
-
- if((profile - VAProfileVP9Profile0) < pic_param->profile)
- return va_status;
-
- //Max support upto 4k for BXT
- if ((pic_param->frame_width-1 < 0) || (pic_param->frame_width-1 > 4095))
- return va_status;
-
- if ((pic_param->frame_height-1 < 0) || (pic_param->frame_height-1 > 4095))
- return va_status;
-
- //Set the reference object in decode state for last reference
- index = pic_param->pic_fields.bits.last_ref_frame;
- if (pic_param->reference_frames[index] != VA_INVALID_SURFACE) {
- obj_surface = SURFACE(pic_param->reference_frames[index]);
-
- if (obj_surface && obj_surface->bo)
- decode_state->reference_objects[i++] = obj_surface;
- else
- decode_state->reference_objects[i++] = NULL;
- }
-
- //Set the reference object in decode state for golden reference
- index = pic_param->pic_fields.bits.golden_ref_frame;
- if (pic_param->reference_frames[index] != VA_INVALID_SURFACE) {
- obj_surface = SURFACE(pic_param->reference_frames[index]);
-
- if (obj_surface && obj_surface->bo)
- decode_state->reference_objects[i++] = obj_surface;
- else
- decode_state->reference_objects[i++] = NULL;
- }
-
- //Set the reference object in decode state for altref reference
- index = pic_param->pic_fields.bits.alt_ref_frame;
- if (pic_param->reference_frames[index] != VA_INVALID_SURFACE) {
- obj_surface = SURFACE(pic_param->reference_frames[index]);
-
- if (obj_surface && obj_surface->bo)
- decode_state->reference_objects[i++] = obj_surface;
- else
- decode_state->reference_objects[i++] = NULL;
- }
-
- for ( ; i < 16; i++)
- decode_state->reference_objects[i] = NULL;
-
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus
-intel_decoder_sanity_check_input(VADriverContextP ctx,
- VAProfile profile,
- struct decode_state *decode_state)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface;
- VAStatus vaStatus = VA_STATUS_ERROR_INVALID_PARAMETER;
-
- if (decode_state->current_render_target == VA_INVALID_SURFACE)
- goto out;
-
- obj_surface = SURFACE(decode_state->current_render_target);
-
- if (!obj_surface)
- goto out;
-
- decode_state->render_object = obj_surface;
-
- switch (profile) {
- case VAProfileMPEG2Simple:
- case VAProfileMPEG2Main:
- vaStatus = intel_decoder_check_mpeg2_parameter(ctx, decode_state);
- break;
-
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- case VAProfileH264StereoHigh:
- case VAProfileH264MultiviewHigh:
- vaStatus = intel_decoder_check_avc_parameter(ctx, profile, decode_state);
- break;
-
- case VAProfileVC1Simple:
- case VAProfileVC1Main:
- case VAProfileVC1Advanced:
- vaStatus = intel_decoder_check_vc1_parameter(ctx, decode_state);
- break;
-
- case VAProfileJPEGBaseline:
- vaStatus = VA_STATUS_SUCCESS;
- break;
-
- case VAProfileVP8Version0_3:
- vaStatus = intel_decoder_check_vp8_parameter(ctx, decode_state);
- break;
-
- case VAProfileHEVCMain:
- case VAProfileHEVCMain10:
- vaStatus = intel_decoder_check_hevc_parameter(ctx, decode_state);
- break;
-
- case VAProfileVP9Profile0:
- case VAProfileVP9Profile2:
- vaStatus = intel_decoder_check_vp9_parameter(ctx, profile, decode_state);
- break;
-
- default:
- vaStatus = VA_STATUS_ERROR_INVALID_PARAMETER;
- break;
- }
-
-out:
- return vaStatus;
-}
-
-/*
- * Return the next slice paramter
- *
- * Input:
- * slice_param: the current slice
- * *group_idx & *element_idx the current slice position in slice groups
- * Output:
- * Return the next slice parameter
- * *group_idx & *element_idx the next slice position in slice groups,
- * if the next slice is NULL, *group_idx & *element_idx will be ignored
- */
-VASliceParameterBufferMPEG2 *
-intel_mpeg2_find_next_slice(struct decode_state *decode_state,
- VAPictureParameterBufferMPEG2 *pic_param,
- VASliceParameterBufferMPEG2 *slice_param,
- int *group_idx,
- int *element_idx)
-{
- VASliceParameterBufferMPEG2 *next_slice_param;
- unsigned int width_in_mbs = ALIGN(pic_param->horizontal_size, 16) / 16;
- int j = *group_idx, i = *element_idx + 1;
-
- for (; j < decode_state->num_slice_params; j++) {
- for (; i < decode_state->slice_params[j]->num_elements; i++) {
- next_slice_param = ((VASliceParameterBufferMPEG2 *)decode_state->slice_params[j]->buffer) + i;
-
- if ((next_slice_param->slice_vertical_position * width_in_mbs + next_slice_param->slice_horizontal_position) >=
- (slice_param->slice_vertical_position * width_in_mbs + slice_param->slice_horizontal_position)) {
- *group_idx = j;
- *element_idx = i;
-
- return next_slice_param;
- }
- }
-
- i = 0;
- }
-
- return NULL;
-}
-
-/* Ensure the segmentation buffer is large enough for the supplied
- number of MBs, or re-allocate it */
-bool
-intel_ensure_vp8_segmentation_buffer(VADriverContextP ctx, GenBuffer *buf,
- unsigned int mb_width, unsigned int mb_height)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- /* The segmentation map is a 64-byte aligned linear buffer, with
- each cache line holding only 8 bits for 4 continuous MBs */
- const unsigned int buf_size = ((mb_width + 3) / 4) * 64 * mb_height;
-
- if (buf->valid) {
- if (buf->bo && buf->bo->size >= buf_size)
- return true;
- drm_intel_bo_unreference(buf->bo);
- buf->valid = false;
- }
-
- buf->bo = drm_intel_bo_alloc(i965->intel.bufmgr, "segmentation map",
- buf_size, 0x1000);
- buf->valid = buf->bo != NULL;
- return buf->valid;
-}
-
-void
-hevc_gen_default_iq_matrix(VAIQMatrixBufferHEVC *iq_matrix)
-{
- /* Flat_4x4_16 */
- memset(&iq_matrix->ScalingList4x4, 16, sizeof(iq_matrix->ScalingList4x4));
-
- /* Flat_8x8_16 */
- memset(&iq_matrix->ScalingList8x8, 16, sizeof(iq_matrix->ScalingList8x8));
-
- /* Flat_16x16_16 */
- memset(&iq_matrix->ScalingList16x16, 16, sizeof(iq_matrix->ScalingList16x16));
-
- /* Flat_32x32_16 */
- memset(&iq_matrix->ScalingList32x32, 16, sizeof(iq_matrix->ScalingList32x32));
-
- /* Flat_16x16_dc_16 */
- memset(&iq_matrix->ScalingListDC16x16, 16, sizeof(iq_matrix->ScalingListDC16x16));
-
- /* Flat_32x32_dc_16 */
- memset(&iq_matrix->ScalingListDC32x32, 16, sizeof(iq_matrix->ScalingListDC32x32));
-}
diff --git a/src/i965_decoder_utils.h b/src/i965_decoder_utils.h
deleted file mode 100644
index 5889158..0000000
--- a/src/i965_decoder_utils.h
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright (C) 2006-2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef I965_DECODER_UTILS_H
-#define I965_DECODER_UTILS_H
-
-#include "i965_decoder.h"
-#include "intel_batchbuffer.h"
-
-struct decode_state;
-
-int
-mpeg2_wa_slice_vertical_position(
- struct decode_state *decode_state,
- VAPictureParameterBufferMPEG2 *pic_param
-);
-
-void
-mpeg2_set_reference_surfaces(
- VADriverContextP ctx,
- GenFrameStore ref_frames[MAX_GEN_REFERENCE_FRAMES],
- struct decode_state *decode_state,
- VAPictureParameterBufferMPEG2 *pic_param
-);
-
-VAStatus
-avc_ensure_surface_bo(
- VADriverContextP ctx,
- struct decode_state *decode_state,
- struct object_surface *obj_surface,
- const VAPictureParameterBufferH264 *pic_param
-);
-
-void
-avc_gen_default_iq_matrix(VAIQMatrixBufferH264 *iq_matrix);
-
-int
-avc_get_picture_id(struct object_surface *obj_surface);
-
-VAPictureH264 *
-avc_find_picture(VASurfaceID id, VAPictureH264 *pic_list, int pic_list_count);
-
-unsigned int
-avc_get_first_mb_bit_offset(
- dri_bo *slice_data_bo,
- VASliceParameterBufferH264 *slice_param,
- unsigned int mode_flag
-);
-
-unsigned int
-avc_get_first_mb_bit_offset_with_epb(
- dri_bo *slice_data_bo,
- VASliceParameterBufferH264 *slice_param,
- unsigned int mode_flag
-);
-
-void
-gen5_fill_avc_ref_idx_state(
- uint8_t state[32],
- const VAPictureH264 ref_list[32],
- unsigned int ref_list_count,
- const GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES]
-);
-
-void
-gen6_send_avc_ref_idx_state(
- struct intel_batchbuffer *batch,
- const VASliceParameterBufferH264 *slice_param,
- const GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES]
-);
-
-void
-gen6_mfd_avc_phantom_slice(VADriverContextP ctx,
- VAPictureParameterBufferH264 *pic_param,
- VASliceParameterBufferH264 *next_slice_param,
- struct intel_batchbuffer *batch
-);
-
-VAStatus
-intel_decoder_sanity_check_input(VADriverContextP ctx,
- VAProfile profile,
- struct decode_state *decode_state);
-
-void
-intel_update_avc_frame_store_index(
- VADriverContextP ctx,
- struct decode_state *decode_state,
- VAPictureParameterBufferH264 *pic_param,
- GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES],
- GenFrameStoreContext *fs_ctx
-);
-
-void
-intel_update_hevc_frame_store_index(
- VADriverContextP ctx,
- struct decode_state *decode_state,
- VAPictureParameterBufferHEVC *pic_param,
- GenFrameStore frame_store[MAX_GEN_HCP_REFERENCE_FRAMES],
- GenFrameStoreContext *fs_ctx
-);
-
-void
-gen75_update_avc_frame_store_index(
- VADriverContextP ctx,
- struct decode_state *decode_state,
- VAPictureParameterBufferH264 *pic_param,
- GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES]
-);
-
-bool
-gen75_fill_avc_picid_list(
- uint16_t pic_ids[16],
- GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES]
-);
-
-bool
-gen75_send_avc_picid_state(
- struct intel_batchbuffer *batch,
- GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES]
-);
-
-void
-intel_update_vc1_frame_store_index(VADriverContextP ctx,
- struct decode_state *decode_state,
- VAPictureParameterBufferVC1 *pic_param,
- GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES]);
-
-VASliceParameterBufferMPEG2 *
-intel_mpeg2_find_next_slice(struct decode_state *decode_state,
- VAPictureParameterBufferMPEG2 *pic_param,
- VASliceParameterBufferMPEG2 *slice_param,
- int *group_idx,
- int *element_idx);
-
-
-void
-intel_update_vp8_frame_store_index(VADriverContextP ctx,
- struct decode_state *decode_state,
- VAPictureParameterBufferVP8 *pic_param,
- GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES]);
-
-void
-intel_update_vp9_frame_store_index(VADriverContextP ctx,
- struct decode_state *decode_state,
- VADecPictureParameterBufferVP9 *pic_param,
- GenFrameStore frame_store[MAX_GEN_REFERENCE_FRAMES]);
-
-bool
-intel_ensure_vp8_segmentation_buffer(VADriverContextP ctx, GenBuffer *buf,
- unsigned int mb_width, unsigned int mb_height);
-
-void
-hevc_gen_default_iq_matrix(VAIQMatrixBufferHEVC *iq_matrix);
-
-VAStatus
-hevc_ensure_surface_bo(
- VADriverContextP ctx,
- struct decode_state *decode_state,
- struct object_surface *obj_surface,
- const VAPictureParameterBufferHEVC *pic_param
-);
-
-VAStatus
-vp9_ensure_surface_bo(
- VADriverContextP ctx,
- struct decode_state *decode_state,
- struct object_surface *obj_surface,
- const VADecPictureParameterBufferVP9 *pic_param
-);
-#endif /* I965_DECODER_UTILS_H */
diff --git a/src/i965_defines.h b/src/i965_defines.h
deleted file mode 100755
index 941ad4e..0000000
--- a/src/i965_defines.h
+++ /dev/null
@@ -1,984 +0,0 @@
-#ifndef _I965_DEFINES_H_
-#define _I965_DEFINES_H_
-
-#define CMD(pipeline,op,sub_op) ((3 << 29) | \
- ((pipeline) << 27) | \
- ((op) << 24) | \
- ((sub_op) << 16))
-
-#define CMD_URB_FENCE CMD(0, 0, 0)
-#define CMD_CS_URB_STATE CMD(0, 0, 1)
-#define CMD_CONSTANT_BUFFER CMD(0, 0, 2)
-#define CMD_STATE_PREFETCH CMD(0, 0, 3)
-
-#define CMD_STATE_BASE_ADDRESS CMD(0, 1, 1)
-#define CMD_STATE_SIP CMD(0, 1, 2)
-#define CMD_PIPELINE_SELECT CMD(1, 1, 4)
-#define CMD_SAMPLER_PALETTE_LOAD CMD(3, 1, 2)
-
-#define CMD_MEDIA_STATE_POINTERS CMD(2, 0, 0)
-#define CMD_MEDIA_VFE_STATE CMD(2, 0, 0)
-#define CMD_MEDIA_CURBE_LOAD CMD(2, 0, 1)
-#define CMD_MEDIA_INTERFACE_LOAD CMD(2, 0, 2)
-#define CMD_MEDIA_OBJECT CMD(2, 1, 0)
-#define CMD_MEDIA_OBJECT_EX CMD(2, 1, 1)
-
-#define CMD_AVC_BSD_IMG_STATE CMD(2, 4, 0)
-#define CMD_AVC_BSD_QM_STATE CMD(2, 4, 1)
-#define CMD_AVC_BSD_SLICE_STATE CMD(2, 4, 2)
-#define CMD_AVC_BSD_BUF_BASE_STATE CMD(2, 4, 3)
-#define CMD_BSD_IND_OBJ_BASE_ADDR CMD(2, 4, 4)
-#define CMD_AVC_BSD_OBJECT CMD(2, 4, 8)
-
-#define CMD_MEDIA_VFE_STATE CMD(2, 0, 0)
-#define CMD_MEDIA_CURBE_LOAD CMD(2, 0, 1)
-#define CMD_MEDIA_INTERFACE_DESCRIPTOR_LOAD CMD(2, 0, 2)
-#define CMD_MEDIA_GATEWAY_STATE CMD(2, 0, 3)
-#define CMD_MEDIA_STATE_FLUSH CMD(2, 0, 4)
-#define CMD_MEDIA_OBJECT_WALKER CMD(2, 1, 3)
-
-#define CMD_PIPELINED_POINTERS CMD(3, 0, 0)
-#define CMD_BINDING_TABLE_POINTERS CMD(3, 0, 1)
-# define GEN6_BINDING_TABLE_MODIFY_PS (1 << 12)/* for GEN6 */
-# define GEN6_BINDING_TABLE_MODIFY_GS (1 << 9) /* for GEN6 */
-# define GEN6_BINDING_TABLE_MODIFY_VS (1 << 8) /* for GEN6 */
-
-#define CMD_VERTEX_BUFFERS CMD(3, 0, 8)
-#define CMD_VERTEX_ELEMENTS CMD(3, 0, 9)
-#define CMD_DRAWING_RECTANGLE CMD(3, 1, 0)
-#define CMD_CONSTANT_COLOR CMD(3, 1, 1)
-#define CMD_3DPRIMITIVE CMD(3, 3, 0)
-
-#define CMD_DEPTH_BUFFER CMD(3, 1, 5)
-# define CMD_DEPTH_BUFFER_TYPE_SHIFT 29
-# define CMD_DEPTH_BUFFER_FORMAT_SHIFT 18
-
-#define CMD_CLEAR_PARAMS CMD(3, 1, 0x10)
-/* DW1 */
-# define CMD_CLEAR_PARAMS_DEPTH_CLEAR_VALID (1 << 15)
-
-/* for GEN6+ */
-#define GEN6_3DSTATE_SAMPLER_STATE_POINTERS CMD(3, 0, 0x02)
-# define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_PS (1 << 12)
-# define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_GS (1 << 9)
-# define GEN6_3DSTATE_SAMPLER_STATE_MODIFY_VS (1 << 8)
-
-#define GEN6_3DSTATE_URB CMD(3, 0, 0x05)
-/* DW1 */
-# define GEN6_3DSTATE_URB_VS_SIZE_SHIFT 16
-# define GEN6_3DSTATE_URB_VS_ENTRIES_SHIFT 0
-/* DW2 */
-# define GEN6_3DSTATE_URB_GS_ENTRIES_SHIFT 8
-# define GEN6_3DSTATE_URB_GS_SIZE_SHIFT 0
-
-#define GEN6_3DSTATE_VIEWPORT_STATE_POINTERS CMD(3, 0, 0x0d)
-# define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_CC (1 << 12)
-# define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_SF (1 << 11)
-# define GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_CLIP (1 << 10)
-
-#define GEN6_3DSTATE_CC_STATE_POINTERS CMD(3, 0, 0x0e)
-
-#define GEN6_3DSTATE_VS CMD(3, 0, 0x10)
-
-#define GEN6_3DSTATE_GS CMD(3, 0, 0x11)
-/* DW4 */
-# define GEN6_3DSTATE_GS_DISPATCH_START_GRF_SHIFT 0
-
-#define GEN6_3DSTATE_CLIP CMD(3, 0, 0x12)
-
-#define GEN6_3DSTATE_SF CMD(3, 0, 0x13)
-/* DW1 on GEN6 */
-# define GEN6_3DSTATE_SF_NUM_OUTPUTS_SHIFT 22
-# define GEN6_3DSTATE_SF_URB_ENTRY_READ_LENGTH_SHIFT 11
-# define GEN6_3DSTATE_SF_URB_ENTRY_READ_OFFSET_SHIFT 4
-/* DW1 on GEN7 */
-# define GEN7_SF_DEPTH_BUFFER_SURFACE_FORMAT_SHIFT 12
-
-
-/* DW2 */
-/* DW3 */
-# define GEN6_3DSTATE_SF_CULL_BOTH (0 << 29)
-# define GEN6_3DSTATE_SF_CULL_NONE (1 << 29)
-# define GEN6_3DSTATE_SF_CULL_FRONT (2 << 29)
-# define GEN6_3DSTATE_SF_CULL_BACK (3 << 29)
-/* DW4 */
-# define GEN6_3DSTATE_SF_TRI_PROVOKE_SHIFT 29
-# define GEN6_3DSTATE_SF_LINE_PROVOKE_SHIFT 27
-# define GEN6_3DSTATE_SF_TRIFAN_PROVOKE_SHIFT 25
-
-#define GEN8_3DSTATE_RASTER CMD(3, 0, 0x50)
-# define GEN8_3DSTATE_RASTER_CULL_BOTH (0 << 16)
-# define GEN8_3DSTATE_RASTER_CULL_NONE (1 << 16)
-# define GEN8_3DSTATE_RASTER_CULL_FRONT (2 << 16)
-# define GEN8_3DSTATE_RASTER_CULL_BACK (3 << 16)
-
-#define GEN6_3DSTATE_WM CMD(3, 0, 0x14)
-/* DW2 */
-# define GEN6_3DSTATE_WM_SAMPLER_COUNT_SHITF 27
-# define GEN6_3DSTATE_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT 18
-/* DW4 */
-# define GEN6_3DSTATE_WM_DISPATCH_START_GRF_0_SHIFT 16
-/* DW5 */
-# define GEN6_3DSTATE_WM_MAX_THREADS_SHIFT 25
-# define GEN6_3DSTATE_WM_DISPATCH_ENABLE (1 << 19)
-# define GEN6_3DSTATE_WM_16_DISPATCH_ENABLE (1 << 1)
-# define GEN6_3DSTATE_WM_8_DISPATCH_ENABLE (1 << 0)
-/* DW6 */
-# define GEN6_3DSTATE_WM_NUM_SF_OUTPUTS_SHIFT 20
-# define GEN6_3DSTATE_WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC (1 << 15)
-# define GEN6_3DSTATE_WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC (1 << 14)
-# define GEN6_3DSTATE_WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC (1 << 13)
-# define GEN6_3DSTATE_WM_PERSPECTIVE_SAMPLE_BARYCENTRIC (1 << 12)
-# define GEN6_3DSTATE_WM_PERSPECTIVE_CENTROID_BARYCENTRIC (1 << 11)
-# define GEN6_3DSTATE_WM_PERSPECTIVE_PIXEL_BARYCENTRIC (1 << 10)
-
-/* 3DSTATE_WM on GEN7 */
-/* DW1 */
-# define GEN7_WM_STATISTICS_ENABLE (1 << 31)
-# define GEN7_WM_DEPTH_CLEAR (1 << 30)
-# define GEN7_WM_DISPATCH_ENABLE (1 << 29)
-# define GEN6_WM_DEPTH_RESOLVE (1 << 28)
-# define GEN7_WM_HIERARCHICAL_DEPTH_RESOLVE (1 << 27)
-# define GEN7_WM_KILL_ENABLE (1 << 25)
-# define GEN7_WM_PSCDEPTH_OFF (0 << 23)
-# define GEN7_WM_PSCDEPTH_ON (1 << 23)
-# define GEN7_WM_PSCDEPTH_ON_GE (2 << 23)
-# define GEN7_WM_PSCDEPTH_ON_LE (3 << 23)
-# define GEN7_WM_USES_SOURCE_DEPTH (1 << 20)
-# define GEN7_WM_USES_SOURCE_W (1 << 19)
-# define GEN7_WM_POSITION_ZW_PIXEL (0 << 17)
-# define GEN7_WM_POSITION_ZW_CENTROID (2 << 17)
-# define GEN7_WM_POSITION_ZW_SAMPLE (3 << 17)
-# define GEN7_WM_NONPERSPECTIVE_SAMPLE_BARYCENTRIC (1 << 16)
-# define GEN7_WM_NONPERSPECTIVE_CENTROID_BARYCENTRIC (1 << 15)
-# define GEN7_WM_NONPERSPECTIVE_PIXEL_BARYCENTRIC (1 << 14)
-# define GEN7_WM_PERSPECTIVE_SAMPLE_BARYCENTRIC (1 << 13)
-# define GEN7_WM_PERSPECTIVE_CENTROID_BARYCENTRIC (1 << 12)
-# define GEN7_WM_PERSPECTIVE_PIXEL_BARYCENTRIC (1 << 11)
-# define GEN7_WM_USES_INPUT_COVERAGE_MASK (1 << 10)
-# define GEN7_WM_LINE_END_CAP_AA_WIDTH_0_5 (0 << 8)
-# define GEN7_WM_LINE_END_CAP_AA_WIDTH_1_0 (1 << 8)
-# define GEN7_WM_LINE_END_CAP_AA_WIDTH_2_0 (2 << 8)
-# define GEN7_WM_LINE_END_CAP_AA_WIDTH_4_0 (3 << 8)
-# define GEN7_WM_LINE_AA_WIDTH_0_5 (0 << 6)
-# define GEN7_WM_LINE_AA_WIDTH_1_0 (1 << 6)
-# define GEN7_WM_LINE_AA_WIDTH_2_0 (2 << 6)
-# define GEN7_WM_LINE_AA_WIDTH_4_0 (3 << 6)
-# define GEN7_WM_POLYGON_STIPPLE_ENABLE (1 << 4)
-# define GEN7_WM_LINE_STIPPLE_ENABLE (1 << 3)
-# define GEN7_WM_POINT_RASTRULE_UPPER_RIGHT (1 << 2)
-# define GEN7_WM_MSRAST_OFF_PIXEL (0 << 0)
-# define GEN7_WM_MSRAST_OFF_PATTERN (1 << 0)
-# define GEN7_WM_MSRAST_ON_PIXEL (2 << 0)
-# define GEN7_WM_MSRAST_ON_PATTERN (3 << 0)
-/* DW2 */
-# define GEN7_WM_MSDISPMODE_PERPIXEL (1 << 31)
-
-#define GEN6_3DSTATE_CONSTANT_VS CMD(3, 0, 0x15)
-#define GEN6_3DSTATE_CONSTANT_GS CMD(3, 0, 0x16)
-#define GEN6_3DSTATE_CONSTANT_PS CMD(3, 0, 0x17)
-
-/* Gen8 WM_HZ_OP */
-#define GEN8_3DSTATE_WM_HZ_OP CMD(3, 0, 0x52)
-
-
-# define GEN6_3DSTATE_CONSTANT_BUFFER_3_ENABLE (1 << 15)
-# define GEN6_3DSTATE_CONSTANT_BUFFER_2_ENABLE (1 << 14)
-# define GEN6_3DSTATE_CONSTANT_BUFFER_1_ENABLE (1 << 13)
-# define GEN6_3DSTATE_CONSTANT_BUFFER_0_ENABLE (1 << 12)
-
-#define GEN6_3DSTATE_SAMPLE_MASK CMD(3, 0, 0x18)
-
-#define GEN6_3DSTATE_MULTISAMPLE CMD(3, 1, 0x0d)
-/* DW1 */
-# define GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_CENTER (0 << 4)
-# define GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_UPPER_LEFT (1 << 4)
-# define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_1 (0 << 1)
-# define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_4 (2 << 1)
-# define GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_8 (3 << 1)
-
-#define GEN8_3DSTATE_MULTISAMPLE CMD(3, 0, 0x0d)
-#define GEN8_3DSTATE_SAMPLE_PATTERN CMD(3, 1, 0x1C)
-
-/* GEN7 */
-#define GEN7_3DSTATE_CLEAR_PARAMS CMD(3, 0, 0x04)
-#define GEN7_3DSTATE_DEPTH_BUFFER CMD(3, 0, 0x05)
-#define GEN7_3DSTATE_HIER_DEPTH_BUFFER CMD(3, 0, 0x07)
-
-#define GEN7_3DSTATE_URB_VS CMD(3, 0, 0x30)
-#define GEN7_3DSTATE_URB_HS CMD(3, 0, 0x31)
-#define GEN7_3DSTATE_URB_DS CMD(3, 0, 0x32)
-#define GEN7_3DSTATE_URB_GS CMD(3, 0, 0x33)
-/* DW1 */
-# define GEN7_URB_ENTRY_NUMBER_SHIFT 0
-# define GEN7_URB_ENTRY_SIZE_SHIFT 16
-# define GEN7_URB_STARTING_ADDRESS_SHIFT 25
-
-#define GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_VS CMD(3, 1, 0x12)
-#define GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_PS CMD(3, 1, 0x16)
-
-#define GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_DS CMD(3, 1, 0x14)
-#define GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_HS CMD(3, 1, 0x13)
-#define GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_GS CMD(3, 1, 0x15)
-/* DW1 */
-# define GEN7_PUSH_CONSTANT_BUFFER_OFFSET_SHIFT 16
-# define GEN8_PUSH_CONSTANT_BUFFER_OFFSET_SHIFT 16
-# define GEN8_PUSH_CONSTANT_BUFFER_SIZE_SHIFT 0
-
-#define GEN7_3DSTATE_CONSTANT_HS CMD(3, 0, 0x19)
-#define GEN7_3DSTATE_CONSTANT_DS CMD(3, 0, 0x1a)
-
-#define GEN7_3DSTATE_HS CMD(3, 0, 0x1b)
-#define GEN7_3DSTATE_TE CMD(3, 0, 0x1c)
-#define GEN7_3DSTATE_DS CMD(3, 0, 0x1d)
-#define GEN7_3DSTATE_STREAMOUT CMD(3, 0, 0x1e)
-#define GEN7_3DSTATE_SBE CMD(3, 0, 0x1f)
-
-/* DW1 */
-# define GEN7_SBE_SWIZZLE_CONTROL_MODE (1 << 28)
-# define GEN7_SBE_NUM_OUTPUTS_SHIFT 22
-# define GEN7_SBE_SWIZZLE_ENABLE (1 << 21)
-# define GEN7_SBE_POINT_SPRITE_LOWERLEFT (1 << 20)
-# define GEN7_SBE_URB_ENTRY_READ_LENGTH_SHIFT 11
-# define GEN7_SBE_URB_ENTRY_READ_OFFSET_SHIFT 4
-# define GEN8_SBE_FORCE_URB_ENTRY_READ_LENGTH (1 << 29)
-# define GEN8_SBE_FORCE_URB_ENTRY_READ_OFFSET (1 << 28)
-
-# define GEN8_SBE_URB_ENTRY_READ_OFFSET_SHIFT 5
-#define GEN8_3DSTATE_SBE_SWIZ CMD(3, 0, 0x51)
-
-#define GEN7_3DSTATE_PS CMD(3, 0, 0x20)
-/* DW1: kernel pointer */
-/* DW2 */
-# define GEN7_PS_SPF_MODE (1 << 31)
-# define GEN7_PS_VECTOR_MASK_ENABLE (1 << 30)
-# define GEN7_PS_SAMPLER_COUNT_SHIFT 27
-# define GEN7_PS_BINDING_TABLE_ENTRY_COUNT_SHIFT 18
-# define GEN7_PS_FLOATING_POINT_MODE_IEEE_754 (0 << 16)
-# define GEN7_PS_FLOATING_POINT_MODE_ALT (1 << 16)
-/* DW3: scratch space */
-/* DW4 */
-# define GEN7_PS_MAX_THREADS_SHIFT_IVB 24
-# define GEN7_PS_MAX_THREADS_SHIFT_HSW 23
-# define GEN7_PS_SAMPLE_MASK_SHIFT_HSW 12
-# define GEN7_PS_PUSH_CONSTANT_ENABLE (1 << 11)
-# define GEN7_PS_ATTRIBUTE_ENABLE (1 << 10)
-# define GEN7_PS_OMASK_TO_RENDER_TARGET (1 << 9)
-# define GEN7_PS_DUAL_SOURCE_BLEND_ENABLE (1 << 7)
-# define GEN7_PS_POSOFFSET_NONE (0 << 3)
-# define GEN7_PS_POSOFFSET_CENTROID (2 << 3)
-# define GEN7_PS_POSOFFSET_SAMPLE (3 << 3)
-# define GEN7_PS_32_DISPATCH_ENABLE (1 << 2)
-# define GEN7_PS_16_DISPATCH_ENABLE (1 << 1)
-# define GEN7_PS_8_DISPATCH_ENABLE (1 << 0)
-/* DW5 */
-# define GEN7_PS_DISPATCH_START_GRF_SHIFT_0 16
-# define GEN7_PS_DISPATCH_START_GRF_SHIFT_1 8
-# define GEN7_PS_DISPATCH_START_GRF_SHIFT_2 0
-/* DW6: kernel 1 pointer */
-/* DW7: kernel 2 pointer */
-
-# define GEN8_PS_MAX_THREADS_SHIFT 23
-
-#define GEN8_3DSTATE_PSEXTRA CMD(3, 0, 0x4f)
-/* DW1 */
-# define GEN8_PSX_PIXEL_SHADER_VALID (1 << 31)
-# define GEN8_PSX_PSCDEPTH_OFF (0 << 26)
-# define GEN8_PSX_PSCDEPTH_ON (1 << 26)
-# define GEN8_PSX_PSCDEPTH_ON_GE (2 << 26)
-# define GEN8_PSX_PSCDEPTH_ON_LE (3 << 26)
-# define GEN8_PSX_ATTRIBUTE_ENABLE (1 << 8)
-
-#define GEN8_3DSTATE_PSBLEND CMD(3, 0, 0x4d)
-/* DW1 */
-# define GEN8_PS_BLEND_ALPHA_TO_COVERAGE_ENABLE (1 << 31)
-# define GEN8_PS_BLEND_HAS_WRITEABLE_RT (1 << 30)
-# define GEN8_PS_BLEND_COLOR_BUFFER_BLEND_ENABLE (1 << 29)
-# define GEN8_PS_BLEND_SRC_ALPHA_BLEND_FACTOR_MASK INTEL_MASK(28, 24)
-# define GEN8_PS_BLEND_SRC_ALPHA_BLEND_FACTOR_SHIFT 24
-# define GEN8_PS_BLEND_DST_ALPHA_BLEND_FACTOR_MASK INTEL_MASK(23, 19)
-# define GEN8_PS_BLEND_DST_ALPHA_BLEND_FACTOR_SHIFT 19
-# define GEN8_PS_BLEND_SRC_BLEND_FACTOR_MASK INTEL_MASK(18, 14)
-# define GEN8_PS_BLEND_SRC_BLEND_FACTOR_SHIFT 14
-# define GEN8_PS_BLEND_DST_BLEND_FACTOR_MASK INTEL_MASK(13, 9)
-# define GEN8_PS_BLEND_DST_BLEND_FACTOR_SHIFT 9
-# define GEN8_PS_BLEND_ALPHA_TEST_ENABLE (1 << 8)
-# define GEN8_PS_BLEND_INDEPENDENT_ALPHA_BLEND_ENABLE (1 << 7)
-
-
-#define GEN7_3DSTATE_STENCIL_BUFFER CMD(3, 0, 0x06)
-#define GEN8_3DSTATE_WM_DEPTH_STENCIL CMD(3, 0, 0x4e)
-
-#define GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CL CMD(3, 0, 0x21)
-#define GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_CC CMD(3, 0, 0x23)
-
-#define GEN7_3DSTATE_BLEND_STATE_POINTERS CMD(3, 0, 0x24)
-#define GEN7_3DSTATE_DEPTH_STENCIL_STATE_POINTERS CMD(3, 0, 0x25)
-
-#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_VS CMD(3, 0, 0x26)
-#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_HS CMD(3, 0, 0x27)
-#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_DS CMD(3, 0, 0x28)
-#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_GS CMD(3, 0, 0x29)
-#define GEN7_3DSTATE_BINDING_TABLE_POINTERS_PS CMD(3, 0, 0x2a)
-
-#define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_VS CMD(3, 0, 0x2b)
-#define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_GS CMD(3, 0, 0x2e)
-#define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_PS CMD(3, 0, 0x2f)
-#define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_HS CMD(3, 0, 0x2c)
-#define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_DS CMD(3, 0, 0x2d)
-
-#define GEN7_3DSTATE_VF CMD(3, 0, 0x0c)
-#define GEN8_3DSTATE_VF_INSTANCING CMD(3, 0, 0x49)
-
-#define GEN7_3DSTATE_VF CMD(3, 0, 0x0c)
-#define GEN8_3DSTATE_VF_INSTANCING CMD(3, 0, 0x49)
-
-#define MFX(pipeline, op, sub_opa, sub_opb) \
- (3 << 29 | \
- (pipeline) << 27 | \
- (op) << 24 | \
- (sub_opa) << 21 | \
- (sub_opb) << 16)
-
-#define MFX_PIPE_MODE_SELECT MFX(2, 0, 0, 0)
-#define MFX_SURFACE_STATE MFX(2, 0, 0, 1)
-#define MFX_PIPE_BUF_ADDR_STATE MFX(2, 0, 0, 2)
-#define MFX_IND_OBJ_BASE_ADDR_STATE MFX(2, 0, 0, 3)
-#define MFX_BSP_BUF_BASE_ADDR_STATE MFX(2, 0, 0, 4)
-#define MFX_AES_STATE MFX(2, 0, 0, 5)
-#define MFX_STATE_POINTER MFX(2, 0, 0, 6)
-#define MFX_QM_STATE MFX(2, 0, 0, 7)
-#define MFX_FQM_STATE MFX(2, 0, 0, 8)
-
-#define MFX_INSERT_OBJECT MFX(2, 0, 2, 8)
-
-#define MFX_WAIT MFX(1, 0, 0, 0)
-
-#define MFX_AVC_IMG_STATE MFX(2, 1, 0, 0)
-#define MFX_AVC_QM_STATE MFX(2, 1, 0, 1)
-#define MFX_AVC_DIRECTMODE_STATE MFX(2, 1, 0, 2)
-#define MFX_AVC_SLICE_STATE MFX(2, 1, 0, 3)
-#define MFX_AVC_REF_IDX_STATE MFX(2, 1, 0, 4)
-#define MFX_AVC_WEIGHTOFFSET_STATE MFX(2, 1, 0, 5)
-
-#define MFD_AVC_PICID_STATE MFX(2, 1, 1, 5)
-#define MFD_AVC_BSD_OBJECT MFX(2, 1, 1, 8)
-
-#define MFC_AVC_FQM_STATE MFX(2, 1, 2, 2)
-#define MFC_AVC_INSERT_OBJECT MFX(2, 1, 2, 8)
-#define MFC_AVC_PAK_OBJECT MFX(2, 1, 2, 9)
-
-#define MFX_MPEG2_PIC_STATE MFX(2, 3, 0, 0)
-#define MFX_MPEG2_QM_STATE MFX(2, 3, 0, 1)
-
-#define MFD_MPEG2_BSD_OBJECT MFX(2, 3, 1, 8)
-
-#define MFC_MPEG2_SLICEGROUP_STATE MFX(2, 3, 2, 3)
-#define MFC_MPEG2_PAK_OBJECT MFX(2, 3, 2, 9)
-
-#define MFX_VC1_PIC_STATE MFX(2, 2, 0, 0)
-#define MFX_VC1_PRED_PIPE_STATE MFX(2, 2, 0, 1)
-#define MFX_VC1_DIRECTMODE_STATE MFX(2, 2, 0, 2)
-
-#define MFD_VC1_SHORT_PIC_STATE MFX(2, 2, 1, 0)
-#define MFD_VC1_LONG_PIC_STATE MFX(2, 2, 1, 1)
-
-#define MFD_VC1_BSD_OBJECT MFX(2, 2, 1, 8)
-
-//MFX_JPEG #defines for JPEG decoder only
-#define MFX_JPEG_PIC_STATE MFX(2, 7, 0, 0)
-#define MFX_JPEG_HUFF_TABLE_STATE MFX(2, 7, 0, 2)
-
-//MFC_JPEG #defines for JPEG encoder only
-#define MFC_JPEG_SCAN_OBJECT MFX(2, 7, 2, 9)
-#define MFC_JPEG_HUFF_TABLE_STATE MFX(2, 7, 2, 3)
-
-#define MFD_JPEG_BSD_OBJECT MFX(2, 7, 1, 8)
-
-#define MFX_VP8_PIC_STATE MFX(2, 4, 0, 0)
-
-#define MFD_VP8_BSD_OBJECT MFX(2, 4, 1, 8)
-
-#define MFX_VP8_ENCODER_CFG MFX(2, 4, 2, 1)
-
-#define MFX_VP8_BSP_BUF_BASE_ADDR_STATE MFX(2, 4, 2, 3)
-
-#define MFX_VP8_PAK_OBJECT MFX(2, 4, 2, 9)
-
-#define VEB(pipeline, op, sub_opa, sub_opb) \
- (3 << 29 | \
- (pipeline) << 27 | \
- (op) << 24 | \
- (sub_opa) << 21 | \
- (sub_opb) << 16)
-
-#define VEB_SURFACE_STATE VEB(2, 4, 0, 0)
-#define VEB_STATE VEB(2, 4, 0, 2)
-#define VEB_DNDI_IECP_STATE VEB(2, 4, 0, 3)
-
-#define HCP(command) \
- (3 << 29 | \
- 2 << 27 | \
- 7 << 23 | \
- (command << 16))
-
-#define HCP_PIPE_MODE_SELECT HCP(0x00)
-#define HCP_SURFACE_STATE HCP(0x01)
-#define HCP_PIPE_BUF_ADDR_STATE HCP(0x02)
-#define HCP_IND_OBJ_BASE_ADDR_STATE HCP(0x03)
-#define HCP_QM_STATE HCP(0x04)
-#define HCP_FQM_STATE HCP(0x05)
-#define HCP_PIC_STATE HCP(0x10)
-#define HCP_TILE_STATE HCP(0x11)
-#define HCP_REF_IDX_STATE HCP(0x12)
-#define HCP_WEIGHTOFFSET HCP(0x13)
-#define HCP_SLICE_STATE HCP(0x14)
-#define HCP_BSD_OBJECT HCP(0x20)
-#define HCP_PAK_OBJECT HCP(0x21)
-#define HCP_INSERT_PAK_OBJECT HCP(0x22)
-
-#define HCP_VP9_SEGMENT_STATE HCP(0x32)
-#define HCP_VP9_PIC_STATE HCP(0x30)
-
-#define I965_DEPTHFORMAT_D32_FLOAT 1
-
-#define BASE_ADDRESS_MODIFY (1 << 0)
-
-#define PIPELINE_SELECT_3D 0
-#define PIPELINE_SELECT_MEDIA 1
-
-
-#define UF0_CS_REALLOC (1 << 13)
-#define UF0_VFE_REALLOC (1 << 12)
-#define UF0_SF_REALLOC (1 << 11)
-#define UF0_CLIP_REALLOC (1 << 10)
-#define UF0_GS_REALLOC (1 << 9)
-#define UF0_VS_REALLOC (1 << 8)
-#define UF1_CLIP_FENCE_SHIFT 20
-#define UF1_GS_FENCE_SHIFT 10
-#define UF1_VS_FENCE_SHIFT 0
-#define UF2_CS_FENCE_SHIFT 20
-#define UF2_VFE_FENCE_SHIFT 10
-#define UF2_SF_FENCE_SHIFT 0
-
-#define VFE_GENERIC_MODE 0x0
-#define VFE_VLD_MODE 0x1
-#define VFE_IS_MODE 0x2
-#define VFE_AVC_MC_MODE 0x4
-#define VFE_AVC_IT_MODE 0x7
-
-#define FLOATING_POINT_IEEE_754 0
-#define FLOATING_POINT_NON_IEEE_754 1
-
-
-#define I965_SURFACE_1D 0
-#define I965_SURFACE_2D 1
-#define I965_SURFACE_3D 2
-#define I965_SURFACE_CUBE 3
-#define I965_SURFACE_BUFFER 4
-#define I965_SURFACE_NULL 7
-
-#define I965_SURFACEFORMAT_R32G32B32A32_FLOAT 0x000
-#define I965_SURFACEFORMAT_R32G32B32A32_SINT 0x001
-#define I965_SURFACEFORMAT_R32G32B32A32_UINT 0x002
-#define I965_SURFACEFORMAT_R32G32B32A32_UNORM 0x003
-#define I965_SURFACEFORMAT_R32G32B32A32_SNORM 0x004
-#define I965_SURFACEFORMAT_R64G64_FLOAT 0x005
-#define I965_SURFACEFORMAT_R32G32B32X32_FLOAT 0x006
-#define I965_SURFACEFORMAT_R32G32B32A32_SSCALED 0x007
-#define I965_SURFACEFORMAT_R32G32B32A32_USCALED 0x008
-#define I965_SURFACEFORMAT_R32G32B32_FLOAT 0x040
-#define I965_SURFACEFORMAT_R32G32B32_SINT 0x041
-#define I965_SURFACEFORMAT_R32G32B32_UINT 0x042
-#define I965_SURFACEFORMAT_R32G32B32_UNORM 0x043
-#define I965_SURFACEFORMAT_R32G32B32_SNORM 0x044
-#define I965_SURFACEFORMAT_R32G32B32_SSCALED 0x045
-#define I965_SURFACEFORMAT_R32G32B32_USCALED 0x046
-#define I965_SURFACEFORMAT_R16G16B16A16_UNORM 0x080
-#define I965_SURFACEFORMAT_R16G16B16A16_SNORM 0x081
-#define I965_SURFACEFORMAT_R16G16B16A16_SINT 0x082
-#define I965_SURFACEFORMAT_R16G16B16A16_UINT 0x083
-#define I965_SURFACEFORMAT_R16G16B16A16_FLOAT 0x084
-#define I965_SURFACEFORMAT_R32G32_FLOAT 0x085
-#define I965_SURFACEFORMAT_R32G32_SINT 0x086
-#define I965_SURFACEFORMAT_R32G32_UINT 0x087
-#define I965_SURFACEFORMAT_R32_FLOAT_X8X24_TYPELESS 0x088
-#define I965_SURFACEFORMAT_X32_TYPELESS_G8X24_UINT 0x089
-#define I965_SURFACEFORMAT_L32A32_FLOAT 0x08A
-#define I965_SURFACEFORMAT_R32G32_UNORM 0x08B
-#define I965_SURFACEFORMAT_R32G32_SNORM 0x08C
-#define I965_SURFACEFORMAT_R64_FLOAT 0x08D
-#define I965_SURFACEFORMAT_R16G16B16X16_UNORM 0x08E
-#define I965_SURFACEFORMAT_R16G16B16X16_FLOAT 0x08F
-#define I965_SURFACEFORMAT_A32X32_FLOAT 0x090
-#define I965_SURFACEFORMAT_L32X32_FLOAT 0x091
-#define I965_SURFACEFORMAT_I32X32_FLOAT 0x092
-#define I965_SURFACEFORMAT_R16G16B16A16_SSCALED 0x093
-#define I965_SURFACEFORMAT_R16G16B16A16_USCALED 0x094
-#define I965_SURFACEFORMAT_R32G32_SSCALED 0x095
-#define I965_SURFACEFORMAT_R32G32_USCALED 0x096
-#define I965_SURFACEFORMAT_B8G8R8A8_UNORM 0x0C0
-#define I965_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB 0x0C1
-#define I965_SURFACEFORMAT_R10G10B10A2_UNORM 0x0C2
-#define I965_SURFACEFORMAT_R10G10B10A2_UNORM_SRGB 0x0C3
-#define I965_SURFACEFORMAT_R10G10B10A2_UINT 0x0C4
-#define I965_SURFACEFORMAT_R10G10B10_SNORM_A2_UNORM 0x0C5
-#define I965_SURFACEFORMAT_R8G8B8A8_UNORM 0x0C7
-#define I965_SURFACEFORMAT_R8G8B8A8_UNORM_SRGB 0x0C8
-#define I965_SURFACEFORMAT_R8G8B8A8_SNORM 0x0C9
-#define I965_SURFACEFORMAT_R8G8B8A8_SINT 0x0CA
-#define I965_SURFACEFORMAT_R8G8B8A8_UINT 0x0CB
-#define I965_SURFACEFORMAT_R16G16_UNORM 0x0CC
-#define I965_SURFACEFORMAT_R16G16_SNORM 0x0CD
-#define I965_SURFACEFORMAT_R16G16_SINT 0x0CE
-#define I965_SURFACEFORMAT_R16G16_UINT 0x0CF
-#define I965_SURFACEFORMAT_R16G16_FLOAT 0x0D0
-#define I965_SURFACEFORMAT_B10G10R10A2_UNORM 0x0D1
-#define I965_SURFACEFORMAT_B10G10R10A2_UNORM_SRGB 0x0D2
-#define I965_SURFACEFORMAT_R11G11B10_FLOAT 0x0D3
-#define I965_SURFACEFORMAT_R32_SINT 0x0D6
-#define I965_SURFACEFORMAT_R32_UINT 0x0D7
-#define I965_SURFACEFORMAT_R32_FLOAT 0x0D8
-#define I965_SURFACEFORMAT_R24_UNORM_X8_TYPELESS 0x0D9
-#define I965_SURFACEFORMAT_X24_TYPELESS_G8_UINT 0x0DA
-#define I965_SURFACEFORMAT_L16A16_UNORM 0x0DF
-#define I965_SURFACEFORMAT_I24X8_UNORM 0x0E0
-#define I965_SURFACEFORMAT_L24X8_UNORM 0x0E1
-#define I965_SURFACEFORMAT_A24X8_UNORM 0x0E2
-#define I965_SURFACEFORMAT_I32_FLOAT 0x0E3
-#define I965_SURFACEFORMAT_L32_FLOAT 0x0E4
-#define I965_SURFACEFORMAT_A32_FLOAT 0x0E5
-#define I965_SURFACEFORMAT_B8G8R8X8_UNORM 0x0E9
-#define I965_SURFACEFORMAT_B8G8R8X8_UNORM_SRGB 0x0EA
-#define I965_SURFACEFORMAT_R8G8B8X8_UNORM 0x0EB
-#define I965_SURFACEFORMAT_R8G8B8X8_UNORM_SRGB 0x0EC
-#define I965_SURFACEFORMAT_R9G9B9E5_SHAREDEXP 0x0ED
-#define I965_SURFACEFORMAT_B10G10R10X2_UNORM 0x0EE
-#define I965_SURFACEFORMAT_L16A16_FLOAT 0x0F0
-#define I965_SURFACEFORMAT_R32_UNORM 0x0F1
-#define I965_SURFACEFORMAT_R32_SNORM 0x0F2
-#define I965_SURFACEFORMAT_R10G10B10X2_USCALED 0x0F3
-#define I965_SURFACEFORMAT_R8G8B8A8_SSCALED 0x0F4
-#define I965_SURFACEFORMAT_R8G8B8A8_USCALED 0x0F5
-#define I965_SURFACEFORMAT_R16G16_SSCALED 0x0F6
-#define I965_SURFACEFORMAT_R16G16_USCALED 0x0F7
-#define I965_SURFACEFORMAT_R32_SSCALED 0x0F8
-#define I965_SURFACEFORMAT_R32_USCALED 0x0F9
-#define I965_SURFACEFORMAT_B5G6R5_UNORM 0x100
-#define I965_SURFACEFORMAT_B5G6R5_UNORM_SRGB 0x101
-#define I965_SURFACEFORMAT_B5G5R5A1_UNORM 0x102
-#define I965_SURFACEFORMAT_B5G5R5A1_UNORM_SRGB 0x103
-#define I965_SURFACEFORMAT_B4G4R4A4_UNORM 0x104
-#define I965_SURFACEFORMAT_B4G4R4A4_UNORM_SRGB 0x105
-#define I965_SURFACEFORMAT_R8G8_UNORM 0x106
-#define I965_SURFACEFORMAT_R8G8_SNORM 0x107
-#define I965_SURFACEFORMAT_R8G8_SINT 0x108
-#define I965_SURFACEFORMAT_R8G8_UINT 0x109
-#define I965_SURFACEFORMAT_R16_UNORM 0x10A
-#define I965_SURFACEFORMAT_R16_SNORM 0x10B
-#define I965_SURFACEFORMAT_R16_SINT 0x10C
-#define I965_SURFACEFORMAT_R16_UINT 0x10D
-#define I965_SURFACEFORMAT_R16_FLOAT 0x10E
-#define I965_SURFACEFORMAT_I16_UNORM 0x111
-#define I965_SURFACEFORMAT_L16_UNORM 0x112
-#define I965_SURFACEFORMAT_A16_UNORM 0x113
-#define I965_SURFACEFORMAT_L8A8_UNORM 0x114
-#define I965_SURFACEFORMAT_I16_FLOAT 0x115
-#define I965_SURFACEFORMAT_L16_FLOAT 0x116
-#define I965_SURFACEFORMAT_A16_FLOAT 0x117
-#define I965_SURFACEFORMAT_R5G5_SNORM_B6_UNORM 0x119
-#define I965_SURFACEFORMAT_B5G5R5X1_UNORM 0x11A
-#define I965_SURFACEFORMAT_B5G5R5X1_UNORM_SRGB 0x11B
-#define I965_SURFACEFORMAT_R8G8_SSCALED 0x11C
-#define I965_SURFACEFORMAT_R8G8_USCALED 0x11D
-#define I965_SURFACEFORMAT_R16_SSCALED 0x11E
-#define I965_SURFACEFORMAT_R16_USCALED 0x11F
-#define I965_SURFACEFORMAT_P8A8_UNORM 0x122
-#define I965_SURFACEFORMAT_A8P8_UNORM 0x123
-#define I965_SURFACEFORMAT_R8_UNORM 0x140
-#define I965_SURFACEFORMAT_R8_SNORM 0x141
-#define I965_SURFACEFORMAT_R8_SINT 0x142
-#define I965_SURFACEFORMAT_R8_UINT 0x143
-#define I965_SURFACEFORMAT_A8_UNORM 0x144
-#define I965_SURFACEFORMAT_I8_UNORM 0x145
-#define I965_SURFACEFORMAT_L8_UNORM 0x146
-#define I965_SURFACEFORMAT_P4A4_UNORM 0x147
-#define I965_SURFACEFORMAT_A4P4_UNORM 0x148
-#define I965_SURFACEFORMAT_R8_SSCALED 0x149
-#define I965_SURFACEFORMAT_R8_USCALED 0x14A
-#define I965_SURFACEFORMAT_R1_UINT 0x181
-#define I965_SURFACEFORMAT_YCRCB_NORMAL 0x182
-#define I965_SURFACEFORMAT_YCRCB_SWAPUVY 0x183
-#define I965_SURFACEFORMAT_BC1_UNORM 0x186
-#define I965_SURFACEFORMAT_BC2_UNORM 0x187
-#define I965_SURFACEFORMAT_BC3_UNORM 0x188
-#define I965_SURFACEFORMAT_BC4_UNORM 0x189
-#define I965_SURFACEFORMAT_BC5_UNORM 0x18A
-#define I965_SURFACEFORMAT_BC1_UNORM_SRGB 0x18B
-#define I965_SURFACEFORMAT_BC2_UNORM_SRGB 0x18C
-#define I965_SURFACEFORMAT_BC3_UNORM_SRGB 0x18D
-#define I965_SURFACEFORMAT_MONO8 0x18E
-#define I965_SURFACEFORMAT_YCRCB_SWAPUV 0x18F
-#define I965_SURFACEFORMAT_YCRCB_SWAPY 0x190
-#define I965_SURFACEFORMAT_DXT1_RGB 0x191
-#define I965_SURFACEFORMAT_FXT1 0x192
-#define I965_SURFACEFORMAT_R8G8B8_UNORM 0x193
-#define I965_SURFACEFORMAT_R8G8B8_SNORM 0x194
-#define I965_SURFACEFORMAT_R8G8B8_SSCALED 0x195
-#define I965_SURFACEFORMAT_R8G8B8_USCALED 0x196
-#define I965_SURFACEFORMAT_R64G64B64A64_FLOAT 0x197
-#define I965_SURFACEFORMAT_R64G64B64_FLOAT 0x198
-#define I965_SURFACEFORMAT_BC4_SNORM 0x199
-#define I965_SURFACEFORMAT_BC5_SNORM 0x19A
-#define I965_SURFACEFORMAT_R16G16B16_UNORM 0x19C
-#define I965_SURFACEFORMAT_R16G16B16_SNORM 0x19D
-#define I965_SURFACEFORMAT_R16G16B16_SSCALED 0x19E
-#define I965_SURFACEFORMAT_R16G16B16_USCALED 0x19F
-
-#define I965_SURFACEFORMAT_RAW 0x1FF
-
-#define I965_CULLMODE_BOTH 0
-#define I965_CULLMODE_NONE 1
-#define I965_CULLMODE_FRONT 2
-#define I965_CULLMODE_BACK 3
-
-#define I965_MAPFILTER_NEAREST 0x0
-#define I965_MAPFILTER_LINEAR 0x1
-#define I965_MAPFILTER_ANISOTROPIC 0x2
-
-#define I965_MIPFILTER_NONE 0
-#define I965_MIPFILTER_NEAREST 1
-#define I965_MIPFILTER_LINEAR 3
-
-#define HSW_SCS_ZERO 0
-#define HSW_SCS_ONE 1
-#define HSW_SCS_RED 4
-#define HSW_SCS_GREEN 5
-#define HSW_SCS_BLUE 6
-#define HSW_SCS_ALPHA 7
-
-#define I965_TEXCOORDMODE_WRAP 0
-#define I965_TEXCOORDMODE_MIRROR 1
-#define I965_TEXCOORDMODE_CLAMP 2
-#define I965_TEXCOORDMODE_CUBE 3
-#define I965_TEXCOORDMODE_CLAMP_BORDER 4
-#define I965_TEXCOORDMODE_MIRROR_ONCE 5
-
-#define I965_BLENDFACTOR_ONE 0x1
-#define I965_BLENDFACTOR_SRC_COLOR 0x2
-#define I965_BLENDFACTOR_SRC_ALPHA 0x3
-#define I965_BLENDFACTOR_DST_ALPHA 0x4
-#define I965_BLENDFACTOR_DST_COLOR 0x5
-#define I965_BLENDFACTOR_SRC_ALPHA_SATURATE 0x6
-#define I965_BLENDFACTOR_CONST_COLOR 0x7
-#define I965_BLENDFACTOR_CONST_ALPHA 0x8
-#define I965_BLENDFACTOR_SRC1_COLOR 0x9
-#define I965_BLENDFACTOR_SRC1_ALPHA 0x0A
-#define I965_BLENDFACTOR_ZERO 0x11
-#define I965_BLENDFACTOR_INV_SRC_COLOR 0x12
-#define I965_BLENDFACTOR_INV_SRC_ALPHA 0x13
-#define I965_BLENDFACTOR_INV_DST_ALPHA 0x14
-#define I965_BLENDFACTOR_INV_DST_COLOR 0x15
-#define I965_BLENDFACTOR_INV_CONST_COLOR 0x17
-#define I965_BLENDFACTOR_INV_CONST_ALPHA 0x18
-#define I965_BLENDFACTOR_INV_SRC1_COLOR 0x19
-#define I965_BLENDFACTOR_INV_SRC1_ALPHA 0x1A
-
-#define I965_BLENDFUNCTION_ADD 0
-#define I965_BLENDFUNCTION_SUBTRACT 1
-#define I965_BLENDFUNCTION_REVERSE_SUBTRACT 2
-#define I965_BLENDFUNCTION_MIN 3
-#define I965_BLENDFUNCTION_MAX 4
-
-#define I965_SURFACERETURNFORMAT_FLOAT32 0
-#define I965_SURFACERETURNFORMAT_S1 1
-
-#define I965_VFCOMPONENT_NOSTORE 0
-#define I965_VFCOMPONENT_STORE_SRC 1
-#define I965_VFCOMPONENT_STORE_0 2
-#define I965_VFCOMPONENT_STORE_1_FLT 3
-#define I965_VFCOMPONENT_STORE_1_INT 4
-#define I965_VFCOMPONENT_STORE_VID 5
-#define I965_VFCOMPONENT_STORE_IID 6
-#define I965_VFCOMPONENT_STORE_PID 7
-
-#define VE0_VERTEX_BUFFER_INDEX_SHIFT 27
-#define GEN6_VE0_VERTEX_BUFFER_INDEX_SHIFT 26 /* for GEN6 */
-#define VE0_VALID (1 << 26)
-#define GEN6_VE0_VALID (1 << 25) /* for GEN6 */
-#define VE0_FORMAT_SHIFT 16
-#define VE0_OFFSET_SHIFT 0
-#define VE1_VFCOMPONENT_0_SHIFT 28
-#define VE1_VFCOMPONENT_1_SHIFT 24
-#define VE1_VFCOMPONENT_2_SHIFT 20
-#define VE1_VFCOMPONENT_3_SHIFT 16
-#define VE1_DESTINATION_ELEMENT_OFFSET_SHIFT 0
-#define GEN8_VE0_VERTEX_BUFFER_INDEX_SHIFT 26 /* for GEN8 */
-#define GEN8_VE0_VALID (1 << 25) /* for GEN8 */
-
-#define VB0_BUFFER_INDEX_SHIFT 27
-#define GEN6_VB0_BUFFER_INDEX_SHIFT 26
-#define VB0_VERTEXDATA (0 << 26)
-#define VB0_INSTANCEDATA (1 << 26)
-#define GEN6_VB0_VERTEXDATA (0 << 20)
-#define GEN6_VB0_INSTANCEDATA (1 << 20)
-#define GEN7_VB0_ADDRESS_MODIFYENABLE (1 << 14)
-#define VB0_BUFFER_PITCH_SHIFT 0
-#define GEN8_VB0_BUFFER_INDEX_SHIFT 26
-#define GEN8_VB0_MOCS_SHIFT 16
-
-#define _3DPRIMITIVE_VERTEX_SEQUENTIAL (0 << 15)
-#define _3DPRIMITIVE_VERTEX_RANDOM (1 << 15)
-#define _3DPRIMITIVE_TOPOLOGY_SHIFT 10
-/* DW1 on GEN7*/
-# define GEN7_3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL (0 << 8)
-# define GEN7_3DPRIM_VERTEXBUFFER_ACCESS_RANDOM (1 << 8)
-
-#define _3DPRIM_POINTLIST 0x01
-#define _3DPRIM_LINELIST 0x02
-#define _3DPRIM_LINESTRIP 0x03
-#define _3DPRIM_TRILIST 0x04
-#define _3DPRIM_TRISTRIP 0x05
-#define _3DPRIM_TRIFAN 0x06
-#define _3DPRIM_QUADLIST 0x07
-#define _3DPRIM_QUADSTRIP 0x08
-#define _3DPRIM_LINELIST_ADJ 0x09
-#define _3DPRIM_LINESTRIP_ADJ 0x0A
-#define _3DPRIM_TRILIST_ADJ 0x0B
-#define _3DPRIM_TRISTRIP_ADJ 0x0C
-#define _3DPRIM_TRISTRIP_REVERSE 0x0D
-#define _3DPRIM_POLYGON 0x0E
-#define _3DPRIM_RECTLIST 0x0F
-#define _3DPRIM_LINELOOP 0x10
-#define _3DPRIM_POINTLIST_BF 0x11
-#define _3DPRIM_LINESTRIP_CONT 0x12
-#define _3DPRIM_LINESTRIP_BF 0x13
-#define _3DPRIM_LINESTRIP_CONT_BF 0x14
-#define _3DPRIM_TRIFAN_NOSTIPPLE 0x15
-
-#define GEN8_3DSTATE_VF_INSTANCING CMD(3, 0, 0x49)
-#define GEN8_3DSTATE_VF_SGVS CMD(3, 0, 0x4a)
-#define GEN8_3DSTATE_VF_TOPOLOGY CMD(3, 0, 0x4b)
-
-#define I965_TILEWALK_XMAJOR 0
-#define I965_TILEWALK_YMAJOR 1
-
-#define SCAN_RASTER_ORDER 0
-#define SCAN_SPECIAL_ORDER 1
-
-#define ENTROPY_CAVLD 0
-#define ENTROPY_CABAC 1
-
-#define SLICE_TYPE_P 0
-#define SLICE_TYPE_B 1
-#define SLICE_TYPE_I 2
-#define SLICE_TYPE_SP 3
-#define SLICE_TYPE_SI 4
-
-#define PRESENT_REF_LIST0 (1 << 0)
-#define PRESENT_REF_LIST1 (1 << 1)
-#define PRESENT_WEIGHT_OFFSET_L0 (1 << 2)
-#define PRESENT_WEIGHT_OFFSET_L1 (1 << 3)
-
-#define RESIDUAL_DATA_OFFSET 48
-
-#define PRESENT_NOMV 0
-#define PRESENT_NOWO 1
-#define PRESENT_MV_WO 3
-
-#define SCOREBOARD_STALLING 0
-#define SCOREBOARD_NON_STALLING 1
-
-#define SURFACE_FORMAT_YCRCB_NORMAL 0
-#define SURFACE_FORMAT_YCRCB_SWAPUVY 1
-#define SURFACE_FORMAT_YCRCB_SWAPUV 2
-#define SURFACE_FORMAT_YCRCB_SWAPY 3
-#define SURFACE_FORMAT_PLANAR_420_8 4
-#define SURFACE_FORMAT_PLANAR_411_8 5
-#define SURFACE_FORMAT_PLANAR_422_8 6
-#define SURFACE_FORMAT_STMM_DN_STATISTICS 7
-#define SURFACE_FORMAT_R10G10B10A2_UNORM 8
-#define SURFACE_FORMAT_R8G8B8A8_UNORM 9
-#define SURFACE_FORMAT_R8B8_UNORM 10
-#define SURFACE_FORMAT_R8_UNORM 11
-#define SURFACE_FORMAT_Y8_UNORM 12
-#define SURFACE_FORMAT_P010 13
-#define SURFACE_FORMAT_P016 14
-
-#define AVS_FILTER_ADAPTIVE_8_TAP 0
-#define AVS_FILTER_NEAREST 1
-
-#define IEF_FILTER_COMBO 0
-#define IEF_FILTER_DETAIL 1
-
-#define IEF_FILTER_SIZE_3X3 0
-#define IEF_FILTER_SIZE_5X5 1
-
-#define MFX_FORMAT_MPEG2 0
-#define MFX_FORMAT_VC1 1
-#define MFX_FORMAT_AVC 2
-#define MFX_FORMAT_JPEG 3
-#define MFX_FORMAT_SVC 4
-#define MFX_FORMAT_VP8 5
-
-#define MFX_SHORT_MODE 0
-#define MFX_LONG_MODE 1
-
-#define MFX_CODEC_DECODE 0
-#define MFX_CODEC_ENCODE 1
-
-#define MFX_QM_AVC_4X4_INTRA_MATRIX 0
-#define MFX_QM_AVC_4X4_INTER_MATRIX 1
-#define MFX_QM_AVC_8x8_INTRA_MATRIX 2
-#define MFX_QM_AVC_8x8_INTER_MATRIX 3
-
-#define MFX_QM_MPEG_INTRA_QUANTIZER_MATRIX 0
-#define MFX_QM_MPEG_NON_INTRA_QUANTIZER_MATRIX 1
-
-#define MFX_QM_JPEG_LUMA_Y_QUANTIZER_MATRIX 0
-#define MFX_QM_JPEG_CHROMA_CB_QUANTIZER_MATRIX 1
-#define MFX_QM_JPEG_CHROMA_CR_QUANTIZER_MATRIX 2
-#define MFX_QM_JPEG_ALPHA_QUANTIZER_MATRIX 3 /* for new device */
-
-#define MFX_HUFFTABLE_ID_Y 0
-#define MFX_HUFFTABLE_ID_UV 1 /* UV on Ivybridge */
-
-#define MFD_MODE_VLD 0
-#define MFD_MODE_IT 1
-
-#define MFX_SURFACE_YCRCB_NORMAL 0
-#define MFX_SURFACE_YCRCB_SWAPY 3
-#define MFX_SURFACE_PLANAR_420_8 4
-#define MFX_SURFACE_PLANAR_411_8 5
-#define MFX_SURFACE_PLANAR_422_8 6
-#define MFX_SURFACE_R8G8B8A8_UNORM 9
-#define MFX_SURFACE_MONOCHROME 12
-
-#define MPEG_I_PICTURE 1
-#define MPEG_P_PICTURE 2
-#define MPEG_B_PICTURE 3
-
-#define MPEG_TOP_FIELD 1
-#define MPEG_BOTTOM_FIELD 2
-#define MPEG_FRAME 3
-
-#define SUBSAMPLE_YUV400 0
-#define SUBSAMPLE_YUV420 1
-#define SUBSAMPLE_YUV422H 2
-#define SUBSAMPLE_YUV422V 3
-#define SUBSAMPLE_YUV444 4
-#define SUBSAMPLE_YUV411 5
-#define SUBSAMPLE_RGBX 6
-#define JPEG_ENC_SURFACE_NV12 1
-#define JPEG_ENC_SURFACE_UYVY 2
-#define JPEG_ENC_SURFACE_YUY2 3
-#define JPEG_ENC_SURFACE_Y8 4
-#define JPEG_ENC_SURFACE_RGB 5
-
-#define JPEG_ENC_MCU_YUV400 0
-#define JPEG_ENC_MCU_YUV420 1
-#define JPEG_ENC_MCU_YUV422H_2Y 2
-#define JPEG_ENC_MCU_RGB 3
-
-#define JPEG_ENC_ROUND_QUANT_DEFAULT 0
-#define JPEG_ENC_ROUND_QUANT_MINUS_128TH 1
-#define JPEG_ENC_ROUND_QUANT_PLUS_128TH 2
-#define JPEG_ENC_ROUND_QUANT_MINUS_64TH 3
-#define JPEG_ENC_ROUND_QUANT_PLUS_64TH 4
-#define JPEG_ENC_ROUND_QUANT_MINUS_32TH 5
-#define JPEG_ENC_ROUND_QUANT_MINUS_16TH 6
-#define JPEG_ENC_ROUND_QUANT_MINUS_8TH 7
-
-
-
-#define GEN9_PIPELINE_SELECTION_MASK (0x3 << 8)
-#define GEN9_FORCE_MEDIA_AWAKE_MASK (1 << 13)
-#define GEN9_FORCE_MEDIA_AWAKE_ON (1 << 5)
-#define GEN9_FORCE_MEDIA_AWAKE_OFF (0 << 5)
-
-#define GEN9_MEDIA_DOP_GATE_MASK (1 << 12)
-#define GEN9_MEDIA_DOP_GATE_ON (1 << 4)
-#define GEN9_MEDIA_DOP_GATE_OFF (0 << 4)
-
-#define GEN9_SBE_ACTIVE_COMPONENT_NONE 0
-#define GEN9_SBE_ACTIVE_COMPONENT_XY 1
-#define GEN9_SBE_ACTIVE_COMPONENT_XYZ 2
-#define GEN9_SBE_ACTIVE_COMPONENT_XYZW 3
-
-#define HEVC_SLICE_B 0
-#define HEVC_SLICE_P 1
-#define HEVC_SLICE_I 2
-
-#define HCP_CODEC_HEVC 0
-
-#define HCP_CODEC_VP9 1
-#define HCP_VP9_KEY_FRAME 0
-#define HCP_VP9_INTER_FRAME 1
-#define HCP_VP9_PROFILE0 0 /* 8 bit 420 only */
-#define HCP_VP9_PROFILE2 2 /* 10 bits 420 only */
-
-#define HCP_CODEC_SELECT_DECODE 0
-#define HCP_CODEC_SELECT_ENCODE 1
-
-/* VDEnc/HuC */
-/* HuC commands */
-#define HUC(command) \
- (3 << 29 | \
- 2 << 27 | \
- 11 << 23 | \
- (command << 16))
-
-#define HUC_PIPE_MODE_SELECT HUC(0)
-#define HUC_IMEM_STATE HUC(1)
-#define HUC_DMEM_STATE HUC(2)
-#define HUC_CFG_STATE HUC(3)
-#define HUC_VIRTUAL_ADDR_STATE HUC(4)
-#define HUC_IND_OBJ_BASE_ADDR_STATE HUC(5)
-#define HUC_STREAM_OBJECT HUC(32)
-#define HUC_START HUC(33)
-
-/* HuC registers */
-#define VCS0_HUC_STATUS 0xD000
-#define VCS0_HUC_STATUS2 0xD3B0
-
-/* VDEnc commands */
-#define VDENC(opcode, sub_opcode_a, sub_opcode_b) \
- (3 << 29 | \
- 2 << 27 | \
- opcode << 23 | \
- sub_opcode_a << 21 | \
- sub_opcode_b << 16)
-
-#define VD_PIPELINE_FLUSH VDENC(15, 0, 0)
-
-#define VDENC_PIPE_MODE_SELECT VDENC(1, 0, 0)
-#define VDENC_SRC_SURFACE_STATE VDENC(1, 0, 1)
-#define VDENC_REF_SURFACE_STATE VDENC(1, 0, 2)
-#define VDENC_DS_REF_SURFACE_STATE VDENC(1, 0, 3)
-#define VDENC_PIPE_BUF_ADDR_STATE VDENC(1, 0, 4)
-#define VDENC_IMG_STATE VDENC(1, 0, 5)
-#define VDENC_CONST_QPT_STATE VDENC(1, 0, 6)
-#define VDENC_WALKER_STATE VDENC(1, 0, 7)
-#define VDENC_WEIGHTSOFFSETS_STATE VDENC(1, 0, 8)
-
-#define VDENC_CODEC_AVC 2
-
-#define VDENC_SURFACE_YUV422 0
-#define VDENC_SURFACE_RGBA444 1
-#define VDENC_SURFACE_YUV444 2
-#define VDENC_SURFACE_Y8_UNORM 3
-#define VDENC_SURFACE_PLANAR_420_8 4
-#define VDENC_SURFACE_YCBCR_SWAP_Y 5
-#define VDENC_SURFACE_YCBCR_SWAP_UV 6
-#define VDENC_SURFACE_YCBCR_SWAP_UVY 7
-#define VDENC_SURFACE_P010 8
-#define VDENC_SURFACE_RGBA10 9
-#define VDENC_SURFACE_Y410 10
-#define VDENC_SURFACE_NV21 11
-
-#define MFC_BITSTREAM_BYTECOUNT_FRAME_REG 0x128A0
-#define MFC_IMAGE_STATUS_CTRL_REG 0x128B8
-
-#define GEN9_CACHE_PTE 0x02
-
-#endif /* _I965_DEFINES_H_ */
diff --git a/src/i965_device_info.c b/src/i965_device_info.c
deleted file mode 100644
index 0fc8930..0000000
--- a/src/i965_device_info.c
+++ /dev/null
@@ -1,889 +0,0 @@
-/*
- * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "i965_drv_video.h"
-
-#include <string.h>
-#include <strings.h>
-#include <errno.h>
-#include <cpuid.h>
-
-/* Extra set of chroma formats supported for H.264 decoding (beyond YUV 4:2:0) */
-#define EXTRA_H264_DEC_CHROMA_FORMATS \
- (VA_RT_FORMAT_YUV400)
-
-/* Extra set of chroma formats supported for JPEG decoding (beyond YUV 4:2:0) */
-#define EXTRA_JPEG_DEC_CHROMA_FORMATS \
- (VA_RT_FORMAT_YUV400 | VA_RT_FORMAT_YUV411 | VA_RT_FORMAT_YUV422 | \
- VA_RT_FORMAT_YUV444)
-
-/* Extra set of chroma formats supported for JPEG encoding (beyond YUV 4:2:0) */
-#define EXTRA_JPEG_ENC_CHROMA_FORMATS \
- (VA_RT_FORMAT_YUV400| VA_RT_FORMAT_YUV422 | VA_RT_FORMAT_YUV444 | VA_RT_FORMAT_RGB32)
-
-#define EXTRA_HEVC_DEC_CHROMA_FORMATS \
- (VA_RT_FORMAT_YUV420_10BPP)
-
-#define EXTRA_VP9_DEC_CHROMA_FORMATS \
- (VA_RT_FORMAT_YUV420_10BPP)
-
-/* Defines VA profile as a 32-bit unsigned integer mask */
-#define VA_PROFILE_MASK(PROFILE) \
- (1U << VAProfile##PROFILE)
-
-#define VP9_PROFILE_MASK(PROFILE) \
- (1U << PROFILE)
-
-extern struct hw_context *i965_proc_context_init(VADriverContextP, struct object_config *);
-extern struct hw_context *g4x_dec_hw_context_init(VADriverContextP, struct object_config *);
-extern bool genx_render_init(VADriverContextP);
-
-static struct hw_codec_info g4x_hw_codec_info = {
- .dec_hw_context_init = g4x_dec_hw_context_init,
- .enc_hw_context_init = NULL,
- .proc_hw_context_init = NULL,
- .render_init = genx_render_init,
- .post_processing_context_init = NULL,
-
- .max_width = 2048,
- .max_height = 2048,
- .min_linear_wpitch = 16,
- .min_linear_hpitch = 16,
-
- .has_mpeg2_decoding = 1,
-
- .num_filters = 0,
-};
-
-extern struct hw_context *ironlake_dec_hw_context_init(VADriverContextP, struct object_config *);
-extern void i965_post_processing_context_init(VADriverContextP, void *, struct intel_batchbuffer *);
-
-static struct hw_codec_info ilk_hw_codec_info = {
- .dec_hw_context_init = ironlake_dec_hw_context_init,
- .enc_hw_context_init = NULL,
- .proc_hw_context_init = i965_proc_context_init,
- .render_init = genx_render_init,
- .post_processing_context_init = i965_post_processing_context_init,
-
- .max_width = 2048,
- .max_height = 2048,
- .min_linear_wpitch = 16,
- .min_linear_hpitch = 16,
-
- .has_mpeg2_decoding = 1,
- .has_h264_decoding = 1,
- .has_vpp = 1,
- .has_accelerated_putimage = 1,
-
- .num_filters = 0,
-};
-
-static void gen6_hw_codec_preinit(VADriverContextP ctx, struct hw_codec_info *codec_info);
-
-extern struct hw_context *gen6_dec_hw_context_init(VADriverContextP, struct object_config *);
-extern struct hw_context *gen6_enc_hw_context_init(VADriverContextP, struct object_config *);
-static struct hw_codec_info snb_hw_codec_info = {
- .dec_hw_context_init = gen6_dec_hw_context_init,
- .enc_hw_context_init = gen6_enc_hw_context_init,
- .proc_hw_context_init = i965_proc_context_init,
- .render_init = genx_render_init,
- .post_processing_context_init = i965_post_processing_context_init,
- .preinit_hw_codec = gen6_hw_codec_preinit,
-
- .max_width = 2048,
- .max_height = 2048,
- .min_linear_wpitch = 16,
- .min_linear_hpitch = 16,
-
- .h264_mvc_dec_profiles = VA_PROFILE_MASK(H264StereoHigh),
- .h264_dec_chroma_formats = EXTRA_H264_DEC_CHROMA_FORMATS,
-
- .has_mpeg2_decoding = 1,
- .has_h264_decoding = 1,
- .has_h264_encoding = 1,
- .has_vc1_decoding = 1,
- .has_vpp = 1,
- .has_accelerated_getimage = 1,
- .has_accelerated_putimage = 1,
- .has_tiled_surface = 1,
- .has_di_motion_adptive = 1,
-
- .num_filters = 2,
- .filters = {
- { VAProcFilterNoiseReduction, I965_RING_NULL },
- { VAProcFilterDeinterlacing, I965_RING_NULL },
- },
-};
-
-static void gen7_hw_codec_preinit(VADriverContextP ctx, struct hw_codec_info *codec_info);
-
-extern struct hw_context *gen7_dec_hw_context_init(VADriverContextP, struct object_config *);
-extern struct hw_context *gen7_enc_hw_context_init(VADriverContextP, struct object_config *);
-static struct hw_codec_info ivb_hw_codec_info = {
- .dec_hw_context_init = gen7_dec_hw_context_init,
- .enc_hw_context_init = gen7_enc_hw_context_init,
- .proc_hw_context_init = i965_proc_context_init,
- .render_init = genx_render_init,
- .post_processing_context_init = i965_post_processing_context_init,
- .preinit_hw_codec = gen7_hw_codec_preinit,
-
- .max_width = 4096,
- .max_height = 4096,
- .min_linear_wpitch = 64,
- .min_linear_hpitch = 16,
-
- .h264_mvc_dec_profiles = VA_PROFILE_MASK(H264StereoHigh),
- .h264_dec_chroma_formats = EXTRA_H264_DEC_CHROMA_FORMATS,
- .jpeg_dec_chroma_formats = EXTRA_JPEG_DEC_CHROMA_FORMATS,
-
- .has_mpeg2_decoding = 1,
- .has_mpeg2_encoding = 1,
- .has_h264_decoding = 1,
- .has_h264_encoding = 1,
- .has_vc1_decoding = 1,
- .has_jpeg_decoding = 1,
- .has_vpp = 1,
- .has_accelerated_getimage = 1,
- .has_accelerated_putimage = 1,
- .has_tiled_surface = 1,
- .has_di_motion_adptive = 1,
- .has_di_motion_compensated = 1,
-
- .num_filters = 2,
- .filters = {
- { VAProcFilterNoiseReduction, I965_RING_NULL },
- { VAProcFilterDeinterlacing, I965_RING_NULL },
- },
-};
-
-static void hsw_hw_codec_preinit(VADriverContextP ctx, struct hw_codec_info *codec_info);
-
-extern struct hw_context *gen75_dec_hw_context_init(VADriverContextP, struct object_config *);
-extern struct hw_context *gen75_enc_hw_context_init(VADriverContextP, struct object_config *);
-extern struct hw_context *gen75_proc_context_init(VADriverContextP, struct object_config *);
-static struct hw_codec_info hsw_hw_codec_info = {
- .dec_hw_context_init = gen75_dec_hw_context_init,
- .enc_hw_context_init = gen75_enc_hw_context_init,
- .proc_hw_context_init = gen75_proc_context_init,
- .render_init = genx_render_init,
- .post_processing_context_init = i965_post_processing_context_init,
- .preinit_hw_codec = hsw_hw_codec_preinit,
-
- .max_width = 4096,
- .max_height = 4096,
- .min_linear_wpitch = 64,
- .min_linear_hpitch = 16,
-
- .h264_mvc_dec_profiles = (VA_PROFILE_MASK(H264StereoHigh) |
- VA_PROFILE_MASK(H264MultiviewHigh)),
- .h264_dec_chroma_formats = EXTRA_H264_DEC_CHROMA_FORMATS,
- .jpeg_dec_chroma_formats = EXTRA_JPEG_DEC_CHROMA_FORMATS,
-
- .has_mpeg2_decoding = 1,
- .has_mpeg2_encoding = 1,
- .has_h264_decoding = 1,
- .has_h264_encoding = 1,
- .has_vc1_decoding = 1,
- .has_jpeg_decoding = 1,
- .has_vpp = 1,
- .has_accelerated_getimage = 1,
- .has_accelerated_putimage = 1,
- .has_tiled_surface = 1,
- .has_di_motion_adptive = 1,
- .has_di_motion_compensated = 1,
- .has_h264_mvc_encoding = 1,
-
- .num_filters = 5,
- .filters = {
- { VAProcFilterNoiseReduction, I965_RING_VEBOX },
- { VAProcFilterDeinterlacing, I965_RING_VEBOX },
- { VAProcFilterSharpening, I965_RING_NULL },
- { VAProcFilterColorBalance, I965_RING_VEBOX},
- { VAProcFilterSkinToneEnhancement, I965_RING_VEBOX},
- },
-};
-
-extern struct hw_context *gen8_dec_hw_context_init(VADriverContextP, struct object_config *);
-extern struct hw_context *gen8_enc_hw_context_init(VADriverContextP, struct object_config *);
-extern void gen8_post_processing_context_init(VADriverContextP, void *, struct intel_batchbuffer *);
-static struct hw_codec_info bdw_hw_codec_info = {
- .dec_hw_context_init = gen8_dec_hw_context_init,
- .enc_hw_context_init = gen8_enc_hw_context_init,
- .proc_hw_context_init = gen75_proc_context_init,
- .render_init = gen8_render_init,
- .post_processing_context_init = gen8_post_processing_context_init,
-
- .max_width = 4096,
- .max_height = 4096,
- .min_linear_wpitch = 64,
- .min_linear_hpitch = 16,
-
- .h264_mvc_dec_profiles = (VA_PROFILE_MASK(H264StereoHigh) |
- VA_PROFILE_MASK(H264MultiviewHigh)),
- .h264_dec_chroma_formats = EXTRA_H264_DEC_CHROMA_FORMATS,
- .jpeg_dec_chroma_formats = EXTRA_JPEG_DEC_CHROMA_FORMATS,
-
- .has_mpeg2_decoding = 1,
- .has_mpeg2_encoding = 1,
- .has_h264_decoding = 1,
- .has_h264_encoding = 1,
- .has_vc1_decoding = 1,
- .has_jpeg_decoding = 1,
- .has_vpp = 1,
- .has_accelerated_getimage = 1,
- .has_accelerated_putimage = 1,
- .has_tiled_surface = 1,
- .has_di_motion_adptive = 1,
- .has_di_motion_compensated = 1,
- .has_vp8_decoding = 1,
- .has_h264_mvc_encoding = 1,
-
- .num_filters = 5,
- .filters = {
- { VAProcFilterNoiseReduction, I965_RING_VEBOX },
- { VAProcFilterDeinterlacing, I965_RING_VEBOX },
- { VAProcFilterSharpening, I965_RING_NULL }, /* need to rebuild the shader for BDW */
- { VAProcFilterColorBalance, I965_RING_VEBOX},
- { VAProcFilterSkinToneEnhancement, I965_RING_VEBOX},
- },
-};
-
-extern struct hw_context *gen9_dec_hw_context_init(VADriverContextP, struct object_config *);
-static struct hw_codec_info chv_hw_codec_info = {
- .dec_hw_context_init = gen9_dec_hw_context_init,
- .enc_hw_context_init = gen8_enc_hw_context_init,
- .proc_hw_context_init = gen75_proc_context_init,
- .render_init = gen8_render_init,
- .post_processing_context_init = gen8_post_processing_context_init,
-
- .max_width = 4096,
- .max_height = 4096,
- .min_linear_wpitch = 64,
- .min_linear_hpitch = 16,
-
- .h264_mvc_dec_profiles = (VA_PROFILE_MASK(H264StereoHigh) |
- VA_PROFILE_MASK(H264MultiviewHigh)),
- .h264_dec_chroma_formats = EXTRA_H264_DEC_CHROMA_FORMATS,
- .jpeg_dec_chroma_formats = EXTRA_JPEG_DEC_CHROMA_FORMATS,
- .jpeg_enc_chroma_formats = EXTRA_JPEG_ENC_CHROMA_FORMATS,
-
- .has_mpeg2_decoding = 1,
- .has_mpeg2_encoding = 1,
- .has_h264_decoding = 1,
- .has_h264_encoding = 1,
- .has_vc1_decoding = 1,
- .has_jpeg_decoding = 1,
- .has_jpeg_encoding = 1,
- .has_vpp = 1,
- .has_accelerated_getimage = 1,
- .has_accelerated_putimage = 1,
- .has_tiled_surface = 1,
- .has_di_motion_adptive = 1,
- .has_di_motion_compensated = 1,
- .has_vp8_decoding = 1,
- .has_vp8_encoding = 1,
- .has_h264_mvc_encoding = 1,
- .has_hevc_decoding = 1,
-
- .num_filters = 5,
- .filters = {
- { VAProcFilterNoiseReduction, I965_RING_VEBOX },
- { VAProcFilterDeinterlacing, I965_RING_VEBOX },
- { VAProcFilterSharpening, I965_RING_NULL }, /* need to rebuild the shader for BDW */
- { VAProcFilterColorBalance, I965_RING_VEBOX},
- { VAProcFilterSkinToneEnhancement, I965_RING_VEBOX},
- },
-};
-
-static void gen9_hw_codec_preinit(VADriverContextP ctx, struct hw_codec_info *codec_info);
-
-extern struct hw_context *gen9_enc_hw_context_init(VADriverContextP, struct object_config *);
-extern void gen9_post_processing_context_init(VADriverContextP, void *, struct intel_batchbuffer *);
-extern void gen9_max_resolution(struct i965_driver_data *, struct object_config *, int *, int *);
-static struct hw_codec_info skl_hw_codec_info = {
- .dec_hw_context_init = gen9_dec_hw_context_init,
- .enc_hw_context_init = gen9_enc_hw_context_init,
- .proc_hw_context_init = gen75_proc_context_init,
- .render_init = gen9_render_init,
- .post_processing_context_init = gen9_post_processing_context_init,
- .max_resolution = gen9_max_resolution,
- .preinit_hw_codec = gen9_hw_codec_preinit,
-
- .max_width = 4096, /* default. See max_resolution */
- .max_height = 4096, /* default. See max_resolution */
- .min_linear_wpitch = 64,
- .min_linear_hpitch = 16,
-
- .h264_mvc_dec_profiles = (VA_PROFILE_MASK(H264StereoHigh) |
- VA_PROFILE_MASK(H264MultiviewHigh)),
- .h264_dec_chroma_formats = EXTRA_H264_DEC_CHROMA_FORMATS,
- .jpeg_dec_chroma_formats = EXTRA_JPEG_DEC_CHROMA_FORMATS,
- .jpeg_enc_chroma_formats = EXTRA_JPEG_ENC_CHROMA_FORMATS,
-
- .has_mpeg2_decoding = 1,
- .has_mpeg2_encoding = 1,
- .has_h264_decoding = 1,
- .has_h264_encoding = 1,
- .has_vc1_decoding = 1,
- .has_jpeg_decoding = 1,
- .has_jpeg_encoding = 1,
- .has_vpp = 1,
- .has_accelerated_getimage = 1,
- .has_accelerated_putimage = 1,
- .has_tiled_surface = 1,
- .has_di_motion_adptive = 1,
- .has_di_motion_compensated = 1,
- .has_vp8_decoding = 1,
- .has_vp8_encoding = 1,
- .has_h264_mvc_encoding = 1,
- .has_hevc_decoding = 1,
- .has_hevc_encoding = 1,
- .has_lp_h264_encoding = 1,
-
- .lp_h264_brc_mode = VA_RC_CQP,
-
- .num_filters = 5,
- .filters = {
- { VAProcFilterNoiseReduction, I965_RING_VEBOX },
- { VAProcFilterDeinterlacing, I965_RING_VEBOX },
- { VAProcFilterSharpening, I965_RING_NULL }, /* need to rebuild the shader for BDW */
- { VAProcFilterColorBalance, I965_RING_VEBOX},
- { VAProcFilterSkinToneEnhancement, I965_RING_VEBOX},
- },
-};
-
-
-static struct hw_codec_info bxt_hw_codec_info = {
- .dec_hw_context_init = gen9_dec_hw_context_init,
- .enc_hw_context_init = gen9_enc_hw_context_init,
- .proc_hw_context_init = gen75_proc_context_init,
- .render_init = gen9_render_init,
- .post_processing_context_init = gen9_post_processing_context_init,
- .max_resolution = gen9_max_resolution,
-
- .max_width = 4096, /* default. See max_resolution */
- .max_height = 4096, /* default. See max_resolution */
- .min_linear_wpitch = 64,
- .min_linear_hpitch = 16,
-
- .h264_mvc_dec_profiles = (VA_PROFILE_MASK(H264StereoHigh) |
- VA_PROFILE_MASK(H264MultiviewHigh)),
- .vp9_dec_profiles = VP9_PROFILE_MASK(0),
-
- .h264_dec_chroma_formats = EXTRA_H264_DEC_CHROMA_FORMATS,
- .jpeg_dec_chroma_formats = EXTRA_JPEG_DEC_CHROMA_FORMATS,
- .jpeg_enc_chroma_formats = EXTRA_JPEG_ENC_CHROMA_FORMATS,
- .hevc_dec_chroma_formats = EXTRA_HEVC_DEC_CHROMA_FORMATS,
-
- .has_mpeg2_decoding = 1,
- .has_h264_decoding = 1,
- .has_h264_encoding = 1,
- .has_vc1_decoding = 1,
- .has_jpeg_decoding = 1,
- .has_jpeg_encoding = 1,
- .has_vpp = 1,
- .has_accelerated_getimage = 1,
- .has_accelerated_putimage = 1,
- .has_tiled_surface = 1,
- .has_di_motion_adptive = 1,
- .has_di_motion_compensated = 1,
- .has_vp8_decoding = 1,
- .has_vp8_encoding = 1,
- .has_h264_mvc_encoding = 1,
- .has_hevc_decoding = 1,
- .has_hevc_encoding = 1,
- .has_hevc10_decoding = 1,
- .has_vp9_decoding = 1,
- .has_vpp_p010 = 1,
- .has_lp_h264_encoding = 1,
-
- .lp_h264_brc_mode = VA_RC_CQP,
-
- .num_filters = 5,
- .filters = {
- { VAProcFilterNoiseReduction, I965_RING_VEBOX },
- { VAProcFilterDeinterlacing, I965_RING_VEBOX },
- { VAProcFilterSharpening, I965_RING_NULL },
- { VAProcFilterColorBalance, I965_RING_VEBOX},
- { VAProcFilterSkinToneEnhancement, I965_RING_VEBOX},
- },
-};
-
-static struct hw_codec_info kbl_hw_codec_info = {
- .dec_hw_context_init = gen9_dec_hw_context_init,
- .enc_hw_context_init = gen9_enc_hw_context_init,
- .proc_hw_context_init = gen75_proc_context_init,
- .render_init = gen9_render_init,
- .post_processing_context_init = gen9_post_processing_context_init,
- .max_resolution = gen9_max_resolution,
-
- .max_width = 4096, /* default. See max_resolution */
- .max_height = 4096, /* default. See max_resolution */
- .min_linear_wpitch = 64,
- .min_linear_hpitch = 16,
-
- .h264_mvc_dec_profiles = (VA_PROFILE_MASK(H264StereoHigh) |
- VA_PROFILE_MASK(H264MultiviewHigh)),
- .vp9_dec_profiles = VP9_PROFILE_MASK(0) |
- VP9_PROFILE_MASK(2),
- .vp9_enc_profiles = VP9_PROFILE_MASK(0),
-
- .h264_dec_chroma_formats = EXTRA_H264_DEC_CHROMA_FORMATS,
- .jpeg_dec_chroma_formats = EXTRA_JPEG_DEC_CHROMA_FORMATS,
- .jpeg_enc_chroma_formats = EXTRA_JPEG_ENC_CHROMA_FORMATS,
- .hevc_dec_chroma_formats = EXTRA_HEVC_DEC_CHROMA_FORMATS,
- .vp9_dec_chroma_formats = EXTRA_VP9_DEC_CHROMA_FORMATS,
-
- .has_mpeg2_decoding = 1,
- .has_mpeg2_encoding = 1,
- .has_h264_decoding = 1,
- .has_h264_encoding = 1,
- .has_vc1_decoding = 1,
- .has_jpeg_decoding = 1,
- .has_jpeg_encoding = 1,
- .has_vpp = 1,
- .has_accelerated_getimage = 1,
- .has_accelerated_putimage = 1,
- .has_tiled_surface = 1,
- .has_di_motion_adptive = 1,
- .has_di_motion_compensated = 1,
- .has_vp8_decoding = 1,
- .has_vp8_encoding = 1,
- .has_h264_mvc_encoding = 1,
- .has_hevc_decoding = 1,
- .has_hevc_encoding = 1,
- .has_hevc10_encoding = 1,
- .has_hevc10_decoding = 1,
- .has_vp9_decoding = 1,
- .has_vpp_p010 = 1,
- .has_vp9_encoding = 1,
- .has_lp_h264_encoding = 1,
-
- .lp_h264_brc_mode = VA_RC_CQP,
-
- .num_filters = 5,
- .filters = {
- { VAProcFilterNoiseReduction, I965_RING_VEBOX },
- { VAProcFilterDeinterlacing, I965_RING_VEBOX },
- { VAProcFilterSharpening, I965_RING_NULL },
- { VAProcFilterColorBalance, I965_RING_VEBOX},
- { VAProcFilterSkinToneEnhancement, I965_RING_VEBOX},
- },
-};
-
-struct hw_codec_info *
-i965_get_codec_info(int devid)
-{
- switch (devid) {
-#undef CHIPSET
-#define CHIPSET(id, family, dev, str) case id: return &family##_hw_codec_info;
-#include "i965_pciids.h"
- default:
- return NULL;
- }
-}
-
-static const struct intel_device_info g4x_device_info = {
- .gen = 4,
-
- .urb_size = 384,
- .max_wm_threads = 50, /* 10 * 5 */
-
- .is_g4x = 1,
-};
-
-static const struct intel_device_info ilk_device_info = {
- .gen = 5,
-
- .urb_size = 1024,
- .max_wm_threads = 72, /* 12 * 6 */
-};
-
-static const struct intel_device_info snb_gt1_device_info = {
- .gen = 6,
- .gt = 1,
-
- .urb_size = 1024,
- .max_wm_threads = 40,
-};
-
-static const struct intel_device_info snb_gt2_device_info = {
- .gen = 6,
- .gt = 2,
-
- .urb_size = 1024,
- .max_wm_threads = 80,
-};
-
-static const struct intel_device_info ivb_gt1_device_info = {
- .gen = 7,
- .gt = 1,
-
- .urb_size = 4096,
- .max_wm_threads = 48,
-
- .is_ivybridge = 1,
-};
-
-static const struct intel_device_info ivb_gt2_device_info = {
- .gen = 7,
- .gt = 2,
-
- .urb_size = 4096,
- .max_wm_threads = 172,
-
- .is_ivybridge = 1,
-};
-
-static const struct intel_device_info byt_device_info = {
- .gen = 7,
- .gt = 1,
-
- .urb_size = 4096,
- .max_wm_threads = 48,
-
- .is_ivybridge = 1,
- .is_baytrail = 1,
-};
-
-static const struct intel_device_info hsw_gt1_device_info = {
- .gen = 7,
- .gt = 1,
-
- .urb_size = 4096,
- .max_wm_threads = 102,
-
- .is_haswell = 1,
-};
-
-static const struct intel_device_info hsw_gt2_device_info = {
- .gen = 7,
- .gt = 2,
-
- .urb_size = 4096,
- .max_wm_threads = 204,
-
- .is_haswell = 1,
-};
-
-static const struct intel_device_info hsw_gt3_device_info = {
- .gen = 7,
- .gt = 3,
-
- .urb_size = 4096,
- .max_wm_threads = 408,
-
- .is_haswell = 1,
-};
-
-static const struct intel_device_info bdw_device_info = {
- .gen = 8,
-
- .urb_size = 4096,
- .max_wm_threads = 64, /* per PSD */
-};
-
-static const struct intel_device_info chv_device_info = {
- .gen = 8,
-
- .urb_size = 4096,
- .max_wm_threads = 64, /* per PSD */
-
- .is_cherryview = 1,
-};
-
-static const struct intel_device_info skl_device_info = {
- .gen = 9,
-
- .urb_size = 4096,
- .max_wm_threads = 64, /* per PSD */
-
- .is_skylake = 1,
-};
-
-static const struct intel_device_info bxt_device_info = {
- .gen = 9,
-
- .urb_size = 4096,
- .max_wm_threads = 64, /* per PSD */
- .is_broxton = 1,
-};
-
-static const struct intel_device_info kbl_device_info = {
- .gen = 9,
-
- .urb_size = 4096,
- .max_wm_threads = 64, /* per PSD */
-
- .is_kabylake = 1,
-};
-
-const struct intel_device_info *
-i965_get_device_info(int devid)
-{
- switch (devid) {
-#undef CHIPSET
-#define CHIPSET(id, family, dev, str) case id: return &dev##_device_info;
-#include "i965_pciids.h"
- default:
- return NULL;
- }
-}
-
-static void cpuid(unsigned int op,
- uint32_t *eax, uint32_t *ebx,
- uint32_t *ecx, uint32_t *edx)
-{
- __cpuid_count(op, 0, *eax, *ebx, *ecx, *edx);
-}
-
-/*
- * This function doesn't check the length. And the caller should
- * assure that the length of input string should be greater than 48.
- */
-static int intel_driver_detect_cpustring(char *model_id)
-{
- uint32_t *rdata;
-
- if (model_id == NULL)
- return -EINVAL;
-
- rdata = (uint32_t *)model_id;
-
- /* obtain the max supported extended CPUID info */
- cpuid(0x80000000, &rdata[0], &rdata[1], &rdata[2], &rdata[3]);
-
- /* If the max extended CPUID info is less than 0x80000004, fail */
- if (rdata[0] < 0x80000004)
- return -EINVAL;
-
- /* obtain the CPUID string */
- cpuid(0x80000002, &rdata[0], &rdata[1], &rdata[2], &rdata[3]);
- cpuid(0x80000003, &rdata[4], &rdata[5], &rdata[6], &rdata[7]);
- cpuid(0x80000004, &rdata[8], &rdata[9], &rdata[10], &rdata[11]);
-
- *(model_id + 48) = '\0';
- return 0;
-}
-
-/*
- * the hook_list for HSW.
- * It is captured by /proc/cpuinfo and the space character is stripped.
- */
-const static char *hsw_cpu_hook_list[] = {
-"Intel(R)Pentium(R)3556U",
-"Intel(R)Pentium(R)3560Y",
-"Intel(R)Pentium(R)3550M",
-"Intel(R)Celeron(R)2980U",
-"Intel(R)Celeron(R)2955U",
-"Intel(R)Celeron(R)2950M",
-};
-
-static void hsw_hw_codec_preinit(VADriverContextP ctx, struct hw_codec_info *codec_info)
-{
- char model_string[64];
- char *model_ptr, *tmp_ptr;
- int i, model_len, list_len;
- bool found;
-
- memset(model_string, 0, sizeof(model_string));
-
- /* If it can't detect cpu model_string, leave it alone */
- if (intel_driver_detect_cpustring(model_string))
- return;
-
- /* strip the cpufreq info */
- model_ptr = model_string;
- tmp_ptr = strstr(model_ptr, "@");
-
- if (tmp_ptr)
- *tmp_ptr = '\0';
-
- /* strip the space character and convert to the lower case */
- model_ptr = model_string;
- model_len = strlen(model_string);
- for (i = 0; i < model_len; i++) {
- if (model_string[i] != ' ') {
- *model_ptr = model_string[i];
- model_ptr++;
- }
- }
- *model_ptr = '\0';
-
- found = false;
- list_len = sizeof(hsw_cpu_hook_list) / sizeof(char *);
- model_len = strlen(model_string);
- for (i = 0; i < list_len; i++) {
- model_ptr = (char *)hsw_cpu_hook_list[i];
-
- if (strlen(model_ptr) != model_len)
- continue;
-
- if (strncasecmp(model_string, model_ptr, model_len) == 0) {
- found = true;
- break;
- }
- }
-
- if (found) {
- codec_info->has_h264_encoding = 0;
- codec_info->has_h264_mvc_encoding = 0;
- codec_info->has_mpeg2_encoding = 0;
- }
- return;
-}
-
-/*
- * the hook_list for Sandybride.
- * It is captured by /proc/cpuinfo and the space character is stripped.
- */
-const static char *gen6_cpu_hook_list[] = {
-"Intel(R)Celeron(R)CPU847",
-"Intel(R)Celeron(R)CPU867",
-};
-
-static void gen6_hw_codec_preinit(VADriverContextP ctx, struct hw_codec_info *codec_info)
-{
- char model_string[64];
- char *model_ptr, *tmp_ptr;
- int i, model_len, list_len;
- bool found;
-
- memset(model_string, 0, sizeof(model_string));
-
- /* If it can't detect cpu model_string, leave it alone */
- if (intel_driver_detect_cpustring(model_string))
- return;
-
- /* strip the cpufreq info */
- model_ptr = model_string;
- tmp_ptr = strstr(model_ptr, "@");
-
- if (tmp_ptr)
- *tmp_ptr = '\0';
-
- /* strip the space character and convert to the lower case */
- model_ptr = model_string;
- model_len = strlen(model_string);
- for (i = 0; i < model_len; i++) {
- if (model_string[i] != ' ') {
- *model_ptr = model_string[i];
- model_ptr++;
- }
- }
- *model_ptr = '\0';
-
- found = false;
- list_len = sizeof(gen6_cpu_hook_list) / sizeof(char *);
- model_len = strlen(model_string);
- for (i = 0; i < list_len; i++) {
- model_ptr = (char *)gen6_cpu_hook_list[i];
-
- if (strlen(model_ptr) != model_len)
- continue;
-
- if (strncasecmp(model_string, model_ptr, model_len) == 0) {
- found = true;
- break;
- }
- }
-
- if (found) {
- codec_info->has_h264_encoding = 0;
- }
- return;
-}
-
-/*
- * the hook_list for Ivybridge.
- * It is captured by /proc/cpuinfo and the space character is stripped.
- */
-const static char *gen7_cpu_hook_list[] = {
-"Intel(R)Celeron(R)CPU1007U",
-"Intel(R)Pentium(R)CPUG2130",
-};
-
-static void gen7_hw_codec_preinit(VADriverContextP ctx, struct hw_codec_info *codec_info)
-{
- char model_string[64];
- char *model_ptr, *tmp_ptr;
- int i, model_len, list_len;
- bool found;
-
- memset(model_string, 0, sizeof(model_string));
-
- /* If it can't detect cpu model_string, leave it alone */
- if (intel_driver_detect_cpustring(model_string))
- return;
-
- /* strip the cpufreq info */
- model_ptr = model_string;
- tmp_ptr = strstr(model_ptr, "@");
-
- if (tmp_ptr)
- *tmp_ptr = '\0';
-
- /* strip the space character and convert to the lower case */
- model_ptr = model_string;
- model_len = strlen(model_string);
- for (i = 0; i < model_len; i++) {
- if (model_string[i] != ' ') {
- *model_ptr = model_string[i];
- model_ptr++;
- }
- }
- *model_ptr = '\0';
-
- found = false;
- list_len = sizeof(gen7_cpu_hook_list) / sizeof(char *);
- model_len = strlen(model_string);
- for (i = 0; i < list_len; i++) {
- model_ptr = (char *)gen7_cpu_hook_list[i];
-
- if (strlen(model_ptr) != model_len)
- continue;
-
- if (strncasecmp(model_string, model_ptr, model_len) == 0) {
- found = true;
- break;
- }
- }
-
- if (found) {
- codec_info->has_h264_encoding = 0;
- codec_info->has_mpeg2_encoding = 0;
- }
- return;
-}
-
-static void gen9_hw_codec_preinit(VADriverContextP ctx, struct hw_codec_info *codec_info)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
-
- if (i965->intel.has_huc && codec_info->has_lp_h264_encoding)
- codec_info->lp_h264_brc_mode |= (VA_RC_CBR | VA_RC_VBR);
-}
diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c
deleted file mode 100644
index cc37190..0000000
--- a/src/i965_drv_video.c
+++ /dev/null
@@ -1,6845 +0,0 @@
-/*
- * Copyright ?2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- * Zou Nan hai <nanhai.zou@intel.com>
- *
- */
-
-#include "sysdeps.h"
-#include <unistd.h>
-#include <dlfcn.h>
-
-#ifdef HAVE_VA_X11
-# include "i965_output_dri.h"
-#endif
-
-#ifdef HAVE_VA_WAYLAND
-# include "i965_output_wayland.h"
-#endif
-
-#include "intel_version.h"
-#include "intel_driver.h"
-#include "intel_memman.h"
-#include "intel_batchbuffer.h"
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "i965_decoder.h"
-#include "i965_encoder.h"
-
-#include "i965_post_processing.h"
-
-#include "gen9_vp9_encapi.h"
-
-#define CONFIG_ID_OFFSET 0x01000000
-#define CONTEXT_ID_OFFSET 0x02000000
-#define SURFACE_ID_OFFSET 0x04000000
-#define BUFFER_ID_OFFSET 0x08000000
-#define IMAGE_ID_OFFSET 0x0a000000
-#define SUBPIC_ID_OFFSET 0x10000000
-
-static int get_sampling_from_fourcc(unsigned int fourcc);
-
-/* Check whether we are rendering to X11 (VA/X11 or VA/GLX API) */
-#define IS_VA_X11(ctx) \
- (((ctx)->display_type & VA_DISPLAY_MAJOR_MASK) == VA_DISPLAY_X11)
-
-/* Check whether we are rendering to Wayland */
-#define IS_VA_WAYLAND(ctx) \
- (((ctx)->display_type & VA_DISPLAY_MAJOR_MASK) == VA_DISPLAY_WAYLAND)
-
-#define I965_BIT 1
-#define I965_2BITS (I965_BIT << 1)
-#define I965_4BITS (I965_BIT << 2)
-#define I965_8BITS (I965_BIT << 3)
-#define I965_16BITS (I965_BIT << 4)
-#define I965_32BITS (I965_BIT << 5)
-
-#define PLANE_0 0
-#define PLANE_1 1
-#define PLANE_2 2
-
-#define OFFSET_0 0
-#define OFFSET_4 4
-#define OFFSET_8 8
-#define OFFSET_16 16
-#define OFFSET_24 24
-
-/* hfactor, vfactor, num_planes, bpp[], num_components, components[] */
-#define I_NV12 2, 2, 2, {I965_8BITS, I965_4BITS}, 3, { {PLANE_0, OFFSET_0}, {PLANE_1, OFFSET_0}, {PLANE_1, OFFSET_8} }
-#define I_I420 2, 2, 3, {I965_8BITS, I965_2BITS, I965_2BITS}, 3, { {PLANE_0, OFFSET_0}, {PLANE_1, OFFSET_0}, {PLANE_2, OFFSET_0} }
-#define I_IYUV I_I420
-#define I_IMC3 I_I420
-#define I_YV12 2, 2, 3, {I965_8BITS, I965_2BITS, I965_2BITS}, 3, { {PLANE_0, OFFSET_0}, {PLANE_2, OFFSET_0}, {PLANE_1, OFFSET_0} }
-#define I_IMC1 I_YV12
-
-#define I_P010 2, 2, 2, {I965_16BITS, I965_8BITS}, 3, { {PLANE_0, OFFSET_0}, {PLANE_1, OFFSET_0}, {PLANE_1, OFFSET_16} }
-
-#define I_I010 2, 2, 3, {I965_16BITS, I965_4BITS, I965_4BITS}, 3, { {PLANE_0, OFFSET_0}, {PLANE_1, OFFSET_0}, {PLANE_2, OFFSET_0} }
-
-#define I_422H 2, 1, 3, {I965_8BITS, I965_4BITS, I965_4BITS}, 3, { {PLANE_0, OFFSET_0}, {PLANE_1, OFFSET_0}, {PLANE_2, OFFSET_0} }
-#define I_422V 1, 2, 3, {I965_8BITS, I965_4BITS, I965_4BITS}, 3, { {PLANE_0, OFFSET_0}, {PLANE_1, OFFSET_0}, {PLANE_2, OFFSET_0} }
-#define I_YV16 2, 1, 3, {I965_8BITS, I965_4BITS, I965_4BITS}, 3, { {PLANE_0, OFFSET_0}, {PLANE_2, OFFSET_0}, {PLANE_1, OFFSET_0} }
-#define I_YUY2 2, 1, 1, {I965_16BITS}, 3, { {PLANE_0, OFFSET_0}, {PLANE_0, OFFSET_8}, {PLANE_0, OFFSET_24} }
-#define I_UYVY 2, 1, 1, {I965_16BITS}, 3, { {PLANE_0, OFFSET_8}, {PLANE_0, OFFSET_0}, {PLANE_0, OFFSET_16} }
-
-#define I_444P 1, 1, 3, {I965_8BITS, I965_8BITS, I965_8BITS}, 3, { {PLANE_0, OFFSET_0}, {PLANE_1, OFFSET_0}, {PLANE_2, OFFSET_0} }
-
-#define I_411P 4, 1, 3, {I965_8BITS, I965_2BITS, I965_2BITS}, 3, { {PLANE_0, OFFSET_0}, {PLANE_1, OFFSET_0}, {PLANE_2, OFFSET_0} }
-
-#define I_Y800 1, 1, 1, {I965_8BITS}, 1, { {PLANE_0, OFFSET_0} }
-
-#define I_RGBA 1, 1, 1, {I965_32BITS}, 4, { {PLANE_0, OFFSET_0}, {PLANE_0, OFFSET_8}, {PLANE_0, OFFSET_16}, {PLANE_0, OFFSET_24} }
-#define I_RGBX 1, 1, 1, {I965_32BITS}, 3, { {PLANE_0, OFFSET_0}, {PLANE_0, OFFSET_8}, {PLANE_0, OFFSET_16} }
-#define I_BGRA 1, 1, 1, {I965_32BITS}, 4, { {PLANE_0, OFFSET_16}, {PLANE_0, OFFSET_8}, {PLANE_0, OFFSET_0}, {PLANE_0, OFFSET_24} }
-#define I_BGRX 1, 1, 1, {I965_32BITS}, 3, { {PLANE_0, OFFSET_16}, {PLANE_0, OFFSET_8}, {PLANE_0, OFFSET_0} }
-
-#define I_ARGB 1, 1, 1, {I965_32BITS}, 4, { {PLANE_0, OFFSET_8}, {PLANE_0, OFFSET_16}, {PLANE_0, OFFSET_24}, {PLANE_0, OFFSET_0} }
-#define I_ABGR 1, 1, 1, {I965_32BITS}, 4, { {PLANE_0, OFFSET_24}, {PLANE_0, OFFSET_16}, {PLANE_0, OFFSET_8}, {PLANE_0, OFFSET_0} }
-
-#define I_IA88 1, 1, 1, {I965_16BITS}, 2, { {PLANE_0, OFFSET_0}, {PLANE_0, OFFSET_8} }
-#define I_AI88 1, 1, 1, {I965_16BITS}, 2, { {PLANE_0, OFFSET_8}, {PLANE_0, OFFSET_0} }
-
-#define I_IA44 1, 1, 1, {I965_8BITS}, 2, { {PLANE_0, OFFSET_0}, {PLANE_0, OFFSET_4} }
-#define I_AI44 1, 1, 1, {I965_8BITS}, 2, { {PLANE_0, OFFSET_4}, {PLANE_0, OFFSET_0} }
-
-/* flag */
-#define I_S 1
-#define I_I 2
-#define I_SI (I_S | I_I)
-
-#define DEF_FOUCC_INFO(FOURCC, FORMAT, SUB, FLAG) { VA_FOURCC_##FOURCC, I965_COLOR_##FORMAT, SUBSAMPLE_##SUB, FLAG, I_##FOURCC }
-#define DEF_YUV(FOURCC, SUB, FLAG) DEF_FOUCC_INFO(FOURCC, YUV, SUB, FLAG)
-#define DEF_RGB(FOURCC, SUB, FLAG) DEF_FOUCC_INFO(FOURCC, RGB, SUB, FLAG)
-#define DEF_INDEX(FOURCC, SUB, FLAG) DEF_FOUCC_INFO(FOURCC, INDEX, SUB, FLAG)
-
-static const i965_fourcc_info i965_fourcc_infos[] = {
- DEF_YUV(NV12, YUV420, I_SI),
- DEF_YUV(I420, YUV420, I_SI),
- DEF_YUV(IYUV, YUV420, I_S),
- DEF_YUV(IMC3, YUV420, I_S),
- DEF_YUV(YV12, YUV420, I_SI),
- DEF_YUV(IMC1, YUV420, I_S),
-
- DEF_YUV(P010, YUV420, I_SI),
- DEF_YUV(I010, YUV420, I_S),
-
- DEF_YUV(422H, YUV422H, I_SI),
- DEF_YUV(422V, YUV422V, I_S),
- DEF_YUV(YV16, YUV422H, I_S),
- DEF_YUV(YUY2, YUV422H, I_SI),
- DEF_YUV(UYVY, YUV422H, I_SI),
-
- DEF_YUV(444P, YUV444, I_S),
-
- DEF_YUV(411P, YUV411, I_S),
-
- DEF_YUV(Y800, YUV400, I_S),
-
- DEF_RGB(RGBA, RGBX, I_SI),
- DEF_RGB(RGBX, RGBX, I_SI),
- DEF_RGB(BGRA, RGBX, I_SI),
- DEF_RGB(BGRX, RGBX, I_SI),
-
- DEF_RGB(ARGB, RGBX, I_I),
- DEF_RGB(ABGR, RGBX, I_I),
-
- DEF_INDEX(IA88, RGBX, I_I),
- DEF_INDEX(AI88, RGBX, I_I),
-
- DEF_INDEX(IA44, RGBX, I_I),
- DEF_INDEX(AI44, RGBX, I_I)
-};
-
-const i965_fourcc_info *
-get_fourcc_info(unsigned int fourcc)
-{
- unsigned int i;
-
- for (i = 0; i < ARRAY_ELEMS(i965_fourcc_infos); i++) {
- const i965_fourcc_info * const info = &i965_fourcc_infos[i];
-
- if (info->fourcc == fourcc)
- return info;
- }
-
- return NULL;
-}
-
-static int
-get_bpp_from_fourcc(unsigned int fourcc)
-{
- const i965_fourcc_info *info = get_fourcc_info(fourcc);
- unsigned int i = 0;
- unsigned int bpp = 0;
-
- if (!info)
- return 0;
-
- for (i = 0; i < info->num_planes; i++)
- bpp += info->bpp[i];
-
- return bpp;
-}
-
-enum {
- I965_SURFACETYPE_RGBA = 1,
- I965_SURFACETYPE_YUV,
- I965_SURFACETYPE_INDEXED
-};
-
-/* List of supported display attributes */
-static const VADisplayAttribute i965_display_attributes[] = {
- {
- VADisplayAttribBrightness,
- -100, 100, DEFAULT_BRIGHTNESS,
- VA_DISPLAY_ATTRIB_GETTABLE | VA_DISPLAY_ATTRIB_SETTABLE
- },
-
- {
- VADisplayAttribContrast,
- 0, 100, DEFAULT_CONTRAST,
- VA_DISPLAY_ATTRIB_GETTABLE | VA_DISPLAY_ATTRIB_SETTABLE
- },
-
- {
- VADisplayAttribHue,
- -180, 180, DEFAULT_HUE,
- VA_DISPLAY_ATTRIB_GETTABLE | VA_DISPLAY_ATTRIB_SETTABLE
- },
-
- {
- VADisplayAttribSaturation,
- 0, 100, DEFAULT_SATURATION,
- VA_DISPLAY_ATTRIB_GETTABLE | VA_DISPLAY_ATTRIB_SETTABLE
- },
-
- {
- VADisplayAttribRotation,
- 0, 3, VA_ROTATION_NONE,
- VA_DISPLAY_ATTRIB_GETTABLE|VA_DISPLAY_ATTRIB_SETTABLE
- },
-};
-
-/* List of supported image formats */
-typedef struct {
- unsigned int type;
- VAImageFormat va_format;
-} i965_image_format_map_t;
-
-static const i965_image_format_map_t
-i965_image_formats_map[I965_MAX_IMAGE_FORMATS + 1] = {
- { I965_SURFACETYPE_YUV,
- { VA_FOURCC_YV12, VA_LSB_FIRST, 12, } },
- { I965_SURFACETYPE_YUV,
- { VA_FOURCC_I420, VA_LSB_FIRST, 12, } },
- { I965_SURFACETYPE_YUV,
- { VA_FOURCC_NV12, VA_LSB_FIRST, 12, } },
- { I965_SURFACETYPE_YUV,
- { VA_FOURCC_YUY2, VA_LSB_FIRST, 16, } },
- { I965_SURFACETYPE_YUV,
- { VA_FOURCC_UYVY, VA_LSB_FIRST, 16, } },
- { I965_SURFACETYPE_YUV,
- { VA_FOURCC_422H, VA_LSB_FIRST, 16, } },
- { I965_SURFACETYPE_RGBA,
- { VA_FOURCC_RGBX, VA_LSB_FIRST, 32, 24, 0x000000ff, 0x0000ff00, 0x00ff0000 } },
- { I965_SURFACETYPE_RGBA,
- { VA_FOURCC_BGRX, VA_LSB_FIRST, 32, 24, 0x00ff0000, 0x0000ff00, 0x000000ff } },
- { I965_SURFACETYPE_YUV,
- { VA_FOURCC_P010, VA_LSB_FIRST, 24, } },
-};
-
-/* List of supported subpicture formats */
-typedef struct {
- unsigned int type;
- unsigned int format;
- VAImageFormat va_format;
- unsigned int va_flags;
-} i965_subpic_format_map_t;
-
-#define COMMON_SUBPICTURE_FLAGS \
- (VA_SUBPICTURE_DESTINATION_IS_SCREEN_COORD| \
- VA_SUBPICTURE_GLOBAL_ALPHA)
-
-static const i965_subpic_format_map_t
-i965_subpic_formats_map[I965_MAX_SUBPIC_FORMATS + 1] = {
- { I965_SURFACETYPE_INDEXED, I965_SURFACEFORMAT_P4A4_UNORM,
- { VA_FOURCC_IA44, VA_MSB_FIRST, 8, },
- COMMON_SUBPICTURE_FLAGS },
- { I965_SURFACETYPE_INDEXED, I965_SURFACEFORMAT_A4P4_UNORM,
- { VA_FOURCC_AI44, VA_MSB_FIRST, 8, },
- COMMON_SUBPICTURE_FLAGS },
- { I965_SURFACETYPE_INDEXED, I965_SURFACEFORMAT_P8A8_UNORM,
- { VA_FOURCC_IA88, VA_MSB_FIRST, 16, },
- COMMON_SUBPICTURE_FLAGS },
- { I965_SURFACETYPE_INDEXED, I965_SURFACEFORMAT_A8P8_UNORM,
- { VA_FOURCC_AI88, VA_MSB_FIRST, 16, },
- COMMON_SUBPICTURE_FLAGS },
- { I965_SURFACETYPE_RGBA, I965_SURFACEFORMAT_B8G8R8A8_UNORM,
- { VA_FOURCC_BGRA, VA_LSB_FIRST, 32,
- 32, 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000 },
- COMMON_SUBPICTURE_FLAGS },
- { I965_SURFACETYPE_RGBA, I965_SURFACEFORMAT_R8G8B8A8_UNORM,
- { VA_FOURCC_RGBA, VA_LSB_FIRST, 32,
- 32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000 },
- COMMON_SUBPICTURE_FLAGS },
-};
-
-static const i965_subpic_format_map_t *
-get_subpic_format(const VAImageFormat *va_format)
-{
- unsigned int i;
- for (i = 0; i965_subpic_formats_map[i].type != 0; i++) {
- const i965_subpic_format_map_t * const m = &i965_subpic_formats_map[i];
- if (m->va_format.fourcc == va_format->fourcc &&
- (m->type == I965_SURFACETYPE_RGBA ?
- (m->va_format.byte_order == va_format->byte_order &&
- m->va_format.red_mask == va_format->red_mask &&
- m->va_format.green_mask == va_format->green_mask &&
- m->va_format.blue_mask == va_format->blue_mask &&
- m->va_format.alpha_mask == va_format->alpha_mask) : 1))
- return m;
- }
- return NULL;
-}
-
-/* Checks whether the surface is in busy state */
-static bool
-is_surface_busy(struct i965_driver_data *i965,
- struct object_surface *obj_surface)
-{
- assert(obj_surface != NULL);
-
- if (obj_surface->locked_image_id != VA_INVALID_ID)
- return true;
- if (obj_surface->derived_image_id != VA_INVALID_ID)
- return true;
- return false;
-}
-
-/* Checks whether the image is in busy state */
-static bool
-is_image_busy(struct i965_driver_data *i965, struct object_image *obj_image, VASurfaceID surface)
-{
- struct object_buffer *obj_buffer;
-
- assert(obj_image != NULL);
-
- if (obj_image->derived_surface != VA_INVALID_ID &&
- obj_image->derived_surface == surface)
- return true;
-
- obj_buffer = BUFFER(obj_image->image.buf);
- if (obj_buffer && obj_buffer->export_refcount > 0)
- return true;
- return false;
-}
-
-#define I965_PACKED_HEADER_BASE 0
-#define I965_SEQ_PACKED_HEADER_BASE 0
-#define I965_SEQ_PACKED_HEADER_END 2
-#define I965_PIC_PACKED_HEADER_BASE 2
-#define I965_PACKED_MISC_HEADER_BASE 4
-
-int
-va_enc_packed_type_to_idx(int packed_type)
-{
- int idx = 0;
-
- if (packed_type & VAEncPackedHeaderMiscMask) {
- idx = I965_PACKED_MISC_HEADER_BASE;
- packed_type = (~VAEncPackedHeaderMiscMask & packed_type);
- ASSERT_RET(packed_type > 0, 0);
- idx += (packed_type - 1);
- } else {
- idx = I965_PACKED_HEADER_BASE;
-
- switch (packed_type) {
- case VAEncPackedHeaderSequence:
- idx = I965_SEQ_PACKED_HEADER_BASE + 0;
- break;
-
- case VAEncPackedHeaderPicture:
- idx = I965_PIC_PACKED_HEADER_BASE + 0;
- break;
-
- case VAEncPackedHeaderSlice:
- idx = I965_PIC_PACKED_HEADER_BASE + 1;
- break;
-
- default:
- /* Should not get here */
- ASSERT_RET(0, 0);
- break;
- }
- }
-
- ASSERT_RET(idx < 5, 0);
- return idx;
-}
-
-#define CALL_VTABLE(vawr, status, param) status = (vawr->vtable->param)
-
-static VAStatus
-i965_surface_wrapper(VADriverContextP ctx, VASurfaceID surface)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface = SURFACE(surface);
- VAStatus va_status = VA_STATUS_SUCCESS;
-
- if (!obj_surface) {
- return VA_STATUS_ERROR_INVALID_SURFACE;
- }
-
- if (obj_surface->wrapper_surface != VA_INVALID_ID) {
- /* the wrapped surface already exists. just return it */
- return va_status;
- }
-
- if (obj_surface->fourcc == 0)
- i965_check_alloc_surface_bo(ctx, obj_surface,
- 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
-
- /*
- * TBD: Support more surface formats.
- * Currently only NV12 is support as NV12 is used by decoding.
- */
- if (obj_surface->fourcc != VA_FOURCC_NV12 )
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- if ((i965->wrapper_pdrvctx == NULL) ||
- (obj_surface->bo == NULL))
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- {
- int fd_handle;
- VASurfaceAttrib attrib_list[2];
- VASurfaceAttribExternalBuffers buffer_descriptor;
- VAGenericID wrapper_surface;
-
- if (drm_intel_bo_gem_export_to_prime(obj_surface->bo, &fd_handle) != 0)
- return VA_STATUS_ERROR_OPERATION_FAILED;
-
- obj_surface->exported_primefd = fd_handle;
-
- memset(&attrib_list, 0, sizeof(attrib_list));
- memset(&buffer_descriptor, 0, sizeof(buffer_descriptor));
-
- attrib_list[0].type = VASurfaceAttribExternalBufferDescriptor;
- attrib_list[0].flags = VA_SURFACE_ATTRIB_SETTABLE;
- attrib_list[0].value.value.p = &buffer_descriptor;
- attrib_list[0].value.type = VAGenericValueTypePointer;
-
- attrib_list[1].type = VASurfaceAttribMemoryType;
- attrib_list[1].flags = VA_SURFACE_ATTRIB_SETTABLE;
- attrib_list[1].value.value.i = VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME;
- attrib_list[1].value.type = VAGenericValueTypeInteger;
-
- buffer_descriptor.num_buffers = 1;
- buffer_descriptor.num_planes = 2;
- buffer_descriptor.width = obj_surface->orig_width;
- buffer_descriptor.height = obj_surface->orig_height;
- buffer_descriptor.pixel_format = obj_surface->fourcc;
- buffer_descriptor.data_size = obj_surface->size;
- buffer_descriptor.pitches[0] = obj_surface->width;
- buffer_descriptor.pitches[1] = obj_surface->cb_cr_pitch;
- buffer_descriptor.offsets[0] = 0;
- buffer_descriptor.offsets[1] = obj_surface->width * obj_surface->height;
- buffer_descriptor.buffers = (void *)&fd_handle;
-
- CALL_VTABLE(i965->wrapper_pdrvctx, va_status,
- vaCreateSurfaces2(i965->wrapper_pdrvctx,
- VA_RT_FORMAT_YUV420,
- obj_surface->orig_width,
- obj_surface->orig_height,
- &wrapper_surface, 1,
- attrib_list, 2));
-
- if (va_status == VA_STATUS_SUCCESS) {
- obj_surface->wrapper_surface = wrapper_surface;
- } else {
- /* This needs to be checked */
- va_status = VA_STATUS_ERROR_OPERATION_FAILED;
- }
- return va_status;
- }
-
-}
-
-VAStatus
-i965_QueryConfigProfiles(VADriverContextP ctx,
- VAProfile *profile_list, /* out */
- int *num_profiles) /* out */
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- int i = 0;
-
- if (HAS_MPEG2_DECODING(i965) ||
- HAS_MPEG2_ENCODING(i965)) {
- profile_list[i++] = VAProfileMPEG2Simple;
- profile_list[i++] = VAProfileMPEG2Main;
- }
-
- if (HAS_H264_DECODING(i965) ||
- HAS_H264_ENCODING(i965) ||
- HAS_LP_H264_ENCODING(i965)) {
- profile_list[i++] = VAProfileH264ConstrainedBaseline;
- profile_list[i++] = VAProfileH264Main;
- profile_list[i++] = VAProfileH264High;
- }
- if (HAS_H264_MVC_DECODING_PROFILE(i965, VAProfileH264MultiviewHigh) ||
- HAS_H264_MVC_ENCODING(i965))
- profile_list[i++] = VAProfileH264MultiviewHigh;
- if (HAS_H264_MVC_DECODING_PROFILE(i965, VAProfileH264StereoHigh) ||
- HAS_H264_MVC_ENCODING(i965))
- profile_list[i++] = VAProfileH264StereoHigh;
-
- if (HAS_VC1_DECODING(i965)) {
- profile_list[i++] = VAProfileVC1Simple;
- profile_list[i++] = VAProfileVC1Main;
- profile_list[i++] = VAProfileVC1Advanced;
- }
-
- if (HAS_VPP(i965)) {
- profile_list[i++] = VAProfileNone;
- }
-
- if (HAS_JPEG_DECODING(i965) ||
- HAS_JPEG_ENCODING(i965)) {
- profile_list[i++] = VAProfileJPEGBaseline;
- }
-
- if (HAS_VP8_DECODING(i965) ||
- HAS_VP8_ENCODING(i965)) {
- profile_list[i++] = VAProfileVP8Version0_3;
- }
-
- if (HAS_HEVC_DECODING(i965)||
- HAS_HEVC_ENCODING(i965)) {
- profile_list[i++] = VAProfileHEVCMain;
- }
-
- if (HAS_HEVC10_DECODING(i965)||
- HAS_HEVC10_ENCODING(i965)) {
- profile_list[i++] = VAProfileHEVCMain10;
- }
-
- if(HAS_VP9_DECODING_PROFILE(i965, VAProfileVP9Profile0) ||
- HAS_VP9_ENCODING(i965)) {
- profile_list[i++] = VAProfileVP9Profile0;
- }
-
- if(HAS_VP9_DECODING_PROFILE(i965, VAProfileVP9Profile2)) {
- profile_list[i++] = VAProfileVP9Profile2;
- }
-
- if (i965->wrapper_pdrvctx) {
- VAProfile wrapper_list[4];
- int wrapper_num;
- VADriverContextP pdrvctx;
- VAStatus va_status;
-
- pdrvctx = i965->wrapper_pdrvctx;
- CALL_VTABLE(pdrvctx, va_status,
- vaQueryConfigProfiles(pdrvctx,
- wrapper_list, &wrapper_num));
-
- if (va_status == VA_STATUS_SUCCESS) {
- int j;
- for (j = 0; j < wrapper_num; j++)
- if (wrapper_list[j] != VAProfileNone)
- profile_list[i++] = wrapper_list[j];
- }
- }
-
- /* If the assert fails then I965_MAX_PROFILES needs to be bigger */
- ASSERT_RET(i <= I965_MAX_PROFILES, VA_STATUS_ERROR_OPERATION_FAILED);
- *num_profiles = i;
-
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus
-i965_QueryConfigEntrypoints(VADriverContextP ctx,
- VAProfile profile,
- VAEntrypoint *entrypoint_list, /* out */
- int *num_entrypoints) /* out */
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- int n = 0;
-
- switch (profile) {
- case VAProfileMPEG2Simple:
- case VAProfileMPEG2Main:
- if (HAS_MPEG2_DECODING(i965))
- entrypoint_list[n++] = VAEntrypointVLD;
-
- if (HAS_MPEG2_ENCODING(i965))
- entrypoint_list[n++] = VAEntrypointEncSlice;
-
- break;
-
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- if (HAS_H264_DECODING(i965))
- entrypoint_list[n++] = VAEntrypointVLD;
-
- if (HAS_H264_ENCODING(i965))
- entrypoint_list[n++] = VAEntrypointEncSlice;
-
- if (HAS_LP_H264_ENCODING(i965))
- entrypoint_list[n++] = VAEntrypointEncSliceLP;
-
- break;
- case VAProfileH264MultiviewHigh:
- case VAProfileH264StereoHigh:
- if (HAS_H264_MVC_DECODING_PROFILE(i965, profile))
- entrypoint_list[n++] = VAEntrypointVLD;
-
- if (HAS_H264_MVC_ENCODING(i965))
- entrypoint_list[n++] = VAEntrypointEncSlice;
- break;
-
- case VAProfileVC1Simple:
- case VAProfileVC1Main:
- case VAProfileVC1Advanced:
- if (HAS_VC1_DECODING(i965))
- entrypoint_list[n++] = VAEntrypointVLD;
- break;
-
- case VAProfileNone:
- if (HAS_VPP(i965))
- entrypoint_list[n++] = VAEntrypointVideoProc;
- break;
-
- case VAProfileJPEGBaseline:
- if (HAS_JPEG_DECODING(i965))
- entrypoint_list[n++] = VAEntrypointVLD;
-
- if (HAS_JPEG_ENCODING(i965))
- entrypoint_list[n++] = VAEntrypointEncPicture;
- break;
-
- case VAProfileVP8Version0_3:
- if (HAS_VP8_DECODING(i965))
- entrypoint_list[n++] = VAEntrypointVLD;
-
- if (HAS_VP8_ENCODING(i965))
- entrypoint_list[n++] = VAEntrypointEncSlice;
-
- break;
-
- case VAProfileHEVCMain:
- if (HAS_HEVC_DECODING(i965))
- entrypoint_list[n++] = VAEntrypointVLD;
-
- if (HAS_HEVC_ENCODING(i965))
- entrypoint_list[n++] = VAEntrypointEncSlice;
-
- break;
-
- case VAProfileHEVCMain10:
- if (HAS_HEVC10_DECODING(i965))
- entrypoint_list[n++] = VAEntrypointVLD;
-
- if (HAS_HEVC10_ENCODING(i965))
- entrypoint_list[n++] = VAEntrypointEncSlice;
-
- break;
-
- case VAProfileVP9Profile0:
- case VAProfileVP9Profile2:
- if(HAS_VP9_DECODING_PROFILE(i965, profile))
- entrypoint_list[n++] = VAEntrypointVLD;
-
- if (HAS_VP9_ENCODING(i965) && (profile == VAProfileVP9Profile0))
- entrypoint_list[n++] = VAEntrypointEncSlice;
-
- if(profile == VAProfileVP9Profile0) {
- if (i965->wrapper_pdrvctx) {
- VAStatus va_status = VA_STATUS_SUCCESS;
- VADriverContextP pdrvctx = i965->wrapper_pdrvctx;
-
- CALL_VTABLE(pdrvctx, va_status,
- vaQueryConfigEntrypoints(pdrvctx, profile,
- entrypoint_list,
- num_entrypoints));
- return va_status;
- }
- }
-
- break;
-
- default:
- break;
- }
-
- /* If the assert fails then I965_MAX_ENTRYPOINTS needs to be bigger */
- ASSERT_RET(n <= I965_MAX_ENTRYPOINTS, VA_STATUS_ERROR_OPERATION_FAILED);
- *num_entrypoints = n;
- return n > 0 ? VA_STATUS_SUCCESS : VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
-}
-
-static VAStatus
-i965_validate_config(VADriverContextP ctx, VAProfile profile,
- VAEntrypoint entrypoint)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- VAStatus va_status;
-
- /* Validate profile & entrypoint */
- switch (profile) {
- case VAProfileMPEG2Simple:
- case VAProfileMPEG2Main:
- if ((HAS_MPEG2_DECODING(i965) && entrypoint == VAEntrypointVLD) ||
- (HAS_MPEG2_ENCODING(i965) && entrypoint == VAEntrypointEncSlice)) {
- va_status = VA_STATUS_SUCCESS;
- } else if (!HAS_MPEG2_DECODING(i965) && !HAS_MPEG2_ENCODING(i965)){
- va_status = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
- } else {
- va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
- }
- break;
-
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- if ((HAS_H264_DECODING(i965) && entrypoint == VAEntrypointVLD) ||
- (HAS_H264_ENCODING(i965) && entrypoint == VAEntrypointEncSlice) ||
- (HAS_LP_H264_ENCODING(i965) && entrypoint == VAEntrypointEncSliceLP)) {
- va_status = VA_STATUS_SUCCESS;
- } else if (!HAS_H264_DECODING(i965) && !HAS_H264_ENCODING(i965) &&
- !HAS_LP_H264_ENCODING(i965)){
- va_status = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
- } else {
- va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
- }
- break;
-
- case VAProfileVC1Simple:
- case VAProfileVC1Main:
- case VAProfileVC1Advanced:
- if (HAS_VC1_DECODING(i965) && entrypoint == VAEntrypointVLD) {
- va_status = VA_STATUS_SUCCESS;
- } else if (!HAS_VC1_DECODING(i965)) {
- va_status = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
- } else {
- va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
- }
- break;
-
- case VAProfileNone:
- if (HAS_VPP(i965) && VAEntrypointVideoProc == entrypoint) {
- va_status = VA_STATUS_SUCCESS;
- } else if (!HAS_VPP(i965)){
- va_status = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
- } else {
- va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
- }
- break;
-
- case VAProfileJPEGBaseline:
- if ((HAS_JPEG_DECODING(i965) && entrypoint == VAEntrypointVLD) ||
- (HAS_JPEG_ENCODING(i965) && entrypoint == VAEntrypointEncPicture)) {
- va_status = VA_STATUS_SUCCESS;
- } else if (!HAS_JPEG_DECODING(i965) && !HAS_JPEG_ENCODING(i965)){
- va_status = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
- } else {
- va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
- }
- break;
-
- case VAProfileVP8Version0_3:
- if ((HAS_VP8_DECODING(i965) && entrypoint == VAEntrypointVLD) ||
- (HAS_VP8_ENCODING(i965) && entrypoint == VAEntrypointEncSlice)) {
- va_status = VA_STATUS_SUCCESS;
- } else if (!HAS_VP8_DECODING(i965) && !HAS_VP8_ENCODING(i965)){
- va_status = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
- } else {
- va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
- }
- break;
-
- case VAProfileH264MultiviewHigh:
- case VAProfileH264StereoHigh:
- if ((HAS_H264_MVC_DECODING_PROFILE(i965, profile) &&
- entrypoint == VAEntrypointVLD) ||
- (HAS_H264_MVC_ENCODING(i965) &&
- entrypoint == VAEntrypointEncSlice)) {
- va_status = VA_STATUS_SUCCESS;
- } else if(!HAS_H264_MVC_DECODING_PROFILE(i965, profile) &&
- !HAS_H264_MVC_ENCODING(i965)) {
- va_status = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
- } else {
- va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
- }
-
- break;
-
- case VAProfileHEVCMain:
- if ((HAS_HEVC_DECODING(i965) && (entrypoint == VAEntrypointVLD))||
- (HAS_HEVC_ENCODING(i965) && (entrypoint == VAEntrypointEncSlice))) {
- va_status = VA_STATUS_SUCCESS;
- } else if (!HAS_HEVC_DECODING(i965) && !HAS_HEVC_ENCODING(i965)) {
- va_status = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
- } else {
- va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
- }
-
- break;
-
- case VAProfileHEVCMain10:
- if ((HAS_HEVC10_DECODING(i965) && (entrypoint == VAEntrypointVLD))||
- (HAS_HEVC10_ENCODING(i965) &&
- (entrypoint == VAEntrypointEncSlice))) {
- va_status = VA_STATUS_SUCCESS;
- } else if (!HAS_HEVC10_DECODING(i965) && !HAS_HEVC10_ENCODING(i965)) {
- va_status = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
- } else {
- va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
- }
-
- break;
-
- case VAProfileVP9Profile0:
- case VAProfileVP9Profile2:
- if ((HAS_VP9_DECODING_PROFILE(i965, profile)) &&
- (entrypoint == VAEntrypointVLD)) {
- va_status = VA_STATUS_SUCCESS;
- } else if ((HAS_VP9_ENCODING_PROFILE(i965, profile)) &&
- (entrypoint == VAEntrypointEncSlice)) {
- va_status = VA_STATUS_SUCCESS;
- } else if (profile == VAProfileVP9Profile0 && i965->wrapper_pdrvctx) {
- va_status = VA_STATUS_SUCCESS;
- } else if(!HAS_VP9_DECODING_PROFILE(i965, profile) &&
- !HAS_VP9_ENCODING(i965) && !i965->wrapper_pdrvctx) {
- va_status = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
- } else {
- va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
- }
-
- break;
-
- default:
- va_status = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
- break;
- }
- return va_status;
-}
-
-static uint32_t
-i965_get_default_chroma_formats(VADriverContextP ctx, VAProfile profile,
- VAEntrypoint entrypoint)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- uint32_t chroma_formats = VA_RT_FORMAT_YUV420;
-
- switch (profile) {
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- if (HAS_H264_DECODING(i965) && entrypoint == VAEntrypointVLD)
- chroma_formats |= i965->codec_info->h264_dec_chroma_formats;
- break;
-
- case VAProfileH264MultiviewHigh:
- case VAProfileH264StereoHigh:
- if (HAS_H264_MVC_DECODING(i965) && entrypoint == VAEntrypointVLD)
- chroma_formats |= i965->codec_info->h264_dec_chroma_formats;
- break;
-
- case VAProfileJPEGBaseline:
- if (HAS_JPEG_DECODING(i965) && entrypoint == VAEntrypointVLD)
- chroma_formats |= i965->codec_info->jpeg_dec_chroma_formats;
- if (HAS_JPEG_ENCODING(i965) && entrypoint == VAEntrypointEncPicture)
- chroma_formats |= i965->codec_info->jpeg_enc_chroma_formats;
- break;
-
- case VAProfileHEVCMain10:
- if (HAS_HEVC10_ENCODING(i965) && entrypoint == VAEntrypointEncSlice)
- chroma_formats = VA_RT_FORMAT_YUV420_10BPP;
- if (HAS_HEVC10_DECODING(i965) && entrypoint == VAEntrypointVLD)
- chroma_formats |= i965->codec_info->hevc_dec_chroma_formats;
- break;
-
- case VAProfileNone:
- if (HAS_VPP_P010(i965))
- chroma_formats |= VA_RT_FORMAT_YUV420_10BPP;
-
- if (HAS_VPP(i965))
- chroma_formats |= VA_RT_FORMAT_YUV422 | VA_RT_FORMAT_RGB32;
- break;
-
- case VAProfileVP9Profile0:
- case VAProfileVP9Profile2:
- if (HAS_VP9_DECODING_PROFILE(i965, profile) && entrypoint == VAEntrypointVLD)
- chroma_formats |= i965->codec_info->vp9_dec_chroma_formats;
- break;
-
- default:
- break;
- }
- return chroma_formats;
-}
-
-VAStatus
-i965_GetConfigAttributes(VADriverContextP ctx,
- VAProfile profile,
- VAEntrypoint entrypoint,
- VAConfigAttrib *attrib_list, /* in/out */
- int num_attribs)
-{
- VAStatus va_status;
- int i;
-
- va_status = i965_validate_config(ctx, profile, entrypoint);
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
-
- /* Other attributes don't seem to be defined */
- /* What to do if we don't know the attribute? */
- for (i = 0; i < num_attribs; i++) {
- attrib_list[i].value = VA_ATTRIB_NOT_SUPPORTED;
- switch (attrib_list[i].type) {
- case VAConfigAttribRTFormat:
- attrib_list[i].value = i965_get_default_chroma_formats(ctx,
- profile, entrypoint);
- break;
-
- case VAConfigAttribRateControl:
- if (entrypoint == VAEntrypointEncSlice) {
- attrib_list[i].value = VA_RC_CQP;
-
- if (profile != VAProfileMPEG2Main &&
- profile != VAProfileMPEG2Simple)
- attrib_list[i].value |= VA_RC_CBR;
-
- if (profile == VAProfileVP9Profile0 ||
- profile == VAProfileH264ConstrainedBaseline ||
- profile == VAProfileH264Main ||
- profile == VAProfileH264High)
- attrib_list[i].value |= VA_RC_VBR;
-
- break;
- } else if (entrypoint == VAEntrypointEncSliceLP) {
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
-
- /* Support low power encoding for H.264 only by now */
- if (profile == VAProfileH264ConstrainedBaseline ||
- profile == VAProfileH264Main ||
- profile == VAProfileH264High)
- attrib_list[i].value = i965->codec_info->lp_h264_brc_mode;
- else
- attrib_list[i].value = VA_ATTRIB_NOT_SUPPORTED;
- } else
- attrib_list[i].value = VA_ATTRIB_NOT_SUPPORTED;
-
- break;
-
- case VAConfigAttribEncPackedHeaders:
- if (entrypoint == VAEntrypointEncSlice ||
- entrypoint == VAEntrypointEncSliceLP) {
- attrib_list[i].value = VA_ENC_PACKED_HEADER_SEQUENCE | VA_ENC_PACKED_HEADER_PICTURE | VA_ENC_PACKED_HEADER_MISC;
- if (profile == VAProfileH264ConstrainedBaseline ||
- profile == VAProfileH264Main ||
- profile == VAProfileH264High ||
- profile == VAProfileH264StereoHigh ||
- profile == VAProfileH264MultiviewHigh ||
- profile == VAProfileHEVCMain ||
- profile == VAProfileHEVCMain10) {
- attrib_list[i].value |= (VA_ENC_PACKED_HEADER_RAW_DATA |
- VA_ENC_PACKED_HEADER_SLICE);
- }
- else if (profile == VAProfileVP9Profile0)
- attrib_list[i].value = VA_ENC_PACKED_HEADER_RAW_DATA;
- break;
- }
- else if (entrypoint == VAEntrypointEncPicture) {
- if (profile == VAProfileJPEGBaseline)
- attrib_list[i].value = VA_ENC_PACKED_HEADER_RAW_DATA;
- }
- break;
-
- case VAConfigAttribEncMaxRefFrames:
- if (entrypoint == VAEntrypointEncSlice)
- attrib_list[i].value = (1 << 16) | (1 << 0);
- else if (entrypoint == VAEntrypointEncSliceLP) {
- /* Don't support B frame for low power mode */
- if (profile == VAProfileH264ConstrainedBaseline ||
- profile == VAProfileH264Main ||
- profile == VAProfileH264High)
- attrib_list[i].value = (1 << 0);
- else
- attrib_list[i].value = VA_ATTRIB_NOT_SUPPORTED;
- }
-
- break;
-
- case VAConfigAttribEncQualityRange:
- if (entrypoint == VAEntrypointEncSlice ||
- entrypoint == VAEntrypointEncSliceLP) {
- attrib_list[i].value = 1;
- if (profile == VAProfileH264ConstrainedBaseline ||
- profile == VAProfileH264Main ||
- profile == VAProfileH264High )
- attrib_list[i].value = ENCODER_QUALITY_RANGE;
- break;
- }
- break;
-
- case VAConfigAttribEncJPEG:
- if( entrypoint == VAEntrypointEncPicture) {
- VAConfigAttribValEncJPEG *configVal = (VAConfigAttribValEncJPEG*)&(attrib_list[i].value);
- (configVal->bits).arithmatic_coding_mode = 0; // Huffman coding is used
- (configVal->bits).progressive_dct_mode = 0; // Only Sequential DCT is supported
- (configVal->bits).non_interleaved_mode = 1; // Support both interleaved and non-interleaved
- (configVal->bits).differential_mode = 0; // Baseline DCT is non-differential
- (configVal->bits).max_num_components = 3; // Only 3 components supported
- (configVal->bits).max_num_scans = 1; // Only 1 scan per frame
- (configVal->bits).max_num_huffman_tables = 3; // Max 3 huffman tables
- (configVal->bits).max_num_quantization_tables = 3; // Max 3 quantization tables
- }
- break;
-
- case VAConfigAttribDecSliceMode:
- attrib_list[i].value = VA_DEC_SLICE_MODE_NORMAL;
- break;
-
- case VAConfigAttribEncROI:
- if (entrypoint == VAEntrypointEncSlice ||
- entrypoint == VAEntrypointEncSliceLP) {
-
- if (profile == VAProfileH264ConstrainedBaseline ||
- profile == VAProfileH264Main ||
- profile == VAProfileH264High) {
-
- VAConfigAttribValEncROI *roi_config =
- (VAConfigAttribValEncROI *)&(attrib_list[i].value);
-
- if(entrypoint == VAEntrypointEncSliceLP) {
- roi_config->bits.num_roi_regions = 3;
- roi_config->bits.roi_rc_priority_support = 0;
- roi_config->bits.roi_rc_qp_delat_support = 0;
- } else {
- roi_config->bits.num_roi_regions =
- I965_MAX_NUM_ROI_REGIONS;
- roi_config->bits.roi_rc_priority_support = 0;
- roi_config->bits.roi_rc_qp_delat_support = 1;
- }
- }else {
- attrib_list[i].value = 0;
- }
- }
-
- break;
-
- case VAConfigAttribEncRateControlExt:
- if ((profile == VAProfileH264ConstrainedBaseline ||
- profile == VAProfileH264Main ||
- profile == VAProfileH264High) &&
- entrypoint == VAEntrypointEncSlice) {
- VAConfigAttribValEncRateControlExt *val_config = (VAConfigAttribValEncRateControlExt *)&(attrib_list[i].value);
-
- val_config->bits.max_num_temporal_layers_minus1 = MAX_TEMPORAL_LAYERS - 1;
- val_config->bits.temporal_layer_bitrate_control_flag = 1;
- } else {
- attrib_list[i].value = VA_ATTRIB_NOT_SUPPORTED;
- }
-
- break;
-
- default:
- /* Do nothing */
- attrib_list[i].value = VA_ATTRIB_NOT_SUPPORTED;
- break;
- }
- }
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-i965_destroy_config(struct object_heap *heap, struct object_base *obj)
-{
- object_heap_free(heap, obj);
-}
-
-static VAConfigAttrib *
-i965_lookup_config_attribute(struct object_config *obj_config,
- VAConfigAttribType type)
-{
- int i;
-
- for (i = 0; i < obj_config->num_attribs; i++) {
- VAConfigAttrib * const attrib = &obj_config->attrib_list[i];
- if (attrib->type == type)
- return attrib;
- }
- return NULL;
-}
-
-static VAStatus
-i965_append_config_attribute(struct object_config *obj_config,
- const VAConfigAttrib *new_attrib)
-{
- VAConfigAttrib *attrib;
-
- if (obj_config->num_attribs >= I965_MAX_CONFIG_ATTRIBUTES)
- return VA_STATUS_ERROR_MAX_NUM_EXCEEDED;
-
- attrib = &obj_config->attrib_list[obj_config->num_attribs++];
- attrib->type = new_attrib->type;
- attrib->value = new_attrib->value;
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-i965_ensure_config_attribute(struct object_config *obj_config,
- const VAConfigAttrib *new_attrib)
-{
- VAConfigAttrib *attrib;
-
- /* Check for existing attributes */
- attrib = i965_lookup_config_attribute(obj_config, new_attrib->type);
- if (attrib) {
- /* Update existing attribute */
- attrib->value = new_attrib->value;
- return VA_STATUS_SUCCESS;
- }
- return i965_append_config_attribute(obj_config, new_attrib);
-}
-
-VAStatus
-i965_CreateConfig(VADriverContextP ctx,
- VAProfile profile,
- VAEntrypoint entrypoint,
- VAConfigAttrib *attrib_list,
- int num_attribs,
- VAConfigID *config_id) /* out */
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- struct object_config *obj_config;
- int configID;
- int i;
- VAStatus vaStatus;
-
- vaStatus = i965_validate_config(ctx, profile, entrypoint);
-
- if (VA_STATUS_SUCCESS != vaStatus) {
- return vaStatus;
- }
-
- configID = NEW_CONFIG_ID();
- obj_config = CONFIG(configID);
-
- if (NULL == obj_config) {
- vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED;
- return vaStatus;
- }
-
- obj_config->profile = profile;
- obj_config->entrypoint = entrypoint;
- obj_config->num_attribs = 0;
- obj_config->wrapper_config = VA_INVALID_ID;
-
- for (i = 0; i < num_attribs; i++) {
- vaStatus = i965_ensure_config_attribute(obj_config, &attrib_list[i]);
- if (vaStatus != VA_STATUS_SUCCESS)
- break;
- }
-
- if (vaStatus == VA_STATUS_SUCCESS) {
- VAConfigAttrib attrib, *attrib_found;
- attrib.type = VAConfigAttribRTFormat;
- attrib.value = i965_get_default_chroma_formats(ctx, profile, entrypoint);
- attrib_found = i965_lookup_config_attribute(obj_config, attrib.type);
- if (!attrib_found || !attrib_found->value)
- vaStatus = i965_append_config_attribute(obj_config, &attrib);
- else if (!(attrib_found->value & attrib.value))
- vaStatus = VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT;
- }
-
- if ((vaStatus == VA_STATUS_SUCCESS) &&
- (profile == VAProfileVP9Profile0) &&
- (entrypoint == VAEntrypointVLD) &&
- !HAS_VP9_DECODING(i965)) {
-
- if (i965->wrapper_pdrvctx) {
- VAGenericID wrapper_config;
-
- CALL_VTABLE(i965->wrapper_pdrvctx, vaStatus,
- vaCreateConfig(i965->wrapper_pdrvctx, profile,
- entrypoint, attrib_list,
- num_attribs, &wrapper_config));
-
- if (vaStatus == VA_STATUS_SUCCESS)
- obj_config->wrapper_config = wrapper_config;
- }
- }
-
- /* Error recovery */
- if (VA_STATUS_SUCCESS != vaStatus) {
- i965_destroy_config(&i965->config_heap, (struct object_base *)obj_config);
- } else {
- *config_id = configID;
- }
-
- return vaStatus;
-}
-
-VAStatus
-i965_DestroyConfig(VADriverContextP ctx, VAConfigID config_id)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_config *obj_config = CONFIG(config_id);
- VAStatus vaStatus;
-
- if (NULL == obj_config) {
- vaStatus = VA_STATUS_ERROR_INVALID_CONFIG;
- return vaStatus;
- }
-
- if ((obj_config->wrapper_config != VA_INVALID_ID) &&
- i965->wrapper_pdrvctx) {
- CALL_VTABLE(i965->wrapper_pdrvctx, vaStatus,
- vaDestroyConfig(i965->wrapper_pdrvctx,
- obj_config->wrapper_config));
- obj_config->wrapper_config = VA_INVALID_ID;
- }
-
- i965_destroy_config(&i965->config_heap, (struct object_base *)obj_config);
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus i965_QueryConfigAttributes(VADriverContextP ctx,
- VAConfigID config_id,
- VAProfile *profile, /* out */
- VAEntrypoint *entrypoint, /* out */
- VAConfigAttrib *attrib_list, /* out */
- int *num_attribs) /* out */
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_config *obj_config = CONFIG(config_id);
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- int i;
-
- ASSERT_RET(obj_config, VA_STATUS_ERROR_INVALID_CONFIG);
- *profile = obj_config->profile;
- *entrypoint = obj_config->entrypoint;
- *num_attribs = obj_config->num_attribs;
-
- for(i = 0; i < obj_config->num_attribs; i++) {
- attrib_list[i] = obj_config->attrib_list[i];
- }
-
- return vaStatus;
-}
-
-void
-i965_destroy_surface_storage(struct object_surface *obj_surface)
-{
- if (!obj_surface)
- return;
-
- dri_bo_unreference(obj_surface->bo);
- obj_surface->bo = NULL;
-
- if (obj_surface->free_private_data != NULL) {
- obj_surface->free_private_data(&obj_surface->private_data);
- obj_surface->private_data = NULL;
- }
-}
-
-static void
-i965_destroy_surface(struct object_heap *heap, struct object_base *obj)
-{
- struct object_surface *obj_surface = (struct object_surface *)obj;
-
- i965_destroy_surface_storage(obj_surface);
- object_heap_free(heap, obj);
-}
-
-static VAStatus
-i965_surface_native_memory(VADriverContextP ctx,
- struct object_surface *obj_surface,
- int format,
- int expected_fourcc)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- int tiling = HAS_TILED_SURFACE(i965);
-
- if (!expected_fourcc)
- return VA_STATUS_SUCCESS;
-
- // todo, should we disable tiling for 422 format?
- if (expected_fourcc == VA_FOURCC_I420 ||
- expected_fourcc == VA_FOURCC_IYUV ||
- expected_fourcc == VA_FOURCC_I010 ||
- expected_fourcc == VA_FOURCC_YV12 ||
- expected_fourcc == VA_FOURCC_YV16)
- tiling = 0;
-
- return i965_check_alloc_surface_bo(ctx, obj_surface, tiling, expected_fourcc, get_sampling_from_fourcc(expected_fourcc));
-}
-
-static VAStatus
-i965_suface_external_memory(VADriverContextP ctx,
- struct object_surface *obj_surface,
- int external_memory_type,
- VASurfaceAttribExternalBuffers *memory_attibute,
- int index)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
-
- if (!memory_attibute ||
- !memory_attibute->buffers ||
- index > memory_attibute->num_buffers)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- ASSERT_RET(obj_surface->orig_width == memory_attibute->width, VA_STATUS_ERROR_INVALID_PARAMETER);
- ASSERT_RET(obj_surface->orig_height == memory_attibute->height, VA_STATUS_ERROR_INVALID_PARAMETER);
- ASSERT_RET(memory_attibute->num_planes >= 1, VA_STATUS_ERROR_INVALID_PARAMETER);
-
- obj_surface->fourcc = memory_attibute->pixel_format;
- obj_surface->width = memory_attibute->pitches[0];
- obj_surface->size = memory_attibute->data_size;
-
- if (memory_attibute->num_planes == 1)
- obj_surface->height = memory_attibute->data_size / obj_surface->width;
- else
- obj_surface->height = memory_attibute->offsets[1] / obj_surface->width;
-
- obj_surface->x_cb_offset = 0; /* X offset is always 0 */
- obj_surface->x_cr_offset = 0;
-
- switch (obj_surface->fourcc) {
- case VA_FOURCC_NV12:
- case VA_FOURCC_P010:
- ASSERT_RET(memory_attibute->num_planes == 2, VA_STATUS_ERROR_INVALID_PARAMETER);
- ASSERT_RET(memory_attibute->pitches[0] == memory_attibute->pitches[1], VA_STATUS_ERROR_INVALID_PARAMETER);
-
- obj_surface->subsampling = SUBSAMPLE_YUV420;
- obj_surface->y_cb_offset = obj_surface->height;
- obj_surface->y_cr_offset = obj_surface->height;
- obj_surface->cb_cr_width = obj_surface->orig_width / 2;
- obj_surface->cb_cr_height = obj_surface->orig_height / 2;
- obj_surface->cb_cr_pitch = memory_attibute->pitches[1];
-
- break;
-
- case VA_FOURCC_YV12:
- case VA_FOURCC_IMC1:
- ASSERT_RET(memory_attibute->num_planes == 3, VA_STATUS_ERROR_INVALID_PARAMETER);
- ASSERT_RET(memory_attibute->pitches[1] == memory_attibute->pitches[2], VA_STATUS_ERROR_INVALID_PARAMETER);
-
- obj_surface->subsampling = SUBSAMPLE_YUV420;
- obj_surface->y_cr_offset = obj_surface->height;
- obj_surface->y_cb_offset = memory_attibute->offsets[2] / obj_surface->width;
- obj_surface->cb_cr_width = obj_surface->orig_width / 2;
- obj_surface->cb_cr_height = obj_surface->orig_height / 2;
- obj_surface->cb_cr_pitch = memory_attibute->pitches[1];
-
- break;
-
- case VA_FOURCC_I420:
- case VA_FOURCC_IYUV:
- case VA_FOURCC_IMC3:
- case VA_FOURCC_I010:
- ASSERT_RET(memory_attibute->num_planes == 3, VA_STATUS_ERROR_INVALID_PARAMETER);
- ASSERT_RET(memory_attibute->pitches[1] == memory_attibute->pitches[2], VA_STATUS_ERROR_INVALID_PARAMETER);
-
- obj_surface->subsampling = SUBSAMPLE_YUV420;
- obj_surface->y_cb_offset = obj_surface->height;
- obj_surface->y_cr_offset = memory_attibute->offsets[2] / obj_surface->width;
- obj_surface->cb_cr_width = obj_surface->orig_width / 2;
- obj_surface->cb_cr_height = obj_surface->orig_height / 2;
- obj_surface->cb_cr_pitch = memory_attibute->pitches[1];
-
- break;
-
- case VA_FOURCC_YUY2:
- case VA_FOURCC_UYVY:
- ASSERT_RET(memory_attibute->num_planes == 1, VA_STATUS_ERROR_INVALID_PARAMETER);
-
- obj_surface->subsampling = SUBSAMPLE_YUV422H;
- obj_surface->y_cb_offset = 0;
- obj_surface->y_cr_offset = 0;
- obj_surface->cb_cr_width = obj_surface->orig_width / 2;
- obj_surface->cb_cr_height = obj_surface->orig_height;
- obj_surface->cb_cr_pitch = memory_attibute->pitches[0];
-
- break;
-
- case VA_FOURCC_RGBA:
- case VA_FOURCC_RGBX:
- case VA_FOURCC_BGRA:
- case VA_FOURCC_BGRX:
- ASSERT_RET(memory_attibute->num_planes == 1, VA_STATUS_ERROR_INVALID_PARAMETER);
-
- obj_surface->subsampling = SUBSAMPLE_RGBX;
- obj_surface->y_cb_offset = 0;
- obj_surface->y_cr_offset = 0;
- obj_surface->cb_cr_width = 0;
- obj_surface->cb_cr_height = 0;
- obj_surface->cb_cr_pitch = 0;
-
- break;
-
- case VA_FOURCC_Y800: /* monochrome surface */
- ASSERT_RET(memory_attibute->num_planes == 1, VA_STATUS_ERROR_INVALID_PARAMETER);
-
- obj_surface->subsampling = SUBSAMPLE_YUV400;
- obj_surface->y_cb_offset = 0;
- obj_surface->y_cr_offset = 0;
- obj_surface->cb_cr_width = 0;
- obj_surface->cb_cr_height = 0;
- obj_surface->cb_cr_pitch = 0;
-
- break;
-
- case VA_FOURCC_411P:
- ASSERT_RET(memory_attibute->num_planes == 3, VA_STATUS_ERROR_INVALID_PARAMETER);
- ASSERT_RET(memory_attibute->pitches[1] == memory_attibute->pitches[2], VA_STATUS_ERROR_INVALID_PARAMETER);
-
- obj_surface->subsampling = SUBSAMPLE_YUV411;
- obj_surface->y_cb_offset = 0;
- obj_surface->y_cr_offset = 0;
- obj_surface->cb_cr_width = obj_surface->orig_width / 4;
- obj_surface->cb_cr_height = obj_surface->orig_height;
- obj_surface->cb_cr_pitch = memory_attibute->pitches[1];
-
- break;
-
- case VA_FOURCC_422H:
- ASSERT_RET(memory_attibute->num_planes == 3, VA_STATUS_ERROR_INVALID_PARAMETER);
- ASSERT_RET(memory_attibute->pitches[1] == memory_attibute->pitches[2], VA_STATUS_ERROR_INVALID_PARAMETER);
-
- obj_surface->subsampling = SUBSAMPLE_YUV422H;
- obj_surface->y_cb_offset = obj_surface->height;
- obj_surface->y_cr_offset = memory_attibute->offsets[2] / obj_surface->width;
- obj_surface->cb_cr_width = obj_surface->orig_width / 2;
- obj_surface->cb_cr_height = obj_surface->orig_height;
- obj_surface->cb_cr_pitch = memory_attibute->pitches[1];
-
- break;
-
- case VA_FOURCC_YV16:
- assert(memory_attibute->num_planes == 3);
- assert(memory_attibute->pitches[1] == memory_attibute->pitches[2]);
-
- obj_surface->subsampling = SUBSAMPLE_YUV422H;
- obj_surface->y_cr_offset = memory_attibute->offsets[1] / obj_surface->width;
- obj_surface->y_cb_offset = memory_attibute->offsets[2] / obj_surface->width;
- obj_surface->cb_cr_width = obj_surface->orig_width / 2;
- obj_surface->cb_cr_height = obj_surface->orig_height;
- obj_surface->cb_cr_pitch = memory_attibute->pitches[1];
-
- break;
-
- case VA_FOURCC_422V:
- ASSERT_RET(memory_attibute->num_planes == 3, VA_STATUS_ERROR_INVALID_PARAMETER);
- ASSERT_RET(memory_attibute->pitches[1] == memory_attibute->pitches[2], VA_STATUS_ERROR_INVALID_PARAMETER);
-
- obj_surface->subsampling = SUBSAMPLE_YUV422H;
- obj_surface->y_cb_offset = obj_surface->height;
- obj_surface->y_cr_offset = memory_attibute->offsets[2] / obj_surface->width;
- obj_surface->cb_cr_width = obj_surface->orig_width;
- obj_surface->cb_cr_height = obj_surface->orig_height / 2;
- obj_surface->cb_cr_pitch = memory_attibute->pitches[1];
-
- break;
-
- case VA_FOURCC_444P:
- ASSERT_RET(memory_attibute->num_planes == 3, VA_STATUS_ERROR_INVALID_PARAMETER);
- ASSERT_RET(memory_attibute->pitches[1] == memory_attibute->pitches[2], VA_STATUS_ERROR_INVALID_PARAMETER);
-
- obj_surface->subsampling = SUBSAMPLE_YUV444;
- obj_surface->y_cb_offset = obj_surface->height;
- obj_surface->y_cr_offset = memory_attibute->offsets[2] / obj_surface->width;
- obj_surface->cb_cr_width = obj_surface->orig_width;
- obj_surface->cb_cr_height = obj_surface->orig_height;
- obj_surface->cb_cr_pitch = memory_attibute->pitches[1];
-
- break;
-
- default:
-
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- }
-
- if (external_memory_type == I965_SURFACE_MEM_GEM_FLINK)
- obj_surface->bo = drm_intel_bo_gem_create_from_name(i965->intel.bufmgr,
- "gem flinked vaapi surface",
- memory_attibute->buffers[index]);
- else if (external_memory_type == I965_SURFACE_MEM_DRM_PRIME)
- obj_surface->bo = drm_intel_bo_gem_create_from_prime(i965->intel.bufmgr,
- memory_attibute->buffers[index],
- obj_surface->size);
-
- if (!obj_surface->bo)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- return VA_STATUS_SUCCESS;
-}
-
-/* byte-per-pixel of the first plane */
-static int
-bpp_1stplane_by_fourcc(unsigned int fourcc)
-{
- const i965_fourcc_info *info = get_fourcc_info(fourcc);
-
- if (info && (info->flag & I_S))
- return info->bpp[0] / 8;
- else
- return 0;
-}
-
-static VAStatus
-i965_CreateSurfaces2(
- VADriverContextP ctx,
- unsigned int format,
- unsigned int width,
- unsigned int height,
- VASurfaceID *surfaces,
- unsigned int num_surfaces,
- VASurfaceAttrib *attrib_list,
- unsigned int num_attribs
- )
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- int i,j;
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- int expected_fourcc = 0;
- int memory_type = I965_SURFACE_MEM_NATIVE; /* native */
- VASurfaceAttribExternalBuffers *memory_attibute = NULL;
-
- for (i = 0; i < num_attribs && attrib_list; i++) {
- if ((attrib_list[i].type == VASurfaceAttribPixelFormat) &&
- (attrib_list[i].flags & VA_SURFACE_ATTRIB_SETTABLE)) {
- ASSERT_RET(attrib_list[i].value.type == VAGenericValueTypeInteger, VA_STATUS_ERROR_INVALID_PARAMETER);
- expected_fourcc = attrib_list[i].value.value.i;
- }
-
- if ((attrib_list[i].type == VASurfaceAttribMemoryType) &&
- (attrib_list[i].flags & VA_SURFACE_ATTRIB_SETTABLE)) {
-
- ASSERT_RET(attrib_list[i].value.type == VAGenericValueTypeInteger, VA_STATUS_ERROR_INVALID_PARAMETER);
-
- if (attrib_list[i].value.value.i == VA_SURFACE_ATTRIB_MEM_TYPE_KERNEL_DRM)
- memory_type = I965_SURFACE_MEM_GEM_FLINK; /* flinked GEM handle */
- else if (attrib_list[i].value.value.i == VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME)
- memory_type = I965_SURFACE_MEM_DRM_PRIME; /* drm prime fd */
- else if (attrib_list[i].value.value.i == VA_SURFACE_ATTRIB_MEM_TYPE_VA)
- memory_type = I965_SURFACE_MEM_NATIVE; /* va native memory, to be allocated */
- }
-
- if ((attrib_list[i].type == VASurfaceAttribExternalBufferDescriptor) &&
- (attrib_list[i].flags == VA_SURFACE_ATTRIB_SETTABLE)) {
- ASSERT_RET(attrib_list[i].value.type == VAGenericValueTypePointer, VA_STATUS_ERROR_INVALID_PARAMETER);
- memory_attibute = (VASurfaceAttribExternalBuffers *)attrib_list[i].value.value.p;
- }
- }
-
- /* support 420 & 422 & RGB32 format, 422 and RGB32 are only used
- * for post-processing (including color conversion) */
- if (VA_RT_FORMAT_YUV420 != format &&
- VA_RT_FORMAT_YUV420_10BPP != format &&
- VA_RT_FORMAT_YUV422 != format &&
- VA_RT_FORMAT_YUV444 != format &&
- VA_RT_FORMAT_YUV411 != format &&
- VA_RT_FORMAT_YUV400 != format &&
- VA_RT_FORMAT_RGB32 != format) {
- return VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT;
- }
-
- for (i = 0; i < num_surfaces; i++) {
- int surfaceID = NEW_SURFACE_ID();
- struct object_surface *obj_surface = SURFACE(surfaceID);
-
- if (NULL == obj_surface) {
- vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED;
- break;
- }
-
- surfaces[i] = surfaceID;
- obj_surface->status = VASurfaceReady;
- obj_surface->orig_width = width;
- obj_surface->orig_height = height;
- obj_surface->user_disable_tiling = false;
- obj_surface->user_h_stride_set = false;
- obj_surface->user_v_stride_set = false;
- obj_surface->border_cleared = false;
-
- obj_surface->subpic_render_idx = 0;
- for(j = 0; j < I965_MAX_SUBPIC_SUM; j++){
- obj_surface->subpic[j] = VA_INVALID_ID;
- obj_surface->obj_subpic[j] = NULL;
- }
-
- assert(i965->codec_info->min_linear_wpitch);
- assert(i965->codec_info->min_linear_hpitch);
- obj_surface->width = ALIGN(width, i965->codec_info->min_linear_wpitch);
- obj_surface->height = ALIGN(height, i965->codec_info->min_linear_hpitch);
- obj_surface->flags = SURFACE_REFERENCED;
- obj_surface->fourcc = 0;
- obj_surface->expected_format = format;
- obj_surface->bo = NULL;
- obj_surface->locked_image_id = VA_INVALID_ID;
- obj_surface->derived_image_id = VA_INVALID_ID;
- obj_surface->private_data = NULL;
- obj_surface->free_private_data = NULL;
- obj_surface->subsampling = SUBSAMPLE_YUV420;
-
- obj_surface->wrapper_surface = VA_INVALID_ID;
- obj_surface->exported_primefd = -1;
-
- switch (memory_type) {
- case I965_SURFACE_MEM_NATIVE:
- if (memory_attibute) {
- if (!(memory_attibute->flags & VA_SURFACE_EXTBUF_DESC_ENABLE_TILING))
- obj_surface->user_disable_tiling = true;
-
- if (memory_attibute->pixel_format) {
- if (expected_fourcc)
- ASSERT_RET(memory_attibute->pixel_format == expected_fourcc, VA_STATUS_ERROR_INVALID_PARAMETER);
- else
- expected_fourcc = memory_attibute->pixel_format;
- }
- ASSERT_RET(expected_fourcc, VA_STATUS_ERROR_INVALID_PARAMETER);
- if (memory_attibute->pitches[0]) {
- int bpp_1stplane = bpp_1stplane_by_fourcc(expected_fourcc);
- ASSERT_RET(bpp_1stplane, VA_STATUS_ERROR_INVALID_PARAMETER);
- obj_surface->width = memory_attibute->pitches[0];
- obj_surface->user_h_stride_set = true;
- ASSERT_RET(IS_ALIGNED(obj_surface->width, 16), VA_STATUS_ERROR_INVALID_PARAMETER);
- ASSERT_RET(obj_surface->width >= width * bpp_1stplane, VA_STATUS_ERROR_INVALID_PARAMETER);
-
- if (memory_attibute->offsets[1]) {
- ASSERT_RET(!memory_attibute->offsets[0], VA_STATUS_ERROR_INVALID_PARAMETER);
- obj_surface->height = memory_attibute->offsets[1]/memory_attibute->pitches[0];
- obj_surface->user_v_stride_set = true;
- ASSERT_RET(IS_ALIGNED(obj_surface->height, 16), VA_STATUS_ERROR_INVALID_PARAMETER);
- ASSERT_RET(obj_surface->height >= height, VA_STATUS_ERROR_INVALID_PARAMETER);
- }
- }
- }
- vaStatus = i965_surface_native_memory(ctx,
- obj_surface,
- format,
- expected_fourcc);
- break;
-
- case I965_SURFACE_MEM_GEM_FLINK:
- case I965_SURFACE_MEM_DRM_PRIME:
- vaStatus = i965_suface_external_memory(ctx,
- obj_surface,
- memory_type,
- memory_attibute,
- i);
- break;
- }
- if (VA_STATUS_SUCCESS != vaStatus) {
- i965_destroy_surface(&i965->surface_heap, (struct object_base *)obj_surface);
- break;
- }
- }
-
- /* Error recovery */
- if (VA_STATUS_SUCCESS != vaStatus) {
- /* surfaces[i-1] was the last successful allocation */
- for (; i--; ) {
- struct object_surface *obj_surface = SURFACE(surfaces[i]);
-
- surfaces[i] = VA_INVALID_SURFACE;
- assert(obj_surface);
- i965_destroy_surface(&i965->surface_heap, (struct object_base *)obj_surface);
- }
- }
-
- return vaStatus;
-}
-
-VAStatus
-i965_CreateSurfaces(VADriverContextP ctx,
- int width,
- int height,
- int format,
- int num_surfaces,
- VASurfaceID *surfaces) /* out */
-{
- return i965_CreateSurfaces2(ctx,
- format,
- width,
- height,
- surfaces,
- num_surfaces,
- NULL,
- 0);
-}
-
-VAStatus
-i965_DestroySurfaces(VADriverContextP ctx,
- VASurfaceID *surface_list,
- int num_surfaces)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- int i;
- VAStatus va_status = VA_STATUS_SUCCESS;
-
- for (i = num_surfaces; i--; ) {
- struct object_surface *obj_surface = SURFACE(surface_list[i]);
-
- ASSERT_RET(obj_surface, VA_STATUS_ERROR_INVALID_SURFACE);
-
- if ((obj_surface->wrapper_surface != VA_INVALID_ID) &&
- i965->wrapper_pdrvctx) {
- CALL_VTABLE(i965->wrapper_pdrvctx, va_status,
- vaDestroySurfaces(i965->wrapper_pdrvctx,
- &(obj_surface->wrapper_surface),
- 1));
- obj_surface->wrapper_surface = VA_INVALID_ID;
- }
- if (obj_surface->exported_primefd >= 0) {
- close(obj_surface->exported_primefd);
- obj_surface->exported_primefd = -1;
- }
-
- i965_destroy_surface(&i965->surface_heap, (struct object_base *)obj_surface);
- }
-
- return va_status;
-}
-
-VAStatus
-i965_QueryImageFormats(VADriverContextP ctx,
- VAImageFormat *format_list, /* out */
- int *num_formats) /* out */
-{
- int n;
-
- for (n = 0; i965_image_formats_map[n].va_format.fourcc != 0; n++) {
- const i965_image_format_map_t * const m = &i965_image_formats_map[n];
- if (format_list)
- format_list[n] = m->va_format;
- }
-
- if (num_formats)
- *num_formats = n;
-
- return VA_STATUS_SUCCESS;
-}
-
-/*
- * Guess the format when the usage of a VA surface is unknown
- * 1. Without a valid context: YV12
- * 2. The current context is valid:
- * a) always NV12 on GEN6 and later
- * b) I420 for MPEG-2 and NV12 for other codec on GEN4 & GEN5
- */
-static void
-i965_guess_surface_format(VADriverContextP ctx,
- VASurfaceID surface,
- unsigned int *fourcc,
- unsigned int *is_tiled)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_context *obj_context = NULL;
- struct object_config *obj_config = NULL;
-
- *fourcc = VA_FOURCC_YV12;
- *is_tiled = 0;
-
- if (i965->current_context_id == VA_INVALID_ID)
- return;
-
- obj_context = CONTEXT(i965->current_context_id);
-
- if (!obj_context)
- return;
-
- obj_config = obj_context->obj_config;
- assert(obj_config);
-
- if (!obj_config)
- return;
-
- if (IS_GEN6(i965->intel.device_info) ||
- IS_GEN7(i965->intel.device_info) ||
- IS_GEN8(i965->intel.device_info) ||
- IS_GEN9(i965->intel.device_info)) {
- *fourcc = VA_FOURCC_NV12;
- *is_tiled = 1;
- return;
- }
-
- switch (obj_config->profile) {
- case VAProfileMPEG2Simple:
- case VAProfileMPEG2Main:
- *fourcc = VA_FOURCC_I420;
- *is_tiled = 0;
- break;
-
- default:
- *fourcc = VA_FOURCC_NV12;
- *is_tiled = 0;
- break;
- }
-}
-
-VAStatus
-i965_QuerySubpictureFormats(VADriverContextP ctx,
- VAImageFormat *format_list, /* out */
- unsigned int *flags, /* out */
- unsigned int *num_formats) /* out */
-{
- int n;
-
- for (n = 0; i965_subpic_formats_map[n].va_format.fourcc != 0; n++) {
- const i965_subpic_format_map_t * const m = &i965_subpic_formats_map[n];
- if (format_list)
- format_list[n] = m->va_format;
- if (flags)
- flags[n] = m->va_flags;
- }
-
- if (num_formats)
- *num_formats = n;
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-i965_destroy_subpic(struct object_heap *heap, struct object_base *obj)
-{
- // struct object_subpic *obj_subpic = (struct object_subpic *)obj;
-
- object_heap_free(heap, obj);
-}
-
-VAStatus
-i965_CreateSubpicture(VADriverContextP ctx,
- VAImageID image,
- VASubpictureID *subpicture) /* out */
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VASubpictureID subpicID = NEW_SUBPIC_ID()
- struct object_subpic *obj_subpic = SUBPIC(subpicID);
-
- if (!obj_subpic)
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
-
- struct object_image *obj_image = IMAGE(image);
- if (!obj_image)
- return VA_STATUS_ERROR_INVALID_IMAGE;
-
- const i965_subpic_format_map_t * const m = get_subpic_format(&obj_image->image.format);
- if (!m)
- return VA_STATUS_ERROR_UNKNOWN; /* XXX: VA_STATUS_ERROR_UNSUPPORTED_FORMAT? */
-
- *subpicture = subpicID;
- obj_subpic->image = image;
- obj_subpic->obj_image = obj_image;
- obj_subpic->format = m->format;
- obj_subpic->width = obj_image->image.width;
- obj_subpic->height = obj_image->image.height;
- obj_subpic->pitch = obj_image->image.pitches[0];
- obj_subpic->bo = obj_image->bo;
- obj_subpic->global_alpha = 1.0;
-
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus
-i965_DestroySubpicture(VADriverContextP ctx,
- VASubpictureID subpicture)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_subpic *obj_subpic = SUBPIC(subpicture);
-
- if (!obj_subpic)
- return VA_STATUS_ERROR_INVALID_SUBPICTURE;
-
- ASSERT_RET(obj_subpic->obj_image, VA_STATUS_ERROR_INVALID_SUBPICTURE);
- i965_destroy_subpic(&i965->subpic_heap, (struct object_base *)obj_subpic);
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus
-i965_SetSubpictureImage(VADriverContextP ctx,
- VASubpictureID subpicture,
- VAImageID image)
-{
- /* TODO */
- return VA_STATUS_ERROR_UNIMPLEMENTED;
-}
-
-VAStatus
-i965_SetSubpictureChromakey(VADriverContextP ctx,
- VASubpictureID subpicture,
- unsigned int chromakey_min,
- unsigned int chromakey_max,
- unsigned int chromakey_mask)
-{
- /* TODO */
- return VA_STATUS_ERROR_UNIMPLEMENTED;
-}
-
-VAStatus
-i965_SetSubpictureGlobalAlpha(VADriverContextP ctx,
- VASubpictureID subpicture,
- float global_alpha)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_subpic *obj_subpic = SUBPIC(subpicture);
-
- if(global_alpha > 1.0 || global_alpha < 0.0){
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- }
-
- if (!obj_subpic)
- return VA_STATUS_ERROR_INVALID_SUBPICTURE;
-
- obj_subpic->global_alpha = global_alpha;
-
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus
-i965_AssociateSubpicture(VADriverContextP ctx,
- VASubpictureID subpicture,
- VASurfaceID *target_surfaces,
- int num_surfaces,
- short src_x, /* upper left offset in subpicture */
- short src_y,
- unsigned short src_width,
- unsigned short src_height,
- short dest_x, /* upper left offset in surface */
- short dest_y,
- unsigned short dest_width,
- unsigned short dest_height,
- /*
- * whether to enable chroma-keying or global-alpha
- * see VA_SUBPICTURE_XXX values
- */
- unsigned int flags)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_subpic *obj_subpic = SUBPIC(subpicture);
- int i, j;
-
- if (!obj_subpic)
- return VA_STATUS_ERROR_INVALID_SUBPICTURE;
-
- ASSERT_RET(obj_subpic->obj_image, VA_STATUS_ERROR_INVALID_SUBPICTURE);
-
- obj_subpic->src_rect.x = src_x;
- obj_subpic->src_rect.y = src_y;
- obj_subpic->src_rect.width = src_width;
- obj_subpic->src_rect.height = src_height;
- obj_subpic->dst_rect.x = dest_x;
- obj_subpic->dst_rect.y = dest_y;
- obj_subpic->dst_rect.width = dest_width;
- obj_subpic->dst_rect.height = dest_height;
- obj_subpic->flags = flags;
-
- for (i = 0; i < num_surfaces; i++) {
- struct object_surface *obj_surface = SURFACE(target_surfaces[i]);
- if (!obj_surface)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- for(j = 0; j < I965_MAX_SUBPIC_SUM; j ++){
- if(obj_surface->subpic[j] == VA_INVALID_ID){
- assert(obj_surface->obj_subpic[j] == NULL);
- obj_surface->subpic[j] = subpicture;
- obj_surface->obj_subpic[j] = obj_subpic;
- break;
- }
- }
-
- if(j == I965_MAX_SUBPIC_SUM){
- return VA_STATUS_ERROR_MAX_NUM_EXCEEDED;
- }
-
- }
- return VA_STATUS_SUCCESS;
-}
-
-
-VAStatus
-i965_DeassociateSubpicture(VADriverContextP ctx,
- VASubpictureID subpicture,
- VASurfaceID *target_surfaces,
- int num_surfaces)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_subpic *obj_subpic = SUBPIC(subpicture);
- int i, j;
-
- if (!obj_subpic)
- return VA_STATUS_ERROR_INVALID_SUBPICTURE;
-
- for (i = 0; i < num_surfaces; i++) {
- struct object_surface *obj_surface = SURFACE(target_surfaces[i]);
- if (!obj_surface)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- for(j = 0; j < I965_MAX_SUBPIC_SUM; j ++){
- if (obj_surface->subpic[j] == subpicture) {
- assert(obj_surface->obj_subpic[j] == obj_subpic);
- obj_surface->subpic[j] = VA_INVALID_ID;
- obj_surface->obj_subpic[j] = NULL;
- break;
- }
- }
-
- if(j == I965_MAX_SUBPIC_SUM){
- return VA_STATUS_ERROR_MAX_NUM_EXCEEDED;
- }
- }
- return VA_STATUS_SUCCESS;
-}
-
-void
-i965_reference_buffer_store(struct buffer_store **ptr,
- struct buffer_store *buffer_store)
-{
- assert(*ptr == NULL);
-
- if (buffer_store) {
- buffer_store->ref_count++;
- *ptr = buffer_store;
- }
-}
-
-void
-i965_release_buffer_store(struct buffer_store **ptr)
-{
- struct buffer_store *buffer_store = *ptr;
-
- if (buffer_store == NULL)
- return;
-
- assert(buffer_store->bo || buffer_store->buffer);
- assert(!(buffer_store->bo && buffer_store->buffer));
- buffer_store->ref_count--;
-
- if (buffer_store->ref_count == 0) {
- dri_bo_unreference(buffer_store->bo);
- free(buffer_store->buffer);
- buffer_store->bo = NULL;
- buffer_store->buffer = NULL;
- free(buffer_store);
- }
-
- *ptr = NULL;
-}
-
-static void
-i965_destroy_context(struct object_heap *heap, struct object_base *obj)
-{
- struct object_context *obj_context = (struct object_context *)obj;
- int i, j;
-
- if (obj_context->hw_context) {
- obj_context->hw_context->destroy(obj_context->hw_context);
- obj_context->hw_context = NULL;
- }
-
- if (obj_context->codec_type == CODEC_PROC) {
- i965_release_buffer_store(&obj_context->codec_state.proc.pipeline_param);
-
- } else if (obj_context->codec_type == CODEC_ENC) {
- i965_release_buffer_store(&obj_context->codec_state.encode.q_matrix);
- i965_release_buffer_store(&obj_context->codec_state.encode.huffman_table);
-
- assert(obj_context->codec_state.encode.num_slice_params_ext <= obj_context->codec_state.encode.max_slice_params_ext);
- i965_release_buffer_store(&obj_context->codec_state.encode.pic_param_ext);
- i965_release_buffer_store(&obj_context->codec_state.encode.seq_param_ext);
-
- for (i = 0; i < ARRAY_ELEMS(obj_context->codec_state.encode.packed_header_param); i++)
- i965_release_buffer_store(&obj_context->codec_state.encode.packed_header_param[i]);
-
- for (i = 0; i < ARRAY_ELEMS(obj_context->codec_state.encode.packed_header_data); i++)
- i965_release_buffer_store(&obj_context->codec_state.encode.packed_header_data[i]);
-
- for (i = 0; i < ARRAY_ELEMS(obj_context->codec_state.encode.misc_param); i++)
- for (j = 0; j < ARRAY_ELEMS(obj_context->codec_state.encode.misc_param[0]); j++)
- i965_release_buffer_store(&obj_context->codec_state.encode.misc_param[i][j]);
-
- for (i = 0; i < obj_context->codec_state.encode.num_slice_params_ext; i++)
- i965_release_buffer_store(&obj_context->codec_state.encode.slice_params_ext[i]);
-
- free(obj_context->codec_state.encode.slice_params_ext);
- if (obj_context->codec_state.encode.slice_rawdata_index) {
- free(obj_context->codec_state.encode.slice_rawdata_index);
- obj_context->codec_state.encode.slice_rawdata_index = NULL;
- }
- if (obj_context->codec_state.encode.slice_rawdata_count) {
- free(obj_context->codec_state.encode.slice_rawdata_count);
- obj_context->codec_state.encode.slice_rawdata_count = NULL;
- }
-
- if (obj_context->codec_state.encode.slice_header_index) {
- free(obj_context->codec_state.encode.slice_header_index);
- obj_context->codec_state.encode.slice_header_index = NULL;
- }
-
- for (i = 0; i < obj_context->codec_state.encode.num_packed_header_params_ext; i++)
- i965_release_buffer_store(&obj_context->codec_state.encode.packed_header_params_ext[i]);
- free(obj_context->codec_state.encode.packed_header_params_ext);
-
- for (i = 0; i < obj_context->codec_state.encode.num_packed_header_data_ext; i++)
- i965_release_buffer_store(&obj_context->codec_state.encode.packed_header_data_ext[i]);
- free(obj_context->codec_state.encode.packed_header_data_ext);
-
- i965_release_buffer_store(&obj_context->codec_state.encode.encmb_map);
- } else {
- assert(obj_context->codec_state.decode.num_slice_params <= obj_context->codec_state.decode.max_slice_params);
- assert(obj_context->codec_state.decode.num_slice_datas <= obj_context->codec_state.decode.max_slice_datas);
-
- i965_release_buffer_store(&obj_context->codec_state.decode.pic_param);
- i965_release_buffer_store(&obj_context->codec_state.decode.iq_matrix);
- i965_release_buffer_store(&obj_context->codec_state.decode.bit_plane);
-
- for (i = 0; i < obj_context->codec_state.decode.num_slice_params; i++)
- i965_release_buffer_store(&obj_context->codec_state.decode.slice_params[i]);
-
- for (i = 0; i < obj_context->codec_state.decode.num_slice_datas; i++)
- i965_release_buffer_store(&obj_context->codec_state.decode.slice_datas[i]);
-
- free(obj_context->codec_state.decode.slice_params);
- free(obj_context->codec_state.decode.slice_datas);
- }
-
- free(obj_context->render_targets);
- object_heap_free(heap, obj);
-}
-
-static inline void
-max_resolution(struct i965_driver_data *i965,
- struct object_config *obj_config,
- int *w, /* out */
- int *h) /* out */
-{
- if (i965->codec_info->max_resolution) {
- i965->codec_info->max_resolution(i965, obj_config, w, h);
- } else {
- *w = i965->codec_info->max_width;
- *h = i965->codec_info->max_height;
- }
-}
-
-VAStatus
-i965_CreateContext(VADriverContextP ctx,
- VAConfigID config_id,
- int picture_width,
- int picture_height,
- int flag,
- VASurfaceID *render_targets,
- int num_render_targets,
- VAContextID *context) /* out */
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_config *obj_config = CONFIG(config_id);
- struct object_context *obj_context = NULL;
- VAConfigAttrib *attrib;
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- int contextID;
- int i;
- int max_width;
- int max_height;
-
- if (NULL == obj_config) {
- vaStatus = VA_STATUS_ERROR_INVALID_CONFIG;
- return vaStatus;
- }
-
- max_resolution(i965, obj_config, &max_width, &max_height);
-
- if (picture_width > max_width ||
- picture_height > max_height) {
- vaStatus = VA_STATUS_ERROR_RESOLUTION_NOT_SUPPORTED;
- return vaStatus;
- }
-
- /* Validate flag */
- /* Validate picture dimensions */
- contextID = NEW_CONTEXT_ID();
- obj_context = CONTEXT(contextID);
-
- if (NULL == obj_context) {
- vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED;
- return vaStatus;
- }
-
- *context = contextID;
- obj_context->flags = flag;
- obj_context->context_id = contextID;
- obj_context->obj_config = obj_config;
- obj_context->picture_width = picture_width;
- obj_context->picture_height = picture_height;
- obj_context->num_render_targets = num_render_targets;
- obj_context->render_targets =
- (VASurfaceID *)calloc(num_render_targets, sizeof(VASurfaceID));
- obj_context->hw_context = NULL;
- obj_context->wrapper_context = VA_INVALID_ID;
-
- if (!obj_context->render_targets)
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
-
- for(i = 0; i < num_render_targets; i++) {
- if (NULL == SURFACE(render_targets[i])) {
- vaStatus = VA_STATUS_ERROR_INVALID_SURFACE;
- break;
- }
-
- obj_context->render_targets[i] = render_targets[i];
- }
-
- if (VA_STATUS_SUCCESS == vaStatus) {
- if (VAEntrypointVideoProc == obj_config->entrypoint) {
- obj_context->codec_type = CODEC_PROC;
- memset(&obj_context->codec_state.proc, 0, sizeof(obj_context->codec_state.proc));
- obj_context->codec_state.proc.current_render_target = VA_INVALID_ID;
- assert(i965->codec_info->proc_hw_context_init);
- obj_context->hw_context = i965->codec_info->proc_hw_context_init(ctx, obj_config);
- } else if ((VAEntrypointEncSlice == obj_config->entrypoint) ||
- (VAEntrypointEncPicture == obj_config->entrypoint) ||
- (VAEntrypointEncSliceLP == obj_config->entrypoint)) {
- VAConfigAttrib *packed_attrib;
- obj_context->codec_type = CODEC_ENC;
- memset(&obj_context->codec_state.encode, 0, sizeof(obj_context->codec_state.encode));
- obj_context->codec_state.encode.current_render_target = VA_INVALID_ID;
- obj_context->codec_state.encode.max_packed_header_params_ext = NUM_SLICES;
- obj_context->codec_state.encode.packed_header_params_ext =
- calloc(obj_context->codec_state.encode.max_packed_header_params_ext,
- sizeof(struct buffer_store *));
-
- obj_context->codec_state.encode.max_packed_header_data_ext = NUM_SLICES;
- obj_context->codec_state.encode.packed_header_data_ext =
- calloc(obj_context->codec_state.encode.max_packed_header_data_ext,
- sizeof(struct buffer_store *));
-
- obj_context->codec_state.encode.max_slice_num = NUM_SLICES;
- obj_context->codec_state.encode.slice_rawdata_index =
- calloc(obj_context->codec_state.encode.max_slice_num, sizeof(int));
- obj_context->codec_state.encode.slice_rawdata_count =
- calloc(obj_context->codec_state.encode.max_slice_num, sizeof(int));
-
- obj_context->codec_state.encode.slice_header_index =
- calloc(obj_context->codec_state.encode.max_slice_num, sizeof(int));
-
- obj_context->codec_state.encode.vps_sps_seq_index = 0;
-
- obj_context->codec_state.encode.slice_index = 0;
- packed_attrib = i965_lookup_config_attribute(obj_config, VAConfigAttribEncPackedHeaders);
- if (packed_attrib) {
- obj_context->codec_state.encode.packed_header_flag = packed_attrib->value;
- if (obj_config->profile == VAProfileVP9Profile0)
- obj_context->codec_state.encode.packed_header_flag =
- packed_attrib->value & VA_ENC_PACKED_HEADER_RAW_DATA;
- } else {
- /* use the default value. SPS/PPS/RAWDATA is passed from user
- * while Slice_header data is generated by driver.
- */
- obj_context->codec_state.encode.packed_header_flag =
- VA_ENC_PACKED_HEADER_SEQUENCE |
- VA_ENC_PACKED_HEADER_PICTURE |
- VA_ENC_PACKED_HEADER_RAW_DATA;
-
- /* it is not used for VP9 */
- if (obj_config->profile == VAProfileVP9Profile0)
- obj_context->codec_state.encode.packed_header_flag = 0;
- }
- assert(i965->codec_info->enc_hw_context_init);
- obj_context->hw_context = i965->codec_info->enc_hw_context_init(ctx, obj_config);
- } else {
- obj_context->codec_type = CODEC_DEC;
- memset(&obj_context->codec_state.decode, 0, sizeof(obj_context->codec_state.decode));
- obj_context->codec_state.decode.current_render_target = -1;
- obj_context->codec_state.decode.max_slice_params = NUM_SLICES;
- obj_context->codec_state.decode.max_slice_datas = NUM_SLICES;
- obj_context->codec_state.decode.slice_params = calloc(obj_context->codec_state.decode.max_slice_params,
- sizeof(*obj_context->codec_state.decode.slice_params));
- obj_context->codec_state.decode.slice_datas = calloc(obj_context->codec_state.decode.max_slice_datas,
- sizeof(*obj_context->codec_state.decode.slice_datas));
-
- assert(i965->codec_info->dec_hw_context_init);
- obj_context->hw_context = i965->codec_info->dec_hw_context_init(ctx, obj_config);
- }
- }
-
- attrib = i965_lookup_config_attribute(obj_config, VAConfigAttribRTFormat);
- if (!attrib)
- return VA_STATUS_ERROR_INVALID_CONFIG;
- obj_context->codec_state.base.chroma_formats = attrib->value;
-
- if (obj_config->wrapper_config != VA_INVALID_ID) {
- /* The wrapper_pdrvctx should exist when wrapper_config is valid.
- * So it won't check i965->wrapper_pdrvctx again.
- * Fixme if it is incorrect.
- */
- VAGenericID wrapper_context;
-
- /*
- * The render_surface is not passed when calling
- * vaCreateContext.
- * If it is needed, we must get the wrapped surface
- * for the corresponding Surface_list.
- * So the wrapped surface conversion is deferred.
- */
- CALL_VTABLE(i965->wrapper_pdrvctx, vaStatus,
- vaCreateContext(i965->wrapper_pdrvctx,
- obj_config->wrapper_config,
- picture_width, picture_height,
- flag, NULL, 0,
- &wrapper_context));
-
- if (vaStatus == VA_STATUS_SUCCESS)
- obj_context->wrapper_context = wrapper_context;
- }
- /* Error recovery */
- if (VA_STATUS_SUCCESS != vaStatus) {
- i965_destroy_context(&i965->context_heap, (struct object_base *)obj_context);
- }
-
- i965->current_context_id = contextID;
-
- return vaStatus;
-}
-
-VAStatus
-i965_DestroyContext(VADriverContextP ctx, VAContextID context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_context *obj_context = CONTEXT(context);
- VAStatus va_status = VA_STATUS_SUCCESS;
-
- ASSERT_RET(obj_context, VA_STATUS_ERROR_INVALID_CONTEXT);
-
- if (i965->current_context_id == context)
- i965->current_context_id = VA_INVALID_ID;
-
- if ((obj_context->wrapper_context != VA_INVALID_ID) &&
- i965->wrapper_pdrvctx) {
- CALL_VTABLE(i965->wrapper_pdrvctx, va_status,
- vaDestroyContext(i965->wrapper_pdrvctx,
- obj_context->wrapper_context));
-
- obj_context->wrapper_context = VA_INVALID_ID;
- }
-
- i965_destroy_context(&i965->context_heap, (struct object_base *)obj_context);
-
- return va_status;
-}
-
-static void
-i965_destroy_buffer(struct object_heap *heap, struct object_base *obj)
-{
- struct object_buffer *obj_buffer = (struct object_buffer *)obj;
-
- assert(obj_buffer->buffer_store);
- i965_release_buffer_store(&obj_buffer->buffer_store);
- object_heap_free(heap, obj);
-}
-
-static VAStatus
-i965_create_buffer_internal(VADriverContextP ctx,
- VAContextID context,
- VABufferType type,
- unsigned int size,
- unsigned int num_elements,
- void *data,
- dri_bo *store_bo,
- VABufferID *buf_id)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_buffer *obj_buffer = NULL;
- struct buffer_store *buffer_store = NULL;
- int bufferID;
- VAStatus vaStatus = VA_STATUS_ERROR_UNKNOWN;
- struct object_context *obj_context = CONTEXT(context);
- int wrapper_flag = 0;
-
- /* Validate type */
- switch (type) {
- case VAPictureParameterBufferType:
- case VAIQMatrixBufferType:
- case VAQMatrixBufferType:
- case VABitPlaneBufferType:
- case VASliceGroupMapBufferType:
- case VASliceParameterBufferType:
- case VASliceDataBufferType:
- case VAMacroblockParameterBufferType:
- case VAResidualDataBufferType:
- case VADeblockingParameterBufferType:
- case VAImageBufferType:
- case VAEncCodedBufferType:
- case VAEncSequenceParameterBufferType:
- case VAEncPictureParameterBufferType:
- case VAEncSliceParameterBufferType:
- case VAEncPackedHeaderParameterBufferType:
- case VAEncPackedHeaderDataBufferType:
- case VAEncMiscParameterBufferType:
- case VAProcPipelineParameterBufferType:
- case VAProcFilterParameterBufferType:
- case VAHuffmanTableBufferType:
- case VAProbabilityBufferType:
- case VAEncMacroblockMapBufferType:
- /* Ok */
- break;
-
- default:
- return VA_STATUS_ERROR_UNSUPPORTED_BUFFERTYPE;
- }
-
- bufferID = NEW_BUFFER_ID();
- obj_buffer = BUFFER(bufferID);
-
- if (NULL == obj_buffer) {
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
- }
-
- if (type == VAEncCodedBufferType) {
- size += I965_CODEDBUFFER_HEADER_SIZE;
- size += 0x1000; /* for upper bound check */
- }
-
- obj_buffer->max_num_elements = num_elements;
- obj_buffer->num_elements = num_elements;
- obj_buffer->size_element = size;
- obj_buffer->type = type;
- obj_buffer->export_refcount = 0;
- obj_buffer->buffer_store = NULL;
- obj_buffer->wrapper_buffer = VA_INVALID_ID;
- obj_buffer->context_id = context;
-
- buffer_store = calloc(1, sizeof(struct buffer_store));
- assert(buffer_store);
- buffer_store->ref_count = 1;
-
- if (obj_context &&
- (obj_context->wrapper_context != VA_INVALID_ID) &&
- i965->wrapper_pdrvctx) {
- VAGenericID wrapper_buffer;
- VADriverContextP pdrvctx = i965->wrapper_pdrvctx;
-
- CALL_VTABLE(pdrvctx, vaStatus,
- vaCreateBuffer(pdrvctx, obj_context->wrapper_context, type, size, num_elements,
- data, &wrapper_buffer));
- if (vaStatus == VA_STATUS_SUCCESS) {
- obj_buffer->wrapper_buffer = wrapper_buffer;
- } else {
- free(buffer_store);
- return vaStatus;
- }
- wrapper_flag = 1;
- }
-
- if (store_bo != NULL) {
- buffer_store->bo = store_bo;
- dri_bo_reference(buffer_store->bo);
-
- /* If the buffer is wrapped, the buffer_store is bogus. Unnecessary to copy it */
- if (data && !wrapper_flag)
- dri_bo_subdata(buffer_store->bo, 0, size * num_elements, data);
- } else if (type == VASliceDataBufferType ||
- type == VAImageBufferType ||
- type == VAEncCodedBufferType ||
- type == VAEncMacroblockMapBufferType ||
- type == VAProbabilityBufferType) {
-
- /* If the buffer is wrapped, the bo/buffer of buffer_store is bogus.
- * So it is enough to allocate one 64 byte bo
- */
- if (wrapper_flag)
- buffer_store->bo = dri_bo_alloc(i965->intel.bufmgr, "Bogus buffer",
- 64, 64);
- else
- buffer_store->bo = dri_bo_alloc(i965->intel.bufmgr,
- "Buffer",
- size * num_elements, 64);
- assert(buffer_store->bo);
-
- /* If the buffer is wrapped, the bo/buffer of buffer_store is bogus.
- * In fact it can be skipped. But it is still allocated and it is
- * only to follow the normal flowchart of buffer_allocation/release.
- */
- if (!wrapper_flag) {
- if (type == VAEncCodedBufferType) {
- struct i965_coded_buffer_segment *coded_buffer_segment;
-
- dri_bo_map(buffer_store->bo, 1);
- coded_buffer_segment = (struct i965_coded_buffer_segment *)buffer_store->bo->virtual;
- coded_buffer_segment->base.size = size - I965_CODEDBUFFER_HEADER_SIZE;
- coded_buffer_segment->base.bit_offset = 0;
- coded_buffer_segment->base.status = 0;
- coded_buffer_segment->base.buf = NULL;
- coded_buffer_segment->base.next = NULL;
- coded_buffer_segment->mapped = 0;
- coded_buffer_segment->codec = 0;
- coded_buffer_segment->status_support = 0;
- dri_bo_unmap(buffer_store->bo);
- } else if (data) {
- dri_bo_subdata(buffer_store->bo, 0, size * num_elements, data);
- }
- }
-
- } else {
- int msize = size;
-
- if (type == VAEncPackedHeaderDataBufferType) {
- msize = ALIGN(size, 4);
- }
-
- /* If the buffer is wrapped, it is enough to allocate 4 bytes */
- if (wrapper_flag)
- buffer_store->buffer = malloc(4);
- else
- buffer_store->buffer = malloc(msize * num_elements);
- assert(buffer_store->buffer);
-
- if (!wrapper_flag) {
- if (data)
- memcpy(buffer_store->buffer, data, size * num_elements);
- else
- memset(buffer_store->buffer, 0, size * num_elements);
- }
- }
-
- buffer_store->num_elements = obj_buffer->num_elements;
- i965_reference_buffer_store(&obj_buffer->buffer_store, buffer_store);
- i965_release_buffer_store(&buffer_store);
- *buf_id = bufferID;
-
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus
-i965_CreateBuffer(VADriverContextP ctx,
- VAContextID context, /* in */
- VABufferType type, /* in */
- unsigned int size, /* in */
- unsigned int num_elements, /* in */
- void *data, /* in */
- VABufferID *buf_id) /* out */
-{
- return i965_create_buffer_internal(ctx, context, type, size, num_elements, data, NULL, buf_id);
-}
-
-
-VAStatus
-i965_BufferSetNumElements(VADriverContextP ctx,
- VABufferID buf_id, /* in */
- unsigned int num_elements) /* in */
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_buffer *obj_buffer = BUFFER(buf_id);
- VAStatus vaStatus = VA_STATUS_SUCCESS;
-
- ASSERT_RET(obj_buffer, VA_STATUS_ERROR_INVALID_BUFFER);
-
- /* When the wrapper_buffer exists, it will wrapper to the
- * buffer allocated from backend driver.
- */
- if ((obj_buffer->wrapper_buffer != VA_INVALID_ID) &&
- i965->wrapper_pdrvctx) {
- VADriverContextP pdrvctx = i965->wrapper_pdrvctx;
-
- CALL_VTABLE(pdrvctx, vaStatus,
- vaBufferSetNumElements(pdrvctx, obj_buffer->wrapper_buffer,
- num_elements));
- return vaStatus;
- }
-
- if ((num_elements < 0) ||
- (num_elements > obj_buffer->max_num_elements)) {
- vaStatus = VA_STATUS_ERROR_MAX_NUM_EXCEEDED;
- } else {
- obj_buffer->num_elements = num_elements;
- if (obj_buffer->buffer_store != NULL) {
- obj_buffer->buffer_store->num_elements = num_elements;
- }
- }
-
- return vaStatus;
-}
-
-VAStatus
-i965_MapBuffer(VADriverContextP ctx,
- VABufferID buf_id, /* in */
- void **pbuf) /* out */
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_buffer *obj_buffer = BUFFER(buf_id);
- VAStatus vaStatus = VA_STATUS_ERROR_UNKNOWN;
- struct object_context *obj_context;
-
- ASSERT_RET(obj_buffer && obj_buffer->buffer_store, VA_STATUS_ERROR_INVALID_BUFFER);
-
- obj_context = CONTEXT(obj_buffer->context_id);
-
- /* When the wrapper_buffer exists, it will wrapper to the
- * buffer allocated from backend driver.
- */
- if ((obj_buffer->wrapper_buffer != VA_INVALID_ID) &&
- i965->wrapper_pdrvctx) {
- VADriverContextP pdrvctx = i965->wrapper_pdrvctx;
-
- CALL_VTABLE(pdrvctx, vaStatus,
- vaMapBuffer(pdrvctx, obj_buffer->wrapper_buffer, pbuf));
- return vaStatus;
- }
-
- ASSERT_RET(obj_buffer->buffer_store->bo || obj_buffer->buffer_store->buffer, VA_STATUS_ERROR_INVALID_BUFFER);
- ASSERT_RET(!(obj_buffer->buffer_store->bo && obj_buffer->buffer_store->buffer), VA_STATUS_ERROR_INVALID_BUFFER);
-
- if (obj_buffer->export_refcount > 0)
- return VA_STATUS_ERROR_INVALID_BUFFER;
-
- if (NULL != obj_buffer->buffer_store->bo) {
- unsigned int tiling, swizzle;
-
- dri_bo_get_tiling(obj_buffer->buffer_store->bo, &tiling, &swizzle);
-
- if (tiling != I915_TILING_NONE)
- drm_intel_gem_bo_map_gtt(obj_buffer->buffer_store->bo);
- else
- dri_bo_map(obj_buffer->buffer_store->bo, 1);
-
- ASSERT_RET(obj_buffer->buffer_store->bo->virtual, VA_STATUS_ERROR_OPERATION_FAILED);
- *pbuf = obj_buffer->buffer_store->bo->virtual;
- vaStatus = VA_STATUS_SUCCESS;
-
- if (obj_buffer->type == VAEncCodedBufferType) {
- int i;
- unsigned char *buffer = NULL;
- unsigned int header_offset = I965_CODEDBUFFER_HEADER_SIZE;
- struct i965_coded_buffer_segment *coded_buffer_segment = (struct i965_coded_buffer_segment *)(obj_buffer->buffer_store->bo->virtual);
-
- if (!coded_buffer_segment->mapped) {
- unsigned char delimiter0, delimiter1, delimiter2, delimiter3, delimiter4;
-
- coded_buffer_segment->base.buf = buffer = (unsigned char *)(obj_buffer->buffer_store->bo->virtual) + I965_CODEDBUFFER_HEADER_SIZE;
-
- if (obj_context &&
- obj_context->hw_context &&
- obj_context->hw_context->get_status &&
- coded_buffer_segment->status_support) {
- vaStatus = obj_context->hw_context->get_status(ctx, obj_context->hw_context, coded_buffer_segment);
- } else {
- if (coded_buffer_segment->codec == CODEC_H264 ||
- coded_buffer_segment->codec == CODEC_H264_MVC) {
- delimiter0 = H264_DELIMITER0;
- delimiter1 = H264_DELIMITER1;
- delimiter2 = H264_DELIMITER2;
- delimiter3 = H264_DELIMITER3;
- delimiter4 = H264_DELIMITER4;
- } else if (coded_buffer_segment->codec == CODEC_MPEG2) {
- delimiter0 = MPEG2_DELIMITER0;
- delimiter1 = MPEG2_DELIMITER1;
- delimiter2 = MPEG2_DELIMITER2;
- delimiter3 = MPEG2_DELIMITER3;
- delimiter4 = MPEG2_DELIMITER4;
- } else if(coded_buffer_segment->codec == CODEC_JPEG) {
- //In JPEG End of Image (EOI = 0xDDF9) marker can be used for delimiter.
- delimiter0 = 0xFF;
- delimiter1 = 0xD9;
- } else if (coded_buffer_segment->codec == CODEC_HEVC) {
- delimiter0 = HEVC_DELIMITER0;
- delimiter1 = HEVC_DELIMITER1;
- delimiter2 = HEVC_DELIMITER2;
- delimiter3 = HEVC_DELIMITER3;
- delimiter4 = HEVC_DELIMITER4;
- } else if (coded_buffer_segment->codec != CODEC_VP8) {
- ASSERT_RET(0, VA_STATUS_ERROR_UNSUPPORTED_PROFILE);
- }
-
- if(coded_buffer_segment->codec == CODEC_JPEG) {
- for(i = 0; i < obj_buffer->size_element - header_offset - 1 - 0x1000; i++) {
- if( (buffer[i] == 0xFF) && (buffer[i + 1] == 0xD9)) {
- break;
- }
- }
- coded_buffer_segment->base.size = i + 2;
- } else if (coded_buffer_segment->codec != CODEC_VP8) {
- /* vp8 coded buffer size can be told by vp8 internal statistics buffer,
- so it don't need to traversal the coded buffer */
- for (i = 0; i < obj_buffer->size_element - header_offset - 3 - 0x1000; i++) {
- if ((buffer[i] == delimiter0) &&
- (buffer[i + 1] == delimiter1) &&
- (buffer[i + 2] == delimiter2) &&
- (buffer[i + 3] == delimiter3) &&
- (buffer[i + 4] == delimiter4))
- break;
- }
-
- if (i == obj_buffer->size_element - header_offset - 3 - 0x1000) {
- coded_buffer_segment->base.status |= VA_CODED_BUF_STATUS_SLICE_OVERFLOW_MASK;
- }
- coded_buffer_segment->base.size = i;
- }
-
- if (coded_buffer_segment->base.size >= obj_buffer->size_element - header_offset - 0x1000) {
- coded_buffer_segment->base.status |= VA_CODED_BUF_STATUS_SLICE_OVERFLOW_MASK;
- }
-
- vaStatus = VA_STATUS_SUCCESS;
- }
-
- coded_buffer_segment->mapped = 1;
- } else {
- assert(coded_buffer_segment->base.buf);
- vaStatus = VA_STATUS_SUCCESS;
- }
- }
- } else if (NULL != obj_buffer->buffer_store->buffer) {
- *pbuf = obj_buffer->buffer_store->buffer;
- vaStatus = VA_STATUS_SUCCESS;
- }
-
- return vaStatus;
-}
-
-VAStatus
-i965_UnmapBuffer(VADriverContextP ctx, VABufferID buf_id)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_buffer *obj_buffer = BUFFER(buf_id);
- VAStatus vaStatus = VA_STATUS_ERROR_UNKNOWN;
-
- if ((buf_id & OBJECT_HEAP_OFFSET_MASK) != BUFFER_ID_OFFSET)
- return VA_STATUS_ERROR_INVALID_BUFFER;
-
- ASSERT_RET(obj_buffer && obj_buffer->buffer_store, VA_STATUS_ERROR_INVALID_BUFFER);
- /* When the wrapper_buffer exists, it will wrapper to the
- * buffer allocated from backend driver.
- */
- if ((obj_buffer->wrapper_buffer != VA_INVALID_ID) &&
- i965->wrapper_pdrvctx) {
- VADriverContextP pdrvctx = i965->wrapper_pdrvctx;
-
- CALL_VTABLE(pdrvctx, vaStatus,
- vaUnmapBuffer(pdrvctx, obj_buffer->wrapper_buffer));
- return vaStatus;
- }
-
- ASSERT_RET(obj_buffer->buffer_store->bo || obj_buffer->buffer_store->buffer, VA_STATUS_ERROR_OPERATION_FAILED);
- ASSERT_RET(!(obj_buffer->buffer_store->bo && obj_buffer->buffer_store->buffer), VA_STATUS_ERROR_OPERATION_FAILED);
-
- if (NULL != obj_buffer->buffer_store->bo) {
- unsigned int tiling, swizzle;
-
- dri_bo_get_tiling(obj_buffer->buffer_store->bo, &tiling, &swizzle);
-
- if (tiling != I915_TILING_NONE)
- drm_intel_gem_bo_unmap_gtt(obj_buffer->buffer_store->bo);
- else
- dri_bo_unmap(obj_buffer->buffer_store->bo);
-
- vaStatus = VA_STATUS_SUCCESS;
- } else if (NULL != obj_buffer->buffer_store->buffer) {
- /* Do nothing */
- vaStatus = VA_STATUS_SUCCESS;
- }
-
- return vaStatus;
-}
-
-VAStatus
-i965_DestroyBuffer(VADriverContextP ctx, VABufferID buffer_id)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_buffer *obj_buffer = BUFFER(buffer_id);
- VAStatus va_status = VA_STATUS_SUCCESS;
-
- ASSERT_RET(obj_buffer, VA_STATUS_ERROR_INVALID_BUFFER);
-
- if ((obj_buffer->wrapper_buffer != VA_INVALID_ID) &&
- i965->wrapper_pdrvctx) {
- CALL_VTABLE(i965->wrapper_pdrvctx, va_status,
- vaDestroyBuffer(i965->wrapper_pdrvctx,
- obj_buffer->wrapper_buffer));
- obj_buffer->wrapper_buffer = VA_INVALID_ID;
- }
-
- i965_destroy_buffer(&i965->buffer_heap, (struct object_base *)obj_buffer);
-
- return va_status;
-}
-
-VAStatus
-i965_BeginPicture(VADriverContextP ctx,
- VAContextID context,
- VASurfaceID render_target)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_context *obj_context = CONTEXT(context);
- struct object_surface *obj_surface = SURFACE(render_target);
- struct object_config *obj_config;
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- int i, j;
-
- ASSERT_RET(obj_context, VA_STATUS_ERROR_INVALID_CONTEXT);
- ASSERT_RET(obj_surface, VA_STATUS_ERROR_INVALID_SURFACE);
- obj_config = obj_context->obj_config;
- ASSERT_RET(obj_config, VA_STATUS_ERROR_INVALID_CONFIG);
-
- if (is_surface_busy(i965, obj_surface))
- return VA_STATUS_ERROR_SURFACE_BUSY;
-
- if (obj_context->codec_type == CODEC_PROC) {
- obj_context->codec_state.proc.current_render_target = render_target;
- } else if (obj_context->codec_type == CODEC_ENC) {
- /* ext */
- i965_release_buffer_store(&obj_context->codec_state.encode.pic_param_ext);
-
- for (i = 0; i < ARRAY_ELEMS(obj_context->codec_state.encode.packed_header_param); i++)
- i965_release_buffer_store(&obj_context->codec_state.encode.packed_header_param[i]);
-
- for (i = 0; i < ARRAY_ELEMS(obj_context->codec_state.encode.packed_header_data); i++)
- i965_release_buffer_store(&obj_context->codec_state.encode.packed_header_data[i]);
-
- for (i = 0; i < obj_context->codec_state.encode.num_slice_params_ext; i++)
- i965_release_buffer_store(&obj_context->codec_state.encode.slice_params_ext[i]);
-
- obj_context->codec_state.encode.num_slice_params_ext = 0;
- obj_context->codec_state.encode.current_render_target = render_target; /*This is input new frame*/
- obj_context->codec_state.encode.last_packed_header_type = 0;
- memset(obj_context->codec_state.encode.slice_rawdata_index, 0,
- sizeof(int) * obj_context->codec_state.encode.max_slice_num);
- memset(obj_context->codec_state.encode.slice_rawdata_count, 0,
- sizeof(int) * obj_context->codec_state.encode.max_slice_num);
- memset(obj_context->codec_state.encode.slice_header_index, 0,
- sizeof(int) * obj_context->codec_state.encode.max_slice_num);
-
- for (i = 0; i < obj_context->codec_state.encode.num_packed_header_params_ext; i++)
- i965_release_buffer_store(&obj_context->codec_state.encode.packed_header_params_ext[i]);
- for (i = 0; i < obj_context->codec_state.encode.num_packed_header_data_ext; i++)
- i965_release_buffer_store(&obj_context->codec_state.encode.packed_header_data_ext[i]);
- obj_context->codec_state.encode.num_packed_header_params_ext = 0;
- obj_context->codec_state.encode.num_packed_header_data_ext = 0;
- obj_context->codec_state.encode.slice_index = 0;
- obj_context->codec_state.encode.vps_sps_seq_index = 0;
-
- for (i = 0; i < ARRAY_ELEMS(obj_context->codec_state.encode.misc_param); i++)
- for (j = 0; j < ARRAY_ELEMS(obj_context->codec_state.encode.misc_param[0]); j++)
- i965_release_buffer_store(&obj_context->codec_state.encode.misc_param[i][j]);
-
- i965_release_buffer_store(&obj_context->codec_state.encode.encmb_map);
- } else {
- obj_context->codec_state.decode.current_render_target = render_target;
- i965_release_buffer_store(&obj_context->codec_state.decode.pic_param);
- i965_release_buffer_store(&obj_context->codec_state.decode.iq_matrix);
- i965_release_buffer_store(&obj_context->codec_state.decode.bit_plane);
- i965_release_buffer_store(&obj_context->codec_state.decode.huffman_table);
-
- for (i = 0; i < obj_context->codec_state.decode.num_slice_params; i++) {
- i965_release_buffer_store(&obj_context->codec_state.decode.slice_params[i]);
- i965_release_buffer_store(&obj_context->codec_state.decode.slice_datas[i]);
- }
-
- obj_context->codec_state.decode.num_slice_params = 0;
- obj_context->codec_state.decode.num_slice_datas = 0;
-
- if ((obj_context->wrapper_context != VA_INVALID_ID) &&
- i965->wrapper_pdrvctx) {
- if (obj_surface->wrapper_surface == VA_INVALID_ID)
- vaStatus = i965_surface_wrapper(ctx, render_target);
-
- if (vaStatus != VA_STATUS_SUCCESS)
- return vaStatus;
-
- CALL_VTABLE(i965->wrapper_pdrvctx, vaStatus,
- vaBeginPicture(i965->wrapper_pdrvctx,
- obj_context->wrapper_context,
- obj_surface->wrapper_surface));
- }
- }
-
- return vaStatus;
-}
-
-#define I965_RENDER_BUFFER(category, name) i965_render_##category##_##name##_buffer(ctx, obj_context, obj_buffer)
-
-#define DEF_RENDER_SINGLE_BUFFER_FUNC(category, name, member) \
- static VAStatus \
- i965_render_##category##_##name##_buffer(VADriverContextP ctx, \
- struct object_context *obj_context, \
- struct object_buffer *obj_buffer) \
- { \
- struct category##_state *category = &obj_context->codec_state.category; \
- i965_release_buffer_store(&category->member); \
- i965_reference_buffer_store(&category->member, obj_buffer->buffer_store); \
- return VA_STATUS_SUCCESS; \
- }
-
-#define DEF_RENDER_MULTI_BUFFER_FUNC(category, name, member) \
- static VAStatus \
- i965_render_##category##_##name##_buffer(VADriverContextP ctx, \
- struct object_context *obj_context, \
- struct object_buffer *obj_buffer) \
- { \
- struct category##_state *category = &obj_context->codec_state.category; \
- if (category->num_##member == category->max_##member) { \
- category->member = realloc(category->member, (category->max_##member + NUM_SLICES) * sizeof(*category->member)); \
- memset(category->member + category->max_##member, 0, NUM_SLICES * sizeof(*category->member)); \
- category->max_##member += NUM_SLICES; \
- } \
- i965_release_buffer_store(&category->member[category->num_##member]); \
- i965_reference_buffer_store(&category->member[category->num_##member], obj_buffer->buffer_store); \
- category->num_##member++; \
- return VA_STATUS_SUCCESS; \
- }
-
-#define I965_RENDER_DECODE_BUFFER(name) I965_RENDER_BUFFER(decode, name)
-
-#define DEF_RENDER_DECODE_SINGLE_BUFFER_FUNC(name, member) DEF_RENDER_SINGLE_BUFFER_FUNC(decode, name, member)
-DEF_RENDER_DECODE_SINGLE_BUFFER_FUNC(picture_parameter, pic_param)
-DEF_RENDER_DECODE_SINGLE_BUFFER_FUNC(iq_matrix, iq_matrix)
-DEF_RENDER_DECODE_SINGLE_BUFFER_FUNC(bit_plane, bit_plane)
-DEF_RENDER_DECODE_SINGLE_BUFFER_FUNC(huffman_table, huffman_table)
-DEF_RENDER_DECODE_SINGLE_BUFFER_FUNC(probability_data, probability_data)
-
-#define DEF_RENDER_DECODE_MULTI_BUFFER_FUNC(name, member) DEF_RENDER_MULTI_BUFFER_FUNC(decode, name, member)
-DEF_RENDER_DECODE_MULTI_BUFFER_FUNC(slice_parameter, slice_params)
-DEF_RENDER_DECODE_MULTI_BUFFER_FUNC(slice_data, slice_datas)
-
-
-static VAStatus
-i965_decoder_vp9_wrapper_picture(VADriverContextP ctx,
- VABufferID *buffers,
- int num_buffers)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- int i;
- VADecPictureParameterBufferVP9 *pVp9PicParams;
- VADriverContextP pdrvctx;
- struct object_buffer *obj_buffer;
-
- pdrvctx = i965->wrapper_pdrvctx;
- /* do the conversion of VADecPictureParameterBufferVP9 */
- for (i = 0; i < num_buffers; i++) {
- obj_buffer = BUFFER(buffers[i]);
-
- if (!obj_buffer)
- continue;
-
- if (obj_buffer->wrapper_buffer == VA_INVALID_ID)
- continue;
-
- if (obj_buffer->type == VAPictureParameterBufferType) {
- int j;
- VASurfaceID surface_id;
- struct object_surface *obj_surface;
-
- pdrvctx = i965->wrapper_pdrvctx;
-
- CALL_VTABLE(pdrvctx, vaStatus,
- vaMapBuffer(pdrvctx, obj_buffer->wrapper_buffer,
- (void **)(&pVp9PicParams)));
-
- if (vaStatus != VA_STATUS_SUCCESS)
- return vaStatus;
-
- for (j = 0; j < 8; j++) {
- surface_id = pVp9PicParams->reference_frames[j];
- obj_surface = SURFACE(surface_id);
-
- if (!obj_surface)
- continue;
-
- if (obj_surface->wrapper_surface == VA_INVALID_ID) {
- vaStatus = i965_surface_wrapper(ctx, surface_id);
- if (vaStatus != VA_STATUS_SUCCESS) {
- pdrvctx->vtable->vaUnmapBuffer(pdrvctx,
- obj_buffer->wrapper_buffer);
- goto fail_out;
- }
- }
-
- pVp9PicParams->reference_frames[j] = obj_surface->wrapper_surface;
- }
- CALL_VTABLE(pdrvctx, vaStatus,
- vaUnmapBuffer(pdrvctx, obj_buffer->wrapper_buffer));
- break;
- }
- }
-
- return VA_STATUS_SUCCESS;
-
-fail_out:
- return vaStatus;
-}
-
-static VAStatus
-i965_decoder_wrapper_picture(VADriverContextP ctx,
- VAContextID context,
- VABufferID *buffers,
- int num_buffers)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_context *obj_context = CONTEXT(context);
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- int i;
- VADriverContextP pdrvctx;
- struct object_buffer *obj_buffer;
-
- if (obj_context == NULL)
- return VA_STATUS_ERROR_INVALID_CONTEXT;
-
- /* When it is not wrapped context, continue the normal flowchart */
- if (obj_context->wrapper_context == VA_INVALID_ID)
- return vaStatus;
-
- if (obj_context->obj_config &&
- (obj_context->obj_config->profile == VAProfileVP9Profile0)) {
- vaStatus = i965_decoder_vp9_wrapper_picture(ctx, buffers, num_buffers);
- } else
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- pdrvctx = i965->wrapper_pdrvctx;
-
- for (i = 0; i < num_buffers && vaStatus == VA_STATUS_SUCCESS; i++) {
- obj_buffer = BUFFER(buffers[i]);
-
- if (!obj_buffer)
- continue;
-
- if (obj_buffer->wrapper_buffer == VA_INVALID_ID) {
- vaStatus = VA_STATUS_ERROR_INVALID_BUFFER;
- break;
- }
-
- CALL_VTABLE(pdrvctx, vaStatus,
- vaRenderPicture(pdrvctx, obj_context->wrapper_context,
- &(obj_buffer->wrapper_buffer), 1));
- }
- return vaStatus;
-}
-
-static VAStatus
-i965_decoder_render_picture(VADriverContextP ctx,
- VAContextID context,
- VABufferID *buffers,
- int num_buffers)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_context *obj_context = CONTEXT(context);
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- int i;
-
- ASSERT_RET(obj_context, VA_STATUS_ERROR_INVALID_CONTEXT);
-
- for (i = 0; i < num_buffers && vaStatus == VA_STATUS_SUCCESS; i++) {
- struct object_buffer *obj_buffer = BUFFER(buffers[i]);
-
- if (!obj_buffer)
- return VA_STATUS_ERROR_INVALID_BUFFER;
-
- switch (obj_buffer->type) {
- case VAPictureParameterBufferType:
- vaStatus = I965_RENDER_DECODE_BUFFER(picture_parameter);
- break;
-
- case VAIQMatrixBufferType:
- vaStatus = I965_RENDER_DECODE_BUFFER(iq_matrix);
- break;
-
- case VABitPlaneBufferType:
- vaStatus = I965_RENDER_DECODE_BUFFER(bit_plane);
- break;
-
- case VASliceParameterBufferType:
- vaStatus = I965_RENDER_DECODE_BUFFER(slice_parameter);
- break;
-
- case VASliceDataBufferType:
- vaStatus = I965_RENDER_DECODE_BUFFER(slice_data);
- break;
-
- case VAHuffmanTableBufferType:
- vaStatus = I965_RENDER_DECODE_BUFFER(huffman_table);
- break;
-
- case VAProbabilityBufferType:
- vaStatus = I965_RENDER_DECODE_BUFFER(probability_data);
- break;
-
- default:
- vaStatus = VA_STATUS_ERROR_UNSUPPORTED_BUFFERTYPE;
- break;
- }
- }
-
- if ((vaStatus == VA_STATUS_SUCCESS) &&
- (obj_context->wrapper_context != VA_INVALID_ID))
- vaStatus = i965_decoder_wrapper_picture(ctx, context, buffers, num_buffers);
-
- return vaStatus;
-}
-
-#define I965_RENDER_ENCODE_BUFFER(name) I965_RENDER_BUFFER(encode, name)
-
-#define DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(name, member) DEF_RENDER_SINGLE_BUFFER_FUNC(encode, name, member)
-// DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(sequence_parameter, seq_param)
-// DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(picture_parameter, pic_param)
-// DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(picture_control, pic_control)
-DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(qmatrix, q_matrix)
-DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(iqmatrix, iq_matrix)
-DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(huffman_table, huffman_table)
-/* extended buffer */
-DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(sequence_parameter_ext, seq_param_ext)
-DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(picture_parameter_ext, pic_param_ext)
-DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(encmb_map, encmb_map)
-
-#define DEF_RENDER_ENCODE_MULTI_BUFFER_FUNC(name, member) DEF_RENDER_MULTI_BUFFER_FUNC(encode, name, member)
-// DEF_RENDER_ENCODE_MULTI_BUFFER_FUNC(slice_parameter, slice_params)
-DEF_RENDER_ENCODE_MULTI_BUFFER_FUNC(slice_parameter_ext, slice_params_ext)
-
-DEF_RENDER_ENCODE_MULTI_BUFFER_FUNC(packed_header_params_ext, packed_header_params_ext)
-DEF_RENDER_ENCODE_MULTI_BUFFER_FUNC(packed_header_data_ext, packed_header_data_ext)
-
-static VAStatus
-i965_encoder_render_packed_header_parameter_buffer(VADriverContextP ctx,
- struct object_context *obj_context,
- struct object_buffer *obj_buffer,
- int type_index)
-{
- struct encode_state *encode = &obj_context->codec_state.encode;
-
- ASSERT_RET(obj_buffer->buffer_store->bo == NULL, VA_STATUS_ERROR_INVALID_BUFFER);
- ASSERT_RET(obj_buffer->buffer_store->buffer, VA_STATUS_ERROR_INVALID_BUFFER);
- i965_release_buffer_store(&encode->packed_header_param[type_index]);
- i965_reference_buffer_store(&encode->packed_header_param[type_index], obj_buffer->buffer_store);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-i965_encoder_render_packed_header_data_buffer(VADriverContextP ctx,
- struct object_context *obj_context,
- struct object_buffer *obj_buffer,
- int type_index)
-{
- struct encode_state *encode = &obj_context->codec_state.encode;
-
- ASSERT_RET(obj_buffer->buffer_store->bo == NULL, VA_STATUS_ERROR_INVALID_BUFFER);
- ASSERT_RET(obj_buffer->buffer_store->buffer, VA_STATUS_ERROR_INVALID_BUFFER);
- i965_release_buffer_store(&encode->packed_header_data[type_index]);
- i965_reference_buffer_store(&encode->packed_header_data[type_index], obj_buffer->buffer_store);
-
- return VA_STATUS_SUCCESS;
-}
-
-static int
-i965_encoder_get_misc_paramerter_buffer_index(VADriverContextP ctx,
- struct encode_state *encode,
- VAEncMiscParameterBuffer *misc_param)
-{
- int index = 0;
-
- if (!encode->has_layers)
- return 0;
-
- if (misc_param->type == VAEncMiscParameterTypeRateControl) {
- VAEncMiscParameterRateControl *misc_rate_control = (VAEncMiscParameterRateControl *)misc_param->data;
-
- index = misc_rate_control->rc_flags.bits.temporal_id;
- } else if (misc_param->type == VAEncMiscParameterTypeFrameRate) {
- VAEncMiscParameterFrameRate *misc_frame_rate = (VAEncMiscParameterFrameRate *)misc_param->data;
-
- index = misc_frame_rate->framerate_flags.bits.temporal_id;
- }
-
- return index;
-}
-
-static VAStatus
-i965_encoder_render_misc_parameter_buffer(VADriverContextP ctx,
- struct object_context *obj_context,
- struct object_buffer *obj_buffer)
-{
- struct encode_state *encode = &obj_context->codec_state.encode;
- VAEncMiscParameterBuffer *param = NULL;
- int index;
-
- ASSERT_RET(obj_buffer->buffer_store->bo == NULL, VA_STATUS_ERROR_INVALID_BUFFER);
- ASSERT_RET(obj_buffer->buffer_store->buffer, VA_STATUS_ERROR_INVALID_BUFFER);
-
- param = (VAEncMiscParameterBuffer *)obj_buffer->buffer_store->buffer;
-
- if (param->type >= ARRAY_ELEMS(encode->misc_param))
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- if (param->type == VAEncMiscParameterTypeTemporalLayerStructure)
- encode->has_layers = 1;
-
- index = i965_encoder_get_misc_paramerter_buffer_index(ctx, encode, param);
-
- if (index >= ARRAY_ELEMS(encode->misc_param[0]))
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- i965_release_buffer_store(&encode->misc_param[param->type][index]);
- i965_reference_buffer_store(&encode->misc_param[param->type][index], obj_buffer->buffer_store);
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-i965_encoder_render_picture(VADriverContextP ctx,
- VAContextID context,
- VABufferID *buffers,
- int num_buffers)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_context *obj_context = CONTEXT(context);
- struct object_config *obj_config;
- VAStatus vaStatus = VA_STATUS_ERROR_UNKNOWN;
- struct encode_state *encode;
- int i;
-
- ASSERT_RET(obj_context, VA_STATUS_ERROR_INVALID_CONTEXT);
- obj_config = obj_context->obj_config;
- ASSERT_RET(obj_config, VA_STATUS_ERROR_INVALID_CONFIG);
-
- encode = &obj_context->codec_state.encode;
- for (i = 0; i < num_buffers; i++) {
- struct object_buffer *obj_buffer = BUFFER(buffers[i]);
-
- if (!obj_buffer)
- return VA_STATUS_ERROR_INVALID_BUFFER;
-
- switch (obj_buffer->type) {
- case VAQMatrixBufferType:
- vaStatus = I965_RENDER_ENCODE_BUFFER(qmatrix);
- break;
-
- case VAIQMatrixBufferType:
- vaStatus = I965_RENDER_ENCODE_BUFFER(iqmatrix);
- break;
-
- case VAEncSequenceParameterBufferType:
- vaStatus = I965_RENDER_ENCODE_BUFFER(sequence_parameter_ext);
- break;
-
- case VAEncPictureParameterBufferType:
- vaStatus = I965_RENDER_ENCODE_BUFFER(picture_parameter_ext);
- break;
-
- case VAHuffmanTableBufferType:
- vaStatus = I965_RENDER_ENCODE_BUFFER(huffman_table);
- break;
-
- case VAEncSliceParameterBufferType:
- vaStatus = I965_RENDER_ENCODE_BUFFER(slice_parameter_ext);
- if (vaStatus == VA_STATUS_SUCCESS) {
- /* When the max number of slices is updated, it also needs
- * to reallocate the arrays that is used to store
- * the packed data index/count for the slice
- */
- if (!(encode->packed_header_flag & VA_ENC_PACKED_HEADER_SLICE)) {
- encode->slice_index++;
- }
- if (encode->slice_index == encode->max_slice_num) {
- int slice_num = encode->max_slice_num;
- encode->slice_rawdata_index = realloc(encode->slice_rawdata_index,
- (slice_num + NUM_SLICES) * sizeof(int));
- encode->slice_rawdata_count = realloc(encode->slice_rawdata_count,
- (slice_num + NUM_SLICES) * sizeof(int));
- encode->slice_header_index = realloc(encode->slice_header_index,
- (slice_num + NUM_SLICES) * sizeof(int));
- memset(encode->slice_rawdata_index + slice_num, 0,
- sizeof(int) * NUM_SLICES);
- memset(encode->slice_rawdata_count + slice_num, 0,
- sizeof(int) * NUM_SLICES);
- memset(encode->slice_header_index + slice_num, 0,
- sizeof(int) * NUM_SLICES);
-
- encode->max_slice_num += NUM_SLICES;
- if ((encode->slice_rawdata_index == NULL) ||
- (encode->slice_header_index == NULL) ||
- (encode->slice_rawdata_count == NULL)) {
- vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED;
- return vaStatus;
- }
- }
- }
- break;
-
- case VAEncPackedHeaderParameterBufferType:
- {
- VAEncPackedHeaderParameterBuffer *param = (VAEncPackedHeaderParameterBuffer *)obj_buffer->buffer_store->buffer;
- encode->last_packed_header_type = param->type;
-
- if ((param->type == VAEncPackedHeaderRawData) ||
- (param->type == VAEncPackedHeaderSlice)) {
- vaStatus = I965_RENDER_ENCODE_BUFFER(packed_header_params_ext);
- } else if((obj_config->profile == VAProfileHEVCMain ||
- obj_config->profile == VAProfileHEVCMain10) &&
- (encode->last_packed_header_type == VAEncPackedHeaderSequence)) {
- vaStatus = i965_encoder_render_packed_header_parameter_buffer(ctx,
- obj_context,
- obj_buffer,
- va_enc_packed_type_to_idx(encode->last_packed_header_type) + encode->vps_sps_seq_index);
- } else {
- vaStatus = i965_encoder_render_packed_header_parameter_buffer(ctx,
- obj_context,
- obj_buffer,
- va_enc_packed_type_to_idx(encode->last_packed_header_type));
- }
- break;
- }
-
- case VAEncPackedHeaderDataBufferType:
- {
- if (encode->last_packed_header_type == 0) {
- WARN_ONCE("the packed header data is passed without type!\n");
- vaStatus = VA_STATUS_ERROR_INVALID_PARAMETER;
- return vaStatus;
- }
-
- if (encode->last_packed_header_type == VAEncPackedHeaderRawData ||
- encode->last_packed_header_type == VAEncPackedHeaderSlice) {
- vaStatus = I965_RENDER_ENCODE_BUFFER(packed_header_data_ext);
-
- if (obj_config->profile == VAProfileVP9Profile0)
- break;
-
- /* When the PACKED_SLICE_HEADER flag is passed, it will use
- * the packed_slice_header as the delimeter to decide how
- * the packed rawdata is inserted for the given slice.
- * Otherwise it will use the VAEncSequenceParameterBuffer
- * as the delimeter
- */
- if (encode->packed_header_flag & VA_ENC_PACKED_HEADER_SLICE) {
- /* store the first index of the packed header data for current slice */
- if (encode->slice_rawdata_index[encode->slice_index] == 0) {
- encode->slice_rawdata_index[encode->slice_index] =
- SLICE_PACKED_DATA_INDEX_TYPE | (encode->num_packed_header_data_ext - 1);
- }
- encode->slice_rawdata_count[encode->slice_index]++;
- if (encode->last_packed_header_type == VAEncPackedHeaderSlice) {
- /* find one packed slice_header delimeter. And the following
- * packed data is for the next slice
- */
- encode->slice_header_index[encode->slice_index] =
- SLICE_PACKED_DATA_INDEX_TYPE | (encode->num_packed_header_data_ext - 1);
- encode->slice_index++;
- /* Reallocate the buffer to record the index/count of
- * packed_data for one slice.
- */
- if (encode->slice_index == encode->max_slice_num) {
- int slice_num = encode->max_slice_num;
-
- encode->slice_rawdata_index = realloc(encode->slice_rawdata_index,
- (slice_num + NUM_SLICES) * sizeof(int));
- encode->slice_rawdata_count = realloc(encode->slice_rawdata_count,
- (slice_num + NUM_SLICES) * sizeof(int));
- encode->slice_header_index = realloc(encode->slice_header_index,
- (slice_num + NUM_SLICES) * sizeof(int));
- memset(encode->slice_rawdata_index + slice_num, 0,
- sizeof(int) * NUM_SLICES);
- memset(encode->slice_rawdata_count + slice_num, 0,
- sizeof(int) * NUM_SLICES);
- memset(encode->slice_header_index + slice_num, 0,
- sizeof(int) * NUM_SLICES);
- encode->max_slice_num += NUM_SLICES;
- }
- }
- } else {
- if (vaStatus == VA_STATUS_SUCCESS) {
- /* store the first index of the packed header data for current slice */
- if (encode->slice_rawdata_index[encode->slice_index] == 0) {
- encode->slice_rawdata_index[encode->slice_index] =
- SLICE_PACKED_DATA_INDEX_TYPE | (encode->num_packed_header_data_ext - 1);
- }
- encode->slice_rawdata_count[encode->slice_index]++;
- if (encode->last_packed_header_type == VAEncPackedHeaderSlice) {
- if (encode->slice_header_index[encode->slice_index] == 0) {
- encode->slice_header_index[encode->slice_index] =
- SLICE_PACKED_DATA_INDEX_TYPE | (encode->num_packed_header_data_ext - 1);
- } else {
- WARN_ONCE("Multi slice header data is passed for"
- " slice %d!\n", encode->slice_index);
- }
- }
- }
- }
- } else {
- ASSERT_RET(encode->last_packed_header_type == VAEncPackedHeaderSequence ||
- encode->last_packed_header_type == VAEncPackedHeaderPicture ||
- encode->last_packed_header_type == VAEncPackedHeaderSlice ||
- (((encode->last_packed_header_type & VAEncPackedHeaderMiscMask) == VAEncPackedHeaderMiscMask) &&
- ((encode->last_packed_header_type & (~VAEncPackedHeaderMiscMask)) != 0)),
- VA_STATUS_ERROR_ENCODING_ERROR);
-
- if((obj_config->profile == VAProfileHEVCMain ||
- obj_config->profile == VAProfileHEVCMain10) &&
- (encode->last_packed_header_type == VAEncPackedHeaderSequence)) {
-
- vaStatus = i965_encoder_render_packed_header_data_buffer(ctx,
- obj_context,
- obj_buffer,
- va_enc_packed_type_to_idx(encode->last_packed_header_type) + encode->vps_sps_seq_index);
- encode->vps_sps_seq_index = (encode->vps_sps_seq_index + 1) % I965_SEQ_PACKED_HEADER_END;
- }else{
- vaStatus = i965_encoder_render_packed_header_data_buffer(ctx,
- obj_context,
- obj_buffer,
- va_enc_packed_type_to_idx(encode->last_packed_header_type));
-
- }
- }
- encode->last_packed_header_type = 0;
- break;
- }
-
- case VAEncMiscParameterBufferType:
- vaStatus = i965_encoder_render_misc_parameter_buffer(ctx,
- obj_context,
- obj_buffer);
- break;
-
- case VAEncMacroblockMapBufferType:
- vaStatus = I965_RENDER_ENCODE_BUFFER(encmb_map);
- break;
-
- default:
- vaStatus = VA_STATUS_ERROR_UNSUPPORTED_BUFFERTYPE;
- break;
- }
- }
-
- return vaStatus;
-}
-
-#define I965_RENDER_PROC_BUFFER(name) I965_RENDER_BUFFER(proc, name)
-
-#define DEF_RENDER_PROC_SINGLE_BUFFER_FUNC(name, member) DEF_RENDER_SINGLE_BUFFER_FUNC(proc, name, member)
-DEF_RENDER_PROC_SINGLE_BUFFER_FUNC(pipeline_parameter, pipeline_param)
-
-static VAStatus
-i965_proc_render_picture(VADriverContextP ctx,
- VAContextID context,
- VABufferID *buffers,
- int num_buffers)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_context *obj_context = CONTEXT(context);
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- int i;
-
- ASSERT_RET(obj_context, VA_STATUS_ERROR_INVALID_CONTEXT);
-
- for (i = 0; i < num_buffers && vaStatus == VA_STATUS_SUCCESS; i++) {
- struct object_buffer *obj_buffer = BUFFER(buffers[i]);
-
- if (!obj_buffer)
- return VA_STATUS_ERROR_INVALID_BUFFER;
-
- switch (obj_buffer->type) {
- case VAProcPipelineParameterBufferType:
- vaStatus = I965_RENDER_PROC_BUFFER(pipeline_parameter);
- break;
-
- default:
- vaStatus = VA_STATUS_ERROR_UNSUPPORTED_BUFFERTYPE;
- break;
- }
- }
-
- return vaStatus;
-}
-
-VAStatus
-i965_RenderPicture(VADriverContextP ctx,
- VAContextID context,
- VABufferID *buffers,
- int num_buffers)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_context *obj_context;
- struct object_config *obj_config;
- VAStatus vaStatus = VA_STATUS_ERROR_UNKNOWN;
-
- obj_context = CONTEXT(context);
- ASSERT_RET(obj_context, VA_STATUS_ERROR_INVALID_CONTEXT);
-
- if (num_buffers <= 0)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- obj_config = obj_context->obj_config;
- ASSERT_RET(obj_config, VA_STATUS_ERROR_INVALID_CONFIG);
-
- if (VAEntrypointVideoProc == obj_config->entrypoint) {
- vaStatus = i965_proc_render_picture(ctx, context, buffers, num_buffers);
- } else if ((VAEntrypointEncSlice == obj_config->entrypoint ) ||
- (VAEntrypointEncPicture == obj_config->entrypoint) ||
- (VAEntrypointEncSliceLP == obj_config->entrypoint)) {
- vaStatus = i965_encoder_render_picture(ctx, context, buffers, num_buffers);
- } else {
- vaStatus = i965_decoder_render_picture(ctx, context, buffers, num_buffers);
- }
-
- return vaStatus;
-}
-
-VAStatus
-i965_EndPicture(VADriverContextP ctx, VAContextID context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_context *obj_context = CONTEXT(context);
- struct object_config *obj_config;
-
- ASSERT_RET(obj_context, VA_STATUS_ERROR_INVALID_CONTEXT);
- obj_config = obj_context->obj_config;
- ASSERT_RET(obj_config, VA_STATUS_ERROR_INVALID_CONFIG);
-
- if (obj_context->codec_type == CODEC_PROC) {
- ASSERT_RET(VAEntrypointVideoProc == obj_config->entrypoint, VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT);
- } else if (obj_context->codec_type == CODEC_ENC) {
- ASSERT_RET(((VAEntrypointEncSlice == obj_config->entrypoint) ||
- (VAEntrypointEncPicture == obj_config->entrypoint) ||
- (VAEntrypointEncSliceLP == obj_config->entrypoint)),
- VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT);
-
- if (obj_context->codec_state.encode.num_packed_header_params_ext !=
- obj_context->codec_state.encode.num_packed_header_data_ext) {
- WARN_ONCE("the packed header/data is not paired for encoding!\n");
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- }
- if (!obj_context->codec_state.encode.pic_param_ext) {
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- }
- if (!obj_context->codec_state.encode.seq_param_ext &&
- (VAEntrypointEncPicture != obj_config->entrypoint)) {
- /* The seq_param is not mandatory for VP9 encoding */
- if (obj_config->profile != VAProfileVP9Profile0)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- }
- if ((obj_context->codec_state.encode.num_slice_params_ext <=0) &&
- ((obj_config->profile != VAProfileVP8Version0_3) &&
- (obj_config->profile != VAProfileVP9Profile0))) {
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- }
-
- if ((obj_context->codec_state.encode.packed_header_flag & VA_ENC_PACKED_HEADER_SLICE) &&
- (obj_context->codec_state.encode.num_slice_params_ext !=
- obj_context->codec_state.encode.slice_index)) {
- WARN_ONCE("packed slice_header data is missing for some slice"
- " under packed SLICE_HEADER mode\n");
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- }
- } else {
- if (obj_context->codec_state.decode.pic_param == NULL) {
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- }
- if (obj_context->codec_state.decode.num_slice_params <=0) {
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- }
- if (obj_context->codec_state.decode.num_slice_datas <=0) {
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- }
-
- if (obj_context->codec_state.decode.num_slice_params !=
- obj_context->codec_state.decode.num_slice_datas) {
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- }
-
- if (obj_context->wrapper_context != VA_INVALID_ID) {
- /* call the vaEndPicture of wrapped driver */
- VADriverContextP pdrvctx;
- VAStatus va_status;
-
- pdrvctx = i965->wrapper_pdrvctx;
- CALL_VTABLE(pdrvctx, va_status,
- vaEndPicture(pdrvctx, obj_context->wrapper_context));
-
- return va_status;
- }
- }
-
- ASSERT_RET(obj_context->hw_context->run, VA_STATUS_ERROR_OPERATION_FAILED);
- return obj_context->hw_context->run(ctx, obj_config->profile, &obj_context->codec_state, obj_context->hw_context);
-}
-
-VAStatus
-i965_SyncSurface(VADriverContextP ctx,
- VASurfaceID render_target)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface = SURFACE(render_target);
-
- ASSERT_RET(obj_surface, VA_STATUS_ERROR_INVALID_SURFACE);
-
- if(obj_surface->bo)
- drm_intel_bo_wait_rendering(obj_surface->bo);
-
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus
-i965_QuerySurfaceStatus(VADriverContextP ctx,
- VASurfaceID render_target,
- VASurfaceStatus *status) /* out */
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface = SURFACE(render_target);
-
- ASSERT_RET(obj_surface, VA_STATUS_ERROR_INVALID_SURFACE);
-
- if (obj_surface->bo) {
- if (drm_intel_bo_busy(obj_surface->bo)){
- *status = VASurfaceRendering;
- }
- else {
- *status = VASurfaceReady;
- }
- } else {
- *status = VASurfaceReady;
- }
-
- return VA_STATUS_SUCCESS;
-}
-
-static VADisplayAttribute *
-get_display_attribute(VADriverContextP ctx, VADisplayAttribType type)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- unsigned int i;
-
- if (!i965->display_attributes)
- return NULL;
-
- for (i = 0; i < i965->num_display_attributes; i++) {
- if (i965->display_attributes[i].type == type)
- return &i965->display_attributes[i];
- }
- return NULL;
-}
-
-static void
-i965_display_attributes_terminate(VADriverContextP ctx)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
-
- if (i965->display_attributes) {
- free(i965->display_attributes);
- i965->display_attributes = NULL;
- i965->num_display_attributes = 0;
- }
-}
-
-static bool
-i965_display_attributes_init(VADriverContextP ctx)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
-
- i965->num_display_attributes = ARRAY_ELEMS(i965_display_attributes);
- i965->display_attributes = malloc(
- i965->num_display_attributes * sizeof(i965->display_attributes[0]));
- if (!i965->display_attributes)
- goto error;
-
- memcpy(
- i965->display_attributes,
- i965_display_attributes,
- sizeof(i965_display_attributes)
- );
-
- i965->rotation_attrib = get_display_attribute(ctx, VADisplayAttribRotation);
- i965->brightness_attrib = get_display_attribute(ctx, VADisplayAttribBrightness);
- i965->contrast_attrib = get_display_attribute(ctx, VADisplayAttribContrast);
- i965->hue_attrib = get_display_attribute(ctx, VADisplayAttribHue);
- i965->saturation_attrib = get_display_attribute(ctx, VADisplayAttribSaturation);
-
- if (!i965->rotation_attrib ||
- !i965->brightness_attrib ||
- !i965->contrast_attrib ||
- !i965->hue_attrib ||
- !i965->saturation_attrib) {
- goto error;
- }
- return true;
-
-error:
- i965_display_attributes_terminate(ctx);
- return false;
-}
-
-/*
- * Query display attributes
- * The caller must provide a "attr_list" array that can hold at
- * least vaMaxNumDisplayAttributes() entries. The actual number of attributes
- * returned in "attr_list" is returned in "num_attributes".
- */
-VAStatus
-i965_QueryDisplayAttributes(
- VADriverContextP ctx,
- VADisplayAttribute *attribs, /* out */
- int *num_attribs_ptr /* out */
-)
-{
- const int num_attribs = ARRAY_ELEMS(i965_display_attributes);
-
- if (attribs && num_attribs > 0)
- memcpy(attribs, i965_display_attributes, sizeof(i965_display_attributes));
-
- if (num_attribs_ptr)
- *num_attribs_ptr = num_attribs;
-
- return VA_STATUS_SUCCESS;
-}
-
-/*
- * Get display attributes
- * This function returns the current attribute values in "attr_list".
- * Only attributes returned with VA_DISPLAY_ATTRIB_GETTABLE set in the "flags" field
- * from vaQueryDisplayAttributes() can have their values retrieved.
- */
-VAStatus
-i965_GetDisplayAttributes(
- VADriverContextP ctx,
- VADisplayAttribute *attribs, /* inout */
- int num_attribs /* in */
-)
-{
- int i;
-
- for (i = 0; i < num_attribs; i++) {
- VADisplayAttribute *src_attrib, * const dst_attrib = &attribs[i];
-
- src_attrib = get_display_attribute(ctx, dst_attrib->type);
-
- if (src_attrib && (src_attrib->flags & VA_DISPLAY_ATTRIB_GETTABLE)) {
- dst_attrib->min_value = src_attrib->min_value;
- dst_attrib->max_value = src_attrib->max_value;
- dst_attrib->value = src_attrib->value;
- dst_attrib->flags = src_attrib->flags;
- } else if (src_attrib &&
- (src_attrib->flags & VA_DISPLAY_ATTRIB_SETTABLE)) {
- dst_attrib->flags = src_attrib->flags;
- }
- else
- dst_attrib->flags = VA_DISPLAY_ATTRIB_NOT_SUPPORTED;
- }
- return VA_STATUS_SUCCESS;
-}
-
-/*
- * Set display attributes
- * Only attributes returned with VA_DISPLAY_ATTRIB_SETTABLE set in the "flags" field
- * from vaQueryDisplayAttributes() can be set. If the attribute is not settable or
- * the value is out of range, the function returns VA_STATUS_ERROR_ATTR_NOT_SUPPORTED
- */
-VAStatus
-i965_SetDisplayAttributes(
- VADriverContextP ctx,
- VADisplayAttribute *attribs, /* in */
- int num_attribs /* in */
-)
-{
- int i;
-
- for (i = 0; i < num_attribs; i++) {
- VADisplayAttribute *dst_attrib, * const src_attrib = &attribs[i];
-
- dst_attrib = get_display_attribute(ctx, src_attrib->type);
- if (!dst_attrib)
- return VA_STATUS_ERROR_ATTR_NOT_SUPPORTED;
-
- if (!(dst_attrib->flags & VA_DISPLAY_ATTRIB_SETTABLE))
- continue;
-
- if (src_attrib->value < dst_attrib->min_value ||
- src_attrib->value > dst_attrib->max_value)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- dst_attrib->value = src_attrib->value;
- /* XXX: track modified attributes through timestamps */
- }
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus
-i965_DbgCopySurfaceToBuffer(VADriverContextP ctx,
- VASurfaceID surface,
- void **buffer, /* out */
- unsigned int *stride) /* out */
-{
- /* TODO */
- return VA_STATUS_ERROR_UNIMPLEMENTED;
-}
-
-static void
-i965_destroy_heap(struct object_heap *heap,
- void (*func)(struct object_heap *heap, struct object_base *object))
-{
- struct object_base *object;
- object_heap_iterator iter;
-
- object = object_heap_first(heap, &iter);
-
- while (object) {
- if (func)
- func(heap, object);
-
- object = object_heap_next(heap, &iter);
- }
-
- object_heap_destroy(heap);
-}
-
-
-VAStatus
-i965_DestroyImage(VADriverContextP ctx, VAImageID image);
-
-VAStatus
-i965_CreateImage(VADriverContextP ctx,
- VAImageFormat *format,
- int width,
- int height,
- VAImage *out_image) /* out */
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_image *obj_image;
- VAStatus va_status = VA_STATUS_ERROR_OPERATION_FAILED;
- VAImageID image_id;
- unsigned int size2, size, awidth, aheight;
-
- out_image->image_id = VA_INVALID_ID;
- out_image->buf = VA_INVALID_ID;
-
- image_id = NEW_IMAGE_ID();
- if (image_id == VA_INVALID_ID)
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
-
- obj_image = IMAGE(image_id);
- if (!obj_image)
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
- obj_image->bo = NULL;
- obj_image->palette = NULL;
- obj_image->derived_surface = VA_INVALID_ID;
-
- VAImage * const image = &obj_image->image;
- image->image_id = image_id;
- image->buf = VA_INVALID_ID;
-
- awidth = ALIGN(width, i965->codec_info->min_linear_wpitch);
-
- if ((format->fourcc == VA_FOURCC_YV12) ||
- (format->fourcc == VA_FOURCC_I420)) {
- if (awidth % 128 != 0) {
- awidth = ALIGN(width, 128);
- }
- }
-
- aheight = ALIGN(height, i965->codec_info->min_linear_hpitch);
- size = awidth * aheight;
- size2 = (awidth / 2) * (aheight / 2);
-
- image->num_palette_entries = 0;
- image->entry_bytes = 0;
- memset(image->component_order, 0, sizeof(image->component_order));
-
- switch (format->fourcc) {
- case VA_FOURCC_IA44:
- case VA_FOURCC_AI44:
- image->num_planes = 1;
- image->pitches[0] = awidth;
- image->offsets[0] = 0;
- image->data_size = image->offsets[0] + image->pitches[0] * aheight;
- image->num_palette_entries = 16;
- image->entry_bytes = 3;
- image->component_order[0] = 'R';
- image->component_order[1] = 'G';
- image->component_order[2] = 'B';
- break;
- case VA_FOURCC_IA88:
- case VA_FOURCC_AI88:
- image->num_planes = 1;
- image->pitches[0] = awidth * 2;
- image->offsets[0] = 0;
- image->data_size = image->offsets[0] + image->pitches[0] * aheight;
- image->num_palette_entries = 256;
- image->entry_bytes = 3;
- image->component_order[0] = 'R';
- image->component_order[1] = 'G';
- image->component_order[2] = 'B';
- break;
- case VA_FOURCC_ARGB:
- case VA_FOURCC_ABGR:
- case VA_FOURCC_BGRA:
- case VA_FOURCC_RGBA:
- case VA_FOURCC_BGRX:
- case VA_FOURCC_RGBX:
- image->num_planes = 1;
- image->pitches[0] = awidth * 4;
- image->offsets[0] = 0;
- image->data_size = image->offsets[0] + image->pitches[0] * aheight;
- break;
- case VA_FOURCC_YV12:
- image->num_planes = 3;
- image->pitches[0] = awidth;
- image->offsets[0] = 0;
- image->pitches[1] = awidth / 2;
- image->offsets[1] = size;
- image->pitches[2] = awidth / 2;
- image->offsets[2] = size + size2;
- image->data_size = size + 2 * size2;
- break;
- case VA_FOURCC_I420:
- image->num_planes = 3;
- image->pitches[0] = awidth;
- image->offsets[0] = 0;
- image->pitches[1] = awidth / 2;
- image->offsets[1] = size;
- image->pitches[2] = awidth / 2;
- image->offsets[2] = size + size2;
- image->data_size = size + 2 * size2;
- break;
- case VA_FOURCC_422H:
- image->num_planes = 3;
- image->pitches[0] = awidth;
- image->offsets[0] = 0;
- image->pitches[1] = awidth / 2;
- image->offsets[1] = size;
- image->pitches[2] = awidth / 2;
- image->offsets[2] = size + (awidth / 2) * aheight;
- image->data_size = size + 2 * ((awidth / 2) * aheight);
- break;
- case VA_FOURCC_NV12:
- image->num_planes = 2;
- image->pitches[0] = awidth;
- image->offsets[0] = 0;
- image->pitches[1] = awidth;
- image->offsets[1] = size;
- image->data_size = size + 2 * size2;
- break;
- case VA_FOURCC_YUY2:
- case VA_FOURCC_UYVY:
- image->num_planes = 1;
- image->pitches[0] = awidth * 2;
- image->offsets[0] = 0;
- image->data_size = size * 2;
- break;
- case VA_FOURCC_P010:
- image->num_planes = 2;
- image->pitches[0] = awidth * 2;
- image->offsets[0] = 0;
- image->pitches[1] = awidth * 2;
- image->offsets[1] = size * 2;
- image->data_size = size * 2 + 2 * size2 * 2;
- break;
- default:
- goto error;
- }
-
- va_status = i965_CreateBuffer(ctx, 0, VAImageBufferType,
- image->data_size, 1, NULL, &image->buf);
- if (va_status != VA_STATUS_SUCCESS)
- goto error;
-
- struct object_buffer *obj_buffer = BUFFER(image->buf);
-
- if (!obj_buffer ||
- !obj_buffer->buffer_store ||
- !obj_buffer->buffer_store->bo)
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
-
- obj_image->bo = obj_buffer->buffer_store->bo;
- dri_bo_reference(obj_image->bo);
-
- if (image->num_palette_entries > 0 && image->entry_bytes > 0) {
- obj_image->palette = malloc(image->num_palette_entries * sizeof(*obj_image->palette));
- if (!obj_image->palette)
- goto error;
- }
-
- image->image_id = image_id;
- image->format = *format;
- image->width = width;
- image->height = height;
-
- *out_image = *image;
- return VA_STATUS_SUCCESS;
-
- error:
- i965_DestroyImage(ctx, image_id);
- return va_status;
-}
-
-VAStatus
-i965_check_alloc_surface_bo(VADriverContextP ctx,
- struct object_surface *obj_surface,
- int tiled,
- unsigned int fourcc,
- unsigned int subsampling)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- int region_width, region_height;
-
- if (obj_surface->bo) {
- ASSERT_RET(obj_surface->fourcc, VA_STATUS_ERROR_INVALID_SURFACE);
- ASSERT_RET(obj_surface->fourcc == fourcc, VA_STATUS_ERROR_INVALID_SURFACE);
- ASSERT_RET(obj_surface->subsampling == subsampling, VA_STATUS_ERROR_INVALID_SURFACE);
- return VA_STATUS_SUCCESS;
- }
-
- obj_surface->x_cb_offset = 0; /* X offset is always 0 */
- obj_surface->x_cr_offset = 0;
-
- int bpp_1stplane = bpp_1stplane_by_fourcc(fourcc);
-
- if ((tiled && !obj_surface->user_disable_tiling)) {
- ASSERT_RET(fourcc != VA_FOURCC_I420 &&
- fourcc != VA_FOURCC_IYUV &&
- fourcc != VA_FOURCC_YV12,
- VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT);
-
- if (obj_surface->user_h_stride_set) {
- ASSERT_RET(IS_ALIGNED(obj_surface->width, 128), VA_STATUS_ERROR_INVALID_PARAMETER);
- } else
- obj_surface->width = ALIGN(obj_surface->orig_width * bpp_1stplane, 128);
-
- if (obj_surface->user_v_stride_set) {
- ASSERT_RET(IS_ALIGNED(obj_surface->height, 32), VA_STATUS_ERROR_INVALID_PARAMETER);
- }else
- obj_surface->height = ALIGN(obj_surface->orig_height, 32);
-
- region_height = obj_surface->height;
-
- switch (fourcc) {
- case VA_FOURCC_NV12:
- case VA_FOURCC_P010:
- assert(subsampling == SUBSAMPLE_YUV420);
- obj_surface->cb_cr_pitch = obj_surface->width;
- obj_surface->cb_cr_width = obj_surface->orig_width / 2;
- obj_surface->cb_cr_height = obj_surface->orig_height / 2;
- obj_surface->y_cb_offset = obj_surface->height;
- obj_surface->y_cr_offset = obj_surface->height;
- region_width = obj_surface->width;
- region_height = obj_surface->height + ALIGN(obj_surface->cb_cr_height, 32);
-
- break;
-
- case VA_FOURCC_IMC1:
- assert(subsampling == SUBSAMPLE_YUV420);
- obj_surface->cb_cr_pitch = obj_surface->width;
- obj_surface->cb_cr_width = obj_surface->orig_width / 2;
- obj_surface->cb_cr_height = obj_surface->orig_height / 2;
- obj_surface->y_cr_offset = obj_surface->height;
- obj_surface->y_cb_offset = obj_surface->y_cr_offset + ALIGN(obj_surface->cb_cr_height, 32);
- region_width = obj_surface->width;
- region_height = obj_surface->height + ALIGN(obj_surface->cb_cr_height, 32) * 2;
-
- break;
-
- case VA_FOURCC_IMC3:
- assert(subsampling == SUBSAMPLE_YUV420);
- obj_surface->cb_cr_pitch = obj_surface->width;
- obj_surface->cb_cr_width = obj_surface->orig_width / 2;
- obj_surface->cb_cr_height = obj_surface->orig_height / 2;
- obj_surface->y_cb_offset = obj_surface->height;
- obj_surface->y_cr_offset = obj_surface->y_cb_offset + ALIGN(obj_surface->cb_cr_height, 32);
- region_width = obj_surface->width;
- region_height = obj_surface->height + ALIGN(obj_surface->cb_cr_height, 32) * 2;
-
- break;
-
- case VA_FOURCC_422H:
- assert(subsampling == SUBSAMPLE_YUV422H);
- obj_surface->cb_cr_pitch = obj_surface->width;
- obj_surface->cb_cr_width = obj_surface->orig_width / 2;
- obj_surface->cb_cr_height = obj_surface->orig_height;
- obj_surface->y_cb_offset = obj_surface->height;
- obj_surface->y_cr_offset = obj_surface->y_cb_offset + ALIGN(obj_surface->cb_cr_height, 32);
- region_width = obj_surface->width;
- region_height = obj_surface->height + ALIGN(obj_surface->cb_cr_height, 32) * 2;
-
- break;
-
- case VA_FOURCC_422V:
- assert(subsampling == SUBSAMPLE_YUV422V);
- obj_surface->cb_cr_pitch = obj_surface->width;
- obj_surface->cb_cr_width = obj_surface->orig_width;
- obj_surface->cb_cr_height = obj_surface->orig_height / 2;
- obj_surface->y_cb_offset = obj_surface->height;
- obj_surface->y_cr_offset = obj_surface->y_cb_offset + ALIGN(obj_surface->cb_cr_height, 32);
- region_width = obj_surface->width;
- region_height = obj_surface->height + ALIGN(obj_surface->cb_cr_height, 32) * 2;
-
- break;
-
- case VA_FOURCC_411P:
- assert(subsampling == SUBSAMPLE_YUV411);
- obj_surface->cb_cr_pitch = obj_surface->width;
- obj_surface->cb_cr_width = obj_surface->orig_width / 4;
- obj_surface->cb_cr_height = obj_surface->orig_height;
- obj_surface->y_cb_offset = obj_surface->height;
- obj_surface->y_cr_offset = obj_surface->y_cb_offset + ALIGN(obj_surface->cb_cr_height, 32);
- region_width = obj_surface->width;
- region_height = obj_surface->height + ALIGN(obj_surface->cb_cr_height, 32) * 2;
-
- break;
-
- case VA_FOURCC_444P:
- assert(subsampling == SUBSAMPLE_YUV444);
- obj_surface->cb_cr_pitch = obj_surface->width;
- obj_surface->cb_cr_width = obj_surface->orig_width;
- obj_surface->cb_cr_height = obj_surface->orig_height;
- obj_surface->y_cb_offset = obj_surface->height;
- obj_surface->y_cr_offset = obj_surface->y_cb_offset + ALIGN(obj_surface->cb_cr_height, 32);
- region_width = obj_surface->width;
- region_height = obj_surface->height + ALIGN(obj_surface->cb_cr_height, 32) * 2;
-
- break;
-
- case VA_FOURCC_Y800:
- assert(subsampling == SUBSAMPLE_YUV400);
- obj_surface->cb_cr_pitch = 0;
- obj_surface->cb_cr_width = 0;
- obj_surface->cb_cr_height = 0;
- obj_surface->y_cb_offset = 0;
- obj_surface->y_cr_offset = 0;
- region_width = obj_surface->width;
- region_height = obj_surface->height;
-
- break;
-
- case VA_FOURCC_YUY2:
- case VA_FOURCC_UYVY:
- assert(subsampling == SUBSAMPLE_YUV422H);
- obj_surface->width = ALIGN(obj_surface->orig_width * 2, 128);
- obj_surface->cb_cr_pitch = obj_surface->width;
- obj_surface->y_cb_offset = 0;
- obj_surface->y_cr_offset = 0;
- obj_surface->cb_cr_width = obj_surface->orig_width / 2;
- obj_surface->cb_cr_height = obj_surface->orig_height;
- region_width = obj_surface->width;
- region_height = obj_surface->height;
-
- break;
-
- case VA_FOURCC_RGBA:
- case VA_FOURCC_RGBX:
- case VA_FOURCC_BGRA:
- case VA_FOURCC_BGRX:
- assert(subsampling == SUBSAMPLE_RGBX);
-
- obj_surface->width = ALIGN(obj_surface->orig_width * 4, 128);
- region_width = obj_surface->width;
- region_height = obj_surface->height;
- break;
-
- default:
- /* Never get here */
- ASSERT_RET(0, VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT);
- break;
- }
- } else {
- assert(subsampling == SUBSAMPLE_YUV420 ||
- subsampling == SUBSAMPLE_YUV422H ||
- subsampling == SUBSAMPLE_YUV422V ||
- subsampling == SUBSAMPLE_RGBX);
-
- region_width = obj_surface->width;
- region_height = obj_surface->height;
-
- switch (fourcc) {
- case VA_FOURCC_NV12:
- case VA_FOURCC_P010:
- obj_surface->y_cb_offset = obj_surface->height;
- obj_surface->y_cr_offset = obj_surface->height;
- obj_surface->cb_cr_width = obj_surface->orig_width / 2;
- obj_surface->cb_cr_height = obj_surface->orig_height / 2;
- obj_surface->cb_cr_pitch = obj_surface->width;
- region_height = obj_surface->height + obj_surface->height / 2;
- break;
-
- case VA_FOURCC_YV16:
- obj_surface->cb_cr_width = obj_surface->orig_width / 2;
- obj_surface->width = ALIGN(obj_surface->cb_cr_width, i965->codec_info->min_linear_wpitch) * 2;
- obj_surface->cb_cr_height = obj_surface->orig_height;
- obj_surface->y_cr_offset = obj_surface->height;
- obj_surface->y_cb_offset = obj_surface->y_cr_offset + ALIGN(obj_surface->cb_cr_height, 32) / 2;
- obj_surface->cb_cr_pitch = obj_surface->width / 2;
- region_width = obj_surface->width;
- region_height = obj_surface->height + ALIGN(obj_surface->cb_cr_height, 32);
- break;
-
- case VA_FOURCC_YV12:
- case VA_FOURCC_I420:
- case VA_FOURCC_IYUV:
- if (fourcc == VA_FOURCC_YV12) {
- obj_surface->y_cr_offset = obj_surface->height;
- obj_surface->y_cb_offset = obj_surface->height + obj_surface->height / 4;
- } else {
- obj_surface->y_cb_offset = obj_surface->height;
- obj_surface->y_cr_offset = obj_surface->height + obj_surface->height / 4;
- }
-
- obj_surface->cb_cr_width = obj_surface->orig_width / 2;
- obj_surface->width = ALIGN(obj_surface->cb_cr_width, i965->codec_info->min_linear_wpitch) * 2;
- obj_surface->cb_cr_height = obj_surface->orig_height / 2;
- obj_surface->cb_cr_pitch = obj_surface->width / 2;
- region_width = obj_surface->width;
- region_height = obj_surface->height + obj_surface->height / 2;
- break;
-
- case VA_FOURCC_I010:
- obj_surface->y_cb_offset = obj_surface->height;
- obj_surface->y_cr_offset = obj_surface->height + obj_surface->height / 4;
- obj_surface->cb_cr_width = obj_surface->orig_width / 2;
- obj_surface->width = ALIGN(obj_surface->cb_cr_width * 2, i965->codec_info->min_linear_wpitch) * 2;
- obj_surface->cb_cr_height = obj_surface->orig_height / 2;
- obj_surface->cb_cr_pitch = obj_surface->width / 2;
- region_width = obj_surface->width;
- region_height = obj_surface->height + obj_surface->height / 2;
-
- break;
- case VA_FOURCC_YUY2:
- case VA_FOURCC_UYVY:
- obj_surface->width = ALIGN(obj_surface->orig_width * 2, i965->codec_info->min_linear_wpitch);
- obj_surface->y_cb_offset = 0;
- obj_surface->y_cr_offset = 0;
- obj_surface->cb_cr_width = obj_surface->orig_width / 2;
- obj_surface->cb_cr_height = obj_surface->orig_height;
- obj_surface->cb_cr_pitch = obj_surface->width;
- region_width = obj_surface->width;
- region_height = obj_surface->height;
- break;
- case VA_FOURCC_RGBA:
- case VA_FOURCC_RGBX:
- case VA_FOURCC_BGRA:
- case VA_FOURCC_BGRX:
- obj_surface->width = ALIGN(obj_surface->orig_width * 4, i965->codec_info->min_linear_wpitch);
- region_width = obj_surface->width;
- region_height = obj_surface->height;
- break;
-
- default:
- /* Never get here */
- ASSERT_RET(0, VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT);
- break;
- }
- }
-
- obj_surface->size = ALIGN(region_width * region_height, 0x1000);
-
- if ((tiled && !obj_surface->user_disable_tiling)) {
- uint32_t tiling_mode = I915_TILING_Y; /* always uses Y-tiled format */
- unsigned long pitch;
-
- obj_surface->bo = drm_intel_bo_alloc_tiled(i965->intel.bufmgr,
- "vaapi surface",
- region_width,
- region_height,
- 1,
- &tiling_mode,
- &pitch,
- 0);
- assert(tiling_mode == I915_TILING_Y);
- assert(pitch == obj_surface->width);
- } else {
- obj_surface->bo = dri_bo_alloc(i965->intel.bufmgr,
- "vaapi surface",
- obj_surface->size,
- 0x1000);
- }
-
- obj_surface->fourcc = fourcc;
- obj_surface->subsampling = subsampling;
- assert(obj_surface->bo);
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus i965_DeriveImage(VADriverContextP ctx,
- VASurfaceID surface,
- VAImage *out_image) /* out */
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_image *obj_image;
- struct object_surface *obj_surface;
- VAImageID image_id;
- unsigned int w_pitch;
- VAStatus va_status = VA_STATUS_ERROR_OPERATION_FAILED;
-
- out_image->image_id = VA_INVALID_ID;
- obj_surface = SURFACE(surface);
-
- if (!obj_surface)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- if (!obj_surface->bo) {
- unsigned int is_tiled = 0;
- unsigned int fourcc = VA_FOURCC_YV12;
- i965_guess_surface_format(ctx, surface, &fourcc, &is_tiled);
- int sampling = get_sampling_from_fourcc(fourcc);
- va_status = i965_check_alloc_surface_bo(ctx, obj_surface, is_tiled, fourcc, sampling);
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
- }
-
- ASSERT_RET(obj_surface->fourcc, VA_STATUS_ERROR_INVALID_SURFACE);
-
- w_pitch = obj_surface->width;
-
- image_id = NEW_IMAGE_ID();
-
- if (image_id == VA_INVALID_ID)
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
-
- obj_image = IMAGE(image_id);
-
- if (!obj_image)
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
-
- obj_image->bo = NULL;
- obj_image->palette = NULL;
- obj_image->derived_surface = VA_INVALID_ID;
-
- VAImage * const image = &obj_image->image;
-
- memset(image, 0, sizeof(*image));
- image->image_id = image_id;
- image->buf = VA_INVALID_ID;
- image->num_palette_entries = 0;
- image->entry_bytes = 0;
- image->width = obj_surface->orig_width;
- image->height = obj_surface->orig_height;
- image->data_size = obj_surface->size;
-
- image->format.fourcc = obj_surface->fourcc;
- image->format.byte_order = VA_LSB_FIRST;
- image->format.bits_per_pixel = get_bpp_from_fourcc(obj_surface->fourcc);
-
- if (!image->format.bits_per_pixel)
- goto error;
-
- switch (image->format.fourcc) {
- case VA_FOURCC_YV12:
- image->num_planes = 3;
- image->pitches[0] = w_pitch; /* Y */
- image->offsets[0] = 0;
- image->pitches[1] = obj_surface->cb_cr_pitch; /* V */
- image->offsets[1] = w_pitch * obj_surface->y_cr_offset;
- image->pitches[2] = obj_surface->cb_cr_pitch; /* U */
- image->offsets[2] = w_pitch * obj_surface->y_cb_offset;
- break;
-
- case VA_FOURCC_YV16:
- image->num_planes = 3;
- image->pitches[0] = w_pitch; /* Y */
- image->offsets[0] = 0;
- image->pitches[1] = obj_surface->cb_cr_pitch; /* V */
- image->offsets[1] = w_pitch * obj_surface->y_cr_offset;
- image->pitches[2] = obj_surface->cb_cr_pitch; /* U */
- image->offsets[2] = w_pitch * obj_surface->y_cb_offset;
- break;
-
- case VA_FOURCC_NV12:
- case VA_FOURCC_P010:
- image->num_planes = 2;
- image->pitches[0] = w_pitch; /* Y */
- image->offsets[0] = 0;
- image->pitches[1] = obj_surface->cb_cr_pitch; /* UV */
- image->offsets[1] = w_pitch * obj_surface->y_cb_offset;
- break;
-
- case VA_FOURCC_I420:
- case VA_FOURCC_I010:
- case VA_FOURCC_422H:
- case VA_FOURCC_IMC3:
- case VA_FOURCC_444P:
- case VA_FOURCC_422V:
- case VA_FOURCC_411P:
- image->num_planes = 3;
- image->pitches[0] = w_pitch; /* Y */
- image->offsets[0] = 0;
- image->pitches[1] = obj_surface->cb_cr_pitch; /* U */
- image->offsets[1] = w_pitch * obj_surface->y_cb_offset;
- image->pitches[2] = obj_surface->cb_cr_pitch; /* V */
- image->offsets[2] = w_pitch * obj_surface->y_cr_offset;
- break;
-
- case VA_FOURCC_YUY2:
- case VA_FOURCC_UYVY:
- case VA_FOURCC_Y800:
- image->num_planes = 1;
- image->pitches[0] = obj_surface->width; /* Y, width is aligned already */
- image->offsets[0] = 0;
- break;
- case VA_FOURCC_RGBA:
- case VA_FOURCC_RGBX:
- case VA_FOURCC_BGRA:
- case VA_FOURCC_BGRX:
- image->num_planes = 1;
- image->pitches[0] = obj_surface->width;
-
- switch (image->format.fourcc) {
- case VA_FOURCC_RGBA:
- case VA_FOURCC_RGBX:
- image->format.red_mask = 0x000000ff;
- image->format.green_mask = 0x0000ff00;
- image->format.blue_mask = 0x00ff0000;
- break;
- case VA_FOURCC_BGRA:
- case VA_FOURCC_BGRX:
- image->format.red_mask = 0x00ff0000;
- image->format.green_mask = 0x0000ff00;
- image->format.blue_mask = 0x000000ff;
- break;
- default:
- goto error;
- }
-
- switch (image->format.fourcc) {
- case VA_FOURCC_RGBA:
- case VA_FOURCC_BGRA:
- image->format.alpha_mask = 0xff000000;
- image->format.depth = 32;
- break;
- case VA_FOURCC_RGBX:
- case VA_FOURCC_BGRX:
- image->format.alpha_mask = 0x00000000;
- image->format.depth = 24;
- break;
- default:
- goto error;
- }
-
- break;
- default:
- goto error;
- }
-
- va_status = i965_create_buffer_internal(ctx, 0, VAImageBufferType,
- obj_surface->size, 1, NULL, obj_surface->bo, &image->buf);
- if (va_status != VA_STATUS_SUCCESS)
- goto error;
-
- struct object_buffer *obj_buffer = BUFFER(image->buf);
-
- if (!obj_buffer ||
- !obj_buffer->buffer_store ||
- !obj_buffer->buffer_store->bo)
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
-
- obj_image->bo = obj_buffer->buffer_store->bo;
- dri_bo_reference(obj_image->bo);
-
- if (image->num_palette_entries > 0 && image->entry_bytes > 0) {
- obj_image->palette = malloc(image->num_palette_entries * sizeof(*obj_image->palette));
- if (!obj_image->palette) {
- va_status = VA_STATUS_ERROR_ALLOCATION_FAILED;
- goto error;
- }
- }
-
- *out_image = *image;
- obj_surface->flags |= SURFACE_DERIVED;
- obj_surface->derived_image_id = image_id;
- obj_image->derived_surface = surface;
-
- return VA_STATUS_SUCCESS;
-
- error:
- i965_DestroyImage(ctx, image_id);
- return va_status;
-}
-
-static void
-i965_destroy_image(struct object_heap *heap, struct object_base *obj)
-{
- object_heap_free(heap, obj);
-}
-
-
-VAStatus
-i965_DestroyImage(VADriverContextP ctx, VAImageID image)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_image *obj_image = IMAGE(image);
- struct object_surface *obj_surface;
-
- if (!obj_image)
- return VA_STATUS_SUCCESS;
-
- dri_bo_unreference(obj_image->bo);
- obj_image->bo = NULL;
-
- if (obj_image->image.buf != VA_INVALID_ID) {
- i965_DestroyBuffer(ctx, obj_image->image.buf);
- obj_image->image.buf = VA_INVALID_ID;
- }
-
- if (obj_image->palette) {
- free(obj_image->palette);
- obj_image->palette = NULL;
- }
-
- obj_surface = SURFACE(obj_image->derived_surface);
-
- if (obj_surface) {
- obj_surface->flags &= ~SURFACE_DERIVED;
- obj_surface->derived_image_id = VA_INVALID_ID;
- }
-
- i965_destroy_image(&i965->image_heap, (struct object_base *)obj_image);
-
- return VA_STATUS_SUCCESS;
-}
-
-/*
- * pointer to an array holding the palette data. The size of the array is
- * num_palette_entries * entry_bytes in size. The order of the components
- * in the palette is described by the component_order in VASubpicture struct
- */
-VAStatus
-i965_SetImagePalette(VADriverContextP ctx,
- VAImageID image,
- unsigned char *palette)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- unsigned int i;
-
- struct object_image *obj_image = IMAGE(image);
- if (!obj_image)
- return VA_STATUS_ERROR_INVALID_IMAGE;
-
- if (!obj_image->palette)
- return VA_STATUS_ERROR_ALLOCATION_FAILED; /* XXX: unpaletted/error */
-
- for (i = 0; i < obj_image->image.num_palette_entries; i++)
- obj_image->palette[i] = (((unsigned int)palette[3*i + 0] << 16) |
- ((unsigned int)palette[3*i + 1] << 8) |
- (unsigned int)palette[3*i + 2]);
- return VA_STATUS_SUCCESS;
-}
-
-static int
-get_sampling_from_fourcc(unsigned int fourcc)
-{
- const i965_fourcc_info *info = get_fourcc_info(fourcc);
-
- if (info && (info->flag & I_S))
- return info->subsampling;
- else
- return -1;
-}
-
-static inline void
-memcpy_pic(uint8_t *dst, unsigned int dst_stride,
- const uint8_t *src, unsigned int src_stride,
- unsigned int len, unsigned int height)
-{
- unsigned int i;
-
- for (i = 0; i < height; i++) {
- memcpy(dst, src, len);
- dst += dst_stride;
- src += src_stride;
- }
-}
-
-static VAStatus
-get_image_i420(struct object_image *obj_image, uint8_t *image_data,
- struct object_surface *obj_surface,
- const VARectangle *rect)
-{
- uint8_t *dst[3], *src[3];
- const int Y = 0;
- const int U = obj_image->image.format.fourcc == obj_surface->fourcc ? 1 : 2;
- const int V = obj_image->image.format.fourcc == obj_surface->fourcc ? 2 : 1;
- unsigned int tiling, swizzle;
- VAStatus va_status = VA_STATUS_SUCCESS;
-
- if (!obj_surface->bo)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- ASSERT_RET(obj_surface->fourcc, VA_STATUS_ERROR_INVALID_SURFACE);
- dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
-
- if (tiling != I915_TILING_NONE)
- drm_intel_gem_bo_map_gtt(obj_surface->bo);
- else
- dri_bo_map(obj_surface->bo, 0);
-
- if (!obj_surface->bo->virtual)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- /* Dest VA image has either I420 or YV12 format.
- Source VA surface alway has I420 format */
- dst[Y] = image_data + obj_image->image.offsets[Y];
- src[0] = (uint8_t *)obj_surface->bo->virtual;
- dst[U] = image_data + obj_image->image.offsets[U];
- src[1] = src[0] + obj_surface->width * obj_surface->height;
- dst[V] = image_data + obj_image->image.offsets[V];
- src[2] = src[1] + (obj_surface->width / 2) * (obj_surface->height / 2);
-
- /* Y plane */
- dst[Y] += rect->y * obj_image->image.pitches[Y] + rect->x;
- src[0] += rect->y * obj_surface->width + rect->x;
- memcpy_pic(dst[Y], obj_image->image.pitches[Y],
- src[0], obj_surface->width,
- rect->width, rect->height);
-
- /* U plane */
- dst[U] += (rect->y / 2) * obj_image->image.pitches[U] + rect->x / 2;
- src[1] += (rect->y / 2) * obj_surface->width / 2 + rect->x / 2;
- memcpy_pic(dst[U], obj_image->image.pitches[U],
- src[1], obj_surface->width / 2,
- rect->width / 2, rect->height / 2);
-
- /* V plane */
- dst[V] += (rect->y / 2) * obj_image->image.pitches[V] + rect->x / 2;
- src[2] += (rect->y / 2) * obj_surface->width / 2 + rect->x / 2;
- memcpy_pic(dst[V], obj_image->image.pitches[V],
- src[2], obj_surface->width / 2,
- rect->width / 2, rect->height / 2);
-
- if (tiling != I915_TILING_NONE)
- drm_intel_gem_bo_unmap_gtt(obj_surface->bo);
- else
- dri_bo_unmap(obj_surface->bo);
-
- return va_status;
-}
-
-static VAStatus
-get_image_nv12(struct object_image *obj_image, uint8_t *image_data,
- struct object_surface *obj_surface,
- const VARectangle *rect)
-{
- uint8_t *dst[2], *src[2];
- unsigned int tiling, swizzle;
- VAStatus va_status = VA_STATUS_SUCCESS;
-
- if (!obj_surface->bo)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- assert(obj_surface->fourcc);
- dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
-
- if (tiling != I915_TILING_NONE)
- drm_intel_gem_bo_map_gtt(obj_surface->bo);
- else
- dri_bo_map(obj_surface->bo, 0);
-
- if (!obj_surface->bo->virtual)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- /* Both dest VA image and source surface have NV12 format */
- dst[0] = image_data + obj_image->image.offsets[0];
- src[0] = (uint8_t *)obj_surface->bo->virtual;
- dst[1] = image_data + obj_image->image.offsets[1];
- src[1] = src[0] + obj_surface->width * obj_surface->height;
-
- /* Y plane */
- dst[0] += rect->y * obj_image->image.pitches[0] + rect->x;
- src[0] += rect->y * obj_surface->width + rect->x;
- memcpy_pic(dst[0], obj_image->image.pitches[0],
- src[0], obj_surface->width,
- rect->width, rect->height);
-
- /* UV plane */
- dst[1] += (rect->y / 2) * obj_image->image.pitches[1] + (rect->x & -2);
- src[1] += (rect->y / 2) * obj_surface->width + (rect->x & -2);
- memcpy_pic(dst[1], obj_image->image.pitches[1],
- src[1], obj_surface->width,
- rect->width, rect->height / 2);
-
- if (tiling != I915_TILING_NONE)
- drm_intel_gem_bo_unmap_gtt(obj_surface->bo);
- else
- dri_bo_unmap(obj_surface->bo);
-
- return va_status;
-}
-
-static VAStatus
-get_image_yuy2(struct object_image *obj_image, uint8_t *image_data,
- struct object_surface *obj_surface,
- const VARectangle *rect)
-{
- uint8_t *dst, *src;
- unsigned int tiling, swizzle;
- VAStatus va_status = VA_STATUS_SUCCESS;
-
- if (!obj_surface->bo)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- assert(obj_surface->fourcc);
- dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
-
- if (tiling != I915_TILING_NONE)
- drm_intel_gem_bo_map_gtt(obj_surface->bo);
- else
- dri_bo_map(obj_surface->bo, 0);
-
- if (!obj_surface->bo->virtual)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- /* Both dest VA image and source surface have YUYV format */
- dst = image_data + obj_image->image.offsets[0];
- src = (uint8_t *)obj_surface->bo->virtual;
-
- /* Y plane */
- dst += rect->y * obj_image->image.pitches[0] + rect->x*2;
- src += rect->y * obj_surface->width + rect->x*2;
- memcpy_pic(dst, obj_image->image.pitches[0],
- src, obj_surface->width*2,
- rect->width*2, rect->height);
-
- if (tiling != I915_TILING_NONE)
- drm_intel_gem_bo_unmap_gtt(obj_surface->bo);
- else
- dri_bo_unmap(obj_surface->bo);
-
- return va_status;
-}
-
-static VAStatus
-i965_sw_getimage(VADriverContextP ctx,
- struct object_surface *obj_surface, struct object_image *obj_image,
- const VARectangle *rect)
-{
- void *image_data = NULL;
- VAStatus va_status;
-
- if (obj_surface->fourcc != obj_image->image.format.fourcc)
- return VA_STATUS_ERROR_INVALID_IMAGE_FORMAT;
-
- va_status = i965_MapBuffer(ctx, obj_image->image.buf, &image_data);
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
-
- switch (obj_image->image.format.fourcc) {
- case VA_FOURCC_YV12:
- case VA_FOURCC_I420:
- get_image_i420(obj_image, image_data, obj_surface, rect);
- break;
- case VA_FOURCC_NV12:
- get_image_nv12(obj_image, image_data, obj_surface, rect);
- break;
- case VA_FOURCC_YUY2:
- /* YUY2 is the format supported by overlay plane */
- get_image_yuy2(obj_image, image_data, obj_surface, rect);
- break;
- default:
- va_status = VA_STATUS_ERROR_OPERATION_FAILED;
- break;
- }
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
-
- va_status = i965_UnmapBuffer(ctx, obj_image->image.buf);
- return va_status;
-}
-
-static VAStatus
-i965_hw_getimage(VADriverContextP ctx,
- struct object_surface *obj_surface, struct object_image *obj_image,
- const VARectangle *rect)
-{
- struct i965_surface src_surface;
- struct i965_surface dst_surface;
-
- src_surface.base = (struct object_base *)obj_surface;
- src_surface.type = I965_SURFACE_TYPE_SURFACE;
- src_surface.flags = I965_SURFACE_FLAG_FRAME;
-
- dst_surface.base = (struct object_base *)obj_image;
- dst_surface.type = I965_SURFACE_TYPE_IMAGE;
- dst_surface.flags = I965_SURFACE_FLAG_FRAME;
-
- return i965_image_processing(ctx, &src_surface, rect, &dst_surface, rect);
-}
-
-VAStatus
-i965_GetImage(VADriverContextP ctx,
- VASurfaceID surface,
- int x, /* coordinates of the upper left source pixel */
- int y,
- unsigned int width, /* width and height of the region */
- unsigned int height,
- VAImageID image)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- struct object_surface * const obj_surface = SURFACE(surface);
- struct object_image * const obj_image = IMAGE(image);
- VARectangle rect;
- VAStatus va_status;
-
- if (!obj_surface)
- return VA_STATUS_ERROR_INVALID_SURFACE;
- if (!obj_surface->bo) /* don't get anything, keep previous data */
- return VA_STATUS_SUCCESS;
- if (is_surface_busy(i965, obj_surface))
- return VA_STATUS_ERROR_SURFACE_BUSY;
-
- if (!obj_image || !obj_image->bo)
- return VA_STATUS_ERROR_INVALID_IMAGE;
- if (is_image_busy(i965, obj_image, surface))
- return VA_STATUS_ERROR_SURFACE_BUSY;
-
- if (x < 0 || y < 0)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- if (x + width > obj_surface->orig_width ||
- y + height > obj_surface->orig_height)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- if (x + width > obj_image->image.width ||
- y + height > obj_image->image.height)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- rect.x = x;
- rect.y = y;
- rect.width = width;
- rect.height = height;
-
- if (HAS_ACCELERATED_GETIMAGE(i965))
- va_status = i965_hw_getimage(ctx, obj_surface, obj_image, &rect);
- else
- va_status = i965_sw_getimage(ctx, obj_surface, obj_image, &rect);
-
- return va_status;
-}
-
-static VAStatus
-put_image_i420(struct object_surface *obj_surface,
- const VARectangle *dst_rect,
- struct object_image *obj_image, uint8_t *image_data,
- const VARectangle *src_rect)
-{
- uint8_t *dst[3], *src[3];
- const int Y = 0;
- const int U = obj_image->image.format.fourcc == obj_surface->fourcc ? 1 : 2;
- const int V = obj_image->image.format.fourcc == obj_surface->fourcc ? 2 : 1;
- unsigned int tiling, swizzle;
- VAStatus va_status = VA_STATUS_SUCCESS;
-
- ASSERT_RET(obj_surface->bo, VA_STATUS_ERROR_INVALID_SURFACE);
-
- ASSERT_RET(obj_surface->fourcc, VA_STATUS_ERROR_INVALID_SURFACE);
- ASSERT_RET(dst_rect->width == src_rect->width, VA_STATUS_ERROR_UNIMPLEMENTED);
- ASSERT_RET(dst_rect->height == src_rect->height, VA_STATUS_ERROR_UNIMPLEMENTED);
- dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
-
- if (tiling != I915_TILING_NONE)
- drm_intel_gem_bo_map_gtt(obj_surface->bo);
- else
- dri_bo_map(obj_surface->bo, 0);
-
- if (!obj_surface->bo->virtual)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- /* Dest VA image has either I420 or YV12 format.
- Source VA surface alway has I420 format */
- dst[0] = (uint8_t *)obj_surface->bo->virtual;
- src[Y] = image_data + obj_image->image.offsets[Y];
- dst[1] = dst[0] + obj_surface->width * obj_surface->height;
- src[U] = image_data + obj_image->image.offsets[U];
- dst[2] = dst[1] + (obj_surface->width / 2) * (obj_surface->height / 2);
- src[V] = image_data + obj_image->image.offsets[V];
-
- /* Y plane */
- dst[0] += dst_rect->y * obj_surface->width + dst_rect->x;
- src[Y] += src_rect->y * obj_image->image.pitches[Y] + src_rect->x;
- memcpy_pic(dst[0], obj_surface->width,
- src[Y], obj_image->image.pitches[Y],
- src_rect->width, src_rect->height);
-
- /* U plane */
- dst[1] += (dst_rect->y / 2) * obj_surface->width / 2 + dst_rect->x / 2;
- src[U] += (src_rect->y / 2) * obj_image->image.pitches[U] + src_rect->x / 2;
- memcpy_pic(dst[1], obj_surface->width / 2,
- src[U], obj_image->image.pitches[U],
- src_rect->width / 2, src_rect->height / 2);
-
- /* V plane */
- dst[2] += (dst_rect->y / 2) * obj_surface->width / 2 + dst_rect->x / 2;
- src[V] += (src_rect->y / 2) * obj_image->image.pitches[V] + src_rect->x / 2;
- memcpy_pic(dst[2], obj_surface->width / 2,
- src[V], obj_image->image.pitches[V],
- src_rect->width / 2, src_rect->height / 2);
-
- if (tiling != I915_TILING_NONE)
- drm_intel_gem_bo_unmap_gtt(obj_surface->bo);
- else
- dri_bo_unmap(obj_surface->bo);
-
- return va_status;
-}
-
-static VAStatus
-put_image_nv12(struct object_surface *obj_surface,
- const VARectangle *dst_rect,
- struct object_image *obj_image, uint8_t *image_data,
- const VARectangle *src_rect)
-{
- uint8_t *dst[2], *src[2];
- unsigned int tiling, swizzle;
- VAStatus va_status = VA_STATUS_SUCCESS;
-
- if (!obj_surface->bo)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- ASSERT_RET(obj_surface->fourcc, VA_STATUS_ERROR_INVALID_SURFACE);
- ASSERT_RET(dst_rect->width == src_rect->width, VA_STATUS_ERROR_UNIMPLEMENTED);
- ASSERT_RET(dst_rect->height == src_rect->height, VA_STATUS_ERROR_UNIMPLEMENTED);
- dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
-
- if (tiling != I915_TILING_NONE)
- drm_intel_gem_bo_map_gtt(obj_surface->bo);
- else
- dri_bo_map(obj_surface->bo, 0);
-
- if (!obj_surface->bo->virtual)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- /* Both dest VA image and source surface have NV12 format */
- dst[0] = (uint8_t *)obj_surface->bo->virtual;
- src[0] = image_data + obj_image->image.offsets[0];
- dst[1] = dst[0] + obj_surface->width * obj_surface->height;
- src[1] = image_data + obj_image->image.offsets[1];
-
- /* Y plane */
- dst[0] += dst_rect->y * obj_surface->width + dst_rect->x;
- src[0] += src_rect->y * obj_image->image.pitches[0] + src_rect->x;
- memcpy_pic(dst[0], obj_surface->width,
- src[0], obj_image->image.pitches[0],
- src_rect->width, src_rect->height);
-
- /* UV plane */
- dst[1] += (dst_rect->y / 2) * obj_surface->width + (dst_rect->x & -2);
- src[1] += (src_rect->y / 2) * obj_image->image.pitches[1] + (src_rect->x & -2);
- memcpy_pic(dst[1], obj_surface->width,
- src[1], obj_image->image.pitches[1],
- src_rect->width, src_rect->height / 2);
-
- if (tiling != I915_TILING_NONE)
- drm_intel_gem_bo_unmap_gtt(obj_surface->bo);
- else
- dri_bo_unmap(obj_surface->bo);
-
- return va_status;
-}
-
-static VAStatus
-put_image_yuy2(struct object_surface *obj_surface,
- const VARectangle *dst_rect,
- struct object_image *obj_image, uint8_t *image_data,
- const VARectangle *src_rect)
-{
- uint8_t *dst, *src;
- unsigned int tiling, swizzle;
- VAStatus va_status = VA_STATUS_SUCCESS;
-
- ASSERT_RET(obj_surface->bo, VA_STATUS_ERROR_INVALID_SURFACE);
- ASSERT_RET(obj_surface->fourcc, VA_STATUS_ERROR_INVALID_SURFACE);
- ASSERT_RET(dst_rect->width == src_rect->width, VA_STATUS_ERROR_UNIMPLEMENTED);
- ASSERT_RET(dst_rect->height == src_rect->height, VA_STATUS_ERROR_UNIMPLEMENTED);
- dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
-
- if (tiling != I915_TILING_NONE)
- drm_intel_gem_bo_map_gtt(obj_surface->bo);
- else
- dri_bo_map(obj_surface->bo, 0);
-
- if (!obj_surface->bo->virtual)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- /* Both dest VA image and source surface have YUY2 format */
- dst = (uint8_t *)obj_surface->bo->virtual;
- src = image_data + obj_image->image.offsets[0];
-
- /* YUYV packed plane */
- dst += dst_rect->y * obj_surface->width + dst_rect->x*2;
- src += src_rect->y * obj_image->image.pitches[0] + src_rect->x*2;
- memcpy_pic(dst, obj_surface->width*2,
- src, obj_image->image.pitches[0],
- src_rect->width*2, src_rect->height);
-
- if (tiling != I915_TILING_NONE)
- drm_intel_gem_bo_unmap_gtt(obj_surface->bo);
- else
- dri_bo_unmap(obj_surface->bo);
-
- return va_status;
-}
-
-static VAStatus
-i965_sw_putimage(VADriverContextP ctx,
- struct object_surface *obj_surface, struct object_image *obj_image,
- const VARectangle *src_rect, const VARectangle *dst_rect)
-{
- VAStatus va_status = VA_STATUS_SUCCESS;
- void *image_data = NULL;
-
- /* XXX: don't allow scaling */
- if (src_rect->width != dst_rect->width ||
- src_rect->height != dst_rect->height)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- if (obj_surface->fourcc) {
- /* Don't allow format mismatch */
- if (obj_surface->fourcc != obj_image->image.format.fourcc)
- return VA_STATUS_ERROR_INVALID_IMAGE_FORMAT;
- }
-
- else {
- /* VA is surface not used for decoding, use same VA image format */
- va_status = i965_check_alloc_surface_bo(
- ctx,
- obj_surface,
- 0, /* XXX: don't use tiled surface */
- obj_image->image.format.fourcc,
- get_sampling_from_fourcc (obj_image->image.format.fourcc));
- }
-
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
-
- va_status = i965_MapBuffer(ctx, obj_image->image.buf, &image_data);
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
-
- switch (obj_image->image.format.fourcc) {
- case VA_FOURCC_YV12:
- case VA_FOURCC_I420:
- va_status = put_image_i420(obj_surface, dst_rect, obj_image, image_data, src_rect);
- break;
- case VA_FOURCC_NV12:
- va_status = put_image_nv12(obj_surface, dst_rect, obj_image, image_data, src_rect);
- break;
- case VA_FOURCC_YUY2:
- va_status = put_image_yuy2(obj_surface, dst_rect, obj_image, image_data, src_rect);
- break;
- default:
- va_status = VA_STATUS_ERROR_OPERATION_FAILED;
- break;
- }
- if (va_status != VA_STATUS_SUCCESS)
- return va_status;
-
- va_status = i965_UnmapBuffer(ctx, obj_image->image.buf);
- return va_status;
-}
-
-static VAStatus
-i965_hw_putimage(VADriverContextP ctx,
- struct object_surface *obj_surface, struct object_image *obj_image,
- const VARectangle *src_rect, const VARectangle *dst_rect)
-{
- struct i965_surface src_surface, dst_surface;
- VAStatus va_status = VA_STATUS_SUCCESS;
-
- if (!obj_surface->bo) {
- unsigned int tiling, swizzle;
- int surface_sampling = get_sampling_from_fourcc (obj_image->image.format.fourcc);;
- dri_bo_get_tiling(obj_image->bo, &tiling, &swizzle);
-
- i965_check_alloc_surface_bo(ctx,
- obj_surface,
- !!tiling,
- obj_image->image.format.fourcc,
- surface_sampling);
- }
-
- ASSERT_RET(obj_surface->fourcc, VA_STATUS_ERROR_INVALID_SURFACE);
-
- src_surface.base = (struct object_base *)obj_image;
- src_surface.type = I965_SURFACE_TYPE_IMAGE;
- src_surface.flags = I965_SURFACE_FLAG_FRAME;
-
- dst_surface.base = (struct object_base *)obj_surface;
- dst_surface.type = I965_SURFACE_TYPE_SURFACE;
- dst_surface.flags = I965_SURFACE_FLAG_FRAME;
-
- va_status = i965_image_processing(ctx,
- &src_surface,
- src_rect,
- &dst_surface,
- dst_rect);
-
- return va_status;
-}
-
-static VAStatus
-i965_PutImage(VADriverContextP ctx,
- VASurfaceID surface,
- VAImageID image,
- int src_x,
- int src_y,
- unsigned int src_width,
- unsigned int src_height,
- int dest_x,
- int dest_y,
- unsigned int dest_width,
- unsigned int dest_height)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- struct object_surface * const obj_surface = SURFACE(surface);
- struct object_image * const obj_image = IMAGE(image);
- VARectangle src_rect, dst_rect;
- VAStatus va_status;
-
- if (!obj_surface)
- return VA_STATUS_ERROR_INVALID_SURFACE;
- if (is_surface_busy(i965, obj_surface))
- return VA_STATUS_ERROR_SURFACE_BUSY;
-
- if (!obj_image || !obj_image->bo)
- return VA_STATUS_ERROR_INVALID_IMAGE;
- if (is_image_busy(i965, obj_image, surface))
- return VA_STATUS_ERROR_SURFACE_BUSY;
-
- if (src_x < 0 ||
- src_y < 0 ||
- src_x + src_width > obj_image->image.width ||
- src_y + src_height > obj_image->image.height)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- src_rect.x = src_x;
- src_rect.y = src_y;
- src_rect.width = src_width;
- src_rect.height = src_height;
-
- if (dest_x < 0 ||
- dest_y < 0 ||
- dest_x + dest_width > obj_surface->orig_width ||
- dest_y + dest_height > obj_surface->orig_height)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- dst_rect.x = dest_x;
- dst_rect.y = dest_y;
- dst_rect.width = dest_width;
- dst_rect.height = dest_height;
-
- if (HAS_ACCELERATED_PUTIMAGE(i965))
- va_status = i965_hw_putimage(ctx, obj_surface, obj_image,
- &src_rect, &dst_rect);
- else
- va_status = i965_sw_putimage(ctx, obj_surface, obj_image,
- &src_rect, &dst_rect);
-
- return va_status;
-}
-
-VAStatus
-i965_PutSurface(VADriverContextP ctx,
- VASurfaceID surface,
- void *draw, /* X Drawable */
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth,
- VARectangle *cliprects, /* client supplied clip list */
- unsigned int number_cliprects, /* number of clip rects in the clip list */
- unsigned int flags) /* de-interlacing flags */
-{
-#ifdef HAVE_VA_X11
- if (IS_VA_X11(ctx)) {
- VARectangle src_rect, dst_rect;
-
- src_rect.x = srcx;
- src_rect.y = srcy;
- src_rect.width = srcw;
- src_rect.height = srch;
-
- dst_rect.x = destx;
- dst_rect.y = desty;
- dst_rect.width = destw;
- dst_rect.height = desth;
-
- return i965_put_surface_dri(ctx, surface, draw, &src_rect, &dst_rect,
- cliprects, number_cliprects, flags);
- }
-#endif
- return VA_STATUS_ERROR_UNIMPLEMENTED;
-}
-
-static VAStatus
-i965_BufferInfo(
- VADriverContextP ctx, /* in */
- VABufferID buf_id, /* in */
- VABufferType *type, /* out */
- unsigned int *size, /* out */
- unsigned int *num_elements /* out */
-)
-{
- struct i965_driver_data *i965 = NULL;
- struct object_buffer *obj_buffer = NULL;
-
- i965 = i965_driver_data(ctx);
- obj_buffer = BUFFER(buf_id);
-
- ASSERT_RET(obj_buffer, VA_STATUS_ERROR_INVALID_BUFFER);
-
- *type = obj_buffer->type;
- *size = obj_buffer->size_element;
- *num_elements = obj_buffer->num_elements;
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-i965_LockSurface(
- VADriverContextP ctx, /* in */
- VASurfaceID surface, /* in */
- unsigned int *fourcc, /* out */
- unsigned int *luma_stride, /* out */
- unsigned int *chroma_u_stride, /* out */
- unsigned int *chroma_v_stride, /* out */
- unsigned int *luma_offset, /* out */
- unsigned int *chroma_u_offset, /* out */
- unsigned int *chroma_v_offset, /* out */
- unsigned int *buffer_name, /* out */
- void **buffer /* out */
-)
-{
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface = NULL;
- VAImage tmpImage;
-
- ASSERT_RET(fourcc, VA_STATUS_ERROR_INVALID_PARAMETER);
- ASSERT_RET(luma_stride, VA_STATUS_ERROR_INVALID_PARAMETER);
- ASSERT_RET(chroma_u_stride, VA_STATUS_ERROR_INVALID_PARAMETER);
- ASSERT_RET(chroma_v_stride, VA_STATUS_ERROR_INVALID_PARAMETER);
- ASSERT_RET(luma_offset, VA_STATUS_ERROR_INVALID_PARAMETER);
- ASSERT_RET(chroma_u_offset, VA_STATUS_ERROR_INVALID_PARAMETER);
- ASSERT_RET(chroma_v_offset, VA_STATUS_ERROR_INVALID_PARAMETER);
- ASSERT_RET(buffer_name, VA_STATUS_ERROR_INVALID_PARAMETER);
- ASSERT_RET(buffer, VA_STATUS_ERROR_INVALID_PARAMETER);
-
- tmpImage.image_id = VA_INVALID_ID;
-
- obj_surface = SURFACE(surface);
- if (obj_surface == NULL) {
- // Surface is absent.
- vaStatus = VA_STATUS_ERROR_INVALID_PARAMETER;
- goto error;
- }
-
- // Lock functionality is absent now.
- if (obj_surface->locked_image_id != VA_INVALID_ID) {
- // Surface is locked already.
- vaStatus = VA_STATUS_ERROR_INVALID_PARAMETER;
- goto error;
- }
-
- vaStatus = i965_DeriveImage(
- ctx,
- surface,
- &tmpImage);
- if (vaStatus != VA_STATUS_SUCCESS) {
- goto error;
- }
-
- obj_surface->locked_image_id = tmpImage.image_id;
-
- vaStatus = i965_MapBuffer(
- ctx,
- tmpImage.buf,
- buffer);
- if (vaStatus != VA_STATUS_SUCCESS) {
- goto error;
- }
-
- *fourcc = tmpImage.format.fourcc;
- *luma_offset = tmpImage.offsets[0];
- *luma_stride = tmpImage.pitches[0];
- *chroma_u_offset = tmpImage.offsets[1];
- *chroma_u_stride = tmpImage.pitches[1];
- *chroma_v_offset = tmpImage.offsets[2];
- *chroma_v_stride = tmpImage.pitches[2];
- *buffer_name = tmpImage.buf;
-
-error:
- if (vaStatus != VA_STATUS_SUCCESS) {
- buffer = NULL;
- }
-
- return vaStatus;
-}
-
-static VAStatus
-i965_UnlockSurface(
- VADriverContextP ctx, /* in */
- VASurfaceID surface /* in */
-)
-{
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_image *locked_img = NULL;
- struct object_surface *obj_surface = NULL;
-
- obj_surface = SURFACE(surface);
-
- if (obj_surface == NULL) {
- vaStatus = VA_STATUS_ERROR_INVALID_PARAMETER; // Surface is absent
- return vaStatus;
- }
- if (obj_surface->locked_image_id == VA_INVALID_ID) {
- vaStatus = VA_STATUS_ERROR_INVALID_PARAMETER; // Surface is not locked
- return vaStatus;
- }
-
- locked_img = IMAGE(obj_surface->locked_image_id);
- if (locked_img == NULL || (locked_img->image.image_id == VA_INVALID_ID)) {
- // Work image was deallocated before i965_UnlockSurface()
- vaStatus = VA_STATUS_ERROR_INVALID_PARAMETER;
- goto error;
- }
-
- vaStatus = i965_UnmapBuffer(
- ctx,
- locked_img->image.buf);
- if (vaStatus != VA_STATUS_SUCCESS) {
- goto error;
- }
-
- vaStatus = i965_DestroyImage(
- ctx,
- locked_img->image.image_id);
- if (vaStatus != VA_STATUS_SUCCESS) {
- goto error;
- }
-
- locked_img->image.image_id = VA_INVALID_ID;
-
- error:
- obj_surface->locked_image_id = VA_INVALID_ID;
-
- return vaStatus;
-}
-
-static VAStatus
-i965_GetSurfaceAttributes(
- VADriverContextP ctx,
- VAConfigID config,
- VASurfaceAttrib *attrib_list,
- unsigned int num_attribs
- )
-{
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_config *obj_config;
- int i;
-
- if (config == VA_INVALID_ID)
- return VA_STATUS_ERROR_INVALID_CONFIG;
-
- obj_config = CONFIG(config);
-
- if (obj_config == NULL)
- return VA_STATUS_ERROR_INVALID_CONFIG;
-
- if (attrib_list == NULL || num_attribs == 0)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- for (i = 0; i < num_attribs; i++) {
- switch (attrib_list[i].type) {
- case VASurfaceAttribPixelFormat:
- attrib_list[i].value.type = VAGenericValueTypeInteger;
- attrib_list[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
-
- if (attrib_list[i].value.value.i == 0) {
- if (IS_G4X(i965->intel.device_info)) {
- if (obj_config->profile == VAProfileMPEG2Simple ||
- obj_config->profile == VAProfileMPEG2Main) {
- attrib_list[i].value.value.i = VA_FOURCC_I420;
- } else {
- assert(0);
- attrib_list[i].flags = VA_SURFACE_ATTRIB_NOT_SUPPORTED;
- }
- } else if (IS_IRONLAKE(i965->intel.device_info)) {
- if (obj_config->profile == VAProfileMPEG2Simple ||
- obj_config->profile == VAProfileMPEG2Main) {
- attrib_list[i].value.value.i = VA_FOURCC_I420;
- } else if (obj_config->profile == VAProfileH264ConstrainedBaseline ||
- obj_config->profile == VAProfileH264Main ||
- obj_config->profile == VAProfileH264High) {
- attrib_list[i].value.value.i = VA_FOURCC_NV12;
- } else if (obj_config->profile == VAProfileNone) {
- attrib_list[i].value.value.i = VA_FOURCC_NV12;
- } else {
- assert(0);
- attrib_list[i].flags = VA_SURFACE_ATTRIB_NOT_SUPPORTED;
- }
- } else if (IS_GEN6(i965->intel.device_info)) {
- attrib_list[i].value.value.i = VA_FOURCC_NV12;
- } else if (IS_GEN7(i965->intel.device_info) ||
- IS_GEN8(i965->intel.device_info) ||
- IS_GEN9(i965->intel.device_info)) {
- if (obj_config->profile == VAProfileJPEGBaseline)
- attrib_list[i].value.value.i = 0; /* internal format */
- else
- attrib_list[i].value.value.i = VA_FOURCC_NV12;
- }
- } else {
- if (IS_G4X(i965->intel.device_info)) {
- if (obj_config->profile == VAProfileMPEG2Simple ||
- obj_config->profile == VAProfileMPEG2Main) {
- if (attrib_list[i].value.value.i != VA_FOURCC_I420) {
- attrib_list[i].value.value.i = 0;
- attrib_list[i].flags &= ~VA_SURFACE_ATTRIB_SETTABLE;
- }
- } else {
- assert(0);
- attrib_list[i].flags = VA_SURFACE_ATTRIB_NOT_SUPPORTED;
- }
- } else if (IS_IRONLAKE(i965->intel.device_info)) {
- if (obj_config->profile == VAProfileMPEG2Simple ||
- obj_config->profile == VAProfileMPEG2Main) {
- if (attrib_list[i].value.value.i != VA_FOURCC_I420) {
- attrib_list[i].value.value.i = 0;
- attrib_list[i].flags &= ~VA_SURFACE_ATTRIB_SETTABLE;
- }
- } else if (obj_config->profile == VAProfileH264ConstrainedBaseline ||
- obj_config->profile == VAProfileH264Main ||
- obj_config->profile == VAProfileH264High) {
- if (attrib_list[i].value.value.i != VA_FOURCC_NV12) {
- attrib_list[i].value.value.i = 0;
- attrib_list[i].flags &= ~VA_SURFACE_ATTRIB_SETTABLE;
- }
- } else if (obj_config->profile == VAProfileNone) {
- switch (attrib_list[i].value.value.i) {
- case VA_FOURCC_NV12:
- case VA_FOURCC_I420:
- case VA_FOURCC_YV12:
- case VA_FOURCC_YUY2:
- case VA_FOURCC_BGRA:
- case VA_FOURCC_BGRX:
- case VA_FOURCC_RGBX:
- case VA_FOURCC_RGBA:
- break;
- default:
- attrib_list[i].value.value.i = 0;
- attrib_list[i].flags &= ~VA_SURFACE_ATTRIB_SETTABLE;
- break;
- }
- } else {
- assert(0);
- attrib_list[i].flags = VA_SURFACE_ATTRIB_NOT_SUPPORTED;
- }
- } else if (IS_GEN6(i965->intel.device_info)) {
- if (obj_config->entrypoint == VAEntrypointEncSlice ||
- obj_config->entrypoint == VAEntrypointVideoProc) {
- switch (attrib_list[i].value.value.i) {
- case VA_FOURCC_NV12:
- case VA_FOURCC_I420:
- case VA_FOURCC_YV12:
- case VA_FOURCC_YUY2:
- case VA_FOURCC_BGRA:
- case VA_FOURCC_BGRX:
- case VA_FOURCC_RGBX:
- case VA_FOURCC_RGBA:
- break;
- default:
- attrib_list[i].value.value.i = 0;
- attrib_list[i].flags &= ~VA_SURFACE_ATTRIB_SETTABLE;
- break;
- }
- } else {
- if (attrib_list[i].value.value.i != VA_FOURCC_NV12) {
- attrib_list[i].value.value.i = 0;
- attrib_list[i].flags &= ~VA_SURFACE_ATTRIB_SETTABLE;
- }
- }
- } else if (IS_GEN7(i965->intel.device_info) ||
- IS_GEN8(i965->intel.device_info) ||
- IS_GEN9(i965->intel.device_info)) {
- if (obj_config->entrypoint == VAEntrypointEncSlice ||
- obj_config->entrypoint == VAEntrypointVideoProc ||
- obj_config->entrypoint == VAEntrypointEncSliceLP) {
- switch (attrib_list[i].value.value.i) {
- case VA_FOURCC_NV12:
- case VA_FOURCC_I420:
- case VA_FOURCC_YV12:
- break;
- default:
- attrib_list[i].value.value.i = 0;
- attrib_list[i].flags &= ~VA_SURFACE_ATTRIB_SETTABLE;
- break;
- }
- } else {
- if (obj_config->profile == VAProfileJPEGBaseline) {
- attrib_list[i].value.value.i = 0; /* JPEG decoding always uses an internal format */
- attrib_list[i].flags &= ~VA_SURFACE_ATTRIB_SETTABLE;
- } else {
- if (attrib_list[i].value.value.i != VA_FOURCC_NV12) {
- attrib_list[i].value.value.i = 0;
- attrib_list[i].flags &= ~VA_SURFACE_ATTRIB_SETTABLE;
- }
- }
- }
- }
- }
-
- break;
- case VASurfaceAttribMinWidth:
- /* FIXME: add support for it later */
- attrib_list[i].flags = VA_SURFACE_ATTRIB_NOT_SUPPORTED;
- break;
- case VASurfaceAttribMaxWidth:
- attrib_list[i].flags = VA_SURFACE_ATTRIB_NOT_SUPPORTED;
- break;
- case VASurfaceAttribMinHeight:
- attrib_list[i].flags = VA_SURFACE_ATTRIB_NOT_SUPPORTED;
- break;
- case VASurfaceAttribMaxHeight:
- attrib_list[i].flags = VA_SURFACE_ATTRIB_NOT_SUPPORTED;
- break;
- default:
- attrib_list[i].flags = VA_SURFACE_ATTRIB_NOT_SUPPORTED;
- break;
- }
- }
-
- return vaStatus;
-}
-
-static VAStatus
-i965_QuerySurfaceAttributes(VADriverContextP ctx,
- VAConfigID config,
- VASurfaceAttrib *attrib_list,
- unsigned int *num_attribs)
-{
- VAStatus vaStatus = VA_STATUS_SUCCESS;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_config *obj_config;
- int i = 0;
- VASurfaceAttrib *attribs = NULL;
- int max_width;
- int max_height;
-
- if (config == VA_INVALID_ID)
- return VA_STATUS_ERROR_INVALID_CONFIG;
-
- obj_config = CONFIG(config);
-
- if (obj_config == NULL)
- return VA_STATUS_ERROR_INVALID_CONFIG;
-
- if (!attrib_list && !num_attribs)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- if (attrib_list == NULL) {
- *num_attribs = I965_MAX_SURFACE_ATTRIBUTES;
- return VA_STATUS_SUCCESS;
- }
-
- attribs = malloc(I965_MAX_SURFACE_ATTRIBUTES *sizeof(*attribs));
-
- if (attribs == NULL)
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
-
- if (IS_G4X(i965->intel.device_info)) {
- if (obj_config->profile == VAProfileMPEG2Simple ||
- obj_config->profile == VAProfileMPEG2Main) {
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_I420;
- i++;
- }
- } else if (IS_IRONLAKE(i965->intel.device_info)) {
- switch (obj_config->profile) {
- case VAProfileMPEG2Simple:
- case VAProfileMPEG2Main:
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_I420;
- i++;
-
- break;
-
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_NV12;
- i++;
-
- case VAProfileNone:
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_NV12;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_I420;
- i++;
-
- break;
-
- default:
- break;
- }
- } else if (IS_GEN6(i965->intel.device_info)) {
- if (obj_config->entrypoint == VAEntrypointVLD) { /* decode */
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_NV12;
- i++;
- } else if (obj_config->entrypoint == VAEntrypointEncSlice || /* encode */
- obj_config->entrypoint == VAEntrypointVideoProc) { /* vpp */
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_NV12;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_I420;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_YV12;
- i++;
-
- if (obj_config->entrypoint == VAEntrypointVideoProc) {
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_YUY2;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_RGBA;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_RGBX;
- i++;
- }
- }
- } else if (IS_GEN7(i965->intel.device_info)) {
- if (obj_config->entrypoint == VAEntrypointVLD) { /* decode */
- if (obj_config->profile == VAProfileJPEGBaseline) {
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_IMC3;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_IMC1;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_Y800;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_411P;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_422H;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_422V;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_444P;
- i++;
- } else if (obj_config->profile == VAProfileHEVCMain10) {
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_P010;
- i++;
- } else {
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_NV12;
- i++;
- }
- } else if (obj_config->entrypoint == VAEntrypointEncSlice || /* encode */
- obj_config->entrypoint == VAEntrypointVideoProc) { /* vpp */
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_NV12;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_I420;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_YV12;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_IMC3;
- i++;
-
- if (obj_config->entrypoint == VAEntrypointVideoProc) {
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_YUY2;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_RGBA;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_RGBX;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_BGRA;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_BGRX;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_YV16;
- i++;
- }
- }
- } else if (IS_GEN8(i965->intel.device_info) ||
- IS_GEN9(i965->intel.device_info)) {
- if (obj_config->entrypoint == VAEntrypointVLD) { /* decode */
- if (obj_config->profile == VAProfileJPEGBaseline) {
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_IMC3;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_IMC1;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_Y800;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_411P;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_422H;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_422V;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_444P;
- i++;
- } else {
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_NV12;
- i++;
-
- if ((obj_config->profile == VAProfileHEVCMain10) ||
- (obj_config->profile == VAProfileVP9Profile2)) {
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_P010;
- i++;
- }
- }
- } else if (obj_config->entrypoint == VAEntrypointEncSlice || /* encode */
- obj_config->entrypoint == VAEntrypointVideoProc ||
- obj_config->entrypoint == VAEntrypointEncSliceLP) {
-
- if (obj_config->profile == VAProfileHEVCMain10) {
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_P010;
- i++;
- } else {
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_NV12;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_I420;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_YV12;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_IMC3;
- i++;
- }
-
- if (obj_config->entrypoint == VAEntrypointVideoProc) {
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_YUY2;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_RGBA;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_RGBX;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_BGRA;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_BGRX;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_YV16;
- i++;
-
- if(HAS_VPP_P010(i965)) {
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_P010;
- i++;
-
- attribs[i].type = VASurfaceAttribPixelFormat;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_FOURCC_I010;
- i++;
- }
- }
- }
- }
-
- attribs[i].type = VASurfaceAttribMemoryType;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.i = VA_SURFACE_ATTRIB_MEM_TYPE_VA |
- VA_SURFACE_ATTRIB_MEM_TYPE_KERNEL_DRM |
- VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME;
- i++;
-
- attribs[i].type = VASurfaceAttribExternalBufferDescriptor;
- attribs[i].value.type = VAGenericValueTypePointer;
- attribs[i].flags = VA_SURFACE_ATTRIB_SETTABLE;
- attribs[i].value.value.p = NULL; /* ignore */
- i++;
-
- max_resolution(i965, obj_config, &max_width, &max_height);
-
- attribs[i].type = VASurfaceAttribMaxWidth;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE;
- attribs[i].value.value.i = max_width;
- i++;
-
- attribs[i].type = VASurfaceAttribMaxHeight;
- attribs[i].value.type = VAGenericValueTypeInteger;
- attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE;
- attribs[i].value.value.i = max_height;
- i++;
-
- if (i > *num_attribs) {
- *num_attribs = i;
- free(attribs);
- return VA_STATUS_ERROR_MAX_NUM_EXCEEDED;
- }
-
- *num_attribs = i;
- memcpy(attrib_list, attribs, i * sizeof(*attribs));
- free(attribs);
-
- return vaStatus;
-}
-
-/* Acquires buffer handle for external API usage (internal implementation) */
-static VAStatus
-i965_acquire_buffer_handle(struct object_buffer *obj_buffer,
- uint32_t mem_type, VABufferInfo *out_buf_info)
-{
- struct buffer_store *buffer_store;
-
- buffer_store = obj_buffer->buffer_store;
- if (!buffer_store || !buffer_store->bo)
- return VA_STATUS_ERROR_INVALID_BUFFER;
-
- /* Synchronization point */
- drm_intel_bo_wait_rendering(buffer_store->bo);
-
- if (obj_buffer->export_refcount > 0) {
- if (obj_buffer->export_state.mem_type != mem_type)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- }
- else {
- VABufferInfo * const buf_info = &obj_buffer->export_state;
-
- switch (mem_type) {
- case VA_SURFACE_ATTRIB_MEM_TYPE_KERNEL_DRM: {
- uint32_t name;
- if (drm_intel_bo_flink(buffer_store->bo, &name) != 0)
- return VA_STATUS_ERROR_INVALID_BUFFER;
- buf_info->handle = name;
- break;
- }
- case VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME: {
- int fd;
- if (drm_intel_bo_gem_export_to_prime(buffer_store->bo, &fd) != 0)
- return VA_STATUS_ERROR_INVALID_BUFFER;
- buf_info->handle = (intptr_t)fd;
- break;
- }
- }
-
- buf_info->type = obj_buffer->type;
- buf_info->mem_type = mem_type;
- buf_info->mem_size =
- obj_buffer->num_elements * obj_buffer->size_element;
- }
-
- obj_buffer->export_refcount++;
- *out_buf_info = obj_buffer->export_state;
- return VA_STATUS_SUCCESS;
-}
-
-/* Releases buffer handle after usage (internal implementation) */
-static VAStatus
-i965_release_buffer_handle(struct object_buffer *obj_buffer)
-{
- if (obj_buffer->export_refcount == 0)
- return VA_STATUS_ERROR_INVALID_BUFFER;
-
- if (--obj_buffer->export_refcount == 0) {
- VABufferInfo * const buf_info = &obj_buffer->export_state;
-
- switch (buf_info->mem_type) {
- case VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME: {
- close((intptr_t)buf_info->handle);
- break;
- }
- }
- buf_info->mem_type = 0;
- }
- return VA_STATUS_SUCCESS;
-}
-
-/** Acquires buffer handle for external API usage */
-static VAStatus
-i965_AcquireBufferHandle(VADriverContextP ctx, VABufferID buf_id,
- VABufferInfo *buf_info)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- struct object_buffer * const obj_buffer = BUFFER(buf_id);
- uint32_t i, mem_type;
-
- /* List of supported memory types, in preferred order */
- static const uint32_t mem_types[] = {
- VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME,
- VA_SURFACE_ATTRIB_MEM_TYPE_KERNEL_DRM,
- 0
- };
-
- if (!obj_buffer)
- return VA_STATUS_ERROR_INVALID_BUFFER;
- /* XXX: only VA surface|image like buffers are supported for now */
- if (obj_buffer->type != VAImageBufferType)
- return VA_STATUS_ERROR_UNSUPPORTED_BUFFERTYPE;
-
- /*
- * As the allocated buffer by calling vaCreateBuffer is related with
- * the specific context, it is unnecessary to export it.
- * So it is not supported when the buffer is allocated from wrapped
- * backend dirver.
- */
- if (obj_buffer->wrapper_buffer != VA_INVALID_ID) {
- return VA_STATUS_ERROR_UNSUPPORTED_BUFFERTYPE;
- }
-
- if (!buf_info)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- if (!buf_info->mem_type)
- mem_type = mem_types[0];
- else {
- mem_type = 0;
- for (i = 0; mem_types[i] != 0; i++) {
- if (buf_info->mem_type & mem_types[i]) {
- mem_type = buf_info->mem_type;
- break;
- }
- }
- if (!mem_type)
- return VA_STATUS_ERROR_UNSUPPORTED_MEMORY_TYPE;
- }
- return i965_acquire_buffer_handle(obj_buffer, mem_type, buf_info);
-}
-
-/** Releases buffer handle after usage from external API */
-static VAStatus
-i965_ReleaseBufferHandle(VADriverContextP ctx, VABufferID buf_id)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- struct object_buffer * const obj_buffer = BUFFER(buf_id);
-
- if (!obj_buffer)
- return VA_STATUS_ERROR_INVALID_BUFFER;
-
- if (obj_buffer->wrapper_buffer != VA_INVALID_ID) {
- return VA_STATUS_ERROR_INVALID_BUFFER;
- }
-
- return i965_release_buffer_handle(obj_buffer);
-}
-
-static int
-i965_os_has_ring_support(VADriverContextP ctx,
- int ring)
-{
- struct i965_driver_data *const i965 = i965_driver_data(ctx);
-
- switch (ring) {
- case I965_RING_BSD:
- return i965->intel.has_bsd;
-
- case I965_RING_BLT:
- return i965->intel.has_blt;
-
- case I965_RING_VEBOX:
- return i965->intel.has_vebox;
-
- case I965_RING_NULL:
- return 1; /* Always support */
-
- default:
- /* should never get here */
- assert(0);
- break;
- }
-
- return 0;
-}
-
-/*
- * Query video processing pipeline
- */
-VAStatus i965_QueryVideoProcFilters(
- VADriverContextP ctx,
- VAContextID context,
- VAProcFilterType *filters,
- unsigned int *num_filters
- )
-{
- struct i965_driver_data *const i965 = i965_driver_data(ctx);
- unsigned int i = 0, num = 0;
-
- if (!num_filters || !filters)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- for (i = 0; i < i965->codec_info->num_filters; i++) {
- if (i965_os_has_ring_support(ctx, i965->codec_info->filters[i].ring)) {
- if (num == *num_filters) {
- *num_filters = i965->codec_info->num_filters;
-
- return VA_STATUS_ERROR_MAX_NUM_EXCEEDED;
- }
-
- filters[num++] = i965->codec_info->filters[i].type;
- }
- }
-
- *num_filters = num;
-
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus i965_QueryVideoProcFilterCaps(
- VADriverContextP ctx,
- VAContextID context,
- VAProcFilterType type,
- void *filter_caps,
- unsigned int *num_filter_caps
- )
-{
- unsigned int i = 0;
- struct i965_driver_data *const i965 = i965_driver_data(ctx);
-
- if (!filter_caps || !num_filter_caps)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- for (i = 0; i < i965->codec_info->num_filters; i++) {
- if (type == i965->codec_info->filters[i].type &&
- i965_os_has_ring_support(ctx, i965->codec_info->filters[i].ring))
- break;
- }
-
- if (i == i965->codec_info->num_filters)
- return VA_STATUS_ERROR_UNSUPPORTED_FILTER;
-
- i = 0;
-
- switch (type) {
- case VAProcFilterNoiseReduction:
- case VAProcFilterSharpening:
- {
- VAProcFilterCap *cap = filter_caps;
-
- if (*num_filter_caps < 1) {
- *num_filter_caps = 1;
- return VA_STATUS_ERROR_MAX_NUM_EXCEEDED;
- }
-
- cap->range.min_value = 0.0;
- cap->range.max_value = 1.0;
- cap->range.default_value = 0.5;
- cap->range.step = 0.03125; /* 1.0 / 32 */
- i++;
- }
-
- break;
-
- case VAProcFilterDeinterlacing:
- {
- VAProcFilterCapDeinterlacing *cap = filter_caps;
-
- if (*num_filter_caps < VAProcDeinterlacingCount) {
- *num_filter_caps = VAProcDeinterlacingCount;
- return VA_STATUS_ERROR_MAX_NUM_EXCEEDED;
- }
-
- cap->type = VAProcDeinterlacingBob;
- i++;
- cap++;
-
-
- if (i965->codec_info->has_di_motion_adptive) {
- cap->type = VAProcDeinterlacingMotionAdaptive;
- i++;
- cap++;
- }
-
- if (i965->codec_info->has_di_motion_compensated) {
- cap->type = VAProcDeinterlacingMotionCompensated;
- i++;
- cap++;
- }
- }
-
- break;
-
- case VAProcFilterColorBalance:
- {
- VAProcFilterCapColorBalance *cap = filter_caps;
-
- if (*num_filter_caps < VAProcColorBalanceCount) {
- *num_filter_caps = VAProcColorBalanceCount;
- return VA_STATUS_ERROR_MAX_NUM_EXCEEDED;
- }
-
- cap->type = VAProcColorBalanceHue;
- cap->range.min_value = -180.0;
- cap->range.max_value = 180.0;
- cap->range.default_value = 0.0;
- cap->range.step = 1.0;
- i++;
- cap++;
-
- cap->type = VAProcColorBalanceSaturation;
- cap->range.min_value = 0.0;
- cap->range.max_value = 10.0;
- cap->range.default_value = 1.0;
- cap->range.step = 0.1;
- i++;
- cap++;
-
- cap->type = VAProcColorBalanceBrightness;
- cap->range.min_value = -100.0;
- cap->range.max_value = 100.0;
- cap->range.default_value = 0.0;
- cap->range.step = 1.0;
- i++;
- cap++;
-
- cap->type = VAProcColorBalanceContrast;
- cap->range.min_value = 0.0;
- cap->range.max_value = 10.0;
- cap->range.default_value = 1.0;
- cap->range.step = 0.1;
- i++;
- cap++;
- }
-
- break;
-
- default:
-
- break;
- }
-
- *num_filter_caps = i;
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAProcColorStandardType vpp_input_color_standards[VAProcColorStandardCount] = {
- VAProcColorStandardBT601,
-};
-
-static VAProcColorStandardType vpp_output_color_standards[VAProcColorStandardCount] = {
- VAProcColorStandardBT601,
-};
-
-VAStatus i965_QueryVideoProcPipelineCaps(
- VADriverContextP ctx,
- VAContextID context,
- VABufferID *filters,
- unsigned int num_filters,
- VAProcPipelineCaps *pipeline_cap /* out */
- )
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- unsigned int i = 0;
-
- pipeline_cap->pipeline_flags = 0;
- pipeline_cap->filter_flags = 0;
- pipeline_cap->num_forward_references = 0;
- pipeline_cap->num_backward_references = 0;
- pipeline_cap->num_input_color_standards = 1;
- pipeline_cap->input_color_standards = vpp_input_color_standards;
- pipeline_cap->num_output_color_standards = 1;
- pipeline_cap->output_color_standards = vpp_output_color_standards;
-
- for (i = 0; i < num_filters; i++) {
- struct object_buffer *obj_buffer = BUFFER(filters[i]);
-
- if (!obj_buffer ||
- !obj_buffer->buffer_store ||
- !obj_buffer->buffer_store->buffer)
- return VA_STATUS_ERROR_INVALID_BUFFER;
-
- VAProcFilterParameterBufferBase *base = (VAProcFilterParameterBufferBase *)obj_buffer->buffer_store->buffer;
-
- if (base->type == VAProcFilterNoiseReduction) {
- VAProcFilterParameterBuffer *denoise = (VAProcFilterParameterBuffer *)base;
- (void)denoise;
- } else if (base->type == VAProcFilterDeinterlacing) {
- VAProcFilterParameterBufferDeinterlacing *deint = (VAProcFilterParameterBufferDeinterlacing *)base;
-
- ASSERT_RET(deint->algorithm == VAProcDeinterlacingBob ||
- deint->algorithm == VAProcDeinterlacingMotionAdaptive ||
- deint->algorithm == VAProcDeinterlacingMotionCompensated,
- VA_STATUS_ERROR_INVALID_PARAMETER);
-
- if (deint->algorithm == VAProcDeinterlacingMotionAdaptive ||
- deint->algorithm == VAProcDeinterlacingMotionCompensated)
- pipeline_cap->num_forward_references++;
- } else if (base->type == VAProcFilterSkinToneEnhancement) {
- VAProcFilterParameterBuffer *stde = (VAProcFilterParameterBuffer *)base;
- (void)stde;
- }
- }
-
- return VA_STATUS_SUCCESS;
-}
-
-extern struct hw_codec_info *i965_get_codec_info(int devid);
-
-static bool
-i965_driver_data_init(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
-
- i965->codec_info = i965_get_codec_info(i965->intel.device_id);
-
- if (!i965->codec_info)
- return false;
-
- if (object_heap_init(&i965->config_heap,
- sizeof(struct object_config),
- CONFIG_ID_OFFSET))
- goto err_config_heap;
- if (object_heap_init(&i965->context_heap,
- sizeof(struct object_context),
- CONTEXT_ID_OFFSET))
- goto err_context_heap;
-
- if (object_heap_init(&i965->surface_heap,
- sizeof(struct object_surface),
- SURFACE_ID_OFFSET))
- goto err_surface_heap;
- if (object_heap_init(&i965->buffer_heap,
- sizeof(struct object_buffer),
- BUFFER_ID_OFFSET))
- goto err_buffer_heap;
- if (object_heap_init(&i965->image_heap,
- sizeof(struct object_image),
- IMAGE_ID_OFFSET))
- goto err_image_heap;
- if (object_heap_init(&i965->subpic_heap,
- sizeof(struct object_subpic),
- SUBPIC_ID_OFFSET))
- goto err_subpic_heap;
-
- i965->batch = intel_batchbuffer_new(&i965->intel, I915_EXEC_RENDER, 0);
- i965->pp_batch = intel_batchbuffer_new(&i965->intel, I915_EXEC_RENDER, 0);
- _i965InitMutex(&i965->render_mutex);
- _i965InitMutex(&i965->pp_mutex);
-
- return true;
-
-err_subpic_heap:
- object_heap_destroy(&i965->image_heap);
-err_image_heap:
- object_heap_destroy(&i965->buffer_heap);
-err_buffer_heap:
- object_heap_destroy(&i965->surface_heap);
-err_surface_heap:
- object_heap_destroy(&i965->context_heap);
-err_context_heap:
- object_heap_destroy(&i965->config_heap);
-err_config_heap:
-
- return false;
-}
-
-static void
-i965_driver_data_terminate(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
-
- _i965DestroyMutex(&i965->pp_mutex);
- _i965DestroyMutex(&i965->render_mutex);
-
- if (i965->batch)
- intel_batchbuffer_free(i965->batch);
-
- if (i965->pp_batch)
- intel_batchbuffer_free(i965->pp_batch);
-
- i965_destroy_heap(&i965->subpic_heap, i965_destroy_subpic);
- i965_destroy_heap(&i965->image_heap, i965_destroy_image);
- i965_destroy_heap(&i965->buffer_heap, i965_destroy_buffer);
- i965_destroy_heap(&i965->surface_heap, i965_destroy_surface);
- i965_destroy_heap(&i965->context_heap, i965_destroy_context);
- i965_destroy_heap(&i965->config_heap, i965_destroy_config);
-}
-
-struct {
- bool (*init)(VADriverContextP ctx);
- void (*terminate)(VADriverContextP ctx);
- int display_type;
-} i965_sub_ops[] = {
- {
- intel_driver_init,
- intel_driver_terminate,
- 0,
- },
-
- {
- i965_driver_data_init,
- i965_driver_data_terminate,
- 0,
- },
-
- {
- i965_display_attributes_init,
- i965_display_attributes_terminate,
- 0,
- },
-
- {
- i965_post_processing_init,
- i965_post_processing_terminate,
- 0,
- },
-
- {
- i965_render_init,
- i965_render_terminate,
- 0,
- },
-
-#ifdef HAVE_VA_WAYLAND
- {
- i965_output_wayland_init,
- i965_output_wayland_terminate,
- VA_DISPLAY_WAYLAND,
- },
-#endif
-
-#ifdef HAVE_VA_X11
- {
- i965_output_dri_init,
- i965_output_dri_terminate,
- VA_DISPLAY_X11,
- },
-#endif
-
- {
- i965_gpe_table_init,
- i965_gpe_table_terminate,
- 0,
- },
-};
-
-static bool
-ensure_vendor_string(struct i965_driver_data *i965, const char *chipset)
-{
- int ret, len;
-
- if (i965->va_vendor[0] != '\0')
- return true;
-
- len = 0;
- ret = snprintf(i965->va_vendor, sizeof(i965->va_vendor),
- "%s %s driver for %s - %d.%d.%d",
- INTEL_STR_DRIVER_VENDOR, INTEL_STR_DRIVER_NAME, chipset,
- INTEL_DRIVER_MAJOR_VERSION, INTEL_DRIVER_MINOR_VERSION,
- INTEL_DRIVER_MICRO_VERSION);
- if (ret < 0 || ret >= sizeof(i965->va_vendor))
- goto error;
- len = ret;
-
- if (INTEL_DRIVER_PRE_VERSION > 0) {
- ret = snprintf(&i965->va_vendor[len], sizeof(i965->va_vendor) - len,
- ".pre%d", INTEL_DRIVER_PRE_VERSION);
- if (ret < 0 || ret >= sizeof(i965->va_vendor))
- goto error;
- len += ret;
-
- ret = snprintf(&i965->va_vendor[len], sizeof(i965->va_vendor) - len,
- " (%s)", INTEL_DRIVER_GIT_VERSION);
- if (ret < 0 || ret >= sizeof(i965->va_vendor))
- goto error;
- len += ret;
- }
- return true;
-
-error:
- i965->va_vendor[0] = '\0';
- ASSERT_RET(ret > 0 && len < sizeof(i965->va_vendor), false);
- return false;
-}
-
-/* Only when the option of "enable-wrapper" is passed, it is possible
- * to initialize/load the wrapper context of backend driver.
- * Otherwise it is not loaded.
- */
-#if HAVE_HYBRID_CODEC
-
-static VAStatus
-i965_initialize_wrapper(VADriverContextP ctx, const char *driver_name)
-{
-#define DRIVER_EXTENSION "_drv_video.so"
-
- struct i965_driver_data *i965 = i965_driver_data(ctx);
-
- VADriverContextP wrapper_pdrvctx;
- struct VADriverVTable *vtable;
- char *search_path, *driver_dir;
- char *saveptr;
- char driver_path[256];
- void *handle = NULL;
- VAStatus va_status = VA_STATUS_SUCCESS;
- bool driver_loaded = false;
-
- if (HAS_VP9_DECODING(i965)) {
- i965->wrapper_pdrvctx = NULL;
- return va_status;
- }
-
- wrapper_pdrvctx = calloc(1, sizeof(*wrapper_pdrvctx));
- vtable = calloc(1, sizeof(*vtable));
-
- if (!wrapper_pdrvctx || !vtable) {
- fprintf(stderr, "Failed to allocate memory for wrapper \n");
- free(wrapper_pdrvctx);
- free(vtable);
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
- }
-
- /* use the same drm_state with CTX */
- wrapper_pdrvctx->drm_state = ctx->drm_state;
- wrapper_pdrvctx->display_type = ctx->display_type;
- wrapper_pdrvctx->vtable = vtable;
-
- search_path = VA_DRIVERS_PATH;
- search_path = strdup((const char *)search_path);
-
- driver_dir = strtok_r(search_path, ":", &saveptr);
- while (driver_dir && !driver_loaded) {
- memset(driver_path, 0, sizeof(driver_path));
- sprintf(driver_path, "%s/%s%s", driver_dir, driver_name, DRIVER_EXTENSION);
-
- handle = dlopen(driver_path, RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE);
- if (!handle) {
- fprintf(stderr, "failed to open %s\n", driver_path);
- driver_dir = strtok_r(NULL, ":", &saveptr);
- continue;
- }
- {
- VADriverInit init_func = NULL;
- char init_func_s[256];
- int i;
-
- static const struct {
- int major;
- int minor;
- } compatible_versions[] = {
- { VA_MAJOR_VERSION, VA_MINOR_VERSION },
- { 0, 37 },
- { 0, 36 },
- { 0, 35 },
- { 0, 34 },
- { 0, 33 },
- { 0, 32 },
- { -1, }
- };
- for (i = 0; compatible_versions[i].major >= 0; i++) {
- snprintf(init_func_s, sizeof(init_func_s),
- "__vaDriverInit_%d_%d",
- compatible_versions[i].major,
- compatible_versions[i].minor);
- init_func = (VADriverInit)dlsym(handle, init_func_s);
- if (init_func) {
- break;
- }
- }
- if (compatible_versions[i].major < 0) {
- dlclose(handle);
- fprintf(stderr, "%s has no function %s\n",
- driver_path, init_func_s);
- driver_dir = strtok_r(NULL, ":", &saveptr);
- continue;
- }
-
- if (init_func)
- va_status = (*init_func)(wrapper_pdrvctx);
-
- if (va_status != VA_STATUS_SUCCESS) {
- dlclose(handle);
- fprintf(stderr, "%s init failed\n", driver_path);
- driver_dir = strtok_r(NULL, ":", &saveptr);
- continue;
- }
-
- wrapper_pdrvctx->handle = handle;
- driver_loaded = true;
- }
- }
-
- free(search_path);
-
- if (driver_loaded) {
- i965->wrapper_pdrvctx = wrapper_pdrvctx;
- return VA_STATUS_SUCCESS;
- } else {
- fprintf(stderr, "Failed to wrapper %s%s\n", driver_name, DRIVER_EXTENSION);
- free(vtable);
- free(wrapper_pdrvctx);
- return VA_STATUS_ERROR_OPERATION_FAILED;
- }
-}
-#endif
-
-static VAStatus
-i965_Init(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- int i;
- const char *chipset;
-
- for (i = 0; i < ARRAY_ELEMS(i965_sub_ops); i++) {
- if ((i965_sub_ops[i].display_type == 0 ||
- i965_sub_ops[i].display_type == (ctx->display_type & VA_DISPLAY_MAJOR_MASK)) &&
- !i965_sub_ops[i].init(ctx))
- break;
- }
-
- if (i == ARRAY_ELEMS(i965_sub_ops)) {
- switch (i965->intel.device_id) {
-#undef CHIPSET
-#define CHIPSET(id, family, dev, str) case id: chipset = str; break;
-#include "i965_pciids.h"
- default:
- chipset = "Unknown Intel Chipset";
- break;
- }
-
- if (!ensure_vendor_string(i965, chipset))
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
-
- i965->current_context_id = VA_INVALID_ID;
-
- if (i965->codec_info && i965->codec_info->preinit_hw_codec)
- i965->codec_info->preinit_hw_codec(ctx, i965->codec_info);
-
-#if HAVE_HYBRID_CODEC
- i965_initialize_wrapper(ctx, "hybrid");
-#endif
-
- return VA_STATUS_SUCCESS;
- } else {
- i--;
-
- for (; i >= 0; i--) {
- if (i965_sub_ops[i].display_type == 0 ||
- i965_sub_ops[i].display_type == (ctx->display_type & VA_DISPLAY_MAJOR_MASK)) {
- i965_sub_ops[i].terminate(ctx);
- }
- }
-
- return VA_STATUS_ERROR_UNKNOWN;
- }
-}
-
-VAStatus
-i965_Terminate(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- int i;
-
- if (i965) {
- if (i965->wrapper_pdrvctx) {
- VADriverContextP pdrvctx;
- pdrvctx = i965->wrapper_pdrvctx;
- if (pdrvctx->handle) {
- pdrvctx->vtable->vaTerminate(pdrvctx);
- dlclose(pdrvctx->handle);
- pdrvctx->handle = NULL;
- }
- free(pdrvctx->vtable);
- free(pdrvctx);
- i965->wrapper_pdrvctx = NULL;
- }
-
- for (i = ARRAY_ELEMS(i965_sub_ops); i > 0; i--)
- if (i965_sub_ops[i - 1].display_type == 0 ||
- i965_sub_ops[i - 1].display_type == (ctx->display_type & VA_DISPLAY_MAJOR_MASK)) {
- i965_sub_ops[i - 1].terminate(ctx);
- }
-
- free(i965);
- ctx->pDriverData = NULL;
- }
-
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus DLL_EXPORT
-VA_DRIVER_INIT_FUNC(VADriverContextP ctx);
-
-VAStatus
-VA_DRIVER_INIT_FUNC( VADriverContextP ctx )
-{
- struct VADriverVTable * const vtable = ctx->vtable;
- struct VADriverVTableVPP * const vtable_vpp = ctx->vtable_vpp;
-
- struct i965_driver_data *i965;
- VAStatus ret = VA_STATUS_ERROR_UNKNOWN;
-
- ctx->version_major = VA_MAJOR_VERSION;
- ctx->version_minor = VA_MINOR_VERSION;
- ctx->max_profiles = I965_MAX_PROFILES;
- ctx->max_entrypoints = I965_MAX_ENTRYPOINTS;
- ctx->max_attributes = I965_MAX_CONFIG_ATTRIBUTES;
- ctx->max_image_formats = I965_MAX_IMAGE_FORMATS;
- ctx->max_subpic_formats = I965_MAX_SUBPIC_FORMATS;
- ctx->max_display_attributes = 1 + ARRAY_ELEMS(i965_display_attributes);
-
- vtable->vaTerminate = i965_Terminate;
- vtable->vaQueryConfigEntrypoints = i965_QueryConfigEntrypoints;
- vtable->vaQueryConfigProfiles = i965_QueryConfigProfiles;
- vtable->vaQueryConfigAttributes = i965_QueryConfigAttributes;
- vtable->vaCreateConfig = i965_CreateConfig;
- vtable->vaDestroyConfig = i965_DestroyConfig;
- vtable->vaGetConfigAttributes = i965_GetConfigAttributes;
- vtable->vaCreateSurfaces = i965_CreateSurfaces;
- vtable->vaDestroySurfaces = i965_DestroySurfaces;
- vtable->vaCreateContext = i965_CreateContext;
- vtable->vaDestroyContext = i965_DestroyContext;
- vtable->vaCreateBuffer = i965_CreateBuffer;
- vtable->vaBufferSetNumElements = i965_BufferSetNumElements;
- vtable->vaMapBuffer = i965_MapBuffer;
- vtable->vaUnmapBuffer = i965_UnmapBuffer;
- vtable->vaDestroyBuffer = i965_DestroyBuffer;
- vtable->vaBeginPicture = i965_BeginPicture;
- vtable->vaRenderPicture = i965_RenderPicture;
- vtable->vaEndPicture = i965_EndPicture;
- vtable->vaSyncSurface = i965_SyncSurface;
- vtable->vaQuerySurfaceStatus = i965_QuerySurfaceStatus;
- vtable->vaPutSurface = i965_PutSurface;
- vtable->vaQueryImageFormats = i965_QueryImageFormats;
- vtable->vaCreateImage = i965_CreateImage;
- vtable->vaDeriveImage = i965_DeriveImage;
- vtable->vaDestroyImage = i965_DestroyImage;
- vtable->vaSetImagePalette = i965_SetImagePalette;
- vtable->vaGetImage = i965_GetImage;
- vtable->vaPutImage = i965_PutImage;
- vtable->vaQuerySubpictureFormats = i965_QuerySubpictureFormats;
- vtable->vaCreateSubpicture = i965_CreateSubpicture;
- vtable->vaDestroySubpicture = i965_DestroySubpicture;
- vtable->vaSetSubpictureImage = i965_SetSubpictureImage;
- vtable->vaSetSubpictureChromakey = i965_SetSubpictureChromakey;
- vtable->vaSetSubpictureGlobalAlpha = i965_SetSubpictureGlobalAlpha;
- vtable->vaAssociateSubpicture = i965_AssociateSubpicture;
- vtable->vaDeassociateSubpicture = i965_DeassociateSubpicture;
- vtable->vaQueryDisplayAttributes = i965_QueryDisplayAttributes;
- vtable->vaGetDisplayAttributes = i965_GetDisplayAttributes;
- vtable->vaSetDisplayAttributes = i965_SetDisplayAttributes;
- vtable->vaBufferInfo = i965_BufferInfo;
- vtable->vaLockSurface = i965_LockSurface;
- vtable->vaUnlockSurface = i965_UnlockSurface;
- vtable->vaGetSurfaceAttributes = i965_GetSurfaceAttributes;
- vtable->vaQuerySurfaceAttributes = i965_QuerySurfaceAttributes;
- vtable->vaCreateSurfaces2 = i965_CreateSurfaces2;
-
- /* 0.36.0 */
- vtable->vaAcquireBufferHandle = i965_AcquireBufferHandle;
- vtable->vaReleaseBufferHandle = i965_ReleaseBufferHandle;
-
- vtable_vpp->vaQueryVideoProcFilters = i965_QueryVideoProcFilters;
- vtable_vpp->vaQueryVideoProcFilterCaps = i965_QueryVideoProcFilterCaps;
- vtable_vpp->vaQueryVideoProcPipelineCaps = i965_QueryVideoProcPipelineCaps;
-
- i965 = (struct i965_driver_data *)calloc(1, sizeof(*i965));
-
- if (i965 == NULL) {
- ctx->pDriverData = NULL;
-
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
- }
-
- i965->wrapper_pdrvctx = NULL;
- ctx->pDriverData = (void *)i965;
- ret = i965_Init(ctx);
-
- if (ret == VA_STATUS_SUCCESS) {
- ctx->str_vendor = i965->va_vendor;
- } else {
- free(i965);
- ctx->pDriverData = NULL;
- }
-
- return ret;
-}
diff --git a/src/i965_drv_video.h b/src/i965_drv_video.h
deleted file mode 100644
index 7cba3a3..0000000
--- a/src/i965_drv_video.h
+++ /dev/null
@@ -1,646 +0,0 @@
-/*
- * Copyright ?2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- * Zou Nan hai <nanhai.zou@intel.com>
- *
- */
-
-#ifndef _I965_DRV_VIDEO_H_
-#define _I965_DRV_VIDEO_H_
-
-#include <va/va.h>
-#include <va/va_enc_h264.h>
-#include <va/va_enc_mpeg2.h>
-#include <va/va_enc_hevc.h>
-#include <va/va_enc_jpeg.h>
-#include <va/va_enc_vp8.h>
-#include <va/va_vpp.h>
-#include <va/va_backend.h>
-#include <va/va_backend_vpp.h>
-
-#include "i965_mutext.h"
-#include "object_heap.h"
-#include "intel_driver.h"
-#include "i965_fourcc.h"
-
-#define I965_MAX_PROFILES 20
-#define I965_MAX_ENTRYPOINTS 5
-#define I965_MAX_CONFIG_ATTRIBUTES 32
-#define I965_MAX_IMAGE_FORMATS 10
-#define I965_MAX_SUBPIC_FORMATS 6
-#define I965_MAX_SUBPIC_SUM 4
-#define I965_MAX_SURFACE_ATTRIBUTES 16
-
-#define INTEL_STR_DRIVER_VENDOR "Intel"
-#define INTEL_STR_DRIVER_NAME "i965"
-
-#define I965_SURFACE_TYPE_IMAGE 0
-#define I965_SURFACE_TYPE_SURFACE 1
-
-#define I965_SURFACE_FLAG_FRAME 0x00000000
-#define I965_SURFACE_FLAG_TOP_FIELD_FIRST 0x00000001
-#define I965_SURFACE_FLAG_BOTTOME_FIELD_FIRST 0x00000002
-
-#define DEFAULT_BRIGHTNESS 0
-#define DEFAULT_CONTRAST 50
-#define DEFAULT_HUE 0
-#define DEFAULT_SATURATION 50
-
-#define ENCODER_QUALITY_RANGE 2
-#define ENCODER_DEFAULT_QUALITY 1
-#define ENCODER_HIGH_QUALITY ENCODER_DEFAULT_QUALITY
-#define ENCODER_LOW_QUALITY 2
-
-#define I965_MAX_NUM_ROI_REGIONS 8
-
-#define ENCODER_LP_QUALITY_RANGE 8
-
-#define HAS_MPEG2_DECODING(ctx) ((ctx)->codec_info->has_mpeg2_decoding && \
- (ctx)->intel.has_bsd)
-
-#define HAS_MPEG2_ENCODING(ctx) ((ctx)->codec_info->has_mpeg2_encoding && \
- (ctx)->intel.has_bsd)
-
-#define HAS_H264_DECODING(ctx) ((ctx)->codec_info->has_h264_decoding && \
- (ctx)->intel.has_bsd)
-
-#define HAS_H264_ENCODING(ctx) ((ctx)->codec_info->has_h264_encoding && \
- (ctx)->intel.has_bsd)
-
-#define HAS_LP_H264_ENCODING(ctx) ((ctx)->codec_info->has_lp_h264_encoding && \
- (ctx)->intel.has_bsd)
-
-#define HAS_VC1_DECODING(ctx) ((ctx)->codec_info->has_vc1_decoding && \
- (ctx)->intel.has_bsd)
-
-#define HAS_JPEG_DECODING(ctx) ((ctx)->codec_info->has_jpeg_decoding && \
- (ctx)->intel.has_bsd)
-
-#define HAS_JPEG_ENCODING(ctx) ((ctx)->codec_info->has_jpeg_encoding && \
- (ctx)->intel.has_bsd)
-
-#define HAS_VPP(ctx) ((ctx)->codec_info->has_vpp)
-
-#define HAS_ACCELERATED_GETIMAGE(ctx) ((ctx)->codec_info->has_accelerated_getimage)
-
-#define HAS_ACCELERATED_PUTIMAGE(ctx) ((ctx)->codec_info->has_accelerated_putimage)
-
-#define HAS_TILED_SURFACE(ctx) ((ctx)->codec_info->has_tiled_surface)
-
-#define HAS_VP8_DECODING(ctx) ((ctx)->codec_info->has_vp8_decoding && \
- (ctx)->intel.has_bsd)
-
-#define HAS_VP8_ENCODING(ctx) ((ctx)->codec_info->has_vp8_encoding && \
- (ctx)->intel.has_bsd)
-
-#define HAS_H264_MVC_DECODING(ctx) \
- (HAS_H264_DECODING(ctx) && (ctx)->codec_info->h264_mvc_dec_profiles)
-
-#define HAS_H264_MVC_DECODING_PROFILE(ctx, profile) \
- (HAS_H264_MVC_DECODING(ctx) && \
- ((ctx)->codec_info->h264_mvc_dec_profiles & (1U << profile)))
-
-#define HAS_H264_MVC_ENCODING(ctx) ((ctx)->codec_info->has_h264_mvc_encoding && \
- (ctx)->intel.has_bsd)
-
-#define HAS_HEVC_DECODING(ctx) ((ctx)->codec_info->has_hevc_decoding && \
- (ctx)->intel.has_bsd)
-
-#define HAS_HEVC_ENCODING(ctx) ((ctx)->codec_info->has_hevc_encoding && \
- (ctx)->intel.has_bsd)
-
-#define HAS_VP9_DECODING(ctx) ((ctx)->codec_info->has_vp9_decoding && \
- (ctx)->intel.has_bsd)
-
-#define HAS_VP9_DECODING_PROFILE(ctx, profile) \
- (HAS_VP9_DECODING(ctx) && \
- ((ctx)->codec_info->vp9_dec_profiles & (1U << (profile - VAProfileVP9Profile0))))
-
-#define HAS_HEVC10_DECODING(ctx) ((ctx)->codec_info->has_hevc10_decoding && \
- (ctx)->intel.has_bsd)
-#define HAS_HEVC10_ENCODING(ctx) ((ctx)->codec_info->has_hevc10_encoding && \
- (ctx)->intel.has_bsd)
-
-#define HAS_VPP_P010(ctx) ((ctx)->codec_info->has_vpp_p010 && \
- (ctx)->intel.has_bsd)
-
-#define HAS_VP9_ENCODING(ctx) ((ctx)->codec_info->has_vp9_encoding && \
- (ctx)->intel.has_bsd)
-
-#define HAS_VP9_ENCODING_PROFILE(ctx, profile) \
- (HAS_VP9_ENCODING(ctx) && \
- ((ctx)->codec_info->vp9_enc_profiles & (1U << (profile - VAProfileVP9Profile0))))
-
-struct i965_surface
-{
- struct object_base *base;
- int type;
- int flags;
-};
-
-struct i965_kernel
-{
- char *name;
- int interface;
- const uint32_t (*bin)[4];
- int size;
- dri_bo *bo;
- unsigned int kernel_offset;
-};
-
-struct buffer_store
-{
- unsigned char *buffer;
- dri_bo *bo;
- int ref_count;
- int num_elements;
-};
-
-struct object_config
-{
- struct object_base base;
- VAProfile profile;
- VAEntrypoint entrypoint;
- VAConfigAttrib attrib_list[I965_MAX_CONFIG_ATTRIBUTES];
- int num_attribs;
-
- VAGenericID wrapper_config;
-};
-
-#define NUM_SLICES 10
-
-struct codec_state_base {
- uint32_t chroma_formats;
-};
-
-struct decode_state
-{
- struct codec_state_base base;
- struct buffer_store *pic_param;
- struct buffer_store **slice_params;
- struct buffer_store *iq_matrix;
- struct buffer_store *bit_plane;
- struct buffer_store *huffman_table;
- struct buffer_store **slice_datas;
- struct buffer_store *probability_data;
- VASurfaceID current_render_target;
- int max_slice_params;
- int max_slice_datas;
- int num_slice_params;
- int num_slice_datas;
-
- struct object_surface *render_object;
- struct object_surface *reference_objects[16]; /* Up to 2 reference surfaces are valid for MPEG-2,*/
-};
-
-#define SLICE_PACKED_DATA_INDEX_TYPE 0x80000000
-#define SLICE_PACKED_DATA_INDEX_MASK 0x00FFFFFF
-
-struct encode_state
-{
- struct codec_state_base base;
- struct buffer_store *iq_matrix;
- struct buffer_store *q_matrix;
- struct buffer_store *huffman_table;
-
- /* for ext */
- struct buffer_store *seq_param_ext;
- struct buffer_store *pic_param_ext;
- struct buffer_store *packed_header_param[5];
- struct buffer_store *packed_header_data[5];
- struct buffer_store **slice_params_ext;
- struct buffer_store *encmb_map;
- int max_slice_params_ext;
- int num_slice_params_ext;
-
- /* Check the user-configurable packed_header attribute.
- * Currently it is mainly used to check whether the packed slice_header data
- * is provided by user or the driver.
- * TBD: It will check for the packed SPS/PPS/MISC/RAWDATA and so on.
- */
- unsigned int packed_header_flag;
- /* For the packed data that needs to be inserted into video clip */
- /* currently it is mainly to track packed raw data and packed slice_header data. */
- struct buffer_store **packed_header_params_ext;
- int max_packed_header_params_ext;
- int num_packed_header_params_ext;
- struct buffer_store **packed_header_data_ext;
- int max_packed_header_data_ext;
- int num_packed_header_data_ext;
-
- /* the index of current vps and sps ,special for HEVC*/
- int vps_sps_seq_index;
- /* the index of current slice */
- int slice_index;
- /* the array is determined by max_slice_params_ext */
- int max_slice_num;
- /* This is to store the first index of packed data for one slice */
- int *slice_rawdata_index;
- /* This is to store the number of packed data for one slice.
- * Both packed rawdata and slice_header data are tracked by this
- * this variable. That is to say: When one packed slice_header is parsed,
- * this variable will also be increased.
- */
- int *slice_rawdata_count;
-
- /* This is to store the index of packed slice header for one slice */
- int *slice_header_index;
-
- int last_packed_header_type;
-
- int has_layers;
-
- struct buffer_store *misc_param[16][8];
-
- VASurfaceID current_render_target;
- struct object_surface *input_yuv_object;
- struct object_surface *reconstructed_object;
- struct object_buffer *coded_buf_object;
- struct object_surface *reference_objects[16]; /* Up to 2 reference surfaces are valid for MPEG-2,*/
-};
-
-struct proc_state
-{
- struct codec_state_base base;
- struct buffer_store *pipeline_param;
-
- VASurfaceID current_render_target;
-};
-
-#define CODEC_DEC 0
-#define CODEC_ENC 1
-#define CODEC_PROC 2
-
-union codec_state
-{
- struct codec_state_base base;
- struct decode_state decode;
- struct encode_state encode;
- struct proc_state proc;
-};
-
-struct hw_context
-{
- VAStatus (*run)(VADriverContextP ctx,
- VAProfile profile,
- union codec_state *codec_state,
- struct hw_context *hw_context);
- void (*destroy)(void *);
- VAStatus (*get_status)(VADriverContextP ctx,
- struct hw_context *hw_context,
- void *buffer);
- struct intel_batchbuffer *batch;
-};
-
-struct object_context
-{
- struct object_base base;
- VAContextID context_id;
- struct object_config *obj_config;
- VASurfaceID *render_targets; //input->encode, output->decode
- int num_render_targets;
- int picture_width;
- int picture_height;
- int flags;
- int codec_type;
- union codec_state codec_state;
- struct hw_context *hw_context;
-
- VAGenericID wrapper_context;
-};
-
-#define SURFACE_REFERENCED (1 << 0)
-#define SURFACE_DERIVED (1 << 2)
-#define SURFACE_ALL_MASK ((SURFACE_REFERENCED) | \
- (SURFACE_DERIVED))
-
-struct object_surface
-{
- struct object_base base;
- VASurfaceStatus status;
- VASubpictureID subpic[I965_MAX_SUBPIC_SUM];
- struct object_subpic *obj_subpic[I965_MAX_SUBPIC_SUM];
- unsigned int subpic_render_idx;
-
- int width; /* the pitch of plane 0 in bytes in horizontal direction */
- int height; /* the pitch of plane 0 in bytes in vertical direction */
- int size;
- int orig_width; /* the width of plane 0 in pixels */
- int orig_height; /* the height of plane 0 in pixels */
- int flags;
- unsigned int fourcc;
- dri_bo *bo;
- unsigned int expected_format;
- VAImageID locked_image_id;
- VAImageID derived_image_id;
- void (*free_private_data)(void **data);
- void *private_data;
- unsigned int subsampling;
- int x_cb_offset;
- int y_cb_offset;
- int x_cr_offset;
- int y_cr_offset;
- int cb_cr_width;
- int cb_cr_height;
- int cb_cr_pitch;
- /* user specified attributes see: VASurfaceAttribExternalBuffers/VA_SURFACE_ATTRIB_MEM_TYPE_VA */
- uint32_t user_disable_tiling : 1;
- uint32_t user_h_stride_set : 1;
- uint32_t user_v_stride_set : 1;
- /* we need clear right and bottom border for NV12.
- * to avoid encode run to run issue*/
- uint32_t border_cleared : 1;
-
- VAGenericID wrapper_surface;
-
- int exported_primefd;
-};
-
-struct object_buffer
-{
- struct object_base base;
- struct buffer_store *buffer_store;
- int max_num_elements;
- int num_elements;
- int size_element;
- VABufferType type;
-
- /* Export state */
- unsigned int export_refcount;
- VABufferInfo export_state;
-
- VAGenericID wrapper_buffer;
- VAContextID context_id;
-};
-
-struct object_image
-{
- struct object_base base;
- VAImage image;
- dri_bo *bo;
- unsigned int *palette;
- VASurfaceID derived_surface;
-};
-
-struct object_subpic
-{
- struct object_base base;
- VAImageID image;
- struct object_image *obj_image;
- VARectangle src_rect;
- VARectangle dst_rect;
- unsigned int format;
- int width;
- int height;
- int pitch;
- float global_alpha;
- dri_bo *bo;
- unsigned int flags;
-};
-
-#define I965_RING_NULL 0
-#define I965_RING_BSD 1
-#define I965_RING_BLT 2
-#define I965_RING_VEBOX 3
-
-struct i965_filter
-{
- VAProcFilterType type;
- int ring;
-};
-
-struct i965_driver_data;
-
-struct hw_codec_info
-{
- struct hw_context *(*dec_hw_context_init)(VADriverContextP, struct object_config *);
- struct hw_context *(*enc_hw_context_init)(VADriverContextP, struct object_config *);
- struct hw_context *(*proc_hw_context_init)(VADriverContextP, struct object_config *);
- bool (*render_init)(VADriverContextP);
- void (*post_processing_context_init)(VADriverContextP, void *, struct intel_batchbuffer *);
- void (*preinit_hw_codec)(VADriverContextP, struct hw_codec_info *);
-
- /**
- * Allows HW info to support per-codec max resolution. If this functor is
- * not initialized, then @max_width and @max_height will be used as the
- * default maximum resolution for all codecs on this HW info.
- */
- void (*max_resolution)(struct i965_driver_data *, struct object_config *, int *, int *);
-
- int max_width;
- int max_height;
- int min_linear_wpitch;
- int min_linear_hpitch;
-
- unsigned int h264_mvc_dec_profiles;
- unsigned int vp9_dec_profiles;
- unsigned int vp9_enc_profiles;
-
- unsigned int h264_dec_chroma_formats;
- unsigned int jpeg_dec_chroma_formats;
- unsigned int jpeg_enc_chroma_formats;
- unsigned int hevc_dec_chroma_formats;
- unsigned int vp9_dec_chroma_formats;
-
- unsigned int has_mpeg2_decoding:1;
- unsigned int has_mpeg2_encoding:1;
- unsigned int has_h264_decoding:1;
- unsigned int has_h264_encoding:1;
- unsigned int has_vc1_decoding:1;
- unsigned int has_vc1_encoding:1;
- unsigned int has_jpeg_decoding:1;
- unsigned int has_jpeg_encoding:1;
- unsigned int has_vpp:1;
- unsigned int has_accelerated_getimage:1;
- unsigned int has_accelerated_putimage:1;
- unsigned int has_tiled_surface:1;
- unsigned int has_di_motion_adptive:1;
- unsigned int has_di_motion_compensated:1;
- unsigned int has_vp8_decoding:1;
- unsigned int has_vp8_encoding:1;
- unsigned int has_h264_mvc_encoding:1;
- unsigned int has_hevc_decoding:1;
- unsigned int has_hevc_encoding:1;
- unsigned int has_hevc10_encoding:1;
- unsigned int has_hevc10_decoding:1;
- unsigned int has_vp9_decoding:1;
- unsigned int has_vpp_p010:1;
- unsigned int has_lp_h264_encoding:1;
- unsigned int has_vp9_encoding:1;
-
- unsigned int lp_h264_brc_mode;
-
- unsigned int num_filters;
- struct i965_filter filters[VAProcFilterCount];
-};
-
-
-#include "i965_render.h"
-#include "i965_gpe_utils.h"
-
-struct i965_driver_data
-{
- struct intel_driver_data intel;
- struct object_heap config_heap;
- struct object_heap context_heap;
- struct object_heap surface_heap;
- struct object_heap buffer_heap;
- struct object_heap image_heap;
- struct object_heap subpic_heap;
- struct hw_codec_info *codec_info;
-
- _I965Mutex render_mutex;
- _I965Mutex pp_mutex;
- struct intel_batchbuffer *batch;
- struct intel_batchbuffer *pp_batch;
- struct i965_render_state render_state;
- void *pp_context;
- char va_vendor[256];
-
- VADisplayAttribute *display_attributes;
- unsigned int num_display_attributes;
- VADisplayAttribute *rotation_attrib;
- VADisplayAttribute *brightness_attrib;
- VADisplayAttribute *contrast_attrib;
- VADisplayAttribute *hue_attrib;
- VADisplayAttribute *saturation_attrib;
- VAContextID current_context_id;
-
- /* VA/DRI (X11) specific data */
- struct va_dri_output *dri_output;
-
- /* VA/Wayland specific data */
- struct va_wl_output *wl_output;
-
- VADriverContextP wrapper_pdrvctx;
-
- struct i965_gpe_table gpe_table;
-};
-
-#define NEW_CONFIG_ID() object_heap_allocate(&i965->config_heap);
-#define NEW_CONTEXT_ID() object_heap_allocate(&i965->context_heap);
-#define NEW_SURFACE_ID() object_heap_allocate(&i965->surface_heap);
-#define NEW_BUFFER_ID() object_heap_allocate(&i965->buffer_heap);
-#define NEW_IMAGE_ID() object_heap_allocate(&i965->image_heap);
-#define NEW_SUBPIC_ID() object_heap_allocate(&i965->subpic_heap);
-
-#define CONFIG(id) ((struct object_config *)object_heap_lookup(&i965->config_heap, id))
-#define CONTEXT(id) ((struct object_context *)object_heap_lookup(&i965->context_heap, id))
-#define SURFACE(id) ((struct object_surface *)object_heap_lookup(&i965->surface_heap, id))
-#define BUFFER(id) ((struct object_buffer *)object_heap_lookup(&i965->buffer_heap, id))
-#define IMAGE(id) ((struct object_image *)object_heap_lookup(&i965->image_heap, id))
-#define SUBPIC(id) ((struct object_subpic *)object_heap_lookup(&i965->subpic_heap, id))
-
-#define FOURCC_IA44 0x34344149
-#define FOURCC_AI44 0x34344941
-
-#define STRIDE(w) (((w) + 0xf) & ~0xf)
-#define SIZE_YUV420(w, h) (h * (STRIDE(w) + STRIDE(w >> 1)))
-
-static INLINE struct i965_driver_data *
-i965_driver_data(VADriverContextP ctx)
-{
- return (struct i965_driver_data *)(ctx->pDriverData);
-}
-
-VAStatus
-i965_check_alloc_surface_bo(VADriverContextP ctx,
- struct object_surface *obj_surface,
- int tiled,
- unsigned int fourcc,
- unsigned int subsampling);
-
-int
-va_enc_packed_type_to_idx(int packed_type);
-
-/* reserve 2 byte for internal using */
-#define CODEC_H264 0
-#define CODEC_MPEG2 1
-#define CODEC_H264_MVC 2
-#define CODEC_JPEG 3
-#define CODEC_VP8 4
-#define CODEC_HEVC 5
-#define CODEC_VP9 6
-
-#define H264_DELIMITER0 0x00
-#define H264_DELIMITER1 0x00
-#define H264_DELIMITER2 0x00
-#define H264_DELIMITER3 0x00
-#define H264_DELIMITER4 0x00
-
-#define MPEG2_DELIMITER0 0x00
-#define MPEG2_DELIMITER1 0x00
-#define MPEG2_DELIMITER2 0x00
-#define MPEG2_DELIMITER3 0x00
-#define MPEG2_DELIMITER4 0xb0
-
-#define HEVC_DELIMITER0 0x00
-#define HEVC_DELIMITER1 0x00
-#define HEVC_DELIMITER2 0x00
-#define HEVC_DELIMITER3 0x00
-#define HEVC_DELIMITER4 0x00
-
-struct i965_coded_buffer_segment
-{
- union {
- VACodedBufferSegment base;
- unsigned char pad0[64]; /* change the size if sizeof(VACodedBufferSegment) > 64 */
- };
-
- unsigned int mapped;
- unsigned int codec;
- unsigned int status_support;
- unsigned int pad1;
-
- unsigned int codec_private_data[512]; /* Store codec private data, must be 16-bytes aligned */
-};
-
-#define I965_CODEDBUFFER_HEADER_SIZE ALIGN(sizeof(struct i965_coded_buffer_segment), 0x1000)
-
-extern VAStatus i965_MapBuffer(VADriverContextP ctx,
- VABufferID buf_id, /* in */
- void **pbuf); /* out */
-
-extern VAStatus i965_UnmapBuffer(VADriverContextP ctx, VABufferID buf_id);
-
-extern VAStatus i965_DestroySurfaces(VADriverContextP ctx,
- VASurfaceID *surface_list,
- int num_surfaces);
-
-extern VAStatus i965_CreateSurfaces(VADriverContextP ctx,
- int width,
- int height,
- int format,
- int num_surfaces,
- VASurfaceID *surfaces);
-
-#define I965_SURFACE_MEM_NATIVE 0
-#define I965_SURFACE_MEM_GEM_FLINK 1
-#define I965_SURFACE_MEM_DRM_PRIME 2
-
-void
-i965_destroy_surface_storage(struct object_surface *obj_surface);
-
-#endif /* _I965_DRV_VIDEO_H_ */
diff --git a/src/i965_encoder.c b/src/i965_encoder.c
deleted file mode 100644
index 0a648d4..0000000
--- a/src/i965_encoder.c
+++ /dev/null
@@ -1,1489 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Zhou Chang <chang.zhou@intel.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "i965_encoder.h"
-#include "gen6_vme.h"
-#include "gen6_mfc.h"
-
-#include "i965_post_processing.h"
-
-static struct intel_fraction
-reduce_fraction(struct intel_fraction f)
-{
- unsigned int a = f.num, b = f.den, c;
- while ((c = a % b)) {
- a = b;
- b = c;
- }
- return (struct intel_fraction) { f.num / b, f.den / b };
-}
-
-static VAStatus
-clear_border(struct object_surface *obj_surface)
-{
- int width[3], height[3], hstride[3], vstride[3]; /* in byte */
- int planes;
- unsigned char* p;
- int i,j;
-
- if (obj_surface->border_cleared)
- return VA_STATUS_SUCCESS;
-
- if (obj_surface->fourcc == VA_FOURCC_NV12) {
- planes = 2;
- width[0] = width[1] = obj_surface->orig_width;
- height[0] = obj_surface->orig_height;
- height[1] = obj_surface->orig_height / 2;
- hstride[0] = hstride[1] = obj_surface->width;
- vstride[0]= obj_surface->height;
- vstride[1] = obj_surface->height / 2;
-
- } else {
- /* todo add P010 */
- return VA_STATUS_SUCCESS;
- }
- drm_intel_gem_bo_map_gtt(obj_surface->bo);
-
- p = (unsigned char*)obj_surface->bo->virtual;
- if (!p)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- for (i = 0; i < planes; i++) {
- int w = width[i];
- int h = height[i];
- int hs = hstride[i];
- int vs = vstride[i];
- /* right */
- for (j = 0; j < h; j++) {
- memset(p + w, 0, hs - w);
- p += hs;
- }
- /* bottom */
- for (/* nothing */; j < vs; j++) {
- memset(p, 0, hs);
- p += hs;
- }
-
- }
- drm_intel_gem_bo_unmap_gtt(obj_surface->bo);
- obj_surface->border_cleared = true;
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-intel_encoder_check_yuv_surface(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_surface src_surface, dst_surface;
- struct object_surface *obj_surface;
- VAStatus status;
- VARectangle rect;
-
- /* releae the temporary surface */
- if (encoder_context->is_tmp_id) {
- i965_DestroySurfaces(ctx, &encoder_context->input_yuv_surface, 1);
- encode_state->input_yuv_object = NULL;
- }
-
- encoder_context->is_tmp_id = 0;
- obj_surface = SURFACE(encode_state->current_render_target);
- assert(obj_surface && obj_surface->bo);
-
- if (!obj_surface || !obj_surface->bo)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- if (VAProfileHEVCMain10 == profile &&
- obj_surface->fourcc != VA_FOURCC_P010)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- if (obj_surface->fourcc == VA_FOURCC_NV12 ||
- (VAProfileHEVCMain10 == profile &&
- obj_surface->fourcc == VA_FOURCC_P010)) {
-
- unsigned int tiling = 0, swizzle = 0;
- dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
-
- if (tiling == I915_TILING_Y) {
- encoder_context->input_yuv_surface = encode_state->current_render_target;
- encode_state->input_yuv_object = obj_surface;
- return clear_border(obj_surface);
- }
- }
-
- rect.x = 0;
- rect.y = 0;
- rect.width = obj_surface->orig_width;
- rect.height = obj_surface->orig_height;
-
- src_surface.base = (struct object_base *)obj_surface;
- src_surface.type = I965_SURFACE_TYPE_SURFACE;
- src_surface.flags = I965_SURFACE_FLAG_FRAME;
-
- status = i965_CreateSurfaces(ctx,
- obj_surface->orig_width,
- obj_surface->orig_height,
- VA_RT_FORMAT_YUV420,
- 1,
- &encoder_context->input_yuv_surface);
- ASSERT_RET(status == VA_STATUS_SUCCESS, status);
-
- obj_surface = SURFACE(encoder_context->input_yuv_surface);
- encode_state->input_yuv_object = obj_surface;
- assert(obj_surface);
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
-
- dst_surface.base = (struct object_base *)obj_surface;
- dst_surface.type = I965_SURFACE_TYPE_SURFACE;
- dst_surface.flags = I965_SURFACE_FLAG_FRAME;
-
- status = i965_image_processing(ctx,
- &src_surface,
- &rect,
- &dst_surface,
- &rect);
- assert(status == VA_STATUS_SUCCESS);
-
- encoder_context->is_tmp_id = 1;
-
- return clear_border(obj_surface);
-}
-
-
-static VAStatus
-intel_encoder_check_jpeg_yuv_surface(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_surface src_surface, dst_surface;
- struct object_surface *obj_surface;
- VAStatus status;
- VARectangle rect;
- int format=0, fourcc=0, subsample=0;
-
- /* releae the temporary surface */
- if (encoder_context->is_tmp_id) {
- i965_DestroySurfaces(ctx, &encoder_context->input_yuv_surface, 1);
- encode_state->input_yuv_object = NULL;
- }
-
- encoder_context->is_tmp_id = 0;
- obj_surface = SURFACE(encode_state->current_render_target);
- assert(obj_surface && obj_surface->bo);
-
- if (!obj_surface || !obj_surface->bo)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- unsigned int tiling = 0, swizzle = 0;
-
- dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
-
- if (tiling == I915_TILING_Y) {
- if( (obj_surface->fourcc==VA_FOURCC_NV12) || (obj_surface->fourcc==VA_FOURCC_UYVY) ||
- (obj_surface->fourcc==VA_FOURCC_YUY2) || (obj_surface->fourcc==VA_FOURCC_Y800) ||
- (obj_surface->fourcc==VA_FOURCC_RGBA) || (obj_surface->fourcc==VA_FOURCC_444P) ) {
- encoder_context->input_yuv_surface = encode_state->current_render_target;
- encode_state->input_yuv_object = obj_surface;
- return VA_STATUS_SUCCESS;
- }
- }
-
- rect.x = 0;
- rect.y = 0;
- rect.width = obj_surface->orig_width;
- rect.height = obj_surface->orig_height;
-
- src_surface.base = (struct object_base *)obj_surface;
- src_surface.type = I965_SURFACE_TYPE_SURFACE;
- src_surface.flags = I965_SURFACE_FLAG_FRAME;
-
- switch( obj_surface->fourcc) {
-
- case VA_FOURCC_YUY2:
- fourcc = VA_FOURCC_YUY2;
- format = VA_RT_FORMAT_YUV422;
- subsample = SUBSAMPLE_YUV422H;
- break;
-
- case VA_FOURCC_UYVY:
- fourcc = VA_FOURCC_UYVY;
- format = VA_RT_FORMAT_YUV422;
- subsample = SUBSAMPLE_YUV422H;
- break;
-
- case VA_FOURCC_Y800:
- fourcc = VA_FOURCC_Y800;
- format = VA_RT_FORMAT_YUV400;
- subsample = SUBSAMPLE_YUV400;
- break;
-
- case VA_FOURCC_444P:
- fourcc = VA_FOURCC_444P;
- format = VA_RT_FORMAT_YUV444;
- subsample = SUBSAMPLE_YUV444;
- break;
-
- case VA_FOURCC_RGBA:
- fourcc = VA_FOURCC_RGBA;
- format = VA_RT_FORMAT_RGB32;
- subsample = SUBSAMPLE_RGBX;
- break;
-
- default: //All other scenarios will have NV12 format
- fourcc = VA_FOURCC_NV12;
- format = VA_RT_FORMAT_YUV420;
- subsample = SUBSAMPLE_YUV420;
- break;
- }
-
- status = i965_CreateSurfaces(ctx,
- obj_surface->orig_width,
- obj_surface->orig_height,
- format,
- 1,
- &encoder_context->input_yuv_surface);
- assert(status == VA_STATUS_SUCCESS);
-
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- obj_surface = SURFACE(encoder_context->input_yuv_surface);
- encode_state->input_yuv_object = obj_surface;
- assert(obj_surface);
- i965_check_alloc_surface_bo(ctx, obj_surface, 1, fourcc, subsample);
-
- dst_surface.base = (struct object_base *)obj_surface;
- dst_surface.type = I965_SURFACE_TYPE_SURFACE;
- dst_surface.flags = I965_SURFACE_FLAG_FRAME;
-
- //The Y800 format is expected to be tiled.
- //Linear Y800 is a corner case and needs code in the i965_image_processing.
- if(obj_surface->fourcc != VA_FOURCC_Y800){
- status = i965_image_processing(ctx,
- &src_surface,
- &rect,
- &dst_surface,
- &rect);
- assert(status == VA_STATUS_SUCCESS);
- }
-
- encoder_context->is_tmp_id = 1;
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-intel_encoder_check_brc_h264_sequence_parameter(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- unsigned int *seq_bits_per_second)
-{
- VAEncSequenceParameterBufferH264 *seq_param = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- struct intel_fraction framerate;
- unsigned short num_pframes_in_gop, num_bframes_in_gop;
-
- if (!encoder_context->is_new_sequence)
- return VA_STATUS_SUCCESS;
-
- assert(seq_param);
-
- if (!seq_param->num_units_in_tick || !seq_param->time_scale) {
- framerate = (struct intel_fraction) { 30, 1 };
- } else {
- // for the highest layer
- framerate = (struct intel_fraction) { seq_param->time_scale, 2 * seq_param->num_units_in_tick };
- }
- framerate = reduce_fraction(framerate);
-
- encoder_context->brc.num_iframes_in_gop = 1; // Always 1
-
- if (seq_param->intra_period == 0) { // E.g. IDRPP... / IDR(PBB)... (no IDR/I any more)
- if (seq_param->ip_period == 0)
- goto error;
-
- encoder_context->brc.gop_size = (framerate.num + framerate.den - 1) / framerate.den; // fake
- num_pframes_in_gop = (encoder_context->brc.gop_size +
- seq_param->ip_period - 1) / seq_param->ip_period - 1;
- } else if (seq_param->intra_period == 1) { // E.g. IDRIII...
- encoder_context->brc.gop_size = 1;
- num_pframes_in_gop = 0;
- } else {
- if (seq_param->ip_period == 0)
- goto error;
-
- encoder_context->brc.gop_size = seq_param->intra_period;
- num_pframes_in_gop = (encoder_context->brc.gop_size +
- seq_param->ip_period - 1) / seq_param->ip_period - 1;
- }
-
- num_bframes_in_gop = (encoder_context->brc.gop_size -
- encoder_context->brc.num_iframes_in_gop - num_pframes_in_gop);
-
- if (num_pframes_in_gop != encoder_context->brc.num_pframes_in_gop ||
- num_bframes_in_gop != encoder_context->brc.num_bframes_in_gop ||
- framerate.num != encoder_context->brc.framerate[encoder_context->layer.num_layers - 1].num ||
- framerate.den != encoder_context->brc.framerate[encoder_context->layer.num_layers - 1].den) {
- encoder_context->brc.num_pframes_in_gop = num_pframes_in_gop;
- encoder_context->brc.num_bframes_in_gop = num_bframes_in_gop;
- encoder_context->brc.framerate[encoder_context->layer.num_layers - 1] = framerate;
- encoder_context->brc.need_reset = 1;
- }
-
- if (!encoder_context->brc.hrd_buffer_size ||
- !encoder_context->brc.hrd_initial_buffer_fullness) {
- encoder_context->brc.hrd_buffer_size = seq_param->bits_per_second << 1;
- encoder_context->brc.hrd_initial_buffer_fullness = seq_param->bits_per_second;
- }
-
- *seq_bits_per_second = seq_param->bits_per_second;
-
- return VA_STATUS_SUCCESS;
-
-error:
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-}
-
-static VAStatus
-intel_encoder_check_brc_vp8_sequence_parameter(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- unsigned int *seq_bits_per_second)
-{
- VAEncSequenceParameterBufferVP8 *seq_param = (VAEncSequenceParameterBufferVP8 *)encode_state->seq_param_ext->buffer;
- unsigned int num_pframes_in_gop;
-
- if (!encoder_context->is_new_sequence)
- return VA_STATUS_SUCCESS;
-
- assert(seq_param);
-
- encoder_context->brc.num_iframes_in_gop = 1;// Always 1
- encoder_context->brc.num_bframes_in_gop = 0;// No B frame
-
- if (seq_param->intra_period == 0) { // E.g. IPPP... (only one I frame in the stream)
- encoder_context->brc.gop_size = 30; // fake
- } else {
- encoder_context->brc.gop_size = seq_param->intra_period;
- }
-
- num_pframes_in_gop = encoder_context->brc.gop_size - 1;
-
- if (!encoder_context->brc.framerate[encoder_context->layer.num_layers - 1].num) {
- // for the highest layer
- encoder_context->brc.framerate[encoder_context->layer.num_layers - 1] = (struct intel_fraction) { 30, 1 };
- encoder_context->brc.need_reset = 1;
- }
-
- if (num_pframes_in_gop != encoder_context->brc.num_pframes_in_gop) {
- encoder_context->brc.num_pframes_in_gop = num_pframes_in_gop;
- encoder_context->brc.need_reset = 1;
- }
-
- if (!encoder_context->brc.hrd_buffer_size ||
- !encoder_context->brc.hrd_initial_buffer_fullness) {
- encoder_context->brc.hrd_buffer_size = seq_param->bits_per_second << 1;
- encoder_context->brc.hrd_initial_buffer_fullness = seq_param->bits_per_second;
- encoder_context->brc.need_reset = 1;
- }
-
- *seq_bits_per_second = seq_param->bits_per_second;
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-intel_encoder_check_brc_hevc_sequence_parameter(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- unsigned int *seq_bits_per_second)
-{
- VAEncSequenceParameterBufferHEVC *seq_param = (VAEncSequenceParameterBufferHEVC*)encode_state->seq_param_ext->buffer;
- struct intel_fraction framerate;
- unsigned int gop_size, num_iframes_in_gop, num_pframes_in_gop, num_bframes_in_gop;
-
- if (!encoder_context->is_new_sequence)
- return VA_STATUS_SUCCESS;
- if (!seq_param)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- if (!seq_param->vui_time_scale || !seq_param->vui_num_units_in_tick)
- framerate = (struct intel_fraction) { 30, 1 };
- else
- framerate = (struct intel_fraction) { seq_param->vui_time_scale, seq_param->vui_num_units_in_tick };
- framerate = reduce_fraction(framerate);
-
- num_iframes_in_gop = 1;
- if (seq_param->intra_period == 0) {
- gop_size = -1;
- num_pframes_in_gop = -1;
- } else if (seq_param->intra_period == 1) {
- gop_size = 1;
- num_pframes_in_gop = 0;
- } else {
- gop_size = seq_param->intra_period;
- num_pframes_in_gop = (seq_param->intra_period + seq_param->ip_period - 1) / seq_param->ip_period - 1;
- }
- num_bframes_in_gop = gop_size - num_iframes_in_gop - num_pframes_in_gop;
-
- if (encoder_context->brc.framerate[0].num != framerate.num ||
- encoder_context->brc.framerate[0].den != framerate.den) {
- encoder_context->brc.framerate[0] = framerate;
- encoder_context->brc.need_reset = 1;
- }
-
- if (encoder_context->brc.gop_size != gop_size ||
- encoder_context->brc.num_iframes_in_gop != num_iframes_in_gop ||
- encoder_context->brc.num_pframes_in_gop != num_pframes_in_gop ||
- encoder_context->brc.num_bframes_in_gop != num_bframes_in_gop) {
- encoder_context->brc.gop_size = gop_size;
- encoder_context->brc.num_iframes_in_gop = num_iframes_in_gop;
- encoder_context->brc.num_pframes_in_gop = num_pframes_in_gop;
- encoder_context->brc.num_bframes_in_gop = num_bframes_in_gop;
- encoder_context->brc.need_reset = 1;
- }
-
- *seq_bits_per_second = seq_param->bits_per_second;
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-intel_encoder_check_brc_vp9_sequence_parameter(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- unsigned int *seq_bits_per_second)
-{
- VAEncSequenceParameterBufferVP9 *seq_param = (VAEncSequenceParameterBufferVP9*)encode_state->seq_param_ext->buffer;
- unsigned int gop_size;
-
- if (!encoder_context->is_new_sequence)
- return VA_STATUS_SUCCESS;
- if (!seq_param)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- if (seq_param->intra_period == 0)
- gop_size = -1; // Dummy value (infinity).
- else
- gop_size = seq_param->intra_period;
-
- if (encoder_context->brc.gop_size != gop_size) {
- encoder_context->brc.gop_size = gop_size;
- encoder_context->brc.need_reset = 1;
- }
-
- *seq_bits_per_second = seq_param->bits_per_second;
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-intel_encoder_check_brc_sequence_parameter(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context,
- unsigned int *seq_bits_per_second)
-{
- *seq_bits_per_second = 0;
-
- switch (encoder_context->codec) {
- case CODEC_H264:
- case CODEC_H264_MVC:
- return intel_encoder_check_brc_h264_sequence_parameter(ctx, encode_state, encoder_context, seq_bits_per_second);
-
- case CODEC_VP8:
- return intel_encoder_check_brc_vp8_sequence_parameter(ctx, encode_state, encoder_context, seq_bits_per_second);
-
- case CODEC_HEVC:
- return intel_encoder_check_brc_hevc_sequence_parameter(ctx, encode_state, encoder_context, seq_bits_per_second);
-
- case CODEC_VP9:
- return intel_encoder_check_brc_vp9_sequence_parameter(ctx, encode_state, encoder_context, seq_bits_per_second);
-
- default:
- // TODO: other codecs
- return VA_STATUS_SUCCESS;
- }
-}
-
-static void
-intel_encoder_check_rate_control_parameter(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- VAEncMiscParameterRateControl *misc,
- int *hl_bitrate_updated)
-{
- int temporal_id = 0;
-
- if (encoder_context->layer.num_layers >= 2)
- temporal_id = misc->rc_flags.bits.temporal_id;
-
- if (temporal_id >= encoder_context->layer.num_layers)
- return;
-
- if (misc->rc_flags.bits.reset)
- encoder_context->brc.need_reset = 1;
-
- if (encoder_context->brc.bits_per_second[temporal_id] != misc->bits_per_second) {
- encoder_context->brc.bits_per_second[temporal_id] = misc->bits_per_second;
- encoder_context->brc.need_reset = 1;
- }
-
- if (encoder_context->brc.mb_rate_control[temporal_id] != misc->rc_flags.bits.mb_rate_control) {
- encoder_context->brc.mb_rate_control[temporal_id] = misc->rc_flags.bits.mb_rate_control;
- encoder_context->brc.need_reset = 1;
- }
-
- if (encoder_context->brc.target_percentage[temporal_id] != misc->target_percentage) {
- encoder_context->brc.target_percentage[temporal_id] = misc->target_percentage;
- encoder_context->brc.need_reset = 1;
- }
-
- if (encoder_context->brc.window_size != misc->window_size ||
- encoder_context->brc.initial_qp != misc->initial_qp ||
- encoder_context->brc.min_qp != misc->min_qp) {
- encoder_context->brc.window_size = misc->window_size;
- encoder_context->brc.initial_qp = misc->initial_qp;
- encoder_context->brc.min_qp = misc->min_qp;
- encoder_context->brc.need_reset = 1;
- }
-
- if (temporal_id == encoder_context->layer.num_layers - 1)
- *hl_bitrate_updated = 1;
-}
-
-static void
-intel_encoder_check_hrd_parameter(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- VAEncMiscParameterHRD *misc)
-{
- if (encoder_context->brc.hrd_buffer_size != misc->buffer_size ||
- encoder_context->brc.hrd_initial_buffer_fullness != misc->initial_buffer_fullness) {
- encoder_context->brc.hrd_buffer_size = misc->buffer_size;
- encoder_context->brc.hrd_initial_buffer_fullness = misc->initial_buffer_fullness;
- encoder_context->brc.need_reset = 1;
- }
-}
-
-static void
-intel_encoder_check_framerate_parameter(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- VAEncMiscParameterFrameRate *misc)
-{
- struct intel_fraction framerate;
- int temporal_id = 0;
-
- if (encoder_context->layer.num_layers >= 2)
- temporal_id = misc->framerate_flags.bits.temporal_id;
-
- if (temporal_id >= encoder_context->layer.num_layers)
- return;
-
- if (misc->framerate & 0xffff0000)
- framerate = (struct intel_fraction) { misc->framerate & 0xffff, misc->framerate >> 16 & 0xffff };
- else
- framerate = (struct intel_fraction) { misc->framerate, 1 };
- framerate = reduce_fraction(framerate);
-
- if (encoder_context->brc.framerate[temporal_id].num != framerate.num ||
- encoder_context->brc.framerate[temporal_id].den != framerate.den) {
- encoder_context->brc.framerate[temporal_id] = framerate;
- encoder_context->brc.need_reset = 1;
- }
-}
-
-static void
-intel_encoder_check_roi_parameter(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- VAEncMiscParameterBufferROI *misc)
-{
- int i = 0;
-
- encoder_context->brc.num_roi = MIN(misc->num_roi, I965_MAX_NUM_ROI_REGIONS);
- encoder_context->brc.roi_max_delta_qp = misc->max_delta_qp;
- encoder_context->brc.roi_min_delta_qp = misc->min_delta_qp;
- encoder_context->brc.roi_value_is_qp_delta = 0;
-
- if (encoder_context->rate_control_mode != VA_RC_CQP)
- encoder_context->brc.roi_value_is_qp_delta = misc->roi_flags.bits.roi_value_is_qp_delta;
-
- for (i = 0; i < encoder_context->brc.num_roi; i++) {
- encoder_context->brc.roi[i].left = misc->roi->roi_rectangle.x;
- encoder_context->brc.roi[i].right = encoder_context->brc.roi[i].left + misc->roi->roi_rectangle.width;
- encoder_context->brc.roi[i].top = misc->roi->roi_rectangle.y;
- encoder_context->brc.roi[i].bottom = encoder_context->brc.roi[i].top + misc->roi->roi_rectangle.height;
- encoder_context->brc.roi[i].value = misc->roi->roi_value;
- }
-}
-
-static VAStatus
-intel_encoder_check_brc_parameter(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus ret;
- VAEncMiscParameterBuffer *misc_param;
- int i, j;
- int hl_bitrate_updated = 0; // Indicate whether the bitrate for the highest level is changed in misc parameters
- unsigned int seq_bits_per_second = 0;
-
- if (!(encoder_context->rate_control_mode & (VA_RC_CBR | VA_RC_VBR)))
- return VA_STATUS_SUCCESS;
-
- ret = intel_encoder_check_brc_sequence_parameter(ctx, encode_state, encoder_context, &seq_bits_per_second);
-
- if (ret)
- return ret;
-
- for (i = 0; i < ARRAY_ELEMS(encode_state->misc_param); i++) {
- for (j = 0; j < ARRAY_ELEMS(encode_state->misc_param[0]); j++) {
- if (!encode_state->misc_param[i][j] || !encode_state->misc_param[i][j]->buffer)
- continue;
-
- misc_param = (VAEncMiscParameterBuffer *)encode_state->misc_param[i][j]->buffer;
-
- switch (misc_param->type) {
- case VAEncMiscParameterTypeFrameRate:
- intel_encoder_check_framerate_parameter(ctx,
- encoder_context,
- (VAEncMiscParameterFrameRate *)misc_param->data);
- break;
-
- case VAEncMiscParameterTypeRateControl:
- intel_encoder_check_rate_control_parameter(ctx,
- encoder_context,
- (VAEncMiscParameterRateControl *)misc_param->data,
- &hl_bitrate_updated);
- break;
-
- case VAEncMiscParameterTypeHRD:
- intel_encoder_check_hrd_parameter(ctx,
- encoder_context,
- (VAEncMiscParameterHRD *)misc_param->data);
- break;
-
- case VAEncMiscParameterTypeROI:
- intel_encoder_check_roi_parameter(ctx,
- encoder_context,
- (VAEncMiscParameterBufferROI *)misc_param->data);
- break;
-
- default:
- break;
- }
- }
- }
-
- if (!hl_bitrate_updated && seq_bits_per_second &&
- encoder_context->brc.bits_per_second[encoder_context->layer.num_layers - 1] != seq_bits_per_second) {
-
- encoder_context->brc.bits_per_second[encoder_context->layer.num_layers - 1] = seq_bits_per_second;
- encoder_context->brc.need_reset = 1;
-
- }
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-intel_encoder_check_temporal_layer_structure(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAEncMiscParameterBuffer* misc_param;
- VAEncMiscParameterTemporalLayerStructure *tls_paramter;
- unsigned int rate_control_mode = encoder_context->rate_control_mode;
- int i;
-
- if (!encoder_context->is_new_sequence) {
- if (encoder_context->layer.num_layers > 1)
- encoder_context->layer.curr_frame_layer_id = encoder_context->layer.frame_layer_ids[(encoder_context->num_frames_in_sequence - 1) % encoder_context->layer.size_frame_layer_ids];
- else
- encoder_context->layer.curr_frame_layer_id = 0;
-
- return VA_STATUS_SUCCESS;
- }
-
- if (!(rate_control_mode & (VA_RC_CBR | VA_RC_VBR)))
- return VA_STATUS_SUCCESS;
-
- if (!encode_state->misc_param[VAEncMiscParameterTypeTemporalLayerStructure][0] ||
- !encode_state->misc_param[VAEncMiscParameterTypeTemporalLayerStructure][0]->buffer)
- return VA_STATUS_SUCCESS;
-
- misc_param = (VAEncMiscParameterBuffer*)encode_state->misc_param[VAEncMiscParameterTypeTemporalLayerStructure][0]->buffer;
- tls_paramter = (VAEncMiscParameterTemporalLayerStructure *)misc_param->data;
-
- if (tls_paramter->number_of_layers <= 1)
- return VA_STATUS_SUCCESS;
-
- if (tls_paramter->number_of_layers > MAX_TEMPORAL_LAYERS)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- if (tls_paramter->periodicity > 32 || tls_paramter->periodicity <= 1)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- for (i = 0; i < tls_paramter->number_of_layers; i++) {
- if (!encode_state->misc_param[VAEncMiscParameterTypeRateControl][i] ||
- !encode_state->misc_param[VAEncMiscParameterTypeRateControl][i]->buffer ||
- !encode_state->misc_param[VAEncMiscParameterTypeFrameRate][i] ||
- !encode_state->misc_param[VAEncMiscParameterTypeFrameRate][i]->buffer) {
-
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- }
- }
-
- encoder_context->layer.size_frame_layer_ids = tls_paramter->periodicity;
- encoder_context->layer.num_layers = tls_paramter->number_of_layers;
-
- for (i = 0; i < encoder_context->layer.size_frame_layer_ids; i++) {
- if (tls_paramter->layer_id[i] >= tls_paramter->number_of_layers)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- encoder_context->layer.frame_layer_ids[i] = tls_paramter->layer_id[i];
- }
-
- if (encoder_context->is_new_sequence)
- encoder_context->layer.curr_frame_layer_id = 0;
- else
- encoder_context->layer.curr_frame_layer_id = encoder_context->layer.frame_layer_ids[(encoder_context->num_frames_in_sequence - 1) % encoder_context->layer.size_frame_layer_ids];
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-intel_encoder_check_misc_parameter(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus ret = VA_STATUS_SUCCESS;
-
- if (encode_state->misc_param[VAEncMiscParameterTypeQualityLevel][0] &&
- encode_state->misc_param[VAEncMiscParameterTypeQualityLevel][0]->buffer) {
- VAEncMiscParameterBuffer* pMiscParam = (VAEncMiscParameterBuffer*)encode_state->misc_param[VAEncMiscParameterTypeQualityLevel][0]->buffer;
- VAEncMiscParameterBufferQualityLevel* param_quality_level = (VAEncMiscParameterBufferQualityLevel*)pMiscParam->data;
- encoder_context->quality_level = param_quality_level->quality_level;
-
- if (encoder_context->quality_level == 0)
- encoder_context->quality_level = ENCODER_DEFAULT_QUALITY;
- else if (encoder_context->quality_level > encoder_context->quality_range) {
- ret = VA_STATUS_ERROR_INVALID_PARAMETER;
- goto out;
- }
- }
-
- ret = intel_encoder_check_temporal_layer_structure(ctx, encode_state, encoder_context);
-
- if (ret)
- goto out;
-
- ret = intel_encoder_check_brc_parameter(ctx, encode_state, encoder_context);
-
-out:
- return ret;
-}
-
-static VAStatus
-intel_encoder_check_avc_parameter(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface;
- struct object_buffer *obj_buffer;
- VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
- VAEncSequenceParameterBufferH264 *seq_param = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer;
- int i;
-
- assert(!(pic_param->CurrPic.flags & VA_PICTURE_H264_INVALID));
-
- if (pic_param->CurrPic.flags & VA_PICTURE_H264_INVALID)
- goto error;
-
- obj_surface = SURFACE(pic_param->CurrPic.picture_id);
- assert(obj_surface); /* It is possible the store buffer isn't allocated yet */
-
- if (!obj_surface)
- goto error;
-
- encode_state->reconstructed_object = obj_surface;
- obj_buffer = BUFFER(pic_param->coded_buf);
- assert(obj_buffer && obj_buffer->buffer_store && obj_buffer->buffer_store->bo);
-
- if (!obj_buffer || !obj_buffer->buffer_store || !obj_buffer->buffer_store->bo)
- goto error;
-
- encode_state->coded_buf_object = obj_buffer;
-
- for (i = 0; i < 16; i++) {
- if (pic_param->ReferenceFrames[i].flags & VA_PICTURE_H264_INVALID ||
- pic_param->ReferenceFrames[i].picture_id == VA_INVALID_SURFACE)
- break;
- else {
- obj_surface = SURFACE(pic_param->ReferenceFrames[i].picture_id);
- assert(obj_surface);
-
- if (!obj_surface)
- goto error;
-
- if (obj_surface->bo)
- encode_state->reference_objects[i] = obj_surface;
- else
- encode_state->reference_objects[i] = NULL; /* FIXME: Warning or Error ??? */
- }
- }
-
- for ( ; i < 16; i++)
- encode_state->reference_objects[i] = NULL;
-
- /*
- * A sequence consists of an IDR unit, followed by zero or more non-IDR unit, but not including any
- * subsequent IDR unit, so idr_pic_flag can indicate the current frame is the start of a new
- * sequnce
- */
- encoder_context->is_new_sequence = (pic_param->pic_fields.bits.idr_pic_flag && seq_param);
-
- if (encoder_context->is_new_sequence) {
- encoder_context->num_frames_in_sequence = 0;
- encoder_context->frame_width_in_pixel = seq_param->picture_width_in_mbs * 16;
- encoder_context->frame_height_in_pixel = seq_param->picture_height_in_mbs * 16;
- }
-
- return VA_STATUS_SUCCESS;
-
-error:
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-}
-
-static VAStatus
-intel_encoder_check_mpeg2_parameter(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VAEncPictureParameterBufferMPEG2 *pic_param = (VAEncPictureParameterBufferMPEG2 *)encode_state->pic_param_ext->buffer;
- struct object_surface *obj_surface;
- struct object_buffer *obj_buffer;
- int i = 0;
-
- obj_surface = SURFACE(pic_param->reconstructed_picture);
- assert(obj_surface); /* It is possible the store buffer isn't allocated yet */
-
- if (!obj_surface)
- goto error;
-
- encode_state->reconstructed_object = obj_surface;
- obj_buffer = BUFFER(pic_param->coded_buf);
- assert(obj_buffer && obj_buffer->buffer_store && obj_buffer->buffer_store->bo);
-
- if (!obj_buffer || !obj_buffer->buffer_store || !obj_buffer->buffer_store->bo)
- goto error;
-
- encode_state->coded_buf_object = obj_buffer;
-
- if (pic_param->picture_type == VAEncPictureTypeIntra) {
- } else if (pic_param->picture_type == VAEncPictureTypePredictive) {
- assert(pic_param->forward_reference_picture != VA_INVALID_SURFACE);
- obj_surface = SURFACE(pic_param->forward_reference_picture);
- assert(obj_surface && obj_surface->bo);
-
- if (!obj_surface || !obj_surface->bo)
- goto error;
-
- encode_state->reference_objects[i++] = obj_surface;
- } else if (pic_param->picture_type == VAEncPictureTypeBidirectional) {
- assert(pic_param->forward_reference_picture != VA_INVALID_SURFACE);
- obj_surface = SURFACE(pic_param->forward_reference_picture);
- assert(obj_surface && obj_surface->bo);
-
- if (!obj_surface || !obj_surface->bo)
- goto error;
-
- encode_state->reference_objects[i++] = obj_surface;
-
- assert(pic_param->backward_reference_picture != VA_INVALID_SURFACE);
- obj_surface = SURFACE(pic_param->backward_reference_picture);
- assert(obj_surface && obj_surface->bo);
-
- if (!obj_surface || !obj_surface->bo)
- goto error;
-
- encode_state->reference_objects[i++] = obj_surface;
- } else
- goto error;
-
- for ( ; i < 16; i++)
- encode_state->reference_objects[i] = NULL;
-
- return VA_STATUS_SUCCESS;
-
-error:
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-}
-
-static VAStatus
-intel_encoder_check_jpeg_parameter(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_buffer *obj_buffer;
- VAEncPictureParameterBufferJPEG *pic_param = (VAEncPictureParameterBufferJPEG *)encode_state->pic_param_ext->buffer;
-
-
- assert(!(pic_param->pic_flags.bits.profile)); //Baseline profile is 0.
-
- obj_buffer = BUFFER(pic_param->coded_buf);
- assert(obj_buffer && obj_buffer->buffer_store && obj_buffer->buffer_store->bo);
-
- if (!obj_buffer || !obj_buffer->buffer_store || !obj_buffer->buffer_store->bo)
- goto error;
-
- encode_state->coded_buf_object = obj_buffer;
-
- return VA_STATUS_SUCCESS;
-
-error:
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-}
-
-static VAStatus
-intel_encoder_check_vp8_parameter(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VAEncPictureParameterBufferVP8 *pic_param = (VAEncPictureParameterBufferVP8 *)encode_state->pic_param_ext->buffer;
- VAEncSequenceParameterBufferVP8 *seq_param = (VAEncSequenceParameterBufferVP8 *)encode_state->seq_param_ext->buffer;
- struct object_surface *obj_surface;
- struct object_buffer *obj_buffer;
- int i = 0;
- int is_key_frame = !pic_param->pic_flags.bits.frame_type;
-
- obj_surface = SURFACE(pic_param->reconstructed_frame);
- assert(obj_surface); /* It is possible the store buffer isn't allocated yet */
-
- if (!obj_surface)
- goto error;
-
- encode_state->reconstructed_object = obj_surface;
- obj_buffer = BUFFER(pic_param->coded_buf);
- assert(obj_buffer && obj_buffer->buffer_store && obj_buffer->buffer_store->bo);
-
- if (!obj_buffer || !obj_buffer->buffer_store || !obj_buffer->buffer_store->bo)
- goto error;
-
- encode_state->coded_buf_object = obj_buffer;
-
- if (!is_key_frame) {
- assert(pic_param->ref_last_frame != VA_INVALID_SURFACE);
- obj_surface = SURFACE(pic_param->ref_last_frame);
- assert(obj_surface && obj_surface->bo);
-
- if (!obj_surface || !obj_surface->bo)
- goto error;
-
- encode_state->reference_objects[i++] = obj_surface;
-
- assert(pic_param->ref_gf_frame != VA_INVALID_SURFACE);
- obj_surface = SURFACE(pic_param->ref_gf_frame);
- assert(obj_surface && obj_surface->bo);
-
- if (!obj_surface || !obj_surface->bo)
- goto error;
-
- encode_state->reference_objects[i++] = obj_surface;
-
- assert(pic_param->ref_arf_frame != VA_INVALID_SURFACE);
- obj_surface = SURFACE(pic_param->ref_arf_frame);
- assert(obj_surface && obj_surface->bo);
-
- if (!obj_surface || !obj_surface->bo)
- goto error;
-
- encode_state->reference_objects[i++] = obj_surface;
- }
-
- for ( ; i < 16; i++)
- encode_state->reference_objects[i] = NULL;
-
- encoder_context->is_new_sequence = (is_key_frame && seq_param);
-
- if (encoder_context->is_new_sequence) {
- encoder_context->num_frames_in_sequence = 0;
- encoder_context->frame_width_in_pixel = seq_param->frame_width;
- encoder_context->frame_height_in_pixel = seq_param->frame_height;
- }
-
- return VA_STATUS_SUCCESS;
-
-error:
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-}
-
-static VAStatus
-intel_encoder_check_hevc_parameter(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface;
- struct object_buffer *obj_buffer;
- VAEncPictureParameterBufferHEVC *pic_param = (VAEncPictureParameterBufferHEVC *)encode_state->pic_param_ext->buffer;
- VAEncSliceParameterBufferHEVC *slice_param;
- VAEncSequenceParameterBufferHEVC *seq_param;
- int i;
-
- seq_param = NULL;
-
- if (encode_state->seq_param_ext &&
- encode_state->seq_param_ext->buffer)
- seq_param = (VAEncSequenceParameterBufferHEVC *)(encode_state->seq_param_ext->buffer);
-
- assert(!(pic_param->decoded_curr_pic.flags & VA_PICTURE_HEVC_INVALID));
-
- if (pic_param->decoded_curr_pic.flags & VA_PICTURE_HEVC_INVALID)
- goto error;
-
- obj_surface = SURFACE(pic_param->decoded_curr_pic.picture_id);
- assert(obj_surface); /* It is possible the store buffer isn't allocated yet */
-
- if (!obj_surface)
- goto error;
-
- encode_state->reconstructed_object = obj_surface;
- obj_buffer = BUFFER(pic_param->coded_buf);
- assert(obj_buffer && obj_buffer->buffer_store && obj_buffer->buffer_store->bo);
-
- if (!obj_buffer || !obj_buffer->buffer_store || !obj_buffer->buffer_store->bo)
- goto error;
-
- encode_state->coded_buf_object = obj_buffer;
-
- for (i = 0; i < 15; i++) {
- if (pic_param->reference_frames[i].flags & VA_PICTURE_HEVC_INVALID ||
- pic_param->reference_frames[i].picture_id == VA_INVALID_SURFACE)
- break;
- else {
- obj_surface = SURFACE(pic_param->reference_frames[i].picture_id);
- assert(obj_surface);
-
- if (!obj_surface)
- goto error;
-
- if (obj_surface->bo)
- encode_state->reference_objects[i] = obj_surface;
- else
- encode_state->reference_objects[i] = NULL; /* FIXME: Warning or Error ??? */
- }
- }
-
- for ( ; i < 15; i++)
- encode_state->reference_objects[i] = NULL;
-
- for (i = 0; i < encode_state->num_slice_params_ext; i++) {
- slice_param = (VAEncSliceParameterBufferHEVC *)encode_state->slice_params_ext[i]->buffer;
-
- if (slice_param->slice_type != HEVC_SLICE_I &&
- slice_param->slice_type != HEVC_SLICE_P &&
- slice_param->slice_type != HEVC_SLICE_B)
- goto error;
-
- /* TODO: add more check here */
- }
-
- encoder_context->is_new_sequence = (pic_param->pic_fields.bits.idr_pic_flag && seq_param);
-
- return VA_STATUS_SUCCESS;
-
-error:
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-}
-
-static VAStatus
-intel_encoder_check_vp9_parameter(VADriverContextP ctx,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VAEncPictureParameterBufferVP9 *pic_param;
- VAEncSequenceParameterBufferVP9 *seq_param;
- struct object_surface *obj_surface;
- struct object_buffer *obj_buffer;
- int i = 0;
- int is_key_frame = 0;
- int index;
-
- if (encode_state->pic_param_ext == NULL ||
- encode_state->pic_param_ext->buffer == NULL)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- seq_param = NULL;
- if (encode_state->seq_param_ext &&
- encode_state->seq_param_ext->buffer)
- seq_param = (VAEncSequenceParameterBufferVP9 *)(encode_state->seq_param_ext->buffer);
-
- pic_param = (VAEncPictureParameterBufferVP9 *)encode_state->pic_param_ext->buffer;
-
- obj_surface = SURFACE(pic_param->reconstructed_frame);
-
- if (!obj_surface)
- goto error;
-
- encode_state->reconstructed_object = obj_surface;
- obj_buffer = BUFFER(pic_param->coded_buf);
-
- if (!obj_buffer || !obj_buffer->buffer_store || !obj_buffer->buffer_store->bo)
- goto error;
-
- encode_state->coded_buf_object = obj_buffer;
-
- is_key_frame = !pic_param->pic_flags.bits.frame_type;
- if (!is_key_frame && !pic_param->pic_flags.bits.intra_only) {
- /* slot 0 is for last reference frame */
- index = pic_param->ref_flags.bits.ref_last_idx;
- obj_surface = SURFACE(pic_param->reference_frames[index]);
- if (obj_surface && obj_surface->bo)
- encode_state->reference_objects[i++] = obj_surface;
- else
- encode_state->reference_objects[i++] = NULL;
-
- /* slot 1 is for golden reference frame */
- index = pic_param->ref_flags.bits.ref_gf_idx;
- obj_surface = SURFACE(pic_param->reference_frames[index]);
- if (obj_surface && obj_surface->bo)
- encode_state->reference_objects[i++] = obj_surface;
- else
- encode_state->reference_objects[i++] = NULL;
-
- /* slot 2 is alt reference frame */
- index = pic_param->ref_flags.bits.ref_arf_idx;
- obj_surface = SURFACE(pic_param->reference_frames[index]);
- if (obj_surface && obj_surface->bo)
- encode_state->reference_objects[i++] = obj_surface;
- else
- encode_state->reference_objects[i++] = NULL;
- }
-
- for ( ; i < 16; i++)
- encode_state->reference_objects[i] = NULL;
-
- encoder_context->is_new_sequence = (is_key_frame && seq_param);
-
- return VA_STATUS_SUCCESS;
-
-error:
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-}
-
-
-static VAStatus
-intel_encoder_sanity_check_input(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
-{
- VAStatus vaStatus;
-
- switch (profile) {
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- case VAProfileH264MultiviewHigh:
- case VAProfileH264StereoHigh: {
- vaStatus = intel_encoder_check_avc_parameter(ctx, encode_state, encoder_context);
- if (vaStatus != VA_STATUS_SUCCESS)
- goto out;
- vaStatus = intel_encoder_check_yuv_surface(ctx, profile, encode_state, encoder_context);
- break;
- }
-
- case VAProfileMPEG2Simple:
- case VAProfileMPEG2Main: {
- vaStatus = intel_encoder_check_mpeg2_parameter(ctx, encode_state, encoder_context);
- if (vaStatus != VA_STATUS_SUCCESS)
- goto out;
- vaStatus = intel_encoder_check_yuv_surface(ctx, profile, encode_state, encoder_context);
- break;
- }
-
- case VAProfileJPEGBaseline: {
- vaStatus = intel_encoder_check_jpeg_parameter(ctx, encode_state, encoder_context);
- if (vaStatus != VA_STATUS_SUCCESS)
- goto out;
- vaStatus = intel_encoder_check_jpeg_yuv_surface(ctx, profile, encode_state, encoder_context);
- break;
- }
-
- case VAProfileVP8Version0_3: {
- vaStatus = intel_encoder_check_vp8_parameter(ctx, encode_state, encoder_context);
- if (vaStatus != VA_STATUS_SUCCESS)
- goto out;
- vaStatus = intel_encoder_check_yuv_surface(ctx, profile, encode_state, encoder_context);
- break;
- }
-
- case VAProfileHEVCMain:
- case VAProfileHEVCMain10: {
- vaStatus = intel_encoder_check_hevc_parameter(ctx, encode_state, encoder_context);
- if (vaStatus != VA_STATUS_SUCCESS)
- goto out;
- vaStatus = intel_encoder_check_yuv_surface(ctx, profile, encode_state, encoder_context);
- break;
- }
-
- case VAProfileVP9Profile0: {
- vaStatus = intel_encoder_check_vp9_parameter(ctx, encode_state, encoder_context);
- if (vaStatus != VA_STATUS_SUCCESS)
- goto out;
- vaStatus = intel_encoder_check_yuv_surface(ctx, profile, encode_state, encoder_context);
- break;
- }
- default:
- vaStatus = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
- break;
- }
-
- if (vaStatus == VA_STATUS_SUCCESS)
- vaStatus = intel_encoder_check_misc_parameter(ctx, encode_state, encoder_context);
-
-out:
- return vaStatus;
-}
-
-static VAStatus
-intel_encoder_end_picture(VADriverContextP ctx,
- VAProfile profile,
- union codec_state *codec_state,
- struct hw_context *hw_context)
-{
- struct intel_encoder_context *encoder_context = (struct intel_encoder_context *)hw_context;
- struct encode_state *encode_state = &codec_state->encode;
- VAStatus vaStatus;
-
- vaStatus = intel_encoder_sanity_check_input(ctx, profile, encode_state, encoder_context);
-
- if (vaStatus != VA_STATUS_SUCCESS)
- return vaStatus;
-
- encoder_context->mfc_brc_prepare(encode_state, encoder_context);
-
- if((encoder_context->vme_context && encoder_context->vme_pipeline)) {
- vaStatus = encoder_context->vme_pipeline(ctx, profile, encode_state, encoder_context);
- if (vaStatus != VA_STATUS_SUCCESS)
- return vaStatus;
- }
-
- encoder_context->mfc_pipeline(ctx, profile, encode_state, encoder_context);
- encoder_context->num_frames_in_sequence++;
- encoder_context->brc.need_reset = 0;
- /*
- * ROI is only available for the current frame, see the comment
- * for VAEncROI in va.h
- */
- encoder_context->brc.num_roi = 0;
-
- return VA_STATUS_SUCCESS;
-}
-
-static void
-intel_encoder_context_destroy(void *hw_context)
-{
- struct intel_encoder_context *encoder_context = (struct intel_encoder_context *)hw_context;
-
- encoder_context->mfc_context_destroy(encoder_context->mfc_context);
-
- if (encoder_context->vme_context_destroy && encoder_context->vme_context)
- encoder_context->vme_context_destroy(encoder_context->vme_context);
-
- if (encoder_context->enc_priv_state) {
- free(encoder_context->enc_priv_state);
- encoder_context->enc_priv_state = NULL;
- }
-
- intel_batchbuffer_free(encoder_context->base.batch);
- free(encoder_context);
-}
-
-
-static VAStatus
-intel_encoder_get_status(VADriverContextP ctx, struct hw_context *hw_context, void *buffer)
-{
- struct intel_encoder_context *encoder_context = (struct intel_encoder_context *)hw_context;
- struct i965_coded_buffer_segment *coded_buffer_segment = (struct i965_coded_buffer_segment *)buffer;
-
- if (encoder_context->get_status)
- return encoder_context->get_status(ctx, encoder_context, coded_buffer_segment);
-
- return VA_STATUS_ERROR_UNIMPLEMENTED;
-}
-
-typedef Bool (* hw_init_func)(VADriverContextP, struct intel_encoder_context *);
-
-static struct hw_context *
-intel_enc_hw_context_init(VADriverContextP ctx,
- struct object_config *obj_config,
- hw_init_func vme_context_init,
- hw_init_func mfc_context_init)
-{
- struct intel_driver_data *intel = intel_driver_data(ctx);
- struct intel_encoder_context *encoder_context = calloc(1, sizeof(struct intel_encoder_context));
- int i;
-
- assert(encoder_context);
- encoder_context->base.destroy = intel_encoder_context_destroy;
- encoder_context->base.run = intel_encoder_end_picture;
- encoder_context->base.get_status = intel_encoder_get_status;
- encoder_context->base.batch = intel_batchbuffer_new(intel, I915_EXEC_RENDER, 0);
- encoder_context->input_yuv_surface = VA_INVALID_SURFACE;
- encoder_context->is_tmp_id = 0;
- encoder_context->low_power_mode = 0;
- encoder_context->rate_control_mode = VA_RC_NONE;
- encoder_context->quality_level = ENCODER_DEFAULT_QUALITY;
- encoder_context->quality_range = 1;
- encoder_context->layer.num_layers = 1;
-
- if (obj_config->entrypoint == VAEntrypointEncSliceLP)
- encoder_context->low_power_mode = 1;
-
- switch (obj_config->profile) {
- case VAProfileMPEG2Simple:
- case VAProfileMPEG2Main:
- encoder_context->codec = CODEC_MPEG2;
- break;
-
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- encoder_context->codec = CODEC_H264;
-
- if (obj_config->entrypoint == VAEntrypointEncSliceLP)
- encoder_context->quality_range = ENCODER_LP_QUALITY_RANGE;
- else
- encoder_context->quality_range = ENCODER_QUALITY_RANGE;
- break;
-
- case VAProfileH264StereoHigh:
- case VAProfileH264MultiviewHigh:
- encoder_context->codec = CODEC_H264_MVC;
- break;
-
- case VAProfileJPEGBaseline:
- encoder_context->codec = CODEC_JPEG;
- break;
-
- case VAProfileVP8Version0_3:
- encoder_context->codec = CODEC_VP8;
- break;
-
- case VAProfileHEVCMain:
- case VAProfileHEVCMain10:
- encoder_context->codec = CODEC_HEVC;
- break;
-
- case VAProfileVP9Profile0:
- encoder_context->codec = CODEC_VP9;
- break;
-
- default:
- /* Never get here */
- assert(0);
- break;
- }
-
- for (i = 0; i < obj_config->num_attribs; i++) {
- if (obj_config->attrib_list[i].type == VAConfigAttribRateControl) {
- encoder_context->rate_control_mode = obj_config->attrib_list[i].value;
-
- if (encoder_context->codec == CODEC_MPEG2 &&
- encoder_context->rate_control_mode & VA_RC_CBR) {
- WARN_ONCE("Don't support CBR for MPEG-2 encoding\n");
- encoder_context->rate_control_mode &= ~VA_RC_CBR;
- }
- }
- if (obj_config->attrib_list[i].type == VAConfigAttribEncROI) {
- if (encoder_context->codec == CODEC_H264)
- encoder_context->context_roi = 1;
- }
- }
-
- if (vme_context_init) {
- vme_context_init(ctx, encoder_context);
- assert(!encoder_context->vme_context ||
- (encoder_context->vme_context_destroy && encoder_context->vme_pipeline));
- }
-
- mfc_context_init(ctx, encoder_context);
- assert(encoder_context->mfc_context);
- assert(encoder_context->mfc_context_destroy);
- assert(encoder_context->mfc_pipeline);
-
- return (struct hw_context *)encoder_context;
-}
-
-struct hw_context *
-gen6_enc_hw_context_init(VADriverContextP ctx, struct object_config *obj_config)
-{
- return intel_enc_hw_context_init(ctx, obj_config, gen6_vme_context_init, gen6_mfc_context_init);
-}
-
-struct hw_context *
-gen7_enc_hw_context_init(VADriverContextP ctx, struct object_config *obj_config)
-{
-
- return intel_enc_hw_context_init(ctx, obj_config, gen7_vme_context_init, gen7_mfc_context_init);
-}
-
-struct hw_context *
-gen75_enc_hw_context_init(VADriverContextP ctx, struct object_config *obj_config)
-{
- return intel_enc_hw_context_init(ctx, obj_config, gen75_vme_context_init, gen75_mfc_context_init);
-}
-
-struct hw_context *
-gen8_enc_hw_context_init(VADriverContextP ctx, struct object_config *obj_config)
-{
- return intel_enc_hw_context_init(ctx, obj_config, gen8_vme_context_init, gen8_mfc_context_init);
-}
-
-struct hw_context *
-gen9_enc_hw_context_init(VADriverContextP ctx, struct object_config *obj_config)
-{
- return intel_enc_hw_context_init(ctx, obj_config, gen9_vme_context_init, gen9_mfc_context_init);
-}
diff --git a/src/i965_encoder.h b/src/i965_encoder.h
deleted file mode 100644
index 829df9d..0000000
--- a/src/i965_encoder.h
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Zhou chang <chang.zhou@intel.com>
- *
- */
-
-#ifndef _I965_ENCODER_H_
-#define _I965_ENCODER_H_
-
-#include <drm.h>
-#include <i915_drm.h>
-#include <intel_bufmgr.h>
-
-#include "i965_structs.h"
-#include "i965_drv_video.h"
-
-#define I965_BRC_NONE 0
-#define I965_BRC_CBR 1
-#define I965_BRC_VBR 2
-#define I965_BRC_CQP 3
-
-#define WIDTH_IN_MACROBLOCKS(width) (ALIGN(width, 16) >> 4)
-#define HEIGHT_IN_MACROBLOCKS(height) (ALIGN(height, 16) >> 4)
-#define MAX_TEMPORAL_LAYERS 4
-
-struct intel_roi
-{
- short left;
- short right;
- short top;
- short bottom;
-
- char value;
-};
-
-struct intel_fraction
-{
- unsigned int num;
- unsigned int den;
-};
-
-struct intel_encoder_context
-{
- struct hw_context base;
- int codec;
- VASurfaceID input_yuv_surface;
- unsigned int rate_control_mode;
- unsigned int quality_level;
- unsigned int quality_range;
- unsigned int num_frames_in_sequence;
- unsigned int frame_width_in_pixel;
- unsigned int frame_height_in_pixel;
-
- struct {
- unsigned int num_layers;
- unsigned int size_frame_layer_ids;
- unsigned int frame_layer_ids[32];
- unsigned int curr_frame_layer_id;
- } layer;
-
- struct {
- unsigned short gop_size;
- unsigned short num_iframes_in_gop;
- unsigned short num_pframes_in_gop;
- unsigned short num_bframes_in_gop;
- unsigned int bits_per_second[MAX_TEMPORAL_LAYERS];
- struct intel_fraction framerate[MAX_TEMPORAL_LAYERS];
- unsigned int mb_rate_control[MAX_TEMPORAL_LAYERS];
- unsigned int target_percentage[MAX_TEMPORAL_LAYERS];
- unsigned int hrd_buffer_size;
- unsigned int hrd_initial_buffer_fullness;
- unsigned int window_size;
- unsigned int initial_qp;
- unsigned int min_qp;
- unsigned int need_reset;
-
- unsigned int num_roi;
- unsigned int roi_max_delta_qp;
- unsigned int roi_min_delta_qp;
- unsigned int roi_value_is_qp_delta;
- struct intel_roi roi[I965_MAX_NUM_ROI_REGIONS];
- } brc;
-
- void *vme_context;
- void *mfc_context;
- void *enc_priv_state;
-
- unsigned int is_tmp_id:1;
- unsigned int low_power_mode:1;
- unsigned int soft_batch_force:1;
- unsigned int context_roi:1;
- unsigned int is_new_sequence:1; /* Currently only valid for H.264, TODO for other codecs */
-
- void (*vme_context_destroy)(void *vme_context);
- VAStatus (*vme_pipeline)(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
- void (*mfc_context_destroy)(void *mfc_context);
- VAStatus (*mfc_pipeline)(VADriverContextP ctx,
- VAProfile profile,
- struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
- void (*mfc_brc_prepare)(struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context);
-
- VAStatus (*get_status)(VADriverContextP ctx,
- struct intel_encoder_context *encoder_context,
- struct i965_coded_buffer_segment *coded_buffer_segment);
-};
-
-extern struct hw_context *
-gen75_enc_hw_context_init(VADriverContextP ctx, struct object_config *obj_config);
-
-extern struct hw_context *
-gen8_enc_hw_context_init(VADriverContextP ctx, struct object_config *obj_config);
-
-extern struct hw_context *
-gen9_enc_hw_context_init(VADriverContextP ctx, struct object_config *obj_config);
-#endif /* _I965_ENCODER_H_ */
-
-
diff --git a/src/i965_encoder_utils.c b/src/i965_encoder_utils.c
deleted file mode 100644
index 8db1b87..0000000
--- a/src/i965_encoder_utils.c
+++ /dev/null
@@ -1,1193 +0,0 @@
-/*
- * Copyright © 2011 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-#include <stdlib.h>
-#include <assert.h>
-
-#include <va/va.h>
-#include <va/va_enc_h264.h>
-#include <va/va_enc_mpeg2.h>
-#include <va/va_enc_vp8.h>
-#include <va/va_enc_hevc.h>
-#include <math.h>
-#include "gen6_mfc.h"
-#include "i965_encoder_utils.h"
-
-#define BITSTREAM_ALLOCATE_STEPPING 4096
-
-#define NAL_REF_IDC_NONE 0
-#define NAL_REF_IDC_LOW 1
-#define NAL_REF_IDC_MEDIUM 2
-#define NAL_REF_IDC_HIGH 3
-
-#define NAL_NON_IDR 1
-#define NAL_IDR 5
-#define NAL_SPS 7
-#define NAL_PPS 8
-#define NAL_SEI 6
-
-#define SLICE_TYPE_P 0
-#define SLICE_TYPE_B 1
-#define SLICE_TYPE_I 2
-
-#define IS_I_SLICE(type) (SLICE_TYPE_I == (type) || SLICE_TYPE_I == (type - 5))
-#define IS_P_SLICE(type) (SLICE_TYPE_P == (type) || SLICE_TYPE_P == (type - 5))
-#define IS_B_SLICE(type) (SLICE_TYPE_B == (type) || SLICE_TYPE_B == (type - 5))
-
-#define ENTROPY_MODE_CAVLC 0
-#define ENTROPY_MODE_CABAC 1
-
-#define PROFILE_IDC_BASELINE 66
-#define PROFILE_IDC_MAIN 77
-#define PROFILE_IDC_HIGH 100
-
-/*HEVC*/
-#define VPS_NUT 32
-#define SPS_NUT 33
-#define PPS_NUT 34
-#define IDR_WRADL_NUT 19
-#define IDR_NLP_NUT 20
-#define SLICE_TRAIL_N_NUT 0
-#define SLICE_TRAIL_R_NUT 1
-#define PREFIX_SEI_NUT 39
-#define SUFFIX_SEI_NUT 40
-
-struct __avc_bitstream {
- unsigned int *buffer;
- int bit_offset;
- int max_size_in_dword;
-};
-
-typedef struct __avc_bitstream avc_bitstream;
-
-static unsigned int
-swap32(unsigned int val)
-{
- unsigned char *pval = (unsigned char *)&val;
-
- return ((pval[0] << 24) |
- (pval[1] << 16) |
- (pval[2] << 8) |
- (pval[3] << 0));
-}
-
-static void
-avc_bitstream_start(avc_bitstream *bs)
-{
- bs->max_size_in_dword = BITSTREAM_ALLOCATE_STEPPING;
- bs->buffer = calloc(bs->max_size_in_dword * sizeof(int), 1);
- bs->bit_offset = 0;
-}
-
-static void
-avc_bitstream_end(avc_bitstream *bs)
-{
- int pos = (bs->bit_offset >> 5);
- int bit_offset = (bs->bit_offset & 0x1f);
- int bit_left = 32 - bit_offset;
-
- if (bit_offset) {
- bs->buffer[pos] = swap32((bs->buffer[pos] << bit_left));
- }
-
- // free(bs->buffer);
-}
-
-static void
-avc_bitstream_put_ui(avc_bitstream *bs, unsigned int val, int size_in_bits)
-{
- int pos = (bs->bit_offset >> 5);
- int bit_offset = (bs->bit_offset & 0x1f);
- int bit_left = 32 - bit_offset;
-
- if (!size_in_bits)
- return;
-
- if (size_in_bits < 32)
- val &= (( 1 << size_in_bits) - 1);
-
- bs->bit_offset += size_in_bits;
-
- if (bit_left > size_in_bits) {
- bs->buffer[pos] = (bs->buffer[pos] << size_in_bits | val);
- } else {
- size_in_bits -= bit_left;
- if (bit_left == 32) {
- bs->buffer[pos] = val;
- } else {
- bs->buffer[pos] = (bs->buffer[pos] << bit_left) | (val >> size_in_bits);
- }
- bs->buffer[pos] = swap32(bs->buffer[pos]);
-
- if (pos + 1 == bs->max_size_in_dword) {
- bs->max_size_in_dword += BITSTREAM_ALLOCATE_STEPPING;
- bs->buffer = realloc(bs->buffer, bs->max_size_in_dword * sizeof(unsigned int));
-
- if (!bs->buffer)
- return;
- }
-
- bs->buffer[pos + 1] = val;
- }
-}
-
-static void
-avc_bitstream_put_ue(avc_bitstream *bs, unsigned int val)
-{
- int size_in_bits = 0;
- int tmp_val = ++val;
-
- while (tmp_val) {
- tmp_val >>= 1;
- size_in_bits++;
- }
-
- avc_bitstream_put_ui(bs, 0, size_in_bits - 1); // leading zero
- avc_bitstream_put_ui(bs, val, size_in_bits);
-}
-
-static void
-avc_bitstream_put_se(avc_bitstream *bs, int val)
-{
- unsigned int new_val;
-
- if (val <= 0)
- new_val = -2 * val;
- else
- new_val = 2 * val - 1;
-
- avc_bitstream_put_ue(bs, new_val);
-}
-
-static void
-avc_bitstream_byte_aligning(avc_bitstream *bs, int bit)
-{
- int bit_offset = (bs->bit_offset & 0x7);
- int bit_left = 8 - bit_offset;
- int new_val;
-
- if (!bit_offset)
- return;
-
- assert(bit == 0 || bit == 1);
-
- if (bit)
- new_val = (1 << bit_left) - 1;
- else
- new_val = 0;
-
- avc_bitstream_put_ui(bs, new_val, bit_left);
-}
-static void avc_rbsp_trailing_bits(avc_bitstream *bs)
-{
- avc_bitstream_put_ui(bs, 1, 1);
- avc_bitstream_byte_aligning(bs, 0);
-}
-static void nal_start_code_prefix(avc_bitstream *bs)
-{
- avc_bitstream_put_ui(bs, 0x00000001, 32);
-}
-
-static void nal_header(avc_bitstream *bs, int nal_ref_idc, int nal_unit_type)
-{
- avc_bitstream_put_ui(bs, 0, 1); /* forbidden_zero_bit: 0 */
- avc_bitstream_put_ui(bs, nal_ref_idc, 2);
- avc_bitstream_put_ui(bs, nal_unit_type, 5);
-}
-
-static void
-slice_header(avc_bitstream *bs,
- VAEncSequenceParameterBufferH264 *sps_param,
- VAEncPictureParameterBufferH264 *pic_param,
- VAEncSliceParameterBufferH264 *slice_param)
-{
- int first_mb_in_slice = slice_param->macroblock_address;
-
- avc_bitstream_put_ue(bs, first_mb_in_slice); /* first_mb_in_slice: 0 */
- avc_bitstream_put_ue(bs, slice_param->slice_type); /* slice_type */
- avc_bitstream_put_ue(bs, slice_param->pic_parameter_set_id); /* pic_parameter_set_id: 0 */
- avc_bitstream_put_ui(bs, pic_param->frame_num, sps_param->seq_fields.bits.log2_max_frame_num_minus4 + 4); /* frame_num */
-
- /* frame_mbs_only_flag == 1 */
- if (!sps_param->seq_fields.bits.frame_mbs_only_flag) {
- /* FIXME: */
- assert(0);
- }
-
- if (pic_param->pic_fields.bits.idr_pic_flag)
- avc_bitstream_put_ue(bs, slice_param->idr_pic_id); /* idr_pic_id: 0 */
-
- if (sps_param->seq_fields.bits.pic_order_cnt_type == 0) {
- avc_bitstream_put_ui(bs, pic_param->CurrPic.TopFieldOrderCnt, sps_param->seq_fields.bits.log2_max_pic_order_cnt_lsb_minus4 + 4);
- /* pic_order_present_flag == 0 */
- } else {
- /* FIXME: */
- assert(0);
- }
-
- /* redundant_pic_cnt_present_flag == 0 */
-
- /* slice type */
- if (IS_P_SLICE(slice_param->slice_type)) {
- avc_bitstream_put_ui(bs, slice_param->num_ref_idx_active_override_flag, 1); /* num_ref_idx_active_override_flag: */
-
- if (slice_param->num_ref_idx_active_override_flag)
- avc_bitstream_put_ue(bs, slice_param->num_ref_idx_l0_active_minus1);
-
- /* ref_pic_list_reordering */
- avc_bitstream_put_ui(bs, 0, 1); /* ref_pic_list_reordering_flag_l0: 0 */
- } else if (IS_B_SLICE(slice_param->slice_type)) {
- avc_bitstream_put_ui(bs, slice_param->direct_spatial_mv_pred_flag, 1); /* direct_spatial_mv_pred: 1 */
-
- avc_bitstream_put_ui(bs, slice_param->num_ref_idx_active_override_flag, 1); /* num_ref_idx_active_override_flag: */
-
- if (slice_param->num_ref_idx_active_override_flag) {
- avc_bitstream_put_ue(bs, slice_param->num_ref_idx_l0_active_minus1);
- avc_bitstream_put_ue(bs, slice_param->num_ref_idx_l1_active_minus1);
- }
-
- /* ref_pic_list_reordering */
- avc_bitstream_put_ui(bs, 0, 1); /* ref_pic_list_reordering_flag_l0: 0 */
- avc_bitstream_put_ui(bs, 0, 1); /* ref_pic_list_reordering_flag_l1: 0 */
- }
-
- if ((pic_param->pic_fields.bits.weighted_pred_flag &&
- IS_P_SLICE(slice_param->slice_type)) ||
- ((pic_param->pic_fields.bits.weighted_bipred_idc == 1) &&
- IS_B_SLICE(slice_param->slice_type))) {
- /* FIXME: fill weight/offset table */
- assert(0);
- }
-
- /* dec_ref_pic_marking */
- if (pic_param->pic_fields.bits.reference_pic_flag) { /* nal_ref_idc != 0 */
- unsigned char no_output_of_prior_pics_flag = 0;
- unsigned char long_term_reference_flag = 0;
- unsigned char adaptive_ref_pic_marking_mode_flag = 0;
-
- if (pic_param->pic_fields.bits.idr_pic_flag) {
- avc_bitstream_put_ui(bs, no_output_of_prior_pics_flag, 1); /* no_output_of_prior_pics_flag: 0 */
- avc_bitstream_put_ui(bs, long_term_reference_flag, 1); /* long_term_reference_flag: 0 */
- } else {
- avc_bitstream_put_ui(bs, adaptive_ref_pic_marking_mode_flag, 1); /* adaptive_ref_pic_marking_mode_flag: 0 */
- }
- }
-
- if (pic_param->pic_fields.bits.entropy_coding_mode_flag &&
- !IS_I_SLICE(slice_param->slice_type))
- avc_bitstream_put_ue(bs, slice_param->cabac_init_idc); /* cabac_init_idc: 0 */
-
- avc_bitstream_put_se(bs, slice_param->slice_qp_delta); /* slice_qp_delta: 0 */
-
- /* ignore for SP/SI */
-
- if (pic_param->pic_fields.bits.deblocking_filter_control_present_flag) {
- avc_bitstream_put_ue(bs, slice_param->disable_deblocking_filter_idc); /* disable_deblocking_filter_idc: 0 */
-
- if (slice_param->disable_deblocking_filter_idc != 1) {
- avc_bitstream_put_se(bs, slice_param->slice_alpha_c0_offset_div2); /* slice_alpha_c0_offset_div2: 2 */
- avc_bitstream_put_se(bs, slice_param->slice_beta_offset_div2); /* slice_beta_offset_div2: 2 */
- }
- }
-
- if (pic_param->pic_fields.bits.entropy_coding_mode_flag) {
- avc_bitstream_byte_aligning(bs, 1);
- }
-}
-
-int
-build_avc_slice_header(VAEncSequenceParameterBufferH264 *sps_param,
- VAEncPictureParameterBufferH264 *pic_param,
- VAEncSliceParameterBufferH264 *slice_param,
- unsigned char **slice_header_buffer)
-{
- avc_bitstream bs;
- int is_idr = !!pic_param->pic_fields.bits.idr_pic_flag;
- int is_ref = !!pic_param->pic_fields.bits.reference_pic_flag;
-
- avc_bitstream_start(&bs);
- nal_start_code_prefix(&bs);
-
- if (IS_I_SLICE(slice_param->slice_type)) {
- nal_header(&bs, NAL_REF_IDC_HIGH, is_idr ? NAL_IDR : NAL_NON_IDR);
- } else if (IS_P_SLICE(slice_param->slice_type)) {
- assert(!is_idr);
- nal_header(&bs, NAL_REF_IDC_MEDIUM, NAL_NON_IDR);
- } else {
- assert(IS_B_SLICE(slice_param->slice_type));
- assert(!is_idr);
- nal_header(&bs, is_ref ? NAL_REF_IDC_LOW : NAL_REF_IDC_NONE, NAL_NON_IDR);
- }
-
- slice_header(&bs, sps_param, pic_param, slice_param);
-
- avc_bitstream_end(&bs);
- *slice_header_buffer = (unsigned char *)bs.buffer;
-
- return bs.bit_offset;
-}
-
-int
-build_avc_sei_buffering_period(int cpb_removal_length,
- unsigned int init_cpb_removal_delay,
- unsigned int init_cpb_removal_delay_offset,
- unsigned char **sei_buffer)
-{
- unsigned char *byte_buf;
- int byte_size, i;
-
- avc_bitstream nal_bs;
- avc_bitstream sei_bs;
-
- avc_bitstream_start(&sei_bs);
- avc_bitstream_put_ue(&sei_bs, 0); /*seq_parameter_set_id*/
- avc_bitstream_put_ui(&sei_bs, init_cpb_removal_delay, cpb_removal_length);
- avc_bitstream_put_ui(&sei_bs, init_cpb_removal_delay_offset, cpb_removal_length);
- if ( sei_bs.bit_offset & 0x7) {
- avc_bitstream_put_ui(&sei_bs, 1, 1);
- }
- avc_bitstream_end(&sei_bs);
- byte_size = (sei_bs.bit_offset + 7) / 8;
-
- avc_bitstream_start(&nal_bs);
- nal_start_code_prefix(&nal_bs);
- nal_header(&nal_bs, NAL_REF_IDC_NONE, NAL_SEI);
-
- avc_bitstream_put_ui(&nal_bs, 0, 8);
- avc_bitstream_put_ui(&nal_bs, byte_size, 8);
-
- byte_buf = (unsigned char *)sei_bs.buffer;
- for(i = 0; i < byte_size; i++) {
- avc_bitstream_put_ui(&nal_bs, byte_buf[i], 8);
- }
- free(byte_buf);
-
- avc_rbsp_trailing_bits(&nal_bs);
- avc_bitstream_end(&nal_bs);
-
- *sei_buffer = (unsigned char *)nal_bs.buffer;
-
- return nal_bs.bit_offset;
-}
-
-int
-build_avc_sei_pic_timing(unsigned int cpb_removal_length, unsigned int cpb_removal_delay,
- unsigned int dpb_output_length, unsigned int dpb_output_delay,
- unsigned char **sei_buffer)
-{
- unsigned char *byte_buf;
- int byte_size, i;
-
- avc_bitstream nal_bs;
- avc_bitstream sei_bs;
-
- avc_bitstream_start(&sei_bs);
- avc_bitstream_put_ui(&sei_bs, cpb_removal_delay, cpb_removal_length);
- avc_bitstream_put_ui(&sei_bs, dpb_output_delay, dpb_output_length);
- if ( sei_bs.bit_offset & 0x7) {
- avc_bitstream_put_ui(&sei_bs, 1, 1);
- }
- avc_bitstream_end(&sei_bs);
- byte_size = (sei_bs.bit_offset + 7) / 8;
-
- avc_bitstream_start(&nal_bs);
- nal_start_code_prefix(&nal_bs);
- nal_header(&nal_bs, NAL_REF_IDC_NONE, NAL_SEI);
-
- avc_bitstream_put_ui(&nal_bs, 0x01, 8);
- avc_bitstream_put_ui(&nal_bs, byte_size, 8);
-
- byte_buf = (unsigned char *)sei_bs.buffer;
- for(i = 0; i < byte_size; i++) {
- avc_bitstream_put_ui(&nal_bs, byte_buf[i], 8);
- }
- free(byte_buf);
-
- avc_rbsp_trailing_bits(&nal_bs);
- avc_bitstream_end(&nal_bs);
-
- *sei_buffer = (unsigned char *)nal_bs.buffer;
-
- return nal_bs.bit_offset;
-}
-
-
-int
-build_avc_sei_buffer_timing(unsigned int init_cpb_removal_length,
- unsigned int init_cpb_removal_delay,
- unsigned int init_cpb_removal_delay_offset,
- unsigned int cpb_removal_length,
- unsigned int cpb_removal_delay,
- unsigned int dpb_output_length,
- unsigned int dpb_output_delay,
- unsigned char **sei_buffer)
-{
- unsigned char *byte_buf;
- int bp_byte_size, i, pic_byte_size;
-
- avc_bitstream nal_bs;
- avc_bitstream sei_bp_bs, sei_pic_bs;
-
- avc_bitstream_start(&sei_bp_bs);
- avc_bitstream_put_ue(&sei_bp_bs, 0); /*seq_parameter_set_id*/
- avc_bitstream_put_ui(&sei_bp_bs, init_cpb_removal_delay, cpb_removal_length);
- avc_bitstream_put_ui(&sei_bp_bs, init_cpb_removal_delay_offset, cpb_removal_length);
- if ( sei_bp_bs.bit_offset & 0x7) {
- avc_bitstream_put_ui(&sei_bp_bs, 1, 1);
- }
- avc_bitstream_end(&sei_bp_bs);
- bp_byte_size = (sei_bp_bs.bit_offset + 7) / 8;
-
- avc_bitstream_start(&sei_pic_bs);
- avc_bitstream_put_ui(&sei_pic_bs, cpb_removal_delay, cpb_removal_length);
- avc_bitstream_put_ui(&sei_pic_bs, dpb_output_delay, dpb_output_length);
- if ( sei_pic_bs.bit_offset & 0x7) {
- avc_bitstream_put_ui(&sei_pic_bs, 1, 1);
- }
- avc_bitstream_end(&sei_pic_bs);
- pic_byte_size = (sei_pic_bs.bit_offset + 7) / 8;
-
- avc_bitstream_start(&nal_bs);
- nal_start_code_prefix(&nal_bs);
- nal_header(&nal_bs, NAL_REF_IDC_NONE, NAL_SEI);
-
- /* Write the SEI buffer period data */
- avc_bitstream_put_ui(&nal_bs, 0, 8);
- avc_bitstream_put_ui(&nal_bs, bp_byte_size, 8);
-
- byte_buf = (unsigned char *)sei_bp_bs.buffer;
- for(i = 0; i < bp_byte_size; i++) {
- avc_bitstream_put_ui(&nal_bs, byte_buf[i], 8);
- }
- free(byte_buf);
- /* write the SEI timing data */
- avc_bitstream_put_ui(&nal_bs, 0x01, 8);
- avc_bitstream_put_ui(&nal_bs, pic_byte_size, 8);
-
- byte_buf = (unsigned char *)sei_pic_bs.buffer;
- for(i = 0; i < pic_byte_size; i++) {
- avc_bitstream_put_ui(&nal_bs, byte_buf[i], 8);
- }
- free(byte_buf);
-
- avc_rbsp_trailing_bits(&nal_bs);
- avc_bitstream_end(&nal_bs);
-
- *sei_buffer = (unsigned char *)nal_bs.buffer;
-
- return nal_bs.bit_offset;
-}
-
-int
-build_mpeg2_slice_header(VAEncSequenceParameterBufferMPEG2 *sps_param,
- VAEncPictureParameterBufferMPEG2 *pic_param,
- VAEncSliceParameterBufferMPEG2 *slice_param,
- unsigned char **slice_header_buffer)
-{
- avc_bitstream bs;
-
- avc_bitstream_start(&bs);
- avc_bitstream_end(&bs);
- *slice_header_buffer = (unsigned char *)bs.buffer;
-
- return bs.bit_offset;
-}
-
-static void binarize_qindex_delta(avc_bitstream *bs, int qindex_delta)
-{
- if (qindex_delta == 0)
- avc_bitstream_put_ui(bs, 0, 1);
- else {
- avc_bitstream_put_ui(bs, 1, 1);
- avc_bitstream_put_ui(bs, abs(qindex_delta), 4);
-
- if (qindex_delta < 0)
- avc_bitstream_put_ui(bs, 1, 1);
- else
- avc_bitstream_put_ui(bs, 0, 1);
- }
-}
-
-void binarize_vp8_frame_header(VAEncSequenceParameterBufferVP8 *seq_param,
- VAEncPictureParameterBufferVP8 *pic_param,
- VAQMatrixBufferVP8 *q_matrix,
- struct gen6_mfc_context *mfc_context,
- struct intel_encoder_context *encoder_context)
-{
- avc_bitstream bs;
- int i, j;
- int is_intra_frame = !pic_param->pic_flags.bits.frame_type;
- int log2num = pic_param->pic_flags.bits.num_token_partitions;
-
- /* modify picture paramters */
- pic_param->pic_flags.bits.loop_filter_adj_enable = 1;
- pic_param->pic_flags.bits.mb_no_coeff_skip = 1;
- pic_param->pic_flags.bits.forced_lf_adjustment = 1;
- pic_param->pic_flags.bits.refresh_entropy_probs = 1;
- pic_param->pic_flags.bits.segmentation_enabled = 0;
-
- pic_param->pic_flags.bits.loop_filter_type = pic_param->pic_flags.bits.version / 2;
- if (pic_param->pic_flags.bits.version > 1)
- pic_param->loop_filter_level[0] = 0;
-
- avc_bitstream_start(&bs);
-
- if (is_intra_frame) {
- avc_bitstream_put_ui(&bs, 0, 1);
- avc_bitstream_put_ui(&bs, pic_param->pic_flags.bits.clamping_type ,1);
- }
-
- avc_bitstream_put_ui(&bs, pic_param->pic_flags.bits.segmentation_enabled, 1);
-
- if (pic_param->pic_flags.bits.segmentation_enabled) {
- avc_bitstream_put_ui(&bs, pic_param->pic_flags.bits.update_mb_segmentation_map, 1);
- avc_bitstream_put_ui(&bs, pic_param->pic_flags.bits.update_segment_feature_data, 1);
- if (pic_param->pic_flags.bits.update_segment_feature_data) {
- /*add it later*/
- assert(0);
- }
- if (pic_param->pic_flags.bits.update_mb_segmentation_map) {
- for (i = 0; i < 3; i++) {
- if (mfc_context->vp8_state.mb_segment_tree_probs[i] == 255)
- avc_bitstream_put_ui(&bs, 0, 1);
- else {
- avc_bitstream_put_ui(&bs, 1, 1);
- avc_bitstream_put_ui(&bs, mfc_context->vp8_state.mb_segment_tree_probs[i], 8);
- }
- }
- }
- }
-
- avc_bitstream_put_ui(&bs, pic_param->pic_flags.bits.loop_filter_type, 1);
- avc_bitstream_put_ui(&bs, pic_param->loop_filter_level[0], 6);
- avc_bitstream_put_ui(&bs, pic_param->sharpness_level, 3);
-
- mfc_context->vp8_state.frame_header_lf_update_pos = bs.bit_offset;
-
- if (pic_param->pic_flags.bits.forced_lf_adjustment) {
- avc_bitstream_put_ui(&bs, 1, 1);//mode_ref_lf_delta_enable = 1
- avc_bitstream_put_ui(&bs, 1, 1);//mode_ref_lf_delta_update = 1
-
- for (i =0; i < 4; i++) {
- avc_bitstream_put_ui(&bs, 1, 1);
- if (pic_param->ref_lf_delta[i] > 0) {
- avc_bitstream_put_ui(&bs, (abs(pic_param->ref_lf_delta[i]) & 0x3F), 6);
- avc_bitstream_put_ui(&bs, 0, 1);
- } else {
- avc_bitstream_put_ui(&bs, (abs(pic_param->ref_lf_delta[i]) & 0x3F), 6);
- avc_bitstream_put_ui(&bs, 1, 1);
- }
- }
-
- for (i =0; i < 4; i++) {
- avc_bitstream_put_ui(&bs, 1, 1);
- if (pic_param->mode_lf_delta[i] > 0) {
- avc_bitstream_put_ui(&bs, (abs(pic_param->mode_lf_delta[i]) & 0x3F), 6);
- avc_bitstream_put_ui(&bs, 0, 1);
- } else {
- avc_bitstream_put_ui(&bs, (abs(pic_param->mode_lf_delta[i]) & 0x3F), 6);
- avc_bitstream_put_ui(&bs, 1, 1);
- }
- }
-
- } else {
- avc_bitstream_put_ui(&bs, 0, 1);//mode_ref_lf_delta_enable = 0
- }
-
- avc_bitstream_put_ui(&bs, log2num, 2);
-
- mfc_context->vp8_state.frame_header_qindex_update_pos = bs.bit_offset;
-
- avc_bitstream_put_ui(&bs, q_matrix->quantization_index[0], 7);
-
- for (i = 0; i < 5; i++)
- binarize_qindex_delta(&bs, q_matrix->quantization_index_delta[i]);
-
- if (!is_intra_frame) {
- avc_bitstream_put_ui(&bs, pic_param->pic_flags.bits.refresh_golden_frame, 1);
- avc_bitstream_put_ui(&bs, pic_param->pic_flags.bits.refresh_alternate_frame, 1);
-
- if (!pic_param->pic_flags.bits.refresh_golden_frame)
- avc_bitstream_put_ui(&bs, pic_param->pic_flags.bits.copy_buffer_to_golden, 2);
-
- if (!pic_param->pic_flags.bits.refresh_alternate_frame)
- avc_bitstream_put_ui(&bs, pic_param->pic_flags.bits.copy_buffer_to_alternate, 2);
-
- avc_bitstream_put_ui(&bs, pic_param->pic_flags.bits.sign_bias_golden, 1);
- avc_bitstream_put_ui(&bs, pic_param->pic_flags.bits.sign_bias_alternate, 1);
- }
-
- avc_bitstream_put_ui(&bs, pic_param->pic_flags.bits.refresh_entropy_probs, 1);
-
- if (!is_intra_frame)
- avc_bitstream_put_ui(&bs, pic_param->pic_flags.bits.refresh_last, 1);
-
- mfc_context->vp8_state.frame_header_token_update_pos = bs.bit_offset;
-
- for (i = 0; i < 4 * 8 * 3 * 11; i++)
- avc_bitstream_put_ui(&bs, 0, 1); //don't update coeff_probs
-
- avc_bitstream_put_ui(&bs, pic_param->pic_flags.bits.mb_no_coeff_skip, 1);
- if (pic_param->pic_flags.bits.mb_no_coeff_skip)
- avc_bitstream_put_ui(&bs, mfc_context->vp8_state.prob_skip_false, 8);
-
- if (!is_intra_frame) {
- avc_bitstream_put_ui(&bs, mfc_context->vp8_state.prob_intra, 8);
- avc_bitstream_put_ui(&bs, mfc_context->vp8_state.prob_last, 8);
- avc_bitstream_put_ui(&bs, mfc_context->vp8_state.prob_gf, 8);
-
- avc_bitstream_put_ui(&bs, 1, 1); //y_mode_update_flag = 1
- for (i = 0; i < 4; i++) {
- avc_bitstream_put_ui(&bs, mfc_context->vp8_state.y_mode_probs[i], 8);
- }
-
- avc_bitstream_put_ui(&bs, 1, 1); //uv_mode_update_flag = 1
- for (i = 0; i < 3; i++) {
- avc_bitstream_put_ui(&bs, mfc_context->vp8_state.uv_mode_probs[i], 8);
- }
-
- mfc_context->vp8_state.frame_header_bin_mv_upate_pos = bs.bit_offset;
-
- for (i = 0; i < 2 ; i++) {
- for (j = 0; j < 19; j++) {
- avc_bitstream_put_ui(&bs, 0, 1);
- //avc_bitstream_put_ui(&bs, mfc_context->vp8_state.mv_probs[i][j], 7);
- }
- }
- }
-
- avc_bitstream_end(&bs);
-
- mfc_context->vp8_state.vp8_frame_header = (unsigned char *)bs.buffer;
- mfc_context->vp8_state.frame_header_bit_count = bs.bit_offset;
-}
-
-/* HEVC to do for internal header generated*/
-
-void nal_header_hevc(avc_bitstream *bs, int nal_unit_type, int temporalid)
-{
- /* forbidden_zero_bit: 0 */
- avc_bitstream_put_ui(bs, 0, 1);
- /* nal unit_type */
- avc_bitstream_put_ui(bs, nal_unit_type, 6);
- /* layer_id. currently it is zero */
- avc_bitstream_put_ui(bs, 0, 6);
- /* teporalid + 1 .*/
- avc_bitstream_put_ui(bs, temporalid + 1, 3);
-}
-
-int build_hevc_sei_buffering_period(int init_cpb_removal_delay_length,
- unsigned int init_cpb_removal_delay,
- unsigned int init_cpb_removal_delay_offset,
- unsigned char **sei_buffer)
-{
- unsigned char *byte_buf;
- int bp_byte_size, i;
- //unsigned int cpb_removal_delay;
-
- avc_bitstream nal_bs;
- avc_bitstream sei_bp_bs;
-
- avc_bitstream_start(&sei_bp_bs);
- avc_bitstream_put_ue(&sei_bp_bs, 0); /*seq_parameter_set_id*/
- /* SEI buffer period info */
- /* NALHrdBpPresentFlag == 1 */
- avc_bitstream_put_ui(&sei_bp_bs, init_cpb_removal_delay,init_cpb_removal_delay_length);
- avc_bitstream_put_ui(&sei_bp_bs, init_cpb_removal_delay_offset,init_cpb_removal_delay_length);
- if ( sei_bp_bs.bit_offset & 0x7) {
- avc_bitstream_put_ui(&sei_bp_bs, 1, 1);
- }
- avc_bitstream_end(&sei_bp_bs);
- bp_byte_size = (sei_bp_bs.bit_offset + 7) / 8;
-
- avc_bitstream_start(&nal_bs);
- nal_start_code_prefix(&nal_bs);
- nal_header_hevc(&nal_bs, PREFIX_SEI_NUT ,0);
-
- /* Write the SEI buffer period data */
- avc_bitstream_put_ui(&nal_bs, 0, 8);
- avc_bitstream_put_ui(&nal_bs, bp_byte_size, 8);
-
- byte_buf = (unsigned char *)sei_bp_bs.buffer;
- for(i = 0; i < bp_byte_size; i++) {
- avc_bitstream_put_ui(&nal_bs, byte_buf[i], 8);
- }
- free(byte_buf);
-
- avc_rbsp_trailing_bits(&nal_bs);
- avc_bitstream_end(&nal_bs);
-
- *sei_buffer = (unsigned char *)nal_bs.buffer;
-
- return nal_bs.bit_offset;
-}
-
-int build_hevc_idr_sei_buffer_timing(unsigned int init_cpb_removal_delay_length,
- unsigned int init_cpb_removal_delay,
- unsigned int init_cpb_removal_delay_offset,
- unsigned int cpb_removal_length,
- unsigned int cpb_removal_delay,
- unsigned int dpb_output_length,
- unsigned int dpb_output_delay,
- unsigned char **sei_buffer)
-{
- unsigned char *byte_buf;
- int bp_byte_size, i, pic_byte_size;
- //unsigned int cpb_removal_delay;
-
- avc_bitstream nal_bs;
- avc_bitstream sei_bp_bs, sei_pic_bs;
-
- avc_bitstream_start(&sei_bp_bs);
- avc_bitstream_put_ue(&sei_bp_bs, 0); /*seq_parameter_set_id*/
- /* SEI buffer period info */
- /* NALHrdBpPresentFlag == 1 */
- avc_bitstream_put_ui(&sei_bp_bs, init_cpb_removal_delay,init_cpb_removal_delay_length);
- avc_bitstream_put_ui(&sei_bp_bs, init_cpb_removal_delay_offset,init_cpb_removal_delay_length);
- if ( sei_bp_bs.bit_offset & 0x7) {
- avc_bitstream_put_ui(&sei_bp_bs, 1, 1);
- }
- avc_bitstream_end(&sei_bp_bs);
- bp_byte_size = (sei_bp_bs.bit_offset + 7) / 8;
-
- /* SEI pic timing info */
- avc_bitstream_start(&sei_pic_bs);
- /* The info of CPB and DPB delay is controlled by CpbDpbDelaysPresentFlag,
- * which is derived as 1 if one of the following conditions is true:
- * nal_hrd_parameters_present_flag is present in the avc_bitstream and is equal to 1,
- * vcl_hrd_parameters_present_flag is present in the avc_bitstream and is equal to 1,
- */
- //cpb_removal_delay = (hevc_context.current_cpb_removal - hevc_context.prev_idr_cpb_removal);
- avc_bitstream_put_ui(&sei_pic_bs, cpb_removal_delay, cpb_removal_length);
- avc_bitstream_put_ui(&sei_pic_bs, dpb_output_delay,dpb_output_length);
- if ( sei_pic_bs.bit_offset & 0x7) {
- avc_bitstream_put_ui(&sei_pic_bs, 1, 1);
- }
- /* The pic_structure_present_flag determines whether the pic_structure
- * info is written into the SEI pic timing info.
- * Currently it is set to zero.
- */
- avc_bitstream_end(&sei_pic_bs);
- pic_byte_size = (sei_pic_bs.bit_offset + 7) / 8;
-
- avc_bitstream_start(&nal_bs);
- nal_start_code_prefix(&nal_bs);
- nal_header_hevc(&nal_bs, PREFIX_SEI_NUT ,0);
-
- /* Write the SEI buffer period data */
- avc_bitstream_put_ui(&nal_bs, 0, 8);
- avc_bitstream_put_ui(&nal_bs, bp_byte_size, 8);
-
- byte_buf = (unsigned char *)sei_bp_bs.buffer;
- for(i = 0; i < bp_byte_size; i++) {
- avc_bitstream_put_ui(&nal_bs, byte_buf[i], 8);
- }
- free(byte_buf);
- /* write the SEI pic timing data */
- avc_bitstream_put_ui(&nal_bs, 0x01, 8);
- avc_bitstream_put_ui(&nal_bs, pic_byte_size, 8);
-
- byte_buf = (unsigned char *)sei_pic_bs.buffer;
- for(i = 0; i < pic_byte_size; i++) {
- avc_bitstream_put_ui(&nal_bs, byte_buf[i], 8);
- }
- free(byte_buf);
-
- avc_rbsp_trailing_bits(&nal_bs);
- avc_bitstream_end(&nal_bs);
-
- *sei_buffer = (unsigned char *)nal_bs.buffer;
-
- return nal_bs.bit_offset;
-}
-
-int build_hevc_sei_pic_timing(unsigned int cpb_removal_length, unsigned int cpb_removal_delay,
- unsigned int dpb_output_length, unsigned int dpb_output_delay,
- unsigned char **sei_buffer)
-{
- unsigned char *byte_buf;
- int i, pic_byte_size;
- //unsigned int cpb_removal_delay;
-
- avc_bitstream nal_bs;
- avc_bitstream sei_pic_bs;
-
- avc_bitstream_start(&sei_pic_bs);
- /* The info of CPB and DPB delay is controlled by CpbDpbDelaysPresentFlag,
- * which is derived as 1 if one of the following conditions is true:
- * nal_hrd_parameters_present_flag is present in the avc_bitstream and is equal to 1,
- * vcl_hrd_parameters_present_flag is present in the avc_bitstream and is equal to 1,
- */
- //cpb_removal_delay = (hevc_context.current_cpb_removal - hevc_context.current_idr_cpb_removal);
- avc_bitstream_put_ui(&sei_pic_bs, cpb_removal_delay, cpb_removal_length);
- avc_bitstream_put_ui(&sei_pic_bs, dpb_output_delay, dpb_output_length);
- if ( sei_pic_bs.bit_offset & 0x7) {
- avc_bitstream_put_ui(&sei_pic_bs, 1, 1);
- }
-
- /* The pic_structure_present_flag determines whether the pic_structure
- * info is written into the SEI pic timing info.
- * Currently it is set to zero.
- */
- avc_bitstream_end(&sei_pic_bs);
- pic_byte_size = (sei_pic_bs.bit_offset + 7) / 8;
-
- avc_bitstream_start(&nal_bs);
- nal_start_code_prefix(&nal_bs);
- nal_header_hevc(&nal_bs, PREFIX_SEI_NUT ,0);
-
- /* write the SEI Pic timing data */
- avc_bitstream_put_ui(&nal_bs, 0x01, 8);
- avc_bitstream_put_ui(&nal_bs, pic_byte_size, 8);
-
- byte_buf = (unsigned char *)sei_pic_bs.buffer;
- for(i = 0; i < pic_byte_size; i++) {
- avc_bitstream_put_ui(&nal_bs, byte_buf[i], 8);
- }
- free(byte_buf);
-
- avc_rbsp_trailing_bits(&nal_bs);
- avc_bitstream_end(&nal_bs);
-
- *sei_buffer = (unsigned char *)nal_bs.buffer;
-
- return nal_bs.bit_offset;
-}
-
-typedef struct _RefPicSet
-{
- unsigned char num_negative_pics;
- unsigned char num_positive_pics;
- unsigned char delta_poc_s0_minus1[8];
- unsigned char used_by_curr_pic_s0_flag[8];
- unsigned char delta_poc_s1_minus1[8];
- unsigned char used_by_curr_pic_s1_flag[8];
- unsigned int inter_ref_pic_set_prediction_flag;
-}hevcRefPicSet;
-
-void hevc_short_term_ref_pic_set(avc_bitstream *bs,VAEncSliceParameterBufferHEVC *slice_param,int curPicOrderCnt)
-{
- hevcRefPicSet hevc_rps;
- int rps_idx = 1, ref_idx = 0;
- int i = 0;
-
- hevc_rps.inter_ref_pic_set_prediction_flag = 0;
- /* s0: between I and P/B; s1 : between P and B */
- hevc_rps.num_negative_pics = (slice_param->slice_type!=HEVC_SLICE_I) ? 1 : 0;
- hevc_rps.num_positive_pics = (slice_param->slice_type==HEVC_SLICE_B) ? 1 : 0;
- hevc_rps.delta_poc_s0_minus1[0] = 0;
- hevc_rps.used_by_curr_pic_s0_flag[0] = 0;
- hevc_rps.delta_poc_s1_minus1[0] = 0;
- hevc_rps.used_by_curr_pic_s1_flag[0] = 0;
- if(slice_param->num_ref_idx_l0_active_minus1==0 )
- {
- hevc_rps.delta_poc_s0_minus1[0] = (slice_param->slice_type==HEVC_SLICE_I) ? 0 : ( curPicOrderCnt - slice_param->ref_pic_list0[0].pic_order_cnt-1); //0;
- hevc_rps.used_by_curr_pic_s0_flag[0] = 1;
- }
- if(slice_param->num_ref_idx_l1_active_minus1==0 )
- {
- hevc_rps.delta_poc_s1_minus1[0] = (slice_param->slice_type==HEVC_SLICE_I) ? 0 : ( slice_param->ref_pic_list1[0].pic_order_cnt -curPicOrderCnt -1);
- hevc_rps.used_by_curr_pic_s1_flag[0] = 1;
- }
-
- if (rps_idx)
- avc_bitstream_put_ui(bs, hevc_rps.inter_ref_pic_set_prediction_flag, 1);
-
- if (hevc_rps.inter_ref_pic_set_prediction_flag)
- {
- /* not support */
- /* to do */
- } else {
- avc_bitstream_put_ue(bs, hevc_rps.num_negative_pics);
- avc_bitstream_put_ue(bs, hevc_rps.num_positive_pics);
-
- for (i = 0; i < hevc_rps.num_negative_pics; i++)
- {
- avc_bitstream_put_ue(bs, hevc_rps.delta_poc_s0_minus1[ref_idx]);
- avc_bitstream_put_ui(bs, hevc_rps.used_by_curr_pic_s0_flag[ref_idx], 1);
- }
- for (i = 0; i < hevc_rps.num_positive_pics; i++)
- {
- avc_bitstream_put_ue(bs, hevc_rps.delta_poc_s1_minus1[ref_idx]);
- avc_bitstream_put_ui(bs, hevc_rps.used_by_curr_pic_s1_flag[ref_idx], 1);
- }
- }
-
- return;
-}
-
-static void slice_rbsp(avc_bitstream *bs,
- int slice_index,
- VAEncSequenceParameterBufferHEVC *seq_param,
- VAEncPictureParameterBufferHEVC *pic_param,
- VAEncSliceParameterBufferHEVC *slice_param)
-{
- int log2_cu_size = seq_param->log2_min_luma_coding_block_size_minus3 + 3;
- int log2_ctb_size = seq_param->log2_diff_max_min_luma_coding_block_size + log2_cu_size;
- int ctb_size = 1 << log2_ctb_size;
-
- int picture_width_in_ctb = (seq_param->pic_width_in_luma_samples + ctb_size - 1) / ctb_size;
- int picture_height_in_ctb = (seq_param->pic_height_in_luma_samples + ctb_size - 1) / ctb_size;
-
- /* first_slice_segment_in_pic_flag */
- if (slice_index == 0)
- {
- avc_bitstream_put_ui(bs, 1, 1);
- }
- else
- {
- avc_bitstream_put_ui(bs, 0, 1);
- }
-
- /* no_output_of_prior_pics_flag */
- if (pic_param->pic_fields.bits.idr_pic_flag)
- avc_bitstream_put_ui(bs, 1, 1);
-
- /* slice_pic_parameter_set_id */
- avc_bitstream_put_ue(bs, 0);
-
- /* not the first slice */
- if (slice_index)
- {
- /* TBD */
- int bit_size;
-
- float num_ctus;
-
- num_ctus = picture_width_in_ctb * picture_height_in_ctb;
- bit_size = ceilf(log2f(num_ctus));
-
- if (pic_param->pic_fields.bits.dependent_slice_segments_enabled_flag)
- {
- avc_bitstream_put_ui(bs,
- slice_param->slice_fields.bits.dependent_slice_segment_flag, 1);
- }
- /* slice_segment_address is based on Ceil(log2(PictureSizeinCtbs)) */
- avc_bitstream_put_ui(bs, slice_param->slice_segment_address, bit_size);
- }
- if (!slice_param->slice_fields.bits.dependent_slice_segment_flag)
- {
- /* slice_reserved_flag */
-
- /* slice_type */
- avc_bitstream_put_ue(bs, slice_param->slice_type);
- /* use the inferred the value of pic_output_flag */
-
- /* colour_plane_id */
- if (seq_param->seq_fields.bits.separate_colour_plane_flag)
- {
- avc_bitstream_put_ui(bs, slice_param->slice_fields.bits.colour_plane_id, 1);
- }
-
- if (!pic_param->pic_fields.bits.idr_pic_flag)
- {
- int Log2MaxPicOrderCntLsb = 8;
- avc_bitstream_put_ui(bs, pic_param->decoded_curr_pic.pic_order_cnt, Log2MaxPicOrderCntLsb);
-
- //if (!slice_param->short_term_ref_pic_set_sps_flag)
- {
- /* short_term_ref_pic_set_sps_flag.
- * Use zero and then pass the RPS from slice_header
- */
- avc_bitstream_put_ui(bs, 0, 1);
- /* TBD
- * Add the short_term reference picture set
- */
- hevc_short_term_ref_pic_set(bs,slice_param,pic_param->decoded_curr_pic.pic_order_cnt);
- }
- /* long term reference present flag. unpresent */
- /* TBD */
-
- /* sps temporal MVP*/
- if (seq_param->seq_fields.bits.sps_temporal_mvp_enabled_flag)
- {
- avc_bitstream_put_ui(bs,
- slice_param->slice_fields.bits.slice_temporal_mvp_enabled_flag, 1);
- }
- }
-
- /* long term reference present flag. unpresent */
-
- /* sample adaptive offset enabled flag */
- if (seq_param->seq_fields.bits.sample_adaptive_offset_enabled_flag)
- {
- avc_bitstream_put_ui(bs, slice_param->slice_fields.bits.slice_sao_luma_flag, 1);
- avc_bitstream_put_ui(bs, slice_param->slice_fields.bits.slice_sao_chroma_flag, 1);
- }
-
- if (slice_param->slice_type != HEVC_SLICE_I)
- {
- /* num_ref_idx_active_override_flag. 0 */
- avc_bitstream_put_ui(bs, 0, 1);
- /* lists_modification_flag is unpresent NumPocTotalCurr > 1 ,here it is 1*/
-
- /* No reference picture set modification */
-
- /* MVD_l1_zero_flag */
- if (slice_param->slice_type == HEVC_SLICE_B)
- avc_bitstream_put_ui(bs, slice_param->slice_fields.bits.mvd_l1_zero_flag, 1);
-
- /* cabac_init_present_flag. 0 */
-
- /* slice_temporal_mvp_enabled_flag. */
- if (slice_param->slice_fields.bits.slice_temporal_mvp_enabled_flag)
- {
- if (slice_param->slice_type == HEVC_SLICE_B)
- avc_bitstream_put_ui(bs, slice_param->slice_fields.bits.collocated_from_l0_flag, 1);
- /*
- * TBD: Add the collocated_ref_idx.
- */
- }
- if (((pic_param->pic_fields.bits.weighted_pred_flag) &&
- (slice_param->slice_type == HEVC_SLICE_P)) ||
- ((pic_param->pic_fields.bits.weighted_bipred_flag) &&
- (slice_param->slice_type == HEVC_SLICE_B)))
- {
- /* TBD:
- * add the weighted table
- */
- }
- avc_bitstream_put_ue(bs, 5 - slice_param->max_num_merge_cand);
- }
- /* slice_qp_delta */
- avc_bitstream_put_ue(bs, slice_param->slice_qp_delta);
-
- /* slice_cb/cr_qp_offset is controlled by pps_slice_chroma_qp_offsets_present_flag
- * The present flag is set to 1.
- */
- avc_bitstream_put_ue(bs, slice_param->slice_cb_qp_offset);
- avc_bitstream_put_ue(bs, slice_param->slice_cr_qp_offset);
-
- /*
- * deblocking_filter_override_flag is controlled by
- * deblocking_filter_override_enabled_flag.
- * The override_enabled_flag is zero.
- * deblocking_filter_override_flag is zero. then
- * slice_deblocking_filter_disabled_flag is also zero
- * (It is inferred to be equal to pps_deblocking_filter_disabled_flag.
- */
-
- /* slice_loop_filter_across_slices_enabled_flag is controlled
- * by pps_loop_filter_across_slices_enabled_flag &&
- * (slice_sao_luma_flag | | slice_sao_chroma_flag | |
- * !slice_deblocking_filter_disabled_flag ))
- *
- */
- }
-
- if (pic_param->pic_fields.bits.tiles_enabled_flag ||
- pic_param->pic_fields.bits.entropy_coding_sync_enabled_flag)
- {
- /* TBD.
- * Add the Entry-points && tile definition.
- */
- }
-
- /* slice_segment_header_extension_present_flag. Not present */
-
- /* byte_alignment */
- avc_rbsp_trailing_bits(bs);
-}
-
-int get_hevc_slice_nalu_type (VAEncPictureParameterBufferHEVC *pic_param)
-{
- if (pic_param->pic_fields.bits.idr_pic_flag)
- return IDR_WRADL_NUT;
- else if (pic_param->pic_fields.bits.reference_pic_flag)
- return SLICE_TRAIL_R_NUT;
- else
- return SLICE_TRAIL_N_NUT;
-}
-
-int build_hevc_slice_header(VAEncSequenceParameterBufferHEVC *seq_param,
- VAEncPictureParameterBufferHEVC *pic_param,
- VAEncSliceParameterBufferHEVC *slice_param,
- unsigned char **header_buffer,
- int slice_index)
-{
- avc_bitstream bs;
-
- avc_bitstream_start(&bs);
- nal_start_code_prefix(&bs);
- nal_header_hevc(&bs, get_hevc_slice_nalu_type(pic_param), 0);
- slice_rbsp(&bs, slice_index, seq_param,pic_param,slice_param);
- avc_bitstream_end(&bs);
-
- *header_buffer = (unsigned char *)bs.buffer;
- return bs.bit_offset;
-}
-
-int
-intel_avc_find_skipemulcnt(unsigned char *buf, int bits_length)
-{
- int i, found;
- int leading_zero_cnt, byte_length, zero_byte;
- int nal_unit_type;
- int skip_cnt = 0;
-
-#define NAL_UNIT_TYPE_MASK 0x1f
-#define HW_MAX_SKIP_LENGTH 15
-
- byte_length = ALIGN(bits_length, 32) >> 3;
-
-
- leading_zero_cnt = 0;
- found = 0;
- for(i = 0; i < byte_length - 4; i++) {
- if (((buf[i] == 0) && (buf[i + 1] == 0) && (buf[i + 2] == 1)) ||
- ((buf[i] == 0) && (buf[i + 1] == 0) && (buf[i + 2] == 0) && (buf[i + 3] == 1))) {
- found = 1;
- break;
- }
- leading_zero_cnt++;
- }
- if (!found) {
- /* warning message is complained. But anyway it will be inserted. */
- WARN_ONCE("Invalid packed header data. "
- "Can't find the 000001 start_prefix code\n");
- return 0;
- }
- i = leading_zero_cnt;
-
- zero_byte = 0;
- if (!((buf[i] == 0) && (buf[i + 1] == 0) && (buf[i + 2] == 1)))
- zero_byte = 1;
-
- skip_cnt = leading_zero_cnt + zero_byte + 3;
-
- /* the unit header byte is accounted */
- nal_unit_type = (buf[skip_cnt]) & NAL_UNIT_TYPE_MASK;
- skip_cnt += 1;
-
- if (nal_unit_type == 14 || nal_unit_type == 20 || nal_unit_type == 21) {
- /* more unit header bytes are accounted for MVC/SVC */
- skip_cnt += 3;
- }
- if (skip_cnt > HW_MAX_SKIP_LENGTH) {
- WARN_ONCE("Too many leading zeros are padded for packed data. "
- "It is beyond the HW range.!!!\n");
- }
- return skip_cnt;
-}
diff --git a/src/i965_encoder_utils.h b/src/i965_encoder_utils.h
deleted file mode 100644
index a63d242..0000000
--- a/src/i965_encoder_utils.h
+++ /dev/null
@@ -1,68 +0,0 @@
-#ifndef __I965_ENCODER_UTILS_H__
-#define __I965_ENCODER_UTILS_H__
-
-int
-build_avc_slice_header(VAEncSequenceParameterBufferH264 *sps_param,
- VAEncPictureParameterBufferH264 *pic_param,
- VAEncSliceParameterBufferH264 *slice_param,
- unsigned char **slice_header_buffer);
-int
-build_avc_sei_buffering_period(int cpb_removal_length,
- unsigned int init_cpb_removal_delay,
- unsigned int init_cpb_removal_delay_offset,
- unsigned char **sei_buffer);
-
-int
-build_avc_sei_pic_timing(unsigned int cpb_removal_length, unsigned int cpb_removal_delay,
- unsigned int dpb_output_length, unsigned int dpb_output_delay,
- unsigned char **sei_buffer);
-
-int
-build_avc_sei_buffer_timing(unsigned int init_cpb_removal_length,
- unsigned int init_cpb_removal_delay,
- unsigned int init_cpb_removal_delay_offset,
- unsigned int cpb_removal_length,
- unsigned int cpb_removal_delay,
- unsigned int dpb_output_length,
- unsigned int dpb_output_delay,
- unsigned char **sei_buffer);
-
-int
-build_mpeg2_slice_header(VAEncSequenceParameterBufferMPEG2 *sps_param,
- VAEncPictureParameterBufferMPEG2 *pic_param,
- VAEncSliceParameterBufferMPEG2 *slice_param,
- unsigned char **slice_header_buffer);
-
-/* HEVC */
-
-int
-build_hevc_slice_header(VAEncSequenceParameterBufferHEVC *seq_param,
- VAEncPictureParameterBufferHEVC *pic_param,
- VAEncSliceParameterBufferHEVC *slice_param,
- unsigned char **header_buffer,
- int slice_index);
-int
-build_hevc_sei_buffering_period(int cpb_removal_length,
- unsigned int init_cpb_removal_delay,
- unsigned int init_cpb_removal_delay_offset,
- unsigned char **sei_buffer);
-
-int
-build_hevc_sei_pic_timing(unsigned int cpb_removal_length, unsigned int cpb_removal_delay,
- unsigned int dpb_output_length, unsigned int dpb_output_delay,
- unsigned char **sei_buffer);
-
-int
-build_hevc_idr_sei_buffer_timing(unsigned int init_cpb_removal_delay_length,
- unsigned int init_cpb_removal_delay,
- unsigned int init_cpb_removal_delay_offset,
- unsigned int cpb_removal_length,
- unsigned int cpb_removal_delay,
- unsigned int dpb_output_length,
- unsigned int dpb_output_delay,
- unsigned char **sei_buffer);
-
-int
-intel_avc_find_skipemulcnt(unsigned char *buf, int bits_length);
-
-#endif /* __I965_ENCODER_UTILS_H__ */
diff --git a/src/i965_fourcc.h b/src/i965_fourcc.h
deleted file mode 100644
index c440dcd..0000000
--- a/src/i965_fourcc.h
+++ /dev/null
@@ -1,72 +0,0 @@
-#ifndef _I965_FOURCC_H_
-#define _I965_FOURCC_H_
-
-#ifndef VA_FOURCC_YV16
-#define VA_FOURCC_YV16 VA_FOURCC('Y','V','1','6')
-#endif
-
-#ifndef VA_FOURCC_I420
-#define VA_FOURCC_I420 VA_FOURCC('I','4','2','0')
-#endif
-
-/*
- * VA_FOURCC_IA44 is an exception because the va.h already
- * defines the AI44 as VA_FOURCC('I', 'A', '4', '4').
- */
-#ifndef VA_FOURCC_IA44
-#define VA_FOURCC_IA44 VA_FOURCC('A','I','4','4')
-#endif
-
-#ifndef VA_FOURCC_IA88
-#define VA_FOURCC_IA88 VA_FOURCC('I','A','8','8')
-#endif
-
-#ifndef VA_FOURCC_AI88
-#define VA_FOURCC_AI88 VA_FOURCC('A','I','8','8')
-#endif
-
-#ifndef VA_FOURCC_IMC1
-#define VA_FOURCC_IMC1 VA_FOURCC('I','M','C','1')
-#endif
-
-#ifndef VA_FOURCC_YVY2
-#define VA_FOURCC_YVY2 VA_FOURCC('Y','V','Y','2')
-#endif
-
-#ifndef VA_FOURCC_I010
-#define VA_FOURCC_I010 VA_FOURCC('I','0','1','0')
-#endif
-
-#define I965_MAX_PLANES 4
-#define I965_MAX_COMONENTS 4
-
-#define I965_COLOR_YUV 0
-#define I965_COLOR_RGB 1
-#define I965_COLOR_INDEX 2
-
-typedef struct {
- uint8_t plane; /* the plane which the pixel belongs to */
- uint8_t offset; /* bits offset within a macro-pixel for packed YUV formats or pixel for other formats in the plane */
-} i965_component_info;
-
-typedef struct {
- uint32_t fourcc; /* fourcc */
- uint32_t format; /* 0: YUV, 1: RGB, 2: Indexed format */
- uint32_t subsampling; /* Sub sampling */
- uint8_t flag; /* 1: only supported by vaCreateSurfaces(), 2: only supported by vaCreateImage(), 3: both */
- uint8_t hfactor; /* horizontal sampling factor */
- uint8_t vfactor; /* vertical sampling factor */
- uint8_t num_planes; /* number of planes */
- uint8_t bpp[I965_MAX_PLANES]; /* bits per pixel within a plane */
- uint8_t num_components; /* number of components */
- /*
- * Components in the array are ordered in Y, U, V, A (up to 4 components)
- * for YUV formats, R, G, B, A (up to 4 components) for RGB formats and
- * I, A (2 components) for indexed formats
- */
- i965_component_info components[I965_MAX_COMONENTS];
-} i965_fourcc_info;
-
-extern const i965_fourcc_info *get_fourcc_info(unsigned int);
-
-#endif /* _I965_FOURCC_H_ */
diff --git a/src/i965_gpe_utils.c b/src/i965_gpe_utils.c
deleted file mode 100644
index 31976a2..0000000
--- a/src/i965_gpe_utils.c
+++ /dev/null
@@ -1,2589 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-
-#include "i965_drv_video.h"
-#include "i965_gpe_utils.h"
-
-static void
-i965_gpe_select(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch)
-{
- BEGIN_BATCH(batch, 1);
- OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_MEDIA);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen6_gpe_state_base_address(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch)
-{
- BEGIN_BATCH(batch, 10);
-
- OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | (10 - 2));
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* General State Base Address */
- OUT_RELOC(batch,
- gpe_context->surface_state_binding_table.bo,
- I915_GEM_DOMAIN_INSTRUCTION,
- 0,
- BASE_ADDRESS_MODIFY); /* Surface state base address */
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Dynamic State Base Address */
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Indirect Object Base Address */
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Instruction Base Address */
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* General State Access Upper Bound */
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Dynamic State Access Upper Bound */
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Indirect Object Access Upper Bound */
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Instruction Access Upper Bound */
-
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen6_gpe_vfe_state(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch)
-{
-
- BEGIN_BATCH(batch, 8);
-
- OUT_BATCH(batch, CMD_MEDIA_VFE_STATE | (8 - 2));
- OUT_BATCH(batch, 0); /* Scratch Space Base Pointer and Space */
- OUT_BATCH(batch,
- gpe_context->vfe_state.max_num_threads << 16 | /* Maximum Number of Threads */
- gpe_context->vfe_state.num_urb_entries << 8 | /* Number of URB Entries */
- gpe_context->vfe_state.gpgpu_mode << 2); /* MEDIA Mode */
- OUT_BATCH(batch, 0); /* Debug: Object ID */
- OUT_BATCH(batch,
- gpe_context->vfe_state.urb_entry_size << 16 | /* URB Entry Allocation Size */
- gpe_context->vfe_state.curbe_allocation_size); /* CURBE Allocation Size */
- /* the vfe_desc5/6/7 will decide whether the scoreboard is used. */
- OUT_BATCH(batch, gpe_context->vfe_desc5.dword);
- OUT_BATCH(batch, gpe_context->vfe_desc6.dword);
- OUT_BATCH(batch, gpe_context->vfe_desc7.dword);
-
- ADVANCE_BATCH(batch);
-
-}
-
-static void
-gen6_gpe_curbe_load(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch)
-{
- BEGIN_BATCH(batch, 4);
-
- OUT_BATCH(batch, CMD_MEDIA_CURBE_LOAD | (4 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, gpe_context->curbe.length);
- OUT_RELOC(batch, gpe_context->curbe.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
-
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen6_gpe_idrt(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch)
-{
- BEGIN_BATCH(batch, 4);
-
- OUT_BATCH(batch, CMD_MEDIA_INTERFACE_LOAD | (4 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, gpe_context->idrt.max_entries * gpe_context->idrt.entry_size);
- OUT_RELOC(batch, gpe_context->idrt.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
-
- ADVANCE_BATCH(batch);
-}
-
-void
-i965_gpe_load_kernels(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct i965_kernel *kernel_list,
- unsigned int num_kernels)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- int i;
-
- assert(num_kernels <= MAX_GPE_KERNELS);
- memcpy(gpe_context->kernels, kernel_list, sizeof(*kernel_list) * num_kernels);
- gpe_context->num_kernels = num_kernels;
-
- for (i = 0; i < num_kernels; i++) {
- struct i965_kernel *kernel = &gpe_context->kernels[i];
-
- kernel->bo = dri_bo_alloc(i965->intel.bufmgr,
- kernel->name,
- kernel->size,
- 0x1000);
- assert(kernel->bo);
- dri_bo_subdata(kernel->bo, 0, kernel->size, kernel->bin);
- }
-}
-
-void
-i965_gpe_context_destroy(struct i965_gpe_context *gpe_context)
-{
- int i;
-
- dri_bo_unreference(gpe_context->surface_state_binding_table.bo);
- gpe_context->surface_state_binding_table.bo = NULL;
-
- dri_bo_unreference(gpe_context->idrt.bo);
- gpe_context->idrt.bo = NULL;
-
- dri_bo_unreference(gpe_context->curbe.bo);
- gpe_context->curbe.bo = NULL;
-
- for (i = 0; i < gpe_context->num_kernels; i++) {
- struct i965_kernel *kernel = &gpe_context->kernels[i];
-
- dri_bo_unreference(kernel->bo);
- kernel->bo = NULL;
- }
-}
-
-void
-i965_gpe_context_init(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- dri_bo *bo;
-
- dri_bo_unreference(gpe_context->surface_state_binding_table.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "surface state & binding table",
- gpe_context->surface_state_binding_table.length,
- 4096);
- assert(bo);
- gpe_context->surface_state_binding_table.bo = bo;
-
- dri_bo_unreference(gpe_context->idrt.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "interface descriptor table",
- gpe_context->idrt.entry_size * gpe_context->idrt.max_entries,
- 4096);
- assert(bo);
- gpe_context->idrt.bo = bo;
-
- dri_bo_unreference(gpe_context->curbe.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "curbe buffer",
- gpe_context->curbe.length,
- 4096);
- assert(bo);
- gpe_context->curbe.bo = bo;
-}
-
-void
-gen6_gpe_pipeline_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch)
-{
- intel_batchbuffer_emit_mi_flush(batch);
-
- i965_gpe_select(ctx, gpe_context, batch);
- gen6_gpe_state_base_address(ctx, gpe_context, batch);
- gen6_gpe_vfe_state(ctx, gpe_context, batch);
- gen6_gpe_curbe_load(ctx, gpe_context, batch);
- gen6_gpe_idrt(ctx, gpe_context, batch);
-}
-
-static void
-gen8_gpe_pipeline_end(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch)
-{
- /* No thing to do */
-}
-
-static void
-i965_gpe_set_surface_tiling(struct i965_surface_state *ss, unsigned int tiling)
-{
- switch (tiling) {
- case I915_TILING_NONE:
- ss->ss3.tiled_surface = 0;
- ss->ss3.tile_walk = 0;
- break;
- case I915_TILING_X:
- ss->ss3.tiled_surface = 1;
- ss->ss3.tile_walk = I965_TILEWALK_XMAJOR;
- break;
- case I915_TILING_Y:
- ss->ss3.tiled_surface = 1;
- ss->ss3.tile_walk = I965_TILEWALK_YMAJOR;
- break;
- }
-}
-
-static void
-i965_gpe_set_surface2_tiling(struct i965_surface_state2 *ss, unsigned int tiling)
-{
- switch (tiling) {
- case I915_TILING_NONE:
- ss->ss2.tiled_surface = 0;
- ss->ss2.tile_walk = 0;
- break;
- case I915_TILING_X:
- ss->ss2.tiled_surface = 1;
- ss->ss2.tile_walk = I965_TILEWALK_XMAJOR;
- break;
- case I915_TILING_Y:
- ss->ss2.tiled_surface = 1;
- ss->ss2.tile_walk = I965_TILEWALK_YMAJOR;
- break;
- }
-}
-
-static void
-gen7_gpe_set_surface_tiling(struct gen7_surface_state *ss, unsigned int tiling)
-{
- switch (tiling) {
- case I915_TILING_NONE:
- ss->ss0.tiled_surface = 0;
- ss->ss0.tile_walk = 0;
- break;
- case I915_TILING_X:
- ss->ss0.tiled_surface = 1;
- ss->ss0.tile_walk = I965_TILEWALK_XMAJOR;
- break;
- case I915_TILING_Y:
- ss->ss0.tiled_surface = 1;
- ss->ss0.tile_walk = I965_TILEWALK_YMAJOR;
- break;
- }
-}
-
-static void
-gen7_gpe_set_surface2_tiling(struct gen7_surface_state2 *ss, unsigned int tiling)
-{
- switch (tiling) {
- case I915_TILING_NONE:
- ss->ss2.tiled_surface = 0;
- ss->ss2.tile_walk = 0;
- break;
- case I915_TILING_X:
- ss->ss2.tiled_surface = 1;
- ss->ss2.tile_walk = I965_TILEWALK_XMAJOR;
- break;
- case I915_TILING_Y:
- ss->ss2.tiled_surface = 1;
- ss->ss2.tile_walk = I965_TILEWALK_YMAJOR;
- break;
- }
-}
-
-static void
-gen8_gpe_set_surface_tiling(struct gen8_surface_state *ss, unsigned int tiling)
-{
- switch (tiling) {
- case I915_TILING_NONE:
- ss->ss0.tiled_surface = 0;
- ss->ss0.tile_walk = 0;
- break;
- case I915_TILING_X:
- ss->ss0.tiled_surface = 1;
- ss->ss0.tile_walk = I965_TILEWALK_XMAJOR;
- break;
- case I915_TILING_Y:
- ss->ss0.tiled_surface = 1;
- ss->ss0.tile_walk = I965_TILEWALK_YMAJOR;
- break;
- }
-}
-
-static void
-gen8_gpe_set_surface2_tiling(struct gen8_surface_state2 *ss, unsigned int tiling)
-{
- switch (tiling) {
- case I915_TILING_NONE:
- ss->ss2.tiled_surface = 0;
- ss->ss2.tile_walk = 0;
- break;
- case I915_TILING_X:
- ss->ss2.tiled_surface = 1;
- ss->ss2.tile_walk = I965_TILEWALK_XMAJOR;
- break;
- case I915_TILING_Y:
- ss->ss2.tiled_surface = 1;
- ss->ss2.tile_walk = I965_TILEWALK_YMAJOR;
- break;
- }
-}
-
-static void
-i965_gpe_set_surface2_state(VADriverContextP ctx,
- struct object_surface *obj_surface,
- struct i965_surface_state2 *ss)
-{
- int w, h, w_pitch;
- unsigned int tiling, swizzle;
-
- assert(obj_surface->bo);
- assert(obj_surface->fourcc == VA_FOURCC_NV12);
-
- dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
- w = obj_surface->orig_width;
- h = obj_surface->orig_height;
- w_pitch = obj_surface->width;
-
- memset(ss, 0, sizeof(*ss));
- /* ss0 */
- ss->ss0.surface_base_address = obj_surface->bo->offset;
- /* ss1 */
- ss->ss1.cbcr_pixel_offset_v_direction = 2;
- ss->ss1.width = w - 1;
- ss->ss1.height = h - 1;
- /* ss2 */
- ss->ss2.surface_format = MFX_SURFACE_PLANAR_420_8;
- ss->ss2.interleave_chroma = 1;
- ss->ss2.pitch = w_pitch - 1;
- ss->ss2.half_pitch_for_chroma = 0;
- i965_gpe_set_surface2_tiling(ss, tiling);
- /* ss3: UV offset for interleave mode */
- ss->ss3.x_offset_for_cb = obj_surface->x_cb_offset;
- ss->ss3.y_offset_for_cb = obj_surface->y_cb_offset;
-}
-
-void
-i965_gpe_surface2_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct object_surface *obj_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset)
-{
- struct i965_surface_state2 *ss;
- dri_bo *bo;
-
- bo = gpe_context->surface_state_binding_table.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
-
- ss = (struct i965_surface_state2 *)((char *)bo->virtual + surface_state_offset);
- i965_gpe_set_surface2_state(ctx, obj_surface, ss);
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_RENDER, 0,
- 0,
- surface_state_offset + offsetof(struct i965_surface_state2, ss0),
- obj_surface->bo);
-
- *((unsigned int *)((char *)bo->virtual + binding_table_offset)) = surface_state_offset;
- dri_bo_unmap(bo);
-}
-
-static void
-i965_gpe_set_media_rw_surface_state(VADriverContextP ctx,
- struct object_surface *obj_surface,
- struct i965_surface_state *ss)
-{
- int w, h, w_pitch;
- unsigned int tiling, swizzle;
-
- dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
- w = obj_surface->orig_width;
- h = obj_surface->orig_height;
- w_pitch = obj_surface->width;
-
- memset(ss, 0, sizeof(*ss));
- /* ss0 */
- ss->ss0.surface_type = I965_SURFACE_2D;
- ss->ss0.surface_format = I965_SURFACEFORMAT_R8_UNORM;
- /* ss1 */
- ss->ss1.base_addr = obj_surface->bo->offset;
- /* ss2 */
- ss->ss2.width = w / 4 - 1; /* in DWORDs for media read & write message */
- ss->ss2.height = h - 1;
- /* ss3 */
- ss->ss3.pitch = w_pitch - 1;
- i965_gpe_set_surface_tiling(ss, tiling);
-}
-
-void
-i965_gpe_media_rw_surface_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct object_surface *obj_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset,
- int write_enabled)
-{
- struct i965_surface_state *ss;
- dri_bo *bo;
-
- bo = gpe_context->surface_state_binding_table.bo;
- dri_bo_map(bo, True);
- assert(bo->virtual);
-
- ss = (struct i965_surface_state *)((char *)bo->virtual + surface_state_offset);
- i965_gpe_set_media_rw_surface_state(ctx, obj_surface, ss);
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_RENDER, write_enabled ? I915_GEM_DOMAIN_RENDER : 0,
- 0,
- surface_state_offset + offsetof(struct i965_surface_state, ss1),
- obj_surface->bo);
-
- *((unsigned int *)((char *)bo->virtual + binding_table_offset)) = surface_state_offset;
- dri_bo_unmap(bo);
-}
-
-static void
-i965_gpe_set_buffer_surface_state(VADriverContextP ctx,
- struct i965_buffer_surface *buffer_surface,
- struct i965_surface_state *ss)
-{
- int num_entries;
-
- assert(buffer_surface->bo);
- num_entries = buffer_surface->num_blocks * buffer_surface->size_block / buffer_surface->pitch;
-
- memset(ss, 0, sizeof(*ss));
- /* ss0 */
- ss->ss0.render_cache_read_mode = 1;
- ss->ss0.surface_type = I965_SURFACE_BUFFER;
- /* ss1 */
- ss->ss1.base_addr = buffer_surface->bo->offset;
- /* ss2 */
- ss->ss2.width = ((num_entries - 1) & 0x7f);
- ss->ss2.height = (((num_entries - 1) >> 7) & 0x1fff);
- /* ss3 */
- ss->ss3.depth = (((num_entries - 1) >> 20) & 0x7f);
- ss->ss3.pitch = buffer_surface->pitch - 1;
-}
-
-void
-i965_gpe_buffer_suface_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct i965_buffer_surface *buffer_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset)
-{
- struct i965_surface_state *ss;
- dri_bo *bo;
-
- bo = gpe_context->surface_state_binding_table.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
-
- ss = (struct i965_surface_state *)((char *)bo->virtual + surface_state_offset);
- i965_gpe_set_buffer_surface_state(ctx, buffer_surface, ss);
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- 0,
- surface_state_offset + offsetof(struct i965_surface_state, ss1),
- buffer_surface->bo);
-
- *((unsigned int *)((char *)bo->virtual + binding_table_offset)) = surface_state_offset;
- dri_bo_unmap(bo);
-}
-
-static void
-gen7_gpe_set_surface2_state(VADriverContextP ctx,
- struct object_surface *obj_surface,
- struct gen7_surface_state2 *ss)
-{
- int w, h, w_pitch;
- unsigned int tiling, swizzle;
-
- assert(obj_surface->bo);
- assert(obj_surface->fourcc == VA_FOURCC_NV12);
-
- dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
- w = obj_surface->orig_width;
- h = obj_surface->orig_height;
- w_pitch = obj_surface->width;
-
- memset(ss, 0, sizeof(*ss));
- /* ss0 */
- ss->ss0.surface_base_address = obj_surface->bo->offset;
- /* ss1 */
- ss->ss1.cbcr_pixel_offset_v_direction = 2;
- ss->ss1.width = w - 1;
- ss->ss1.height = h - 1;
- /* ss2 */
- ss->ss2.surface_format = MFX_SURFACE_PLANAR_420_8;
- ss->ss2.interleave_chroma = 1;
- ss->ss2.pitch = w_pitch - 1;
- ss->ss2.half_pitch_for_chroma = 0;
- gen7_gpe_set_surface2_tiling(ss, tiling);
- /* ss3: UV offset for interleave mode */
- ss->ss3.x_offset_for_cb = obj_surface->x_cb_offset;
- ss->ss3.y_offset_for_cb = obj_surface->y_cb_offset;
-}
-
-void
-gen7_gpe_surface2_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct object_surface *obj_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset)
-{
- struct gen7_surface_state2 *ss;
- dri_bo *bo;
-
- bo = gpe_context->surface_state_binding_table.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
-
- ss = (struct gen7_surface_state2 *)((char *)bo->virtual + surface_state_offset);
- gen7_gpe_set_surface2_state(ctx, obj_surface, ss);
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_RENDER, 0,
- 0,
- surface_state_offset + offsetof(struct gen7_surface_state2, ss0),
- obj_surface->bo);
-
- *((unsigned int *)((char *)bo->virtual + binding_table_offset)) = surface_state_offset;
- dri_bo_unmap(bo);
-}
-
-static void
-gen7_gpe_set_media_rw_surface_state(VADriverContextP ctx,
- struct object_surface *obj_surface,
- struct gen7_surface_state *ss)
-{
- int w, h, w_pitch;
- unsigned int tiling, swizzle;
-
- dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
- w = obj_surface->orig_width;
- h = obj_surface->orig_height;
- w_pitch = obj_surface->width;
-
- memset(ss, 0, sizeof(*ss));
- /* ss0 */
- ss->ss0.surface_type = I965_SURFACE_2D;
- ss->ss0.surface_format = I965_SURFACEFORMAT_R8_UNORM;
- /* ss1 */
- ss->ss1.base_addr = obj_surface->bo->offset;
- /* ss2 */
- ss->ss2.width = w / 4 - 1; /* in DWORDs for media read & write message */
- ss->ss2.height = h - 1;
- /* ss3 */
- ss->ss3.pitch = w_pitch - 1;
- gen7_gpe_set_surface_tiling(ss, tiling);
-}
-
-static void
-gen75_gpe_set_media_chroma_surface_state(VADriverContextP ctx,
- struct object_surface *obj_surface,
- struct gen7_surface_state *ss)
-{
- int w, w_pitch;
- unsigned int tiling, swizzle;
- int cbcr_offset;
-
- dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
- w = obj_surface->orig_width;
- w_pitch = obj_surface->width;
-
- cbcr_offset = obj_surface->height * obj_surface->width;
- memset(ss, 0, sizeof(*ss));
- /* ss0 */
- ss->ss0.surface_type = I965_SURFACE_2D;
- ss->ss0.surface_format = I965_SURFACEFORMAT_R8_UNORM;
- /* ss1 */
- ss->ss1.base_addr = obj_surface->bo->offset + cbcr_offset;
- /* ss2 */
- ss->ss2.width = w / 4 - 1; /* in DWORDs for media read & write message */
- ss->ss2.height = (obj_surface->height / 2) -1;
- /* ss3 */
- ss->ss3.pitch = w_pitch - 1;
- gen7_gpe_set_surface_tiling(ss, tiling);
-}
-
-void
-gen7_gpe_media_rw_surface_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct object_surface *obj_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset,
- int write_enabled)
-{
- struct gen7_surface_state *ss;
- dri_bo *bo;
-
- bo = gpe_context->surface_state_binding_table.bo;
- dri_bo_map(bo, True);
- assert(bo->virtual);
-
- ss = (struct gen7_surface_state *)((char *)bo->virtual + surface_state_offset);
- gen7_gpe_set_media_rw_surface_state(ctx, obj_surface, ss);
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_RENDER, write_enabled ? I915_GEM_DOMAIN_RENDER : 0,
- 0,
- surface_state_offset + offsetof(struct gen7_surface_state, ss1),
- obj_surface->bo);
-
- *((unsigned int *)((char *)bo->virtual + binding_table_offset)) = surface_state_offset;
- dri_bo_unmap(bo);
-}
-
-void
-gen75_gpe_media_chroma_surface_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct object_surface *obj_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset,
- int write_enabled)
-{
- struct gen7_surface_state *ss;
- dri_bo *bo;
- int cbcr_offset;
-
- assert(obj_surface->fourcc == VA_FOURCC_NV12);
- bo = gpe_context->surface_state_binding_table.bo;
- dri_bo_map(bo, True);
- assert(bo->virtual);
-
- cbcr_offset = obj_surface->height * obj_surface->width;
- ss = (struct gen7_surface_state *)((char *)bo->virtual + surface_state_offset);
- gen75_gpe_set_media_chroma_surface_state(ctx, obj_surface, ss);
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_RENDER, write_enabled ? I915_GEM_DOMAIN_RENDER : 0,
- cbcr_offset,
- surface_state_offset + offsetof(struct gen7_surface_state, ss1),
- obj_surface->bo);
-
- *((unsigned int *)((char *)bo->virtual + binding_table_offset)) = surface_state_offset;
- dri_bo_unmap(bo);
-}
-
-
-static void
-gen7_gpe_set_buffer_surface_state(VADriverContextP ctx,
- struct i965_buffer_surface *buffer_surface,
- struct gen7_surface_state *ss)
-{
- int num_entries;
-
- assert(buffer_surface->bo);
- num_entries = buffer_surface->num_blocks * buffer_surface->size_block / buffer_surface->pitch;
-
- memset(ss, 0, sizeof(*ss));
- /* ss0 */
- ss->ss0.surface_type = I965_SURFACE_BUFFER;
- /* ss1 */
- ss->ss1.base_addr = buffer_surface->bo->offset;
- /* ss2 */
- ss->ss2.width = ((num_entries - 1) & 0x7f);
- ss->ss2.height = (((num_entries - 1) >> 7) & 0x3fff);
- /* ss3 */
- ss->ss3.depth = (((num_entries - 1) >> 21) & 0x3f);
- ss->ss3.pitch = buffer_surface->pitch - 1;
-}
-
-void
-gen7_gpe_buffer_suface_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct i965_buffer_surface *buffer_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset)
-{
- struct gen7_surface_state *ss;
- dri_bo *bo;
-
- bo = gpe_context->surface_state_binding_table.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
-
- ss = (struct gen7_surface_state *)((char *)bo->virtual + surface_state_offset);
- gen7_gpe_set_buffer_surface_state(ctx, buffer_surface, ss);
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- 0,
- surface_state_offset + offsetof(struct gen7_surface_state, ss1),
- buffer_surface->bo);
-
- *((unsigned int *)((char *)bo->virtual + binding_table_offset)) = surface_state_offset;
- dri_bo_unmap(bo);
-}
-
-static void
-gen8_gpe_set_surface2_state(VADriverContextP ctx,
- struct object_surface *obj_surface,
- struct gen8_surface_state2 *ss)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- int w, h, w_pitch;
- unsigned int tiling, swizzle;
-
- assert(obj_surface->bo);
- assert(obj_surface->fourcc == VA_FOURCC_NV12);
-
- dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
- w = obj_surface->orig_width;
- h = obj_surface->orig_height;
- w_pitch = obj_surface->width;
-
- memset(ss, 0, sizeof(*ss));
- /* ss0 */
- if (IS_GEN9(i965->intel.device_info))
- ss->ss5.surface_object_mocs = GEN9_CACHE_PTE;
-
- ss->ss6.base_addr = (uint32_t)obj_surface->bo->offset64;
- ss->ss7.base_addr_high = (uint32_t)(obj_surface->bo->offset64 >> 32);
- /* ss1 */
- ss->ss1.cbcr_pixel_offset_v_direction = 2;
- ss->ss1.width = w - 1;
- ss->ss1.height = h - 1;
- /* ss2 */
- ss->ss2.surface_format = MFX_SURFACE_PLANAR_420_8;
- ss->ss2.interleave_chroma = 1;
- ss->ss2.pitch = w_pitch - 1;
- ss->ss2.half_pitch_for_chroma = 0;
- gen8_gpe_set_surface2_tiling(ss, tiling);
- /* ss3: UV offset for interleave mode */
- ss->ss3.x_offset_for_cb = obj_surface->x_cb_offset;
- ss->ss3.y_offset_for_cb = obj_surface->y_cb_offset;
-}
-
-void
-gen8_gpe_surface2_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct object_surface *obj_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset)
-{
- struct gen8_surface_state2 *ss;
- dri_bo *bo;
-
- bo = gpe_context->surface_state_binding_table.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
-
- ss = (struct gen8_surface_state2 *)((char *)bo->virtual + surface_state_offset);
- gen8_gpe_set_surface2_state(ctx, obj_surface, ss);
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_RENDER, 0,
- 0,
- surface_state_offset + offsetof(struct gen8_surface_state2, ss6),
- obj_surface->bo);
-
- *((unsigned int *)((char *)bo->virtual + binding_table_offset)) = surface_state_offset;
- dri_bo_unmap(bo);
-}
-
-static void
-gen8_gpe_set_media_rw_surface_state(VADriverContextP ctx,
- struct object_surface *obj_surface,
- struct gen8_surface_state *ss)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- int w, h, w_pitch;
- unsigned int tiling, swizzle;
-
- dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
- w = obj_surface->orig_width;
- h = obj_surface->orig_height;
- w_pitch = obj_surface->width;
-
- memset(ss, 0, sizeof(*ss));
- /* ss0 */
- if (IS_GEN9(i965->intel.device_info))
- ss->ss1.surface_mocs = GEN9_CACHE_PTE;
-
- ss->ss0.surface_type = I965_SURFACE_2D;
- ss->ss0.surface_format = I965_SURFACEFORMAT_R8_UNORM;
- /* ss1 */
- ss->ss8.base_addr = (uint32_t)obj_surface->bo->offset64;
- ss->ss9.base_addr_high = (uint32_t)(obj_surface->bo->offset64 >> 32);
- /* ss2 */
- ss->ss2.width = w / 4 - 1; /* in DWORDs for media read & write message */
- ss->ss2.height = h - 1;
- /* ss3 */
- ss->ss3.pitch = w_pitch - 1;
- gen8_gpe_set_surface_tiling(ss, tiling);
-}
-
-static void
-gen8_gpe_set_media_chroma_surface_state(VADriverContextP ctx,
- struct object_surface *obj_surface,
- struct gen8_surface_state *ss)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- int w, w_pitch;
- unsigned int tiling, swizzle;
- int cbcr_offset;
- uint64_t base_offset;
-
- dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
- w = obj_surface->orig_width;
- w_pitch = obj_surface->width;
-
- cbcr_offset = obj_surface->height * obj_surface->width;
- memset(ss, 0, sizeof(*ss));
- /* ss0 */
- if (IS_GEN9(i965->intel.device_info))
- ss->ss1.surface_mocs = GEN9_CACHE_PTE;
-
- ss->ss0.surface_type = I965_SURFACE_2D;
- ss->ss0.surface_format = I965_SURFACEFORMAT_R8_UNORM;
- /* ss1 */
- base_offset = obj_surface->bo->offset64 + cbcr_offset;
- ss->ss8.base_addr = (uint32_t) base_offset;
- ss->ss9.base_addr_high = (uint32_t) (base_offset >> 32);
- /* ss2 */
- ss->ss2.width = w / 4 - 1; /* in DWORDs for media read & write message */
- ss->ss2.height = (obj_surface->height / 2) -1;
- /* ss3 */
- ss->ss3.pitch = w_pitch - 1;
- gen8_gpe_set_surface_tiling(ss, tiling);
-}
-
-void
-gen8_gpe_media_rw_surface_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct object_surface *obj_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset,
- int write_enabled)
-{
- struct gen8_surface_state *ss;
- dri_bo *bo;
-
- bo = gpe_context->surface_state_binding_table.bo;
- dri_bo_map(bo, True);
- assert(bo->virtual);
-
- ss = (struct gen8_surface_state *)((char *)bo->virtual + surface_state_offset);
- gen8_gpe_set_media_rw_surface_state(ctx, obj_surface, ss);
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_RENDER, write_enabled ? I915_GEM_DOMAIN_RENDER : 0,
- 0,
- surface_state_offset + offsetof(struct gen8_surface_state, ss8),
- obj_surface->bo);
-
- *((unsigned int *)((char *)bo->virtual + binding_table_offset)) = surface_state_offset;
- dri_bo_unmap(bo);
-}
-
-void
-gen8_gpe_media_chroma_surface_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct object_surface *obj_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset,
- int write_enabled)
-{
- struct gen8_surface_state *ss;
- dri_bo *bo;
- int cbcr_offset;
-
- assert(obj_surface->fourcc == VA_FOURCC_NV12);
- bo = gpe_context->surface_state_binding_table.bo;
- dri_bo_map(bo, True);
- assert(bo->virtual);
-
- cbcr_offset = obj_surface->height * obj_surface->width;
- ss = (struct gen8_surface_state *)((char *)bo->virtual + surface_state_offset);
- gen8_gpe_set_media_chroma_surface_state(ctx, obj_surface, ss);
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_RENDER, write_enabled ? I915_GEM_DOMAIN_RENDER : 0,
- cbcr_offset,
- surface_state_offset + offsetof(struct gen8_surface_state, ss8),
- obj_surface->bo);
-
- *((unsigned int *)((char *)bo->virtual + binding_table_offset)) = surface_state_offset;
- dri_bo_unmap(bo);
-}
-
-
-static void
-gen8_gpe_set_buffer_surface_state(VADriverContextP ctx,
- struct i965_buffer_surface *buffer_surface,
- struct gen8_surface_state *ss)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- int num_entries;
-
- assert(buffer_surface->bo);
- num_entries = buffer_surface->num_blocks * buffer_surface->size_block / buffer_surface->pitch;
-
- memset(ss, 0, sizeof(*ss));
- /* ss0 */
- ss->ss0.surface_type = I965_SURFACE_BUFFER;
- if (IS_GEN9(i965->intel.device_info))
- ss->ss1.surface_mocs = GEN9_CACHE_PTE;
-
- /* ss1 */
- ss->ss8.base_addr = (uint32_t)buffer_surface->bo->offset64;
- ss->ss9.base_addr_high = (uint32_t)(buffer_surface->bo->offset64 >> 32);
- /* ss2 */
- ss->ss2.width = ((num_entries - 1) & 0x7f);
- ss->ss2.height = (((num_entries - 1) >> 7) & 0x3fff);
- /* ss3 */
- ss->ss3.depth = (((num_entries - 1) >> 21) & 0x3f);
- ss->ss3.pitch = buffer_surface->pitch - 1;
-}
-
-void
-gen8_gpe_buffer_suface_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct i965_buffer_surface *buffer_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset)
-{
- struct gen8_surface_state *ss;
- dri_bo *bo;
-
- bo = gpe_context->surface_state_binding_table.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
-
- ss = (struct gen8_surface_state *)((char *)bo->virtual + surface_state_offset);
- gen8_gpe_set_buffer_surface_state(ctx, buffer_surface, ss);
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- 0,
- surface_state_offset + offsetof(struct gen8_surface_state, ss8),
- buffer_surface->bo);
-
- *((unsigned int *)((char *)bo->virtual + binding_table_offset)) = surface_state_offset;
- dri_bo_unmap(bo);
-}
-
-static void
-gen8_gpe_state_base_address(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch)
-{
- BEGIN_BATCH(batch, 16);
-
- OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | 14);
-
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY); //General State Base Address
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
-
- /*DW4 Surface state base address */
- OUT_RELOC64(batch, gpe_context->surface_state_binding_table.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY); /* Surface state base address */
-
- /*DW6. Dynamic state base address */
- if (gpe_context->dynamic_state.bo)
- OUT_RELOC64(batch, gpe_context->dynamic_state.bo,
- I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_SAMPLER,
- 0, BASE_ADDRESS_MODIFY);
- else {
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0);
- }
-
-
- /*DW8. Indirect Object base address */
- if (gpe_context->indirect_state.bo)
- OUT_RELOC64(batch, gpe_context->indirect_state.bo,
- I915_GEM_DOMAIN_SAMPLER,
- 0, BASE_ADDRESS_MODIFY);
- else {
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0);
- }
-
-
- /*DW10. Instruct base address */
- if (gpe_context->instruction_state.bo)
- OUT_RELOC64(batch, gpe_context->instruction_state.bo,
- I915_GEM_DOMAIN_INSTRUCTION,
- 0, BASE_ADDRESS_MODIFY);
- else {
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0);
- }
-
- /* DW12. Size limitation */
- OUT_BATCH(batch, 0xFFFFF000 | BASE_ADDRESS_MODIFY); //General State Access Upper Bound
- OUT_BATCH(batch, 0xFFFFF000 | BASE_ADDRESS_MODIFY); //Dynamic State Access Upper Bound
- OUT_BATCH(batch, 0xFFFFF000 | BASE_ADDRESS_MODIFY); //Indirect Object Access Upper Bound
- OUT_BATCH(batch, 0xFFFFF000 | BASE_ADDRESS_MODIFY); //Instruction Access Upper Bound
-
- /*
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY); //LLC Coherent Base Address
- OUT_BATCH(batch, 0xFFFFF000 | BASE_ADDRESS_MODIFY ); //LLC Coherent Upper Bound
- */
-
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen8_gpe_vfe_state(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch)
-{
-
- BEGIN_BATCH(batch, 9);
-
- OUT_BATCH(batch, CMD_MEDIA_VFE_STATE | (9 - 2));
- /* Scratch Space Base Pointer and Space */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
-
- OUT_BATCH(batch,
- gpe_context->vfe_state.max_num_threads << 16 | /* Maximum Number of Threads */
- gpe_context->vfe_state.num_urb_entries << 8 | /* Number of URB Entries */
- gpe_context->vfe_state.gpgpu_mode << 2); /* MEDIA Mode */
- OUT_BATCH(batch, 0); /* Debug: Object ID */
- OUT_BATCH(batch,
- gpe_context->vfe_state.urb_entry_size << 16 | /* URB Entry Allocation Size */
- gpe_context->vfe_state.curbe_allocation_size); /* CURBE Allocation Size */
-
- /* the vfe_desc5/6/7 will decide whether the scoreboard is used. */
- OUT_BATCH(batch, gpe_context->vfe_desc5.dword);
- OUT_BATCH(batch, gpe_context->vfe_desc6.dword);
- OUT_BATCH(batch, gpe_context->vfe_desc7.dword);
-
- ADVANCE_BATCH(batch);
-
-}
-
-
-static void
-gen8_gpe_curbe_load(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch)
-{
- BEGIN_BATCH(batch, 4);
-
- OUT_BATCH(batch, CMD_MEDIA_CURBE_LOAD | (4 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, ALIGN(gpe_context->curbe.length, 64));
- OUT_BATCH(batch, gpe_context->curbe.offset);
-
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen8_gpe_idrt(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch)
-{
- BEGIN_BATCH(batch, 6);
-
- OUT_BATCH(batch, CMD_MEDIA_STATE_FLUSH);
- OUT_BATCH(batch, 0);
-
- OUT_BATCH(batch, CMD_MEDIA_INTERFACE_LOAD | (4 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, gpe_context->idrt.max_entries * gpe_context->idrt.entry_size);
- OUT_BATCH(batch, gpe_context->idrt.offset);
-
- ADVANCE_BATCH(batch);
-}
-
-
-void
-gen8_gpe_pipeline_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch)
-{
- intel_batchbuffer_emit_mi_flush(batch);
-
- i965_gpe_select(ctx, gpe_context, batch);
- gen8_gpe_state_base_address(ctx, gpe_context, batch);
- gen8_gpe_vfe_state(ctx, gpe_context, batch);
- gen8_gpe_curbe_load(ctx, gpe_context, batch);
- gen8_gpe_idrt(ctx, gpe_context, batch);
-}
-
-void
-gen8_gpe_context_init(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- dri_bo *bo;
- int bo_size;
- unsigned int start_offset, end_offset;
-
- dri_bo_unreference(gpe_context->surface_state_binding_table.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "surface state & binding table",
- gpe_context->surface_state_binding_table.length,
- 4096);
- assert(bo);
- gpe_context->surface_state_binding_table.bo = bo;
-
- bo_size = gpe_context->idrt.max_entries * ALIGN(gpe_context->idrt.entry_size, 64) +
- ALIGN(gpe_context->curbe.length, 64) +
- gpe_context->sampler.max_entries * ALIGN(gpe_context->sampler.entry_size, 64);
- dri_bo_unreference(gpe_context->dynamic_state.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "surface state & binding table",
- bo_size,
- 4096);
- assert(bo);
- gpe_context->dynamic_state.bo = bo;
- gpe_context->dynamic_state.bo_size = bo_size;
-
- end_offset = 0;
- gpe_context->dynamic_state.end_offset = 0;
-
- /* Constant buffer offset */
- start_offset = ALIGN(end_offset, 64);
- dri_bo_unreference(gpe_context->curbe.bo);
- gpe_context->curbe.bo = bo;
- dri_bo_reference(gpe_context->curbe.bo);
- gpe_context->curbe.offset = start_offset;
- end_offset = start_offset + gpe_context->curbe.length;
-
- /* Interface descriptor offset */
- start_offset = ALIGN(end_offset, 64);
- dri_bo_unreference(gpe_context->idrt.bo);
- gpe_context->idrt.bo = bo;
- dri_bo_reference(gpe_context->idrt.bo);
- gpe_context->idrt.offset = start_offset;
- end_offset = start_offset + ALIGN(gpe_context->idrt.entry_size, 64) * gpe_context->idrt.max_entries;
-
- /* Sampler state offset */
- start_offset = ALIGN(end_offset, 64);
- dri_bo_unreference(gpe_context->sampler.bo);
- gpe_context->sampler.bo = bo;
- dri_bo_reference(gpe_context->sampler.bo);
- gpe_context->sampler.offset = start_offset;
- end_offset = start_offset + ALIGN(gpe_context->sampler.entry_size, 64) * gpe_context->sampler.max_entries;
-
- /* update the end offset of dynamic_state */
- gpe_context->dynamic_state.end_offset = end_offset;
-}
-
-
-void
-gen8_gpe_context_destroy(struct i965_gpe_context *gpe_context)
-{
- dri_bo_unreference(gpe_context->surface_state_binding_table.bo);
- gpe_context->surface_state_binding_table.bo = NULL;
-
- dri_bo_unreference(gpe_context->instruction_state.bo);
- gpe_context->instruction_state.bo = NULL;
-
- dri_bo_unreference(gpe_context->dynamic_state.bo);
- gpe_context->dynamic_state.bo = NULL;
-
- dri_bo_unreference(gpe_context->indirect_state.bo);
- gpe_context->indirect_state.bo = NULL;
-
- dri_bo_unreference(gpe_context->curbe.bo);
- gpe_context->curbe.bo = NULL;
-
- dri_bo_unreference(gpe_context->idrt.bo);
- gpe_context->idrt.bo = NULL;
-
- dri_bo_unreference(gpe_context->sampler.bo);
- gpe_context->sampler.bo = NULL;
-}
-
-
-void
-gen8_gpe_load_kernels(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct i965_kernel *kernel_list,
- unsigned int num_kernels)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- int i, kernel_size = 0;
- unsigned int kernel_offset, end_offset;
- unsigned char *kernel_ptr;
- struct i965_kernel *kernel;
-
- assert(num_kernels <= MAX_GPE_KERNELS);
- memcpy(gpe_context->kernels, kernel_list, sizeof(*kernel_list) * num_kernels);
- gpe_context->num_kernels = num_kernels;
-
- for (i = 0; i < num_kernels; i++) {
- kernel = &gpe_context->kernels[i];
-
- kernel_size += ALIGN(kernel->size, 64);
- }
-
- gpe_context->instruction_state.bo = dri_bo_alloc(i965->intel.bufmgr,
- "kernel shader",
- kernel_size,
- 0x1000);
- if (gpe_context->instruction_state.bo == NULL) {
- WARN_ONCE("failure to allocate the buffer space for kernel shader\n");
- return;
- }
-
- assert(gpe_context->instruction_state.bo);
-
- gpe_context->instruction_state.bo_size = kernel_size;
- gpe_context->instruction_state.end_offset = 0;
- end_offset = 0;
-
- dri_bo_map(gpe_context->instruction_state.bo, 1);
- kernel_ptr = (unsigned char *)(gpe_context->instruction_state.bo->virtual);
- for (i = 0; i < num_kernels; i++) {
- kernel_offset = ALIGN(end_offset, 64);
- kernel = &gpe_context->kernels[i];
- kernel->kernel_offset = kernel_offset;
-
- if (kernel->size) {
- memcpy(kernel_ptr + kernel_offset, kernel->bin, kernel->size);
-
- end_offset = kernel_offset + kernel->size;
- }
- }
-
- gpe_context->instruction_state.end_offset = end_offset;
-
- dri_bo_unmap(gpe_context->instruction_state.bo);
-
- return;
-}
-
-static void
-gen9_gpe_state_base_address(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- BEGIN_BATCH(batch, 19);
-
- OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | (19 - 2));
-
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY); //General State Base Address
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
-
- /*DW4 Surface state base address */
- OUT_RELOC64(batch, gpe_context->surface_state_binding_table.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY | (i965->intel.mocs_state << 4)); /* Surface state base address */
-
- /*DW6. Dynamic state base address */
- if (gpe_context->dynamic_state.bo)
- OUT_RELOC64(batch, gpe_context->dynamic_state.bo,
- I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_SAMPLER,
- I915_GEM_DOMAIN_RENDER,
- BASE_ADDRESS_MODIFY | (i965->intel.mocs_state << 4));
- else {
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0);
- }
-
-
- /*DW8. Indirect Object base address */
- if (gpe_context->indirect_state.bo)
- OUT_RELOC64(batch, gpe_context->indirect_state.bo,
- I915_GEM_DOMAIN_SAMPLER,
- 0, BASE_ADDRESS_MODIFY | (i965->intel.mocs_state << 4));
- else {
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0);
- }
-
-
- /*DW10. Instruct base address */
- if (gpe_context->instruction_state.bo)
- OUT_RELOC64(batch, gpe_context->instruction_state.bo,
- I915_GEM_DOMAIN_INSTRUCTION,
- 0, BASE_ADDRESS_MODIFY | (i965->intel.mocs_state << 4));
- else {
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0);
- }
-
-
- /* DW12. Size limitation */
- OUT_BATCH(batch, 0xFFFFF000 | BASE_ADDRESS_MODIFY); //General State Access Upper Bound
- OUT_BATCH(batch, 0xFFFFF000 | BASE_ADDRESS_MODIFY); //Dynamic State Access Upper Bound
- OUT_BATCH(batch, 0xFFFFF000 | BASE_ADDRESS_MODIFY); //Indirect Object Access Upper Bound
- OUT_BATCH(batch, 0xFFFFF000 | BASE_ADDRESS_MODIFY); //Instruction Access Upper Bound
-
- /* the bindless surface state address */
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0xFFFFF000);
-
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen9_gpe_select(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch)
-{
- BEGIN_BATCH(batch, 1);
- OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_MEDIA |
- GEN9_PIPELINE_SELECTION_MASK |
- GEN9_MEDIA_DOP_GATE_OFF |
- GEN9_MEDIA_DOP_GATE_MASK |
- GEN9_FORCE_MEDIA_AWAKE_ON |
- GEN9_FORCE_MEDIA_AWAKE_MASK);
- ADVANCE_BATCH(batch);
-}
-
-void
-gen9_gpe_pipeline_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch)
-{
- intel_batchbuffer_emit_mi_flush(batch);
-
- gen9_gpe_select(ctx, gpe_context, batch);
- gen9_gpe_state_base_address(ctx, gpe_context, batch);
- gen8_gpe_vfe_state(ctx, gpe_context, batch);
- gen8_gpe_curbe_load(ctx, gpe_context, batch);
- gen8_gpe_idrt(ctx, gpe_context, batch);
-}
-
-void
-gen9_gpe_pipeline_end(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch)
-{
- BEGIN_BATCH(batch, 1);
- OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_MEDIA |
- GEN9_PIPELINE_SELECTION_MASK |
- GEN9_MEDIA_DOP_GATE_ON |
- GEN9_MEDIA_DOP_GATE_MASK |
- GEN9_FORCE_MEDIA_AWAKE_OFF |
- GEN9_FORCE_MEDIA_AWAKE_MASK);
- ADVANCE_BATCH(batch);
-}
-
-Bool
-i965_allocate_gpe_resource(dri_bufmgr *bufmgr,
- struct i965_gpe_resource *res,
- int size,
- const char *name)
-{
- if (!res || !size)
- return false;
-
- res->size = size;
- res->bo = dri_bo_alloc(bufmgr, name, res->size, 4096);
- res->map = NULL;
-
- return (res->bo != NULL);
-}
-
-void
-i965_object_surface_to_2d_gpe_resource(struct i965_gpe_resource *res,
- struct object_surface *obj_surface)
-{
- unsigned int swizzle;
-
- res->type = I965_GPE_RESOURCE_2D;
- res->width = obj_surface->orig_width;
- res->height = obj_surface->orig_height;
- res->pitch = obj_surface->width;
- res->size = obj_surface->size;
- res->cb_cr_pitch = obj_surface->cb_cr_pitch;
- res->x_cb_offset = obj_surface->x_cb_offset;
- res->y_cb_offset = obj_surface->y_cb_offset;
- res->bo = obj_surface->bo;
- res->map = NULL;
-
- dri_bo_reference(res->bo);
- dri_bo_get_tiling(obj_surface->bo, &res->tiling, &swizzle);
-}
-
-void
-i965_dri_object_to_buffer_gpe_resource(struct i965_gpe_resource *res,
- dri_bo *bo)
-{
- unsigned int swizzle;
-
- res->type = I965_GPE_RESOURCE_BUFFER;
- res->width = bo->size;
- res->height = 1;
- res->pitch = res->width;
- res->size = res->pitch * res->width;
- res->bo = bo;
- res->map = NULL;
-
- dri_bo_reference(res->bo);
- dri_bo_get_tiling(res->bo, &res->tiling, &swizzle);
-}
-
-void
-i965_dri_object_to_2d_gpe_resource(struct i965_gpe_resource *res,
- dri_bo *bo,
- unsigned int width,
- unsigned int height,
- unsigned int pitch)
-{
- unsigned int swizzle;
-
- res->type = I965_GPE_RESOURCE_2D;
- res->width = width;
- res->height = height;
- res->pitch = pitch;
- res->size = res->pitch * res->width;
- res->bo = bo;
- res->map = NULL;
-
- dri_bo_reference(res->bo);
- dri_bo_get_tiling(res->bo, &res->tiling, &swizzle);
-}
-
-void
-i965_zero_gpe_resource(struct i965_gpe_resource *res)
-{
- if (res->bo) {
- dri_bo_map(res->bo, 1);
- memset(res->bo->virtual, 0, res->size);
- dri_bo_unmap(res->bo);
- }
-}
-
-void
-i965_free_gpe_resource(struct i965_gpe_resource *res)
-{
- dri_bo_unreference(res->bo);
- res->bo = NULL;
- res->map = NULL;
-}
-
-void *
-i965_map_gpe_resource(struct i965_gpe_resource *res)
-{
- int ret;
-
- if (res->bo) {
- ret = dri_bo_map(res->bo, 1);
-
- if (ret == 0)
- res->map = res->bo->virtual;
- else
- res->map = NULL;
- } else
- res->map = NULL;
-
- return res->map;
-}
-
-void
-i965_unmap_gpe_resource(struct i965_gpe_resource *res)
-{
- if (res->bo && res->map)
- dri_bo_unmap(res->bo);
-
- res->map = NULL;
-}
-
-void
-gen8_gpe_mi_flush_dw(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_flush_dw_parameter *params)
-{
- int video_pipeline_cache_invalidate = 0;
- int post_sync_operation = MI_FLUSH_DW_NOWRITE;
-
- if (params->video_pipeline_cache_invalidate)
- video_pipeline_cache_invalidate = MI_FLUSH_DW_VIDEO_PIPELINE_CACHE_INVALIDATE;
-
- if (params->bo)
- post_sync_operation = MI_FLUSH_DW_WRITE_QWORD;
-
- __OUT_BATCH(batch, (MI_FLUSH_DW2 |
- video_pipeline_cache_invalidate |
- post_sync_operation |
- (5 - 2))); /* Always use PPGTT */
-
- if (params->bo) {
- __OUT_RELOC64(batch,
- params->bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- params->offset);
- } else {
- __OUT_BATCH(batch, 0);
- __OUT_BATCH(batch, 0);
- }
-
- __OUT_BATCH(batch, params->dw0);
- __OUT_BATCH(batch, params->dw1);
-}
-
-void
-gen8_gpe_mi_store_data_imm(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_store_data_imm_parameter *params)
-{
- if (params->is_qword) {
- __OUT_BATCH(batch, MI_STORE_DATA_IMM |
- (1 << 21) |
- (5 - 2)); /* Always use PPGTT */
- } else {
- __OUT_BATCH(batch, MI_STORE_DATA_IMM | (4 - 2)); /* Always use PPGTT */
- }
-
- __OUT_RELOC64(batch,
- params->bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- params->offset);
- __OUT_BATCH(batch, params->dw0);
-
- if (params->is_qword)
- __OUT_BATCH(batch, params->dw1);
-}
-
-void
-gen8_gpe_mi_store_register_mem(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_store_register_mem_parameter *params)
-{
- __OUT_BATCH(batch, (MI_STORE_REGISTER_MEM | (4 - 2))); /* Always use PPGTT */
- __OUT_BATCH(batch, params->mmio_offset);
- __OUT_RELOC64(batch,
- params->bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- params->offset);
-}
-
-void
-gen8_gpe_mi_load_register_mem(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_load_register_mem_parameter *params)
-{
- __OUT_BATCH(batch, (MI_LOAD_REGISTER_MEM | (4 - 2))); /* Always use PPGTT */
- __OUT_BATCH(batch, params->mmio_offset);
- __OUT_RELOC64(batch,
- params->bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- params->offset);
-}
-
-void
-gen8_gpe_mi_load_register_imm(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_load_register_imm_parameter *params)
-{
- __OUT_BATCH(batch, (MI_LOAD_REGISTER_IMM | (3 - 2)));
- __OUT_BATCH(batch, params->mmio_offset);
- __OUT_BATCH(batch, params->data);
-}
-
-void
-gen8_gpe_mi_load_register_reg(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_load_register_reg_parameter *params)
-{
- __OUT_BATCH(batch, (MI_LOAD_REGISTER_REG | (3 - 2)));
- __OUT_BATCH(batch, params->src_mmio_offset);
- __OUT_BATCH(batch, params->dst_mmio_offset);
-}
-
-void
-gen9_gpe_mi_math(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_math_parameter *params)
-{
- __OUT_BATCH(batch, (MI_MATH | (params->num_instructions - 1)));
- intel_batchbuffer_data(batch, params->instruction_list, params->num_instructions * 4);
-}
-
-void
-gen9_gpe_mi_conditional_batch_buffer_end(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_conditional_batch_buffer_end_parameter *params)
-{
- int compare_mask_mode_enabled = MI_COMPARE_MASK_MODE_ENANBLED;
-
- if (params->compare_mask_mode_disabled)
- compare_mask_mode_enabled = 0;
-
- __OUT_BATCH(batch, (MI_CONDITIONAL_BATCH_BUFFER_END |
- (1 << 21) |
- compare_mask_mode_enabled |
- (4 - 2))); /* Always use PPGTT */
- __OUT_BATCH(batch, params->compare_data);
- __OUT_RELOC64(batch,
- params->bo,
- I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_INSTRUCTION, 0,
- params->offset);
-}
-
-void
-gen8_gpe_mi_batch_buffer_start(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_batch_buffer_start_parameter *params)
-{
- __OUT_BATCH(batch, (MI_BATCH_BUFFER_START |
- (!!params->is_second_level << 22) |
- (!params->use_global_gtt << 8) |
- (1 << 0)));
- __OUT_RELOC64(batch,
- params->bo,
- I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_INSTRUCTION, 0,
- params->offset);
-}
-
-void
-gen8_gpe_context_set_dynamic_buffer(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct gpe_dynamic_state_parameter *ds)
-{
- if (!ds->bo || !gpe_context)
- return;
-
- dri_bo_unreference(gpe_context->dynamic_state.bo);
- gpe_context->dynamic_state.bo = ds->bo;
- dri_bo_reference(gpe_context->dynamic_state.bo);
- gpe_context->dynamic_state.bo_size = ds->bo_size;
-
- /* curbe buffer is a part of the dynamic buffer */
- dri_bo_unreference(gpe_context->curbe.bo);
- gpe_context->curbe.bo = ds->bo;
- dri_bo_reference(gpe_context->curbe.bo);
- gpe_context->curbe.offset = ds->curbe_offset;
-
- /* idrt buffer is a part of the dynamic buffer */
- dri_bo_unreference(gpe_context->idrt.bo);
- gpe_context->idrt.bo = ds->bo;
- dri_bo_reference(gpe_context->idrt.bo);
- gpe_context->idrt.offset = ds->idrt_offset;
-
- /* sampler buffer is a part of the dynamic buffer */
- dri_bo_unreference(gpe_context->sampler.bo);
- gpe_context->sampler.bo = ds->bo;
- dri_bo_reference(gpe_context->sampler.bo);
- gpe_context->sampler.offset = ds->sampler_offset;
-
- return;
-}
-
-void *
-i965_gpe_context_map_curbe(struct i965_gpe_context *gpe_context)
-{
- dri_bo_map(gpe_context->curbe.bo, 1);
-
- return (char *)gpe_context->curbe.bo->virtual + gpe_context->curbe.offset;
-}
-
-void
-i965_gpe_context_unmap_curbe(struct i965_gpe_context *gpe_context)
-{
- dri_bo_unmap(gpe_context->curbe.bo);
-}
-
-void
-gen9_gpe_reset_binding_table(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context)
-{
- unsigned int *binding_table;
- unsigned int binding_table_offset = gpe_context->surface_state_binding_table.binding_table_offset;
- int i;
-
- dri_bo_map(gpe_context->surface_state_binding_table.bo, 1);
- binding_table = (unsigned int*)((char *)gpe_context->surface_state_binding_table.bo->virtual + binding_table_offset);
-
- for (i = 0; i < gpe_context->surface_state_binding_table.max_entries; i++) {
- *(binding_table + i) = gpe_context->surface_state_binding_table.surface_state_offset + i * SURFACE_STATE_PADDED_SIZE_GEN9;
- }
-
- dri_bo_unmap(gpe_context->surface_state_binding_table.bo);
-}
-
-void
-gen8_gpe_setup_interface_data(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context)
-{
- struct gen8_interface_descriptor_data *desc;
- int i;
- dri_bo *bo;
- unsigned char *desc_ptr;
-
- bo = gpe_context->idrt.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- desc_ptr = (unsigned char *)bo->virtual + gpe_context->idrt.offset;
- desc = (struct gen8_interface_descriptor_data *)desc_ptr;
-
- for (i = 0; i < gpe_context->num_kernels; i++) {
- struct i965_kernel *kernel;
-
- kernel = &gpe_context->kernels[i];
- assert(sizeof(*desc) == 32);
-
- /*Setup the descritor table*/
- 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 >> 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;
- desc->desc5.constant_urb_entry_read_length = ALIGN(gpe_context->curbe.length, 32) >> 5; // in registers
-
- desc++;
- }
-
- dri_bo_unmap(bo);
-}
-
-static void
-gen9_gpe_set_surface_tiling(struct gen9_surface_state *ss, unsigned int tiling)
-{
- switch (tiling) {
- case I915_TILING_NONE:
- ss->ss0.tiled_surface = 0;
- ss->ss0.tile_walk = 0;
- break;
- case I915_TILING_X:
- ss->ss0.tiled_surface = 1;
- ss->ss0.tile_walk = I965_TILEWALK_XMAJOR;
- break;
- case I915_TILING_Y:
- ss->ss0.tiled_surface = 1;
- ss->ss0.tile_walk = I965_TILEWALK_YMAJOR;
- break;
- }
-}
-
-static void
-gen9_gpe_set_surface2_tiling(struct gen9_surface_state2 *ss, unsigned int tiling)
-{
- switch (tiling) {
- case I915_TILING_NONE:
- ss->ss2.tiled_surface = 0;
- ss->ss2.tile_walk = 0;
- break;
- case I915_TILING_X:
- ss->ss2.tiled_surface = 1;
- ss->ss2.tile_walk = I965_TILEWALK_XMAJOR;
- break;
- case I915_TILING_Y:
- ss->ss2.tiled_surface = 1;
- ss->ss2.tile_walk = I965_TILEWALK_YMAJOR;
- break;
- }
-}
-
-static void
-gen9_gpe_set_2d_surface_state(struct gen9_surface_state *ss,
- unsigned int cacheability_control,
- unsigned int format,
- unsigned int tiling,
- unsigned int width,
- unsigned int height,
- unsigned int pitch,
- uint64_t base_offset,
- unsigned int y_offset)
-{
- memset(ss, 0, sizeof(*ss));
-
- /* Always set 1(align 4 mode) */
- ss->ss0.vertical_alignment = 1;
- ss->ss0.horizontal_alignment = 1;
-
- ss->ss0.surface_format = format;
- ss->ss0.surface_type = I965_SURFACE_2D;
-
- ss->ss1.surface_mocs = cacheability_control;
-
- ss->ss2.width = width - 1;
- ss->ss2.height = height - 1;
-
- ss->ss3.pitch = pitch - 1;
-
- ss->ss5.y_offset = y_offset;
-
- ss->ss7.shader_chanel_select_a = HSW_SCS_ALPHA;
- ss->ss7.shader_chanel_select_b = HSW_SCS_BLUE;
- ss->ss7.shader_chanel_select_g = HSW_SCS_GREEN;
- ss->ss7.shader_chanel_select_r = HSW_SCS_RED;
-
- ss->ss8.base_addr = (uint32_t)base_offset;
- ss->ss9.base_addr_high = (uint32_t)(base_offset >> 32);
-
- gen9_gpe_set_surface_tiling(ss, tiling);
-}
-
-/* This is only for NV12 format */
-static void
-gen9_gpe_set_adv_surface_state(struct gen9_surface_state2 *ss,
- unsigned int v_direction,
- unsigned int cacheability_control,
- unsigned int format,
- unsigned int tiling,
- unsigned int width,
- unsigned int height,
- unsigned int pitch,
- uint64_t base_offset,
- unsigned int y_cb_offset)
-{
- memset(ss, 0, sizeof(*ss));
-
- ss->ss1.cbcr_pixel_offset_v_direction = v_direction;
- ss->ss1.width = width - 1;
- ss->ss1.height = height - 1;
-
- ss->ss2.surface_format = format;
- ss->ss2.interleave_chroma = 1;
- ss->ss2.pitch = pitch - 1;
-
- ss->ss3.y_offset_for_cb = y_cb_offset;
-
- ss->ss5.surface_object_mocs = cacheability_control;
-
- ss->ss6.base_addr = (uint32_t)base_offset;
- ss->ss7.base_addr_high = (uint32_t)(base_offset >> 32);
-
- gen9_gpe_set_surface2_tiling(ss, tiling);
-}
-
-static void
-gen9_gpe_set_buffer2_surface_state(struct gen9_surface_state *ss,
- unsigned int cacheability_control,
- unsigned int format,
- unsigned int size,
- unsigned int pitch,
- uint64_t base_offset)
-{
- memset(ss, 0, sizeof(*ss));
-
- ss->ss0.surface_format = format;
- ss->ss0.surface_type = I965_SURFACE_BUFFER;
-
- ss->ss1.surface_mocs = cacheability_control;
-
- ss->ss2.width = (size - 1) & 0x7F;
- ss->ss2.height = ((size - 1) & 0x1FFF80) >> 7;
-
- ss->ss3.depth = ((size - 1) & 0xFE00000) >> 21;
- ss->ss3.pitch = pitch - 1;
-
- ss->ss7.shader_chanel_select_a = HSW_SCS_ALPHA;
- ss->ss7.shader_chanel_select_b = HSW_SCS_BLUE;
- ss->ss7.shader_chanel_select_g = HSW_SCS_GREEN;
- ss->ss7.shader_chanel_select_r = HSW_SCS_RED;
-
- ss->ss8.base_addr = (uint32_t)base_offset;
- ss->ss9.base_addr_high = (uint32_t)(base_offset >> 32);
-}
-
-void
-gen9_gpe_context_add_surface(struct i965_gpe_context *gpe_context,
- struct i965_gpe_surface *gpe_surface,
- int index)
-{
- char *buf;
- unsigned int tiling, swizzle, width, height, pitch, tile_alignment, y_offset = 0;
- unsigned int surface_state_offset = gpe_context->surface_state_binding_table.surface_state_offset +
- index * SURFACE_STATE_PADDED_SIZE_GEN9;
- unsigned int binding_table_offset = gpe_context->surface_state_binding_table.binding_table_offset +
- index * 4;
- struct i965_gpe_resource *gpe_resource = gpe_surface->gpe_resource;
-
- dri_bo_get_tiling(gpe_resource->bo, &tiling, &swizzle);
-
- dri_bo_map(gpe_context->surface_state_binding_table.bo, 1);
- 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_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);
-
- width = gpe_resource->width;
- height = gpe_resource->height / 2;
- 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);
- }
-
- if (tiling == I915_TILING_Y) {
- tile_alignment = 32;
- } else if (tiling == I915_TILING_X) {
- tile_alignment = 8;
- } else
- tile_alignment = 1;
-
- y_offset = (gpe_resource->y_cb_offset % tile_alignment);
- cbcr_offset = ALIGN_FLOOR(gpe_resource->y_cb_offset, tile_alignment) * pitch;
-
- gen9_gpe_set_2d_surface_state(ss,
- gpe_surface->cacheability_control,
- I965_SURFACEFORMAT_R16_UINT,
- tiling,
- width, height, pitch,
- gpe_resource->bo->offset64 + cbcr_offset,
- y_offset);
-
- dri_bo_emit_reloc(gpe_context->surface_state_binding_table.bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- cbcr_offset,
- surface_state_offset + offsetof(struct gen9_surface_state, ss8),
- gpe_resource->bo);
- } else if (gpe_surface->is_2d_surface) {
- 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,
- y_offset);
-
- dri_bo_emit_reloc(gpe_context->surface_state_binding_table.bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- 0,
- surface_state_offset + offsetof(struct gen9_surface_state, ss8),
- gpe_resource->bo);
- } else if (gpe_surface->is_adv_surface) {
- struct gen9_surface_state2 *ss = (struct gen9_surface_state2 *)(buf + surface_state_offset);
-
- width = gpe_resource->width;
- height = gpe_resource->height;
- pitch = gpe_resource->pitch;
-
- gen9_gpe_set_adv_surface_state(ss,
- gpe_surface->v_direction,
- gpe_surface->cacheability_control,
- MFX_SURFACE_PLANAR_420_8,
- tiling,
- width, height, pitch,
- gpe_resource->bo->offset64,
- gpe_resource->y_cb_offset);
-
- dri_bo_emit_reloc(gpe_context->surface_state_binding_table.bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- 0,
- surface_state_offset + offsetof(struct gen9_surface_state2, ss6),
- gpe_resource->bo);
- } else {
- struct gen9_surface_state *ss = (struct gen9_surface_state *)(buf + surface_state_offset);
- unsigned int format;
-
- assert(gpe_surface->is_buffer);
-
- if (gpe_surface->is_raw_buffer) {
- format = I965_SURFACEFORMAT_RAW;
- pitch = 1;
- } else {
- format = I965_SURFACEFORMAT_R32_UINT;
- pitch = sizeof(unsigned int);
- }
-
- gen9_gpe_set_buffer2_surface_state(ss,
- gpe_surface->cacheability_control,
- format,
- gpe_surface->size,
- pitch,
- gpe_resource->bo->offset64 + gpe_surface->offset);
-
- 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);
- }
-
- dri_bo_unmap(gpe_context->surface_state_binding_table.bo);
-}
-
-bool
-i965_gpe_allocate_2d_resource(dri_bufmgr *bufmgr,
- struct i965_gpe_resource *res,
- int width,
- int height,
- int pitch,
- const char *name)
-{
- int bo_size;
-
- if (!res)
- return false;
-
- res->type = I965_GPE_RESOURCE_2D;
- res->width = width;
- res->height = height;
- res->pitch = pitch;
-
- bo_size = ALIGN(height, 16) * pitch;
- res->size = bo_size;
-
- res->bo = dri_bo_alloc(bufmgr, name, res->size, 4096);
- res->map = NULL;
-
- return true;
-}
-
-void
-gen8_gpe_media_state_flush(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch)
-{
- BEGIN_BATCH(batch, 2);
-
- OUT_BATCH(batch, CMD_MEDIA_STATE_FLUSH | (2 - 2));
- OUT_BATCH(batch, 0);
-
- ADVANCE_BATCH(batch);
-}
-
-void
-gen8_gpe_media_object(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch,
- struct gpe_media_object_parameter *param)
-{
- int batch_size, subdata_size;
-
- batch_size = 6;
- subdata_size = 0;
- if (param->pinline_data && param->inline_size) {
- subdata_size = ALIGN(param->inline_size, 4);
- batch_size += subdata_size / 4;
- }
- BEGIN_BATCH(batch, batch_size);
- OUT_BATCH(batch, CMD_MEDIA_OBJECT | (batch_size - 2));
- OUT_BATCH(batch, param->interface_offset);
- OUT_BATCH(batch, param->use_scoreboard << 21);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, (param->scoreboard_y << 16 |
- param->scoreboard_x));
- OUT_BATCH(batch, param->scoreboard_mask);
-
- if (subdata_size)
- intel_batchbuffer_data(batch, param->pinline_data, subdata_size);
-
- ADVANCE_BATCH(batch);
-}
-
-void
-gen8_gpe_media_object_walker(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch,
- struct gpe_media_object_walker_parameter *param)
-{
- int walker_length;
-
- walker_length = 17;
- if (param->inline_size)
- walker_length += ALIGN(param->inline_size, 4) / 4;
- BEGIN_BATCH(batch, walker_length);
- OUT_BATCH(batch, CMD_MEDIA_OBJECT_WALKER | (walker_length - 2));
- OUT_BATCH(batch, param->interface_offset);
- OUT_BATCH(batch, param->use_scoreboard << 21);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, (param->group_id_loop_select << 8 |
- param->scoreboard_mask)); // DW5
- OUT_BATCH(batch, (param->color_count_minus1 << 24 |
- param->middle_loop_extra_steps << 16 |
- param->mid_loop_unit_y << 12 |
- param->mid_loop_unit_x << 8));
- OUT_BATCH(batch, ((param->global_loop_exec_count & 0x3ff) << 16 |
- (param->local_loop_exec_count & 0x3ff)));
- OUT_BATCH(batch, param->block_resolution.value);
- OUT_BATCH(batch, param->local_start.value);
- OUT_BATCH(batch, 0); // DW10
- OUT_BATCH(batch, param->local_outer_loop_stride.value);
- OUT_BATCH(batch, param->local_inner_loop_unit.value);
- OUT_BATCH(batch, param->global_resolution.value);
- OUT_BATCH(batch, param->global_start.value);
- OUT_BATCH(batch, param->global_outer_loop_stride.value);
- OUT_BATCH(batch, param->global_inner_loop_unit.value);
-
- if (param->pinline_data && param->inline_size)
- intel_batchbuffer_data(batch, param->pinline_data, ALIGN(param->inline_size, 4));
-
- 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;
- }
-}
-
-void
-gen8_gpe_reset_binding_table(VADriverContextP ctx, struct i965_gpe_context *gpe_context)
-{
- unsigned int *binding_table;
- unsigned int binding_table_offset = gpe_context->surface_state_binding_table.binding_table_offset;
- int i;
-
- dri_bo_map(gpe_context->surface_state_binding_table.bo, 1);
- binding_table = (unsigned int*)((char *)gpe_context->surface_state_binding_table.bo->virtual + binding_table_offset);
-
- for (i = 0; i < gpe_context->surface_state_binding_table.max_entries; i++) {
- *(binding_table + i) = gpe_context->surface_state_binding_table.surface_state_offset + i * SURFACE_STATE_PADDED_SIZE_GEN8;
- }
-
- dri_bo_unmap(gpe_context->surface_state_binding_table.bo);
-}
-
-static void
-gen8_gpe_set_2d_surface_state(struct gen8_surface_state *ss,
- unsigned int vert_line_stride_offset,
- unsigned int vert_line_stride,
- unsigned int cacheability_control,
- unsigned int format,
- unsigned int tiling,
- unsigned int width,
- unsigned int height,
- unsigned int pitch,
- unsigned int base_offset,
- unsigned int y_offset)
-{
- memset(ss, 0, sizeof(*ss));
-
- ss->ss0.vert_line_stride_ofs = vert_line_stride_offset;
- ss->ss0.vert_line_stride = vert_line_stride;
- ss->ss0.surface_format = format;
- ss->ss0.surface_type = I965_SURFACE_2D;
-
- ss->ss1.surface_mocs = cacheability_control;
-
- ss->ss2.width = width - 1;
- ss->ss2.height = height - 1;
-
- ss->ss3.pitch = pitch - 1;
-
- ss->ss5.y_offset = y_offset;
-
- ss->ss7.shader_chanel_select_a = HSW_SCS_ALPHA;
- ss->ss7.shader_chanel_select_b = HSW_SCS_BLUE;
- ss->ss7.shader_chanel_select_g = HSW_SCS_GREEN;
- ss->ss7.shader_chanel_select_r = HSW_SCS_RED;
-
- ss->ss8.base_addr = base_offset;
-
- gen8_gpe_set_surface_tiling(ss, tiling);
-}
-
-static void
-gen8_gpe_set_adv_surface_state(struct gen8_surface_state2 *ss,
- unsigned int v_direction,
- unsigned int cacheability_control,
- unsigned int format,
- unsigned int tiling,
- unsigned int width,
- unsigned int height,
- unsigned int pitch,
- unsigned int base_offset,
- unsigned int y_cb_offset)
-{
- memset(ss, 0, sizeof(*ss));
-
- ss->ss1.cbcr_pixel_offset_v_direction = v_direction;
- ss->ss1.width = width - 1;
- ss->ss1.height = height - 1;
-
- ss->ss2.surface_format = format;
- ss->ss2.interleave_chroma = 1;
- ss->ss2.pitch = pitch - 1;
-
- ss->ss3.y_offset_for_cb = y_cb_offset;
-
- ss->ss5.surface_object_mocs = cacheability_control;
-
- ss->ss6.base_addr = base_offset;
-
- gen8_gpe_set_surface2_tiling(ss, tiling);
-}
-
-static void
-gen8_gpe_set_buffer2_surface_state(struct gen8_surface_state *ss,
- unsigned int cacheability_control,
- unsigned int format,
- unsigned int size,
- unsigned int pitch,
- unsigned int base_offset)
-{
- memset(ss, 0, sizeof(*ss));
-
- ss->ss0.surface_format = format;
- ss->ss0.surface_type = I965_SURFACE_BUFFER;
-
- ss->ss1.surface_mocs = cacheability_control;
-
- ss->ss2.width = (size - 1) & 0x7F;
- ss->ss2.height = ((size - 1) & 0x1FFF80) >> 7;
-
- ss->ss3.depth = ((size - 1) & 0xFE00000) >> 21;
- ss->ss3.pitch = pitch - 1;
-
- ss->ss7.shader_chanel_select_a = HSW_SCS_ALPHA;
- ss->ss7.shader_chanel_select_b = HSW_SCS_BLUE;
- ss->ss7.shader_chanel_select_g = HSW_SCS_GREEN;
- ss->ss7.shader_chanel_select_r = HSW_SCS_RED;
-
- ss->ss8.base_addr = base_offset;
-}
-
-void
-gen8_gpe_context_add_surface(struct i965_gpe_context *gpe_context,
- struct i965_gpe_surface *gpe_surface,
- int index)
-{
- char *buf;
- unsigned int tiling, swizzle, width, height, pitch, tile_alignment, y_offset = 0;
- unsigned int surface_state_offset = gpe_context->surface_state_binding_table.surface_state_offset +
- index * SURFACE_STATE_PADDED_SIZE_GEN8;
- unsigned int binding_table_offset = gpe_context->surface_state_binding_table.binding_table_offset +
- index * 4;
- struct i965_gpe_resource *gpe_resource = gpe_surface->gpe_resource;
-
- dri_bo_get_tiling(gpe_resource->bo, &tiling, &swizzle);
-
- dri_bo_map(gpe_context->surface_state_binding_table.bo, 1);
- 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) {
- struct gen8_surface_state *ss = (struct gen8_surface_state *)(buf + surface_state_offset);
- unsigned int target_offset;
-
- width = gpe_resource->width;
- height = gpe_resource->height;
- pitch = gpe_resource->pitch;
-
- if (gpe_surface->is_override_offset) {
- y_offset = 0;
- target_offset = gpe_surface->offset;
- } else if (gpe_surface->is_uv_surface) {
- height /= 2;
-
- if (tiling == I915_TILING_Y) {
- tile_alignment = 32;
- } else if (tiling == I915_TILING_X) {
- tile_alignment = 8;
- } else
- tile_alignment = 1;
-
- y_offset = (gpe_resource->y_cb_offset % tile_alignment);
- target_offset = ALIGN_FLOOR(gpe_resource->y_cb_offset, tile_alignment) * pitch;
- } else {
- y_offset = 0;
- target_offset = 0;
- }
-
- if (gpe_surface->is_media_block_rw) {
- width = (ALIGN(width, 4) >> 2);
- }
-
- gen8_gpe_set_2d_surface_state(ss,
- gpe_surface->vert_line_stride_offset,
- gpe_surface->vert_line_stride,
- gpe_surface->cacheability_control,
- gpe_surface->format,
- tiling,
- width, height, pitch,
- gpe_resource->bo->offset64 + target_offset,
- y_offset);
-
- dri_bo_emit_reloc(gpe_context->surface_state_binding_table.bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- target_offset,
- surface_state_offset + offsetof(struct gen8_surface_state, ss8),
- gpe_resource->bo);
- } else if (gpe_surface->is_adv_surface) {
- struct gen8_surface_state2 *ss = (struct gen8_surface_state2 *)(buf + surface_state_offset);
-
- width = gpe_resource->width;
- height = gpe_resource->height;
- pitch = gpe_resource->pitch;
-
- gen8_gpe_set_adv_surface_state(ss,
- gpe_surface->v_direction,
- gpe_surface->cacheability_control,
- MFX_SURFACE_PLANAR_420_8,
- tiling,
- width, height, pitch,
- gpe_resource->bo->offset64,
- gpe_resource->y_cb_offset);
-
- dri_bo_emit_reloc(gpe_context->surface_state_binding_table.bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- 0,
- surface_state_offset + offsetof(struct gen8_surface_state2, ss6),
- gpe_resource->bo);
- } else {
- struct gen8_surface_state *ss = (struct gen8_surface_state *)(buf + surface_state_offset);
- unsigned int format;
-
- assert(gpe_surface->is_buffer);
-
- if (gpe_surface->is_raw_buffer) {
- format = I965_SURFACEFORMAT_RAW;
- pitch = 1;
- } else {
- format = I965_SURFACEFORMAT_R32_UINT;
- pitch = sizeof(unsigned int);
- }
-
- gen8_gpe_set_buffer2_surface_state(ss,
- gpe_surface->cacheability_control,
- format,
- gpe_surface->size,
- pitch,
- gpe_resource->bo->offset64 + gpe_surface->offset);
-
- 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 gen8_surface_state, ss8),
- gpe_resource->bo);
- }
-
- dri_bo_unmap(gpe_context->surface_state_binding_table.bo);
-}
-
-void
-gen8_gpe_mi_conditional_batch_buffer_end(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_conditional_batch_buffer_end_parameter *param)
-{
- __OUT_BATCH(batch, (MI_CONDITIONAL_BATCH_BUFFER_END |
- (1 << 21) |
- (4 - 2))); /* Always use PPGTT */
- __OUT_BATCH(batch, param->compare_data);
- __OUT_RELOC64(batch,
- param->bo,
- I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_INSTRUCTION, 0,
- param->offset);
-
-}
-
-void
-gen8_gpe_pipe_control(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_pipe_control_parameter *param)
-{
- int render_target_cache_flush_enable = CMD_PIPE_CONTROL_WC_FLUSH;
- int dc_flush_enable = 0;
- int state_cache_invalidation_enable = 0;
- int constant_cache_invalidation_enable = 0;
- int vf_cache_invalidation_enable = 0;
- int instruction_cache_invalidation_enable = 0;
- int post_sync_operation = CMD_PIPE_CONTROL_NOWRITE;
- int use_global_gtt = CMD_PIPE_CONTROL_GLOBAL_GTT_GEN8;
- int cs_stall_enable = !param->disable_cs_stall;
-
- switch (param->flush_mode) {
- case PIPE_CONTROL_FLUSH_WRITE_CACHE:
- render_target_cache_flush_enable = CMD_PIPE_CONTROL_WC_FLUSH;
- dc_flush_enable = CMD_PIPE_CONTROL_DC_FLUSH;
- break;
-
- case PIPE_CONTROL_FLUSH_READ_CACHE:
- render_target_cache_flush_enable = 0;
- state_cache_invalidation_enable = CMD_PIPE_CONTROL_SC_INVALIDATION_GEN8;
- constant_cache_invalidation_enable = CMD_PIPE_CONTROL_CC_INVALIDATION_GEN8;
- vf_cache_invalidation_enable = CMD_PIPE_CONTROL_VFC_INVALIDATION_GEN8;
- instruction_cache_invalidation_enable = CMD_PIPE_CONTROL_IS_FLUSH;
- break;
-
- case PIPE_CONTROL_FLUSH_NONE:
- default:
- render_target_cache_flush_enable = 0;
- break;
- }
-
- if (param->bo) {
- post_sync_operation = CMD_PIPE_CONTROL_WRITE_QWORD;
- use_global_gtt = CMD_PIPE_CONTROL_LOCAL_PGTT_GEN8;
- } else {
- post_sync_operation = CMD_PIPE_CONTROL_NOWRITE;
- render_target_cache_flush_enable = CMD_PIPE_CONTROL_WC_FLUSH;
- state_cache_invalidation_enable = CMD_PIPE_CONTROL_SC_INVALIDATION_GEN8;
- constant_cache_invalidation_enable = CMD_PIPE_CONTROL_CC_INVALIDATION_GEN8;
- vf_cache_invalidation_enable = CMD_PIPE_CONTROL_VFC_INVALIDATION_GEN8;
- instruction_cache_invalidation_enable = CMD_PIPE_CONTROL_IS_FLUSH;
- }
-
- __OUT_BATCH(batch, CMD_PIPE_CONTROL | (6 - 2));
- __OUT_BATCH(batch, (render_target_cache_flush_enable |
- dc_flush_enable |
- state_cache_invalidation_enable |
- constant_cache_invalidation_enable |
- vf_cache_invalidation_enable |
- instruction_cache_invalidation_enable |
- post_sync_operation |
- use_global_gtt |
- cs_stall_enable |
- CMD_PIPE_CONTROL_FLUSH_ENABLE));
-
- if (param->bo)
- __OUT_RELOC64(batch,
- param->bo,
- I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_RENDER,
- param->offset);
- else {
- __OUT_BATCH(batch, 0);
- __OUT_BATCH(batch, 0);
- }
-
- __OUT_BATCH(batch, param->dw0);
- __OUT_BATCH(batch, param->dw1);
-}
-
-bool
-i965_gpe_table_init(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_gpe_table *gpe = &i965->gpe_table;
-
- if (IS_GEN8(i965->intel.device_info)) {
- gpe->context_init = gen8_gpe_context_init;
- gpe->context_destroy = gen8_gpe_context_destroy;
- gpe->context_add_surface = gen8_gpe_context_add_surface;
- gpe->reset_binding_table = gen8_gpe_reset_binding_table;
- gpe->load_kernels = gen8_gpe_load_kernels;
- gpe->setup_interface_data = gen8_gpe_setup_interface_data;
- gpe->set_dynamic_buffer = gen8_gpe_context_set_dynamic_buffer;
- gpe->media_object = gen8_gpe_media_object;
- gpe->media_object_walker = gen8_gpe_media_object_walker;
- gpe->media_state_flush = gen8_gpe_media_state_flush;
- gpe->pipe_control = gen8_gpe_pipe_control;
- gpe->pipeline_end = gen8_gpe_pipeline_end;
- gpe->pipeline_setup = gen8_gpe_pipeline_setup;
- gpe->mi_conditional_batch_buffer_end = gen8_gpe_mi_conditional_batch_buffer_end;
- gpe->mi_batch_buffer_start = gen8_gpe_mi_batch_buffer_start;
- gpe->mi_load_register_reg = gen8_gpe_mi_load_register_reg;
- gpe->mi_load_register_imm = gen8_gpe_mi_load_register_imm;
- gpe->mi_load_register_mem = gen8_gpe_mi_load_register_mem;
- gpe->mi_store_register_mem = gen8_gpe_mi_store_register_mem;
- gpe->mi_store_data_imm =gen8_gpe_mi_store_data_imm;
- gpe->mi_flush_dw = gen8_gpe_mi_flush_dw;
- } else if (IS_GEN9(i965->intel.device_info)) {
- gpe->context_init = gen8_gpe_context_init;
- gpe->context_destroy = gen8_gpe_context_destroy;
- gpe->context_add_surface = gen9_gpe_context_add_surface;
- gpe->reset_binding_table = gen9_gpe_reset_binding_table;
- gpe->load_kernels = gen8_gpe_load_kernels;
- gpe->setup_interface_data = gen8_gpe_setup_interface_data;
- gpe->set_dynamic_buffer = gen8_gpe_context_set_dynamic_buffer;
- gpe->media_object = gen8_gpe_media_object;
- gpe->media_object_walker = gen8_gpe_media_object_walker;
- gpe->media_state_flush = gen8_gpe_media_state_flush;
- gpe->pipe_control = gen8_gpe_pipe_control;
- gpe->pipeline_end = gen9_gpe_pipeline_end;
- gpe->pipeline_setup = gen9_gpe_pipeline_setup;
- gpe->mi_conditional_batch_buffer_end = gen9_gpe_mi_conditional_batch_buffer_end;
- gpe->mi_batch_buffer_start = gen8_gpe_mi_batch_buffer_start;
- gpe->mi_load_register_reg = gen8_gpe_mi_load_register_reg;
- gpe->mi_load_register_imm = gen8_gpe_mi_load_register_imm;
- gpe->mi_load_register_mem = gen8_gpe_mi_load_register_mem;
- gpe->mi_store_register_mem = gen8_gpe_mi_store_register_mem;
- gpe->mi_store_data_imm =gen8_gpe_mi_store_data_imm;
- gpe->mi_flush_dw = gen8_gpe_mi_flush_dw;
- } else {
- // TODO: for other platforms
- }
-
- return true;
-}
-
-void
-i965_gpe_table_terminate(VADriverContextP ctx)
-{
-
-}
diff --git a/src/i965_gpe_utils.h b/src/i965_gpe_utils.h
deleted file mode 100644
index 52097d3..0000000
--- a/src/i965_gpe_utils.h
+++ /dev/null
@@ -1,649 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- */
-
-#ifndef _I965_GPE_UTILS_H_
-#define _I965_GPE_UTILS_H_
-
-#include <i915_drm.h>
-#include <intel_bufmgr.h>
-
-#include "i965_defines.h"
-#include "i965_structs.h"
-
-#define MAX_GPE_KERNELS 32
-
-struct i965_buffer_surface
-{
- dri_bo *bo;
- unsigned int num_blocks;
- unsigned int size_block;
- unsigned int pitch;
-};
-
-enum {
- I965_GPE_RESOURCE_BUFFER = 0,
- I965_GPE_RESOURCE_2D
-};
-
-struct i965_gpe_resource
-{
- dri_bo *bo;
- char *map;
- uint32_t type;
- uint32_t width;
- uint32_t height;
- uint32_t pitch;
- uint32_t size;
- uint32_t tiling;
- uint32_t cb_cr_pitch;
- uint32_t x_cb_offset;
- uint32_t y_cb_offset;
-};
-
-struct gpe_dynamic_state_parameter
-{
- dri_bo *bo;
- int bo_size;
- unsigned int curbe_offset;
- unsigned int idrt_offset;
- unsigned int sampler_offset;
-};
-
-#define PIPE_CONTROL_FLUSH_NONE 0
-#define PIPE_CONTROL_FLUSH_WRITE_CACHE 1
-#define PIPE_CONTROL_FLUSH_READ_CACHE 2
-
-struct gpe_pipe_control_parameter
-{
- dri_bo *bo;
- unsigned int offset;
- unsigned int flush_mode;
- unsigned int disable_cs_stall;
- unsigned int dw0;
- unsigned int dw1;
-};
-
-struct i965_gpe_context
-{
- struct {
- dri_bo *bo;
- unsigned int length; /* in bytes */
- unsigned int max_entries;
- unsigned int binding_table_offset;
- unsigned int surface_state_offset;
- } surface_state_binding_table;
-
- struct {
- dri_bo *bo;
- unsigned int max_entries;
- unsigned int entry_size; /* in bytes */
- unsigned int offset;
- } idrt;
-
- struct {
- dri_bo *bo;
- unsigned int length; /* in bytes */
- unsigned int offset;
- } curbe;
-
- struct {
- dri_bo *bo;
- unsigned int max_entries;
- unsigned int entry_size; /* in bytes */
- unsigned int offset;
- } sampler;
-
- struct {
- unsigned int gpgpu_mode : 1;
- unsigned int pad0 : 7;
- unsigned int max_num_threads : 16;
- unsigned int num_urb_entries : 8;
- unsigned int urb_entry_size : 16;
- unsigned int curbe_allocation_size : 16;
- } vfe_state;
-
- /* vfe_desc5/6/7 is used to determine whether the HW scoreboard is used.
- * If scoreboard is not used, don't touch them
- */
- union {
- unsigned int dword;
- struct {
- unsigned int mask:8;
- unsigned int pad:22;
- unsigned int type:1;
- unsigned int enable:1;
- } scoreboard0;
- }vfe_desc5;
-
- union {
- unsigned int dword;
- struct {
- int delta_x0:4;
- int delta_y0:4;
- int delta_x1:4;
- int delta_y1:4;
- int delta_x2:4;
- int delta_y2:4;
- int delta_x3:4;
- int delta_y3:4;
- } scoreboard1;
- } vfe_desc6;
-
- union {
- unsigned int dword;
- struct {
- int delta_x4:4;
- int delta_y4:4;
- int delta_x5:4;
- int delta_y5:4;
- int delta_x6:4;
- int delta_y6:4;
- int delta_x7:4;
- int delta_y7:4;
- } scoreboard2;
- } vfe_desc7;
-
- unsigned int num_kernels;
- struct i965_kernel kernels[MAX_GPE_KERNELS];
-
- struct {
- dri_bo *bo;
- int bo_size;
- unsigned int end_offset;
- } instruction_state;
-
- struct {
- dri_bo *bo;
- } indirect_state;
-
- struct {
- dri_bo *bo;
- int bo_size;
- unsigned int end_offset;
- } dynamic_state;
-};
-
-struct gpe_mi_flush_dw_parameter
-{
- dri_bo *bo;
- unsigned int offset;
- unsigned int video_pipeline_cache_invalidate;
- unsigned int dw0;
- unsigned int dw1;
-};
-
-struct gpe_mi_store_data_imm_parameter
-{
- dri_bo *bo;
- unsigned int is_qword;
- unsigned int offset;
- unsigned int dw0;
- unsigned int dw1;
-};
-
-struct gpe_mi_store_register_mem_parameter
-{
- dri_bo *bo;
- unsigned int offset;
- unsigned int mmio_offset;
-};
-
-struct gpe_mi_load_register_mem_parameter
-{
- dri_bo *bo;
- unsigned int offset;
- unsigned int mmio_offset;
-};
-
-struct gpe_mi_load_register_imm_parameter
-{
- unsigned int data;
- unsigned int mmio_offset;
-};
-
-struct gpe_mi_load_register_reg_parameter
-{
- unsigned int src_mmio_offset;
- unsigned int dst_mmio_offset;
-};
-
-struct gpe_mi_math_parameter
-{
- unsigned int num_instructions;
- unsigned int *instruction_list;
-};
-
-struct gpe_mi_conditional_batch_buffer_end_parameter
-{
- dri_bo *bo;
- unsigned int offset;
- unsigned int compare_mask_mode_disabled;
- unsigned int compare_data;
-};
-
-struct gpe_mi_batch_buffer_start_parameter
-{
- dri_bo *bo;
- unsigned int offset;
- unsigned int is_second_level;
- unsigned int use_global_gtt;
-};
-
-void i965_gpe_context_destroy(struct i965_gpe_context *gpe_context);
-void i965_gpe_context_init(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context);
-void i965_gpe_load_kernels(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct i965_kernel *kernel_list,
- unsigned int num_kernels);
-void gen6_gpe_pipeline_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch);
-void i965_gpe_surface2_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct object_surface *obj_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset);
-void i965_gpe_media_rw_surface_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct object_surface *obj_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset,
- int write_enabled);
-void i965_gpe_buffer_suface_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct i965_buffer_surface *buffer_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset);
-void gen7_gpe_surface2_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct object_surface *obj_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset);
-void gen7_gpe_media_rw_surface_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct object_surface *obj_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset,
- int write_enabled);
-void gen7_gpe_buffer_suface_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct i965_buffer_surface *buffer_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset);
-void gen75_gpe_media_chroma_surface_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct object_surface *obj_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset,
- int write_enabled);
-
-extern void gen8_gpe_surface2_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct object_surface *obj_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset);
-extern void gen8_gpe_media_rw_surface_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct object_surface *obj_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset,
- int write_enabled);
-extern void gen8_gpe_buffer_suface_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct i965_buffer_surface *buffer_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset);
-extern void gen8_gpe_media_chroma_surface_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct object_surface *obj_surface,
- unsigned long binding_table_offset,
- unsigned long surface_state_offset,
- int write_enabled);
-
-void gen8_gpe_pipeline_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch);
-extern void
-gen8_gpe_context_set_dynamic_buffer(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct gpe_dynamic_state_parameter *ds);
-
-
-void gen8_gpe_context_destroy(struct i965_gpe_context *gpe_context);
-void gen8_gpe_context_init(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context);
-
-void gen8_gpe_load_kernels(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct i965_kernel *kernel_list,
- unsigned int num_kernels);
-
-void gen9_gpe_pipeline_setup(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch);
-
-void gen9_gpe_pipeline_end(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch);
-
-Bool i965_allocate_gpe_resource(dri_bufmgr *bufmgr,
- struct i965_gpe_resource *res,
- int size,
- const char *name);
-
-void i965_object_surface_to_2d_gpe_resource(struct i965_gpe_resource *res,
- struct object_surface *obj_surface);
-
-void i965_dri_object_to_buffer_gpe_resource(struct i965_gpe_resource *res,
- dri_bo *bo);
-
-void i965_dri_object_to_2d_gpe_resource(struct i965_gpe_resource *res,
- dri_bo *bo,
- unsigned int width,
- unsigned int height,
- unsigned int pitch);
-
-void i965_zero_gpe_resource(struct i965_gpe_resource *res);
-
-void i965_free_gpe_resource(struct i965_gpe_resource *res);
-
-void *i965_map_gpe_resource(struct i965_gpe_resource *res);
-
-void i965_unmap_gpe_resource(struct i965_gpe_resource *res);
-
-void gen8_gpe_mi_flush_dw(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_flush_dw_parameter *params);
-
-void gen8_gpe_mi_store_data_imm(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_store_data_imm_parameter *params);
-
-void gen8_gpe_mi_store_register_mem(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_store_register_mem_parameter *params);
-
-void gen8_gpe_mi_load_register_mem(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_load_register_mem_parameter *params);
-
-void gen8_gpe_mi_load_register_imm(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_load_register_imm_parameter *params);
-
-void gen8_gpe_mi_load_register_reg(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_load_register_reg_parameter *params);
-
-void gen9_gpe_mi_math(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_math_parameter *params);
-
-void gen9_gpe_mi_conditional_batch_buffer_end(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_conditional_batch_buffer_end_parameter *params);
-
-void gen8_gpe_mi_batch_buffer_start(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_batch_buffer_start_parameter *params);
-
-
-struct gpe_media_object_parameter
-{
- unsigned int use_scoreboard;
- unsigned int scoreboard_x;
- unsigned int scoreboard_y;
- unsigned int scoreboard_mask;
- unsigned int interface_offset;
- void *pinline_data;
- unsigned int inline_size;
-};
-
-struct i965_gpe_surface
-{
- unsigned int is_buffer:1;
- unsigned int is_2d_surface:1;
- unsigned int is_adv_surface:1;
- unsigned int is_uv_surface:1;
- 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;
- unsigned int cacheability_control;
- unsigned int format; // 2d surface only
- unsigned int v_direction; // adv surface only
- unsigned int size; // buffer only
- unsigned int offset;
-
- struct i965_gpe_resource *gpe_resource;
-};
-
-extern void
-gen9_gpe_reset_binding_table(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context);
-extern
-void *i965_gpe_context_map_curbe(struct i965_gpe_context *gpe_context);
-
-extern
-void i965_gpe_context_unmap_curbe(struct i965_gpe_context *gpe_context);
-
-extern
-void gen8_gpe_setup_interface_data(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context);
-extern void
-gen9_gpe_context_add_surface(struct i965_gpe_context *gpe_context,
- struct i965_gpe_surface *gpe_surface,
- int index);
-
-extern bool
-i965_gpe_allocate_2d_resource(dri_bufmgr *bufmgr,
- struct i965_gpe_resource *res,
- int width,
- int height,
- int pitch,
- const char *name);
-
-struct gpe_walker_xy
-{
- union {
- struct {
- unsigned int x:16;
- unsigned int y:16;
- };
- unsigned int value;
- };
-};
-
-struct gpe_media_object_walker_parameter
-{
- void *pinline_data;
- unsigned int inline_size;
- unsigned int interface_offset;
- unsigned int use_scoreboard;
- unsigned int scoreboard_mask;
- unsigned int group_id_loop_select;
- unsigned int color_count_minus1;
- unsigned int mid_loop_unit_x;
- unsigned int mid_loop_unit_y;
- unsigned int middle_loop_extra_steps;
- unsigned int local_loop_exec_count;
- unsigned int global_loop_exec_count;
- struct gpe_walker_xy block_resolution;
- struct gpe_walker_xy local_start;
- struct gpe_walker_xy local_end;
- struct gpe_walker_xy local_outer_loop_stride;
- struct gpe_walker_xy local_inner_loop_unit;
- struct gpe_walker_xy global_resolution;
- struct gpe_walker_xy global_start;
- struct gpe_walker_xy global_outer_loop_stride;
- struct gpe_walker_xy global_inner_loop_unit;
-};
-
-extern void
-gen8_gpe_media_object(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch,
- struct gpe_media_object_parameter *param);
-
-extern void
-gen8_gpe_media_state_flush(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch);
-
-extern void
-gen8_gpe_media_object_walker(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- 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);
-extern void
-gen8_gpe_reset_binding_table(VADriverContextP ctx, struct i965_gpe_context *gpe_context);
-
-extern void
-gen8_gpe_context_add_surface(struct i965_gpe_context *gpe_context,
- struct i965_gpe_surface *gpe_surface,
- int index);
-
-extern void
-gen8_gpe_mi_conditional_batch_buffer_end(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_conditional_batch_buffer_end_parameter *param);
-
-extern void
-gen8_gpe_pipe_control(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_pipe_control_parameter *param);
-
-struct i965_gpe_table
-{
- void (*context_init)(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context);
-
- void (*context_destroy)(struct i965_gpe_context *gpe_context);
-
- void (*context_add_surface)(struct i965_gpe_context *gpe_context,
- struct i965_gpe_surface *gpe_surface,
- int index);
-
- void (*reset_binding_table)(VADriverContextP ctx, struct i965_gpe_context *gpe_context);
-
- void (*load_kernels)(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct i965_kernel *kernel_list,
- unsigned int num_kernels);
-
- void (*setup_interface_data)(VADriverContextP ctx, struct i965_gpe_context *gpe_context);
-
- void (*set_dynamic_buffer)(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct gpe_dynamic_state_parameter *ds);
-
- void (*media_object)(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch,
- struct gpe_media_object_parameter *param);
-
- void (*media_object_walker)(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch,
- struct gpe_media_object_walker_parameter *param);
-
- void (*media_state_flush)(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch);
-
-
- void (*pipe_control)(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_pipe_control_parameter *param);
-
- void (*pipeline_end)(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch); // only available on gen9+
-
- void (*pipeline_setup)(VADriverContextP ctx,
- struct i965_gpe_context *gpe_context,
- struct intel_batchbuffer *batch);
-
- void (*mi_conditional_batch_buffer_end)(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_conditional_batch_buffer_end_parameter *param);
-
- void (*mi_batch_buffer_start)(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_batch_buffer_start_parameter *params);
-
- void (*mi_load_register_reg)(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_load_register_reg_parameter *params);
-
- void (*mi_load_register_imm)(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_load_register_imm_parameter *params);
-
- void (*mi_load_register_mem)(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_load_register_mem_parameter *params);
-
-
- void (*mi_store_register_mem)(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_store_register_mem_parameter *params);
-
- void (*mi_store_data_imm)(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_store_data_imm_parameter *params);
-
- void (*mi_flush_dw)(VADriverContextP ctx,
- struct intel_batchbuffer *batch,
- struct gpe_mi_flush_dw_parameter *params);
-};
-
-extern bool
-i965_gpe_table_init(VADriverContextP ctx);
-
-extern void
-i965_gpe_table_terminate(VADriverContextP ctx);
-
-#endif /* _I965_GPE_UTILS_H_ */
diff --git a/src/i965_media.c b/src/i965_media.c
deleted file mode 100644
index 3e33b9b..0000000
--- a/src/i965_media.c
+++ /dev/null
@@ -1,398 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- * Zou Nan hai <nanhai.zou@intel.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-
-#include "i965_media.h"
-#include "i965_media_mpeg2.h"
-#include "i965_media_h264.h"
-#include "i965_decoder_utils.h"
-
-static void
-i965_media_pipeline_select(VADriverContextP ctx, struct i965_media_context *media_context)
-{
- struct intel_batchbuffer *batch = media_context->base.batch;
-
- BEGIN_BATCH(batch, 1);
- OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_MEDIA);
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_media_urb_layout(VADriverContextP ctx, struct i965_media_context *media_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = media_context->base.batch;
- unsigned int vfe_fence, cs_fence;
-
- vfe_fence = media_context->urb.cs_start;
- cs_fence = i965->intel.device_info->urb_size;
-
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch, CMD_URB_FENCE | UF0_VFE_REALLOC | UF0_CS_REALLOC | 1);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch,
- (vfe_fence << UF2_VFE_FENCE_SHIFT) | /* VFE_SIZE */
- (cs_fence << UF2_CS_FENCE_SHIFT)); /* CS_SIZE */
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_media_state_base_address(VADriverContextP ctx, struct i965_media_context *media_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = media_context->base.batch;
-
- if (IS_IRONLAKE(i965->intel.device_info)) {
- BEGIN_BATCH(batch, 8);
- OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | 6);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
-
- if (media_context->indirect_object.bo) {
- OUT_RELOC(batch, media_context->indirect_object.bo, I915_GEM_DOMAIN_INSTRUCTION, 0,
- media_context->indirect_object.offset | BASE_ADDRESS_MODIFY);
- } else {
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- }
-
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- ADVANCE_BATCH(batch);
- } else {
- BEGIN_BATCH(batch, 6);
- OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | 4);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
-
- if (media_context->indirect_object.bo) {
- OUT_RELOC(batch, media_context->indirect_object.bo, I915_GEM_DOMAIN_INSTRUCTION, 0,
- media_context->indirect_object.offset | BASE_ADDRESS_MODIFY);
- } else {
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- }
-
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- ADVANCE_BATCH(batch);
- }
-}
-
-static void
-i965_media_state_pointers(VADriverContextP ctx, struct i965_media_context *media_context)
-{
- struct intel_batchbuffer *batch = media_context->base.batch;
-
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch, CMD_MEDIA_STATE_POINTERS | 1);
-
- if (media_context->extended_state.enabled)
- OUT_RELOC(batch, media_context->extended_state.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 1);
- else
- OUT_BATCH(batch, 0);
-
- OUT_RELOC(batch, media_context->vfe_state.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_media_cs_urb_layout(VADriverContextP ctx, struct i965_media_context *media_context)
-{
- struct intel_batchbuffer *batch = media_context->base.batch;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, CMD_CS_URB_STATE | 0);
- OUT_BATCH(batch,
- ((media_context->urb.size_cs_entry - 1) << 4) | /* URB Entry Allocation Size */
- (media_context->urb.num_cs_entries << 0)); /* Number of URB Entries */
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_media_pipeline_state(VADriverContextP ctx, struct i965_media_context *media_context)
-{
- i965_media_state_base_address(ctx, media_context);
- i965_media_state_pointers(ctx, media_context);
- i965_media_cs_urb_layout(ctx, media_context);
-}
-
-static void
-i965_media_constant_buffer(VADriverContextP ctx, struct decode_state *decode_state, struct i965_media_context *media_context)
-{
- struct intel_batchbuffer *batch = media_context->base.batch;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, CMD_CONSTANT_BUFFER | (1 << 8) | (2 - 2));
- OUT_RELOC(batch, media_context->curbe.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- media_context->urb.size_cs_entry - 1);
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_media_depth_buffer(VADriverContextP ctx, struct i965_media_context *media_context)
-{
- struct intel_batchbuffer *batch = media_context->base.batch;
-
- BEGIN_BATCH(batch, 6);
- OUT_BATCH(batch, CMD_DEPTH_BUFFER | 4);
- OUT_BATCH(batch, (I965_DEPTHFORMAT_D32_FLOAT << 18) |
- (I965_SURFACE_NULL << 29));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_media_pipeline_setup(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct i965_media_context *media_context)
-{
- struct intel_batchbuffer *batch = media_context->base.batch;
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch); /* step 1 */
- i965_media_depth_buffer(ctx, media_context);
- i965_media_pipeline_select(ctx, media_context); /* step 2 */
- i965_media_urb_layout(ctx, media_context); /* step 3 */
- i965_media_pipeline_state(ctx, media_context); /* step 4 */
- i965_media_constant_buffer(ctx, decode_state, media_context); /* step 5 */
- assert(media_context->media_objects);
- media_context->media_objects(ctx, decode_state, media_context); /* step 6 */
- intel_batchbuffer_end_atomic(batch);
-}
-
-static void
-i965_media_decode_init(VADriverContextP ctx,
- VAProfile profile,
- struct decode_state *decode_state,
- struct i965_media_context *media_context)
-{
- int i;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- dri_bo *bo;
-
- /* constant buffer */
- dri_bo_unreference(media_context->curbe.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "constant buffer",
- 4096, 64);
- assert(bo);
- media_context->curbe.bo = bo;
-
- /* surface state */
- for (i = 0; i < MAX_MEDIA_SURFACES; i++) {
- dri_bo_unreference(media_context->surface_state[i].bo);
- media_context->surface_state[i].bo = NULL;
- }
-
- /* binding table */
- dri_bo_unreference(media_context->binding_table.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "binding table",
- MAX_MEDIA_SURFACES * sizeof(unsigned int), 32);
- assert(bo);
- media_context->binding_table.bo = bo;
-
- /* interface descriptor remapping table */
- dri_bo_unreference(media_context->idrt.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "interface discriptor",
- MAX_INTERFACE_DESC * sizeof(struct i965_interface_descriptor), 16);
- assert(bo);
- media_context->idrt.bo = bo;
-
- /* vfe state */
- dri_bo_unreference(media_context->vfe_state.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "vfe state",
- sizeof(struct i965_vfe_state), 32);
- assert(bo);
- media_context->vfe_state.bo = bo;
-
- /* extended state */
- media_context->extended_state.enabled = 0;
-
- switch (profile) {
- case VAProfileMPEG2Simple:
- case VAProfileMPEG2Main:
- i965_media_mpeg2_decode_init(ctx, decode_state, media_context);
- break;
-
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- i965_media_h264_decode_init(ctx, decode_state, media_context);
- break;
-
- default:
- assert(0);
- break;
- }
-}
-
-static VAStatus
-i965_media_decode_picture(VADriverContextP ctx,
- VAProfile profile,
- union codec_state *codec_state,
- struct hw_context *hw_context)
-{
- struct i965_media_context *media_context = (struct i965_media_context *)hw_context;
- struct decode_state *decode_state = &codec_state->decode;
- VAStatus vaStatus;
-
- vaStatus = intel_decoder_sanity_check_input(ctx, profile, decode_state);
-
- if (vaStatus != VA_STATUS_SUCCESS)
- goto out;
-
- i965_media_decode_init(ctx, profile, decode_state, media_context);
- assert(media_context->media_states_setup);
- media_context->media_states_setup(ctx, decode_state, media_context);
- i965_media_pipeline_setup(ctx, decode_state, media_context);
- intel_batchbuffer_flush(hw_context->batch);
-
- vaStatus = VA_STATUS_SUCCESS;
-
-out:
- return vaStatus;
-}
-
-static void
-i965_media_context_destroy(void *hw_context)
-{
- struct i965_media_context *media_context = (struct i965_media_context *)hw_context;
- int i;
-
- if (media_context->free_private_context)
- media_context->free_private_context(&media_context->private_context);
-
- for (i = 0; i < MAX_MEDIA_SURFACES; i++) {
- dri_bo_unreference(media_context->surface_state[i].bo);
- media_context->surface_state[i].bo = NULL;
- }
-
- dri_bo_unreference(media_context->extended_state.bo);
- media_context->extended_state.bo = NULL;
-
- dri_bo_unreference(media_context->vfe_state.bo);
- media_context->vfe_state.bo = NULL;
-
- dri_bo_unreference(media_context->idrt.bo);
- media_context->idrt.bo = NULL;
-
- dri_bo_unreference(media_context->binding_table.bo);
- media_context->binding_table.bo = NULL;
-
- dri_bo_unreference(media_context->curbe.bo);
- media_context->curbe.bo = NULL;
-
- dri_bo_unreference(media_context->indirect_object.bo);
- media_context->indirect_object.bo = NULL;
-
- intel_batchbuffer_free(media_context->base.batch);
- free(media_context);
-}
-
-struct hw_context *
-g4x_dec_hw_context_init(VADriverContextP ctx, struct object_config *obj_config)
-{
- struct intel_driver_data *intel = intel_driver_data(ctx);
- struct i965_media_context *media_context = calloc(1, sizeof(struct i965_media_context));
-
- assert(media_context);
- media_context->base.destroy = i965_media_context_destroy;
- media_context->base.run = i965_media_decode_picture;
- media_context->base.batch = intel_batchbuffer_new(intel, I915_EXEC_RENDER, 0);
-
- switch (obj_config->profile) {
- case VAProfileMPEG2Simple:
- case VAProfileMPEG2Main:
- i965_media_mpeg2_dec_context_init(ctx, media_context);
- break;
-
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- case VAProfileVC1Simple:
- case VAProfileVC1Main:
- case VAProfileVC1Advanced:
- default:
- assert(0);
- break;
- }
-
- return (struct hw_context *)media_context;
-}
-
-struct hw_context *
-ironlake_dec_hw_context_init(VADriverContextP ctx, struct object_config *obj_config)
-{
- struct intel_driver_data *intel = intel_driver_data(ctx);
- struct i965_media_context *media_context = calloc(1, sizeof(struct i965_media_context));
-
- assert(media_context);
- media_context->base.destroy = i965_media_context_destroy;
- media_context->base.run = i965_media_decode_picture;
- media_context->base.batch = intel_batchbuffer_new(intel, I915_EXEC_RENDER, 0);
-
- switch (obj_config->profile) {
- case VAProfileMPEG2Simple:
- case VAProfileMPEG2Main:
- i965_media_mpeg2_dec_context_init(ctx, media_context);
- break;
-
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- i965_media_h264_dec_context_init(ctx, media_context);
- break;
-
- case VAProfileVC1Simple:
- case VAProfileVC1Main:
- case VAProfileVC1Advanced:
- default:
- assert(0);
- break;
- }
-
- return (struct hw_context *)media_context;
-}
diff --git a/src/i965_media.h b/src/i965_media.h
deleted file mode 100644
index e309d5b..0000000
--- a/src/i965_media.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- * Zou Nan hai <nanhai.zou@intel.com>
- *
- */
-
-#ifndef _I965_MEDIA_H_
-#define _I965_MEDIA_H_
-
-#include <xf86drm.h>
-#include <drm.h>
-#include <i915_drm.h>
-#include <intel_bufmgr.h>
-
-#include "i965_structs.h"
-
-#define MAX_INTERFACE_DESC 16
-#define MAX_MEDIA_SURFACES 34
-
-struct decode_state;
-
-struct i965_media_context
-{
- struct hw_context base;
-
- struct {
- dri_bo *bo;
- } surface_state[MAX_MEDIA_SURFACES];
-
- struct {
- dri_bo *bo;
- } binding_table;
-
- struct {
- dri_bo *bo;
- } idrt; /* interface descriptor remap table */
-
- struct {
- dri_bo *bo;
- int enabled;
- } extended_state;
-
- struct {
- dri_bo *bo;
- } vfe_state;
-
- struct {
- dri_bo *bo;
- } curbe;
-
- struct {
- dri_bo *bo;
- unsigned long offset;
- } indirect_object;
-
- struct {
- unsigned int vfe_start;
- unsigned int cs_start;
-
- unsigned int num_vfe_entries;
- unsigned int num_cs_entries;
-
- unsigned int size_vfe_entry;
- unsigned int size_cs_entry;
- } urb;
-
- void *private_context;
- void (*media_states_setup)(VADriverContextP ctx, struct decode_state *decode_state, struct i965_media_context *media_context);
- void (*media_objects)(VADriverContextP ctx, struct decode_state *decode_state, struct i965_media_context *media_context);
- void (*free_private_context)(void **data);
-};
-
-#endif /* _I965_MEDIA_H_ */
diff --git a/src/i965_media_h264.c b/src/i965_media_h264.c
deleted file mode 100644
index 5b05ac0..0000000
--- a/src/i965_media_h264.c
+++ /dev/null
@@ -1,902 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "i965_media.h"
-#include "i965_media_h264.h"
-#include "i965_decoder_utils.h"
-
-enum {
- INTRA_16X16 = 0,
- INTRA_8X8,
- INTRA_4X4,
- INTRA_PCM,
- FRAMEMB_MOTION,
- FIELDMB_MOTION,
- MBAFF_MOTION,
-};
-
-struct intra_kernel_header
-{
- /* R1.0 */
- unsigned char intra_4x4_luma_mode_0_offset;
- unsigned char intra_4x4_luma_mode_1_offset;
- unsigned char intra_4x4_luma_mode_2_offset;
- unsigned char intra_4x4_luma_mode_3_offset;
- /* R1.1 */
- unsigned char intra_4x4_luma_mode_4_offset;
- unsigned char intra_4x4_luma_mode_5_offset;
- unsigned char intra_4x4_luma_mode_6_offset;
- unsigned char intra_4x4_luma_mode_7_offset;
- /* R1.2 */
- unsigned char intra_4x4_luma_mode_8_offset;
- unsigned char pad0;
- unsigned short top_reference_offset;
- /* R1.3 */
- unsigned char intra_8x8_luma_mode_0_offset;
- unsigned char intra_8x8_luma_mode_1_offset;
- unsigned char intra_8x8_luma_mode_2_offset;
- unsigned char intra_8x8_luma_mode_3_offset;
- /* R1.4 */
- unsigned char intra_8x8_luma_mode_4_offset;
- unsigned char intra_8x8_luma_mode_5_offset;
- unsigned char intra_8x8_luma_mode_6_offset;
- unsigned char intra_8x8_luma_mode_7_offset;
- /* R1.5 */
- unsigned char intra_8x8_luma_mode_8_offset;
- unsigned char pad1;
- unsigned short const_reverse_data_transfer_intra_8x8;
- /* R1.6 */
- unsigned char intra_16x16_luma_mode_0_offset;
- unsigned char intra_16x16_luma_mode_1_offset;
- unsigned char intra_16x16_luma_mode_2_offset;
- unsigned char intra_16x16_luma_mode_3_offset;
- /* R1.7 */
- unsigned char intra_chroma_mode_0_offset;
- unsigned char intra_chroma_mode_1_offset;
- unsigned char intra_chroma_mode_2_offset;
- unsigned char intra_chroma_mode_3_offset;
- /* R2.0 */
- unsigned int const_intra_16x16_plane_0;
- /* R2.1 */
- unsigned int const_intra_16x16_chroma_plane_0;
- /* R2.2 */
- unsigned int const_intra_16x16_chroma_plane_1;
- /* R2.3 */
- unsigned int const_intra_16x16_plane_1;
- /* R2.4 */
- unsigned int left_shift_count_reverse_dw_ordering;
- /* R2.5 */
- unsigned int const_reverse_data_transfer_intra_4x4;
- /* R2.6 */
- unsigned int intra_4x4_pred_mode_offset;
-};
-
-struct inter_kernel_header
-{
- unsigned short weight_offset;
- unsigned char weight_offset_flag;
- unsigned char pad0;
-};
-
-#include "shaders/h264/mc/export.inc"
-static unsigned long avc_mc_kernel_offset_gen4[] = {
- INTRA_16x16_IP * INST_UNIT_GEN4,
- INTRA_8x8_IP * INST_UNIT_GEN4,
- INTRA_4x4_IP * INST_UNIT_GEN4,
- INTRA_PCM_IP * INST_UNIT_GEN4,
- FRAME_MB_IP * INST_UNIT_GEN4,
- FIELD_MB_IP * INST_UNIT_GEN4,
- MBAFF_MB_IP * INST_UNIT_GEN4
-};
-
-struct intra_kernel_header intra_kernel_header_gen4 = {
- 0,
- (INTRA_4X4_HORIZONTAL_IP - INTRA_4X4_VERTICAL_IP),
- (INTRA_4X4_DC_IP - INTRA_4X4_VERTICAL_IP),
- (INTRA_4X4_DIAG_DOWN_LEFT_IP - INTRA_4X4_VERTICAL_IP),
-
- (INTRA_4X4_DIAG_DOWN_RIGHT_IP - INTRA_4X4_VERTICAL_IP),
- (INTRA_4X4_VERT_RIGHT_IP - INTRA_4X4_VERTICAL_IP),
- (INTRA_4X4_HOR_DOWN_IP - INTRA_4X4_VERTICAL_IP),
- (INTRA_4X4_VERT_LEFT_IP - INTRA_4X4_VERTICAL_IP),
-
- (INTRA_4X4_HOR_UP_IP - INTRA_4X4_VERTICAL_IP),
- 0,
- 0xFFFC,
-
- 0,
- (INTRA_8X8_HORIZONTAL_IP - INTRA_8X8_VERTICAL_IP),
- (INTRA_8X8_DC_IP - INTRA_8X8_VERTICAL_IP),
- (INTRA_8X8_DIAG_DOWN_LEFT_IP - INTRA_8X8_VERTICAL_IP),
-
- (INTRA_8X8_DIAG_DOWN_RIGHT_IP - INTRA_8X8_VERTICAL_IP),
- (INTRA_8X8_VERT_RIGHT_IP - INTRA_8X8_VERTICAL_IP),
- (INTRA_8X8_HOR_DOWN_IP - INTRA_8X8_VERTICAL_IP),
- (INTRA_8X8_VERT_LEFT_IP - INTRA_8X8_VERTICAL_IP),
-
- (INTRA_8X8_HOR_UP_IP - INTRA_8X8_VERTICAL_IP),
- 0,
- 0x0001,
-
- 0,
- (INTRA_16x16_HORIZONTAL_IP - INTRA_16x16_VERTICAL_IP),
- (INTRA_16x16_DC_IP - INTRA_16x16_VERTICAL_IP),
- (INTRA_16x16_PLANE_IP - INTRA_16x16_VERTICAL_IP),
-
- 0,
- (INTRA_CHROMA_HORIZONTAL_IP - INTRA_CHROMA_DC_IP),
- (INTRA_CHROMA_VERTICAL_IP - INTRA_CHROMA_DC_IP),
- (INTRA_Chroma_PLANE_IP - INTRA_CHROMA_DC_IP),
-
- 0xFCFBFAF9,
-
- 0x00FFFEFD,
-
- 0x04030201,
-
- 0x08070605,
-
- 0x18100800,
-
- 0x00020406,
-
- (intra_Pred_4x4_Y_IP - ADD_ERROR_SB3_IP) * 0x1000000 +
- (intra_Pred_4x4_Y_IP - ADD_ERROR_SB2_IP) * 0x10000 +
- (intra_Pred_4x4_Y_IP - ADD_ERROR_SB1_IP) * 0x100 +
- (intra_Pred_4x4_Y_IP - ADD_ERROR_SB0_IP)
-};
-
-static const uint32_t h264_avc_combined_gen4[][4] = {
-#include "shaders/h264/mc/avc_mc.g4b"
-};
-
-static const uint32_t h264_avc_null_gen4[][4] = {
-#include "shaders/h264/mc/null.g4b"
-};
-
-static struct i965_kernel h264_avc_kernels_gen4[] = {
- {
- "AVC combined kernel",
- H264_AVC_COMBINED,
- h264_avc_combined_gen4,
- sizeof(h264_avc_combined_gen4),
- NULL
- },
-
- {
- "NULL kernel",
- H264_AVC_NULL,
- h264_avc_null_gen4,
- sizeof(h264_avc_null_gen4),
- NULL
- }
-};
-
-/* On Ironlake */
-#include "shaders/h264/mc/export.inc.gen5"
-static unsigned long avc_mc_kernel_offset_gen5[] = {
- INTRA_16x16_IP_GEN5 * INST_UNIT_GEN5,
- INTRA_8x8_IP_GEN5 * INST_UNIT_GEN5,
- INTRA_4x4_IP_GEN5 * INST_UNIT_GEN5,
- INTRA_PCM_IP_GEN5 * INST_UNIT_GEN5,
- FRAME_MB_IP_GEN5 * INST_UNIT_GEN5,
- FIELD_MB_IP_GEN5 * INST_UNIT_GEN5,
- MBAFF_MB_IP_GEN5 * INST_UNIT_GEN5
-};
-
-struct intra_kernel_header intra_kernel_header_gen5 = {
- 0,
- (INTRA_4X4_HORIZONTAL_IP_GEN5 - INTRA_4X4_VERTICAL_IP_GEN5),
- (INTRA_4X4_DC_IP_GEN5 - INTRA_4X4_VERTICAL_IP_GEN5),
- (INTRA_4X4_DIAG_DOWN_LEFT_IP_GEN5 - INTRA_4X4_VERTICAL_IP_GEN5),
-
- (INTRA_4X4_DIAG_DOWN_RIGHT_IP_GEN5 - INTRA_4X4_VERTICAL_IP_GEN5),
- (INTRA_4X4_VERT_RIGHT_IP_GEN5 - INTRA_4X4_VERTICAL_IP_GEN5),
- (INTRA_4X4_HOR_DOWN_IP_GEN5 - INTRA_4X4_VERTICAL_IP_GEN5),
- (INTRA_4X4_VERT_LEFT_IP_GEN5 - INTRA_4X4_VERTICAL_IP_GEN5),
-
- (INTRA_4X4_HOR_UP_IP_GEN5 - INTRA_4X4_VERTICAL_IP_GEN5),
- 0,
- 0xFFFC,
-
- 0,
- (INTRA_8X8_HORIZONTAL_IP_GEN5 - INTRA_8X8_VERTICAL_IP_GEN5),
- (INTRA_8X8_DC_IP_GEN5 - INTRA_8X8_VERTICAL_IP_GEN5),
- (INTRA_8X8_DIAG_DOWN_LEFT_IP_GEN5 - INTRA_8X8_VERTICAL_IP_GEN5),
-
- (INTRA_8X8_DIAG_DOWN_RIGHT_IP_GEN5 - INTRA_8X8_VERTICAL_IP_GEN5),
- (INTRA_8X8_VERT_RIGHT_IP_GEN5 - INTRA_8X8_VERTICAL_IP_GEN5),
- (INTRA_8X8_HOR_DOWN_IP_GEN5 - INTRA_8X8_VERTICAL_IP_GEN5),
- (INTRA_8X8_VERT_LEFT_IP_GEN5 - INTRA_8X8_VERTICAL_IP_GEN5),
-
- (INTRA_8X8_HOR_UP_IP_GEN5 - INTRA_8X8_VERTICAL_IP_GEN5),
- 0,
- 0x0001,
-
- 0,
- (INTRA_16x16_HORIZONTAL_IP_GEN5 - INTRA_16x16_VERTICAL_IP_GEN5),
- (INTRA_16x16_DC_IP_GEN5 - INTRA_16x16_VERTICAL_IP_GEN5),
- (INTRA_16x16_PLANE_IP_GEN5 - INTRA_16x16_VERTICAL_IP_GEN5),
-
- 0,
- (INTRA_CHROMA_HORIZONTAL_IP_GEN5 - INTRA_CHROMA_DC_IP_GEN5),
- (INTRA_CHROMA_VERTICAL_IP_GEN5 - INTRA_CHROMA_DC_IP_GEN5),
- (INTRA_Chroma_PLANE_IP_GEN5 - INTRA_CHROMA_DC_IP_GEN5),
-
- 0xFCFBFAF9,
-
- 0x00FFFEFD,
-
- 0x04030201,
-
- 0x08070605,
-
- 0x18100800,
-
- 0x00020406,
-
- (intra_Pred_4x4_Y_IP_GEN5 - ADD_ERROR_SB3_IP_GEN5) * 0x1000000 +
- (intra_Pred_4x4_Y_IP_GEN5 - ADD_ERROR_SB2_IP_GEN5) * 0x10000 +
- (intra_Pred_4x4_Y_IP_GEN5 - ADD_ERROR_SB1_IP_GEN5) * 0x100 +
- (intra_Pred_4x4_Y_IP_GEN5 - ADD_ERROR_SB0_IP_GEN5)
-};
-
-static const uint32_t h264_avc_combined_gen5[][4] = {
-#include "shaders/h264/mc/avc_mc.g4b.gen5"
-};
-
-static const uint32_t h264_avc_null_gen5[][4] = {
-#include "shaders/h264/mc/null.g4b.gen5"
-};
-
-static struct i965_kernel h264_avc_kernels_gen5[] = {
- {
- "AVC combined kernel",
- H264_AVC_COMBINED,
- h264_avc_combined_gen5,
- sizeof(h264_avc_combined_gen5),
- NULL
- },
-
- {
- "NULL kernel",
- H264_AVC_NULL,
- h264_avc_null_gen5,
- sizeof(h264_avc_null_gen5),
- NULL
- }
-};
-
-#define NUM_AVC_MC_INTERFACES (sizeof(avc_mc_kernel_offset_gen4) / sizeof(avc_mc_kernel_offset_gen4[0]))
-static unsigned long *avc_mc_kernel_offset = NULL;
-
-static struct intra_kernel_header *intra_kernel_header = NULL;
-
-static void
-i965_media_h264_surface_state(VADriverContextP ctx,
- int index,
- struct object_surface *obj_surface,
- unsigned long offset,
- int w, int h, int pitch,
- Bool is_dst,
- int vert_line_stride,
- int vert_line_stride_ofs,
- int format,
- struct i965_media_context *media_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_surface_state *ss;
- dri_bo *bo;
- uint32_t write_domain, read_domain;
-
- assert(obj_surface->bo);
-
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "surface state",
- sizeof(struct i965_surface_state), 32);
- assert(bo);
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- ss = bo->virtual;
- memset(ss, 0, sizeof(*ss));
- ss->ss0.surface_type = I965_SURFACE_2D;
- ss->ss0.surface_format = format;
- ss->ss0.vert_line_stride = vert_line_stride;
- ss->ss0.vert_line_stride_ofs = vert_line_stride_ofs;
- ss->ss1.base_addr = obj_surface->bo->offset + offset;
- ss->ss2.width = w - 1;
- ss->ss2.height = h - 1;
- ss->ss3.pitch = pitch - 1;
-
- if (is_dst) {
- write_domain = I915_GEM_DOMAIN_RENDER;
- read_domain = I915_GEM_DOMAIN_RENDER;
- } else {
- write_domain = 0;
- read_domain = I915_GEM_DOMAIN_SAMPLER;
- }
-
- dri_bo_emit_reloc(bo,
- read_domain, write_domain,
- offset,
- offsetof(struct i965_surface_state, ss1),
- obj_surface->bo);
- dri_bo_unmap(bo);
-
- assert(index < MAX_MEDIA_SURFACES);
- media_context->surface_state[index].bo = bo;
-}
-
-static void
-i965_media_h264_surfaces_setup(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct i965_media_context *media_context)
-{
- struct i965_h264_context *i965_h264_context;
- struct object_surface *obj_surface;
- VAPictureParameterBufferH264 *pic_param;
- VAPictureH264 *va_pic;
- int i, w, h;
- int field_picture;
-
- assert(media_context->private_context);
- i965_h264_context = (struct i965_h264_context *)media_context->private_context;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
-
- /* Target Picture */
- va_pic = &pic_param->CurrPic;
- obj_surface = decode_state->render_object;
- w = obj_surface->width;
- h = obj_surface->height;
- field_picture = !!(va_pic->flags & (VA_PICTURE_H264_TOP_FIELD | VA_PICTURE_H264_BOTTOM_FIELD));
- i965_media_h264_surface_state(ctx, 0, obj_surface,
- 0, w / 4, h / (1 + field_picture), w,
- 1,
- field_picture,
- !!(va_pic->flags & VA_PICTURE_H264_BOTTOM_FIELD),
- I965_SURFACEFORMAT_R8_SINT, /* Y */
- media_context);
- i965_media_h264_surface_state(ctx, 1, obj_surface,
- w * h, w / 4, h / 2 / (1 + field_picture), w,
- 1,
- field_picture,
- !!(va_pic->flags & VA_PICTURE_H264_BOTTOM_FIELD),
- I965_SURFACEFORMAT_R8G8_SINT, /* INTERLEAVED U/V */
- media_context);
-
- /* Reference Pictures */
- for (i = 0; i < ARRAY_ELEMS(i965_h264_context->fsid_list); i++) {
- struct object_surface * const obj_surface =
- i965_h264_context->fsid_list[i].obj_surface;
-
- if (obj_surface) {
- const VAPictureH264 * const va_pic = avc_find_picture(
- obj_surface->base.id, pic_param->ReferenceFrames,
- ARRAY_ELEMS(pic_param->ReferenceFrames));
-
- assert(va_pic != NULL);
- w = obj_surface->width;
- h = obj_surface->height;
- field_picture = !!(va_pic->flags & (VA_PICTURE_H264_TOP_FIELD | VA_PICTURE_H264_BOTTOM_FIELD));
- i965_media_h264_surface_state(ctx, 2 + i, obj_surface,
- 0, w / 4, h / (1 + field_picture), w,
- 0,
- field_picture,
- !!(va_pic->flags & VA_PICTURE_H264_BOTTOM_FIELD),
- I965_SURFACEFORMAT_R8_SINT, /* Y */
- media_context);
- i965_media_h264_surface_state(ctx, 18 + i, obj_surface,
- w * h, w / 4, h / 2 / (1 + field_picture), w,
- 0,
- field_picture,
- !!(va_pic->flags & VA_PICTURE_H264_BOTTOM_FIELD),
- I965_SURFACEFORMAT_R8G8_SINT, /* INTERLEAVED U/V */
- media_context);
- }
- }
-}
-
-static void
-i965_media_h264_binding_table(VADriverContextP ctx, struct i965_media_context *media_context)
-{
- int i;
- unsigned int *binding_table;
- dri_bo *bo = media_context->binding_table.bo;
-
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- binding_table = bo->virtual;
- memset(binding_table, 0, bo->size);
-
- for (i = 0; i < MAX_MEDIA_SURFACES; i++) {
- if (media_context->surface_state[i].bo) {
- binding_table[i] = media_context->surface_state[i].bo->offset;
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0,
- i * sizeof(*binding_table),
- media_context->surface_state[i].bo);
- }
- }
-
- dri_bo_unmap(media_context->binding_table.bo);
-}
-
-static void
-i965_media_h264_interface_descriptor_remap_table(VADriverContextP ctx, struct i965_media_context *media_context)
-{
- struct i965_h264_context *i965_h264_context = (struct i965_h264_context *)media_context->private_context;
- struct i965_interface_descriptor *desc;
- int i;
- dri_bo *bo;
-
- bo = media_context->idrt.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- desc = bo->virtual;
-
- for (i = 0; i < NUM_AVC_MC_INTERFACES; i++) {
- int kernel_offset = avc_mc_kernel_offset[i];
- memset(desc, 0, sizeof(*desc));
- desc->desc0.grf_reg_blocks = 7;
- desc->desc0.kernel_start_pointer = (i965_h264_context->avc_kernels[H264_AVC_COMBINED].bo->offset + kernel_offset) >> 6; /* reloc */
- desc->desc1.const_urb_entry_read_offset = 0;
- desc->desc1.const_urb_entry_read_len = 2;
- desc->desc3.binding_table_entry_count = 0;
- desc->desc3.binding_table_pointer =
- media_context->binding_table.bo->offset >> 5; /*reloc */
-
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- desc->desc0.grf_reg_blocks + kernel_offset,
- i * sizeof(*desc) + offsetof(struct i965_interface_descriptor, desc0),
- i965_h264_context->avc_kernels[H264_AVC_COMBINED].bo);
-
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- desc->desc3.binding_table_entry_count,
- i * sizeof(*desc) + offsetof(struct i965_interface_descriptor, desc3),
- media_context->binding_table.bo);
- desc++;
- }
-
- dri_bo_unmap(bo);
-}
-
-static void
-i965_media_h264_vfe_state(VADriverContextP ctx, struct i965_media_context *media_context)
-{
- struct i965_vfe_state *vfe_state;
- dri_bo *bo;
-
- bo = media_context->vfe_state.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- vfe_state = bo->virtual;
- memset(vfe_state, 0, sizeof(*vfe_state));
- vfe_state->vfe0.extend_vfe_state_present = 1;
- vfe_state->vfe1.max_threads = media_context->urb.num_vfe_entries - 1;
- vfe_state->vfe1.urb_entry_alloc_size = media_context->urb.size_vfe_entry - 1;
- vfe_state->vfe1.num_urb_entries = media_context->urb.num_vfe_entries;
- vfe_state->vfe1.vfe_mode = VFE_AVC_IT_MODE;
- vfe_state->vfe1.children_present = 0;
- vfe_state->vfe2.interface_descriptor_base =
- media_context->idrt.bo->offset >> 4; /* reloc */
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0,
- offsetof(struct i965_vfe_state, vfe2),
- media_context->idrt.bo);
- dri_bo_unmap(bo);
-}
-
-static void
-i965_media_h264_vfe_state_extension(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct i965_media_context *media_context)
-{
- struct i965_h264_context *i965_h264_context;
- struct i965_vfe_state_ex *vfe_state_ex;
- VAPictureParameterBufferH264 *pic_param;
- int mbaff_frame_flag;
-
- assert(media_context->private_context);
- i965_h264_context = (struct i965_h264_context *)media_context->private_context;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
- mbaff_frame_flag = (pic_param->seq_fields.bits.mb_adaptive_frame_field_flag &&
- !pic_param->pic_fields.bits.field_pic_flag);
-
- assert(media_context->extended_state.bo);
- dri_bo_map(media_context->extended_state.bo, 1);
- assert(media_context->extended_state.bo->virtual);
- vfe_state_ex = media_context->extended_state.bo->virtual;
- memset(vfe_state_ex, 0, sizeof(*vfe_state_ex));
-
- /*
- * Indirect data buffer:
- * --------------------------------------------------------
- * | Motion Vectors | Weight/Offset data | Residual data |
- * --------------------------------------------------------
- * R4-R7: Motion Vectors
- * R8-R9: Weight/Offset
- * R10-R33: Residual data
- */
- vfe_state_ex->vfex1.avc.residual_data_fix_offset_flag = !!RESIDUAL_DATA_OFFSET;
- vfe_state_ex->vfex1.avc.residual_data_offset = RESIDUAL_DATA_OFFSET;
-
- if (i965_h264_context->picture.i_flag) {
- vfe_state_ex->vfex1.avc.sub_field_present_flag = PRESENT_NOMV; /* NoMV */
- vfe_state_ex->vfex1.avc.weight_grf_offset = 0;
- vfe_state_ex->vfex1.avc.residual_grf_offset = 0;
- } else {
- vfe_state_ex->vfex1.avc.sub_field_present_flag = PRESENT_MV_WO; /* Both MV and W/O */
- vfe_state_ex->vfex1.avc.weight_grf_offset = 4;
- vfe_state_ex->vfex1.avc.residual_grf_offset = 6;
- }
-
- if (!pic_param->pic_fields.bits.field_pic_flag) {
- if (mbaff_frame_flag) {
- vfe_state_ex->remap_table0.remap_index_0 = INTRA_16X16;
- vfe_state_ex->remap_table0.remap_index_1 = INTRA_8X8;
- vfe_state_ex->remap_table0.remap_index_2 = INTRA_4X4;
- vfe_state_ex->remap_table0.remap_index_3 = INTRA_PCM;
- vfe_state_ex->remap_table0.remap_index_4 = MBAFF_MOTION;
- vfe_state_ex->remap_table0.remap_index_5 = MBAFF_MOTION;
- vfe_state_ex->remap_table0.remap_index_6 = MBAFF_MOTION;
- vfe_state_ex->remap_table0.remap_index_7 = MBAFF_MOTION;
-
- vfe_state_ex->remap_table1.remap_index_8 = MBAFF_MOTION;
- vfe_state_ex->remap_table1.remap_index_9 = MBAFF_MOTION;
- vfe_state_ex->remap_table1.remap_index_10 = MBAFF_MOTION;
- vfe_state_ex->remap_table1.remap_index_11 = MBAFF_MOTION;
- vfe_state_ex->remap_table1.remap_index_12 = MBAFF_MOTION;
- vfe_state_ex->remap_table1.remap_index_13 = MBAFF_MOTION;
- vfe_state_ex->remap_table1.remap_index_14 = MBAFF_MOTION;
- vfe_state_ex->remap_table1.remap_index_15 = MBAFF_MOTION;
- } else {
- vfe_state_ex->remap_table0.remap_index_0 = INTRA_16X16;
- vfe_state_ex->remap_table0.remap_index_1 = INTRA_8X8;
- vfe_state_ex->remap_table0.remap_index_2 = INTRA_4X4;
- vfe_state_ex->remap_table0.remap_index_3 = INTRA_PCM;
- vfe_state_ex->remap_table0.remap_index_4 = FRAMEMB_MOTION;
- vfe_state_ex->remap_table0.remap_index_5 = FRAMEMB_MOTION;
- vfe_state_ex->remap_table0.remap_index_6 = FRAMEMB_MOTION;
- vfe_state_ex->remap_table0.remap_index_7 = FRAMEMB_MOTION;
-
- vfe_state_ex->remap_table1.remap_index_8 = FRAMEMB_MOTION;
- vfe_state_ex->remap_table1.remap_index_9 = FRAMEMB_MOTION;
- vfe_state_ex->remap_table1.remap_index_10 = FRAMEMB_MOTION;
- vfe_state_ex->remap_table1.remap_index_11 = FRAMEMB_MOTION;
- vfe_state_ex->remap_table1.remap_index_12 = FRAMEMB_MOTION;
- vfe_state_ex->remap_table1.remap_index_13 = FRAMEMB_MOTION;
- vfe_state_ex->remap_table1.remap_index_14 = FRAMEMB_MOTION;
- vfe_state_ex->remap_table1.remap_index_15 = FRAMEMB_MOTION;
- }
- } else {
- vfe_state_ex->remap_table0.remap_index_0 = INTRA_16X16;
- vfe_state_ex->remap_table0.remap_index_1 = INTRA_8X8;
- vfe_state_ex->remap_table0.remap_index_2 = INTRA_4X4;
- vfe_state_ex->remap_table0.remap_index_3 = INTRA_PCM;
- vfe_state_ex->remap_table0.remap_index_4 = FIELDMB_MOTION;
- vfe_state_ex->remap_table0.remap_index_5 = FIELDMB_MOTION;
- vfe_state_ex->remap_table0.remap_index_6 = FIELDMB_MOTION;
- vfe_state_ex->remap_table0.remap_index_7 = FIELDMB_MOTION;
-
- vfe_state_ex->remap_table1.remap_index_8 = FIELDMB_MOTION;
- vfe_state_ex->remap_table1.remap_index_9 = FIELDMB_MOTION;
- vfe_state_ex->remap_table1.remap_index_10 = FIELDMB_MOTION;
- vfe_state_ex->remap_table1.remap_index_11 = FIELDMB_MOTION;
- vfe_state_ex->remap_table1.remap_index_12 = FIELDMB_MOTION;
- vfe_state_ex->remap_table1.remap_index_13 = FIELDMB_MOTION;
- vfe_state_ex->remap_table1.remap_index_14 = FIELDMB_MOTION;
- vfe_state_ex->remap_table1.remap_index_15 = FIELDMB_MOTION;
- }
-
- if (i965_h264_context->use_avc_hw_scoreboard) {
- vfe_state_ex->scoreboard0.enable = 1;
- vfe_state_ex->scoreboard0.type = SCOREBOARD_STALLING;
- vfe_state_ex->scoreboard0.mask = 0xff;
-
- vfe_state_ex->scoreboard1.delta_x0 = -1;
- vfe_state_ex->scoreboard1.delta_y0 = 0;
- vfe_state_ex->scoreboard1.delta_x1 = 0;
- vfe_state_ex->scoreboard1.delta_y1 = -1;
- vfe_state_ex->scoreboard1.delta_x2 = 1;
- vfe_state_ex->scoreboard1.delta_y2 = -1;
- vfe_state_ex->scoreboard1.delta_x3 = -1;
- vfe_state_ex->scoreboard1.delta_y3 = -1;
-
- vfe_state_ex->scoreboard2.delta_x4 = -1;
- vfe_state_ex->scoreboard2.delta_y4 = 1;
- vfe_state_ex->scoreboard2.delta_x5 = 0;
- vfe_state_ex->scoreboard2.delta_y5 = -2;
- vfe_state_ex->scoreboard2.delta_x6 = 1;
- vfe_state_ex->scoreboard2.delta_y6 = -2;
- vfe_state_ex->scoreboard2.delta_x7 = -1;
- vfe_state_ex->scoreboard2.delta_y7 = -2;
- }
-
- dri_bo_unmap(media_context->extended_state.bo);
-}
-
-static void
-i965_media_h264_upload_constants(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct i965_media_context *media_context)
-{
- struct i965_h264_context *i965_h264_context;
- unsigned char *constant_buffer;
- VASliceParameterBufferH264 *slice_param;
-
- assert(media_context->private_context);
- i965_h264_context = (struct i965_h264_context *)media_context->private_context;
-
- assert(decode_state->slice_params[0] && decode_state->slice_params[0]->buffer);
- slice_param = (VASliceParameterBufferH264 *)decode_state->slice_params[0]->buffer;
-
- dri_bo_map(media_context->curbe.bo, 1);
- assert(media_context->curbe.bo->virtual);
- constant_buffer = media_context->curbe.bo->virtual;
-
- /* HW solution for W=128 */
- if (i965_h264_context->use_hw_w128) {
- memcpy(constant_buffer, intra_kernel_header, sizeof(*intra_kernel_header));
- } else {
- if (slice_param->slice_type == SLICE_TYPE_I ||
- slice_param->slice_type == SLICE_TYPE_SI) {
- memcpy(constant_buffer, intra_kernel_header, sizeof(*intra_kernel_header));
- } else {
- /* FIXME: Need to upload CURBE data to inter kernel interface
- * to support weighted prediction work-around
- */
- *(short *)constant_buffer = i965_h264_context->weight128_offset0;
- constant_buffer += 2;
- *(char *)constant_buffer = i965_h264_context->weight128_offset0_flag;
- constant_buffer++;
- *constant_buffer = 0;
- }
- }
-
- dri_bo_unmap(media_context->curbe.bo);
-}
-
-static void
-i965_media_h264_states_setup(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct i965_media_context *media_context)
-{
- struct i965_h264_context *i965_h264_context;
-
- assert(media_context->private_context);
- i965_h264_context = (struct i965_h264_context *)media_context->private_context;
-
- i965_avc_bsd_pipeline(ctx, decode_state, i965_h264_context);
-
- if (i965_h264_context->use_avc_hw_scoreboard)
- i965_avc_hw_scoreboard(ctx, decode_state, i965_h264_context);
-
- i965_media_h264_surfaces_setup(ctx, decode_state, media_context);
- i965_media_h264_binding_table(ctx, media_context);
- i965_media_h264_interface_descriptor_remap_table(ctx, media_context);
- i965_media_h264_vfe_state_extension(ctx, decode_state, media_context);
- i965_media_h264_vfe_state(ctx, media_context);
- i965_media_h264_upload_constants(ctx, decode_state, media_context);
-}
-
-static void
-i965_media_h264_objects(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct i965_media_context *media_context)
-{
- struct intel_batchbuffer *batch = media_context->base.batch;
- struct i965_h264_context *i965_h264_context;
- unsigned int *object_command;
-
- assert(media_context->private_context);
- i965_h264_context = (struct i965_h264_context *)media_context->private_context;
-
- dri_bo_map(i965_h264_context->avc_it_command_mb_info.bo, True);
- assert(i965_h264_context->avc_it_command_mb_info.bo->virtual);
- object_command = i965_h264_context->avc_it_command_mb_info.bo->virtual;
- memset(object_command, 0, i965_h264_context->avc_it_command_mb_info.mbs * i965_h264_context->use_avc_hw_scoreboard * MB_CMD_IN_BYTES);
- object_command += i965_h264_context->avc_it_command_mb_info.mbs * (1 + i965_h264_context->use_avc_hw_scoreboard) * MB_CMD_IN_DWS;
- *object_command++ = 0;
- *object_command = MI_BATCH_BUFFER_END;
- dri_bo_unmap(i965_h264_context->avc_it_command_mb_info.bo);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, MI_BATCH_BUFFER_START | (2 << 6));
- OUT_RELOC(batch, i965_h264_context->avc_it_command_mb_info.bo,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- ADVANCE_BATCH(batch);
-
- /* Have to execute the batch buffer here becuase MI_BATCH_BUFFER_END
- * will cause control to pass back to ring buffer
- */
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
- intel_batchbuffer_start_atomic(batch, 0x1000);
- i965_avc_ildb(ctx, decode_state, i965_h264_context);
-}
-
-static void
-i965_media_h264_free_private_context(void **data)
-{
- struct i965_h264_context *i965_h264_context = *data;
- int i;
-
- if (i965_h264_context == NULL)
- return;
-
- i965_avc_ildb_ternimate(&i965_h264_context->avc_ildb_context);
- i965_avc_hw_scoreboard_ternimate(&i965_h264_context->avc_hw_scoreboard_context);
- i965_avc_bsd_ternimate(&i965_h264_context->i965_avc_bsd_context);
- dri_bo_unreference(i965_h264_context->avc_it_command_mb_info.bo);
- dri_bo_unreference(i965_h264_context->avc_it_data.bo);
- dri_bo_unreference(i965_h264_context->avc_ildb_data.bo);
-
- for (i = 0; i < NUM_H264_AVC_KERNELS; i++) {
- struct i965_kernel *kernel = &i965_h264_context->avc_kernels[i];
-
- dri_bo_unreference(kernel->bo);
- kernel->bo = NULL;
- }
-
- free(i965_h264_context);
- *data = NULL;
-}
-
-void
-i965_media_h264_decode_init(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct i965_media_context *media_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_h264_context *i965_h264_context = media_context->private_context;
- dri_bo *bo;
- VAPictureParameterBufferH264 *pic_param;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
- i965_h264_context->picture.width_in_mbs = ((pic_param->picture_width_in_mbs_minus1 + 1) & 0xff);
- i965_h264_context->picture.height_in_mbs = ((pic_param->picture_height_in_mbs_minus1 + 1) & 0xff) /
- (1 + !!pic_param->pic_fields.bits.field_pic_flag); /* picture height */
- i965_h264_context->picture.mbaff_frame_flag = (pic_param->seq_fields.bits.mb_adaptive_frame_field_flag &&
- !pic_param->pic_fields.bits.field_pic_flag);
- i965_h264_context->avc_it_command_mb_info.mbs = (i965_h264_context->picture.width_in_mbs *
- i965_h264_context->picture.height_in_mbs);
-
- dri_bo_unreference(i965_h264_context->avc_it_command_mb_info.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "avc it command mb info",
- i965_h264_context->avc_it_command_mb_info.mbs * MB_CMD_IN_BYTES * (1 + i965_h264_context->use_avc_hw_scoreboard) + 8,
- 0x1000);
- assert(bo);
- i965_h264_context->avc_it_command_mb_info.bo = bo;
-
- dri_bo_unreference(i965_h264_context->avc_it_data.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "avc it data",
- i965_h264_context->avc_it_command_mb_info.mbs *
- 0x800 *
- (1 + !!pic_param->pic_fields.bits.field_pic_flag),
- 0x1000);
- assert(bo);
- i965_h264_context->avc_it_data.bo = bo;
- i965_h264_context->avc_it_data.write_offset = 0;
- dri_bo_unreference(media_context->indirect_object.bo);
- media_context->indirect_object.bo = bo;
- dri_bo_reference(media_context->indirect_object.bo);
- media_context->indirect_object.offset = i965_h264_context->avc_it_data.write_offset;
-
- dri_bo_unreference(i965_h264_context->avc_ildb_data.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "AVC-ILDB Data Buffer",
- i965_h264_context->avc_it_command_mb_info.mbs * 64 * 2,
- 0x1000);
- assert(bo);
- i965_h264_context->avc_ildb_data.bo = bo;
-
- /* bsd pipeline */
- i965_avc_bsd_decode_init(ctx, i965_h264_context);
-
- /* HW scoreboard */
- if (i965_h264_context->use_avc_hw_scoreboard)
- i965_avc_hw_scoreboard_decode_init(ctx, i965_h264_context);
-
- /* ILDB */
- i965_avc_ildb_decode_init(ctx, i965_h264_context);
-
- /* for Media pipeline */
- media_context->extended_state.enabled = 1;
- dri_bo_unreference(media_context->extended_state.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "extened vfe state",
- sizeof(struct i965_vfe_state_ex), 32);
- assert(bo);
- media_context->extended_state.bo = bo;
-}
-
-void
-i965_media_h264_dec_context_init(VADriverContextP ctx, struct i965_media_context *media_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_h264_context *i965_h264_context;
- int i;
-
- i965_h264_context = calloc(1, sizeof(struct i965_h264_context));
-
- /* kernel */
- assert(NUM_H264_AVC_KERNELS == (sizeof(h264_avc_kernels_gen5) /
- sizeof(h264_avc_kernels_gen5[0])));
- assert(NUM_AVC_MC_INTERFACES == (sizeof(avc_mc_kernel_offset_gen5) /
- sizeof(avc_mc_kernel_offset_gen5[0])));
- assert(i965_h264_context);
- if (IS_IRONLAKE(i965->intel.device_info)) {
- memcpy(i965_h264_context->avc_kernels, h264_avc_kernels_gen5, sizeof(i965_h264_context->avc_kernels));
- avc_mc_kernel_offset = avc_mc_kernel_offset_gen5;
- intra_kernel_header = &intra_kernel_header_gen5;
- i965_h264_context->use_avc_hw_scoreboard = 1;
- i965_h264_context->use_hw_w128 = 1;
- } else {
- memcpy(i965_h264_context->avc_kernels, h264_avc_kernels_gen4, sizeof(i965_h264_context->avc_kernels));
- avc_mc_kernel_offset = avc_mc_kernel_offset_gen4;
- intra_kernel_header = &intra_kernel_header_gen4;
- i965_h264_context->use_avc_hw_scoreboard = 0;
- i965_h264_context->use_hw_w128 = 0;
- }
-
- for (i = 0; i < NUM_H264_AVC_KERNELS; i++) {
- struct i965_kernel *kernel = &i965_h264_context->avc_kernels[i];
- kernel->bo = dri_bo_alloc(i965->intel.bufmgr,
- kernel->name,
- kernel->size, 0x1000);
- assert(kernel->bo);
- dri_bo_subdata(kernel->bo, 0, kernel->size, kernel->bin);
- }
-
- for (i = 0; i < 16; i++) {
- i965_h264_context->fsid_list[i].surface_id = VA_INVALID_ID;
- i965_h264_context->fsid_list[i].frame_store_id = -1;
- }
-
- i965_h264_context->batch = media_context->base.batch;
-
- media_context->private_context = i965_h264_context;
- media_context->free_private_context = i965_media_h264_free_private_context;
-
- /* URB */
- if (IS_IRONLAKE(i965->intel.device_info)) {
- media_context->urb.num_vfe_entries = 63;
- } else {
- media_context->urb.num_vfe_entries = 23;
- }
-
- media_context->urb.size_vfe_entry = 16;
-
- media_context->urb.num_cs_entries = 1;
- media_context->urb.size_cs_entry = 1;
-
- media_context->urb.vfe_start = 0;
- media_context->urb.cs_start = media_context->urb.vfe_start +
- media_context->urb.num_vfe_entries * media_context->urb.size_vfe_entry;
- assert(media_context->urb.cs_start +
- media_context->urb.num_cs_entries * media_context->urb.size_cs_entry <= i965->intel.device_info->urb_size);
-
- /* hook functions */
- media_context->media_states_setup = i965_media_h264_states_setup;
- media_context->media_objects = i965_media_h264_objects;
-}
diff --git a/src/i965_media_h264.h b/src/i965_media_h264.h
deleted file mode 100644
index e507e1d..0000000
--- a/src/i965_media_h264.h
+++ /dev/null
@@ -1,74 +0,0 @@
-#ifndef _I965_MEDIA_H264_H_
-#define _I965_MEDIA_H264_H_
-
-#include "i965_avc_bsd.h"
-#include "i965_avc_hw_scoreboard.h"
-#include "i965_avc_ildb.h"
-#include "i965_decoder.h"
-
-struct decode_state;
-struct i965_media_context;
-
-#define INST_UNIT_GEN4 16
-#define INST_UNIT_GEN5 8
-
-#define MB_CMD_IN_BYTES 64
-#define MB_CMD_IN_DWS 16
-#define MB_CMD_IN_OWS 4
-
-enum {
- H264_AVC_COMBINED = 0,
- H264_AVC_NULL
-};
-
-#define NUM_H264_AVC_KERNELS 2
-
-struct i965_h264_context
-{
- struct {
- dri_bo *bo;
- unsigned int mbs;
- } avc_it_command_mb_info;
-
- struct {
- dri_bo *bo;
- long write_offset;
- } avc_it_data;
-
- struct {
- dri_bo *bo;
- } avc_ildb_data;
-
- struct {
- unsigned int width_in_mbs;
- unsigned int height_in_mbs;
- int mbaff_frame_flag;
- int i_flag;
- } picture;
-
- int enable_avc_ildb;
- int use_avc_hw_scoreboard;
-
- int use_hw_w128;
- unsigned int weight128_luma_l0;
- unsigned int weight128_luma_l1;
- unsigned int weight128_chroma_l0;
- unsigned int weight128_chroma_l1;
- char weight128_offset0_flag;
- short weight128_offset0;
-
- struct i965_avc_bsd_context i965_avc_bsd_context;
- struct i965_avc_hw_scoreboard_context avc_hw_scoreboard_context;
- struct i965_avc_ildb_context avc_ildb_context;
-
- GenFrameStoreContext fs_ctx;
- GenFrameStore fsid_list[MAX_GEN_REFERENCE_FRAMES];
-
- struct i965_kernel avc_kernels[NUM_H264_AVC_KERNELS];
- struct intel_batchbuffer *batch;
-};
-
-void i965_media_h264_decode_init(VADriverContextP ctx, struct decode_state *decode_state, struct i965_media_context *media_context);
-void i965_media_h264_dec_context_init(VADriverContextP ctx, struct i965_media_context *media_context);
-
-#endif /* _I965_MEDIA_H264_H_ */
diff --git a/src/i965_media_mpeg2.c b/src/i965_media_mpeg2.c
deleted file mode 100644
index 2980bdc..0000000
--- a/src/i965_media_mpeg2.c
+++ /dev/null
@@ -1,1024 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- * Zou Nan hai <nanhai.zou@intel.com>
- *
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "i965_decoder_utils.h"
-
-#include "i965_media.h"
-#include "i965_media_mpeg2.h"
-
-#define SURFACE_TARGET 0
-#define SURFACE_FORWARD 1
-#define SURFACE_BACKWARD 2
-#define SURFACE_BIDIRECT 3
-
-enum interface {
- FRAME_INTRA = 0,
- FRAME_FRAME_PRED_FORWARD,
- FRAME_FRAME_PRED_BACKWARD,
- FRAME_FRAME_PRED_BIDIRECT,
- FRAME_FIELD_PRED_FORWARD,
- FRAME_FIELD_PRED_BACKWARD,
- FRAME_FIELD_PRED_BIDIRECT,
- LIB_INTERFACE,
- FIELD_INTRA,
- FIELD_FORWARD,
- FIELD_FORWARD_16X8,
- FIELD_BACKWARD,
- FIELD_BACKWARD_16X8,
- FIELD_BIDIRECT,
- FIELD_BIDIRECT_16X8
-};
-
-/* idct table */
-#define C0 23170
-#define C1 22725
-#define C2 21407
-#define C3 19266
-#define C4 16383
-#define C5 12873
-#define C6 8867
-#define C7 4520
-const uint32_t idct_table[] = {
- C4, C1, C2, C3, C4, C5, C6, C7, //g5
- C4, C1, C2, C3, C4, C5, C6, C7,
- C4, C3, C6,-C7,-C4,-C1,-C2,-C5,
- C4, C3, C6,-C7,-C4,-C1,-C2,-C5,
- C4, C5,-C6,-C1,-C4, C7, C2, C3,
- C4, C5,-C6,-C1,-C4, C7, C2, C3,
- C4, C7,-C2,-C5, C4, C3,-C6,-C1,
- C4, C7,-C2,-C5, C4, C3,-C6,-C1,
- C4,-C7,-C2, C5, C4,-C3,-C6, C1,
- C4,-C7,-C2, C5, C4,-C3,-C6, C1,
- C4,-C5,-C6, C1,-C4,-C7, C2,-C3,
- C4,-C5,-C6, C1,-C4,-C7, C2,-C3,
- C4,-C3, C6, C7,-C4, C1,-C2, C5,
- C4,-C3, C6, C7,-C4, C1,-C2, C5,
- C4,-C1, C2,-C3, C4,-C5, C6,-C7,
- C4,-C1, C2,-C3, C4,-C5, C6,-C7 //g20
-};
-#undef C0
-#undef C1
-#undef C2
-#undef C3
-#undef C4
-#undef C5
-#undef C6
-#undef C7
-
-const uint32_t zigzag_direct[64] = {
- 0, 1, 8, 16, 9, 2, 3, 10,
- 17, 24, 32, 25, 18, 11, 4, 5,
- 12, 19, 26, 33, 40, 48, 41, 34,
- 27, 20, 13, 6, 7, 14, 21, 28,
- 35, 42, 49, 56, 57, 50, 43, 36,
- 29, 22, 15, 23, 30, 37, 44, 51,
- 58, 59, 52, 45, 38, 31, 39, 46,
- 53, 60, 61, 54, 47, 55, 62, 63
-};
-
-static const uint32_t frame_intra_kernel[][4] = {
- #include "shaders/mpeg2/vld/frame_intra.g4b"
-};
-static const uint32_t frame_frame_pred_forward_kernel[][4] = {
- #include "shaders/mpeg2/vld/frame_frame_pred_forward.g4b"
-};
-static const uint32_t frame_frame_pred_backward_kernel[][4] = {
- #include "shaders/mpeg2/vld/frame_frame_pred_backward.g4b"
-};
-static const uint32_t frame_frame_pred_bidirect_kernel[][4] = {
- #include "shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b"
-};
-static const uint32_t frame_field_pred_forward_kernel[][4] = {
- #include "shaders/mpeg2/vld/frame_field_pred_forward.g4b"
-};
-static const uint32_t frame_field_pred_backward_kernel[][4] = {
- #include "shaders/mpeg2/vld/frame_field_pred_backward.g4b"
-};
-static const uint32_t frame_field_pred_bidirect_kernel[][4] = {
- #include "shaders/mpeg2/vld/frame_field_pred_bidirect.g4b"
-};
-static const uint32_t lib_kernel[][4] = {
- #include "shaders/mpeg2/vld/lib.g4b"
-};
-/*field picture*/
-static const uint32_t field_intra_kernel[][4] = {
- #include "shaders/mpeg2/vld/field_intra.g4b"
-};
-static const uint32_t field_forward_kernel[][4] = {
- #include "shaders/mpeg2/vld/field_forward.g4b"
-};
-static const uint32_t field_forward_16x8_kernel[][4] = {
- #include "shaders/mpeg2/vld/field_forward_16x8.g4b"
-};
-static const uint32_t field_backward_kernel[][4] = {
- #include "shaders/mpeg2/vld/field_backward.g4b"
-};
-static const uint32_t field_backward_16x8_kernel[][4] = {
- #include "shaders/mpeg2/vld/field_backward_16x8.g4b"
-};
-static const uint32_t field_bidirect_kernel[][4] = {
- #include "shaders/mpeg2/vld/field_bidirect.g4b"
-};
-static const uint32_t field_bidirect_16x8_kernel[][4] = {
- #include "shaders/mpeg2/vld/field_bidirect_16x8.g4b"
-};
-
-static struct i965_kernel mpeg2_vld_kernels_gen4[] = {
- {
- "FRAME_INTRA",
- FRAME_INTRA,
- frame_intra_kernel,
- sizeof(frame_intra_kernel),
- NULL
- },
-
- {
- "FRAME_FRAME_PRED_FORWARD",
- FRAME_FRAME_PRED_FORWARD,
- frame_frame_pred_forward_kernel,
- sizeof(frame_frame_pred_forward_kernel),
- NULL
- },
-
- {
- "FRAME_FRAME_PRED_BACKWARD",
- FRAME_FRAME_PRED_BACKWARD,
- frame_frame_pred_backward_kernel,
- sizeof(frame_frame_pred_backward_kernel),
- NULL
- },
-
- {
- "FRAME_FRAME_PRED_BIDIRECT",
- FRAME_FRAME_PRED_BIDIRECT,
- frame_frame_pred_bidirect_kernel,
- sizeof(frame_frame_pred_bidirect_kernel),
- NULL
- },
-
- {
- "FRAME_FIELD_PRED_FORWARD",
- FRAME_FIELD_PRED_FORWARD,
- frame_field_pred_forward_kernel,
- sizeof(frame_field_pred_forward_kernel),
- NULL
- },
-
- {
- "FRAME_FIELD_PRED_BACKWARD",
- FRAME_FIELD_PRED_BACKWARD,
- frame_field_pred_backward_kernel,
- sizeof(frame_field_pred_backward_kernel),
- NULL
- },
-
- {
- "FRAME_FIELD_PRED_BIDIRECT",
- FRAME_FIELD_PRED_BIDIRECT,
- frame_field_pred_bidirect_kernel,
- sizeof(frame_field_pred_bidirect_kernel),
- NULL
- },
-
- {
- "LIB",
- LIB_INTERFACE,
- lib_kernel,
- sizeof(lib_kernel),
- NULL
- },
-
- {
- "FIELD_INTRA",
- FIELD_INTRA,
- field_intra_kernel,
- sizeof(field_intra_kernel),
- NULL
- },
-
- {
- "FIELD_FORWARD",
- FIELD_FORWARD,
- field_forward_kernel,
- sizeof(field_forward_kernel),
- NULL
- },
-
- {
- "FIELD_FORWARD_16X8",
- FIELD_FORWARD_16X8,
- field_forward_16x8_kernel,
- sizeof(field_forward_16x8_kernel),
- NULL
- },
-
- {
- "FIELD_BACKWARD",
- FIELD_BACKWARD,
- field_backward_kernel,
- sizeof(field_backward_kernel),
- NULL
- },
-
- {
- "FIELD_BACKWARD_16X8",
- FIELD_BACKWARD_16X8,
- field_backward_16x8_kernel,
- sizeof(field_backward_16x8_kernel),
- NULL
- },
-
- {
- "FIELD_BIDIRECT",
- FIELD_BIDIRECT,
- field_bidirect_kernel,
- sizeof(field_bidirect_kernel),
- NULL
- },
-
- {
- "FIELD_BIDIRECT_16X8",
- FIELD_BIDIRECT_16X8,
- field_bidirect_16x8_kernel,
- sizeof(field_bidirect_16x8_kernel),
- NULL
- }
-};
-
-/* On IRONLAKE */
-static const uint32_t frame_intra_kernel_gen5[][4] = {
- #include "shaders/mpeg2/vld/frame_intra.g4b.gen5"
-};
-static const uint32_t frame_frame_pred_forward_kernel_gen5[][4] = {
- #include "shaders/mpeg2/vld/frame_frame_pred_forward.g4b.gen5"
-};
-static const uint32_t frame_frame_pred_backward_kernel_gen5[][4] = {
- #include "shaders/mpeg2/vld/frame_frame_pred_backward.g4b.gen5"
-};
-static const uint32_t frame_frame_pred_bidirect_kernel_gen5[][4] = {
- #include "shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b.gen5"
-};
-static const uint32_t frame_field_pred_forward_kernel_gen5[][4] = {
- #include "shaders/mpeg2/vld/frame_field_pred_forward.g4b.gen5"
-};
-static const uint32_t frame_field_pred_backward_kernel_gen5[][4] = {
- #include "shaders/mpeg2/vld/frame_field_pred_backward.g4b.gen5"
-};
-static const uint32_t frame_field_pred_bidirect_kernel_gen5[][4] = {
- #include "shaders/mpeg2/vld/frame_field_pred_bidirect.g4b.gen5"
-};
-static const uint32_t lib_kernel_gen5[][4] = {
- #include "shaders/mpeg2/vld/lib.g4b.gen5"
-};
-/*field picture*/
-static const uint32_t field_intra_kernel_gen5[][4] = {
- #include "shaders/mpeg2/vld/field_intra.g4b.gen5"
-};
-static const uint32_t field_forward_kernel_gen5[][4] = {
- #include "shaders/mpeg2/vld/field_forward.g4b.gen5"
-};
-static const uint32_t field_forward_16x8_kernel_gen5[][4] = {
- #include "shaders/mpeg2/vld/field_forward_16x8.g4b.gen5"
-};
-static const uint32_t field_backward_kernel_gen5[][4] = {
- #include "shaders/mpeg2/vld/field_backward.g4b.gen5"
-};
-static const uint32_t field_backward_16x8_kernel_gen5[][4] = {
- #include "shaders/mpeg2/vld/field_backward_16x8.g4b.gen5"
-};
-static const uint32_t field_bidirect_kernel_gen5[][4] = {
- #include "shaders/mpeg2/vld/field_bidirect.g4b.gen5"
-};
-static const uint32_t field_bidirect_16x8_kernel_gen5[][4] = {
- #include "shaders/mpeg2/vld/field_bidirect_16x8.g4b.gen5"
-};
-
-static struct i965_kernel mpeg2_vld_kernels_gen5[] = {
- {
- "FRAME_INTRA",
- FRAME_INTRA,
- frame_intra_kernel_gen5,
- sizeof(frame_intra_kernel_gen5),
- NULL
- },
-
- {
- "FRAME_FRAME_PRED_FORWARD",
- FRAME_FRAME_PRED_FORWARD,
- frame_frame_pred_forward_kernel_gen5,
- sizeof(frame_frame_pred_forward_kernel_gen5),
- NULL
- },
-
- {
- "FRAME_FRAME_PRED_BACKWARD",
- FRAME_FRAME_PRED_BACKWARD,
- frame_frame_pred_backward_kernel_gen5,
- sizeof(frame_frame_pred_backward_kernel_gen5),
- NULL
- },
-
- {
- "FRAME_FRAME_PRED_BIDIRECT",
- FRAME_FRAME_PRED_BIDIRECT,
- frame_frame_pred_bidirect_kernel_gen5,
- sizeof(frame_frame_pred_bidirect_kernel_gen5),
- NULL
- },
-
- {
- "FRAME_FIELD_PRED_FORWARD",
- FRAME_FIELD_PRED_FORWARD,
- frame_field_pred_forward_kernel_gen5,
- sizeof(frame_field_pred_forward_kernel_gen5),
- NULL
- },
-
- {
- "FRAME_FIELD_PRED_BACKWARD",
- FRAME_FIELD_PRED_BACKWARD,
- frame_field_pred_backward_kernel_gen5,
- sizeof(frame_field_pred_backward_kernel_gen5),
- NULL
- },
-
- {
- "FRAME_FIELD_PRED_BIDIRECT",
- FRAME_FIELD_PRED_BIDIRECT,
- frame_field_pred_bidirect_kernel_gen5,
- sizeof(frame_field_pred_bidirect_kernel_gen5),
- NULL
- },
-
- {
- "LIB",
- LIB_INTERFACE,
- lib_kernel_gen5,
- sizeof(lib_kernel_gen5),
- NULL
- },
-
- {
- "FIELD_INTRA",
- FIELD_INTRA,
- field_intra_kernel_gen5,
- sizeof(field_intra_kernel_gen5),
- NULL
- },
-
- {
- "FIELD_FORWARD",
- FIELD_FORWARD,
- field_forward_kernel_gen5,
- sizeof(field_forward_kernel_gen5),
- NULL
- },
-
- {
- "FIELD_FORWARD_16X8",
- FIELD_FORWARD_16X8,
- field_forward_16x8_kernel_gen5,
- sizeof(field_forward_16x8_kernel_gen5),
- NULL
- },
-
- {
- "FIELD_BACKWARD",
- FIELD_BACKWARD,
- field_backward_kernel_gen5,
- sizeof(field_backward_kernel_gen5),
- NULL
- },
-
- {
- "FIELD_BACKWARD_16X8",
- FIELD_BACKWARD_16X8,
- field_backward_16x8_kernel_gen5,
- sizeof(field_backward_16x8_kernel_gen5),
- NULL
- },
-
- {
- "FIELD_BIDIRECT",
- FIELD_BIDIRECT,
- field_bidirect_kernel_gen5,
- sizeof(field_bidirect_kernel_gen5),
- NULL
- },
-
- {
- "FIELD_BIDIRECT_16X8",
- FIELD_BIDIRECT_16X8,
- field_bidirect_16x8_kernel_gen5,
- sizeof(field_bidirect_16x8_kernel_gen5),
- NULL
- }
-};
-
-static void
-i965_media_mpeg2_surface_state(VADriverContextP ctx,
- int index,
- struct object_surface *obj_surface,
- unsigned long offset,
- int w, int h,
- Bool is_dst,
- int vert_line_stride,
- int vert_line_stride_ofs,
- struct i965_media_context *media_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_surface_state *ss;
- dri_bo *bo;
- uint32_t write_domain, read_domain;
-
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "surface state",
- sizeof(struct i965_surface_state), 32);
- assert(bo);
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- ss = bo->virtual;
- memset(ss, 0, sizeof(*ss));
- ss->ss0.surface_type = I965_SURFACE_2D;
- ss->ss0.surface_format = I965_SURFACEFORMAT_R8_SINT;
- ss->ss0.vert_line_stride = vert_line_stride;
- ss->ss0.vert_line_stride_ofs = vert_line_stride_ofs;
- ss->ss1.base_addr = obj_surface->bo->offset + offset;
- ss->ss2.width = w - 1;
- ss->ss2.height = h - 1;
- ss->ss3.pitch = w - 1;
-
- if (is_dst) {
- write_domain = I915_GEM_DOMAIN_RENDER;
- read_domain = I915_GEM_DOMAIN_RENDER;
- } else {
- write_domain = 0;
- read_domain = I915_GEM_DOMAIN_SAMPLER;
- }
-
- dri_bo_emit_reloc(bo,
- read_domain, write_domain,
- offset,
- offsetof(struct i965_surface_state, ss1),
- obj_surface->bo);
- dri_bo_unmap(bo);
-
- assert(index < MAX_MEDIA_SURFACES);
-// assert(media_context->surface_state[index].bo == NULL);
- media_context->surface_state[index].bo = bo;
-}
-
-static void
-i965_media_mpeg2_surface_setup(VADriverContextP ctx,
- int base_index,
- struct object_surface *obj_surface,
- Bool is_dst,
- int picture_structure,
- int surface,
- struct i965_media_context *media_context)
-{
- int w = obj_surface->width;
- int h = obj_surface->height;
-
- i965_check_alloc_surface_bo(ctx, obj_surface, 0, VA_FOURCC_I420, SUBSAMPLE_YUV420);
-
- if (picture_structure == MPEG_FRAME) {
- i965_media_mpeg2_surface_state(ctx, base_index + 0, obj_surface,
- 0, w, h,
- is_dst, 0, 0,
- media_context);
- i965_media_mpeg2_surface_state(ctx, base_index + 1, obj_surface,
- w * h, w / 2, h / 2,
- is_dst, 0, 0,
- media_context);
- i965_media_mpeg2_surface_state(ctx, base_index + 2, obj_surface,
- w * h + w * h / 4, w / 2, h / 2,
- is_dst, 0, 0,
- media_context);
- } else {
- if (surface == SURFACE_TARGET) {
- i965_media_mpeg2_surface_state(ctx, 3, obj_surface,
- 0, w, h,
- False, 0, 0,
- media_context);
- i965_media_mpeg2_surface_state(ctx, 10, obj_surface,
- w * h, w / 2, h / 2,
- False, 0, 0,
- media_context);
- i965_media_mpeg2_surface_state(ctx, 11, obj_surface,
- w * h + w * h / 4, w / 2, h / 2,
- False, 0, 0,
- media_context);
- if (picture_structure == MPEG_TOP_FIELD) {
- i965_media_mpeg2_surface_state(ctx, base_index + 0, obj_surface,
- 0, w, h,
- True, 1, 0,
- media_context);
- i965_media_mpeg2_surface_state(ctx, base_index + 1, obj_surface,
- w * h, w / 2, h / 2,
- True, 1, 0,
- media_context);
- i965_media_mpeg2_surface_state(ctx, base_index + 2, obj_surface,
- w * h + w * h / 4, w / 2, h / 2,
- True, 1, 0,
- media_context);
- } else {
- assert(picture_structure == MPEG_BOTTOM_FIELD);
- i965_media_mpeg2_surface_state(ctx, base_index + 0, obj_surface,
- 0, w, h,
- True, 1, 1,
- media_context);
- i965_media_mpeg2_surface_state(ctx, base_index + 1, obj_surface,
- w * h, w / 2, h / 2,
- True, 1, 1,
- media_context);
- i965_media_mpeg2_surface_state(ctx, base_index + 2, obj_surface,
- w * h + w * h / 4, w / 2, h / 2,
- True, 1, 1,
- media_context);
- }
- } else {
- i965_media_mpeg2_surface_state(ctx, base_index + 0, obj_surface,
- 0, w, h,
- is_dst, 0, 0,
- media_context);
- i965_media_mpeg2_surface_state(ctx, base_index + 1, obj_surface,
- w * h, w / 2, h / 2,
- is_dst, 0, 0,
- media_context);
- i965_media_mpeg2_surface_state(ctx, base_index + 2, obj_surface,
- w * h + w * h / 4, w / 2, h / 2,
- is_dst, 0, 0,
- media_context);
- }
- }
-}
-
-void
-i965_media_mpeg2_surfaces_setup(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct i965_media_context *media_context)
-{
- struct object_surface *obj_surface;
- VAPictureParameterBufferMPEG2 *param;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
-
- obj_surface = decode_state->render_object;
-
- i965_media_mpeg2_surface_setup(ctx, 0, obj_surface, True,
- param->picture_coding_extension.bits.picture_structure,
- SURFACE_TARGET,
- media_context);
-
- obj_surface = decode_state->reference_objects[0];
-
- if (!obj_surface) {
-// assert(param->picture_coding_type == 1); /* I-picture */
- } else {
- i965_media_mpeg2_surface_setup(ctx, 4, obj_surface, False,
- param->picture_coding_extension.bits.picture_structure,
- SURFACE_FORWARD,
- media_context);
-
- obj_surface = decode_state->reference_objects[1];
-
- if (!obj_surface) {
- assert(param->picture_coding_type == 2); /* P-picture */
-
- obj_surface = decode_state->reference_objects[0];
- i965_media_mpeg2_surface_setup(ctx, 7, obj_surface, False,
- param->picture_coding_extension.bits.picture_structure,
- SURFACE_BACKWARD,
- media_context);
- } else {
- assert(param->picture_coding_type == 3); /* B-picture */
- i965_media_mpeg2_surface_setup(ctx, 7, obj_surface, False,
- param->picture_coding_extension.bits.picture_structure,
- SURFACE_BIDIRECT,
- media_context);
- }
- }
-}
-
-static void
-i965_media_mpeg2_binding_table(VADriverContextP ctx, struct i965_media_context *media_context)
-{
- int i;
- unsigned int *binding_table;
- dri_bo *bo = media_context->binding_table.bo;
-
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- binding_table = bo->virtual;
- memset(binding_table, 0, bo->size);
-
- for (i = 0; i < MAX_MEDIA_SURFACES; i++) {
- if (media_context->surface_state[i].bo) {
- binding_table[i] = media_context->surface_state[i].bo->offset;
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0,
- i * sizeof(*binding_table),
- media_context->surface_state[i].bo);
- }
- }
-
- dri_bo_unmap(media_context->binding_table.bo);
-}
-
-static void
-i965_media_mpeg2_vfe_state(VADriverContextP ctx, struct i965_media_context *media_context)
-{
- struct i965_vfe_state *vfe_state;
- dri_bo *bo;
-
- bo = media_context->vfe_state.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- vfe_state = bo->virtual;
- memset(vfe_state, 0, sizeof(*vfe_state));
- vfe_state->vfe0.extend_vfe_state_present = 1;
- vfe_state->vfe1.vfe_mode = VFE_VLD_MODE;
- vfe_state->vfe1.num_urb_entries = media_context->urb.num_vfe_entries;
- vfe_state->vfe1.children_present = 0;
- vfe_state->vfe1.urb_entry_alloc_size = media_context->urb.size_vfe_entry - 1;
- vfe_state->vfe1.max_threads = media_context->urb.num_vfe_entries - 1;
- vfe_state->vfe2.interface_descriptor_base =
- media_context->idrt.bo->offset >> 4; /* reloc */
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0,
- offsetof(struct i965_vfe_state, vfe2),
- media_context->idrt.bo);
- dri_bo_unmap(bo);
-}
-
-static void
-i965_media_mpeg2_interface_descriptor_remap_table(VADriverContextP ctx, struct i965_media_context *media_context)
-{
- struct i965_mpeg2_context *i965_mpeg2_context = (struct i965_mpeg2_context *)media_context->private_context;
- struct i965_interface_descriptor *desc;
- int i;
- dri_bo *bo;
-
- bo = media_context->idrt.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- desc = bo->virtual;
-
- for (i = 0; i < NUM_MPEG2_VLD_KERNELS; i++) {
- memset(desc, 0, sizeof(*desc));
- desc->desc0.grf_reg_blocks = 15;
- desc->desc0.kernel_start_pointer = i965_mpeg2_context->vld_kernels[i].bo->offset >> 6; /* reloc */
- desc->desc1.const_urb_entry_read_offset = 0;
- desc->desc1.const_urb_entry_read_len = 30;
- desc->desc3.binding_table_entry_count = 0;
- desc->desc3.binding_table_pointer =
- media_context->binding_table.bo->offset >> 5; /*reloc */
-
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- desc->desc0.grf_reg_blocks,
- i * sizeof(*desc) + offsetof(struct i965_interface_descriptor, desc0),
- i965_mpeg2_context->vld_kernels[i].bo);
-
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- desc->desc3.binding_table_entry_count,
- i * sizeof(*desc) + offsetof(struct i965_interface_descriptor, desc3),
- media_context->binding_table.bo);
- desc++;
- }
-
- dri_bo_unmap(bo);
-}
-
-void
-i965_media_mpeg2_vld_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct i965_media_context *media_context)
-{
- struct i965_vld_state *vld_state;
- VAPictureParameterBufferMPEG2 *param;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
-
- assert(media_context->extended_state.bo);
- dri_bo_map(media_context->extended_state.bo, 1);
- assert(media_context->extended_state.bo->virtual);
- vld_state = media_context->extended_state.bo->virtual;
- memset(vld_state, 0, sizeof(*vld_state));
-
- vld_state->vld0.f_code_0_0 = ((param->f_code >> 12) & 0xf);
- vld_state->vld0.f_code_0_1 = ((param->f_code >> 8) & 0xf);
- vld_state->vld0.f_code_1_0 = ((param->f_code >> 4) & 0xf);
- vld_state->vld0.f_code_1_1 = (param->f_code & 0xf);
- vld_state->vld0.intra_dc_precision = param->picture_coding_extension.bits.intra_dc_precision;
- vld_state->vld0.picture_structure = param->picture_coding_extension.bits.picture_structure;
- vld_state->vld0.top_field_first = param->picture_coding_extension.bits.top_field_first;
- vld_state->vld0.frame_predict_frame_dct = param->picture_coding_extension.bits.frame_pred_frame_dct;
- vld_state->vld0.concealment_motion_vector = param->picture_coding_extension.bits.concealment_motion_vectors;
- vld_state->vld0.quantizer_scale_type = param->picture_coding_extension.bits.q_scale_type;
- vld_state->vld0.intra_vlc_format = param->picture_coding_extension.bits.intra_vlc_format;
- vld_state->vld0.scan_order = param->picture_coding_extension.bits.alternate_scan;
-
- vld_state->vld1.picture_coding_type = param->picture_coding_type;
-
- if (vld_state->vld0.picture_structure == MPEG_FRAME) {
- /*frame picture*/
- vld_state->desc_remap_table0.index_0 = FRAME_INTRA;
- vld_state->desc_remap_table0.index_1 = FRAME_FRAME_PRED_FORWARD;
- vld_state->desc_remap_table0.index_2 = FRAME_FIELD_PRED_FORWARD;
- vld_state->desc_remap_table0.index_3 = FRAME_FIELD_PRED_BIDIRECT; /* dual prime */
- vld_state->desc_remap_table0.index_4 = FRAME_FRAME_PRED_BACKWARD;
- vld_state->desc_remap_table0.index_5 = FRAME_FIELD_PRED_BACKWARD;
- vld_state->desc_remap_table0.index_6 = FRAME_FRAME_PRED_BIDIRECT;
- vld_state->desc_remap_table0.index_7 = FRAME_FIELD_PRED_BIDIRECT;
-
- vld_state->desc_remap_table1.index_8 = FRAME_INTRA;
- vld_state->desc_remap_table1.index_9 = FRAME_FRAME_PRED_FORWARD;
- vld_state->desc_remap_table1.index_10 = FRAME_FIELD_PRED_FORWARD;
- vld_state->desc_remap_table1.index_11 = FRAME_FIELD_PRED_BIDIRECT;
- vld_state->desc_remap_table1.index_12 = FRAME_FRAME_PRED_BACKWARD;
- vld_state->desc_remap_table1.index_13 = FRAME_FIELD_PRED_BACKWARD;
- vld_state->desc_remap_table1.index_14 = FRAME_FRAME_PRED_BIDIRECT;
- vld_state->desc_remap_table1.index_15 = FRAME_FIELD_PRED_BIDIRECT;
- } else {
- /*field picture*/
- vld_state->desc_remap_table0.index_0 = FIELD_INTRA;
- vld_state->desc_remap_table0.index_1 = FIELD_FORWARD;
- vld_state->desc_remap_table0.index_2 = FIELD_FORWARD_16X8;
- vld_state->desc_remap_table0.index_3 = FIELD_BIDIRECT; /* dual prime */
- vld_state->desc_remap_table0.index_4 = FIELD_BACKWARD;
- vld_state->desc_remap_table0.index_5 = FIELD_BACKWARD_16X8;
- vld_state->desc_remap_table0.index_6 = FIELD_BIDIRECT;
- vld_state->desc_remap_table0.index_7 = FIELD_BIDIRECT_16X8;
- }
-
- dri_bo_unmap(media_context->extended_state.bo);
-}
-
-static void
-i965_media_mpeg2_upload_constants(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct i965_media_context *media_context)
-{
- struct i965_mpeg2_context *i965_mpeg2_context = (struct i965_mpeg2_context *)media_context->private_context;
- VAIQMatrixBufferMPEG2 * const gen_iq_matrix = &i965_mpeg2_context->iq_matrix;
- int i;
- unsigned char *constant_buffer;
- unsigned int *lib_reloc;
- int lib_reloc_offset = 0;
-
- dri_bo_map(media_context->curbe.bo, 1);
- assert(media_context->curbe.bo->virtual);
- constant_buffer = media_context->curbe.bo->virtual;
-
- /* iq_matrix */
- if (decode_state->iq_matrix && decode_state->iq_matrix->buffer) {
- VAIQMatrixBufferMPEG2 * const iq_matrix =
- (VAIQMatrixBufferMPEG2 *)decode_state->iq_matrix->buffer;
-
- gen_iq_matrix->load_intra_quantiser_matrix =
- iq_matrix->load_intra_quantiser_matrix;
- if (iq_matrix->load_intra_quantiser_matrix) {
- for (i = 0; i < 64; i++)
- gen_iq_matrix->intra_quantiser_matrix[zigzag_direct[i]] =
- iq_matrix->intra_quantiser_matrix[i];
- }
-
- gen_iq_matrix->load_non_intra_quantiser_matrix =
- iq_matrix->load_non_intra_quantiser_matrix;
- if (iq_matrix->load_non_intra_quantiser_matrix) {
- for (i = 0; i < 64; i++)
- gen_iq_matrix->non_intra_quantiser_matrix[zigzag_direct[i]] =
- iq_matrix->non_intra_quantiser_matrix[i];
- }
-
- /* no chroma quantisation matrices for 4:2:0 data */
- }
-
- if (gen_iq_matrix->load_intra_quantiser_matrix) {
- unsigned char * const qm = constant_buffer;
- memcpy(qm, gen_iq_matrix->intra_quantiser_matrix, 64);
- }
-
- if (gen_iq_matrix->load_non_intra_quantiser_matrix) {
- unsigned char * const qm = constant_buffer + 64;
- memcpy(qm, gen_iq_matrix->non_intra_quantiser_matrix, 64);
- }
-
- /* idct table */
- memcpy(constant_buffer + 128, idct_table, sizeof(idct_table));
-
- /* idct lib reloc */
- lib_reloc_offset = 128 + sizeof(idct_table);
- lib_reloc = (unsigned int *)(constant_buffer + lib_reloc_offset);
- for (i = 0; i < 8; i++) {
- lib_reloc[i] = i965_mpeg2_context->vld_kernels[LIB_INTERFACE].bo->offset;
- dri_bo_emit_reloc(media_context->curbe.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0,
- lib_reloc_offset + i * sizeof(unsigned int),
- i965_mpeg2_context->vld_kernels[LIB_INTERFACE].bo);
- }
-
- dri_bo_unmap(media_context->curbe.bo);
-}
-
-static void
-i965_media_mpeg2_states_setup(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct i965_media_context *media_context)
-{
- i965_media_mpeg2_surfaces_setup(ctx, decode_state, media_context);
- i965_media_mpeg2_binding_table(ctx, media_context);
- i965_media_mpeg2_interface_descriptor_remap_table(ctx, media_context);
- i965_media_mpeg2_vld_state(ctx, decode_state, media_context);
- i965_media_mpeg2_vfe_state(ctx, media_context);
- i965_media_mpeg2_upload_constants(ctx, decode_state, media_context);
-}
-
-static void
-i965_media_mpeg2_objects(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct i965_media_context *media_context)
-{
- struct i965_mpeg2_context * const i965_mpeg2_context = media_context->private_context;
- struct intel_batchbuffer *batch = media_context->base.batch;
- VASliceParameterBufferMPEG2 *slice_param;
- VAPictureParameterBufferMPEG2 *pic_param;
- int i, j;
-
- assert(decode_state->pic_param && decode_state->pic_param->buffer);
- pic_param = (VAPictureParameterBufferMPEG2 *)decode_state->pic_param->buffer;
-
- if (i965_mpeg2_context->wa_slice_vertical_position < 0)
- i965_mpeg2_context->wa_slice_vertical_position =
- mpeg2_wa_slice_vertical_position(decode_state, pic_param);
-
- for (j = 0; j < decode_state->num_slice_params; j++) {
- assert(decode_state->slice_params[j] && decode_state->slice_params[j]->buffer);
- assert(decode_state->slice_datas[j] && decode_state->slice_datas[j]->bo);
- slice_param = (VASliceParameterBufferMPEG2 *)decode_state->slice_params[j]->buffer;
-
- for (i = 0; i < decode_state->slice_params[j]->num_elements; i++) {
- int vpos, hpos, is_field_pic = 0;
-
- if (i965_mpeg2_context->wa_slice_vertical_position > 0 &&
- (pic_param->picture_coding_extension.bits.picture_structure == MPEG_TOP_FIELD ||
- pic_param->picture_coding_extension.bits.picture_structure == MPEG_BOTTOM_FIELD))
- is_field_pic = 1;
-
- assert(slice_param->slice_data_flag == VA_SLICE_DATA_FLAG_ALL);
- vpos = slice_param->slice_vertical_position / (1 + is_field_pic);
- hpos = slice_param->slice_horizontal_position;
-
- BEGIN_BATCH(batch, 6);
- OUT_BATCH(batch, CMD_MEDIA_OBJECT | 4);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, slice_param->slice_data_size - (slice_param->macroblock_offset >> 3));
- OUT_RELOC(batch, decode_state->slice_datas[j]->bo,
- I915_GEM_DOMAIN_SAMPLER, 0,
- slice_param->slice_data_offset + (slice_param->macroblock_offset >> 3));
- OUT_BATCH(batch,
- ((hpos << 24) |
- (vpos << 16) |
- (127 << 8) |
- (slice_param->macroblock_offset & 0x7)));
- OUT_BATCH(batch, slice_param->quantiser_scale_code << 24);
- ADVANCE_BATCH(batch);
- slice_param++;
- }
- }
-}
-
-static void
-i965_media_mpeg2_free_private_context(void **data)
-{
- struct i965_mpeg2_context *i965_mpeg2_context = *data;
- int i;
-
- if (i965_mpeg2_context == NULL)
- return;
-
- for (i = 0; i < NUM_MPEG2_VLD_KERNELS; i++) {
- struct i965_kernel *kernel = &i965_mpeg2_context->vld_kernels[i];
-
- dri_bo_unreference(kernel->bo);
- kernel->bo = NULL;
- }
-
- free(i965_mpeg2_context);
- *data = NULL;
-}
-
-void
-i965_media_mpeg2_decode_init(VADriverContextP ctx,
- struct decode_state *decode_state,
- struct i965_media_context *media_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- dri_bo *bo;
-
- dri_bo_unreference(media_context->indirect_object.bo);
- media_context->indirect_object.bo = NULL;
-
- media_context->extended_state.enabled = 1;
- dri_bo_unreference(media_context->extended_state.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "vld state",
- sizeof(struct i965_vld_state), 32);
- assert(bo);
- media_context->extended_state.bo = bo;
-}
-
-void
-i965_media_mpeg2_dec_context_init(VADriverContextP ctx, struct i965_media_context *media_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_mpeg2_context *i965_mpeg2_context;
- int i;
-
- i965_mpeg2_context = calloc(1, sizeof(struct i965_mpeg2_context));
- assert(i965_mpeg2_context);
- i965_mpeg2_context->wa_slice_vertical_position = -1;
-
- /* kernel */
- assert(NUM_MPEG2_VLD_KERNELS == (sizeof(mpeg2_vld_kernels_gen4) /
- sizeof(mpeg2_vld_kernels_gen4[0])));
- assert(NUM_MPEG2_VLD_KERNELS == (sizeof(mpeg2_vld_kernels_gen5) /
- sizeof(mpeg2_vld_kernels_gen5[0])));
- assert(NUM_MPEG2_VLD_KERNELS <= MAX_INTERFACE_DESC);
-
- if (IS_IRONLAKE(i965->intel.device_info))
- memcpy(i965_mpeg2_context->vld_kernels, mpeg2_vld_kernels_gen5, sizeof(i965_mpeg2_context->vld_kernels));
- else
- memcpy(i965_mpeg2_context->vld_kernels, mpeg2_vld_kernels_gen4, sizeof(i965_mpeg2_context->vld_kernels));
-
- for (i = 0; i < NUM_MPEG2_VLD_KERNELS; i++) {
- struct i965_kernel *kernel = &i965_mpeg2_context->vld_kernels[i];
- kernel->bo = dri_bo_alloc(i965->intel.bufmgr,
- kernel->name,
- kernel->size, 64);
- assert(kernel->bo);
- dri_bo_subdata(kernel->bo, 0, kernel->size, kernel->bin);
- }
-
- /* URB */
- media_context->urb.num_vfe_entries = 28;
- media_context->urb.size_vfe_entry = 13;
-
- media_context->urb.num_cs_entries = 1;
- media_context->urb.size_cs_entry = 16;
-
- media_context->urb.vfe_start = 0;
- media_context->urb.cs_start = media_context->urb.vfe_start +
- media_context->urb.num_vfe_entries * media_context->urb.size_vfe_entry;
- assert(media_context->urb.cs_start +
- media_context->urb.num_cs_entries * media_context->urb.size_cs_entry <= i965->intel.device_info->urb_size);
-
- /* hook functions */
- media_context->media_states_setup = i965_media_mpeg2_states_setup;
- media_context->media_objects = i965_media_mpeg2_objects;
- media_context->private_context = i965_mpeg2_context;
- media_context->free_private_context = i965_media_mpeg2_free_private_context;
-}
diff --git a/src/i965_media_mpeg2.h b/src/i965_media_mpeg2.h
deleted file mode 100644
index 5b8867e..0000000
--- a/src/i965_media_mpeg2.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- * Zou Nan hai <nanhai.zou@intel.com>
- *
- */
-
-#ifndef _I965_MEDIA_MPEG2_H_
-#define _I965_MEDIA_MPEG2_H_
-
-#include <xf86drm.h>
-#include <drm.h>
-#include <i915_drm.h>
-#include <intel_bufmgr.h>
-
-struct decode_state;
-struct i965_media_context;
-
-#define NUM_MPEG2_VLD_KERNELS 15
-
-struct i965_mpeg2_context
-{
- struct i965_kernel vld_kernels[NUM_MPEG2_VLD_KERNELS];
- VAIQMatrixBufferMPEG2 iq_matrix;
- int wa_slice_vertical_position;
-};
-
-void i965_media_mpeg2_decode_init(VADriverContextP ctx, struct decode_state * decode_state, struct i965_media_context *media_context);
-void i965_media_mpeg2_dec_context_init(VADriverContextP ctx, struct i965_media_context *media_context);
-
-#endif /* _I965_MEDIA_MPEG2_H_ */
diff --git a/src/i965_mutext.h b/src/i965_mutext.h
deleted file mode 100644
index 57d4372..0000000
--- a/src/i965_mutext.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#ifndef _I965_MUTEX_H_
-#define _I965_MUTEX_H_
-
-#include "intel_compiler.h"
-
-#if defined PTHREADS
-#include <pthread.h>
-
-typedef pthread_mutex_t _I965Mutex;
-
-static INLINE void _i965InitMutex(_I965Mutex *m)
-{
- pthread_mutex_init(m, NULL);
-}
-
-static INLINE void
-_i965DestroyMutex(_I965Mutex *m)
-{
- pthread_mutex_destroy(m);
-}
-
-static INLINE void
-_i965LockMutex(_I965Mutex *m)
-{
- pthread_mutex_lock(m);
-}
-
-static INLINE void
-_i965UnlockMutex(_I965Mutex *m)
-{
- pthread_mutex_unlock(m);
-}
-
-#define _I965_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
-#define _I965_DECLARE_MUTEX(m) \
- _I965Mutex m = _I965_MUTEX_INITIALIZER
-
-#else
-
-typedef int _I965Mutex;
-static INLINE void _i965InitMutex(_I965Mutex *m) { (void) m; }
-static INLINE void _i965DestroyMutex(_I965Mutex *m) { (void) m; }
-static INLINE void _i965LockMutex(_I965Mutex *m) { (void) m; }
-static INLINE void _i965UnlockMutex(_I965Mutex *m) { (void) m; }
-
-#define _I965_MUTEX_INITIALIZER 0
-#define _I965_DECLARE_MUTEX(m) \
- _I965Mutex m = _I965_MUTEX_INITIALIZER
-
-#endif
-
-#endif /* _I965_MUTEX_H_ */
diff --git a/src/i965_output_dri.c b/src/i965_output_dri.c
deleted file mode 100644
index ae3bcf6..0000000
--- a/src/i965_output_dri.c
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Copyright (C) 2012 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "sysdeps.h"
-
-#include <va/va_dricommon.h>
-
-#include "i965_drv_video.h"
-#include "i965_output_dri.h"
-#include "dso_utils.h"
-
-#define LIBVA_X11_NAME "libva-x11.so.1"
-
-typedef struct dri_drawable *(*dri_get_drawable_func)(
- VADriverContextP ctx, XID drawable);
-typedef union dri_buffer *(*dri_get_rendering_buffer_func)(
- VADriverContextP ctx, struct dri_drawable *d);
-typedef void (*dri_swap_buffer_func)(
- VADriverContextP ctx, struct dri_drawable *d);
-
-struct dri_vtable {
- dri_get_drawable_func get_drawable;
- dri_get_rendering_buffer_func get_rendering_buffer;
- dri_swap_buffer_func swap_buffer;
-};
-
-struct va_dri_output {
- struct dso_handle *handle;
- struct dri_vtable vtable;
-};
-
-bool
-i965_output_dri_init(VADriverContextP ctx)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- struct dso_handle *dso_handle;
- struct dri_vtable *dri_vtable;
-
- static const struct dso_symbol symbols[] = {
- { "dri_get_drawable",
- offsetof(struct dri_vtable, get_drawable) },
- { "dri_get_rendering_buffer",
- offsetof(struct dri_vtable, get_rendering_buffer) },
- { "dri_swap_buffer",
- offsetof(struct dri_vtable, swap_buffer) },
- { NULL, }
- };
-
- i965->dri_output = calloc(1, sizeof(struct va_dri_output));
- if (!i965->dri_output)
- goto error;
-
- i965->dri_output->handle = dso_open(LIBVA_X11_NAME);
- if (!i965->dri_output->handle)
- goto error;
-
- dso_handle = i965->dri_output->handle;
- dri_vtable = &i965->dri_output->vtable;
- if (!dso_get_symbols(dso_handle, dri_vtable, sizeof(*dri_vtable), symbols))
- goto error;
- return true;
-
-error:
- i965_output_dri_terminate(ctx);
- return false;
-}
-
-void
-i965_output_dri_terminate(VADriverContextP ctx)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- struct va_dri_output * const dri_output = i965->dri_output;
-
- if (!dri_output)
- return;
-
- if (dri_output->handle) {
- dso_close(dri_output->handle);
- dri_output->handle = NULL;
- }
-
- free(dri_output);
- i965->dri_output = NULL;
-}
-
-VAStatus
-i965_put_surface_dri(
- VADriverContextP ctx,
- VASurfaceID surface,
- void *draw,
- const VARectangle *src_rect,
- const VARectangle *dst_rect,
- const VARectangle *cliprects,
- unsigned int num_cliprects,
- unsigned int flags
-)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- struct dri_vtable * const dri_vtable = &i965->dri_output->vtable;
- struct i965_render_state * const render_state = &i965->render_state;
- struct dri_drawable *dri_drawable;
- union dri_buffer *buffer;
- struct intel_region *dest_region;
- struct object_surface *obj_surface;
- uint32_t name;
- int i, ret;
-
- /* Currently don't support DRI1 */
- if (!VA_CHECK_DRM_AUTH_TYPE(ctx, VA_DRM_AUTH_DRI2))
- return VA_STATUS_ERROR_UNKNOWN;
-
- /* Some broken sources such as H.264 conformance case FM2_SVA_C
- * will get here
- */
- obj_surface = SURFACE(surface);
- ASSERT_RET(obj_surface && obj_surface->bo, VA_STATUS_SUCCESS);
- ASSERT_RET(obj_surface->fourcc != VA_FOURCC_YUY2 &&
- obj_surface->fourcc != VA_FOURCC_UYVY,
- VA_STATUS_ERROR_UNIMPLEMENTED);
-
- _i965LockMutex(&i965->render_mutex);
-
- dri_drawable = dri_vtable->get_drawable(ctx, (Drawable)draw);
- assert(dri_drawable);
-
- buffer = dri_vtable->get_rendering_buffer(ctx, dri_drawable);
- assert(buffer);
-
- dest_region = render_state->draw_region;
- if (dest_region == NULL) {
- dest_region = (struct intel_region *)calloc(1, sizeof(*dest_region));
- assert(dest_region);
- render_state->draw_region = dest_region;
- }
-
- if (dest_region->bo) {
- dri_bo_flink(dest_region->bo, &name);
- if (buffer->dri2.name != name) {
- dri_bo_unreference(dest_region->bo);
- dest_region->bo = NULL;
- }
- }
-
- if (dest_region->bo == NULL) {
- dest_region->cpp = buffer->dri2.cpp;
- dest_region->pitch = buffer->dri2.pitch;
-
- dest_region->bo = intel_bo_gem_create_from_name(i965->intel.bufmgr, "rendering buffer", buffer->dri2.name);
- assert(dest_region->bo);
-
- ret = dri_bo_get_tiling(dest_region->bo, &(dest_region->tiling), &(dest_region->swizzle));
- assert(ret == 0);
- }
-
- dest_region->x = dri_drawable->x;
- dest_region->y = dri_drawable->y;
- dest_region->width = dri_drawable->width;
- dest_region->height = dri_drawable->height;
-
- if (!(flags & VA_SRC_COLOR_MASK))
- flags |= VA_SRC_BT601;
-
- intel_render_put_surface(ctx, obj_surface, src_rect, dst_rect, flags);
-
- for (i = 0; i < I965_MAX_SUBPIC_SUM; i++) {
- if (obj_surface->obj_subpic[i] != NULL) {
- assert(obj_surface->subpic[i] != VA_INVALID_ID);
- obj_surface->subpic_render_idx = i;
- intel_render_put_subpicture(ctx, obj_surface, src_rect, dst_rect);
- }
- }
-
- if (!(g_intel_debug_option_flags & VA_INTEL_DEBUG_OPTION_BENCH))
- dri_vtable->swap_buffer(ctx, dri_drawable);
-
- _i965UnlockMutex(&i965->render_mutex);
-
- return VA_STATUS_SUCCESS;
-}
diff --git a/src/i965_output_dri.h b/src/i965_output_dri.h
deleted file mode 100644
index cf37b14..0000000
--- a/src/i965_output_dri.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2012 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef I965_OUTPUT_DRI_H
-#define I965_OUTPUT_DRI_H
-
-#include <stdbool.h>
-#include <va/va_backend.h>
-
-bool
-i965_output_dri_init(VADriverContextP ctx);
-
-void
-i965_output_dri_terminate(VADriverContextP ctx);
-
-VAStatus
-i965_put_surface_dri(
- VADriverContextP ctx,
- VASurfaceID surface,
- void *draw,
- const VARectangle *src_rect,
- const VARectangle *dst_rect,
- const VARectangle *cliprects,
- unsigned int num_cliprects,
- unsigned int flags
-);
-
-#endif /* I965_OUTPUT_DRI_H */
diff --git a/src/i965_output_wayland.c b/src/i965_output_wayland.c
deleted file mode 100644
index 99aa2f6..0000000
--- a/src/i965_output_wayland.c
+++ /dev/null
@@ -1,440 +0,0 @@
-/*
- * Copyright (C) 2012 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <assert.h>
-#include <va/va_backend.h>
-#include <va/va_backend_wayland.h>
-#include <wayland-client.h>
-#include <wayland-drm-client-protocol.h>
-#include "intel_driver.h"
-#include "i965_output_wayland.h"
-#include "i965_drv_video.h"
-#include "i965_defines.h"
-#include "dso_utils.h"
-
-#define LIBEGL_NAME "libEGL.so.1"
-#define LIBWAYLAND_CLIENT_NAME "libwayland-client.so.0"
-
-typedef uint32_t (*wl_display_get_global_func)(struct wl_display *display,
- const char *interface, uint32_t version);
-typedef void (*wl_display_roundtrip_func)(struct wl_display *display);
-
-typedef struct wl_proxy *(*wl_proxy_create_func)(struct wl_proxy *factory,
- const struct wl_interface *interface);
-typedef void (*wl_proxy_destroy_func)(struct wl_proxy *proxy);
-typedef void (*wl_proxy_marshal_func)(struct wl_proxy *p, uint32_t opcode, ...);
-typedef int (*wl_proxy_add_listener_func) (struct wl_proxy *proxy,
- void (**implementation)(void), void *data);
-
-struct wl_vtable {
- const struct wl_interface *buffer_interface;
- const struct wl_interface *drm_interface;
- const struct wl_interface *registry_interface;
- wl_display_roundtrip_func display_roundtrip;
- wl_proxy_create_func proxy_create;
- wl_proxy_destroy_func proxy_destroy;
- wl_proxy_marshal_func proxy_marshal;
- wl_proxy_add_listener_func proxy_add_listener;
-};
-
-struct va_wl_output {
- struct dso_handle *libegl_handle;
- struct dso_handle *libwl_client_handle;
- struct wl_vtable vtable;
- struct wl_drm *wl_drm;
- struct wl_registry *wl_registry;
-};
-
-/* These function are copied and adapted from the version inside
- * wayland-client-protocol.h
- */
-static void *
-registry_bind(
- struct wl_vtable *wl_vtable,
- struct wl_registry *wl_registry,
- uint32_t name,
- const struct wl_interface *interface,
- uint32_t version
-)
-{
- struct wl_proxy *id;
-
- id = wl_vtable->proxy_create((struct wl_proxy *) wl_registry,
- interface);
- if (!id)
- return NULL;
-
- wl_vtable->proxy_marshal((struct wl_proxy *) wl_registry,
- WL_REGISTRY_BIND, name, interface->name,
- version, id);
-
- return (void *) id;
-}
-
-static struct wl_registry *
-display_get_registry(
- struct wl_vtable *wl_vtable,
- struct wl_display *wl_display
-)
-{
- struct wl_proxy *callback;
-
- callback = wl_vtable->proxy_create((struct wl_proxy *) wl_display,
- wl_vtable->registry_interface);
- if (!callback)
- return NULL;
-
- wl_vtable->proxy_marshal((struct wl_proxy *) wl_display,
- WL_DISPLAY_GET_REGISTRY, callback);
-
- return (struct wl_registry *) callback;
-}
-
-static int
-registry_add_listener(
- struct wl_vtable *wl_vtable,
- struct wl_registry *wl_registry,
- const struct wl_registry_listener *listener,
- void *data
-)
-{
- return wl_vtable->proxy_add_listener((struct wl_proxy *) wl_registry,
- (void (**)(void)) listener, data);
-}
-
-static void
-registry_handle_global(
- void *data,
- struct wl_registry *registry,
- uint32_t id,
- const char *interface,
- uint32_t version
-)
-{
- VADriverContextP ctx = data;
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- struct va_wl_output * const wl_output = i965->wl_output;
- struct wl_vtable * const wl_vtable = &wl_output->vtable;
-
- if (strcmp(interface, "wl_drm") == 0) {
- wl_output->wl_drm = registry_bind(wl_vtable, wl_output->wl_registry,
- id, wl_vtable->drm_interface, 2);
- }
-}
-
-static const struct wl_registry_listener registry_listener = {
- registry_handle_global,
- NULL
-};
-
-/* Ensure wl_drm instance is created */
-static bool
-ensure_wl_output(VADriverContextP ctx)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- struct va_wl_output * const wl_output = i965->wl_output;
- struct wl_vtable * const wl_vtable = &wl_output->vtable;
-
- if (wl_output->wl_drm)
- return true;
-
- wl_output->wl_registry = display_get_registry(wl_vtable, ctx->native_dpy);
- registry_add_listener(wl_vtable, wl_output->wl_registry,
- &registry_listener, ctx);
- wl_vtable->display_roundtrip(ctx->native_dpy);
- if (!wl_output->wl_drm)
- return false;
- return true;
-}
-
-/* Create planar/prime YUV buffer
- * Create a prime buffer if fd is not -1, otherwise a
- * planar buffer
- */
-static struct wl_buffer *
-create_prime_or_planar_buffer(
- struct va_wl_output *wl_output,
- uint32_t name,
- int fd,
- int32_t width,
- int32_t height,
- uint32_t format,
- int32_t offsets[3],
- int32_t pitches[3]
-)
-{
- struct wl_vtable * const wl_vtable = &wl_output->vtable;
- struct wl_proxy *id;
-
- id = wl_vtable->proxy_create(
- (struct wl_proxy *)wl_output->wl_drm,
- wl_vtable->buffer_interface
- );
- if (!id)
- return NULL;
-
- wl_vtable->proxy_marshal(
- (struct wl_proxy *)wl_output->wl_drm,
- (fd != -1) ? WL_DRM_CREATE_PRIME_BUFFER : WL_DRM_CREATE_PLANAR_BUFFER,
- id,
- (fd != -1) ? fd : name,
- width, height, format,
- offsets[0], pitches[0],
- offsets[1], pitches[1],
- offsets[2], pitches[2]
- );
- return (struct wl_buffer *)id;
-}
-
-/* Hook to return Wayland buffer associated with the VA surface */
-static VAStatus
-va_GetSurfaceBufferWl(
- struct VADriverContext *ctx,
- VASurfaceID surface,
- unsigned int flags,
- struct wl_buffer **out_buffer
-)
-{
- struct VADriverVTableWayland * const vtable = ctx->vtable_wayland;
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- struct object_surface *obj_surface;
- struct wl_buffer *buffer;
- uint32_t name, drm_format;
- int offsets[3], pitches[3];
- int fd = -1;
-
- obj_surface = SURFACE(surface);
- if (!obj_surface)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- if (flags != VA_FRAME_PICTURE)
- return VA_STATUS_ERROR_FLAG_NOT_SUPPORTED;
-
- if (!out_buffer)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- if (!ensure_wl_output(ctx))
- return VA_STATUS_ERROR_INVALID_DISPLAY;
-
- if (!vtable->has_prime_sharing || (drm_intel_bo_gem_export_to_prime(obj_surface->bo, &fd) != 0)) {
- fd = -1;
-
- if (drm_intel_bo_flink(obj_surface->bo, &name) != 0)
- return VA_STATUS_ERROR_INVALID_SURFACE;
- }
-
- switch (obj_surface->fourcc) {
- case VA_FOURCC_NV12:
- drm_format = WL_DRM_FORMAT_NV12;
- offsets[0] = 0;
- pitches[0] = obj_surface->width;
- offsets[1] = obj_surface->width * obj_surface->y_cb_offset;
- pitches[1] = obj_surface->cb_cr_pitch;
- offsets[2] = 0;
- pitches[2] = 0;
- break;
- case VA_FOURCC_YV12:
- case VA_FOURCC_I420:
- case VA_FOURCC_IMC1:
- case VA_FOURCC_IMC3:
- case VA_FOURCC_422H:
- case VA_FOURCC_422V:
- case VA_FOURCC_411P:
- case VA_FOURCC_444P:
- switch (obj_surface->subsampling) {
- case SUBSAMPLE_YUV411:
- drm_format = WL_DRM_FORMAT_YUV411;
- break;
- case SUBSAMPLE_YUV420:
- drm_format = WL_DRM_FORMAT_YUV420;
- break;
- case SUBSAMPLE_YUV422H:
- case SUBSAMPLE_YUV422V:
- drm_format = WL_DRM_FORMAT_YUV422;
- break;
- case SUBSAMPLE_YUV444:
- drm_format = WL_DRM_FORMAT_YUV444;
- break;
- default:
- assert(0 && "unsupported subsampling");
- return VA_STATUS_ERROR_INVALID_IMAGE_FORMAT;
- }
- offsets[0] = 0;
- pitches[0] = obj_surface->width;
- offsets[1] = obj_surface->width * obj_surface->y_cb_offset;
- pitches[1] = obj_surface->cb_cr_pitch;
- offsets[2] = obj_surface->width * obj_surface->y_cr_offset;
- pitches[2] = obj_surface->cb_cr_pitch;
- break;
- default:
- assert(0 && "unsupported format");
- return VA_STATUS_ERROR_INVALID_IMAGE_FORMAT;
- }
-
- buffer = create_prime_or_planar_buffer(
- i965->wl_output,
- name,
- fd,
- obj_surface->orig_width,
- obj_surface->orig_height,
- drm_format,
- offsets,
- pitches
- );
-
- if (fd != -1)
- close(fd);
-
- if (!buffer)
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
-
- *out_buffer = buffer;
- return VA_STATUS_SUCCESS;
-}
-
-/* Hook to return Wayland buffer associated with the VA image */
-static VAStatus
-va_GetImageBufferWl(
- struct VADriverContext *ctx,
- VAImageID image,
- unsigned int flags,
- struct wl_buffer **out_buffer
-)
-{
- return VA_STATUS_ERROR_UNIMPLEMENTED;
-}
-
-bool
-ensure_driver_vtable(VADriverContextP ctx)
-{
- struct VADriverVTableWayland * const vtable = ctx->vtable_wayland;
-
- if (!vtable)
- return false;
-
- vtable->vaGetSurfaceBufferWl = va_GetSurfaceBufferWl;
- vtable->vaGetImageBufferWl = va_GetImageBufferWl;
- return true;
-}
-
-bool
-i965_output_wayland_init(VADriverContextP ctx)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- struct dso_handle *dso_handle;
- struct wl_vtable *wl_vtable;
-
- static const struct dso_symbol libegl_symbols[] = {
- { "wl_drm_interface",
- offsetof(struct wl_vtable, drm_interface) },
- { NULL, }
- };
-
- static const struct dso_symbol libwl_client_symbols[] = {
- { "wl_buffer_interface",
- offsetof(struct wl_vtable, buffer_interface) },
- { "wl_registry_interface",
- offsetof(struct wl_vtable, registry_interface) },
- { "wl_display_roundtrip",
- offsetof(struct wl_vtable, display_roundtrip) },
- { "wl_proxy_create",
- offsetof(struct wl_vtable, proxy_create) },
- { "wl_proxy_destroy",
- offsetof(struct wl_vtable, proxy_destroy) },
- { "wl_proxy_marshal",
- offsetof(struct wl_vtable, proxy_marshal) },
- { "wl_proxy_add_listener",
- offsetof(struct wl_vtable, proxy_add_listener) },
- { NULL, }
- };
-
- if (ctx->display_type != VA_DISPLAY_WAYLAND)
- return false;
-
- i965->wl_output = calloc(1, sizeof(struct va_wl_output));
- if (!i965->wl_output)
- goto error;
-
- i965->wl_output->libegl_handle = dso_open(LIBEGL_NAME);
- if (!i965->wl_output->libegl_handle)
- goto error;
-
- dso_handle = i965->wl_output->libegl_handle;
- wl_vtable = &i965->wl_output->vtable;
- if (!dso_get_symbols(dso_handle, wl_vtable, sizeof(*wl_vtable),
- libegl_symbols))
- goto error;
-
- i965->wl_output->libwl_client_handle = dso_open(LIBWAYLAND_CLIENT_NAME);
- if (!i965->wl_output->libwl_client_handle)
- goto error;
-
- dso_handle = i965->wl_output->libwl_client_handle;
- wl_vtable = &i965->wl_output->vtable;
- if (!dso_get_symbols(dso_handle, wl_vtable, sizeof(*wl_vtable),
- libwl_client_symbols))
- goto error;
-
- if (!ensure_driver_vtable(ctx))
- goto error;
- return true;
-
-error:
- i965_output_wayland_terminate(ctx);
- return false;
-}
-
-void
-i965_output_wayland_terminate(VADriverContextP ctx)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- struct va_wl_output *wl_output;
-
- if (ctx->display_type != VA_DISPLAY_WAYLAND)
- return;
-
- wl_output = i965->wl_output;
- if (!wl_output)
- return;
-
- if (wl_output->wl_drm) {
- wl_output->vtable.proxy_destroy((struct wl_proxy *)wl_output->wl_drm);
- wl_output->wl_drm = NULL;
- }
-
- if (wl_output->libegl_handle) {
- dso_close(wl_output->libegl_handle);
- wl_output->libegl_handle = NULL;
- }
-
- if (wl_output->libwl_client_handle) {
- dso_close(wl_output->libwl_client_handle);
- wl_output->libwl_client_handle = NULL;
- }
- free(wl_output);
- i965->wl_output = NULL;
-}
diff --git a/src/i965_output_wayland.h b/src/i965_output_wayland.h
deleted file mode 100644
index acea8d9..0000000
--- a/src/i965_output_wayland.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2012 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef I965_OUTPUT_WAYLAND_H
-#define I965_OUTPUT_WAYLAND_H
-
-#include <stdbool.h>
-#include <va/va_backend.h>
-
-bool
-i965_output_wayland_init(VADriverContextP ctx);
-
-void
-i965_output_wayland_terminate(VADriverContextP ctx);
-
-#endif /* I965_OUTPUT_WAYLAND_H */
diff --git a/src/i965_pciids.h b/src/i965_pciids.h
deleted file mode 100644
index 1ea3c98..0000000
--- a/src/i965_pciids.h
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Copied and modified from (mesa) include/pci_ids/i965_pci_ids.h
- */
-
-CHIPSET(0x2A42, g4x, g4x, "Intel(R) GM45 Express Chipset")
-CHIPSET(0x2E02, g4x, g4x, "Intel(R) Integrated Graphics Device")
-CHIPSET(0x2E12, g4x, g4x, "Intel(R) Q45/Q43")
-CHIPSET(0x2E22, g4x, g4x, "Intel(R) G45/G43")
-CHIPSET(0x2E32, g4x, g4x, "Intel(R) G41")
-CHIPSET(0x2E42, g4x, g4x, "Intel(R) B43")
-CHIPSET(0x2E92, g4x, g4x, "Intel(R) B43")
-CHIPSET(0x0042, ilk, ilk, "Intel(R) Ironlake Desktop")
-CHIPSET(0x0046, ilk, ilk, "Intel(R) Ironlake Mobile")
-CHIPSET(0x0102, snb, snb_gt1, "Intel(R) Sandybridge Desktop")
-CHIPSET(0x0112, snb, snb_gt2, "Intel(R) Sandybridge Desktop")
-CHIPSET(0x0122, snb, snb_gt2, "Intel(R) Sandybridge Desktop")
-CHIPSET(0x0106, snb, snb_gt1, "Intel(R) Sandybridge Mobile")
-CHIPSET(0x0116, snb, snb_gt2, "Intel(R) Sandybridge Mobile")
-CHIPSET(0x0126, snb, snb_gt2, "Intel(R) Sandybridge Mobile")
-CHIPSET(0x010A, snb, snb_gt1, "Intel(R) Sandybridge Server")
-CHIPSET(0x0152, ivb, ivb_gt1, "Intel(R) Ivybridge Desktop")
-CHIPSET(0x0162, ivb, ivb_gt2, "Intel(R) Ivybridge Desktop")
-CHIPSET(0x0156, ivb, ivb_gt1, "Intel(R) Ivybridge Mobile")
-CHIPSET(0x0166, ivb, ivb_gt2, "Intel(R) Ivybridge Mobile")
-CHIPSET(0x015A, ivb, ivb_gt1, "Intel(R) Ivybridge Server")
-CHIPSET(0x016A, ivb, ivb_gt2, "Intel(R) Ivybridge Server")
-CHIPSET(0x0F31, ivb, byt, "Intel(R) Bay Trail")
-CHIPSET(0x0F32, ivb, byt, "Intel(R) Bay Trail")
-CHIPSET(0x0F33, ivb, byt, "Intel(R) Bay Trail")
-CHIPSET(0x0157, ivb, byt, "Intel(R) Bay Trail")
-CHIPSET(0x0155, ivb, byt, "Intel(R) Bay Trail")
-CHIPSET(0x0402, hsw, hsw_gt1, "Intel(R) Haswell Desktop")
-CHIPSET(0x0412, hsw, hsw_gt2, "Intel(R) Haswell Desktop")
-CHIPSET(0x0422, hsw, hsw_gt3, "Intel(R) Haswell Desktop")
-CHIPSET(0x0406, hsw, hsw_gt1, "Intel(R) Haswell Mobile")
-CHIPSET(0x0416, hsw, hsw_gt2, "Intel(R) Haswell Mobile")
-CHIPSET(0x0426, hsw, hsw_gt3, "Intel(R) Haswell Mobile")
-CHIPSET(0x040A, hsw, hsw_gt1, "Intel(R) Haswell Server")
-CHIPSET(0x041A, hsw, hsw_gt2, "Intel(R) Haswell Server")
-CHIPSET(0x042A, hsw, hsw_gt3, "Intel(R) Haswell Server")
-CHIPSET(0x040B, hsw, hsw_gt1, "Intel(R) Haswell")
-CHIPSET(0x041B, hsw, hsw_gt2, "Intel(R) Haswell")
-CHIPSET(0x042B, hsw, hsw_gt3, "Intel(R) Haswell")
-CHIPSET(0x040E, hsw, hsw_gt1, "Intel(R) Haswell")
-CHIPSET(0x041E, hsw, hsw_gt2, "Intel(R) Haswell")
-CHIPSET(0x042E, hsw, hsw_gt3, "Intel(R) Haswell")
-CHIPSET(0x0C02, hsw, hsw_gt1, "Intel(R) Haswell Desktop")
-CHIPSET(0x0C12, hsw, hsw_gt2, "Intel(R) Haswell Desktop")
-CHIPSET(0x0C22, hsw, hsw_gt3, "Intel(R) Haswell Desktop")
-CHIPSET(0x0C06, hsw, hsw_gt1, "Intel(R) Haswell Mobile")
-CHIPSET(0x0C16, hsw, hsw_gt2, "Intel(R) Haswell Mobile")
-CHIPSET(0x0C26, hsw, hsw_gt3, "Intel(R) Haswell Mobile")
-CHIPSET(0x0C0A, hsw, hsw_gt1, "Intel(R) Haswell Server")
-CHIPSET(0x0C1A, hsw, hsw_gt2, "Intel(R) Haswell Server")
-CHIPSET(0x0C2A, hsw, hsw_gt3, "Intel(R) Haswell Server")
-CHIPSET(0x0C0B, hsw, hsw_gt1, "Intel(R) Haswell")
-CHIPSET(0x0C1B, hsw, hsw_gt2, "Intel(R) Haswell")
-CHIPSET(0x0C2B, hsw, hsw_gt3, "Intel(R) Haswell")
-CHIPSET(0x0C0E, hsw, hsw_gt1, "Intel(R) Haswell")
-CHIPSET(0x0C1E, hsw, hsw_gt2, "Intel(R) Haswell")
-CHIPSET(0x0C2E, hsw, hsw_gt3, "Intel(R) Haswell")
-CHIPSET(0x0A02, hsw, hsw_gt1, "Intel(R) Haswell Desktop")
-CHIPSET(0x0A12, hsw, hsw_gt2, "Intel(R) Haswell Desktop")
-CHIPSET(0x0A22, hsw, hsw_gt3, "Intel(R) Haswell Desktop")
-CHIPSET(0x0A06, hsw, hsw_gt1, "Intel(R) Haswell Mobile")
-CHIPSET(0x0A16, hsw, hsw_gt2, "Intel(R) Haswell Mobile")
-CHIPSET(0x0A26, hsw, hsw_gt3, "Intel(R) Haswell Mobile")
-CHIPSET(0x0A0A, hsw, hsw_gt1, "Intel(R) Haswell Server")
-CHIPSET(0x0A1A, hsw, hsw_gt2, "Intel(R) Haswell Server")
-CHIPSET(0x0A2A, hsw, hsw_gt3, "Intel(R) Haswell Server")
-CHIPSET(0x0A0B, hsw, hsw_gt1, "Intel(R) Haswell")
-CHIPSET(0x0A1B, hsw, hsw_gt2, "Intel(R) Haswell")
-CHIPSET(0x0A2B, hsw, hsw_gt3, "Intel(R) Haswell")
-CHIPSET(0x0A0E, hsw, hsw_gt1, "Intel(R) Haswell")
-CHIPSET(0x0A1E, hsw, hsw_gt2, "Intel(R) Haswell")
-CHIPSET(0x0A2E, hsw, hsw_gt3, "Intel(R) Haswell")
-CHIPSET(0x0D02, hsw, hsw_gt1, "Intel(R) Haswell Desktop")
-CHIPSET(0x0D12, hsw, hsw_gt2, "Intel(R) Haswell Desktop")
-CHIPSET(0x0D22, hsw, hsw_gt3, "Intel(R) Haswell Desktop")
-CHIPSET(0x0D06, hsw, hsw_gt1, "Intel(R) Haswell Mobile")
-CHIPSET(0x0D16, hsw, hsw_gt2, "Intel(R) Haswell Mobile")
-CHIPSET(0x0D26, hsw, hsw_gt3, "Intel(R) Haswell Mobile")
-CHIPSET(0x0D0A, hsw, hsw_gt1, "Intel(R) Haswell Server")
-CHIPSET(0x0D1A, hsw, hsw_gt2, "Intel(R) Haswell Server")
-CHIPSET(0x0D2A, hsw, hsw_gt3, "Intel(R) Haswell")
-CHIPSET(0x0D0B, hsw, hsw_gt1, "Intel(R) Haswell")
-CHIPSET(0x0D1B, hsw, hsw_gt2, "Intel(R) Haswell")
-CHIPSET(0x0D2B, hsw, hsw_gt3, "Intel(R) Haswell")
-CHIPSET(0x0D0E, hsw, hsw_gt1, "Intel(R) Haswell")
-CHIPSET(0x0D1E, hsw, hsw_gt2, "Intel(R) Haswell")
-CHIPSET(0x0D2E, hsw, hsw_gt3, "Intel(R) Haswell")
-CHIPSET(0x1602, bdw, bdw, "Intel(R) Broadwell")
-CHIPSET(0x1606, bdw, bdw, "Intel(R) Broadwell")
-CHIPSET(0x160A, bdw, bdw, "Intel(R) Broadwell")
-CHIPSET(0x160B, bdw, bdw, "Intel(R) Broadwell")
-CHIPSET(0x160D, bdw, bdw, "Intel(R) Broadwell")
-CHIPSET(0x160E, bdw, bdw, "Intel(R) Broadwell")
-CHIPSET(0x1612, bdw, bdw, "Intel(R) Broadwell")
-CHIPSET(0x1616, bdw, bdw, "Intel(R) Broadwell")
-CHIPSET(0x161A, bdw, bdw, "Intel(R) Broadwell")
-CHIPSET(0x161B, bdw, bdw, "Intel(R) Broadwell")
-CHIPSET(0x161D, bdw, bdw, "Intel(R) Broadwell")
-CHIPSET(0x161E, bdw, bdw, "Intel(R) Broadwell")
-CHIPSET(0x1622, bdw, bdw, "Intel(R) Broadwell")
-CHIPSET(0x1626, bdw, bdw, "Intel(R) Broadwell")
-CHIPSET(0x162A, bdw, bdw, "Intel(R) Broadwell")
-CHIPSET(0x162B, bdw, bdw, "Intel(R) Broadwell")
-CHIPSET(0x162D, bdw, bdw, "Intel(R) Broadwell")
-CHIPSET(0x162E, bdw, bdw, "Intel(R) Broadwell")
-CHIPSET(0x22B0, chv, chv, "Intel(R) CherryView")
-CHIPSET(0x22B1, chv, chv, "Intel(R) CherryView")
-CHIPSET(0x22B2, chv, chv, "Intel(R) CherryView")
-CHIPSET(0x22B3, chv, chv, "Intel(R) CherryView")
-CHIPSET(0x1902, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x1906, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x190A, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x190B, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x190E, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x1912, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x1913, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x1915, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x1916, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x1917, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x191A, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x191B, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x191D, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x191E, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x1921, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x1923, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x1926, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x1927, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x192A, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x192B, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x192D, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x1932, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x193A, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x193B, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x193D, skl, skl, "Intel(R) Skylake")
-CHIPSET(0x0A84, bxt, bxt, "Intel(R) Broxton")
-CHIPSET(0x1A84, bxt, bxt, "Intel(R) Broxton")
-CHIPSET(0x1A85, bxt, bxt, "Intel(R) Broxton")
-CHIPSET(0x5A84, bxt, bxt, "Intel(R) Broxton")
-CHIPSET(0x5A85, bxt, bxt, "Intel(R) Broxton")
-CHIPSET(0x5916, kbl, kbl, "Intel(R) Kabylake")
-CHIPSET(0x5913, kbl, kbl, "Intel(R) Kabylake")
-CHIPSET(0x5906, kbl, kbl, "Intel(R) Kabylake")
-CHIPSET(0x5926, kbl, kbl, "Intel(R) Kabylake")
-CHIPSET(0x5921, kbl, kbl, "Intel(R) Kabylake")
-CHIPSET(0x5915, kbl, kbl, "Intel(R) Kabylake")
-CHIPSET(0x590E, kbl, kbl, "Intel(R) Kabylake")
-CHIPSET(0x591E, kbl, kbl, "Intel(R) Kabylake")
-CHIPSET(0x5912, kbl, kbl, "Intel(R) Kabylake")
-CHIPSET(0x5917, kbl, kbl, "Intel(R) Kabylake")
-CHIPSET(0x5902, kbl, kbl, "Intel(R) Kabylake")
-CHIPSET(0x591B, kbl, kbl, "Intel(R) Kabylake")
-CHIPSET(0x593B, kbl, kbl, "Intel(R) Kabylake")
-CHIPSET(0x590B, kbl, kbl, "Intel(R) Kabylake")
-CHIPSET(0x591A, kbl, kbl, "Intel(R) Kabylake")
-CHIPSET(0x590A, kbl, kbl, "Intel(R) Kabylake")
-CHIPSET(0x591D, kbl, kbl, "Intel(R) Kabylake")
-CHIPSET(0x5908, kbl, kbl, "Intel(R) Kabylake")
-CHIPSET(0x5923, kbl, kbl, "Intel(R) Kabylake")
-CHIPSET(0x5927, kbl, kbl, "Intel(R) Kabylake")
diff --git a/src/i965_post_processing.c b/src/i965_post_processing.c
deleted file mode 100755
index 1b4036f..0000000
--- a/src/i965_post_processing.c
+++ /dev/null
@@ -1,6288 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-#include "i965_defines.h"
-#include "i965_structs.h"
-#include "i965_drv_video.h"
-#include "i965_post_processing.h"
-#include "i965_render.h"
-#include "i965_yuv_coefs.h"
-#include "intel_media.h"
-
-#include "gen75_picture_process.h"
-
-extern VAStatus
-vpp_surface_convert(VADriverContextP ctx,
- struct object_surface *src_obj_surf,
- struct object_surface *dst_obj_surf);
-
-#define HAS_VPP(ctx) ((ctx)->codec_info->has_vpp)
-
-#define SURFACE_STATE_PADDED_SIZE MAX(SURFACE_STATE_PADDED_SIZE_GEN8,\
- MAX(SURFACE_STATE_PADDED_SIZE_GEN6, SURFACE_STATE_PADDED_SIZE_GEN7))
-
-#define SURFACE_STATE_OFFSET(index) (SURFACE_STATE_PADDED_SIZE * index)
-#define BINDING_TABLE_OFFSET SURFACE_STATE_OFFSET(MAX_PP_SURFACES)
-
-#define GPU_ASM_BLOCK_WIDTH 16
-#define GPU_ASM_BLOCK_HEIGHT 8
-#define GPU_ASM_X_OFFSET_ALIGNMENT 4
-
-#define VA_STATUS_SUCCESS_1 0xFFFFFFFE
-
-static const uint32_t pp_null_gen5[][4] = {
-#include "shaders/post_processing/gen5_6/null.g4b.gen5"
-};
-
-static const uint32_t pp_nv12_load_save_nv12_gen5[][4] = {
-#include "shaders/post_processing/gen5_6/nv12_load_save_nv12.g4b.gen5"
-};
-
-static const uint32_t pp_nv12_load_save_pl3_gen5[][4] = {
-#include "shaders/post_processing/gen5_6/nv12_load_save_pl3.g4b.gen5"
-};
-
-static const uint32_t pp_pl3_load_save_nv12_gen5[][4] = {
-#include "shaders/post_processing/gen5_6/pl3_load_save_nv12.g4b.gen5"
-};
-
-static const uint32_t pp_pl3_load_save_pl3_gen5[][4] = {
-#include "shaders/post_processing/gen5_6/pl3_load_save_pl3.g4b.gen5"
-};
-
-static const uint32_t pp_nv12_scaling_gen5[][4] = {
-#include "shaders/post_processing/gen5_6/nv12_scaling_nv12.g4b.gen5"
-};
-
-static const uint32_t pp_nv12_avs_gen5[][4] = {
-#include "shaders/post_processing/gen5_6/nv12_avs_nv12.g4b.gen5"
-};
-
-static const uint32_t pp_nv12_dndi_gen5[][4] = {
-#include "shaders/post_processing/gen5_6/nv12_dndi_nv12.g4b.gen5"
-};
-
-static const uint32_t pp_nv12_dn_gen5[][4] = {
-#include "shaders/post_processing/gen5_6/nv12_dn_nv12.g4b.gen5"
-};
-
-static const uint32_t pp_nv12_load_save_pa_gen5[][4] = {
-#include "shaders/post_processing/gen5_6/nv12_load_save_pa.g4b.gen5"
-};
-
-static const uint32_t pp_pl3_load_save_pa_gen5[][4] = {
-#include "shaders/post_processing/gen5_6/pl3_load_save_pa.g4b.gen5"
-};
-
-static const uint32_t pp_pa_load_save_nv12_gen5[][4] = {
-#include "shaders/post_processing/gen5_6/pa_load_save_nv12.g4b.gen5"
-};
-
-static const uint32_t pp_pa_load_save_pl3_gen5[][4] = {
-#include "shaders/post_processing/gen5_6/pa_load_save_pl3.g4b.gen5"
-};
-
-static const uint32_t pp_pa_load_save_pa_gen5[][4] = {
-#include "shaders/post_processing/gen5_6/pa_load_save_pa.g4b.gen5"
-};
-
-static const uint32_t pp_rgbx_load_save_nv12_gen5[][4] = {
-#include "shaders/post_processing/gen5_6/rgbx_load_save_nv12.g4b.gen5"
-};
-
-static const uint32_t pp_nv12_load_save_rgbx_gen5[][4] = {
-#include "shaders/post_processing/gen5_6/nv12_load_save_rgbx.g4b.gen5"
-};
-
-static VAStatus pp_null_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param);
-static VAStatus
-pp_nv12_avs_initialize(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface, const VARectangle *src_rect,
- struct i965_surface *dst_surface, const VARectangle *dst_rect,
- void *filter_param);
-static VAStatus pp_nv12_scaling_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param);
-static VAStatus gen6_nv12_scaling_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param);
-static VAStatus pp_plx_load_save_plx_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param);
-static VAStatus pp_nv12_dndi_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param);
-static VAStatus pp_nv12_dn_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param);
-
-static struct pp_module pp_modules_gen5[] = {
- {
- {
- "NULL module (for testing)",
- PP_NULL,
- pp_null_gen5,
- sizeof(pp_null_gen5),
- NULL,
- },
-
- pp_null_initialize,
- },
-
- {
- {
- "NV12_NV12",
- PP_NV12_LOAD_SAVE_N12,
- pp_nv12_load_save_nv12_gen5,
- sizeof(pp_nv12_load_save_nv12_gen5),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize,
- },
-
- {
- {
- "NV12_PL3",
- PP_NV12_LOAD_SAVE_PL3,
- pp_nv12_load_save_pl3_gen5,
- sizeof(pp_nv12_load_save_pl3_gen5),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize,
- },
-
- {
- {
- "PL3_NV12",
- PP_PL3_LOAD_SAVE_N12,
- pp_pl3_load_save_nv12_gen5,
- sizeof(pp_pl3_load_save_nv12_gen5),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize,
- },
-
- {
- {
- "PL3_PL3",
- PP_PL3_LOAD_SAVE_PL3,
- pp_pl3_load_save_pl3_gen5,
- sizeof(pp_pl3_load_save_pl3_gen5),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize
- },
-
- {
- {
- "NV12 Scaling module",
- PP_NV12_SCALING,
- pp_nv12_scaling_gen5,
- sizeof(pp_nv12_scaling_gen5),
- NULL,
- },
-
- pp_nv12_scaling_initialize,
- },
-
- {
- {
- "NV12 AVS module",
- PP_NV12_AVS,
- pp_nv12_avs_gen5,
- sizeof(pp_nv12_avs_gen5),
- NULL,
- },
-
- pp_nv12_avs_initialize,
- },
-
- {
- {
- "NV12 DNDI module",
- PP_NV12_DNDI,
- pp_nv12_dndi_gen5,
- sizeof(pp_nv12_dndi_gen5),
- NULL,
- },
-
- pp_nv12_dndi_initialize,
- },
-
- {
- {
- "NV12 DN module",
- PP_NV12_DN,
- pp_nv12_dn_gen5,
- sizeof(pp_nv12_dn_gen5),
- NULL,
- },
-
- pp_nv12_dn_initialize,
- },
-
- {
- {
- "NV12_PA module",
- PP_NV12_LOAD_SAVE_PA,
- pp_nv12_load_save_pa_gen5,
- sizeof(pp_nv12_load_save_pa_gen5),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize,
- },
-
- {
- {
- "PL3_PA module",
- PP_PL3_LOAD_SAVE_PA,
- pp_pl3_load_save_pa_gen5,
- sizeof(pp_pl3_load_save_pa_gen5),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize,
- },
-
- {
- {
- "PA_NV12 module",
- PP_PA_LOAD_SAVE_NV12,
- pp_pa_load_save_nv12_gen5,
- sizeof(pp_pa_load_save_nv12_gen5),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize,
- },
-
- {
- {
- "PA_PL3 module",
- PP_PA_LOAD_SAVE_PL3,
- pp_pa_load_save_pl3_gen5,
- sizeof(pp_pa_load_save_pl3_gen5),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize,
- },
-
- {
- {
- "PA_PA module",
- PP_PA_LOAD_SAVE_PA,
- pp_pa_load_save_pa_gen5,
- sizeof(pp_pa_load_save_pa_gen5),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize,
- },
-
- {
- {
- "RGBX_NV12 module",
- PP_RGBX_LOAD_SAVE_NV12,
- pp_rgbx_load_save_nv12_gen5,
- sizeof(pp_rgbx_load_save_nv12_gen5),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize,
- },
-
- {
- {
- "NV12_RGBX module",
- PP_NV12_LOAD_SAVE_RGBX,
- pp_nv12_load_save_rgbx_gen5,
- sizeof(pp_nv12_load_save_rgbx_gen5),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize,
- },
-};
-
-static const uint32_t pp_null_gen6[][4] = {
-#include "shaders/post_processing/gen5_6/null.g6b"
-};
-
-static const uint32_t pp_nv12_load_save_nv12_gen6[][4] = {
-#include "shaders/post_processing/gen5_6/nv12_load_save_nv12.g6b"
-};
-
-static const uint32_t pp_nv12_load_save_pl3_gen6[][4] = {
-#include "shaders/post_processing/gen5_6/nv12_load_save_pl3.g6b"
-};
-
-static const uint32_t pp_pl3_load_save_nv12_gen6[][4] = {
-#include "shaders/post_processing/gen5_6/pl3_load_save_nv12.g6b"
-};
-
-static const uint32_t pp_pl3_load_save_pl3_gen6[][4] = {
-#include "shaders/post_processing/gen5_6/pl3_load_save_pl3.g6b"
-};
-
-static const uint32_t pp_nv12_scaling_gen6[][4] = {
-#include "shaders/post_processing/gen5_6/nv12_avs_nv12.g6b"
-};
-
-static const uint32_t pp_nv12_avs_gen6[][4] = {
-#include "shaders/post_processing/gen5_6/nv12_avs_nv12.g6b"
-};
-
-static const uint32_t pp_nv12_dndi_gen6[][4] = {
-#include "shaders/post_processing/gen5_6/nv12_dndi_nv12.g6b"
-};
-
-static const uint32_t pp_nv12_dn_gen6[][4] = {
-#include "shaders/post_processing/gen5_6/nv12_dn_nv12.g6b"
-};
-
-static const uint32_t pp_nv12_load_save_pa_gen6[][4] = {
-#include "shaders/post_processing/gen5_6/nv12_load_save_pa.g6b"
-};
-
-static const uint32_t pp_pl3_load_save_pa_gen6[][4] = {
-#include "shaders/post_processing/gen5_6/pl3_load_save_pa.g6b"
-};
-
-static const uint32_t pp_pa_load_save_nv12_gen6[][4] = {
-#include "shaders/post_processing/gen5_6/pa_load_save_nv12.g6b"
-};
-
-static const uint32_t pp_pa_load_save_pl3_gen6[][4] = {
-#include "shaders/post_processing/gen5_6/pa_load_save_pl3.g6b"
-};
-
-static const uint32_t pp_pa_load_save_pa_gen6[][4] = {
-#include "shaders/post_processing/gen5_6/pa_load_save_pa.g6b"
-};
-
-static const uint32_t pp_rgbx_load_save_nv12_gen6[][4] = {
-#include "shaders/post_processing/gen5_6/rgbx_load_save_nv12.g6b"
-};
-
-static const uint32_t pp_nv12_load_save_rgbx_gen6[][4] = {
-#include "shaders/post_processing/gen5_6/nv12_load_save_rgbx.g6b"
-};
-
-static struct pp_module pp_modules_gen6[] = {
- {
- {
- "NULL module (for testing)",
- PP_NULL,
- pp_null_gen6,
- sizeof(pp_null_gen6),
- NULL,
- },
-
- pp_null_initialize,
- },
-
- {
- {
- "NV12_NV12",
- PP_NV12_LOAD_SAVE_N12,
- pp_nv12_load_save_nv12_gen6,
- sizeof(pp_nv12_load_save_nv12_gen6),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize,
- },
-
- {
- {
- "NV12_PL3",
- PP_NV12_LOAD_SAVE_PL3,
- pp_nv12_load_save_pl3_gen6,
- sizeof(pp_nv12_load_save_pl3_gen6),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize,
- },
-
- {
- {
- "PL3_NV12",
- PP_PL3_LOAD_SAVE_N12,
- pp_pl3_load_save_nv12_gen6,
- sizeof(pp_pl3_load_save_nv12_gen6),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize,
- },
-
- {
- {
- "PL3_PL3",
- PP_PL3_LOAD_SAVE_PL3,
- pp_pl3_load_save_pl3_gen6,
- sizeof(pp_pl3_load_save_pl3_gen6),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize,
- },
-
- {
- {
- "NV12 Scaling module",
- PP_NV12_SCALING,
- pp_nv12_scaling_gen6,
- sizeof(pp_nv12_scaling_gen6),
- NULL,
- },
-
- gen6_nv12_scaling_initialize,
- },
-
- {
- {
- "NV12 AVS module",
- PP_NV12_AVS,
- pp_nv12_avs_gen6,
- sizeof(pp_nv12_avs_gen6),
- NULL,
- },
-
- pp_nv12_avs_initialize,
- },
-
- {
- {
- "NV12 DNDI module",
- PP_NV12_DNDI,
- pp_nv12_dndi_gen6,
- sizeof(pp_nv12_dndi_gen6),
- NULL,
- },
-
- pp_nv12_dndi_initialize,
- },
-
- {
- {
- "NV12 DN module",
- PP_NV12_DN,
- pp_nv12_dn_gen6,
- sizeof(pp_nv12_dn_gen6),
- NULL,
- },
-
- pp_nv12_dn_initialize,
- },
- {
- {
- "NV12_PA module",
- PP_NV12_LOAD_SAVE_PA,
- pp_nv12_load_save_pa_gen6,
- sizeof(pp_nv12_load_save_pa_gen6),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize,
- },
-
- {
- {
- "PL3_PA module",
- PP_PL3_LOAD_SAVE_PA,
- pp_pl3_load_save_pa_gen6,
- sizeof(pp_pl3_load_save_pa_gen6),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize,
- },
-
- {
- {
- "PA_NV12 module",
- PP_PA_LOAD_SAVE_NV12,
- pp_pa_load_save_nv12_gen6,
- sizeof(pp_pa_load_save_nv12_gen6),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize,
- },
-
- {
- {
- "PA_PL3 module",
- PP_PA_LOAD_SAVE_PL3,
- pp_pa_load_save_pl3_gen6,
- sizeof(pp_pa_load_save_pl3_gen6),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize,
- },
-
- {
- {
- "PA_PA module",
- PP_PA_LOAD_SAVE_PA,
- pp_pa_load_save_pa_gen6,
- sizeof(pp_pa_load_save_pa_gen6),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize,
- },
-
- {
- {
- "RGBX_NV12 module",
- PP_RGBX_LOAD_SAVE_NV12,
- pp_rgbx_load_save_nv12_gen6,
- sizeof(pp_rgbx_load_save_nv12_gen6),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize,
- },
-
- {
- {
- "NV12_RGBX module",
- PP_NV12_LOAD_SAVE_RGBX,
- pp_nv12_load_save_rgbx_gen6,
- sizeof(pp_nv12_load_save_rgbx_gen6),
- NULL,
- },
-
- pp_plx_load_save_plx_initialize,
- },
-};
-
-static const uint32_t pp_null_gen7[][4] = {
-};
-
-static const uint32_t pp_nv12_load_save_nv12_gen7[][4] = {
-#include "shaders/post_processing/gen7/pl2_to_pl2.g7b"
-};
-
-static const uint32_t pp_nv12_load_save_pl3_gen7[][4] = {
-#include "shaders/post_processing/gen7/pl2_to_pl3.g7b"
-};
-
-static const uint32_t pp_pl3_load_save_nv12_gen7[][4] = {
-#include "shaders/post_processing/gen7/pl3_to_pl2.g7b"
-};
-
-static const uint32_t pp_pl3_load_save_pl3_gen7[][4] = {
-#include "shaders/post_processing/gen7/pl3_to_pl3.g7b"
-};
-
-static const uint32_t pp_nv12_scaling_gen7[][4] = {
-#include "shaders/post_processing/gen7/avs.g7b"
-};
-
-static const uint32_t pp_nv12_avs_gen7[][4] = {
-#include "shaders/post_processing/gen7/avs.g7b"
-};
-
-static const uint32_t pp_nv12_dndi_gen7[][4] = {
-#include "shaders/post_processing/gen7/dndi.g7b"
-};
-
-static const uint32_t pp_nv12_dn_gen7[][4] = {
-#include "shaders/post_processing/gen7/nv12_dn_nv12.g7b"
-};
-static const uint32_t pp_nv12_load_save_pa_gen7[][4] = {
-#include "shaders/post_processing/gen7/pl2_to_pa.g7b"
-};
-static const uint32_t pp_pl3_load_save_pa_gen7[][4] = {
-#include "shaders/post_processing/gen7/pl3_to_pa.g7b"
-};
-static const uint32_t pp_pa_load_save_nv12_gen7[][4] = {
-#include "shaders/post_processing/gen7/pa_to_pl2.g7b"
-};
-static const uint32_t pp_pa_load_save_pl3_gen7[][4] = {
-#include "shaders/post_processing/gen7/pa_to_pl3.g7b"
-};
-static const uint32_t pp_pa_load_save_pa_gen7[][4] = {
-#include "shaders/post_processing/gen7/pa_to_pa.g7b"
-};
-static const uint32_t pp_rgbx_load_save_nv12_gen7[][4] = {
-#include "shaders/post_processing/gen7/rgbx_to_nv12.g7b"
-};
-static const uint32_t pp_nv12_load_save_rgbx_gen7[][4] = {
-#include "shaders/post_processing/gen7/pl2_to_rgbx.g7b"
-};
-
-static VAStatus gen7_pp_plx_avs_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param);
-static VAStatus gen7_pp_nv12_dndi_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param);
-static VAStatus gen7_pp_nv12_dn_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param);
-
-static struct pp_module pp_modules_gen7[] = {
- {
- {
- "NULL module (for testing)",
- PP_NULL,
- pp_null_gen7,
- sizeof(pp_null_gen7),
- NULL,
- },
-
- pp_null_initialize,
- },
-
- {
- {
- "NV12_NV12",
- PP_NV12_LOAD_SAVE_N12,
- pp_nv12_load_save_nv12_gen7,
- sizeof(pp_nv12_load_save_nv12_gen7),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "NV12_PL3",
- PP_NV12_LOAD_SAVE_PL3,
- pp_nv12_load_save_pl3_gen7,
- sizeof(pp_nv12_load_save_pl3_gen7),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "PL3_NV12",
- PP_PL3_LOAD_SAVE_N12,
- pp_pl3_load_save_nv12_gen7,
- sizeof(pp_pl3_load_save_nv12_gen7),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "PL3_PL3",
- PP_PL3_LOAD_SAVE_PL3,
- pp_pl3_load_save_pl3_gen7,
- sizeof(pp_pl3_load_save_pl3_gen7),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "NV12 Scaling module",
- PP_NV12_SCALING,
- pp_nv12_scaling_gen7,
- sizeof(pp_nv12_scaling_gen7),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "NV12 AVS module",
- PP_NV12_AVS,
- pp_nv12_avs_gen7,
- sizeof(pp_nv12_avs_gen7),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "NV12 DNDI module",
- PP_NV12_DNDI,
- pp_nv12_dndi_gen7,
- sizeof(pp_nv12_dndi_gen7),
- NULL,
- },
-
- gen7_pp_nv12_dndi_initialize,
- },
-
- {
- {
- "NV12 DN module",
- PP_NV12_DN,
- pp_nv12_dn_gen7,
- sizeof(pp_nv12_dn_gen7),
- NULL,
- },
-
- gen7_pp_nv12_dn_initialize,
- },
- {
- {
- "NV12_PA module",
- PP_NV12_LOAD_SAVE_PA,
- pp_nv12_load_save_pa_gen7,
- sizeof(pp_nv12_load_save_pa_gen7),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "PL3_PA module",
- PP_PL3_LOAD_SAVE_PA,
- pp_pl3_load_save_pa_gen7,
- sizeof(pp_pl3_load_save_pa_gen7),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "PA_NV12 module",
- PP_PA_LOAD_SAVE_NV12,
- pp_pa_load_save_nv12_gen7,
- sizeof(pp_pa_load_save_nv12_gen7),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "PA_PL3 module",
- PP_PA_LOAD_SAVE_PL3,
- pp_pa_load_save_pl3_gen7,
- sizeof(pp_pa_load_save_pl3_gen7),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "PA_PA module",
- PP_PA_LOAD_SAVE_PA,
- pp_pa_load_save_pa_gen7,
- sizeof(pp_pa_load_save_pa_gen7),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "RGBX_NV12 module",
- PP_RGBX_LOAD_SAVE_NV12,
- pp_rgbx_load_save_nv12_gen7,
- sizeof(pp_rgbx_load_save_nv12_gen7),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "NV12_RGBX module",
- PP_NV12_LOAD_SAVE_RGBX,
- pp_nv12_load_save_rgbx_gen7,
- sizeof(pp_nv12_load_save_rgbx_gen7),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
-};
-
-static const uint32_t pp_null_gen75[][4] = {
-};
-
-static const uint32_t pp_nv12_load_save_nv12_gen75[][4] = {
-#include "shaders/post_processing/gen7/pl2_to_pl2.g75b"
-};
-
-static const uint32_t pp_nv12_load_save_pl3_gen75[][4] = {
-#include "shaders/post_processing/gen7/pl2_to_pl3.g75b"
-};
-
-static const uint32_t pp_pl3_load_save_nv12_gen75[][4] = {
-#include "shaders/post_processing/gen7/pl3_to_pl2.g75b"
-};
-
-static const uint32_t pp_pl3_load_save_pl3_gen75[][4] = {
-#include "shaders/post_processing/gen7/pl3_to_pl3.g75b"
-};
-
-static const uint32_t pp_nv12_scaling_gen75[][4] = {
-#include "shaders/post_processing/gen7/avs.g75b"
-};
-
-static const uint32_t pp_nv12_avs_gen75[][4] = {
-#include "shaders/post_processing/gen7/avs.g75b"
-};
-
-static const uint32_t pp_nv12_dndi_gen75[][4] = {
-// #include "shaders/post_processing/gen7/dndi.g75b"
-};
-
-static const uint32_t pp_nv12_dn_gen75[][4] = {
-// #include "shaders/post_processing/gen7/nv12_dn_nv12.g75b"
-};
-static const uint32_t pp_nv12_load_save_pa_gen75[][4] = {
-#include "shaders/post_processing/gen7/pl2_to_pa.g75b"
-};
-static const uint32_t pp_pl3_load_save_pa_gen75[][4] = {
-#include "shaders/post_processing/gen7/pl3_to_pa.g75b"
-};
-static const uint32_t pp_pa_load_save_nv12_gen75[][4] = {
-#include "shaders/post_processing/gen7/pa_to_pl2.g75b"
-};
-static const uint32_t pp_pa_load_save_pl3_gen75[][4] = {
-#include "shaders/post_processing/gen7/pa_to_pl3.g75b"
-};
-static const uint32_t pp_pa_load_save_pa_gen75[][4] = {
-#include "shaders/post_processing/gen7/pa_to_pa.g75b"
-};
-static const uint32_t pp_rgbx_load_save_nv12_gen75[][4] = {
-#include "shaders/post_processing/gen7/rgbx_to_nv12.g75b"
-};
-static const uint32_t pp_nv12_load_save_rgbx_gen75[][4] = {
-#include "shaders/post_processing/gen7/pl2_to_rgbx.g75b"
-};
-
-static struct pp_module pp_modules_gen75[] = {
- {
- {
- "NULL module (for testing)",
- PP_NULL,
- pp_null_gen75,
- sizeof(pp_null_gen75),
- NULL,
- },
-
- pp_null_initialize,
- },
-
- {
- {
- "NV12_NV12",
- PP_NV12_LOAD_SAVE_N12,
- pp_nv12_load_save_nv12_gen75,
- sizeof(pp_nv12_load_save_nv12_gen75),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "NV12_PL3",
- PP_NV12_LOAD_SAVE_PL3,
- pp_nv12_load_save_pl3_gen75,
- sizeof(pp_nv12_load_save_pl3_gen75),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "PL3_NV12",
- PP_PL3_LOAD_SAVE_N12,
- pp_pl3_load_save_nv12_gen75,
- sizeof(pp_pl3_load_save_nv12_gen75),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "PL3_PL3",
- PP_PL3_LOAD_SAVE_PL3,
- pp_pl3_load_save_pl3_gen75,
- sizeof(pp_pl3_load_save_pl3_gen75),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "NV12 Scaling module",
- PP_NV12_SCALING,
- pp_nv12_scaling_gen75,
- sizeof(pp_nv12_scaling_gen75),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "NV12 AVS module",
- PP_NV12_AVS,
- pp_nv12_avs_gen75,
- sizeof(pp_nv12_avs_gen75),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "NV12 DNDI module",
- PP_NV12_DNDI,
- pp_nv12_dndi_gen75,
- sizeof(pp_nv12_dndi_gen75),
- NULL,
- },
-
- gen7_pp_nv12_dn_initialize,
- },
-
- {
- {
- "NV12 DN module",
- PP_NV12_DN,
- pp_nv12_dn_gen75,
- sizeof(pp_nv12_dn_gen75),
- NULL,
- },
-
- gen7_pp_nv12_dn_initialize,
- },
-
- {
- {
- "NV12_PA module",
- PP_NV12_LOAD_SAVE_PA,
- pp_nv12_load_save_pa_gen75,
- sizeof(pp_nv12_load_save_pa_gen75),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "PL3_PA module",
- PP_PL3_LOAD_SAVE_PA,
- pp_pl3_load_save_pa_gen75,
- sizeof(pp_pl3_load_save_pa_gen75),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "PA_NV12 module",
- PP_PA_LOAD_SAVE_NV12,
- pp_pa_load_save_nv12_gen75,
- sizeof(pp_pa_load_save_nv12_gen75),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "PA_PL3 module",
- PP_PA_LOAD_SAVE_PL3,
- pp_pa_load_save_pl3_gen75,
- sizeof(pp_pa_load_save_pl3_gen75),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "PA_PA module",
- PP_PA_LOAD_SAVE_PA,
- pp_pa_load_save_pa_gen75,
- sizeof(pp_pa_load_save_pa_gen75),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "RGBX_NV12 module",
- PP_RGBX_LOAD_SAVE_NV12,
- pp_rgbx_load_save_nv12_gen75,
- sizeof(pp_rgbx_load_save_nv12_gen75),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
- {
- {
- "NV12_RGBX module",
- PP_NV12_LOAD_SAVE_RGBX,
- pp_nv12_load_save_rgbx_gen75,
- sizeof(pp_nv12_load_save_rgbx_gen75),
- NULL,
- },
-
- gen7_pp_plx_avs_initialize,
- },
-
-};
-
-static void
-pp_dndi_frame_store_reset(DNDIFrameStore *fs)
-{
- fs->obj_surface = NULL;
- fs->surface_id = VA_INVALID_ID;
- fs->is_scratch_surface = 0;
-}
-
-static inline void
-pp_dndi_frame_store_swap(DNDIFrameStore *fs1, DNDIFrameStore *fs2)
-{
- const DNDIFrameStore tmpfs = *fs1;
- *fs1 = *fs2;
- *fs2 = tmpfs;
-}
-
-static inline void
-pp_dndi_frame_store_clear(DNDIFrameStore *fs, VADriverContextP ctx)
-{
- if (fs->obj_surface && fs->is_scratch_surface) {
- VASurfaceID va_surface = fs->obj_surface->base.id;
- i965_DestroySurfaces(ctx, &va_surface, 1);
- }
- pp_dndi_frame_store_reset(fs);
-}
-
-static void
-pp_dndi_context_init(struct pp_dndi_context *dndi_ctx)
-{
- int i;
-
- memset(dndi_ctx, 0, sizeof(*dndi_ctx));
- for (i = 0; i < ARRAY_ELEMS(dndi_ctx->frame_store); i++)
- pp_dndi_frame_store_reset(&dndi_ctx->frame_store[i]);
-}
-
-static VAStatus
-pp_dndi_context_init_surface_params(struct pp_dndi_context *dndi_ctx,
- struct object_surface *obj_surface,
- const VAProcPipelineParameterBuffer *pipe_params,
- const VAProcFilterParameterBufferDeinterlacing *deint_params)
-{
- DNDIFrameStore *fs;
-
- dndi_ctx->is_di_enabled = 1;
- dndi_ctx->is_di_adv_enabled = 0;
- dndi_ctx->is_first_frame = 0;
- dndi_ctx->is_second_field = 0;
-
- /* Check whether we are deinterlacing the second field */
- if (dndi_ctx->is_di_enabled) {
- const unsigned int tff =
- !(deint_params->flags & VA_DEINTERLACING_BOTTOM_FIELD_FIRST);
- const unsigned int is_top_field =
- !(deint_params->flags & VA_DEINTERLACING_BOTTOM_FIELD);
-
- if ((tff ^ is_top_field) != 0) {
- fs = &dndi_ctx->frame_store[DNDI_FRAME_IN_CURRENT];
- if (fs->surface_id != obj_surface->base.id) {
- WARN_ONCE("invalid surface provided for second field\n");
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- }
- dndi_ctx->is_second_field = 1;
- }
- }
-
- /* Check whether we are deinterlacing the first frame */
- if (dndi_ctx->is_di_enabled) {
- switch (deint_params->algorithm) {
- case VAProcDeinterlacingBob:
- dndi_ctx->is_first_frame = 1;
- break;
- case VAProcDeinterlacingMotionAdaptive:
- case VAProcDeinterlacingMotionCompensated:
- fs = &dndi_ctx->frame_store[DNDI_FRAME_IN_CURRENT];
- if (fs->surface_id == VA_INVALID_ID)
- dndi_ctx->is_first_frame = 1;
- else if (dndi_ctx->is_second_field) {
- /* At this stage, we have already deinterlaced the
- first field successfully. So, the first frame flag
- is trigerred if the previous field was deinterlaced
- without reference frame */
- fs = &dndi_ctx->frame_store[DNDI_FRAME_IN_PREVIOUS];
- if (fs->surface_id == VA_INVALID_ID)
- dndi_ctx->is_first_frame = 1;
- }
- else {
- if (pipe_params->num_forward_references < 1 ||
- pipe_params->forward_references[0] == VA_INVALID_ID) {
- WARN_ONCE("A forward temporal reference is needed for Motion adaptive/compensated deinterlacing !!!\n");
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- }
- }
- dndi_ctx->is_di_adv_enabled = 1;
- break;
- default:
- WARN_ONCE("unsupported deinterlacing algorithm (%d)\n",
- deint_params->algorithm);
- return VA_STATUS_ERROR_UNSUPPORTED_FILTER;
- }
- }
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-pp_dndi_context_ensure_surfaces_storage(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context,
- struct object_surface *src_surface, struct object_surface *dst_surface)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- struct pp_dndi_context * const dndi_ctx = &pp_context->pp_dndi_context;
- unsigned int src_fourcc, dst_fourcc;
- unsigned int src_sampling, dst_sampling;
- unsigned int src_tiling, dst_tiling;
- unsigned int i, swizzle;
- VAStatus status;
-
- /* Determine input surface info. Always use NV12 Y-tiled */
- if (src_surface->bo) {
- src_fourcc = src_surface->fourcc;
- src_sampling = src_surface->subsampling;
- dri_bo_get_tiling(src_surface->bo, &src_tiling, &swizzle);
- src_tiling = !!src_tiling;
- }
- else {
- src_fourcc = VA_FOURCC_NV12;
- src_sampling = SUBSAMPLE_YUV420;
- src_tiling = 1;
- status = i965_check_alloc_surface_bo(ctx, src_surface,
- src_tiling, src_fourcc, src_sampling);
- if (status != VA_STATUS_SUCCESS)
- return status;
- }
-
- /* Determine output surface info. Always use NV12 Y-tiled */
- if (dst_surface->bo) {
- dst_fourcc = dst_surface->fourcc;
- dst_sampling = dst_surface->subsampling;
- dri_bo_get_tiling(dst_surface->bo, &dst_tiling, &swizzle);
- dst_tiling = !!dst_tiling;
- }
- else {
- dst_fourcc = VA_FOURCC_NV12;
- dst_sampling = SUBSAMPLE_YUV420;
- dst_tiling = 1;
- status = i965_check_alloc_surface_bo(ctx, dst_surface,
- dst_tiling, dst_fourcc, dst_sampling);
- if (status != VA_STATUS_SUCCESS)
- return status;
- }
-
- /* Create pipeline surfaces */
- for (i = 0; i < ARRAY_ELEMS(dndi_ctx->frame_store); i ++) {
- struct object_surface *obj_surface;
- VASurfaceID new_surface;
- unsigned int width, height;
-
- if (dndi_ctx->frame_store[i].obj_surface &&
- dndi_ctx->frame_store[i].obj_surface->bo)
- continue; // user allocated surface, not VPP internal
-
- if (dndi_ctx->frame_store[i].obj_surface) {
- obj_surface = dndi_ctx->frame_store[i].obj_surface;
- dndi_ctx->frame_store[i].is_scratch_surface = 0;
- } else {
- if (i <= DNDI_FRAME_IN_STMM) {
- width = src_surface->orig_width;
- height = src_surface->orig_height;
- }
- else {
- width = dst_surface->orig_width;
- height = dst_surface->orig_height;
- }
-
- status = i965_CreateSurfaces(ctx, width, height, VA_RT_FORMAT_YUV420,
- 1, &new_surface);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- obj_surface = SURFACE(new_surface);
- assert(obj_surface != NULL);
- dndi_ctx->frame_store[i].is_scratch_surface = 1;
- }
-
- if (i <= DNDI_FRAME_IN_PREVIOUS) {
- status = i965_check_alloc_surface_bo(ctx, obj_surface,
- src_tiling, src_fourcc, src_sampling);
- }
- else if (i == DNDI_FRAME_IN_STMM || i == DNDI_FRAME_OUT_STMM) {
- status = i965_check_alloc_surface_bo(ctx, obj_surface,
- 1, VA_FOURCC_Y800, SUBSAMPLE_YUV400);
- }
- else if (i >= DNDI_FRAME_OUT_CURRENT) {
- status = i965_check_alloc_surface_bo(ctx, obj_surface,
- dst_tiling, dst_fourcc, dst_sampling);
- }
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- dndi_ctx->frame_store[i].obj_surface = obj_surface;
- }
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-pp_dndi_context_ensure_surfaces(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context,
- struct object_surface *src_surface, struct object_surface *dst_surface)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- struct pp_dndi_context * const dndi_ctx = &pp_context->pp_dndi_context;
- DNDIFrameStore *ifs, *ofs;
- bool is_new_frame = false;
-
- /* Update the previous input surface */
- is_new_frame = dndi_ctx->frame_store[DNDI_FRAME_IN_CURRENT].surface_id !=
- src_surface->base.id;
- if (is_new_frame) {
- ifs = &dndi_ctx->frame_store[DNDI_FRAME_IN_PREVIOUS];
- ofs = &dndi_ctx->frame_store[DNDI_FRAME_IN_CURRENT];
- do {
- const VAProcPipelineParameterBuffer * const pipe_params =
- pp_context->pipeline_param;
- struct object_surface *obj_surface;
-
- if (pipe_params->num_forward_references < 1)
- break;
- if (pipe_params->forward_references[0] == VA_INVALID_ID)
- break;
-
- obj_surface = SURFACE(pipe_params->forward_references[0]);
- if (!obj_surface || obj_surface->base.id == ifs->surface_id)
- break;
-
- pp_dndi_frame_store_clear(ifs, ctx);
- if (obj_surface->base.id == ofs->surface_id) {
- *ifs = *ofs;
- pp_dndi_frame_store_reset(ofs);
- }
- else {
- ifs->obj_surface = obj_surface;
- ifs->surface_id = obj_surface->base.id;
- }
- } while (0);
- }
-
- /* Update the input surface */
- ifs = &dndi_ctx->frame_store[DNDI_FRAME_IN_CURRENT];
- pp_dndi_frame_store_clear(ifs, ctx);
- ifs->obj_surface = src_surface;
- ifs->surface_id = src_surface->base.id;
-
- /* Update the Spatial Temporal Motion Measure (STMM) surfaces */
- if (is_new_frame)
- pp_dndi_frame_store_swap(&dndi_ctx->frame_store[DNDI_FRAME_IN_STMM],
- &dndi_ctx->frame_store[DNDI_FRAME_OUT_STMM]);
-
- /* Update the output surfaces */
- ofs = &dndi_ctx->frame_store[DNDI_FRAME_OUT_CURRENT];
- if (dndi_ctx->is_di_adv_enabled && !dndi_ctx->is_first_frame) {
- pp_dndi_frame_store_swap(ofs,
- &dndi_ctx->frame_store[DNDI_FRAME_OUT_PREVIOUS]);
- if (!dndi_ctx->is_second_field)
- ofs = &dndi_ctx->frame_store[DNDI_FRAME_OUT_PREVIOUS];
- }
- pp_dndi_frame_store_clear(ofs, ctx);
- ofs->obj_surface = dst_surface;
- ofs->surface_id = dst_surface->base.id;
-
- return VA_STATUS_SUCCESS;
-}
-
-static int
-pp_get_surface_fourcc(VADriverContextP ctx, const struct i965_surface *surface)
-{
- 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
-pp_get_surface_size(VADriverContextP ctx, const struct i965_surface *surface, int *width, int *height)
-{
- if (surface->type == I965_SURFACE_TYPE_IMAGE) {
- struct object_image *obj_image = (struct object_image *)surface->base;
-
- *width = obj_image->image.width;
- *height = obj_image->image.height;
- } else {
- struct object_surface *obj_surface = (struct object_surface *)surface->base;
-
- *width = obj_surface->orig_width;
- *height = obj_surface->orig_height;
- }
-}
-
-static void
-pp_set_surface_tiling(struct i965_surface_state *ss, unsigned int tiling)
-{
- switch (tiling) {
- case I915_TILING_NONE:
- ss->ss3.tiled_surface = 0;
- ss->ss3.tile_walk = 0;
- break;
- case I915_TILING_X:
- ss->ss3.tiled_surface = 1;
- ss->ss3.tile_walk = I965_TILEWALK_XMAJOR;
- break;
- case I915_TILING_Y:
- ss->ss3.tiled_surface = 1;
- ss->ss3.tile_walk = I965_TILEWALK_YMAJOR;
- break;
- }
-}
-
-static void
-pp_set_surface2_tiling(struct i965_surface_state2 *ss, unsigned int tiling)
-{
- switch (tiling) {
- case I915_TILING_NONE:
- ss->ss2.tiled_surface = 0;
- ss->ss2.tile_walk = 0;
- break;
- case I915_TILING_X:
- ss->ss2.tiled_surface = 1;
- ss->ss2.tile_walk = I965_TILEWALK_XMAJOR;
- break;
- case I915_TILING_Y:
- ss->ss2.tiled_surface = 1;
- ss->ss2.tile_walk = I965_TILEWALK_YMAJOR;
- break;
- }
-}
-
-static void
-gen7_pp_set_surface_tiling(struct gen7_surface_state *ss, unsigned int tiling)
-{
- switch (tiling) {
- case I915_TILING_NONE:
- ss->ss0.tiled_surface = 0;
- ss->ss0.tile_walk = 0;
- break;
- case I915_TILING_X:
- ss->ss0.tiled_surface = 1;
- ss->ss0.tile_walk = I965_TILEWALK_XMAJOR;
- break;
- case I915_TILING_Y:
- ss->ss0.tiled_surface = 1;
- ss->ss0.tile_walk = I965_TILEWALK_YMAJOR;
- break;
- }
-}
-
-static void
-gen7_pp_set_surface2_tiling(struct gen7_surface_state2 *ss, unsigned int tiling)
-{
- switch (tiling) {
- case I915_TILING_NONE:
- ss->ss2.tiled_surface = 0;
- ss->ss2.tile_walk = 0;
- break;
- case I915_TILING_X:
- ss->ss2.tiled_surface = 1;
- ss->ss2.tile_walk = I965_TILEWALK_XMAJOR;
- break;
- case I915_TILING_Y:
- ss->ss2.tiled_surface = 1;
- ss->ss2.tile_walk = I965_TILEWALK_YMAJOR;
- break;
- }
-}
-
-static void
-ironlake_pp_interface_descriptor_table(struct i965_post_processing_context *pp_context)
-{
- struct i965_interface_descriptor *desc;
- dri_bo *bo;
- int pp_index = pp_context->current_pp;
-
- bo = pp_context->idrt.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- desc = bo->virtual;
- memset(desc, 0, sizeof(*desc));
- desc->desc0.grf_reg_blocks = 10;
- desc->desc0.kernel_start_pointer = pp_context->pp_modules[pp_index].kernel.bo->offset >> 6; /* reloc */
- desc->desc1.const_urb_entry_read_offset = 0;
- desc->desc1.const_urb_entry_read_len = 4; /* grf 1-4 */
- desc->desc2.sampler_state_pointer = pp_context->sampler_state_table.bo->offset >> 5;
- desc->desc2.sampler_count = 0;
- desc->desc3.binding_table_entry_count = 0;
- desc->desc3.binding_table_pointer = (BINDING_TABLE_OFFSET >> 5);
-
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- desc->desc0.grf_reg_blocks,
- offsetof(struct i965_interface_descriptor, desc0),
- pp_context->pp_modules[pp_index].kernel.bo);
-
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- desc->desc2.sampler_count << 2,
- offsetof(struct i965_interface_descriptor, desc2),
- pp_context->sampler_state_table.bo);
-
- dri_bo_unmap(bo);
- pp_context->idrt.num_interface_descriptors++;
-}
-
-static void
-ironlake_pp_vfe_state(struct i965_post_processing_context *pp_context)
-{
- struct i965_vfe_state *vfe_state;
- dri_bo *bo;
-
- bo = pp_context->vfe_state.bo;
- dri_bo_map(bo, 1);
- assert(bo->virtual);
- vfe_state = bo->virtual;
- memset(vfe_state, 0, sizeof(*vfe_state));
- vfe_state->vfe1.max_threads = pp_context->urb.num_vfe_entries - 1;
- vfe_state->vfe1.urb_entry_alloc_size = pp_context->urb.size_vfe_entry - 1;
- vfe_state->vfe1.num_urb_entries = pp_context->urb.num_vfe_entries;
- vfe_state->vfe1.vfe_mode = VFE_GENERIC_MODE;
- vfe_state->vfe1.children_present = 0;
- vfe_state->vfe2.interface_descriptor_base =
- pp_context->idrt.bo->offset >> 4; /* reloc */
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0,
- offsetof(struct i965_vfe_state, vfe2),
- pp_context->idrt.bo);
- dri_bo_unmap(bo);
-}
-
-static void
-ironlake_pp_upload_constants(struct i965_post_processing_context *pp_context)
-{
- unsigned char *constant_buffer;
- struct pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
-
- assert(sizeof(*pp_static_parameter) == 128);
- dri_bo_map(pp_context->curbe.bo, 1);
- assert(pp_context->curbe.bo->virtual);
- constant_buffer = pp_context->curbe.bo->virtual;
- memcpy(constant_buffer, pp_static_parameter, sizeof(*pp_static_parameter));
- dri_bo_unmap(pp_context->curbe.bo);
-}
-
-static void
-ironlake_pp_states_setup(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- ironlake_pp_interface_descriptor_table(pp_context);
- ironlake_pp_vfe_state(pp_context);
- ironlake_pp_upload_constants(pp_context);
-}
-
-static void
-ironlake_pp_pipeline_select(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
-
- BEGIN_BATCH(batch, 1);
- OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_MEDIA);
- ADVANCE_BATCH(batch);
-}
-
-static void
-ironlake_pp_urb_layout(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
- unsigned int vfe_fence, cs_fence;
-
- vfe_fence = pp_context->urb.cs_start;
- cs_fence = pp_context->urb.size;
-
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch, CMD_URB_FENCE | UF0_VFE_REALLOC | UF0_CS_REALLOC | 1);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch,
- (vfe_fence << UF2_VFE_FENCE_SHIFT) | /* VFE_SIZE */
- (cs_fence << UF2_CS_FENCE_SHIFT)); /* CS_SIZE */
- ADVANCE_BATCH(batch);
-}
-
-static void
-ironlake_pp_state_base_address(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
-
- BEGIN_BATCH(batch, 8);
- OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | 6);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_RELOC(batch, pp_context->surface_state_binding_table.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- ADVANCE_BATCH(batch);
-}
-
-static void
-ironlake_pp_state_pointers(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
-
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch, CMD_MEDIA_STATE_POINTERS | 1);
- OUT_BATCH(batch, 0);
- OUT_RELOC(batch, pp_context->vfe_state.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-ironlake_pp_cs_urb_layout(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, CMD_CS_URB_STATE | 0);
- OUT_BATCH(batch,
- ((pp_context->urb.size_cs_entry - 1) << 4) | /* URB Entry Allocation Size */
- (pp_context->urb.num_cs_entries << 0)); /* Number of URB Entries */
- ADVANCE_BATCH(batch);
-}
-
-static void
-ironlake_pp_constant_buffer(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, CMD_CONSTANT_BUFFER | (1 << 8) | (2 - 2));
- OUT_RELOC(batch, pp_context->curbe.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- pp_context->urb.size_cs_entry - 1);
- ADVANCE_BATCH(batch);
-}
-
-static void
-ironlake_pp_object_walker(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
- int x, x_steps, y, y_steps;
- struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
-
- x_steps = pp_context->pp_x_steps(pp_context->private_context);
- y_steps = pp_context->pp_y_steps(pp_context->private_context);
-
- for (y = 0; y < y_steps; y++) {
- for (x = 0; x < x_steps; x++) {
- if (!pp_context->pp_set_block_parameter(pp_context, x, y)) {
- BEGIN_BATCH(batch, 20);
- OUT_BATCH(batch, CMD_MEDIA_OBJECT | 18);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0); /* no indirect data */
- OUT_BATCH(batch, 0);
-
- /* inline data grf 5-6 */
- assert(sizeof(*pp_inline_parameter) == 64);
- intel_batchbuffer_data(batch, pp_inline_parameter, sizeof(*pp_inline_parameter));
-
- ADVANCE_BATCH(batch);
- }
- }
- }
-}
-
-static void
-ironlake_pp_pipeline_setup(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- ironlake_pp_pipeline_select(ctx, pp_context);
- ironlake_pp_state_base_address(ctx, pp_context);
- ironlake_pp_state_pointers(ctx, pp_context);
- ironlake_pp_urb_layout(ctx, pp_context);
- ironlake_pp_cs_urb_layout(ctx, pp_context);
- ironlake_pp_constant_buffer(ctx, pp_context);
- ironlake_pp_object_walker(ctx, pp_context);
- intel_batchbuffer_end_atomic(batch);
-}
-
-// update u/v offset when the surface format are packed yuv
-static void i965_update_src_surface_static_parameter(
- VADriverContextP ctx,
- struct i965_post_processing_context *pp_context,
- const struct i965_surface *surface)
-{
- struct pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
- int fourcc = pp_get_surface_fourcc(ctx, surface);
-
- switch (fourcc) {
- case VA_FOURCC_YUY2:
- pp_static_parameter->grf1.source_packed_u_offset = 1;
- pp_static_parameter->grf1.source_packed_v_offset = 3;
- break;
- case VA_FOURCC_UYVY:
- pp_static_parameter->grf1.source_packed_y_offset = 1;
- pp_static_parameter->grf1.source_packed_v_offset = 2;
- break;
- case VA_FOURCC_BGRX:
- case VA_FOURCC_BGRA:
- pp_static_parameter->grf1.source_rgb_layout = 0;
- break;
- case VA_FOURCC_RGBX:
- case VA_FOURCC_RGBA:
- pp_static_parameter->grf1.source_rgb_layout = 1;
- break;
- default:
- break;
- }
-
-}
-
-static void i965_update_dst_surface_static_parameter(
- VADriverContextP ctx,
- struct i965_post_processing_context *pp_context,
- const struct i965_surface *surface)
-{
- struct pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
- int fourcc = pp_get_surface_fourcc(ctx, surface);
-
- switch (fourcc) {
- case VA_FOURCC_YUY2:
- pp_static_parameter->grf1.r1_2.load_and_save.destination_packed_u_offset = 1;
- pp_static_parameter->grf1.r1_2.load_and_save.destination_packed_v_offset = 3;
- break;
- case VA_FOURCC_UYVY:
- pp_static_parameter->grf1.r1_2.load_and_save.destination_packed_y_offset = 1;
- pp_static_parameter->grf1.r1_2.load_and_save.destination_packed_v_offset = 2;
- break;
- case VA_FOURCC_BGRX:
- case VA_FOURCC_BGRA:
- pp_static_parameter->grf1.r1_2.csc.destination_rgb_layout = 0;
- break;
- case VA_FOURCC_RGBX:
- case VA_FOURCC_RGBA:
- pp_static_parameter->grf1.r1_2.csc.destination_rgb_layout = 1;
- break;
- default:
- break;
- }
-
-}
-
-static void
-i965_pp_set_surface_state(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- dri_bo *surf_bo, unsigned long surf_bo_offset,
- int width, int height, int pitch, int format,
- int index, int is_target)
-{
- struct i965_surface_state *ss;
- dri_bo *ss_bo;
- unsigned int tiling;
- unsigned int swizzle;
-
- dri_bo_get_tiling(surf_bo, &tiling, &swizzle);
- ss_bo = pp_context->surface_state_binding_table.bo;
- assert(ss_bo);
-
- dri_bo_map(ss_bo, True);
- assert(ss_bo->virtual);
- ss = (struct i965_surface_state *)((char *)ss_bo->virtual + SURFACE_STATE_OFFSET(index));
- memset(ss, 0, sizeof(*ss));
- ss->ss0.surface_type = I965_SURFACE_2D;
- ss->ss0.surface_format = format;
- ss->ss1.base_addr = surf_bo->offset + surf_bo_offset;
- ss->ss2.width = width - 1;
- ss->ss2.height = height - 1;
- ss->ss3.pitch = pitch - 1;
- pp_set_surface_tiling(ss, tiling);
- dri_bo_emit_reloc(ss_bo,
- I915_GEM_DOMAIN_RENDER, is_target ? I915_GEM_DOMAIN_RENDER : 0,
- surf_bo_offset,
- SURFACE_STATE_OFFSET(index) + offsetof(struct i965_surface_state, ss1),
- surf_bo);
- ((unsigned int *)((char *)ss_bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
- dri_bo_unmap(ss_bo);
-}
-
-static void
-i965_pp_set_surface2_state(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- dri_bo *surf_bo, unsigned long surf_bo_offset,
- int width, int height, int wpitch,
- int xoffset, int yoffset,
- int format, int interleave_chroma,
- int index)
-{
- struct i965_surface_state2 *ss2;
- dri_bo *ss2_bo;
- unsigned int tiling;
- unsigned int swizzle;
-
- dri_bo_get_tiling(surf_bo, &tiling, &swizzle);
- ss2_bo = pp_context->surface_state_binding_table.bo;
- assert(ss2_bo);
-
- dri_bo_map(ss2_bo, True);
- assert(ss2_bo->virtual);
- ss2 = (struct i965_surface_state2 *)((char *)ss2_bo->virtual + SURFACE_STATE_OFFSET(index));
- memset(ss2, 0, sizeof(*ss2));
- ss2->ss0.surface_base_address = surf_bo->offset + surf_bo_offset;
- ss2->ss1.cbcr_pixel_offset_v_direction = 0;
- ss2->ss1.width = width - 1;
- ss2->ss1.height = height - 1;
- ss2->ss2.pitch = wpitch - 1;
- ss2->ss2.interleave_chroma = interleave_chroma;
- ss2->ss2.surface_format = format;
- ss2->ss3.x_offset_for_cb = xoffset;
- ss2->ss3.y_offset_for_cb = yoffset;
- pp_set_surface2_tiling(ss2, tiling);
- dri_bo_emit_reloc(ss2_bo,
- I915_GEM_DOMAIN_RENDER, 0,
- surf_bo_offset,
- SURFACE_STATE_OFFSET(index) + offsetof(struct i965_surface_state2, ss0),
- surf_bo);
- ((unsigned int *)((char *)ss2_bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
- dri_bo_unmap(ss2_bo);
-}
-
-static void
-gen7_pp_set_surface_state(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- dri_bo *surf_bo, unsigned long surf_bo_offset,
- int width, int height, int pitch, int format,
- int index, int is_target)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- struct gen7_surface_state *ss;
- dri_bo *ss_bo;
- unsigned int tiling;
- unsigned int swizzle;
-
- dri_bo_get_tiling(surf_bo, &tiling, &swizzle);
- ss_bo = pp_context->surface_state_binding_table.bo;
- assert(ss_bo);
-
- dri_bo_map(ss_bo, True);
- assert(ss_bo->virtual);
- ss = (struct gen7_surface_state *)((char *)ss_bo->virtual + SURFACE_STATE_OFFSET(index));
- memset(ss, 0, sizeof(*ss));
- ss->ss0.surface_type = I965_SURFACE_2D;
- ss->ss0.surface_format = format;
- ss->ss1.base_addr = surf_bo->offset + surf_bo_offset;
- ss->ss2.width = width - 1;
- ss->ss2.height = height - 1;
- ss->ss3.pitch = pitch - 1;
- gen7_pp_set_surface_tiling(ss, tiling);
- if (IS_HASWELL(i965->intel.device_info))
- gen7_render_set_surface_scs(ss);
- dri_bo_emit_reloc(ss_bo,
- I915_GEM_DOMAIN_RENDER, is_target ? I915_GEM_DOMAIN_RENDER : 0,
- surf_bo_offset,
- SURFACE_STATE_OFFSET(index) + offsetof(struct gen7_surface_state, ss1),
- surf_bo);
- ((unsigned int *)((char *)ss_bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
- dri_bo_unmap(ss_bo);
-}
-
-static void
-gen7_pp_set_surface2_state(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- dri_bo *surf_bo, unsigned long surf_bo_offset,
- int width, int height, int wpitch,
- int xoffset, int yoffset,
- int format, int interleave_chroma,
- int index)
-{
- struct gen7_surface_state2 *ss2;
- dri_bo *ss2_bo;
- unsigned int tiling;
- unsigned int swizzle;
-
- dri_bo_get_tiling(surf_bo, &tiling, &swizzle);
- ss2_bo = pp_context->surface_state_binding_table.bo;
- assert(ss2_bo);
-
- dri_bo_map(ss2_bo, True);
- assert(ss2_bo->virtual);
- ss2 = (struct gen7_surface_state2 *)((char *)ss2_bo->virtual + SURFACE_STATE_OFFSET(index));
- memset(ss2, 0, sizeof(*ss2));
- ss2->ss0.surface_base_address = surf_bo->offset + surf_bo_offset;
- ss2->ss1.cbcr_pixel_offset_v_direction = 0;
- ss2->ss1.width = width - 1;
- ss2->ss1.height = height - 1;
- ss2->ss2.pitch = wpitch - 1;
- ss2->ss2.interleave_chroma = interleave_chroma;
- ss2->ss2.surface_format = format;
- ss2->ss3.x_offset_for_cb = xoffset;
- ss2->ss3.y_offset_for_cb = yoffset;
- gen7_pp_set_surface2_tiling(ss2, tiling);
- dri_bo_emit_reloc(ss2_bo,
- I915_GEM_DOMAIN_RENDER, 0,
- surf_bo_offset,
- SURFACE_STATE_OFFSET(index) + offsetof(struct gen7_surface_state2, ss0),
- surf_bo);
- ((unsigned int *)((char *)ss2_bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
- dri_bo_unmap(ss2_bo);
-}
-
-static void
-pp_set_media_rw_message_surface(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *surface,
- int base_index, int is_target,
- int *width, int *height, int *pitch, int *offset)
-{
- struct object_surface *obj_surface;
- struct object_image *obj_image;
- dri_bo *bo;
- int fourcc = pp_get_surface_fourcc(ctx, surface);
- const int Y = 0;
- const int U = ((fourcc == VA_FOURCC_YV12) ||
- (fourcc == VA_FOURCC_YV16))
- ? 2 : 1;
- const int V = ((fourcc == VA_FOURCC_YV12) ||
- (fourcc == VA_FOURCC_YV16))
- ? 1 : 2;
- const int UV = 1;
- int interleaved_uv = fourcc == VA_FOURCC_NV12;
- int packed_yuv = (fourcc == VA_FOURCC_YUY2 || fourcc == VA_FOURCC_UYVY);
- int full_packed_format = (fourcc == VA_FOURCC_RGBA ||
- fourcc == VA_FOURCC_RGBX ||
- fourcc == VA_FOURCC_BGRA ||
- fourcc == VA_FOURCC_BGRX);
- int scale_factor_of_1st_plane_width_in_byte = 1;
-
- if (surface->type == I965_SURFACE_TYPE_SURFACE) {
- obj_surface = (struct object_surface *)surface->base;
- bo = obj_surface->bo;
- width[0] = obj_surface->orig_width;
- height[0] = obj_surface->orig_height;
- pitch[0] = obj_surface->width;
- offset[0] = 0;
-
- if (full_packed_format) {
- scale_factor_of_1st_plane_width_in_byte = 4;
- }
- else if (packed_yuv ) {
- scale_factor_of_1st_plane_width_in_byte = 2;
- }
- else if (interleaved_uv) {
- width[1] = obj_surface->orig_width;
- height[1] = obj_surface->orig_height / 2;
- pitch[1] = obj_surface->width;
- offset[1] = offset[0] + obj_surface->width * obj_surface->height;
- } else {
- width[1] = obj_surface->orig_width / 2;
- height[1] = obj_surface->orig_height / 2;
- pitch[1] = obj_surface->width / 2;
- offset[1] = offset[0] + obj_surface->width * obj_surface->height;
- width[2] = obj_surface->orig_width / 2;
- height[2] = obj_surface->orig_height / 2;
- pitch[2] = obj_surface->width / 2;
- offset[2] = offset[1] + (obj_surface->width / 2) * (obj_surface->height / 2);
- }
- } else {
- obj_image = (struct object_image *)surface->base;
- bo = obj_image->bo;
- width[0] = obj_image->image.width;
- height[0] = obj_image->image.height;
- pitch[0] = obj_image->image.pitches[0];
- offset[0] = obj_image->image.offsets[0];
-
- if (full_packed_format) {
- scale_factor_of_1st_plane_width_in_byte = 4;
- }
- else if (packed_yuv ) {
- scale_factor_of_1st_plane_width_in_byte = 2;
- }
- else if (interleaved_uv) {
- width[1] = obj_image->image.width;
- height[1] = obj_image->image.height / 2;
- pitch[1] = obj_image->image.pitches[1];
- offset[1] = obj_image->image.offsets[1];
- } else {
- width[1] = obj_image->image.width / 2;
- height[1] = obj_image->image.height / 2;
- pitch[1] = obj_image->image.pitches[1];
- offset[1] = obj_image->image.offsets[1];
- width[2] = obj_image->image.width / 2;
- height[2] = obj_image->image.height / 2;
- pitch[2] = obj_image->image.pitches[2];
- offset[2] = obj_image->image.offsets[2];
- if (fourcc == VA_FOURCC_YV16) {
- width[1] = obj_image->image.width / 2;
- height[1] = obj_image->image.height;
- width[2] = obj_image->image.width / 2;
- height[2] = obj_image->image.height;
- }
- }
- }
-
- /* Y surface */
- i965_pp_set_surface_state(ctx, pp_context,
- bo, offset[Y],
- ALIGN(width[Y] *scale_factor_of_1st_plane_width_in_byte, 4) / 4, height[Y], pitch[Y], I965_SURFACEFORMAT_R8_UNORM,
- base_index, is_target);
-
- if (!packed_yuv && !full_packed_format) {
- if (interleaved_uv) {
- i965_pp_set_surface_state(ctx, pp_context,
- bo, offset[UV],
- ALIGN(width[UV], 4) / 4, height[UV], pitch[UV], I965_SURFACEFORMAT_R8_UNORM,
- base_index + 1, is_target);
- } else {
- /* U surface */
- i965_pp_set_surface_state(ctx, pp_context,
- bo, offset[U],
- ALIGN(width[U], 4) / 4, height[U], pitch[U], I965_SURFACEFORMAT_R8_UNORM,
- base_index + 1, is_target);
-
- /* V surface */
- i965_pp_set_surface_state(ctx, pp_context,
- bo, offset[V],
- ALIGN(width[V], 4) / 4, height[V], pitch[V], I965_SURFACEFORMAT_R8_UNORM,
- base_index + 2, is_target);
- }
- }
-
-}
-
-static void
-gen7_pp_set_media_rw_message_surface(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *surface,
- int base_index, int is_target,
- const VARectangle *rect,
- int *width, int *height, int *pitch, int *offset)
-{
- struct object_surface *obj_surface;
- struct object_image *obj_image;
- dri_bo *bo;
- int fourcc = pp_get_surface_fourcc(ctx, surface);
- const i965_fourcc_info *fourcc_info = get_fourcc_info(fourcc);
-
- if (fourcc_info == NULL)
- return;
-
- if (surface->type == I965_SURFACE_TYPE_SURFACE) {
- obj_surface = (struct object_surface *)surface->base;
- bo = obj_surface->bo;
- 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;
- offset[0] = 0;
-
- if (fourcc_info->num_planes == 1 && is_target)
- width[0] = width[0] * (fourcc_info->bpp[0] / 8); /* surface format is R8 */
-
- width[1] = MIN(rect->x / fourcc_info->hfactor + rect->width / fourcc_info->hfactor, obj_surface->cb_cr_width);
- height[1] = MIN(rect->y / fourcc_info->vfactor + rect->height / fourcc_info->vfactor, obj_surface->cb_cr_height);
- pitch[1] = obj_surface->cb_cr_pitch;
- offset[1] = obj_surface->y_cb_offset * obj_surface->width;
-
- width[2] = MIN(rect->x / fourcc_info->hfactor + rect->width / fourcc_info->hfactor, obj_surface->cb_cr_width);
- height[2] = MIN(rect->y / fourcc_info->vfactor + rect->height / fourcc_info->vfactor, obj_surface->cb_cr_height);
- pitch[2] = obj_surface->cb_cr_pitch;
- offset[2] = obj_surface->y_cr_offset * obj_surface->width;
- } else {
- int U = 0, V = 0;
-
- /* FIXME: add support for ARGB/ABGR image */
- obj_image = (struct object_image *)surface->base;
- bo = obj_image->bo;
- 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];
- offset[0] = obj_image->image.offsets[0];
-
- if (fourcc_info->num_planes == 1) {
- if (is_target)
- width[0] = width[0] * (fourcc_info->bpp[0] / 8); /* surface format is R8 */
- } else if (fourcc_info->num_planes == 2) {
- U = 1, V = 1;
- } else {
- assert(fourcc_info->num_components == 3);
-
- U = fourcc_info->components[1].plane;
- V = fourcc_info->components[2].plane;
- assert((U == 1 && V == 2) ||
- (U == 2 && V == 1));
- }
-
- /* Always set width/height although they aren't used for fourcc_info->num_planes == 1 */
- width[1] = MIN(rect->x / fourcc_info->hfactor + rect->width / fourcc_info->hfactor, obj_image->image.width / fourcc_info->hfactor);
- height[1] = MIN(rect->y / fourcc_info->vfactor + rect->height / fourcc_info->vfactor, obj_image->image.height / fourcc_info->vfactor);
- pitch[1] = obj_image->image.pitches[U];
- offset[1] = obj_image->image.offsets[U];
-
- width[2] = MIN(rect->x / fourcc_info->hfactor + rect->width / fourcc_info->hfactor, obj_image->image.width / fourcc_info->hfactor);
- height[2] = MIN(rect->y / fourcc_info->vfactor + rect->height / fourcc_info->vfactor, obj_image->image.height / fourcc_info->vfactor);
- pitch[2] = obj_image->image.pitches[V];
- offset[2] = obj_image->image.offsets[V];
- }
-
- if (is_target) {
- gen7_pp_set_surface_state(ctx, pp_context,
- bo, 0,
- ALIGN(width[0], 4) / 4, height[0], pitch[0],
- I965_SURFACEFORMAT_R8_UINT,
- base_index, 1);
-
- if (fourcc_info->num_planes == 2) {
- gen7_pp_set_surface_state(ctx, pp_context,
- bo, offset[1],
- ALIGN(width[1], 2) / 2, height[1], pitch[1],
- I965_SURFACEFORMAT_R8G8_SINT,
- base_index + 1, 1);
- } else if (fourcc_info->num_planes == 3) {
- gen7_pp_set_surface_state(ctx, pp_context,
- bo, offset[1],
- ALIGN(width[1], 4) / 4, height[1], pitch[1],
- I965_SURFACEFORMAT_R8_SINT,
- base_index + 1, 1);
- gen7_pp_set_surface_state(ctx, pp_context,
- bo, offset[2],
- ALIGN(width[2], 4) / 4, height[2], pitch[2],
- I965_SURFACEFORMAT_R8_SINT,
- base_index + 2, 1);
- }
-
- if (fourcc_info->format == I965_COLOR_RGB) {
- struct gen7_pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
- /* the format is MSB: X-B-G-R */
- pp_static_parameter->grf2.save_avs_rgb_swap = 0;
- if ((fourcc == VA_FOURCC_BGRA) ||
- (fourcc == VA_FOURCC_BGRX)) {
- /* It is stored as MSB: X-R-G-B */
- pp_static_parameter->grf2.save_avs_rgb_swap = 1;
- }
- }
- } else {
- int format0 = SURFACE_FORMAT_Y8_UNORM;
-
- switch (fourcc) {
- case VA_FOURCC_YUY2:
- format0 = SURFACE_FORMAT_YCRCB_NORMAL;
- break;
-
- case VA_FOURCC_UYVY:
- format0 = SURFACE_FORMAT_YCRCB_SWAPY;
- break;
-
- default:
- break;
- }
-
- if (fourcc_info->format == I965_COLOR_RGB) {
- struct gen7_pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
- /* Only R8G8B8A8_UNORM is supported for BGRX or RGBX */
- format0 = SURFACE_FORMAT_R8G8B8A8_UNORM;
- pp_static_parameter->grf2.src_avs_rgb_swap = 0;
- if ((fourcc == VA_FOURCC_BGRA) ||
- (fourcc == VA_FOURCC_BGRX)) {
- pp_static_parameter->grf2.src_avs_rgb_swap = 1;
- }
- }
-
- gen7_pp_set_surface2_state(ctx, pp_context,
- bo, offset[0],
- width[0], height[0], pitch[0],
- 0, 0,
- format0, 0,
- base_index);
-
- if (fourcc_info->num_planes == 2) {
- gen7_pp_set_surface2_state(ctx, pp_context,
- bo, offset[1],
- width[1], height[1], pitch[1],
- 0, 0,
- SURFACE_FORMAT_R8B8_UNORM, 0,
- base_index + 1);
- } else if (fourcc_info->num_planes == 3) {
- gen7_pp_set_surface2_state(ctx, pp_context,
- bo, offset[1],
- width[1], height[1], pitch[1],
- 0, 0,
- SURFACE_FORMAT_R8_UNORM, 0,
- base_index + 1);
- gen7_pp_set_surface2_state(ctx, pp_context,
- bo, offset[2],
- width[2], height[2], pitch[2],
- 0, 0,
- SURFACE_FORMAT_R8_UNORM, 0,
- base_index + 2);
- }
- }
-}
-
-static int
-pp_null_x_steps(void *private_context)
-{
- return 1;
-}
-
-static int
-pp_null_y_steps(void *private_context)
-{
- return 1;
-}
-
-static int
-pp_null_set_block_parameter(struct i965_post_processing_context *pp_context, int x, int y)
-{
- return 0;
-}
-
-static VAStatus
-pp_null_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param)
-{
- /* private function & data */
- pp_context->pp_x_steps = pp_null_x_steps;
- pp_context->pp_y_steps = pp_null_y_steps;
- pp_context->private_context = NULL;
- pp_context->pp_set_block_parameter = pp_null_set_block_parameter;
-
- dst_surface->flags = src_surface->flags;
-
- return VA_STATUS_SUCCESS;
-}
-
-static int
-pp_load_save_x_steps(void *private_context)
-{
- return 1;
-}
-
-static int
-pp_load_save_y_steps(void *private_context)
-{
- struct pp_load_save_context *pp_load_save_context = private_context;
-
- return pp_load_save_context->dest_h / 8;
-}
-
-static int
-pp_load_save_set_block_parameter(struct i965_post_processing_context *pp_context, int x, int y)
-{
- struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
- struct pp_load_save_context *pp_load_save_context = (struct pp_load_save_context *)pp_context->private_context;
-
- pp_inline_parameter->grf5.destination_block_horizontal_origin = x * 16 + pp_load_save_context->dest_x;
- pp_inline_parameter->grf5.destination_block_vertical_origin = y * 8 + pp_load_save_context->dest_y;
-
- return 0;
-}
-
-static void calculate_boundary_block_mask(struct i965_post_processing_context *pp_context, const VARectangle *dst_rect)
-{
- int i;
- /* x offset of dest surface must be dword aligned.
- * so we have to extend dst surface on left edge, and mask out pixels not interested
- */
- if (dst_rect->x%GPU_ASM_X_OFFSET_ALIGNMENT) {
- pp_context->block_horizontal_mask_left = 0;
- for (i=dst_rect->x%GPU_ASM_X_OFFSET_ALIGNMENT; i<GPU_ASM_BLOCK_WIDTH; i++)
- {
- pp_context->block_horizontal_mask_left |= 1<<i;
- }
- }
- else {
- pp_context->block_horizontal_mask_left = 0xffff;
- }
-
- int dst_width_adjust = dst_rect->width + dst_rect->x%GPU_ASM_X_OFFSET_ALIGNMENT;
- if (dst_width_adjust%GPU_ASM_BLOCK_WIDTH){
- pp_context->block_horizontal_mask_right = (1 << (dst_width_adjust%GPU_ASM_BLOCK_WIDTH)) - 1;
- }
- else {
- pp_context->block_horizontal_mask_right = 0xffff;
- }
-
- if (dst_rect->height%GPU_ASM_BLOCK_HEIGHT){
- pp_context->block_vertical_mask_bottom = (1 << (dst_rect->height%GPU_ASM_BLOCK_HEIGHT)) - 1;
- }
- else {
- pp_context->block_vertical_mask_bottom = 0xff;
- }
-
-}
-static VAStatus
-pp_plx_load_save_plx_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param)
-{
- struct pp_load_save_context *pp_load_save_context = (struct pp_load_save_context *)&pp_context->pp_load_save_context;
- struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
- struct pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
- int width[3], height[3], pitch[3], offset[3];
-
- /* source surface */
- pp_set_media_rw_message_surface(ctx, pp_context, src_surface, 1, 0,
- width, height, pitch, offset);
-
- /* destination surface */
- pp_set_media_rw_message_surface(ctx, pp_context, dst_surface, 7, 1,
- width, height, pitch, offset);
-
- /* private function & data */
- pp_context->pp_x_steps = pp_load_save_x_steps;
- pp_context->pp_y_steps = pp_load_save_y_steps;
- pp_context->private_context = &pp_context->pp_load_save_context;
- pp_context->pp_set_block_parameter = pp_load_save_set_block_parameter;
-
- int dst_left_edge_extend = dst_rect->x%GPU_ASM_X_OFFSET_ALIGNMENT;;
- pp_load_save_context->dest_x = dst_rect->x - dst_left_edge_extend;
- pp_load_save_context->dest_y = dst_rect->y;
- pp_load_save_context->dest_h = ALIGN(dst_rect->height, 8);
- pp_load_save_context->dest_w = ALIGN(dst_rect->width+dst_left_edge_extend, 16);
-
- pp_inline_parameter->grf5.block_count_x = pp_load_save_context->dest_w / 16; /* 1 x N */
- pp_inline_parameter->grf5.number_blocks = pp_load_save_context->dest_w / 16;
-
- pp_static_parameter->grf3.horizontal_origin_offset = src_rect->x;
- pp_static_parameter->grf3.vertical_origin_offset = src_rect->y;
-
- // update u/v offset for packed yuv
- i965_update_src_surface_static_parameter (ctx, pp_context, src_surface);
- i965_update_dst_surface_static_parameter (ctx, pp_context, dst_surface);
-
- dst_surface->flags = src_surface->flags;
-
- return VA_STATUS_SUCCESS;
-}
-
-static int
-pp_scaling_x_steps(void *private_context)
-{
- return 1;
-}
-
-static int
-pp_scaling_y_steps(void *private_context)
-{
- struct pp_scaling_context *pp_scaling_context = private_context;
-
- return pp_scaling_context->dest_h / 8;
-}
-
-static int
-pp_scaling_set_block_parameter(struct i965_post_processing_context *pp_context, int x, int y)
-{
- struct pp_scaling_context *pp_scaling_context = (struct pp_scaling_context *)pp_context->private_context;
- struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
- struct pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
- float src_x_steping = pp_inline_parameter->grf5.normalized_video_x_scaling_step;
- float src_y_steping = pp_static_parameter->grf1.r1_6.normalized_video_y_scaling_step;
-
- pp_inline_parameter->grf5.r5_1.source_surface_block_normalized_horizontal_origin = src_x_steping * x * 16 + pp_scaling_context->src_normalized_x;
- pp_inline_parameter->grf5.source_surface_block_normalized_vertical_origin = src_y_steping * y * 8 + pp_scaling_context->src_normalized_y;
- pp_inline_parameter->grf5.destination_block_horizontal_origin = x * 16 + pp_scaling_context->dest_x;
- pp_inline_parameter->grf5.destination_block_vertical_origin = y * 8 + pp_scaling_context->dest_y;
-
- return 0;
-}
-
-static VAStatus
-pp_nv12_scaling_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param)
-{
- struct pp_scaling_context *pp_scaling_context = (struct pp_scaling_context *)&pp_context->pp_scaling_context;
- struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
- struct pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
- struct object_surface *obj_surface;
- struct i965_sampler_state *sampler_state;
- int in_w, in_h, in_wpitch, in_hpitch;
- int out_w, out_h, out_wpitch, out_hpitch;
-
- /* source surface */
- obj_surface = (struct object_surface *)src_surface->base;
- in_w = obj_surface->orig_width;
- in_h = obj_surface->orig_height;
- in_wpitch = obj_surface->width;
- in_hpitch = obj_surface->height;
-
- /* source Y surface index 1 */
- i965_pp_set_surface_state(ctx, pp_context,
- obj_surface->bo, 0,
- in_w, in_h, in_wpitch, I965_SURFACEFORMAT_R8_UNORM,
- 1, 0);
-
- /* source UV surface index 2 */
- i965_pp_set_surface_state(ctx, pp_context,
- obj_surface->bo, in_wpitch * in_hpitch,
- ALIGN(in_w, 2) / 2, in_h / 2, in_wpitch, I965_SURFACEFORMAT_R8G8_UNORM,
- 2, 0);
-
- /* destination surface */
- obj_surface = (struct object_surface *)dst_surface->base;
- out_w = obj_surface->orig_width;
- out_h = obj_surface->orig_height;
- out_wpitch = obj_surface->width;
- out_hpitch = obj_surface->height;
-
- /* destination Y surface index 7 */
- i965_pp_set_surface_state(ctx, pp_context,
- obj_surface->bo, 0,
- ALIGN(out_w, 4) / 4, out_h, out_wpitch, I965_SURFACEFORMAT_R8_UNORM,
- 7, 1);
-
- /* destination UV surface index 8 */
- i965_pp_set_surface_state(ctx, pp_context,
- obj_surface->bo, out_wpitch * out_hpitch,
- ALIGN(out_w, 4) / 4, out_h / 2, out_wpitch, I965_SURFACEFORMAT_R8G8_UNORM,
- 8, 1);
-
- /* sampler state */
- dri_bo_map(pp_context->sampler_state_table.bo, True);
- assert(pp_context->sampler_state_table.bo->virtual);
- sampler_state = pp_context->sampler_state_table.bo->virtual;
-
- /* SIMD16 Y index 1 */
- sampler_state[1].ss0.min_filter = I965_MAPFILTER_LINEAR;
- sampler_state[1].ss0.mag_filter = I965_MAPFILTER_LINEAR;
- sampler_state[1].ss1.r_wrap_mode = I965_TEXCOORDMODE_CLAMP;
- sampler_state[1].ss1.s_wrap_mode = I965_TEXCOORDMODE_CLAMP;
- sampler_state[1].ss1.t_wrap_mode = I965_TEXCOORDMODE_CLAMP;
-
- /* SIMD16 UV index 2 */
- sampler_state[2].ss0.min_filter = I965_MAPFILTER_LINEAR;
- sampler_state[2].ss0.mag_filter = I965_MAPFILTER_LINEAR;
- sampler_state[2].ss1.r_wrap_mode = I965_TEXCOORDMODE_CLAMP;
- sampler_state[2].ss1.s_wrap_mode = I965_TEXCOORDMODE_CLAMP;
- sampler_state[2].ss1.t_wrap_mode = I965_TEXCOORDMODE_CLAMP;
-
- dri_bo_unmap(pp_context->sampler_state_table.bo);
-
- /* private function & data */
- pp_context->pp_x_steps = pp_scaling_x_steps;
- pp_context->pp_y_steps = pp_scaling_y_steps;
- pp_context->private_context = &pp_context->pp_scaling_context;
- pp_context->pp_set_block_parameter = pp_scaling_set_block_parameter;
-
- int dst_left_edge_extend = dst_rect->x%GPU_ASM_X_OFFSET_ALIGNMENT;
- float src_left_edge_extend = (float)dst_left_edge_extend*src_rect->width/dst_rect->width;
- pp_scaling_context->dest_x = dst_rect->x - dst_left_edge_extend;
- pp_scaling_context->dest_y = dst_rect->y;
- pp_scaling_context->dest_w = ALIGN(dst_rect->width + dst_left_edge_extend, 16);
- pp_scaling_context->dest_h = ALIGN(dst_rect->height, 8);
- pp_scaling_context->src_normalized_x = (float)(src_rect->x - src_left_edge_extend)/ in_w;
- pp_scaling_context->src_normalized_y = (float)src_rect->y / in_h;
-
- pp_static_parameter->grf1.r1_6.normalized_video_y_scaling_step = (float) src_rect->height / in_h / dst_rect->height;
-
- pp_inline_parameter->grf5.normalized_video_x_scaling_step = (float) (src_rect->width + src_left_edge_extend)/ in_w / (dst_rect->width + dst_left_edge_extend);
- pp_inline_parameter->grf5.block_count_x = pp_scaling_context->dest_w / 16; /* 1 x N */
- pp_inline_parameter->grf5.number_blocks = pp_scaling_context->dest_w / 16;
-
- dst_surface->flags = src_surface->flags;
-
- return VA_STATUS_SUCCESS;
-}
-
-static int
-pp_avs_x_steps(void *private_context)
-{
- struct pp_avs_context *pp_avs_context = private_context;
-
- return pp_avs_context->dest_w / 16;
-}
-
-static int
-pp_avs_y_steps(void *private_context)
-{
- return 1;
-}
-
-static int
-pp_avs_set_block_parameter(struct i965_post_processing_context *pp_context, int x, int y)
-{
- struct pp_avs_context *pp_avs_context = (struct pp_avs_context *)pp_context->private_context;
- struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
- struct pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
- float src_x_steping, src_y_steping, video_step_delta;
- int tmp_w = ALIGN(pp_avs_context->dest_h * pp_avs_context->src_w / pp_avs_context->src_h, 16);
-
- if (pp_static_parameter->grf4.r4_2.avs.nlas == 0) {
- src_x_steping = pp_inline_parameter->grf5.normalized_video_x_scaling_step;
- pp_inline_parameter->grf5.r5_1.source_surface_block_normalized_horizontal_origin = src_x_steping * x * 16 + pp_avs_context->src_normalized_x;
- } else if (tmp_w >= pp_avs_context->dest_w) {
- pp_inline_parameter->grf5.normalized_video_x_scaling_step = 1.0 / tmp_w;
- pp_inline_parameter->grf6.video_step_delta = 0;
-
- if (x == 0) {
- pp_inline_parameter->grf5.r5_1.source_surface_block_normalized_horizontal_origin = (float)(tmp_w - pp_avs_context->dest_w) / tmp_w / 2 +
- pp_avs_context->src_normalized_x;
- } else {
- src_x_steping = pp_inline_parameter->grf5.normalized_video_x_scaling_step;
- video_step_delta = pp_inline_parameter->grf6.video_step_delta;
- pp_inline_parameter->grf5.r5_1.source_surface_block_normalized_horizontal_origin += src_x_steping * 16 +
- 16 * 15 * video_step_delta / 2;
- }
- } else {
- int n0, n1, n2, nls_left, nls_right;
- int factor_a = 5, factor_b = 4;
- float f;
-
- n0 = (pp_avs_context->dest_w - tmp_w) / (16 * 2);
- n1 = (pp_avs_context->dest_w - tmp_w) / 16 - n0;
- n2 = tmp_w / (16 * factor_a);
- nls_left = n0 + n2;
- nls_right = n1 + n2;
- f = (float) n2 * 16 / tmp_w;
-
- if (n0 < 5) {
- pp_inline_parameter->grf6.video_step_delta = 0.0;
-
- if (x == 0) {
- pp_inline_parameter->grf5.normalized_video_x_scaling_step = 1.0 / pp_avs_context->dest_w;
- pp_inline_parameter->grf5.r5_1.source_surface_block_normalized_horizontal_origin = pp_avs_context->src_normalized_x;
- } else {
- src_x_steping = pp_inline_parameter->grf5.normalized_video_x_scaling_step;
- video_step_delta = pp_inline_parameter->grf6.video_step_delta;
- pp_inline_parameter->grf5.r5_1.source_surface_block_normalized_horizontal_origin += src_x_steping * 16 +
- 16 * 15 * video_step_delta / 2;
- }
- } else {
- if (x < nls_left) {
- /* f = a * nls_left * 16 + b * nls_left * 16 * (nls_left * 16 - 1) / 2 */
- float a = f / (nls_left * 16 * factor_b);
- float b = (f - nls_left * 16 * a) * 2 / (nls_left * 16 * (nls_left * 16 - 1));
-
- pp_inline_parameter->grf6.video_step_delta = b;
-
- if (x == 0) {
- pp_inline_parameter->grf5.r5_1.source_surface_block_normalized_horizontal_origin = pp_avs_context->src_normalized_x;
- pp_inline_parameter->grf5.normalized_video_x_scaling_step = a;
- } else {
- src_x_steping = pp_inline_parameter->grf5.normalized_video_x_scaling_step;
- video_step_delta = pp_inline_parameter->grf6.video_step_delta;
- pp_inline_parameter->grf5.r5_1.source_surface_block_normalized_horizontal_origin += src_x_steping * 16 +
- 16 * 15 * video_step_delta / 2;
- pp_inline_parameter->grf5.normalized_video_x_scaling_step += 16 * b;
- }
- } else if (x < (pp_avs_context->dest_w / 16 - nls_right)) {
- /* scale the center linearly */
- src_x_steping = pp_inline_parameter->grf5.normalized_video_x_scaling_step;
- video_step_delta = pp_inline_parameter->grf6.video_step_delta;
- pp_inline_parameter->grf5.r5_1.source_surface_block_normalized_horizontal_origin += src_x_steping * 16 +
- 16 * 15 * video_step_delta / 2;
- pp_inline_parameter->grf6.video_step_delta = 0.0;
- pp_inline_parameter->grf5.normalized_video_x_scaling_step = 1.0 / tmp_w;
- } else {
- float a = f / (nls_right * 16 * factor_b);
- float b = (f - nls_right * 16 * a) * 2 / (nls_right * 16 * (nls_right * 16 - 1));
-
- src_x_steping = pp_inline_parameter->grf5.normalized_video_x_scaling_step;
- video_step_delta = pp_inline_parameter->grf6.video_step_delta;
- pp_inline_parameter->grf5.r5_1.source_surface_block_normalized_horizontal_origin += src_x_steping * 16 +
- 16 * 15 * video_step_delta / 2;
- pp_inline_parameter->grf6.video_step_delta = -b;
-
- if (x == (pp_avs_context->dest_w / 16 - nls_right))
- pp_inline_parameter->grf5.normalized_video_x_scaling_step = a + (nls_right * 16 - 1) * b;
- else
- pp_inline_parameter->grf5.normalized_video_x_scaling_step -= b * 16;
- }
- }
- }
-
- src_y_steping = pp_static_parameter->grf1.r1_6.normalized_video_y_scaling_step;
- pp_inline_parameter->grf5.source_surface_block_normalized_vertical_origin = src_y_steping * y * 8 + pp_avs_context->src_normalized_y;
- pp_inline_parameter->grf5.destination_block_horizontal_origin = x * 16 + pp_avs_context->dest_x;
- pp_inline_parameter->grf5.destination_block_vertical_origin = y * 8 + pp_avs_context->dest_y;
-
- return 0;
-}
-
-static const AVSConfig gen5_avs_config = {
- .coeff_frac_bits = 6,
- .coeff_epsilon = 1.0f / (1U << 6),
- .num_phases = 16,
- .num_luma_coeffs = 8,
- .num_chroma_coeffs = 4,
-
- .coeff_range = {
- .lower_bound = {
- .y_k_h = { -0.25f, -0.5f, -1, 0, 0, -1, -0.5f, -0.25f },
- .y_k_v = { -0.25f, -0.5f, -1, 0, 0, -1, -0.5f, -0.25f },
- .uv_k_h = { -1, 0, 0, -1 },
- .uv_k_v = { -1, 0, 0, -1 },
- },
- .upper_bound = {
- .y_k_h = { 0.25f, 0.5f, 1, 2, 2, 1, 0.5f, 0.25f },
- .y_k_v = { 0.25f, 0.5f, 1, 2, 2, 1, 0.5f, 0.25f },
- .uv_k_h = { 1, 2, 2, 1 },
- .uv_k_v = { 1, 2, 2, 1 },
- },
- },
-};
-
-static const AVSConfig gen6_avs_config = {
- .coeff_frac_bits = 6,
- .coeff_epsilon = 1.0f / (1U << 6),
- .num_phases = 16,
- .num_luma_coeffs = 8,
- .num_chroma_coeffs = 4,
-
- .coeff_range = {
- .lower_bound = {
- .y_k_h = { -0.25f, -0.5f, -1, -2, -2, -1, -0.5f, -0.25f },
- .y_k_v = { -0.25f, -0.5f, -1, -2, -2, -1, -0.5f, -0.25f },
- .uv_k_h = { -1, 0, 0, -1 },
- .uv_k_v = { -1, 0, 0, -1 },
- },
- .upper_bound = {
- .y_k_h = { 0.25f, 0.5f, 1, 2, 2, 1, 0.5f, 0.25f },
- .y_k_v = { 0.25f, 0.5f, 1, 2, 2, 1, 0.5f, 0.25f },
- .uv_k_h = { 1, 2, 2, 1 },
- .uv_k_v = { 1, 2, 2, 1 },
- },
- },
-};
-
-static VAStatus
-pp_nv12_avs_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param)
-{
- struct pp_avs_context *pp_avs_context = (struct pp_avs_context *)&pp_context->pp_avs_context;
- struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
- struct pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
- struct object_surface *obj_surface;
- struct i965_sampler_8x8 *sampler_8x8;
- struct i965_sampler_8x8_state *sampler_8x8_state;
- int index;
- int in_w, in_h, in_wpitch, in_hpitch;
- int out_w, out_h, out_wpitch, out_hpitch;
- int i;
- AVSState * const avs = &pp_avs_context->state;
- float sx, sy;
-
- const int nlas = (pp_context->filter_flags & VA_FILTER_SCALING_MASK) ==
- VA_FILTER_SCALING_NL_ANAMORPHIC;
-
- /* surface */
- obj_surface = (struct object_surface *)src_surface->base;
- in_w = obj_surface->orig_width;
- in_h = obj_surface->orig_height;
- in_wpitch = obj_surface->width;
- in_hpitch = obj_surface->height;
-
- /* source Y surface index 1 */
- i965_pp_set_surface2_state(ctx, pp_context,
- obj_surface->bo, 0,
- in_w, in_h, in_wpitch,
- 0, 0,
- SURFACE_FORMAT_Y8_UNORM, 0,
- 1);
-
- /* source UV surface index 2 */
- i965_pp_set_surface2_state(ctx, pp_context,
- obj_surface->bo, in_wpitch * in_hpitch,
- in_w / 2, in_h / 2, in_wpitch,
- 0, 0,
- SURFACE_FORMAT_R8B8_UNORM, 0,
- 2);
-
- /* destination surface */
- obj_surface = (struct object_surface *)dst_surface->base;
- out_w = obj_surface->orig_width;
- out_h = obj_surface->orig_height;
- out_wpitch = obj_surface->width;
- out_hpitch = obj_surface->height;
- assert(out_w <= out_wpitch && out_h <= out_hpitch);
-
- /* destination Y surface index 7 */
- i965_pp_set_surface_state(ctx, pp_context,
- obj_surface->bo, 0,
- ALIGN(out_w, 4) / 4, out_h, out_wpitch, I965_SURFACEFORMAT_R8_UNORM,
- 7, 1);
-
- /* destination UV surface index 8 */
- i965_pp_set_surface_state(ctx, pp_context,
- obj_surface->bo, out_wpitch * out_hpitch,
- ALIGN(out_w, 4) / 4, out_h / 2, out_wpitch, I965_SURFACEFORMAT_R8G8_UNORM,
- 8, 1);
-
- /* sampler 8x8 state */
- dri_bo_map(pp_context->sampler_state_table.bo_8x8, True);
- assert(pp_context->sampler_state_table.bo_8x8->virtual);
- assert(sizeof(*sampler_8x8_state) == sizeof(int) * 138);
- sampler_8x8_state = pp_context->sampler_state_table.bo_8x8->virtual;
- memset(sampler_8x8_state, 0, sizeof(*sampler_8x8_state));
-
- sx = (float)dst_rect->width / src_rect->width;
- sy = (float)dst_rect->height / src_rect->height;
- avs_update_coefficients(avs, sx, sy, pp_context->filter_flags);
-
- assert(avs->config->num_phases == 16);
- for (i = 0; i <= 16; i++) {
- const AVSCoeffs * const coeffs = &avs->coeffs[i];
-
- sampler_8x8_state->coefficients[i].dw0.table_0x_filter_c0 =
- intel_format_convert(coeffs->y_k_h[0], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw0.table_0x_filter_c1 =
- intel_format_convert(coeffs->y_k_h[1], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw0.table_0x_filter_c2 =
- intel_format_convert(coeffs->y_k_h[2], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw0.table_0x_filter_c3 =
- intel_format_convert(coeffs->y_k_h[3], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw1.table_0x_filter_c4 =
- intel_format_convert(coeffs->y_k_h[4], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw1.table_0x_filter_c5 =
- intel_format_convert(coeffs->y_k_h[5], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw1.table_0x_filter_c6 =
- intel_format_convert(coeffs->y_k_h[6], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw1.table_0x_filter_c7 =
- intel_format_convert(coeffs->y_k_h[7], 1, 6, 1);
-
- sampler_8x8_state->coefficients[i].dw4.table_1x_filter_c2 =
- intel_format_convert(coeffs->uv_k_h[0], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw4.table_1x_filter_c3 =
- intel_format_convert(coeffs->uv_k_h[1], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw5.table_1x_filter_c4 =
- intel_format_convert(coeffs->uv_k_h[2], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw5.table_1x_filter_c5 =
- intel_format_convert(coeffs->uv_k_h[3], 1, 6, 1);
-
- sampler_8x8_state->coefficients[i].dw2.table_0y_filter_c0 =
- intel_format_convert(coeffs->y_k_v[0], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw2.table_0y_filter_c1 =
- intel_format_convert(coeffs->y_k_v[1], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw2.table_0y_filter_c2 =
- intel_format_convert(coeffs->y_k_v[2], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw2.table_0y_filter_c3 =
- intel_format_convert(coeffs->y_k_v[3], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw3.table_0y_filter_c4 =
- intel_format_convert(coeffs->y_k_v[4], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw3.table_0y_filter_c5 =
- intel_format_convert(coeffs->y_k_v[5], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw3.table_0y_filter_c6 =
- intel_format_convert(coeffs->y_k_v[6], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw3.table_0y_filter_c7 =
- intel_format_convert(coeffs->y_k_v[7], 1, 6, 1);
-
- sampler_8x8_state->coefficients[i].dw6.table_1y_filter_c2 =
- intel_format_convert(coeffs->uv_k_v[0], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw6.table_1y_filter_c3 =
- intel_format_convert(coeffs->uv_k_v[1], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw7.table_1y_filter_c4 =
- intel_format_convert(coeffs->uv_k_v[2], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw7.table_1y_filter_c5 =
- intel_format_convert(coeffs->uv_k_v[3], 1, 6, 1);
- }
-
- /* Adaptive filter for all channels (DW4.15) */
- sampler_8x8_state->coefficients[0].dw4.table_1x_filter_c1 = 1U << 7;
-
- sampler_8x8_state->dw136.default_sharpness_level =
- -avs_is_needed(pp_context->filter_flags);
- sampler_8x8_state->dw137.ilk.bypass_y_adaptive_filtering = 1;
- sampler_8x8_state->dw137.ilk.bypass_x_adaptive_filtering = 1;
- dri_bo_unmap(pp_context->sampler_state_table.bo_8x8);
-
- /* sampler 8x8 */
- dri_bo_map(pp_context->sampler_state_table.bo, True);
- assert(pp_context->sampler_state_table.bo->virtual);
- assert(sizeof(*sampler_8x8) == sizeof(int) * 16);
- sampler_8x8 = pp_context->sampler_state_table.bo->virtual;
-
- /* sample_8x8 Y index 1 */
- index = 1;
- memset(&sampler_8x8[index], 0, sizeof(*sampler_8x8));
- sampler_8x8[index].dw0.avs_filter_type = AVS_FILTER_ADAPTIVE_8_TAP;
- sampler_8x8[index].dw0.ief_bypass = 1;
- sampler_8x8[index].dw0.ief_filter_type = IEF_FILTER_DETAIL;
- sampler_8x8[index].dw0.ief_filter_size = IEF_FILTER_SIZE_5X5;
- sampler_8x8[index].dw1.sampler_8x8_state_pointer = pp_context->sampler_state_table.bo_8x8->offset >> 5;
- sampler_8x8[index].dw2.global_noise_estimation = 22;
- sampler_8x8[index].dw2.strong_edge_threshold = 8;
- sampler_8x8[index].dw2.weak_edge_threshold = 1;
- sampler_8x8[index].dw3.strong_edge_weight = 7;
- sampler_8x8[index].dw3.regular_weight = 2;
- sampler_8x8[index].dw3.non_edge_weight = 0;
- sampler_8x8[index].dw3.gain_factor = 40;
- sampler_8x8[index].dw4.steepness_boost = 0;
- sampler_8x8[index].dw4.steepness_threshold = 0;
- sampler_8x8[index].dw4.mr_boost = 0;
- sampler_8x8[index].dw4.mr_threshold = 5;
- sampler_8x8[index].dw5.pwl1_point_1 = 4;
- sampler_8x8[index].dw5.pwl1_point_2 = 12;
- sampler_8x8[index].dw5.pwl1_point_3 = 16;
- sampler_8x8[index].dw5.pwl1_point_4 = 26;
- sampler_8x8[index].dw6.pwl1_point_5 = 40;
- sampler_8x8[index].dw6.pwl1_point_6 = 160;
- sampler_8x8[index].dw6.pwl1_r3_bias_0 = 127;
- sampler_8x8[index].dw6.pwl1_r3_bias_1 = 98;
- sampler_8x8[index].dw7.pwl1_r3_bias_2 = 88;
- sampler_8x8[index].dw7.pwl1_r3_bias_3 = 64;
- sampler_8x8[index].dw7.pwl1_r3_bias_4 = 44;
- sampler_8x8[index].dw7.pwl1_r3_bias_5 = 0;
- sampler_8x8[index].dw8.pwl1_r3_bias_6 = 0;
- sampler_8x8[index].dw8.pwl1_r5_bias_0 = 3;
- sampler_8x8[index].dw8.pwl1_r5_bias_1 = 32;
- sampler_8x8[index].dw8.pwl1_r5_bias_2 = 32;
- sampler_8x8[index].dw9.pwl1_r5_bias_3 = 58;
- sampler_8x8[index].dw9.pwl1_r5_bias_4 = 100;
- sampler_8x8[index].dw9.pwl1_r5_bias_5 = 108;
- sampler_8x8[index].dw9.pwl1_r5_bias_6 = 88;
- sampler_8x8[index].dw10.pwl1_r3_slope_0 = -116;
- sampler_8x8[index].dw10.pwl1_r3_slope_1 = -20;
- sampler_8x8[index].dw10.pwl1_r3_slope_2 = -96;
- sampler_8x8[index].dw10.pwl1_r3_slope_3 = -32;
- sampler_8x8[index].dw11.pwl1_r3_slope_4 = -50;
- sampler_8x8[index].dw11.pwl1_r3_slope_5 = 0;
- sampler_8x8[index].dw11.pwl1_r3_slope_6 = 0;
- sampler_8x8[index].dw11.pwl1_r5_slope_0 = 116;
- sampler_8x8[index].dw12.pwl1_r5_slope_1 = 0;
- sampler_8x8[index].dw12.pwl1_r5_slope_2 = 114;
- sampler_8x8[index].dw12.pwl1_r5_slope_3 = 67;
- sampler_8x8[index].dw12.pwl1_r5_slope_4 = 9;
- sampler_8x8[index].dw13.pwl1_r5_slope_5 = -3;
- sampler_8x8[index].dw13.pwl1_r5_slope_6 = -15;
- sampler_8x8[index].dw13.limiter_boost = 0;
- sampler_8x8[index].dw13.minimum_limiter = 10;
- sampler_8x8[index].dw13.maximum_limiter = 11;
- sampler_8x8[index].dw14.clip_limiter = 130;
- dri_bo_emit_reloc(pp_context->sampler_state_table.bo,
- I915_GEM_DOMAIN_RENDER,
- 0,
- 0,
- sizeof(*sampler_8x8) * index + offsetof(struct i965_sampler_8x8, dw1),
- pp_context->sampler_state_table.bo_8x8);
-
- /* sample_8x8 UV index 2 */
- index = 2;
- memset(&sampler_8x8[index], 0, sizeof(*sampler_8x8));
- sampler_8x8[index].dw0.avs_filter_type = AVS_FILTER_ADAPTIVE_8_TAP;
- sampler_8x8[index].dw0.ief_bypass = 1;
- sampler_8x8[index].dw0.ief_filter_type = IEF_FILTER_DETAIL;
- sampler_8x8[index].dw0.ief_filter_size = IEF_FILTER_SIZE_5X5;
- sampler_8x8[index].dw1.sampler_8x8_state_pointer = pp_context->sampler_state_table.bo_8x8->offset >> 5;
- sampler_8x8[index].dw2.global_noise_estimation = 22;
- sampler_8x8[index].dw2.strong_edge_threshold = 8;
- sampler_8x8[index].dw2.weak_edge_threshold = 1;
- sampler_8x8[index].dw3.strong_edge_weight = 7;
- sampler_8x8[index].dw3.regular_weight = 2;
- sampler_8x8[index].dw3.non_edge_weight = 0;
- sampler_8x8[index].dw3.gain_factor = 40;
- sampler_8x8[index].dw4.steepness_boost = 0;
- sampler_8x8[index].dw4.steepness_threshold = 0;
- sampler_8x8[index].dw4.mr_boost = 0;
- sampler_8x8[index].dw4.mr_threshold = 5;
- sampler_8x8[index].dw5.pwl1_point_1 = 4;
- sampler_8x8[index].dw5.pwl1_point_2 = 12;
- sampler_8x8[index].dw5.pwl1_point_3 = 16;
- sampler_8x8[index].dw5.pwl1_point_4 = 26;
- sampler_8x8[index].dw6.pwl1_point_5 = 40;
- sampler_8x8[index].dw6.pwl1_point_6 = 160;
- sampler_8x8[index].dw6.pwl1_r3_bias_0 = 127;
- sampler_8x8[index].dw6.pwl1_r3_bias_1 = 98;
- sampler_8x8[index].dw7.pwl1_r3_bias_2 = 88;
- sampler_8x8[index].dw7.pwl1_r3_bias_3 = 64;
- sampler_8x8[index].dw7.pwl1_r3_bias_4 = 44;
- sampler_8x8[index].dw7.pwl1_r3_bias_5 = 0;
- sampler_8x8[index].dw8.pwl1_r3_bias_6 = 0;
- sampler_8x8[index].dw8.pwl1_r5_bias_0 = 3;
- sampler_8x8[index].dw8.pwl1_r5_bias_1 = 32;
- sampler_8x8[index].dw8.pwl1_r5_bias_2 = 32;
- sampler_8x8[index].dw9.pwl1_r5_bias_3 = 58;
- sampler_8x8[index].dw9.pwl1_r5_bias_4 = 100;
- sampler_8x8[index].dw9.pwl1_r5_bias_5 = 108;
- sampler_8x8[index].dw9.pwl1_r5_bias_6 = 88;
- sampler_8x8[index].dw10.pwl1_r3_slope_0 = -116;
- sampler_8x8[index].dw10.pwl1_r3_slope_1 = -20;
- sampler_8x8[index].dw10.pwl1_r3_slope_2 = -96;
- sampler_8x8[index].dw10.pwl1_r3_slope_3 = -32;
- sampler_8x8[index].dw11.pwl1_r3_slope_4 = -50;
- sampler_8x8[index].dw11.pwl1_r3_slope_5 = 0;
- sampler_8x8[index].dw11.pwl1_r3_slope_6 = 0;
- sampler_8x8[index].dw11.pwl1_r5_slope_0 = 116;
- sampler_8x8[index].dw12.pwl1_r5_slope_1 = 0;
- sampler_8x8[index].dw12.pwl1_r5_slope_2 = 114;
- sampler_8x8[index].dw12.pwl1_r5_slope_3 = 67;
- sampler_8x8[index].dw12.pwl1_r5_slope_4 = 9;
- sampler_8x8[index].dw13.pwl1_r5_slope_5 = -3;
- sampler_8x8[index].dw13.pwl1_r5_slope_6 = -15;
- sampler_8x8[index].dw13.limiter_boost = 0;
- sampler_8x8[index].dw13.minimum_limiter = 10;
- sampler_8x8[index].dw13.maximum_limiter = 11;
- sampler_8x8[index].dw14.clip_limiter = 130;
- dri_bo_emit_reloc(pp_context->sampler_state_table.bo,
- I915_GEM_DOMAIN_RENDER,
- 0,
- 0,
- sizeof(*sampler_8x8) * index + offsetof(struct i965_sampler_8x8, dw1),
- pp_context->sampler_state_table.bo_8x8);
-
- dri_bo_unmap(pp_context->sampler_state_table.bo);
-
- /* private function & data */
- pp_context->pp_x_steps = pp_avs_x_steps;
- pp_context->pp_y_steps = pp_avs_y_steps;
- pp_context->private_context = &pp_context->pp_avs_context;
- pp_context->pp_set_block_parameter = pp_avs_set_block_parameter;
-
- int dst_left_edge_extend = dst_rect->x%GPU_ASM_X_OFFSET_ALIGNMENT;
- float src_left_edge_extend = (float)dst_left_edge_extend*src_rect->width/dst_rect->width;
- pp_avs_context->dest_x = dst_rect->x - dst_left_edge_extend;
- pp_avs_context->dest_y = dst_rect->y;
- pp_avs_context->dest_w = ALIGN(dst_rect->width + dst_left_edge_extend, 16);
- pp_avs_context->dest_h = ALIGN(dst_rect->height, 8);
- pp_avs_context->src_normalized_x = (float)(src_rect->x - src_left_edge_extend)/ in_w;
- pp_avs_context->src_normalized_y = (float)src_rect->y / in_h;
- pp_avs_context->src_w = src_rect->width + src_left_edge_extend;
- pp_avs_context->src_h = src_rect->height;
-
- pp_static_parameter->grf4.r4_2.avs.nlas = nlas;
- pp_static_parameter->grf1.r1_6.normalized_video_y_scaling_step = (float) src_rect->height / in_h / dst_rect->height;
-
- pp_inline_parameter->grf5.normalized_video_x_scaling_step = (float) (src_rect->width + src_left_edge_extend)/ in_w / (dst_rect->width + dst_left_edge_extend);
- pp_inline_parameter->grf5.block_count_x = 1; /* M x 1 */
- pp_inline_parameter->grf5.number_blocks = pp_avs_context->dest_h / 8;
- pp_inline_parameter->grf6.video_step_delta = 0.0;
-
- dst_surface->flags = src_surface->flags;
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-gen6_nv12_scaling_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param)
-{
- return pp_nv12_avs_initialize(ctx, pp_context,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect,
- filter_param);
-}
-
-static int
-gen7_pp_avs_x_steps(void *private_context)
-{
- struct pp_avs_context *pp_avs_context = private_context;
-
- return pp_avs_context->dest_w / 16;
-}
-
-static int
-gen7_pp_avs_y_steps(void *private_context)
-{
- struct pp_avs_context *pp_avs_context = private_context;
-
- return pp_avs_context->dest_h / 16;
-}
-
-static int
-gen7_pp_avs_set_block_parameter(struct i965_post_processing_context *pp_context, int x, int y)
-{
- struct pp_avs_context *pp_avs_context = (struct pp_avs_context *)pp_context->private_context;
- struct gen7_pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
-
- pp_inline_parameter->grf9.destination_block_horizontal_origin = x * 16 + pp_avs_context->dest_x;
- pp_inline_parameter->grf9.destination_block_vertical_origin = y * 16 + pp_avs_context->dest_y;
- pp_inline_parameter->grf9.constant_0 = 0xffffffff;
- pp_inline_parameter->grf9.sampler_load_main_video_x_scaling_step = pp_avs_context->horiz_range / pp_avs_context->src_w;
-
- return 0;
-}
-
-static void gen7_update_src_surface_uv_offset(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context,
- const struct i965_surface *surface)
-{
- struct gen7_pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
- int fourcc = pp_get_surface_fourcc(ctx, surface);
-
- if (fourcc == VA_FOURCC_YUY2) {
- pp_static_parameter->grf2.di_destination_packed_y_component_offset = 0;
- pp_static_parameter->grf2.di_destination_packed_u_component_offset = 1;
- pp_static_parameter->grf2.di_destination_packed_v_component_offset = 3;
- } else if (fourcc == VA_FOURCC_UYVY) {
- pp_static_parameter->grf2.di_destination_packed_y_component_offset = 1;
- pp_static_parameter->grf2.di_destination_packed_u_component_offset = 0;
- pp_static_parameter->grf2.di_destination_packed_v_component_offset = 2;
- }
-}
-
-static VAStatus
-gen7_pp_plx_avs_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param)
-{
- struct pp_avs_context *pp_avs_context = (struct pp_avs_context *)&pp_context->pp_avs_context;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen7_pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
- struct gen7_sampler_8x8 *sampler_8x8;
- struct i965_sampler_8x8_state *sampler_8x8_state;
- int index, i;
- int width[3], height[3], pitch[3], offset[3];
- int src_width, src_height;
- AVSState * const avs = &pp_avs_context->state;
- float sx, sy;
- const float * yuv_to_rgb_coefs;
- size_t yuv_to_rgb_coefs_size;
-
- /* source surface */
- gen7_pp_set_media_rw_message_surface(ctx, pp_context, src_surface, 0, 0,
- src_rect,
- width, height, pitch, offset);
- src_width = width[0];
- src_height = height[0];
-
- /* destination surface */
- gen7_pp_set_media_rw_message_surface(ctx, pp_context, dst_surface, 24, 1,
- dst_rect,
- width, height, pitch, offset);
-
- /* sampler 8x8 state */
- dri_bo_map(pp_context->sampler_state_table.bo_8x8, True);
- assert(pp_context->sampler_state_table.bo_8x8->virtual);
- assert(sizeof(*sampler_8x8_state) == sizeof(int) * 138);
- sampler_8x8_state = pp_context->sampler_state_table.bo_8x8->virtual;
- memset(sampler_8x8_state, 0, sizeof(*sampler_8x8_state));
-
- sx = (float)dst_rect->width / src_rect->width;
- sy = (float)dst_rect->height / src_rect->height;
- avs_update_coefficients(avs, sx, sy, pp_context->filter_flags);
-
- assert(avs->config->num_phases == 16);
- for (i = 0; i <= 16; i++) {
- const AVSCoeffs * const coeffs = &avs->coeffs[i];
-
- sampler_8x8_state->coefficients[i].dw0.table_0x_filter_c0 =
- intel_format_convert(coeffs->y_k_h[0], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw0.table_0x_filter_c1 =
- intel_format_convert(coeffs->y_k_h[1], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw0.table_0x_filter_c2 =
- intel_format_convert(coeffs->y_k_h[2], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw0.table_0x_filter_c3 =
- intel_format_convert(coeffs->y_k_h[3], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw1.table_0x_filter_c4 =
- intel_format_convert(coeffs->y_k_h[4], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw1.table_0x_filter_c5 =
- intel_format_convert(coeffs->y_k_h[5], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw1.table_0x_filter_c6 =
- intel_format_convert(coeffs->y_k_h[6], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw1.table_0x_filter_c7 =
- intel_format_convert(coeffs->y_k_h[7], 1, 6, 1);
-
- sampler_8x8_state->coefficients[i].dw4.table_1x_filter_c2 =
- intel_format_convert(coeffs->uv_k_h[0], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw4.table_1x_filter_c3 =
- intel_format_convert(coeffs->uv_k_h[1], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw5.table_1x_filter_c4 =
- intel_format_convert(coeffs->uv_k_h[2], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw5.table_1x_filter_c5 =
- intel_format_convert(coeffs->uv_k_h[3], 1, 6, 1);
-
- sampler_8x8_state->coefficients[i].dw2.table_0y_filter_c0 =
- intel_format_convert(coeffs->y_k_v[0], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw2.table_0y_filter_c1 =
- intel_format_convert(coeffs->y_k_v[1], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw2.table_0y_filter_c2 =
- intel_format_convert(coeffs->y_k_v[2], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw2.table_0y_filter_c3 =
- intel_format_convert(coeffs->y_k_v[3], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw3.table_0y_filter_c4 =
- intel_format_convert(coeffs->y_k_v[4], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw3.table_0y_filter_c5 =
- intel_format_convert(coeffs->y_k_v[5], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw3.table_0y_filter_c6 =
- intel_format_convert(coeffs->y_k_v[6], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw3.table_0y_filter_c7 =
- intel_format_convert(coeffs->y_k_v[7], 1, 6, 1);
-
- sampler_8x8_state->coefficients[i].dw6.table_1y_filter_c2 =
- intel_format_convert(coeffs->uv_k_v[0], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw6.table_1y_filter_c3 =
- intel_format_convert(coeffs->uv_k_v[1], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw7.table_1y_filter_c4 =
- intel_format_convert(coeffs->uv_k_v[2], 1, 6, 1);
- sampler_8x8_state->coefficients[i].dw7.table_1y_filter_c5 =
- intel_format_convert(coeffs->uv_k_v[3], 1, 6, 1);
- }
-
- sampler_8x8_state->dw136.default_sharpness_level =
- -avs_is_needed(pp_context->filter_flags);
- if (IS_HASWELL(i965->intel.device_info)) {
- sampler_8x8_state->dw137.hsw.adaptive_filter_for_all_channel = 1;
- sampler_8x8_state->dw137.hsw.bypass_y_adaptive_filtering = 1;
- sampler_8x8_state->dw137.hsw.bypass_x_adaptive_filtering = 1;
- }
- else {
- sampler_8x8_state->coefficients[0].dw4.table_1x_filter_c1 = 1U << 7;
- sampler_8x8_state->dw137.ilk.bypass_y_adaptive_filtering = 1;
- sampler_8x8_state->dw137.ilk.bypass_x_adaptive_filtering = 1;
- }
- dri_bo_unmap(pp_context->sampler_state_table.bo_8x8);
-
- /* sampler 8x8 */
- dri_bo_map(pp_context->sampler_state_table.bo, True);
- assert(pp_context->sampler_state_table.bo->virtual);
- assert(sizeof(*sampler_8x8) == sizeof(int) * 4);
- sampler_8x8 = pp_context->sampler_state_table.bo->virtual;
-
- /* sample_8x8 Y index 4 */
- index = 4;
- memset(&sampler_8x8[index], 0, sizeof(*sampler_8x8));
- sampler_8x8[index].dw0.global_noise_estimation = 255;
- sampler_8x8[index].dw0.ief_bypass = 1;
-
- sampler_8x8[index].dw1.sampler_8x8_state_pointer = pp_context->sampler_state_table.bo_8x8->offset >> 5;
-
- sampler_8x8[index].dw2.weak_edge_threshold = 1;
- sampler_8x8[index].dw2.strong_edge_threshold = 8;
- sampler_8x8[index].dw2.r5x_coefficient = 9;
- sampler_8x8[index].dw2.r5cx_coefficient = 8;
- sampler_8x8[index].dw2.r5c_coefficient = 3;
-
- sampler_8x8[index].dw3.r3x_coefficient = 27;
- sampler_8x8[index].dw3.r3c_coefficient = 5;
- sampler_8x8[index].dw3.gain_factor = 40;
- sampler_8x8[index].dw3.non_edge_weight = 1;
- sampler_8x8[index].dw3.regular_weight = 2;
- sampler_8x8[index].dw3.strong_edge_weight = 7;
- sampler_8x8[index].dw3.ief4_smooth_enable = 0;
-
- dri_bo_emit_reloc(pp_context->sampler_state_table.bo,
- I915_GEM_DOMAIN_RENDER,
- 0,
- 0,
- sizeof(*sampler_8x8) * index + offsetof(struct i965_sampler_8x8, dw1),
- pp_context->sampler_state_table.bo_8x8);
-
- /* sample_8x8 UV index 8 */
- index = 8;
- memset(&sampler_8x8[index], 0, sizeof(*sampler_8x8));
- sampler_8x8[index].dw0.disable_8x8_filter = 0;
- sampler_8x8[index].dw0.global_noise_estimation = 255;
- sampler_8x8[index].dw0.ief_bypass = 1;
- sampler_8x8[index].dw1.sampler_8x8_state_pointer = pp_context->sampler_state_table.bo_8x8->offset >> 5;
- sampler_8x8[index].dw2.weak_edge_threshold = 1;
- sampler_8x8[index].dw2.strong_edge_threshold = 8;
- sampler_8x8[index].dw2.r5x_coefficient = 9;
- sampler_8x8[index].dw2.r5cx_coefficient = 8;
- sampler_8x8[index].dw2.r5c_coefficient = 3;
- sampler_8x8[index].dw3.r3x_coefficient = 27;
- sampler_8x8[index].dw3.r3c_coefficient = 5;
- sampler_8x8[index].dw3.gain_factor = 40;
- sampler_8x8[index].dw3.non_edge_weight = 1;
- sampler_8x8[index].dw3.regular_weight = 2;
- sampler_8x8[index].dw3.strong_edge_weight = 7;
- sampler_8x8[index].dw3.ief4_smooth_enable = 0;
-
- dri_bo_emit_reloc(pp_context->sampler_state_table.bo,
- I915_GEM_DOMAIN_RENDER,
- 0,
- 0,
- sizeof(*sampler_8x8) * index + offsetof(struct i965_sampler_8x8, dw1),
- pp_context->sampler_state_table.bo_8x8);
-
- /* sampler_8x8 V, index 12 */
- index = 12;
- memset(&sampler_8x8[index], 0, sizeof(*sampler_8x8));
- sampler_8x8[index].dw0.disable_8x8_filter = 0;
- sampler_8x8[index].dw0.global_noise_estimation = 255;
- sampler_8x8[index].dw0.ief_bypass = 1;
- sampler_8x8[index].dw1.sampler_8x8_state_pointer = pp_context->sampler_state_table.bo_8x8->offset >> 5;
- sampler_8x8[index].dw2.weak_edge_threshold = 1;
- sampler_8x8[index].dw2.strong_edge_threshold = 8;
- sampler_8x8[index].dw2.r5x_coefficient = 9;
- sampler_8x8[index].dw2.r5cx_coefficient = 8;
- sampler_8x8[index].dw2.r5c_coefficient = 3;
- sampler_8x8[index].dw3.r3x_coefficient = 27;
- sampler_8x8[index].dw3.r3c_coefficient = 5;
- sampler_8x8[index].dw3.gain_factor = 40;
- sampler_8x8[index].dw3.non_edge_weight = 1;
- sampler_8x8[index].dw3.regular_weight = 2;
- sampler_8x8[index].dw3.strong_edge_weight = 7;
- sampler_8x8[index].dw3.ief4_smooth_enable = 0;
-
- dri_bo_emit_reloc(pp_context->sampler_state_table.bo,
- I915_GEM_DOMAIN_RENDER,
- 0,
- 0,
- sizeof(*sampler_8x8) * index + offsetof(struct i965_sampler_8x8, dw1),
- pp_context->sampler_state_table.bo_8x8);
-
- dri_bo_unmap(pp_context->sampler_state_table.bo);
-
- /* private function & data */
- pp_context->pp_x_steps = gen7_pp_avs_x_steps;
- pp_context->pp_y_steps = gen7_pp_avs_y_steps;
- pp_context->private_context = &pp_context->pp_avs_context;
- pp_context->pp_set_block_parameter = gen7_pp_avs_set_block_parameter;
-
- int dst_left_edge_extend = dst_rect->x%GPU_ASM_X_OFFSET_ALIGNMENT;
- pp_avs_context->dest_x = dst_rect->x - dst_left_edge_extend;
- pp_avs_context->dest_y = dst_rect->y;
- pp_avs_context->dest_w = ALIGN(dst_rect->width + dst_left_edge_extend, 16);
- pp_avs_context->dest_h = ALIGN(dst_rect->height, 16);
- pp_avs_context->src_w = src_rect->width;
- pp_avs_context->src_h = src_rect->height;
- pp_avs_context->horiz_range = (float)src_rect->width / src_width;
-
- int dw = (pp_avs_context->src_w - 1) / 16 + 1;
- dw = MAX(dw, dst_rect->width + dst_left_edge_extend);
-
- pp_static_parameter->grf1.pointer_to_inline_parameter = 7;
- pp_static_parameter->grf2.avs_wa_enable = 1; /* must be set for GEN7 */
- if (IS_HASWELL(i965->intel.device_info))
- pp_static_parameter->grf2.avs_wa_enable = 0; /* HSW don't use the WA */
-
- if (pp_static_parameter->grf2.avs_wa_enable) {
- int src_fourcc = pp_get_surface_fourcc(ctx, src_surface);
- if ((src_fourcc == VA_FOURCC_RGBA) ||
- (src_fourcc == VA_FOURCC_RGBX) ||
- (src_fourcc == VA_FOURCC_BGRA) ||
- (src_fourcc == VA_FOURCC_BGRX)) {
- pp_static_parameter->grf2.avs_wa_enable = 0;
- }
- }
-
- pp_static_parameter->grf2.avs_wa_width = src_width;
- pp_static_parameter->grf2.avs_wa_one_div_256_width = (float) 1.0 / (256 * src_width);
- pp_static_parameter->grf2.avs_wa_five_div_256_width = (float) 5.0 / (256 * src_width);
- pp_static_parameter->grf2.alpha = 255;
-
- pp_static_parameter->grf3.sampler_load_horizontal_scaling_step_ratio = (float) pp_avs_context->src_w / dw;
- pp_static_parameter->grf4.sampler_load_vertical_scaling_step = (float) src_rect->height / src_height / dst_rect->height;
- pp_static_parameter->grf5.sampler_load_vertical_frame_origin = (float) src_rect->y / src_height -
- (float) pp_avs_context->dest_y * pp_static_parameter->grf4.sampler_load_vertical_scaling_step;
- pp_static_parameter->grf6.sampler_load_horizontal_frame_origin = (float) src_rect->x / src_width -
- (float) pp_avs_context->dest_x * pp_avs_context->horiz_range / dw;
-
- gen7_update_src_surface_uv_offset(ctx, pp_context, dst_surface);
-
- yuv_to_rgb_coefs = i915_color_standard_to_coefs (i915_filter_to_color_standard (src_surface->flags &
- VA_SRC_COLOR_MASK),
- &yuv_to_rgb_coefs_size);
- memcpy(&pp_static_parameter->grf7, yuv_to_rgb_coefs, yuv_to_rgb_coefs_size);
-
- dst_surface->flags = src_surface->flags;
-
- return VA_STATUS_SUCCESS;
-}
-
-static int
-pp_dndi_x_steps(void *private_context)
-{
- return 1;
-}
-
-static int
-pp_dndi_y_steps(void *private_context)
-{
- struct pp_dndi_context *pp_dndi_context = private_context;
-
- return pp_dndi_context->dest_h / 4;
-}
-
-static int
-pp_dndi_set_block_parameter(struct i965_post_processing_context *pp_context, int x, int y)
-{
- struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
-
- pp_inline_parameter->grf5.destination_block_horizontal_origin = x * 16;
- pp_inline_parameter->grf5.destination_block_vertical_origin = y * 4;
-
- return 0;
-}
-
-static VAStatus
-pp_nv12_dndi_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param)
-{
- struct pp_dndi_context * const dndi_ctx = &pp_context->pp_dndi_context;
- struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
- struct pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
- const VAProcPipelineParameterBuffer * const pipe_params =
- pp_context->pipeline_param;
- const VAProcFilterParameterBufferDeinterlacing * const deint_params =
- filter_param;
- struct object_surface * const src_obj_surface = (struct object_surface *)
- src_surface->base;
- struct object_surface * const dst_obj_surface = (struct object_surface *)
- dst_surface->base;
- struct object_surface *obj_surface;
- struct i965_sampler_dndi *sampler_dndi;
- int index, dndi_top_first;
- int w, h, orig_w, orig_h;
- VAStatus status;
-
- status = pp_dndi_context_init_surface_params(dndi_ctx, src_obj_surface,
- pipe_params, deint_params);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- status = pp_dndi_context_ensure_surfaces(ctx, pp_context,
- src_obj_surface, dst_obj_surface);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- status = pp_dndi_context_ensure_surfaces_storage(ctx, pp_context,
- src_obj_surface, dst_obj_surface);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- /* Current input surface (index = 4) */
- obj_surface = dndi_ctx->frame_store[DNDI_FRAME_IN_CURRENT].obj_surface;
- i965_pp_set_surface2_state(ctx, pp_context, obj_surface->bo, 0,
- obj_surface->orig_width, obj_surface->orig_height, obj_surface->width,
- 0, obj_surface->y_cb_offset, SURFACE_FORMAT_PLANAR_420_8, 1, 4);
-
- /* Previous input surface (index = 5) */
- obj_surface = dndi_ctx->frame_store[DNDI_FRAME_IN_PREVIOUS].obj_surface;
- i965_pp_set_surface2_state(ctx, pp_context, obj_surface->bo, 0,
- obj_surface->orig_width, obj_surface->orig_height, obj_surface->width,
- 0, obj_surface->y_cb_offset, SURFACE_FORMAT_PLANAR_420_8, 1, 5);
-
- /* STMM input surface (index = 6) */
- obj_surface = dndi_ctx->frame_store[DNDI_FRAME_IN_STMM].obj_surface;
- i965_pp_set_surface_state(ctx, pp_context, obj_surface->bo, 0,
- obj_surface->orig_width, obj_surface->orig_height, obj_surface->width,
- I965_SURFACEFORMAT_R8_UNORM, 6, 1);
-
- /* Previous output surfaces (index = { 7, 8 }) */
- obj_surface = dndi_ctx->frame_store[DNDI_FRAME_OUT_PREVIOUS].obj_surface;
- w = obj_surface->width;
- h = obj_surface->height;
- orig_w = obj_surface->orig_width;
- orig_h = obj_surface->orig_height;
-
- i965_pp_set_surface_state(ctx, pp_context, obj_surface->bo, 0,
- ALIGN(orig_w, 4) / 4, orig_h, w, I965_SURFACEFORMAT_R8_UNORM, 7, 1);
- i965_pp_set_surface_state(ctx, pp_context, obj_surface->bo, w * h,
- ALIGN(orig_w, 4) / 4, orig_h / 2, w, I965_SURFACEFORMAT_R8G8_UNORM, 8, 1);
-
- /* Current output surfaces (index = { 10, 11 }) */
- obj_surface = dndi_ctx->frame_store[DNDI_FRAME_OUT_CURRENT].obj_surface;
- w = obj_surface->width;
- h = obj_surface->height;
- orig_w = obj_surface->orig_width;
- orig_h = obj_surface->orig_height;
-
- i965_pp_set_surface_state(ctx, pp_context, obj_surface->bo, 0,
- ALIGN(orig_w, 4) / 4, orig_h, w, I965_SURFACEFORMAT_R8_UNORM, 10, 1);
- i965_pp_set_surface_state(ctx, pp_context, obj_surface->bo, w * h,
- ALIGN(orig_w, 4) / 4, orig_h / 2, w, I965_SURFACEFORMAT_R8G8_UNORM, 11, 1);
-
- /* STMM output surface (index = 20) */
- obj_surface = dndi_ctx->frame_store[DNDI_FRAME_OUT_STMM].obj_surface;
- i965_pp_set_surface_state(ctx, pp_context, obj_surface->bo, 0,
- obj_surface->orig_width, obj_surface->orig_height, obj_surface->width,
- I965_SURFACEFORMAT_R8_UNORM, 20, 1);
-
- dndi_top_first = !(deint_params->flags & VA_DEINTERLACING_BOTTOM_FIELD);
-
- /* sampler dndi */
- dri_bo_map(pp_context->sampler_state_table.bo, True);
- assert(pp_context->sampler_state_table.bo->virtual);
- assert(sizeof(*sampler_dndi) == sizeof(int) * 8);
- sampler_dndi = pp_context->sampler_state_table.bo->virtual;
-
- /* sample dndi index 1 */
- index = 0;
- sampler_dndi[index].dw0.denoise_asd_threshold = 38;
- sampler_dndi[index].dw0.denoise_history_delta = 7; // 0-15, default is 8
- sampler_dndi[index].dw0.denoise_maximum_history = 192; // 128-240
- sampler_dndi[index].dw0.denoise_stad_threshold = 140;
-
- sampler_dndi[index].dw1.denoise_threshold_for_sum_of_complexity_measure = 38;
- sampler_dndi[index].dw1.denoise_moving_pixel_threshold = 1;
- sampler_dndi[index].dw1.stmm_c2 = 1;
- sampler_dndi[index].dw1.low_temporal_difference_threshold = 0;
- sampler_dndi[index].dw1.temporal_difference_threshold = 0;
-
- sampler_dndi[index].dw2.block_noise_estimate_noise_threshold = 20; // 0-31
- sampler_dndi[index].dw2.block_noise_estimate_edge_threshold = 1; // 0-15
- sampler_dndi[index].dw2.denoise_edge_threshold = 7; // 0-15
- sampler_dndi[index].dw2.good_neighbor_threshold = 12; // 0-63
-
- sampler_dndi[index].dw3.maximum_stmm = 150;
- sampler_dndi[index].dw3.multipler_for_vecm = 30;
- sampler_dndi[index].dw3.blending_constant_across_time_for_small_values_of_stmm = 125;
- sampler_dndi[index].dw3.blending_constant_across_time_for_large_values_of_stmm = 64;
- sampler_dndi[index].dw3.stmm_blending_constant_select = 0;
-
- sampler_dndi[index].dw4.sdi_delta = 5;
- sampler_dndi[index].dw4.sdi_threshold = 100;
- sampler_dndi[index].dw4.stmm_output_shift = 5; // stmm_max - stmm_min = 2 ^ stmm_output_shift
- sampler_dndi[index].dw4.stmm_shift_up = 1;
- sampler_dndi[index].dw4.stmm_shift_down = 3;
- sampler_dndi[index].dw4.minimum_stmm = 118;
-
- sampler_dndi[index].dw5.fmd_temporal_difference_threshold = 175;
- sampler_dndi[index].dw5.sdi_fallback_mode_2_constant = 37;
- sampler_dndi[index].dw5.sdi_fallback_mode_1_t2_constant = 100;
- sampler_dndi[index].dw5.sdi_fallback_mode_1_t1_constant = 50;
-
- sampler_dndi[index].dw6.dn_enable = 1;
- sampler_dndi[index].dw6.di_enable = 1;
- sampler_dndi[index].dw6.di_partial = 0;
- sampler_dndi[index].dw6.dndi_top_first = dndi_top_first;
- sampler_dndi[index].dw6.dndi_stream_id = 0;
- sampler_dndi[index].dw6.dndi_first_frame = dndi_ctx->is_first_frame;
- sampler_dndi[index].dw6.progressive_dn = 0;
- sampler_dndi[index].dw6.fmd_tear_threshold = 2;
- sampler_dndi[index].dw6.fmd2_vertical_difference_threshold = 100;
- sampler_dndi[index].dw6.fmd1_vertical_difference_threshold = 16;
-
- sampler_dndi[index].dw7.fmd_for_1st_field_of_current_frame = 0;
- sampler_dndi[index].dw7.fmd_for_2nd_field_of_previous_frame = 0;
- sampler_dndi[index].dw7.vdi_walker_enable = 0;
- sampler_dndi[index].dw7.column_width_minus1 = w / 16;
-
- dri_bo_unmap(pp_context->sampler_state_table.bo);
-
- /* private function & data */
- pp_context->pp_x_steps = pp_dndi_x_steps;
- pp_context->pp_y_steps = pp_dndi_y_steps;
- pp_context->private_context = dndi_ctx;
- pp_context->pp_set_block_parameter = pp_dndi_set_block_parameter;
-
- pp_static_parameter->grf1.statistics_surface_picth = w / 2;
- pp_static_parameter->grf1.r1_6.di.top_field_first = dndi_top_first;
- pp_static_parameter->grf4.r4_2.di.motion_history_coefficient_m2 = 0;
- pp_static_parameter->grf4.r4_2.di.motion_history_coefficient_m1 = 0;
-
- pp_inline_parameter->grf5.block_count_x = w / 16; /* 1 x N */
- pp_inline_parameter->grf5.number_blocks = w / 16;
- pp_inline_parameter->grf5.block_vertical_mask = 0xff;
- pp_inline_parameter->grf5.block_horizontal_mask = 0xffff;
-
- dndi_ctx->dest_w = w;
- dndi_ctx->dest_h = h;
-
- dst_surface->flags = I965_SURFACE_FLAG_FRAME;
- return VA_STATUS_SUCCESS;
-}
-
-static int
-pp_dn_x_steps(void *private_context)
-{
- return 1;
-}
-
-static int
-pp_dn_y_steps(void *private_context)
-{
- struct pp_dn_context *pp_dn_context = private_context;
-
- return pp_dn_context->dest_h / 8;
-}
-
-static int
-pp_dn_set_block_parameter(struct i965_post_processing_context *pp_context, int x, int y)
-{
- struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
-
- pp_inline_parameter->grf5.destination_block_horizontal_origin = x * 16;
- pp_inline_parameter->grf5.destination_block_vertical_origin = y * 8;
-
- return 0;
-}
-
-static VAStatus
-pp_nv12_dn_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct pp_dn_context *pp_dn_context = (struct pp_dn_context *)&pp_context->pp_dn_context;
- struct object_surface *obj_surface;
- struct i965_sampler_dndi *sampler_dndi;
- struct pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
- struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
- VAProcFilterParameterBuffer *dn_filter_param = filter_param; /* FIXME: parameter */
- int index;
- int w, h;
- int orig_w, orig_h;
- int dn_strength = 15;
- int dndi_top_first = 1;
- int dn_progressive = 0;
-
- if (src_surface->flags == I965_SURFACE_FLAG_FRAME) {
- dndi_top_first = 1;
- dn_progressive = 1;
- } else if (src_surface->flags == I965_SURFACE_FLAG_TOP_FIELD_FIRST) {
- dndi_top_first = 1;
- dn_progressive = 0;
- } else {
- dndi_top_first = 0;
- dn_progressive = 0;
- }
-
- if (dn_filter_param) {
- float value = dn_filter_param->value;
-
- if (value > 1.0)
- value = 1.0;
-
- if (value < 0.0)
- value = 0.0;
-
- dn_strength = (int)(value * 31.0F);
- }
-
- /* surface */
- obj_surface = (struct object_surface *)src_surface->base;
- orig_w = obj_surface->orig_width;
- orig_h = obj_surface->orig_height;
- w = obj_surface->width;
- h = obj_surface->height;
-
- if (pp_dn_context->stmm_bo == NULL) {
- pp_dn_context->stmm_bo = dri_bo_alloc(i965->intel.bufmgr,
- "STMM surface",
- w * h,
- 4096);
- assert(pp_dn_context->stmm_bo);
- }
-
- /* source UV surface index 2 */
- i965_pp_set_surface_state(ctx, pp_context,
- obj_surface->bo, w * h,
- ALIGN(orig_w, 4) / 4, orig_h / 2, w, I965_SURFACEFORMAT_R8G8_UNORM,
- 2, 0);
-
- /* source YUV surface index 4 */
- i965_pp_set_surface2_state(ctx, pp_context,
- obj_surface->bo, 0,
- orig_w, orig_h, w,
- 0, h,
- SURFACE_FORMAT_PLANAR_420_8, 1,
- 4);
-
- /* source STMM surface index 20 */
- i965_pp_set_surface_state(ctx, pp_context,
- pp_dn_context->stmm_bo, 0,
- orig_w, orig_h, w, I965_SURFACEFORMAT_R8_UNORM,
- 20, 1);
-
- /* destination surface */
- obj_surface = (struct object_surface *)dst_surface->base;
- orig_w = obj_surface->orig_width;
- orig_h = obj_surface->orig_height;
- w = obj_surface->width;
- h = obj_surface->height;
-
- /* destination Y surface index 7 */
- i965_pp_set_surface_state(ctx, pp_context,
- obj_surface->bo, 0,
- ALIGN(orig_w, 4) / 4, orig_h, w, I965_SURFACEFORMAT_R8_UNORM,
- 7, 1);
-
- /* destination UV surface index 8 */
- i965_pp_set_surface_state(ctx, pp_context,
- obj_surface->bo, w * h,
- ALIGN(orig_w, 4) / 4, orig_h / 2, w, I965_SURFACEFORMAT_R8G8_UNORM,
- 8, 1);
- /* sampler dn */
- dri_bo_map(pp_context->sampler_state_table.bo, True);
- assert(pp_context->sampler_state_table.bo->virtual);
- assert(sizeof(*sampler_dndi) == sizeof(int) * 8);
- sampler_dndi = pp_context->sampler_state_table.bo->virtual;
-
- /* sample dndi index 1 */
- index = 0;
- sampler_dndi[index].dw0.denoise_asd_threshold = 0;
- sampler_dndi[index].dw0.denoise_history_delta = 8; // 0-15, default is 8
- sampler_dndi[index].dw0.denoise_maximum_history = 128; // 128-240
- sampler_dndi[index].dw0.denoise_stad_threshold = 0;
-
- sampler_dndi[index].dw1.denoise_threshold_for_sum_of_complexity_measure = 64;
- sampler_dndi[index].dw1.denoise_moving_pixel_threshold = 0;
- sampler_dndi[index].dw1.stmm_c2 = 0;
- sampler_dndi[index].dw1.low_temporal_difference_threshold = 8;
- sampler_dndi[index].dw1.temporal_difference_threshold = 16;
-
- sampler_dndi[index].dw2.block_noise_estimate_noise_threshold = dn_strength; // 0-31
- sampler_dndi[index].dw2.block_noise_estimate_edge_threshold = 7; // 0-15
- sampler_dndi[index].dw2.denoise_edge_threshold = 7; // 0-15
- sampler_dndi[index].dw2.good_neighbor_threshold = 7; // 0-63
-
- sampler_dndi[index].dw3.maximum_stmm = 128;
- sampler_dndi[index].dw3.multipler_for_vecm = 2;
- sampler_dndi[index].dw3.blending_constant_across_time_for_small_values_of_stmm = 0;
- sampler_dndi[index].dw3.blending_constant_across_time_for_large_values_of_stmm = 64;
- sampler_dndi[index].dw3.stmm_blending_constant_select = 0;
-
- sampler_dndi[index].dw4.sdi_delta = 8;
- sampler_dndi[index].dw4.sdi_threshold = 128;
- sampler_dndi[index].dw4.stmm_output_shift = 7; // stmm_max - stmm_min = 2 ^ stmm_output_shift
- sampler_dndi[index].dw4.stmm_shift_up = 0;
- sampler_dndi[index].dw4.stmm_shift_down = 0;
- sampler_dndi[index].dw4.minimum_stmm = 0;
-
- sampler_dndi[index].dw5.fmd_temporal_difference_threshold = 0;
- sampler_dndi[index].dw5.sdi_fallback_mode_2_constant = 0;
- sampler_dndi[index].dw5.sdi_fallback_mode_1_t2_constant = 0;
- sampler_dndi[index].dw5.sdi_fallback_mode_1_t1_constant = 0;
-
- sampler_dndi[index].dw6.dn_enable = 1;
- sampler_dndi[index].dw6.di_enable = 0;
- sampler_dndi[index].dw6.di_partial = 0;
- sampler_dndi[index].dw6.dndi_top_first = dndi_top_first;
- sampler_dndi[index].dw6.dndi_stream_id = 1;
- sampler_dndi[index].dw6.dndi_first_frame = 1;
- sampler_dndi[index].dw6.progressive_dn = dn_progressive;
- sampler_dndi[index].dw6.fmd_tear_threshold = 32;
- sampler_dndi[index].dw6.fmd2_vertical_difference_threshold = 32;
- sampler_dndi[index].dw6.fmd1_vertical_difference_threshold = 32;
-
- sampler_dndi[index].dw7.fmd_for_1st_field_of_current_frame = 2;
- sampler_dndi[index].dw7.fmd_for_2nd_field_of_previous_frame = 1;
- sampler_dndi[index].dw7.vdi_walker_enable = 0;
- sampler_dndi[index].dw7.column_width_minus1 = w / 16;
-
- dri_bo_unmap(pp_context->sampler_state_table.bo);
-
- /* private function & data */
- pp_context->pp_x_steps = pp_dn_x_steps;
- pp_context->pp_y_steps = pp_dn_y_steps;
- pp_context->private_context = &pp_context->pp_dn_context;
- pp_context->pp_set_block_parameter = pp_dn_set_block_parameter;
-
- pp_static_parameter->grf1.statistics_surface_picth = w / 2;
- pp_static_parameter->grf1.r1_6.di.top_field_first = 0;
- pp_static_parameter->grf4.r4_2.di.motion_history_coefficient_m2 = 64;
- pp_static_parameter->grf4.r4_2.di.motion_history_coefficient_m1 = 192;
-
- pp_inline_parameter->grf5.block_count_x = w / 16; /* 1 x N */
- pp_inline_parameter->grf5.number_blocks = w / 16;
- pp_inline_parameter->grf5.block_vertical_mask = 0xff;
- pp_inline_parameter->grf5.block_horizontal_mask = 0xffff;
-
- pp_dn_context->dest_w = w;
- pp_dn_context->dest_h = h;
-
- dst_surface->flags = src_surface->flags;
-
- return VA_STATUS_SUCCESS;
-}
-
-static int
-gen7_pp_dndi_x_steps(void *private_context)
-{
- struct pp_dndi_context *pp_dndi_context = private_context;
-
- return pp_dndi_context->dest_w / 16;
-}
-
-static int
-gen7_pp_dndi_y_steps(void *private_context)
-{
- struct pp_dndi_context *pp_dndi_context = private_context;
-
- return pp_dndi_context->dest_h / 4;
-}
-
-static int
-gen7_pp_dndi_set_block_parameter(struct i965_post_processing_context *pp_context, int x, int y)
-{
- struct gen7_pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
-
- pp_inline_parameter->grf9.destination_block_horizontal_origin = x * 16;
- pp_inline_parameter->grf9.destination_block_vertical_origin = y * 4;
-
- return 0;
-}
-
-static VAStatus
-gen7_pp_nv12_dndi_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param)
-{
- struct pp_dndi_context * const dndi_ctx = &pp_context->pp_dndi_context;
- struct gen7_pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
- const VAProcPipelineParameterBuffer * const pipe_params =
- pp_context->pipeline_param;
- const VAProcFilterParameterBufferDeinterlacing * const deint_params =
- filter_param;
- struct object_surface * const src_obj_surface = (struct object_surface *)
- src_surface->base;
- struct object_surface * const dst_obj_surface = (struct object_surface *)
- dst_surface->base;
- struct object_surface *obj_surface;
- struct gen7_sampler_dndi *sampler_dndi;
- int index, dndi_top_first;
- int w, h, orig_w, orig_h;
- VAStatus status;
-
- status = pp_dndi_context_init_surface_params(dndi_ctx, src_obj_surface,
- pipe_params, deint_params);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- status = pp_dndi_context_ensure_surfaces(ctx, pp_context,
- src_obj_surface, dst_obj_surface);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- status = pp_dndi_context_ensure_surfaces_storage(ctx, pp_context,
- src_obj_surface, dst_obj_surface);
- if (status != VA_STATUS_SUCCESS)
- return status;
-
- /* Current input surface (index = 3) */
- obj_surface = dndi_ctx->frame_store[DNDI_FRAME_IN_CURRENT].obj_surface;
- gen7_pp_set_surface2_state(ctx, pp_context, obj_surface->bo, 0,
- obj_surface->orig_width, obj_surface->orig_height, obj_surface->width,
- 0, obj_surface->y_cb_offset, SURFACE_FORMAT_PLANAR_420_8, 1, 3);
-
- /* Previous input surface (index = 4) */
- obj_surface = dndi_ctx->frame_store[DNDI_FRAME_IN_PREVIOUS].obj_surface;
- gen7_pp_set_surface2_state(ctx, pp_context, obj_surface->bo, 0,
- obj_surface->orig_width, obj_surface->orig_height, obj_surface->width,
- 0, obj_surface->y_cb_offset, SURFACE_FORMAT_PLANAR_420_8, 1, 4);
-
- /* STMM input surface (index = 5) */
- obj_surface = dndi_ctx->frame_store[DNDI_FRAME_IN_STMM].obj_surface;
- gen7_pp_set_surface_state(ctx, pp_context, obj_surface->bo, 0,
- obj_surface->orig_width, obj_surface->orig_height, obj_surface->width,
- I965_SURFACEFORMAT_R8_UNORM, 5, 1);
-
- /* Previous output surfaces (index = { 27, 28 }) */
- obj_surface = dndi_ctx->frame_store[DNDI_FRAME_OUT_PREVIOUS].obj_surface;
- w = obj_surface->width;
- h = obj_surface->height;
- orig_w = obj_surface->orig_width;
- orig_h = obj_surface->orig_height;
-
- gen7_pp_set_surface_state(ctx, pp_context, obj_surface->bo, 0,
- ALIGN(orig_w, 4) / 4, orig_h, w, I965_SURFACEFORMAT_R8_UNORM, 27, 1);
- gen7_pp_set_surface_state(ctx, pp_context, obj_surface->bo, w * h,
- ALIGN(orig_w, 4) / 4, orig_h / 2, w, I965_SURFACEFORMAT_R8G8_UNORM, 28, 1);
-
- /* Current output surfaces (index = { 30, 31 }) */
- obj_surface = dndi_ctx->frame_store[DNDI_FRAME_OUT_CURRENT].obj_surface;
- w = obj_surface->width;
- h = obj_surface->height;
- orig_w = obj_surface->orig_width;
- orig_h = obj_surface->orig_height;
-
- gen7_pp_set_surface_state(ctx, pp_context, obj_surface->bo, 0,
- ALIGN(orig_w, 4) / 4, orig_h, w, I965_SURFACEFORMAT_R8_UNORM, 30, 1);
- gen7_pp_set_surface_state(ctx, pp_context, obj_surface->bo, w * h,
- ALIGN(orig_w, 4) / 4, orig_h / 2, w, I965_SURFACEFORMAT_R8G8_UNORM, 31, 1);
-
- /* STMM output surface (index = 33) */
- obj_surface = dndi_ctx->frame_store[DNDI_FRAME_OUT_STMM].obj_surface;
- gen7_pp_set_surface_state(ctx, pp_context, obj_surface->bo, 0,
- obj_surface->orig_width, obj_surface->orig_height, obj_surface->width,
- I965_SURFACEFORMAT_R8_UNORM, 33, 1);
-
- dndi_top_first = !(deint_params->flags & VA_DEINTERLACING_BOTTOM_FIELD);
-
- /* sampler dndi */
- dri_bo_map(pp_context->sampler_state_table.bo, True);
- assert(pp_context->sampler_state_table.bo->virtual);
- assert(sizeof(*sampler_dndi) == sizeof(int) * 8);
- sampler_dndi = pp_context->sampler_state_table.bo->virtual;
-
- /* sample dndi index 0 */
- index = 0;
- sampler_dndi[index].dw0.denoise_asd_threshold = 38;
- sampler_dndi[index].dw0.dnmh_delt = 7;
- sampler_dndi[index].dw0.vdi_walker_y_stride = 0;
- sampler_dndi[index].dw0.vdi_walker_frame_sharing_enable = 0;
- sampler_dndi[index].dw0.denoise_maximum_history = 192; // 128-240
- sampler_dndi[index].dw0.denoise_stad_threshold = 140;
-
- sampler_dndi[index].dw1.denoise_threshold_for_sum_of_complexity_measure = 38;
- sampler_dndi[index].dw1.denoise_moving_pixel_threshold = 1;
- sampler_dndi[index].dw1.stmm_c2 = 2;
- sampler_dndi[index].dw1.low_temporal_difference_threshold = 0;
- sampler_dndi[index].dw1.temporal_difference_threshold = 0;
-
- sampler_dndi[index].dw2.block_noise_estimate_noise_threshold = 20; // 0-31
- sampler_dndi[index].dw2.bne_edge_th = 1;
- sampler_dndi[index].dw2.smooth_mv_th = 0;
- sampler_dndi[index].dw2.sad_tight_th = 5;
- sampler_dndi[index].dw2.cat_slope_minus1 = 9;
- sampler_dndi[index].dw2.good_neighbor_th = 12;
-
- sampler_dndi[index].dw3.maximum_stmm = 150;
- sampler_dndi[index].dw3.multipler_for_vecm = 30;
- sampler_dndi[index].dw3.blending_constant_across_time_for_small_values_of_stmm = 125;
- sampler_dndi[index].dw3.blending_constant_across_time_for_large_values_of_stmm = 64;
- sampler_dndi[index].dw3.stmm_blending_constant_select = 0;
-
- sampler_dndi[index].dw4.sdi_delta = 5;
- sampler_dndi[index].dw4.sdi_threshold = 100;
- sampler_dndi[index].dw4.stmm_output_shift = 5; // stmm_max - stmm_min = 2 ^ stmm_output_shift
- sampler_dndi[index].dw4.stmm_shift_up = 1;
- sampler_dndi[index].dw4.stmm_shift_down = 3;
- sampler_dndi[index].dw4.minimum_stmm = 118;
-
- sampler_dndi[index].dw5.fmd_temporal_difference_threshold = 175;
- sampler_dndi[index].dw5.sdi_fallback_mode_2_constant = 37;
- sampler_dndi[index].dw5.sdi_fallback_mode_1_t2_constant = 100;
- sampler_dndi[index].dw5.sdi_fallback_mode_1_t1_constant = 50;
- sampler_dndi[index].dw6.dn_enable = 0;
- sampler_dndi[index].dw6.di_enable = 1;
- sampler_dndi[index].dw6.di_partial = 0;
- sampler_dndi[index].dw6.dndi_top_first = dndi_top_first;
- sampler_dndi[index].dw6.dndi_stream_id = 1;
- sampler_dndi[index].dw6.dndi_first_frame = dndi_ctx->is_first_frame;
- sampler_dndi[index].dw6.progressive_dn = 0;
- sampler_dndi[index].dw6.mcdi_enable =
- (deint_params->algorithm == VAProcDeinterlacingMotionCompensated);
- sampler_dndi[index].dw6.fmd_tear_threshold = 2;
- sampler_dndi[index].dw6.cat_th1 = 0;
- sampler_dndi[index].dw6.fmd2_vertical_difference_threshold = 100;
- sampler_dndi[index].dw6.fmd1_vertical_difference_threshold = 16;
-
- sampler_dndi[index].dw7.sad_tha = 5;
- sampler_dndi[index].dw7.sad_thb = 10;
- sampler_dndi[index].dw7.fmd_for_1st_field_of_current_frame = 0;
- sampler_dndi[index].dw7.mc_pixel_consistency_th = 25;
- sampler_dndi[index].dw7.fmd_for_2nd_field_of_previous_frame = 0;
- sampler_dndi[index].dw7.vdi_walker_enable = 0;
- sampler_dndi[index].dw7.neighborpixel_th = 10;
- sampler_dndi[index].dw7.column_width_minus1 = w / 16;
-
- dri_bo_unmap(pp_context->sampler_state_table.bo);
-
- /* private function & data */
- pp_context->pp_x_steps = gen7_pp_dndi_x_steps;
- pp_context->pp_y_steps = gen7_pp_dndi_y_steps;
- pp_context->private_context = dndi_ctx;
- pp_context->pp_set_block_parameter = gen7_pp_dndi_set_block_parameter;
-
- pp_static_parameter->grf1.di_statistics_surface_pitch_div2 = w / 2;
- pp_static_parameter->grf1.di_statistics_surface_height_div4 = h / 4;
- pp_static_parameter->grf1.di_top_field_first = 0;
- pp_static_parameter->grf1.pointer_to_inline_parameter = 7;
-
- pp_static_parameter->grf2.di_destination_packed_y_component_offset = 0;
- pp_static_parameter->grf2.di_destination_packed_u_component_offset = 1;
- pp_static_parameter->grf2.di_destination_packed_v_component_offset = 3;
-
- pp_static_parameter->grf4.di_hoffset_svf_from_dvf = 0;
- pp_static_parameter->grf4.di_voffset_svf_from_dvf = 0;
-
- dndi_ctx->dest_w = w;
- dndi_ctx->dest_h = h;
-
- dst_surface->flags = I965_SURFACE_FLAG_FRAME;
- return VA_STATUS_SUCCESS;
-}
-
-static int
-gen7_pp_dn_x_steps(void *private_context)
-{
- struct pp_dn_context *pp_dn_context = private_context;
-
- return pp_dn_context->dest_w / 16;
-}
-
-static int
-gen7_pp_dn_y_steps(void *private_context)
-{
- struct pp_dn_context *pp_dn_context = private_context;
-
- return pp_dn_context->dest_h / 4;
-}
-
-static int
-gen7_pp_dn_set_block_parameter(struct i965_post_processing_context *pp_context, int x, int y)
-{
- struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
-
- pp_inline_parameter->grf5.destination_block_horizontal_origin = x * 16;
- pp_inline_parameter->grf5.destination_block_vertical_origin = y * 4;
-
- return 0;
-}
-
-static VAStatus
-gen7_pp_nv12_dn_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct pp_dn_context *pp_dn_context = (struct pp_dn_context *)&pp_context->pp_dn_context;
- struct gen7_pp_static_parameter *pp_static_parameter = pp_context->pp_static_parameter;
- struct object_surface *obj_surface;
- struct gen7_sampler_dndi *sampler_dn;
- VAProcFilterParameterBuffer *dn_filter_param = filter_param; /* FIXME: parameter */
- int index;
- int w, h;
- int orig_w, orig_h;
- int dn_strength = 15;
- int dndi_top_first = 1;
- int dn_progressive = 0;
-
- if (src_surface->flags == I965_SURFACE_FLAG_FRAME) {
- dndi_top_first = 1;
- dn_progressive = 1;
- } else if (src_surface->flags == I965_SURFACE_FLAG_TOP_FIELD_FIRST) {
- dndi_top_first = 1;
- dn_progressive = 0;
- } else {
- dndi_top_first = 0;
- dn_progressive = 0;
- }
-
- if (dn_filter_param) {
- float value = dn_filter_param->value;
-
- if (value > 1.0)
- value = 1.0;
-
- if (value < 0.0)
- value = 0.0;
-
- dn_strength = (int)(value * 31.0F);
- }
-
- /* surface */
- obj_surface = (struct object_surface *)src_surface->base;
- orig_w = obj_surface->orig_width;
- orig_h = obj_surface->orig_height;
- w = obj_surface->width;
- h = obj_surface->height;
-
- if (pp_dn_context->stmm_bo == NULL) {
- pp_dn_context->stmm_bo= dri_bo_alloc(i965->intel.bufmgr,
- "STMM surface",
- w * h,
- 4096);
- assert(pp_dn_context->stmm_bo);
- }
-
- /* source UV surface index 1 */
- gen7_pp_set_surface_state(ctx, pp_context,
- obj_surface->bo, w * h,
- ALIGN(orig_w, 4) / 4, orig_h / 2, w, I965_SURFACEFORMAT_R8G8_UNORM,
- 1, 0);
-
- /* source YUV surface index 3 */
- gen7_pp_set_surface2_state(ctx, pp_context,
- obj_surface->bo, 0,
- orig_w, orig_h, w,
- 0, h,
- SURFACE_FORMAT_PLANAR_420_8, 1,
- 3);
-
- /* source (temporal reference) YUV surface index 4 */
- gen7_pp_set_surface2_state(ctx, pp_context,
- obj_surface->bo, 0,
- orig_w, orig_h, w,
- 0, h,
- SURFACE_FORMAT_PLANAR_420_8, 1,
- 4);
-
- /* STMM / History Statistics input surface, index 5 */
- gen7_pp_set_surface_state(ctx, pp_context,
- pp_dn_context->stmm_bo, 0,
- orig_w, orig_h, w, I965_SURFACEFORMAT_R8_UNORM,
- 33, 1);
-
- /* destination surface */
- obj_surface = (struct object_surface *)dst_surface->base;
- orig_w = obj_surface->orig_width;
- orig_h = obj_surface->orig_height;
- w = obj_surface->width;
- h = obj_surface->height;
-
- /* destination Y surface index 24 */
- gen7_pp_set_surface_state(ctx, pp_context,
- obj_surface->bo, 0,
- ALIGN(orig_w, 4) / 4, orig_h, w, I965_SURFACEFORMAT_R8_UNORM,
- 24, 1);
-
- /* destination UV surface index 25 */
- gen7_pp_set_surface_state(ctx, pp_context,
- obj_surface->bo, w * h,
- ALIGN(orig_w, 4) / 4, orig_h / 2, w, I965_SURFACEFORMAT_R8G8_UNORM,
- 25, 1);
-
- /* sampler dn */
- dri_bo_map(pp_context->sampler_state_table.bo, True);
- assert(pp_context->sampler_state_table.bo->virtual);
- assert(sizeof(*sampler_dn) == sizeof(int) * 8);
- sampler_dn = pp_context->sampler_state_table.bo->virtual;
-
- /* sample dn index 1 */
- index = 0;
- sampler_dn[index].dw0.denoise_asd_threshold = 0;
- sampler_dn[index].dw0.dnmh_delt = 8;
- sampler_dn[index].dw0.vdi_walker_y_stride = 0;
- sampler_dn[index].dw0.vdi_walker_frame_sharing_enable = 0;
- sampler_dn[index].dw0.denoise_maximum_history = 128; // 128-240
- sampler_dn[index].dw0.denoise_stad_threshold = 0;
-
- sampler_dn[index].dw1.denoise_threshold_for_sum_of_complexity_measure = 64;
- sampler_dn[index].dw1.denoise_moving_pixel_threshold = 0;
- sampler_dn[index].dw1.stmm_c2 = 0;
- sampler_dn[index].dw1.low_temporal_difference_threshold = 8;
- sampler_dn[index].dw1.temporal_difference_threshold = 16;
-
- sampler_dn[index].dw2.block_noise_estimate_noise_threshold = dn_strength; // 0-31
- sampler_dn[index].dw2.bne_edge_th = 1;
- sampler_dn[index].dw2.smooth_mv_th = 0;
- sampler_dn[index].dw2.sad_tight_th = 5;
- sampler_dn[index].dw2.cat_slope_minus1 = 9;
- sampler_dn[index].dw2.good_neighbor_th = 4;
-
- sampler_dn[index].dw3.maximum_stmm = 128;
- sampler_dn[index].dw3.multipler_for_vecm = 2;
- sampler_dn[index].dw3.blending_constant_across_time_for_small_values_of_stmm = 0;
- sampler_dn[index].dw3.blending_constant_across_time_for_large_values_of_stmm = 64;
- sampler_dn[index].dw3.stmm_blending_constant_select = 0;
-
- sampler_dn[index].dw4.sdi_delta = 8;
- sampler_dn[index].dw4.sdi_threshold = 128;
- sampler_dn[index].dw4.stmm_output_shift = 7; // stmm_max - stmm_min = 2 ^ stmm_output_shift
- sampler_dn[index].dw4.stmm_shift_up = 0;
- sampler_dn[index].dw4.stmm_shift_down = 0;
- sampler_dn[index].dw4.minimum_stmm = 0;
-
- sampler_dn[index].dw5.fmd_temporal_difference_threshold = 0;
- sampler_dn[index].dw5.sdi_fallback_mode_2_constant = 0;
- sampler_dn[index].dw5.sdi_fallback_mode_1_t2_constant = 0;
- sampler_dn[index].dw5.sdi_fallback_mode_1_t1_constant = 0;
-
- sampler_dn[index].dw6.dn_enable = 1;
- sampler_dn[index].dw6.di_enable = 0;
- sampler_dn[index].dw6.di_partial = 0;
- sampler_dn[index].dw6.dndi_top_first = dndi_top_first;
- sampler_dn[index].dw6.dndi_stream_id = 1;
- sampler_dn[index].dw6.dndi_first_frame = 1;
- sampler_dn[index].dw6.progressive_dn = dn_progressive;
- sampler_dn[index].dw6.mcdi_enable = 0;
- sampler_dn[index].dw6.fmd_tear_threshold = 32;
- sampler_dn[index].dw6.cat_th1 = 0;
- sampler_dn[index].dw6.fmd2_vertical_difference_threshold = 32;
- sampler_dn[index].dw6.fmd1_vertical_difference_threshold = 32;
-
- sampler_dn[index].dw7.sad_tha = 5;
- sampler_dn[index].dw7.sad_thb = 10;
- sampler_dn[index].dw7.fmd_for_1st_field_of_current_frame = 2;
- sampler_dn[index].dw7.mc_pixel_consistency_th = 25;
- sampler_dn[index].dw7.fmd_for_2nd_field_of_previous_frame = 1;
- sampler_dn[index].dw7.vdi_walker_enable = 0;
- sampler_dn[index].dw7.neighborpixel_th = 10;
- sampler_dn[index].dw7.column_width_minus1 = w / 16;
-
- dri_bo_unmap(pp_context->sampler_state_table.bo);
-
- /* private function & data */
- pp_context->pp_x_steps = gen7_pp_dn_x_steps;
- pp_context->pp_y_steps = gen7_pp_dn_y_steps;
- pp_context->private_context = &pp_context->pp_dn_context;
- pp_context->pp_set_block_parameter = gen7_pp_dn_set_block_parameter;
-
- pp_static_parameter->grf1.di_statistics_surface_pitch_div2 = w / 2;
- pp_static_parameter->grf1.di_statistics_surface_height_div4 = h / 4;
- pp_static_parameter->grf1.di_top_field_first = 0;
- pp_static_parameter->grf1.pointer_to_inline_parameter = 7;
-
- pp_static_parameter->grf2.di_destination_packed_y_component_offset = 0;
- pp_static_parameter->grf2.di_destination_packed_u_component_offset = 1;
- pp_static_parameter->grf2.di_destination_packed_v_component_offset = 3;
-
- pp_static_parameter->grf4.di_hoffset_svf_from_dvf = 0;
- pp_static_parameter->grf4.di_voffset_svf_from_dvf = 0;
-
- pp_dn_context->dest_w = w;
- pp_dn_context->dest_h = h;
-
- dst_surface->flags = src_surface->flags;
-
- return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-ironlake_pp_initialize(
- VADriverContextP ctx,
- struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- int pp_index,
- void *filter_param
-)
-{
- VAStatus va_status;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct pp_module *pp_module;
- dri_bo *bo;
- int static_param_size, inline_param_size;
-
- dri_bo_unreference(pp_context->surface_state_binding_table.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "surface state & binding table",
- (SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_PP_SURFACES,
- 4096);
- assert(bo);
- pp_context->surface_state_binding_table.bo = bo;
-
- dri_bo_unreference(pp_context->curbe.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "constant buffer",
- 4096,
- 4096);
- assert(bo);
- pp_context->curbe.bo = bo;
-
- dri_bo_unreference(pp_context->idrt.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "interface discriptor",
- sizeof(struct i965_interface_descriptor),
- 4096);
- assert(bo);
- pp_context->idrt.bo = bo;
- pp_context->idrt.num_interface_descriptors = 0;
-
- dri_bo_unreference(pp_context->sampler_state_table.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "sampler state table",
- 4096,
- 4096);
- assert(bo);
- dri_bo_map(bo, True);
- memset(bo->virtual, 0, bo->size);
- dri_bo_unmap(bo);
- pp_context->sampler_state_table.bo = bo;
-
- dri_bo_unreference(pp_context->sampler_state_table.bo_8x8);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "sampler 8x8 state ",
- 4096,
- 4096);
- assert(bo);
- pp_context->sampler_state_table.bo_8x8 = bo;
-
- dri_bo_unreference(pp_context->sampler_state_table.bo_8x8_uv);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "sampler 8x8 state ",
- 4096,
- 4096);
- assert(bo);
- pp_context->sampler_state_table.bo_8x8_uv = bo;
-
- dri_bo_unreference(pp_context->vfe_state.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "vfe state",
- sizeof(struct i965_vfe_state),
- 4096);
- assert(bo);
- pp_context->vfe_state.bo = bo;
-
- static_param_size = sizeof(struct pp_static_parameter);
- inline_param_size = sizeof(struct pp_inline_parameter);
-
- memset(pp_context->pp_static_parameter, 0, static_param_size);
- memset(pp_context->pp_inline_parameter, 0, inline_param_size);
-
- assert(pp_index >= PP_NULL && pp_index < NUM_PP_MODULES);
- pp_context->current_pp = pp_index;
- pp_module = &pp_context->pp_modules[pp_index];
-
- if (pp_module->initialize)
- va_status = pp_module->initialize(ctx, pp_context,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect,
- filter_param);
- else
- va_status = VA_STATUS_ERROR_UNIMPLEMENTED;
-
- return va_status;
-}
-
-static VAStatus
-ironlake_post_processing(
- VADriverContextP ctx,
- struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- int pp_index,
- void *filter_param
-)
-{
- VAStatus va_status;
-
- va_status = ironlake_pp_initialize(ctx, pp_context,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect,
- pp_index,
- filter_param);
-
- if (va_status == VA_STATUS_SUCCESS) {
- ironlake_pp_states_setup(ctx, pp_context);
- ironlake_pp_pipeline_setup(ctx, pp_context);
- }
-
- return va_status;
-}
-
-static VAStatus
-gen6_pp_initialize(
- VADriverContextP ctx,
- struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- int pp_index,
- void *filter_param
-)
-{
- VAStatus va_status;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct pp_module *pp_module;
- dri_bo *bo;
- int static_param_size, inline_param_size;
-
- dri_bo_unreference(pp_context->surface_state_binding_table.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "surface state & binding table",
- (SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_PP_SURFACES,
- 4096);
- assert(bo);
- pp_context->surface_state_binding_table.bo = bo;
-
- dri_bo_unreference(pp_context->curbe.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "constant buffer",
- 4096,
- 4096);
- assert(bo);
- pp_context->curbe.bo = bo;
-
- dri_bo_unreference(pp_context->idrt.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "interface discriptor",
- sizeof(struct gen6_interface_descriptor_data),
- 4096);
- assert(bo);
- pp_context->idrt.bo = bo;
- pp_context->idrt.num_interface_descriptors = 0;
-
- dri_bo_unreference(pp_context->sampler_state_table.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "sampler state table",
- 4096,
- 4096);
- assert(bo);
- dri_bo_map(bo, True);
- memset(bo->virtual, 0, bo->size);
- dri_bo_unmap(bo);
- pp_context->sampler_state_table.bo = bo;
-
- dri_bo_unreference(pp_context->sampler_state_table.bo_8x8);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "sampler 8x8 state ",
- 4096,
- 4096);
- assert(bo);
- pp_context->sampler_state_table.bo_8x8 = bo;
-
- dri_bo_unreference(pp_context->sampler_state_table.bo_8x8_uv);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "sampler 8x8 state ",
- 4096,
- 4096);
- assert(bo);
- pp_context->sampler_state_table.bo_8x8_uv = bo;
-
- dri_bo_unreference(pp_context->vfe_state.bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "vfe state",
- sizeof(struct i965_vfe_state),
- 4096);
- assert(bo);
- pp_context->vfe_state.bo = bo;
-
- if (IS_GEN7(i965->intel.device_info)) {
- static_param_size = sizeof(struct gen7_pp_static_parameter);
- inline_param_size = sizeof(struct gen7_pp_inline_parameter);
- } else {
- static_param_size = sizeof(struct pp_static_parameter);
- inline_param_size = sizeof(struct pp_inline_parameter);
- }
-
- memset(pp_context->pp_static_parameter, 0, static_param_size);
- memset(pp_context->pp_inline_parameter, 0, inline_param_size);
-
- assert(pp_index >= PP_NULL && pp_index < NUM_PP_MODULES);
- pp_context->current_pp = pp_index;
- pp_module = &pp_context->pp_modules[pp_index];
-
- if (pp_module->initialize)
- va_status = pp_module->initialize(ctx, pp_context,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect,
- filter_param);
- else
- va_status = VA_STATUS_ERROR_UNIMPLEMENTED;
-
- calculate_boundary_block_mask(pp_context, dst_rect);
-
- return va_status;
-}
-
-
-static void
-gen6_pp_interface_descriptor_table(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct gen6_interface_descriptor_data *desc;
- dri_bo *bo;
- int pp_index = pp_context->current_pp;
-
- bo = pp_context->idrt.bo;
- dri_bo_map(bo, True);
- assert(bo->virtual);
- desc = bo->virtual;
- memset(desc, 0, sizeof(*desc));
- desc->desc0.kernel_start_pointer =
- pp_context->pp_modules[pp_index].kernel.bo->offset >> 6; /* reloc */
- desc->desc1.single_program_flow = 1;
- desc->desc1.floating_point_mode = FLOATING_POINT_IEEE_754;
- desc->desc2.sampler_count = 1; /* 1 - 4 samplers used */
- desc->desc2.sampler_state_pointer =
- pp_context->sampler_state_table.bo->offset >> 5;
- desc->desc3.binding_table_entry_count = 0;
- desc->desc3.binding_table_pointer = (BINDING_TABLE_OFFSET >> 5);
- desc->desc4.constant_urb_entry_read_offset = 0;
-
- if (IS_GEN7(i965->intel.device_info))
- desc->desc4.constant_urb_entry_read_length = 8; /* grf 1-8 */
- else
- desc->desc4.constant_urb_entry_read_length = 4; /* grf 1-4 */
-
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0,
- offsetof(struct gen6_interface_descriptor_data, desc0),
- pp_context->pp_modules[pp_index].kernel.bo);
-
- dri_bo_emit_reloc(bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- desc->desc2.sampler_count << 2,
- offsetof(struct gen6_interface_descriptor_data, desc2),
- pp_context->sampler_state_table.bo);
-
- dri_bo_unmap(bo);
- pp_context->idrt.num_interface_descriptors++;
-}
-
-static void
-gen6_pp_upload_constants(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- unsigned char *constant_buffer;
- int param_size;
-
- assert(sizeof(struct pp_static_parameter) == 128);
- assert(sizeof(struct gen7_pp_static_parameter) == 256);
-
- if (IS_GEN7(i965->intel.device_info))
- param_size = sizeof(struct gen7_pp_static_parameter);
- else
- param_size = sizeof(struct pp_static_parameter);
-
- dri_bo_map(pp_context->curbe.bo, 1);
- assert(pp_context->curbe.bo->virtual);
- constant_buffer = pp_context->curbe.bo->virtual;
- memcpy(constant_buffer, pp_context->pp_static_parameter, param_size);
- dri_bo_unmap(pp_context->curbe.bo);
-}
-
-static void
-gen6_pp_states_setup(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- gen6_pp_interface_descriptor_table(ctx, pp_context);
- gen6_pp_upload_constants(ctx, pp_context);
-}
-
-static void
-gen6_pp_pipeline_select(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
-
- BEGIN_BATCH(batch, 1);
- OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_MEDIA);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen6_pp_state_base_address(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
-
- BEGIN_BATCH(batch, 10);
- OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | (10 - 2));
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_RELOC(batch, pp_context->surface_state_binding_table.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY); /* Surface state base address */
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen6_pp_vfe_state(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
-
- BEGIN_BATCH(batch, 8);
- OUT_BATCH(batch, CMD_MEDIA_VFE_STATE | (8 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch,
- (pp_context->vfe_gpu_state.max_num_threads - 1) << 16 |
- pp_context->vfe_gpu_state.num_urb_entries << 8);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch,
- (pp_context->vfe_gpu_state.urb_entry_size) << 16 |
- /* URB Entry Allocation Size, in 256 bits unit */
- (pp_context->vfe_gpu_state.curbe_allocation_size));
- /* CURBE Allocation Size, in 256 bits unit */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen6_pp_curbe_load(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- int param_size;
-
- if (IS_GEN7(i965->intel.device_info))
- param_size = sizeof(struct gen7_pp_static_parameter);
- else
- param_size = sizeof(struct pp_static_parameter);
-
- BEGIN_BATCH(batch, 4);
- OUT_BATCH(batch, CMD_MEDIA_CURBE_LOAD | (4 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch,
- param_size);
- OUT_RELOC(batch,
- pp_context->curbe.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen6_interface_descriptor_load(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
-
- BEGIN_BATCH(batch, 4);
- OUT_BATCH(batch, CMD_MEDIA_INTERFACE_DESCRIPTOR_LOAD | (4 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch,
- pp_context->idrt.num_interface_descriptors * sizeof(struct gen6_interface_descriptor_data));
- OUT_RELOC(batch,
- pp_context->idrt.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- ADVANCE_BATCH(batch);
-}
-
-static void update_block_mask_parameter(struct i965_post_processing_context *pp_context, int x, int y, int x_steps, int y_steps)
-{
- struct pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
-
- pp_inline_parameter->grf5.block_vertical_mask = 0xff;
- pp_inline_parameter->grf6.block_vertical_mask_bottom = pp_context->block_vertical_mask_bottom;
- // for the first block, it always on the left edge. the second block will reload horizontal_mask from grf6.block_horizontal_mask_middle
- pp_inline_parameter->grf5.block_horizontal_mask = pp_context->block_horizontal_mask_left;
- pp_inline_parameter->grf6.block_horizontal_mask_middle = 0xffff;
- pp_inline_parameter->grf6.block_horizontal_mask_right = pp_context->block_horizontal_mask_right;
-
- /* 1 x N */
- if (x_steps == 1) {
- if (y == y_steps-1) {
- pp_inline_parameter->grf5.block_vertical_mask = pp_context->block_vertical_mask_bottom;
- }
- else {
- pp_inline_parameter->grf6.block_vertical_mask_bottom = 0xff;
- }
- }
-
- /* M x 1 */
- if (y_steps == 1) {
- if (x == 0) { // all blocks in this group are on the left edge
- pp_inline_parameter->grf6.block_horizontal_mask_middle = pp_context->block_horizontal_mask_left;
- pp_inline_parameter->grf6.block_horizontal_mask_right = pp_context->block_horizontal_mask_left;
- }
- else if (x == x_steps-1) {
- pp_inline_parameter->grf5.block_horizontal_mask = pp_context->block_horizontal_mask_right;
- pp_inline_parameter->grf6.block_horizontal_mask_middle = pp_context->block_horizontal_mask_right;
- }
- else {
- pp_inline_parameter->grf5.block_horizontal_mask = 0xffff;
- pp_inline_parameter->grf6.block_horizontal_mask_middle = 0xffff;
- pp_inline_parameter->grf6.block_horizontal_mask_right = 0xffff;
- }
- }
-
-}
-
-static void
-gen6_pp_object_walker(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = pp_context->batch;
- int x, x_steps, y, y_steps;
- int param_size, command_length_in_dws;
- dri_bo *command_buffer;
- unsigned int *command_ptr;
-
- if (IS_GEN7(i965->intel.device_info))
- param_size = sizeof(struct gen7_pp_inline_parameter);
- else
- param_size = sizeof(struct pp_inline_parameter);
-
- x_steps = pp_context->pp_x_steps(pp_context->private_context);
- y_steps = pp_context->pp_y_steps(pp_context->private_context);
- command_length_in_dws = 6 + (param_size >> 2);
- command_buffer = dri_bo_alloc(i965->intel.bufmgr,
- "command objects buffer",
- command_length_in_dws * 4 * x_steps * y_steps + 8,
- 4096);
-
- dri_bo_map(command_buffer, 1);
- command_ptr = command_buffer->virtual;
-
- for (y = 0; y < y_steps; y++) {
- for (x = 0; x < x_steps; x++) {
- if (!pp_context->pp_set_block_parameter(pp_context, x, y)) {
- // some common block parameter update goes here, apply to all pp functions
- if (IS_GEN6(i965->intel.device_info))
- update_block_mask_parameter (pp_context, x, y, x_steps, y_steps);
-
- *command_ptr++ = (CMD_MEDIA_OBJECT | (command_length_in_dws - 2));
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- *command_ptr++ = 0;
- memcpy(command_ptr, pp_context->pp_inline_parameter, param_size);
- command_ptr += (param_size >> 2);
- }
- }
- }
-
- if (command_length_in_dws * x_steps * y_steps % 2 == 0)
- *command_ptr++ = 0;
-
- *command_ptr = MI_BATCH_BUFFER_END;
-
- dri_bo_unmap(command_buffer);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, MI_BATCH_BUFFER_START | (1 << 8));
- OUT_RELOC(batch, command_buffer,
- I915_GEM_DOMAIN_COMMAND, 0,
- 0);
- ADVANCE_BATCH(batch);
-
- dri_bo_unreference(command_buffer);
-
- /* Have to execute the batch buffer here becuase MI_BATCH_BUFFER_END
- * will cause control to pass back to ring buffer
- */
- intel_batchbuffer_end_atomic(batch);
- intel_batchbuffer_flush(batch);
- intel_batchbuffer_start_atomic(batch, 0x1000);
-}
-
-static void
-gen6_pp_pipeline_setup(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- struct intel_batchbuffer *batch = pp_context->batch;
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- gen6_pp_pipeline_select(ctx, pp_context);
- gen6_pp_state_base_address(ctx, pp_context);
- gen6_pp_vfe_state(ctx, pp_context);
- gen6_pp_curbe_load(ctx, pp_context);
- gen6_interface_descriptor_load(ctx, pp_context);
- gen6_pp_object_walker(ctx, pp_context);
- intel_batchbuffer_end_atomic(batch);
-}
-
-static VAStatus
-gen6_post_processing(
- VADriverContextP ctx,
- struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- int pp_index,
- void *filter_param
-)
-{
- VAStatus va_status;
-
- va_status = gen6_pp_initialize(ctx, pp_context,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect,
- pp_index,
- filter_param);
-
- if (va_status == VA_STATUS_SUCCESS) {
- gen6_pp_states_setup(ctx, pp_context);
- gen6_pp_pipeline_setup(ctx, pp_context);
- }
-
- if (va_status == VA_STATUS_SUCCESS_1)
- va_status = VA_STATUS_SUCCESS;
-
- return va_status;
-}
-
-static VAStatus
-i965_post_processing_internal(
- VADriverContextP ctx,
- struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- int pp_index,
- void *filter_param
-)
-{
- VAStatus va_status;
-
- if (pp_context && pp_context->intel_post_processing) {
- va_status = (pp_context->intel_post_processing)(ctx, pp_context,
- src_surface, src_rect,
- dst_surface, dst_rect,
- pp_index, filter_param);
- } else {
- va_status = VA_STATUS_ERROR_UNIMPLEMENTED;
- }
-
- return va_status;
-}
-
-static void
-rgb_to_yuv(unsigned int argb,
- unsigned char *y,
- unsigned char *u,
- unsigned char *v,
- unsigned char *a)
-{
- int r = ((argb >> 16) & 0xff);
- int g = ((argb >> 8) & 0xff);
- int b = ((argb >> 0) & 0xff);
-
- *y = (257 * r + 504 * g + 98 * b) / 1000 + 16;
- *v = (439 * r - 368 * g - 71 * b) / 1000 + 128;
- *u = (-148 * r - 291 * g + 439 * b) / 1000 + 128;
- *a = ((argb >> 24) & 0xff);
-}
-
-static void
-i965_vpp_clear_surface(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context,
- struct object_surface *obj_surface,
- unsigned int color)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = pp_context->batch;
- unsigned int blt_cmd, br13;
- unsigned int tiling = 0, swizzle = 0;
- int pitch;
- unsigned char y, u, v, a = 0;
- int region_width, region_height;
-
- /* Currently only support NV12 surface */
- if (!obj_surface || obj_surface->fourcc != VA_FOURCC_NV12)
- return;
-
- rgb_to_yuv(color, &y, &u, &v, &a);
-
- if (a == 0)
- return;
-
- dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
- blt_cmd = XY_COLOR_BLT_CMD;
- pitch = obj_surface->width;
-
- if (tiling != I915_TILING_NONE) {
- assert(tiling == I915_TILING_Y);
- // blt_cmd |= XY_COLOR_BLT_DST_TILED;
- // pitch >>= 2;
- }
-
- br13 = 0xf0 << 16;
- br13 |= BR13_8;
- br13 |= pitch;
-
- if (IS_IRONLAKE(i965->intel.device_info)) {
- intel_batchbuffer_start_atomic(batch, 48);
- BEGIN_BATCH(batch, 12);
- } else {
- /* Will double-check the command if the new chipset is added */
- intel_batchbuffer_start_atomic_blt(batch, 48);
- BEGIN_BLT_BATCH(batch, 12);
- }
-
- region_width = obj_surface->width;
- region_height = obj_surface->height;
-
- OUT_BATCH(batch, blt_cmd);
- OUT_BATCH(batch, br13);
- OUT_BATCH(batch,
- 0 << 16 |
- 0);
- OUT_BATCH(batch,
- region_height << 16 |
- region_width);
- OUT_RELOC(batch, obj_surface->bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- 0);
- OUT_BATCH(batch, y);
-
- br13 = 0xf0 << 16;
- br13 |= BR13_565;
- br13 |= pitch;
-
- region_width = obj_surface->width / 2;
- region_height = obj_surface->height / 2;
-
- if (tiling == I915_TILING_Y) {
- region_height = ALIGN(obj_surface->height / 2, 32);
- }
-
- OUT_BATCH(batch, blt_cmd);
- OUT_BATCH(batch, br13);
- OUT_BATCH(batch,
- 0 << 16 |
- 0);
- OUT_BATCH(batch,
- region_height << 16 |
- region_width);
- OUT_RELOC(batch, obj_surface->bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- obj_surface->width * obj_surface->y_cb_offset);
- OUT_BATCH(batch, v << 8 | u);
-
- ADVANCE_BATCH(batch);
- intel_batchbuffer_end_atomic(batch);
-}
-
-VAStatus
-i965_scaling_processing(
- VADriverContextP ctx,
- struct object_surface *src_surface_obj,
- const VARectangle *src_rect,
- struct object_surface *dst_surface_obj,
- const VARectangle *dst_rect,
- unsigned int va_flags)
-{
- VAStatus va_status = VA_STATUS_SUCCESS;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
-
- assert(src_surface_obj->fourcc == VA_FOURCC_NV12);
- assert(dst_surface_obj->fourcc == VA_FOURCC_NV12);
-
- if (HAS_VPP(i965)) {
- struct i965_surface src_surface;
- struct i965_surface dst_surface;
- struct i965_post_processing_context *pp_context;
- unsigned int filter_flags;
-
- _i965LockMutex(&i965->pp_mutex);
-
- src_surface.base = (struct object_base *)src_surface_obj;
- src_surface.type = I965_SURFACE_TYPE_SURFACE;
- src_surface.flags = I965_SURFACE_FLAG_FRAME;
- dst_surface.base = (struct object_base *)dst_surface_obj;
- dst_surface.type = I965_SURFACE_TYPE_SURFACE;
- dst_surface.flags = I965_SURFACE_FLAG_FRAME;
-
- pp_context = i965->pp_context;
- filter_flags = pp_context->filter_flags;
- pp_context->filter_flags = va_flags;
-
- va_status = i965_post_processing_internal(ctx, pp_context,
- &src_surface, src_rect, &dst_surface, dst_rect,
- avs_is_needed(va_flags) ? PP_NV12_AVS : PP_NV12_SCALING, NULL);
-
- pp_context->filter_flags = filter_flags;
-
- _i965UnlockMutex(&i965->pp_mutex);
- }
-
- return va_status;
-}
-
-VASurfaceID
-i965_post_processing(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect,
- unsigned int va_flags,
- int *has_done_scaling,
- VARectangle *calibrated_rect
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VASurfaceID out_surface_id = VA_INVALID_ID;
- VASurfaceID tmp_id = VA_INVALID_ID;
-
- *has_done_scaling = 0;
-
- if (HAS_VPP(i965)) {
- VAStatus status;
- struct i965_surface src_surface;
- struct i965_surface dst_surface;
- struct i965_post_processing_context *pp_context;
-
- /* Currently only support post processing for NV12 surface */
- if (obj_surface->fourcc != VA_FOURCC_NV12)
- return out_surface_id;
-
- _i965LockMutex(&i965->pp_mutex);
-
- pp_context = i965->pp_context;
- pp_context->filter_flags = va_flags;
- if (avs_is_needed(va_flags)) {
- VARectangle tmp_dst_rect;
-
- if (out_surface_id != VA_INVALID_ID)
- tmp_id = out_surface_id;
-
- tmp_dst_rect.x = 0;
- tmp_dst_rect.y = 0;
- tmp_dst_rect.width = dst_rect->width;
- tmp_dst_rect.height = dst_rect->height;
- src_surface.base = (struct object_base *)obj_surface;
- src_surface.type = I965_SURFACE_TYPE_SURFACE;
- src_surface.flags = I965_SURFACE_FLAG_FRAME;
-
- status = i965_CreateSurfaces(ctx,
- dst_rect->width,
- dst_rect->height,
- VA_RT_FORMAT_YUV420,
- 1,
- &out_surface_id);
- assert(status == VA_STATUS_SUCCESS);
- obj_surface = SURFACE(out_surface_id);
- assert(obj_surface);
- i965_check_alloc_surface_bo(ctx, obj_surface, 0, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
- i965_vpp_clear_surface(ctx, pp_context, obj_surface, 0);
-
- dst_surface.base = (struct object_base *)obj_surface;
- dst_surface.type = I965_SURFACE_TYPE_SURFACE;
- dst_surface.flags = I965_SURFACE_FLAG_FRAME;
-
- i965_post_processing_internal(ctx, pp_context,
- &src_surface,
- src_rect,
- &dst_surface,
- &tmp_dst_rect,
- PP_NV12_AVS,
- NULL);
-
- if (tmp_id != VA_INVALID_ID)
- i965_DestroySurfaces(ctx, &tmp_id, 1);
-
- *has_done_scaling = 1;
- calibrated_rect->x = 0;
- calibrated_rect->y = 0;
- calibrated_rect->width = dst_rect->width;
- calibrated_rect->height = dst_rect->height;
- }
-
- _i965UnlockMutex(&i965->pp_mutex);
- }
-
- return out_surface_id;
-}
-
-static VAStatus
-i965_image_pl2_processing(VADriverContextP ctx,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect);
-
-static VAStatus
-i965_image_plx_nv12_plx_processing(VADriverContextP ctx,
- VAStatus (*i965_image_plx_nv12_processing)(
- VADriverContextP,
- const struct i965_surface *,
- const VARectangle *,
- struct i965_surface *,
- const VARectangle *),
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VAStatus status;
- VASurfaceID tmp_surface_id = VA_INVALID_SURFACE;
- struct object_surface *obj_surface = NULL;
- struct i965_surface tmp_surface;
- int width, height;
-
- pp_get_surface_size(ctx, dst_surface, &width, &height);
- status = i965_CreateSurfaces(ctx,
- width,
- height,
- VA_RT_FORMAT_YUV420,
- 1,
- &tmp_surface_id);
- assert(status == VA_STATUS_SUCCESS);
- obj_surface = SURFACE(tmp_surface_id);
- assert(obj_surface);
- i965_check_alloc_surface_bo(ctx, obj_surface, 0, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
-
- tmp_surface.base = (struct object_base *)obj_surface;
- tmp_surface.type = I965_SURFACE_TYPE_SURFACE;
- tmp_surface.flags = I965_SURFACE_FLAG_FRAME;
-
- status = i965_image_plx_nv12_processing(ctx,
- src_surface,
- src_rect,
- &tmp_surface,
- dst_rect);
-
- if (status == VA_STATUS_SUCCESS)
- status = i965_image_pl2_processing(ctx,
- &tmp_surface,
- dst_rect,
- dst_surface,
- dst_rect);
-
- i965_DestroySurfaces(ctx,
- &tmp_surface_id,
- 1);
-
- return status;
-}
-
-
-static VAStatus
-i965_image_pl1_rgbx_processing(VADriverContextP ctx,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_post_processing_context *pp_context = i965->pp_context;
- int fourcc = pp_get_surface_fourcc(ctx, dst_surface);
- VAStatus vaStatus;
-
- switch (fourcc) {
- case VA_FOURCC_NV12:
- vaStatus = i965_post_processing_internal(ctx, i965->pp_context,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect,
- PP_RGBX_LOAD_SAVE_NV12,
- NULL);
- intel_batchbuffer_flush(pp_context->batch);
- break;
-
- default:
- vaStatus = i965_image_plx_nv12_plx_processing(ctx,
- i965_image_pl1_rgbx_processing,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect);
- break;
- }
-
- return vaStatus;
-}
-
-static VAStatus
-i965_image_pl3_processing(VADriverContextP ctx,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_post_processing_context *pp_context = i965->pp_context;
- int fourcc = pp_get_surface_fourcc(ctx, dst_surface);
- VAStatus vaStatus = VA_STATUS_ERROR_UNIMPLEMENTED;
-
- switch (fourcc) {
- case VA_FOURCC_NV12:
- vaStatus = i965_post_processing_internal(ctx, i965->pp_context,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect,
- PP_PL3_LOAD_SAVE_N12,
- NULL);
- intel_batchbuffer_flush(pp_context->batch);
- break;
-
- case VA_FOURCC_IMC1:
- case VA_FOURCC_IMC3:
- case VA_FOURCC_YV12:
- case VA_FOURCC_I420:
- vaStatus = i965_post_processing_internal(ctx, i965->pp_context,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect,
- PP_PL3_LOAD_SAVE_PL3,
- NULL);
- intel_batchbuffer_flush(pp_context->batch);
- break;
-
- case VA_FOURCC_YUY2:
- case VA_FOURCC_UYVY:
- vaStatus = i965_post_processing_internal(ctx, i965->pp_context,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect,
- PP_PL3_LOAD_SAVE_PA,
- NULL);
- intel_batchbuffer_flush(pp_context->batch);
- break;
-
- default:
- vaStatus = i965_image_plx_nv12_plx_processing(ctx,
- i965_image_pl3_processing,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect);
- break;
- }
-
- return vaStatus;
-}
-
-static VAStatus
-i965_image_pl2_processing(VADriverContextP ctx,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_post_processing_context *pp_context = i965->pp_context;
- int fourcc = pp_get_surface_fourcc(ctx, dst_surface);
- VAStatus vaStatus = VA_STATUS_ERROR_UNIMPLEMENTED;
-
- switch (fourcc) {
- case VA_FOURCC_NV12:
- vaStatus = i965_post_processing_internal(ctx, i965->pp_context,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect,
- PP_NV12_LOAD_SAVE_N12,
- NULL);
- break;
-
- case VA_FOURCC_IMC1:
- case VA_FOURCC_IMC3:
- case VA_FOURCC_YV12:
- case VA_FOURCC_I420:
- vaStatus = i965_post_processing_internal(ctx, i965->pp_context,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect,
- PP_NV12_LOAD_SAVE_PL3,
- NULL);
- break;
-
- case VA_FOURCC_YUY2:
- case VA_FOURCC_UYVY:
- vaStatus = i965_post_processing_internal(ctx, i965->pp_context,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect,
- PP_NV12_LOAD_SAVE_PA,
- NULL);
- break;
-
- case VA_FOURCC_BGRX:
- case VA_FOURCC_BGRA:
- case VA_FOURCC_RGBX:
- case VA_FOURCC_RGBA:
- vaStatus = i965_post_processing_internal(ctx, i965->pp_context,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect,
- PP_NV12_LOAD_SAVE_RGBX,
- NULL);
- break;
-
- default:
- return VA_STATUS_ERROR_UNIMPLEMENTED;
- }
-
- intel_batchbuffer_flush(pp_context->batch);
-
- return vaStatus;
-}
-
-static VAStatus
-i965_image_pl1_processing(VADriverContextP ctx,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_post_processing_context *pp_context = i965->pp_context;
- int fourcc = pp_get_surface_fourcc(ctx, dst_surface);
- VAStatus vaStatus;
-
- switch (fourcc) {
- case VA_FOURCC_NV12:
- vaStatus = i965_post_processing_internal(ctx, i965->pp_context,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect,
- PP_PA_LOAD_SAVE_NV12,
- NULL);
- intel_batchbuffer_flush(pp_context->batch);
- break;
-
- case VA_FOURCC_YV12:
- vaStatus = i965_post_processing_internal(ctx, i965->pp_context,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect,
- PP_PA_LOAD_SAVE_PL3,
- NULL);
- intel_batchbuffer_flush(pp_context->batch);
- break;
-
- case VA_FOURCC_YUY2:
- case VA_FOURCC_UYVY:
- vaStatus = i965_post_processing_internal(ctx, i965->pp_context,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect,
- PP_PA_LOAD_SAVE_PA,
- NULL);
- intel_batchbuffer_flush(pp_context->batch);
- break;
-
- default:
- vaStatus = i965_image_plx_nv12_plx_processing(ctx,
- i965_image_pl1_processing,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect);
- break;
- }
-
- return vaStatus;
-}
-
-// it only support NV12 and P010 for vebox proc ctx
-static struct object_surface *derive_surface(VADriverContextP ctx,
- struct object_image *obj_image,
- struct object_surface *obj_surface)
-{
- VAImage * const image = &obj_image->image;
-
- memset((void *)obj_surface, 0, sizeof(*obj_surface));
- obj_surface->fourcc = image->format.fourcc;
- obj_surface->orig_width = image->width;
- obj_surface->orig_height = image->height;
- obj_surface->width = image->pitches[0];
- obj_surface->height = image->height;
- obj_surface->y_cb_offset = image->offsets[1] / obj_surface->width;
- obj_surface->y_cr_offset = obj_surface->y_cb_offset;
- obj_surface->bo = obj_image->bo;
- obj_surface->subsampling = SUBSAMPLE_YUV420;
-
- return obj_surface;
-}
-
-static VAStatus
-vebox_processing_simple(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context,
- struct object_surface *src_obj_surface,
- struct object_surface *dst_obj_surface,
- const VARectangle *rect)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VAProcPipelineParameterBuffer pipeline_param;
- VAStatus status = VA_STATUS_ERROR_UNIMPLEMENTED;
-
- if(pp_context->vebox_proc_ctx == NULL) {
- pp_context->vebox_proc_ctx = gen75_vebox_context_init(ctx);
- }
-
- memset((void *)&pipeline_param, 0, sizeof(pipeline_param));
- pipeline_param.surface_region = rect;
- pipeline_param.output_region = rect;
- pipeline_param.filter_flags = 0;
- pipeline_param.num_filters = 0;
-
- pp_context->vebox_proc_ctx->pipeline_param = &pipeline_param;
- pp_context->vebox_proc_ctx->surface_input_object = src_obj_surface;
- pp_context->vebox_proc_ctx->surface_output_object = dst_obj_surface;
-
- if (IS_GEN9(i965->intel.device_info))
- status = gen9_vebox_process_picture(ctx, pp_context->vebox_proc_ctx);
-
- return status;
-}
-
-static VAStatus
-i965_image_p010_processing(VADriverContextP ctx,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect)
-{
-#define HAS_VPP_P010(ctx) ((ctx)->codec_info->has_vpp_p010 && \
- (ctx)->intel.has_bsd)
-
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_post_processing_context *pp_context = i965->pp_context;
- struct object_surface *src_obj_surface = NULL, *dst_obj_surface = NULL;
- struct object_surface tmp_src_obj_surface, tmp_dst_obj_surface;
- struct object_surface *tmp_surface = NULL;
- VASurfaceID tmp_surface_id[3], out_surface_id = VA_INVALID_ID;
- int num_tmp_surfaces = 0;
- int fourcc = pp_get_surface_fourcc(ctx, dst_surface);
- VAStatus vaStatus = VA_STATUS_ERROR_UNIMPLEMENTED;
- int vpp_post = 0;
-
- if(HAS_VPP_P010(i965)) {
- vpp_post = 0;
- switch(fourcc) {
- case VA_FOURCC_NV12:
- if(src_rect->x != dst_rect->x ||
- src_rect->y != dst_rect->y ||
- src_rect->width != dst_rect->width ||
- src_rect->height != dst_rect->height) {
- vpp_post = 1;
- }
- break;
- case VA_FOURCC_P010:
- // don't support scaling while the fourcc of dst_surface is P010
- if(src_rect->x != dst_rect->x ||
- src_rect->y != dst_rect->y ||
- src_rect->width != dst_rect->width ||
- src_rect->height != dst_rect->height) {
- vaStatus = VA_STATUS_ERROR_UNIMPLEMENTED;
- goto EXIT;
- }
- break;
- default:
- vpp_post = 1;
- break;
- }
-
- if(src_surface->type == I965_SURFACE_TYPE_IMAGE) {
- src_obj_surface = derive_surface(ctx, (struct object_image *)src_surface->base,
- &tmp_src_obj_surface);
- }
- else
- src_obj_surface = (struct object_surface *)src_surface->base;
-
- if(src_obj_surface == NULL) {
- vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED;
- goto EXIT;
- }
-
- if(vpp_post == 1) {
- vaStatus = i965_CreateSurfaces(ctx,
- src_obj_surface->orig_width,
- src_obj_surface->orig_height,
- VA_RT_FORMAT_YUV420,
- 1,
- &out_surface_id);
- assert(vaStatus == VA_STATUS_SUCCESS);
- tmp_surface_id[num_tmp_surfaces++] = out_surface_id;
- tmp_surface = SURFACE(out_surface_id);
- assert(tmp_surface);
- i965_check_alloc_surface_bo(ctx, tmp_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
- }
-
- if(tmp_surface != NULL)
- dst_obj_surface = tmp_surface;
- else {
- if(dst_surface->type == I965_SURFACE_TYPE_IMAGE) {
- dst_obj_surface = derive_surface(ctx, (struct object_image *)dst_surface->base,
- &tmp_dst_obj_surface);
- }
- else
- dst_obj_surface = (struct object_surface *)dst_surface->base;
- }
-
- if(dst_obj_surface == NULL) {
- vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED;
- goto EXIT;
- }
-
- vaStatus = vebox_processing_simple(ctx,
- pp_context,
- src_obj_surface,
- dst_obj_surface,
- src_rect);
- if(vaStatus != VA_STATUS_SUCCESS)
- goto EXIT;
-
- if(vpp_post == 1) {
- struct i965_surface src_surface_new;
-
- if(tmp_surface != NULL){
- src_surface_new.base = (struct object_base *)tmp_surface;
- src_surface_new.type = I965_SURFACE_TYPE_SURFACE;
- src_surface_new.flags = I965_SURFACE_FLAG_FRAME;
- }
- else
- memcpy((void *)&src_surface_new, (void *)src_surface, sizeof(src_surface_new));
-
- vaStatus = i965_image_pl2_processing(ctx,
- &src_surface_new,
- src_rect,
- dst_surface,
- dst_rect);
- }
- }
-
-EXIT:
- if(num_tmp_surfaces)
- i965_DestroySurfaces(ctx,
- tmp_surface_id,
- num_tmp_surfaces);
-
- return vaStatus;
-}
-
-VAStatus
-i965_image_processing(VADriverContextP ctx,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- VAStatus status = VA_STATUS_ERROR_UNIMPLEMENTED;
-
- if (HAS_VPP(i965)) {
- int fourcc = pp_get_surface_fourcc(ctx, src_surface);
-
- _i965LockMutex(&i965->pp_mutex);
-
- switch (fourcc) {
- case VA_FOURCC_YV12:
- case VA_FOURCC_I420:
- case VA_FOURCC_IMC1:
- case VA_FOURCC_IMC3:
- case VA_FOURCC_422H:
- case VA_FOURCC_422V:
- case VA_FOURCC_411P:
- case VA_FOURCC_444P:
- case VA_FOURCC_YV16:
- status = i965_image_pl3_processing(ctx,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect);
- break;
-
- case VA_FOURCC_NV12:
- status = i965_image_pl2_processing(ctx,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect);
- break;
- case VA_FOURCC_YUY2:
- case VA_FOURCC_UYVY:
- status = i965_image_pl1_processing(ctx,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect);
- break;
- case VA_FOURCC_BGRA:
- case VA_FOURCC_BGRX:
- case VA_FOURCC_RGBA:
- case VA_FOURCC_RGBX:
- status = i965_image_pl1_rgbx_processing(ctx,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect);
- break;
- case VA_FOURCC_P010:
- status = i965_image_p010_processing(ctx,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect);
- break;
- default:
- status = VA_STATUS_ERROR_UNIMPLEMENTED;
- break;
- }
-
- _i965UnlockMutex(&i965->pp_mutex);
- }
-
- return status;
-}
-
-static void
-i965_post_processing_context_finalize(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context)
-{
- int i;
-
- dri_bo_unreference(pp_context->surface_state_binding_table.bo);
- pp_context->surface_state_binding_table.bo = NULL;
-
- dri_bo_unreference(pp_context->curbe.bo);
- pp_context->curbe.bo = NULL;
-
- dri_bo_unreference(pp_context->sampler_state_table.bo);
- pp_context->sampler_state_table.bo = NULL;
-
- dri_bo_unreference(pp_context->sampler_state_table.bo_8x8);
- pp_context->sampler_state_table.bo_8x8 = NULL;
-
- dri_bo_unreference(pp_context->sampler_state_table.bo_8x8_uv);
- pp_context->sampler_state_table.bo_8x8_uv = NULL;
-
- dri_bo_unreference(pp_context->idrt.bo);
- pp_context->idrt.bo = NULL;
- pp_context->idrt.num_interface_descriptors = 0;
-
- dri_bo_unreference(pp_context->vfe_state.bo);
- pp_context->vfe_state.bo = NULL;
-
- for (i = 0; i < ARRAY_ELEMS(pp_context->pp_dndi_context.frame_store); i++)
- pp_dndi_frame_store_clear(&pp_context->pp_dndi_context.frame_store[i],
- ctx);
-
- dri_bo_unreference(pp_context->pp_dn_context.stmm_bo);
- pp_context->pp_dn_context.stmm_bo = NULL;
-
- for (i = 0; i < NUM_PP_MODULES; i++) {
- struct pp_module *pp_module = &pp_context->pp_modules[i];
-
- dri_bo_unreference(pp_module->kernel.bo);
- pp_module->kernel.bo = NULL;
- }
-
- free(pp_context->pp_static_parameter);
- free(pp_context->pp_inline_parameter);
- pp_context->pp_static_parameter = NULL;
- pp_context->pp_inline_parameter = NULL;
-}
-
-void
-i965_post_processing_terminate(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_post_processing_context *pp_context = i965->pp_context;
-
- if (pp_context) {
- pp_context->finalize(ctx, pp_context);
- free(pp_context);
- }
-
- i965->pp_context = NULL;
-}
-
-#define VPP_CURBE_ALLOCATION_SIZE 32
-
-void
-i965_post_processing_context_init(VADriverContextP ctx,
- void *data,
- struct intel_batchbuffer *batch)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- int i;
- struct i965_post_processing_context *pp_context = data;
- const AVSConfig *avs_config;
-
- if (IS_IRONLAKE(i965->intel.device_info)) {
- pp_context->urb.size = i965->intel.device_info->urb_size;
- pp_context->urb.num_vfe_entries = 32;
- pp_context->urb.size_vfe_entry = 1; /* in 512 bits unit */
- pp_context->urb.num_cs_entries = 1;
- pp_context->urb.size_cs_entry = 2;
- pp_context->urb.vfe_start = 0;
- pp_context->urb.cs_start = pp_context->urb.vfe_start +
- pp_context->urb.num_vfe_entries * pp_context->urb.size_vfe_entry;
- assert(pp_context->urb.cs_start +
- pp_context->urb.num_cs_entries * pp_context->urb.size_cs_entry <= i965->intel.device_info->urb_size);
- pp_context->intel_post_processing = ironlake_post_processing;
- } else {
- pp_context->vfe_gpu_state.max_num_threads = 60;
- pp_context->vfe_gpu_state.num_urb_entries = 59;
- pp_context->vfe_gpu_state.gpgpu_mode = 0;
- pp_context->vfe_gpu_state.urb_entry_size = 16 - 1;
- pp_context->vfe_gpu_state.curbe_allocation_size = VPP_CURBE_ALLOCATION_SIZE;
- pp_context->intel_post_processing = gen6_post_processing;
- }
-
- pp_context->finalize = i965_post_processing_context_finalize;
-
- assert(NUM_PP_MODULES == ARRAY_ELEMS(pp_modules_gen5));
- assert(NUM_PP_MODULES == ARRAY_ELEMS(pp_modules_gen6));
- assert(NUM_PP_MODULES == ARRAY_ELEMS(pp_modules_gen7));
- assert(NUM_PP_MODULES == ARRAY_ELEMS(pp_modules_gen75));
-
- if (IS_HASWELL(i965->intel.device_info))
- memcpy(pp_context->pp_modules, pp_modules_gen75, sizeof(pp_context->pp_modules));
- else if (IS_GEN7(i965->intel.device_info))
- memcpy(pp_context->pp_modules, pp_modules_gen7, sizeof(pp_context->pp_modules));
- else if (IS_GEN6(i965->intel.device_info))
- memcpy(pp_context->pp_modules, pp_modules_gen6, sizeof(pp_context->pp_modules));
- else if (IS_IRONLAKE(i965->intel.device_info))
- memcpy(pp_context->pp_modules, pp_modules_gen5, sizeof(pp_context->pp_modules));
-
- for (i = 0; i < NUM_PP_MODULES; i++) {
- struct pp_module *pp_module = &pp_context->pp_modules[i];
- dri_bo_unreference(pp_module->kernel.bo);
- if (pp_module->kernel.bin && pp_module->kernel.size) {
- pp_module->kernel.bo = dri_bo_alloc(i965->intel.bufmgr,
- pp_module->kernel.name,
- pp_module->kernel.size,
- 4096);
- assert(pp_module->kernel.bo);
- dri_bo_subdata(pp_module->kernel.bo, 0, pp_module->kernel.size, pp_module->kernel.bin);
- } else {
- pp_module->kernel.bo = NULL;
- }
- }
-
- /* static & inline parameters */
- if (IS_GEN7(i965->intel.device_info)) {
- pp_context->pp_static_parameter = calloc(sizeof(struct gen7_pp_static_parameter), 1);
- pp_context->pp_inline_parameter = calloc(sizeof(struct gen7_pp_inline_parameter), 1);
- } else {
- pp_context->pp_static_parameter = calloc(sizeof(struct pp_static_parameter), 1);
- pp_context->pp_inline_parameter = calloc(sizeof(struct pp_inline_parameter), 1);
- }
-
- pp_context->batch = batch;
- pp_dndi_context_init(&pp_context->pp_dndi_context);
-
- avs_config = IS_IRONLAKE(i965->intel.device_info) ? &gen5_avs_config :
- &gen6_avs_config;
- avs_init_state(&pp_context->pp_avs_context.state, avs_config);
-}
-
-bool
-i965_post_processing_init(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_post_processing_context *pp_context = i965->pp_context;
-
- if (HAS_VPP(i965)) {
- if (pp_context == NULL) {
- pp_context = calloc(1, sizeof(*pp_context));
- assert(pp_context);
- i965->codec_info->post_processing_context_init(ctx, pp_context, i965->pp_batch);
- i965->pp_context = pp_context;
- }
- }
-
- return true;
-}
-
-static const int procfilter_to_pp_flag[VAProcFilterCount] = {
- PP_NULL, /* VAProcFilterNone */
- PP_NV12_DN, /* VAProcFilterNoiseReduction */
- PP_NV12_DNDI, /* VAProcFilterDeinterlacing */
- PP_NULL, /* VAProcFilterSharpening */
- PP_NULL, /* VAProcFilterColorBalance */
-};
-
-static const int proc_frame_to_pp_frame[3] = {
- I965_SURFACE_FLAG_FRAME,
- I965_SURFACE_FLAG_TOP_FIELD_FIRST,
- I965_SURFACE_FLAG_BOTTOME_FIELD_FIRST
-};
-
-enum {
- PP_OP_CHANGE_FORMAT = 1 << 0,
- PP_OP_CHANGE_SIZE = 1 << 1,
- PP_OP_DEINTERLACE = 1 << 2,
- PP_OP_COMPLEX = 1 << 3,
-};
-
-static int
-pp_get_kernel_index(uint32_t src_fourcc, uint32_t dst_fourcc, uint32_t pp_ops,
- uint32_t filter_flags)
-{
- int pp_index = -1;
-
- if (!dst_fourcc)
- dst_fourcc = src_fourcc;
-
- switch (src_fourcc) {
- case VA_FOURCC_RGBX:
- case VA_FOURCC_RGBA:
- case VA_FOURCC_BGRX:
- case VA_FOURCC_BGRA:
- switch (dst_fourcc) {
- case VA_FOURCC_NV12:
- pp_index = PP_RGBX_LOAD_SAVE_NV12;
- break;
- }
- break;
- case VA_FOURCC_YUY2:
- case VA_FOURCC_UYVY:
- switch (dst_fourcc) {
- case VA_FOURCC_NV12:
- pp_index = PP_PA_LOAD_SAVE_NV12;
- break;
- case VA_FOURCC_I420:
- case VA_FOURCC_YV12:
- pp_index = PP_PA_LOAD_SAVE_PL3;
- break;
- case VA_FOURCC_YUY2:
- case VA_FOURCC_UYVY:
- pp_index = PP_PA_LOAD_SAVE_PA;
- break;
- }
- break;
- case VA_FOURCC_NV12:
- switch (dst_fourcc) {
- case VA_FOURCC_NV12:
- if (pp_ops & PP_OP_CHANGE_SIZE)
- pp_index = avs_is_needed(filter_flags) ?
- PP_NV12_AVS : PP_NV12_SCALING;
- else
- pp_index = PP_NV12_LOAD_SAVE_N12;
- break;
- case VA_FOURCC_I420:
- case VA_FOURCC_YV12:
- case VA_FOURCC_IMC1:
- case VA_FOURCC_IMC3:
- pp_index = PP_NV12_LOAD_SAVE_PL3;
- break;
- case VA_FOURCC_YUY2:
- case VA_FOURCC_UYVY:
- pp_index = PP_NV12_LOAD_SAVE_PA;
- break;
- case VA_FOURCC_RGBX:
- case VA_FOURCC_RGBA:
- case VA_FOURCC_BGRX:
- case VA_FOURCC_BGRA:
- pp_index = PP_NV12_LOAD_SAVE_RGBX;
- break;
- }
- break;
- case VA_FOURCC_I420:
- case VA_FOURCC_YV12:
- case VA_FOURCC_IMC1:
- case VA_FOURCC_IMC3:
- case VA_FOURCC_YV16:
- case VA_FOURCC_411P:
- case VA_FOURCC_422H:
- case VA_FOURCC_422V:
- case VA_FOURCC_444P:
- switch (dst_fourcc) {
- case VA_FOURCC_NV12:
- pp_index = PP_PL3_LOAD_SAVE_N12;
- break;
- case VA_FOURCC_I420:
- case VA_FOURCC_YV12:
- case VA_FOURCC_IMC1:
- case VA_FOURCC_IMC3:
- pp_index = PP_PL3_LOAD_SAVE_PL3;
- break;
- case VA_FOURCC_YUY2:
- case VA_FOURCC_UYVY:
- pp_index = PP_PL3_LOAD_SAVE_PA;
- break;
- }
- break;
- }
- return pp_index;
-}
-
-static VAStatus
-i965_proc_picture_fast(VADriverContextP ctx,
- struct i965_proc_context *proc_context, struct proc_state *proc_state)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- const VAProcPipelineParameterBuffer * const pipeline_param =
- (VAProcPipelineParameterBuffer *)proc_state->pipeline_param->buffer;
- struct object_surface *src_obj_surface, *dst_obj_surface;
- struct i965_surface src_surface, dst_surface;
- const VAProcFilterParameterBufferDeinterlacing *deint_params = NULL;
- VARectangle src_rect, dst_rect;
- VAStatus status;
- uint32_t i, filter_flags = 0, pp_ops = 0;
- int pp_index;
-
- /* Validate pipeline parameters */
- if (pipeline_param->num_filters > 0 && !pipeline_param->filters)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- for (i = 0; i < pipeline_param->num_filters; i++) {
- const VAProcFilterParameterBuffer *filter;
- struct object_buffer * const obj_buffer =
- BUFFER(pipeline_param->filters[i]);
-
- assert(obj_buffer && obj_buffer->buffer_store);
- if (!obj_buffer || !obj_buffer->buffer_store)
- return VA_STATUS_ERROR_INVALID_PARAMETER;
-
- filter = (VAProcFilterParameterBuffer *)
- obj_buffer->buffer_store->buffer;
- switch (filter->type) {
- case VAProcFilterDeinterlacing:
- pp_ops |= PP_OP_DEINTERLACE;
- deint_params = (VAProcFilterParameterBufferDeinterlacing *)filter;
- break;
- default:
- pp_ops |= PP_OP_COMPLEX;
- break;
- }
- }
- filter_flags |= pipeline_param->filter_flags & VA_FILTER_SCALING_MASK;
-
- /* Validate source surface */
- src_obj_surface = SURFACE(pipeline_param->surface);
- if (!src_obj_surface)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- if (!src_obj_surface->fourcc)
- return VA_STATUS_ERROR_INVALID_IMAGE_FORMAT;
-
- if (pipeline_param->surface_region) {
- src_rect.x = pipeline_param->surface_region->x;
- src_rect.y = pipeline_param->surface_region->y;
- src_rect.width = pipeline_param->surface_region->width;
- src_rect.height = pipeline_param->surface_region->height;
- } else {
- src_rect.x = 0;
- src_rect.y = 0;
- src_rect.width = src_obj_surface->orig_width;
- src_rect.height = src_obj_surface->orig_height;
- }
-
- src_surface.base = &src_obj_surface->base;
- src_surface.type = I965_SURFACE_TYPE_SURFACE;
- src_surface.flags = I965_SURFACE_FLAG_FRAME;
-
- if (pp_ops & PP_OP_DEINTERLACE) {
- filter_flags |= !(deint_params->flags & VA_DEINTERLACING_BOTTOM_FIELD) ?
- VA_TOP_FIELD : VA_BOTTOM_FIELD;
- if (deint_params->algorithm != VAProcDeinterlacingBob)
- pp_ops |= PP_OP_COMPLEX;
- }
- else if (pipeline_param->filter_flags & (VA_TOP_FIELD | VA_BOTTOM_FIELD)) {
- filter_flags |= (pipeline_param->filter_flags & VA_TOP_FIELD) ?
- VA_TOP_FIELD : VA_BOTTOM_FIELD;
- pp_ops |= PP_OP_DEINTERLACE;
- }
- if (pp_ops & PP_OP_DEINTERLACE) // XXX: no bob-deinterlacing optimization yet
- pp_ops |= PP_OP_COMPLEX;
-
- /* Validate target surface */
- dst_obj_surface = SURFACE(proc_state->current_render_target);
- if (!dst_obj_surface)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- if (!dst_obj_surface->bo)
- return VA_STATUS_ERROR_INVALID_SURFACE;
-
- if (dst_obj_surface->fourcc &&
- dst_obj_surface->fourcc != src_obj_surface->fourcc)
- pp_ops |= PP_OP_CHANGE_FORMAT;
-
- if (pipeline_param->output_region) {
- dst_rect.x = pipeline_param->output_region->x;
- dst_rect.y = pipeline_param->output_region->y;
- dst_rect.width = pipeline_param->output_region->width;
- dst_rect.height = pipeline_param->output_region->height;
- } else {
- dst_rect.x = 0;
- dst_rect.y = 0;
- dst_rect.width = dst_obj_surface->orig_width;
- dst_rect.height = dst_obj_surface->orig_height;
- }
-
- if (dst_rect.width != src_rect.width || dst_rect.height != src_rect.height)
- pp_ops |= PP_OP_CHANGE_SIZE;
-
- dst_surface.base = &dst_obj_surface->base;
- dst_surface.type = I965_SURFACE_TYPE_SURFACE;
- dst_surface.flags = I965_SURFACE_FLAG_FRAME;
-
- /* Validate "fast-path" processing capabilities */
- if (!IS_GEN7(i965->intel.device_info)) {
- if ((pp_ops & PP_OP_CHANGE_FORMAT) && (pp_ops & PP_OP_CHANGE_SIZE))
- return VA_STATUS_ERROR_UNIMPLEMENTED; // temporary surface is needed
- }
- if (pipeline_param->pipeline_flags & VA_PROC_PIPELINE_FAST) {
- filter_flags &= ~VA_FILTER_SCALING_MASK;
- filter_flags |= VA_FILTER_SCALING_FAST;
- }
- else {
- if (pp_ops & PP_OP_COMPLEX)
- return VA_STATUS_ERROR_UNIMPLEMENTED; // full pipeline is needed
- if ((filter_flags & VA_FILTER_SCALING_MASK) > VA_FILTER_SCALING_HQ)
- return VA_STATUS_ERROR_UNIMPLEMENTED;
- }
-
- pp_index = pp_get_kernel_index(src_obj_surface->fourcc,
- dst_obj_surface->fourcc, pp_ops, filter_flags);
- if (pp_index < 0)
- return VA_STATUS_ERROR_UNIMPLEMENTED;
-
- proc_context->pp_context.filter_flags = filter_flags;
- status = i965_post_processing_internal(ctx, &proc_context->pp_context,
- &src_surface, &src_rect, &dst_surface, &dst_rect, pp_index, NULL);
- intel_batchbuffer_flush(proc_context->pp_context.batch);
- return status;
-}
-
-VAStatus
-i965_proc_picture(VADriverContextP ctx,
- VAProfile profile,
- union codec_state *codec_state,
- struct hw_context *hw_context)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_proc_context *proc_context = (struct i965_proc_context *)hw_context;
- struct proc_state *proc_state = &codec_state->proc;
- VAProcPipelineParameterBuffer *pipeline_param = (VAProcPipelineParameterBuffer *)proc_state->pipeline_param->buffer;
- struct object_surface *obj_surface;
- struct i965_surface src_surface, dst_surface;
- VARectangle src_rect, dst_rect;
- VAStatus status;
- int i;
- VASurfaceID tmp_surfaces[VAProcFilterCount + 4];
- int num_tmp_surfaces = 0;
- unsigned int tiling = 0, swizzle = 0;
- int in_width, in_height;
-
- status = i965_proc_picture_fast(ctx, proc_context, proc_state);
- if (status != VA_STATUS_ERROR_UNIMPLEMENTED)
- return status;
-
- if (pipeline_param->surface == VA_INVALID_ID ||
- proc_state->current_render_target == VA_INVALID_ID) {
- status = VA_STATUS_ERROR_INVALID_SURFACE;
- goto error;
- }
-
- obj_surface = SURFACE(pipeline_param->surface);
-
- if (!obj_surface) {
- status = VA_STATUS_ERROR_INVALID_SURFACE;
- goto error;
- }
-
- if (!obj_surface->bo) {
- status = VA_STATUS_ERROR_INVALID_VALUE; /* The input surface is created without valid content */
- goto error;
- }
-
- if (pipeline_param->num_filters && !pipeline_param->filters) {
- status = VA_STATUS_ERROR_INVALID_PARAMETER;
- goto error;
- }
-
- in_width = obj_surface->orig_width;
- in_height = obj_surface->orig_height;
- dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle);
-
- src_surface.base = (struct object_base *)obj_surface;
- src_surface.type = I965_SURFACE_TYPE_SURFACE;
- src_surface.flags = proc_frame_to_pp_frame[pipeline_param->filter_flags & 0x3];
-
- VASurfaceID out_surface_id = VA_INVALID_ID;
- if (obj_surface->fourcc != VA_FOURCC_NV12) {
- src_surface.base = (struct object_base *)obj_surface;
- src_surface.type = I965_SURFACE_TYPE_SURFACE;
- src_surface.flags = I965_SURFACE_FLAG_FRAME;
- src_rect.x = 0;
- src_rect.y = 0;
- src_rect.width = in_width;
- src_rect.height = in_height;
-
- status = i965_CreateSurfaces(ctx,
- in_width,
- in_height,
- VA_RT_FORMAT_YUV420,
- 1,
- &out_surface_id);
- if (status != VA_STATUS_SUCCESS)
- goto error;
- tmp_surfaces[num_tmp_surfaces++] = out_surface_id;
- obj_surface = SURFACE(out_surface_id);
- assert(obj_surface);
- i965_check_alloc_surface_bo(ctx, obj_surface, !!tiling, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
-
- dst_surface.base = (struct object_base *)obj_surface;
- dst_surface.type = I965_SURFACE_TYPE_SURFACE;
- dst_surface.flags = I965_SURFACE_FLAG_FRAME;
- dst_rect.x = 0;
- dst_rect.y = 0;
- dst_rect.width = in_width;
- dst_rect.height = in_height;
-
- status = i965_image_processing(ctx,
- &src_surface,
- &src_rect,
- &dst_surface,
- &dst_rect);
- if (status != VA_STATUS_SUCCESS)
- goto error;
-
- src_surface.base = (struct object_base *)obj_surface;
- src_surface.type = I965_SURFACE_TYPE_SURFACE;
- src_surface.flags = proc_frame_to_pp_frame[pipeline_param->filter_flags & 0x3];
- }
-
- if (pipeline_param->surface_region) {
- src_rect.x = pipeline_param->surface_region->x;
- src_rect.y = pipeline_param->surface_region->y;
- src_rect.width = pipeline_param->surface_region->width;
- src_rect.height = pipeline_param->surface_region->height;
- } else {
- src_rect.x = 0;
- src_rect.y = 0;
- src_rect.width = in_width;
- src_rect.height = in_height;
- }
-
- proc_context->pp_context.pipeline_param = pipeline_param;
-
- for (i = 0; i < pipeline_param->num_filters; i++) {
- struct object_buffer *obj_buffer = BUFFER(pipeline_param->filters[i]);
- VAProcFilterParameterBufferBase *filter_param = NULL;
- VAProcFilterType filter_type;
- int kernel_index;
-
- if (!obj_buffer ||
- !obj_buffer->buffer_store ||
- !obj_buffer->buffer_store->buffer) {
- status = VA_STATUS_ERROR_INVALID_FILTER_CHAIN;
- goto error;
- }
-
- out_surface_id = VA_INVALID_ID;
- filter_param = (VAProcFilterParameterBufferBase *)obj_buffer->buffer_store->buffer;
- filter_type = filter_param->type;
- kernel_index = procfilter_to_pp_flag[filter_type];
-
- if (kernel_index != PP_NULL &&
- proc_context->pp_context.pp_modules[kernel_index].kernel.bo != NULL) {
- status = i965_CreateSurfaces(ctx,
- in_width,
- in_height,
- VA_RT_FORMAT_YUV420,
- 1,
- &out_surface_id);
- assert(status == VA_STATUS_SUCCESS);
- tmp_surfaces[num_tmp_surfaces++] = out_surface_id;
- obj_surface = SURFACE(out_surface_id);
- assert(obj_surface);
- i965_check_alloc_surface_bo(ctx, obj_surface, !!tiling, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
- dst_surface.base = (struct object_base *)obj_surface;
- dst_surface.type = I965_SURFACE_TYPE_SURFACE;
- status = i965_post_processing_internal(ctx, &proc_context->pp_context,
- &src_surface,
- &src_rect,
- &dst_surface,
- &src_rect,
- kernel_index,
- filter_param);
-
- if (status == VA_STATUS_SUCCESS) {
- src_surface.base = dst_surface.base;
- src_surface.type = dst_surface.type;
- src_surface.flags = dst_surface.flags;
- }
- }
- }
-
- proc_context->pp_context.pipeline_param = NULL;
- obj_surface = SURFACE(proc_state->current_render_target);
-
- if (!obj_surface) {
- status = VA_STATUS_ERROR_INVALID_SURFACE;
- goto error;
- }
-
- if (pipeline_param->output_region) {
- dst_rect.x = pipeline_param->output_region->x;
- dst_rect.y = pipeline_param->output_region->y;
- dst_rect.width = pipeline_param->output_region->width;
- dst_rect.height = pipeline_param->output_region->height;
- } else {
- dst_rect.x = 0;
- dst_rect.y = 0;
- dst_rect.width = obj_surface->orig_width;
- dst_rect.height = obj_surface->orig_height;
- }
-
- if (IS_GEN7(i965->intel.device_info) ||
- IS_GEN8(i965->intel.device_info) ||
- IS_GEN9(i965->intel.device_info)) {
- unsigned int saved_filter_flag;
- struct i965_post_processing_context *i965pp_context = i965->pp_context;
-
- if (obj_surface->fourcc == 0) {
- i965_check_alloc_surface_bo(ctx, obj_surface, 1,
- VA_FOURCC_NV12,
- SUBSAMPLE_YUV420);
- }
-
- i965_vpp_clear_surface(ctx, &proc_context->pp_context,
- obj_surface,
- pipeline_param->output_background_color);
-
- intel_batchbuffer_flush(hw_context->batch);
-
- saved_filter_flag = i965pp_context->filter_flags;
- i965pp_context->filter_flags = (pipeline_param->filter_flags & VA_FILTER_SCALING_MASK);
-
- dst_surface.base = (struct object_base *)obj_surface;
- dst_surface.type = I965_SURFACE_TYPE_SURFACE;
- i965_image_processing(ctx, &src_surface, &src_rect, &dst_surface, &dst_rect);
-
- i965pp_context->filter_flags = saved_filter_flag;
-
- if (num_tmp_surfaces)
- i965_DestroySurfaces(ctx,
- tmp_surfaces,
- num_tmp_surfaces);
-
- return VA_STATUS_SUCCESS;
- }
-
- int csc_needed = 0;
- if (obj_surface->fourcc && obj_surface->fourcc != VA_FOURCC_NV12){
- csc_needed = 1;
- out_surface_id = VA_INVALID_ID;
- status = i965_CreateSurfaces(ctx,
- obj_surface->orig_width,
- obj_surface->orig_height,
- VA_RT_FORMAT_YUV420,
- 1,
- &out_surface_id);
- assert(status == VA_STATUS_SUCCESS);
- tmp_surfaces[num_tmp_surfaces++] = out_surface_id;
- struct object_surface *csc_surface = SURFACE(out_surface_id);
- assert(csc_surface);
- i965_check_alloc_surface_bo(ctx, csc_surface, !!tiling, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
- dst_surface.base = (struct object_base *)csc_surface;
- } else {
- i965_check_alloc_surface_bo(ctx, obj_surface, !!tiling, VA_FOURCC_NV12, SUBSAMPLE_YUV420);
- dst_surface.base = (struct object_base *)obj_surface;
- }
-
- dst_surface.type = I965_SURFACE_TYPE_SURFACE;
- i965_vpp_clear_surface(ctx, &proc_context->pp_context, obj_surface, pipeline_param->output_background_color);
-
- // load/save doesn't support different origin offset for src and dst surface
- if (src_rect.width == dst_rect.width &&
- src_rect.height == dst_rect.height &&
- src_rect.x == dst_rect.x &&
- src_rect.y == dst_rect.y) {
- i965_post_processing_internal(ctx, &proc_context->pp_context,
- &src_surface,
- &src_rect,
- &dst_surface,
- &dst_rect,
- PP_NV12_LOAD_SAVE_N12,
- NULL);
- } else {
-
- proc_context->pp_context.filter_flags = pipeline_param->filter_flags;
- i965_post_processing_internal(ctx, &proc_context->pp_context,
- &src_surface,
- &src_rect,
- &dst_surface,
- &dst_rect,
- avs_is_needed(pipeline_param->filter_flags) ? PP_NV12_AVS : PP_NV12_SCALING,
- NULL);
- }
-
- if (csc_needed) {
- src_surface.base = dst_surface.base;
- src_surface.type = dst_surface.type;
- src_surface.flags = dst_surface.flags;
- dst_surface.base = (struct object_base *)obj_surface;
- dst_surface.type = I965_SURFACE_TYPE_SURFACE;
- i965_image_processing(ctx, &src_surface, &dst_rect, &dst_surface, &dst_rect);
- }
-
- if (num_tmp_surfaces)
- i965_DestroySurfaces(ctx,
- tmp_surfaces,
- num_tmp_surfaces);
-
- intel_batchbuffer_flush(hw_context->batch);
-
- return VA_STATUS_SUCCESS;
-
-error:
- if (num_tmp_surfaces)
- i965_DestroySurfaces(ctx,
- tmp_surfaces,
- num_tmp_surfaces);
-
- return status;
-}
-
-static void
-i965_proc_context_destroy(void *hw_context)
-{
- struct i965_proc_context * const proc_context = hw_context;
- VADriverContextP const ctx = proc_context->driver_context;
-
- proc_context->pp_context.finalize(ctx, &proc_context->pp_context);
- intel_batchbuffer_free(proc_context->base.batch);
- free(proc_context);
-}
-
-struct hw_context *
-i965_proc_context_init(VADriverContextP ctx, struct object_config *obj_config)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_driver_data *intel = intel_driver_data(ctx);
- struct i965_proc_context *proc_context = calloc(1, sizeof(struct i965_proc_context));
-
- if (!proc_context)
- return NULL;
-
- proc_context->base.destroy = i965_proc_context_destroy;
- proc_context->base.run = i965_proc_picture;
- proc_context->base.batch = intel_batchbuffer_new(intel, I915_EXEC_RENDER, 0);
- proc_context->driver_context = ctx;
- i965->codec_info->post_processing_context_init(ctx, &proc_context->pp_context, proc_context->base.batch);
-
- return (struct hw_context *)proc_context;
-}
-
-
diff --git a/src/i965_post_processing.h b/src/i965_post_processing.h
deleted file mode 100755
index ef1e676..0000000
--- a/src/i965_post_processing.h
+++ /dev/null
@@ -1,657 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-
-#ifndef __I965_POST_PROCESSING_H__
-#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,
- PP_NV12_LOAD_SAVE_N12,
- PP_NV12_LOAD_SAVE_PL3,
- PP_PL3_LOAD_SAVE_N12,
- PP_PL3_LOAD_SAVE_PL3,
- PP_NV12_SCALING,
- PP_NV12_AVS,
- PP_NV12_DNDI,
- PP_NV12_DN,
- PP_NV12_LOAD_SAVE_PA,
- PP_PL3_LOAD_SAVE_PA,
- PP_PA_LOAD_SAVE_NV12,
- PP_PA_LOAD_SAVE_PL3,
- PP_PA_LOAD_SAVE_PA,
- PP_RGBX_LOAD_SAVE_NV12,
- PP_NV12_LOAD_SAVE_RGBX,
- NUM_PP_MODULES,
-};
-
-struct i965_post_processing_context;
-
-struct pp_load_save_context
-{
- int dest_x;
- int dest_y;
- int dest_w;
- int dest_h;
-};
-
-struct pp_scaling_context
-{
- int dest_x; /* in pixel */
- int dest_y; /* in pixel */
- int dest_w;
- int dest_h;
- float src_normalized_x;
- float src_normalized_y;
-};
-
-struct pp_avs_context
-{
- AVSState state;
- int dest_x; /* in pixel */
- int dest_y; /* in pixel */
- int dest_w;
- int dest_h;
- float src_normalized_x;
- float src_normalized_y;
- int src_w;
- int src_h;
- float horiz_range;
-};
-
-enum {
- DNDI_FRAME_IN_CURRENT = 0,
- DNDI_FRAME_IN_PREVIOUS,
- DNDI_FRAME_IN_STMM,
- DNDI_FRAME_OUT_STMM,
- DNDI_FRAME_OUT_CURRENT,
- DNDI_FRAME_OUT_PREVIOUS,
- DNDI_FRAME_STORE_COUNT
-};
-
-typedef struct dndi_frame_store {
- struct object_surface *obj_surface;
- VASurfaceID surface_id; /* always relative to the input surface */
- unsigned int is_scratch_surface : 1;
-} DNDIFrameStore;
-
-struct pp_dndi_context
-{
- int dest_w;
- int dest_h;
- DNDIFrameStore frame_store[DNDI_FRAME_STORE_COUNT];
-
- /* Temporary flags live until the current picture is processed */
- unsigned int is_di_enabled : 1;
- unsigned int is_di_adv_enabled : 1;
- unsigned int is_first_frame : 1;
- unsigned int is_second_field : 1;
-};
-
-struct pp_dn_context
-{
- int dest_w;
- int dest_h;
- dri_bo *stmm_bo;
-};
-
-struct i965_post_processing_context;
-
-struct pp_module
-{
- struct i965_kernel kernel;
-
- /* others */
- VAStatus (*initialize)(VADriverContextP ctx, struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- void *filter_param);
-};
-
-struct pp_static_parameter
-{
- struct {
- /* Procamp r1.0 */
- float procamp_constant_c0;
-
- /* Load and Same r1.1 */
- unsigned int source_packed_y_offset:8;
- unsigned int source_packed_u_offset:8;
- unsigned int source_packed_v_offset:8;
- unsigned int source_rgb_layout:8; // 1 for |R|G|B|X| layout, 0 for |B|G|R|X| layout
-
- union {
- /* Load and Save r1.2 */
- struct {
- unsigned int destination_packed_y_offset:8;
- unsigned int destination_packed_u_offset:8;
- unsigned int destination_packed_v_offset:8;
- unsigned int pad0:8;
- } load_and_save;
-
- /* CSC r1.2 */
- struct {
- unsigned int pad0:24;
- unsigned int destination_rgb_layout:8; // 1 for |R|G|B|X| layout, 0 for |B|G|R|X| layout
- } csc;
- } r1_2;
-
- /* Procamp r1.3 */
- float procamp_constant_c1;
-
- /* Procamp r1.4 */
- float procamp_constant_c2;
-
- /* DI r1.5 */
- unsigned int statistics_surface_picth:16; /* Devided by 2 */
- unsigned int pad1:16;
-
- union {
- /* DI r1.6 */
- struct {
- unsigned int pad0:24;
- unsigned int top_field_first:8;
- } di;
-
- /* AVS/Scaling r1.6 */
- float normalized_video_y_scaling_step;
- } r1_6;
-
- /* Procamp r1.7 */
- float procamp_constant_c5;
- } grf1;
-
- struct {
- /* Procamp r2.0 */
- float procamp_constant_c3;
-
- /* MBZ r2.1*/
- unsigned int pad0;
-
- /* WG+CSC r2.2 */
- float wg_csc_constant_c4;
-
- /* WG+CSC r2.3 */
- float wg_csc_constant_c8;
-
- /* Procamp r2.4 */
- float procamp_constant_c4;
-
- /* MBZ r2.5 */
- unsigned int pad1;
-
- /* MBZ r2.6 */
- unsigned int pad2;
-
- /* WG+CSC r2.7 */
- float wg_csc_constant_c9;
- } grf2;
-
- struct {
- /* WG+CSC r3.0 */
- float wg_csc_constant_c0;
-
- /* Blending r3.1 */
- float scaling_step_ratio;
-
- /* Blending r3.2 */
- float normalized_alpha_y_scaling;
-
- /* WG+CSC r3.3 */
- float wg_csc_constant_c4;
-
- /* WG+CSC r3.4 */
- float wg_csc_constant_c1;
-
- /* ALL r3.5 */
- int horizontal_origin_offset:16;
- int vertical_origin_offset:16;
-
- /* Shared r3.6*/
- union {
- /* Color filll */
- unsigned int color_pixel;
-
- /* WG+CSC */
- float wg_csc_constant_c2;
- } r3_6;
-
- /* WG+CSC r3.7 */
- float wg_csc_constant_c3;
- } grf3;
-
- struct {
- /* WG+CSC r4.0 */
- float wg_csc_constant_c6;
-
- /* ALL r4.1 MBZ ???*/
- unsigned int pad0;
-
- /* Shared r4.2 */
- union {
- /* AVS */
- struct {
- unsigned int pad1:15;
- unsigned int nlas:1;
- unsigned int pad2:16;
- } avs;
-
- /* DI */
- struct {
- unsigned int motion_history_coefficient_m2:8;
- unsigned int motion_history_coefficient_m1:8;
- unsigned int pad0:16;
- } di;
- } r4_2;
-
- /* WG+CSC r4.3 */
- float wg_csc_constant_c7;
-
- /* WG+CSC r4.4 */
- float wg_csc_constant_c10;
-
- /* AVS r4.5 */
- float source_video_frame_normalized_horizontal_origin;
-
- /* MBZ r4.6 */
- unsigned int pad1;
-
- /* WG+CSC r4.7 */
- float wg_csc_constant_c11;
- } grf4;
-};
-
-struct pp_inline_parameter
-{
- struct {
- /* ALL r5.0 */
- int destination_block_horizontal_origin:16;
- int destination_block_vertical_origin:16;
-
- /* Shared r5.1 */
- union {
- /* AVS/Scaling */
- float source_surface_block_normalized_horizontal_origin;
-
- /* FMD */
- struct {
- unsigned int variance_surface_vertical_origin:16;
- unsigned int pad0:16;
- } fmd;
- } r5_1;
-
- /* AVS/Scaling r5.2 */
- float source_surface_block_normalized_vertical_origin;
-
- /* Alpha r5.3 */
- float alpha_surface_block_normalized_horizontal_origin;
-
- /* Alpha r5.4 */
- float alpha_surface_block_normalized_vertical_origin;
-
- /* Alpha r5.5 */
- unsigned int alpha_mask_x:16;
- unsigned int alpha_mask_y:8;
- unsigned int block_count_x:8;
-
- /* r5.6 */
- /* we only support M*1 or 1*N block partitation now.
- * -- it means asm code only need update this mask from grf6 for the last block
- */
- unsigned int block_horizontal_mask:16;
- unsigned int block_vertical_mask:8;
- unsigned int number_blocks:8;
-
- /* AVS/Scaling r5.7 */
- float normalized_video_x_scaling_step;
- } grf5;
-
- struct {
- /* AVS r6.0 */
- float video_step_delta;
-
- /* r6.1 */ // sizeof(int) == 4?
- unsigned int block_horizontal_mask_right:16;
- unsigned int block_vertical_mask_bottom:8;
- unsigned int pad1:8;
-
- /* r6.2 */
- unsigned int block_horizontal_mask_middle:16;
- unsigned int pad2:16;
-
- /* r6.3-r6.7 */
- unsigned int padx[5];
- } grf6;
-};
-
-struct gen7_pp_static_parameter
-{
- struct {
- /* r1.0-r1.5 */
- unsigned int padx[6];
- /* r1.6 */
- unsigned int di_statistics_surface_pitch_div2:16;
- unsigned int di_statistics_surface_height_div4:16;
- /* r1.7 */
- unsigned int di_top_field_first:8;
- unsigned int pad0:16;
- unsigned int pointer_to_inline_parameter:8; /* value: 7 */
- } grf1;
-
- struct {
- /* r2.0 */
- /* Indicates whether the rgb is swapped for the src surface
- * 0: RGBX(MSB. X-B-G-R). 1: BGRX(MSB: X-R-G-B)
- */
- unsigned int src_avs_rgb_swap:1;
- unsigned int pad3:31;
-
- /* r2.1 */
- unsigned int pad2:16;
- unsigned int save_avs_rgb_swap:1; /* 0: RGB, 1: BGR */
- unsigned int avs_wa_enable:1; /* must enabled for GEN7 */
- unsigned int ief_enable:1;
- unsigned int avs_wa_width:13;
-
- /* 2.2 */
- float avs_wa_one_div_256_width;
-
- /* 2.3 */
- float avs_wa_five_div_256_width;
-
- /* 2.4 - 2.6 */
- unsigned int padx[3];
-
- /* r2.7 */
- unsigned int di_destination_packed_y_component_offset:8;
- unsigned int di_destination_packed_u_component_offset:8;
- unsigned int di_destination_packed_v_component_offset:8;
- unsigned int alpha:8;
- } grf2;
-
- struct {
- float sampler_load_horizontal_scaling_step_ratio;
- unsigned int padx[7];
- } grf3;
-
- struct {
- float sampler_load_vertical_scaling_step;
- unsigned int pad0;
- unsigned int di_hoffset_svf_from_dvf:16;
- unsigned int di_voffset_svf_from_dvf:16;
- unsigned int padx[5];
- } grf4;
-
- struct {
- float sampler_load_vertical_frame_origin;
- unsigned int padx[7];
- } grf5;
-
- struct {
- float sampler_load_horizontal_frame_origin;
- unsigned int padx[7];
- } grf6;
-
- struct {
- /* r7.0 -> r7.3 */
- float coef_ry;
- float coef_ru;
- float coef_rv;
- float coef_yd;
-
- /* r7.4 -> r7.7 */
- float coef_gy;
- float coef_gu;
- float coef_gv;
- float coef_ud;
- } grf7;
-
- struct {
- /* r8.0 -> r8.3 */
- float coef_by;
- float coef_bu;
- float coef_bv;
- float coef_vd;
-
- /* r8.4 -> r8.7 */
- unsigned int padx[4];
- } grf8;
-};
-
-struct gen7_pp_inline_parameter
-{
- struct {
- /* r9.0 */
- unsigned int destination_block_horizontal_origin:16;
- unsigned int destination_block_vertical_origin:16;
- /* r9.1: 0xffffffff */
- unsigned int constant_0;
- /* r9.2 */
- unsigned int pad0;
- /* r9.3 */
- unsigned int pad1;
- /* r9.4 */
- float sampler_load_main_video_x_scaling_step;
- /* r9.5 */
- unsigned int pad2;
- /* r9.6: must be zero */
- unsigned int avs_vertical_block_number;
- /* r9.7: 0 */
- unsigned int group_id_number;
- } grf9;
-
- struct {
- unsigned int padx[8];
- } grf10;
-};
-
-struct i965_post_processing_context
-{
- int current_pp;
- struct pp_module pp_modules[NUM_PP_MODULES];
- void *pp_static_parameter;
- void *pp_inline_parameter;
-
- struct {
- dri_bo *bo;
- } surface_state_binding_table;
-
- struct {
- dri_bo *bo;
- } curbe;
-
- struct {
- dri_bo *bo;
- int num_interface_descriptors;
- } idrt;
-
- struct {
- dri_bo *bo;
- } vfe_state;
-
- struct {
- dri_bo *bo;
- dri_bo *bo_8x8;
- dri_bo *bo_8x8_uv;
- } sampler_state_table;
-
- struct {
- unsigned int size;
-
- unsigned int vfe_start;
- unsigned int cs_start;
-
- unsigned int num_vfe_entries;
- unsigned int num_cs_entries;
-
- unsigned int size_vfe_entry;
- unsigned int size_cs_entry;
- } urb;
-
- struct {
- unsigned int gpgpu_mode : 1;
- unsigned int pad0 : 7;
- unsigned int max_num_threads : 16;
- unsigned int num_urb_entries : 8;
- unsigned int urb_entry_size : 16;
- unsigned int curbe_allocation_size : 16;
- } vfe_gpu_state;
-
- struct intel_vebox_context *vebox_proc_ctx;
-
- struct pp_load_save_context pp_load_save_context;
- struct pp_scaling_context pp_scaling_context;
- struct pp_avs_context pp_avs_context;
- struct pp_dndi_context pp_dndi_context;
- struct pp_dn_context pp_dn_context;
- void *private_context; /* pointer to the current private context */
- void *pipeline_param; /* pointer to the pipeline parameter */
- /**
- * \ref Extra filter flags used as a fast path.
- *
- * This corresponds to vaPutSurface() flags, for direct rendering,
- * or to VAProcPipelineParameterBuffer.filter_flags when the VPP
- * interfaces are used. In the latter case, this is just a copy of
- * that field.
- */
- unsigned int filter_flags;
-
- int (*pp_x_steps)(void *private_context);
- int (*pp_y_steps)(void *private_context);
- int (*pp_set_block_parameter)(struct i965_post_processing_context *pp_context, int x, int y);
-
- struct intel_batchbuffer *batch;
-
- unsigned int block_horizontal_mask_left:16;
- unsigned int block_horizontal_mask_right:16;
- unsigned int block_vertical_mask_bottom:8;
-
- struct {
- dri_bo *bo;
- int bo_size;
- unsigned int end_offset;
- } instruction_state;
-
- struct {
- dri_bo *bo;
- } indirect_state;
-
- struct {
- dri_bo *bo;
- int bo_size;
- unsigned int end_offset;
- } dynamic_state;
-
- unsigned int sampler_offset;
- int sampler_size;
- unsigned int idrt_offset;
- int idrt_size;
- unsigned int curbe_offset;
- int curbe_size;
-
- VAStatus (*intel_post_processing)(VADriverContextP ctx,
- struct i965_post_processing_context *pp_context,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect,
- int pp_index,
- 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_gpe_context scaling_yuv420p8_context;
-#define VPPGPE_8BIT_420 (1 << 0)
-#define VPPGPE_8BIT_422 (1 << 1)
-#define VPPGPE_8BIT_444 (1 << 2)
- unsigned int scaling_8bit_initialized;
-};
-
-struct i965_proc_context
-{
- struct hw_context base;
- void *driver_context;
- struct i965_post_processing_context pp_context;
-};
-
-VASurfaceID
-i965_post_processing(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect,
- unsigned int va_flags,
- int *has_done_scaling,
- VARectangle *calibrated_rect
-);
-
-VAStatus
-i965_scaling_processing(
- VADriverContextP ctx,
- struct object_surface *src_surface_obj,
- const VARectangle *src_rect,
- struct object_surface *dst_surface_obj,
- const VARectangle *dst_rect,
- unsigned int va_flags
-);
-
-VAStatus
-i965_image_processing(VADriverContextP ctx,
- const struct i965_surface *src_surface,
- const VARectangle *src_rect,
- struct i965_surface *dst_surface,
- const VARectangle *dst_rect);
-
-void
-i965_post_processing_terminate(VADriverContextP ctx);
-bool
-i965_post_processing_init(VADriverContextP ctx);
-
-
-extern VAStatus
-i965_proc_picture(VADriverContextP ctx,
- VAProfile profile,
- union codec_state *codec_state,
- struct hw_context *hw_context);
-
-#endif /* __I965_POST_PROCESSING_H__ */
diff --git a/src/i965_render.c b/src/i965_render.c
deleted file mode 100644
index f371955..0000000
--- a/src/i965_render.c
+++ /dev/null
@@ -1,3236 +0,0 @@
-/*
- * Copyright © 2006 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Eric Anholt <eric@anholt.net>
- * Keith Packard <keithp@keithp.com>
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-
-/*
- * Most of rendering codes are ported from xf86-video-intel/src/i965_video.c
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <math.h>
-
-#include <va/va_drmcommon.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-#include "i965_defines.h"
-#include "i965_drv_video.h"
-#include "i965_structs.h"
-#include "i965_yuv_coefs.h"
-
-#include "i965_render.h"
-#include "i965_post_processing.h"
-
-#define SF_KERNEL_NUM_GRF 16
-#define SF_MAX_THREADS 1
-
-static const uint32_t sf_kernel_static[][4] =
-{
-#include "shaders/render/exa_sf.g4b"
-};
-
-#define PS_KERNEL_NUM_GRF 48
-#define PS_MAX_THREADS 32
-
-#define I965_GRF_BLOCKS(nreg) ((nreg + 15) / 16 - 1)
-
-static const uint32_t ps_kernel_static[][4] =
-{
-#include "shaders/render/exa_wm_xy.g4b"
-#include "shaders/render/exa_wm_src_affine.g4b"
-#include "shaders/render/exa_wm_src_sample_planar.g4b"
-#include "shaders/render/exa_wm_yuv_color_balance.g4b"
-#include "shaders/render/exa_wm_yuv_rgb.g4b"
-#include "shaders/render/exa_wm_write.g4b"
-};
-static const uint32_t ps_subpic_kernel_static[][4] =
-{
-#include "shaders/render/exa_wm_xy.g4b"
-#include "shaders/render/exa_wm_src_affine.g4b"
-#include "shaders/render/exa_wm_src_sample_argb.g4b"
-#include "shaders/render/exa_wm_write.g4b"
-};
-
-/* On IRONLAKE */
-static const uint32_t sf_kernel_static_gen5[][4] =
-{
-#include "shaders/render/exa_sf.g4b.gen5"
-};
-
-static const uint32_t ps_kernel_static_gen5[][4] =
-{
-#include "shaders/render/exa_wm_xy.g4b.gen5"
-#include "shaders/render/exa_wm_src_affine.g4b.gen5"
-#include "shaders/render/exa_wm_src_sample_planar.g4b.gen5"
-#include "shaders/render/exa_wm_yuv_color_balance.g4b.gen5"
-#include "shaders/render/exa_wm_yuv_rgb.g4b.gen5"
-#include "shaders/render/exa_wm_write.g4b.gen5"
-};
-static const uint32_t ps_subpic_kernel_static_gen5[][4] =
-{
-#include "shaders/render/exa_wm_xy.g4b.gen5"
-#include "shaders/render/exa_wm_src_affine.g4b.gen5"
-#include "shaders/render/exa_wm_src_sample_argb.g4b.gen5"
-#include "shaders/render/exa_wm_write.g4b.gen5"
-};
-
-/* programs for Sandybridge */
-static const uint32_t sf_kernel_static_gen6[][4] =
-{
-};
-
-static const uint32_t ps_kernel_static_gen6[][4] = {
-#include "shaders/render/exa_wm_src_affine.g6b"
-#include "shaders/render/exa_wm_src_sample_planar.g6b"
-#include "shaders/render/exa_wm_yuv_color_balance.g6b"
-#include "shaders/render/exa_wm_yuv_rgb.g6b"
-#include "shaders/render/exa_wm_write.g6b"
-};
-
-static const uint32_t ps_subpic_kernel_static_gen6[][4] = {
-#include "shaders/render/exa_wm_src_affine.g6b"
-#include "shaders/render/exa_wm_src_sample_argb.g6b"
-#include "shaders/render/exa_wm_write.g6b"
-};
-
-/* programs for Ivybridge */
-static const uint32_t sf_kernel_static_gen7[][4] =
-{
-};
-
-static const uint32_t ps_kernel_static_gen7[][4] = {
-#include "shaders/render/exa_wm_src_affine.g7b"
-#include "shaders/render/exa_wm_src_sample_planar.g7b"
-#include "shaders/render/exa_wm_yuv_color_balance.g7b"
-#include "shaders/render/exa_wm_yuv_rgb.g7b"
-#include "shaders/render/exa_wm_write.g7b"
-};
-
-static const uint32_t ps_subpic_kernel_static_gen7[][4] = {
-#include "shaders/render/exa_wm_src_affine.g7b"
-#include "shaders/render/exa_wm_src_sample_argb.g7b"
-#include "shaders/render/exa_wm_write.g7b"
-};
-
-/* Programs for Haswell */
-static const uint32_t ps_kernel_static_gen7_haswell[][4] = {
-#include "shaders/render/exa_wm_src_affine.g7b"
-#include "shaders/render/exa_wm_src_sample_planar.g7b.haswell"
-#include "shaders/render/exa_wm_yuv_color_balance.g7b.haswell"
-#include "shaders/render/exa_wm_yuv_rgb.g7b"
-#include "shaders/render/exa_wm_write.g7b"
-};
-
-
-#define SURFACE_STATE_PADDED_SIZE MAX(SURFACE_STATE_PADDED_SIZE_GEN6, SURFACE_STATE_PADDED_SIZE_GEN7)
-
-#define SURFACE_STATE_OFFSET(index) (SURFACE_STATE_PADDED_SIZE * index)
-#define BINDING_TABLE_OFFSET SURFACE_STATE_OFFSET(MAX_RENDER_SURFACES)
-
-static uint32_t float_to_uint (float f)
-{
- union {
- uint32_t i;
- float f;
- } x;
-
- x.f = f;
- return x.i;
-}
-
-enum
-{
- SF_KERNEL = 0,
- PS_KERNEL,
- PS_SUBPIC_KERNEL
-};
-
-static struct i965_kernel render_kernels_gen4[] = {
- {
- "SF",
- SF_KERNEL,
- sf_kernel_static,
- sizeof(sf_kernel_static),
- NULL
- },
- {
- "PS",
- PS_KERNEL,
- ps_kernel_static,
- sizeof(ps_kernel_static),
- NULL
- },
-
- {
- "PS_SUBPIC",
- PS_SUBPIC_KERNEL,
- ps_subpic_kernel_static,
- sizeof(ps_subpic_kernel_static),
- NULL
- }
-};
-
-static struct i965_kernel render_kernels_gen5[] = {
- {
- "SF",
- SF_KERNEL,
- sf_kernel_static_gen5,
- sizeof(sf_kernel_static_gen5),
- NULL
- },
- {
- "PS",
- PS_KERNEL,
- ps_kernel_static_gen5,
- sizeof(ps_kernel_static_gen5),
- NULL
- },
-
- {
- "PS_SUBPIC",
- PS_SUBPIC_KERNEL,
- ps_subpic_kernel_static_gen5,
- sizeof(ps_subpic_kernel_static_gen5),
- NULL
- }
-};
-
-static struct i965_kernel render_kernels_gen6[] = {
- {
- "SF",
- SF_KERNEL,
- sf_kernel_static_gen6,
- sizeof(sf_kernel_static_gen6),
- NULL
- },
- {
- "PS",
- PS_KERNEL,
- ps_kernel_static_gen6,
- sizeof(ps_kernel_static_gen6),
- NULL
- },
-
- {
- "PS_SUBPIC",
- PS_SUBPIC_KERNEL,
- ps_subpic_kernel_static_gen6,
- sizeof(ps_subpic_kernel_static_gen6),
- NULL
- }
-};
-
-static struct i965_kernel render_kernels_gen7[] = {
- {
- "SF",
- SF_KERNEL,
- sf_kernel_static_gen7,
- sizeof(sf_kernel_static_gen7),
- NULL
- },
- {
- "PS",
- PS_KERNEL,
- ps_kernel_static_gen7,
- sizeof(ps_kernel_static_gen7),
- NULL
- },
-
- {
- "PS_SUBPIC",
- PS_SUBPIC_KERNEL,
- ps_subpic_kernel_static_gen7,
- sizeof(ps_subpic_kernel_static_gen7),
- NULL
- }
-};
-
-static struct i965_kernel render_kernels_gen7_haswell[] = {
- {
- "SF",
- SF_KERNEL,
- sf_kernel_static_gen7,
- sizeof(sf_kernel_static_gen7),
- NULL
- },
- {
- "PS",
- PS_KERNEL,
- ps_kernel_static_gen7_haswell,
- sizeof(ps_kernel_static_gen7_haswell),
- NULL
- },
-
- {
- "PS_SUBPIC",
- PS_SUBPIC_KERNEL,
- ps_subpic_kernel_static_gen7,
- sizeof(ps_subpic_kernel_static_gen7),
- NULL
- }
-};
-
-#define URB_VS_ENTRIES 8
-#define URB_VS_ENTRY_SIZE 1
-
-#define URB_GS_ENTRIES 0
-#define URB_GS_ENTRY_SIZE 0
-
-#define URB_CLIP_ENTRIES 0
-#define URB_CLIP_ENTRY_SIZE 0
-
-#define URB_SF_ENTRIES 1
-#define URB_SF_ENTRY_SIZE 2
-
-#define URB_CS_ENTRIES 4
-#define URB_CS_ENTRY_SIZE 4
-
-static void
-i965_render_vs_unit(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct i965_vs_unit_state *vs_state;
-
- dri_bo_map(render_state->vs.state, 1);
- assert(render_state->vs.state->virtual);
- vs_state = render_state->vs.state->virtual;
- memset(vs_state, 0, sizeof(*vs_state));
-
- if (IS_IRONLAKE(i965->intel.device_info))
- vs_state->thread4.nr_urb_entries = URB_VS_ENTRIES >> 2;
- else
- vs_state->thread4.nr_urb_entries = URB_VS_ENTRIES;
-
- vs_state->thread4.urb_entry_allocation_size = URB_VS_ENTRY_SIZE - 1;
- vs_state->vs6.vs_enable = 0;
- vs_state->vs6.vert_cache_disable = 1;
-
- dri_bo_unmap(render_state->vs.state);
-}
-
-static void
-i965_render_sf_unit(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct i965_sf_unit_state *sf_state;
-
- dri_bo_map(render_state->sf.state, 1);
- assert(render_state->sf.state->virtual);
- sf_state = render_state->sf.state->virtual;
- memset(sf_state, 0, sizeof(*sf_state));
-
- sf_state->thread0.grf_reg_count = I965_GRF_BLOCKS(SF_KERNEL_NUM_GRF);
- sf_state->thread0.kernel_start_pointer = render_state->render_kernels[SF_KERNEL].bo->offset >> 6;
-
- sf_state->sf1.single_program_flow = 1; /* XXX */
- sf_state->sf1.binding_table_entry_count = 0;
- sf_state->sf1.thread_priority = 0;
- sf_state->sf1.floating_point_mode = 0; /* Mesa does this */
- sf_state->sf1.illegal_op_exception_enable = 1;
- sf_state->sf1.mask_stack_exception_enable = 1;
- sf_state->sf1.sw_exception_enable = 1;
-
- /* scratch space is not used in our kernel */
- sf_state->thread2.per_thread_scratch_space = 0;
- sf_state->thread2.scratch_space_base_pointer = 0;
-
- sf_state->thread3.const_urb_entry_read_length = 0; /* no const URBs */
- sf_state->thread3.const_urb_entry_read_offset = 0; /* no const URBs */
- sf_state->thread3.urb_entry_read_length = 1; /* 1 URB per vertex */
- sf_state->thread3.urb_entry_read_offset = 0;
- sf_state->thread3.dispatch_grf_start_reg = 3;
-
- sf_state->thread4.max_threads = SF_MAX_THREADS - 1;
- sf_state->thread4.urb_entry_allocation_size = URB_SF_ENTRY_SIZE - 1;
- sf_state->thread4.nr_urb_entries = URB_SF_ENTRIES;
- sf_state->thread4.stats_enable = 1;
-
- sf_state->sf5.viewport_transform = 0; /* skip viewport */
-
- sf_state->sf6.cull_mode = I965_CULLMODE_NONE;
- sf_state->sf6.scissor = 0;
-
- sf_state->sf7.trifan_pv = 2;
-
- sf_state->sf6.dest_org_vbias = 0x8;
- sf_state->sf6.dest_org_hbias = 0x8;
-
- dri_bo_emit_reloc(render_state->sf.state,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- sf_state->thread0.grf_reg_count << 1,
- offsetof(struct i965_sf_unit_state, thread0),
- render_state->render_kernels[SF_KERNEL].bo);
-
- dri_bo_unmap(render_state->sf.state);
-}
-
-static void
-i965_render_sampler(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct i965_sampler_state *sampler_state;
- int i;
-
- assert(render_state->wm.sampler_count > 0);
- assert(render_state->wm.sampler_count <= MAX_SAMPLERS);
-
- dri_bo_map(render_state->wm.sampler, 1);
- assert(render_state->wm.sampler->virtual);
- sampler_state = render_state->wm.sampler->virtual;
- for (i = 0; i < render_state->wm.sampler_count; i++) {
- memset(sampler_state, 0, sizeof(*sampler_state));
- sampler_state->ss0.min_filter = I965_MAPFILTER_LINEAR;
- sampler_state->ss0.mag_filter = I965_MAPFILTER_LINEAR;
- sampler_state->ss1.r_wrap_mode = I965_TEXCOORDMODE_CLAMP;
- sampler_state->ss1.s_wrap_mode = I965_TEXCOORDMODE_CLAMP;
- sampler_state->ss1.t_wrap_mode = I965_TEXCOORDMODE_CLAMP;
- sampler_state++;
- }
-
- dri_bo_unmap(render_state->wm.sampler);
-}
-static void
-i965_subpic_render_wm_unit(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct i965_wm_unit_state *wm_state;
-
- assert(render_state->wm.sampler);
-
- dri_bo_map(render_state->wm.state, 1);
- assert(render_state->wm.state->virtual);
- wm_state = render_state->wm.state->virtual;
- memset(wm_state, 0, sizeof(*wm_state));
-
- wm_state->thread0.grf_reg_count = I965_GRF_BLOCKS(PS_KERNEL_NUM_GRF);
- wm_state->thread0.kernel_start_pointer = render_state->render_kernels[PS_SUBPIC_KERNEL].bo->offset >> 6;
-
- wm_state->thread1.single_program_flow = 1; /* XXX */
-
- if (IS_IRONLAKE(i965->intel.device_info))
- wm_state->thread1.binding_table_entry_count = 0; /* hardware requirement */
- else
- wm_state->thread1.binding_table_entry_count = 7;
-
- wm_state->thread2.scratch_space_base_pointer = 0;
- wm_state->thread2.per_thread_scratch_space = 0; /* 1024 bytes */
-
- wm_state->thread3.dispatch_grf_start_reg = 2; /* XXX */
- wm_state->thread3.const_urb_entry_read_length = 4;
- wm_state->thread3.const_urb_entry_read_offset = 0;
- wm_state->thread3.urb_entry_read_length = 1; /* XXX */
- wm_state->thread3.urb_entry_read_offset = 0; /* XXX */
-
- wm_state->wm4.stats_enable = 0;
- wm_state->wm4.sampler_state_pointer = render_state->wm.sampler->offset >> 5;
-
- if (IS_IRONLAKE(i965->intel.device_info)) {
- wm_state->wm4.sampler_count = 0; /* hardware requirement */
- } else {
- wm_state->wm4.sampler_count = (render_state->wm.sampler_count + 3) / 4;
- }
-
- wm_state->wm5.max_threads = i965->intel.device_info->max_wm_threads - 1;
- wm_state->wm5.thread_dispatch_enable = 1;
- wm_state->wm5.enable_16_pix = 1;
- wm_state->wm5.enable_8_pix = 0;
- wm_state->wm5.early_depth_test = 1;
-
- dri_bo_emit_reloc(render_state->wm.state,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- wm_state->thread0.grf_reg_count << 1,
- offsetof(struct i965_wm_unit_state, thread0),
- render_state->render_kernels[PS_SUBPIC_KERNEL].bo);
-
- dri_bo_emit_reloc(render_state->wm.state,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- wm_state->wm4.sampler_count << 2,
- offsetof(struct i965_wm_unit_state, wm4),
- render_state->wm.sampler);
-
- dri_bo_unmap(render_state->wm.state);
-}
-
-
-static void
-i965_render_wm_unit(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct i965_wm_unit_state *wm_state;
-
- assert(render_state->wm.sampler);
-
- dri_bo_map(render_state->wm.state, 1);
- assert(render_state->wm.state->virtual);
- wm_state = render_state->wm.state->virtual;
- memset(wm_state, 0, sizeof(*wm_state));
-
- wm_state->thread0.grf_reg_count = I965_GRF_BLOCKS(PS_KERNEL_NUM_GRF);
- wm_state->thread0.kernel_start_pointer = render_state->render_kernels[PS_KERNEL].bo->offset >> 6;
-
- wm_state->thread1.single_program_flow = 1; /* XXX */
-
- if (IS_IRONLAKE(i965->intel.device_info))
- wm_state->thread1.binding_table_entry_count = 0; /* hardware requirement */
- else
- wm_state->thread1.binding_table_entry_count = 7;
-
- wm_state->thread2.scratch_space_base_pointer = 0;
- wm_state->thread2.per_thread_scratch_space = 0; /* 1024 bytes */
-
- wm_state->thread3.dispatch_grf_start_reg = 2; /* XXX */
- wm_state->thread3.const_urb_entry_read_length = 4;
- wm_state->thread3.const_urb_entry_read_offset = 0;
- wm_state->thread3.urb_entry_read_length = 1; /* XXX */
- wm_state->thread3.urb_entry_read_offset = 0; /* XXX */
-
- wm_state->wm4.stats_enable = 0;
- wm_state->wm4.sampler_state_pointer = render_state->wm.sampler->offset >> 5;
-
- if (IS_IRONLAKE(i965->intel.device_info)) {
- wm_state->wm4.sampler_count = 0; /* hardware requirement */
- } else {
- wm_state->wm4.sampler_count = (render_state->wm.sampler_count + 3) / 4;
- }
-
- wm_state->wm5.max_threads = i965->intel.device_info->max_wm_threads - 1;
- wm_state->wm5.thread_dispatch_enable = 1;
- wm_state->wm5.enable_16_pix = 1;
- wm_state->wm5.enable_8_pix = 0;
- wm_state->wm5.early_depth_test = 1;
-
- dri_bo_emit_reloc(render_state->wm.state,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- wm_state->thread0.grf_reg_count << 1,
- offsetof(struct i965_wm_unit_state, thread0),
- render_state->render_kernels[PS_KERNEL].bo);
-
- dri_bo_emit_reloc(render_state->wm.state,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- wm_state->wm4.sampler_count << 2,
- offsetof(struct i965_wm_unit_state, wm4),
- render_state->wm.sampler);
-
- dri_bo_unmap(render_state->wm.state);
-}
-
-static void
-i965_render_cc_viewport(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct i965_cc_viewport *cc_viewport;
-
- dri_bo_map(render_state->cc.viewport, 1);
- assert(render_state->cc.viewport->virtual);
- cc_viewport = render_state->cc.viewport->virtual;
- memset(cc_viewport, 0, sizeof(*cc_viewport));
-
- cc_viewport->min_depth = -1.e35;
- cc_viewport->max_depth = 1.e35;
-
- dri_bo_unmap(render_state->cc.viewport);
-}
-
-static void
-i965_subpic_render_cc_unit(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct i965_cc_unit_state *cc_state;
-
- assert(render_state->cc.viewport);
-
- dri_bo_map(render_state->cc.state, 1);
- assert(render_state->cc.state->virtual);
- cc_state = render_state->cc.state->virtual;
- memset(cc_state, 0, sizeof(*cc_state));
-
- cc_state->cc0.stencil_enable = 0; /* disable stencil */
- cc_state->cc2.depth_test = 0; /* disable depth test */
- cc_state->cc2.logicop_enable = 0; /* disable logic op */
- cc_state->cc3.ia_blend_enable = 0 ; /* blend alpha just like colors */
- cc_state->cc3.blend_enable = 1; /* enable color blend */
- cc_state->cc3.alpha_test = 0; /* disable alpha test */
- cc_state->cc3.alpha_test_format = 0;//0:ALPHATEST_UNORM8; /*store alpha value with UNORM8 */
- cc_state->cc3.alpha_test_func = 5;//COMPAREFUNCTION_LESS; /*pass if less than the reference */
- cc_state->cc4.cc_viewport_state_offset = render_state->cc.viewport->offset >> 5;
-
- cc_state->cc5.dither_enable = 0; /* disable dither */
- cc_state->cc5.logicop_func = 0xc; /* WHITE */
- cc_state->cc5.statistics_enable = 1;
- cc_state->cc5.ia_blend_function = I965_BLENDFUNCTION_ADD;
- cc_state->cc5.ia_src_blend_factor = I965_BLENDFACTOR_DST_ALPHA;
- cc_state->cc5.ia_dest_blend_factor = I965_BLENDFACTOR_DST_ALPHA;
-
- cc_state->cc6.clamp_post_alpha_blend = 0;
- cc_state->cc6.clamp_pre_alpha_blend =0;
-
- /*final color = src_color*src_blend_factor +/- dst_color*dest_color_blend_factor*/
- cc_state->cc6.blend_function = I965_BLENDFUNCTION_ADD;
- cc_state->cc6.src_blend_factor = I965_BLENDFACTOR_SRC_ALPHA;
- cc_state->cc6.dest_blend_factor = I965_BLENDFACTOR_INV_SRC_ALPHA;
-
- /*alpha test reference*/
- cc_state->cc7.alpha_ref.f =0.0 ;
-
-
- dri_bo_emit_reloc(render_state->cc.state,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0,
- offsetof(struct i965_cc_unit_state, cc4),
- render_state->cc.viewport);
-
- dri_bo_unmap(render_state->cc.state);
-}
-
-
-static void
-i965_render_cc_unit(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct i965_cc_unit_state *cc_state;
-
- assert(render_state->cc.viewport);
-
- dri_bo_map(render_state->cc.state, 1);
- assert(render_state->cc.state->virtual);
- cc_state = render_state->cc.state->virtual;
- memset(cc_state, 0, sizeof(*cc_state));
-
- cc_state->cc0.stencil_enable = 0; /* disable stencil */
- cc_state->cc2.depth_test = 0; /* disable depth test */
- cc_state->cc2.logicop_enable = 1; /* enable logic op */
- cc_state->cc3.ia_blend_enable = 0; /* blend alpha just like colors */
- cc_state->cc3.blend_enable = 0; /* disable color blend */
- cc_state->cc3.alpha_test = 0; /* disable alpha test */
- cc_state->cc4.cc_viewport_state_offset = render_state->cc.viewport->offset >> 5;
-
- cc_state->cc5.dither_enable = 0; /* disable dither */
- cc_state->cc5.logicop_func = 0xc; /* WHITE */
- cc_state->cc5.statistics_enable = 1;
- cc_state->cc5.ia_blend_function = I965_BLENDFUNCTION_ADD;
- cc_state->cc5.ia_src_blend_factor = I965_BLENDFACTOR_ONE;
- cc_state->cc5.ia_dest_blend_factor = I965_BLENDFACTOR_ONE;
-
- dri_bo_emit_reloc(render_state->cc.state,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0,
- offsetof(struct i965_cc_unit_state, cc4),
- render_state->cc.viewport);
-
- dri_bo_unmap(render_state->cc.state);
-}
-
-static void
-i965_render_set_surface_tiling(struct i965_surface_state *ss, unsigned int tiling)
-{
- switch (tiling) {
- case I915_TILING_NONE:
- ss->ss3.tiled_surface = 0;
- ss->ss3.tile_walk = 0;
- break;
- case I915_TILING_X:
- ss->ss3.tiled_surface = 1;
- ss->ss3.tile_walk = I965_TILEWALK_XMAJOR;
- break;
- case I915_TILING_Y:
- ss->ss3.tiled_surface = 1;
- ss->ss3.tile_walk = I965_TILEWALK_YMAJOR;
- break;
- }
-}
-
-static void
-i965_render_set_surface_state(
- struct i965_surface_state *ss,
- dri_bo *bo,
- unsigned long offset,
- unsigned int width,
- unsigned int height,
- unsigned int pitch,
- unsigned int format,
- unsigned int flags
-)
-{
- unsigned int tiling;
- unsigned int swizzle;
-
- memset(ss, 0, sizeof(*ss));
-
- switch (flags & (VA_TOP_FIELD|VA_BOTTOM_FIELD)) {
- case VA_BOTTOM_FIELD:
- ss->ss0.vert_line_stride_ofs = 1;
- /* fall-through */
- case VA_TOP_FIELD:
- ss->ss0.vert_line_stride = 1;
- height /= 2;
- break;
- }
-
- ss->ss0.surface_type = I965_SURFACE_2D;
- ss->ss0.surface_format = format;
- ss->ss0.color_blend = 1;
-
- ss->ss1.base_addr = bo->offset + offset;
-
- ss->ss2.width = width - 1;
- ss->ss2.height = height - 1;
-
- ss->ss3.pitch = pitch - 1;
-
- dri_bo_get_tiling(bo, &tiling, &swizzle);
- i965_render_set_surface_tiling(ss, tiling);
-}
-
-static void
-gen7_render_set_surface_tiling(struct gen7_surface_state *ss, uint32_t tiling)
-{
- switch (tiling) {
- case I915_TILING_NONE:
- ss->ss0.tiled_surface = 0;
- ss->ss0.tile_walk = 0;
- break;
- case I915_TILING_X:
- ss->ss0.tiled_surface = 1;
- ss->ss0.tile_walk = I965_TILEWALK_XMAJOR;
- break;
- case I915_TILING_Y:
- ss->ss0.tiled_surface = 1;
- ss->ss0.tile_walk = I965_TILEWALK_YMAJOR;
- break;
- }
-}
-
-/* Set "Shader Channel Select" */
-void
-gen7_render_set_surface_scs(struct gen7_surface_state *ss)
-{
- ss->ss7.shader_chanel_select_r = HSW_SCS_RED;
- ss->ss7.shader_chanel_select_g = HSW_SCS_GREEN;
- ss->ss7.shader_chanel_select_b = HSW_SCS_BLUE;
- ss->ss7.shader_chanel_select_a = HSW_SCS_ALPHA;
-}
-
-static void
-gen7_render_set_surface_state(
- struct gen7_surface_state *ss,
- dri_bo *bo,
- unsigned long offset,
- int width,
- int height,
- int pitch,
- int format,
- unsigned int flags
-)
-{
- unsigned int tiling;
- unsigned int swizzle;
-
- memset(ss, 0, sizeof(*ss));
-
- switch (flags & (VA_TOP_FIELD|VA_BOTTOM_FIELD)) {
- case VA_BOTTOM_FIELD:
- ss->ss0.vert_line_stride_ofs = 1;
- /* fall-through */
- case VA_TOP_FIELD:
- ss->ss0.vert_line_stride = 1;
- height /= 2;
- break;
- }
-
- ss->ss0.surface_type = I965_SURFACE_2D;
- ss->ss0.surface_format = format;
-
- ss->ss1.base_addr = bo->offset + offset;
-
- ss->ss2.width = width - 1;
- ss->ss2.height = height - 1;
-
- ss->ss3.pitch = pitch - 1;
-
- dri_bo_get_tiling(bo, &tiling, &swizzle);
- gen7_render_set_surface_tiling(ss, tiling);
-}
-
-
-static void
-i965_render_src_surface_state(
- VADriverContextP ctx,
- int index,
- dri_bo *region,
- unsigned long offset,
- int w,
- int h,
- int pitch,
- int format,
- unsigned int flags
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- void *ss;
- dri_bo *ss_bo = render_state->wm.surface_state_binding_table_bo;
-
- assert(index < MAX_RENDER_SURFACES);
-
- dri_bo_map(ss_bo, 1);
- assert(ss_bo->virtual);
- ss = (char *)ss_bo->virtual + SURFACE_STATE_OFFSET(index);
-
- if (IS_GEN7(i965->intel.device_info)) {
- gen7_render_set_surface_state(ss,
- region, offset,
- w, h,
- pitch, format, flags);
- if (IS_HASWELL(i965->intel.device_info))
- gen7_render_set_surface_scs(ss);
- dri_bo_emit_reloc(ss_bo,
- I915_GEM_DOMAIN_SAMPLER, 0,
- offset,
- SURFACE_STATE_OFFSET(index) + offsetof(struct gen7_surface_state, ss1),
- region);
- } else {
- i965_render_set_surface_state(ss,
- region, offset,
- w, h,
- pitch, format, flags);
- dri_bo_emit_reloc(ss_bo,
- I915_GEM_DOMAIN_SAMPLER, 0,
- offset,
- SURFACE_STATE_OFFSET(index) + offsetof(struct i965_surface_state, ss1),
- region);
- }
-
- ((unsigned int *)((char *)ss_bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
- dri_bo_unmap(ss_bo);
- render_state->wm.sampler_count++;
-}
-
-static void
-i965_render_src_surfaces_state(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- unsigned int flags
-)
-{
- int region_pitch;
- int rw, rh;
- dri_bo *region;
-
- region_pitch = obj_surface->width;
- rw = obj_surface->orig_width;
- rh = obj_surface->orig_height;
- region = obj_surface->bo;
-
- i965_render_src_surface_state(ctx, 1, region, 0, rw, rh, region_pitch, I965_SURFACEFORMAT_R8_UNORM, flags); /* Y */
- i965_render_src_surface_state(ctx, 2, region, 0, rw, rh, region_pitch, I965_SURFACEFORMAT_R8_UNORM, flags);
-
- if (obj_surface->fourcc == VA_FOURCC_Y800) /* single plane for grayscale */
- return;
-
- if (obj_surface->fourcc == VA_FOURCC_NV12) {
- i965_render_src_surface_state(ctx, 3, region,
- region_pitch * obj_surface->y_cb_offset,
- obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
- I965_SURFACEFORMAT_R8G8_UNORM, flags); /* UV */
- i965_render_src_surface_state(ctx, 4, region,
- region_pitch * obj_surface->y_cb_offset,
- obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
- I965_SURFACEFORMAT_R8G8_UNORM, flags);
- } else {
- i965_render_src_surface_state(ctx, 3, region,
- region_pitch * obj_surface->y_cb_offset,
- obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
- I965_SURFACEFORMAT_R8_UNORM, flags); /* U */
- i965_render_src_surface_state(ctx, 4, region,
- region_pitch * obj_surface->y_cb_offset,
- obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
- I965_SURFACEFORMAT_R8_UNORM, flags);
- i965_render_src_surface_state(ctx, 5, region,
- region_pitch * obj_surface->y_cr_offset,
- obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
- I965_SURFACEFORMAT_R8_UNORM, flags); /* V */
- i965_render_src_surface_state(ctx, 6, region,
- region_pitch * obj_surface->y_cr_offset,
- obj_surface->cb_cr_width, obj_surface->cb_cr_height, obj_surface->cb_cr_pitch,
- I965_SURFACEFORMAT_R8_UNORM, flags);
- }
-}
-
-static void
-i965_subpic_render_src_surfaces_state(VADriverContextP ctx,
- struct object_surface *obj_surface)
-{
- dri_bo *subpic_region;
- unsigned int index = obj_surface->subpic_render_idx;
- struct object_subpic *obj_subpic = obj_surface->obj_subpic[index];
- struct object_image *obj_image = obj_subpic->obj_image;
-
- assert(obj_surface);
- assert(obj_surface->bo);
- subpic_region = obj_image->bo;
- /*subpicture surface*/
- i965_render_src_surface_state(ctx, 1, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->pitch, obj_subpic->format, 0);
- i965_render_src_surface_state(ctx, 2, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->pitch, obj_subpic->format, 0);
-}
-
-static void
-i965_render_dest_surface_state(VADriverContextP ctx, int index)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct intel_region *dest_region = render_state->draw_region;
- void *ss;
- dri_bo *ss_bo = render_state->wm.surface_state_binding_table_bo;
- int format;
- assert(index < MAX_RENDER_SURFACES);
-
- if (dest_region->cpp == 2) {
- format = I965_SURFACEFORMAT_B5G6R5_UNORM;
- } else {
- format = I965_SURFACEFORMAT_B8G8R8A8_UNORM;
- }
-
- dri_bo_map(ss_bo, 1);
- assert(ss_bo->virtual);
- ss = (char *)ss_bo->virtual + SURFACE_STATE_OFFSET(index);
-
- if (IS_GEN7(i965->intel.device_info)) {
- gen7_render_set_surface_state(ss,
- dest_region->bo, 0,
- dest_region->width, dest_region->height,
- dest_region->pitch, format, 0);
- if (IS_HASWELL(i965->intel.device_info))
- gen7_render_set_surface_scs(ss);
- dri_bo_emit_reloc(ss_bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- 0,
- SURFACE_STATE_OFFSET(index) + offsetof(struct gen7_surface_state, ss1),
- dest_region->bo);
- } else {
- i965_render_set_surface_state(ss,
- dest_region->bo, 0,
- dest_region->width, dest_region->height,
- dest_region->pitch, format, 0);
- dri_bo_emit_reloc(ss_bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- 0,
- SURFACE_STATE_OFFSET(index) + offsetof(struct i965_surface_state, ss1),
- dest_region->bo);
- }
-
- ((unsigned int *)((char *)ss_bo->virtual + BINDING_TABLE_OFFSET))[index] = SURFACE_STATE_OFFSET(index);
- dri_bo_unmap(ss_bo);
-}
-
-static void
-i965_fill_vertex_buffer(
- VADriverContextP ctx,
- float tex_coords[4], /* [(u1,v1);(u2,v2)] */
- float vid_coords[4] /* [(x1,y1);(x2,y2)] */
-)
-{
- struct i965_driver_data * const i965 = i965_driver_data(ctx);
- float vb[12];
-
- enum { X1, Y1, X2, Y2 };
-
- static const unsigned int g_rotation_indices[][6] = {
- [VA_ROTATION_NONE] = { X2, Y2, X1, Y2, X1, Y1 },
- [VA_ROTATION_90] = { X2, Y1, X2, Y2, X1, Y2 },
- [VA_ROTATION_180] = { X1, Y1, X2, Y1, X2, Y2 },
- [VA_ROTATION_270] = { X1, Y2, X1, Y1, X2, Y1 },
- };
-
- const unsigned int * const rotation_indices =
- g_rotation_indices[i965->rotation_attrib->value];
-
- vb[0] = tex_coords[rotation_indices[0]]; /* bottom-right corner */
- vb[1] = tex_coords[rotation_indices[1]];
- vb[2] = vid_coords[X2];
- vb[3] = vid_coords[Y2];
-
- vb[4] = tex_coords[rotation_indices[2]]; /* bottom-left corner */
- vb[5] = tex_coords[rotation_indices[3]];
- vb[6] = vid_coords[X1];
- vb[7] = vid_coords[Y2];
-
- vb[8] = tex_coords[rotation_indices[4]]; /* top-left corner */
- vb[9] = tex_coords[rotation_indices[5]];
- vb[10] = vid_coords[X1];
- vb[11] = vid_coords[Y1];
-
- dri_bo_subdata(i965->render_state.vb.vertex_buffer, 0, sizeof(vb), vb);
-}
-
-static void
-i965_subpic_render_upload_vertex(VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *output_rect)
-{
- unsigned int index = obj_surface->subpic_render_idx;
- struct object_subpic *obj_subpic = obj_surface->obj_subpic[index];
- float tex_coords[4], vid_coords[4];
- VARectangle dst_rect;
-
- if (obj_subpic->flags & VA_SUBPICTURE_DESTINATION_IS_SCREEN_COORD)
- dst_rect = obj_subpic->dst_rect;
- else {
- const float sx = (float)output_rect->width / obj_surface->orig_width;
- const float sy = (float)output_rect->height / obj_surface->orig_height;
- dst_rect.x = output_rect->x + sx * obj_subpic->dst_rect.x;
- dst_rect.y = output_rect->y + sy * obj_subpic->dst_rect.y;
- dst_rect.width = sx * obj_subpic->dst_rect.width;
- dst_rect.height = sy * obj_subpic->dst_rect.height;
- }
-
- tex_coords[0] = (float)obj_subpic->src_rect.x / obj_subpic->width;
- tex_coords[1] = (float)obj_subpic->src_rect.y / obj_subpic->height;
- tex_coords[2] = (float)(obj_subpic->src_rect.x + obj_subpic->src_rect.width) / obj_subpic->width;
- tex_coords[3] = (float)(obj_subpic->src_rect.y + obj_subpic->src_rect.height) / obj_subpic->height;
-
- vid_coords[0] = dst_rect.x;
- vid_coords[1] = dst_rect.y;
- vid_coords[2] = (float)(dst_rect.x + dst_rect.width);
- vid_coords[3] = (float)(dst_rect.y + dst_rect.height);
-
- i965_fill_vertex_buffer(ctx, tex_coords, vid_coords);
-}
-
-static void
-i965_render_upload_vertex(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct intel_region *dest_region = render_state->draw_region;
- float tex_coords[4], vid_coords[4];
- int width, height;
-
- width = obj_surface->orig_width;
- height = obj_surface->orig_height;
-
- tex_coords[0] = (float)src_rect->x / width;
- tex_coords[1] = (float)src_rect->y / height;
- tex_coords[2] = (float)(src_rect->x + src_rect->width) / width;
- tex_coords[3] = (float)(src_rect->y + src_rect->height) / height;
-
- vid_coords[0] = dest_region->x + dst_rect->x;
- vid_coords[1] = dest_region->y + dst_rect->y;
- vid_coords[2] = vid_coords[0] + dst_rect->width;
- vid_coords[3] = vid_coords[1] + dst_rect->height;
-
- i965_fill_vertex_buffer(ctx, tex_coords, vid_coords);
-}
-
-#define PI 3.1415926
-
-static void
-i965_render_upload_constants(VADriverContextP ctx,
- struct object_surface *obj_surface,
- unsigned int flags)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- unsigned short *constant_buffer;
- float *color_balance_base;
- float contrast = (float)i965->contrast_attrib->value / DEFAULT_CONTRAST;
- float brightness = (float)i965->brightness_attrib->value / 255; /* YUV is float in the shader */
- float hue = (float)i965->hue_attrib->value / 180 * PI;
- float saturation = (float)i965->saturation_attrib->value / DEFAULT_SATURATION;
- float *yuv_to_rgb;
- const float* yuv_coefs;
- size_t coefs_length;
-
- dri_bo_map(render_state->curbe.bo, 1);
- assert(render_state->curbe.bo->virtual);
- constant_buffer = render_state->curbe.bo->virtual;
-
- if (obj_surface->subsampling == SUBSAMPLE_YUV400) {
- assert(obj_surface->fourcc == VA_FOURCC_Y800);
-
- constant_buffer[0] = 2;
- } else {
- if (obj_surface->fourcc == VA_FOURCC_NV12)
- constant_buffer[0] = 1;
- else
- constant_buffer[0] = 0;
- }
-
- if (i965->contrast_attrib->value == DEFAULT_CONTRAST &&
- i965->brightness_attrib->value == DEFAULT_BRIGHTNESS &&
- i965->hue_attrib->value == DEFAULT_HUE &&
- i965->saturation_attrib->value == DEFAULT_SATURATION)
- constant_buffer[1] = 1; /* skip color balance transformation */
- else
- constant_buffer[1] = 0;
-
- color_balance_base = (float *)constant_buffer + 4;
- *color_balance_base++ = contrast;
- *color_balance_base++ = brightness;
- *color_balance_base++ = cos(hue) * contrast * saturation;
- *color_balance_base++ = sin(hue) * contrast * saturation;
-
- yuv_to_rgb = (float *)constant_buffer + 8;
- yuv_coefs = i915_color_standard_to_coefs(i915_filter_to_color_standard(flags & VA_SRC_COLOR_MASK),
- &coefs_length);
- memcpy(yuv_to_rgb, yuv_coefs, coefs_length);
-
- dri_bo_unmap(render_state->curbe.bo);
-}
-
-static void
-i965_subpic_render_upload_constants(VADriverContextP ctx,
- struct object_surface *obj_surface)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- float *constant_buffer;
- float global_alpha = 1.0;
- unsigned int index = obj_surface->subpic_render_idx;
- struct object_subpic *obj_subpic = obj_surface->obj_subpic[index];
-
- if (obj_subpic->flags & VA_SUBPICTURE_GLOBAL_ALPHA) {
- global_alpha = obj_subpic->global_alpha;
- }
-
- dri_bo_map(render_state->curbe.bo, 1);
-
- assert(render_state->curbe.bo->virtual);
- constant_buffer = render_state->curbe.bo->virtual;
- *constant_buffer = global_alpha;
-
- dri_bo_unmap(render_state->curbe.bo);
-}
-
-static void
-i965_surface_render_state_setup(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect,
- unsigned int flags
-)
-{
- i965_render_vs_unit(ctx);
- i965_render_sf_unit(ctx);
- i965_render_dest_surface_state(ctx, 0);
- i965_render_src_surfaces_state(ctx, obj_surface, flags);
- i965_render_sampler(ctx);
- i965_render_wm_unit(ctx);
- i965_render_cc_viewport(ctx);
- i965_render_cc_unit(ctx);
- i965_render_upload_vertex(ctx, obj_surface, src_rect, dst_rect);
- i965_render_upload_constants(ctx, obj_surface, flags);
-}
-
-static void
-i965_subpic_render_state_setup(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect
-)
-{
- i965_render_vs_unit(ctx);
- i965_render_sf_unit(ctx);
- i965_render_dest_surface_state(ctx, 0);
- i965_subpic_render_src_surfaces_state(ctx, obj_surface);
- i965_render_sampler(ctx);
- i965_subpic_render_wm_unit(ctx);
- i965_render_cc_viewport(ctx);
- i965_subpic_render_cc_unit(ctx);
- i965_subpic_render_upload_constants(ctx, obj_surface);
- i965_subpic_render_upload_vertex(ctx, obj_surface, dst_rect);
-}
-
-
-static void
-i965_render_pipeline_select(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- BEGIN_BATCH(batch, 1);
- OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_3D);
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_render_state_sip(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, CMD_STATE_SIP | 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_render_state_base_address(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- if (IS_IRONLAKE(i965->intel.device_info)) {
- BEGIN_BATCH(batch, 8);
- OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | 6);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_RELOC(batch, render_state->wm.surface_state_binding_table_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- ADVANCE_BATCH(batch);
- } else {
- BEGIN_BATCH(batch, 6);
- OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | 4);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_RELOC(batch, render_state->wm.surface_state_binding_table_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY);
- ADVANCE_BATCH(batch);
- }
-}
-
-static void
-i965_render_binding_table_pointers(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- BEGIN_BATCH(batch, 6);
- OUT_BATCH(batch, CMD_BINDING_TABLE_POINTERS | 4);
- OUT_BATCH(batch, 0); /* vs */
- OUT_BATCH(batch, 0); /* gs */
- OUT_BATCH(batch, 0); /* clip */
- OUT_BATCH(batch, 0); /* sf */
- OUT_BATCH(batch, BINDING_TABLE_OFFSET);
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_render_constant_color(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- BEGIN_BATCH(batch, 5);
- OUT_BATCH(batch, CMD_CONSTANT_COLOR | 3);
- OUT_BATCH(batch, float_to_uint(1.0));
- OUT_BATCH(batch, float_to_uint(0.0));
- OUT_BATCH(batch, float_to_uint(1.0));
- OUT_BATCH(batch, float_to_uint(1.0));
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_render_pipelined_pointers(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- BEGIN_BATCH(batch, 7);
- OUT_BATCH(batch, CMD_PIPELINED_POINTERS | 5);
- OUT_RELOC(batch, render_state->vs.state, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
- OUT_BATCH(batch, 0); /* disable GS */
- OUT_BATCH(batch, 0); /* disable CLIP */
- OUT_RELOC(batch, render_state->sf.state, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
- OUT_RELOC(batch, render_state->wm.state, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
- OUT_RELOC(batch, render_state->cc.state, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_render_urb_layout(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- int urb_vs_start, urb_vs_size;
- int urb_gs_start, urb_gs_size;
- int urb_clip_start, urb_clip_size;
- int urb_sf_start, urb_sf_size;
- int urb_cs_start, urb_cs_size;
-
- urb_vs_start = 0;
- urb_vs_size = URB_VS_ENTRIES * URB_VS_ENTRY_SIZE;
- urb_gs_start = urb_vs_start + urb_vs_size;
- urb_gs_size = URB_GS_ENTRIES * URB_GS_ENTRY_SIZE;
- urb_clip_start = urb_gs_start + urb_gs_size;
- urb_clip_size = URB_CLIP_ENTRIES * URB_CLIP_ENTRY_SIZE;
- urb_sf_start = urb_clip_start + urb_clip_size;
- urb_sf_size = URB_SF_ENTRIES * URB_SF_ENTRY_SIZE;
- urb_cs_start = urb_sf_start + urb_sf_size;
- urb_cs_size = URB_CS_ENTRIES * URB_CS_ENTRY_SIZE;
-
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch,
- CMD_URB_FENCE |
- UF0_CS_REALLOC |
- UF0_SF_REALLOC |
- UF0_CLIP_REALLOC |
- UF0_GS_REALLOC |
- UF0_VS_REALLOC |
- 1);
- OUT_BATCH(batch,
- ((urb_clip_start + urb_clip_size) << UF1_CLIP_FENCE_SHIFT) |
- ((urb_gs_start + urb_gs_size) << UF1_GS_FENCE_SHIFT) |
- ((urb_vs_start + urb_vs_size) << UF1_VS_FENCE_SHIFT));
- OUT_BATCH(batch,
- ((urb_cs_start + urb_cs_size) << UF2_CS_FENCE_SHIFT) |
- ((urb_sf_start + urb_sf_size) << UF2_SF_FENCE_SHIFT));
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_render_cs_urb_layout(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, CMD_CS_URB_STATE | 0);
- OUT_BATCH(batch,
- ((URB_CS_ENTRY_SIZE - 1) << 4) | /* URB Entry Allocation Size */
- (URB_CS_ENTRIES << 0)); /* Number of URB Entries */
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_render_constant_buffer(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, CMD_CONSTANT_BUFFER | (1 << 8) | (2 - 2));
- OUT_RELOC(batch, render_state->curbe.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- URB_CS_ENTRY_SIZE - 1);
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_render_drawing_rectangle(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
- struct intel_region *dest_region = render_state->draw_region;
-
- BEGIN_BATCH(batch, 4);
- OUT_BATCH(batch, CMD_DRAWING_RECTANGLE | 2);
- OUT_BATCH(batch, 0x00000000);
- OUT_BATCH(batch, (dest_region->width - 1) | (dest_region->height - 1) << 16);
- OUT_BATCH(batch, 0x00000000);
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_render_vertex_elements(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- if (IS_IRONLAKE(i965->intel.device_info)) {
- BEGIN_BATCH(batch, 5);
- OUT_BATCH(batch, CMD_VERTEX_ELEMENTS | 3);
- /* offset 0: X,Y -> {X, Y, 1.0, 1.0} */
- OUT_BATCH(batch, (0 << VE0_VERTEX_BUFFER_INDEX_SHIFT) |
- VE0_VALID |
- (I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
- (0 << VE0_OFFSET_SHIFT));
- OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
- (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT));
- /* offset 8: S0, T0 -> {S0, T0, 1.0, 1.0} */
- OUT_BATCH(batch, (0 << VE0_VERTEX_BUFFER_INDEX_SHIFT) |
- VE0_VALID |
- (I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
- (8 << VE0_OFFSET_SHIFT));
- OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
- (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT));
- ADVANCE_BATCH(batch);
- } else {
- BEGIN_BATCH(batch, 5);
- OUT_BATCH(batch, CMD_VERTEX_ELEMENTS | 3);
- /* offset 0: X,Y -> {X, Y, 1.0, 1.0} */
- OUT_BATCH(batch, (0 << VE0_VERTEX_BUFFER_INDEX_SHIFT) |
- VE0_VALID |
- (I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
- (0 << VE0_OFFSET_SHIFT));
- OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
- (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT) |
- (0 << VE1_DESTINATION_ELEMENT_OFFSET_SHIFT));
- /* offset 8: S0, T0 -> {S0, T0, 1.0, 1.0} */
- OUT_BATCH(batch, (0 << VE0_VERTEX_BUFFER_INDEX_SHIFT) |
- VE0_VALID |
- (I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
- (8 << VE0_OFFSET_SHIFT));
- OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
- (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT) |
- (4 << VE1_DESTINATION_ELEMENT_OFFSET_SHIFT));
- ADVANCE_BATCH(batch);
- }
-}
-
-static void
-i965_render_upload_image_palette(
- VADriverContextP ctx,
- struct object_image *obj_image,
- unsigned int alpha
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- unsigned int i;
-
- assert(obj_image);
-
- if (!obj_image)
- return;
-
- if (obj_image->image.num_palette_entries == 0)
- return;
-
- BEGIN_BATCH(batch, 1 + obj_image->image.num_palette_entries);
- OUT_BATCH(batch, CMD_SAMPLER_PALETTE_LOAD | (obj_image->image.num_palette_entries - 1));
- /*fill palette*/
- //int32_t out[16]; //0-23:color 23-31:alpha
- for (i = 0; i < obj_image->image.num_palette_entries; i++)
- OUT_BATCH(batch, (alpha << 24) | obj_image->palette[i]);
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_render_startup(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- BEGIN_BATCH(batch, 11);
- OUT_BATCH(batch, CMD_VERTEX_BUFFERS | 3);
- OUT_BATCH(batch,
- (0 << VB0_BUFFER_INDEX_SHIFT) |
- VB0_VERTEXDATA |
- ((4 * 4) << VB0_BUFFER_PITCH_SHIFT));
- OUT_RELOC(batch, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, 0);
-
- if (IS_IRONLAKE(i965->intel.device_info))
- OUT_RELOC(batch, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, 12 * 4);
- else
- OUT_BATCH(batch, 3);
-
- OUT_BATCH(batch, 0);
-
- OUT_BATCH(batch,
- CMD_3DPRIMITIVE |
- _3DPRIMITIVE_VERTEX_SEQUENTIAL |
- (_3DPRIM_RECTLIST << _3DPRIMITIVE_TOPOLOGY_SHIFT) |
- (0 << 9) |
- 4);
- OUT_BATCH(batch, 3); /* vertex count per instance */
- OUT_BATCH(batch, 0); /* start vertex offset */
- OUT_BATCH(batch, 1); /* single instance */
- OUT_BATCH(batch, 0); /* start instance location */
- OUT_BATCH(batch, 0); /* index buffer offset, ignored */
- ADVANCE_BATCH(batch);
-}
-
-static void
-i965_clear_dest_region(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
- struct intel_region *dest_region = render_state->draw_region;
- unsigned int blt_cmd, br13;
- int pitch;
-
- blt_cmd = XY_COLOR_BLT_CMD;
- br13 = 0xf0 << 16;
- pitch = dest_region->pitch;
-
- if (dest_region->cpp == 4) {
- br13 |= BR13_8888;
- blt_cmd |= (XY_COLOR_BLT_WRITE_RGB | XY_COLOR_BLT_WRITE_ALPHA);
- } else {
- assert(dest_region->cpp == 2);
- br13 |= BR13_565;
- }
-
- if (dest_region->tiling != I915_TILING_NONE) {
- blt_cmd |= XY_COLOR_BLT_DST_TILED;
- pitch /= 4;
- }
-
- br13 |= pitch;
-
- if (IS_GEN6(i965->intel.device_info) ||
- IS_GEN7(i965->intel.device_info)) {
- intel_batchbuffer_start_atomic_blt(batch, 24);
- BEGIN_BLT_BATCH(batch, 6);
- } else {
- intel_batchbuffer_start_atomic(batch, 24);
- BEGIN_BATCH(batch, 6);
- }
-
- OUT_BATCH(batch, blt_cmd);
- OUT_BATCH(batch, br13);
- OUT_BATCH(batch, (dest_region->y << 16) | (dest_region->x));
- OUT_BATCH(batch, ((dest_region->y + dest_region->height) << 16) |
- (dest_region->x + dest_region->width));
- OUT_RELOC(batch, dest_region->bo,
- I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
- 0);
- OUT_BATCH(batch, 0x0);
- ADVANCE_BATCH(batch);
- intel_batchbuffer_end_atomic(batch);
-}
-
-static void
-i965_surface_render_pipeline_setup(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- i965_clear_dest_region(ctx);
- intel_batchbuffer_start_atomic(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- i965_render_pipeline_select(ctx);
- i965_render_state_sip(ctx);
- i965_render_state_base_address(ctx);
- i965_render_binding_table_pointers(ctx);
- i965_render_constant_color(ctx);
- i965_render_pipelined_pointers(ctx);
- i965_render_urb_layout(ctx);
- i965_render_cs_urb_layout(ctx);
- i965_render_constant_buffer(ctx);
- i965_render_drawing_rectangle(ctx);
- i965_render_vertex_elements(ctx);
- i965_render_startup(ctx);
- intel_batchbuffer_end_atomic(batch);
-}
-
-static void
-i965_subpic_render_pipeline_setup(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- i965_render_pipeline_select(ctx);
- i965_render_state_sip(ctx);
- i965_render_state_base_address(ctx);
- i965_render_binding_table_pointers(ctx);
- i965_render_constant_color(ctx);
- i965_render_pipelined_pointers(ctx);
- i965_render_urb_layout(ctx);
- i965_render_cs_urb_layout(ctx);
- i965_render_constant_buffer(ctx);
- i965_render_drawing_rectangle(ctx);
- i965_render_vertex_elements(ctx);
- i965_render_startup(ctx);
- intel_batchbuffer_end_atomic(batch);
-}
-
-
-static void
-i965_render_initialize(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- dri_bo *bo;
-
- /* VERTEX BUFFER */
- dri_bo_unreference(render_state->vb.vertex_buffer);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "vertex buffer",
- 4096,
- 4096);
- assert(bo);
- render_state->vb.vertex_buffer = bo;
-
- /* VS */
- dri_bo_unreference(render_state->vs.state);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "vs state",
- sizeof(struct i965_vs_unit_state),
- 64);
- assert(bo);
- render_state->vs.state = bo;
-
- /* GS */
- /* CLIP */
- /* SF */
- dri_bo_unreference(render_state->sf.state);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "sf state",
- sizeof(struct i965_sf_unit_state),
- 64);
- assert(bo);
- render_state->sf.state = bo;
-
- /* WM */
- dri_bo_unreference(render_state->wm.surface_state_binding_table_bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "surface state & binding table",
- (SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_RENDER_SURFACES,
- 4096);
- assert(bo);
- render_state->wm.surface_state_binding_table_bo = bo;
-
- dri_bo_unreference(render_state->wm.sampler);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "sampler state",
- MAX_SAMPLERS * sizeof(struct i965_sampler_state),
- 64);
- assert(bo);
- render_state->wm.sampler = bo;
- render_state->wm.sampler_count = 0;
-
- dri_bo_unreference(render_state->wm.state);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "wm state",
- sizeof(struct i965_wm_unit_state),
- 64);
- assert(bo);
- render_state->wm.state = bo;
-
- /* COLOR CALCULATOR */
- dri_bo_unreference(render_state->cc.state);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "color calc state",
- sizeof(struct i965_cc_unit_state),
- 64);
- assert(bo);
- render_state->cc.state = bo;
-
- dri_bo_unreference(render_state->cc.viewport);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "cc viewport",
- sizeof(struct i965_cc_viewport),
- 64);
- assert(bo);
- render_state->cc.viewport = bo;
-}
-
-static void
-i965_render_put_surface(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect,
- unsigned int flags
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- i965_render_initialize(ctx);
- i965_surface_render_state_setup(ctx, obj_surface, src_rect, dst_rect, flags);
- i965_surface_render_pipeline_setup(ctx);
- intel_batchbuffer_flush(batch);
-}
-
-static void
-i965_render_put_subpicture(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- unsigned int index = obj_surface->subpic_render_idx;
- struct object_subpic *obj_subpic = obj_surface->obj_subpic[index];
-
- assert(obj_subpic);
-
- i965_render_initialize(ctx);
- i965_subpic_render_state_setup(ctx, obj_surface, src_rect, dst_rect);
- i965_subpic_render_pipeline_setup(ctx);
- i965_render_upload_image_palette(ctx, obj_subpic->obj_image, 0xff);
- intel_batchbuffer_flush(batch);
-}
-
-/*
- * for GEN6+
- */
-static void
-gen6_render_initialize(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- dri_bo *bo;
-
- /* VERTEX BUFFER */
- dri_bo_unreference(render_state->vb.vertex_buffer);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "vertex buffer",
- 4096,
- 4096);
- assert(bo);
- render_state->vb.vertex_buffer = bo;
-
- /* WM */
- dri_bo_unreference(render_state->wm.surface_state_binding_table_bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "surface state & binding table",
- (SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_RENDER_SURFACES,
- 4096);
- assert(bo);
- render_state->wm.surface_state_binding_table_bo = bo;
-
- dri_bo_unreference(render_state->wm.sampler);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "sampler state",
- MAX_SAMPLERS * sizeof(struct i965_sampler_state),
- 4096);
- assert(bo);
- render_state->wm.sampler = bo;
- render_state->wm.sampler_count = 0;
-
- /* COLOR CALCULATOR */
- dri_bo_unreference(render_state->cc.state);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "color calc state",
- sizeof(struct gen6_color_calc_state),
- 4096);
- assert(bo);
- render_state->cc.state = bo;
-
- /* CC VIEWPORT */
- dri_bo_unreference(render_state->cc.viewport);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "cc viewport",
- sizeof(struct i965_cc_viewport),
- 4096);
- assert(bo);
- render_state->cc.viewport = bo;
-
- /* BLEND STATE */
- dri_bo_unreference(render_state->cc.blend);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "blend state",
- sizeof(struct gen6_blend_state),
- 4096);
- assert(bo);
- render_state->cc.blend = bo;
-
- /* DEPTH & STENCIL STATE */
- dri_bo_unreference(render_state->cc.depth_stencil);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "depth & stencil state",
- sizeof(struct gen6_depth_stencil_state),
- 4096);
- assert(bo);
- render_state->cc.depth_stencil = bo;
-}
-
-static void
-gen6_render_color_calc_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct gen6_color_calc_state *color_calc_state;
-
- dri_bo_map(render_state->cc.state, 1);
- assert(render_state->cc.state->virtual);
- color_calc_state = render_state->cc.state->virtual;
- memset(color_calc_state, 0, sizeof(*color_calc_state));
- color_calc_state->constant_r = 1.0;
- color_calc_state->constant_g = 0.0;
- color_calc_state->constant_b = 1.0;
- color_calc_state->constant_a = 1.0;
- dri_bo_unmap(render_state->cc.state);
-}
-
-static void
-gen6_render_blend_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct gen6_blend_state *blend_state;
-
- dri_bo_map(render_state->cc.blend, 1);
- assert(render_state->cc.blend->virtual);
- blend_state = render_state->cc.blend->virtual;
- memset(blend_state, 0, sizeof(*blend_state));
- blend_state->blend1.logic_op_enable = 1;
- blend_state->blend1.logic_op_func = 0xc;
- dri_bo_unmap(render_state->cc.blend);
-}
-
-static void
-gen6_render_depth_stencil_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct gen6_depth_stencil_state *depth_stencil_state;
-
- dri_bo_map(render_state->cc.depth_stencil, 1);
- assert(render_state->cc.depth_stencil->virtual);
- depth_stencil_state = render_state->cc.depth_stencil->virtual;
- memset(depth_stencil_state, 0, sizeof(*depth_stencil_state));
- dri_bo_unmap(render_state->cc.depth_stencil);
-}
-
-static void
-gen6_render_setup_states(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect,
- unsigned int flags
-)
-{
- i965_render_dest_surface_state(ctx, 0);
- i965_render_src_surfaces_state(ctx, obj_surface, flags);
- i965_render_sampler(ctx);
- i965_render_cc_viewport(ctx);
- gen6_render_color_calc_state(ctx);
- gen6_render_blend_state(ctx);
- gen6_render_depth_stencil_state(ctx);
- i965_render_upload_constants(ctx, obj_surface, flags);
- i965_render_upload_vertex(ctx, obj_surface, src_rect, dst_rect);
-}
-
-static void
-gen6_emit_invarient_states(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_3D);
-
- OUT_BATCH(batch, GEN6_3DSTATE_MULTISAMPLE | (3 - 2));
- OUT_BATCH(batch, GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_CENTER |
- GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_1); /* 1 sample/pixel */
- OUT_BATCH(batch, 0);
-
- OUT_BATCH(batch, GEN6_3DSTATE_SAMPLE_MASK | (2 - 2));
- OUT_BATCH(batch, 1);
-
- /* Set system instruction pointer */
- OUT_BATCH(batch, CMD_STATE_SIP | 0);
- OUT_BATCH(batch, 0);
-}
-
-static void
-gen6_emit_state_base_address(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | (10 - 2));
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* General state base address */
- OUT_RELOC(batch, render_state->wm.surface_state_binding_table_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY); /* Surface state base address */
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Dynamic state base address */
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Indirect object base address */
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Instruction base address */
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* General state upper bound */
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Dynamic state upper bound */
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Indirect object upper bound */
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Instruction access upper bound */
-}
-
-static void
-gen6_emit_viewport_state_pointers(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- OUT_BATCH(batch, GEN6_3DSTATE_VIEWPORT_STATE_POINTERS |
- GEN6_3DSTATE_VIEWPORT_STATE_MODIFY_CC |
- (4 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_RELOC(batch, render_state->cc.viewport, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
-}
-
-static void
-gen6_emit_urb(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- OUT_BATCH(batch, GEN6_3DSTATE_URB | (3 - 2));
- OUT_BATCH(batch, ((1 - 1) << GEN6_3DSTATE_URB_VS_SIZE_SHIFT) |
- (24 << GEN6_3DSTATE_URB_VS_ENTRIES_SHIFT)); /* at least 24 on GEN6 */
- OUT_BATCH(batch, (0 << GEN6_3DSTATE_URB_GS_SIZE_SHIFT) |
- (0 << GEN6_3DSTATE_URB_GS_ENTRIES_SHIFT)); /* no GS thread */
-}
-
-static void
-gen6_emit_cc_state_pointers(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- OUT_BATCH(batch, GEN6_3DSTATE_CC_STATE_POINTERS | (4 - 2));
- OUT_RELOC(batch, render_state->cc.blend, I915_GEM_DOMAIN_INSTRUCTION, 0, 1);
- OUT_RELOC(batch, render_state->cc.depth_stencil, I915_GEM_DOMAIN_INSTRUCTION, 0, 1);
- OUT_RELOC(batch, render_state->cc.state, I915_GEM_DOMAIN_INSTRUCTION, 0, 1);
-}
-
-static void
-gen6_emit_sampler_state_pointers(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- OUT_BATCH(batch, GEN6_3DSTATE_SAMPLER_STATE_POINTERS |
- GEN6_3DSTATE_SAMPLER_STATE_MODIFY_PS |
- (4 - 2));
- OUT_BATCH(batch, 0); /* VS */
- OUT_BATCH(batch, 0); /* GS */
- OUT_RELOC(batch,render_state->wm.sampler, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
-}
-
-static void
-gen6_emit_binding_table(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- /* Binding table pointers */
- OUT_BATCH(batch, CMD_BINDING_TABLE_POINTERS |
- GEN6_BINDING_TABLE_MODIFY_PS |
- (4 - 2));
- OUT_BATCH(batch, 0); /* vs */
- OUT_BATCH(batch, 0); /* gs */
- /* Only the PS uses the binding table */
- OUT_BATCH(batch, BINDING_TABLE_OFFSET);
-}
-
-static void
-gen6_emit_depth_buffer_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- OUT_BATCH(batch, CMD_DEPTH_BUFFER | (7 - 2));
- OUT_BATCH(batch, (I965_SURFACE_NULL << CMD_DEPTH_BUFFER_TYPE_SHIFT) |
- (I965_DEPTHFORMAT_D32_FLOAT << CMD_DEPTH_BUFFER_FORMAT_SHIFT));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
-
- OUT_BATCH(batch, CMD_CLEAR_PARAMS | (2 - 2));
- OUT_BATCH(batch, 0);
-}
-
-static void
-gen6_emit_drawing_rectangle(VADriverContextP ctx)
-{
- i965_render_drawing_rectangle(ctx);
-}
-
-static void
-gen6_emit_vs_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- /* disable VS constant buffer */
- OUT_BATCH(batch, GEN6_3DSTATE_CONSTANT_VS | (5 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
-
- OUT_BATCH(batch, GEN6_3DSTATE_VS | (6 - 2));
- OUT_BATCH(batch, 0); /* without VS kernel */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0); /* pass-through */
-}
-
-static void
-gen6_emit_gs_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- /* disable GS constant buffer */
- OUT_BATCH(batch, GEN6_3DSTATE_CONSTANT_GS | (5 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
-
- OUT_BATCH(batch, GEN6_3DSTATE_GS | (7 - 2));
- OUT_BATCH(batch, 0); /* without GS kernel */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0); /* pass-through */
-}
-
-static void
-gen6_emit_clip_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- OUT_BATCH(batch, GEN6_3DSTATE_CLIP | (4 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0); /* pass-through */
- OUT_BATCH(batch, 0);
-}
-
-static void
-gen6_emit_sf_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- OUT_BATCH(batch, GEN6_3DSTATE_SF | (20 - 2));
- OUT_BATCH(batch, (1 << GEN6_3DSTATE_SF_NUM_OUTPUTS_SHIFT) |
- (1 << GEN6_3DSTATE_SF_URB_ENTRY_READ_LENGTH_SHIFT) |
- (0 << GEN6_3DSTATE_SF_URB_ENTRY_READ_OFFSET_SHIFT));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, GEN6_3DSTATE_SF_CULL_NONE);
- OUT_BATCH(batch, 2 << GEN6_3DSTATE_SF_TRIFAN_PROVOKE_SHIFT); /* DW4 */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0); /* DW9 */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0); /* DW14 */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0); /* DW19 */
-}
-
-static void
-gen6_emit_wm_state(VADriverContextP ctx, int kernel)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- OUT_BATCH(batch, GEN6_3DSTATE_CONSTANT_PS |
- GEN6_3DSTATE_CONSTANT_BUFFER_0_ENABLE |
- (5 - 2));
- OUT_RELOC(batch,
- render_state->curbe.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- (URB_CS_ENTRY_SIZE-1));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
-
- OUT_BATCH(batch, GEN6_3DSTATE_WM | (9 - 2));
- OUT_RELOC(batch, render_state->render_kernels[kernel].bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- OUT_BATCH(batch, (1 << GEN6_3DSTATE_WM_SAMPLER_COUNT_SHITF) |
- (5 << GEN6_3DSTATE_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, (6 << GEN6_3DSTATE_WM_DISPATCH_START_GRF_0_SHIFT)); /* DW4 */
- OUT_BATCH(batch, ((i965->intel.device_info->max_wm_threads - 1) << GEN6_3DSTATE_WM_MAX_THREADS_SHIFT) |
- GEN6_3DSTATE_WM_DISPATCH_ENABLE |
- GEN6_3DSTATE_WM_16_DISPATCH_ENABLE);
- OUT_BATCH(batch, (1 << GEN6_3DSTATE_WM_NUM_SF_OUTPUTS_SHIFT) |
- GEN6_3DSTATE_WM_PERSPECTIVE_PIXEL_BARYCENTRIC);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
-}
-
-static void
-gen6_emit_vertex_element_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- /* Set up our vertex elements, sourced from the single vertex buffer. */
- OUT_BATCH(batch, CMD_VERTEX_ELEMENTS | (5 - 2));
- /* offset 0: X,Y -> {X, Y, 1.0, 1.0} */
- OUT_BATCH(batch, (0 << GEN6_VE0_VERTEX_BUFFER_INDEX_SHIFT) |
- GEN6_VE0_VALID |
- (I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
- (0 << VE0_OFFSET_SHIFT));
- OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
- (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT));
- /* offset 8: S0, T0 -> {S0, T0, 1.0, 1.0} */
- OUT_BATCH(batch, (0 << GEN6_VE0_VERTEX_BUFFER_INDEX_SHIFT) |
- GEN6_VE0_VALID |
- (I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
- (8 << VE0_OFFSET_SHIFT));
- OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
- (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT));
-}
-
-static void
-gen6_emit_vertices(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- BEGIN_BATCH(batch, 11);
- OUT_BATCH(batch, CMD_VERTEX_BUFFERS | 3);
- OUT_BATCH(batch,
- (0 << GEN6_VB0_BUFFER_INDEX_SHIFT) |
- GEN6_VB0_VERTEXDATA |
- ((4 * 4) << VB0_BUFFER_PITCH_SHIFT));
- OUT_RELOC(batch, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, 0);
- OUT_RELOC(batch, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, 12 * 4);
- OUT_BATCH(batch, 0);
-
- OUT_BATCH(batch,
- CMD_3DPRIMITIVE |
- _3DPRIMITIVE_VERTEX_SEQUENTIAL |
- (_3DPRIM_RECTLIST << _3DPRIMITIVE_TOPOLOGY_SHIFT) |
- (0 << 9) |
- 4);
- OUT_BATCH(batch, 3); /* vertex count per instance */
- OUT_BATCH(batch, 0); /* start vertex offset */
- OUT_BATCH(batch, 1); /* single instance */
- OUT_BATCH(batch, 0); /* start instance location */
- OUT_BATCH(batch, 0); /* index buffer offset, ignored */
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen6_render_emit_states(VADriverContextP ctx, int kernel)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- gen6_emit_invarient_states(ctx);
- gen6_emit_state_base_address(ctx);
- gen6_emit_viewport_state_pointers(ctx);
- gen6_emit_urb(ctx);
- gen6_emit_cc_state_pointers(ctx);
- gen6_emit_sampler_state_pointers(ctx);
- gen6_emit_vs_state(ctx);
- gen6_emit_gs_state(ctx);
- gen6_emit_clip_state(ctx);
- gen6_emit_sf_state(ctx);
- gen6_emit_wm_state(ctx, kernel);
- gen6_emit_binding_table(ctx);
- gen6_emit_depth_buffer_state(ctx);
- gen6_emit_drawing_rectangle(ctx);
- gen6_emit_vertex_element_state(ctx);
- gen6_emit_vertices(ctx);
- intel_batchbuffer_end_atomic(batch);
-}
-
-static void
-gen6_render_put_surface(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect,
- unsigned int flags
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- gen6_render_initialize(ctx);
- gen6_render_setup_states(ctx, obj_surface, src_rect, dst_rect, flags);
- i965_clear_dest_region(ctx);
- gen6_render_emit_states(ctx, PS_KERNEL);
- intel_batchbuffer_flush(batch);
-}
-
-static void
-gen6_subpicture_render_blend_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct gen6_blend_state *blend_state;
-
- dri_bo_unmap(render_state->cc.state);
- dri_bo_map(render_state->cc.blend, 1);
- assert(render_state->cc.blend->virtual);
- blend_state = render_state->cc.blend->virtual;
- memset(blend_state, 0, sizeof(*blend_state));
- blend_state->blend0.dest_blend_factor = I965_BLENDFACTOR_INV_SRC_ALPHA;
- blend_state->blend0.source_blend_factor = I965_BLENDFACTOR_SRC_ALPHA;
- blend_state->blend0.blend_func = I965_BLENDFUNCTION_ADD;
- blend_state->blend0.blend_enable = 1;
- blend_state->blend1.post_blend_clamp_enable = 1;
- blend_state->blend1.pre_blend_clamp_enable = 1;
- blend_state->blend1.clamp_range = 0; /* clamp range [0, 1] */
- dri_bo_unmap(render_state->cc.blend);
-}
-
-static void
-gen6_subpicture_render_setup_states(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect
-)
-{
- i965_render_dest_surface_state(ctx, 0);
- i965_subpic_render_src_surfaces_state(ctx, obj_surface);
- i965_render_sampler(ctx);
- i965_render_cc_viewport(ctx);
- gen6_render_color_calc_state(ctx);
- gen6_subpicture_render_blend_state(ctx);
- gen6_render_depth_stencil_state(ctx);
- i965_subpic_render_upload_constants(ctx, obj_surface);
- i965_subpic_render_upload_vertex(ctx, obj_surface, dst_rect);
-}
-
-static void
-gen6_render_put_subpicture(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- unsigned int index = obj_surface->subpic_render_idx;
- struct object_subpic *obj_subpic = obj_surface->obj_subpic[index];
-
- assert(obj_subpic);
- gen6_render_initialize(ctx);
- gen6_subpicture_render_setup_states(ctx, obj_surface, src_rect, dst_rect);
- gen6_render_emit_states(ctx, PS_SUBPIC_KERNEL);
- i965_render_upload_image_palette(ctx, obj_subpic->obj_image, 0xff);
- intel_batchbuffer_flush(batch);
-}
-
-/*
- * for GEN7
- */
-static void
-gen7_render_initialize(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- dri_bo *bo;
-
- /* VERTEX BUFFER */
- dri_bo_unreference(render_state->vb.vertex_buffer);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "vertex buffer",
- 4096,
- 4096);
- assert(bo);
- render_state->vb.vertex_buffer = bo;
-
- /* WM */
- dri_bo_unreference(render_state->wm.surface_state_binding_table_bo);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "surface state & binding table",
- (SURFACE_STATE_PADDED_SIZE + sizeof(unsigned int)) * MAX_RENDER_SURFACES,
- 4096);
- assert(bo);
- render_state->wm.surface_state_binding_table_bo = bo;
-
- dri_bo_unreference(render_state->wm.sampler);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "sampler state",
- MAX_SAMPLERS * sizeof(struct gen7_sampler_state),
- 4096);
- assert(bo);
- render_state->wm.sampler = bo;
- render_state->wm.sampler_count = 0;
-
- /* COLOR CALCULATOR */
- dri_bo_unreference(render_state->cc.state);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "color calc state",
- sizeof(struct gen6_color_calc_state),
- 4096);
- assert(bo);
- render_state->cc.state = bo;
-
- /* CC VIEWPORT */
- dri_bo_unreference(render_state->cc.viewport);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "cc viewport",
- sizeof(struct i965_cc_viewport),
- 4096);
- assert(bo);
- render_state->cc.viewport = bo;
-
- /* BLEND STATE */
- dri_bo_unreference(render_state->cc.blend);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "blend state",
- sizeof(struct gen6_blend_state),
- 4096);
- assert(bo);
- render_state->cc.blend = bo;
-
- /* DEPTH & STENCIL STATE */
- dri_bo_unreference(render_state->cc.depth_stencil);
- bo = dri_bo_alloc(i965->intel.bufmgr,
- "depth & stencil state",
- sizeof(struct gen6_depth_stencil_state),
- 4096);
- assert(bo);
- render_state->cc.depth_stencil = bo;
-}
-
-/*
- * for GEN8
- */
-#define ALIGNMENT 64
-
-static void
-gen7_render_color_calc_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct gen6_color_calc_state *color_calc_state;
-
- dri_bo_map(render_state->cc.state, 1);
- assert(render_state->cc.state->virtual);
- color_calc_state = render_state->cc.state->virtual;
- memset(color_calc_state, 0, sizeof(*color_calc_state));
- color_calc_state->constant_r = 1.0;
- color_calc_state->constant_g = 0.0;
- color_calc_state->constant_b = 1.0;
- color_calc_state->constant_a = 1.0;
- dri_bo_unmap(render_state->cc.state);
-}
-
-static void
-gen7_render_blend_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct gen6_blend_state *blend_state;
-
- dri_bo_map(render_state->cc.blend, 1);
- assert(render_state->cc.blend->virtual);
- blend_state = render_state->cc.blend->virtual;
- memset(blend_state, 0, sizeof(*blend_state));
- blend_state->blend1.logic_op_enable = 1;
- blend_state->blend1.logic_op_func = 0xc;
- blend_state->blend1.pre_blend_clamp_enable = 1;
- dri_bo_unmap(render_state->cc.blend);
-}
-
-static void
-gen7_render_depth_stencil_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct gen6_depth_stencil_state *depth_stencil_state;
-
- dri_bo_map(render_state->cc.depth_stencil, 1);
- assert(render_state->cc.depth_stencil->virtual);
- depth_stencil_state = render_state->cc.depth_stencil->virtual;
- memset(depth_stencil_state, 0, sizeof(*depth_stencil_state));
- dri_bo_unmap(render_state->cc.depth_stencil);
-}
-
-static void
-gen7_render_sampler(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct gen7_sampler_state *sampler_state;
- int i;
-
- assert(render_state->wm.sampler_count > 0);
- assert(render_state->wm.sampler_count <= MAX_SAMPLERS);
-
- dri_bo_map(render_state->wm.sampler, 1);
- assert(render_state->wm.sampler->virtual);
- sampler_state = render_state->wm.sampler->virtual;
- for (i = 0; i < render_state->wm.sampler_count; i++) {
- memset(sampler_state, 0, sizeof(*sampler_state));
- 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;
- sampler_state++;
- }
-
- dri_bo_unmap(render_state->wm.sampler);
-}
-
-
-static void
-gen7_render_setup_states(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect,
- unsigned int flags
-)
-{
- i965_render_dest_surface_state(ctx, 0);
- i965_render_src_surfaces_state(ctx, obj_surface, flags);
- gen7_render_sampler(ctx);
- i965_render_cc_viewport(ctx);
- gen7_render_color_calc_state(ctx);
- gen7_render_blend_state(ctx);
- gen7_render_depth_stencil_state(ctx);
- i965_render_upload_constants(ctx, obj_surface, flags);
- i965_render_upload_vertex(ctx, obj_surface, src_rect, dst_rect);
-}
-
-
-static void
-gen7_emit_invarient_states(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- BEGIN_BATCH(batch, 1);
- OUT_BATCH(batch, CMD_PIPELINE_SELECT | PIPELINE_SELECT_3D);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 4);
- OUT_BATCH(batch, GEN6_3DSTATE_MULTISAMPLE | (4 - 2));
- OUT_BATCH(batch, GEN6_3DSTATE_MULTISAMPLE_PIXEL_LOCATION_CENTER |
- GEN6_3DSTATE_MULTISAMPLE_NUMSAMPLES_1); /* 1 sample/pixel */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN6_3DSTATE_SAMPLE_MASK | (2 - 2));
- OUT_BATCH(batch, 1);
- ADVANCE_BATCH(batch);
-
- /* Set system instruction pointer */
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, CMD_STATE_SIP | 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen7_emit_state_base_address(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- OUT_BATCH(batch, CMD_STATE_BASE_ADDRESS | (10 - 2));
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* General state base address */
- OUT_RELOC(batch, render_state->wm.surface_state_binding_table_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY); /* Surface state base address */
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Dynamic state base address */
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Indirect object base address */
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Instruction base address */
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* General state upper bound */
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Dynamic state upper bound */
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Indirect object upper bound */
- OUT_BATCH(batch, BASE_ADDRESS_MODIFY); /* Instruction access upper bound */
-}
-
-static void
-gen7_emit_viewport_state_pointers(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_CC | (2 - 2));
- OUT_RELOC(batch,
- render_state->cc.viewport,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CL | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-/*
- * URB layout on GEN7
- * ----------------------------------------
- * | PS Push Constants (8KB) | VS entries |
- * ----------------------------------------
- */
-static void
-gen7_emit_urb(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- unsigned int num_urb_entries = 32;
-
- if (IS_HASWELL(i965->intel.device_info))
- num_urb_entries = 64;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_PUSH_CONSTANT_ALLOC_PS | (2 - 2));
- OUT_BATCH(batch, 8); /* in 1KBs */
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_URB_VS | (2 - 2));
- OUT_BATCH(batch,
- (num_urb_entries << GEN7_URB_ENTRY_NUMBER_SHIFT) |
- (2 - 1) << GEN7_URB_ENTRY_SIZE_SHIFT |
- (1 << GEN7_URB_STARTING_ADDRESS_SHIFT));
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_URB_GS | (2 - 2));
- OUT_BATCH(batch,
- (0 << GEN7_URB_ENTRY_SIZE_SHIFT) |
- (1 << GEN7_URB_STARTING_ADDRESS_SHIFT));
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_URB_HS | (2 - 2));
- OUT_BATCH(batch,
- (0 << GEN7_URB_ENTRY_SIZE_SHIFT) |
- (2 << GEN7_URB_STARTING_ADDRESS_SHIFT));
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_URB_DS | (2 - 2));
- OUT_BATCH(batch,
- (0 << GEN7_URB_ENTRY_SIZE_SHIFT) |
- (2 << GEN7_URB_STARTING_ADDRESS_SHIFT));
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen7_emit_cc_state_pointers(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN6_3DSTATE_CC_STATE_POINTERS | (2 - 2));
- OUT_RELOC(batch,
- render_state->cc.state,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 1);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_BLEND_STATE_POINTERS | (2 - 2));
- OUT_RELOC(batch,
- render_state->cc.blend,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 1);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_DEPTH_STENCIL_STATE_POINTERS | (2 - 2));
- OUT_RELOC(batch,
- render_state->cc.depth_stencil,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 1);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen7_emit_sampler_state_pointers(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_SAMPLER_STATE_POINTERS_PS | (2 - 2));
- OUT_RELOC(batch,
- render_state->wm.sampler,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen7_emit_binding_table(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_BINDING_TABLE_POINTERS_PS | (2 - 2));
- OUT_BATCH(batch, BINDING_TABLE_OFFSET);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen7_emit_depth_buffer_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- BEGIN_BATCH(batch, 7);
- OUT_BATCH(batch, GEN7_3DSTATE_DEPTH_BUFFER | (7 - 2));
- OUT_BATCH(batch,
- (I965_DEPTHFORMAT_D32_FLOAT << 18) |
- (I965_SURFACE_NULL << 29));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch, GEN7_3DSTATE_CLEAR_PARAMS | (3 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen7_emit_drawing_rectangle(VADriverContextP ctx)
-{
- i965_render_drawing_rectangle(ctx);
-}
-
-static void
-gen7_emit_vs_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- /* disable VS constant buffer */
- OUT_BATCH(batch, GEN6_3DSTATE_CONSTANT_VS | (7 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
-
- OUT_BATCH(batch, GEN6_3DSTATE_VS | (6 - 2));
- OUT_BATCH(batch, 0); /* without VS kernel */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0); /* pass-through */
-}
-
-static void
-gen7_emit_bypass_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- /* bypass GS */
- BEGIN_BATCH(batch, 7);
- OUT_BATCH(batch, GEN6_3DSTATE_CONSTANT_GS | (7 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 7);
- OUT_BATCH(batch, GEN6_3DSTATE_GS | (7 - 2));
- OUT_BATCH(batch, 0); /* without GS kernel */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0); /* pass-through */
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_BINDING_TABLE_POINTERS_GS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- /* disable HS */
- BEGIN_BATCH(batch, 7);
- OUT_BATCH(batch, GEN7_3DSTATE_CONSTANT_HS | (7 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 7);
- OUT_BATCH(batch, GEN7_3DSTATE_HS | (7 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_BINDING_TABLE_POINTERS_HS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- /* Disable TE */
- BEGIN_BATCH(batch, 4);
- OUT_BATCH(batch, GEN7_3DSTATE_TE | (4 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- /* Disable DS */
- BEGIN_BATCH(batch, 7);
- OUT_BATCH(batch, GEN7_3DSTATE_CONSTANT_DS | (7 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 6);
- OUT_BATCH(batch, GEN7_3DSTATE_DS | (6 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 2);
- OUT_BATCH(batch, GEN7_3DSTATE_BINDING_TABLE_POINTERS_DS | (2 - 2));
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- /* Disable STREAMOUT */
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch, GEN7_3DSTATE_STREAMOUT | (3 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen7_emit_clip_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- OUT_BATCH(batch, GEN6_3DSTATE_CLIP | (4 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0); /* pass-through */
- OUT_BATCH(batch, 0);
-}
-
-static void
-gen7_emit_sf_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- BEGIN_BATCH(batch, 14);
- OUT_BATCH(batch, GEN7_3DSTATE_SBE | (14 - 2));
- OUT_BATCH(batch,
- (1 << GEN7_SBE_NUM_OUTPUTS_SHIFT) |
- (1 << GEN7_SBE_URB_ENTRY_READ_LENGTH_SHIFT) |
- (0 << GEN7_SBE_URB_ENTRY_READ_OFFSET_SHIFT));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0); /* DW4 */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0); /* DW9 */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 7);
- OUT_BATCH(batch, GEN6_3DSTATE_SF | (7 - 2));
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, GEN6_3DSTATE_SF_CULL_NONE);
- OUT_BATCH(batch, 2 << GEN6_3DSTATE_SF_TRIFAN_PROVOKE_SHIFT);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen7_emit_wm_state(VADriverContextP ctx, int kernel)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
- unsigned int max_threads_shift = GEN7_PS_MAX_THREADS_SHIFT_IVB;
- unsigned int num_samples = 0;
-
- if (IS_HASWELL(i965->intel.device_info)) {
- max_threads_shift = GEN7_PS_MAX_THREADS_SHIFT_HSW;
- num_samples = 1 << GEN7_PS_SAMPLE_MASK_SHIFT_HSW;
- }
-
- BEGIN_BATCH(batch, 3);
- OUT_BATCH(batch, GEN6_3DSTATE_WM | (3 - 2));
- OUT_BATCH(batch,
- GEN7_WM_DISPATCH_ENABLE |
- GEN7_WM_PERSPECTIVE_PIXEL_BARYCENTRIC);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 7);
- OUT_BATCH(batch, GEN6_3DSTATE_CONSTANT_PS | (7 - 2));
- OUT_BATCH(batch, URB_CS_ENTRY_SIZE);
- OUT_BATCH(batch, 0);
- OUT_RELOC(batch,
- render_state->curbe.bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 8);
- OUT_BATCH(batch, GEN7_3DSTATE_PS | (8 - 2));
- OUT_RELOC(batch,
- render_state->render_kernels[kernel].bo,
- I915_GEM_DOMAIN_INSTRUCTION, 0,
- 0);
- OUT_BATCH(batch,
- (1 << GEN7_PS_SAMPLER_COUNT_SHIFT) |
- (5 << GEN7_PS_BINDING_TABLE_ENTRY_COUNT_SHIFT));
- OUT_BATCH(batch, 0); /* scratch space base offset */
- OUT_BATCH(batch,
- ((i965->intel.device_info->max_wm_threads - 1) << max_threads_shift) | num_samples |
- GEN7_PS_PUSH_CONSTANT_ENABLE |
- GEN7_PS_ATTRIBUTE_ENABLE |
- GEN7_PS_16_DISPATCH_ENABLE);
- OUT_BATCH(batch,
- (6 << GEN7_PS_DISPATCH_START_GRF_SHIFT_0));
- OUT_BATCH(batch, 0); /* kernel 1 pointer */
- OUT_BATCH(batch, 0); /* kernel 2 pointer */
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen7_emit_vertex_element_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- /* Set up our vertex elements, sourced from the single vertex buffer. */
- OUT_BATCH(batch, CMD_VERTEX_ELEMENTS | (5 - 2));
- /* offset 0: X,Y -> {X, Y, 1.0, 1.0} */
- OUT_BATCH(batch, (0 << GEN6_VE0_VERTEX_BUFFER_INDEX_SHIFT) |
- GEN6_VE0_VALID |
- (I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
- (0 << VE0_OFFSET_SHIFT));
- OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
- (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT));
- /* offset 8: S0, T0 -> {S0, T0, 1.0, 1.0} */
- OUT_BATCH(batch, (0 << GEN6_VE0_VERTEX_BUFFER_INDEX_SHIFT) |
- GEN6_VE0_VALID |
- (I965_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) |
- (8 << VE0_OFFSET_SHIFT));
- OUT_BATCH(batch, (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) |
- (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
- (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT));
-}
-
-static void
-gen7_emit_vertices(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- struct i965_render_state *render_state = &i965->render_state;
-
- BEGIN_BATCH(batch, 5);
- OUT_BATCH(batch, CMD_VERTEX_BUFFERS | (5 - 2));
- OUT_BATCH(batch,
- (0 << GEN6_VB0_BUFFER_INDEX_SHIFT) |
- GEN6_VB0_VERTEXDATA |
- GEN7_VB0_ADDRESS_MODIFYENABLE |
- ((4 * 4) << VB0_BUFFER_PITCH_SHIFT));
- OUT_RELOC(batch, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, 0);
- OUT_RELOC(batch, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, 12 * 4);
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-
- BEGIN_BATCH(batch, 7);
- OUT_BATCH(batch, CMD_3DPRIMITIVE | (7 - 2));
- OUT_BATCH(batch,
- _3DPRIM_RECTLIST |
- GEN7_3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL);
- OUT_BATCH(batch, 3); /* vertex count per instance */
- OUT_BATCH(batch, 0); /* start vertex offset */
- OUT_BATCH(batch, 1); /* single instance */
- OUT_BATCH(batch, 0); /* start instance location */
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
-}
-
-static void
-gen7_render_emit_states(VADriverContextP ctx, int kernel)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- intel_batchbuffer_start_atomic(batch, 0x1000);
- intel_batchbuffer_emit_mi_flush(batch);
- gen7_emit_invarient_states(ctx);
- gen7_emit_state_base_address(ctx);
- gen7_emit_viewport_state_pointers(ctx);
- gen7_emit_urb(ctx);
- gen7_emit_cc_state_pointers(ctx);
- gen7_emit_sampler_state_pointers(ctx);
- gen7_emit_bypass_state(ctx);
- gen7_emit_vs_state(ctx);
- gen7_emit_clip_state(ctx);
- gen7_emit_sf_state(ctx);
- gen7_emit_wm_state(ctx, kernel);
- gen7_emit_binding_table(ctx);
- gen7_emit_depth_buffer_state(ctx);
- gen7_emit_drawing_rectangle(ctx);
- gen7_emit_vertex_element_state(ctx);
- gen7_emit_vertices(ctx);
- intel_batchbuffer_end_atomic(batch);
-}
-
-
-static void
-gen7_render_put_surface(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect,
- unsigned int flags
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
-
- gen7_render_initialize(ctx);
- gen7_render_setup_states(ctx, obj_surface, src_rect, dst_rect, flags);
- i965_clear_dest_region(ctx);
- gen7_render_emit_states(ctx, PS_KERNEL);
- intel_batchbuffer_flush(batch);
-}
-
-
-static void
-gen7_subpicture_render_blend_state(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct gen6_blend_state *blend_state;
-
- dri_bo_unmap(render_state->cc.state);
- dri_bo_map(render_state->cc.blend, 1);
- assert(render_state->cc.blend->virtual);
- blend_state = render_state->cc.blend->virtual;
- memset(blend_state, 0, sizeof(*blend_state));
- blend_state->blend0.dest_blend_factor = I965_BLENDFACTOR_INV_SRC_ALPHA;
- blend_state->blend0.source_blend_factor = I965_BLENDFACTOR_SRC_ALPHA;
- blend_state->blend0.blend_func = I965_BLENDFUNCTION_ADD;
- blend_state->blend0.blend_enable = 1;
- blend_state->blend1.post_blend_clamp_enable = 1;
- blend_state->blend1.pre_blend_clamp_enable = 1;
- blend_state->blend1.clamp_range = 0; /* clamp range [0, 1] */
- dri_bo_unmap(render_state->cc.blend);
-}
-
-static void
-gen7_subpicture_render_setup_states(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect
-)
-{
- i965_render_dest_surface_state(ctx, 0);
- i965_subpic_render_src_surfaces_state(ctx, obj_surface);
- i965_render_sampler(ctx);
- i965_render_cc_viewport(ctx);
- gen7_render_color_calc_state(ctx);
- gen7_subpicture_render_blend_state(ctx);
- gen7_render_depth_stencil_state(ctx);
- i965_subpic_render_upload_constants(ctx, obj_surface);
- i965_subpic_render_upload_vertex(ctx, obj_surface, dst_rect);
-}
-
-static void
-gen7_render_put_subpicture(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct intel_batchbuffer *batch = i965->batch;
- unsigned int index = obj_surface->subpic_render_idx;
- struct object_subpic *obj_subpic = obj_surface->obj_subpic[index];
-
- assert(obj_subpic);
- gen7_render_initialize(ctx);
- gen7_subpicture_render_setup_states(ctx, obj_surface, src_rect, dst_rect);
- gen7_render_emit_states(ctx, PS_SUBPIC_KERNEL);
- i965_render_upload_image_palette(ctx, obj_subpic->obj_image, 0xff);
- intel_batchbuffer_flush(batch);
-}
-
-
-void
-intel_render_put_surface(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect,
- unsigned int flags
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- int has_done_scaling = 0;
- VARectangle calibrated_rect;
- VASurfaceID out_surface_id = i965_post_processing(ctx,
- obj_surface,
- src_rect,
- dst_rect,
- flags,
- &has_done_scaling,
- &calibrated_rect);
-
- assert((!has_done_scaling) || (out_surface_id != VA_INVALID_ID));
-
- if (out_surface_id != VA_INVALID_ID) {
- struct object_surface *new_obj_surface = SURFACE(out_surface_id);
-
- if (new_obj_surface && new_obj_surface->bo)
- obj_surface = new_obj_surface;
-
- if (has_done_scaling)
- src_rect = &calibrated_rect;
- }
-
- render_state->render_put_surface(ctx, obj_surface, src_rect, dst_rect, flags);
-
- if (out_surface_id != VA_INVALID_ID)
- i965_DestroySurfaces(ctx, &out_surface_id, 1);
-}
-
-void
-intel_render_put_subpicture(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect
-)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
-
- render_state->render_put_subpicture(ctx, obj_surface, src_rect, dst_rect);
-}
-
-static void
-genx_render_terminate(VADriverContextP ctx)
-{
- int i;
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
-
- dri_bo_unreference(render_state->curbe.bo);
- render_state->curbe.bo = NULL;
-
- for (i = 0; i < NUM_RENDER_KERNEL; i++) {
- struct i965_kernel *kernel = &render_state->render_kernels[i];
-
- dri_bo_unreference(kernel->bo);
- kernel->bo = NULL;
- }
-
- dri_bo_unreference(render_state->vb.vertex_buffer);
- render_state->vb.vertex_buffer = NULL;
- dri_bo_unreference(render_state->vs.state);
- render_state->vs.state = NULL;
- dri_bo_unreference(render_state->sf.state);
- render_state->sf.state = NULL;
- dri_bo_unreference(render_state->wm.sampler);
- render_state->wm.sampler = NULL;
- dri_bo_unreference(render_state->wm.state);
- render_state->wm.state = NULL;
- dri_bo_unreference(render_state->wm.surface_state_binding_table_bo);
- dri_bo_unreference(render_state->cc.viewport);
- render_state->cc.viewport = NULL;
- dri_bo_unreference(render_state->cc.state);
- render_state->cc.state = NULL;
- dri_bo_unreference(render_state->cc.blend);
- render_state->cc.blend = NULL;
- dri_bo_unreference(render_state->cc.depth_stencil);
- render_state->cc.depth_stencil = NULL;
-
- if (render_state->draw_region) {
- dri_bo_unreference(render_state->draw_region->bo);
- free(render_state->draw_region);
- render_state->draw_region = NULL;
- }
-}
-
-bool
-genx_render_init(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- int i;
-
- /* kernel */
- assert(NUM_RENDER_KERNEL == (sizeof(render_kernels_gen5) /
- sizeof(render_kernels_gen5[0])));
- assert(NUM_RENDER_KERNEL == (sizeof(render_kernels_gen6) /
- sizeof(render_kernels_gen6[0])));
-
- if (IS_GEN7(i965->intel.device_info)) {
- memcpy(render_state->render_kernels,
- (IS_HASWELL(i965->intel.device_info) ? render_kernels_gen7_haswell : render_kernels_gen7),
- sizeof(render_state->render_kernels));
- render_state->render_put_surface = gen7_render_put_surface;
- render_state->render_put_subpicture = gen7_render_put_subpicture;
- } else if (IS_GEN6(i965->intel.device_info)) {
- memcpy(render_state->render_kernels, render_kernels_gen6, sizeof(render_state->render_kernels));
- render_state->render_put_surface = gen6_render_put_surface;
- render_state->render_put_subpicture = gen6_render_put_subpicture;
- } else if (IS_IRONLAKE(i965->intel.device_info)) {
- memcpy(render_state->render_kernels, render_kernels_gen5, sizeof(render_state->render_kernels));
- render_state->render_put_surface = i965_render_put_surface;
- render_state->render_put_subpicture = i965_render_put_subpicture;
- } else {
- memcpy(render_state->render_kernels, render_kernels_gen4, sizeof(render_state->render_kernels));
- render_state->render_put_surface = i965_render_put_surface;
- render_state->render_put_subpicture = i965_render_put_subpicture;
- }
-
- render_state->render_terminate = genx_render_terminate;
-
- for (i = 0; i < NUM_RENDER_KERNEL; i++) {
- struct i965_kernel *kernel = &render_state->render_kernels[i];
-
- if (!kernel->size)
- continue;
-
- kernel->bo = dri_bo_alloc(i965->intel.bufmgr,
- kernel->name,
- kernel->size, 0x1000);
- assert(kernel->bo);
- dri_bo_subdata(kernel->bo, 0, kernel->size, kernel->bin);
- }
-
- /* constant buffer */
- render_state->curbe.bo = dri_bo_alloc(i965->intel.bufmgr,
- "constant buffer",
- 4096, 64);
- assert(render_state->curbe.bo);
-
- return true;
-}
-
-bool
-i965_render_init(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
-
- return i965->codec_info->render_init(ctx);
-}
-
-void
-i965_render_terminate(VADriverContextP ctx)
-{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
-
- render_state->render_terminate(ctx);
-}
diff --git a/src/i965_render.h b/src/i965_render.h
deleted file mode 100644
index 227a15b..0000000
--- a/src/i965_render.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright © 2006 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-
-#ifndef _I965_RENDER_H_
-#define _I965_RENDER_H_
-
-#define MAX_SAMPLERS 16
-#define MAX_RENDER_SURFACES (MAX_SAMPLERS + 1)
-
-#define NUM_RENDER_KERNEL 3
-
-#define VA_SRC_COLOR_MASK 0x000000f0
-
-
-struct i965_kernel;
-
-struct i965_render_state
-{
- struct {
- dri_bo *vertex_buffer;
- } vb;
-
- struct {
- dri_bo *state;
- } vs;
-
- struct {
- dri_bo *state;
- } sf;
-
- struct {
- int sampler_count;
- dri_bo *sampler;
- dri_bo *state;
- dri_bo *surface_state_binding_table_bo;
- } wm;
-
- struct {
- dri_bo *state;
- dri_bo *viewport;
- dri_bo *blend;
- dri_bo *depth_stencil;
- } cc;
-
- struct {
- dri_bo *bo;
- } curbe;
-
- struct intel_region *draw_region;
-
- int pp_flag; /* 0: disable, 1: enable */
-
- struct i965_kernel render_kernels[3];
-
- struct {
- dri_bo *bo;
- int bo_size;
- unsigned int end_offset;
- } instruction_state;
-
- struct {
- dri_bo *bo;
- } indirect_state;
-
- struct {
- dri_bo *bo;
- int bo_size;
- unsigned int end_offset;
- } dynamic_state;
-
- unsigned int curbe_offset;
- int curbe_size;
-
- unsigned int sampler_offset;
- int sampler_size;
-
- unsigned int cc_viewport_offset;
- int cc_viewport_size;
-
- unsigned int cc_state_offset;
- int cc_state_size;
-
- unsigned int blend_state_offset;
- int blend_state_size;
-
- unsigned int sf_clip_offset;
- int sf_clip_size;
-
- unsigned int scissor_offset;
- int scissor_size;
-
- void (*render_put_surface)(VADriverContextP ctx, struct object_surface *,
- const VARectangle *src_rec,
- const VARectangle *dst_rect,
- unsigned int flags);
- void (*render_put_subpicture)(VADriverContextP ctx, struct object_surface *,
- const VARectangle *src_rec,
- const VARectangle *dst_rect);
- void (*render_terminate)(VADriverContextP ctx);
-};
-
-bool i965_render_init(VADriverContextP ctx);
-void i965_render_terminate(VADriverContextP ctx);
-
-void
-intel_render_put_surface(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect,
- unsigned int flags
-);
-
-void
-intel_render_put_subpicture(
- VADriverContextP ctx,
- struct object_surface *obj_surface,
- const VARectangle *src_rect,
- const VARectangle *dst_rect
-);
-
-struct gen7_surface_state;
-
-void
-gen7_render_set_surface_scs(struct gen7_surface_state *ss);
-
-struct gen8_surface_state;
-void
-gen8_render_set_surface_scs(struct gen8_surface_state *ss);
-
-extern bool gen8_render_init(VADriverContextP ctx);
-
-extern bool gen9_render_init(VADriverContextP ctx);
-
-#endif /* _I965_RENDER_H_ */
diff --git a/src/i965_structs.h b/src/i965_structs.h
deleted file mode 100644
index a8c9b95..0000000
--- a/src/i965_structs.h
+++ /dev/null
@@ -1,2369 +0,0 @@
-#ifndef _I965_STRUCTS_H_
-#define _I965_STRUCTS_H_
-
-struct i965_vfe_state
-{
- struct {
- unsigned int per_thread_scratch_space:4;
- unsigned int pad3:3;
- unsigned int extend_vfe_state_present:1;
- unsigned int pad2:2;
- unsigned int scratch_base:22;
- } vfe0;
-
- struct {
- unsigned int debug_counter_control:2;
- unsigned int children_present:1;
- unsigned int vfe_mode:4;
- unsigned int pad2:2;
- unsigned int num_urb_entries:7;
- unsigned int urb_entry_alloc_size:9;
- unsigned int max_threads:7;
- } vfe1;
-
- struct {
- unsigned int pad4:4;
- unsigned int interface_descriptor_base:28;
- } vfe2;
-};
-
-struct i965_vfe_state_ex
-{
- struct {
- unsigned int pad:8;
- unsigned int obj_id:24;
- } vfex0;
-
- union {
- struct {
- unsigned int residual_grf_offset:5;
- unsigned int pad0:3;
- unsigned int weight_grf_offset:5;
- unsigned int pad1:3;
- unsigned int residual_data_offset:8;
- unsigned int sub_field_present_flag:2;
- unsigned int residual_data_fix_offset_flag:1;
- unsigned int pad2:5;
- } avc;
-
- unsigned int vc1;
- } vfex1;
-
- struct {
- unsigned int remap_index_0:4;
- unsigned int remap_index_1:4;
- unsigned int remap_index_2:4;
- unsigned int remap_index_3:4;
- unsigned int remap_index_4:4;
- unsigned int remap_index_5:4;
- unsigned int remap_index_6:4;
- unsigned int remap_index_7:4;
- }remap_table0;
-
- struct {
- unsigned int remap_index_8:4;
- unsigned int remap_index_9:4;
- unsigned int remap_index_10:4;
- unsigned int remap_index_11:4;
- unsigned int remap_index_12:4;
- unsigned int remap_index_13:4;
- unsigned int remap_index_14:4;
- unsigned int remap_index_15:4;
- } remap_table1;
-
- struct {
- unsigned int mask:8;
- unsigned int pad:22;
- unsigned int type:1;
- unsigned int enable:1;
- } scoreboard0;
-
- struct {
- int delta_x0:4;
- int delta_y0:4;
- int delta_x1:4;
- int delta_y1:4;
- int delta_x2:4;
- int delta_y2:4;
- int delta_x3:4;
- int delta_y3:4;
- } scoreboard1;
-
- struct {
- int delta_x4:4;
- int delta_y4:4;
- int delta_x5:4;
- int delta_y5:4;
- int delta_x6:4;
- int delta_y6:4;
- int delta_x7:4;
- int delta_y7:4;
- } scoreboard2;
-
- unsigned int pad;
-};
-
-struct i965_vld_state
-{
- struct {
- unsigned int pad6:6;
- unsigned int scan_order:1;
- unsigned int intra_vlc_format:1;
- unsigned int quantizer_scale_type:1;
- unsigned int concealment_motion_vector:1;
- unsigned int frame_predict_frame_dct:1;
- unsigned int top_field_first:1;
- unsigned int picture_structure:2;
- unsigned int intra_dc_precision:2;
- unsigned int f_code_0_0:4;
- unsigned int f_code_0_1:4;
- unsigned int f_code_1_0:4;
- unsigned int f_code_1_1:4;
- } vld0;
-
- struct {
- unsigned int pad2:9;
- unsigned int picture_coding_type:2;
- unsigned int pad:21;
- } vld1;
-
- struct {
- unsigned int index_0:4;
- unsigned int index_1:4;
- unsigned int index_2:4;
- unsigned int index_3:4;
- unsigned int index_4:4;
- unsigned int index_5:4;
- unsigned int index_6:4;
- unsigned int index_7:4;
- } desc_remap_table0;
-
- struct {
- unsigned int index_8:4;
- unsigned int index_9:4;
- unsigned int index_10:4;
- unsigned int index_11:4;
- unsigned int index_12:4;
- unsigned int index_13:4;
- unsigned int index_14:4;
- unsigned int index_15:4;
- } desc_remap_table1;
-};
-
-struct i965_interface_descriptor
-{
- struct {
- unsigned int grf_reg_blocks:4;
- unsigned int pad:2;
- unsigned int kernel_start_pointer:26;
- } desc0;
-
- struct {
- unsigned int pad:7;
- unsigned int software_exception:1;
- unsigned int pad2:3;
- unsigned int maskstack_exception:1;
- unsigned int pad3:1;
- unsigned int illegal_opcode_exception:1;
- unsigned int pad4:2;
- unsigned int floating_point_mode:1;
- unsigned int thread_priority:1;
- unsigned int single_program_flow:1;
- unsigned int pad5:1;
- unsigned int const_urb_entry_read_offset:6;
- unsigned int const_urb_entry_read_len:6;
- } desc1;
-
- struct {
- unsigned int pad:2;
- unsigned int sampler_count:3;
- unsigned int sampler_state_pointer:27;
- } desc2;
-
- struct {
- unsigned int binding_table_entry_count:5;
- unsigned int binding_table_pointer:27;
- } desc3;
-};
-
-struct i965_surface_state
-{
- struct {
- unsigned int cube_pos_z:1;
- unsigned int cube_neg_z:1;
- unsigned int cube_pos_y:1;
- unsigned int cube_neg_y:1;
- unsigned int cube_pos_x:1;
- unsigned int cube_neg_x:1;
- unsigned int pad:2;
- unsigned int render_cache_read_mode:1;
- unsigned int cube_map_corner_mode:1;
- unsigned int mipmap_layout_mode:1;
- unsigned int vert_line_stride_ofs:1;
- unsigned int vert_line_stride:1;
- unsigned int color_blend:1;
- unsigned int writedisable_blue:1;
- unsigned int writedisable_green:1;
- unsigned int writedisable_red:1;
- unsigned int writedisable_alpha:1;
- unsigned int surface_format:9;
- unsigned int data_return_format:1;
- unsigned int pad0:1;
- unsigned int surface_type:3;
- } ss0;
-
- struct {
- unsigned int base_addr;
- } ss1;
-
- struct {
- unsigned int render_target_rotation:2;
- unsigned int mip_count:4;
- unsigned int width:13;
- unsigned int height:13;
- } ss2;
-
- struct {
- unsigned int tile_walk:1;
- unsigned int tiled_surface:1;
- unsigned int pad:1;
- unsigned int pitch:18;
- unsigned int depth:11;
- } ss3;
-
- struct {
- unsigned int pad:19;
- unsigned int min_array_elt:9;
- unsigned int min_lod:4;
- } ss4;
-
- struct {
- unsigned int pad:20;
- unsigned int y_offset:4;
- unsigned int pad2:1;
- unsigned int x_offset:7;
- } ss5;
-};
-
-struct thread0
-{
- unsigned int pad0:1;
- unsigned int grf_reg_count:3;
- unsigned int pad1:2;
- unsigned int kernel_start_pointer:26;
-};
-
-struct thread1
-{
- unsigned int ext_halt_exception_enable:1;
- unsigned int sw_exception_enable:1;
- unsigned int mask_stack_exception_enable:1;
- unsigned int timeout_exception_enable:1;
- unsigned int illegal_op_exception_enable:1;
- unsigned int pad0:3;
- unsigned int depth_coef_urb_read_offset:6; /* WM only */
- unsigned int pad1:2;
- unsigned int floating_point_mode:1;
- unsigned int thread_priority:1;
- unsigned int binding_table_entry_count:8;
- unsigned int pad3:5;
- unsigned int single_program_flow:1;
-};
-
-struct thread2
-{
- unsigned int per_thread_scratch_space:4;
- unsigned int pad0:6;
- unsigned int scratch_space_base_pointer:22;
-};
-
-
-struct thread3
-{
- unsigned int dispatch_grf_start_reg:4;
- unsigned int urb_entry_read_offset:6;
- unsigned int pad0:1;
- unsigned int urb_entry_read_length:6;
- unsigned int pad1:1;
- unsigned int const_urb_entry_read_offset:6;
- unsigned int pad2:1;
- unsigned int const_urb_entry_read_length:6;
- unsigned int pad3:1;
-};
-
-struct i965_vs_unit_state
-{
- struct thread0 thread0;
- struct thread1 thread1;
- struct thread2 thread2;
- struct thread3 thread3;
-
- struct {
- unsigned int pad0:10;
- unsigned int stats_enable:1;
- unsigned int nr_urb_entries:7;
- unsigned int pad1:1;
- unsigned int urb_entry_allocation_size:5;
- unsigned int pad2:1;
- unsigned int max_threads:4;
- unsigned int pad3:3;
- } thread4;
-
- struct {
- unsigned int sampler_count:3;
- unsigned int pad0:2;
- unsigned int sampler_state_pointer:27;
- } vs5;
-
- struct {
- unsigned int vs_enable:1;
- unsigned int vert_cache_disable:1;
- unsigned int pad0:30;
- } vs6;
-};
-
-struct i965_gs_unit_state
-{
- struct thread0 thread0;
- struct thread1 thread1;
- struct thread2 thread2;
- struct thread3 thread3;
-
- struct {
- unsigned int pad0:10;
- unsigned int stats_enable:1;
- unsigned int nr_urb_entries:7;
- unsigned int pad1:1;
- unsigned int urb_entry_allocation_size:5;
- unsigned int pad2:1;
- unsigned int max_threads:1;
- unsigned int pad3:6;
- } thread4;
-
- struct {
- unsigned int sampler_count:3;
- unsigned int pad0:2;
- unsigned int sampler_state_pointer:27;
- } gs5;
-
-
- struct {
- unsigned int max_vp_index:4;
- unsigned int pad0:26;
- unsigned int reorder_enable:1;
- unsigned int pad1:1;
- } gs6;
-};
-
-struct i965_clip_unit_state
-{
- struct thread0 thread0;
- struct thread1 thread1;
- struct thread2 thread2;
- struct thread3 thread3;
-
- struct {
- unsigned int pad0:9;
- unsigned int gs_output_stats:1; /* not always */
- unsigned int stats_enable:1;
- unsigned int nr_urb_entries:7;
- unsigned int pad1:1;
- unsigned int urb_entry_allocation_size:5;
- unsigned int pad2:1;
- unsigned int max_threads:6; /* may be less */
- unsigned int pad3:1;
- } thread4;
-
- struct {
- unsigned int pad0:13;
- unsigned int clip_mode:3;
- unsigned int userclip_enable_flags:8;
- unsigned int userclip_must_clip:1;
- unsigned int pad1:1;
- unsigned int guard_band_enable:1;
- unsigned int viewport_z_clip_enable:1;
- unsigned int viewport_xy_clip_enable:1;
- unsigned int vertex_position_space:1;
- unsigned int api_mode:1;
- unsigned int pad2:1;
- } clip5;
-
- struct {
- unsigned int pad0:5;
- unsigned int clipper_viewport_state_ptr:27;
- } clip6;
-
-
- float viewport_xmin;
- float viewport_xmax;
- float viewport_ymin;
- float viewport_ymax;
-};
-
-struct i965_sf_unit_state
-{
- struct thread0 thread0;
- struct {
- unsigned int pad0:7;
- unsigned int sw_exception_enable:1;
- unsigned int pad1:3;
- unsigned int mask_stack_exception_enable:1;
- unsigned int pad2:1;
- unsigned int illegal_op_exception_enable:1;
- unsigned int pad3:2;
- unsigned int floating_point_mode:1;
- unsigned int thread_priority:1;
- unsigned int binding_table_entry_count:8;
- unsigned int pad4:5;
- unsigned int single_program_flow:1;
- } sf1;
-
- struct thread2 thread2;
- struct thread3 thread3;
-
- struct {
- unsigned int pad0:10;
- unsigned int stats_enable:1;
- unsigned int nr_urb_entries:7;
- unsigned int pad1:1;
- unsigned int urb_entry_allocation_size:5;
- unsigned int pad2:1;
- unsigned int max_threads:6;
- unsigned int pad3:1;
- } thread4;
-
- struct {
- unsigned int front_winding:1;
- unsigned int viewport_transform:1;
- unsigned int pad0:3;
- unsigned int sf_viewport_state_offset:27;
- } sf5;
-
- struct {
- unsigned int pad0:9;
- unsigned int dest_org_vbias:4;
- unsigned int dest_org_hbias:4;
- unsigned int scissor:1;
- unsigned int disable_2x2_trifilter:1;
- unsigned int disable_zero_pix_trifilter:1;
- unsigned int point_rast_rule:2;
- unsigned int line_endcap_aa_region_width:2;
- unsigned int line_width:4;
- unsigned int fast_scissor_disable:1;
- unsigned int cull_mode:2;
- unsigned int aa_enable:1;
- } sf6;
-
- struct {
- unsigned int point_size:11;
- unsigned int use_point_size_state:1;
- unsigned int subpixel_precision:1;
- unsigned int sprite_point:1;
- unsigned int pad0:11;
- unsigned int trifan_pv:2;
- unsigned int linestrip_pv:2;
- unsigned int tristrip_pv:2;
- unsigned int line_last_pixel_enable:1;
- } sf7;
-};
-
-struct i965_sampler_state
-{
- struct {
- unsigned int shadow_function:3;
- unsigned int lod_bias:11;
- unsigned int min_filter:3;
- unsigned int mag_filter:3;
- unsigned int mip_filter:2;
- unsigned int base_level:5;
- unsigned int pad:1;
- unsigned int lod_preclamp:1;
- unsigned int border_color_mode:1;
- unsigned int pad0:1;
- unsigned int disable:1;
- } ss0;
-
- struct {
- unsigned int r_wrap_mode:3;
- unsigned int t_wrap_mode:3;
- unsigned int s_wrap_mode:3;
- unsigned int pad:3;
- unsigned int max_lod:10;
- unsigned int min_lod:10;
- } ss1;
-
-
- struct {
- unsigned int pad:5;
- unsigned int border_color_pointer:27;
- } ss2;
-
- struct {
- unsigned int pad:19;
- unsigned int max_aniso:3;
- unsigned int chroma_key_mode:1;
- unsigned int chroma_key_index:2;
- unsigned int chroma_key_enable:1;
- unsigned int monochrome_filter_width:3;
- unsigned int monochrome_filter_height:3;
- } ss3;
-};
-
-struct i965_wm_unit_state
-{
- struct thread0 thread0;
- struct thread1 thread1;
- struct thread2 thread2;
- struct thread3 thread3;
-
- struct {
- unsigned int stats_enable:1;
- unsigned int pad0:1;
- unsigned int sampler_count:3;
- unsigned int sampler_state_pointer:27;
- } wm4;
-
- struct {
- unsigned int enable_8_pix:1;
- unsigned int enable_16_pix:1;
- unsigned int enable_32_pix:1;
- unsigned int pad0:7;
- unsigned int legacy_global_depth_bias:1;
- unsigned int line_stipple:1;
- unsigned int depth_offset:1;
- unsigned int polygon_stipple:1;
- unsigned int line_aa_region_width:2;
- unsigned int line_endcap_aa_region_width:2;
- unsigned int early_depth_test:1;
- unsigned int thread_dispatch_enable:1;
- unsigned int program_uses_depth:1;
- unsigned int program_computes_depth:1;
- unsigned int program_uses_killpixel:1;
- unsigned int legacy_line_rast: 1;
- unsigned int transposed_urb_read:1;
- unsigned int max_threads:7;
- } wm5;
-
- float global_depth_offset_constant;
- float global_depth_offset_scale;
-};
-
-struct i965_cc_viewport
-{
- float min_depth;
- float max_depth;
-};
-
-struct i965_cc_unit_state
-{
- struct {
- unsigned int pad0:3;
- unsigned int bf_stencil_pass_depth_pass_op:3;
- unsigned int bf_stencil_pass_depth_fail_op:3;
- unsigned int bf_stencil_fail_op:3;
- unsigned int bf_stencil_func:3;
- unsigned int bf_stencil_enable:1;
- unsigned int pad1:2;
- unsigned int stencil_write_enable:1;
- unsigned int stencil_pass_depth_pass_op:3;
- unsigned int stencil_pass_depth_fail_op:3;
- unsigned int stencil_fail_op:3;
- unsigned int stencil_func:3;
- unsigned int stencil_enable:1;
- } cc0;
-
-
- struct {
- unsigned int bf_stencil_ref:8;
- unsigned int stencil_write_mask:8;
- unsigned int stencil_test_mask:8;
- unsigned int stencil_ref:8;
- } cc1;
-
-
- struct {
- unsigned int logicop_enable:1;
- unsigned int pad0:10;
- unsigned int depth_write_enable:1;
- unsigned int depth_test_function:3;
- unsigned int depth_test:1;
- unsigned int bf_stencil_write_mask:8;
- unsigned int bf_stencil_test_mask:8;
- } cc2;
-
-
- struct {
- unsigned int pad0:8;
- unsigned int alpha_test_func:3;
- unsigned int alpha_test:1;
- unsigned int blend_enable:1;
- unsigned int ia_blend_enable:1;
- unsigned int pad1:1;
- unsigned int alpha_test_format:1;
- unsigned int pad2:16;
- } cc3;
-
- struct {
- unsigned int pad0:5;
- unsigned int cc_viewport_state_offset:27;
- } cc4;
-
- struct {
- unsigned int pad0:2;
- unsigned int ia_dest_blend_factor:5;
- unsigned int ia_src_blend_factor:5;
- unsigned int ia_blend_function:3;
- unsigned int statistics_enable:1;
- unsigned int logicop_func:4;
- unsigned int pad1:11;
- unsigned int dither_enable:1;
- } cc5;
-
- struct {
- unsigned int clamp_post_alpha_blend:1;
- unsigned int clamp_pre_alpha_blend:1;
- unsigned int clamp_range:2;
- unsigned int pad0:11;
- unsigned int y_dither_offset:2;
- unsigned int x_dither_offset:2;
- unsigned int dest_blend_factor:5;
- unsigned int src_blend_factor:5;
- unsigned int blend_function:3;
- } cc6;
-
- struct {
- union {
- float f;
- unsigned char ub[4];
- } alpha_ref;
- } cc7;
-};
-
-struct i965_sampler_8x8
-{
- struct {
- unsigned int pad0:16;
- unsigned int chroma_key_index:2;
- unsigned int chroma_key_enable:1;
- unsigned int pad1:8;
- unsigned int ief_filter_size:1;
- unsigned int ief_filter_type:1;
- unsigned int ief_bypass:1;
- unsigned int pad2:1;
- unsigned int avs_filter_type:1;
- } dw0;
-
- struct {
- unsigned int pad0:5;
- unsigned int sampler_8x8_state_pointer:27;
- } dw1;
-
- struct {
- unsigned int weak_edge_threshold:4;
- unsigned int strong_edge_threshold:4;
- unsigned int global_noise_estimation:8;
- unsigned int pad0:16;
- } dw2;
-
- struct {
- unsigned int r3x_coefficient:5;
- unsigned int pad0:1;
- unsigned int r3c_coefficient:5;
- unsigned int pad1:3;
- unsigned int gain_factor:6;
- unsigned int non_edge_weight:3;
- unsigned int pad2:1;
- unsigned int regular_weight:3;
- unsigned int pad3:1;
- unsigned int strong_edge_weight:3;
- unsigned int pad4:1;
- } dw3;
-
- struct {
- unsigned int pad0:2;
- unsigned int mr_boost:1;
- unsigned int mr_threshold:4;
- unsigned int steepness_boost:1;
- unsigned int steepness_threshold:4;
- unsigned int pad1:2;
- unsigned int r5x_coefficient:5;
- unsigned int pad2:1;
- unsigned int r5cx_coefficient:5;
- unsigned int pad3:1;
- unsigned int r5c_coefficient:5;
- unsigned int pad4:1;
- } dw4;
-
- struct {
- unsigned int pwl1_point_1:8;
- unsigned int pwl1_point_2:8;
- unsigned int pwl1_point_3:8;
- unsigned int pwl1_point_4:8;
- } dw5;
-
- struct {
- unsigned int pwl1_point_5:8;
- unsigned int pwl1_point_6:8;
- unsigned int pwl1_r3_bias_0:8;
- unsigned int pwl1_r3_bias_1:8;
- } dw6;
-
- struct {
- unsigned int pwl1_r3_bias_2:8;
- unsigned int pwl1_r3_bias_3:8;
- unsigned int pwl1_r3_bias_4:8;
- unsigned int pwl1_r3_bias_5:8;
- } dw7;
-
- struct {
- unsigned int pwl1_r3_bias_6:8;
- unsigned int pwl1_r5_bias_0:8;
- unsigned int pwl1_r5_bias_1:8;
- unsigned int pwl1_r5_bias_2:8;
- } dw8;
-
- struct {
- unsigned int pwl1_r5_bias_3:8;
- unsigned int pwl1_r5_bias_4:8;
- unsigned int pwl1_r5_bias_5:8;
- unsigned int pwl1_r5_bias_6:8;
- } dw9;
-
- struct {
- int pwl1_r3_slope_0:8;
- int pwl1_r3_slope_1:8;
- int pwl1_r3_slope_2:8;
- int pwl1_r3_slope_3:8;
- } dw10;
-
- struct {
- int pwl1_r3_slope_4:8;
- int pwl1_r3_slope_5:8;
- int pwl1_r3_slope_6:8;
- int pwl1_r5_slope_0:8;
- } dw11;
-
- struct {
- int pwl1_r5_slope_1:8;
- int pwl1_r5_slope_2:8;
- int pwl1_r5_slope_3:8;
- int pwl1_r5_slope_4:8;
- } dw12;
-
- struct {
- int pwl1_r5_slope_5:8;
- int pwl1_r5_slope_6:8;
- unsigned int limiter_boost:4;
- unsigned int pad0:4;
- unsigned int minimum_limiter:4;
- unsigned int maximum_limiter:4;
- } dw13;
-
- struct {
- unsigned int pad0:8;
- unsigned int clip_limiter:10;
- unsigned int pad1:14;
- } dw14;
-
- unsigned int dw15; /* Just a pad */
-};
-
-struct i965_sampler_8x8_coefficient
-{
- struct {
- int table_0x_filter_c0:8;
- int table_0x_filter_c1:8;
- int table_0x_filter_c2:8;
- int table_0x_filter_c3:8;
- } dw0;
-
- struct {
- int table_0x_filter_c4:8;
- int table_0x_filter_c5:8;
- int table_0x_filter_c6:8;
- int table_0x_filter_c7:8;
- } dw1;
-
- struct {
- int table_0y_filter_c0:8;
- int table_0y_filter_c1:8;
- int table_0y_filter_c2:8;
- int table_0y_filter_c3:8;
- } dw2;
-
- struct {
- int table_0y_filter_c4:8;
- int table_0y_filter_c5:8;
- int table_0y_filter_c6:8;
- int table_0y_filter_c7:8;
- } dw3;
-
- struct {
- int table_1x_filter_c0:8;
- int table_1x_filter_c1:8;
- int table_1x_filter_c2:8;
- int table_1x_filter_c3:8;
- } dw4;
-
- struct {
- int table_1x_filter_c4:8;
- int table_1x_filter_c5:8;
- int table_1x_filter_c6:8;
- int table_1x_filter_c7:8;
- } dw5;
-
- struct {
- int table_1y_filter_c0:8;
- int table_1y_filter_c1:8;
- int table_1y_filter_c2:8;
- int table_1y_filter_c3:8;
- } dw6;
-
- struct {
- int table_1y_filter_c4:8;
- int table_1y_filter_c5:8;
- int table_1y_filter_c6:8;
- int table_1y_filter_c7:8;
- } dw7;
-};
-
-struct i965_sampler_8x8_state
-{
- struct i965_sampler_8x8_coefficient coefficients[17];
-
- struct {
- unsigned int transition_area_with_8_pixels:3;
- unsigned int pad0:1;
- unsigned int transition_area_with_4_pixels:3;
- unsigned int pad1:1;
- unsigned int max_derivative_8_pixels:8;
- unsigned int max_derivative_4_pixels:8;
- unsigned int default_sharpness_level:8;
- } dw136;
-
- union {
- /* Ironlake, Sandybridge, Ivybridge (Gen5+) */
- struct {
- unsigned int pad0:21;
- unsigned int bypass_y_adaptive_filtering:1;
- unsigned int bypass_x_adaptive_filtering:1;
- unsigned int pad1:9;
- } ilk;
-
- /* Haswell (Gen7.5+) */
- struct {
- unsigned int rgb_adaptive:1;
- unsigned int adaptive_filter_for_all_channel:1;
- unsigned int pad0:19;
- unsigned int bypass_y_adaptive_filtering:1;
- unsigned int bypass_x_adaptive_filtering:1;
- unsigned int pad1:9;
- } hsw;
- } dw137;
-};
-
-struct i965_surface_state2
-{
- struct {
- unsigned int surface_base_address;
- } ss0;
-
- struct {
- unsigned int cbcr_pixel_offset_v_direction:2;
- unsigned int pad0:4;
- unsigned int width:13;
- unsigned int height:13;
- } ss1;
-
- struct {
- unsigned int tile_walk:1;
- unsigned int tiled_surface:1;
- unsigned int half_pitch_for_chroma:1;
- unsigned int pitch:17;
- unsigned int pad0:2;
- unsigned int surface_object_control_data:4;
- unsigned int pad1:1;
- unsigned int interleave_chroma:1;
- unsigned int surface_format:4;
- } ss2;
-
- struct {
- unsigned int y_offset_for_cb:13;
- unsigned int pad0:3;
- unsigned int x_offset_for_cb:13;
- unsigned int pad1:3;
- } ss3;
-
- struct {
- unsigned int y_offset_for_cr:13;
- unsigned int pad0:3;
- unsigned int x_offset_for_cr:13;
- unsigned int pad1:3;
- } ss4;
-};
-
-struct i965_sampler_dndi
-{
- struct {
- unsigned int denoise_asd_threshold:8;
- unsigned int denoise_history_delta:8;
- unsigned int denoise_maximum_history:8;
- unsigned int denoise_stad_threshold:8;
- } dw0;
-
- struct {
- unsigned int denoise_threshold_for_sum_of_complexity_measure:8;
- unsigned int denoise_moving_pixel_threshold:5;
- unsigned int stmm_c2:3;
- unsigned int low_temporal_difference_threshold:6;
- unsigned int pad0:2;
- unsigned int temporal_difference_threshold:6;
- unsigned int pad1:2;
- } dw1;
-
- struct {
- unsigned int block_noise_estimate_noise_threshold:8;
- unsigned int block_noise_estimate_edge_threshold:8;
- unsigned int denoise_edge_threshold:8;
- unsigned int good_neighbor_threshold:8;
- } dw2;
-
- struct {
- unsigned int maximum_stmm:8;
- unsigned int multipler_for_vecm:6;
- unsigned int pad0:2;
- unsigned int blending_constant_across_time_for_small_values_of_stmm:8;
- unsigned int blending_constant_across_time_for_large_values_of_stmm:7;
- unsigned int stmm_blending_constant_select:1;
- } dw3;
-
- struct {
- unsigned int sdi_delta:8;
- unsigned int sdi_threshold:8;
- unsigned int stmm_output_shift:4;
- unsigned int stmm_shift_up:2;
- unsigned int stmm_shift_down:2;
- unsigned int minimum_stmm:8;
- } dw4;
-
- struct {
- unsigned int fmd_temporal_difference_threshold:8;
- unsigned int sdi_fallback_mode_2_constant:8;
- unsigned int sdi_fallback_mode_1_t2_constant:8;
- unsigned int sdi_fallback_mode_1_t1_constant:8;
- } dw5;
-
- struct {
- unsigned int dn_enable:1;
- unsigned int di_enable:1;
- unsigned int di_partial:1;
- unsigned int dndi_top_first:1;
- unsigned int dndi_stream_id:1;
- unsigned int dndi_first_frame:1;
- unsigned int progressive_dn:1;
- unsigned int pad0:1;
- unsigned int fmd_tear_threshold:6;
- unsigned int pad1:2;
- unsigned int fmd2_vertical_difference_threshold:8;
- unsigned int fmd1_vertical_difference_threshold:8;
- } dw6;
-
- struct {
- unsigned int pad0:8;
- unsigned int fmd_for_1st_field_of_current_frame:2;
- unsigned int pad1:6;
- unsigned int fmd_for_2nd_field_of_previous_frame:2;
- unsigned int vdi_walker_enable:1;
- unsigned int pad2:4;
- unsigned int column_width_minus1:9;
- } dw7;
-};
-
-struct gen8_interface_descriptor_data
-{
- struct {
- unsigned int pad0:6;
- unsigned int kernel_start_pointer:26;
- } desc0;
-
- struct {
- unsigned int kernel_start_pointer_high:16;
- unsigned int pad0:16;
- } desc1;
-
- struct {
- unsigned int pad0:7;
- unsigned int software_exception_enable:1;
- unsigned int pad1:3;
- unsigned int maskstack_exception_enable:1;
- unsigned int pad2:1;
- unsigned int illegal_opcode_exception_enable:1;
- unsigned int pad3:2;
- unsigned int floating_point_mode:1;
- unsigned int thread_priority:1;
- unsigned int single_program_flow:1;
- unsigned int denorm_mode:1;
- unsigned int pad4:12;
- } desc2;
-
- struct {
- unsigned int pad0:2;
- unsigned int sampler_count:3;
- unsigned int sampler_state_pointer:27;
- } desc3;
-
- struct {
- unsigned int binding_table_entry_count:5;
- unsigned int binding_table_pointer:11;
- unsigned int pad0: 16;
- } desc4;
-
- struct {
- unsigned int constant_urb_entry_read_offset:16;
- unsigned int constant_urb_entry_read_length:16;
- } desc5;
-
- struct {
- unsigned int num_threads_in_tg:10;
- unsigned int pad0:5;
- unsigned int global_barrier_enable:1;
- unsigned int shared_local_memory_size:5;
- unsigned int barrier_enable:1;
- unsigned int rounding_mode:2;
- unsigned int pad1:8;
- } desc6;
-
- struct {
- unsigned int cross_thread_constant_data_read_length:8;
- unsigned int pad0:24;
- } desc7;
-};
-
-struct gen8_surface_state
-{
- struct {
- unsigned int cube_pos_z:1;
- unsigned int cube_neg_z:1;
- unsigned int cube_pos_y:1;
- unsigned int cube_neg_y:1;
- unsigned int cube_pos_x:1;
- unsigned int cube_neg_x:1;
- unsigned int media_boundary_pixel_mode:2;
- unsigned int render_cache_read_write:1;
- unsigned int sampler_l2bypass_disable:1;
- unsigned int vert_line_stride_ofs:1;
- unsigned int vert_line_stride:1;
- unsigned int tile_walk:1;
- unsigned int tiled_surface:1;
- unsigned int horizontal_alignment:2;
- /* Field 16 */
- unsigned int vertical_alignment:2;
- unsigned int surface_format:9; /**< BRW_SURFACEFORMAT_x */
- unsigned int pad0:1;
- unsigned int is_array:1;
- unsigned int surface_type:3; /**< BRW_SURFACE_1D/2D/3D/CUBE */
- } ss0;
-
- struct {
- unsigned int surface_qpitch:15;
- unsigned int pad0:4;
- unsigned int base_mip_level:5;
- unsigned int surface_mocs:7;
- unsigned int pad1:1;
- } ss1;
-
- struct {
- unsigned int width:14;
- unsigned int pad0:2;
- unsigned int height:14;
- unsigned int pad1:2;
- } ss2;
-
- struct {
- unsigned int pitch:18;
- unsigned int pad:3;
- unsigned int depth:11;
- } ss3;
-
- struct {
- unsigned int multisample_position_palette_index:3;
- unsigned int num_multisamples:3;
- unsigned int multisampled_surface_storage_format:1;
- unsigned int render_target_view_extent:11;
- unsigned int min_array_elt:11;
- unsigned int rotation:2;
- unsigned int force_ncmp_reduce_type:1;
- } ss4;
-
- struct {
- unsigned int mip_count:4;
- unsigned int min_lod:4;
- unsigned int pad0:4;
- unsigned int pad1:2;
- unsigned int coherence_type:1;
- unsigned int pad2:3;
- unsigned int pad3:2;
- unsigned int ewa_disable_cube:1;
- unsigned int y_offset:3;
- unsigned int pad4:1;
- unsigned int x_offset:7;
- } ss5;
-
- struct {
- unsigned int y_offset_uv_plane:14;
- unsigned int pad0:2;
- unsigned int x_offset_uv_plane:14;
- unsigned int pad1:1;
- unsigned int separate_uv_plane:1;
- } ss6;
-
- struct {
- unsigned int resource_min_lod:12;
- unsigned int pad0:4;
- unsigned int shader_chanel_select_a:3;
- unsigned int shader_chanel_select_b:3;
- unsigned int shader_chanel_select_g:3;
- unsigned int shader_chanel_select_r:3;
- unsigned int alpha_clear_color:1;
- unsigned int blue_clear_color:1;
- unsigned int green_clear_color:1;
- unsigned int red_clear_color:1;
- } ss7;
- struct {
- unsigned int base_addr;
- } ss8;
-
- struct {
- unsigned int base_addr_high:16;
- unsigned int pad0:16;
- } ss9;
-
- struct {
- unsigned int pad0:12;
- unsigned int aux_base_addr:20;
- } ss10;
-
- union {
- struct {
- unsigned int y_offset_v_plane:14;
- unsigned int pad0:2;
- unsigned int x_offset_v_plane:14;
- unsigned int pad1:2;
- } planar;
- struct {
- unsigned int aux_base_addr_high:16;
- unsigned int pad2:16;
- } aux_buffer;
- } ss11;
-
- struct {
- unsigned int hier_depth_clear;
- } ss12;
-
- struct {
- unsigned int pad0;
- } ss13;
-
- struct {
- unsigned int pad0;
- } ss14;
-
- struct {
- unsigned int pad0;
- } ss15;
-};
-
-struct gen8_surface_state2
-{
- struct {
- unsigned int pad0;
- } ss0;
-
- struct {
- unsigned int cbcr_pixel_offset_v_direction:2;
- unsigned int picture_structure:2;
- unsigned int width:14;
- unsigned int height:14;
- } ss1;
-
- struct {
- unsigned int tile_walk:1;
- unsigned int tiled_surface:1;
- unsigned int half_pitch_for_chroma:1;
- unsigned int pitch:18;
- unsigned int address_ctrl:1; /* clamp or mirror mode */
- unsigned int pad0:4;
- unsigned int interleave_chroma:1;
- unsigned int surface_format:5;
- } ss2;
-
- struct {
- unsigned int y_offset_for_cb:14;
- unsigned int pad0:2;
- unsigned int x_offset_for_cb:14;
- unsigned int pad1:2;
- } ss3;
-
- struct {
- unsigned int y_offset_for_cr:15;
- unsigned int pad0:1;
- unsigned int x_offset_for_cr:14;
- unsigned int pad1:2;
- } ss4;
-
- struct {
- unsigned int surface_object_mocs:7;
- unsigned int pad0:11;
- unsigned int pad1:2;
- unsigned int pad2:10;
- unsigned int vert_line_stride_offset:1;
- unsigned int vert_line_stride:1;
- } ss5;
-
- struct {
- unsigned int base_addr;
- } ss6;
-
- struct {
- unsigned int base_addr_high:16;
- unsigned int pad0:16;
- } ss7;
-};
-
-struct gen9_surface_state2
-{
- struct {
- unsigned int pad0:16;
- unsigned int y_offset:4;
- unsigned int x_offset:7;
- unsigned int pad1:3;
- unsigned int rotation:2;
- } ss0;
-
- struct {
- unsigned int cbcr_pixel_offset_v_direction:2;
- unsigned int picture_structure:2;
- unsigned int width:14;
- unsigned int height:14;
- } ss1;
-
- struct {
- unsigned int tile_walk:1;
- unsigned int tiled_surface:1;
- unsigned int half_pitch_for_chroma:1;
- unsigned int pitch:18;
- unsigned int address_ctrl:1; /* clamp or mirror mode */
- unsigned int memory_compression_enable:1;
- unsigned int memory_compression_mode:1;
- unsigned int cbcr_pixel_offset_v_direction_msb:1;
- unsigned int cbcr_pixel_offset_u_direction:1;
- unsigned int interleave_chroma:1;
- unsigned int surface_format:5;
- } ss2;
-
- struct {
- unsigned int y_offset_for_cb:14;
- unsigned int pad0:2;
- unsigned int x_offset_for_cb:14;
- unsigned int pad1:2;
- } ss3;
-
- struct {
- unsigned int y_offset_for_cr:15;
- unsigned int pad0:1;
- unsigned int x_offset_for_cr:14;
- unsigned int pad1:2;
- } ss4;
-
- struct {
- unsigned int surface_object_mocs:7;
- unsigned int pad0:11;
- unsigned int tr_mode:2;
- unsigned int pad1:10;
- unsigned int vert_line_stride_offset:1;
- unsigned int vert_line_stride:1;
- } ss5;
-
- struct {
- unsigned int base_addr;
- } ss6;
-
- struct {
- unsigned int base_addr_high:16;
- unsigned int pad0:16;
- } ss7;
-};
-
-struct gen9_surface_state
-{
- struct {
- unsigned int pad0:6;
- unsigned int media_boundary_pixel_mode:2;
- unsigned int render_cache_read_write:1;
- unsigned int sampler_l2bypass_disable:1;
- unsigned int vert_line_stride_ofs:1;
- unsigned int vert_line_stride:1;
- unsigned int tile_walk:1;
- unsigned int tiled_surface:1;
- unsigned int horizontal_alignment:2;
- /* Field 16 */
- unsigned int vertical_alignment:2;
- unsigned int surface_format:9; /**< BRW_SURFACEFORMAT_x */
- unsigned int astc_enable:1;
- unsigned int is_array:1;
- unsigned int surface_type:3; /**< BRW_SURFACE_1D/2D/3D/CUBE */
- } ss0;
-
- struct {
- unsigned int surface_qpitch:15;
- unsigned int pad0:4;
- unsigned int base_mip_level:5;
- unsigned int surface_mocs:7;
- unsigned int pad1:1;
- } ss1;
-
- struct {
- unsigned int width:14;
- unsigned int pad0:2;
- unsigned int height:14;
- unsigned int pad1:2;
- } ss2;
-
- struct {
- unsigned int pitch:18;
- unsigned int pad:3;
- unsigned int depth:11;
- } ss3;
-
- struct {
- unsigned int multisample_position_palette_index:3;
- unsigned int num_multisamples:3;
- unsigned int multisampled_surface_storage_format:1;
- unsigned int render_target_view_extent:11;
- unsigned int min_array_elt:11;
- unsigned int rotation:2;
- unsigned int force_ncmp_reduce_type:1;
- } ss4;
-
- struct {
- unsigned int mip_count:4;
- unsigned int min_lod:4;
- unsigned int miptail_start_lod:4;
- unsigned int pad0:2;
- unsigned int coherence_type:1;
- unsigned int pad1:3;
- unsigned int tr_mode:2;
- unsigned int ewa_disable_cube:1;
- unsigned int y_offset:3;
- unsigned int pad2:1;
- unsigned int x_offset:7;
- } ss5;
-
- struct {
- unsigned int y_offset_uv_plane:14;
- unsigned int pad0:2;
- unsigned int x_offset_uv_plane:14;
- unsigned int pad1:1;
- unsigned int separate_uv_plane:1;
- } ss6;
-
- struct {
- unsigned int resource_min_lod:12;
- unsigned int pad0:4;
- unsigned int shader_chanel_select_a:3;
- unsigned int shader_chanel_select_b:3;
- unsigned int shader_chanel_select_g:3;
- unsigned int shader_chanel_select_r:3;
- unsigned int pad1:2;
- unsigned int memory_compression_enable:1;
- unsigned int memory_compression_mode:1;
- } ss7;
-
- struct {
- unsigned int base_addr;
- } ss8;
-
- struct {
- unsigned int base_addr_high;
- } ss9;
-
- struct {
- unsigned int quilt_width:5;
- unsigned int quilt_height:5;
- unsigned int pad0:6;
- unsigned int pad1:16;
- } ss10;
-
- struct {
- unsigned int y_offset_v_plane:14;
- unsigned int pad0:2;
- unsigned int x_offset_v_plane:14;
- unsigned int pad1:2;
- } ss11;
-
- struct {
- unsigned int pad0;
- } ss12;
-
- struct {
- unsigned int pad0;
- } ss13;
-
- struct {
- unsigned int pad0;
- } ss14;
-
- struct {
- unsigned int pad0;
- } ss15;
-};
-
-struct gen8_sampler_state
-{
- struct
- {
- unsigned int aniso_algorithm:1;
- unsigned int lod_bias:13;
- unsigned int min_filter:3;
- unsigned int mag_filter:3;
- unsigned int mip_filter:2;
- unsigned int base_level:5;
- unsigned int lod_preclamp:2;
- unsigned int default_color_mode:1;
- unsigned int pad0:1;
- unsigned int disable:1;
- } ss0;
-
- struct
- {
- unsigned int cube_control_mode:1;
- unsigned int shadow_function:3;
- unsigned int chroma_key_mode:1;
- unsigned int chroma_key_index:2;
- unsigned int chroma_key_enable:1;
- unsigned int max_lod:12;
- unsigned int min_lod:12;
- } ss1;
-
- struct
- {
- unsigned int lod_clamp_mag_mode:1; /* MIPNONE or MIPFILTER */
- unsigned int flex_filter_vert_align:1;
- unsigned int flex_filter_hort_align:1;
- unsigned int flex_filter_coff_size:1; /* coff8 or coff 16 */
- unsigned int flex_filter_mode:1;
- unsigned int pad0:1;
- unsigned int indirect_state_pointer:18; /* point to the SAMPLE_INDIRECT_STATE */
- union {
- unsigned char nonsep_filter_footer_highmask;
- struct {
- unsigned char pad1:2;
- unsigned char sep_filter_height:2;
- unsigned char sep_filter_width:2;
- unsigned char sep_filter_coff_size:2;
- } sep_filter;
- } ss2_byte3;
- } ss2;
-
- struct
- {
- unsigned int r_wrap_mode:3;
- unsigned int t_wrap_mode:3;
- unsigned int s_wrap_mode:3;
- unsigned int pad0:1;
- unsigned int non_normalized_coord:1;
- unsigned int trilinear_quality:2;
- unsigned int address_round:6;
- unsigned int max_aniso:3;
- unsigned int pad1:2;
- unsigned int nonsep_filter_foot_lowmask:8;
- } ss3;
-};
-
-struct gen8_global_blend_state
-{
- unsigned int pad0:19;
- unsigned int ydither_offset:2;
- unsigned int xdither_offset:2;
- unsigned int color_dither_enable:1;
- unsigned int alpha_test_func:3;
- unsigned int alpha_test_enable:1;
- unsigned int alpha_to_coverage_dither:1;
- unsigned int alpha_to_one:1;
- unsigned int ia_blend_enable:1;
- unsigned int alpha_to_coverage:1;
-};
-
-struct gen8_blend_state_rt {
- struct {
- unsigned int blue_write_dis:1;
- unsigned int green_write_dis:1;
- unsigned int red_write_dis:1;
- unsigned int alpha_write_dis:1;
- unsigned int pad0:1;
- unsigned int alpha_blend_func:3;
- unsigned int ia_dest_blend_factor:5;
- unsigned int ia_src_blend_factor:5;
- unsigned int color_blend_func:3;
- unsigned int dest_blend_factor:5;
- unsigned int src_blend_factor:5;
- unsigned int colorbuf_blend:1;
- } blend0;
-
- struct {
- unsigned int post_blend_clamp_enable:1;
- unsigned int pre_blend_clamp_enable:1;
- unsigned int clamp_range:2;
- unsigned int pre_blend_src_clamp:1;
- unsigned int pad0:22;
- unsigned int logic_op_func:4;
- unsigned int logic_op_enable:1;
- } blend1;
-};
-
-/* TODO: Add the sampler_8x8 for Gen8+.
- * AVS/Convolve is 256DWs.
- * MinMaxfilter/Erode/Dilate: 8DWs*/
-
-
-struct gen6_blend_state
-{
- struct {
- unsigned int dest_blend_factor:5;
- unsigned int source_blend_factor:5;
- unsigned int pad3:1;
- unsigned int blend_func:3;
- unsigned int pad2:1;
- unsigned int ia_dest_blend_factor:5;
- unsigned int ia_source_blend_factor:5;
- unsigned int pad1:1;
- unsigned int ia_blend_func:3;
- unsigned int pad0:1;
- unsigned int ia_blend_enable:1;
- unsigned int blend_enable:1;
- } blend0;
-
- struct {
- unsigned int post_blend_clamp_enable:1;
- unsigned int pre_blend_clamp_enable:1;
- unsigned int clamp_range:2;
- unsigned int pad0:4;
- unsigned int x_dither_offset:2;
- unsigned int y_dither_offset:2;
- unsigned int dither_enable:1;
- unsigned int alpha_test_func:3;
- unsigned int alpha_test_enable:1;
- unsigned int pad1:1;
- unsigned int logic_op_func:4;
- unsigned int logic_op_enable:1;
- unsigned int pad2:1;
- unsigned int write_disable_b:1;
- unsigned int write_disable_g:1;
- unsigned int write_disable_r:1;
- unsigned int write_disable_a:1;
- unsigned int pad3:1;
- unsigned int alpha_to_coverage_dither:1;
- unsigned int alpha_to_one:1;
- unsigned int alpha_to_coverage:1;
- } blend1;
-};
-
-struct gen6_color_calc_state
-{
- struct {
- unsigned int alpha_test_format:1;
- unsigned int pad0:14;
- unsigned int round_disable:1;
- unsigned int bf_stencil_ref:8;
- unsigned int stencil_ref:8;
- } cc0;
-
- union {
- float alpha_ref_f;
- struct {
- unsigned int ui:8;
- unsigned int pad0:24;
- } alpha_ref_fi;
- } cc1;
-
- float constant_r;
- float constant_g;
- float constant_b;
- float constant_a;
-};
-
-struct gen6_depth_stencil_state
-{
- struct {
- unsigned int pad0:3;
- unsigned int bf_stencil_pass_depth_pass_op:3;
- unsigned int bf_stencil_pass_depth_fail_op:3;
- unsigned int bf_stencil_fail_op:3;
- unsigned int bf_stencil_func:3;
- unsigned int bf_stencil_enable:1;
- unsigned int pad1:2;
- unsigned int stencil_write_enable:1;
- unsigned int stencil_pass_depth_pass_op:3;
- unsigned int stencil_pass_depth_fail_op:3;
- unsigned int stencil_fail_op:3;
- unsigned int stencil_func:3;
- unsigned int stencil_enable:1;
- } ds0;
-
- struct {
- unsigned int bf_stencil_write_mask:8;
- unsigned int bf_stencil_test_mask:8;
- unsigned int stencil_write_mask:8;
- unsigned int stencil_test_mask:8;
- } ds1;
-
- struct {
- unsigned int pad0:26;
- unsigned int depth_write_enable:1;
- unsigned int depth_test_func:3;
- unsigned int pad1:1;
- unsigned int depth_test_enable:1;
- } ds2;
-};
-
-struct gen6_interface_descriptor_data
-{
- struct {
- unsigned int pad0:6;
- unsigned int kernel_start_pointer:26;
- } desc0;
-
- struct {
- unsigned int pad0:7;
- unsigned int software_exception_enable:1;
- unsigned int pad1:3;
- unsigned int maskstack_exception_enable:1;
- unsigned int pad2:1;
- unsigned int illegal_opcode_exception_enable:1;
- unsigned int pad3:2;
- unsigned int floating_point_mode:1;
- unsigned int thread_priority:1;
- unsigned int single_program_flow:1;
- unsigned int pad4:13;
- } desc1;
-
- struct {
- unsigned int pad0:2;
- unsigned int sampler_count:3;
- unsigned int sampler_state_pointer:27;
- } desc2;
-
- struct {
- unsigned int binding_table_entry_count:5;
- unsigned int binding_table_pointer:27;
- } desc3;
-
- struct {
- unsigned int constant_urb_entry_read_offset:16;
- unsigned int constant_urb_entry_read_length:16;
- } desc4;
-
- union {
- struct {
- unsigned int num_threads:8;
- unsigned int barrier_return_byte:8;
- unsigned int shared_local_memory_size:5;
- unsigned int barrier_enable:1;
- unsigned int rounding_mode:2;
- unsigned int barrier_return_grf_offset:8;
- } gen7;
-
- struct {
- unsigned int barrier_id:4;
- unsigned int pad0:28;
- } gen6;
- } desc5;
-
- struct {
- unsigned int cross_thread_constant_data_read_length:8;
- unsigned int pad0:24;
- } desc6;
-
- struct {
- unsigned int pad0;
- } desc7;
-};
-
-struct gen7_surface_state
-{
- struct {
- unsigned int cube_pos_z:1;
- unsigned int cube_neg_z:1;
- unsigned int cube_pos_y:1;
- unsigned int cube_neg_y:1;
- unsigned int cube_pos_x:1;
- unsigned int cube_neg_x:1;
- unsigned int pad2:2;
- unsigned int render_cache_read_write:1;
- unsigned int pad1:1;
- unsigned int surface_array_spacing:1;
- unsigned int vert_line_stride_ofs:1;
- unsigned int vert_line_stride:1;
- unsigned int tile_walk:1;
- unsigned int tiled_surface:1;
- unsigned int horizontal_alignment:1;
- unsigned int vertical_alignment:2;
- unsigned int surface_format:9; /**< BRW_SURFACEFORMAT_x */
- unsigned int pad0:1;
- unsigned int is_array:1;
- unsigned int surface_type:3; /**< BRW_SURFACE_1D/2D/3D/CUBE */
- } ss0;
-
- struct {
- unsigned int base_addr;
- } ss1;
-
- struct {
- unsigned int width:14;
- unsigned int pad1:2;
- unsigned int height:14;
- unsigned int pad0:2;
- } ss2;
-
- struct {
- unsigned int pitch:18;
- unsigned int pad:3;
- unsigned int depth:11;
- } ss3;
-
- struct {
- unsigned int multisample_position_palette_index:3;
- unsigned int num_multisamples:3;
- unsigned int multisampled_surface_storage_format:1;
- unsigned int render_target_view_extent:11;
- unsigned int min_array_elt:11;
- unsigned int rotation:2;
- unsigned int pad0:1;
- } ss4;
-
- struct {
- unsigned int mip_count:4;
- unsigned int min_lod:4;
- unsigned int pad1:12;
- unsigned int y_offset:4;
- unsigned int pad0:1;
- unsigned int x_offset:7;
- } ss5;
-
- struct {
- unsigned int pad; /* Multisample Control Surface stuff */
- } ss6;
-
- struct {
- unsigned int resource_min_lod:12;
- unsigned int pad0:4;
- unsigned int shader_chanel_select_a:3;
- unsigned int shader_chanel_select_b:3;
- unsigned int shader_chanel_select_g:3;
- unsigned int shader_chanel_select_r:3;
- unsigned int alpha_clear_color:1;
- unsigned int blue_clear_color:1;
- unsigned int green_clear_color:1;
- unsigned int red_clear_color:1;
- } ss7;
-};
-
-struct gen7_sampler_state
-{
- struct
- {
- unsigned int aniso_algorithm:1;
- unsigned int lod_bias:13;
- unsigned int min_filter:3;
- unsigned int mag_filter:3;
- unsigned int mip_filter:2;
- unsigned int base_level:5;
- unsigned int pad1:1;
- unsigned int lod_preclamp:1;
- unsigned int default_color_mode:1;
- unsigned int pad0:1;
- unsigned int disable:1;
- } ss0;
-
- struct
- {
- unsigned int cube_control_mode:1;
- unsigned int shadow_function:3;
- unsigned int pad:4;
- unsigned int max_lod:12;
- unsigned int min_lod:12;
- } ss1;
-
- struct
- {
- unsigned int pad:5;
- unsigned int default_color_pointer:27;
- } ss2;
-
- struct
- {
- unsigned int r_wrap_mode:3;
- unsigned int t_wrap_mode:3;
- unsigned int s_wrap_mode:3;
- unsigned int pad:1;
- unsigned int non_normalized_coord:1;
- unsigned int trilinear_quality:2;
- unsigned int address_round:6;
- unsigned int max_aniso:3;
- unsigned int chroma_key_mode:1;
- unsigned int chroma_key_index:2;
- unsigned int chroma_key_enable:1;
- unsigned int pad0:6;
- } ss3;
-};
-
-struct gen7_surface_state2
-{
- struct {
- unsigned int surface_base_address;
- } ss0;
-
- struct {
- unsigned int cbcr_pixel_offset_v_direction:2;
- unsigned int picture_structure:2;
- unsigned int width:14;
- unsigned int height:14;
- } ss1;
-
- struct {
- unsigned int tile_walk:1;
- unsigned int tiled_surface:1;
- unsigned int half_pitch_for_chroma:1;
- unsigned int pitch:18;
- unsigned int pad0:1;
- unsigned int surface_object_control_data:4;
- unsigned int pad1:1;
- unsigned int interleave_chroma:1;
- unsigned int surface_format:4;
- } ss2;
-
- struct {
- unsigned int y_offset_for_cb:15;
- unsigned int pad0:1;
- unsigned int x_offset_for_cb:14;
- unsigned int pad1:2;
- } ss3;
-
- struct {
- unsigned int y_offset_for_cr:15;
- unsigned int pad0:1;
- unsigned int x_offset_for_cr:14;
- unsigned int pad1:2;
- } ss4;
-
- struct {
- unsigned int pad0;
- } ss5;
-
- struct {
- unsigned int pad0;
- } ss6;
-
- struct {
- unsigned int pad0;
- } ss7;
-};
-
-struct gen7_sampler_8x8
-{
- struct {
- unsigned int global_noise_estimation:8;
- unsigned int pad0:8;
- unsigned int chroma_key_index:2;
- unsigned int chroma_key_enable:1;
- unsigned int pad1:10;
- unsigned int ief_bypass:1;
- unsigned int pad2:1;
- unsigned int disable_8x8_filter:1;
- } dw0;
-
- struct {
- unsigned int pad0:5;
- unsigned int sampler_8x8_state_pointer:27;
- } dw1;
-
- struct {
- unsigned int weak_edge_threshold:6;
- unsigned int pad0:2;
- unsigned int strong_edge_threshold:6;
- unsigned int pad1:2;
- unsigned int r5x_coefficient:5;
- unsigned int r5cx_coefficient:5;
- unsigned int r5c_coefficient:5;
- unsigned int pad2:1;
- } dw2;
-
- struct {
- unsigned int r3x_coefficient:5;
- unsigned int pad0:1;
- unsigned int r3c_coefficient:5;
- unsigned int pad1:3;
- unsigned int gain_factor:6;
- unsigned int non_edge_weight:3;
- unsigned int pad2:1;
- unsigned int regular_weight:3;
- unsigned int pad3:1;
- unsigned int strong_edge_weight:3;
- unsigned int ief4_smooth_enable:1;
- } dw3;
-};
-
-/* This can also be used for BDW+ */
-struct gen7_sampler_dndi
-{
- struct {
- unsigned int denoise_asd_threshold:8;
- unsigned int dnmh_delt:4;
- unsigned int vdi_walker_y_stride:2;
- unsigned int vdi_walker_frame_sharing_enable:1;
- unsigned int pad0:1;
- unsigned int denoise_maximum_history:8;
- unsigned int denoise_stad_threshold:8;
- } dw0;
-
- struct {
- unsigned int denoise_threshold_for_sum_of_complexity_measure:8;
- unsigned int denoise_moving_pixel_threshold:5;
- unsigned int stmm_c2:3;
- unsigned int low_temporal_difference_threshold:6;
- unsigned int pad0:2;
- unsigned int temporal_difference_threshold:6;
- unsigned int pad1:2;
- } dw1;
-
- struct {
- unsigned int block_noise_estimate_noise_threshold:8;
- unsigned int bne_edge_th:4;
- unsigned int pad0:2;
- unsigned int smooth_mv_th:2;
- unsigned int sad_tight_th:4;
- unsigned int cat_slope_minus1:4;
- unsigned int good_neighbor_th:6;
- unsigned int pad1:2;
- } dw2;
-
- struct {
- unsigned int maximum_stmm:8;
- unsigned int multipler_for_vecm:6;
- unsigned int pad0:2;
- unsigned int blending_constant_across_time_for_small_values_of_stmm:8;
- unsigned int blending_constant_across_time_for_large_values_of_stmm:7;
- unsigned int stmm_blending_constant_select:1;
- } dw3;
-
- struct {
- unsigned int sdi_delta:8;
- unsigned int sdi_threshold:8;
- unsigned int stmm_output_shift:4;
- unsigned int stmm_shift_up:2;
- unsigned int stmm_shift_down:2;
- unsigned int minimum_stmm:8;
- } dw4;
-
- struct {
- unsigned int fmd_temporal_difference_threshold:8;
- unsigned int sdi_fallback_mode_2_constant:8;
- unsigned int sdi_fallback_mode_1_t2_constant:8;
- unsigned int sdi_fallback_mode_1_t1_constant:8;
- } dw5;
-
- struct {
- unsigned int dn_enable:1;
- unsigned int di_enable:1;
- unsigned int di_partial:1;
- unsigned int dndi_top_first:1;
- unsigned int dndi_stream_id:1;
- unsigned int dndi_first_frame:1;
- unsigned int progressive_dn:1;
- unsigned int mcdi_enable:1;
- unsigned int fmd_tear_threshold:6;
- unsigned int cat_th1:2;
- unsigned int fmd2_vertical_difference_threshold:8;
- unsigned int fmd1_vertical_difference_threshold:8;
- } dw6;
-
- struct {
- unsigned int sad_tha:4;
- unsigned int sad_thb:4;
- unsigned int fmd_for_1st_field_of_current_frame:2;
- unsigned int mc_pixel_consistency_th:6;
- unsigned int fmd_for_2nd_field_of_previous_frame:2;
- unsigned int vdi_walker_enable:1;
- unsigned int neighborpixel_th:4;
- unsigned int column_width_minus1:9;
- } dw7;
-};
-
-struct gen8_sampler_8x8_avs_coefficients
-{
- struct {
- unsigned int table_0x_filter_c0:8;
- unsigned int table_0y_filter_c0:8;
- unsigned int table_0x_filter_c1:8;
- unsigned int table_0y_filter_c1:8;
- } dw0;
-
- struct {
- unsigned int table_0x_filter_c2:8;
- unsigned int table_0y_filter_c2:8;
- unsigned int table_0x_filter_c3:8;
- unsigned int table_0y_filter_c3:8;
- } dw1;
-
- struct {
- unsigned int table_0x_filter_c4:8;
- unsigned int table_0y_filter_c4:8;
- unsigned int table_0x_filter_c5:8;
- unsigned int table_0y_filter_c5:8;
- } dw2;
-
- struct {
- unsigned int table_0x_filter_c6:8;
- unsigned int table_0y_filter_c6:8;
- unsigned int table_0x_filter_c7:8;
- unsigned int table_0y_filter_c7:8;
- } dw3;
-
- struct {
- unsigned int pad0:16;
- unsigned int table_1x_filter_c2:8;
- unsigned int table_1x_filter_c3:8;
- } dw4;
-
- struct {
- unsigned int table_1x_filter_c4:8;
- unsigned int table_1x_filter_c5:8;
- unsigned int pad0:16;
- } dw5;
-
- struct {
- unsigned int pad0:16;
- unsigned int table_1y_filter_c2:8;
- unsigned int table_1y_filter_c3:8;
- } dw6;
-
- struct {
- unsigned int table_1y_filter_c4:8;
- unsigned int table_1y_filter_c5:8;
- unsigned int pad0:16;
- } dw7;
-};
-
-struct gen8_sampler_8x8_avs {
- struct {
- unsigned int gain_factor:6;
- unsigned int weak_edge_threshold:6;
- unsigned int strong_edge_threshold:6;
- unsigned int r3x_coefficient:5;
- unsigned int r3c_coefficient:5;
- unsigned int chroma_key_index:2;
- unsigned int chroma_key_enable:1;
- unsigned int pad1:1;
- } dw0;
-
- struct {
- unsigned int pad0;
- } dw1;
-
- struct {
- unsigned int global_noise_estimation:8;
- unsigned int non_edge_weight:3;
- unsigned int regular_weight:3;
- unsigned int strong_edge_weight:3;
- unsigned int r5x_coefficient:5;
- unsigned int r5cx_coefficient:5;
- unsigned int r5c_coefficient:5;
- } dw2;
-
- struct {
- unsigned int sin_alpha:8; /* S0.7 */
- unsigned int cos_alpha:8; /* S0.7 */
- unsigned int sat_max:6;
- unsigned int hue_max:6;
- unsigned int enable_8tap_filter:2;
- unsigned int ief4_smooth_enable:1;
- unsigned int skin_ief_enable:1;
- } dw3;
-
- struct {
- unsigned int s3u:11; /* S2.8 */
- unsigned int pad0:1;
- unsigned int diamond_margin:3;
- unsigned int vy_std_enable:1;
- unsigned int umid:8;
- unsigned int vmid:8;
- } dw4;
-
- struct {
- unsigned int diamond_dv:7;
- unsigned int diamond_th:6;
- unsigned int diamond_alpha:8;
- unsigned int hs_margin:3;
- unsigned int diamond_du:7;
- unsigned int skin_detailfilter:1;
- } dw5;
-
- struct {
- unsigned int y_point1:8;
- unsigned int y_point2:8;
- unsigned int y_point3:8;
- unsigned int y_point4:8;
- } dw6;
-
- struct {
- unsigned int inv_margin_vyl:16;
- unsigned int pad0:16;
- } dw7;
-
- struct {
- unsigned int inv_margin_vyu:16;
- unsigned int p0l:8;
- unsigned int p1l:8;
- } dw8;
-
- struct {
- unsigned int p2l:8;
- unsigned int p3l:8;
- unsigned int b0l:8;
- unsigned int b1l:8;
- } dw9;
-
- struct {
- unsigned int b2l:8;
- unsigned int b3l:8;
- unsigned int s0l:11;
- unsigned int y_slope2:5;
- } dw10;
-
- struct {
- unsigned int s1l:11;
- unsigned int s2l:11;
- unsigned int pad0:10;
- } dw11;
-
- struct {
- unsigned int s3l:11;
- unsigned int p0u:8;
- unsigned int p1u:8;
- unsigned int y_slope1:5;
- } dw12;
-
- struct {
- unsigned int p2u:8;
- unsigned int p3u:8;
- unsigned int b0u:8;
- unsigned int b1u:8;
- } dw13;
-
- struct {
- unsigned int b2u:8;
- unsigned int b3u:8;
- unsigned int s0u:11;
- unsigned int pad0:5;
- } dw14;
-
- struct {
- unsigned int s1u:11;
- unsigned int s2u:11;
- unsigned int pad0:10;
- } dw15;
-
- /* DW16-DW151 */
- struct gen8_sampler_8x8_avs_coefficients coefficients[17];
-
- struct {
- unsigned int transition_area_with_8_pixels:3;
- unsigned int pad0:1;
- unsigned int transition_area_with_4_pixels:3;
- unsigned int pad1:1;
- unsigned int max_derivative_8_pixels:8;
- unsigned int max_derivative_4_pixels:8;
- unsigned int default_sharpness_level:8;
- } dw152;
-
- struct {
- unsigned int rgb_adaptive:1;
- unsigned int adaptive_filter_for_all_channel:1;
- unsigned int pad0:19;
- unsigned int bypass_y_adaptive_filtering:1;
- unsigned int bypass_x_adaptive_filtering:1;
- unsigned int pad1:9;
- } dw153;
-
- unsigned int reserved[6];
-
- /* DW160-DW279 */
- struct gen8_sampler_8x8_avs_coefficients coefficients1[15];
-};
-
-struct gen9_sampler_8x8_avs
-{
- struct {
- unsigned int gain_factor:6;
- unsigned int weak_edge_threshold:6;
- unsigned int strong_edge_threshold:6;
- unsigned int r3x_coefficient:5;
- unsigned int r3c_coefficient:5;
- unsigned int pad1:4;
- } dw0;
-
- struct {
- unsigned int pad0;
- } dw1;
-
- struct {
- unsigned int global_noise_estimation:8;
- unsigned int non_edge_weight:3;
- unsigned int regular_weight:3;
- unsigned int strong_edge_weight:3;
- unsigned int r5x_coefficient:5;
- unsigned int r5cx_coefficient:5;
- unsigned int r5c_coefficient:5;
- } dw2;
-
- struct {
- unsigned int sin_alpha:8; /* S0.7 */
- unsigned int cos_alpha:8; /* S0.7 */
- unsigned int sat_max:6;
- unsigned int hue_max:6;
- unsigned int enable_8tap_adaptive_filter:2;
- unsigned int ief4_smooth_enable:1;
- unsigned int skin_ief_enable:1;
- } dw3;
-
- struct {
- unsigned int s3u:11; /* S2.8 */
- unsigned int shuffle_output_write_back:1;
- unsigned int diamond_margin:3;
- unsigned int vy_std_enable:1;
- unsigned int umid:8;
- unsigned int vmid:8;
- } dw4;
-
- struct {
- unsigned int diamond_dv:7;
- unsigned int diamond_th:6;
- unsigned int diamond_alpha:8;
- unsigned int hs_margin:3;
- unsigned int diamond_du:7;
- unsigned int skin_detailfilter:1;
- } dw5;
-
- struct {
- unsigned int y_point1:8;
- unsigned int y_point2:8;
- unsigned int y_point3:8;
- unsigned int y_point4:8;
- } dw6;
-
- struct {
- unsigned int inv_margin_vyl:16;
- unsigned int pad0:16;
- } dw7;
-
- struct {
- unsigned int inv_margin_vyu:16;
- unsigned int p0l:8;
- unsigned int p1l:8;
- } dw8;
-
- struct {
- unsigned int p2l:8;
- unsigned int p3l:8;
- unsigned int b0l:8;
- unsigned int b1l:8;
- } dw9;
-
- struct {
- unsigned int b2l:8;
- unsigned int b3l:8;
- unsigned int s0l:11;
- unsigned int y_slope2:5;
- } dw10;
-
- struct {
- unsigned int s1l:11;
- unsigned int s2l:11;
- unsigned int pad0:10;
- } dw11;
-
- struct {
- unsigned int s3l:11;
- unsigned int p0u:8;
- unsigned int p1u:8;
- unsigned int y_slope1:5;
- } dw12;
-
- struct {
- unsigned int p2u:8;
- unsigned int p3u:8;
- unsigned int b0u:8;
- unsigned int b1u:8;
- } dw13;
-
- struct {
- unsigned int b2u:8;
- unsigned int b3u:8;
- unsigned int s0u:11;
- unsigned int pad0:5;
- } dw14;
-
- struct {
- unsigned int s1u:11;
- unsigned int s2u:11;
- unsigned int pad0:10;
- } dw15;
-
- /* DW16-DW151 for 17 coeff tabls */
- struct gen8_sampler_8x8_avs_coefficients coefficients[17];
-
- struct {
- unsigned int transition_area_with_8_pixels:3;
- unsigned int pad0:1;
- unsigned int transition_area_with_4_pixels:3;
- unsigned int pad1:1;
- unsigned int max_derivative_8_pixels:8;
- unsigned int max_derivative_4_pixels:8;
- unsigned int default_sharpness_level:8;
- } dw152;
-
- struct {
- unsigned int rgb_adaptive:1;
- unsigned int adaptive_filter_for_all_channel:1;
- unsigned int pad0:19;
- unsigned int bypass_y_adaptive_filtering:1;
- unsigned int bypass_x_adaptive_filtering:1;
- unsigned int pad1:9;
- } dw153;
-
- unsigned int reserved1[6];
-
- /* 160-279 for 17..31 avs_coeff */
- struct gen8_sampler_8x8_avs_coefficients extra_coefficients[15];
-
- // 280 - 511 (padding to align it to 512 dwords)
- unsigned int reserved2[232];
-};
-
-#define SURFACE_STATE_PADDED_SIZE_0_GEN7 ALIGN(sizeof(struct gen7_surface_state), 32)
-#define SURFACE_STATE_PADDED_SIZE_1_GEN7 ALIGN(sizeof(struct gen7_surface_state2), 32)
-#define SURFACE_STATE_PADDED_SIZE_GEN7 MAX(SURFACE_STATE_PADDED_SIZE_0_GEN7, SURFACE_STATE_PADDED_SIZE_1_GEN7)
-
-#define SURFACE_STATE_PADDED_SIZE_0_GEN6 ALIGN(sizeof(struct i965_surface_state), 32)
-#define SURFACE_STATE_PADDED_SIZE_1_GEN6 ALIGN(sizeof(struct i965_surface_state2), 32)
-#define SURFACE_STATE_PADDED_SIZE_GEN6 MAX(SURFACE_STATE_PADDED_SIZE_0_GEN6, SURFACE_STATE_PADDED_SIZE_1_GEN6)
-
-#define SURFACE_STATE_PADDED_SIZE_0_GEN8 ALIGN(sizeof(struct gen8_surface_state), 32)
-#define SURFACE_STATE_PADDED_SIZE_1_GEN8 ALIGN(sizeof(struct gen8_surface_state2), 32)
-#define SURFACE_STATE_PADDED_SIZE_GEN8 MAX(SURFACE_STATE_PADDED_SIZE_0_GEN8, SURFACE_STATE_PADDED_SIZE_1_GEN8)
-
-#define SURFACE_STATE_PADDED_SIZE_0_GEN9 ALIGN(sizeof(struct gen9_surface_state), 32)
-#define SURFACE_STATE_PADDED_SIZE_1_GEN9 ALIGN(sizeof(struct gen9_surface_state2), 32)
-#define SURFACE_STATE_PADDED_SIZE_GEN9 MAX(SURFACE_STATE_PADDED_SIZE_0_GEN9, SURFACE_STATE_PADDED_SIZE_1_GEN9)
-
-#endif /* _I965_STRUCTS_H_ */
diff --git a/src/i965_vpp_avs.c b/src/i965_vpp_avs.c
deleted file mode 100644
index 58d0949..0000000
--- a/src/i965_vpp_avs.c
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
- * i965_vpp_avs.c - Adaptive Video Scaler (AVS) block
- *
- * Copyright (C) 2014 Intel Corporation
- * Author: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "sysdeps.h"
-#include <math.h>
-#include <va/va.h>
-#include "i965_vpp_avs.h"
-
-typedef void (*AVSGenCoeffsFunc)(float *coeffs, int num_coeffs, int phase,
- int num_phases, float f);
-
-/* Initializes all coefficients to zero */
-static void
-avs_init_coeffs(float *coeffs, int num_coeffs)
-{
-#if defined(__STDC_IEC_559__) && (__STDC_IEC_559__ > 0)
- memset(coeffs, 0, num_coeffs * sizeof(*coeffs));
-#else
- int i;
-
- for (i = 0; i < num_coeffs; i++)
- coeffs[i] = 0.0f;
-#endif
-}
-
-/* Computes the sinc(x) function */
-static float
-avs_sinc(float x)
-{
- if (x == 0.0f)
- return 1.0f;
- return sin(x * M_PI) / (x * M_PI);
-}
-
-/* Convolution kernel for linear interpolation */
-static float
-avs_kernel_linear(float x)
-{
- const float abs_x = fabsf(x);
-
- return abs_x < 1.0f ? 1 - abs_x : 0.0f;
-}
-
-/* Convolution kernel for Lanczos-based interpolation */
-static float
-avs_kernel_lanczos(float x, float a)
-{
- const float abs_x = fabsf(x);
-
- return abs_x < a ? avs_sinc(x) * avs_sinc(x / a) : 0.0f;
-}
-
-/* Truncates floating-point value towards an epsilon factor */
-static inline float
-avs_trunc_coeff(float x, float epsilon)
-{
- return rintf(x / epsilon) * epsilon;
-}
-
-/* Normalize coefficients for one sample/direction */
-static void
-avs_normalize_coeffs_1(float *coeffs, int num_coeffs, float epsilon)
-{
- float s, sum = 0.0;
- int i, c, r, r1;
-
- for (i = 0; i < num_coeffs; i++)
- sum += coeffs[i];
-
- if (sum < epsilon)
- return;
-
- s = 0.0;
- for (i = 0; i < num_coeffs; i++)
- s += (coeffs[i] = avs_trunc_coeff(coeffs[i] / sum, epsilon));
-
- /* Distribute the remaining bits, while allocating more to the center */
- c = num_coeffs/2;
- c = c - (coeffs[c - 1] > coeffs[c]);
-
- r = (1.0f - s) / epsilon;
- r1 = r / 4;
- if (coeffs[c + 1] == 0.0f)
- coeffs[c] += r * epsilon;
- else {
- coeffs[c] += (r - 2*r1) * epsilon;
- coeffs[c - 1] += r1 * epsilon;
- coeffs[c + 1] += r1 * epsilon;
- }
-}
-
-/* Normalize all coefficients so that their sum yields 1.0f */
-static void
-avs_normalize_coeffs(AVSCoeffs *coeffs, const AVSConfig *config)
-{
- avs_normalize_coeffs_1(coeffs->y_k_h, config->num_luma_coeffs,
- config->coeff_epsilon);
- avs_normalize_coeffs_1(coeffs->y_k_v, config->num_luma_coeffs,
- config->coeff_epsilon);
- avs_normalize_coeffs_1(coeffs->uv_k_h, config->num_chroma_coeffs,
- config->coeff_epsilon);
- avs_normalize_coeffs_1(coeffs->uv_k_v, config->num_chroma_coeffs,
- config->coeff_epsilon);
-}
-
-/* Validate coefficients for one sample/direction */
-static bool
-avs_validate_coeffs_1(float *coeffs, int num_coeffs, const float *min_coeffs,
- const float *max_coeffs)
-{
- int i;
-
- for (i = 0; i < num_coeffs; i++) {
- if (coeffs[i] < min_coeffs[i] || coeffs[i] > max_coeffs[i])
- return false;
- }
- return true;
-}
-
-/* Validate coefficients wrt. the supplied range in config */
-static bool
-avs_validate_coeffs(AVSCoeffs *coeffs, const AVSConfig *config)
-{
- const AVSCoeffs * const min_coeffs = &config->coeff_range.lower_bound;
- const AVSCoeffs * const max_coeffs = &config->coeff_range.upper_bound;
-
- return avs_validate_coeffs_1(coeffs->y_k_h, config->num_luma_coeffs,
- min_coeffs->y_k_h, max_coeffs->y_k_h) &&
- avs_validate_coeffs_1(coeffs->y_k_v, config->num_luma_coeffs,
- min_coeffs->y_k_v, max_coeffs->y_k_v) &&
- avs_validate_coeffs_1(coeffs->uv_k_h, config->num_chroma_coeffs,
- min_coeffs->uv_k_h, max_coeffs->uv_k_h) &&
- avs_validate_coeffs_1(coeffs->uv_k_v, config->num_chroma_coeffs,
- min_coeffs->uv_k_v, max_coeffs->uv_k_v);
-}
-
-/* Generate coefficients for default quality (bilinear) */
-static void
-avs_gen_coeffs_linear(float *coeffs, int num_coeffs, int phase, int num_phases,
- float f)
-{
- const int c = num_coeffs/2 - 1;
- const float p = (float)phase / (num_phases*2);
-
- avs_init_coeffs(coeffs, num_coeffs);
- coeffs[c] = avs_kernel_linear(p);
- coeffs[c + 1] = avs_kernel_linear(p - 1);
-}
-
-/* Generate coefficients for high quality (lanczos) */
-static void
-avs_gen_coeffs_lanczos(float *coeffs, int num_coeffs, int phase, int num_phases,
- float f)
-{
- const int c = num_coeffs/2 - 1;
- const int l = num_coeffs > 4 ? 3 : 2;
- const float p = (float)phase / (num_phases*2);
- int i;
-
- if (f > 1.0f)
- f = 1.0f;
- for (i = 0; i < num_coeffs; i++)
- coeffs[i] = avs_kernel_lanczos((i - (c + p)) * f, l);
-}
-
-/* Generate coefficients with the supplied scaler */
-static bool
-avs_gen_coeffs(AVSState *avs, float sx, float sy, AVSGenCoeffsFunc gen_coeffs)
-{
- const AVSConfig * const config = avs->config;
- int i;
-
- for (i = 0; i <= config->num_phases; i++) {
- AVSCoeffs * const coeffs = &avs->coeffs[i];
-
- gen_coeffs(coeffs->y_k_h, config->num_luma_coeffs,
- i, config->num_phases, sx);
- gen_coeffs(coeffs->uv_k_h, config->num_chroma_coeffs,
- i, config->num_phases, sx);
- gen_coeffs(coeffs->y_k_v, config->num_luma_coeffs,
- i, config->num_phases, sy);
- gen_coeffs(coeffs->uv_k_v, config->num_chroma_coeffs,
- i, config->num_phases, sy);
-
- avs_normalize_coeffs(coeffs, config);
- if (!avs_validate_coeffs(coeffs, config))
- return false;
- }
- return true;
-}
-
-/* Initializes AVS state with the supplied configuration */
-void
-avs_init_state(AVSState *avs, const AVSConfig *config)
-{
- avs->config = config;
- avs->flags = 0;
- avs->scale_x = 0.0f;
- avs->scale_y = 0.0f;
-}
-
-/* Checks whether the AVS scaling parameters changed */
-static inline bool
-avs_params_changed(AVSState *avs, float sx, float sy, uint32_t flags)
-{
- if (avs->flags != flags)
- return true;
-
- if (flags >= VA_FILTER_SCALING_HQ) {
- if (avs->scale_x != sx || avs->scale_y != sy)
- return true;
- }
- else {
- if (avs->scale_x == 0.0f || avs->scale_y == 0.0f)
- return true;
- }
- return false;
-}
-
-/* Updates AVS coefficients for the supplied factors and quality level */
-bool
-avs_update_coefficients(AVSState *avs, float sx, float sy, uint32_t flags)
-{
- AVSGenCoeffsFunc gen_coeffs;
-
- flags &= VA_FILTER_SCALING_MASK;
- if (!avs_params_changed(avs, sx, sy, flags))
- return true;
-
- switch (flags) {
- case VA_FILTER_SCALING_HQ:
- gen_coeffs = avs_gen_coeffs_lanczos;
- break;
- default:
- gen_coeffs = avs_gen_coeffs_linear;
- break;
- }
- if (!avs_gen_coeffs(avs, sx, sy, gen_coeffs)) {
- assert(0 && "invalid set of coefficients generated");
- return false;
- }
-
- avs->flags = flags;
- avs->scale_x = sx;
- avs->scale_y = sy;
- return true;
-}
diff --git a/src/i965_vpp_avs.h b/src/i965_vpp_avs.h
deleted file mode 100644
index 01616bd..0000000
--- a/src/i965_vpp_avs.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * i965_vpp_avs.h - Adaptive Video Scaler (AVS) block
- *
- * Copyright (C) 2014 Intel Corporation
- * Author: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef I965_VPP_AVS_H
-#define I965_VPP_AVS_H
-
-#include <stdint.h>
-#include <stdbool.h>
-
-/** Maximum number of phases for the sharp filter */
-#define AVS_MAX_PHASES 32
-
-/** Maximum number of coefficients for luma samples */
-#define AVS_MAX_LUMA_COEFFS 8
-
-/** Maximum number of coefficients for chroma samples */
-#define AVS_MAX_CHROMA_COEFFS 4
-
-typedef struct avs_coeffs AVSCoeffs;
-typedef struct avs_coeffs_range AVSCoeffsRange;
-typedef struct avs_config AVSConfig;
-typedef struct avs_state AVSState;
-
-/** AVS coefficients for one phase */
-struct avs_coeffs {
- /** Coefficients for luma samples on the X-axis (horizontal) */
- float y_k_h[AVS_MAX_LUMA_COEFFS];
- /** Coefficients for luma samples on the Y-axis (vertical) */
- float y_k_v[AVS_MAX_LUMA_COEFFS];
- /** Coefficients for chroma samples on the X-axis (horizontal) */
- float uv_k_h[AVS_MAX_CHROMA_COEFFS];
- /** Coefficients for chroma samples on the Y-axis (vertical) */
- float uv_k_v[AVS_MAX_CHROMA_COEFFS];
-};
-
-/** AVS coefficients range used for validation */
-struct avs_coeffs_range {
- /** Lower bound for all coefficients */
- AVSCoeffs lower_bound;
- /** Upper bound for all coefficients */
- AVSCoeffs upper_bound;
-};
-
-/** Static configuration (per-generation) */
-struct avs_config {
- /** Number of bits used for the fractional part of a coefficient */
- int coeff_frac_bits;
- /** The smallest float that could be represented as a coefficient */
- float coeff_epsilon;
- /** Coefficients range */
- AVSCoeffsRange coeff_range;
- /** Number of phases for the sharp filter */
- int num_phases;
- /** Number of coefficients for luma samples */
- int num_luma_coeffs;
- /** Number of coefficients for chroma samples */
- int num_chroma_coeffs;
-};
-
-/** AVS block state */
-struct avs_state {
- /** Per-generation configuration parameters */
- const AVSConfig *config;
- /** Scaling flags */
- uint32_t flags;
- /** Scaling factor on the X-axis (horizontal) */
- float scale_x;
- /** Scaling factor on the Y-axis (vertical) */
- float scale_y;
- /** Coefficients for the polyphase scaler */
- AVSCoeffs coeffs[AVS_MAX_PHASES + 1];
-};
-
-/** Initializes AVS state with the supplied configuration */
-void
-avs_init_state(AVSState *avs, const AVSConfig *config);
-
-/** Updates AVS coefficients for the supplied factors and quality level */
-bool
-avs_update_coefficients(AVSState *avs, float sx, float sy, uint32_t flags);
-
-/** Checks whether AVS is needed, e.g. if high-quality scaling is requested */
-static inline bool
-avs_is_needed(uint32_t flags)
-{
- return ((flags & VA_FILTER_SCALING_MASK) >= VA_FILTER_SCALING_HQ);
-}
-
-#endif /* I965_VPP_AVS_H */
diff --git a/src/i965_yuv_coefs.c b/src/i965_yuv_coefs.c
deleted file mode 100644
index db817b4..0000000
--- a/src/i965_yuv_coefs.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright © 2015 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "i965_yuv_coefs.h"
-
-static const float yuv_to_rgb_bt601[] = {
- 1.164, 0, 1.596, -0.06275,
- 1.164, -0.392, -0.813, -0.50196,
- 1.164, 2.017, 0, -0.50196,
-};
-
-static const float yuv_to_rgb_bt709[] = {
- 1.164, 0, 1.793, -0.06275,
- 1.164, -0.213, -0.533, -0.50196,
- 1.164, 2.112, 0, -0.50196,
-};
-
-static const float yuv_to_rgb_smpte_240[] = {
- 1.164, 0, 1.794, -0.06275,
- 1.164, -0.258, -0.5425, -0.50196,
- 1.164, 2.078, 0, -0.50196,
-};
-
-VAProcColorStandardType i915_filter_to_color_standard (unsigned int filter) {
- switch (filter & VA_SRC_COLOR_MASK) {
- case VA_SRC_BT601:
- return VAProcColorStandardBT601;
- case VA_SRC_BT709:
- return VAProcColorStandardBT709;
- case VA_SRC_SMPTE_240:
- return VAProcColorStandardSMPTE240M;
- default:
- return VAProcColorStandardBT601;
- }
-}
-
-const float *i915_color_standard_to_coefs (VAProcColorStandardType standard, size_t *length) {
- switch (standard) {
- case VAProcColorStandardBT601:
- *length = sizeof(yuv_to_rgb_bt601);
- return yuv_to_rgb_bt601;
- case VAProcColorStandardBT709:
- *length = sizeof(yuv_to_rgb_bt709);
- return yuv_to_rgb_bt709;
- case VAProcColorStandardSMPTE240M:
- *length = sizeof(yuv_to_rgb_smpte_240);
- return yuv_to_rgb_smpte_240;
- default:
- *length = sizeof(yuv_to_rgb_bt601);
- return yuv_to_rgb_bt601;
- }
-}
diff --git a/src/i965_yuv_coefs.h b/src/i965_yuv_coefs.h
deleted file mode 100644
index f58f903..0000000
--- a/src/i965_yuv_coefs.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright © 2015 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef __I965_YUV_COEFS_H__
-#define __I965_YUV_COEFS_H__
-
-#include "sysdeps.h"
-
-#include <va/va.h>
-#include <va/va_vpp.h>
-
-VAProcColorStandardType i915_filter_to_color_standard (unsigned int filter);
-const float *i915_color_standard_to_coefs (VAProcColorStandardType standard, size_t *length);
-
-#endif /* __I965_YUV_COEFS_H__ */
diff --git a/src/intel_batchbuffer.c b/src/intel_batchbuffer.c
deleted file mode 100644
index a145e05..0000000
--- a/src/intel_batchbuffer.c
+++ /dev/null
@@ -1,446 +0,0 @@
-/**************************************************************************
- *
- * Copyright 2006 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- **************************************************************************/
-
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include "intel_batchbuffer.h"
-
-#define MAX_BATCH_SIZE 0x400000
-
-
-#define LOCAL_I915_EXEC_BSD_MASK (3<<13)
-#define LOCAL_I915_EXEC_BSD_DEFAULT (0<<13) /* default ping-pong mode */
-#define LOCAL_I915_EXEC_BSD_RING0 (1<<13)
-#define LOCAL_I915_EXEC_BSD_RING1 (2<<13)
-
-static void
-intel_batchbuffer_reset(struct intel_batchbuffer *batch, int buffer_size)
-{
- struct intel_driver_data *intel = batch->intel;
- int batch_size = buffer_size;
- int ring_flag;
-
- ring_flag = batch->flag & I915_EXEC_RING_MASK;
-
- assert(ring_flag == I915_EXEC_RENDER ||
- ring_flag == I915_EXEC_BLT ||
- ring_flag == I915_EXEC_BSD ||
- ring_flag == I915_EXEC_VEBOX);
-
- dri_bo_unreference(batch->buffer);
- batch->buffer = dri_bo_alloc(intel->bufmgr,
- "batch buffer",
- batch_size,
- 0x1000);
- assert(batch->buffer);
- dri_bo_map(batch->buffer, 1);
- assert(batch->buffer->virtual);
- batch->map = batch->buffer->virtual;
- batch->size = batch_size;
- batch->ptr = batch->map;
- batch->atomic = 0;
-}
-
-static unsigned int
-intel_batchbuffer_space(struct intel_batchbuffer *batch)
-{
- return (batch->size - BATCH_RESERVED) - (batch->ptr - batch->map);
-}
-
-
-struct intel_batchbuffer *
-intel_batchbuffer_new(struct intel_driver_data *intel, int flag, int buffer_size)
-{
- struct intel_batchbuffer *batch = calloc(1, sizeof(*batch));
- int ring_flag;
-
- ring_flag = flag & I915_EXEC_RING_MASK;
- assert(ring_flag == I915_EXEC_RENDER ||
- ring_flag == I915_EXEC_BSD ||
- ring_flag == I915_EXEC_BLT ||
- ring_flag == I915_EXEC_VEBOX);
-
- if (!buffer_size || buffer_size < BATCH_SIZE) {
- buffer_size = BATCH_SIZE;
- }
-
- /* the buffer size can't exceed 4M */
- if (buffer_size > MAX_BATCH_SIZE) {
- buffer_size = MAX_BATCH_SIZE;
- }
-
- assert(batch);
- batch->intel = intel;
- batch->flag = flag;
- batch->run = drm_intel_bo_mrb_exec;
-
- if (IS_GEN6(intel->device_info) &&
- flag == I915_EXEC_RENDER)
- batch->wa_render_bo = dri_bo_alloc(intel->bufmgr,
- "wa scratch",
- 4096,
- 4096);
- else
- batch->wa_render_bo = NULL;
-
- intel_batchbuffer_reset(batch, buffer_size);
-
- return batch;
-}
-
-void intel_batchbuffer_free(struct intel_batchbuffer *batch)
-{
- if (batch->map) {
- dri_bo_unmap(batch->buffer);
- batch->map = NULL;
- }
-
- dri_bo_unreference(batch->buffer);
- dri_bo_unreference(batch->wa_render_bo);
- free(batch);
-}
-
-void
-intel_batchbuffer_flush(struct intel_batchbuffer *batch)
-{
- unsigned int used = batch->ptr - batch->map;
-
- if (used == 0) {
- return;
- }
-
- if ((used & 4) == 0) {
- *(unsigned int*)batch->ptr = 0;
- batch->ptr += 4;
- }
-
- *(unsigned int*)batch->ptr = MI_BATCH_BUFFER_END;
- batch->ptr += 4;
- dri_bo_unmap(batch->buffer);
- used = batch->ptr - batch->map;
- batch->run(batch->buffer, used, 0, 0, 0, batch->flag);
- intel_batchbuffer_reset(batch, batch->size);
-}
-
-void
-intel_batchbuffer_emit_dword(struct intel_batchbuffer *batch, unsigned int x)
-{
- assert(intel_batchbuffer_space(batch) >= 4);
- *(unsigned int *)batch->ptr = x;
- batch->ptr += 4;
-}
-
-void
-intel_batchbuffer_emit_reloc(struct intel_batchbuffer *batch, dri_bo *bo,
- uint32_t read_domains, uint32_t write_domains,
- uint32_t delta)
-{
- assert(batch->ptr - batch->map < batch->size);
- dri_bo_emit_reloc(batch->buffer, read_domains, write_domains,
- delta, batch->ptr - batch->map, bo);
- intel_batchbuffer_emit_dword(batch, bo->offset + delta);
-}
-
-void
-intel_batchbuffer_emit_reloc64(struct intel_batchbuffer *batch, dri_bo *bo,
- uint32_t read_domains, uint32_t write_domains,
- uint32_t delta)
-{
- assert(batch->ptr - batch->map < batch->size);
- dri_bo_emit_reloc(batch->buffer, read_domains, write_domains,
- delta, batch->ptr - batch->map, bo);
-
- /* Using the old buffer offset, write in what the right data would be, in
- * case the buffer doesn't move and we can short-circuit the relocation
- * processing in the kernel.
- */
- uint64_t offset = bo->offset64 + delta;
- intel_batchbuffer_emit_dword(batch, offset);
- intel_batchbuffer_emit_dword(batch, offset >> 32);
-}
-
-void
-intel_batchbuffer_require_space(struct intel_batchbuffer *batch,
- unsigned int size)
-{
- assert(size < batch->size - 8);
-
- if (intel_batchbuffer_space(batch) < size) {
- intel_batchbuffer_flush(batch);
- }
-}
-
-void
-intel_batchbuffer_data(struct intel_batchbuffer *batch,
- void *data,
- unsigned int size)
-{
- assert((size & 3) == 0);
- intel_batchbuffer_require_space(batch, size);
-
- assert(batch->ptr);
- memcpy(batch->ptr, data, size);
- batch->ptr += size;
-}
-
-void
-intel_batchbuffer_emit_mi_flush(struct intel_batchbuffer *batch)
-{
- struct intel_driver_data *intel = batch->intel;
- int ring_flag;
-
- ring_flag = batch->flag & I915_EXEC_RING_MASK;
-
- if (IS_GEN6(intel->device_info) ||
- IS_GEN7(intel->device_info) ||
- IS_GEN8(intel->device_info) ||
- IS_GEN9(intel->device_info)) {
- if (ring_flag == I915_EXEC_RENDER) {
- if (IS_GEN8(intel->device_info) || IS_GEN9(intel->device_info)) {
- BEGIN_BATCH(batch, 6);
- OUT_BATCH(batch, CMD_PIPE_CONTROL | (6 - 2));
-
- OUT_BATCH(batch,
- CMD_PIPE_CONTROL_CS_STALL |
- CMD_PIPE_CONTROL_WC_FLUSH |
- CMD_PIPE_CONTROL_TC_FLUSH |
- CMD_PIPE_CONTROL_DC_FLUSH |
- CMD_PIPE_CONTROL_NOWRITE);
- OUT_BATCH(batch, 0); /* write address */
- OUT_BATCH(batch, 0);
- OUT_BATCH(batch, 0); /* write data */
- OUT_BATCH(batch, 0);
- ADVANCE_BATCH(batch);
- } else if (IS_GEN6(intel->device_info)) {
- assert(batch->wa_render_bo);
-
- BEGIN_BATCH(batch, 4 * 3);
-
- OUT_BATCH(batch, CMD_PIPE_CONTROL | (4 - 2));
- OUT_BATCH(batch,
- CMD_PIPE_CONTROL_CS_STALL |
- CMD_PIPE_CONTROL_STALL_AT_SCOREBOARD);
- OUT_BATCH(batch, 0); /* address */
- OUT_BATCH(batch, 0); /* write data */
-
- OUT_BATCH(batch, CMD_PIPE_CONTROL | (4 - 2));
- OUT_BATCH(batch, CMD_PIPE_CONTROL_WRITE_QWORD);
- OUT_RELOC(batch,
- batch->wa_render_bo,
- I915_GEM_DOMAIN_INSTRUCTION,
- I915_GEM_DOMAIN_INSTRUCTION,
- 0);
- OUT_BATCH(batch, 0); /* write data */
-
- /* now finally the _real flush */
- OUT_BATCH(batch, CMD_PIPE_CONTROL | (4 - 2));
- OUT_BATCH(batch,
- CMD_PIPE_CONTROL_WC_FLUSH |
- CMD_PIPE_CONTROL_TC_FLUSH |
- CMD_PIPE_CONTROL_NOWRITE);
- OUT_BATCH(batch, 0); /* write address */
- OUT_BATCH(batch, 0); /* write data */
- ADVANCE_BATCH(batch);
- } else {
- BEGIN_BATCH(batch, 4);
- OUT_BATCH(batch, CMD_PIPE_CONTROL | (4 - 2));
-
- OUT_BATCH(batch,
- CMD_PIPE_CONTROL_WC_FLUSH |
- CMD_PIPE_CONTROL_TC_FLUSH |
- CMD_PIPE_CONTROL_DC_FLUSH |
- CMD_PIPE_CONTROL_NOWRITE);
- OUT_BATCH(batch, 0); /* write address */
- OUT_BATCH(batch, 0); /* write data */
- ADVANCE_BATCH(batch);
- }
-
- } else {
- if (ring_flag == I915_EXEC_BLT) {
- BEGIN_BLT_BATCH(batch, 4);
- OUT_BLT_BATCH(batch, MI_FLUSH_DW);
- OUT_BLT_BATCH(batch, 0);
- OUT_BLT_BATCH(batch, 0);
- OUT_BLT_BATCH(batch, 0);
- ADVANCE_BLT_BATCH(batch);
- }else if (ring_flag == I915_EXEC_VEBOX) {
- BEGIN_VEB_BATCH(batch, 4);
- OUT_VEB_BATCH(batch, MI_FLUSH_DW);
- OUT_VEB_BATCH(batch, 0);
- OUT_VEB_BATCH(batch, 0);
- OUT_VEB_BATCH(batch, 0);
- ADVANCE_VEB_BATCH(batch);
- } else {
- assert(ring_flag == I915_EXEC_BSD);
- BEGIN_BCS_BATCH(batch, 4);
- OUT_BCS_BATCH(batch, MI_FLUSH_DW | MI_FLUSH_DW_VIDEO_PIPELINE_CACHE_INVALIDATE);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- ADVANCE_BCS_BATCH(batch);
- }
- }
- } else {
- if (ring_flag == I915_EXEC_RENDER) {
- BEGIN_BATCH(batch, 1);
- OUT_BATCH(batch, MI_FLUSH | MI_FLUSH_STATE_INSTRUCTION_CACHE_INVALIDATE);
- ADVANCE_BATCH(batch);
- } else {
- assert(ring_flag == I915_EXEC_BSD);
- BEGIN_BCS_BATCH(batch, 1);
- OUT_BCS_BATCH(batch, MI_FLUSH | MI_FLUSH_STATE_INSTRUCTION_CACHE_INVALIDATE);
- ADVANCE_BCS_BATCH(batch);
- }
- }
-}
-
-void
-intel_batchbuffer_begin_batch(struct intel_batchbuffer *batch, int total)
-{
- batch->emit_total = total * 4;
- batch->emit_start = batch->ptr;
-}
-
-void
-intel_batchbuffer_advance_batch(struct intel_batchbuffer *batch)
-{
- assert(batch->emit_total == (batch->ptr - batch->emit_start));
-}
-
-void
-intel_batchbuffer_check_batchbuffer_flag(struct intel_batchbuffer *batch, int flag)
-{
- int ring_flag;
-
- ring_flag = flag & I915_EXEC_RING_MASK;
-
- if (ring_flag != I915_EXEC_RENDER &&
- ring_flag != I915_EXEC_BLT &&
- ring_flag != I915_EXEC_BSD &&
- ring_flag != I915_EXEC_VEBOX)
- return;
-
- if (batch->flag == flag)
- return;
-
- intel_batchbuffer_flush(batch);
- batch->flag = flag;
-}
-
-int
-intel_batchbuffer_check_free_space(struct intel_batchbuffer *batch, int size)
-{
- return intel_batchbuffer_space(batch) >= size;
-}
-
-static void
-intel_batchbuffer_start_atomic_helper(struct intel_batchbuffer *batch,
- int flag,
- unsigned int size)
-{
- assert(!batch->atomic);
- intel_batchbuffer_check_batchbuffer_flag(batch, flag);
- intel_batchbuffer_require_space(batch, size);
- batch->atomic = 1;
-}
-
-void
-intel_batchbuffer_start_atomic(struct intel_batchbuffer *batch, unsigned int size)
-{
- intel_batchbuffer_start_atomic_helper(batch, I915_EXEC_RENDER, size);
-}
-
-void
-intel_batchbuffer_start_atomic_blt(struct intel_batchbuffer *batch, unsigned int size)
-{
- intel_batchbuffer_start_atomic_helper(batch, I915_EXEC_BLT, size);
-}
-
-void
-intel_batchbuffer_start_atomic_bcs(struct intel_batchbuffer *batch, unsigned int size)
-{
- intel_batchbuffer_start_atomic_helper(batch, I915_EXEC_BSD, size);
-}
-
-void
-intel_batchbuffer_start_atomic_veb(struct intel_batchbuffer *batch, unsigned int size)
-{
- intel_batchbuffer_start_atomic_helper(batch, I915_EXEC_VEBOX, size);
-}
-
-void intel_batchbuffer_start_atomic_bcs_override(struct intel_batchbuffer *batch, unsigned int size,
- bsd_ring_flag override_flag)
-{
- uint32_t ring_flag;
-
- switch(override_flag) {
- case BSD_RING0:
- ring_flag = I915_EXEC_BSD + LOCAL_I915_EXEC_BSD_RING0;
- break;
- case BSD_RING1:
- ring_flag = I915_EXEC_BSD + LOCAL_I915_EXEC_BSD_RING1;
- break;
- default:
- ring_flag = I915_EXEC_BSD + LOCAL_I915_EXEC_BSD_DEFAULT;
- break;
- }
- intel_batchbuffer_start_atomic_helper(batch, ring_flag, size);
-}
-
-
-void
-intel_batchbuffer_end_atomic(struct intel_batchbuffer *batch)
-{
- assert(batch->atomic);
- batch->atomic = 0;
-}
-
-int
-intel_batchbuffer_used_size(struct intel_batchbuffer *batch)
-{
- return batch->ptr - batch->map;
-}
-
-void
-intel_batchbuffer_align(struct intel_batchbuffer *batch, unsigned int alignedment)
-{
- int used = batch->ptr - batch->map;
- int pad_size;
-
- assert((alignedment & 3) == 0);
- pad_size = ALIGN(used, alignedment) - used;
- assert((pad_size & 3) == 0);
- assert(intel_batchbuffer_space(batch) >= pad_size);
-
- while (pad_size >= 4) {
- intel_batchbuffer_emit_dword(batch, 0);
- pad_size -= 4;
- }
-}
-
diff --git a/src/intel_batchbuffer.h b/src/intel_batchbuffer.h
deleted file mode 100644
index 01ec913..0000000
--- a/src/intel_batchbuffer.h
+++ /dev/null
@@ -1,121 +0,0 @@
-#ifndef _INTEL_BATCHBUFFER_H_
-#define _INTEL_BATCHBUFFER_H_
-
-#include <xf86drm.h>
-#include <drm.h>
-#include <i915_drm.h>
-#include <intel_bufmgr.h>
-
-#include "intel_driver.h"
-
-struct intel_batchbuffer
-{
- struct intel_driver_data *intel;
- dri_bo *buffer;
- unsigned int size;
- unsigned char *map;
- unsigned char *ptr;
- int atomic;
- int flag;
-
- int emit_total;
- unsigned char *emit_start;
-
- int (*run)(drm_intel_bo *bo, int used,
- drm_clip_rect_t *cliprects, int num_cliprects,
- int DR4, unsigned int ring_flag);
-
- /* Used for Sandybdrige workaround */
- dri_bo *wa_render_bo;
-};
-
-struct intel_batchbuffer *intel_batchbuffer_new(struct intel_driver_data *intel, int flag, int buffer_size);
-void intel_batchbuffer_free(struct intel_batchbuffer *batch);
-void intel_batchbuffer_start_atomic(struct intel_batchbuffer *batch, unsigned int size);
-void intel_batchbuffer_start_atomic_bcs(struct intel_batchbuffer *batch, unsigned int size);
-void intel_batchbuffer_start_atomic_blt(struct intel_batchbuffer *batch, unsigned int size);
-void intel_batchbuffer_start_atomic_veb(struct intel_batchbuffer *batch, unsigned int size);
-void intel_batchbuffer_end_atomic(struct intel_batchbuffer *batch);
-void intel_batchbuffer_emit_dword(struct intel_batchbuffer *batch, unsigned int x);
-void intel_batchbuffer_emit_reloc(struct intel_batchbuffer *batch, dri_bo *bo,
- uint32_t read_domains, uint32_t write_domains,
- uint32_t delta);
-void intel_batchbuffer_emit_reloc64(struct intel_batchbuffer *batch, dri_bo *bo,
- uint32_t read_domains, uint32_t write_domains,
- uint32_t delta);
-void intel_batchbuffer_require_space(struct intel_batchbuffer *batch, unsigned int size);
-void intel_batchbuffer_data(struct intel_batchbuffer *batch, void *data, unsigned int size);
-void intel_batchbuffer_emit_mi_flush(struct intel_batchbuffer *batch);
-void intel_batchbuffer_flush(struct intel_batchbuffer *batch);
-void intel_batchbuffer_begin_batch(struct intel_batchbuffer *batch, int total);
-void intel_batchbuffer_advance_batch(struct intel_batchbuffer *batch);
-void intel_batchbuffer_check_batchbuffer_flag(struct intel_batchbuffer *batch, int flag);
-int intel_batchbuffer_check_free_space(struct intel_batchbuffer *batch, int size);
-int intel_batchbuffer_used_size(struct intel_batchbuffer *batch);
-void intel_batchbuffer_align(struct intel_batchbuffer *batch, unsigned int alignedment);
-
-typedef enum {
- BSD_DEFAULT,
- BSD_RING0,
- BSD_RING1,
-} bsd_ring_flag;
-
-void intel_batchbuffer_start_atomic_bcs_override(struct intel_batchbuffer *batch, unsigned int size,
- bsd_ring_flag override_flag);
-
-#define __BEGIN_BATCH(batch, n, f) do { \
- assert(f == (batch->flag & I915_EXEC_RING_MASK)); \
- intel_batchbuffer_check_batchbuffer_flag(batch, batch->flag); \
- intel_batchbuffer_require_space(batch, (n) * 4); \
- intel_batchbuffer_begin_batch(batch, (n)); \
- } while (0)
-
-#define __OUT_BATCH(batch, d) do { \
- intel_batchbuffer_emit_dword(batch, d); \
- } while (0)
-
-#define __OUT_RELOC(batch, bo, read_domains, write_domain, delta) do { \
- assert((delta) >= 0); \
- intel_batchbuffer_emit_reloc(batch, bo, \
- read_domains, write_domain, \
- delta); \
- } while (0)
-
-/* Handle 48-bit address relocations for Gen8+ */
-#define __OUT_RELOC64(batch, bo, read_domains, write_domain, delta) do { \
- intel_batchbuffer_emit_reloc64(batch, bo, \
- read_domains, write_domain, \
- delta); \
- } while (0)
-
-#define __ADVANCE_BATCH(batch) do { \
- intel_batchbuffer_advance_batch(batch); \
- } while (0)
-
-#define BEGIN_BATCH(batch, n) __BEGIN_BATCH(batch, n, I915_EXEC_RENDER)
-#define BEGIN_BLT_BATCH(batch, n) __BEGIN_BATCH(batch, n, I915_EXEC_BLT)
-#define BEGIN_BCS_BATCH(batch, n) __BEGIN_BATCH(batch, n, I915_EXEC_BSD)
-#define BEGIN_VEB_BATCH(batch, n) __BEGIN_BATCH(batch, n, I915_EXEC_VEBOX)
-
-#define OUT_BATCH(batch, d) __OUT_BATCH(batch, d)
-#define OUT_BLT_BATCH(batch, d) __OUT_BATCH(batch, d)
-#define OUT_BCS_BATCH(batch, d) __OUT_BATCH(batch, d)
-#define OUT_VEB_BATCH(batch, d) __OUT_BATCH(batch, d)
-
-#define OUT_RELOC(batch, bo, read_domains, write_domain, delta) \
- __OUT_RELOC(batch, bo, read_domains, write_domain, delta)
-#define OUT_BLT_RELOC(batch, bo, read_domains, write_domain, delta) \
- __OUT_RELOC(batch, bo, read_domains, write_domain, delta)
-#define OUT_BCS_RELOC(batch, bo, read_domains, write_domain, delta) \
- __OUT_RELOC(batch, bo, read_domains, write_domain, delta)
-#define OUT_RELOC64(batch, bo, read_domains, write_domain, delta) \
- __OUT_RELOC64(batch, bo, read_domains, write_domain, delta)
-#define OUT_BCS_RELOC64(batch, bo, read_domains, write_domain, delta) \
- __OUT_RELOC64(batch, bo, read_domains, write_domain, delta)
-
-#define ADVANCE_BATCH(batch) __ADVANCE_BATCH(batch)
-#define ADVANCE_BLT_BATCH(batch) __ADVANCE_BATCH(batch)
-#define ADVANCE_BCS_BATCH(batch) __ADVANCE_BATCH(batch)
-#define ADVANCE_VEB_BATCH(batch) __ADVANCE_BATCH(batch)
-
-#endif /* _INTEL_BATCHBUFFER_H_ */
diff --git a/src/intel_batchbuffer_dump.c b/src/intel_batchbuffer_dump.c
deleted file mode 100644
index 1953b22..0000000
--- a/src/intel_batchbuffer_dump.c
+++ /dev/null
@@ -1,775 +0,0 @@
-#include <stdio.h>
-#include <stdarg.h>
-#include <string.h>
-#include <inttypes.h>
-
-#include "intel_driver.h"
-#include "intel_batchbuffer_dump.h"
-
-#ifdef I965_DEBUG
-
-#define BUFFER_FAIL(_count, _len, _name) do { \
- fprintf(gout, "Buffer size too small in %s (%d < %d)\n", \
- (_name), (_count), (_len)); \
- (*failures)++; \
- return count; \
-} while (0)
-
-static FILE *gout;
-
-static void
-instr_out(unsigned int *data, unsigned int offset, unsigned int index, char *fmt, ...)
-{
- va_list va;
-
- fprintf(gout, "0x%08x: 0x%08x:%s ", offset + index * 4, data[index],
- index == 0 ? "" : " ");
- va_start(va, fmt);
- vfprintf(gout, fmt, va);
- va_end(va);
-}
-
-
-static int
-dump_mi(unsigned int *data, unsigned int offset, int count, unsigned int device, int *failures)
-{
- unsigned int opcode;
- int length, i;
-
- struct {
- unsigned int opcode;
- int mask_length;
- int min_len;
- int max_len;
- char *name;
- } mi_commands[] = {
- { 0x00, 0, 1, 1, "MI_NOOP" },
- { 0x04, 0, 1, 1, "MI_FLUSH" },
- { 0x0a, 0, 1, 1, "MI_BATCH_BUFFER_END" },
- { 0x26, 0x3f, 4, 5, "MI_FLUSH_DW" },
- };
-
- opcode = ((data[0] & MASK_MI_OPCODE) >> SHIFT_MI_OPCODE);
-
- for (i = 0; i < sizeof(mi_commands) / sizeof(mi_commands[0]); i++) {
- if (opcode == mi_commands[i].opcode) {
- int index;
-
- length = 1;
- instr_out(data, offset, 0, "%s\n", mi_commands[i].name);
-
- if (mi_commands[i].max_len > 1) {
- length = (data[0] & mi_commands[i].mask_length) + 2;
-
- if (length < mi_commands[i].min_len ||
- length > mi_commands[i].max_len) {
- fprintf(gout, "Bad length (%d) in %s, [%d, %d]\n",
- length, mi_commands[i].name,
- mi_commands[i].min_len,
- mi_commands[i].max_len);
- }
- }
-
- for (index = 1; index < length; index++) {
- if (index >= count)
- BUFFER_FAIL(count, length, mi_commands[i].name);
-
- instr_out(data, offset, index, "dword %d\n", index);
- }
-
- return length;
- }
- }
-
- instr_out(data, offset, 0, "UNKNOWN MI COMMAND\n");
- (*failures)++;
- return 1;
-}
-
-static int
-dump_gfxpipe_3d(unsigned int *data, unsigned int offset, int count, unsigned int device, int *failures)
-{
- instr_out(data, offset, 0, "UNKNOWN 3D COMMAND\n");
- (*failures)++;
-
- return 1;
-}
-
-static void
-dump_avc_bsd_img_state(unsigned int *data, unsigned int offset, unsigned int device, int *failures)
-{
- int img_struct = ((data[3] >> 8) & 0x3);
-
- instr_out(data, offset, 1, "frame size: %d\n", (data[1] & 0xffff));
- instr_out(data, offset, 2, "width: %d, height: %d\n", (data[2] & 0xff), (data[2] >> 16) & 0xff);
- instr_out(data, offset, 3,
- "second_chroma_qp_offset: %d,"
- "chroma_qp_offset: %d,"
- "QM present flag: %d,"
- "image struct: %s,"
- "img_dec_fs_idc: %d,"
- "\n",
- (data[3] >> 24) & 0x1f,
- (data[3] >> 16) & 0x1f,
- (data[3] >> 10) & 0x1,
- (img_struct == 0) ? "frame" : (img_struct == 2) ? "invalid" : (img_struct == 1) ? "top field" : "bottom field",
- data[3] & 0xff);
- instr_out(data, offset, 4,
- "residual off: 0x%x,"
- "16MV: %d,"
- "chroma fmt: %d,"
- "CABAC: %d,"
- "non-ref: %d,"
- "constrained intra: %d,"
- "direct8x8: %d,"
- "trans8x8: %d,"
- "MB only: %d,"
- "MBAFF: %d,"
- "\n",
- (data[4] >> 24) & 0xff,
- (data[4] >> 12) & 0x1,
- (data[4] >> 10) & 0x3,
- (data[4] >> 7) & 0x1,
- (data[4] >> 6) & 0x1,
- (data[4] >> 5) & 0x1,
- (data[4] >> 4) & 0x1,
- (data[4] >> 3) & 0x1,
- (data[4] >> 2) & 0x1,
- (data[4] >> 1) & 0x1);
- instr_out(data, offset, 5, "AVC-IT Command Header\n");
-}
-
-static void
-dump_avc_bsd_qm_state(unsigned int *data, unsigned int offset, unsigned int device, int *failures)
-{
- unsigned int length = ((data[0] & MASK_GFXPIPE_LENGTH) >> SHIFT_GFXPIPE_LENGTH) + 2;
- int i;
-
- instr_out(data, offset, 1, "user default: %02x, QM list present: %02x\n",
- (data[1] >> 8) & 0xff, data[1] & 0xff);
-
- for (i = 2; i < length; i++) {
- instr_out(data, offset, i, "dword %d\n", i);
- }
-}
-
-static void
-dump_avc_bsd_slice_state(unsigned int *data, unsigned int offset, unsigned int device, int *failures)
-{
-
-}
-
-static void
-dump_avc_bsd_buf_base_state(unsigned int *data, unsigned int offset, unsigned int device, int *failures)
-{
- int i;
-
- instr_out(data, offset, 1, "BSD row store base address\n");
- instr_out(data, offset, 2, "MPR row store base address\n");
- instr_out(data, offset, 3, "AVC-IT command buffer base address\n");
- instr_out(data, offset, 4, "AVC-IT data buffer: 0x%08x, write offset: 0x%x\n",
- data[4] & 0xFFFFF000, data[4] & 0xFC0);
- instr_out(data, offset, 5, "ILDB data buffer\n");
-
- for (i = 6; i < 38; i++) {
- instr_out(data, offset, i, "Direct MV read base address for reference frame %d\n", i - 6);
- }
-
- instr_out(data, offset, 38, "direct mv wr0 top\n");
- instr_out(data, offset, 39, "direct mv wr0 bottom\n");
-
- for (i = 40; i < 74; i++) {
- instr_out(data, offset, i, "POC List %d\n", i - 40);
- }
-}
-
-static void
-dump_bsd_ind_obj_base_addr(unsigned int *data, unsigned int offset, unsigned int device, int *failures)
-{
- instr_out(data, offset, 1, "AVC indirect object base address\n");
- instr_out(data, offset, 2, "AVC Indirect Object Access Upper Bound\n");
-}
-
-static void
-dump_ironlake_avc_bsd_object(unsigned int *data, unsigned int offset, int *failures)
-{
- int slice_type = data[3] & 0xf;
- int i, is_phantom = ((data[1] & 0x3fffff) == 0);
-
- if (!is_phantom) {
- instr_out(data, offset, 1, "Encrypted: %d, bitsteam length: %d\n", data[1] >> 31, data[1] & 0x3fffff);
- instr_out(data, offset, 2, "Indirect Data Start Address: %d\n", data[2] & 0x1fffffff);
- instr_out(data, offset, 3, "%s Slice\n", slice_type == 0 ? "P" : slice_type == 1 ? "B" : "I");
- instr_out(data, offset, 4,
- "Num_Ref_Idx_L1: %d,"
- "Num_Ref_Idx_L0: %d,"
- "Log2WeightDenomChroma: %d,"
- "Log2WeightDenomLuma: %d"
- "\n",
- (data[4] >> 24) & 0x3f,
- (data[4] >> 16) & 0x3f,
- (data[4] >> 8) & 0x3,
- (data[4] >> 0) & 0x3);
- instr_out(data, offset, 5,
- "WeightedPredIdc: %d,"
- "DirectPredType: %d,"
- "DisableDeblockingFilter: %d,"
- "CabacInitIdc: %d,"
- "SliceQp: %d,"
- "SliceBetaOffsetDiv2: %d,"
- "SliceAlphaC0OffsetDiv2: %d"
- "\n",
- (data[5] >> 30) & 0x3,
- (data[5] >> 29) & 0x1,
- (data[5] >> 27) & 0x3,
- (data[5] >> 24) & 0x3,
- (data[5] >> 16) & 0x3f,
- (data[5] >> 8) & 0xf,
- (data[5] >> 0) & 0xf);
- instr_out(data, offset, 6,
- "Slice_MB_Start_Vert_Pos: %d,"
- "Slice_MB_Start_Hor_Pos: %d,"
- "Slice_Start_Mb_Num: %d"
- "\n",
- (data[6] >> 24) & 0xff,
- (data[6] >> 16) & 0xff,
- (data[6] >> 0) & 0x7fff);
- instr_out(data, offset, 7,
- "Fix_Prev_Mb_Skipped: %d,"
- "First_MB_Bit_Offset: %d"
- "\n",
- (data[7] >> 7) & 0x1,
- (data[7] >> 0) & 0x7);
-
- for (i = 8; i < 16; i++)
- instr_out(data, offset, i, "dword %d\n", i);
- } else {
- instr_out(data, offset, 1, "phantom slice\n");
-
- for (i = 2; i < 6; i++)
- instr_out(data, offset, i, "dword %d\n", i);
-
- instr_out(data, offset, 6,
- "Slice_Start_Mb_Num: %d"
- "\n",
- (data[6] >> 0) & 0x7fff);
-
- for (i = 7; i < 16; i++)
- instr_out(data, offset, i, "dword %d\n", i);
-
- }
-}
-
-static void
-dump_g4x_avc_bsd_object(unsigned int *data, unsigned int offset, int *failures)
-{
-
-}
-
-static void
-dump_avc_bsd_object(unsigned int *data, unsigned int offset, unsigned int device, int *failures)
-{
- if (IS_IRONLAKE(device))
- dump_ironlake_avc_bsd_object(data, offset, failures);
- else
- dump_g4x_avc_bsd_object(data, offset, failures);
-}
-
-static int
-dump_bsd_avc(unsigned int *data, unsigned int offset, int count, unsigned int device, int *failures)
-{
- unsigned int subopcode;
- int length, i;
-
- struct {
- unsigned int subopcode;
- int min_len;
- int max_len;
- char *name;
- void (*detail)(unsigned int *data, unsigned int offset, unsigned int device, int *failures);
- } avc_commands[] = {
- { 0x00, 0x06, 0x06, "AVC_BSD_IMG_STATE", dump_avc_bsd_img_state },
- { 0x01, 0x02, 0x3a, "AVC_BSD_QM_STATE", dump_avc_bsd_qm_state },
- { 0x02, 0x02, 0xd2, "AVC_BSD_SLICE_STATE", NULL },
- { 0x03, 0x4a, 0x4a, "AVC_BSD_BUF_BASE_STATE", dump_avc_bsd_buf_base_state },
- { 0x04, 0x03, 0x03, "BSD_IND_OBJ_BASE_ADDR", dump_bsd_ind_obj_base_addr },
- { 0x08, 0x08, 0x10, "AVC_BSD_OBJECT", dump_avc_bsd_object },
- };
-
- subopcode = ((data[0] & MASK_GFXPIPE_SUBOPCODE) >> SHIFT_GFXPIPE_SUBOPCODE);
-
- for (i = 0; i < sizeof(avc_commands) / sizeof(avc_commands[0]); i++) {
- if (subopcode == avc_commands[i].subopcode) {
- unsigned int index;
-
- length = (data[0] & MASK_GFXPIPE_LENGTH) >> SHIFT_GFXPIPE_LENGTH;
- length += 2;
- instr_out(data, offset, 0, "%s\n", avc_commands[i].name);
-
- if (length < avc_commands[i].min_len ||
- length > avc_commands[i].max_len) {
- fprintf(gout, "Bad length(%d) in %s [%d, %d]\n",
- length, avc_commands[i].name,
- avc_commands[i].min_len,
- avc_commands[i].max_len);
- }
-
- if (length - 1 >= count)
- BUFFER_FAIL(count, length, avc_commands[i].name);
-
- if (avc_commands[i].detail)
- avc_commands[i].detail(data, offset, device, failures);
- else {
- for (index = 1; index < length; index++)
- instr_out(data, offset, index, "dword %d\n", index);
- }
-
- return length;
- }
- }
-
- instr_out(data, offset, 0, "UNKNOWN AVC COMMAND\n");
- (*failures)++;
- return 1;
-}
-
-static int
-dump_gfxpipe_bsd(unsigned int *data, unsigned int offset, int count, unsigned int device, int *failures)
-{
- int length;
-
- switch ((data[0] & MASK_GFXPIPE_OPCODE) >> SHIFT_GFXPIPE_OPCODE) {
- case OPCODE_BSD_AVC:
- length = dump_bsd_avc(data, offset, count, device, failures);
- break;
-
- default:
- length = 1;
- (*failures)++;
- instr_out(data, offset, 0, "UNKNOWN BSD OPCODE\n");
- break;
- }
-
- return length;
-}
-
-static void
-dump_mfx_mode_select(unsigned int *data, unsigned int offset, unsigned int device, int *failures)
-{
- instr_out(data, offset, 1,
- "decoder mode: %d(%s),"
- "post deblocking output enable %d,"
- "pre deblocking output enable %d,"
- "codec select: %d(%s),"
- "standard select: %d(%s)"
- "\n",
- (data[1] >> 16) & 0x1, ((data[1] >> 16) & 0x1) ? "IT" : "VLD",
- (data[1] >> 9) & 0x1,
- (data[1] >> 8) & 0x1,
- (data[1] >> 4) & 0x1, ((data[1] >> 4) & 0x1) ? "Encode" : "Decode",
- (data[1] >> 0) & 0x3, ((data[1] >> 0) & 0x3) == 0 ? "MPEG2" :
- ((data[1] >> 0) & 0x3) == 1 ? "VC1" :
- ((data[1] >> 0) & 0x3) == 2 ? "AVC" : "Reserved");
- instr_out(data, offset, 2, "dword 02\n");
- instr_out(data, offset, 3, "dword 03\n");
-}
-
-static void
-dump_mfx_surface_state(unsigned int *data, unsigned int offset, unsigned int device, int *failures)
-{
- instr_out(data, offset, 1, "dword 01\n");
- instr_out(data, offset, 2, "dword 02\n");
- instr_out(data, offset, 3, "dword 03\n");
- instr_out(data, offset, 4, "dword 04\n");
- instr_out(data, offset, 5, "dword 05\n");
-}
-
-static void
-dump_mfx_pipe_buf_addr_state(unsigned int *data, unsigned int offset, unsigned int device, int *failures)
-{
- instr_out(data, offset, 1, "dword 01\n");
- instr_out(data, offset, 2, "dword 02\n");
- instr_out(data, offset, 3, "dword 03\n");
- instr_out(data, offset, 4, "dword 04\n");
- instr_out(data, offset, 5, "dword 05\n");
- instr_out(data, offset, 6, "dword 06\n");
- instr_out(data, offset, 7, "dword 07\n");
- instr_out(data, offset, 8, "dword 08\n");
- instr_out(data, offset, 9, "dword 09\n");
- instr_out(data, offset, 10, "dword 10\n");
- instr_out(data, offset, 11, "dword 11\n");
- instr_out(data, offset, 12, "dword 12\n");
- instr_out(data, offset, 13, "dword 13\n");
- instr_out(data, offset, 14, "dword 14\n");
- instr_out(data, offset, 15, "dword 15\n");
- instr_out(data, offset, 16, "dword 16\n");
- instr_out(data, offset, 17, "dword 17\n");
- instr_out(data, offset, 18, "dword 18\n");
- instr_out(data, offset, 19, "dword 19\n");
- instr_out(data, offset, 20, "dword 20\n");
- instr_out(data, offset, 21, "dword 21\n");
- instr_out(data, offset, 22, "dword 22\n");
- instr_out(data, offset, 24, "dword 23\n");
-}
-
-static void
-dump_mfx_ind_obj_base_addr_state(unsigned int *data, unsigned int offset, unsigned int device, int *failures)
-{
- instr_out(data, offset, 1, "dword 01\n");
- instr_out(data, offset, 2, "dword 02\n");
- instr_out(data, offset, 3, "dword 03\n");
- instr_out(data, offset, 4, "dword 04\n");
- instr_out(data, offset, 5, "dword 05\n");
- instr_out(data, offset, 6, "dword 06\n");
- instr_out(data, offset, 7, "dword 07\n");
- instr_out(data, offset, 8, "dword 08\n");
- instr_out(data, offset, 9, "dword 09\n");
- instr_out(data, offset, 10, "dword 10\n");
-}
-
-static void
-dump_mfx_bsp_buf_base_addr_state(unsigned int *data, unsigned int offset, unsigned int device, int *failures)
-{
- instr_out(data, offset, 1, "dword 01\n");
- instr_out(data, offset, 2, "dword 02\n");
- instr_out(data, offset, 3, "dword 03\n");
-}
-
-static void
-dump_mfx_aes_state(unsigned int *data, unsigned int offset, unsigned int device, int *failures)
-{
- instr_out(data, offset, 1, "dword 01\n");
- instr_out(data, offset, 2, "dword 02\n");
- instr_out(data, offset, 3, "dword 03\n");
- instr_out(data, offset, 4, "dword 04\n");
- instr_out(data, offset, 5, "dword 05\n");
- instr_out(data, offset, 6, "dword 06\n");
-}
-
-static void
-dump_mfx_state_pointer(unsigned int *data, unsigned int offset, unsigned int device, int *failures)
-{
- instr_out(data, offset, 1, "dword 01\n");
-}
-
-static int
-dump_mfx_common(unsigned int *data, unsigned int offset, int count, unsigned int device, int *failures)
-{
- unsigned int subopcode;
- int length, i;
-
- struct {
- unsigned int subopcode;
- int min_len;
- int max_len;
- char *name;
- void (*detail)(unsigned int *data, unsigned int offset, unsigned int device, int *failures);
- } mfx_common_commands[] = {
- { SUBOPCODE_MFX(0, 0), 0x04, 0x04, "MFX_PIPE_MODE_SELECT", dump_mfx_mode_select },
- { SUBOPCODE_MFX(0, 1), 0x06, 0x06, "MFX_SURFACE_STATE", dump_mfx_surface_state },
- { SUBOPCODE_MFX(0, 2), 0x18, 0x18, "MFX_PIPE_BUF_ADDR_STATE", dump_mfx_pipe_buf_addr_state },
- { SUBOPCODE_MFX(0, 3), 0x0b, 0x0b, "MFX_IND_OBJ_BASE_ADDR_STATE", dump_mfx_ind_obj_base_addr_state },
- { SUBOPCODE_MFX(0, 4), 0x04, 0x04, "MFX_BSP_BUF_BASE_ADDR_STATE", dump_mfx_bsp_buf_base_addr_state },
- { SUBOPCODE_MFX(0, 5), 0x07, 0x07, "MFX_AES_STATE", dump_mfx_aes_state },
- { SUBOPCODE_MFX(0, 6), 0x00, 0x00, "MFX_STATE_POINTER", dump_mfx_state_pointer },
- };
-
- subopcode = ((data[0] & MASK_GFXPIPE_SUBOPCODE) >> SHIFT_GFXPIPE_SUBOPCODE);
-
- for (i = 0; i < ARRAY_ELEMS(mfx_common_commands); i++) {
- if (subopcode == mfx_common_commands[i].subopcode) {
- unsigned int index;
-
- length = (data[0] & MASK_GFXPIPE_LENGTH) >> SHIFT_GFXPIPE_LENGTH;
- length += 2;
- instr_out(data, offset, 0, "%s\n", mfx_common_commands[i].name);
-
- if (length < mfx_common_commands[i].min_len ||
- length > mfx_common_commands[i].max_len) {
- fprintf(gout, "Bad length(%d) in %s [%d, %d]\n",
- length, mfx_common_commands[i].name,
- mfx_common_commands[i].min_len,
- mfx_common_commands[i].max_len);
- }
-
- if (length - 1 >= count)
- BUFFER_FAIL(count, length, mfx_common_commands[i].name);
-
- if (mfx_common_commands[i].detail)
- mfx_common_commands[i].detail(data, offset, device, failures);
- else {
- for (index = 1; index < length; index++)
- instr_out(data, offset, index, "dword %d\n", index);
- }
-
- return length;
- }
- }
-
- instr_out(data, offset, 0, "UNKNOWN MFX COMMON COMMAND\n");
- (*failures)++;
- return 1;
-}
-
-static void
-dump_mfx_avc_img_state(unsigned int *data, unsigned int offset, unsigned int device, int *failures)
-{
- instr_out(data, offset, 1, "dword 01\n");
- instr_out(data, offset, 2, "dword 02\n");
- instr_out(data, offset, 3, "dword 03\n");
- instr_out(data, offset, 4, "dword 04\n");
- instr_out(data, offset, 5, "dword 05\n");
- instr_out(data, offset, 6, "dword 06\n");
- instr_out(data, offset, 7, "dword 07\n");
- instr_out(data, offset, 8, "dword 08\n");
- instr_out(data, offset, 9, "dword 09\n");
- instr_out(data, offset, 10, "dword 10\n");
- instr_out(data, offset, 11, "dword 11\n");
- instr_out(data, offset, 12, "dword 12\n");
-}
-
-static void
-dump_mfx_avc_qm_state(unsigned int *data, unsigned int offset, unsigned int device, int *failures)
-{
- unsigned int length = ((data[0] & MASK_GFXPIPE_LENGTH) >> SHIFT_GFXPIPE_LENGTH) + 2;
- int i;
-
- instr_out(data, offset, 1, "user default: %02x, QM list present: %02x\n",
- (data[1] >> 8) & 0xff, data[1] & 0xff);
-
- for (i = 2; i < length; i++) {
- instr_out(data, offset, i, "dword %d\n", i);
- }
-}
-
-static void
-dump_mfx_avc_directmode_state(unsigned int *data, unsigned int offset, unsigned int device, int *failures)
-{
- int i;
-
- for (i = 1; i < 33; i++) {
- instr_out(data, offset, i, "Direct MV Buffer Base Address for Picture %d\n", i - 1);
- }
-
- for (i = 33; i < 35; i++) {
- instr_out(data, offset, i, "Direct MV Buffer Base Address for Current Decoding Frame/Field\n");
- }
-
- for (i = 35; i < 69; i++) {
- instr_out(data, offset, i, "POC List\n");
- }
-}
-
-static void
-dump_mfx_avc_slice_state(unsigned int *data, unsigned int offset, unsigned int device, int *failures)
-{
- instr_out(data, offset, 1, "dword 01\n");
- instr_out(data, offset, 2, "dword 02\n");
- instr_out(data, offset, 3, "dword 03\n");
- instr_out(data, offset, 4, "dword 04\n");
- instr_out(data, offset, 5, "dword 05\n");
- instr_out(data, offset, 6, "dword 06\n");
- instr_out(data, offset, 7, "dword 07\n");
- instr_out(data, offset, 8, "dword 08\n");
- instr_out(data, offset, 9, "dword 09\n");
-}
-
-static void
-dump_mfx_avc_ref_idx_state(unsigned int *data, unsigned int offset, unsigned int device, int *failures)
-{
- instr_out(data, offset, 1, "dword 01\n");
- instr_out(data, offset, 2, "dword 02\n");
- instr_out(data, offset, 3, "dword 03\n");
- instr_out(data, offset, 4, "dword 04\n");
- instr_out(data, offset, 5, "dword 05\n");
- instr_out(data, offset, 6, "dword 06\n");
- instr_out(data, offset, 7, "dword 07\n");
- instr_out(data, offset, 8, "dword 08\n");
- instr_out(data, offset, 9, "dword 09\n");
-}
-
-static void
-dump_mfx_avc_weightoffset_state(unsigned int *data, unsigned int offset, unsigned int device, int *failures)
-{
- int i;
-
- instr_out(data, offset, 1,
- "Weight and Offset L%d table\n",
- (data[1] >> 0) & 0x1);
-
- for (i = 2; i < 31; i++) {
- instr_out(data, offset, i, "dword %d\n", i);
- }
-}
-
-static void
-dump_mfd_bsd_object(unsigned int *data, unsigned int offset, unsigned int device, int *failures)
-{
- int is_phantom_slice = ((data[1] & 0x3fffff) == 0);
-
- if (is_phantom_slice) {
- instr_out(data, offset, 1, "phantom slice\n");
- instr_out(data, offset, 2, "dword 02\n");
- instr_out(data, offset, 3, "dword 03\n");
- instr_out(data, offset, 4, "dword 04\n");
- instr_out(data, offset, 5, "dword 05\n");
- } else {
- instr_out(data, offset, 1, "Indirect BSD Data Length: %d\n", data[1] & 0x3fffff);
- instr_out(data, offset, 2, "Indirect BSD Data Start Address: 0x%08x\n", data[2] & 0x1fffffff);
- instr_out(data, offset, 3, "dword 03\n");
- instr_out(data, offset, 4,
- "First_MB_Byte_Offset of Slice Data from Slice Header: 0x%08x,"
- "slice header skip mode: %d"
- "\n",
- (data[4] >> 16),
- (data[4] >> 6) & 0x1);
- instr_out(data, offset, 5, "dword 05\n");
- }
-}
-
-static int
-dump_mfx_avc(unsigned int *data, unsigned int offset, int count, unsigned int device, int *failures)
-{
- unsigned int subopcode;
- int length, i;
-
- struct {
- unsigned int subopcode;
- int min_len;
- int max_len;
- char *name;
- void (*detail)(unsigned int *data, unsigned int offset, unsigned int device, int *failures);
- } mfx_avc_commands[] = {
- { SUBOPCODE_MFX(0, 0), 0x0d, 0x0d, "MFX_AVC_IMG_STATE", dump_mfx_avc_img_state },
- { SUBOPCODE_MFX(0, 1), 0x02, 0x3a, "MFX_AVC_QM_STATE", dump_mfx_avc_qm_state },
- { SUBOPCODE_MFX(0, 2), 0x45, 0x45, "MFX_AVC_DIRECTMODE_STATE", dump_mfx_avc_directmode_state },
- { SUBOPCODE_MFX(0, 3), 0x0b, 0x0b, "MFX_AVC_SLICE_STATE", dump_mfx_avc_slice_state },
- { SUBOPCODE_MFX(0, 4), 0x0a, 0x0a, "MFX_AVC_REF_IDX_STATE", dump_mfx_avc_ref_idx_state },
- { SUBOPCODE_MFX(0, 5), 0x32, 0x32, "MFX_AVC_WEIGHTOFFSET_STATE", dump_mfx_avc_weightoffset_state },
- { SUBOPCODE_MFX(1, 8), 0x06, 0x06, "MFD_AVC_BSD_OBJECT", dump_mfd_bsd_object },
- };
-
- subopcode = ((data[0] & MASK_GFXPIPE_SUBOPCODE) >> SHIFT_GFXPIPE_SUBOPCODE);
-
- for (i = 0; i < ARRAY_ELEMS(mfx_avc_commands); i++) {
- if (subopcode == mfx_avc_commands[i].subopcode) {
- unsigned int index;
-
- length = (data[0] & MASK_GFXPIPE_LENGTH) >> SHIFT_GFXPIPE_LENGTH;
- length += 2;
- instr_out(data, offset, 0, "%s\n", mfx_avc_commands[i].name);
-
- if (length < mfx_avc_commands[i].min_len ||
- length > mfx_avc_commands[i].max_len) {
- fprintf(gout, "Bad length(%d) in %s [%d, %d]\n",
- length, mfx_avc_commands[i].name,
- mfx_avc_commands[i].min_len,
- mfx_avc_commands[i].max_len);
- }
-
- if (length - 1 >= count)
- BUFFER_FAIL(count, length, mfx_avc_commands[i].name);
-
- if (mfx_avc_commands[i].detail)
- mfx_avc_commands[i].detail(data, offset, device, failures);
- else {
- for (index = 1; index < length; index++)
- instr_out(data, offset, index, "dword %d\n", index);
- }
-
- return length;
- }
- }
-
- instr_out(data, offset, 0, "UNKNOWN MFX AVC COMMAND\n");
- (*failures)++;
- return 1;
-}
-
-static int
-dump_gfxpipe_mfx(unsigned int *data, unsigned int offset, int count, unsigned int device, int *failures)
-{
- int length;
-
- switch ((data[0] & MASK_GFXPIPE_OPCODE) >> SHIFT_GFXPIPE_OPCODE) {
- case OPCODE_MFX_COMMON:
- length = dump_mfx_common(data, offset, count, device, failures);
- break;
-
- case OPCODE_MFX_AVC:
- length = dump_mfx_avc(data, offset, count, device, failures);
- break;
-
- default:
- length = 1;
- (*failures)++;
- instr_out(data, offset, 0, "UNKNOWN MFX OPCODE\n");
- break;
- }
-
- return length;
-}
-
-static int
-dump_gfxpipe(unsigned int *data, unsigned int offset, int count, unsigned int device, int *failures)
-{
- int length;
-
- switch ((data[0] & MASK_GFXPIPE_SUBTYPE) >> SHIFT_GFXPIPE_SUBTYPE) {
- case GFXPIPE_3D:
- length = dump_gfxpipe_3d(data, offset, count, device, failures);
- break;
-
- case GFXPIPE_BSD:
- if (IS_GEN6(device))
- length = dump_gfxpipe_mfx(data, offset, count, device, failures);
- else
- length = dump_gfxpipe_bsd(data, offset, count, device, failures);
-
- break;
-
- default:
- length = 1;
- (*failures)++;
- instr_out(data, offset, 0, "UNKNOWN GFXPIPE COMMAND\n");
- break;
- }
-
- return length;
-}
-
-int intel_batchbuffer_dump(unsigned int *data, unsigned int offset, int count, unsigned int device)
-{
- int index = 0;
- int failures = 0;
-
- gout = fopen("/tmp/bsd_command_dump.txt", "w+");
-
- while (index < count) {
- switch ((data[index] & MASK_CMD_TYPE) >> SHIFT_CMD_TYPE) {
- case CMD_TYPE_MI:
- index += dump_mi(data + index, offset + index * 4,
- count - index, device, &failures);
- break;
-
- case CMD_TYPE_GFXPIPE:
- index += dump_gfxpipe(data + index, offset + index * 4,
- count - index, device, &failures);
- break;
-
- default:
- instr_out(data, offset, index, "UNKNOWN COMMAND\n");
- failures++;
- index++;
- break;
- }
-
- fflush(gout);
- }
-
- fclose(gout);
-
- return failures;
-}
-
-#endif
diff --git a/src/intel_batchbuffer_dump.h b/src/intel_batchbuffer_dump.h
deleted file mode 100644
index 74f4ff7..0000000
--- a/src/intel_batchbuffer_dump.h
+++ /dev/null
@@ -1,59 +0,0 @@
-#ifndef _INTEL_BATCHBUFFER_DUMP_H_
-#define _INTEL_BATCHBUFFER_DUMP_H_
-
-#define MASK_CMD_TYPE 0xE0000000
-
-#define SHIFT_CMD_TYPE 29
-
-#define CMD_TYPE_GFXPIPE 3
-#define CMD_TYPE_BLT 2
-#define CMD_TYPE_MI 0
-
-
-/* GFXPIPE */
-#define MASK_GFXPIPE_SUBTYPE 0x18000000
-#define MASK_GFXPIPE_OPCODE 0x07000000
-#define MASK_GFXPIPE_SUBOPCODE 0x00FF0000
-#define MASK_GFXPIPE_LENGTH 0x0000FFFF
-
-#define SHIFT_GFXPIPE_SUBTYPE 27
-#define SHIFT_GFXPIPE_OPCODE 24
-#define SHIFT_GFXPIPE_SUBOPCODE 16
-#define SHIFT_GFXPIPE_LENGTH 0
-
-/* 3D */
-#define GFXPIPE_3D 3
-
-/* BSD */
-#define GFXPIPE_BSD 2
-
-#define OPCODE_BSD_AVC 4
-
-#define SUBOPCODE_BSD_IMG 0
-#define SUBOPCODE_BSD_QM 1
-#define SUBOPCODE_BSD_SLICE 2
-#define SUBOPCODE_BSD_BUF_BASE 3
-#define SUBOPCODE_BSD_IND_OBJ 4
-#define SUBOPCODE_BSD_OBJECT 8
-
-/* MFX */
-#define OPCODE_MFX_COMMON 0
-#define OPCODE_MFX_AVC 1
-
-#define SUBOPCODE_MFX(A, B) ((A) << 5 | (B))
-
-/* MI */
-#define MASK_MI_OPCODE 0x1F800000
-
-#define SHIFT_MI_OPCODE 23
-
-#define OPCODE_MI_FLUSH 0x04
-#define OPCODE_MI_BATCH_BUFFER_END 0x0A
-
-#ifdef I965_DEBUG
-
-int intel_batchbuffer_dump(unsigned int *data, unsigned int offset, int count, unsigned int device);
-
-#endif
-
-#endif /* _INTEL_BATCHBUFFER_DUMP_H_ */
diff --git a/src/intel_common_vpp_internal.c b/src/intel_common_vpp_internal.c
deleted file mode 100644
index d9e2284..0000000
--- a/src/intel_common_vpp_internal.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright © 2016 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_driver.h"
-#include "i965_drv_video.h"
-#include "i965_post_processing.h"
-#include "gen75_picture_process.h"
-
-#include "intel_gen_vppapi.h"
-#include "intel_common_vpp_internal.h"
-
-int
-intel_vpp_support_yuv420p8_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_8bit_initialized & VPPGPE_8BIT_420)
- return 1;
- else
- return 0;
-}
-
-VAStatus
-intel_yuv420p8_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_driver_data *i965 = i965_driver_data(ctx);
- VAStatus va_status;
-
- if (IS_GEN8(i965->intel.device_info))
- va_status = gen8_yuv420p8_scaling_post_processing(ctx, pp_context,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect);
- else
- va_status = gen9_yuv420p8_scaling_post_processing(ctx, pp_context,
- src_surface,
- src_rect,
- dst_surface,
- dst_rect);
-
- return va_status;
-}
diff --git a/src/intel_common_vpp_internal.h b/src/intel_common_vpp_internal.h
deleted file mode 100644
index 88b4b7f..0000000
--- a/src/intel_common_vpp_internal.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright © 2016 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- *
- */
-
-#ifndef _INTEL_COMMON_VPP_INTERNAL_H_
-#define _INTEL_COMMON_VPP_INTERNAL_H_
-
-/* the below is defined for YUV420 format scaling */
-#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;
-};
-
-VAStatus
-gen9_yuv420p8_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);
-
-VAStatus
-gen8_yuv420p8_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 // _INTEL_COMMON_VPP_INTERNAL_H_
diff --git a/src/intel_compiler.h b/src/intel_compiler.h
deleted file mode 100644
index e1c3bd2..0000000
--- a/src/intel_compiler.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef _INTEL_COMPILER_H_
-#define _INTEL_COMPILER_H_
-
-/**
- * Function inlining
- */
-#if defined(__GNUC__)
-# define INLINE __inline__
-#elif (__STDC_VERSION__ >= 199901L) /* C99 */
-# define INLINE inline
-#else
-# define INLINE
-#endif
-
-/**
- * Function visibility
- */
-#if defined(__GNUC__)
-# define DLL_HIDDEN __attribute__((visibility("hidden")))
-# define DLL_EXPORT __attribute__((visibility("default")))
-#else
-# define DLL_HIDDEN
-# define DLL_EXPORT
-#endif
-
-#endif /* _INTEL_COMPILER_H_ */
diff --git a/src/intel_driver.c b/src/intel_driver.c
deleted file mode 100644
index bcc635b..0000000
--- a/src/intel_driver.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- * Zou Nan hai <nanhai.zou@intel.com>
- *
- */
-
-#include "sysdeps.h"
-
-#include <va/va_drmcommon.h>
-
-#include "intel_batchbuffer.h"
-#include "intel_memman.h"
-#include "intel_driver.h"
-uint32_t g_intel_debug_option_flags = 0;
-
-#ifdef I915_PARAM_HAS_BSD2
-#define LOCAL_I915_PARAM_HAS_BSD2 I915_PARAM_HAS_BSD2
-#endif
-
-#ifndef LOCAL_I915_PARAM_HAS_BSD2
-#define LOCAL_I915_PARAM_HAS_BSD2 30
-#endif
-
-#ifdef I915_PARAM_HAS_HUC
-#define LOCAL_I915_PARAM_HAS_HUC I915_PARAM_HAS_HUC
-#else
-#define LOCAL_I915_PARAM_HAS_HUC 42
-#endif
-
-#ifdef I915_PARAM_EU_TOTAL
-#define LOCAL_I915_PARAM_EU_TOTAL I915_PARAM_EU_TOTAL
-#else
-#define LOCAL_I915_PARAM_EU_TOTAL 34
-#endif
-
-static Bool
-intel_driver_get_param(struct intel_driver_data *intel, int param, int *value)
-{
- struct drm_i915_getparam gp;
-
- gp.param = param;
- gp.value = value;
-
- return drmCommandWriteRead(intel->fd, DRM_I915_GETPARAM, &gp, sizeof(gp)) == 0;
-}
-
-static void intel_driver_get_revid(struct intel_driver_data *intel, int *value)
-{
-#define PCI_REVID 8
- FILE *fp;
- char config_data[16];
-
- fp = fopen("/sys/devices/pci0000:00/0000:00:02.0/config", "r");
-
- if (fp) {
- if (fread(config_data, 1, 16, fp))
- *value = config_data[PCI_REVID];
- else
- *value = 2; /* assume it is at least B-steping */
- fclose(fp);
- } else {
- *value = 2; /* assume it is at least B-steping */
- }
-
- return;
-}
-
-extern const struct intel_device_info *i965_get_device_info(int devid);
-
-bool
-intel_driver_init(VADriverContextP ctx)
-{
- struct intel_driver_data *intel = intel_driver_data(ctx);
- struct drm_state * const drm_state = (struct drm_state *)ctx->drm_state;
- int has_exec2 = 0, has_bsd = 0, has_blt = 0, has_vebox = 0;
- char *env_str = NULL;
- int ret_value = 0;
-
- g_intel_debug_option_flags = 0;
- if ((env_str = getenv("VA_INTEL_DEBUG")))
- g_intel_debug_option_flags = atoi(env_str);
-
- if (g_intel_debug_option_flags)
- fprintf(stderr, "g_intel_debug_option_flags:%x\n", g_intel_debug_option_flags);
-
- assert(drm_state);
- assert(VA_CHECK_DRM_AUTH_TYPE(ctx, VA_DRM_AUTH_DRI1) ||
- VA_CHECK_DRM_AUTH_TYPE(ctx, VA_DRM_AUTH_DRI2) ||
- VA_CHECK_DRM_AUTH_TYPE(ctx, VA_DRM_AUTH_CUSTOM));
-
- intel->fd = drm_state->fd;
- intel->dri2Enabled = (VA_CHECK_DRM_AUTH_TYPE(ctx, VA_DRM_AUTH_DRI2) ||
- VA_CHECK_DRM_AUTH_TYPE(ctx, VA_DRM_AUTH_CUSTOM));
-
- if (!intel->dri2Enabled) {
- return false;
- }
-
- intel->locked = 0;
- pthread_mutex_init(&intel->ctxmutex, NULL);
-
- intel_memman_init(intel);
- intel->device_id = drm_intel_bufmgr_gem_get_devid(intel->bufmgr);
- intel->device_info = i965_get_device_info(intel->device_id);
-
- if (!intel->device_info)
- return false;
-
- if (intel_driver_get_param(intel, I915_PARAM_HAS_EXECBUF2, &has_exec2))
- intel->has_exec2 = has_exec2;
- if (intel_driver_get_param(intel, I915_PARAM_HAS_BSD, &has_bsd))
- intel->has_bsd = has_bsd;
- if (intel_driver_get_param(intel, I915_PARAM_HAS_BLT, &has_blt))
- intel->has_blt = has_blt;
- if (intel_driver_get_param(intel, I915_PARAM_HAS_VEBOX, &has_vebox))
- intel->has_vebox = !!has_vebox;
-
- intel->has_bsd2 = 0;
- if (intel_driver_get_param(intel, LOCAL_I915_PARAM_HAS_BSD2, &ret_value))
- intel->has_bsd2 = !!ret_value;
-
- intel->has_huc = 0;
- ret_value = 0;
-
- if (intel_driver_get_param(intel, LOCAL_I915_PARAM_HAS_HUC, &ret_value))
- intel->has_huc = !!ret_value;
-
- intel->eu_total = 0;
- if (intel_driver_get_param(intel, LOCAL_I915_PARAM_EU_TOTAL, &ret_value)) {
- intel->eu_total = ret_value;
- }
-
- intel->mocs_state = 0;
-
-#define GEN9_PTE_CACHE 2
-
- if (IS_GEN9(intel->device_info))
- intel->mocs_state = GEN9_PTE_CACHE;
-
- intel_driver_get_revid(intel, &intel->revision);
- return true;
-}
-
-void
-intel_driver_terminate(VADriverContextP ctx)
-{
- struct intel_driver_data *intel = intel_driver_data(ctx);
-
- intel_memman_terminate(intel);
- pthread_mutex_destroy(&intel->ctxmutex);
-}
diff --git a/src/intel_driver.h b/src/intel_driver.h
deleted file mode 100644
index ad3c04b..0000000
--- a/src/intel_driver.h
+++ /dev/null
@@ -1,240 +0,0 @@
-#ifndef _INTEL_DRIVER_H_
-#define _INTEL_DRIVER_H_
-
-#include <stddef.h>
-#include <pthread.h>
-#include <signal.h>
-#include <stdbool.h>
-
-#include <drm.h>
-#include <i915_drm.h>
-#include <intel_bufmgr.h>
-
-#include <va/va_backend.h>
-#include "va_backend_compat.h"
-
-#include "intel_compiler.h"
-
-#define BATCH_SIZE 0x80000
-#define BATCH_RESERVED 0x10
-
-#define CMD_MI (0x0 << 29)
-#define CMD_2D (0x2 << 29)
-#define CMD_3D (0x3 << 29)
-
-#define MI_NOOP (CMD_MI | 0)
-
-#define MI_BATCH_BUFFER_END (CMD_MI | (0xA << 23))
-#define MI_BATCH_BUFFER_START (CMD_MI | (0x31 << 23))
-
-#define MI_FLUSH (CMD_MI | (0x4 << 23))
-#define MI_FLUSH_STATE_INSTRUCTION_CACHE_INVALIDATE (0x1 << 0)
-
-#define MI_FLUSH_DW (CMD_MI | (0x26 << 23) | 0x2)
-#define MI_FLUSH_DW2 (CMD_MI | (0x26 << 23) | 0x3)
-#define MI_FLUSH_DW_VIDEO_PIPELINE_CACHE_INVALIDATE (0x1 << 7)
-#define MI_FLUSH_DW_NOWRITE (0 << 14)
-#define MI_FLUSH_DW_WRITE_QWORD (1 << 14)
-#define MI_FLUSH_DW_WRITE_TIME (3 << 14)
-
-#define MI_STORE_DATA_IMM (CMD_MI | (0x20 << 23))
-
-#define MI_STORE_REGISTER_MEM (CMD_MI | (0x24 << 23))
-
-#define MI_LOAD_REGISTER_IMM (CMD_MI | (0x22 << 23))
-
-#define MI_LOAD_REGISTER_MEM (CMD_MI | (0x29 << 23))
-
-#define MI_LOAD_REGISTER_REG (CMD_MI | (0x2A << 23))
-
-#define MI_MATH (CMD_MI | (0x1A << 23))
-
-#define MI_CONDITIONAL_BATCH_BUFFER_END (CMD_MI | (0x36 << 23))
-#define MI_COMPARE_MASK_MODE_ENANBLED (1 << 19)
-
-#define XY_COLOR_BLT_CMD (CMD_2D | (0x50 << 22) | 0x04)
-#define XY_COLOR_BLT_WRITE_ALPHA (1 << 21)
-#define XY_COLOR_BLT_WRITE_RGB (1 << 20)
-#define XY_COLOR_BLT_DST_TILED (1 << 11)
-
-#define GEN8_XY_COLOR_BLT_CMD (CMD_2D | (0x50 << 22) | 0x05)
-
-/* BR13 */
-#define BR13_8 (0x0 << 24)
-#define BR13_565 (0x1 << 24)
-#define BR13_1555 (0x2 << 24)
-#define BR13_8888 (0x3 << 24)
-
-#define CMD_PIPE_CONTROL (CMD_3D | (3 << 27) | (2 << 24) | (0 << 16))
-#define CMD_PIPE_CONTROL_CS_STALL (1 << 20)
-#define CMD_PIPE_CONTROL_NOWRITE (0 << 14)
-#define CMD_PIPE_CONTROL_WRITE_QWORD (1 << 14)
-#define CMD_PIPE_CONTROL_WRITE_DEPTH (2 << 14)
-#define CMD_PIPE_CONTROL_WRITE_TIME (3 << 14)
-#define CMD_PIPE_CONTROL_DEPTH_STALL (1 << 13)
-#define CMD_PIPE_CONTROL_WC_FLUSH (1 << 12)
-#define CMD_PIPE_CONTROL_IS_FLUSH (1 << 11)
-#define CMD_PIPE_CONTROL_TC_FLUSH (1 << 10)
-#define CMD_PIPE_CONTROL_NOTIFY_ENABLE (1 << 8)
-#define CMD_PIPE_CONTROL_FLUSH_ENABLE (1 << 7)
-#define CMD_PIPE_CONTROL_DC_FLUSH (1 << 5)
-#define CMD_PIPE_CONTROL_GLOBAL_GTT (1 << 2)
-#define CMD_PIPE_CONTROL_LOCAL_PGTT (0 << 2)
-#define CMD_PIPE_CONTROL_STALL_AT_SCOREBOARD (1 << 1)
-#define CMD_PIPE_CONTROL_DEPTH_CACHE_FLUSH (1 << 0)
-
-#define CMD_PIPE_CONTROL_GLOBAL_GTT_GEN8 (1 << 24)
-#define CMD_PIPE_CONTROL_LOCAL_PGTT_GEN8 (0 << 24)
-#define CMD_PIPE_CONTROL_VFC_INVALIDATION_GEN8 (1 << 4)
-#define CMD_PIPE_CONTROL_CC_INVALIDATION_GEN8 (1 << 3)
-#define CMD_PIPE_CONTROL_SC_INVALIDATION_GEN8 (1 << 2)
-
-struct intel_batchbuffer;
-
-#define ALIGN(i, n) (((i) + (n) - 1) & ~((n) - 1))
-#define IS_ALIGNED(i, n) (((i) & ((n)-1)) == 0)
-#define MIN(a, b) ((a) < (b) ? (a) : (b))
-#define MAX(a, b) ((a) > (b) ? (a) : (b))
-#define ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0]))
-#define CLAMP(min, max, a) ((a) < (min) ? (min) : ((a) > (max) ? (max) : (a)))
-
-#define ALIGN_FLOOR(i, n) ((i) & ~((n) - 1))
-
-#define Bool int
-#define True 1
-#define False 0
-
-extern uint32_t g_intel_debug_option_flags;
-#define VA_INTEL_DEBUG_OPTION_ASSERT (1 << 0)
-#define VA_INTEL_DEBUG_OPTION_BENCH (1 << 1)
-#define VA_INTEL_DEBUG_OPTION_DUMP_AUB (1 << 2)
-
-#define ASSERT_RET(value, fail_ret) do { \
- if (!(value)) { \
- if (g_intel_debug_option_flags & VA_INTEL_DEBUG_OPTION_ASSERT) \
- assert(value); \
- return fail_ret; \
- } \
- } while (0)
-
-#define SET_BLOCKED_SIGSET() do { \
- sigset_t bl_mask; \
- sigfillset(&bl_mask); \
- sigdelset(&bl_mask, SIGFPE); \
- sigdelset(&bl_mask, SIGILL); \
- sigdelset(&bl_mask, SIGSEGV); \
- sigdelset(&bl_mask, SIGBUS); \
- sigdelset(&bl_mask, SIGKILL); \
- pthread_sigmask(SIG_SETMASK, &bl_mask, &intel->sa_mask); \
- } while (0)
-
-#define RESTORE_BLOCKED_SIGSET() do { \
- pthread_sigmask(SIG_SETMASK, &intel->sa_mask, NULL); \
- } while (0)
-
-#define PPTHREAD_MUTEX_LOCK() do { \
- SET_BLOCKED_SIGSET(); \
- pthread_mutex_lock(&intel->ctxmutex); \
- } while (0)
-
-#define PPTHREAD_MUTEX_UNLOCK() do { \
- pthread_mutex_unlock(&intel->ctxmutex); \
- RESTORE_BLOCKED_SIGSET(); \
- } while (0)
-
-#define WARN_ONCE(...) do { \
- static int g_once = 1; \
- if (g_once) { \
- g_once = 0; \
- fprintf(stderr, "WARNING: " __VA_ARGS__); \
- } \
- } while (0)
-
-struct intel_device_info
-{
- int gen;
- int gt;
-
- unsigned int urb_size;
- unsigned int max_wm_threads;
-
- unsigned int is_g4x : 1; /* gen4 */
- unsigned int is_ivybridge : 1; /* gen7 */
- unsigned int is_baytrail : 1; /* gen7 */
- unsigned int is_haswell : 1; /* gen7 */
- unsigned int is_cherryview : 1; /* gen8 */
- unsigned int is_skylake : 1; /* gen9 */
- unsigned int is_broxton : 1; /* gen9 */
- unsigned int is_kabylake : 1; /* gen9p5 */
-};
-
-struct intel_driver_data
-{
- int fd;
- int device_id;
- int revision;
-
- int dri2Enabled;
-
- sigset_t sa_mask;
- pthread_mutex_t ctxmutex;
- int locked;
-
- dri_bufmgr *bufmgr;
-
- unsigned int has_exec2 : 1; /* Flag: has execbuffer2? */
- unsigned int has_bsd : 1; /* Flag: has bitstream decoder for H.264? */
- unsigned int has_blt : 1; /* Flag: has BLT unit? */
- unsigned int has_vebox : 1; /* Flag: has VEBOX unit */
- unsigned int has_bsd2 : 1; /* Flag: has the second BSD video ring unit */
- unsigned int has_huc : 1; /* Flag: has a fully loaded HuC firmware? */
-
- int eu_total;
-
- const struct intel_device_info *device_info;
- unsigned int mocs_state;
-};
-
-bool intel_driver_init(VADriverContextP ctx);
-void intel_driver_terminate(VADriverContextP ctx);
-
-static INLINE struct intel_driver_data *
-intel_driver_data(VADriverContextP ctx)
-{
- return (struct intel_driver_data *)ctx->pDriverData;
-}
-
-struct intel_region
-{
- int x;
- int y;
- unsigned int width;
- unsigned int height;
- unsigned int cpp;
- unsigned int pitch;
- unsigned int tiling;
- unsigned int swizzle;
- dri_bo *bo;
-};
-
-#define IS_G4X(device_info) (device_info->is_g4x)
-
-#define IS_IRONLAKE(device_info) (device_info->gen == 5)
-
-#define IS_GEN6(device_info) (device_info->gen == 6)
-
-#define IS_HASWELL(device_info) (device_info->is_haswell)
-#define IS_GEN7(device_info) (device_info->gen == 7)
-
-#define IS_CHERRYVIEW(device_info) (device_info->is_cherryview)
-#define IS_GEN8(device_info) (device_info->gen == 8)
-
-#define IS_GEN9(device_info) (device_info->gen == 9)
-
-#define IS_SKL(device_info) (device_info->is_skylake)
-
-#define IS_BXT(device_info) (device_info->is_broxton)
-
-#define IS_KBL(device_info) (device_info->is_kabylake)
-
-#endif /* _INTEL_DRIVER_H_ */
diff --git a/src/intel_gen_vppapi.h b/src/intel_gen_vppapi.h
deleted file mode 100644
index 9fe82c9..0000000
--- a/src/intel_gen_vppapi.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright © 2016 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- *
- */
-
-#ifndef _INTEL_GEN_VPPAPI_H_
-#define _INTEL_GEN_VPPAPI_H_
-
-#include <va/va.h>
-#include <va/va_backend.h>
-
-/*
-struct i965_surface;
-struct i965_post_processing_context;
-*/
-
-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);
-
-extern int
-intel_vpp_support_yuv420p8_scaling(struct intel_video_process_context *proc_ctx);
-
-extern VAStatus
-intel_yuv420p8_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 // _INTE_GEN_VPPAPI_H_
diff --git a/src/intel_media.h b/src/intel_media.h
deleted file mode 100644
index 4a55a93..0000000
--- a/src/intel_media.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef INTEL_MEDIA_H
-#define INTEL_MEDIA_H
-
-#include <stdint.h>
-#include <stdlib.h>
-
-#include <va/va.h>
-#include <intel_bufmgr.h>
-
-typedef struct gen_codec_surface GenCodecSurface;
-
-struct gen_codec_surface
-{
- int frame_store_id;
-};
-
-typedef struct gen_avc_surface GenAvcSurface;
-struct gen_avc_surface
-{
- GenCodecSurface base;
- dri_bo *dmv_top;
- dri_bo *dmv_bottom;
- int dmv_bottom_flag;
-};
-
-extern void gen_free_avc_surface(void **data);
-
-
-extern int intel_format_convert(float src, int out_int_bits, int out_frac_bits,int out_sign_flag);
-
-typedef struct gen_hevc_surface GenHevcSurface;
-struct gen_hevc_surface
-{
- GenCodecSurface base;
- dri_bo *motion_vector_temporal_bo;
- //Encoding HEVC10:internal surface keep for P010->NV12 , this is only for hevc10 to save the P010->NV12
- struct object_surface *nv12_surface_obj;
- VASurfaceID nv12_surface_id;
- VADriverContextP ctx;
- int has_p010_to_nv12_done;
-};
-
-typedef struct gen_vp9_surface GenVP9Surface;
-struct gen_vp9_surface
-{
- GenCodecSurface base;
- uint16_t frame_width;
- uint16_t frame_height;
- dri_bo *motion_vector_temporal_bo;
-};
-
-typedef struct vdenc_avc_surface VDEncAvcSurface;
-struct vdenc_avc_surface
-{
- VADriverContextP ctx;
- VASurfaceID scaled_4x_surface_id;
- struct object_surface *scaled_4x_surface_obj;
-};
-
-extern void gen_free_hevc_surface(void **data);
-
-extern void gen_free_vp9_surface(void **data);
-
-extern void vdenc_free_avc_surface(void **data);
-
-#endif /* INTEL_MEDIA_H */
diff --git a/src/intel_media_common.c b/src/intel_media_common.c
deleted file mode 100644
index 2b4db4f..0000000
--- a/src/intel_media_common.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright (C) 2006-2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <math.h>
-
-#include "intel_driver.h"
-#include "intel_media.h"
-#include "i965_drv_video.h"
-
-static pthread_mutex_t free_avc_surface_lock = PTHREAD_MUTEX_INITIALIZER;
-
-void
-gen_free_avc_surface(void **data)
-{
- GenAvcSurface *avc_surface;
-
- pthread_mutex_lock(&free_avc_surface_lock);
-
- avc_surface = *data;
-
- if (!avc_surface) {
- pthread_mutex_unlock(&free_avc_surface_lock);
- return;
- }
-
-
- dri_bo_unreference(avc_surface->dmv_top);
- avc_surface->dmv_top = NULL;
- dri_bo_unreference(avc_surface->dmv_bottom);
- avc_surface->dmv_bottom = NULL;
-
- free(avc_surface);
- *data = NULL;
-
- pthread_mutex_unlock(&free_avc_surface_lock);
-}
-
-/* This is to convert one float to the given format interger.
- * For example: 1.25 to S1.6 or U2.6 and so on
- */
-int intel_format_convert(float src, int out_int_bits, int out_frac_bits,int out_sign_flag)
-{
- unsigned char negative_flag = (src < 0.0) ? 1 : 0;
- float src_1 = (!negative_flag)? src: -src ;
- unsigned int factor = 1 << out_frac_bits;
- int output_value = 0;
-
- unsigned int integer_part = floorf(src_1);
- unsigned int fraction_part = ((int)((src_1 - integer_part) * factor)) & (factor - 1) ;
-
- output_value = (integer_part << out_frac_bits) | fraction_part;
-
- if(negative_flag)
- output_value = (~output_value + 1) & ((1 <<(out_int_bits + out_frac_bits)) -1);
-
- if(output_value != 0 && out_sign_flag == 1 && negative_flag)
- {
- output_value |= negative_flag <<(out_int_bits + out_frac_bits);
- }
- return output_value;
-}
-
-static pthread_mutex_t free_hevc_surface_lock = PTHREAD_MUTEX_INITIALIZER;
-
-void
-gen_free_hevc_surface(void **data)
-{
- GenHevcSurface *hevc_surface;
-
- pthread_mutex_lock(&free_hevc_surface_lock);
-
- hevc_surface = *data;
-
- if (!hevc_surface) {
- pthread_mutex_unlock(&free_hevc_surface_lock);
- return;
- }
-
- dri_bo_unreference(hevc_surface->motion_vector_temporal_bo);
- hevc_surface->motion_vector_temporal_bo = NULL;
-
- if (hevc_surface->nv12_surface_obj) {
- i965_DestroySurfaces(hevc_surface->ctx, &hevc_surface->nv12_surface_id, 1);
- hevc_surface->nv12_surface_id = VA_INVALID_SURFACE;
- hevc_surface->nv12_surface_obj = NULL;
- }
-
- free(hevc_surface);
- *data = NULL;
-
- pthread_mutex_unlock(&free_hevc_surface_lock);
-}
-
-static pthread_mutex_t free_vp9_surface_lock = PTHREAD_MUTEX_INITIALIZER;
-
-void gen_free_vp9_surface(void **data)
-{
- GenVP9Surface *vp9_surface;
-
- pthread_mutex_lock(&free_vp9_surface_lock);
-
- vp9_surface = *data;
-
- if (!vp9_surface) {
- pthread_mutex_unlock(&free_vp9_surface_lock);
- return;
- }
-
- free(vp9_surface);
- *data = NULL;
-
- pthread_mutex_unlock(&free_vp9_surface_lock);
-}
-
-extern VAStatus
-i965_DestroySurfaces(VADriverContextP ctx,
- VASurfaceID *surface_list,
- int num_surfaces);
-
-static pthread_mutex_t free_vdenc_avc_surface_lock = PTHREAD_MUTEX_INITIALIZER;
-
-void
-vdenc_free_avc_surface(void **data)
-{
- VDEncAvcSurface *avc_surface;
-
- pthread_mutex_lock(&free_vdenc_avc_surface_lock);
-
- avc_surface = *data;
-
- if (!avc_surface) {
- pthread_mutex_unlock(&free_vdenc_avc_surface_lock);
- return;
- }
-
- if (avc_surface->scaled_4x_surface_obj) {
- i965_DestroySurfaces(avc_surface->ctx, &avc_surface->scaled_4x_surface_id, 1);
- avc_surface->scaled_4x_surface_id = VA_INVALID_SURFACE;
- avc_surface->scaled_4x_surface_obj = NULL;
- }
-
- free(avc_surface);
- *data = NULL;
-
- pthread_mutex_unlock(&free_vdenc_avc_surface_lock);
-}
diff --git a/src/intel_memman.c b/src/intel_memman.c
deleted file mode 100644
index 03ed216..0000000
--- a/src/intel_memman.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- * Zou Nan hai <nanhai.zou@intel.com>
- *
- */
-
-#include <assert.h>
-
-#include "intel_driver.h"
-
-Bool
-intel_memman_init(struct intel_driver_data *intel)
-{
- intel->bufmgr = intel_bufmgr_gem_init(intel->fd, BATCH_SIZE);
- assert(intel->bufmgr);
- intel_bufmgr_gem_enable_reuse(intel->bufmgr);
-
- if (g_intel_debug_option_flags & VA_INTEL_DEBUG_OPTION_DUMP_AUB) {
- drm_intel_bufmgr_gem_set_aub_filename(intel->bufmgr,
- "va.aub");
- drm_intel_bufmgr_gem_set_aub_dump(intel->bufmgr, 1);
- }
-
- return True;
-}
-
-Bool
-intel_memman_terminate(struct intel_driver_data *intel)
-{
- drm_intel_bufmgr_destroy(intel->bufmgr);
- return True;
-}
diff --git a/src/intel_memman.h b/src/intel_memman.h
deleted file mode 100644
index 4e516e5..0000000
--- a/src/intel_memman.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _INTEL_MEMMAN_H_
-#define _INTEL_MEMMAN_H_
-
-Bool intel_memman_init(struct intel_driver_data *intel);
-Bool intel_memman_terminate(struct intel_driver_data *intel);
-
-#endif /* _INTEL_MEMMAN_H_ */
diff --git a/src/intel_version.h.in b/src/intel_version.h.in
deleted file mode 100644
index 050e834..0000000
--- a/src/intel_version.h.in
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef INTEL_VERSION_H
-#define INTEL_VERSION_H
-
-/**
- * INTEL_DRIVER_GIT_VERSION:
- *
- * The full version identifier of libva-intel-driver, from a git
- * repository, in string form (suitable for string concatenation).
- */
-#define INTEL_DRIVER_GIT_VERSION "@INTEL_DRIVER_GIT_VERSION@"
-
-#endif /* INTEL_VERSION_H */
diff --git a/src/object_heap.c b/src/object_heap.c
deleted file mode 100644
index cc6f60b..0000000
--- a/src/object_heap.c
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Copyright (c) 2007 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "object_heap.h"
-
-#include "assert.h"
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#define ASSERT assert
-
-#define LAST_FREE -1
-#define ALLOCATED -2
-
-/*
- * Expands the heap
- * Return 0 on success, -1 on error
- */
-static int object_heap_expand( object_heap_p heap )
-{
- int i;
- void *new_heap_index;
- int next_free;
- int new_heap_size = heap->heap_size + heap->heap_increment;
- int bucket_index = new_heap_size / heap->heap_increment - 1;
-
- if (bucket_index >= heap->num_buckets) {
- int new_num_buckets = heap->num_buckets + 8;
- void **new_bucket;
-
- new_bucket = realloc(heap->bucket, new_num_buckets * sizeof(void *));
- if (NULL == new_bucket) {
- return -1;
- }
-
- heap->num_buckets = new_num_buckets;
- heap->bucket = new_bucket;
- }
-
- new_heap_index = (void *) malloc( heap->heap_increment * heap->object_size );
- if ( NULL == new_heap_index )
- {
- return -1; /* Out of memory */
- }
-
- heap->bucket[bucket_index] = new_heap_index;
- next_free = heap->next_free;
- for(i = new_heap_size; i-- > heap->heap_size; )
- {
- object_base_p obj = (object_base_p) (new_heap_index + (i - heap->heap_size) * heap->object_size);
- obj->id = i + heap->id_offset;
- obj->next_free = next_free;
- next_free = i;
- }
- heap->next_free = next_free;
- heap->heap_size = new_heap_size;
- return 0; /* Success */
-}
-
-/*
- * Return 0 on success, -1 on error
- */
-int object_heap_init( object_heap_p heap, int object_size, int id_offset)
-{
- heap->object_size = object_size;
- heap->id_offset = id_offset & OBJECT_HEAP_OFFSET_MASK;
- heap->heap_size = 0;
- heap->heap_increment = 16;
- heap->next_free = LAST_FREE;
- heap->num_buckets = 0;
- heap->bucket = NULL;
-
- if (object_heap_expand(heap) == 0) {
- ASSERT(heap->heap_size);
- _i965InitMutex(&heap->mutex);
- return 0;
- } else {
- ASSERT(!heap->heap_size);
- ASSERT(!heap->bucket || !heap->bucket[0]);
-
- free(heap->bucket);
-
- return -1;
- }
-}
-
-/*
- * Allocates an object
- * Returns the object ID on success, returns -1 on error
- */
-int object_heap_allocate( object_heap_p heap )
-{
- object_base_p obj;
- int bucket_index, obj_index;
-
- _i965LockMutex(&heap->mutex);
- if ( LAST_FREE == heap->next_free )
- {
- if( -1 == object_heap_expand( heap ) )
- {
- _i965UnlockMutex(&heap->mutex);
- return -1; /* Out of memory */
- }
- }
- ASSERT( heap->next_free >= 0 );
-
- bucket_index = heap->next_free / heap->heap_increment;
- obj_index = heap->next_free % heap->heap_increment;
-
- obj = (object_base_p) (heap->bucket[bucket_index] + obj_index * heap->object_size);
- heap->next_free = obj->next_free;
- _i965UnlockMutex(&heap->mutex);
-
- obj->next_free = ALLOCATED;
- return obj->id;
-}
-
-/*
- * Lookup an object by object ID
- * Returns a pointer to the object on success, returns NULL on error
- */
-object_base_p object_heap_lookup( object_heap_p heap, int id )
-{
- object_base_p obj;
- int bucket_index, obj_index;
-
- _i965LockMutex(&heap->mutex);
- if ( (id < heap->id_offset) || (id > (heap->heap_size+heap->id_offset)) )
- {
- _i965UnlockMutex(&heap->mutex);
- return NULL;
- }
- id &= OBJECT_HEAP_ID_MASK;
- bucket_index = id / heap->heap_increment;
- obj_index = id % heap->heap_increment;
- obj = (object_base_p) (heap->bucket[bucket_index] + obj_index * heap->object_size);
- _i965UnlockMutex(&heap->mutex);
-
- /* Check if the object has in fact been allocated */
- if ( obj->next_free != ALLOCATED )
- {
- return NULL;
- }
- return obj;
-}
-
-/*
- * Iterate over all objects in the heap.
- * Returns a pointer to the first object on the heap, returns NULL if heap is empty.
- */
-object_base_p object_heap_first( object_heap_p heap, object_heap_iterator *iter )
-{
- *iter = -1;
- return object_heap_next( heap, iter );
-}
-
-/*
- * Iterate over all objects in the heap.
- * Returns a pointer to the next object on the heap, returns NULL if heap is empty.
- */
-object_base_p object_heap_next( object_heap_p heap, object_heap_iterator *iter )
-{
- object_base_p obj;
- int i = *iter + 1;
- int bucket_index, obj_index;
-
- _i965LockMutex(&heap->mutex);
- while ( i < heap->heap_size)
- {
- bucket_index = i / heap->heap_increment;
- obj_index = i % heap->heap_increment;
-
- obj = (object_base_p) (heap->bucket[bucket_index] + obj_index * heap->object_size);
- if (obj->next_free == ALLOCATED)
- {
- _i965UnlockMutex(&heap->mutex);
- *iter = i;
- return obj;
- }
- i++;
- }
- _i965UnlockMutex(&heap->mutex);
- *iter = i;
- return NULL;
-}
-
-
-
-/*
- * Frees an object
- */
-void object_heap_free( object_heap_p heap, object_base_p obj )
-{
- /* Don't complain about NULL pointers */
- if (NULL != obj)
- {
- /* Check if the object has in fact been allocated */
- ASSERT( obj->next_free == ALLOCATED );
-
- _i965LockMutex(&heap->mutex);
- obj->next_free = heap->next_free;
- heap->next_free = obj->id & OBJECT_HEAP_ID_MASK;
- _i965UnlockMutex(&heap->mutex);
- }
-}
-
-/*
- * Destroys a heap, the heap must be empty.
- */
-void object_heap_destroy( object_heap_p heap )
-{
- object_base_p obj;
- int i;
- int bucket_index, obj_index;
-
- if (heap->heap_size) {
- _i965DestroyMutex(&heap->mutex);
-
- /* Check if heap is empty */
- for (i = 0; i < heap->heap_size; i++)
- {
- /* Check if object is not still allocated */
- bucket_index = i / heap->heap_increment;
- obj_index = i % heap->heap_increment;
- obj = (object_base_p) (heap->bucket[bucket_index] + obj_index * heap->object_size);
- ASSERT( obj->next_free != ALLOCATED );
- }
-
- for (i = 0; i < heap->heap_size / heap->heap_increment; i++) {
- free(heap->bucket[i]);
- }
-
- free(heap->bucket);
- }
-
- heap->bucket = NULL;
- heap->heap_size = 0;
- heap->next_free = LAST_FREE;
-}
diff --git a/src/object_heap.h b/src/object_heap.h
deleted file mode 100644
index 79efeab..0000000
--- a/src/object_heap.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 2007 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef _OBJECT_HEAP_H_
-#define _OBJECT_HEAP_H_
-
-#include "i965_mutext.h"
-
-#define OBJECT_HEAP_OFFSET_MASK 0x7F000000
-#define OBJECT_HEAP_ID_MASK 0x00FFFFFF
-
-typedef struct object_base *object_base_p;
-typedef struct object_heap *object_heap_p;
-
-struct object_base {
- int id;
- int next_free;
-};
-
-struct object_heap {
- int object_size;
- int id_offset;
- int next_free;
- int heap_size;
- int heap_increment;
- _I965Mutex mutex;
- void **bucket;
- int num_buckets;
-};
-
-typedef int object_heap_iterator;
-
-/*
- * Return 0 on success, -1 on error
- */
-int object_heap_init( object_heap_p heap, int object_size, int id_offset);
-
-/*
- * Allocates an object
- * Returns the object ID on success, returns -1 on error
- */
-int object_heap_allocate( object_heap_p heap );
-
-/*
- * Lookup an allocated object by object ID
- * Returns a pointer to the object on success, returns NULL on error
- */
-object_base_p object_heap_lookup( object_heap_p heap, int id );
-
-/*
- * Iterate over all objects in the heap.
- * Returns a pointer to the first object on the heap, returns NULL if heap is empty.
- */
-object_base_p object_heap_first( object_heap_p heap, object_heap_iterator *iter );
-
-/*
- * Iterate over all objects in the heap.
- * Returns a pointer to the next object on the heap, returns NULL if heap is empty.
- */
-object_base_p object_heap_next( object_heap_p heap, object_heap_iterator *iter );
-
-/*
- * Frees an object
- */
-void object_heap_free( object_heap_p heap, object_base_p obj );
-
-/*
- * Destroys a heap, the heap must be empty.
- */
-void object_heap_destroy( object_heap_p heap );
-
-#endif /* _OBJECT_HEAP_H_ */
diff --git a/src/shaders/Makefile.am b/src/shaders/Makefile.am
deleted file mode 100644
index 9e3ec94..0000000
--- a/src/shaders/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
-SUBDIRS = h264 mpeg2 render post_processing vme utils
-
-EXTRA_DIST = gpp.py
-
-# Extra clean files so that maintainer-clean removes *everything*
-MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/shaders/gpp.py b/src/shaders/gpp.py
deleted file mode 100755
index 7e43f13..0000000
--- a/src/shaders/gpp.py
+++ /dev/null
@@ -1,200 +0,0 @@
-#!/usr/bin/env python
-#coding=UTF-8
-
-# Copyright © 2011 Intel Corporation
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#
-# Authors:
-# Chen, Yangyang <yangyang.chen@intel.com>
-# Han, Haofu <haofu.han@intel.com>
-#
-
-import sys
-
-class Block:
- def __init__(self, ln=0, s=None):
- assert type(ln) == int
- assert type(s) == str or s == None
- self.lineno = ln
- self.text = s
- self.subblocks = []
-
- def append(self, block):
- self.subblocks.append(block)
-
- def checkfor(self, line):
- import re
- p = r'\$\s*for\s*'
- if re.match(p, line) == None:
- raise Exception(self.__errmsg('syntax error'))
- tail = line.split('(', 1)[1].rsplit(')', 1)
- conds = tail[0].split(';')
- lb = tail[1]
- if lb.strip() != '{':
- raise Exception(self.__errmsg('missing "{"'))
- if len(conds) != 3:
- raise Exception(self.__errmsg('syntax error(miss ";"?)'))
- init = conds[0]
- cond = conds[1]
- step = conds[2]
- self.__parse_init(init)
- self.__parse_cond(cond)
- self.__parse_step(step)
-
- def __parse_init(self, init):
- inits = init.split(',')
- self.param_init = []
- for ini in inits:
- try:
- val = eval(ini)
- self.param_init.append(val)
- except:
- raise Exception(self.__errmsg('non an exp: %s'%ini))
- self.param_num = len(inits)
-
- def __parse_cond(self, cond):
- cond = cond.strip()
- if cond[0] in ['<', '>']:
- if cond[1] == '=':
- self.param_op = cond[:2]
- limit = cond[2:]
- else:
- self.param_op = cond[0]
- limit = cond[1:]
- try:
- self.param_limit = eval(limit)
- except:
- raise Exception(self.__errmsg('non an exp: %s'%limit))
- else:
- raise Exception(self.__errmsg('syntax error'))
-
- def __parse_step(self, step):
- steps = step.split(',')
- if len(steps) != self.param_num:
- raise Exception(self.__errmsg('params number no match'))
- self.param_step = []
- for st in steps:
- try:
- val = eval(st)
- self.param_step.append(val)
- except:
- raise Exception(self.__errmsg('non an exp: %s'%st))
-
- def __errmsg(self, msg=''):
- return '%d: %s' % (self.lineno, msg)
-
-def readlines(f):
- lines = f.readlines()
- buf = []
- for line in lines:
- if '\\n' in line:
- tmp = line.split('\\n')
- buf.extend(tmp)
- else:
- buf.append(line)
- return buf
-
-def parselines(lines):
- root = Block(0)
- stack = [root]
- lineno = 0
- for line in lines:
- lineno += 1
- line = line.strip()
- if line.startswith('$'):
- block = Block(lineno)
- block.checkfor(line)
- stack[-1].append(block)
- stack.append(block)
- elif line.startswith('}'):
- stack.pop()
- elif line and not line.startswith('#'):
- stack[-1].append(Block(lineno, line))
- return root
-
-def writeblocks(outfile, blocks):
- buf = []
-
- def check_cond(op, cur, lim):
- assert op in ['<', '>', '<=', '>=']
- assert type(cur) == int
- assert type(lim) == int
- return eval('%d %s %d' % (cur, op, lim))
-
- def do_writeblock(block, curs):
- if block.text != None:
- import re
- p = r'\%(\d+)'
- newline = block.text
- params = set(re.findall(p, block.text))
- for param in params:
- index = int(param) - 1
- if index >= len(curs):
- raise Exception('%d: too many param(%%%d)'%(block.lineno, index+1))
- newline = newline.replace('%%%d'%(index+1), str(curs[index]))
- if newline and \
- not newline.startswith('.') and \
- not newline.endswith(':') and \
- not newline.endswith(';'):
- newline += ';'
- buf.append(newline)
- else:
- for_curs = block.param_init
- while check_cond(block.param_op, for_curs[0], block.param_limit):
- for sblock in block.subblocks:
- do_writeblock(sblock, for_curs)
- for i in range(0, block.param_num):
- for_curs[i] += block.param_step[i]
-
- for block in blocks.subblocks:
- do_writeblock(block, [])
- outfile.write('\n'.join(buf))
- outfile.write('\n')
-
-if __name__ == '__main__':
- argc = len(sys.argv)
- if argc == 1:
- print >>sys.stderr, 'no input file'
- sys.exit(0)
-
- try:
- infile = open(sys.argv[1], 'r')
- except IOError:
- print >>sys.stderr, 'can not open %s' % sys.argv[1]
- sys.exit(1)
-
- if argc == 2:
- outfile = sys.stdout
- else:
- try:
- outfile = open(sys.argv[2], 'w')
- except IOError:
- print >>sys.stderr, 'can not write to %s' % sys.argv[2]
- sys.exit(1)
-
- lines = readlines(infile)
- try:
- infile.close()
- except IOError:
- pass
-
- blocks = parselines(lines)
- writeblocks(outfile, blocks)
diff --git a/src/shaders/h264/Makefile.am b/src/shaders/h264/Makefile.am
deleted file mode 100644
index 51e0a6f..0000000
--- a/src/shaders/h264/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-SUBDIRS = ildb mc
-
-# Extra clean files so that maintainer-clean removes *everything*
-MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/shaders/h264/ildb/AVC_ILDB.inc b/src/shaders/h264/ildb/AVC_ILDB.inc
deleted file mode 100644
index f99d13b..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB.inc
+++ /dev/null
@@ -1,748 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__AVC_ILDB_HEADER__) // Make sure this file is only included once
-#define __AVC_ILDB_HEADER__
-
-// Module name: AVC_ILDB.inc
-
-#undef ORIX
-#undef ORIY
-
-//========== Root thread input parameters ==================================================
-#define RootParam r1 // :w
-#define MBsCntX r1.0 // :w, MB count per row
-#define MBsCntY r1.1 // :w, MB count per col
-//#define PicType r1.2 // :w, Picture type
-#define MaxThreads r1.3 // :w, Max Thread limit
-#define EntrySignature r1.4 // :w, Debug flag
-#define BitFields r1.5 // :uw
-#define MbaffFlag BIT0 // :w, mbaff flag, bit 0 in BitFields
-#define BotFieldFlag BIT1 // :w, bottom field flag, bit 1 in BitFields
-#define CntlDataExpFlag BIT2 // :w, Control Data Expansion Flag, bit 2 in BitFields
-#define RampConst r1.12 // 8 :ub, Ramp constant, r1.12 - r1.19:ub
-#define StepToNextMB r1.20 // :b, 2 bytes
-#define Minus2Minus1 r1.22 // :b, 2 bytes
-// next one starts at r1.11:w
-
-#define TopFieldFlag 0xFFFD // :w, top field flag, used to set bit1 to 0.
-
-
-//========== Root Locals =============================================================
-
-// Variables in root kernel for launching child therad
-#define ChildParam r2.0 // :w
-//Not used #define URBOffset r2.3 // :w, Each row occupies 4 URB entries. All children in the same row use the same set of URB entries
-#define CurCol r2.10 // :w, current col
-#define CurColB r2.20 // :b, current col
-#define CurRow r2.11 // :w, current row
-#define CurRowB r2.22 // :b, current row
-#define LastCol r2.12 // :w, last col
-#define LastRow r2.13 // :w, last row
-
-// Root local constants during spawning process
-#define Col_Boundary r3.0 // :w,
-#define Row_Boundary r3.1 // :w,
-//#define TotalBlocks r3.2 // :w, Total blocks in the frame
-#define URB_EntriesPerMB_2 r3.3 // :w, = URB entries per MB, but in differnt form
-#define URBOffsetUVBase r3.4 // :w, UV Base offset in URB
-
-#define Temp1_D r3.6 // :d:
-#define Temp1_W r3.12 // :w, Temp1
-#define Temp1_B r3.24 // :b, = Temp1_W
-#define Temp2_W r3.13 // :w, Temp2
-#define Temp2_B r3.26 // :b, = Temp2_W
-
-// Root local variables
-#define JumpTable r4 // :d, jump table
-#define JUMPTABLE_BASE 4*32
-#define JumpAddr a0.7
-
-#define TopRowForScan r5.0 // :w, track the top row for scan. All rows above this row is deblocked already.
-
-
-// Child Thread R0 Header Field
-#define MRF0 m0
-#define CT_R0Hdr m1
-
-/*
-.declare GatewayAperture Base=r50.0 ElementSize=4 SrcRegion=REGION(8,1) Type=ud
-#define GatewayApertureB 1600 // r50 byte offset from r0.0
-
-// Chroma root thread updates luma root's ThreadLimit at r10.0:w via gateway
-#define ThreadLimit r62.0 // :w, thread limit //r56.0
-#define THREAD_LIMIT_OFFSET 0x01800000 // Offset from r50 to r56 = 12*32 = 384 = 0x0180. 0x180 << 16 = 0x01800000
- //#define THREAD_LIMIT_OFFSET 0x00C00000 // Offset from r50 to r56 = 6*32 = 192 = 0x00C0. 0xC0 << 16 = 0x00C00000
-*/
-
-// Gateway size is 16 GRF. 68 rows of MBs takes 9 GRFs (r6 - r14)
-// For CTG: Expended to support 1280 rows of pixel (80 rows of MBs). It requires 10 GRFs (r6 - r15)
-.declare GatewayAperture Base=r6.0 ElementSize=4 SrcRegion=REGION(8,1) Type=ud
-#define GatewayApertureB 192 // r0.0 byte offset from r0.0
-
-// Chroma root thread updates luma root's ThreadLimit at r10.0:w via gateway
-#define ThreadLimit r18.0 // :w, thread limit
-#define THREAD_LIMIT_OFFSET 0x01800000 // Offset from r50 to r56 = 12*32 = 384 = 0x0180. 0x180 << 16 = 0x01800000
-#define TotalBlocks r18.1 // :w, Total blocks in the frame
-
-// Root local variables
-#define ChildThreadsID r19.0 // :w, Child thread ID, unique to each child
-#define OutstandingThreads r20.0 // :w, Outstanding threads
-#define ProcessedMBs r20.1 // :w, # of MBs processed
-
-#define URBOffset r21.0 // :w, Each row occupies 4 URB entries. All children in the same row use the same set of URB entries
-
-//=================================================================================
-
-#define ScoreBd_Size 128 //96 // size of Status[] or ProcCol[]
-
-#define ScoreBd_Idx 2
-//#define Saved_Col 0
-
-#define StatusAddr a0.4 // :w, point to r50
-//=================================================================================
-
-
-// Gateway payload
-#define GatewayPayload r48.0 // :ud
-#define GatewayPayloadKey r48.8 // :uw
-#define DispatchID r48.20 // :ub
-#define RegBase_GatewaySize r48.5 // :ud, used in open a gateway
-#define Offset_Length r48.5 // :ud, used in forwardmsg back to root
-#define EUID_TID r48.9 // :uw, used in forwardmsg back to root
-
-// Gateway response
-#define GatewayResponse r49.0 // :ud, one GRF
-
-#define URBWriteMsgDesc a0.0 // Used in URB write, :ud
-#define URBWriteMsgDescLow a0.0 // Used in URB write, :uw
-#define URBWriteMsgDescHigh a0.1 // Used in URB write, :uw
-
-.declare WritebackResponse Base=r50 ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 1 GRF for write backs
-
-
-/////////////////////////////////////////////////////////////////////////////////////////////
-// IDesc Order Offset
-//
-// 0) luma root 0 from luma root
-// 1) luma child 16 from luma root
-// 2) chroma root 32 from luma root
-// 3) chroma child 16 from chroma root
-
-// 4) luma field root 0 from luma field root
-// 5) luma field child 16 from luma field root
-// 6) chroma field root 32 from luma field root
-// 7) chroma field child 16 from chroma field root
-
-// 8) luma Mbaff root 0 from luma Mbaff root
-// 9) luma Mbaff child 16 from luma Mbaff root
-// 10) chroma Mbaff root 32 from luma Mbaff root
-// 11) chroma Mbaff child 16 from chroma Mbaff root
-
-// IDesc offset within non-mbaff or mbaff mode
-#define CHROMA_ROOT_OFFSET 32 // Offset from luma root to chroma root
-#define CHILD_OFFSET 16 // Offset from luma root to luma child,
- // and from chroma root to chroma child
-/////////////////////////////////////////////////////////////////////////////////////////////
-
-
-//========== End of Root Variables ======================================================
-
-
-//========== Child thread input parameters ==============================================
-//#define MBsCntX r1.0 // :w, MB count per row (same as root)
-//#define MBsCntY r1.1 // :w, MB count per col (same as root)
-//#define PicTypeC r1.2 // :w, Picture type same as root thread (same as root)
-#define URBOffsetC r1.3 // :w,
-#define EntrySignatureC r1.4 // :w, Debug field (same as root)
-//#define BitFields r1.5 // :w (same as root)
-//#define MbaffFlag BIT0 // :w, mbaff flag, bit 0 in BitFields
-//#define BotFieldFlag BIT1 // :w, bottom field flag, bit 1 in BitFields
-//#define CntlDataExpFlag BIT2 // :w, Control Data Expansion Flag, bit 2 in BitFields
-#define RampConstC r1.12 // 8 :ub, Ramp constant, r1.12 - r1.19:ub.
-#define ORIX r1.10 // :w, carry over from root r1 in MB count
-#define ORIY r1.11 // :w, carry over from root r1 in MB count
-#define LastColC r1.12 // :w, last col
-#define LastRowC r1.13 // :w, last row
-
-.declare GatewayApertureC Base=r1.0 ElementSize=4 SrcRegion=REGION(8,1) Type=ud
-#define GatewayApertureCBase 32 // r1 byte offset from r0.0
-
-
-//========== Child Variables ============================================================
-
-// Mbaff Alpha, Beta, Tc0 vectors for an edge
-.declare Mbaff_ALPHA Base=r14.0 ElementSize=2 SrcRegion=REGION(8,1) Type=uw // r14
-.declare Mbaff_BETA Base=r15.0 ElementSize=2 SrcRegion=REGION(8,1) Type=uw // r15
-.declare Mbaff_TC0 Base=r16.0 ElementSize=2 SrcRegion=REGION(8,1) Type=uw // r16
-.declare RRampW Base=r17.0 ElementSize=2 SrcRegion=REGION(8,1) Type=w // r17
-
-.declare Mbaff_ALPHA2 Base=r45.0 ElementSize=2 SrcRegion=REGION(8,1) Type=uw // alpha2 = (alpha >> 2) + 2
-
-
-#define ORIX_CUR r46.0 // :w, current block origin X in bytes
-#define ORIY_CUR r46.1 // :w, current block origin Y in bytes
-#define ORIX_LEFT r46.2 // :w, left block origin X in bytes
-#define ORIY_LEFT r46.3 // :w, left block origin Y in bytes
-#define ORIX_TOP r46.4 // :w, top block origin X in bytes
-#define ORIY_TOP r46.5 // :w, top block origin Y in bytes
-//#define FilterSampleFlag r46.6 // :uw,
-#define CTemp0_W r46.7 // :w, child Temp0
-
-#define alpha r46.8 // :w, Scaler version for non Mbaff
-#define beta r46.9 // :w, Scaler version for non Mbaff
-#define tc0 r46.20 // 4 :ub, r46.20 ~ r46.23, Scaler version for non Mbaff
-#define MaskA r46.12 // :uw
-#define MaskB r46.13 // :uw
-
-// Child control flags
-#define DualFieldMode r47.0 // Cur MB is frame based, above MB is field based in mbaff mode
- // :uw, 0 = not in dual field mode, 1 = in dual field mode, filter both top and bot fields
-#define GateWayOffsetC r47.1 // :w, Gateway offset for child writing into root space
-#define CntrlDataOffsetY r47.1 // :ud, MB control data data offset
-#define alpha2 r47.4 // :uw, alpha2 = (alpha >> 2) + 2
-
-#define VertEdgePattern r47.5 // :uw,
-
-#define CTemp1_W r47.6 // :w, child Temp1
-#define CTemp1_B r47.12 // :b, = child Temp1_W
-#define CTemp2_W r47.7 // :w, child Temp2
-#define CTemp2_B r47.14 // :b, = child Temp2_W
-
-// Used in child
-#define ECM_AddrReg a0.4 // Edge Control Map register
-#define P_AddrReg a0.6 // point to P samples in left or top MB
-#define Q_AddrReg a0.7 // point to Q samples in cur MB
-
-
-.declare RTempD Base=r26.0 ElementSize=4 SrcRegion=REGION(8,1) Type=d // r26-27
-.declare RTempB Base=r26.0 ElementSize=1 SrcRegion=REGION(8,4) Type=ub // r26-27
-.declare RTempW Base=r26.0 ElementSize=2 SrcRegion=REGION(8,1) Type=w // r26-27
-#define LEFT_TEMP_D RTempD
-#define LEFT_TEMP_B RTempB
-#define LEFT_TEMP_W RTempW
-
-.declare TempRow0 Base=r26.0 ElementSize=2 SrcRegion=REGION(8,1) Type=w
-.declare TempRow0B Base=r26.0 ElementSize=1 SrcRegion=REGION(8,2) Type=ub
-.declare TempRow1 Base=r27.0 ElementSize=2 SrcRegion=REGION(8,1) Type=w
-.declare TempRow1B Base=r27.0 ElementSize=1 SrcRegion=REGION(8,2) Type=ub
-
-.declare CUR_TEMP_D Base=r28.0 ElementSize=4 SrcRegion=REGION(8,1) Type=d // 8 GRFs
-.declare CUR_TEMP_B Base=r28.0 ElementSize=1 SrcRegion=REGION(8,4) Type=ub
-.declare CUR_TEMP_W Base=r28.0 ElementSize=2 SrcRegion=REGION(8,1) Type=w
-
-#define FilterSampleFlag r28.0 // :uw,
-
-.declare A Base=r28.0 ElementSize=2 SrcRegion=REGION(16,1) Type=w
-.declare BB Base=r29.0 ElementSize=2 SrcRegion=REGION(16,1) Type=w
-
-.declare TempRow3 Base=r30.0 ElementSize=2 SrcRegion=REGION(8,1) Type=w
-.declare TempRow3B Base=r30.0 ElementSize=1 SrcRegion=REGION(8,2) Type=ub
-
-.declare tc0_exp Base=r30.0 ElementSize=2 SrcRegion=REGION(8,1) Type=w
-.declare tc8 Base=r30.0 ElementSize=2 SrcRegion=REGION(8,1) Type=w
-
-.declare tc_exp Base=r31.0 ElementSize=2 SrcRegion=REGION(8,1) Type=w
-.declare tx_exp_8 Base=r31.0 ElementSize=2 SrcRegion=REGION(8,1) Type=w
-
-.declare q0_p0 Base=r32.0 ElementSize=2 SrcRegion=REGION(8,1) Type=w
-.declare ABS_q0_p0 Base=r33.0 ElementSize=2 SrcRegion=REGION(8,1) Type=w
-
-.declare ap Base=r34.0 ElementSize=2 SrcRegion=REGION(8,1) Type=w
-.declare aq Base=r35.0 ElementSize=2 SrcRegion=REGION(8,1) Type=w
-
-// These buffers have the src data for each edge to be beblocked.
-// They have modified pixels from previous edges.
-//
-// Y:
-// +----+----+----+----+----+----+----+----+
-// | p3 | p2 | P1 | p0 | q0 | q1 | q2 | q3 |
-// +----+----+----+----+----+----+----+----+
-//
-// p3 = r[P_AddrReg, 0]<16;16,1>
-// p2 = r[P_AddrReg, 16]<16;16,1>
-// p1 = r[P_AddrReg, 32]<16;16,1>
-// p0 = r[P_AddrReg, 48]<16;16,1>
-// q0 = r[Q_AddrReg, 0]<16;16,1>
-// q1 = r[Q_AddrReg, 16]<16;16,1>
-// q2 = r[Q_AddrReg, 32]<16;16,1>
-// q3 = r[Q_AddrReg, 48]<16;16,1>
-
-.declare p0123_W Base=r36.0 ElementSize=2 SrcRegion=REGION(16,1) Type=uw // r36, r37
-.declare q0123_W Base=r38.0 ElementSize=2 SrcRegion=REGION(16,1) Type=uw // r38, r39
-.declare p3 Base=r36.0 ElementSize=1 SrcRegion=REGION(8,1) Type=ub
-.declare p2 Base=r36.16 ElementSize=1 SrcRegion=REGION(8,1) Type=ub
-.declare p1 Base=r37.0 ElementSize=1 SrcRegion=REGION(8,1) Type=ub
-.declare p0 Base=r37.16 ElementSize=1 SrcRegion=REGION(8,1) Type=ub
-.declare q0 Base=r38.0 ElementSize=1 SrcRegion=REGION(8,1) Type=ub
-.declare q1 Base=r38.16 ElementSize=1 SrcRegion=REGION(8,1) Type=ub
-.declare q2 Base=r39.0 ElementSize=1 SrcRegion=REGION(8,1) Type=ub
-.declare q3 Base=r39.16 ElementSize=1 SrcRegion=REGION(8,1) Type=ub
-
-.declare TempRow2 Base=r38.0 ElementSize=2 SrcRegion=REGION(8,1) Type=w
-
-// Temp space for mbaff dual field mode
-#define ABOVE_CUR_MB_BASE 40*GRFWIB // Byte offset to r40
-.declare ABOVE_CUR_MB_YW Base=r40 ElementSize=2 SrcRegion=REGION(8,1) Type=uw
-.declare ABOVE_CUR_MB_UW Base=r40 ElementSize=2 SrcRegion=REGION(8,1) Type=uw
-
-.declare P0_plus_P1 Base=r41.0 ElementSize=2 SrcRegion=REGION(8,1) Type=w
-.declare Q0_plus_Q1 Base=r42.0 ElementSize=2 SrcRegion=REGION(8,1) Type=w
-
-.declare P2_plus_P3 Base=r43.0 ElementSize=2 SrcRegion=REGION(8,1) Type=w
-.declare Q2_plus_Q3 Base=r44.0 ElementSize=2 SrcRegion=REGION(8,1) Type=w
-
-
-//////////////////////////////////////////////////////////////////////////////////////////
-// MB control data reference
-
-// Expanded control data is in r18 - r25
-.declare CNTRL_DATA_D Base=r18 ElementSize=4 SrcRegion=REGION(8,1) Type=ud // For read, 8 GRFs
-#define CNTRL_DATA_BASE 18*GRFWIB // Base offset to r18
-
-// Bit mask for extracting bits
-#define MbaffFrameFlag 0x01
-#define FieldModeCurrentMbFlag 0x02
-#define FieldModeLeftMbFlag 0x04
-#define FieldModeAboveMbFlag 0x08
-#define FilterInternal8x8EdgesFlag 0x10
-#define FilterInternal4x4EdgesFlag 0x20
-#define FilterLeftMbEdgeFlag 0x40
-#define FilterTopMbEdgeFlag 0x80
-
-#define DISABLE_ILDB_FLAG 0x01
-
-// Exact bit pattern for left and cur MB coding mode (frame vs. field)
-#define LEFT_FRAME_CUR_FRAME 0x00
-#define LEFT_FRAME_CUR_FIELD 0x02
-#define LEFT_FIELD_CUR_FRAME 0x04
-#define LEFT_FIELD_CUR_FIELD 0x06
-
-// Exact bit pattern for above and cur MB coding mode (frame vs. field)
-#define ABOVE_FRAME_CUR_FRAME 0x00
-#define ABOVE_FRAME_CUR_FIELD 0x02
-#define ABOVE_FIELD_CUR_FRAME 0x08
-#define ABOVE_FIELD_CUR_FIELD 0x0A
-
-
-
-//========== MB control data field offset in byte ==========
-
-#if !defined(_APPLE)
-
-// GRF0 - GRF1 holds original control data
-
-// GRF0
-#define HorizOrigin 0
-#define VertOrigin 1
-#define BitFlags 2 // Bit flags
-
-#define bbSinternalLeftVert 4 // Internal left vertical bS, 2 bits per bS for 4 Y pixels and 2 U/V pixels
-#define bbSinternalMidVert 5 // Internal mid vertical bS
-#define bbSinternalRightVert 6 // Internal right vertical bS
-#define bbSinternalTopHorz 7 // Internal top horizontal bS
-
-#define bbSinternalMidHorz 8 // Internal mid horizontal bS
-#define bbSinternalBotHorz 9 // Internal bottom horizontal bS
-#define wbSLeft0 10 // External left vertical bS (0), 4 bits per bS for 4 Y pixels and 2 U/V pixels, and byte 11
-
-#define wbSLeft1 12 // External left vertical bS (1), and byte 13
-#define wbSTop0 14 // External top horizontal bS (0), and byte 15
-
-#define wbSTop1 16 // Externaltop horizontal bS (1), and byte 17
-#define bIndexAinternal_Y 18 // Internal index A for Y
-#define bIndexBinternal_Y 19 // Internal index B for Y
-
-#define bIndexAleft0_Y 20 // Left index A for Y (0)
-#define bIndexBleft0_Y 21 // Left index B for Y (0)
-#define bIndexAleft1_Y 22 // Left index A for Y (1)
-#define bIndexBleft1_Y 23 // Left index B for Y (1)
-
-#define bIndexAtop0_Y 24 // Top index A for Y (0)
-#define bIndexBtop0_Y 25 // Top index B for Y (0)
-#define bIndexAtop1_Y 26 // Top index A for Y (1)
-#define bIndexBtop1_Y 27 // Top index B for Y (1)
-
-#define bIndexAinternal_Cb 28 // Internal index A for Cb
-#define bIndexBinternal_Cb 29 // Internal index B for Cb
-#define bIndexAleft0_Cb 30 // Left index A for Cb (0)
-#define bIndexBleft0_Cb 31 // Left index B for Cb (0)
-
-// GRF1
-#define bIndexAleft1_Cb 32 // Left index A for Cb (1)
-#define bIndexBleft1_Cb 33 // Left index B for Cb (1)
-#define bIndexAtop0_Cb 34 // Top index A for Cb (0)
-#define bIndexBtop0_Cb 35 // Top index B for Cb (0)
-
-#define bIndexAtop1_Cb 36 // Top index A for Cb (1)
-#define bIndexBtop1_Cb 37 // Top index B for Cb (1)
-#define bIndexAinternal_Cr 38 // Internal index A for Cr
-#define bIndexBinternal_Cr 39 // Internal index B for Cr
-
-#define bIndexAleft0_Cr 40 // Left index A for Cr (0)
-#define bIndexBleft0_Cr 41 // Left index B for Cr (0)
-#define bIndexAleft1_Cr 42 // Left index A for Cr (1)
-#define bIndexBleft1_Cr 43 // Left index B for Cr (1)
-
-#define bIndexAtop0_Cr 44 // Top index A for Cr (0)
-#define bIndexBtop0_Cr 45 // Top index B for Cr (0)
-#define bIndexAtop1_Cr 46 // Top index A for Cr (1)
-#define bIndexBtop1_Cr 47 // Top index B for Cr (1)
-
-#define ExtBitFlags 48 // Extended bit flags, such as disable ILDB bits
-
-// Offset 49 - 63 not used
-
-
-//===== GRF2 - GRF7 hold expanded control data =====
-
-// GRF2
-#define wEdgeCntlMap_IntLeftVert 64 // Derived from bbSinternalLeftVert, 1 bit per pixel
-#define wEdgeCntlMap_IntMidVert 66 // Derived from bbSinternalLeftVert
-
-#define wEdgeCntlMap_IntRightVert 68 // Derived from bbSinternalRightVert
-#define wEdgeCntlMap_IntTopHorz 70 // Derived from bbSinternalTopHorz, 1bit per pixel
-
-#define wEdgeCntlMap_IntMidHorz 72 // Derived from bbSinternalMidHorz
-#define wEdgeCntlMap_IntBotHorz 74 // Derived from bbSinternalBotHorz
-
-// Offset 76 - 79 not used
-
-#define wEdgeCntlMapA_ExtLeftVert0 80 // Derived from wbSLeft0, 1bit per pixel
-#define wEdgeCntlMapB_ExtLeftVert0 82 // Derived from wbSLeft0
-
-#define wEdgeCntlMapA_ExtTopHorz0 84 // Derived from wbSTop0, 1bit per pixel
-#define wEdgeCntlMapB_ExtTopHorz0 86 // Derived from wbSTop0
-
-#define wEdgeCntlMapA_ExtLeftVert1 88 // Derived from wbSLeft1, 1bit per pixel
-#define wEdgeCntlMapB_ExtLeftVert1 90 // Derived from wbSLeft1
-
-#define wEdgeCntlMapA_ExtTopHorz1 92 // Derived from wbSTop1, 1bit per pixel
-#define wEdgeCntlMapB_ExtTopHorz1 94 // Derived from wbSTop1
-
-
-// GRF3
-#define bTc0_v00_0_Y 96 // Derived from bSv00_0 and bIndexAleft0_Y, 4 pixels per tc0
-#define bTc0_v10_0_Y 97 // Derived from bSv10_0 and bIndexAleft0_Y
-#define bTc0_v20_0_Y 98 // Derived from bSv20_0 and bIndexAleft0_Y
-#define bTc0_v30_0_Y 99 // Derived from bSv30_0 and bIndexAleft0_Y
-
-#define bTc0_v01_Y 100 // Derived from bSv01 and bIndexAinternal_Y
-#define bTc0_v11_Y 101 // Derived from bSv11 and bIndexAinternal_Y
-#define bTc0_v21_Y 102 // Derived from bSv21 and bIndexAinternal_Y
-#define bTc0_v31_Y 103 // Derived from bSv31 and bIndexAinternal_Y
-
-#define bTc0_v02_Y 104 // Derived from bSv02 and bIndexAinternal_Y
-#define bTc0_v12_Y 105 // Derived from bSv12 and bIndexAinternal_Y
-#define bTc0_v22_Y 106 // Derived from bSv22 and bIndexAinternal_Y
-#define bTc0_v32_Y 107 // Derived from bSv32 and bIndexAinternal_Y
-
-#define bTc0_v03_Y 108 // Derived from bSv03 and bIndexAinternal_Y
-#define bTc0_v13_Y 109 // Derived from bSv13 and bIndexAinternal_Y
-#define bTc0_v23_Y 110 // Derived from bSv23 and bIndexAinternal_Y
-#define bTc0_v33_Y 111 // Derived from bSv33 and bIndexAinternal_Y
-
-#define bTc0_h00_0_Y 112 // Derived from bSh00_0 and bIndexAleft0_Y
-#define bTc0_h01_0_Y 113 // Derived from bSh01_0 and bIndexAleft0_Y
-#define bTc0_h02_0_Y 114 // Derived from bSh02_0 and bIndexAleft0_Y
-#define bTc0_h03_0_Y 115 // Derived from bSh03_0 and bIndexAleft0_Y
-
-#define bTc0_h10_Y 116 // Derived from bSh10 and bIndexAinternal_Y
-#define bTc0_h11_Y 117 // Derived from bSh11 and bIndexAinternal_Y
-#define bTc0_h12_Y 118 // Derived from bSh12 and bIndexAinternal_Y
-#define bTc0_h13_Y 119 // Derived from bSh13 and bIndexAinternal_Y
-
-#define bTc0_h20_Y 120 // Derived from bSh20 and bIndexAinternal_Y
-#define bTc0_h21_Y 121 // Derived from bSh21 and bIndexAinternal_Y
-#define bTc0_h22_Y 122 // Derived from bSh22 and bIndexAinternal_Y
-#define bTc0_h23_Y 123 // Derived from bSh23 and bIndexAinternal_Y
-
-#define bTc0_h30_Y 124 // Derived from bSh30 and bIndexAinternal_Y
-#define bTc0_h31_Y 125 // Derived from bSh31 and bIndexAinternal_Y
-#define bTc0_h32_Y 126 // Derived from bSh32 and bIndexAinternal_Y
-#define bTc0_h33_Y 127 // Derived from bSh33 and bIndexAinternal_Y
-
-// GRF4
-#define bAlphaLeft0_Y 128 // Derived from bIndexAleft0_Y
-#define bBetaLeft0_Y 129 // Derived from bIndexBleft0_Y
-#define bAlphaTop0_Y 130 // Derived from bIndexAtop0_Y
-#define bBetaTop0_Y 131 // Derived from bIndexBtop0_Y
-
-#define bAlphaInternal_Y 132 // Derived from bIndexAinternal_Y
-#define bBetaInternal_Y 133 // Derived from bIndexBinternal_Y
-// Offset 134 - 135 not used
-
-// Offset 136 - 143 not used
-#define bAlphaLeft1_Y 144 // Derived from bIndexAleft1_Y Used in Mbaff mode only
-#define bBetaLeft1_Y 145 // Derived from bIndexBleft1_Y Used in Mbaff mode only
-#define bAlphaTop1_Y 146 // Derived from bIndexAtop1_Y Used in Mbaff mode only
-#define bBetaTop1_Y 147 // Derived from bIndexBtop1_Y Used in Mbaff mode only
-
-// Offset 148 - 151 not used
-#define bTc0_v00_1_Y 152 // Derived from bSv00_1 and bIndexAleft1_Y Used in Mbaff mode only
-#define bTc0_v10_1_Y 153 // Derived from bSv10_1 and bIndexAleft1_Y Used in Mbaff mode only
-#define bTc0_v20_1_Y 154 // Derived from bSv20_1 and bIndexAleft1_Y Used in Mbaff mode only
-#define bTc0_v30_1_Y 155 // Derived from bSv30_1 and bIndexAleft1_Y Used in Mbaff mode only
-
-#define bTc0_h00_1_Y 156 // Derived from bSh00_1 and bIndexAleft1_Y Used in Mbaff mode only
-#define bTc0_h01_1_Y 157 // Derived from bSh01_1 and bIndexAleft1_Y Used in Mbaff mode only
-#define bTc0_h02_1_Y 158 // Derived from bSh02_1 and bIndexAleft1_Y Used in Mbaff mode only
-#define bTc0_h03_1_Y 159 // Derived from bSh03_1 and bIndexAleft1_Y Used in Mbaff mode only
-
-
-// GRF5
-#define bTc0_v00_0_Cb 160 // Derived from bSv00_0 and bIndexAleft0_Cb, 2 pixels per tc0 Left0
-#define bTc0_v10_0_Cb 161 // Derived from bSv10_0 and bIndexAleft0_Cb
-#define bTc0_v20_0_Cb 162 // Derived from bSv20_0 and bIndexAleft0_Cb
-#define bTc0_v30_0_Cb 163 // Derived from bSv30_0 and bIndexAleft0_Cb
-
-#define bTc0_v02_Cb 164 // Derived from bSv02 and bIndexAinternal_Cb MidVert
-#define bTc0_v12_Cb 165 // Derived from bSv12 and bIndexAinternal_Cb
-#define bTc0_v22_Cb 166 // Derived from bSv22 and bIndexAinternal_Cb
-#define bTc0_v32_Cb 167 // Derived from bSv32 and bIndexAinternal_Cb
-
-#define bTc0_h00_0_Cb 168 // Derived from bSh00_0 and bIndexAleft0_Cb Top0
-#define bTc0_h01_0_Cb 169 // Derived from bSh01_0 and bIndexAleft0_Cb
-#define bTc0_h02_0_Cb 170 // Derived from bSh02_0 and bIndexAleft0_Cb
-#define bTc0_h03_0_Cb 171 // Derived from bSh03_0 and bIndexAleft0_Cb
-
-#define bTc0_h20_Cb 172 // Derived from bSh20 and bIndexAinternal_Cb MidHorz
-#define bTc0_h21_Cb 173 // Derived from bSh21 and bIndexAinternal_Cb
-#define bTc0_h22_Cb 174 // Derived from bSh22 and bIndexAinternal_Cb
-#define bTc0_h23_Cb 175 // Derived from bSh23 and bIndexAinternal_Cb
-
-#define bTc0_v00_0_Cr 176 // Derived from bSv00_0 and bIndexAleft0_Cr, 2 pixels per tc0 Left0
-#define bTc0_v10_0_Cr 177 // Derived from bSv10_0 and bIndexAleft0_Cr
-#define bTc0_v20_0_Cr 178 // Derived from bSv20_0 and bIndexAleft0_Cr
-#define bTc0_v30_0_Cr 179 // Derived from bSv30_0 and bIndexAleft0_Cr
-
-#define bTc0_v02_Cr 180 // Derived from bSv02 and bIndexAinternal_Cr Mid Vert
-#define bTc0_v12_Cr 181 // Derived from bSv12 and bIndexAinternal_Cr
-#define bTc0_v22_Cr 182 // Derived from bSv22 and bIndexAinternal_Cr
-#define bTc0_v32_Cr 183 // Derived from bSv32 and bIndexAinternal_Cr
-
-#define bTc0_h00_0_Cr 184 // Derived from bSh00_0 and bIndexAleft0_Cr, 2 pixels per tc0 Top0
-#define bTc0_h01_0_Cr 185 // Derived from bSh01_0 and bIndexAleft0_Cr
-#define bTc0_h02_0_Cr 186 // Derived from bSh02_0 and bIndexAleft0_Cr
-#define bTc0_h03_0_Cr 187 // Derived from bSh03_0 and bIndexAleft0_Cr
-
-#define bTc0_h20_Cr 188 // Derived from bSh20 and bIndexAinternal_Cr Mid Horz
-#define bTc0_h21_Cr 189 // Derived from bSh21 and bIndexAinternal_Cr
-#define bTc0_h22_Cr 190 // Derived from bSh22 and bIndexAinternal_Cr
-#define bTc0_h23_Cr 191 // Derived from bSh23 and bIndexAinternal_Cr
-
-// GRF6
-#define bAlphaLeft0_Cb 192 // Derived from bIndexAleft0_Cb
-#define bBetaLeft0_Cb 193 // Derived from bIndexBleft0_Cb
-#define bAlphaTop0_Cb 194 // Derived from bIndexAtop0_Cb
-#define bBetaTop0_Cb 195 // Derived from bIndexBtop0_Cb
-
-#define bAlphaInternal_Cb 196 // Derived from bIndexAinternal_Cb
-#define bBetaInternal_Cb 197 // Derived from bIndexBinternal_Cb
-// Offset 198 - 199 not used
-
-#define bAlphaLeft0_Cr 200 // Derived from bIndexAleft0_Cr
-#define bBetaLeft0_Cr 201 // Derived from bIndexBleft0_Cr
-#define bAlphaTop0_Cr 202 // Derived from bIndexAtop0_Cr
-#define bBetaTop0_Cr 203 // Derived from bIndexBtop0_Cr
-
-#define bAlphaInternal_Cr 204 // Derived from bIndexAinternal_Cr
-#define bBetaInternal_Cr 205 // Derived from bIndexBinternal_Cr
-// Offset 206 - 223 not used
-
-// GRF7
-#define bAlphaLeft1_Cb 224 // Derived from bIndexAleft1_Cb Used in Mbaff mode only
-#define bBetaLeft1_Cb 225 // Derived from bIndexBleft1_Cb Used in Mbaff mode only
-#define bAlphaTop1_Cb 226 // Derived from bIndexAtop1_Cb Used in Mbaff mode only
-#define bBetaTop1_Cb 227 // Derived from bIndexBtop1_Cb Used in Mbaff mode only
-
-// Offset 228 - 231 not used
-
-#define bTc0_v00_1_Cb 232 // Derived from bSv00_1 and bIndexAleft1_Cb Used in Mbaff mode only
-#define bTc0_v10_1_Cb 233 // Derived from bSv10_1 and bIndexAleft1_Cb Used in Mbaff mode only
-#define bTc0_v20_1_Cb 234 // Derived from bSv20_1 and bIndexAleft1_Cb Used in Mbaff mode only
-#define bTc0_v30_1_Cb 235 // Derived from bSv30_1 and bIndexAleft1_Cb Used in Mbaff mode only
-
-#define bTc0_h00_1_Cb 236 // Derived from bSh00_1 and bIndexAleft1_Cb Used in Mbaff mode only
-#define bTc0_h01_1_Cb 237 // Derived from bSh01_1 and bIndexAleft1_Cb Used in Mbaff mode only
-#define bTc0_h02_1_Cb 238 // Derived from bSh02_1 and bIndexAleft1_Cb Used in Mbaff mode only
-#define bTc0_h03_1_Cb 239 // Derived from bSh03_1 and bIndexAleft1_Cb Used in Mbaff mode only
-
-#define bAlphaLeft1_Cr 240 // Derived from bIndexAleft1_Cr Used in Mbaff mode only
-#define bBetaLeft1_Cr 241 // Derived from bIndexBleft1_Cr Used in Mbaff mode only
-#define bAlphaTop1_Cr 242 // Derived from bIndexAtop1_Cr Used in Mbaff mode only
-#define bBetaTop1_Cr 243 // Derived from bIndexBtop1_Cr Used in Mbaff mode only
-
-// Offset 244 - 247 not used
-
-#define bTc0_v00_1_Cr 248 // Derived from bSv00_1 and bIndexAleft1_Cr Used in Mbaff mode only
-#define bTc0_v10_1_Cr 249 // Derived from bSv10_1 and bIndexAleft1_Cr Used in Mbaff mode only
-#define bTc0_v20_1_Cr 250 // Derived from bSv20_1 and bIndexAleft1_Cr Used in Mbaff mode only
-#define bTc0_v30_1_Cr 251 // Derived from bSv30_1 and bIndexAleft1_Cr Used in Mbaff mode only
-
-#define bTc0_h00_1_Cr 252 // Derived from bSh00_1 and bIndexAleft1_Cr Used in Mbaff mode only
-#define bTc0_h01_1_Cr 253 // Derived from bSh01_1 and bIndexAleft1_Cr Used in Mbaff mode only
-#define bTc0_h02_1_Cr 254 // Derived from bSh02_1 and bIndexAleft1_Cr Used in Mbaff mode only
-#define bTc0_h03_1_Cr 255 // Derived from bSh03_1 and bIndexAleft1_Cr Used in Mbaff mode only
-
-
-#else // _APPLE is defined
-
-//******** Crestline for Apple, progressive only, 88 bytes **********
-
-// GRF0
-#define HorizOrigin 0
-#define VertOrigin 1
-#define BitFlags 2 // Bit flags
-
-#define wEdgeCntlMap_IntLeftVert 4 // Derived from bbSinternalLeftVert, 1 bit per pixel
-#define wEdgeCntlMap_IntMidVert 6 // Derived from bbSinternalLeftVert
-#define wEdgeCntlMap_IntRightVert 8 // Derived from bbSinternalRightVert
-#define wEdgeCntlMap_IntTopHorz 10 // Derived from bbSinternalTopHorz, 1bit per pixel
-#define wEdgeCntlMap_IntMidHorz 12 // Derived from bbSinternalMidHorz
-#define wEdgeCntlMap_IntBotHorz 14 // Derived from bbSinternalBotHorz
-#define wEdgeCntlMapA_ExtLeftVert0 16 // Derived from wbSLeft0, 1bit per pixel
-#define wEdgeCntlMapB_ExtLeftVert0 18 // Derived from wbSLeft0
-#define wEdgeCntlMapA_ExtTopHorz0 20 // Derived from wbSTop0, 1bit per pixel
-#define wEdgeCntlMapB_ExtTopHorz0 22 // Derived from wbSTop0
-
-#define bAlphaLeft0_Y 24 // Derived from bIndexAleft0_Y
-#define bBetaLeft0_Y 25 // Derived from bIndexBleft0_Y
-#define bAlphaTop0_Y 26 // Derived from bIndexAtop0_Y
-#define bBetaTop0_Y 27 // Derived from bIndexBtop0_Y
-#define bAlphaInternal_Y 28 // Derived from bIndexAinternal_Y
-#define bBetaInternal_Y 29 // Derived from bIndexBinternal_Y
-
-// GRF1
-#define bTc0_v00_0_Y 32 // Derived from bSv00_0 and bIndexAleft0_Y, 4 pixels per tc0
-#define bTc0_v10_0_Y 33 // Derived from bSv10_0 and bIndexAleft0_Y
-#define bTc0_v20_0_Y 34 // Derived from bSv20_0 and bIndexAleft0_Y
-#define bTc0_v30_0_Y 35 // Derived from bSv30_0 and bIndexAleft0_Y
-#define bTc0_v01_Y 36 // Derived from bSv01 and bIndexAinternal_Y
-#define bTc0_v11_Y 37 // Derived from bSv11 and bIndexAinternal_Y
-#define bTc0_v21_Y 38 // Derived from bSv21 and bIndexAinternal_Y
-#define bTc0_v31_Y 39 // Derived from bSv31 and bIndexAinternal_Y
-#define bTc0_v02_Y 40 // Derived from bSv02 and bIndexAinternal_Y
-#define bTc0_v12_Y 41 // Derived from bSv12 and bIndexAinternal_Y
-#define bTc0_v22_Y 42 // Derived from bSv22 and bIndexAinternal_Y
-#define bTc0_v32_Y 43 // Derived from bSv32 and bIndexAinternal_Y
-#define bTc0_v03_Y 44 // Derived from bSv03 and bIndexAinternal_Y
-#define bTc0_v13_Y 45 // Derived from bSv13 and bIndexAinternal_Y
-#define bTc0_v23_Y 46 // Derived from bSv23 and bIndexAinternal_Y
-#define bTc0_v33_Y 47 // Derived from bSv33 and bIndexAinternal_Y
-
-#define bTc0_h00_0_Y 48 // Derived from bSh00_0 and bIndexAleft0_Y
-#define bTc0_h01_0_Y 49 // Derived from bSh01_0 and bIndexAleft0_Y
-#define bTc0_h02_0_Y 50 // Derived from bSh02_0 and bIndexAleft0_Y
-#define bTc0_h03_0_Y 51 // Derived from bSh03_0 and bIndexAleft0_Y
-#define bTc0_h10_Y 52 // Derived from bSh10 and bIndexAinternal_Y
-#define bTc0_h11_Y 53 // Derived from bSh11 and bIndexAinternal_Y
-#define bTc0_h12_Y 54 // Derived from bSh12 and bIndexAinternal_Y
-#define bTc0_h13_Y 55 // Derived from bSh13 and bIndexAinternal_Y
-#define bTc0_h20_Y 56 // Derived from bSh20 and bIndexAinternal_Y
-#define bTc0_h21_Y 57 // Derived from bSh21 and bIndexAinternal_Y
-#define bTc0_h22_Y 58 // Derived from bSh22 and bIndexAinternal_Y
-#define bTc0_h23_Y 59 // Derived from bSh23 and bIndexAinternal_Y
-#define bTc0_h30_Y 60 // Derived from bSh30 and bIndexAinternal_Y
-#define bTc0_h31_Y 61 // Derived from bSh31 and bIndexAinternal_Y
-#define bTc0_h32_Y 62 // Derived from bSh32 and bIndexAinternal_Y
-#define bTc0_h33_Y 63 // Derived from bSh33 and bIndexAinternal_Y
-
-// GRF2,
-#define bTc0_v00_0_Cb 64 // Derived from bSv00_0 and bIndexAleft0_Cb, 2 pixels per tc0 Left0
-#define bTc0_v10_0_Cb 65 // Derived from bSv10_0 and bIndexAleft0_Cb
-#define bTc0_v20_0_Cb 66 // Derived from bSv20_0 and bIndexAleft0_Cb
-#define bTc0_v30_0_Cb 67 // Derived from bSv30_0 and bIndexAleft0_Cb
-#define bTc0_v02_Cb 68 // Derived from bSv02 and bIndexAinternal_Cb MidVert
-#define bTc0_v12_Cb 69 // Derived from bSv12 and bIndexAinternal_Cb
-#define bTc0_v22_Cb 70 // Derived from bSv22 and bIndexAinternal_Cb
-#define bTc0_v32_Cb 71 // Derived from bSv32 and bIndexAinternal_Cb
-#define bTc0_h00_0_Cb 72 // Derived from bSh00_0 and bIndexAleft0_Cb Top0
-#define bTc0_h01_0_Cb 73 // Derived from bSh01_0 and bIndexAleft0_Cb
-#define bTc0_h02_0_Cb 74 // Derived from bSh02_0 and bIndexAleft0_Cb
-#define bTc0_h03_0_Cb 75 // Derived from bSh03_0 and bIndexAleft0_Cb
-#define bTc0_h20_Cb 76 // Derived from bSh20 and bIndexAinternal_Cb MidHorz
-#define bTc0_h21_Cb 77 // Derived from bSh21 and bIndexAinternal_Cb
-#define bTc0_h22_Cb 78 // Derived from bSh22 and bIndexAinternal_Cb
-#define bTc0_h23_Cb 79 // Derived from bSh23 and bIndexAinternal_Cb
-
-#define bAlphaLeft0_Cb 80 // Derived from bIndexAleft0_Cb
-#define bBetaLeft0_Cb 81 // Derived from bIndexBleft0_Cb
-#define bAlphaTop0_Cb 82 // Derived from bIndexAtop0_Cb
-#define bBetaTop0_Cb 83 // Derived from bIndexBtop0_Cb
-#define bAlphaInternal_Cb 84 // Derived from bIndexAinternal_Cb
-#define bBetaInternal_Cb 85 // Derived from bIndexBinternal_Cb
-
-#define ExtBitFlags 86 // Extended bit flags, such as disable ILDB bits
-
-// Shared between Cb and Cr
-#define bTc0_v00_0_Cr bTc0_v00_0_Cb
-#define bTc0_v10_0_Cr bTc0_v10_0_Cb
-#define bTc0_v20_0_Cr bTc0_v20_0_Cb
-#define bTc0_v30_0_Cr bTc0_v30_0_Cb
-#define bTc0_v02_Cr bTc0_v02_Cb
-#define bTc0_v12_Cr bTc0_v12_Cb
-#define bTc0_v22_Cr bTc0_v22_Cb
-#define bTc0_v32_Cr bTc0_v32_Cb
-#define bTc0_h00_0_Cr bTc0_h00_0_Cb
-#define bTc0_h01_0_Cr bTc0_h01_0_Cb
-#define bTc0_h02_0_Cr bTc0_h02_0_Cb
-#define bTc0_h03_0_Cr bTc0_h03_0_Cb
-#define bTc0_h20_Cr bTc0_h20_Cb
-#define bTc0_h21_Cr bTc0_h21_Cb
-#define bTc0_h22_Cr bTc0_h22_Cb
-#define bTc0_h23_Cr bTc0_h23_Cb
-
-#define bAlphaLeft0_Cr bAlphaLeft0_Cb
-#define bBetaLeft0_Cr bBetaLeft0_Cb
-#define bAlphaTop0_Cr bAlphaTop0_Cb
-#define bBetaTop0_Cr bBetaTop0_Cb
-#define bAlphaInternal_Cr bAlphaInternal_Cb
-#define bBetaInternal_Cr bBetaInternal_Cb
-
-
-#endif
-
-
-//========== End of Child Variables ===============================================================
-
-#if !defined(COMBINED_KERNEL)
-#define ILDB_LABEL(x) x // No symbol extension for standalone kernels
-#endif
-
-#endif // !defined(__AVC_ILDB_HEADER__)
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Child_Field_UV.asm b/src/shaders/h264/ildb/AVC_ILDB_Child_Field_UV.asm
deleted file mode 100644
index a04e5cd..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Child_Field_UV.asm
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "AVC_ILDB_Child_UV.asm"
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Child_Field_Y.asm b/src/shaders/h264/ildb/AVC_ILDB_Child_Field_Y.asm
deleted file mode 100644
index 4a39940..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Child_Field_Y.asm
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "AVC_ILDB_Child_Y.asm"
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Child_Mbaff_UV.asm b/src/shaders/h264/ildb/AVC_ILDB_Child_Mbaff_UV.asm
deleted file mode 100644
index c1232d0..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Child_Mbaff_UV.asm
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// AVC Child Kernel (Vertical and horizontal de-block a 4:2:0 MB UV comp)
-//
-// First de-block vertical edges from left to right.
-// Second de-block horizontal edge from top to bottom.
-//
-// For 4:2:0, chroma is always de-blocked at 8x8.
-// NV12 format allows to filter U and V together.
-//
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////
-#define AVC_ILDB
-
-.kernel AVC_ILDB_CHILD_MBAFF_UV
-#if defined(COMBINED_KERNEL)
-ILDB_LABEL(AVC_ILDB_CHILD_UV):
-#endif
-
-#include "SetupVPKernel.asm"
-#include "AVC_ILDB.inc"
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xE997:w
-#endif
-
- // Setup temp buf used by load and save code
- #define BUF_B RTempB
- #define BUF_W RTempW
- #define BUF_D RTempD
-
- // Init local variables
- mul (4) ORIX_CUR<2>:w ORIX<0;1,0>:w 16:w { NoDDClr } // Expand X addr to bytes, repeat 4 times
- mul (4) ORIY_CUR<2>:w ORIY<0;1,0>:w 32:w { NoDDChk } // Expand Y addr to bytes, repeat 4 times
-
- mov (2) f0.0<1>:w 0:w
-
- mov (1) GateWayOffsetC:uw ORIY:uw // Use row # as Gateway offset
-
- //=== Null Kernel ===============================================================
-// jmpi ILDB_LABEL(POST_ILDB_UV)
- //===============================================================================
-
- //====================================================================================
- // Assuming the MB control data is laid out in scan line order in a rectangle with width = 16 bytes.
- // Control data has dimension of X x Y = 16 x N bytes, where N = W x H / 16
- // Each MB has 256 bytes of control data
-
- // For CRESTLINE, 256 bytes are stored in memory and fetched into GRF.
- // MB_offset = MBsCntX * CurRow + CurCol
- // Byte_offset = MB_offset * (256 << Mbaff_flag), Mbaff_flag = 0 or 1.
- // Base address of a control data block = (x, y) = (0, y'=y/x), region width is 16 bytes
- // where y' = Byte_offset / 16 = MB_offset * (16 << Mbaff_flag)
- // MBCntrlDataOffsetY holds y'.
-
- // For BearLake-C, 64 bytes are stored in memory and dataport expands to 256 bytes. Need to use a special read command on BL-C.
- // MB_offset = MBsCntX * CurRow + CurCol
- // Byte_offset = MB_offset * (64 << Mbaff_flag), Mbaff_flag = 0 or 1.
- // MBCntrlDataOffsetY holds globel byte offset.
-
-#if !defined(DEV_CL)
- mul (1) CntrlDataOffsetY:ud MBsCntX:w ORIY:w
- add (1) CntrlDataOffsetY:ud CntrlDataOffsetY:ud ORIX:w
- mul (1) CntrlDataOffsetY:ud CntrlDataOffsetY:ud 128:uw
-#endif
- //====================================================================================
-
- add (1) ORIX_LEFT:w ORIX_LEFT:w -4:w
- add (1) ORIY_TOP:w ORIY_TOP:w -4:w
-
- //=========== Process Top MB ============
- and (1) BitFields:w BitFields:w TopFieldFlag:w // Reset BotFieldFlag
-
- // Build a ramp from 0 to 15
- mov (16) RRampW(0)<1> RampConstC<0;8,1>:ub
- add (8) RRampW(0,8)<1> RRampW(0,8) 8:w // RRampW = ramp 15-0
-
-ILDB_LABEL(RE_ENTRY_UV): // for bootom field
-
- // Load current MB control data
-#if defined(DEV_CL)
- #include "Load_ILDB_Cntrl_Data_64DW.asm" // Crestline
-#else
- #include "Load_ILDB_Cntrl_Data_16DW.asm" // Cantiga and beyond
-#endif
-
- // Init addr register for vertical control data
- mov (1) ECM_AddrReg<1>:w CNTRL_DATA_BASE:w // Init ECM_AddrReg
-
- // Use free cycles here
- // Check loaded control data
- and.z.f0.1 (16) null<1>:uw r[ECM_AddrReg, wEdgeCntlMap_IntLeftVert]<16;16,1>:uw 0xFFFF:uw // Skip ILDB?
- and.nz.f0.0 (1) null:w r[ECM_AddrReg, ExtBitFlags]:ub DISABLE_ILDB_FLAG:w // Skip ILDB?
-
- // Set DualFieldMode for all data read, write and deblocking
- and (1) CTemp1_W:uw r[ECM_AddrReg, BitFlags]:ub FieldModeAboveMbFlag+FieldModeCurrentMbFlag:uw
-
- // Get Vert Edge Pattern (frame vs. field MBs)
- and (1) VertEdgePattern:uw r[ECM_AddrReg, BitFlags]:ub FieldModeLeftMbFlag+FieldModeCurrentMbFlag:uw
-
- (f0.1.all16h) jmpi ILDB_LABEL(SKIP_ILDB_UV) // Skip ILDB
- (f0.0) jmpi ILDB_LABEL(SKIP_ILDB_UV) // Skip ILDB
-
- // Set DualFieldMode for all data read, write and deblocking
-// and (1) CTemp1_W:uw r[ECM_AddrReg, BitFlags]:ub FieldModeAboveMbFlag+FieldModeCurrentMbFlag:uw
- cmp.z.f0.0 (1) null:w CTemp1_W:uw ABOVE_FIELD_CUR_FRAME:w
- and (1) DualFieldMode:w f0.0:w 0x0001:w
-
- #include "load_Cur_UV_8x8T_Mbaff.asm" // Load transposed data 8x8
- #include "load_Left_UV_2x8T_Mbaff.asm" // Load left MB (2x8) UV data from memory if exists
-
- #include "Transpose_Cur_UV_8x8.asm"
- #include "Transpose_Left_UV_2x8.asm"
-
-
- //---------- Perform vertical ILDB filting on UV ----------
- #include "AVC_ILDB_Filter_Mbaff_UV_v.asm"
- //---------------------------------------------------------
-
- #include "save_Left_UV_8x2T_Mbaff.asm" // Write left MB (2x8) Y data to memory if exists
- #include "load_Top_UV_8x2_Mbaff.asm" // Load top MB (8x2) Y data from memory if exists
-
- #include "Transpose_Cur_UV_8x8.asm" // Transpose a MB for horizontal edge de-blocking
-
- //---------- Perform horizontal ILDB filting on UV ----------
- #include "AVC_ILDB_Filter_Mbaff_UV_h.asm"
- //-----------------------------------------------------------
-
- #include "save_Cur_UV_8x8_Mbaff.asm" // Write 8x8
- #include "save_Top_UV_8x2_Mbaff.asm" // Write top MB (8x2) if not the top row
-
- //-----------------------------------------------------------
-ILDB_LABEL(SKIP_ILDB_UV):
-
- and.z.f0.0 (1) null:w BitFields:w BotFieldFlag:w
-
- //=========== Process Bottom MB ============
- or (1) BitFields:w BitFields:w BotFieldFlag:w // Set BotFieldFlag to 1
- (f0.0) jmpi ILDB_LABEL(RE_ENTRY_UV) // Loop back for bottom deblocking
-
- // Fall through to finish
-
- //=========== Check write commit of the last write ============
- mov (8) WritebackResponse(0)<1> WritebackResponse(0)
-
-ILDB_LABEL(POST_ILDB_UV):
-
- // Send notification thru Gateway to root thread, update chroma Status[CurRow]
- #include "AVC_ILDB_ForwardMsg.asm"
-
-#if !defined(GW_DCN) // For non-ILK chipsets
- //child send EOT : Request type = 1
- END_CHILD_THREAD
-#endif // !defined(DEV_ILK)
-
- // The thread finishs here
- //------------------------------------------------------------------------------
-
- ////////////////////////////////////////////////////////////////////////////////
- // Include other subrutines being called
- #include "AVC_ILDB_Chroma_Core_Mbaff.asm"
-
-#if !defined(COMBINED_KERNEL) // For standalone kernel only
-.end_code
-
-.end_kernel
-#endif
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Child_Mbaff_Y.asm b/src/shaders/h264/ildb/AVC_ILDB_Child_Mbaff_Y.asm
deleted file mode 100644
index 1bfcdc2..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Child_Mbaff_Y.asm
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// AVC Child Kernel (Vertical and horizontal de-block a 4:2:0 MB Y comp)
-//
-// First, de-block vertical edges from left to right.
-// Second, de-block horizontal edge from top to bottom.
-//
-// ***** MBAFF Mode *****
-// This version deblocks top MB first, followed by bottom MB.
-//
-// Need variable CurMB to indicate top MB or bottom MB (CurMB = 0 or 1).
-// We can use BotFieldFlag in BitFields to represent it.
-//
-// Usage:
-// 1) Access control data for top
-// CntrlDataOffsetY + CurMB * Control data block size (64 DWs for CL, 16 DWs for BLC)
-//
-// 2) Load frame/field video data based on flags: FieldModeCurrentMbFlag, FieldModeLeftMbFlag, FieldModeaboveMbFlag,
-//
-// E.g.
-// if (pCntlData->BitField & FieldModeCurrentMbFlag)
-// cur_y = ORIX_CUR.y + CurMB * 1; // Add field vertical offset for bot field MB .
-// else
-// cur_y = ORIX_CUR.y + CurMB * MB_Rows_Y; // Add bottom MB vertical offset for bot MB
-//
-//
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////
-#define AVC_ILDB
-
-.kernel AVC_ILDB_CHILD_MBAFF_Y
-#if defined(COMBINED_KERNEL)
-ILDB_LABEL(AVC_ILDB_CHILD_Y):
-#endif
-
-#include "SetupVPKernel.asm"
-#include "AVC_ILDB.inc"
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xE998:w
-#endif
-
- // Setup temp buf used by load and save code
- #define BUF_B RTempB
- #define BUF_D RTempD
-
- // Init local variables
- // These coordinates are in progressive fashion
- mul (4) ORIX_CUR<2>:w ORIX<0;1,0>:w 16:w { NoDDClr } // Expand X addr to bytes, repeat 4 times
- mul (4) ORIY_CUR<2>:w ORIY<0;1,0>:w 32:w { NoDDChk } // Expand Y addr to bytes, repeat 4 times
-
- mov (2) f0.0<1>:w 0:w
-
- mov (1) GateWayOffsetC:uw ORIY:uw // Use row # as Gateway offset
-
- //=== Null Kernel ===============================================================
-// jmpi POST_ILDB
- //===============================================================================
-
- //====================================================================================
- // Assuming the MB control data is laid out in scan line order in a rectangle with width = 16 bytes.
- // Control data has dimension of X x Y = 16 x N bytes, where N = W x H / 16
- // Each MB has 256 bytes of control data
-
- // For CRESTLINE, 256 bytes are stored in memory and fetched into GRF.
- // MB_offset = MBsCntX * CurRow + CurCol
- // Byte_offset = MB_offset * (256 << Mbaff_flag), Mbaff_flag = 0 or 1.
- // Base address of a control data block = (x, y) = (0, y'=y/x), region width is 16 bytes
- // where y' = Byte_offset / 16 = MB_offset * (16 << Mbaff_flag)
- // MBCntrlDataOffsetY holds y'.
-
- // For BearLake-C, 64 bytes are stored in memory and dataport expands to 256 bytes. Need to use a special read command on BL-C.
- // MB_offset = MBsCntX * CurRow + CurCol
- // Byte_offset = MB_offset * (64 << Mbaff_flag), Mbaff_flag = 0 or 1.
- // MBCntrlDataOffsetY holds globel byte offset.
-
-#if !defined(DEV_CL)
- mul (1) CntrlDataOffsetY:ud MBsCntX:w ORIY:w
- add (1) CntrlDataOffsetY:ud CntrlDataOffsetY:ud ORIX:w
- mul (1) CntrlDataOffsetY:ud CntrlDataOffsetY:ud 128:uw
-#endif
-
- //====================================================================================
-
- add (1) ORIX_LEFT:w ORIX_LEFT:w -4:w
- add (1) ORIY_TOP:w ORIY_TOP:w -4:w
-
-
- //=========== Process Top MB ============
- and (1) BitFields:w BitFields:w TopFieldFlag:w // Reset BotFieldFlag
-
-RE_ENTRY: // for bootom field
-
- // Load current MB control data
-#if defined(DEV_CL)
- #include "Load_ILDB_Cntrl_Data_64DW.asm" // Crestline
-#else
- #include "Load_ILDB_Cntrl_Data_16DW.asm" // Cantiga and beyond
-#endif
-
- // Init addr register for vertical control data
- mov (1) ECM_AddrReg<1>:w CNTRL_DATA_BASE:w // Init edge control map AddrReg
-
- // Check loaded control data
- and.z.f0.1 (16) null<1>:uw r[ECM_AddrReg, wEdgeCntlMap_IntLeftVert]<16;16,1>:uw 0xFFFF:uw // Skip ILDB?
- and.nz.f0.0 (1) null:w r[ECM_AddrReg, ExtBitFlags]:ub DISABLE_ILDB_FLAG:w // Skip ILDB?
-
- // Use free cycles here
- // Set DualFieldMode for all data read, write and deblocking
- and (1) CTemp1_W:uw r[ECM_AddrReg, BitFlags]:ub FieldModeAboveMbFlag+FieldModeCurrentMbFlag:uw
-
- // Get Vert Edge Pattern (frame vs. field MBs)
- and (1) VertEdgePattern:uw r[ECM_AddrReg, BitFlags]:ub FieldModeLeftMbFlag+FieldModeCurrentMbFlag:uw
-
- (f0.1.all16h) jmpi SKIP_ILDB // Skip ILDB
- (f0.0) jmpi SKIP_ILDB // Skip ILDB
-
- // Set DualFieldMode for all data read, write and deblocking
-// and (1) CTemp1_W:uw r[ECM_AddrReg, BitFlags]:ub FieldModeAboveMbFlag+FieldModeCurrentMbFlag:uw
- cmp.z.f0.0 (1) null:w CTemp1_W:uw ABOVE_FIELD_CUR_FRAME:w
- and (1) DualFieldMode:w f0.0:w 0x0001:w
-
- // Load current MB // DDD1
- #include "load_Cur_Y_16x16T_Mbaff.asm" // Load cur Y, 16x16, transpose
- #include "load_Left_Y_4x16T_Mbaff.asm" // Load left MB (4x16) Y data from memory if exists
-
- #include "Transpose_Cur_Y_16x16.asm"
- #include "Transpose_Left_Y_4x16.asm"
-
- //---------- Perform vertical ILDB filting on Y----------
- #include "AVC_ILDB_Filter_Mbaff_Y_v.asm"
- //-------------------------------------------------------
-
- #include "save_Left_Y_16x4T_Mbaff.asm" // Write left MB (4x16) Y data to memory if exists
- #include "load_Top_Y_16x4_Mbaff.asm" // Load top MB (16x4) Y data from memory if exists
- #include "Transpose_Cur_Y_16x16.asm" // Transpose a MB for horizontal edge de-blocking
-
- //---------- Perform horizontal ILDB filting on Y ----------
- #include "AVC_ILDB_Filter_Mbaff_Y_h.asm"
- //----------------------------------------------------------
-
- #include "save_Cur_Y_16x16_Mbaff.asm" // Write cur MB (16x16)
- #include "save_Top_Y_16x4_Mbaff.asm" // Write top MB (16x4) if not the top row
-
-SKIP_ILDB:
- //----------------------------------------------------------
- and.z.f0.0 (1) null:w BitFields:w BotFieldFlag:w
-
- //=========== Process Bottom MB ============
- or (1) BitFields:w BitFields:w BotFieldFlag:w // Set BotFieldFlag to 1
- (f0.0) jmpi RE_ENTRY // Loop back for bottom deblocking
-
- // Fall through to finish
-
- //=========== Check write commit of the last write ============
- mov (8) WritebackResponse(0)<1> WritebackResponse(0)
-
-POST_ILDB:
-
- //---------------------------------------------------------------------------
- // Send notification thru Gateway to root thread, update luma Status[CurRow]
-
- #include "AVC_ILDB_ForwardMsg.asm"
-
-#if !defined(GW_DCN) // For non-ILK chipsets
- //child send EOT : Request type = 1
- END_CHILD_THREAD
-#endif // !defined(DEV_ILK)
-
- // The thread finishs here
- //------------------------------------------------------------------------------
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // Include other subrutines being called
- #include "AVC_ILDB_Luma_Core_Mbaff.asm"
-
-#if !defined(COMBINED_KERNEL) // For standalone kernel only
-.end_code
-
-.end_kernel
-#endif
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Child_UV.asm b/src/shaders/h264/ildb/AVC_ILDB_Child_UV.asm
deleted file mode 100644
index 401ee68..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Child_UV.asm
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// AVC Child Kernel (Vertical and horizontal de-block a 4:2:0 MB UV comp)
-//
-// First de-block vertical edges from left to right.
-// Second de-block horizontal edge from top to bottom.
-//
-// For 4:2:0, chroma is always de-blocked at 8x8.
-// NV12 format allows to filter U and V together.
-//
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////
-#define AVC_ILDB
-
-.kernel AVC_ILDB_CHILD_UV
-#if defined(COMBINED_KERNEL)
-ILDB_LABEL(AVC_ILDB_CHILD_UV):
-#endif
-
-#include "SetupVPKernel.asm"
-#include "AVC_ILDB.inc"
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0x9997:w
-#endif
-
- // Init local variables
- shl (8) ORIX_CUR<1>:w ORIX<0;2,1>:w 4:w // Expand addr to bytes, repeat (x,y) 4 times
-
- // Init addr register for vertical control data
- mov (1) ECM_AddrReg<1>:w CNTRL_DATA_BASE:w // Init ECM_AddrReg
-
- //=== Null Kernel ===============================================================
-// jmpi ILDB_LABEL(POST_ILDB_UV_UV)
- //===============================================================================
-
-#if defined(DEV_CL)
- mov (1) acc0.0:w 240:w
-#else
- //====================================================================================
- // For BearLake-C, 64 bytes are stored in memory and dataport expands to 256 bytes. Need to use a special read command on BL-C.
- // MB_offset = MBsCntX * CurRow + CurCol
- // MBCntrlDataOffsetY = globel_byte_offset = MB_offset * 64
- mul (1) CntrlDataOffsetY:ud MBsCntX:w ORIY:w
- add (1) CntrlDataOffsetY:ud CntrlDataOffsetY:ud ORIX:w
-
- // Assign to MSGSRC.2:ud for memory access
- // mul (1) CntrlDataOffsetY:ud CntrlDataOffsetY:ud 64:uw
- mul (1) MSGSRC.2:ud CntrlDataOffsetY:ud 64:uw
-
- mov (1) acc0.0:w 320:w
-#endif
- mac (1) URBOffsetC:w ORIY:w 4:w // UV URB entries are right after Y entries
-
-
- // Init local variables
-// shl (8) ORIX_CUR<1>:w ORIX<0;2,1>:w 4:w // Expand addr to bytes, repeat (x,y) 4 times
- add (1) ORIX_LEFT:w ORIX_LEFT:w -4:w
- add (1) ORIY_TOP:w ORIY_TOP:w -4:w
-
- // Build a ramp from 0 to 15
- mov (16) RRampW(0)<1> RampConstC<0;8,1>:ub
- add (8) RRampW(0,8)<1> RRampW(0,8) 8:w // RRampW = ramp 15-0
-
- // Load current MB control data
-#if defined(DEV_CL)
- #if defined(_APPLE)
- #include "Load_ILDB_Cntrl_Data_22DW.asm" // Crestline for Apple, progressive only
- #else
- #include "Load_ILDB_Cntrl_Data_64DW.asm" // Crestline
- #endif
-#else
- #include "Load_ILDB_Cntrl_Data_16DW.asm" // Cantiga and beyond
-#endif
-
- // Check loaded control data
- #if defined(_APPLE)
- and.z.f0.1 (8) null<1>:uw r[ECM_AddrReg, wEdgeCntlMap_IntLeftVert]<8;8,1>:uw 0xFFFF:uw // Skip ILDB?
- (f0.1) and.z.f0.1 (2) null<1>:uw r[ECM_AddrReg, wEdgeCntlMapA_ExtTopHorz0]<2;2,1>:uw 0xFFFF:uw // Skip ILDB?
- #else
- and.z.f0.1 (16) null<1>:uw r[ECM_AddrReg, wEdgeCntlMap_IntLeftVert]<16;16,1>:uw 0xFFFF:uw // Skip ILDB?
- #endif
-
- and.nz.f0.0 (1) null:w r[ECM_AddrReg, ExtBitFlags]:ub DISABLE_ILDB_FLAG:w // Skip ILDB?
-
- mov (1) GateWayOffsetC:uw ORIY:uw // Use row # as Gateway offset
-
- #if defined(_APPLE)
- (f0.1.all8h) jmpi ILDB_LABEL(READ_FOR_URB_UV) // Skip ILDB
- #else
- (f0.1.all16h) jmpi ILDB_LABEL(READ_FOR_URB_UV) // Skip ILDB
- #endif
-
- (f0.0) jmpi ILDB_LABEL(READ_FOR_URB_UV) // Skip ILDB
-
-
-
- #include "load_Cur_UV_8x8T.asm" // Load transposed data 8x8
-// #include "load_Left_UV_2x8T.asm"
- #include "load_Top_UV_8x2.asm" // Load top MB (8x2) Y data from memory if exists
-
- #include "Transpose_Cur_UV_8x8.asm"
-// #include "Transpose_Left_UV_2x8.asm"
-
-
- //---------- Perform vertical ILDB filting on UV ----------
- #include "AVC_ILDB_Filter_UV_v.asm"
- //---------------------------------------------------------
-
- #include "save_Left_UV_8x2T.asm" // Write left MB (2x8) Y data to memory if exists
- #include "Transpose_Cur_UV_8x8.asm" // Transpose a MB for horizontal edge de-blocking
-
- //---------- Perform horizontal ILDB filting on UV ----------
- #include "AVC_ILDB_Filter_UV_h.asm"
- //-----------------------------------------------------------
-
- #include "save_Cur_UV_8x8.asm" // Write 8x8
- #include "save_Top_UV_8x2.asm" // Write top MB (8x2) if not the top row
-
- //---------- Write right most 4 columns of cur MB to URB ----------
- // Transpose the right most 2 cols 2x8 (word) in GRF to 8x2 in BUF_D. It is 2 left most cols in cur MB.
- #include "Transpose_Cur_UV_2x8.asm"
-
-ILDB_LABEL(WRITE_URB_UV):
- mov (8) m1<1>:ud LEFT_TEMP_D(1)<8;8,1> // Copy 1 GRF to 1 URB entry (U+V)
-
- #include "writeURB_UV_Child.asm"
- //-----------------------------------------------------------------
-
- //=========== Check write commit of the last write ============
- mov (8) WritebackResponse(0)<1> WritebackResponse(0)
-
-ILDB_LABEL(POST_ILDB_UV):
- //---------------------------------
-
- // Send notification thru Gateway to root thread, update chroma Status[CurRow]
- #include "AVC_ILDB_ForwardMsg.asm"
-
-#if !defined(GW_DCN) // For non-ILK chipsets
- //child send EOT : Request type = 1
- END_CHILD_THREAD
-#endif // !defined(DEV_ILK)
-
- // The thread finishs here
- //------------------------------------------------------------------------------
-
-ILDB_LABEL(READ_FOR_URB_UV):
- // Still need to prepare URB data for the right neighbor MB
- #include "load_Cur_UV_Right_Most_2x8.asm" // Load cur MB ( right most 4x16) Y data from memory
- #include "Transpose_Cur_UV_Right_Most_2x8.asm"
-// jmpi ILDB_LABEL(WRITE_URB_UV)
-
- mov (8) m1<1>:ud LEFT_TEMP_D(1)<8;8,1> // Copy 1 GRF to 1 URB entry (U+V)
-
- #include "writeURB_UV_Child.asm"
- //-----------------------------------------------------------------
-
- // Send notification thru Gateway to root thread, update chroma Status[CurRow]
- #include "AVC_ILDB_ForwardMsg.asm"
-
-#if !defined(GW_DCN) // For non-ILK chipsets
- //child send EOT : Request type = 1
- END_CHILD_THREAD
-#endif // !defined(DEV_ILK)
-
- // The thread finishs here
- //------------------------------------------------------------------------------
-
-
- ////////////////////////////////////////////////////////////////////////////////
- // Include other subrutines being called
-// #include "AVC_ILDB_Luma_Core.asm"
- #include "AVC_ILDB_Chroma_Core.asm"
-
-
-#if !defined(COMBINED_KERNEL) // For standalone kernel only
-.end_code
-
-.end_kernel
-#endif
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Child_Y.asm b/src/shaders/h264/ildb/AVC_ILDB_Child_Y.asm
deleted file mode 100644
index 99a02c7..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Child_Y.asm
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// AVC Child Kernel (Vertical and horizontal de-block a 4:2:0 MB Y comp)
-//
-// First, de-block vertical edges from left to right.
-// Second, de-block horizontal edge from top to bottom.
-//
-// If transform_size_8x8_flag = 1, luma is de-blocked at 8x8. Otherwise, luma is de-blocked at 4x4.
-//
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////
-#define AVC_ILDB
-
-.kernel AVC_ILDB_CHILD_Y
-#if defined(COMBINED_KERNEL)
-ILDB_LABEL(AVC_ILDB_CHILD_Y):
-#endif
-
-#include "SetupVPKernel.asm"
-#include "AVC_ILDB.inc"
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0x9998:w
-#endif
-
- // Init local variables
- shl (8) ORIX_CUR<1>:w ORIX<0;2,1>:w 4:w // Expand addr to bytes, repeat (x,y) 4 times
-
- // Init addr register for vertical control data
- mov (1) ECM_AddrReg<1>:w CNTRL_DATA_BASE:w // Init edge control map AddrReg
-
- //=== Null Kernel ===============================================================
-// jmpi ILDB_LABEL(POST_ILDB_Y)
- //===============================================================================
-
- mul (1) URBOffsetC:uw ORIY:uw 4:w
-
-#if !defined(DEV_CL)
- //====================================================================================
- // For BearLake-C, 64 bytes are stored in memory and dataport expands to 256 bytes. Need to use a special read command on BL-C.
- // MB_offset = MBsCntX * CurRow + CurCol
- // MBCntrlDataOffsetY = globel_byte_offset = MB_offset * 64
- mul (1) CntrlDataOffsetY:ud MBsCntX:w ORIY:w
- add (1) CntrlDataOffsetY:ud CntrlDataOffsetY:ud ORIX:w
-
- // Assign to MSGSRC.2:ud for memory access
- // mul (1) CntrlDataOffsetY:ud CntrlDataOffsetY:ud 64:uw
- mul (1) MSGSRC.2:ud CntrlDataOffsetY:ud 64:uw
-
-#endif
-
- // Load current MB control data
-#if defined(DEV_CL)
- #if defined(_APPLE)
- #include "Load_ILDB_Cntrl_Data_22DW.asm" // Crestline for Apple, progressive only
- #else
- #include "Load_ILDB_Cntrl_Data_64DW.asm" // Crestline
- #endif
-#else
- #include "Load_ILDB_Cntrl_Data_16DW.asm" // Cantiga and beyond
-#endif
-
- // Check loaded control data
- #if defined(_APPLE)
- and.z.f0.1 (8) null<1>:uw r[ECM_AddrReg, wEdgeCntlMap_IntLeftVert]<8;8,1>:uw 0xFFFF:uw // Skip ILDB?
- (f0.1) and.z.f0.1 (2) null<1>:uw r[ECM_AddrReg, wEdgeCntlMapA_ExtTopHorz0]<2;2,1>:uw 0xFFFF:uw // Skip ILDB?
- #else
- and.z.f0.1 (16) null<1>:uw r[ECM_AddrReg, wEdgeCntlMap_IntLeftVert]<16;16,1>:uw 0xFFFF:uw // Skip ILDB?
- #endif
-
- and.nz.f0.0 (1) null:w r[ECM_AddrReg, ExtBitFlags]:ub DISABLE_ILDB_FLAG:w // Skip ILDB?
-
- // Use free cycles here
- add (1) ORIX_LEFT:w ORIX_LEFT:w -4:w
-// add (1) ORIY_TOP:w ORIY_TOP:w -4:w
- mov (1) GateWayOffsetC:uw ORIY:uw // Use row # as Gateway offset
-
- #if defined(_APPLE)
- (f0.1.all8h) jmpi ILDB_LABEL(READ_FOR_URB_Y) // Skip ILDB
- #else
- (f0.1.all16h) jmpi ILDB_LABEL(READ_FOR_URB_Y) // Skip ILDB
- #endif
-
- (f0.0) jmpi ILDB_LABEL(READ_FOR_URB_Y) // Skip ILDB
-
- add (1) ORIY_TOP:w ORIY_TOP:w -4:w
-
- // Bettr performance is observed if boundary MBs are not checked and skipped.
-
- #include "load_Cur_Y_16x16T.asm" // Load cur MB Y, 16x16, transpose
-// #include "load_Left_Y_4x16T.asm" // Load left MB (4x16) Y data from memory
- #include "load_Top_Y_16x4.asm" // Load top MB (16x4) Y data from memory
-
- #include "Transpose_Cur_Y_16x16.asm"
-// #include "Transpose_Left_Y_4x16.asm"
-
- //---------- Perform vertical ILDB filting on Y ---------
- #include "AVC_ILDB_Filter_Y_v.asm"
- //-------------------------------------------------------
-
- #include "save_Left_Y_16x4T.asm" // Write left MB (4x16) Y data to memory
- #include "Transpose_Cur_Y_16x16.asm" // Transpose a MB for horizontal edge de-blocking
-
- //---------- Perform horizontal ILDB filting on Y -------
- #include "AVC_ILDB_Filter_Y_h.asm"
- //-------------------------------------------------------
-
- #include "save_Cur_Y_16x16.asm" // Write cur MB (16x16)
- #include "save_Top_Y_16x4.asm" // Write top MB (16x4)
-
- //---------- Write right most 4 columns of cur MB to URB ----------
- // Transpose the right most 4 cols 4x16 in GRF to 16x4 in LEFT_TEMP_B. It is 4 left most cols in cur MB.
- #include "Transpose_Cur_Y_4x16.asm"
-
-ILDB_LABEL(WRITE_URB_Y):
- // Note: LEFT_TEMP_B(2) = TOP_TEMP_B(0), TOP_TEMP_B must be avail
- mov (16) m1<1>:ud LEFT_TEMP_D(2)<8;8,1> // Copy 2 GRFs to 2 URB entries (Y)
-
- #include "writeURB_Y_Child.asm"
- //-----------------------------------------------------------------
-
- //=========== Check write commit of the last write ============
- mov (8) WritebackResponse(0)<1> WritebackResponse(0)
-
-ILDB_LABEL(POST_ILDB_Y):
- // Send notification thru Gateway to root thread, update luma Status[CurRow]
- #include "AVC_ILDB_ForwardMsg.asm"
-
-#if !defined(GW_DCN) // For non-ILK chipsets
- //child send EOT : Request type = 1
- END_CHILD_THREAD
-#endif // !defined(DEV_ILK)
-
- // The thread finishs here
- //------------------------------------------------------------------------------
-
-ILDB_LABEL(READ_FOR_URB_Y):
- // Still need to prepare URB data for the right neighbor MB
- #include "load_Cur_Y_Right_Most_4x16.asm" // Load cur MB ( right most 4x16) Y data from memory
- #include "Transpose_Cur_Y_Right_Most_4x16.asm"
-// jmpi ILDB_LABEL(WRITE_URB_Y)
-
- // Note: LEFT_TEMP_B(2) = TOP_TEMP_B(0), TOP_TEMP_B must be avail
- mov (16) m1<1>:ud LEFT_TEMP_D(2)<8;8,1> // Copy 2 GRFs to 2 URB entries (Y)
-
- #include "writeURB_Y_Child.asm"
- //-----------------------------------------------------------------
-
- // Send notification thru Gateway to root thread, update luma Status[CurRow]
- #include "AVC_ILDB_ForwardMsg.asm"
-
-#if !defined(GW_DCN) // For non-ILK chipsets
- //child send EOT : Request type = 1
- END_CHILD_THREAD
-#endif // !defined(DEV_ILK)
-
- // The thread finishs here
- //------------------------------------------------------------------------------
-
- ////////////////////////////////////////////////////////////////////////////////
- // Include other subrutines being called
- #include "AVC_ILDB_Luma_Core.asm"
-// #include "AVC_ILDB_Chroma_Core.asm"
-
-
-#if !defined(COMBINED_KERNEL) // For standalone kernel only
-.end_code
-
-.end_kernel
-#endif
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Chroma_Core.asm b/src/shaders/h264/ildb/AVC_ILDB_Chroma_Core.asm
deleted file mode 100644
index cffaab7..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Chroma_Core.asm
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__AVC_ILDB_CHROMA_CORE__) // Make sure this file is only included once
-#define __AVC_ILDB_CHROMA_CORE__
-
-////////// AVC ILDB Chroma Core /////////////////////////////////////////////////////////////////////////////////
-//
-// This core performs AVC U or V ILDB filtering on one horizontal edge (8 pixels) of a MB.
-// If data is transposed, it can also de-block a vertical edge.
-//
-// Bafore calling this subroutine, caller needs to set the following parameters.
-//
-// - EdgeCntlMap1 // Edge control map A
-// - EdgeCntlMap2 // Edge control map B
-// - P_AddrReg // Src and dest address register for P pixels
-// - Q_AddrReg // Src and dest address register for Q pixels
-// - alpha // alpha corresponding to the edge to be filtered
-// - beta // beta corresponding to the edge to be filtered
-// - tc0 // tc0 corresponding to the edge to be filtered
-//
-// U or V:
-// +----+----+----+----+
-// | P1 | p0 | q0 | q1 |
-// +----+----+----+----+
-//
-// p1 = r[P_AddrReg, 0]<16;8,2>
-// p0 = r[P_AddrReg, 16]<16;8,2>
-// q0 = r[Q_AddrReg, 0]<16;8,2>
-// q1 = r[Q_AddrReg, 16]<16;8,2>
-//
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// The region is both src and dest
-// P0-P3 and Q0-Q3 should be only used if they have not been modified to new values
-#undef P1
-#undef P0
-#undef Q0
-#undef Q1
-
-#define P1 r[P_AddrReg, 0]<16;8,2>:ub
-#define P0 r[P_AddrReg, 16]<16;8,2>:ub
-#define Q0 r[Q_AddrReg, 0]<16;8,2>:ub
-#define Q1 r[Q_AddrReg, 16]<16;8,2>:ub
-
-// New region as dest
-#undef NewP0
-#undef NewQ0
-
-#define NewP0 r[P_AddrReg, 16]<2>:ub
-#define NewQ0 r[Q_AddrReg, 0]<2>:ub
-
-// Filter one chroma edge
-FILTER_UV:
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0x1112:w
-#endif
- //---------- Derive filterSampleflag in AVC spec, equition (8-469) ----------
- // bS is in MaskA
-
- // Src copy of the p1, p0, q0, q1
-// mov (8) p1(0)<1> r[P_AddrReg, 0]<16;8,2>:ub
-// mov (8) p0(0)<1> r[P_AddrReg, 16]<16;8,2>:ub
-// mov (8) q0(0)<1> r[Q_AddrReg, 0]<16;8,2>:ub
-// mov (8) q1(0)<1> r[Q_AddrReg, 16]<16;8,2>:ub
-
-// mov (1) f0.0:uw MaskA:uw
-
- add (8) q0_p0(0)<1> Q0 -P0 // q0-p0
- add (8) TempRow0(0)<1> P1 -P0 // p1-p0
- add (8) TempRow1(0)<1> Q1 -Q0 // q1-q0
-
- // Build FilterSampleFlag
- // abs(q0-p0) < alpha
- (f0.0) cmp.l.f0.0 (16) null:w (abs)q0_p0(0) alpha:w
- // abs(p1-p0) < Beta
- (f0.0) cmp.l.f0.0 (16) null:w (abs)TempRow0(0) beta:w
- // abs(q1-q0) < Beta
- (f0.0) cmp.l.f0.0 (16) null:w (abs)TempRow1(0) beta:w
-
- //-----------------------------------------------------------------------------------------
-
- // if
- (f0.0) if (8) UV_ENDIF1
- // For channels whose edge control map1 = 1 ---> perform de-blocking
-
-// mov (1) f0.1:w MaskB:w {NoMask} // Now check for which algorithm to apply
-
- (f0.1) if (8) UV_ELSE2
-
- // For channels whose edge control map2 = 1 ---> bS = 4 algorithm
- // p0' = (2*p1 + p0 + q1 + 2) >> 2
- // q0' = (2*q1 + q0 + p1 + 2) >> 2
-
- // Optimized version:
- // A = (p1 + q1 + 2)
- // p0' = (p0 + p1 + A) >> 2
- // q0' = (q0 + q1 + A) >> 2
- //------------------------------------------------------------------------------------
-
- // p0' = (2*p1 + p0 + q1 + 2) >> 2
- add (8) acc0<1>:w Q1 2:w
- mac (8) acc0<1>:w P1 2:w
- add (8) acc0<1>:w acc0<8;8,1>:w P0
- shr.sat (8) TempRow0B(0)<2> acc0<8;8,1>:w 2:w
-
- // q0' = (2*q1 + q0 + p1 + 2) >> 2
- add (8) acc0<1>:w P1 2:w
- mac (8) acc0<1>:w Q1 2:w
- add (8) acc0<1>:w acc0<8;8,1>:w Q0
- shr.sat (8) TempRow1B(0)<2> acc0<8;8,1>:w 2:w
-
- mov (8) NewP0 TempRow0B(0) // p0'
- mov (8) NewQ0 TempRow1B(0) // q0'
-
-
-UV_ELSE2:
- else (8) UV_ENDIF2
- // For channels whose edge control map2 = 0 ---> bS < 4 algorithm
-
- // Expand tc0 (tc0 has 4 bytes)
-// mov (8) tc0_exp(0)<1> tc0<1;2,0>:ub {NoMask} // tc0_exp = tc0, each tc0 is duplicated 2 times for 2 adjcent pixels
- mov (8) acc0<1>:w tc0<1;2,0>:ub {NoMask} // tc0_exp = tc0, each tc0 is duplicated 2 times for 2 adjcent pixels
-
- // tc_exp = tc0_exp + 1
-// add (8) tc_exp(0)<1> tc0_exp(0) 1:w
- add (8) tc_exp(0)<1> acc0<8;8,1>:w 1:w
-
- // delta = Clip3(-tc, tc, ((((q0 - p0)<<2) + (p1-q1) + 4) >> 3))
- // 4 * (q0-p0) + p1 - q1 + 4
- add (8) acc0<1>:w P1 4:w
- mac (8) acc0<1>:w q0_p0(0) 4:w
- add (8) acc0<1>:w acc0<8;8,1>:w -Q1
- shr (8) TempRow0(0)<1> acc0<8;8,1>:w 3:w
-
- // tc clip
- cmp.g.f0.0 (8) null:w TempRow0(0) tc_exp(0) // Clip if > tc0
- cmp.l.f0.1 (8) null:w TempRow0(0) -tc_exp(0) // Clip if < -tc0
-
- (f0.0) mov (8) TempRow0(0)<1> tc_exp(0)
- (f0.1) mov (8) TempRow0(0)<1> -tc_exp(0)
-
- // p0' = Clip1(p0 + delta) = Clip3(0, 0xFF, p0 + delta)
- add.sat (8) TempRow1B(0)<2> P0 TempRow0(0) // p0+delta
-
- // q0' = Clip1(q0 - delta) = Clip3(0, 0xFF, q0 - delta)
- add.sat (8) TempRow0B(0)<2> Q0 -TempRow0(0) // q0-delta
-
- mov (8) NewP0 TempRow1B(0) // p0'
- mov (8) NewQ0 TempRow0B(0) // q0'
-
- endif
-UV_ENDIF2:
-UV_ENDIF1:
- endif
-
-RETURN
-
-#endif // !defined(__AVC_ILDB_CHROMA_CORE__)
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Chroma_Core_Mbaff.asm b/src/shaders/h264/ildb/AVC_ILDB_Chroma_Core_Mbaff.asm
deleted file mode 100644
index e9daade..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Chroma_Core_Mbaff.asm
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-////////// AVC ILDB Chroma Core Mbaff /////////////////////////////////////////////////////////////////////////////////
-//
-// This core performs AVC U or V ILDB filtering on one horizontal edge (8 pixels) of a MB.
-// If data is transposed, it can also de-block a vertical edge.
-//
-// Bafore calling this subroutine, caller needs to set the following parameters.
-//
-// - EdgeCntlMap1 // Edge control map A
-// - EdgeCntlMap2 // Edge control map B
-// - P_AddrReg // Src and dest address register for P pixels
-// - Q_AddrReg // Src and dest address register for Q pixels
-// - alpha // alpha corresponding to the edge to be filtered
-// - beta // beta corresponding to the edge to be filtered
-// - tc0 // tc0 corresponding to the edge to be filtered
-//
-// U or V:
-// +----+----+----+----+
-// | P1 | p0 | q0 | q1 |
-// +----+----+----+----+
-//
-// p1 = r[P_AddrReg, 0]<16;8,2>
-// p0 = r[P_AddrReg, 16]<16;8,2>
-// q0 = r[Q_AddrReg, 0]<16;8,2>
-// q1 = r[Q_AddrReg, 16]<16;8,2>
-//
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// The region is both src and dest
-// P0-P3 and Q0-Q3 should be only used if they have not been modified to new values
-#undef P1
-#undef P0
-#undef Q0
-#undef Q1
-
-#define P1 r[P_AddrReg, 0]<16;8,2>:ub
-#define P0 r[P_AddrReg, 16]<16;8,2>:ub
-#define Q0 r[Q_AddrReg, 0]<16;8,2>:ub
-#define Q1 r[Q_AddrReg, 16]<16;8,2>:ub
-
-// New region as dest
-#undef NewP0
-#undef NewQ0
-
-#define NewP0 r[P_AddrReg, 16]<2>:ub
-#define NewQ0 r[Q_AddrReg, 0]<2>:ub
-
-// Filter one chroma edge - mbaff
-FILTER_UV_MBAFF:
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0x1112:w
-#endif
- //---------- Derive filterSampleflag in AVC spec, equition (8-469) ----------
-
- //===== Assume f0.0 contains MaskA when entering this routine
-// mov (1) f0.0:uw MaskA:uw
-
- add (8) q0_p0(0)<1> Q0 -P0 // q0-p0
- add (8) TempRow0(0)<1> P1 -P0 // p1-p0
- add (8) TempRow1(0)<1> Q1 -Q0 // q1-q0
-
- // Build FilterSampleFlag
- // abs(q0-p0) < alpha
- (f0.0) cmp.l.f0.0 (16) null:w (abs)q0_p0(0) Mbaff_ALPHA(0)
- // abs(p1-p0) < Beta
- (f0.0) cmp.l.f0.0 (16) null:w (abs)TempRow0(0) Mbaff_BETA(0)
- // abs(q1-q0) < Beta
- (f0.0) cmp.l.f0.0 (16) null:w (abs)TempRow1(0) Mbaff_BETA(0)
-
- //-----------------------------------------------------------------------------------------
-
- // if
- (f0.0) if (8) MBAFF_UV_ENDIF1
- // For channels whose edge control map1 = 1 ---> perform de-blocking
-
-// mov (1) f0.1:w MaskB:w {NoMask} // Now check for which algorithm to apply
-
- (f0.1) if (8) MBAFF_UV_ELSE2
-
- // For channels whose edge control map2 = 1 ---> bS = 4 algorithm
- // p0' = (2*p1 + P0 + q1 + 2) >> 2
- // q0' = (2*q1 + q0 + p1 + 2) >> 2
- //------------------------------------------------------------------------------------
-
- // p0' = (2*p1 + p0 + q1 + 2) >> 2
- add (8) acc0<1>:w Q1 2:w
- mac (8) acc0<1>:w P1 2:w
- add (8) acc0<1>:w acc0<8;8,1>:w P0
- shr.sat (8) TempRow0B(0)<2> acc0<8;8,1>:w 2:w
-
- // q0' = (2*q1 + q0 + p1 + 2) >> 2
- add (8) acc0<1>:w P1 2:w
- mac (8) acc0<1>:w Q1 2:w
- add (8) acc0<1>:w acc0<8;8,1>:w Q0
- shr.sat (8) TempRow1B(0)<2> acc0<8;8,1>:w 2:w
-
- mov (8) NewP0 TempRow0B(0) // p0'
- mov (8) NewQ0 TempRow1B(0) // q0'
-
-MBAFF_UV_ELSE2:
- else (8) MBAFF_UV_ENDIF2
- // For channels whose edge control map2 = 0 ---> bS < 4 algorithm
-
- // tc_exp = tc0_exp + 1
- add (8) tc_exp(0)<1> Mbaff_TC0(0) 1:w
-
- // delta = Clip3(-tc, tc, ((((q0 - p0)<<2) + (p1-q1) + 4) >> 3))
- // 4 * (q0-p0) + p1 - q1 + 4
- add (8) acc0<1>:w P1 4:w
- mac (8) acc0<1>:w q0_p0(0) 4:w
- add (8) acc0<1>:w acc0<8;8,1>:w -Q1
- shr (8) TempRow0(0)<1> acc0<8;8,1>:w 3:w
-
- // tc clip
- cmp.g.f0.0 (8) null:w TempRow0(0) tc_exp(0) // Clip if > tc0
- cmp.l.f0.1 (8) null:w TempRow0(0) -tc_exp(0) // Clip if < -tc0
-
- (f0.0) mov (8) TempRow0(0)<1> tc_exp(0)
- (f0.1) mov (8) TempRow0(0)<1> -tc_exp(0)
-
- // p0' = Clip1(p0 + delta) = Clip3(0, 0xFF, p0 + delta)
- add.sat (8) TempRow1B(0)<2> P0 TempRow0(0) // p0+delta
-
- // q0' = Clip1(q0 - delta) = Clip3(0, 0xFF, q0 - delta)
- add.sat (8) TempRow0B(0)<2> Q0 -TempRow0(0) // q0-delta
-
- mov (8) NewP0 TempRow1B(0) // p0'
- mov (8) NewQ0 TempRow0B(0) // q0'
-
- endif
-MBAFF_UV_ENDIF2:
-MBAFF_UV_ENDIF1:
- endif
-
-RETURN
-
-
-
diff --git a/src/shaders/h264/ildb/AVC_ILDB_CloseGateway.asm b/src/shaders/h264/ildb/AVC_ILDB_CloseGateway.asm
deleted file mode 100644
index 8dab6d3..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_CloseGateway.asm
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-//----- Close a Message Gateway -----
-
-#if defined(_DEBUG)
- mov (1) EntrySignature:b 0x4444:w
-#endif
-
-// Message descriptor
-// bit 31 EOD
-// 27:24 FFID = 0x0011 for msg gateway
-// 23:20 msg length = 1 MRF
-// 19:16 Response length = 0
-// 1:0 SubFuncID = 01 for CloseGateway
-// Message descriptor: 0 000 0011 0001 0000 + 0 0 000000000000 01 ==> 0000 0011 0001 0000 0000 0000 0000 0001
-send (8) null:ud m7 r0.0<0;1,0>:ud MSG_GW CGWMSGDSC
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Dep_Check.asm b/src/shaders/h264/ildb/AVC_ILDB_Dep_Check.asm
deleted file mode 100644
index 1c7b723..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Dep_Check.asm
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-//---------- Check dependency and spawn all MBs ----------
-
-// Launch the 1st round of child threads for Vertical ILDB
-#if defined(_DEBUG)
- mov (1) EntrySignature:w 0x3333:w
-#endif
-
-//=====================================================================
-// Jump Table 1
- // 0 0 ---> Goto ALL_SPAWNED
- // 0 1 ---> Goto ALL_SPAWNED
- // 1 0 ---> Goto SLEEP_ENTRY
- // 1 1 ---> Goto POST_SLEEP
- mov (2) JumpTable.0<1>:d 0:d { NoDDClr }
-#if defined(CHROMA_ROOT)
- mov (1) JumpTable.2:d SLEEP_ENTRY_UV_ILDB_FRAME_IP-ALL_SPAWNED_UV_ILDB_FRAME_IP:d { NoDDClr, NoDDChk }
- mov (1) JumpTable.3:d POST_SLEEP_UV_ILDB_FRAME_IP-ALL_SPAWNED_UV_ILDB_FRAME_IP:d { NoDDChk }
-#else
- mov (1) JumpTable.2:d SLEEP_ENTRY_Y_ILDB_FRAME_IP-ALL_SPAWNED_Y_ILDB_FRAME_IP:d { NoDDClr, NoDDChk }
- mov (1) JumpTable.3:d POST_SLEEP_Y_ILDB_FRAME_IP-ALL_SPAWNED_Y_ILDB_FRAME_IP:d { NoDDChk }
-#endif
-//=====================================================================
-
- mov (2) f0.0<1>:w 0:w
-
- // Get m0 most of fields ready for URB write
- mov (8) MRF0<1>:ud MSGSRC.0<8;8,1>:ud
-
- // Add child kernel offset
- add (1) CT_R0Hdr.2:ud r0.2:ud CHILD_OFFSET:w
-
- // Init
- mov (1) Col_Boundary:w 2:w
- mov (1) Row_Boundary:w LastRow:w
- mov (1) TopRowForScan:w 0:w
- mov (2) OutstandingThreads<1>:w 0:w
-
- // Init Scoreboard (idle = 0x00FF, busy = 0x0000)
- // Low word is saved col. High word is busy/idle status
- mov (16) GatewayAperture(0)<1> 0x00FF00FF:ud // Init r6-r7
- mov (16) GatewayAperture(2)<1> 0x00FF00FF:ud // Init r8-r9
- mov (16) GatewayAperture(4)<1> 0x00FF00FF:ud // Init r10-r11
- mov (16) GatewayAperture(6)<1> 0x00FF00FF:ud // Init r12-r13
- mov (16) GatewayAperture(8)<1> 0x00FF00FF:ud // Init r14-r15
-
- mul (1) StatusAddr:w CurRow:w 4:w // dword to bytes offset conversion
-
- //=====================================================================
-
-//SPAWN_LOOP:
- //===== OutstandingThreads < ThreadLimit ? ============================
- cmp.l.f0.1 (1) null:w OutstandingThreads:w ThreadLimit:w // Check the thread limit
-#if defined(CHROMA_ROOT)
- (f0.1) jmpi ILDB_LABEL(POST_SLEEP_UV)
-#else // LUMA_ROOT
- (f0.1) jmpi ILDB_LABEL(POST_SLEEP_Y)
-#endif
-
-#if defined(CHROMA_ROOT)
-ILDB_LABEL(SLEEP_ENTRY_UV):
-#else // LUMA_ROOT
-ILDB_LABEL(SLEEP_ENTRY_Y):
-#endif
- //===== Goto Sleep ====================================================
- // Either reached max thread limit or no child thread can be spawned due to dependency.
- add (1) OutstandingThreads:w OutstandingThreads:w -1:w // Do this before wait is faster
- wait n0.0:d
-
-#if defined(CHROMA_ROOT)
-ILDB_LABEL(POST_SLEEP_UV):
-#else // LUMA_ROOT
-ILDB_LABEL(POST_SLEEP_Y):
-#endif
- //===== Luma Status[CurRow] == busy ? =====
- cmp.z.f0.0 (1) null:uw r[StatusAddr, GatewayApertureB+ScoreBd_Idx]:uw 0:uw // Check west neighbor
- cmp.g.f0.1 (1) null:w CurCol:w LastCol:w // Check if the curCol > LastCol
-
-#if defined(CHROMA_ROOT)
- mov (16) acc0.0<1>:w URBOffsetUVBase<0;1,0>:w // Add offset to UV base (MBsCntY * URB_EBTRIES_PER_MB)
- mac (1) URBOffset:w CurRow:w 4:w // 4 entries per row
-#else
- mul (1) URBOffset:w CurRow:w 4:w // 4 entries per row
-#endif
-
-#if defined(CHROMA_ROOT)
- (f0.0) jmpi ILDB_LABEL(SLEEP_ENTRY_UV) // Current row has a child thread running, can not spawn a new child thread, go back to sleep
- (f0.1) jmpi ILDB_LABEL(NEXT_MB_UV) // skip MB if the curCol > LastCol
-#else // LUMA_ROOT
- (f0.0) jmpi ILDB_LABEL(SLEEP_ENTRY_Y) // Current row has a child thread running, can not spawn a new child thread, go back to sleep
- (f0.1) jmpi ILDB_LABEL(NEXT_MB_Y) // skip MB if the curCol > LastCol
-#endif
-
- //========== Spwan a child thread ========================================
- // Save cur col and set Status[CurRow] to busy
- mov (2) r[StatusAddr, GatewayApertureB]<1>:uw CurColB<2;2,1>:ub // Store the new col
-
- // Increase OutstandingThreads and ProcessedMBs by 1
- add (2) OutstandingThreads<1>:w OutstandingThreads<2;2,1>:w 1:w
-
- #include "AVC_ILDB_SpawnChild.asm"
-
- //===== Find next MB ===================================================
-#if defined(CHROMA_ROOT)
-ILDB_LABEL(NEXT_MB_UV):
-#else // LUMA_ROOT
-ILDB_LABEL(NEXT_MB_Y):
-#endif
- // Check pic boundary, results are in f0.0 bit0 and bit1
- cmp.ge.f0.0 (2) null<1>:w CurCol<2;2,1>:w Col_Boundary<2;2,1>:w
-
- // Update TopRowForScan if the curCol = LastCol
- (f0.1) add (1) TopRowForScan:w CurRow:w 1:w
-
-// cmp.l.f0.1 (1) null<1>:w ProcessedMBs:w TotalBlocks:w // Processed all blocks ?
- // 2 sets compare
- // ProcessedMBs:w < TotalBlocks:w OutstandingThreads:w < ThreadLimit:wProcessedMBs:w
- // 0 0 ---> Goto ALL_SPAWNED
- // 0 1 ---> Goto ALL_SPAWNED
- // 1 0 ---> Goto SLEEP_ENTRY
- // 1 1 ---> Goto POST_SLEEP
- cmp.l.f0.1 (2) null<1>:w OutstandingThreads<2;2,1>:w ThreadLimit<2;2,1>:w
-
- // Just do it in stalled cycles
- mov (1) acc0.0:w 4:w
- mac (1) StatusAddr:w CurRow:w 4:w // dword to bytes offset conversion
- add (2) CurCol<1>:w CurCol<2;2,1>:w StepToNextMB<2;2,1>:b // CurCol -= 2 and CurRow += 1
-
- // Set f0.0 if turning around is needed, assuming bit 15 - 2 are zeros for correct comparison.
- cmp.nz.f0.0 (1) null<1>:w f0.0:w 0x01:w
-
- mul (1) JumpAddr:w f0.1:w 4:w // byte offet in dword count
-
- // The next MB is at the row TopRowForScan
- (f0.0) mul (1) StatusAddr:w TopRowForScan:w 4:w // dword to bytes offset conversion
- (f0.0) mov (1) CurRow:w TopRowForScan:w { NoDDClr } // Restart from the top row that has MBs not deblocked yet.
- (f0.0) add (1) CurCol:w r[StatusAddr, GatewayApertureB]:uw 1:w { NoDDChk }
-
- //===== Processed all blocks ? =========================================
- // (f0.1) jmpi SPAWN_LOOP
-
- jmpi r[JumpAddr, JUMPTABLE_BASE]:d
-//JUMP_BASE:
-
- //======================================================================
-
- // All MB are spawned at this point, check for outstanding thread count
-#if defined(CHROMA_ROOT)
-ILDB_LABEL(ALL_SPAWNED_UV):
-#else // LUMA_ROOT
-ILDB_LABEL(ALL_SPAWNED_Y):
-#endif
- cmp.e.f0.1 (1) null:w OutstandingThreads:w 0:w // Check before goto sleep
-#if defined(CHROMA_ROOT)
- (f0.1) jmpi ILDB_LABEL(ALL_DONE_UV)
-#else // LUMA_ROOT
- (f0.1) jmpi ILDB_LABEL(ALL_DONE_Y)
-#endif
-
- wait n0.0:d // Wake up by a finished child thread
- add (1) OutstandingThreads:w OutstandingThreads:w -1:w
-
-#if defined(CHROMA_ROOT)
- // One thread is free and give it to luma thread limit --- Increase luma thread limit by one.
- #include "AVC_ILDB_LumaThrdLimit.asm"
-#endif
-
-#if defined(CHROMA_ROOT)
- jmpi ILDB_LABEL(ALL_SPAWNED_UV) // Waked up and goto dependency check
-#else // LUMA_ROOT
- jmpi ILDB_LABEL(ALL_SPAWNED_Y) // Waked up and goto dependency check
-#endif
-
- // All child threads are finsihed at this point
-#if defined(CHROMA_ROOT)
-ILDB_LABEL(ALL_DONE_UV):
-#else // LUMA_ROOT
-ILDB_LABEL(ALL_DONE_Y):
-#endif
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Filter_Mbaff_UV_h.asm b/src/shaders/h264/ildb/AVC_ILDB_Filter_Mbaff_UV_h.asm
deleted file mode 100644
index 0160654..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Filter_Mbaff_UV_h.asm
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-////////// AVC ILDB filter horizontal Mbaff UV ///////////////////////////////////////////////////////
-//
-// This filter code prepares the src data and control data for ILDB filtering on all horizontal edges of UV.
-//
-// It sssumes the data for horizontal de-blocking is already transposed.
-//
-// Chroma:
-//
-// +-------+-------+ H0 Edge
-// | | |
-// | | |
-// | | |
-// +-------+-------+ H1 Edge
-// | | |
-// | | |
-// | | |
-// +-------+-------+
-//
-/////////////////////////////////////////////////////////////////////////////
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xBBBC:w
-#endif
-
-//=============== Chroma deblocking ================
-
-//---------- Deblock UV external top edge ----------
-
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterTopMbEdgeFlag:w // Check for FilterTopMbEdgeFlag
-
- mov (1) f0.1:w DualFieldMode:w // Check for dual field mode
-
- // Get Luma maskA and maskB
- shr (16) TempRow0(0)<1> r[ECM_AddrReg, wEdgeCntlMapA_ExtTopHorz0]<0;1,0>:uw RRampW(0)
- shr (16) TempRow1(0)<1> r[ECM_AddrReg, wEdgeCntlMapB_ExtTopHorz0]<0;1,0>:uw RRampW(0)
-
- (f0.0) jmpi H0_UV_DONE // Skip H0 UV edge
-
- (f0.1) jmpi DUAL_FIELD_UV
-
- // Non dual field mode
-
- // Extract UV MaskA and MaskB from every other bit of Y masks
- and.nz.f0.0 (8) null:w TempRow0(0)<16;8,2> 1:w
- and.nz.f0.1 (8) null:w TempRow1(0)<16;8,2> 1:w
-
- // Ext U
- // p1 = Prev MB U row 0
- // p0 = Prev MB U row 1
- // q0 = Cur MB U row 0
- // q1 = Cur MB U row 1
- mov (1) P_AddrReg:w PREV_MB_U_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w SRC_MB_U_BASE:w { NoDDChk }
-
- mov (8) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaTop0_Cb]<0;1,0>:ub
- mov (8) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaTop0_Cb]<0;1,0>:ub
- mov (8) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_h00_0_Cb]<1;2,0>:ub
-
- // Store UV MaskA and MaskB
- mov (2) MaskA<1>:uw f0.0<2;2,1>:uw
-
- CALL(FILTER_UV_MBAFF, 1)
-
- // Ext V
- mov (1) P_AddrReg:w PREV_MB_V_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w SRC_MB_V_BASE:w { NoDDChk }
-
- mov (8) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaTop0_Cr]<0;1,0>:ub
- mov (8) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaTop0_Cr]<0;1,0>:ub
- mov (8) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_h00_0_Cr]<1;2,0>:ub
-
- // Set UV MaskA and MaskB
- mov (2) f0.0<1>:uw MaskA<2;2,1>:uw
-
- CALL(FILTER_UV_MBAFF, 1)
-
- jmpi H0_UV_DONE
-
-DUAL_FIELD_UV:
- // Dual field mode, FieldModeCurrentMbFlag=0 && FieldModeAboveMbFlag=1
-
- //===== Ext U, Top field
-
- // Extract UV MaskA and MaskB from every other bit of Y masks
- and.nz.f0.0 (8) null:w TempRow0(0)<16;8,2> 1:w
- and.nz.f0.1 (8) null:w TempRow1(0)<16;8,2> 1:w
-
- mov (1) P_AddrReg:w ABOVE_CUR_MB_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w ABOVE_CUR_MB_BASE+32:w { NoDDChk }
-
- mov (16) ABOVE_CUR_MB_UW(0)<1> PREV_MB_UW(0, 0)<16;8,1> // Copy p1, p0
- mov (16) ABOVE_CUR_MB_UW(1)<1> SRC_UW(0, 0)<16;8,1> // Copy q1, q0
-
- //===== Ext U, top field
- mov (8) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaTop0_Cb]<0;1,0>:ub
- mov (8) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaTop0_Cb]<0;1,0>:ub
- mov (8) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_h00_0_Cb]<1;2,0>:ub
-
- // Store UV MaskA and MaskB
- mov (2) MaskA<1>:uw f0.0<2;2,1>:uw
-
- CALL(FILTER_UV_MBAFF, 1) // Ext U, top field
-
- //===== Ext V, top field
- mov (1) P_AddrReg:w ABOVE_CUR_MB_BASE+1:w { NoDDClr }
- mov (1) Q_AddrReg:w ABOVE_CUR_MB_BASE+33:w { NoDDChk }
-
- mov (8) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaTop0_Cr]<0;1,0>:ub
- mov (8) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaTop0_Cr]<0;1,0>:ub
- mov (8) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_h00_0_Cr]<1;2,0>:ub
-
- // Set UV MaskA and MaskB
- mov (2) f0.0<1>:uw MaskA<2;2,1>:uw
-
- CALL(FILTER_UV_MBAFF, 1) // Ext U, top field
-
- // Prefetch for bottom field
- // Get bot field Luma maskA and maskB
- shr (16) TempRow0(0)<1> r[ECM_AddrReg, wEdgeCntlMapA_ExtTopHorz1]<0;1,0>:uw RRampW(0)
- shr (16) TempRow1(0)<1> r[ECM_AddrReg, wEdgeCntlMapB_ExtTopHorz1]<0;1,0>:uw RRampW(0)
-
- // Save deblocked top field rows
- mov (8) PREV_MB_UW(1, 0)<1> ABOVE_CUR_MB_UW(0, 8) // Copy p0
- mov (8) SRC_UW(0, 0)<1> ABOVE_CUR_MB_UW(1, 0) // Copy q0
- //==========================================================================
-
- //===== Ext U, Bot field
-
- // Extract UV MaskA and MaskB from every other bit of Y masks
- and.nz.f0.0 (8) null:w TempRow0(0)<16;8,2> 1:w
- and.nz.f0.1 (8) null:w TempRow1(0)<16;8,2> 1:w
-
- mov (1) P_AddrReg:w ABOVE_CUR_MB_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w ABOVE_CUR_MB_BASE+32:w { NoDDChk }
-
- mov (16) ABOVE_CUR_MB_UW(0)<1> PREV_MB_UW(0, 8)<16;8,1> // Copy p1, p0
- mov (16) ABOVE_CUR_MB_UW(1)<1> SRC_UW(0, 8)<16;8,1> // Copy q1, q0
-
- //===== Ext U, bottom field
- mov (8) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaTop1_Cb]<0;1,0>:ub
- mov (8) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaTop1_Cb]<0;1,0>:ub
- mov (8) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_h00_1_Cb]<1;2,0>:ub
-
- // Store UV MaskA and MaskB
- mov (2) MaskA<1>:uw f0.0<2;2,1>:uw
-
- CALL(FILTER_UV_MBAFF, 1) // Ext U, bottom field
-
- //===== Ext V, bot field
- mov (1) P_AddrReg:w ABOVE_CUR_MB_BASE+1:w { NoDDClr }
- mov (1) Q_AddrReg:w ABOVE_CUR_MB_BASE+33:w { NoDDChk }
-
- mov (8) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaTop1_Cr]<0;1,0>:ub
- mov (8) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaTop1_Cr]<0;1,0>:ub
- mov (8) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_h00_1_Cr]<1;2,0>:ub
-
- // Set UV MaskA and MaskB
- mov (2) f0.0<1>:uw MaskA<2;2,1>:uw
-
- CALL(FILTER_UV_MBAFF, 1) // Ext V, bottom field
-
- // Save deblocked bot field rows
- mov (8) PREV_MB_UW(1, 8)<1> ABOVE_CUR_MB_UW(0, 8) // Copy p0
- mov (8) SRC_UW(0, 8)<1> ABOVE_CUR_MB_UW(1, 0) // Copy q0
- //========================================
-
-H0_UV_DONE:
-
-//---------- Deblock U internal horz middle edge ----------
-
- //***** Need to take every other bit to form U maskA in core
- shr (16) TempRow0(0)<1> r[ECM_AddrReg, wEdgeCntlMap_IntMidHorz]<0;1,0>:uw RRampW(0)
-
- // p1 = Cur MB U row 2
- // p0 = Cur MB U row 3
- // q0 = Cur MB U row 4
- // q1 = Cur MB U row 5
- mov (1) P_AddrReg:w 4*UV_ROW_WIDTH+SRC_MB_U_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w 8*UV_ROW_WIDTH+SRC_MB_U_BASE:w { NoDDChk }
-
- mov (8) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaInternal_Cb]<0;1,0>:ub
- mov (8) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaInternal_Cb]<0;1,0>:ub
- mov (8) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_h20_Cb]<1;2,0>:ub
-
- and.nz.f0.0 (8) null:w TempRow0(0)<16;8,2> 1:w
-
- // Store UV MaskA and MaskB
- mov (1) f0.1:uw 0:w
- mov (1) MaskB:uw 0:w { NoDDClr }
- mov (1) MaskA:uw f0.0:uw { NoDDChk }
-
- CALL(FILTER_UV_MBAFF, 1)
-//-----------------------------------------------
-
-
-//---------- Deblock V internal horz middle edge ----------
-
- // p1 = Cur MB V row 2
- // p0 = Cur MB V row 3
- // q0 = Cur MB V row 4
- // q1 = Cur MB V row 5
- mov (1) P_AddrReg:w 4*UV_ROW_WIDTH+SRC_MB_V_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w 8*UV_ROW_WIDTH+SRC_MB_V_BASE:w { NoDDChk }
-
- mov (8) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaInternal_Cr]<0;1,0>:ub
- mov (8) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaInternal_Cr]<0;1,0>:ub
- mov (8) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_h20_Cr]<1;2,0>:ub
-
- // Set UV MaskA and MaskB
- mov (2) f0.0<1>:uw MaskA<2;2,1>:uw
-
- CALL(FILTER_UV_MBAFF, 1)
-//-----------------------------------------------
-
-
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Filter_Mbaff_UV_v.asm b/src/shaders/h264/ildb/AVC_ILDB_Filter_Mbaff_UV_v.asm
deleted file mode 100644
index f7da922..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Filter_Mbaff_UV_v.asm
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-////////// AVC LDB filter vertical Mbaff UV ///////////////////////////////////////////////////////
-//
-// This filter code prepares the src data and control data for ILDB filtering on all vertical edges of UV.
-//
-// It sssumes the data for vertical de-blocking is already transposed.
-//
-// Chroma:
-//
-// +-------+-------+
-// | | |
-// | | |
-// | | |
-// +-------+-------+
-// | | |
-// | | |
-// | | |
-// +-------+-------+
-//
-// V0 V1
-// Edge Edge
-//
-/////////////////////////////////////////////////////////////////////////////
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xBBBC:w
-#endif
-
-//=============== Chroma deblocking ================
-
-//---------- Deblock U external left edge ----------
-
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterLeftMbEdgeFlag:w // Check for FilterLeftMbEdgeFlag
-
- cmp.z.f0.1 (1) null:w VertEdgePattern:uw LEFT_FIELD_CUR_FRAME:w
-
- // Get Luma maskA and maskB
- shr (16) TempRow0(0)<1> r[ECM_AddrReg, wEdgeCntlMapA_ExtLeftVert0]<0;1,0>:uw RRampW(0)
- shr (16) TempRow1(0)<1> r[ECM_AddrReg, wEdgeCntlMapB_ExtLeftVert0]<0;1,0>:uw RRampW(0)
-
- (f0.0) jmpi BYPASS_V0_UV // Do not deblock Left ext edge
-
- cmp.z.f0.0 (1) null:w VertEdgePattern:uw LEFT_FRAME_CUR_FIELD:w
-
- (-f0.1) jmpi V0_U_NEXT1 // Jump if not LEFT_FIELD_CUR_FRAME
-
- //----- For LEFT_FIELD_CUR_FRAME
-
- // Extract UV MaskA and MaskB from every other 2 bits of Y masks
- and.nz.f0.0 (8) null:w TempRow0(0)<4;2,1> 1:w
- and.nz.f0.1 (8) null:w TempRow1(0)<4;2,1> 1:w
-
- // For FieldModeLeftMbFlag=1 && FieldModeCurrentMbFlag=0
- mov (4) Mbaff_ALPHA(0,0)<2> r[ECM_AddrReg, bAlphaLeft0_Cb]<0;1,0>:ub { NoDDClr }
- mov (4) Mbaff_ALPHA(0,1)<2> r[ECM_AddrReg, bAlphaLeft1_Cb]<0;1,0>:ub { NoDDChk }
- mov (4) Mbaff_BETA(0,0)<2> r[ECM_AddrReg, bBetaLeft0_Cb]<0;1,0>:ub { NoDDClr }
- mov (4) Mbaff_BETA(0,1)<2> r[ECM_AddrReg, bBetaLeft1_Cb]<0;1,0>:ub { NoDDChk }
- mov (4) Mbaff_TC0(0,0)<2> r[ECM_AddrReg, bTc0_v00_0_Cb]<4;4,1>:ub { NoDDClr }
- mov (4) Mbaff_TC0(0,1)<2> r[ECM_AddrReg, bTc0_v00_1_Cb]<4;4,1>:ub { NoDDChk }
-
- jmpi V0_U_NEXT3
-
-V0_U_NEXT1:
-
- (-f0.0) jmpi V0_U_NEXT2 // Jump if not LEFT_FRAME_CUR_FIELD
-
- //----- For LEFT_FRAME_CUR_FIELD
-
- // Extract UV MaskA and MaskB from every other bit of Y masks
- and.nz.f0.0 (8) null:w TempRow0(0)<16;8,2> 1:w
- and.nz.f0.1 (8) null:w TempRow1(0)<16;8,2> 1:w
-
- // For FieldModeLeftMbFlag=0 && FieldModeCurrentMbFlag=1
- mov (4) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaLeft0_Cb]<0;1,0>:ub { NoDDClr }
- mov (4) Mbaff_ALPHA(0,4)<1> r[ECM_AddrReg, bAlphaLeft1_Cb]<0;1,0>:ub { NoDDChk }
- mov (4) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaLeft0_Cb]<0;1,0>:ub { NoDDClr }
- mov (4) Mbaff_BETA(0,4)<1> r[ECM_AddrReg, bBetaLeft1_Cb]<0;1,0>:ub { NoDDChk }
- mov (4) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_v00_0_Cb]<4;4,1>:ub { NoDDClr }
- mov (4) Mbaff_TC0(0,4)<1> r[ECM_AddrReg, bTc0_v00_1_Cb]<4;4,1>:ub { NoDDChk }
-
- jmpi V0_U_NEXT3
-
-V0_U_NEXT2:
-
- // Extract UV MaskA and MaskB from every other bit of Y masks
- and.nz.f0.0 (8) null:w TempRow0(0)<16;8,2> 1:w
- and.nz.f0.1 (8) null:w TempRow1(0)<16;8,2> 1:w
-
- // Both are frames or fields
- mov (8) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaLeft0_Cb]<0;1,0>:ub
- mov (8) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaLeft0_Cb]<0;1,0>:ub
- mov (8) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_v00_0_Cb]<1;2,0>:ub
-
-V0_U_NEXT3:
-
- // p1 = Prev MB U row 0
- // p0 = Prev MB U row 1
- // q0 = Cur MB U row 0
- // q1 = Cur MB U row 1
- mov (1) P_AddrReg:w PREV_MB_U_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w SRC_MB_U_BASE:w { NoDDChk }
-
- // Store UV MaskA and MaskB
- mov (2) MaskA<1>:uw f0.0<2;2,1>:uw
-
- CALL(FILTER_UV_MBAFF, 1)
-//-----------------------------------------------
-
-//---------- Deblock V external left edge ----------
-
- // No change to MaskA and MaskB
-
- cmp.z.f0.0 (4) null:w VertEdgePattern:uw LEFT_FIELD_CUR_FRAME:w
- cmp.z.f0.1 (4) null:w VertEdgePattern:uw LEFT_FRAME_CUR_FIELD:w
-
- // both are frame or field
- mov (8) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaLeft0_Cr]<0;1,0>:ub
- mov (8) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaLeft0_Cr]<0;1,0>:ub
- mov (8) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_v00_0_Cr]<1;2,0>:ub
-
- // p1 = Prev MB V row 0
- // p0 = Prev MB V row 1
- // q0 = Cur MB V row 0
- // q1 = Cur MB V row 1
- mov (1) P_AddrReg:w PREV_MB_V_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w SRC_MB_V_BASE:w { NoDDChk }
-
- // For FieldModeLeftMbFlag=1 && FieldModeCurrentMbFlag=0
- (f0.0) mov (4) Mbaff_ALPHA(0,0)<2> r[ECM_AddrReg, bAlphaLeft0_Cr]<0;1,0>:ub { NoDDClr }
- (f0.0) mov (4) Mbaff_ALPHA(0,1)<2> r[ECM_AddrReg, bAlphaLeft1_Cr]<0;1,0>:ub { NoDDChk }
- (f0.0) mov (4) Mbaff_BETA(0,0)<2> r[ECM_AddrReg, bBetaLeft0_Cr]<0;1,0>:ub { NoDDClr }
- (f0.0) mov (4) Mbaff_BETA(0,1)<2> r[ECM_AddrReg, bBetaLeft1_Cr]<0;1,0>:ub { NoDDChk }
- (f0.0) mov (4) Mbaff_TC0(0,0)<2> r[ECM_AddrReg, bTc0_v00_0_Cr]<4;4,1>:ub { NoDDClr }
- (f0.0) mov (4) Mbaff_TC0(0,1)<2> r[ECM_AddrReg, bTc0_v00_1_Cr]<4;4,1>:ub { NoDDChk }
-
- // For FieldModeLeftMbFlag=0 && FieldModeCurrentMbFlag=1
- (f0.1) mov (4) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaLeft0_Cr]<0;1,0>:ub { NoDDClr }
- (f0.1) mov (4) Mbaff_ALPHA(0,4)<1> r[ECM_AddrReg, bAlphaLeft1_Cr]<0;1,0>:ub { NoDDChk }
- (f0.1) mov (4) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaLeft0_Cr]<0;1,0>:ub { NoDDClr }
- (f0.1) mov (4) Mbaff_BETA(0,4)<1> r[ECM_AddrReg, bBetaLeft1_Cr]<0;1,0>:ub { NoDDChk }
- (f0.1) mov (4) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_v00_0_Cr]<4;4,1>:ub { NoDDClr }
- (f0.1) mov (4) Mbaff_TC0(0,4)<1> r[ECM_AddrReg, bTc0_v00_1_Cr]<4;4,1>:ub { NoDDChk }
-
- // Set UV MaskA and MaskB
- mov (2) f0.0<1>:uw MaskA<2;2,1>:uw
-
- CALL(FILTER_UV_MBAFF, 1)
-//-----------------------------------------------
-
-BYPASS_V0_UV:
- // Set EdgeCntlMap2 = 0, so it always uses bS < 4 algorithm.
- // Same alpha and beta for all internal vert and horiz edges
-
-//---------- Deblock U internal vert middle edge ----------
-
- //***** Need to take every other bit to form U or V maskA
- shr (16) TempRow0(0)<1> r[ECM_AddrReg, wEdgeCntlMap_IntMidVert]<0;1,0>:uw RRampW(0)
-
- // p1 = Cur MB U row 2
- // p0 = Cur MB U row 3
- // q0 = Cur MB U row 4
- // q1 = Cur MB U row 5
- mov (1) P_AddrReg:w 4*UV_ROW_WIDTH+SRC_MB_U_BASE:w { NoDDClr } // Skip 2 U rows and 2 V rows
- mov (1) Q_AddrReg:w 8*UV_ROW_WIDTH+SRC_MB_U_BASE:w { NoDDChk }
-
- mov (8) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaInternal_Cb]<0;1,0>:ub
- mov (8) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaInternal_Cb]<0;1,0>:ub
- mov (8) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_v02_Cb]<1;2,0>:ub
-
- and.nz.f0.0 (8) null:w TempRow0(0)<16;8,2> 1:w
-
- // Store MaskA and MaskB
- mov (1) f0.1:uw 0:w
- mov (1) MaskB:uw 0:w { NoDDClr }
- mov (1) MaskA:uw f0.0:uw { NoDDChk }
-
- CALL(FILTER_UV_MBAFF, 1)
-
-//-----------------------------------------------
-
-
-//---------- Deblock V internal vert middle edge ----------
-
- // P1 = Cur MB V row 2
- // P0 = Cur MB V row 3
- // Q0 = Cur MB V row 4
- // Q1 = Cur MB V row 5
- mov (1) P_AddrReg:w 4*UV_ROW_WIDTH+SRC_MB_V_BASE:w { NoDDClr } // Skip 2 U rows and 2 V rows
- mov (1) Q_AddrReg:w 8*UV_ROW_WIDTH+SRC_MB_V_BASE:w { NoDDChk }
-
- // Put MaskA into f0.0
- // Put MaskB into f0.1
- mov (2) f0.0<1>:uw MaskA<2;2,1>:uw
-
- mov (8) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaInternal_Cr]<0;1,0>:ub
- mov (8) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaInternal_Cr]<0;1,0>:ub
- mov (8) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_v02_Cr]<1;2,0>:ub
-
- CALL(FILTER_UV_MBAFF, 1)
-
-//-----------------------------------------------
-
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Filter_Mbaff_Y_h.asm b/src/shaders/h264/ildb/AVC_ILDB_Filter_Mbaff_Y_h.asm
deleted file mode 100644
index 6fc5d5d..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Filter_Mbaff_Y_h.asm
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-////////// AVC ILDB filter horizontal Mbaff Y ///////////////////////////////////////////////////////
-//
-// This filter code prepares the src data and control data for ILDB filtering on all horizontal edges of Y.
-//
-// It sssumes the data for horizontal de-blocking is already transposed.
-//
-// Luma:
-//
-// +-------+-------+-------+-------+ H0 Edge
-// | | | | |
-// | | | | |
-// | | | | |
-// +-------+-------+-------+-------+ H1 Edge
-// | | | | |
-// | | | | |
-// | | | | |
-// +-------+-------+-------+-------+ H2 Edge
-// | | | | |
-// | | | | |
-// | | | | |
-// +-------+-------+-------+-------+ H3 Edge
-// | | | | |
-// | | | | |
-// | | | | |
-// +-------+-------+-------+-------+
-//
-/////////////////////////////////////////////////////////////////////////////
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xBBBB:w
-#endif
-
-
-//========== Luma deblocking ==========
-
-
-//---------- Deblock Y external top edge (H0) ----------
-
- // Bypass deblocking if it is the top edge of the picture.
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterTopMbEdgeFlag:w // Check for FilterTopMbEdgeFlag
- mov (1) f0.1:w DualFieldMode:w // Check for dual field mode
-
- // Non dual field mode
-
- // Get (alpha >> 2) + 2
- shr (16) Mbaff_ALPHA2(0,0)<1> r[ECM_AddrReg, bAlphaTop0_Y]<0;1,0>:ub 2:w // alpha >> 2
-
- mov (2) MaskA<1>:uw r[ECM_AddrReg, wEdgeCntlMapA_ExtTopHorz0]<2;2,1>:uw
-
- // Ext Y
- mov (16) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaTop0_Y]<0;1,0>:ub
- mov (16) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaTop0_Y]<0;1,0>:ub
- mov (16) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_h00_0_Y]<1;4,0>:ub
-
- add (16) Mbaff_ALPHA2(0,0)<1> Mbaff_ALPHA2(0,0)<16;16,1> 2:w // alpha2 = (alpha >> 2) + 2
-
- (f0.0) jmpi H0_Y_DONE // Skip Ext Y deblocking
- (f0.1) jmpi DUAL_FIELD_Y
-
- mov (1) P_AddrReg:w PREV_MB_Y_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w SRC_MB_Y_BASE:w { NoDDChk }
-
- CALL(FILTER_Y_MBAFF, 1) // Non dual field deblocking
-
- jmpi H0_Y_DONE
-
-DUAL_FIELD_Y:
- // Dual field mode, FieldModeCurrentMbFlag=0 && FieldModeAboveMbFlag=1
-
- mov (1) P_AddrReg:w ABOVE_CUR_MB_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w ABOVE_CUR_MB_BASE+64:w { NoDDChk }
-
- // Must use PREV_MB_YW. TOP_MB_YW is not big enough.
- // Get top field rows
- mov (16) ABOVE_CUR_MB_YW(0)<1> PREV_MB_YW(0, 0)<16;8,1> // Copy p3, p2
- mov (16) ABOVE_CUR_MB_YW(1)<1> PREV_MB_YW(2, 0)<16;8,1> // Copy p1, p0
- mov (16) ABOVE_CUR_MB_YW(2)<1> SRC_YW(0, 0)<16;8,1> // Copy q0, q1
- mov (16) ABOVE_CUR_MB_YW(3)<1> SRC_YW(2, 0)<16;8,1> // Copy q2, q3
-
- CALL(FILTER_Y_MBAFF, 1) // Ext Y, top field
-
- // Save deblocked top field rows
- mov (8) PREV_MB_YW(1, 0)<1> ABOVE_CUR_MB_YW(0, 8) // Copy p2
- mov (8) PREV_MB_YW(2, 0)<1> ABOVE_CUR_MB_YW(1, 0) // Copy p1
- mov (8) PREV_MB_YW(3, 0)<1> ABOVE_CUR_MB_YW(1, 8) // Copy p0
- mov (8) SRC_YW(0, 0)<1> ABOVE_CUR_MB_YW(2, 0) // Copy q0
- mov (8) SRC_YW(1, 0)<1> ABOVE_CUR_MB_YW(2, 8) // Copy q1
- mov (8) SRC_YW(2, 0)<1> ABOVE_CUR_MB_YW(3, 0) // Copy q2
-
- //==================================================================================
- // Bottom field
-
- // Get (alpha >> 2) + 2
- shr (16) Mbaff_ALPHA2(0,0)<1> r[ECM_AddrReg, bAlphaTop1_Y]<0;1,0>:ub 2:w // alpha >> 2
-
- mov (1) P_AddrReg:w ABOVE_CUR_MB_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w ABOVE_CUR_MB_BASE+64:w { NoDDChk }
-
- // Get bot field rows
- mov (16) ABOVE_CUR_MB_YW(0)<1> PREV_MB_YW(0, 8)<16;8,1> // Copy p3, p2
- mov (16) ABOVE_CUR_MB_YW(1)<1> PREV_MB_YW(2, 8)<16;8,1> // Copy p1, p0
- mov (16) ABOVE_CUR_MB_YW(2)<1> SRC_YW(0, 8)<16;8,1> // Copy q0, q1
- mov (16) ABOVE_CUR_MB_YW(3)<1> SRC_YW(2, 8)<16;8,1> // Copy q2, q3
-
- mov (2) MaskA<1>:uw r[ECM_AddrReg, wEdgeCntlMapA_ExtTopHorz1]<2;2,1>:uw
-
- mov (16) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaTop1_Y]<0;1,0>:ub
- mov (16) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaTop1_Y]<0;1,0>:ub
- mov (16) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_h00_1_Y]<1;4,0>:ub
-
- add (16) Mbaff_ALPHA2(0,0)<1> Mbaff_ALPHA2(0,0)<16;16,1> 2:w // alpha2 = (alpha >> 2) + 2
-
- CALL(FILTER_Y_MBAFF, 1) // Ext Y, bot field
-
- // Save deblocked top field rows
- mov (8) PREV_MB_YW(1, 8)<1> ABOVE_CUR_MB_YW(0, 8) // Copy p2
- mov (8) PREV_MB_YW(2, 8)<1> ABOVE_CUR_MB_YW(1, 0) // Copy p1
- mov (8) PREV_MB_YW(3, 8)<1> ABOVE_CUR_MB_YW(1, 8) // Copy p0
- mov (8) SRC_YW(0, 8)<1> ABOVE_CUR_MB_YW(2, 0) // Copy q0
- mov (8) SRC_YW(1, 8)<1> ABOVE_CUR_MB_YW(2, 8) // Copy q1
- mov (8) SRC_YW(2, 8)<1> ABOVE_CUR_MB_YW(3, 0) // Copy q2
- //==================================================================================
-
-H0_Y_DONE:
-
-//BYPASS_H0_Y:
-//------------------------------------------------------------------
- // Same alpha, alpha2, beta and MaskB for all internal edges
-
- // Get (alpha >> 2) + 2
- shr (16) Mbaff_ALPHA2(0,0)<1> r[ECM_AddrReg, bAlphaInternal_Y]<0;1,0>:ub 2:w // alpha >> 2
-
- // alpha = bAlphaInternal_Y
- // beta = bBetaInternal_Y
- mov (16) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaInternal_Y]<0;1,0>:ub
- mov (16) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaInternal_Y]<0;1,0>:ub
-
- mov (1) MaskB:uw 0:w // Set MaskB = 0 for all 3 edges, so it always uses bS < 4 algorithm.
-
- add (16) Mbaff_ALPHA2(0,0)<1> Mbaff_ALPHA2(0,0)<16;16,1> 2:w // alpha2 = (alpha >> 2) + 2
-
-//---------- Deblock Y internal top edge (H1) ----------
-
- // Bypass deblocking if FilterInternal4x4EdgesFlag = 0
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterInternal4x4EdgesFlag:w // Check for FilterInternal4x4EdgesFlag
-// (f0.0) jmpi BYPASS_H1_Y
-
- // p3 = Cur MB Y row 0 = r[P_AddrReg, 0]<16;16,1>
- // p2 = Cur MB Y row 1 = r[P_AddrReg, 16]<16;16,1>
- // p1 = Cur MB Y row 2 = r[P_AddrReg, 32]<16;16,1>
- // p0 = Cur MB Y row 3 = r[P_AddrReg, 48]<16;16,1>
- // q0 = Cur MB Y row 4 = r[Q_AddrReg, 0]<16;16,1>
- // q1 = Cur MB Y row 5 = r[Q_AddrReg, 16]<16;16,1>
- // q2 = Cur MB Y row 6 = r[Q_AddrReg, 32]<16;16,1>
- // q3 = Cur MB Y row 7 = r[Q_AddrReg, 48]<16;16,1>
- mov (1) P_AddrReg:w SRC_MB_Y_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w 4*Y_ROW_WIDTH+SRC_MB_Y_BASE:w { NoDDChk }
-
- mov (1) MaskA:uw r[ECM_AddrReg, wEdgeCntlMap_IntTopHorz]:uw
-
- // tc0 has bTc0_h13_Y + bTc0_h12_Y + bTc0_h11_Y + bTc0_h10_Y
- mov (16) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_h10_Y]<1;4,0>:ub
-
-// CALL(FILTER_Y_MBAFF, 1)
- PRED_CALL(-f0.0, FILTER_Y_MBAFF, 1)
-
-//BYPASS_H1_Y:
-//------------------------------------------------------------------
-
-
-//---------- Deblock Y internal mid horizontal edge (H2) ----------
-
- // Bypass deblocking if FilterInternal8x8EdgesFlag = 0
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterInternal8x8EdgesFlag:w // Check for FilterInternal4x4EdgesFlag
-// (f0.0) jmpi BYPASS_H2_Y
-
- // p3 = Cur MB Y row 4 = r[P_AddrReg, 0]<16;16,1>
- // p2 = Cur MB Y row 5 = r[P_AddrReg, 16]<16;16,1>
- // p1 = Cur MB Y row 6 = r[P_AddrReg, 32]<16;16,1>
- // p0 = Cur MB Y row 7 = r[P_AddrReg, 48]<16;16,1>
- // q0 = Cur MB Y row 8 = r[Q_AddrReg, 0]<16;16,1>
- // q1 = Cur MB Y row 9 = r[Q_AddrReg, 16]<16;16,1>
- // q2 = Cur MB Y row 10 = r[Q_AddrReg, 32]<16;16,1>
- // q3 = Cur MB Y row 11 = r[Q_AddrReg, 48]<16;16,1>
- mov (1) P_AddrReg:w 4*Y_ROW_WIDTH+SRC_MB_Y_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w 8*Y_ROW_WIDTH+SRC_MB_Y_BASE:w { NoDDChk }
-
- mov (1) MaskA:uw r[ECM_AddrReg, wEdgeCntlMap_IntMidHorz]:uw
-
- // tc0 has bTc0_h23_Y + bTc0_h22_Y + bTc0_h21_Y + bTc0_h20_Y
- mov (16) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_h20_Y]<1;4,0>:ub
-
-// CALL(FILTER_Y_MBAFF, 1)
- PRED_CALL(-f0.0, FILTER_Y_MBAFF, 1)
-
-//BYPASS_H2_Y:
-//-----------------------------------------------
-
-
-//---------- Deblock Y internal bottom edge (H3) ----------
-
- // Bypass deblocking if FilterInternal4x4EdgesFlag = 0
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterInternal4x4EdgesFlag:w // Check for FilterInternal4x4EdgesFlag
-// (f0.0) jmpi BYPASS_H3_Y
-
- // p3 = Cur MB Y row 8 = r[P_AddrReg, 0]<16;16,1>
- // p2 = Cur MB Y row 9 = r[P_AddrReg, 16]<16;16,1>
- // p1 = Cur MB Y row 10 = r[P_AddrReg, 32]<16;16,1>
- // p0 = Cur MB Y row 11 = r[P_AddrReg, 48]<16;16,1>
- // q0 = Cur MB Y row 12 = r[Q_AddrReg, 0]<16;16,1>
- // q1 = Cur MB Y row 13 = r[Q_AddrReg, 16]<16;16,1>
- // q2 = Cur MB Y row 14 = r[Q_AddrReg, 32]<16;16,1>
- // q3 = Cur MB Y row 15 = r[Q_AddrReg, 48]<16;16,1>
- mov (1) P_AddrReg:w 8*Y_ROW_WIDTH+SRC_MB_Y_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w 12*Y_ROW_WIDTH+SRC_MB_Y_BASE:w { NoDDChk }
-
- mov (1) MaskA:uw r[ECM_AddrReg, wEdgeCntlMap_IntBotHorz]:uw
-
- // tc0 has bTc0_h33_Y + bTc0_h32_Y + bTc0_h31_Y + bTc0_h30_Y
- mov (16) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_h30_Y]<1;4,0>:ub
-
-// CALL(FILTER_Y_MBAFF, 1)
- PRED_CALL(-f0.0, FILTER_Y_MBAFF, 1)
-
-//BYPASS_H3_Y:
-//-----------------------------------------------
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Filter_Mbaff_Y_v.asm b/src/shaders/h264/ildb/AVC_ILDB_Filter_Mbaff_Y_v.asm
deleted file mode 100644
index f8d789c..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Filter_Mbaff_Y_v.asm
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-////////// AVC ILDB filter vertical Mbaff Y ///////////////////////////////////////////////////////
-//
-// This filter code prepares the src data and control data for ILDB filtering on all vertical edges of Y.
-//
-// It sssumes the data for vertical de-blocking is already transposed.
-//
-// Luma:
-//
-// +-------+-------+-------+-------+
-// | | | | |
-// | | | | |
-// | | | | |
-// +-------+-------+-------+-------+
-// | | | | |
-// | | | | |
-// | | | | |
-// +-------+-------+-------+-------+
-// | | | | |
-// | | | | |
-// | | | | |
-// +-------+-------+-------+-------+
-// | | | | |
-// | | | | |
-// | | | | |
-// +-------+-------+-------+-------+
-//
-// V0 V1 V2 V3
-// Edge Edge Edge Edge
-//
-/////////////////////////////////////////////////////////////////////////////
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xBBBB:w
-#endif
-
-
-//========== Luma deblocking ==========
-
-
-//---------- Deblock Y external left edge (V0) ----------
-
- cmp.z.f0.0 (8) null:w VertEdgePattern:uw LEFT_FIELD_CUR_FRAME:w
- cmp.z.f0.1 (8) null:w VertEdgePattern:uw LEFT_FRAME_CUR_FIELD:w
-
- // Intial set for both are frame or field
- mov (16) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaLeft0_Y]<0;1,0>:ub
- mov (16) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaLeft0_Y]<0;1,0>:ub
- mov (16) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_v00_0_Y]<1;4,0>:ub
-
- // For FieldModeCurrentMbFlag=1 && FieldModeLeftMbFlag=0
- (f0.0) mov (8) Mbaff_ALPHA(0,0)<2> r[ECM_AddrReg, bAlphaLeft0_Y]<0;1,0>:ub { NoDDClr }
- (f0.0) mov (8) Mbaff_ALPHA(0,1)<2> r[ECM_AddrReg, bAlphaLeft1_Y]<0;1,0>:ub { NoDDChk }
- (f0.0) mov (8) Mbaff_BETA(0,0)<2> r[ECM_AddrReg, bBetaLeft0_Y]<0;1,0>:ub { NoDDClr }
- (f0.0) mov (8) Mbaff_BETA(0,1)<2> r[ECM_AddrReg, bBetaLeft1_Y]<0;1,0>:ub { NoDDChk }
- (f0.0) mov (8) Mbaff_TC0(0,0)<2> r[ECM_AddrReg, bTc0_v00_0_Y]<1;2,0>:ub { NoDDClr }
- (f0.0) mov (8) Mbaff_TC0(0,1)<2> r[ECM_AddrReg, bTc0_v00_1_Y]<1;2,0>:ub { NoDDChk }
-
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterLeftMbEdgeFlag:w // Check for FilterLeftMbEdgeFlag
-
- // For FieldModeCurrentMbFlag=0 && FieldModeLeftMbFlag=1
- (f0.1) mov (8) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaLeft0_Y]<0;1,0>:ub { NoDDClr }
- (f0.1) mov (8) Mbaff_ALPHA(0,8)<1> r[ECM_AddrReg, bAlphaLeft1_Y]<0;1,0>:ub { NoDDChk }
- (f0.1) mov (8) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaLeft0_Y]<0;1,0>:ub { NoDDClr }
- (f0.1) mov (8) Mbaff_BETA(0,8)<1> r[ECM_AddrReg, bBetaLeft1_Y]<0;1,0>:ub { NoDDChk }
- (f0.1) mov (8) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_v00_0_Y]<1;2,0>:ub { NoDDClr }
- (f0.1) mov (8) Mbaff_TC0(0,8)<1> r[ECM_AddrReg, bTc0_v00_1_Y]<1;2,0>:ub { NoDDChk }
-
- // Get (alpha >> 2) + 2
- shr (16) Mbaff_ALPHA2(0,0)<1> Mbaff_ALPHA(0) 2:w // alpha >> 2
-
- // p3 = Prev MB Y row 0 = r[P_AddrReg, 0]<16;16,1>
- // p2 = Prev MB Y row 1 = r[P_AddrReg, 16]<16;16,1>
- // p1 = Prev MB Y row 2 = r[P_AddrReg, 32]<16;16,1>
- // p0 = Prev MB Y row 3 = r[P_AddrReg, 48]<16;16,1>
- // q0 = Cur MB Y row 0 = r[Q_AddrReg, 0]<16;16,1>
- // q1 = Cur MB Y row 1 = r[Q_AddrReg, 16]<16;16,1>
- // q2 = Cur MB Y row 2 = r[Q_AddrReg, 32]<16;16,1>
- // q3 = Cur MB Y row 3 = r[Q_AddrReg, 48]<16;16,1>
- mov (1) P_AddrReg:w PREV_MB_Y_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w SRC_MB_Y_BASE:w { NoDDChk }
-
- // Set MaskA and MaskB
- mov (2) MaskA<1>:uw r[ECM_AddrReg, wEdgeCntlMapA_ExtLeftVert0]<2;2,1>:uw
-
- add (16) Mbaff_ALPHA2(0,0)<1> Mbaff_ALPHA2(0,0)<16;16,1> 2:w // alpha2 = (alpha >> 2) + 2
-
-// CALL(FILTER_Y_MBAFF, 1)
- PRED_CALL(-f0.0, FILTER_Y_MBAFF, 1)
-
-//BYPASS_V0_Y:
-//------------------------------------------------------------------
-
-
-/*
-//---------- Deblock Y external left edge (V0) ----------
-
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterLeftMbEdgeFlag:w // Check for FilterLeftMbEdgeFlag
- (f0.0) jmpi ILDB_LABEL(BYPASS_EXT_LEFT_EDGE_Y)
-
- // Get vertical border edge control data
-
-// mov (1) f0.0 0:w
- and (1) CTemp1_W:uw r[ECM_AddrReg, BitFlags]:ub FieldModeLeftMbFlag+FieldModeCurrentMbFlag:uw
- cmp.z.f0.0 (1) null:w CTemp1_W:uw LEFT_FIELD_CUR_FRAME:w
- (-f0.0) jmpi LEFT_EDGE_Y_NEXT1
-
- // For FieldModeCurrentMbFlag=1 && FieldModeLeftMbFlag=0
- mov (8) Mbaff_ALPHA(0,0)<2> r[ECM_AddrReg, bAlphaLeft0_Y]<0;1,0>:ub { NoDDClr }
- mov (8) Mbaff_ALPHA(0,1)<2> r[ECM_AddrReg, bAlphaLeft1_Y]<0;1,0>:ub { NoDDChk }
- mov (8) Mbaff_BETA(0,0)<2> r[ECM_AddrReg, bBetaLeft0_Y]<0;1,0>:ub { NoDDClr }
- mov (8) Mbaff_BETA(0,1)<2> r[ECM_AddrReg, bBetaLeft1_Y]<0;1,0>:ub { NoDDChk }
- mov (8) Mbaff_TC0(0,0)<2> r[ECM_AddrReg, bTc0_v00_0_Y]<1;2,0>:ub { NoDDClr }
- mov (8) Mbaff_TC0(0,1)<2> r[ECM_AddrReg, bTc0_v00_1_Y]<1;2,0>:ub { NoDDChk }
-
- jmpi LEFT_EDGE_Y_ALPHA_BETA_TC0_SELECTED
-
-LEFT_EDGE_Y_NEXT1:
- cmp.z.f0.0 (1) null:w CTemp1_W:uw LEFT_FRAME_CUR_FIELD:w
- (-f0.0) jmpi LEFT_EDGE_Y_NEXT2
-
-
- // For FieldModeCurrentMbFlag=0 && FieldModeLeftMbFlag=1
- mov (8) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaLeft0_Y]<0;1,0>:ub { NoDDClr }
- mov (8) Mbaff_ALPHA(0,8)<1> r[ECM_AddrReg, bAlphaLeft1_Y]<0;1,0>:ub { NoDDChk }
- mov (8) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaLeft0_Y]<0;1,0>:ub { NoDDClr }
- mov (8) Mbaff_BETA(0,8)<1> r[ECM_AddrReg, bBetaLeft1_Y]<0;1,0>:ub { NoDDChk }
- mov (8) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_v00_0_Y]<1;2,0>:ub { NoDDClr }
- mov (8) Mbaff_TC0(0,8)<1> r[ECM_AddrReg, bTc0_v00_1_Y]<1;2,0>:ub { NoDDChk }
-
- jmpi LEFT_EDGE_Y_ALPHA_BETA_TC0_SELECTED
-
-LEFT_EDGE_Y_NEXT2:
- // both are frame or field
- mov (16) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaLeft0_Y]<0;1,0>:ub
- mov (16) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaLeft0_Y]<0;1,0>:ub
- mov (16) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_v00_0_Y]<1;4,0>:ub
-
-LEFT_EDGE_Y_ALPHA_BETA_TC0_SELECTED:
-
- mov (2) MaskA<1>:uw r[ECM_AddrReg, wEdgeCntlMapA_ExtLeftVert0]<2;2,1>:uw
-
- // p3 = Prev MB Y row 0 = r[P_AddrReg, 0]<16;16,1>
- // p2 = Prev MB Y row 1 = r[P_AddrReg, 16]<16;16,1>
- // p1 = Prev MB Y row 2 = r[P_AddrReg, 32]<16;16,1>
- // p0 = Prev MB Y row 3 = r[P_AddrReg, 48]<16;16,1>
- // q0 = Cur MB Y row 0 = r[Q_AddrReg, 0]<16;16,1>
- // q1 = Cur MB Y row 1 = r[Q_AddrReg, 16]<16;16,1>
- // q2 = Cur MB Y row 2 = r[Q_AddrReg, 32]<16;16,1>
- // q3 = Cur MB Y row 3 = r[Q_AddrReg, 48]<16;16,1>
- mov (1) P_AddrReg:w PREV_MB_Y_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w SRC_MB_Y_BASE:w { NoDDChk }
-
- // Get (alpha >> 2) + 2
- shr (16) Mbaff_ALPHA2(0,0)<1> r[ECM_AddrReg, bAlphaLeft0_Y]<0;1,0>:ub 2:w // alpha >> 2
- add (16) Mbaff_ALPHA2(0,0)<1> Mbaff_ALPHA2(0,0)<16;16,1> 2:w // alpha2 = (alpha >> 2) + 2
-
- CALL(FILTER_Y_MBAFF, 1)
-
-ILDB_LABEL(BYPASS_EXT_LEFT_EDGE_Y):
-//------------------------------------------------------------------
-*/
-
- // Same alpha, alpha2, beta and MaskB for all internal edges
-
- // Get (alpha >> 2) + 2
- shr (16) Mbaff_ALPHA2(0,0)<1> r[ECM_AddrReg, bAlphaInternal_Y]<0;1,0>:ub 2:w // alpha >> 2
-
- // alpha = bAlphaInternal_Y
- // beta = bBetaInternal_Y
- mov (16) Mbaff_ALPHA(0,0)<1> r[ECM_AddrReg, bAlphaInternal_Y]<0;1,0>:ub
- mov (16) Mbaff_BETA(0,0)<1> r[ECM_AddrReg, bBetaInternal_Y]<0;1,0>:ub
-
- mov (1) MaskB:uw 0:w // Set MaskB = 0 for all 3 edges, so it always uses bS < 4 algorithm.
-
- add (16) Mbaff_ALPHA2(0,0)<1> Mbaff_ALPHA2(0,0)<16;16,1> 2:w // alpha2 = (alpha >> 2) + 2
-
-//---------- Deblock Y internal left edge (V1) ----------
-
- // Bypass deblocking if FilterInternal4x4EdgesFlag = 0
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterInternal4x4EdgesFlag:w // Check for FilterInternal4x4EdgesFlag
-// (f0.0) jmpi BYPASS_V1_Y
-
- // p3 = Cur MB Y row 0 = r[P_AddrReg, 0]<16;16,1>
- // p2 = Cur MB Y row 1 = r[P_AddrReg, 16]<16;16,1>
- // p1 = Cur MB Y row 2 = r[P_AddrReg, 32]<16;16,1>
- // p0 = Cur MB Y row 3 = r[P_AddrReg, 48]<16;16,1>
- // q0 = Cur MB Y row 4 = r[Q_AddrReg, 0]<16;16,1>
- // q1 = Cur MB Y row 5 = r[Q_AddrReg, 16]<16;16,1>
- // q2 = Cur MB Y row 6 = r[Q_AddrReg, 32]<16;16,1>
- // q3 = Cur MB Y row 7 = r[Q_AddrReg, 48]<16;16,1>
- mov (1) P_AddrReg:w SRC_MB_Y_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w 4*Y_ROW_WIDTH+SRC_MB_Y_BASE:w { NoDDChk }
-
- mov (1) MaskA:uw r[ECM_AddrReg, wEdgeCntlMap_IntLeftVert]:uw
-
- // tc0 has bTc0_v31_Y + bTc0_v21_Y + bTc0_v11_Y + bTc0_v01_Y
- mov (16) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_v01_Y]<1;4,0>:ub
-
-// CALL(FILTER_Y_MBAFF, 1)
- PRED_CALL(-f0.0, FILTER_Y_MBAFF, 1)
-
-BYPASS_V1_Y:
-//------------------------------------------------------------------
-
-
-//---------- Deblock Y internal mid vert edge (V2) ----------
-
- // Bypass deblocking if FilterInternal8x8EdgesFlag = 0
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterInternal8x8EdgesFlag:w // Check for FilterInternal4x4EdgesFlag
-// (f0.0) jmpi BYPASS_V2_Y
-
- // p3 = Cur MB Y row 4 = r[P_AddrReg, 0]<16;16,1>
- // p2 = Cur MB Y row 5 = r[P_AddrReg, 16]<16;16,1>
- // p1 = Cur MB Y row 6 = r[P_AddrReg, 32]<16;16,1>
- // p0 = Cur MB Y row 7 = r[P_AddrReg, 48]<16;16,1>
- // q0 = Cur MB Y row 8 = r[Q_AddrReg, 0]<16;16,1>
- // q1 = Cur MB Y row 9 = r[Q_AddrReg, 16]<16;16,1>
- // q2 = Cur MB Y row 10 = r[Q_AddrReg, 32]<16;16,1>
- // q3 = Cur MB Y row 11 = r[Q_AddrReg, 48]<16;16,1>
- mov (1) P_AddrReg:w 4*Y_ROW_WIDTH+SRC_MB_Y_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w 8*Y_ROW_WIDTH+SRC_MB_Y_BASE:w { NoDDChk }
-
- mov (1) MaskA:uw r[ECM_AddrReg, wEdgeCntlMap_IntMidVert]:uw
-
- // tc0 has bTc0_v32_Y + bTc0_v22_Y + bTc0_v12_Y + bTc0_v02_Y
- mov (16) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_v02_Y]<1;4,0>:ub
-
-// CALL(FILTER_Y_MBAFF, 1)
- PRED_CALL(-f0.0, FILTER_Y_MBAFF, 1)
-
-BYPASS_V2_Y:
-//-----------------------------------------------
-
-
-//---------- Deblock Y interal right edge (V3) ----------
-
- // Bypass deblocking if FilterInternal4x4EdgesFlag = 0
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterInternal4x4EdgesFlag:w // Check for FilterInternal4x4EdgesFlag
-// (f0.0) jmpi BYPASS_V3_Y
-
- // p3 = Cur MB Y row 8 = r[P_AddrReg, 0]<16;16,1>
- // p2 = Cur MB Y row 9 = r[P_AddrReg, 16]<16;16,1>
- // p1 = Cur MB Y row 10 = r[P_AddrReg, 32]<16;16,1>
- // p0 = Cur MB Y row 11 = r[P_AddrReg, 48]<16;16,1>
- // q0 = Cur MB Y row 12 = r[Q_AddrReg, 0]<16;16,1>
- // q1 = Cur MB Y row 13 = r[Q_AddrReg, 16]<16;16,1>
- // q2 = Cur MB Y row 14 = r[Q_AddrReg, 32]<16;16,1>
- // q3 = Cur MB Y row 15 = r[Q_AddrReg, 48]<16;16,1>
- mov (1) P_AddrReg:w 8*Y_ROW_WIDTH+SRC_MB_Y_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w 12*Y_ROW_WIDTH+SRC_MB_Y_BASE:w { NoDDChk }
-
- mov (1) MaskA:uw r[ECM_AddrReg, wEdgeCntlMap_IntRightVert]:uw
-
- // tc0 has bTc0_v33_Y + bTc0_v23_Y + bTc0_v13_Y + bTc0_v03_Y
- mov (16) Mbaff_TC0(0,0)<1> r[ECM_AddrReg, bTc0_v03_Y]<1;4,0>:ub
-
-// CALL(FILTER_Y_MBAFF, 1)
- PRED_CALL(-f0.0, FILTER_Y_MBAFF, 1)
-
-BYPASS_V3_Y:
-//-----------------------------------------------
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Filter_UV_h.asm b/src/shaders/h264/ildb/AVC_ILDB_Filter_UV_h.asm
deleted file mode 100644
index fe51f72..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Filter_UV_h.asm
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-////////// AVC ILDB filter horizontal UV ///////////////////////////////////////////////////////
-//
-// This filter code prepares the src data and control data for ILDB filtering on all horizontal edges of UV.
-//
-// It sssumes the data for horizontal de-blocking is already transposed.
-//
-// Chroma:
-//
-// +-------+-------+ H0 Edge
-// | | |
-// | | |
-// | | |
-// +-------+-------+ H1 Edge
-// | | |
-// | | |
-// | | |
-// +-------+-------+
-//
-/////////////////////////////////////////////////////////////////////////////
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xBBBC:w
-#endif
-
-//=============== Chroma deblocking ================
-
-//---------- Deblock U external top edge ----------
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterTopMbEdgeFlag:w // Check for FilterTopMbEdgeFlag
-// (f0.0) jmpi BYPASS_EXT_TOP_EDGE_UV
-
- // Get horizontal border edge control data.
-
- //***** Need to take every other bit to form U maskA and mask B
- // Get Luma maskA and maskB
- shr (16) TempRow0(0)<1> r[ECM_AddrReg, wEdgeCntlMapA_ExtTopHorz0]<0;1,0>:uw RRampW(0)
- shr (16) TempRow1(0)<1> r[ECM_AddrReg, wEdgeCntlMapB_ExtTopHorz0]<0;1,0>:uw RRampW(0)
-
- (f0.0) jmpi ILDB_LABEL(BYPASS_EXT_TOP_EDGE_UV)
-
- // Extract UV MaskA and MaskB from every other bit of Y masks
- and.nz.f0.0 (8) null:w TempRow0(0)<16;8,2> 1:w
- and.nz.f0.1 (8) null:w TempRow1(0)<16;8,2> 1:w
-
-//---------- Deblock U external edge ----------
- // p1 = Prev MB U row 0
- // p0 = Prev MB U row 1
- // q0 = Cur MB U row 0
- // q1 = Cur MB U row 1
-// mov (1) P_AddrReg:w PREV_MB_U_BASE:w { NoDDClr }
- mov (1) P_AddrReg:w TOP_MB_U_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w SRC_MB_U_BASE:w { NoDDChk }
-
- // alpha = bAlphaTop0_Cb, beta = bBetaTop0_Cb
- mov (2) alpha<1>:w r[ECM_AddrReg, bAlphaTop0_Cb]<2;2,1>:ub { NoDDClr }
- // tc0 has bTc0_h03_0_Cb + bTc0_h02_0_Cb + bTc0_h01_0_Cb + bTc0_h00_0_Cb
- mov (4) tc0<1>:ub r[ECM_AddrReg, bTc0_h00_0_Cb]<4;4,1>:ub { NoDDChk }
-
- // UV MaskA and MaskB
- mov (2) MaskA<1>:uw f0.0<2;2,1>:uw
-
- CALL(FILTER_UV, 1)
-
-//---------- Deblock V external top edge ----------
- // p1 = Prev MB V row 0
- // p0 = Prev MB V row 1
- // q0 = Cur MB V row 0
- // q1 = Cur MB V row 1
-// mov (1) P_AddrReg:w PREV_MB_V_BASE:w { NoDDClr }
- mov (1) P_AddrReg:w TOP_MB_V_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w SRC_MB_V_BASE:w { NoDDChk }
-
- // alpha = bAlphaTop0_Cr, beta = bBetaTop0_Cr
- mov (2) alpha<1>:w r[ECM_AddrReg, bAlphaTop0_Cr]<2;2,1>:ub { NoDDClr }
-
- // tc0 has bTc0_h03_0_Cr + bTc0_h02_0_Cr + bTc0_h01_0_Cr + bTc0_h00_0_Cr
- mov (4) tc0<1>:ub r[ECM_AddrReg, bTc0_h00_0_Cr]<4;4,1>:ub { NoDDChk }
-
- // UV MaskA and MaskB
- mov (2) f0.0<1>:uw MaskA<2;2,1>:uw
-
- CALL(FILTER_UV, 1)
-
-ILDB_LABEL(BYPASS_EXT_TOP_EDGE_UV):
-
- // Set EdgeCntlMap2 = 0, so it always uses bS < 4 algorithm.
-
- // Bypass deblocking if FilterInternal4x4EdgesFlag = 0
-// and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterInternal4x4EdgesFlag:w // Check for FilterInternal4x4EdgesFlag
-// (f0.0) jmpi BYPASS_4x4_DEBLOCK_H
-
-//---------- Deblock U internal horz middle edge ----------
-
- //***** Need to take every other bit to form U maskA
- // Get Luma maskA and maskB
- shr (16) TempRow0(0)<1> r[ECM_AddrReg, wEdgeCntlMap_IntMidHorz]<0;1,0>:uw RRampW(0)
-
- // p1 = Cur MB U row 2
- // p0 = Cur MB U row 3
- // q0 = Cur MB U row 4
- // q1 = Cur MB U row 5
- mov (1) P_AddrReg:w 4*UV_ROW_WIDTH+SRC_MB_U_BASE:w { NoDDClr } // Skip 2 U rows and 2 V rows
- mov (1) Q_AddrReg:w 8*UV_ROW_WIDTH+SRC_MB_U_BASE:w { NoDDChk }
-
- // alpha = bAlphaInternal_Cb, beta = bBetaInternal_Cb
- mov (2) alpha<1>:w r[ECM_AddrReg, bAlphaInternal_Cb]<2;2,1>:ub { NoDDClr }
- // tc0 has bTc0_h23_Cb + bTc0_h22_Cb + bTc0_h21_Cb + bTc0_h20_Cb
- mov (4) tc0<1>:ub r[ECM_AddrReg, bTc0_h20_Cb]<4;4,1>:ub { NoDDChk }
-
- // Extract UV MaskA and MaskB from every other bit of Y masks
- and.nz.f0.0 (8) null:w TempRow0(0)<16;8,2> 1:w
-
- // UV MaskA and MaskB
- mov (1) f0.1:uw 0:w
- mov (1) MaskB:uw 0:w { NoDDClr }
- mov (1) MaskA:uw f0.0:uw { NoDDChk }
-
- CALL(FILTER_UV, 1)
-
-//---------- Deblock V internal horz middle edge ----------
- // p1 = Cur MB V row 2
- // p0 = Cur MB V row 3
- // q0 = Cur MB V row 4
- // q1 = Cur MB V row 5
- mov (1) P_AddrReg:w 4*UV_ROW_WIDTH+SRC_MB_V_BASE:w { NoDDClr } // Skip 2 U rows and 2 V rows
- mov (1) Q_AddrReg:w 8*UV_ROW_WIDTH+SRC_MB_V_BASE:w { NoDDChk }
-
- // alpha = bAlphaInternal_Cr, beta = bBetaInternal_Cr
- mov (2) alpha<1>:w r[ECM_AddrReg, bAlphaInternal_Cr]<2;2,1>:ub { NoDDClr }
- // tc0 has bTc0_h23_Cr + bTc0_h22_Cr + bTc0_h21_Cr + bTc0_h20_Cr
- mov (4) tc0<1>:ub r[ECM_AddrReg, bTc0_h20_Cr]<4;4,1>:ub { NoDDChk }
-
- // UV MaskA and MaskB
- mov (2) f0.0<1>:uw MaskA<2;2,1>:uw
-
- CALL(FILTER_UV, 1)
-
-//BYPASS_4x4_DEBLOCK_H:
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Filter_UV_v.asm b/src/shaders/h264/ildb/AVC_ILDB_Filter_UV_v.asm
deleted file mode 100644
index 6da28bf..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Filter_UV_v.asm
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-////////// AVC LDB filter vertical UV ///////////////////////////////////////////////////////
-//
-// This filter code prepares the src data and control data for ILDB filtering on all vertical edges of UV.
-//
-// It sssumes the data for vertical de-blocking is already transposed.
-//
-// Chroma:
-//
-// +-------+-------+
-// | | |
-// | | |
-// | | |
-// +-------+-------+
-// | | |
-// | | |
-// | | |
-// +-------+-------+
-//
-// V0 V1
-// Edge Edge
-//
-/////////////////////////////////////////////////////////////////////////////
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xBBBC:w
-#endif
-
-//=============== Chroma deblocking ================
-
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterLeftMbEdgeFlag:w // Check for FilterLeftMbEdgeFlag
-// (f0.0) jmpi BYPASS_EXT_LEFT_EDGE_UV
-
- // Get vertical border edge control data.
-
- // Get Luma maskA and maskB
- shr (16) TempRow0(0)<1> r[ECM_AddrReg, wEdgeCntlMapA_ExtLeftVert0]<0;1,0>:uw RRampW(0)
- shr (16) TempRow1(0)<1> r[ECM_AddrReg, wEdgeCntlMapB_ExtLeftVert0]<0;1,0>:uw RRampW(0)
-
- (f0.0) jmpi ILDB_LABEL(BYPASS_EXT_LEFT_EDGE_UV)
-
- // Extract UV MaskA and MaskB from every other bit of Y masks
- and.nz.f0.0 (8) null:w TempRow0(0)<16;8,2> 1:w
- and.nz.f0.1 (8) null:w TempRow1(0)<16;8,2> 1:w
-
-//---------- Deblock U external edge ----------
- // p1 = Prev MB U row 0
- // p0 = Prev MB U row 1
- // q0 = Cur MB U row 0
- // q1 = Cur MB U row 1
- mov (1) P_AddrReg:w PREV_MB_U_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w SRC_MB_U_BASE:w { NoDDChk }
-
- // alpha = bAlphaLeft0_Cb, beta = bBetaLeft0_Cb
- mov (2) alpha<1>:w r[ECM_AddrReg, bAlphaLeft0_Cb]<2;2,1>:ub { NoDDClr }
- // tc0 has bTc0_v30_0_Cb + bTc0_v20_0_Cb + bTc0_v10_0_Cb + bTc0_v00_0_Cb
- mov (4) tc0<1>:ub r[ECM_AddrReg, bTc0_v00_0_Cb]<4;4,1>:ub { NoDDChk }
-
- // UV MaskA and MaskB
- mov (2) MaskA<1>:uw f0.0<2;2,1>:uw
-
- CALL(FILTER_UV, 1)
-
-//---------- Deblock V external edge ----------
- // p1 = Prev MB V row 0
- // p0 = Prev MB V row 1
- // q0 = Cur MB V row 0
- // q1 = Cur MB V row 1
- mov (1) P_AddrReg:w PREV_MB_V_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w SRC_MB_V_BASE:w { NoDDChk }
-
- // for vert edge: alpha = bAlphaLeft0_Cr, beta = bBetaLeft0_Cr
- mov (2) alpha<1>:w r[ECM_AddrReg, bAlphaLeft0_Cr]<2;2,1>:ub { NoDDClr }
-
- // tc0 has bTc0_v30_0_Cr + bTc0_v20_0_Cr + bTc0_v10_0_Cr + bTc0_v00_0_Cr
- mov (4) tc0<1>:ub r[ECM_AddrReg, bTc0_v00_0_Cr]<4;4,1>:ub { NoDDChk }
-
- // UV MaskA and MaskB
- mov (2) f0.0<1>:uw MaskA<2;2,1>:uw
-
- CALL(FILTER_UV, 1)
-
-
-ILDB_LABEL(BYPASS_EXT_LEFT_EDGE_UV):
- // Set EdgeCntlMap2 = 0, so it always uses bS < 4 algorithm.
- // Same alpha and beta for all internal vert and horiz edges
-
-
- //***** Need to take every other bit to form U or V maskA
- // Get Luma maskA and maskB
- shr (16) TempRow0(0)<1> r[ECM_AddrReg, wEdgeCntlMap_IntMidVert]<0;1,0>:uw RRampW(0)
-
-//---------- Deblock U internal edge ----------
- // p1 = Cur MB U row 2
- // p0 = Cur MB U row 3
- // q0 = Cur MB U row 4
- // q1 = Cur MB U row 5
- mov (1) P_AddrReg:w 4*UV_ROW_WIDTH+SRC_MB_U_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w 8*UV_ROW_WIDTH+SRC_MB_U_BASE:w { NoDDChk }
-
- // alpha = bAlphaInternal_Cb, beta = bBetaInternal_Cb
- mov (2) alpha<1>:w r[ECM_AddrReg, bAlphaInternal_Cb]<2;2,1>:ub { NoDDClr }
-
- // tc0 has bTc0_v32_Cb + bTc0_v22_Cb + bTc0_v12_Cb + bTc0_v02_Cb
- mov (4) tc0<1>:ub r[ECM_AddrReg, bTc0_v02_Cb]<4;4,1>:ub { NoDDChk }
-
- // Extract UV MaskA and MaskB from every other bit of Y masks
- and.nz.f0.0 (8) null:w TempRow0(0)<16;8,2> 1:w
-
- // UV MaskA and MaskB
- mov (1) f0.1:uw 0:w
- mov (1) MaskB:uw 0:w { NoDDClr }
- mov (1) MaskA:uw f0.0:uw { NoDDChk }
-
- CALL(FILTER_UV, 1)
-
-
-//---------- Deblock V internal edge ----------
- // P1 = Cur MB V row 2
- // P0 = Cur MB V row 3
- // Q0 = Cur MB V row 4
- // Q1 = Cur MB V row 5
- mov (1) P_AddrReg:w 4*UV_ROW_WIDTH+SRC_MB_V_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w 8*UV_ROW_WIDTH+SRC_MB_V_BASE:w { NoDDChk }
-
- // alpha = bAlphaInternal_Cr, beta = bBetaInternal_Cr
- mov (2) alpha<1>:w r[ECM_AddrReg, bAlphaInternal_Cr]<2;2,1>:ub { NoDDClr }
-
- // tc0 has bTc0_v32_Cr + bTc0_v22_Cr + bTc0_v12_Cr + bTc0_v02_Cr
- mov (4) tc0<1>:ub r[ECM_AddrReg, bTc0_v02_Cr]<4;4,1>:ub { NoDDChk }
-
- // UV MaskA and MaskB
- mov (2) f0.0<1>:uw MaskA<2;2,1>:uw
-
- CALL(FILTER_UV, 1)
-
-
-//BYPASS_4x4_DEBLOCK_V:
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Filter_Y_h.asm b/src/shaders/h264/ildb/AVC_ILDB_Filter_Y_h.asm
deleted file mode 100644
index 45a0632..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Filter_Y_h.asm
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-////////// AVC ILDB filter horizontal Y ///////////////////////////////////////////////////////
-//
-// This filter code prepares the src data and control data for ILDB filtering on all horizontal edges of Y.
-//
-// It sssumes the data for horizontal de-blocking is already transposed.
-//
-// Luma:
-//
-// +-------+-------+-------+-------+ H0 Edge
-// | | | | |
-// | | | | |
-// | | | | |
-// +-------+-------+-------+-------+ H1 Edge
-// | | | | |
-// | | | | |
-// | | | | |
-// +-------+-------+-------+-------+ H2 Edge
-// | | | | |
-// | | | | |
-// | | | | |
-// +-------+-------+-------+-------+ H3 Edge
-// | | | | |
-// | | | | |
-// | | | | |
-// +-------+-------+-------+-------+
-//
-/////////////////////////////////////////////////////////////////////////////
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xBBBB:w
-#endif
-
-
-//========== Luma deblocking ==========
-
-
-//---------- Deblock Y external top edge (H0) ----------
-
- // Bypass deblocking if it is the top edge of the picture.
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterTopMbEdgeFlag:w // Check for FilterTopMbEdgeFlag
-
-// and.z.f0.1 (1) null:uw r[ECM_AddrReg, wEdgeCntlMapA_ExtTopHorz0]:uw 0xFFFF:uw // MaskA = 0?
-
- // Get (alpha >> 2) + 2
- shr (1) alpha2:w r[ECM_AddrReg, bAlphaTop0_Y]:ub 2:w // alpha >> 2
-
- // p3 = Prev MB Y row 0 = r[P_AddrReg, 0]<16;16,1>
- // p2 = Prev MB Y row 1 = r[P_AddrReg, 16]<16;16,1>
- // p1 = Prev MB Y row 2 = r[P_AddrReg, 32]<16;16,1>
- // p0 = Prev MB Y row 3 = r[P_AddrReg, 48]<16;16,1>
- // q0 = Cur MB Y row 0 = r[Q_AddrReg, 0]<16;16,1>
- // q1 = Cur MB Y row 1 = r[Q_AddrReg, 16]<16;16,1>
- // q2 = Cur MB Y row 2 = r[Q_AddrReg, 32]<16;16,1>
- // q3 = Cur MB Y row 3 = r[Q_AddrReg, 48]<16;16,1>
-// mov (1) P_AddrReg:w PREV_MB_Y_BASE:w { NoDDClr }
- mov (1) P_AddrReg:w TOP_MB_Y_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w SRC_MB_Y_BASE:w { NoDDChk }
-
- // Get horizontal border edge control data
- // alpha = bAlphaTop0_Y
- // beta = bBetaTop0_Y
- mov (2) alpha<1>:w r[ECM_AddrReg, bAlphaTop0_Y]<2;2,1>:ub { NoDDClr } // 2 channels for alpha and beta
-
- mov (2) MaskA<1>:uw r[ECM_AddrReg, wEdgeCntlMapA_ExtTopHorz0]<2;2,1>:uw { NoDDClr, NoDDChk }
-
- // tc0 has bTc0_h03_0_Y | bTc0_h02_0_Y | bTc0_h01_0_Y | bTc0_h00_0_Y
- mov (4) tc0<1>:ub r[ECM_AddrReg, bTc0_h00_0_Y]<4;4,1>:ub { NoDDChk }
-
-// (f0.0) jmpi BYPASS_EXT_TOP_EDGE_Y
-// (f0.0.anyv) jmpi BYPASS_EXT_TOP_EDGE_Y
-
- add (1) alpha2:w alpha2:w 2:w // alpha2 = (alpha >> 2) + 2
-
-// CALL(FILTER_Y, 1)
- PRED_CALL(-f0.0, FILTER_Y, 1)
-
-//BYPASS_EXT_TOP_EDGE_Y:
-//------------------------------------------------------------------
- // Same alpha, alpha2, beta and MaskB for all internal edges
-
- // Get (alpha >> 2) + 2
- shr (1) alpha2:w r[ECM_AddrReg, bAlphaInternal_Y]:ub 2:w // alpha >> 2
-
- // alpha = bAlphaInternal_Y
- // beta = bBetaInternal_Y
- mov (2) alpha<1>:w r[ECM_AddrReg, bAlphaInternal_Y]<2;2,1>:ub { NoDDClr }
-
- // Set MaskB = 0 for all 3 int edges, so it always uses bS < 4 algorithm.
- mov (1) MaskB:uw 0:w { NoDDChk }
-
- add (1) alpha2:w alpha2:w 2:w // alpha2 = (alpha >> 2) + 2
-
-
-//---------- Deblock Y internal top edge (H1) ----------
-
- // Bypass deblocking if FilterInternal4x4EdgesFlag = 0
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterInternal4x4EdgesFlag:w // Check for FilterInternal4x4EdgesFlag
-
- // p3 = Cur MB Y row 0 = r[P_AddrReg, 0]<16;16,1>
- // p2 = Cur MB Y row 1 = r[P_AddrReg, 16]<16;16,1>
- // p1 = Cur MB Y row 2 = r[P_AddrReg, 32]<16;16,1>
- // p0 = Cur MB Y row 3 = r[P_AddrReg, 48]<16;16,1>
- // q0 = Cur MB Y row 4 = r[Q_AddrReg, 0]<16;16,1>
- // q1 = Cur MB Y row 5 = r[Q_AddrReg, 16]<16;16,1>
- // q2 = Cur MB Y row 6 = r[Q_AddrReg, 32]<16;16,1>
- // q3 = Cur MB Y row 7 = r[Q_AddrReg, 48]<16;16,1>
- mov (1) P_AddrReg:w SRC_MB_Y_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w 4*Y_ROW_WIDTH+SRC_MB_Y_BASE:w { NoDDChk }
-
- mov (1) MaskA:uw r[ECM_AddrReg, wEdgeCntlMap_IntTopHorz]:uw { NoDDClr }
-
- // tc0 has bTc0_h13_Y + bTc0_h12_Y + bTc0_h11_Y + bTc0_h10_Y
- mov (4) tc0<1>:ub r[ECM_AddrReg, bTc0_h10_Y]<4;4,1>:ub { NoDDChk }
-
-// (f0.0) jmpi BYPASS_4x4_DEBLOCK_H
-// (f0.0.anyv) jmpi BYPASS_4x4_DEBLOCK_H
-
-// CALL(FILTER_Y, 1)
- PRED_CALL(-f0.0, FILTER_Y, 1)
-
-//BYPASS_4x4_DEBLOCK_H:
-//------------------------------------------------------------------
-
-
-//---------- Deblock Y internal mid horizontal edge (H2) ----------
-
- // Bypass deblocking if FilterInternal8x8EdgesFlag = 0
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterInternal8x8EdgesFlag:w // Check for FilterInternal4x4EdgesFlag
-
-// and.z.f0.1 (1) null:uw r[ECM_AddrReg, wEdgeCntlMap_IntMidHorz]:uw 0xFFFF:uw // MaskA = 0?
-
- // p3 = Cur MB Y row 4 = r[P_AddrReg, 0]<16;16,1>
- // p2 = Cur MB Y row 5 = r[P_AddrReg, 16]<16;16,1>
- // p1 = Cur MB Y row 6 = r[P_AddrReg, 32]<16;16,1>
- // p0 = Cur MB Y row 7 = r[P_AddrReg, 48]<16;16,1>
- // q0 = Cur MB Y row 8 = r[Q_AddrReg, 0]<16;16,1>
- // q1 = Cur MB Y row 9 = r[Q_AddrReg, 16]<16;16,1>
- // q2 = Cur MB Y row 10 = r[Q_AddrReg, 32]<16;16,1>
- // q3 = Cur MB Y row 11 = r[Q_AddrReg, 48]<16;16,1>
- mov (1) P_AddrReg:w 4*Y_ROW_WIDTH+SRC_MB_Y_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w 8*Y_ROW_WIDTH+SRC_MB_Y_BASE:w { NoDDChk }
-
- mov (1) MaskA:uw r[ECM_AddrReg, wEdgeCntlMap_IntMidHorz]:uw { NoDDClr }
-// mov (1) MaskB:uw 0:w // Set MaskB = 0, so it always uses bS < 4 algorithm.
-
- // tc0 has bTc0_h23_Y + bTc0_h22_Y + bTc0_h21_Y + bTc0_h20_Y
- mov (4) tc0<1>:ub r[ECM_AddrReg, bTc0_h20_Y]<4;4,1>:ub { NoDDChk }
-
-// (f0.0) jmpi BYPASS_8x8_DEBLOCK_H
-// (f0.0.anyv) jmpi BYPASS_8x8_DEBLOCK_H
-
-// CALL(FILTER_Y, 1)
- PRED_CALL(-f0.0, FILTER_Y, 1)
-
-//BYPASS_8x8_DEBLOCK_H:
-//-----------------------------------------------
-
-
-//---------- Deblock Y internal bottom edge (H3) ----------
-
- // Bypass deblocking if FilterInternal4x4EdgesFlag = 0
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterInternal4x4EdgesFlag:w // Check for FilterInternal4x4EdgesFlag
-
-// and.z.f0.1 (1) null:uw r[ECM_AddrReg, wEdgeCntlMap_IntBotHorz]:uw 0xFFFF:uw // MaskA = 0?
-
- // p3 = Cur MB Y row 8 = r[P_AddrReg, 0]<16;16,1>
- // p2 = Cur MB Y row 9 = r[P_AddrReg, 16]<16;16,1>
- // p1 = Cur MB Y row 10 = r[P_AddrReg, 32]<16;16,1>
- // p0 = Cur MB Y row 11 = r[P_AddrReg, 48]<16;16,1>
- // q0 = Cur MB Y row 12 = r[Q_AddrReg, 0]<16;16,1>
- // q1 = Cur MB Y row 13 = r[Q_AddrReg, 16]<16;16,1>
- // q2 = Cur MB Y row 14 = r[Q_AddrReg, 32]<16;16,1>
- // q3 = Cur MB Y row 15 = r[Q_AddrReg, 48]<16;16,1>
- mov (1) P_AddrReg:w 8*Y_ROW_WIDTH+SRC_MB_Y_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w 12*Y_ROW_WIDTH+SRC_MB_Y_BASE:w { NoDDChk }
-
-
- mov (1) MaskA:uw r[ECM_AddrReg, wEdgeCntlMap_IntBotHorz]:uw { NoDDClr }
-// mov (1) MaskB:uw 0:w // Set MaskB = 0, so it always uses bS < 4 algorithm.
-
- // tc0 has bTc0_h33_Y + bTc0_h32_Y + bTc0_h31_Y + bTc0_h30_Y
- mov (4) tc0<1>:ub r[ECM_AddrReg, bTc0_h30_Y]<4;4,1>:ub { NoDDChk }
-
-// (f0.0) jmpi BYPASS_4x4_DEBLOCK_H2
-// (f0.0.anyv) jmpi BYPASS_4x4_DEBLOCK_H2
-
-// CALL(FILTER_Y, 1)
- PRED_CALL(-f0.0, FILTER_Y, 1)
-
-//BYPASS_4x4_DEBLOCK_H2:
-//-----------------------------------------------
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Filter_Y_v.asm b/src/shaders/h264/ildb/AVC_ILDB_Filter_Y_v.asm
deleted file mode 100644
index c6d0a12..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Filter_Y_v.asm
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-////////// AVC ILDB filter vertical Y ///////////////////////////////////////////////////////
-//
-// This filter code prepares the src data and control data for ILDB filtering on all vertical edges of Y.
-//
-// It sssumes the data for vertical de-blocking is already transposed.
-//
-// Luma:
-//
-// +-------+-------+-------+-------+
-// | | | | |
-// | | | | |
-// | | | | |
-// +-------+-------+-------+-------+
-// | | | | |
-// | | | | |
-// | | | | |
-// +-------+-------+-------+-------+
-// | | | | |
-// | | | | |
-// | | | | |
-// +-------+-------+-------+-------+
-// | | | | |
-// | | | | |
-// | | | | |
-// +-------+-------+-------+-------+
-//
-// V0 V1 V2 V3
-// Edge Edge Edge Edge
-//
-/////////////////////////////////////////////////////////////////////////////
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xBBBB:w
-#endif
-
-
-//========== Luma deblocking ==========
-
-
-//---------- Deblock Y external left edge (V0) ----------
-
- // Bypass deblocking if it is left edge of the picture.
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterLeftMbEdgeFlag:w // Check for FilterLeftMbEdgeFlag
-
-// and.z.f0.1 (1) null:uw r[ECM_AddrReg, wEdgeCntlMapA_ExtLeftVert0]:uw 0xFFFF:uw // MaskA = 0?
-
- // Get (alpha >> 2) + 2
- shr (1) alpha2:w r[ECM_AddrReg, bAlphaLeft0_Y]:ub 2:w // alpha >> 2
-
- // p3 = Prev MB Y row 0 = r[P_AddrReg, 0]<16;16,1>
- // p2 = Prev MB Y row 1 = r[P_AddrReg, 16]<16;16,1>
- // p1 = Prev MB Y row 2 = r[P_AddrReg, 32]<16;16,1>
- // p0 = Prev MB Y row 3 = r[P_AddrReg, 48]<16;16,1>
- // q0 = Cur MB Y row 0 = r[Q_AddrReg, 0]<16;16,1>
- // q1 = Cur MB Y row 1 = r[Q_AddrReg, 16]<16;16,1>
- // q2 = Cur MB Y row 2 = r[Q_AddrReg, 32]<16;16,1>
- // q3 = Cur MB Y row 3 = r[Q_AddrReg, 48]<16;16,1>
- mov (1) P_AddrReg:w PREV_MB_Y_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w SRC_MB_Y_BASE:w { NoDDChk }
-
- // Get vertical border edge control data
- // alpha = bAlphaLeft0_Y
- // beta = bBetaLeft0_Y
- mov (2) alpha<1>:w r[ECM_AddrReg, bAlphaLeft0_Y]<2;2,1>:ub { NoDDClr } // 2 channels for alpha and beta
-
- mov (2) MaskA<1>:uw r[ECM_AddrReg, wEdgeCntlMapA_ExtLeftVert0]<2;2,1>:uw { NoDDClr, NoDDChk }
-
- // tc0 has bTc0_v30_0_Y | bTc0_v20_0_Y | bTc0_v10_0_Y | bTc0_v00_0_Y
- mov (4) tc0<1>:ub r[ECM_AddrReg, bTc0_v00_0_Y]<4;4,1>:ub { NoDDChk }
-
-// (f0.0) jmpi BYPASS_EXT_LEFT_EDGE_Y
-// (f0.0.anyv) jmpi BYPASS_EXT_LEFT_EDGE_Y
-
- add (1) alpha2:w alpha2:w 2:w // alpha2 = (alpha >> 2) + 2
-
-// CALL(FILTER_Y, 1)
- PRED_CALL(-f0.0, FILTER_Y, 1)
-
-
-//BYPASS_EXT_LEFT_EDGE_Y:
-//------------------------------------------------------------------
- // Same alpha, alpha2, beta and MaskB for all internal edges
-
- // Get (alpha >> 2) + 2
- shr (1) alpha2:w r[ECM_AddrReg, bAlphaInternal_Y]:ub 2:w // alpha >> 2
-
- // alpha = bAlphaInternal_Y
- // beta = bBetaInternal_Y
- mov (2) alpha<1>:w r[ECM_AddrReg, bAlphaInternal_Y]<2;2,1>:ub { NoDDClr }
-
- // Set MaskB = 0 for all 3 int edges, so it always uses bS < 4 algorithm.
- mov (1) MaskB:uw 0:w { NoDDChk }
-
- add (1) alpha2:w alpha2:w 2:w // alpha2 = (alpha >> 2) + 2
-
-
-//---------- Deblock Y internal left edge (V1) ----------
-
- // Bypass deblocking if FilterInternal4x4EdgesFlag = 0
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterInternal4x4EdgesFlag:w // Check for FilterInternal4x4EdgesFlag
-
-// and.z.f0.1 (1) null:uw r[ECM_AddrReg, wEdgeCntlMap_IntLeftVert]:uw 0xFFFF:uw // MaskA = 0?
-
- // p3 = Cur MB Y row 0 = r[P_AddrReg, 0]<16;16,1>
- // p2 = Cur MB Y row 1 = r[P_AddrReg, 16]<16;16,1>
- // p1 = Cur MB Y row 2 = r[P_AddrReg, 32]<16;16,1>
- // p0 = Cur MB Y row 3 = r[P_AddrReg, 48]<16;16,1>
- // q0 = Cur MB Y row 4 = r[Q_AddrReg, 0]<16;16,1>
- // q1 = Cur MB Y row 5 = r[Q_AddrReg, 16]<16;16,1>
- // q2 = Cur MB Y row 6 = r[Q_AddrReg, 32]<16;16,1>
- // q3 = Cur MB Y row 7 = r[Q_AddrReg, 48]<16;16,1>
- mov (1) P_AddrReg:w SRC_MB_Y_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w 4*Y_ROW_WIDTH+SRC_MB_Y_BASE:w { NoDDChk }
-
- mov (1) MaskA:uw r[ECM_AddrReg, wEdgeCntlMap_IntLeftVert]:uw { NoDDClr }
-
- // tc0 has bTc0_v31_Y + bTc0_v21_Y + bTc0_v11_Y + bTc0_v01_Y
- mov (4) tc0<1>:ub r[ECM_AddrReg, bTc0_v01_Y]<4;4,1>:ub { NoDDChk }
-
-// (f0.0) jmpi BYPASS_4x4_DEBLOCK_V
-// (f0.0.anyv) jmpi BYPASS_4x4_DEBLOCK_V
-
-// CALL(FILTER_Y, 1)
- PRED_CALL(-f0.0, FILTER_Y, 1)
-
-//BYPASS_4x4_DEBLOCK_V:
-//------------------------------------------------------------------
-
-
-//---------- Deblock Y internal mid vert edge (V2) ----------
-
- // Bypass deblocking if FilterInternal8x8EdgesFlag = 0
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterInternal8x8EdgesFlag:w // Check for FilterInternal4x4EdgesFlag
-
-// and.z.f0.1 (1) null:uw r[ECM_AddrReg, wEdgeCntlMap_IntMidVert]:uw 0xFFFF:uw // MaskA = 0?
-
- // p3 = Cur MB Y row 4 = r[P_AddrReg, 0]<16;16,1>
- // p2 = Cur MB Y row 5 = r[P_AddrReg, 16]<16;16,1>
- // p1 = Cur MB Y row 6 = r[P_AddrReg, 32]<16;16,1>
- // p0 = Cur MB Y row 7 = r[P_AddrReg, 48]<16;16,1>
- // q0 = Cur MB Y row 8 = r[Q_AddrReg, 0]<16;16,1>
- // q1 = Cur MB Y row 9 = r[Q_AddrReg, 16]<16;16,1>
- // q2 = Cur MB Y row 10 = r[Q_AddrReg, 32]<16;16,1>
- // q3 = Cur MB Y row 11 = r[Q_AddrReg, 48]<16;16,1>
- mov (1) P_AddrReg:w 4*Y_ROW_WIDTH+SRC_MB_Y_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w 8*Y_ROW_WIDTH+SRC_MB_Y_BASE:w { NoDDChk }
-
- mov (1) MaskA:uw r[ECM_AddrReg, wEdgeCntlMap_IntMidVert]:uw { NoDDClr }
-// mov (1) MaskB:uw 0:w // Set MaskB = 0, so it always uses bS < 4 algorithm.
-
- // tc0 has bTc0_v32_Y + bTc0_v22_Y + bTc0_v12_Y + bTc0_v02_Y
- mov (4) tc0<1>:ub r[ECM_AddrReg, bTc0_v02_Y]<4;4,1>:ub { NoDDChk }
-
-// (f0.0) jmpi BYPASS_8x8_DEBLOCK_V
-// (f0.0.anyv) jmpi BYPASS_8x8_DEBLOCK_V
-
-// CALL(FILTER_Y, 1)
- PRED_CALL(-f0.0, FILTER_Y, 1)
-
-//BYPASS_8x8_DEBLOCK_V:
-//-----------------------------------------------
-
-
-//---------- Deblock Y interal right edge (V3) ----------
-
- // Bypass deblocking if FilterInternal4x4EdgesFlag = 0
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FilterInternal4x4EdgesFlag:w // Check for FilterInternal4x4EdgesFlag
-
-// and.z.f0.1 (1) null:uw r[ECM_AddrReg, wEdgeCntlMap_IntRightVert]:uw 0xFFFF:uw // MaskA = 0?
-
- // p3 = Cur MB Y row 8 = r[P_AddrReg, 0]<16;16,1>
- // p2 = Cur MB Y row 9 = r[P_AddrReg, 16]<16;16,1>
- // p1 = Cur MB Y row 10 = r[P_AddrReg, 32]<16;16,1>
- // p0 = Cur MB Y row 11 = r[P_AddrReg, 48]<16;16,1>
- // q0 = Cur MB Y row 12 = r[Q_AddrReg, 0]<16;16,1>
- // q1 = Cur MB Y row 13 = r[Q_AddrReg, 16]<16;16,1>
- // q2 = Cur MB Y row 14 = r[Q_AddrReg, 32]<16;16,1>
- // q3 = Cur MB Y row 15 = r[Q_AddrReg, 48]<16;16,1>
- mov (1) P_AddrReg:w 8*Y_ROW_WIDTH+SRC_MB_Y_BASE:w { NoDDClr }
- mov (1) Q_AddrReg:w 12*Y_ROW_WIDTH+SRC_MB_Y_BASE:w { NoDDChk }
-
- mov (1) MaskA:uw r[ECM_AddrReg, wEdgeCntlMap_IntRightVert]:uw { NoDDClr }
-// mov (1) MaskB:uw 0:w // Set MaskB = 0, so it always uses bS < 4 algorithm.
-
- // tc0 has bTc0_v33_Y + bTc0_v23_Y + bTc0_v13_Y + bTc0_v03_Y
- mov (4) tc0<1>:ub r[ECM_AddrReg, bTc0_v03_Y]<4;4,1>:ub { NoDDChk }
-
-// (f0.0) jmpi BYPASS_4x4_DEBLOCK_V2
-// (f0.0.anyv) jmpi BYPASS_4x4_DEBLOCK_V2
-
-// CALL(FILTER_Y, 1)
- PRED_CALL(-f0.0, FILTER_Y, 1)
-
-//BYPASS_4x4_DEBLOCK_V2:
-//-----------------------------------------------
diff --git a/src/shaders/h264/ildb/AVC_ILDB_ForwardMsg.asm b/src/shaders/h264/ildb/AVC_ILDB_ForwardMsg.asm
deleted file mode 100644
index 326ba28..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_ForwardMsg.asm
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-//========== Forward message to root thread through gateway ==========
-// Each child thread write a byte into the root GRF r50 defiend in open Gataway.
-
-#if defined(_DEBUG)
-mov (1) EntrySignatureC:w 0x7777:w
-#endif
-
-// Init payload to r0
-mov (8) GatewayPayload<1>:ud 0:w //{ NoDDClr }
-
-// Forward a message:
-// Offset = x relative to r50 (defiend in open gataway), x = ORIX >> 4 [bit 28:16]
-// Need to shift left 16
-
-// shift 2 more bits for byte to word offset
-
-//shl (1) Offset_Length:ud GateWayOffsetC:w 16:w { NoDDClr, NoDDChk }
-shl (1) Offset_Length:ud GateWayOffsetC:w 18:w
-
-// 2 bytes offset
-add (1) Offset_Length:ud Offset_Length:ud 0x00020000:d { NoDDClr }
-
-// Length = 1 byte, [bit 10:8 = 000]
-//000 xxxxxxxxxxxxx 00000 000 00000000 ==> 000x xxxx xxxx xxxx 0000 0000 0000 0000
-
-//mov (1) DispatchID:ub r0.20:ub // Dispatch ID
-
-//Move in EUid and Thread ID that we received from the PARENT thread
-mov (1) EUID_TID:uw r0.6:uw { NoDDClr, NoDDChk }
-
-mov (1) GatewayPayloadKey:uw 0x1212:uw { NoDDClr, NoDDChk } // Key
-
-//mov (4) GatewayPayload<1>:ud 0:ud { NoDDClr, NoDDChk } // Init payload low 4 dword
-
-// Write back one byte (value = 0xFF) to root thread GRF to indicate this child thread is finished
-// All lower 4 bytes must be assigned to the same byte value.
-mov (4) GatewayPayload<1>:ub 0xFFFF:uw { NoDDChk }
-
-// msg descriptor bit 15 set to '1' for notification
-#ifdef GW_DCN
-// For ILK, EOT bit should also be set to terminate the thread. This is to fix a timing related HW issue.
-//
-send (8) null:ud m0 GatewayPayload<8;8,1>:ud MSG_GW_EOT FWDMSGDSC+NOTIFYMSG
-#else
-send (8) null:ud m0 GatewayPayload<8;8,1>:ud MSG_GW FWDMSGDSC+NOTIFYMSG
-#endif // GW_DCN
-
-//========== Forward Msg Done ========================================
-
diff --git a/src/shaders/h264/ildb/AVC_ILDB_LumaThrdLimit.asm b/src/shaders/h264/ildb/AVC_ILDB_LumaThrdLimit.asm
deleted file mode 100644
index 3fe8d45..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_LumaThrdLimit.asm
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-//========== Forward message to root thread through gateway ==========
-
-// Chroma root kenrel updates luma thread limit.
-
-#if defined(_DEBUG)
-mov (1) EntrySignatureC:w 0x7788:w
-#endif
-
-// Init payload to r0
-mov (8) GatewayPayload<1>:ud 0:w { NoDDClr }
-
-// Forward a message:
-// Offset = x relative to r50 (defiend in open gataway), x = ORIX >> 4 [bit 28:16]
-// Need to shift left 16
-
-mov (1) Offset_Length:ud THREAD_LIMIT_OFFSET:ud { NoDDClr, NoDDChk }
-
-// Length = 1 byte, [bit 10:8 = 000]
-//000 xxxxxxxxxxxxx 00000 000 00000000 ==> 000x xxxx xxxx xxxx 0000 0000 0000 0000
-
-//mov (1) DispatchID:ub r0.20:ub // Dispatch ID
-
-// Copy EUid and Thread ID that we received from the PARENT thread
-mov (1) EUID_TID:uw r0.6:uw { NoDDClr, NoDDChk }
-
-mov (1) GatewayPayloadKey:uw 0x1212:uw { NoDDChk } // Key
-
-//mov (4) GatewayPayload<1>:ud 0:ud { NoDDClr, NoDDChk } // Init payload low 4 dword
-
-// Write back one byte (value = 0xFF) to root thread GRF to indicate this child thread is finished
-// All lower 4 bytes must be assigned to the same byte value.
-add (1) Temp1_W:w MaxThreads:uw -OutstandingThreads:uw
-mov (4) GatewayPayload<1>:ub Temp1_B<0;1,0>:ub
-
-send (8) GatewayResponse:ud m0 GatewayPayload<8;8,1>:ud MSG_GW FWDMSGDSC
-
-//========== Forward Msg Done ========================================
-
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Luma_Core.asm b/src/shaders/h264/ildb/AVC_ILDB_Luma_Core.asm
deleted file mode 100644
index 844357e..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Luma_Core.asm
+++ /dev/null
@@ -1,449 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__AVC_ILDB_LUMA_CORE__) // Make sure this file is only included once
-#define __AVC_ILDB_LUMA_CORE__
-
-////////// AVC ILDB Luma Core /////////////////////////////////////////////////////////////////////////////////
-//
-// This core performs AVC LUMA ILDB filtering on one horizontal edge (16 pixels) of a MB.
-// If data is transposed, it can also de-block a vertical edge.
-//
-// Bafore calling this subroutine, caller needs to set the following parameters.
-//
-// - EdgeCntlMap1 // Edge control map A
-// - EdgeCntlMap2 // Edge control map B
-// - P_AddrReg // Src and dest address register for P pixels
-// - Q_AddrReg // Src and dest address register for Q pixels
-// - alpha // alpha corresponding to the edge to be filtered
-// - beta // beta corresponding to the edge to be filtered
-// - tc0 // tc0 corresponding to the edge to be filtered
-//
-//
-// +----+----+----+----+----+----+----+----+
-// | p3 | p2 | P1 | p0 | q0 | q1 | q2 | q3 |
-// +----+----+----+----+----+----+----+----+
-//
-// p3 = r[P_AddrReg, 0]<16;16,1>
-// p2 = r[P_AddrReg, 16]<16;16,1>
-// p1 = r[P_AddrReg, 32]<16;16,1>
-// p0 = r[P_AddrReg, 48]<16;16,1>
-// q0 = r[Q_AddrReg, 0]<16;16,1>
-// q1 = r[Q_AddrReg, 16]<16;16,1>
-// q2 = r[Q_AddrReg, 32]<16;16,1>
-// q3 = r[Q_AddrReg, 48]<16;16,1>
-//
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// The region is both src and dest
-// P0-P3 and Q0-Q3 should be only used if they have not been modified to new values
-#undef P3
-#undef P2
-#undef P1
-#undef P0
-#undef Q0
-#undef Q1
-#undef Q2
-#undef Q3
-
-#define P3 r[P_AddrReg, 0]<16;16,1>:ub
-#define P2 r[P_AddrReg, 16]<16;16,1>:ub
-#define P1 r[P_AddrReg, 32]<16;16,1>:ub
-#define P0 r[P_AddrReg, 48]<16;16,1>:ub
-#define Q0 r[Q_AddrReg, 0]<16;16,1>:ub
-#define Q1 r[Q_AddrReg, 16]<16;16,1>:ub
-#define Q2 r[Q_AddrReg, 32]<16;16,1>:ub
-#define Q3 r[Q_AddrReg, 48]<16;16,1>:ub
-
-// New region as dest
-#undef NewP2
-#undef NewP1
-#undef NewP0
-#undef NewQ0
-#undef NewQ1
-#undef NewQ2
-
-#define NewP2 r[P_AddrReg, 16]<1>:ub
-#define NewP1 r[P_AddrReg, 32]<1>:ub
-#define NewP0 r[P_AddrReg, 48]<1>:ub
-#define NewQ0 r[Q_AddrReg, 0]<1>:ub
-#define NewQ1 r[Q_AddrReg, 16]<1>:ub
-#define NewQ2 r[Q_AddrReg, 32]<1>:ub
-
-// Filter one luma edge
-FILTER_Y:
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0x1111:w
-#endif
- //---------- Derive filterSampleflag in AVC spec, equition (8-469) ----------
- // bS is in MaskA
-
- // Src copy of the p3, p2, p1, p0, q0, q1, q2, q3
-// mov (16) p0123_W(0)<1> r[P_AddrReg]<16;16,1>:uw
-// mov (16) p0123_W(1)<1> r[P_AddrReg, 32]<16;16,1>:uw
-// mov (16) q0123_W(0)<1> r[Q_AddrReg]<16;16,1>:uw
-// mov (16) q0123_W(1)<1> r[Q_AddrReg, 32]<16;16,1>:uw
-
- mov (2) f0.0<1>:uw MaskA<2;2,1>:uw
-
- add (16) q0_p0(0)<1> Q0 -P0 // q0-p0
- add (16) TempRow0(0)<1> P1 -P0 // p1-p0
- add (16) TempRow1(0)<1> Q1 -Q0 // q1-q0
-
- // Build FilterSampleFlag
- // abs(q0-p0) < alpha
- (f0.0) cmp.l.f0.0 (16) null:w (abs)q0_p0(0) alpha:w
- // abs(p1-p0) < Beta
- (f0.0) cmp.l.f0.0 (16) null:w (abs)TempRow0(0) beta:w
- // abs(q1-q0) < Beta
- (f0.0) cmp.l.f0.0 (16) null:w (abs)TempRow1(0) beta:w
-
- //-----------------------------------------------------------------------------------------
-
- (f0.0) if (16) Y_ENDIF1
- // For channels whose edge control map1 = 1 ---> perform de-blocking
-
-// mov (1) f0.1:uw MaskB:uw {NoMask} // Now check for which algorithm to apply
-
- // (abs)ap = |p2-p0|
- add (16) ap(0)<1> P2 -P0 // ap = p2-p0
- // (abs)aq = |q2-q0|
- add (16) aq(0)<1> Q2 -Q0 // aq = q2-q0
-
- // Make a copy of unmodified p0 and p1 for use in q0'and q1' calculation
- mov (16) p0123_W(1)<1> r[P_AddrReg, 32]<16;16,1>:uw {NoMask}
-
- (f0.1) if (16) Y_ELSE2
-
- // For channels whose edge control map2 = 1 ---> bS = 4 algorithm
-
- // Compute q0', q1' and q2'
- //-----------------------------------------------------------------------------
- // bS = 4 Algorithm :
- //
- // gama = |p0-q0| < ((alpha >> 2) + 2)
- // deltap = (ap<beta) && gama; // deep filter flag
- // if (deltap) {
- // p0' = ( p2 +2*p1 +2*p0 +2*q0 + q1 + 4) >> 3;
- // p1' = ( p2 + p1 + p0 + q0 + 2) >> 2;
- // p2' = (2*p3 +3*p2 + p1 + p0 + q0 + 4) >> 3;
- // } else {
- // p0' = ( 2*p1 + p0 + q1 + 2) >> 2;
- // }
- //-----------------------------------------------------------------------------
-
- // gama = |p0-q0| < ((alpha >> 2) + 2) = |p0-q0| < alpha2
- cmp.l.f0.1 (16) null:w (abs)q0_p0(0) alpha2:w
-
- // Common P01 = p0 + p1
- add (16) P0_plus_P1(0)<1> P0 P1
-
- // Common Q01 = q0 + q1
- add (16) Q0_plus_Q1(0)<1> Q0 Q1
-
-// mov (1) CTemp1_W:w f0.1:uw {NoMask}
- mov (1) f0.0:uw f0.1:uw {NoMask}
-
- // deltap = ((abs)ap < beta) && gama
- (f0.1) cmp.l.f0.1 (16) null:w (abs)ap(0) beta<0;1,0>:w // (abs)ap < beta ?
-
- // deltaq = ((abs)aq < beta) && gama
- (f0.0) cmp.l.f0.0 (16) null:w (abs)aq(0) beta<0;1,0>:w // (abs)aq < beta ?
-
-
-// mov (1) CTemp1_W:w f0.0:uw {NoMask} // gama = |p0-q0| < ((alpha >> 2) + 2) for each channel
-// and (1) f0.1:w f0.1:uw CTemp1_W:w {NoMask} // deltap = (ap<beta) && gama
-
-
- (f0.1) if (16) Y_ELSE3 // for channels its deltap = true
-
- add (16) P2_plus_P3(0)<1> P2 P3
-
- // A = (p1 + p0) + q0 = P01 + q0
- add (16) A(0)<1> P0_plus_P1(0) Q0 // A = P01 + q0
-
- // Now acc0 = A
-
- // B = p2 + (p1 + p0 + q0) + 4 = p2 + A + 4
-// add (16) acc0.0<1>:w P2 4:w // p2 + 4
-// add (16) BB(0)<1> acc0.0<16;16,1>:w A(0) // B = p2 + A + 4
- add (16) acc0.0<1>:w acc0.0<16;16,1>:w 4:w // p2 + 4
- add (16) BB(0)<1> acc0.0<16;16,1>:w P2 // B = p2 + A + 4
-
- // Now acc0 = B
-
- // p2' = (2*p3 +3*p2 + A + 4) >> 3 = (2*(p3+p2) + B) >> 3
-// mov (16) acc0.0<1>:w BB(0)
- mac (16) acc0.0<1>:w P2_plus_P3(0) 2:w
- shr.sat (16) TempRow3B(0)<2> acc0.0<16;16,1>:w 3:w
-
- // p1' = (p2 + A + 2) >> 2 = (B - 2) >> 2
- add (16) acc0.0<1>:w BB(0) -2:w
- shr.sat (16) TempRow1B(0)<2> acc0.0<16;16,1>:w 2:w
-
- // p0' = (p2 +2*A + q1 + 4) >> 3 = (B + A + q1) >> 3
- add (16) acc0.0<1>:w Q1 A(0) // B + A
- add (16) acc0.0<1>:w acc0.0<16;16,1>:w BB(0) // B + A + q1
- shr.sat (16) TempRow0B(0)<2> acc0.0<16;16,1>:w 3:w // (B + A + q1) >> 3
-
- // p2' = (2*p3 +3*p2 + A + 4) >> 3 = (2*(p3+p2) + B) >> 3
-// mov (16) acc0.0<1>:w BB(0)
-// mac (16) acc0.0<1>:w P2_plus_P3(0) 2:w
-// shr.sat (16) TempRow3B(0)<2> acc0.0<16;16,1>:w 3:w
-
- mov (16) NewP2 TempRow3B(0) // p2'
- mov (16) NewP1 TempRow1B(0) // p1'
- mov (16) NewP0 TempRow0B(0) // p0'
-
-Y_ELSE3:
- else (16) Y_ENDIF3 // for channels its deltap = false
-
- // p0' = (2*p1 + p0 + q1 + 2) >> 2 = (p1 + P01 + q1 + 2) >> 2
- add (16) acc0.0<1>:w P1 P0_plus_P1(0) // p1 + P01 (TempRow1(0) = P01)
- add (16) acc0.0<1>:w acc0.0<16;16,1>:w Q1
- add (16) acc0.0<1>:w acc0.0<16;16,1>:w 2:w // p1 + P01 + q1 + 2
-
- shr.sat (16) TempRow0B(0)<2> acc0.0<16;16,1>:w 2:w // >> 2
- mov (16) NewP0 TempRow0B(0) // p0'
-
- endif
-Y_ENDIF3:
- // Compute q0', q1' and q2'
- //-----------------------------------------------------------------------------
- // bS = 4 Algorithm (cont):
- //
- // deltaq = (aq<beta) && gama; // deep filter flag
- // if (deltaq) {
- // q0' = ( q2 +2*q1 +2*q0 +2*p0 + p1 + 4) >> 3;
- // q1' = ( q2 + q1 + q0 + p0 + 2) >> 2;
- // q2' = (2*q3 +3*q2 + q1 + q0 + p0 + 4) >> 3;
- // } else {
- // q0' = ( 2*q1 + q0 + p1 + 2) >> 2;
- // }
-
- // deltaq = ((abs)aq < beta) && gama
-// cmp.l.f0.1 (16) null:w (abs)aq(0) beta<0;1,0>:w // (abs)aq < beta ?
-
- // Common Q01 = q0 + q1
-// add (16) Q0_plus_Q1(0)<1> Q0 Q1
-
-// and (1) f0.1:w f0.1:uw CTemp1_W:w {NoMask} // deltaq = ((abs)ap < beta) && gama
-
- (f0.0) if (16) Y_ELSE4 // for channels its deltaq = true
-
- add (16) Q2_plus_Q3(0)<1> Q2 Q3
-
- // A = (q1 + q0) + p0 = Q01 + p0
- add (16) A(0)<1> Q0_plus_Q1(0) p0(0) // A = q1+q0 + p0
-
- // Acc0 = A
-
- // B = q2 + q1 + q0 + p0 + 4 = q2 + A + 4
- add (16) acc0.0<1>:w acc0.0<16;16,1>:w 4:w // q2 + 4
- add (16) BB(0)<1> acc0.0<16;16,1>:w Q2 // B = q2 + A + 4
-
- // Acc0 = B
-
- // q2' = (2*q3 +3*q2 + A + 4) >> 3 = (2*(q3+q2) + B) >> 3
-// mov (16) acc0.0<1>:w BB(0)
- mac (16) acc0.0<1>:w Q2_plus_Q3(0) 2:w
- shr.sat (16) TempRow3B(0)<2> acc0.0<16;16,1>:w 3:w
-
- // q1' = (q2 + A + 2) >> 2 = (B - 2) >> 2
- add (16) acc0.0<1>:w BB(0) -2:w
- shr.sat (16) TempRow1B(0)<2> acc0.0<16;16,1>:w 2:w
-
- // q0' = (q2 +2*A + p1 + 4) >> 3 = (B + A + p1) >> 3
- add (16) acc0.0<1>:w p1(0) A(0)
- add (16) acc0.0<1>:w acc0.0<16;16,1>:w BB(0)
- shr.sat (16) TempRow0B(0)<2> acc0.0<16;16,1>:w 3:w
-
- mov (16) NewQ2 TempRow3B(0) // q2'
- mov (16) NewQ1 TempRow1B(0) // q1'
- mov (16) NewQ0 TempRow0B(0) // q0'
-
-Y_ELSE4:
- else (16) Y_ENDIF4 // for channels its deltaq = false
-
- // q0' = (2*q1 + q0 + p1 + 2) >> 2 = (q1 + Q01 + p1 + 2) >> 2
- // Use original p1 values in p1(0)
- add (16) acc0.0<1>:w p1(0) Q0_plus_Q1(0) // p1 + P01 (TempRow1(0) = P01)
- add (16) acc0.0<1>:w acc0.0<16;16,1>:w Q1
- add (16) acc0.0<1>:w acc0.0<16;16,1>:w 2:w // p1 + P01 + q1 + 2
-
- shr.sat (16) TempRow0B(0)<2> acc0.0<16;16,1>:w 2:w // >> 2
- mov (16) NewQ0 TempRow0B(0) // q0'
-
- endif
-Y_ENDIF4:
-
-
- // Done with bS = 4 algorithm
-
-Y_ELSE2:
- else (16) Y_ENDIF2
- // For channels whose edge control map2 = 0 ---> bS < 4 algorithm
-
- //-----------------------------------------------------------------------------
- // bS < 4 Algorithm :
- // tc = tc0 + (|p2-p0|<Beta ? 1 : 0) + (|q2-q0|<Beta ? 1 : 0)
- // delta = Clip3(-tc, tc, ((((q0-p0)<<2) + (p1-q1) + 4) >> 3))
- // p0' = Clip1(p0 + delta) = Clip3(0, 0xFF, p0 + delta)
- // q0' = Clip1(q0 - delta) = Clip3(0, 0xFF, q0 - delta)
- // if (|p2-p0|<Beta)
- // p1' = p1 + Clip3(-tc0, tc0, (p2 + ((p0+q0+1)>>1) - (p1<<1)) >> 1 )
- // if (|q2-q0|<Beta)
- // q1' = q1 + Clip3(-tc0, tc0, (q2 + ((p0+q0+1)>>1) - (q1<<1)) >> 1 )
- //-----------------------------------------------------------------------------
-
- // Expand tc0
- mov (16) tc_exp(0)<1> tc0<1;4,0>:ub {NoMask}
- mov (16) tc0_exp(0)<1> tc0<1;4,0>:ub {NoMask} // tc0_exp = tc0, each tc0 is duplicated 4 times for 4 adjcent 4 pixels
-
- // tc_exp = tc0_exp + (|p2-p0|<Beta ? 1 : 0) + (|q2-q0|<Beta ? 1 : 0)
-// mov (16) tc_exp(0)<1> tc0_exp(0) // tc = tc0_exp first
-
-
- cmp.l.f0.0 (16) null:w (abs)ap(0) beta:w // |p2-p0|< Beta ? ---> (abs)ap < Beta ?
- cmp.l.f0.1 (16) null:w (abs)aq(0) beta:w // |q2-q0|< Beta ? ---> (abs)aq < Beta ?
-
- //--- Use free cycles here ---
- // delta = Clip3(-tc, tc, ((((q0-p0)<<2) + (p1-q1) + 4) >> 3))
- // 4 * (q0-p0) + p1 - q1 + 4
- add (16) acc0<1>:w P1 4:w // p1 + 4
- mac (16) acc0<1>:w q0_p0(0) 4:w // 4 * (q0-p0) + p1 + 4
- add (16) acc0<1>:w acc0<16;16,1>:w -Q1 // 4 * (q0-p0) + p1 - q1 + 4
- shr (16) TempRow0(0)<1> acc0<16;16,1>:w 3:w
-
- // Continue on getting tc_exp
- (f0.0) add (16) tc_exp(0)<1> tc_exp(0) 1:w // tc0_exp + (|p2-p0|<Beta ? 1 : 0)
- mov (2) CTemp1_W<1>:w f0.0<2;2,1>:w {NoMask} // Save |p2-p0|<Beta flag
- (f0.1) add (16) tc_exp(0)<1> tc_exp(0) 1:w // tc_exp = tc0_exp + (|p2-p0|<Beta ? 1 : 0) + (|q2-q0|<Beta ? 1 : 0)
-
-
- // Continue on cliping tc to get delta
- cmp.g.f0.0 (16) null:w TempRow0(0) tc_exp(0) // Clip if delta' > tc
- cmp.l.f0.1 (16) null:w TempRow0(0) -tc_exp(0) // Clip if delta' < -tc
-
- //--- Use free cycles here ---
- // common = (p0+q0+1) >> 1 ---> TempRow2(0)
- // Same as avg of p0 and q0
- avg (16) TempRow2(0)<1> P0 Q0
-
- // Continue on cliping tc to get delta
- (f0.0) mov (16) TempRow0(0)<1> tc_exp(0)
- (f0.1) mov (16) TempRow0(0)<1> -tc_exp(0)
-
- //--- Use free cycles here ---
- mov (2) f0.0<1>:w CTemp1_W<2;2,1>:w {NoMask} // CTemp1_W = (|p2-p0|<Beta)
- // CTemp2_W = (|q2-q0|<Beta)
- //-----------------------------------------------------------------------
-
- // p0' = Clip1(p0 + delta) = Clip3(0, 0xFF, p0 + delta)
- // q0' = Clip1(q0 - delta) = Clip3(0, 0xFF, q0 - delta)
- add.sat (16) TempRow1B(0)<2> P0 TempRow0(0) // p0+delta
- add.sat (16) TempRow0B(0)<2> Q0 -TempRow0(0) // q0-delta
- mov (16) NewP0 TempRow1B(0) // p0'
- mov (16) NewQ0 TempRow0B(0) // q0'
- //-----------------------------------------------------------------------
-
- // Now compute p1' and q1'
-
- // if (|p2-p0|<Beta)
-// mov (1) f0.0:w CTemp1_W:w {NoMask} // CTemp1_W = (|p2-p0|<Beta)
- (f0.0) if (16) Y_ENDIF6
-
- // p1' = p1 + Clip3(-tc0, tc0, adj)
- // adj = (p2 + common - (p1<<1)) >> 1 = (p2 + common - (p1*2)) >> 1
- add (16) acc0<1>:w P2 TempRow2(0) // TempRow2(0) = common = (p0+q0+1) >> 1
- mac (16) acc0<1>:w P1 -2:w
- shr (16) TempRow1(0)<1> acc0<16;16,1>:w 1:w
-
- // tc clip to get tc_adj
- cmp.g.f0.0 (16) null:w TempRow1(0) tc0_exp(0) // Clip if delta' > tc
- cmp.l.f0.1 (16) null:w TempRow1(0) -tc0_exp(0) // Clip if delta' < -tc
-
- (f0.0) mov (16) TempRow1(0)<1> tc0_exp(0)
- (f0.1) mov (16) TempRow1(0)<1> -tc0_exp(0)
-
- //--- Use free cycles here ---
- mov (1) f0.1:w CTemp2_W:w {NoMask} // CTemp2_W = (|q2-q0|<Beta)
-
- // p1' = p1 + tc_adj
- add.sat (16) TempRow1B(0)<2> P1 TempRow1(0) // p1+tc_adj
- mov (16) NewP1 TempRow1B(0) // p1'
-
- //------------------------------------------------------------------------
-Y_ENDIF6:
- endif
-
- // if (|q2-q0|<Beta)
-// mov (1) f0.1:w CTemp2_W:w {NoMask} // CTemp2_W = (|q2-q0|<Beta)
- (f0.1) if (16) Y_ENDIF7
-
- // q1' = q1 + Clip3(-tc0, tc0, adj)
- // adj = (q2 + common - (q1<<1)) >> 1
- // same as q2 + common - (q1 * 2)
- add (16) acc0<1>:w Q2 TempRow2(0)
- mac (16) acc0<1>:w Q1 -2:w
- shr (16) TempRow1(0)<1> acc0<16;16,1>:w 1:w
-
- // tc clip to get tc_adj
- cmp.g.f0.0 (16) null:w TempRow1(0) tc0_exp(0) // Clip if delta' > tc
- cmp.l.f0.1 (16) null:w TempRow1(0) -tc0_exp(0) // Clip if delta' < -tc
-
- (f0.0) mov (16) TempRow1(0)<1> tc0_exp(0)
- (f0.1) mov (16) TempRow1(0)<1> -tc0_exp(0)
-
- // q1' = q1 + tc_adj
- add.sat (16) TempRow1B(0)<2> Q1 TempRow1(0) // q1+tc_adj
- mov (16) NewQ1 TempRow1B(0) // q1'
-
- //------------------------------------------------------------------------
-Y_ENDIF7:
- endif
-
- endif
-Y_ENDIF2:
-Y_ENDIF1:
- endif
-
-RETURN
-
-#endif // !defined(__AVC_ILDB_LUMA_CORE__)
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Luma_Core_Mbaff.asm b/src/shaders/h264/ildb/AVC_ILDB_Luma_Core_Mbaff.asm
deleted file mode 100644
index 8ec4152..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Luma_Core_Mbaff.asm
+++ /dev/null
@@ -1,421 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__AVC_ILDB_LUMA_CORE_MBAFF__) // Make sure this file is only included once
-#define __AVC_ILDB_LUMA_CORE_MBAFF__
-
-////////// AVC ILDB Luma Core Mbaff /////////////////////////////////////////////////////////////////////////////////
-//
-// This core performs AVC LUMA ILDB filtering on one horizontal edge (16 pixels) of a MB.
-// If data is transposed, it can also de-block a vertical edge.
-//
-// Bafore calling this subroutine, caller needs to set the following parameters.
-//
-// - EdgeCntlMap1 // Edge control map A
-// - EdgeCntlMap2 // Edge control map B
-// - P_AddrReg // Src and dest address register for P pixels
-// - Q_AddrReg // Src and dest address register for Q pixels
-// - alpha // alpha corresponding to the edge to be filtered
-// - beta // beta corresponding to the edge to be filtered
-// - tc0 // tc0 corresponding to the edge to be filtered
-//
-//
-// +----+----+----+----+----+----+----+----+
-// | p3 | p2 | P1 | p0 | q0 | q1 | q2 | q3 |
-// +----+----+----+----+----+----+----+----+
-//
-// p3 = r[P_AddrReg, 0]<16;16,1>
-// p2 = r[P_AddrReg, 16]<16;16,1>
-// p1 = r[P_AddrReg, 32]<16;16,1>
-// p0 = r[P_AddrReg, 48]<16;16,1>
-// q0 = r[Q_AddrReg, 0]<16;16,1>
-// q1 = r[Q_AddrReg, 16]<16;16,1>
-// q2 = r[Q_AddrReg, 32]<16;16,1>
-// q3 = r[Q_AddrReg, 48]<16;16,1>
-//
-/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// The region is both src and dest
-// P0-P3 and Q0-Q3 should be only used if they have not been modified to new values
-#undef P3
-#undef P2
-#undef P1
-#undef P0
-#undef Q0
-#undef Q1
-#undef Q2
-#undef Q3
-
-#define P3 r[P_AddrReg, 0]<16;16,1>:ub
-#define P2 r[P_AddrReg, 16]<16;16,1>:ub
-#define P1 r[P_AddrReg, 32]<16;16,1>:ub
-#define P0 r[P_AddrReg, 48]<16;16,1>:ub
-#define Q0 r[Q_AddrReg, 0]<16;16,1>:ub
-#define Q1 r[Q_AddrReg, 16]<16;16,1>:ub
-#define Q2 r[Q_AddrReg, 32]<16;16,1>:ub
-#define Q3 r[Q_AddrReg, 48]<16;16,1>:ub
-
-// New region as dest
-#undef NewP2
-#undef NewP1
-#undef NewP0
-#undef NewQ0
-#undef NewQ1
-#undef NewQ2
-
-#define NewP2 r[P_AddrReg, 16]<1>:ub
-#define NewP1 r[P_AddrReg, 32]<1>:ub
-#define NewP0 r[P_AddrReg, 48]<1>:ub
-#define NewQ0 r[Q_AddrReg, 0]<1>:ub
-#define NewQ1 r[Q_AddrReg, 16]<1>:ub
-#define NewQ2 r[Q_AddrReg, 32]<1>:ub
-
-
-
-// Filter one luma edge - mbaff
-FILTER_Y_MBAFF:
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0x1111:w
-#endif
- //---------- Derive filterSampleflag in AVC spec, equition (8-469) ----------
- // bS is in MaskA
-
- // Src copy of the p3, p2, p1, p0, q0, q1, q2, q3
-// mov (16) p0123_W(0)<1> r[P_AddrReg]<16;16,1>:uw
-// mov (16) p0123_W(1)<1> r[P_AddrReg, 32]<16;16,1>:uw
-// mov (16) q0123_W(0)<1> r[Q_AddrReg]<16;16,1>:uw
-// mov (16) q0123_W(1)<1> r[Q_AddrReg, 32]<16;16,1>:uw
-
- // Move MaskA and MaskB to flag regs
- mov (2) f0.0<1>:uw MaskA<2;2,1>:uw
-
- add (16) q0_p0(0)<1> Q0 -P0 // q0-p0
- add (16) TempRow0(0)<1> P1 -P0 // p1-p0
- add (16) TempRow1(0)<1> Q1 -Q0 // q1-q0
-
- // abs(q0-p0) < alpha
- (f0.0) cmp.l.f0.0 (16) null:w (abs)q0_p0(0) Mbaff_ALPHA(0)
- // abs(p1-p0) < Beta
- (f0.0) cmp.l.f0.0 (16) null:w (abs)TempRow0(0) Mbaff_BETA(0)
- // abs(q1-q0) < Beta
- (f0.0) cmp.l.f0.0 (16) null:w (abs)TempRow1(0) Mbaff_BETA(0)
-
- //-----------------------------------------------------------------------------------------
-
- (f0.0) if (16) MBAFF_Y_ENDIF1
- // For channels whose edge control map1 = 1 ---> perform de-blocking
-
-// mov (1) f0.1:uw MaskB:uw {NoMask} // Now check for which algorithm to apply
-
- // (abs)ap = |p2-p0|
- add (16) ap(0)<1> P2 -P0
-
- // (abs)aq = |q2-q0|
- add (16) aq(0)<1> Q2 -Q0
-
- // Make a copy of unmodified p0 and p1 for use in q0'and q1' calculation
- mov (16) p0123_W(1)<1> r[P_AddrReg, 32]<16;16,1>:uw {NoMask}
-
- (f0.1) if (16) MBAFF_Y_ELSE2
-
- // For channels whose edge control map2 = 1 ---> bS = 4 algorithm
-
- // Compute q0', q1' and q2'
- //-----------------------------------------------------------------------------
- // bS = 4 Algorithm :
- //
- // gama = |p0-q0| < ((alpha >> 2) + 2)
- // deltap = (ap<beta) && gama; // deep filter flag
- // if (deltap) {
- // p0' = ( p2 +2*p1 +2*p0 +2*q0 + q1 + 4) >> 3;
- // p1' = ( p2 + p1 + p0 + q0 + 2) >> 2;
- // p2' = (2*p3 +3*p2 + p1 + p0 + q0 + 4) >> 3;
- // } else {
- // p0' = ( 2*p1 + p0 + q1 + 2) >> 2;
- // }
- //-----------------------------------------------------------------------------
-
- // gama = |p0-q0| < ((alpha >> 2) + 2) = |p0-q0| < alpha2
- cmp.l.f0.1 (16) null:w (abs)q0_p0(0) Mbaff_ALPHA2(0)
-
- // Common P01 = p0 + p1
- add (16) P0_plus_P1(0)<1> P0 P1
-
- // Common Q01 = q0 + q1
- add (16) Q0_plus_Q1(0)<1> Q0 Q1
-
- mov (1) f0.0:uw f0.1:uw {NoMask}
-
- // deltap = ((abs)ap < beta) && gama
- (f0.1) cmp.l.f0.1 (16) null:w (abs)ap(0) Mbaff_BETA(0) // (abs)ap < beta ?
-
- // deltaq = ((abs)aq < beta) && gama
- (f0.0) cmp.l.f0.0 (16) null:w (abs)aq(0) Mbaff_BETA(0) // (abs)aq < beta ?
-
-
- (f0.1) if (16) MBAFF_Y_ELSE3 // for channels its deltap = true
-
- add (16) P2_plus_P3(0)<1> P2 P3
-
- // A = p1 + p0 + q0 = P01 + q0
- add (16) A(0)<1> P0_plus_P1(0) Q0 // A = P01 + q0
-
- // Now acc0 = A
-
- // B = p2 + p1 + p0 + q0 + 4 = p2 + A + 4
- add (16) acc0.0<1>:w acc0.0<16;16,1>:w 4:w // p2 + 4
- add (16) BB(0)<1> acc0.0<16;16,1>:w P2 // B = p2 + A + 4
-
- // Now acc0 = B
-
- // p2' = (2*p3 +3*p2 + A + 4) >> 3 = (2*(p3+p2) + B) >> 3
- mac (16) acc0.0<1>:w P2_plus_P3(0) 2:w
- shr.sat (16) TempRow3B(0)<2> acc0.0<16;16,1>:w 3:w
-
- // p1' = (p2 + A + 2) >> 2 = (B - 2) >> 2
- add (16) acc0.0<1>:w BB(0) -2:w
- shr.sat (16) TempRow1B(0)<2> acc0.0<16;16,1>:w 2:w
-
- // p0' = (p2 +2*A + q1 + 4) >> 3 = (B + A + q1) >> 3
- add (16) acc0.0<1>:w Q1 A(0) // B + A
- add (16) acc0.0<1>:w acc0.0<16;16,1>:w BB(0) // B + A + q1
- shr.sat (16) TempRow0B(0)<2> acc0.0<16;16,1>:w 3:w // (B + A + q1) >> 3
-
- mov (16) NewP2 TempRow3B(0) // p2'
- mov (16) NewP1 TempRow1B(0) // p1'
- mov (16) NewP0 TempRow0B(0) // p0'
-
-MBAFF_Y_ELSE3:
- else (16) MBAFF_Y_ENDIF3 // for channels its deltap = false
-
- // p0' = (2*p1 + p0 + q1 + 2) >> 2 = (p1 + P01 + q1 + 2) >> 2
- add (16) acc0.0<1>:w P1 P0_plus_P1(0) // p1 + P01 (TempRow1(0) = P01)
- add (16) acc0.0<1>:w acc0.0<16;16,1>:w Q1
- add (16) acc0.0<1>:w acc0.0<16;16,1>:w 2:w // p1 + P01 + q1 + 2
-
- shr.sat (16) TempRow0B(0)<2> acc0.0<16;16,1>:w 2:w // >> 2
- mov (16) NewP0 TempRow0B(0) // p0'
-
- endif
-
-MBAFF_Y_ENDIF3:
- // Compute q0', q1' and q2'
- //-----------------------------------------------------------------------------
- // bS = 4 Algorithm (cont):
- //
- // deltaq = (aq<beta) && gama; // deep filter flag
- // if (deltaq) {
- // q0' = ( q2 +2*q1 +2*q0 +2*p0 + p1 + 4) >> 3;
- // q1' = ( q2 + q1 + q0 + p0 + 2) >> 2;
- // q2' = (2*q3 +3*q2 + q1 + q0 + p0 + 4) >> 3;
- // } else {
- // q0' = ( 2*q1 + q0 + p1 + 2) >> 2;
- // }
-
- (f0.0) if (16) MBAFF_Y_ELSE4 // for channels its deltaq = true
-
- add (16) Q2_plus_Q3(0)<1> Q2 Q3
-
- // A = q1 + q0 + p0 = Q01 + p0
- add (16) A(0)<1> Q0_plus_Q1(0) p0(0) // A = q1+q0 + p0
-
- // B = q2 + q1 + q0 + p0 + 4 = q2 + A + 4
- add (16) acc0.0<1>:w acc0.0<16;16,1>:w 4:w // q2 + 4
- add (16) BB(0)<1> acc0.0<16;16,1>:w Q2 // B = q2 + A + 4
-
- // Acc0 = B
-
- // q2' = (2*q3 +3*q2 + A + 4) >> 3 = (2*(q3+q2) + B) >> 3
- mac (16) acc0.0<1>:w Q2_plus_Q3(0) 2:w
- shr.sat (16) TempRow3B(0)<2> acc0.0<16;16,1>:w 3:w
-
- // q1' = (q2 + A + 2) >> 2 = (B - 2) >> 2
- add (16) acc0.0<1>:w BB(0) -2:w
- shr.sat (16) TempRow1B(0)<2> acc0.0<16;16,1>:w 2:w
-
- // q0' = (q2 +2*A + p1 + 4) >> 3 = (B + A + p1) >> 3
- add (16) acc0.0<1>:w p1(0) A(0)
- add (16) acc0.0<1>:w acc0.0<16;16,1>:w BB(0)
- shr.sat (16) TempRow0B(0)<2> acc0.0<16;16,1>:w 3:w
-
- mov (16) NewQ2 TempRow3B(0) // q2'
- mov (16) NewQ1 TempRow1B(0) // q1'
- mov (16) NewQ0 TempRow0B(0) // q0'
-
-MBAFF_Y_ELSE4:
- else (16) MBAFF_Y_ENDIF4 // for channels its deltaq = false
-
- // q0' = (2*q1 + q0 + p1 + 2) >> 2 = (q1 + Q01 + p1 + 2) >> 2
- // Use original p1 values in p1(0)
- add (16) acc0.0<1>:w p1(0) Q0_plus_Q1(0) // p1 + P01 (TempRow1(0) = P01)
- add (16) acc0.0<1>:w acc0.0<16;16,1>:w Q1
- add (16) acc0.0<1>:w acc0.0<16;16,1>:w 2:w // p1 + P01 + q1 + 2
-
- shr.sat (16) TempRow0B(0)<2> acc0.0<16;16,1>:w 2:w // >> 2
- mov (16) NewQ0 TempRow0B(0) // q0'
-
- endif
-MBAFF_Y_ENDIF4:
-
-
- // Done with bS = 4 algorithm
-
-MBAFF_Y_ELSE2:
- else (16) MBAFF_Y_ENDIF2
- // For channels whose edge control map2 = 0 ---> bS < 4 algorithm
-
- //-----------------------------------------------------------------------------
- // bS < 4 Algorithm :
- // tc = tc0 + (|p2-p0|<Beta ? 1 : 0) + (|q2-q0|<Beta ? 1 : 0)
- // delta = Clip3(-tc, tc, ((((q0-p0)<<2) + (p1-q1) + 4) >> 3))
- // p0' = Clip1(p0 + delta) = Clip3(0, 0xFF, p0 + delta)
- // q0' = Clip1(q0 - delta) = Clip3(0, 0xFF, q0 - delta)
- // if (|p2-p0|<Beta)
- // p1' = p1 + Clip3(-tc0, tc0, (p2 + ((p0+q0+1)>>1) - (p1<<1)) >> 1 )
- // if (|q2-q0|<Beta)
- // q1' = q1 + Clip3(-tc0, tc0, (q2 + ((p0+q0+1)>>1) - (q1<<1)) >> 1 )
- //-----------------------------------------------------------------------------
-
- mov (16) tc_exp(0)<1> Mbaff_TC0(0) // tc = tc0_exp first
-
- cmp.l.f0.0 (16) null:w (abs)ap(0) Mbaff_BETA(0) // |p2-p0|<Beta ?
- cmp.l.f0.1 (16) null:w (abs)aq(0) Mbaff_BETA(0) // |q2-q0|<Beta ?
-
- //--- Use free cycles here ---
- // delta = Clip3(-tc, tc, ((((q0-p0)<<2) + (p1-q1) + 4) >> 3))
- // 4 * (q0-p0) + p1 - q1 + 4
- add (16) acc0<1>:w P1 4:w // p1 + 4
- mac (16) acc0<1>:w q0_p0(0) 4:w // 4 * (q0-p0) + p1 + 4
- add (16) acc0<1>:w acc0<16;16,1>:w -Q1 // 4 * (q0-p0) + p1 - q1 + 4
- shr (16) TempRow0(0)<1> acc0<16;16,1>:w 3:w
-
- // Continue on getting tc_exp
- (f0.0) add (16) tc_exp(0)<1> tc_exp(0) 1:w // tc0_exp + (|p2-p0|<Beta ? 1 : 0)
- mov (2) CTemp1_W<1>:w f0.0<2;2,1>:w {NoMask} // Save |p2-p0|<Beta flag
- (f0.1) add (16) tc_exp(0)<1> tc_exp(0) 1:w // tc_exp = tc0_exp + (|p2-p0|<Beta ? 1 : 0) + (|q2-q0|<Beta ? 1 : 0)
-
- // Continue on cliping tc to get delta
- cmp.g.f0.0 (16) null:w TempRow0(0) tc_exp(0) // Clip if delta' > tc
- cmp.l.f0.1 (16) null:w TempRow0(0) -tc_exp(0) // Clip if delta' < -tc
-
- //--- Use free cycles here ---
- // common = (p0+q0+1) >> 1 ---> TempRow2(0)
- // Same as avg of p0 and q0
- avg (16) TempRow2(0)<1> P0 Q0
-
- // Continue on cliping tc to get delta
- (f0.0) mov (16) TempRow0(0)<1> tc_exp(0)
- (f0.1) mov (16) TempRow0(0)<1> -tc_exp(0)
-
- //--- Use free cycles here ---
- mov (2) f0.0<1>:w CTemp1_W<2;2,1>:w {NoMask} // CTemp1_W = (|p2-p0|<Beta)
- // CTemp2_W = (|q2-q0|<Beta)
-
- // p0' = Clip1(p0 + delta) = Clip3(0, 0xFF, p0 + delta)
- // q0' = Clip1(q0 - delta) = Clip3(0, 0xFF, q0 - delta)
- add.sat (16) TempRow1B(0)<2> P0 TempRow0(0) // p0+delta
- add.sat (16) TempRow0B(0)<2> Q0 -TempRow0(0) // q0-delta
-
- mov (16) NewP0 TempRow1B(0) // p0'
- mov (16) NewQ0 TempRow0B(0) // q0'
-
- //-----------------------------------------------------------------------
-
- // Now compute p1' and q1'
-
- // if (|p2-p0|<Beta)
- (f0.0) if (16) MBAFF_Y_ENDIF6
-
- // p1' = p1 + Clip3(-tc0, tc0, adj)
- // adj = (p2 + common - (p1<<1)) >> 1 = (p2 + common - (p1*2)) >> 1
- add (16) acc0<1>:w P2 TempRow2(0) // TempRow2(0) = common = (p0+q0+1) >> 1
- mac (16) acc0<1>:w P1 -2:w
- shr (16) TempRow1(0)<1> acc0<16;16,1>:w 1:w
-
- // tc clip to get tc_adj
- cmp.g.f0.0 (16) null:w TempRow1(0) Mbaff_TC0(0) // Clip if delta' > tc
- cmp.l.f0.1 (16) null:w TempRow1(0) -Mbaff_TC0(0) // Clip if delta' < -tc
-
- (f0.0) mov (16) TempRow1(0)<1> Mbaff_TC0(0)
- (f0.1) mov (16) TempRow1(0)<1> -Mbaff_TC0(0)
-
- //--- Use free cycles here ---
- mov (1) f0.1:w CTemp2_W:w {NoMask} // CTemp2_W = (|q2-q0|<Beta)
-
- // p1' = p1 + tc_adj
- add.sat (16) TempRow1B(0)<2> P1 TempRow1(0) // p1+tc_adj
- mov (16) NewP1 TempRow1B(0) // p1'
- //------------------------------------------------------------------------
-
-MBAFF_Y_ENDIF6:
- endif
-
- // if (|q2-q0|<Beta)
- (f0.1) if (16) MBAFF_Y_ENDIF7
-
- // q1' = q1 + Clip3(-tc0, tc0, adj)
- // adj = (q2 + common - (q1<<1)) >> 1
- // same as q2 + common - (q1 * 2)
- add (16) acc0<1>:w Q2 TempRow2(0)
- mac (16) acc0<1>:w Q1 -2:w
- shr (16) TempRow1(0)<1> acc0<16;16,1>:w 1:w
-
- // tc clip to get tc_adj
- cmp.g.f0.0 (16) null:w TempRow1(0) Mbaff_TC0(0) // Clip if delta' > tc
- cmp.l.f0.1 (16) null:w TempRow1(0) -Mbaff_TC0(0) // Clip if delta' < -tc
-
- (f0.0) mov (16) TempRow1(0)<1> Mbaff_TC0(0)
- (f0.1) mov (16) TempRow1(0)<1> -Mbaff_TC0(0)
-
- // q1' = q1 + tc_adj
- add.sat (16) TempRow1B(0)<2> Q1 TempRow1(0) // q1+tc_adj
- mov (16) NewQ1 TempRow1B(0) // q1'
-
- //------------------------------------------------------------------------
-MBAFF_Y_ENDIF7:
- endif
-
- endif
-MBAFF_Y_ENDIF2:
-MBAFF_Y_ENDIF1:
- endif
-
-RETURN
-
-#endif // !defined(__AVC_ILDB_LUMA_CORE_MBAFF__)
diff --git a/src/shaders/h264/ildb/AVC_ILDB_OpenGateway.asm b/src/shaders/h264/ildb/AVC_ILDB_OpenGateway.asm
deleted file mode 100644
index 446ca1d..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_OpenGateway.asm
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-//----- Open a Message Gateway -----
-// The parent thread is the recipient thread
-
-#if defined(_DEBUG)
- mov (1) EntrySignature:w 0x1111:w
-#endif
-
-mov (8) GatewayPayload<1>:ud r0.0<8;8,1>:ud // Init payload to r0
-
-// r50- (16 GRFs) are the GRFs child thread can wtite to.
-
-// Reg base is at bit 28:21, Gateway size is at [bit 10:8]
-// r6: 6 = 00000110
-//000 00000110 0000000000 100 00000000 ==> 0000 0000 1100 0000 0000 0100 0000 0000
-mov (1) RegBase_GatewaySize:ud 0x00C00400:ud // Reg base + Gateway size (16 GRFs)
-
-
-//000 00110010 0000000000 100 00000000 ==> 0000 0110 0100 0000 0000 0100 0000 0000
-//mov (1) RegBase_GatewaySize:ud 0x06400400:ud // Reg base (r50 = 0x640 byte offset) + Gateway size (16 GRFs)
-
-//mov (1) DispatchID:ub r0.20:ub // Dispatch ID
-mov (1) GatewayPayloadKey:uw 0x1212:uw // Key=0x1212
-
-// Message descriptor
-// bit 31 EOD
-// 27:24 FFID = 0x0011 for msg gateway
-// 23:20 msg length = 1 MRF
-// 19:16 Response length = 0
-// 14 AckReg = 1
-// 1:0 SubFuncID = 00 for OpenGateway
-// Message descriptor: 0 000 0011 0001 0000 + 0 1 000000000000 00 ==> 0000 0011 0001 0000 0100 0000 0000 0000
-// Send message to gateway: the ack message is put into response GRF r49 ==> Good for debugging
-send (8) GatewayResponse:ud m7 GatewayPayload<8;8,1>:ud MSG_GW OGWMSGDSC
-
-//----- End of Open a Message Gateway -----
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Root_Field_UV.asm b/src/shaders/h264/ildb/AVC_ILDB_Root_Field_UV.asm
deleted file mode 100644
index 7b492a8..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Root_Field_UV.asm
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "AVC_ILDB_Root_UV.asm"
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Root_Field_Y.asm b/src/shaders/h264/ildb/AVC_ILDB_Root_Field_Y.asm
deleted file mode 100644
index ed3dd9a..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Root_Field_Y.asm
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#include "AVC_ILDB_Root_Y.asm"
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Root_Mbaff_UV.asm b/src/shaders/h264/ildb/AVC_ILDB_Root_Mbaff_UV.asm
deleted file mode 100644
index 9c6b3d0..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Root_Mbaff_UV.asm
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-/////////////////////////////////////////////////////////////////////////////////////
-// Kernel name: AVC_ILDB_Root_Mbaff.asm
-//
-// Root kernel serves as a scheduler for child threads.
-//
-//
-// ***** Note *****
-// Initial design bundle MB pair for each thread, and share AVC_ILDB_MB_Dep_Check.asm
-// with non mbaff kernels.
-//
-// Optimization will be done later, putting top and bottom MBs on separate threads.
-//
-//
-/////////////////////////////////////////////////////////////////////////////////////
-//
-// $Revision: 1 $
-// $Date: 10/19/06 5:06p $
-//
-
-// ----------------------------------------------------
-// AVC_ILDB_ROOT_MBAFF_UV
-// ----------------------------------------------------
-#define AVC_ILDB
-
-.kernel AVC_ILDB_ROOT_MBAFF_UV
-#if defined(COMBINED_KERNEL)
-ILDB_LABEL(AVC_ILDB_ROOT_UV):
-#endif
-
-#include "SetupVPKernel.asm"
-#include "AVC_ILDB.inc"
-
-
-#if defined(_DEBUG)
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Init URB space for running on RTL. It satisfies reading an unwritten URB entries.
-// Will remove it for production release.
-
-
-//mov (8) m1:ud 0x11111111:ud
-//mov (8) m2:ud 0x22222222:ud
-//mov (8) m3:ud 0x33333333:ud
-//mov (8) m4:ud 0x44444444:ud
-
-//mov (1) Temp1_W:w 0:w
-
-//ILDB_INIT_URB:
-//mul (1) URBOffset:w Temp1_W:w 4:w
-//shl (1) URBWriteMsgDescLow:uw URBOffset:w 4:w // Msg descriptor: URB write dest offset (9:4)
-//mov (1) URBWriteMsgDescHigh:uw 0x0650:uw // Msg descriptor: URB write 5 MRFs (m0 - m4)
-//#include "writeURB.asm"
-
-//add (1) Temp1_W:w Temp1_W:w 1:w // Increase block count
-//cmp.l.f0.0 (1) null Temp1_W:w MBsCntY:w // Check the block count limit
-//(f0.0) jmpi ILDB_INIT_URB // Loop back
-
-
-/////////////////////////////////////////////////////////////////////////////////////
-
-
-mov (1) EntrySignature:w 0xEFF0:w
-
-#endif
-//----------------------------------------------------------------------------------------------------------------
-
-// Set global variable
-mov (32) ChildParam:uw 0:uw // Reset local variables
-//mul (1) TotalBlocks:w MBsCntX:w MBsCntY:w // Total # of MB pairs
-//add (1) GatewayApertureE:w MBsCntY:w GatewayApertureB:w // Aperture End = aperture Head + BlockCntY
-
-
-// 2 URB entries for Y:
-// Entry 0 - Child thread R0Hdr
-// Entry 1 - input parameter to child kernel (child r1)
-
-#define URB_ENTRIES_PER_MB 2
-
-// URB_ENTRIES_PER_MB in differnt form, the final desired format is (URB_ENTRIES_PER_MB-1) << 10
-mov (1) URB_EntriesPerMB_2:w URB_ENTRIES_PER_MB-1:w
-shl (1) URB_EntriesPerMB_2:w URB_EntriesPerMB_2:w 10:w
-
-#define CHROMA_ROOT // Compiling flag for chroma only
-//mul (1) URBOffsetUVBase:w MBsCntY:w URB_ENTRIES_PER_MB:w // Right after Y entries
-
-// URB base for UV kernels
-#if defined(DEV_CL)
- mov (1) URBOffsetUVBase:w 240:w
-#else
- mov (1) URBOffsetUVBase:w 320:w
-#endif
-
-
-mov (1) ChildThreadsID:uw 3:uw
-
-shr (1) ThreadLimit:w MaxThreads:w 1:w // Initial luma thread limit to 50%
-mul (1) TotalBlocks:w MBsCntX:w MBsCntY:w // MBs to be processed count down from TotalBlocks
-
-//***** Init CT_R0Hdr fields that are common to all threads *************************
-mov (8) CT_R0Hdr.0:ud r0.0<8;8,1>:ud // Init to root R0 header
-mov (1) CT_R0Hdr.7:ud r0.6:ud // Copy Parent Thread Cnt; JJ did the change on 06/20/2006
-mov (1) CT_R0Hdr.31:ub 0:w // Reset the highest byte
-mov (1) CT_R0Hdr.3:ud 0x00000000
-mov (1) CT_R0Hdr.6:uw sr0.0:uw // sr0.0: state reg contains general thread states, e.g. EUID/TID.
-
-//***** Init ChildParam fields that are common to all threads ***********************
-mov (8) ChildParam<1>:ud RootParam<8;8,1>:ud // Copy all root parameters
-mov (4) CurCol<1>:w 0:w // Reset CurCol, CurRow
-add (2) LastCol<1>:w MBsCntX<2;2,1>:w -1:w // Get LastCol and LastRow
-
-mov (1) URBWriteMsgDesc:ud MSG_LEN(2)+URBWMSGDSC:ud
-
-//===================================================================================
-
-#include "AVC_ILDB_OpenGateway.asm" // Open root thread gateway for receiving notification
-
-#include "AVC_ILDB_Dep_Check.asm" // Check dependency and spawn all MBs
-
-//#include "AVC_ILDB_UpdateThrdLimit.asm" // Update thread limit in luma root thread via gateway
-
-#include "AVC_ILDB_CloseGateway.asm" // Close root thread gateway
-
-// Chroma root EOT = child send EOT : Request type = 1
- END_CHILD_THREAD
-
-#undef CHROMA_ROOT
-
-#if !defined(COMBINED_KERNEL) // For standalone kernel only
-.end_code
-
-.end_kernel
-#endif
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Root_Mbaff_Y.asm b/src/shaders/h264/ildb/AVC_ILDB_Root_Mbaff_Y.asm
deleted file mode 100644
index 938fc97..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Root_Mbaff_Y.asm
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-/////////////////////////////////////////////////////////////////////////////////////
-// Kernel name: AVC_ILDB_Root_Mbaff.asm
-//
-// Root kernel serves as a scheduler for child threads.
-//
-//
-// ***** Note *****
-// Initial design bundle MB pair for each thread, and share AVC_ILDB_MB_Dep_Check.asm
-// with non mbaff kernels.
-//
-// Optimization will be done later, putting top and bottom MBs on separate threads.
-//
-//
-/////////////////////////////////////////////////////////////////////////////////////
-//
-// $Revision: 1 $
-// $Date: 10/19/06 5:06p $
-//
-
-// ----------------------------------------------------
-// AVC_ILDB_ROOT_MBAFF_Y
-// ----------------------------------------------------
-#define AVC_ILDB
-
-.kernel AVC_ILDB_ROOT_MBAFF_Y
-#if defined(COMBINED_KERNEL)
-ILDB_LABEL(AVC_ILDB_ROOT_Y):
-#endif
-
-#include "SetupVPKernel.asm"
-#include "AVC_ILDB.inc"
-
-
-#if defined(_DEBUG)
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Init URB space for running on RTL. It satisfies reading an unwritten URB entries.
-// Will remove it for production release.
-
-
-//mov (8) m1:ud 0x11111111:ud
-//mov (8) m2:ud 0x22222222:ud
-//mov (8) m3:ud 0x33333333:ud
-//mov (8) m4:ud 0x44444444:ud
-
-//mov (1) Temp1_W:w 0:w
-
-//ILDB_INIT_URB:
-//mul (1) URBOffset:w Temp1_W:w 4:w
-//shl (1) URBWriteMsgDescLow:uw URBOffset:w 4:w // Msg descriptor: URB write dest offset (9:4)
-//mov (1) URBWriteMsgDescHigh:uw 0x0650:uw // Msg descriptor: URB write 5 MRFs (m0 - m4)
-//#include "writeURB.asm"
-
-//add (1) Temp1_W:w Temp1_W:w 1:w // Increase block count
-//cmp.l.f0.0 (1) null Temp1_W:w MBsCntY:w // Check the block count limit
-//(f0.0) jmpi ILDB_INIT_URB // Loop back
-
-/////////////////////////////////////////////////////////////////////////////////////
-
-
-mov (1) EntrySignature:w 0xEFF0:w
-
-#endif
-//----------------------------------------------------------------------------------------------------------------
-
-// Set global variable
-mov (32) ChildParam:uw 0:uw // Reset local variables
-//mul (1) TotalBlocks:w MBsCntX:w MBsCntY:w // Total # of MB pairs
-//add (1) GatewayApertureE:w MBsCntY:w GatewayApertureB:w // Aperture End = aperture Head + BlockCntY
-
-
-// 2 URB entries for Y:
-// Entry 0 - Child thread R0Hdr
-// Entry 1 - input parameter to child kernel (child r1)
-
-#undef URB_ENTRIES_PER_MB
-#define URB_ENTRIES_PER_MB 2
-
-// URB_ENTRIES_PER_MB in differnt form, the final desired format is (URB_ENTRIES_PER_MB-1) << 10
-mov (1) URB_EntriesPerMB_2:w URB_ENTRIES_PER_MB-1:w
-shl (1) URB_EntriesPerMB_2:w URB_EntriesPerMB_2:w 10:w
-
-mov (1) ChildThreadsID:uw 1:uw // ChildThreadsID for chroma root
-
-shr (1) ThreadLimit:w MaxThreads:w 1:w // Initial luma thread limit to 50%
-mul (1) TotalBlocks:w MBsCntX:w MBsCntY:w // MBs to be processed count down from TotalBlocks
-
-//***** Init CT_R0Hdr fields that are common to all threads *************************
-mov (8) CT_R0Hdr.0:ud r0.0<8;8,1>:ud // Init to root R0 header
-mov (1) CT_R0Hdr.7:ud r0.6:ud // Copy Parent Thread Cnt; JJ did the change on 06/20/2006
-mov (1) CT_R0Hdr.31:ub 0:w // Reset the highest byte
-mov (1) CT_R0Hdr.3:ud 0x00000000
-mov (1) CT_R0Hdr.6:uw sr0.0:uw // sr0.0: state reg contains general thread states, e.g. EUID/TID.
-
-//***** Init ChildParam fields that are common to all threads ***********************
-mov (8) ChildParam<1>:ud RootParam<8;8,1>:ud // Copy all root parameters
-mov (4) CurCol<1>:w 0:w // Reset CurCol, CurRow
-add (2) LastCol<1>:w MBsCntX<2;2,1>:w -1:w // Get LastCol and LastRow
-
-mov (1) URBWriteMsgDesc:ud MSG_LEN(2)+URBWMSGDSC:ud
-
-//===================================================================================
-
-#include "AVC_ILDB_OpenGateway.asm" // Open root thread gateway for receiving notification
-
-#if defined(DEV_CL)
- mov (1) URBOffset:uw 240:uw // Use chroma URB offset to spawn chroma root
-#else
- mov (1) URBOffset:uw 320:uw // Use chroma URB offset to spawn chroma root
-#endif
-
-#include "AVC_ILDB_SpawnChromaRoot.asm" // Spawn chroma root
-
-mov (1) URBOffset:uw 0:uw // Use luma URB offset to spawn luma child
-mov (1) ChildThreadsID:uw 2:uw // Starting ChildThreadsID for luma child threads
-
-#include "AVC_ILDB_Dep_Check.asm" // Check dependency and spawn all MBs
-
-// Wait for UV root thread to finish
-ILDB_LABEL(WAIT_FOR_UV):
-cmp.l.f0.0 (1) null:w ThreadLimit:w MaxThreads:w
-(f0.0) jmpi ILDB_LABEL(WAIT_FOR_UV)
-
-#include "AVC_ILDB_CloseGateway.asm" // Close root thread gateway
-
-END_THREAD // End of root thread
-
-#if !defined(COMBINED_KERNEL) // For standalone kernel only
-.end_code
-
-.end_kernel
-#endif
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Root_UV.asm b/src/shaders/h264/ildb/AVC_ILDB_Root_UV.asm
deleted file mode 100644
index 7a8d2cd..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Root_UV.asm
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: AVC_ILDB_Root_UV.asm
-//
-// Root kernel serves as a scheduler for child threads
-//
-// $Revision: 1 $
-// $Date: 10/19/06 5:06p $
-//
-
-// ----------------------------------------------------
-// AVC_ILDB_ROOT_UV
-// ----------------------------------------------------
-#define AVC_ILDB
-
-.kernel AVC_ILDB_ROOT_UV
-#if defined(COMBINED_KERNEL)
-ILDB_LABEL(AVC_ILDB_ROOT_UV):
-#endif
-
-#include "SetupVPKernel.asm"
-#include "AVC_ILDB.inc"
-
-#if defined(_DEBUG)
-mov (1) EntrySignature:w 0xFF11:w
-#endif
-
-/////////////////////////////////////////////////////////////////////////////////////
-#if defined(_DEBUG)
-
-// Init URB space for running on RTL. It satisfies reading an unwritten URB entries.
-// Will remove it for production release.
-
-mov (8) m1:ud 0x55555555:ud
-mov (8) m2:ud 0x66666666:ud
-mov (8) m3:ud 0x77777777:ud
-mov (8) m4:ud 0x88888888:ud
-
-mov (1) Temp1_W:w MBsCntY:w
-shl (1) Temp2_W:w MBsCntY:w 1:w
-
-ILDB_LABEL(ILDB_INIT_URB_UV):
-mul (1) URBOffset:uw Temp1_W:uw 4:w // Each thread uses 4 URB entries (1 r0 + 1 inline + 2 data)
-mov (1) URBWriteMsgDesc:ud MSG_LEN(4)+URBWMSGDSC:ud // Msg descriptor: URB write msg length = 5
-#include "writeURB.asm"
-
-add (1) Temp1_W:w Temp1_W:w 1:w // Increase block count
-cmp.l.f0.0 (1) null Temp1_W:w Temp2_W:w // Check the block count limit
-(f0.0) jmpi ILDB_LABEL(ILDB_INIT_URB_UV) // Loop back
-
-mov (1) EntrySignature:w 0xFFF0:w
-
-#endif
-/////////////////////////////////////////////////////////////////////////////////////
-
-// Set global variable
-mov (32) ChildParam:uw 0:uw // Reset local variables, 2 GRFs
-//mul (1) TotalBlocks:w MBsCntX:w MBsCntY:w // Total # of blocks
-//add (1) GatewayApertureE:w MBsCntY:w GatewayApertureB:w // Aperture End = aperture Head + BlockCntY
-
-// 4 URB entries for Y:
-// Entry 0 - Child thread R0Hdr
-// Entry 1 - input parameter to child kernel (child r1)
-// Entry 2 - Prev MB data UV 2x8
-// Entry 3 - Unused
-
-#define URB_ENTRIES_PER_MB 4
-
-// URB_ENTRIES_PER_MB in differnt form, the final desired format is (URB_ENTRIES_PER_MB-1) << 10
-mov (1) URB_EntriesPerMB_2:w URB_ENTRIES_PER_MB-1:w
-shl (1) URB_EntriesPerMB_2:w URB_EntriesPerMB_2:w 10:w
-
-#define CHROMA_ROOT // Compiling flag for chroma only
-
-// URB base for UV kernels
-#if defined(DEV_CL)
- mov (1) URBOffsetUVBase:w 240:w
-#else
- mov (1) URBOffsetUVBase:w 320:w
-#endif
-
-
-mov (1) ChildThreadsID:uw 3:uw
-
-shr (1) ThreadLimit:w MaxThreads:w 1:w // Initial luma thread limit to 50%
-mul (1) TotalBlocks:w MBsCntX:w MBsCntY:w // MBs to be processed count down from TotalBlocks
-
-//***** Init CT_R0Hdr fields that are common to all threads *************************
-mov (8) CT_R0Hdr.0:ud r0.0<8;8,1>:ud // Init to root R0 header
-mov (1) CT_R0Hdr.7:ud r0.6:ud // Copy Parent Thread Cnt; JJ did the change on 06/20/2006
-mov (1) CT_R0Hdr.31:ub 0:w // Reset the highest byte
-mov (1) CT_R0Hdr.3:ud 0x00000000
-mov (1) CT_R0Hdr.6:uw sr0.0:uw // sr0.0: state reg contains general thread states, e.g. EUID/TID.
-
-//***** Init ChildParam fields that are common to all threads ***********************
-mov (8) ChildParam<1>:ud RootParam<8;8,1>:ud // Copy all root parameters
-mov (4) CurCol<1>:w 0:w // Reset CurCol, CurRow,
-add (2) LastCol<1>:w MBsCntX<2;2,1>:w -1:w // Get LastCol and LastRow
-
-mov (1) URBWriteMsgDesc:ud MSG_LEN(2)+URBWMSGDSC:ud
-
-//===================================================================================
-
-#include "AVC_ILDB_OpenGateway.asm" // Open gateway for receiving notification
-
-#include "AVC_ILDB_Dep_Check.asm" // Check dependency and spawn all luma child threads in parallel with chroma root
-
-//#include "AVC_ILDB_LumaThrdLimit.asm" // Update thread limit in luma root thread via gateway
-
-#include "AVC_ILDB_CloseGateway.asm" // Close root thread gateway
-
-// Chroma root EOT = child send EOT : Request type = 1
- END_CHILD_THREAD
-
-#undef CHROMA_ROOT
-
-#if !defined(COMBINED_KERNEL) // For standalone kernel only
-.end_code
-
-.end_kernel
-#endif
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Root_Y.asm b/src/shaders/h264/ildb/AVC_ILDB_Root_Y.asm
deleted file mode 100644
index baf992c..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Root_Y.asm
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: AVC_ILDB_Root_Y.asm
-//
-// Root kernel serves as a scheduler for child threads
-//
-// $Revision: 1 $
-// $Date: 10/19/06 5:06p $
-//
-
-// ----------------------------------------------------
-// AVC_ILDB_ROOT_Y
-// ----------------------------------------------------
-#define AVC_ILDB
-
-.kernel AVC_ILDB_ROOT_Y
-#if defined(COMBINED_KERNEL)
-ILDB_LABEL(AVC_ILDB_ROOT_Y):
-#endif
-
-#include "SetupVPKernel.asm"
-#include "AVC_ILDB.inc"
-
-/////////////////////////////////////////////////////////////////////////////////////
-#if defined(_DEBUG)
-
-// Init URB space for running on RTL. It satisfies reading an unwritten URB entries.
-// Will remove it for production release.
-
-mov (8) m1:ud 0x11111111:ud
-mov (8) m2:ud 0x22222222:ud
-mov (8) m3:ud 0x33333333:ud
-mov (8) m4:ud 0x44444444:ud
-
-mov (1) Temp1_W:w 0:w
-
-ILDB_LABEL(ILDB_INIT_URB_Y):
-//mul (1) Temp2_W:w Temp1_W:w 4:w // URBOffset
-//shl (1) URBWriteMsgDescLow:uw Temp2_W:w 4:w // Msg descriptor: URB write dest offset (9:4)
-//mov (1) URBWriteMsgDescHigh:uw 0x0650:uw // Msg descriptor: URB write 5 MRFs (m0 - m4)
-
-//mul (1) URBOffset:uw Temp1_W:uw 4:w // Each thread uses 4 URB entries (1 r0 + 1 inline + 2 data)
-mul (1) URBOffset:uw Temp1_W:uw 2:w // Each thread uses 2 URB entries (1 r0 + 1 inline)
-mov (1) URBWriteMsgDesc:ud MSG_LEN(2)+URBWMSGDSC:ud // Msg descriptor: URB write msg length = 3
-#include "writeURB.asm"
-
-add (1) Temp1_W:w Temp1_W:w 1:w // Increase block count
-cmp.l.f0.0 (1) null Temp1_W:w MBsCntY:w // Check the block count limit
-(f0.0) jmpi ILDB_LABEL(ILDB_INIT_URB_Y) // Loop back
-
-mov (1) EntrySignature:w 0xFFF0:w
-
-#endif
-/////////////////////////////////////////////////////////////////////////////////////
-
-
-// Set global variable
-mov (32) ChildParam:uw 0:uw // Reset local variables, 2 GRFs
-//mul (1) TotalBlocks:w MBsCntX:w MBsCntY:w // Total # of blocks
-//add (1) GatewayApertureE:w MBsCntY:w GatewayApertureB:w // Aperture End = aperture Head + BlockCntY
-
-// 4 URB entries for Y:
-// Entry 0 - Child thread R0Hdr
-// Entry 1 - input parameter to child kernel (child r1)
-// Entry 2 - Prev MB data Y 4x16, col 1 and col 0
-// Entry 3 - Prev MB data Y 4x16, col 3 and col 2
-
-#undef URB_ENTRIES_PER_MB
-#define URB_ENTRIES_PER_MB 4
-
-// URB_ENTRIES_PER_MB in differnt form, the final desired format is (URB_ENTRIES_PER_MB-1) << 10
-mov (1) URB_EntriesPerMB_2:w URB_ENTRIES_PER_MB-1:w
-shl (1) URB_EntriesPerMB_2:w URB_EntriesPerMB_2:w 10:w
-
-shr (1) ThreadLimit:w MaxThreads:w 1:w // Initial luma thread limit to 50%
-mul (1) TotalBlocks:w MBsCntX:w MBsCntY:w // MBs to be processed count down from TotalBlocks
-
-//***** Init CT_R0Hdr fields that are common to all threads *************************
-mov (8) CT_R0Hdr.0:ud r0.0<8;8,1>:ud // Init to root R0 header
-mov (1) CT_R0Hdr.7:ud r0.6:ud // Copy Parent Thread Cnt; JJ did the change on 06/20/2006
-mov (1) CT_R0Hdr.31:ub 0:w // Reset the highest byte
-mov (1) CT_R0Hdr.3:ud 0x00000000
-mov (1) CT_R0Hdr.6:uw sr0.0:uw // sr0.0: state reg contains general thread states, e.g. EUID/TID.
-
-//***** Init ChildParam fields that are common to all threads ***********************
-mov (8) ChildParam<1>:ud RootParam<8;8,1>:ud // Copy all root parameters
-mov (4) CurCol<1>:w 0:w // Reset CurCol, CurRow,
-add (2) LastCol<1>:w MBsCntX<2;2,1>:w -1:w // Get LastCol and LastRow
-
-mov (1) URBWriteMsgDesc:ud MSG_LEN(2)+URBWMSGDSC:ud
-
-//===================================================================================
-
-#include "AVC_ILDB_OpenGateway.asm" // Open gateway for receiving notification
-
-#if defined(DEV_CL)
- mov (1) URBOffset:uw 240:uw // Use chroma URB offset to spawn chroma root
-#else
- mov (1) URBOffset:uw 320:uw // Use chroma URB offset to spawn chroma root
-#endif
-
-#include "AVC_ILDB_SpawnChromaRoot.asm" // Spawn chroma root
-
-mov (1) URBOffset:uw 0:uw // Use luma URB offset to spawn luma child
-mov (1) ChildThreadsID:uw 2:uw // Starting ChildThreadsID for luma child threads
-
-#include "AVC_ILDB_Dep_Check.asm" // Check dependency and spawn all luma child threads in parallel with chroma root
-
-
-// Wait for UV root thread to finish
-ILDB_LABEL(WAIT_FOR_UV):
-cmp.l.f0.0 (1) null:w ThreadLimit:w MaxThreads:w
-(f0.0) jmpi ILDB_LABEL(WAIT_FOR_UV)
-
-
-#include "AVC_ILDB_CloseGateway.asm" // Close root thread gateway
-
-END_THREAD // End of root thread
-
-#if !defined(COMBINED_KERNEL) // For standalone kernel only
-.end_code
-
-.end_kernel
-#endif
diff --git a/src/shaders/h264/ildb/AVC_ILDB_Spawn.asm b/src/shaders/h264/ildb/AVC_ILDB_Spawn.asm
deleted file mode 100644
index 9321779..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_Spawn.asm
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-//=============== Spawn a child thread for a vertical child ===============
-
-#if defined(_DEBUG)
- mov (1) EntrySignature:w 0x6666:w
-#endif
-
- mul (1) URBOffset:uw CurRow:uw 2:w // 5:w // Each row uses 5 URB entries (R0, child R0, 3 GRFs of data from left MB)
-
- mov (8) CT_R0Hdr.0:ud r0.0<8;8,1>:ud // Init to root R0 header
-
- // R0.2: Interface Discriptor Ptr. Add offset 16 for next Interface Discriptor for child kernel
- add (1) CT_R0Hdr.2:ud r0.2:ud IDesc_Child_Offset:w
-
- #include "AVC_ILDB_SpawnChild.asm"
diff --git a/src/shaders/h264/ildb/AVC_ILDB_SpawnChild.asm b/src/shaders/h264/ildb/AVC_ILDB_SpawnChild.asm
deleted file mode 100644
index 82682f1..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_SpawnChild.asm
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-//=============== Spawn a child thread for Luma or Chroma ===============
-
- //----- Create child thread R0 header -----
-#if defined(_DEBUG)
- mov (1) EntrySignature:w 0xAAAA:w
-#endif
-
- //***** Set CT_R0Hdr fields that change for every thread
-
- // Restore CT_R0Hdr.4:ud to r0.4:ud
- mov (1) CT_R0Hdr.4:ud r0.4:ud
-
- // R0.2: Interface Discriptor Ptr. Add a child offset for child kernel
-// add (1) CT_R0Hdr.2:ud r0.2:ud CHILD_OFFSET:w
-
- // Assign a new Thread Count for this child
- mov (1) CT_R0Hdr.6:ud ChildThreadsID:uw
-
- //----- Prepare URB for launching a child thread -----
- mov (16) m2.0:w ChildParam<16;16,1>:w
-
- shr (1) MRF0.0:uw URBOffset:uw 1:w
-
- add (1) ChildThreadsID:uw ChildThreadsID:uw 2:uw // Luma child=even, chroma child=odd
-
- //--------------------------------------------------
-// #include "writeURB.asm"
- send null:uw MRF0 null:ud URBWRITE URBWriteMsgDesc:ud // URB write
-
- //--------------------------------------------------
- // Set URB handle for child thread launching:
- // URB handle Length (bit 15:10) - 0000 0000 0000 0000 yyyy yy00 0000 0000
- // URB handle offset (bit 9:0) - 0000 0000 0000 0000 0000 00xx xxxx xxxx
-
- or (1) CT_R0Hdr.4:ud URB_EntriesPerMB_2:w URBOffset:uw
-
- // 2 URB entries:
- // Entry 0 - CT_R0Hdr
- // Entry 1 - input parameter to child kernel
-
- //----- Spawn a child now -----
- send (8) null:ud CT_R0Hdr null:ud TS TSMSGDSC
-// send (8) null:ud CT_Spawn_Reg null:ud 0x07100001
-
-
- // Restore CT_R0Hdr.4:ud to r0.4:ud for next use
-// mov (1) CT_R0Hdr.4:ud r0.4:ud
diff --git a/src/shaders/h264/ildb/AVC_ILDB_SpawnChromaRoot.asm b/src/shaders/h264/ildb/AVC_ILDB_SpawnChromaRoot.asm
deleted file mode 100644
index 048d295..0000000
--- a/src/shaders/h264/ildb/AVC_ILDB_SpawnChromaRoot.asm
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-//=============== Spawn a chroma root thread ===============
-
- //----- Create chroma root thread R0 header -----
-#if defined(_DEBUG)
- mov (1) EntrySignature:w 0xAABA:w
-#endif
-
-
-
- // Restore CT_R0Hdr.4:ud to r0.4:ud
-// mov (1) CT_R0Hdr.4:ud r0.4:ud
-
- // R0.2: Interface Discriptor Ptr. Add child offset for child kernel
- add (1) CT_R0Hdr.2:ud r0.2:ud CHROMA_ROOT_OFFSET:w
-
- // Assign a new Thread Count for this child
- mov (1) CT_R0Hdr.6:ud 1:w // ThreadID=1 for chroma root
-
- //----- Copy luma root r1 for launching chroma root thread -----
- mov (16) m2.0:w RootParam<16;16,1>:w
-
- #include "writeURB.asm"
-
- //--------------------------------------------------
- // Set URB handle for child thread launching:
- // URB handle Length (bit 15:10) - 0000 0000 0000 0000 yyyy yy00 0000 0000
- // URB handle offset (bit 9:0) - 0000 0000 0000 0000 0000 00xx xxxx xxxx
-
- or (1) CT_R0Hdr.4:ud URB_EntriesPerMB_2:w URBOffset:uw
-
- // 2 URB entries:
- // Entry 0 - CT_R0Hdr
- // Entry 1 - input parameter to child kernel
-
- //----- Spawn a child now -----
- send (8) null:ud CT_R0Hdr null:ud TS TSMSGDSC
-
- // Restore CT_R0Hdr.4:ud to r0.4:ud for next use
- mov (1) CT_R0Hdr.4:ud r0.4:ud
diff --git a/src/shaders/h264/ildb/Child_Undefs.inc b/src/shaders/h264/ildb/Child_Undefs.inc
deleted file mode 100644
index b867cc0..0000000
--- a/src/shaders/h264/ildb/Child_Undefs.inc
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Modual name: Child_Undefs.inc
-//
-// Undefine global symbols for new process in child thread
-//
-
-#undef P1
-#undef P2
-#undef P3
-#undef P4
-#undef P5
-#undef P6
-#undef P7
-#undef P8
-#undef EDGECNTLMAP
-#undef CLIP_NEGATIVE
-#undef CLIP_DONE
diff --git a/src/shaders/h264/ildb/ILDB_header.inc b/src/shaders/h264/ildb/ILDB_header.inc
deleted file mode 100644
index 213516d..0000000
--- a/src/shaders/h264/ildb/ILDB_header.inc
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__ILDB_HEADER__) // Make sure this file is only included once
-#define __ILDB_HEADER__
-
-// Module name: ILDB_header.inc
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-#undef NULLREG
-#undef RETURN_REG
-#undef EOTMSGDSC
-#undef MSGSRC
-#undef END_THREAD
-#undef TSMSGDSC
-
-// ----------- Common constant definitions ------------
-//
-// Bit position constants
-//
-#define BIT0 0x01
-#define BIT1 0x02
-#define BIT2 0x04
-#define BIT3 0x08
-#define BIT4 0x10
-#define BIT5 0x20
-#define BIT6 0x40
-#define BIT7 0x80
-#define BIT8 0x0100
-#define BIT9 0x0200
-#define BIT10 0x0400
-#define BIT11 0x0800
-#define BIT12 0x1000
-#define BIT13 0x2000
-#define BIT14 0x4000
-#define BIT15 0x8000
-#define BIT16 0x00010000
-#define BIT17 0x00020000
-#define BIT18 0x00040000
-#define BIT19 0x00080000
-#define BIT20 0x00100000
-#define BIT21 0x00200000
-#define BIT22 0x00400000
-#define BIT23 0x00800000
-#define BIT24 0x01000000
-#define BIT25 0x02000000
-#define BIT26 0x04000000
-#define BIT27 0x08000000
-#define BIT28 0x10000000
-#define BIT29 0x20000000
-#define BIT30 0x40000000
-#define BIT31 0x80000000
-
-// Common constants
-//
-#define INST_SIZE 16 // Instruction size in byte
-
-#define GRFWIB 32 // GRF register width in byte
-#define GRFWIW 16 // GRF register width in word
-#define GRFWID 8 // GRF register width in dword
-
-#define TOP_FIELD 0
-#define BOTTOM_FIELD 1
-
-#define PREVIOUS_FRAME 0 // Previous frame
-#define CURRENT_FRAME 1 // Current frame
-#define NEXT_FRAME 2 // Next frame
-
-#define Y_ROW_WIDTH 16 // in bytes
-#define UV_ROW_WIDTH 8
-
-// Useful macros
-//
-#define REGION(Width,HStride) <Width*HStride;Width,HStride> // Region definition when ExecSize = Width
-
-#define NULLREG null<1>:d
-#define NULLREGW null<1>:w
-
-#define RETURN_REG r62 // Return pointer for all sub-routine calls (type DWORD)
-
-#define CALL(subFunc, skipInst) add (1) RETURN_REG<1>:ud ip:ud (1+skipInst)*INST_SIZE \n\
- jmpi (1) subFunc
-
-#define RETURN mov (1) ip:ud RETURN_REG<0;1,0>:ud // Return to calling module
-
-#define PRED_CALL(flag, subFunc, skipInst) add (1) RETURN_REG<1>:ud ip:ud (1+skipInst)*INST_SIZE \n\
- (flag) jmpi (1) subFunc
-
-
-// Definitions for surface states, GRF regions, and common data fields
-//
-// Note: Each kernel needs to define a specific symbol before including this
-// header file to ensure correct definitions.
-//
-
-
-
-#if defined(AVC_ILDB)
-
-.reg_count_total 64
-.reg_count_payload 4
-
- // Binding Table Index
- #define BI_CNTRL_DATA 0 // Control data map
- #define BI_SRC_Y 1
- #define BI_SRC_UV 2
- #define BI_DEST_Y 3
- #define BI_DEST_UV 4
-
-
- //========== Left MB, 4x16 in r2 and r3 ==========
- #define PREV_MB_Y_BASE 64 //2*GRFWIB // Byte offset to r2
- .declare PREV_MB_YD Base=r2 ElementSize=4 SrcRegion=REGION(8,1) Type=ud
- .declare PREV_MB_YW Base=r2 ElementSize=2 SrcRegion=REGION(8,1) Type=uw
- .declare PREV_MB_YB Base=r2 ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-
- #define PREV_MB_U_BASE 64 //2*GRFWIB // seperate thread from Y // Byte offset to r2
- .declare PREV_MB_UD Base=r2 ElementSize=4 SrcRegion=REGION(8,1) Type=ud
- .declare PREV_MB_UW Base=r2 ElementSize=2 SrcRegion=REGION(16,1) Type=uw
- .declare PREV_MB_UB Base=r2 ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-
- #define PREV_MB_V_BASE 65 //2*GRFWIB+1 // NV12 // Byte offset to r2.1
- .declare PREV_MB_VB Base=r2.1 ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-
- //========== Top MB, 16x4 in r4 and r5 ==========
- #define TOP_MB_Y_BASE 128 //4*GRFWIB // Byte offset to r4
- .declare TOP_MB_YD Base=r4 ElementSize=4 SrcRegion=REGION(8,1) Type=ud
- .declare TOP_MB_YW Base=r4 ElementSize=2 SrcRegion=REGION(8,1) Type=uw
- .declare TOP_MB_YB Base=r4 ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-
- #define TOP_MB_U_BASE 128 //4*GRFWIB // seperate thread from Y // Byte offset to r4
- .declare TOP_MB_UD Base=r4 ElementSize=4 SrcRegion=REGION(8,1) Type=ud
- .declare TOP_MB_UW Base=r4 ElementSize=2 SrcRegion=REGION(16,1) Type=uw
- .declare TOP_MB_UB Base=r4 ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-
- #define TOP_MB_V_BASE 129 //4*GRFWIB+1 // NV12 // Byte offset to r4.1
- .declare TOP_MB_VB Base=r4.1 ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-
-
- //========== Current MB, 16x16 in r6-r13 ==========
- #define SRC_MB_Y_BASE 192 //6*GRFWIB // Byte offset to r6
- .declare SRC_YD Base=r6 ElementSize=4 SrcRegion=REGION(8,1) Type=ud // For read and write, 8 GRFs
- .declare SRC_YW Base=r6 ElementSize=2 SrcRegion=REGION(8,1) Type=uw
- .declare SRC_YB Base=r6 ElementSize=1 SrcRegion=REGION(16,1) Type=ub // 8 GRFs
-
- #define SRC_MB_U_BASE 192 //6*GRFWIB // seperate thread from Y // Byte offset to r6
- .declare SRC_UD Base=r6 ElementSize=4 SrcRegion=REGION(8,1) Type=ud // For read and write, 2 GRFs
- .declare SRC_UW Base=r6 ElementSize=2 SrcRegion=REGION(16,1) Type=uw // For read and write, 4 GRFs
- .declare SRC_UB Base=r6 ElementSize=1 SrcRegion=REGION(16,1) Type=ub // 2 GRFs
-
- #define SRC_MB_V_BASE 193 // 6*GRFWIB+1 // NV12 // Byte offset to r6.1
- .declare SRC_VD Base=r6.1 ElementSize=4 SrcRegion=REGION(8,1) Type=ud // For read and write, 2 GRFs
- .declare SRC_VW Base=r6.1 ElementSize=2 SrcRegion=REGION(16,1) Type=uw // For read and write, 4 GRFs
- .declare SRC_VB Base=r6.1 ElementSize=1 SrcRegion=REGION(16,1) Type=ub // 2 GRFs
-
-#else // No kernel specified, define nothing.
-
-.reg_count_total 64
-.reg_count_payload 2
-
- #define SRCAOFF r1.0:ud // Offset into alpha data
- #define SRCOFF r1.1:ud // Offset into source YUV data
- #define ORIX r1.4 // :w, H. origin of the destination block in pel
- #define ORIY r1.5 // :w, V. origin of the destination block in pel
-
-#endif
-
-// ----------- Message Payload Header fields------------
-//
-#define IDP r0.2:ud // Interface Descriptor Pointer
-#define BTP r0.4:ud // Binding Table Pointer
-
-// ----------- Common Message Descriptor ------------
-//
-#ifdef DEV_ILK
-#define GW_DCN // Should be enabled only for ILK-B0 and beyond
-#define MSG_GW 0x03 // Message Gateway
-#define MSG_GW_EOT 0x23 // Message Gateway plus EOT bit set (For ILK only)
-#define DAPREAD 0x04 // Data Port Read Extended Message Descriptor,
-#define DAPWRITE 0x05 // Data Port Write Extended Message Descriptor,
-#define URBWRITE 0x06 // URB
-#define TS 0x07 // Thread Spawner Extended Message Descriptor
-#define TS_EOT 0x27 // End of Thread Extended Message Descriptor
-
-#define EOTMSGDSC 0x02000000 // End of Thread Message Descriptor /w URB handle dereferenced (used by root kernel)
-#define CHILD_EOTMSGDSC 0x02000012 // End of Child Thread Message Descriptor w/o URB handle dereferenced
-
-// Data Port Message Descriptor
-#define DWBRMSGDSC_RC 0x02086000 // DWORD Block Read Message Descriptor, reading from render cache = 6.
-#define DWBRMSGDSC_RC_TF 0x02086600 // DWORD Block Read Message Descriptor, reading from render cache = 6.
-#define DWBRMSGDSC_RC_BF 0x02086700 // DWORD Block Read Message Descriptor, reading from render cache = 6.
-#define DWBRMSGDSC_SC 0x0208A000 // DWORD Block Read Message Descriptor, reading from sampler cache = A.
-#define DWBRMSGDSC_SC_TF 0x0208E600 // DWORD Block Read Message Descriptor, reading top field from field mode sampler cache.
-#define DWBRMSGDSC_SC_BF 0x0208E700 // DWORD Block Read Message Descriptor, reading bottom field from field mode sampler cache.
-
-#define ILDBRMSGDSC 0x02085800 // AVC ILDB Control Data Read Msg Desc on Bearlake-C
-
-#define DWBWMSGDSC 0x02082000 // DWORD Block Write Message Descriptor
-#define DWBWMSGDSC_WC 0x0218A000 // DWORD Block Write Message Descriptor + write commit
-
-// URB Message Descriptor
-#define URBWMSGDSC 0x02080000 // URB Write Message Descriptor
-
-// Thread Spawner Message Descriptor
-#define TSMSGDSC 0x02000001
-
-// Message Gateway Message Descriptors
-#define OGWMSGDSC 0x02000000 // OpenGateway Message Descriptor
-#define CGWMSGDSC 0x02000001 // CloseGateway Message Descriptor
-#define FWDMSGDSC 0x02000002 // ForwardMsg Message Descriptor
-#define NOTIFYMSG 0x00008000 // Send notification with ForwardMsg message
-
-#define RESP_LEN(len) 0x100000*len
-#define MSG_LEN(len) 0x2000000*len
-
-#else // Pre DEV_ILK
-
-#define MSG_GW
-#define MSG_GW_EOT
-#define DAPREAD
-#define DAPWRITE
-#define URBWRITE
-#define TS
-#define TS_EOT
-
-#define EOTMSGDSC 0x87100000 // End of Thread Message Descriptor /w URB handle dereferenced (used by root kernel)
-#define CHILD_EOTMSGDSC 0x87100012 // End of Child Thread Message Descriptor w/o URB handle dereferenced
-
-// Data Port Message Descriptor
-#define DWBRMSGDSC_RC 0x04106000 // DWORD Block Read Message Descriptor, reading from render cache = 6.
-#define DWBRMSGDSC_RC_TF 0x04106600 // DWORD Block Read Message Descriptor, reading from render cache = 6.
-#define DWBRMSGDSC_RC_BF 0x04106700 // DWORD Block Read Message Descriptor, reading from render cache = 6.
-#define DWBRMSGDSC_SC 0x0410A000 // DWORD Block Read Message Descriptor, reading from sampler cache = A.
-#define DWBRMSGDSC_SC_TF 0x0410A600 // DWORD Block Read Message Descriptor, reading top field from field mode sampler cache.
-#define DWBRMSGDSC_SC_BF 0x0410A700 // DWORD Block Read Message Descriptor, reading bottom field from field mode sampler cache.
-
-#define ILDBRMSGDSC 0x04105800 // AVC ILDB Control Data Read Msg Desc on Bearlake-C
-
-#define DWBWMSGDSC 0x05102000 // DWORD Block Write Message Descriptor
-#define DWBWMSGDSC_WC 0x0511A000 // DWORD Block Write Message Descriptor + write commit
-
-// URB Message Descriptor
-#define URBWMSGDSC 0x06100000 // URB Write Message Descriptor
-
-// Thread Spawner Message Descriptor
-#define TSMSGDSC 0x07100001
-
-// Message Gateway Message Descriptors
-#define OGWMSGDSC 0x03100000 // OpenGateway Message Descriptor
-#define CGWMSGDSC 0x03100001 // CloseGateway Message Descriptor
-#define FWDMSGDSC 0x03100002 // ForwardMsg Message Descriptor
-#define NOTIFYMSG 0x00008000 // Send notification with ForwardMsg message
-
-#define RESP_LEN(len) 0x10000*len
-#define MSG_LEN(len) 0x100000*len
-
-// bits 15 - 0 = 01 011 000 00000000 = 0101 1000 0000 0000 = 5800
-// Render cache, AVC loop rd,
-#endif // DEV_ILK
-
-// Enable frame/field selection in message descriptor
-#define ENMSGDSCFM 0x400 // Enable MSGDSC to select frame surface
-#define ENMSGDSCTF 0x600 // Enable MSGDSC to select top field surface
-#define ENMSGDSCBF 0x700 // Enable MSGDSC to select bottom field surface
-
-#define END_THREAD send (8) NULLREG MSGHDR r0:ud TS_EOT EOTMSGDSC
-#define END_CHILD_THREAD send (8) NULLREG MSGHDR r0:ud TS_EOT CHILD_EOTMSGDSC
-
-// ----------- Message related register ------------
-//
-#define MSGHDR m1 // Message Payload Header
-#define MSGHDRY m1 // Message Payload Header register for Y data
-#define MSGHDRU m2 // Message Payload Header register for U data
-#define MSGHDRV m3 // Message Payload Header register for V data
-
-#define MSGHDRC m1 // Message Payload Header register for CUR MB
-#define MSGHDRL m2 // Message Payload Header register for LEFT MB
-#define MSGHDRT m3 // Message Payload Header register for TOP MB
-
-#define MSGHDRYA m4 // Second Message Payload Header register for Y data
-#define MSGSRC r63 // Message source register
-#define MSGDSC a0.0:ud // Message Descriptor register (type DWORD)
-
-#define MH_ORI MSGSRC.0 // DWORD block R/W message header block offset
-#define MH_ORIX MSGSRC.0 // DWORD block R/W message header X offset
-#define MH_ORIY MSGSRC.1 // DWORD block R/W message header Y offset
-#define MH_SIZE MSGSRC.2 // DWORD block R/W message header block width & height
-
-
-// M2 - M9 for message data payload
-.declare MSGPAYLOADB Base=m2 ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-.declare MSGPAYLOADW Base=m2 ElementSize=2 SrcRegion=REGION(16,1) Type=uw
-.declare MSGPAYLOADD Base=m2 ElementSize=4 SrcRegion=REGION(8,1) Type=ud
-.declare MSGPAYLOADF Base=m2 ElementSize=4 SrcRegion=REGION(8,1) Type=f
-
-// End of ILDB_header.inc
-
-#endif // !defined(__ILDB_HEADER__)
diff --git a/src/shaders/h264/ildb/Load_ILDB_Cntrl_Data.asm b/src/shaders/h264/ildb/Load_ILDB_Cntrl_Data.asm
deleted file mode 100644
index 53c4489..0000000
--- a/src/shaders/h264/ildb/Load_ILDB_Cntrl_Data.asm
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: load_ILDB_Cntrl_Data.asm
-//
-// This module loads AVC ILDB control data for one MB.
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region in :ud
-// CNTRL_DATA_D: CNTRL_DATA_D Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 8 GRFs
-//
-// Binding table index:
-// BI_CNTRL_DATA: Binding table index of control data surface
-//
-//----------------------------------------------------------------
-
- // We need to get control data offset for the bottom MB in mbaff mode.
- // That is, get f0.1=1 if MbaffFlag==1 && BotFieldFlag==1
- and (1) CTemp1_W:uw BitFields:uw MbaffFlag+BotFieldFlag:uw // Mute all other bits
-
- and.nz.f0.0 (1) null:w BitFields:w CntlDataExpFlag:w // Get CntlDataExpFlag
-
- cmp.e.f0.1 (1) NULLREGW CTemp1_W:uw MbaffFlag+BotFieldFlag:uw // Check mbaff and bot flags
-
- (f0.0) jmpi ILDB_LABEL(READ_BLC_CNTL_DATA)
-
- // On Crestline, MB control data in memory occupy 64 DWs (expanded).
-// mov (1) MSGSRC.0<1>:ud 0:w { NoDDClr } // Block origin X
-// mov (1) MSGSRC.1<1>:ud CntrlDataOffsetY:ud { NoDDClr, NoDDChk } // Block origin Y
-// mov (1) MSGSRC.2<1>:ud 0x000F000F:ud { NoDDChk } // Block width and height (16x16=256 bytes)
-
- mov (2) MSGSRC.0<1>:ud ORIX_CUR<2;2,1>:uw { NoDDClr } // Block origin X,Y
- mov (1) MSGSRC.2<1>:ud 0x000F000F:ud { NoDDChk } // Block width and height (16x16=256 bytes)
-
- (f0.1) add (1) MSGSRC.1:ud MSGSRC.1:ud 16:w // +16 to for bottom MB in a pair
-
- send (8) CNTRL_DATA_D(0)<1> MSGHDRY MSGSRC<8;8,1>:ud DAPREAD DWBRMSGDSC_SC+0x00080000+BI_CNTRL_DATA // Receive 8 GRFs
- jmpi ILDB_LABEL(READ_CNTL_DATA_DONE)
-
-
-ILDB_LABEL(READ_BLC_CNTL_DATA):
- // On Bearlake-C, MB control data in memory occupy 16 DWs. Data port returns 8 GRFs with expanded control data.
-
- // Global offset
- mov (1) MSGSRC.2:ud CntrlDataOffsetY:ud // CntrlDataOffsetY is the global offset
-
- (f0.1) add (1) MSGSRC.2:ud MSGSRC.2:ud 64:w // +64 to the next MB control data (bot MB)
-
- send (8) CNTRL_DATA_D(0)<1> MSGHDRY MSGSRC<8;8,1>:ud DAPREAD RESP_LEN(8)+ILDBRMSGDSC+BI_CNTRL_DATA // Receive 8 GRFs
-
-ILDB_LABEL(READ_CNTL_DATA_DONE):
-
-// End of load_ILDB_Cntrl_Data.asm
-
-
-
-
-// AVC ILDB control data message header format
-
-//DWord Bit Description
-//M0.7 31:0 Debug
-//M0.6 31:0 Debug
-//M0.5 31:8 Ignored
-// 7:0 Dispatch ID. // This ID is assigned by the fixed function unit and is a unique identifier for the thread. It is used to free up resources used by the thread upon thread completion.
-//M0.4 31:0 Ignored
-//M0.3 31:0 Ignored
-//M0.2 31:0 Global Offset. Specifies the global byte offset into the buffer.
- // This offset must be OWord aligned (bits 3:0 MBZ) Format = U32 Range = [0,FFFFFFF0h]
-//M0.1 31:0 Ignored
-//M0.0 31:0 Ignored
-
-
-
diff --git a/src/shaders/h264/ildb/Load_ILDB_Cntrl_Data_16DW.asm b/src/shaders/h264/ildb/Load_ILDB_Cntrl_Data_16DW.asm
deleted file mode 100644
index 9d02f26..0000000
--- a/src/shaders/h264/ildb/Load_ILDB_Cntrl_Data_16DW.asm
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: load_ILDB_Cntrl_Data_16DW.asm
-//
-// This module loads AVC ILDB 64DW control data for one MB CTG.
-// Dataport expands from 16DW to 64DW.
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region in :ud
-// CNTRL_DATA_D: CNTRL_DATA_D Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 8 GRFs
-//
-// Binding table index:
-// BI_CNTRL_DATA: Binding table index of control data surface
-//
-//----------------------------------------------------------------
-
-// On CTG, MB control data in memory occupy 16 DWs. Data port returns 8 GRFs with expanded control data.
-
-#if defined(_MBAFF)
- // We need to get control data offset for the bottom MB in mbaff mode.
- // That is, get f0.1=1 if MbaffFlag==1 && BotFieldFlag==1
-// and (1) CTemp1_W:uw BitFields:uw MbaffFlag+BotFieldFlag:uw // Mute all other bits
-// cmp.e.f0.1 (1) NULLREGW CTemp1_W:uw MbaffFlag+BotFieldFlag:uw // Check mbaff and bot flags
-
- and.ne.f0.1 (1) NULLREGW BitFields:uw BotFieldFlag:uw
-
- // Global offset
- mov (1) MSGSRC.2:ud CntrlDataOffsetY:ud
-
- (f0.1) add (1) MSGSRC.2:ud MSGSRC.2:ud 64:w // +64 to the next MB control data (bot MB)
-#endif
-
- send (8) CNTRL_DATA_D(0)<1> MSGHDRY MSGSRC<8;8,1>:ud DAPREAD RESP_LEN(8)+ILDBRMSGDSC+BI_CNTRL_DATA // Receive 8 GRFs
-
-// End of load_ILDB_Cntrl_Data_16DW.asm
-
-
-
-// AVC ILDB control data message header format
-
-//DWord Bit Description
-//M0.7 31:0 Debug
-//M0.6 31:0 Debug
-//M0.5 31:8 Ignored
-// 7:0 Dispatch ID. // This ID is assigned by the fixed function unit and is a unique identifier for the thread. It is used to free up resources used by the thread upon thread completion.
-//M0.4 31:0 Ignored
-//M0.3 31:0 Ignored
-//M0.2 31:0 Global Offset. Specifies the global byte offset into the buffer.
- // This offset must be OWord aligned (bits 3:0 MBZ) Format = U32 Range = [0,FFFFFFF0h]
-//M0.1 31:0 Ignored
-//M0.0 31:0 Ignored
-
-
-
diff --git a/src/shaders/h264/ildb/Load_ILDB_Cntrl_Data_22DW.asm b/src/shaders/h264/ildb/Load_ILDB_Cntrl_Data_22DW.asm
deleted file mode 100644
index be2ddf9..0000000
--- a/src/shaders/h264/ildb/Load_ILDB_Cntrl_Data_22DW.asm
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: load_ILDB_Cntrl_Data_22DW.asm
-//
-// ********** Apple only module **********
-//
-// This module loads AVC ILDB 22DW control data for one MB for CLN.
-// The reduced control data set is for progressive picture ONLY.
-//
-// Control data memory layout for each MB is 8x11 = 88 bytes.
-// It ocuppies 3 GRFs after reading in.
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region in :ud
-// CNTRL_DATA_D: CNTRL_DATA_D Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 3 GRFs
-//
-// Binding table index:
-// BI_CNTRL_DATA: Binding table index of control data surface
-//
-//----------------------------------------------------------------
-
- mul (1) MSGSRC.0<1>:ud ORIX:uw 8:uw { NoDDClr } // Block origin X
- mul (1) MSGSRC.1<1>:ud ORIY:uw 11:uw { NoDDClr, NoDDChk } // Block origin Y
- mov (1) MSGSRC.2<1>:ud 0x000A0007:ud { NoDDChk } // Block width and height (8x11=88 bytes)
-
- send (8) CNTRL_DATA_D(0)<1> MSGHDRY MSGSRC<8;8,1>:ud DAPREAD RESP_LEN(3)+DWBRMSGDSC_SC+BI_CNTRL_DATA // Receive 3 GRFs
-
-// End of load_ILDB_Cntrl_Data_22DW.asm
diff --git a/src/shaders/h264/ildb/Load_ILDB_Cntrl_Data_64DW.asm b/src/shaders/h264/ildb/Load_ILDB_Cntrl_Data_64DW.asm
deleted file mode 100644
index ffd1689..0000000
--- a/src/shaders/h264/ildb/Load_ILDB_Cntrl_Data_64DW.asm
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: load_ILDB_Cntrl_Data_64DW.asm
-//
-// This module loads AVC ILDB 64DW control data for one MB for CLN.
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region in :ud
-// CNTRL_DATA_D: CNTRL_DATA_D Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 8 GRFs
-//
-// Binding table index:
-// BI_CNTRL_DATA: Binding table index of control data surface
-//
-//----------------------------------------------------------------
-
-// On CLN, MB control data in memory occupy 64 DWs.
-
-#if defined(_MBAFF)
- // We need to get control data offset for the bottom MB in mbaff mode.
- // That is, set f0.1=1 if MbaffFlag==1 && BotFieldFlag==1
- and (1) acc0.0:uw BitFields:uw MbaffFlag+BotFieldFlag:uw // Mute all other bits
- cmp.e.f0.1 (1) NULLREGW acc0.0:uw MbaffFlag+BotFieldFlag:uw // Check mbaff and bot flags
-#endif // CTemp1_W
-
- mov (2) MSGSRC.0<1>:ud ORIX_CUR<2;2,1>:uw { NoDDClr } // Block origin X,Y
- mov (1) MSGSRC.2<1>:ud 0x000F000F:ud { NoDDChk } // Block width and height (16x16=256 bytes)
-
-#if defined(_MBAFF)
- (f0.1) add (1) MSGSRC.1:ud MSGSRC.1:ud 16:w // +16 to the bottom MB control data (bot MB)
-#endif
-
- send (8) CNTRL_DATA_D(0)<1> MSGHDRY MSGSRC<8;8,1>:ud DAPREAD RESP_LEN(8)+DWBRMSGDSC_SC+BI_CNTRL_DATA // Receive 8 GRFs
-
-// End of load_ILDB_Cntrl_Data_64DW.asm
diff --git a/src/shaders/h264/ildb/Makefile.am b/src/shaders/h264/ildb/Makefile.am
deleted file mode 100644
index 8cc5622..0000000
--- a/src/shaders/h264/ildb/Makefile.am
+++ /dev/null
@@ -1,98 +0,0 @@
-INTEL_ILDB_INC = \
- AVC_ILDB.inc \
- Child_Undefs.inc \
- ILDB_header.inc \
- Root_Undefs.inc \
- $(NULL)
-
-INTEL_ILDB_ASM = \
- AVC_ILDB_Child_Field_UV.asm \
- AVC_ILDB_Child_Field_Y.asm \
- AVC_ILDB_Child_Mbaff_UV.asm \
- AVC_ILDB_Child_Mbaff_Y.asm \
- AVC_ILDB_Child_UV.asm \
- AVC_ILDB_Child_Y.asm \
- AVC_ILDB_Chroma_Core.asm \
- AVC_ILDB_Chroma_Core_Mbaff.asm \
- AVC_ILDB_CloseGateway.asm \
- AVC_ILDB_Dep_Check.asm \
- AVC_ILDB_Filter_Mbaff_UV_h.asm \
- AVC_ILDB_Filter_Mbaff_UV_v.asm \
- AVC_ILDB_Filter_Mbaff_Y_h.asm \
- AVC_ILDB_Filter_Mbaff_Y_v.asm \
- AVC_ILDB_Filter_UV_h.asm \
- AVC_ILDB_Filter_UV_v.asm \
- AVC_ILDB_Filter_Y_h.asm \
- AVC_ILDB_Filter_Y_v.asm \
- AVC_ILDB_ForwardMsg.asm \
- AVC_ILDB_LumaThrdLimit.asm \
- AVC_ILDB_Luma_Core.asm \
- AVC_ILDB_Luma_Core_Mbaff.asm \
- AVC_ILDB_OpenGateway.asm \
- AVC_ILDB_Root_Field_UV.asm \
- AVC_ILDB_Root_Field_Y.asm \
- AVC_ILDB_Root_Mbaff_UV.asm \
- AVC_ILDB_Root_Mbaff_Y.asm \
- AVC_ILDB_Root_UV.asm \
- AVC_ILDB_Root_Y.asm \
- AVC_ILDB_Spawn.asm \
- AVC_ILDB_SpawnChild.asm \
- AVC_ILDB_SpawnChromaRoot.asm \
- Load_ILDB_Cntrl_Data.asm \
- Load_ILDB_Cntrl_Data_16DW.asm \
- Load_ILDB_Cntrl_Data_22DW.asm \
- Load_ILDB_Cntrl_Data_64DW.asm \
- SetupVPKernel.asm \
- TransposeNV12_16x16.asm \
- TransposeNV12_4x16.asm \
- Transpose_Cur_UV_2x8.asm \
- Transpose_Cur_UV_8x8.asm \
- Transpose_Cur_UV_Right_Most_2x8.asm \
- Transpose_Cur_Y_16x16.asm \
- Transpose_Cur_Y_4x16.asm \
- Transpose_Cur_Y_Right_Most_4x16.asm \
- Transpose_Left_UV_2x8.asm \
- Transpose_Left_Y_4x16.asm \
- loadNV12_16x16T.asm \
- loadNV12_16x4.asm \
- load_Cur_UV_8x8T.asm \
- load_Cur_UV_8x8T_Mbaff.asm \
- load_Cur_UV_Right_Most_2x8.asm \
- load_Cur_Y_16x16T.asm \
- load_Cur_Y_16x16T_Mbaff.asm \
- load_Cur_Y_Right_Most_4x16.asm \
- load_Left_UV_2x8T.asm \
- load_Left_UV_2x8T_Mbaff.asm \
- load_Left_Y_4x16T.asm \
- load_Left_Y_4x16T_Mbaff.asm \
- load_Top_UV_8x2.asm \
- load_Top_UV_8x2_Mbaff.asm \
- load_Top_Y_16x4.asm \
- load_Top_Y_16x4_Mbaff.asm \
- saveNV12_16x16.asm \
- saveNV12_16x4.asm \
- saveNV12_16x4T.asm \
- save_Cur_UV_8x8.asm \
- save_Cur_UV_8x8_Mbaff.asm \
- save_Cur_Y_16x16.asm \
- save_Cur_Y_16x16_Mbaff.asm \
- save_Left_UV_8x2T.asm \
- save_Left_UV_8x2T_Mbaff.asm \
- save_Left_Y_16x4T.asm \
- save_Left_Y_16x4T_Mbaff.asm \
- save_Top_UV_8x2.asm \
- save_Top_UV_8x2_Mbaff.asm \
- save_Top_Y_16x4.asm \
- save_Top_Y_16x4_Mbaff.asm \
- writeURB.asm \
- writeURB_UV_Child.asm \
- writeURB_Y_Child.asm \
- $(NULL)
-
-EXTRA_DIST = \
- $(INTEL_ILDB_ASM) \
- $(INTEL_ILDB_INC) \
- $(NULL)
-
-# Extra clean files so that maintainer-clean removes *everything*
-MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/shaders/h264/ildb/Root_Undefs.inc b/src/shaders/h264/ildb/Root_Undefs.inc
deleted file mode 100644
index e278be6..0000000
--- a/src/shaders/h264/ildb/Root_Undefs.inc
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Modual name: Root_Undefs.inc
-//
-// Undefine global symbols for new process in root thread
-//
-
-#undef READ_BI
-#undef WRITE_BI
-
-#undef ILDB_H_INDEPENDENT
-#undef ILDB_H_INDEPENDENT_CONT
-#undef ILDB_H_DEPENDENT
-#undef ILDB_H_DEPENDENT_SCAN
-#undef ILDB_H_NO_DEPENDENT
-
-#undef ILDB_V_INDEPENDENT
-#undef ILDB_V_INDEPENDENT_CONT
-#undef ILDB_V_DEPENDENT
-#undef ILDB_V_DEPENDENT_SCAN
-#undef ILDB_V_NO_DEPENDENT
diff --git a/src/shaders/h264/ildb/SetupVPKernel.asm b/src/shaders/h264/ildb/SetupVPKernel.asm
deleted file mode 100644
index d07f191..0000000
--- a/src/shaders/h264/ildb/SetupVPKernel.asm
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Modual name: SetupVPKernel.asm
-//
-// Initial setup for running video-processing kernels
-//
-
-#include "ILDB_header.inc"
-
-//
-// Now, begin source code....
-//
-
-.code
-
- mov (8) MSGSRC.0<1>:ud r0.0<8;8,1>:ud // Initialize message payload header with R0
-
-// End of SetupVPKernel
diff --git a/src/shaders/h264/ildb/TransposeNV12_16x16.asm b/src/shaders/h264/ildb/TransposeNV12_16x16.asm
deleted file mode 100644
index 4ce4635..0000000
--- a/src/shaders/h264/ildb/TransposeNV12_16x16.asm
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-//////////////////////////////////////////////////////////////////////////////////////////
-// Module name: TransposeNV12_16x16.asm
-//
-// Transpose a 16x16 NV12 MB. The output is also in NV12
-//
-//----------------------------------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region is :ub
-// SRC_YB: SRC_YB Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub // 8 GRFs
-// SRC_UW: SRC_UW Base=rxx ElementSize=2 SrcRegion=REGION(8,1) Type=uw // 4 GRFs
-//
-// Temp buffer:
-// BUF_B: BUF_B Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub // 8 GRFs
-// BUF_W: BUF_W Base=rxx ElementSize=2 SrcRegion=REGION(8,1) Type=uw // 4 GRFs
-//
-//////////////////////////////////////////////////////////////////////////////////////////
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDDA:w
-#endif
-
-
-// Transpose Y (16x16 bytes)
-
-// The first step
-mov (16) BUF_B(0,0)<1> SRC_YB(0,0)<16;4,1>
-mov (16) BUF_B(0,16)<1> SRC_YB(2,0)<16;4,1>
-mov (16) BUF_B(1,0)<1> SRC_YB(4,0)<16;4,1>
-mov (16) BUF_B(1,16)<1> SRC_YB(6,0)<16;4,1>
-
-mov (16) BUF_B(2,0)<1> SRC_YB(0,4)<16;4,1>
-mov (16) BUF_B(2,16)<1> SRC_YB(2,4)<16;4,1>
-mov (16) BUF_B(3,0)<1> SRC_YB(4,4)<16;4,1>
-mov (16) BUF_B(3,16)<1> SRC_YB(6,4)<16;4,1>
-
-mov (16) BUF_B(4,0)<1> SRC_YB(0,8)<16;4,1>
-mov (16) BUF_B(4,16)<1> SRC_YB(2,8)<16;4,1>
-mov (16) BUF_B(5,0)<1> SRC_YB(4,8)<16;4,1>
-mov (16) BUF_B(5,16)<1> SRC_YB(6,8)<16;4,1>
-
-mov (16) BUF_B(6,0)<1> SRC_YB(0,12)<16;4,1>
-mov (16) BUF_B(6,16)<1> SRC_YB(2,12)<16;4,1>
-mov (16) BUF_B(7,0)<1> SRC_YB(4,12)<16;4,1>
-mov (16) BUF_B(7,16)<1> SRC_YB(6,12)<16;4,1>
-
-// The second step
-mov (16) SRC_YB(0,0)<1> BUF_B(0,0)<32;8,4>
-mov (16) SRC_YB(0,16)<1> BUF_B(0,1)<32;8,4>
-mov (16) SRC_YB(1,0)<1> BUF_B(0,2)<32;8,4>
-mov (16) SRC_YB(1,16)<1> BUF_B(0,3)<32;8,4>
-
-mov (16) SRC_YB(2,0)<1> BUF_B(2,0)<32;8,4>
-mov (16) SRC_YB(2,16)<1> BUF_B(2,1)<32;8,4>
-mov (16) SRC_YB(3,0)<1> BUF_B(2,2)<32;8,4>
-mov (16) SRC_YB(3,16)<1> BUF_B(2,3)<32;8,4>
-
-mov (16) SRC_YB(4,0)<1> BUF_B(4,0)<32;8,4>
-mov (16) SRC_YB(4,16)<1> BUF_B(4,1)<32;8,4>
-mov (16) SRC_YB(5,0)<1> BUF_B(4,2)<32;8,4>
-mov (16) SRC_YB(5,16)<1> BUF_B(4,3)<32;8,4>
-
-mov (16) SRC_YB(6,0)<1> BUF_B(6,0)<32;8,4>
-mov (16) SRC_YB(6,16)<1> BUF_B(6,1)<32;8,4>
-mov (16) SRC_YB(7,0)<1> BUF_B(6,2)<32;8,4>
-mov (16) SRC_YB(7,16)<1> BUF_B(6,3)<32;8,4>
-
-// Y is transposed.
-
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// Src U and V are mixed in NV12 format. U on even bytes, V on odd bytes.
-// Transpose by treating UV pair as a word.
-
-
-// Src U 8x8 and V 8x8 are mixed. (each pix is specified as yx)
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |17 17 16 16 15 15 14 14 13 13 12 12 11 11 10 10 07 07 06 06 05 05 04 04 03 03 02 02 01 01 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |37 37 36 36 35 35 34 34 33 33 32 32 31 31 30 30 27 27 26 26 25 25 24 24 23 23 22 22 21 21 20 20|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |57 57 56 56 55 55 54 54 53 53 52 52 51 51 50 50 47 47 46 46 45 45 44 44 43 43 42 42 41 41 40 40|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |77 77 76 76 75 75 74 74 73 73 72 72 71 71 70 70 67 67 66 66 65 65 64 64 63 63 62 62 61 61 60 60|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-
-// First step (16) <1>:w <==== <8;4,1>:w
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |33 33 32 32 31 31 30 30 23 23 22 22 21 21 20 20 13 13 12 12 11 11 10 10 03 03 02 02 01 01 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |73 73 72 72 71 71 70 70 63 63 62 62 61 61 60 60 53 53 52 52 51 51 50 50 43 43 42 42 41 41 40 40|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |37 37 36 36 35 35 34 34 27 27 26 26 25 25 24 24 17 17 16 16 15 15 14 14 07 07 06 06 05 05 04 04|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |77 77 76 76 75 75 74 74 67 67 66 66 65 65 64 64 57 57 56 56 55 55 54 54 47 47 46 46 45 45 44 44|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-//
-// Transpose UV (8x8 words), The first step
-mov (16) BUF_W(0,0)<1> SRC_UW(0,0)<8;4,1>
-mov (16) BUF_W(1,0)<1> SRC_UW(2,0)<8;4,1>
-mov (16) BUF_W(2,0)<1> SRC_UW(0,4)<8;4,1>
-mov (16) BUF_W(3,0)<1> SRC_UW(2,4)<8;4,1>
-
-
-// Second step (16) <1>:w <=== <16;4,4>:w
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |71 71 61 61 51 51 41 41 31 31 21 21 11 11 01 01 70 70 60 60 50 50 40 40 30 30 20 20 10 10 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |73 73 63 63 53 53 43 43 33 33 23 23 13 13 03 03 72 72 62 62 52 52 42 42 32 32 22 22 12 12 02 02|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |75 75 65 65 55 55 45 45 35 35 25 25 15 15 05 05 74 74 64 64 54 54 44 44 34 34 24 24 14 14 04 04|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |77 77 67 67 57 57 47 47 37 37 27 27 17 17 07 07 76 76 66 66 56 56 46 46 36 36 26 26 16 16 06 06|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-//
-// Transpose UV (8x8 words), The second step
-mov (8) SRC_UW(0,0)<1> BUF_W(0,0)<16;4,4>
-mov (8) SRC_UW(0,8)<1> BUF_W(0,1)<16;4,4>
-mov (8) SRC_UW(1,0)<1> BUF_W(0,2)<16;4,4>
-mov (8) SRC_UW(1,8)<1> BUF_W(0,3)<16;4,4>
-mov (8) SRC_UW(2,0)<1> BUF_W(2,0)<16;4,4>
-mov (8) SRC_UW(2,8)<1> BUF_W(2,1)<16;4,4>
-mov (8) SRC_UW(3,0)<1> BUF_W(2,2)<16;4,4>
-mov (8) SRC_UW(3,8)<1> BUF_W(2,3)<16;4,4>
-
-// U and V are now transposed and separated.
diff --git a/src/shaders/h264/ildb/TransposeNV12_4x16.asm b/src/shaders/h264/ildb/TransposeNV12_4x16.asm
deleted file mode 100644
index fca4858..0000000
--- a/src/shaders/h264/ildb/TransposeNV12_4x16.asm
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-//////////////////////////////////////////////////////////////////////////////////////////
-// Module name: TransposeNV12_4x16.asm
-//
-// Transpose a 4x16 internal planar to 16x4 internal planar block
-//
-//----------------------------------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region is :ub
-// SRC_YB: SRC_YB Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub // 8 GRFs
-// SRC_UW: SRC_UB Base=rxx ElementSize=2 SrcRegion=REGION(8,1) Type=uw // 4 GRFs
-//
-// Temp buffer:
-// BUF_B: BUF_B Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub // 8 GRFs
-// BUF_W: BUF_W Base=rxx ElementSize=2 SrcRegion=REGION(8,1) Type=uw // 4 GRFs
-//
-//////////////////////////////////////////////////////////////////////////////////////////
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDDB:w
-#endif
-
-// Transpose Y (4x16) right most 4 columns
-
-// The first step
-mov (16) BUF_B(0,0)<1> SRC_YB(0,0)<16;4,1> // Read 2 rows, write 1 row
-mov (16) BUF_B(0,16)<1> SRC_YB(2,0)<16;4,1>
-mov (16) BUF_B(1,0)<1> SRC_YB(4,0)<16;4,1>
-mov (16) BUF_B(1,16)<1> SRC_YB(6,0)<16;4,1>
-
-// The second step
-mov (16) BUF_B(2,0)<1> BUF_B(0,0)<32;8,4> // Read 2 rows, write 1 row
-mov (16) BUF_B(2,16)<1> BUF_B(0,1)<32;8,4>
-mov (16) BUF_B(3,0)<1> BUF_B(0,2)<32;8,4>
-mov (16) BUF_B(3,16)<1> BUF_B(0,3)<32;8,4>
-
-// Y is now transposed. the result is in BUF_B(2) and BUF_B(3).
-
-
-
-// Transpose UV (4x8), right most 2 columns in word
-// Use BUF_W(0) as temp buf
-
-// Src U 8x8 and V 8x8 are mixed. (each pix is specified as yx)
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |17 17 16 16 15 15 14 14 13 13 12 12 11 11 10 10 07 07 06 06 05 05 04 04 03 03 02 02 01 01 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |37 37 36 36 35 35 34 34 33 33 32 32 31 31 30 30 27 27 26 26 25 25 24 24 23 23 22 22 21 21 20 20|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |57 57 56 56 55 55 54 54 53 53 52 52 51 51 50 50 47 47 46 46 45 45 44 44 43 43 42 42 41 41 40 40|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |77 77 76 76 75 75 74 74 73 73 72 72 71 71 70 70 67 67 66 66 65 65 64 64 63 63 62 62 61 61 60 60|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-
-// First step (8) <1>:w <==== <8;2,1>:w
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |71 71 70 70 61 61 60 60 51 51 50 50 41 41 40 40 31 31 30 30 21 21 20 20 11 11 10 10 01 01 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-mov (8) BUF_W(0,0)<1> SRC_UW(0,0)<8;2,1>
-mov (8) BUF_W(0,8)<1> SRC_UW(2,0)<8;2,1>
-
-// Second step (16) <1>:w <==== <1;8,2>:w
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |71 71 61 61 51 51 41 41 31 31 21 21 11 11 01 01 70 70 60 60 50 50 40 40 30 30 20 20 10 10 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-mov (16) BUF_W(1,0)<1> BUF_W(0,0)<1;8,2>
-
-// UV are now transposed. the result is in BUF_W(1).
-
-
-
-//The first step
-//mov (16) BUF_B(0,0)<1> SRC_UW(0,0)<8;2,1> // Read 2 rows, write 1 row
-// The second step
-//mov (8) SRC_UB(4,0)<1> BUF_B(0,0)<16;8,2> // Read 1 row, write 1 row
-//mov (8) SRC_UB(4,8)<1> BUF_B(0,1)<16;8,2> // Read 1 row, write 1 row
-
-// Transpose V (8x8), right most 2 columns
-// The first step
-//mov (16) BUF_B(0,0)<1> SRC_VB(0,1)<8;2,1> // Read 2 rows, write 1 row
-// The second step
-//mov (8) SRC_UB(4,16)<1> BUF_B(0,0)<16;8,2> // Read 1 row, write 1 row
-//mov (8) SRC_UB(4,24)<1> BUF_B(0,1)<16;8,2> // Read 1 row, write 1 row
-
-// U and V are now transposed. the result is in BUF_B(4).
-
diff --git a/src/shaders/h264/ildb/Transpose_Cur_UV_2x8.asm b/src/shaders/h264/ildb/Transpose_Cur_UV_2x8.asm
deleted file mode 100644
index 51cdcb4..0000000
--- a/src/shaders/h264/ildb/Transpose_Cur_UV_2x8.asm
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-//////////////////////////////////////////////////////////////////////////////////////////
-// Module name: Transpose_UV_2x8.asm
-//
-// Transpose UV 2x8 to 8x2 block (2x8U + 2x8V in NV12)
-//
-//----------------------------------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region is :ub
-// SRC_UW: SRC_UB Base=rxx ElementSize=2 SrcRegion=REGION(8,1) Type=uw // 4 GRFs
-//
-// Temp buffer:
-// BUF_W: BUF_W Base=rxx ElementSize=2 SrcRegion=REGION(8,1) Type=uw // 4 GRFs
-//
-//////////////////////////////////////////////////////////////////////////////////////////
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDDB:w
-#endif
-
-// Transpose UV (4x8), right most 2 columns in word
-// Use BUF_W(0) as temp buf
-
-// Src U 8x8 and V 8x8 are mixed. (each pix is specified as yx)
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |17 17 16 16 15 15 14 14 13 13 12 12 11 11 10 10 07 07 06 06 05 05 04 04 03 03 02 02 01 01 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |37 37 36 36 35 35 34 34 33 33 32 32 31 31 30 30 27 27 26 26 25 25 24 24 23 23 22 22 21 21 20 20|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |57 57 56 56 55 55 54 54 53 53 52 52 51 51 50 50 47 47 46 46 45 45 44 44 43 43 42 42 41 41 40 40|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |77 77 76 76 75 75 74 74 73 73 72 72 71 71 70 70 67 67 66 66 65 65 64 64 63 63 62 62 61 61 60 60|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-
-// First step (8) <1>:w <==== <8;2,1>:w
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |77 77 76 76 67 67 66 66 57 57 56 56 47 47 46 46 37 37 36 36 27 27 26 26 17 17 16 16 07 07 06 06|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-mov (8) LEFT_TEMP_W(0,0)<1> SRC_UW(0,6)<8;2,1> { NoDDClr }
-mov (8) LEFT_TEMP_W(0,8)<1> SRC_UW(2,6)<8;2,1> { NoDDChk }
-
-// Second step (16) <1>:w <==== <1;8,2>:w
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |77 77 67 67 57 57 47 47 37 37 27 27 17 17 07 07 76 76 66 66 56 56 46 46 36 36 26 26 16 16 06 06|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-mov (16) LEFT_TEMP_W(1,0)<1> LEFT_TEMP_W(0,0)<1;8,2>
-
-// UV are now transposed. the result is in BUF_W(1)
diff --git a/src/shaders/h264/ildb/Transpose_Cur_UV_8x8.asm b/src/shaders/h264/ildb/Transpose_Cur_UV_8x8.asm
deleted file mode 100644
index 6d9b531..0000000
--- a/src/shaders/h264/ildb/Transpose_Cur_UV_8x8.asm
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-//////////////////////////////////////////////////////////////////////////////////////////
-// Module name: Transpose_UV_8x8.asm
-//
-// Transpose a 8x8 UV block. (8x8U + 8x8V) The output is also in NV12
-//
-//----------------------------------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region is :ub
-// SRC_UW: SRC_UW Base=rxx ElementSize=2 SrcRegion=REGION(8,1) Type=uw // 4 GRFs
-//
-// Temp buffer:
-// BUF_W: BUF_W Base=rxx ElementSize=2 SrcRegion=REGION(8,1) Type=uw // 4 GRFs
-//
-//////////////////////////////////////////////////////////////////////////////////////////
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDDA:w
-#endif
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// Src U and V are mixed in NV12 format. U on even bytes, V on odd bytes.
-// Transpose by treating UV pair as a word.
-
-
-// Src U 8x8 and V 8x8 are mixed. (each pix is specified as yx)
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |17 17 16 16 15 15 14 14 13 13 12 12 11 11 10 10 07 07 06 06 05 05 04 04 03 03 02 02 01 01 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |37 37 36 36 35 35 34 34 33 33 32 32 31 31 30 30 27 27 26 26 25 25 24 24 23 23 22 22 21 21 20 20|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |57 57 56 56 55 55 54 54 53 53 52 52 51 51 50 50 47 47 46 46 45 45 44 44 43 43 42 42 41 41 40 40|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |77 77 76 76 75 75 74 74 73 73 72 72 71 71 70 70 67 67 66 66 65 65 64 64 63 63 62 62 61 61 60 60|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-
-// First step (16) <1>:w <==== <8;4,1>:w
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |33 33 32 32 31 31 30 30 23 23 22 22 21 21 20 20 13 13 12 12 11 11 10 10 03 03 02 02 01 01 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |73 73 72 72 71 71 70 70 63 63 62 62 61 61 60 60 53 53 52 52 51 51 50 50 43 43 42 42 41 41 40 40|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |37 37 36 36 35 35 34 34 27 27 26 26 25 25 24 24 17 17 16 16 15 15 14 14 07 07 06 06 05 05 04 04|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |77 77 76 76 75 75 74 74 67 67 66 66 65 65 64 64 57 57 56 56 55 55 54 54 47 47 46 46 45 45 44 44|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-//
-// Transpose UV (8x8 words), The first step
-mov (16) CUR_TEMP_W(0,0)<1> SRC_UW(0,0)<8;4,1>
-mov (16) CUR_TEMP_W(1,0)<1> SRC_UW(2,0)<8;4,1>
-mov (16) CUR_TEMP_W(2,0)<1> SRC_UW(0,4)<8;4,1>
-mov (16) CUR_TEMP_W(3,0)<1> SRC_UW(2,4)<8;4,1>
-
-
-// Second step (16) <1>:w <=== <16;4,4>:w
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |71 71 61 61 51 51 41 41 31 31 21 21 11 11 01 01 70 70 60 60 50 50 40 40 30 30 20 20 10 10 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |73 73 63 63 53 53 43 43 33 33 23 23 13 13 03 03 72 72 62 62 52 52 42 42 32 32 22 22 12 12 02 02|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |75 75 65 65 55 55 45 45 35 35 25 25 15 15 05 05 74 74 64 64 54 54 44 44 34 34 24 24 14 14 04 04|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |77 77 67 67 57 57 47 47 37 37 27 27 17 17 07 07 76 76 66 66 56 56 46 46 36 36 26 26 16 16 06 06|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-//
-// Transpose UV (8x8 words), The second step
-mov (8) SRC_UW(0,0)<1> CUR_TEMP_W(0,0)<16;4,4> { NoDDClr }
-mov (8) SRC_UW(0,8)<1> CUR_TEMP_W(0,1)<16;4,4> { NoDDChk }
-mov (8) SRC_UW(1,0)<1> CUR_TEMP_W(0,2)<16;4,4> { NoDDClr }
-mov (8) SRC_UW(1,8)<1> CUR_TEMP_W(0,3)<16;4,4> { NoDDChk }
-mov (8) SRC_UW(2,0)<1> CUR_TEMP_W(2,0)<16;4,4> { NoDDClr }
-mov (8) SRC_UW(2,8)<1> CUR_TEMP_W(2,1)<16;4,4> { NoDDChk }
-mov (8) SRC_UW(3,0)<1> CUR_TEMP_W(2,2)<16;4,4> { NoDDClr }
-mov (8) SRC_UW(3,8)<1> CUR_TEMP_W(2,3)<16;4,4> { NoDDChk }
-
-// U and V are now transposed and separated.
diff --git a/src/shaders/h264/ildb/Transpose_Cur_UV_Right_Most_2x8.asm b/src/shaders/h264/ildb/Transpose_Cur_UV_Right_Most_2x8.asm
deleted file mode 100644
index 02d9621..0000000
--- a/src/shaders/h264/ildb/Transpose_Cur_UV_Right_Most_2x8.asm
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Transpose Cur MB Right Most 2x8 to 8x2
-// Assume source is LEFT_TEMP_W(0), and detination is LEFT_TEMP_W(1)
-
-// Input from dport for transpose:
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |71 71 70 70 61 61 60 60 51 51 50 50 41 41 40 40 31 31 30 30 21 21 20 20 11 11 10 10 01 01 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-//
-// Output of transpose: <1> <=== <16;8,2>:w
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |71 71 61 61 51 51 41 41 31 31 21 21 11 11 01 01 70 70 60 60 50 50 40 40 30 30 20 20 10 10 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-
-// mov (8) LEFT_TEMP_W(1,0)<1> LEFT_TEMP_W(0,0)<16;8,2> { NoDDClr }
-// mov (8) LEFT_TEMP_W(1,8)<1> LEFT_TEMP_W(0,1)<16;8,2> { NoDDChk }
-
- mov (16) LEFT_TEMP_W(1,0)<1> LEFT_TEMP_W(0,0)<1;8,2>
diff --git a/src/shaders/h264/ildb/Transpose_Cur_Y_16x16.asm b/src/shaders/h264/ildb/Transpose_Cur_Y_16x16.asm
deleted file mode 100644
index c09e5b3..0000000
--- a/src/shaders/h264/ildb/Transpose_Cur_Y_16x16.asm
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-//////////////////////////////////////////////////////////////////////////////////////////
-// Module name: Transpose_Y_16x16.asm
-//
-// Transpose Y 16x16 block.
-//
-//----------------------------------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region is :ub
-// SRC_YB: SRC_YB Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub // 8 GRFs
-//
-// Temp buffer:
-// CUR_TEMP_B: BUF_B Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub // 8 GRFs
-//
-//////////////////////////////////////////////////////////////////////////////////////////
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDDA:w
-#endif
-
-
-// Transpose Y (16x16 bytes)
-
-// The first step
-mov (16) CUR_TEMP_B(0,0)<1> SRC_YB(0,0)<16;4,1> { NoDDClr }
-mov (16) CUR_TEMP_B(0,16)<1> SRC_YB(2,0)<16;4,1> { NoDDChk }
-mov (16) CUR_TEMP_B(1,0)<1> SRC_YB(4,0)<16;4,1> { NoDDClr }
-mov (16) CUR_TEMP_B(1,16)<1> SRC_YB(6,0)<16;4,1> { NoDDChk }
-
-mov (16) CUR_TEMP_B(2,0)<1> SRC_YB(0,4)<16;4,1> { NoDDClr }
-mov (16) CUR_TEMP_B(2,16)<1> SRC_YB(2,4)<16;4,1> { NoDDChk }
-mov (16) CUR_TEMP_B(3,0)<1> SRC_YB(4,4)<16;4,1> { NoDDClr }
-mov (16) CUR_TEMP_B(3,16)<1> SRC_YB(6,4)<16;4,1> { NoDDChk }
-
-mov (16) CUR_TEMP_B(4,0)<1> SRC_YB(0,8)<16;4,1> { NoDDClr }
-mov (16) CUR_TEMP_B(4,16)<1> SRC_YB(2,8)<16;4,1> { NoDDChk }
-mov (16) CUR_TEMP_B(5,0)<1> SRC_YB(4,8)<16;4,1> { NoDDClr }
-mov (16) CUR_TEMP_B(5,16)<1> SRC_YB(6,8)<16;4,1> { NoDDChk }
-
-mov (16) CUR_TEMP_B(6,0)<1> SRC_YB(0,12)<16;4,1> { NoDDClr }
-mov (16) CUR_TEMP_B(6,16)<1> SRC_YB(2,12)<16;4,1> { NoDDChk }
-mov (16) CUR_TEMP_B(7,0)<1> SRC_YB(4,12)<16;4,1> { NoDDClr }
-mov (16) CUR_TEMP_B(7,16)<1> SRC_YB(6,12)<16;4,1> { NoDDChk }
-
-// The second step
-mov (16) SRC_YB(0,0)<1> CUR_TEMP_B(0,0)<32;8,4> { NoDDClr }
-mov (16) SRC_YB(0,16)<1> CUR_TEMP_B(0,1)<32;8,4> { NoDDChk }
-mov (16) SRC_YB(1,0)<1> CUR_TEMP_B(0,2)<32;8,4> { NoDDClr }
-mov (16) SRC_YB(1,16)<1> CUR_TEMP_B(0,3)<32;8,4> { NoDDChk }
-
-mov (16) SRC_YB(2,0)<1> CUR_TEMP_B(2,0)<32;8,4> { NoDDClr }
-mov (16) SRC_YB(2,16)<1> CUR_TEMP_B(2,1)<32;8,4> { NoDDChk }
-mov (16) SRC_YB(3,0)<1> CUR_TEMP_B(2,2)<32;8,4> { NoDDClr }
-mov (16) SRC_YB(3,16)<1> CUR_TEMP_B(2,3)<32;8,4> { NoDDChk }
-
-mov (16) SRC_YB(4,0)<1> CUR_TEMP_B(4,0)<32;8,4> { NoDDClr }
-mov (16) SRC_YB(4,16)<1> CUR_TEMP_B(4,1)<32;8,4> { NoDDChk }
-mov (16) SRC_YB(5,0)<1> CUR_TEMP_B(4,2)<32;8,4> { NoDDClr }
-mov (16) SRC_YB(5,16)<1> CUR_TEMP_B(4,3)<32;8,4> { NoDDChk }
-
-mov (16) SRC_YB(6,0)<1> CUR_TEMP_B(6,0)<32;8,4> { NoDDClr }
-mov (16) SRC_YB(6,16)<1> CUR_TEMP_B(6,1)<32;8,4> { NoDDChk }
-mov (16) SRC_YB(7,0)<1> CUR_TEMP_B(6,2)<32;8,4> { NoDDClr }
-mov (16) SRC_YB(7,16)<1> CUR_TEMP_B(6,3)<32;8,4> { NoDDChk }
-
-// Y is transposed.
diff --git a/src/shaders/h264/ildb/Transpose_Cur_Y_4x16.asm b/src/shaders/h264/ildb/Transpose_Cur_Y_4x16.asm
deleted file mode 100644
index f5768b2..0000000
--- a/src/shaders/h264/ildb/Transpose_Cur_Y_4x16.asm
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-//////////////////////////////////////////////////////////////////////////////////////////
-// Module name: Transpose_Y_4x16.asm
-//
-// Transpose a 4x16 internal planar to 16x4 internal planar block.
-// The src block is 16x16. Right moft 4 columns are transposed.
-//
-//----------------------------------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region is :ub
-// SRC_YB: SRC_YB Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub // 8 GRFs
-//
-// Temp buffer:
-// BUF_B: BUF_B Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub // 8 GRFs
-//
-//////////////////////////////////////////////////////////////////////////////////////////
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDDB:w
-#endif
-
-// Transpose Y (4x16) right most 4 columns
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |1f 1e 1d 1c 1b 1a 19 18 17 16 15 14 13 12 11 10 0f 0e 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |3f 3e 3d 3c 3b 3a 39 38 37 36 35 34 33 32 31 30 2f 2e 2d 2c 2b 2a 29 28 27 26 25 24 23 22 21 20|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |5f 5e 5d 5c 5b 5a 59 58 57 56 55 54 53 52 51 50 4f 4e 4d 4c 4b 4a 49 48 47 46 45 44 43 42 41 40|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |7f 7e 7d 7c 7b 7a 79 78 77 76 75 74 73 72 71 70 6f 6e 6d 6c 6b 6a 69 68 67 66 65 64 63 62 61 60|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |9f 9e 9d 9c 9b 9a 99 98 97 96 95 94 93 92 91 90 8f 8e 8d 8c 8b 8a 89 88 87 86 85 84 83 82 81 80|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |bf be bd bc bb ba b9 b8 b7 b6 b5 b4 b3 b2 b1 b0 af ae ad ac ab aa a9 a8 a7 a6 a5 a4 a3 a2 a1 a0|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |df de dd dc db da d9 d8 d7 d6 d5 d4 d3 d2 d1 d0 cf ce cd cc cb ca c9 c8 c7 c6 c5 c4 c3 c2 c1 c0|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |ff fe fd fc fb fa f9 f8 f7 f6 f5 f4 f3 f2 f1 f0 ef ee ed ec eb ea e9 e8 e7 e6 e5 e4 e3 e2 e1 e0|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-
-// The first step
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |7f 7e 7d 7c 6f 6e 6d 6c 5f 5e 5d 5c 4f 4e 4d 4c 3f 3e 3d 3c 2f 2e 2d 2c 1f 1e 1d 1c 0f 0e 0d 0c|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |ff fe fd fc ef ee ed ec df de dd dc cf ce cd cc bf be bd bc af ae ad ac 9f 9e 9d 9c 8f 8e 8d 8c|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-
-// The second step
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |fd ed dd cd bd ad 9d 8d 7d 6d 5d 4d 3d 2d 1d 0d fc ec dc cc bc ac 9c 8c 7c 6c 5c 4c 3c 2c 1c 0c|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |ff ef df cf bf af 9f 8f 7f 6f 5f 4f 3f 2f 1f 0f fe ee de ce be ae 9e 8e 7e 6e 5e 4e 3e 2e 1e 0e|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-
-
-mov (16) LEFT_TEMP_B(0,0)<1> SRC_YB(0,12)<16;4,1> { NoDDClr }
-mov (16) LEFT_TEMP_B(0,16)<1> SRC_YB(2,12)<16;4,1> { NoDDChk }
-mov (16) LEFT_TEMP_B(1,0)<1> SRC_YB(4,12)<16;4,1> { NoDDClr }
-mov (16) LEFT_TEMP_B(1,16)<1> SRC_YB(6,12)<16;4,1> { NoDDChk }
-
-// The second step
-mov (16) LEFT_TEMP_B(2,0)<1> LEFT_TEMP_B(0,0)<32;8,4> { NoDDClr }
-mov (16) LEFT_TEMP_B(2,16)<1> LEFT_TEMP_B(0,1)<32;8,4> { NoDDChk }
-mov (16) LEFT_TEMP_B(3,0)<1> LEFT_TEMP_B(0,2)<32;8,4> { NoDDClr }
-mov (16) LEFT_TEMP_B(3,16)<1> LEFT_TEMP_B(0,3)<32;8,4> { NoDDChk }
-
-// Y is now transposed. the result is in LEFT_TEMP_B(2) and LEFT_TEMP_B(3).
diff --git a/src/shaders/h264/ildb/Transpose_Cur_Y_Right_Most_4x16.asm b/src/shaders/h264/ildb/Transpose_Cur_Y_Right_Most_4x16.asm
deleted file mode 100644
index 5f9ea6e..0000000
--- a/src/shaders/h264/ildb/Transpose_Cur_Y_Right_Most_4x16.asm
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Transpose cur Y right most 4x16 to 16x4
-// Assume source is LEFT_TEMP_B(0), and detination is LEFT_TEMP_B(2)
-
-
-// Input received from dport:
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |73 72 71 70 63 62 61 60 53 52 51 50 43 42 41 40 33 32 31 30 23 22 21 20 13 12 11 10 03 02 01 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f3 f2 f1 f0 e3 e2 e1 e0 d3 d2 d1 d0 c3 c2 c1 c0 b3 b2 b1 b0 a3 a2 a1 a0 93 92 91 90 83 82 81 80|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-
-// Output of transpose: <1> <= <32;8,4>
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f1 e1 d1 c1 b1 a1 91 81 71 61 51 41 31 21 11 01 f0 e0 d0 c0 b0 a0 90 80 70 60 50 40 30 20 10 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f3 e3 d3 c3 b3 a3 93 83 73 63 53 43 33 23 13 03 f2 e2 d2 c2 b2 a2 92 82 72 62 52 42 32 22 12 02|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-
- // Transpose the data, also occupy 2 GRFs
- mov (16) LEFT_TEMP_B(2)<1> LEFT_TEMP_B(0, 0)<32;8,4> { NoDDClr }
- mov (16) LEFT_TEMP_B(2, 16)<1> LEFT_TEMP_B(0, 1)<32;8,4> { NoDDChk }
- mov (16) LEFT_TEMP_B(3)<1> LEFT_TEMP_B(0, 2)<32;8,4> { NoDDClr }
- mov (16) LEFT_TEMP_B(3, 16)<1> LEFT_TEMP_B(0, 3)<32;8,4> { NoDDChk }
diff --git a/src/shaders/h264/ildb/Transpose_Left_UV_2x8.asm b/src/shaders/h264/ildb/Transpose_Left_UV_2x8.asm
deleted file mode 100644
index 027982e..0000000
--- a/src/shaders/h264/ildb/Transpose_Left_UV_2x8.asm
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Transpose left MB 2x8 to 8x2
-// Assume source is LEFT_TEMP_W, and detination is PREV_MB_UW
-
-// Input from dport for transpose:
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |71 71 70 70 61 61 60 60 51 51 50 50 41 41 40 40 31 31 30 30 21 21 20 20 11 11 10 10 01 01 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-//
-// Output of transpose: <1> <=== <16;8,2>:w
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |71 71 61 61 51 51 41 41 31 31 21 21 11 11 01 01 70 70 60 60 50 50 40 40 30 30 20 20 10 10 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-
-// mov (8) PREV_MB_UW(0,0)<1> BUF_W(0,0)<16;8,2> { NoDDClr }
-// mov (8) PREV_MB_UW(0,8)<1> BUF_W(0,1)<16;8,2> { NoDDChk }
-
-// mov (8) PREV_MB_UW(0,0)<1> LEFT_TEMP_W(0,0)<16;8,2> { NoDDClr }
-// mov (8) PREV_MB_UW(0,8)<1> LEFT_TEMP_W(0,1)<16;8,2> { NoDDChk }
-
- mov (16) PREV_MB_UW(0,0)<1> LEFT_TEMP_W(0,0)<1;8,2>
diff --git a/src/shaders/h264/ildb/Transpose_Left_Y_4x16.asm b/src/shaders/h264/ildb/Transpose_Left_Y_4x16.asm
deleted file mode 100644
index da1f163..0000000
--- a/src/shaders/h264/ildb/Transpose_Left_Y_4x16.asm
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Transpose left MB 4x16 to 16x4
-// Assume source is LEFT_TEMP_B, and detination is PREV_MB_YB
-
-
-// Input received from dport:
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |73 72 71 70 63 62 61 60 53 52 51 50 43 42 41 40 33 32 31 30 23 22 21 20 13 12 11 10 03 02 01 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f3 f2 f1 f0 e3 e2 e1 e0 d3 d2 d1 d0 c3 c2 c1 c0 b3 b2 b1 b0 a3 a2 a1 a0 93 92 91 90 83 82 81 80|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-
-// Output of transpose: <1> <= <32;8,4>
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f1 e1 d1 c1 b1 a1 91 81 71 61 51 41 31 21 11 01 f0 e0 d0 c0 b0 a0 90 80 70 60 50 40 30 20 10 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f3 e3 d3 c3 b3 a3 93 83 73 63 53 43 33 23 13 03 f2 e2 d2 c2 b2 a2 92 82 72 62 52 42 32 22 12 02|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-
- // Transpose the data, also occupy 2 GRFs
- mov (16) PREV_MB_YB(0)<1> LEFT_TEMP_B(0, 0)<32;8,4> { NoDDClr }
- mov (16) PREV_MB_YB(0, 16)<1> LEFT_TEMP_B(0, 1)<32;8,4> { NoDDChk }
- mov (16) PREV_MB_YB(1)<1> LEFT_TEMP_B(0, 2)<32;8,4> { NoDDClr }
- mov (16) PREV_MB_YB(1, 16)<1> LEFT_TEMP_B(0, 3)<32;8,4> { NoDDChk }
diff --git a/src/shaders/h264/ildb/loadNV12_16x16T.asm b/src/shaders/h264/ildb/loadNV12_16x16T.asm
deleted file mode 100644
index d697af6..0000000
--- a/src/shaders/h264/ildb/loadNV12_16x16T.asm
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: loadNV12_16x16T.asm
-//
-// Load and transpose NV12 16x16 block
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region in :ud
-// SRC_YD: SRC_YD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 8 GRFs
-// SRC_UD: SRC_UD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud (U+V for NV12) // 4 GRFs
-//
-// Source region is :ub. The same region as :ud region
-// SRC_YB: SRC_YB Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub // 8 GRFs
-// SRC_UB: SRC_UB Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub // 2 GRFs
-// SRC_VB: SRC_VB Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub // 2 GRFs
-//
-// Binding table index:
-// BI_SRC_Y: Binding table index of Y surface
-// BI_SRC_UV: Binding table index of UV surface (NV12)
-//
-// Temp buffer:
-// BUF_B: BUF_B Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD1:w
-#endif
-
- // Read Y
- mov (2) MSGSRC.0<1>:ud ORIX_CUR<2;2,1>:w // Block origin
- mov (1) MSGSRC.2<1>:ud 0x000F000F:ud // Block width and height (16x16)
- send (8) SRC_YD(0)<1> MSGHDRY MSGSRC<8;8,1>:ud DAPREAD RESP_LEN(8)+DWBRMSGDSC_RC+BI_SRC_Y // Read 8 GRFs
-
- // Read U+V
- asr (1) MSGSRC.1:ud MSGSRC.1:ud 1:w // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2<1>:ud 0x0007000F:ud // NV12 U+V block width and height (16x8)
- send (8) SRC_UD(0)<1> MSGHDRU MSGSRC<8;8,1>:ud DAPREAD RESP_LEN(4)+DWBRMSGDSC_RC+BI_SRC_UV // Read 4 GRFs
-
- #include "TransposeNV12_16x16.asm"
-
-// #include "Transpose_Y_16x16.asm"
-// #include "Transpose_NV12_UV_16x8.asm"
-
-// End of loadNV12_16x16T
diff --git a/src/shaders/h264/ildb/loadNV12_16x4.asm b/src/shaders/h264/ildb/loadNV12_16x4.asm
deleted file mode 100644
index e3d5551..0000000
--- a/src/shaders/h264/ildb/loadNV12_16x4.asm
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module Name: Loadnv12_16X4.Asm
-//
-// Load Nv12 16X4 Block
-//
-//----------------------------------------------------------------
-// Symbols Need To Be Defined Before Including This Module
-//
-// Source Region In :Ud
-// Src_Yd: Src_Yd Base=Rxx Elementsize=4 Srcregion=Region(8,1) Type=Ud // 3 Grfs (2 For Y, 1 For U+V)
-//
-// Source Region Is :Ub. The Same Region As :Ud Region
-// Src_Yb: Src_Yb Base=Rxx Elementsize=1 Srcregion=Region(16,1) Type=Ub // 2 Grfs
-// Src_Ub: Src_Ub Base=Rxx Elementsize=1 Srcregion=Region(16,1) Type=Ub // 0.5 Grf
-// Src_Vb: Src_Vb Base=Rxx Elementsize=1 Srcregion=Region(16,1) Type=Ub // 0.5 Grf
-//
-// Binding Table Index:
-// Bi_Src_Y: Binding Table Index Of Y Surface
-// Bi_Src_UV: Binding Table Index Of UV Surface (Nv12)
-//
-// Temp Buffer:
-// Buf_D: Buf_D Base=Rxx Elementsize=4 Srcregion=Region(8,1) Type=Ud
-// Buf_B: Buf_B Base=Rxx Elementsize=1 Srcregion=Region(16,1) Type=Ub
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD2:w
-#endif
-
- // Read Y
- mov (2) MSGSRC.0<1>:ud ORIX<2;2,1>:w // Block origin
- mov (1) MSGSRC.2<1>:ud 0x0003000F:ud // Block width and height (16x4)
- send (8) PREV_MB_YD(0)<1> MSGHDRY MSGSRC<8;8,1>:ud DAPREAD RESP_LEN(2)+DWBRMSGDSC_RC+BI_SRC_Y // Read 2 GRFs
-
- // Read U+V
- asr (1) MSGSRC.1:ud MSGSRC.1:ud 1:w // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2<1>:ud 0x0001000F:ud // NV12 U+V block width and height (16x2)
-
- // Load NV12 U+V tp a temp buf
- send (8) BUF_D(0)<1> MSGHDRU MSGSRC<8;8,1>:ud DAPREAD RESP_LEN(1)+DWBRMSGDSC_RC+BI_SRC_UV // Read 1 GRF
-
- // Convert NV12 U+V to internal planar U and V and place them right after Y.
-// mov (16) SRC_UB(0,0)<1> BUF_B(0,0)<32;16,2>
-// mov (16) SRC_VB(0,0)<1> BUF_B(0,1)<32;16,2>
-
-// End of loadNV12_16x4.asm
diff --git a/src/shaders/h264/ildb/load_Cur_UV_8x8T.asm b/src/shaders/h264/ildb/load_Cur_UV_8x8T.asm
deleted file mode 100644
index 61ea6e8..0000000
--- a/src/shaders/h264/ildb/load_Cur_UV_8x8T.asm
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: load_Cur_UV_8x8T.asm
-//
-// Load and transpose UV 8x8 block (NV12: 8x8U and 8x8V mixed)
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region in :ud
-// SRC_UD: SRC_UD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud (U+V for NV12) // 4 GRFs
-//
-// Binding table index:
-// BI_SRC_UV: Binding table index of UV surface (NV12)
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD1:w
-#endif
-
- // Read U+V blk
-#if defined(_PROGRESSIVE)
- mov (1) MSGSRC.0:ud ORIX_CUR:w { NoDDClr } // Block origin
- asr (1) MSGSRC.1:ud ORIY_CUR:w 1:w { NoDDClr, NoDDChk } // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2:ud 0x0007000F:ud { NoDDChk } // NV12 U+V block width and height (16x8 bytes)
-
- //send (8) SRC_UD(0)<1> MSGHDRU MSGSRC<8;8,1>:ud DWBRMSGDSC_SC+0x00040000+BI_SRC_UV
- mov (1) MSGDSC RESP_LEN(4)+DWBRMSGDSC_SC+BI_SRC_UV:ud
-#endif
-
-#if defined(_FIELD)
-// cmp.z.f0.0 (1) NULLREGW PicTypeC:w 0:w // Get pic type flag
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w // Get bottom field flag
- // they are used later in this file
-
- mov (1) MSGSRC.0:ud ORIX_CUR:w { NoDDClr } // Block origin
- asr (1) MSGSRC.1:ud ORIY_CUR:w 1:w { NoDDClr, NoDDChk } // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2:ud 0x0007000F:ud { NoDDChk } // NV12 U+V block width and height (16x8 bytes)
-
- // Set message descriptor
-
- // Frame picture
-// (f0.0) mov (1) MSGDSC RESP_LEN(4)+DWBRMSGDSC_SC+BI_SRC_UV:ud // Read 4 GRFs from SRC_UV
-// (f0.0) jmpi load_UV_8x8T
-
- // Field picture
- (f0.1) mov (1) MSGDSC RESP_LEN(4)+DWBRMSGDSC_SC_BF+BI_SRC_UV:ud // Read 4 GRFs from SRC_UV bottom field
- (-f0.1) mov (1) MSGDSC RESP_LEN(4)+DWBRMSGDSC_SC_TF+BI_SRC_UV:ud // Read 4 GRFs from SRC_UV top field
-
-//load_UV_8x8T:
-
-#endif
-
- send (8) SRC_UD(0)<1> MSGHDRU MSGSRC<8;8,1>:ud DAPREAD MSGDSC
-
-// #include "Transpose_Cur_UV_8x8.asm"
-
-// End of load_UV_8x8T
diff --git a/src/shaders/h264/ildb/load_Cur_UV_8x8T_Mbaff.asm b/src/shaders/h264/ildb/load_Cur_UV_8x8T_Mbaff.asm
deleted file mode 100644
index 290e5d3..0000000
--- a/src/shaders/h264/ildb/load_Cur_UV_8x8T_Mbaff.asm
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: load_Cur_UV_8x8T.asm
-//
-// Load and transpose UV 8x8 block (NV12: 8x8U and 8x8V mixed)
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region in :ud
-// SRC_UD: SRC_UD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud (U+V for NV12) // 4 GRFs
-//
-// Binding table index:
-// BI_SRC_UV: Binding table index of UV surface (NV12)
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD1:w
-#endif
- // FieldModeCurrentMbFlag determines how to access left MB
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FieldModeCurrentMbFlag:w
-
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w // Get bottom field flag
-
- // Read U+V
- mov (1) MSGSRC.0:ud ORIX_CUR:w { NoDDClr } // Block origin
- asr (1) MSGSRC.1:ud ORIY_CUR:w 1:w { NoDDClr, NoDDChk } // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2:ud 0x0007000F:ud { NoDDChk } // NV12 U+V block width and height (16x8 bytes)
-
- // Set message descriptor
-
- (f0.0) if (1) ILDB_LABEL(ELSE_UV_8X8T)
-
- // Frame picture
- mov (1) MSGDSC RESP_LEN(4)+DWBRMSGDSC_SC+BI_SRC_UV:ud // Read 4 GRFs from SRC_UV
-
- (f0.1) add (1) MSGSRC.1:d MSGSRC.1:d 8:w // Add vertical offset 8 for bot MB in MBAFF mode
-
-ILDB_LABEL(ELSE_UV_8X8T):
- else (1) ILDB_LABEL(ENDIF_UV_8X8T)
-
- // Field picture
- (f0.1) mov (1) MSGDSC RESP_LEN(4)+DWBRMSGDSC_SC_BF+BI_SRC_UV:ud // Read 4 GRFs from SRC_UV bottom field
- (-f0.1) mov (1) MSGDSC RESP_LEN(4)+DWBRMSGDSC_SC_TF+BI_SRC_UV:ud // Read 4 GRFs from SRC_UV top field
-
- asr (1) MSGSRC.1:d MSGSRC.1:d 1:w // Reduce y by half in field access mode
-
- endif
-ILDB_LABEL(ENDIF_UV_8X8T):
-
- send (8) SRC_UD(0)<1> MSGHDRU MSGSRC<8;8,1>:ud DAPREAD MSGDSC
-
-// #include "Transpose_Cur_UV_8x8.asm"
-
-// End of load_UV_8x8T
diff --git a/src/shaders/h264/ildb/load_Cur_UV_Right_Most_2x8.asm b/src/shaders/h264/ildb/load_Cur_UV_Right_Most_2x8.asm
deleted file mode 100644
index a8e79a8..0000000
--- a/src/shaders/h264/ildb/load_Cur_UV_Right_Most_2x8.asm
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module Name: Load_Cur_UV_Right_Most_2X8.Asm
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD0:w
-#endif
-
-#if defined(_PROGRESSIVE)
- // Read U+V, (UV MB size = 16x8)
- add (1) MSGSRC.0:ud ORIX_CUR:w 12:w { NoDDClr } // Block origin
- asr (1) MSGSRC.1:ud ORIY_CUR:w 1:w { NoDDClr, NoDDChk } // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2:ud 0x00070003:ud { NoDDChk } // NV12 U+V block width and height (4x8)
- send (8) LEFT_TEMP_D(0)<1> MSGHDRU MSGSRC<8;8,1>:ud DAPREAD RESP_LEN(1)+DWBRMSGDSC_RC+BI_DEST_UV
-#endif
-
-#if defined(_FIELD) || defined(_MBAFF)
-
- // FieldModeCurrentMbFlag determines how to access left MB
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FieldModeCurrentMbFlag:w
-
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w // Get bottom field flag
-
- // Read U+V
- add (1) MSGSRC.0:ud ORIX_CUR:w 12:w { NoDDClr } // Block origin
- asr (1) MSGSRC.1:ud ORIY_CUR:w 1:w { NoDDClr, NoDDChk } // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2:ud 0x00070003:ud { NoDDChk } // NV12 U+V block width and height (4x8)
-
- // Load NV12 U+V
-
- // Set message descriptor
-
- (f0.0) if (1) ILDB_LABEL(ELSE_Y_2x8T)
-
- // Frame picture
- mov (1) MSGDSC RESP_LEN(1)+DWBRMSGDSC_RC+BI_DEST_UV:ud // Read 1 GRF from SRC_UV
-
- (f0.1) add (1) MSGSRC.1:d MSGSRC.1:d 8:w // Add vertical offset 8 for bot MB in MBAFF mode
-
-ILDB_LABEL(ELSE_Y_2x8T):
- else (1) ILDB_LABEL(ENDIF_Y_2x8T)
-
- // Field picture
- (f0.1) mov (1) MSGDSC RESP_LEN(1)+DWBRMSGDSC_RC_BF+BI_DEST_UV:ud // Read 1 GRF from SRC_Y bottom field
- (-f0.1) mov (1) MSGDSC RESP_LEN(1)+DWBRMSGDSC_RC_TF+BI_DEST_UV:ud // Read 1 GRF from SRC_Y top field
-
- endif
-ILDB_LABEL(ENDIF_Y_2x8T):
-
- // Read 1 GRF from DEST surface as the above MB has been deblocked.
-// send (8) BUF_D(0)<1> MSGHDRU MSGSRC<8;8,1>:ud MSGDSC
- send (8) LEFT_TEMP_D(0)<1> MSGHDRU MSGSRC<8;8,1>:ud DAPREAD MSGDSC
-
-#endif
-
diff --git a/src/shaders/h264/ildb/load_Cur_Y_16x16T.asm b/src/shaders/h264/ildb/load_Cur_Y_16x16T.asm
deleted file mode 100644
index 9b4f57d..0000000
--- a/src/shaders/h264/ildb/load_Cur_Y_16x16T.asm
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: load_Y_16x16T.asm
-//
-// Load and transpose Y 16x16 block
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region in :ud
-// SRC_YD: SRC_YD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 8 GRFs
-//
-// Binding table index:
-// BI_SRC_Y: Binding table index of Y surface
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD1:w
-#endif
- // Read Y
-
-#if defined(_PROGRESSIVE)
- mov (2) MSGSRC.0<1>:ud ORIX_CUR<2;2,1>:w { NoDDClr } // Block origin
- mov (1) MSGSRC.2<1>:ud 0x000F000F:ud { NoDDChk } // Block width and height (16x16)
-
- //send (8) SRC_YD(0)<1> MSGHDRC MSGSRC<8;8,1>:ud DWBRMSGDSC_SMPLR+0x00080000+BI_SRC_Y
- mov (1) MSGDSC RESP_LEN(8)+DWBRMSGDSC_SC+BI_SRC_Y:ud
-#endif
-
-
-#if defined(_FIELD)
-// cmp.z.f0.0 (1) NULLREGW PicTypeC:w 0:w // Get pic type flag
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w // Get bottom field flag
- // they are used later in this file
-
- mov (2) MSGSRC.0<1>:ud ORIX_CUR<2;2,1>:w { NoDDClr } // Block origin
- mov (1) MSGSRC.2<1>:ud 0x000F000F:ud { NoDDChk } // Block width and height (16x16)
-
- // Set message descriptor
- // Frame picture
-// (f0.0) mov (1) MSGDSC RESP_LEN(8)+DWBRMSGDSC_SC+BI_SRC_Y:ud // Read 8 GRFs from SRC_Y
-// (f0.0) jmpi load_Y_16x16T
-
- // Non frame picture
- (f0.1) mov (1) MSGDSC RESP_LEN(8)+DWBRMSGDSC_SC_BF+BI_SRC_Y:ud // Read 8 GRFs from SRC_Y bottom field
- (-f0.1) mov (1) MSGDSC RESP_LEN(8)+DWBRMSGDSC_SC_TF+BI_SRC_Y:ud // Read 8 GRFs from SRC_Y top field
-
-//load_Y_16x16T:
-
-#endif
-
- send (8) SRC_YD(0)<1> MSGHDRC MSGSRC<8;8,1>:ud DAPREAD MSGDSC
-
-// #include "Transpose_Cur_Y_16x16.asm"
-
-// End of load_Y_16x16T
diff --git a/src/shaders/h264/ildb/load_Cur_Y_16x16T_Mbaff.asm b/src/shaders/h264/ildb/load_Cur_Y_16x16T_Mbaff.asm
deleted file mode 100644
index b005d49..0000000
--- a/src/shaders/h264/ildb/load_Cur_Y_16x16T_Mbaff.asm
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: load_Y_16x16T.asm
-//
-// Load and transpose Y 16x16 block
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region in :ud
-// SRC_YD: SRC_YD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 8 GRFs
-//
-// Binding table index:
-// BI_SRC_Y: Binding table index of Y surface
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD1:w
-#endif
-
- // FieldModeCurrentMbFlag determines how to access left MB
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FieldModeCurrentMbFlag:w
-
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w // Get bottom field flag
-
- // Read Y
- mov (2) MSGSRC.0<1>:d ORIX_CUR<2;2,1>:w { NoDDClr } // Block origin
- mov (1) MSGSRC.2<1>:ud 0x000F000F:ud { NoDDChk } // Block width and height (16x16)
-
- // Set message descriptor, etc.
-
- (f0.0) if (1) ILDB_LABEL(ELSE_Y_16x16T)
-
- // Frame picture
- mov (1) MSGDSC RESP_LEN(8)+DWBRMSGDSC_SC+BI_SRC_Y:ud // Read 8 GRFs from SRC_Y
-
- (f0.1) add (1) MSGSRC.1:d MSGSRC.1:d 16:w // Add vertical offset 16 for bot MB in MBAFF mode
-
-ILDB_LABEL(ELSE_Y_16x16T):
- else (1) ILDB_LABEL(ENDIF_Y_16x16T)
-
- // Field picture
- (f0.1) mov (1) MSGDSC RESP_LEN(8)+DWBRMSGDSC_SC_BF+BI_SRC_Y:ud // Read 8 GRFs from SRC_Y bottom field
- (-f0.1) mov (1) MSGDSC RESP_LEN(8)+DWBRMSGDSC_SC_TF+BI_SRC_Y:ud // Read 8 GRFs from SRC_Y top field
-
- asr (1) MSGSRC.1:d MSGSRC.1:d 1:w // Reduce y by half in field access mode
-
- endif
-ILDB_LABEL(ENDIF_Y_16x16T):
-
- send (8) SRC_YD(0)<1> MSGHDRY MSGSRC<8;8,1>:ud DAPREAD MSGDSC
-
-// #include "Transpose_Cur_Y_16x16.asm"
-
-// End of load_Y_16x16T
diff --git a/src/shaders/h264/ildb/load_Cur_Y_Right_Most_4x16.asm b/src/shaders/h264/ildb/load_Cur_Y_Right_Most_4x16.asm
deleted file mode 100644
index 418ba1b..0000000
--- a/src/shaders/h264/ildb/load_Cur_Y_Right_Most_4x16.asm
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: load_Cur_Y_Right_Most_4x16.asm
-//
-// Load luma cur MB right most 4x16 into LEFT_TEMP_B
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD0:w
-#endif
-
-
-#if defined(_PROGRESSIVE)
- // Read Y
- add (1) MSGSRC.0<1>:ud ORIX_CUR:w 12:w { NoDDClr } // Block origin, move right 12 bytes
- mov (1) MSGSRC.1<1>:ud ORIY_CUR:w { NoDDClr, NoDDChk } // Block origin
- mov (1) MSGSRC.2<1>:ud 0x000F0003:ud { NoDDChk } // Block width and height (4x16)
- send (8) LEFT_TEMP_D(0)<1> MSGHDRL MSGSRC<8;8,1>:ud DAPREAD RESP_LEN(2)+DWBRMSGDSC_RC+BI_DEST_Y
-#endif
-
-
-#if defined(_FIELD) || defined(_MBAFF)
-
- // FieldModeCurrentMbFlag determines how to access left MB
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FieldModeCurrentMbFlag:w
-
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w // Get bottom field flag
-
- // Read Y
- add (1) MSGSRC.0<1>:ud ORIX_CUR:w 12:w { NoDDClr } // Block origin, move right 12 bytes
- mov (1) MSGSRC.1<1>:ud ORIY_CUR:w { NoDDClr, NoDDChk } // Block origin
- mov (1) MSGSRC.2<1>:ud 0x000F0003:ud { NoDDChk } // Block width and height (4x16)
-
- // Set message descriptor, etc.
-
- (f0.0) if (1) ILDB_LABEL(ELSE_Y_4x16T)
-
- // Frame picture
- mov (1) MSGDSC RESP_LEN(2)+DWBRMSGDSC_RC+BI_DEST_Y:ud // Read 2 GRFs from DEST_Y
-
- (f0.1) add (1) MSGSRC.1:d MSGSRC.1:d 16:w // Add vertical offset 16 for bot MB in MBAFF mode
-
-ILDB_LABEL(ELSE_Y_4x16T):
- else (1) ILDB_LABEL(ENDIF_Y_4x16T)
-
- // Field picture
- (f0.1) mov (1) MSGDSC RESP_LEN(2)+DWBRMSGDSC_RC_BF+BI_DEST_Y:ud // Read 2 GRFs from DEST_Y bottom field
- (-f0.1) mov (1) MSGDSC RESP_LEN(2)+DWBRMSGDSC_RC_TF+BI_DEST_Y:ud // Read 2 GRFs from DEST_Y top field
-
- endif
-ILDB_LABEL(ENDIF_Y_4x16T):
-
-// send (8) BUF_D(0)<1> MSGHDRY MSGSRC<8;8,1>:ud MSGDSC
- send (8) LEFT_TEMP_D(0)<1> MSGHDRL MSGSRC<8;8,1>:ud DAPREAD MSGDSC
-#endif
-
-// Transpose 4x16 to 16x4
-
-// Input received from dport:
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |73 72 71 70 63 62 61 60 53 52 51 50 43 42 41 40 33 32 31 30 23 22 21 20 13 12 11 10 03 02 01 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f3 f2 f1 f0 e3 e2 e1 e0 d3 d2 d1 d0 c3 c2 c1 c0 b3 b2 b1 b0 a3 a2 a1 a0 93 92 91 90 83 82 81 80|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-
-// Output of transpose: <1> <= <32;8,4>
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f1 e1 d1 c1 b1 a1 91 81 71 61 51 41 31 21 11 01 f0 e0 d0 c0 b0 a0 90 80 70 60 50 40 30 20 10 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f3 e3 d3 c3 b3 a3 93 83 73 63 53 43 33 23 13 03 f2 e2 d2 c2 b2 a2 92 82 72 62 52 42 32 22 12 02|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-/*
- // Transpose the data, also occupy 2 GRFs
- mov (16) PREV_MB_YB(0)<1> BUF_B(0, 0)<32;8,4> { NoDDClr }
- mov (16) PREV_MB_YB(0, 16)<1> BUF_B(0, 1)<32;8,4> { NoDDChk }
- mov (16) PREV_MB_YB(1)<1> BUF_B(0, 2)<32;8,4> { NoDDClr }
- mov (16) PREV_MB_YB(1, 16)<1> BUF_B(0, 3)<32;8,4> { NoDDChk }
-*/
-// End of load_Y_4x16T
-
diff --git a/src/shaders/h264/ildb/load_Left_UV_2x8T.asm b/src/shaders/h264/ildb/load_Left_UV_2x8T.asm
deleted file mode 100644
index 6fdedfd..0000000
--- a/src/shaders/h264/ildb/load_Left_UV_2x8T.asm
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module Name: Load_Left_UV_2X8T.Asm
-//
-// Load UV 8X2 Block
-//
-//----------------------------------------------------------------
-// Symbols ceed To be defined before including this module
-//
-// Source Region Is :UB
-// BUF_D: BUF_D Base=Rxx Elementsize=4 Srcregion=Region(8,1) Type=UD
-
-// Binding Table Index:
-// BI_SRC_UV: Binding Table Index Of UV Surface (NV12)
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD0:w
-#endif
-
-#if defined(_PROGRESSIVE)
- // Read U+V
- mov (1) MSGSRC.0:ud ORIX_LEFT:w { NoDDClr } // Block origin
- asr (1) MSGSRC.1:ud ORIY_LEFT:w 1:w { NoDDClr, NoDDChk } // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2:ud 0x00070003:ud { NoDDChk } // NV12 U+V block width and height (4x8)
-
- send (8) LEFT_TEMP_D(0)<1> MSGHDRU MSGSRC<8;8,1>:ud DAPREAD RESP_LEN(1)+DWBRMSGDSC_RC+BI_DEST_UV
-#endif
-
-#if defined(_FIELD) || defined(_MBAFF)
-
- // FieldModeCurrentMbFlag determines how to access left MB
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FieldModeCurrentMbFlag:w
-
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w // Get bottom field flag
-
- // Read U+V
- mov (1) MSGSRC.0:ud ORIX_LEFT:w { NoDDClr } // Block origin
- asr (1) MSGSRC.1:ud ORIY_LEFT:w 1:w { NoDDClr, NoDDChk } // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2:ud 0x00070003:ud { NoDDChk } // NV12 U+V block width and height (4x8)
-
- // Load NV12 U+V
-
- // Set message descriptor
-
- (f0.0) if (1) ILDB_LABEL(ELSE_Y_2x8T)
-
- // Frame picture
- mov (1) MSGDSC RESP_LEN(1)+DWBRMSGDSC_RC+BI_DEST_UV:ud // Read 1 GRF from SRC_UV
-
- (f0.1) add (1) MSGSRC.1:d MSGSRC.1:d 8:w // Add vertical offset 8 for bot MB in MBAFF mode
-
-ILDB_LABEL(ELSE_Y_2x8T):
- else (1) ILDB_LABEL(ENDIF_Y_2x8T)
-
- // Field picture
- (f0.1) mov (1) MSGDSC RESP_LEN(1)+DWBRMSGDSC_RC_BF+BI_DEST_UV:ud // Read 1 GRF from SRC_Y bottom field
- (-f0.1) mov (1) MSGDSC RESP_LEN(1)+DWBRMSGDSC_RC_TF+BI_DEST_UV:ud // Read 1 GRF from SRC_Y top field
-
- endif
-ILDB_LABEL(ENDIF_Y_2x8T):
-
- // Read 1 GRF from DEST surface as the above MB has been deblocked.
-// send (8) BUF_D(0)<1> MSGHDRU MSGSRC<8;8,1>:ud MSGDSC
- send (8) LEFT_TEMP_D(0)<1> MSGHDRU MSGSRC<8;8,1>:ud DAPREAD MSGDSC
-
-#endif
-
-// End of load_Left_UV_2x8T.asm
diff --git a/src/shaders/h264/ildb/load_Left_UV_2x8T_Mbaff.asm b/src/shaders/h264/ildb/load_Left_UV_2x8T_Mbaff.asm
deleted file mode 100644
index c8af1ef..0000000
--- a/src/shaders/h264/ildb/load_Left_UV_2x8T_Mbaff.asm
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module Name: Load_Left_UV_2X8T.Asm
-//
-// Load UV 8X2 Block
-//
-//----------------------------------------------------------------
-// Symbols ceed To be defined before including this module
-//
-// Source Region Is :UB
-// BUF_D: BUF_D Base=Rxx Elementsize=4 Srcregion=Region(8,1) Type=UD
-
-// Binding Table Index:
-// BI_SRC_UV: Binding Table Index Of UV Surface (NV12)
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD0:w
-#endif
-
- // FieldModeCurrentMbFlag determines how to access left MB
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FieldModeCurrentMbFlag:w
-
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w // Get bottom field flag
-
- // Read U+V
- mov (1) MSGSRC.0:ud ORIX_LEFT:w { NoDDClr } // Block origin
- asr (1) MSGSRC.1:ud ORIY_LEFT:w 1:w { NoDDClr, NoDDChk } // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2:ud 0x00070003:ud { NoDDChk } // NV12 U+V block width and height (4x8)
-
- // Load NV12 U+V
-
- // Set message descriptor
-
- (f0.0) if (1) ILDB_LABEL(ELSE_Y_2x8T)
-
- // Frame picture
- mov (1) MSGDSC RESP_LEN(1)+DWBRMSGDSC_RC+BI_DEST_UV:ud // Read 1 GRF from SRC_UV
-
- (f0.1) add (1) MSGSRC.1:d MSGSRC.1:d 8:w // Add vertical offset 8 for bot MB in MBAFF mode
-
-ILDB_LABEL(ELSE_Y_2x8T):
- else (1) ILDB_LABEL(ENDIF_Y_2x8T)
-
- // Field picture
- (f0.1) mov (1) MSGDSC RESP_LEN(1)+DWBRMSGDSC_RC_BF+BI_DEST_UV:ud // Read 1 GRF from SRC_Y bottom field
- (-f0.1) mov (1) MSGDSC RESP_LEN(1)+DWBRMSGDSC_RC_TF+BI_DEST_UV:ud // Read 1 GRF from SRC_Y top field
-
- asr (1) MSGSRC.1:d MSGSRC.1:d 1:w // Reduce y by half in field access mode
-
- endif
-ILDB_LABEL(ENDIF_Y_2x8T):
-
- // Read 1 GRF from DEST surface as the above MB has been deblocked.
-// send (8) BUF_D(0)<1> MSGHDRU MSGSRC<8;8,1>:ud MSGDSC
- send (8) LEFT_TEMP_D(0)<1> MSGHDRU MSGSRC<8;8,1>:ud DAPREAD MSGDSC
-
-
-// Input from dport for transpose:
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |71 71 70 70 61 61 60 60 51 51 50 50 41 41 40 40 31 31 30 30 21 21 20 20 11 11 10 10 01 01 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-//
-// Output of transpose: <1> <=== <16;8,2>:w
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |71 71 61 61 51 51 41 41 31 31 21 21 11 11 01 01 70 70 60 60 50 50 40 40 30 30 20 20 10 10 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-/*
- mov (8) PREV_MB_UW(0,0)<1> BUF_W(0,0)<16;8,2> { NoDDClr }
- mov (8) PREV_MB_UW(0,8)<1> BUF_W(0,1)<16;8,2> { NoDDChk }
-*/
-// End of load_Left_UV_2x8T.asm
diff --git a/src/shaders/h264/ildb/load_Left_Y_4x16T.asm b/src/shaders/h264/ildb/load_Left_Y_4x16T.asm
deleted file mode 100644
index 9e4db20..0000000
--- a/src/shaders/h264/ildb/load_Left_Y_4x16T.asm
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: load_Y_4x16T.asm
-//
-// Load luma left MB 4x16 and transpose 4x16 to 16x4.
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region in :ud
-// PREV_MB_YD: PREV_MB_YD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 2 GRFs
-//
-// Binding table index:
-// BI_SRC_Y: Binding table index of Y surface
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD0:w
-#endif
-
-
-#if defined(_PROGRESSIVE)
- // Read Y
- mov (2) MSGSRC.0<1>:ud ORIX_LEFT<2;2,1>:w { NoDDClr } // Block origin
- mov (1) MSGSRC.2<1>:ud 0x000F0003:ud { NoDDChk } // Block width and height (4x16)
-
-// mov (1) MSGDSC DWBRMSGDSC_RC+0x00020000+BI_DEST_Y:ud // Read 2 GRFs from DEST_Y
- send (8) LEFT_TEMP_D(0)<1> MSGHDRL MSGSRC<8;8,1>:ud DAPREAD RESP_LEN(2)+DWBRMSGDSC_RC+BI_DEST_Y
-#endif
-
-
-#if defined(_FIELD) || defined(_MBAFF)
-
- // FieldModeCurrentMbFlag determines how to access left MB
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FieldModeCurrentMbFlag:w
-
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w // Get bottom field flag
-
- // Read Y
- mov (2) MSGSRC.0<1>:ud ORIX_LEFT<2;2,1>:w { NoDDClr } // Block origin
- mov (1) MSGSRC.2<1>:ud 0x000F0003:ud { NoDDChk } // Block width and height (4x16)
-
- // Set message descriptor, etc.
-
- (f0.0) if (1) ILDB_LABEL(ELSE_Y_4x16T)
-
- // Frame picture
- mov (1) MSGDSC RESP_LEN(2)+DWBRMSGDSC_RC+BI_DEST_Y:ud // Read 2 GRFs from DEST_Y
-
- (f0.1) add (1) MSGSRC.1:d MSGSRC.1:d 16:w // Add vertical offset 16 for bot MB in MBAFF mode
-
-ILDB_LABEL(ELSE_Y_4x16T):
- else (1) ILDB_LABEL(ENDIF_Y_4x16T)
-
- // Field picture
- (f0.1) mov (1) MSGDSC RESP_LEN(2)+DWBRMSGDSC_RC_BF+BI_DEST_Y:ud // Read 2 GRFs from DEST_Y bottom field
- (-f0.1) mov (1) MSGDSC RESP_LEN(2)+DWBRMSGDSC_RC_TF+BI_DEST_Y:ud // Read 2 GRFs from DEST_Y top field
-
- endif
-ILDB_LABEL(ENDIF_Y_4x16T):
-
-// send (8) BUF_D(0)<1> MSGHDRY MSGSRC<8;8,1>:ud MSGDSC
- send (8) LEFT_TEMP_D(0)<1> MSGHDRL MSGSRC<8;8,1>:ud DAPREAD MSGDSC
-#endif
-
-// Transpose 4x16 to 16x4
-
-// Input received from dport:
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |73 72 71 70 63 62 61 60 53 52 51 50 43 42 41 40 33 32 31 30 23 22 21 20 13 12 11 10 03 02 01 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f3 f2 f1 f0 e3 e2 e1 e0 d3 d2 d1 d0 c3 c2 c1 c0 b3 b2 b1 b0 a3 a2 a1 a0 93 92 91 90 83 82 81 80|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-
-// Output of transpose: <1> <= <32;8,4>
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f1 e1 d1 c1 b1 a1 91 81 71 61 51 41 31 21 11 01 f0 e0 d0 c0 b0 a0 90 80 70 60 50 40 30 20 10 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f3 e3 d3 c3 b3 a3 93 83 73 63 53 43 33 23 13 03 f2 e2 d2 c2 b2 a2 92 82 72 62 52 42 32 22 12 02|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-/*
- // Transpose the data, also occupy 2 GRFs
- mov (16) PREV_MB_YB(0)<1> BUF_B(0, 0)<32;8,4> { NoDDClr }
- mov (16) PREV_MB_YB(0, 16)<1> BUF_B(0, 1)<32;8,4> { NoDDChk }
- mov (16) PREV_MB_YB(1)<1> BUF_B(0, 2)<32;8,4> { NoDDClr }
- mov (16) PREV_MB_YB(1, 16)<1> BUF_B(0, 3)<32;8,4> { NoDDChk }
-*/
-// End of load_Y_4x16T
-
diff --git a/src/shaders/h264/ildb/load_Left_Y_4x16T_Mbaff.asm b/src/shaders/h264/ildb/load_Left_Y_4x16T_Mbaff.asm
deleted file mode 100644
index c42c4e4..0000000
--- a/src/shaders/h264/ildb/load_Left_Y_4x16T_Mbaff.asm
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: load_Y_4x16T.asm
-//
-// Load luma left MB 4x16 and transpose 4x16 to 16x4.
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region in :ud
-// PREV_MB_YD: PREV_MB_YD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 2 GRFs
-//
-// Binding table index:
-// BI_SRC_Y: Binding table index of Y surface
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD0:w
-#endif
-
- // FieldModeCurrentMbFlag determines how to access left MB
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FieldModeCurrentMbFlag:w
-
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w // Get bottom field flag
-
- // Read Y
- mov (2) MSGSRC.0<1>:ud ORIX_LEFT<2;2,1>:w { NoDDClr } // Block origin
- mov (1) MSGSRC.2<1>:ud 0x000F0003:ud { NoDDChk } // Block width and height (4x16)
-
- // Set message descriptor, etc.
-
- (f0.0) if (1) ELSE_Y_4x16T
-
- // Frame picture
- mov (1) MSGDSC RESP_LEN(2)+DWBRMSGDSC_RC+BI_DEST_Y:ud // Read 2 GRFs from DEST_Y
-
- (f0.1) add (1) MSGSRC.1:d MSGSRC.1:d 16:w // Add vertical offset 16 for bot MB in MBAFF mode
-
-ELSE_Y_4x16T:
- else (1) ENDIF_Y_4x16T
-
- // Field picture
- (f0.1) mov (1) MSGDSC RESP_LEN(2)+DWBRMSGDSC_RC_BF+BI_DEST_Y:ud // Read 2 GRFs from DEST_Y bottom field
- (-f0.1) mov (1) MSGDSC RESP_LEN(2)+DWBRMSGDSC_RC_TF+BI_DEST_Y:ud // Read 2 GRFs from DEST_Y top field
-
- asr (1) MSGSRC.1:d MSGSRC.1:d 1:w // Reduce y by half in field access mode
-
- endif
-ENDIF_Y_4x16T:
-
-// send (8) BUF_D(0)<1> MSGHDRY MSGSRC<8;8,1>:ud MSGDSC
- send (8) LEFT_TEMP_D(0)<1> MSGHDRL MSGSRC<8;8,1>:ud DAPREAD MSGDSC
-
-
-// Transpose 4x16 to 16x4
-
-// Input received from dport:
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |73 72 71 70 63 62 61 60 53 52 51 50 43 42 41 40 33 32 31 30 23 22 21 20 13 12 11 10 03 02 01 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f3 f2 f1 f0 e3 e2 e1 e0 d3 d2 d1 d0 c3 c2 c1 c0 b3 b2 b1 b0 a3 a2 a1 a0 93 92 91 90 83 82 81 80|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-
-// Output of transpose: <1> <= <32;8,4>
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f1 e1 d1 c1 b1 a1 91 81 71 61 51 41 31 21 11 01 f0 e0 d0 c0 b0 a0 90 80 70 60 50 40 30 20 10 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f3 e3 d3 c3 b3 a3 93 83 73 63 53 43 33 23 13 03 f2 e2 d2 c2 b2 a2 92 82 72 62 52 42 32 22 12 02|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-/*
- // Transpose the data, also occupy 2 GRFs
- mov (16) PREV_MB_YB(0)<1> BUF_B(0, 0)<32;8,4> { NoDDClr }
- mov (16) PREV_MB_YB(0, 16)<1> BUF_B(0, 1)<32;8,4> { NoDDChk }
- mov (16) PREV_MB_YB(1)<1> BUF_B(0, 2)<32;8,4> { NoDDClr }
- mov (16) PREV_MB_YB(1, 16)<1> BUF_B(0, 3)<32;8,4> { NoDDChk }
-*/
-// End of load_Y_4x16T
diff --git a/src/shaders/h264/ildb/load_Top_UV_8x2.asm b/src/shaders/h264/ildb/load_Top_UV_8x2.asm
deleted file mode 100644
index 1d51e9f..0000000
--- a/src/shaders/h264/ildb/load_Top_UV_8x2.asm
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module Name: Load_Top_UV_8X2.Asm
-//
-// Load UV 8X2 Block
-//
-//----------------------------------------------------------------
-// Symbols ceed To be defined before including this module
-//
-// Source Region Is :UB
-// BUF_D: BUF_D Base=Rxx Elementsize=4 Srcregion=Region(8,1) Type=UD
-
-// Binding Table Index:
-// BI_SRC_UV: Binding Table Index Of UV Surface (NV12)
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD2:w
-#endif
-
-#if defined(_PROGRESSIVE)
- // Read U+V
- mov (1) MSGSRC.0:ud ORIX_TOP:w { NoDDClr } // Block origin
- asr (1) MSGSRC.1:ud ORIY_TOP:w 1:w { NoDDClr, NoDDChk } // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2:ud 0x0001000F:ud { NoDDChk } // NV12 U+V block width and height (16x2)
-
- // Read 1 GRF from DEST surface as the above MB has been deblocked.
- //send (8) TOP_MB_UD(0)<1> MSGHDRU MSGSRC<8;8,1>:ud RESP_LEN(1)+DWBRMSGDSC_RC+BI_DEST_UV
- mov (1) MSGDSC RESP_LEN(1)+DWBRMSGDSC_RC+BI_DEST_UV:ud
-#endif
-
-#if defined(_FIELD)
-
-// cmp.z.f0.0 (1) NULLREGW PicTypeC:w 0:w // Get pic type flag
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w // Get bottom field flag
- // They are used later in this file
-
- // Read U+V
- mov (1) MSGSRC.0:ud ORIX_TOP:w { NoDDClr } // Block origin
- asr (1) MSGSRC.1:ud ORIY_TOP:w 1:w { NoDDClr, NoDDChk } // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2:ud 0x0001000F:ud { NoDDChk } // NV12 U+V block width and height (16x2)
-
- // Load NV12 U+V
-
- // Set message descriptor
- // Frame picture
-// (f0.0) mov (1) MSGDSC DWBRMSGDSC_RC+0x00010000+BI_DEST_UV:ud // Read 1 GRF from SRC_UV
-// (f0.0) jmpi Load_Top_UV_8x2
-
- // Field picture
- (f0.1) mov (1) MSGDSC RESP_LEN(1)+DWBRMSGDSC_RC_BF+BI_DEST_UV:ud // Read 1 GRF from SRC_Y bottom field
- (-f0.1) mov (1) MSGDSC RESP_LEN(1)+DWBRMSGDSC_RC_TF+BI_DEST_UV:ud // Read 1 GRF from SRC_Y top field
-
-//Load_Top_UV_8x2:
-
- // Read 1 GRF from DEST surface as the above MB has been deblocked.
-// send (8) PREV_MB_UD(0)<1> MSGHDRU MSGSRC<8;8,1>:ud MSGDSC
-
-#endif
-
- send (8) TOP_MB_UD(0)<1> MSGHDRU MSGSRC<8;8,1>:ud DAPREAD MSGDSC
-
-// End of load_Top_UV_8x2.asm
diff --git a/src/shaders/h264/ildb/load_Top_UV_8x2_Mbaff.asm b/src/shaders/h264/ildb/load_Top_UV_8x2_Mbaff.asm
deleted file mode 100644
index 0171cc9..0000000
--- a/src/shaders/h264/ildb/load_Top_UV_8x2_Mbaff.asm
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module Name: Load_Top_UV_8X2.Asm
-//
-// Load UV 8X2 Block
-//
-//----------------------------------------------------------------
-// Symbols ceed To be defined before including this module
-//
-// Source Region Is :UB
-// BUF_D: BUF_D Base=Rxx Elementsize=4 Srcregion=Region(8,1) Type=UD
-
-// Binding Table Index:
-// BI_SRC_UV: Binding Table Index Of UV Surface (NV12)
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD2:w
-#endif
-
- // FieldModeCurrentMbFlag determines how to access above MB
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FieldModeCurrentMbFlag:w
-
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w
-
- // Read U+V
- mov (1) MSGSRC.0:ud ORIX_TOP:w { NoDDClr } // Block origin
- asr (1) MSGSRC.1:d ORIY_TOP:w 1:w { NoDDClr, NoDDChk } // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2:ud 0x0001000F:ud { NoDDChk } // NV12 U+V block width and height (16x2)
-
- // Load NV12 U+V
-
- // Set message descriptor
-
- (f0.0) if (1) ELSE_UV_8X2
-
- // Frame picture
- mov (1) MSGDSC RESP_LEN(1)+DWBRMSGDSC_RC+BI_DEST_UV:ud // Read 1 GRF from SRC_UV
-
- // Add vertical offset 8 for bot MB in MBAFF mode
- (f0.1) add (1) MSGSRC.1:d MSGSRC.1:d 8:w
-
- // Dual field mode setup
- and.z.f0.1 (1) NULLREGW DualFieldMode:w 1:w
- (f0.1) jmpi NOT_DUAL_FIELD_UV
-
- add (1) MSGSRC.1:d MSGSRC.1:d -2:w { NoDDClr } // Load 4 lines in stead of 2
- mov (1) MSGSRC.2:ud 0x0003000F:ud { NoDDChk } // New block width and height (16x8)
-
- add (1) MSGDSC MSGDSC RESP_LEN(1):ud // 1 more GRF to receive
-
-NOT_DUAL_FIELD_UV:
-
-ELSE_UV_8X2:
- else (1) ENDIF_UV_8X2
-
- // Field picture
- asr (1) MSGSRC.1:d ORIY_CUR:w 2:w // asr 1: NV12 U+V block origin y = half of Y comp
- // asr 1: Reduce y by half in field access mode
-
- (f0.1) mov (1) MSGDSC RESP_LEN(1)+DWBRMSGDSC_RC_BF+BI_DEST_UV:ud // Read 1 GRF from SRC_Y bottom field
- (-f0.1) mov (1) MSGDSC RESP_LEN(1)+DWBRMSGDSC_RC_TF+BI_DEST_UV:ud // Read 1 GRF from SRC_Y top field
-
- add (1) MSGSRC.1:d MSGSRC.1:d -2:w // for last 2 rows of above MB
-
- endif
-ENDIF_UV_8X2:
-
- // Read 1 GRF from DEST surface as the above MB has been deblocked.
- send (8) PREV_MB_UD(0)<1> MSGHDRU MSGSRC<8;8,1>:ud DAPREAD MSGDSC
-
-// End of load_Top_UV_8x2.asm
diff --git a/src/shaders/h264/ildb/load_Top_Y_16x4.asm b/src/shaders/h264/ildb/load_Top_Y_16x4.asm
deleted file mode 100644
index dad750e..0000000
--- a/src/shaders/h264/ildb/load_Top_Y_16x4.asm
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module Name: Load_Y_16X4.asm
-//
-// Load Y 16X4 Block to PREV_MB_YD
-//
-//----------------------------------------------------------------
-// Symbols Need To Be Defined Before Including This Module
-//
-// Source Region In :Ud
-// Src_YD: Src_Yd Base=Rxx Elementsize=4 Srcregion=Region(8,1) Type=Ud // 3 Grfs (2 For Y, 1 For U+V)
-//
-// Source Region Is :Ub. The Same Region As :Ud Region
-// Src_YB: Src_Yb Base=Rxx Elementsize=1 Srcregion=Region(16,1) Type=Ub // 2 Grfs
-//
-// Binding Table Index:
-// Bi_Src_Y: Binding Table Index Of Y Surface
-//
-// Temp Buffer:
-// Buf_D: Buf_D Base=Rxx Elementsize=4 Srcregion=Region(8,1) Type=Ud
-// Buf_B: Buf_B Base=Rxx Elementsize=1 Srcregion=Region(16,1) Type=Ub
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD2:w
-#endif
-
-#if defined(_PROGRESSIVE)
- // Read Y
- mov (2) MSGSRC.0<1>:ud ORIX_TOP<2;2,1>:w { NoDDClr } // Block origin
- mov (1) MSGSRC.2<1>:ud 0x0003000F:ud { NoDDChk } // Block width and height (16x4)
-
- mov (1) MSGDSC RESP_LEN(2)+DWBRMSGDSC_RC+BI_DEST_Y:ud // Read 2 GRFs from SRC_Y
-#endif
-
-#if defined(_FIELD)
-
-// cmp.z.f0.0 (1) NULLREGW PicTypeC:w 0:w // Get pic type flag
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w // Get bottom field flag
- // they are used later in this file
-
- mov (2) MSGSRC.0<1>:ud ORIX_TOP<2;2,1>:w { NoDDClr } // Block origin
- mov (1) MSGSRC.2<1>:ud 0x0003000F:ud { NoDDChk } // Block width and height (16x4)
-
- // Set message descriptor
-
- // Frame picture
-// (f0.0) mov (1) MSGDSC DWBRMSGDSC_RC+0x00020000+BI_DEST_Y:ud // Read 2 GRFs from SRC_Y
-// (f0.0) jmpi load_Y_16x4
-
- // Field picture
- (f0.1) mov (1) MSGDSC RESP_LEN(2)+DWBRMSGDSC_RC_BF+BI_DEST_Y:ud // Read 2 GRFs from SRC_Y bottom field
- (-f0.1) mov (1) MSGDSC RESP_LEN(2)+DWBRMSGDSC_RC_TF+BI_DEST_Y:ud // Read 2 GRFs from SRC_Y top field
-
-//load_Y_16x4:
- // Read 2 GRFs from DEST surface, as the above MB has been deblocked
-// send (8) PREV_MB_YD(0)<1> MSGHDRY MSGSRC<8;8,1>:ud MSGDSC
-
-#endif
-
- send (8) TOP_MB_YD(0)<1> MSGHDRT MSGSRC<8;8,1>:ud DAPREAD MSGDSC
-
-// End of load_Y_16x4.asm
diff --git a/src/shaders/h264/ildb/load_Top_Y_16x4_Mbaff.asm b/src/shaders/h264/ildb/load_Top_Y_16x4_Mbaff.asm
deleted file mode 100644
index 7a747ae..0000000
--- a/src/shaders/h264/ildb/load_Top_Y_16x4_Mbaff.asm
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module Name: Load_Y_16X4.asm
-//
-// Load Y 16X4 Block to PREV_MB_YD
-//
-//----------------------------------------------------------------
-// Symbols Need To Be Defined Before Including This Module
-//
-// Source Region In :Ud
-// Src_YD: Src_Yd Base=Rxx Elementsize=4 Srcregion=Region(8,1) Type=Ud // 3 Grfs (2 For Y, 1 For U+V)
-//
-// Source Region Is :Ub. The Same Region As :Ud Region
-// Src_YB: Src_Yb Base=Rxx Elementsize=1 Srcregion=Region(16,1) Type=Ub // 2 Grfs
-//
-// Binding Table Index:
-// Bi_Src_Y: Binding Table Index Of Y Surface
-//
-// Temp Buffer:
-// Buf_D: Buf_D Base=Rxx Elementsize=4 Srcregion=Region(8,1) Type=Ud
-// Buf_B: Buf_B Base=Rxx Elementsize=1 Srcregion=Region(16,1) Type=Ub
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD2:w
-#endif
- // FieldModeCurrentMbFlag determines how to access above MB
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FieldModeCurrentMbFlag:w
-
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w
-
- // Read Y
- mov (2) MSGSRC.0<1>:ud ORIX_TOP<2;2,1>:w { NoDDClr } // Block origin
- mov (1) MSGSRC.2<1>:ud 0x0003000F:ud { NoDDChk } // Block width and height (16x4)
-
- // Set message descriptor
-
- (f0.0) if (1) ELSE_Y_16x4
-
- // Frame picture
- mov (1) MSGDSC RESP_LEN(2)+DWBRMSGDSC_RC+BI_DEST_Y:ud // Read 2 GRFs from SRC_Y
-
- // Add vertical offset 16 for bot MB in MBAFF mode
- (f0.1) add (1) MSGSRC.1:d MSGSRC.1:d 16:w
-
- // Dual field mode setup
- and.z.f0.1 (1) NULLREGW DualFieldMode:w 1:w
- (f0.1) jmpi NOT_DUAL_FIELD
-
- add (1) MSGSRC.1:d MSGSRC.1:d -4:w { NoDDClr } // Load 8 lines in above MB
- mov (1) MSGSRC.2:ud 0x0007000F:ud { NoDDChk } // New block width and height (16x8)
-
- add (1) MSGDSC MSGDSC RESP_LEN(2):ud // 2 more GRF to receive
-
-NOT_DUAL_FIELD:
-
-ELSE_Y_16x4:
- else (1) ENDIF_Y_16x4
-
- asr (1) MSGSRC.1:d ORIY_CUR:w 1:w // Reduce y by half in field access mode
-
- // Field picture
- (f0.1) mov (1) MSGDSC RESP_LEN(2)+DWBRMSGDSC_RC_BF+BI_DEST_Y:ud // Read 2 GRFs from SRC_Y bottom field
- (-f0.1) mov (1) MSGDSC RESP_LEN(2)+DWBRMSGDSC_RC_TF+BI_DEST_Y:ud // Read 2 GRFs from SRC_Y top field
-
- add (1) MSGSRC.1:d MSGSRC.1:d -4:w // for last 4 rows of above MB
-
- endif
-ENDIF_Y_16x4:
-
- // Read 2 GRFs from DEST surface, as the above MB has been deblocked
- send (8) PREV_MB_YD(0)<1> MSGHDRY MSGSRC<8;8,1>:ud DAPREAD MSGDSC
-
-// End of load_Y_16x4.asm
diff --git a/src/shaders/h264/ildb/saveNV12_16x16.asm b/src/shaders/h264/ildb/saveNV12_16x16.asm
deleted file mode 100644
index 6a7425a..0000000
--- a/src/shaders/h264/ildb/saveNV12_16x16.asm
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: saveNV12_16x16.asm
-//
-// Save a NV12 16x16 block
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region in :ud
-// SRC_YD: SRC_YD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 8 GRFs
-// SRC_UD: SRC_UD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 4 GRF
-//
-// Binding table index:
-// BI_DEST_Y: Binding table index of Y surface
-// BI_DEST_UV: Binding table index of UV surface (NV12)
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD4:w
-#endif
-
-
- mov (2) MSGSRC.0<1>:ud ORIX_CUR<2;2,1>:w // Block origin
- mov (1) MSGSRC.2<1>:ud 0x000F000F:ud // Block width and height (16x16)
-
- // Pack Y
- mov (16) MSGPAYLOADD(0)<1> SRC_YD(0) // Compressed inst
- mov (16) MSGPAYLOADD(2)<1> SRC_YD(2)
- mov (16) MSGPAYLOADD(4)<1> SRC_YD(4)
- mov (16) MSGPAYLOADD(6)<1> SRC_YD(6)
-
- send (8) NULLREG MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSG_LEN(8)+DWBWMSGDSC+BI_DEST_Y // Write 8 GRFs
-
-
-
- asr (1) MSGSRC.1:ud MSGSRC.1:ud 1:w // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2<1>:ud 0x0007000F:ud // NV12 U+V block width and height (16x8)
-
- mov (16) MSGPAYLOADD(0)<1> SRC_UD(0) // Compressed inst
- mov (16) MSGPAYLOADD(2)<1> SRC_UD(2)
-
- send (8) NULLREG MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSG_LEN(4)+DWBWMSGDSC+BI_DEST_UV // Write 4 GRFs
-
-
-// End of saveNV12_16x16.asm
diff --git a/src/shaders/h264/ildb/saveNV12_16x4.asm b/src/shaders/h264/ildb/saveNV12_16x4.asm
deleted file mode 100644
index 7c9785a..0000000
--- a/src/shaders/h264/ildb/saveNV12_16x4.asm
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: saveNV12_16x4.asm
-//
-// Save a NV12 16x4 block
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region in :ud
-// SRC_YD: SRC_YD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 2 GRFs
-// SRC_UD: SRC_UD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 1 GRF
-//
-// Binding table index:
-// BI_DEST_Y: Binding table index of Y surface
-// BI_DEST_UV: Binding table index of UV surface (NV12)
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD5:w
-#endif
-
- mov (2) MSGSRC.0<1>:ud ORIX_TOP<2;2,1>:w // Block origin
- mov (1) MSGSRC.2<1>:ud 0x0003000F:ud // Block width and height (16x4)
-
- // Pack Y
- mov (16) MSGPAYLOADD(0)<1> SRC_YD(0) // Compressed inst
-
- send (8) NULLREG MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSG_LEN(2)+DWBWMSGDSC+BI_DEST_Y // Write 2 GRFs
-
-
- asr (1) MSGSRC.1:ud MSGSRC.1:ud 1:w // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2<1>:ud 0x0001000F:ud // NV12 U+V block width and height (16x2)
-
- // Pack U and V
-// mov (16) MSGPAYLOADB(0,0)<2> SRC_UB(0,0)
-// mov (16) MSGPAYLOADB(0,1)<2> SRC_VB(0,0)
-
- mov (8) MSGPAYLOADD(0,0)<1> SRC_UD(0)
-
- send (8) NULLREG MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSG_LEN(1)+DWBWMSGDSC+BI_DEST_UV // Write 1 GRF
-
-// End of saveNV12_16x4.asm
diff --git a/src/shaders/h264/ildb/saveNV12_16x4T.asm b/src/shaders/h264/ildb/saveNV12_16x4T.asm
deleted file mode 100644
index bcca357..0000000
--- a/src/shaders/h264/ildb/saveNV12_16x4T.asm
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: saveNV12_16x4T.asm
-//
-// Transpose 16x4 to 4x16 YNV12 data and write to memory
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Left MB region:
-// PREV_MB_YB: Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-// PREV_MB_UW: Base=ryy ElementSize=2 SrcRegion=REGION(8,1) Type=uw
-
-// Binding table index:
-// BI_SRC_Y: Binding table index of Y surface
-// BI_SRC_UV: Binding table index of UV surface (NV12)
-//
-// Temp buffer:
-// BUF_B: BUF_B Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-// BUF_W: BUF_W Base=rxx ElementSize=1 SrcRegion=REGION(8,1) Type=uw
-//
-//
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD6:w
-#endif
-
- mov (2) MSGSRC.0<1>:ud ORIX_LEFT<2;2,1>:w // Block origin
- mov (1) MSGSRC.2<1>:ud 0x000F0003:ud // 4x16
-
-// Transpose Y, save them to MRFs
-
-// 16x4 Y src in GRF (each pix is specified as yx)
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f1 e1 d1 c1 b1 a1 91 81 71 61 51 41 31 21 11 01 f0 e0 d0 c0 b0 a0 90 80 70 60 50 40 30 20 10 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f3 e3 d3 c3 b3 a3 93 83 73 63 53 43 33 23 13 03 f2 e2 d2 c2 b2 a2 92 82 72 62 52 42 32 22 12 02|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-//
-// First step (16) <1> <=== <16;4,1>
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |73 63 53 43 72 62 52 42 71 61 51 41 70 60 50 40 33 23 13 03 32 22 12 02 31 21 11 01 30 20 10 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f3 e3 d3 c3 f2 e2 d2 c2 f1 e1 d1 c1 f0 e0 d0 c0 b3 a3 93 83 b2 a2 92 82 b1 a1 91 81 b0 a0 90 80|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-
- // The first step
- mov (16) BUF_B(0,0)<1> PREV_MB_YB(0,0)<16;4,1>
- mov (16) BUF_B(0,16)<1> PREV_MB_YB(0,4)<16;4,1>
- mov (16) BUF_B(1,0)<1> PREV_MB_YB(0,8)<16;4,1>
- mov (16) BUF_B(1,16)<1> PREV_MB_YB(0,12)<16;4,1>
-
-//
-// Second step (16) <1> <=== <1;4,4>
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |73 72 71 70 63 62 61 60 53 52 51 50 43 42 41 40 33 32 31 30 23 22 21 20 13 12 11 10 03 02 01 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f3 f2 f1 f0 e3 e2 e1 e0 d3 d2 d1 d0 c3 c2 c1 c0 b3 b2 b1 b0 a3 a2 a1 a0 93 92 91 90 83 82 81 80|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-//
- // The second step
-// mov (16) MSGPAYLOADB(0,0)<1> BUF_B(0,0)<32;8,4> // Read 2 rows, write 1 row
-// mov (16) MSGPAYLOADB(0,16)<1> BUF_B(0,1)<32;8,4>
-// mov (16) MSGPAYLOADB(1,0)<1> BUF_B(0,2)<32;8,4>
-// mov (16) MSGPAYLOADB(1,16)<1> BUF_B(0,3)<32;8,4>
-
- mov (16) MSGPAYLOADB(0,0)<1> BUF_B(0,0)<1;4,4>
- mov (16) MSGPAYLOADB(0,16)<1> BUF_B(0,16)<1;4,4>
- mov (16) MSGPAYLOADB(1,0)<1> BUF_B(1,0)<1;4,4>
- mov (16) MSGPAYLOADB(1,16)<1> BUF_B(1,16)<1;4,4>
-
-// Transposed Y in 4x16 is ready for writting to dataport.
-//
- send (8) NULLREG MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSG_LEN(2)+DWBWMSGDSC+BI_DEST_Y // Write 2 GRFs
-
-
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////
-
- // Transpose U/V, save them to MRFs in NV12 format
- asr (1) MSGSRC.1:ud MSGSRC.1:ud 1:w // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2<1>:ud 0x00070003:ud // NV12 U+V block width and height (4x8)
-
-
-// 16x2 UV src in GRF (each pix is specified as yx)
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |71 71 61 61 51 51 41 41 31 31 21 21 11 11 01 01 70 70 60 60 50 50 40 40 30 30 20 20 10 10 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-//
-// First step (8) <1> <=== <8;4,1>:w
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |71 71 61 61 51 51 41 41 70 70 60 60 50 50 40 40 31 31 21 21 11 11 01 01 30 30 20 20 10 10 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
- mov (8) BUF_W(0,0)<1> PREV_MB_UW(0,0)<8;4,1>
- mov (8) BUF_W(0,8)<1> PREV_MB_UW(0,4)<8;4,1>
-
-// Second step (8) <1> <=== <1;2,4>
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |71 71 70 70 61 61 60 60 51 51 50 50 41 41 40 40 31 31 30 30 21 21 20 20 11 11 10 10 01 01 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
- mov (8) MSGPAYLOADW(0,0)<1> BUF_W(0,0)<1;2,4>
- mov (8) MSGPAYLOADW(0,8)<1> BUF_W(0,8)<1;2,4>
-
-// Transposed U+V in NV12 in 4x8 is ready for writting to dataport.
-
- send (8) NULLREG MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSG_LEN(1)+DWBWMSGDSC+BI_DEST_UV // Write 1 GRF
-
-
diff --git a/src/shaders/h264/ildb/save_Cur_UV_8x8.asm b/src/shaders/h264/ildb/save_Cur_UV_8x8.asm
deleted file mode 100644
index a4bc922..0000000
--- a/src/shaders/h264/ildb/save_Cur_UV_8x8.asm
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: save_Cur_UV_8x8.asm
-//
-// Save UV 8x8 block (8x8U + 8x8V in NV12)
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region in :ud
-// SRC_UD: SRC_UD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 4 GRF
-//
-// Binding table index:
-// BI_DEST_UV: Binding table index of UV surface (NV12)
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD4:w
-#endif
-
-#if defined(_FIELD)
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w // Get bottom field flag
-#endif
-
- mov (1) MSGSRC.0:ud ORIX_CUR:w { NoDDClr } // Block origin
- asr (1) MSGSRC.1:ud ORIY_CUR:w 1:w { NoDDClr, NoDDChk } // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2:ud 0x0007000F:ud { NoDDChk } // NV12 U+V block width and height (16x8)
-
- mov (16) MSGPAYLOADD(0)<1> SRC_UD(0) // Compressed inst
- mov (16) MSGPAYLOADD(2)<1> SRC_UD(2)
-
-#if defined(_PROGRESSIVE)
- mov (1) MSGDSC MSG_LEN(4)+DWBWMSGDSC+BI_DEST_UV:ud
-// send (8) NULLREG MSGHDR MSGSRC<8;8,1>:ud DWBWMSGDSC+0x00400000+BI_DEST_UV
-#endif
-
-#if defined(_FIELD)
- // Field picture
- (f0.1) mov (1) MSGDSC MSG_LEN(4)+DWBWMSGDSC+ENMSGDSCBF+BI_DEST_UV:ud // Write 4 GRFs to DEST_UV bottom field
- (-f0.1) mov (1) MSGDSC MSG_LEN(4)+DWBWMSGDSC+ENMSGDSCTF+BI_DEST_UV:ud // Write 4 GRFs to DEST_UV top field
-
-#endif
-
- send (8) null:ud MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSGDSC
-
-// End of save_Cur_UV_8x8.asm
diff --git a/src/shaders/h264/ildb/save_Cur_UV_8x8_Mbaff.asm b/src/shaders/h264/ildb/save_Cur_UV_8x8_Mbaff.asm
deleted file mode 100644
index 8b5848b..0000000
--- a/src/shaders/h264/ildb/save_Cur_UV_8x8_Mbaff.asm
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: save_Cur_UV_8x8.asm
-//
-// Save UV 8x8 block (8x8U + 8x8V in NV12)
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region in :ud
-// SRC_UD: SRC_UD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 4 GRF
-//
-// Binding table index:
-// BI_DEST_UV: Binding table index of UV surface (NV12)
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD4:w
-#endif
-
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FieldModeCurrentMbFlag:w
-
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w
-
- mov (1) MSGSRC.0:ud ORIX_CUR:w { NoDDClr } // Block origin
- asr (1) MSGSRC.1:ud ORIY_CUR:w 1:w { NoDDClr, NoDDChk } // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2:ud 0x0007000F:ud { NoDDChk } // NV12 U+V block width and height (16x8)
-
- mov (16) MSGPAYLOADD(0)<1> SRC_UD(0) // Compressed inst
- mov (16) MSGPAYLOADD(2)<1> SRC_UD(2)
-
- // Set message descriptor
-
- (f0.0) if (1) ELSE_UV_8X8
-
- // Frame picture
- mov (1) MSGDSC MSG_LEN(4)+DWBWMSGDSC+BI_DEST_UV:ud // Write 4 GRFs to DEST_UV
-
- (f0.1) add (1) MSGSRC.1:d MSGSRC.1:d 8:w // Add vertical offset 8 for bot MB in MBAFF mode
-
-ELSE_UV_8X8:
- else (1) ENDIF_UV_8X8
-
- // Field picture
- (f0.1) mov (1) MSGDSC MSG_LEN(4)+DWBWMSGDSC+ENMSGDSCBF+BI_DEST_UV:ud // Write 4 GRFs to DEST_UV bottom field
- (-f0.1) mov (1) MSGDSC MSG_LEN(4)+DWBWMSGDSC+ENMSGDSCTF+BI_DEST_UV:ud // Write 4 GRFs to DEST_UV top field
-
- asr (1) MSGSRC.1:d MSGSRC.1:d 1:w // Reduce y by half in field access mode
-
- endif
-ENDIF_UV_8X8:
-
- send (8) null:ud MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSGDSC
-
-// End of save_Cur_UV_8x8.asm
diff --git a/src/shaders/h264/ildb/save_Cur_Y_16x16.asm b/src/shaders/h264/ildb/save_Cur_Y_16x16.asm
deleted file mode 100644
index 307152c..0000000
--- a/src/shaders/h264/ildb/save_Cur_Y_16x16.asm
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: save_Cur_Y_16x16.asm
-//
-// Save a Y 16x16 block
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region in :ud
-// SRC_YD: SRC_YD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 8 GRFs
-//
-// Binding table index:
-// BI_DEST_Y: Binding table index of Y surface
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD4:w
-#endif
-
-#if defined(_FIELD)
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w // Get bottom field flag
-#endif
-
- mov (2) MSGSRC.0<1>:ud ORIX_CUR<2;2,1>:w { NoDDClr } // Block origin
- mov (1) MSGSRC.2<1>:ud 0x000F000F:ud { NoDDChk } // Block width and height (16x16)
-
- // Pack Y
- mov (16) MSGPAYLOADD(0)<1> SRC_YD(0) // Compressed inst
- mov (16) MSGPAYLOADD(2)<1> SRC_YD(2)
- mov (16) MSGPAYLOADD(4)<1> SRC_YD(4)
- mov (16) MSGPAYLOADD(6)<1> SRC_YD(6)
-
-
-#if defined(_PROGRESSIVE)
- mov (1) MSGDSC MSG_LEN(8)+DWBWMSGDSC+BI_DEST_Y:ud
-// send (8) NULLREG MSGHDR MSGSRC<8;8,1>:ud DWBWMSGDSC+0x00800000+BI_DEST_Y
-#endif
-
-#if defined(_FIELD)
- // Field picture
- (f0.1) mov (1) MSGDSC MSG_LEN(8)+DWBWMSGDSC+ENMSGDSCBF+BI_DEST_Y:ud // Write 8 GRFs to DEST_Y bottom field
- (-f0.1) mov (1) MSGDSC MSG_LEN(8)+DWBWMSGDSC+ENMSGDSCTF+BI_DEST_Y:ud // Write 8 GRFs to DEST_Y top field
-
-#endif
-
- send (8) null:ud MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSGDSC
-
-// End of save_Cur_Y_16x16.asm
diff --git a/src/shaders/h264/ildb/save_Cur_Y_16x16_Mbaff.asm b/src/shaders/h264/ildb/save_Cur_Y_16x16_Mbaff.asm
deleted file mode 100644
index 81d4505..0000000
--- a/src/shaders/h264/ildb/save_Cur_Y_16x16_Mbaff.asm
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: save_Cur_Y_16x16.asm
-//
-// Save a Y 16x16 block
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region in :ud
-// SRC_YD: SRC_YD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 8 GRFs
-//
-// Binding table index:
-// BI_DEST_Y: Binding table index of Y surface
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD4:w
-#endif
-
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FieldModeCurrentMbFlag:w
-
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w
-
- mov (2) MSGSRC.0<1>:ud ORIX_CUR<2;2,1>:w { NoDDClr } // Block origin
- mov (1) MSGSRC.2<1>:ud 0x000F000F:ud { NoDDChk } // Block width and height (16x16 or 12x16)
-
- // Pack Y
- mov (16) MSGPAYLOADD(0)<1> SRC_YD(0) // Compressed inst
- mov (16) MSGPAYLOADD(2)<1> SRC_YD(2)
- mov (16) MSGPAYLOADD(4)<1> SRC_YD(4)
- mov (16) MSGPAYLOADD(6)<1> SRC_YD(6)
-
- // Set message descriptor
-
- (f0.0) if (1) ELSE_Y_16x16
-
- // Frame picture
- mov (1) MSGDSC MSG_LEN(8)+DWBWMSGDSC+BI_DEST_Y:ud // Write 8 GRFs to DEST_Y
-
- (f0.1) add (1) MSGSRC.1:d MSGSRC.1:d 16:w // Add vertical offset 16 for bot MB in MBAFF mode
-
-ELSE_Y_16x16:
- else (1) ENDIF_Y_16x16
-
- // Field picture
- (f0.1) mov (1) MSGDSC MSG_LEN(8)+DWBWMSGDSC+ENMSGDSCBF+BI_DEST_Y:ud // Write 8 GRFs to DEST_Y bottom field
- (-f0.1) mov (1) MSGDSC MSG_LEN(8)+DWBWMSGDSC+ENMSGDSCTF+BI_DEST_Y:ud // Write 8 GRFs to DEST_Y top field
-
- asr (1) MSGSRC.1:d MSGSRC.1:d 1:w // Reduce y by half in field access mode
-
- endif
-ENDIF_Y_16x16:
-
- send (8) null:ud MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSGDSC
-
-// End of save_Cur_Y_16x16.asm
diff --git a/src/shaders/h264/ildb/save_Left_UV_8x2T.asm b/src/shaders/h264/ildb/save_Left_UV_8x2T.asm
deleted file mode 100644
index e177b89..0000000
--- a/src/shaders/h264/ildb/save_Left_UV_8x2T.asm
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: save_Left_UV_8x2T.asm
-//
-// Transpose 8x2 to 2x8 UV data and write to memory
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Left MB region:
-// PREV_MB_UW: Base=ryy ElementSize=2 SrcRegion=REGION(8,1) Type=uw
-
-// Binding table index:
-// BI_SRC_UV: Binding table index of UV surface (NV12)
-//
-// Temp buffer:
-// BUF_W: BUF_W Base=rxx ElementSize=1 SrcRegion=REGION(8,1) Type=uw
-//
-//
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD6:w
-#endif
-
-#if defined(_FIELD)
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w // Get bottom field flag
-#endif
-
- // Transpose U/V, save them to MRFs in NV12 format
- mov (1) MSGSRC.0:ud ORIX_LEFT:w { NoDDClr } // Block origin
- asr (1) MSGSRC.1:ud ORIY_LEFT:w 1:w { NoDDClr, NoDDChk } // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2:ud 0x00070003:ud { NoDDChk } // NV12 U+V block width and height (4x8)
-
-
-// 16x2 UV src in GRF (each pix is specified as yx)
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |71 71 61 61 51 51 41 41 31 31 21 21 11 11 01 01 70 70 60 60 50 50 40 40 30 30 20 20 10 10 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-//
-// First step (8) <1> <=== <8;4,1>:w
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |71 71 61 61 51 51 41 41 70 70 60 60 50 50 40 40 31 31 21 21 11 11 01 01 30 30 20 20 10 10 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
- mov (8) LEFT_TEMP_W(0,0)<1> PREV_MB_UW(0,0)<8;4,1> { NoDDClr }
- mov (8) LEFT_TEMP_W(0,8)<1> PREV_MB_UW(0,4)<8;4,1> { NoDDChk }
-
-// Second step (8) <1> <=== <1;2,4>
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |71 71 70 70 61 61 60 60 51 51 50 50 41 41 40 40 31 31 30 30 21 21 20 20 11 11 10 10 01 01 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
- mov (8) MSGPAYLOADW(0,0)<1> LEFT_TEMP_W(0,0)<1;2,4>
- mov (8) MSGPAYLOADW(0,8)<1> LEFT_TEMP_W(0,8)<1;2,4>
-
-// Transposed U+V in NV12 in 4x8 is ready for writting to dataport.
-
-#if defined(_PROGRESSIVE)
- mov (1) MSGDSC MSG_LEN(1)+DWBWMSGDSC+BI_DEST_UV:ud
-// send (8) NULLREG MSGHDR MSGSRC<8;8,1>:ud DWBWMSGDSC+0x00100000+BI_DEST_UV
-#endif
-
-#if defined(_FIELD)
- // Field picture
- (f0.1) mov (1) MSGDSC MSG_LEN(1)+DWBWMSGDSC+ENMSGDSCBF+BI_DEST_UV:ud // Write 1 GRF to DEST_UV bottom field
- (-f0.1) mov (1) MSGDSC MSG_LEN(1)+DWBWMSGDSC+ENMSGDSCTF+BI_DEST_UV:ud // Write 1 GRF to DEST_UV top field
-
-#endif
- send (8) null:ud MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSGDSC
diff --git a/src/shaders/h264/ildb/save_Left_UV_8x2T_Mbaff.asm b/src/shaders/h264/ildb/save_Left_UV_8x2T_Mbaff.asm
deleted file mode 100644
index 1c84097..0000000
--- a/src/shaders/h264/ildb/save_Left_UV_8x2T_Mbaff.asm
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: save_Left_UV_8x2T.asm
-//
-// Transpose 8x2 to 2x8 UV data and write to memory
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Left MB region:
-// PREV_MB_UW: Base=ryy ElementSize=2 SrcRegion=REGION(8,1) Type=uw
-
-// Binding table index:
-// BI_SRC_UV: Binding table index of UV surface (NV12)
-//
-// Temp buffer:
-// BUF_W: BUF_W Base=rxx ElementSize=1 SrcRegion=REGION(8,1) Type=uw
-//
-//
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD6:w
-#endif
-
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FieldModeCurrentMbFlag:w
-
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w
-
- // Transpose U/V, save them to MRFs in NV12 format
- mov (1) MSGSRC.0:ud ORIX_LEFT:w { NoDDClr } // Block origin
- asr (1) MSGSRC.1:ud ORIY_LEFT:w 1:w { NoDDClr, NoDDChk } // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2:ud 0x00070003:ud { NoDDChk } // NV12 U+V block width and height (4x8)
-
-
-// 16x2 UV src in GRF (each pix is specified as yx)
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |71 71 61 61 51 51 41 41 31 31 21 21 11 11 01 01 70 70 60 60 50 50 40 40 30 30 20 20 10 10 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-//
-// First step (8) <1> <=== <8;4,1>:w
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |71 71 61 61 51 51 41 41 70 70 60 60 50 50 40 40 31 31 21 21 11 11 01 01 30 30 20 20 10 10 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
- mov (8) BUF_W(0,0)<1> PREV_MB_UW(0,0)<8;4,1> { NoDDClr }
- mov (8) BUF_W(0,8)<1> PREV_MB_UW(0,4)<8;4,1> { NoDDChk }
-
-// Second step (8) <1> <=== <1;2,4>
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |71 71 70 70 61 61 60 60 51 51 50 50 41 41 40 40 31 31 30 30 21 21 20 20 11 11 10 10 01 01 00 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
- mov (8) MSGPAYLOADW(0,0)<1> BUF_W(0,0)<1;2,4>
- mov (8) MSGPAYLOADW(0,8)<1> BUF_W(0,8)<1;2,4>
-
-// Transposed U+V in NV12 in 4x8 is ready for writting to dataport.
-
- // Set message descriptor
-
- (f0.0) if (1) ELSE_UV_8X2T
-
- // Frame picture
- mov (1) MSGDSC MSG_LEN(1)+DWBWMSGDSC+BI_DEST_UV:ud // Write 1 GRF to DEST_UV
-
- (f0.1) add (1) MSGSRC.1:d MSGSRC.1:d 8:w // Add vertical offset 8 for bot MB in MBAFF mode
-
-ELSE_UV_8X2T:
- else (1) ENDIF_UV_8X2T
-
- // Field picture
- (f0.1) mov (1) MSGDSC MSG_LEN(1)+DWBWMSGDSC+ENMSGDSCBF+BI_DEST_UV:ud // Write 1 GRF to DEST_UV bottom field
- (-f0.1) mov (1) MSGDSC MSG_LEN(1)+DWBWMSGDSC+ENMSGDSCTF+BI_DEST_UV:ud // Write 1 GRF to DEST_UV top field
-
- asr (1) MSGSRC.1:d MSGSRC.1:d 1:w // Reduce y by half in field access mode
-
- endif
-ENDIF_UV_8X2T:
-
- send (8) null:ud MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSGDSC
diff --git a/src/shaders/h264/ildb/save_Left_Y_16x4T.asm b/src/shaders/h264/ildb/save_Left_Y_16x4T.asm
deleted file mode 100644
index 8c12f94..0000000
--- a/src/shaders/h264/ildb/save_Left_Y_16x4T.asm
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: save_Left_Y_16x4T.asm
-//
-// Transpose 16x4 to 4x16 Y data and write to memory
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Left MB region:
-// PREV_MB_YB: Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-
-// Binding table index:
-// BI_SRC_Y: Binding table index of Y surface
-//
-// Temp buffer:
-// BUF_B: BUF_B Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-//
-//
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD6:w
-#endif
-
-#if defined(_FIELD)
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w // Get bottom field flag
-#endif
-
- mov (2) MSGSRC.0<1>:ud ORIX_LEFT<2;2,1>:w { NoDDClr } // Block origin
- mov (1) MSGSRC.2<1>:ud 0x000F0003:ud { NoDDChk } // 4x16
-
-// Transpose Y, save them to MRFs
-
-// 16x4 Y src in GRF (each pix is specified as yx)
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f1 e1 d1 c1 b1 a1 91 81 71 61 51 41 31 21 11 01 f0 e0 d0 c0 b0 a0 90 80 70 60 50 40 30 20 10 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f3 e3 d3 c3 b3 a3 93 83 73 63 53 43 33 23 13 03 f2 e2 d2 c2 b2 a2 92 82 72 62 52 42 32 22 12 02|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-//
-// First step (16) <1> <=== <16;4,1>
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |73 63 53 43 72 62 52 42 71 61 51 41 70 60 50 40 33 23 13 03 32 22 12 02 31 21 11 01 30 20 10 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f3 e3 d3 c3 f2 e2 d2 c2 f1 e1 d1 c1 f0 e0 d0 c0 b3 a3 93 83 b2 a2 92 82 b1 a1 91 81 b0 a0 90 80|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-
- // The first step
- mov (16) LEFT_TEMP_B(0,0)<1> PREV_MB_YB(0,0)<16;4,1> { NoDDClr }
- mov (16) LEFT_TEMP_B(0,16)<1> PREV_MB_YB(0,4)<16;4,1> { NoDDChk }
- mov (16) LEFT_TEMP_B(1,0)<1> PREV_MB_YB(0,8)<16;4,1> { NoDDClr }
- mov (16) LEFT_TEMP_B(1,16)<1> PREV_MB_YB(0,12)<16;4,1> { NoDDChk }
-
-//
-// Second step (16) <1> <=== <1;4,4>
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |73 72 71 70 63 62 61 60 53 52 51 50 43 42 41 40 33 32 31 30 23 22 21 20 13 12 11 10 03 02 01 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f3 f2 f1 f0 e3 e2 e1 e0 d3 d2 d1 d0 c3 c2 c1 c0 b3 b2 b1 b0 a3 a2 a1 a0 93 92 91 90 83 82 81 80|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-//
- // The second step
- mov (16) MSGPAYLOADB(0,0)<1> LEFT_TEMP_B(0,0)<1;4,4>
- mov (16) MSGPAYLOADB(0,16)<1> LEFT_TEMP_B(0,16)<1;4,4>
- mov (16) MSGPAYLOADB(1,0)<1> LEFT_TEMP_B(1,0)<1;4,4>
- mov (16) MSGPAYLOADB(1,16)<1> LEFT_TEMP_B(1,16)<1;4,4>
-
-// Transposed Y in 4x16 is ready for writting to dataport.
-
-
-#if defined(_PROGRESSIVE)
- mov (1) MSGDSC MSG_LEN(2)+DWBWMSGDSC+BI_DEST_Y:ud
-// send (8) NULLREG MSGHDR MSGSRC<8;8,1>:ud DWBWMSGDSC+0x00200000+BI_DEST_Y
-#endif
-
-#if defined(_FIELD)
- // Field picture
- (f0.1) mov (1) MSGDSC MSG_LEN(2)+DWBWMSGDSC+ENMSGDSCBF+BI_DEST_Y:ud // Write 2 GRFs to DEST_Y bottom field
- (-f0.1) mov (1) MSGDSC MSG_LEN(2)+DWBWMSGDSC+ENMSGDSCTF+BI_DEST_Y:ud // Write 2 GRFs to DEST_Y top field
-
-#endif
-
- send (8) null:ud MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSGDSC
-
diff --git a/src/shaders/h264/ildb/save_Left_Y_16x4T_Mbaff.asm b/src/shaders/h264/ildb/save_Left_Y_16x4T_Mbaff.asm
deleted file mode 100644
index c223f3a..0000000
--- a/src/shaders/h264/ildb/save_Left_Y_16x4T_Mbaff.asm
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: save_Left_Y_16x4T.asm
-//
-// Transpose 16x4 to 4x16 Y data and write to memory
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Left MB region:
-// PREV_MB_YB: Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-
-// Binding table index:
-// BI_SRC_Y: Binding table index of Y surface
-//
-// Temp buffer:
-// BUF_B: BUF_B Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-//
-//
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD6:w
-#endif
-
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FieldModeCurrentMbFlag:w
-
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w
-
- mov (2) MSGSRC.0<1>:ud ORIX_LEFT<2;2,1>:w { NoDDClr } // Block origin
- mov (1) MSGSRC.2<1>:ud 0x000F0003:ud { NoDDChk } // 4x16
-
-// Transpose Y, save them to MRFs
-
-// 16x4 Y src in GRF (each pix is specified as yx)
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f1 e1 d1 c1 b1 a1 91 81 71 61 51 41 31 21 11 01 f0 e0 d0 c0 b0 a0 90 80 70 60 50 40 30 20 10 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f3 e3 d3 c3 b3 a3 93 83 73 63 53 43 33 23 13 03 f2 e2 d2 c2 b2 a2 92 82 72 62 52 42 32 22 12 02|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-//
-// First step (16) <1> <=== <16;4,1>
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |73 63 53 43 72 62 52 42 71 61 51 41 70 60 50 40 33 23 13 03 32 22 12 02 31 21 11 01 30 20 10 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f3 e3 d3 c3 f2 e2 d2 c2 f1 e1 d1 c1 f0 e0 d0 c0 b3 a3 93 83 b2 a2 92 82 b1 a1 91 81 b0 a0 90 80|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-
- // The first step
- mov (16) BUF_B(0,0)<1> PREV_MB_YB(0,0)<16;4,1> { NoDDClr }
- mov (16) BUF_B(0,16)<1> PREV_MB_YB(0,4)<16;4,1> { NoDDChk }
- mov (16) BUF_B(1,0)<1> PREV_MB_YB(0,8)<16;4,1> { NoDDClr }
- mov (16) BUF_B(1,16)<1> PREV_MB_YB(0,12)<16;4,1> { NoDDChk }
-
-//
-// Second step (16) <1> <=== <1;4,4>
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |73 72 71 70 63 62 61 60 53 52 51 50 43 42 41 40 33 32 31 30 23 22 21 20 13 12 11 10 03 02 01 00|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-// |f3 f2 f1 f0 e3 e2 e1 e0 d3 d2 d1 d0 c3 c2 c1 c0 b3 b2 b1 b0 a3 a2 a1 a0 93 92 91 90 83 82 81 80|
-// +-----------------------+-----------------------+-----------------------+-----------------------+
-//
- // The second step
- mov (16) MSGPAYLOADB(0,0)<1> BUF_B(0,0)<1;4,4>
- mov (16) MSGPAYLOADB(0,16)<1> BUF_B(0,16)<1;4,4>
- mov (16) MSGPAYLOADB(1,0)<1> BUF_B(1,0)<1;4,4>
- mov (16) MSGPAYLOADB(1,16)<1> BUF_B(1,16)<1;4,4>
-
-// Transposed Y in 4x16 is ready for writting to dataport.
-
- //***** Left MB is loaded the same as indicated by FieldModeCurrentMbFlag.
-
- // Set message descriptor
-
- (f0.0) if (1) ELSE_Y_16x4T
-
- // Frame picture
- mov (1) MSGDSC MSG_LEN(2)+DWBWMSGDSC+BI_DEST_Y:ud // Write 2 GRFs to DEST_Y
-
- (f0.1) add (1) MSGSRC.1:d MSGSRC.1:d 16:w // Add vertical offset 16 for bot MB in MBAFF mode
-
-ELSE_Y_16x4T:
- else (1) ENDIF_Y_16x4T
-
- // Field picture
- (f0.1) mov (1) MSGDSC MSG_LEN(2)+DWBWMSGDSC+ENMSGDSCBF+BI_DEST_Y:ud // Write 2 GRFs to DEST_Y bottom field
- (-f0.1) mov (1) MSGDSC MSG_LEN(2)+DWBWMSGDSC+ENMSGDSCTF+BI_DEST_Y:ud // Write 2 GRFs to DEST_Y top field
-
- asr (1) MSGSRC.1:d MSGSRC.1:d 1:w // Reduce y by half in field access mode
-
- endif
-ENDIF_Y_16x4T:
-
- send (8) null:ud MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSGDSC
-
-
-
diff --git a/src/shaders/h264/ildb/save_Top_UV_8x2.asm b/src/shaders/h264/ildb/save_Top_UV_8x2.asm
deleted file mode 100644
index 0552a78..0000000
--- a/src/shaders/h264/ildb/save_Top_UV_8x2.asm
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: save_Top_UV_8x2.asm
-//
-// Save UV 8x2 block (8x2U + 8x2V in NV12)
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region in :ud
-// SRC_UD: SRC_UD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 1 GRF
-//
-// Binding table index:
-// BI_DEST_UV: Binding table index of UV surface (NV12)
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD5:w
-#endif
-
-#if defined(_FIELD)
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w // Get bottom field flag
-#endif
-
- mov (1) MSGSRC.0:ud ORIX_TOP:w { NoDDClr } // Block origin
- asr (1) MSGSRC.1:ud ORIY_TOP:w 1:w { NoDDClr, NoDDChk } // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2:ud 0x0001000F:ud { NoDDChk } // NV12 U+V block width and height (16x2)
-
- mov (8) MSGPAYLOADD(0,0)<1> TOP_MB_UD(0)
-
-
-#if defined(_PROGRESSIVE)
- mov (1) MSGDSC MSG_LEN(1)+DWBWMSGDSC_WC+BI_DEST_UV:ud
-// send (8) NULLREG MSGHDR MSGSRC<8;8,1>:ud DWBWMSGDSC+0x00100000+BI_DEST_UV
-#endif
-
-#if defined(_FIELD)
- // Field picture
- (f0.1) mov (1) MSGDSC MSG_LEN(1)+DWBWMSGDSC_WC+ENMSGDSCBF+BI_DEST_UV:ud // Write 1 GRF to DEST_Y bottom field
- (-f0.1) mov (1) MSGDSC MSG_LEN(1)+DWBWMSGDSC_WC+ENMSGDSCTF+BI_DEST_UV:ud // Write 1 GRF to DEST_Y top field
-
-#endif
-
- send (8) WritebackResponse(0)<1> MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSGDSC
-// End of save_Top_UV_8x2.asm
diff --git a/src/shaders/h264/ildb/save_Top_UV_8x2_Mbaff.asm b/src/shaders/h264/ildb/save_Top_UV_8x2_Mbaff.asm
deleted file mode 100644
index 74d0c8b..0000000
--- a/src/shaders/h264/ildb/save_Top_UV_8x2_Mbaff.asm
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: save_Top_UV_8x2.asm
-//
-// Save UV 8x2 block (8x2U + 8x2V in NV12)
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region in :ud
-// SRC_UD: SRC_UD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 1 GRF
-//
-// Binding table index:
-// BI_DEST_UV: Binding table index of UV surface (NV12)
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD5:w
-#endif
- and.z.f0.1 (8) NULLREGW DualFieldMode<0;1,0>:w 1:w
-
- // FieldModeCurrentMbFlag determines how to access above MB
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FieldModeCurrentMbFlag:w
-
- // Pack U and V
- mov (1) MSGSRC.0:ud ORIX_TOP:w { NoDDClr } // Block origin
- asr (1) MSGSRC.1:ud ORIY_TOP:w 1:w { NoDDClr, NoDDChk } // NV12 U+V block origin y = half of Y comp
- mov (1) MSGSRC.2:ud 0x0001000F:ud { NoDDChk } // NV12 U+V block width and height (16x2)
-
- // Dual field mode
- (f0.1) mov (8) MSGPAYLOADD(0)<1> PREV_MB_UD(0)
- (-f0.1) mov (8) MSGPAYLOADD(0)<1> PREV_MB_UD(1) // for dual field mode, write last 2 rows
-
- // Set message descriptor
-
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w
-
- (f0.0) if (1) ELSE_UV_8X2_SAVE
-
- // Frame picture
- mov (1) MSGDSC MSG_LEN(1)+DWBWMSGDSC_WC+BI_DEST_UV:ud // Write 1 GRFs to DEST_UV
-
- // Add vertical offset 8 for bot MB in MBAFF mode
- (f0.1) add (1) MSGSRC.1:d MSGSRC.1:d 8:w
-
-ELSE_UV_8X2_SAVE:
- else (1) ENDIF_UV_8X2_SAVE
-
- asr (1) MSGSRC.1:d ORIY_CUR:w 2:w // asr 1: NV12 U+V block origin y = half of Y comp
- // asr 1: Reduce y by half in field access mode
- // Field picture
- (f0.1) mov (1) MSGDSC MSG_LEN(1)+DWBWMSGDSC_WC+ENMSGDSCBF+BI_DEST_UV:ud // Write 1 GRF to DEST_Y bottom field
- (-f0.1) mov (1) MSGDSC MSG_LEN(1)+DWBWMSGDSC_WC+ENMSGDSCTF+BI_DEST_UV:ud // Write 1 GRF to DEST_Y top field
-
- add (1) MSGSRC.1:d MSGSRC.1:d -2:w // for last 4 rows of above MB
-
- endif
-ENDIF_UV_8X2_SAVE:
-
- send (8) WritebackResponse(0)<1> MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSGDSC
-
-// End of save_Top_UV_8x2.asm
diff --git a/src/shaders/h264/ildb/save_Top_Y_16x4.asm b/src/shaders/h264/ildb/save_Top_Y_16x4.asm
deleted file mode 100644
index 8e70da1..0000000
--- a/src/shaders/h264/ildb/save_Top_Y_16x4.asm
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: save_Top_Y_16x4.asm
-//
-// Save a Y 16x4 block
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region in :ud
-// SRC_YD: SRC_YD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 2 GRFs
-//
-// Binding table index:
-// BI_DEST_Y: Binding table index of Y surface
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD5:w
-#endif
-
-#if defined(_FIELD)
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w // Get bottom field flag
-#endif
-
- mov (2) MSGSRC.0<1>:ud ORIX_TOP<2;2,1>:w { NoDDClr } // Block origin
- mov (1) MSGSRC.2<1>:ud 0x0003000F:ud { NoDDChk } // Block width and height (16x4)
-
- // Pack Y
- mov (16) MSGPAYLOADD(0)<1> TOP_MB_YD(0) // Compressed inst
-
-
-#if defined(_PROGRESSIVE)
- mov (1) MSGDSC MSG_LEN(2)+DWBWMSGDSC_WC+BI_DEST_Y:ud
-// send (8) NULLREG MSGHDR MSGSRC<8;8,1>:ud DWBWMSGDSC+0x00200000+BI_DEST_Y
-#endif
-
-#if defined(_FIELD)
- // Field picture
- (f0.1) mov (1) MSGDSC MSG_LEN(2)+DWBWMSGDSC_WC+ENMSGDSCBF+BI_DEST_Y:ud // Write 2 GRFs to DEST_Y bottom field
- (-f0.1) mov (1) MSGDSC MSG_LEN(2)+DWBWMSGDSC_WC+ENMSGDSCTF+BI_DEST_Y:ud // Write 2 GRFs to DEST_Y top field
-
-#endif
-
- send (8) WritebackResponse(0)<1> MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSGDSC
-// End of save_Top_Y_16x4.asm
diff --git a/src/shaders/h264/ildb/save_Top_Y_16x4_Mbaff.asm b/src/shaders/h264/ildb/save_Top_Y_16x4_Mbaff.asm
deleted file mode 100644
index 31798ae..0000000
--- a/src/shaders/h264/ildb/save_Top_Y_16x4_Mbaff.asm
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: save_Top_Y_16x4.asm
-//
-// Save a Y 16x4 block
-//
-//----------------------------------------------------------------
-// Symbols need to be defined before including this module
-//
-// Source region in :ud
-// SRC_YD: SRC_YD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud // 2 GRFs
-//
-// Binding table index:
-// BI_DEST_Y: Binding table index of Y surface
-//
-//----------------------------------------------------------------
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0xDDD5:w
-#endif
-
- and.z.f0.1 (16) NULLREGW DualFieldMode<0;1,0>:w 1:w
-
- // FieldModeCurrentMbFlag determines how to access above MB
- and.z.f0.0 (1) null:w r[ECM_AddrReg, BitFlags]:ub FieldModeCurrentMbFlag:w
-
- mov (2) MSGSRC.0<1>:ud ORIX_TOP<2;2,1>:w { NoDDClr } // Block origin
- mov (1) MSGSRC.2<1>:ud 0x0003000F:ud { NoDDChk } // Block width and height (16x4)
-
- // Pack Y
- // Dual field mode
- (f0.1) mov (16) MSGPAYLOADD(0)<1> PREV_MB_YD(0) // Compressed inst
- (-f0.1) mov (16) MSGPAYLOADD(0)<1> PREV_MB_YD(2) // for dual field mode, write last 4 rows
-
- // Set message descriptor
-
- and.nz.f0.1 (1) NULLREGW BitFields:w BotFieldFlag:w
-
- (f0.0) if (1) ELSE_Y_16x4_SAVE
-
- // Frame picture
- mov (1) MSGDSC MSG_LEN(2)+DWBWMSGDSC_WC+BI_DEST_Y:ud // Write 2 GRFs to DEST_Y
-
- // Add vertical offset 16 for bot MB in MBAFF mode
- (f0.1) add (1) MSGSRC.1:d MSGSRC.1:d 16:w
-
-ELSE_Y_16x4_SAVE:
- else (1) ENDIF_Y_16x4_SAVE
-
- asr (1) MSGSRC.1:d ORIY_CUR:w 1:w // Reduce y by half in field access mode
-
- // Field picture
- (f0.1) mov (1) MSGDSC MSG_LEN(2)+DWBWMSGDSC_WC+ENMSGDSCBF+BI_DEST_Y:ud // Write 2 GRFs to DEST_Y bottom field
- (-f0.1) mov (1) MSGDSC MSG_LEN(2)+DWBWMSGDSC_WC+ENMSGDSCTF+BI_DEST_Y:ud // Write 2 GRFs to DEST_Y top field
-
- add (1) MSGSRC.1:d MSGSRC.1:d -4:w // for last 4 rows of above MB
-
- endif
-ENDIF_Y_16x4_SAVE:
-
- send (8) WritebackResponse(0)<1> MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSGDSC
-
-// End of save_Top_Y_16x4.asm
diff --git a/src/shaders/h264/ildb/writeURB.asm b/src/shaders/h264/ildb/writeURB.asm
deleted file mode 100644
index 5233e19..0000000
--- a/src/shaders/h264/ildb/writeURB.asm
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: WriteURB.asm
-//
-// General purpose module to write data to URB using the URB handle/offset in r0
-//
-//----------------------------------------------------------------
-// Assume:
-// - a0.0 and a0.1 is meg desc, has been assign with URB offset and msg size
-// - MRFs are alrady assigned with data.
-//----------------------------------------------------------------
-//
-// 16x16 byte pixel block can be saved using just 1 "send" instruction.
-
-#if defined(_DEBUG)
- mov (1) EntrySignature:w 0x3535:w
-#endif
-
-// URB write header:
-//mov (8) MSGSRC.0:ud r0.0<8;8,1>:ud // Copy parent R0 header
-
-//shr (1) Temp2_W:uw URBOffset:uw 1:w // divide by 2, because URB entry is counted by 512bits. Offset is counted by 256bits.
-//add (1) MSGSRC.0:uw r0.0:uw Temp2_W:uw
-
-
-shr (1) MSGSRC.0:uw URBOffset:uw 1:w // divide by 2, because URB entry is counted by 512bits. Offset is counted by 256bits.
-//mov (1) MSGSRC.0:uw URBOffset_2:uw
-
-//mov (1) MSGSRC.1:ud 0:ud // Reset Handle 1
-
-send null:uw m0 MSGSRC<8;8,1>:uw URBWRITE URBWriteMsgDesc:ud // URB write
-//send null:ud MRF0 null:ud URBWriteMsgDesc:ud // URB write
diff --git a/src/shaders/h264/ildb/writeURB_UV_Child.asm b/src/shaders/h264/ildb/writeURB_UV_Child.asm
deleted file mode 100644
index c98ab21..0000000
--- a/src/shaders/h264/ildb/writeURB_UV_Child.asm
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: WriteURB_Child.asm
-//
-// General purpose module to write data to URB using the URB handle/offset in r0
-//
-//----------------------------------------------------------------
-// Assume:
-// - a0.0 and a0.1 is meg desc, has been assign with URB offset and msg size
-// - MRFs are alrady assigned with data.
-//----------------------------------------------------------------
-//
-// 16x16 byte pixel block can be saved using just 1 "send" instruction.
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0x3535:w
-#endif
-
-// URB write header:
-//mov (8) MSGSRC.0:ud r0.0<8;8,1>:ud // Copy parent R0 header
-
-//shr (1) Temp2_W:uw URBOffsetC:uw 1:w // divide by 2, because URB entry is counted by 512bits. Offset is counted by 256bits.
-//add (1) MSGSRC.0:uw r0.0:uw Temp2_W:uw
-
-shr (1) MSGSRC.0:uw URBOffsetC:uw 1:w // divide by 2, because URB entry is counted by 512bits. Offset is counted by 256bits.
-
-//mov (1) MSGSRC.1:ud 0:ud // Reset Handle 1
-
- // URB write 1 MRFs,
- // Current MB offset is in URBOffset, use it as write origin
- // Add 2 to offset to store data be be passed to the right MB
-
-send null:uw m0 MSGSRC<8;8,1>:uw URBWRITE MSG_LEN(1)+URBWMSGDSC+0x20 // URB write
diff --git a/src/shaders/h264/ildb/writeURB_Y_Child.asm b/src/shaders/h264/ildb/writeURB_Y_Child.asm
deleted file mode 100644
index d27cfb7..0000000
--- a/src/shaders/h264/ildb/writeURB_Y_Child.asm
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: WriteURB_Child.asm
-//
-// General purpose module to write data to URB using the URB handle/offset in r0
-//
-//----------------------------------------------------------------
-// Assume:
-// - a0.0 and a0.1 is meg desc, has been assign with URB offset and msg size
-// - MRFs are alrady assigned with data.
-//----------------------------------------------------------------
-//
-// 16x16 byte pixel block can be saved using just 1 "send" instruction.
-
-#if defined(_DEBUG)
- mov (1) EntrySignatureC:w 0x3535:w
-#endif
-
-// URB write header:
-//mov (8) MSGSRC.0:ud r0.0<8;8,1>:ud // Copy parent R0 header
-
-//shr (1) Temp2_W:uw URBOffsetC:uw 1:w // divide by 2, because URB entry is counted by 512bits. Offset is counted by 256bits.
-//add (1) MSGSRC.0:uw r0.0:uw Temp2_W:uw
-
-shr (1) MSGSRC.0:uw URBOffsetC:uw 1:w // divide by 2, because URB entry is counted by 512bits. Offset is counted by 256bits.
-
-//mov (1) MSGSRC.1:ud 0:ud // Reset Handle 1
-
- // URB write 2 MRFs,
- // Current MB offset is in URBOffset, use it as write origin
- // Add 2 to offset to store data be be passed to the right MB
- //mov (1) URBWriteMsgDesc:ud 0x06300020:ud
-
-send null:uw m0 MSGSRC<8;8,1>:uw URBWRITE MSG_LEN(2)+URBWMSGDSC+0x20 // URB write
diff --git a/src/shaders/h264/mc/AVCMCInter.asm b/src/shaders/h264/mc/AVCMCInter.asm
deleted file mode 100644
index 96f1e8d..0000000
--- a/src/shaders/h264/mc/AVCMCInter.asm
+++ /dev/null
@@ -1,284 +0,0 @@
-/*
- * All inter-prediction macroblock kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: AVCMCInter.asm
-
-#ifdef INTERLABEL
-#undef INTERLABEL
-#endif
-
-#if defined(MBAFF)
-// < MBaff_Motion >
-#define INTERLABEL(x) x##_##MBF
-#elif defined(FIELD)
-// < FieldMB_Motion >
-#define INTERLABEL(x) x##_##FLD
-#else // FRAME
-// < FrameMB_Motion >
-#define INTERLABEL(x) x##_##FRM
-#endif
-//
-// Decoding an inter-prediction macroblock (conditional compile)
-// -DMBAFF : MBAff picture MB
-// -DFRAME : Frame picture MB
-// -DFIELD : Field picture MB
-// -DMBAFF -DMONO : MBAff mono picture MB
-// -DFRAME -DMONO : Frame mono picture MB
-// -DFIELD -DMONO : Field mono picture MB
-
-
-//#if !defined(__AVCMCInter__) // Make sure this is only included once
-//#define __AVCMCInter__
-
-
-// TODO: header files need to be in sync with intra prediction
-#include "header.inc"
-#include "inter_Header.inc"
-
-// TODO: Kernel names for mono cases
-#if defined(MBAFF)
-.kernel MBAff_Motion
-MBAFF_MB:
-#elif defined(FIELD)
-.kernel FieldMB_Motion
-FIELD_MB:
-#else // Frame
-.kernel FrameMB_Motion
-FRAME_MB:
-#endif
-
-#ifdef _DEBUG
-// WA for FULSIM so we'll know which kernel is being debugged
-#if defined(MBAFF)
-mov (1) acc0:ud 0x0aaa55a5:ud
-#elif defined(FIELD)
-mov (1) acc0:ud 0x0baa55a5:ud
-#else // Frame
-mov (1) acc0:ud 0x0caa55a5:ud
-#endif
-#endif
-
-
-#ifdef SW_SCOREBOARD
- CALL(scoreboard_start_inter,1)
-#endif
-
- mov (8) gMSGSRC<1>:ud r0.0<8;8,1>:ud // Initialize message header payload with R0
-
- and (1) gwMBTYPE<1> gMBTYPE:ub nMBTYPE_MASK:w // MB type
- shl (2) gX<1>:w gORIX<2;2,1>:ub 4:w // Convert MB origin to pixel unit
-
-// #include "process_inter16x16.asm" // Handle B_L0_16x16 case with zero MVs and weighted pred off.
- // In the case of B_L0_16x16 with zero MVs and weighted pred off, the kernel jumps to INTERLABEL(EXIT_LOOP).
-
-INTERLABEL(INIT_MBPARA):
- #include "initialize_MBPara.asm"
-
-
- //========================= BEGIN - LOOP_SUBMB ===========================
- mov (1) gLOOP_SUBMB:uw 0:uw // 0, 2, 4, 6
-INTERLABEL(LOOP_SUBMB):
-
- //========================== BEGIN - LOOP_DIR ============================
- // Prediction flag (gPREDFLAG - 0:Pred_L0, 1:Pred_L1, 2:BiPred)
- asr (1) gPREDFLAG:w gSUBMB_MODE:ub gLOOP_SUBMB:uw
- mov (1) gLOOP_DIR:uw 1:uw // 1, 0
- and (1) gPREDFLAG:w gPREDFLAG:w 0x3:w
-INTERLABEL(LOOP_DIR):
-
- cmp.e.f0.0 (1) null:w gLOOP_DIR:w gPREDFLAG:w
- (f0.0) jmpi INTERLABEL(LOOP_DIR_CONTINUE)
-
- // Get binding table index
- // & reference picture parity (gREFPARITY - 0:top, 0x100:bottom, x:frame)
- // & address of interpolation result
- cmp.e.f0.1 (1) null:w gLOOP_DIR:w 1:w
- (f0.1) mov (1) gpINTP:ud nOFFSET_INTP0:ud {NoDDClr} //
- (f0.1) and (1) gBIDX:w r[pBIDX]:ub 0x7f:w {NoDDChk} //
- (-f0.1) mov (1) gpINTP:ud nOFFSET_INTP1:ud {NoDDClr} //
- (-f0.1) and (1) gBIDX:w r[pBIDX,4]:ub 0x7f:w {NoDDChk} //
-#if defined(MBAFF) || defined(FIELD)
- (f0.1) and (1) gREFPARITY:w r[pBIDX]:ub 0x80:w
- (-f0.1) and (1) gREFPARITY:w r[pBIDX,4]:ub 0x80:w
- shl (1) gREFPARITY:w gREFPARITY<0;1,0>:w 1:w
-#endif
-
- // Sub MB shape
- asr (1) gSHAPETEMP:w gSUBMB_SHAPE:ub gLOOP_SUBMB:w
-
- // Chroma MV adjustment & Set message descriptor for frame/field read
-#if defined(MBAFF)
- #include "chromaMVAdjust.asm"
- and.nz.f0.0 (1) null:uw gFIELDMBFLAG:ub nFIELDMB_MASK:uw
- (f0.0) add (1) gD0:ud gBIDX:uw nDWBRMSGDSC_SC_TF:ud
- (-f0.0) add (1) gMSGDSC_R:ud gBIDX:uw nDWBRMSGDSC_SC:ud
- (f0.0) add (1) gMSGDSC_R:ud gD0:ud gREFPARITY:uw
-#elif defined(FIELD)
- #include "chromaMVAdjust.asm"
- add (1) gMSGDSC_R:ud gBIDX:uw nDWBRMSGDSC_SC_TF:ud
- add (1) gMSGDSC_R:ud gMSGDSC_R:ud gREFPARITY:uw
-#else // FRAME
- add (1) gMSGDSC_R:ud gBIDX:uw nDWBRMSGDSC_SC:ud
-#endif
-
- and.nz.f0.1 (1) null:w gSHAPETEMP:w 3:w
- (f0.1) jmpi INTERLABEL(PROCESS4x4)
-
- //======================== BEGIN - PROCESS 8x8 ===========================
-
- // Reference block load
- #include "loadRef_Y_16x13.asm"
-#ifndef MONO
-#if defined(MBAFF) || defined(FIELD)
- add (1) r[pMV,2]:w r[pMV,2]:w gCHRMVADJ:w
-#endif
- #include "loadRef_C_10x5.asm"
-#endif
-
- // Interpolation
- //CALL_INTER(INTERLABEL(Interpolate_Y_8x8_Func), 1)
- #include "interpolate_Y_8x8.asm"
-#ifndef MONO
- //CALL_INTER(INTERLABEL(Interpolate_C_4x4_Func), 1)
- #include "interpolate_C_4x4.asm"
-#endif
-
- jmpi INTERLABEL(ROUND_SHIFT_C)
- //========================= END - PROCESS 8x8 ============================
-
- //======================== BEGIN - LOOP_SUBMBPT ==========================
-INTERLABEL(PROCESS4x4):
-
- mov (1) gLOOP_SUBMBPT:uw 4:uw // 4, 3, 2, 1
-INTERLABEL(LOOP_SUBMBPT):
-
- // Reference block load
- #include "loadRef_Y_16x9.asm"
-#ifndef MONO
-#if defined(MBAFF) || defined(FIELD)
- add (1) r[pMV,2]:w r[pMV,2]:w gCHRMVADJ:w
-#endif
- #include "loadRef_C_6x3.asm"
-#endif
-
- // Interpolation
- #include "interpolate_Y_4x4.asm"
-#ifndef MONO
- #include "interpolate_C_2x2.asm"
-#endif
-
- cmp.e.f0.0 (1) null:w gLOOP_SUBMBPT:uw 3:w
- add.z.f0.1 (1) gLOOP_SUBMBPT:uw gLOOP_SUBMBPT:uw -1:w
- add (1) pMV:w pMV:w 8:w
- (-f0.0) add (1) gpINTP:ud gpINTP:ud 0x00080008:ud // 8 & 8
- (f0.0) add (1) gpINTP:ud gpINTP:ud 0x00180038:ud // 24 & 56
- (-f0.1) jmpi INTERLABEL(LOOP_SUBMBPT)
-
- cmp.e.f0.1 null:w gLOOP_DIR:w 1:w
- add (1) pMV:w pMV:w -32:w
- (f0.1) mov (1) gpINTP:ud nOFFSET_INTP0:ud
- (-f0.1) mov (1) gpINTP:ud nOFFSET_INTP1:ud
-
- mov (1) pRESULT:uw gpINTPC:uw
-
- //========================= END - LOOP_SUBMBPT ===========================
-
-INTERLABEL(ROUND_SHIFT_C):
-
-#ifndef MONO
- #include "roundShift_C_4x4.asm"
-#endif
-
-INTERLABEL(LOOP_DIR_CONTINUE):
-
- add.nz.f0.1 (1) gLOOP_DIR:uw gLOOP_DIR:uw -1:w
- add (1) pMV:w pMV:w 4:w
- (-f0.1) jmpi INTERLABEL(LOOP_DIR)
- //=========================== END - LOOP_DIR =============================
-
-INTERLABEL(Weighted_Prediction):
- #include "weightedPred.asm"
-
- and.z.f0.1 (16) null<1>:w gLOOP_SUBMB<0;1,0>:uw 2:w
-
- #include "recon_Y_8x8.asm"
-#ifndef MONO
- #include "recon_C_4x4.asm"
-
- (-f0.1) add (1) pERRORC:w pERRORC:w 48:w
-#endif
-
- cmp.e.f0.1 (1) null:w gLOOP_SUBMB:uw 6:w
- add (1) gLOOP_SUBMB:uw gLOOP_SUBMB:uw 2:w
-
- add (1) pWGT_BIDX:ud pWGT_BIDX:ud 0x00100001:ud // 12 & 1
- add (1) pMV:w pMV:w gMVSTEP:w
-
- (-f0.1) jmpi INTERLABEL(LOOP_SUBMB)
- //========================== END - LOOP_SUBMB ============================
-
-INTERLABEL(EXIT_LOOP):
- #include "writeRecon_YC.asm"
-
-#ifdef SW_SCOREBOARD
- wait n0:ud // Now wait for scoreboard to response
- #include "Soreboard_update.asm" // scorboard update function
-#else
-// Check for write commit first if SW scoreboard is disabled
- mov (1) gREG_WRITE_COMMIT_Y<1>:ud gREG_WRITE_COMMIT_Y<0;1,0>:ud // Make sure Y write is committed
- mov (1) gREG_WRITE_COMMIT_UV<1>:ud gREG_WRITE_COMMIT_UV<0;1,0>:ud // Make sure U/V write is committed
-#endif
-
-// Terminate the thread
-//
- END_THREAD
-
-
-//#include "Interpolate_Y_8x8_Func.asm"
-//#include "Interpolate_C_4x4_Func.asm"
-//#include "WeightedPred_Y_Func.asm"
-//#include "WeightedPred_C_Func.asm"
-
-
-.end_code
-
-.end_kernel
-
-
-//#endif // !defined(__AVCMCInter__)
diff --git a/src/shaders/h264/mc/AllAVC.asm b/src/shaders/h264/mc/AllAVC.asm
deleted file mode 100644
index b63b738..0000000
--- a/src/shaders/h264/mc/AllAVC.asm
+++ /dev/null
@@ -1,469 +0,0 @@
-/*
- * All HWMC kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Kernel name: AllAVC.asm
-//
-// All HWMC kernels merged into this file
-//
-// $Revision: 2 $
-// $Date: 9/10/06 2:02a $
-//
-
-// Note: To enable SW scoreboard for ILK AVC kernels, simply toggle the HW_SCOREBOARD
-// and SW_SCOREBOARD definition as described below.
-//
-// ----------------------------------------------------
-// Main: ALLINTRA
-// ----------------------------------------------------
-
-#define COMBINED_KERNEL
-#define ENABLE_ILDB
-
-// WA for *Stim tool issue, should be removed later
-
-#ifdef DEV_ILK
-#define INSTFACTOR 2 // 128-bit count as 2 instructions
-#else
-#define INSTFACTOR 1 // 128-bit is 1 instruction
-#endif // DEV_ILK
-
-#ifdef DEV_CTG
- #define SW_SCOREBOARD // SW Scoreboard should be enabled for CTG and earlier
- #undef HW_SCOREBOARD // HW Scoreboard should be disabled for CTG and earlier
-#else
- #define HW_SCOREBOARD // HW Scoreboard should be enabled for ILK and beyond
- #undef SW_SCOREBOARD // SW Scoreboard should be disabled for ILK and beyond
-#endif // DEV_CTG
-#ifdef BOOTSTRAP
-# ifdef ENABLE_ILDB
-# define ALL_SPAWNED_UV_ILDB_FRAME_IP 0
-# define SLEEP_ENTRY_UV_ILDB_FRAME_IP 0
-# define POST_SLEEP_UV_ILDB_FRAME_IP 0
-# define ALL_SPAWNED_Y_ILDB_FRAME_IP 0
-# define SLEEP_ENTRY_Y_ILDB_FRAME_IP 0
-# define POST_SLEEP_Y_ILDB_FRAME_IP 0
-# endif
-#elif defined(DEV_ILK)
-# include "export.inc.gen5"
-#elif defined(DEV_CTG)
-# include "export.inc"
-#endif
-#if defined(_EXPORT)
- #include "AllAVC_Export.inc"
-#elif defined(_BUILD)
- #include "AllAVC.ich" // ISAasm dumped .exports
- #include "AllAVC_Export.inc" // Keep jumping targets aligned, only for CTG and beyond
- #include "AllAVC_Build.inc"
-#else
-#endif
-
-.kernel AllAVC
-
-// Build all intra prediction kernels
-//
-#ifdef INTRA_16x16_PAD_NENOP
- $for(0; <INTRA_16x16_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef INTRA_16x16_PAD_NOP
- $for(0; <INTRA_16x16_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "Intra_16x16.asm"
-
-#ifdef INTRA_8x8_PAD_NENOP
- $for(0; <INTRA_8x8_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef INTRA_8x8_PAD_NOP
- $for(0; <INTRA_8x8_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "Intra_8x8.asm"
-
-#ifdef INTRA_4x4_PAD_NENOP
- $for(0; <INTRA_4x4_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef INTRA_4x4_PAD_NOP
- $for(0; <INTRA_4x4_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "Intra_4x4.asm"
-
-#ifdef INTRA_PCM_PAD_NENOP
- $for(0; <INTRA_PCM_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef INTRA_PCM_PAD_NOP
- $for(0; <INTRA_PCM_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "Intra_PCM.asm"
-
-// Build FrameMB_Motion kernel
-//
-#define FRAME
-
- #ifdef FRAME_MB_PAD_NENOP
- $for(0; <FRAME_MB_PAD_NENOP; 1) {
- nenop
- }
- #endif
- #ifdef FRAME_MB_PAD_NOP
- $for(0; <FRAME_MB_PAD_NOP; 1) {
- nop
- }
- #endif
- #include "AVCMCInter.asm"
-#undef FRAME
-
-// Build FieldMB_Motion kernel
-//
-#define FIELD
-
- #ifdef FIELD_MB_PAD_NENOP
- $for(0; <FIELD_MB_PAD_NENOP; 1) {
- nenop
- }
- #endif
- #ifdef FIELD_MB_PAD_NOP
- $for(0; <FIELD_MB_PAD_NOP; 1) {
- nop
- }
- #endif
- #include "AVCMCInter.asm"
-#undef FIELD
-
-// Build MBAff_Motion kernel
-//
-#define MBAFF
-
- #ifdef MBAFF_MB_PAD_NENOP
- $for(0; <MBAFF_MB_PAD_NENOP; 1) {
- nenop
- }
- #endif
- #ifdef MBAFF_MB_PAD_NOP
- $for(0; <MBAFF_MB_PAD_NOP; 1) {
- nop
- }
- #endif
- #include "AVCMCInter.asm"
-#undef MBAFF
-
-#ifdef SW_SCOREBOARD
-
-// SW scoreboard kernel for non-MBAFF
-//
-#ifdef SCOREBOARD_PAD_NENOP
- $for(0; <SCOREBOARD_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef SCOREBOARD_PAD_NOP
- $for(0; <SCOREBOARD_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "scoreboard.asm"
-
-// SW scoreboard kernel for MBAFF
-
-#ifdef SCOREBOARD_MBAFF_PAD_NENOP
- $for(0; <SCOREBOARD_MBAFF_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef SCOREBOARD_MBAFF_PAD_NOP
- $for(0; <SCOREBOARD_MBAFF_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "scoreboard_MBAFF.asm"
-
-#elif defined(HW_SCOREBOARD)
-
-// SetHWscoreboard kernel for non-MBAFF
-//
-#ifdef SETHWSCOREBOARD_PAD_NENOP
- $for(0; <SETHWSCOREBOARD_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef SETHWSCOREBOARD_PAD_NOP
- $for(0; <SETHWSCOREBOARD_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "SetHWScoreboard.asm"
-
-// SetHWscoreboard kernel for MBAFF
-
-#ifdef SETHWSCOREBOARD_MBAFF_PAD_NENOP
- $for(0; <SETHWSCOREBOARD_MBAFF_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef SETHWSCOREBOARD_MBAFF_PAD_NOP
- $for(0; <SETHWSCOREBOARD_MBAFF_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "SetHWScoreboard_MBAFF.asm"
-
-#endif // SW_SCOREBOARD
-
-#ifdef BSDRESET_PAD_NENOP
- $for(0; <BSDRESET_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef BSDRESET_PAD_NOP
- $for(0; <BSDRESET_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "BSDReset.asm"
-
-#ifdef DCRESETDUMMY_PAD_NENOP
- $for(0; <DCRESETDUMMY_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef DCRESETDUMMY_PAD_NOP
- $for(0; <DCRESETDUMMY_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "DCResetDummy.asm"
-
-#ifdef ENABLE_ILDB
-
-// Build all ILDB kernels
-//
-// Undefine some previous defined symbols since they will be re-defined/re-declared in ILDB kernels
-#undef A
-#undef B
-#undef p0
-#undef p1
-
-#define MSGPAYLOADB MSGPAYLOADB_ILDB
-#define MSGPAYLOADW MSGPAYLOADW_ILDB
-#define MSGPAYLOADD MSGPAYLOADD_ILDB
-#define MSGPAYLOADF MSGPAYLOADF_ILDB
-
-// < Frame ILDB >
-#define _PROGRESSIVE
-#define ILDB_LABEL(x) x##_ILDB_FRAME
-#ifdef AVC_ILDB_ROOT_Y_ILDB_FRAME_PAD_NENOP
- $for(0; <AVC_ILDB_ROOT_Y_ILDB_FRAME_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef AVC_ILDB_ROOT_Y_ILDB_FRAME_PAD_NOP
- $for(0; <AVC_ILDB_ROOT_Y_ILDB_FRAME_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "AVC_ILDB_Root_Y.asm"
-
-#ifdef AVC_ILDB_CHILD_Y_ILDB_FRAME_PAD_NENOP
- $for(0; <AVC_ILDB_CHILD_Y_ILDB_FRAME_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef AVC_ILDB_CHILD_Y_ILDB_FRAME_PAD_NOP
- $for(0; <AVC_ILDB_CHILD_Y_ILDB_FRAME_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "AVC_ILDB_Child_Y.asm"
-
-#ifdef AVC_ILDB_ROOT_UV_ILDB_FRAME_PAD_NENOP
- $for(0; <AVC_ILDB_ROOT_UV_ILDB_FRAME_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef AVC_ILDB_ROOT_UV_ILDB_FRAME_PAD_NOP
- $for(0; <AVC_ILDB_ROOT_UV_ILDB_FRAME_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "AVC_ILDB_Root_UV.asm"
-
-#ifdef AVC_ILDB_CHILD_UV_ILDB_FRAME_PAD_NENOP
- $for(0; <AVC_ILDB_CHILD_UV_ILDB_FRAME_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef AVC_ILDB_CHILD_UV_ILDB_FRAME_PAD_NOP
- $for(0; <AVC_ILDB_CHILD_UV_ILDB_FRAME_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "AVC_ILDB_Child_UV.asm"
-#undef ILDB_LABEL
-#undef _PROGRESSIVE
-
-// < Field ILDB >
-#define _FIELD
-#define ILDB_LABEL(x) x##_ILDB_FIELD
-#ifdef AVC_ILDB_ROOT_Y_ILDB_FIELD_PAD_NENOP
- $for(0; <AVC_ILDB_ROOT_Y_ILDB_FIELD_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef AVC_ILDB_ROOT_Y_ILDB_FIELD_PAD_NOP
- $for(0; <AVC_ILDB_ROOT_Y_ILDB_FIELD_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "AVC_ILDB_Root_Field_Y.asm"
-
-#ifdef AVC_ILDB_CHILD_Y_ILDB_FIELD_PAD_NENOP
- $for(0; <AVC_ILDB_CHILD_Y_ILDB_FIELD_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef AVC_ILDB_CHILD_Y_ILDB_FIELD_PAD_NOP
- $for(0; <AVC_ILDB_CHILD_Y_ILDB_FIELD_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "AVC_ILDB_Child_Field_Y.asm"
-
-#ifdef AVC_ILDB_ROOT_UV_ILDB_FIELD_PAD_NENOP
- $for(0; <AVC_ILDB_ROOT_UV_ILDB_FIELD_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef AVC_ILDB_ROOT_UV_ILDB_FIELD_PAD_NOP
- $for(0; <AVC_ILDB_ROOT_UV_ILDB_FIELD_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "AVC_ILDB_Root_Field_UV.asm"
-
-#ifdef AVC_ILDB_CHILD_UV_ILDB_FIELD_PAD_NENOP
- $for(0; <AVC_ILDB_CHILD_UV_ILDB_FIELD_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef AVC_ILDB_CHILD_UV_ILDB_FIELD_PAD_NOP
- $for(0; <AVC_ILDB_CHILD_UV_ILDB_FIELD_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "AVC_ILDB_Child_Field_UV.asm"
-#undef ILDB_LABEL
-#undef _FIELD
-
-// < MBAFF Frame ILDB >
-#define _MBAFF
-#define ILDB_LABEL(x) x##_ILDB_MBAFF
-#ifdef AVC_ILDB_ROOT_Y_ILDB_MBAFF_PAD_NENOP
- $for(0; <AVC_ILDB_ROOT_Y_ILDB_MBAFF_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef AVC_ILDB_ROOT_Y_ILDB_MBAFF_PAD_NOP
- $for(0; <AVC_ILDB_ROOT_Y_ILDB_MBAFF_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "AVC_ILDB_Root_Mbaff_Y.asm"
-
-#ifdef AVC_ILDB_CHILD_Y_ILDB_MBAFF_PAD_NENOP
- $for(0; <AVC_ILDB_CHILD_Y_ILDB_MBAFF_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef AVC_ILDB_CHILD_Y_ILDB_MBAFF_PAD_NOP
- $for(0; <AVC_ILDB_CHILD_Y_ILDB_MBAFF_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "AVC_ILDB_Child_Mbaff_Y.asm"
-
-#ifdef AVC_ILDB_ROOT_UV_ILDB_MBAFF_PAD_NENOP
- $for(0; <AVC_ILDB_ROOT_UV_ILDB_MBAFF_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef AVC_ILDB_ROOT_UV_ILDB_MBAFF_PAD_NOP
- $for(0; <AVC_ILDB_ROOT_UV_ILDB_MBAFF_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "AVC_ILDB_Root_Mbaff_UV.asm"
-
-#ifdef AVC_ILDB_CHILD_UV_ILDB_MBAFF_PAD_NENOP
- $for(0; <AVC_ILDB_CHILD_UV_ILDB_MBAFF_PAD_NENOP; 1) {
- nenop
- }
-#endif
-#ifdef AVC_ILDB_CHILD_UV_ILDB_MBAFF_PAD_NOP
- $for(0; <AVC_ILDB_CHILD_UV_ILDB_MBAFF_PAD_NOP; 1) {
- nop
- }
-#endif
- #include "AVC_ILDB_Child_Mbaff_UV.asm"
-#undef ILDB_LABEL
-#undef _MBAFF
-
-#endif // ENABLE_ILDB
-
-AllAVC_END:
-nop
-// End of AllAVC
-
-.end_code
-
-.end_kernel
-
diff --git a/src/shaders/h264/mc/AllAVCField.asm b/src/shaders/h264/mc/AllAVCField.asm
deleted file mode 100644
index 5a07033..0000000
--- a/src/shaders/h264/mc/AllAVCField.asm
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * All field picture HWMC kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// 2857702934 // 0xAA551616 - GUID for Intra_16x16 luma prediction mode offsets
-// 0 // Offset to Intra_16x16 luma prediction mode 0
-// 9 // Offset to Intra_16x16 luma prediction mode 1
-// 19 // Offset to Intra_16x16 luma prediction mode 2
-// 42 // Offset to Intra_16x16 luma prediction mode 3
-// 2857699336 // 0xAA550808 - GUID for Intra_8x8 luma prediction mode offsets
-// 0 // Offset to Intra_8x8 luma prediction mode 0
-// 5 // Offset to Intra_8x8 luma prediction mode 1
-// 10 // Offset to Intra_8x8 luma prediction mode 2
-// 26 // Offset to Intra_8x8 luma prediction mode 3
-// 36 // Offset to Intra_8x8 luma prediction mode 4
-// 50 // Offset to Intra_8x8 luma prediction mode 5
-// 68 // Offset to Intra_8x8 luma prediction mode 6
-// 85 // Offset to Intra_8x8 luma prediction mode 7
-// 95 // Offset to Intra_8x8 luma prediction mode 8
-// 2857698308 // 0xAA550404 - GUID for Intra_4x4 luma prediction mode offsets
-// 0 // Offset to Intra_4x4 luma prediction mode 0
-// 2 // Offset to Intra_4x4 luma prediction mode 1
-// 4 // Offset to Intra_4x4 luma prediction mode 2
-// 16 // Offset to Intra_4x4 luma prediction mode 3
-// 23 // Offset to Intra_4x4 luma prediction mode 4
-// 32 // Offset to Intra_4x4 luma prediction mode 5
-// 45 // Offset to Intra_4x4 luma prediction mode 6
-// 59 // Offset to Intra_4x4 luma prediction mode 7
-// 66 // Offset to Intra_4x4 luma prediction mode 8
-// 2857700364 // 0xAA550C0C - GUID for intra chroma prediction mode offsets
-// 0 // Offset to intra chroma prediction mode 0
-// 30 // Offset to intra chroma prediction mode 1
-// 36 // Offset to intra chroma prediction mode 2
-// 41 // Offset to intra chroma prediction mode 3
-
-// Kernel name: AllAVCField.asm
-//
-// All field picture HWMC kernels merged into this file
-//
-// $Revision: 1 $
-// $Date: 4/13/06 4:35p $
-//
-
-// ----------------------------------------------------
-// Main: AllAVCField
-// ----------------------------------------------------
-
-#define ALLHWMC
-#define COMBINED_KERNEL
-
-.kernel AllAVCField
-
- #include "Intra_PCM.asm"
- #include "Intra_16x16.asm"
- #include "Intra_8x8.asm"
- #include "Intra_4x4.asm"
- #include "scoreboard.asm"
-
- #define FIELD
- #include "AVCMCInter.asm"
-
-// End of AllAVCField
-
-.end_kernel
-
diff --git a/src/shaders/h264/mc/AllAVCFrame.asm b/src/shaders/h264/mc/AllAVCFrame.asm
deleted file mode 100644
index de43b67..0000000
--- a/src/shaders/h264/mc/AllAVCFrame.asm
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * All frame picture HWMC kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// 2857702934 // 0xAA551616 - GUID for Intra_16x16 luma prediction mode offsets
-// 0 // Offset to Intra_16x16 luma prediction mode 0
-// 9 // Offset to Intra_16x16 luma prediction mode 1
-// 19 // Offset to Intra_16x16 luma prediction mode 2
-// 42 // Offset to Intra_16x16 luma prediction mode 3
-// 2857699336 // 0xAA550808 - GUID for Intra_8x8 luma prediction mode offsets
-// 0 // Offset to Intra_8x8 luma prediction mode 0
-// 5 // Offset to Intra_8x8 luma prediction mode 1
-// 10 // Offset to Intra_8x8 luma prediction mode 2
-// 26 // Offset to Intra_8x8 luma prediction mode 3
-// 36 // Offset to Intra_8x8 luma prediction mode 4
-// 50 // Offset to Intra_8x8 luma prediction mode 5
-// 68 // Offset to Intra_8x8 luma prediction mode 6
-// 85 // Offset to Intra_8x8 luma prediction mode 7
-// 95 // Offset to Intra_8x8 luma prediction mode 8
-// 2857698308 // 0xAA550404 - GUID for Intra_4x4 luma prediction mode offsets
-// 0 // Offset to Intra_4x4 luma prediction mode 0
-// 2 // Offset to Intra_4x4 luma prediction mode 1
-// 4 // Offset to Intra_4x4 luma prediction mode 2
-// 16 // Offset to Intra_4x4 luma prediction mode 3
-// 23 // Offset to Intra_4x4 luma prediction mode 4
-// 32 // Offset to Intra_4x4 luma prediction mode 5
-// 45 // Offset to Intra_4x4 luma prediction mode 6
-// 59 // Offset to Intra_4x4 luma prediction mode 7
-// 66 // Offset to Intra_4x4 luma prediction mode 8
-// 2857700364 // 0xAA550C0C - GUID for intra chroma prediction mode offsets
-// 0 // Offset to intra chroma prediction mode 0
-// 30 // Offset to intra chroma prediction mode 1
-// 36 // Offset to intra chroma prediction mode 2
-// 41 // Offset to intra chroma prediction mode 3
-
-// Kernel name: AllAVCFrame.asm
-//
-// All frame picture HWMC kernels merged into this file
-//
-// $Revision: 1 $
-// $Date: 4/13/06 4:35p $
-//
-
-// ----------------------------------------------------
-// Main: AllAVCFrame
-// ----------------------------------------------------
-
-#define ALLHWMC
-#define COMBINED_KERNEL
-
-.kernel AllAVCFrame
-
- #include "Intra_PCM.asm"
- #include "Intra_16x16.asm"
- #include "Intra_8x8.asm"
- #include "Intra_4x4.asm"
- #include "scoreboard.asm"
-
- #include "AVCMCInter.asm"
-
-// End of AllAVCFrame
-
-.end_kernel
-
diff --git a/src/shaders/h264/mc/AllAVCMBAFF.asm b/src/shaders/h264/mc/AllAVCMBAFF.asm
deleted file mode 100644
index 62aab2f..0000000
--- a/src/shaders/h264/mc/AllAVCMBAFF.asm
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * All MBAFF frame picture HWMC kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// 2857702934 // 0xAA551616 - GUID for Intra_16x16 luma prediction mode offsets
-// 0 // Offset to Intra_16x16 luma prediction mode 0
-// 9 // Offset to Intra_16x16 luma prediction mode 1
-// 19 // Offset to Intra_16x16 luma prediction mode 2
-// 42 // Offset to Intra_16x16 luma prediction mode 3
-// 2857699336 // 0xAA550808 - GUID for Intra_8x8 luma prediction mode offsets
-// 0 // Offset to Intra_8x8 luma prediction mode 0
-// 5 // Offset to Intra_8x8 luma prediction mode 1
-// 10 // Offset to Intra_8x8 luma prediction mode 2
-// 26 // Offset to Intra_8x8 luma prediction mode 3
-// 36 // Offset to Intra_8x8 luma prediction mode 4
-// 50 // Offset to Intra_8x8 luma prediction mode 5
-// 68 // Offset to Intra_8x8 luma prediction mode 6
-// 85 // Offset to Intra_8x8 luma prediction mode 7
-// 95 // Offset to Intra_8x8 luma prediction mode 8
-// 2857698308 // 0xAA550404 - GUID for Intra_4x4 luma prediction mode offsets
-// 0 // Offset to Intra_4x4 luma prediction mode 0
-// 2 // Offset to Intra_4x4 luma prediction mode 1
-// 4 // Offset to Intra_4x4 luma prediction mode 2
-// 16 // Offset to Intra_4x4 luma prediction mode 3
-// 23 // Offset to Intra_4x4 luma prediction mode 4
-// 32 // Offset to Intra_4x4 luma prediction mode 5
-// 45 // Offset to Intra_4x4 luma prediction mode 6
-// 59 // Offset to Intra_4x4 luma prediction mode 7
-// 66 // Offset to Intra_4x4 luma prediction mode 8
-// 2857700364 // 0xAA550C0C - GUID for intra chroma prediction mode offsets
-// 0 // Offset to intra chroma prediction mode 0
-// 30 // Offset to intra chroma prediction mode 1
-// 36 // Offset to intra chroma prediction mode 2
-// 41 // Offset to intra chroma prediction mode 3
-
-// Kernel name: AllAVCMBAFF.asm
-//
-// All MBAFF frame picture HWMC kernels merged into this file
-//
-// $Revision: 1 $
-// $Date: 4/13/06 4:35p $
-//
-
-// ----------------------------------------------------
-// Main: AllAVCMBAFF
-// ----------------------------------------------------
-
-#define ALLHWMC
-#define COMBINED_KERNEL
-
-.kernel AllAVCMBAFF
-
- #include "Intra_PCM.asm"
- #include "Intra_16x16.asm"
- #include "Intra_8x8.asm"
- #include "Intra_4x4.asm"
- #include "scoreboard.asm"
-
- #define MBAFF
- #include "AVCMCInter.asm"
-
-// End of AllAVCMBAFF
-
-.end_kernel
-
diff --git a/src/shaders/h264/mc/AllAVC_Build.inc b/src/shaders/h264/mc/AllAVC_Build.inc
deleted file mode 100644
index 11baa68..0000000
--- a/src/shaders/h264/mc/AllAVC_Build.inc
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-$table {
-AllAVC_END_IP/INSTFACTOR // Total instruction count
-#if (defined(SW_SCOREBOARD) || defined(HW_SCOREBOARD)) && defined(ENABLE_ILDB)
-// 23 // Total kernel count
-#elif defined(SW_SCOREBOARD) || defined(HW_SCOREBOARD)
-// 11 // Total kernel count
-#elif defined(ENABLE_ILDB)
-// 21 // Total kernel count
-#else
-// 11 // Total kernel count
-#endif
-INTRA_16x16_ENTRY/INSTFACTOR // Instruction offset to 'Intra_16x16'
-INTRA_8x8_ENTRY/INSTFACTOR // Instruction offset to 'Intra_8x8'
-INTRA_4x4_ENTRY/INSTFACTOR // Instruction offset to 'Intra_4x4'
-INTRA_PCM_ENTRY/INSTFACTOR // Instruction offset to 'Intra_PCM'
-FRAME_MB_ENTRY/INSTFACTOR // Instruction offset to 'FrameMB_Motion'
-FIELD_MB_ENTRY/INSTFACTOR // Instruction offset to 'FieldMB_Motion'
-MBAFF_MB_ENTRY/INSTFACTOR // Instruction offset to 'MBAff_Motion'
-#ifdef SW_SCOREBOARD
-SCOREBOARD_ENTRY/INSTFACTOR // Instruction offset to 'scoreboard'
-SCOREBOARD_MBAFF_ENTRY/INSTFACTOR // Instruction offset to 'scoreboard_MBAFF'
-#elif defined(HW_SCOREBOARD)
-SETHWSCOREBOARD_ENTRY/INSTFACTOR // Instruction offset to 'AVC_SetIntraDepend'
-SETHWSCOREBOARD_MBAFF_ENTRY/INSTFACTOR // Instruction offset to 'AVC_SetIntraDependMBAFF'
-#endif // SW_SCOREBOARD
-#ifdef ENABLE_ILDB
-AVC_ILDB_ROOT_Y_ILDB_FRAME_ENTRY/INSTFACTOR // Instruction offset to 'AVC_ILDB_Root_Y'
-AVC_ILDB_CHILD_Y_ILDB_FRAME_ENTRY/INSTFACTOR // Instruction offset to 'AVC_ILDB_Child_Y'
-AVC_ILDB_ROOT_UV_ILDB_FRAME_ENTRY/INSTFACTOR // Instruction offset to 'AVC_ILDB_Root_UV'
-AVC_ILDB_CHILD_UV_ILDB_FRAME_ENTRY/INSTFACTOR // Instruction offset to 'AVC_ILDB_Child_UV'
-AVC_ILDB_ROOT_Y_ILDB_FIELD_ENTRY/INSTFACTOR // Instruction offset to 'AVC_ILDB_Root_Field_Y'
-AVC_ILDB_CHILD_Y_ILDB_FIELD_ENTRY/INSTFACTOR // Instruction offset to 'AVC_ILDB_Child_Field_Y'
-AVC_ILDB_ROOT_UV_ILDB_FIELD_ENTRY/INSTFACTOR // Instruction offset to 'AVC_ILDB_Root_Field_UV'
-AVC_ILDB_CHILD_UV_ILDB_FIELD_ENTRY/INSTFACTOR // Instruction offset to 'AVC_ILDB_Child_Field_UV'
-AVC_ILDB_ROOT_Y_ILDB_MBAFF_ENTRY/INSTFACTOR // Instruction offset to 'AVC_ILDB_Root_Mbaff_Y'
-AVC_ILDB_CHILD_Y_ILDB_MBAFF_ENTRY/INSTFACTOR // Instruction offset to 'AVC_ILDB_Child_Mbaff_Y'
-AVC_ILDB_ROOT_UV_ILDB_MBAFF_ENTRY/INSTFACTOR // Instruction offset to 'AVC_ILDB_Root_Mbaff_UV'
-AVC_ILDB_CHILD_UV_ILDB_MBAFF_ENTRY/INSTFACTOR // Instruction offset to 'AVC_ILDB_Child_Mbaff_UV'
-#endif // ENABLE_ILDB
-BSDRESET_ENTRY/INSTFACTOR // Instruction offset to 'BSDReset'
-DCRESETDUMMY_ENTRY/INSTFACTOR // Instruction offset to 'DCResetDummy'
-
-// 0 // Instruction offset to Intra_4x4_luma_prediction_mode_0
-INTRA_4X4_HORIZONTAL_IP-INTRA_4X4_VERTICAL_IP // Instruction offset to Intra_4x4_luma_prediction_mode_1
-INTRA_4X4_DC_IP-INTRA_4X4_VERTICAL_IP // Instruction offset to Intra_4x4_luma_prediction_mode_2
-INTRA_4X4_DIAG_DOWN_LEFT_IP-INTRA_4X4_VERTICAL_IP // Instruction offset to Intra_4x4_luma_prediction_mode_3
-INTRA_4X4_DIAG_DOWN_RIGHT_IP-INTRA_4X4_VERTICAL_IP // Instruction offset to Intra_4x4_luma_prediction_mode_4
-INTRA_4X4_VERT_RIGHT_IP-INTRA_4X4_VERTICAL_IP // Instruction offset to Intra_4x4_luma_prediction_mode_5
-INTRA_4X4_HOR_DOWN_IP-INTRA_4X4_VERTICAL_IP // Instruction offset to Intra_4x4_luma_prediction_mode_6
-INTRA_4X4_VERT_LEFT_IP-INTRA_4X4_VERTICAL_IP // Instruction offset to Intra_4x4_luma_prediction_mode_7
-INTRA_4X4_HOR_UP_IP-INTRA_4X4_VERTICAL_IP // Instruction offset to Intra_4x4_luma_prediction_mode_8
-
-// 0 // Instruction offset to Intra_8x8_luma_prediction_mode_0
-INTRA_8X8_HORIZONTAL_IP-INTRA_8X8_VERTICAL_IP // Instruction offset to Intra_8x8_luma_prediction_mode_1
-INTRA_8X8_DC_IP-INTRA_8X8_VERTICAL_IP // Instruction offset to Intra_8x8_luma_prediction_mode_2
-INTRA_8X8_DIAG_DOWN_LEFT_IP-INTRA_8X8_VERTICAL_IP // Instruction offset to Intra_8x8_luma_prediction_mode_3
-INTRA_8X8_DIAG_DOWN_RIGHT_IP-INTRA_8X8_VERTICAL_IP // Instruction offset to Intra_8x8_luma_prediction_mode_4
-INTRA_8X8_VERT_RIGHT_IP-INTRA_8X8_VERTICAL_IP // Instruction offset to Intra_8x8_luma_prediction_mode_5
-INTRA_8X8_HOR_DOWN_IP-INTRA_8X8_VERTICAL_IP // Instruction offset to Intra_8x8_luma_prediction_mode_6
-INTRA_8X8_VERT_LEFT_IP-INTRA_8X8_VERTICAL_IP // Instruction offset to Intra_8x8_luma_prediction_mode_7
-INTRA_8X8_HOR_UP_IP-INTRA_8X8_VERTICAL_IP // Instruction offset to Intra_8x8_luma_prediction_mode_8
-
-// 0 // Instruction offset to Intra_16x16_luma_prediction_mode_0
-INTRA_16x16_HORIZONTAL_IP-INTRA_16x16_VERTICAL_IP // Instruction offset to Intra_16x16_luma_prediction_mode_1
-INTRA_16x16_DC_IP-INTRA_16x16_VERTICAL_IP // Instruction offset to Intra_16x16_luma_prediction_mode_2
-INTRA_16x16_PLANE_IP-INTRA_16x16_VERTICAL_IP // Instruction offset to Intra_16x16_luma_prediction_mode_3
-
-// 0 // Instruction offset to intra_chroma_prediction_mode_0
-INTRA_CHROMA_HORIZONTAL_IP-INTRA_CHROMA_DC_IP // Instruction offset to intra_chroma_prediction_mode_1
-INTRA_CHROMA_VERTICAL_IP-INTRA_CHROMA_DC_IP // Instruction offset to intra_chroma_prediction_mode_2
-INTRA_Chroma_PLANE_IP-INTRA_CHROMA_DC_IP // Instruction offset to intra_chroma_prediction_mode_3
-
-intra_Pred_4x4_Y_IP-ADD_ERROR_SB3_IP*0x100+intra_Pred_4x4_Y_IP-ADD_ERROR_SB2_IP*0x100+intra_Pred_4x4_Y_IP-ADD_ERROR_SB1_IP*0x100+intra_Pred_4x4_Y_IP-ADD_ERROR_SB0_IP // Instruction offset to intra_4x4_pred_module
-}
diff --git a/src/shaders/h264/mc/AllAVC_Export.inc b/src/shaders/h264/mc/AllAVC_Export.inc
deleted file mode 100644
index eae9348..0000000
--- a/src/shaders/h264/mc/AllAVC_Export.inc
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-.export entry_point INTRA_16x16
-.export entry_point INTRA_8x8
-.export entry_point INTRA_4x4
-.export entry_point INTRA_PCM
-.export entry_point FRAME_MB
-.export entry_point FIELD_MB
-.export entry_point MBAFF_MB
-#ifdef SW_SCOREBOARD
-.export entry_point SCOREBOARD
-.export entry_point SCOREBOARD_MBAFF
-#elif defined(HW_SCOREBOARD)
-.export entry_point SETHWSCOREBOARD
-.export entry_point SETHWSCOREBOARD_MBAFF
-#endif // SW_SCOREBOARD
-
-#ifdef ENABLE_ILDB
-.export entry_point AVC_ILDB_ROOT_Y_ILDB_FRAME
-.export entry_point AVC_ILDB_CHILD_Y_ILDB_FRAME
-.export entry_point AVC_ILDB_ROOT_UV_ILDB_FRAME
-.export entry_point AVC_ILDB_CHILD_UV_ILDB_FRAME
-.export entry_point AVC_ILDB_ROOT_Y_ILDB_FIELD
-.export entry_point AVC_ILDB_CHILD_Y_ILDB_FIELD
-.export entry_point AVC_ILDB_ROOT_UV_ILDB_FIELD
-.export entry_point AVC_ILDB_CHILD_UV_ILDB_FIELD
-.export entry_point AVC_ILDB_ROOT_Y_ILDB_MBAFF
-.export entry_point AVC_ILDB_CHILD_Y_ILDB_MBAFF
-.export entry_point AVC_ILDB_ROOT_UV_ILDB_MBAFF
-.export entry_point AVC_ILDB_CHILD_UV_ILDB_MBAFF
-#endif // ENABLE_ILDB
-
-.export entry_point BSDRESET
-.export entry_point DCRESETDUMMY
-
-.export label INTRA_16x16_VERTICAL
-.export label INTRA_16x16_HORIZONTAL
-.export label INTRA_16x16_DC
-.export label INTRA_16x16_PLANE
-
-.export label INTRA_8X8_VERTICAL
-.export label INTRA_8X8_HORIZONTAL
-.export label INTRA_8X8_DC
-.export label INTRA_8X8_DIAG_DOWN_LEFT
-.export label INTRA_8X8_DIAG_DOWN_RIGHT
-.export label INTRA_8X8_VERT_RIGHT
-.export label INTRA_8X8_HOR_DOWN
-.export label INTRA_8X8_VERT_LEFT
-.export label INTRA_8X8_HOR_UP
-
-.export label INTRA_4X4_VERTICAL
-.export label INTRA_4X4_HORIZONTAL
-.export label INTRA_4X4_DC
-.export label INTRA_4X4_DIAG_DOWN_LEFT
-.export label INTRA_4X4_DIAG_DOWN_RIGHT
-.export label INTRA_4X4_VERT_RIGHT
-.export label INTRA_4X4_HOR_DOWN
-.export label INTRA_4X4_VERT_LEFT
-.export label INTRA_4X4_HOR_UP
-
-.export label INTRA_CHROMA_DC
-.export label INTRA_CHROMA_HORIZONTAL
-.export label INTRA_CHROMA_VERTICAL
-.export label INTRA_Chroma_PLANE
-
-.export label intra_Pred_4x4_Y
-.export label ADD_ERROR_SB0
-.export label ADD_ERROR_SB1
-.export label ADD_ERROR_SB2
-.export label ADD_ERROR_SB3
-
-.export label AllAVC_END
-
-#ifdef SW_SCOREBOARD
-.export label MB_Loop
-.export label No_Message
-.export label Dependency_Check
-.export label Notify_MSG
-.export label Update_CurMB
-.export label MBAFF_MB_Loop
-.export label MBAFF_No_Message
-.export label MBAFF_Dependency_Check
-.export label MBAFF_Notify_MSG
-.export label MBAFF_Update_CurMB
-
-//.export label
-
-// Definitions for first pass MC kernel building
-#ifndef No_Message_IP
-#define No_Message_IP 0
-#endif
-
-#ifndef Dependency_Check_IP
-#define Dependency_Check_IP 0
-#endif
-
-#ifndef Notify_MSG_IP
-#define Notify_MSG_IP 0
-#endif
-
-#ifndef Update_CurMB_IP
-#define Update_CurMB_IP 0
-#endif
-
-#ifndef MBAFF_No_Message_IP
-#define MBAFF_No_Message_IP 0
-#endif
-
-#ifndef MBAFF_Dependency_Check_IP
-#define MBAFF_Dependency_Check_IP 0
-#endif
-
-#ifndef MBAFF_Notify_MSG_IP
-#define MBAFF_Notify_MSG_IP 0
-#endif
-
-#ifndef AS_ENABLED
- #ifndef MBAFF_MB_Loop_IP
- #define MBAFF_MB_Loop_IP 0
- #endif
-
- #ifndef MB_Loop_IP
- #define MB_Loop_IP 0
- #endif
-#endif // End AS_ENABLED
-
-#ifndef MBAFF_Update_CurMB_IP
-#define MBAFF_Update_CurMB_IP 0
-#endif
-
-#endif // SW_SCOREBOARD
-
-#ifdef ENABLE_ILDB
-.export label ALL_SPAWNED_UV_ILDB_FRAME
-.export label SLEEP_ENTRY_UV_ILDB_FRAME
-.export label POST_SLEEP_UV_ILDB_FRAME
-.export label ALL_SPAWNED_Y_ILDB_FRAME
-.export label SLEEP_ENTRY_Y_ILDB_FRAME
-.export label POST_SLEEP_Y_ILDB_FRAME
-
-// Definitions for first pass ILDB kernel building
-#ifndef ALL_SPAWNED_UV_ILDB_FRAME_IP
-#define ALL_SPAWNED_UV_ILDB_FRAME_IP 0
-#endif
-
-#ifndef SLEEP_ENTRY_UV_ILDB_FRAME_IP
-#define SLEEP_ENTRY_UV_ILDB_FRAME_IP 0
-#endif
-
-#ifndef POST_SLEEP_UV_ILDB_FRAME_IP
-#define POST_SLEEP_UV_ILDB_FRAME_IP 0
-#endif
-
-#ifndef ALL_SPAWNED_Y_ILDB_FRAME_IP
-#define ALL_SPAWNED_Y_ILDB_FRAME_IP 0
-#endif
-
-#ifndef SLEEP_ENTRY_Y_ILDB_FRAME_IP
-#define SLEEP_ENTRY_Y_ILDB_FRAME_IP 0
-#endif
-
-#ifndef POST_SLEEP_Y_ILDB_FRAME_IP
-#define POST_SLEEP_Y_ILDB_FRAME_IP 0
-#endif
-
-#endif // ENABLE_ILDB
diff --git a/src/shaders/h264/mc/AllIntra.asm b/src/shaders/h264/mc/AllIntra.asm
deleted file mode 100644
index f633446..0000000
--- a/src/shaders/h264/mc/AllIntra.asm
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * All intra-prediction macroblock kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// 2857702934 // 0xAA551616 - GUID for Intra_16x16 luma prediction mode offsets
-// 0 // Offset to Intra_16x16 luma prediction mode 0
-// 9 // Offset to Intra_16x16 luma prediction mode 1
-// 19 // Offset to Intra_16x16 luma prediction mode 2
-// 42 // Offset to Intra_16x16 luma prediction mode 3
-// 2857699336 // 0xAA550808 - GUID for Intra_8x8 luma prediction mode offsets
-// 0 // Offset to Intra_8x8 luma prediction mode 0
-// 5 // Offset to Intra_8x8 luma prediction mode 1
-// 10 // Offset to Intra_8x8 luma prediction mode 2
-// 26 // Offset to Intra_8x8 luma prediction mode 3
-// 36 // Offset to Intra_8x8 luma prediction mode 4
-// 50 // Offset to Intra_8x8 luma prediction mode 5
-// 68 // Offset to Intra_8x8 luma prediction mode 6
-// 85 // Offset to Intra_8x8 luma prediction mode 7
-// 95 // Offset to Intra_8x8 luma prediction mode 8
-// 2857698308 // 0xAA550404 - GUID for Intra_4x4 luma prediction mode offsets
-// 0 // Offset to Intra_4x4 luma prediction mode 0
-// 2 // Offset to Intra_4x4 luma prediction mode 1
-// 4 // Offset to Intra_4x4 luma prediction mode 2
-// 16 // Offset to Intra_4x4 luma prediction mode 3
-// 23 // Offset to Intra_4x4 luma prediction mode 4
-// 32 // Offset to Intra_4x4 luma prediction mode 5
-// 45 // Offset to Intra_4x4 luma prediction mode 6
-// 59 // Offset to Intra_4x4 luma prediction mode 7
-// 66 // Offset to Intra_4x4 luma prediction mode 8
-// 2857700364 // 0xAA550C0C - GUID for intra chroma prediction mode offsets
-// 0 // Offset to intra chroma prediction mode 0
-// 30 // Offset to intra chroma prediction mode 1
-// 36 // Offset to intra chroma prediction mode 2
-// 41 // Offset to intra chroma prediction mode 3
-
-// Kernel name: AllIntra.asm
-//
-// All HWMC kernels merged into this file
-//
-// $Revision: 1 $
-// $Date: 4/13/06 4:35p $
-//
-
-// ----------------------------------------------------
-// Main: ALLINTRA
-// ----------------------------------------------------
-
-#define ALLHWMC
-#define COMBINED_KERNEL
-
-.kernel ALLINTRA
-
- // All frame destination HWMC kernels
- //
- #include "Intra_PCM.asm"
- #include "Intra_16x16.asm"
- #include "Intra_8x8.asm"
- #include "Intra_4x4.asm"
-
-// End of ALLINTRA
-
-.end_kernel
-
diff --git a/src/shaders/h264/mc/BSDReset.asm b/src/shaders/h264/mc/BSDReset.asm
deleted file mode 100644
index c440df8..0000000
--- a/src/shaders/h264/mc/BSDReset.asm
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Initial kernel for filling initial BSD command buffer
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: BSDReset.asm
-//
-// Initial kernel for filling initial BSD command buffer
-//
-
-// ----------------------------------------------------
-// Main: BSDReset
-// ----------------------------------------------------
-
-.kernel BSDReset
-BSDRESET:
-
-#include "header.inc"
-
-.code
-#ifdef SW_SCOREBOARD
- CALL(scoreboard_start_inter,1)
- wait n0:ud // Now wait for scoreboard to response
-
-#define BSDRESET_ENABLE
- #include "scoreboard_update.asm" // scorboard update function
-#undef BSDRESET_ENABLE
-
-#endif // defined(SW_SCOREBOARD)
-
-// Terminate the thread
-//
- END_THREAD
-
-#if !defined(COMBINED_KERNEL) // For standalone kernel only
-.end_code
-
-.end_kernel
-#endif // !defined(COMBINED_KERNEL)
diff --git a/src/shaders/h264/mc/DCResetDummy.asm b/src/shaders/h264/mc/DCResetDummy.asm
deleted file mode 100644
index 274f8a2..0000000
--- a/src/shaders/h264/mc/DCResetDummy.asm
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Dummy kernel
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: DCResetDummy.asm
-//
-// Dummy kernel used by driver for debug-counter reset SW WA
-//
-
-// ----------------------------------------------------
-// Main: DCResetDummy
-// ----------------------------------------------------
-
-.kernel DCResetDummy
-DCRESETDUMMY:
-
-#include "header.inc"
-
-.code
-
-// Terminate the thread
-//
- END_THREAD
-
-#if !defined(COMBINED_KERNEL) // For standalone kernel only
-.end_code
-
-.end_kernel
-#endif // !defined(COMBINED_KERNEL)
diff --git a/src/shaders/h264/mc/Decode_Chroma_Intra.asm b/src/shaders/h264/mc/Decode_Chroma_Intra.asm
deleted file mode 100644
index c02526d..0000000
--- a/src/shaders/h264/mc/Decode_Chroma_Intra.asm
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Decode both intra chroma blocks
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__DECODE_CHROMA_INTRA__) // Make sure this is only included once
-#define __DECODE_CHROMA_INTRA__
-
-// Module name: Decode_Chroma_Intra.asm
-//
-// Decode both intra chroma blocks
-//
-
-decode_Chroma_Intra:
-#ifndef MONO
- #include "load_Intra_Ref_UV.asm" // Load intra U/V reference data
- #include "intra_Pred_Chroma.asm" // Intra predict chroma blocks
- #include "add_Error_UV.asm" // Add error data to predicted U/V data blocks
-#endif // !defined(MONO)
- #include "save_8x8_UV.asm" // Save to destination U/V frame surface
-
- RETURN
-// End of Decode_Chroma_Intra
-
-#endif // !defined(__DECODE_CHROMA_INTRA__)
diff --git a/src/shaders/h264/mc/EndIntraThread.asm b/src/shaders/h264/mc/EndIntraThread.asm
deleted file mode 100644
index cd6f3e8..0000000
--- a/src/shaders/h264/mc/EndIntraThread.asm
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Common module to end current intra thread
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: EndIntraThread.asm
-//
-// Common module to end current intra thread
-//
-#ifndef SW_SCOREBOARD
-// Check for write commit first if SW scoreboard is disabled
- mov (1) REG_WRITE_COMMIT_Y<1>:ud REG_WRITE_COMMIT_Y<0;1,0>:ud // Make sure Y write is committed
- mov (1) REG_WRITE_COMMIT_UV<1>:ud REG_WRITE_COMMIT_UV<0;1,0>:ud // Make sure U/V write is committed
-#endif
-
- END_THREAD
-
- #include "Intra_funcLib.asm"
-
-#ifndef COMBINED_KERNEL // For standalone kernel only
-.end_code
-
-.end_kernel
-#endif // COMBINED_KERNEL
-
-// End of EndIntraThread
diff --git a/src/shaders/h264/mc/HwmcOnlyHeader.inc b/src/shaders/h264/mc/HwmcOnlyHeader.inc
deleted file mode 100644
index 6904ab4..0000000
--- a/src/shaders/h264/mc/HwmcOnlyHeader.inc
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Header file used only in HWMC_ONLY mode
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: HwmcOnlyHeader.inc
-//
-// Header file used only in HWMC_ONLY mode
-//
-
-#include "header.inc"
-
-#if !defined(__HWMCONLYHEADER__) // Make sure the following are only included once
-#define __HWMCONLYHEADER__
-
-.reg_count_total 64
-.reg_count_payload 2
-
-//
-// Now, begin source code....
-//
-
-.code
-#endif // !defined(__HWMCONLYHEADER__)
-
diff --git a/src/shaders/h264/mc/Intra_16x16.asm b/src/shaders/h264/mc/Intra_16x16.asm
deleted file mode 100644
index 1541320..0000000
--- a/src/shaders/h264/mc/Intra_16x16.asm
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Decode Intra_16x16 macroblock
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: Intra_16x16.asm
-//
-// Decoding of Intra_16x16 macroblock
-//
-// $Revision: 8 $
-// $Date: 10/18/06 4:10p $
-//
-
-// ----------------------------------------------------
-// Main: Intra_16x16
-// ----------------------------------------------------
-
-#define INTRA_16X16
-
-.kernel Intra_16x16
-INTRA_16x16:
-
-#ifdef _DEBUG
-// WA for FULSIM so we'll know which kernel is being debugged
-mov (1) acc0:ud 0x00aa55a5:ud
-#endif
-
-#include "SetupForHWMC.asm"
-
-#ifdef SW_SCOREBOARD
- CALL(scoreboard_start_intra,1)
-#endif
-
-#ifdef SW_SCOREBOARD
- wait n0:ud // Now wait for scoreboard to response
-#endif
-
-//
-// Decode Y blocks
-//
-// Load reference data from neighboring macroblocks
- CALL(load_Intra_Ref_Y,1)
-
-// Intra predict Intra_16x16 luma block
- #include "intra_pred_16x16_Y.asm"
-
-// Add error data to predicted intra data
- #include "add_Error_16x16_Y.asm"
-
-// Save decoded Y picture
- CALL(save_16x16_Y,1)
-//
-// Decode U/V blocks
-//
-// Note: The decoding for chroma blocks will be the same for all intra prediction mode
-//
- CALL(decode_Chroma_Intra,1)
-
-#ifdef SW_SCOREBOARD
- #include "scoreboard_update.asm"
-#endif
-
-// Terminate the thread
-//
- #include "EndIntraThread.asm"
-
-// End of Intra_16x16
diff --git a/src/shaders/h264/mc/Intra_4x4.asm b/src/shaders/h264/mc/Intra_4x4.asm
deleted file mode 100644
index f60567b..0000000
--- a/src/shaders/h264/mc/Intra_4x4.asm
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * Decode Intra_4x4 macroblock
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: Intra_4x4.asm
-//
-// Decoding of Intra_4x4 macroblock
-//
-// $Revision: 12 $
-// $Date: 10/18/06 4:10p $
-//
-
-// ----------------------------------------------------
-// Main: Intra_4x4
-// ----------------------------------------------------
-
-#define INTRA_4X4
-
-.kernel Intra_4x4
-INTRA_4x4:
-
-#ifdef _DEBUG
-// WA for FULSIM so we'll know which kernel is being debugged
-mov (1) acc0:ud 0x02aa55a5:ud
-#endif
-
-#include "SetupForHWMC.asm"
-
-#undef PPREDBUF_Y
-#define PPREDBUF_Y a0.3 // Pointer to predicted Y picture
-
-#define REG_INTRA_PRED_AVAIL REG_INTRA_TEMP_4
-#define REG_INTRA_4X4_PRED REG_INTRA_TEMP_7 // Store predicted Intra_4x4 data
-
-// Offset where 4x4 predicted data blocks are stored
-#define PREDSUBBLK0 0*GRFWIB
-#define PREDSUBBLK1 1*GRFWIB
-#define PREDSUBBLK2 2*GRFWIB
-#define PREDSUBBLK3 3*GRFWIB
-#define PREDSUBBLK4 4*GRFWIB
-#define PREDSUBBLK5 5*GRFWIB
-#define PREDSUBBLK6 6*GRFWIB
-#define PREDSUBBLK7 7*GRFWIB
-#define PREDSUBBLK8 8*GRFWIB
-#define PREDSUBBLK9 9*GRFWIB
-#define PREDSUBBLK10 10*GRFWIB
-#define PREDSUBBLK11 11*GRFWIB
-#define PREDSUBBLK12 12*GRFWIB
-#define PREDSUBBLK13 13*GRFWIB
-#define PREDSUBBLK14 14*GRFWIB
-#define PREDSUBBLK15 15*GRFWIB
-
-// 4x4 error block byte offset within the 8x8 error block
-#define ERRBLK0 0
-#define ERRBLK1 8
-#define ERRBLK2 64
-#define ERRBLK3 72
-
-#ifdef SW_SCOREBOARD
- CALL(scoreboard_start_intra,1)
-#endif
-
-#ifdef SW_SCOREBOARD
- wait n0:ud // Now wait for scoreboard to response
-#endif
-
-//
-// Decode Y blocks
-//
-// Load reference data from neighboring macroblocks
- CALL(load_Intra_Ref_Y,1)
-
- mov (1) PERROR<1>:w ERRBUF*GRFWIB:w // Pointer to macroblock error data
- mov (1) PPREDBUF_Y<1>:w PREDBUF*GRFWIB:w // Pointer to predicted data
- shr (2) REG_INTRA_PRED_AVAIL<1>:w REG_INTRA_PRED_AVAIL_FLAG_BYTE<0;1,0>:ub 0x40:v
- and.nz.f0.0 (8) NULLREG REG_INTRA_PRED_AVAIL_FLAG_BYTE<0;1,0>:ub 4:w // Top-right macroblock available for intra prediction?
- (-f0.0.any8h) mov (8) INTRA_REF_TOP(0,16)<1> INTRA_REF_TOP(0,15)REGION(1,0) // Extend right boundary of MB B to C
-
-// Intra predict Intra_4x4 luma blocks
-//
-// Sub-macroblock 0 *****************
- mov (16) REF_TOP0(0)<1> INTRA_REF_TOP0(0) // Top reference data
- mov (8) REF_LEFT(0)<1> INTRA_REF_LEFT(0)REGION(8,4) // Left reference data
- shr (4) PRED_MODE<1>:w INTRA_PRED_MODE(0)<1;2,0> 0x4040:v // Expand IntraPredMode to 1 byte/block
- CALL(intra_Pred_4x4_Y_4,1)
- add (1) PERROR<1>:w PERROR<0;1,0>:w 0x0080:w // Pointers to next error block
-
- or (1) REG_INTRA_PRED_AVAIL<1>:w REG_INTRA_PRED_AVAIL<0;1,0>:w 0x1:w // Left neighbor is available now
-
-// Sub-macroblock 1 *****************
-
- mov (16) REF_TOP0(0)<1> INTRA_REF_TOP0(0,8) // Top reference data
- mov (4) REF_LEFT(0)<1> r[PPREDBUF_Y,PREDSUBBLK1+6]<8;1,0>:ub // Left reference data (top half)
- mov (4) REF_LEFT(0,4)<1> r[PPREDBUF_Y,PREDSUBBLK3+6]<8;1,0>:ub // Left reference data (bottom half)
- shr (4) PRED_MODE<1>:w INTRA_PRED_MODE(0,2)<1;2,0> 0x4040:v // Expand IntraPredMode to 1 byte/block
- add (1) PPREDBUF_Y<1>:w PPREDBUF_Y<0;1,0>:w 4*GRFWIB:w // Pointer to predicted sub-macroblock 1
- CALL(intra_Pred_4x4_Y_4,1)
- add (1) PERROR<1>:w PERROR<0;1,0>:w 0x0080:w // Pointers to next error block
-
- or (1) REG_INTRA_PRED_AVAIL<1>:w REG_INTRA_PRED_AVAIL.1<0;1,0>:w 0x2:w // Top neighbor is available now
-
-// Pack constructed data from word-aligned to byte-aligned format
-// to speed up save_4x4_Y module later
-// PPREDBUF_Y now points to sub-block #4
- mov (16) r[PPREDBUF_Y,-PREDSUBBLK4]<1>:ub r[PPREDBUF_Y,-PREDSUBBLK4]<32;16,2>:ub // Sub-block 0
- mov (16) r[PPREDBUF_Y,0-PREDSUBBLK4+16]<1>:ub r[PPREDBUF_Y,-PREDSUBBLK3]<32;16,2>:ub // Sub-block 1
- mov (16) r[PPREDBUF_Y,-PREDSUBBLK2]<1>:ub r[PPREDBUF_Y,-PREDSUBBLK2]<32;16,2>:ub // Sub-block 2
- mov (16) r[PPREDBUF_Y,0-PREDSUBBLK2+16]<1>:ub r[PPREDBUF_Y,-PREDSUBBLK1]<32;16,2>:ub // Sub-block 3
-
- mov (16) r[PPREDBUF_Y,-PREDSUBBLK3]<1>:ub r[PPREDBUF_Y]<32;16,2>:ub // Sub-block 4
- mov (16) r[PPREDBUF_Y,0-PREDSUBBLK3+16]<1>:ub r[PPREDBUF_Y,PREDSUBBLK1]<32;16,2>:ub // Sub-block 5
- mov (16) r[PPREDBUF_Y,-PREDSUBBLK1]<1>:ub r[PPREDBUF_Y,PREDSUBBLK2]<32;16,2>:ub // Sub-block 6
- mov (16) r[PPREDBUF_Y,0-PREDSUBBLK1+16]<1>:ub r[PPREDBUF_Y,PREDSUBBLK3]<32;16,2>:ub // Sub-block 7
-
-// Sub-macroblock 2 *****************
-
- mov (4) REF_TOP0(0)<1> INTRA_REF_LEFT0(0,28)REGION(4,1) // Top-left reference data
- mov (8) REF_TOP0(0,4)<1> r[PPREDBUF_Y,0-2*GRFWIB+12]<16;4,1>:ub // Top reference data from SB 2,3
- mov (8) REF_TOP0(0,12)<1> r[PPREDBUF_Y,0-GRFWIB+12]<16;4,1>:ub // Top reference data from SB 6,7
- mov (8) REF_TOP0(0,20)<1> r[PPREDBUF_Y,0-GRFWIB+31]<0;1,0>:ub // Top-right reference data
- mov (16) REG_INTRA_REF_TOP<1>:w REF_TOP_W(0) // Store top reference data for SubMB #2 and #3.
- mov (8) REF_LEFT(0)<1> INTRA_REF_LEFT(1)REGION(8,4) // Left reference data
- shr (4) PRED_MODE<1>:w INTRA_PRED_MODE(0,4)<1;2,0> 0x4040:v // Expand IntraPredMode to 1 byte/block
- CALL(intra_Pred_4x4_Y_4,1)
- add (1) PERROR<1>:w PERROR<0;1,0>:w 0x0080:w // Pointers to next error block
-
- or (1) REG_INTRA_PRED_AVAIL<1>:w REG_INTRA_PRED_AVAIL<0;1,0>:w 0x1:w // Left neighbor is available now
-
-// Sub-macroblock 3 *****************
-
- mov (16) REF_TOP0(0)<1> INTRA_REF_TOP0(0,8) // Top reference data
- mov (8) REF_TOP0(0,16)<1> INTRA_REF_TOP0(0,24)REGION(8,1) // Top reference data
- mov (4) REF_LEFT(0)<1> r[PPREDBUF_Y,PREDSUBBLK1+6]<8;1,0>:ub // Left reference data (top half)
- mov (4) REF_LEFT(0,4)<1> r[PPREDBUF_Y,PREDSUBBLK3+6]<8;1,0>:ub // Left reference data (bottom half)
- shr (4) PRED_MODE<1>:w INTRA_PRED_MODE(0,6)<1;2,0> 0x4040:v // Expand IntraPredMode to 1 byte/block
- add (1) PPREDBUF_Y<1>:w PPREDBUF_Y<0;1,0>:w 4*GRFWIB:w // Pointer to predicted sub-macroblock 3
- CALL(intra_Pred_4x4_Y_4,1)
-
-// Pack constructed data from word-aligned to byte-aligned format
-// to speed up save_4x4_Y module later
-// PPREDBUF_Y now points to sub-block #12
- mov (16) r[PPREDBUF_Y,-PREDSUBBLK4]<1>:ub r[PPREDBUF_Y,-PREDSUBBLK4]<32;16,2>:ub // Sub-block 8
- mov (16) r[PPREDBUF_Y,0-PREDSUBBLK4+16]<1>:ub r[PPREDBUF_Y,-PREDSUBBLK3]<32;16,2>:ub // Sub-block 9
- mov (16) r[PPREDBUF_Y,-PREDSUBBLK2]<1>:ub r[PPREDBUF_Y,-PREDSUBBLK2]<32;16,2>:ub // Sub-block 10
- mov (16) r[PPREDBUF_Y,0-PREDSUBBLK2+16]<1>:ub r[PPREDBUF_Y,-PREDSUBBLK1]<32;16,2>:ub // Sub-block 11
-
- mov (16) r[PPREDBUF_Y,-PREDSUBBLK3]<1>:ub r[PPREDBUF_Y]<32;16,2>:ub // Sub-block 12
- mov (16) r[PPREDBUF_Y,0-PREDSUBBLK3+16]<1>:ub r[PPREDBUF_Y,PREDSUBBLK1]<32;16,2>:ub // Sub-block 13
- mov (16) r[PPREDBUF_Y,-PREDSUBBLK1]<1>:ub r[PPREDBUF_Y,PREDSUBBLK2]<32;16,2>:ub // Sub-block 14
- mov (16) r[PPREDBUF_Y,0-PREDSUBBLK1+16]<1>:ub r[PPREDBUF_Y,PREDSUBBLK3]<32;16,2>:ub // Sub-block 15
-
-// All 4 sub-macroblock (containing 4 intra_4x4 blocks) have be constructed
-// Save constructed Y picture
- CALL(save_4x4_Y,1) // Save Intra_4x4 predicted luma data.
-//
-// Decode U/V blocks
-//
-// Note: The decoding for chroma blocks will be the same for all intra prediction mode
-//
- CALL(decode_Chroma_Intra,1)
-
-#ifdef SW_SCOREBOARD
- #include "scoreboard_update.asm"
-#endif
-
-// Terminate the thread
-//
- #include "EndIntraThread.asm"
-
-// End of Intra_4x4
diff --git a/src/shaders/h264/mc/Intra_8x8.asm b/src/shaders/h264/mc/Intra_8x8.asm
deleted file mode 100644
index fb1e947..0000000
--- a/src/shaders/h264/mc/Intra_8x8.asm
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- * Decode Intra_8x8 macroblock
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: Intra_8x8.asm
-//
-// Decoding of Intra_8x8 macroblock
-//
-// $Revision: 12 $
-// $Date: 10/18/06 4:10p $
-//
-
-// ----------------------------------------------------
-// Main: Intra_8x8
-// ----------------------------------------------------
-
-#define INTRA_8X8
-
-.kernel Intra_8x8
-INTRA_8x8:
-
-#ifdef _DEBUG
-// WA for FULSIM so we'll know which kernel is being debugged
-mov (1) acc0:ud 0x01aa55a5:ud
-#endif
-
-#include "SetupForHWMC.asm"
-
-#define REG_INTRA_PRED_AVAIL REG_INTRA_TEMP_4
-#define INTRA_PRED_AVAIL REG_INTRA_TEMP_4.4
-
-// Offset where 8x8 predicted data blocks are stored
-#define PREDBLK0 0*GRFWIB
-#define PREDBLK1 4*GRFWIB
-#define PREDBLK2 8*GRFWIB
-#define PREDBLK3 12*GRFWIB
-
-#ifdef SW_SCOREBOARD
-
-// Update "E" flag with "F" flag information
- mov (1) REG_INTRA_TEMP_0<1>:w REG_INTRA_PRED_AVAIL_FLAG_WORD<0;1,0>:w // Store original Intra_Pred_Avail_Flag
- and.nz.f0.0 (1) NULLREG REG_MBAFF_PIC MBAFF_PIC // Is current MBAFF picture
- and.z.f0.1 (1) NULLREG REG_INTRA_PRED_AVAIL_FLAG INTRA_PRED_LEFT_TH_AVAIL_FLAG // Is "A" not available?
- (f0.0) and.z.f0.0 (1) NULLREG REG_FIELD_MACROBLOCK_FLAG FIELD_MACROBLOCK_FLAG // Is current frame MB?
- (f0.1) and.nz.f0.1 (1) NULLREG REG_INTRA_PRED_8X8_BLK2_AVAIL_FLAG INTRA_PRED_8X8_BLK2_AVAIL_FLAG // Is "F" flag set?
- (f0.0.allv) or (1) REG_INTRA_PRED_AVAIL_FLAG_WORD<1>:w REG_INTRA_PRED_AVAIL_FLAG_WORD<0;1,0>:w INTRA_PRED_LEFT_BH_AVAIL_FLAG // Set "E" to 1 if all conditions meet
-
- CALL(scoreboard_start_intra,1)
- mov (1) REG_INTRA_PRED_AVAIL_FLAG_WORD<1>:w REG_INTRA_TEMP_0<0;1,0>:w // Restore original Intra_Pred_Avail_Flag
-#endif
-
-#ifdef SW_SCOREBOARD
- wait n0:ud // Now wait for scoreboard to response
-#endif
-
-//
-// Decode Y blocks
-//
-// Load reference data from neighboring macroblocks
- CALL(load_Intra_Ref_Y,1)
-
- mov (1) PERROR<1>:w ERRBUF*GRFWIB:w // Pointer to macroblock error data
- mov (1) PDECBUF_UD<1>:ud 0x00010001*PREDBUF*GRFWIB+0x00100000:ud // Pointers to predicted data
- shr (2) REG_INTRA_PRED_AVAIL<1>:w REG_INTRA_PRED_AVAIL_FLAG_BYTE<0;1,0>:ub 0x40:v
-
-#if 1
- mov (4) REF_LEFT_D(0,0)<1> 0:ud // This is to make validation easier. Without it, DRAM mismatch occurs.
-#endif
-
-// Intra predict Intra_8x8 luma blocks
-//
-// Sub-macroblock 0 *****************
- mov (16) REF_TOP_W(0)<1> REG_INTRA_REF_TOP<16;16,1>:w // Copy entire top reference data
- and.nz.f0.0 (8) NULLREG REG_INTRA_PRED_AVAIL_FLAG INTRA_PRED_UP_LEFT_AVAIL_FLAG // Is "D" available?
- (-f0.0) mov (1) REF_TOP(0,-1)<1> INTRA_REF_TOP(0)REGION(1,0) // p[-1,-1] = p[0,-1]
-
- mov (8) REF_LEFT(0,2)<1> INTRA_REF_LEFT(0) // Left reference data, (leave 2 for reference filtering)
- (-f0.0) mov (1) REF_LEFT(0,1)<1> INTRA_REF_LEFT(0)REGION(1,0) // p[-1,-1]=p[-1,0]
- (f0.0.any2h) mov (2) REF_LEFT(0,0)<1> INTRA_REF_TOP(0,-1)REGION(1,0) // p'[-1,y] (y=0,1) = p[-1,-1]
- and.nz.f0.1 (1) NULLREG REG_INTRA_PRED_AVAIL_FLAG INTRA_PRED_UP_AVAIL_FLAG // Is "B" available?
- (f0.1) mov (1) REF_LEFT(0,0)<1> INTRA_REF_TOP(0,0)REGION(1,0) // p[0,-1] for left filtering
- and.nz.f0.1 (1) NULLREG REG_INTRA_PRED_AVAIL_FLAG INTRA_PRED_LEFT_TH_AVAIL_FLAG // Is "A" available?
- (-f0.1) mov (1) REF_LEFT(0,2)<1> INTRA_REF_TOP(0,-1)REGION(1,0) // p'[-1,2] = p[-1,-1]
-
- and (1) PRED_MODE<1>:w INTRA_PRED_MODE(0)REGION(1,0) 0x0F:w // Intra pred mode for current block
- mov (1) INTRA_PRED_AVAIL<1>:w REG_INTRA_PRED_AVAIL<0;1,0>:w // Top/Left neighbor available flags
- CALL(intra_Pred_8x8_Y,1)
- add (1) PERROR<1>:w PERROR<0;1,0>:w 0x0080:w // Pointers to next error block
-
-// Sub-macroblock 1 *****************
- mov (16) REF_TOP0(0)<1> INTRA_REF_TOP(0,4) // Top reference data
- and.nz.f0.1 (8) NULLREG REG_INTRA_PRED_AVAIL_FLAG INTRA_PRED_UP_RIGHT_AVAIL_FLAG // Is "C" available?
- (f0.1.any8h) mov (8) REF_TOP(0,8)<1> INTRA_REF_TOP(0,16)<8;8,1> // Take data from "C"
- (-f0.1.any8h) mov (8) REF_TOP(0,8)<1> INTRA_REF_TOP(0,15)REGION(1,0) // Repeat last pixel from "B"
-
- mov (4) REF_LEFT(0,2)<1> DEC_Y(0,14)<16;1,0> // Left reference data (top half) (leave 2 for reference filtering)
- mov (4) REF_LEFT(0,6)<1> DEC_Y(2,14)<16;1,0> // Left reference data (bottom half)
- mov (2) REF_LEFT(0,0)<1> INTRA_REF_TOP(0,7)REGION(1,0) // p'[-1,y] (y=0,1) = p[-1,-1]
- and.nz.f0.1 (1) NULLREG REG_INTRA_PRED_AVAIL_FLAG INTRA_PRED_UP_AVAIL_FLAG // Is "B" available?
- (f0.1) mov (1) REF_LEFT(0,0)<1> INTRA_REF_TOP(0,8)REGION(1,0) // p[-1,-1] for left filtering
- (-f0.1) mov (1) REF_LEFT(0,1)<1> DEC_Y(0,14)REGION(1,0) // p[-1,-1] = p[-1,0]
-
- shr (1) PRED_MODE<1>:w INTRA_PRED_MODE(0)REGION(1,0) 4:w // Intra pred mode for current block
- add (2) PPREDBUF_Y<1>:w PPREDBUF_Y<2;2,1>:w 4*GRFWIB:w // Pointer to predicted sub-macroblock 1
- or (1) INTRA_PRED_AVAIL<1>:w REG_INTRA_PRED_AVAIL<0;1,0>:w 1:w // Left neighbor is available
- CALL(intra_Pred_8x8_Y,1)
- add (1) PERROR<1>:w PERROR<0;1,0>:w 0x0080:w // Pointers to next error block
-
-// Pack constructed data from word-aligned to byte-aligned format and interlace Y0 and Y1(every two Y rows)
-// to speed up save_8x8_Y module later
-// PPREDBUF_Y now points to sub-macroblock Y1
- mov (32) r[PPREDBUF_Y,-PREDBLK1]<1>:ub DEC_Y(0)<32;16,2> {Compr} // First 4 Y0 rows
- mov (32) r[PPREDBUF_Y,0-PREDBLK1+32]<1>:ub DEC_Y(4)<32;16,2> {Compr} // First 4 Y1 rows
- mov (32) r[PPREDBUF_Y,0-PREDBLK1+64]<1>:ub DEC_Y(2)<32;16,2> {Compr} // Second 4 Y0 rows
- mov (32) r[PPREDBUF_Y,0-PREDBLK1+96]<1>:ub DEC_Y(6)<32;16,2> {Compr} // Second 4 Y1 rows
-
-// Sub-macroblock 2 *****************
-// Intra_8x8 special available flag handling
- and.nz.f0.0 (1) NULLREG REG_MBAFF_PIC MBAFF_PIC // Is current MBAFF picture
- and.z.f0.1 (1) NULLREG REG_INTRA_PRED_AVAIL_FLAG INTRA_PRED_LEFT_TH_AVAIL_FLAG // Is "A" not available?
- (f0.0) and.z.f0.0 (1) NULLREG REG_FIELD_MACROBLOCK_FLAG FIELD_MACROBLOCK_FLAG // Is current frame MB?
- (f0.1) and.nz.f0.1 (1) NULLREG REG_INTRA_PRED_8X8_BLK2_AVAIL_FLAG INTRA_PRED_8X8_BLK2_AVAIL_FLAG // Is special intra_8x8 available flag set?
- (f0.0.allv) mov (1) REF_TOP(0,-1)<1> INTRA_REF_LEFT0(0,31)REGION(1,0) // Top-left reference data
- (f0.0.allv) jmpi (1) INTRA_8x8_BLK2
-// Done intra_8x8 special available flag handling
-
- and.nz.f0.0 (8) NULLREG REG_INTRA_PRED_AVAIL_FLAG INTRA_PRED_LEFT_TH_AVAIL_FLAG // Is top-half "A" available?
- (f0.0.any4h) mov (4) REF_TOP0(0)<1> INTRA_REF_LEFT0(0,28)REGION(4,1) // Top-left reference data
- (-f0.0) mov (1) REF_TOP(0,-1)<1> DEC_Y(2,24)REGION(1,0) // p[-1,-1] = p[0,-1]
-INTRA_8x8_BLK2:
- mov (8) REF_TOP(0)<1> DEC_Y(2,24)REGION(8,1) // Top reference data
- mov (8) REF_TOP(0,8)<1> DEC_Y(3,24)REGION(8,1) // Top reference data
-
- mov (8) REF_LEFT(0,2)<1> INTRA_REF_LEFT(1) // Left reference data, (leave 2 for reference filtering)
- mov (1) REF_LEFT(0,0)<1> DEC_Y(2,24)REGION(1,0) // p'[-1,0] = p[0,-1] since "B" is always available
- (f0.0) mov (1) REF_LEFT(0,1)<1> INTRA_REF_LEFT(0,28)REGION(1,0) // p[-1,1] = p[-1,-1] if top-half "A" available
- (-f0.0) mov (1) REF_LEFT(0,1)<1> INTRA_REF_LEFT(1)REGION(1,0) // p[-1,1] = p[-1,0]
- and.nz.f0.1 (1) NULLREG REG_INTRA_PRED_AVAIL_FLAG INTRA_PRED_LEFT_BH_AVAIL_FLAG // Is bottom-half "A" available?
- (-f0.1) mov (1) REF_LEFT(0,2)<1> INTRA_REF_LEFT(0,28)REGION(1,0) // p'[-1,2] = p[-1,-1]
-
- and (1) PRED_MODE<1>:w INTRA_PRED_MODE(0,1)REGION(1,0) 0x0F:w // Intra pred mode for current block
- or (1) INTRA_PRED_AVAIL<1>:w REG_INTRA_PRED_AVAIL.1<0;1,0>:w 2:w // Top neighbor is available
- CALL(intra_Pred_8x8_Y,1)
- add (1) PERROR<1>:w PERROR<0;1,0>:w 0x0080:w // Pointers to next error block
-
-// Sub-macroblock 3 *****************
- mov (4) REF_TOP0(0)<1> DEC_Y(2,28)REGION(4,1) // Top-left reference data
- mov (8) REF_TOP(0)<1> DEC_Y(3,24)REGION(8,1) // Top reference data
- mov (16) REF_TOP(0,8)<1> DEC_Y(3,31)REGION(1,0) // Top-right reference data
-
- mov (4) REF_LEFT(0,2)<1> DEC_Y(4,14)<16;1,0> // Left reference data (top half) (leave 2 for reference filtering)
- mov (4) REF_LEFT(0,6)<1> DEC_Y(6,14)<16;1,0> // Left reference data (bottom half)
- mov (1) REF_LEFT(0,0)<1> DEC_Y(3,24)REGION(1,0) // p[-1,0] = p[0,-1]
- mov (1) REF_LEFT(0,1)<1> DEC_Y(2,31)REGION(1,0) // p[-1,1] = p[-1,-1]
-
- shr (1) PRED_MODE<1>:w INTRA_PRED_MODE(0,1)REGION(1,0) 4:w // Intra pred mode for current block
- add (2) PPREDBUF_Y<1>:w PPREDBUF_Y<2;2,1>:w 4*GRFWIB:w // Pointer to predicted sub-macroblock 3
- or (1) INTRA_PRED_AVAIL<1>:w REG_INTRA_PRED_AVAIL<0;1,0>:w 3:w // Top and Left neighbor are available
- CALL(intra_Pred_8x8_Y,1)
-
-// Pack constructed data from word-aligned to byte-aligned format
-// to speed up save_8x8_Y module later
-// PPREDBUF_Y now points to sub-macroblock Y1
- mov (32) r[PPREDBUF_Y,-PREDBLK1]<1>:ub DEC_Y(4)<32;16,2> {Compr} // First 4 Y2 rows
- mov (32) r[PPREDBUF_Y,0-PREDBLK1+32]<1>:ub DEC_Y(8)<32;16,2> {Compr} // First 4 Y3 rows
- mov (32) r[PPREDBUF_Y,0-PREDBLK1+64]<1>:ub DEC_Y(6)<32;16,2> {Compr} // Second 4 Y2 rows
- mov (32) r[PPREDBUF_Y,0-PREDBLK1+96]<1>:ub DEC_Y(10)<32;16,2> {Compr} // Second 4 Y3 rows
-
-// All 4 sub-macroblock (containing 4 intra_8x8 blocks) have be constructed
-// Save constructed Y picture
- CALL(save_8x8_Y,1) // Save Intra_8x8 predicted luma data.
-//
-// Decode U/V blocks
-//
-// Note: The decoding for chroma blocks will be the same for all intra prediction mode
-//
- CALL(decode_Chroma_Intra,1)
-
-#ifdef SW_SCOREBOARD
- #include "scoreboard_update.asm"
-#endif
-
-// Terminate the thread
-//
- #include "EndIntraThread.asm"
-
-// End of Intra_8x8
diff --git a/src/shaders/h264/mc/Intra_PCM.asm b/src/shaders/h264/mc/Intra_PCM.asm
deleted file mode 100644
index 5e2cb07..0000000
--- a/src/shaders/h264/mc/Intra_PCM.asm
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Decode Intra_PCM macroblock
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: Intra_PCM.asm
-//
-// Decoding of I_PCM macroblock
-//
-// $Revision: 8 $
-// $Date: 10/18/06 4:10p $
-//
-
-// ----------------------------------------------------
-// Main: Intra_PCM
-// ----------------------------------------------------
-
-.kernel Intra_PCM
-INTRA_PCM:
-
-#ifdef _DEBUG
-// WA for FULSIM so we'll know which kernel is being debugged
-mov (1) acc0:ud 0x03aa55a5:ud
-#endif
-
-#include "SetupForHWMC.asm"
-
-// Not actually needed here but just want to slow down the Intra-PCM to avoid race condition
-//
-#ifdef SW_SCOREBOARD
- and (1) REG_INTRA_PRED_AVAIL_FLAG_WORD<1>:w REG_INTRA_PRED_AVAIL_FLAG_WORD<0;1,0>:w 0xffe0:w // Ensure all neighbor avail flags are "0"
- CALL(scoreboard_start_intra,1)
- wait n0:ud // Now wait for scoreboard to response
-#endif
-
-//
-// Decoding Y blocks
-//
-// In I_PCM mode, the samples are already arranged in raster scan order within the macroblock.
-// We just need to save them to picture buffers
-//
- #include "save_I_PCM.asm" // Save to destination picture buffers
-
-#ifdef SW_SCOREBOARD
- #include "scoreboard_update.asm"
-#endif
-
-// Terminate the thread
-//
- #include "EndIntraThread.asm"
-
-// End of Intra_PCM
diff --git a/src/shaders/h264/mc/Intra_funcLib.asm b/src/shaders/h264/mc/Intra_funcLib.asm
deleted file mode 100644
index 87a2d5a..0000000
--- a/src/shaders/h264/mc/Intra_funcLib.asm
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Library of common modules shared among different intra prediction kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: Intra_funcLib.asm
-//
-// Library of common modules shared among different intra prediction kernels
-//
-// Note: Any sub-modules, if they are #included in more than one kernel,
-// should be moved to this module.
-//
-#if defined(INTRA_16X16)
-#undef INTRA_16X16
- #include "load_Intra_Ref_Y.asm" // Load intra Y reference data
- #include "Decode_Chroma_Intra.asm" // Decode chroma blocks
- #include "save_16x16_Y.asm" // Save to destination Y frame surface
-#elif defined(INTRA_8X8)
-#undef INTRA_8X8
- #include "load_Intra_Ref_Y.asm" // Load intra Y reference data
- #include "Decode_Chroma_Intra.asm" // Decode chroma blocks
- #include "intra_Pred_8x8_Y.asm" // Intra predict Intra_4x4 blocks
- #include "save_8x8_Y.asm" // Save to destination Y frame surface
-#elif defined(INTRA_4X4)
-#undef INTRA_4X4
- #include "load_Intra_Ref_Y.asm" // Load intra Y reference data
- #include "Decode_Chroma_Intra.asm" // Decode chroma blocks
- #include "intra_Pred_4x4_Y_4.asm" // Intra predict Intra_4x4 blocks
- #include "save_4x4_Y.asm" // Save to destination Y frame surface
-#else // For all merged kernels
-#endif
-
-#ifdef SW_SCOREBOARD
- #include "scoreboard_start_intra.asm" // scorboard intra start function
- #include "scoreboard_start_inter.asm" // scorboard inter start function
-#endif // SW_SCOREBOARD
-
-// End of Intra_funcLib
diff --git a/src/shaders/h264/mc/Makefile.am b/src/shaders/h264/mc/Makefile.am
deleted file mode 100644
index 5170503..0000000
--- a/src/shaders/h264/mc/Makefile.am
+++ /dev/null
@@ -1,224 +0,0 @@
-
-INTEL_G4I =
-
-INTEL_G4A = null.g4a
-
-INTEL_G4B = null.g4b
-
-INTEL_G4B_GEN5 = null.g4b.gen5
-
-INTEL_MC_G4B = avc_mc.g4b
-INTEL_MC_G4B_GEN5 = avc_mc.g4b.gen5
-INTEL_MC_EXPORT = export.inc
-INTEL_MC_EXPORT_GEN5 = export.inc.gen5
-
-INTEL_MC_ASM = \
- add_Error_16x16_Y.asm \
- add_Error_UV.asm \
- AllAVC.asm \
- AllAVCField.asm \
- AllAVCFrame.asm \
- AllAVCMBAFF.asm \
- AllIntra.asm \
- AVCMCInter.asm \
- BSDReset.asm \
- chromaMVAdjust.asm \
- DCResetDummy.asm \
- Decode_Chroma_Intra.asm \
- EndIntraThread.asm \
- initialize_MBPara.asm \
- interpolate_C_2x2.asm \
- interpolate_C_4x4.asm \
- interpolate_Y_4x4.asm \
- interpolate_Y_8x8.asm \
- Intra_16x16.asm \
- Intra_4x4.asm \
- Intra_8x8.asm \
- Intra_funcLib.asm \
- Intra_PCM.asm \
- intra_pred_16x16_Y.asm \
- intra_Pred_4x4_Y_4.asm \
- intra_Pred_8x8_Y.asm \
- intra_Pred_Chroma.asm \
- load_Intra_Ref_UV.asm \
- load_Intra_Ref_Y.asm \
- loadRef_C_10x5.asm \
- loadRef_C_6x3.asm \
- loadRef_Y_16x13.asm \
- loadRef_Y_16x9.asm \
- recon_C_4x4.asm \
- recon_Y_8x8.asm \
- roundShift_C_4x4.asm \
- save_16x16_Y.asm \
- save_4x4_Y.asm \
- save_8x8_UV.asm \
- save_8x8_Y.asm \
- save_I_PCM.asm \
- scoreboard.asm \
- scoreboard_MBAFF.asm \
- scoreboard_restore_AS.asm \
- scoreboard_save_AS.asm \
- scoreboard_sip.asm \
- scoreboard_start_inter.asm \
- scoreboard_start_intra.asm \
- scoreboard_update.asm \
- SetHWScoreboard.asm \
- SetHWScoreboard_MBAFF.asm \
- set_SB_offset.asm \
- SetupForHWMC.asm \
- weightedPred.asm \
- writeRecon_C_8x4.asm \
- writeRecon_Y_16x8.asm \
- writeRecon_YC.asm
-
-INTEL_MC_INC = \
- AllAVC_Build.inc \
- AllAVC_Export.inc \
- export.inc \
- header.inc \
- HwmcOnlyHeader.inc \
- inter_Header.inc \
- intra_Header.inc \
- Scoreboard_header.inc \
- SetHWScoreboard_header.inc \
- $(NULL)
-
-INTEL_ILDB_ASM = \
- ../ildb/AVC_ILDB_Child_Field_UV.asm \
- ../ildb/AVC_ILDB_Child_Field_Y.asm \
- ../ildb/AVC_ILDB_Child_Mbaff_UV.asm \
- ../ildb/AVC_ILDB_Child_Mbaff_Y.asm \
- ../ildb/AVC_ILDB_Child_UV.asm \
- ../ildb/AVC_ILDB_Child_Y.asm \
- ../ildb/AVC_ILDB_Chroma_Core.asm \
- ../ildb/AVC_ILDB_Chroma_Core_Mbaff.asm \
- ../ildb/AVC_ILDB_CloseGateway.asm \
- ../ildb/AVC_ILDB_Dep_Check.asm \
- ../ildb/AVC_ILDB_Filter_Mbaff_UV_h.asm \
- ../ildb/AVC_ILDB_Filter_Mbaff_UV_v.asm \
- ../ildb/AVC_ILDB_Filter_Mbaff_Y_h.asm \
- ../ildb/AVC_ILDB_Filter_Mbaff_Y_v.asm \
- ../ildb/AVC_ILDB_Filter_UV_h.asm \
- ../ildb/AVC_ILDB_Filter_UV_v.asm \
- ../ildb/AVC_ILDB_Filter_Y_h.asm \
- ../ildb/AVC_ILDB_Filter_Y_v.asm \
- ../ildb/AVC_ILDB_ForwardMsg.asm \
- ../ildb/AVC_ILDB_Luma_Core.asm \
- ../ildb/AVC_ILDB_Luma_Core_Mbaff.asm \
- ../ildb/AVC_ILDB_LumaThrdLimit.asm \
- ../ildb/AVC_ILDB_OpenGateway.asm \
- ../ildb/AVC_ILDB_Root_Field_UV.asm \
- ../ildb/AVC_ILDB_Root_Field_Y.asm \
- ../ildb/AVC_ILDB_Root_Mbaff_UV.asm \
- ../ildb/AVC_ILDB_Root_Mbaff_Y.asm \
- ../ildb/AVC_ILDB_Root_UV.asm \
- ../ildb/AVC_ILDB_Root_Y.asm \
- ../ildb/AVC_ILDB_Spawn.asm \
- ../ildb/AVC_ILDB_SpawnChild.asm \
- ../ildb/AVC_ILDB_SpawnChromaRoot.asm \
- ../ildb/load_Cur_UV_8x8T.asm \
- ../ildb/load_Cur_UV_8x8T_Mbaff.asm \
- ../ildb/load_Cur_UV_Right_Most_2x8.asm \
- ../ildb/load_Cur_Y_16x16T.asm \
- ../ildb/load_Cur_Y_16x16T_Mbaff.asm \
- ../ildb/load_Cur_Y_Right_Most_4x16.asm \
- ../ildb/Load_ILDB_Cntrl_Data_16DW.asm \
- ../ildb/Load_ILDB_Cntrl_Data_22DW.asm \
- ../ildb/Load_ILDB_Cntrl_Data_64DW.asm \
- ../ildb/Load_ILDB_Cntrl_Data.asm \
- ../ildb/load_Left_UV_2x8T.asm \
- ../ildb/load_Left_UV_2x8T_Mbaff.asm \
- ../ildb/load_Left_Y_4x16T.asm \
- ../ildb/load_Left_Y_4x16T_Mbaff.asm \
- ../ildb/loadNV12_16x16T.asm \
- ../ildb/loadNV12_16x4.asm \
- ../ildb/load_Top_UV_8x2.asm \
- ../ildb/load_Top_UV_8x2_Mbaff.asm \
- ../ildb/load_Top_Y_16x4.asm \
- ../ildb/load_Top_Y_16x4_Mbaff.asm \
- ../ildb/save_Cur_UV_8x8.asm \
- ../ildb/save_Cur_UV_8x8_Mbaff.asm \
- ../ildb/save_Cur_Y_16x16.asm \
- ../ildb/save_Cur_Y_16x16_Mbaff.asm \
- ../ildb/save_Left_UV_8x2T.asm \
- ../ildb/save_Left_UV_8x2T_Mbaff.asm \
- ../ildb/save_Left_Y_16x4T.asm \
- ../ildb/save_Left_Y_16x4T_Mbaff.asm \
- ../ildb/saveNV12_16x16.asm \
- ../ildb/saveNV12_16x4.asm \
- ../ildb/saveNV12_16x4T.asm \
- ../ildb/save_Top_UV_8x2.asm \
- ../ildb/save_Top_UV_8x2_Mbaff.asm \
- ../ildb/save_Top_Y_16x4.asm \
- ../ildb/save_Top_Y_16x4_Mbaff.asm \
- ../ildb/SetupVPKernel.asm \
- ../ildb/Transpose_Cur_UV_2x8.asm \
- ../ildb/Transpose_Cur_UV_8x8.asm \
- ../ildb/Transpose_Cur_UV_Right_Most_2x8.asm \
- ../ildb/Transpose_Cur_Y_16x16.asm \
- ../ildb/Transpose_Cur_Y_4x16.asm \
- ../ildb/Transpose_Cur_Y_Right_Most_4x16.asm \
- ../ildb/Transpose_Left_UV_2x8.asm \
- ../ildb/Transpose_Left_Y_4x16.asm \
- ../ildb/TransposeNV12_16x16.asm \
- ../ildb/TransposeNV12_4x16.asm \
- ../ildb/writeURB.asm \
- ../ildb/writeURB_UV_Child.asm \
- ../ildb/writeURB_Y_Child.asm
-
-INTEL_MC_GEN5_ASM = avc_mc.gen5.asm
-
-TARGETS =
-if HAVE_GEN4ASM
-TARGETS += $(INTEL_MC_G4B_GEN5)
-endif
-
-all-local: $(TARGETS)
-
-SUFFIXES = .g4a .g4b .gen5.asm
-
-if HAVE_GEN4ASM
-.g4a.g4b:
- $(AM_V_GEN)m4 $*.g4a > $*.g4m && \
- $(AM_V_GEN)$(GEN4ASM) -o $@ $*.g4m && \
- $(AM_V_GEN)$(GEN4ASM) -g 5 -o $@.gen5 $*.g4m && \
- rm $*.g4m
-
-$(INTEL_MC_GEN5_ASM): $(INTEL_MC_ASM) $(INTEL_MC_INC) $(INTEL_ILDB_ASM)
- $(AM_V_GEN)cpp -DDEV_ILK -DBOOTSTRAP -I $(srcdir)/../ildb/ $(srcdir)/AllAVC.asm > _mc0.$@ && \
- $(PYTHON2) $(top_srcdir)/src/shaders/gpp.py _mc0.$@ $@ && \
- $(GEN4ASM) -l $(srcdir)/list -a -e tmp.$(INTEL_MC_EXPORT_GEN5) -g 5 $@ \
- -o /dev/null && \
- mv tmp.$(INTEL_MC_EXPORT_GEN5) $(INTEL_MC_EXPORT_GEN5) && \
- cpp -DDEV_ILK -I $(srcdir)/../ildb/ $(srcdir)/AllAVC.asm > _mc1.$@ && \
- $(PYTHON2) $(top_srcdir)/src/shaders/gpp.py _mc1.$@ $@ && \
- rm _mc0.$@ _mc1.$@
-
-$(INTEL_MC_G4B_GEN5): $(INTEL_MC_GEN5_ASM)
- $(AM_V_GEN)$(GEN4ASM) -l $(srcdir)/list -a -e tmp.$(INTEL_MC_EXPORT_GEN5) -g 5 $< \
- -o $@ && \
- cat tmp.$(INTEL_MC_EXPORT_GEN5) | sed "s/_IP/_IP_GEN5/g" \
- > $(INTEL_MC_EXPORT_GEN5) && \
- rm tmp.$(INTEL_MC_EXPORT_GEN5)
-
-$(INTEL_G4B): $(INTEL_G4I)
-endif
-
-CLEANFILES = $(INTEL_MC_GEN5_ASM)
-
-EXTRA_DIST = \
- $(INTEL_G4A) \
- $(INTEL_G4B) \
- $(INTEL_G4B_GEN5) \
- $(INTEL_G4I) \
- $(INTEL_MC_ASM) \
- $(INTEL_MC_EXPORT) \
- $(INTEL_MC_EXPORT_GEN5) \
- $(INTEL_MC_G4B) \
- $(INTEL_MC_G4B_GEN5) \
- $(INTEL_MC_INC) \
- list \
- $(NULL)
-
-# Extra clean files so that maintainer-clean removes *everything*
-MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/shaders/h264/mc/Scoreboard_header.inc b/src/shaders/h264/mc/Scoreboard_header.inc
deleted file mode 100644
index a98bdb8..0000000
--- a/src/shaders/h264/mc/Scoreboard_header.inc
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Common header file for both scoreboard and scoreboard_MBAFF kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__SCOREBOARD_HEADER__) // Make sure this file is only included once
-#define __SCOREBOARD_HEADER__
-
-// Module name: scoreboard_header.inc
-//
-// Common header file for both scoreboard and scoreboard_MBAFF kernels
-//
-
-#define ONE_MB_WA // Enable WA for 1-MB wide pictures. To disable WA, simply comment out this line.
-
-#define INLINE_REG_OFF 1
-#define INLINE_REG r1
-#define INLINE_REG1 r2
-
-#define DONEFLAG 0x40 // Bit mask of "completed" thread flag
-
-// GRF r1 map
-//
-#define WIDTHINMB_1 INLINE_REG.0 // :uw type. Picture width in MB - 1
-#define HEIGHTINMB_1 INLINE_REG.1 // :uw type. Picture height in MB - 1
-#define TotalMB INLINE_REG.2 // :uw type. Total number of macroblocks
-#define WFLen_B INLINE_REG.3 // :uw type. Bottom MB Wavefront length (Reserved for MBAFF scoreboard)
-#define WFLen INLINE_REG.4 // :uw type. Wavefront length (used as loop counter)
-#define WFLenY INLINE_REG.5 // :uw type. Wavefront length (vertical component)
-#define StartX INLINE_REG.6 // :uw type. Start X of current wavefront
-#define StartY INLINE_REG.7 // :uw type. Start Y of current wavefront
-#define StartXD INLINE_REG.3 // :ud type. Start (X,Y) of current wavefront
-#define CASE00PTR INLINE_REG.4 // :ud type. Pointer to "inter start" handler
-#define WFLen_Save INLINE_REG.10 // :uw type. Saved Wavefront length (Reserved for MBAFF scoreboard)
-#define CASE10PTR INLINE_REG.6 // :ud type. Pointer to "intra start" handler
-#define CASE11PTR INLINE_REG.7 // :ud type. Pointer to "inter complete" handler
-
-// GRF r2 map
-//
-.declare WFStart Base=GRF(2) ElementSize=2 SrcRegion=REGION(4,1) Type=w // Start MB of recent 4 wavefronts, actually use 5 WORDs
-.declare WFStart_T Base=GRF(2) ElementSize=2 SrcRegion=REGION(4,1) Type=w // Start MB of recent 4 wavefronts
-.declare WFStart_B Base=GRF(2).4 ElementSize=2 SrcRegion=REGION(4,1) Type=w // Start MB of recent 4 wavefronts
-
-#define NewWFOffsetD INLINE_REG1.5 // :d type. Offsets used for new wavefront = 0x01ffff00 (0, -1, -1, 1)
-#define NewWFOffset INLINE_REG1.20 // :b type. Offsets used for new wavefront = 0x01ffff00 (0, -1, -1, 1)
-
-#define AVAILFLAGD INLINE_REG1.6 // :ud type. Neighbor available flags = 0x08020401 (in ACBD order)
-#define AVAILFLAG INLINE_REG1.24 // :ub type. Neighbor available flags as above
-#define AVAILFLAG1D INLINE_REG1.7 // :ud type. Top-half neighbor available flags = 0x80402010 (in A_Bxxx order)
-
-.declare MBINDEX Base=GRF(3) ElementSize=2 SrcRegion=REGION(16,1) Type=w // MB order # of current MB group (Cur, ACBD and AC_B_D_)
-#define AR_SAVE r3.8 // :uw type. Saved Address Register information
-
-#define CMDPTR a0.0 // :uw type. DWORD Pointer to the scoreboard
-#define DEPPTR a0.0 // :uw type. Pointer to the dependency scoreboard - Current MB
-#define DEPPTRL a0.1 // :uw type. Pointer to the dependency scoreboard - Left MB
-#define DEPPTRTR a0.2 // :uw type. Pointer to the dependency scoreboard - Top right MB
-#define DEPPTRT a0.3 // :uw type. Pointer to the dependency scoreboard - Top MB
-#define DEPPTRTL a0.4 // :uw type. Pointer to the dependency scoreboard - Top left MB
-#define DEPPTRLB a0.5 // :uw type. Pointer to the dependency scoreboard - Left bottom-half MB
-
-#define PMSGSEL a0.7 // :uw type. Pointer to current message in message handling table
-
-#define CMD_SB_REG_OFF 4
-.declare CMD_SB Base=GRF(4) ElementSize=4 SrcRegion=REGION(8,1) Type=ud // Command scoreboard (64 GRF)
-
-#ifdef AS_ENABLED
-// Definitions for Advanced Scheduler support
-#define AS_INT BIT23 // "Preemption Exception Status" bit in cr0.1:ud control register
-#define AS_INT_EN BIT10 // "Preemption Exception Enable" bit in cr0.1:ud control register
-#define TH_INT BIT2 // "Thread Interrupted" bit in message descriptor
-#define TH_RES BIT0 // "Thread Restart Enable" bit in R0 header r0.2
-
-#define AS_SAVE 34 // Surface state for saving scoreboard contents
- // Ensure not to conflict with existing binding table entries
-#endif // End AS_ENABLED
-
-// End of scoreboard_header
-
-#endif // !defined(__SCOREBOARD_HEADER__)
-
diff --git a/src/shaders/h264/mc/SetHWScoreboard.asm b/src/shaders/h264/mc/SetHWScoreboard.asm
deleted file mode 100644
index d6d7006..0000000
--- a/src/shaders/h264/mc/SetHWScoreboard.asm
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * Set dependency control HW scoreboard kernel
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: SetHWScoreboard.asm
-//
-// Set dependency control HW scoreboard kernel
-//
-
-// ----------------------------------------------------
-// Main: SetHWScoreboard
-// ----------------------------------------------------
-
-.kernel SetHWScoreboard
-
-SETHWSCOREBOARD:
-
-#ifdef _DEBUG
-// WA for FULSIM so we'll know which kernel is being debugged
-mov (1) acc0:ud 0xf0aa55a5:ud
-#endif
-
-#include "header.inc"
-#include "SetHWScoreboard_header.inc"
-
-//
-// Now, begin source code....
-//
-
-.code
-
-// Separate the TotalMB so TotalMB will be multiple of 8
-// and RemainderMB will hold the TotalMB%8
-//
- and.z.f0.1 (1) RemainderMB<1>:uw TotalMB<0;1,0>:uw 0x0007:uw // number of %8 commands
- and.z.f0.0 (1) TotalMB<1>:uw TotalMB<0;1,0>:uw 0xfff8:uw // Number of 8-command blocks
-
- mov (1) MB_SHIFT_MASK_W<1>:uw 0x100*16+12:w // Set up shift values (12, 16)
-
-// Initialize common DAP read header
-//
- mov (8) MRF_READ_HEADER_SRC<1>:ud r0.0<8;8,1>:ud
- shl (1) MRF_READ_HEADER_SRC.2<1>:ud StartingMB<0;1,0>:uw 6:uw // Byte-aligned offset being read
-
-// Initialize Inter DAP write header
- mov (8) MRF_INTER_WRITE_HEADER<1>:ud r0.0<8;8,1>:ud
-
- (f0.0) jmpi (1) SetHWScoreboard_Remainder // Jump if TotalMB < 8
-
-//------------------------------------------------------------------------
-// Command buffer parsing loop
-// Each loop will handle 8 commands
-//------------------------------------------------------------------------
-//
-SetHWScoreboard_Loop:
-// Load block 0 (Commands 0/1)
- mov (8) MRF_READ_HEADER0.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- send (16) CMD_BUFFER_W(0)<1> MRF_READ_HEADER0 null:uw DAPREAD RESP_LEN(4)+OWBRMSGDSC_SC+OWORD_8+BI_CMD_BUFFER
-
-// Load block 1 (Commands 2/3)
- mov (8) MRF_READ_HEADER1.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- add (1) MRF_READ_HEADER1.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 128:ud // Point to next 2-command block
- send (16) CMD_BUFFER_W(4)<1> MRF_READ_HEADER1 null:uw DAPREAD RESP_LEN(4)+OWBRMSGDSC_SC+OWORD_8+BI_CMD_BUFFER
-
-// Load block 2 (Commands 4/5)
- mov (8) MRF_READ_HEADER2.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- add (1) MRF_READ_HEADER2.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 256:ud // Point to next 2-command block
- send (16) CMD_BUFFER_W(8)<1> MRF_READ_HEADER2 null:uw DAPREAD RESP_LEN(4)+OWBRMSGDSC_SC+OWORD_8+BI_CMD_BUFFER
-
-// Load block 3 (Commands 6/7)
- mov (8) MRF_READ_HEADER3.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- add (1) MRF_READ_HEADER3.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 384:ud // Point to next 2-command block
- send (16) CMD_BUFFER_W(12)<1> MRF_READ_HEADER3 null:uw DAPREAD RESP_LEN(4)+OWBRMSGDSC_SC+OWORD_8+BI_CMD_BUFFER
-
-// Start parsing commands
- $for(0; <16; 2) {
- and.nz.f0.1 (8) NULLREG CMD_BUFFER_D(%1,4)<0;1,0> IS_INTRA_MB:ud // Is it an "Intra" MB?
- or (1) CMD_BUFFER_D(%1,2)<1> CMD_BUFFER_D(%1,2)<0;1,0> BIT21:ud // Set "Use Scoreboard" for every MB
- shl (2) CMD_BUFFER_W(%1,2)<1> CMD_BUFFER_W(%1,14)<0;1,0> MB_SHIFT_MASK_B<2;2,1>:b // Set HW SB masks
- mov (2) CMD_BUFFER_B(%1,4)<2> CMD_BUFFER_B(%1,20)<2;2,1> // Set scoreboard (X,Y) for intra MB
- (-f0.1) mov (2) CMD_BUFFER_W(%1,2)<1> CMD_BUFFER_B(%1,20)<2;2,1> // Set scoreboard (X,Y) for inter MB
- (f0.1) jmpi (1) Parse_8_Loop_%1
-
-// Inter Macroblock
-// Output MEDIA_OBJECT command in raster scan order
- mul (16) acc0<1>:uw CMD_BUFFER_B(%1,21)<0;1,0> PicWidthMB<0;1,0>:uw // MB offset = Y*W
- add (16) acc0<1>:uw acc0<8;8,1>:uw CMD_BUFFER_B(%1,20)<0;1,0> // MB offset = Y*W+X
- shl (1) MRF_INTER_WRITE_HEADER.2<1>:ud acc0.2<0;1,0>:uw 6:uw // Byte-aligned MB offset
- mov (16) MRF_INTER_WRITE_DATA0<1>:ud CMD_BUFFER_D(%1)<8;8,1> {Compr} // Copy entire command to inter buffer
- mov (16) CMD_BUFFER_D(%1)<1> 0:ud {Compr} // Clear original command
- send (16) NULLREGW MRF_INTER_WRITE_HEADER null:uw DAPWRITE MSG_LEN(2)+OWBWMSGDSC+OWORD_4+BI_CMD_BUFFER
-
-Parse_8_Loop_%1:
- }
-
- add.z.f0.0 (1) TotalMB<1>:w TotalMB<0;1,0>:w -8:w // Update remaining number of 8-command blocks
-
-// Output modified intra commands
-// Write block 0
- mov (8) MRF_INTRA_WRITE_HEADER.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- $for(0; <4; 2) {
- mov (16) MRF_CMD_BUF_D(%1)<1> CMD_BUFFER_D(%1)<8;8,1> {Compr}
- }
- send (16) NULLREGW MRF_INTRA_WRITE_HEADER null:uw DAPWRITE MSG_LEN(4)+OWBWMSGDSC+OWORD_8+BI_CMD_BUFFER
-
-// Write block 1
- mov (8) m1.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- add (1) m1.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 128:ud // Point to next 2-command block
- mov (16) m2<1>:ud CMD_BUFFER_D(4)<8;8,1> {Compr}
- mov (16) m4<1>:ud CMD_BUFFER_D(6)<8;8,1> {Compr}
- send (16) NULLREGW m1 null:uw DAPWRITE MSG_LEN(4)+OWBWMSGDSC+OWORD_8+BI_CMD_BUFFER
-
-// Write block 2
- add (1) MRF_INTRA_WRITE_HEADER.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 256:ud // Point to next 2-command block
- $for(0; <4; 2) {
- mov (16) MRF_CMD_BUF_D(%1)<1> CMD_BUFFER_D(%1+8)<8;8,1> {Compr}
- }
- send (16) NULLREGW MRF_INTRA_WRITE_HEADER null:uw DAPWRITE MSG_LEN(4)+OWBWMSGDSC+OWORD_8+BI_CMD_BUFFER
-
-// Write block 3
- add (1) m1.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 384:ud // Point to next 2-command block
- mov (16) m2<1>:ud CMD_BUFFER_D(12)<8;8,1> {Compr}
- mov (16) m4<1>:ud CMD_BUFFER_D(14)<8;8,1> {Compr}
- send (16) NULLREGW m1 null:uw DAPWRITE MSG_LEN(4)+OWBWMSGDSC+OWORD_8+BI_CMD_BUFFER
-
-// Update message header for next DAP read
- add (1) MRF_READ_HEADER_SRC.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 512:ud // Point to next block of 8-commands
-
- cmp.z.f0.1 (1) NULLREG RemainderMB<0;1,0>:w 0:uw // Check if remainder MB = 0
- (-f0.0) jmpi (1) SetHWScoreboard_Loop // Continue if more command blocks remain
-
-SetHWScoreboard_Remainder:
-// f0.1 should have been set to indicate if RemainderMB = 0
-//
- (f0.1) jmpi (1) SetHWScoreboard_Done // Stop if all commands have been updated
-
-// Blindly load next 8 commands anyway
-//
-// Load block 0 (Commands 0/1)
- mov (8) MRF_READ_HEADER0.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- send (16) CMD_BUFFER_W(0)<1> MRF_READ_HEADER0 null:uw DAPREAD RESP_LEN(4)+OWBRMSGDSC_SC+OWORD_8+BI_CMD_BUFFER
-
-// Load block 1 (Commands 2/3)
- mov (8) MRF_READ_HEADER1.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- add (1) MRF_READ_HEADER1.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 128:ud // Point to next 2-command block
- send (16) CMD_BUFFER_W(4)<1> MRF_READ_HEADER1 null:uw DAPREAD RESP_LEN(4)+OWBRMSGDSC_SC+OWORD_8+BI_CMD_BUFFER
-
-// Load block 2 (Commands 4/5)
- mov (8) MRF_READ_HEADER2.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- add (1) MRF_READ_HEADER2.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 256:ud // Point to next 2-command block
- send (16) CMD_BUFFER_W(8)<1> MRF_READ_HEADER2 null:uw DAPREAD RESP_LEN(4)+OWBRMSGDSC_SC+OWORD_8+BI_CMD_BUFFER
-
-// Load block 3 (Commands 6/7)
- mov (8) MRF_READ_HEADER3.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- add (1) MRF_READ_HEADER3.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 384:ud // Point to next 2-command block
- send (16) CMD_BUFFER_W(12)<1> MRF_READ_HEADER3 null:uw DAPREAD RESP_LEN(4)+OWBRMSGDSC_SC+OWORD_8+BI_CMD_BUFFER
-
-// Initialize necessary pointers
- mov (1) a0.1<1>:ud ((CMD_BUFFER_REG_OFF+1)*0x10000+CMD_BUFFER_REG_OFF)*32 // a0.2:w points to command buffer (first half)
- // a0.3:w points to command buffer (second half)
-// Initialize Inter DAP write header
- mov (8) MRF_INTER_WRITE_HEADER<1>:ud r0.0<8;8,1>:ud
-
-SetHWScoreboard_Remainder_Loop:
- and.nz.f0.1 (8) NULLREG r[a0.2,4*4]<0;1,0>:ud IS_INTRA_MB:ud // Is it an "Intra" MB?
- add.z.f0.0 (1) RemainderMB<1>:w RemainderMB<0;1,0>:w -1:w // Decrement MB #
- or (1) r[a0.2,2*4]<1>:ud r[a0.2,2*4]<0;1,0>:ud BIT21:ud // Set "Use Scoreboard" for every MB
- shl (2) r[a0.2,2*2]<1>:uw r[a0.2,14*2]<0;1,0>:uw MB_SHIFT_MASK_B<2;2,1>:b // Set HW SB masks
- mov (2) r[a0.2,4*1]<2>:ub r[a0.2,5*4]<2;2,1>:ub // Set scoreboard (X,Y) for intra MB
-
- (-f0.1) mov (2) r[a0.2,4*1]<1>:uw r[a0.2,5*4]<2;2,1>:ub // Set scoreboard (X,Y) for inter MB
- (f0.1) jmpi (1) Output_Remainder_Intra
-
-// Inter Macroblock
-// Output MEDIA_OBJECT command in raster scan order
- mul (16) acc0<1>:uw r[a0.2,21]<0;1,0>:ub PicWidthMB<0;1,0>:uw // MB offset = Y*W
- add (16) acc0<1>:uw acc0<8;8,1>:uw r[a0.2,20]<0;1,0>:ub // MB offset = Y*W+X
- shl (1) MRF_INTER_WRITE_HEADER.2<1>:ud acc0.2<0;1,0>:uw 6:uw // Byte-aligned MB offset
- mov (16) MRF_INTER_WRITE_DATA0<1>:ud r[a0.2]<8;8,1>:ud {Compr} // Copy entire command to inter buffer
- mov (16) r[a0.2]<1>:ud 0:ud {Compr} // Clear original command
- send (16) NULLREGW MRF_INTER_WRITE_HEADER null:uw DAPWRITE MSG_LEN(2)+OWBWMSGDSC+OWORD_4+BI_CMD_BUFFER
-
-Output_Remainder_Intra:
-// Intra MB command always output
- mov (8) MRF_INTRA_WRITE_HEADER.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- mov (16) MRF_CMD_BUF_D(0)<1> r[a0.2]<8;8,1>:ud {Compr} // Copy entire command to intra buffer
- send (16) NULLREGW MRF_INTRA_WRITE_HEADER null:uw DAPWRITE MSG_LEN(2)+OWBWMSGDSC+OWORD_4+BI_CMD_BUFFER
-
- add (1) MRF_READ_HEADER_SRC.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 64:ud // Point to next command
- add (1) a0.1<1>:ud a0.1<0;1,0>:ud 0x00400040:ud // Update pointers
- (-f0.0) jmpi (1) SetHWScoreboard_Remainder_Loop
-
-// All MBs have been decoded. Terminate the thread now
-//
-SetHWScoreboard_Done:
- END_THREAD
-
-#if !defined(COMBINED_KERNEL) // For standalone kernel only
-.end_code
-
-.end_kernel
-#endif
-
-// End of SetHWScoreboard
diff --git a/src/shaders/h264/mc/SetHWScoreboard_MBAFF.asm b/src/shaders/h264/mc/SetHWScoreboard_MBAFF.asm
deleted file mode 100644
index eb7d658..0000000
--- a/src/shaders/h264/mc/SetHWScoreboard_MBAFF.asm
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * Set dependency control HW scoreboard kernel for MBAFF picture
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: SetHWScoreboard_MBAFF.asm
-//
-// Set dependency control HW scoreboard kernel for MBAFF picture
-//
-
-// ----------------------------------------------------
-// Main: SetHWScoreboard_MBAFF
-// ----------------------------------------------------
-
-.kernel SetHWScoreboard_MBAFF
-
-SETHWSCOREBOARD_MBAFF:
-
-#ifdef _DEBUG
-// WA for FULSIM so we'll know which kernel is being debugged
-mov (1) acc0:ud 0xf1aa55a5:ud
-#endif
-
-#include "header.inc"
-#include "SetHWScoreboard_header.inc"
-
-//
-// Now, begin source code....
-//
-
-.code
-
-// Separate the TotalMB so TotalMB will be multiple of 8
-// and RemainderMB will hold the TotalMB%8
-//
- and.z.f0.1 (1) RemainderMB<1>:uw TotalMB<0;1,0>:uw 0x0007:uw // number of %8 commands
- and.z.f0.0 (1) TotalMB<1>:uw TotalMB<0;1,0>:uw 0xfff8:uw // Number of 8-command blocks
-
-// Initialize common DAP read header
-//
- mov (8) MRF_READ_HEADER_SRC<1>:ud r0.0<8;8,1>:ud
- shl (1) MRF_READ_HEADER_SRC.2<1>:ud StartingMB<0;1,0>:uw 6:uw // Byte-aligned offset being read
-
-// Initialize Inter DAP write header
- mov (8) MRF_INTER_WRITE_HEADER<1>:ud r0.0<8;8,1>:ud
-
- (f0.0) jmpi (1) SetHWScoreboard_MBAFF_Remainder // Jump if TatalMB < 8
-
-//------------------------------------------------------------------------
-// Command buffer parsing loop
-// Each loop will handle 8 commands
-//------------------------------------------------------------------------
-//
-SetHWScoreboard_MBAFF_Loop:
-// Load block 0 (Commands 0/1)
- mov (8) MRF_READ_HEADER0.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- send (16) CMD_BUFFER_W(0)<1> MRF_READ_HEADER0 null:uw DAPREAD RESP_LEN(4)+OWBRMSGDSC_SC+OWORD_8+BI_CMD_BUFFER
-
-// Load block 1 (Commands 2/3)
- mov (8) MRF_READ_HEADER1.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- add (1) MRF_READ_HEADER1.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 128:ud // Point to next 2-command block
- send (16) CMD_BUFFER_W(4)<1> MRF_READ_HEADER1 null:uw DAPREAD RESP_LEN(4)+OWBRMSGDSC_SC+OWORD_8+BI_CMD_BUFFER
-
-// Load block 2 (Commands 4/5)
- mov (8) MRF_READ_HEADER2.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- add (1) MRF_READ_HEADER2.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 256:ud // Point to next 2-command block
- send (16) CMD_BUFFER_W(8)<1> MRF_READ_HEADER2 null:uw DAPREAD RESP_LEN(4)+OWBRMSGDSC_SC+OWORD_8+BI_CMD_BUFFER
-
-// Load block 3 (Commands 6/7)
- mov (8) MRF_READ_HEADER3.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- add (1) MRF_READ_HEADER3.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 384:ud // Point to next 2-command block
- send (16) CMD_BUFFER_W(12)<1> MRF_READ_HEADER3 null:uw DAPREAD RESP_LEN(4)+OWBRMSGDSC_SC+OWORD_8+BI_CMD_BUFFER
-
-// Start parsing commands
- $for(0; <16; 2) {
-// Adjust MB Y origin for field MBs
-//
- mov (2) TEMP_FD_X_W<1>:uw CMD_BUFFER_B(%1,20)<2;2,1> // Initialize temp (X,Y) location
- and.nz.f0.1 (8) NULLREG CMD_BUFFER_D(%1,4)<0;1,0> IS_BOT_FD:ud // Is it a "Bottom Field MB"?
- and.nz.f0.0 (8) NULLREG CMD_BUFFER_D(%1,4)<0;1,0> IS_FIELD_MB:ud // Is it a "Field MB"?
- mul (8) acc0<1>:w CMD_BUFFER_B(%1,21)<0;1,0> 2:w
- (-f0.1) mov (1) TEMP_FD_Y_W<1>:w acc0<0;1,0>:w
- (f0.1) add (1) TEMP_FD_Y_W<1>:w acc0<0;1,0>:w 1:w
- (-f0.0) mov (1) TEMP_FD_Y_W<1>:w CMD_BUFFER_B(%1,21)<0;1,0> // Discard field MB Y origin handling
-
- and.nz.f0.0 (8) NULLREG CMD_BUFFER_D(%1,4)<0;1,0> IS_INTRA_MB:ud // Is it an "Intra" MB?
- and.nz.f0.1 (8) NULLREG TEMP_FD_Y_W<0;1,0>:uw BIT0 // Is it "Bottom MB"?
- or (1) CMD_BUFFER_D(%1,2)<1> CMD_BUFFER_D(%1,2)<0;1,0> BIT21 // Set "Use Scoreboard"
- mov (2) CMD_BUFFER_W(%1,2)<1> TEMP_FD_X_W<2;2,1>:uw // Set scoreboard (X,Y) for inter MB
- (f0.0) jmpi (1) SET_SB_MBAFF_INTRA_%1 // Jump if intra MB.
-
-// Inter Macroblock
-// Output MEDIA_OBJECT command in raster scan order
- mul (16) acc0<1>:uw TEMP_FD_Y_W<0;1,0>:uw PicWidthMB<0;1,0>:uw // MB offset = Y*W
- add (16) acc0<1>:uw acc0<8;8,1>:uw TEMP_FD_X_W<0;1,0>:uw // MB offset = Y*W+X
- shl (1) MRF_INTER_WRITE_HEADER.2<1>:ud acc0.2<0;1,0>:uw 6:uw // Byte-aligned MB offset
- mov (16) MRF_INTER_WRITE_DATA0<1>:ud CMD_BUFFER_D(%1)<8;8,1> {Compr} // Copy entire command to inter buffer
- mov (16) CMD_BUFFER_D(%1)<1> 0:ud {Compr} // Clear original command
- send (16) NULLREGW MRF_INTER_WRITE_HEADER null:uw DAPWRITE MSG_LEN(2)+OWBWMSGDSC+OWORD_4+BI_CMD_BUFFER
- jmpi (1) NEXT_MB_MBAFF_%1 // Done for inter MB. Move to next MB.
-
-SET_SB_MBAFF_INTRA_%1:
-// Intra MB
-//
- and.nz.f0.0 (8) NULLREG CMD_BUFFER_D(%1,4)<0;1,0> IS_FIELD_MB:ud // Is it an "Field" MB?
- (f0.1) sel (2) MB_MASK_D<1>:ud BOT_FD_MASK1_D<2;2,1>:ud TOP_FD_MASK1_D<2;2,1>:ud // Assume field MB
- mov (1) TEMP_INTRA_FLAG_W<1>:uw CMD_BUFFER_W(%1,14)<0;1,0> // Don't want to alter original in-line data
- (f0.0) jmpi (1) SET_SB_MBAFF_%1 // Jump if it's really field MB
-
-// Frame MB
-//
-// Derive E'
- and.nz.f0.0 (8) NULLREG CMD_BUFFER_W(%1,14)<0;1,0> E_FLAG // Is "E" = 1
- (f0.1) sel (2) MB_MASK_D<1>:ud BOT_FM_MASK1_D<2;2,1>:ud TOP_FM_MASK1_D<2;2,1>:ud
- and.z.f0.1 (8) NULLREG CMD_BUFFER_W(%1,14)<0;1,0> A_FLAG // "A" = 0?
- (f0.0) jmpi (1) SET_SB_MBAFF_%1 // If "E" flag = 1, skip the rest of derivation
- (f0.1) and.nz.f0.1 (8) NULLREG CMD_BUFFER_D(%1,4)<0;1,0> IS_INTRA8X8
- (f0.1) and.nz.f0.1 (8) NULLREG CMD_BUFFER_W(%1,14)<0;1,0> F_FLAG
- (f0.1) or (1) TEMP_INTRA_FLAG_W<1>:uw CMD_BUFFER_W(%1,14)<0;1,0> E_FLAG
-
-SET_SB_MBAFF_%1:
- and.nz.f0.1 (16) NULLREGW TEMP_INTRA_FLAG_W<0;1,0>:uw MB_MASK_B<0;8,1>:ub
- shl (1) CMD_BUFFER_W(%1,2)<1> f0.1<0;1,0>:uw 12:w // Masks 0-3
- and (1) CMD_BUFFER_W(%1,3)<1> f0.1<0;1,0>:uw 0xf000:uw // Masks 4-7
-
- mov (2) CMD_BUFFER_B(%1,4)<2> TEMP_FD_X_B<4;2,2>:ub // Set scoreboard (X,Y) for intra MB
-
-NEXT_MB_MBAFF_%1:
- }
-
- add.z.f0.0 (1) TotalMB<1>:w TotalMB<0;1,0>:w -8:w // Update remaining number of 8-command blocks
-
-// Output modified intra commands
-// Write block 0
- mov (8) MRF_INTRA_WRITE_HEADER.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- $for(0; <4; 2) {
- mov (16) MRF_CMD_BUF_D(%1)<1> CMD_BUFFER_D(%1)<8;8,1> {Compr}
- }
- send (16) NULLREGW MRF_INTRA_WRITE_HEADER null:uw DAPWRITE MSG_LEN(4)+OWBWMSGDSC+OWORD_8+BI_CMD_BUFFER
-
-// Write block 1
- mov (8) m1.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- add (1) m1.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 128:ud // Point to next 2-command block
- mov (16) m2<1>:ud CMD_BUFFER_D(4)<8;8,1> {Compr}
- mov (16) m4<1>:ud CMD_BUFFER_D(6)<8;8,1> {Compr}
- send (16) NULLREGW m1 null:uw DAPWRITE MSG_LEN(4)+OWBWMSGDSC+OWORD_8+BI_CMD_BUFFER
-
-// Write block 2
- add (1) MRF_INTRA_WRITE_HEADER.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 256:ud // Point to next 2-command block
- $for(0; <4; 2) {
- mov (16) MRF_CMD_BUF_D(%1)<1> CMD_BUFFER_D(%1+8)<8;8,1> {Compr}
- }
- send (16) NULLREGW MRF_INTRA_WRITE_HEADER null:uw DAPWRITE MSG_LEN(4)+OWBWMSGDSC+OWORD_8+BI_CMD_BUFFER
-
-// Write block 3
- add (1) m1.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 384:ud // Point to next 2-command block
- mov (16) m2<1>:ud CMD_BUFFER_D(12)<8;8,1> {Compr}
- mov (16) m4<1>:ud CMD_BUFFER_D(14)<8;8,1> {Compr}
- send (16) NULLREGW m1 null:uw DAPWRITE MSG_LEN(4)+OWBWMSGDSC+OWORD_8+BI_CMD_BUFFER
-
-// Update message header for next DAP read
- add (1) MRF_READ_HEADER_SRC.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 512:ud // Point to next block of 8-commands
-
- cmp.z.f0.1 (1) NULLREG RemainderMB<0;1,0>:w 0:uw // Check if remaining MB = 0
- (-f0.0) jmpi (1) SetHWScoreboard_MBAFF_Loop // Continue if more command blocks remain
-
-SetHWScoreboard_MBAFF_Remainder:
-// f0.1 should have been set to indicate if RemainderMB = 0
-//
- (f0.1) jmpi (1) SetHWScoreboard_MBAFF_Done // Stop if all commands have been updated
-
-// Blindly load next 8 commands anyway
-//
-// Load block 0 (Commands 0/1)
- mov (8) MRF_READ_HEADER0.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- send (16) CMD_BUFFER_W(0)<1> MRF_READ_HEADER0 null:uw DAPREAD RESP_LEN(4)+OWBRMSGDSC_SC+OWORD_8+BI_CMD_BUFFER
-
-// Load block 1 (Commands 2/3)
- mov (8) MRF_READ_HEADER1.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- add (1) MRF_READ_HEADER1.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 128:ud // Point to next 2-command block
- send (16) CMD_BUFFER_W(4)<1> MRF_READ_HEADER1 null:uw DAPREAD RESP_LEN(4)+OWBRMSGDSC_SC+OWORD_8+BI_CMD_BUFFER
-
-// Load block 2 (Commands 4/5)
- mov (8) MRF_READ_HEADER2.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- add (1) MRF_READ_HEADER2.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 256:ud // Point to next 2-command block
- send (16) CMD_BUFFER_W(8)<1> MRF_READ_HEADER2 null:uw DAPREAD RESP_LEN(4)+OWBRMSGDSC_SC+OWORD_8+BI_CMD_BUFFER
-
-// Load block 3 (Commands 6/7)
- mov (8) MRF_READ_HEADER3.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- add (1) MRF_READ_HEADER3.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 384:ud // Point to next 2-command block
- send (16) CMD_BUFFER_W(12)<1> MRF_READ_HEADER3 null:uw DAPREAD RESP_LEN(4)+OWBRMSGDSC_SC+OWORD_8+BI_CMD_BUFFER
-
-// Initialize necessary pointers
- mov (1) a0.1<1>:ud ((CMD_BUFFER_REG_OFF+1)*0x10000+CMD_BUFFER_REG_OFF)*32 // a0.2:w points to command buffer (first half)
- // a0.3:w points to command buffer (second half)
-// Initialize Inter DAP write header
- mov (8) MRF_INTER_WRITE_HEADER<1>:ud r0.0<8;8,1>:ud
-
-SetHWScoreboard_MBAFF_Remainder_Loop:
-// Adjust MB Y origin for field MBs
-//
- mov (2) TEMP_FD_X_W<1>:uw r[a0.2,5*4]<2;2,1>:ub // Initialize temp (X,Y) location
- and.nz.f0.1 (8) NULLREG r[a0.2,4*4]<0;1,0>:ud IS_BOT_FD:ud // Is it a "Bottom Field MB"?
- and.nz.f0.0 (8) NULLREG r[a0.2,4*4]<0;1,0>:ud IS_FIELD_MB:ud // Is it a "Field MB"?
- mul (8) acc0<1>:w r[a0.2,21]<0;1,0>:ub 2:w
- (-f0.1) mov (1) TEMP_FD_Y_W<1>:w acc0<0;1,0>:w
- (f0.1) add (1) TEMP_FD_Y_W<1>:w acc0<0;1,0>:w 1:w
- (-f0.0) mov (1) TEMP_FD_Y_W<1>:w r[a0.2,5*4+1]<0;1,0>:ub // Discard field MB Y origin handling
-
- and.nz.f0.0 (8) NULLREG r[a0.2,4*4]<0;1,0>:ud IS_INTRA_MB:ud // Is it an "Intra" MB?
- add.z.f0.1 (1) RemainderMB<1>:w RemainderMB<0;1,0>:w -1:w // Decrement MB #
- or (1) r[a0.2,2*4]<1>:ud r[a0.2,2*4]<0;1,0>:ud BIT21:ud // Set "Use Scoreboard"
- mov (2) r[a0.2,2*2]<1>:uw TEMP_FD_X_W<2;2,1>:uw // Set scoreboard (X,Y) for inter MB
- (f0.0) jmpi (1) SET_SB_MBAFF_REM_INTRA // Jump if intra MB.
-
-// Inter Macroblock
-// Output MEDIA_OBJECT command in raster scan order
- mul (16) acc0<1>:uw TEMP_FD_Y_W<0;1,0>:uw PicWidthMB<0;1,0>:uw // MB offset = Y*W
- add (16) acc0<1>:uw acc0<8;8,1>:uw TEMP_FD_X_W<0;1,0>:uw // MB offset = Y*W+X
- shl (1) MRF_INTER_WRITE_HEADER.2<1>:ud acc0.2<0;1,0>:uw 6:uw // Byte-aligned MB offset
- mov (16) MRF_INTER_WRITE_DATA0<1>:ud r[a0.2]<8;8,1>:ud {Compr} // Copy entire command to inter buffer
- mov (16) r[a0.2]<1>:ud 0:ud {Compr} // Clear original command
- send (16) NULLREGW MRF_INTER_WRITE_HEADER null:uw DAPWRITE MSG_LEN(2)+OWBWMSGDSC+OWORD_4+BI_CMD_BUFFER
- jmpi (1) Output_MBAFF_Remainder_Intra // Done for inter MB. Move to dump intra MB.
-
-SET_SB_MBAFF_REM_INTRA:
-// Intra MB
-//
- and.nz.f0.1 (8) NULLREG TEMP_FD_Y_W<0;1,0>:uw BIT0:ud // Is it "Bottom MB"?
- and.nz.f0.0 (8) NULLREG r[a0.2,4*4]<0;1,0>:ud IS_FIELD_MB:ud // Is it "Field MB"?
- mov (1) TEMP_INTRA_FLAG_W<1>:uw r[a0.2,14*2]<0;1,0>:uw // Don't want to alter original in-line data
- (f0.1) sel (2) MB_MASK_D<1>:ud BOT_FD_MASK1_D<2;2,1>:ud TOP_FD_MASK1_D<2;2,1>:ud // Assume field MB
- (f0.0) jmpi (1) SET_SB_MBAFF_REM // Jump if it's really field MB
-
-// Frame MB
-//
-// Derive E'
- and.nz.f0.0 (8) NULLREG r[a0.2,14*2]<0;1,0>:uw E_FLAG // Is "E" = 1
- (f0.1) sel (2) MB_MASK_D<1>:ud BOT_FM_MASK1_D<2;2,1>:ud TOP_FM_MASK1_D<2;2,1>:ud
- and.z.f0.1 (8) NULLREG r[a0.2,14*2]<0;1,0>:uw A_FLAG // "A" = 0?
- (f0.0) jmpi (1) SET_SB_MBAFF_REM // If "E" flag = 1, skip the rest of derivation
- (f0.1) and.nz.f0.1 (8) NULLREG r[a0.2,4*4]<0;1,0>:ud IS_INTRA8X8
- (f0.1) and.nz.f0.1 (8) NULLREG r[a0.2,14*2]<0;1,0>:uw F_FLAG
- (f0.1) or (1) TEMP_INTRA_FLAG_W<1>:uw r[a0.2,14*2]<0;1,0>:uw E_FLAG
-
-SET_SB_MBAFF_REM:
- and.nz.f0.0 (16) NULLREGW TEMP_INTRA_FLAG_W<0;1,0>:uw MB_MASK_B<0;8,1>:ub
- add.z.f0.1 (1) RemainderMB<1>:w RemainderMB<0;1,0>:w 0:w // Check remaining MB #
- shl (1) r[a0.2,2*2]<1>:uw f0.0<0;1,0>:uw 12:w // Masks 0-3
- and (1) r[a0.2,3*2]<1>:uw f0.0<0;1,0>:uw 0xf000:uw // Masks 4-7
-
- mov (2) r[a0.2,4*1]<2>:ub TEMP_FD_X_B<4;2,2>:ub // Set scoreboard (X,Y) for intra MB
-
-Output_MBAFF_Remainder_Intra:
-// Intra MB command always output
- mov (8) MRF_INTRA_WRITE_HEADER.0<1>:ud MRF_READ_HEADER_SRC.0<8;8,1>:ud
- mov (16) MRF_CMD_BUF_D(0)<1> r[a0.2]<8;8,1>:ud {Compr} // Copy entire command to intra buffer
- send (16) NULLREGW MRF_INTRA_WRITE_HEADER null:uw DAPWRITE MSG_LEN(2)+OWBWMSGDSC+OWORD_4+BI_CMD_BUFFER
-
- add (1) MRF_READ_HEADER_SRC.2<1>:ud MRF_READ_HEADER_SRC.2<0;1,0>:ud 64:ud // Point to next command
- add (1) a0.1<1>:ud a0.1<0;1,0>:ud 0x00400040:ud // Update pointers
- (-f0.1) jmpi (1) SetHWScoreboard_MBAFF_Remainder_Loop
-
-// All MBs have been decoded. Terminate the thread now
-//
-SetHWScoreboard_MBAFF_Done:
- END_THREAD
-
-#if !defined(COMBINED_KERNEL) // For standalone kernel only
-.end_code
-
-.end_kernel
-#endif
-
-// End of SetHWScoreboard_MBAFF
diff --git a/src/shaders/h264/mc/SetHWScoreboard_header.inc b/src/shaders/h264/mc/SetHWScoreboard_header.inc
deleted file mode 100644
index 65358af..0000000
--- a/src/shaders/h264/mc/SetHWScoreboard_header.inc
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Common header file for both SetHWScoreboard and SetHWScoreboard_MBAFF kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__SETHWSCOREBOARD_HEADER__) // Make sure this file is only included once
-#define __SETHWSCOREBOARD_HEADER__
-
-// Module name: SetHWScoreboard_header.inc
-//
-// Common header file for both SetHWScoreboard and SetHWScoreboard_MBAFF kernels
-//
-
-#define BI_CMD_BUF 0 // Binding table index for command buffer
-
-// GRF r1 map
-//
-// For use by setting HW scoreboard kernel for MBAFF picture
-//
-// CURBE data
-#define TOP_FM_MASK1_D r1.0 // Bit mask for first half of top frame MB SB mask
-#define TOP_FM_MASK1_B r1.0 // Bit mask for first half of top frame MB SB mask
-#define TOP_FM_MASK2_D r1.1 // Bit mask for second half of top frame MB SB mask
-#define TOP_FM_MASK2_B r1.4 // Bit mask for second half of top frame MB SB mask
-#define BOT_FM_MASK1_D r1.2 // Bit mask for first half of bottom frame MB SB mask
-#define BOT_FM_MASK1_B r1.8 // Bit mask for first half of bottom frame MB SB mask
-#define BOT_FM_MASK2_D r1.3 // Bit mask for second half of bottom frame MB SB mask
-#define BOT_FM_MASK2_B r1.12 // Bit mask for second half of bottom frame MB SB mask
-#define TOP_FD_MASK1_D r1.4 // Bit mask for first half of top field MB SB mask
-#define TOP_FD_MASK1_B r1.16 // Bit mask for first half of top field MB SB mask
-#define TOP_FD_MASK2_D r1.5 // Bit mask for second half of top field MB SB mask
-#define TOP_FD_MASK2_B r1.20 // Bit mask for second half of top field MB SB mask
-#define BOT_FD_MASK1_D r1.6 // Bit mask for first half of bottom field MB SB mask
-#define BOT_FD_MASK1_B r1.24 // Bit mask for first half of bottom field MB SB mask
-#define BOT_FD_MASK2_D r1.7 // Bit mask for second half of bottom field MB SB mask
-#define BOT_FD_MASK2_B r1.28 // Bit mask for second half of bottom field MB SB mask
-
-// For use by setting HW scoreboard kernel for non-MBAFF picture
-#define MB_SHIFT_MASK_W r1.0 // :w type. Shift values for two parts of the MB SB mask
-#define MB_SHIFT_MASK_B r1.0 // :b type. Shift values for two parts of the MB SB mask
-
-// GRF r2 map
-//
-// In-line data
-//
-#define INLINE_REG_OFFSET 1
-#define INLINE_REG r2
-
-#define StartingMB INLINE_REG.0 // :uw type. Starting MB number
-#define TotalMB INLINE_REG.1 // :uw type. Total number of MB to be processed
-#define PicWidthMB INLINE_REG.2 // :uw type. Picture width in MB
-
-// GRF r3 map
-//
-// Temporary variables
-//
-#define RemainderMB r3.0 // :uw type. Remainder of MB (<16) to be processed
-
-#define TEMP_FD_X_W r3.2 // :w type. Temporary variable for field MB X origin in MBAFF picture
-#define TEMP_FD_X_B r3.4 // :b type. Temporary variable for field MB X origin in MBAFF picture
-#define TEMP_FD_Y_W r3.3 // :w type. Temporary variable for field MB Y origin in MBAFF picture
-#define TEMP_FD_Y_B r3.6 // :b type. Temporary variable for field MB Y origin in MBAFF picture
-
-#define TEMP_INTRA_FLAG_W r3.4 // :uw type. Temporary intra available flag
-
-#define MB_MASK_D r3.4 // :ud type. Bit masks for MBAFF MB
-#define MB_MASK_B r3.16 // :ub type. Bit masks for MBAFF MB
-
-#define MRF_READ_HEADER_SRC r63
-
-// MEDIA_OBJECT_EX Command map
-//
-// In DW1 of each MEDIA_OBJECT_EX command (VFE DWORD)
-#define CUR_X 0 // Byte 0
-#define CUR_Y 0 // Byte 2
-
-// In DW2 of each MEDIA_OBJECT_EX command
-#define USE_SCOREBOARD BIT21
-
-// In DW4 of each MEDIA_OBJECT_EX command
-#define F_FLAG BIT4
-#define IS_INTRA_MB BIT13
-#define IS_FIELD_MB BIT14
-#define IS_INTRA8X8 BIT15
-#define IS_BOT_FD BIT24
-
-// In DW7 of each MEDIA_OBJECT_EX command
-#define A_FLAG BIT0
-#define B_FLAG BIT1
-#define C_FLAG BIT2
-#define D_FLAG BIT3
-#define E_FLAG BIT4
-
-#define CMD_BUFFER_REG_OFF 4
-.declare CMD_BUFFER_D Base=GRF(4) ElementSize=4 SrcRegion=REGION(8,1) Type=ud // Command buffer (32 GRF)
-.declare CMD_BUFFER_W Base=GRF(4) ElementSize=2 SrcRegion=REGION(16,1) Type=uw // Command buffer (32 GRF)
-.declare CMD_BUFFER_B Base=GRF(4) ElementSize=1 SrcRegion=REGION(16,1) Type=ub // Command buffer (32 GRF)
-
-#define MRF_READ_HEADER m1
-#define MRF_READ_HEADER0 m1
-#define MRF_READ_HEADER1 m2
-#define MRF_READ_HEADER2 m3
-#define MRF_READ_HEADER3 m4
-
-#define MRF_INTER_WRITE_HEADER m5
-#define MRF_INTER_WRITE_DATA0 m6
-#define MRF_INTER_WRITE_DATA1 m7
-
-#define MRF_WRITE_HEADER m11
-#define MRF_INTRA_WRITE_HEADER m11
-
-#define MRF_CMD_BUF_REG_OFF 12
-.declare MRF_CMD_BUF_D Base=m12 ElementSize=4 SrcRegion=REGION(8,1) Type=ud // Command buffer stored in MRF
-.declare MRF_CMD_BUF_W Base=m12 ElementSize=2 SrcRegion=REGION(16,1) Type=uw // Command buffer stored in MRF
-.declare MRF_CMD_BUF_B Base=m12 ElementSize=1 SrcRegion=REGION(16,1) Type=ub // Command buffer stored in MRF
-
-#define BI_CMD_BUFFER 0
-
-#define OWBRMSGDSC_SC 0x02088000 // OWORD Block Read Message Descriptor, reading from sampler cache = A.
-#define OWBWMSGDSC 0x02080000 // OWORD Block Write Message Descriptor
-
-#define OWORD_1 0x000
-#define OWORD_2 0x200
-#define OWORD_4 0x300
-#define OWORD_8 0x400
-
-// End of SETHWSCOREBOARD_HEADER
-
-#endif // !defined(__SETHWSCOREBOARD_HEADER__)
-
diff --git a/src/shaders/h264/mc/SetupForHWMC.asm b/src/shaders/h264/mc/SetupForHWMC.asm
deleted file mode 100644
index c27089b..0000000
--- a/src/shaders/h264/mc/SetupForHWMC.asm
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Initial setup for running HWMC kernels in HWMC-Only decoding mode
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: SetupForHWMC.asm
-//
-// Initial setup for running HWMC kernels in HWMC-Only decoding mode
-//
-#include "header.inc"
-#include "intra_Header.inc"
-
-#if !defined(__SETUPFORHWMC__) // Make sure the following are only included once
-#define __SETUPFORHWMC__
-
-.reg_count_total 64
-.reg_count_payload 2
-
-//
-// Now, begin source code....
-//
-
-.code
-#endif // !defined(__SETUPFORHWMC__)
-
- mov (8) MSGSRC<1>:ud r0.0<8;8,1>:ud // Initialize message header payload with R0
- shl (2) I_ORIX<1>:uw ORIX<2;2,1>:ub 4:w // Convert MB origin to pixel unit
-
-// End of SetupForHWMC
diff --git a/src/shaders/h264/mc/add_Error_16x16_Y.asm b/src/shaders/h264/mc/add_Error_16x16_Y.asm
deleted file mode 100644
index 2546935..0000000
--- a/src/shaders/h264/mc/add_Error_16x16_Y.asm
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Add macroblock correction Y data blocks to predicted picture
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: add_Error_16x16_Y.asm
-//
-// Add macroblock correction Y data blocks to predicted picture
-//
-
-// Every line of predicted Y data is added to Y error data if CBP bit is set
-
- mov (1) PERROR_UD<1>:ud 0x10001*ERRBUF*GRFWIB+0x00100000:ud // Pointers to first and second row of error block
-
- and.z.f0.1 (1) NULLREG REG_CBPCY CBP_Y_MASK
- (f0.1) jmpi (1) End_add_Error_16x16_Y // Skip all blocks
-
-// Block Y0
-//
- $for(0,0; <8; 2,1) {
- add.sat (16) DEC_Y(%1)<2> r[PERROR,%2*GRFWIB]REGION(8,1):w PRED_Y(%1)REGION(8,2) {Compr}
- }
-
-// Block Y1
-//
- $for(0,0; <8; 2,1) {
- add.sat (16) DEC_Y(%1,16)<2> r[PERROR,%2*GRFWIB+0x80]REGION(8,1):w PRED_Y(%1,16)REGION(8,2) {Compr}
- }
-
-// Block Y2
-//
- $for(8,0; <16; 2,1) {
- add.sat (16) DEC_Y(%1)<2> r[PERROR,%2*GRFWIB+0x100]REGION(8,1):w PRED_Y(%1)REGION(8,2) {Compr}
- }
-
-// Block Y3
-//
- $for(8,0; <16; 2,1) {
- add.sat (16) DEC_Y(%1,16)<2> r[PERROR,%2*GRFWIB+0x180]REGION(8,1):w PRED_Y(%1,16)REGION(8,2) {Compr}
- }
-
-End_add_Error_16x16_Y:
- add (1) PERROR_UD<1>:ud PERROR_UD:ud 0x01800180:ud // Pointers to Y3 error block
-
-// End of add_Error_16x16_Y
-
diff --git a/src/shaders/h264/mc/add_Error_UV.asm b/src/shaders/h264/mc/add_Error_UV.asm
deleted file mode 100644
index c14ce57..0000000
--- a/src/shaders/h264/mc/add_Error_UV.asm
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Add macroblock correction UV data blocks to predicted picture
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#if !defined(__ADD_ERROR_UV__) // Make sure this is only included once
-#define __ADD_ERROR_UV__
-
-// Module name: add_Error_UV.asm
-//
-// Add macroblock correction UV data blocks to predicted picture
-
-// PERROR points to error block Y3 after decoding Y component
-
-// Update address register used in instruction compression
-//
-
-// U component
-//
- add (1) PERROR1<1>:w PERROR:w 0x00010:w // Pointers to next error row
- $for(0,0; <8; 2,1) {
- add.sat (16) DEC_UV(%1)<4> r[PERROR,%2*GRFWIB+0x80]REGION(8,1):w PRED_UV(%1)REGION(8,4) {Compr}
- }
-
-// V component
-//
- $for(0,0; <8; 2,1) {
- add.sat (16) DEC_UV(%1,2)<4> r[PERROR,%2*GRFWIB+0x100]REGION(8,1):w PRED_UV(%1,2)REGION(8,4) {Compr}
- }
-
-// End of add_Error_UV
-
-#endif // !defined(__ADD_ERROR_UV__)
diff --git a/src/shaders/h264/mc/avc_mc.g4b b/src/shaders/h264/mc/avc_mc.g4b
deleted file mode 100644
index cdee6ac..0000000
--- a/src/shaders/h264/mc/avc_mc.g4b
+++ /dev/null
@@ -1,5251 +0,0 @@
- { 0x00600001, 0x27c00021, 0x008d0000, 0x00000000 },
- { 0x00200009, 0x27fa3e29, 0x00450064, 0x00040004 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000d4 },
- { 0x00000005, 0x220e3e2c, 0x00000070, 0x000f000f },
- { 0x00000001, 0x26a00221, 0x00009c38, 0x00000000 },
- { 0x00000220, 0x34001400, 0x00001400, 0x000006a0 },
- { 0x00a02001, 0x24000229, 0x00b10624, 0x00000000 },
- { 0x00a02001, 0x24400229, 0x00b10624, 0x00000000 },
- { 0x00a02001, 0x24800229, 0x00b10624, 0x00000000 },
- { 0x00a02001, 0x24c00229, 0x00b10624, 0x00000000 },
- { 0x00a02001, 0x25000229, 0x00b10624, 0x00000000 },
- { 0x00a02001, 0x25400229, 0x00b10624, 0x00000000 },
- { 0x00a02001, 0x25800229, 0x00b10624, 0x00000000 },
- { 0x00a02001, 0x25c00229, 0x00b10624, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00000001, 0x22080060, 0x00000000, 0x06440640 },
- { 0x00a02001, 0x24000229, 0x00009003, 0x00000000 },
- { 0x00a02001, 0x24400229, 0x0000900b, 0x00000000 },
- { 0x00a02001, 0x24800229, 0x00009013, 0x00000000 },
- { 0x00a02001, 0x24c00229, 0x0000901b, 0x00000000 },
- { 0x00a02001, 0x25000229, 0x00009023, 0x00000000 },
- { 0x00a02001, 0x25400229, 0x0000902b, 0x00000000 },
- { 0x00a02001, 0x25800229, 0x00009033, 0x00000000 },
- { 0x00a02001, 0x25c00229, 0x0000903b, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000072 },
- { 0x02600005, 0x20000c20, 0x0000006c, 0x00000002 },
- { 0x00600005, 0x24000c20, 0x0000006c, 0x00000011 },
- { 0x01600007, 0x20000c00, 0x028d0400, 0x00000011 },
- { 0x00780001, 0x26240169, 0x00000000, 0x80808080 },
- { 0x00780001, 0x66430231, 0x028d0624, 0x00000000 },
- { 0x00780001, 0x66630231, 0x028d062c, 0x00000000 },
- { 0x00780001, 0x26240231, 0x00cf0643, 0x00000000 },
- { 0x00780001, 0x262c0231, 0x00cf0663, 0x00000000 },
- { 0x00800040, 0x25e04629, 0x00cf0643, 0x00b10624 },
- { 0x00600040, 0x25e02529, 0x008d05e0, 0x008d05f0 },
- { 0x00400040, 0x25e02529, 0x006905e0, 0x006905e8 },
- { 0x00200040, 0x25e02529, 0x004505e0, 0x004505e4 },
- { 0x00a02040, 0x2400252c, 0x000005e0, 0x000005e2 },
- { 0x00a02040, 0x24003d8c, 0x00b10400, 0x00100010 },
- { 0x00a02008, 0x24003d89, 0x00b10400, 0x00050005 },
- { 0x00a02008, 0x24403d89, 0x00b10400, 0x00050005 },
- { 0x00a02008, 0x24803d89, 0x00b10400, 0x00050005 },
- { 0x00a02008, 0x24c03d89, 0x00b10400, 0x00050005 },
- { 0x00a02008, 0x25003d89, 0x00b10400, 0x00050005 },
- { 0x00a02008, 0x25403d89, 0x00b10400, 0x00050005 },
- { 0x00a02008, 0x25803d89, 0x00b10400, 0x00050005 },
- { 0x00a02008, 0x25c03d89, 0x00b10400, 0x00050005 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000044 },
- { 0x00600041, 0x26806e2d, 0x008d062c, 0x89abcdef },
- { 0x00600041, 0x26906e2d, 0x008d0623, 0xfedcba98 },
- { 0x00600041, 0x26a06e2d, 0x00cf0663, 0x89abcdef },
- { 0x00600041, 0x26b06e2d, 0x00cf0643, 0x0fedcba9 },
- { 0x00000041, 0x26be3e2d, 0x00000623, 0xfff8fff8 },
- { 0x00802040, 0x268035ad, 0x008d4680, 0x008d0690 },
- { 0x00802040, 0x268035ad, 0x008d0680, 0x008d0688 },
- { 0x00802040, 0x268035ad, 0x008d0680, 0x008d0684 },
- { 0x00802040, 0x268035ad, 0x008d0680, 0x008d0682 },
- { 0x00800001, 0x240001ec, 0x00000000, 0x00200020 },
- { 0x00200048, 0x24003dac, 0x00a00680, 0x00050005 },
- { 0x00200008, 0x26e03d8d, 0x00450400, 0x00060006 },
- { 0x00800001, 0x240001ec, 0x00000000, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x00000633, 0x00100010 },
- { 0x00800048, 0x26c03e2d, 0x0000067f, 0x00100010 },
- { 0x00800048, 0x272055ad, 0x000006e0, 0x00b10040 },
- { 0x00600041, 0x268055ad, 0x000006e2, 0x00ae0040 },
- { 0x00600041, 0x26a055ad, 0x000006e2, 0x00ae0041 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00b00680 },
- { 0x80a02008, 0x44003d91, 0x00b10400, 0x00050005 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00b00682 },
- { 0x80a02008, 0x44403d91, 0x00b10400, 0x00050005 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00b00684 },
- { 0x80a02008, 0x44803d91, 0x00b10400, 0x00050005 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00b00686 },
- { 0x80a02008, 0x44c03d91, 0x00b10400, 0x00050005 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00b00688 },
- { 0x80a02008, 0x45003d91, 0x00b10400, 0x00050005 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00b0068a },
- { 0x80a02008, 0x45403d91, 0x00b10400, 0x00050005 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00b0068c },
- { 0x80a02008, 0x45803d91, 0x00b10400, 0x00050005 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00b0068e },
- { 0x80a02008, 0x45c03d91, 0x00b10400, 0x00050005 },
- { 0x00000001, 0x22040060, 0x00000000, 0x00900080 },
- { 0x01000005, 0x20000c20, 0x02000068, 0x00003c00 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000020 },
- { 0x80802040, 0x440045b1, 0x008d8800, 0x00ae0400 },
- { 0x80802040, 0x444045b1, 0x008d8820, 0x00ae0440 },
- { 0x80802040, 0x448045b1, 0x008d8840, 0x00ae0480 },
- { 0x80802040, 0x44c045b1, 0x008d8860, 0x00ae04c0 },
- { 0x80802040, 0x441045b1, 0x008d8880, 0x00ae0410 },
- { 0x80802040, 0x445045b1, 0x008d88a0, 0x00ae0450 },
- { 0x80802040, 0x449045b1, 0x008d88c0, 0x00ae0490 },
- { 0x80802040, 0x44d045b1, 0x008d88e0, 0x00ae04d0 },
- { 0x80802040, 0x450045b1, 0x008d8900, 0x00ae0500 },
- { 0x80802040, 0x454045b1, 0x008d8920, 0x00ae0540 },
- { 0x80802040, 0x458045b1, 0x008d8940, 0x00ae0580 },
- { 0x80802040, 0x45c045b1, 0x008d8960, 0x00ae05c0 },
- { 0x80802040, 0x451045b1, 0x008d8980, 0x00ae0510 },
- { 0x80802040, 0x455045b1, 0x008d89a0, 0x00ae0550 },
- { 0x80802040, 0x459045b1, 0x008d89c0, 0x00ae0590 },
- { 0x80802040, 0x45d045b1, 0x008d89e0, 0x00ae05d0 },
- { 0x00000040, 0x22040c00, 0x00000204, 0x01800180 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000e2 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000018 },
- { 0x00000001, 0x27800021, 0x00000780, 0x00000000 },
- { 0x00000001, 0x27a00021, 0x000007a0, 0x00000000 },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x00200440, 0x27c055a5, 0x004507fa, 0x0045002a },
- { 0x00000801, 0x27c80061, 0x00000000, 0x0000001b },
- { 0x00000040, 0x22000d20, 0x00000062, 0x02186000 },
- { 0x01600031, 0x26200021, 0x408d07c0, 0x00000200 },
- { 0x00000440, 0x27c43ca5, 0x000007c4, 0x00010001 },
- { 0x00000801, 0x27c80061, 0x00000000, 0x000f0003 },
- { 0x00000040, 0x22000c00, 0x00000200, 0x00100000 },
- { 0x02600031, 0x26400021, 0x408d07c0, 0x00000200 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00000008, 0x27fc3dad, 0x000007fc, 0x00010001 },
- { 0x00200440, 0x27c055a5, 0x004507fa, 0x0045002a },
- { 0x00000801, 0x27c80061, 0x00000000, 0x00000013 },
- { 0x00000040, 0x22000c00, 0x00000200, 0xefffc001 },
- { 0x01600031, 0x26200021, 0x408d07c0, 0x00000200 },
- { 0x00000440, 0x27c43ca5, 0x000007c4, 0x00010001 },
- { 0x00000801, 0x27c80061, 0x00000000, 0x00070003 },
- { 0x05600031, 0x26400021, 0x408d07c0, 0x00000200 },
- { 0x00000008, 0x220e3e2c, 0x0000006c, 0x00060006 },
- { 0x00000001, 0x26a002a5, 0x00009c3c, 0x00000000 },
- { 0x00000220, 0x34001400, 0x00001400, 0x000006a0 },
- { 0x02600005, 0x20000c20, 0x0000006c, 0x00000002 },
- { 0x00780001, 0x26240169, 0x00000000, 0x80808080 },
- { 0x02400005, 0x20000c20, 0x0200006c, 0x00000001 },
- { 0x00560001, 0x46420129, 0x02690624, 0x00000000 },
- { 0x02400005, 0x20000c20, 0x0200006c, 0x00000010 },
- { 0x00560001, 0x46520129, 0x0269062c, 0x00000000 },
- { 0x00780001, 0x26240129, 0x00ae0642, 0x00000000 },
- { 0x00800040, 0x24004629, 0x00b10624, 0x00650642 },
- { 0x00600040, 0x24002529, 0x00650400, 0x00650404 },
- { 0x00600040, 0x25202529, 0x00050400, 0x00050404 },
- { 0x00600040, 0x25702529, 0x00050408, 0x0005040c },
- { 0x00560001, 0x26240169, 0x00000000, 0x80808080 },
- { 0x00460001, 0x26240129, 0x028a0652, 0x00000000 },
- { 0x00560001, 0x46520129, 0x02690624, 0x00000000 },
- { 0x02400005, 0x20000c20, 0x0200006c, 0x00000001 },
- { 0x00560001, 0x46420169, 0x02000000, 0x80808080 },
- { 0x00460001, 0x46420129, 0x0069062c, 0x00000000 },
- { 0x00560001, 0x262c0129, 0x008a0642, 0x00000000 },
- { 0x00600040, 0x24004629, 0x008d0624, 0x00650652 },
- { 0x00600040, 0x24104629, 0x00650642, 0x008d062c },
- { 0x00600040, 0x24002529, 0x00650400, 0x00650404 },
- { 0x00600040, 0x25302529, 0x00050408, 0x0005040c },
- { 0x00600040, 0x25602529, 0x00050400, 0x00050404 },
- { 0x00a02040, 0x24003d2c, 0x00b10520, 0x00040004 },
- { 0x00a02008, 0x24003d89, 0x00b10400, 0x00030003 },
- { 0x00a02008, 0x24403d89, 0x00b10400, 0x00030003 },
- { 0x00a02040, 0x24003d2c, 0x00b10560, 0x00040004 },
- { 0x00a02008, 0x24803d89, 0x00b10400, 0x00030003 },
- { 0x00a02008, 0x24c03d89, 0x00b10400, 0x00030003 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000048 },
- { 0x00000001, 0x22080060, 0x00000000, 0x06440640 },
- { 0x00a02001, 0x24000229, 0x00059002, 0x00000000 },
- { 0x00a02001, 0x24400229, 0x0005900a, 0x00000000 },
- { 0x00a02001, 0x24800229, 0x00059012, 0x00000000 },
- { 0x00a02001, 0x24c00229, 0x0005901a, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000003c },
- { 0x00a02001, 0x24000229, 0x00b10624, 0x00000000 },
- { 0x00a02001, 0x24400229, 0x00b10624, 0x00000000 },
- { 0x00a02001, 0x24800229, 0x00b10624, 0x00000000 },
- { 0x00a02001, 0x24c00229, 0x00b10624, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000032 },
- { 0x00600041, 0x26806e2d, 0x008d062c, 0x44332211 },
- { 0x00600041, 0x26906e2d, 0x008d0622, 0xffeeddcc },
- { 0x00600041, 0x26a06e2d, 0x00650652, 0x44332211 },
- { 0x00600041, 0x26b06e2d, 0x00650642, 0x00ffeedd },
- { 0x00200041, 0x26bc3e2d, 0x00450622, 0xfffcfffc },
- { 0x00802040, 0x268035ad, 0x008d0680, 0x008d0690 },
- { 0x00802040, 0x268035ad, 0x008d0680, 0x008d0688 },
- { 0x00802040, 0x268035ad, 0x008d0680, 0x008d0684 },
- { 0x00800001, 0x240001ec, 0x00000000, 0x00200020 },
- { 0x00400048, 0x24003dac, 0x00a50680, 0x00220022 },
- { 0x00400008, 0x26e03d8d, 0x00690400, 0x00060006 },
- { 0x00800001, 0x240001ec, 0x00000000, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x00050632, 0x00100010 },
- { 0x00800048, 0x26c03e2d, 0x0005065e, 0x00100010 },
- { 0x00800048, 0x272055ad, 0x000506e0, 0x00240044 },
- { 0x00600041, 0x268055ad, 0x000506e4, 0x00440044 },
- { 0x00600041, 0x26a055ad, 0x000506e4, 0x00440045 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00050680 },
- { 0x80a02008, 0x44003d91, 0x00b10400, 0x00050005 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00050684 },
- { 0x80a02008, 0x44403d91, 0x00b10400, 0x00050005 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00050688 },
- { 0x80a02008, 0x44803d91, 0x00b10400, 0x00050005 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x0005068c },
- { 0x80a02008, 0x44c03d91, 0x00b10400, 0x00050005 },
- { 0x00000040, 0x22063d8c, 0x00000204, 0x00100010 },
- { 0x80802040, 0x640045b1, 0x008d8880, 0x00cf0400 },
- { 0x80802040, 0x644045b1, 0x008d88a0, 0x00cf0440 },
- { 0x80802040, 0x648045b1, 0x008d88c0, 0x00cf0480 },
- { 0x80802040, 0x64c045b1, 0x008d88e0, 0x00cf04c0 },
- { 0x80802040, 0x640245b1, 0x008d8900, 0x00cf0402 },
- { 0x80802040, 0x644245b1, 0x008d8920, 0x00cf0442 },
- { 0x80802040, 0x648245b1, 0x008d8940, 0x00cf0482 },
- { 0x80802040, 0x64c245b1, 0x008d8960, 0x00cf04c2 },
- { 0x00000401, 0x27c80061, 0x00000000, 0x0007000f },
- { 0x00200801, 0x27c001a1, 0x004507fa, 0x00000000 },
- { 0x00000040, 0x22000c00, 0x00000200, 0x08004000 },
- { 0x00800001, 0x20400232, 0x00d20400, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20420, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20440, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d20460, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d20480, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d204a0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d204c0, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d204e0, 0x00000000 },
- { 0x01600031, 0x27a00021, 0x508d07c0, 0x00000200 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00000401, 0x27c80061, 0x00000000, 0x000f000f },
- { 0x00200801, 0x27c001a1, 0x004507fa, 0x00000000 },
- { 0x00000040, 0x22000c00, 0x00000200, 0x0ff04000 },
- { 0x00000001, 0x22080060, 0x00000000, 0x04400400 },
- { 0x00a02001, 0x20400232, 0x00d29000, 0x00000000 },
- { 0x00a02001, 0x20500232, 0x00d29020, 0x00000000 },
- { 0x00a02001, 0x20800232, 0x00d29080, 0x00000000 },
- { 0x00a02001, 0x20900232, 0x00d290a0, 0x00000000 },
- { 0x00a02001, 0x20c00232, 0x00d29100, 0x00000000 },
- { 0x00a02001, 0x20d00232, 0x00d29120, 0x00000000 },
- { 0x00a02001, 0x21000232, 0x00d29180, 0x00000000 },
- { 0x00a02001, 0x21100232, 0x00d291a0, 0x00000000 },
- { 0x01600031, 0x27800021, 0x508d07c0, 0x00000200 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00600001, 0x27c00021, 0x008d0000, 0x00000000 },
- { 0x00200009, 0x27fa3e29, 0x00450064, 0x00040004 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff04 },
- { 0x00000001, 0x220401ec, 0x00000000, 0x00800080 },
- { 0x00000001, 0x22080060, 0x00000000, 0x04100400 },
- { 0x00200008, 0x27006e2d, 0x0000006c, 0x00000040 },
- { 0x00400001, 0x27400061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x272001a9, 0x00b10620, 0x00000000 },
- { 0x02600005, 0x20001c20, 0x0000006c, 0x00000008 },
- { 0x00110001, 0x27230231, 0x00000624, 0x00000000 },
- { 0x00600001, 0x27420231, 0x00cf0643, 0x00000000 },
- { 0x00110001, 0x27410231, 0x00000643, 0x00000000 },
- { 0x00240001, 0x27400231, 0x00000623, 0x00000000 },
- { 0x02000005, 0x20001c20, 0x0200006c, 0x00000002 },
- { 0x00010001, 0x27400231, 0x02000624, 0x00000000 },
- { 0x02000005, 0x20001c20, 0x0200006c, 0x00000001 },
- { 0x00110001, 0x27420231, 0x02000623, 0x00000000 },
- { 0x00000005, 0x26803e2d, 0x00000070, 0x000f000f },
- { 0x00000001, 0x270801ad, 0x00000700, 0x00000000 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000084 },
- { 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
- { 0x00800001, 0x27200231, 0x00b10628, 0x00000000 },
- { 0x02600005, 0x20001c20, 0x0200006c, 0x00000004 },
- { 0x00680001, 0x272c0231, 0x028d0634, 0x00000000 },
- { 0x00780001, 0x272c0231, 0x02000633, 0x00000000 },
- { 0x00400001, 0x27420231, 0x00a0040e, 0x00000000 },
- { 0x00400001, 0x27460231, 0x00a0044e, 0x00000000 },
- { 0x00200001, 0x27400231, 0x0000062b, 0x00000000 },
- { 0x02000005, 0x20001c20, 0x0200006c, 0x00000002 },
- { 0x00010001, 0x27400231, 0x0200062c, 0x00000000 },
- { 0x00110001, 0x27410231, 0x0200040e, 0x00000000 },
- { 0x00000008, 0x26803e2d, 0x00000070, 0x00040004 },
- { 0x00200040, 0x22083d8c, 0x00450208, 0x00800080 },
- { 0x00000006, 0x27083dad, 0x00000700, 0x00010001 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000064 },
- { 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
- { 0x00a02001, 0xb3800231, 0x00d20400, 0x00000000 },
- { 0x00a02001, 0xb3a00231, 0x00d20480, 0x00000000 },
- { 0x00a02001, 0xb3c00231, 0x00d20440, 0x00000000 },
- { 0x00a02001, 0xb3e00231, 0x00d204c0, 0x00000000 },
- { 0x02000005, 0x20001c20, 0x00000060, 0x00000002 },
- { 0x01000005, 0x20001c20, 0x0200006c, 0x00000001 },
- { 0x01010005, 0x20001c20, 0x00000060, 0x00004000 },
- { 0x02010005, 0x20001c20, 0x02000060, 0x00000010 },
- { 0x00030001, 0x27230231, 0x0000065f, 0x00000000 },
- { 0x00030220, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x02600005, 0x20001c20, 0x0000006c, 0x00000001 },
- { 0x00460001, 0x27200231, 0x0069065c, 0x00000000 },
- { 0x00110001, 0x27230231, 0x00000458, 0x00000000 },
- { 0x00600001, 0x27240231, 0x008d0458, 0x00000000 },
- { 0x00600001, 0x272c0231, 0x008d0478, 0x00000000 },
- { 0x00600001, 0x27420231, 0x00cf0663, 0x00000000 },
- { 0x00000001, 0x27400231, 0x00000458, 0x00000000 },
- { 0x00010001, 0x27410231, 0x0000065f, 0x00000000 },
- { 0x00110001, 0x27410231, 0x00000663, 0x00000000 },
- { 0x02000005, 0x20001c20, 0x0200006c, 0x00000010 },
- { 0x00110001, 0x27420231, 0x0200065f, 0x00000000 },
- { 0x00000005, 0x26803e2d, 0x00000071, 0x000f000f },
- { 0x00000006, 0x27083dad, 0x00000702, 0x00020002 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
- { 0x00400001, 0x27200231, 0x0069045c, 0x00000000 },
- { 0x00600001, 0x27240231, 0x008d0478, 0x00000000 },
- { 0x00800001, 0x272c0231, 0x0000047f, 0x00000000 },
- { 0x00400001, 0x27420231, 0x00a0048e, 0x00000000 },
- { 0x00400001, 0x27460231, 0x00a004ce, 0x00000000 },
- { 0x00000001, 0x27400231, 0x00000478, 0x00000000 },
- { 0x00000001, 0x27410231, 0x0000045f, 0x00000000 },
- { 0x00000008, 0x26803e2d, 0x00000071, 0x00040004 },
- { 0x00200040, 0x22083d8c, 0x00450208, 0x00800080 },
- { 0x00000006, 0x27083dad, 0x00000700, 0x00030003 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00a02001, 0xb3800231, 0x00d20480, 0x00000000 },
- { 0x00a02001, 0xb3a00231, 0x00d20500, 0x00000000 },
- { 0x00a02001, 0xb3c00231, 0x00d204c0, 0x00000000 },
- { 0x00a02001, 0xb3e00231, 0x00d20540, 0x00000000 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000100 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffe74 },
- { 0x00000001, 0x27800021, 0x00000780, 0x00000000 },
- { 0x00000001, 0x27a00021, 0x000007a0, 0x00000000 },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x00000001, 0x27340231, 0x00000733, 0x00000000 },
- { 0x00600001, 0x274a0231, 0x00000749, 0x00000000 },
- { 0x00800040, 0x24003e2c, 0x00b10723, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b10724, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b10725, 0x00010001 },
- { 0x00800008, 0x26c03d8d, 0x008d0400, 0x00020002 },
- { 0x00800040, 0x24003e2c, 0x00b10740, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b10741, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b10742, 0x00010001 },
- { 0x00800008, 0x26a03d8d, 0x008d0400, 0x00020002 },
- { 0x00800001, 0x27240231, 0x00d206c0, 0x00000000 },
- { 0x00600001, 0x27400231, 0x00ae06a2, 0x00000000 },
- { 0x00000001, 0x27230231, 0x000006a0, 0x00000000 },
- { 0x00000005, 0x220e3dac, 0x00000680, 0x000f000f },
- { 0x00000001, 0x26a00221, 0x00009c2c, 0x00000000 },
- { 0x00000220, 0x34001400, 0x00001400, 0x000006a0 },
- { 0x80800040, 0xd00045b1, 0x00b18800, 0x000d0724 },
- { 0x80800040, 0xd02045b1, 0x00b18820, 0x000d0724 },
- { 0x80800040, 0xd04045b1, 0x00b18840, 0x000d0724 },
- { 0x80800040, 0xd06045b1, 0x00b18860, 0x000d0724 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x80800040, 0xd00045b1, 0x00b18800, 0x002c0740 },
- { 0x80800040, 0xd02045b1, 0x00b18820, 0x002c0742 },
- { 0x80800040, 0xd04045b1, 0x00b18840, 0x002c0744 },
- { 0x80800040, 0xd06045b1, 0x00b18860, 0x002c0746 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x02802005, 0x20003da0, 0x00000708, 0x00020002 },
- { 0x02600005, 0x20003da0, 0x02000708, 0x00010001 },
- { 0x009a0001, 0x27200169, 0x00000000, 0x80808080 },
- { 0x00780001, 0x27400231, 0x028d0724, 0x00000000 },
- { 0x00780001, 0x27240231, 0x008d0740, 0x00000000 },
- { 0x00600040, 0x25e04629, 0x008d0724, 0x008d0740 },
- { 0x00400040, 0x25e02529, 0x006905e0, 0x006905e8 },
- { 0x00200040, 0x25e02529, 0x004505e0, 0x004505e4 },
- { 0x00800040, 0x2400252c, 0x000005e0, 0x000005e2 },
- { 0x00800040, 0x24003d8c, 0x008d0400, 0x00080008 },
- { 0x00800008, 0x26803d8d, 0x008d0400, 0x00040004 },
- { 0x80800040, 0xd00035b1, 0x00b18800, 0x00b10680 },
- { 0x80800040, 0xd02035b1, 0x00b18820, 0x00b10680 },
- { 0x80800040, 0xd04035b1, 0x00b18840, 0x00b10680 },
- { 0x80800040, 0xd06035b1, 0x00b18860, 0x00b10680 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00600001, 0x27340231, 0x008d0733, 0x00000000 },
- { 0x00800040, 0x24003e2c, 0x00b10726, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b10725, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b10724, 0x00010001 },
- { 0x00800008, 0x26803d8d, 0x00b10400, 0x00020002 },
- { 0x80800040, 0xd00035b1, 0x00b18800, 0x002d0680 },
- { 0x80800040, 0xd02035b1, 0x00b18820, 0x002d0684 },
- { 0x80800040, 0xd04035b1, 0x00b18840, 0x002d0688 },
- { 0x80800040, 0xd06035b1, 0x00b18860, 0x002d068c },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00400009, 0x26c05421, 0x00000744, 0x00690050 },
- { 0x00400009, 0x26d05421, 0x00000740, 0x00690050 },
- { 0x00600001, 0x26a00231, 0x00cf06c3, 0x00000000 },
- { 0x00800001, 0x26a80231, 0x00b10723, 0x00000000 },
- { 0x00800040, 0x24003e2c, 0x00b106a2, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b106a1, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b106a0, 0x00010001 },
- { 0x00800008, 0x26a03d8d, 0x00b10400, 0x00020002 },
- { 0x00200040, 0x220c3eac, 0x00450056, 0x06a006a0 },
- { 0x80800040, 0xd06035b1, 0x01ed9800, 0x00b18860 },
- { 0x80800040, 0xd04035b1, 0x01ed9804, 0x00b18840 },
- { 0x80800040, 0xd02035b1, 0x01ed9808, 0x00b18820 },
- { 0x80800040, 0xd00035b1, 0x01ed980c, 0x00b18800 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00400009, 0x26c05421, 0x00000744, 0x00690050 },
- { 0x00400009, 0x26d05421, 0x00000740, 0x00690050 },
- { 0x00600001, 0x26a00231, 0x00cf06c3, 0x00000000 },
- { 0x00800001, 0x26a80231, 0x00b10723, 0x00000000 },
- { 0x00800042, 0x25c04629, 0x00b106a8, 0x00b106a9 },
- { 0x00800040, 0x24003e2c, 0x00b106a3, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b106a2, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b106a1, 0x00010001 },
- { 0x00800008, 0x26c03d8d, 0x008d0400, 0x00020002 },
- { 0x00600001, 0x26a00231, 0x00ae06c0, 0x00000000 },
- { 0x00600001, 0x46a60231, 0x00ae06cc, 0x00000000 },
- { 0x00600001, 0x46a70231, 0x00ae05c0, 0x00000000 },
- { 0x00200040, 0x220c3eac, 0x00450036, 0x06a006a0 },
- { 0x80800040, 0xd0603631, 0x01ee9800, 0x00b18860 },
- { 0x80800040, 0xd0403631, 0x01ee9802, 0x00b18840 },
- { 0x80800040, 0xd0203631, 0x01ee9804, 0x00b18820 },
- { 0x80800040, 0xd0003631, 0x01ee9806, 0x00b18800 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00400009, 0x26c05421, 0x00000744, 0x00690050 },
- { 0x00400009, 0x26d05421, 0x00000740, 0x00690050 },
- { 0x00600001, 0x26a00231, 0x00ab06c3, 0x00000000 },
- { 0x00800001, 0x26a80231, 0x00b10723, 0x00000000 },
- { 0x00800040, 0x24003e2c, 0x00b106a2, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b106a1, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b106a0, 0x00010001 },
- { 0x00800008, 0x25c03d89, 0x008d0400, 0x00020002 },
- { 0x00800042, 0x26a0462d, 0x00b106a0, 0x00b106a1 },
- { 0x00600001, 0x46a10231, 0x00ae05c0, 0x00000000 },
- { 0x00600001, 0x26b00231, 0x00ae05d0, 0x00000000 },
- { 0x00200040, 0x220c3eac, 0x00450056, 0x06a006a0 },
- { 0x80800040, 0xd0603631, 0x01ed9800, 0x00b18860 },
- { 0x80800040, 0xd0403631, 0x01ed9804, 0x00b18840 },
- { 0x80800040, 0xd0203631, 0x01ed9808, 0x00b18820 },
- { 0x80800040, 0xd0003631, 0x01ed980c, 0x00b18800 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00800042, 0x25c04629, 0x00b10724, 0x00b10725 },
- { 0x00800040, 0x24003e2c, 0x00b10726, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b10725, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b10724, 0x00010001 },
- { 0x00800008, 0x25e03d89, 0x002d0400, 0x00020002 },
- { 0x80800040, 0xd0003531, 0x00ad05c0, 0x00b18800 },
- { 0x80800040, 0xd0203531, 0x00ad05c2, 0x00b18820 },
- { 0x80800040, 0xd0403531, 0x00ad05c4, 0x00b18840 },
- { 0x80800040, 0xd0603531, 0x00ad05c6, 0x00b18860 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00600001, 0x27480231, 0x00000747, 0x00000000 },
- { 0x00800042, 0x25c04629, 0x00b10740, 0x00b10741 },
- { 0x00800040, 0x24003e2c, 0x00b10742, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b10741, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b10740, 0x00010001 },
- { 0x00800008, 0x25e03d89, 0x002d0400, 0x00020002 },
- { 0x00800001, 0x45c10231, 0x00d205e0, 0x00000000 },
- { 0x80800040, 0xd0003631, 0x004d05c0, 0x00b18800 },
- { 0x80800040, 0xd0203631, 0x004d05c4, 0x00b18820 },
- { 0x80800040, 0xd0403631, 0x004d05c8, 0x00b18840 },
- { 0x80800040, 0xd0603631, 0x004d05cc, 0x00b18860 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00000401, 0x27c80061, 0x00000000, 0x000f000f },
- { 0x00200801, 0x27c001a1, 0x004507fa, 0x00000000 },
- { 0x00000040, 0x22000c00, 0x00000200, 0x0ff04000 },
- { 0x00800001, 0x20400232, 0x00cd0400, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00cd0408, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00cd0410, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00cd0418, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00cd0440, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00cd0448, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00cd0450, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00cd0458, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00cd0480, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00cd0488, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00cd0490, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00cd0498, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00cd04c0, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00cd04c8, 0x00000000 },
- { 0x00800001, 0x21200232, 0x00cd04d0, 0x00000000 },
- { 0x00800001, 0x21300232, 0x00cd04d8, 0x00000000 },
- { 0x01600031, 0x27800021, 0x508d07c0, 0x00000200 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00600001, 0x27c00021, 0x008d0000, 0x00000000 },
- { 0x00200009, 0x27fa3e29, 0x00450064, 0x00040004 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffd34 },
- { 0x00000001, 0x220401ec, 0x00000000, 0x00800080 },
- { 0x00000001, 0x220601ec, 0x00000000, 0x04000400 },
- { 0x00200008, 0x27006e2d, 0x0000006c, 0x00000040 },
- { 0x02600005, 0x20003e20, 0x0000006c, 0x00040004 },
- { 0x00780001, 0x26340231, 0x00000633, 0x00000000 },
- { 0x00800001, 0x27200231, 0x00b10620, 0x00000000 },
- { 0x00600001, 0x27400231, 0x00cf0643, 0x00000000 },
- { 0x00400008, 0x26806e2d, 0x00240070, 0x00004040 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000006a },
- { 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
- { 0x00000006, 0x27003dad, 0x00000700, 0x00010001 },
- { 0x00800001, 0x27200231, 0x00b10628, 0x00000000 },
- { 0x00400001, 0x27400231, 0x00808c26, 0x00000000 },
- { 0x00400001, 0x27440231, 0x00808c66, 0x00000000 },
- { 0x00400008, 0x26806e2d, 0x00240072, 0x00004040 },
- { 0x00000040, 0x22063d8c, 0x00000206, 0x00800080 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000058 },
- { 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
- { 0x00000006, 0x27003dad, 0x00000702, 0x00020002 },
- { 0x00800001, 0xaf800231, 0x00d28f80, 0x00000000 },
- { 0x00800001, 0xaf900231, 0x00d28fa0, 0x00000000 },
- { 0x00800001, 0xafc00231, 0x00d28fc0, 0x00000000 },
- { 0x00800001, 0xafd00231, 0x00d28fe0, 0x00000000 },
- { 0x00800001, 0xafa00231, 0x00d28c00, 0x00000000 },
- { 0x00800001, 0xafb00231, 0x00d28c20, 0x00000000 },
- { 0x00800001, 0xafe00231, 0x00d28c40, 0x00000000 },
- { 0x00800001, 0xaff00231, 0x00d28c60, 0x00000000 },
- { 0x00400001, 0x27200231, 0x0069065c, 0x00000000 },
- { 0x00600001, 0x27240231, 0x00a98fcc, 0x00000000 },
- { 0x00600001, 0x272c0231, 0x00a98fec, 0x00000000 },
- { 0x00600001, 0x27340231, 0x00008fff, 0x00000000 },
- { 0x00800001, 0x2620012d, 0x00b10720, 0x00000000 },
- { 0x00600001, 0x27400231, 0x00cf0663, 0x00000000 },
- { 0x00400008, 0x26806e2d, 0x00240074, 0x00004040 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000032 },
- { 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
- { 0x00000006, 0x27003dad, 0x00000700, 0x00010001 },
- { 0x00800001, 0x27200231, 0x00b10628, 0x00000000 },
- { 0x00600001, 0x27300231, 0x008d0638, 0x00000000 },
- { 0x00400001, 0x27400231, 0x00808c26, 0x00000000 },
- { 0x00400001, 0x27440231, 0x00808c66, 0x00000000 },
- { 0x00400008, 0x26806e2d, 0x00240076, 0x00004040 },
- { 0x00000040, 0x22063d8c, 0x00000206, 0x00800080 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x00800001, 0xaf800231, 0x00d28f80, 0x00000000 },
- { 0x00800001, 0xaf900231, 0x00d28fa0, 0x00000000 },
- { 0x00800001, 0xafc00231, 0x00d28fc0, 0x00000000 },
- { 0x00800001, 0xafd00231, 0x00d28fe0, 0x00000000 },
- { 0x00800001, 0xafa00231, 0x00d28c00, 0x00000000 },
- { 0x00800001, 0xafb00231, 0x00d28c20, 0x00000000 },
- { 0x00800001, 0xafe00231, 0x00d28c40, 0x00000000 },
- { 0x00800001, 0xaff00231, 0x00d28c60, 0x00000000 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000e0 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffcce },
- { 0x00000001, 0x27800021, 0x00000780, 0x00000000 },
- { 0x00000001, 0x27a00021, 0x000007a0, 0x00000000 },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x00600001, 0x27800231, 0x008d0740, 0x00000000 },
- { 0x00400005, 0x22083dac, 0x00690680, 0x000f000f },
- { 0x00400040, 0x26a04625, 0x01e09020, 0x00690058 },
- { 0x00000001, 0x26d001ad, 0x00000700, 0x00000000 },
- { 0x00000040, 0x27e41c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001400, 0x00001400, 0x000006a0 },
- { 0x80600040, 0xcc0035b1, 0x00898800, 0x008d0760 },
- { 0x80600040, 0xcc1035b1, 0x00898820, 0x008d0770 },
- { 0x00800001, 0x27200231, 0x008d0724, 0x00000000 },
- { 0x00400001, 0x27400231, 0x00808c06, 0x00000000 },
- { 0x00000006, 0x26d03dad, 0x00000700, 0x00010001 },
- { 0x00000040, 0x27e41c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001400, 0x00001400, 0x000006a4 },
- { 0x80600040, 0xcc2035b1, 0x00898808, 0x008d0760 },
- { 0x80600040, 0xcc3035b1, 0x00898828, 0x008d0770 },
- { 0x00000001, 0x27230231, 0x00000783, 0x00000000 },
- { 0x00400001, 0x27240231, 0x008a8c18, 0x00000000 },
- { 0x00400001, 0x27280231, 0x008a8c38, 0x00000000 },
- { 0x00400001, 0x272c0231, 0x00008c3e, 0x00000000 },
- { 0x00400001, 0x27400231, 0x00690784, 0x00000000 },
- { 0x00000006, 0x26d03dad, 0x00000700, 0x00020002 },
- { 0x00000040, 0x27e41c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001400, 0x00001400, 0x000006a8 },
- { 0x80600040, 0xcc4035b1, 0x00898840, 0x008d0760 },
- { 0x80600040, 0xcc5035b1, 0x00898860, 0x008d0770 },
- { 0x00800001, 0x27200231, 0x008d0724, 0x00000000 },
- { 0x00600001, 0x27280231, 0x00000727, 0x00000000 },
- { 0x00400001, 0x27400231, 0x00808c46, 0x00000000 },
- { 0x00000006, 0x26d03dad, 0x00000700, 0x00030003 },
- { 0x00000040, 0x27e41c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001400, 0x00001400, 0x000006ac },
- { 0x80600040, 0xcc6035b1, 0x00898848, 0x008d0760 },
- { 0x80600040, 0xcc7035b1, 0x00898868, 0x008d0770 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00800001, 0x2760022d, 0x00090724, 0x00000000 },
- { 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
- { 0x00800001, 0x2760022d, 0x00280740, 0x00000000 },
- { 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
- { 0x02802005, 0x20003da0, 0x000006d0, 0x00020002 },
- { 0x02802005, 0x20003da0, 0x020006d0, 0x00010001 },
- { 0x009a0001, 0x27200169, 0x00000000, 0x80808080 },
- { 0x00780001, 0x27400231, 0x028d0724, 0x00000000 },
- { 0x00780001, 0x27240231, 0x008d0740, 0x00000000 },
- { 0x00400040, 0x25e04629, 0x00690724, 0x00690740 },
- { 0x00200040, 0x25e02529, 0x004505e0, 0x004505e4 },
- { 0x00800040, 0x2400252c, 0x000005e0, 0x000005e2 },
- { 0x00800040, 0x24003d8c, 0x008d0400, 0x00040004 },
- { 0x00800008, 0x27603d8d, 0x008d0400, 0x00030003 },
- { 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
- { 0x00600001, 0x26c00231, 0x008d0724, 0x00000000 },
- { 0x00400001, 0x26c80231, 0x0069072b, 0x00000000 },
- { 0x00600040, 0x24003e2c, 0x008d06c2, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x008d06c1, 0x00020002 },
- { 0x00600048, 0x25e03e29, 0x008d06c0, 0x00010001 },
- { 0x00800008, 0x27603d2d, 0x002905e0, 0x00020002 },
- { 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
- { 0x00400009, 0x26e05421, 0x00000740, 0x00690050 },
- { 0x00600001, 0x26c40231, 0x008d0723, 0x00000000 },
- { 0x00400001, 0x26c00231, 0x00ab06e3, 0x00000000 },
- { 0x00600040, 0x24003e2c, 0x008d06c2, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x008d06c1, 0x00020002 },
- { 0x00600048, 0x26c03e2d, 0x008d06c0, 0x00010001 },
- { 0x00400040, 0x22083eac, 0x00690054, 0x06c006c0 },
- { 0x00800008, 0x27603dad, 0x01e99000, 0x00020002 },
- { 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
- { 0x00400009, 0x26e05421, 0x00000740, 0x00690050 },
- { 0x00600001, 0x26c40231, 0x008d0723, 0x00000000 },
- { 0x00400001, 0x26c00231, 0x00ab06e3, 0x00000000 },
- { 0x00600042, 0x25c04629, 0x008d06c4, 0x008d06c5 },
- { 0x00600040, 0x24003e2c, 0x008d06c3, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x008d06c2, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x008d06c1, 0x00010001 },
- { 0x00600008, 0x26c03d8d, 0x008d0400, 0x00020002 },
- { 0x00400001, 0x46c401ad, 0x006906c4, 0x00000000 },
- { 0x00400001, 0x46c6012d, 0x006905c0, 0x00000000 },
- { 0x00400040, 0x22083eac, 0x00690054, 0x06c006c0 },
- { 0x00800001, 0x276001ad, 0x01ea9000, 0x00000000 },
- { 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
- { 0x00400009, 0x26e05421, 0x00000740, 0x00690050 },
- { 0x00600001, 0x26c40231, 0x008d0723, 0x00000000 },
- { 0x00400001, 0x26c00231, 0x00ab06e3, 0x00000000 },
- { 0x00600042, 0x25c04629, 0x008d06c0, 0x008d06c1 },
- { 0x00600040, 0x24003e2c, 0x008d06c2, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x008d06c1, 0x00020002 },
- { 0x00600048, 0x26e03e2d, 0x008d06c0, 0x00010001 },
- { 0x00400008, 0x46c23dad, 0x006906e0, 0x00020002 },
- { 0x00200008, 0x26d03dad, 0x004506e8, 0x00020002 },
- { 0x00400001, 0x46c0012d, 0x006905c0, 0x00000000 },
- { 0x00400009, 0x22083eac, 0x00690054, 0x00010001 },
- { 0x00400040, 0x22083d8c, 0x00690208, 0x06c006c0 },
- { 0x00800001, 0x276001ad, 0x01e99000, 0x00000000 },
- { 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
- { 0x00600042, 0x45c04629, 0x008d0724, 0x008d0725 },
- { 0x00600040, 0x24003e2c, 0x008d0726, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x008d0725, 0x00020002 },
- { 0x00600048, 0x25e03e29, 0x008d0724, 0x00010001 },
- { 0x00600008, 0x45c23d29, 0x008d05e0, 0x00020002 },
- { 0x00800001, 0x2760012d, 0x002a05c0, 0x00000000 },
- { 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
- { 0x00600001, 0x27440231, 0x00000743, 0x00000000 },
- { 0x00600042, 0x45c04629, 0x008d0740, 0x008d0741 },
- { 0x00600040, 0x24003e2c, 0x008d0742, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x008d0741, 0x00020002 },
- { 0x00600048, 0x25e03e29, 0x008d0740, 0x00010001 },
- { 0x00600008, 0x45c23d29, 0x008d05e0, 0x00020002 },
- { 0x00800001, 0x2760012d, 0x004905c0, 0x00000000 },
- { 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
- { 0x00000401, 0x27c80061, 0x00000000, 0x000f000f },
- { 0x00200801, 0x27c001a1, 0x004507fa, 0x00000000 },
- { 0x00000040, 0x22000c00, 0x00000200, 0x0ff04000 },
- { 0x00800001, 0x20400232, 0x00a90400, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00a90404, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00a90408, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00a9040c, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00a90440, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00a90444, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00a90448, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00a9044c, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00a90480, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00a90484, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00a90488, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00a9048c, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00a904c0, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00a904c4, 0x00000000 },
- { 0x00800001, 0x21200232, 0x00a904c8, 0x00000000 },
- { 0x00800001, 0x21300232, 0x00a904cc, 0x00000000 },
- { 0x01600031, 0x27800021, 0x508d07c0, 0x00000200 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27c00021, 0x008d0000, 0x00000000 },
- { 0x00200009, 0x27fa3e29, 0x00450064, 0x00040004 },
- { 0x00000401, 0x27c80061, 0x00000000, 0x000f000f },
- { 0x00200809, 0x27c03e21, 0x00450064, 0x00040004 },
- { 0x00000040, 0x22000d20, 0x00000062, 0x1218a000 },
- { 0x00a02401, 0x20400232, 0x00b10080, 0x00000000 },
- { 0x00a02801, 0x20500232, 0x00b10090, 0x00000000 },
- { 0x00a02401, 0x20800232, 0x00b100c0, 0x00000000 },
- { 0x00a02801, 0x20900232, 0x00b100d0, 0x00000000 },
- { 0x00a02401, 0x20c00232, 0x00b10100, 0x00000000 },
- { 0x00a02801, 0x20d00232, 0x00b10110, 0x00000000 },
- { 0x00a02401, 0x21000232, 0x00b10140, 0x00000000 },
- { 0x00a02801, 0x21100232, 0x00b10150, 0x00000000 },
- { 0x01600031, 0x27800021, 0x508d07c0, 0x00000200 },
- { 0x00000401, 0x20280062, 0x00000000, 0x0007000f },
- { 0x0000080c, 0x20243c22, 0x000007c4, 0x00010001 },
- { 0x00000040, 0x22001c00, 0x00000200, 0xf8000001 },
- { 0x00800001, 0x40400232, 0x00b10180, 0x00000000 },
- { 0x00800001, 0x40410232, 0x00b101c0, 0x00000000 },
- { 0x00800001, 0x40600232, 0x00b10190, 0x00000000 },
- { 0x00800001, 0x40610232, 0x00b101d0, 0x00000000 },
- { 0x00800001, 0x40800232, 0x00b101a0, 0x00000000 },
- { 0x00800001, 0x40810232, 0x00b101e0, 0x00000000 },
- { 0x00800001, 0x40a00232, 0x00b101b0, 0x00000000 },
- { 0x00800001, 0x40a10232, 0x00b101f0, 0x00000000 },
- { 0x01600031, 0x27a00001, 0x508d0000, 0x00000200 },
- { 0x00000001, 0x27800021, 0x00000780, 0x00000000 },
- { 0x00000001, 0x27a00021, 0x000007a0, 0x00000000 },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x20400021, 0x008d0000, 0x00000000 },
- { 0x00000005, 0x20203e2d, 0x00000061, 0x001f001f },
- { 0x00200009, 0x20643e2d, 0x00450064, 0x00040004 },
- { 0x00000001, 0x203a01ed, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000020, 0x00160016 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x01200010, 0x20003e2c, 0x0200006c, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000024 },
- { 0x00800009, 0x25403dad, 0x00050064, 0x00020002 },
- { 0x00000001, 0x203a01ed, 0x00000000, 0x00180018 },
- { 0x00200040, 0x45483dad, 0x00660548, 0x00100010 },
- { 0x00200040, 0x45523dad, 0x00660552, 0x00100010 },
- { 0x00400040, 0x25583dad, 0x00690558, 0x00100010 },
- { 0x00800040, 0x208035ad, 0x00b10080, 0x00b10540 },
- { 0x00600040, 0x45403dad, 0x00ae0540, 0x00200020 },
- { 0x00800040, 0x20a035ad, 0x00b100a0, 0x00b10540 },
- { 0x00600040, 0x45423dad, 0x00ae0542, 0x00200020 },
- { 0x00800040, 0x20e035ad, 0x00b100e0, 0x00b10540 },
- { 0x00600040, 0x45403dad, 0x00ae0540, 0xffe0ffe0 },
- { 0x00800040, 0x20c035ad, 0x00b100c0, 0x00b10540 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x06600010, 0x20003dac, 0x02000020, 0x00030003 },
- { 0x00000001, 0x206c0171, 0x00000000, 0x00000000 },
- { 0x00610001, 0x208000a5, 0x02050080, 0x00000000 },
- { 0x00610001, 0x212000a5, 0x02090100, 0x00000000 },
- { 0x00410001, 0x211000a5, 0x02690100, 0x00000000 },
- { 0x00200009, 0x25403dad, 0x00450064, 0x00020002 },
- { 0x00800040, 0x208035ad, 0x00b10080, 0x00050540 },
- { 0x00200040, 0x40883dad, 0x00660088, 0x00200020 },
- { 0x00200040, 0x40923dad, 0x00660092, 0x00200020 },
- { 0x00400040, 0x20983dad, 0x00690098, 0x00200020 },
- { 0x00200401, 0x22080060, 0x00000000, 0x03400140 },
- { 0x00000c01, 0x220c0060, 0x00000000, 0x04400080 },
- { 0x00000801, 0x22040060, 0x00000000, 0x01000070 },
- { 0x00000001, 0x20200169, 0x00000000, 0x00000000 },
- { 0x0000000c, 0x2458262d, 0x0000006d, 0x00000020 },
- { 0x00000001, 0x210e0169, 0x00000000, 0x00010001 },
- { 0x00000005, 0x24583dad, 0x00000458, 0x00030003 },
- { 0x01000010, 0x200035ac, 0x0000010e, 0x00000458 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x000002fe },
- { 0x01000010, 0x20003dac, 0x0200010e, 0x00010001 },
- { 0x00010401, 0x24540061, 0x02000000, 0x06c00640 },
- { 0x00010805, 0x245a3e2d, 0x02008800, 0x007f007f },
- { 0x00110401, 0x24540061, 0x02000000, 0x04800780 },
- { 0x00110805, 0x245a3e2d, 0x02008804, 0x007f007f },
- { 0x0000000c, 0x211e362d, 0x0000006c, 0x00000020 },
- { 0x00000040, 0x20780d21, 0x0000045a, 0x0208a002 },
- { 0x02000005, 0x20003dac, 0x0200011e, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000001be },
- { 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
- { 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
- { 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
- { 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000012 },
- { 0x00010040, 0x22000c20, 0x02000078, 0x00400000 },
- { 0x00110040, 0x22000c20, 0x02000078, 0x00700000 },
- { 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
- { 0x00110001, 0x20480061, 0x02000000, 0x000c000c },
- { 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
- { 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
- { 0x00010001, 0x20480061, 0x02000000, 0x0007000c },
- { 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
- { 0x00110040, 0x22000c20, 0x02000078, 0x00400000 },
- { 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
- { 0x00110040, 0x20441da5, 0x02000442, 0xfffffffe },
- { 0x00110001, 0x20480061, 0x02000000, 0x000c0007 },
- { 0x00010001, 0x20480061, 0x02000000, 0x00070007 },
- { 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
- { 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
- { 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
- { 0x01600006, 0x20003dac, 0x0000044a, 0x00000000 },
- { 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
- { 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
- { 0x00010040, 0x22000c20, 0x00000078, 0x00200010 },
- { 0x00110040, 0x22000c20, 0x00000078, 0x00300010 },
- { 0x00010001, 0x20480061, 0x00000000, 0x00030009 },
- { 0x00110001, 0x20480061, 0x00000000, 0x00040009 },
- { 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
- { 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000001a },
- { 0x00600001, 0x26220231, 0x008d05c0, 0x00000000 },
- { 0x00600401, 0x26120231, 0x008d05b8, 0x00000000 },
- { 0x00600801, 0x26020231, 0x008d05b0, 0x00000000 },
- { 0x00600401, 0x25f20231, 0x008d05a8, 0x00000000 },
- { 0x00600801, 0x25e20231, 0x008d05a0, 0x00000000 },
- { 0x00600401, 0x25d20231, 0x008d0598, 0x00000000 },
- { 0x00600801, 0x25c20231, 0x008d0590, 0x00000000 },
- { 0x00600401, 0x25b20231, 0x008d0588, 0x00000000 },
- { 0x00600801, 0x25a20231, 0x008d0580, 0x00000000 },
- { 0x00600401, 0x25920231, 0x008d0578, 0x00000000 },
- { 0x00600801, 0x25820231, 0x008d0570, 0x00000000 },
- { 0x00600001, 0x25720231, 0x008d0568, 0x00000000 },
- { 0x00600001, 0x25620231, 0x008d0560, 0x00000000 },
- { 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
- { 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
- { 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
- { 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
- { 0x00810001, 0xbc000229, 0x02ad8000, 0x00000000 },
- { 0x00810001, 0xbc200229, 0x02ad8020, 0x00000000 },
- { 0x00810001, 0xbc400229, 0x02ad8040, 0x00000000 },
- { 0x00810001, 0xbc600229, 0x02ad8060, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000012a },
- { 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
- { 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
- { 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
- { 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
- { 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
- { 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000066 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000064 },
- { 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
- { 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
- { 0x00000801, 0x220c0060, 0x00000000, 0x04a00480 },
- { 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
- { 0x00a02040, 0x2400462c, 0x00ad8000, 0x00ad8005 },
- { 0x00a02048, 0x24003e2c, 0x00ad8001, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8002, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8003, 0x00140014 },
- { 0x00a02048, 0xb8003e2d, 0x00ad8004, 0xfffbfffb },
- { 0x00a02040, 0x2400462c, 0x00ad8040, 0x00ad8045 },
- { 0x00a02048, 0x24003e2c, 0x00ad8041, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8042, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8043, 0x00140014 },
- { 0x00a02048, 0xb8403e2d, 0x00ad8044, 0xfffbfffb },
- { 0x00a02040, 0x2400462c, 0x00ad8080, 0x00ad8085 },
- { 0x00a02048, 0x24003e2c, 0x00ad8081, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8082, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8083, 0x00140014 },
- { 0x00a02048, 0xb8803e2d, 0x00ad8084, 0xfffbfffb },
- { 0x00600040, 0x2400462c, 0x008d80c0, 0x008d80c5 },
- { 0x00600048, 0x24003e2c, 0x008d80c1, 0xfffbfffb },
- { 0x00600048, 0x24003e2c, 0x008d80c2, 0x00140014 },
- { 0x00600048, 0x24003e2c, 0x008d80c3, 0x00140014 },
- { 0x00600048, 0xb8c03e2d, 0x008d80c4, 0xfffbfffb },
- { 0x00000401, 0x22000060, 0x00000000, 0x04a00480 },
- { 0x00000c01, 0x22040060, 0x00000000, 0x04a00490 },
- { 0x00010802, 0x220c2d28, 0x00000454, 0x04800480 },
- { 0x00a02040, 0x24003dac, 0x00b18000, 0x02000200 },
- { 0x00800048, 0x24003dac, 0x01ed8800, 0xfffbfffb },
- { 0x00800048, 0x24203dac, 0x01ed8820, 0xfffbfffb },
- { 0x00a02048, 0x24003dac, 0x00b18020, 0x00140014 },
- { 0x00800048, 0x24003dac, 0x01ed8820, 0x00140014 },
- { 0x00800048, 0x24203dac, 0x01ed8840, 0x00140014 },
- { 0x00a02048, 0x24003dac, 0x00b18040, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01ed8840, 0x00010001 },
- { 0x00800048, 0x24203dac, 0x01ed8860, 0x00010001 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
- { 0x8080100c, 0xd8203d91, 0x00b10420, 0x000a000a },
- { 0x00a02040, 0x24003dac, 0x00b18040, 0x02000200 },
- { 0x00800048, 0x24003dac, 0x01ed8840, 0xfffbfffb },
- { 0x00800048, 0x24203dac, 0x01ed8860, 0xfffbfffb },
- { 0x00a02048, 0x24003dac, 0x00b18060, 0x00140014 },
- { 0x00800048, 0x24003dac, 0x01ed8860, 0x00140014 },
- { 0x00800048, 0x24203dac, 0x01ed8880, 0x00140014 },
- { 0x00a02048, 0x24003dac, 0x00b18080, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01ed8880, 0x00010001 },
- { 0x00800048, 0x24203dac, 0x01ed88a0, 0x00010001 },
- { 0x8080000c, 0xd8403d91, 0x00b10400, 0x000a000a },
- { 0x8080100c, 0xd8603d91, 0x00b10420, 0x000a000a },
- { 0x00010220, 0x34001c00, 0x00001400, 0x000000b4 },
- { 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000004c },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000004a },
- { 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
- { 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
- { 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
- { 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
- { 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
- { 0x00010002, 0x220c2d28, 0x02000454, 0x04800480 },
- { 0x00800040, 0x24003e2c, 0x01ed8000, 0x00100010 },
- { 0x00800040, 0x24203e2c, 0x01ed8020, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8001, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8021, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8002, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8022, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8003, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8023, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8004, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8024, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8005, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8025, 0x00010001 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
- { 0x00800040, 0x24003e2c, 0x01ed8040, 0x00100010 },
- { 0x00800040, 0x24203e2c, 0x01ed8060, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8041, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8061, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8042, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8062, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8043, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8063, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8044, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8064, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8045, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8065, 0x00010001 },
- { 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000005c },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000062 },
- { 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000042 },
- { 0x00200401, 0x22000128, 0x0066044c, 0x00000000 },
- { 0x00200c01, 0x22040128, 0x0045044e, 0x00000000 },
- { 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
- { 0x03400010, 0x20003dac, 0x02000444, 0x00020002 },
- { 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
- { 0x00410040, 0x22002d08, 0x02690200, 0x00010001 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
- { 0x00110001, 0x220c0168, 0x02000000, 0x04800480 },
- { 0x00a02040, 0x24003e2c, 0x00ad83e0, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8be0, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8800, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8000, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8800, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8820, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8020, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8820, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8840, 0x00010001 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
- { 0x00a02040, 0x24003e2c, 0x00ad8020, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8820, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8840, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8040, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8840, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8860, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8060, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8860, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8880, 0x00010001 },
- { 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001c },
- { 0x00200401, 0x22000128, 0x0045044c, 0x00000000 },
- { 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
- { 0x01200010, 0x20003dac, 0x00000444, 0x00030003 },
- { 0x01200010, 0x20003dac, 0x02000446, 0x00030003 },
- { 0x00210040, 0x22002d08, 0x00450200, 0x00010001 },
- { 0x00210040, 0x22002d08, 0x02450200, 0x00100010 },
- { 0x00800001, 0xb8000229, 0x01ed8000, 0x00000000 },
- { 0x00800001, 0xb8200229, 0x01ed8020, 0x00000000 },
- { 0x00800001, 0xb8400229, 0x01ed8040, 0x00000000 },
- { 0x00800001, 0xb8600229, 0x01ed8060, 0x00000000 },
- { 0x80800042, 0xd8004631, 0x00d29800, 0x00d20480 },
- { 0x80800042, 0xd8204631, 0x00d29820, 0x00d204a0 },
- { 0x80800042, 0xd8404631, 0x00d29840, 0x00d204c0 },
- { 0x80800042, 0xd8604631, 0x00d29860, 0x00d204e0 },
- { 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
- { 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
- { 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
- { 0x00000c01, 0x220201e8, 0x00000000, 0x07100710 },
- { 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
- { 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
- { 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
- { 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
- { 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
- { 0x00200040, 0x244c3d09, 0x00450200, 0x00100010 },
- { 0x00800041, 0x24002628, 0x00ad8000, 0x00000540 },
- { 0x00800041, 0x24202628, 0x00ad8020, 0x00000540 },
- { 0x00800048, 0x24002628, 0x00ad8002, 0x00000542 },
- { 0x00800048, 0x24202628, 0x00ad8022, 0x00000542 },
- { 0x00200001, 0x22000128, 0x0045044c, 0x00000000 },
- { 0x00800048, 0x24002628, 0x01ed8000, 0x00000544 },
- { 0x00800048, 0x24202628, 0x01ed8020, 0x00000544 },
- { 0x00800048, 0xbc002629, 0x01ed8002, 0x00000546 },
- { 0x00801048, 0xbc202629, 0x01ed8022, 0x00000546 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000126 },
- { 0x00000001, 0x20220169, 0x00000000, 0x00040004 },
- { 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
- { 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
- { 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
- { 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
- { 0x00110040, 0x22000c20, 0x02000078, 0x00500000 },
- { 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
- { 0x00110001, 0x20480061, 0x02000000, 0x00080008 },
- { 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
- { 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
- { 0x00010001, 0x20480061, 0x02000000, 0x00030008 },
- { 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x00000078, 0x00100010 },
- { 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
- { 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
- { 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
- { 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
- { 0x00000001, 0x20480061, 0x00000000, 0x00020005 },
- { 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
- { 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
- { 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
- { 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
- { 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
- { 0x00410001, 0xbc000229, 0x02698000, 0x00000000 },
- { 0x00410001, 0xbc100229, 0x02698010, 0x00000000 },
- { 0x00410001, 0xbc200229, 0x02698020, 0x00000000 },
- { 0x00410001, 0xbc300229, 0x02698030, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000be },
- { 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
- { 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
- { 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
- { 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
- { 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
- { 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000044 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000042 },
- { 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
- { 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
- { 0x00000801, 0x220c0060, 0x00000000, 0x04d004c0 },
- { 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
- { 0x00802040, 0x2400462c, 0x00a98000, 0x00a98005 },
- { 0x00802048, 0x24003e2c, 0x00a98001, 0xfffbfffb },
- { 0x00802048, 0x24003e2c, 0x00a98002, 0x00140014 },
- { 0x00802048, 0x24003e2c, 0x00a98003, 0x00140014 },
- { 0x00802048, 0xb8003e2d, 0x00a98004, 0xfffbfffb },
- { 0x00802040, 0x2400462c, 0x00a98040, 0x00a98045 },
- { 0x00802048, 0x24003e2c, 0x00a98041, 0xfffbfffb },
- { 0x00802048, 0x24003e2c, 0x00a98042, 0x00140014 },
- { 0x00802048, 0x24003e2c, 0x00a98043, 0x00140014 },
- { 0x00802048, 0xb8203e2d, 0x00a98044, 0xfffbfffb },
- { 0x00400040, 0x2400462c, 0x00698080, 0x00698085 },
- { 0x00400048, 0x24003e2c, 0x00698081, 0xfffbfffb },
- { 0x00400048, 0x24003e2c, 0x00698082, 0x00140014 },
- { 0x00400048, 0x24003e2c, 0x00698083, 0x00140014 },
- { 0x00400048, 0xb8403e2d, 0x00698084, 0xfffbfffb },
- { 0x00000401, 0x220c0060, 0x00000000, 0x04e004d0 },
- { 0x00000c01, 0x22000060, 0x00000000, 0x04d004c8 },
- { 0x00000c01, 0x22040060, 0x00000000, 0x04e004d8 },
- { 0x00000801, 0x22080060, 0x00000000, 0x04f004e8 },
- { 0x00800040, 0x24003dac, 0x00b104c0, 0x02000200 },
- { 0x00800048, 0x24003dac, 0x00b104e0, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01ed9800, 0x00140014 },
- { 0x00010001, 0x220c0168, 0x00000000, 0x05400540 },
- { 0x00110001, 0x220c0168, 0x00000000, 0x04c004c0 },
- { 0x00800048, 0x24003dac, 0x01e98000, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01e98020, 0x00010001 },
- { 0x00800048, 0x24003dac, 0x01e98800, 0x00140014 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000060 },
- { 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000022 },
- { 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
- { 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
- { 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
- { 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
- { 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
- { 0x00010001, 0x220e0168, 0x02000000, 0x05400540 },
- { 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
- { 0x00800040, 0x24003e2c, 0x01e98000, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01e98001, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e98002, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e98003, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e98004, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e98005, 0x00010001 },
- { 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000036 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000036 },
- { 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x03600010, 0x20003dac, 0x02000444, 0x00020002 },
- { 0x00400401, 0x22000128, 0x0069044c, 0x00000000 },
- { 0x00400840, 0x22083d2c, 0x0069044c, 0x00100010 },
- { 0x00610040, 0x22002d08, 0x02690200, 0x00010001 },
- { 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00800040, 0x24003e2c, 0x01e983e0, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01e98000, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e98020, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e993e0, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e99000, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e99020, 0x00010001 },
- { 0x00000001, 0x220e0168, 0x00000000, 0x05400540 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
- { 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
- { 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000e },
- { 0x00400001, 0x22000128, 0x0069044c, 0x00000000 },
- { 0x01400010, 0x20003dac, 0x00000444, 0x00030003 },
- { 0x01400010, 0x20003dac, 0x02000446, 0x00030003 },
- { 0x00410040, 0x22002d08, 0x00690200, 0x00010001 },
- { 0x00410040, 0x22002d08, 0x02690200, 0x00100010 },
- { 0x00800001, 0x25400229, 0x01e98000, 0x00000000 },
- { 0x80800042, 0x45404631, 0x00d20540, 0x00d204c0 },
- { 0x00000001, 0x220c0128, 0x00000454, 0x00000000 },
- { 0x00400001, 0xd8000231, 0x008a0540, 0x00000000 },
- { 0x00400001, 0xd8100231, 0x008a0548, 0x00000000 },
- { 0x00400001, 0xd8200231, 0x008a0550, 0x00000000 },
- { 0x00400001, 0xd8300231, 0x008a0558, 0x00000000 },
- { 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
- { 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
- { 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
- { 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
- { 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
- { 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
- { 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
- { 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
- { 0x00600041, 0x24002628, 0x00898000, 0x00000540 },
- { 0x00600048, 0x24002628, 0x00898002, 0x00000542 },
- { 0x00600048, 0x24002628, 0x00898008, 0x00000544 },
- { 0x00600048, 0x2540262d, 0x0089800a, 0x00000546 },
- { 0x00400401, 0xbc0001a9, 0x00690540, 0x00000000 },
- { 0x00400801, 0xbc1001a9, 0x00690548, 0x00000000 },
- { 0x01000010, 0x20003d2c, 0x00000022, 0x00030003 },
- { 0x01000040, 0x20223d29, 0x02000022, 0xffffffff },
- { 0x00000040, 0x220c3d8c, 0x0000020c, 0x00080008 },
- { 0x00110040, 0x24540c21, 0x00000454, 0x00080008 },
- { 0x00010040, 0x24540c21, 0x00000454, 0x00180038 },
- { 0x00110220, 0x34001c00, 0x02001400, 0xfffffee6 },
- { 0x01800010, 0x20003dac, 0x0200010e, 0x00010001 },
- { 0x00000040, 0x220c3d8c, 0x0000020c, 0xffe0ffe0 },
- { 0x00010001, 0x24540061, 0x02000000, 0x06c00640 },
- { 0x00110001, 0x24540061, 0x02000000, 0x04800780 },
- { 0x00000001, 0x220e0128, 0x00000456, 0x00000000 },
- { 0x00800040, 0x24003dac, 0x00b19c00, 0x00200020 },
- { 0x00800040, 0x24203dac, 0x00b19c20, 0x00200020 },
- { 0x8080000c, 0xdc003d91, 0x00b10400, 0x00060006 },
- { 0x8080000c, 0xdc203d91, 0x00b10420, 0x00060006 },
- { 0x02000040, 0x210e3d29, 0x0200010e, 0xffffffff },
- { 0x00000040, 0x220c3d8c, 0x0000020c, 0x00040004 },
- { 0x00110220, 0x34001c00, 0x02001400, 0xfffffcf8 },
- { 0x01000005, 0x25643e2d, 0x00000060, 0x00c000c0 },
- { 0x01000010, 0x20003dac, 0x02000458, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x01000010, 0x20003dac, 0x00000458, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00a02001, 0x46400231, 0x00d20780, 0x00000000 },
- { 0x00a02001, 0x46800231, 0x00d207c0, 0x00000000 },
- { 0x00a02001, 0x46c00231, 0x00d20480, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000007e },
- { 0x80a02042, 0x46404631, 0x00d20640, 0x00d20780 },
- { 0x80a02042, 0x46804631, 0x00d20680, 0x00d207c0 },
- { 0x80a02042, 0x46c04631, 0x00d206c0, 0x00d20480 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000076 },
- { 0x01000010, 0x20003dac, 0x02000564, 0x00800080 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x0000000e },
- { 0x01000010, 0x20003dac, 0x00000458, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xffffffe4 },
- { 0x00200401, 0x256801ed, 0x00000000, 0x00200020 },
- { 0x00200801, 0x256c01ed, 0x00000000, 0x00060006 },
- { 0x00400001, 0x258001ed, 0x00000000, 0x00000000 },
- { 0x00600001, 0x45a001ad, 0x00058c00, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000028 },
- { 0x02600005, 0x20006e28, 0x02008c0c, 0x88848421 },
- { 0x0220000c, 0x25663dad, 0x00000458, 0x00010001 },
- { 0x0000000c, 0x25643dad, 0x00000564, 0x00060006 },
- { 0x00310001, 0x25c401ad, 0x00000458, 0x00000000 },
- { 0x00210001, 0x25c00061, 0x00000000, 0x00010001 },
- { 0x00310040, 0x25c03dad, 0x004545c4, 0x00010001 },
- { 0x00610001, 0x25a00061, 0x02000000, 0x00000080 },
- { 0x00710001, 0x45a002ad, 0x02ae8c00, 0x00000000 },
- { 0x00710001, 0x45a202ad, 0x02ae8c01, 0x00000000 },
- { 0x00800041, 0x25a035ad, 0x00b105a0, 0x000905c0 },
- { 0x01200010, 0x20003e2c, 0x0245006e, 0x00000000 },
- { 0x00310009, 0x244c45ad, 0x02000564, 0x0045006e },
- { 0x00210001, 0x244c01ed, 0x02000000, 0x00000000 },
- { 0x0031000c, 0x244c3dad, 0x0245044c, 0x00010001 },
- { 0x00200009, 0x256835ad, 0x0045044c, 0x00000566 },
- { 0x00210040, 0x256835ad, 0x02450568, 0x00000566 },
- { 0x00200040, 0x256c362d, 0x0045006e, 0x00000566 },
- { 0x00400040, 0x240035ac, 0x00ab05a2, 0x00ab05a6 },
- { 0x00400040, 0x2400358c, 0x00690400, 0x00000566 },
- { 0x0040000c, 0x2580358d, 0x00690400, 0x00000566 },
- { 0x00800041, 0x2400362c, 0x00d20640, 0x000005a0 },
- { 0x00800041, 0x2420362c, 0x00d20660, 0x000005a0 },
- { 0x00800048, 0x2400362c, 0x00d20780, 0x000005a4 },
- { 0x00800048, 0x2420362c, 0x00d207a0, 0x000005a4 },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
- { 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
- { 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
- { 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
- { 0x80800040, 0x464035b1, 0x00b104c0, 0x00000580 },
- { 0x80800040, 0x466035b1, 0x00b104e0, 0x00000580 },
- { 0x00800041, 0x2400362c, 0x00d20680, 0x000005a0 },
- { 0x00800041, 0x2420362c, 0x00d206a0, 0x000005a0 },
- { 0x00800048, 0x2400362c, 0x00d207c0, 0x000005a4 },
- { 0x00800048, 0x2420362c, 0x00d207e0, 0x000005a4 },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
- { 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
- { 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
- { 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
- { 0x80800040, 0x468035b1, 0x00b104c0, 0x00000580 },
- { 0x80800040, 0x46a035b1, 0x00b104e0, 0x00000580 },
- { 0x00800041, 0x2400362c, 0x00d206c0, 0x000705a8 },
- { 0x00800041, 0x2420362c, 0x00d206e0, 0x000705a8 },
- { 0x00800048, 0x2400362c, 0x00d20480, 0x000705ac },
- { 0x00800048, 0x2420362c, 0x00d204a0, 0x000705ac },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x0000056a },
- { 0x00800040, 0x2420358c, 0x00b10420, 0x0000056a },
- { 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056e },
- { 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056e },
- { 0x80800040, 0x46c035b1, 0x00b104c0, 0x00050582 },
- { 0x80800040, 0x46e035b1, 0x00b104e0, 0x00050582 },
- { 0x01800005, 0x20003d2c, 0x02000020, 0x00020002 },
- { 0x80800040, 0xd00045b1, 0x00b19000, 0x00d20640 },
- { 0x80800040, 0xd02045b1, 0x00b19020, 0x00d20660 },
- { 0x80800040, 0xd04045b1, 0x00b19040, 0x00d20680 },
- { 0x80800040, 0xd06045b1, 0x00b19060, 0x00d206a0 },
- { 0x00000040, 0x22083d8c, 0x00000208, 0x00800080 },
- { 0x80400040, 0xd40045b1, 0x00699400, 0x00ab06c0 },
- { 0x80400040, 0xd48045b1, 0x00699480, 0x00ab06c2 },
- { 0x80400040, 0xd42045b1, 0x00699420, 0x00ab06e0 },
- { 0x80400040, 0xd4a045b1, 0x006994a0, 0x00ab06e2 },
- { 0x80400040, 0xd41045b1, 0x00699410, 0x00ab06d0 },
- { 0x80400040, 0xd49045b1, 0x00699490, 0x00ab06d2 },
- { 0x80400040, 0xd43045b1, 0x00699430, 0x00ab06f0 },
- { 0x80400040, 0xd4b045b1, 0x006994b0, 0x00ab06f2 },
- { 0x00000040, 0x220a3d8c, 0x0000020a, 0x00080008 },
- { 0x00110040, 0x220a3d8c, 0x0200020a, 0x00300030 },
- { 0x01000010, 0x20003d2c, 0x02000020, 0x00060006 },
- { 0x00000040, 0x20203d29, 0x00000020, 0x00020002 },
- { 0x00000040, 0x22040c00, 0x00000204, 0x00100001 },
- { 0x00000040, 0x220c358c, 0x0000020c, 0x0000003a },
- { 0x00110220, 0x34001c00, 0x02001400, 0xfffffc36 },
- { 0x00000001, 0x220001ec, 0x00000000, 0x01400140 },
- { 0x00000001, 0x220201ec, 0x00000000, 0x01c001c0 },
- { 0x00800401, 0x20400236, 0x01ee8000, 0x00000000 },
- { 0x00800801, 0x20500236, 0x01ee8010, 0x00000000 },
- { 0x00800401, 0x20600236, 0x01ee8020, 0x00000000 },
- { 0x00800801, 0x20700236, 0x01ee8030, 0x00000000 },
- { 0x00800401, 0x20800236, 0x01ee8040, 0x00000000 },
- { 0x00800801, 0x20900236, 0x01ee8050, 0x00000000 },
- { 0x00800401, 0x20a00236, 0x01ee8060, 0x00000000 },
- { 0x00800801, 0x20b00236, 0x01ee8070, 0x00000000 },
- { 0x00800401, 0x20c00236, 0x01ee8100, 0x00000000 },
- { 0x00800801, 0x20d00236, 0x01ee8110, 0x00000000 },
- { 0x00800401, 0x20e00236, 0x01ee8120, 0x00000000 },
- { 0x00800801, 0x20f00236, 0x01ee8130, 0x00000000 },
- { 0x00800401, 0x21000236, 0x01ee8140, 0x00000000 },
- { 0x00800801, 0x21100236, 0x01ee8150, 0x00000000 },
- { 0x00800401, 0x21200236, 0x01ee8160, 0x00000000 },
- { 0x00800801, 0x21300236, 0x01ee8170, 0x00000000 },
- { 0x00200401, 0x204001a5, 0x00450064, 0x00000000 },
- { 0x00000801, 0x20480061, 0x00000000, 0x000f000f },
- { 0x01600031, 0x21401c21, 0x508d0040, 0x1218a000 },
- { 0x00000001, 0x220001ec, 0x00000000, 0x03400340 },
- { 0x00800401, 0x41600236, 0x00d28000, 0x00000000 },
- { 0x00800801, 0x41610236, 0x00d28080, 0x00000000 },
- { 0x00800401, 0x41800236, 0x00d28020, 0x00000000 },
- { 0x00800801, 0x41810236, 0x00d280a0, 0x00000000 },
- { 0x00800401, 0x41a00236, 0x00d28040, 0x00000000 },
- { 0x00800801, 0x41a10236, 0x00d280c0, 0x00000000 },
- { 0x00800401, 0x41c00236, 0x00d28060, 0x00000000 },
- { 0x00800801, 0x41c10236, 0x00d280e0, 0x00000000 },
- { 0x0000040c, 0x20443ca5, 0x00000044, 0x00010001 },
- { 0x00000801, 0x20480061, 0x00000000, 0x0007000f },
- { 0x0a600031, 0x21601c21, 0x508d0040, 0x0a18a001 },
- { 0x00000001, 0x21400021, 0x00000140, 0x00000000 },
- { 0x00000001, 0x21600021, 0x00000160, 0x00000000 },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x00600001, 0x20400021, 0x008d0000, 0x00000000 },
- { 0x00000005, 0x20203e2d, 0x00000061, 0x001f001f },
- { 0x00200009, 0x20643e2d, 0x00450064, 0x00040004 },
- { 0x00000001, 0x203a01ed, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000020, 0x00160016 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x01200010, 0x20003e2c, 0x0200006c, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000024 },
- { 0x00800009, 0x25403dad, 0x00050064, 0x00020002 },
- { 0x00000001, 0x203a01ed, 0x00000000, 0x00180018 },
- { 0x00200040, 0x45483dad, 0x00660548, 0x00100010 },
- { 0x00200040, 0x45523dad, 0x00660552, 0x00100010 },
- { 0x00400040, 0x25583dad, 0x00690558, 0x00100010 },
- { 0x00800040, 0x208035ad, 0x00b10080, 0x00b10540 },
- { 0x00600040, 0x45403dad, 0x00ae0540, 0x00200020 },
- { 0x00800040, 0x20a035ad, 0x00b100a0, 0x00b10540 },
- { 0x00600040, 0x45423dad, 0x00ae0542, 0x00200020 },
- { 0x00800040, 0x20e035ad, 0x00b100e0, 0x00b10540 },
- { 0x00600040, 0x45403dad, 0x00ae0540, 0xffe0ffe0 },
- { 0x00800040, 0x20c035ad, 0x00b100c0, 0x00b10540 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x06600010, 0x20003dac, 0x02000020, 0x00030003 },
- { 0x00000001, 0x206c0171, 0x00000000, 0x00000000 },
- { 0x00610001, 0x208000a5, 0x02050080, 0x00000000 },
- { 0x00610001, 0x212000a5, 0x02090100, 0x00000000 },
- { 0x00410001, 0x211000a5, 0x02690100, 0x00000000 },
- { 0x00200009, 0x25403dad, 0x00450064, 0x00020002 },
- { 0x00800040, 0x208035ad, 0x00b10080, 0x00050540 },
- { 0x00200040, 0x40883dad, 0x00660088, 0x00200020 },
- { 0x00200040, 0x40923dad, 0x00660092, 0x00200020 },
- { 0x00400040, 0x20983dad, 0x00690098, 0x00200020 },
- { 0x00200401, 0x22080060, 0x00000000, 0x03400140 },
- { 0x00000c01, 0x220c0060, 0x00000000, 0x04400080 },
- { 0x00000801, 0x22040060, 0x00000000, 0x01000070 },
- { 0x00000005, 0x203e2e29, 0x00000063, 0x00010001 },
- { 0x00000001, 0x20200169, 0x00000000, 0x00000000 },
- { 0x0000000c, 0x2458262d, 0x0000006d, 0x00000020 },
- { 0x00000001, 0x210e0169, 0x00000000, 0x00010001 },
- { 0x00000005, 0x24583dad, 0x00000458, 0x00030003 },
- { 0x01000010, 0x200035ac, 0x0000010e, 0x00000458 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000316 },
- { 0x01000010, 0x20003dac, 0x0200010e, 0x00010001 },
- { 0x00010401, 0x24540061, 0x02000000, 0x06c00640 },
- { 0x00010805, 0x245a3e2d, 0x02008800, 0x007f007f },
- { 0x00110401, 0x24540061, 0x02000000, 0x04800780 },
- { 0x00110805, 0x245a3e2d, 0x02008804, 0x007f007f },
- { 0x00010005, 0x245c3e2d, 0x02008800, 0x00800080 },
- { 0x00110005, 0x245c3e2d, 0x02008804, 0x00800080 },
- { 0x00000009, 0x245c3dad, 0x0000045c, 0x00010001 },
- { 0x0000000c, 0x211e362d, 0x0000006c, 0x00000020 },
- { 0x00000040, 0x240035ac, 0x0000003e, 0x0000045c },
- { 0x01000010, 0x20003d8c, 0x00210400, 0x00010001 },
- { 0x01000010, 0x20003d8c, 0x02210400, 0x01000100 },
- { 0x00000001, 0x203c01ed, 0x00000000, 0x00000000 },
- { 0x00010001, 0x203c01ed, 0x00000000, 0x00020002 },
- { 0x00010001, 0x203c01ed, 0x02000000, 0xfffefffe },
- { 0x00000040, 0x20780d21, 0x0000045a, 0x0208e602 },
- { 0x00000040, 0x20782421, 0x00000078, 0x0000045c },
- { 0x02000005, 0x20003dac, 0x0200011e, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000001c0 },
- { 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
- { 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
- { 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
- { 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000012 },
- { 0x00010040, 0x22000c20, 0x02000078, 0x00400000 },
- { 0x00110040, 0x22000c20, 0x02000078, 0x00700000 },
- { 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
- { 0x00110001, 0x20480061, 0x02000000, 0x000c000c },
- { 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
- { 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
- { 0x00010001, 0x20480061, 0x02000000, 0x0007000c },
- { 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
- { 0x00110040, 0x22000c20, 0x02000078, 0x00400000 },
- { 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
- { 0x00110040, 0x20441da5, 0x02000442, 0xfffffffe },
- { 0x00110001, 0x20480061, 0x02000000, 0x000c0007 },
- { 0x00010001, 0x20480061, 0x02000000, 0x00070007 },
- { 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
- { 0x00000040, 0xb80235ad, 0x00009802, 0x0000003c },
- { 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
- { 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
- { 0x01600006, 0x20003dac, 0x0000044a, 0x00000000 },
- { 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
- { 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
- { 0x00010040, 0x22000c20, 0x00000078, 0x00200010 },
- { 0x00110040, 0x22000c20, 0x00000078, 0x00300010 },
- { 0x00010001, 0x20480061, 0x00000000, 0x00030009 },
- { 0x00110001, 0x20480061, 0x00000000, 0x00040009 },
- { 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
- { 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000001a },
- { 0x00600001, 0x26220231, 0x008d05c0, 0x00000000 },
- { 0x00600401, 0x26120231, 0x008d05b8, 0x00000000 },
- { 0x00600801, 0x26020231, 0x008d05b0, 0x00000000 },
- { 0x00600401, 0x25f20231, 0x008d05a8, 0x00000000 },
- { 0x00600801, 0x25e20231, 0x008d05a0, 0x00000000 },
- { 0x00600401, 0x25d20231, 0x008d0598, 0x00000000 },
- { 0x00600801, 0x25c20231, 0x008d0590, 0x00000000 },
- { 0x00600401, 0x25b20231, 0x008d0588, 0x00000000 },
- { 0x00600801, 0x25a20231, 0x008d0580, 0x00000000 },
- { 0x00600401, 0x25920231, 0x008d0578, 0x00000000 },
- { 0x00600801, 0x25820231, 0x008d0570, 0x00000000 },
- { 0x00600001, 0x25720231, 0x008d0568, 0x00000000 },
- { 0x00600001, 0x25620231, 0x008d0560, 0x00000000 },
- { 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
- { 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
- { 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
- { 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
- { 0x00810001, 0xbc000229, 0x02ad8000, 0x00000000 },
- { 0x00810001, 0xbc200229, 0x02ad8020, 0x00000000 },
- { 0x00810001, 0xbc400229, 0x02ad8040, 0x00000000 },
- { 0x00810001, 0xbc600229, 0x02ad8060, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000012a },
- { 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
- { 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
- { 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
- { 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
- { 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
- { 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000066 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000064 },
- { 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
- { 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
- { 0x00000801, 0x220c0060, 0x00000000, 0x04a00480 },
- { 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
- { 0x00a02040, 0x2400462c, 0x00ad8000, 0x00ad8005 },
- { 0x00a02048, 0x24003e2c, 0x00ad8001, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8002, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8003, 0x00140014 },
- { 0x00a02048, 0xb8003e2d, 0x00ad8004, 0xfffbfffb },
- { 0x00a02040, 0x2400462c, 0x00ad8040, 0x00ad8045 },
- { 0x00a02048, 0x24003e2c, 0x00ad8041, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8042, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8043, 0x00140014 },
- { 0x00a02048, 0xb8403e2d, 0x00ad8044, 0xfffbfffb },
- { 0x00a02040, 0x2400462c, 0x00ad8080, 0x00ad8085 },
- { 0x00a02048, 0x24003e2c, 0x00ad8081, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8082, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8083, 0x00140014 },
- { 0x00a02048, 0xb8803e2d, 0x00ad8084, 0xfffbfffb },
- { 0x00600040, 0x2400462c, 0x008d80c0, 0x008d80c5 },
- { 0x00600048, 0x24003e2c, 0x008d80c1, 0xfffbfffb },
- { 0x00600048, 0x24003e2c, 0x008d80c2, 0x00140014 },
- { 0x00600048, 0x24003e2c, 0x008d80c3, 0x00140014 },
- { 0x00600048, 0xb8c03e2d, 0x008d80c4, 0xfffbfffb },
- { 0x00000401, 0x22000060, 0x00000000, 0x04a00480 },
- { 0x00000c01, 0x22040060, 0x00000000, 0x04a00490 },
- { 0x00010802, 0x220c2d28, 0x00000454, 0x04800480 },
- { 0x00a02040, 0x24003dac, 0x00b18000, 0x02000200 },
- { 0x00800048, 0x24003dac, 0x01ed8800, 0xfffbfffb },
- { 0x00800048, 0x24203dac, 0x01ed8820, 0xfffbfffb },
- { 0x00a02048, 0x24003dac, 0x00b18020, 0x00140014 },
- { 0x00800048, 0x24003dac, 0x01ed8820, 0x00140014 },
- { 0x00800048, 0x24203dac, 0x01ed8840, 0x00140014 },
- { 0x00a02048, 0x24003dac, 0x00b18040, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01ed8840, 0x00010001 },
- { 0x00800048, 0x24203dac, 0x01ed8860, 0x00010001 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
- { 0x8080100c, 0xd8203d91, 0x00b10420, 0x000a000a },
- { 0x00a02040, 0x24003dac, 0x00b18040, 0x02000200 },
- { 0x00800048, 0x24003dac, 0x01ed8840, 0xfffbfffb },
- { 0x00800048, 0x24203dac, 0x01ed8860, 0xfffbfffb },
- { 0x00a02048, 0x24003dac, 0x00b18060, 0x00140014 },
- { 0x00800048, 0x24003dac, 0x01ed8860, 0x00140014 },
- { 0x00800048, 0x24203dac, 0x01ed8880, 0x00140014 },
- { 0x00a02048, 0x24003dac, 0x00b18080, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01ed8880, 0x00010001 },
- { 0x00800048, 0x24203dac, 0x01ed88a0, 0x00010001 },
- { 0x8080000c, 0xd8403d91, 0x00b10400, 0x000a000a },
- { 0x8080100c, 0xd8603d91, 0x00b10420, 0x000a000a },
- { 0x00010220, 0x34001c00, 0x00001400, 0x000000b4 },
- { 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000004c },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000004a },
- { 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
- { 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
- { 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
- { 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
- { 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
- { 0x00010002, 0x220c2d28, 0x02000454, 0x04800480 },
- { 0x00800040, 0x24003e2c, 0x01ed8000, 0x00100010 },
- { 0x00800040, 0x24203e2c, 0x01ed8020, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8001, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8021, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8002, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8022, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8003, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8023, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8004, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8024, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8005, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8025, 0x00010001 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
- { 0x00800040, 0x24003e2c, 0x01ed8040, 0x00100010 },
- { 0x00800040, 0x24203e2c, 0x01ed8060, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8041, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8061, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8042, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8062, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8043, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8063, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8044, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8064, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8045, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8065, 0x00010001 },
- { 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000005c },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000062 },
- { 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000042 },
- { 0x00200401, 0x22000128, 0x0066044c, 0x00000000 },
- { 0x00200c01, 0x22040128, 0x0045044e, 0x00000000 },
- { 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
- { 0x03400010, 0x20003dac, 0x02000444, 0x00020002 },
- { 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
- { 0x00410040, 0x22002d08, 0x02690200, 0x00010001 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
- { 0x00110001, 0x220c0168, 0x02000000, 0x04800480 },
- { 0x00a02040, 0x24003e2c, 0x00ad83e0, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8be0, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8800, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8000, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8800, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8820, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8020, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8820, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8840, 0x00010001 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
- { 0x00a02040, 0x24003e2c, 0x00ad8020, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8820, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8840, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8040, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8840, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8860, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8060, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8860, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8880, 0x00010001 },
- { 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001c },
- { 0x00200401, 0x22000128, 0x0045044c, 0x00000000 },
- { 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
- { 0x01200010, 0x20003dac, 0x00000444, 0x00030003 },
- { 0x01200010, 0x20003dac, 0x02000446, 0x00030003 },
- { 0x00210040, 0x22002d08, 0x00450200, 0x00010001 },
- { 0x00210040, 0x22002d08, 0x02450200, 0x00100010 },
- { 0x00800001, 0xb8000229, 0x01ed8000, 0x00000000 },
- { 0x00800001, 0xb8200229, 0x01ed8020, 0x00000000 },
- { 0x00800001, 0xb8400229, 0x01ed8040, 0x00000000 },
- { 0x00800001, 0xb8600229, 0x01ed8060, 0x00000000 },
- { 0x80800042, 0xd8004631, 0x00d29800, 0x00d20480 },
- { 0x80800042, 0xd8204631, 0x00d29820, 0x00d204a0 },
- { 0x80800042, 0xd8404631, 0x00d29840, 0x00d204c0 },
- { 0x80800042, 0xd8604631, 0x00d29860, 0x00d204e0 },
- { 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
- { 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
- { 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
- { 0x00000c01, 0x220201e8, 0x00000000, 0x07100710 },
- { 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
- { 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
- { 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
- { 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
- { 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
- { 0x00200040, 0x244c3d09, 0x00450200, 0x00100010 },
- { 0x00800041, 0x24002628, 0x00ad8000, 0x00000540 },
- { 0x00800041, 0x24202628, 0x00ad8020, 0x00000540 },
- { 0x00800048, 0x24002628, 0x00ad8002, 0x00000542 },
- { 0x00800048, 0x24202628, 0x00ad8022, 0x00000542 },
- { 0x00200001, 0x22000128, 0x0045044c, 0x00000000 },
- { 0x00800048, 0x24002628, 0x01ed8000, 0x00000544 },
- { 0x00800048, 0x24202628, 0x01ed8020, 0x00000544 },
- { 0x00800048, 0xbc002629, 0x01ed8002, 0x00000546 },
- { 0x00801048, 0xbc202629, 0x01ed8022, 0x00000546 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000128 },
- { 0x00000001, 0x20220169, 0x00000000, 0x00040004 },
- { 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
- { 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
- { 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
- { 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
- { 0x00110040, 0x22000c20, 0x02000078, 0x00500000 },
- { 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
- { 0x00110001, 0x20480061, 0x02000000, 0x00080008 },
- { 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
- { 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
- { 0x00010001, 0x20480061, 0x02000000, 0x00030008 },
- { 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
- { 0x00000040, 0xb80235ad, 0x00009802, 0x0000003c },
- { 0x00000040, 0x22000c20, 0x00000078, 0x00100010 },
- { 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
- { 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
- { 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
- { 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
- { 0x00000001, 0x20480061, 0x00000000, 0x00020005 },
- { 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
- { 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
- { 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
- { 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
- { 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
- { 0x00410001, 0xbc000229, 0x02698000, 0x00000000 },
- { 0x00410001, 0xbc100229, 0x02698010, 0x00000000 },
- { 0x00410001, 0xbc200229, 0x02698020, 0x00000000 },
- { 0x00410001, 0xbc300229, 0x02698030, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000be },
- { 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
- { 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
- { 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
- { 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
- { 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
- { 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000044 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000042 },
- { 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
- { 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
- { 0x00000801, 0x220c0060, 0x00000000, 0x04d004c0 },
- { 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
- { 0x00802040, 0x2400462c, 0x00a98000, 0x00a98005 },
- { 0x00802048, 0x24003e2c, 0x00a98001, 0xfffbfffb },
- { 0x00802048, 0x24003e2c, 0x00a98002, 0x00140014 },
- { 0x00802048, 0x24003e2c, 0x00a98003, 0x00140014 },
- { 0x00802048, 0xb8003e2d, 0x00a98004, 0xfffbfffb },
- { 0x00802040, 0x2400462c, 0x00a98040, 0x00a98045 },
- { 0x00802048, 0x24003e2c, 0x00a98041, 0xfffbfffb },
- { 0x00802048, 0x24003e2c, 0x00a98042, 0x00140014 },
- { 0x00802048, 0x24003e2c, 0x00a98043, 0x00140014 },
- { 0x00802048, 0xb8203e2d, 0x00a98044, 0xfffbfffb },
- { 0x00400040, 0x2400462c, 0x00698080, 0x00698085 },
- { 0x00400048, 0x24003e2c, 0x00698081, 0xfffbfffb },
- { 0x00400048, 0x24003e2c, 0x00698082, 0x00140014 },
- { 0x00400048, 0x24003e2c, 0x00698083, 0x00140014 },
- { 0x00400048, 0xb8403e2d, 0x00698084, 0xfffbfffb },
- { 0x00000401, 0x220c0060, 0x00000000, 0x04e004d0 },
- { 0x00000c01, 0x22000060, 0x00000000, 0x04d004c8 },
- { 0x00000c01, 0x22040060, 0x00000000, 0x04e004d8 },
- { 0x00000801, 0x22080060, 0x00000000, 0x04f004e8 },
- { 0x00800040, 0x24003dac, 0x00b104c0, 0x02000200 },
- { 0x00800048, 0x24003dac, 0x00b104e0, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01ed9800, 0x00140014 },
- { 0x00010001, 0x220c0168, 0x00000000, 0x05400540 },
- { 0x00110001, 0x220c0168, 0x00000000, 0x04c004c0 },
- { 0x00800048, 0x24003dac, 0x01e98000, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01e98020, 0x00010001 },
- { 0x00800048, 0x24003dac, 0x01e98800, 0x00140014 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000060 },
- { 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000022 },
- { 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
- { 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
- { 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
- { 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
- { 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
- { 0x00010001, 0x220e0168, 0x02000000, 0x05400540 },
- { 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
- { 0x00800040, 0x24003e2c, 0x01e98000, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01e98001, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e98002, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e98003, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e98004, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e98005, 0x00010001 },
- { 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000036 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000036 },
- { 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x03600010, 0x20003dac, 0x02000444, 0x00020002 },
- { 0x00400401, 0x22000128, 0x0069044c, 0x00000000 },
- { 0x00400840, 0x22083d2c, 0x0069044c, 0x00100010 },
- { 0x00610040, 0x22002d08, 0x02690200, 0x00010001 },
- { 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00800040, 0x24003e2c, 0x01e983e0, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01e98000, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e98020, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e993e0, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e99000, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e99020, 0x00010001 },
- { 0x00000001, 0x220e0168, 0x00000000, 0x05400540 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
- { 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
- { 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000e },
- { 0x00400001, 0x22000128, 0x0069044c, 0x00000000 },
- { 0x01400010, 0x20003dac, 0x00000444, 0x00030003 },
- { 0x01400010, 0x20003dac, 0x02000446, 0x00030003 },
- { 0x00410040, 0x22002d08, 0x00690200, 0x00010001 },
- { 0x00410040, 0x22002d08, 0x02690200, 0x00100010 },
- { 0x00800001, 0x25400229, 0x01e98000, 0x00000000 },
- { 0x80800042, 0x45404631, 0x00d20540, 0x00d204c0 },
- { 0x00000001, 0x220c0128, 0x00000454, 0x00000000 },
- { 0x00400001, 0xd8000231, 0x008a0540, 0x00000000 },
- { 0x00400001, 0xd8100231, 0x008a0548, 0x00000000 },
- { 0x00400001, 0xd8200231, 0x008a0550, 0x00000000 },
- { 0x00400001, 0xd8300231, 0x008a0558, 0x00000000 },
- { 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
- { 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
- { 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
- { 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
- { 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
- { 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
- { 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
- { 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
- { 0x00600041, 0x24002628, 0x00898000, 0x00000540 },
- { 0x00600048, 0x24002628, 0x00898002, 0x00000542 },
- { 0x00600048, 0x24002628, 0x00898008, 0x00000544 },
- { 0x00600048, 0x2540262d, 0x0089800a, 0x00000546 },
- { 0x00400401, 0xbc0001a9, 0x00690540, 0x00000000 },
- { 0x00400801, 0xbc1001a9, 0x00690548, 0x00000000 },
- { 0x01000010, 0x20003d2c, 0x00000022, 0x00030003 },
- { 0x01000040, 0x20223d29, 0x02000022, 0xffffffff },
- { 0x00000040, 0x220c3d8c, 0x0000020c, 0x00080008 },
- { 0x00110040, 0x24540c21, 0x00000454, 0x00080008 },
- { 0x00010040, 0x24540c21, 0x00000454, 0x00180038 },
- { 0x00110220, 0x34001c00, 0x02001400, 0xfffffee4 },
- { 0x01800010, 0x20003dac, 0x0200010e, 0x00010001 },
- { 0x00000040, 0x220c3d8c, 0x0000020c, 0xffe0ffe0 },
- { 0x00010001, 0x24540061, 0x02000000, 0x06c00640 },
- { 0x00110001, 0x24540061, 0x02000000, 0x04800780 },
- { 0x00000001, 0x220e0128, 0x00000456, 0x00000000 },
- { 0x00800040, 0x24003dac, 0x00b19c00, 0x00200020 },
- { 0x00800040, 0x24203dac, 0x00b19c20, 0x00200020 },
- { 0x8080000c, 0xdc003d91, 0x00b10400, 0x00060006 },
- { 0x8080000c, 0xdc203d91, 0x00b10420, 0x00060006 },
- { 0x02000040, 0x210e3d29, 0x0200010e, 0xffffffff },
- { 0x00000040, 0x220c3d8c, 0x0000020c, 0x00040004 },
- { 0x00110220, 0x34001c00, 0x02001400, 0xfffffce0 },
- { 0x01000005, 0x25643e2d, 0x00000060, 0x00c000c0 },
- { 0x01000010, 0x20003dac, 0x02000458, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x01000010, 0x20003dac, 0x00000458, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00a02001, 0x46400231, 0x00d20780, 0x00000000 },
- { 0x00a02001, 0x46800231, 0x00d207c0, 0x00000000 },
- { 0x00a02001, 0x46c00231, 0x00d20480, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000007e },
- { 0x80a02042, 0x46404631, 0x00d20640, 0x00d20780 },
- { 0x80a02042, 0x46804631, 0x00d20680, 0x00d207c0 },
- { 0x80a02042, 0x46c04631, 0x00d206c0, 0x00d20480 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000076 },
- { 0x01000010, 0x20003dac, 0x02000564, 0x00800080 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x0000000e },
- { 0x01000010, 0x20003dac, 0x00000458, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xffffffe4 },
- { 0x00200401, 0x256801ed, 0x00000000, 0x00200020 },
- { 0x00200801, 0x256c01ed, 0x00000000, 0x00060006 },
- { 0x00400001, 0x258001ed, 0x00000000, 0x00000000 },
- { 0x00600001, 0x45a001ad, 0x00058c00, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000028 },
- { 0x02600005, 0x20006e28, 0x02008c0c, 0x88848421 },
- { 0x0220000c, 0x25663dad, 0x00000458, 0x00010001 },
- { 0x0000000c, 0x25643dad, 0x00000564, 0x00060006 },
- { 0x00310001, 0x25c401ad, 0x00000458, 0x00000000 },
- { 0x00210001, 0x25c00061, 0x00000000, 0x00010001 },
- { 0x00310040, 0x25c03dad, 0x004545c4, 0x00010001 },
- { 0x00610001, 0x25a00061, 0x02000000, 0x00000080 },
- { 0x00710001, 0x45a002ad, 0x02ae8c00, 0x00000000 },
- { 0x00710001, 0x45a202ad, 0x02ae8c01, 0x00000000 },
- { 0x00800041, 0x25a035ad, 0x00b105a0, 0x000905c0 },
- { 0x01200010, 0x20003e2c, 0x0245006e, 0x00000000 },
- { 0x00310009, 0x244c45ad, 0x02000564, 0x0045006e },
- { 0x00210001, 0x244c01ed, 0x02000000, 0x00000000 },
- { 0x0031000c, 0x244c3dad, 0x0245044c, 0x00010001 },
- { 0x00200009, 0x256835ad, 0x0045044c, 0x00000566 },
- { 0x00210040, 0x256835ad, 0x02450568, 0x00000566 },
- { 0x00200040, 0x256c362d, 0x0045006e, 0x00000566 },
- { 0x00400040, 0x240035ac, 0x00ab05a2, 0x00ab05a6 },
- { 0x00400040, 0x2400358c, 0x00690400, 0x00000566 },
- { 0x0040000c, 0x2580358d, 0x00690400, 0x00000566 },
- { 0x00800041, 0x2400362c, 0x00d20640, 0x000005a0 },
- { 0x00800041, 0x2420362c, 0x00d20660, 0x000005a0 },
- { 0x00800048, 0x2400362c, 0x00d20780, 0x000005a4 },
- { 0x00800048, 0x2420362c, 0x00d207a0, 0x000005a4 },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
- { 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
- { 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
- { 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
- { 0x80800040, 0x464035b1, 0x00b104c0, 0x00000580 },
- { 0x80800040, 0x466035b1, 0x00b104e0, 0x00000580 },
- { 0x00800041, 0x2400362c, 0x00d20680, 0x000005a0 },
- { 0x00800041, 0x2420362c, 0x00d206a0, 0x000005a0 },
- { 0x00800048, 0x2400362c, 0x00d207c0, 0x000005a4 },
- { 0x00800048, 0x2420362c, 0x00d207e0, 0x000005a4 },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
- { 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
- { 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
- { 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
- { 0x80800040, 0x468035b1, 0x00b104c0, 0x00000580 },
- { 0x80800040, 0x46a035b1, 0x00b104e0, 0x00000580 },
- { 0x00800041, 0x2400362c, 0x00d206c0, 0x000705a8 },
- { 0x00800041, 0x2420362c, 0x00d206e0, 0x000705a8 },
- { 0x00800048, 0x2400362c, 0x00d20480, 0x000705ac },
- { 0x00800048, 0x2420362c, 0x00d204a0, 0x000705ac },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x0000056a },
- { 0x00800040, 0x2420358c, 0x00b10420, 0x0000056a },
- { 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056e },
- { 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056e },
- { 0x80800040, 0x46c035b1, 0x00b104c0, 0x00050582 },
- { 0x80800040, 0x46e035b1, 0x00b104e0, 0x00050582 },
- { 0x01800005, 0x20003d2c, 0x02000020, 0x00020002 },
- { 0x80800040, 0xd00045b1, 0x00b19000, 0x00d20640 },
- { 0x80800040, 0xd02045b1, 0x00b19020, 0x00d20660 },
- { 0x80800040, 0xd04045b1, 0x00b19040, 0x00d20680 },
- { 0x80800040, 0xd06045b1, 0x00b19060, 0x00d206a0 },
- { 0x00000040, 0x22083d8c, 0x00000208, 0x00800080 },
- { 0x80400040, 0xd40045b1, 0x00699400, 0x00ab06c0 },
- { 0x80400040, 0xd48045b1, 0x00699480, 0x00ab06c2 },
- { 0x80400040, 0xd42045b1, 0x00699420, 0x00ab06e0 },
- { 0x80400040, 0xd4a045b1, 0x006994a0, 0x00ab06e2 },
- { 0x80400040, 0xd41045b1, 0x00699410, 0x00ab06d0 },
- { 0x80400040, 0xd49045b1, 0x00699490, 0x00ab06d2 },
- { 0x80400040, 0xd43045b1, 0x00699430, 0x00ab06f0 },
- { 0x80400040, 0xd4b045b1, 0x006994b0, 0x00ab06f2 },
- { 0x00000040, 0x220a3d8c, 0x0000020a, 0x00080008 },
- { 0x00110040, 0x220a3d8c, 0x0200020a, 0x00300030 },
- { 0x01000010, 0x20003d2c, 0x02000020, 0x00060006 },
- { 0x00000040, 0x20203d29, 0x00000020, 0x00020002 },
- { 0x00000040, 0x22040c00, 0x00000204, 0x00100001 },
- { 0x00000040, 0x220c358c, 0x0000020c, 0x0000003a },
- { 0x00110220, 0x34001c00, 0x02001400, 0xfffffc1e },
- { 0x00000001, 0x220001ec, 0x00000000, 0x01400140 },
- { 0x00000001, 0x220201ec, 0x00000000, 0x01c001c0 },
- { 0x00800401, 0x20400236, 0x01ee8000, 0x00000000 },
- { 0x00800801, 0x20500236, 0x01ee8010, 0x00000000 },
- { 0x00800401, 0x20600236, 0x01ee8020, 0x00000000 },
- { 0x00800801, 0x20700236, 0x01ee8030, 0x00000000 },
- { 0x00800401, 0x20800236, 0x01ee8040, 0x00000000 },
- { 0x00800801, 0x20900236, 0x01ee8050, 0x00000000 },
- { 0x00800401, 0x20a00236, 0x01ee8060, 0x00000000 },
- { 0x00800801, 0x20b00236, 0x01ee8070, 0x00000000 },
- { 0x00800401, 0x20c00236, 0x01ee8100, 0x00000000 },
- { 0x00800801, 0x20d00236, 0x01ee8110, 0x00000000 },
- { 0x00800401, 0x20e00236, 0x01ee8120, 0x00000000 },
- { 0x00800801, 0x20f00236, 0x01ee8130, 0x00000000 },
- { 0x00800401, 0x21000236, 0x01ee8140, 0x00000000 },
- { 0x00800801, 0x21100236, 0x01ee8150, 0x00000000 },
- { 0x00800401, 0x21200236, 0x01ee8160, 0x00000000 },
- { 0x00800801, 0x21300236, 0x01ee8170, 0x00000000 },
- { 0x00000040, 0x22000d20, 0x00000062, 0x1218a600 },
- { 0x00200401, 0x204001a5, 0x00450064, 0x00000000 },
- { 0x00000801, 0x20480061, 0x00000000, 0x000f000f },
- { 0x01600031, 0x21400021, 0x508d0040, 0x00000200 },
- { 0x00000001, 0x220001ec, 0x00000000, 0x03400340 },
- { 0x00800401, 0x41600236, 0x00d28000, 0x00000000 },
- { 0x00800801, 0x41610236, 0x00d28080, 0x00000000 },
- { 0x00800401, 0x41800236, 0x00d28020, 0x00000000 },
- { 0x00800801, 0x41810236, 0x00d280a0, 0x00000000 },
- { 0x00800401, 0x41a00236, 0x00d28040, 0x00000000 },
- { 0x00800801, 0x41a10236, 0x00d280c0, 0x00000000 },
- { 0x00800401, 0x41c00236, 0x00d28060, 0x00000000 },
- { 0x00800801, 0x41c10236, 0x00d280e0, 0x00000000 },
- { 0x00000040, 0x22000d20, 0x00000062, 0x0a18a601 },
- { 0x0000040c, 0x20443ca5, 0x00000044, 0x00010001 },
- { 0x00000801, 0x20480061, 0x00000000, 0x0007000f },
- { 0x0a600031, 0x21600021, 0x508d0040, 0x00000200 },
- { 0x00000001, 0x21400021, 0x00000140, 0x00000000 },
- { 0x00000001, 0x21600021, 0x00000160, 0x00000000 },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x20400021, 0x008d0000, 0x00000000 },
- { 0x00000005, 0x20203e2d, 0x00000061, 0x001f001f },
- { 0x00200009, 0x20643e2d, 0x00450064, 0x00040004 },
- { 0x00000001, 0x203a01ed, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000020, 0x00160016 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x01200010, 0x20003e2c, 0x0200006c, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000024 },
- { 0x00800009, 0x25403dad, 0x00050064, 0x00020002 },
- { 0x00000001, 0x203a01ed, 0x00000000, 0x00180018 },
- { 0x00200040, 0x45483dad, 0x00660548, 0x00100010 },
- { 0x00200040, 0x45523dad, 0x00660552, 0x00100010 },
- { 0x00400040, 0x25583dad, 0x00690558, 0x00100010 },
- { 0x00800040, 0x208035ad, 0x00b10080, 0x00b10540 },
- { 0x00600040, 0x45403dad, 0x00ae0540, 0x00200020 },
- { 0x00800040, 0x20a035ad, 0x00b100a0, 0x00b10540 },
- { 0x00600040, 0x45423dad, 0x00ae0542, 0x00200020 },
- { 0x00800040, 0x20e035ad, 0x00b100e0, 0x00b10540 },
- { 0x00600040, 0x45403dad, 0x00ae0540, 0xffe0ffe0 },
- { 0x00800040, 0x20c035ad, 0x00b100c0, 0x00b10540 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x06600010, 0x20003dac, 0x02000020, 0x00030003 },
- { 0x00000001, 0x206c0171, 0x00000000, 0x00000000 },
- { 0x00610001, 0x208000a5, 0x02050080, 0x00000000 },
- { 0x00610001, 0x212000a5, 0x02090100, 0x00000000 },
- { 0x00410001, 0x211000a5, 0x02690100, 0x00000000 },
- { 0x00200009, 0x25403dad, 0x00450064, 0x00020002 },
- { 0x00800040, 0x208035ad, 0x00b10080, 0x00050540 },
- { 0x00200040, 0x40883dad, 0x00660088, 0x00200020 },
- { 0x00200040, 0x40923dad, 0x00660092, 0x00200020 },
- { 0x00400040, 0x20983dad, 0x00690098, 0x00200020 },
- { 0x00200401, 0x22080060, 0x00000000, 0x03400140 },
- { 0x00000c01, 0x220c0060, 0x00000000, 0x04400080 },
- { 0x00000801, 0x22040060, 0x00000000, 0x01000070 },
- { 0x02000005, 0x20002e28, 0x00000061, 0x00400040 },
- { 0x00010005, 0x203e2e29, 0x00000063, 0x00010001 },
- { 0x00110001, 0x203e0169, 0x00000000, 0x00030003 },
- { 0x00000001, 0x20200169, 0x00000000, 0x00000000 },
- { 0x0000000c, 0x2458262d, 0x0000006d, 0x00000020 },
- { 0x00000001, 0x210e0169, 0x00000000, 0x00010001 },
- { 0x00000005, 0x24583dad, 0x00000458, 0x00030003 },
- { 0x01000010, 0x200035ac, 0x0000010e, 0x00000458 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000031a },
- { 0x01000010, 0x20003dac, 0x0200010e, 0x00010001 },
- { 0x00010401, 0x24540061, 0x02000000, 0x06c00640 },
- { 0x00010805, 0x245a3e2d, 0x02008800, 0x007f007f },
- { 0x00110401, 0x24540061, 0x02000000, 0x04800780 },
- { 0x00110805, 0x245a3e2d, 0x02008804, 0x007f007f },
- { 0x00010005, 0x245c3e2d, 0x02008800, 0x00800080 },
- { 0x00110005, 0x245c3e2d, 0x02008804, 0x00800080 },
- { 0x00000009, 0x245c3dad, 0x0000045c, 0x00010001 },
- { 0x0000000c, 0x211e362d, 0x0000006c, 0x00000020 },
- { 0x00000040, 0x240035ac, 0x0000003e, 0x0000045c },
- { 0x01000010, 0x20003d8c, 0x00210400, 0x00010001 },
- { 0x01000010, 0x20003d8c, 0x02210400, 0x01000100 },
- { 0x00000001, 0x203c01ed, 0x00000000, 0x00000000 },
- { 0x00010001, 0x203c01ed, 0x00000000, 0x00020002 },
- { 0x00010001, 0x203c01ed, 0x02000000, 0xfffefffe },
- { 0x02000005, 0x20002e28, 0x00000061, 0x00400040 },
- { 0x00010040, 0x244c0d21, 0x0000045a, 0x0208e602 },
- { 0x00110040, 0x20780d21, 0x0000045a, 0x0208a002 },
- { 0x00010040, 0x20782421, 0x0000044c, 0x0000045c },
- { 0x02000005, 0x20003dac, 0x0200011e, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000001c0 },
- { 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
- { 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
- { 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
- { 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000012 },
- { 0x00010040, 0x22000c20, 0x02000078, 0x00400000 },
- { 0x00110040, 0x22000c20, 0x02000078, 0x00700000 },
- { 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
- { 0x00110001, 0x20480061, 0x02000000, 0x000c000c },
- { 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
- { 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
- { 0x00010001, 0x20480061, 0x02000000, 0x0007000c },
- { 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
- { 0x00110040, 0x22000c20, 0x02000078, 0x00400000 },
- { 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
- { 0x00110040, 0x20441da5, 0x02000442, 0xfffffffe },
- { 0x00110001, 0x20480061, 0x02000000, 0x000c0007 },
- { 0x00010001, 0x20480061, 0x02000000, 0x00070007 },
- { 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
- { 0x00000040, 0xb80235ad, 0x00009802, 0x0000003c },
- { 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
- { 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
- { 0x01600006, 0x20003dac, 0x0000044a, 0x00000000 },
- { 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
- { 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
- { 0x00010040, 0x22000c20, 0x00000078, 0x00200010 },
- { 0x00110040, 0x22000c20, 0x00000078, 0x00300010 },
- { 0x00010001, 0x20480061, 0x00000000, 0x00030009 },
- { 0x00110001, 0x20480061, 0x00000000, 0x00040009 },
- { 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
- { 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000001a },
- { 0x00600001, 0x26220231, 0x008d05c0, 0x00000000 },
- { 0x00600401, 0x26120231, 0x008d05b8, 0x00000000 },
- { 0x00600801, 0x26020231, 0x008d05b0, 0x00000000 },
- { 0x00600401, 0x25f20231, 0x008d05a8, 0x00000000 },
- { 0x00600801, 0x25e20231, 0x008d05a0, 0x00000000 },
- { 0x00600401, 0x25d20231, 0x008d0598, 0x00000000 },
- { 0x00600801, 0x25c20231, 0x008d0590, 0x00000000 },
- { 0x00600401, 0x25b20231, 0x008d0588, 0x00000000 },
- { 0x00600801, 0x25a20231, 0x008d0580, 0x00000000 },
- { 0x00600401, 0x25920231, 0x008d0578, 0x00000000 },
- { 0x00600801, 0x25820231, 0x008d0570, 0x00000000 },
- { 0x00600001, 0x25720231, 0x008d0568, 0x00000000 },
- { 0x00600001, 0x25620231, 0x008d0560, 0x00000000 },
- { 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
- { 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
- { 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
- { 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
- { 0x00810001, 0xbc000229, 0x02ad8000, 0x00000000 },
- { 0x00810001, 0xbc200229, 0x02ad8020, 0x00000000 },
- { 0x00810001, 0xbc400229, 0x02ad8040, 0x00000000 },
- { 0x00810001, 0xbc600229, 0x02ad8060, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000012a },
- { 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
- { 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
- { 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
- { 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
- { 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
- { 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000066 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000064 },
- { 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
- { 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
- { 0x00000801, 0x220c0060, 0x00000000, 0x04a00480 },
- { 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
- { 0x00a02040, 0x2400462c, 0x00ad8000, 0x00ad8005 },
- { 0x00a02048, 0x24003e2c, 0x00ad8001, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8002, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8003, 0x00140014 },
- { 0x00a02048, 0xb8003e2d, 0x00ad8004, 0xfffbfffb },
- { 0x00a02040, 0x2400462c, 0x00ad8040, 0x00ad8045 },
- { 0x00a02048, 0x24003e2c, 0x00ad8041, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8042, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8043, 0x00140014 },
- { 0x00a02048, 0xb8403e2d, 0x00ad8044, 0xfffbfffb },
- { 0x00a02040, 0x2400462c, 0x00ad8080, 0x00ad8085 },
- { 0x00a02048, 0x24003e2c, 0x00ad8081, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8082, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8083, 0x00140014 },
- { 0x00a02048, 0xb8803e2d, 0x00ad8084, 0xfffbfffb },
- { 0x00600040, 0x2400462c, 0x008d80c0, 0x008d80c5 },
- { 0x00600048, 0x24003e2c, 0x008d80c1, 0xfffbfffb },
- { 0x00600048, 0x24003e2c, 0x008d80c2, 0x00140014 },
- { 0x00600048, 0x24003e2c, 0x008d80c3, 0x00140014 },
- { 0x00600048, 0xb8c03e2d, 0x008d80c4, 0xfffbfffb },
- { 0x00000401, 0x22000060, 0x00000000, 0x04a00480 },
- { 0x00000c01, 0x22040060, 0x00000000, 0x04a00490 },
- { 0x00010802, 0x220c2d28, 0x00000454, 0x04800480 },
- { 0x00a02040, 0x24003dac, 0x00b18000, 0x02000200 },
- { 0x00800048, 0x24003dac, 0x01ed8800, 0xfffbfffb },
- { 0x00800048, 0x24203dac, 0x01ed8820, 0xfffbfffb },
- { 0x00a02048, 0x24003dac, 0x00b18020, 0x00140014 },
- { 0x00800048, 0x24003dac, 0x01ed8820, 0x00140014 },
- { 0x00800048, 0x24203dac, 0x01ed8840, 0x00140014 },
- { 0x00a02048, 0x24003dac, 0x00b18040, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01ed8840, 0x00010001 },
- { 0x00800048, 0x24203dac, 0x01ed8860, 0x00010001 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
- { 0x8080100c, 0xd8203d91, 0x00b10420, 0x000a000a },
- { 0x00a02040, 0x24003dac, 0x00b18040, 0x02000200 },
- { 0x00800048, 0x24003dac, 0x01ed8840, 0xfffbfffb },
- { 0x00800048, 0x24203dac, 0x01ed8860, 0xfffbfffb },
- { 0x00a02048, 0x24003dac, 0x00b18060, 0x00140014 },
- { 0x00800048, 0x24003dac, 0x01ed8860, 0x00140014 },
- { 0x00800048, 0x24203dac, 0x01ed8880, 0x00140014 },
- { 0x00a02048, 0x24003dac, 0x00b18080, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01ed8880, 0x00010001 },
- { 0x00800048, 0x24203dac, 0x01ed88a0, 0x00010001 },
- { 0x8080000c, 0xd8403d91, 0x00b10400, 0x000a000a },
- { 0x8080100c, 0xd8603d91, 0x00b10420, 0x000a000a },
- { 0x00010220, 0x34001c00, 0x00001400, 0x000000b4 },
- { 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000004c },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000004a },
- { 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
- { 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
- { 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
- { 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
- { 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
- { 0x00010002, 0x220c2d28, 0x02000454, 0x04800480 },
- { 0x00800040, 0x24003e2c, 0x01ed8000, 0x00100010 },
- { 0x00800040, 0x24203e2c, 0x01ed8020, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8001, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8021, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8002, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8022, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8003, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8023, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8004, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8024, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8005, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8025, 0x00010001 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
- { 0x00800040, 0x24003e2c, 0x01ed8040, 0x00100010 },
- { 0x00800040, 0x24203e2c, 0x01ed8060, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8041, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8061, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8042, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8062, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8043, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8063, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8044, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8064, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8045, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8065, 0x00010001 },
- { 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000005c },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000062 },
- { 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000042 },
- { 0x00200401, 0x22000128, 0x0066044c, 0x00000000 },
- { 0x00200c01, 0x22040128, 0x0045044e, 0x00000000 },
- { 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
- { 0x03400010, 0x20003dac, 0x02000444, 0x00020002 },
- { 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
- { 0x00410040, 0x22002d08, 0x02690200, 0x00010001 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
- { 0x00110001, 0x220c0168, 0x02000000, 0x04800480 },
- { 0x00a02040, 0x24003e2c, 0x00ad83e0, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8be0, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8800, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8000, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8800, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8820, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8020, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8820, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8840, 0x00010001 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
- { 0x00a02040, 0x24003e2c, 0x00ad8020, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8820, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8840, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8040, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8840, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8860, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8060, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8860, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8880, 0x00010001 },
- { 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001c },
- { 0x00200401, 0x22000128, 0x0045044c, 0x00000000 },
- { 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
- { 0x01200010, 0x20003dac, 0x00000444, 0x00030003 },
- { 0x01200010, 0x20003dac, 0x02000446, 0x00030003 },
- { 0x00210040, 0x22002d08, 0x00450200, 0x00010001 },
- { 0x00210040, 0x22002d08, 0x02450200, 0x00100010 },
- { 0x00800001, 0xb8000229, 0x01ed8000, 0x00000000 },
- { 0x00800001, 0xb8200229, 0x01ed8020, 0x00000000 },
- { 0x00800001, 0xb8400229, 0x01ed8040, 0x00000000 },
- { 0x00800001, 0xb8600229, 0x01ed8060, 0x00000000 },
- { 0x80800042, 0xd8004631, 0x00d29800, 0x00d20480 },
- { 0x80800042, 0xd8204631, 0x00d29820, 0x00d204a0 },
- { 0x80800042, 0xd8404631, 0x00d29840, 0x00d204c0 },
- { 0x80800042, 0xd8604631, 0x00d29860, 0x00d204e0 },
- { 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
- { 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
- { 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
- { 0x00000c01, 0x220201e8, 0x00000000, 0x07100710 },
- { 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
- { 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
- { 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
- { 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
- { 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
- { 0x00200040, 0x244c3d09, 0x00450200, 0x00100010 },
- { 0x00800041, 0x24002628, 0x00ad8000, 0x00000540 },
- { 0x00800041, 0x24202628, 0x00ad8020, 0x00000540 },
- { 0x00800048, 0x24002628, 0x00ad8002, 0x00000542 },
- { 0x00800048, 0x24202628, 0x00ad8022, 0x00000542 },
- { 0x00200001, 0x22000128, 0x0045044c, 0x00000000 },
- { 0x00800048, 0x24002628, 0x01ed8000, 0x00000544 },
- { 0x00800048, 0x24202628, 0x01ed8020, 0x00000544 },
- { 0x00800048, 0xbc002629, 0x01ed8002, 0x00000546 },
- { 0x00801048, 0xbc202629, 0x01ed8022, 0x00000546 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000128 },
- { 0x00000001, 0x20220169, 0x00000000, 0x00040004 },
- { 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
- { 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
- { 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
- { 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
- { 0x00110040, 0x22000c20, 0x02000078, 0x00500000 },
- { 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
- { 0x00110001, 0x20480061, 0x02000000, 0x00080008 },
- { 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
- { 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
- { 0x00010001, 0x20480061, 0x02000000, 0x00030008 },
- { 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
- { 0x00000040, 0xb80235ad, 0x00009802, 0x0000003c },
- { 0x00000040, 0x22000c20, 0x00000078, 0x00100010 },
- { 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
- { 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
- { 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
- { 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
- { 0x00000001, 0x20480061, 0x00000000, 0x00020005 },
- { 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
- { 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
- { 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
- { 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
- { 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
- { 0x00410001, 0xbc000229, 0x02698000, 0x00000000 },
- { 0x00410001, 0xbc100229, 0x02698010, 0x00000000 },
- { 0x00410001, 0xbc200229, 0x02698020, 0x00000000 },
- { 0x00410001, 0xbc300229, 0x02698030, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000be },
- { 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
- { 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
- { 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
- { 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
- { 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
- { 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000044 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000042 },
- { 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
- { 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
- { 0x00000801, 0x220c0060, 0x00000000, 0x04d004c0 },
- { 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
- { 0x00802040, 0x2400462c, 0x00a98000, 0x00a98005 },
- { 0x00802048, 0x24003e2c, 0x00a98001, 0xfffbfffb },
- { 0x00802048, 0x24003e2c, 0x00a98002, 0x00140014 },
- { 0x00802048, 0x24003e2c, 0x00a98003, 0x00140014 },
- { 0x00802048, 0xb8003e2d, 0x00a98004, 0xfffbfffb },
- { 0x00802040, 0x2400462c, 0x00a98040, 0x00a98045 },
- { 0x00802048, 0x24003e2c, 0x00a98041, 0xfffbfffb },
- { 0x00802048, 0x24003e2c, 0x00a98042, 0x00140014 },
- { 0x00802048, 0x24003e2c, 0x00a98043, 0x00140014 },
- { 0x00802048, 0xb8203e2d, 0x00a98044, 0xfffbfffb },
- { 0x00400040, 0x2400462c, 0x00698080, 0x00698085 },
- { 0x00400048, 0x24003e2c, 0x00698081, 0xfffbfffb },
- { 0x00400048, 0x24003e2c, 0x00698082, 0x00140014 },
- { 0x00400048, 0x24003e2c, 0x00698083, 0x00140014 },
- { 0x00400048, 0xb8403e2d, 0x00698084, 0xfffbfffb },
- { 0x00000401, 0x220c0060, 0x00000000, 0x04e004d0 },
- { 0x00000c01, 0x22000060, 0x00000000, 0x04d004c8 },
- { 0x00000c01, 0x22040060, 0x00000000, 0x04e004d8 },
- { 0x00000801, 0x22080060, 0x00000000, 0x04f004e8 },
- { 0x00800040, 0x24003dac, 0x00b104c0, 0x02000200 },
- { 0x00800048, 0x24003dac, 0x00b104e0, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01ed9800, 0x00140014 },
- { 0x00010001, 0x220c0168, 0x00000000, 0x05400540 },
- { 0x00110001, 0x220c0168, 0x00000000, 0x04c004c0 },
- { 0x00800048, 0x24003dac, 0x01e98000, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01e98020, 0x00010001 },
- { 0x00800048, 0x24003dac, 0x01e98800, 0x00140014 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000060 },
- { 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000022 },
- { 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
- { 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
- { 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
- { 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
- { 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
- { 0x00010001, 0x220e0168, 0x02000000, 0x05400540 },
- { 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
- { 0x00800040, 0x24003e2c, 0x01e98000, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01e98001, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e98002, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e98003, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e98004, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e98005, 0x00010001 },
- { 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000036 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000036 },
- { 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x03600010, 0x20003dac, 0x02000444, 0x00020002 },
- { 0x00400401, 0x22000128, 0x0069044c, 0x00000000 },
- { 0x00400840, 0x22083d2c, 0x0069044c, 0x00100010 },
- { 0x00610040, 0x22002d08, 0x02690200, 0x00010001 },
- { 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00800040, 0x24003e2c, 0x01e983e0, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01e98000, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e98020, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e993e0, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e99000, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e99020, 0x00010001 },
- { 0x00000001, 0x220e0168, 0x00000000, 0x05400540 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
- { 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
- { 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000e },
- { 0x00400001, 0x22000128, 0x0069044c, 0x00000000 },
- { 0x01400010, 0x20003dac, 0x00000444, 0x00030003 },
- { 0x01400010, 0x20003dac, 0x02000446, 0x00030003 },
- { 0x00410040, 0x22002d08, 0x00690200, 0x00010001 },
- { 0x00410040, 0x22002d08, 0x02690200, 0x00100010 },
- { 0x00800001, 0x25400229, 0x01e98000, 0x00000000 },
- { 0x80800042, 0x45404631, 0x00d20540, 0x00d204c0 },
- { 0x00000001, 0x220c0128, 0x00000454, 0x00000000 },
- { 0x00400001, 0xd8000231, 0x008a0540, 0x00000000 },
- { 0x00400001, 0xd8100231, 0x008a0548, 0x00000000 },
- { 0x00400001, 0xd8200231, 0x008a0550, 0x00000000 },
- { 0x00400001, 0xd8300231, 0x008a0558, 0x00000000 },
- { 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
- { 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
- { 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
- { 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
- { 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
- { 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
- { 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
- { 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
- { 0x00600041, 0x24002628, 0x00898000, 0x00000540 },
- { 0x00600048, 0x24002628, 0x00898002, 0x00000542 },
- { 0x00600048, 0x24002628, 0x00898008, 0x00000544 },
- { 0x00600048, 0x2540262d, 0x0089800a, 0x00000546 },
- { 0x00400401, 0xbc0001a9, 0x00690540, 0x00000000 },
- { 0x00400801, 0xbc1001a9, 0x00690548, 0x00000000 },
- { 0x01000010, 0x20003d2c, 0x00000022, 0x00030003 },
- { 0x01000040, 0x20223d29, 0x02000022, 0xffffffff },
- { 0x00000040, 0x220c3d8c, 0x0000020c, 0x00080008 },
- { 0x00110040, 0x24540c21, 0x00000454, 0x00080008 },
- { 0x00010040, 0x24540c21, 0x00000454, 0x00180038 },
- { 0x00110220, 0x34001c00, 0x02001400, 0xfffffee4 },
- { 0x01800010, 0x20003dac, 0x0200010e, 0x00010001 },
- { 0x00000040, 0x220c3d8c, 0x0000020c, 0xffe0ffe0 },
- { 0x00010001, 0x24540061, 0x02000000, 0x06c00640 },
- { 0x00110001, 0x24540061, 0x02000000, 0x04800780 },
- { 0x00000001, 0x220e0128, 0x00000456, 0x00000000 },
- { 0x00800040, 0x24003dac, 0x00b19c00, 0x00200020 },
- { 0x00800040, 0x24203dac, 0x00b19c20, 0x00200020 },
- { 0x8080000c, 0xdc003d91, 0x00b10400, 0x00060006 },
- { 0x8080000c, 0xdc203d91, 0x00b10420, 0x00060006 },
- { 0x02000040, 0x210e3d29, 0x0200010e, 0xffffffff },
- { 0x00000040, 0x220c3d8c, 0x0000020c, 0x00040004 },
- { 0x00110220, 0x34001c00, 0x02001400, 0xfffffcdc },
- { 0x01000005, 0x25643e2d, 0x00000060, 0x00c000c0 },
- { 0x01000010, 0x20003dac, 0x02000458, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x01000010, 0x20003dac, 0x00000458, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00a02001, 0x46400231, 0x00d20780, 0x00000000 },
- { 0x00a02001, 0x46800231, 0x00d207c0, 0x00000000 },
- { 0x00a02001, 0x46c00231, 0x00d20480, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000007e },
- { 0x80a02042, 0x46404631, 0x00d20640, 0x00d20780 },
- { 0x80a02042, 0x46804631, 0x00d20680, 0x00d207c0 },
- { 0x80a02042, 0x46c04631, 0x00d206c0, 0x00d20480 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000076 },
- { 0x01000010, 0x20003dac, 0x02000564, 0x00800080 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x0000000e },
- { 0x01000010, 0x20003dac, 0x00000458, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xffffffe4 },
- { 0x00200401, 0x256801ed, 0x00000000, 0x00200020 },
- { 0x00200801, 0x256c01ed, 0x00000000, 0x00060006 },
- { 0x00400001, 0x258001ed, 0x00000000, 0x00000000 },
- { 0x00600001, 0x45a001ad, 0x00058c00, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000028 },
- { 0x02600005, 0x20006e28, 0x02008c0c, 0x88848421 },
- { 0x0220000c, 0x25663dad, 0x00000458, 0x00010001 },
- { 0x0000000c, 0x25643dad, 0x00000564, 0x00060006 },
- { 0x00310001, 0x25c401ad, 0x00000458, 0x00000000 },
- { 0x00210001, 0x25c00061, 0x00000000, 0x00010001 },
- { 0x00310040, 0x25c03dad, 0x004545c4, 0x00010001 },
- { 0x00610001, 0x25a00061, 0x02000000, 0x00000080 },
- { 0x00710001, 0x45a002ad, 0x02ae8c00, 0x00000000 },
- { 0x00710001, 0x45a202ad, 0x02ae8c01, 0x00000000 },
- { 0x00800041, 0x25a035ad, 0x00b105a0, 0x000905c0 },
- { 0x01200010, 0x20003e2c, 0x0245006e, 0x00000000 },
- { 0x00310009, 0x244c45ad, 0x02000564, 0x0045006e },
- { 0x00210001, 0x244c01ed, 0x02000000, 0x00000000 },
- { 0x0031000c, 0x244c3dad, 0x0245044c, 0x00010001 },
- { 0x00200009, 0x256835ad, 0x0045044c, 0x00000566 },
- { 0x00210040, 0x256835ad, 0x02450568, 0x00000566 },
- { 0x00200040, 0x256c362d, 0x0045006e, 0x00000566 },
- { 0x00400040, 0x240035ac, 0x00ab05a2, 0x00ab05a6 },
- { 0x00400040, 0x2400358c, 0x00690400, 0x00000566 },
- { 0x0040000c, 0x2580358d, 0x00690400, 0x00000566 },
- { 0x00800041, 0x2400362c, 0x00d20640, 0x000005a0 },
- { 0x00800041, 0x2420362c, 0x00d20660, 0x000005a0 },
- { 0x00800048, 0x2400362c, 0x00d20780, 0x000005a4 },
- { 0x00800048, 0x2420362c, 0x00d207a0, 0x000005a4 },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
- { 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
- { 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
- { 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
- { 0x80800040, 0x464035b1, 0x00b104c0, 0x00000580 },
- { 0x80800040, 0x466035b1, 0x00b104e0, 0x00000580 },
- { 0x00800041, 0x2400362c, 0x00d20680, 0x000005a0 },
- { 0x00800041, 0x2420362c, 0x00d206a0, 0x000005a0 },
- { 0x00800048, 0x2400362c, 0x00d207c0, 0x000005a4 },
- { 0x00800048, 0x2420362c, 0x00d207e0, 0x000005a4 },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
- { 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
- { 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
- { 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
- { 0x80800040, 0x468035b1, 0x00b104c0, 0x00000580 },
- { 0x80800040, 0x46a035b1, 0x00b104e0, 0x00000580 },
- { 0x00800041, 0x2400362c, 0x00d206c0, 0x000705a8 },
- { 0x00800041, 0x2420362c, 0x00d206e0, 0x000705a8 },
- { 0x00800048, 0x2400362c, 0x00d20480, 0x000705ac },
- { 0x00800048, 0x2420362c, 0x00d204a0, 0x000705ac },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x0000056a },
- { 0x00800040, 0x2420358c, 0x00b10420, 0x0000056a },
- { 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056e },
- { 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056e },
- { 0x80800040, 0x46c035b1, 0x00b104c0, 0x00050582 },
- { 0x80800040, 0x46e035b1, 0x00b104e0, 0x00050582 },
- { 0x01800005, 0x20003d2c, 0x02000020, 0x00020002 },
- { 0x80800040, 0xd00045b1, 0x00b19000, 0x00d20640 },
- { 0x80800040, 0xd02045b1, 0x00b19020, 0x00d20660 },
- { 0x80800040, 0xd04045b1, 0x00b19040, 0x00d20680 },
- { 0x80800040, 0xd06045b1, 0x00b19060, 0x00d206a0 },
- { 0x00000040, 0x22083d8c, 0x00000208, 0x00800080 },
- { 0x80400040, 0xd40045b1, 0x00699400, 0x00ab06c0 },
- { 0x80400040, 0xd48045b1, 0x00699480, 0x00ab06c2 },
- { 0x80400040, 0xd42045b1, 0x00699420, 0x00ab06e0 },
- { 0x80400040, 0xd4a045b1, 0x006994a0, 0x00ab06e2 },
- { 0x80400040, 0xd41045b1, 0x00699410, 0x00ab06d0 },
- { 0x80400040, 0xd49045b1, 0x00699490, 0x00ab06d2 },
- { 0x80400040, 0xd43045b1, 0x00699430, 0x00ab06f0 },
- { 0x80400040, 0xd4b045b1, 0x006994b0, 0x00ab06f2 },
- { 0x00000040, 0x220a3d8c, 0x0000020a, 0x00080008 },
- { 0x00110040, 0x220a3d8c, 0x0200020a, 0x00300030 },
- { 0x01000010, 0x20003d2c, 0x02000020, 0x00060006 },
- { 0x00000040, 0x20203d29, 0x00000020, 0x00020002 },
- { 0x00000040, 0x22040c00, 0x00000204, 0x00100001 },
- { 0x00000040, 0x220c358c, 0x0000020c, 0x0000003a },
- { 0x00110220, 0x34001c00, 0x02001400, 0xfffffc1a },
- { 0x00000001, 0x220001ec, 0x00000000, 0x01400140 },
- { 0x00000001, 0x220201ec, 0x00000000, 0x01c001c0 },
- { 0x00800401, 0x20400236, 0x01ee8000, 0x00000000 },
- { 0x00800801, 0x20500236, 0x01ee8010, 0x00000000 },
- { 0x00800401, 0x20600236, 0x01ee8020, 0x00000000 },
- { 0x00800801, 0x20700236, 0x01ee8030, 0x00000000 },
- { 0x00800401, 0x20800236, 0x01ee8040, 0x00000000 },
- { 0x00800801, 0x20900236, 0x01ee8050, 0x00000000 },
- { 0x00800401, 0x20a00236, 0x01ee8060, 0x00000000 },
- { 0x00800801, 0x20b00236, 0x01ee8070, 0x00000000 },
- { 0x00800401, 0x20c00236, 0x01ee8100, 0x00000000 },
- { 0x00800801, 0x20d00236, 0x01ee8110, 0x00000000 },
- { 0x00800401, 0x20e00236, 0x01ee8120, 0x00000000 },
- { 0x00800801, 0x20f00236, 0x01ee8130, 0x00000000 },
- { 0x00800401, 0x21000236, 0x01ee8140, 0x00000000 },
- { 0x00800801, 0x21100236, 0x01ee8150, 0x00000000 },
- { 0x00800401, 0x21200236, 0x01ee8160, 0x00000000 },
- { 0x00800801, 0x21300236, 0x01ee8170, 0x00000000 },
- { 0x00000040, 0x22000d20, 0x00000062, 0x1218a000 },
- { 0x00200401, 0x204001a5, 0x00450064, 0x00000000 },
- { 0x00000801, 0x20480061, 0x00000000, 0x000f000f },
- { 0x01600031, 0x21400021, 0x508d0040, 0x00000200 },
- { 0x00000001, 0x220001ec, 0x00000000, 0x03400340 },
- { 0x00800401, 0x41600236, 0x00d28000, 0x00000000 },
- { 0x00800801, 0x41610236, 0x00d28080, 0x00000000 },
- { 0x00800401, 0x41800236, 0x00d28020, 0x00000000 },
- { 0x00800801, 0x41810236, 0x00d280a0, 0x00000000 },
- { 0x00800401, 0x41a00236, 0x00d28040, 0x00000000 },
- { 0x00800801, 0x41a10236, 0x00d280c0, 0x00000000 },
- { 0x00800401, 0x41c00236, 0x00d28060, 0x00000000 },
- { 0x00800801, 0x41c10236, 0x00d280e0, 0x00000000 },
- { 0x00000040, 0x22000d20, 0x00000062, 0x0a18a001 },
- { 0x0000040c, 0x20443ca5, 0x00000044, 0x00010001 },
- { 0x00000801, 0x20480061, 0x00000000, 0x0007000f },
- { 0x0a600031, 0x21600021, 0x508d0040, 0x00000200 },
- { 0x00000001, 0x21400021, 0x00000140, 0x00000000 },
- { 0x00000001, 0x21600021, 0x00000160, 0x00000000 },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20602d29, 0x02000042, 0x00070007 },
- { 0x01000005, 0x20422d29, 0x00000042, 0xfff8fff8 },
- { 0x00000001, 0x202001e9, 0x00000000, 0x100c100c },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00000009, 0x27e82d21, 0x00000040, 0x00060006 },
- { 0x00600001, 0x20a00022, 0x008d0000, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000100 },
- { 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
- { 0x01800031, 0x20801d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20400022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20480c22, 0x000007e8, 0x00000080 },
- { 0x02800031, 0x21001d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20600022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20680c22, 0x000007e8, 0x00000100 },
- { 0x03800031, 0x21801d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20800022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20880c22, 0x000007e8, 0x00000180 },
- { 0x04800031, 0x22001d09, 0x408d0000, 0x02488400 },
- { 0x02600005, 0x20000c20, 0x02000090, 0x00002000 },
- { 0x00000006, 0x20880c21, 0x00000088, 0x00200000 },
- { 0x00200009, 0x20845529, 0x0000009c, 0x00450020 },
- { 0x00200001, 0x40840231, 0x00450094, 0x00000000 },
- { 0x00310001, 0x20840229, 0x02450094, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x00800041, 0x24002628, 0x00000095, 0x00000044 },
- { 0x00800040, 0x24004508, 0x008d0400, 0x00000094 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0080, 0x00000000 },
- { 0x00802001, 0x20800061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x02600005, 0x20000c20, 0x020000d0, 0x00002000 },
- { 0x00000006, 0x20c80c21, 0x000000c8, 0x00200000 },
- { 0x00200009, 0x20c45529, 0x000000dc, 0x00450020 },
- { 0x00200001, 0x40c40231, 0x004500d4, 0x00000000 },
- { 0x00310001, 0x20c40229, 0x024500d4, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x00800041, 0x24002628, 0x000000d5, 0x00000044 },
- { 0x00800040, 0x24004508, 0x008d0400, 0x000000d4 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d00c0, 0x00000000 },
- { 0x00802001, 0x20c00061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x02600005, 0x20000c20, 0x02000110, 0x00002000 },
- { 0x00000006, 0x21080c21, 0x00000108, 0x00200000 },
- { 0x00200009, 0x21045529, 0x0000011c, 0x00450020 },
- { 0x00200001, 0x41040231, 0x00450114, 0x00000000 },
- { 0x00310001, 0x21040229, 0x02450114, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x00800041, 0x24002628, 0x00000115, 0x00000044 },
- { 0x00800040, 0x24004508, 0x008d0400, 0x00000114 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0100, 0x00000000 },
- { 0x00802001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x02600005, 0x20000c20, 0x02000150, 0x00002000 },
- { 0x00000006, 0x21480c21, 0x00000148, 0x00200000 },
- { 0x00200009, 0x21445529, 0x0000015c, 0x00450020 },
- { 0x00200001, 0x41440231, 0x00450154, 0x00000000 },
- { 0x00310001, 0x21440229, 0x02450154, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x00800041, 0x24002628, 0x00000155, 0x00000044 },
- { 0x00800040, 0x24004508, 0x008d0400, 0x00000154 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0140, 0x00000000 },
- { 0x00802001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x02600005, 0x20000c20, 0x02000190, 0x00002000 },
- { 0x00000006, 0x21880c21, 0x00000188, 0x00200000 },
- { 0x00200009, 0x21845529, 0x0000019c, 0x00450020 },
- { 0x00200001, 0x41840231, 0x00450194, 0x00000000 },
- { 0x00310001, 0x21840229, 0x02450194, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x00800041, 0x24002628, 0x00000195, 0x00000044 },
- { 0x00800040, 0x24004508, 0x008d0400, 0x00000194 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0180, 0x00000000 },
- { 0x00802001, 0x21800061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x02600005, 0x20000c20, 0x020001d0, 0x00002000 },
- { 0x00000006, 0x21c80c21, 0x000001c8, 0x00200000 },
- { 0x00200009, 0x21c45529, 0x000001dc, 0x00450020 },
- { 0x00200001, 0x41c40231, 0x004501d4, 0x00000000 },
- { 0x00310001, 0x21c40229, 0x024501d4, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x00800041, 0x24002628, 0x000001d5, 0x00000044 },
- { 0x00800040, 0x24004508, 0x008d0400, 0x000001d4 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d01c0, 0x00000000 },
- { 0x00802001, 0x21c00061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x02600005, 0x20000c20, 0x02000210, 0x00002000 },
- { 0x00000006, 0x22080c21, 0x00000208, 0x00200000 },
- { 0x00200009, 0x22045529, 0x0000021c, 0x00450020 },
- { 0x00200001, 0x42040231, 0x00450214, 0x00000000 },
- { 0x00310001, 0x22040229, 0x02450214, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x00800041, 0x24002628, 0x00000215, 0x00000044 },
- { 0x00800040, 0x24004508, 0x008d0400, 0x00000214 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0200, 0x00000000 },
- { 0x00802001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x02600005, 0x20000c20, 0x02000250, 0x00002000 },
- { 0x00000006, 0x22480c21, 0x00000248, 0x00200000 },
- { 0x00200009, 0x22445529, 0x0000025c, 0x00450020 },
- { 0x00200001, 0x42440231, 0x00450254, 0x00000000 },
- { 0x00310001, 0x22440229, 0x02450254, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x00800041, 0x24002628, 0x00000255, 0x00000044 },
- { 0x00800040, 0x24004508, 0x008d0400, 0x00000254 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0240, 0x00000000 },
- { 0x00802001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x01000040, 0x20423dad, 0x00000042, 0xfff8fff8 },
- { 0x00600001, 0x21600022, 0x008d07e0, 0x00000000 },
- { 0x00802001, 0x21800022, 0x008d0080, 0x00000000 },
- { 0x00802001, 0x21c00022, 0x008d00c0, 0x00000000 },
- { 0x0b800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
- { 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20280c22, 0x000007e8, 0x00000080 },
- { 0x00802001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x00802001, 0x20800022, 0x008d0140, 0x00000000 },
- { 0x01800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
- { 0x00000040, 0x21680c22, 0x000007e8, 0x00000100 },
- { 0x00802001, 0x21800022, 0x008d0180, 0x00000000 },
- { 0x00802001, 0x21c00022, 0x008d01c0, 0x00000000 },
- { 0x0b800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
- { 0x00000040, 0x20280c22, 0x000007e8, 0x00000180 },
- { 0x00802001, 0x20400022, 0x008d0200, 0x00000000 },
- { 0x00802001, 0x20800022, 0x008d0240, 0x00000000 },
- { 0x01800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
- { 0x00000040, 0x27e80c21, 0x000007e8, 0x00000200 },
- { 0x01000010, 0x20002da0, 0x02000060, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xffffff00 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000040 },
- { 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
- { 0x01800031, 0x20801d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20400022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20480c22, 0x000007e8, 0x00000080 },
- { 0x02800031, 0x21001d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20600022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20680c22, 0x000007e8, 0x00000100 },
- { 0x03800031, 0x21801d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20800022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20880c22, 0x000007e8, 0x00000180 },
- { 0x04800031, 0x22001d09, 0x408d0000, 0x02488400 },
- { 0x00000001, 0x220400e0, 0x00000000, 0x00a00080 },
- { 0x00600001, 0x20a00022, 0x008d0000, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x02008810, 0x00002000 },
- { 0x01000040, 0x20603dad, 0x00000060, 0xffffffff },
- { 0x00000006, 0xa8080c21, 0x00008808, 0x00200000 },
- { 0x00200009, 0xa8045529, 0x0000881c, 0x00450020 },
- { 0x00200001, 0xc8040231, 0x00458814, 0x00000000 },
- { 0x00310001, 0xa8040229, 0x02458814, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x00800041, 0x24002628, 0x00008815, 0x00000044 },
- { 0x00800040, 0x24004508, 0x008d0400, 0x00008814 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d8800, 0x00000000 },
- { 0x00802001, 0xa8000061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00600001, 0x21600022, 0x008d07e0, 0x00000000 },
- { 0x00802001, 0x21800022, 0x008d8800, 0x00000000 },
- { 0x0b800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000040, 0x27e80c21, 0x000007e8, 0x00000040 },
- { 0x00000040, 0x22040c00, 0x00000204, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xffffffda },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20602d29, 0x02000042, 0x00070007 },
- { 0x01000005, 0x20422d29, 0x00000042, 0xfff8fff8 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00000009, 0x27e82d21, 0x00000040, 0x00060006 },
- { 0x00600001, 0x20a00022, 0x008d0000, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000260 },
- { 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
- { 0x01800031, 0x20801d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20400022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20480c22, 0x000007e8, 0x00000080 },
- { 0x02800031, 0x21001d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20600022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20680c22, 0x000007e8, 0x00000100 },
- { 0x03800031, 0x21801d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20800022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20880c22, 0x000007e8, 0x00000180 },
- { 0x04800031, 0x22001d09, 0x408d0000, 0x02488400 },
- { 0x00200001, 0x20640229, 0x00450094, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x02000090, 0x01000000 },
- { 0x02600005, 0x20000c20, 0x00000090, 0x00004000 },
- { 0x00600041, 0x24003e2c, 0x00000095, 0x00020002 },
- { 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
- { 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
- { 0x00110001, 0x2066022d, 0x00000095, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x00000090, 0x00002000 },
- { 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
- { 0x00000006, 0x20881c21, 0x00000088, 0x00200000 },
- { 0x00200001, 0x20840129, 0x00450064, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
- { 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0080, 0x00000000 },
- { 0x00802001, 0x20800061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x02600005, 0x20000c20, 0x00000090, 0x00004000 },
- { 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
- { 0x00000001, 0x20680129, 0x0000009c, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x02600005, 0x20001d20, 0x0000009c, 0x00000010 },
- { 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
- { 0x01600005, 0x20001d20, 0x0200009c, 0x00000001 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x02610005, 0x20001c20, 0x02000090, 0x00008000 },
- { 0x02610005, 0x20001d20, 0x0200009c, 0x00000010 },
- { 0x00010006, 0x20681d29, 0x0200009c, 0x00000010 },
- { 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
- { 0x00000009, 0x20843d09, 0x00000602, 0x000c000c },
- { 0x00000005, 0x20862d09, 0x00000602, 0xf000f000 },
- { 0x00200001, 0x40840231, 0x00660064, 0x00000000 },
- { 0x00200001, 0x20640229, 0x004500d4, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x020000d0, 0x01000000 },
- { 0x02600005, 0x20000c20, 0x000000d0, 0x00004000 },
- { 0x00600041, 0x24003e2c, 0x000000d5, 0x00020002 },
- { 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
- { 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
- { 0x00110001, 0x2066022d, 0x000000d5, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x000000d0, 0x00002000 },
- { 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
- { 0x00000006, 0x20c81c21, 0x000000c8, 0x00200000 },
- { 0x00200001, 0x20c40129, 0x00450064, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
- { 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d00c0, 0x00000000 },
- { 0x00802001, 0x20c00061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x02600005, 0x20000c20, 0x000000d0, 0x00004000 },
- { 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
- { 0x00000001, 0x20680129, 0x000000dc, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x02600005, 0x20001d20, 0x000000dc, 0x00000010 },
- { 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
- { 0x01600005, 0x20001d20, 0x020000dc, 0x00000001 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x02610005, 0x20001c20, 0x020000d0, 0x00008000 },
- { 0x02610005, 0x20001d20, 0x020000dc, 0x00000010 },
- { 0x00010006, 0x20681d29, 0x020000dc, 0x00000010 },
- { 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
- { 0x00000009, 0x20c43d09, 0x00000602, 0x000c000c },
- { 0x00000005, 0x20c62d09, 0x00000602, 0xf000f000 },
- { 0x00200001, 0x40c40231, 0x00660064, 0x00000000 },
- { 0x00200001, 0x20640229, 0x00450114, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x02000110, 0x01000000 },
- { 0x02600005, 0x20000c20, 0x00000110, 0x00004000 },
- { 0x00600041, 0x24003e2c, 0x00000115, 0x00020002 },
- { 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
- { 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
- { 0x00110001, 0x2066022d, 0x00000115, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x00000110, 0x00002000 },
- { 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
- { 0x00000006, 0x21081c21, 0x00000108, 0x00200000 },
- { 0x00200001, 0x21040129, 0x00450064, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
- { 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0100, 0x00000000 },
- { 0x00802001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x02600005, 0x20000c20, 0x00000110, 0x00004000 },
- { 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
- { 0x00000001, 0x20680129, 0x0000011c, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x02600005, 0x20001d20, 0x0000011c, 0x00000010 },
- { 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
- { 0x01600005, 0x20001d20, 0x0200011c, 0x00000001 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x02610005, 0x20001c20, 0x02000110, 0x00008000 },
- { 0x02610005, 0x20001d20, 0x0200011c, 0x00000010 },
- { 0x00010006, 0x20681d29, 0x0200011c, 0x00000010 },
- { 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
- { 0x00000009, 0x21043d09, 0x00000602, 0x000c000c },
- { 0x00000005, 0x21062d09, 0x00000602, 0xf000f000 },
- { 0x00200001, 0x41040231, 0x00660064, 0x00000000 },
- { 0x00200001, 0x20640229, 0x00450154, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x02000150, 0x01000000 },
- { 0x02600005, 0x20000c20, 0x00000150, 0x00004000 },
- { 0x00600041, 0x24003e2c, 0x00000155, 0x00020002 },
- { 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
- { 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
- { 0x00110001, 0x2066022d, 0x00000155, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x00000150, 0x00002000 },
- { 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
- { 0x00000006, 0x21481c21, 0x00000148, 0x00200000 },
- { 0x00200001, 0x21440129, 0x00450064, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
- { 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0140, 0x00000000 },
- { 0x00802001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x02600005, 0x20000c20, 0x00000150, 0x00004000 },
- { 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
- { 0x00000001, 0x20680129, 0x0000015c, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x02600005, 0x20001d20, 0x0000015c, 0x00000010 },
- { 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
- { 0x01600005, 0x20001d20, 0x0200015c, 0x00000001 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x02610005, 0x20001c20, 0x02000150, 0x00008000 },
- { 0x02610005, 0x20001d20, 0x0200015c, 0x00000010 },
- { 0x00010006, 0x20681d29, 0x0200015c, 0x00000010 },
- { 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
- { 0x00000009, 0x21443d09, 0x00000602, 0x000c000c },
- { 0x00000005, 0x21462d09, 0x00000602, 0xf000f000 },
- { 0x00200001, 0x41440231, 0x00660064, 0x00000000 },
- { 0x00200001, 0x20640229, 0x00450194, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x02000190, 0x01000000 },
- { 0x02600005, 0x20000c20, 0x00000190, 0x00004000 },
- { 0x00600041, 0x24003e2c, 0x00000195, 0x00020002 },
- { 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
- { 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
- { 0x00110001, 0x2066022d, 0x00000195, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x00000190, 0x00002000 },
- { 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
- { 0x00000006, 0x21881c21, 0x00000188, 0x00200000 },
- { 0x00200001, 0x21840129, 0x00450064, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
- { 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0180, 0x00000000 },
- { 0x00802001, 0x21800061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x02600005, 0x20000c20, 0x00000190, 0x00004000 },
- { 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
- { 0x00000001, 0x20680129, 0x0000019c, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x02600005, 0x20001d20, 0x0000019c, 0x00000010 },
- { 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
- { 0x01600005, 0x20001d20, 0x0200019c, 0x00000001 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x02610005, 0x20001c20, 0x02000190, 0x00008000 },
- { 0x02610005, 0x20001d20, 0x0200019c, 0x00000010 },
- { 0x00010006, 0x20681d29, 0x0200019c, 0x00000010 },
- { 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
- { 0x00000009, 0x21843d09, 0x00000602, 0x000c000c },
- { 0x00000005, 0x21862d09, 0x00000602, 0xf000f000 },
- { 0x00200001, 0x41840231, 0x00660064, 0x00000000 },
- { 0x00200001, 0x20640229, 0x004501d4, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x020001d0, 0x01000000 },
- { 0x02600005, 0x20000c20, 0x000001d0, 0x00004000 },
- { 0x00600041, 0x24003e2c, 0x000001d5, 0x00020002 },
- { 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
- { 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
- { 0x00110001, 0x2066022d, 0x000001d5, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x000001d0, 0x00002000 },
- { 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
- { 0x00000006, 0x21c81c21, 0x000001c8, 0x00200000 },
- { 0x00200001, 0x21c40129, 0x00450064, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
- { 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d01c0, 0x00000000 },
- { 0x00802001, 0x21c00061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x02600005, 0x20000c20, 0x000001d0, 0x00004000 },
- { 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
- { 0x00000001, 0x20680129, 0x000001dc, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x02600005, 0x20001d20, 0x000001dc, 0x00000010 },
- { 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
- { 0x01600005, 0x20001d20, 0x020001dc, 0x00000001 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x02610005, 0x20001c20, 0x020001d0, 0x00008000 },
- { 0x02610005, 0x20001d20, 0x020001dc, 0x00000010 },
- { 0x00010006, 0x20681d29, 0x020001dc, 0x00000010 },
- { 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
- { 0x00000009, 0x21c43d09, 0x00000602, 0x000c000c },
- { 0x00000005, 0x21c62d09, 0x00000602, 0xf000f000 },
- { 0x00200001, 0x41c40231, 0x00660064, 0x00000000 },
- { 0x00200001, 0x20640229, 0x00450214, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x02000210, 0x01000000 },
- { 0x02600005, 0x20000c20, 0x00000210, 0x00004000 },
- { 0x00600041, 0x24003e2c, 0x00000215, 0x00020002 },
- { 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
- { 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
- { 0x00110001, 0x2066022d, 0x00000215, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x00000210, 0x00002000 },
- { 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
- { 0x00000006, 0x22081c21, 0x00000208, 0x00200000 },
- { 0x00200001, 0x22040129, 0x00450064, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
- { 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0200, 0x00000000 },
- { 0x00802001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x02600005, 0x20000c20, 0x00000210, 0x00004000 },
- { 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
- { 0x00000001, 0x20680129, 0x0000021c, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x02600005, 0x20001d20, 0x0000021c, 0x00000010 },
- { 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
- { 0x01600005, 0x20001d20, 0x0200021c, 0x00000001 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x02610005, 0x20001c20, 0x02000210, 0x00008000 },
- { 0x02610005, 0x20001d20, 0x0200021c, 0x00000010 },
- { 0x00010006, 0x20681d29, 0x0200021c, 0x00000010 },
- { 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
- { 0x00000009, 0x22043d09, 0x00000602, 0x000c000c },
- { 0x00000005, 0x22062d09, 0x00000602, 0xf000f000 },
- { 0x00200001, 0x42040231, 0x00660064, 0x00000000 },
- { 0x00200001, 0x20640229, 0x00450254, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x02000250, 0x01000000 },
- { 0x02600005, 0x20000c20, 0x00000250, 0x00004000 },
- { 0x00600041, 0x24003e2c, 0x00000255, 0x00020002 },
- { 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
- { 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
- { 0x00110001, 0x2066022d, 0x00000255, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x00000250, 0x00002000 },
- { 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
- { 0x00000006, 0x22481c21, 0x00000248, 0x00200000 },
- { 0x00200001, 0x22440129, 0x00450064, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
- { 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0240, 0x00000000 },
- { 0x00802001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x02600005, 0x20000c20, 0x00000250, 0x00004000 },
- { 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
- { 0x00000001, 0x20680129, 0x0000025c, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x02600005, 0x20001d20, 0x0000025c, 0x00000010 },
- { 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
- { 0x01600005, 0x20001d20, 0x0200025c, 0x00000001 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x02610005, 0x20001c20, 0x02000250, 0x00008000 },
- { 0x02610005, 0x20001d20, 0x0200025c, 0x00000010 },
- { 0x00010006, 0x20681d29, 0x0200025c, 0x00000010 },
- { 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
- { 0x00000009, 0x22443d09, 0x00000602, 0x000c000c },
- { 0x00000005, 0x22462d09, 0x00000602, 0xf000f000 },
- { 0x00200001, 0x42440231, 0x00660064, 0x00000000 },
- { 0x01000040, 0x20423dad, 0x00000042, 0xfff8fff8 },
- { 0x00600001, 0x21600022, 0x008d07e0, 0x00000000 },
- { 0x00802001, 0x21800022, 0x008d0080, 0x00000000 },
- { 0x00802001, 0x21c00022, 0x008d00c0, 0x00000000 },
- { 0x0b800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
- { 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20280c22, 0x000007e8, 0x00000080 },
- { 0x00802001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x00802001, 0x20800022, 0x008d0140, 0x00000000 },
- { 0x01800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
- { 0x00000040, 0x21680c22, 0x000007e8, 0x00000100 },
- { 0x00802001, 0x21800022, 0x008d0180, 0x00000000 },
- { 0x00802001, 0x21c00022, 0x008d01c0, 0x00000000 },
- { 0x0b800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
- { 0x00000040, 0x20280c22, 0x000007e8, 0x00000180 },
- { 0x00802001, 0x20400022, 0x008d0200, 0x00000000 },
- { 0x00802001, 0x20800022, 0x008d0240, 0x00000000 },
- { 0x01800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
- { 0x00000040, 0x27e80c21, 0x000007e8, 0x00000200 },
- { 0x01000010, 0x20002da0, 0x02000060, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xfffffda0 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000006e },
- { 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
- { 0x01800031, 0x20801d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20400022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20480c22, 0x000007e8, 0x00000080 },
- { 0x02800031, 0x21001d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20600022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20680c22, 0x000007e8, 0x00000100 },
- { 0x03800031, 0x21801d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20800022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20880c22, 0x000007e8, 0x00000180 },
- { 0x04800031, 0x22001d09, 0x408d0000, 0x02488400 },
- { 0x00000001, 0x220400e0, 0x00000000, 0x00a00080 },
- { 0x00600001, 0x20a00022, 0x008d0000, 0x00000000 },
- { 0x00200001, 0x20640229, 0x00458814, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x02008810, 0x01000000 },
- { 0x02600005, 0x20000c20, 0x00008810, 0x00004000 },
- { 0x00600041, 0x24003e2c, 0x00008815, 0x00020002 },
- { 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
- { 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
- { 0x00110001, 0x2066022d, 0x00008815, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x00008810, 0x00002000 },
- { 0x01000040, 0x20603dad, 0x02000060, 0xffffffff },
- { 0x00000006, 0xa8080c21, 0x00008808, 0x00200000 },
- { 0x00200001, 0xa8040129, 0x00450064, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
- { 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d8800, 0x00000000 },
- { 0x00802001, 0xa8000061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x02600005, 0x20000d20, 0x02000066, 0x00000001 },
- { 0x02600005, 0x20000c20, 0x00008810, 0x00004000 },
- { 0x00000001, 0x20680129, 0x0000881c, 0x00000000 },
- { 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x02600005, 0x20001d20, 0x0000881c, 0x00000010 },
- { 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
- { 0x01600005, 0x20001d20, 0x0200881c, 0x00000001 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x02610005, 0x20001c20, 0x02008810, 0x00008000 },
- { 0x02610005, 0x20001d20, 0x0200881c, 0x00000010 },
- { 0x00010006, 0x20681d29, 0x0200881c, 0x00000010 },
- { 0x02800005, 0x2000452c, 0x00000068, 0x000d0070 },
- { 0x01000040, 0x20603dad, 0x02000060, 0x00000000 },
- { 0x00000009, 0xa8043d09, 0x00000600, 0x000c000c },
- { 0x00000005, 0xa8062d09, 0x00000600, 0xf000f000 },
- { 0x00200001, 0xc8040231, 0x00660064, 0x00000000 },
- { 0x00600001, 0x21600022, 0x008d07e0, 0x00000000 },
- { 0x00802001, 0x21800022, 0x008d8800, 0x00000000 },
- { 0x0b800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000040, 0x27e80c21, 0x000007e8, 0x00000040 },
- { 0x00000040, 0x22040c00, 0x00000204, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0xffffffac },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x206601ed, 0x00000000, 0x00030003 },
- { 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
- { 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
- { 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
- { 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
- { 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
- { 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
- { 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
- { 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
- { 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
- { 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
- { 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
- { 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
- { 0x00000001, 0x22a00169, 0x00000000, 0x01400140 },
- { 0x00000040, 0x20283c22, 0x00000008, 0x00200020 },
- { 0x00000001, 0x203801e2, 0x00000000, 0x00010001 },
- { 0x00800001, 0x204001ae, 0x00b10020, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x000002a0, 0x00010001 },
- { 0x00800031, 0x20000128, 0x608d07e0, 0x00000200 },
- { 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
- { 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
- { 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
- { 0x00000001, 0x22a00169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22600169, 0x00000000, 0x00020002 },
- { 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
- { 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc6 },
- { 0x00000801, 0x208c00e5, 0x00000000, 0xffffffca },
- { 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
- { 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
- { 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
- { 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
- { 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
- { 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
- { 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
- { 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
- { 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
- { 0x00000041, 0x22a03dad, 0x00000056, 0x00040004 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffff4 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
- { 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
- { 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
- { 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
- { 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
- { 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
- { 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
- { 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
- { 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
- { 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
- { 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
- { 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
- { 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
- { 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
- { 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
- { 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
- { 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
- { 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
- { 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
- { 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
- { 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
- { 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000006 },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffff6 },
- { 0x05000010, 0x200035ac, 0x00000240, 0x00000026 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffffc },
- { 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
- { 0x01600031, 0x20001c24, 0x708d0000, 0x82000000 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00600009, 0x25c03dad, 0x00050034, 0x00040004 },
- { 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
- { 0x00000041, 0x20263d29, 0x00000036, 0x00040004 },
- { 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
- { 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
- { 0x00000041, 0x27e82c21, 0x000005e4, 0x00400040 },
- { 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
- { 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
- { 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
- { 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
- { 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
- { 0x000b0220, 0x34001c00, 0x02001400, 0x00000178 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000176 },
- { 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
- { 0x00200401, 0x27e001a1, 0x004505c0, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
- { 0x00000001, 0x22000060, 0x00000000, 0x0288a001 },
- { 0x01600031, 0x20c00021, 0x408d07e0, 0x00000200 },
- { 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
- { 0x00000001, 0x22000060, 0x00000000, 0x02286003 },
- { 0x03600031, 0x20800021, 0x408d07e0, 0x00000200 },
- { 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
- { 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
- { 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
- { 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
- { 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
- { 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
- { 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
- { 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
- { 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
- { 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
- { 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
- { 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
- { 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
- { 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
- { 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
- { 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
- { 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
- { 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
- { 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
- { 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
- { 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
- { 0x00000008, 0x25e83e2d, 0x00009080, 0x00020002 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00200401, 0x25d0022d, 0x00459080, 0x00000000 },
- { 0x00200c01, 0x25d80129, 0x00459050, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699060, 0x00000000 },
- { 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000134 },
- { 0x00000008, 0x25e83e2d, 0x00009084, 0x00020002 },
- { 0x00200401, 0x25d0022d, 0x00459084, 0x00000000 },
- { 0x00000801, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00000401, 0x25d80129, 0x00009040, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699064, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000011e },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
- { 0x00000401, 0x25d80129, 0x00009042, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699068, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000110 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
- { 0x00000401, 0x25d80129, 0x00009044, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x0069906c, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000102 },
- { 0x00200401, 0x27e001a1, 0x004505c4, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
- { 0x00800401, 0x23400231, 0x00a90040, 0x00000000 },
- { 0x00800801, 0x23500231, 0x00a90044, 0x00000000 },
- { 0x00800401, 0x23600231, 0x00a90048, 0x00000000 },
- { 0x00800801, 0x23700231, 0x00a9004c, 0x00000000 },
- { 0x00800001, 0x20400232, 0x002b0340, 0x00000000 },
- { 0x00800001, 0x20500232, 0x002b0350, 0x00000000 },
- { 0x00800001, 0x20600232, 0x002b0360, 0x00000000 },
- { 0x00800001, 0x20700232, 0x002b0370, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x06082003 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
- { 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
- { 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
- { 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
- { 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
- { 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
- { 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
- { 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
- { 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
- { 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
- { 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
- { 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
- { 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
- { 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
- { 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
- { 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
- { 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
- { 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
- { 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
- { 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
- { 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
- { 0x00000008, 0x25e83e2d, 0x00009082, 0x00020002 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00800080 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00200401, 0x25d0022d, 0x00459082, 0x00000000 },
- { 0x00200c01, 0x25d80129, 0x00459054, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699070, 0x00000000 },
- { 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000096 },
- { 0x00000008, 0x25e83e2d, 0x00009084, 0x00020002 },
- { 0x00200401, 0x25d0022d, 0x00459084, 0x00000000 },
- { 0x00000801, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00000401, 0x25d80129, 0x00009046, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699074, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000080 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
- { 0x00000401, 0x25d80129, 0x00009048, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699078, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000072 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
- { 0x00000401, 0x25d80129, 0x0000904a, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x0069907c, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000064 },
- { 0x00200401, 0x27e001a1, 0x004505c0, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
- { 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
- { 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
- { 0x00802001, 0x20c00022, 0x008d0140, 0x00000000 },
- { 0x00802001, 0x21000022, 0x008d0180, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x12082003 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
- { 0x00802001, 0x20400022, 0x008d0080, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0618a003 },
- { 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
- { 0x00800401, 0x23400231, 0x00a900cc, 0x00000000 },
- { 0x00800801, 0x23500231, 0x00a9010c, 0x00000000 },
- { 0x00800401, 0x23600231, 0x00a9014c, 0x00000000 },
- { 0x00800801, 0x23700231, 0x00a9018c, 0x00000000 },
- { 0x00800401, 0x23800231, 0x00cf0340, 0x00000000 },
- { 0x00800801, 0x23900231, 0x00cf0341, 0x00000000 },
- { 0x00800401, 0x23a00231, 0x00cf0342, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00cf0343, 0x00000000 },
- { 0x00802001, 0x202000a2, 0x008d0380, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
- { 0x00800031, 0x20001d28, 0x608d07e0, 0x06080020 },
- { 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
- { 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
- { 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
- { 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
- { 0x00000440, 0x27e03da1, 0x000005c0, 0x000c000c },
- { 0x00000c01, 0x27e401a1, 0x000005c2, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
- { 0x02600031, 0x23401c25, 0x408d07e0, 0x02286003 },
- { 0x00800401, 0x23800231, 0x00cf0340, 0x00000000 },
- { 0x00800801, 0x23900231, 0x00cf0341, 0x00000000 },
- { 0x00800401, 0x23a00231, 0x00cf0342, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00cf0343, 0x00000000 },
- { 0x00802001, 0x202000a2, 0x008d0380, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
- { 0x00800031, 0x20001d28, 0x608d07e0, 0x06080020 },
- { 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
- { 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
- { 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00800040, 0x2400462d, 0x00b19c00, 0x00b1d830 },
- { 0x00800040, 0x2340462d, 0x00b19820, 0x00b1d830 },
- { 0x00800040, 0x2360462d, 0x00b19c10, 0x00b1dc00 },
- { 0x05810010, 0x200035ac, 0x008d2400, 0x000005d0 },
- { 0x05810010, 0x200035ac, 0x008d2340, 0x000005d2 },
- { 0x05810010, 0x200035ac, 0x008d2360, 0x000005d2 },
- { 0x00818022, 0x34001c00, 0x00001400, 0x000000ca },
- { 0x00800040, 0x2440462d, 0x00b19810, 0x00b1d830 },
- { 0x00800040, 0x2460462d, 0x00b19c20, 0x00b1dc00 },
- { 0x00800201, 0x24a00129, 0x00b19820, 0x00000000 },
- { 0x00818022, 0x34001c00, 0x02001400, 0x00000066 },
- { 0x05800010, 0x200035ac, 0x028d2400, 0x000005e8 },
- { 0x00800040, 0x2520462d, 0x00b19830, 0x00b19820 },
- { 0x00800040, 0x2540462d, 0x00b19c00, 0x00b19c10 },
- { 0x00000201, 0x26000108, 0x00000602, 0x00000000 },
- { 0x05810010, 0x200035ac, 0x028d2440, 0x000005d2 },
- { 0x05810010, 0x200035ac, 0x008d2460, 0x000005d2 },
- { 0x00818022, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x00800040, 0x2560462d, 0x00b19810, 0x00b19800 },
- { 0x00800040, 0x238045ad, 0x008d0520, 0x00b19c00 },
- { 0x00800040, 0x24003d8c, 0x00b10400, 0x00040004 },
- { 0x00800040, 0x23a0458d, 0x00b10400, 0x00b19810 },
- { 0x00800048, 0x24003dac, 0x008d0560, 0x00020002 },
- { 0x80800008, 0x43c03d91, 0x00b10400, 0x00030003 },
- { 0x00800040, 0x24003dac, 0x00b103a0, 0xfffefffe },
- { 0x80800008, 0x43603d91, 0x00b10400, 0x00020002 },
- { 0x00800040, 0x2400362c, 0x00b19c10, 0x00b10380 },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x00b103a0 },
- { 0x80800008, 0x43403d91, 0x00b10400, 0x00030003 },
- { 0x00800001, 0xb8100231, 0x00ae03c0, 0x00000000 },
- { 0x00800001, 0xb8200231, 0x00ae0360, 0x00000000 },
- { 0x00800001, 0xb8300231, 0x00ae0340, 0x00000000 },
- { 0x00808024, 0x34001c00, 0x00001400, 0x0001000e },
- { 0x00800040, 0x2400362c, 0x00b19820, 0x008d0520 },
- { 0x00800040, 0x2400458c, 0x00b10400, 0x00b19c10 },
- { 0x00800040, 0x24003d8c, 0x00b10400, 0x00020002 },
- { 0x80800008, 0x43403d91, 0x00b10400, 0x00020002 },
- { 0x00800001, 0xb8300231, 0x00ae0340, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00818022, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x00800040, 0x2580462d, 0x00b19c20, 0x00b19c30 },
- { 0x00800040, 0x238045ad, 0x008d0540, 0x008d04b0 },
- { 0x00800040, 0x24003d8c, 0x00b10400, 0x00040004 },
- { 0x00800040, 0x23a0458d, 0x00b10400, 0x00b19c20 },
- { 0x00800048, 0x24003dac, 0x008d0580, 0x00020002 },
- { 0x80800008, 0x43c03d91, 0x00b10400, 0x00030003 },
- { 0x00800040, 0x24003dac, 0x00b103a0, 0xfffefffe },
- { 0x80800008, 0x43603d91, 0x00b10400, 0x00020002 },
- { 0x00800040, 0x2400362c, 0x008d04a0, 0x00b10380 },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x00b103a0 },
- { 0x80800008, 0x43403d91, 0x00b10400, 0x00030003 },
- { 0x00800001, 0xbc200231, 0x00ae03c0, 0x00000000 },
- { 0x00800001, 0xbc100231, 0x00ae0360, 0x00000000 },
- { 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
- { 0x00808024, 0x34001c00, 0x00001400, 0x0001000e },
- { 0x00800040, 0x2400362c, 0x008d04a0, 0x008d0540 },
- { 0x00800040, 0x2400458c, 0x00b10400, 0x00b19c10 },
- { 0x00800040, 0x24003d8c, 0x00b10400, 0x00020002 },
- { 0x80800008, 0x43403d91, 0x00b10400, 0x00020002 },
- { 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00808024, 0x34001c00, 0x00001400, 0x0001005c },
- { 0x00800201, 0x23e0022d, 0x002805d4, 0x00000000 },
- { 0x00800201, 0x23c0022d, 0x002805d4, 0x00000000 },
- { 0x05800010, 0x200035ac, 0x008d2440, 0x000005d2 },
- { 0x05800010, 0x200035ac, 0x028d2460, 0x000005d2 },
- { 0x00800040, 0x24003e2c, 0x00b19820, 0x00040004 },
- { 0x00800048, 0x24003dac, 0x008d0400, 0x00040004 },
- { 0x00800040, 0x2400458c, 0x00b10400, 0x00b1dc10 },
- { 0x00800008, 0x23403d8d, 0x00b10400, 0x00030003 },
- { 0x00810040, 0x23e03dad, 0x008d03e0, 0x00010001 },
- { 0x00200201, 0x25ec018d, 0x00450600, 0x00000000 },
- { 0x00810040, 0x23e03dad, 0x028d03e0, 0x00010001 },
- { 0x03800010, 0x200035ac, 0x008d0340, 0x008d03e0 },
- { 0x05800010, 0x200035ac, 0x028d0340, 0x008d43e0 },
- { 0x00800042, 0x24c0462d, 0x00b19830, 0x00b19c00 },
- { 0x00810001, 0x234001ad, 0x008d03e0, 0x00000000 },
- { 0x00810001, 0x234001ad, 0x028d43e0, 0x00000000 },
- { 0x00200201, 0x260001ac, 0x004505ec, 0x00000000 },
- { 0x80800040, 0x43603631, 0x00b19830, 0x008d0340 },
- { 0x80800040, 0x43403631, 0x00b19c00, 0x008d4340 },
- { 0x00800001, 0xb8300231, 0x00ae0360, 0x00000000 },
- { 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
- { 0x00818022, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00800040, 0x2400362c, 0x00b19810, 0x008d04c0 },
- { 0x00800048, 0x24003e2c, 0x00b19820, 0xfffefffe },
- { 0x00800008, 0x23603d8d, 0x00b10400, 0x00010001 },
- { 0x03800010, 0x200035ac, 0x008d0360, 0x008d03c0 },
- { 0x05800010, 0x200035ac, 0x028d0360, 0x008d43c0 },
- { 0x00810001, 0x236001ad, 0x008d03c0, 0x00000000 },
- { 0x00810001, 0x236001ad, 0x028d43c0, 0x00000000 },
- { 0x00000201, 0x260201ac, 0x000005ee, 0x00000000 },
- { 0x80800040, 0x43603631, 0x00b19820, 0x008d0360 },
- { 0x00800001, 0xb8200231, 0x00ae0360, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00818022, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00800040, 0x2400362c, 0x00b19c20, 0x008d04c0 },
- { 0x00800048, 0x24003e2c, 0x00b19c10, 0xfffefffe },
- { 0x00800008, 0x23603d8d, 0x00b10400, 0x00010001 },
- { 0x03800010, 0x200035ac, 0x008d0360, 0x008d03c0 },
- { 0x05800010, 0x200035ac, 0x028d0360, 0x008d43c0 },
- { 0x00810001, 0x236001ad, 0x008d03c0, 0x00000000 },
- { 0x00810001, 0x236001ad, 0x028d43c0, 0x00000000 },
- { 0x80800040, 0x43603631, 0x00b19c10, 0x008d0360 },
- { 0x00800001, 0xbc100231, 0x00ae0360, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x34000020, 0x000007c0, 0x00000000 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x206601ed, 0x00000000, 0x00030003 },
- { 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
- { 0x00000001, 0x206801ed, 0x00000000, 0x01400140 },
- { 0x00000001, 0x22600169, 0x00000000, 0x00030003 },
- { 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
- { 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
- { 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
- { 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
- { 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
- { 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
- { 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
- { 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
- { 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
- { 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
- { 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
- { 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
- { 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc4 },
- { 0x00000801, 0x208c00e5, 0x00000000, 0xffffffc8 },
- { 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
- { 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
- { 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
- { 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
- { 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
- { 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
- { 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
- { 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
- { 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
- { 0x00800001, 0x240001ac, 0x00000068, 0x00000000 },
- { 0x00000048, 0x22a03dad, 0x00000056, 0x00040004 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffff2 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
- { 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
- { 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
- { 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
- { 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
- { 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
- { 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
- { 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
- { 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
- { 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
- { 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
- { 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
- { 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
- { 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
- { 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
- { 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
- { 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
- { 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
- { 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
- { 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
- { 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
- { 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00600401, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000c01, 0x26140061, 0x00000000, 0x01800000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000801, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00000040, 0x2078252d, 0x00000026, 0x00004280 },
- { 0x00400001, 0x26000231, 0x00000078, 0x00000000 },
- { 0x00600031, 0x26201c21, 0x308d0600, 0x02000002 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffffe8 },
- { 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
- { 0x01600031, 0x20001c24, 0x708d0000, 0x82000012 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00600009, 0x25c03dad, 0x00050034, 0x00040004 },
- { 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
- { 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
- { 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
- { 0x00000041, 0x27e82c21, 0x000005e4, 0x00400040 },
- { 0x00000001, 0x240001ec, 0x00000000, 0x01400140 },
- { 0x00000048, 0x20263dad, 0x00000036, 0x00040004 },
- { 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
- { 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
- { 0x00800001, 0x2220022d, 0x000d002c, 0x00000000 },
- { 0x00600040, 0x22303dad, 0x008d0230, 0x00080008 },
- { 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
- { 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
- { 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
- { 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
- { 0x000b0220, 0x34001c00, 0x02001400, 0x00000126 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000124 },
- { 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
- { 0x00000001, 0x22000060, 0x00000000, 0x0248a002 },
- { 0x02600031, 0x20c00021, 0x408d07e0, 0x00000200 },
- { 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005ca, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
- { 0x00000001, 0x22000060, 0x00000000, 0x02186004 },
- { 0x02600031, 0x20800021, 0x408d07e0, 0x00000200 },
- { 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
- { 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
- { 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
- { 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
- { 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
- { 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
- { 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
- { 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
- { 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
- { 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
- { 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
- { 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
- { 0x00800008, 0x2340352d, 0x00009050, 0x008d0220 },
- { 0x00800008, 0x2360352d, 0x00009052, 0x008d0220 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00200401, 0x25d0022d, 0x004590c0, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990a0, 0x00000000 },
- { 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000fc },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00410041 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
- { 0x00200401, 0x25d0022d, 0x004590c8, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990b0, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000ee },
- { 0x00800008, 0x2340352d, 0x00009042, 0x008d0220 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00200401, 0x25d0022d, 0x004590c4, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990a4, 0x00000000 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
- { 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000d8 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
- { 0x00200401, 0x25d0022d, 0x004590cc, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990b4, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000ca },
- { 0x00000401, 0x27e001a1, 0x000005c4, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005c6, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
- { 0x00600401, 0x2340012d, 0x00890040, 0x00000000 },
- { 0x00600801, 0x2350012d, 0x00890048, 0x00000000 },
- { 0x00600001, 0x204001aa, 0x00270340, 0x00000000 },
- { 0x00600001, 0x205001aa, 0x00270350, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x04082004 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
- { 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
- { 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
- { 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
- { 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
- { 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
- { 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
- { 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
- { 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
- { 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
- { 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
- { 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
- { 0x00800008, 0x2340352d, 0x00009054, 0x008d0220 },
- { 0x00800008, 0x2360352d, 0x00009056, 0x008d0220 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00800080 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00200401, 0x25d0022d, 0x004590c2, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990a8, 0x00000000 },
- { 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00810081 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
- { 0x00200401, 0x25d0022d, 0x004590ca, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990b8, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000078 },
- { 0x00800008, 0x2340352d, 0x00009048, 0x008d0220 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00200401, 0x25d0022d, 0x004590c4, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990ac, 0x00000000 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
- { 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000062 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
- { 0x00200401, 0x25d0022d, 0x004590cc, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990bc, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000054 },
- { 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
- { 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
- { 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0a082004 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005ca, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
- { 0x00600001, 0x20400022, 0x008d0080, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0418a004 },
- { 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
- { 0x00600401, 0x2340012d, 0x008500cc, 0x00000000 },
- { 0x00600801, 0x2350012d, 0x0085010c, 0x00000000 },
- { 0x00800001, 0x236001ad, 0x002e0340, 0x00000000 },
- { 0x00600001, 0x202000a2, 0x008d0360, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
- { 0x00800031, 0x20001d28, 0x608d07e0, 0x04080020 },
- { 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
- { 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
- { 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
- { 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
- { 0x00000440, 0x27e03da1, 0x000005c0, 0x000c000c },
- { 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
- { 0x02600031, 0x23401c25, 0x408d07e0, 0x02186004 },
- { 0x00800001, 0x236001ad, 0x002e0340, 0x00000000 },
- { 0x00600001, 0x202000a2, 0x008d0360, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
- { 0x00800031, 0x20001d28, 0x608d07e0, 0x04080020 },
- { 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
- { 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
- { 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
- { 0x00600040, 0x2400462d, 0x00ae9c00, 0x00aed810 },
- { 0x00600040, 0x2340462d, 0x00ae9800, 0x00aed810 },
- { 0x00600040, 0x2360462d, 0x00ae9c10, 0x00aedc00 },
- { 0x05810010, 0x200035ac, 0x008d2400, 0x000005d0 },
- { 0x05810010, 0x200035ac, 0x008d2340, 0x000005d2 },
- { 0x05810010, 0x200035ac, 0x008d2360, 0x000005d2 },
- { 0x00618022, 0x34001c00, 0x00001400, 0x00000038 },
- { 0x00618022, 0x34001c00, 0x02001400, 0x00000016 },
- { 0x00600040, 0x24003e2c, 0x00ae9c10, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x00ae9800, 0x00020002 },
- { 0x00600040, 0x2400458c, 0x008d0400, 0x00ae9810 },
- { 0x80600008, 0x43403d91, 0x008d0400, 0x00020002 },
- { 0x00600040, 0x24003e2c, 0x00ae9800, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x00ae9c10, 0x00020002 },
- { 0x00600040, 0x2400458c, 0x008d0400, 0x00ae9c00 },
- { 0x80600008, 0x43603d91, 0x008d0400, 0x00020002 },
- { 0x00600001, 0xd8100231, 0x00ae0340, 0x00000000 },
- { 0x00600001, 0xdc000231, 0x00ae0360, 0x00000000 },
- { 0x00608024, 0x34001c00, 0x00001400, 0x00010020 },
- { 0x00600201, 0x2400022c, 0x002405d4, 0x00000000 },
- { 0x00600040, 0x23e03d8d, 0x008d0400, 0x00010001 },
- { 0x00600040, 0x24003e2c, 0x00ae9800, 0x00040004 },
- { 0x00600048, 0x24003dac, 0x008d0400, 0x00040004 },
- { 0x00600040, 0x2400458c, 0x008d0400, 0x00aedc10 },
- { 0x00600008, 0x23403d8d, 0x008d0400, 0x00030003 },
- { 0x03600010, 0x200035ac, 0x008d0340, 0x008d03e0 },
- { 0x05600010, 0x200035ac, 0x028d0340, 0x008d43e0 },
- { 0x00610001, 0x234001ad, 0x008d03e0, 0x00000000 },
- { 0x00610001, 0x234001ad, 0x028d43e0, 0x00000000 },
- { 0x80600040, 0x43603631, 0x00ae9810, 0x008d0340 },
- { 0x80600040, 0x43403631, 0x00ae9c00, 0x008d4340 },
- { 0x00600001, 0xd8100231, 0x00ae0360, 0x00000000 },
- { 0x00600001, 0xdc000231, 0x00ae0340, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x34000020, 0x000007c0, 0x00000000 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x206601ed, 0x00000000, 0x00030003 },
- { 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
- { 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
- { 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
- { 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
- { 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
- { 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
- { 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
- { 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
- { 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
- { 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
- { 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
- { 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
- { 0x00000001, 0x22a00169, 0x00000000, 0x01400140 },
- { 0x00000040, 0x20283c22, 0x00000008, 0x00200020 },
- { 0x00000001, 0x203801e2, 0x00000000, 0x00010001 },
- { 0x00800001, 0x204001ae, 0x00b10020, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x000002a0, 0x00010001 },
- { 0x00800031, 0x20000128, 0x608d07e0, 0x00000200 },
- { 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
- { 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
- { 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
- { 0x00000001, 0x22a00169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22600169, 0x00000000, 0x00020002 },
- { 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
- { 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc6 },
- { 0x00000801, 0x208c00e5, 0x00000000, 0xffffffca },
- { 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
- { 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
- { 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
- { 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
- { 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
- { 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
- { 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
- { 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
- { 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
- { 0x00000041, 0x22a03dad, 0x00000056, 0x00040004 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffff4 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
- { 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
- { 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
- { 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
- { 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
- { 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
- { 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
- { 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
- { 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
- { 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
- { 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
- { 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
- { 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
- { 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
- { 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
- { 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
- { 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
- { 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
- { 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
- { 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
- { 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
- { 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000006 },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffff6 },
- { 0x05000010, 0x200035ac, 0x00000240, 0x00000026 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffffc },
- { 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
- { 0x01600031, 0x20001c24, 0x708d0000, 0x82000000 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00600009, 0x25c03dad, 0x00050034, 0x00040004 },
- { 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
- { 0x00000041, 0x20263d29, 0x00000036, 0x00040004 },
- { 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
- { 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
- { 0x00000041, 0x27e82c21, 0x000005e4, 0x00400040 },
- { 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
- { 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
- { 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
- { 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
- { 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
- { 0x000b0220, 0x34001c00, 0x02001400, 0x0000018c },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000018a },
- { 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00200401, 0x27e001a1, 0x004505c0, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
- { 0x00010001, 0x22000060, 0x02000000, 0x0288e701 },
- { 0x00110001, 0x22000060, 0x02000000, 0x0288e601 },
- { 0x01600031, 0x20c00021, 0x408d07e0, 0x00000200 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
- { 0x00010001, 0x22000060, 0x02000000, 0x02286703 },
- { 0x00110001, 0x22000060, 0x02000000, 0x02286603 },
- { 0x03600031, 0x20800021, 0x408d07e0, 0x00000200 },
- { 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
- { 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
- { 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
- { 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
- { 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
- { 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
- { 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
- { 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
- { 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
- { 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
- { 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
- { 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
- { 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
- { 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
- { 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
- { 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
- { 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
- { 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
- { 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
- { 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
- { 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
- { 0x00000008, 0x25e83e2d, 0x00009080, 0x00020002 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00200401, 0x25d0022d, 0x00459080, 0x00000000 },
- { 0x00200c01, 0x25d80129, 0x00459050, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699060, 0x00000000 },
- { 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xfffffb8c },
- { 0x00000008, 0x25e83e2d, 0x00009084, 0x00020002 },
- { 0x00200401, 0x25d0022d, 0x00459084, 0x00000000 },
- { 0x00000801, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00000401, 0x25d80129, 0x00009040, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699064, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xfffffb76 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
- { 0x00000401, 0x25d80129, 0x00009042, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699068, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xfffffb68 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
- { 0x00000401, 0x25d80129, 0x00009044, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x0069906c, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xfffffb5a },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00200401, 0x27e001a1, 0x004505c4, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
- { 0x00800401, 0x23400231, 0x00a90040, 0x00000000 },
- { 0x00800801, 0x23500231, 0x00a90044, 0x00000000 },
- { 0x00800401, 0x23600231, 0x00a90048, 0x00000000 },
- { 0x00800801, 0x23700231, 0x00a9004c, 0x00000000 },
- { 0x00800001, 0x20400232, 0x002b0340, 0x00000000 },
- { 0x00800001, 0x20500232, 0x002b0350, 0x00000000 },
- { 0x00800001, 0x20600232, 0x002b0360, 0x00000000 },
- { 0x00800001, 0x20700232, 0x002b0370, 0x00000000 },
- { 0x00010001, 0x22000060, 0x02000000, 0x06082703 },
- { 0x00110001, 0x22000060, 0x02000000, 0x06082603 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
- { 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
- { 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
- { 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
- { 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
- { 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
- { 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
- { 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
- { 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
- { 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
- { 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
- { 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
- { 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
- { 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
- { 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
- { 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
- { 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
- { 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
- { 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
- { 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
- { 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
- { 0x00000008, 0x25e83e2d, 0x00009082, 0x00020002 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00800080 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00200401, 0x25d0022d, 0x00459082, 0x00000000 },
- { 0x00200c01, 0x25d80129, 0x00459054, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699070, 0x00000000 },
- { 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xfffffaea },
- { 0x00000008, 0x25e83e2d, 0x00009084, 0x00020002 },
- { 0x00200401, 0x25d0022d, 0x00459084, 0x00000000 },
- { 0x00000801, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00000401, 0x25d80129, 0x00009046, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699074, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xfffffad4 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
- { 0x00000401, 0x25d80129, 0x00009048, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699078, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xfffffac6 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
- { 0x00000401, 0x25d80129, 0x0000904a, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x0069907c, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xfffffab8 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00200401, 0x27e001a1, 0x004505c0, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
- { 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
- { 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
- { 0x00802001, 0x20c00022, 0x008d0140, 0x00000000 },
- { 0x00802001, 0x21000022, 0x008d0180, 0x00000000 },
- { 0x00010001, 0x22000060, 0x02000000, 0x12082703 },
- { 0x00110001, 0x22000060, 0x02000000, 0x12082603 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
- { 0x00802001, 0x20400022, 0x008d0080, 0x00000000 },
- { 0x00010001, 0x22000060, 0x02000000, 0x0618a703 },
- { 0x00110001, 0x22000060, 0x02000000, 0x0618a603 },
- { 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
- { 0x00800401, 0x23400231, 0x00a900cc, 0x00000000 },
- { 0x00800801, 0x23500231, 0x00a9010c, 0x00000000 },
- { 0x00800401, 0x23600231, 0x00a9014c, 0x00000000 },
- { 0x00800801, 0x23700231, 0x00a9018c, 0x00000000 },
- { 0x00800401, 0x23800231, 0x00cf0340, 0x00000000 },
- { 0x00800801, 0x23900231, 0x00cf0341, 0x00000000 },
- { 0x00800401, 0x23a00231, 0x00cf0342, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00cf0343, 0x00000000 },
- { 0x00802001, 0x202000a2, 0x008d0380, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
- { 0x00800031, 0x20001d28, 0x608d07e0, 0x06080020 },
- { 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
- { 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
- { 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
- { 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000440, 0x27e03da1, 0x000005c0, 0x000c000c },
- { 0x00000c01, 0x27e401a1, 0x000005c2, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x02286003 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x00010008 },
- { 0x00010001, 0x22000060, 0x02000000, 0x02286703 },
- { 0x00110001, 0x22000060, 0x02000000, 0x02286603 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x02600031, 0x23400025, 0x408d07e0, 0x00000200 },
- { 0x00800401, 0x23800231, 0x00cf0340, 0x00000000 },
- { 0x00800801, 0x23900231, 0x00cf0341, 0x00000000 },
- { 0x00800401, 0x23a00231, 0x00cf0342, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00cf0343, 0x00000000 },
- { 0x00802001, 0x202000a2, 0x008d0380, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
- { 0x00800031, 0x20001d28, 0x608d07e0, 0x06080020 },
- { 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
- { 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
- { 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x206601ed, 0x00000000, 0x00030003 },
- { 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
- { 0x00000001, 0x206801ed, 0x00000000, 0x01400140 },
- { 0x00000001, 0x22600169, 0x00000000, 0x00030003 },
- { 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
- { 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
- { 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
- { 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
- { 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
- { 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
- { 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
- { 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
- { 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
- { 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
- { 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
- { 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
- { 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc4 },
- { 0x00000801, 0x208c00e5, 0x00000000, 0xffffffc8 },
- { 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
- { 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
- { 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
- { 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
- { 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
- { 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
- { 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
- { 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
- { 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
- { 0x00800001, 0x240001ac, 0x00000068, 0x00000000 },
- { 0x00000048, 0x22a03dad, 0x00000056, 0x00040004 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffff2 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
- { 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
- { 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
- { 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
- { 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
- { 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
- { 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
- { 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
- { 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
- { 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
- { 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
- { 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
- { 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
- { 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
- { 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
- { 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
- { 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
- { 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
- { 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
- { 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
- { 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
- { 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00600401, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000c01, 0x26140061, 0x00000000, 0x01800000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000801, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00000040, 0x2078252d, 0x00000026, 0x00004280 },
- { 0x00400001, 0x26000231, 0x00000078, 0x00000000 },
- { 0x00600031, 0x26201c21, 0x308d0600, 0x02000002 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffffe8 },
- { 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
- { 0x01600031, 0x20001c24, 0x708d0000, 0x82000012 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00600009, 0x25c03dad, 0x00050034, 0x00040004 },
- { 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
- { 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
- { 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
- { 0x00000041, 0x27e82c21, 0x000005e4, 0x00400040 },
- { 0x00000001, 0x240001ec, 0x00000000, 0x01400140 },
- { 0x00000048, 0x20263dad, 0x00000036, 0x00040004 },
- { 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
- { 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
- { 0x00800001, 0x2220022d, 0x000d002c, 0x00000000 },
- { 0x00600040, 0x22303dad, 0x008d0230, 0x00080008 },
- { 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
- { 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
- { 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
- { 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
- { 0x000b0220, 0x34001c00, 0x02001400, 0x0000013a },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000138 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
- { 0x00010001, 0x22000060, 0x02000000, 0x0248e702 },
- { 0x00110001, 0x22000060, 0x02000000, 0x0248e602 },
- { 0x02600031, 0x20c00021, 0x408d07e0, 0x00000200 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005ca, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
- { 0x00010001, 0x22000060, 0x02000000, 0x02186704 },
- { 0x00110001, 0x22000060, 0x02000000, 0x02186604 },
- { 0x02600031, 0x20800021, 0x408d07e0, 0x00000200 },
- { 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
- { 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
- { 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
- { 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
- { 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
- { 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
- { 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
- { 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
- { 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
- { 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
- { 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
- { 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
- { 0x00800008, 0x2340352d, 0x00009050, 0x008d0220 },
- { 0x00800008, 0x2360352d, 0x00009052, 0x008d0220 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00200401, 0x25d0022d, 0x004590c0, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990a0, 0x00000000 },
- { 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffc0c },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00410041 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
- { 0x00200401, 0x25d0022d, 0x004590c8, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990b0, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffbfe },
- { 0x00800008, 0x2340352d, 0x00009042, 0x008d0220 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00200401, 0x25d0022d, 0x004590c4, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990a4, 0x00000000 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
- { 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffbe8 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
- { 0x00200401, 0x25d0022d, 0x004590cc, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990b4, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffbda },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c4, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005c6, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
- { 0x00600401, 0x2340012d, 0x00890040, 0x00000000 },
- { 0x00600801, 0x2350012d, 0x00890048, 0x00000000 },
- { 0x00600001, 0x204001aa, 0x00270340, 0x00000000 },
- { 0x00600001, 0x205001aa, 0x00270350, 0x00000000 },
- { 0x00010001, 0x22000060, 0x02000000, 0x04082704 },
- { 0x00110001, 0x22000060, 0x02000000, 0x04082604 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
- { 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
- { 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
- { 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
- { 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
- { 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
- { 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
- { 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
- { 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
- { 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
- { 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
- { 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
- { 0x00800008, 0x2340352d, 0x00009054, 0x008d0220 },
- { 0x00800008, 0x2360352d, 0x00009056, 0x008d0220 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00800080 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00200401, 0x25d0022d, 0x004590c2, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990a8, 0x00000000 },
- { 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffb92 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00810081 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
- { 0x00200401, 0x25d0022d, 0x004590ca, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990b8, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffb84 },
- { 0x00800008, 0x2340352d, 0x00009048, 0x008d0220 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00200401, 0x25d0022d, 0x004590c4, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990ac, 0x00000000 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
- { 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffb6e },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
- { 0x00200401, 0x25d0022d, 0x004590cc, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990bc, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffb60 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
- { 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
- { 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
- { 0x00010001, 0x22000060, 0x02000000, 0x0a082704 },
- { 0x00110001, 0x22000060, 0x02000000, 0x0a082604 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005ca, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
- { 0x00600001, 0x20400022, 0x008d0080, 0x00000000 },
- { 0x00010001, 0x22000060, 0x02000000, 0x0418a704 },
- { 0x00110001, 0x22000060, 0x02000000, 0x0418a604 },
- { 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
- { 0x00600401, 0x2340012d, 0x008500cc, 0x00000000 },
- { 0x00600801, 0x2350012d, 0x0085010c, 0x00000000 },
- { 0x00800001, 0x236001ad, 0x002e0340, 0x00000000 },
- { 0x00600001, 0x202000a2, 0x008d0360, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
- { 0x00800031, 0x20001d28, 0x608d07e0, 0x04080020 },
- { 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
- { 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
- { 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
- { 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000440, 0x27e03da1, 0x000005c0, 0x000c000c },
- { 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x02186004 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x00010008 },
- { 0x00010001, 0x22000060, 0x02000000, 0x02186704 },
- { 0x00110001, 0x22000060, 0x02000000, 0x02186604 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x02600031, 0x23400025, 0x408d07e0, 0x00000200 },
- { 0x00800001, 0x236001ad, 0x002e0340, 0x00000000 },
- { 0x00600001, 0x202000a2, 0x008d0360, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
- { 0x00800031, 0x20001d28, 0x608d07e0, 0x04080020 },
- { 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
- { 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
- { 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x206601ed, 0x00000000, 0x00010001 },
- { 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
- { 0x00000001, 0x22600169, 0x00000000, 0x00010001 },
- { 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
- { 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
- { 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
- { 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
- { 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
- { 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
- { 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
- { 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
- { 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
- { 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
- { 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
- { 0x00000001, 0x22a00169, 0x00000000, 0x01400140 },
- { 0x00000040, 0x20283c22, 0x00000008, 0x00200020 },
- { 0x00000001, 0x203801e2, 0x00000000, 0x00010001 },
- { 0x00800001, 0x204001ae, 0x00b10020, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x000002a0, 0x00010001 },
- { 0x00800031, 0x20000128, 0x608d07e0, 0x00000200 },
- { 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
- { 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
- { 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
- { 0x00000001, 0x22a00169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22600169, 0x00000000, 0x00020002 },
- { 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
- { 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc6 },
- { 0x00000801, 0x208c00e5, 0x00000000, 0xffffffca },
- { 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
- { 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
- { 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
- { 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
- { 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
- { 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
- { 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
- { 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
- { 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
- { 0x00000041, 0x22a03dad, 0x00000056, 0x00040004 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffff4 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
- { 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
- { 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
- { 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
- { 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
- { 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
- { 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
- { 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
- { 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
- { 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
- { 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
- { 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
- { 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
- { 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
- { 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
- { 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
- { 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
- { 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
- { 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
- { 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
- { 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
- { 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000006 },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffff6 },
- { 0x05000010, 0x200035ac, 0x00000240, 0x00000026 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffffc },
- { 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
- { 0x01600031, 0x20001c24, 0x708d0000, 0x82000000 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00400441, 0x45c03dad, 0x00000034, 0x00100010 },
- { 0x00400841, 0x45c23dad, 0x00000036, 0x00200020 },
- { 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
- { 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
- { 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
- { 0x00000041, 0x25e42c21, 0x000005e4, 0x00800080 },
- { 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
- { 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
- { 0x00000005, 0x202a3dad, 0x0000002a, 0xfffdfffd },
- { 0x02000005, 0x20002d2c, 0x0200002a, 0x00020002 },
- { 0x00000001, 0x27e80021, 0x000005e4, 0x00000000 },
- { 0x00010040, 0x27e83c21, 0x020007e8, 0x00400040 },
- { 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
- { 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
- { 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
- { 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
- { 0x00000005, 0x25ec2e29, 0x00009002, 0x000a000a },
- { 0x00000005, 0x25ea2e29, 0x00009002, 0x00060006 },
- { 0x000b0220, 0x34001c00, 0x02001400, 0x00000252 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000250 },
- { 0x01000010, 0x20003d2c, 0x000005ec, 0x00080008 },
- { 0x00000005, 0x25e03d8d, 0x00000600, 0x00010001 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00200401, 0x27e001a5, 0x004505c0, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0288a001 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
- { 0x00010001, 0x22000060, 0x02000000, 0x0288e701 },
- { 0x00110001, 0x22000060, 0x02000000, 0x0288e601 },
- { 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x01600031, 0x20c00021, 0x408d07e0, 0x00000200 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00200401, 0x27e001a1, 0x004505c4, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x02286003 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
- { 0x00010001, 0x22000060, 0x02000000, 0x02286703 },
- { 0x00110001, 0x22000060, 0x02000000, 0x02286603 },
- { 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x02600031, 0x23400025, 0x408d07e0, 0x00000200 },
- { 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
- { 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
- { 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
- { 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
- { 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
- { 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
- { 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
- { 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
- { 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
- { 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
- { 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
- { 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
- { 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
- { 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
- { 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
- { 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
- { 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
- { 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
- { 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
- { 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
- { 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
- { 0x00800401, 0x20400231, 0x00cf0340, 0x00000000 },
- { 0x00800801, 0x20500231, 0x00cf0341, 0x00000000 },
- { 0x00800401, 0x20600231, 0x00cf0342, 0x00000000 },
- { 0x00800801, 0x20700231, 0x00cf0343, 0x00000000 },
- { 0x01600010, 0x20003d2c, 0x000005ea, 0x00040004 },
- { 0x01600010, 0x20003d2c, 0x020005ea, 0x00020002 },
- { 0x00800001, 0x21c00229, 0x00009080, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00009081, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00289060, 0x00000000 },
- { 0x00610401, 0x41c00229, 0x00009080, 0x00000000 },
- { 0x00610801, 0x41c20229, 0x00009090, 0x00000000 },
- { 0x00610401, 0x41e00229, 0x00009081, 0x00000000 },
- { 0x00610801, 0x41e20229, 0x00009091, 0x00000000 },
- { 0x00610401, 0x42000229, 0x00249060, 0x00000000 },
- { 0x00610801, 0x42020229, 0x00249098, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
- { 0x00610401, 0x21c00229, 0x02009080, 0x00000000 },
- { 0x00610801, 0x21d00229, 0x02009090, 0x00000000 },
- { 0x00610401, 0x21e00229, 0x02009081, 0x00000000 },
- { 0x00610801, 0x21f00229, 0x02009091, 0x00000000 },
- { 0x00610401, 0x22000229, 0x02249060, 0x00000000 },
- { 0x00610801, 0x22100229, 0x02249098, 0x00000000 },
- { 0x00800008, 0x25a03d29, 0x008d01c0, 0x00020002 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00200001, 0x25d80129, 0x00459050, 0x00000000 },
- { 0x00800040, 0x25a03d29, 0x00b105a0, 0x00020002 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001b4 },
- { 0x00800008, 0x25a03e29, 0x00009084, 0x00020002 },
- { 0x00800001, 0x21c00229, 0x00009084, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00009085, 0x00000000 },
- { 0x00000001, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00800040, 0x25a03d29, 0x00b105a0, 0x00020002 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00000001, 0x25d80129, 0x00009040, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00289064, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000019c },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
- { 0x00000001, 0x25d80129, 0x00009042, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00289068, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000018e },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
- { 0x00000001, 0x25d80129, 0x00009044, 0x00000000 },
- { 0x00800001, 0x22000229, 0x0028906c, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000180 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00200401, 0x27e001a1, 0x004505c4, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
- { 0x00800401, 0x23400231, 0x00a90040, 0x00000000 },
- { 0x00800801, 0x23500231, 0x00a90044, 0x00000000 },
- { 0x00800401, 0x23600231, 0x00a90048, 0x00000000 },
- { 0x00800801, 0x23700231, 0x00a9004c, 0x00000000 },
- { 0x00800001, 0x20400232, 0x002b0340, 0x00000000 },
- { 0x00800001, 0x20500232, 0x002b0350, 0x00000000 },
- { 0x00800001, 0x20600232, 0x002b0360, 0x00000000 },
- { 0x00800001, 0x20700232, 0x002b0370, 0x00000000 },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x06082003 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
- { 0x00010001, 0x22000060, 0x02000000, 0x06082703 },
- { 0x00110001, 0x22000060, 0x02000000, 0x06082603 },
- { 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x22000060, 0x00000000, 0x02286003 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
- { 0x01000005, 0x20003dac, 0x020005e0, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000006 },
- { 0x00000440, 0x27e43ca5, 0x000007e4, 0xfffcfffc },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
- { 0x00000040, 0x22000c00, 0x00000200, 0x00200000 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000c },
- { 0x0000000c, 0x27e43da5, 0x000005c2, 0x00010001 },
- { 0x00010001, 0x22000060, 0x02000000, 0x02286703 },
- { 0x00110001, 0x22000060, 0x02000000, 0x02286603 },
- { 0x00000040, 0x27e43ca5, 0x000007e4, 0xfffcfffc },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x01600031, 0x20400021, 0x408d07e0, 0x00000200 },
- { 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
- { 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
- { 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
- { 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
- { 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
- { 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
- { 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
- { 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
- { 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
- { 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
- { 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
- { 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
- { 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
- { 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
- { 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
- { 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
- { 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
- { 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
- { 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
- { 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
- { 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
- { 0x00000001, 0x260201ac, 0x000005e0, 0x00000000 },
- { 0x00800008, 0x25a03e29, 0x00009082, 0x00020002 },
- { 0x00200001, 0x25d80129, 0x00459054, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00009082, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00009083, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00289070, 0x00000000 },
- { 0x00800040, 0x25a03d29, 0x00b105a0, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000050 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000a },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000d4 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000044 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x05000500 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x05400540 },
- { 0x00800001, 0x25000129, 0x00ad0040, 0x00000000 },
- { 0x00800001, 0x25200129, 0x00ad0080, 0x00000000 },
- { 0x00800001, 0x25400129, 0x00ad00c0, 0x00000000 },
- { 0x00800001, 0x25600129, 0x00ad0100, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000c2 },
- { 0x00600001, 0x20600129, 0x008d0510, 0x00000000 },
- { 0x00600001, 0x20800129, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x20a00129, 0x008d0530, 0x00000000 },
- { 0x00600001, 0x20c00129, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x20e00129, 0x008d0550, 0x00000000 },
- { 0x00600001, 0x21000129, 0x008d0560, 0x00000000 },
- { 0x00800008, 0x25a03e29, 0x00009092, 0x00020002 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x05000500 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x05400540 },
- { 0x00800001, 0x25000129, 0x00ad0050, 0x00000000 },
- { 0x00800001, 0x25200129, 0x00ad0090, 0x00000000 },
- { 0x00800001, 0x25400129, 0x00ad00d0, 0x00000000 },
- { 0x00800001, 0x25600129, 0x00ad0110, 0x00000000 },
- { 0x00200001, 0x25d80129, 0x0045905c, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00009092, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00009093, 0x00000000 },
- { 0x00800001, 0x22000229, 0x0028909c, 0x00000000 },
- { 0x00800040, 0x25a03d29, 0x00b105a0, 0x00020002 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000009a },
- { 0x00600001, 0x20700129, 0x008d0510, 0x00000000 },
- { 0x00600001, 0x20900129, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x20b00129, 0x008d0530, 0x00000000 },
- { 0x00600001, 0x20d00129, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x20f00129, 0x008d0550, 0x00000000 },
- { 0x00600001, 0x21100129, 0x008d0560, 0x00000000 },
- { 0x00800008, 0x25a03e29, 0x00009084, 0x00020002 },
- { 0x00800001, 0x21c00229, 0x00009084, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00009085, 0x00000000 },
- { 0x00000001, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00800040, 0x25a03d29, 0x00b105a0, 0x00020002 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00000001, 0x25d80129, 0x00009046, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00289074, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000076 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
- { 0x00000001, 0x25d80129, 0x00009048, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00289078, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000068 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
- { 0x00000001, 0x25d80129, 0x0000904a, 0x00000000 },
- { 0x00800001, 0x22000229, 0x0028907c, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000005a },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00200401, 0x27e001a1, 0x004505c0, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
- { 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
- { 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
- { 0x00802001, 0x20c00022, 0x008d0140, 0x00000000 },
- { 0x00802001, 0x21000022, 0x008d0180, 0x00000000 },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x12082003 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
- { 0x00010001, 0x22000060, 0x02000000, 0x12082703 },
- { 0x00110001, 0x22000060, 0x02000000, 0x12082603 },
- { 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x01800005, 0x20003dac, 0x020005e0, 0x00010001 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
- { 0x00812001, 0x20400022, 0x028d0040, 0x00000000 },
- { 0x00912001, 0x20400022, 0x028d0080, 0x00000000 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0618a003 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000c },
- { 0x0000000c, 0x27e43da5, 0x000005c2, 0x00010001 },
- { 0x00010001, 0x22000060, 0x02000000, 0x0618a703 },
- { 0x00110001, 0x22000060, 0x02000000, 0x0618a603 },
- { 0x00000040, 0x27e43ca5, 0x000007e4, 0xfffcfffc },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
- { 0x01000005, 0x20003dac, 0x0000002a, 0x00020002 },
- { 0x00000006, 0x202a3dad, 0x0000002a, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffd94 },
- { 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
- { 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
- { 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
- { 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00800040, 0x2400462d, 0x00b19c00, 0x00b1d830 },
- { 0x00800040, 0x2340462d, 0x00b19820, 0x00b1d830 },
- { 0x00800040, 0x2360462d, 0x00b19c10, 0x00b1dc00 },
- { 0x05810010, 0x200025ac, 0x008d2400, 0x008d01c0 },
- { 0x05810010, 0x200025ac, 0x008d2340, 0x008d01e0 },
- { 0x05810010, 0x200025ac, 0x008d2360, 0x008d01e0 },
- { 0x00818022, 0x34001c00, 0x00001400, 0x000000c8 },
- { 0x00800040, 0x2440462d, 0x00b19810, 0x00b1d830 },
- { 0x00800040, 0x2460462d, 0x00b19c20, 0x00b1dc00 },
- { 0x00800201, 0x24a00129, 0x00b19820, 0x00000000 },
- { 0x00818022, 0x34001c00, 0x02001400, 0x00000066 },
- { 0x05800010, 0x200025ac, 0x028d2400, 0x008d05a0 },
- { 0x00800040, 0x2520462d, 0x00b19830, 0x00b19820 },
- { 0x00800040, 0x2540462d, 0x00b19c00, 0x00b19c10 },
- { 0x00000201, 0x26000108, 0x00000602, 0x00000000 },
- { 0x05810010, 0x200025ac, 0x028d2440, 0x008d01e0 },
- { 0x05810010, 0x200025ac, 0x008d2460, 0x008d01e0 },
- { 0x00818022, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x00800040, 0x2560462d, 0x00b19810, 0x00b19800 },
- { 0x00800040, 0x238045ad, 0x008d0520, 0x00b19c00 },
- { 0x00800040, 0x24003d8c, 0x00b10400, 0x00040004 },
- { 0x00800040, 0x23a0458d, 0x00b10400, 0x00b19810 },
- { 0x00800048, 0x24003dac, 0x008d0560, 0x00020002 },
- { 0x80800008, 0x43c03d91, 0x00b10400, 0x00030003 },
- { 0x00800040, 0x24003dac, 0x00b103a0, 0xfffefffe },
- { 0x80800008, 0x43603d91, 0x00b10400, 0x00020002 },
- { 0x00800040, 0x2400362c, 0x00b19c10, 0x00b10380 },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x00b103a0 },
- { 0x80800008, 0x43403d91, 0x00b10400, 0x00030003 },
- { 0x00800001, 0xb8100231, 0x00ae03c0, 0x00000000 },
- { 0x00800001, 0xb8200231, 0x00ae0360, 0x00000000 },
- { 0x00800001, 0xb8300231, 0x00ae0340, 0x00000000 },
- { 0x00808024, 0x34001c00, 0x00001400, 0x0001000e },
- { 0x00800040, 0x2400362c, 0x00b19820, 0x008d0520 },
- { 0x00800040, 0x2400458c, 0x00b10400, 0x00b19c10 },
- { 0x00800040, 0x24003d8c, 0x00b10400, 0x00020002 },
- { 0x80800008, 0x43403d91, 0x00b10400, 0x00020002 },
- { 0x00800001, 0xb8300231, 0x00ae0340, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00818022, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x00800040, 0x2580462d, 0x00b19c20, 0x00b19c30 },
- { 0x00800040, 0x238045ad, 0x008d0540, 0x008d04b0 },
- { 0x00800040, 0x24003d8c, 0x00b10400, 0x00040004 },
- { 0x00800040, 0x23a0458d, 0x00b10400, 0x00b19c20 },
- { 0x00800048, 0x24003dac, 0x008d0580, 0x00020002 },
- { 0x80800008, 0x43c03d91, 0x00b10400, 0x00030003 },
- { 0x00800040, 0x24003dac, 0x00b103a0, 0xfffefffe },
- { 0x80800008, 0x43603d91, 0x00b10400, 0x00020002 },
- { 0x00800040, 0x2400362c, 0x008d04a0, 0x00b10380 },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x00b103a0 },
- { 0x80800008, 0x43403d91, 0x00b10400, 0x00030003 },
- { 0x00800001, 0xbc200231, 0x00ae03c0, 0x00000000 },
- { 0x00800001, 0xbc100231, 0x00ae0360, 0x00000000 },
- { 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
- { 0x00808024, 0x34001c00, 0x00001400, 0x0001000e },
- { 0x00800040, 0x2400362c, 0x008d04a0, 0x008d0540 },
- { 0x00800040, 0x2400458c, 0x00b10400, 0x00b19c10 },
- { 0x00800040, 0x24003d8c, 0x00b10400, 0x00020002 },
- { 0x80800008, 0x43403d91, 0x00b10400, 0x00020002 },
- { 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00808024, 0x34001c00, 0x00001400, 0x0001005a },
- { 0x00800001, 0x23e0012d, 0x008d0200, 0x00000000 },
- { 0x05800010, 0x200025ac, 0x008d2440, 0x008d01e0 },
- { 0x05800010, 0x200025ac, 0x028d2460, 0x008d01e0 },
- { 0x00800040, 0x24003e2c, 0x00b19820, 0x00040004 },
- { 0x00800048, 0x24003dac, 0x008d0400, 0x00040004 },
- { 0x00800040, 0x2400458c, 0x00b10400, 0x00b1dc10 },
- { 0x00800008, 0x23403d8d, 0x00b10400, 0x00030003 },
- { 0x00810040, 0x23e03dad, 0x008d03e0, 0x00010001 },
- { 0x00200201, 0x25ec018d, 0x00450600, 0x00000000 },
- { 0x00810040, 0x23e03dad, 0x028d03e0, 0x00010001 },
- { 0x03800010, 0x200035ac, 0x008d0340, 0x008d03e0 },
- { 0x05800010, 0x200035ac, 0x028d0340, 0x008d43e0 },
- { 0x00800042, 0x24c0462d, 0x00b19830, 0x00b19c00 },
- { 0x00810001, 0x234001ad, 0x008d03e0, 0x00000000 },
- { 0x00810001, 0x234001ad, 0x028d43e0, 0x00000000 },
- { 0x00200201, 0x260001ac, 0x004505ec, 0x00000000 },
- { 0x80800040, 0x43603631, 0x00b19830, 0x008d0340 },
- { 0x80800040, 0x43403631, 0x00b19c00, 0x008d4340 },
- { 0x00800001, 0xb8300231, 0x00ae0360, 0x00000000 },
- { 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
- { 0x00818022, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00800040, 0x2400362c, 0x00b19810, 0x008d04c0 },
- { 0x00800048, 0x24003e2c, 0x00b19820, 0xfffefffe },
- { 0x00800008, 0x23603d8d, 0x00b10400, 0x00010001 },
- { 0x03800010, 0x200025ac, 0x008d0360, 0x008d0200 },
- { 0x05800010, 0x200025ac, 0x028d0360, 0x008d4200 },
- { 0x00810001, 0x2360012d, 0x008d0200, 0x00000000 },
- { 0x00810001, 0x2360012d, 0x028d4200, 0x00000000 },
- { 0x00000201, 0x260201ac, 0x000005ee, 0x00000000 },
- { 0x80800040, 0x43603631, 0x00b19820, 0x008d0360 },
- { 0x00800001, 0xb8200231, 0x00ae0360, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00818022, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00800040, 0x2400362c, 0x00b19c20, 0x008d04c0 },
- { 0x00800048, 0x24003e2c, 0x00b19c10, 0xfffefffe },
- { 0x00800008, 0x23603d8d, 0x00b10400, 0x00010001 },
- { 0x03800010, 0x200025ac, 0x008d0360, 0x008d0200 },
- { 0x05800010, 0x200025ac, 0x028d0360, 0x008d4200 },
- { 0x00810001, 0x2360012d, 0x008d0200, 0x00000000 },
- { 0x00810001, 0x2360012d, 0x028d4200, 0x00000000 },
- { 0x80800040, 0x43603631, 0x00b19c10, 0x008d0360 },
- { 0x00800001, 0xbc100231, 0x00ae0360, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x34000020, 0x000007c0, 0x00000000 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x206601ed, 0x00000000, 0x00010001 },
- { 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
- { 0x00000001, 0x206801ed, 0x00000000, 0x01400140 },
- { 0x00000001, 0x22600169, 0x00000000, 0x00030003 },
- { 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
- { 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
- { 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
- { 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
- { 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
- { 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
- { 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
- { 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
- { 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
- { 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
- { 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
- { 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
- { 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc4 },
- { 0x00000801, 0x208c00e5, 0x00000000, 0xffffffc8 },
- { 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
- { 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
- { 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
- { 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
- { 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
- { 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
- { 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
- { 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
- { 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
- { 0x00800001, 0x240001ac, 0x00000068, 0x00000000 },
- { 0x00000048, 0x22a03dad, 0x00000056, 0x00040004 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffff2 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
- { 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
- { 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
- { 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
- { 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
- { 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
- { 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
- { 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
- { 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
- { 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
- { 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
- { 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
- { 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
- { 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
- { 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
- { 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
- { 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
- { 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
- { 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
- { 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
- { 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
- { 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00600401, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000c01, 0x26140061, 0x00000000, 0x01800000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000801, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00000040, 0x2078252d, 0x00000026, 0x00004280 },
- { 0x00400001, 0x26000231, 0x00000078, 0x00000000 },
- { 0x00600031, 0x26201c21, 0x308d0600, 0x02000002 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffffe8 },
- { 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
- { 0x01600031, 0x20001c24, 0x708d0000, 0x82000012 },
- { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00400441, 0x45c03dad, 0x00000034, 0x00100010 },
- { 0x00400841, 0x45c23dad, 0x00000036, 0x00200020 },
- { 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
- { 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
- { 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
- { 0x00000041, 0x25e42c21, 0x000005e4, 0x00800080 },
- { 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
- { 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
- { 0x00000005, 0x202a3dad, 0x0000002a, 0xfffdfffd },
- { 0x00800001, 0x2220022d, 0x000d002c, 0x00000000 },
- { 0x00600040, 0x22303dad, 0x008d0230, 0x00080008 },
- { 0x02000005, 0x20002d2c, 0x0200002a, 0x00020002 },
- { 0x00000001, 0x27e80021, 0x000005e4, 0x00000000 },
- { 0x00010040, 0x27e83c21, 0x020007e8, 0x00400040 },
- { 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
- { 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
- { 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
- { 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
- { 0x00000005, 0x25ec2e29, 0x00009002, 0x000a000a },
- { 0x00000005, 0x25ea2e29, 0x00009002, 0x00060006 },
- { 0x000b0220, 0x34001c00, 0x02001400, 0x00000252 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000250 },
- { 0x01000010, 0x20003d2c, 0x000005ec, 0x00080008 },
- { 0x00000005, 0x25e03d8d, 0x00000600, 0x00010001 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0248a002 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
- { 0x00010001, 0x22000060, 0x02000000, 0x0248e702 },
- { 0x00110001, 0x22000060, 0x02000000, 0x0248e602 },
- { 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x02600031, 0x20c00021, 0x408d07e0, 0x00000200 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c4, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005c6, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x02186004 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
- { 0x00010001, 0x22000060, 0x02000000, 0x02186704 },
- { 0x00110001, 0x22000060, 0x02000000, 0x02186604 },
- { 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x02600031, 0x23400025, 0x408d07e0, 0x00000200 },
- { 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
- { 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
- { 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
- { 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
- { 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
- { 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
- { 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
- { 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
- { 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
- { 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
- { 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
- { 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
- { 0x00800001, 0x204001a9, 0x002e0340, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
- { 0x01000010, 0x20003d2c, 0x020005ea, 0x00040004 },
- { 0x00800008, 0x2340352d, 0x00009050, 0x008d0220 },
- { 0x00800008, 0x2360352d, 0x00009052, 0x008d0220 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000006a },
- { 0x01000010, 0x20003d2c, 0x000005ea, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x02600005, 0x20003dac, 0x00650340, 0x00010001 },
- { 0x02600005, 0x20003dac, 0x02650360, 0x00010001 },
- { 0x00400401, 0x41c00229, 0x000090c0, 0x00000000 },
- { 0x00400801, 0x41c20229, 0x000090e0, 0x00000000 },
- { 0x00400401, 0x41e00229, 0x000090c1, 0x00000000 },
- { 0x00400801, 0x41e20229, 0x000090e1, 0x00000000 },
- { 0x00400401, 0x42000229, 0x006990a0, 0x00000000 },
- { 0x00400801, 0x42020229, 0x006990e8, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000012 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
- { 0x00400401, 0x21c00229, 0x000090c0, 0x00000000 },
- { 0x00400801, 0x21c80229, 0x000090e0, 0x00000000 },
- { 0x00400401, 0x21e00229, 0x000090c1, 0x00000000 },
- { 0x00400801, 0x21e80229, 0x000090e1, 0x00000000 },
- { 0x00400401, 0x22000229, 0x006990a0, 0x00000000 },
- { 0x00400801, 0x22080229, 0x006990e8, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
- { 0x00600001, 0x21c00229, 0x000090c0, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090c1, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490a0, 0x00000000 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001c8 },
- { 0x01400010, 0x20003d2c, 0x000005ea, 0x00040004 },
- { 0x01400010, 0x20003d2c, 0x020005ea, 0x00020002 },
- { 0x00600001, 0x21c00229, 0x000090c8, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090c9, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490b0, 0x00000000 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00410041 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
- { 0x00410401, 0x41c00229, 0x000090c8, 0x00000000 },
- { 0x00410801, 0x41c20229, 0x000090f0, 0x00000000 },
- { 0x00410401, 0x41e00229, 0x000090c9, 0x00000000 },
- { 0x00410801, 0x41e20229, 0x000090f1, 0x00000000 },
- { 0x00410401, 0x42000229, 0x006990b0, 0x00000000 },
- { 0x00410801, 0x42020229, 0x006990f8, 0x00000000 },
- { 0x00410401, 0x21c00229, 0x020090c8, 0x00000000 },
- { 0x00410801, 0x21c80229, 0x020090f0, 0x00000000 },
- { 0x00410401, 0x21e00229, 0x020090c9, 0x00000000 },
- { 0x00410801, 0x21e80229, 0x020090f1, 0x00000000 },
- { 0x00410401, 0x22000229, 0x026990b0, 0x00000000 },
- { 0x00410801, 0x22080229, 0x026990f8, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000019c },
- { 0x00800008, 0x2340352d, 0x00009042, 0x008d0220 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00600001, 0x21c00229, 0x000090c4, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090c5, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490a4, 0x00000000 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
- { 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000184 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00600001, 0x21c00229, 0x000090cc, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090cd, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490b4, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000174 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c4, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005c6, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
- { 0x00600401, 0x2340012d, 0x00890040, 0x00000000 },
- { 0x00600801, 0x2350012d, 0x00890048, 0x00000000 },
- { 0x00600001, 0x204001aa, 0x00270340, 0x00000000 },
- { 0x00600001, 0x205001aa, 0x00270350, 0x00000000 },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x04082004 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
- { 0x00010001, 0x22000060, 0x02000000, 0x04082704 },
- { 0x00110001, 0x22000060, 0x02000000, 0x04082604 },
- { 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
- { 0x00000c0c, 0x27e43da5, 0x000005ca, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x22000060, 0x00000000, 0x02186004 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
- { 0x01000005, 0x20003dac, 0x020005e0, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000006 },
- { 0x00000440, 0x27e43ca5, 0x000007e4, 0xfffefffe },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
- { 0x00000040, 0x22000c00, 0x00000200, 0x00100000 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000c },
- { 0x0000000c, 0x27e43da5, 0x000005c2, 0x00020002 },
- { 0x00010001, 0x22000060, 0x02000000, 0x02186704 },
- { 0x00110001, 0x22000060, 0x02000000, 0x02186604 },
- { 0x00000040, 0x27e43ca5, 0x000007e4, 0xfffefffe },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x02600031, 0x20400021, 0x408d07e0, 0x00000200 },
- { 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
- { 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
- { 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
- { 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
- { 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
- { 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
- { 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
- { 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
- { 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
- { 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
- { 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
- { 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
- { 0x00000001, 0x260201ac, 0x000005e0, 0x00000000 },
- { 0x00800008, 0x2340352d, 0x00009054, 0x008d0220 },
- { 0x00800008, 0x2360352d, 0x00009056, 0x008d0220 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000026 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00600001, 0x21c00229, 0x000090c2, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090c3, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490a8, 0x00000000 },
- { 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000f0 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00410041 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
- { 0x00600001, 0x21c00229, 0x000090ca, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090cb, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490b8, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000e0 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000005c },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x05000500 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x05200520 },
- { 0x00800001, 0x25000129, 0x00ad0040, 0x00000000 },
- { 0x00800001, 0x25200129, 0x00ad00c0, 0x00000000 },
- { 0x00600001, 0x21c00229, 0x000090c2, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090c3, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490a8, 0x00000000 },
- { 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000c6 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x05010501 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x05210521 },
- { 0x00600001, 0x21c00229, 0x000090ca, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090cb, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490b8, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000b6 },
- { 0x00800008, 0x2340352d, 0x0000905c, 0x008d0220 },
- { 0x00800008, 0x2360352d, 0x0000905e, 0x008d0220 },
- { 0x00600001, 0x20600129, 0x008d0510, 0x00000000 },
- { 0x00600001, 0x20c00129, 0x008d0520, 0x00000000 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x05000500 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x05200520 },
- { 0x00800001, 0x25000129, 0x00ad0050, 0x00000000 },
- { 0x00800001, 0x25200129, 0x00ad00d0, 0x00000000 },
- { 0x00600001, 0x21c00229, 0x000090e2, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090e3, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490ec, 0x00000000 },
- { 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000096 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x05010501 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x05210521 },
- { 0x00600001, 0x21c00229, 0x000090f2, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090f3, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490fc, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00600001, 0x20700129, 0x008d0510, 0x00000000 },
- { 0x00600001, 0x20d00129, 0x008d0520, 0x00000000 },
- { 0x00800008, 0x2340352d, 0x00009048, 0x008d0220 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00600001, 0x21c00229, 0x000090c4, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090c5, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490ac, 0x00000000 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
- { 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000006a },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
- { 0x00600001, 0x21c00229, 0x000090cc, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090cd, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490bc, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000005a },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
- { 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
- { 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0a082004 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
- { 0x00010001, 0x22000060, 0x02000000, 0x0a082704 },
- { 0x00110001, 0x22000060, 0x02000000, 0x0a082604 },
- { 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x01600005, 0x20003dac, 0x020005e0, 0x00010001 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005ca, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
- { 0x00610001, 0x20400022, 0x028d0040, 0x00000000 },
- { 0x00710001, 0x20400022, 0x028d0060, 0x00000000 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0418a004 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000c },
- { 0x0000000c, 0x27e43da5, 0x000005c2, 0x00020002 },
- { 0x00010001, 0x22000060, 0x02000000, 0x0418a704 },
- { 0x00110001, 0x22000060, 0x02000000, 0x0418a604 },
- { 0x00000040, 0x27e43ca5, 0x000007e4, 0xfffefffe },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
- { 0x01000005, 0x20003dac, 0x0000002a, 0x00020002 },
- { 0x00000006, 0x202a3dad, 0x0000002a, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffd94 },
- { 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
- { 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
- { 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
- { 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
- { 0x00600040, 0x2400462d, 0x00ae9c00, 0x00aed810 },
- { 0x00600040, 0x2340462d, 0x00ae9800, 0x00aed810 },
- { 0x00600040, 0x2360462d, 0x00ae9c10, 0x00aedc00 },
- { 0x05810010, 0x200025ac, 0x008d2400, 0x008d01c0 },
- { 0x05810010, 0x200025ac, 0x008d2340, 0x008d01e0 },
- { 0x05810010, 0x200025ac, 0x008d2360, 0x008d01e0 },
- { 0x00618022, 0x34001c00, 0x00001400, 0x00000036 },
- { 0x00618022, 0x34001c00, 0x02001400, 0x00000016 },
- { 0x00600040, 0x24003e2c, 0x00ae9c10, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x00ae9800, 0x00020002 },
- { 0x00600040, 0x2400458c, 0x008d0400, 0x00ae9810 },
- { 0x80600008, 0x43403d91, 0x008d0400, 0x00020002 },
- { 0x00600040, 0x24003e2c, 0x00ae9800, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x00ae9c10, 0x00020002 },
- { 0x00600040, 0x2400458c, 0x008d0400, 0x00ae9c00 },
- { 0x80600008, 0x43603d91, 0x008d0400, 0x00020002 },
- { 0x00600001, 0xd8100231, 0x00ae0340, 0x00000000 },
- { 0x00600001, 0xdc000231, 0x00ae0360, 0x00000000 },
- { 0x00608024, 0x34001c00, 0x00001400, 0x0001001e },
- { 0x00600040, 0x23e03d2d, 0x008d0200, 0x00010001 },
- { 0x00600040, 0x24003e2c, 0x00ae9800, 0x00040004 },
- { 0x00600048, 0x24003dac, 0x008d0400, 0x00040004 },
- { 0x00600040, 0x2400458c, 0x008d0400, 0x00aedc10 },
- { 0x00600008, 0x23403d8d, 0x008d0400, 0x00030003 },
- { 0x03600010, 0x200035ac, 0x008d0340, 0x008d03e0 },
- { 0x05600010, 0x200035ac, 0x028d0340, 0x008d43e0 },
- { 0x00610001, 0x234001ad, 0x008d03e0, 0x00000000 },
- { 0x00610001, 0x234001ad, 0x028d43e0, 0x00000000 },
- { 0x80600040, 0x43603631, 0x00ae9810, 0x008d0340 },
- { 0x80600040, 0x43403631, 0x00ae9c00, 0x008d4340 },
- { 0x00600001, 0xd8100231, 0x00ae0360, 0x00000000 },
- { 0x00600001, 0xdc000231, 0x00ae0340, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x34000020, 0x000007c0, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/src/shaders/h264/mc/avc_mc.g4b.gen5 b/src/shaders/h264/mc/avc_mc.g4b.gen5
deleted file mode 100644
index 7048e1f..0000000
--- a/src/shaders/h264/mc/avc_mc.g4b.gen5
+++ /dev/null
@@ -1,5251 +0,0 @@
- { 0x00600001, 0x27c00021, 0x008d0000, 0x00000000 },
- { 0x00200009, 0x27fa3e29, 0x00450064, 0x00040004 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000d4 },
- { 0x00000005, 0x220e3e2c, 0x00000070, 0x000f000f },
- { 0x00000001, 0x26a00221, 0x00009c38, 0x00000000 },
- { 0x00000220, 0x34001400, 0x00001400, 0x000006a0 },
- { 0x00a02001, 0x24000229, 0x00b10624, 0x00000000 },
- { 0x00a02001, 0x24400229, 0x00b10624, 0x00000000 },
- { 0x00a02001, 0x24800229, 0x00b10624, 0x00000000 },
- { 0x00a02001, 0x24c00229, 0x00b10624, 0x00000000 },
- { 0x00a02001, 0x25000229, 0x00b10624, 0x00000000 },
- { 0x00a02001, 0x25400229, 0x00b10624, 0x00000000 },
- { 0x00a02001, 0x25800229, 0x00b10624, 0x00000000 },
- { 0x00a02001, 0x25c00229, 0x00b10624, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00000001, 0x22080060, 0x00000000, 0x06440640 },
- { 0x00a02001, 0x24000229, 0x00009003, 0x00000000 },
- { 0x00a02001, 0x24400229, 0x0000900b, 0x00000000 },
- { 0x00a02001, 0x24800229, 0x00009013, 0x00000000 },
- { 0x00a02001, 0x24c00229, 0x0000901b, 0x00000000 },
- { 0x00a02001, 0x25000229, 0x00009023, 0x00000000 },
- { 0x00a02001, 0x25400229, 0x0000902b, 0x00000000 },
- { 0x00a02001, 0x25800229, 0x00009033, 0x00000000 },
- { 0x00a02001, 0x25c00229, 0x0000903b, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000072 },
- { 0x02600005, 0x20000c20, 0x0000006c, 0x00000002 },
- { 0x00600005, 0x24000c20, 0x0000006c, 0x00000011 },
- { 0x01600007, 0x20000c00, 0x028d0400, 0x00000011 },
- { 0x00780001, 0x26240169, 0x00000000, 0x80808080 },
- { 0x00780001, 0x66430231, 0x028d0624, 0x00000000 },
- { 0x00780001, 0x66630231, 0x028d062c, 0x00000000 },
- { 0x00780001, 0x26240231, 0x00cf0643, 0x00000000 },
- { 0x00780001, 0x262c0231, 0x00cf0663, 0x00000000 },
- { 0x00800040, 0x25e04629, 0x00cf0643, 0x00b10624 },
- { 0x00600040, 0x25e02529, 0x008d05e0, 0x008d05f0 },
- { 0x00400040, 0x25e02529, 0x006905e0, 0x006905e8 },
- { 0x00200040, 0x25e02529, 0x004505e0, 0x004505e4 },
- { 0x00a02040, 0x2400252c, 0x000005e0, 0x000005e2 },
- { 0x00a02040, 0x24003d8c, 0x00b10400, 0x00100010 },
- { 0x00a02008, 0x24003d89, 0x00b10400, 0x00050005 },
- { 0x00a02008, 0x24403d89, 0x00b10400, 0x00050005 },
- { 0x00a02008, 0x24803d89, 0x00b10400, 0x00050005 },
- { 0x00a02008, 0x24c03d89, 0x00b10400, 0x00050005 },
- { 0x00a02008, 0x25003d89, 0x00b10400, 0x00050005 },
- { 0x00a02008, 0x25403d89, 0x00b10400, 0x00050005 },
- { 0x00a02008, 0x25803d89, 0x00b10400, 0x00050005 },
- { 0x00a02008, 0x25c03d89, 0x00b10400, 0x00050005 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000044 },
- { 0x00600041, 0x26806e2d, 0x008d062c, 0x89abcdef },
- { 0x00600041, 0x26906e2d, 0x008d0623, 0xfedcba98 },
- { 0x00600041, 0x26a06e2d, 0x00cf0663, 0x89abcdef },
- { 0x00600041, 0x26b06e2d, 0x00cf0643, 0x0fedcba9 },
- { 0x00000041, 0x26be3e2d, 0x00000623, 0xfff8fff8 },
- { 0x00802040, 0x268035ad, 0x008d4680, 0x008d0690 },
- { 0x00802040, 0x268035ad, 0x008d0680, 0x008d0688 },
- { 0x00802040, 0x268035ad, 0x008d0680, 0x008d0684 },
- { 0x00802040, 0x268035ad, 0x008d0680, 0x008d0682 },
- { 0x00800001, 0x240001ec, 0x00000000, 0x00200020 },
- { 0x00200048, 0x24003dac, 0x00a00680, 0x00050005 },
- { 0x00200008, 0x26e03d8d, 0x00450400, 0x00060006 },
- { 0x00800001, 0x240001ec, 0x00000000, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x00000633, 0x00100010 },
- { 0x00800048, 0x26c03e2d, 0x0000067f, 0x00100010 },
- { 0x00800048, 0x272055ad, 0x000006e0, 0x00b10040 },
- { 0x00600041, 0x268055ad, 0x000006e2, 0x00ae0040 },
- { 0x00600041, 0x26a055ad, 0x000006e2, 0x00ae0041 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00b00680 },
- { 0x80a02008, 0x44003d91, 0x00b10400, 0x00050005 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00b00682 },
- { 0x80a02008, 0x44403d91, 0x00b10400, 0x00050005 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00b00684 },
- { 0x80a02008, 0x44803d91, 0x00b10400, 0x00050005 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00b00686 },
- { 0x80a02008, 0x44c03d91, 0x00b10400, 0x00050005 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00b00688 },
- { 0x80a02008, 0x45003d91, 0x00b10400, 0x00050005 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00b0068a },
- { 0x80a02008, 0x45403d91, 0x00b10400, 0x00050005 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00b0068c },
- { 0x80a02008, 0x45803d91, 0x00b10400, 0x00050005 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00b0068e },
- { 0x80a02008, 0x45c03d91, 0x00b10400, 0x00050005 },
- { 0x00000001, 0x22040060, 0x00000000, 0x00900080 },
- { 0x01000005, 0x20000c20, 0x02000068, 0x00003c00 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000020 },
- { 0x80802040, 0x440045b1, 0x008d8800, 0x00ae0400 },
- { 0x80802040, 0x444045b1, 0x008d8820, 0x00ae0440 },
- { 0x80802040, 0x448045b1, 0x008d8840, 0x00ae0480 },
- { 0x80802040, 0x44c045b1, 0x008d8860, 0x00ae04c0 },
- { 0x80802040, 0x441045b1, 0x008d8880, 0x00ae0410 },
- { 0x80802040, 0x445045b1, 0x008d88a0, 0x00ae0450 },
- { 0x80802040, 0x449045b1, 0x008d88c0, 0x00ae0490 },
- { 0x80802040, 0x44d045b1, 0x008d88e0, 0x00ae04d0 },
- { 0x80802040, 0x450045b1, 0x008d8900, 0x00ae0500 },
- { 0x80802040, 0x454045b1, 0x008d8920, 0x00ae0540 },
- { 0x80802040, 0x458045b1, 0x008d8940, 0x00ae0580 },
- { 0x80802040, 0x45c045b1, 0x008d8960, 0x00ae05c0 },
- { 0x80802040, 0x451045b1, 0x008d8980, 0x00ae0510 },
- { 0x80802040, 0x455045b1, 0x008d89a0, 0x00ae0550 },
- { 0x80802040, 0x459045b1, 0x008d89c0, 0x00ae0590 },
- { 0x80802040, 0x45d045b1, 0x008d89e0, 0x00ae05d0 },
- { 0x00000040, 0x22040c00, 0x00000204, 0x01800180 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000e2 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000018 },
- { 0x00000001, 0x27800021, 0x00000780, 0x00000000 },
- { 0x00000001, 0x27a00021, 0x000007a0, 0x00000000 },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x00200440, 0x27c055a5, 0x004507fa, 0x0045002a },
- { 0x00000801, 0x27c80061, 0x00000000, 0x0000001b },
- { 0x00000040, 0x22000d20, 0x00000062, 0x02186000 },
- { 0x01600031, 0x26200021, 0x408d07c0, 0x00000200 },
- { 0x00000440, 0x27c43ca5, 0x000007c4, 0x00010001 },
- { 0x00000801, 0x27c80061, 0x00000000, 0x000f0003 },
- { 0x00000040, 0x22000c00, 0x00000200, 0x00100000 },
- { 0x02600031, 0x26400021, 0x408d07c0, 0x00000200 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00000008, 0x27fc3dad, 0x000007fc, 0x00010001 },
- { 0x00200440, 0x27c055a5, 0x004507fa, 0x0045002a },
- { 0x00000801, 0x27c80061, 0x00000000, 0x00000013 },
- { 0x00000040, 0x22000c00, 0x00000200, 0xefffc001 },
- { 0x01600031, 0x26200021, 0x408d07c0, 0x00000200 },
- { 0x00000440, 0x27c43ca5, 0x000007c4, 0x00010001 },
- { 0x00000801, 0x27c80061, 0x00000000, 0x00070003 },
- { 0x05600031, 0x26400021, 0x408d07c0, 0x00000200 },
- { 0x00000008, 0x220e3e2c, 0x0000006c, 0x00060006 },
- { 0x00000001, 0x26a002a5, 0x00009c3c, 0x00000000 },
- { 0x00000220, 0x34001400, 0x00001400, 0x000006a0 },
- { 0x02600005, 0x20000c20, 0x0000006c, 0x00000002 },
- { 0x00780001, 0x26240169, 0x00000000, 0x80808080 },
- { 0x02400005, 0x20000c20, 0x0200006c, 0x00000001 },
- { 0x00560001, 0x46420129, 0x02690624, 0x00000000 },
- { 0x02400005, 0x20000c20, 0x0200006c, 0x00000010 },
- { 0x00560001, 0x46520129, 0x0269062c, 0x00000000 },
- { 0x00780001, 0x26240129, 0x00ae0642, 0x00000000 },
- { 0x00800040, 0x24004629, 0x00b10624, 0x00650642 },
- { 0x00600040, 0x24002529, 0x00650400, 0x00650404 },
- { 0x00600040, 0x25202529, 0x00050400, 0x00050404 },
- { 0x00600040, 0x25702529, 0x00050408, 0x0005040c },
- { 0x00560001, 0x26240169, 0x00000000, 0x80808080 },
- { 0x00460001, 0x26240129, 0x028a0652, 0x00000000 },
- { 0x00560001, 0x46520129, 0x02690624, 0x00000000 },
- { 0x02400005, 0x20000c20, 0x0200006c, 0x00000001 },
- { 0x00560001, 0x46420169, 0x02000000, 0x80808080 },
- { 0x00460001, 0x46420129, 0x0069062c, 0x00000000 },
- { 0x00560001, 0x262c0129, 0x008a0642, 0x00000000 },
- { 0x00600040, 0x24004629, 0x008d0624, 0x00650652 },
- { 0x00600040, 0x24104629, 0x00650642, 0x008d062c },
- { 0x00600040, 0x24002529, 0x00650400, 0x00650404 },
- { 0x00600040, 0x25302529, 0x00050408, 0x0005040c },
- { 0x00600040, 0x25602529, 0x00050400, 0x00050404 },
- { 0x00a02040, 0x24003d2c, 0x00b10520, 0x00040004 },
- { 0x00a02008, 0x24003d89, 0x00b10400, 0x00030003 },
- { 0x00a02008, 0x24403d89, 0x00b10400, 0x00030003 },
- { 0x00a02040, 0x24003d2c, 0x00b10560, 0x00040004 },
- { 0x00a02008, 0x24803d89, 0x00b10400, 0x00030003 },
- { 0x00a02008, 0x24c03d89, 0x00b10400, 0x00030003 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000048 },
- { 0x00000001, 0x22080060, 0x00000000, 0x06440640 },
- { 0x00a02001, 0x24000229, 0x00059002, 0x00000000 },
- { 0x00a02001, 0x24400229, 0x0005900a, 0x00000000 },
- { 0x00a02001, 0x24800229, 0x00059012, 0x00000000 },
- { 0x00a02001, 0x24c00229, 0x0005901a, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000003c },
- { 0x00a02001, 0x24000229, 0x00b10624, 0x00000000 },
- { 0x00a02001, 0x24400229, 0x00b10624, 0x00000000 },
- { 0x00a02001, 0x24800229, 0x00b10624, 0x00000000 },
- { 0x00a02001, 0x24c00229, 0x00b10624, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000032 },
- { 0x00600041, 0x26806e2d, 0x008d062c, 0x44332211 },
- { 0x00600041, 0x26906e2d, 0x008d0622, 0xffeeddcc },
- { 0x00600041, 0x26a06e2d, 0x00650652, 0x44332211 },
- { 0x00600041, 0x26b06e2d, 0x00650642, 0x00ffeedd },
- { 0x00200041, 0x26bc3e2d, 0x00450622, 0xfffcfffc },
- { 0x00802040, 0x268035ad, 0x008d0680, 0x008d0690 },
- { 0x00802040, 0x268035ad, 0x008d0680, 0x008d0688 },
- { 0x00802040, 0x268035ad, 0x008d0680, 0x008d0684 },
- { 0x00800001, 0x240001ec, 0x00000000, 0x00200020 },
- { 0x00400048, 0x24003dac, 0x00a50680, 0x00220022 },
- { 0x00400008, 0x26e03d8d, 0x00690400, 0x00060006 },
- { 0x00800001, 0x240001ec, 0x00000000, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x00050632, 0x00100010 },
- { 0x00800048, 0x26c03e2d, 0x0005065e, 0x00100010 },
- { 0x00800048, 0x272055ad, 0x000506e0, 0x00240044 },
- { 0x00600041, 0x268055ad, 0x000506e4, 0x00440044 },
- { 0x00600041, 0x26a055ad, 0x000506e4, 0x00440045 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00050680 },
- { 0x80a02008, 0x44003d91, 0x00b10400, 0x00050005 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00050684 },
- { 0x80a02008, 0x44403d91, 0x00b10400, 0x00050005 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x00050688 },
- { 0x80a02008, 0x44803d91, 0x00b10400, 0x00050005 },
- { 0x00a02040, 0x240035ac, 0x00b10720, 0x0005068c },
- { 0x80a02008, 0x44c03d91, 0x00b10400, 0x00050005 },
- { 0x00000040, 0x22063d8c, 0x00000204, 0x00100010 },
- { 0x80802040, 0x640045b1, 0x008d8880, 0x00cf0400 },
- { 0x80802040, 0x644045b1, 0x008d88a0, 0x00cf0440 },
- { 0x80802040, 0x648045b1, 0x008d88c0, 0x00cf0480 },
- { 0x80802040, 0x64c045b1, 0x008d88e0, 0x00cf04c0 },
- { 0x80802040, 0x640245b1, 0x008d8900, 0x00cf0402 },
- { 0x80802040, 0x644245b1, 0x008d8920, 0x00cf0442 },
- { 0x80802040, 0x648245b1, 0x008d8940, 0x00cf0482 },
- { 0x80802040, 0x64c245b1, 0x008d8960, 0x00cf04c2 },
- { 0x00000401, 0x27c80061, 0x00000000, 0x0007000f },
- { 0x00200801, 0x27c001a1, 0x004507fa, 0x00000000 },
- { 0x00000040, 0x22000c00, 0x00000200, 0x08004000 },
- { 0x00800001, 0x20400232, 0x00d20400, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20420, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20440, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d20460, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d20480, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d204a0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d204c0, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d204e0, 0x00000000 },
- { 0x01600031, 0x27a00021, 0x508d07c0, 0x00000200 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00000401, 0x27c80061, 0x00000000, 0x000f000f },
- { 0x00200801, 0x27c001a1, 0x004507fa, 0x00000000 },
- { 0x00000040, 0x22000c00, 0x00000200, 0x0ff04000 },
- { 0x00000001, 0x22080060, 0x00000000, 0x04400400 },
- { 0x00a02001, 0x20400232, 0x00d29000, 0x00000000 },
- { 0x00a02001, 0x20500232, 0x00d29020, 0x00000000 },
- { 0x00a02001, 0x20800232, 0x00d29080, 0x00000000 },
- { 0x00a02001, 0x20900232, 0x00d290a0, 0x00000000 },
- { 0x00a02001, 0x20c00232, 0x00d29100, 0x00000000 },
- { 0x00a02001, 0x20d00232, 0x00d29120, 0x00000000 },
- { 0x00a02001, 0x21000232, 0x00d29180, 0x00000000 },
- { 0x00a02001, 0x21100232, 0x00d291a0, 0x00000000 },
- { 0x01600031, 0x27800021, 0x508d07c0, 0x00000200 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00600001, 0x27c00021, 0x008d0000, 0x00000000 },
- { 0x00200009, 0x27fa3e29, 0x00450064, 0x00040004 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff04 },
- { 0x00000001, 0x220401ec, 0x00000000, 0x00800080 },
- { 0x00000001, 0x22080060, 0x00000000, 0x04100400 },
- { 0x00200008, 0x27006e2d, 0x0000006c, 0x00000040 },
- { 0x00400001, 0x27400061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x272001a9, 0x00b10620, 0x00000000 },
- { 0x02600005, 0x20001c20, 0x0000006c, 0x00000008 },
- { 0x00110001, 0x27230231, 0x00000624, 0x00000000 },
- { 0x00600001, 0x27420231, 0x00cf0643, 0x00000000 },
- { 0x00110001, 0x27410231, 0x00000643, 0x00000000 },
- { 0x00240001, 0x27400231, 0x00000623, 0x00000000 },
- { 0x02000005, 0x20001c20, 0x0200006c, 0x00000002 },
- { 0x00010001, 0x27400231, 0x02000624, 0x00000000 },
- { 0x02000005, 0x20001c20, 0x0200006c, 0x00000001 },
- { 0x00110001, 0x27420231, 0x02000623, 0x00000000 },
- { 0x00000005, 0x26803e2d, 0x00000070, 0x000f000f },
- { 0x00000001, 0x270801ad, 0x00000700, 0x00000000 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000084 },
- { 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
- { 0x00800001, 0x27200231, 0x00b10628, 0x00000000 },
- { 0x02600005, 0x20001c20, 0x0200006c, 0x00000004 },
- { 0x00680001, 0x272c0231, 0x028d0634, 0x00000000 },
- { 0x00780001, 0x272c0231, 0x02000633, 0x00000000 },
- { 0x00400001, 0x27420231, 0x00a0040e, 0x00000000 },
- { 0x00400001, 0x27460231, 0x00a0044e, 0x00000000 },
- { 0x00200001, 0x27400231, 0x0000062b, 0x00000000 },
- { 0x02000005, 0x20001c20, 0x0200006c, 0x00000002 },
- { 0x00010001, 0x27400231, 0x0200062c, 0x00000000 },
- { 0x00110001, 0x27410231, 0x0200040e, 0x00000000 },
- { 0x00000008, 0x26803e2d, 0x00000070, 0x00040004 },
- { 0x00200040, 0x22083d8c, 0x00450208, 0x00800080 },
- { 0x00000006, 0x27083dad, 0x00000700, 0x00010001 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000064 },
- { 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
- { 0x00a02001, 0xb3800231, 0x00d20400, 0x00000000 },
- { 0x00a02001, 0xb3a00231, 0x00d20480, 0x00000000 },
- { 0x00a02001, 0xb3c00231, 0x00d20440, 0x00000000 },
- { 0x00a02001, 0xb3e00231, 0x00d204c0, 0x00000000 },
- { 0x02000005, 0x20001c20, 0x00000060, 0x00000002 },
- { 0x01000005, 0x20001c20, 0x0200006c, 0x00000001 },
- { 0x01010005, 0x20001c20, 0x00000060, 0x00004000 },
- { 0x02010005, 0x20001c20, 0x02000060, 0x00000010 },
- { 0x00030001, 0x27230231, 0x0000065f, 0x00000000 },
- { 0x00030220, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x02600005, 0x20001c20, 0x0000006c, 0x00000001 },
- { 0x00460001, 0x27200231, 0x0069065c, 0x00000000 },
- { 0x00110001, 0x27230231, 0x00000458, 0x00000000 },
- { 0x00600001, 0x27240231, 0x008d0458, 0x00000000 },
- { 0x00600001, 0x272c0231, 0x008d0478, 0x00000000 },
- { 0x00600001, 0x27420231, 0x00cf0663, 0x00000000 },
- { 0x00000001, 0x27400231, 0x00000458, 0x00000000 },
- { 0x00010001, 0x27410231, 0x0000065f, 0x00000000 },
- { 0x00110001, 0x27410231, 0x00000663, 0x00000000 },
- { 0x02000005, 0x20001c20, 0x0200006c, 0x00000010 },
- { 0x00110001, 0x27420231, 0x0200065f, 0x00000000 },
- { 0x00000005, 0x26803e2d, 0x00000071, 0x000f000f },
- { 0x00000006, 0x27083dad, 0x00000702, 0x00020002 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
- { 0x00400001, 0x27200231, 0x0069045c, 0x00000000 },
- { 0x00600001, 0x27240231, 0x008d0478, 0x00000000 },
- { 0x00800001, 0x272c0231, 0x0000047f, 0x00000000 },
- { 0x00400001, 0x27420231, 0x00a0048e, 0x00000000 },
- { 0x00400001, 0x27460231, 0x00a004ce, 0x00000000 },
- { 0x00000001, 0x27400231, 0x00000478, 0x00000000 },
- { 0x00000001, 0x27410231, 0x0000045f, 0x00000000 },
- { 0x00000008, 0x26803e2d, 0x00000071, 0x00040004 },
- { 0x00200040, 0x22083d8c, 0x00450208, 0x00800080 },
- { 0x00000006, 0x27083dad, 0x00000700, 0x00030003 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00a02001, 0xb3800231, 0x00d20480, 0x00000000 },
- { 0x00a02001, 0xb3a00231, 0x00d20500, 0x00000000 },
- { 0x00a02001, 0xb3c00231, 0x00d204c0, 0x00000000 },
- { 0x00a02001, 0xb3e00231, 0x00d20540, 0x00000000 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000100 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffe74 },
- { 0x00000001, 0x27800021, 0x00000780, 0x00000000 },
- { 0x00000001, 0x27a00021, 0x000007a0, 0x00000000 },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x00000001, 0x27340231, 0x00000733, 0x00000000 },
- { 0x00600001, 0x274a0231, 0x00000749, 0x00000000 },
- { 0x00800040, 0x24003e2c, 0x00b10723, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b10724, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b10725, 0x00010001 },
- { 0x00800008, 0x26c03d8d, 0x008d0400, 0x00020002 },
- { 0x00800040, 0x24003e2c, 0x00b10740, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b10741, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b10742, 0x00010001 },
- { 0x00800008, 0x26a03d8d, 0x008d0400, 0x00020002 },
- { 0x00800001, 0x27240231, 0x00d206c0, 0x00000000 },
- { 0x00600001, 0x27400231, 0x00ae06a2, 0x00000000 },
- { 0x00000001, 0x27230231, 0x000006a0, 0x00000000 },
- { 0x00000005, 0x220e3dac, 0x00000680, 0x000f000f },
- { 0x00000001, 0x26a00221, 0x00009c2c, 0x00000000 },
- { 0x00000220, 0x34001400, 0x00001400, 0x000006a0 },
- { 0x80800040, 0xd00045b1, 0x00b18800, 0x000d0724 },
- { 0x80800040, 0xd02045b1, 0x00b18820, 0x000d0724 },
- { 0x80800040, 0xd04045b1, 0x00b18840, 0x000d0724 },
- { 0x80800040, 0xd06045b1, 0x00b18860, 0x000d0724 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x80800040, 0xd00045b1, 0x00b18800, 0x002c0740 },
- { 0x80800040, 0xd02045b1, 0x00b18820, 0x002c0742 },
- { 0x80800040, 0xd04045b1, 0x00b18840, 0x002c0744 },
- { 0x80800040, 0xd06045b1, 0x00b18860, 0x002c0746 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x02802005, 0x20003da0, 0x00000708, 0x00020002 },
- { 0x02600005, 0x20003da0, 0x02000708, 0x00010001 },
- { 0x009a0001, 0x27200169, 0x00000000, 0x80808080 },
- { 0x00780001, 0x27400231, 0x028d0724, 0x00000000 },
- { 0x00780001, 0x27240231, 0x008d0740, 0x00000000 },
- { 0x00600040, 0x25e04629, 0x008d0724, 0x008d0740 },
- { 0x00400040, 0x25e02529, 0x006905e0, 0x006905e8 },
- { 0x00200040, 0x25e02529, 0x004505e0, 0x004505e4 },
- { 0x00800040, 0x2400252c, 0x000005e0, 0x000005e2 },
- { 0x00800040, 0x24003d8c, 0x008d0400, 0x00080008 },
- { 0x00800008, 0x26803d8d, 0x008d0400, 0x00040004 },
- { 0x80800040, 0xd00035b1, 0x00b18800, 0x00b10680 },
- { 0x80800040, 0xd02035b1, 0x00b18820, 0x00b10680 },
- { 0x80800040, 0xd04035b1, 0x00b18840, 0x00b10680 },
- { 0x80800040, 0xd06035b1, 0x00b18860, 0x00b10680 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00600001, 0x27340231, 0x008d0733, 0x00000000 },
- { 0x00800040, 0x24003e2c, 0x00b10726, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b10725, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b10724, 0x00010001 },
- { 0x00800008, 0x26803d8d, 0x00b10400, 0x00020002 },
- { 0x80800040, 0xd00035b1, 0x00b18800, 0x002d0680 },
- { 0x80800040, 0xd02035b1, 0x00b18820, 0x002d0684 },
- { 0x80800040, 0xd04035b1, 0x00b18840, 0x002d0688 },
- { 0x80800040, 0xd06035b1, 0x00b18860, 0x002d068c },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00400009, 0x26c05421, 0x00000744, 0x00690050 },
- { 0x00400009, 0x26d05421, 0x00000740, 0x00690050 },
- { 0x00600001, 0x26a00231, 0x00cf06c3, 0x00000000 },
- { 0x00800001, 0x26a80231, 0x00b10723, 0x00000000 },
- { 0x00800040, 0x24003e2c, 0x00b106a2, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b106a1, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b106a0, 0x00010001 },
- { 0x00800008, 0x26a03d8d, 0x00b10400, 0x00020002 },
- { 0x00200040, 0x220c3eac, 0x00450056, 0x06a006a0 },
- { 0x80800040, 0xd06035b1, 0x01ed9800, 0x00b18860 },
- { 0x80800040, 0xd04035b1, 0x01ed9804, 0x00b18840 },
- { 0x80800040, 0xd02035b1, 0x01ed9808, 0x00b18820 },
- { 0x80800040, 0xd00035b1, 0x01ed980c, 0x00b18800 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00400009, 0x26c05421, 0x00000744, 0x00690050 },
- { 0x00400009, 0x26d05421, 0x00000740, 0x00690050 },
- { 0x00600001, 0x26a00231, 0x00cf06c3, 0x00000000 },
- { 0x00800001, 0x26a80231, 0x00b10723, 0x00000000 },
- { 0x00800042, 0x25c04629, 0x00b106a8, 0x00b106a9 },
- { 0x00800040, 0x24003e2c, 0x00b106a3, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b106a2, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b106a1, 0x00010001 },
- { 0x00800008, 0x26c03d8d, 0x008d0400, 0x00020002 },
- { 0x00600001, 0x26a00231, 0x00ae06c0, 0x00000000 },
- { 0x00600001, 0x46a60231, 0x00ae06cc, 0x00000000 },
- { 0x00600001, 0x46a70231, 0x00ae05c0, 0x00000000 },
- { 0x00200040, 0x220c3eac, 0x00450036, 0x06a006a0 },
- { 0x80800040, 0xd0603631, 0x01ee9800, 0x00b18860 },
- { 0x80800040, 0xd0403631, 0x01ee9802, 0x00b18840 },
- { 0x80800040, 0xd0203631, 0x01ee9804, 0x00b18820 },
- { 0x80800040, 0xd0003631, 0x01ee9806, 0x00b18800 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00400009, 0x26c05421, 0x00000744, 0x00690050 },
- { 0x00400009, 0x26d05421, 0x00000740, 0x00690050 },
- { 0x00600001, 0x26a00231, 0x00ab06c3, 0x00000000 },
- { 0x00800001, 0x26a80231, 0x00b10723, 0x00000000 },
- { 0x00800040, 0x24003e2c, 0x00b106a2, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b106a1, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b106a0, 0x00010001 },
- { 0x00800008, 0x25c03d89, 0x008d0400, 0x00020002 },
- { 0x00800042, 0x26a0462d, 0x00b106a0, 0x00b106a1 },
- { 0x00600001, 0x46a10231, 0x00ae05c0, 0x00000000 },
- { 0x00600001, 0x26b00231, 0x00ae05d0, 0x00000000 },
- { 0x00200040, 0x220c3eac, 0x00450056, 0x06a006a0 },
- { 0x80800040, 0xd0603631, 0x01ed9800, 0x00b18860 },
- { 0x80800040, 0xd0403631, 0x01ed9804, 0x00b18840 },
- { 0x80800040, 0xd0203631, 0x01ed9808, 0x00b18820 },
- { 0x80800040, 0xd0003631, 0x01ed980c, 0x00b18800 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00800042, 0x25c04629, 0x00b10724, 0x00b10725 },
- { 0x00800040, 0x24003e2c, 0x00b10726, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b10725, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b10724, 0x00010001 },
- { 0x00800008, 0x25e03d89, 0x002d0400, 0x00020002 },
- { 0x80800040, 0xd0003531, 0x00ad05c0, 0x00b18800 },
- { 0x80800040, 0xd0203531, 0x00ad05c2, 0x00b18820 },
- { 0x80800040, 0xd0403531, 0x00ad05c4, 0x00b18840 },
- { 0x80800040, 0xd0603531, 0x00ad05c6, 0x00b18860 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00600001, 0x27480231, 0x00000747, 0x00000000 },
- { 0x00800042, 0x25c04629, 0x00b10740, 0x00b10741 },
- { 0x00800040, 0x24003e2c, 0x00b10742, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b10741, 0x00020002 },
- { 0x00800048, 0x24003e2c, 0x00b10740, 0x00010001 },
- { 0x00800008, 0x25e03d89, 0x002d0400, 0x00020002 },
- { 0x00800001, 0x45c10231, 0x00d205e0, 0x00000000 },
- { 0x80800040, 0xd0003631, 0x004d05c0, 0x00b18800 },
- { 0x80800040, 0xd0203631, 0x004d05c4, 0x00b18820 },
- { 0x80800040, 0xd0403631, 0x004d05c8, 0x00b18840 },
- { 0x80800040, 0xd0603631, 0x004d05cc, 0x00b18860 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00000401, 0x27c80061, 0x00000000, 0x000f000f },
- { 0x00200801, 0x27c001a1, 0x004507fa, 0x00000000 },
- { 0x00000040, 0x22000c00, 0x00000200, 0x0ff04000 },
- { 0x00800001, 0x20400232, 0x00cd0400, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00cd0408, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00cd0410, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00cd0418, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00cd0440, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00cd0448, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00cd0450, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00cd0458, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00cd0480, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00cd0488, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00cd0490, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00cd0498, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00cd04c0, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00cd04c8, 0x00000000 },
- { 0x00800001, 0x21200232, 0x00cd04d0, 0x00000000 },
- { 0x00800001, 0x21300232, 0x00cd04d8, 0x00000000 },
- { 0x01600031, 0x27800021, 0x508d07c0, 0x00000200 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00600001, 0x27c00021, 0x008d0000, 0x00000000 },
- { 0x00200009, 0x27fa3e29, 0x00450064, 0x00040004 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffd34 },
- { 0x00000001, 0x220401ec, 0x00000000, 0x00800080 },
- { 0x00000001, 0x220601ec, 0x00000000, 0x04000400 },
- { 0x00200008, 0x27006e2d, 0x0000006c, 0x00000040 },
- { 0x02600005, 0x20003e20, 0x0000006c, 0x00040004 },
- { 0x00780001, 0x26340231, 0x00000633, 0x00000000 },
- { 0x00800001, 0x27200231, 0x00b10620, 0x00000000 },
- { 0x00600001, 0x27400231, 0x00cf0643, 0x00000000 },
- { 0x00400008, 0x26806e2d, 0x00240070, 0x00004040 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000006a },
- { 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
- { 0x00000006, 0x27003dad, 0x00000700, 0x00010001 },
- { 0x00800001, 0x27200231, 0x00b10628, 0x00000000 },
- { 0x00400001, 0x27400231, 0x00808c26, 0x00000000 },
- { 0x00400001, 0x27440231, 0x00808c66, 0x00000000 },
- { 0x00400008, 0x26806e2d, 0x00240072, 0x00004040 },
- { 0x00000040, 0x22063d8c, 0x00000206, 0x00800080 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000058 },
- { 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
- { 0x00000006, 0x27003dad, 0x00000702, 0x00020002 },
- { 0x00800001, 0xaf800231, 0x00d28f80, 0x00000000 },
- { 0x00800001, 0xaf900231, 0x00d28fa0, 0x00000000 },
- { 0x00800001, 0xafc00231, 0x00d28fc0, 0x00000000 },
- { 0x00800001, 0xafd00231, 0x00d28fe0, 0x00000000 },
- { 0x00800001, 0xafa00231, 0x00d28c00, 0x00000000 },
- { 0x00800001, 0xafb00231, 0x00d28c20, 0x00000000 },
- { 0x00800001, 0xafe00231, 0x00d28c40, 0x00000000 },
- { 0x00800001, 0xaff00231, 0x00d28c60, 0x00000000 },
- { 0x00400001, 0x27200231, 0x0069065c, 0x00000000 },
- { 0x00600001, 0x27240231, 0x00a98fcc, 0x00000000 },
- { 0x00600001, 0x272c0231, 0x00a98fec, 0x00000000 },
- { 0x00600001, 0x27340231, 0x00008fff, 0x00000000 },
- { 0x00800001, 0x2620012d, 0x00b10720, 0x00000000 },
- { 0x00600001, 0x27400231, 0x00cf0663, 0x00000000 },
- { 0x00400008, 0x26806e2d, 0x00240074, 0x00004040 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000032 },
- { 0x00000040, 0x22043d8c, 0x00000204, 0x00800080 },
- { 0x00000006, 0x27003dad, 0x00000700, 0x00010001 },
- { 0x00800001, 0x27200231, 0x00b10628, 0x00000000 },
- { 0x00600001, 0x27300231, 0x008d0638, 0x00000000 },
- { 0x00400001, 0x27400231, 0x00808c26, 0x00000000 },
- { 0x00400001, 0x27440231, 0x00808c66, 0x00000000 },
- { 0x00400008, 0x26806e2d, 0x00240076, 0x00004040 },
- { 0x00000040, 0x22063d8c, 0x00000206, 0x00800080 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x00800001, 0xaf800231, 0x00d28f80, 0x00000000 },
- { 0x00800001, 0xaf900231, 0x00d28fa0, 0x00000000 },
- { 0x00800001, 0xafc00231, 0x00d28fc0, 0x00000000 },
- { 0x00800001, 0xafd00231, 0x00d28fe0, 0x00000000 },
- { 0x00800001, 0xafa00231, 0x00d28c00, 0x00000000 },
- { 0x00800001, 0xafb00231, 0x00d28c20, 0x00000000 },
- { 0x00800001, 0xafe00231, 0x00d28c40, 0x00000000 },
- { 0x00800001, 0xaff00231, 0x00d28c60, 0x00000000 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000e0 },
- { 0x00000040, 0x27e01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffcce },
- { 0x00000001, 0x27800021, 0x00000780, 0x00000000 },
- { 0x00000001, 0x27a00021, 0x000007a0, 0x00000000 },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x00600001, 0x27800231, 0x008d0740, 0x00000000 },
- { 0x00400005, 0x22083dac, 0x00690680, 0x000f000f },
- { 0x00400040, 0x26a04625, 0x01e09020, 0x00690058 },
- { 0x00000001, 0x26d001ad, 0x00000700, 0x00000000 },
- { 0x00000040, 0x27e41c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001400, 0x00001400, 0x000006a0 },
- { 0x80600040, 0xcc0035b1, 0x00898800, 0x008d0760 },
- { 0x80600040, 0xcc1035b1, 0x00898820, 0x008d0770 },
- { 0x00800001, 0x27200231, 0x008d0724, 0x00000000 },
- { 0x00400001, 0x27400231, 0x00808c06, 0x00000000 },
- { 0x00000006, 0x26d03dad, 0x00000700, 0x00010001 },
- { 0x00000040, 0x27e41c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001400, 0x00001400, 0x000006a4 },
- { 0x80600040, 0xcc2035b1, 0x00898808, 0x008d0760 },
- { 0x80600040, 0xcc3035b1, 0x00898828, 0x008d0770 },
- { 0x00000001, 0x27230231, 0x00000783, 0x00000000 },
- { 0x00400001, 0x27240231, 0x008a8c18, 0x00000000 },
- { 0x00400001, 0x27280231, 0x008a8c38, 0x00000000 },
- { 0x00400001, 0x272c0231, 0x00008c3e, 0x00000000 },
- { 0x00400001, 0x27400231, 0x00690784, 0x00000000 },
- { 0x00000006, 0x26d03dad, 0x00000700, 0x00020002 },
- { 0x00000040, 0x27e41c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001400, 0x00001400, 0x000006a8 },
- { 0x80600040, 0xcc4035b1, 0x00898840, 0x008d0760 },
- { 0x80600040, 0xcc5035b1, 0x00898860, 0x008d0770 },
- { 0x00800001, 0x27200231, 0x008d0724, 0x00000000 },
- { 0x00600001, 0x27280231, 0x00000727, 0x00000000 },
- { 0x00400001, 0x27400231, 0x00808c46, 0x00000000 },
- { 0x00000006, 0x26d03dad, 0x00000700, 0x00030003 },
- { 0x00000040, 0x27e41c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001400, 0x00001400, 0x000006ac },
- { 0x80600040, 0xcc6035b1, 0x00898848, 0x008d0760 },
- { 0x80600040, 0xcc7035b1, 0x00898868, 0x008d0770 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x00800001, 0x2760022d, 0x00090724, 0x00000000 },
- { 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
- { 0x00800001, 0x2760022d, 0x00280740, 0x00000000 },
- { 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
- { 0x02802005, 0x20003da0, 0x000006d0, 0x00020002 },
- { 0x02802005, 0x20003da0, 0x020006d0, 0x00010001 },
- { 0x009a0001, 0x27200169, 0x00000000, 0x80808080 },
- { 0x00780001, 0x27400231, 0x028d0724, 0x00000000 },
- { 0x00780001, 0x27240231, 0x008d0740, 0x00000000 },
- { 0x00400040, 0x25e04629, 0x00690724, 0x00690740 },
- { 0x00200040, 0x25e02529, 0x004505e0, 0x004505e4 },
- { 0x00800040, 0x2400252c, 0x000005e0, 0x000005e2 },
- { 0x00800040, 0x24003d8c, 0x008d0400, 0x00040004 },
- { 0x00800008, 0x27603d8d, 0x008d0400, 0x00030003 },
- { 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
- { 0x00600001, 0x26c00231, 0x008d0724, 0x00000000 },
- { 0x00400001, 0x26c80231, 0x0069072b, 0x00000000 },
- { 0x00600040, 0x24003e2c, 0x008d06c2, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x008d06c1, 0x00020002 },
- { 0x00600048, 0x25e03e29, 0x008d06c0, 0x00010001 },
- { 0x00800008, 0x27603d2d, 0x002905e0, 0x00020002 },
- { 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
- { 0x00400009, 0x26e05421, 0x00000740, 0x00690050 },
- { 0x00600001, 0x26c40231, 0x008d0723, 0x00000000 },
- { 0x00400001, 0x26c00231, 0x00ab06e3, 0x00000000 },
- { 0x00600040, 0x24003e2c, 0x008d06c2, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x008d06c1, 0x00020002 },
- { 0x00600048, 0x26c03e2d, 0x008d06c0, 0x00010001 },
- { 0x00400040, 0x22083eac, 0x00690054, 0x06c006c0 },
- { 0x00800008, 0x27603dad, 0x01e99000, 0x00020002 },
- { 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
- { 0x00400009, 0x26e05421, 0x00000740, 0x00690050 },
- { 0x00600001, 0x26c40231, 0x008d0723, 0x00000000 },
- { 0x00400001, 0x26c00231, 0x00ab06e3, 0x00000000 },
- { 0x00600042, 0x25c04629, 0x008d06c4, 0x008d06c5 },
- { 0x00600040, 0x24003e2c, 0x008d06c3, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x008d06c2, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x008d06c1, 0x00010001 },
- { 0x00600008, 0x26c03d8d, 0x008d0400, 0x00020002 },
- { 0x00400001, 0x46c401ad, 0x006906c4, 0x00000000 },
- { 0x00400001, 0x46c6012d, 0x006905c0, 0x00000000 },
- { 0x00400040, 0x22083eac, 0x00690054, 0x06c006c0 },
- { 0x00800001, 0x276001ad, 0x01ea9000, 0x00000000 },
- { 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
- { 0x00400009, 0x26e05421, 0x00000740, 0x00690050 },
- { 0x00600001, 0x26c40231, 0x008d0723, 0x00000000 },
- { 0x00400001, 0x26c00231, 0x00ab06e3, 0x00000000 },
- { 0x00600042, 0x25c04629, 0x008d06c0, 0x008d06c1 },
- { 0x00600040, 0x24003e2c, 0x008d06c2, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x008d06c1, 0x00020002 },
- { 0x00600048, 0x26e03e2d, 0x008d06c0, 0x00010001 },
- { 0x00400008, 0x46c23dad, 0x006906e0, 0x00020002 },
- { 0x00200008, 0x26d03dad, 0x004506e8, 0x00020002 },
- { 0x00400001, 0x46c0012d, 0x006905c0, 0x00000000 },
- { 0x00400009, 0x22083eac, 0x00690054, 0x00010001 },
- { 0x00400040, 0x22083d8c, 0x00690208, 0x06c006c0 },
- { 0x00800001, 0x276001ad, 0x01e99000, 0x00000000 },
- { 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
- { 0x00600042, 0x45c04629, 0x008d0724, 0x008d0725 },
- { 0x00600040, 0x24003e2c, 0x008d0726, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x008d0725, 0x00020002 },
- { 0x00600048, 0x25e03e29, 0x008d0724, 0x00010001 },
- { 0x00600008, 0x45c23d29, 0x008d05e0, 0x00020002 },
- { 0x00800001, 0x2760012d, 0x002a05c0, 0x00000000 },
- { 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
- { 0x00600001, 0x27440231, 0x00000743, 0x00000000 },
- { 0x00600042, 0x45c04629, 0x008d0740, 0x008d0741 },
- { 0x00600040, 0x24003e2c, 0x008d0742, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x008d0741, 0x00020002 },
- { 0x00600048, 0x25e03e29, 0x008d0740, 0x00010001 },
- { 0x00600008, 0x45c23d29, 0x008d05e0, 0x00020002 },
- { 0x00800001, 0x2760012d, 0x004905c0, 0x00000000 },
- { 0x00000001, 0x34000020, 0x000007e4, 0x00000000 },
- { 0x00000401, 0x27c80061, 0x00000000, 0x000f000f },
- { 0x00200801, 0x27c001a1, 0x004507fa, 0x00000000 },
- { 0x00000040, 0x22000c00, 0x00000200, 0x0ff04000 },
- { 0x00800001, 0x20400232, 0x00a90400, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00a90404, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00a90408, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00a9040c, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00a90440, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00a90444, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00a90448, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00a9044c, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00a90480, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00a90484, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00a90488, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00a9048c, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00a904c0, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00a904c4, 0x00000000 },
- { 0x00800001, 0x21200232, 0x00a904c8, 0x00000000 },
- { 0x00800001, 0x21300232, 0x00a904cc, 0x00000000 },
- { 0x01600031, 0x27800021, 0x508d07c0, 0x00000200 },
- { 0x00000001, 0x34000020, 0x000007e0, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27c00021, 0x008d0000, 0x00000000 },
- { 0x00200009, 0x27fa3e29, 0x00450064, 0x00040004 },
- { 0x00000401, 0x27c80061, 0x00000000, 0x000f000f },
- { 0x00200809, 0x27c03e21, 0x00450064, 0x00040004 },
- { 0x00000040, 0x22000d20, 0x00000062, 0x1218a000 },
- { 0x00a02401, 0x20400232, 0x00b10080, 0x00000000 },
- { 0x00a02801, 0x20500232, 0x00b10090, 0x00000000 },
- { 0x00a02401, 0x20800232, 0x00b100c0, 0x00000000 },
- { 0x00a02801, 0x20900232, 0x00b100d0, 0x00000000 },
- { 0x00a02401, 0x20c00232, 0x00b10100, 0x00000000 },
- { 0x00a02801, 0x20d00232, 0x00b10110, 0x00000000 },
- { 0x00a02401, 0x21000232, 0x00b10140, 0x00000000 },
- { 0x00a02801, 0x21100232, 0x00b10150, 0x00000000 },
- { 0x01600031, 0x27800021, 0x508d07c0, 0x00000200 },
- { 0x00000401, 0x20280062, 0x00000000, 0x0007000f },
- { 0x0000080c, 0x20243c22, 0x000007c4, 0x00010001 },
- { 0x00000040, 0x22001c00, 0x00000200, 0xf8000001 },
- { 0x00800001, 0x40400232, 0x00b10180, 0x00000000 },
- { 0x00800001, 0x40410232, 0x00b101c0, 0x00000000 },
- { 0x00800001, 0x40600232, 0x00b10190, 0x00000000 },
- { 0x00800001, 0x40610232, 0x00b101d0, 0x00000000 },
- { 0x00800001, 0x40800232, 0x00b101a0, 0x00000000 },
- { 0x00800001, 0x40810232, 0x00b101e0, 0x00000000 },
- { 0x00800001, 0x40a00232, 0x00b101b0, 0x00000000 },
- { 0x00800001, 0x40a10232, 0x00b101f0, 0x00000000 },
- { 0x01600031, 0x27a00001, 0x508d0000, 0x00000200 },
- { 0x00000001, 0x27800021, 0x00000780, 0x00000000 },
- { 0x00000001, 0x27a00021, 0x000007a0, 0x00000000 },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x20400021, 0x008d0000, 0x00000000 },
- { 0x00000005, 0x20203e2d, 0x00000061, 0x001f001f },
- { 0x00200009, 0x20643e2d, 0x00450064, 0x00040004 },
- { 0x00000001, 0x203a01ed, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000020, 0x00160016 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x01200010, 0x20003e2c, 0x0200006c, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000024 },
- { 0x00800009, 0x25403dad, 0x00050064, 0x00020002 },
- { 0x00000001, 0x203a01ed, 0x00000000, 0x00180018 },
- { 0x00200040, 0x45483dad, 0x00660548, 0x00100010 },
- { 0x00200040, 0x45523dad, 0x00660552, 0x00100010 },
- { 0x00400040, 0x25583dad, 0x00690558, 0x00100010 },
- { 0x00800040, 0x208035ad, 0x00b10080, 0x00b10540 },
- { 0x00600040, 0x45403dad, 0x00ae0540, 0x00200020 },
- { 0x00800040, 0x20a035ad, 0x00b100a0, 0x00b10540 },
- { 0x00600040, 0x45423dad, 0x00ae0542, 0x00200020 },
- { 0x00800040, 0x20e035ad, 0x00b100e0, 0x00b10540 },
- { 0x00600040, 0x45403dad, 0x00ae0540, 0xffe0ffe0 },
- { 0x00800040, 0x20c035ad, 0x00b100c0, 0x00b10540 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x06600010, 0x20003dac, 0x02000020, 0x00030003 },
- { 0x00000001, 0x206c0171, 0x00000000, 0x00000000 },
- { 0x00610001, 0x208000a5, 0x02050080, 0x00000000 },
- { 0x00610001, 0x212000a5, 0x02090100, 0x00000000 },
- { 0x00410001, 0x211000a5, 0x02690100, 0x00000000 },
- { 0x00200009, 0x25403dad, 0x00450064, 0x00020002 },
- { 0x00800040, 0x208035ad, 0x00b10080, 0x00050540 },
- { 0x00200040, 0x40883dad, 0x00660088, 0x00200020 },
- { 0x00200040, 0x40923dad, 0x00660092, 0x00200020 },
- { 0x00400040, 0x20983dad, 0x00690098, 0x00200020 },
- { 0x00200401, 0x22080060, 0x00000000, 0x03400140 },
- { 0x00000c01, 0x220c0060, 0x00000000, 0x04400080 },
- { 0x00000801, 0x22040060, 0x00000000, 0x01000070 },
- { 0x00000001, 0x20200169, 0x00000000, 0x00000000 },
- { 0x0000000c, 0x2458262d, 0x0000006d, 0x00000020 },
- { 0x00000001, 0x210e0169, 0x00000000, 0x00010001 },
- { 0x00000005, 0x24583dad, 0x00000458, 0x00030003 },
- { 0x01000010, 0x200035ac, 0x0000010e, 0x00000458 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x000002fe },
- { 0x01000010, 0x20003dac, 0x0200010e, 0x00010001 },
- { 0x00010401, 0x24540061, 0x02000000, 0x06c00640 },
- { 0x00010805, 0x245a3e2d, 0x02008800, 0x007f007f },
- { 0x00110401, 0x24540061, 0x02000000, 0x04800780 },
- { 0x00110805, 0x245a3e2d, 0x02008804, 0x007f007f },
- { 0x0000000c, 0x211e362d, 0x0000006c, 0x00000020 },
- { 0x00000040, 0x20780d21, 0x0000045a, 0x0208a002 },
- { 0x02000005, 0x20003dac, 0x0200011e, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000001be },
- { 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
- { 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
- { 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
- { 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000012 },
- { 0x00010040, 0x22000c20, 0x02000078, 0x00400000 },
- { 0x00110040, 0x22000c20, 0x02000078, 0x00700000 },
- { 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
- { 0x00110001, 0x20480061, 0x02000000, 0x000c000c },
- { 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
- { 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
- { 0x00010001, 0x20480061, 0x02000000, 0x0007000c },
- { 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
- { 0x00110040, 0x22000c20, 0x02000078, 0x00400000 },
- { 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
- { 0x00110040, 0x20441da5, 0x02000442, 0xfffffffe },
- { 0x00110001, 0x20480061, 0x02000000, 0x000c0007 },
- { 0x00010001, 0x20480061, 0x02000000, 0x00070007 },
- { 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
- { 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
- { 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
- { 0x01600006, 0x20003dac, 0x0000044a, 0x00000000 },
- { 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
- { 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
- { 0x00010040, 0x22000c20, 0x00000078, 0x00200010 },
- { 0x00110040, 0x22000c20, 0x00000078, 0x00300010 },
- { 0x00010001, 0x20480061, 0x00000000, 0x00030009 },
- { 0x00110001, 0x20480061, 0x00000000, 0x00040009 },
- { 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
- { 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000001a },
- { 0x00600001, 0x26220231, 0x008d05c0, 0x00000000 },
- { 0x00600401, 0x26120231, 0x008d05b8, 0x00000000 },
- { 0x00600801, 0x26020231, 0x008d05b0, 0x00000000 },
- { 0x00600401, 0x25f20231, 0x008d05a8, 0x00000000 },
- { 0x00600801, 0x25e20231, 0x008d05a0, 0x00000000 },
- { 0x00600401, 0x25d20231, 0x008d0598, 0x00000000 },
- { 0x00600801, 0x25c20231, 0x008d0590, 0x00000000 },
- { 0x00600401, 0x25b20231, 0x008d0588, 0x00000000 },
- { 0x00600801, 0x25a20231, 0x008d0580, 0x00000000 },
- { 0x00600401, 0x25920231, 0x008d0578, 0x00000000 },
- { 0x00600801, 0x25820231, 0x008d0570, 0x00000000 },
- { 0x00600001, 0x25720231, 0x008d0568, 0x00000000 },
- { 0x00600001, 0x25620231, 0x008d0560, 0x00000000 },
- { 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
- { 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
- { 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
- { 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
- { 0x00810001, 0xbc000229, 0x02ad8000, 0x00000000 },
- { 0x00810001, 0xbc200229, 0x02ad8020, 0x00000000 },
- { 0x00810001, 0xbc400229, 0x02ad8040, 0x00000000 },
- { 0x00810001, 0xbc600229, 0x02ad8060, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000012a },
- { 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
- { 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
- { 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
- { 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
- { 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
- { 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000066 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000064 },
- { 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
- { 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
- { 0x00000801, 0x220c0060, 0x00000000, 0x04a00480 },
- { 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
- { 0x00a02040, 0x2400462c, 0x00ad8000, 0x00ad8005 },
- { 0x00a02048, 0x24003e2c, 0x00ad8001, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8002, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8003, 0x00140014 },
- { 0x00a02048, 0xb8003e2d, 0x00ad8004, 0xfffbfffb },
- { 0x00a02040, 0x2400462c, 0x00ad8040, 0x00ad8045 },
- { 0x00a02048, 0x24003e2c, 0x00ad8041, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8042, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8043, 0x00140014 },
- { 0x00a02048, 0xb8403e2d, 0x00ad8044, 0xfffbfffb },
- { 0x00a02040, 0x2400462c, 0x00ad8080, 0x00ad8085 },
- { 0x00a02048, 0x24003e2c, 0x00ad8081, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8082, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8083, 0x00140014 },
- { 0x00a02048, 0xb8803e2d, 0x00ad8084, 0xfffbfffb },
- { 0x00600040, 0x2400462c, 0x008d80c0, 0x008d80c5 },
- { 0x00600048, 0x24003e2c, 0x008d80c1, 0xfffbfffb },
- { 0x00600048, 0x24003e2c, 0x008d80c2, 0x00140014 },
- { 0x00600048, 0x24003e2c, 0x008d80c3, 0x00140014 },
- { 0x00600048, 0xb8c03e2d, 0x008d80c4, 0xfffbfffb },
- { 0x00000401, 0x22000060, 0x00000000, 0x04a00480 },
- { 0x00000c01, 0x22040060, 0x00000000, 0x04a00490 },
- { 0x00010802, 0x220c2d28, 0x00000454, 0x04800480 },
- { 0x00a02040, 0x24003dac, 0x00b18000, 0x02000200 },
- { 0x00800048, 0x24003dac, 0x01ed8800, 0xfffbfffb },
- { 0x00800048, 0x24203dac, 0x01ed8820, 0xfffbfffb },
- { 0x00a02048, 0x24003dac, 0x00b18020, 0x00140014 },
- { 0x00800048, 0x24003dac, 0x01ed8820, 0x00140014 },
- { 0x00800048, 0x24203dac, 0x01ed8840, 0x00140014 },
- { 0x00a02048, 0x24003dac, 0x00b18040, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01ed8840, 0x00010001 },
- { 0x00800048, 0x24203dac, 0x01ed8860, 0x00010001 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
- { 0x8080100c, 0xd8203d91, 0x00b10420, 0x000a000a },
- { 0x00a02040, 0x24003dac, 0x00b18040, 0x02000200 },
- { 0x00800048, 0x24003dac, 0x01ed8840, 0xfffbfffb },
- { 0x00800048, 0x24203dac, 0x01ed8860, 0xfffbfffb },
- { 0x00a02048, 0x24003dac, 0x00b18060, 0x00140014 },
- { 0x00800048, 0x24003dac, 0x01ed8860, 0x00140014 },
- { 0x00800048, 0x24203dac, 0x01ed8880, 0x00140014 },
- { 0x00a02048, 0x24003dac, 0x00b18080, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01ed8880, 0x00010001 },
- { 0x00800048, 0x24203dac, 0x01ed88a0, 0x00010001 },
- { 0x8080000c, 0xd8403d91, 0x00b10400, 0x000a000a },
- { 0x8080100c, 0xd8603d91, 0x00b10420, 0x000a000a },
- { 0x00010220, 0x34001c00, 0x00001400, 0x000000b4 },
- { 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000004c },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000004a },
- { 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
- { 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
- { 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
- { 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
- { 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
- { 0x00010002, 0x220c2d28, 0x02000454, 0x04800480 },
- { 0x00800040, 0x24003e2c, 0x01ed8000, 0x00100010 },
- { 0x00800040, 0x24203e2c, 0x01ed8020, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8001, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8021, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8002, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8022, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8003, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8023, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8004, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8024, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8005, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8025, 0x00010001 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
- { 0x00800040, 0x24003e2c, 0x01ed8040, 0x00100010 },
- { 0x00800040, 0x24203e2c, 0x01ed8060, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8041, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8061, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8042, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8062, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8043, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8063, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8044, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8064, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8045, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8065, 0x00010001 },
- { 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000005c },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000062 },
- { 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000042 },
- { 0x00200401, 0x22000128, 0x0066044c, 0x00000000 },
- { 0x00200c01, 0x22040128, 0x0045044e, 0x00000000 },
- { 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
- { 0x03400010, 0x20003dac, 0x02000444, 0x00020002 },
- { 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
- { 0x00410040, 0x22002d08, 0x02690200, 0x00010001 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
- { 0x00110001, 0x220c0168, 0x02000000, 0x04800480 },
- { 0x00a02040, 0x24003e2c, 0x00ad83e0, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8be0, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8800, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8000, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8800, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8820, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8020, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8820, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8840, 0x00010001 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
- { 0x00a02040, 0x24003e2c, 0x00ad8020, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8820, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8840, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8040, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8840, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8860, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8060, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8860, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8880, 0x00010001 },
- { 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001c },
- { 0x00200401, 0x22000128, 0x0045044c, 0x00000000 },
- { 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
- { 0x01200010, 0x20003dac, 0x00000444, 0x00030003 },
- { 0x01200010, 0x20003dac, 0x02000446, 0x00030003 },
- { 0x00210040, 0x22002d08, 0x00450200, 0x00010001 },
- { 0x00210040, 0x22002d08, 0x02450200, 0x00100010 },
- { 0x00800001, 0xb8000229, 0x01ed8000, 0x00000000 },
- { 0x00800001, 0xb8200229, 0x01ed8020, 0x00000000 },
- { 0x00800001, 0xb8400229, 0x01ed8040, 0x00000000 },
- { 0x00800001, 0xb8600229, 0x01ed8060, 0x00000000 },
- { 0x80800042, 0xd8004631, 0x00d29800, 0x00d20480 },
- { 0x80800042, 0xd8204631, 0x00d29820, 0x00d204a0 },
- { 0x80800042, 0xd8404631, 0x00d29840, 0x00d204c0 },
- { 0x80800042, 0xd8604631, 0x00d29860, 0x00d204e0 },
- { 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
- { 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
- { 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
- { 0x00000c01, 0x220201e8, 0x00000000, 0x07100710 },
- { 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
- { 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
- { 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
- { 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
- { 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
- { 0x00200040, 0x244c3d09, 0x00450200, 0x00100010 },
- { 0x00800041, 0x24002628, 0x00ad8000, 0x00000540 },
- { 0x00800041, 0x24202628, 0x00ad8020, 0x00000540 },
- { 0x00800048, 0x24002628, 0x00ad8002, 0x00000542 },
- { 0x00800048, 0x24202628, 0x00ad8022, 0x00000542 },
- { 0x00200001, 0x22000128, 0x0045044c, 0x00000000 },
- { 0x00800048, 0x24002628, 0x01ed8000, 0x00000544 },
- { 0x00800048, 0x24202628, 0x01ed8020, 0x00000544 },
- { 0x00800048, 0xbc002629, 0x01ed8002, 0x00000546 },
- { 0x00801048, 0xbc202629, 0x01ed8022, 0x00000546 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000126 },
- { 0x00000001, 0x20220169, 0x00000000, 0x00040004 },
- { 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
- { 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
- { 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
- { 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
- { 0x00110040, 0x22000c20, 0x02000078, 0x00500000 },
- { 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
- { 0x00110001, 0x20480061, 0x02000000, 0x00080008 },
- { 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
- { 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
- { 0x00010001, 0x20480061, 0x02000000, 0x00030008 },
- { 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x00000078, 0x00100010 },
- { 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
- { 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
- { 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
- { 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
- { 0x00000001, 0x20480061, 0x00000000, 0x00020005 },
- { 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
- { 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
- { 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
- { 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
- { 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
- { 0x00410001, 0xbc000229, 0x02698000, 0x00000000 },
- { 0x00410001, 0xbc100229, 0x02698010, 0x00000000 },
- { 0x00410001, 0xbc200229, 0x02698020, 0x00000000 },
- { 0x00410001, 0xbc300229, 0x02698030, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000be },
- { 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
- { 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
- { 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
- { 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
- { 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
- { 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000044 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000042 },
- { 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
- { 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
- { 0x00000801, 0x220c0060, 0x00000000, 0x04d004c0 },
- { 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
- { 0x00802040, 0x2400462c, 0x00a98000, 0x00a98005 },
- { 0x00802048, 0x24003e2c, 0x00a98001, 0xfffbfffb },
- { 0x00802048, 0x24003e2c, 0x00a98002, 0x00140014 },
- { 0x00802048, 0x24003e2c, 0x00a98003, 0x00140014 },
- { 0x00802048, 0xb8003e2d, 0x00a98004, 0xfffbfffb },
- { 0x00802040, 0x2400462c, 0x00a98040, 0x00a98045 },
- { 0x00802048, 0x24003e2c, 0x00a98041, 0xfffbfffb },
- { 0x00802048, 0x24003e2c, 0x00a98042, 0x00140014 },
- { 0x00802048, 0x24003e2c, 0x00a98043, 0x00140014 },
- { 0x00802048, 0xb8203e2d, 0x00a98044, 0xfffbfffb },
- { 0x00400040, 0x2400462c, 0x00698080, 0x00698085 },
- { 0x00400048, 0x24003e2c, 0x00698081, 0xfffbfffb },
- { 0x00400048, 0x24003e2c, 0x00698082, 0x00140014 },
- { 0x00400048, 0x24003e2c, 0x00698083, 0x00140014 },
- { 0x00400048, 0xb8403e2d, 0x00698084, 0xfffbfffb },
- { 0x00000401, 0x220c0060, 0x00000000, 0x04e004d0 },
- { 0x00000c01, 0x22000060, 0x00000000, 0x04d004c8 },
- { 0x00000c01, 0x22040060, 0x00000000, 0x04e004d8 },
- { 0x00000801, 0x22080060, 0x00000000, 0x04f004e8 },
- { 0x00800040, 0x24003dac, 0x00b104c0, 0x02000200 },
- { 0x00800048, 0x24003dac, 0x00b104e0, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01ed9800, 0x00140014 },
- { 0x00010001, 0x220c0168, 0x00000000, 0x05400540 },
- { 0x00110001, 0x220c0168, 0x00000000, 0x04c004c0 },
- { 0x00800048, 0x24003dac, 0x01e98000, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01e98020, 0x00010001 },
- { 0x00800048, 0x24003dac, 0x01e98800, 0x00140014 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000060 },
- { 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000022 },
- { 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
- { 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
- { 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
- { 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
- { 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
- { 0x00010001, 0x220e0168, 0x02000000, 0x05400540 },
- { 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
- { 0x00800040, 0x24003e2c, 0x01e98000, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01e98001, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e98002, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e98003, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e98004, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e98005, 0x00010001 },
- { 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000036 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000036 },
- { 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x03600010, 0x20003dac, 0x02000444, 0x00020002 },
- { 0x00400401, 0x22000128, 0x0069044c, 0x00000000 },
- { 0x00400840, 0x22083d2c, 0x0069044c, 0x00100010 },
- { 0x00610040, 0x22002d08, 0x02690200, 0x00010001 },
- { 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00800040, 0x24003e2c, 0x01e983e0, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01e98000, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e98020, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e993e0, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e99000, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e99020, 0x00010001 },
- { 0x00000001, 0x220e0168, 0x00000000, 0x05400540 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
- { 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
- { 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000e },
- { 0x00400001, 0x22000128, 0x0069044c, 0x00000000 },
- { 0x01400010, 0x20003dac, 0x00000444, 0x00030003 },
- { 0x01400010, 0x20003dac, 0x02000446, 0x00030003 },
- { 0x00410040, 0x22002d08, 0x00690200, 0x00010001 },
- { 0x00410040, 0x22002d08, 0x02690200, 0x00100010 },
- { 0x00800001, 0x25400229, 0x01e98000, 0x00000000 },
- { 0x80800042, 0x45404631, 0x00d20540, 0x00d204c0 },
- { 0x00000001, 0x220c0128, 0x00000454, 0x00000000 },
- { 0x00400001, 0xd8000231, 0x008a0540, 0x00000000 },
- { 0x00400001, 0xd8100231, 0x008a0548, 0x00000000 },
- { 0x00400001, 0xd8200231, 0x008a0550, 0x00000000 },
- { 0x00400001, 0xd8300231, 0x008a0558, 0x00000000 },
- { 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
- { 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
- { 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
- { 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
- { 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
- { 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
- { 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
- { 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
- { 0x00600041, 0x24002628, 0x00898000, 0x00000540 },
- { 0x00600048, 0x24002628, 0x00898002, 0x00000542 },
- { 0x00600048, 0x24002628, 0x00898008, 0x00000544 },
- { 0x00600048, 0x2540262d, 0x0089800a, 0x00000546 },
- { 0x00400401, 0xbc0001a9, 0x00690540, 0x00000000 },
- { 0x00400801, 0xbc1001a9, 0x00690548, 0x00000000 },
- { 0x01000010, 0x20003d2c, 0x00000022, 0x00030003 },
- { 0x01000040, 0x20223d29, 0x02000022, 0xffffffff },
- { 0x00000040, 0x220c3d8c, 0x0000020c, 0x00080008 },
- { 0x00110040, 0x24540c21, 0x00000454, 0x00080008 },
- { 0x00010040, 0x24540c21, 0x00000454, 0x00180038 },
- { 0x00110220, 0x34001c00, 0x02001400, 0xfffffee6 },
- { 0x01800010, 0x20003dac, 0x0200010e, 0x00010001 },
- { 0x00000040, 0x220c3d8c, 0x0000020c, 0xffe0ffe0 },
- { 0x00010001, 0x24540061, 0x02000000, 0x06c00640 },
- { 0x00110001, 0x24540061, 0x02000000, 0x04800780 },
- { 0x00000001, 0x220e0128, 0x00000456, 0x00000000 },
- { 0x00800040, 0x24003dac, 0x00b19c00, 0x00200020 },
- { 0x00800040, 0x24203dac, 0x00b19c20, 0x00200020 },
- { 0x8080000c, 0xdc003d91, 0x00b10400, 0x00060006 },
- { 0x8080000c, 0xdc203d91, 0x00b10420, 0x00060006 },
- { 0x02000040, 0x210e3d29, 0x0200010e, 0xffffffff },
- { 0x00000040, 0x220c3d8c, 0x0000020c, 0x00040004 },
- { 0x00110220, 0x34001c00, 0x02001400, 0xfffffcf8 },
- { 0x01000005, 0x25643e2d, 0x00000060, 0x00c000c0 },
- { 0x01000010, 0x20003dac, 0x02000458, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x01000010, 0x20003dac, 0x00000458, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00a02001, 0x46400231, 0x00d20780, 0x00000000 },
- { 0x00a02001, 0x46800231, 0x00d207c0, 0x00000000 },
- { 0x00a02001, 0x46c00231, 0x00d20480, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000007e },
- { 0x80a02042, 0x46404631, 0x00d20640, 0x00d20780 },
- { 0x80a02042, 0x46804631, 0x00d20680, 0x00d207c0 },
- { 0x80a02042, 0x46c04631, 0x00d206c0, 0x00d20480 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000076 },
- { 0x01000010, 0x20003dac, 0x02000564, 0x00800080 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x0000000e },
- { 0x01000010, 0x20003dac, 0x00000458, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xffffffe4 },
- { 0x00200401, 0x256801ed, 0x00000000, 0x00200020 },
- { 0x00200801, 0x256c01ed, 0x00000000, 0x00060006 },
- { 0x00400001, 0x258001ed, 0x00000000, 0x00000000 },
- { 0x00600001, 0x45a001ad, 0x00058c00, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000028 },
- { 0x02600005, 0x20006e28, 0x02008c0c, 0x88848421 },
- { 0x0220000c, 0x25663dad, 0x00000458, 0x00010001 },
- { 0x0000000c, 0x25643dad, 0x00000564, 0x00060006 },
- { 0x00310001, 0x25c401ad, 0x00000458, 0x00000000 },
- { 0x00210001, 0x25c00061, 0x00000000, 0x00010001 },
- { 0x00310040, 0x25c03dad, 0x004545c4, 0x00010001 },
- { 0x00610001, 0x25a00061, 0x02000000, 0x00000080 },
- { 0x00710001, 0x45a002ad, 0x02ae8c00, 0x00000000 },
- { 0x00710001, 0x45a202ad, 0x02ae8c01, 0x00000000 },
- { 0x00800041, 0x25a035ad, 0x00b105a0, 0x000905c0 },
- { 0x01200010, 0x20003e2c, 0x0245006e, 0x00000000 },
- { 0x00310009, 0x244c45ad, 0x02000564, 0x0045006e },
- { 0x00210001, 0x244c01ed, 0x02000000, 0x00000000 },
- { 0x0031000c, 0x244c3dad, 0x0245044c, 0x00010001 },
- { 0x00200009, 0x256835ad, 0x0045044c, 0x00000566 },
- { 0x00210040, 0x256835ad, 0x02450568, 0x00000566 },
- { 0x00200040, 0x256c362d, 0x0045006e, 0x00000566 },
- { 0x00400040, 0x240035ac, 0x00ab05a2, 0x00ab05a6 },
- { 0x00400040, 0x2400358c, 0x00690400, 0x00000566 },
- { 0x0040000c, 0x2580358d, 0x00690400, 0x00000566 },
- { 0x00800041, 0x2400362c, 0x00d20640, 0x000005a0 },
- { 0x00800041, 0x2420362c, 0x00d20660, 0x000005a0 },
- { 0x00800048, 0x2400362c, 0x00d20780, 0x000005a4 },
- { 0x00800048, 0x2420362c, 0x00d207a0, 0x000005a4 },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
- { 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
- { 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
- { 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
- { 0x80800040, 0x464035b1, 0x00b104c0, 0x00000580 },
- { 0x80800040, 0x466035b1, 0x00b104e0, 0x00000580 },
- { 0x00800041, 0x2400362c, 0x00d20680, 0x000005a0 },
- { 0x00800041, 0x2420362c, 0x00d206a0, 0x000005a0 },
- { 0x00800048, 0x2400362c, 0x00d207c0, 0x000005a4 },
- { 0x00800048, 0x2420362c, 0x00d207e0, 0x000005a4 },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
- { 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
- { 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
- { 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
- { 0x80800040, 0x468035b1, 0x00b104c0, 0x00000580 },
- { 0x80800040, 0x46a035b1, 0x00b104e0, 0x00000580 },
- { 0x00800041, 0x2400362c, 0x00d206c0, 0x000705a8 },
- { 0x00800041, 0x2420362c, 0x00d206e0, 0x000705a8 },
- { 0x00800048, 0x2400362c, 0x00d20480, 0x000705ac },
- { 0x00800048, 0x2420362c, 0x00d204a0, 0x000705ac },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x0000056a },
- { 0x00800040, 0x2420358c, 0x00b10420, 0x0000056a },
- { 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056e },
- { 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056e },
- { 0x80800040, 0x46c035b1, 0x00b104c0, 0x00050582 },
- { 0x80800040, 0x46e035b1, 0x00b104e0, 0x00050582 },
- { 0x01800005, 0x20003d2c, 0x02000020, 0x00020002 },
- { 0x80800040, 0xd00045b1, 0x00b19000, 0x00d20640 },
- { 0x80800040, 0xd02045b1, 0x00b19020, 0x00d20660 },
- { 0x80800040, 0xd04045b1, 0x00b19040, 0x00d20680 },
- { 0x80800040, 0xd06045b1, 0x00b19060, 0x00d206a0 },
- { 0x00000040, 0x22083d8c, 0x00000208, 0x00800080 },
- { 0x80400040, 0xd40045b1, 0x00699400, 0x00ab06c0 },
- { 0x80400040, 0xd48045b1, 0x00699480, 0x00ab06c2 },
- { 0x80400040, 0xd42045b1, 0x00699420, 0x00ab06e0 },
- { 0x80400040, 0xd4a045b1, 0x006994a0, 0x00ab06e2 },
- { 0x80400040, 0xd41045b1, 0x00699410, 0x00ab06d0 },
- { 0x80400040, 0xd49045b1, 0x00699490, 0x00ab06d2 },
- { 0x80400040, 0xd43045b1, 0x00699430, 0x00ab06f0 },
- { 0x80400040, 0xd4b045b1, 0x006994b0, 0x00ab06f2 },
- { 0x00000040, 0x220a3d8c, 0x0000020a, 0x00080008 },
- { 0x00110040, 0x220a3d8c, 0x0200020a, 0x00300030 },
- { 0x01000010, 0x20003d2c, 0x02000020, 0x00060006 },
- { 0x00000040, 0x20203d29, 0x00000020, 0x00020002 },
- { 0x00000040, 0x22040c00, 0x00000204, 0x00100001 },
- { 0x00000040, 0x220c358c, 0x0000020c, 0x0000003a },
- { 0x00110220, 0x34001c00, 0x02001400, 0xfffffc36 },
- { 0x00000001, 0x220001ec, 0x00000000, 0x01400140 },
- { 0x00000001, 0x220201ec, 0x00000000, 0x01c001c0 },
- { 0x00800401, 0x20400236, 0x01ee8000, 0x00000000 },
- { 0x00800801, 0x20500236, 0x01ee8010, 0x00000000 },
- { 0x00800401, 0x20600236, 0x01ee8020, 0x00000000 },
- { 0x00800801, 0x20700236, 0x01ee8030, 0x00000000 },
- { 0x00800401, 0x20800236, 0x01ee8040, 0x00000000 },
- { 0x00800801, 0x20900236, 0x01ee8050, 0x00000000 },
- { 0x00800401, 0x20a00236, 0x01ee8060, 0x00000000 },
- { 0x00800801, 0x20b00236, 0x01ee8070, 0x00000000 },
- { 0x00800401, 0x20c00236, 0x01ee8100, 0x00000000 },
- { 0x00800801, 0x20d00236, 0x01ee8110, 0x00000000 },
- { 0x00800401, 0x20e00236, 0x01ee8120, 0x00000000 },
- { 0x00800801, 0x20f00236, 0x01ee8130, 0x00000000 },
- { 0x00800401, 0x21000236, 0x01ee8140, 0x00000000 },
- { 0x00800801, 0x21100236, 0x01ee8150, 0x00000000 },
- { 0x00800401, 0x21200236, 0x01ee8160, 0x00000000 },
- { 0x00800801, 0x21300236, 0x01ee8170, 0x00000000 },
- { 0x00200401, 0x204001a5, 0x00450064, 0x00000000 },
- { 0x00000801, 0x20480061, 0x00000000, 0x000f000f },
- { 0x01600031, 0x21401c21, 0x508d0040, 0x1218a000 },
- { 0x00000001, 0x220001ec, 0x00000000, 0x03400340 },
- { 0x00800401, 0x41600236, 0x00d28000, 0x00000000 },
- { 0x00800801, 0x41610236, 0x00d28080, 0x00000000 },
- { 0x00800401, 0x41800236, 0x00d28020, 0x00000000 },
- { 0x00800801, 0x41810236, 0x00d280a0, 0x00000000 },
- { 0x00800401, 0x41a00236, 0x00d28040, 0x00000000 },
- { 0x00800801, 0x41a10236, 0x00d280c0, 0x00000000 },
- { 0x00800401, 0x41c00236, 0x00d28060, 0x00000000 },
- { 0x00800801, 0x41c10236, 0x00d280e0, 0x00000000 },
- { 0x0000040c, 0x20443ca5, 0x00000044, 0x00010001 },
- { 0x00000801, 0x20480061, 0x00000000, 0x0007000f },
- { 0x0a600031, 0x21601c21, 0x508d0040, 0x0a18a001 },
- { 0x00000001, 0x21400021, 0x00000140, 0x00000000 },
- { 0x00000001, 0x21600021, 0x00000160, 0x00000000 },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x00600001, 0x20400021, 0x008d0000, 0x00000000 },
- { 0x00000005, 0x20203e2d, 0x00000061, 0x001f001f },
- { 0x00200009, 0x20643e2d, 0x00450064, 0x00040004 },
- { 0x00000001, 0x203a01ed, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000020, 0x00160016 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x01200010, 0x20003e2c, 0x0200006c, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000024 },
- { 0x00800009, 0x25403dad, 0x00050064, 0x00020002 },
- { 0x00000001, 0x203a01ed, 0x00000000, 0x00180018 },
- { 0x00200040, 0x45483dad, 0x00660548, 0x00100010 },
- { 0x00200040, 0x45523dad, 0x00660552, 0x00100010 },
- { 0x00400040, 0x25583dad, 0x00690558, 0x00100010 },
- { 0x00800040, 0x208035ad, 0x00b10080, 0x00b10540 },
- { 0x00600040, 0x45403dad, 0x00ae0540, 0x00200020 },
- { 0x00800040, 0x20a035ad, 0x00b100a0, 0x00b10540 },
- { 0x00600040, 0x45423dad, 0x00ae0542, 0x00200020 },
- { 0x00800040, 0x20e035ad, 0x00b100e0, 0x00b10540 },
- { 0x00600040, 0x45403dad, 0x00ae0540, 0xffe0ffe0 },
- { 0x00800040, 0x20c035ad, 0x00b100c0, 0x00b10540 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x06600010, 0x20003dac, 0x02000020, 0x00030003 },
- { 0x00000001, 0x206c0171, 0x00000000, 0x00000000 },
- { 0x00610001, 0x208000a5, 0x02050080, 0x00000000 },
- { 0x00610001, 0x212000a5, 0x02090100, 0x00000000 },
- { 0x00410001, 0x211000a5, 0x02690100, 0x00000000 },
- { 0x00200009, 0x25403dad, 0x00450064, 0x00020002 },
- { 0x00800040, 0x208035ad, 0x00b10080, 0x00050540 },
- { 0x00200040, 0x40883dad, 0x00660088, 0x00200020 },
- { 0x00200040, 0x40923dad, 0x00660092, 0x00200020 },
- { 0x00400040, 0x20983dad, 0x00690098, 0x00200020 },
- { 0x00200401, 0x22080060, 0x00000000, 0x03400140 },
- { 0x00000c01, 0x220c0060, 0x00000000, 0x04400080 },
- { 0x00000801, 0x22040060, 0x00000000, 0x01000070 },
- { 0x00000005, 0x203e2e29, 0x00000063, 0x00010001 },
- { 0x00000001, 0x20200169, 0x00000000, 0x00000000 },
- { 0x0000000c, 0x2458262d, 0x0000006d, 0x00000020 },
- { 0x00000001, 0x210e0169, 0x00000000, 0x00010001 },
- { 0x00000005, 0x24583dad, 0x00000458, 0x00030003 },
- { 0x01000010, 0x200035ac, 0x0000010e, 0x00000458 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000316 },
- { 0x01000010, 0x20003dac, 0x0200010e, 0x00010001 },
- { 0x00010401, 0x24540061, 0x02000000, 0x06c00640 },
- { 0x00010805, 0x245a3e2d, 0x02008800, 0x007f007f },
- { 0x00110401, 0x24540061, 0x02000000, 0x04800780 },
- { 0x00110805, 0x245a3e2d, 0x02008804, 0x007f007f },
- { 0x00010005, 0x245c3e2d, 0x02008800, 0x00800080 },
- { 0x00110005, 0x245c3e2d, 0x02008804, 0x00800080 },
- { 0x00000009, 0x245c3dad, 0x0000045c, 0x00010001 },
- { 0x0000000c, 0x211e362d, 0x0000006c, 0x00000020 },
- { 0x00000040, 0x240035ac, 0x0000003e, 0x0000045c },
- { 0x01000010, 0x20003d8c, 0x00210400, 0x00010001 },
- { 0x01000010, 0x20003d8c, 0x02210400, 0x01000100 },
- { 0x00000001, 0x203c01ed, 0x00000000, 0x00000000 },
- { 0x00010001, 0x203c01ed, 0x00000000, 0x00020002 },
- { 0x00010001, 0x203c01ed, 0x02000000, 0xfffefffe },
- { 0x00000040, 0x20780d21, 0x0000045a, 0x0208e602 },
- { 0x00000040, 0x20782421, 0x00000078, 0x0000045c },
- { 0x02000005, 0x20003dac, 0x0200011e, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000001c0 },
- { 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
- { 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
- { 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
- { 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000012 },
- { 0x00010040, 0x22000c20, 0x02000078, 0x00400000 },
- { 0x00110040, 0x22000c20, 0x02000078, 0x00700000 },
- { 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
- { 0x00110001, 0x20480061, 0x02000000, 0x000c000c },
- { 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
- { 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
- { 0x00010001, 0x20480061, 0x02000000, 0x0007000c },
- { 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
- { 0x00110040, 0x22000c20, 0x02000078, 0x00400000 },
- { 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
- { 0x00110040, 0x20441da5, 0x02000442, 0xfffffffe },
- { 0x00110001, 0x20480061, 0x02000000, 0x000c0007 },
- { 0x00010001, 0x20480061, 0x02000000, 0x00070007 },
- { 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
- { 0x00000040, 0xb80235ad, 0x00009802, 0x0000003c },
- { 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
- { 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
- { 0x01600006, 0x20003dac, 0x0000044a, 0x00000000 },
- { 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
- { 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
- { 0x00010040, 0x22000c20, 0x00000078, 0x00200010 },
- { 0x00110040, 0x22000c20, 0x00000078, 0x00300010 },
- { 0x00010001, 0x20480061, 0x00000000, 0x00030009 },
- { 0x00110001, 0x20480061, 0x00000000, 0x00040009 },
- { 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
- { 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000001a },
- { 0x00600001, 0x26220231, 0x008d05c0, 0x00000000 },
- { 0x00600401, 0x26120231, 0x008d05b8, 0x00000000 },
- { 0x00600801, 0x26020231, 0x008d05b0, 0x00000000 },
- { 0x00600401, 0x25f20231, 0x008d05a8, 0x00000000 },
- { 0x00600801, 0x25e20231, 0x008d05a0, 0x00000000 },
- { 0x00600401, 0x25d20231, 0x008d0598, 0x00000000 },
- { 0x00600801, 0x25c20231, 0x008d0590, 0x00000000 },
- { 0x00600401, 0x25b20231, 0x008d0588, 0x00000000 },
- { 0x00600801, 0x25a20231, 0x008d0580, 0x00000000 },
- { 0x00600401, 0x25920231, 0x008d0578, 0x00000000 },
- { 0x00600801, 0x25820231, 0x008d0570, 0x00000000 },
- { 0x00600001, 0x25720231, 0x008d0568, 0x00000000 },
- { 0x00600001, 0x25620231, 0x008d0560, 0x00000000 },
- { 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
- { 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
- { 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
- { 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
- { 0x00810001, 0xbc000229, 0x02ad8000, 0x00000000 },
- { 0x00810001, 0xbc200229, 0x02ad8020, 0x00000000 },
- { 0x00810001, 0xbc400229, 0x02ad8040, 0x00000000 },
- { 0x00810001, 0xbc600229, 0x02ad8060, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000012a },
- { 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
- { 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
- { 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
- { 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
- { 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
- { 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000066 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000064 },
- { 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
- { 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
- { 0x00000801, 0x220c0060, 0x00000000, 0x04a00480 },
- { 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
- { 0x00a02040, 0x2400462c, 0x00ad8000, 0x00ad8005 },
- { 0x00a02048, 0x24003e2c, 0x00ad8001, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8002, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8003, 0x00140014 },
- { 0x00a02048, 0xb8003e2d, 0x00ad8004, 0xfffbfffb },
- { 0x00a02040, 0x2400462c, 0x00ad8040, 0x00ad8045 },
- { 0x00a02048, 0x24003e2c, 0x00ad8041, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8042, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8043, 0x00140014 },
- { 0x00a02048, 0xb8403e2d, 0x00ad8044, 0xfffbfffb },
- { 0x00a02040, 0x2400462c, 0x00ad8080, 0x00ad8085 },
- { 0x00a02048, 0x24003e2c, 0x00ad8081, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8082, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8083, 0x00140014 },
- { 0x00a02048, 0xb8803e2d, 0x00ad8084, 0xfffbfffb },
- { 0x00600040, 0x2400462c, 0x008d80c0, 0x008d80c5 },
- { 0x00600048, 0x24003e2c, 0x008d80c1, 0xfffbfffb },
- { 0x00600048, 0x24003e2c, 0x008d80c2, 0x00140014 },
- { 0x00600048, 0x24003e2c, 0x008d80c3, 0x00140014 },
- { 0x00600048, 0xb8c03e2d, 0x008d80c4, 0xfffbfffb },
- { 0x00000401, 0x22000060, 0x00000000, 0x04a00480 },
- { 0x00000c01, 0x22040060, 0x00000000, 0x04a00490 },
- { 0x00010802, 0x220c2d28, 0x00000454, 0x04800480 },
- { 0x00a02040, 0x24003dac, 0x00b18000, 0x02000200 },
- { 0x00800048, 0x24003dac, 0x01ed8800, 0xfffbfffb },
- { 0x00800048, 0x24203dac, 0x01ed8820, 0xfffbfffb },
- { 0x00a02048, 0x24003dac, 0x00b18020, 0x00140014 },
- { 0x00800048, 0x24003dac, 0x01ed8820, 0x00140014 },
- { 0x00800048, 0x24203dac, 0x01ed8840, 0x00140014 },
- { 0x00a02048, 0x24003dac, 0x00b18040, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01ed8840, 0x00010001 },
- { 0x00800048, 0x24203dac, 0x01ed8860, 0x00010001 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
- { 0x8080100c, 0xd8203d91, 0x00b10420, 0x000a000a },
- { 0x00a02040, 0x24003dac, 0x00b18040, 0x02000200 },
- { 0x00800048, 0x24003dac, 0x01ed8840, 0xfffbfffb },
- { 0x00800048, 0x24203dac, 0x01ed8860, 0xfffbfffb },
- { 0x00a02048, 0x24003dac, 0x00b18060, 0x00140014 },
- { 0x00800048, 0x24003dac, 0x01ed8860, 0x00140014 },
- { 0x00800048, 0x24203dac, 0x01ed8880, 0x00140014 },
- { 0x00a02048, 0x24003dac, 0x00b18080, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01ed8880, 0x00010001 },
- { 0x00800048, 0x24203dac, 0x01ed88a0, 0x00010001 },
- { 0x8080000c, 0xd8403d91, 0x00b10400, 0x000a000a },
- { 0x8080100c, 0xd8603d91, 0x00b10420, 0x000a000a },
- { 0x00010220, 0x34001c00, 0x00001400, 0x000000b4 },
- { 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000004c },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000004a },
- { 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
- { 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
- { 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
- { 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
- { 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
- { 0x00010002, 0x220c2d28, 0x02000454, 0x04800480 },
- { 0x00800040, 0x24003e2c, 0x01ed8000, 0x00100010 },
- { 0x00800040, 0x24203e2c, 0x01ed8020, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8001, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8021, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8002, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8022, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8003, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8023, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8004, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8024, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8005, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8025, 0x00010001 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
- { 0x00800040, 0x24003e2c, 0x01ed8040, 0x00100010 },
- { 0x00800040, 0x24203e2c, 0x01ed8060, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8041, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8061, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8042, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8062, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8043, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8063, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8044, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8064, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8045, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8065, 0x00010001 },
- { 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000005c },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000062 },
- { 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000042 },
- { 0x00200401, 0x22000128, 0x0066044c, 0x00000000 },
- { 0x00200c01, 0x22040128, 0x0045044e, 0x00000000 },
- { 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
- { 0x03400010, 0x20003dac, 0x02000444, 0x00020002 },
- { 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
- { 0x00410040, 0x22002d08, 0x02690200, 0x00010001 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
- { 0x00110001, 0x220c0168, 0x02000000, 0x04800480 },
- { 0x00a02040, 0x24003e2c, 0x00ad83e0, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8be0, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8800, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8000, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8800, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8820, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8020, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8820, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8840, 0x00010001 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
- { 0x00a02040, 0x24003e2c, 0x00ad8020, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8820, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8840, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8040, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8840, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8860, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8060, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8860, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8880, 0x00010001 },
- { 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001c },
- { 0x00200401, 0x22000128, 0x0045044c, 0x00000000 },
- { 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
- { 0x01200010, 0x20003dac, 0x00000444, 0x00030003 },
- { 0x01200010, 0x20003dac, 0x02000446, 0x00030003 },
- { 0x00210040, 0x22002d08, 0x00450200, 0x00010001 },
- { 0x00210040, 0x22002d08, 0x02450200, 0x00100010 },
- { 0x00800001, 0xb8000229, 0x01ed8000, 0x00000000 },
- { 0x00800001, 0xb8200229, 0x01ed8020, 0x00000000 },
- { 0x00800001, 0xb8400229, 0x01ed8040, 0x00000000 },
- { 0x00800001, 0xb8600229, 0x01ed8060, 0x00000000 },
- { 0x80800042, 0xd8004631, 0x00d29800, 0x00d20480 },
- { 0x80800042, 0xd8204631, 0x00d29820, 0x00d204a0 },
- { 0x80800042, 0xd8404631, 0x00d29840, 0x00d204c0 },
- { 0x80800042, 0xd8604631, 0x00d29860, 0x00d204e0 },
- { 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
- { 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
- { 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
- { 0x00000c01, 0x220201e8, 0x00000000, 0x07100710 },
- { 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
- { 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
- { 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
- { 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
- { 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
- { 0x00200040, 0x244c3d09, 0x00450200, 0x00100010 },
- { 0x00800041, 0x24002628, 0x00ad8000, 0x00000540 },
- { 0x00800041, 0x24202628, 0x00ad8020, 0x00000540 },
- { 0x00800048, 0x24002628, 0x00ad8002, 0x00000542 },
- { 0x00800048, 0x24202628, 0x00ad8022, 0x00000542 },
- { 0x00200001, 0x22000128, 0x0045044c, 0x00000000 },
- { 0x00800048, 0x24002628, 0x01ed8000, 0x00000544 },
- { 0x00800048, 0x24202628, 0x01ed8020, 0x00000544 },
- { 0x00800048, 0xbc002629, 0x01ed8002, 0x00000546 },
- { 0x00801048, 0xbc202629, 0x01ed8022, 0x00000546 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000128 },
- { 0x00000001, 0x20220169, 0x00000000, 0x00040004 },
- { 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
- { 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
- { 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
- { 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
- { 0x00110040, 0x22000c20, 0x02000078, 0x00500000 },
- { 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
- { 0x00110001, 0x20480061, 0x02000000, 0x00080008 },
- { 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
- { 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
- { 0x00010001, 0x20480061, 0x02000000, 0x00030008 },
- { 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
- { 0x00000040, 0xb80235ad, 0x00009802, 0x0000003c },
- { 0x00000040, 0x22000c20, 0x00000078, 0x00100010 },
- { 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
- { 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
- { 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
- { 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
- { 0x00000001, 0x20480061, 0x00000000, 0x00020005 },
- { 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
- { 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
- { 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
- { 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
- { 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
- { 0x00410001, 0xbc000229, 0x02698000, 0x00000000 },
- { 0x00410001, 0xbc100229, 0x02698010, 0x00000000 },
- { 0x00410001, 0xbc200229, 0x02698020, 0x00000000 },
- { 0x00410001, 0xbc300229, 0x02698030, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000be },
- { 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
- { 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
- { 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
- { 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
- { 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
- { 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000044 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000042 },
- { 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
- { 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
- { 0x00000801, 0x220c0060, 0x00000000, 0x04d004c0 },
- { 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
- { 0x00802040, 0x2400462c, 0x00a98000, 0x00a98005 },
- { 0x00802048, 0x24003e2c, 0x00a98001, 0xfffbfffb },
- { 0x00802048, 0x24003e2c, 0x00a98002, 0x00140014 },
- { 0x00802048, 0x24003e2c, 0x00a98003, 0x00140014 },
- { 0x00802048, 0xb8003e2d, 0x00a98004, 0xfffbfffb },
- { 0x00802040, 0x2400462c, 0x00a98040, 0x00a98045 },
- { 0x00802048, 0x24003e2c, 0x00a98041, 0xfffbfffb },
- { 0x00802048, 0x24003e2c, 0x00a98042, 0x00140014 },
- { 0x00802048, 0x24003e2c, 0x00a98043, 0x00140014 },
- { 0x00802048, 0xb8203e2d, 0x00a98044, 0xfffbfffb },
- { 0x00400040, 0x2400462c, 0x00698080, 0x00698085 },
- { 0x00400048, 0x24003e2c, 0x00698081, 0xfffbfffb },
- { 0x00400048, 0x24003e2c, 0x00698082, 0x00140014 },
- { 0x00400048, 0x24003e2c, 0x00698083, 0x00140014 },
- { 0x00400048, 0xb8403e2d, 0x00698084, 0xfffbfffb },
- { 0x00000401, 0x220c0060, 0x00000000, 0x04e004d0 },
- { 0x00000c01, 0x22000060, 0x00000000, 0x04d004c8 },
- { 0x00000c01, 0x22040060, 0x00000000, 0x04e004d8 },
- { 0x00000801, 0x22080060, 0x00000000, 0x04f004e8 },
- { 0x00800040, 0x24003dac, 0x00b104c0, 0x02000200 },
- { 0x00800048, 0x24003dac, 0x00b104e0, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01ed9800, 0x00140014 },
- { 0x00010001, 0x220c0168, 0x00000000, 0x05400540 },
- { 0x00110001, 0x220c0168, 0x00000000, 0x04c004c0 },
- { 0x00800048, 0x24003dac, 0x01e98000, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01e98020, 0x00010001 },
- { 0x00800048, 0x24003dac, 0x01e98800, 0x00140014 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000060 },
- { 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000022 },
- { 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
- { 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
- { 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
- { 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
- { 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
- { 0x00010001, 0x220e0168, 0x02000000, 0x05400540 },
- { 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
- { 0x00800040, 0x24003e2c, 0x01e98000, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01e98001, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e98002, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e98003, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e98004, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e98005, 0x00010001 },
- { 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000036 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000036 },
- { 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x03600010, 0x20003dac, 0x02000444, 0x00020002 },
- { 0x00400401, 0x22000128, 0x0069044c, 0x00000000 },
- { 0x00400840, 0x22083d2c, 0x0069044c, 0x00100010 },
- { 0x00610040, 0x22002d08, 0x02690200, 0x00010001 },
- { 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00800040, 0x24003e2c, 0x01e983e0, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01e98000, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e98020, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e993e0, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e99000, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e99020, 0x00010001 },
- { 0x00000001, 0x220e0168, 0x00000000, 0x05400540 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
- { 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
- { 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000e },
- { 0x00400001, 0x22000128, 0x0069044c, 0x00000000 },
- { 0x01400010, 0x20003dac, 0x00000444, 0x00030003 },
- { 0x01400010, 0x20003dac, 0x02000446, 0x00030003 },
- { 0x00410040, 0x22002d08, 0x00690200, 0x00010001 },
- { 0x00410040, 0x22002d08, 0x02690200, 0x00100010 },
- { 0x00800001, 0x25400229, 0x01e98000, 0x00000000 },
- { 0x80800042, 0x45404631, 0x00d20540, 0x00d204c0 },
- { 0x00000001, 0x220c0128, 0x00000454, 0x00000000 },
- { 0x00400001, 0xd8000231, 0x008a0540, 0x00000000 },
- { 0x00400001, 0xd8100231, 0x008a0548, 0x00000000 },
- { 0x00400001, 0xd8200231, 0x008a0550, 0x00000000 },
- { 0x00400001, 0xd8300231, 0x008a0558, 0x00000000 },
- { 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
- { 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
- { 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
- { 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
- { 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
- { 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
- { 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
- { 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
- { 0x00600041, 0x24002628, 0x00898000, 0x00000540 },
- { 0x00600048, 0x24002628, 0x00898002, 0x00000542 },
- { 0x00600048, 0x24002628, 0x00898008, 0x00000544 },
- { 0x00600048, 0x2540262d, 0x0089800a, 0x00000546 },
- { 0x00400401, 0xbc0001a9, 0x00690540, 0x00000000 },
- { 0x00400801, 0xbc1001a9, 0x00690548, 0x00000000 },
- { 0x01000010, 0x20003d2c, 0x00000022, 0x00030003 },
- { 0x01000040, 0x20223d29, 0x02000022, 0xffffffff },
- { 0x00000040, 0x220c3d8c, 0x0000020c, 0x00080008 },
- { 0x00110040, 0x24540c21, 0x00000454, 0x00080008 },
- { 0x00010040, 0x24540c21, 0x00000454, 0x00180038 },
- { 0x00110220, 0x34001c00, 0x02001400, 0xfffffee4 },
- { 0x01800010, 0x20003dac, 0x0200010e, 0x00010001 },
- { 0x00000040, 0x220c3d8c, 0x0000020c, 0xffe0ffe0 },
- { 0x00010001, 0x24540061, 0x02000000, 0x06c00640 },
- { 0x00110001, 0x24540061, 0x02000000, 0x04800780 },
- { 0x00000001, 0x220e0128, 0x00000456, 0x00000000 },
- { 0x00800040, 0x24003dac, 0x00b19c00, 0x00200020 },
- { 0x00800040, 0x24203dac, 0x00b19c20, 0x00200020 },
- { 0x8080000c, 0xdc003d91, 0x00b10400, 0x00060006 },
- { 0x8080000c, 0xdc203d91, 0x00b10420, 0x00060006 },
- { 0x02000040, 0x210e3d29, 0x0200010e, 0xffffffff },
- { 0x00000040, 0x220c3d8c, 0x0000020c, 0x00040004 },
- { 0x00110220, 0x34001c00, 0x02001400, 0xfffffce0 },
- { 0x01000005, 0x25643e2d, 0x00000060, 0x00c000c0 },
- { 0x01000010, 0x20003dac, 0x02000458, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x01000010, 0x20003dac, 0x00000458, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00a02001, 0x46400231, 0x00d20780, 0x00000000 },
- { 0x00a02001, 0x46800231, 0x00d207c0, 0x00000000 },
- { 0x00a02001, 0x46c00231, 0x00d20480, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000007e },
- { 0x80a02042, 0x46404631, 0x00d20640, 0x00d20780 },
- { 0x80a02042, 0x46804631, 0x00d20680, 0x00d207c0 },
- { 0x80a02042, 0x46c04631, 0x00d206c0, 0x00d20480 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000076 },
- { 0x01000010, 0x20003dac, 0x02000564, 0x00800080 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x0000000e },
- { 0x01000010, 0x20003dac, 0x00000458, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xffffffe4 },
- { 0x00200401, 0x256801ed, 0x00000000, 0x00200020 },
- { 0x00200801, 0x256c01ed, 0x00000000, 0x00060006 },
- { 0x00400001, 0x258001ed, 0x00000000, 0x00000000 },
- { 0x00600001, 0x45a001ad, 0x00058c00, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000028 },
- { 0x02600005, 0x20006e28, 0x02008c0c, 0x88848421 },
- { 0x0220000c, 0x25663dad, 0x00000458, 0x00010001 },
- { 0x0000000c, 0x25643dad, 0x00000564, 0x00060006 },
- { 0x00310001, 0x25c401ad, 0x00000458, 0x00000000 },
- { 0x00210001, 0x25c00061, 0x00000000, 0x00010001 },
- { 0x00310040, 0x25c03dad, 0x004545c4, 0x00010001 },
- { 0x00610001, 0x25a00061, 0x02000000, 0x00000080 },
- { 0x00710001, 0x45a002ad, 0x02ae8c00, 0x00000000 },
- { 0x00710001, 0x45a202ad, 0x02ae8c01, 0x00000000 },
- { 0x00800041, 0x25a035ad, 0x00b105a0, 0x000905c0 },
- { 0x01200010, 0x20003e2c, 0x0245006e, 0x00000000 },
- { 0x00310009, 0x244c45ad, 0x02000564, 0x0045006e },
- { 0x00210001, 0x244c01ed, 0x02000000, 0x00000000 },
- { 0x0031000c, 0x244c3dad, 0x0245044c, 0x00010001 },
- { 0x00200009, 0x256835ad, 0x0045044c, 0x00000566 },
- { 0x00210040, 0x256835ad, 0x02450568, 0x00000566 },
- { 0x00200040, 0x256c362d, 0x0045006e, 0x00000566 },
- { 0x00400040, 0x240035ac, 0x00ab05a2, 0x00ab05a6 },
- { 0x00400040, 0x2400358c, 0x00690400, 0x00000566 },
- { 0x0040000c, 0x2580358d, 0x00690400, 0x00000566 },
- { 0x00800041, 0x2400362c, 0x00d20640, 0x000005a0 },
- { 0x00800041, 0x2420362c, 0x00d20660, 0x000005a0 },
- { 0x00800048, 0x2400362c, 0x00d20780, 0x000005a4 },
- { 0x00800048, 0x2420362c, 0x00d207a0, 0x000005a4 },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
- { 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
- { 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
- { 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
- { 0x80800040, 0x464035b1, 0x00b104c0, 0x00000580 },
- { 0x80800040, 0x466035b1, 0x00b104e0, 0x00000580 },
- { 0x00800041, 0x2400362c, 0x00d20680, 0x000005a0 },
- { 0x00800041, 0x2420362c, 0x00d206a0, 0x000005a0 },
- { 0x00800048, 0x2400362c, 0x00d207c0, 0x000005a4 },
- { 0x00800048, 0x2420362c, 0x00d207e0, 0x000005a4 },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
- { 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
- { 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
- { 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
- { 0x80800040, 0x468035b1, 0x00b104c0, 0x00000580 },
- { 0x80800040, 0x46a035b1, 0x00b104e0, 0x00000580 },
- { 0x00800041, 0x2400362c, 0x00d206c0, 0x000705a8 },
- { 0x00800041, 0x2420362c, 0x00d206e0, 0x000705a8 },
- { 0x00800048, 0x2400362c, 0x00d20480, 0x000705ac },
- { 0x00800048, 0x2420362c, 0x00d204a0, 0x000705ac },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x0000056a },
- { 0x00800040, 0x2420358c, 0x00b10420, 0x0000056a },
- { 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056e },
- { 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056e },
- { 0x80800040, 0x46c035b1, 0x00b104c0, 0x00050582 },
- { 0x80800040, 0x46e035b1, 0x00b104e0, 0x00050582 },
- { 0x01800005, 0x20003d2c, 0x02000020, 0x00020002 },
- { 0x80800040, 0xd00045b1, 0x00b19000, 0x00d20640 },
- { 0x80800040, 0xd02045b1, 0x00b19020, 0x00d20660 },
- { 0x80800040, 0xd04045b1, 0x00b19040, 0x00d20680 },
- { 0x80800040, 0xd06045b1, 0x00b19060, 0x00d206a0 },
- { 0x00000040, 0x22083d8c, 0x00000208, 0x00800080 },
- { 0x80400040, 0xd40045b1, 0x00699400, 0x00ab06c0 },
- { 0x80400040, 0xd48045b1, 0x00699480, 0x00ab06c2 },
- { 0x80400040, 0xd42045b1, 0x00699420, 0x00ab06e0 },
- { 0x80400040, 0xd4a045b1, 0x006994a0, 0x00ab06e2 },
- { 0x80400040, 0xd41045b1, 0x00699410, 0x00ab06d0 },
- { 0x80400040, 0xd49045b1, 0x00699490, 0x00ab06d2 },
- { 0x80400040, 0xd43045b1, 0x00699430, 0x00ab06f0 },
- { 0x80400040, 0xd4b045b1, 0x006994b0, 0x00ab06f2 },
- { 0x00000040, 0x220a3d8c, 0x0000020a, 0x00080008 },
- { 0x00110040, 0x220a3d8c, 0x0200020a, 0x00300030 },
- { 0x01000010, 0x20003d2c, 0x02000020, 0x00060006 },
- { 0x00000040, 0x20203d29, 0x00000020, 0x00020002 },
- { 0x00000040, 0x22040c00, 0x00000204, 0x00100001 },
- { 0x00000040, 0x220c358c, 0x0000020c, 0x0000003a },
- { 0x00110220, 0x34001c00, 0x02001400, 0xfffffc1e },
- { 0x00000001, 0x220001ec, 0x00000000, 0x01400140 },
- { 0x00000001, 0x220201ec, 0x00000000, 0x01c001c0 },
- { 0x00800401, 0x20400236, 0x01ee8000, 0x00000000 },
- { 0x00800801, 0x20500236, 0x01ee8010, 0x00000000 },
- { 0x00800401, 0x20600236, 0x01ee8020, 0x00000000 },
- { 0x00800801, 0x20700236, 0x01ee8030, 0x00000000 },
- { 0x00800401, 0x20800236, 0x01ee8040, 0x00000000 },
- { 0x00800801, 0x20900236, 0x01ee8050, 0x00000000 },
- { 0x00800401, 0x20a00236, 0x01ee8060, 0x00000000 },
- { 0x00800801, 0x20b00236, 0x01ee8070, 0x00000000 },
- { 0x00800401, 0x20c00236, 0x01ee8100, 0x00000000 },
- { 0x00800801, 0x20d00236, 0x01ee8110, 0x00000000 },
- { 0x00800401, 0x20e00236, 0x01ee8120, 0x00000000 },
- { 0x00800801, 0x20f00236, 0x01ee8130, 0x00000000 },
- { 0x00800401, 0x21000236, 0x01ee8140, 0x00000000 },
- { 0x00800801, 0x21100236, 0x01ee8150, 0x00000000 },
- { 0x00800401, 0x21200236, 0x01ee8160, 0x00000000 },
- { 0x00800801, 0x21300236, 0x01ee8170, 0x00000000 },
- { 0x00000040, 0x22000d20, 0x00000062, 0x1218a600 },
- { 0x00200401, 0x204001a5, 0x00450064, 0x00000000 },
- { 0x00000801, 0x20480061, 0x00000000, 0x000f000f },
- { 0x01600031, 0x21400021, 0x508d0040, 0x00000200 },
- { 0x00000001, 0x220001ec, 0x00000000, 0x03400340 },
- { 0x00800401, 0x41600236, 0x00d28000, 0x00000000 },
- { 0x00800801, 0x41610236, 0x00d28080, 0x00000000 },
- { 0x00800401, 0x41800236, 0x00d28020, 0x00000000 },
- { 0x00800801, 0x41810236, 0x00d280a0, 0x00000000 },
- { 0x00800401, 0x41a00236, 0x00d28040, 0x00000000 },
- { 0x00800801, 0x41a10236, 0x00d280c0, 0x00000000 },
- { 0x00800401, 0x41c00236, 0x00d28060, 0x00000000 },
- { 0x00800801, 0x41c10236, 0x00d280e0, 0x00000000 },
- { 0x00000040, 0x22000d20, 0x00000062, 0x0a18a601 },
- { 0x0000040c, 0x20443ca5, 0x00000044, 0x00010001 },
- { 0x00000801, 0x20480061, 0x00000000, 0x0007000f },
- { 0x0a600031, 0x21600021, 0x508d0040, 0x00000200 },
- { 0x00000001, 0x21400021, 0x00000140, 0x00000000 },
- { 0x00000001, 0x21600021, 0x00000160, 0x00000000 },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x20400021, 0x008d0000, 0x00000000 },
- { 0x00000005, 0x20203e2d, 0x00000061, 0x001f001f },
- { 0x00200009, 0x20643e2d, 0x00450064, 0x00040004 },
- { 0x00000001, 0x203a01ed, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000020, 0x00160016 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x01200010, 0x20003e2c, 0x0200006c, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000024 },
- { 0x00800009, 0x25403dad, 0x00050064, 0x00020002 },
- { 0x00000001, 0x203a01ed, 0x00000000, 0x00180018 },
- { 0x00200040, 0x45483dad, 0x00660548, 0x00100010 },
- { 0x00200040, 0x45523dad, 0x00660552, 0x00100010 },
- { 0x00400040, 0x25583dad, 0x00690558, 0x00100010 },
- { 0x00800040, 0x208035ad, 0x00b10080, 0x00b10540 },
- { 0x00600040, 0x45403dad, 0x00ae0540, 0x00200020 },
- { 0x00800040, 0x20a035ad, 0x00b100a0, 0x00b10540 },
- { 0x00600040, 0x45423dad, 0x00ae0542, 0x00200020 },
- { 0x00800040, 0x20e035ad, 0x00b100e0, 0x00b10540 },
- { 0x00600040, 0x45403dad, 0x00ae0540, 0xffe0ffe0 },
- { 0x00800040, 0x20c035ad, 0x00b100c0, 0x00b10540 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x06600010, 0x20003dac, 0x02000020, 0x00030003 },
- { 0x00000001, 0x206c0171, 0x00000000, 0x00000000 },
- { 0x00610001, 0x208000a5, 0x02050080, 0x00000000 },
- { 0x00610001, 0x212000a5, 0x02090100, 0x00000000 },
- { 0x00410001, 0x211000a5, 0x02690100, 0x00000000 },
- { 0x00200009, 0x25403dad, 0x00450064, 0x00020002 },
- { 0x00800040, 0x208035ad, 0x00b10080, 0x00050540 },
- { 0x00200040, 0x40883dad, 0x00660088, 0x00200020 },
- { 0x00200040, 0x40923dad, 0x00660092, 0x00200020 },
- { 0x00400040, 0x20983dad, 0x00690098, 0x00200020 },
- { 0x00200401, 0x22080060, 0x00000000, 0x03400140 },
- { 0x00000c01, 0x220c0060, 0x00000000, 0x04400080 },
- { 0x00000801, 0x22040060, 0x00000000, 0x01000070 },
- { 0x02000005, 0x20002e28, 0x00000061, 0x00400040 },
- { 0x00010005, 0x203e2e29, 0x00000063, 0x00010001 },
- { 0x00110001, 0x203e0169, 0x00000000, 0x00030003 },
- { 0x00000001, 0x20200169, 0x00000000, 0x00000000 },
- { 0x0000000c, 0x2458262d, 0x0000006d, 0x00000020 },
- { 0x00000001, 0x210e0169, 0x00000000, 0x00010001 },
- { 0x00000005, 0x24583dad, 0x00000458, 0x00030003 },
- { 0x01000010, 0x200035ac, 0x0000010e, 0x00000458 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000031a },
- { 0x01000010, 0x20003dac, 0x0200010e, 0x00010001 },
- { 0x00010401, 0x24540061, 0x02000000, 0x06c00640 },
- { 0x00010805, 0x245a3e2d, 0x02008800, 0x007f007f },
- { 0x00110401, 0x24540061, 0x02000000, 0x04800780 },
- { 0x00110805, 0x245a3e2d, 0x02008804, 0x007f007f },
- { 0x00010005, 0x245c3e2d, 0x02008800, 0x00800080 },
- { 0x00110005, 0x245c3e2d, 0x02008804, 0x00800080 },
- { 0x00000009, 0x245c3dad, 0x0000045c, 0x00010001 },
- { 0x0000000c, 0x211e362d, 0x0000006c, 0x00000020 },
- { 0x00000040, 0x240035ac, 0x0000003e, 0x0000045c },
- { 0x01000010, 0x20003d8c, 0x00210400, 0x00010001 },
- { 0x01000010, 0x20003d8c, 0x02210400, 0x01000100 },
- { 0x00000001, 0x203c01ed, 0x00000000, 0x00000000 },
- { 0x00010001, 0x203c01ed, 0x00000000, 0x00020002 },
- { 0x00010001, 0x203c01ed, 0x02000000, 0xfffefffe },
- { 0x02000005, 0x20002e28, 0x00000061, 0x00400040 },
- { 0x00010040, 0x244c0d21, 0x0000045a, 0x0208e602 },
- { 0x00110040, 0x20780d21, 0x0000045a, 0x0208a002 },
- { 0x00010040, 0x20782421, 0x0000044c, 0x0000045c },
- { 0x02000005, 0x20003dac, 0x0200011e, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000001c0 },
- { 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
- { 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
- { 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
- { 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000012 },
- { 0x00010040, 0x22000c20, 0x02000078, 0x00400000 },
- { 0x00110040, 0x22000c20, 0x02000078, 0x00700000 },
- { 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
- { 0x00110001, 0x20480061, 0x02000000, 0x000c000c },
- { 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
- { 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
- { 0x00010001, 0x20480061, 0x02000000, 0x0007000c },
- { 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
- { 0x00110040, 0x22000c20, 0x02000078, 0x00400000 },
- { 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
- { 0x00110040, 0x20441da5, 0x02000442, 0xfffffffe },
- { 0x00110001, 0x20480061, 0x02000000, 0x000c0007 },
- { 0x00010001, 0x20480061, 0x02000000, 0x00070007 },
- { 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
- { 0x00000040, 0xb80235ad, 0x00009802, 0x0000003c },
- { 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
- { 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
- { 0x01600006, 0x20003dac, 0x0000044a, 0x00000000 },
- { 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
- { 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
- { 0x00010040, 0x22000c20, 0x00000078, 0x00200010 },
- { 0x00110040, 0x22000c20, 0x00000078, 0x00300010 },
- { 0x00010001, 0x20480061, 0x00000000, 0x00030009 },
- { 0x00110001, 0x20480061, 0x00000000, 0x00040009 },
- { 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
- { 0x01000005, 0x20003dac, 0x00009800, 0x00030003 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000001a },
- { 0x00600001, 0x26220231, 0x008d05c0, 0x00000000 },
- { 0x00600401, 0x26120231, 0x008d05b8, 0x00000000 },
- { 0x00600801, 0x26020231, 0x008d05b0, 0x00000000 },
- { 0x00600401, 0x25f20231, 0x008d05a8, 0x00000000 },
- { 0x00600801, 0x25e20231, 0x008d05a0, 0x00000000 },
- { 0x00600401, 0x25d20231, 0x008d0598, 0x00000000 },
- { 0x00600801, 0x25c20231, 0x008d0590, 0x00000000 },
- { 0x00600401, 0x25b20231, 0x008d0588, 0x00000000 },
- { 0x00600801, 0x25a20231, 0x008d0580, 0x00000000 },
- { 0x00600401, 0x25920231, 0x008d0578, 0x00000000 },
- { 0x00600801, 0x25820231, 0x008d0570, 0x00000000 },
- { 0x00600001, 0x25720231, 0x008d0568, 0x00000000 },
- { 0x00600001, 0x25620231, 0x008d0560, 0x00000000 },
- { 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
- { 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
- { 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
- { 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
- { 0x00810001, 0xbc000229, 0x02ad8000, 0x00000000 },
- { 0x00810001, 0xbc200229, 0x02ad8020, 0x00000000 },
- { 0x00810001, 0xbc400229, 0x02ad8040, 0x00000000 },
- { 0x00810001, 0xbc600229, 0x02ad8060, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000012a },
- { 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
- { 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
- { 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
- { 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
- { 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
- { 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000066 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000064 },
- { 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
- { 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
- { 0x00000801, 0x220c0060, 0x00000000, 0x04a00480 },
- { 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
- { 0x00a02040, 0x2400462c, 0x00ad8000, 0x00ad8005 },
- { 0x00a02048, 0x24003e2c, 0x00ad8001, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8002, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8003, 0x00140014 },
- { 0x00a02048, 0xb8003e2d, 0x00ad8004, 0xfffbfffb },
- { 0x00a02040, 0x2400462c, 0x00ad8040, 0x00ad8045 },
- { 0x00a02048, 0x24003e2c, 0x00ad8041, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8042, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8043, 0x00140014 },
- { 0x00a02048, 0xb8403e2d, 0x00ad8044, 0xfffbfffb },
- { 0x00a02040, 0x2400462c, 0x00ad8080, 0x00ad8085 },
- { 0x00a02048, 0x24003e2c, 0x00ad8081, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8082, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8083, 0x00140014 },
- { 0x00a02048, 0xb8803e2d, 0x00ad8084, 0xfffbfffb },
- { 0x00600040, 0x2400462c, 0x008d80c0, 0x008d80c5 },
- { 0x00600048, 0x24003e2c, 0x008d80c1, 0xfffbfffb },
- { 0x00600048, 0x24003e2c, 0x008d80c2, 0x00140014 },
- { 0x00600048, 0x24003e2c, 0x008d80c3, 0x00140014 },
- { 0x00600048, 0xb8c03e2d, 0x008d80c4, 0xfffbfffb },
- { 0x00000401, 0x22000060, 0x00000000, 0x04a00480 },
- { 0x00000c01, 0x22040060, 0x00000000, 0x04a00490 },
- { 0x00010802, 0x220c2d28, 0x00000454, 0x04800480 },
- { 0x00a02040, 0x24003dac, 0x00b18000, 0x02000200 },
- { 0x00800048, 0x24003dac, 0x01ed8800, 0xfffbfffb },
- { 0x00800048, 0x24203dac, 0x01ed8820, 0xfffbfffb },
- { 0x00a02048, 0x24003dac, 0x00b18020, 0x00140014 },
- { 0x00800048, 0x24003dac, 0x01ed8820, 0x00140014 },
- { 0x00800048, 0x24203dac, 0x01ed8840, 0x00140014 },
- { 0x00a02048, 0x24003dac, 0x00b18040, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01ed8840, 0x00010001 },
- { 0x00800048, 0x24203dac, 0x01ed8860, 0x00010001 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
- { 0x8080100c, 0xd8203d91, 0x00b10420, 0x000a000a },
- { 0x00a02040, 0x24003dac, 0x00b18040, 0x02000200 },
- { 0x00800048, 0x24003dac, 0x01ed8840, 0xfffbfffb },
- { 0x00800048, 0x24203dac, 0x01ed8860, 0xfffbfffb },
- { 0x00a02048, 0x24003dac, 0x00b18060, 0x00140014 },
- { 0x00800048, 0x24003dac, 0x01ed8860, 0x00140014 },
- { 0x00800048, 0x24203dac, 0x01ed8880, 0x00140014 },
- { 0x00a02048, 0x24003dac, 0x00b18080, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01ed8880, 0x00010001 },
- { 0x00800048, 0x24203dac, 0x01ed88a0, 0x00010001 },
- { 0x8080000c, 0xd8403d91, 0x00b10400, 0x000a000a },
- { 0x8080100c, 0xd8603d91, 0x00b10420, 0x000a000a },
- { 0x00010220, 0x34001c00, 0x00001400, 0x000000b4 },
- { 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000004c },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000004a },
- { 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
- { 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
- { 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
- { 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
- { 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
- { 0x00010002, 0x220c2d28, 0x02000454, 0x04800480 },
- { 0x00800040, 0x24003e2c, 0x01ed8000, 0x00100010 },
- { 0x00800040, 0x24203e2c, 0x01ed8020, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8001, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8021, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8002, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8022, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8003, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8023, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8004, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8024, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8005, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8025, 0x00010001 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
- { 0x00800040, 0x24003e2c, 0x01ed8040, 0x00100010 },
- { 0x00800040, 0x24203e2c, 0x01ed8060, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8041, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8061, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8042, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8062, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8043, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8063, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8044, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8064, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8045, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8065, 0x00010001 },
- { 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000005c },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000062 },
- { 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000042 },
- { 0x00200401, 0x22000128, 0x0066044c, 0x00000000 },
- { 0x00200c01, 0x22040128, 0x0045044e, 0x00000000 },
- { 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
- { 0x03400010, 0x20003dac, 0x02000444, 0x00020002 },
- { 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
- { 0x00410040, 0x22002d08, 0x02690200, 0x00010001 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
- { 0x00110001, 0x220c0168, 0x02000000, 0x04800480 },
- { 0x00a02040, 0x24003e2c, 0x00ad83e0, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8be0, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8800, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8000, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8800, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8820, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8020, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8820, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8840, 0x00010001 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8203d91, 0x00b10420, 0x00050005 },
- { 0x00a02040, 0x24003e2c, 0x00ad8020, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01ed8820, 0xfffbfffb },
- { 0x00800048, 0x24203e2c, 0x01ed8840, 0xfffbfffb },
- { 0x00a02048, 0x24003e2c, 0x00ad8040, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01ed8840, 0x00140014 },
- { 0x00800048, 0x24203e2c, 0x01ed8860, 0x00140014 },
- { 0x00a02048, 0x24003e2c, 0x00ad8060, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01ed8860, 0x00010001 },
- { 0x00800048, 0x24203e2c, 0x01ed8880, 0x00010001 },
- { 0x8080000c, 0xd8403d91, 0x00b10400, 0x00050005 },
- { 0x8080100c, 0xd8603d91, 0x00b10420, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001c },
- { 0x00200401, 0x22000128, 0x0045044c, 0x00000000 },
- { 0x00000801, 0x220c0128, 0x00000454, 0x00000000 },
- { 0x01200010, 0x20003dac, 0x00000444, 0x00030003 },
- { 0x01200010, 0x20003dac, 0x02000446, 0x00030003 },
- { 0x00210040, 0x22002d08, 0x00450200, 0x00010001 },
- { 0x00210040, 0x22002d08, 0x02450200, 0x00100010 },
- { 0x00800001, 0xb8000229, 0x01ed8000, 0x00000000 },
- { 0x00800001, 0xb8200229, 0x01ed8020, 0x00000000 },
- { 0x00800001, 0xb8400229, 0x01ed8040, 0x00000000 },
- { 0x00800001, 0xb8600229, 0x01ed8060, 0x00000000 },
- { 0x80800042, 0xd8004631, 0x00d29800, 0x00d20480 },
- { 0x80800042, 0xd8204631, 0x00d29820, 0x00d204a0 },
- { 0x80800042, 0xd8404631, 0x00d29840, 0x00d204c0 },
- { 0x80800042, 0xd8604631, 0x00d29860, 0x00d204e0 },
- { 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
- { 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
- { 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
- { 0x00000c01, 0x220201e8, 0x00000000, 0x07100710 },
- { 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
- { 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
- { 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
- { 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
- { 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
- { 0x00200040, 0x244c3d09, 0x00450200, 0x00100010 },
- { 0x00800041, 0x24002628, 0x00ad8000, 0x00000540 },
- { 0x00800041, 0x24202628, 0x00ad8020, 0x00000540 },
- { 0x00800048, 0x24002628, 0x00ad8002, 0x00000542 },
- { 0x00800048, 0x24202628, 0x00ad8022, 0x00000542 },
- { 0x00200001, 0x22000128, 0x0045044c, 0x00000000 },
- { 0x00800048, 0x24002628, 0x01ed8000, 0x00000544 },
- { 0x00800048, 0x24202628, 0x01ed8020, 0x00000544 },
- { 0x00800048, 0xbc002629, 0x01ed8002, 0x00000546 },
- { 0x00801048, 0xbc202629, 0x01ed8022, 0x00000546 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000128 },
- { 0x00000001, 0x20220169, 0x00000000, 0x00040004 },
- { 0x00200005, 0x24443dad, 0x00459800, 0x00030003 },
- { 0x0020000c, 0x24403dad, 0x00459800, 0x00020002 },
- { 0x01600006, 0x20003dac, 0x02000446, 0x00000000 },
- { 0x00010040, 0x22000c20, 0x02000078, 0x00200000 },
- { 0x00110040, 0x22000c20, 0x02000078, 0x00500000 },
- { 0x00310040, 0x20401da5, 0x02450440, 0xfffffffe },
- { 0x00110001, 0x20480061, 0x02000000, 0x00080008 },
- { 0x00010040, 0x20401da5, 0x02000440, 0xfffffffe },
- { 0x00010001, 0x204401a5, 0x02000442, 0x00000000 },
- { 0x00010001, 0x20480061, 0x02000000, 0x00030008 },
- { 0x01600031, 0x25600021, 0x408d0040, 0x00000200 },
- { 0x00000040, 0xb80235ad, 0x00009802, 0x0000003c },
- { 0x00000040, 0x22000c20, 0x00000078, 0x00100010 },
- { 0x0020040c, 0x24403dad, 0x00459800, 0x00030003 },
- { 0x00200805, 0x24483dad, 0x00459800, 0x00070007 },
- { 0x00200001, 0x204001a5, 0x00450440, 0x00000000 },
- { 0x00000009, 0x20403ca5, 0x00000040, 0x00010001 },
- { 0x00000001, 0x20480061, 0x00000000, 0x00020005 },
- { 0x02600031, 0x27000021, 0x408d0040, 0x00000200 },
- { 0x00110001, 0x220001ec, 0x02000000, 0x05820582 },
- { 0x00010001, 0x220001ec, 0x02000000, 0x05620562 },
- { 0x00000001, 0x220e0128, 0x00000454, 0x00000000 },
- { 0x01800006, 0x200035ac, 0x02000446, 0x00000444 },
- { 0x00410001, 0xbc000229, 0x02698000, 0x00000000 },
- { 0x00410001, 0xbc100229, 0x02698010, 0x00000000 },
- { 0x00410001, 0xbc200229, 0x02698020, 0x00000000 },
- { 0x00410001, 0xbc300229, 0x02698030, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000be },
- { 0x00600001, 0x2024018d, 0x008d0200, 0x00000000 },
- { 0x01000041, 0x245e35ad, 0x00000446, 0x00000444 },
- { 0x02000005, 0x20003db0, 0x0200045e, 0x00010001 },
- { 0x00000040, 0x22022d08, 0x00000200, 0x00100010 },
- { 0x00200040, 0x22042d08, 0x00450200, 0x00200020 },
- { 0x00400001, 0x244c0109, 0x00690200, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000044 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000042 },
- { 0x00000040, 0x22003d08, 0x00000200, 0xffdeffde },
- { 0x00000440, 0x22023d08, 0x00000202, 0xffeeffee },
- { 0x00000801, 0x220c0060, 0x00000000, 0x04d004c0 },
- { 0x01000010, 0x20003db0, 0x0000045e, 0x00040004 },
- { 0x00802040, 0x2400462c, 0x00a98000, 0x00a98005 },
- { 0x00802048, 0x24003e2c, 0x00a98001, 0xfffbfffb },
- { 0x00802048, 0x24003e2c, 0x00a98002, 0x00140014 },
- { 0x00802048, 0x24003e2c, 0x00a98003, 0x00140014 },
- { 0x00802048, 0xb8003e2d, 0x00a98004, 0xfffbfffb },
- { 0x00802040, 0x2400462c, 0x00a98040, 0x00a98045 },
- { 0x00802048, 0x24003e2c, 0x00a98041, 0xfffbfffb },
- { 0x00802048, 0x24003e2c, 0x00a98042, 0x00140014 },
- { 0x00802048, 0x24003e2c, 0x00a98043, 0x00140014 },
- { 0x00802048, 0xb8203e2d, 0x00a98044, 0xfffbfffb },
- { 0x00400040, 0x2400462c, 0x00698080, 0x00698085 },
- { 0x00400048, 0x24003e2c, 0x00698081, 0xfffbfffb },
- { 0x00400048, 0x24003e2c, 0x00698082, 0x00140014 },
- { 0x00400048, 0x24003e2c, 0x00698083, 0x00140014 },
- { 0x00400048, 0xb8403e2d, 0x00698084, 0xfffbfffb },
- { 0x00000401, 0x220c0060, 0x00000000, 0x04e004d0 },
- { 0x00000c01, 0x22000060, 0x00000000, 0x04d004c8 },
- { 0x00000c01, 0x22040060, 0x00000000, 0x04e004d8 },
- { 0x00000801, 0x22080060, 0x00000000, 0x04f004e8 },
- { 0x00800040, 0x24003dac, 0x00b104c0, 0x02000200 },
- { 0x00800048, 0x24003dac, 0x00b104e0, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01ed9800, 0x00140014 },
- { 0x00010001, 0x220c0168, 0x00000000, 0x05400540 },
- { 0x00110001, 0x220c0168, 0x00000000, 0x04c004c0 },
- { 0x00800048, 0x24003dac, 0x01e98000, 0xfffbfffb },
- { 0x00800048, 0x24003dac, 0x01e98020, 0x00010001 },
- { 0x00800048, 0x24003dac, 0x01e98800, 0x00140014 },
- { 0x8080000c, 0xd8003d91, 0x00b10400, 0x000a000a },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000060 },
- { 0x01000010, 0x20003db0, 0x00000444, 0x00000000 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000022 },
- { 0x00400040, 0x22003d28, 0x0069044c, 0xfffefffe },
- { 0x03400010, 0x20003dac, 0x00000446, 0x00020002 },
- { 0x01000010, 0x20003db0, 0x02000444, 0x00020002 },
- { 0x00410040, 0x22002d08, 0x00690200, 0x00100010 },
- { 0x01000010, 0x20003dac, 0x00000446, 0x00000000 },
- { 0x00010001, 0x220e0168, 0x02000000, 0x05400540 },
- { 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
- { 0x00800040, 0x24003e2c, 0x01e98000, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01e98001, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e98002, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e98003, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e98004, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e98005, 0x00010001 },
- { 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000036 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000036 },
- { 0x01000010, 0x20003db0, 0x00000446, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x03600010, 0x20003dac, 0x02000444, 0x00020002 },
- { 0x00400401, 0x22000128, 0x0069044c, 0x00000000 },
- { 0x00400840, 0x22083d2c, 0x0069044c, 0x00100010 },
- { 0x00610040, 0x22002d08, 0x02690200, 0x00010001 },
- { 0x01000010, 0x20003dac, 0x00000444, 0x00000000 },
- { 0x01000010, 0x20003db0, 0x02000446, 0x00020002 },
- { 0x00800040, 0x24003e2c, 0x01e983e0, 0x00100010 },
- { 0x00800048, 0x24003e2c, 0x01e98000, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e98020, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e993e0, 0xfffbfffb },
- { 0x00800048, 0x24003e2c, 0x01e99000, 0x00140014 },
- { 0x00800048, 0x24003e2c, 0x01e99020, 0x00010001 },
- { 0x00000001, 0x220e0168, 0x00000000, 0x05400540 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000002 },
- { 0x00110001, 0x220e0168, 0x02000000, 0x04c004c0 },
- { 0x8080000c, 0xdc003d91, 0x00b10400, 0x00050005 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000e },
- { 0x00400001, 0x22000128, 0x0069044c, 0x00000000 },
- { 0x01400010, 0x20003dac, 0x00000444, 0x00030003 },
- { 0x01400010, 0x20003dac, 0x02000446, 0x00030003 },
- { 0x00410040, 0x22002d08, 0x00690200, 0x00010001 },
- { 0x00410040, 0x22002d08, 0x02690200, 0x00100010 },
- { 0x00800001, 0x25400229, 0x01e98000, 0x00000000 },
- { 0x80800042, 0x45404631, 0x00d20540, 0x00d204c0 },
- { 0x00000001, 0x220c0128, 0x00000454, 0x00000000 },
- { 0x00400001, 0xd8000231, 0x008a0540, 0x00000000 },
- { 0x00400001, 0xd8100231, 0x008a0548, 0x00000000 },
- { 0x00400001, 0xd8200231, 0x008a0550, 0x00000000 },
- { 0x00400001, 0xd8300231, 0x008a0558, 0x00000000 },
- { 0x00600001, 0x220001ac, 0x008d0024, 0x00000000 },
- { 0x00200040, 0x244c3dad, 0x00450448, 0xfff8fff8 },
- { 0x00000401, 0x220001ec, 0x00000000, 0x07000700 },
- { 0x00000801, 0x220e0128, 0x00000456, 0x00000000 },
- { 0x00000441, 0x254635ad, 0x00000448, 0x0000044a },
- { 0x00000c41, 0x254025ad, 0x0000444c, 0x0000444e },
- { 0x00000c41, 0x254225ad, 0x00000448, 0x0000444e },
- { 0x00000841, 0x254435ad, 0x0000444c, 0x0000044a },
- { 0x00600041, 0x24002628, 0x00898000, 0x00000540 },
- { 0x00600048, 0x24002628, 0x00898002, 0x00000542 },
- { 0x00600048, 0x24002628, 0x00898008, 0x00000544 },
- { 0x00600048, 0x2540262d, 0x0089800a, 0x00000546 },
- { 0x00400401, 0xbc0001a9, 0x00690540, 0x00000000 },
- { 0x00400801, 0xbc1001a9, 0x00690548, 0x00000000 },
- { 0x01000010, 0x20003d2c, 0x00000022, 0x00030003 },
- { 0x01000040, 0x20223d29, 0x02000022, 0xffffffff },
- { 0x00000040, 0x220c3d8c, 0x0000020c, 0x00080008 },
- { 0x00110040, 0x24540c21, 0x00000454, 0x00080008 },
- { 0x00010040, 0x24540c21, 0x00000454, 0x00180038 },
- { 0x00110220, 0x34001c00, 0x02001400, 0xfffffee4 },
- { 0x01800010, 0x20003dac, 0x0200010e, 0x00010001 },
- { 0x00000040, 0x220c3d8c, 0x0000020c, 0xffe0ffe0 },
- { 0x00010001, 0x24540061, 0x02000000, 0x06c00640 },
- { 0x00110001, 0x24540061, 0x02000000, 0x04800780 },
- { 0x00000001, 0x220e0128, 0x00000456, 0x00000000 },
- { 0x00800040, 0x24003dac, 0x00b19c00, 0x00200020 },
- { 0x00800040, 0x24203dac, 0x00b19c20, 0x00200020 },
- { 0x8080000c, 0xdc003d91, 0x00b10400, 0x00060006 },
- { 0x8080000c, 0xdc203d91, 0x00b10420, 0x00060006 },
- { 0x02000040, 0x210e3d29, 0x0200010e, 0xffffffff },
- { 0x00000040, 0x220c3d8c, 0x0000020c, 0x00040004 },
- { 0x00110220, 0x34001c00, 0x02001400, 0xfffffcdc },
- { 0x01000005, 0x25643e2d, 0x00000060, 0x00c000c0 },
- { 0x01000010, 0x20003dac, 0x02000458, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x01000010, 0x20003dac, 0x00000458, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00a02001, 0x46400231, 0x00d20780, 0x00000000 },
- { 0x00a02001, 0x46800231, 0x00d207c0, 0x00000000 },
- { 0x00a02001, 0x46c00231, 0x00d20480, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000007e },
- { 0x80a02042, 0x46404631, 0x00d20640, 0x00d20780 },
- { 0x80a02042, 0x46804631, 0x00d20680, 0x00d207c0 },
- { 0x80a02042, 0x46c04631, 0x00d206c0, 0x00d20480 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000076 },
- { 0x01000010, 0x20003dac, 0x02000564, 0x00800080 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x0000000e },
- { 0x01000010, 0x20003dac, 0x00000458, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xffffffe4 },
- { 0x00200401, 0x256801ed, 0x00000000, 0x00200020 },
- { 0x00200801, 0x256c01ed, 0x00000000, 0x00060006 },
- { 0x00400001, 0x258001ed, 0x00000000, 0x00000000 },
- { 0x00600001, 0x45a001ad, 0x00058c00, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000028 },
- { 0x02600005, 0x20006e28, 0x02008c0c, 0x88848421 },
- { 0x0220000c, 0x25663dad, 0x00000458, 0x00010001 },
- { 0x0000000c, 0x25643dad, 0x00000564, 0x00060006 },
- { 0x00310001, 0x25c401ad, 0x00000458, 0x00000000 },
- { 0x00210001, 0x25c00061, 0x00000000, 0x00010001 },
- { 0x00310040, 0x25c03dad, 0x004545c4, 0x00010001 },
- { 0x00610001, 0x25a00061, 0x02000000, 0x00000080 },
- { 0x00710001, 0x45a002ad, 0x02ae8c00, 0x00000000 },
- { 0x00710001, 0x45a202ad, 0x02ae8c01, 0x00000000 },
- { 0x00800041, 0x25a035ad, 0x00b105a0, 0x000905c0 },
- { 0x01200010, 0x20003e2c, 0x0245006e, 0x00000000 },
- { 0x00310009, 0x244c45ad, 0x02000564, 0x0045006e },
- { 0x00210001, 0x244c01ed, 0x02000000, 0x00000000 },
- { 0x0031000c, 0x244c3dad, 0x0245044c, 0x00010001 },
- { 0x00200009, 0x256835ad, 0x0045044c, 0x00000566 },
- { 0x00210040, 0x256835ad, 0x02450568, 0x00000566 },
- { 0x00200040, 0x256c362d, 0x0045006e, 0x00000566 },
- { 0x00400040, 0x240035ac, 0x00ab05a2, 0x00ab05a6 },
- { 0x00400040, 0x2400358c, 0x00690400, 0x00000566 },
- { 0x0040000c, 0x2580358d, 0x00690400, 0x00000566 },
- { 0x00800041, 0x2400362c, 0x00d20640, 0x000005a0 },
- { 0x00800041, 0x2420362c, 0x00d20660, 0x000005a0 },
- { 0x00800048, 0x2400362c, 0x00d20780, 0x000005a4 },
- { 0x00800048, 0x2420362c, 0x00d207a0, 0x000005a4 },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
- { 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
- { 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
- { 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
- { 0x80800040, 0x464035b1, 0x00b104c0, 0x00000580 },
- { 0x80800040, 0x466035b1, 0x00b104e0, 0x00000580 },
- { 0x00800041, 0x2400362c, 0x00d20680, 0x000005a0 },
- { 0x00800041, 0x2420362c, 0x00d206a0, 0x000005a0 },
- { 0x00800048, 0x2400362c, 0x00d207c0, 0x000005a4 },
- { 0x00800048, 0x2420362c, 0x00d207e0, 0x000005a4 },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x00000568 },
- { 0x00800040, 0x2420358c, 0x00b10420, 0x00000568 },
- { 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056c },
- { 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056c },
- { 0x80800040, 0x468035b1, 0x00b104c0, 0x00000580 },
- { 0x80800040, 0x46a035b1, 0x00b104e0, 0x00000580 },
- { 0x00800041, 0x2400362c, 0x00d206c0, 0x000705a8 },
- { 0x00800041, 0x2420362c, 0x00d206e0, 0x000705a8 },
- { 0x00800048, 0x2400362c, 0x00d20480, 0x000705ac },
- { 0x00800048, 0x2420362c, 0x00d204a0, 0x000705ac },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x0000056a },
- { 0x00800040, 0x2420358c, 0x00b10420, 0x0000056a },
- { 0x0080000c, 0x24c0358d, 0x00b10400, 0x0000056e },
- { 0x0080000c, 0x24e0358d, 0x00b10420, 0x0000056e },
- { 0x80800040, 0x46c035b1, 0x00b104c0, 0x00050582 },
- { 0x80800040, 0x46e035b1, 0x00b104e0, 0x00050582 },
- { 0x01800005, 0x20003d2c, 0x02000020, 0x00020002 },
- { 0x80800040, 0xd00045b1, 0x00b19000, 0x00d20640 },
- { 0x80800040, 0xd02045b1, 0x00b19020, 0x00d20660 },
- { 0x80800040, 0xd04045b1, 0x00b19040, 0x00d20680 },
- { 0x80800040, 0xd06045b1, 0x00b19060, 0x00d206a0 },
- { 0x00000040, 0x22083d8c, 0x00000208, 0x00800080 },
- { 0x80400040, 0xd40045b1, 0x00699400, 0x00ab06c0 },
- { 0x80400040, 0xd48045b1, 0x00699480, 0x00ab06c2 },
- { 0x80400040, 0xd42045b1, 0x00699420, 0x00ab06e0 },
- { 0x80400040, 0xd4a045b1, 0x006994a0, 0x00ab06e2 },
- { 0x80400040, 0xd41045b1, 0x00699410, 0x00ab06d0 },
- { 0x80400040, 0xd49045b1, 0x00699490, 0x00ab06d2 },
- { 0x80400040, 0xd43045b1, 0x00699430, 0x00ab06f0 },
- { 0x80400040, 0xd4b045b1, 0x006994b0, 0x00ab06f2 },
- { 0x00000040, 0x220a3d8c, 0x0000020a, 0x00080008 },
- { 0x00110040, 0x220a3d8c, 0x0200020a, 0x00300030 },
- { 0x01000010, 0x20003d2c, 0x02000020, 0x00060006 },
- { 0x00000040, 0x20203d29, 0x00000020, 0x00020002 },
- { 0x00000040, 0x22040c00, 0x00000204, 0x00100001 },
- { 0x00000040, 0x220c358c, 0x0000020c, 0x0000003a },
- { 0x00110220, 0x34001c00, 0x02001400, 0xfffffc1a },
- { 0x00000001, 0x220001ec, 0x00000000, 0x01400140 },
- { 0x00000001, 0x220201ec, 0x00000000, 0x01c001c0 },
- { 0x00800401, 0x20400236, 0x01ee8000, 0x00000000 },
- { 0x00800801, 0x20500236, 0x01ee8010, 0x00000000 },
- { 0x00800401, 0x20600236, 0x01ee8020, 0x00000000 },
- { 0x00800801, 0x20700236, 0x01ee8030, 0x00000000 },
- { 0x00800401, 0x20800236, 0x01ee8040, 0x00000000 },
- { 0x00800801, 0x20900236, 0x01ee8050, 0x00000000 },
- { 0x00800401, 0x20a00236, 0x01ee8060, 0x00000000 },
- { 0x00800801, 0x20b00236, 0x01ee8070, 0x00000000 },
- { 0x00800401, 0x20c00236, 0x01ee8100, 0x00000000 },
- { 0x00800801, 0x20d00236, 0x01ee8110, 0x00000000 },
- { 0x00800401, 0x20e00236, 0x01ee8120, 0x00000000 },
- { 0x00800801, 0x20f00236, 0x01ee8130, 0x00000000 },
- { 0x00800401, 0x21000236, 0x01ee8140, 0x00000000 },
- { 0x00800801, 0x21100236, 0x01ee8150, 0x00000000 },
- { 0x00800401, 0x21200236, 0x01ee8160, 0x00000000 },
- { 0x00800801, 0x21300236, 0x01ee8170, 0x00000000 },
- { 0x00000040, 0x22000d20, 0x00000062, 0x1218a000 },
- { 0x00200401, 0x204001a5, 0x00450064, 0x00000000 },
- { 0x00000801, 0x20480061, 0x00000000, 0x000f000f },
- { 0x01600031, 0x21400021, 0x508d0040, 0x00000200 },
- { 0x00000001, 0x220001ec, 0x00000000, 0x03400340 },
- { 0x00800401, 0x41600236, 0x00d28000, 0x00000000 },
- { 0x00800801, 0x41610236, 0x00d28080, 0x00000000 },
- { 0x00800401, 0x41800236, 0x00d28020, 0x00000000 },
- { 0x00800801, 0x41810236, 0x00d280a0, 0x00000000 },
- { 0x00800401, 0x41a00236, 0x00d28040, 0x00000000 },
- { 0x00800801, 0x41a10236, 0x00d280c0, 0x00000000 },
- { 0x00800401, 0x41c00236, 0x00d28060, 0x00000000 },
- { 0x00800801, 0x41c10236, 0x00d280e0, 0x00000000 },
- { 0x00000040, 0x22000d20, 0x00000062, 0x0a18a001 },
- { 0x0000040c, 0x20443ca5, 0x00000044, 0x00010001 },
- { 0x00000801, 0x20480061, 0x00000000, 0x0007000f },
- { 0x0a600031, 0x21600021, 0x508d0040, 0x00000200 },
- { 0x00000001, 0x21400021, 0x00000140, 0x00000000 },
- { 0x00000001, 0x21600021, 0x00000160, 0x00000000 },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20602d29, 0x02000042, 0x00070007 },
- { 0x01000005, 0x20422d29, 0x00000042, 0xfff8fff8 },
- { 0x00000001, 0x202001e9, 0x00000000, 0x100c100c },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00000009, 0x27e82d21, 0x00000040, 0x00060006 },
- { 0x00600001, 0x20a00022, 0x008d0000, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000100 },
- { 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
- { 0x01800031, 0x20801d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20400022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20480c22, 0x000007e8, 0x00000080 },
- { 0x02800031, 0x21001d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20600022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20680c22, 0x000007e8, 0x00000100 },
- { 0x03800031, 0x21801d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20800022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20880c22, 0x000007e8, 0x00000180 },
- { 0x04800031, 0x22001d09, 0x408d0000, 0x02488400 },
- { 0x02600005, 0x20000c20, 0x02000090, 0x00002000 },
- { 0x00000006, 0x20880c21, 0x00000088, 0x00200000 },
- { 0x00200009, 0x20845529, 0x0000009c, 0x00450020 },
- { 0x00200001, 0x40840231, 0x00450094, 0x00000000 },
- { 0x00310001, 0x20840229, 0x02450094, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x00800041, 0x24002628, 0x00000095, 0x00000044 },
- { 0x00800040, 0x24004508, 0x008d0400, 0x00000094 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0080, 0x00000000 },
- { 0x00802001, 0x20800061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x02600005, 0x20000c20, 0x020000d0, 0x00002000 },
- { 0x00000006, 0x20c80c21, 0x000000c8, 0x00200000 },
- { 0x00200009, 0x20c45529, 0x000000dc, 0x00450020 },
- { 0x00200001, 0x40c40231, 0x004500d4, 0x00000000 },
- { 0x00310001, 0x20c40229, 0x024500d4, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x00800041, 0x24002628, 0x000000d5, 0x00000044 },
- { 0x00800040, 0x24004508, 0x008d0400, 0x000000d4 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d00c0, 0x00000000 },
- { 0x00802001, 0x20c00061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x02600005, 0x20000c20, 0x02000110, 0x00002000 },
- { 0x00000006, 0x21080c21, 0x00000108, 0x00200000 },
- { 0x00200009, 0x21045529, 0x0000011c, 0x00450020 },
- { 0x00200001, 0x41040231, 0x00450114, 0x00000000 },
- { 0x00310001, 0x21040229, 0x02450114, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x00800041, 0x24002628, 0x00000115, 0x00000044 },
- { 0x00800040, 0x24004508, 0x008d0400, 0x00000114 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0100, 0x00000000 },
- { 0x00802001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x02600005, 0x20000c20, 0x02000150, 0x00002000 },
- { 0x00000006, 0x21480c21, 0x00000148, 0x00200000 },
- { 0x00200009, 0x21445529, 0x0000015c, 0x00450020 },
- { 0x00200001, 0x41440231, 0x00450154, 0x00000000 },
- { 0x00310001, 0x21440229, 0x02450154, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x00800041, 0x24002628, 0x00000155, 0x00000044 },
- { 0x00800040, 0x24004508, 0x008d0400, 0x00000154 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0140, 0x00000000 },
- { 0x00802001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x02600005, 0x20000c20, 0x02000190, 0x00002000 },
- { 0x00000006, 0x21880c21, 0x00000188, 0x00200000 },
- { 0x00200009, 0x21845529, 0x0000019c, 0x00450020 },
- { 0x00200001, 0x41840231, 0x00450194, 0x00000000 },
- { 0x00310001, 0x21840229, 0x02450194, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x00800041, 0x24002628, 0x00000195, 0x00000044 },
- { 0x00800040, 0x24004508, 0x008d0400, 0x00000194 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0180, 0x00000000 },
- { 0x00802001, 0x21800061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x02600005, 0x20000c20, 0x020001d0, 0x00002000 },
- { 0x00000006, 0x21c80c21, 0x000001c8, 0x00200000 },
- { 0x00200009, 0x21c45529, 0x000001dc, 0x00450020 },
- { 0x00200001, 0x41c40231, 0x004501d4, 0x00000000 },
- { 0x00310001, 0x21c40229, 0x024501d4, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x00800041, 0x24002628, 0x000001d5, 0x00000044 },
- { 0x00800040, 0x24004508, 0x008d0400, 0x000001d4 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d01c0, 0x00000000 },
- { 0x00802001, 0x21c00061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x02600005, 0x20000c20, 0x02000210, 0x00002000 },
- { 0x00000006, 0x22080c21, 0x00000208, 0x00200000 },
- { 0x00200009, 0x22045529, 0x0000021c, 0x00450020 },
- { 0x00200001, 0x42040231, 0x00450214, 0x00000000 },
- { 0x00310001, 0x22040229, 0x02450214, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x00800041, 0x24002628, 0x00000215, 0x00000044 },
- { 0x00800040, 0x24004508, 0x008d0400, 0x00000214 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0200, 0x00000000 },
- { 0x00802001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x02600005, 0x20000c20, 0x02000250, 0x00002000 },
- { 0x00000006, 0x22480c21, 0x00000248, 0x00200000 },
- { 0x00200009, 0x22445529, 0x0000025c, 0x00450020 },
- { 0x00200001, 0x42440231, 0x00450254, 0x00000000 },
- { 0x00310001, 0x22440229, 0x02450254, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x00800041, 0x24002628, 0x00000255, 0x00000044 },
- { 0x00800040, 0x24004508, 0x008d0400, 0x00000254 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0240, 0x00000000 },
- { 0x00802001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x01000040, 0x20423dad, 0x00000042, 0xfff8fff8 },
- { 0x00600001, 0x21600022, 0x008d07e0, 0x00000000 },
- { 0x00802001, 0x21800022, 0x008d0080, 0x00000000 },
- { 0x00802001, 0x21c00022, 0x008d00c0, 0x00000000 },
- { 0x0b800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
- { 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20280c22, 0x000007e8, 0x00000080 },
- { 0x00802001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x00802001, 0x20800022, 0x008d0140, 0x00000000 },
- { 0x01800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
- { 0x00000040, 0x21680c22, 0x000007e8, 0x00000100 },
- { 0x00802001, 0x21800022, 0x008d0180, 0x00000000 },
- { 0x00802001, 0x21c00022, 0x008d01c0, 0x00000000 },
- { 0x0b800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
- { 0x00000040, 0x20280c22, 0x000007e8, 0x00000180 },
- { 0x00802001, 0x20400022, 0x008d0200, 0x00000000 },
- { 0x00802001, 0x20800022, 0x008d0240, 0x00000000 },
- { 0x01800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
- { 0x00000040, 0x27e80c21, 0x000007e8, 0x00000200 },
- { 0x01000010, 0x20002da0, 0x02000060, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xffffff00 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000040 },
- { 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
- { 0x01800031, 0x20801d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20400022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20480c22, 0x000007e8, 0x00000080 },
- { 0x02800031, 0x21001d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20600022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20680c22, 0x000007e8, 0x00000100 },
- { 0x03800031, 0x21801d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20800022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20880c22, 0x000007e8, 0x00000180 },
- { 0x04800031, 0x22001d09, 0x408d0000, 0x02488400 },
- { 0x00000001, 0x220400e0, 0x00000000, 0x00a00080 },
- { 0x00600001, 0x20a00022, 0x008d0000, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x02008810, 0x00002000 },
- { 0x01000040, 0x20603dad, 0x00000060, 0xffffffff },
- { 0x00000006, 0xa8080c21, 0x00008808, 0x00200000 },
- { 0x00200009, 0xa8045529, 0x0000881c, 0x00450020 },
- { 0x00200001, 0xc8040231, 0x00458814, 0x00000000 },
- { 0x00310001, 0xa8040229, 0x02458814, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000c },
- { 0x00800041, 0x24002628, 0x00008815, 0x00000044 },
- { 0x00800040, 0x24004508, 0x008d0400, 0x00008814 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d8800, 0x00000000 },
- { 0x00802001, 0xa8000061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00600001, 0x21600022, 0x008d07e0, 0x00000000 },
- { 0x00802001, 0x21800022, 0x008d8800, 0x00000000 },
- { 0x0b800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000040, 0x27e80c21, 0x000007e8, 0x00000040 },
- { 0x00000040, 0x22040c00, 0x00000204, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xffffffda },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20602d29, 0x02000042, 0x00070007 },
- { 0x01000005, 0x20422d29, 0x00000042, 0xfff8fff8 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00000009, 0x27e82d21, 0x00000040, 0x00060006 },
- { 0x00600001, 0x20a00022, 0x008d0000, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000260 },
- { 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
- { 0x01800031, 0x20801d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20400022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20480c22, 0x000007e8, 0x00000080 },
- { 0x02800031, 0x21001d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20600022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20680c22, 0x000007e8, 0x00000100 },
- { 0x03800031, 0x21801d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20800022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20880c22, 0x000007e8, 0x00000180 },
- { 0x04800031, 0x22001d09, 0x408d0000, 0x02488400 },
- { 0x00200001, 0x20640229, 0x00450094, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x02000090, 0x01000000 },
- { 0x02600005, 0x20000c20, 0x00000090, 0x00004000 },
- { 0x00600041, 0x24003e2c, 0x00000095, 0x00020002 },
- { 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
- { 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
- { 0x00110001, 0x2066022d, 0x00000095, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x00000090, 0x00002000 },
- { 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
- { 0x00000006, 0x20881c21, 0x00000088, 0x00200000 },
- { 0x00200001, 0x20840129, 0x00450064, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
- { 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0080, 0x00000000 },
- { 0x00802001, 0x20800061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x02600005, 0x20000c20, 0x00000090, 0x00004000 },
- { 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
- { 0x00000001, 0x20680129, 0x0000009c, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x02600005, 0x20001d20, 0x0000009c, 0x00000010 },
- { 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
- { 0x01600005, 0x20001d20, 0x0200009c, 0x00000001 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x02610005, 0x20001c20, 0x02000090, 0x00008000 },
- { 0x02610005, 0x20001d20, 0x0200009c, 0x00000010 },
- { 0x00010006, 0x20681d29, 0x0200009c, 0x00000010 },
- { 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
- { 0x00000009, 0x20843d09, 0x00000602, 0x000c000c },
- { 0x00000005, 0x20862d09, 0x00000602, 0xf000f000 },
- { 0x00200001, 0x40840231, 0x00660064, 0x00000000 },
- { 0x00200001, 0x20640229, 0x004500d4, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x020000d0, 0x01000000 },
- { 0x02600005, 0x20000c20, 0x000000d0, 0x00004000 },
- { 0x00600041, 0x24003e2c, 0x000000d5, 0x00020002 },
- { 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
- { 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
- { 0x00110001, 0x2066022d, 0x000000d5, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x000000d0, 0x00002000 },
- { 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
- { 0x00000006, 0x20c81c21, 0x000000c8, 0x00200000 },
- { 0x00200001, 0x20c40129, 0x00450064, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
- { 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d00c0, 0x00000000 },
- { 0x00802001, 0x20c00061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x02600005, 0x20000c20, 0x000000d0, 0x00004000 },
- { 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
- { 0x00000001, 0x20680129, 0x000000dc, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x02600005, 0x20001d20, 0x000000dc, 0x00000010 },
- { 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
- { 0x01600005, 0x20001d20, 0x020000dc, 0x00000001 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x02610005, 0x20001c20, 0x020000d0, 0x00008000 },
- { 0x02610005, 0x20001d20, 0x020000dc, 0x00000010 },
- { 0x00010006, 0x20681d29, 0x020000dc, 0x00000010 },
- { 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
- { 0x00000009, 0x20c43d09, 0x00000602, 0x000c000c },
- { 0x00000005, 0x20c62d09, 0x00000602, 0xf000f000 },
- { 0x00200001, 0x40c40231, 0x00660064, 0x00000000 },
- { 0x00200001, 0x20640229, 0x00450114, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x02000110, 0x01000000 },
- { 0x02600005, 0x20000c20, 0x00000110, 0x00004000 },
- { 0x00600041, 0x24003e2c, 0x00000115, 0x00020002 },
- { 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
- { 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
- { 0x00110001, 0x2066022d, 0x00000115, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x00000110, 0x00002000 },
- { 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
- { 0x00000006, 0x21081c21, 0x00000108, 0x00200000 },
- { 0x00200001, 0x21040129, 0x00450064, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
- { 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0100, 0x00000000 },
- { 0x00802001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x02600005, 0x20000c20, 0x00000110, 0x00004000 },
- { 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
- { 0x00000001, 0x20680129, 0x0000011c, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x02600005, 0x20001d20, 0x0000011c, 0x00000010 },
- { 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
- { 0x01600005, 0x20001d20, 0x0200011c, 0x00000001 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x02610005, 0x20001c20, 0x02000110, 0x00008000 },
- { 0x02610005, 0x20001d20, 0x0200011c, 0x00000010 },
- { 0x00010006, 0x20681d29, 0x0200011c, 0x00000010 },
- { 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
- { 0x00000009, 0x21043d09, 0x00000602, 0x000c000c },
- { 0x00000005, 0x21062d09, 0x00000602, 0xf000f000 },
- { 0x00200001, 0x41040231, 0x00660064, 0x00000000 },
- { 0x00200001, 0x20640229, 0x00450154, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x02000150, 0x01000000 },
- { 0x02600005, 0x20000c20, 0x00000150, 0x00004000 },
- { 0x00600041, 0x24003e2c, 0x00000155, 0x00020002 },
- { 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
- { 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
- { 0x00110001, 0x2066022d, 0x00000155, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x00000150, 0x00002000 },
- { 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
- { 0x00000006, 0x21481c21, 0x00000148, 0x00200000 },
- { 0x00200001, 0x21440129, 0x00450064, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
- { 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0140, 0x00000000 },
- { 0x00802001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x02600005, 0x20000c20, 0x00000150, 0x00004000 },
- { 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
- { 0x00000001, 0x20680129, 0x0000015c, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x02600005, 0x20001d20, 0x0000015c, 0x00000010 },
- { 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
- { 0x01600005, 0x20001d20, 0x0200015c, 0x00000001 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x02610005, 0x20001c20, 0x02000150, 0x00008000 },
- { 0x02610005, 0x20001d20, 0x0200015c, 0x00000010 },
- { 0x00010006, 0x20681d29, 0x0200015c, 0x00000010 },
- { 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
- { 0x00000009, 0x21443d09, 0x00000602, 0x000c000c },
- { 0x00000005, 0x21462d09, 0x00000602, 0xf000f000 },
- { 0x00200001, 0x41440231, 0x00660064, 0x00000000 },
- { 0x00200001, 0x20640229, 0x00450194, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x02000190, 0x01000000 },
- { 0x02600005, 0x20000c20, 0x00000190, 0x00004000 },
- { 0x00600041, 0x24003e2c, 0x00000195, 0x00020002 },
- { 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
- { 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
- { 0x00110001, 0x2066022d, 0x00000195, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x00000190, 0x00002000 },
- { 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
- { 0x00000006, 0x21881c21, 0x00000188, 0x00200000 },
- { 0x00200001, 0x21840129, 0x00450064, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
- { 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0180, 0x00000000 },
- { 0x00802001, 0x21800061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x02600005, 0x20000c20, 0x00000190, 0x00004000 },
- { 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
- { 0x00000001, 0x20680129, 0x0000019c, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x02600005, 0x20001d20, 0x0000019c, 0x00000010 },
- { 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
- { 0x01600005, 0x20001d20, 0x0200019c, 0x00000001 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x02610005, 0x20001c20, 0x02000190, 0x00008000 },
- { 0x02610005, 0x20001d20, 0x0200019c, 0x00000010 },
- { 0x00010006, 0x20681d29, 0x0200019c, 0x00000010 },
- { 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
- { 0x00000009, 0x21843d09, 0x00000602, 0x000c000c },
- { 0x00000005, 0x21862d09, 0x00000602, 0xf000f000 },
- { 0x00200001, 0x41840231, 0x00660064, 0x00000000 },
- { 0x00200001, 0x20640229, 0x004501d4, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x020001d0, 0x01000000 },
- { 0x02600005, 0x20000c20, 0x000001d0, 0x00004000 },
- { 0x00600041, 0x24003e2c, 0x000001d5, 0x00020002 },
- { 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
- { 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
- { 0x00110001, 0x2066022d, 0x000001d5, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x000001d0, 0x00002000 },
- { 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
- { 0x00000006, 0x21c81c21, 0x000001c8, 0x00200000 },
- { 0x00200001, 0x21c40129, 0x00450064, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
- { 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d01c0, 0x00000000 },
- { 0x00802001, 0x21c00061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x02600005, 0x20000c20, 0x000001d0, 0x00004000 },
- { 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
- { 0x00000001, 0x20680129, 0x000001dc, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x02600005, 0x20001d20, 0x000001dc, 0x00000010 },
- { 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
- { 0x01600005, 0x20001d20, 0x020001dc, 0x00000001 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x02610005, 0x20001c20, 0x020001d0, 0x00008000 },
- { 0x02610005, 0x20001d20, 0x020001dc, 0x00000010 },
- { 0x00010006, 0x20681d29, 0x020001dc, 0x00000010 },
- { 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
- { 0x00000009, 0x21c43d09, 0x00000602, 0x000c000c },
- { 0x00000005, 0x21c62d09, 0x00000602, 0xf000f000 },
- { 0x00200001, 0x41c40231, 0x00660064, 0x00000000 },
- { 0x00200001, 0x20640229, 0x00450214, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x02000210, 0x01000000 },
- { 0x02600005, 0x20000c20, 0x00000210, 0x00004000 },
- { 0x00600041, 0x24003e2c, 0x00000215, 0x00020002 },
- { 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
- { 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
- { 0x00110001, 0x2066022d, 0x00000215, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x00000210, 0x00002000 },
- { 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
- { 0x00000006, 0x22081c21, 0x00000208, 0x00200000 },
- { 0x00200001, 0x22040129, 0x00450064, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
- { 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0200, 0x00000000 },
- { 0x00802001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x02600005, 0x20000c20, 0x00000210, 0x00004000 },
- { 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
- { 0x00000001, 0x20680129, 0x0000021c, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x02600005, 0x20001d20, 0x0000021c, 0x00000010 },
- { 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
- { 0x01600005, 0x20001d20, 0x0200021c, 0x00000001 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x02610005, 0x20001c20, 0x02000210, 0x00008000 },
- { 0x02610005, 0x20001d20, 0x0200021c, 0x00000010 },
- { 0x00010006, 0x20681d29, 0x0200021c, 0x00000010 },
- { 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
- { 0x00000009, 0x22043d09, 0x00000602, 0x000c000c },
- { 0x00000005, 0x22062d09, 0x00000602, 0xf000f000 },
- { 0x00200001, 0x42040231, 0x00660064, 0x00000000 },
- { 0x00200001, 0x20640229, 0x00450254, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x02000250, 0x01000000 },
- { 0x02600005, 0x20000c20, 0x00000250, 0x00004000 },
- { 0x00600041, 0x24003e2c, 0x00000255, 0x00020002 },
- { 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
- { 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
- { 0x00110001, 0x2066022d, 0x00000255, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x00000250, 0x00002000 },
- { 0x02600005, 0x20001d20, 0x02000066, 0x00000001 },
- { 0x00000006, 0x22481c21, 0x00000248, 0x00200000 },
- { 0x00200001, 0x22440129, 0x00450064, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
- { 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d0240, 0x00000000 },
- { 0x00802001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x02600005, 0x20000c20, 0x00000250, 0x00004000 },
- { 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
- { 0x00000001, 0x20680129, 0x0000025c, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x02600005, 0x20001d20, 0x0000025c, 0x00000010 },
- { 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
- { 0x01600005, 0x20001d20, 0x0200025c, 0x00000001 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x02610005, 0x20001c20, 0x02000250, 0x00008000 },
- { 0x02610005, 0x20001d20, 0x0200025c, 0x00000010 },
- { 0x00010006, 0x20681d29, 0x0200025c, 0x00000010 },
- { 0x02800005, 0x2000452c, 0x02000068, 0x000d0070 },
- { 0x00000009, 0x22443d09, 0x00000602, 0x000c000c },
- { 0x00000005, 0x22462d09, 0x00000602, 0xf000f000 },
- { 0x00200001, 0x42440231, 0x00660064, 0x00000000 },
- { 0x01000040, 0x20423dad, 0x00000042, 0xfff8fff8 },
- { 0x00600001, 0x21600022, 0x008d07e0, 0x00000000 },
- { 0x00802001, 0x21800022, 0x008d0080, 0x00000000 },
- { 0x00802001, 0x21c00022, 0x008d00c0, 0x00000000 },
- { 0x0b800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
- { 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20280c22, 0x000007e8, 0x00000080 },
- { 0x00802001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x00802001, 0x20800022, 0x008d0140, 0x00000000 },
- { 0x01800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
- { 0x00000040, 0x21680c22, 0x000007e8, 0x00000100 },
- { 0x00802001, 0x21800022, 0x008d0180, 0x00000000 },
- { 0x00802001, 0x21c00022, 0x008d01c0, 0x00000000 },
- { 0x0b800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
- { 0x00000040, 0x20280c22, 0x000007e8, 0x00000180 },
- { 0x00802001, 0x20400022, 0x008d0200, 0x00000000 },
- { 0x00802001, 0x20800022, 0x008d0240, 0x00000000 },
- { 0x01800031, 0x20001d0c, 0x508d0000, 0x0a080400 },
- { 0x00000040, 0x27e80c21, 0x000007e8, 0x00000200 },
- { 0x01000010, 0x20002da0, 0x02000060, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xfffffda0 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000006e },
- { 0x00600001, 0x20200022, 0x008d07e0, 0x00000000 },
- { 0x01800031, 0x20801d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20400022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20480c22, 0x000007e8, 0x00000080 },
- { 0x02800031, 0x21001d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20600022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20680c22, 0x000007e8, 0x00000100 },
- { 0x03800031, 0x21801d09, 0x408d0000, 0x02488400 },
- { 0x00600001, 0x20800022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20880c22, 0x000007e8, 0x00000180 },
- { 0x04800031, 0x22001d09, 0x408d0000, 0x02488400 },
- { 0x00000001, 0x220400e0, 0x00000000, 0x00a00080 },
- { 0x00600001, 0x20a00022, 0x008d0000, 0x00000000 },
- { 0x00200001, 0x20640229, 0x00458814, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x02008810, 0x01000000 },
- { 0x02600005, 0x20000c20, 0x00008810, 0x00004000 },
- { 0x00600041, 0x24003e2c, 0x00008815, 0x00020002 },
- { 0x00110001, 0x2066018d, 0x02000400, 0x00000000 },
- { 0x00010040, 0x20663d8d, 0x02000400, 0x00010001 },
- { 0x00110001, 0x2066022d, 0x00008815, 0x00000000 },
- { 0x02600005, 0x20000c20, 0x00008810, 0x00002000 },
- { 0x01000040, 0x20603dad, 0x02000060, 0xffffffff },
- { 0x00000006, 0xa8080c21, 0x00008808, 0x00200000 },
- { 0x00200001, 0xa8040129, 0x00450064, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00800041, 0x24002528, 0x00000066, 0x00000044 },
- { 0x00800040, 0x24002508, 0x008d0400, 0x00000064 },
- { 0x00000009, 0x20a82d02, 0x00000404, 0x00060006 },
- { 0x00802001, 0x20c00022, 0x008d8800, 0x00000000 },
- { 0x00802001, 0xa8000061, 0x00000000, 0x00000000 },
- { 0x05800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x02600005, 0x20000d20, 0x02000066, 0x00000001 },
- { 0x02600005, 0x20000c20, 0x00008810, 0x00004000 },
- { 0x00000001, 0x20680129, 0x0000881c, 0x00000000 },
- { 0x00210002, 0x20700421, 0x02450038, 0x00450030 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x02600005, 0x20001d20, 0x0000881c, 0x00000010 },
- { 0x00210002, 0x20700421, 0x02450028, 0x00450020 },
- { 0x01600005, 0x20001d20, 0x0200881c, 0x00000001 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x02610005, 0x20001c20, 0x02008810, 0x00008000 },
- { 0x02610005, 0x20001d20, 0x0200881c, 0x00000010 },
- { 0x00010006, 0x20681d29, 0x0200881c, 0x00000010 },
- { 0x02800005, 0x2000452c, 0x00000068, 0x000d0070 },
- { 0x01000040, 0x20603dad, 0x02000060, 0x00000000 },
- { 0x00000009, 0xa8043d09, 0x00000600, 0x000c000c },
- { 0x00000005, 0xa8062d09, 0x00000600, 0xf000f000 },
- { 0x00200001, 0xc8040231, 0x00660064, 0x00000000 },
- { 0x00600001, 0x21600022, 0x008d07e0, 0x00000000 },
- { 0x00802001, 0x21800022, 0x008d8800, 0x00000000 },
- { 0x0b800031, 0x20001d0c, 0x508d0000, 0x06080300 },
- { 0x00000040, 0x27e80c21, 0x000007e8, 0x00000040 },
- { 0x00000040, 0x22040c00, 0x00000204, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0xffffffac },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x01600031, 0x20001c20, 0x708d0000, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x206601ed, 0x00000000, 0x00030003 },
- { 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
- { 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
- { 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
- { 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
- { 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
- { 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
- { 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
- { 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
- { 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
- { 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
- { 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
- { 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
- { 0x00000001, 0x22a00169, 0x00000000, 0x01400140 },
- { 0x00000040, 0x20283c22, 0x00000008, 0x00200020 },
- { 0x00000001, 0x203801e2, 0x00000000, 0x00010001 },
- { 0x00800001, 0x204001ae, 0x00b10020, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x000002a0, 0x00010001 },
- { 0x00800031, 0x20000128, 0x608d07e0, 0x00000200 },
- { 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
- { 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
- { 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
- { 0x00000001, 0x22a00169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22600169, 0x00000000, 0x00020002 },
- { 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
- { 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc6 },
- { 0x00000801, 0x208c00e5, 0x00000000, 0xffffffca },
- { 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
- { 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
- { 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
- { 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
- { 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
- { 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
- { 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
- { 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
- { 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
- { 0x00000041, 0x22a03dad, 0x00000056, 0x00040004 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffff4 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
- { 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
- { 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
- { 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
- { 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
- { 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
- { 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
- { 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
- { 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
- { 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
- { 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
- { 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
- { 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
- { 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
- { 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
- { 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
- { 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
- { 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
- { 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
- { 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
- { 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
- { 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000006 },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffff6 },
- { 0x05000010, 0x200035ac, 0x00000240, 0x00000026 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffffc },
- { 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
- { 0x01600031, 0x20001c24, 0x708d0000, 0x82000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00600009, 0x25c03dad, 0x00050034, 0x00040004 },
- { 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
- { 0x00000041, 0x20263d29, 0x00000036, 0x00040004 },
- { 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
- { 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
- { 0x00000041, 0x27e82c21, 0x000005e4, 0x00400040 },
- { 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
- { 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
- { 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
- { 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
- { 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
- { 0x000b0220, 0x34001c00, 0x02001400, 0x00000178 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000176 },
- { 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
- { 0x00200401, 0x27e001a1, 0x004505c0, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
- { 0x00000001, 0x22000060, 0x00000000, 0x0288a001 },
- { 0x01600031, 0x20c00021, 0x408d07e0, 0x00000200 },
- { 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
- { 0x00000001, 0x22000060, 0x00000000, 0x02286003 },
- { 0x03600031, 0x20800021, 0x408d07e0, 0x00000200 },
- { 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
- { 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
- { 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
- { 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
- { 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
- { 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
- { 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
- { 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
- { 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
- { 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
- { 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
- { 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
- { 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
- { 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
- { 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
- { 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
- { 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
- { 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
- { 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
- { 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
- { 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
- { 0x00000008, 0x25e83e2d, 0x00009080, 0x00020002 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00200401, 0x25d0022d, 0x00459080, 0x00000000 },
- { 0x00200c01, 0x25d80129, 0x00459050, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699060, 0x00000000 },
- { 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000134 },
- { 0x00000008, 0x25e83e2d, 0x00009084, 0x00020002 },
- { 0x00200401, 0x25d0022d, 0x00459084, 0x00000000 },
- { 0x00000801, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00000401, 0x25d80129, 0x00009040, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699064, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000011e },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
- { 0x00000401, 0x25d80129, 0x00009042, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699068, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000110 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
- { 0x00000401, 0x25d80129, 0x00009044, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x0069906c, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000102 },
- { 0x00200401, 0x27e001a1, 0x004505c4, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
- { 0x00800401, 0x23400231, 0x00a90040, 0x00000000 },
- { 0x00800801, 0x23500231, 0x00a90044, 0x00000000 },
- { 0x00800401, 0x23600231, 0x00a90048, 0x00000000 },
- { 0x00800801, 0x23700231, 0x00a9004c, 0x00000000 },
- { 0x00800001, 0x20400232, 0x002b0340, 0x00000000 },
- { 0x00800001, 0x20500232, 0x002b0350, 0x00000000 },
- { 0x00800001, 0x20600232, 0x002b0360, 0x00000000 },
- { 0x00800001, 0x20700232, 0x002b0370, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x06082003 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
- { 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
- { 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
- { 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
- { 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
- { 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
- { 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
- { 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
- { 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
- { 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
- { 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
- { 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
- { 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
- { 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
- { 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
- { 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
- { 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
- { 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
- { 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
- { 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
- { 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
- { 0x00000008, 0x25e83e2d, 0x00009082, 0x00020002 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00800080 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00200401, 0x25d0022d, 0x00459082, 0x00000000 },
- { 0x00200c01, 0x25d80129, 0x00459054, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699070, 0x00000000 },
- { 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000096 },
- { 0x00000008, 0x25e83e2d, 0x00009084, 0x00020002 },
- { 0x00200401, 0x25d0022d, 0x00459084, 0x00000000 },
- { 0x00000801, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00000401, 0x25d80129, 0x00009046, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699074, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000080 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
- { 0x00000401, 0x25d80129, 0x00009048, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699078, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000072 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
- { 0x00000401, 0x25d80129, 0x0000904a, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x0069907c, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000064 },
- { 0x00200401, 0x27e001a1, 0x004505c0, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
- { 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
- { 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
- { 0x00802001, 0x20c00022, 0x008d0140, 0x00000000 },
- { 0x00802001, 0x21000022, 0x008d0180, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x12082003 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
- { 0x00802001, 0x20400022, 0x008d0080, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0618a003 },
- { 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
- { 0x00800401, 0x23400231, 0x00a900cc, 0x00000000 },
- { 0x00800801, 0x23500231, 0x00a9010c, 0x00000000 },
- { 0x00800401, 0x23600231, 0x00a9014c, 0x00000000 },
- { 0x00800801, 0x23700231, 0x00a9018c, 0x00000000 },
- { 0x00800401, 0x23800231, 0x00cf0340, 0x00000000 },
- { 0x00800801, 0x23900231, 0x00cf0341, 0x00000000 },
- { 0x00800401, 0x23a00231, 0x00cf0342, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00cf0343, 0x00000000 },
- { 0x00802001, 0x202000a2, 0x008d0380, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
- { 0x00800031, 0x20001d28, 0x608d07e0, 0x06080020 },
- { 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
- { 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
- { 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
- { 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
- { 0x00000440, 0x27e03da1, 0x000005c0, 0x000c000c },
- { 0x00000c01, 0x27e401a1, 0x000005c2, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
- { 0x02600031, 0x23401c25, 0x408d07e0, 0x02286003 },
- { 0x00800401, 0x23800231, 0x00cf0340, 0x00000000 },
- { 0x00800801, 0x23900231, 0x00cf0341, 0x00000000 },
- { 0x00800401, 0x23a00231, 0x00cf0342, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00cf0343, 0x00000000 },
- { 0x00802001, 0x202000a2, 0x008d0380, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
- { 0x00800031, 0x20001d28, 0x608d07e0, 0x06080020 },
- { 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
- { 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
- { 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00800040, 0x2400462d, 0x00b19c00, 0x00b1d830 },
- { 0x00800040, 0x2340462d, 0x00b19820, 0x00b1d830 },
- { 0x00800040, 0x2360462d, 0x00b19c10, 0x00b1dc00 },
- { 0x05810010, 0x200035ac, 0x008d2400, 0x000005d0 },
- { 0x05810010, 0x200035ac, 0x008d2340, 0x000005d2 },
- { 0x05810010, 0x200035ac, 0x008d2360, 0x000005d2 },
- { 0x00818022, 0x34001c00, 0x00001400, 0x000000ca },
- { 0x00800040, 0x2440462d, 0x00b19810, 0x00b1d830 },
- { 0x00800040, 0x2460462d, 0x00b19c20, 0x00b1dc00 },
- { 0x00800201, 0x24a00129, 0x00b19820, 0x00000000 },
- { 0x00818022, 0x34001c00, 0x02001400, 0x00000066 },
- { 0x05800010, 0x200035ac, 0x028d2400, 0x000005e8 },
- { 0x00800040, 0x2520462d, 0x00b19830, 0x00b19820 },
- { 0x00800040, 0x2540462d, 0x00b19c00, 0x00b19c10 },
- { 0x00000201, 0x26000108, 0x00000602, 0x00000000 },
- { 0x05810010, 0x200035ac, 0x028d2440, 0x000005d2 },
- { 0x05810010, 0x200035ac, 0x008d2460, 0x000005d2 },
- { 0x00818022, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x00800040, 0x2560462d, 0x00b19810, 0x00b19800 },
- { 0x00800040, 0x238045ad, 0x008d0520, 0x00b19c00 },
- { 0x00800040, 0x24003d8c, 0x00b10400, 0x00040004 },
- { 0x00800040, 0x23a0458d, 0x00b10400, 0x00b19810 },
- { 0x00800048, 0x24003dac, 0x008d0560, 0x00020002 },
- { 0x80800008, 0x43c03d91, 0x00b10400, 0x00030003 },
- { 0x00800040, 0x24003dac, 0x00b103a0, 0xfffefffe },
- { 0x80800008, 0x43603d91, 0x00b10400, 0x00020002 },
- { 0x00800040, 0x2400362c, 0x00b19c10, 0x00b10380 },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x00b103a0 },
- { 0x80800008, 0x43403d91, 0x00b10400, 0x00030003 },
- { 0x00800001, 0xb8100231, 0x00ae03c0, 0x00000000 },
- { 0x00800001, 0xb8200231, 0x00ae0360, 0x00000000 },
- { 0x00800001, 0xb8300231, 0x00ae0340, 0x00000000 },
- { 0x00808024, 0x34001c00, 0x00001400, 0x0001000e },
- { 0x00800040, 0x2400362c, 0x00b19820, 0x008d0520 },
- { 0x00800040, 0x2400458c, 0x00b10400, 0x00b19c10 },
- { 0x00800040, 0x24003d8c, 0x00b10400, 0x00020002 },
- { 0x80800008, 0x43403d91, 0x00b10400, 0x00020002 },
- { 0x00800001, 0xb8300231, 0x00ae0340, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00818022, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x00800040, 0x2580462d, 0x00b19c20, 0x00b19c30 },
- { 0x00800040, 0x238045ad, 0x008d0540, 0x008d04b0 },
- { 0x00800040, 0x24003d8c, 0x00b10400, 0x00040004 },
- { 0x00800040, 0x23a0458d, 0x00b10400, 0x00b19c20 },
- { 0x00800048, 0x24003dac, 0x008d0580, 0x00020002 },
- { 0x80800008, 0x43c03d91, 0x00b10400, 0x00030003 },
- { 0x00800040, 0x24003dac, 0x00b103a0, 0xfffefffe },
- { 0x80800008, 0x43603d91, 0x00b10400, 0x00020002 },
- { 0x00800040, 0x2400362c, 0x008d04a0, 0x00b10380 },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x00b103a0 },
- { 0x80800008, 0x43403d91, 0x00b10400, 0x00030003 },
- { 0x00800001, 0xbc200231, 0x00ae03c0, 0x00000000 },
- { 0x00800001, 0xbc100231, 0x00ae0360, 0x00000000 },
- { 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
- { 0x00808024, 0x34001c00, 0x00001400, 0x0001000e },
- { 0x00800040, 0x2400362c, 0x008d04a0, 0x008d0540 },
- { 0x00800040, 0x2400458c, 0x00b10400, 0x00b19c10 },
- { 0x00800040, 0x24003d8c, 0x00b10400, 0x00020002 },
- { 0x80800008, 0x43403d91, 0x00b10400, 0x00020002 },
- { 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00808024, 0x34001c00, 0x00001400, 0x0001005c },
- { 0x00800201, 0x23e0022d, 0x002805d4, 0x00000000 },
- { 0x00800201, 0x23c0022d, 0x002805d4, 0x00000000 },
- { 0x05800010, 0x200035ac, 0x008d2440, 0x000005d2 },
- { 0x05800010, 0x200035ac, 0x028d2460, 0x000005d2 },
- { 0x00800040, 0x24003e2c, 0x00b19820, 0x00040004 },
- { 0x00800048, 0x24003dac, 0x008d0400, 0x00040004 },
- { 0x00800040, 0x2400458c, 0x00b10400, 0x00b1dc10 },
- { 0x00800008, 0x23403d8d, 0x00b10400, 0x00030003 },
- { 0x00810040, 0x23e03dad, 0x008d03e0, 0x00010001 },
- { 0x00200201, 0x25ec018d, 0x00450600, 0x00000000 },
- { 0x00810040, 0x23e03dad, 0x028d03e0, 0x00010001 },
- { 0x03800010, 0x200035ac, 0x008d0340, 0x008d03e0 },
- { 0x05800010, 0x200035ac, 0x028d0340, 0x008d43e0 },
- { 0x00800042, 0x24c0462d, 0x00b19830, 0x00b19c00 },
- { 0x00810001, 0x234001ad, 0x008d03e0, 0x00000000 },
- { 0x00810001, 0x234001ad, 0x028d43e0, 0x00000000 },
- { 0x00200201, 0x260001ac, 0x004505ec, 0x00000000 },
- { 0x80800040, 0x43603631, 0x00b19830, 0x008d0340 },
- { 0x80800040, 0x43403631, 0x00b19c00, 0x008d4340 },
- { 0x00800001, 0xb8300231, 0x00ae0360, 0x00000000 },
- { 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
- { 0x00818022, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00800040, 0x2400362c, 0x00b19810, 0x008d04c0 },
- { 0x00800048, 0x24003e2c, 0x00b19820, 0xfffefffe },
- { 0x00800008, 0x23603d8d, 0x00b10400, 0x00010001 },
- { 0x03800010, 0x200035ac, 0x008d0360, 0x008d03c0 },
- { 0x05800010, 0x200035ac, 0x028d0360, 0x008d43c0 },
- { 0x00810001, 0x236001ad, 0x008d03c0, 0x00000000 },
- { 0x00810001, 0x236001ad, 0x028d43c0, 0x00000000 },
- { 0x00000201, 0x260201ac, 0x000005ee, 0x00000000 },
- { 0x80800040, 0x43603631, 0x00b19820, 0x008d0360 },
- { 0x00800001, 0xb8200231, 0x00ae0360, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00818022, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00800040, 0x2400362c, 0x00b19c20, 0x008d04c0 },
- { 0x00800048, 0x24003e2c, 0x00b19c10, 0xfffefffe },
- { 0x00800008, 0x23603d8d, 0x00b10400, 0x00010001 },
- { 0x03800010, 0x200035ac, 0x008d0360, 0x008d03c0 },
- { 0x05800010, 0x200035ac, 0x028d0360, 0x008d43c0 },
- { 0x00810001, 0x236001ad, 0x008d03c0, 0x00000000 },
- { 0x00810001, 0x236001ad, 0x028d43c0, 0x00000000 },
- { 0x80800040, 0x43603631, 0x00b19c10, 0x008d0360 },
- { 0x00800001, 0xbc100231, 0x00ae0360, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x34000020, 0x000007c0, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x206601ed, 0x00000000, 0x00030003 },
- { 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
- { 0x00000001, 0x206801ed, 0x00000000, 0x01400140 },
- { 0x00000001, 0x22600169, 0x00000000, 0x00030003 },
- { 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
- { 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
- { 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
- { 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
- { 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
- { 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
- { 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
- { 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
- { 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
- { 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
- { 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
- { 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
- { 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc4 },
- { 0x00000801, 0x208c00e5, 0x00000000, 0xffffffc8 },
- { 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
- { 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
- { 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
- { 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
- { 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
- { 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
- { 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
- { 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
- { 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
- { 0x00800001, 0x240001ac, 0x00000068, 0x00000000 },
- { 0x00000048, 0x22a03dad, 0x00000056, 0x00040004 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffff2 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
- { 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
- { 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
- { 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
- { 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
- { 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
- { 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
- { 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
- { 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
- { 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
- { 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
- { 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
- { 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
- { 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
- { 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
- { 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
- { 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
- { 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
- { 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
- { 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
- { 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
- { 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00600401, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000c01, 0x26140061, 0x00000000, 0x01800000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000801, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00000040, 0x2078252d, 0x00000026, 0x00004280 },
- { 0x00400001, 0x26000231, 0x00000078, 0x00000000 },
- { 0x00600031, 0x26201c21, 0x308d0600, 0x02000002 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffffe8 },
- { 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
- { 0x01600031, 0x20001c24, 0x708d0000, 0x82000012 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00600009, 0x25c03dad, 0x00050034, 0x00040004 },
- { 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
- { 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
- { 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
- { 0x00000041, 0x27e82c21, 0x000005e4, 0x00400040 },
- { 0x00000001, 0x240001ec, 0x00000000, 0x01400140 },
- { 0x00000048, 0x20263dad, 0x00000036, 0x00040004 },
- { 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
- { 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
- { 0x00800001, 0x2220022d, 0x000d002c, 0x00000000 },
- { 0x00600040, 0x22303dad, 0x008d0230, 0x00080008 },
- { 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
- { 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
- { 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
- { 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
- { 0x000b0220, 0x34001c00, 0x02001400, 0x00000126 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000124 },
- { 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
- { 0x00000001, 0x22000060, 0x00000000, 0x0248a002 },
- { 0x02600031, 0x20c00021, 0x408d07e0, 0x00000200 },
- { 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005ca, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
- { 0x00000001, 0x22000060, 0x00000000, 0x02186004 },
- { 0x02600031, 0x20800021, 0x408d07e0, 0x00000200 },
- { 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
- { 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
- { 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
- { 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
- { 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
- { 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
- { 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
- { 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
- { 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
- { 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
- { 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
- { 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
- { 0x00800008, 0x2340352d, 0x00009050, 0x008d0220 },
- { 0x00800008, 0x2360352d, 0x00009052, 0x008d0220 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00200401, 0x25d0022d, 0x004590c0, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990a0, 0x00000000 },
- { 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000fc },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00410041 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
- { 0x00200401, 0x25d0022d, 0x004590c8, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990b0, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000ee },
- { 0x00800008, 0x2340352d, 0x00009042, 0x008d0220 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00200401, 0x25d0022d, 0x004590c4, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990a4, 0x00000000 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
- { 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000d8 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
- { 0x00200401, 0x25d0022d, 0x004590cc, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990b4, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000ca },
- { 0x00000401, 0x27e001a1, 0x000005c4, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005c6, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
- { 0x00600401, 0x2340012d, 0x00890040, 0x00000000 },
- { 0x00600801, 0x2350012d, 0x00890048, 0x00000000 },
- { 0x00600001, 0x204001aa, 0x00270340, 0x00000000 },
- { 0x00600001, 0x205001aa, 0x00270350, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x04082004 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
- { 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
- { 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
- { 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
- { 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
- { 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
- { 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
- { 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
- { 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
- { 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
- { 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
- { 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
- { 0x00800008, 0x2340352d, 0x00009054, 0x008d0220 },
- { 0x00800008, 0x2360352d, 0x00009056, 0x008d0220 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00800080 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00200401, 0x25d0022d, 0x004590c2, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990a8, 0x00000000 },
- { 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00810081 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
- { 0x00200401, 0x25d0022d, 0x004590ca, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990b8, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000078 },
- { 0x00800008, 0x2340352d, 0x00009048, 0x008d0220 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00200401, 0x25d0022d, 0x004590c4, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990ac, 0x00000000 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
- { 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000062 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
- { 0x00200401, 0x25d0022d, 0x004590cc, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990bc, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000054 },
- { 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
- { 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
- { 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0a082004 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005ca, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
- { 0x00600001, 0x20400022, 0x008d0080, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0418a004 },
- { 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
- { 0x00600401, 0x2340012d, 0x008500cc, 0x00000000 },
- { 0x00600801, 0x2350012d, 0x0085010c, 0x00000000 },
- { 0x00800001, 0x236001ad, 0x002e0340, 0x00000000 },
- { 0x00600001, 0x202000a2, 0x008d0360, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
- { 0x00800031, 0x20001d28, 0x608d07e0, 0x04080020 },
- { 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
- { 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
- { 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
- { 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
- { 0x00000440, 0x27e03da1, 0x000005c0, 0x000c000c },
- { 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
- { 0x02600031, 0x23401c25, 0x408d07e0, 0x02186004 },
- { 0x00800001, 0x236001ad, 0x002e0340, 0x00000000 },
- { 0x00600001, 0x202000a2, 0x008d0360, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
- { 0x00800031, 0x20001d28, 0x608d07e0, 0x04080020 },
- { 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
- { 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
- { 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
- { 0x00600040, 0x2400462d, 0x00ae9c00, 0x00aed810 },
- { 0x00600040, 0x2340462d, 0x00ae9800, 0x00aed810 },
- { 0x00600040, 0x2360462d, 0x00ae9c10, 0x00aedc00 },
- { 0x05810010, 0x200035ac, 0x008d2400, 0x000005d0 },
- { 0x05810010, 0x200035ac, 0x008d2340, 0x000005d2 },
- { 0x05810010, 0x200035ac, 0x008d2360, 0x000005d2 },
- { 0x00618022, 0x34001c00, 0x00001400, 0x00000038 },
- { 0x00618022, 0x34001c00, 0x02001400, 0x00000016 },
- { 0x00600040, 0x24003e2c, 0x00ae9c10, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x00ae9800, 0x00020002 },
- { 0x00600040, 0x2400458c, 0x008d0400, 0x00ae9810 },
- { 0x80600008, 0x43403d91, 0x008d0400, 0x00020002 },
- { 0x00600040, 0x24003e2c, 0x00ae9800, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x00ae9c10, 0x00020002 },
- { 0x00600040, 0x2400458c, 0x008d0400, 0x00ae9c00 },
- { 0x80600008, 0x43603d91, 0x008d0400, 0x00020002 },
- { 0x00600001, 0xd8100231, 0x00ae0340, 0x00000000 },
- { 0x00600001, 0xdc000231, 0x00ae0360, 0x00000000 },
- { 0x00608024, 0x34001c00, 0x00001400, 0x00010020 },
- { 0x00600201, 0x2400022c, 0x002405d4, 0x00000000 },
- { 0x00600040, 0x23e03d8d, 0x008d0400, 0x00010001 },
- { 0x00600040, 0x24003e2c, 0x00ae9800, 0x00040004 },
- { 0x00600048, 0x24003dac, 0x008d0400, 0x00040004 },
- { 0x00600040, 0x2400458c, 0x008d0400, 0x00aedc10 },
- { 0x00600008, 0x23403d8d, 0x008d0400, 0x00030003 },
- { 0x03600010, 0x200035ac, 0x008d0340, 0x008d03e0 },
- { 0x05600010, 0x200035ac, 0x028d0340, 0x008d43e0 },
- { 0x00610001, 0x234001ad, 0x008d03e0, 0x00000000 },
- { 0x00610001, 0x234001ad, 0x028d43e0, 0x00000000 },
- { 0x80600040, 0x43603631, 0x00ae9810, 0x008d0340 },
- { 0x80600040, 0x43403631, 0x00ae9c00, 0x008d4340 },
- { 0x00600001, 0xd8100231, 0x00ae0360, 0x00000000 },
- { 0x00600001, 0xdc000231, 0x00ae0340, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x34000020, 0x000007c0, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x206601ed, 0x00000000, 0x00030003 },
- { 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
- { 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
- { 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
- { 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
- { 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
- { 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
- { 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
- { 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
- { 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
- { 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
- { 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
- { 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
- { 0x00000001, 0x22a00169, 0x00000000, 0x01400140 },
- { 0x00000040, 0x20283c22, 0x00000008, 0x00200020 },
- { 0x00000001, 0x203801e2, 0x00000000, 0x00010001 },
- { 0x00800001, 0x204001ae, 0x00b10020, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x000002a0, 0x00010001 },
- { 0x00800031, 0x20000128, 0x608d07e0, 0x00000200 },
- { 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
- { 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
- { 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
- { 0x00000001, 0x22a00169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22600169, 0x00000000, 0x00020002 },
- { 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
- { 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc6 },
- { 0x00000801, 0x208c00e5, 0x00000000, 0xffffffca },
- { 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
- { 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
- { 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
- { 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
- { 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
- { 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
- { 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
- { 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
- { 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
- { 0x00000041, 0x22a03dad, 0x00000056, 0x00040004 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffff4 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
- { 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
- { 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
- { 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
- { 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
- { 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
- { 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
- { 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
- { 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
- { 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
- { 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
- { 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
- { 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
- { 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
- { 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
- { 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
- { 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
- { 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
- { 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
- { 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
- { 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
- { 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000006 },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffff6 },
- { 0x05000010, 0x200035ac, 0x00000240, 0x00000026 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffffc },
- { 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
- { 0x01600031, 0x20001c24, 0x708d0000, 0x82000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00600009, 0x25c03dad, 0x00050034, 0x00040004 },
- { 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
- { 0x00000041, 0x20263d29, 0x00000036, 0x00040004 },
- { 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
- { 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
- { 0x00000041, 0x27e82c21, 0x000005e4, 0x00400040 },
- { 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
- { 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
- { 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
- { 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
- { 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
- { 0x000b0220, 0x34001c00, 0x02001400, 0x0000018c },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000018a },
- { 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00200401, 0x27e001a1, 0x004505c0, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
- { 0x00010001, 0x22000060, 0x02000000, 0x0288e701 },
- { 0x00110001, 0x22000060, 0x02000000, 0x0288e601 },
- { 0x01600031, 0x20c00021, 0x408d07e0, 0x00000200 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
- { 0x00010001, 0x22000060, 0x02000000, 0x02286703 },
- { 0x00110001, 0x22000060, 0x02000000, 0x02286603 },
- { 0x03600031, 0x20800021, 0x408d07e0, 0x00000200 },
- { 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
- { 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
- { 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
- { 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
- { 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
- { 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
- { 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
- { 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
- { 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
- { 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
- { 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
- { 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
- { 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
- { 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
- { 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
- { 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
- { 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
- { 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
- { 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
- { 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
- { 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
- { 0x00000008, 0x25e83e2d, 0x00009080, 0x00020002 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00200401, 0x25d0022d, 0x00459080, 0x00000000 },
- { 0x00200c01, 0x25d80129, 0x00459050, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699060, 0x00000000 },
- { 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xfffffb8c },
- { 0x00000008, 0x25e83e2d, 0x00009084, 0x00020002 },
- { 0x00200401, 0x25d0022d, 0x00459084, 0x00000000 },
- { 0x00000801, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00000401, 0x25d80129, 0x00009040, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699064, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xfffffb76 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
- { 0x00000401, 0x25d80129, 0x00009042, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699068, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xfffffb68 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
- { 0x00000401, 0x25d80129, 0x00009044, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x0069906c, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xfffffb5a },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00200401, 0x27e001a1, 0x004505c4, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
- { 0x00800401, 0x23400231, 0x00a90040, 0x00000000 },
- { 0x00800801, 0x23500231, 0x00a90044, 0x00000000 },
- { 0x00800401, 0x23600231, 0x00a90048, 0x00000000 },
- { 0x00800801, 0x23700231, 0x00a9004c, 0x00000000 },
- { 0x00800001, 0x20400232, 0x002b0340, 0x00000000 },
- { 0x00800001, 0x20500232, 0x002b0350, 0x00000000 },
- { 0x00800001, 0x20600232, 0x002b0360, 0x00000000 },
- { 0x00800001, 0x20700232, 0x002b0370, 0x00000000 },
- { 0x00010001, 0x22000060, 0x02000000, 0x06082703 },
- { 0x00110001, 0x22000060, 0x02000000, 0x06082603 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
- { 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
- { 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
- { 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
- { 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
- { 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
- { 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
- { 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
- { 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
- { 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
- { 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
- { 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
- { 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
- { 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
- { 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
- { 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
- { 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
- { 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
- { 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
- { 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
- { 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
- { 0x00000008, 0x25e83e2d, 0x00009082, 0x00020002 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00800080 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00200401, 0x25d0022d, 0x00459082, 0x00000000 },
- { 0x00200c01, 0x25d80129, 0x00459054, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699070, 0x00000000 },
- { 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xfffffaea },
- { 0x00000008, 0x25e83e2d, 0x00009084, 0x00020002 },
- { 0x00200401, 0x25d0022d, 0x00459084, 0x00000000 },
- { 0x00000801, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00000040, 0x25e83dad, 0x000005e8, 0x00020002 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00000401, 0x25d80129, 0x00009046, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699074, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xfffffad4 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
- { 0x00000401, 0x25d80129, 0x00009048, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x00699078, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xfffffac6 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
- { 0x00000401, 0x25d80129, 0x0000904a, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x0069907c, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0xfffffab8 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00200401, 0x27e001a1, 0x004505c0, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
- { 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
- { 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
- { 0x00802001, 0x20c00022, 0x008d0140, 0x00000000 },
- { 0x00802001, 0x21000022, 0x008d0180, 0x00000000 },
- { 0x00010001, 0x22000060, 0x02000000, 0x12082703 },
- { 0x00110001, 0x22000060, 0x02000000, 0x12082603 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
- { 0x00802001, 0x20400022, 0x008d0080, 0x00000000 },
- { 0x00010001, 0x22000060, 0x02000000, 0x0618a703 },
- { 0x00110001, 0x22000060, 0x02000000, 0x0618a603 },
- { 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
- { 0x00800401, 0x23400231, 0x00a900cc, 0x00000000 },
- { 0x00800801, 0x23500231, 0x00a9010c, 0x00000000 },
- { 0x00800401, 0x23600231, 0x00a9014c, 0x00000000 },
- { 0x00800801, 0x23700231, 0x00a9018c, 0x00000000 },
- { 0x00800401, 0x23800231, 0x00cf0340, 0x00000000 },
- { 0x00800801, 0x23900231, 0x00cf0341, 0x00000000 },
- { 0x00800401, 0x23a00231, 0x00cf0342, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00cf0343, 0x00000000 },
- { 0x00802001, 0x202000a2, 0x008d0380, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
- { 0x00800031, 0x20001d28, 0x608d07e0, 0x06080020 },
- { 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
- { 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
- { 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
- { 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000440, 0x27e03da1, 0x000005c0, 0x000c000c },
- { 0x00000c01, 0x27e401a1, 0x000005c2, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x02286003 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x00010008 },
- { 0x00010001, 0x22000060, 0x02000000, 0x02286703 },
- { 0x00110001, 0x22000060, 0x02000000, 0x02286603 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x02600031, 0x23400025, 0x408d07e0, 0x00000200 },
- { 0x00800401, 0x23800231, 0x00cf0340, 0x00000000 },
- { 0x00800801, 0x23900231, 0x00cf0341, 0x00000000 },
- { 0x00800401, 0x23a00231, 0x00cf0342, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00cf0343, 0x00000000 },
- { 0x00802001, 0x202000a2, 0x008d0380, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
- { 0x00800031, 0x20001d28, 0x608d07e0, 0x06080020 },
- { 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
- { 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
- { 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x206601ed, 0x00000000, 0x00030003 },
- { 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
- { 0x00000001, 0x206801ed, 0x00000000, 0x01400140 },
- { 0x00000001, 0x22600169, 0x00000000, 0x00030003 },
- { 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
- { 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
- { 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
- { 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
- { 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
- { 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
- { 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
- { 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
- { 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
- { 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
- { 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
- { 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
- { 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc4 },
- { 0x00000801, 0x208c00e5, 0x00000000, 0xffffffc8 },
- { 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
- { 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
- { 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
- { 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
- { 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
- { 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
- { 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
- { 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
- { 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
- { 0x00800001, 0x240001ac, 0x00000068, 0x00000000 },
- { 0x00000048, 0x22a03dad, 0x00000056, 0x00040004 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffff2 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
- { 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
- { 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
- { 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
- { 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
- { 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
- { 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
- { 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
- { 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
- { 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
- { 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
- { 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
- { 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
- { 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
- { 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
- { 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
- { 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
- { 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
- { 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
- { 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
- { 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
- { 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00600401, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000c01, 0x26140061, 0x00000000, 0x01800000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000801, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00000040, 0x2078252d, 0x00000026, 0x00004280 },
- { 0x00400001, 0x26000231, 0x00000078, 0x00000000 },
- { 0x00600031, 0x26201c21, 0x308d0600, 0x02000002 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffffe8 },
- { 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
- { 0x01600031, 0x20001c24, 0x708d0000, 0x82000012 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00600009, 0x25c03dad, 0x00050034, 0x00040004 },
- { 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
- { 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
- { 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
- { 0x00000041, 0x27e82c21, 0x000005e4, 0x00400040 },
- { 0x00000001, 0x240001ec, 0x00000000, 0x01400140 },
- { 0x00000048, 0x20263dad, 0x00000036, 0x00040004 },
- { 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
- { 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
- { 0x00800001, 0x2220022d, 0x000d002c, 0x00000000 },
- { 0x00600040, 0x22303dad, 0x008d0230, 0x00080008 },
- { 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
- { 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
- { 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
- { 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
- { 0x000b0220, 0x34001c00, 0x02001400, 0x0000013a },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000138 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
- { 0x00010001, 0x22000060, 0x02000000, 0x0248e702 },
- { 0x00110001, 0x22000060, 0x02000000, 0x0248e602 },
- { 0x02600031, 0x20c00021, 0x408d07e0, 0x00000200 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005ca, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
- { 0x00010001, 0x22000060, 0x02000000, 0x02186704 },
- { 0x00110001, 0x22000060, 0x02000000, 0x02186604 },
- { 0x02600031, 0x20800021, 0x408d07e0, 0x00000200 },
- { 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
- { 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
- { 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
- { 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
- { 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
- { 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
- { 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
- { 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
- { 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
- { 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
- { 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
- { 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
- { 0x00800008, 0x2340352d, 0x00009050, 0x008d0220 },
- { 0x00800008, 0x2360352d, 0x00009052, 0x008d0220 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00200401, 0x25d0022d, 0x004590c0, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990a0, 0x00000000 },
- { 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffc0c },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00410041 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
- { 0x00200401, 0x25d0022d, 0x004590c8, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990b0, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffbfe },
- { 0x00800008, 0x2340352d, 0x00009042, 0x008d0220 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00200401, 0x25d0022d, 0x004590c4, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990a4, 0x00000000 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
- { 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffbe8 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
- { 0x00200401, 0x25d0022d, 0x004590cc, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990b4, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffbda },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c4, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005c6, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
- { 0x00600401, 0x2340012d, 0x00890040, 0x00000000 },
- { 0x00600801, 0x2350012d, 0x00890048, 0x00000000 },
- { 0x00600001, 0x204001aa, 0x00270340, 0x00000000 },
- { 0x00600001, 0x205001aa, 0x00270350, 0x00000000 },
- { 0x00010001, 0x22000060, 0x02000000, 0x04082704 },
- { 0x00110001, 0x22000060, 0x02000000, 0x04082604 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
- { 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
- { 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
- { 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
- { 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
- { 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
- { 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
- { 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
- { 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
- { 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
- { 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
- { 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
- { 0x00800008, 0x2340352d, 0x00009054, 0x008d0220 },
- { 0x00800008, 0x2360352d, 0x00009056, 0x008d0220 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00800080 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00200401, 0x25d0022d, 0x004590c2, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990a8, 0x00000000 },
- { 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffb92 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00810081 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
- { 0x00200401, 0x25d0022d, 0x004590ca, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990b8, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffb84 },
- { 0x00800008, 0x2340352d, 0x00009048, 0x008d0220 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00200401, 0x25d0022d, 0x004590c4, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990ac, 0x00000000 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
- { 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffb6e },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
- { 0x00200401, 0x25d0022d, 0x004590cc, 0x00000000 },
- { 0x00400801, 0x25d40231, 0x006990bc, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffb60 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
- { 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
- { 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
- { 0x00010001, 0x22000060, 0x02000000, 0x0a082704 },
- { 0x00110001, 0x22000060, 0x02000000, 0x0a082604 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005ca, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
- { 0x00600001, 0x20400022, 0x008d0080, 0x00000000 },
- { 0x00010001, 0x22000060, 0x02000000, 0x0418a704 },
- { 0x00110001, 0x22000060, 0x02000000, 0x0418a604 },
- { 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
- { 0x00600401, 0x2340012d, 0x008500cc, 0x00000000 },
- { 0x00600801, 0x2350012d, 0x0085010c, 0x00000000 },
- { 0x00800001, 0x236001ad, 0x002e0340, 0x00000000 },
- { 0x00600001, 0x202000a2, 0x008d0360, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
- { 0x00800031, 0x20001d28, 0x608d07e0, 0x04080020 },
- { 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
- { 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
- { 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
- { 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000440, 0x27e03da1, 0x000005c0, 0x000c000c },
- { 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x02186004 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x00010008 },
- { 0x00010001, 0x22000060, 0x02000000, 0x02186704 },
- { 0x00110001, 0x22000060, 0x02000000, 0x02186604 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x02600031, 0x23400025, 0x408d07e0, 0x00000200 },
- { 0x00800001, 0x236001ad, 0x002e0340, 0x00000000 },
- { 0x00600001, 0x202000a2, 0x008d0360, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x00000026, 0x00010001 },
- { 0x00800031, 0x20001d28, 0x608d07e0, 0x04080020 },
- { 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
- { 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
- { 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x206601ed, 0x00000000, 0x00010001 },
- { 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
- { 0x00000001, 0x22600169, 0x00000000, 0x00010001 },
- { 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
- { 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
- { 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
- { 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
- { 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
- { 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
- { 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
- { 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
- { 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
- { 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
- { 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
- { 0x00000001, 0x22a00169, 0x00000000, 0x01400140 },
- { 0x00000040, 0x20283c22, 0x00000008, 0x00200020 },
- { 0x00000001, 0x203801e2, 0x00000000, 0x00010001 },
- { 0x00800001, 0x204001ae, 0x00b10020, 0x00000000 },
- { 0x00000008, 0x27e03d29, 0x000002a0, 0x00010001 },
- { 0x00800031, 0x20000128, 0x608d07e0, 0x00000200 },
- { 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
- { 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
- { 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
- { 0x00000001, 0x22a00169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22600169, 0x00000000, 0x00020002 },
- { 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
- { 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc6 },
- { 0x00000801, 0x208c00e5, 0x00000000, 0xffffffca },
- { 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
- { 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
- { 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
- { 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
- { 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
- { 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
- { 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
- { 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
- { 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
- { 0x00000041, 0x22a03dad, 0x00000056, 0x00040004 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffff4 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
- { 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
- { 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
- { 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
- { 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
- { 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
- { 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
- { 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
- { 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
- { 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
- { 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
- { 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
- { 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
- { 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
- { 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
- { 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
- { 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
- { 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
- { 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
- { 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
- { 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
- { 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000006 },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffff6 },
- { 0x05000010, 0x200035ac, 0x00000240, 0x00000026 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffffc },
- { 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
- { 0x01600031, 0x20001c24, 0x708d0000, 0x82000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00400441, 0x45c03dad, 0x00000034, 0x00100010 },
- { 0x00400841, 0x45c23dad, 0x00000036, 0x00200020 },
- { 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
- { 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
- { 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
- { 0x00000041, 0x25e42c21, 0x000005e4, 0x00800080 },
- { 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
- { 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
- { 0x00000005, 0x202a3dad, 0x0000002a, 0xfffdfffd },
- { 0x02000005, 0x20002d2c, 0x0200002a, 0x00020002 },
- { 0x00000001, 0x27e80021, 0x000005e4, 0x00000000 },
- { 0x00010040, 0x27e83c21, 0x020007e8, 0x00400040 },
- { 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
- { 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
- { 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
- { 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
- { 0x00000005, 0x25ec2e29, 0x00009002, 0x000a000a },
- { 0x00000005, 0x25ea2e29, 0x00009002, 0x00060006 },
- { 0x000b0220, 0x34001c00, 0x02001400, 0x00000252 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000250 },
- { 0x01000010, 0x20003d2c, 0x000005ec, 0x00080008 },
- { 0x00000005, 0x25e03d8d, 0x00000600, 0x00010001 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00200401, 0x27e001a5, 0x004505c0, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0288a001 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
- { 0x00010001, 0x22000060, 0x02000000, 0x0288e701 },
- { 0x00110001, 0x22000060, 0x02000000, 0x0288e601 },
- { 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x01600031, 0x20c00021, 0x408d07e0, 0x00000200 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00200401, 0x27e001a1, 0x004505c4, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x02286003 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
- { 0x00010001, 0x22000060, 0x02000000, 0x02286703 },
- { 0x00110001, 0x22000060, 0x02000000, 0x02286603 },
- { 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x02600031, 0x23400025, 0x408d07e0, 0x00000200 },
- { 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
- { 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
- { 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
- { 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
- { 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
- { 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
- { 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
- { 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
- { 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
- { 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
- { 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
- { 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
- { 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
- { 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
- { 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
- { 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
- { 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
- { 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
- { 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
- { 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
- { 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
- { 0x00800401, 0x20400231, 0x00cf0340, 0x00000000 },
- { 0x00800801, 0x20500231, 0x00cf0341, 0x00000000 },
- { 0x00800401, 0x20600231, 0x00cf0342, 0x00000000 },
- { 0x00800801, 0x20700231, 0x00cf0343, 0x00000000 },
- { 0x01600010, 0x20003d2c, 0x000005ea, 0x00040004 },
- { 0x01600010, 0x20003d2c, 0x020005ea, 0x00020002 },
- { 0x00800001, 0x21c00229, 0x00009080, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00009081, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00289060, 0x00000000 },
- { 0x00610401, 0x41c00229, 0x00009080, 0x00000000 },
- { 0x00610801, 0x41c20229, 0x00009090, 0x00000000 },
- { 0x00610401, 0x41e00229, 0x00009081, 0x00000000 },
- { 0x00610801, 0x41e20229, 0x00009091, 0x00000000 },
- { 0x00610401, 0x42000229, 0x00249060, 0x00000000 },
- { 0x00610801, 0x42020229, 0x00249098, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
- { 0x00610401, 0x21c00229, 0x02009080, 0x00000000 },
- { 0x00610801, 0x21d00229, 0x02009090, 0x00000000 },
- { 0x00610401, 0x21e00229, 0x02009081, 0x00000000 },
- { 0x00610801, 0x21f00229, 0x02009091, 0x00000000 },
- { 0x00610401, 0x22000229, 0x02249060, 0x00000000 },
- { 0x00610801, 0x22100229, 0x02249098, 0x00000000 },
- { 0x00800008, 0x25a03d29, 0x008d01c0, 0x00020002 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00200001, 0x25d80129, 0x00459050, 0x00000000 },
- { 0x00800040, 0x25a03d29, 0x00b105a0, 0x00020002 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001b4 },
- { 0x00800008, 0x25a03e29, 0x00009084, 0x00020002 },
- { 0x00800001, 0x21c00229, 0x00009084, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00009085, 0x00000000 },
- { 0x00000001, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00800040, 0x25a03d29, 0x00b105a0, 0x00020002 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00000001, 0x25d80129, 0x00009040, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00289064, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000019c },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
- { 0x00000001, 0x25d80129, 0x00009042, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00289068, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000018e },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
- { 0x00000001, 0x25d80129, 0x00009044, 0x00000000 },
- { 0x00800001, 0x22000229, 0x0028906c, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000180 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00200401, 0x27e001a1, 0x004505c4, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f0003 },
- { 0x00800401, 0x23400231, 0x00a90040, 0x00000000 },
- { 0x00800801, 0x23500231, 0x00a90044, 0x00000000 },
- { 0x00800401, 0x23600231, 0x00a90048, 0x00000000 },
- { 0x00800801, 0x23700231, 0x00a9004c, 0x00000000 },
- { 0x00800001, 0x20400232, 0x002b0340, 0x00000000 },
- { 0x00800001, 0x20500232, 0x002b0350, 0x00000000 },
- { 0x00800001, 0x20600232, 0x002b0360, 0x00000000 },
- { 0x00800001, 0x20700232, 0x002b0370, 0x00000000 },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x06082003 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
- { 0x00010001, 0x22000060, 0x02000000, 0x06082703 },
- { 0x00110001, 0x22000060, 0x02000000, 0x06082603 },
- { 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x22000060, 0x00000000, 0x02286003 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
- { 0x01000005, 0x20003dac, 0x020005e0, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000006 },
- { 0x00000440, 0x27e43ca5, 0x000007e4, 0xfffcfffc },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
- { 0x00000040, 0x22000c00, 0x00000200, 0x00200000 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000c },
- { 0x0000000c, 0x27e43da5, 0x000005c2, 0x00010001 },
- { 0x00010001, 0x22000060, 0x02000000, 0x02286703 },
- { 0x00110001, 0x22000060, 0x02000000, 0x02286603 },
- { 0x00000040, 0x27e43ca5, 0x000007e4, 0xfffcfffc },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x01600031, 0x20400021, 0x408d07e0, 0x00000200 },
- { 0x00800401, 0x23800231, 0x00a900c0, 0x00000000 },
- { 0x00800801, 0x23900231, 0x00a90100, 0x00000000 },
- { 0x00800401, 0x23a00231, 0x00a90140, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00a90180, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00a900c4, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00a90104, 0x00000000 },
- { 0x00800401, 0x23e00231, 0x00a90144, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00a90184, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00a900c8, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00a90108, 0x00000000 },
- { 0x00800401, 0x24200231, 0x00a90148, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00a90188, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00a900cc, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00a9010c, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00a9014c, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00a9018c, 0x00000000 },
- { 0x00800401, 0x20c00231, 0x00cf0380, 0x00000000 },
- { 0x00800801, 0x20d00231, 0x00cf0381, 0x00000000 },
- { 0x00800401, 0x20e00231, 0x00cf0382, 0x00000000 },
- { 0x00800801, 0x20f00231, 0x00cf0383, 0x00000000 },
- { 0x00800401, 0x21000231, 0x00cf03c0, 0x00000000 },
- { 0x00800801, 0x21100231, 0x00cf03c1, 0x00000000 },
- { 0x00800401, 0x21200231, 0x00cf03c2, 0x00000000 },
- { 0x00800801, 0x21300231, 0x00cf03c3, 0x00000000 },
- { 0x00800401, 0x21400231, 0x00cf0400, 0x00000000 },
- { 0x00800801, 0x21500231, 0x00cf0401, 0x00000000 },
- { 0x00800401, 0x21600231, 0x00cf0402, 0x00000000 },
- { 0x00800801, 0x21700231, 0x00cf0403, 0x00000000 },
- { 0x00800401, 0x21800231, 0x00cf0440, 0x00000000 },
- { 0x00800801, 0x21900231, 0x00cf0441, 0x00000000 },
- { 0x00800401, 0x21a00231, 0x00cf0442, 0x00000000 },
- { 0x00800801, 0x21b00231, 0x00cf0443, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
- { 0x00000001, 0x260201ac, 0x000005e0, 0x00000000 },
- { 0x00800008, 0x25a03e29, 0x00009082, 0x00020002 },
- { 0x00200001, 0x25d80129, 0x00459054, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00009082, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00009083, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00289070, 0x00000000 },
- { 0x00800040, 0x25a03d29, 0x00b105a0, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000050 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000000a },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000d4 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000044 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x05000500 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x05400540 },
- { 0x00800001, 0x25000129, 0x00ad0040, 0x00000000 },
- { 0x00800001, 0x25200129, 0x00ad0080, 0x00000000 },
- { 0x00800001, 0x25400129, 0x00ad00c0, 0x00000000 },
- { 0x00800001, 0x25600129, 0x00ad0100, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000c2 },
- { 0x00600001, 0x20600129, 0x008d0510, 0x00000000 },
- { 0x00600001, 0x20800129, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x20a00129, 0x008d0530, 0x00000000 },
- { 0x00600001, 0x20c00129, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x20e00129, 0x008d0550, 0x00000000 },
- { 0x00600001, 0x21000129, 0x008d0560, 0x00000000 },
- { 0x00800008, 0x25a03e29, 0x00009092, 0x00020002 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x05000500 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x05400540 },
- { 0x00800001, 0x25000129, 0x00ad0050, 0x00000000 },
- { 0x00800001, 0x25200129, 0x00ad0090, 0x00000000 },
- { 0x00800001, 0x25400129, 0x00ad00d0, 0x00000000 },
- { 0x00800001, 0x25600129, 0x00ad0110, 0x00000000 },
- { 0x00200001, 0x25d80129, 0x0045905c, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00009092, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00009093, 0x00000000 },
- { 0x00800001, 0x22000229, 0x0028909c, 0x00000000 },
- { 0x00800040, 0x25a03d29, 0x00b105a0, 0x00020002 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000009a },
- { 0x00600001, 0x20700129, 0x008d0510, 0x00000000 },
- { 0x00600001, 0x20900129, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x20b00129, 0x008d0530, 0x00000000 },
- { 0x00600001, 0x20d00129, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x20f00129, 0x008d0550, 0x00000000 },
- { 0x00600001, 0x21100129, 0x008d0560, 0x00000000 },
- { 0x00800008, 0x25a03e29, 0x00009084, 0x00020002 },
- { 0x00800001, 0x21c00229, 0x00009084, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00009085, 0x00000000 },
- { 0x00000001, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00800040, 0x25a03d29, 0x00b105a0, 0x00020002 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00c000c0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00000001, 0x25d80129, 0x00009046, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00289074, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000076 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00100010 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01000100 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01400140 },
- { 0x00000001, 0x25d80129, 0x00009048, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00289078, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000068 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00200020 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x01400140 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01800180 },
- { 0x00000001, 0x25d80129, 0x0000904a, 0x00000000 },
- { 0x00800001, 0x22000229, 0x0028907c, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x0000005a },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00200401, 0x27e001a1, 0x004505c0, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x000f000f },
- { 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
- { 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
- { 0x00802001, 0x20c00022, 0x008d0140, 0x00000000 },
- { 0x00802001, 0x21000022, 0x008d0180, 0x00000000 },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x12082003 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
- { 0x00010001, 0x22000060, 0x02000000, 0x12082703 },
- { 0x00110001, 0x22000060, 0x02000000, 0x12082603 },
- { 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x01800005, 0x20003dac, 0x020005e0, 0x00010001 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x00200401, 0x27e001a1, 0x004505c8, 0x00000000 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
- { 0x00812001, 0x20400022, 0x028d0040, 0x00000000 },
- { 0x00912001, 0x20400022, 0x028d0080, 0x00000000 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0618a003 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00100010 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000c },
- { 0x0000000c, 0x27e43da5, 0x000005c2, 0x00010001 },
- { 0x00010001, 0x22000060, 0x02000000, 0x0618a703 },
- { 0x00110001, 0x22000060, 0x02000000, 0x0618a603 },
- { 0x00000040, 0x27e43ca5, 0x000007e4, 0xfffcfffc },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
- { 0x01000005, 0x20003dac, 0x0000002a, 0x00020002 },
- { 0x00000006, 0x202a3dad, 0x0000002a, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffd94 },
- { 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
- { 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
- { 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
- { 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00800040, 0x2400462d, 0x00b19c00, 0x00b1d830 },
- { 0x00800040, 0x2340462d, 0x00b19820, 0x00b1d830 },
- { 0x00800040, 0x2360462d, 0x00b19c10, 0x00b1dc00 },
- { 0x05810010, 0x200025ac, 0x008d2400, 0x008d01c0 },
- { 0x05810010, 0x200025ac, 0x008d2340, 0x008d01e0 },
- { 0x05810010, 0x200025ac, 0x008d2360, 0x008d01e0 },
- { 0x00818022, 0x34001c00, 0x00001400, 0x000000c8 },
- { 0x00800040, 0x2440462d, 0x00b19810, 0x00b1d830 },
- { 0x00800040, 0x2460462d, 0x00b19c20, 0x00b1dc00 },
- { 0x00800201, 0x24a00129, 0x00b19820, 0x00000000 },
- { 0x00818022, 0x34001c00, 0x02001400, 0x00000066 },
- { 0x05800010, 0x200025ac, 0x028d2400, 0x008d05a0 },
- { 0x00800040, 0x2520462d, 0x00b19830, 0x00b19820 },
- { 0x00800040, 0x2540462d, 0x00b19c00, 0x00b19c10 },
- { 0x00000201, 0x26000108, 0x00000602, 0x00000000 },
- { 0x05810010, 0x200025ac, 0x028d2440, 0x008d01e0 },
- { 0x05810010, 0x200025ac, 0x008d2460, 0x008d01e0 },
- { 0x00818022, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x00800040, 0x2560462d, 0x00b19810, 0x00b19800 },
- { 0x00800040, 0x238045ad, 0x008d0520, 0x00b19c00 },
- { 0x00800040, 0x24003d8c, 0x00b10400, 0x00040004 },
- { 0x00800040, 0x23a0458d, 0x00b10400, 0x00b19810 },
- { 0x00800048, 0x24003dac, 0x008d0560, 0x00020002 },
- { 0x80800008, 0x43c03d91, 0x00b10400, 0x00030003 },
- { 0x00800040, 0x24003dac, 0x00b103a0, 0xfffefffe },
- { 0x80800008, 0x43603d91, 0x00b10400, 0x00020002 },
- { 0x00800040, 0x2400362c, 0x00b19c10, 0x00b10380 },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x00b103a0 },
- { 0x80800008, 0x43403d91, 0x00b10400, 0x00030003 },
- { 0x00800001, 0xb8100231, 0x00ae03c0, 0x00000000 },
- { 0x00800001, 0xb8200231, 0x00ae0360, 0x00000000 },
- { 0x00800001, 0xb8300231, 0x00ae0340, 0x00000000 },
- { 0x00808024, 0x34001c00, 0x00001400, 0x0001000e },
- { 0x00800040, 0x2400362c, 0x00b19820, 0x008d0520 },
- { 0x00800040, 0x2400458c, 0x00b10400, 0x00b19c10 },
- { 0x00800040, 0x24003d8c, 0x00b10400, 0x00020002 },
- { 0x80800008, 0x43403d91, 0x00b10400, 0x00020002 },
- { 0x00800001, 0xb8300231, 0x00ae0340, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00818022, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x00800040, 0x2580462d, 0x00b19c20, 0x00b19c30 },
- { 0x00800040, 0x238045ad, 0x008d0540, 0x008d04b0 },
- { 0x00800040, 0x24003d8c, 0x00b10400, 0x00040004 },
- { 0x00800040, 0x23a0458d, 0x00b10400, 0x00b19c20 },
- { 0x00800048, 0x24003dac, 0x008d0580, 0x00020002 },
- { 0x80800008, 0x43c03d91, 0x00b10400, 0x00030003 },
- { 0x00800040, 0x24003dac, 0x00b103a0, 0xfffefffe },
- { 0x80800008, 0x43603d91, 0x00b10400, 0x00020002 },
- { 0x00800040, 0x2400362c, 0x008d04a0, 0x00b10380 },
- { 0x00800040, 0x2400358c, 0x00b10400, 0x00b103a0 },
- { 0x80800008, 0x43403d91, 0x00b10400, 0x00030003 },
- { 0x00800001, 0xbc200231, 0x00ae03c0, 0x00000000 },
- { 0x00800001, 0xbc100231, 0x00ae0360, 0x00000000 },
- { 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
- { 0x00808024, 0x34001c00, 0x00001400, 0x0001000e },
- { 0x00800040, 0x2400362c, 0x008d04a0, 0x008d0540 },
- { 0x00800040, 0x2400458c, 0x00b10400, 0x00b19c10 },
- { 0x00800040, 0x24003d8c, 0x00b10400, 0x00020002 },
- { 0x80800008, 0x43403d91, 0x00b10400, 0x00020002 },
- { 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00808024, 0x34001c00, 0x00001400, 0x0001005a },
- { 0x00800001, 0x23e0012d, 0x008d0200, 0x00000000 },
- { 0x05800010, 0x200025ac, 0x008d2440, 0x008d01e0 },
- { 0x05800010, 0x200025ac, 0x028d2460, 0x008d01e0 },
- { 0x00800040, 0x24003e2c, 0x00b19820, 0x00040004 },
- { 0x00800048, 0x24003dac, 0x008d0400, 0x00040004 },
- { 0x00800040, 0x2400458c, 0x00b10400, 0x00b1dc10 },
- { 0x00800008, 0x23403d8d, 0x00b10400, 0x00030003 },
- { 0x00810040, 0x23e03dad, 0x008d03e0, 0x00010001 },
- { 0x00200201, 0x25ec018d, 0x00450600, 0x00000000 },
- { 0x00810040, 0x23e03dad, 0x028d03e0, 0x00010001 },
- { 0x03800010, 0x200035ac, 0x008d0340, 0x008d03e0 },
- { 0x05800010, 0x200035ac, 0x028d0340, 0x008d43e0 },
- { 0x00800042, 0x24c0462d, 0x00b19830, 0x00b19c00 },
- { 0x00810001, 0x234001ad, 0x008d03e0, 0x00000000 },
- { 0x00810001, 0x234001ad, 0x028d43e0, 0x00000000 },
- { 0x00200201, 0x260001ac, 0x004505ec, 0x00000000 },
- { 0x80800040, 0x43603631, 0x00b19830, 0x008d0340 },
- { 0x80800040, 0x43403631, 0x00b19c00, 0x008d4340 },
- { 0x00800001, 0xb8300231, 0x00ae0360, 0x00000000 },
- { 0x00800001, 0xbc000231, 0x00ae0340, 0x00000000 },
- { 0x00818022, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00800040, 0x2400362c, 0x00b19810, 0x008d04c0 },
- { 0x00800048, 0x24003e2c, 0x00b19820, 0xfffefffe },
- { 0x00800008, 0x23603d8d, 0x00b10400, 0x00010001 },
- { 0x03800010, 0x200025ac, 0x008d0360, 0x008d0200 },
- { 0x05800010, 0x200025ac, 0x028d0360, 0x008d4200 },
- { 0x00810001, 0x2360012d, 0x008d0200, 0x00000000 },
- { 0x00810001, 0x2360012d, 0x028d4200, 0x00000000 },
- { 0x00000201, 0x260201ac, 0x000005ee, 0x00000000 },
- { 0x80800040, 0x43603631, 0x00b19820, 0x008d0360 },
- { 0x00800001, 0xb8200231, 0x00ae0360, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00818022, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00800040, 0x2400362c, 0x00b19c20, 0x008d04c0 },
- { 0x00800048, 0x24003e2c, 0x00b19c10, 0xfffefffe },
- { 0x00800008, 0x23603d8d, 0x00b10400, 0x00010001 },
- { 0x03800010, 0x200025ac, 0x008d0360, 0x008d0200 },
- { 0x05800010, 0x200025ac, 0x028d0360, 0x008d4200 },
- { 0x00810001, 0x2360012d, 0x008d0200, 0x00000000 },
- { 0x00810001, 0x2360012d, 0x028d4200, 0x00000000 },
- { 0x80800040, 0x43603631, 0x00b19c10, 0x008d0360 },
- { 0x00800001, 0xbc100231, 0x00ae0360, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x34000020, 0x000007c0, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00a02001, 0x20400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x206601ed, 0x00000000, 0x00010001 },
- { 0x00000009, 0x20663dad, 0x00000066, 0x000a000a },
- { 0x00000001, 0x206801ed, 0x00000000, 0x01400140 },
- { 0x00000001, 0x22600169, 0x00000000, 0x00030003 },
- { 0x00000008, 0x22403dad, 0x00000026, 0x00010001 },
- { 0x00000041, 0x224235ad, 0x00000020, 0x00000022 },
- { 0x00600001, 0x20200022, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x203c0022, 0x00000018, 0x00000000 },
- { 0x00000001, 0x203f01f2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c00e2, 0x00000000, 0x00000000 },
- { 0x00000001, 0x202c010a, 0x00000e00, 0x00000000 },
- { 0x00600001, 0x20400021, 0x008d0020, 0x00000000 },
- { 0x00400001, 0x205401ed, 0x00000000, 0x00000000 },
- { 0x00200040, 0x20583dad, 0x00450020, 0xffffffff },
- { 0x00000001, 0x22000060, 0x00000000, 0x06080000 },
- { 0x00600001, 0x26000021, 0x008d0000, 0x00000000 },
- { 0x00000001, 0x26140061, 0x00000000, 0x00c00400 },
- { 0x00000001, 0x26100169, 0x00000000, 0x12121212 },
- { 0x07600031, 0x26201c21, 0x308d0600, 0x02000000 },
- { 0x00200401, 0x208000e5, 0x00000000, 0x00000000 },
- { 0x00000c01, 0x208800e5, 0x00000000, 0xffffffc4 },
- { 0x00000801, 0x208c00e5, 0x00000000, 0xffffffc8 },
- { 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
- { 0x00600001, 0x20000022, 0x008d07e0, 0x00000000 },
- { 0x00000040, 0x20283c22, 0x00000008, 0x00100010 },
- { 0x00000001, 0x206001ed, 0x00000000, 0x00020002 },
- { 0x00000001, 0x206201ad, 0x0000005a, 0x00000000 },
- { 0x00000001, 0x20a001ed, 0x00000000, 0x00000000 },
- { 0x00200001, 0x228001ed, 0x00000000, 0x00000000 },
- { 0x00802001, 0x20c00061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21000061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21400061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21800061, 0x00000000, 0x00ff00ff },
- { 0x00802001, 0x21c00061, 0x00000000, 0x00ff00ff },
- { 0x00000041, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x05000010, 0x200035ac, 0x02000280, 0x00000240 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000004 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x01000010, 0x20002d28, 0x000090c2, 0x00000000 },
- { 0x03000010, 0x200035ac, 0x02000054, 0x00000058 },
- { 0x00800001, 0x240001ac, 0x00000068, 0x00000000 },
- { 0x00000048, 0x22a03dad, 0x00000056, 0x00040004 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffff2 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00200001, 0xb0c00229, 0x00450054, 0x00000000 },
- { 0x00200040, 0x22803dad, 0x00450280, 0x00010001 },
- { 0x00000001, 0x20300022, 0x00000010, 0x00000000 },
- { 0x00000001, 0x20380122, 0x00000260, 0x00000000 },
- { 0x00800001, 0x204001ae, 0x00b10040, 0x00000000 },
- { 0x00000008, 0x20003d2a, 0x000002a0, 0x00010001 },
- { 0x00000040, 0x22602d29, 0x00000260, 0x00020002 },
- { 0x00800031, 0x20000008, 0x608d0000, 0x00000200 },
- { 0x00000006, 0x203025a2, 0x00000066, 0x000002a0 },
- { 0x01600031, 0x20001c00, 0x708d0000, 0x02000001 },
- { 0x04200010, 0x200035ac, 0x00450054, 0x00450060 },
- { 0x00010040, 0x20a03dad, 0x02000056, 0x00010001 },
- { 0x05200010, 0x200035ac, 0x02450280, 0x00450240 },
- { 0x00000001, 0x240001ec, 0x00000000, 0x00040004 },
- { 0x00000048, 0x22083dac, 0x00000056, 0x00040004 },
- { 0x00200040, 0x205455ad, 0x00450054, 0x00450034 },
- { 0x02000010, 0x20003d8c, 0x00000600, 0x00010001 },
- { 0x00000041, 0x220e3d8c, 0x00000602, 0x00040004 },
- { 0x00010041, 0x22083dac, 0x000000a0, 0x00040004 },
- { 0x00010401, 0x205601ad, 0x000000a0, 0x00000000 },
- { 0x00010840, 0x20543d2d, 0x000090c0, 0x00010001 },
- { 0x00000220, 0x34001400, 0x00001400, 0x00009c80 },
- { 0x01000010, 0x20003dac, 0x02000280, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000014 },
- { 0x00000030, 0x32000084, 0x00001200, 0x00000000 },
- { 0x00000040, 0x22803dad, 0x00000280, 0xffffffff },
- { 0x00600401, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000c01, 0x26140061, 0x00000000, 0x01800000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000801, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00000040, 0x2078252d, 0x00000026, 0x00004280 },
- { 0x00400001, 0x26000231, 0x00000078, 0x00000000 },
- { 0x00600031, 0x26201c21, 0x308d0600, 0x02000002 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffffe8 },
- { 0x07600031, 0x20001c20, 0x30000000, 0x02000001 },
- { 0x01600031, 0x20001c24, 0x708d0000, 0x82000012 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0000, 0x00000000 },
- { 0x00400441, 0x45c03dad, 0x00000034, 0x00100010 },
- { 0x00400841, 0x45c23dad, 0x00000036, 0x00200020 },
- { 0x00200001, 0x260001ec, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25e20129, 0x00000036, 0x00000000 },
- { 0x00000041, 0x25e435a1, 0x00000020, 0x00000036 },
- { 0x00000040, 0x25e43421, 0x000005e4, 0x00000034 },
- { 0x00000041, 0x25e42c21, 0x000005e4, 0x00800080 },
- { 0x00000040, 0x25c43dad, 0x000005c4, 0xfffcfffc },
- { 0x00000040, 0x25ca3dad, 0x000005ca, 0xfffcfffc },
- { 0x00000005, 0x202a3dad, 0x0000002a, 0xfffdfffd },
- { 0x00800001, 0x2220022d, 0x000d002c, 0x00000000 },
- { 0x00600040, 0x22303dad, 0x008d0230, 0x00080008 },
- { 0x02000005, 0x20002d2c, 0x0200002a, 0x00020002 },
- { 0x00000001, 0x27e80021, 0x000005e4, 0x00000000 },
- { 0x00010040, 0x27e83c21, 0x020007e8, 0x00400040 },
- { 0x01600031, 0x22401c21, 0x408d07e0, 0x02885800 },
- { 0x00000001, 0x220801ec, 0x00000000, 0x02400240 },
- { 0x01800005, 0x20002d28, 0x02b19040, 0xffffffff },
- { 0x02000005, 0x20003e2c, 0x00009030, 0x00010001 },
- { 0x00000005, 0x25ec2e29, 0x00009002, 0x000a000a },
- { 0x00000005, 0x25ea2e29, 0x00009002, 0x00060006 },
- { 0x000b0220, 0x34001c00, 0x02001400, 0x00000252 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000250 },
- { 0x01000010, 0x20003d2c, 0x000005ec, 0x00080008 },
- { 0x00000005, 0x25e03d8d, 0x00000600, 0x00010001 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0248a002 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
- { 0x00010001, 0x22000060, 0x02000000, 0x0248e702 },
- { 0x00110001, 0x22000060, 0x02000000, 0x0248e602 },
- { 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x02600031, 0x20c00021, 0x408d07e0, 0x00000200 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c4, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005c6, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x02186004 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
- { 0x00010001, 0x22000060, 0x02000000, 0x02186704 },
- { 0x00110001, 0x22000060, 0x02000000, 0x02186604 },
- { 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x02600031, 0x23400025, 0x408d07e0, 0x00000200 },
- { 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
- { 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
- { 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
- { 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
- { 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
- { 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
- { 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
- { 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
- { 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
- { 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
- { 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
- { 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
- { 0x00800001, 0x204001a9, 0x002e0340, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00400040 },
- { 0x01000010, 0x20003d2c, 0x020005ea, 0x00040004 },
- { 0x00800008, 0x2340352d, 0x00009050, 0x008d0220 },
- { 0x00800008, 0x2360352d, 0x00009052, 0x008d0220 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000006a },
- { 0x01000010, 0x20003d2c, 0x000005ea, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x02600005, 0x20003dac, 0x00650340, 0x00010001 },
- { 0x02600005, 0x20003dac, 0x02650360, 0x00010001 },
- { 0x00400401, 0x41c00229, 0x000090c0, 0x00000000 },
- { 0x00400801, 0x41c20229, 0x000090e0, 0x00000000 },
- { 0x00400401, 0x41e00229, 0x000090c1, 0x00000000 },
- { 0x00400801, 0x41e20229, 0x000090e1, 0x00000000 },
- { 0x00400401, 0x42000229, 0x006990a0, 0x00000000 },
- { 0x00400801, 0x42020229, 0x006990e8, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000001e },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000012 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
- { 0x00400401, 0x21c00229, 0x000090c0, 0x00000000 },
- { 0x00400801, 0x21c80229, 0x000090e0, 0x00000000 },
- { 0x00400401, 0x21e00229, 0x000090c1, 0x00000000 },
- { 0x00400801, 0x21e80229, 0x000090e1, 0x00000000 },
- { 0x00400401, 0x22000229, 0x006990a0, 0x00000000 },
- { 0x00400801, 0x22080229, 0x006990e8, 0x00000000 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
- { 0x00600001, 0x21c00229, 0x000090c0, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090c1, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490a0, 0x00000000 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001c8 },
- { 0x01400010, 0x20003d2c, 0x000005ea, 0x00040004 },
- { 0x01400010, 0x20003d2c, 0x020005ea, 0x00020002 },
- { 0x00600001, 0x21c00229, 0x000090c8, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090c9, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490b0, 0x00000000 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00410041 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
- { 0x00410401, 0x41c00229, 0x000090c8, 0x00000000 },
- { 0x00410801, 0x41c20229, 0x000090f0, 0x00000000 },
- { 0x00410401, 0x41e00229, 0x000090c9, 0x00000000 },
- { 0x00410801, 0x41e20229, 0x000090f1, 0x00000000 },
- { 0x00410401, 0x42000229, 0x006990b0, 0x00000000 },
- { 0x00410801, 0x42020229, 0x006990f8, 0x00000000 },
- { 0x00410401, 0x21c00229, 0x020090c8, 0x00000000 },
- { 0x00410801, 0x21c80229, 0x020090f0, 0x00000000 },
- { 0x00410401, 0x21e00229, 0x020090c9, 0x00000000 },
- { 0x00410801, 0x21e80229, 0x020090f1, 0x00000000 },
- { 0x00410401, 0x22000229, 0x026990b0, 0x00000000 },
- { 0x00410801, 0x22080229, 0x026990f8, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000019c },
- { 0x00800008, 0x2340352d, 0x00009042, 0x008d0220 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00600001, 0x21c00229, 0x000090c4, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090c5, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490a4, 0x00000000 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
- { 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000184 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00600001, 0x21c00229, 0x000090cc, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090cd, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490b4, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000174 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c4, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005c6, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x00070003 },
- { 0x00600401, 0x2340012d, 0x00890040, 0x00000000 },
- { 0x00600801, 0x2350012d, 0x00890048, 0x00000000 },
- { 0x00600001, 0x204001aa, 0x00270340, 0x00000000 },
- { 0x00600001, 0x205001aa, 0x00270350, 0x00000000 },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x04082004 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
- { 0x00010001, 0x22000060, 0x02000000, 0x04082704 },
- { 0x00110001, 0x22000060, 0x02000000, 0x04082604 },
- { 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
- { 0x00000c0c, 0x27e43da5, 0x000005ca, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x22000060, 0x00000000, 0x02186004 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
- { 0x01000005, 0x20003dac, 0x020005e0, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000006 },
- { 0x00000440, 0x27e43ca5, 0x000007e4, 0xfffefffe },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0003000f },
- { 0x00000040, 0x22000c00, 0x00000200, 0x00100000 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000c },
- { 0x0000000c, 0x27e43da5, 0x000005c2, 0x00020002 },
- { 0x00010001, 0x22000060, 0x02000000, 0x02186704 },
- { 0x00110001, 0x22000060, 0x02000000, 0x02186604 },
- { 0x00000040, 0x27e43ca5, 0x000007e4, 0xfffefffe },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x02600031, 0x20400021, 0x408d07e0, 0x00000200 },
- { 0x00800001, 0x2380012d, 0x008900c0, 0x00000000 },
- { 0x00800001, 0x23a0012d, 0x00890100, 0x00000000 },
- { 0x00800001, 0x23c0012d, 0x008900c8, 0x00000000 },
- { 0x00800001, 0x23e0012d, 0x00890108, 0x00000000 },
- { 0x00600401, 0x20c001a9, 0x00ab0380, 0x00000000 },
- { 0x00600801, 0x20d001a9, 0x00ab0382, 0x00000000 },
- { 0x00600401, 0x20e001a9, 0x00ab0384, 0x00000000 },
- { 0x00600801, 0x20f001a9, 0x00ab0386, 0x00000000 },
- { 0x00600401, 0x210001a9, 0x00ab03c0, 0x00000000 },
- { 0x00600801, 0x211001a9, 0x00ab03c2, 0x00000000 },
- { 0x00600401, 0x212001a9, 0x00ab03c4, 0x00000000 },
- { 0x00600801, 0x213001a9, 0x00ab03c6, 0x00000000 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00800080 },
- { 0x00000001, 0x260201ac, 0x000005e0, 0x00000000 },
- { 0x00800008, 0x2340352d, 0x00009054, 0x008d0220 },
- { 0x00800008, 0x2360352d, 0x00009056, 0x008d0220 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000026 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00400040 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c000c0 },
- { 0x00600001, 0x21c00229, 0x000090c2, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090c3, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490a8, 0x00000000 },
- { 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000f0 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00410041 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x00c100c1 },
- { 0x00600001, 0x21c00229, 0x000090ca, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090cb, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490b8, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000e0 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000005c },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x05000500 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x05200520 },
- { 0x00800001, 0x25000129, 0x00ad0040, 0x00000000 },
- { 0x00800001, 0x25200129, 0x00ad00c0, 0x00000000 },
- { 0x00600001, 0x21c00229, 0x000090c2, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090c3, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490a8, 0x00000000 },
- { 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000c6 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x05010501 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x05210521 },
- { 0x00600001, 0x21c00229, 0x000090ca, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090cb, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490b8, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000000b6 },
- { 0x00800008, 0x2340352d, 0x0000905c, 0x008d0220 },
- { 0x00800008, 0x2360352d, 0x0000905e, 0x008d0220 },
- { 0x00600001, 0x20600129, 0x008d0510, 0x00000000 },
- { 0x00600001, 0x20c00129, 0x008d0520, 0x00000000 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x02600005, 0x20003dac, 0x02ae0360, 0x00010001 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x05000500 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x05200520 },
- { 0x00800001, 0x25000129, 0x00ad0050, 0x00000000 },
- { 0x00800001, 0x25200129, 0x00ad00d0, 0x00000000 },
- { 0x00600001, 0x21c00229, 0x000090e2, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090e3, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490ec, 0x00000000 },
- { 0x00200001, 0x25d80109, 0x00450600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000096 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x05010501 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x05210521 },
- { 0x00600001, 0x21c00229, 0x000090f2, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090f3, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490fc, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00600001, 0x20700129, 0x008d0510, 0x00000000 },
- { 0x00600001, 0x20d00129, 0x008d0520, 0x00000000 },
- { 0x00800008, 0x2340352d, 0x00009048, 0x008d0220 },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e000e0 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01000100 },
- { 0x00600001, 0x21c00229, 0x000090c4, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090c5, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490ac, 0x00000000 },
- { 0x02600005, 0x20003dac, 0x00ae0340, 0x00010001 },
- { 0x00000001, 0x260201e8, 0x00000000, 0x00000000 },
- { 0x00000401, 0x25da01e9, 0x00000000, 0x00000000 },
- { 0x00000801, 0x25d80109, 0x00000600, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000006a },
- { 0x00000401, 0x220c01ec, 0x00000000, 0x00e100e1 },
- { 0x00000801, 0x220e01ec, 0x00000000, 0x01010101 },
- { 0x00600001, 0x21c00229, 0x000090cc, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x000090cd, 0x00000000 },
- { 0x00600001, 0x22000229, 0x002490bc, 0x00000000 },
- { 0x00200001, 0x26000128, 0x004505d8, 0x00000000 },
- { 0x00000040, 0x27c01c01, 0x00001400, 0x00000020 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000005a },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c0, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005c2, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0007000f },
- { 0x00802001, 0x20400022, 0x008d00c0, 0x00000000 },
- { 0x00802001, 0x20800022, 0x008d0100, 0x00000000 },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0a082004 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000a },
- { 0x00010001, 0x22000060, 0x02000000, 0x0a082704 },
- { 0x00110001, 0x22000060, 0x02000000, 0x0a082604 },
- { 0x0000000c, 0x27e43ca5, 0x000007e4, 0x00010001 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x01600031, 0x20000020, 0x508d07e0, 0x00000200 },
- { 0x01600005, 0x20003dac, 0x020005e0, 0x00010001 },
- { 0x01000005, 0x20003e2c, 0x00009002, 0x00020002 },
- { 0x00000401, 0x27e001a1, 0x000005c8, 0x00000000 },
- { 0x00000c0c, 0x27e43da1, 0x000005ca, 0x00010001 },
- { 0x00000801, 0x27e80061, 0x00000000, 0x0001000f },
- { 0x00610001, 0x20400022, 0x028d0040, 0x00000000 },
- { 0x00710001, 0x20400022, 0x028d0060, 0x00000000 },
- { 0x02000005, 0x20003dac, 0x0200002a, 0x00020002 },
- { 0x00018022, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0418a004 },
- { 0x00010040, 0x27e43ca5, 0x020007e4, 0x00080008 },
- { 0x00008024, 0x34001c00, 0x00001400, 0x0001000c },
- { 0x0000000c, 0x27e43da5, 0x000005c2, 0x00020002 },
- { 0x00010001, 0x22000060, 0x02000000, 0x0418a704 },
- { 0x00110001, 0x22000060, 0x02000000, 0x0418a604 },
- { 0x00000040, 0x27e43ca5, 0x000007e4, 0xfffefffe },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x01600031, 0x26400021, 0x508d07e0, 0x00000200 },
- { 0x01000005, 0x20003dac, 0x0000002a, 0x00020002 },
- { 0x00000006, 0x202a3dad, 0x0000002a, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x00001400, 0xfffffd94 },
- { 0x00600001, 0x26400021, 0x008d0640, 0x00000000 },
- { 0x00600001, 0x260001e1, 0x00000000, 0x00000000 },
- { 0x00000009, 0x26143da1, 0x000005e2, 0x00120012 },
- { 0x00000440, 0x26141c21, 0x00000614, 0x00020000 },
- { 0x00000c01, 0x26120129, 0x0000000c, 0x00000000 },
- { 0x00000c01, 0x26100169, 0x00000000, 0x12121212 },
- { 0x00400801, 0x26000171, 0x00000000, 0xffffffff },
- { 0x00600031, 0x20001c20, 0x308d0600, 0x82008002 },
- { 0x00600040, 0x2400462d, 0x00ae9c00, 0x00aed810 },
- { 0x00600040, 0x2340462d, 0x00ae9800, 0x00aed810 },
- { 0x00600040, 0x2360462d, 0x00ae9c10, 0x00aedc00 },
- { 0x05810010, 0x200025ac, 0x008d2400, 0x008d01c0 },
- { 0x05810010, 0x200025ac, 0x008d2340, 0x008d01e0 },
- { 0x05810010, 0x200025ac, 0x008d2360, 0x008d01e0 },
- { 0x00618022, 0x34001c00, 0x00001400, 0x00000036 },
- { 0x00618022, 0x34001c00, 0x02001400, 0x00000016 },
- { 0x00600040, 0x24003e2c, 0x00ae9c10, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x00ae9800, 0x00020002 },
- { 0x00600040, 0x2400458c, 0x008d0400, 0x00ae9810 },
- { 0x80600008, 0x43403d91, 0x008d0400, 0x00020002 },
- { 0x00600040, 0x24003e2c, 0x00ae9800, 0x00020002 },
- { 0x00600048, 0x24003e2c, 0x00ae9c10, 0x00020002 },
- { 0x00600040, 0x2400458c, 0x008d0400, 0x00ae9c00 },
- { 0x80600008, 0x43603d91, 0x008d0400, 0x00020002 },
- { 0x00600001, 0xd8100231, 0x00ae0340, 0x00000000 },
- { 0x00600001, 0xdc000231, 0x00ae0360, 0x00000000 },
- { 0x00608024, 0x34001c00, 0x00001400, 0x0001001e },
- { 0x00600040, 0x23e03d2d, 0x008d0200, 0x00010001 },
- { 0x00600040, 0x24003e2c, 0x00ae9800, 0x00040004 },
- { 0x00600048, 0x24003dac, 0x008d0400, 0x00040004 },
- { 0x00600040, 0x2400458c, 0x008d0400, 0x00aedc10 },
- { 0x00600008, 0x23403d8d, 0x008d0400, 0x00030003 },
- { 0x03600010, 0x200035ac, 0x008d0340, 0x008d03e0 },
- { 0x05600010, 0x200035ac, 0x028d0340, 0x008d43e0 },
- { 0x00610001, 0x234001ad, 0x008d03e0, 0x00000000 },
- { 0x00610001, 0x234001ad, 0x028d43e0, 0x00000000 },
- { 0x80600040, 0x43603631, 0x00ae9810, 0x008d0340 },
- { 0x80600040, 0x43403631, 0x00ae9c00, 0x008d4340 },
- { 0x00600001, 0xd8100231, 0x00ae0360, 0x00000000 },
- { 0x00600001, 0xdc000231, 0x00ae0340, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00008025, 0x20000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x34000020, 0x000007c0, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/src/shaders/h264/mc/chromaMVAdjust.asm b/src/shaders/h264/mc/chromaMVAdjust.asm
deleted file mode 100644
index c35b982..0000000
--- a/src/shaders/h264/mc/chromaMVAdjust.asm
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Adjust chrom MV
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: ChromaMVAdjust.asm
-//
-//
-
-
-//#if !defined(__ChromaMVAdjust__) // Make sure this is only included once
-//#define __ChromaMVAdjust__
-
-
- // Chroma MV adjustment
- add (1) acc0:w gPARITY:w gREFPARITY:w
- cmp.e.f0.0 (1) null:w acc0:w 0x1:w
- cmp.e.f0.1 (1) null:w acc0:w 0x100:w
- mov (1) gCHRMVADJ:w 0:w
- (f0.0) mov (1) gCHRMVADJ:w 2:w
- (f0.1) mov (1) gCHRMVADJ:w -2:w
-
-//#endif // !defined(__ChromaMVAdjust__)
diff --git a/src/shaders/h264/mc/export.inc b/src/shaders/h264/mc/export.inc
deleted file mode 100644
index 5b81219..0000000
--- a/src/shaders/h264/mc/export.inc
+++ /dev/null
@@ -1,345 +0,0 @@
-#define INTRA_16x16_IP 0
-#define INTRA_16x16_VERTICAL_IP 14
-#define INTRA_16x16_HORIZONTAL_IP 32
-#define INTRA_16x16_DC_IP 52
-#define INTRA_16x16_PLANE_IP 98
-#define End_intra_Pred_16x16_Y_IP 166
-#define End_add_Error_16x16_Y_IP 204
-#define load_Intra_Ref_Y_IP 220
-#define decode_Chroma_Intra_IP 238
-#define INTRA_CHROMA_DC_IP 260
-#define INTRA_CHROMA_HORIZONTAL_IP 320
-#define INTRA_CHROMA_VERTICAL_IP 332
-#define INTRA_Chroma_PLANE_IP 342
-#define End_of_intra_Pred_Chroma_IP 392
-#define save_16x16_Y_IP 436
-#define INTRA_8x8_IP 464
-#define INTRA_8x8_BLK2_IP 568
-#define intra_Pred_8x8_Y_IP 640
-#define INTRA_8X8_VERTICAL_IP 672
-#define INTRA_8X8_HORIZONTAL_IP 682
-#define INTRA_8X8_DC_IP 692
-#define INTRA_8X8_DIAG_DOWN_LEFT_IP 724
-#define INTRA_8X8_DIAG_DOWN_RIGHT_IP 744
-#define INTRA_8X8_VERT_RIGHT_IP 772
-#define INTRA_8X8_HOR_DOWN_IP 808
-#define INTRA_8X8_VERT_LEFT_IP 842
-#define INTRA_8X8_HOR_UP_IP 862
-#define save_8x8_Y_IP 886
-#define INTRA_4x4_IP 928
-#define intra_Pred_4x4_Y_4_IP 1062
-#define ADD_ERROR_SB0_IP 1074
-#define ADD_ERROR_SB1_IP 1088
-#define ADD_ERROR_SB2_IP 1108
-#define ADD_ERROR_SB3_IP 1124
-#define intra_Pred_4x4_Y_IP 1130
-#define INTRA_4X4_VERTICAL_IP 1130
-#define INTRA_4X4_HORIZONTAL_IP 1134
-#define INTRA_4X4_DC_IP 1138
-#define INTRA_4X4_DIAG_DOWN_LEFT_IP 1160
-#define INTRA_4X4_DIAG_DOWN_RIGHT_IP 1174
-#define INTRA_4X4_VERT_RIGHT_IP 1192
-#define INTRA_4X4_HOR_DOWN_IP 1218
-#define INTRA_4X4_VERT_LEFT_IP 1246
-#define INTRA_4X4_HOR_UP_IP 1260
-#define save_4x4_Y_IP 1276
-#define INTRA_PCM_IP 1320
-#define FRAME_MB_IP 1384
-#define INIT_MBPARA_FRM_IP 1390
-#define NOT_8x8_MODE_FRM_IP 1426
-#define CONVERT_MVS_FRM_IP 1436
-#define INIT_ADDRESS_REGS_FRM_IP 1446
-#define LOOP_SUBMB_FRM_IP 1454
-#define LOOP_DIR_FRM_IP 1460
-#define LOADREF_MVXZERO_FRM_IP 1510
-#define EXIT_LOADREF_Y_16x13_FRM_IP 1524
-#define Interpolate_Y_8x8_Func_FRM_IP 1544
-#define Interpolate_Y_8x8_Func2_FRM_IP 1574
-#define Interpolate_Y_H_8x8_FRM_IP 1708
-#define Interpolate_Y_V_8x8_FRM_IP 1790
-#define VFILTER_8x8_FRM_IP 1812
-#define Interpolate_Y_I_8x8_FRM_IP 1860
-#define Average_8x8_FRM_IP 1880
-#define Return_Interpolate_Y_8x8_FRM_IP 1888
-#define Exit_Interpolate_Y_8x8_FRM_IP 1890
-#define Interpolate_C_4x4_Func_FRM_IP 1890
-#define PROCESS4x4_FRM_IP 1928
-#define LOOP_SUBMBPT_FRM_IP 1930
-#define Interpolate_Y_H_4x4_FRM_IP 2066
-#define Interpolate_Y_V_4x4_FRM_IP 2108
-#define VFILTER_4x4_FRM_IP 2142
-#define Interpolate_Y_I_4x4_FRM_IP 2148
-#define Average_4x4_FRM_IP 2160
-#define Return_Interpolate_Y_4x4_FRM_IP 2162
-#define Exit_Interpolate_Y_4x4_FRM_IP 2174
-#define ROUND_SHIFT_C_FRM_IP 2222
-#define LOOP_DIR_CONTINUE_FRM_IP 2230
-#define Weighted_Prediction_FRM_IP 2236
-#define DefaultWeightedPred_UniPred_FRM_IP 2244
-#define DefaultWeightedPred_BiPred_FRM_IP 2256
-#define WeightedPred_FRM_IP 2264
-#define WeightedPred_Explicit_FRM_IP 2282
-#define WeightedPred_LOOP_FRM_IP 2322
-#define Return_WeightedPred_FRM_IP 2382
-#define EXIT_LOOP_FRM_IP 2424
-#define FIELD_MB_IP 2496
-#define INIT_MBPARA_FLD_IP 2502
-#define NOT_8x8_MODE_FLD_IP 2538
-#define CONVERT_MVS_FLD_IP 2548
-#define INIT_ADDRESS_REGS_FLD_IP 2558
-#define LOOP_SUBMB_FLD_IP 2568
-#define LOOP_DIR_FLD_IP 2574
-#define LOADREF_MVXZERO_FLD_IP 2644
-#define EXIT_LOADREF_Y_16x13_FLD_IP 2658
-#define Interpolate_Y_8x8_Func_FLD_IP 2680
-#define Interpolate_Y_8x8_Func2_FLD_IP 2710
-#define Interpolate_Y_H_8x8_FLD_IP 2844
-#define Interpolate_Y_V_8x8_FLD_IP 2926
-#define VFILTER_8x8_FLD_IP 2948
-#define Interpolate_Y_I_8x8_FLD_IP 2996
-#define Average_8x8_FLD_IP 3016
-#define Return_Interpolate_Y_8x8_FLD_IP 3024
-#define Exit_Interpolate_Y_8x8_FLD_IP 3026
-#define Interpolate_C_4x4_Func_FLD_IP 3026
-#define PROCESS4x4_FLD_IP 3064
-#define LOOP_SUBMBPT_FLD_IP 3066
-#define Interpolate_Y_H_4x4_FLD_IP 3204
-#define Interpolate_Y_V_4x4_FLD_IP 3246
-#define VFILTER_4x4_FLD_IP 3280
-#define Interpolate_Y_I_4x4_FLD_IP 3286
-#define Average_4x4_FLD_IP 3298
-#define Return_Interpolate_Y_4x4_FLD_IP 3300
-#define Exit_Interpolate_Y_4x4_FLD_IP 3312
-#define ROUND_SHIFT_C_FLD_IP 3360
-#define LOOP_DIR_CONTINUE_FLD_IP 3368
-#define Weighted_Prediction_FLD_IP 3374
-#define DefaultWeightedPred_UniPred_FLD_IP 3382
-#define DefaultWeightedPred_BiPred_FLD_IP 3394
-#define WeightedPred_FLD_IP 3402
-#define WeightedPred_Explicit_FLD_IP 3420
-#define WeightedPred_LOOP_FLD_IP 3460
-#define Return_WeightedPred_FLD_IP 3520
-#define EXIT_LOOP_FLD_IP 3562
-#define MBAFF_MB_IP 3640
-#define INIT_MBPARA_MBF_IP 3646
-#define NOT_8x8_MODE_MBF_IP 3682
-#define CONVERT_MVS_MBF_IP 3692
-#define INIT_ADDRESS_REGS_MBF_IP 3702
-#define LOOP_SUBMB_MBF_IP 3716
-#define LOOP_DIR_MBF_IP 3722
-#define LOADREF_MVXZERO_MBF_IP 3796
-#define EXIT_LOADREF_Y_16x13_MBF_IP 3810
-#define Interpolate_Y_8x8_Func_MBF_IP 3832
-#define Interpolate_Y_8x8_Func2_MBF_IP 3862
-#define Interpolate_Y_H_8x8_MBF_IP 3996
-#define Interpolate_Y_V_8x8_MBF_IP 4078
-#define VFILTER_8x8_MBF_IP 4100
-#define Interpolate_Y_I_8x8_MBF_IP 4148
-#define Average_8x8_MBF_IP 4168
-#define Return_Interpolate_Y_8x8_MBF_IP 4176
-#define Exit_Interpolate_Y_8x8_MBF_IP 4178
-#define Interpolate_C_4x4_Func_MBF_IP 4178
-#define PROCESS4x4_MBF_IP 4216
-#define LOOP_SUBMBPT_MBF_IP 4218
-#define Interpolate_Y_H_4x4_MBF_IP 4356
-#define Interpolate_Y_V_4x4_MBF_IP 4398
-#define VFILTER_4x4_MBF_IP 4432
-#define Interpolate_Y_I_4x4_MBF_IP 4438
-#define Average_4x4_MBF_IP 4450
-#define Return_Interpolate_Y_4x4_MBF_IP 4452
-#define Exit_Interpolate_Y_4x4_MBF_IP 4464
-#define ROUND_SHIFT_C_MBF_IP 4512
-#define LOOP_DIR_CONTINUE_MBF_IP 4520
-#define Weighted_Prediction_MBF_IP 4526
-#define DefaultWeightedPred_UniPred_MBF_IP 4534
-#define DefaultWeightedPred_BiPred_MBF_IP 4546
-#define WeightedPred_MBF_IP 4554
-#define WeightedPred_Explicit_MBF_IP 4572
-#define WeightedPred_LOOP_MBF_IP 4612
-#define Return_WeightedPred_MBF_IP 4672
-#define EXIT_LOOP_MBF_IP 4714
-#define SETHWSCOREBOARD_IP 4792
-#define SetHWScoreboard_Loop_IP 4806
-#define Parse_8_Loop_0_IP 4852
-#define Parse_8_Loop_2_IP 4876
-#define Parse_8_Loop_4_IP 4900
-#define Parse_8_Loop_6_IP 4924
-#define Parse_8_Loop_8_IP 4948
-#define Parse_8_Loop_10_IP 4972
-#define Parse_8_Loop_12_IP 4996
-#define Parse_8_Loop_14_IP 5020
-#define SetHWScoreboard_Remainder_IP 5062
-#define SetHWScoreboard_Remainder_Loop_IP 5090
-#define Output_Remainder_Intra_IP 5116
-#define SetHWScoreboard_Done_IP 5128
-#define SETHWSCOREBOARD_MBAFF_IP 5136
-#define SetHWScoreboard_MBAFF_Loop_IP 5148
-#define SET_SB_MBAFF_INTRA_0_IP 5208
-#define SET_SB_MBAFF_0_IP 5230
-#define NEXT_MB_MBAFF_0_IP 5238
-#define SET_SB_MBAFF_INTRA_2_IP 5276
-#define SET_SB_MBAFF_2_IP 5298
-#define NEXT_MB_MBAFF_2_IP 5306
-#define SET_SB_MBAFF_INTRA_4_IP 5344
-#define SET_SB_MBAFF_4_IP 5366
-#define NEXT_MB_MBAFF_4_IP 5374
-#define SET_SB_MBAFF_INTRA_6_IP 5412
-#define SET_SB_MBAFF_6_IP 5434
-#define NEXT_MB_MBAFF_6_IP 5442
-#define SET_SB_MBAFF_INTRA_8_IP 5480
-#define SET_SB_MBAFF_8_IP 5502
-#define NEXT_MB_MBAFF_8_IP 5510
-#define SET_SB_MBAFF_INTRA_10_IP 5548
-#define SET_SB_MBAFF_10_IP 5570
-#define NEXT_MB_MBAFF_10_IP 5578
-#define SET_SB_MBAFF_INTRA_12_IP 5616
-#define SET_SB_MBAFF_12_IP 5638
-#define NEXT_MB_MBAFF_12_IP 5646
-#define SET_SB_MBAFF_INTRA_14_IP 5684
-#define SET_SB_MBAFF_14_IP 5706
-#define NEXT_MB_MBAFF_14_IP 5714
-#define SetHWScoreboard_MBAFF_Remainder_IP 5756
-#define SetHWScoreboard_MBAFF_Remainder_Loop_IP 5784
-#define SET_SB_MBAFF_REM_INTRA_IP 5822
-#define SET_SB_MBAFF_REM_IP 5846
-#define Output_MBAFF_Remainder_Intra_IP 5856
-#define SetHWScoreboard_MBAFF_Done_IP 5868
-#define BSDRESET_IP 5870
-#define DCRESETDUMMY_IP 5872
-#define AVC_ILDB_ROOT_Y_ILDB_FRAME_IP 5880
-#define SLEEP_ENTRY_Y_ILDB_FRAME_IP 5976
-#define POST_SLEEP_Y_ILDB_FRAME_IP 5980
-#define NEXT_MB_Y_ILDB_FRAME_IP 6010
-#define ALL_SPAWNED_Y_ILDB_FRAME_IP 6034
-#define ALL_DONE_Y_ILDB_FRAME_IP 6044
-#define WAIT_FOR_UV_ILDB_FRAME_IP 6044
-#define AVC_ILDB_CHILD_Y_ILDB_FRAME_IP 6056
-#define WRITE_URB_Y_ILDB_FRAME_IP 6436
-#define POST_ILDB_Y_ILDB_FRAME_IP 6444
-#define READ_FOR_URB_Y_ILDB_FRAME_IP 6458
-#define FILTER_Y_IP 6494
-#define Y_ELSE3_IP 6560
-#define Y_ENDIF3_IP 6574
-#define Y_ELSE4_IP 6604
-#define Y_ENDIF4_IP 6618
-#define Y_ELSE2_IP 6618
-#define Y_ENDIF6_IP 6684
-#define Y_ENDIF7_IP 6706
-#define Y_ENDIF2_IP 6710
-#define Y_ENDIF1_IP 6710
-#define AVC_ILDB_ROOT_UV_ILDB_FRAME_IP 6720
-#define SLEEP_ENTRY_UV_ILDB_FRAME_IP 6798
-#define POST_SLEEP_UV_ILDB_FRAME_IP 6802
-#define NEXT_MB_UV_ILDB_FRAME_IP 6834
-#define ALL_SPAWNED_UV_ILDB_FRAME_IP 6858
-#define ALL_DONE_UV_ILDB_FRAME_IP 6882
-#define AVC_ILDB_CHILD_UV_ILDB_FRAME_IP 6888
-#define BYPASS_EXT_LEFT_EDGE_UV_ILDB_FRAME_IP 7008
-#define BYPASS_EXT_TOP_EDGE_UV_ILDB_FRAME_IP 7126
-#define WRITE_URB_UV_ILDB_FRAME_IP 7194
-#define POST_ILDB_UV_ILDB_FRAME_IP 7202
-#define READ_FOR_URB_UV_ILDB_FRAME_IP 7216
-#define FILTER_UV_IP 7246
-#define UV_ELSE2_IP 7282
-#define UV_ENDIF2_IP 7314
-#define UV_ENDIF1_IP 7314
-#define AVC_ILDB_ROOT_Y_ILDB_FIELD_IP 7320
-#define SLEEP_ENTRY_Y_ILDB_FIELD_IP 7416
-#define POST_SLEEP_Y_ILDB_FIELD_IP 7420
-#define NEXT_MB_Y_ILDB_FIELD_IP 7450
-#define ALL_SPAWNED_Y_ILDB_FIELD_IP 7474
-#define ALL_DONE_Y_ILDB_FIELD_IP 7484
-#define WAIT_FOR_UV_ILDB_FIELD_IP 7484
-#define AVC_ILDB_CHILD_Y_ILDB_FIELD_IP 7496
-#define WRITE_URB_Y_ILDB_FIELD_IP 7896
-#define POST_ILDB_Y_ILDB_FIELD_IP 7904
-#define READ_FOR_URB_Y_ILDB_FIELD_IP 7918
-#define ELSE_Y_4x16T_ILDB_FIELD_IP 7934
-#define ENDIF_Y_4x16T_ILDB_FIELD_IP 7942
-#define AVC_ILDB_ROOT_UV_ILDB_FIELD_IP 7976
-#define SLEEP_ENTRY_UV_ILDB_FIELD_IP 8054
-#define POST_SLEEP_UV_ILDB_FIELD_IP 8058
-#define NEXT_MB_UV_ILDB_FIELD_IP 8090
-#define ALL_SPAWNED_UV_ILDB_FIELD_IP 8114
-#define ALL_DONE_UV_ILDB_FIELD_IP 8138
-#define AVC_ILDB_CHILD_UV_ILDB_FIELD_IP 8144
-#define BYPASS_EXT_LEFT_EDGE_UV_ILDB_FIELD_IP 8272
-#define BYPASS_EXT_TOP_EDGE_UV_ILDB_FIELD_IP 8394
-#define WRITE_URB_UV_ILDB_FIELD_IP 8470
-#define POST_ILDB_UV_ILDB_FIELD_IP 8478
-#define READ_FOR_URB_UV_ILDB_FIELD_IP 8492
-#define ELSE_Y_2x8T_ILDB_FIELD_IP 8508
-#define ENDIF_Y_2x8T_ILDB_FIELD_IP 8516
-#define AVC_ILDB_ROOT_Y_ILDB_MBAFF_IP 8544
-#define SLEEP_ENTRY_Y_ILDB_MBAFF_IP 8642
-#define POST_SLEEP_Y_ILDB_MBAFF_IP 8646
-#define NEXT_MB_Y_ILDB_MBAFF_IP 8676
-#define ALL_SPAWNED_Y_ILDB_MBAFF_IP 8700
-#define ALL_DONE_Y_ILDB_MBAFF_IP 8710
-#define WAIT_FOR_UV_ILDB_MBAFF_IP 8710
-#define AVC_ILDB_CHILD_Y_ILDB_MBAFF_IP 8720
-#define RE_ENTRY_IP 8742
-#define ELSE_Y_16x16T_ILDB_MBAFF_IP 8782
-#define ENDIF_Y_16x16T_ILDB_MBAFF_IP 8792
-#define ELSE_Y_4x16T_IP 8808
-#define ENDIF_Y_4x16T_IP 8818
-#define BYPASS_V1_Y_IP 8966
-#define BYPASS_V2_Y_IP 8980
-#define BYPASS_V3_Y_IP 8994
-#define ELSE_Y_16x4T_IP 9024
-#define ENDIF_Y_16x4T_IP 9034
-#define NOT_DUAL_FIELD_IP 9060
-#define ELSE_Y_16x4_IP 9060
-#define ENDIF_Y_16x4_IP 9072
-#define DUAL_FIELD_Y_IP 9168
-#define H0_Y_DONE_IP 9236
-#define ELSE_Y_16x16_IP 9310
-#define ENDIF_Y_16x16_IP 9320
-#define ELSE_Y_16x4_SAVE_IP 9342
-#define ENDIF_Y_16x4_SAVE_IP 9354
-#define SKIP_ILDB_IP 9356
-#define POST_ILDB_IP 9364
-#define FILTER_Y_MBAFF_IP 9378
-#define MBAFF_Y_ELSE3_IP 9444
-#define MBAFF_Y_ENDIF3_IP 9458
-#define MBAFF_Y_ELSE4_IP 9488
-#define MBAFF_Y_ENDIF4_IP 9502
-#define MBAFF_Y_ELSE2_IP 9502
-#define MBAFF_Y_ENDIF6_IP 9566
-#define MBAFF_Y_ENDIF7_IP 9588
-#define MBAFF_Y_ENDIF2_IP 9592
-#define MBAFF_Y_ENDIF1_IP 9592
-#define AVC_ILDB_ROOT_UV_ILDB_MBAFF_IP 9600
-#define SLEEP_ENTRY_UV_ILDB_MBAFF_IP 9678
-#define POST_SLEEP_UV_ILDB_MBAFF_IP 9682
-#define NEXT_MB_UV_ILDB_MBAFF_IP 9714
-#define ALL_SPAWNED_UV_ILDB_MBAFF_IP 9738
-#define ALL_DONE_UV_ILDB_MBAFF_IP 9762
-#define AVC_ILDB_CHILD_UV_ILDB_MBAFF_IP 9768
-#define RE_ENTRY_UV_ILDB_MBAFF_IP 9794
-#define ELSE_UV_8X8T_ILDB_MBAFF_IP 9836
-#define ENDIF_UV_8X8T_ILDB_MBAFF_IP 9846
-#define ELSE_Y_2x8T_ILDB_MBAFF_IP 9864
-#define ENDIF_Y_2x8T_ILDB_MBAFF_IP 9874
-#define V0_U_NEXT1_IP 9934
-#define V0_U_NEXT2_IP 9954
-#define V0_U_NEXT3_IP 9964
-#define BYPASS_V0_UV_IP 10018
-#define ELSE_UV_8X2T_IP 10082
-#define ENDIF_UV_8X2T_IP 10092
-#define NOT_DUAL_FIELD_UV_IP 10120
-#define ELSE_UV_8X2_IP 10120
-#define ENDIF_UV_8X2_IP 10132
-#define DUAL_FIELD_UV_IP 10208
-#define H0_UV_DONE_IP 10300
-#define ELSE_UV_8X8_IP 10360
-#define ENDIF_UV_8X8_IP 10370
-#define ELSE_UV_8X2_SAVE_IP 10394
-#define ENDIF_UV_8X2_SAVE_IP 10406
-#define SKIP_ILDB_UV_ILDB_MBAFF_IP 10408
-#define POST_ILDB_UV_ILDB_MBAFF_IP 10416
-#define FILTER_UV_MBAFF_IP 10430
-#define MBAFF_UV_ELSE2_IP 10466
-#define MBAFF_UV_ENDIF2_IP 10496
-#define MBAFF_UV_ENDIF1_IP 10496
-#define AllAVC_END_IP 10500
diff --git a/src/shaders/h264/mc/export.inc.gen5 b/src/shaders/h264/mc/export.inc.gen5
deleted file mode 100644
index 0179192..0000000
--- a/src/shaders/h264/mc/export.inc.gen5
+++ /dev/null
@@ -1,345 +0,0 @@
-#define INTRA_16x16_IP_GEN5 0
-#define INTRA_16x16_VERTICAL_IP_GEN5 14
-#define INTRA_16x16_HORIZONTAL_IP_GEN5 32
-#define INTRA_16x16_DC_IP_GEN5 52
-#define INTRA_16x16_PLANE_IP_GEN5 98
-#define End_intra_Pred_16x16_Y_IP_GEN5 166
-#define End_add_Error_16x16_Y_IP_GEN5 204
-#define load_Intra_Ref_Y_IP_GEN5 220
-#define decode_Chroma_Intra_IP_GEN5 238
-#define INTRA_CHROMA_DC_IP_GEN5 260
-#define INTRA_CHROMA_HORIZONTAL_IP_GEN5 320
-#define INTRA_CHROMA_VERTICAL_IP_GEN5 332
-#define INTRA_Chroma_PLANE_IP_GEN5 342
-#define End_of_intra_Pred_Chroma_IP_GEN5 392
-#define save_16x16_Y_IP_GEN5 436
-#define INTRA_8x8_IP_GEN5 464
-#define INTRA_8x8_BLK2_IP_GEN5 568
-#define intra_Pred_8x8_Y_IP_GEN5 640
-#define INTRA_8X8_VERTICAL_IP_GEN5 672
-#define INTRA_8X8_HORIZONTAL_IP_GEN5 682
-#define INTRA_8X8_DC_IP_GEN5 692
-#define INTRA_8X8_DIAG_DOWN_LEFT_IP_GEN5 724
-#define INTRA_8X8_DIAG_DOWN_RIGHT_IP_GEN5 744
-#define INTRA_8X8_VERT_RIGHT_IP_GEN5 772
-#define INTRA_8X8_HOR_DOWN_IP_GEN5 808
-#define INTRA_8X8_VERT_LEFT_IP_GEN5 842
-#define INTRA_8X8_HOR_UP_IP_GEN5 862
-#define save_8x8_Y_IP_GEN5 886
-#define INTRA_4x4_IP_GEN5 928
-#define intra_Pred_4x4_Y_4_IP_GEN5 1062
-#define ADD_ERROR_SB0_IP_GEN5 1074
-#define ADD_ERROR_SB1_IP_GEN5 1088
-#define ADD_ERROR_SB2_IP_GEN5 1108
-#define ADD_ERROR_SB3_IP_GEN5 1124
-#define intra_Pred_4x4_Y_IP_GEN5 1130
-#define INTRA_4X4_VERTICAL_IP_GEN5 1130
-#define INTRA_4X4_HORIZONTAL_IP_GEN5 1134
-#define INTRA_4X4_DC_IP_GEN5 1138
-#define INTRA_4X4_DIAG_DOWN_LEFT_IP_GEN5 1160
-#define INTRA_4X4_DIAG_DOWN_RIGHT_IP_GEN5 1174
-#define INTRA_4X4_VERT_RIGHT_IP_GEN5 1192
-#define INTRA_4X4_HOR_DOWN_IP_GEN5 1218
-#define INTRA_4X4_VERT_LEFT_IP_GEN5 1246
-#define INTRA_4X4_HOR_UP_IP_GEN5 1260
-#define save_4x4_Y_IP_GEN5 1276
-#define INTRA_PCM_IP_GEN5 1320
-#define FRAME_MB_IP_GEN5 1384
-#define INIT_MBPARA_FRM_IP_GEN5 1390
-#define NOT_8x8_MODE_FRM_IP_GEN5 1426
-#define CONVERT_MVS_FRM_IP_GEN5 1436
-#define INIT_ADDRESS_REGS_FRM_IP_GEN5 1446
-#define LOOP_SUBMB_FRM_IP_GEN5 1454
-#define LOOP_DIR_FRM_IP_GEN5 1460
-#define LOADREF_MVXZERO_FRM_IP_GEN5 1510
-#define EXIT_LOADREF_Y_16x13_FRM_IP_GEN5 1524
-#define Interpolate_Y_8x8_Func_FRM_IP_GEN5 1544
-#define Interpolate_Y_8x8_Func2_FRM_IP_GEN5 1574
-#define Interpolate_Y_H_8x8_FRM_IP_GEN5 1708
-#define Interpolate_Y_V_8x8_FRM_IP_GEN5 1790
-#define VFILTER_8x8_FRM_IP_GEN5 1812
-#define Interpolate_Y_I_8x8_FRM_IP_GEN5 1860
-#define Average_8x8_FRM_IP_GEN5 1880
-#define Return_Interpolate_Y_8x8_FRM_IP_GEN5 1888
-#define Exit_Interpolate_Y_8x8_FRM_IP_GEN5 1890
-#define Interpolate_C_4x4_Func_FRM_IP_GEN5 1890
-#define PROCESS4x4_FRM_IP_GEN5 1928
-#define LOOP_SUBMBPT_FRM_IP_GEN5 1930
-#define Interpolate_Y_H_4x4_FRM_IP_GEN5 2066
-#define Interpolate_Y_V_4x4_FRM_IP_GEN5 2108
-#define VFILTER_4x4_FRM_IP_GEN5 2142
-#define Interpolate_Y_I_4x4_FRM_IP_GEN5 2148
-#define Average_4x4_FRM_IP_GEN5 2160
-#define Return_Interpolate_Y_4x4_FRM_IP_GEN5 2162
-#define Exit_Interpolate_Y_4x4_FRM_IP_GEN5 2174
-#define ROUND_SHIFT_C_FRM_IP_GEN5 2222
-#define LOOP_DIR_CONTINUE_FRM_IP_GEN5 2230
-#define Weighted_Prediction_FRM_IP_GEN5 2236
-#define DefaultWeightedPred_UniPred_FRM_IP_GEN5 2244
-#define DefaultWeightedPred_BiPred_FRM_IP_GEN5 2256
-#define WeightedPred_FRM_IP_GEN5 2264
-#define WeightedPred_Explicit_FRM_IP_GEN5 2282
-#define WeightedPred_LOOP_FRM_IP_GEN5 2322
-#define Return_WeightedPred_FRM_IP_GEN5 2382
-#define EXIT_LOOP_FRM_IP_GEN5 2424
-#define FIELD_MB_IP_GEN5 2496
-#define INIT_MBPARA_FLD_IP_GEN5 2502
-#define NOT_8x8_MODE_FLD_IP_GEN5 2538
-#define CONVERT_MVS_FLD_IP_GEN5 2548
-#define INIT_ADDRESS_REGS_FLD_IP_GEN5 2558
-#define LOOP_SUBMB_FLD_IP_GEN5 2568
-#define LOOP_DIR_FLD_IP_GEN5 2574
-#define LOADREF_MVXZERO_FLD_IP_GEN5 2644
-#define EXIT_LOADREF_Y_16x13_FLD_IP_GEN5 2658
-#define Interpolate_Y_8x8_Func_FLD_IP_GEN5 2680
-#define Interpolate_Y_8x8_Func2_FLD_IP_GEN5 2710
-#define Interpolate_Y_H_8x8_FLD_IP_GEN5 2844
-#define Interpolate_Y_V_8x8_FLD_IP_GEN5 2926
-#define VFILTER_8x8_FLD_IP_GEN5 2948
-#define Interpolate_Y_I_8x8_FLD_IP_GEN5 2996
-#define Average_8x8_FLD_IP_GEN5 3016
-#define Return_Interpolate_Y_8x8_FLD_IP_GEN5 3024
-#define Exit_Interpolate_Y_8x8_FLD_IP_GEN5 3026
-#define Interpolate_C_4x4_Func_FLD_IP_GEN5 3026
-#define PROCESS4x4_FLD_IP_GEN5 3064
-#define LOOP_SUBMBPT_FLD_IP_GEN5 3066
-#define Interpolate_Y_H_4x4_FLD_IP_GEN5 3204
-#define Interpolate_Y_V_4x4_FLD_IP_GEN5 3246
-#define VFILTER_4x4_FLD_IP_GEN5 3280
-#define Interpolate_Y_I_4x4_FLD_IP_GEN5 3286
-#define Average_4x4_FLD_IP_GEN5 3298
-#define Return_Interpolate_Y_4x4_FLD_IP_GEN5 3300
-#define Exit_Interpolate_Y_4x4_FLD_IP_GEN5 3312
-#define ROUND_SHIFT_C_FLD_IP_GEN5 3360
-#define LOOP_DIR_CONTINUE_FLD_IP_GEN5 3368
-#define Weighted_Prediction_FLD_IP_GEN5 3374
-#define DefaultWeightedPred_UniPred_FLD_IP_GEN5 3382
-#define DefaultWeightedPred_BiPred_FLD_IP_GEN5 3394
-#define WeightedPred_FLD_IP_GEN5 3402
-#define WeightedPred_Explicit_FLD_IP_GEN5 3420
-#define WeightedPred_LOOP_FLD_IP_GEN5 3460
-#define Return_WeightedPred_FLD_IP_GEN5 3520
-#define EXIT_LOOP_FLD_IP_GEN5 3562
-#define MBAFF_MB_IP_GEN5 3640
-#define INIT_MBPARA_MBF_IP_GEN5 3646
-#define NOT_8x8_MODE_MBF_IP_GEN5 3682
-#define CONVERT_MVS_MBF_IP_GEN5 3692
-#define INIT_ADDRESS_REGS_MBF_IP_GEN5 3702
-#define LOOP_SUBMB_MBF_IP_GEN5 3716
-#define LOOP_DIR_MBF_IP_GEN5 3722
-#define LOADREF_MVXZERO_MBF_IP_GEN5 3796
-#define EXIT_LOADREF_Y_16x13_MBF_IP_GEN5 3810
-#define Interpolate_Y_8x8_Func_MBF_IP_GEN5 3832
-#define Interpolate_Y_8x8_Func2_MBF_IP_GEN5 3862
-#define Interpolate_Y_H_8x8_MBF_IP_GEN5 3996
-#define Interpolate_Y_V_8x8_MBF_IP_GEN5 4078
-#define VFILTER_8x8_MBF_IP_GEN5 4100
-#define Interpolate_Y_I_8x8_MBF_IP_GEN5 4148
-#define Average_8x8_MBF_IP_GEN5 4168
-#define Return_Interpolate_Y_8x8_MBF_IP_GEN5 4176
-#define Exit_Interpolate_Y_8x8_MBF_IP_GEN5 4178
-#define Interpolate_C_4x4_Func_MBF_IP_GEN5 4178
-#define PROCESS4x4_MBF_IP_GEN5 4216
-#define LOOP_SUBMBPT_MBF_IP_GEN5 4218
-#define Interpolate_Y_H_4x4_MBF_IP_GEN5 4356
-#define Interpolate_Y_V_4x4_MBF_IP_GEN5 4398
-#define VFILTER_4x4_MBF_IP_GEN5 4432
-#define Interpolate_Y_I_4x4_MBF_IP_GEN5 4438
-#define Average_4x4_MBF_IP_GEN5 4450
-#define Return_Interpolate_Y_4x4_MBF_IP_GEN5 4452
-#define Exit_Interpolate_Y_4x4_MBF_IP_GEN5 4464
-#define ROUND_SHIFT_C_MBF_IP_GEN5 4512
-#define LOOP_DIR_CONTINUE_MBF_IP_GEN5 4520
-#define Weighted_Prediction_MBF_IP_GEN5 4526
-#define DefaultWeightedPred_UniPred_MBF_IP_GEN5 4534
-#define DefaultWeightedPred_BiPred_MBF_IP_GEN5 4546
-#define WeightedPred_MBF_IP_GEN5 4554
-#define WeightedPred_Explicit_MBF_IP_GEN5 4572
-#define WeightedPred_LOOP_MBF_IP_GEN5 4612
-#define Return_WeightedPred_MBF_IP_GEN5 4672
-#define EXIT_LOOP_MBF_IP_GEN5 4714
-#define SETHWSCOREBOARD_IP_GEN5 4792
-#define SetHWScoreboard_Loop_IP_GEN5 4806
-#define Parse_8_Loop_0_IP_GEN5 4852
-#define Parse_8_Loop_2_IP_GEN5 4876
-#define Parse_8_Loop_4_IP_GEN5 4900
-#define Parse_8_Loop_6_IP_GEN5 4924
-#define Parse_8_Loop_8_IP_GEN5 4948
-#define Parse_8_Loop_10_IP_GEN5 4972
-#define Parse_8_Loop_12_IP_GEN5 4996
-#define Parse_8_Loop_14_IP_GEN5 5020
-#define SetHWScoreboard_Remainder_IP_GEN5 5062
-#define SetHWScoreboard_Remainder_Loop_IP_GEN5 5090
-#define Output_Remainder_Intra_IP_GEN5 5116
-#define SetHWScoreboard_Done_IP_GEN5 5128
-#define SETHWSCOREBOARD_MBAFF_IP_GEN5 5136
-#define SetHWScoreboard_MBAFF_Loop_IP_GEN5 5148
-#define SET_SB_MBAFF_INTRA_0_IP_GEN5 5208
-#define SET_SB_MBAFF_0_IP_GEN5 5230
-#define NEXT_MB_MBAFF_0_IP_GEN5 5238
-#define SET_SB_MBAFF_INTRA_2_IP_GEN5 5276
-#define SET_SB_MBAFF_2_IP_GEN5 5298
-#define NEXT_MB_MBAFF_2_IP_GEN5 5306
-#define SET_SB_MBAFF_INTRA_4_IP_GEN5 5344
-#define SET_SB_MBAFF_4_IP_GEN5 5366
-#define NEXT_MB_MBAFF_4_IP_GEN5 5374
-#define SET_SB_MBAFF_INTRA_6_IP_GEN5 5412
-#define SET_SB_MBAFF_6_IP_GEN5 5434
-#define NEXT_MB_MBAFF_6_IP_GEN5 5442
-#define SET_SB_MBAFF_INTRA_8_IP_GEN5 5480
-#define SET_SB_MBAFF_8_IP_GEN5 5502
-#define NEXT_MB_MBAFF_8_IP_GEN5 5510
-#define SET_SB_MBAFF_INTRA_10_IP_GEN5 5548
-#define SET_SB_MBAFF_10_IP_GEN5 5570
-#define NEXT_MB_MBAFF_10_IP_GEN5 5578
-#define SET_SB_MBAFF_INTRA_12_IP_GEN5 5616
-#define SET_SB_MBAFF_12_IP_GEN5 5638
-#define NEXT_MB_MBAFF_12_IP_GEN5 5646
-#define SET_SB_MBAFF_INTRA_14_IP_GEN5 5684
-#define SET_SB_MBAFF_14_IP_GEN5 5706
-#define NEXT_MB_MBAFF_14_IP_GEN5 5714
-#define SetHWScoreboard_MBAFF_Remainder_IP_GEN5 5756
-#define SetHWScoreboard_MBAFF_Remainder_Loop_IP_GEN5 5784
-#define SET_SB_MBAFF_REM_INTRA_IP_GEN5 5822
-#define SET_SB_MBAFF_REM_IP_GEN5 5846
-#define Output_MBAFF_Remainder_Intra_IP_GEN5 5856
-#define SetHWScoreboard_MBAFF_Done_IP_GEN5 5868
-#define BSDRESET_IP_GEN5 5870
-#define DCRESETDUMMY_IP_GEN5 5872
-#define AVC_ILDB_ROOT_Y_ILDB_FRAME_IP_GEN5 5880
-#define SLEEP_ENTRY_Y_ILDB_FRAME_IP_GEN5 5976
-#define POST_SLEEP_Y_ILDB_FRAME_IP_GEN5 5980
-#define NEXT_MB_Y_ILDB_FRAME_IP_GEN5 6010
-#define ALL_SPAWNED_Y_ILDB_FRAME_IP_GEN5 6034
-#define ALL_DONE_Y_ILDB_FRAME_IP_GEN5 6044
-#define WAIT_FOR_UV_ILDB_FRAME_IP_GEN5 6044
-#define AVC_ILDB_CHILD_Y_ILDB_FRAME_IP_GEN5 6056
-#define WRITE_URB_Y_ILDB_FRAME_IP_GEN5 6436
-#define POST_ILDB_Y_ILDB_FRAME_IP_GEN5 6444
-#define READ_FOR_URB_Y_ILDB_FRAME_IP_GEN5 6458
-#define FILTER_Y_IP_GEN5 6494
-#define Y_ELSE3_IP_GEN5 6560
-#define Y_ENDIF3_IP_GEN5 6574
-#define Y_ELSE4_IP_GEN5 6604
-#define Y_ENDIF4_IP_GEN5 6618
-#define Y_ELSE2_IP_GEN5 6618
-#define Y_ENDIF6_IP_GEN5 6684
-#define Y_ENDIF7_IP_GEN5 6706
-#define Y_ENDIF2_IP_GEN5 6710
-#define Y_ENDIF1_IP_GEN5 6710
-#define AVC_ILDB_ROOT_UV_ILDB_FRAME_IP_GEN5 6720
-#define SLEEP_ENTRY_UV_ILDB_FRAME_IP_GEN5 6798
-#define POST_SLEEP_UV_ILDB_FRAME_IP_GEN5 6802
-#define NEXT_MB_UV_ILDB_FRAME_IP_GEN5 6834
-#define ALL_SPAWNED_UV_ILDB_FRAME_IP_GEN5 6858
-#define ALL_DONE_UV_ILDB_FRAME_IP_GEN5 6882
-#define AVC_ILDB_CHILD_UV_ILDB_FRAME_IP_GEN5 6888
-#define BYPASS_EXT_LEFT_EDGE_UV_ILDB_FRAME_IP_GEN5 7008
-#define BYPASS_EXT_TOP_EDGE_UV_ILDB_FRAME_IP_GEN5 7126
-#define WRITE_URB_UV_ILDB_FRAME_IP_GEN5 7194
-#define POST_ILDB_UV_ILDB_FRAME_IP_GEN5 7202
-#define READ_FOR_URB_UV_ILDB_FRAME_IP_GEN5 7216
-#define FILTER_UV_IP_GEN5 7246
-#define UV_ELSE2_IP_GEN5 7282
-#define UV_ENDIF2_IP_GEN5 7314
-#define UV_ENDIF1_IP_GEN5 7314
-#define AVC_ILDB_ROOT_Y_ILDB_FIELD_IP_GEN5 7320
-#define SLEEP_ENTRY_Y_ILDB_FIELD_IP_GEN5 7416
-#define POST_SLEEP_Y_ILDB_FIELD_IP_GEN5 7420
-#define NEXT_MB_Y_ILDB_FIELD_IP_GEN5 7450
-#define ALL_SPAWNED_Y_ILDB_FIELD_IP_GEN5 7474
-#define ALL_DONE_Y_ILDB_FIELD_IP_GEN5 7484
-#define WAIT_FOR_UV_ILDB_FIELD_IP_GEN5 7484
-#define AVC_ILDB_CHILD_Y_ILDB_FIELD_IP_GEN5 7496
-#define WRITE_URB_Y_ILDB_FIELD_IP_GEN5 7896
-#define POST_ILDB_Y_ILDB_FIELD_IP_GEN5 7904
-#define READ_FOR_URB_Y_ILDB_FIELD_IP_GEN5 7918
-#define ELSE_Y_4x16T_ILDB_FIELD_IP_GEN5 7934
-#define ENDIF_Y_4x16T_ILDB_FIELD_IP_GEN5 7942
-#define AVC_ILDB_ROOT_UV_ILDB_FIELD_IP_GEN5 7976
-#define SLEEP_ENTRY_UV_ILDB_FIELD_IP_GEN5 8054
-#define POST_SLEEP_UV_ILDB_FIELD_IP_GEN5 8058
-#define NEXT_MB_UV_ILDB_FIELD_IP_GEN5 8090
-#define ALL_SPAWNED_UV_ILDB_FIELD_IP_GEN5 8114
-#define ALL_DONE_UV_ILDB_FIELD_IP_GEN5 8138
-#define AVC_ILDB_CHILD_UV_ILDB_FIELD_IP_GEN5 8144
-#define BYPASS_EXT_LEFT_EDGE_UV_ILDB_FIELD_IP_GEN5 8272
-#define BYPASS_EXT_TOP_EDGE_UV_ILDB_FIELD_IP_GEN5 8394
-#define WRITE_URB_UV_ILDB_FIELD_IP_GEN5 8470
-#define POST_ILDB_UV_ILDB_FIELD_IP_GEN5 8478
-#define READ_FOR_URB_UV_ILDB_FIELD_IP_GEN5 8492
-#define ELSE_Y_2x8T_ILDB_FIELD_IP_GEN5 8508
-#define ENDIF_Y_2x8T_ILDB_FIELD_IP_GEN5 8516
-#define AVC_ILDB_ROOT_Y_ILDB_MBAFF_IP_GEN5 8544
-#define SLEEP_ENTRY_Y_ILDB_MBAFF_IP_GEN5 8642
-#define POST_SLEEP_Y_ILDB_MBAFF_IP_GEN5 8646
-#define NEXT_MB_Y_ILDB_MBAFF_IP_GEN5 8676
-#define ALL_SPAWNED_Y_ILDB_MBAFF_IP_GEN5 8700
-#define ALL_DONE_Y_ILDB_MBAFF_IP_GEN5 8710
-#define WAIT_FOR_UV_ILDB_MBAFF_IP_GEN5 8710
-#define AVC_ILDB_CHILD_Y_ILDB_MBAFF_IP_GEN5 8720
-#define RE_ENTRY_IP_GEN5 8742
-#define ELSE_Y_16x16T_ILDB_MBAFF_IP_GEN5 8782
-#define ENDIF_Y_16x16T_ILDB_MBAFF_IP_GEN5 8792
-#define ELSE_Y_4x16T_IP_GEN5 8808
-#define ENDIF_Y_4x16T_IP_GEN5 8818
-#define BYPASS_V1_Y_IP_GEN5 8966
-#define BYPASS_V2_Y_IP_GEN5 8980
-#define BYPASS_V3_Y_IP_GEN5 8994
-#define ELSE_Y_16x4T_IP_GEN5 9024
-#define ENDIF_Y_16x4T_IP_GEN5 9034
-#define NOT_DUAL_FIELD_IP_GEN5 9060
-#define ELSE_Y_16x4_IP_GEN5 9060
-#define ENDIF_Y_16x4_IP_GEN5 9072
-#define DUAL_FIELD_Y_IP_GEN5 9168
-#define H0_Y_DONE_IP_GEN5 9236
-#define ELSE_Y_16x16_IP_GEN5 9310
-#define ENDIF_Y_16x16_IP_GEN5 9320
-#define ELSE_Y_16x4_SAVE_IP_GEN5 9342
-#define ENDIF_Y_16x4_SAVE_IP_GEN5 9354
-#define SKIP_ILDB_IP_GEN5 9356
-#define POST_ILDB_IP_GEN5 9364
-#define FILTER_Y_MBAFF_IP_GEN5 9378
-#define MBAFF_Y_ELSE3_IP_GEN5 9444
-#define MBAFF_Y_ENDIF3_IP_GEN5 9458
-#define MBAFF_Y_ELSE4_IP_GEN5 9488
-#define MBAFF_Y_ENDIF4_IP_GEN5 9502
-#define MBAFF_Y_ELSE2_IP_GEN5 9502
-#define MBAFF_Y_ENDIF6_IP_GEN5 9566
-#define MBAFF_Y_ENDIF7_IP_GEN5 9588
-#define MBAFF_Y_ENDIF2_IP_GEN5 9592
-#define MBAFF_Y_ENDIF1_IP_GEN5 9592
-#define AVC_ILDB_ROOT_UV_ILDB_MBAFF_IP_GEN5 9600
-#define SLEEP_ENTRY_UV_ILDB_MBAFF_IP_GEN5 9678
-#define POST_SLEEP_UV_ILDB_MBAFF_IP_GEN5 9682
-#define NEXT_MB_UV_ILDB_MBAFF_IP_GEN5 9714
-#define ALL_SPAWNED_UV_ILDB_MBAFF_IP_GEN5 9738
-#define ALL_DONE_UV_ILDB_MBAFF_IP_GEN5 9762
-#define AVC_ILDB_CHILD_UV_ILDB_MBAFF_IP_GEN5 9768
-#define RE_ENTRY_UV_ILDB_MBAFF_IP_GEN5 9794
-#define ELSE_UV_8X8T_ILDB_MBAFF_IP_GEN5 9836
-#define ENDIF_UV_8X8T_ILDB_MBAFF_IP_GEN5 9846
-#define ELSE_Y_2x8T_ILDB_MBAFF_IP_GEN5 9864
-#define ENDIF_Y_2x8T_ILDB_MBAFF_IP_GEN5 9874
-#define V0_U_NEXT1_IP_GEN5 9934
-#define V0_U_NEXT2_IP_GEN5 9954
-#define V0_U_NEXT3_IP_GEN5 9964
-#define BYPASS_V0_UV_IP_GEN5 10018
-#define ELSE_UV_8X2T_IP_GEN5 10082
-#define ENDIF_UV_8X2T_IP_GEN5 10092
-#define NOT_DUAL_FIELD_UV_IP_GEN5 10120
-#define ELSE_UV_8X2_IP_GEN5 10120
-#define ENDIF_UV_8X2_IP_GEN5 10132
-#define DUAL_FIELD_UV_IP_GEN5 10208
-#define H0_UV_DONE_IP_GEN5 10300
-#define ELSE_UV_8X8_IP_GEN5 10360
-#define ENDIF_UV_8X8_IP_GEN5 10370
-#define ELSE_UV_8X2_SAVE_IP_GEN5 10394
-#define ENDIF_UV_8X2_SAVE_IP_GEN5 10406
-#define SKIP_ILDB_UV_ILDB_MBAFF_IP_GEN5 10408
-#define POST_ILDB_UV_ILDB_MBAFF_IP_GEN5 10416
-#define FILTER_UV_MBAFF_IP_GEN5 10430
-#define MBAFF_UV_ELSE2_IP_GEN5 10466
-#define MBAFF_UV_ENDIF2_IP_GEN5 10496
-#define MBAFF_UV_ENDIF1_IP_GEN5 10496
-#define AllAVC_END_IP_GEN5 10500
diff --git a/src/shaders/h264/mc/header.inc b/src/shaders/h264/mc/header.inc
deleted file mode 100644
index 1291feb..0000000
--- a/src/shaders/h264/mc/header.inc
+++ /dev/null
@@ -1,333 +0,0 @@
-/*
- * Common header file for all AVC MC kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__HEADER__) // Make sure this file is only included once
-#define __HEADER__
-
-// Module name: header.inc
-//
-// Common header file for all AVC MC kernels
-//
-
-#ifndef COMBINED_KERNEL
-#ifdef DEV_CTG
- #define SW_SCOREBOARD // SW Scoreboard should be enabled for CTG and earlier
- #undef HW_SCOREBOARD // HW Scoreboard should be disabled for CTG and earlier
-#else
- #define HW_SCOREBOARD // HW Scoreboard should be enabled for ILK and beyond
- #undef SW_SCOREBOARD // SW Scoreboard should be disabled for ILK and beyond
-#endif // DEV_CTG
-#endif // COMBINED_KERNEL
-
-//#define MONO // Build Monochrome kernels
-
-// Surface state definition
-//
-#define DESTY 0
-#define DESTUV 1
-#define REFYFM0 2
-#define REFYFM1 3
-#define REFYFM2 4
-#define REFYFM3 5
-#define REFYFM4 6
-#define REFYFM5 7
-#define REFYFM6 8
-#define REFYFM7 9
-#define REFYFM8 10
-#define REFYFM9 11
-#define REFYFM10 12
-#define REFYFM11 13
-#define REFYFM12 14
-#define REFYFM13 15
-#define REFYFM14 16
-#define REFYFM15 17
-#define REFUVFM0 18
-#define REFUVFM1 19
-#define REFUVFM2 20
-#define REFUVFM3 21
-#define REFUVFM4 22
-#define REFUVFM5 23
-#define REFUVFM6 24
-#define REFUVFM7 25
-#define REFUVFM8 26
-#define REFUVFM9 27
-#define REFUVFM10 28
-#define REFUVFM11 29
-#define REFUVFM12 30
-#define REFUVFM13 31
-#define REFUVFM14 32
-#define REFUVFM15 33
-
-.default_execution_size (16)
-.default_register_type :ub
-
-// ----------- Common constant definitions ------------
-//
-// Bit position constants
-//
-#define BIT0 0x01
-#define BIT1 0x02
-#define BIT2 0x04
-#define BIT3 0x08
-#define BIT4 0x10
-#define BIT5 0x20
-#define BIT6 0x40
-#define BIT7 0x80
-#define BIT8 0x0100
-#define BIT9 0x0200
-#define BIT10 0x0400
-#define BIT11 0x0800
-#define BIT12 0x1000
-#define BIT13 0x2000
-#define BIT14 0x4000
-#define BIT15 0x8000
-#define BIT16 0x00010000
-#define BIT17 0x00020000
-#define BIT18 0x00040000
-#define BIT19 0x00080000
-#define BIT20 0x00100000
-#define BIT21 0x00200000
-#define BIT22 0x00400000
-#define BIT23 0x00800000
-#define BIT24 0x01000000
-#define BIT25 0x02000000
-#define BIT26 0x04000000
-#define BIT27 0x08000000
-#define BIT28 0x10000000
-#define BIT29 0x20000000
-#define BIT30 0x40000000
-#define BIT31 0x80000000
-
-#define GRFWIB 32 // GRF register width in byte
-#define GRFWIW 16 // GRF register width in word
-#define GRFWID 8 // GRF register width in dword
-
-#define INST_SIZE 16 // Instruction size = 128b = 16 Bytes
-
-#define REGION(Width,HStride) <Width*HStride;Width,HStride>
-
-#define NULLREG null<1>:ud
-#define NULLREGW null<1>:w
-
-#define TOP_FIELD 0
-#define BOTTOM_FIELD 1
-
-// M2 - M9 for date writing message payload
-.declare MSGPAYLOAD Base=m2 ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-.declare MSGPAYLOADB Base=m2 ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-.declare MSGPAYLOADW Base=m2 ElementSize=2 SrcRegion=REGION(16,1) Type=uw
-.declare MSGPAYLOADD Base=m2 ElementSize=4 SrcRegion=REGION(8,1) Type=ud
-
-// ----------- Common Message Descriptor ------------
-//
-#ifdef DEV_ILK
-#define MSG_GW 0x03 // Message Gateway Extended Message Descriptor,
-#define DAPREAD 0x04 // Data Port Read Extended Message Descriptor,
-#define DAPWRITE 0x05 // Data Port Write Extended Message Descriptor,
-#define TS 0x07 // Thread Spawner Extended Message Descriptor
-#define TS_EOT 0x27 // End of Thread Extended Message Descriptor
-
-#define EOTMSGDSC 0x02000010 // End of Thread Message Descriptor, don't deference URB handle
-
-// Data Port Message Descriptor
-#define DWBRMSGDSC_RC 0x02086000 // DWORD Block Read Message Descriptor, reading from render cache = 6.
-#define DWBRMSGDSC_RC_TF 0x02086600 // DWORD Block Read Message Descriptor, reading from render cache = 6.
-#define DWBRMSGDSC_RC_BF 0x02086700 // DWORD Block Read Message Descriptor, reading from render cache = 6.
-#define DWBRMSGDSC_SC 0x0208A000 // DWORD Block Read Message Descriptor, reading from sampler cache = A.
-#define DWBRMSGDSC_SC_TF 0x0208E600 // DWORD Block Read Message Descriptor, reading top field from field mode sampler cache.
-#define DWBRMSGDSC_SC_BF 0x0208E700 // DWORD Block Read Message Descriptor, reading bottom field from field mode sampler cache.
-
-#define DWBWMSGDSC 0x02082000 // DWORD Block Write Message Descriptor
-#define DWBWMSGDSC_WC 0x0218A000 // DWORD Block Write Message Descriptor + write commit
-
-// Enable Write Commit writeback mesage
-#define ENWRCOM 0x00108000 // Enable "write commit" and set response length = 1
-
-// Thread Spawner Message Descriptor
-#define TSMSGDSC 0x02000011
-
-// Message Gateway Message Descriptors
-#define OGWMSGDSC 0x02000000 // OpenGateway Message Descriptor
-#define CGWMSGDSC 0x02000001 // CloseGateway Message Descriptor
-#define FWDMSGDSC 0x02000002 // ForwardMsg Message Descriptor
-
-#define NOTIFYMSG 0x00008000 // Send notification with ForwardMsg message
-
-#define RESP_LEN(len) 0x100000*len
-#define MSG_LEN(len) 0x2000000*len
-
-#else // Pre DEV_ILK
-
-#define MSG_GW
-#define DAPREAD
-#define DAPWRITE
-#define TS
-#define TS_EOT
-
-#define EOTMSGDSC 0x87100010 // End of Thread Message Descriptor, don't deference URB handle
-
-// Data Port Message Descriptor
-#define DWBRMSGDSC_RC 0x04106000 // DWORD Block Read Message Descriptor, reading from render cache = 6.
-#define DWBRMSGDSC_RC_TF 0x04106600 // DWORD Block Read Message Descriptor, reading from render cache = 6.
-#define DWBRMSGDSC_RC_BF 0x04106700 // DWORD Block Read Message Descriptor, reading from render cache = 6.
-#define DWBRMSGDSC_SC 0x0410A000 // DWORD Block Read Message Descriptor, reading from sampler cache = A.
-#define DWBRMSGDSC_SC_TF 0x0410A600 // DWORD Block Read Message Descriptor, reading top field from field mode sampler cache.
-#define DWBRMSGDSC_SC_BF 0x0410A700 // DWORD Block Read Message Descriptor, reading bottom field from field mode sampler cache.
-
-#define DWBWMSGDSC 0x05102000 // DWORD Block Write Message Descriptor
-#define DWBWMSGDSC_WC 0x0511A000 // DWORD Block Write Message Descriptor + write commit
-
-// Enable Write Commit writeback mesage
-#define ENWRCOM 0x00018000 // Enable "write commit" and set response length = 1
-
-// Thread Spawner Message Descriptor
-#define TSMSGDSC 0x07100011
-
-// Message Gateway Message Descriptors
-#define OGWMSGDSC 0x03100000 // OpenGateway Message Descriptor
-#define CGWMSGDSC 0x03100001 // CloseGateway Message Descriptor
-#define FWDMSGDSC 0x03100002 // ForwardMsg Message Descriptor
-
-#define NOTIFYMSG 0x00008000 // Send notification with ForwardMsg message
-#define ACKREQMSG 0x00014000 // Acknowledgement required so response length should be 1
-
-#define RESP_LEN(len) 0x10000*len
-#define MSG_LEN(len) 0x100000*len
-
-#endif // DEV_ILK
-
-// Enable frame/field selection in message descriptor
-#define ENMSGDSCFM 0x400 // Enable MSGDSC to select frame surface
-#define ENMSGDSCTF 0x600 // Enable MSGDSC to select top field surface
-#define ENMSGDSCBF 0x700 // Enable MSGDSC to select bottom field surface
-
-// ----------- Message related register ------------
-//
-#define MSGHDR m1 // Message Payload Header
-#define MSGHDRY m1 // Message Payload Header register for Y data
-#define MSGHDRY0 m1 // Message Payload Header register for Y data
-#define MSGHDRY1 m2 // Message Payload Header register for Y data
-#define MSGHDRY2 m3 // Message Payload Header register for Y data
-#define MSGHDRY3 m4 // Message Payload Header register for Y data
-#define MSGHDRUV m5 // Message Payload Header register for U/V data
-#define MSGSRC r62 // Message source register, should never be used for other purposes
-#define MSGDSC a0.0:ud // Message Descriptor register (type DWORD)
-
-#define MH_ORI MSGSRC.0 // DWORD block R/W message header block offset
-#define MH_ORIX MSGSRC.0 // DWORD block R/W message header X offset
-#define MH_ORIY MSGSRC.1 // DWORD block R/W message header Y offset
-#define MH_SIZE MSGSRC.2 // DWORD block R/W message header block width & height
-
-// Data necessary for kernel operations
-//
-// Address registers used as pointers
-//
-// Note: Please keep the register order as is since they are used in compressed instructions
-//
-#define PPREDBUF_Y a0.4 // Pointer to predicted Y picture
-#define PPREDBUF_Y1 a0.5 // Pointer to predicted Y picture for extended instruction
-
-#define PPREDBUF_UV a0.4 // Pointer to predicted U/V picture
-#define PPREDBUF_UV1 a0.5 // Pointer to predicted U/V picture for extended instruction
-
-#define PDECBUF a0.4 // Pointer to decoded picture data
-#define PDECBUF_UD a0.2 // Pointer to decoded picture data in DWORD unit
-
-// ----------- R63 is reserved for global variables ------------
-//
-// Note: Don't program it with values other than what are defined here.
-
-#define G_REG r63
-
-#define RETURN_REG G_REG.0 // Return pointer for all sub-routine calls (type DWORD)
-#define RETURN_REG1 G_REG.1 // Return pointer for second-level calls
-
-#define I_ORIX G_REG.13 // :uw, H. origin of the macroblock in pixel unit, don't overwrite in-line data
-#define I_ORIY G_REG.14 // :uw, V. origin of the macroblock in pixel unit, don't overwrite in-line data
-
-// Macros
-//
-// Note: For macros that require multiple line expansion, insert "\n" at the end of each line.
-//
-#define GRF(reg) r##reg
-#ifdef DEV_ILK
-#define END_THREAD send (8) NULLREG MSGHDR r0:ud TS_EOT EOTMSGDSC
-#else
-#define END_THREAD send (8) NULLREG MSGHDR r0:ud EOTMSGDSC
-#endif // DEV_ILK
-
-#define CALL(subFunc, skipInst) add (1) RETURN_REG<1>:ud ip:ud (1+skipInst)*INST_SIZE \n\
- jmpi (1) subFunc
-
-#define CALL_1(subFunc, skipInst) add (1) RETURN_REG1<1>:ud ip:ud (1+skipInst)*INST_SIZE \n\
- jmpi (1) subFunc
-
-#define RETURN mov (1) ip:ud RETURN_REG<0;1,0>:ud // Return to calling module
-#define RETURN_1 mov (1) ip:ud RETURN_REG1<0;1,0>:ud // Return to second-level calling module
- // To support iterative calling
-#ifdef SW_SCOREBOARD
-
-#ifdef DEV_CTG_A
- #define LEADING_THREAD 1 // For CTG A, no SRT is needed. Only PRT is necessary
-#else
- #define LEADING_THREAD 0 // For CTG B0 and beyond, PRT doesn't take into debug count
- #define DOUBLE_SB // Scoreboard size needs to be doubled
-#endif
-
-#ifdef DOUBLE_SB // Scoreboard size needs to be doubled
- #define SB_MASK 0x1ff // Scoreboard wrap-around mask (for 512 entries)
-#else
- #define SB_MASK 0xff // Scoreboard wrap-around mask (for 256 entries)
-#endif // defined(DOUBLE_SB)
-
-// Scoreboard related definitions
-
-#define TEMPX r50
-#define TEMPY r51
-#define DELTA r52
-
-#define M05_STORE r0.13 // :uw, reuse r0.6:ud upper-word to store M0.5 header information for scoreboard
-
-
-#endif // SW_SCOREBOARD
-
-// End of header.inc
-
-#endif // !defined(__HEADER__)
-
diff --git a/src/shaders/h264/mc/initialize_MBPara.asm b/src/shaders/h264/mc/initialize_MBPara.asm
deleted file mode 100644
index 52948e2..0000000
--- a/src/shaders/h264/mc/initialize_MBPara.asm
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Initialize parameters
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: Initialize_MBPara.asm
-//
-
-
-//#if !defined(__INITIALIZE_MBPARA__) // Make sure this is only included once
-//#define __INITIALIZE_MBPARA__
-
-
-// WA for weighted prediction - 2007/09/06 // shlee
-// mov (1) guwW128(0)<1> guwR1(0)<0;1,0> // Copy the unique number indicating weight/offset=(128,0)
-
-
-
-// MB Type Category
-// 1 B_L0_16x16
-// 2 B_L1_16x16
-// 3 B_Bi_16x16
-// 4 B_L0_L0_16x8
-// 5 B_L0_L0_8x16
-// 6 B_L1_L1_16x8
-// 7 B_L1_L1_8x16
-// 8 B_L0_L1_16x8
-// 9 B_L0_L1_8x16
-// 10 B_L1_L0_16x8
-// 11 B_L1_L0_8x16
-// 12 B_L0_Bi_16x8
-// 13 B_L0_Bi_8x16
-// 14 B_L1_Bi_16x8
-// 15 B_L1_Bi_8x16
-// 16 B_Bi_L0_16x8
-// 17 B_Bi_L0_8x16
-// 18 B_Bi_L1_16x8
-// 19 B_Bi_L1_8x16
-// 20 B_Bi_Bi_16x8
-// 21 B_Bi_Bi_8x16
-// 22 B_8x8
-
- // TODO:
- // Initialize interpolation area to eliminate uninitialized registers making the results of mac instructions XX.
- // This issue was reported by Sharath on 5/25/2006, and why multiplication by zero still yields XX has not been understood yet.
-#if 0
- mov (16) gudINTPY0(0)<1> 0:ud {Compr}
- mov (16) gudINTPY0(2)<1> 0:ud {Compr}
- mov (16) gudINTPY1(0)<1> 0:ud {Compr}
- mov (16) gudINTPY1(2)<1> 0:ud {Compr}
- mov (16) gudINTPC0(0)<1> 0:ud {Compr}
- mov (16) gudINTPC1(0)<1> 0:ud {Compr}
-#endif
-
- mov (1) gMVSTEP:w 0:w // Address increament for MV read
-
- cmp.e.f0.0 (1) null:w gwMBTYPE<0;1,0> 22:w
- (-f0.0) jmpi INTERLABEL(NOT_8x8_MODE)
-
- //--- 8x8 mode
-
- // Starting address of error data blocks
- cmp.e.f0.1 (2) null<1>:w gSUBMB_SHAPE<0;1,0>:ub 0:w
- (f0.1) jmpi INTERLABEL(CONVERT_MVS)
-
- // Note: MVs and Weights/Offsets are already expanded by HW or driver
-
- // MV conversion - Convert each MV to absolute coord. (= MV + MB org. + block offset)
- shl (16) gwTEMP(0)<1> gX<0;2,1>:w 2:w // Convert MB origin to 1/4-pel unit
- mov (1) gMVSTEP:w 24:w // Address increament for MV read
- add (2) gwTEMP(0,4)<2> gwTEMP(0,4)<4;2,2> 16:w
- add (2) gwTEMP(0,9)<2> gwTEMP(0,9)<4;2,2> 16:w
- add (4) gwTEMP(0,12)<1> gwTEMP(0,12)<4;4,1> 16:w
-
- add (16) gMV<1>:w gMV<16;16,1>:w gwTEMP(0)<16;16,1>
- add (8) gwTEMP(0)<2> gwTEMP(0)<16;8,2> 32:w
- add (16) gwMV(1,0)<1> gwMV(1,0)<16;16,1> gwTEMP(0)<16;16,1>
- add (8) gwTEMP(0,1)<2> gwTEMP(0,1)<16;8,2> 32:w
- add (16) gwMV(3,0)<1> gwMV(3,0)<16;16,1> gwTEMP(0)<16;16,1>
- add (8) gwTEMP(0)<2> gwTEMP(0)<16;8,2> -32:w
- add (16) gwMV(2,0)<1> gwMV(2,0)<16;16,1> gwTEMP(0)<16;16,1>
-
- jmpi INTERLABEL(INIT_ADDRESS_REGS)
-
-INTERLABEL(NOT_8x8_MODE):
-
- //--- !8x8 mode (16x16, 16x8, 8x16)
-
- // MVs and Weights/Offsets are expanded
- cmp.le.f0.1 (8) null<1>:w gwMBTYPE<0;1,0> 3:w // Check 16x16
- mov (1) gSUBMB_SHAPE:ub 0:uw // subMB shape
- (f0.1) mov (8) gMV<1>:d gMV<0;2,1>:d
- (f0.1) mov (8) gdWGT(1,0)<1> gWGT<0;4,1>:d
- (f0.1) mov (4) gdWGT(0,4)<1> gWGT<4;4,1>:d
-
-INTERLABEL(CONVERT_MVS):
- // MV conversion - Convert each MV to absolute coord. (= MV + MB org. + block offset)
- shl (2) gwTEMP(0)<1> gX<2;2,1>:w 2:w // Convert MB origin to 1/4-pel unit
- add (16) gMV<1>:w gMV<16;16,1>:w gwTEMP(0)<0;2,1>
- add (2) gwMV(0,4)<2> gwMV(0,4)<4;2,2> 32:w //{NoDDClr}
- add (2) gwMV(0,9)<2> gwMV(0,9)<4;2,2> 32:w //{NoDDChk,NoDDClr}
- add (4) gwMV(0,12)<1> gwMV(0,12)<4;4,1> 32:w //{NoDDChk}
-
-INTERLABEL(INIT_ADDRESS_REGS):
- // Initialize the address registers
- mov (2) pERRORYC:ud nOFFSET_ERROR:ud {NoDDClr} // Address of Y and C error blocks
- mov (1) pRECON_MV:ud nOFFSET_RECON_MV:ud {NoDDChk,NoDDClr} // Address of recon area and motion vectors
- mov (1) pWGT_BIDX:ud nOFFSET_WGT_BIDX:ud {NoDDChk} // Address of weights/offsets and binding tbl idx
-
- // Read the parity of the current field (gPARITY - 0:top, 1:bottom, 3:frame)
- // and set message descriptor for frame/field write
-#if defined(MBAFF)
- and.nz.f0.0 (1) null:uw gFIELDMBFLAG:ub nFIELDMB_MASK:uw
- (f0.0) and (1) gPARITY:uw gMBPARITY:ub nMBPARITY_MASK:uw
- (-f0.0) mov (1) gPARITY:uw 3:uw
-#elif defined(FIELD)
- and (1) gPARITY:uw gMBPARITY:ub nMBPARITY_MASK:uw
-#endif
-
-
-//#endif // !defined(__INITIALIZE_MBPARA__)
diff --git a/src/shaders/h264/mc/inter_Header.inc b/src/shaders/h264/mc/inter_Header.inc
deleted file mode 100644
index 97829c0..0000000
--- a/src/shaders/h264/mc/inter_Header.inc
+++ /dev/null
@@ -1,401 +0,0 @@
-/*
- * Header file for all AVC INTER prediction kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__INTER_HEADER__) // Make sure this file is only included once
-#define __INTER_HEADER__
-
-// Module name: inter_header.inc
-//
-// Header file for all AVC INTER prediction kernels
-//
-
-#define INTER_KERNEL
-
-//-------------------------------------------------------------------------------------------
-// TODO: The followings will be merged with the above definitions later
-//-------------------------------------------------------------------------------------------
-
-
-//------------ Input parameters & bit masks
-
-// SW WA for weighted prediction - 2007/09/06
-//.declare guwR1 Base=r1 ElementSize=2 Type=uw
-//.declare guwW128 Base=r63.13 ElementSize=2 Type=uw
-
-#ifdef DEV_ILK
-// #define SW_W_128 // Enable SW WA for special Weight=128 case. Can be commented to disable it
-#else // Pre DEV_ILK
-#define SW_W_128 // Enable SW WA for special Weight=128 case.
-#endif // DEV_ILK
-
-#ifdef SW_W_128
-.declare gudW128 Base=r1.0 ElementSize=4 Type=ud
-#else
-#endif // SW_W_128
-
-#define gORIX r3.4 // :ub, X origin
-#define gORIY r3.5 // :ub, Y origin
-
-#define gCBP r3.9 // :ub, CBP (0, 0, Y0, Y1, Y2, Y3, Cb, Cr)
-#define nCBPY_MASK 0x3c
-#define nCBPU_MASK 0x2
-#define nCBPV_MASK 0x1
-
-#define gFIELDFLAGS r3.1 // :uw - To compute message descriptor for write
-
-#define gMBTYPE r3.1 // :ub, MB type
-#define nMBTYPE_MASK 0x1f
-#define gFIELDMBFLAG r3.1 // :ub, Field MB flag
-#define nFIELDMB_MASK 0x40
-#define gMBPARITY r3.3 // :ub, Bottom field flag
-#define nMBPARITY_MASK 0x01
-
-#define gWPREDFLAG r3.0 // :ub, Weighted pred flag
-#define nWBIDIR_MASK 0xc0
-
-#define gSUBMB_SHAPE r3.12 // :ub, Sub-MB shape
-#define gSUBMB_MODE r3.13 // :ub, Sub-MB prediction mode
-.declare guwSUBMB_SHAPE_MODE Base=r3.6 ElementSize=2 Type=uw
-
-#define gYWDENOM r3.14 // :ub, Luma log2 weight denom
-#define gCWDENOM r3.15 // :ub, Chroma log2 weight denom
-
-#define gADDR r3.24 // :ub, Register addresses of error data / MV
-
-.declare gubBIDX Base=r3.16 ElementSize=1 Type=ub
-
-#define gWGT r8 // Weights/offsets
-.declare gdWGT Base=r8 ElementSize=4 Type=d
-.declare gwWGT Base=r8 ElementSize=2 Type=w
-#define gMV r4 // MVs
-.declare gwMV Base=r4 ElementSize=2 Type=w
-.declare gdMV Base=r4 ElementSize=4 Type=d
-
-.declare gwERRORY Base=r10 ElementSize=2 Type=w // 16 GRFs
-.declare gubERRORY Base=r10 ElementSize=1 Type=ub
-.declare gwERRORC Base=r26 ElementSize=2 Type=w // 8 GRFs
-.declare gubERRORC Base=r26 ElementSize=2 Type=ub
-
-//------------ Address registers
-#define pMSGDSC a0.0 // ud: Must be the leading dword of the address register
-#define pREF a0.0
-
-#define pBIDX a0.2
-#define pWGT a0.3
-#define pERRORYC a0.2 // :ud
-#define pERRORY a0.4
-#define pERRORC a0.5
-#define pMV a0.6
-
-#define pWGT_BIDX a0.1 // :ud, WGT & BIDX
-#define pRECON_MV a0.3 // :ud, RECON & MV
-
-#define pREF0 a0.0 // :uw
-#define pREF0D a0.0 // :ud
-#define pREF1 a0.1
-#define pREF2 a0.2
-#define pREF2D a0.1 // :ud
-#define pREF3 a0.3
-#define pREF4 a0.4
-#define pREF4D a0.2 // :ud
-#define pREF5 a0.5
-#define pREF6 a0.6
-#define pREF6D a0.3 // :ud
-#define pREF7 a0.7
-
-#define pRES a0.6
-#define pRESD a0.3 // :ud
-#define pRESULT a0.7
-
-#define p0 a0.0
-#define p1 a0.1
-
-//------------ Constants for static/inline/indirect
-#define nOFFSET_BIDX 112 // = 32*3+4*4
-
-#define nOFFSET_WGT 256 // = 32*8
-#define nOFFSET_WGT_BIDX 0x01000070 // = (256<<16)+112
-#define nOFFSET_ERROR 0x03400140 // = (320+128*4)<<16+320=0x03400140
-#define nOFFSET_ERRORY 0x0140
-#define nOFFSET_ERRORC 0x0340
-#define nOFFSET_MV 128 // = 32*4
-#define nOFFSET_RECON_MV 0x04400080 // = (1088<<16)+128 // TODO: OFFSET_RECON is obsolete
-
-//------------ Constants for kernel internal variables
-#define nOFFSET_INTPY0 0x0640 // = 32*50
-#define nOFFSET_INTPY1 0x0780 // = 32*60
-#define nOFFSET_INTPC0 0x06c0 // = 32*54
-#define nOFFSET_INTPC1 0x0480 // = 32*36
-#define nOFFSET_INTP0 0x06c00640
-#define nOFFSET_INTP1 0x04800780
-
-#define nOFFSET_INTERIM 0x0480 // = 32*36
-#define nOFFSET_INTERIM2 0x04A00480 // = ((32*37)<<16)|(32*36)
-#define nOFFSET_INTERIM3 0x04A00480 // = ((32*36+32)<<16)|(32*36)
-#define nOFFSET_INTERIM4 0x04A00490 // = ((32*37)<<16)|(32*36+16)
-
-#define nOFFSET_INTERIM4x4 0x04C0 // = 32*38
-#define nOFFSET_INTERIM4x4_4 0x04E004D0 // = ((32*38+32)<<16)|(32*38+16)
-#define nOFFSET_INTERIM4x4_5 0x04D004C0 // = ((32*38+16)<<16)|(32*38)
-#define nOFFSET_INTERIM4x4_6 0x04E004C0 // = ((32*38+32)<<16)|(32*38)
-#define nOFFSET_INTERIM4x4_7 0x04D004C8 // = ((32*38+16)<<16)|(32*38+8)
-#define nOFFSET_INTERIM4x4_8 0x04E004D8 // = ((32*38+32)<<16)|(32*38+24)
-#define nOFFSET_INTERIM4x4_9 0x04F004E8 // = ((32*38+48)<<16)|(32*38+40)
-
-#define nOFFSET_RES 0x540 // = 32*42
-#define nOFFSET_REF 0x560 // = 32*43
-#define nOFFSET_REFC 0x700 // = 32*56
-
- // Binding table index
-#define nBDIX_DESTY 0
-#define nBDIX_DESTC 1
-#define nBI_LC_DIFF 0x10 // Binding table index diff between luma and chroma
-
-#define nGRFWIB 32
-#define nGRFHWIB 16
-
-//------------ Regions
-
-.declare gudREF Base=r43 ElementSize=4 SrcRegion=<16;16,1> Type=ud
-.declare gubREF Base=r43 ElementSize=1 Type=ub
-.declare gudREFC Base=r56 ElementSize=4 SrcRegion=<16;16,1> Type=ud
-
-// 16x16 handling
-.declare gudREF21x21 Base=r58 ElementSize=4 SrcRegion=<16;16,1> Type=ud
-.declare gudREF18x10 Base=r66 ElementSize=4 SrcRegion=<16;16,1> Type=ud
-.declare gubREF18x10 Base=r66 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-
-
-
-.declare gudREF16x16 Base=r38 ElementSize=4 Type=ud // 8 GRFs
-.declare gubREF16x16 Base=r38 ElementSize=1 Type=ub
-.declare gudREFC16x8 Base=r46 ElementSize=4 Type=ud // 4 GRFs
-.declare gubREFC16x8 Base=r46 ElementSize=1 Type=ub
-
-// TODO
-.declare gubAVG Base=r56 ElementSize=1 Type=ub
-.declare gubREFY_BWD Base=r64 ElementSize=1 Type=ub
-.declare gubREFC_BWD Base=r72 ElementSize=1 Type=ub
-
-
-.declare guwINTPY0 Base=r50 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare gudINTPY0 Base=r50 ElementSize=4 Type=ud
-.declare gubINTPY0 Base=r50 ElementSize=1 SrcRegion=<32;16,2> Type=ub
-.declare guwINTPY1 Base=r60 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare gudINTPY1 Base=r60 ElementSize=4 Type=ud
-.declare gubINTPY1 Base=r60 ElementSize=1 SrcRegion=<32;16,2> Type=ub
-.declare guwYPRED Base=r50 ElementSize=2 SrcRegion=<8;8,1> Type=uw
-.declare gubYPRED Base=r50 ElementSize=1 SrcRegion=<32;16,2> Type=ub
-
-.declare guwINTPC0 Base=r54 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare gwINTPC0 Base=r54 ElementSize=2 SrcRegion=<16;16,1> Type=w
-.declare gudINTPC0 Base=r54 ElementSize=4 Type=ud
-.declare gubINTPC0 Base=r54 ElementSize=1 SrcRegion=<32;16,2> Type=ub
-.declare guwINTPC1 Base=r36 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare gudINTPC1 Base=r36 ElementSize=4 Type=ud
-.declare gubINTPC1 Base=r36 ElementSize=1 SrcRegion=<32;16,2> Type=ub
-.declare guwCPRED Base=r54 ElementSize=2 SrcRegion=<16;8,2> Type=uw
-.declare gubCPRED Base=r54 ElementSize=1 SrcRegion=<32;8,4> Type=ub
-
-#define gINTERIM r36
-.declare gubINTERIM_BUF Base=r36 ElementSize=1 SrcRegion=<32;16,2> Type=ub
-#define gINTERIM4x4 r38
-.declare gubINTERIM4x4_BUF Base=r38 ElementSize=1 SrcRegion=<32;16,2> Type=ub
-.declare gwINTERIM4x4_BUF Base=r38 ElementSize=2 Type=w
-
-.declare gubINTERIM_BUF2 Base=r42 ElementSize=1 SrcRegion=<8;4,2> Type=ub
-.declare gwINTERIM_BUF2 Base=r42 ElementSize=2 SrcRegion=<16;16,1> Type=w
-.declare guwINTERIM_BUF2 Base=r42 ElementSize=2 Type=uw
-
-.declare gwINTERIM_BUF3 Base=r38 ElementSize=2 SrcRegion=<16;16,1> Type=w // 2 GRFs
-.declare gubINTERIM_BUF3 Base=r38 ElementSize=1 Type=ub
-
-.declare gwTEMP Base=r42 ElementSize=2 SrcRegion=<16;16,1> Type=w
-
-//------------ General registers
-
-#define gX r3.2 // w
-#define gY r3.3 // w
-
-#define gMSGDSC_R r3.6 // ud
-#define gMSGDSC_W r3.7 // ud
-
-#ifdef SW_W_128
-.declare gwMBTYPE Base=r8.6 ElementSize=2 Type=w // Shared with gLOOP_SUBMB
-
-// TODO
-#define gLOOP_SUBMB r8.6
-#define gLOOP_SUBMBPT r8.7
-#define gLOOP_DIR r9.6
-#define gLOOPCNT r9.7 // Loop counter for submodules
-#else
-.declare gwMBTYPE Base=r1.0 ElementSize=2 Type=w // Shared with gLOOP_SUBMB
-
-// TODO
-#define gLOOP_SUBMB r1.0
-#define gLOOP_SUBMBPT r1.1
-#define gLOOP_DIR r8.7
-#define gLOOPCNT r9.7 // Loop counter for submodules
-#endif // SW_W_128
-
-#define gW0 r34.6 // Temporary WORD
-#define gW1 r34.7 // Temporary WORD
-#define gW2 r34.8 // Temporary WORD
-#define gW3 r34.9 // Temporary WORD
-#define gD0 r34.3 // Temporary DWORD
-
-#define gW4 r34.15
-
-//
-
-#define gMVX_INT r34.0 // :w
-#define gMVY_INT r34.1 // :w
-#define gMVX_FRAC r34.2 // :w
-#define gMVY_FRAC r34.3 // :w
-#define gMVX_FRACC r34.4 // :w
-#define gMVY_FRACC r34.5 // :w
-
-#define gpINTPY r34.10
-#define gpINTPC r34.11
-#define gpINTP r34.5 // DW
-
-#define gPREDFLAG r34.12
-#define gBIDX r34.13
-#define gREFPARITY r34.14
-#define gCHRMVADJ r1.14
-#define gPARITY r1.15
-#define gCBP_MASK r1.1
-
-#define gMVSTEP r1.13
-
-#define gpADDR r1.2 // :uw (8 words)
-
-#define gSHAPETEMP r8.15 // :uw
-
-#define gCOEFA r42.0
-#define gCOEFB r42.1
-#define gCOEFC r42.2
-#define gCOEFD r42.3
-
-// Weighted prediction
-#define gPREDFLAG0 r46.0
-#define gPREDFLAG1 r46.2
-
-#define gWEIGHTFLAG r43.2
-#define gBIPRED r43.3
-#define gYADD r43.4
-#define gCADD r43.5
-#define gYSHIFT r43.6
-#define gCSHIFT r43.7
-
-#define gOFFSET r44.0
-#define gUOFFSET r44.1
-#define gVOFFSET r44.2
-
-#define gWT0 r45.0
-#define gO0 r45.1
-#define gWT1 r45.2
-#define gO1 r45.3
-#define gUW0 r45.4
-#define gUO0 r45.5
-#define gUW1 r45.6
-#define gUO1 r45.7
-#define gVW0 r45.8
-#define gVO0 r45.9
-#define gVW1 r45.10
-#define gVO1 r45.11
-
-#define gWT0_D r45.0
-#define gUW0_D r45.2
-
-//------------ Message-related Registers & constants
-#define gMSGSRC r2 // Message Source
-
-#define mMSGHDR m1
-#define mMSGHDRY m1
-#define mMSGHDRC m2
-#define mMSGHDR1 m1
-#define mMSGHDR2 m2
-#define mMSGHDR3 m3
-#define mMSGHDR4 m4
-#define mMSGHDRYW m1
-#define mMSGHDRCW m10
-
-#ifdef DEV_ILK
- // 0000 0100(read) 0001(msg len) xxxx(resp len) 1010 (sampler cache) xxxx (field/frame) xxxx xxxx (bidx)
-#define nDWBRMSGDSC_SC 0x0208A002 // DWORD Block Read Message Descriptor through Data Port, Sampler Cache
-#define nDWBRMSGDSC_SC_TF 0x0208E602 // DWORD Block Read Message Descriptor through Data Port, Sampler Cache
-#define nDWBRMSGDSC_SC_BF 0x0208E702 // DWORD Block Read Message Descriptor through Data Port, Sampler Cache
- // 0000 0101(write) 0001(msg len) xxxx(resp len) 0010 (render cache) xxxx (field/frame) xxxx xxxx (bidx)
-#define nDWBWMSGDSC 0x02082000 // DWORD Block Write Message Descriptor through Data Port, Render Cache
-#define nDWBWMSGDSC_TF 0x02082600 // DWORD Block Write Message Descriptor through Data Port, Render Cache
-#define nDWBWMSGDSC_BF 0x02082700 // DWORD Block Write Message Descriptor through Data Port, Render Cache
-
-#else // Pre DEV_ILK
- // 0000 0100(read) 0001(msg len) xxxx(resp len) 1010 (sampler cache) xxxx (field/frame) xxxx xxxx (bidx)
-#define nDWBRMSGDSC_SC 0x0410A002 // DWORD Block Read Message Descriptor through Data Port, Sampler Cache
-#define nDWBRMSGDSC_SC_TF 0x0410A602 // DWORD Block Read Message Descriptor through Data Port, Sampler Cache
-#define nDWBRMSGDSC_SC_BF 0x0410A702 // DWORD Block Read Message Descriptor through Data Port, Sampler Cache
- // 0000 0101(write) 0001(msg len) xxxx(resp len) 0010 (render cache) xxxx (field/frame) xxxx xxxx (bidx)
-#define nDWBWMSGDSC 0x05102000 // DWORD Block Write Message Descriptor through Data Port, Render Cache
-#define nDWBWMSGDSC_TF 0x05102600 // DWORD Block Write Message Descriptor through Data Port, Render Cache
-#define nDWBWMSGDSC_BF 0x05102700 // DWORD Block Write Message Descriptor through Data Port, Render Cache
-#endif // DEV_ILK
-
-#define nDWB_FIELD_MASK 0x0600
-
-// message data payload
-.declare mbMSGPAYLOADY Base=m2 ElementSize=1 SrcRegion=REGION(16,1) Type=b
-.declare mbMSGPAYLOADC Base=m11 ElementSize=1 SrcRegion=REGION(16,1) Type=b
-
-// Destination registers for write commit
-#define gREG_WRITE_COMMIT_Y r10.0
-#define gREG_WRITE_COMMIT_UV r11.0
-
-#define RETURN_REG_INTER r1.5 // Return pointer for all sub-routine calls (type DWORD)
-
-#define CALL_INTER(subFunc, skipInst) add (1) RETURN_REG_INTER<1>:ud ip:ud 1+skipInst*INST_SIZE \n\
- jmpi (1) subFunc
-#define RETURN_INTER mov (1) ip:ud RETURN_REG_INTER<0;1,0>:ud // Return to calling module
-
-
-// End of inter_header.inc
-
-#endif // !defined(__INTER_HEADER__)
-
diff --git a/src/shaders/h264/mc/interpolate_C_2x2.asm b/src/shaders/h264/mc/interpolate_C_2x2.asm
deleted file mode 100644
index 03ee00d..0000000
--- a/src/shaders/h264/mc/interpolate_C_2x2.asm
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Interpolation kernel for chrominance 2x2 motion compensation
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: Interpolate_C_2x2.asm
-//
-// Interpolation kernel for chrominance 2x2 motion compensation
-//
-// $Revision: 8 $
-// $Date: 10/09/06 4:00p $
-//
-
-
-//#if !defined(__Interpolate_C_2x2__) // Make sure this is only included once
-//#define __Interpolate_C_2x2__
-
-
- // (8-xFrac) and (8-yFrac)
- add (2) gW0<1>:w gMVX_FRACC<2;2,1>:w -0x08:w
-
- // Compute the GRF address of the starting position of the reference area
- mov (1) pREF0:w nOFFSET_REFC:w {NoDDClr}
- mov (1) pRESULT:uw gpINTPC:uw {NoDDChk}
-
- // gCOEFA = (8-xFrac)*(8-yFrac)
- // gCOEFB = xFrac*(8-yFrac)
- // gCOEFC = (8-xFrac)*yFrac
- // gCOEFD = xFrac*yFrac
- mul (1) gCOEFD:w gMVX_FRACC:w gMVY_FRACC:w {NoDDClr}
- mul (1) gCOEFA:w -gW0:w -gW1:uw {NoDDClr,NoDDChk}
- mul (1) gCOEFB:w gMVX_FRACC:w -gW1:uw {NoDDClr,NoDDChk}
- mul (1) gCOEFC:w -gW0:w gMVY_FRACC:w {NoDDChk}
-
- // (8-xFrac)*(8-yFrac)*A
- // ---------------------
- mul (8) acc0<1>:uw r[pREF0,0]<8;4,1>:ub gCOEFA:uw
-
- // xFrac*(8-yFrac)*B
- // -------------------
- mac (8) acc0<1>:uw r[pREF0,2]<8;4,1>:ub gCOEFB:uw
-
- // (8-xFrac)*yFrac*C
- // -------------------
- mac (8) acc0<1>:uw r[pREF0,8]<8;4,1>:ub gCOEFC:uw
-
- // xFrac*yFrac*D
- // -----------------
- mac (8) gwINTERIM_BUF2(0)<1> r[pREF0,10]<8;4,1>:ub gCOEFD:uw
- mov (4) r[pRESULT]<1>:uw gwINTERIM_BUF2(0)<4;4,1> {NoDDClr}
- mov (4) r[pRESULT,16]<1>:uw gwINTERIM_BUF2(0,4)<4;4,1> {NoDDChk}
-
-//#endif // !defined(__Interpolate_C_2x2__)
diff --git a/src/shaders/h264/mc/interpolate_C_4x4.asm b/src/shaders/h264/mc/interpolate_C_4x4.asm
deleted file mode 100644
index 8f6db8d..0000000
--- a/src/shaders/h264/mc/interpolate_C_4x4.asm
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Interpolation kernel for chrominance 4x4 motion compensation
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: Interpolate_C_4x4_Func.asm
-//
-// Interpolation kernel for chrominance 4x4 motion compensation
-//
-// $Revision: 8 $
-// $Date: 10/09/06 4:00p $
-//
-
-
-//#if !defined(__Interpolate_C_4x4_Func__) // Make sure this is only included once
-//#define __Interpolate_C_4x4_Func__
-
-
-INTERLABEL(Interpolate_C_4x4_Func):
-
-
- // (8-xFrac) and (8-yFrac)
- add (2) gW0<1>:w gMVX_FRACC<2;2,1>:w -0x08:w
-
- // Compute the GRF address of the starting position of the reference area
- mov (1) pREF0:w nOFFSET_REFC:w {NoDDClr}
- mov (1) pREF1:uw nOFFSET_REFC+16:w {NoDDChk,NoDDClr}
- mov (1) pRESULT:uw gpINTPC:uw {NoDDChk}
-
- // gCOEFA = (8-xFrac)*(8-yFrac)
- // gCOEFB = xFrac*(8-yFrac)
- // gCOEFC = (8-xFrac)*yFrac
- // gCOEFD = xFrac*yFrac
- mul (1) gCOEFD:w gMVX_FRACC:w gMVY_FRACC:w {NoDDClr}
- mul (1) gCOEFA:w -gW0:w -gW1:uw {NoDDClr,NoDDChk}
- mul (1) gCOEFB:w gMVX_FRACC:w -gW1:uw {NoDDClr,NoDDChk}
- mul (1) gCOEFC:w -gW0:w gMVY_FRACC:w {NoDDChk}
-
- add (2) gW0<1>:uw pREF0<2;2,1>:uw 16:w
-
- // (8-xFrac)*(8-yFrac)*A
- // ---------------------
- mul (16) acc0<1>:uw r[pREF0,0]<16;8,1>:ub gCOEFA:uw
- mul (16) acc1<1>:uw r[pREF0,nGRFWIB]<16;8,1>:ub gCOEFA:uw
-
- // xFrac*(8-yFrac)*B
- // -------------------
- mac (16) acc0<1>:uw r[pREF0,2]<16;8,1>:ub gCOEFB:uw
- mac (16) acc1<1>:uw r[pREF0,nGRFWIB+2]<16;8,1>:ub gCOEFB:uw
-
- // (8-xFrac)*yFrac*C
- // -------------------
- mov (2) pREF0<1>:uw gW0<2;2,1>:uw
- mac (16) acc0<1>:uw r[pREF0,0]<8,1>:ub gCOEFC:uw
- mac (16) acc1<1>:uw r[pREF0,nGRFWIB]<8,1>:ub gCOEFC:uw
-
- // xFrac*yFrac*D
- // -----------------
- mac (16) r[pRESULT]<1>:uw r[pREF0,2]<8,1>:ub gCOEFD:uw
- mac (16) r[pRESULT,GRFWIB]<1>:uw r[pREF0,nGRFWIB+2]<8,1>:ub gCOEFD:uw {SecHalf}
-
-
-//#endif // !defined(__Interpolate_C_4x4_Func__)
diff --git a/src/shaders/h264/mc/interpolate_Y_4x4.asm b/src/shaders/h264/mc/interpolate_Y_4x4.asm
deleted file mode 100644
index 279c5c5..0000000
--- a/src/shaders/h264/mc/interpolate_Y_4x4.asm
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * Interpolation kernel for luminance motion compensation
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: Interpolate_Y_4x4.asm
-//
-// Interpolation kernel for luminance motion compensation
-//
-// $Revision: 10 $
-// $Date: 10/09/06 4:00p $
-//
-
-
- // Compute the GRF address of the starting position of the reference area
-#if 1
- (-f0.1) mov (1) pREF:w nOFFSET_REF+2+nGRFWIB:w
- (f0.1) mov (1) pREF:w nOFFSET_REF+2:w
- mov (1) pRESULT:uw gpINTPY:uw
-#else
- mov (1) pREF:w nOFFSET_REF+2+nGRFWIB:w {NoDDClr}
- mov (1) pRESULT:uw gpINTPY:uw {NoDDChk}
-#endif
-
- /*
- * | |
- * - - 0 1 2 3 + -
- * 4 5 6 7
- * 8 9 A B
- * C D E F
- * - - + - - - + -
- * | |
- */
-
- // Case 0
- or.z.f0.1 (16) null:w gMVY_FRAC<0;1,0>:w gMVX_FRAC<0;1,0>:w
- (f0.1) mov (4) r[pRESULT]<1>:uw r[pREF0]<4;4,1>:ub
- (f0.1) mov (4) r[pRESULT,16]<1>:uw r[pREF0,16]<4;4,1>:ub
- (f0.1) mov (4) r[pRESULT,32]<1>:uw r[pREF0,32]<4;4,1>:ub
- (f0.1) mov (4) r[pRESULT,48]<1>:uw r[pREF0,48]<4;4,1>:ub
- (f0.1) jmpi INTERLABEL(Exit_Interpolate_Y_4x4)
-
- // Store all address registers
- mov (8) gpADDR<1>:w a0<8;8,1>:w
-
- mul.z.f0.0 (1) gW4:w gMVY_FRAC:w gMVX_FRAC:w
- and.nz.f0.1 (1) null gW4:w 1:w
-
- add (1) pREF1:uw pREF0:uw nGRFWIB/2:uw
- add (2) pREF2<1>:uw pREF0<2;2,1>:uw nGRFWIB:uw
- mov (4) gW0<1>:uw pREF0<4;4,1>:uw
-
- (f0.0) jmpi INTERLABEL(Interpolate_Y_H_4x4)
- (f0.1) jmpi INTERLABEL(Interpolate_Y_H_4x4)
-
- //-----------------------------------------------------------------------
- // CASE: A69BE (H/V interpolation)
- //-----------------------------------------------------------------------
-
- // Compute interim horizontal intepolation
- add (1) pREF0<1>:uw pREF0<0;1,0>:uw -34:w
- add (1) pREF1<1>:uw pREF1<0;1,0>:uw -18:w {NoDDClr}
- mov (1) pRESD:ud nOFFSET_INTERIM4x4_5:ud {NoDDChk} // Case 69be
-
- // Check whether this position is 'A'
- cmp.e.f0.0 (1) null gW4:w 4:w
-
- $for(0;<2;1) {
- add (16) acc0<1>:w r[pREF0,nGRFWIB*2*%1]<16;4,1>:ub r[pREF0,nGRFWIB*2*%1+5]<16;4,1>:ub {Compr}
- mac (16) acc0<1>:w r[pREF0,nGRFWIB*2*%1+1]<16;4,1>:ub -5:w {Compr}
- mac (16) acc0<1>:w r[pREF0,nGRFWIB*2*%1+2]<16;4,1>:ub 20:w {Compr}
- mac (16) acc0<1>:w r[pREF0,nGRFWIB*2*%1+3]<16;4,1>:ub 20:w {Compr}
- mac (16) r[pRES,nGRFWIB*%1]<1>:w r[pREF0,nGRFWIB*2*%1+4]<16;4,1>:ub -5:w {Compr}
- }
- // last line
- add (4) acc0<1>:w r[pREF0,nGRFWIB*2*2]<4;4,1>:ub r[pREF0,nGRFWIB*2*2+5]<4;4,1>:ub
- mac (4) acc0<1>:w r[pREF0,nGRFWIB*2*2+1]<4;4,1>:ub -5:w
- mac (4) acc0<1>:w r[pREF0,nGRFWIB*2*2+2]<4;4,1>:ub 20:w
- mac (4) acc0<1>:w r[pREF0,nGRFWIB*2*2+3]<4;4,1>:ub 20:w
- mac (4) r[pRES,nGRFWIB*2]<1>:w r[pREF0,nGRFWIB*2*2+4]<4;4,1>:ub -5:w
-
- // Compute interim/output vertical interpolation
- mov (1) pREF6D:ud nOFFSET_INTERIM4x4_4:ud {NoDDClr}
- mov (1) pREF0D:ud nOFFSET_INTERIM4x4_7:ud {NoDDChk,NoDDClr}
- mov (1) pREF2D:ud nOFFSET_INTERIM4x4_8:ud {NoDDChk,NoDDClr}
- mov (1) pREF4D:ud nOFFSET_INTERIM4x4_9:ud {NoDDChk}
-
- add (16) acc0<1>:w gwINTERIM4x4_BUF(0)<16;16,1> 512:w
- mac (16) acc0<1>:w gwINTERIM4x4_BUF(1)<16;16,1> -5:w
- mac (16) acc0<1>:w r[pREF6,0]<8,1>:w 20:w
-
- (f0.0) mov (1) pRES:uw nOFFSET_RES:uw // Case a
- (-f0.0) mov (1) pRES:uw nOFFSET_INTERIM4x4:uw // Case 69be
-
- mac (16) acc0<1>:w r[pREF0,0]<4,1>:w -5:w
- mac (16) acc0<1>:w r[pREF0,nGRFWIB]<4,1>:w 1:w
- mac (16) acc0<1>:w r[pREF2,0]<4,1>:w 20:w
- asr.sat (16) r[pRES]<2>:ub acc0<16;16,1>:w 10:w
-
- (f0.0) jmpi INTERLABEL(Return_Interpolate_Y_4x4)
-
-INTERLABEL(Interpolate_Y_H_4x4):
-
- cmp.e.f0.0 (1) null gMVX_FRAC:w 0:w
- cmp.e.f0.1 (1) null gMVY_FRAC:w 2:w
- (f0.0) jmpi INTERLABEL(Interpolate_Y_V_4x4)
- (f0.1) jmpi INTERLABEL(Interpolate_Y_V_4x4)
-
- //-----------------------------------------------------------------------
- // CASE: 123567DEF (H interpolation)
- //-----------------------------------------------------------------------
-
- add (4) pREF0<1>:uw gW0<4;4,1>:uw -2:w
- cmp.g.f0.0 (4) null:w gMVY_FRAC<0;1,0>:w 2:w
- cmp.e.f0.1 (1) null gMVX_FRAC:w 2:w
- (f0.0) add (4) pREF0<1>:uw pREF0<4;4,1>:uw nGRFWIB/2:uw
-
- cmp.e.f0.0 (1) null:w gMVY_FRAC<0;1,0>:w 0:w
-
- (f0.1) mov (1) pRESULT:uw nOFFSET_RES:uw // Case 26E
- (-f0.1) mov (1) pRESULT:uw nOFFSET_INTERIM4x4:uw // Case 1357DF
-
- // Compute interim/output horizontal interpolation
- add (16) acc0<1>:w r[pREF0]<4,1>:ub 16:w
- mac (16) acc0<1>:w r[pREF0,1]<4,1>:ub -5:w
- mac (16) acc0<1>:w r[pREF0,2]<4,1>:ub 20:w
- mac (16) acc0<1>:w r[pREF0,3]<4,1>:ub 20:w
- mac (16) acc0<1>:w r[pREF0,4]<4,1>:ub -5:w
- mac (16) acc0<1>:w r[pREF0,5]<4,1>:ub 1:w
- asr.sat (16) r[pRESULT]<2>:ub acc0<16;16,1>:w 5:w
-
- (-f0.1) jmpi INTERLABEL(Interpolate_Y_V_4x4)
- (-f0.0) jmpi INTERLABEL(Average_4x4)
-
- jmpi INTERLABEL(Return_Interpolate_Y_4x4)
-
-INTERLABEL(Interpolate_Y_V_4x4):
-
- cmp.e.f0.0 (1) null gMVY_FRAC:w 0:w
- (f0.0) jmpi INTERLABEL(Interpolate_Y_I_4x4)
-
- //-----------------------------------------------------------------------
- // CASE: 48C59D7BF (V interpolation)
- //-----------------------------------------------------------------------
-
- cmp.g.f0.1 (8) null:w gMVX_FRAC<0;1,0>:w 2:w
-
- mov (4) pREF0<1>:uw gW0<4;4,1>:uw {NoDDClr}
- add (4) pREF4<1>:w gW0<4;4,1>:uw 16:w {NoDDChk}
-
- (f0.1) add (8) pREF0<1>:uw pREF0<4;4,1>:uw 1:uw
-
- cmp.e.f0.0 (1) null:w gMVX_FRAC<0;1,0>:w 0:w
- cmp.e.f0.1 (1) null gMVY_FRAC:w 2:w
-
- // Compute interim/output vertical interpolation
- add (16) acc0<1>:w r[pREF0,-nGRFWIB]<4,1>:ub 16:w
- mac (16) acc0<1>:w r[pREF0]<4,1>:ub 20:w
- mac (16) acc0<1>:w r[pREF0,nGRFWIB]<4,1>:ub -5:w
- mac (16) acc0<1>:w r[pREF4,-nGRFWIB]<4,1>:ub -5:w
- mac (16) acc0<1>:w r[pREF4]<4,1>:ub 20:w
- mac (16) acc0<1>:w r[pREF4,nGRFWIB]<4,1>:ub 1:w
-
- mov (1) pRESULT:uw nOFFSET_RES:uw
- (-f0.0) jmpi INTERLABEL(VFILTER_4x4)
- (-f0.1) mov (1) pRESULT:uw nOFFSET_INTERIM4x4:uw
-
- INTERLABEL(VFILTER_4x4):
-
- asr.sat (16) r[pRESULT]<2>:ub acc0<16;16,1>:w 5:w
-
- (-f0.0) jmpi INTERLABEL(Average_4x4)
- (f0.1) jmpi INTERLABEL(Return_Interpolate_Y_4x4 )
-
-INTERLABEL(Interpolate_Y_I_4x4):
-
- //-----------------------------------------------------------------------
- // CASE: 134C (Integer position)
- //-----------------------------------------------------------------------
-
- mov (4) pREF0<1>:uw gW0<4;4,1>:uw
-
- cmp.e.f0.0 (4) null:w gMVX_FRAC<0;1,0>:w 3:w
- cmp.e.f0.1 (4) null:w gMVY_FRAC<0;1,0>:w 3:w
- (f0.0) add (4) pREF0<1>:uw pREF0<4;4,1>:uw 1:uw
- (f0.1) add (4) pREF0<1>:uw pREF0<4;4,1>:uw nGRFWIB/2:uw
-
- mov (16) guwINTERIM_BUF2(0)<1> r[pREF0]<4,1>:ub
-
-INTERLABEL(Average_4x4):
-
- //-----------------------------------------------------------------------
- // CASE: 13456789BCDEF (Average)
- //-----------------------------------------------------------------------
-
- // Average two interim results
- avg.sat (16) gubINTERIM_BUF2(0)<2> gubINTERIM_BUF2(0)<32;16,2> gINTERIM4x4<32;16,2>:ub
-
-INTERLABEL(Return_Interpolate_Y_4x4):
- // Move result
- mov (1) pRES:uw gpINTPY:uw
- mov (4) r[pRES,0]<2>:ub gubINTERIM_BUF2(0,0)
- mov (4) r[pRES,16]<2>:ub gubINTERIM_BUF2(0,8)
- mov (4) r[pRES,32]<2>:ub gubINTERIM_BUF2(0,16)
- mov (4) r[pRES,48]<2>:ub gubINTERIM_BUF2(0,24)
-
- // Restore all address registers
- mov (8) a0<1>:w gpADDR<8;8,1>:w
-
-INTERLABEL(Exit_Interpolate_Y_4x4):
-
-
-// end of file
diff --git a/src/shaders/h264/mc/interpolate_Y_8x8.asm b/src/shaders/h264/mc/interpolate_Y_8x8.asm
deleted file mode 100644
index 4506de7..0000000
--- a/src/shaders/h264/mc/interpolate_Y_8x8.asm
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * Interpolation kernel for luminance motion compensation
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: Interpolate_Y_8x8.asm
-//
-// Interpolation kernel for luminance motion compensation
-//
-// $Revision: 13 $
-// $Date: 10/09/06 4:00p $
-//
-
-
-//---------------------------------------------------------------
-// In: pMV => Source address of MV
-// In: gMVX_FRAC<2;2,1>:w => MV fractional components
-// In: f0.1 (1) => If 1, vertical MV is integer
-// In: gpINTPY:uw => Destination address for interpolated result
-// In: Reference area staring from R43
-// If horizontal/vertical MVs are all integer, 8x8 pixels are on R43~R44 (2 GRFs)
-// If only horz MV is integer, 8x13 pixels are on R43~R46 (4 GRFs)
-// If only vert MV is integer, 13x8 pixels are on R43~R46 (4 GRFs)
-// If no MVs are integer, 13x13 pixels are on R43~R49 (7 GRFs)
-//---------------------------------------------------------------
-
-
-INTERLABEL(Interpolate_Y_8x8_Func):
-
-
-
- // Check whether MVX is integer MV
- and.z.f0.0 (1) null:w r[pMV,0]<0;1,0>:w 0x3:w
- (-f0.0) jmpi (1) INTERLABEL(Interpolate_Y_8x8_Func2)
-
- // TODO: remove this back-to-back read - huge latency..
- mov (8) gubREF(6,2)<1> gubREF(3,0)<8;8,1>
- mov (8) gubREF(5,18)<1> gubREF(2,24)<8;8,1> {NoDDClr}
- mov (8) gubREF(5,2)<1> gubREF(2,16)<8;8,1> {NoDDChk}
- mov (8) gubREF(4,18)<1> gubREF(2,8)<8;8,1> {NoDDClr}
- mov (8) gubREF(4,2)<1> gubREF(2,0)<8;8,1> {NoDDChk}
- mov (8) gubREF(3,18)<1> gubREF(1,24)<8;8,1> {NoDDClr}
- mov (8) gubREF(3,2)<1> gubREF(1,16)<8;8,1> {NoDDChk}
- mov (8) gubREF(2,18)<1> gubREF(1,8)<8;8,1> {NoDDClr}
- mov (8) gubREF(2,2)<1> gubREF(1,0)<8;8,1> {NoDDChk}
- mov (8) gubREF(1,18)<1> gubREF(0,24)<8;8,1> {NoDDClr}
- mov (8) gubREF(1,2)<1> gubREF(0,16)<8;8,1> {NoDDChk}
- mov (8) gubREF(0,18)<1> gubREF(0,8)<8;8,1>
- mov (8) gubREF(0,2)<1> gubREF(0,0)<8;8,1>
-
-INTERLABEL(Interpolate_Y_8x8_Func2):
-
- // Compute the GRF address of the starting position of the reference area
- (-f0.1) mov (1) pREF:w nOFFSET_REF+2+nGRFWIB:w
- (f0.1) mov (1) pREF:w nOFFSET_REF+2:w
- mov (1) pRESULT:uw gpINTPY:uw
-
- /*
- * | |
- * - - 0 1 2 3 + -
- * 4 5 6 7
- * 8 9 A B
- * C D E F
- * - - + - - - + -
- * | |
- */
-
- // Case 0
- or.z.f0.1 (16) null:w gMVY_FRAC<0;1,0>:w gMVX_FRAC<0;1,0>:w
- (f0.1) mov (16) r[pRESULT]<1>:uw r[pREF]<16;8,1>:ub
- (f0.1) mov (16) r[pRESULT,nGRFWIB]<1>:uw r[pREF,nGRFWIB]<16;8,1>:ub
- (f0.1) mov (16) r[pRESULT,nGRFWIB*2]<1>:uw r[pREF,nGRFWIB*2]<16;8,1>:ub
- (f0.1) mov (16) r[pRESULT,nGRFWIB*3]<1>:uw r[pREF,nGRFWIB*3]<16;8,1>:ub
- (f0.1) jmpi INTERLABEL(Exit_Interpolate_Y_8x8)
-
- // Store all address registers
- mov (8) gpADDR<1>:w a0<8;8,1>:w
-
- mul.z.f0.0 (1) gW4:w gMVY_FRAC:w gMVX_FRAC:w
- add (1) pREF1:uw pREF0:uw nGRFWIB/2:uw
- and.nz.f0.1 (1) null gW4:w 1:w
- add (2) pREF2<1>:uw pREF0<2;2,1>:uw nGRFWIB:uw
- mov (4) gW0<1>:uw pREF0<4;4,1>:uw
-
- (f0.0) jmpi INTERLABEL(Interpolate_Y_H_8x8)
- (f0.1) jmpi INTERLABEL(Interpolate_Y_H_8x8)
-
- //-----------------------------------------------------------------------
- // CASE: A69BE (H/V interpolation)
- //-----------------------------------------------------------------------
-
- // Compute interim horizontal intepolation of 12 lines (not 9 lines)
-// add (1) pREF0<1>:ud pREF0<0;1,0>:ud 0xffeeffde:ud // (-18<<16)|(-34)
- add (1) pREF0<1>:uw pREF0<0;1,0>:uw -34:w
- add (1) pREF1<1>:uw pREF1<0;1,0>:uw -18:w {NoDDClr}
- mov (1) pRESD:ud nOFFSET_INTERIM3:ud {NoDDChk}
-
- // Check whether this position is 'A'
- cmp.e.f0.0 (1) null gW4:w 4:w
-
- $for(0;<6;2) {
- add (32) acc0<1>:w r[pREF,nGRFWIB*%1]<16;8,1>:ub r[pREF0,nGRFWIB*%1+5]<16;8,1>:ub {Compr}
- mac (32) acc0<1>:w r[pREF,nGRFWIB*%1+1]<16;8,1>:ub -5:w {Compr}
- mac (32) acc0<1>:w r[pREF,nGRFWIB*%1+2]<16;8,1>:ub 20:w {Compr}
- mac (32) acc0<1>:w r[pREF,nGRFWIB*%1+3]<16;8,1>:ub 20:w {Compr}
- mac (32) r[pRES,nGRFWIB*%1]<1>:w r[pREF,nGRFWIB*%1+4]<16;8,1>:ub -5:w {Compr}
- }
- // last line
- add (8) acc0<1>:w r[pREF,nGRFWIB*6]<8;8,1>:ub r[pREF,nGRFWIB*6+5]<8;8,1>:ub
- mac (8) acc0<1>:w r[pREF,nGRFWIB*6+1]<8;8,1>:ub -5:w
- mac (8) acc0<1>:w r[pREF,nGRFWIB*6+2]<8;8,1>:ub 20:w
- mac (8) acc0<1>:w r[pREF,nGRFWIB*6+3]<8;8,1>:ub 20:w
- mac (8) r[pRES,nGRFWIB*6]<1>:w r[pREF,nGRFWIB*6+4]<8;8,1>:ub -5:w
-
- // Compute interim/output vertical interpolation
- mov (1) pREF0:ud nOFFSET_INTERIM2:ud {NoDDClr} // set pREF0 and pREF1 at the same time
- mov (1) pREF2D:ud nOFFSET_INTERIM4:ud {NoDDChk,NoDDClr} // set pREF2 and pREF3 at the same time
- (f0.0) sel (1) pRES:uw gpINTPY:uw nOFFSET_INTERIM:uw {NoDDChk} // Case A vs. 69BE
-
- $for(0;<4;2) {
- add (32) acc0<1>:w r[pREF0,nGRFWIB*%1]<16;16,1>:w 512:w {Compr}
- mac (16) acc0<1>:w r[pREF2,nGRFWIB*%1]<8,1>:w -5:w
- mac (16) acc1<1>:w r[pREF2,nGRFWIB*%1+nGRFWIB]<8,1>:w -5:w
- mac (32) acc0<1>:w r[pREF0,nGRFWIB*%1+nGRFWIB]<16;16,1>:w 20:w {Compr}
- mac (16) acc0<1>:w r[pREF2,nGRFWIB*%1+nGRFWIB]<8,1>:w 20:w
- mac (16) acc1<1>:w r[pREF2,nGRFWIB*%1+nGRFWIB+nGRFWIB]<8,1>:w 20:w
- mac (32) acc0<1>:w r[pREF0,(2+%1)*nGRFWIB]<16;16,1>:w -5:w {Compr}
- mac (16) acc0<1>:w r[pREF2,(2+%1)*nGRFWIB]<8,1>:w 1:w
- mac (16) acc1<1>:w r[pREF2,(2+%1)*nGRFWIB+nGRFWIB]<8,1>:w 1:w
- asr.sat (16) r[pRES,nGRFWIB*%1]<2>:ub acc0<16;16,1>:w 10:w
- asr.sat (16) r[pRES,nGRFWIB*%1+nGRFWIB]<2>:ub acc1<16;16,1>:w 10:w {SecHalf}
- }
-
- (f0.0) jmpi INTERLABEL(Return_Interpolate_Y_8x8)
-
-INTERLABEL(Interpolate_Y_H_8x8):
-
- cmp.e.f0.0 (1) null gMVX_FRAC:w 0:w
- cmp.e.f0.1 (1) null gMVY_FRAC:w 2:w
- (f0.0) jmpi INTERLABEL(Interpolate_Y_V_8x8)
- (f0.1) jmpi INTERLABEL(Interpolate_Y_V_8x8)
-
- //-----------------------------------------------------------------------
- // CASE: 123567DEF (H interpolation)
- //-----------------------------------------------------------------------
-
- add (4) pREF0<1>:uw gW0<4;4,1>:uw -2:w
- cmp.g.f0.0 (4) null:w gMVY_FRAC<0;1,0>:w 2:w
- cmp.e.f0.1 (1) null gMVX_FRAC:w 2:w
- (f0.0) add (4) pREF0<1>:uw pREF0<4;4,1>:uw nGRFWIB/2:uw
-
- cmp.e.f0.0 (1) null:w gMVY_FRAC<0;1,0>:w 0:w
-
- (f0.1) sel (1) pRES:uw gpINTPY:uw nOFFSET_INTERIM:uw // Case 26E vs. 1357DF
-
- // Compute interim/output horizontal interpolation
- $for(0;<4;2) {
- add (16) acc0<1>:w r[pREF0,nGRFWIB*%1]<8,1>:ub 16:w
- add (16) acc1<1>:w r[pREF0,nGRFWIB*%1+nGRFWIB]<8,1>:ub 16:w
- mac (16) acc0<1>:w r[pREF0,nGRFWIB*%1+1]<8,1>:ub -5:w
- mac (16) acc1<1>:w r[pREF0,nGRFWIB*%1+1+nGRFWIB]<8,1>:ub -5:w
- mac (16) acc0<1>:w r[pREF0,nGRFWIB*%1+2]<8,1>:ub 20:w
- mac (16) acc1<1>:w r[pREF0,nGRFWIB*%1+2+nGRFWIB]<8,1>:ub 20:w
- mac (16) acc0<1>:w r[pREF0,nGRFWIB*%1+3]<8,1>:ub 20:w
- mac (16) acc1<1>:w r[pREF0,nGRFWIB*%1+3+nGRFWIB]<8,1>:ub 20:w
- mac (16) acc0<1>:w r[pREF0,nGRFWIB*%1+4]<8,1>:ub -5:w
- mac (16) acc1<1>:w r[pREF0,nGRFWIB*%1+4+nGRFWIB]<8,1>:ub -5:w
- mac (16) acc0<1>:w r[pREF0,nGRFWIB*%1+5]<8,1>:ub 1:w
- mac (16) acc1<1>:w r[pREF0,nGRFWIB*%1+5+nGRFWIB]<8,1>:ub 1:w
- asr.sat (16) r[pRES,nGRFWIB*%1]<2>:ub acc0<16;16,1>:w 5:w
- asr.sat (16) r[pRES,nGRFWIB*%1+nGRFWIB]<2>:ub acc1<16;16,1>:w 5:w {SecHalf}
- }
-
- (-f0.1) jmpi INTERLABEL(Interpolate_Y_V_8x8)
- (-f0.0) jmpi INTERLABEL(Average_8x8)
-
- jmpi INTERLABEL(Return_Interpolate_Y_8x8)
-
-INTERLABEL(Interpolate_Y_V_8x8):
-
- cmp.e.f0.0 (1) null gMVY_FRAC:w 0:w
- (f0.0) jmpi INTERLABEL(Interpolate_Y_I_8x8)
-
- //-----------------------------------------------------------------------
- // CASE: 48C59D7BF (V interpolation)
- //-----------------------------------------------------------------------
-
- mov (2) pREF0<1>:uw gW0<4;2,2>:uw {NoDDClr}
- mov (2) pREF2<1>:uw gW1<2;2,1>:uw {NoDDChk,NoDDClr}
- mov (1) pRES:uw gpINTPY:uw {NoDDChk}
-
- cmp.g.f0.1 (4) null:w gMVX_FRAC<0;1,0>:w 2:w
- cmp.e.f0.0 (1) null:w gMVX_FRAC<0;1,0>:w 0:w
- (f0.1) add (4) pREF0<1>:uw pREF0<4;4,1>:uw 1:uw
-
- cmp.e.f0.1 (1) null gMVY_FRAC:w 2:w
- (-f0.0) jmpi INTERLABEL(VFILTER_8x8)
- (-f0.1) mov (1) pRES:uw nOFFSET_INTERIM:uw
-
- INTERLABEL(VFILTER_8x8):
-
- // Compute interim/output vertical interpolation
- $for(0;<4;2) {
- add (32) acc0<1>:w r[pREF0,nGRFWIB*%1-nGRFWIB]<16;8,1>:ub 16:w {Compr}
- mac (16) acc0<1>:w r[pREF2,nGRFWIB*%1-nGRFWIB]<8,1>:ub -5:w
- mac (16) acc1<1>:w r[pREF2,nGRFWIB*%1]<8,1>:ub -5:w
- mac (32) acc0<1>:w r[pREF0,nGRFWIB*%1]<16;8,1>:ub 20:w {Compr}
- mac (16) acc0<1>:w r[pREF2,nGRFWIB*%1]<8,1>:ub 20:w
- mac (16) acc1<1>:w r[pREF2,nGRFWIB*%1+nGRFWIB]<8,1>:ub 20:w
- mac (32) acc0<1>:w r[pREF0,nGRFWIB*%1+nGRFWIB]<16;8,1>:ub -5:w {Compr}
- mac (16) acc0<1>:w r[pREF2,nGRFWIB*%1+nGRFWIB]<8,1>:ub 1:w
- mac (16) acc1<1>:w r[pREF2,nGRFWIB*%1+nGRFWIB+nGRFWIB]<8,1>:ub 1:w
- asr.sat (16) r[pRES,nGRFWIB*%1]<2>:ub acc0<16;16,1>:w 5:w
- asr.sat (16) r[pRES,nGRFWIB*%1+nGRFWIB]<2>:ub acc1<16;16,1>:w 5:w {SecHalf}
- }
-
- (-f0.0) jmpi INTERLABEL(Average_8x8)
- (f0.1) jmpi INTERLABEL(Return_Interpolate_Y_8x8)
-
-INTERLABEL(Interpolate_Y_I_8x8):
-
- //-----------------------------------------------------------------------
- // CASE: 134C (Integer position)
- //-----------------------------------------------------------------------
-
- mov (2) pREF0<1>:uw gW0<2;2,1>:uw {NoDDClr}
-
- mov (1) pRES:uw gpINTPY:uw {NoDDChk}
-
- cmp.e.f0.0 (2) null:w gMVX_FRAC<0;1,0>:w 3:w
- cmp.e.f0.1 (2) null:w gMVY_FRAC<0;1,0>:w 3:w
- (f0.0) add (2) pREF0<1>:uw pREF0<2;2,1>:uw 1:uw
- (f0.1) add (2) pREF0<1>:uw pREF0<2;2,1>:uw nGRFWIB/2:uw
-
- mov (16) r[pRES]<1>:uw r[pREF0]<8,1>:ub
- mov (16) r[pRES,nGRFWIB]<1>:uw r[pREF0,nGRFWIB]<8,1>:ub
- mov (16) r[pRES,nGRFWIB*2]<1>:uw r[pREF0,nGRFWIB*2]<8,1>:ub
- mov (16) r[pRES,nGRFWIB*3]<1>:uw r[pREF0,nGRFWIB*3]<8,1>:ub
-
-INTERLABEL(Average_8x8):
-
- //-----------------------------------------------------------------------
- // CASE: 13456789BCDEF (Average)
- //-----------------------------------------------------------------------
-
- // Average two interim results
- avg.sat (16) r[pRES,0]<2>:ub r[pRES,0]<32;16,2>:ub gubINTERIM_BUF(0)
- avg.sat (16) r[pRES,nGRFWIB]<2>:ub r[pRES,nGRFWIB]<32;16,2>:ub gubINTERIM_BUF(1)
- avg.sat (16) r[pRES,nGRFWIB*2]<2>:ub r[pRES,nGRFWIB*2]<32;16,2>:ub gubINTERIM_BUF(2)
- avg.sat (16) r[pRES,nGRFWIB*3]<2>:ub r[pRES,nGRFWIB*3]<32;16,2>:ub gubINTERIM_BUF(3)
-
-INTERLABEL(Return_Interpolate_Y_8x8):
- // Restore all address registers
- mov (8) a0<1>:w gpADDR<8;8,1>:w
-
-INTERLABEL(Exit_Interpolate_Y_8x8):
-
-// end of file
diff --git a/src/shaders/h264/mc/intra_Header.inc b/src/shaders/h264/mc/intra_Header.inc
deleted file mode 100644
index 5302cb2..0000000
--- a/src/shaders/h264/mc/intra_Header.inc
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
- * Header file for all AVC intra prediction kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__INTRA_HEADER__) // Make sure this file is only included once
-#define __INTRA_HEADER__
-
-// Module name: intra_header.inc
-//
-// Header file for all AVC intra prediction kernels
-//
-// This header file defines everything that's specific to intra macroblock kernels
-
-
-// ----------- Various data buffers and pointers ------------
-//
-// I_PCM data buffer
-//
-#define I_PCM_BUF_Y 4
-#define I_PCM_BUF_UV 12
-
-#define REG_I_PCM_BUF_Y r4
-#define REG_I_PCM_BUF_UV r12
-
-.declare I_PCM_Y Base=REG_I_PCM_BUF_Y ElementSize=1 SrcRegion=REGION(16,1) Type=ub // 8-bit I_PCM Y data
-.declare I_PCM_UV Base=REG_I_PCM_BUF_UV ElementSize=1 SrcRegion=REGION(16,1) Type=ub // 8-bit I_PCM U/V data
-
-// Intra macroblock error data blocks
-//
-#define ERRBUF 4 // Starting GRF index for error data
-#define REG_ERRBUF r4
-.declare MBBLOCKW Base=REG_ERRBUF ElementSize=2 SrcRegion=REGION(16,1) Type=w // For 16-bit inter MB
-.declare MBBLOCKD Base=REG_ERRBUF ElementSize=2 SrcRegion=REGION(16,1) Type=uw // For use in "send" command
-
-#define PERROR a0.2 // Pointer to macroblock error data
-#define PERROR1 a0.3 // Pointer to macroblock error data used by instruction compression
-#define PERROR_UD a0.1 // Pointer to macroblock error data in DWORD unit
-
-// Intra macroblock reference data
-//
-#define REG_INTRA_REF_TOP r49 // Must be an odd numbered GRF register
-.declare INTRA_REF_TOP0 Base=REG_INTRA_REF_TOP ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-.declare INTRA_REF_TOP Base=REG_INTRA_REF_TOP.4 ElementSize=1 SrcRegion=REGION(16,1) Type=ub
- // Actual top row reference data start at offset 4 in BYTE
-.declare INTRA_REF_TOP_W Base=REG_INTRA_REF_TOP.2 ElementSize=2 SrcRegion=REGION(16,1) Type=uw
- // Actual top row reference data start at offset 2 in WORD
-.declare INTRA_REF_TOP_D Base=REG_INTRA_REF_TOP ElementSize=4 DstRegion=<1> Type=ud // Only used in "send" instruction
-
-#define INTRA_REF_LEFT_ID 50
-#define REG_INTRA_REF_LEFT r50
-.declare INTRA_REF_LEFT0 Base=REG_INTRA_REF_LEFT ElementSize=1 SrcRegion=REGION(8,4) Type=ub
-.declare INTRA_REF_LEFT Base=REG_INTRA_REF_LEFT.3 ElementSize=1 SrcRegion=REGION(8,4) Type=ub
- // Actual left column reference data are located at offset 3 in BYTE
-.declare INTRA_REF_LEFT_UV Base=REG_INTRA_REF_LEFT.2 ElementSize=1 SrcRegion=REGION(8,4) Type=ub
- // Actual left column U/V reference data are located at offset 2 in BYTE
-.declare INTRA_REF_LEFT_W Base=REG_INTRA_REF_LEFT.1 ElementSize=2 SrcRegion=REGION(8,2) Type=uw
- // Actual left column reference data are located at offset 1 in WORD
-.declare INTRA_REF_LEFT_D Base=REG_INTRA_REF_LEFT ElementSize=4 DstRegion=<1> Type=ud // Only used in "send" instruction
-
-#define PREF_LEFT a0.4 // Pointer to left reference data
-#define PREF_LEFT_UD a0.2 // Pointer in DWORD to left reference data
-
-#define INTRA_TEMP_0 52
-#define INTRA_TEMP_1 53
-#define INTRA_TEMP_2 54
-#define INTRA_TEMP_3 55
-#define INTRA_TEMP_4 56
-#define INTRA_TEMP_5 57
-#define INTRA_TEMP_6 58
-
-#define REG_INTRA_TEMP_0 r52
-#define REG_INTRA_TEMP_1 r53
-#define REG_INTRA_TEMP_2 r54
-#define REG_INTRA_TEMP_3 r55
-#define REG_INTRA_TEMP_4 r56
-#define REG_INTRA_TEMP_5 r57
-#define REG_INTRA_TEMP_6 r58
-#define REG_INTRA_TEMP_7 r59
-#define REG_INTRA_TEMP_8 r60
-
-// Destination registers for write commit
-#define REG_WRITE_COMMIT_Y r60.0
-#define REG_WRITE_COMMIT_UV r61.0
-
-// ----------- Various data buffers and pointers ------------
-// R32 - R47 for predicted picture buffer (for both Y and U/V blocks)
-//
-#define PREDBUF 32 // Starting GRF index for predicted buffer
-#define REG_PREDBUF r32
-
-.declare PRED_Y Base=REG_PREDBUF ElementSize=1 SrcRegion=REGION(16,1) Type=ub // Predicted Y picture
-.declare PRED_YW Base=REG_PREDBUF ElementSize=2 SrcRegion=REGION(16,1) Type=uw // Predicted Y picture stored in WORD
-.declare PRED_Y_FM Base=REG_PREDBUF ElementSize=1 SrcRegion=REGION(16,1) Type=ub // Predicted Y picture frame
-.declare PRED_Y_TF Base=REG_PREDBUF ElementSize=1 SrcRegion=REGION(16,1) Type=ub // Predicted Y picture Top field
-
-.declare PRED_UV Base=REG_PREDBUF ElementSize=1 SrcRegion=REGION(16,1) Type=ub // Predicted U/V picture
-.declare PRED_UVW Base=REG_PREDBUF ElementSize=2 SrcRegion=REGION(16,1) Type=uw // Predicted U/V picture stored in WORD
-.declare PRED_UV_FM Base=REG_PREDBUF ElementSize=1 SrcRegion=REGION(16,1) Type=ub // Predicted U/V picture frame
-.declare PRED_UV_TF Base=REG_PREDBUF ElementSize=1 SrcRegion=REGION(16,1) Type=ub // Predicted U/V picture top field
-.declare PRED_UV_BF Base=REG_PREDBUF.16 ElementSize=1 SrcRegion=REGION(16,1) Type=ub // Predicted U/V picture bottom field
-
-// The same region will also be used as finally decoded Y blocks shared with U/V blocks
-//
-#define DECBUF 32
-#define REG_DECBUF r32
-.declare DEC_Y Base=REG_DECBUF ElementSize=1 SrcRegion=REGION(16,1) Type=ub // Decoded Y picture
-.declare DEC_UV Base=REG_DECBUF ElementSize=1 SrcRegion=REGION(16,1) Type=ub // Decoded U/V P-/B-picture
-.declare DEC_UD Base=REG_DECBUF ElementSize=4 SrcRegion=REGION(8,1) Type=ud // Decoded buffer in UD type
-
-// Reference buffer for intra_NxN prediction
-//
-#define PRED_MODE REG_INTRA_TEMP_0
-.declare REF_TOP0 Base=REG_INTRA_TEMP_5 ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-.declare REF_TOP Base=REG_INTRA_TEMP_5.4 ElementSize=1 SrcRegion=REGION(16,1) Type=ub
- // Actual top reference data start from offset 3,i.e. p[-1,-1]
-.declare REF_TOP_W Base=REG_INTRA_TEMP_5 ElementSize=2 SrcRegion=REGION(16,1) Type=uw
-.declare REF_TOP_D Base=REG_INTRA_TEMP_5 ElementSize=4 SrcRegion=REGION(8,1) Type=ud
-.declare REF_LEFT Base=REG_INTRA_TEMP_6 ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-.declare REF_LEFT_D Base=REG_INTRA_TEMP_6 ElementSize=4 SrcRegion=REGION(8,1) Type=ud
-
-// For intra prediction plane mode
-//
-.declare H1 Base=REG_INTRA_TEMP_0 ElementSize=2 SrcRegion=REGION(8,1) Type=w // Make sure it's an even GRF
-.declare H2 Base=REG_INTRA_TEMP_0.8 ElementSize=2 SrcRegion=REGION(8,1) Type=w
-.declare V1 Base=REG_INTRA_TEMP_1 ElementSize=2 SrcRegion=REGION(8,1) Type=w // Make sure it's the following odd GRF
-.declare V2 Base=REG_INTRA_TEMP_1.8 ElementSize=2 SrcRegion=REGION(8,1) Type=w
-
-.declare CP Base=REG_INTRA_TEMP_2 ElementSize=2 SrcRegion=REGION(16,1) Type=w
-
-#define PINTRAPRED_Y a0.7 // Used as luma intra prediction mode pointer
-#define PINTRAPRED_UV a0.7 // Used as chroma intra prediction mode pointer
-#define PINTRA4X4_Y a0.4 // Used as luma intra_4x4 prediction mode pointer
-
-#define PBWDCOPY_4 a0.4 // a0.4 - a0.7 used in intra_4x4 prediction for moving data backward
-#define PBWDCOPY_8 a0.6 // a0.6 - a0.7 used in intra_8x8 prediction for moving data backward
-
-// For Intra_4x4 prediction mode
-//
-.declare INTRA_4X4_MODE Base=REG_INTRA_TEMP_1 ElementSize=4 SrcRegion=REGION(1,0) DstRegion=<1> Type=d // Actually only need 1 DWORD
-
-// ----------- Intra CURBE constants ------------
-//
-#define REG_CURBE1 r1
-#define REG_CURBE2 r2
-#define INTRA_4X4_OFFSET 1*GRFWIB // 9 Bytes
-#define INTRA_8X8_OFFSET 1*GRFWIB+12 // 9 Bytes starting sub-register r1.3:ud
-#define INTRA_16X16_OFFSET 1*GRFWIB+24 // 4 Bytes starting sub-register r1.6:ud
-#define INTRA_CHROMA_OFFSET 1*GRFWIB+28 // 4 Bytes starting sub-register r1.7:ud
-
-#define TOP_REF_OFFSET REG_CURBE1.10 // r1.5:w
-
-// Constants used in plane intra prediction mode
-#define XY_3 REG_CURBE2.4 // Stored BYTE constants x-3 for x=0...7, i.e. -3,-2,...3,4 for U/V, need duplicate to every other byte
-#define XY_3_1 REG_CURBE2.5 // Stored BYTE constants x-3 for x=0...7, i.e. -3,-2,...3,4 for 2nd instruction in {Comp}
-#define XY_7 REG_CURBE2.0 // Stored BYTE constants x-7 for x=0...15, i.e. -7,-6,...7,8 for Y
-#define XY_7_1 REG_CURBE2.1 // Stored BYTE constants x-7 for x=0...15, i.e. -7,-6,...7,8 for 2nd instruction in {Comp}
-
-#define INV_SHIFT REG_CURBE2.16
-
-#define INV_TRANS4 REG_CURBE2.20 // For reverse data transfer for intra_4x4 (0x00020406)
-#define INV_TRANS48 REG_CURBE2.22 // For reverse data transfer for intra_4x4 (0x0002)
-#define INV_TRANS8 REG_CURBE1.22 // For reverse data transfer for intra_8x8 (0x0001)
-
-#define INTRA_MODE REG_CURBE2.24 // Offset to intra_Pred_4x4_Y from each sub-block
-
-// ----------- In-line parameters ------------
-//
-#define REG_INLINE r3
-
-#define INLINE_DW0 REG_INLINE.0<0;1,0>:ud
-#define INLINE_DW1 REG_INLINE.1<0;1,0>:ud
-#define INLINE_DW2 REG_INLINE.2<0;1,0>:ud
-#define INLINE_DW3 REG_INLINE.3<0;1,0>:ud
-#define INLINE_DW4 REG_INLINE.4<0;1,0>:ud
-#define INLINE_DW5 REG_INLINE.5<0;1,0>:ud
-#define INLINE_DW6 REG_INLINE.6<0;1,0>:ud
-#define INLINE_DW7 REG_INLINE.7<0;1,0>:ud
-
-// Intra macroblock in-line data
-//
-// In-line DWORD 0
-#define REG_MBAFF_FIELD REG_INLINE.1 // :uw, can be added directly to lower-word of MSGDSC
-#define MBAFF_FIELD BIT26+BIT25 // Bits 26:25 - MBAFF field macroblock flag
- // 00 = Current macroblock is not an MBAFF field macroblock
- // 11 = Current macroblock is an MBAFF field macroblock
-
-#define REG_FIELD_PARITY INLINE_DW0
-#define FIELD_PARITY BIT24 // Bit 24 - Macroblock field parity flag
- // 0 = Current field is a top field
- // 1 = Current field is a bottom field
-
-#define REG_FIELD_MACROBLOCK_FLAG INLINE_DW0
-#define FIELD_MACROBLOCK_FLAG BIT14 // Bit 14 - Field macroblock flag
- // 0 = Current macroblock is not a field macroblock
- // 1 = Current macroblock is a field macroblock
-#define REG_MACROBLOCK_TYPE INLINE_DW0
-#define MACROBLOCK_TYPE BIT12+BIT11+BIT10+BIT9+BIT8 // Bit 12:8 - Intra macroblock flag
-
-#define REG_CHROMA_FORMAT_IDC INLINE_DW0
-#define CHROMA_FORMAT_IDC BIT3+BIT2 // Bit 3:2 - Chroma format
- // 00 = Luma only (Monochrome)
- // 01 = YUV420
- // 10 = YUV422
- // 11 = YUV444
-#define REG_MBAFF_PIC INLINE_DW0
-#define MBAFF_PIC BIT1 // Bit 1 - MBAFF Frame picture
- // 0 = Not an MBAFF frame picture
- // 1 = An MBAFF frame picture
-#define REG_INTRA_PRED_8X8_BLK2_AVAIL_FLAG INLINE_DW0
-#define INTRA_PRED_8X8_BLK2_AVAIL_FLAG BIT4 // Bit 4: Pixel available for block 2 in an intra_8x8 MB.
-
-// In-line DWORD 1
-#define ORIX REG_INLINE.4 // :ub, H. origin of the macroblock in macroblock unit
-#define ORIY REG_INLINE.5 // :ub, V. origin of the macroblock in macroblock unit
-
-// In-line DWORD 2
-#define REG_CBPCYB REG_INLINE.9 // :ub, Coded block pattern
-#define REG_CBPCY INLINE_DW2 // Bits 13:8 - Coded block pattern
- // reflect Y0, Y1, Y2, Y3, Cb4, Cr5
- // Bit 13 - Y0
- // Bit 12 - Y1
- // Bit 11 - Y2
- // Bit 10 - Y3
- // Bit 9 - U4
- // Bit 8 - V5
-#define CBP_MASK 0x3F00:ud // Bit mask for all CBP bits
-#define CBP_Y_MASK 0x3C00:ud // Bit mask for CBP Y bits
-#define CBP_UV_MASK 0x0300:ud // Bit mask for CBP U/V bits
-
-#define CBP_Y0_MASK BIT13:ud // Bit mask for CBP Y0 bit
-#define CBP_Y1_MASK BIT12:ud // Bit mask for CBP Y1 bit
-#define CBP_Y2_MASK BIT11:ud // Bit mask for CBP Y2 bit
-#define CBP_Y3_MASK BIT10:ud // Bit mask for CBP Y3 bit
-#define CBP_U_MASK BIT9:ud // Bit mask for CBP U bit
-#define CBP_V_MASK BIT8:ud // Bit mask for CBP V bit
-
-// In-line DWORD 3
-#define REG_INTRA_CHROMA_PRED_MODE REG_INLINE.12 // :ub - Intra chroma prediction mode
-#define INTRA_CHROMA_PRED_MODE BIT7+BIT6 // Bit 7:6 - Intra chroma prediction mode
- // 00 = Intra DC prediction
- // 01 = Intra horizontal prediction
- // 10 = Intra vertical prediction
- // 11 = Intra plane prediction
-#define INTRA_CHROMA_PRED_MODE_SHIFT 6 // Intra chroma prediction mode shift
-
-#define REG_INTRA_PRED_AVAIL_FLAG INLINE_DW3
-#define INTRA_PRED_AVAIL_FLAG BIT4+BIT3+BIT2+BIT1+BIT0 // Bits 4:0 - Intra prediction available flag
- // Bit 0: Macroblock A (the left neighbor) entire or top half
- // Bit 1: Macroblock B (the upper neighbor)
- // Bit 2: Macroblock C (the above-right neighbor)
- // Bit 3: Macroblock D (the above-left neighbor)
- // Bit 4: Macroblock A (the left neighbor) bottom half
- // Each bit is defined below
- // 0 = The macroblock is not available for intra prediction
- // 1 = The macroblock is available for intra prediction
-#define INTRA_PRED_LEFT_TH_AVAIL_FLAG BIT0 // Bit 0: Macroblock A (the left neighbor) entire or top half
-#define INTRA_PRED_UP_AVAIL_FLAG BIT1 // Bit 1: Macroblock B (the upper neighbor)
-#define INTRA_PRED_UP_RIGHT_AVAIL_FLAG BIT2 // Bit 2: Macroblock C (the above-right neighbor)
-#define INTRA_PRED_UP_LEFT_AVAIL_FLAG BIT3 // Bit 3: Macroblock D (the above-left neighbor)
-#define INTRA_PRED_LEFT_BH_AVAIL_FLAG BIT4 // Bit 4: Macroblock A (the left neighbor) bottom half
-//#define INTRA_PRED_8X8_BLK2_AVAIL_FLAG BIT5 // Bit 5: Pixel available for block 2 in an intra_8x8 MB.
-#define REG_INTRA_PRED_AVAIL_FLAG_BYTE REG_INLINE.12 // Byte location of Intra_Pred_Avail_Flag
-#define REG_INTRA_PRED_AVAIL_FLAG_WORD REG_INLINE.6 // Word location of Intra_Pred_Avail_Flag
-
-
-.declare INTRA_PRED_MODE Base=REG_INLINE.16 ElementSize=1 SrcRegion=REGION(16,1) Type=ub // Intra prediction mode
-
-// End of intra_header.inc
-
-#endif // !defined(__INTRA_HEADER__)
-
diff --git a/src/shaders/h264/mc/intra_Pred_4x4_Y_4.asm b/src/shaders/h264/mc/intra_Pred_4x4_Y_4.asm
deleted file mode 100644
index e5d6845..0000000
--- a/src/shaders/h264/mc/intra_Pred_4x4_Y_4.asm
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * Intra predict 4 Intra_4x4 luma blocks
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__INTRA_PRED_4X4_Y_4__) // Make sure this is only included once
-#define __INTRA_PRED_4X4_Y_4__
-
-// Module name: intra_Pred_4x4_Y_4.asm
-//
-// Intra predict 4 Intra_4x4 luma blocks
-//
-//--------------------------------------------------------------------------
-// Input data:
-//
-// REF_TOP: Top reference data stored in BYTE with p[-1,-1] at REF_TOP(0,-1)
-// REF_LEFT: Left reference data stored in BYTE with p[-1,0] at REF_LEFT(0,0)
-// PRED_MODE: Intra prediction mode stored in 4 words (4 LSB)
-// REG_INTRA_PRED_AVAIL: Top/Left available flag, (Bit0: Left, Bit1: Top)
-//
-//--------------------------------------------------------------------------
-
-#undef INTRA_PRED_AVAIL
-#undef INTRA_REF
-#undef REF_LEFT_BACK
-#undef REF_TMP
-#undef REF_TMP1
-
-#define INTRA_PRED_AVAIL REG_INTRA_TEMP_2.8
-#define INTRA_REF REG_INTRA_TEMP_2
-#define REF_LEFT_BACK REG_INTRA_TEMP_8
-#define REF_TMP REG_INTRA_TEMP_3
-#define REF_TMP1 REG_INTRA_TEMP_4
-
-intra_Pred_4x4_Y_4:
-
- mov (8) REF_LEFT_BACK<1>:ub REF_LEFT(0)REGION(8,1) // Store left referece data
-// Set up pointers to each intra_4x4 prediction mode
-//
- and (4) PINTRA4X4_Y<1>:w PRED_MODE<4;4,1>:w 0x0F:w
- add (4) INTRA_4X4_MODE(0) r[PINTRA4X4_Y, INTRA_4X4_OFFSET]<1,0>:ub INTRA_MODE<4;4,1>:ub
-
-// Sub-block 0 *****************
- mov (1) INTRA_PRED_AVAIL<1>:w REG_INTRA_PRED_AVAIL<0;1,0>:w // Top/Left neighbor available flags
- CALL_1(INTRA_4X4_MODE(0),1)
-
-// Add error data to predicted intra data
-ADD_ERROR_SB0:
- add.sat (8) r[PPREDBUF_Y,PREDSUBBLK0]<2>:ub r[PERROR,ERRBLK0]<8;4,1>:w REG_INTRA_4X4_PRED<8;8,1>:w // Too bad indexed src can't
- add.sat (8) r[PPREDBUF_Y,PREDSUBBLK0+16]<2>:ub r[PERROR,ERRBLK0+32]<8;4,1>:w REG_INTRA_4X4_PRED.8<8;8,1>:w // cross 2 GRFs
-
-// Sub-block 1 *****************
- mov (16) REF_TOP0(0)<1> REF_TOP0(0,4)REGION(8,1) // Top reference data
- mov (4) REF_LEFT(0)<1> r[PPREDBUF_Y,PREDSUBBLK0+6]<8;1,0>:ub // New left referece data from sub-block 0
- or (1) INTRA_PRED_AVAIL<1>:w REG_INTRA_PRED_AVAIL<0;1,0>:w 1:w // Left neighbor is available
- CALL_1(INTRA_4X4_MODE(0,1),1)
-
-// Add error data to predicted intra data
-ADD_ERROR_SB1:
- add.sat (8) r[PPREDBUF_Y,PREDSUBBLK1]<2>:ub r[PERROR,ERRBLK1]<8;4,1>:w REG_INTRA_4X4_PRED<8;8,1>:w // Too bad indexed src can't
- add.sat (8) r[PPREDBUF_Y,PREDSUBBLK1+16]<2>:ub r[PERROR,ERRBLK1+32]<8;4,1>:w REG_INTRA_4X4_PRED.8<8;8,1>:w // cross 2 GRFs
-
-// Sub-block 2 *****************
- mov (1) REF_TOP0(0,3)<1> REF_LEFT_BACK.3<0;1,0>:ub // Top-left reference data from stored left referece data
- mov (4) REF_TOP0(0,4)<1> r[PPREDBUF_Y,PREDSUBBLK0+24]REGION(4,2):ub // Top reference data
- mov (4) REF_TOP0(0,8)<1> r[PPREDBUF_Y,PREDSUBBLK0+24+32]REGION(4,2):ub // Too bad indexed src can't cross 2 GRFs
- mov (4) REF_TOP0(0,12)<1> r[PPREDBUF_Y,PREDSUBBLK0+30+32]REGION(1,0):ub // Extended top-right reference data
- mov (4) REF_LEFT(0)<1> REF_LEFT_BACK.4<4;4,1>:ub // From stored left referece data
- or (1) INTRA_PRED_AVAIL<1>:w REG_INTRA_PRED_AVAIL<0;1,0>:w 2:w // Top neighbor is available
- CALL_1(INTRA_4X4_MODE(0,2),1)
-
-// Add error data to predicted intra data
-ADD_ERROR_SB2:
- add.sat (8) r[PPREDBUF_Y,PREDSUBBLK2]<2>:ub r[PERROR,ERRBLK2]<8;4,1>:w REG_INTRA_4X4_PRED<8;8,1>:w // Too bad indexed src can't
- add.sat (8) r[PPREDBUF_Y,PREDSUBBLK2+16]<2>:ub r[PERROR,ERRBLK2+32]<8;4,1>:w REG_INTRA_4X4_PRED.8<8;8,1>:w // cross 2 GRFs
-
-// Sub-block 3 *****************
- mov (16) REF_TOP0(0)<1> REF_TOP0(0,4)REGION(8,1) // Top reference data
- mov (8) REF_TOP0(0,8)<1> REF_TOP0(0,7)<0;1,0> // Extended top-right reference data
- mov (4) REF_LEFT(0)<1> r[PPREDBUF_Y,PREDSUBBLK2+6]<8;1,0>:ub // Left referece data from sub-block 0
- or (1) INTRA_PRED_AVAIL<1>:w REG_INTRA_PRED_AVAIL<0;1,0>:w 3:w // Top/Left neighbor are available
- CALL_1(INTRA_4X4_MODE(0,3),1)
-
-// Add error data to predicted intra data
-ADD_ERROR_SB3:
- add.sat (8) r[PPREDBUF_Y,PREDSUBBLK3]<2>:ub r[PERROR,ERRBLK3]<8;4,1>:w REG_INTRA_4X4_PRED<8;8,1>:w // Too bad indexed src can't
- add.sat (8) r[PPREDBUF_Y,PREDSUBBLK3+16]<2>:ub r[PERROR,ERRBLK3+32]<8;4,1>:w REG_INTRA_4X4_PRED.8<8;8,1>:w // cross 2 GRFs
-
- RETURN
-
-//--------------------------------------------------------------------------
-// Actual module that performs Intra_4x4 prediction and construction
-//
-// REF_TOP: Top reference data stored in BYTE with p[-1,-1] at REF_TOP(0,-1)
-// REF_LEFT: Left reference data stored in BYTE with p[-1,0] at REF_LEFT(0,0)
-// PINTRA4X4_Y: Intra prediction mode
-// INTRA_PRED_AVAIL: Top/Left available flag, (Bit0: Left, Bit1: Top)
-//
-// Output data:
-//
-// REG_INTRA_4X4_PRED: Predicted 4x4 block data stored in 1 GRF register
-//--------------------------------------------------------------------------
-intra_Pred_4x4_Y:
-// Mode 0
-INTRA_4X4_VERTICAL:
- mov (16) REG_INTRA_4X4_PRED<1>:w REF_TOP(0)<0;4,1>
- RETURN_1
-
-// Mode 1
-INTRA_4X4_HORIZONTAL:
- mov (16) REG_INTRA_4X4_PRED<1>:w REF_LEFT(0)<1;4,0>
- RETURN_1
-
-// Mode 2
-INTRA_4X4_DC:
-// Rearrange reference samples for unified DC prediction code
-//
- and.nz.f0.0 (16) NULLREG INTRA_PRED_AVAIL<0;1,0>:w 2:w {Compr}
- and.nz.f0.1 (16) NULLREG INTRA_PRED_AVAIL<0;1,0>:w 1:w {Compr}
- (-f0.0.any16h) mov (16) REF_TOP_W(0)<1> 0x8080:uw // Top macroblock not available for intra prediction
- (-f0.1.any8h) mov (8) REF_LEFT(0)<1> REF_TOP(0)REGION(8,1) // Left macroblock not available for intra prediction
- (-f0.0.any8h) mov (8) REF_TOP(0)<1> REF_LEFT(0)REGION(8,1) // Top macroblock not available for intra prediction
-// Perform DC prediction
-//
- add (4) PRED_YW(15)<1> REF_TOP(0)REGION(4,1) REF_LEFT(0)REGION(4,1)
- add (2) PRED_YW(15)<1> PRED_YW(15)REGION(2,1) PRED_YW(15,2)REGION(2,1)
- add (16) acc0<1>:w PRED_YW(15)REGION(1,0) PRED_YW(15,1)REGION(1,0)
- add (16) acc0<1>:w acc0:w 4:w
- shr (16) REG_INTRA_4X4_PRED<1>:w acc0:w 3:w
- RETURN_1
-
-// Mode 3
-INTRA_4X4_DIAG_DOWN_LEFT:
- mov (8) INTRA_REF<1>:ub REF_TOP(0)REGION(8,1) // Keep REF_TOP untouched for future use
- mov (4) INTRA_REF.8<1>:ub REF_TOP(0,7)REGION(4,1) // p[8,-1] = p[7,-1]
- add (8) acc0<1>:w INTRA_REF.2<8;8,1> 2:w // p[x+2]+2
- mac (8) acc0<1>:w INTRA_REF.1<8;8,1> 2:w // 2*p[x+1]+p[x+2]+2
- mac (8) PRED_YW(15)<1> INTRA_REF.0<8;8,1> 1:w // p[x]+2*p[x+1]+p[x+2]+2
-
- shr (16) REG_INTRA_4X4_PRED<1>:w PRED_YW(15)<1;4,1> 2:w // (p[x]+2*p[x+1]+p[x+2]+2)>>2
- RETURN_1
-
-// Mode 4
-INTRA_4X4_DIAG_DOWN_RIGHT:
-
-// Set inverse shift count
- shl (4) REF_TMP<1>:ud REF_LEFT_D(0)REGION(1,0) INV_SHIFT<4;4,1>:b
- mov (8) INTRA_REF.4<1>:ub REF_TOP(0,-1)REGION(8,1) // INTRA_REF holds all reference data
- mov (4) INTRA_REF<1>:ub REF_TMP.3<16;4,4>:ub
-
- add (8) acc0<1>:w INTRA_REF.2<8;8,1>:ub 2:w // p[x+2]+2
- mac (8) acc0<1>:w INTRA_REF.1<8;8,1>:ub 2:w // 2*p[x+1]+p[x+2]+2
- mac (8) INTRA_REF<1>:w INTRA_REF<8;8,1>:ub 1:w // p[x]+2*p[x+1]+p[x+2]+2
-
-// Store data in reversed order
- add (4) PBWDCOPY_4<1>:w INV_TRANS4<4;4,1>:b INTRA_TEMP_2*GRFWIB:w // Must match with INTRA_REF
- shr (16) REG_INTRA_4X4_PRED<1>:w r[PBWDCOPY_4]<4,1>:w 2:w
- RETURN_1
-
-// Mode 5
-INTRA_4X4_VERT_RIGHT:
-
-// Set inverse shift count
- shl (4) REF_TMP<1>:ud REF_LEFT_D(0)REGION(1,0) INV_SHIFT<4;4,1>:b
- mov (8) INTRA_REF.4<1>:ub REF_TOP(0,-1)REGION(8,1) // INTRA_REF holds all reference data
- mov (4) INTRA_REF<1>:ub REF_TMP.3<16;4,4>:ub
-
- // Even rows
- avg (8) PRED_YW(14)<1> INTRA_REF.4<8;8,1> INTRA_REF.5<8;8,1> // avg(p[x-1],p[x])
- // Odd rows
- add (8) acc0<1>:w INTRA_REF.3<8;8,1>:ub 2:w // p[x]+2
- mac (8) acc0<1>:w INTRA_REF.2<8;8,1>:ub 2:w // 2*p[x-1]+p[x]+2
- mac (8) acc0<1>:w INTRA_REF.1<8;8,1>:ub 1:w // p[x-2]+2*p[x-1]+p[x]+2
- shr (8) INTRA_REF<1>:w acc0:w 2:w // (p[x-2]+2*p[x-1]+p[x]+2)>>2
-
- mov (4) INTRA_REF.2<2>:w INTRA_REF.2<4;4,1>:w // Keep zVR = -2,-3 unchanged
- mov (4) INTRA_REF.3<2>:w PRED_YW(14)REGION(4,1) // Combining even rows
-
- add (4) PBWDCOPY_4<1>:w INV_TRANS4<4;4,1>:b INTRA_TEMP_2*GRFWIB:w // Must match with INTRA_REF
- mov (16) REG_INTRA_4X4_PRED<1>:w r[PBWDCOPY_4]<4,2>:w
- RETURN_1
-
-// Mode 6
-INTRA_4X4_HOR_DOWN:
-// Set inverse shift count
- shl (4) REF_TMP<1>:ud REF_LEFT_D(0)REGION(1,0) INV_SHIFT<4;4,1>:b
- mov (8) INTRA_REF.4<1>:ub REF_TOP(0,-1)REGION(8,1) // INTRA_REF holds all reference data
- mov (4) INTRA_REF<1>:ub REF_TMP.3<16;4,4>:ub
-
- // Even pixels
- avg (8) PRED_YW(14)<1> INTRA_REF<8;8,1> INTRA_REF.1<8;8,1> // avg(p[y-1],p[y])
- // Odd pixels
- add (8) acc0<1>:w INTRA_REF.2<8;8,1>:ub 2:w // p[y]+2
- mac (8) acc0<1>:w INTRA_REF.1<8;8,1>:ub 2:w // 2*p[y-1]+p[y]+2
- mac (8) REF_TMP<1>:w INTRA_REF.0<8;8,1>:ub 1:w // p[y-2]+2*p[y-1]+p[y]+2
- shr (4) INTRA_REF.1<2>:w REF_TMP<4;4,1>:w 2:w // (p[y-2]+2*p[y-1]+p[y]+2)>>2
-
- shr (2) INTRA_REF.8<1>:w REF_TMP.4<2;2,1>:w 2:w // Keep zVR = -2,-3 unchanged
- mov (4) INTRA_REF.0<2>:w PRED_YW(14)REGION(4,1) // Combining even pixels
-
- shl (4) PBWDCOPY_4<1>:w INV_TRANS4<4;4,1>:b 1:w // Convert to WORD offset
- add (4) PBWDCOPY_4<1>:w PBWDCOPY_4<4;4,1>:w INTRA_TEMP_2*GRFWIB:w // Must match with INTRA_REF
- mov (16) REG_INTRA_4X4_PRED<1>:w r[PBWDCOPY_4]<4,1>:w
- RETURN_1
-
-// Mode 7
-INTRA_4X4_VERT_LEFT:
- // Even rows
- avg (8) PRED_YW(14)<2> REF_TOP(0)REGION(8,1) REF_TOP(0,1)REGION(8,1) // avg(p[x],p[x+1])
- // Odd rows
- add (8) acc0<1>:w REF_TOP(0,2)REGION(8,1) 2:w // p[x+2]+2
- mac (8) acc0<1>:w REF_TOP(0,1)REGION(8,1) 2:w // 2*p[x+1]+p[x+2]+2
- mac (8) PRED_YW(15)<1> REF_TOP(0)REGION(8,1) 1:w // p[x]+2*p[x+1]+p[x+2]+2
- shr (8) PRED_YW(14,1)<2> PRED_YW(15)REGION(8,1) 2:w
-
- mov (16) REG_INTRA_4X4_PRED<1>:w PRED_YW(14)<1;4,2>
- RETURN_1
-
-// Mode 8
-INTRA_4X4_HOR_UP:
-// Set extra left reference pixels for unified prediction
- mov (8) REF_LEFT(0,4)<1> REF_LEFT(0,3)REGION(1,0) // Copy p[-1,3] to p[-1,y],y=4...7
- // Even pixels
- avg (8) PRED_YW(14)<2> REF_LEFT(0)REGION(8,1) REF_LEFT(0,1)REGION(8,1) // avg(p[y],p[y+1])
- // Odd pixels
- add (8) acc0<1>:w REF_LEFT(0,2)REGION(8,1) 2:w // p[y+2]+2
- mac (8) acc0<1>:w REF_LEFT(0,1)REGION(8,1) 2:w // 2*p[y+1]+p[y+2]+2
- mac (8) PRED_YW(15)<1> REF_LEFT(0)REGION(8,1) 1:w // p[y]+2*p[y+1]+p[y+2]+2
- shr (8) PRED_YW(14,1)<2> PRED_YW(15)REGION(8,1) 2:w // (p[y]+2*p[y+1]+p[y+2]+2)>>2
-
- mov (16) REG_INTRA_4X4_PRED<1>:w PRED_YW(14)<2;4,1>
- RETURN_1
-
-// End of intra_Pred_4x4_Y_4
-
-#endif // !defined(__INTRA_PRED_4X4_Y_4__)
diff --git a/src/shaders/h264/mc/intra_Pred_8x8_Y.asm b/src/shaders/h264/mc/intra_Pred_8x8_Y.asm
deleted file mode 100644
index 6cdf77d..0000000
--- a/src/shaders/h264/mc/intra_Pred_8x8_Y.asm
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * Intra predict 8X8 luma block
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__INTRA_PRED_8X8_Y__) // Make sure this is only included once
-#define __INTRA_PRED_8X8_Y__
-
-// Module name: intra_Pred_8X8_Y.asm
-//
-// Intra predict 8X8 luma block
-//
-//--------------------------------------------------------------------------
-// Input data:
-//
-// REF_TOP: Top reference data stored in BYTE with p[-1,-1] at REF_TOP(0,-1), p[-1,-1] and [15,-1] adjusted
-// REF_LEFT: Left reference data stored in BYTE with p[-1,0] at REF_LEFT(0,2), REF_LEFT(0,1) (p[-1,-1]) adjusted
-// PRED_MODE: Intra prediction mode stored in 4 LSBs
-// INTRA_PRED_AVAIL: Top/Left available flag, (Bit0: Left, Bit1: Top)
-//
-// Output data:
-//
-// REG_INTRA_8X8_PRED: Predicted 8X8 block data
-//--------------------------------------------------------------------------
-
-#define INTRA_REF REG_INTRA_TEMP_1
-#define REF_TMP REG_INTRA_TEMP_2
-
-intra_Pred_8x8_Y:
-
-// Reference sample filtering
-//
- // Set up boundary pixels for unified filtering
- mov (1) REF_TOP(0,16)<1> REF_TOP(0,15)REGION(1,0) // p[16,-1] = p[15,-1]
- mov (8) REF_LEFT(0,2+8)<1> REF_LEFT(0,2+7)REGION(1,0) // p[-1,8] = p[-1,7]
-
- // Top reference sample filtering (!!Consider instruction compression later)
- add (16) acc0<1>:w REF_TOP(0,-1)REGION(16,1) 2:w // p[x-1,-1]+2
- mac (16) acc0<1>:w REF_TOP(0)REGION(16,1) 2:w // p[x-1,-1]+2*p[x,-1]+2
- mac (16) acc0<1>:w REF_TOP(0,1)REGION(16,1) 1:w // p[x-1,-1]+2*p[x,-1]+p[x+1,-1]+2
- shr (16) REF_TMP<1>:w acc0:w 2:w // (p[x-1,-1]+2*p[x,-1]+p[x+1,-1]+2)>>2
-
- // Left reference sample filtering
- add (16) acc0<1>:w REF_LEFT(0)REGION(16,1) 2:w // p[-1,y-1]+2
- mac (16) acc0<1>:w REF_LEFT(0,1)REGION(16,1) 2:w // p[-1,y-1]+2*p[-1,y]+2
- mac (16) acc0<1>:w REF_LEFT(0,2)REGION(16,1) 1:w // p[-1,y-1]+2*p[-1,y]+p[-1,y+1]+2
- shr (16) INTRA_REF<1>:w acc0:w 2:w // (p[-1,y-1]+2*p[-1,y]+p[-1,y+1]+2)>>2
-
- // Re-assign filtered reference samples
- mov (16) REF_TOP(0)<1> REF_TMP<32;16,2>:ub // p'[x,-1], x=0...15
- mov (8) REF_LEFT(0)<1> INTRA_REF.2<16;8,2>:ub // p'[-1,y], y=0...7
- mov (1) REF_TOP(0,-1)<1> INTRA_REF<0;1,0>:ub // p'[-1,-1]
-
-// Select intra_8x8 prediction mode
-//
- and (1) PINTRAPRED_Y<1>:w PRED_MODE<0;1,0>:w 0x0F:w
- // WA for "jmpi" restriction
- mov (1) REG_INTRA_TEMP_1<1>:ud r[PINTRAPRED_Y, INTRA_8X8_OFFSET]:ub
- jmpi (1) REG_INTRA_TEMP_1<0;1,0>:d
-
-// Mode 0
-#define PTMP a0.6
-#define PTMP_D a0.3
-INTRA_8X8_VERTICAL:
- $for(0,0; <4; 1,32) {
- add.sat (16) r[PPREDBUF_Y,%2]<2>:ub r[PERROR,%2]<16;16,1>:w REF_TOP(0)<0;8,1>
- }
- RETURN
-
-// Mode 1
-INTRA_8X8_HORIZONTAL:
- $for(0,0; <8; 2,32) {
- add.sat (16) r[PPREDBUF_Y,%2]<2>:ub r[PERROR,%2]<16;16,1>:w REF_LEFT(0,%1)<1;8,0>
- }
- RETURN
-
-// Mode 2
-INTRA_8X8_DC:
-// Rearrange reference samples for unified DC prediction code
-//
- and.nz.f0.0 (16) NULLREG INTRA_PRED_AVAIL<0;1,0>:w 2:w // Top macroblock available for intra prediction?
- and.nz.f0.1 (8) NULLREG INTRA_PRED_AVAIL<0;1,0>:w 1:w // Left macroblock available for intra prediction?
- (-f0.0.any16h) mov (16) REF_TOP_W(0)<1> 0x8080:uw
- (-f0.1.any8h) mov (8) REF_LEFT(0)<1> REF_TOP(0)REGION(8,1)
- (-f0.0.any8h) mov (8) REF_TOP(0)<1> REF_LEFT(0)REGION(8,1)
-
-// Perform DC prediction
-//
- add (8) PRED_YW(15)<1> REF_TOP(0)REGION(8,1) REF_LEFT(0)REGION(8,1)
- add (4) PRED_YW(15)<1> PRED_YW(15)REGION(4,1) PRED_YW(15,4)REGION(4,1)
- add (2) PRED_YW(15)<1> PRED_YW(15)REGION(2,1) PRED_YW(15,2)REGION(2,1)
- add (16) acc0<1>:w PRED_YW(15)REGION(1,0) PRED_YW(15,1)REGION(1,0)
- add (16) acc0<1>:w acc0:w 8:w
- shr (16) REG_INTRA_TEMP_0<1>:w acc0:w 4:w
-
- // Add error block
- $for(0,0; <4; 1,32) {
- add.sat (16) r[PPREDBUF_Y,%2]<2>:ub r[PERROR,%2]<16;16,1>:w REG_INTRA_TEMP_0<16;16,1>:w
- }
- RETURN
-
-// Mode 3
-INTRA_8X8_DIAG_DOWN_LEFT:
- mov (8) REF_TOP(0,16)<1> REF_TOP(0,15)REGION(8,1) // p[16,-1] = p[15,-1]
- add (16) acc0<1>:w REF_TOP(0,2)REGION(16,1) 2:w // p[x+2]+2
- mac (16) acc0<1>:w REF_TOP(0,1)REGION(16,1) 2:w // 2*p[x+1]+p[x+2]+2
- mac (16) acc0<1>:w REF_TOP(0)REGION(16,1) 1:w // p[x]+2*p[x+1]+p[x+2]+2
- shr (16) REG_INTRA_TEMP_0<1>:w acc0<16;16,1>:w 2:w // (p[x]+2*p[x+1]+p[x+2]+2)>>2
-
- // Add error block
- $for(0,0; <8; 2,32) {
- add.sat (16) r[PPREDBUF_Y,%2]<2>:ub r[PERROR,%2]<16;16,1>:w REG_INTRA_TEMP_0.%1<1;8,1>:w
- }
- RETURN
-
-// Mode 4
-INTRA_8X8_DIAG_DOWN_RIGHT:
-#define INTRA_REF REG_INTRA_TEMP_1
-#define REF_TMP REG_INTRA_TEMP_2
-
-// Set inverse shift count
- shl (4) REF_TMP<1>:ud REF_LEFT_D(0,1)REGION(1,0) INV_SHIFT<4;4,1>:b // Reverse order bottom 4 pixels of left ref.
- shl (4) REF_TMP.4<1>:ud REF_LEFT_D(0)REGION(1,0) INV_SHIFT<4;4,1>:b // Reverse order top 4 pixels of left ref.
- mov (8) INTRA_REF<1>:ub REF_TMP.3<32;8,4>:ub
- mov (16) INTRA_REF.8<1>:ub REF_TOP(0,-1)REGION(16,1) // INTRA_REF holds all reference data
-
- add (16) acc0<1>:w INTRA_REF.2<16;16,1>:ub 2:w // p[x+2]+2
- mac (16) acc0<1>:w INTRA_REF.1<16;16,1>:ub 2:w // 2*p[x+1]+p[x+2]+2
- mac (16) acc0<1>:w INTRA_REF<16;16,1>:ub 1:w // p[x]+2*p[x+1]+p[x+2]+2
- shr (16) INTRA_REF<1>:w acc0<16;16,1>:w 2:w // (p[x]+2*p[x+1]+p[x+2]+2)>>2
-
-// Store data in reversed order
- add (2) PBWDCOPY_8<1>:w INV_TRANS48<2;2,1>:b INTRA_TEMP_1*GRFWIB:w // Must match with INTRA_REF
-
- // Add error block
- $for(0,96; <8; 2,-32) {
- add.sat (16) r[PPREDBUF_Y,%2]<2>:ub r[PBWDCOPY_8,%1*2]<8,1>:w r[PERROR,%2]<16;16,1>:w
- }
- RETURN
-
-// Mode 5
-INTRA_8X8_VERT_RIGHT:
-#define INTRA_REF REG_INTRA_TEMP_1
-#define REF_TMP REG_INTRA_TEMP_2
-#define REF_TMP1 REG_INTRA_TEMP_3
-
-// Set inverse shift count
- shl (4) REF_TMP<1>:ud REF_LEFT_D(0,1)REGION(1,0) INV_SHIFT<4;4,1>:b // Reverse order bottom 4 pixels of left ref.
- shl (4) REF_TMP.4<1>:ud REF_LEFT_D(0)REGION(1,0) INV_SHIFT<4;4,1>:b // Reverse order top 4 pixels of left ref.
- mov (8) INTRA_REF<1>:ub REF_TMP.3<32;8,4>:ub
- mov (16) INTRA_REF.8<1>:ub REF_TOP(0,-1)REGION(16,1) // INTRA_REF holds all reference data
-
- // Even rows
- avg (16) PRED_YW(14)<1> INTRA_REF.8<16;16,1> INTRA_REF.9<16;16,1> // avg(p[x-1],p[x])
- // Odd rows
- add (16) acc0<1>:w INTRA_REF.3<16;16,1>:ub 2:w // p[x]+2
- mac (16) acc0<1>:w INTRA_REF.2<16;16,1>:ub 2:w // 2*p[x-1]+p[x]+2
- mac (16) acc0<1>:w INTRA_REF.1<16;16,1>:ub 1:w // p[x-2]+2*p[x-1]+p[x]+2
- shr (16) REF_TMP<1>:w acc0:w 2:w // (p[x-2]+2*p[x-1]+p[x]+2)>>2
-
- mov (8) INTRA_REF<1>:ub REF_TMP<16;8,2>:ub // Keep zVR = -1,-2,-3,-4,-5,-6,-7 sequencially
- mov (8) INTRA_REF.6<2>:ub REF_TMP.12<16;8,2>:ub // Keep zVR = -1,1,3,5,7,9,11,13 at even byte
- mov (8) INTRA_REF.7<2>:ub PRED_Y(14)REGION(8,2) // Combining zVR = 0,2,4,6,8,10,12,14 at odd byte
-
- add (2) PBWDCOPY_8<1>:w INV_TRANS8<2;2,1>:b INTRA_TEMP_1*GRFWIB:w // Must match with INTRA_REF
-
- // Add error block
- $for(0,96; <8; 2,-32) {
- add.sat (16) r[PPREDBUF_Y,%2]<2>:ub r[PBWDCOPY_8,%1]<8,2>:ub r[PERROR,%2]<16;16,1>:w
- }
- RETURN
-
-// Mode 6
-INTRA_8X8_HOR_DOWN:
-// Set inverse shift count
- shl (4) REF_TMP<1>:ud REF_LEFT_D(0,1)REGION(1,0) INV_SHIFT<4;4,1>:b // Reverse order bottom 4 pixels of left ref.
- shl (4) REF_TMP.4<1>:ud REF_LEFT_D(0)REGION(1,0) INV_SHIFT<4;4,1>:b // Reverse order top 4 pixels of left ref.
- mov (8) INTRA_REF<1>:ub REF_TMP.3<16;4,4>:ub
- mov (16) INTRA_REF.8<1>:ub REF_TOP(0,-1)REGION(16,1) // INTRA_REF holds all reference data
-
- // Odd pixels
- add (16) acc0<1>:w INTRA_REF.2<16;16,1>:ub 2:w // p[y]+2
- mac (16) acc0<1>:w INTRA_REF.1<16;16,1>:ub 2:w // 2*p[y-1]+p[y]+2
- mac (16) acc0<1>:w INTRA_REF.0<16;16,1>:ub 1:w // p[y-2]+2*p[y-1]+p[y]+2
- shr (16) PRED_YW(14)<1> acc0:w 2:w // (p[y-2]+2*p[y-1]+p[y]+2)>>2
- // Even pixels
- avg (16) INTRA_REF<1>:w INTRA_REF<16;16,1>:ub INTRA_REF.1<16;16,1>:ub // avg(p[y-1],p[y])
-
- mov (8) INTRA_REF.1<2>:ub PRED_Y(14)REGION(8,2) // Combining odd pixels to form byte type
- mov (8) INTRA_REF.16<1>:ub PRED_Y(14,16)REGION(8,2) // Keep zVR = -2,-3,-4,-5,-6,-7 unchanged
- // Now INTRA_REF.0 - INTRA_REF.21 contain predicted data
-
- add (2) PBWDCOPY_8<1>:w INV_TRANS48<2;2,1>:b INTRA_TEMP_1*GRFWIB:w // Must match with INTRA_REF
-
- // Add error block
- $for(0,96; <13; 4,-32) {
- add.sat (16) r[PPREDBUF_Y,%2]<2>:ub r[PBWDCOPY_8,%1]<8,1>:ub r[PERROR,%2]<16;16,1>:w
- }
- RETURN
-
-// Mode 7
-INTRA_8X8_VERT_LEFT:
- // Even rows
- avg (16) PRED_YW(14)<1> REF_TOP(0)REGION(16,1) REF_TOP(0,1)REGION(16,1) // avg(p[x],p[x+1])
- // Odd rows
- add (16) acc0<1>:w REF_TOP(0,2)REGION(16,1) 2:w // p[x+2]+2
- mac (16) acc0<1>:w REF_TOP(0,1)REGION(16,1) 2:w // 2*p[x+1]+p[x+2]+2
- mac (16) acc0<1>:w REF_TOP(0)REGION(16,1) 1:w // p[x]+2*p[x+1]+p[x+2]+2
- shr (16) PRED_YW(15)<1> acc0<1;8,1>:w 2:w // (p[x]+2*p[x+1]+p[x+2]+2)>>2
-
- // Add error block
- $for(0,0; <4; 1,32) {
- add.sat (16) r[PPREDBUF_Y,%2]<2>:ub PRED_YW(14,%1)<16;8,1> r[PERROR,%2]<16;16,1>:w
- }
- RETURN
-
-// Mode 8
-INTRA_8X8_HOR_UP:
-// Set extra left reference pixels for unified prediction
- mov (8) REF_LEFT(0,8)<1> REF_LEFT(0,7)REGION(1,0) // Copy p[-1,7] to p[-1,y],y=8...15
-
- // Even pixels
- avg (16) PRED_YW(14)<1> REF_LEFT(0)REGION(16,1) REF_LEFT(0,1)REGION(16,1) // avg(p[y],p[y+1])
- // Odd pixels
- add (16) acc0<1>:w REF_LEFT(0,2)REGION(16,1) 2:w // p[y+2]+2
- mac (16) acc0<1>:w REF_LEFT(0,1)REGION(16,1) 2:w // 2*p[y+1]+p[y+2]+2
- mac (16) acc0<1>:w REF_LEFT(0)REGION(16,1) 1:w // p[y]+2*p[y+1]+p[y+2]+2
- shr (16) PRED_YW(15)<1> acc0<1;8,1>:w 2:w // (p[y]+2*p[y+1]+p[y+2]+2)>>2
-
- // Merge even/odd pixels
- // The predicted data need to be stored in byte type (22 bytes are required)
- mov (16) PRED_Y(14,1)<2> PRED_Y(15)REGION(16,2)
-
- // Add error block
- $for(0,0; <4; 1,32) {
- add.sat (16) r[PPREDBUF_Y,%2]<2>:ub PRED_Y(14,%1*4)<2;8,1> r[PERROR,%2]<16;16,1>:w
- }
- RETURN
-
-// End of intra_Pred_8X8_Y
-
-#endif // !defined(__INTRA_PRED_8X8_Y__)
diff --git a/src/shaders/h264/mc/intra_Pred_Chroma.asm b/src/shaders/h264/mc/intra_Pred_Chroma.asm
deleted file mode 100644
index cd55147..0000000
--- a/src/shaders/h264/mc/intra_Pred_Chroma.asm
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Intra predict 8x8 chroma block
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__INTRA_PRED_CHROMA__) // Make sure this is only included once
-#define __INTRA_PRED_CHROMA__
-
-// Module name: intra_Pred_Chroma.asm
-//
-// Intra predict 8x8 chroma block
-//
-
- shr (1) PINTRAPRED_UV<1>:w REG_INTRA_CHROMA_PRED_MODE<0;1,0>:ub INTRA_CHROMA_PRED_MODE_SHIFT:w // Bits 1:0 = intra chroma pred mode
- // WA for "jmpi" restriction
- mov (1) REG_INTRA_TEMP_1<1>:d r[PINTRAPRED_UV, INTRA_CHROMA_OFFSET]:b
- jmpi (1) REG_INTRA_TEMP_1<0;1,0>:d
-
-// Mode 0
-INTRA_CHROMA_DC:
- and.nz.f0.0 (8) NULLREG REG_INTRA_PRED_AVAIL_FLAG INTRA_PRED_UP_AVAIL_FLAG:ud // Top macroblock available for intra prediction?
-
-// Calculate DC values for sub-block 0 and 3
-//
-// Rearrange reference samples for unified DC prediction code
-// Need to check INTRA_PRED_LEFT_TH_AVAIL_FLAG for blk0 and INTRA_PRED_LEFT_BH_AVAIL_FLAG for blk3
-//
- (-f0.0.any8h) mov (8) INTRA_REF_TOP_W(0)<1> 0x8080:uw // Up not available
-
- and.nz.f0.1 (4) NULLREG REG_INTRA_PRED_AVAIL_FLAG INTRA_PRED_LEFT_TH_AVAIL_FLAG:ud
- (-f0.1.any4h) mov (4) INTRA_REF_LEFT_W(0)<2> INTRA_REF_TOP_W(0)REGION(4,1) // Left top half macroblock not available for intra prediction
- and.nz.f0.1 (4) NULLREG REG_INTRA_PRED_AVAIL_FLAG INTRA_PRED_LEFT_BH_AVAIL_FLAG:ud
- (-f0.1.any4h) mov (4) INTRA_REF_LEFT_W(0,8)<2> INTRA_REF_TOP_W(0,4)REGION(4,1) // Left bottom half macroblock not available for intra prediction
-
- (-f0.0.any8h) mov (8) INTRA_REF_TOP_W(0)<1> INTRA_REF_LEFT_W(0)REGION(8,2) // Up not available
-// Calculate DC prediction
-//
- add (16) PRED_UVW(0)<1> INTRA_REF_TOP(0)REGION(16,1) INTRA_REF_LEFT_UV(0)<4;2,1> // Sum of top and left reference
- add (8) PRED_UVW(0)<1> PRED_UVW(0)<4;2,1> PRED_UVW(0,2)<4;2,1> // Sum of first half (blk #0) and second half (blk #3)
-
- add (8) PRED_UVW(9)<1> PRED_UVW(0)<0;2,1> PRED_UVW(0,2)<0;2,1> // Sum of blk #0
- add (8) PRED_UVW(11,8)<1> PRED_UVW(0,4)<0;2,1> PRED_UVW(0,6)<0;2,1> // Sum of blk #3
-
-// Calculate DC values for sub-block 1 and 2
-//
-// Rearrange reference samples for unified DC prediction code
-//
- // Blk #2
- (-f0.0.any4h) mov (4) INTRA_REF_TOP_W(0)<1> 0x8080:uw
- (f0.1.any4h) mov (4) INTRA_REF_TOP_W(0)<1> INTRA_REF_LEFT_W(0,8)REGION(4,2) // Always use available left reference
- (-f0.1.any4h) mov (4) INTRA_REF_LEFT_W(0,8)<2> INTRA_REF_TOP_W(0)REGION(4,1)
-
- // Blk #1
- and.nz.f0.1 (4) NULLREG REG_INTRA_PRED_AVAIL_FLAG INTRA_PRED_LEFT_TH_AVAIL_FLAG:ud
- (-f0.1.any4h) mov (4) INTRA_REF_LEFT_W(0)<2> 0x8080:uw
- (f0.0.any4h) mov (4) INTRA_REF_LEFT_W(0)<2> INTRA_REF_TOP_W(0,4)REGION(4,1) // Always use available top reference
- (-f0.0.any4h) mov (4) INTRA_REF_TOP_W(0,4)<1> INTRA_REF_LEFT_W(0)REGION(4,2)
-
-// Calculate DC prediction
-//
- add (8) PRED_UVW(0)<1> INTRA_REF_TOP(0)REGION(8,1) INTRA_REF_LEFT_UV(0,16)<4;2,1> // Sum of top and left reference for blk #2
- add (8) PRED_UVW(0,8)<1> INTRA_REF_LEFT_UV(0)<4;2,1> INTRA_REF_TOP(0,8)REGION(8,1) // Sum of top and left reference for blk #1
- add (8) PRED_UVW(0)<1> PRED_UVW(0)<4;2,1> PRED_UVW(0,2)<4;2,1> // Sum of first half (blk #2) and second half (blk #1)
-
- add (8) PRED_UVW(9,8)<1> PRED_UVW(0,4)<0;2,1> PRED_UVW(0,6)<0;2,1> // Sum of blk #1
- add (8) PRED_UVW(11)<1> PRED_UVW(0)<0;2,1> PRED_UVW(0,2)<0;2,1> // Sum of blk #2
-
-// Now, PRED_UVW(9) holds sums for blks #0 and #1 and PRED_UVW(11) holds sums for blks #2 and #3
-//
- add (32) acc0<1>:w PRED_UVW(9)REGION(16,1) 4:w {Compr} // Add rounder
- $for(0; <4; 2) {
- shr (32) PRED_UVW(%1)<1> acc0:w 3:w {Compr}
- }
-
- add (32) acc0<1>:w PRED_UVW(11)REGION(16,1) 4:w {Compr} // Add rounder
- $for(4; <8; 2) {
- shr (32) PRED_UVW(%1)<1> acc0:w 3:w {Compr}
- }
- jmpi (1) End_of_intra_Pred_Chroma
-
-// Mode 1
-INTRA_CHROMA_HORIZONTAL:
- mov (1) PREF_LEFT_UD<1>:ud INTRA_REF_LEFT_ID*GRFWIB*0x00010001+0x00040000:ud // Set address registers for instruction compression
- $for(0,0; <8; 2,8) {
- mov (32) PRED_UVW(%1)<1> r[PREF_LEFT,%2+2]<0;2,1>:ub {Compr} // Actual left column reference data start at offset 2
- }
- jmpi (1) End_of_intra_Pred_Chroma
-
-// Mode 2
-INTRA_CHROMA_VERTICAL:
- $for(0; <8; 2) {
- mov (32) PRED_UVW(%1)<1> INTRA_REF_TOP(0) {Compr}
- }
- jmpi (1) End_of_intra_Pred_Chroma
-
-// Mode 3
-INTRA_Chroma_PLANE:
-// Refer to H.264/AVC spec Section 8.3.4.4
-
-#undef C
-
-#define A REG_INTRA_TEMP_2.0 // All are WORD type
-#define B REG_INTRA_TEMP_3.0 // B[U] & B[V]
-#define C REG_INTRA_TEMP_3.2 // C[U] & C[V]
-#define YP REG_INTRA_TEMP_0 // Store intermediate results of c*(y-3). Make sure it's an even GRF
-#define YP1 REG_INTRA_TEMP_1 // Store intermediate results of c*(y-3). Make sure it's an odd GRF
-#define XP REG_INTRA_TEMP_5 // Store intermediate results of a+b*(x-3)+16. Make sure it's an odd GRF
-
-// First Calculate constants H and V
-// H1 = sum((x'+1)*p[4+x',-1]), x'=0,1,2,3
-// H2 = sum((-x'-1)*p[2-x',-1]), x'=3,2,1,0
-// H = H1 + H2
-// The same calculation holds for V
-//
- mul (8) H1(0)<1> INTRA_REF_TOP(0,8)REGION(8,1) 0x44332211:v
- mul (8) H2(0)<1> INTRA_REF_TOP(0,-2)REGION(8,1) 0xFFEEDDCC:v
-
- mul (8) V1(0)<1> INTRA_REF_LEFT_UV(0,4*4)<4;2,1> 0x44332211:v
- mul (8) V2(0)<1> INTRA_REF_LEFT_UV(0)<4;2,1> 0x00FFEEDD:v
- mul (2) V2(0,6)<1> INTRA_REF_TOP(0,-2)REGION(2,1) -4:w // Replace 0*p[-1,3] with -4*p[-1,-1]
- // Now, REG_INTRA_TEMP_0 holds [H2, H1] and REG_INTRA_TEMP_1 holds [V2, V1]
-
- // Sum up [H2, H1] and [V2, V1] using instruction compression
- // ExecSize = 16 is restricted by B-spec for instruction compression
- // Actual intermediate results are in lower sub-registers after each summing step
- add (16) H1(0)<1> H1(0) H2(0) {Compr} // Results in lower 8 WORDs
- add (16) H1(0)<1> H1(0) H1(0,4) {Compr} // Results in lower 4 WORDs
- add (16) H1(0)<1> H1(0) H1(0,2) {Compr} // Results in lower 2 WORDs
-
-// Calculate a, b, c and further derivations
- mov (16) acc0<1>:w 32:w
- mac (4) acc0<1>:w H1(0)<16;2,1> 34:w
- shr (4) B<1>:w acc0:w 6:w // Done b,c
- mov (16) acc0<1>:w 16:w
- mac (16) acc0<1>:w INTRA_REF_TOP(0,7*2)<0;2,1> 16:w
- mac (16) A<1>:w INTRA_REF_LEFT_UV(0,7*4)<0;2,1> 16:w // A = a+16
- mac (16) XP<1>:w B<0;2,1>:w XY_3<1;2,0>:b // XP = A+b*(x-3)
- mul (8) YP<1>:w C<0;2,1>:w XY_3<2;2,0>:b // YP = c*(y-3), Even portion
- mul (8) YP1<1>:w C<0;2,1>:w XY_3_1<2;2,0>:b // YP = c*(y-3), Odd portion
-
-// Finally the intra_Chroma plane prediction
- $for(0; <8; 2) {
- add (32) acc0<1>:w XP<16;16,1>:w YP.%1<0;2,1>:w {Compr}
- shr.sat (32) PRED_UV(%1)<2> acc0<16;16,1>:w 5:w {Compr}
- }
-
-End_of_intra_Pred_Chroma:
-
-// End of intra_Pred_Chroma
-
-#endif // !defined(__INTRA_PRED_CHROMA__)
diff --git a/src/shaders/h264/mc/intra_pred_16x16_Y.asm b/src/shaders/h264/mc/intra_pred_16x16_Y.asm
deleted file mode 100644
index 8207db3..0000000
--- a/src/shaders/h264/mc/intra_pred_16x16_Y.asm
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Intra predict 16x16 luma block
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: intra_Pred_16x16_Y.asm
-//
-// Intra predict 16x16 luma block
-//
- and (1) PINTRAPRED_Y<1>:w INTRA_PRED_MODE(0)REGION(1,0) 0x0F:w
- // WA for "jmpi" restriction
- mov (1) REG_INTRA_TEMP_1<1>:ud r[PINTRAPRED_Y, INTRA_16X16_OFFSET]:ub
- jmpi (1) REG_INTRA_TEMP_1<0;1,0>:d
-
-// Mode 0
-INTRA_16x16_VERTICAL:
- $for(0; <16; 2) {
- mov (32) PRED_YW(%1)<1> INTRA_REF_TOP(0) {Compr}
- }
- jmpi (1) End_intra_Pred_16x16_Y
-
-// Mode 1
-INTRA_16x16_HORIZONTAL:
- mov (1) PREF_LEFT_UD<1>:ud INTRA_REF_LEFT_ID*GRFWIB*0x00010001+0x00040000:ud // Set address registers for instruction compression
- $for(0,0; <16; 2,8) {
- mov (32) PRED_YW(%1)<1> r[PREF_LEFT,%2+3]<0;1,0>:ub {Compr} // Actual left column reference data start at offset 3
- }
- jmpi (1) End_intra_Pred_16x16_Y
-
-// Mode 2
-INTRA_16x16_DC:
- and.nz.f0.0 (8) NULLREG REG_INTRA_PRED_AVAIL_FLAG INTRA_PRED_UP_AVAIL_FLAG:ud // Top macroblock available for intra prediction?
- and (8) acc0<1>:ud REG_INTRA_PRED_AVAIL_FLAG INTRA_PRED_LEFT_TH_AVAIL_FLAG+INTRA_PRED_LEFT_BH_AVAIL_FLAG:ud // Left macroblock available for intra prediction?
- xor.z.f0.1 (8) NULLREG acc0:ud INTRA_PRED_LEFT_TH_AVAIL_FLAG+INTRA_PRED_LEFT_BH_AVAIL_FLAG:ud // Left macroblock available for intra prediction?
-// Rearrange reference samples for unified DC prediction code
-//
- (-f0.0.any8h) mov (8) INTRA_REF_TOP_W(0)<1> 0x8080:uw
- (-f0.1.any8h) mov (8) INTRA_REF_LEFT(0)<4> INTRA_REF_TOP(0)REGION(8,1)
- (-f0.1.any8h) mov (8) INTRA_REF_LEFT(1)<4> INTRA_REF_TOP(0,8)REGION(8,1)
- (-f0.0.any8h) mov (8) INTRA_REF_TOP(0)<1> INTRA_REF_LEFT(0)REGION(8,4)
- (-f0.0.any8h) mov (8) INTRA_REF_TOP(0,8)<1> INTRA_REF_LEFT(1)REGION(8,4) // Split due to HW limitation
-// Perform DC prediction
-//
- add (16) PRED_YW(15)<1> INTRA_REF_LEFT(0)REGION(8,4) INTRA_REF_TOP(0)REGION(16,1)
- add (8) PRED_YW(15)<1> PRED_YW(15)REGION(8,1) PRED_YW(15,8)REGION(8,1)
- add (4) PRED_YW(15)<1> PRED_YW(15)REGION(4,1) PRED_YW(15,4)REGION(4,1)
- add (2) PRED_YW(15)<1> PRED_YW(15)REGION(2,1) PRED_YW(15,2)REGION(2,1)
- add (32) acc0<1>:w PRED_YW(15)REGION(1,0) PRED_YW(15,1)REGION(1,0) {Compr} // Set up both acc0 and acc1
- add (32) acc0<1>:w acc0:w 16:w {Compr}
-
- $for(0; <16; 2) {
- shr (32) PRED_YW(%1)<1> acc0:w 5:w {Compr}
- }
- jmpi (1) End_intra_Pred_16x16_Y
-
-// Mode 3
-INTRA_16x16_PLANE:
-// Refer to H.264/AVC spec Section 8.3.3.4
-
-#define A REG_INTRA_TEMP_2.0 // All are WORD type
-#define B REG_INTRA_TEMP_3.0
-#define C REG_INTRA_TEMP_3.1
-#define YP REG_INTRA_TEMP_0 // Store intermediate results of c*(y-7). Make sure it's an even GRF
-#define YP1 REG_INTRA_TEMP_1 // Store intermediate results of c*(y-7). Make sure it's an odd GRF, used in {Comp}
-#define XP REG_INTRA_TEMP_5 // Store intermediate results of a+b*(x-7)+16. Make sure it's an odd GRF
-
-// First Calculate constants H and V
-// H1 = sum((-x'-1)*p[8+x',-1]), x'=0,1,...7
-// H2 = sum((-x'-1)*p[6-x',-1]), x'=7,6,...0
-// H = -H1 + H2
-// The same calculation holds for V
-//
- mul (8) H1(0)<1> INTRA_REF_TOP(0,8)REGION(8,1) 0x89ABCDEF:v
- mul (8) H2(0)<1> INTRA_REF_TOP(0,-1)REGION(8,1) 0xFEDCBA98:v
-
- mul (8) V1(0)<1> INTRA_REF_LEFT(0,8*4)REGION(8,4) 0x89ABCDEF:v
- mul (8) V2(0)<1> INTRA_REF_LEFT(0)REGION(8,4) 0x0FEDCBA9:v
- mul (1) V2(0,7)<1> INTRA_REF_TOP(0,-1)<0;1,0> -8:w // Replace 0*p[-1,7] with -8*p[-1,-1]
- // Now, REG_INTRA_TEMP_0 holds [H2, -H1] and REG_INTRA_TEMP_1 holds [V2, -V1]
-
- // Sum up [H2, -H1] and [V2, -V1] using instruction compression
- // ExecSize = 16 is restricted by B-spec for instruction compression
- // Actual intermediate results are in lower sub-registers after each summing step
- add (16) H1(0)<1> -H1(0) H2(0) {Compr} // Results in lower 8 WORDs
- add (16) H1(0)<1> H1(0) H1(0,4) {Compr} // Results in lower 4 WORDs
- add (16) H1(0)<1> H1(0) H1(0,2) {Compr} // Results in lower 2 WORDs
- add (16) H1(0)<1> H1(0) H1(0,1) {Compr} // Results in lower 1 WORD
-
-// Calculate a, b, c and further derivations
- mov (16) acc0<1>:w 32:w
- mac (2) acc0<1>:w H1(0)<16;1,0> 5:w
- shr (2) B<1>:w acc0:w 6:w // Done b,c
- mov (16) acc0<1>:w 16:w
- mac (16) acc0<1>:w INTRA_REF_TOP(0,15)<0;1,0> 16:w
- mac (16) A<1>:w INTRA_REF_LEFT(0,15*4)<0;1,0> 16:w // A = a+16
- mac (16) XP<1>:w B<0;1,0>:w XY_7<16;16,1>:b // XP = A+b*(x-7)
- mul (8) YP<1>:w C<0;1,0>:w XY_7<16;8,2>:b // YP = c*(y-7), even portion
- mul (8) YP1<1>:w C<0;1,0>:w XY_7_1<16;8,2>:b // YP = c*(y-7), odd portion
-
-// Finally the intra_16x16 plane prediction
- $for(0,0; <16; 2,1) {
- add (32) acc0<1>:w XP<16;16,1>:w YP.%2<16;16,0>:w {Compr} // Set Width!= 1 to trick EU to use YP_1.%2 for 2nd instruction
- shr.sat (32) PRED_Y(%1)<2> acc0<16;16,1>:w 5:w {Compr}
- }
-
-End_intra_Pred_16x16_Y:
-// End of intra_Pred_16x16_Y
diff --git a/src/shaders/h264/mc/list b/src/shaders/h264/mc/list
deleted file mode 100644
index 000e0fb..0000000
--- a/src/shaders/h264/mc/list
+++ /dev/null
@@ -1,21 +0,0 @@
-INTRA_16x16
-INTRA_8x8
-INTRA_4x4
-INTRA_PCM
-FRAME_MB
-FIELD_MB
-MBAFF_MB
-SETHWSCOREBOARD
-SETHWSCOREBOARD_MBAFF
-AVC_ILDB_ROOT_Y_ILDB_FRAME
-AVC_ILDB_CHILD_Y_ILDB_FRAME
-AVC_ILDB_ROOT_UV_ILDB_FRAME
-AVC_ILDB_CHILD_UV_ILDB_FRAME
-AVC_ILDB_ROOT_Y_ILDB_FIELD
-AVC_ILDB_CHILD_Y_ILDB_FIELD
-AVC_ILDB_ROOT_UV_ILDB_FIELD
-AVC_ILDB_CHILD_UV_ILDB_FIELD
-AVC_ILDB_ROOT_Y_ILDB_MBAFF
-AVC_ILDB_CHILD_Y_ILDB_MBAFF
-AVC_ILDB_ROOT_UV_ILDB_MBAFF
-AVC_ILDB_CHILD_UV_ILDB_MBAFF
diff --git a/src/shaders/h264/mc/loadRef_C_10x5.asm b/src/shaders/h264/mc/loadRef_C_10x5.asm
deleted file mode 100644
index 4aed9f7..0000000
--- a/src/shaders/h264/mc/loadRef_C_10x5.asm
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Load reference 10x5 area for chroma NV12 4x4 MC
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: LoadRef_C_10x5.asm
-//
-// Load reference 10x5 area for chroma NV12 4x4 MC
-
-
-//#if !defined(__LOADREF_C_10x5__) // Make sure this is only included once
-//#define __LOADREF_C_10x5__
-
-
-#if 1
-
- // Compute integer and fractional components of MV
- asr (2) gMVX_INT<1>:w r[pMV,0]<2;2,1>:w 0x03:w {NoDDClr}
- and (2) gMVX_FRACC<1>:w r[pMV,0]<2;2,1>:w 0x07:w {NoDDChk}
-
- // Check whether MVY is integer
- or.z.f0.0 (8) null:w gMVY_FRACC<0;1,0>:w 0:w
-
- // Compute top-left corner position to be loaded
- mov (2) gMSGSRC.0<1>:d gMVX_INT<2;2,1>:w
- shl (1) gMSGSRC.0:d gMSGSRC.0:d 1:w
-
- (f0.0) add (1) pMSGDSC:ud gMSGDSC_R:ud RESP_LEN(2)+nBI_LC_DIFF:ud
- (-f0.0) add (1) pMSGDSC:ud gMSGDSC_R:ud RESP_LEN(3)+nBI_LC_DIFF:ud
-
- // Read 16x5 pixels - TODO: Reading 12x5 instead of 16x5 took more time on CL. Why?
- (f0.0) mov (1) gMSGSRC.2:ud 0x00030009:ud //{NoDDChk}
- (-f0.0) mov (1) gMSGSRC.2:ud 0x00040009:ud //{NoDDChk}
- send (8) gudREFC(0)<1> mMSGHDRC gMSGSRC<8;8,1>:ud DAPREAD pMSGDSC:ud
-
-#else
-
- add (1) pMSGDSC:ud gMSGDSC_R:ud RESP_LEN(3)+nBI_LC_DIFF:ud
-
- // Compute integer and fractional components of MV
- asr (2) gMVX_INT<1>:w r[pMV,0]<2;2,1>:w 0x03:w {NoDDClr}
- and (2) gMVX_FRACC<1>:w r[pMV,0]<2;2,1>:w 0x07:w {NoDDChk}
-
- // Compute top-left corner position to be loaded
- mov (2) gMSGSRC.0<1>:d gMVX_INT<2;2,1>:w
- shl (1) gMSGSRC.0:d gMSGSRC.0:d 1:w
-
- // Read 16x5 pixels
- mov (1) gMSGSRC.2:ud 0x00040009:ud {NoDDChk}
- send (8) gudREFC(0)<1> mMSGHDRC gMSGSRC<8;8,1>:ud DAPREAD pMSGDSC:ud
-#endif
-
-//#endif // !defined(__LOADREF_C_10x5__)
diff --git a/src/shaders/h264/mc/loadRef_C_6x3.asm b/src/shaders/h264/mc/loadRef_C_6x3.asm
deleted file mode 100644
index 71939fe..0000000
--- a/src/shaders/h264/mc/loadRef_C_6x3.asm
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Load reference 6x3 area for chroma NV12 4x4 MC
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: LoadRef_C_6x3.asm
-//
-// Load reference 6x3 area for chroma NV12 4x4 MC
-
-
-//#if !defined(__LOADREF_C_6x3__) // Make sure this is only included once
-//#define __LOADREF_C_6x3__
-
-
-#ifdef DEV_ILK
- add (1) pMSGDSC:ud gMSGDSC_R:ud 0x00100010:ud
-#else
- add (1) pMSGDSC:ud gMSGDSC_R:ud 0x00010010:ud
-#endif // DEV_ILK
-
- // Compute integer and fractional components of MV
- asr (2) gMVX_INT<1>:w r[pMV,0]<2;2,1>:w 0x03:w {NoDDClr}
- and (2) gMVX_FRACC<1>:w r[pMV,0]<2;2,1>:w 0x07:w {NoDDChk}
-
- // Compute top-left corner position to be loaded
- mov (2) gMSGSRC.0<1>:d gMVX_INT<2;2,1>:w
- shl (1) gMSGSRC.0:d gMSGSRC.0:d 1:w
-
- // Read 8x3 pixels
- mov (1) gMSGSRC.2:ud 0x00020005:ud
- send (8) gudREFC(0)<1> mMSGHDRC gMSGSRC<8;8,1>:ud DAPREAD pMSGDSC:ud
-
-
-//#endif // !defined(__LOADREF_C_6x3__)
diff --git a/src/shaders/h264/mc/loadRef_Y_16x13.asm b/src/shaders/h264/mc/loadRef_Y_16x13.asm
deleted file mode 100644
index a384a6d..0000000
--- a/src/shaders/h264/mc/loadRef_Y_16x13.asm
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Load reference 16x13 area for luma 8x8 MC
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: LoadRef_Y_16x13.asm
-//
-// Load reference 16x13 area for luma 8x8 MC
-
-
-//#if !defined(__LOADREF_Y_16x13__) // Make sure this is only included once
-//#define __LOADREF_Y_16x13__
-
-#if 1
-
-#if 1
-
- // Check whether MVX is integer MV
- and.z.f0.0 (1) null:w r[pMV,0]<0;1,0>:w 0x3:w
-
- // Compute integer and fractional components of MV
- and (2) gMVX_FRAC<1>:w r[pMV,0]<2;2,1>:w 0x03:w //{NoDDClr}
- asr (2) gMVX_INT<1>:w r[pMV,0]<2;2,1>:w 0x02:w //{NoDDChk}
-
- // Check whether MVY is integer
- or.z.f0.1 (8) null:w gMVY_FRAC<0;1,0>:w 0:w
-
- // If MVX is a multiple of 4 (..., -4, 0, 4, ...) integer MV, do special handling
- (f0.0) jmpi (1) INTERLABEL(LOADREF_MVXZERO)
-
- // Set message descriptor
- (f0.1) add (1) pMSGDSC:ud gMSGDSC_R:ud RESP_LEN(4):ud
- (-f0.1) add (1) pMSGDSC:ud gMSGDSC_R:ud RESP_LEN(7):ud
-
- // Compute top-left corner position to be loaded
- // TODO: sel
- (-f0.1) add (2) gMSGSRC.0<1>:d gMVX_INT<2;2,1>:w -0x02:d //{NoDDClr}
- (-f0.1) mov (1) gMSGSRC.2:ud 0x000c000c:ud //{NoDDChk}
- (f0.1) add (1) gMSGSRC.0<1>:d gMVX_INT<0;1,0>:w -0x02:d //{NoDDClr}
- (f0.1) mov (1) gMSGSRC.1<1>:d gMVY_INT<0;1,0>:w //{NoDDChk,NoDDClr}
- (f0.1) mov (1) gMSGSRC.2:ud 0x0007000c:ud //{NoDDChk}
-
- // Read 16x13 pixels
- send (8) gudREF(0)<1> mMSGHDRY gMSGSRC<8;8,1>:ud DAPREAD pMSGDSC:ud
-
- jmpi INTERLABEL(EXIT_LOADREF_Y_16x13)
-
-INTERLABEL(LOADREF_MVXZERO):
-
- // Set message descriptor
-#ifdef DEV_ILK
- (f0.1) add (1) pMSGDSC:ud gMSGDSC_R:ud 0x00200000:ud
- (-f0.1) add (1) pMSGDSC:ud gMSGDSC_R:ud 0x00400000:ud
-#else
- (f0.1) add (1) pMSGDSC:ud gMSGDSC_R:ud 0x00020000:ud
- (-f0.1) add (1) pMSGDSC:ud gMSGDSC_R:ud 0x00040000:ud
-#endif
-
- // Compute top-left corner position to be loaded
- // TODO: sel
- mov (2) gMSGSRC.0<1>:d gMVX_INT<2;2,1>:w
- (-f0.1) add (1) gMSGSRC.1<1>:d gMVY_INT<0;1,0>:w -0x02:d
- (-f0.1) mov (1) gMSGSRC.2:ud 0x000c0007:ud //{NoDDChk}
- (f0.1) mov (1) gMSGSRC.2:ud 0x00070007:ud //{NoDDChk}
-
- // Read 16x13 pixels
- send (8) gudREF(0)<1> mMSGHDRY gMSGSRC<8;8,1>:ud DAPREAD pMSGDSC:ud
-
-
-#else
- // Compute integer and fractional components of MV
- and (2) gMVX_FRAC<1>:w r[pMV,0]<2;2,1>:w 0x03:w //{NoDDClr}
- asr (2) gMVX_INT<1>:w r[pMV,0]<2;2,1>:w 0x02:w //{NoDDChk}
-
- // Check whether MVY is integer
- or.z.f0.1 (8) null:w gMVY_FRAC<0;1,0>:w 0:w
-
- // Set message descriptor
-#ifdef DEV_ILK
- (f0.1) add (1) pMSGDSC:ud gMSGDSC_R:ud 0x00400000:ud
- (-f0.1) add (1) pMSGDSC:ud gMSGDSC_R:ud 0x00700000:ud
-#else
- (f0.1) add (1) pMSGDSC:ud gMSGDSC_R:ud 0x00040000:ud
- (-f0.1) add (1) pMSGDSC:ud gMSGDSC_R:ud 0x00070000:ud
-#endif
-
- // Compute top-left corner position to be loaded
- // TODO: sel
- (-f0.1) add (2) gMSGSRC.0<1>:d gMVX_INT<2;2,1>:w -0x02:d //{NoDDClr}
- (-f0.1) mov (1) gMSGSRC.2:ud 0x000c000c:ud //{NoDDChk}
- (f0.1) add (1) gMSGSRC.0<1>:d gMVX_INT<0;1,0>:w -0x02:d //{NoDDClr}
- (f0.1) mov (1) gMSGSRC.1<1>:d gMVY_INT<0;1,0>:w //{NoDDChk,NoDDClr}
- (f0.1) mov (1) gMSGSRC.2:ud 0x0007000c:ud //{NoDDChk}
-
- // Read 16x13 pixels
- send (8) gudREF(0)<1> mMSGHDRY gMSGSRC<8;8,1>:ud DAPREAD pMSGDSC:ud
-#endif
-
-#else
-
- // Compute integer and fractional components of MV
- and (2) gMVX_FRAC<1>:w r[pMV,0]<2;2,1>:w 0x03:w {NoDDClr} //
- asr (2) gMVX_INT<1>:w r[pMV,0]<2;2,1>:w 0x02:w {NoDDChk} //
-
- // Set message descriptor
-#ifdef DEV_ILK
- add (1) pMSGDSC:ud gMSGDSC_R:ud 0x00700000:ud
-#else
- add (1) pMSGDSC:ud gMSGDSC_R:ud 0x00070000:ud
-#endif // DEV_ILK
-
- // Compute top-left corner position to be loaded
- add (2) gMSGSRC.0<1>:d gMVX_INT<2;2,1>:w -0x02:d {NoDDClr} //
- mov (1) gMSGSRC.2:ud 0x000c000c:ud {NoDDChk} //
-
- // Read 16x13 pixels
- send (8) gudREF(0)<1> mMSGHDRY gMSGSRC<8;8,1>:ud DAPREAD pMSGDSC:ud
-
-#endif
-
-INTERLABEL(EXIT_LOADREF_Y_16x13):
-
-//#endif // !defined(__LOADREF_Y_16x13__)
diff --git a/src/shaders/h264/mc/loadRef_Y_16x9.asm b/src/shaders/h264/mc/loadRef_Y_16x9.asm
deleted file mode 100644
index efc901e..0000000
--- a/src/shaders/h264/mc/loadRef_Y_16x9.asm
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Load reference 16x9 area for luma 4x4 MC
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: LoadRef_Y_16x9.asm
-//
-// Load reference 16x9 area for luma 4x4 MC
-
-
-//#if !defined(__LOADREF_Y_16x9__) // Make sure this is only included once
-//#define __LOADREF_Y_16x9__
-
-#if 1
-
- // Compute integer and fractional components of MV
- and (2) gMVX_FRAC<1>:w r[pMV,0]<2;2,1>:w 0x03:w //{NoDDClr}
- asr (2) gMVX_INT<1>:w r[pMV,0]<2;2,1>:w 0x02:w //{NoDDChk}
-
- // Check whether MVY is integer
- or.z.f0.1 (8) null:w gMVY_FRAC<0;1,0>:w 0:w
-
- // Set message descriptor
- (f0.1) add (1) pMSGDSC:ud gMSGDSC_R:ud RESP_LEN(2):ud
- (-f0.1) add (1) pMSGDSC:ud gMSGDSC_R:ud RESP_LEN(5):ud
-
- // Compute top-left corner position to be loaded
- // TODO: sel
- (-f0.1) add (2) gMSGSRC.0<1>:d gMVX_INT<2;2,1>:w -0x02:d //{NoDDClr}
- (-f0.1) mov (1) gMSGSRC.2:ud 0x00080008:ud //{NoDDChk}
- (f0.1) add (1) gMSGSRC.0<1>:d gMVX_INT<0;1,0>:w -0x02:d //{NoDDClr}
- (f0.1) mov (1) gMSGSRC.1<1>:d gMVY_INT<0;1,0>:w //{NoDDChk,NoDDClr}
- (f0.1) mov (1) gMSGSRC.2:ud 0x00030008:ud //{NoDDChk}
-
- // Read 16x9 pixels
- send (8) gudREF(0)<1> mMSGHDRY gMSGSRC<8;8,1>:ud DAPREAD pMSGDSC:ud
-
-#else
-
- // Compute integer and fractional components of MV
- and (2) gMVX_FRAC<1>:w r[pMV,0]<2;2,1>:w 0x03:w {NoDDClr} //
- asr (2) gMVX_INT<1>:w r[pMV,0]<2;2,1>:w 0x02:w {NoDDChk} //
-
- // Set message descriptor
- add (1) pMSGDSC:ud gMSGDSC_R:ud RESP_LEN(5):ud
-
- // Compute top-left corner position to be loaded
- add (2) gMSGSRC.0<1>:d gMVX_INT<2;2,1>:w -0x02:d {NoDDClr} //
- mov (1) gMSGSRC.2:ud 0x00080008:ud {NoDDChk} //
-
- // Read 16x9 pixels
- send (8) gudREF(0)<1> mMSGHDRY gMSGSRC<8;8,1>:ud DAPREAD pMSGDSC:ud
-
-#endif
-
-
-//#endif // !defined(__LOADREF_Y_16x9__)
diff --git a/src/shaders/h264/mc/load_Intra_Ref_UV.asm b/src/shaders/h264/mc/load_Intra_Ref_UV.asm
deleted file mode 100644
index 28c765b..0000000
--- a/src/shaders/h264/mc/load_Intra_Ref_UV.asm
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Load all reference U/V samples from neighboring macroblocks
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__LOAD_INTRA_REF_UV__) // Make sure this is only included once
-#define __LOAD_INTRA_REF_UV__
-
-// Module name: load_Intra_Ref_UV.asm
-//
-// Load all reference U/V samples from neighboring macroblocks
-//
-// Note: Since loading of U/V data always follows writing of Y, the message descriptor is manipulated
-// to avoid recalculating due to frame/field variztions.
-
-// First load top 20x1 row U/V reference samples
-// 4 from macroblock D (actually use 2), 16 from macroblock B
-//
- shr (1) I_ORIY<1>:w I_ORIY<0;1,0>:w 1:w // Adjust I_ORIY for NV12 format
- add (2) MSGSRC.0<1>:d I_ORIX<2;2,1>:w TOP_REF_OFFSET<2;2,1>:b {NoDDClr} // Reference samples positioned at (-4, -1)
- mov (1) MSGSRC.2:ud 0x00000013:ud {NoDDChk} // Block width and height (20x1)
-
-// Update message descriptor based on previous Y block write
-//
-#ifdef DEV_ILK
- add (1) MSGDSC MSGDSC RESP_LEN(1)+DWBRMSGDSC_RC+DESTUV-DWBWMSGDSC_WC-0x10000000-DESTY:ud // Set message descriptor
-#else
- add (1) MSGDSC MSGDSC RESP_LEN(1)+DWBRMSGDSC_RC+DESTUV-DWBWMSGDSC_WC-0x00800000-DESTY:ud // Set message descriptor
-#endif // DEV_ILK
-
- send (8) INTRA_REF_TOP_D(0) MSGHDR MSGSRC<8;8,1>:ud DAPREAD MSGDSC
-
-// Then load left 4x8 reference samples (actually use 1x8 column)
-//
- add (1) MSGSRC.1<1>:d MSGSRC.1<0;1,0>:d 1:w {NoDDClr} // Reference samples positioned next row
- mov (1) MSGSRC.2:ud 0x00070003:ud {NoDDChk} // Block width and height (4x8)
- send (8) INTRA_REF_LEFT_D(0) MSGHDRUV MSGSRC<8;8,1>:ud DAPREAD MSGDSC
-
-// End of load_Intra_Ref_UV
-#endif // !defined(__LOAD_INTRA_REF_UV__)
diff --git a/src/shaders/h264/mc/load_Intra_Ref_Y.asm b/src/shaders/h264/mc/load_Intra_Ref_Y.asm
deleted file mode 100644
index 0671dfa..0000000
--- a/src/shaders/h264/mc/load_Intra_Ref_Y.asm
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Load all reference Y samples from neighboring macroblocks
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__LOAD_INTRA_REF_Y__) // Make sure this is only included once
-#define __LOAD_INTRA_REF_Y__
-
-// Module name: load_Intra_Ref_Y.asm
-//
-// Load all reference Y samples from neighboring macroblocks
-//
-load_Intra_Ref_Y:
-// shl (2) I_ORIX<1>:uw ORIX<2;2,1>:ub 4:w // Convert MB origin to pixel unit
-
-// First load top 28x1 row reference samples
-// 4 from macroblock D (actually use 1), 16 from macroblock B, and 8 from macroblock C
-//
- add (2) MSGSRC.0<1>:d I_ORIX<2;2,1>:w TOP_REF_OFFSET<2;2,1>:b {NoDDClr} // Reference samples positioned at (-4, -1)
- mov (1) MSGSRC.2:ud 0x0000001B:ud {NoDDChk} // Block width and height (28x1)
- add (1) MSGDSC REG_MBAFF_FIELD<0;1,0>:uw RESP_LEN(1)+DWBRMSGDSC_RC+DESTY:ud // Set message descriptor
- send (8) INTRA_REF_TOP_D(0) MSGHDRY0 MSGSRC<8;8,1>:ud DAPREAD MSGDSC
-
-// Then load left 4x16 reference samples (actually use 1x16 column)
-//
- add (1) MSGSRC.1<1>:d MSGSRC.1<0;1,0>:d 1:w {NoDDClr} // Reference samples positioned next row
- mov (1) MSGSRC.2:ud 0x00F0003:ud {NoDDChk} // Block width and height (4x16)
- add (1) MSGDSC MSGDSC RESP_LEN(1):ud // Need to read 1 more GRF register
- send (8) INTRA_REF_LEFT_D(0) MSGHDRY1 MSGSRC<8;8,1>:ud DAPREAD MSGDSC
-
- RETURN
-// End of load_Intra_Ref_Y
-#endif // !defined(__LOAD_INTRA_REF_Y__)
diff --git a/src/shaders/h264/mc/null.g4a b/src/shaders/h264/mc/null.g4a
deleted file mode 100644
index f138029..0000000
--- a/src/shaders/h264/mc/null.g4a
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Xiang Haihao <haihao.xiang@intel.com>
- *
- */
-define(`YUV_color',`0xFFFFFFFFUD')
-shl(2) g62.0<1>UD g3.4<2,2,1>UB 4UW {align1};
-mov(1) g62.8<1>UD 0x000f000fUD {align1};
-mov(16) m1<1>UD YUV_color {align1 compr};
-mov(16) m3<1>UD YUV_color {align1 compr};
-mov(16) m5<1>UD YUV_color {align1 compr};
-mov(16) m7<1>UD YUV_color {align1 compr};
-send(16) 0 acc0<1>UW g62<8,8,1>UW write(0, 0, 2, 0) mlen 9 rlen 0 {align1};
-
-shr(1) g62.4<1>UD g62.4<1,1,1>UD 1UW {align1};
-mov(1) g62.8<1>UD 0x0007000fUD {align1};
-mov(16) m1<1>UD YUV_color {align1 compr};
-mov(16) m3<1>UD YUV_color {align1 compr};
-send(16) 0 acc0<1>UW g62<8,8,1>UW write(1, 0, 2, 0) mlen 5 rlen 0 {align1};
-
-send(16) 0 acc0<1>UW g0<8,8,1>UW thread_spawner(0, 0, 0) mlen 1 rlen 0 {align1 EOT};
diff --git a/src/shaders/h264/mc/null.g4b b/src/shaders/h264/mc/null.g4b
deleted file mode 100644
index fdd18e6..0000000
--- a/src/shaders/h264/mc/null.g4b
+++ /dev/null
@@ -1,13 +0,0 @@
- { 0x00200009, 0x27c02e21, 0x00450064, 0x00040004 },
- { 0x00000001, 0x27c80061, 0x00000000, 0x000f000f },
- { 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
- { 0x00800031, 0x24001d28, 0x008d07c0, 0x05902000 },
- { 0x00000008, 0x27c42c21, 0x002107c4, 0x00010001 },
- { 0x00000001, 0x27c80061, 0x00000000, 0x0007000f },
- { 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
- { 0x00800031, 0x24001d28, 0x008d07c0, 0x05502001 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/src/shaders/h264/mc/null.g4b.gen5 b/src/shaders/h264/mc/null.g4b.gen5
deleted file mode 100644
index 7ecb90d..0000000
--- a/src/shaders/h264/mc/null.g4b.gen5
+++ /dev/null
@@ -1,13 +0,0 @@
- { 0x00200009, 0x27c02e21, 0x00450064, 0x00040004 },
- { 0x00000001, 0x27c80061, 0x00000000, 0x000f000f },
- { 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
- { 0x00800031, 0x24001d28, 0x508d07c0, 0x12082000 },
- { 0x00000008, 0x27c42c21, 0x002107c4, 0x00010001 },
- { 0x00000001, 0x27c80061, 0x00000000, 0x0007000f },
- { 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
- { 0x00800031, 0x24001d28, 0x508d07c0, 0x0a082001 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/src/shaders/h264/mc/recon_C_4x4.asm b/src/shaders/h264/mc/recon_C_4x4.asm
deleted file mode 100644
index 1b03a1a..0000000
--- a/src/shaders/h264/mc/recon_C_4x4.asm
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: Recon_C_4x4.asm
-//
-// $Revision: 11 $
-// $Date: 10/03/06 5:28p $
-//
-
-
-//#if !defined(__RECON_C_4x4__) // Make sure this is only included once
-//#define __RECON_C_4x4__
-
-
- // TODO: Use instruction compression
- add.sat (4) r[pERRORC,0]<2>:ub r[pERRORC,0]<4;4,1>:w gubCPRED(0)<16;4,4>
- add.sat (4) r[pERRORC,128]<2>:ub r[pERRORC,128]<4;4,1>:w gubCPRED(0,2)<16;4,4>
- add.sat (4) r[pERRORC,32]<2>:ub r[pERRORC,32]<4;4,1>:w gubCPRED(1)<16;4,4>
- add.sat (4) r[pERRORC,128+32]<2>:ub r[pERRORC,128+32]<4;4,1>:w gubCPRED(1,2)<16;4,4>
-
- add.sat (4) r[pERRORC,16]<2>:ub r[pERRORC,16]<4;4,1>:w gubCPRED(0,16)<16;4,4>
- add.sat (4) r[pERRORC,128+16]<2>:ub r[pERRORC,128+16]<4;4,1>:w gubCPRED(0,18)<16;4,4>
- add.sat (4) r[pERRORC,48]<2>:ub r[pERRORC,48]<4;4,1>:w gubCPRED(1,16)<16;4,4>
- add.sat (4) r[pERRORC,128+48]<2>:ub r[pERRORC,128+48]<4;4,1>:w gubCPRED(1,18)<16;4,4>
-
- // Increase chroma error block offset
-#ifndef MONO
- add (1) pERRORC:w pERRORC:w 8:w
-#endif
-
-
-//#endif // !defined(__RECON_C_4x4__)
diff --git a/src/shaders/h264/mc/recon_Y_8x8.asm b/src/shaders/h264/mc/recon_Y_8x8.asm
deleted file mode 100644
index 04cf13f..0000000
--- a/src/shaders/h264/mc/recon_Y_8x8.asm
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: Recon_Y_8x8.asm
-//
-// $Revision: 10 $
-// $Date: 9/22/06 2:50p $
-//
-
-
-//#if !defined(__RECON_Y_8x8__) // Make sure this is only included once
-//#define __RECON_Y_8x8__
-
-
- add.sat (16) r[pERRORY,0]<2>:ub r[pERRORY,0]<16;16,1>:w gubYPRED(0)
- add.sat (16) r[pERRORY,nGRFWIB]<2>:ub r[pERRORY,nGRFWIB]<16;16,1>:w gubYPRED(1)
- add.sat (16) r[pERRORY,nGRFWIB*2]<2>:ub r[pERRORY,nGRFWIB*2]<16;16,1>:w gubYPRED(2)
- add.sat (16) r[pERRORY,nGRFWIB*3]<2>:ub r[pERRORY,nGRFWIB*3]<16;16,1>:w gubYPRED(3)
-
- add (1) pERRORY:w pERRORY:w 128:w
-
-//#endif // !defined(__RECON_Y_8x8__)
diff --git a/src/shaders/h264/mc/roundShift_C_4x4.asm b/src/shaders/h264/mc/roundShift_C_4x4.asm
deleted file mode 100644
index 29a7a94..0000000
--- a/src/shaders/h264/mc/roundShift_C_4x4.asm
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: RoundShift_C_4x4.asm
-//
-// Do (...+32)>>6 to 4x4 (NV12 8x4) interpolated chrominance data
-//
-
-
-//#if !defined(__RoundShift_C_4x4__) // Make sure this is only included once
-//#define __RoundShift_C_4x4__
-
-
- // TODO: Optimize using instruction compression
- add (16) acc0<1>:w r[pRESULT,0]<16;16,1>:w 32:w
- add (16) acc1<1>:w r[pRESULT,nGRFWIB]<16;16,1>:w 32:w
- asr.sat (16) r[pRESULT,0]<2>:ub acc0<16;16,1>:w 6:w
- asr.sat (16) r[pRESULT,nGRFWIB]<2>:ub acc1<16;16,1>:w 6:w
-
-
-//#endif // !defined(__RoundShift_C_4x4__)
diff --git a/src/shaders/h264/mc/save_16x16_Y.asm b/src/shaders/h264/mc/save_16x16_Y.asm
deleted file mode 100644
index d539c87..0000000
--- a/src/shaders/h264/mc/save_16x16_Y.asm
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Save decoded Y picture data to frame buffer
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__SAVE_16X16_Y__) // Make sure this is only included once
-#define __SAVE_16X16_Y__
-
-// Module name: save_16x16_Y.asm
-//
-// Save decoded Y picture data to frame buffer
-//
-
-save_16x16_Y:
-
- mov (1) MSGSRC.2:ud 0x000F000F:ud {NoDDClr} // Block width and height (16x16)
- mov (2) MSGSRC.0:ud I_ORIX<2;2,1>:w {NoDDChk} // X, Y offset
-#ifdef DEV_ILK
- add (1) MSGDSC MSGDSC MSG_LEN(8)+DWBWMSGDSC_WC-DWBRMSGDSC_RC-0x00200000:ud // Set message descriptor
-#else
- add (1) MSGDSC MSGDSC MSG_LEN(8)+DWBWMSGDSC_WC-DWBRMSGDSC_RC-0x00020000:ud // Set message descriptor
-#endif // DEV_ILK
-
- mov (1) PDECBUF_UD<1>:ud 0x10001*DECBUF*GRFWIB+0x00400000:ud // Pointers to row 0 and 2 of decoded data
-
- $for(0,0; <8; 2,4) {
- mov (32) MSGPAYLOAD(%1)<1> r[PDECBUF, %2*GRFWIB]REGION(16,2) {Compr} // Block Y0/Y2
- mov (32) MSGPAYLOAD(%1,16)<1> r[PDECBUF, (1+%2)*GRFWIB]REGION(16,2) {Compr} // Block Y1/Y3
- }
-
-// Update message descriptor based on previous read setup
-//
- send (8) REG_WRITE_COMMIT_Y<1>:ud MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSGDSC
-
- RETURN
-// End of save_16x16_Y
-
-#endif // !defined(__SAVE_16X16_Y__)
diff --git a/src/shaders/h264/mc/save_4x4_Y.asm b/src/shaders/h264/mc/save_4x4_Y.asm
deleted file mode 100644
index 86eb319..0000000
--- a/src/shaders/h264/mc/save_4x4_Y.asm
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Save Intra_4x4 decoded Y picture data to frame buffer
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__SAVE_4X4_Y__) // Make sure this is only included once
-#define __SAVE_4X4_Y__
-
-// Module name: save_4x4_Y.asm
-//
-// Save Intra_4x4 decoded Y picture data to frame buffer
-// Note: Each 4x4 block is stored in 1 GRF register in the order of block raster scan order,
-// i.e. 0, 1, 4, 5, 2, 3, 6, 7, 8, 9, 12, 13, 10, 11, 14, 15
-
-save_4x4_Y:
-
- mov (1) MSGSRC.2:ud 0x000F000F:ud {NoDDClr} // Block width and height (16x16)
- mov (2) MSGSRC.0:ud I_ORIX<2;2,1>:w {NoDDChk} // X, Y offset
-#ifdef DEV_ILK
- add (1) MSGDSC MSGDSC MSG_LEN(8)+DWBWMSGDSC_WC-DWBRMSGDSC_RC-0x00200000:ud // Set message descriptor
-#else
- add (1) MSGDSC MSGDSC MSG_LEN(8)+DWBWMSGDSC_WC-DWBRMSGDSC_RC-0x00020000:ud // Set message descriptor
-#endif // DEV_ILK
-
- $for(0; <8; 2) {
- mov (16) MSGPAYLOAD(%1)<1> DEC_Y(%1)<16;4,1>
- mov (16) MSGPAYLOAD(%1,16)<1> DEC_Y(%1,4)<16;4,1>
- mov (16) MSGPAYLOAD(%1+1)<1> DEC_Y(%1,8)<16;4,1>
- mov (16) MSGPAYLOAD(%1+1,16)<1> DEC_Y(%1,12)<16;4,1>
- }
-
-// Update message descriptor based on previous read setup
-//
- send (8) REG_WRITE_COMMIT_Y<1>:ud MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSGDSC
-
- RETURN
-// End of save_4x4_Y
-
-#endif // !defined(__SAVE_4X4_Y__)
diff --git a/src/shaders/h264/mc/save_8x8_UV.asm b/src/shaders/h264/mc/save_8x8_UV.asm
deleted file mode 100644
index 78c721d..0000000
--- a/src/shaders/h264/mc/save_8x8_UV.asm
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Save decoded U/V picture data to frame buffer
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__SAVE_8x8_UV__) // Make sure this is only included once
-#define __SAVE_8x8_UV__
-
-// Module name: save_8x8_UV.asm
-//
-// Save decoded U/V picture data to frame buffer
-//
-
- mov (1) MSGSRC.2:ud 0x0007000F:ud {NoDDClr} // Block width and height (16x8)
- mov (2) MSGSRC.0<1>:ud I_ORIX<2;2,1>:w {NoDDChk} // I_ORIX has already been adjusted for NV12
-
-// Update message descriptor based on previous read setup
-//
-#ifdef DEV_ILK
- add (1) MSGDSC MSGDSC MSG_LEN(4)+DWBWMSGDSC_WC-DWBRMSGDSC_RC-0x00100000:ud // Set message descriptor
-#else
- add (1) MSGDSC MSGDSC MSG_LEN(4)+DWBWMSGDSC_WC-DWBRMSGDSC_RC-0x00010000:ud // Set message descriptor
-#endif // DEV_ILK
-
-// Write U/V picture data
-//
-#ifndef MONO
- mov MSGPAYLOAD(0,0)<1> DEC_UV(0)REGION(16,2) // U/V row 0
- mov MSGPAYLOAD(0,16)<1> DEC_UV(1)REGION(16,2) // U/V row 1
- mov MSGPAYLOAD(1,0)<1> DEC_UV(2)REGION(16,2) // U/V row 2
- mov MSGPAYLOAD(1,16)<1> DEC_UV(3)REGION(16,2) // U/V row 3
- mov MSGPAYLOAD(2,0)<1> DEC_UV(4)REGION(16,2) // U/V row 4
- mov MSGPAYLOAD(2,16)<1> DEC_UV(5)REGION(16,2) // U/V row 5
- mov MSGPAYLOAD(3,0)<1> DEC_UV(6)REGION(16,2) // U/V row 6
- mov MSGPAYLOAD(3,16)<1> DEC_UV(7)REGION(16,2) // U/V row 7
-#else // defined(MONO)
- $for(0; <4; 2) {
- mov (16) MSGPAYLOADD(%1)<1> 0x80808080:ud {Compr}
- }
-
-#endif // !defined(MONO)
-
- send (8) REG_WRITE_COMMIT_UV<1>:ud MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSGDSC
-
-// End of save_8x8_UV
-
-#endif // !defined(__SAVE_8x8_UV__)
diff --git a/src/shaders/h264/mc/save_8x8_Y.asm b/src/shaders/h264/mc/save_8x8_Y.asm
deleted file mode 100644
index 71dc70f..0000000
--- a/src/shaders/h264/mc/save_8x8_Y.asm
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Save Intra_8x8 decoded Y picture data to frame buffer
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__SAVE_8X8_Y__) // Make sure this is only included once
-#define __SAVE_8X8_Y__
-
-// Module name: save_8x8_Y.asm
-//
-// Save Intra_8x8 decoded Y picture data to frame buffer
-// NotE: Every 4 rows of Y data are interleaved with the horizontal neighboring blcok
-//
-save_8x8_Y:
-
- mov (1) MSGSRC.2:ud 0x000F000F:ud {NoDDClr} // Block width and height (16x16)
- mov (2) MSGSRC.0:ud I_ORIX<2;2,1>:w {NoDDChk} // X, Y offset
-
-// Update message descriptor based on previous read setup
-//
-#ifdef DEV_ILK
- add (1) MSGDSC MSGDSC MSG_LEN(8)+DWBWMSGDSC_WC-DWBRMSGDSC_RC-0x00200000:ud // Set message descriptor
-#else
- add (1) MSGDSC MSGDSC MSG_LEN(8)+DWBWMSGDSC_WC-DWBRMSGDSC_RC-0x00020000:ud // Set message descriptor
-#endif // DEV_ILK
-
- mov (16) MSGPAYLOAD(0)<1> DEC_Y(0)<32;8,1>
- mov (16) MSGPAYLOAD(0,16)<1> DEC_Y(0,8)<32;8,1>
- mov (16) MSGPAYLOAD(1,0)<1> DEC_Y(0,16)<32;8,1>
- mov (16) MSGPAYLOAD(1,16)<1> DEC_Y(0,24)<32;8,1>
-
- mov (16) MSGPAYLOAD(2)<1> DEC_Y(2)<32;8,1>
- mov (16) MSGPAYLOAD(2,16)<1> DEC_Y(2,8)<32;8,1>
- mov (16) MSGPAYLOAD(3,0)<1> DEC_Y(2,16)<32;8,1>
- mov (16) MSGPAYLOAD(3,16)<1> DEC_Y(2,24)<32;8,1>
-
- mov (16) MSGPAYLOAD(4)<1> DEC_Y(4)<32;8,1>
- mov (16) MSGPAYLOAD(4,16)<1> DEC_Y(4,8)<32;8,1>
- mov (16) MSGPAYLOAD(5,0)<1> DEC_Y(4,16)<32;8,1>
- mov (16) MSGPAYLOAD(5,16)<1> DEC_Y(4,24)<32;8,1>
-
- mov (16) MSGPAYLOAD(6)<1> DEC_Y(6)<32;8,1>
- mov (16) MSGPAYLOAD(6,16)<1> DEC_Y(6,8)<32;8,1>
- mov (16) MSGPAYLOAD(7,0)<1> DEC_Y(6,16)<32;8,1>
- mov (16) MSGPAYLOAD(7,16)<1> DEC_Y(6,24)<32;8,1>
-
- send (8) REG_WRITE_COMMIT_Y<1>:ud MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSGDSC
-
- RETURN
-// End of save_8x8_Y
-
-#endif // !defined(__SAVE_8X8_Y__)
diff --git a/src/shaders/h264/mc/save_I_PCM.asm b/src/shaders/h264/mc/save_I_PCM.asm
deleted file mode 100644
index e1e6a9d..0000000
--- a/src/shaders/h264/mc/save_I_PCM.asm
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Save I_PCM Y samples to Y picture buffer
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: save_I_PCM.asm
-//
-// First save I_PCM Y samples to Y picture buffer
-//
- mov (1) MSGSRC.2:ud 0x000F000F:ud {NoDDClr} // Block width and height (16x16)
- shl (2) MSGSRC.0:ud ORIX<2;2,1>:ub 4:w {NoDDChk} // Convert MB origin in pixel unit
-
- add (1) MSGDSC REG_MBAFF_FIELD<0;1,0>:uw MSG_LEN(8)+DWBWMSGDSC_WC+DESTY:ud // Set message descriptor
-
- $for(0; <8; 2) {
- mov (32) MSGPAYLOAD(%1)<1> I_PCM_Y(%1)REGION(16,1) {Compr,NoDDClr}
- mov (32) MSGPAYLOAD(%1,16)<1> I_PCM_Y(%1,16)REGION(16,1) {Compr,NoDDChk}
- }
-
- send (8) REG_WRITE_COMMIT_Y<1>:ud MSGHDR MSGSRC<8;8,1>:ud DAPWRITE MSGDSC
-
-// Then save I_PCM U/V samples to U/V picture buffer
-//
- mov (1) MSGHDR.2:ud 0x0007000F:ud {NoDDClr} // Block width and height (16x8)
- asr (1) MSGHDR.1:ud MSGSRC.1<0;1,0>:ud 1:w {NoDDChk} // Y offset should be halved
- add (1) MSGDSC MSGDSC 0x0-MSG_LEN(4)+0x1:d // Set message descriptor for U/V
-
-#if 0
- and.z.f0.0 (1) NULLREG REG_CHROMA_FORMAT_IDC CHROMA_FORMAT_IDC:ud
- (f0.0) jmpi (1) MONOCHROME_I_PCM
-#endif
-
-#ifndef MONO
-// Non-monochrome picture
-//
- $for(0,0; <4; 2,1) {
- mov (16) MSGPAYLOAD(%1)<2> I_PCM_UV(%2)REGION(16,1) // U data
- mov (16) MSGPAYLOAD(%1,1)<2> I_PCM_UV(%2+2)REGION(16,1) // V data
- mov (16) MSGPAYLOAD(%1+1)<2> I_PCM_UV(%2,16)REGION(16,1) // U data
- mov (16) MSGPAYLOAD(%1+1,1)<2> I_PCM_UV(%2+2,16)REGION(16,1) // V data
- }
-#else // defined(MONO)
-MONOCHROME_I_PCM:
- $for(0; <4; 2) {
- mov (16) MSGPAYLOADD(%1)<1> 0x80808080:ud {Compr}
- }
-
-#endif // !defined(MONO)
-
- send (8) REG_WRITE_COMMIT_UV<1>:ud MSGHDR null:ud DAPWRITE MSGDSC
-
-// End of save_I_PCM
diff --git a/src/shaders/h264/mc/scoreboard.asm b/src/shaders/h264/mc/scoreboard.asm
deleted file mode 100644
index 54a619e..0000000
--- a/src/shaders/h264/mc/scoreboard.asm
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- * Dependency control scoreboard kernel
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: scoreboard.asm
-//
-// Dependency control scoreboard kernel
-//
-// $Revision: 16 $
-// $Date: 10/18/06 4:10p $
-//
-
-// ----------------------------------------------------
-// Main: scoreboard
-// ----------------------------------------------------
-// ----------------------------------------------------
-// Scoreboard structure
-// ----------------------------------------------------
-//
-// 1 DWORD per thread
-//
-// Bit 31: "Checking" thread, i.e. an intra MB that sends "check dependency" message
-// Bit 30: "Completed" thread. This bit set by an "update" message from intra/inter MB.
-// Bits 29:28: Must set to 0
-// Bits 27:24: EUID
-// Bits 23:18: Reserved
-// Bits 17:16: TID
-// Bits 15:8: X offset of current MB
-// Bits 15:5: Reserved
-// Bits 4:0: 5 bits of available neighbor MB flags
-
-.kernel scoreboard
-SCOREBOARD:
-
-#ifdef _DEBUG
-// WA for FULSIM so we'll know which kernel is being debugged
-mov (1) acc0:ud 0xf0aa55a5:ud
-#endif
-
-#include "header.inc"
-#include "scoreboard_header.inc"
-
-//
-// Now, begin source code....
-//
-
-.code
-
-#ifdef AS_ENABLED
- and.z.f0.1 (1) NULLREG r0.2<0;1,0>:ud TH_RES // Is this a restarted thread previously interrupted?
- (f0.1) jmpi (1) Scoreboard_Init
-
- #include "scoreboard_restore_AS.asm"
-
- jmpi (1) Scoreboard_OpenGW
-Scoreboard_Init:
-#endif // End AS_ENABLED
-
-// Scoreboard must be initialized to 0xc000ffff, meaning all "completed"
-// And it also avoids message mis-handling for the first MB
- $for(0; <32; 2) {
- mov (16) CMD_SB(%1)<1> 0xc000ffff:ud {Compr}
- }
-#ifdef DOUBLE_SB // Scoreboard size needs to be doubled
- $for(32; <64; 2) {
- mov (16) CMD_SB(%1)<1> 0xc000ffff:ud {Compr}
- }
-#endif // DOUBLE_SB
-
-//----------------------------------------------------------
-// Open message gateway for the scoreboard thread
-//
-// RegBase = r4 (0x04)
-// Gateway Size = 64 GRF registers (0x6)
-// Dispatch ID = r0.20:ub
-// Scoreboard Thread Key = 0
-//----------------------------------------------------------
-Scoreboard_OpenGW:
- mov (8) MSGHDRY0<1>:ud 0x00000000:ud // Initialize message header payload with 0
-
- // Send a message with register base RegBase=0x04(r4) and Gateway size = 0x6 = 64 GRF reg and Key = 0
- // 000 00000100 00000 00000 110 00000000 ==> 0000 0000 1000 0000 0000 0110 0000 0000
-#ifdef AS_ENABLED
- add (1) MSGHDRY0.5<1>:ud r0.20:ub 0x00800700:ud // Allocate 128 GRFs for message gateway - for SIP to send notification MSG
-#else
- #ifdef DOUBLE_SB
- add (1) MSGHDRY0.5<1>:ud r0.20:ub 0x00800600:ud // 64 GRF's for CTG-B
- #else
- add (1) MSGHDRY0.5<1>:ud r0.20:ub 0x00800500:ud // 32 GRF's for CTG-A
- #endif // DOUBLE_SB
-#endif
- send (8) NULLREG MSGHDRY0 null:ud MSG_GW OGWMSGDSC
-
-//------------------------------------------------------------------------
-// Send Thread Spawning Message to start dispatching macroblock threads
-//
-//------------------------------------------------------------------------
-#ifdef AS_ENABLED
- mov (8) acc0<1>:ud CMD_SB(31)<8;8,1> // Ensure scoreboard data have been completely restored
-#endif // End AS_ENABLED
- mov (8) MSGHDRY1<1>:ud r0<8;8,1>:ud // Initialize message header payload with R0
- mov (1) MSGHDRY1.4<1>:ud 0x00000400:ud // Dispatch URB length = 1
-
- send (8) NULLREG MSGHDRY1 null:ud TS TSMSGDSC
-
- mov (8) MSGHDRY0<1>:ud 0x00000000:ud // Initialize message header payload with 0
-
-//------------------------------------------------------------------------
-// Scoreboard control data initialization
-//------------------------------------------------------------------------
-#ifdef AS_ENABLED
- or (1) cr0.1:ud cr0.1:ud AS_INT_EN // Enable interrupt
- (f0.1) jmpi (1) Scoreboard_State_Init // Jump if not restarted thread
-
- // Restore scoreboard kernel control data to r1 - r3
- mov (1) m4.1:ud 64:ud // Starting r1
- mov (1) m4.2:ud 0x0002001f:ud // for 3 registers
- send (8) r1.0<1>:ud m4 null:ud DWBRMSGDSC_SC+0x00030000+AS_SAVE // Restore r1 - r3
- mov (8) a0.0<1>:uw AR_SAVE<8;8,1>:uw // Restore all address registers
-
-// Check whether all MBs have been decoded
- cmp.e.f0.0 (1) NULLREG TotalMB<0;1,0>:w 0:w // Set "Last MB" flag
- (-f0.0) jmpi (1) Before_First_MB
- END_THREAD
-
-// Check whether it is before the first MB
-Before_First_MB:
- cmp.e.f0.0 (1) NULLREG AVAILFLAGD<1>:ud 0x08020401:ud // in ACBD order
- (f0.0) jmpi (1) Wavefront_Walk
-
-Scoreboard_State_Init:
-#endif // End AS_ENABLED
- mov (2) WFLen_B<2>:w HEIGHTINMB_1<0;1,0>:w
- mov (1) AVAILFLAGD<1>:ud 0x08020401:ud // in ACBD order
- mov (1) CASE00PTR<1>:ud Notify_MSG_IP-No_Message_IP:ud // Inter kernel starts
- mov (1) CASE10PTR<1>:ud Dependency_Check_IP-No_Message_IP:ud // Intra kernel starts
-#ifdef AS_ENABLED
- mov (1) CASE11PTR<1>:ud 0:ud // No message
-#else
- mov (1) CASE11PTR<1>:ud MB_Loop_IP-No_Message_IP:ud // No message
-#endif // End AS_ENABLED
- mov (1) StartXD<1>:ud 0:ud
- mov (1) NewWFOffsetD<1>:ud 0x01ffff00:ud
-
- mov (4) WFStart(0)<1> 0xffff:w
- mov (1) WFStart(0)<1> 0:w
-
- mov (8) a0.0<1>:uw 0x0:uw // Initialize all pointers to 0
-
-//------------------------------------------------------------------------
-// Scoreboard message handling loop
-//------------------------------------------------------------------------
-//
-Scoreboard_Loop:
- // Calculate current wavefront length
- add.ge.f0.1 (16) acc0<1>:w StartX<0;1,0>:w 0:w // Used for x>2*y check
- mac.g.f0.0 (16) NULLREGW WFLenY<0;1,0>:w -2:w // X - 2*Y > 0 ??
- (f0.0) mov (1) WFLen<1>:w WFLenY<0;1,0>:w // Use smaller vertical wavefront length
- (-f0.0) asr.sat (1) WFLen<1>:uw StartX<0;1,0>:w 1:w // Horizontal wavefront length is smaller
-
- // Initialize 5-MB group
-#ifdef ONE_MB_WA
- mov (2) MBINDEX(0)<1> WFStart(0)<2;2,1>
- (f0.1) add (4) MBINDEX(0,2)<1> WFStart(0,1)<4;4,1> -1:w
- (-f0.1) add (4) MBINDEX(0,2)<1> WFStart(0,0)<4;4,1> -1:w
- (-f0.1) mov (1) StartX<1>:w 0:w // WA for 1-MB wide pictures
-#else
- mov (2) MBINDEX(0)<1> WFStart(0)<2;2,1> {NoDDClr}
- add (4) MBINDEX(0,2)<1> WFStart(0,1)<4;4,1> -1:w {NoDDChk}
-#endif
-
- // Update WFStart
- mov (8) acc0<1>:w WFStart(0)<0;1,0> // Move WFStart(0) to acc0 to remove dependency later
- mov (4) WFStart(0,1)<1> WFStart(0)<4;4,1> {NoDDClr} // Shift WFStart(0:2) to WFStart(1:3)
- add (1) WFStart(0)<1> acc0.0<0;1,0>:w WFLen<0;1,0>:w {NoDDChk} // WFStart(0) = WFStart(0) + WFLen
-
- mul (8) MBINDEX(0)<1> MBINDEX(0)<8;8,1> 4:w // Adjust MB order # to be DWORD aligned
- and (1) DEPPTR<1>:uw acc0<0;1,0>:w SB_MASK*4:uw {NoDDClr} // Wrap around scoreboard entries for current MB
- and (4) DEPPTRL<1>:uw acc0.1<4;4,1>:w SB_MASK*4:uw {NoDDChk} // Wrap around scoreboard entries for neighbor MBs
-
-Wavefront_Walk:
- wait n0:ud
-// Check for combined "checking" or "completed" threads in forwarded message
-// 2 MSB of scoreboard message indicate:
-// 0b00 = "inter start" message
-// 0b10 = "intra start" message
-// 0b11 = "No Message" or "inter complete" message
-// 0b01 = Reserved (should never occur)
-//
-MB_Loop:
- shr (1) PMSGSEL<1>:uw r[CMDPTR,CMD_SB_REG_OFF*GRFWIB+2]<0;1,0>:uw 12:w // DWORD aligned pointer to message handler
- and.nz.f0.1 (4) NULLREG r[CMDPTR,CMD_SB_REG_OFF*GRFWIB]<0;1,0>:ub AVAILFLAG<4;4,1>:ub // f0.1 4 LSB will have the available flags in ACBD order
- mov (1) MSGHDRY0.4<1>:ud r[CMDPTR,CMD_SB_REG_OFF*GRFWIB]<0;1,0>:ud // Copy MB thread info from scoreboard
- jmpi (1) r[PMSGSEL, INLINE_REG_OFF*GRFWIB+16]<0;1,0>:d
-
-// Now determine whether this is "inter done" or "no message"
-// through checking debug_counter
-//
-No_Message:
-#ifdef AS_ENABLED
- cmp.z.f0.1 (1) NULLREG n0:ud 0 // Are all messages handled?
- and.z.f0.0 (1) NULLREG cr0.1:ud AS_INT // Poll interrupt bit
- (-f0.1) jmpi (1) MB_Loop // Continue polling the remaining message from current thread
-
-// All messages have been handled
- (f0.0) jmpi (1) Wavefront_Walk // No interrupt occurs. Wait for next one
-
-// Interrupt has been detected
-// Save all contents and terminate the scoreboard
-//
- #include "scoreboard_save_AS.asm"
-
- // Save scoreboard control data as well
- //
- mov (8) AR_SAVE<1>:uw a0.0<8;8,1>:uw // All address registers needs to be saved
- mov (1) MSGHDR.1:ud 64:ud
- mov (1) MSGHDR.2:ud 0x0002001f:ud // for 3 registers
- $for(0; <3; 1) {
- mov (8) MSGPAYLOADD(%1)<1> CMD_SB(%1-3)REGION(8,1)
- }
- send (8) NULLREG MSGHDR null:ud DWBWMSGDSC+0x00300000+AS_SAVE // Save r1 - r3
-
- send (8) NULLREG MSGHDR r0:ud EOTMSGDSC+TH_INT // Terminate with "Thread Interrupted" bit set
-#endif // End AS_ENABLED
-
-Dependency_Check:
-// Current thread is "checking" but not "completed" (0b10 case).
-// Check for dependency clear using all availability bits
-//
- (f0.1) and.z.f0.1 (4) NULLREG r[DEPPTRL,CMD_SB_REG_OFF*GRFWIB+3]<1,0>:ub DONEFLAG:uw // f0.1 4 LSB contains dependency clear
- (f0.1.any4h) jmpi (1) Dependency_Check // Dependency not clear, keep polling..
-
-// "Checking" thread and dependency cleared, send a message to let the thread go
-//
-Notify_MSG:
- send (8) NULLREG MSGHDRY0 null:ud MSG_GW FWDMSGDSC+NOTIFYMSG
-
-// Current macroblock has been serviced. Update to next macroblock in special zig-zag order
-//
-Update_CurMB:
-#if 0
- add.ge.f0.0 (1) WFLen<1>:w WFLen<0;1,0>:w -1:w // Set "End of wavefront" flag
- add (1) TotalMB<1>:w TotalMB<0;1,0>:w -1:w // Decrement "TotalMB"
-#else
- add.ge.f0.0 (2) TotalMB<2>:w TotalMB<4;2,2>:w -1:w // Set "End of wavefront" flag and decrement "TotalMB"
-#endif
- add (8) MBINDEX(0)<1> MBINDEX(0)<8;8,1> 4:w // Increment MB indices
- and (1) DEPPTR<1>:uw acc0<0;1,0>:w SB_MASK*4:uw {NoDDClr} // Wrap around 256 scoreboard entries for current MB
- and (4) DEPPTRL<1>:uw acc0.1<4;4,1>:w SB_MASK*4:uw {NoDDChk} // Wrap around 256 scoreboard entries for neighbor MBs
- cmp.e.f0.1 (16) NULLREGW StartX<0;1,0>:uw WIDTHINMB_1<0;1,0>:uw // Set "on picture right boundary" flag
-#if 0
- (f0.0) jmpi (1) Wavefront_Walk // Continue wavefront walking
-#else
- (f0.0.all2h) jmpi (1) Wavefront_Walk // Continue wavefront walking
-#endif
-
-// Start new wavefront
-//
- cmp.e.f0.0 (1) NULLREG TotalMB<0;1,0>:w 0:w // Set "Last MB" flag
- (f0.1) add (4) WFLen<1>:w WFLen<4;4,1>:w NewWFOffset<4;4,1>:b
- (f0.1) add (4) WFStart(0)<1> WFStart(0)<4;4,1> 1:w
- (-f0.1) add (1) StartX<1>:w StartX<0;1,0>:w 1:w // Move to right MB
- (-f0.1) add (1) WFStart(0)<1> WFStart(0)<0;1,0> 1:w
-
- (-f0.0) jmpi (1) Scoreboard_Loop // Not last MB, start new wavefront walking
-
-// All MBs have decoded. Terminate the thread now
-//
- END_THREAD
-
-#if !defined(COMBINED_KERNEL) // For standalone kernel only
-.end_code
-
-.end_kernel
-#endif
-
-// End of scoreboard
diff --git a/src/shaders/h264/mc/scoreboard_MBAFF.asm b/src/shaders/h264/mc/scoreboard_MBAFF.asm
deleted file mode 100644
index 1a6472a..0000000
--- a/src/shaders/h264/mc/scoreboard_MBAFF.asm
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * Dependency control scoreboard kernel for MBAFF frame
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: scoreboard_MBAFF.asm
-//
-// Dependency control scoreboard kernel for MBAFF frame
-//
-// $Revision: 16 $
-// $Date: 10/18/06 4:10p $
-//
-
-// ----------------------------------------------------
-// Main: scoreboard_MBAFF
-// ----------------------------------------------------
-// ----------------------------------------------------
-// Scoreboard structure
-// ----------------------------------------------------
-//
-// 1 DWORD per thread
-//
-// Bit 31: "Checking" thread, i.e. an intra MB that sends "check dependency" message
-// Bit 30: "Completed" thread. This bit set by an "update" message from intra/inter MB.
-// Bits 29:28: Must set to 0
-// Bits 27:24: EUID
-// Bits 23:18: Reserved
-// Bits 17:16: TID
-// Bits 15:8: X offset of current MB
-// Bits 15:5: Reserved
-// Bits 4:0: 5 bits of available neighbor MB flags
-
-.kernel scoreboard_MBAFF
-SCOREBOARD_MBAFF:
-
-#ifdef _DEBUG
-// WA for FULSIM so we'll know which kernel is being debugged
-mov (1) acc0:ud 0xffaa55a5:ud
-#endif
-
-#include "header.inc"
-#include "scoreboard_header.inc"
-
-//
-// Now, begin source code....
-//
-
-.code
-
-#ifdef AS_ENABLED
- and.z.f0.1 (1) NULLREG r0.2<0;1,0>:ud TH_RES // Is this a restarted thread previously interrupted?
- (f0.1) jmpi (1) MBAFF_Scoreboard_Init
-
- #include "scoreboard_restore_AS.asm"
-
- jmpi (1) MBAFF_Scoreboard_OpenGW
-MBAFF_Scoreboard_Init:
-#endif // End AS_ENABLED
-
-// Scoreboard must be initialized to 0xc000ffff, meaning all "completed"
-// And it also avoids message mis-handling for the first MB
- $for(0; <32; 2) {
- mov (16) CMD_SB(%1)<1> 0xc000ffff:ud {Compr}
- }
-#ifdef DOUBLE_SB // Scoreboard size needs to be doubled
- $for(32; <64; 2) {
- mov (16) CMD_SB(%1)<1> 0xc000ffff:ud {Compr}
- }
-#endif // DOUBLE_SB
-
-//----------------------------------------------------------
-// Open message gateway for the scoreboard thread
-//
-// RegBase = r4 (0x04)
-// Gateway Size = 64 GRF registers (0x6)
-// Dispatch ID = r0.20:ub
-// Scoreboard Thread Key = 0
-//----------------------------------------------------------
-MBAFF_Scoreboard_OpenGW:
- mov (8) MSGHDRY0<1>:ud 0x00000000:ud // Initialize message header payload with 0
-
- // Send a message with register base RegBase=0x04(r4) and Gateway size = 0x6 = 64 GRF reg and Key = 0
- // 000 00000100 00000 00000 110 00000000 ==> 0000 0000 1000 0000 0000 0110 0000 0000
-#ifdef AS_ENABLED
- add (1) MSGHDRY0.5<1>:ud r0.20:ub 0x00800700:ud // Allocate 128 GRFs for message gateway - for SIP to send notification MSG
-#else
- #ifdef DOUBLE_SB
- add (1) MSGHDRY0.5<1>:ud r0.20:ub 0x00800600:ud // 64 GRF's for CTG-B
- #else
- add (1) MSGHDRY0.5<1>:ud r0.20:ub 0x00800500:ud // 32 GRF's for CTG-A
- #endif // DOUBLE_SB
-#endif
-
- send (8) NULLREG MSGHDRY0 null:ud MSG_GW OGWMSGDSC
-
-//------------------------------------------------------------------------
-// Send Thread Spawning Message to start dispatching macroblock threads
-//
-//------------------------------------------------------------------------
-#ifdef AS_ENABLED
- mov (8) acc0<1>:ud CMD_SB(31)<8;8,1> // Ensure scoreboard data have been completely restored
-#endif // End AS_ENABLED
- mov (8) MSGHDRY1<1>:ud r0<8;8,1>:ud // Initialize message header payload with R0
- mov (1) MSGHDRY1.4<1>:ud 0x00000400:ud // Dispatch URB length = 1
-
- send (8) NULLREG MSGHDRY1 null:ud TS TSMSGDSC
-
- mov (8) MSGHDRY0<1>:ud 0x00000000:ud // Initialize message header payload with 0
-
-//------------------------------------------------------------------------
-// Scoreboard control data initialization
-//------------------------------------------------------------------------
-#ifdef AS_ENABLED
- or (1) cr0.1:ud cr0.1:ud AS_INT_EN // Enable interrupt
- (f0.1) jmpi (1) MBAFF_Scoreboard_State_Init // Jump if not restarted thread
-
- // Restore scoreboard kernel control data to r1 - r3
- mov (1) m4.1:ud 64:ud // Starting r1
- mov (1) m4.2:ud 0x0002001f:ud // for 3 registers
- send (8) r1.0<1>:ud m4 null:ud DWBRMSGDSC_SC+0x00030000+AS_SAVE // Restore r1 - r3
- and (1) CMDPTR<1>:uw MBINDEX(0)<0;1,0> SB_MASK*4:uw // Restore scoreboard entries for current MB
-
-// EOT if all MBs have been decoded
- cmp.e.f0.0 (1) NULLREG TotalMB<0;1,0>:w 0:w // Set "Last MB" flag
- (-f0.0) jmpi (1) MBAFF_Before_First_MB
- END_THREAD
-
-// Check whether it is before the first MB
-MBAFF_Before_First_MB:
- cmp.e.f0.0 (1) NULLREG AVAILFLAGD<1>:ud 0x08020401:ud // in ACBD order
- (f0.0) jmpi (1) MBAFF_Wavefront_Walk
-
-MBAFF_Scoreboard_State_Init:
-#endif // End AS_ENABLED
- mov (2) WFLen_B<2>:w HEIGHTINMB_1<0;1,0>:w
- mov (1) AVAILFLAGD<1>:ud 0x08020401:ud // in ACBD order
- mov (1) AVAILFLAG1D<1>:ud 0x08020410:ud // in A_C_B_D_ order
- mov (1) CASE00PTR<1>:ud MBAFF_Notify_MSG_IP-MBAFF_No_Message_IP:ud // Inter kernel starts
- mov (1) CASE10PTR<1>:ud MBAFF_Dependency_Check_IP-MBAFF_No_Message_IP:ud // Intra kernel starts
-#ifdef AS_ENABLED
- mov (1) CASE11PTR<1>:ud 0:ud // No message
-#else
- mov (1) CASE11PTR<1>:ud MBAFF_MB_Loop_IP-MBAFF_No_Message_IP:ud // No message
-#endif // End AS_ENABLED
- mov (1) StartXD<1>:ud 0:ud
- mov (1) NewWFOffsetD<1>:ud 0x01ffff00:ud
-
- mov (8) WFStart_T(0)<1> 0xffff:w
- mov (1) WFStart_T(0)<1> 0:w
-
- mov (8) a0.0<1>:uw 0x0:uw // Initialize all pointers to 0
-
-//------------------------------------------------------------------------
-// Scoreboard message handling loop
-//------------------------------------------------------------------------
-//
-MBAFF_Scoreboard_Loop:
-// Calculate current wavefront length (same for top and bottom MB wavefronts)
- add.ge.f0.1 (16) acc0<1>:w StartX<0;1,0>:w 0:w // Used for x>2*y check
- mac.g.f0.0 (16) NULLREGW WFLenY<0;1,0>:w -2:w // X - 2*Y > 0 ??
- (f0.0) mov (2) WFLen_B<1>:w WFLenY<0;1,0>:w // Use smaller vertical wavefront length
- (f0.0) mov (1) WFLen_Save<1>:w WFLenY<0;1,0>:w // Save current wave front length
- (-f0.0) asr.sat (2) WFLen_B<1>:uw StartX<0;1,0>:w 1:w // Horizontal wavefront length is smaller
- (-f0.0) asr.sat (1) WFLen_Save<1>:uw StartX<0;1,0>:w 1:w // Save current wave front length
-
-// Initialize 9-MB group for top macroblock wavefront
-#ifdef ONE_MB_WA_MBAFF
- mov (2) MBINDEX(0)<1> WFStart_T(0)<2;2,1>
- (f0.1) add (4) MBINDEX(0,2)<1> WFStart_B(0,1)<4;4,1> -1:w
- (-f0.1) add (4) MBINDEX(0,2)<1> WFStart_B(0,0)<4;4,1> -1:w
- mov (1) MBINDEX(0,5)<1> WFStart_B(0,1)<0;1,0>
- (-f0.1) mov (1) StartX<1>:w 0:w // WA for 1-MB wide pictures
-#else
- mov (2) MBINDEX(0)<1> WFStart_T(0)<2;2,1> {NoDDClr}
- add (4) MBINDEX(0,2)<1> WFStart_B(0,1)<4;4,1> -1:w {NoDDChk,NoDDClr}
- mov (1) MBINDEX(0,5)<1> WFStart_B(0,1)<0;1,0> {NoDDChk,NoDDClr}
- add (4) MBINDEX(0,6)<1> WFStart_T(0,1)<4;4,1> -1:w {NoDDChk} // Upper MB group (C_B_D_x)
-#endif
-
-// Update WFStart_B[0]
- add (8) acc0<1>:w WFLen<0;1,0>:w 1:w // WFLen + 1
- add (1) WFStart_B(0,0)<1> acc0<0;1,0>:w WFStart_T(0,0)<0;1,0> // WFStart_T[0] + WFLen + 1
-
-MBAFF_Start_Wavefront:
- mul (16) MBINDEX(0)<1> MBINDEX(0)REGION(16,1) 4:w // Adjust MB order # to be DWORD aligned
- and (1) CMDPTR<1>:uw acc0<0;1,0>:w SB_MASK*4:uw // Wrap around scoreboard entries for current MB
-
-MBAFF_Wavefront_Walk:
- wait n0:ud
-
-// Check for combined "checking" or "completed" threads in forwarded message
-// 2 MSB of scoreboard message indicate:
-// 0b00 = "inter start" message
-// 0b10 = "intra start" message
-// 0b11 = "No Message" or "inter complete" message
-// 0b01 = Reserved (should never occur)
-//
-MBAFF_MB_Loop:
- shr (1) PMSGSEL<1>:uw r[CMDPTR,CMD_SB_REG_OFF*GRFWIB+2]<0;1,0>:uw 12:w // DWORD aligned pointer to message handler
- and.nz.f0.1 (8) NULLREG r[CMDPTR,CMD_SB_REG_OFF*GRFWIB]<0;1,0>:ub AVAILFLAG<8;8,1>:ub // f0.1 8 LSB will have the available flags in ACBDA_C_B_D_ order
- mov (1) MSGHDRY0.4<1>:ud r[CMDPTR,CMD_SB_REG_OFF*GRFWIB]<0;1,0>:ud // Copy MB thread info from scoreboard
- jmpi (1) r[PMSGSEL, INLINE_REG_OFF*GRFWIB+16]<0;1,0>:d
-
-// Now determine whether this is "inter done" or "no message"
-// through checking debug_counter
-//
-MBAFF_No_Message:
-#ifdef AS_ENABLED
- cmp.z.f0.1 (1) NULLREG n0:ud 0 // Are all messages handled?
- and.z.f0.0 (1) NULLREG cr0.1:ud AS_INT // Poll interrupt bit
- (-f0.1) jmpi (1) MBAFF_MB_Loop // Continue polling the remaining message from current thread
-
-// All messages have been handled
- (f0.0) jmpi (1) MBAFF_Wavefront_Walk // No interrupt occurs. Wait for next one
-
-// Interrupt has been detected
-// Save all contents and terminate the scoreboard
-//
- #include "scoreboard_save_AS.asm"
-
- // Save scoreboard control data as well
- //
- mov (1) MSGHDR.1:ud 64:ud
- mov (1) MSGHDR.2:ud 0x0002001f:ud // for 3 registers
- $for(0; <3; 1) {
- mov (8) MSGPAYLOADD(%1)<1> CMD_SB(%1-3)REGION(8,1)
- }
- send (8) NULLREG MSGHDR null:ud DWBWMSGDSC+0x00300000+AS_SAVE // Save r1 - r3
-
- send (8) NULLREG MSGHDR r0:ud EOTMSGDSC+TH_INT // Terminate with "Thread Interrupted" bit set
-#endif // End AS_ENABLED
-
-MBAFF_Dependency_Check:
-// Current thread is "checking" but not "completed" (0b10 case).
-// Check for dependency clear using all availability bits
-//
- and (8) DEPPTR<1>:uw MBINDEX(0,1)REGION(8,1) SB_MASK*4:uw // Wrap around scoreboard entries for current MB
-MBAFF_Dependency_Polling:
- (f0.1) and.z.f0.1 (8) NULLREG r[DEPPTR,CMD_SB_REG_OFF*GRFWIB+3]<1,0>:ub DONEFLAG:uw // f0.1 8 LSB contains dependency clear
- (f0.1.any8h) jmpi (1) MBAFF_Dependency_Polling // Dependency not clear, keep polling..
-
-// "Checking" thread and dependency cleared, send a message to let the thread go
-//
-MBAFF_Notify_MSG:
- send (8) NULLREG MSGHDRY0 null:ud MSG_GW FWDMSGDSC+NOTIFYMSG
-
-// Current macroblock has been serviced. Update to next macroblock in special zig-zag order
-//
-MBAFF_Update_CurMB:
- add.ge.f0.0 (2) TotalMB<2>:w TotalMB<4;2,2>:w -1:w // Set "End of wavefront" flag and decrement "TotalMB"
- add (16) MBINDEX(0)<1> MBINDEX(0)REGION(16,1) 4:w // Increment MB indices
- and (1) CMDPTR<1>:uw acc0<0;1,0>:w SB_MASK*4:uw // Wrap around scoreboard entries for current MB
- (f0.0.all2h) jmpi (1) MBAFF_Wavefront_Walk // Continue wavefront walking
-
-// Top macroblock wavefront walk done, start bottom MB wavefront
- add.ge.f0.0 (1) WFLen<1>:w WFLen_B<0;1,0>:w 0:w {NoDDClr} // Set bottom MB wavefront length
- mov (1) WFLen_B<1>:w -1:w {NoDDChk} // Reset bottom MB wavefront length
-
-// Initialize 9-MB group for bottom macroblock wavefront
- mov (8) MBINDEX(0)<1> WFStart_B(0)<1;4,0> {NoDDClr} // Initialize with WFStart_B[0] and WFStart_B[1]
- mov (4) MBINDEX(0,1)<1> WFStart_T(0,1)<0;1,0> {NoDDChk,NoDDClr} // Initialize with WFStart_T[1]
- mov (2) MBINDEX(0,2)<1> WFStart_T(0)<0;1,0> {NoDDChk,NoDDClr} // Initialize with WFStart_T[0]
- add (4) MBINDEX(0,6)<1> WFStart_B(0,1)<4;4,1> -1:w {NoDDChk} // Upper MB group (C_B_D_x)
-
- (f0.0) jmpi (1) MBAFF_Start_Wavefront // Start bottom MB wavefront walk
-
-// Start new wavefront
-//
- cmp.e.f0.1 (16) NULLREGW StartX<0;1,0>:uw WIDTHINMB_1<0;1,0>:uw // Set "on picture right boundary" flag
-
- // Update WFStart_T and WFStart_B
- add (8) acc0<1>:w WFStart_T(0)REGION(1,0) 1:w // Move WFStart_T[0]+1 to acc0 to remove dependency later
- mov (8) WFStart_T(0,1)<1> WFStart_T(0)<8;8,1> {NoDDClr} // Shift WFStart_T(B)[0:2] to WFStart_T(B)[1:3]
- mac (1) WFStart_T(0,0)<1> WFLen_Save<0;1,0>:w 2:w {NoDDChk} // WFStart_T[0] = WFStart_T[0] + 2*WFLen
-
- cmp.e.f0.0 (1) NULLREG TotalMB<0;1,0>:w 0:w // Set "Last MB" flag
-
- (f0.1) add (4) WFLen<1>:w WFLen<4;4,1>:w NewWFOffset<4;4,1>:b // + (0, -1, -1, 1)
- (f0.1) add (8) WFStart_T(0)<1> WFStart_T(0)REGION(4,1) 1:w
- (-f0.1) add (1) StartX<1>:w StartX<0;1,0>:w 1:w // Move to right MB
- (-f0.1) add (1) WFStart_T(0)<1> WFStart_T(0)REGION(1,0) 1:w
-
- (-f0.0) jmpi (1) MBAFF_Scoreboard_Loop // Not last MB, start new wavefront walking
-
-// All MBs have decoded. Terminate the thread now
-//
- END_THREAD
-
-#if !defined(COMBINED_KERNEL) // For standalone kernel only
-.end_code
-
-.end_kernel
-#endif
-
-// End of scoreboard_MBAFF
diff --git a/src/shaders/h264/mc/scoreboard_restore_AS.asm b/src/shaders/h264/mc/scoreboard_restore_AS.asm
deleted file mode 100644
index 68fb061..0000000
--- a/src/shaders/h264/mc/scoreboard_restore_AS.asm
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Restore previously stored scoreboard data after content switching back
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: scoreboard_restore_AS.asm
-//
-// Restore previously stored scoreboard data after content switching back
-//
-//
- // Restore scoreboard data to r4 - r67
- // They are saved in a 2D surface with width of 32 and height of 80.
- // Each row corresponds to one GRF register in the following order
- // r4 - r67 : Scoreboard message
- //
- mov (8) MSGSRC<1>:ud r0.0<8;8,1>:ud {NoDDClr} // Initialize message header payload with r0
-
- mov (2) MSGSRC.0:ud 0:ud {NoDDClr, NoDDChk} // Starting r4
- mov (1) MSGSRC.2:ud 0x0007001f:ud {NoDDChk} // for 8 registers
- send (8) CMD_SB(0)<1> m1 MSGSRC<8;8,1>:ud DWBRMSGDSC_SC+0x00080000+AS_SAVE // Restore r4 - r11
-
- mov (8) m2:ud MSGSRC<8;8,1>:ud
- mov (1) m2.1:ud 8:ud
- send (8) CMD_SB(8)<1> m2 null:ud DWBRMSGDSC_SC+0x00080000+AS_SAVE // Restore r12 - r19
-
- mov (8) m3:ud MSGSRC<8;8,1>:ud
- mov (1) m3.1:ud 16:ud
- send (8) CMD_SB(16)<1> m3 null:ud DWBRMSGDSC_SC+0x00080000+AS_SAVE // Restore r20 - r27
-
- mov (8) m4:ud MSGSRC<8;8,1>:ud
- mov (1) m4.1:ud 24:ud
- send (8) CMD_SB(24)<1> m4 null:ud DWBRMSGDSC_SC+0x00080000+AS_SAVE // Restore r28 - r35
-
- mov (8) m5:ud MSGSRC<8;8,1>:ud
- mov (1) m5.1:ud 32:ud
- send (8) CMD_SB(32)<1> m5 null:ud DWBRMSGDSC_SC+0x00080000+AS_SAVE // Restore r36 - r43
-
- mov (8) m6:ud MSGSRC<8;8,1>:ud
- mov (1) m6.1:ud 40:ud
- send (8) CMD_SB(40)<1> m6 null:ud DWBRMSGDSC_SC+0x00080000+AS_SAVE // Restore r44 - r51
-
- mov (8) m7:ud MSGSRC<8;8,1>:ud
- mov (1) m7.1:ud 48:ud
- send (8) CMD_SB(48)<1> m7 null:ud DWBRMSGDSC_SC+0x00080000+AS_SAVE // Restore r52 - r59
-
- mov (8) m8:ud MSGSRC<8;8,1>:ud
- mov (1) m8.1:ud 56:ud
- send (8) CMD_SB(56)<1> m8 null:ud DWBRMSGDSC_SC+0x00080000+AS_SAVE // Restore r60 - r67
-
-// End of scoreboard_restore_AS
diff --git a/src/shaders/h264/mc/scoreboard_save_AS.asm b/src/shaders/h264/mc/scoreboard_save_AS.asm
deleted file mode 100644
index 8fe96c6..0000000
--- a/src/shaders/h264/mc/scoreboard_save_AS.asm
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Save scoreboard data before content switching
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Module name: scoreboard_save_AS.asm
-//
-// Save scoreboard data before content switching
-//
-//
- // r1 - r35 need to be saved
- // They are saved in a 2D surface with width of 32 and height of 64.
- // Each row corresponds to one GRF register in the following order
- // r4 - r35 : Scoreboard message
- // r1 - r3 : Scoreboard kernel control data
-
- mov (8) MSGHDR<1>:ud r0.0<8;8,1>:ud // Initialize message header payload with r0
- mov (1) MSGHDR.2:ud 0x0007001f:ud // for 8 registers
-
- mov (2) MSGHDR.0:ud 0:ud
- $for(0; <8; 2) {
- mov (16) MSGPAYLOADD(%1)<1> CMD_SB(%1)REGION(8,1) {Compr}
- }
- send (8) NULLREG MSGHDR null:ud DWBWMSGDSC+0x00800000+AS_SAVE // Save r4 - r11
-
- mov (1) MSGHDR.1:ud 8:ud
- $for(0; <8; 2) {
- mov (16) MSGPAYLOADD(%1)<1> CMD_SB(%1+8)REGION(8,1) {Compr}
- }
- send (8) NULLREG MSGHDR null:ud DWBWMSGDSC+0x00800000+AS_SAVE // Save r12 - r19
-
- mov (1) MSGHDR.1:ud 16:ud
- $for(0; <8; 2) {
- mov (16) MSGPAYLOADD(%1)<1> CMD_SB(%1+16)REGION(8,1) {Compr}
- }
- send (8) NULLREG MSGHDR null:ud DWBWMSGDSC+0x00800000+AS_SAVE // Save r20 - r27
-
- mov (1) MSGHDR.1:ud 24:ud
- $for(0; <8; 2) {
- mov (16) MSGPAYLOADD(%1)<1> CMD_SB(%1+24)REGION(8,1) {Compr}
- }
- send (8) NULLREG MSGHDR null:ud DWBWMSGDSC+0x00800000+AS_SAVE // Save r28 - r35
-
- mov (1) MSGHDR.1:ud 32:ud
- $for(0; <8; 2) {
- mov (16) MSGPAYLOADD(%1)<1> CMD_SB(%1+32)REGION(8,1) {Compr}
- }
- send (8) NULLREG MSGHDR null:ud DWBWMSGDSC+0x00800000+AS_SAVE // Save r36 - r43
-
- mov (1) MSGHDR.1:ud 40:ud
- $for(0; <8; 2) {
- mov (16) MSGPAYLOADD(%1)<1> CMD_SB(%1+40)REGION(8,1) {Compr}
- }
- send (8) NULLREG MSGHDR null:ud DWBWMSGDSC+0x00800000+AS_SAVE // Save r44 - r51
-
- mov (1) MSGHDR.1:ud 48:ud
- $for(0; <8; 2) {
- mov (16) MSGPAYLOADD(%1)<1> CMD_SB(%1+48)REGION(8,1) {Compr}
- }
- send (8) NULLREG MSGHDR null:ud DWBWMSGDSC+0x00800000+AS_SAVE // Save r52 - r59
-
- mov (1) MSGHDR.1:ud 56:ud
- $for(0; <8; 2) {
- mov (16) MSGPAYLOADD(%1)<1> CMD_SB(%1+56)REGION(8,1) {Compr}
- }
- send (8) NULLREG MSGHDR null:ud DWBWMSGDSC+0x00800000+AS_SAVE // Save r60 - r67
-
-// End of scoreboard_save_AS
diff --git a/src/shaders/h264/mc/scoreboard_sip.asm b/src/shaders/h264/mc/scoreboard_sip.asm
deleted file mode 100644
index 7b50449..0000000
--- a/src/shaders/h264/mc/scoreboard_sip.asm
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Scoreboard interrupt handler
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: scoreboard_sip.asm
-//
-// scoreboard interrupt handler
-//
-// Simply send a notification message to scoreboard thread
-
- mov (8) m0<1>:ud 0x00000000:ud // Initialize message header payload with 0
-#ifdef DOUBLE_SB
- mov (1) m0.5<1>:ud 0x08000200:ud // Message length = 1 DWORD, sent to GRF offset 64 registers
-#else
- mov (1) m0.5<1>:ud 0x04000200:ud // Message length = 1 DWORD, sent to GRF offset 32 registers
-#endif
- send (8) null<1>:ud m0 null:ud 0x03108002 // Send notification message to scoreboard kernel
-
- and (1) cr0.1:ud cr0.1:ud 0x00800000 // Clear preempt exception bit
- and (1) cr0.0:ud cr0.0:ud 0x7fffffff:ud // Exit SIP routine
- nop // Required by B-spec
-
-.end_code
-
-
-
-
-
-
diff --git a/src/shaders/h264/mc/scoreboard_start_inter.asm b/src/shaders/h264/mc/scoreboard_start_inter.asm
deleted file mode 100644
index b2167b4..0000000
--- a/src/shaders/h264/mc/scoreboard_start_inter.asm
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Scoreboard function for starting inter prediction kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__SCOREBOARD_START_INTER__)
-#define __SCOREBOARD_START_INTER__
-//
-// Module name: scoreboard_start_inter.asm
-//
-// Scoreboard function for starting inter prediction kernels
-// This function is only used by inter prediction kernels to send message to
-// scoreboard in order to announce the inter kernel has started
-//
-// $Revision: 5 $
-// $Date: 10/18/06 4:11p $
-//
-scoreboard_start_inter:
-
-// First open message gateway since intra kernels need wake-up message to resume
-//
- mov (8) MSGHDRY0<1>:ud 0x00000000:ud // Initialize message header payload with 0
-
- // Send a message with register base RegBase = r0 (0x0) and Size = 0x0
- // 000 00000000 00000 00000 000 00000000 ==> 0000 0000 0000 0000 0000 0000 0000 0000
- // ---------------------------------------------------------------------------------
- send (8) NULLREG MSGHDRY0 null:ud MSG_GW OGWMSGDSC
-
-// Derive the scoreboard location where the inter thread writes to
-//
- mov (8) MSGHDRY1<1>:ud 0x00000000:ud // Initialize message header payload with 0
-
- // Compose M0.5:ud
- #include "set_SB_offset.asm"
-
- // Compose M0.0:ud, i.e. message payload
- or (1) MSGHDRY1.1<1>:uw sr0.0<0;1,0>:uw 0x0000:uw // Set EUID/TID bits + inter start bit
-
- send (8) NULLREG MSGHDRY1 null:ud MSG_GW FWDMSGDSC+NOTIFYMSG // Send "Inter start" message to scoreboard kernel
-
- RETURN
-
-#endif // !defined(__SCOREBOARD_START_INTER__)
diff --git a/src/shaders/h264/mc/scoreboard_start_intra.asm b/src/shaders/h264/mc/scoreboard_start_intra.asm
deleted file mode 100644
index 3abde10..0000000
--- a/src/shaders/h264/mc/scoreboard_start_intra.asm
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Scoreboard function for starting intra prediction kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#if !defined(__SCOREBOARD_START_INTRA__)
-#define __SCOREBOARD_START_INTRA__
-//
-// Module name: scoreboard_start_intra.asm
-//
-// Scoreboard function for starting intra prediction kernels
-// This function is only used by intra prediction kernels to send message to
-// scoreboard in order to check dependency clearance
-//
-// $Revision: 5 $
-// $Date: 10/18/06 4:11p $
-//
-scoreboard_start_intra:
-
-// First open message gateway since intra kernels need wake-up message to resume
-//
- mov (8) MSGHDRY0<1>:ud 0x00000000:ud // Initialize message header payload with 0
-
- // Send a message with register base RegBase = r0 (0x0) and Size = 0x0
- // 000 00000000 00000 00000 000 00000000 ==> 0000 0000 0000 0000 0000 0000 0000 0000
- // ---------------------------------------------------------------------------------
- and (1) MSGHDRY0.8<1>:uw REG_INTRA_PRED_AVAIL_FLAG_BYTE<0;1,0>:ub 0x1f:uw // Set lower word of key
- send (8) NULLREG MSGHDRY0 null:ud MSG_GW OGWMSGDSC
-
-// Send "check dependency" message to scoreboard thread
-// --------------------------
-
-// Derive the scoreboard location where the intra thread writes to
-//
- mov (8) MSGHDRY1<1>:ud 0x00000000:ud // Initialize message header payload with 0
-
- // Compose M0.5:ud
- #include "set_SB_offset.asm"
-
- // Compose M0.0:ud, i.e. message payload
- and (1) MSGHDRY1.0<1>:uw REG_INTRA_PRED_AVAIL_FLAG_BYTE<0;1,0>:ub 0x1f:uw // Set lower word of message
- or (1) MSGHDRY1.1<1>:uw sr0.0<0;1,0>:uw 0x8000:uw // Set EUID/TID bits + intra start bit
-
- send (8) NULLREG MSGHDRY1 null:ud MSG_GW FWDMSGDSC+NOTIFYMSG // Send "Intra start" message to scoreboard kernel
-
- RETURN
-
-#endif // !defined(__SCOREBOARD_START_INTRA__)
diff --git a/src/shaders/h264/mc/scoreboard_update.asm b/src/shaders/h264/mc/scoreboard_update.asm
deleted file mode 100644
index 52d8d00..0000000
--- a/src/shaders/h264/mc/scoreboard_update.asm
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Scoreboard update function for decoding kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-//
-// Module name: scoreboard_update.asm
-//
-// Scoreboard update function for decoding kernels
-//
-// This module is used by decoding kernels to send message to scoreboard to update the
-// "complete" status, thus the dependency of the MB can be cleared.
-//
-// $Revision: 6 $
-// $Date: 10/16/06 5:19p $
-//
- mov (8) MSGHDRY1<1>:ud 0x00000000:ud // Initialize message header payload with 0
-
- // Compose M0.5:ud information
- add (1) MSGHDRY1.10<1>:uw r0.20:ub 0x0200:uw // Message length = 1 DWORD
- and (1) MSGHDRY1.11<1>:uw M05_STORE<0;1,0>:uw SB_MASK*4:uw // Retrieve stored value and wrap around scoreboard
-
- or (1) MSGHDRY1.0<1>:ud M05_STORE<0;1,0>:uw 0xc0000000:ud // Set "Completed" bits
-
-#ifndef BSDRESET_ENABLE
-#ifdef INTER_KERNEL
- mov (1) gREG_WRITE_COMMIT_Y<1>:ud gREG_WRITE_COMMIT_Y<0;1,0>:ud // Make sure Y write is committed
- mov (1) gREG_WRITE_COMMIT_UV<1>:ud gREG_WRITE_COMMIT_UV<0;1,0>:ud // Make sure U/V write is committed
-#else
- mov (1) REG_WRITE_COMMIT_Y<1>:ud REG_WRITE_COMMIT_Y<0;1,0>:ud // Make sure Y write is committed
- mov (1) REG_WRITE_COMMIT_UV<1>:ud REG_WRITE_COMMIT_UV<0;1,0>:ud // Make sure U/V write is committed
-#endif // INTER_KERNEL
-#endif // BSDRESET_ENABLE
-
- send (8) NULLREG MSGHDRY1 null:ud MSG_GW FWDMSGDSC
-
-// End of scoreboard_update
diff --git a/src/shaders/h264/mc/set_SB_offset.asm b/src/shaders/h264/mc/set_SB_offset.asm
deleted file mode 100644
index 8b57712..0000000
--- a/src/shaders/h264/mc/set_SB_offset.asm
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Common module to set offset into the scoreboard
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-//
-// Module name: set_SB_offset.asm
-//
-// Common module to set offset into the scoreboard
-// Note: This is to encapsulate the way M0.5:ud in ForwardMsg is filled.
-//
-// $Revision: 2 $
-// $Date: 10/16/06 5:19p $
-//
- add (1) MSGHDRY1.10<1>:uw r0.20:ub 0x0200:uw // Message length = 1 DWORD
-
- add (16) acc0<1>:w r0.12<0;1,0>:uw -LEADING_THREAD:w // 0-based thread count derived from r0.6:ud
- shl (1) M05_STORE<1>:uw acc0<0;1,0>:uw 0x2:uw // Store for future "update" use, in DWORD unit
- and (16) acc0<1>:w acc0<16;16,1>:uw SB_MASK:uw // Wrap around scoreboard
- shl (1) MSGHDRY1.11<1>:uw acc0<0;1,0>:uw 0x2:uw // Convert to DWORD offset
-
-// End of set_SB_offset \ No newline at end of file
diff --git a/src/shaders/h264/mc/weightedPred.asm b/src/shaders/h264/mc/weightedPred.asm
deleted file mode 100644
index 4273d99..0000000
--- a/src/shaders/h264/mc/weightedPred.asm
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Weighted prediction of luminance and chrominance
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: WeightedPred.asm
-//
-// Weighted prediction of luminance and chrominance
-//
-
-
-//#if !defined(__WeightedPred__) // Make sure this is only included once
-//#define __WeightedPred__
-
-
- and.z.f0.0 (1) gWEIGHTFLAG:w gWPREDFLAG:ub nWBIDIR_MASK:w
- cmp.e.f0.1 (1) null:w gPREDFLAG:w 2:w
- (-f0.0) jmpi INTERLABEL(WeightedPred)
- (f0.1) jmpi INTERLABEL(DefaultWeightedPred_BiPred)
-
-INTERLABEL(DefaultWeightedPred_UniPred):
-
- cmp.e.f0.0 (1) null:w gPREDFLAG:w 0:w
- (f0.0) jmpi INTERLABEL(Return_WeightedPred)
-
- // luma
- mov (32) gubYPRED(0)<2> gubINTPY1(0) {Compr}
- mov (32) gubYPRED(2)<2> gubINTPY1(2) {Compr}
-
-#ifndef MONO
- // chroma
- mov (32) gubCPRED(0)<2> gubINTPC1(0) {Compr}
-#endif
-
- jmpi INTERLABEL(Return_WeightedPred)
-
-INTERLABEL(DefaultWeightedPred_BiPred):
-
- // luma
- avg.sat (32) gubYPRED(0)<2> gubINTPY0(0) gubINTPY1(0) {Compr}
- avg.sat (32) gubYPRED(2)<2> gubINTPY0(2) gubINTPY1(2) {Compr}
-
-#ifndef MONO
- // chroma
- avg.sat (32) gubCPRED(0)<2> gubINTPC0(0) gubINTPC1(0) {Compr}
-#endif
-
- jmpi INTERLABEL(Return_WeightedPred)
-
-INTERLABEL(WeightedPred):
- cmp.e.f0.1 (1) null:w gWEIGHTFLAG:w 0x80:w
- (-f0.1) jmpi INTERLABEL(WeightedPred_Explicit)
-
- cmp.e.f0.0 (1) null:w gPREDFLAG:w 2:w
- (-f0.0) jmpi INTERLABEL(DefaultWeightedPred_UniPred)
-
- mov (2) gYADD<1>:w 32:w {NoDDClr}
- mov (2) gYSHIFT<1>:w 6:w {NoDDChk}
- mov (4) gOFFSET<1>:w 0:w
- mov (8) gWT0<2>:w r[pWGT,0]<0;2,1>:w
-
- jmpi INTERLABEL(WeightedPred_LOOP)
-
- // Explicit Prediction
-INTERLABEL(WeightedPred_Explicit):
-
- // WA for weighted prediction - 2007/09/06
-#ifdef SW_W_128 // CTG SW WA
- cmp.e.f0.1 (8) null:ud r[pWGT,0]<8;8,1>:uw gudW128(0)<0;1,0>
-#else // ILK HW solution
- and.ne.f0.1 (8) null:uw r[pWGT,12]<0;1,0>:ub 0x88848421:v // Expand W=128 flag to all components. 2 MSB are don't care
-#endif
- asr.nz.f0.0 (2) gBIPRED<1>:w gPREDFLAG<0;1,0>:w 1:w
- asr (1) gWEIGHTFLAG:w gWEIGHTFLAG:w 6:w
- (-f0.0) mov (2) gPREDFLAG1<1>:w gPREDFLAG<0;1,0>:w
- (f0.0) mov (2) gPREDFLAG0<1>:ud 0x00010001:ud
- (-f0.0) add (2) gPREDFLAG0<1>:w -gPREDFLAG1<2;2,1>:w 1:w
-
- // WA for weighted prediction - 2007/09/06
- (f0.1) mov (8) gWT0<1>:ud 0x00000080:ud
- (-f0.1) mov (8) gWT0<2>:w r[pWGT,0]<16;8,2>:b
- (-f0.1) mov (8) gO0<2>:w r[pWGT,1]<16;8,2>:b
- mul (16) gWT0<1>:w gWT0<16;16,1>:w gPREDFLAG0<0;4,1>:w
-
- // Compute addition
- cmp.e.f0.1 (2) null<1>:w gYWDENOM<2;2,1>:ub 0:w
- (-f0.1) shl (2) gW0<1>:w gWEIGHTFLAG<0;1,0>:w gYWDENOM<2;2,1>:ub
- (f0.1) mov (2) gW0<1>:w 0:w
- (-f0.1) asr (2) gW0<1>:w gW0<2;2,1>:w 1:w
- shl (2) gYADD<1>:w gW0<2;2,1>:w gBIPRED<0;1,0>:w
- (f0.1) add (2) gYADD<1>:w gYADD<2;2,1>:w gBIPRED<0;1,0>:w
-
- // Compute shift
- add (2) gYSHIFT<1>:w gYWDENOM<2;2,1>:ub gBIPRED<0;1,0>:w
-
- // Compute offset
- add (4) acc0<1>:w gO0<16;4,4>:w gO1<16;4,4>:w
- add (4) acc0<1>:w acc0<4;4,1>:w gBIPRED<0;1,0>:w
- asr (4) gOFFSET<1>:w acc0<4;4,1>:w gBIPRED<0;1,0>:w
-
-INTERLABEL(WeightedPred_LOOP):
- // luma
- $for(0;<4;2) {
- mul (16) acc0<1>:w gubINTPY0(%1) gWT0<0;1,0>:w
- mul (16) acc1<1>:w gubINTPY0(%1+1) gWT0<0;1,0>:w
- mac (16) acc0<1>:w gubINTPY1(%1) gWT1<0;1,0>:w
- mac (16) acc1<1>:w gubINTPY1(%1+1) gWT1<0;1,0>:w
- add (16) acc0<1>:w acc0<16;16,1>:w gYADD:w
- add (16) acc1<1>:w acc1<16;16,1>:w gYADD:w
- // Accumulator cannot be used as destination for ASR
- asr (16) gwINTERIM_BUF3(0)<1> acc0<16;16,1>:w gYSHIFT:w
- asr (16) gwINTERIM_BUF3(1)<1> acc1<16;16,1>:w gYSHIFT:w
- add.sat (16) gubYPRED(%1)<2> gwINTERIM_BUF3(0) gOFFSET:w
- add.sat (16) gubYPRED(%1+1)<2> gwINTERIM_BUF3(1) gOFFSET:w
- }
-
-#ifndef MONO
- // chroma
- mul (16) acc0<1>:w gubINTPC0(0) gUW0<0;2,4>:w
- mul (16) acc1<1>:w gubINTPC0(1) gUW0<0;2,4>:w
- mac (16) acc0<1>:w gubINTPC1(0) gUW1<0;2,4>:w
- mac (16) acc1<1>:w gubINTPC1(1) gUW1<0;2,4>:w
- add (16) acc0<1>:w acc0<16;16,1>:w gCADD:w
- add (16) acc1<1>:w acc1<16;16,1>:w gCADD:w
- // Accumulator cannot be used as destination for ASR
- asr (16) gwINTERIM_BUF3(0)<1> acc0<16;16,1>:w gCSHIFT:w
- asr (16) gwINTERIM_BUF3(1)<1> acc1<16;16,1>:w gCSHIFT:w
- add.sat (16) gubCPRED(0)<2> gwINTERIM_BUF3(0) gUOFFSET<0;2,1>:w
- add.sat (16) gubCPRED(1)<2> gwINTERIM_BUF3(1) gUOFFSET<0;2,1>:w
-#endif
-
-
-INTERLABEL(Return_WeightedPred):
-
-
-//#endif // !defined(__WeightedPred__)
diff --git a/src/shaders/h264/mc/writeRecon_C_8x4.asm b/src/shaders/h264/mc/writeRecon_C_8x4.asm
deleted file mode 100644
index 23e4a5b..0000000
--- a/src/shaders/h264/mc/writeRecon_C_8x4.asm
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: WriteRecon_C_8x4.asm
-//
-// $Revision: 10 $
-// $Date: 10/03/06 5:28p $
-//
-
-
-//#if !defined(__WRITERECON_C_8x4__) // Make sure this is only included once
-//#define __WRITERECON_C_8x4__
-
-
- // TODO: Why did I use p0?
-#ifndef MONO
- add (1) p0:w pERRORC:w -16:w
- mov (16) mbMSGPAYLOADC(0,0)<2> r[p0,0]<32;16,2>:ub {NoDDClr}
- mov (16) mbMSGPAYLOADC(0,1)<2> r[p0,128]<32;16,2>:ub {NoDDChk}
- mov (16) mbMSGPAYLOADC(1,0)<2> r[p0,32]<32;16,2>:ub {NoDDClr}
- mov (16) mbMSGPAYLOADC(1,1)<2> r[p0,128+32]<32;16,2>:ub {NoDDChk}
-#else // defined(MONO)
- mov (16) mbMSGPAYLOADC(0)<1> 0x80808080:ud {Compr}
-#endif // !defined(MONO)
-
- #if defined(MBAFF)
- add (1) pMSGDSC:ud gFIELDFLAGS:uw MSG_LEN(2)+nDWBWMSGDSC+nBDIX_DESTC+ENWRCOM:ud
- #elif defined(FIELD)
- add (1) pMSGDSC:ud gFIELDFLAGS:uw MSG_LEN(2)+nDWBWMSGDSC_TF+nBDIX_DESTC+ENWRCOM:ud
- #endif
-
- asr (1) gMSGSRC.1:d gMSGSRC.1:d 1:w {NoDDClr}
- mov (1) gMSGSRC.2:ud 0x0003000f:ud {NoDDChk} // NV12 (16x4)
-
-#if defined(FRAME)
- send (8) gREG_WRITE_COMMIT_UV<1>:ud mMSGHDRCW gMSGSRC<8;8,1>:ud DAPWRITE MSG_LEN(2)+nDWBWMSGDSC+nBDIX_DESTC+ENWRCOM
-#else
- send (8) gREG_WRITE_COMMIT_UV<1>:ud mMSGHDRCW gMSGSRC<8;8,1>:ud DAPWRITE pMSGDSC:ud
-#endif // defined(FRAME)
-
-//#endif // !defined(__WRITERECON_C_8x4__)
diff --git a/src/shaders/h264/mc/writeRecon_YC.asm b/src/shaders/h264/mc/writeRecon_YC.asm
deleted file mode 100644
index b88b299..0000000
--- a/src/shaders/h264/mc/writeRecon_YC.asm
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: WriteRecon_YC.asm
-//
-// $Revision: 10 $
-// $Date: 10/03/06 5:28p $
-//
-
-
-//#if !defined(__WRITERECON_YC__) // Make sure this is only included once
-//#define __WRITERECON_YC__
-
- // TODO: Merge two inst to one.
- mov (1) p0:w nOFFSET_ERRORY:w
- mov (1) p1:w nOFFSET_ERRORY+128:w
-
- $for(0; <4; 1) {
- mov (16) mbMSGPAYLOADY(%1,0)<1> r[p0,%1*32+0]<8,2>:ub {NoDDClr}
- mov (16) mbMSGPAYLOADY(%1,16)<1> r[p0,%1*32+16]<8,2>:ub {NoDDChk}
- }
- $for(0; <4; 1) {
- mov (16) mbMSGPAYLOADY(%1+4,0)<1> r[p0,%1*32+256]<8,2>:ub {NoDDClr}
- mov (16) mbMSGPAYLOADY(%1+4,16)<1> r[p0,%1*32+16+256]<8,2>:ub {NoDDChk}
- }
-
-
- #if defined(MBAFF)
- add (1) pMSGDSC:ud gFIELDFLAGS:uw MSG_LEN(8)+nDWBWMSGDSC+nBDIX_DESTY+ENWRCOM:ud
- #elif defined(FIELD)
- add (1) pMSGDSC:ud gFIELDFLAGS:uw MSG_LEN(8)+nDWBWMSGDSC_TF+nBDIX_DESTY+ENWRCOM:ud
- #endif
-
- mov (2) gMSGSRC.0<1>:d gX<2;2,1>:w {NoDDClr}
- mov (1) gMSGSRC.2:ud 0x000f000f:ud {NoDDChk}
-
-#if defined(FRAME)
- send (8) gREG_WRITE_COMMIT_Y<1>:ud mMSGHDRYW gMSGSRC<8;8,1>:ud DAPWRITE MSG_LEN(8)+nDWBWMSGDSC+nBDIX_DESTY+ENWRCOM
-#else
- send (8) gREG_WRITE_COMMIT_Y<1>:ud mMSGHDRYW gMSGSRC<8;8,1>:ud DAPWRITE pMSGDSC:ud
-#endif
-
-#ifndef MONO
- // TODO: Why did I use p0?
- mov (1) p0:w nOFFSET_ERRORC:w
- mov (16) mbMSGPAYLOADC(0,0)<2> r[p0,0]<32;16,2>:ub {NoDDClr}
- mov (16) mbMSGPAYLOADC(0,1)<2> r[p0,128]<32;16,2>:ub {NoDDChk}
- mov (16) mbMSGPAYLOADC(1,0)<2> r[p0,32]<32;16,2>:ub {NoDDClr}
- mov (16) mbMSGPAYLOADC(1,1)<2> r[p0,128+32]<32;16,2>:ub {NoDDChk}
- mov (16) mbMSGPAYLOADC(2,0)<2> r[p0,64]<32;16,2>:ub {NoDDClr}
- mov (16) mbMSGPAYLOADC(2,1)<2> r[p0,128+64]<32;16,2>:ub {NoDDChk}
- mov (16) mbMSGPAYLOADC(3,0)<2> r[p0,96]<32;16,2>:ub {NoDDClr}
- mov (16) mbMSGPAYLOADC(3,1)<2> r[p0,128+96]<32;16,2>:ub {NoDDChk}
-
-
- #if defined(MBAFF)
- add (1) pMSGDSC:ud gFIELDFLAGS:uw MSG_LEN(4)+nDWBWMSGDSC+nBDIX_DESTC+ENWRCOM:ud
- #elif defined(FIELD)
- add (1) pMSGDSC:ud gFIELDFLAGS:uw MSG_LEN(4)+nDWBWMSGDSC_TF+nBDIX_DESTC+ENWRCOM:ud
- #endif
-
- asr (1) gMSGSRC.1:d gMSGSRC.1:d 1:w {NoDDClr}
- mov (1) gMSGSRC.2:ud 0x0007000f:ud {NoDDChk} // NV12 (16x4)
-
-#if defined(FRAME)
- send (8) gREG_WRITE_COMMIT_UV<1>:ud mMSGHDRCW gMSGSRC<8;8,1>:ud DAPWRITE MSG_LEN(4)+nDWBWMSGDSC+nBDIX_DESTC+ENWRCOM
-#else
- send (8) gREG_WRITE_COMMIT_UV<1>:ud mMSGHDRCW gMSGSRC<8;8,1>:ud DAPWRITE pMSGDSC:ud
-#endif // defined(FRAME)
-
-#endif // !defined(MONO)
-
-
-//#endif // !defined(__WRITERECON_YC__)
diff --git a/src/shaders/h264/mc/writeRecon_Y_16x8.asm b/src/shaders/h264/mc/writeRecon_Y_16x8.asm
deleted file mode 100644
index 04fc370..0000000
--- a/src/shaders/h264/mc/writeRecon_Y_16x8.asm
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-// Kernel name: WriteRecon_Y_16x8.asm
-//
-// $Revision: 10 $
-// $Date: 10/03/06 5:28p $
-//
-
-
-//#if !defined(__WRITERECON_Y_16x8__) // Make sure this is only included once
-//#define __WRITERECON_Y_16x8__
-
-
- add (1) p0:w pERRORY:w -256:w
- add (1) p1:w pERRORY:w -128:w
-
- $for(0; <4; 1) {
- mov (16) mbMSGPAYLOADY(%1,0)<1> r[p0,%1*32+0]<8,2>:ub {NoDDClr}
- mov (16) mbMSGPAYLOADY(%1,16)<1> r[p0,%1*32+16]<8,2>:ub {NoDDChk}
- }
-
- #if defined(MBAFF)
- add (1) pMSGDSC:ud gFIELDFLAGS:uw MSG_LEN(4)+nDWBWMSGDSC+nBDIX_DESTY+ENWRCOM:ud
- #elif defined(FIELD)
- add (1) pMSGDSC:ud gFIELDFLAGS:uw MSG_LEN(4)+nDWBWMSGDSC_TF+nBDIX_DESTY+ENWRCOM:ud
- #endif
-
- mov (2) gMSGSRC.0<1>:d gX<2;2,1>:w {NoDDClr}
- mov (1) gMSGSRC.2:ud 0x0007000f:ud {NoDDChk}
-
-#if defined(FRAME)
- send (8) gREG_WRITE_COMMIT_Y<1>:ud mMSGHDRYW gMSGSRC<8;8,1>:ud DAPWRITE MSG_LEN(4)+nDWBWMSGDSC+nBDIX_DESTY+ENWRCOM
-#else
- send (8) gREG_WRITE_COMMIT_Y<1>:ud mMSGHDRYW gMSGSRC<8;8,1>:ud DAPWRITE pMSGDSC:ud
-#endif
-
-//#endif // !defined(__WRITERECON_Y_16x8__)
diff --git a/src/shaders/mpeg2/Makefile.am b/src/shaders/mpeg2/Makefile.am
deleted file mode 100644
index 9795594..0000000
--- a/src/shaders/mpeg2/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-SUBDIRS = vld
-
-# Extra clean files so that maintainer-clean removes *everything*
-MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/shaders/mpeg2/vld/Makefile.am b/src/shaders/mpeg2/vld/Makefile.am
deleted file mode 100644
index 37955dc..0000000
--- a/src/shaders/mpeg2/vld/Makefile.am
+++ /dev/null
@@ -1,122 +0,0 @@
-INTEL_G4I = \
- addidct.g4i \
- do_iq_intra.g4i \
- do_iq_non_intra.g4i \
- field_addidct.g4i \
- field_motion_uv.g4i \
- field_motion_y.g4i \
- field_read_x0y0_uv.g4i \
- field_read_x0y0_y.g4i \
- field_read_x0y1_uv.g4i \
- field_read_x0y1_y.g4i \
- field_read_x1y0_uv.g4i \
- field_read_x1y0_y.g4i \
- field_read_x1y1_uv.g4i \
- field_read_x1y1_y.g4i \
- idct.g4i \
- iq_intra.g4i \
- iq_non_intra.g4i \
- motion_field_uv.g4i \
- motion_field_y.g4i \
- motion_frame_uv.g4i \
- motion_frame_y.g4i \
- read_field_x0y0_uv.g4i \
- read_field_x0y0_y.g4i \
- read_field_x0y1_uv.g4i \
- read_field_x0y1_y.g4i \
- read_field_x1y0_uv.g4i \
- read_field_x1y0_y.g4i \
- read_field_x1y1_uv.g4i \
- read_field_x1y1_y.g4i \
- read_frame_x0y0_uv.g4i \
- read_frame_x0y0_y.g4i \
- read_frame_x0y1_uv.g4i \
- read_frame_x0y1_y.g4i \
- read_frame_x1y0_uv.g4i \
- read_frame_x1y0_y.g4i \
- read_frame_x1y1_uv.g4i \
- read_frame_x1y1_y.g4i \
- $(NULL)
-
-INTEL_G4A = frame_intra.g4a \
- frame_frame_pred_forward.g4a \
- frame_frame_pred_backward.g4a \
- frame_frame_pred_bidirect.g4a \
- frame_field_pred_forward.g4a \
- frame_field_pred_backward.g4a \
- frame_field_pred_bidirect.g4a \
- lib.g4a \
- field_intra.g4a \
- field_forward.g4a \
- field_forward_16x8.g4a \
- field_backward.g4a \
- field_backward_16x8.g4a \
- field_bidirect.g4a \
- field_bidirect_16x8.g4a \
- null.g4a
-
-INTEL_G4S = $(INTEL_G4A:%.g4a=%.g4s)
-
-INTEL_G4B = frame_intra.g4b \
- frame_frame_pred_forward.g4b \
- frame_frame_pred_backward.g4b \
- frame_frame_pred_bidirect.g4b \
- frame_field_pred_forward.g4b \
- frame_field_pred_backward.g4b \
- frame_field_pred_bidirect.g4b \
- lib.g4b \
- field_intra.g4b \
- field_forward.g4b \
- field_forward_16x8.g4b \
- field_backward.g4b \
- field_backward_16x8.g4b \
- field_bidirect.g4b \
- field_bidirect_16x8.g4b
-
-INTEL_G4B_GEN5 = frame_intra.g4b.gen5 \
- frame_frame_pred_forward.g4b.gen5 \
- frame_frame_pred_backward.g4b.gen5 \
- frame_frame_pred_bidirect.g4b.gen5 \
- frame_field_pred_forward.g4b.gen5 \
- frame_field_pred_backward.g4b.gen5 \
- frame_field_pred_bidirect.g4b.gen5 \
- lib.g4b.gen5 \
- field_intra.g4b.gen5 \
- field_forward.g4b.gen5 \
- field_forward_16x8.g4b.gen5 \
- field_backward.g4b.gen5 \
- field_backward_16x8.g4b.gen5 \
- field_bidirect.g4b.gen5 \
- field_bidirect_16x8.g4b.gen5
-
-TARGETS =
-if HAVE_GEN4ASM
-TARGETS += $(INTEL_G4B)
-TARGETS += $(INTEL_G4B_GEN5)
-endif
-
-all-local: $(TARGETS)
-
-SUFFIXES = .g4a .g4s .g4b .g4b.gen5
-
-if HAVE_GEN4ASM
-$(INTEL_G4S): $(INTEL_G4A) $(INTEL_G4I)
-.g4a.g4s:
- $(AM_V_GEN)m4 -I$(srcdir) $< > $@
-.g4s.g4b:
- $(AM_V_GEN)$(GEN4ASM) -o $@ $<
-.g4s.g4b.gen5:
- $(AM_V_GEN)$(GEN4ASM) -g 5 -o $@ $<
-endif
-
-CLEANFILES = $(INTEL_G4S)
-
-EXTRA_DIST = \
- $(INTEL_G4A) \
- $(INTEL_G4B) \
- $(INTEL_G4B_GEN5) \
- $(INTEL_G4I) \
- $(NULL)
-
-# Extra clean files so that maintainer-clean removes *everything*
-MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/shaders/mpeg2/vld/addidct.g4i b/src/shaders/mpeg2/vld/addidct.g4i
deleted file mode 100644
index b57548d..0000000
--- a/src/shaders/mpeg2/vld/addidct.g4i
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright © 2008 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g32: message descriptor for reading reference data
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data */
-mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1}; //restore x and y
-
-and.nz (1) null g82.2<1,1,1>UW 0x20UW {align1}; //dct_type
-(f0) jmpi field_dct;
-
-add (16) g58.0<1>W g83.0<16,16,1>W g58.0<16,16,2>UB {align1};
-add (16) g59.0<1>W g84.0<16,16,1>W g59.0<16,16,2>UB {align1};
-add (16) g60.0<1>W g85.0<16,16,1>W g60.0<16,16,2>UB {align1};
-add (16) g61.0<1>W g86.0<16,16,1>W g61.0<16,16,2>UB {align1};
-add (16) g62.0<1>W g87.0<16,16,1>W g62.0<16,16,2>UB {align1};
-add (16) g63.0<1>W g88.0<16,16,1>W g63.0<16,16,2>UB {align1};
-add (16) g64.0<1>W g89.0<16,16,1>W g64.0<16,16,2>UB {align1};
-add (16) g65.0<1>W g90.0<16,16,1>W g65.0<16,16,2>UB {align1};
-add (16) g66.0<1>W g91.0<16,16,1>W g66.0<16,16,2>UB {align1};
-add (16) g67.0<1>W g92.0<16,16,1>W g67.0<16,16,2>UB {align1};
-add (16) g68.0<1>W g93.0<16,16,1>W g68.0<16,16,2>UB {align1};
-add (16) g69.0<1>W g94.0<16,16,1>W g69.0<16,16,2>UB {align1};
-add (16) g70.0<1>W g95.0<16,16,1>W g70.0<16,16,2>UB {align1};
-add (16) g71.0<1>W g96.0<16,16,1>W g71.0<16,16,2>UB {align1};
-add (16) g72.0<1>W g97.0<16,16,1>W g72.0<16,16,2>UB {align1};
-add (16) g73.0<1>W g98.0<16,16,1>W g73.0<16,16,2>UB {align1};
-jmpi write_back;
-
-field_dct:
-add (16) g58.0<1>W g83.0<16,16,1>W g58.0<16,16,2>UB {align1};
-add (16) g59.0<1>W g91.0<16,16,1>W g59.0<16,16,2>UB {align1};
-add (16) g60.0<1>W g84.0<16,16,1>W g60.0<16,16,2>UB {align1};
-add (16) g61.0<1>W g92.0<16,16,1>W g61.0<16,16,2>UB {align1};
-add (16) g62.0<1>W g85.0<16,16,1>W g62.0<16,16,2>UB {align1};
-add (16) g63.0<1>W g93.0<16,16,1>W g63.0<16,16,2>UB {align1};
-add (16) g64.0<1>W g86.0<16,16,1>W g64.0<16,16,2>UB {align1};
-add (16) g65.0<1>W g94.0<16,16,1>W g65.0<16,16,2>UB {align1};
-add (16) g66.0<1>W g87.0<16,16,1>W g66.0<16,16,2>UB {align1};
-add (16) g67.0<1>W g95.0<16,16,1>W g67.0<16,16,2>UB {align1};
-add (16) g68.0<1>W g88.0<16,16,1>W g68.0<16,16,2>UB {align1};
-add (16) g69.0<1>W g96.0<16,16,1>W g69.0<16,16,2>UB {align1};
-add (16) g70.0<1>W g89.0<16,16,1>W g70.0<16,16,2>UB {align1};
-add (16) g71.0<1>W g97.0<16,16,1>W g71.0<16,16,2>UB {align1};
-add (16) g72.0<1>W g90.0<16,16,1>W g72.0<16,16,2>UB {align1};
-add (16) g73.0<1>W g98.0<16,16,1>W g73.0<16,16,2>UB {align1};
-
-write_back:
-mov (1) g31.8<1>UD 0x00F000FUD {align1};
-mov.sat (16) g58.0<2>UB g58.0<16,16,1>W {align1};
-mov.sat (16) g59.0<2>UB g59.0<16,16,1>W {align1};
-mov.sat (16) g60.0<2>UB g60.0<16,16,1>W {align1};
-mov.sat (16) g61.0<2>UB g61.0<16,16,1>W {align1};
-mov.sat (16) g62.0<2>UB g62.0<16,16,1>W {align1};
-mov.sat (16) g63.0<2>UB g63.0<16,16,1>W {align1};
-mov.sat (16) g64.0<2>UB g64.0<16,16,1>W {align1};
-mov.sat (16) g65.0<2>UB g65.0<16,16,1>W {align1};
-mov.sat (16) g66.0<2>UB g66.0<16,16,1>W {align1};
-mov.sat (16) g67.0<2>UB g67.0<16,16,1>W {align1};
-mov.sat (16) g68.0<2>UB g68.0<16,16,1>W {align1};
-mov.sat (16) g69.0<2>UB g69.0<16,16,1>W {align1};
-mov.sat (16) g70.0<2>UB g70.0<16,16,1>W {align1};
-mov.sat (16) g71.0<2>UB g71.0<16,16,1>W {align1};
-mov.sat (16) g72.0<2>UB g72.0<16,16,1>W {align1};
-mov.sat (16) g73.0<2>UB g73.0<16,16,1>W {align1};
-
-mov (16) m1.0<1>UB g58.0<16,16,2>UB {align1};
-mov (16) m1.16<1>UB g59.0<16,16,2>UB {align1};
-mov (16) m2.0<1>UB g60.0<16,16,2>UB {align1};
-mov (16) m2.16<1>UB g61.0<16,16,2>UB {align1};
-mov (16) m3.0<1>UB g62.0<16,16,2>UB {align1};
-mov (16) m3.16<1>UB g63.0<16,16,2>UB {align1};
-mov (16) m4.0<1>UB g64.0<16,16,2>UB {align1};
-mov (16) m4.16<1>UB g65.0<16,16,2>UB {align1};
-mov (16) m5.0<1>UB g66.0<16,16,2>UB {align1};
-mov (16) m5.16<1>UB g67.0<16,16,2>UB {align1};
-mov (16) m6.0<1>UB g68.0<16,16,2>UB {align1};
-mov (16) m6.16<1>UB g69.0<16,16,2>UB {align1};
-mov (16) m7.0<1>UB g70.0<16,16,2>UB {align1};
-mov (16) m7.16<1>UB g71.0<16,16,2>UB {align1};
-mov (16) m8.0<1>UB g72.0<16,16,2>UB {align1};
-mov (16) m8.16<1>UB g73.0<16,16,2>UB {align1};
-send (16) 0 acc0<1>UW g31<8,8,1>UW write(0,0,2,0) mlen 9 rlen 0 {align1};
-
-//U
-mov (1) g31.8<1>UD 0x0070007UD { align1 };
-shr (2) g31.0<1>UD g31.0<2,2,1>UD 1D {align1};
-add (16) g74.0<1>W g99.0<16,16,1>W g74.0<16,16,1>UW {align1};
-add (16) g75.0<1>W g100.0<16,16,1>W g75.0<16,16,1>UW {align1};
-add (16) g76.0<1>W g101.0<16,16,1>W g76.0<16,16,1>UW {align1};
-add (16) g77.0<1>W g102.0<16,16,1>W g77.0<16,16,1>UW {align1};
-mov.sat (16) g74.0<2>UB g74.0<16,16,1>W {align1};
-mov.sat (16) g75.0<2>UB g75.0<16,16,1>W {align1};
-mov.sat (16) g76.0<2>UB g76.0<16,16,1>W {align1};
-mov.sat (16) g77.0<2>UB g77.0<16,16,1>W {align1};
-
-mov (16) m1.0<1>UB g74.0<16,16,2>UB {align1};
-mov (16) m1.16<1>UB g75.0<16,16,2>UB {align1};
-mov (16) m2.0<1>UB g76.0<16,16,2>UB {align1};
-mov (16) m2.16<1>UB g77.0<16,16,2>UB {align1};
-send (16) 0 acc0<1>UW g31<8,8,1>UW write(1, 0, 2, 0) mlen 3 rlen 0 { align1 };
-
-//V
-add (16) g78.0<1>UW g103.0<16,16,1>W g78.0<16,16,1>UW {align1};
-add (16) g79.0<1>UW g104.0<16,16,1>W g79.0<16,16,1>UW {align1};
-add (16) g80.0<1>UW g105.0<16,16,1>W g80.0<16,16,1>UW {align1};
-add (16) g81.0<1>UW g106.0<16,16,1>W g81.0<16,16,1>UW {align1};
-mov.sat (16) g78.0<2>UB g78.0<16,16,1>W {align1};
-mov.sat (16) g79.0<2>UB g79.0<16,16,1>W {align1};
-mov.sat (16) g80.0<2>UB g80.0<16,16,1>W {align1};
-mov.sat (16) g81.0<2>UB g81.0<16,16,1>W {align1};
-
-mov (16) m1.0<1>UB g78.0<16,16,2>UB {align1};
-mov (16) m1.16<1>UB g79.0<16,16,2>UB {align1};
-mov (16) m2.0<1>UB g80.0<16,16,2>UB {align1};
-mov (16) m2.16<1>UB g81.0<16,16,2>UB {align1};
-send (16) 0 acc0<1>UW g31<8,8,1>UW write(2, 0, 2, 0) mlen 3 rlen 0 { align1 };
-
-send (16) 0 acc0<1>UW g0<8,8,1>UW
- thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
-
diff --git a/src/shaders/mpeg2/vld/do_iq_intra.g4i b/src/shaders/mpeg2/vld/do_iq_intra.g4i
deleted file mode 100644
index 29bd020..0000000
--- a/src/shaders/mpeg2/vld/do_iq_intra.g4i
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright © 2008 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g112~g115: intra IQ matrix in UW format (in order to use instruction compress), copys from g1~g2
- g[a0.0]:DCT data of a block
- g125: ip before jump
- if(v==0 && u==0 && intra_mb)
- F''[v][u] = QF[v][u] * intra_dc_mult
- else
- F''[v][u] = (QF[v][u]*W[w][v][u]*quantiser_scale*2)/32
-*/
-DO_IQ_INTRA:
-add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
-mov (1) g111.0<1>W g[a0.0]<1,1,1>W {align1};
-mul (16) g116.0<1>D g[a0.0]<8,8,1>W g112.0<8,8,1>UW {align1 compr};
-mul (16) g116.0<1>D g116.0<8,8,1>D g109.0<8,8,0>UW {align1 compr};
-asr (16) g116.0<1>D g116.0<8,8,1>D 4UW {align1 compr};
-mul (1) g116.0<1>D g111<1,1,1>W g109.4<1,1,1>UW {align1}; //intra_dc_mult
-
-add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
-mul (16) g118.0<1>D g[a0.0]<8,8,1>W g113.0<8,8,1>UW {align1 compr};
-mul (16) g118.0<1>D g118.0<8,8,1>D g109.0<8,8,0>UW {align1 compr};
-asr (16) g118.0<1>D g118.0<8,8,1>D 4UW {align1 compr};
-
-add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
-mul (16) g120.0<1>D g[a0.0]<8,8,1>W g114.0<8,8,1>UW {align1 compr};
-mul (16) g120.0<1>D g120.0<8,8,1>D g109.0<8,8,0>UW {align1 compr};
-asr (16) g120.0<1>D g120.0<8,8,1>D 4UW {align1 compr};
-
-add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
-mul (16) g122.0<1>D g[a0.0]<8,8,1>W g115.0<8,8,1>UW {align1 compr};
-mul (16) g122.0<1>D g122.0<8,8,1>D g109.0<8,8,0>UW {align1 compr};
-asr (16) g122.0<1>D g122.0<8,8,1>D 4UW {align1 compr};
-
-add (1) ip g125.0<1,1,1>UD 0x20UD {align1}; //jump back
diff --git a/src/shaders/mpeg2/vld/do_iq_non_intra.g4i b/src/shaders/mpeg2/vld/do_iq_non_intra.g4i
deleted file mode 100644
index da85e84..0000000
--- a/src/shaders/mpeg2/vld/do_iq_non_intra.g4i
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g112~g115: intra IQ matrix in UW format (in order to use instruction compress), copys from g1~g2
- g[a0.0]:DCT data of a block
- g125: ip before jump
- F''[v][u]=(((QF[v][u]*2)+Sign(QF[v][u])) * W[w][v][u] * quantiser_scale)/32;
-*/
-DO_IQ_NON_INTRA:
-add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
-mul (16) g116.0<1>D g[a0.0]<8,8,1>W g112.0<8,8,1>UW {align1 compr};
-mul (16) g116.0<1>D g116.0<8,8,1>D g109.0<8,8,0>UW {align1 compr};
-asr (16) g116.0<1>D g116.0<8,8,1>D 4UW {align1 compr};
-
-add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
-mul (16) g118.0<1>D g[a0.0]<8,8,1>W g113.0<8,8,1>UW {align1 compr};
-mul (16) g118.0<1>D g118.0<8,8,1>D g109.0<8,8,0>UW {align1 compr};
-asr (16) g118.0<1>D g118.0<8,8,1>D 4UW {align1 compr};
-
-add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
-mul (16) g120.0<1>D g[a0.0]<8,8,1>W g114.0<8,8,1>UW {align1 compr};
-mul (16) g120.0<1>D g120.0<8,8,1>D g109.0<8,8,0>UW {align1 compr};
-asr (16) g120.0<1>D g120.0<8,8,1>D 4UW {align1 compr};
-
-add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
-mul (16) g122.0<1>D g[a0.0]<8,8,1>W g115.0<8,8,1>UW {align1 compr};
-mul (16) g122.0<1>D g122.0<8,8,1>D g109.0<8,8,0>UW {align1 compr};
-asr (16) g122.0<1>D g122.0<8,8,1>D 4UW {align1 compr};
-
-add (1) ip g125.0<1,1,1>UD 0x20UD {align1}; //jump back
diff --git a/src/shaders/mpeg2/vld/field_addidct.g4i b/src/shaders/mpeg2/vld/field_addidct.g4i
deleted file mode 100644
index 05d0f95..0000000
--- a/src/shaders/mpeg2/vld/field_addidct.g4i
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright © 2008 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g32: message descriptor for reading reference data
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data */
-mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1}; //restore x and y
-
-and.nz (1) null g82.2<1,1,1>UW 0x20UW {align1}; //dct_type
-(f0) jmpi field_dct;
-
-add (16) g58.0<1>W g83.0<16,16,1>W g58.0<16,16,2>UB {align1};
-add (16) g59.0<1>W g84.0<16,16,1>W g59.0<16,16,2>UB {align1};
-add (16) g60.0<1>W g85.0<16,16,1>W g60.0<16,16,2>UB {align1};
-add (16) g61.0<1>W g86.0<16,16,1>W g61.0<16,16,2>UB {align1};
-add (16) g62.0<1>W g87.0<16,16,1>W g62.0<16,16,2>UB {align1};
-add (16) g63.0<1>W g88.0<16,16,1>W g63.0<16,16,2>UB {align1};
-add (16) g64.0<1>W g89.0<16,16,1>W g64.0<16,16,2>UB {align1};
-add (16) g65.0<1>W g90.0<16,16,1>W g65.0<16,16,2>UB {align1};
-add (16) g66.0<1>W g91.0<16,16,1>W g66.0<16,16,2>UB {align1};
-add (16) g67.0<1>W g92.0<16,16,1>W g67.0<16,16,2>UB {align1};
-add (16) g68.0<1>W g93.0<16,16,1>W g68.0<16,16,2>UB {align1};
-add (16) g69.0<1>W g94.0<16,16,1>W g69.0<16,16,2>UB {align1};
-add (16) g70.0<1>W g95.0<16,16,1>W g70.0<16,16,2>UB {align1};
-add (16) g71.0<1>W g96.0<16,16,1>W g71.0<16,16,2>UB {align1};
-add (16) g72.0<1>W g97.0<16,16,1>W g72.0<16,16,2>UB {align1};
-add (16) g73.0<1>W g98.0<16,16,1>W g73.0<16,16,2>UB {align1};
-
-jmpi write_back;
-
-field_dct:
-add (16) g58.0<1>W g83.0<16,16,1>W g58.0<16,16,2>UB {align1};
-add (16) g59.0<1>W g91.0<16,16,1>W g59.0<16,16,2>UB {align1};
-add (16) g60.0<1>W g84.0<16,16,1>W g60.0<16,16,2>UB {align1};
-add (16) g61.0<1>W g92.0<16,16,1>W g61.0<16,16,2>UB {align1};
-add (16) g62.0<1>W g85.0<16,16,1>W g62.0<16,16,2>UB {align1};
-add (16) g63.0<1>W g93.0<16,16,1>W g63.0<16,16,2>UB {align1};
-add (16) g64.0<1>W g86.0<16,16,1>W g64.0<16,16,2>UB {align1};
-add (16) g65.0<1>W g94.0<16,16,1>W g65.0<16,16,2>UB {align1};
-add (16) g66.0<1>W g87.0<16,16,1>W g66.0<16,16,2>UB {align1};
-add (16) g67.0<1>W g95.0<16,16,1>W g67.0<16,16,2>UB {align1};
-add (16) g68.0<1>W g88.0<16,16,1>W g68.0<16,16,2>UB {align1};
-add (16) g69.0<1>W g96.0<16,16,1>W g69.0<16,16,2>UB {align1};
-add (16) g70.0<1>W g89.0<16,16,1>W g70.0<16,16,2>UB {align1};
-add (16) g71.0<1>W g97.0<16,16,1>W g71.0<16,16,2>UB {align1};
-add (16) g72.0<1>W g90.0<16,16,1>W g72.0<16,16,2>UB {align1};
-add (16) g73.0<1>W g98.0<16,16,1>W g73.0<16,16,2>UB {align1};
-
-write_back:
-mov (1) g31.8<1>UD 0x00F000FUD {align1};
-mov.sat (16) g58.0<2>UB g58.0<16,16,1>W {align1};
-mov.sat (16) g59.0<2>UB g59.0<16,16,1>W {align1};
-mov.sat (16) g60.0<2>UB g60.0<16,16,1>W {align1};
-mov.sat (16) g61.0<2>UB g61.0<16,16,1>W {align1};
-mov.sat (16) g62.0<2>UB g62.0<16,16,1>W {align1};
-mov.sat (16) g63.0<2>UB g63.0<16,16,1>W {align1};
-mov.sat (16) g64.0<2>UB g64.0<16,16,1>W {align1};
-mov.sat (16) g65.0<2>UB g65.0<16,16,1>W {align1};
-mov.sat (16) g66.0<2>UB g66.0<16,16,1>W {align1};
-mov.sat (16) g67.0<2>UB g67.0<16,16,1>W {align1};
-mov.sat (16) g68.0<2>UB g68.0<16,16,1>W {align1};
-mov.sat (16) g69.0<2>UB g69.0<16,16,1>W {align1};
-mov.sat (16) g70.0<2>UB g70.0<16,16,1>W {align1};
-mov.sat (16) g71.0<2>UB g71.0<16,16,1>W {align1};
-mov.sat (16) g72.0<2>UB g72.0<16,16,1>W {align1};
-mov.sat (16) g73.0<2>UB g73.0<16,16,1>W {align1};
-
-mov (16) m1.0<1>UB g58.0<16,16,2>UB {align1};
-mov (16) m1.16<1>UB g59.0<16,16,2>UB {align1};
-mov (16) m2.0<1>UB g60.0<16,16,2>UB {align1};
-mov (16) m2.16<1>UB g61.0<16,16,2>UB {align1};
-mov (16) m3.0<1>UB g62.0<16,16,2>UB {align1};
-mov (16) m3.16<1>UB g63.0<16,16,2>UB {align1};
-mov (16) m4.0<1>UB g64.0<16,16,2>UB {align1};
-mov (16) m4.16<1>UB g65.0<16,16,2>UB {align1};
-mov (16) m5.0<1>UB g66.0<16,16,2>UB {align1};
-mov (16) m5.16<1>UB g67.0<16,16,2>UB {align1};
-mov (16) m6.0<1>UB g68.0<16,16,2>UB {align1};
-mov (16) m6.16<1>UB g69.0<16,16,2>UB {align1};
-mov (16) m7.0<1>UB g70.0<16,16,2>UB {align1};
-mov (16) m7.16<1>UB g71.0<16,16,2>UB {align1};
-mov (16) m8.0<1>UB g72.0<16,16,2>UB {align1};
-mov (16) m8.16<1>UB g73.0<16,16,2>UB {align1};
-send (16) 0 acc0<1>UW g31<8,8,1>UW write(0,0,2,0) mlen 9 rlen 0 {align1};
-
-//U
-mov (1) g31.8<1>UD 0x0070007UD { align1 };
-shr (2) g31.0<1>UD g31.0<2,2,1>UD 1D {align1};
-add (16) g74.0<1>W g99.0<16,16,1>W g74.0<16,16,1>UW {align1};
-add (16) g75.0<1>W g100.0<16,16,1>W g75.0<16,16,1>UW {align1};
-add (16) g76.0<1>W g101.0<16,16,1>W g76.0<16,16,1>UW {align1};
-add (16) g77.0<1>W g102.0<16,16,1>W g77.0<16,16,1>UW {align1};
-mov.sat (16) g74.0<2>UB g74.0<16,16,1>W {align1};
-mov.sat (16) g75.0<2>UB g75.0<16,16,1>W {align1};
-mov.sat (16) g76.0<2>UB g76.0<16,16,1>W {align1};
-mov.sat (16) g77.0<2>UB g77.0<16,16,1>W {align1};
-
-mov (16) m1.0<1>UB g74.0<16,16,2>UB {align1};
-mov (16) m1.16<1>UB g75.0<16,16,2>UB {align1};
-mov (16) m2.0<1>UB g76.0<16,16,2>UB {align1};
-mov (16) m2.16<1>UB g77.0<16,16,2>UB {align1};
-send (16) 0 acc0<1>UW g31<8,8,1>UW write(1, 0, 2, 0) mlen 3 rlen 0 { align1 };
-
-//V
-add (16) g78.0<1>UW g103.0<16,16,1>W g78.0<16,16,1>UW {align1};
-add (16) g79.0<1>UW g104.0<16,16,1>W g79.0<16,16,1>UW {align1};
-add (16) g80.0<1>UW g105.0<16,16,1>W g80.0<16,16,1>UW {align1};
-add (16) g81.0<1>UW g106.0<16,16,1>W g81.0<16,16,1>UW {align1};
-mov.sat (16) g78.0<2>UB g78.0<16,16,1>W {align1};
-mov.sat (16) g79.0<2>UB g79.0<16,16,1>W {align1};
-mov.sat (16) g80.0<2>UB g80.0<16,16,1>W {align1};
-mov.sat (16) g81.0<2>UB g81.0<16,16,1>W {align1};
-
-mov (16) m1.0<1>UB g78.0<16,16,2>UB {align1};
-mov (16) m1.16<1>UB g79.0<16,16,2>UB {align1};
-mov (16) m2.0<1>UB g80.0<16,16,2>UB {align1};
-mov (16) m2.16<1>UB g81.0<16,16,2>UB {align1};
-send (16) 0 acc0<1>UW g31<8,8,1>UW write(2, 0, 2, 0) mlen 3 rlen 0 { align1 };
-
-send (16) 0 acc0<1>UW g0<8,8,1>UW
- thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
-
diff --git a/src/shaders/mpeg2/vld/field_backward.g4a b/src/shaders/mpeg2/vld/field_backward.g4a
deleted file mode 100644
index 1696ff3..0000000
--- a/src/shaders/mpeg2/vld/field_backward.g4a
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g32: message descriptor for reading reference data */
-
-mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
-mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
-mov (1) g126.8<1>UD ip {align1};
-mov (1) ip g21.0<1,1,1>UD {align1};
-
-//Y of top field
-first_field_picture:
-asr (2) g31.14<1>W g82.20<2,2,1>W 1W {align1};
-add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-mov (1) g32.28<1>UD 0UD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x2000UW {align1}; //motion vertical field select forward
-(f0) mov (1) g32.28<1>UD 1UD {align1};
-shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD g32.28<1,1,1>UD {align1};
-define(`surface',`7')
-define(`mv1',`g82.20')
-define(`mv2',`g82.22')
-include(`field_motion_y.g4i')
-//UV of top field
-shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
-asr (2) g31.14<1>W g82.20<2,2,1>W 2W {align1};
-add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-mov (1) g32.28<1>UD 0UD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x2000UW {align1}; //motion vertical field select forward
-(f0) mov (1) g32.28<1>UD 1UD {align1};
-shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD g32.28<1,1,1>UD {align1};
-define(`surface_u', `8')
-define(`surface_v', `9')
-define(`mv1',`g82.20')
-define(`mv2',`g82.22')
-include(`field_motion_uv.g4i')
-jmpi field_addidct;
-
-second_field_picture:
-//Y of bottom field
-asr (2) g31.14<1>W g82.20<2,2,1>W 1W {align1};
-add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD g32.28<1,1,1>UD {align1};
-define(`surface',`3')
-define(`mv1',`g82.20')
-define(`mv2',`g82.22')
-include(`field_motion_y.g4i')
-//UV of bottom field
-shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
-asr (2) g31.14<1>W g82.20<2,2,1>W 2W {align1};
-add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD g32.28<1,1,1>UD {align1};
-define(`surface_u', `10')
-define(`surface_v', `11')
-define(`mv1',`g82.20')
-define(`mv2',`g82.22')
-include(`field_motion_uv.g4i')
-
-field_addidct:
-include(`field_addidct.g4i')
-out:
-send (16) 0 acc0<1>UW g0<8,8,1>UW
- thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/src/shaders/mpeg2/vld/field_backward.g4b b/src/shaders/mpeg2/vld/field_backward.g4b
deleted file mode 100644
index f00d8e5..0000000
--- a/src/shaders/mpeg2/vld/field_backward.g4b
+++ /dev/null
@@ -1,757 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
- { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
- { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
- { 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000006a },
- { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000004f },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
- { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
- { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
- { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
- { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
- { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
- { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
- { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
- { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
- { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
- { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
- { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
- { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
- { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
- { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
- { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
- { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
- { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
- { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000039 },
- { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
- { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
- { 0x01000005, 0x20003dbc, 0x00210a54, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000005c },
- { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000043 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
- { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
- { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
- { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
- { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
- { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
- { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
- { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
- { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000037 },
- { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
- { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
- { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000143 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
- { 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000006a },
- { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000004f },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
- { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
- { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
- { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
- { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
- { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
- { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
- { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
- { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
- { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
- { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
- { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
- { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
- { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
- { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
- { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
- { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
- { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
- { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000039 },
- { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
- { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
- { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
- { 0x01000005, 0x20003dbc, 0x00210a54, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000005c },
- { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000043 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
- { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
- { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
- { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
- { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
- { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
- { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
- { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
- { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000037 },
- { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
- { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
- { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
- { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
- { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
- { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
- { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
- { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
- { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
- { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
- { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
- { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
- { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
- { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
- { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
- { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
- { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
- { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
- { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
- { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
- { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
- { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
- { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
- { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
- { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
- { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
- { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
- { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
- { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
- { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
- { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
- { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
- { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
- { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/src/shaders/mpeg2/vld/field_backward.g4b.gen5 b/src/shaders/mpeg2/vld/field_backward.g4b.gen5
deleted file mode 100644
index 7aac9e4..0000000
--- a/src/shaders/mpeg2/vld/field_backward.g4b.gen5
+++ /dev/null
@@ -1,757 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
- { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
- { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
- { 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000d4 },
- { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000009e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
- { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
- { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
- { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
- { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
- { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
- { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
- { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
- { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
- { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
- { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
- { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
- { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
- { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
- { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
- { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
- { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
- { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
- { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000a4 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000072 },
- { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
- { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
- { 0x01000005, 0x20003dbc, 0x00210a54, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000b8 },
- { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
- { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
- { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
- { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
- { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
- { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
- { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
- { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
- { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000009c },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000006e },
- { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
- { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
- { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000286 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
- { 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000d4 },
- { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000009e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
- { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
- { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
- { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
- { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
- { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
- { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
- { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
- { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
- { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
- { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
- { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
- { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
- { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
- { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
- { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
- { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
- { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
- { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000a4 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000072 },
- { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
- { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
- { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
- { 0x01000005, 0x20003dbc, 0x00210a54, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000b8 },
- { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
- { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
- { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
- { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
- { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
- { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
- { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
- { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
- { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000009c },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000006e },
- { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
- { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
- { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
- { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
- { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
- { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
- { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
- { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
- { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
- { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
- { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
- { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
- { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
- { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
- { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
- { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
- { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
- { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
- { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
- { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
- { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
- { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
- { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
- { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
- { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
- { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
- { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
- { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
- { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
- { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
- { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
- { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
- { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
- { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/src/shaders/mpeg2/vld/field_backward_16x8.g4a b/src/shaders/mpeg2/vld/field_backward_16x8.g4a
deleted file mode 100644
index 89b8368..0000000
--- a/src/shaders/mpeg2/vld/field_backward_16x8.g4a
+++ /dev/null
@@ -1,30 +0,0 @@
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g32: message descriptor for reading reference data */
-mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
-mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
-define(`UV_red',`0xffffffffUD')
-define(`UV_white',`0x7f7f7f7fUD')
-define(`UV_green',`0x00000000UD')
-mov(2) g6.0<1>UD g82.12<2,2,1>UW {align1};
-mov(1) g6.8<1>UD 0x000f000fUD { align1 };
-mov(16) m1<1>UD 0xFFFFFFFFUD {align1 compr};
-mov(16) m3<1>UD 0xFFFFFFFFUD {align1 compr};
-mov(16) m5<1>UD 0xFFFFFFFFUD {align1 compr};
-mov(16) m7<1>UD 0xFFFFFFFFUD {align1 compr};
-send (16) 0 acc0<1>UW g6<8,8,1>UW write(0, 0, 2, 0) mlen 9 rlen 0 { align1 };
-/*Fill U buffer & V buffer with 0x7F*/
-shr (2) g6.0<1>UD g82.12<2,2,1>UW 1UW {align1};
-mov(1) g6.8<1>UD 0x00070007UD { align1 };
-mov (16) m1<1>UD UV_white {align1 compr};
-send (16) 0 acc0<1>UW g6<8,8,1>UW write(2, 0, 2, 0) mlen 3 rlen 0 { align1 };
-send (16) 0 acc0<1>UW g6<8,8,1>UW write(1, 0, 2, 0) mlen 3 rlen 0 { align1 };
-send (16) 0 acc0<1>UW g0<8,8,1>UW
- thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/src/shaders/mpeg2/vld/field_backward_16x8.g4b b/src/shaders/mpeg2/vld/field_backward_16x8.g4b
deleted file mode 100644
index 9d95f70..0000000
--- a/src/shaders/mpeg2/vld/field_backward_16x8.g4b
+++ /dev/null
@@ -1,15 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00200001, 0x20c00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x20c80061, 0x00000000, 0x000f000f },
- { 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
- { 0x00800031, 0x24001d28, 0x008d00c0, 0x05902000 },
- { 0x00200008, 0x20c02d21, 0x00450a4c, 0x00010001 },
- { 0x00000001, 0x20c80061, 0x00000000, 0x00070007 },
- { 0x00802001, 0x20200062, 0x00000000, 0x7f7f7f7f },
- { 0x00800031, 0x24001d28, 0x008d00c0, 0x05302002 },
- { 0x00800031, 0x24001d28, 0x008d00c0, 0x05302001 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/src/shaders/mpeg2/vld/field_backward_16x8.g4b.gen5 b/src/shaders/mpeg2/vld/field_backward_16x8.g4b.gen5
deleted file mode 100644
index b12bddc..0000000
--- a/src/shaders/mpeg2/vld/field_backward_16x8.g4b.gen5
+++ /dev/null
@@ -1,15 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00200001, 0x20c00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x20c80061, 0x00000000, 0x000f000f },
- { 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
- { 0x00800031, 0x24001d28, 0x508d00c0, 0x12082000 },
- { 0x00200008, 0x20c02d21, 0x00450a4c, 0x00010001 },
- { 0x00000001, 0x20c80061, 0x00000000, 0x00070007 },
- { 0x00802001, 0x20200062, 0x00000000, 0x7f7f7f7f },
- { 0x00800031, 0x24001d28, 0x508d00c0, 0x06082002 },
- { 0x00800031, 0x24001d28, 0x508d00c0, 0x06082001 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/src/shaders/mpeg2/vld/field_bidirect.g4a b/src/shaders/mpeg2/vld/field_bidirect.g4a
deleted file mode 100644
index ad6d302..0000000
--- a/src/shaders/mpeg2/vld/field_bidirect.g4a
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g32: message descriptor for reading reference data */
-
-mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
-mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
-mov (1) g126.8<1>UD ip {align1};
-mov (1) ip g21.0<1,1,1>UD {align1};
-
-//Y of forward
-asr (2) g31.14<1>W g82.16<2,2,1>W 1W {align1};
-add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-mov (1) g32.28<1>UD 0UD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x1000UW {align1}; //motion vertical field select
-(f0) mov (1) g32.28<1>UD 1UD {align1};
-shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD g32.28<1,1,1>UD {align1};
-define(`surface',`4')
-define(`mv1',`g82.16')
-define(`mv2',`g82.18')
-include(`field_motion_y.g4i')
-mov (16) g108.0<1>UD g58.0<16,16,1>UD {align1 compr};
-mov (16) g110.0<1>UD g60.0<16,16,1>UD {align1 compr};
-mov (16) g112.0<1>UD g62.0<16,16,1>UD {align1 compr};
-mov (16) g114.0<1>UD g64.0<16,16,1>UD {align1 compr};
-mov (16) g116.0<1>UD g66.0<16,16,1>UD {align1 compr};
-mov (16) g118.0<1>UD g68.0<16,16,1>UD {align1 compr};
-mov (16) g120.0<1>UD g70.0<16,16,1>UD {align1 compr};
-mov (16) g122.0<1>UD g72.0<16,16,1>UD {align1 compr};
-
-//Y of backward
-asr (2) g31.14<1>W g82.20<2,2,1>W 1W {align1};
-add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-mov (1) g32.28<1>UD 0UD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x2000UW {align1}; //motion vertical field select
-(f0) mov (1) g32.28<1>UD 1UD {align1};
-shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD g32.28<1,1,1>UD {align1};
-define(`surface',`7')
-define(`mv1',`g82.20')
-define(`mv2',`g82.22')
-include(`field_motion_y.g4i')
-avg (16) g58.0<1>UW g58.0<16,16,1>UW g108.0<16,16,1>UW {align1};
-avg (16) g59.0<1>UW g59.0<16,16,1>UW g109.0<16,16,1>UW {align1};
-avg (16) g60.0<1>UW g60.0<16,16,1>UW g110.0<16,16,1>UW {align1};
-avg (16) g61.0<1>UW g61.0<16,16,1>UW g111.0<16,16,1>UW {align1};
-avg (16) g62.0<1>UW g62.0<16,16,1>UW g112.0<16,16,1>UW {align1};
-avg (16) g63.0<1>UW g63.0<16,16,1>UW g113.0<16,16,1>UW {align1};
-avg (16) g64.0<1>UW g64.0<16,16,1>UW g114.0<16,16,1>UW {align1};
-avg (16) g65.0<1>UW g65.0<16,16,1>UW g115.0<16,16,1>UW {align1};
-avg (16) g66.0<1>UW g66.0<16,16,1>UW g116.0<16,16,1>UW {align1};
-avg (16) g67.0<1>UW g67.0<16,16,1>UW g117.0<16,16,1>UW {align1};
-avg (16) g68.0<1>UW g68.0<16,16,1>UW g118.0<16,16,1>UW {align1};
-avg (16) g69.0<1>UW g69.0<16,16,1>UW g119.0<16,16,1>UW {align1};
-avg (16) g70.0<1>UW g70.0<16,16,1>UW g120.0<16,16,1>UW {align1};
-avg (16) g71.0<1>UW g71.0<16,16,1>UW g121.0<16,16,1>UW {align1};
-avg (16) g72.0<1>UW g72.0<16,16,1>UW g122.0<16,16,1>UW {align1};
-avg (16) g73.0<1>UW g73.0<16,16,1>UW g123.0<16,16,1>UW {align1};
-
-//UV, Forward
-shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
-asr (2) g31.14<1>W g82.16<2,2,1>W 2W {align1};
-add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-mov (1) g32.28<1>UD 0UD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x1000UW {align1}; //motion vertical field select
-(f0) mov (1) g32.28<1>UD 1UD {align1};
-shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD g32.28<1,1,1>UD {align1};
-define(`surface_u', `5')
-define(`surface_v', `6')
-define(`mv1',`g82.16')
-define(`mv2',`g82.18')
-include(`field_motion_uv.g4i')
-//Save UV Forward
-mov (16) g108.0<1>UD g74.0<16,16,1>UD {align1 compr};
-mov (16) g110.0<1>UD g76.0<16,16,1>UD {align1 compr};
-mov (16) g112.0<1>UD g78.0<16,16,1>UD {align1 compr};
-mov (16) g114.0<1>UD g80.0<16,16,1>UD {align1 compr};
-
-//UV, Backward
-asr (2) g31.14<1>W g82.20<2,2,1>W 2W {align1};
-add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-mov (1) g32.28<1>UD 0UD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x2000UW {align1}; //motion vertical field select
-(f0) mov (1) g32.28<1>UD 1UD {align1};
-shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD g32.28<1,1,1>UD {align1};
-define(`surface_u', `8')
-define(`surface_v', `9')
-define(`mv1',`g82.20')
-define(`mv2',`g82.22')
-include(`field_motion_uv.g4i')
-//Average Forward and Backward
-avg (16) g74.0<1>UW g74.0<16,16,1>UW g108.0<16,16,1>UW {align1};
-avg (16) g75.0<1>UW g75.0<16,16,1>UW g109.0<16,16,1>UW {align1};
-avg (16) g76.0<1>UW g76.0<16,16,1>UW g110.0<16,16,1>UW {align1};
-avg (16) g77.0<1>UW g77.0<16,16,1>UW g111.0<16,16,1>UW {align1};
-avg (16) g78.0<1>UW g78.0<16,16,1>UW g112.0<16,16,1>UW {align1};
-avg (16) g79.0<1>UW g79.0<16,16,1>UW g113.0<16,16,1>UW {align1};
-avg (16) g80.0<1>UW g80.0<16,16,1>UW g114.0<16,16,1>UW {align1};
-avg (16) g81.0<1>UW g81.0<16,16,1>UW g115.0<16,16,1>UW {align1};
-
-field_addidct:
-include(`field_addidct.g4i')
-out:
-send (16) 0 acc0<1>UW g0<8,8,1>UW
- thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/src/shaders/mpeg2/vld/field_bidirect.g4b b/src/shaders/mpeg2/vld/field_bidirect.g4b
deleted file mode 100644
index 181e776..0000000
--- a/src/shaders/mpeg2/vld/field_bidirect.g4b
+++ /dev/null
@@ -1,797 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
- { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
- { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
- { 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000006a },
- { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000004f },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
- { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
- { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
- { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
- { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
- { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
- { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
- { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
- { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
- { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
- { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
- { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
- { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
- { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
- { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
- { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
- { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
- { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
- { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000039 },
- { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
- { 0x00802001, 0x2d800021, 0x00b10740, 0x00000000 },
- { 0x00802001, 0x2dc00021, 0x00b10780, 0x00000000 },
- { 0x00802001, 0x2e000021, 0x00b107c0, 0x00000000 },
- { 0x00802001, 0x2e400021, 0x00b10800, 0x00000000 },
- { 0x00802001, 0x2e800021, 0x00b10840, 0x00000000 },
- { 0x00802001, 0x2ec00021, 0x00b10880, 0x00000000 },
- { 0x00802001, 0x2f000021, 0x00b108c0, 0x00000000 },
- { 0x00802001, 0x2f400021, 0x00b10900, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
- { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
- { 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000006a },
- { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000004f },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
- { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
- { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
- { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
- { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
- { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
- { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
- { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
- { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
- { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
- { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
- { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
- { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
- { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
- { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
- { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
- { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
- { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
- { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000039 },
- { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
- { 0x00800042, 0x27402529, 0x00b10740, 0x00b10d80 },
- { 0x00800042, 0x27602529, 0x00b10760, 0x00b10da0 },
- { 0x00800042, 0x27802529, 0x00b10780, 0x00b10dc0 },
- { 0x00800042, 0x27a02529, 0x00b107a0, 0x00b10de0 },
- { 0x00800042, 0x27c02529, 0x00b107c0, 0x00b10e00 },
- { 0x00800042, 0x27e02529, 0x00b107e0, 0x00b10e20 },
- { 0x00800042, 0x28002529, 0x00b10800, 0x00b10e40 },
- { 0x00800042, 0x28202529, 0x00b10820, 0x00b10e60 },
- { 0x00800042, 0x28402529, 0x00b10840, 0x00b10e80 },
- { 0x00800042, 0x28602529, 0x00b10860, 0x00b10ea0 },
- { 0x00800042, 0x28802529, 0x00b10880, 0x00b10ec0 },
- { 0x00800042, 0x28a02529, 0x00b108a0, 0x00b10ee0 },
- { 0x00800042, 0x28c02529, 0x00b108c0, 0x00b10f00 },
- { 0x00800042, 0x28e02529, 0x00b108e0, 0x00b10f20 },
- { 0x00800042, 0x29002529, 0x00b10900, 0x00b10f40 },
- { 0x00800042, 0x29202529, 0x00b10920, 0x00b10f60 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
- { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
- { 0x01000005, 0x20003dbc, 0x00210a50, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000005c },
- { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000043 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
- { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
- { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
- { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
- { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
- { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
- { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
- { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
- { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000037 },
- { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
- { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
- { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
- { 0x00802001, 0x2d800021, 0x00b10940, 0x00000000 },
- { 0x00802001, 0x2dc00021, 0x00b10980, 0x00000000 },
- { 0x00802001, 0x2e000021, 0x00b109c0, 0x00000000 },
- { 0x00802001, 0x2e400021, 0x00b10a00, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
- { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
- { 0x01000005, 0x20003dbc, 0x00210a54, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000005c },
- { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000043 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
- { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
- { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
- { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
- { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
- { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
- { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
- { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
- { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000037 },
- { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a008 },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a009 },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
- { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a008 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
- { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
- { 0x00800042, 0x29402529, 0x00b10940, 0x00b10d80 },
- { 0x00800042, 0x29602529, 0x00b10960, 0x00b10da0 },
- { 0x00800042, 0x29802529, 0x00b10980, 0x00b10dc0 },
- { 0x00800042, 0x29a02529, 0x00b109a0, 0x00b10de0 },
- { 0x00800042, 0x29c02529, 0x00b109c0, 0x00b10e00 },
- { 0x00800042, 0x29e02529, 0x00b109e0, 0x00b10e20 },
- { 0x00800042, 0x2a002529, 0x00b10a00, 0x00b10e40 },
- { 0x00800042, 0x2a202529, 0x00b10a20, 0x00b10e60 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
- { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
- { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
- { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
- { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
- { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
- { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
- { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
- { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
- { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
- { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
- { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
- { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
- { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
- { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
- { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
- { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
- { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
- { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
- { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
- { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
- { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
- { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
- { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
- { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
- { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
- { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
- { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
- { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
- { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
- { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
- { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/src/shaders/mpeg2/vld/field_bidirect.g4b.gen5 b/src/shaders/mpeg2/vld/field_bidirect.g4b.gen5
deleted file mode 100644
index 70dd7b3..0000000
--- a/src/shaders/mpeg2/vld/field_bidirect.g4b.gen5
+++ /dev/null
@@ -1,797 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
- { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
- { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
- { 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000d4 },
- { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000009e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
- { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
- { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
- { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
- { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
- { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
- { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
- { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
- { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
- { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
- { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
- { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
- { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
- { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
- { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
- { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
- { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
- { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
- { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000a4 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000072 },
- { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
- { 0x00802001, 0x2d800021, 0x00b10740, 0x00000000 },
- { 0x00802001, 0x2dc00021, 0x00b10780, 0x00000000 },
- { 0x00802001, 0x2e000021, 0x00b107c0, 0x00000000 },
- { 0x00802001, 0x2e400021, 0x00b10800, 0x00000000 },
- { 0x00802001, 0x2e800021, 0x00b10840, 0x00000000 },
- { 0x00802001, 0x2ec00021, 0x00b10880, 0x00000000 },
- { 0x00802001, 0x2f000021, 0x00b108c0, 0x00000000 },
- { 0x00802001, 0x2f400021, 0x00b10900, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
- { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
- { 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000d4 },
- { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000009e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
- { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
- { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
- { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
- { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
- { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
- { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
- { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
- { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
- { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
- { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
- { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
- { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
- { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
- { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
- { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
- { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
- { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
- { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000a4 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000072 },
- { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
- { 0x00800042, 0x27402529, 0x00b10740, 0x00b10d80 },
- { 0x00800042, 0x27602529, 0x00b10760, 0x00b10da0 },
- { 0x00800042, 0x27802529, 0x00b10780, 0x00b10dc0 },
- { 0x00800042, 0x27a02529, 0x00b107a0, 0x00b10de0 },
- { 0x00800042, 0x27c02529, 0x00b107c0, 0x00b10e00 },
- { 0x00800042, 0x27e02529, 0x00b107e0, 0x00b10e20 },
- { 0x00800042, 0x28002529, 0x00b10800, 0x00b10e40 },
- { 0x00800042, 0x28202529, 0x00b10820, 0x00b10e60 },
- { 0x00800042, 0x28402529, 0x00b10840, 0x00b10e80 },
- { 0x00800042, 0x28602529, 0x00b10860, 0x00b10ea0 },
- { 0x00800042, 0x28802529, 0x00b10880, 0x00b10ec0 },
- { 0x00800042, 0x28a02529, 0x00b108a0, 0x00b10ee0 },
- { 0x00800042, 0x28c02529, 0x00b108c0, 0x00b10f00 },
- { 0x00800042, 0x28e02529, 0x00b108e0, 0x00b10f20 },
- { 0x00800042, 0x29002529, 0x00b10900, 0x00b10f40 },
- { 0x00800042, 0x29202529, 0x00b10920, 0x00b10f60 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
- { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
- { 0x01000005, 0x20003dbc, 0x00210a50, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000b8 },
- { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
- { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
- { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
- { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
- { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
- { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
- { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
- { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
- { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000009c },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000006e },
- { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
- { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
- { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
- { 0x00802001, 0x2d800021, 0x00b10940, 0x00000000 },
- { 0x00802001, 0x2dc00021, 0x00b10980, 0x00000000 },
- { 0x00802001, 0x2e000021, 0x00b109c0, 0x00000000 },
- { 0x00802001, 0x2e400021, 0x00b10a00, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
- { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
- { 0x01000005, 0x20003dbc, 0x00210a54, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000b8 },
- { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
- { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
- { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
- { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
- { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
- { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
- { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
- { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
- { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000009c },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000006e },
- { 0x01000005, 0x20003dbc, 0x00210a56, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a008 },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a009 },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
- { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a008 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
- { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
- { 0x00800042, 0x29402529, 0x00b10940, 0x00b10d80 },
- { 0x00800042, 0x29602529, 0x00b10960, 0x00b10da0 },
- { 0x00800042, 0x29802529, 0x00b10980, 0x00b10dc0 },
- { 0x00800042, 0x29a02529, 0x00b109a0, 0x00b10de0 },
- { 0x00800042, 0x29c02529, 0x00b109c0, 0x00b10e00 },
- { 0x00800042, 0x29e02529, 0x00b109e0, 0x00b10e20 },
- { 0x00800042, 0x2a002529, 0x00b10a00, 0x00b10e40 },
- { 0x00800042, 0x2a202529, 0x00b10a20, 0x00b10e60 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
- { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
- { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
- { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
- { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
- { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
- { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
- { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
- { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
- { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
- { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
- { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
- { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
- { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
- { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
- { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
- { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
- { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
- { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
- { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
- { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
- { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
- { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
- { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
- { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
- { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
- { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
- { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
- { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
- { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
- { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
- { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/src/shaders/mpeg2/vld/field_bidirect_16x8.g4a b/src/shaders/mpeg2/vld/field_bidirect_16x8.g4a
deleted file mode 100644
index e4fc178..0000000
--- a/src/shaders/mpeg2/vld/field_bidirect_16x8.g4a
+++ /dev/null
@@ -1,31 +0,0 @@
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g32: message descriptor for reading reference data */
-
-mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
-mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
-define(`UV_red',`0xffffffffUD')
-define(`UV_white',`0x7f7f7f7fUD')
-define(`UV_green',`0x00000000UD')
-mov(2) g6.0<1>UD g82.12<2,2,1>UW {align1};
-mov(1) g6.8<1>UD 0x000f000fUD { align1 };
-mov(16) m1<1>UD 0xFFFFFFFFUD {align1 compr};
-mov(16) m3<1>UD 0xFFFFFFFFUD {align1 compr};
-mov(16) m5<1>UD 0xFFFFFFFFUD {align1 compr};
-mov(16) m7<1>UD 0xFFFFFFFFUD {align1 compr};
-send (16) 0 acc0<1>UW g6<8,8,1>UW write(0, 0, 2, 0) mlen 9 rlen 0 { align1 };
-/*Fill U buffer & V buffer with 0x7F*/
-shr (2) g6.0<1>UD g82.12<2,2,1>UW 1UW {align1};
-mov(1) g6.8<1>UD 0x00070007UD { align1 };
-mov (16) m1<1>UD UV_white {align1 compr};
-send (16) 0 acc0<1>UW g6<8,8,1>UW write(2, 0, 2, 0) mlen 3 rlen 0 { align1 };
-send (16) 0 acc0<1>UW g6<8,8,1>UW write(1, 0, 2, 0) mlen 3 rlen 0 { align1 };
-send (16) 0 acc0<1>UW g0<8,8,1>UW
- thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/src/shaders/mpeg2/vld/field_bidirect_16x8.g4b b/src/shaders/mpeg2/vld/field_bidirect_16x8.g4b
deleted file mode 100644
index 9d95f70..0000000
--- a/src/shaders/mpeg2/vld/field_bidirect_16x8.g4b
+++ /dev/null
@@ -1,15 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00200001, 0x20c00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x20c80061, 0x00000000, 0x000f000f },
- { 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
- { 0x00800031, 0x24001d28, 0x008d00c0, 0x05902000 },
- { 0x00200008, 0x20c02d21, 0x00450a4c, 0x00010001 },
- { 0x00000001, 0x20c80061, 0x00000000, 0x00070007 },
- { 0x00802001, 0x20200062, 0x00000000, 0x7f7f7f7f },
- { 0x00800031, 0x24001d28, 0x008d00c0, 0x05302002 },
- { 0x00800031, 0x24001d28, 0x008d00c0, 0x05302001 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/src/shaders/mpeg2/vld/field_bidirect_16x8.g4b.gen5 b/src/shaders/mpeg2/vld/field_bidirect_16x8.g4b.gen5
deleted file mode 100644
index b12bddc..0000000
--- a/src/shaders/mpeg2/vld/field_bidirect_16x8.g4b.gen5
+++ /dev/null
@@ -1,15 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00200001, 0x20c00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x20c80061, 0x00000000, 0x000f000f },
- { 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
- { 0x00800031, 0x24001d28, 0x508d00c0, 0x12082000 },
- { 0x00200008, 0x20c02d21, 0x00450a4c, 0x00010001 },
- { 0x00000001, 0x20c80061, 0x00000000, 0x00070007 },
- { 0x00802001, 0x20200062, 0x00000000, 0x7f7f7f7f },
- { 0x00800031, 0x24001d28, 0x508d00c0, 0x06082002 },
- { 0x00800031, 0x24001d28, 0x508d00c0, 0x06082001 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/src/shaders/mpeg2/vld/field_forward.g4a b/src/shaders/mpeg2/vld/field_forward.g4a
deleted file mode 100644
index 611cf0c..0000000
--- a/src/shaders/mpeg2/vld/field_forward.g4a
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g32: message descriptor for reading reference data */
-
-mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
-mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
-mov (1) g126.8<1>UD ip {align1};
-mov (1) ip g21.0<1,1,1>UD {align1};
-
-and.nz (1) null g82.2<1,1,1>UW 0x0800UW {align1}; //second field-picture?
-(f0) jmpi first_field_picture;
-
-and (1) g32.0<1>UW g82.10<1,1,1>UW 0x0003UW {align1};
-cmp.e (1) null g32.0<1,1,1>UW 0x0002UW {align1}; //bottom field?
-(f0) jmpi bottom_field;
-
-top_field:
-and.z (1) null g82.2<1,1,1>UW 0x1000UW {align1}; //motion vertical field select forward
-(f0) jmpi first_field_picture; //second field-picture top field from top
-mov (1) g32.28<1>UD 1UD {align1};
-jmpi first_field_picture; //second field-picture top field from bottom
-
-bottom_field:
-and.nz (1) null g82.2<1,1,1>UW 0x1000UW {align1}; //motion vertical field select forward
-(f0) jmpi first_field_picture; //second field-picture bottom field from bottom
-mov (1) g32.28<1>UD 0UD {align1};
-jmpi second_field_picture; //second field-picture bottom field from top
-
-//Y of top field
-first_field_picture:
-asr (2) g31.14<1>W g82.16<2,2,1>W 1W {align1};
-add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-mov (1) g32.28<1>UD 0UD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x1000UW {align1}; //motion vertical field select forward
-(f0) mov (1) g32.28<1>UD 1UD {align1};
-shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD g32.28<1,1,1>UD {align1};
-define(`surface',`4')
-define(`mv1',`g82.16')
-define(`mv2',`g82.18')
-include(`field_motion_y.g4i')
-//UV of top field
-shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
-asr (2) g31.14<1>W g82.16<2,2,1>W 2W {align1};
-add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-mov (1) g32.28<1>UD 0UD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x1000UW {align1}; //motion vertical field select forward
-(f0) mov (1) g32.28<1>UD 1UD {align1};
-shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD g32.28<1,1,1>UD {align1};
-define(`surface_u', `5')
-define(`surface_v', `6')
-define(`mv1',`g82.16')
-define(`mv2',`g82.18')
-include(`field_motion_uv.g4i')
-jmpi field_addidct;
-
-second_field_picture:
-//Y of bottom field
-asr (2) g31.14<1>W g82.16<2,2,1>W 1W {align1};
-add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
-define(`surface',`3')
-define(`mv1',`g82.16')
-define(`mv2',`g82.18')
-include(`field_motion_y.g4i')
-//UV of bottom field
-shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
-asr (2) g31.14<1>W g82.16<2,2,1>W 2W {align1};
-add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-shl (1) g32.4<1>UD g32.4<1,1,1>UD 1UD {align1};
-define(`surface_u', `10')
-define(`surface_v', `11')
-define(`mv1',`g82.16')
-define(`mv2',`g82.18')
-include(`field_motion_uv.g4i')
-
-field_addidct:
-include(`field_addidct.g4i')
-out:
-send (16) 0 acc0<1>UW g0<8,8,1>UW
- thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/src/shaders/mpeg2/vld/field_forward.g4b b/src/shaders/mpeg2/vld/field_forward.g4b
deleted file mode 100644
index aa059f1..0000000
--- a/src/shaders/mpeg2/vld/field_forward.g4b
+++ /dev/null
@@ -1,768 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
- { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x08000800 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000b },
- { 0x00000005, 0x24002d29, 0x00210a4a, 0x00030003 },
- { 0x01000010, 0x20002d3c, 0x00210400, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 },
- { 0x01000005, 0x20002d3c, 0x00210a42, 0x10001000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x241c0061, 0x00000000, 0x00000001 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000002 },
- { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000014a },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
- { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
- { 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000006a },
- { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000004f },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
- { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
- { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
- { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
- { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
- { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
- { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
- { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
- { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
- { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
- { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
- { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
- { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
- { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
- { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
- { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
- { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
- { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
- { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000039 },
- { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
- { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
- { 0x01000005, 0x20003dbc, 0x00210a50, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000005c },
- { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000043 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
- { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
- { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
- { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
- { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
- { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
- { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
- { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
- { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000037 },
- { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a005 },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a006 },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
- { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a005 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
- { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000141 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000006a },
- { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000004f },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
- { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
- { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
- { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
- { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
- { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
- { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
- { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
- { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
- { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
- { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
- { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
- { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
- { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
- { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
- { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
- { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
- { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
- { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000039 },
- { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a003 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
- { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a003 },
- { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x01000005, 0x20003dbc, 0x00210a50, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000005c },
- { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000043 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
- { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
- { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
- { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
- { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
- { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
- { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
- { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
- { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000037 },
- { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000001f },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0414a00b },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0411a00a },
- { 0x00800031, 0x26401d29, 0x008d0400, 0x0411a00b },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
- { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a00a },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a00b },
- { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
- { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
- { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
- { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
- { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
- { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
- { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
- { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
- { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
- { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
- { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
- { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
- { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
- { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
- { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
- { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
- { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
- { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
- { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
- { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
- { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
- { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
- { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
- { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
- { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
- { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
- { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
- { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
- { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
- { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
- { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
- { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/src/shaders/mpeg2/vld/field_forward.g4b.gen5 b/src/shaders/mpeg2/vld/field_forward.g4b.gen5
deleted file mode 100644
index 4867a5e..0000000
--- a/src/shaders/mpeg2/vld/field_forward.g4b.gen5
+++ /dev/null
@@ -1,768 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
- { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x08000800 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000005, 0x24002d29, 0x00210a4a, 0x00030003 },
- { 0x01000010, 0x20002d3c, 0x00210400, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
- { 0x01000005, 0x20002d3c, 0x00210a42, 0x10001000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x00000001, 0x241c0061, 0x00000000, 0x00000001 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 },
- { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000294 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
- { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
- { 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000d4 },
- { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000009e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
- { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
- { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
- { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
- { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
- { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
- { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
- { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
- { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
- { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
- { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
- { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
- { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
- { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
- { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
- { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
- { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
- { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
- { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000a4 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000072 },
- { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000001, 0x241c0061, 0x00000000, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
- { 0x00010001, 0x241c0061, 0x00000000, 0x00000001 },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x00000040, 0x24040421, 0x00210404, 0x0021041c },
- { 0x01000005, 0x20003dbc, 0x00210a50, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000b8 },
- { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
- { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
- { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
- { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
- { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
- { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
- { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
- { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
- { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000009c },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000006e },
- { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a005 },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a006 },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
- { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a005 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
- { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000282 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000d4 },
- { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000009e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
- { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10500 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10540 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10580 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c0 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10600 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10640 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10680 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c0 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b10501 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10541 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10581 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b105c1 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10601 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10641 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b10681 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b106c1 },
- { 0x00800008, 0x27402d29, 0x00b10740, 0x00020002 },
- { 0x00800008, 0x27602d29, 0x00b10760, 0x00020002 },
- { 0x00800008, 0x27802d29, 0x00b10780, 0x00020002 },
- { 0x00800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
- { 0x00800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
- { 0x00800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
- { 0x00800008, 0x28002d29, 0x00b10800, 0x00020002 },
- { 0x00800008, 0x28202d29, 0x00b10820, 0x00020002 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
- { 0x00800040, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10500 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10540 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10580 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c0 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10600 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10640 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10680 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b10501 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10541 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10581 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b105c1 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10601 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10641 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b10681 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
- { 0x00800008, 0x28402d29, 0x00b10840, 0x00020002 },
- { 0x00800008, 0x28602d29, 0x00b10860, 0x00020002 },
- { 0x00800008, 0x28802d29, 0x00b10880, 0x00020002 },
- { 0x00800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
- { 0x00800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
- { 0x00800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
- { 0x00800008, 0x29002d29, 0x00b10900, 0x00020002 },
- { 0x00800008, 0x29202d29, 0x00b10920, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000a4 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b10681 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10501 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10541 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b10581 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b105c1 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10601 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10641 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b10681 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000072 },
- { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
- { 0x00800042, 0x27404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x27604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x27804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x27a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x27c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x27e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x28004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x28204629, 0x00b10680, 0x00b106c0 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a003 },
- { 0x00800042, 0x28404629, 0x00b104c0, 0x00b10500 },
- { 0x00800042, 0x28604629, 0x00b10500, 0x00b10540 },
- { 0x00800042, 0x28804629, 0x00b10540, 0x00b10580 },
- { 0x00800042, 0x28a04629, 0x00b10580, 0x00b105c0 },
- { 0x00800042, 0x28c04629, 0x00b105c0, 0x00b10600 },
- { 0x00800042, 0x28e04629, 0x00b10600, 0x00b10640 },
- { 0x00800042, 0x29004629, 0x00b10640, 0x00b10680 },
- { 0x00800042, 0x29204629, 0x00b10680, 0x00b106c0 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
- { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x27600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x27800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x27a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x27c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x27e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x28000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x28200229, 0x00b10680, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a003 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a003 },
- { 0x00800001, 0x28400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x28600229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x28800229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x28a00229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x28c00229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x28e00229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x29000229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x29200229, 0x00b10680, 0x00000000 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000009, 0x24040c21, 0x00210404, 0x00000001 },
- { 0x01000005, 0x20003dbc, 0x00210a50, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000b8 },
- { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
- { 0x00600040, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0520 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0540 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0560 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0580 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0521 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0541 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d0561 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d0581 },
- { 0x00600040, 0x29c04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x29d04629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x29e04629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x29f04629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e0 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0600 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0620 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0640 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05e1 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d0601 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d0621 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0641 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
- { 0x00600040, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600040, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0520 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0540 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0560 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0580 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d0521 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0541 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0561 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0581 },
- { 0x00600040, 0x2a004629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x2a104629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x2a204629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x2a304629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e0 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0600 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0620 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0640 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d05e1 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0601 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0621 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0641 },
- { 0x00a02008, 0x29402d29, 0x00b10940, 0x00020002 },
- { 0x00a02008, 0x29802d29, 0x00b10980, 0x00020002 },
- { 0x00a02008, 0x29c02d29, 0x00b109c0, 0x00020002 },
- { 0x00a02008, 0x2a002d29, 0x00b10a00, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000009c },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x29c04629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d05e1 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0501 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0521 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0541 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0561 },
- { 0x00600042, 0x2a004629, 0x008d0580, 0x008d0581 },
- { 0x00600042, 0x2a104629, 0x008d05a0, 0x008d05a1 },
- { 0x00600042, 0x2a204629, 0x008d05c0, 0x008d05c1 },
- { 0x00600042, 0x2a304629, 0x008d05e0, 0x008d05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000006e },
- { 0x01000005, 0x20003dbc, 0x00210a52, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000003e },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
- { 0x00600042, 0x29404629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29504629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29604629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29704629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x29c04629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x29d04629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x29e04629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x29f04629, 0x008d0620, 0x008d0640 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0248a00b },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000000f },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0218a00a },
- { 0x00800031, 0x26401d29, 0x408d0400, 0x0218a00b },
- { 0x00600042, 0x29804629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29904629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29a04629, 0x008d0540, 0x008d0560 },
- { 0x00600042, 0x29b04629, 0x008d0560, 0x008d0580 },
- { 0x00600042, 0x2a004629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x2a104629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x2a204629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x2a304629, 0x008d0620, 0x008d0640 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
- { 0x00600001, 0x29400229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29500229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29600229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29700229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x29c00229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x29d00229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x29e00229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x29f00229, 0x008d05e0, 0x00000000 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a00a },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a00b },
- { 0x00600001, 0x29800229, 0x008d0500, 0x00000000 },
- { 0x00600001, 0x29900229, 0x008d0520, 0x00000000 },
- { 0x00600001, 0x29a00229, 0x008d0540, 0x00000000 },
- { 0x00600001, 0x29b00229, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x2a000229, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x2a100229, 0x008d05a0, 0x00000000 },
- { 0x00600001, 0x2a200229, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x2a300229, 0x008d05e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
- { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
- { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
- { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
- { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
- { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
- { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
- { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
- { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
- { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
- { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
- { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
- { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
- { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
- { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
- { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
- { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
- { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
- { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
- { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
- { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
- { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
- { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
- { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
- { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
- { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
- { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
- { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
- { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
- { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
- { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
- { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/src/shaders/mpeg2/vld/field_forward_16x8.g4a b/src/shaders/mpeg2/vld/field_forward_16x8.g4a
deleted file mode 100644
index 2052481..0000000
--- a/src/shaders/mpeg2/vld/field_forward_16x8.g4a
+++ /dev/null
@@ -1,31 +0,0 @@
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g32: message descriptor for reading reference data */
-mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
-mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
-define(`UV_red',`0xffffffffUD')
-define(`UV_white',`0x7f7f7f7fUD')
-define(`UV_green',`0x00000000UD')
-mov(2) g6.0<1>UD g82.12<2,2,1>UW {align1};
-mov(1) g6.8<1>UD 0x000f000fUD { align1 };
-mov(16) m1<1>UD 0xFFFFFFFFUD {align1 compr};
-mov(16) m3<1>UD 0xFFFFFFFFUD {align1 compr};
-mov(16) m5<1>UD 0xFFFFFFFFUD {align1 compr};
-mov(16) m7<1>UD 0xFFFFFFFFUD {align1 compr};
-send (16) 0 acc0<1>UW g6<8,8,1>UW write(0, 0, 2, 0) mlen 9 rlen 0 { align1 };
-/*Fill U buffer & V buffer with 0x7F*/
-shr (2) g6.0<1>UD g82.12<2,2,1>UW 1UW {align1};
-mov(1) g6.8<1>UD 0x00070007UD { align1 };
-mov (16) m1<1>UD UV_white {align1 compr};
-send (16) 0 acc0<1>UW g6<8,8,1>UW write(2, 0, 2, 0) mlen 3 rlen 0 { align1 };
-send (16) 0 acc0<1>UW g6<8,8,1>UW write(1, 0, 2, 0) mlen 3 rlen 0 { align1 };
-
-send (16) 0 acc0<1>UW g0<8,8,1>UW
- thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/src/shaders/mpeg2/vld/field_forward_16x8.g4b b/src/shaders/mpeg2/vld/field_forward_16x8.g4b
deleted file mode 100644
index 9d95f70..0000000
--- a/src/shaders/mpeg2/vld/field_forward_16x8.g4b
+++ /dev/null
@@ -1,15 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00200001, 0x20c00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x20c80061, 0x00000000, 0x000f000f },
- { 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
- { 0x00800031, 0x24001d28, 0x008d00c0, 0x05902000 },
- { 0x00200008, 0x20c02d21, 0x00450a4c, 0x00010001 },
- { 0x00000001, 0x20c80061, 0x00000000, 0x00070007 },
- { 0x00802001, 0x20200062, 0x00000000, 0x7f7f7f7f },
- { 0x00800031, 0x24001d28, 0x008d00c0, 0x05302002 },
- { 0x00800031, 0x24001d28, 0x008d00c0, 0x05302001 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/src/shaders/mpeg2/vld/field_forward_16x8.g4b.gen5 b/src/shaders/mpeg2/vld/field_forward_16x8.g4b.gen5
deleted file mode 100644
index b12bddc..0000000
--- a/src/shaders/mpeg2/vld/field_forward_16x8.g4b.gen5
+++ /dev/null
@@ -1,15 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00200001, 0x20c00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x20c80061, 0x00000000, 0x000f000f },
- { 0x00802001, 0x20200062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20600062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20a00062, 0x00000000, 0xffffffff },
- { 0x00802001, 0x20e00062, 0x00000000, 0xffffffff },
- { 0x00800031, 0x24001d28, 0x508d00c0, 0x12082000 },
- { 0x00200008, 0x20c02d21, 0x00450a4c, 0x00010001 },
- { 0x00000001, 0x20c80061, 0x00000000, 0x00070007 },
- { 0x00802001, 0x20200062, 0x00000000, 0x7f7f7f7f },
- { 0x00800031, 0x24001d28, 0x508d00c0, 0x06082002 },
- { 0x00800031, 0x24001d28, 0x508d00c0, 0x06082001 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/src/shaders/mpeg2/vld/field_intra.g4a b/src/shaders/mpeg2/vld/field_intra.g4a
deleted file mode 100644
index e85ec85..0000000
--- a/src/shaders/mpeg2/vld/field_intra.g4a
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/*
- GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT tab
- g31: read and write message descriptor
- g32~g55:DCT data
- g58~g81:reference data
- g82: thread payload
- g83~g106:IDCT data
-*/
-mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
-mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
-
-include(`iq_intra.g4i')
-
-//defined for idct
-define(`ROW_SHIFT', `11UD')
-define(`ROW_ADD', `0x400UD')
-define(`COL_SHIFT', `20UD')
-define(`COL_ADD', `0x80000UD')
-
-mov (1) a0.0<1>UD 0x06F006E0UD {align1}; //0x06F006E0UD+0x00200020UD=0x07100700UD (g56.0 and g56.16)
-
-//Y0
-mov (1) g125.0<1>UD ip {align1};
-jmpi IDCT_START;
-add (8) g83.0<1>W g32.0<16,8,2>W 128UW {align1};
-add (8) g84.0<1>W g33.0<16,8,2>W 128UW {align1};
-add (8) g85.0<1>W g34.0<16,8,2>W 128UW {align1};
-add (8) g86.0<1>W g35.0<16,8,2>W 128UW {align1};
-add (8) g87.0<1>W g36.0<16,8,2>W 128UW {align1};
-add (8) g88.0<1>W g37.0<16,8,2>W 128UW {align1};
-add (8) g89.0<1>W g38.0<16,8,2>W 128UW {align1};
-add (8) g90.0<1>W g39.0<16,8,2>W 128UW {align1};
-
-//Y1
-mov (1) g125.0<1>UD ip {align1};
-jmpi IDCT_START;
-add (8) g83.16<1>W g32.0<16,8,2>W 128UW {align1};
-add (8) g84.16<1>W g33.0<16,8,2>W 128UW {align1};
-add (8) g85.16<1>W g34.0<16,8,2>W 128UW {align1};
-add (8) g86.16<1>W g35.0<16,8,2>W 128UW {align1};
-add (8) g87.16<1>W g36.0<16,8,2>W 128UW {align1};
-add (8) g88.16<1>W g37.0<16,8,2>W 128UW {align1};
-add (8) g89.16<1>W g38.0<16,8,2>W 128UW {align1};
-add (8) g90.16<1>W g39.0<16,8,2>W 128UW {align1};
-
-//Y2
-mov (1) g125.0<1>UD ip {align1};
-jmpi IDCT_START;
-add (8) g91.0<1>W g32.0<16,8,2>W 128UW {align1};
-add (8) g92.0<1>W g33.0<16,8,2>W 128UW {align1};
-add (8) g93.0<1>W g34.0<16,8,2>W 128UW {align1};
-add (8) g94.0<1>W g35.0<16,8,2>W 128UW {align1};
-add (8) g95.0<1>W g36.0<16,8,2>W 128UW {align1};
-add (8) g96.0<1>W g37.0<16,8,2>W 128UW {align1};
-add (8) g97.0<1>W g38.0<16,8,2>W 128UW {align1};
-add (8) g98.0<1>W g39.0<16,8,2>W 128UW {align1};
-
-//Y3
-mov (1) g125.0<1>UD ip {align1};
-jmpi IDCT_START;
-add (8) g91.16<1>W g32.0<16,8,2>W 128UW {align1};
-add (8) g92.16<1>W g33.0<16,8,2>W 128UW {align1};
-add (8) g93.16<1>W g34.0<16,8,2>W 128UW {align1};
-add (8) g94.16<1>W g35.0<16,8,2>W 128UW {align1};
-add (8) g95.16<1>W g36.0<16,8,2>W 128UW {align1};
-add (8) g96.16<1>W g37.0<16,8,2>W 128UW {align1};
-add (8) g97.16<1>W g38.0<16,8,2>W 128UW {align1};
-add (8) g98.16<1>W g39.0<16,8,2>W 128UW {align1};
-
-//U
-mov (1) g125.0<1>UD ip {align1};
-jmpi IDCT_START;
-add (16) g99.0<1>W g32.0<16,8,2>W 128UW {align1};
-add (16) g100.0<1>W g34.0<16,8,2>W 128UW {align1};
-add (16) g101.0<1>W g36.0<16,8,2>W 128UW {align1};
-add (16) g102.0<1>W g38.0<16,8,2>W 128UW {align1};
-
-//V
-mov (1) g125.0<1>UD ip {align1};
-jmpi IDCT_START;
-add (16) g103.0<1>W g32.0<16,8,2>W 128UW {align1};
-add (16) g104.0<1>W g34.0<16,8,2>W 128UW {align1};
-add (16) g105.0<1>W g36.0<16,8,2>W 128UW {align1};
-add (16) g106.0<1>W g38.0<16,8,2>W 128UW {align1};
-
-//send msg
-mov (1) g31.8<1>UD 0x00F000FUD {align1};
-mov.sat (16) g83.0<2>UB g83.0<16,16,1>W {align1};
-mov.sat (16) g84.0<2>UB g84.0<16,16,1>W {align1};
-mov.sat (16) g85.0<2>UB g85.0<16,16,1>W {align1};
-mov.sat (16) g86.0<2>UB g86.0<16,16,1>W {align1};
-mov.sat (16) g87.0<2>UB g87.0<16,16,1>W {align1};
-mov.sat (16) g88.0<2>UB g88.0<16,16,1>W {align1};
-mov.sat (16) g89.0<2>UB g89.0<16,16,1>W {align1};
-mov.sat (16) g90.0<2>UB g90.0<16,16,1>W {align1};
-mov.sat (16) g91.0<2>UB g91.0<16,16,1>W {align1};
-mov.sat (16) g92.0<2>UB g92.0<16,16,1>W {align1};
-mov.sat (16) g93.0<2>UB g93.0<16,16,1>W {align1};
-mov.sat (16) g94.0<2>UB g94.0<16,16,1>W {align1};
-mov.sat (16) g95.0<2>UB g95.0<16,16,1>W {align1};
-mov.sat (16) g96.0<2>UB g96.0<16,16,1>W {align1};
-mov.sat (16) g97.0<2>UB g97.0<16,16,1>W {align1};
-mov.sat (16) g98.0<2>UB g98.0<16,16,1>W {align1};
-
-and.nz (1) null g82.2<1,1,1>UW 0x20UW{align1};
-(f0) jmpi field_dct;
-
-mov (16) m1.0<1>UB g83.0<16,16,2>UB {align1};
-mov (16) m1.16<1>UB g84.0<16,16,2>UB {align1};
-mov (16) m2.0<1>UB g85.0<16,16,2>UB {align1};
-mov (16) m2.16<1>UB g86.0<16,16,2>UB {align1};
-mov (16) m3.0<1>UB g87.0<16,16,2>UB {align1};
-mov (16) m3.16<1>UB g88.0<16,16,2>UB {align1};
-mov (16) m4.0<1>UB g89.0<16,16,2>UB {align1};
-mov (16) m4.16<1>UB g90.0<16,16,2>UB {align1};
-mov (16) m5.0<1>UB g91.0<16,16,2>UB {align1};
-mov (16) m5.16<1>UB g92.0<16,16,2>UB {align1};
-mov (16) m6.0<1>UB g93.0<16,16,2>UB {align1};
-mov (16) m6.16<1>UB g94.0<16,16,2>UB {align1};
-mov (16) m7.0<1>UB g95.0<16,16,2>UB {align1};
-mov (16) m7.16<1>UB g96.0<16,16,2>UB {align1};
-mov (16) m8.0<1>UB g97.0<16,16,2>UB {align1};
-mov (16) m8.16<1>UB g98.0<16,16,2>UB {align1};
-jmpi write_back;
-
-field_dct:
-mov (16) m1.0<1>UB g83.0<16,16,2>UB {align1};
-mov (16) m1.16<1>UB g91.0<16,16,2>UB {align1};
-mov (16) m2.0<1>UB g84.0<16,16,2>UB {align1};
-mov (16) m2.16<1>UB g92.0<16,16,2>UB {align1};
-mov (16) m3.0<1>UB g85.0<16,16,2>UB {align1};
-mov (16) m3.16<1>UB g93.0<16,16,2>UB {align1};
-mov (16) m4.0<1>UB g86.0<16,16,2>UB {align1};
-mov (16) m4.16<1>UB g94.0<16,16,2>UB {align1};
-mov (16) m5.0<1>UB g87.0<16,16,2>UB {align1};
-mov (16) m5.16<1>UB g95.0<16,16,2>UB {align1};
-mov (16) m6.0<1>UB g88.0<16,16,2>UB {align1};
-mov (16) m6.16<1>UB g96.0<16,16,2>UB {align1};
-mov (16) m7.0<1>UB g89.0<16,16,2>UB {align1};
-mov (16) m7.16<1>UB g97.0<16,16,2>UB {align1};
-mov (16) m8.0<1>UB g90.0<16,16,2>UB {align1};
-mov (16) m8.16<1>UB g98.0<16,16,2>UB {align1};
-
-write_back:
-send (16) 0 acc0<1>UW g31<8,8,1>UW write(0,0,2,0) mlen 9 rlen 0 {align1};
-
-//U
-mov (1) g31.8<1>UD 0x0070007UD { align1 };
-shr (2) g31.0<1>UD g82.12<2,2,1>UW 1D {align1};
-mov.sat (16) g99.0<2>UB g99.0<16,16,1>W {align1};
-mov.sat (16) g100.0<2>UB g100.0<16,16,1>W {align1};
-mov.sat (16) g101.0<2>UB g101.0<16,16,1>W {align1};
-mov.sat (16) g102.0<2>UB g102.0<16,16,1>W {align1};
-
-mov (16) m1.0<1>UB g99.0<16,16,2>UB {align1};
-mov (16) m1.16<1>UB g100.0<16,16,2>UB {align1};
-mov (16) m2.0<1>UB g101.0<16,16,2>UB {align1};
-mov (16) m2.16<1>UB g102.0<16,16,2>UB {align1};
-send (16) 0 acc0<1>UW g31<8,8,1>UW write(1, 0, 2, 0) mlen 3 rlen 0 { align1 };
-
-//V
-mov.sat (16) g103.0<2>UB g103.0<16,16,1>W {align1};
-mov.sat (16) g104.0<2>UB g104.0<16,16,1>W {align1};
-mov.sat (16) g105.0<2>UB g105.0<16,16,1>W {align1};
-mov.sat (16) g106.0<2>UB g106.0<16,16,1>W {align1};
-
-mov (16) m1.0<1>UB g103.0<16,16,2>UB {align1};
-mov (16) m1.16<1>UB g104.0<16,16,2>UB {align1};
-mov (16) m2.0<1>UB g105.0<16,16,2>UB {align1};
-mov (16) m2.16<1>UB g106.0<16,16,2>UB {align1};
-send (16) 0 acc0<1>UW g31<8,8,1>UW write(2, 0, 2, 0) mlen 3 rlen 0 { align1 };
-
-OUT:
-send (16) 0 acc0<1>UW g0<8,8,1>UW
- thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
-
-include(`do_iq_intra.g4i')
-include(`idct.g4i')
diff --git a/src/shaders/mpeg2/vld/field_intra.g4b b/src/shaders/mpeg2/vld/field_intra.g4b
deleted file mode 100644
index 4c1c8c4..0000000
--- a/src/shaders/mpeg2/vld/field_intra.g4b
+++ /dev/null
@@ -1,313 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000005, 0x2da02d29, 0x00210a48, 0x001f001f },
- { 0x00000005, 0x2da42d29, 0x00210a48, 0x60006000 },
- { 0x00000008, 0x2da42d29, 0x00210da4, 0x000d000d },
- { 0x00000001, 0x2da60169, 0x00000000, 0x00080008 },
- { 0x00000008, 0x2da42529, 0x00210da6, 0x00210da4 },
- { 0x01000005, 0x20002d3c, 0x00210a48, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000012 },
- { 0x05000010, 0x20002d3c, 0x00210da0, 0x00090009 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
- { 0x05000010, 0x20002d3c, 0x00210da0, 0x00110011 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x05000010, 0x20002d3c, 0x00210da0, 0x00190019 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
- { 0x00000040, 0x2da03d29, 0x00210da0, 0xffe7ffe7 },
- { 0x00000009, 0x2da02d29, 0x00210da0, 0x00030003 },
- { 0x00000040, 0x2da02d29, 0x00210da0, 0x00400040 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 },
- { 0x00000040, 0x2da03d29, 0x00210da0, 0xfff7fff7 },
- { 0x00000009, 0x2da02d29, 0x00210da0, 0x00010001 },
- { 0x00000040, 0x2da02d29, 0x00210da0, 0x000a000a },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000005 },
- { 0x00000040, 0x2da03d29, 0x00210da0, 0xffefffef },
- { 0x00000009, 0x2da02d29, 0x00210da0, 0x00020002 },
- { 0x00000040, 0x2da02d29, 0x00210da0, 0x001c001c },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000001 },
- { 0x00000009, 0x2da00d29, 0x00210da0, 0x00000001 },
- { 0x00000001, 0x2dc00129, 0x00210da0, 0x00000000 },
- { 0x00800001, 0x2e000229, 0x00b10020, 0x00000000 },
- { 0x00800001, 0x2e200229, 0x00b10030, 0x00000000 },
- { 0x00800001, 0x2e400229, 0x00b10040, 0x00000000 },
- { 0x00800001, 0x2e600229, 0x00b10050, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x03f003e0 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000a1 },
- { 0x00800001, 0x270001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x272001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x274001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x276001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000009b },
- { 0x00800001, 0x278001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x27a001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x27c001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x27e001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000095 },
- { 0x00800001, 0x280001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x282001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x284001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x286001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000008f },
- { 0x00800001, 0x288001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x28a001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x28c001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x28e001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000089 },
- { 0x00800001, 0x290001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x292001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x294001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x296001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000083 },
- { 0x00800001, 0x298001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x29a001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x29c001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x29e001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x06f006e0 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000008f },
- { 0x00600040, 0x2a602dad, 0x00ae0400, 0x00800080 },
- { 0x00600040, 0x2a802dad, 0x00ae0420, 0x00800080 },
- { 0x00600040, 0x2aa02dad, 0x00ae0440, 0x00800080 },
- { 0x00600040, 0x2ac02dad, 0x00ae0460, 0x00800080 },
- { 0x00600040, 0x2ae02dad, 0x00ae0480, 0x00800080 },
- { 0x00600040, 0x2b002dad, 0x00ae04a0, 0x00800080 },
- { 0x00600040, 0x2b202dad, 0x00ae04c0, 0x00800080 },
- { 0x00600040, 0x2b402dad, 0x00ae04e0, 0x00800080 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000085 },
- { 0x00600040, 0x2a702dad, 0x00ae0400, 0x00800080 },
- { 0x00600040, 0x2a902dad, 0x00ae0420, 0x00800080 },
- { 0x00600040, 0x2ab02dad, 0x00ae0440, 0x00800080 },
- { 0x00600040, 0x2ad02dad, 0x00ae0460, 0x00800080 },
- { 0x00600040, 0x2af02dad, 0x00ae0480, 0x00800080 },
- { 0x00600040, 0x2b102dad, 0x00ae04a0, 0x00800080 },
- { 0x00600040, 0x2b302dad, 0x00ae04c0, 0x00800080 },
- { 0x00600040, 0x2b502dad, 0x00ae04e0, 0x00800080 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000007b },
- { 0x00600040, 0x2b602dad, 0x00ae0400, 0x00800080 },
- { 0x00600040, 0x2b802dad, 0x00ae0420, 0x00800080 },
- { 0x00600040, 0x2ba02dad, 0x00ae0440, 0x00800080 },
- { 0x00600040, 0x2bc02dad, 0x00ae0460, 0x00800080 },
- { 0x00600040, 0x2be02dad, 0x00ae0480, 0x00800080 },
- { 0x00600040, 0x2c002dad, 0x00ae04a0, 0x00800080 },
- { 0x00600040, 0x2c202dad, 0x00ae04c0, 0x00800080 },
- { 0x00600040, 0x2c402dad, 0x00ae04e0, 0x00800080 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000071 },
- { 0x00600040, 0x2b702dad, 0x00ae0400, 0x00800080 },
- { 0x00600040, 0x2b902dad, 0x00ae0420, 0x00800080 },
- { 0x00600040, 0x2bb02dad, 0x00ae0440, 0x00800080 },
- { 0x00600040, 0x2bd02dad, 0x00ae0460, 0x00800080 },
- { 0x00600040, 0x2bf02dad, 0x00ae0480, 0x00800080 },
- { 0x00600040, 0x2c102dad, 0x00ae04a0, 0x00800080 },
- { 0x00600040, 0x2c302dad, 0x00ae04c0, 0x00800080 },
- { 0x00600040, 0x2c502dad, 0x00ae04e0, 0x00800080 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000067 },
- { 0x00800040, 0x2c602dad, 0x00ae0400, 0x00800080 },
- { 0x00800040, 0x2c802dad, 0x00ae0440, 0x00800080 },
- { 0x00800040, 0x2ca02dad, 0x00ae0480, 0x00800080 },
- { 0x00800040, 0x2cc02dad, 0x00ae04c0, 0x00800080 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000061 },
- { 0x00800040, 0x2ce02dad, 0x00ae0400, 0x00800080 },
- { 0x00800040, 0x2d002dad, 0x00ae0440, 0x00800080 },
- { 0x00800040, 0x2d202dad, 0x00ae0480, 0x00800080 },
- { 0x00800040, 0x2d402dad, 0x00ae04c0, 0x00800080 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x4a6001b1, 0x00b10a60, 0x00000000 },
- { 0x80800001, 0x4a8001b1, 0x00b10a80, 0x00000000 },
- { 0x80800001, 0x4aa001b1, 0x00b10aa0, 0x00000000 },
- { 0x80800001, 0x4ac001b1, 0x00b10ac0, 0x00000000 },
- { 0x80800001, 0x4ae001b1, 0x00b10ae0, 0x00000000 },
- { 0x80800001, 0x4b0001b1, 0x00b10b00, 0x00000000 },
- { 0x80800001, 0x4b2001b1, 0x00b10b20, 0x00000000 },
- { 0x80800001, 0x4b4001b1, 0x00b10b40, 0x00000000 },
- { 0x80800001, 0x4b6001b1, 0x00b10b60, 0x00000000 },
- { 0x80800001, 0x4b8001b1, 0x00b10b80, 0x00000000 },
- { 0x80800001, 0x4ba001b1, 0x00b10ba0, 0x00000000 },
- { 0x80800001, 0x4bc001b1, 0x00b10bc0, 0x00000000 },
- { 0x80800001, 0x4be001b1, 0x00b10be0, 0x00000000 },
- { 0x80800001, 0x4c0001b1, 0x00b10c00, 0x00000000 },
- { 0x80800001, 0x4c2001b1, 0x00b10c20, 0x00000000 },
- { 0x80800001, 0x4c4001b1, 0x00b10c40, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
- { 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20a80, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20aa0, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20ac0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b20ae0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b20b00, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20b20, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20b40, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20b60, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20b80, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20ba0, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b20bc0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b20be0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b20c00, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20c20, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20b60, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a80, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20b80, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b20aa0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b20ba0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20ac0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20bc0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20ae0, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20be0, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20b00, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b20c00, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b20b20, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b20c20, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20b40, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01d21, 0x00450a4c, 0x00000001 },
- { 0x80800001, 0x4c6001b1, 0x00b10c60, 0x00000000 },
- { 0x80800001, 0x4c8001b1, 0x00b10c80, 0x00000000 },
- { 0x80800001, 0x4ca001b1, 0x00b10ca0, 0x00000000 },
- { 0x80800001, 0x4cc001b1, 0x00b10cc0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20c60, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20c80, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20ca0, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20cc0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
- { 0x80800001, 0x4ce001b1, 0x00b10ce0, 0x00000000 },
- { 0x80800001, 0x4d0001b1, 0x00b10d00, 0x00000000 },
- { 0x80800001, 0x4d2001b1, 0x00b10d20, 0x00000000 },
- { 0x80800001, 0x4d4001b1, 0x00b10d40, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20ce0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20d00, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20d20, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20d40, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00000001, 0x2de001ad, 0x00218000, 0x00000000 },
- { 0x00802041, 0x2e8025a5, 0x008d8000, 0x008d0e00 },
- { 0x00802041, 0x2e8024a5, 0x008d0e80, 0x008c0da0 },
- { 0x0080200c, 0x2e802ca5, 0x008d0e80, 0x00040004 },
- { 0x00000041, 0x2e8025a5, 0x00210de0, 0x00210da4 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802041, 0x2ec025a5, 0x008d8000, 0x008d0e20 },
- { 0x00802041, 0x2ec024a5, 0x008d0ec0, 0x008c0da0 },
- { 0x0080200c, 0x2ec02ca5, 0x008d0ec0, 0x00040004 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802041, 0x2f0025a5, 0x008d8000, 0x008d0e40 },
- { 0x00802041, 0x2f0024a5, 0x008d0f00, 0x008c0da0 },
- { 0x0080200c, 0x2f002ca5, 0x008d0f00, 0x00040004 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802041, 0x2f4025a5, 0x008d8000, 0x008d0e60 },
- { 0x00802041, 0x2f4024a5, 0x008d0f40, 0x008c0da0 },
- { 0x0080200c, 0x2f402ca5, 0x008d0f40, 0x00040004 },
- { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
- { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a },
- { 0x00802040, 0x24000ca5, 0x008d0400, 0x00000400 },
- { 0x00802040, 0x24400ca5, 0x008d0440, 0x00000400 },
- { 0x00802040, 0x24800ca5, 0x008d0480, 0x00000400 },
- { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00000400 },
- { 0x00802008, 0x24000ca5, 0x008d0400, 0x0000000b },
- { 0x00802008, 0x24400ca5, 0x008d0440, 0x0000000b },
- { 0x00802008, 0x24800ca5, 0x008d0480, 0x0000000b },
- { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x0000000b },
- { 0x00800001, 0x2dc001ad, 0x00ae0400, 0x00000000 },
- { 0x00800001, 0x2de001ad, 0x00ae0440, 0x00000000 },
- { 0x00800001, 0x2e0001ad, 0x00ae0480, 0x00000000 },
- { 0x00800001, 0x2e2001ad, 0x00ae04c0, 0x00000000 },
- { 0x00000001, 0x2a000001, 0x00210200, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0db00da0 },
- { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x00802040, 0x24000ca5, 0x008d0400, 0x00080000 },
- { 0x00802040, 0x24400ca5, 0x008d0440, 0x00080000 },
- { 0x00802040, 0x24800ca5, 0x008d0480, 0x00080000 },
- { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00080000 },
- { 0x00802008, 0x24000ca5, 0x008d0400, 0x00000014 },
- { 0x00802008, 0x24400ca5, 0x008d0440, 0x00000014 },
- { 0x00802008, 0x24800ca5, 0x008d0480, 0x00000014 },
- { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x00000014 },
- { 0x00000001, 0x22000020, 0x00210a00, 0x00000000 },
- { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x240014a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x242014a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x244014a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x246014a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x248014a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24a014a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24c014a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24e014a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x240814a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x242814a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x244814a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x246814a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x248814a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24a814a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24c814a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24e814a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x241014a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x243014a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x245014a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x247014a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x249014a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24b014a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24d014a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24f014a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x241814a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x243814a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x245814a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x247814a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x249814a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24b814a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24d814a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24f814a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x34000c20, 0x00210fc0, 0x00000020 },
diff --git a/src/shaders/mpeg2/vld/field_intra.g4b.gen5 b/src/shaders/mpeg2/vld/field_intra.g4b.gen5
deleted file mode 100644
index 957f6fc..0000000
--- a/src/shaders/mpeg2/vld/field_intra.g4b.gen5
+++ /dev/null
@@ -1,313 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000005, 0x2da02d29, 0x00210a48, 0x001f001f },
- { 0x00000005, 0x2da42d29, 0x00210a48, 0x60006000 },
- { 0x00000008, 0x2da42d29, 0x00210da4, 0x000d000d },
- { 0x00000001, 0x2da60169, 0x00000000, 0x00080008 },
- { 0x00000008, 0x2da42529, 0x00210da6, 0x00210da4 },
- { 0x01000005, 0x20002d3c, 0x00210a48, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x05000010, 0x20002d3c, 0x00210da0, 0x00090009 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x05000010, 0x20002d3c, 0x00210da0, 0x00110011 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x05000010, 0x20002d3c, 0x00210da0, 0x00190019 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000040, 0x2da03d29, 0x00210da0, 0xffe7ffe7 },
- { 0x00000009, 0x2da02d29, 0x00210da0, 0x00030003 },
- { 0x00000040, 0x2da02d29, 0x00210da0, 0x00400040 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000012 },
- { 0x00000040, 0x2da03d29, 0x00210da0, 0xfff7fff7 },
- { 0x00000009, 0x2da02d29, 0x00210da0, 0x00010001 },
- { 0x00000040, 0x2da02d29, 0x00210da0, 0x000a000a },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x00000040, 0x2da03d29, 0x00210da0, 0xffefffef },
- { 0x00000009, 0x2da02d29, 0x00210da0, 0x00020002 },
- { 0x00000040, 0x2da02d29, 0x00210da0, 0x001c001c },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000002 },
- { 0x00000009, 0x2da00d29, 0x00210da0, 0x00000001 },
- { 0x00000001, 0x2dc00129, 0x00210da0, 0x00000000 },
- { 0x00800001, 0x2e000229, 0x00b10020, 0x00000000 },
- { 0x00800001, 0x2e200229, 0x00b10030, 0x00000000 },
- { 0x00800001, 0x2e400229, 0x00b10040, 0x00000000 },
- { 0x00800001, 0x2e600229, 0x00b10050, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x03f003e0 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000142 },
- { 0x00800001, 0x270001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x272001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x274001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x276001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000136 },
- { 0x00800001, 0x278001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x27a001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x27c001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x27e001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000012a },
- { 0x00800001, 0x280001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x282001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x284001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x286001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000011e },
- { 0x00800001, 0x288001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x28a001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x28c001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x28e001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000112 },
- { 0x00800001, 0x290001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x292001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x294001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x296001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000106 },
- { 0x00800001, 0x298001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x29a001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x29c001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x29e001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x06f006e0 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000011e },
- { 0x00600040, 0x2a602dad, 0x00ae0400, 0x00800080 },
- { 0x00600040, 0x2a802dad, 0x00ae0420, 0x00800080 },
- { 0x00600040, 0x2aa02dad, 0x00ae0440, 0x00800080 },
- { 0x00600040, 0x2ac02dad, 0x00ae0460, 0x00800080 },
- { 0x00600040, 0x2ae02dad, 0x00ae0480, 0x00800080 },
- { 0x00600040, 0x2b002dad, 0x00ae04a0, 0x00800080 },
- { 0x00600040, 0x2b202dad, 0x00ae04c0, 0x00800080 },
- { 0x00600040, 0x2b402dad, 0x00ae04e0, 0x00800080 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000010a },
- { 0x00600040, 0x2a702dad, 0x00ae0400, 0x00800080 },
- { 0x00600040, 0x2a902dad, 0x00ae0420, 0x00800080 },
- { 0x00600040, 0x2ab02dad, 0x00ae0440, 0x00800080 },
- { 0x00600040, 0x2ad02dad, 0x00ae0460, 0x00800080 },
- { 0x00600040, 0x2af02dad, 0x00ae0480, 0x00800080 },
- { 0x00600040, 0x2b102dad, 0x00ae04a0, 0x00800080 },
- { 0x00600040, 0x2b302dad, 0x00ae04c0, 0x00800080 },
- { 0x00600040, 0x2b502dad, 0x00ae04e0, 0x00800080 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000f6 },
- { 0x00600040, 0x2b602dad, 0x00ae0400, 0x00800080 },
- { 0x00600040, 0x2b802dad, 0x00ae0420, 0x00800080 },
- { 0x00600040, 0x2ba02dad, 0x00ae0440, 0x00800080 },
- { 0x00600040, 0x2bc02dad, 0x00ae0460, 0x00800080 },
- { 0x00600040, 0x2be02dad, 0x00ae0480, 0x00800080 },
- { 0x00600040, 0x2c002dad, 0x00ae04a0, 0x00800080 },
- { 0x00600040, 0x2c202dad, 0x00ae04c0, 0x00800080 },
- { 0x00600040, 0x2c402dad, 0x00ae04e0, 0x00800080 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000e2 },
- { 0x00600040, 0x2b702dad, 0x00ae0400, 0x00800080 },
- { 0x00600040, 0x2b902dad, 0x00ae0420, 0x00800080 },
- { 0x00600040, 0x2bb02dad, 0x00ae0440, 0x00800080 },
- { 0x00600040, 0x2bd02dad, 0x00ae0460, 0x00800080 },
- { 0x00600040, 0x2bf02dad, 0x00ae0480, 0x00800080 },
- { 0x00600040, 0x2c102dad, 0x00ae04a0, 0x00800080 },
- { 0x00600040, 0x2c302dad, 0x00ae04c0, 0x00800080 },
- { 0x00600040, 0x2c502dad, 0x00ae04e0, 0x00800080 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000ce },
- { 0x00800040, 0x2c602dad, 0x00ae0400, 0x00800080 },
- { 0x00800040, 0x2c802dad, 0x00ae0440, 0x00800080 },
- { 0x00800040, 0x2ca02dad, 0x00ae0480, 0x00800080 },
- { 0x00800040, 0x2cc02dad, 0x00ae04c0, 0x00800080 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000c2 },
- { 0x00800040, 0x2ce02dad, 0x00ae0400, 0x00800080 },
- { 0x00800040, 0x2d002dad, 0x00ae0440, 0x00800080 },
- { 0x00800040, 0x2d202dad, 0x00ae0480, 0x00800080 },
- { 0x00800040, 0x2d402dad, 0x00ae04c0, 0x00800080 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x4a6001b1, 0x00b10a60, 0x00000000 },
- { 0x80800001, 0x4a8001b1, 0x00b10a80, 0x00000000 },
- { 0x80800001, 0x4aa001b1, 0x00b10aa0, 0x00000000 },
- { 0x80800001, 0x4ac001b1, 0x00b10ac0, 0x00000000 },
- { 0x80800001, 0x4ae001b1, 0x00b10ae0, 0x00000000 },
- { 0x80800001, 0x4b0001b1, 0x00b10b00, 0x00000000 },
- { 0x80800001, 0x4b2001b1, 0x00b10b20, 0x00000000 },
- { 0x80800001, 0x4b4001b1, 0x00b10b40, 0x00000000 },
- { 0x80800001, 0x4b6001b1, 0x00b10b60, 0x00000000 },
- { 0x80800001, 0x4b8001b1, 0x00b10b80, 0x00000000 },
- { 0x80800001, 0x4ba001b1, 0x00b10ba0, 0x00000000 },
- { 0x80800001, 0x4bc001b1, 0x00b10bc0, 0x00000000 },
- { 0x80800001, 0x4be001b1, 0x00b10be0, 0x00000000 },
- { 0x80800001, 0x4c0001b1, 0x00b10c00, 0x00000000 },
- { 0x80800001, 0x4c2001b1, 0x00b10c20, 0x00000000 },
- { 0x80800001, 0x4c4001b1, 0x00b10c40, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20a80, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20aa0, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20ac0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b20ae0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b20b00, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20b20, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20b40, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20b60, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20b80, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20ba0, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b20bc0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b20be0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b20c00, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20c20, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20b60, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a80, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20b80, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b20aa0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b20ba0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20ac0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20bc0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20ae0, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20be0, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20b00, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b20c00, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b20b20, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b20c20, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20b40, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01d21, 0x00450a4c, 0x00000001 },
- { 0x80800001, 0x4c6001b1, 0x00b10c60, 0x00000000 },
- { 0x80800001, 0x4c8001b1, 0x00b10c80, 0x00000000 },
- { 0x80800001, 0x4ca001b1, 0x00b10ca0, 0x00000000 },
- { 0x80800001, 0x4cc001b1, 0x00b10cc0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20c60, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20c80, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20ca0, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20cc0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
- { 0x80800001, 0x4ce001b1, 0x00b10ce0, 0x00000000 },
- { 0x80800001, 0x4d0001b1, 0x00b10d00, 0x00000000 },
- { 0x80800001, 0x4d2001b1, 0x00b10d20, 0x00000000 },
- { 0x80800001, 0x4d4001b1, 0x00b10d40, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20ce0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20d00, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20d20, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20d40, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00000001, 0x2de001ad, 0x00218000, 0x00000000 },
- { 0x00802041, 0x2e8025a5, 0x008d8000, 0x008d0e00 },
- { 0x00802041, 0x2e8024a5, 0x008d0e80, 0x008c0da0 },
- { 0x0080200c, 0x2e802ca5, 0x008d0e80, 0x00040004 },
- { 0x00000041, 0x2e8025a5, 0x00210de0, 0x00210da4 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802041, 0x2ec025a5, 0x008d8000, 0x008d0e20 },
- { 0x00802041, 0x2ec024a5, 0x008d0ec0, 0x008c0da0 },
- { 0x0080200c, 0x2ec02ca5, 0x008d0ec0, 0x00040004 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802041, 0x2f0025a5, 0x008d8000, 0x008d0e40 },
- { 0x00802041, 0x2f0024a5, 0x008d0f00, 0x008c0da0 },
- { 0x0080200c, 0x2f002ca5, 0x008d0f00, 0x00040004 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802041, 0x2f4025a5, 0x008d8000, 0x008d0e60 },
- { 0x00802041, 0x2f4024a5, 0x008d0f40, 0x008c0da0 },
- { 0x0080200c, 0x2f402ca5, 0x008d0f40, 0x00040004 },
- { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
- { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00802040, 0x24000ca5, 0x008d0400, 0x00000400 },
- { 0x00802040, 0x24400ca5, 0x008d0440, 0x00000400 },
- { 0x00802040, 0x24800ca5, 0x008d0480, 0x00000400 },
- { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00000400 },
- { 0x00802008, 0x24000ca5, 0x008d0400, 0x0000000b },
- { 0x00802008, 0x24400ca5, 0x008d0440, 0x0000000b },
- { 0x00802008, 0x24800ca5, 0x008d0480, 0x0000000b },
- { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x0000000b },
- { 0x00800001, 0x2dc001ad, 0x00ae0400, 0x00000000 },
- { 0x00800001, 0x2de001ad, 0x00ae0440, 0x00000000 },
- { 0x00800001, 0x2e0001ad, 0x00ae0480, 0x00000000 },
- { 0x00800001, 0x2e2001ad, 0x00ae04c0, 0x00000000 },
- { 0x00000001, 0x2a000001, 0x00210200, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0db00da0 },
- { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x00802040, 0x24000ca5, 0x008d0400, 0x00080000 },
- { 0x00802040, 0x24400ca5, 0x008d0440, 0x00080000 },
- { 0x00802040, 0x24800ca5, 0x008d0480, 0x00080000 },
- { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00080000 },
- { 0x00802008, 0x24000ca5, 0x008d0400, 0x00000014 },
- { 0x00802008, 0x24400ca5, 0x008d0440, 0x00000014 },
- { 0x00802008, 0x24800ca5, 0x008d0480, 0x00000014 },
- { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x00000014 },
- { 0x00000001, 0x22000020, 0x00210a00, 0x00000000 },
- { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x240014a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x242014a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x244014a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x246014a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x248014a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24a014a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24c014a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24e014a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x240814a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x242814a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x244814a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x246814a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x248814a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24a814a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24c814a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24e814a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x241014a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x243014a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x245014a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x247014a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x249014a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24b014a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24d014a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24f014a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x241814a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x243814a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x245814a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x247814a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x249814a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24b814a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24d814a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24f814a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x34000c20, 0x00210fc0, 0x00000020 },
diff --git a/src/shaders/mpeg2/vld/field_motion_uv.g4i b/src/shaders/mpeg2/vld/field_motion_uv.g4i
deleted file mode 100644
index 201ee51..0000000
--- a/src/shaders/mpeg2/vld/field_motion_uv.g4i
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright © 2008 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Zhang Hua jun <huajun.zhang@intel.com>
- * Xing Dong sheng <dongsheng.xing@intel.com>
- *
- */
-
- and.z (1) null mv1<1,1,1>W 2W {align1};
- (f0) jmpi L1;
- and.z (1) null mv2<1,1,1>W 2W {align1};
- (f0) jmpi L2;
- include(`field_read_x1y1_uv.g4i')
- jmpi L5;
-L2:
- include(`field_read_x1y0_uv.g4i')
- jmpi L5;
-L1:
- and.z (1) null mv2<1,1,1>W 2W {align1};
- (f0) jmpi L4;
- include(`field_read_x0y1_uv.g4i')
- jmpi L5;
-L4:
- include(`field_read_x0y0_uv.g4i')
-L5:
-
diff --git a/src/shaders/mpeg2/vld/field_motion_y.g4i b/src/shaders/mpeg2/vld/field_motion_y.g4i
deleted file mode 100644
index 20adb31..0000000
--- a/src/shaders/mpeg2/vld/field_motion_y.g4i
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Zhang Hua jun <huajun.zhang@intel.com>
- * Xing Dong sheng <dongsheng.xing@intel.com>
- *
- */
- and.z (1) null mv1<1,1,1>W 1UW {align1};
- (f0) jmpi L1;
- and.z (1) null mv2<1,1,1>W 1UW {align1};
- (f0) jmpi L2;
- include(`field_read_x1y1_y.g4i')
- jmpi L5;
-L2:
- include(`field_read_x1y0_y.g4i')
- jmpi L5;
-L1:
- and.z (1) null mv2<1,1,1>W 1UW {align1};
- (f0) jmpi L4;
- include(`field_read_x0y1_y.g4i')
- jmpi L5;
-L4:
- include(`field_read_x0y0_y.g4i')
-L5:
diff --git a/src/shaders/mpeg2/vld/field_read_x0y0_uv.g4i b/src/shaders/mpeg2/vld/field_read_x0y0_uv.g4i
deleted file mode 100644
index ff439e5..0000000
--- a/src/shaders/mpeg2/vld/field_read_x0y0_uv.g4i
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g32: message descriptor for reading reference data */
-
-mov (1) g32.8<1>UD 0x7000FUD {align1}; //8*16
-send (16) 0 g40.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
-send (16) 0 g44.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
-//U
-mov (8) g74.0<1>UW g40.0<8,8,1>UB {align1};
-mov (8) g74.16<1>UW g41.0<8,8,1>UB {align1};
-mov (8) g75.0<1>UW g42.0<8,8,1>UB {align1};
-mov (8) g75.16<1>UW g43.0<8,8,1>UB {align1};
-//V
-mov (8) g78.0<1>UW g44.0<8,8,1>UB {align1};
-mov (8) g78.16<1>UW g45.0<8,8,1>UB {align1};
-mov (8) g79.0<1>UW g46.0<8,8,1>UB {align1};
-mov (8) g79.16<1>UW g47.0<8,8,1>UB {align1};
-
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-send (16) 0 g40.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
-send (16) 0 g44.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
-//U
-mov (8) g76.0<1>UW g40.0<8,8,1>UB {align1};
-mov (8) g76.16<1>UW g41.0<8,8,1>UB {align1};
-mov (8) g77.0<1>UW g42.0<8,8,1>UB {align1};
-mov (8) g77.16<1>UW g43.0<8,8,1>UB {align1};
-//V
-mov (8) g80.0<1>UW g44.0<8,8,1>UB {align1};
-mov (8) g80.16<1>UW g45.0<8,8,1>UB {align1};
-mov (8) g81.0<1>UW g46.0<8,8,1>UB {align1};
-mov (8) g81.16<1>UW g47.0<8,8,1>UB {align1};
diff --git a/src/shaders/mpeg2/vld/field_read_x0y0_y.g4i b/src/shaders/mpeg2/vld/field_read_x0y0_y.g4i
deleted file mode 100644
index 3b0da9c..0000000
--- a/src/shaders/mpeg2/vld/field_read_x0y0_y.g4i
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g32: message descriptor for reading reference data */
-mov (1) g32.8<1>UD 0x07001FUD {align1};
-send (16) 0 g38.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
-mov (16) g58.0<1>UW g38.0<16,16,1>UB {align1};
-mov (16) g59.0<1>UW g40.0<16,16,1>UB {align1};
-mov (16) g60.0<1>UW g42.0<16,16,1>UB {align1};
-mov (16) g61.0<1>UW g44.0<16,16,1>UB {align1};
-mov (16) g62.0<1>UW g46.0<16,16,1>UB {align1};
-mov (16) g63.0<1>UW g48.0<16,16,1>UB {align1};
-mov (16) g64.0<1>UW g50.0<16,16,1>UB {align1};
-mov (16) g65.0<1>UW g52.0<16,16,1>UB {align1};
-
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-send (16) 0 g38.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
-mov (16) g66.0<1>UW g38.0<16,16,1>UB {align1};
-mov (16) g67.0<1>UW g40.0<16,16,1>UB {align1};
-mov (16) g68.0<1>UW g42.0<16,16,1>UB {align1};
-mov (16) g69.0<1>UW g44.0<16,16,1>UB {align1};
-mov (16) g70.0<1>UW g46.0<16,16,1>UB {align1};
-mov (16) g71.0<1>UW g48.0<16,16,1>UB {align1};
-mov (16) g72.0<1>UW g50.0<16,16,1>UB {align1};
-mov (16) g73.0<1>UW g52.0<16,16,1>UB {align1};
diff --git a/src/shaders/mpeg2/vld/field_read_x0y1_uv.g4i b/src/shaders/mpeg2/vld/field_read_x0y1_uv.g4i
deleted file mode 100644
index b72507a..0000000
--- a/src/shaders/mpeg2/vld/field_read_x0y1_uv.g4i
+++ /dev/null
@@ -1,45 +0,0 @@
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g115: message descriptor for reading reference data */
-mov (1) g32.8<1>UD 0x7000FUD {align1}; //8*16
-send (16) 0 g40.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
-send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-mov (1) g32.8<1>UD 0x0FUD {align1};
-send (16) 0 g44.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 1 {align1};//U
-send (16) 0 g50.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 1 {align1};//V
-//U
-avg (8) g74.0<1>UW g40.0<8,8,1>UB g41.0<8,8,1>UB {align1};
-avg (8) g74.16<1>UW g41.0<8,8,1>UB g42.0<8,8,1>UB {align1};
-avg (8) g75.0<1>UW g42.0<8,8,1>UB g43.0<8,8,1>UB {align1};
-avg (8) g75.16<1>UW g43.0<8,8,1>UB g44.0<8,8,1>UB {align1};
-//V
-avg (8) g78.0<1>UW g46.0<8,8,1>UB g47.0<8,8,1>UB {align1};
-avg (8) g78.16<1>UW g47.0<8,8,1>UB g48.0<8,8,1>UB {align1};
-avg (8) g79.0<1>UW g48.0<8,8,1>UB g49.0<8,8,1>UB {align1};
-avg (8) g79.16<1>UW g49.0<8,8,1>UB g50.0<8,8,1>UB {align1};
-
-mov (1) g32.8<1>UD 0x7000FUD {align1}; //8*16
-send (16) 0 g40.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
-send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-mov (1) g32.8<1>UD 0x0FUD {align1};
-send (16) 0 g44.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 1 {align1};//U
-send (16) 0 g50.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 1 {align1};//V
-//U
-avg (8) g76.0<1>UW g40.0<8,8,1>UB g41.0<8,8,1>UB {align1};
-avg (8) g76.16<1>UW g41.0<8,8,1>UB g42.0<8,8,1>UB {align1};
-avg (8) g77.0<1>UW g42.0<8,8,1>UB g43.0<8,8,1>UB {align1};
-avg (8) g77.16<1>UW g43.0<8,8,1>UB g44.0<8,8,1>UB {align1};
-//V
-avg (8) g80.0<1>UW g46.0<8,8,1>UB g47.0<8,8,1>UB {align1};
-avg (8) g80.16<1>UW g47.0<8,8,1>UB g48.0<8,8,1>UB {align1};
-avg (8) g81.0<1>UW g48.0<8,8,1>UB g49.0<8,8,1>UB {align1};
-avg (8) g81.16<1>UW g49.0<8,8,1>UB g50.0<8,8,1>UB {align1};
diff --git a/src/shaders/mpeg2/vld/field_read_x0y1_y.g4i b/src/shaders/mpeg2/vld/field_read_x0y1_y.g4i
deleted file mode 100644
index 98a09ed..0000000
--- a/src/shaders/mpeg2/vld/field_read_x0y1_y.g4i
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g115: message descriptor for reading reference data */
-mov (1) g32.8<1>UD 0x07001FUD {align1};
-send (16) 0 g38.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-mov (1) g32.8<1>UD 0x1FUD {align1};
-send (16) 0 g54.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-avg (16) g58.0<1>UW g38.0<16,16,1>UB g40.0<16,16,1>UB {align1};
-avg (16) g59.0<1>UW g40.0<16,16,1>UB g42.0<16,16,1>UB {align1};
-avg (16) g60.0<1>UW g42.0<16,16,1>UB g44.0<16,16,1>UB {align1};
-avg (16) g61.0<1>UW g44.0<16,16,1>UB g46.0<16,16,1>UB {align1};
-avg (16) g62.0<1>UW g46.0<16,16,1>UB g48.0<16,16,1>UB {align1};
-avg (16) g63.0<1>UW g48.0<16,16,1>UB g50.0<16,16,1>UB {align1};
-avg (16) g64.0<1>UW g50.0<16,16,1>UB g52.0<16,16,1>UB {align1};
-avg (16) g65.0<1>UW g52.0<16,16,1>UB g54.0<16,16,1>UB {align1};
-
-mov (1) g32.8<1>UD 0x07001FUD {align1};
-send (16) 0 g38.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-mov (1) g32.8<1>UD 0x1FUD {align1};
-send (16) 0 g54.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-avg (16) g66.0<1>UW g38.0<16,16,1>UB g40.0<16,16,1>UB {align1};
-avg (16) g67.0<1>UW g40.0<16,16,1>UB g42.0<16,16,1>UB {align1};
-avg (16) g68.0<1>UW g42.0<16,16,1>UB g44.0<16,16,1>UB {align1};
-avg (16) g69.0<1>UW g44.0<16,16,1>UB g46.0<16,16,1>UB {align1};
-avg (16) g70.0<1>UW g46.0<16,16,1>UB g48.0<16,16,1>UB {align1};
-avg (16) g71.0<1>UW g48.0<16,16,1>UB g50.0<16,16,1>UB {align1};
-avg (16) g72.0<1>UW g50.0<16,16,1>UB g52.0<16,16,1>UB {align1};
-avg (16) g73.0<1>UW g52.0<16,16,1>UB g54.0<16,16,1>UB {align1};
diff --git a/src/shaders/mpeg2/vld/field_read_x1y0_uv.g4i b/src/shaders/mpeg2/vld/field_read_x1y0_uv.g4i
deleted file mode 100644
index 8e318d7..0000000
--- a/src/shaders/mpeg2/vld/field_read_x1y0_uv.g4i
+++ /dev/null
@@ -1,37 +0,0 @@
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g115: message descriptor for reading reference data */
-mov (1) g32.8<1>UD 0x7000FUD {align1}; //8*16
-send (16) 0 g40.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
-send (16) 0 g44.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
-//U
-avg (8) g74.0<1>UW g40.0<8,8,1>UB g40.1<8,8,1>UB {align1};
-avg (8) g74.16<1>UW g41.0<8,8,1>UB g41.1<8,8,1>UB {align1};
-avg (8) g75.0<1>UW g42.0<8,8,1>UB g42.1<8,8,1>UB {align1};
-avg (8) g75.16<1>UW g43.0<8,8,1>UB g43.1<8,8,1>UB {align1};
-//V
-avg (8) g78.0<1>UW g44.0<8,8,1>UB g44.1<8,8,1>UB {align1};
-avg (8) g78.16<1>UW g45.0<8,8,1>UB g45.1<8,8,1>UB {align1};
-avg (8) g79.0<1>UW g46.0<8,8,1>UB g46.1<8,8,1>UB {align1};
-avg (8) g79.16<1>UW g47.0<8,8,1>UB g47.1<8,8,1>UB {align1};
-
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-send (16) 0 g40.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
-send (16) 0 g44.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
-//U
-avg (8) g76.0<1>UW g40.0<8,8,1>UB g40.1<8,8,1>UB {align1};
-avg (8) g76.16<1>UW g41.0<8,8,1>UB g41.1<8,8,1>UB {align1};
-avg (8) g77.0<1>UW g42.0<8,8,1>UB g42.1<8,8,1>UB {align1};
-avg (8) g77.16<1>UW g43.0<8,8,1>UB g43.1<8,8,1>UB {align1};
-//V
-avg (8) g80.0<1>UW g44.0<8,8,1>UB g44.1<8,8,1>UB {align1};
-avg (8) g80.16<1>UW g45.0<8,8,1>UB g45.1<8,8,1>UB {align1};
-avg (8) g81.0<1>UW g46.0<8,8,1>UB g46.1<8,8,1>UB {align1};
-avg (8) g81.16<1>UW g47.0<8,8,1>UB g47.1<8,8,1>UB {align1};
diff --git a/src/shaders/mpeg2/vld/field_read_x1y0_y.g4i b/src/shaders/mpeg2/vld/field_read_x1y0_y.g4i
deleted file mode 100644
index 0d2fbb1..0000000
--- a/src/shaders/mpeg2/vld/field_read_x1y0_y.g4i
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g115: message descriptor for reading reference data */
-mov (1) g32.8<1>UD 0x07001FUD {align1};
-send (16) 0 g38.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
-avg (16) g58.0<1>UW g38.0<16,16,1>UB g38.1<16,16,1>UB {align1};
-avg (16) g59.0<1>UW g40.0<16,16,1>UB g40.1<16,16,1>UB {align1};
-avg (16) g60.0<1>UW g42.0<16,16,1>UB g42.1<16,16,1>UB {align1};
-avg (16) g61.0<1>UW g44.0<16,16,1>UB g44.1<16,16,1>UB {align1};
-avg (16) g62.0<1>UW g46.0<16,16,1>UB g46.1<16,16,1>UB {align1};
-avg (16) g63.0<1>UW g48.0<16,16,1>UB g48.1<16,16,1>UB {align1};
-avg (16) g64.0<1>UW g50.0<16,16,1>UB g50.1<16,16,1>UB {align1};
-avg (16) g65.0<1>UW g52.0<16,16,1>UB g52.1<16,16,1>UB {align1};
-
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-send (16) 0 g38.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
-avg (16) g66.0<1>UW g38.0<16,16,1>UB g38.1<16,16,1>UB {align1};
-avg (16) g67.0<1>UW g40.0<16,16,1>UB g40.1<16,16,1>UB {align1};
-avg (16) g68.0<1>UW g42.0<16,16,1>UB g42.1<16,16,1>UB {align1};
-avg (16) g69.0<1>UW g44.0<16,16,1>UB g44.1<16,16,1>UB {align1};
-avg (16) g70.0<1>UW g46.0<16,16,1>UB g46.1<16,16,1>UB {align1};
-avg (16) g71.0<1>UW g48.0<16,16,1>UB g48.1<16,16,1>UB {align1};
-avg (16) g72.0<1>UW g50.0<16,16,1>UB g50.1<16,16,1>UB {align1};
-avg (16) g73.0<1>UW g52.0<16,16,1>UB g52.1<16,16,1>UB {align1};
diff --git a/src/shaders/mpeg2/vld/field_read_x1y1_uv.g4i b/src/shaders/mpeg2/vld/field_read_x1y1_uv.g4i
deleted file mode 100644
index dd8877a..0000000
--- a/src/shaders/mpeg2/vld/field_read_x1y1_uv.g4i
+++ /dev/null
@@ -1,91 +0,0 @@
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g115: message descriptor for reading reference data */
-mov (1) g32.8<1>UD 0x7000FUD {align1}; //8*16
-send (16) 0 g40.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
-send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-mov (1) g32.8<1>UD 0x0FUD {align1};
-send (16) 0 g44.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 1 {align1};//U
-send (16) 0 g50.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 1 {align1};//V
-//U
-add (8) g74.0<1>UW g40.0<8,8,1>UB g40.1<8,8,1>UB {align1};
-add (8) g74.16<1>UW g41.0<8,8,1>UB g41.1<8,8,1>UB {align1};
-add (8) g75.0<1>UW g42.0<8,8,1>UB g42.1<8,8,1>UB {align1};
-add (8) g75.16<1>UW g43.0<8,8,1>UB g43.1<8,8,1>UB {align1};
-
-add (8) g74.0<1>UW g74.0<8,8,1>UW g41.0<8,8,1>UB {align1};
-add (8) g74.16<1>UW g74.16<8,8,1>UW g42.0<8,8,1>UB {align1};
-add (8) g75.0<1>UW g75.0<8,8,1>UW g43.0<8,8,1>UB {align1};
-add (8) g75.16<1>UW g75.16<8,8,1>UW g44.0<8,8,1>UB {align1};
-
-add (8) g74.0<1>UW g74.0<8,8,1>UW g41.1<8,8,1>UB {align1};
-add (8) g74.16<1>UW g74.16<8,8,1>UW g42.1<8,8,1>UB {align1};
-add (8) g75.0<1>UW g75.0<8,8,1>UW g43.1<8,8,1>UB {align1};
-add (8) g75.16<1>UW g75.16<8,8,1>UW g44.1<8,8,1>UB {align1};
-//V
-add (8) g78.0<1>UW g46.0<8,8,1>UB g46.1<8,8,1>UB {align1};
-add (8) g78.16<1>UW g47.0<8,8,1>UB g47.1<8,8,1>UB {align1};
-add (8) g79.0<1>UW g48.0<8,8,1>UB g48.1<8,8,1>UB {align1};
-add (8) g79.16<1>UW g49.0<8,8,1>UB g49.1<8,8,1>UB {align1};
-
-add (8) g78.0<1>UW g78.0<8,8,1>UW g47.0<8,8,1>UB {align1};
-add (8) g78.16<1>UW g78.16<8,8,1>UW g48.0<8,8,1>UB {align1};
-add (8) g79.0<1>UW g79.0<8,8,1>UW g49.0<8,8,1>UB {align1};
-add (8) g79.16<1>UW g79.16<8,8,1>UW g50.0<8,8,1>UB {align1};
-
-add (8) g78.0<1>UW g78.0<8,8,1>UW g47.1<8,8,1>UB {align1};
-add (8) g78.16<1>UW g78.16<8,8,1>UW g48.1<8,8,1>UB {align1};
-add (8) g79.0<1>UW g79.0<8,8,1>UW g49.1<8,8,1>UB {align1};
-add (8) g79.16<1>UW g79.16<8,8,1>UW g50.1<8,8,1>UB {align1};
-
-mov (1) g32.8<1>UD 0x7000FUD {align1}; //8*16
-send (16) 0 g40.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
-send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-mov (1) g32.8<1>UD 0x0FUD {align1};
-send (16) 0 g44.0<1>UW g32<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 1 {align1};//U
-send (16) 0 g50.0<1>UW g32<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 1 {align1};//V
-//U
-add (8) g76.0<1>UW g40.0<8,8,1>UB g40.1<8,8,1>UB {align1};
-add (8) g76.16<1>UW g41.0<8,8,1>UB g41.1<8,8,1>UB {align1};
-add (8) g77.0<1>UW g42.0<8,8,1>UB g42.1<8,8,1>UB {align1};
-add (8) g77.16<1>UW g43.0<8,8,1>UB g43.1<8,8,1>UB {align1};
-
-add (8) g76.0<1>UW g76.0<8,8,1>UW g41.0<8,8,1>UB {align1};
-add (8) g76.16<1>UW g76.16<8,8,1>UW g42.0<8,8,1>UB {align1};
-add (8) g77.0<1>UW g77.0<8,8,1>UW g43.0<8,8,1>UB {align1};
-add (8) g77.16<1>UW g77.16<8,8,1>UW g44.0<8,8,1>UB {align1};
-
-add (8) g76.0<1>UW g76.0<8,8,1>UW g41.1<8,8,1>UB {align1};
-add (8) g76.16<1>UW g76.16<8,8,1>UW g42.1<8,8,1>UB {align1};
-add (8) g77.0<1>UW g77.0<8,8,1>UW g43.1<8,8,1>UB {align1};
-add (8) g77.16<1>UW g77.16<8,8,1>UW g44.1<8,8,1>UB {align1};
-//V
-add (8) g80.0<1>UW g46.0<8,8,1>UB g46.1<8,8,1>UB {align1};
-add (8) g80.16<1>UW g47.0<8,8,1>UB g47.1<8,8,1>UB {align1};
-add (8) g81.0<1>UW g48.0<8,8,1>UB g48.1<8,8,1>UB {align1};
-add (8) g81.16<1>UW g49.0<8,8,1>UB g49.1<8,8,1>UB {align1};
-
-add (8) g80.0<1>UW g80.0<8,8,1>UW g47.0<8,8,1>UB {align1};
-add (8) g80.16<1>UW g80.16<8,8,1>UW g48.0<8,8,1>UB {align1};
-add (8) g81.0<1>UW g81.0<8,8,1>UW g49.0<8,8,1>UB {align1};
-add (8) g81.16<1>UW g81.16<8,8,1>UW g50.0<8,8,1>UB {align1};
-
-add (8) g80.0<1>UW g80.0<8,8,1>UW g47.1<8,8,1>UB {align1};
-add (8) g80.16<1>UW g80.16<8,8,1>UW g48.1<8,8,1>UB {align1};
-add (8) g81.0<1>UW g81.0<8,8,1>UW g49.1<8,8,1>UB {align1};
-add (8) g81.16<1>UW g81.16<8,8,1>UW g50.1<8,8,1>UB {align1};
-
-shr (32) g74.0<1>UW g74.0<16,16,1>UW 2UW {align1 compr};
-shr (32) g76.0<1>UW g76.0<16,16,1>UW 2UW {align1 compr};
-shr (32) g78.0<1>UW g78.0<16,16,1>UW 2UW {align1 compr};
-shr (32) g80.0<1>UW g80.0<16,16,1>UW 2UW {align1 compr};
-
diff --git a/src/shaders/mpeg2/vld/field_read_x1y1_y.g4i b/src/shaders/mpeg2/vld/field_read_x1y1_y.g4i
deleted file mode 100644
index 7c28b86..0000000
--- a/src/shaders/mpeg2/vld/field_read_x1y1_y.g4i
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g115: message descriptor for reading reference data */
-mov (1) g32.8<1>UD 0x07001FUD {align1};
-send (16) 0 g38.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-mov (1) g32.8<1>UD 0x1FUD {align1};
-send (16) 0 g54.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-add (16) g58.0<1>UW g38.0<16,16,1>UB g38.1<16,16,1>UB {align1};
-add (16) g59.0<1>UW g40.0<16,16,1>UB g40.1<16,16,1>UB {align1};
-add (16) g60.0<1>UW g42.0<16,16,1>UB g42.1<16,16,1>UB {align1};
-add (16) g61.0<1>UW g44.0<16,16,1>UB g44.1<16,16,1>UB {align1};
-add (16) g62.0<1>UW g46.0<16,16,1>UB g46.1<16,16,1>UB {align1};
-add (16) g63.0<1>UW g48.0<16,16,1>UB g48.1<16,16,1>UB {align1};
-add (16) g64.0<1>UW g50.0<16,16,1>UB g50.1<16,16,1>UB {align1};
-add (16) g65.0<1>UW g52.0<16,16,1>UB g52.1<16,16,1>UB {align1};
-
-add (16) g58.0<1>UW g58.0<16,16,1>UW g40.0<16,16,1>UB {align1};
-add (16) g59.0<1>UW g59.0<16,16,1>UW g42.0<16,16,1>UB {align1};
-add (16) g60.0<1>UW g60.0<16,16,1>UW g44.0<16,16,1>UB {align1};
-add (16) g61.0<1>UW g61.0<16,16,1>UW g46.0<16,16,1>UB {align1};
-add (16) g62.0<1>UW g62.0<16,16,1>UW g48.0<16,16,1>UB {align1};
-add (16) g63.0<1>UW g63.0<16,16,1>UW g50.0<16,16,1>UB {align1};
-add (16) g64.0<1>UW g64.0<16,16,1>UW g52.0<16,16,1>UB {align1};
-add (16) g65.0<1>UW g65.0<16,16,1>UW g54.0<16,16,1>UB {align1};
-
-add (16) g58.0<1>UW g58.0<16,16,1>UW g40.1<16,16,1>UB {align1};
-add (16) g59.0<1>UW g59.0<16,16,1>UW g42.1<16,16,1>UB {align1};
-add (16) g60.0<1>UW g60.0<16,16,1>UW g44.1<16,16,1>UB {align1};
-add (16) g61.0<1>UW g61.0<16,16,1>UW g46.1<16,16,1>UB {align1};
-add (16) g62.0<1>UW g62.0<16,16,1>UW g48.1<16,16,1>UB {align1};
-add (16) g63.0<1>UW g63.0<16,16,1>UW g50.1<16,16,1>UB {align1};
-add (16) g64.0<1>UW g64.0<16,16,1>UW g52.1<16,16,1>UB {align1};
-add (16) g65.0<1>UW g65.0<16,16,1>UW g54.1<16,16,1>UB {align1};
-
-shr (16) g58.0<1>UW g58.0<16,16,1>UW 2UW {align1};
-shr (16) g59.0<1>UW g59.0<16,16,1>UW 2UW {align1};
-shr (16) g60.0<1>UW g60.0<16,16,1>UW 2UW {align1};
-shr (16) g61.0<1>UW g61.0<16,16,1>UW 2UW {align1};
-shr (16) g62.0<1>UW g62.0<16,16,1>UW 2UW {align1};
-shr (16) g63.0<1>UW g63.0<16,16,1>UW 2UW {align1};
-shr (16) g64.0<1>UW g64.0<16,16,1>UW 2UW {align1};
-shr (16) g65.0<1>UW g65.0<16,16,1>UW 2UW {align1};
-
-mov (1) g32.8<1>UD 0x07001FUD {align1};
-send (16) 0 g38.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-send (16) 0 g46.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-mov (1) g32.8<1>UD 0x1FUD {align1};
-send (16) 0 g54.0<1>UW g32<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-add (16) g66.0<1>UW g38.0<16,16,1>UB g38.1<16,16,1>UB {align1};
-add (16) g67.0<1>UW g40.0<16,16,1>UB g40.1<16,16,1>UB {align1};
-add (16) g68.0<1>UW g42.0<16,16,1>UB g42.1<16,16,1>UB {align1};
-add (16) g69.0<1>UW g44.0<16,16,1>UB g44.1<16,16,1>UB {align1};
-add (16) g70.0<1>UW g46.0<16,16,1>UB g46.1<16,16,1>UB {align1};
-add (16) g71.0<1>UW g48.0<16,16,1>UB g48.1<16,16,1>UB {align1};
-add (16) g72.0<1>UW g50.0<16,16,1>UB g50.1<16,16,1>UB {align1};
-add (16) g73.0<1>UW g52.0<16,16,1>UB g52.1<16,16,1>UB {align1};
-
-add (16) g66.0<1>UW g66.0<16,16,1>UW g40.0<16,16,1>UB {align1};
-add (16) g67.0<1>UW g67.0<16,16,1>UW g42.0<16,16,1>UB {align1};
-add (16) g68.0<1>UW g68.0<16,16,1>UW g44.0<16,16,1>UB {align1};
-add (16) g69.0<1>UW g69.0<16,16,1>UW g46.0<16,16,1>UB {align1};
-add (16) g70.0<1>UW g70.0<16,16,1>UW g48.0<16,16,1>UB {align1};
-add (16) g71.0<1>UW g71.0<16,16,1>UW g50.0<16,16,1>UB {align1};
-add (16) g72.0<1>UW g72.0<16,16,1>UW g52.0<16,16,1>UB {align1};
-add (16) g73.0<1>UW g73.0<16,16,1>UW g54.0<16,16,1>UB {align1};
-
-add (16) g66.0<1>UW g66.0<16,16,1>UW g40.1<16,16,1>UB {align1};
-add (16) g67.0<1>UW g67.0<16,16,1>UW g42.1<16,16,1>UB {align1};
-add (16) g68.0<1>UW g68.0<16,16,1>UW g44.1<16,16,1>UB {align1};
-add (16) g69.0<1>UW g69.0<16,16,1>UW g46.1<16,16,1>UB {align1};
-add (16) g70.0<1>UW g70.0<16,16,1>UW g48.1<16,16,1>UB {align1};
-add (16) g71.0<1>UW g71.0<16,16,1>UW g50.1<16,16,1>UB {align1};
-add (16) g72.0<1>UW g72.0<16,16,1>UW g52.1<16,16,1>UB {align1};
-add (16) g73.0<1>UW g73.0<16,16,1>UW g54.1<16,16,1>UB {align1};
-
-shr (16) g66.0<1>UW g66.0<16,16,1>UW 2UW {align1};
-shr (16) g67.0<1>UW g67.0<16,16,1>UW 2UW {align1};
-shr (16) g68.0<1>UW g68.0<16,16,1>UW 2UW {align1};
-shr (16) g69.0<1>UW g69.0<16,16,1>UW 2UW {align1};
-shr (16) g70.0<1>UW g70.0<16,16,1>UW 2UW {align1};
-shr (16) g71.0<1>UW g71.0<16,16,1>UW 2UW {align1};
-shr (16) g72.0<1>UW g72.0<16,16,1>UW 2UW {align1};
-shr (16) g73.0<1>UW g73.0<16,16,1>UW 2UW {align1};
-
diff --git a/src/shaders/mpeg2/vld/frame_field_pred_backward.g4a b/src/shaders/mpeg2/vld/frame_field_pred_backward.g4a
deleted file mode 100644
index 9db50ed..0000000
--- a/src/shaders/mpeg2/vld/frame_field_pred_backward.g4a
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g115: message descriptor for reading reference data */
-mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
-mov(2) g31.0<1>UD g82.12<2,2,1>UW {align1};
-mov (1) g126.8<1>UD ip {align1};
-mov (1) ip g21.0<1,1,1>UD {align1};
-
-/*field 0 of Y*/
-asr (2) g31.14<1>W g82.20<2,2,1>W 1W {align1};
-shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
-add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x2000UW {align1};
-(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
-define(`surface',`7')
-define(`mv1',`g82.20')
-define(`mv2',`g82.22')
-include(`motion_field_y.g4i')
-mov (8) g58.0<1>UD g32.0<8,8,1>UD {align1};
-mov (8) g60.0<1>UD g33.0<8,8,1>UD {align1};
-mov (8) g62.0<1>UD g34.0<8,8,1>UD {align1};
-mov (8) g64.0<1>UD g35.0<8,8,1>UD {align1};
-mov (8) g66.0<1>UD g36.0<8,8,1>UD {align1};
-mov (8) g68.0<1>UD g37.0<8,8,1>UD {align1};
-mov (8) g70.0<1>UD g38.0<8,8,1>UD {align1};
-mov (8) g72.0<1>UD g39.0<8,8,1>UD {align1};
-
-/*field 1 of Y*/
-asr (2) g31.14<1>W g82.28<2,2,1>W 1W {align1};
-shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
-add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x8000UW {align1};
-(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
-define(`surface',`7')
-define(`mv1',`g82.28')
-define(`mv2',`g82.30')
-include(`motion_field_y.g4i')
-mov (8) g59.0<1>UD g32.0<8,8,1>UD {align1};
-mov (8) g61.0<1>UD g33.0<8,8,1>UD {align1};
-mov (8) g63.0<1>UD g34.0<8,8,1>UD {align1};
-mov (8) g65.0<1>UD g35.0<8,8,1>UD {align1};
-mov (8) g67.0<1>UD g36.0<8,8,1>UD {align1};
-mov (8) g69.0<1>UD g37.0<8,8,1>UD {align1};
-mov (8) g71.0<1>UD g38.0<8,8,1>UD {align1};
-mov (8) g73.0<1>UD g39.0<8,8,1>UD {align1};
-
-/*field 0 of UV*/
-shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
-asr (2) g82.20<1>W g82.20<2,2,1>W 1W {align1};
-asr (2) g31.14<1>W g82.20<2,2,1>W 1W {align1};
-shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
-add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x2000UW {align1};
-(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
-define(`surface_u', `8')
-define(`surface_v', `9')
-define(`mv1',`g82.20')
-define(`mv2',`g82.22')
-include(`motion_field_uv.g4i')
-mov (8) g74.0<1>UW g32.0<8,8,1>UW {align1};
-mov (8) g75.0<1>UW g33.0<8,8,1>UW {align1};
-mov (8) g76.0<1>UW g34.0<8,8,1>UW {align1};
-mov (8) g77.0<1>UW g35.0<8,8,1>UW {align1};
-mov (8) g78.0<1>UW g36.0<8,8,1>UW {align1};
-mov (8) g79.0<1>UW g37.0<8,8,1>UW {align1};
-mov (8) g80.0<1>UW g38.0<8,8,1>UW {align1};
-mov (8) g81.0<1>UW g39.0<8,8,1>UW {align1};
-
-/*field 1 of UV*/
-asr (2) g82.28<1>W g82.28<2,2,1>W 1W {align1};
-asr (2) g31.14<1>W g82.28<2,2,1>W 1W {align1};
-shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
-add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x8000UW {align1};
-(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
-define(`mv1',`g82.28')
-define(`mv2',`g82.30')
-include(`motion_field_uv.g4i')
-mov (8) g74.16<1>UW g32.0<8,8,1>UW {align1};
-mov (8) g75.16<1>UW g33.0<8,8,1>UW {align1};
-mov (8) g76.16<1>UW g34.0<8,8,1>UW {align1};
-mov (8) g77.16<1>UW g35.0<8,8,1>UW {align1};
-mov (8) g78.16<1>UW g36.0<8,8,1>UW {align1};
-mov (8) g79.16<1>UW g37.0<8,8,1>UW {align1};
-mov (8) g80.16<1>UW g38.0<8,8,1>UW {align1};
-mov (8) g81.16<1>UW g39.0<8,8,1>UW {align1};
-
-include(`addidct.g4i')
-send (16) 0 acc0<1>UW g0<8,8,1>UW
- thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/src/shaders/mpeg2/vld/frame_field_pred_backward.g4b b/src/shaders/mpeg2/vld/frame_field_pred_backward.g4b
deleted file mode 100644
index 5d46829..0000000
--- a/src/shaders/mpeg2/vld/frame_field_pred_backward.g4b
+++ /dev/null
@@ -1,553 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
- { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
- { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
- { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
- { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
- { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
- { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
- { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
- { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
- { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
- { 0x00600001, 0x27400021, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x27800021, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x27c00021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28800021, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x28c00021, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x29000021, 0x008d04e0, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20002dbc, 0x00210a5c, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
- { 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
- { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
- { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
- { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
- { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
- { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
- { 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
- { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
- { 0x00600001, 0x27600021, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x27a00021, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28600021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28a00021, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x28e00021, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x29200021, 0x008d04e0, 0x00000000 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x2a543dad, 0x00450a54, 0x00010001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20003dbc, 0x00210a54, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
- { 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
- { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
- { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
- { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
- { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
- { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a009 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
- { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
- { 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
- { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
- { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a008 },
- { 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a009 },
- { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
- { 0x00600001, 0x29400129, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x29600129, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x29800129, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x29a00129, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x29c00129, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x29e00129, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x2a000129, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x2a200129, 0x008d04e0, 0x00000000 },
- { 0x0020000c, 0x2a5c3dad, 0x00450a5c, 0x00010001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20003dbc, 0x00210a5c, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
- { 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
- { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
- { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
- { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
- { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
- { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a009 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
- { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
- { 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
- { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
- { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a008 },
- { 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a009 },
- { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
- { 0x00600001, 0x29500129, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x29700129, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x29900129, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x29b00129, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x29d00129, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x29f00129, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x2a100129, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x2a300129, 0x008d04e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
- { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
- { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
- { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
- { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
- { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
- { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
- { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
- { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
- { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
- { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
- { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
- { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
- { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
- { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
- { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
- { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
- { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
- { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
- { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
- { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
- { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
- { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
- { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
- { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
- { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
- { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
- { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
- { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
- { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
- { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
- { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/src/shaders/mpeg2/vld/frame_field_pred_backward.g4b.gen5 b/src/shaders/mpeg2/vld/frame_field_pred_backward.g4b.gen5
deleted file mode 100644
index 18595b2..0000000
--- a/src/shaders/mpeg2/vld/frame_field_pred_backward.g4b.gen5
+++ /dev/null
@@ -1,553 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
- { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
- { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
- { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
- { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
- { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
- { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
- { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
- { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
- { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
- { 0x00600001, 0x27400021, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x27800021, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x27c00021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28800021, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x28c00021, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x29000021, 0x008d04e0, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20002dbc, 0x00210a5c, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
- { 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
- { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
- { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
- { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
- { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
- { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
- { 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
- { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
- { 0x00600001, 0x27600021, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x27a00021, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28600021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28a00021, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x28e00021, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x29200021, 0x008d04e0, 0x00000000 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x2a543dad, 0x00450a54, 0x00010001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20003dbc, 0x00210a54, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
- { 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
- { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
- { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
- { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
- { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
- { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a009 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
- { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
- { 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
- { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
- { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a008 },
- { 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a009 },
- { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
- { 0x00600001, 0x29400129, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x29600129, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x29800129, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x29a00129, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x29c00129, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x29e00129, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x2a000129, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x2a200129, 0x008d04e0, 0x00000000 },
- { 0x0020000c, 0x2a5c3dad, 0x00450a5c, 0x00010001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20003dbc, 0x00210a5c, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
- { 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
- { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
- { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
- { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
- { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
- { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a009 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
- { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
- { 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
- { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
- { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a008 },
- { 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a009 },
- { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
- { 0x00600001, 0x29500129, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x29700129, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x29900129, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x29b00129, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x29d00129, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x29f00129, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x2a100129, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x2a300129, 0x008d04e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
- { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
- { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
- { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
- { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
- { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
- { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
- { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
- { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
- { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
- { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
- { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
- { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
- { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
- { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
- { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
- { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
- { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
- { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
- { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
- { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
- { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
- { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
- { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
- { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
- { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
- { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
- { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
- { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
- { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
- { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
- { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/src/shaders/mpeg2/vld/frame_field_pred_bidirect.g4a b/src/shaders/mpeg2/vld/frame_field_pred_bidirect.g4a
deleted file mode 100644
index fdc1e83..0000000
--- a/src/shaders/mpeg2/vld/frame_field_pred_bidirect.g4a
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g115: message descriptor for reading reference data */
-mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
-mov(2) g31.0<1>UD g82.12<2,2,1>UW {align1};
-mov (1) g126.8<1>UD ip {align1};
-mov (1) ip g21.0<1,1,1>UD {align1};
-
-/*field 0 forward prediction of Y*/
-asr (2) g31.14<1>W g82.16<2,2,1>W 1W {align1};
-shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
-add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x1000UW {align1};
-(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
-define(`surface',`4')
-define(`mv1',`g82.16')
-define(`mv2',`g82.18')
-include(`motion_field_y.g4i')
-mov (8) g58.0<1>UD g32.0<8,8,1>UD {align1};
-mov (8) g60.0<1>UD g33.0<8,8,1>UD {align1};
-mov (8) g62.0<1>UD g34.0<8,8,1>UD {align1};
-mov (8) g64.0<1>UD g35.0<8,8,1>UD {align1};
-mov (8) g66.0<1>UD g36.0<8,8,1>UD {align1};
-mov (8) g68.0<1>UD g37.0<8,8,1>UD {align1};
-mov (8) g70.0<1>UD g38.0<8,8,1>UD {align1};
-mov (8) g72.0<1>UD g39.0<8,8,1>UD {align1};
-
-/*field 1 forward prediction of Y*/
-asr (2) g31.14<1>W g82.24<2,2,1>W 1W {align1};
-shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
-add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x4000UW {align1};
-(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
-define(`surface',`4')
-define(`mv1',`g82.24')
-define(`mv2',`g82.26')
-include(`motion_field_y.g4i')
-mov (8) g59.0<1>UD g32.0<8,8,1>UD {align1};
-mov (8) g61.0<1>UD g33.0<8,8,1>UD {align1};
-mov (8) g63.0<1>UD g34.0<8,8,1>UD {align1};
-mov (8) g65.0<1>UD g35.0<8,8,1>UD {align1};
-mov (8) g67.0<1>UD g36.0<8,8,1>UD {align1};
-mov (8) g69.0<1>UD g37.0<8,8,1>UD {align1};
-mov (8) g71.0<1>UD g38.0<8,8,1>UD {align1};
-mov (8) g73.0<1>UD g39.0<8,8,1>UD {align1};
-
-/*field 0 forward prediction of UV*/
-shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
-asr (2) g82.16<1>W g82.16<2,2,1>W 1W {align1};
-asr (2) g31.14<1>W g82.16<2,2,1>W 1W {align1};
-shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
-add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x1000UW {align1};
-(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
-define(`surface_u', `5')
-define(`surface_v', `6')
-define(`mv1',`g82.16')
-define(`mv2',`g82.18')
-include(`motion_field_uv.g4i')
-mov (8) g74.0<1>UW g32.0<8,8,1>UW {align1};
-mov (8) g75.0<1>UW g33.0<8,8,1>UW {align1};
-mov (8) g76.0<1>UW g34.0<8,8,1>UW {align1};
-mov (8) g77.0<1>UW g35.0<8,8,1>UW {align1};
-mov (8) g78.0<1>UW g36.0<8,8,1>UW {align1};
-mov (8) g79.0<1>UW g37.0<8,8,1>UW {align1};
-mov (8) g80.0<1>UW g38.0<8,8,1>UW {align1};
-mov (8) g81.0<1>UW g39.0<8,8,1>UW {align1};
-
-/*field 1 forward prediction of UV*/
-asr (2) g82.24<1>W g82.24<2,2,1>W 1W {align1};
-asr (2) g31.14<1>W g82.24<2,2,1>W 1W {align1};
-shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
-add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x4000UW {align1};
-(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
-define(`mv1',`g82.24')
-define(`mv2',`g82.26')
-include(`motion_field_uv.g4i')
-mov (8) g74.16<1>UW g32.0<8,8,1>UW {align1};
-mov (8) g75.16<1>UW g33.0<8,8,1>UW {align1};
-mov (8) g76.16<1>UW g34.0<8,8,1>UW {align1};
-mov (8) g77.16<1>UW g35.0<8,8,1>UW {align1};
-mov (8) g78.16<1>UW g36.0<8,8,1>UW {align1};
-mov (8) g79.16<1>UW g37.0<8,8,1>UW {align1};
-mov (8) g80.16<1>UW g38.0<8,8,1>UW {align1};
-mov (8) g81.16<1>UW g39.0<8,8,1>UW {align1};
-
-/*field 0 backward prediction of Y*/
-mov(2) g31.0<1>UD g82.12<2,2,1>UW {align1};
-
-asr (2) g31.14<1>W g82.20<2,2,1>W 1W {align1};
-shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
-add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x2000UW {align1};
-(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
-define(`surface',`7')
-define(`mv1',`g82.20')
-define(`mv2',`g82.22')
-include(`motion_field_y.g4i')
-avg.sat (16) g58.0<1>UW g58.0<16,16,1>UW g32.0<16,16,1>UW {align1};
-avg.sat (16) g60.0<1>UW g60.0<16,16,1>UW g33.0<16,16,1>UW {align1};
-avg.sat (16) g62.0<1>UW g62.0<16,16,1>UW g34.0<16,16,1>UW {align1};
-avg.sat (16) g64.0<1>UW g64.0<16,16,1>UW g35.0<16,16,1>UW {align1};
-avg.sat (16) g66.0<1>UW g66.0<16,16,1>UW g36.0<16,16,1>UW {align1};
-avg.sat (16) g68.0<1>UW g68.0<16,16,1>UW g37.0<16,16,1>UW {align1};
-avg.sat (16) g70.0<1>UW g70.0<16,16,1>UW g38.0<16,16,1>UW {align1};
-avg.sat (16) g72.0<1>UW g72.0<16,16,1>UW g39.0<16,16,1>UW {align1};
-
-/*field 1 backward prediction of Y*/
-asr (2) g31.14<1>W g82.28<2,2,1>W 1W {align1};
-shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
-add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x8000UW {align1};
-(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
-define(`surface',`7')
-define(`mv1',`g82.28')
-define(`mv2',`g82.30')
-include(`motion_field_y.g4i')
-avg.sat (16) g59.0<1>UW g59.0<16,16,1>UW g32.0<16,16,1>UW {align1};
-avg.sat (16) g61.0<1>UW g61.0<16,16,1>UW g33.0<16,16,1>UW {align1};
-avg.sat (16) g63.0<1>UW g63.0<16,16,1>UW g34.0<16,16,1>UW {align1};
-avg.sat (16) g65.0<1>UW g65.0<16,16,1>UW g35.0<16,16,1>UW {align1};
-avg.sat (16) g67.0<1>UW g67.0<16,16,1>UW g36.0<16,16,1>UW {align1};
-avg.sat (16) g69.0<1>UW g69.0<16,16,1>UW g37.0<16,16,1>UW {align1};
-avg.sat (16) g71.0<1>UW g71.0<16,16,1>UW g38.0<16,16,1>UW {align1};
-avg.sat (16) g73.0<1>UW g73.0<16,16,1>UW g39.0<16,16,1>UW {align1};
-
-/*field 0 backward prediction of UV*/
-shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
-asr (2) g82.20<1>W g82.20<2,2,1>W 1W {align1};
-asr (2) g31.14<1>W g82.20<2,2,1>W 1W {align1};
-shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
-add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x2000UW {align1};
-(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
-define(`surface_u', `8')
-define(`surface_v', `9')
-define(`mv1',`g82.20')
-define(`mv2',`g82.22')
-include(`motion_field_uv.g4i')
-avg.sat (8) g74.0<1>UW g74.0<8,8,1>UW g32.0<8,8,1>UW {align1};
-avg.sat (8) g75.0<1>UW g75.0<8,8,1>UW g33.0<8,8,1>UW {align1};
-avg.sat (8) g76.0<1>UW g76.0<8,8,1>UW g34.0<8,8,1>UW {align1};
-avg.sat (8) g77.0<1>UW g77.0<8,8,1>UW g35.0<8,8,1>UW {align1};
-avg.sat (8) g78.0<1>UW g78.0<8,8,1>UW g36.0<8,8,1>UW {align1};
-avg.sat (8) g79.0<1>UW g79.0<8,8,1>UW g37.0<8,8,1>UW {align1};
-avg.sat (8) g80.0<1>UW g80.0<8,8,1>UW g38.0<8,8,1>UW {align1};
-avg.sat (8) g81.0<1>UW g81.0<8,8,1>UW g39.0<8,8,1>UW {align1};
-
-/*field 1 backward prediction of UV*/
-asr (2) g82.28<1>W g82.28<2,2,1>W 1W {align1};
-asr (2) g31.14<1>W g82.28<2,2,1>W 1W {align1};
-shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
-add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x8000UW {align1};
-(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
-define(`mv1',`g82.28')
-define(`mv2',`g82.30')
-include(`motion_field_uv.g4i')
-avg.sat (8) g74.16<1>UW g74.16<8,8,1>UW g32.0<8,8,1>UW {align1};
-avg.sat (8) g75.16<1>UW g75.16<8,8,1>UW g33.0<8,8,1>UW {align1};
-avg.sat (8) g76.16<1>UW g76.16<8,8,1>UW g34.0<8,8,1>UW {align1};
-avg.sat (8) g77.16<1>UW g77.16<8,8,1>UW g35.0<8,8,1>UW {align1};
-avg.sat (8) g78.16<1>UW g78.16<8,8,1>UW g36.0<8,8,1>UW {align1};
-avg.sat (8) g79.16<1>UW g79.16<8,8,1>UW g37.0<8,8,1>UW {align1};
-avg.sat (8) g80.16<1>UW g80.16<8,8,1>UW g38.0<8,8,1>UW {align1};
-avg.sat (8) g81.16<1>UW g81.16<8,8,1>UW g39.0<8,8,1>UW {align1};
-
-include(`addidct.g4i')
-send (16) 0 acc0<1>UW g0<8,8,1>UW
- thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/src/shaders/mpeg2/vld/frame_field_pred_bidirect.g4b b/src/shaders/mpeg2/vld/frame_field_pred_bidirect.g4b
deleted file mode 100644
index 9bd272e..0000000
--- a/src/shaders/mpeg2/vld/frame_field_pred_bidirect.g4b
+++ /dev/null
@@ -1,1007 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
- { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
- { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
- { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
- { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
- { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
- { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
- { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
- { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
- { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
- { 0x00600001, 0x27400021, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x27800021, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x27c00021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28800021, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x28c00021, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x29000021, 0x008d04e0, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20002dbc, 0x00210a58, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
- { 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
- { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
- { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
- { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
- { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
- { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
- { 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
- { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
- { 0x00600001, 0x27600021, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x27a00021, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28600021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28a00021, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x28e00021, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x29200021, 0x008d04e0, 0x00000000 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x2a503dad, 0x00450a50, 0x00010001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20003dbc, 0x00210a50, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
- { 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
- { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
- { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
- { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
- { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
- { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a006 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
- { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
- { 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
- { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
- { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a005 },
- { 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a006 },
- { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
- { 0x00600001, 0x29400129, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x29600129, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x29800129, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x29a00129, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x29c00129, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x29e00129, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x2a000129, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x2a200129, 0x008d04e0, 0x00000000 },
- { 0x0020000c, 0x2a583dad, 0x00450a58, 0x00010001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20003dbc, 0x00210a58, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
- { 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
- { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
- { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
- { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
- { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
- { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a006 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
- { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
- { 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
- { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
- { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a005 },
- { 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a006 },
- { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
- { 0x00600001, 0x29500129, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x29700129, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x29900129, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x29b00129, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x29d00129, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x29f00129, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x2a100129, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x2a300129, 0x008d04e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
- { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
- { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
- { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
- { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
- { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
- { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
- { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
- { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
- { 0x80800042, 0x27402529, 0x00b10740, 0x00b10400 },
- { 0x80800042, 0x27802529, 0x00b10780, 0x00b10420 },
- { 0x80800042, 0x27c02529, 0x00b107c0, 0x00b10440 },
- { 0x80800042, 0x28002529, 0x00b10800, 0x00b10460 },
- { 0x80800042, 0x28402529, 0x00b10840, 0x00b10480 },
- { 0x80800042, 0x28802529, 0x00b10880, 0x00b104a0 },
- { 0x80800042, 0x28c02529, 0x00b108c0, 0x00b104c0 },
- { 0x80800042, 0x29002529, 0x00b10900, 0x00b104e0 },
- { 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20002dbc, 0x00210a5c, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
- { 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
- { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
- { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
- { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
- { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
- { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
- { 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a007 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a007 },
- { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
- { 0x80800042, 0x27602529, 0x00b10760, 0x00b10400 },
- { 0x80800042, 0x27a02529, 0x00b107a0, 0x00b10420 },
- { 0x80800042, 0x27e02529, 0x00b107e0, 0x00b10440 },
- { 0x80800042, 0x28202529, 0x00b10820, 0x00b10460 },
- { 0x80800042, 0x28602529, 0x00b10860, 0x00b10480 },
- { 0x80800042, 0x28a02529, 0x00b108a0, 0x00b104a0 },
- { 0x80800042, 0x28e02529, 0x00b108e0, 0x00b104c0 },
- { 0x80800042, 0x29202529, 0x00b10920, 0x00b104e0 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x2a543dad, 0x00450a54, 0x00010001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20003dbc, 0x00210a54, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
- { 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
- { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
- { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
- { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
- { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
- { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a009 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
- { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
- { 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
- { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
- { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a008 },
- { 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a009 },
- { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
- { 0x80600042, 0x29402529, 0x008d0940, 0x008d0400 },
- { 0x80600042, 0x29602529, 0x008d0960, 0x008d0420 },
- { 0x80600042, 0x29802529, 0x008d0980, 0x008d0440 },
- { 0x80600042, 0x29a02529, 0x008d09a0, 0x008d0460 },
- { 0x80600042, 0x29c02529, 0x008d09c0, 0x008d0480 },
- { 0x80600042, 0x29e02529, 0x008d09e0, 0x008d04a0 },
- { 0x80600042, 0x2a002529, 0x008d0a00, 0x008d04c0 },
- { 0x80600042, 0x2a202529, 0x008d0a20, 0x008d04e0 },
- { 0x0020000c, 0x2a5c3dad, 0x00450a5c, 0x00010001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20003dbc, 0x00210a5c, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
- { 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
- { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
- { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
- { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
- { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
- { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a009 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
- { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
- { 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a008 },
- { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a009 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a008 },
- { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a009 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a008 },
- { 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a009 },
- { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
- { 0x80600042, 0x29502529, 0x008d0950, 0x008d0400 },
- { 0x80600042, 0x29702529, 0x008d0970, 0x008d0420 },
- { 0x80600042, 0x29902529, 0x008d0990, 0x008d0440 },
- { 0x80600042, 0x29b02529, 0x008d09b0, 0x008d0460 },
- { 0x80600042, 0x29d02529, 0x008d09d0, 0x008d0480 },
- { 0x80600042, 0x29f02529, 0x008d09f0, 0x008d04a0 },
- { 0x80600042, 0x2a102529, 0x008d0a10, 0x008d04c0 },
- { 0x80600042, 0x2a302529, 0x008d0a30, 0x008d04e0 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
- { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
- { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
- { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
- { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
- { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
- { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
- { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
- { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
- { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
- { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
- { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
- { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
- { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
- { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
- { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
- { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
- { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
- { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
- { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
- { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
- { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
- { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
- { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
- { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
- { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
- { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
- { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
- { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
- { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
- { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
- { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/src/shaders/mpeg2/vld/frame_field_pred_bidirect.g4b.gen5 b/src/shaders/mpeg2/vld/frame_field_pred_bidirect.g4b.gen5
deleted file mode 100644
index b99ad57..0000000
--- a/src/shaders/mpeg2/vld/frame_field_pred_bidirect.g4b.gen5
+++ /dev/null
@@ -1,1007 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
- { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
- { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
- { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
- { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
- { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
- { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
- { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
- { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
- { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
- { 0x00600001, 0x27400021, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x27800021, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x27c00021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28800021, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x28c00021, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x29000021, 0x008d04e0, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20002dbc, 0x00210a58, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
- { 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
- { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
- { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
- { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
- { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
- { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
- { 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
- { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
- { 0x00600001, 0x27600021, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x27a00021, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28600021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28a00021, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x28e00021, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x29200021, 0x008d04e0, 0x00000000 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x2a503dad, 0x00450a50, 0x00010001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20003dbc, 0x00210a50, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
- { 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
- { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
- { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
- { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
- { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
- { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a006 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
- { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
- { 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
- { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
- { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a005 },
- { 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a006 },
- { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
- { 0x00600001, 0x29400129, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x29600129, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x29800129, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x29a00129, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x29c00129, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x29e00129, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x2a000129, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x2a200129, 0x008d04e0, 0x00000000 },
- { 0x0020000c, 0x2a583dad, 0x00450a58, 0x00010001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20003dbc, 0x00210a58, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
- { 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
- { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
- { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
- { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
- { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
- { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a006 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
- { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
- { 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
- { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
- { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a005 },
- { 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a006 },
- { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
- { 0x00600001, 0x29500129, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x29700129, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x29900129, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x29b00129, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x29d00129, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x29f00129, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x2a100129, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x2a300129, 0x008d04e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20002dbc, 0x00210a54, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
- { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
- { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
- { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
- { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
- { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
- { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
- { 0x01000005, 0x20002dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
- { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
- { 0x80800042, 0x27402529, 0x00b10740, 0x00b10400 },
- { 0x80800042, 0x27802529, 0x00b10780, 0x00b10420 },
- { 0x80800042, 0x27c02529, 0x00b107c0, 0x00b10440 },
- { 0x80800042, 0x28002529, 0x00b10800, 0x00b10460 },
- { 0x80800042, 0x28402529, 0x00b10840, 0x00b10480 },
- { 0x80800042, 0x28802529, 0x00b10880, 0x00b104a0 },
- { 0x80800042, 0x28c02529, 0x00b108c0, 0x00b104c0 },
- { 0x80800042, 0x29002529, 0x00b10900, 0x00b104e0 },
- { 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20002dbc, 0x00210a5c, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
- { 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
- { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
- { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
- { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
- { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
- { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
- { 0x01000005, 0x20002dbc, 0x00210a5e, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a007 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a007 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a007 },
- { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
- { 0x80800042, 0x27602529, 0x00b10760, 0x00b10400 },
- { 0x80800042, 0x27a02529, 0x00b107a0, 0x00b10420 },
- { 0x80800042, 0x27e02529, 0x00b107e0, 0x00b10440 },
- { 0x80800042, 0x28202529, 0x00b10820, 0x00b10460 },
- { 0x80800042, 0x28602529, 0x00b10860, 0x00b10480 },
- { 0x80800042, 0x28a02529, 0x00b108a0, 0x00b104a0 },
- { 0x80800042, 0x28e02529, 0x00b108e0, 0x00b104c0 },
- { 0x80800042, 0x29202529, 0x00b10920, 0x00b104e0 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x2a543dad, 0x00450a54, 0x00010001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x20002000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20003dbc, 0x00210a54, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
- { 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
- { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
- { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
- { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
- { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
- { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a009 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
- { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
- { 0x01000005, 0x20003dbc, 0x00210a56, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
- { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
- { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a008 },
- { 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a009 },
- { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
- { 0x80600042, 0x29402529, 0x008d0940, 0x008d0400 },
- { 0x80600042, 0x29602529, 0x008d0960, 0x008d0420 },
- { 0x80600042, 0x29802529, 0x008d0980, 0x008d0440 },
- { 0x80600042, 0x29a02529, 0x008d09a0, 0x008d0460 },
- { 0x80600042, 0x29c02529, 0x008d09c0, 0x008d0480 },
- { 0x80600042, 0x29e02529, 0x008d09e0, 0x008d04a0 },
- { 0x80600042, 0x2a002529, 0x008d0a00, 0x008d04c0 },
- { 0x80600042, 0x2a202529, 0x008d0a20, 0x008d04e0 },
- { 0x0020000c, 0x2a5c3dad, 0x00450a5c, 0x00010001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a5c, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x80008000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20003dbc, 0x00210a5c, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
- { 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
- { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
- { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
- { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
- { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
- { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a009 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
- { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
- { 0x01000005, 0x20003dbc, 0x00210a5e, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a008 },
- { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a009 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a008 },
- { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a009 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a008 },
- { 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a009 },
- { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
- { 0x80600042, 0x29502529, 0x008d0950, 0x008d0400 },
- { 0x80600042, 0x29702529, 0x008d0970, 0x008d0420 },
- { 0x80600042, 0x29902529, 0x008d0990, 0x008d0440 },
- { 0x80600042, 0x29b02529, 0x008d09b0, 0x008d0460 },
- { 0x80600042, 0x29d02529, 0x008d09d0, 0x008d0480 },
- { 0x80600042, 0x29f02529, 0x008d09f0, 0x008d04a0 },
- { 0x80600042, 0x2a102529, 0x008d0a10, 0x008d04c0 },
- { 0x80600042, 0x2a302529, 0x008d0a30, 0x008d04e0 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
- { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
- { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
- { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
- { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
- { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
- { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
- { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
- { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
- { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
- { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
- { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
- { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
- { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
- { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
- { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
- { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
- { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
- { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
- { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
- { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
- { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
- { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
- { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
- { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
- { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
- { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
- { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
- { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
- { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
- { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
- { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/src/shaders/mpeg2/vld/frame_field_pred_forward.g4a b/src/shaders/mpeg2/vld/frame_field_pred_forward.g4a
deleted file mode 100644
index 4c79c5f..0000000
--- a/src/shaders/mpeg2/vld/frame_field_pred_forward.g4a
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g115: message descriptor for reading reference data */
-mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
-mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
-mov (1) g126.8<1>UD ip {align1};
-mov (1) ip g21.0<1,1,1>UD {align1};
-
-/*field 0 of Y*/
-asr (2) g31.14<1>W g82.16<2,2,1>W 1W {align1};
-shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
-add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x1000UW {align1}; //motion vertical field select
-(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
-define(`surface',`4')
-define(`mv1',`g82.16')
-define(`mv2',`g82.18')
-include(`motion_field_y.g4i')
-mov (8) g58.0<1>UD g32.0<8,8,1>UD {align1};
-mov (8) g60.0<1>UD g33.0<8,8,1>UD {align1};
-mov (8) g62.0<1>UD g34.0<8,8,1>UD {align1};
-mov (8) g64.0<1>UD g35.0<8,8,1>UD {align1};
-mov (8) g66.0<1>UD g36.0<8,8,1>UD {align1};
-mov (8) g68.0<1>UD g37.0<8,8,1>UD {align1};
-mov (8) g70.0<1>UD g38.0<8,8,1>UD {align1};
-mov (8) g72.0<1>UD g39.0<8,8,1>UD {align1};
-
-/*field 1 of Y*/
-asr (2) g31.14<1>W g82.24<2,2,1>W 1W {align1};
-shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
-add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x4000UW {align1};
-(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
-define(`surface',`4')
-define(`mv1',`g82.24')
-define(`mv2',`g82.26')
-include(`motion_field_y.g4i')
-mov (8) g59.0<1>UD g32.0<8,8,1>UD {align1};
-mov (8) g61.0<1>UD g33.0<8,8,1>UD {align1};
-mov (8) g63.0<1>UD g34.0<8,8,1>UD {align1};
-mov (8) g65.0<1>UD g35.0<8,8,1>UD {align1};
-mov (8) g67.0<1>UD g36.0<8,8,1>UD {align1};
-mov (8) g69.0<1>UD g37.0<8,8,1>UD {align1};
-mov (8) g71.0<1>UD g38.0<8,8,1>UD {align1};
-mov (8) g73.0<1>UD g39.0<8,8,1>UD {align1};
-
-/*field 0 of UV*/
-shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
-asr (2) g82.16<1>W g82.16<2,2,1>W 1W {align1};
-asr (2) g31.14<1>W g82.16<2,2,1>W 1W {align1};
-shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
-add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x1000UW {align1};
-(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
-define(`surface_u', `5')
-define(`surface_v', `6')
-define(`mv1',`g82.16')
-define(`mv2',`g82.18')
-include(`motion_field_uv.g4i')
-mov (8) g74.0<1>UW g32.0<8,8,1>UW {align1};
-mov (8) g75.0<1>UW g33.0<8,8,1>UW {align1};
-mov (8) g76.0<1>UW g34.0<8,8,1>UW {align1};
-mov (8) g77.0<1>UW g35.0<8,8,1>UW {align1};
-mov (8) g78.0<1>UW g36.0<8,8,1>UW {align1};
-mov (8) g79.0<1>UW g37.0<8,8,1>UW {align1};
-mov (8) g80.0<1>UW g38.0<8,8,1>UW {align1};
-mov (8) g81.0<1>UW g39.0<8,8,1>UW {align1};
-
-/*field 1 of UV*/
-asr (2) g82.24<1>W g82.24<2,2,1>W 1W {align1};
-asr (2) g31.14<1>W g82.24<2,2,1>W 1W {align1};
-shl (1) g31.16<1>W g31.16<1,1,1>W 1W {align1};
-add (2) g115.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1};
-and.nz (1) null g82.2<1,1,1>UW 0x4000UW {align1};
-(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1};
-define(`surface_u', `5')
-define(`surface_v', `6')
-define(`mv1',`g82.24')
-define(`mv2',`g82.26')
-include(`motion_field_uv.g4i')
-mov (8) g74.16<1>UW g32.0<8,8,1>UW {align1};
-mov (8) g75.16<1>UW g33.0<8,8,1>UW {align1};
-mov (8) g76.16<1>UW g34.0<8,8,1>UW {align1};
-mov (8) g77.16<1>UW g35.0<8,8,1>UW {align1};
-mov (8) g78.16<1>UW g36.0<8,8,1>UW {align1};
-mov (8) g79.16<1>UW g37.0<8,8,1>UW {align1};
-mov (8) g80.16<1>UW g38.0<8,8,1>UW {align1};
-mov (8) g81.16<1>UW g39.0<8,8,1>UW {align1};
-
-include(`addidct.g4i')
-send (16) 0 acc0<1>UW g0<8,8,1>UW
- thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/src/shaders/mpeg2/vld/frame_field_pred_forward.g4b b/src/shaders/mpeg2/vld/frame_field_pred_forward.g4b
deleted file mode 100644
index 6c02221..0000000
--- a/src/shaders/mpeg2/vld/frame_field_pred_forward.g4b
+++ /dev/null
@@ -1,555 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
- { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
- { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
- { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
- { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
- { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
- { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
- { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
- { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
- { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
- { 0x00600001, 0x27400021, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x27800021, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x27c00021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28800021, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x28c00021, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x29000021, 0x008d04e0, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20002dbc, 0x00210a58, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 },
- { 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
- { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
- { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
- { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
- { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
- { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
- { 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x008d0e60, 0x0411a004 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x008d0e60, 0x0411a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x008d0e60, 0x0418a004 },
- { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
- { 0x00600001, 0x27600021, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x27a00021, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28600021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28a00021, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x28e00021, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x29200021, 0x008d04e0, 0x00000000 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x2a503dad, 0x00450a50, 0x00010001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20003dbc, 0x00210a50, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
- { 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
- { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
- { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
- { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
- { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
- { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a006 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
- { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
- { 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
- { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
- { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a005 },
- { 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a006 },
- { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
- { 0x00600001, 0x29400129, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x29600129, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x29800129, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x29a00129, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x29c00129, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x29e00129, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x2a000129, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x2a200129, 0x008d04e0, 0x00000000 },
- { 0x0020000c, 0x2a583dad, 0x00450a58, 0x00010001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20003dbc, 0x00210a58, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000032 },
- { 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
- { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
- { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
- { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
- { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
- { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0414a006 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
- { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000001d },
- { 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x008d0e60, 0x0414a005 },
- { 0x00800031, 0x25a01d29, 0x008d0e60, 0x0414a006 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x008d0e60, 0x0411a005 },
- { 0x00800031, 0x26201d29, 0x008d0e60, 0x0411a006 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x00ad0e60, 0x0414a005 },
- { 0x00800031, 0x25a01d29, 0x00ad0e60, 0x0414a006 },
- { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
- { 0x00600001, 0x29500129, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x29700129, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x29900129, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x29b00129, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x29d00129, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x29f00129, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x2a100129, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x2a300129, 0x008d04e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
- { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
- { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
- { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
- { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
- { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
- { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
- { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
- { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
- { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
- { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
- { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
- { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
- { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
- { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
- { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
- { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
- { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
- { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
- { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
- { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
- { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
- { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
- { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
- { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
- { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
- { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
- { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
- { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
- { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
- { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
- { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/src/shaders/mpeg2/vld/frame_field_pred_forward.g4b.gen5 b/src/shaders/mpeg2/vld/frame_field_pred_forward.g4b.gen5
deleted file mode 100644
index 4c2434a..0000000
--- a/src/shaders/mpeg2/vld/frame_field_pred_forward.g4b.gen5
+++ /dev/null
@@ -1,555 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
- { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20002dbc, 0x00210a50, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
- { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
- { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
- { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
- { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
- { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
- { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
- { 0x01000005, 0x20002dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
- { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
- { 0x00600001, 0x27400021, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x27800021, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x27c00021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28800021, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x28c00021, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x29000021, 0x008d04e0, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20002dbc, 0x00210a58, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000008a },
- { 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000005e },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
- { 0x00800040, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x00800040, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x00800040, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x00800040, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x00800040, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x00800040, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x00800040, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x00800040, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10501 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10541 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b10581 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b105c1 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10601 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10641 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10681 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b106c1 },
- { 0x00800040, 0x24004529, 0x00b10400, 0x00b10541 },
- { 0x00800040, 0x24204529, 0x00b10420, 0x00b10581 },
- { 0x00800040, 0x24404529, 0x00b10440, 0x00b105c1 },
- { 0x00800040, 0x24604529, 0x00b10460, 0x00b10601 },
- { 0x00800040, 0x24804529, 0x00b10480, 0x00b10641 },
- { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10681 },
- { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b106c1 },
- { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10701 },
- { 0x00800008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00800008, 0x24202d29, 0x00b10420, 0x00020002 },
- { 0x00800008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00800008, 0x24602d29, 0x00b10460, 0x00020002 },
- { 0x00800008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00800008, 0x24a02d29, 0x00b104a0, 0x00020002 },
- { 0x00800008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00800008, 0x24e02d29, 0x00b104e0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000080 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b106c1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 },
- { 0x01000005, 0x20002dbc, 0x00210a5a, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000002e },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x27001d29, 0x408d0e60, 0x0218a004 },
- { 0x80800042, 0x24004629, 0x00b10500, 0x00b10540 },
- { 0x80800042, 0x24204629, 0x00b10540, 0x00b10580 },
- { 0x80800042, 0x24404629, 0x00b10580, 0x00b105c0 },
- { 0x80800042, 0x24604629, 0x00b105c0, 0x00b10600 },
- { 0x80800042, 0x24804629, 0x00b10600, 0x00b10640 },
- { 0x80800042, 0x24a04629, 0x00b10640, 0x00b10680 },
- { 0x80800042, 0x24c04629, 0x00b10680, 0x00b106c0 },
- { 0x80800042, 0x24e04629, 0x00b106c0, 0x00b10700 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000026 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25401d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00800031, 0x25c01d29, 0x408d0e60, 0x0218a004 },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x26001d29, 0x408d0e60, 0x0288a004 },
- { 0x00800001, 0x24000229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00b106c0, 0x00000000 },
- { 0x00600001, 0x27600021, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x27a00021, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x27e00021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28600021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28a00021, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x28e00021, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x29200021, 0x008d04e0, 0x00000000 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x2a503dad, 0x00450a50, 0x00010001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x10001000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20003dbc, 0x00210a50, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
- { 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
- { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
- { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
- { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
- { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
- { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a006 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
- { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
- { 0x01000005, 0x20003dbc, 0x00210a52, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
- { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
- { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a005 },
- { 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a006 },
- { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
- { 0x00600001, 0x29400129, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x29600129, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x29800129, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x29a00129, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x29c00129, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x29e00129, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x2a000129, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x2a200129, 0x008d04e0, 0x00000000 },
- { 0x0020000c, 0x2a583dad, 0x00450a58, 0x00010001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a58, 0x00010001 },
- { 0x00000009, 0x23f03dad, 0x002103f0, 0x00010001 },
- { 0x00200040, 0x2e603421, 0x004503e0, 0x004503ee },
- { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x40004000 },
- { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 },
- { 0x01000005, 0x20003dbc, 0x00210a58, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000064 },
- { 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
- { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
- { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
- { 0x00800040, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800040, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800040, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800040, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0501 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0521 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0541 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0561 },
- { 0x00800040, 0x24004529, 0x00ad0400, 0x00ad0521 },
- { 0x00800040, 0x24204529, 0x00ad0420, 0x00ad0541 },
- { 0x00800040, 0x24404529, 0x00ad0440, 0x00ad0561 },
- { 0x00800040, 0x24604529, 0x00ad0460, 0x00ad0581 },
- { 0x00800040, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800040, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800040, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800040, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05a1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05c1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad05e1 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0601 },
- { 0x00800040, 0x24804529, 0x00ad0480, 0x00ad05c1 },
- { 0x00800040, 0x24a04529, 0x00ad04a0, 0x00ad05e1 },
- { 0x00800040, 0x24c04529, 0x00ad04c0, 0x00ad0601 },
- { 0x00800040, 0x24e04529, 0x00ad04e0, 0x00ad0621 },
- { 0x00a02008, 0x24002d29, 0x00b10400, 0x00020002 },
- { 0x00a02008, 0x24402d29, 0x00b10440, 0x00020002 },
- { 0x00a02008, 0x24802d29, 0x00b10480, 0x00020002 },
- { 0x00a02008, 0x24c02d29, 0x00b104c0, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000052 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0248a006 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0501 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0521 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0541 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0561 },
- { 0x00800042, 0x24804629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x24a04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x24c04629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x24e04629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000003a },
- { 0x01000005, 0x20003dbc, 0x00210a5a, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x408d0e60, 0x0248a005 },
- { 0x00800031, 0x25a01d29, 0x408d0e60, 0x0248a006 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f },
- { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 },
- { 0x00800031, 0x25801d29, 0x408d0e60, 0x0218a005 },
- { 0x00800031, 0x26201d29, 0x408d0e60, 0x0218a006 },
- { 0x00800042, 0x24004629, 0x00ad0500, 0x00ad0520 },
- { 0x00800042, 0x24204629, 0x00ad0520, 0x00ad0540 },
- { 0x00800042, 0x24404629, 0x00ad0540, 0x00ad0560 },
- { 0x00800042, 0x24604629, 0x00ad0560, 0x00ad0580 },
- { 0x00800042, 0x24804629, 0x00ad05a0, 0x00ad05c0 },
- { 0x00800042, 0x24a04629, 0x00ad05c0, 0x00ad05e0 },
- { 0x00800042, 0x24c04629, 0x00ad05e0, 0x00ad0600 },
- { 0x00800042, 0x24e04629, 0x00ad0600, 0x00ad0620 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x25001d29, 0x40ad0e60, 0x0248a005 },
- { 0x00800031, 0x25a01d29, 0x40ad0e60, 0x0248a006 },
- { 0x00800001, 0x24000229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x24400229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x24600229, 0x00ad0560, 0x00000000 },
- { 0x00800001, 0x24800229, 0x00ad05a0, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00ad05c0, 0x00000000 },
- { 0x00800001, 0x24c00229, 0x00ad05e0, 0x00000000 },
- { 0x00800001, 0x24e00229, 0x00ad0600, 0x00000000 },
- { 0x00600001, 0x29500129, 0x008d0400, 0x00000000 },
- { 0x00600001, 0x29700129, 0x008d0420, 0x00000000 },
- { 0x00600001, 0x29900129, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x29b00129, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x29d00129, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x29f00129, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x2a100129, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x2a300129, 0x008d04e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
- { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
- { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
- { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
- { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
- { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
- { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
- { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
- { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
- { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
- { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
- { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
- { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
- { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
- { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
- { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
- { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
- { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
- { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
- { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
- { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
- { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
- { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
- { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
- { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
- { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
- { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
- { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
- { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
- { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
- { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
- { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/src/shaders/mpeg2/vld/frame_frame_pred_backward.g4a b/src/shaders/mpeg2/vld/frame_frame_pred_backward.g4a
deleted file mode 100644
index 28fe910..0000000
--- a/src/shaders/mpeg2/vld/frame_frame_pred_backward.g4a
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g32: message descriptor for reading reference data
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data */
-mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
-mov(2) g31.0<1>UD g82.12<2,2,1>UW {align1};
-mov (1) g126.8<1>UD ip {align1};
-mov (1) ip g21.0<1,1,1>UD {align1};
-
-//Y, (x', y') = (x, y) + (motion_vector.x >> 1, motion_vector.y >> 1)
-asr (2) g31.14<1>W g82.20<2,2,1>W 1W {align1};
-add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-define(`input_surface', `7')
-define(`mv1', `g82.20')
-define(`mv2', `g82.22')
-include(`motion_frame_y.g4i')
-
-//UV, (x', y') = (x >> 1, y >> 1) + (motion_vector.x >> 2, motion_vector.y >> 2)
-shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
-asr (2) g31.14<1>W g82.20<2,2,1>W 2W {align1};
-add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-define(`input_surface1', `8')
-define(`input_surface2', `9')
-include(`motion_frame_uv.g4i')
-
-include(`addidct.g4i')
-send (16) 0 acc0<1>UW g0<8,8,1>UW
- thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/src/shaders/mpeg2/vld/frame_frame_pred_backward.g4b b/src/shaders/mpeg2/vld/frame_frame_pred_backward.g4b
deleted file mode 100644
index 475200b..0000000
--- a/src/shaders/mpeg2/vld/frame_frame_pred_backward.g4b
+++ /dev/null
@@ -1,369 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
- { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x01000005, 0x20000d3c, 0x00210a54, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000005f },
- { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
- { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
- { 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
- { 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
- { 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
- { 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
- { 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
- { 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
- { 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
- { 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
- { 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
- { 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
- { 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
- { 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
- { 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
- { 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
- { 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
- { 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
- { 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
- { 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
- { 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
- { 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
- { 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
- { 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
- { 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000043 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
- { 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
- { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
- { 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
- { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
- { 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
- { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
- { 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000002e },
- { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
- { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
- { 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
- { 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
- { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
- { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
- { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
- { 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
- { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
- { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
- { 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
- { 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
- { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
- { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
- { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
- { 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
- { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
- { 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
- { 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
- { 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
- { 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
- { 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
- { 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
- { 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x01000005, 0x20000d3c, 0x00210a54, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000004e },
- { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000040 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24401d29, 0x008d0400, 0x0418a008 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0418a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25401d29, 0x008d0400, 0x0411a008 },
- { 0x00800031, 0x26801d29, 0x008d0400, 0x0411a009 },
- { 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
- { 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
- { 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
- { 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
- { 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
- { 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
- { 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
- { 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
- { 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
- { 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
- { 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
- { 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
- { 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
- { 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
- { 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
- { 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
- { 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
- { 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
- { 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x24401d29, 0x008d0400, 0x0414a008 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
- { 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
- { 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
- { 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
- { 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
- { 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000025 },
- { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24401d29, 0x008d0400, 0x0418a008 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0418a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25401d29, 0x008d0400, 0x0411a008 },
- { 0x00800031, 0x26801d29, 0x008d0400, 0x0411a009 },
- { 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
- { 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
- { 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
- { 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
- { 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
- { 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
- { 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
- { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
- { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
- { 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
- { 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x24801d29, 0x008d0400, 0x0414a008 },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a009 },
- { 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
- { 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
- { 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
- { 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
- { 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
- { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
- { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
- { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
- { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
- { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
- { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
- { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
- { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
- { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
- { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
- { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
- { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
- { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
- { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
- { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
- { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
- { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
- { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
- { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
- { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
- { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
- { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
- { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
- { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
- { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
- { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
- { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
- { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
- { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
- { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
- { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/src/shaders/mpeg2/vld/frame_frame_pred_backward.g4b.gen5 b/src/shaders/mpeg2/vld/frame_frame_pred_backward.g4b.gen5
deleted file mode 100644
index 5f5c174..0000000
--- a/src/shaders/mpeg2/vld/frame_frame_pred_backward.g4b.gen5
+++ /dev/null
@@ -1,369 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
- { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x01000005, 0x20000d3c, 0x00210a54, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000be },
- { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000090 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
- { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
- { 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
- { 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
- { 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
- { 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
- { 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
- { 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
- { 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
- { 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
- { 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
- { 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
- { 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
- { 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
- { 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
- { 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
- { 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
- { 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
- { 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
- { 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
- { 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
- { 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
- { 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
- { 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
- { 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
- { 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
- { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
- { 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
- { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
- { 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
- { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
- { 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000005c },
- { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
- { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
- { 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
- { 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
- { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
- { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
- { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
- { 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
- { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
- { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
- { 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
- { 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
- { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
- { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
- { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
- { 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
- { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
- { 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
- { 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
- { 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
- { 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
- { 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
- { 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
- { 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x01000005, 0x20000d3c, 0x00210a54, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000009c },
- { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000080 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24401d29, 0x408d0400, 0x0288a008 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0288a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25401d29, 0x408d0400, 0x0218a008 },
- { 0x00800031, 0x26801d29, 0x408d0400, 0x0218a009 },
- { 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
- { 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
- { 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
- { 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
- { 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
- { 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
- { 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
- { 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
- { 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
- { 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
- { 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
- { 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
- { 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
- { 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
- { 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
- { 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
- { 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
- { 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
- { 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000062 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x24401d29, 0x408d0400, 0x0248a008 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
- { 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
- { 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
- { 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
- { 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
- { 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a },
- { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24401d29, 0x408d0400, 0x0288a008 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0288a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25401d29, 0x408d0400, 0x0218a008 },
- { 0x00800031, 0x26801d29, 0x408d0400, 0x0218a009 },
- { 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
- { 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
- { 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
- { 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
- { 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
- { 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
- { 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
- { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
- { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
- { 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
- { 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x24801d29, 0x408d0400, 0x0248a008 },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a009 },
- { 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
- { 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
- { 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
- { 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
- { 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
- { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
- { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
- { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
- { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
- { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
- { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
- { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
- { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
- { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
- { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
- { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
- { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
- { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
- { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
- { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
- { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
- { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
- { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
- { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
- { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
- { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
- { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
- { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
- { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
- { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
- { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
- { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
- { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
- { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
- { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
- { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/src/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4a b/src/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4a
deleted file mode 100644
index cf7ef57..0000000
--- a/src/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4a
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g32: message descriptor for reading reference data
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data */
-mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
-mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
-mov (1) g126.8<1>UD ip {align1};
-mov (1) ip g21.0<1,1,1>UD {align1};
-
-//Y, Forward
-mov (1) g31.8<1>UD 0x0070007UD {align1};
-define(`input_surface', `4')
-define(`mv1', `g82.16')
-define(`mv2', `g82.18')
-asr (2) g31.14<1>W g82.16<2,2,1>W 1W {align1};
-add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-include(`motion_frame_y.g4i')
-//Save Forward
-mov (16) g108.0<1>UD g58.0<16,16,1>UD {align1 compr};
-mov (16) g110.0<1>UD g60.0<16,16,1>UD {align1 compr};
-mov (16) g112.0<1>UD g62.0<16,16,1>UD {align1 compr};
-mov (16) g114.0<1>UD g64.0<16,16,1>UD {align1 compr};
-mov (16) g116.0<1>UD g66.0<16,16,1>UD {align1 compr};
-mov (16) g118.0<1>UD g68.0<16,16,1>UD {align1 compr};
-mov (16) g120.0<1>UD g70.0<16,16,1>UD {align1 compr};
-mov (16) g122.0<1>UD g72.0<16,16,1>UD {align1 compr};
-//Y, Backward
-define(`input_surface', `7')
-define(`mv1', `g82.20')
-define(`mv2', `g82.22')
-asr (2) g31.14<1>W g82.20<2,2,1>W 1W {align1};
-add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-include(`motion_frame_y.g4i')
-//Average Forward and Backward
-avg.sat (16) g58.0<1>UW g58.0<16,16,1>UW g108.0<16,16,1>UW {align1};
-avg.sat (16) g59.0<1>UW g59.0<16,16,1>UW g109.0<16,16,1>UW {align1};
-avg.sat (16) g60.0<1>UW g60.0<16,16,1>UW g110.0<16,16,1>UW {align1};
-avg.sat (16) g61.0<1>UW g61.0<16,16,1>UW g111.0<16,16,1>UW {align1};
-avg.sat (16) g62.0<1>UW g62.0<16,16,1>UW g112.0<16,16,1>UW {align1};
-avg.sat (16) g63.0<1>UW g63.0<16,16,1>UW g113.0<16,16,1>UW {align1};
-avg.sat (16) g64.0<1>UW g64.0<16,16,1>UW g114.0<16,16,1>UW {align1};
-avg.sat (16) g65.0<1>UW g65.0<16,16,1>UW g115.0<16,16,1>UW {align1};
-avg.sat (16) g66.0<1>UW g66.0<16,16,1>UW g116.0<16,16,1>UW {align1};
-avg.sat (16) g67.0<1>UW g67.0<16,16,1>UW g117.0<16,16,1>UW {align1};
-avg.sat (16) g68.0<1>UW g68.0<16,16,1>UW g118.0<16,16,1>UW {align1};
-avg.sat (16) g69.0<1>UW g69.0<16,16,1>UW g119.0<16,16,1>UW {align1};
-avg.sat (16) g70.0<1>UW g70.0<16,16,1>UW g120.0<16,16,1>UW {align1};
-avg.sat (16) g71.0<1>UW g71.0<16,16,1>UW g121.0<16,16,1>UW {align1};
-avg.sat (16) g72.0<1>UW g72.0<16,16,1>UW g122.0<16,16,1>UW {align1};
-avg.sat (16) g73.0<1>UW g73.0<16,16,1>UW g123.0<16,16,1>UW {align1};
-
-//UV, Forward
-shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
-asr (2) g31.14<1>W g82.16<2,2,1>W 2W {align1};
-add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-define(`input_surface1', `5')
-define(`input_surface2', `6')
-mov (1) g32.8<1>UD 0x007000fUD {align1};
-include(`motion_frame_uv.g4i')
-//Save UV Forward
-mov (16) g108.0<1>UB g74.0<16,16,2>UB {align1};
-mov (16) g108.16<1>UB g75.0<16,16,2>UB {align1};
-mov (16) g109.0<1>UB g76.0<16,16,2>UB {align1};
-mov (16) g109.16<1>UB g77.0<16,16,2>UB {align1};
-mov (16) g110.0<1>UB g78.0<16,16,2>UB {align1};
-mov (16) g110.16<1>UB g79.0<16,16,2>UB {align1};
-mov (16) g111.0<1>UB g80.0<16,16,2>UB {align1};
-mov (16) g111.16<1>UB g81.0<16,16,2>UB {align1};
-//UV, Backward
-asr (2) g31.14<1>W g82.20<2,2,1>W 2W {align1};
-add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-define(`input_surface1', `8')
-define(`input_surface2', `9')
-include(`motion_frame_uv.g4i')
-//Average Forward and Backward
-avg.sat (16) g74.0<1>UW g74.0<16,16,1>UW g108.0<16,16,1>UB {align1};
-avg.sat (16) g75.0<1>UW g75.0<16,16,1>UW g108.16<16,16,1>UB {align1};
-avg.sat (16) g76.0<1>UW g76.0<16,16,1>UW g109.0<16,16,1>UB {align1};
-avg.sat (16) g77.0<1>UW g77.0<16,16,1>UW g109.16<16,16,1>UB {align1};
-avg.sat (16) g78.0<1>UW g78.0<16,16,1>UW g110.0<16,16,1>UB {align1};
-avg.sat (16) g79.0<1>UW g79.0<16,16,1>UW g110.16<16,16,1>UB {align1};
-avg.sat (16) g80.0<1>UW g80.0<16,16,1>UW g111.0<16,16,1>UB {align1};
-avg.sat (16) g81.0<1>UW g81.0<16,16,1>UW g111.16<16,16,1>UB {align1};
-
-include(`addidct.g4i')
-send (16) 0 acc0<1>UW g0<8,8,1>UW
- thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/src/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b b/src/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b
deleted file mode 100644
index 0ca1f38..0000000
--- a/src/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b
+++ /dev/null
@@ -1,675 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
- { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x01000005, 0x20000d3c, 0x00210a50, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000005f },
- { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
- { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
- { 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
- { 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
- { 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
- { 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
- { 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
- { 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
- { 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
- { 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
- { 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
- { 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
- { 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
- { 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
- { 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
- { 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
- { 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
- { 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
- { 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
- { 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
- { 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
- { 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
- { 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
- { 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
- { 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000043 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
- { 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
- { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
- { 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
- { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
- { 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
- { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
- { 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000002e },
- { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
- { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
- { 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
- { 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
- { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
- { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
- { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
- { 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
- { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
- { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
- { 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
- { 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
- { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
- { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
- { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
- { 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
- { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
- { 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
- { 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
- { 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
- { 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
- { 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
- { 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
- { 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
- { 0x00802001, 0x2d800021, 0x00b10740, 0x00000000 },
- { 0x00802001, 0x2dc00021, 0x00b10780, 0x00000000 },
- { 0x00802001, 0x2e000021, 0x00b107c0, 0x00000000 },
- { 0x00802001, 0x2e400021, 0x00b10800, 0x00000000 },
- { 0x00802001, 0x2e800021, 0x00b10840, 0x00000000 },
- { 0x00802001, 0x2ec00021, 0x00b10880, 0x00000000 },
- { 0x00802001, 0x2f000021, 0x00b108c0, 0x00000000 },
- { 0x00802001, 0x2f400021, 0x00b10900, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x01000005, 0x20000d3c, 0x00210a54, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000005f },
- { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
- { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
- { 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
- { 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
- { 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
- { 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
- { 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
- { 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
- { 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
- { 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
- { 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
- { 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
- { 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
- { 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
- { 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
- { 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
- { 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
- { 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
- { 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
- { 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
- { 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
- { 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
- { 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
- { 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
- { 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000043 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
- { 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
- { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
- { 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
- { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
- { 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
- { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
- { 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000002e },
- { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a007 },
- { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
- { 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
- { 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
- { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
- { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
- { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
- { 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
- { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
- { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
- { 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
- { 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
- { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
- { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
- { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
- { 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
- { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a007 },
- { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
- { 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
- { 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
- { 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
- { 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
- { 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
- { 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
- { 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
- { 0x80800042, 0x27402529, 0x00b10740, 0x00b10d80 },
- { 0x80800042, 0x27602529, 0x00b10760, 0x00b10da0 },
- { 0x80800042, 0x27802529, 0x00b10780, 0x00b10dc0 },
- { 0x80800042, 0x27a02529, 0x00b107a0, 0x00b10de0 },
- { 0x80800042, 0x27c02529, 0x00b107c0, 0x00b10e00 },
- { 0x80800042, 0x27e02529, 0x00b107e0, 0x00b10e20 },
- { 0x80800042, 0x28002529, 0x00b10800, 0x00b10e40 },
- { 0x80800042, 0x28202529, 0x00b10820, 0x00b10e60 },
- { 0x80800042, 0x28402529, 0x00b10840, 0x00b10e80 },
- { 0x80800042, 0x28602529, 0x00b10860, 0x00b10ea0 },
- { 0x80800042, 0x28802529, 0x00b10880, 0x00b10ec0 },
- { 0x80800042, 0x28a02529, 0x00b108a0, 0x00b10ee0 },
- { 0x80800042, 0x28c02529, 0x00b108c0, 0x00b10f00 },
- { 0x80800042, 0x28e02529, 0x00b108e0, 0x00b10f20 },
- { 0x80800042, 0x29002529, 0x00b10900, 0x00b10f40 },
- { 0x80800042, 0x29202529, 0x00b10920, 0x00b10f60 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x01000005, 0x20000d3c, 0x00210a54, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000004e },
- { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000040 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24401d29, 0x008d0400, 0x0418a005 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0418a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25401d29, 0x008d0400, 0x0411a005 },
- { 0x00800031, 0x26801d29, 0x008d0400, 0x0411a006 },
- { 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
- { 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
- { 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
- { 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
- { 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
- { 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
- { 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
- { 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
- { 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
- { 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
- { 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
- { 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
- { 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
- { 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
- { 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
- { 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
- { 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
- { 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
- { 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x24401d29, 0x008d0400, 0x0414a005 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
- { 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
- { 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
- { 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
- { 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
- { 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000025 },
- { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24401d29, 0x008d0400, 0x0418a005 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0418a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25401d29, 0x008d0400, 0x0411a005 },
- { 0x00800031, 0x26801d29, 0x008d0400, 0x0411a006 },
- { 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
- { 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
- { 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
- { 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
- { 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
- { 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
- { 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
- { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
- { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
- { 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
- { 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x24801d29, 0x008d0400, 0x0414a005 },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a006 },
- { 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
- { 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
- { 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
- { 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
- { 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
- { 0x00800001, 0x2d800231, 0x00b20940, 0x00000000 },
- { 0x00800001, 0x2d900231, 0x00b20960, 0x00000000 },
- { 0x00800001, 0x2da00231, 0x00b20980, 0x00000000 },
- { 0x00800001, 0x2db00231, 0x00b209a0, 0x00000000 },
- { 0x00800001, 0x2dc00231, 0x00b209c0, 0x00000000 },
- { 0x00800001, 0x2dd00231, 0x00b209e0, 0x00000000 },
- { 0x00800001, 0x2de00231, 0x00b20a00, 0x00000000 },
- { 0x00800001, 0x2df00231, 0x00b20a20, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x01000005, 0x20000d3c, 0x00210a54, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000004e },
- { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000040 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24401d29, 0x008d0400, 0x0418a008 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0418a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25401d29, 0x008d0400, 0x0411a008 },
- { 0x00800031, 0x26801d29, 0x008d0400, 0x0411a009 },
- { 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
- { 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
- { 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
- { 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
- { 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
- { 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
- { 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
- { 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
- { 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
- { 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
- { 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
- { 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
- { 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
- { 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
- { 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
- { 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
- { 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
- { 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
- { 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x24401d29, 0x008d0400, 0x0414a008 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a009 },
- { 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
- { 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
- { 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
- { 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
- { 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000025 },
- { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24401d29, 0x008d0400, 0x0418a008 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0418a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25401d29, 0x008d0400, 0x0411a008 },
- { 0x00800031, 0x26801d29, 0x008d0400, 0x0411a009 },
- { 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
- { 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
- { 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
- { 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
- { 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
- { 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
- { 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
- { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
- { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
- { 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
- { 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x24801d29, 0x008d0400, 0x0414a008 },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a009 },
- { 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
- { 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
- { 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
- { 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
- { 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
- { 0x80800042, 0x29404529, 0x00b10940, 0x00b10d80 },
- { 0x80800042, 0x29604529, 0x00b10960, 0x00b10d90 },
- { 0x80800042, 0x29804529, 0x00b10980, 0x00b10da0 },
- { 0x80800042, 0x29a04529, 0x00b109a0, 0x00b10db0 },
- { 0x80800042, 0x29c04529, 0x00b109c0, 0x00b10dc0 },
- { 0x80800042, 0x29e04529, 0x00b109e0, 0x00b10dd0 },
- { 0x80800042, 0x2a004529, 0x00b10a00, 0x00b10de0 },
- { 0x80800042, 0x2a204529, 0x00b10a20, 0x00b10df0 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
- { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
- { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
- { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
- { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
- { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
- { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
- { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
- { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
- { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
- { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
- { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
- { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
- { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
- { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
- { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
- { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
- { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
- { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
- { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
- { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
- { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
- { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
- { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
- { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
- { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
- { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
- { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
- { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
- { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
- { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
- { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/src/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b.gen5 b/src/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b.gen5
deleted file mode 100644
index 1078caa..0000000
--- a/src/shaders/mpeg2/vld/frame_frame_pred_bidirect.g4b.gen5
+++ /dev/null
@@ -1,675 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
- { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x01000005, 0x20000d3c, 0x00210a50, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000be },
- { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000090 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
- { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
- { 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
- { 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
- { 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
- { 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
- { 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
- { 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
- { 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
- { 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
- { 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
- { 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
- { 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
- { 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
- { 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
- { 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
- { 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
- { 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
- { 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
- { 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
- { 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
- { 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
- { 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
- { 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
- { 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
- { 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
- { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
- { 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
- { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
- { 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
- { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
- { 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000005c },
- { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
- { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
- { 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
- { 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
- { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
- { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
- { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
- { 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
- { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
- { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
- { 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
- { 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
- { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
- { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
- { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
- { 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
- { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
- { 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
- { 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
- { 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
- { 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
- { 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
- { 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
- { 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
- { 0x00802001, 0x2d800021, 0x00b10740, 0x00000000 },
- { 0x00802001, 0x2dc00021, 0x00b10780, 0x00000000 },
- { 0x00802001, 0x2e000021, 0x00b107c0, 0x00000000 },
- { 0x00802001, 0x2e400021, 0x00b10800, 0x00000000 },
- { 0x00802001, 0x2e800021, 0x00b10840, 0x00000000 },
- { 0x00802001, 0x2ec00021, 0x00b10880, 0x00000000 },
- { 0x00802001, 0x2f000021, 0x00b108c0, 0x00000000 },
- { 0x00802001, 0x2f400021, 0x00b10900, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00010001 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x01000005, 0x20000d3c, 0x00210a54, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000be },
- { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000090 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
- { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
- { 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
- { 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
- { 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
- { 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
- { 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
- { 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
- { 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
- { 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
- { 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
- { 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
- { 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
- { 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
- { 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
- { 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
- { 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
- { 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
- { 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
- { 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
- { 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
- { 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
- { 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
- { 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
- { 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
- { 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
- { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
- { 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
- { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
- { 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
- { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
- { 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000005c },
- { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a007 },
- { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
- { 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
- { 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
- { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
- { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
- { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
- { 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
- { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
- { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
- { 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
- { 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
- { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
- { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
- { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
- { 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
- { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a007 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a007 },
- { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
- { 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
- { 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
- { 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
- { 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
- { 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
- { 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
- { 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
- { 0x80800042, 0x27402529, 0x00b10740, 0x00b10d80 },
- { 0x80800042, 0x27602529, 0x00b10760, 0x00b10da0 },
- { 0x80800042, 0x27802529, 0x00b10780, 0x00b10dc0 },
- { 0x80800042, 0x27a02529, 0x00b107a0, 0x00b10de0 },
- { 0x80800042, 0x27c02529, 0x00b107c0, 0x00b10e00 },
- { 0x80800042, 0x27e02529, 0x00b107e0, 0x00b10e20 },
- { 0x80800042, 0x28002529, 0x00b10800, 0x00b10e40 },
- { 0x80800042, 0x28202529, 0x00b10820, 0x00b10e60 },
- { 0x80800042, 0x28402529, 0x00b10840, 0x00b10e80 },
- { 0x80800042, 0x28602529, 0x00b10860, 0x00b10ea0 },
- { 0x80800042, 0x28802529, 0x00b10880, 0x00b10ec0 },
- { 0x80800042, 0x28a02529, 0x00b108a0, 0x00b10ee0 },
- { 0x80800042, 0x28c02529, 0x00b108c0, 0x00b10f00 },
- { 0x80800042, 0x28e02529, 0x00b108e0, 0x00b10f20 },
- { 0x80800042, 0x29002529, 0x00b10900, 0x00b10f40 },
- { 0x80800042, 0x29202529, 0x00b10920, 0x00b10f60 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x01000005, 0x20000d3c, 0x00210a54, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000009c },
- { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000080 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24401d29, 0x408d0400, 0x0288a005 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0288a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25401d29, 0x408d0400, 0x0218a005 },
- { 0x00800031, 0x26801d29, 0x408d0400, 0x0218a006 },
- { 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
- { 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
- { 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
- { 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
- { 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
- { 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
- { 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
- { 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
- { 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
- { 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
- { 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
- { 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
- { 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
- { 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
- { 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
- { 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
- { 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
- { 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
- { 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000062 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x24401d29, 0x408d0400, 0x0248a005 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
- { 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
- { 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
- { 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
- { 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
- { 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a },
- { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24401d29, 0x408d0400, 0x0288a005 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0288a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25401d29, 0x408d0400, 0x0218a005 },
- { 0x00800031, 0x26801d29, 0x408d0400, 0x0218a006 },
- { 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
- { 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
- { 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
- { 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
- { 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
- { 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
- { 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
- { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
- { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
- { 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
- { 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x24801d29, 0x408d0400, 0x0248a005 },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a006 },
- { 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
- { 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
- { 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
- { 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
- { 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
- { 0x00800001, 0x2d800231, 0x00b20940, 0x00000000 },
- { 0x00800001, 0x2d900231, 0x00b20960, 0x00000000 },
- { 0x00800001, 0x2da00231, 0x00b20980, 0x00000000 },
- { 0x00800001, 0x2db00231, 0x00b209a0, 0x00000000 },
- { 0x00800001, 0x2dc00231, 0x00b209c0, 0x00000000 },
- { 0x00800001, 0x2dd00231, 0x00b209e0, 0x00000000 },
- { 0x00800001, 0x2de00231, 0x00b20a00, 0x00000000 },
- { 0x00800001, 0x2df00231, 0x00b20a20, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a54, 0x00020002 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x01000005, 0x20000d3c, 0x00210a54, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000009c },
- { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000080 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24401d29, 0x408d0400, 0x0288a008 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0288a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25401d29, 0x408d0400, 0x0218a008 },
- { 0x00800031, 0x26801d29, 0x408d0400, 0x0218a009 },
- { 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
- { 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
- { 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
- { 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
- { 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
- { 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
- { 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
- { 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
- { 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
- { 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
- { 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
- { 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
- { 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
- { 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
- { 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
- { 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
- { 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
- { 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
- { 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000062 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x24401d29, 0x408d0400, 0x0248a008 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a009 },
- { 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
- { 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
- { 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
- { 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
- { 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a },
- { 0x01000005, 0x20000d3c, 0x00210a56, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24401d29, 0x408d0400, 0x0288a008 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0288a009 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25401d29, 0x408d0400, 0x0218a008 },
- { 0x00800031, 0x26801d29, 0x408d0400, 0x0218a009 },
- { 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
- { 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
- { 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
- { 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
- { 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
- { 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
- { 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
- { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
- { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
- { 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
- { 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x24801d29, 0x408d0400, 0x0248a008 },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a009 },
- { 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
- { 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
- { 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
- { 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
- { 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
- { 0x80800042, 0x29404529, 0x00b10940, 0x00b10d80 },
- { 0x80800042, 0x29604529, 0x00b10960, 0x00b10d90 },
- { 0x80800042, 0x29804529, 0x00b10980, 0x00b10da0 },
- { 0x80800042, 0x29a04529, 0x00b109a0, 0x00b10db0 },
- { 0x80800042, 0x29c04529, 0x00b109c0, 0x00b10dc0 },
- { 0x80800042, 0x29e04529, 0x00b109e0, 0x00b10dd0 },
- { 0x80800042, 0x2a004529, 0x00b10a00, 0x00b10de0 },
- { 0x80800042, 0x2a204529, 0x00b10a20, 0x00b10df0 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
- { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
- { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
- { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
- { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
- { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
- { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
- { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
- { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
- { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
- { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
- { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
- { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
- { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
- { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
- { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
- { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
- { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
- { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
- { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
- { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
- { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
- { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
- { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
- { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
- { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
- { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
- { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
- { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
- { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
- { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
- { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/src/shaders/mpeg2/vld/frame_frame_pred_forward.g4a b/src/shaders/mpeg2/vld/frame_frame_pred_forward.g4a
deleted file mode 100644
index 22f4804..0000000
--- a/src/shaders/mpeg2/vld/frame_frame_pred_forward.g4a
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g32: message descriptor for reading reference data
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data */
-mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
-mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
-mov (1) g126.8<1>UD ip {align1};
-mov (1) ip g21.0<1,1,1>UD {align1};
-
-//Y, (x', y') = (x, y) + (motion_vector.x >> 1, motion_vector.y >> 1)
-asr (2) g31.14<1>W g82.16<2,2,1>W 1W {align1};
-add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-define(`input_surface', `4')
-define(`mv1', `g82.16')
-define(`mv2', `g82.18')
-include(`motion_frame_y.g4i')
-
-//UV, (x', y') = (x >> 1, y >> 1) + (motion_vector.x >> 2, motion_vector.y >> 2)
-shr (2) g31.0<1>UD g31.0<2,2,1>UD 1UD {align1};
-asr (2) g31.14<1>W g82.16<2,2,1>W 2W {align1};
-add (2) g32.0<1>UD g31.0<2,2,1>UD g31.14<2,2,1>W {align1};
-define(`input_surface1', `5')
-define(`input_surface2', `6')
-include(`motion_frame_uv.g4i')
-
-include(`addidct.g4i')
-send (16) 0 acc0<1>UW g0<8,8,1>UW
- thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/src/shaders/mpeg2/vld/frame_frame_pred_forward.g4b b/src/shaders/mpeg2/vld/frame_frame_pred_forward.g4b
deleted file mode 100644
index 4bf6c93..0000000
--- a/src/shaders/mpeg2/vld/frame_frame_pred_forward.g4b
+++ /dev/null
@@ -1,369 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
- { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x01000005, 0x20000d3c, 0x00210a50, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000005f },
- { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
- { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
- { 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
- { 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
- { 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
- { 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
- { 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
- { 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
- { 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
- { 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
- { 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
- { 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
- { 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
- { 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
- { 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
- { 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
- { 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
- { 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
- { 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
- { 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
- { 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
- { 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
- { 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
- { 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
- { 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000043 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
- { 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
- { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
- { 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
- { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
- { 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
- { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
- { 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000002e },
- { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x008d0400, 0x0411a004 },
- { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
- { 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
- { 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
- { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
- { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
- { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
- { 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
- { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
- { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
- { 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
- { 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
- { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
- { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
- { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
- { 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
- { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x008d0400, 0x0418a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x008d0400, 0x0418a004 },
- { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
- { 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
- { 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
- { 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
- { 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
- { 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
- { 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
- { 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x01000005, 0x20000d3c, 0x00210a50, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000004e },
- { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000040 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24401d29, 0x008d0400, 0x0418a005 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0418a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25401d29, 0x008d0400, 0x0411a005 },
- { 0x00800031, 0x26801d29, 0x008d0400, 0x0411a006 },
- { 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
- { 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
- { 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
- { 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
- { 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
- { 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
- { 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
- { 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
- { 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
- { 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
- { 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
- { 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
- { 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
- { 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
- { 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
- { 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
- { 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
- { 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
- { 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x24401d29, 0x008d0400, 0x0414a005 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0414a006 },
- { 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
- { 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
- { 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
- { 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
- { 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000025 },
- { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24401d29, 0x008d0400, 0x0418a005 },
- { 0x00800031, 0x25801d29, 0x008d0400, 0x0418a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25401d29, 0x008d0400, 0x0411a005 },
- { 0x00800031, 0x26801d29, 0x008d0400, 0x0411a006 },
- { 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
- { 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
- { 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
- { 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
- { 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
- { 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
- { 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
- { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
- { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
- { 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
- { 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x24801d29, 0x008d0400, 0x0414a005 },
- { 0x00800031, 0x25001d29, 0x008d0400, 0x0414a006 },
- { 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
- { 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
- { 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
- { 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
- { 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
- { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
- { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
- { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
- { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
- { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
- { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
- { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
- { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
- { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
- { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
- { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
- { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
- { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
- { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
- { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
- { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
- { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
- { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
- { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
- { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
- { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
- { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
- { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
- { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
- { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
- { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
- { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
- { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
- { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
- { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
- { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/src/shaders/mpeg2/vld/frame_frame_pred_forward.g4b.gen5 b/src/shaders/mpeg2/vld/frame_frame_pred_forward.g4b.gen5
deleted file mode 100644
index 9d89488..0000000
--- a/src/shaders/mpeg2/vld/frame_frame_pred_forward.g4b.gen5
+++ /dev/null
@@ -1,369 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000001, 0x2fc80001, 0x00001400, 0x00000000 },
- { 0x00000001, 0x34000020, 0x002102a0, 0x00000000 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00010001 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x01000005, 0x20000d3c, 0x00210a50, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000be },
- { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000090 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
- { 0x00800040, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x00800040, 0x27604629, 0x00b104e0, 0x00b104e1 },
- { 0x00800040, 0x27804629, 0x00b10500, 0x00b10501 },
- { 0x00800040, 0x27a04629, 0x00b10520, 0x00b10521 },
- { 0x00800040, 0x27c04629, 0x00b10540, 0x00b10541 },
- { 0x00800040, 0x27e04629, 0x00b10560, 0x00b10561 },
- { 0x00800040, 0x28004629, 0x00b10580, 0x00b10581 },
- { 0x00800040, 0x28204629, 0x00b105a0, 0x00b105a1 },
- { 0x00800040, 0x28404629, 0x00b105c0, 0x00b105c1 },
- { 0x00800040, 0x28604629, 0x00b105e0, 0x00b105e1 },
- { 0x00800040, 0x28804629, 0x00b10600, 0x00b10601 },
- { 0x00800040, 0x28a04629, 0x00b10620, 0x00b10621 },
- { 0x00800040, 0x28c04629, 0x00b10640, 0x00b10641 },
- { 0x00800040, 0x28e04629, 0x00b10660, 0x00b10661 },
- { 0x00800040, 0x29004629, 0x00b10680, 0x00b10681 },
- { 0x00800040, 0x29204629, 0x00b106a0, 0x00b106a1 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e0 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10500 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10520 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10540 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10560 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10580 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a0 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c0 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e0 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10600 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10620 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10640 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10660 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10680 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a0 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c0 },
- { 0x00800040, 0x27404529, 0x00b10740, 0x00b104e1 },
- { 0x00800040, 0x27604529, 0x00b10760, 0x00b10501 },
- { 0x00800040, 0x27804529, 0x00b10780, 0x00b10521 },
- { 0x00800040, 0x27a04529, 0x00b107a0, 0x00b10541 },
- { 0x00800040, 0x27c04529, 0x00b107c0, 0x00b10561 },
- { 0x00800040, 0x27e04529, 0x00b107e0, 0x00b10581 },
- { 0x00800040, 0x28004529, 0x00b10800, 0x00b105a1 },
- { 0x00800040, 0x28204529, 0x00b10820, 0x00b105c1 },
- { 0x00800040, 0x28404529, 0x00b10840, 0x00b105e1 },
- { 0x00800040, 0x28604529, 0x00b10860, 0x00b10601 },
- { 0x00800040, 0x28804529, 0x00b10880, 0x00b10621 },
- { 0x00800040, 0x28a04529, 0x00b108a0, 0x00b10641 },
- { 0x00800040, 0x28c04529, 0x00b108c0, 0x00b10661 },
- { 0x00800040, 0x28e04529, 0x00b108e0, 0x00b10681 },
- { 0x00800040, 0x29004529, 0x00b10900, 0x00b106a1 },
- { 0x00800040, 0x29204529, 0x00b10920, 0x00b106c1 },
- { 0x80800008, 0x27402d29, 0x00b10740, 0x00020002 },
- { 0x80800008, 0x27602d29, 0x00b10760, 0x00020002 },
- { 0x80800008, 0x27802d29, 0x00b10780, 0x00020002 },
- { 0x80800008, 0x27a02d29, 0x00b107a0, 0x00020002 },
- { 0x80800008, 0x27c02d29, 0x00b107c0, 0x00020002 },
- { 0x80800008, 0x27e02d29, 0x00b107e0, 0x00020002 },
- { 0x80800008, 0x28002d29, 0x00b10800, 0x00020002 },
- { 0x80800008, 0x28202d29, 0x00b10820, 0x00020002 },
- { 0x80800008, 0x28402d29, 0x00b10840, 0x00020002 },
- { 0x80800008, 0x28602d29, 0x00b10860, 0x00020002 },
- { 0x80800008, 0x28802d29, 0x00b10880, 0x00020002 },
- { 0x80800008, 0x28a02d29, 0x00b108a0, 0x00020002 },
- { 0x80800008, 0x28c02d29, 0x00b108c0, 0x00020002 },
- { 0x80800008, 0x28e02d29, 0x00b108e0, 0x00020002 },
- { 0x80800008, 0x29002d29, 0x00b10900, 0x00020002 },
- { 0x80800008, 0x29202d29, 0x00b10920, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000086 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104c1 },
- { 0x80800042, 0x27604629, 0x00b104e0, 0x00b104e1 },
- { 0x80800042, 0x27804629, 0x00b10500, 0x00b10501 },
- { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10521 },
- { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10541 },
- { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10561 },
- { 0x80800042, 0x28004629, 0x00b10580, 0x00b10581 },
- { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105a1 },
- { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105c1 },
- { 0x80800042, 0x28604629, 0x00b105e0, 0x00b105e1 },
- { 0x80800042, 0x28804629, 0x00b10600, 0x00b10601 },
- { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10621 },
- { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10641 },
- { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10661 },
- { 0x80800042, 0x29004629, 0x00b10680, 0x00b10681 },
- { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106a1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000005c },
- { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x26c01d29, 0x408d0400, 0x0218a004 },
- { 0x80800042, 0x27404629, 0x00b104c0, 0x00b104e0 },
- { 0x80800042, 0x27604629, 0x00b104e0, 0x00b10500 },
- { 0x80800042, 0x27804629, 0x00b10500, 0x00b10520 },
- { 0x80800042, 0x27a04629, 0x00b10520, 0x00b10540 },
- { 0x80800042, 0x27c04629, 0x00b10540, 0x00b10560 },
- { 0x80800042, 0x27e04629, 0x00b10560, 0x00b10580 },
- { 0x80800042, 0x28004629, 0x00b10580, 0x00b105a0 },
- { 0x80800042, 0x28204629, 0x00b105a0, 0x00b105c0 },
- { 0x80800042, 0x28404629, 0x00b105c0, 0x00b105e0 },
- { 0x80800042, 0x28604629, 0x00b105e0, 0x00b10600 },
- { 0x80800042, 0x28804629, 0x00b10600, 0x00b10620 },
- { 0x80800042, 0x28a04629, 0x00b10620, 0x00b10640 },
- { 0x80800042, 0x28c04629, 0x00b10640, 0x00b10660 },
- { 0x80800042, 0x28e04629, 0x00b10660, 0x00b10680 },
- { 0x80800042, 0x29004629, 0x00b10680, 0x00b106a0 },
- { 0x80800042, 0x29204629, 0x00b106a0, 0x00b106c0 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24c01d29, 0x408d0400, 0x0288a004 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00800031, 0x25c01d29, 0x408d0400, 0x0288a004 },
- { 0x00800001, 0x27400229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x27600229, 0x00b104e0, 0x00000000 },
- { 0x00800001, 0x27800229, 0x00b10500, 0x00000000 },
- { 0x00800001, 0x27a00229, 0x00b10520, 0x00000000 },
- { 0x00800001, 0x27c00229, 0x00b10540, 0x00000000 },
- { 0x00800001, 0x27e00229, 0x00b10560, 0x00000000 },
- { 0x00800001, 0x28000229, 0x00b10580, 0x00000000 },
- { 0x00800001, 0x28200229, 0x00b105a0, 0x00000000 },
- { 0x00800001, 0x28400229, 0x00b105c0, 0x00000000 },
- { 0x00800001, 0x28600229, 0x00b105e0, 0x00000000 },
- { 0x00800001, 0x28800229, 0x00b10600, 0x00000000 },
- { 0x00800001, 0x28a00229, 0x00b10620, 0x00000000 },
- { 0x00800001, 0x28c00229, 0x00b10640, 0x00000000 },
- { 0x00800001, 0x28e00229, 0x00b10660, 0x00000000 },
- { 0x00800001, 0x29000229, 0x00b10680, 0x00000000 },
- { 0x00800001, 0x29200229, 0x00b106a0, 0x00000000 },
- { 0x00200008, 0x23e00c21, 0x004503e0, 0x00000001 },
- { 0x0020000c, 0x23ee3dad, 0x00450a50, 0x00020002 },
- { 0x00200040, 0x24003421, 0x004503e0, 0x004503ee },
- { 0x01000005, 0x20000d3c, 0x00210a50, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000009c },
- { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000080 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24401d29, 0x408d0400, 0x0288a005 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0288a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25401d29, 0x408d0400, 0x0218a005 },
- { 0x00800031, 0x26801d29, 0x408d0400, 0x0218a006 },
- { 0x00600040, 0x29404629, 0x008d0440, 0x008d0441 },
- { 0x00600040, 0x29504629, 0x008d0460, 0x008d0461 },
- { 0x00600040, 0x29604629, 0x008d0480, 0x008d0481 },
- { 0x00600040, 0x29704629, 0x008d04a0, 0x008d04a1 },
- { 0x00600040, 0x29804629, 0x008d04c0, 0x008d04c1 },
- { 0x00600040, 0x29904629, 0x008d04e0, 0x008d04e1 },
- { 0x00600040, 0x29a04629, 0x008d0500, 0x008d0501 },
- { 0x00600040, 0x29b04629, 0x008d0520, 0x008d0521 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0460 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0480 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a0 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c0 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e0 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0500 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0520 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0540 },
- { 0x00600040, 0x29404529, 0x008d0940, 0x008d0461 },
- { 0x00600040, 0x29504529, 0x008d0950, 0x008d0481 },
- { 0x00600040, 0x29604529, 0x008d0960, 0x008d04a1 },
- { 0x00600040, 0x29704529, 0x008d0970, 0x008d04c1 },
- { 0x00600040, 0x29804529, 0x008d0980, 0x008d04e1 },
- { 0x00600040, 0x29904529, 0x008d0990, 0x008d0501 },
- { 0x00600040, 0x29a04529, 0x008d09a0, 0x008d0521 },
- { 0x00600040, 0x29b04529, 0x008d09b0, 0x008d0541 },
- { 0x00600040, 0x29c04629, 0x008d0580, 0x008d0581 },
- { 0x00600040, 0x29d04629, 0x008d05a0, 0x008d05a1 },
- { 0x00600040, 0x29e04629, 0x008d05c0, 0x008d05c1 },
- { 0x00600040, 0x29f04629, 0x008d05e0, 0x008d05e1 },
- { 0x00600040, 0x2a004629, 0x008d0600, 0x008d0601 },
- { 0x00600040, 0x2a104629, 0x008d0620, 0x008d0621 },
- { 0x00600040, 0x2a204629, 0x008d0640, 0x008d0641 },
- { 0x00600040, 0x2a304629, 0x008d0660, 0x008d0661 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a0 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c0 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e0 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0600 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0620 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0640 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0660 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0680 },
- { 0x00600040, 0x29c04529, 0x008d09c0, 0x008d05a1 },
- { 0x00600040, 0x29d04529, 0x008d09d0, 0x008d05c1 },
- { 0x00600040, 0x29e04529, 0x008d09e0, 0x008d05e1 },
- { 0x00600040, 0x29f04529, 0x008d09f0, 0x008d0601 },
- { 0x00600040, 0x2a004529, 0x008d0a00, 0x008d0621 },
- { 0x00600040, 0x2a104529, 0x008d0a10, 0x008d0641 },
- { 0x00600040, 0x2a204529, 0x008d0a20, 0x008d0661 },
- { 0x00600040, 0x2a304529, 0x008d0a30, 0x008d0681 },
- { 0x00800008, 0x29402d29, 0x00b10940, 0x00020002 },
- { 0x00800008, 0x29602d29, 0x00b10960, 0x00020002 },
- { 0x00800008, 0x29802d29, 0x00b10980, 0x00020002 },
- { 0x00800008, 0x29a02d29, 0x00b109a0, 0x00020002 },
- { 0x00800008, 0x29c02d29, 0x00b109c0, 0x00020002 },
- { 0x00800008, 0x29e02d29, 0x00b109e0, 0x00020002 },
- { 0x00800008, 0x2a002d29, 0x00b10a00, 0x00020002 },
- { 0x00800008, 0x2a202d29, 0x00b10a20, 0x00020002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000062 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x24401d29, 0x408d0400, 0x0248a005 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0248a006 },
- { 0x00800042, 0x29404629, 0x00ad0440, 0x00ad0441 },
- { 0x00800042, 0x29604629, 0x00ad0460, 0x00ad0461 },
- { 0x00800042, 0x29804629, 0x00ad0480, 0x00ad0481 },
- { 0x00800042, 0x29a04629, 0x00ad04a0, 0x00ad04a1 },
- { 0x00800042, 0x29c04629, 0x00ad0580, 0x00ad0581 },
- { 0x00800042, 0x29e04629, 0x00ad05a0, 0x00ad05a1 },
- { 0x00800042, 0x2a004629, 0x00ad05c0, 0x00ad05c1 },
- { 0x00800042, 0x2a204629, 0x00ad05e0, 0x00ad05e1 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a },
- { 0x01000005, 0x20000d3c, 0x00210a52, 0x00000002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007001f },
- { 0x00800031, 0x24401d29, 0x408d0400, 0x0288a005 },
- { 0x00800031, 0x25801d29, 0x408d0400, 0x0288a006 },
- { 0x00000040, 0x24040c21, 0x00210404, 0x00000008 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0000001f },
- { 0x00800031, 0x25401d29, 0x408d0400, 0x0218a005 },
- { 0x00800031, 0x26801d29, 0x408d0400, 0x0218a006 },
- { 0x00600042, 0x29404629, 0x008d0440, 0x008d0460 },
- { 0x00600042, 0x29504629, 0x008d0460, 0x008d0480 },
- { 0x00600042, 0x29604629, 0x008d0480, 0x008d04a0 },
- { 0x00600042, 0x29704629, 0x008d04a0, 0x008d04c0 },
- { 0x00600042, 0x29804629, 0x008d04c0, 0x008d04e0 },
- { 0x00600042, 0x29904629, 0x008d04e0, 0x008d0500 },
- { 0x00600042, 0x29a04629, 0x008d0500, 0x008d0520 },
- { 0x00600042, 0x29b04629, 0x008d0520, 0x008d0540 },
- { 0x00600042, 0x29c04629, 0x008d0580, 0x008d05a0 },
- { 0x00600042, 0x29d04629, 0x008d05a0, 0x008d05c0 },
- { 0x00600042, 0x29e04629, 0x008d05c0, 0x008d05e0 },
- { 0x00600042, 0x29f04629, 0x008d05e0, 0x008d0600 },
- { 0x00600042, 0x2a004629, 0x008d0600, 0x008d0620 },
- { 0x00600042, 0x2a104629, 0x008d0620, 0x008d0640 },
- { 0x00600042, 0x2a204629, 0x008d0640, 0x008d0660 },
- { 0x00600042, 0x2a304629, 0x008d0660, 0x008d0680 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x24080061, 0x00000000, 0x0007000f },
- { 0x00800031, 0x24801d29, 0x408d0400, 0x0248a005 },
- { 0x00800031, 0x25001d29, 0x408d0400, 0x0248a006 },
- { 0x00800001, 0x29400229, 0x00ad0480, 0x00000000 },
- { 0x00800001, 0x29600229, 0x00ad04a0, 0x00000000 },
- { 0x00800001, 0x29800229, 0x00ad04c0, 0x00000000 },
- { 0x00800001, 0x29a00229, 0x00ad04e0, 0x00000000 },
- { 0x00800001, 0x29c00229, 0x00ad0500, 0x00000000 },
- { 0x00800001, 0x29e00229, 0x00ad0520, 0x00000000 },
- { 0x00800001, 0x2a000229, 0x00ad0540, 0x00000000 },
- { 0x00800001, 0x2a200229, 0x00ad0560, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10a80, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10aa0, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10ac0, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10ae0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10b00, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10b20, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10b40, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10b60, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10b80, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10ba0, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10bc0, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10be0, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c00, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10c20, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00800040, 0x274045ad, 0x00b10a60, 0x00b20740 },
- { 0x00800040, 0x276045ad, 0x00b10b60, 0x00b20760 },
- { 0x00800040, 0x278045ad, 0x00b10a80, 0x00b20780 },
- { 0x00800040, 0x27a045ad, 0x00b10b80, 0x00b207a0 },
- { 0x00800040, 0x27c045ad, 0x00b10aa0, 0x00b207c0 },
- { 0x00800040, 0x27e045ad, 0x00b10ba0, 0x00b207e0 },
- { 0x00800040, 0x280045ad, 0x00b10ac0, 0x00b20800 },
- { 0x00800040, 0x282045ad, 0x00b10bc0, 0x00b20820 },
- { 0x00800040, 0x284045ad, 0x00b10ae0, 0x00b20840 },
- { 0x00800040, 0x286045ad, 0x00b10be0, 0x00b20860 },
- { 0x00800040, 0x288045ad, 0x00b10b00, 0x00b20880 },
- { 0x00800040, 0x28a045ad, 0x00b10c00, 0x00b208a0 },
- { 0x00800040, 0x28c045ad, 0x00b10b20, 0x00b208c0 },
- { 0x00800040, 0x28e045ad, 0x00b10c20, 0x00b208e0 },
- { 0x00800040, 0x290045ad, 0x00b10b40, 0x00b20900 },
- { 0x00800040, 0x292045ad, 0x00b10c40, 0x00b20920 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x474001b1, 0x00b10740, 0x00000000 },
- { 0x80800001, 0x476001b1, 0x00b10760, 0x00000000 },
- { 0x80800001, 0x478001b1, 0x00b10780, 0x00000000 },
- { 0x80800001, 0x47a001b1, 0x00b107a0, 0x00000000 },
- { 0x80800001, 0x47c001b1, 0x00b107c0, 0x00000000 },
- { 0x80800001, 0x47e001b1, 0x00b107e0, 0x00000000 },
- { 0x80800001, 0x480001b1, 0x00b10800, 0x00000000 },
- { 0x80800001, 0x482001b1, 0x00b10820, 0x00000000 },
- { 0x80800001, 0x484001b1, 0x00b10840, 0x00000000 },
- { 0x80800001, 0x486001b1, 0x00b10860, 0x00000000 },
- { 0x80800001, 0x488001b1, 0x00b10880, 0x00000000 },
- { 0x80800001, 0x48a001b1, 0x00b108a0, 0x00000000 },
- { 0x80800001, 0x48c001b1, 0x00b108c0, 0x00000000 },
- { 0x80800001, 0x48e001b1, 0x00b108e0, 0x00000000 },
- { 0x80800001, 0x490001b1, 0x00b10900, 0x00000000 },
- { 0x80800001, 0x492001b1, 0x00b10920, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20740, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20760, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20780, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b207a0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b207c0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b207e0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20800, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20820, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20840, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20860, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20880, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b208a0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b208c0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b208e0, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20900, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20920, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01c21, 0x004503e0, 0x00000001 },
- { 0x00800040, 0x294025ad, 0x00b10c60, 0x00b10940 },
- { 0x00800040, 0x296025ad, 0x00b10c80, 0x00b10960 },
- { 0x00800040, 0x298025ad, 0x00b10ca0, 0x00b10980 },
- { 0x00800040, 0x29a025ad, 0x00b10cc0, 0x00b109a0 },
- { 0x80800001, 0x494001b1, 0x00b10940, 0x00000000 },
- { 0x80800001, 0x496001b1, 0x00b10960, 0x00000000 },
- { 0x80800001, 0x498001b1, 0x00b10980, 0x00000000 },
- { 0x80800001, 0x49a001b1, 0x00b109a0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20940, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20960, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20980, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b209a0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
- { 0x00800040, 0x29c025a9, 0x00b10ce0, 0x00b109c0 },
- { 0x00800040, 0x29e025a9, 0x00b10d00, 0x00b109e0 },
- { 0x00800040, 0x2a0025a9, 0x00b10d20, 0x00b10a00 },
- { 0x00800040, 0x2a2025a9, 0x00b10d40, 0x00b10a20 },
- { 0x80800001, 0x49c001b1, 0x00b109c0, 0x00000000 },
- { 0x80800001, 0x49e001b1, 0x00b109e0, 0x00000000 },
- { 0x80800001, 0x4a0001b1, 0x00b10a00, 0x00000000 },
- { 0x80800001, 0x4a2001b1, 0x00b10a20, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b209c0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b209e0, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a00, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20a20, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/src/shaders/mpeg2/vld/frame_intra.g4a b/src/shaders/mpeg2/vld/frame_intra.g4a
deleted file mode 100644
index cf12a44..0000000
--- a/src/shaders/mpeg2/vld/frame_intra.g4a
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/*
- GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT tab
- g31: read and write message descriptor
- g32~g55:DCT data
- g58~g81:reference data
- g82: thread payload
- g83~g106:IDCT data
-*/
-
-mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
-mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
-//shl (1) g31.4<1>UD g31.4<1,1,1>UD 1UD {align1};
-
-include(`iq_intra.g4i')
-
-//defined for idct
-define(`ROW_SHIFT', `11UD')
-define(`ROW_ADD', `0x400UD')
-define(`COL_SHIFT', `20UD')
-define(`COL_ADD', `0x80000UD')
-
-mov (1) a0.0<1>UD 0x06F006E0UD {align1}; //0x06F006E0UD+0x00200020UD=0x07100700UD (g56.0 and g56.16)
-
-//Y0
-mov (1) g125.0<1>UD ip {align1};
-jmpi IDCT_START;
-add (8) g83.0<1>W g32.0<16,8,2>W 128UW {align1};
-add (8) g84.0<1>W g33.0<16,8,2>W 128UW {align1};
-add (8) g85.0<1>W g34.0<16,8,2>W 128UW {align1};
-add (8) g86.0<1>W g35.0<16,8,2>W 128UW {align1};
-add (8) g87.0<1>W g36.0<16,8,2>W 128UW {align1};
-add (8) g88.0<1>W g37.0<16,8,2>W 128UW {align1};
-add (8) g89.0<1>W g38.0<16,8,2>W 128UW {align1};
-add (8) g90.0<1>W g39.0<16,8,2>W 128UW {align1};
-
-//Y1
-mov (1) g125.0<1>UD ip {align1};
-jmpi IDCT_START;
-add (8) g83.16<1>W g32.0<16,8,2>W 128UW {align1};
-add (8) g84.16<1>W g33.0<16,8,2>W 128UW {align1};
-add (8) g85.16<1>W g34.0<16,8,2>W 128UW {align1};
-add (8) g86.16<1>W g35.0<16,8,2>W 128UW {align1};
-add (8) g87.16<1>W g36.0<16,8,2>W 128UW {align1};
-add (8) g88.16<1>W g37.0<16,8,2>W 128UW {align1};
-add (8) g89.16<1>W g38.0<16,8,2>W 128UW {align1};
-add (8) g90.16<1>W g39.0<16,8,2>W 128UW {align1};
-
-//Y2
-mov (1) g125.0<1>UD ip {align1};
-jmpi IDCT_START;
-add (8) g91.0<1>W g32.0<16,8,2>W 128UW {align1};
-add (8) g92.0<1>W g33.0<16,8,2>W 128UW {align1};
-add (8) g93.0<1>W g34.0<16,8,2>W 128UW {align1};
-add (8) g94.0<1>W g35.0<16,8,2>W 128UW {align1};
-add (8) g95.0<1>W g36.0<16,8,2>W 128UW {align1};
-add (8) g96.0<1>W g37.0<16,8,2>W 128UW {align1};
-add (8) g97.0<1>W g38.0<16,8,2>W 128UW {align1};
-add (8) g98.0<1>W g39.0<16,8,2>W 128UW {align1};
-
-//Y3
-mov (1) g125.0<1>UD ip {align1};
-jmpi IDCT_START;
-add (8) g91.16<1>W g32.0<16,8,2>W 128UW {align1};
-add (8) g92.16<1>W g33.0<16,8,2>W 128UW {align1};
-add (8) g93.16<1>W g34.0<16,8,2>W 128UW {align1};
-add (8) g94.16<1>W g35.0<16,8,2>W 128UW {align1};
-add (8) g95.16<1>W g36.0<16,8,2>W 128UW {align1};
-add (8) g96.16<1>W g37.0<16,8,2>W 128UW {align1};
-add (8) g97.16<1>W g38.0<16,8,2>W 128UW {align1};
-add (8) g98.16<1>W g39.0<16,8,2>W 128UW {align1};
-
-//U
-mov (1) g125.0<1>UD ip {align1};
-jmpi IDCT_START;
-add (16) g99.0<1>W g32.0<16,8,2>W 128UW {align1};
-add (16) g100.0<1>W g34.0<16,8,2>W 128UW {align1};
-add (16) g101.0<1>W g36.0<16,8,2>W 128UW {align1};
-add (16) g102.0<1>W g38.0<16,8,2>W 128UW {align1};
-
-//V
-mov (1) g125.0<1>UD ip {align1};
-jmpi IDCT_START;
-add (16) g103.0<1>W g32.0<16,8,2>W 128UW {align1};
-add (16) g104.0<1>W g34.0<16,8,2>W 128UW {align1};
-add (16) g105.0<1>W g36.0<16,8,2>W 128UW {align1};
-add (16) g106.0<1>W g38.0<16,8,2>W 128UW {align1};
-
-//send msg
-mov (1) g31.8<1>UD 0x00F000FUD {align1};
-mov.sat (16) g83.0<2>UB g83.0<16,16,1>W {align1};
-mov.sat (16) g84.0<2>UB g84.0<16,16,1>W {align1};
-mov.sat (16) g85.0<2>UB g85.0<16,16,1>W {align1};
-mov.sat (16) g86.0<2>UB g86.0<16,16,1>W {align1};
-mov.sat (16) g87.0<2>UB g87.0<16,16,1>W {align1};
-mov.sat (16) g88.0<2>UB g88.0<16,16,1>W {align1};
-mov.sat (16) g89.0<2>UB g89.0<16,16,1>W {align1};
-mov.sat (16) g90.0<2>UB g90.0<16,16,1>W {align1};
-mov.sat (16) g91.0<2>UB g91.0<16,16,1>W {align1};
-mov.sat (16) g92.0<2>UB g92.0<16,16,1>W {align1};
-mov.sat (16) g93.0<2>UB g93.0<16,16,1>W {align1};
-mov.sat (16) g94.0<2>UB g94.0<16,16,1>W {align1};
-mov.sat (16) g95.0<2>UB g95.0<16,16,1>W {align1};
-mov.sat (16) g96.0<2>UB g96.0<16,16,1>W {align1};
-mov.sat (16) g97.0<2>UB g97.0<16,16,1>W {align1};
-mov.sat (16) g98.0<2>UB g98.0<16,16,1>W {align1};
-
-and.nz (1) null g82.2<1,1,1>UW 0x20UW{align1};
-(f0) jmpi field_dct;
-
-mov (16) m1.0<1>UB g83.0<16,16,2>UB {align1};
-mov (16) m1.16<1>UB g84.0<16,16,2>UB {align1};
-mov (16) m2.0<1>UB g85.0<16,16,2>UB {align1};
-mov (16) m2.16<1>UB g86.0<16,16,2>UB {align1};
-mov (16) m3.0<1>UB g87.0<16,16,2>UB {align1};
-mov (16) m3.16<1>UB g88.0<16,16,2>UB {align1};
-mov (16) m4.0<1>UB g89.0<16,16,2>UB {align1};
-mov (16) m4.16<1>UB g90.0<16,16,2>UB {align1};
-mov (16) m5.0<1>UB g91.0<16,16,2>UB {align1};
-mov (16) m5.16<1>UB g92.0<16,16,2>UB {align1};
-mov (16) m6.0<1>UB g93.0<16,16,2>UB {align1};
-mov (16) m6.16<1>UB g94.0<16,16,2>UB {align1};
-mov (16) m7.0<1>UB g95.0<16,16,2>UB {align1};
-mov (16) m7.16<1>UB g96.0<16,16,2>UB {align1};
-mov (16) m8.0<1>UB g97.0<16,16,2>UB {align1};
-mov (16) m8.16<1>UB g98.0<16,16,2>UB {align1};
-jmpi write_back;
-
-field_dct:
-mov (16) m1.0<1>UB g83.0<16,16,2>UB {align1};
-mov (16) m1.16<1>UB g91.0<16,16,2>UB {align1};
-mov (16) m2.0<1>UB g84.0<16,16,2>UB {align1};
-mov (16) m2.16<1>UB g92.0<16,16,2>UB {align1};
-mov (16) m3.0<1>UB g85.0<16,16,2>UB {align1};
-mov (16) m3.16<1>UB g93.0<16,16,2>UB {align1};
-mov (16) m4.0<1>UB g86.0<16,16,2>UB {align1};
-mov (16) m4.16<1>UB g94.0<16,16,2>UB {align1};
-mov (16) m5.0<1>UB g87.0<16,16,2>UB {align1};
-mov (16) m5.16<1>UB g95.0<16,16,2>UB {align1};
-mov (16) m6.0<1>UB g88.0<16,16,2>UB {align1};
-mov (16) m6.16<1>UB g96.0<16,16,2>UB {align1};
-mov (16) m7.0<1>UB g89.0<16,16,2>UB {align1};
-mov (16) m7.16<1>UB g97.0<16,16,2>UB {align1};
-mov (16) m8.0<1>UB g90.0<16,16,2>UB {align1};
-mov (16) m8.16<1>UB g98.0<16,16,2>UB {align1};
-
-write_back:
-send (16) 0 acc0<1>UW g31<8,8,1>UW write(0,0,2,0) mlen 9 rlen 0 {align1};
-
-//U
-mov (1) g31.8<1>UD 0x0070007UD { align1 };
-shr (2) g31.0<1>UD g82.12<2,2,1>UW 1D {align1};
-mov.sat (16) g99.0<2>UB g99.0<16,16,1>W {align1};
-mov.sat (16) g100.0<2>UB g100.0<16,16,1>W {align1};
-mov.sat (16) g101.0<2>UB g101.0<16,16,1>W {align1};
-mov.sat (16) g102.0<2>UB g102.0<16,16,1>W {align1};
-
-mov (16) m1.0<1>UB g99.0<16,16,2>UB {align1};
-mov (16) m1.16<1>UB g100.0<16,16,2>UB {align1};
-mov (16) m2.0<1>UB g101.0<16,16,2>UB {align1};
-mov (16) m2.16<1>UB g102.0<16,16,2>UB {align1};
-send (16) 0 acc0<1>UW g31<8,8,1>UW write(1, 0, 2, 0) mlen 3 rlen 0 { align1 };
-
-//V
-mov.sat (16) g103.0<2>UB g103.0<16,16,1>W {align1};
-mov.sat (16) g104.0<2>UB g104.0<16,16,1>W {align1};
-mov.sat (16) g105.0<2>UB g105.0<16,16,1>W {align1};
-mov.sat (16) g106.0<2>UB g106.0<16,16,1>W {align1};
-
-mov (16) m1.0<1>UB g103.0<16,16,2>UB {align1};
-mov (16) m1.16<1>UB g104.0<16,16,2>UB {align1};
-mov (16) m2.0<1>UB g105.0<16,16,2>UB {align1};
-mov (16) m2.16<1>UB g106.0<16,16,2>UB {align1};
-send (16) 0 acc0<1>UW g31<8,8,1>UW write(2, 0, 2, 0) mlen 3 rlen 0 { align1 };
-
-OUT:
-send (16) 0 acc0<1>UW g0<8,8,1>UW
- thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
-
-include(`do_iq_intra.g4i')
-include(`idct.g4i')
diff --git a/src/shaders/mpeg2/vld/frame_intra.g4b b/src/shaders/mpeg2/vld/frame_intra.g4b
deleted file mode 100644
index 4c1c8c4..0000000
--- a/src/shaders/mpeg2/vld/frame_intra.g4b
+++ /dev/null
@@ -1,313 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000005, 0x2da02d29, 0x00210a48, 0x001f001f },
- { 0x00000005, 0x2da42d29, 0x00210a48, 0x60006000 },
- { 0x00000008, 0x2da42d29, 0x00210da4, 0x000d000d },
- { 0x00000001, 0x2da60169, 0x00000000, 0x00080008 },
- { 0x00000008, 0x2da42529, 0x00210da6, 0x00210da4 },
- { 0x01000005, 0x20002d3c, 0x00210a48, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000012 },
- { 0x05000010, 0x20002d3c, 0x00210da0, 0x00090009 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
- { 0x05000010, 0x20002d3c, 0x00210da0, 0x00110011 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x05000010, 0x20002d3c, 0x00210da0, 0x00190019 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
- { 0x00000040, 0x2da03d29, 0x00210da0, 0xffe7ffe7 },
- { 0x00000009, 0x2da02d29, 0x00210da0, 0x00030003 },
- { 0x00000040, 0x2da02d29, 0x00210da0, 0x00400040 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 },
- { 0x00000040, 0x2da03d29, 0x00210da0, 0xfff7fff7 },
- { 0x00000009, 0x2da02d29, 0x00210da0, 0x00010001 },
- { 0x00000040, 0x2da02d29, 0x00210da0, 0x000a000a },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000005 },
- { 0x00000040, 0x2da03d29, 0x00210da0, 0xffefffef },
- { 0x00000009, 0x2da02d29, 0x00210da0, 0x00020002 },
- { 0x00000040, 0x2da02d29, 0x00210da0, 0x001c001c },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000001 },
- { 0x00000009, 0x2da00d29, 0x00210da0, 0x00000001 },
- { 0x00000001, 0x2dc00129, 0x00210da0, 0x00000000 },
- { 0x00800001, 0x2e000229, 0x00b10020, 0x00000000 },
- { 0x00800001, 0x2e200229, 0x00b10030, 0x00000000 },
- { 0x00800001, 0x2e400229, 0x00b10040, 0x00000000 },
- { 0x00800001, 0x2e600229, 0x00b10050, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x03f003e0 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000a1 },
- { 0x00800001, 0x270001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x272001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x274001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x276001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000009b },
- { 0x00800001, 0x278001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x27a001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x27c001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x27e001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000095 },
- { 0x00800001, 0x280001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x282001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x284001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x286001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000008f },
- { 0x00800001, 0x288001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x28a001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x28c001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x28e001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000089 },
- { 0x00800001, 0x290001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x292001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x294001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x296001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000083 },
- { 0x00800001, 0x298001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x29a001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x29c001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x29e001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x06f006e0 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000008f },
- { 0x00600040, 0x2a602dad, 0x00ae0400, 0x00800080 },
- { 0x00600040, 0x2a802dad, 0x00ae0420, 0x00800080 },
- { 0x00600040, 0x2aa02dad, 0x00ae0440, 0x00800080 },
- { 0x00600040, 0x2ac02dad, 0x00ae0460, 0x00800080 },
- { 0x00600040, 0x2ae02dad, 0x00ae0480, 0x00800080 },
- { 0x00600040, 0x2b002dad, 0x00ae04a0, 0x00800080 },
- { 0x00600040, 0x2b202dad, 0x00ae04c0, 0x00800080 },
- { 0x00600040, 0x2b402dad, 0x00ae04e0, 0x00800080 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000085 },
- { 0x00600040, 0x2a702dad, 0x00ae0400, 0x00800080 },
- { 0x00600040, 0x2a902dad, 0x00ae0420, 0x00800080 },
- { 0x00600040, 0x2ab02dad, 0x00ae0440, 0x00800080 },
- { 0x00600040, 0x2ad02dad, 0x00ae0460, 0x00800080 },
- { 0x00600040, 0x2af02dad, 0x00ae0480, 0x00800080 },
- { 0x00600040, 0x2b102dad, 0x00ae04a0, 0x00800080 },
- { 0x00600040, 0x2b302dad, 0x00ae04c0, 0x00800080 },
- { 0x00600040, 0x2b502dad, 0x00ae04e0, 0x00800080 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000007b },
- { 0x00600040, 0x2b602dad, 0x00ae0400, 0x00800080 },
- { 0x00600040, 0x2b802dad, 0x00ae0420, 0x00800080 },
- { 0x00600040, 0x2ba02dad, 0x00ae0440, 0x00800080 },
- { 0x00600040, 0x2bc02dad, 0x00ae0460, 0x00800080 },
- { 0x00600040, 0x2be02dad, 0x00ae0480, 0x00800080 },
- { 0x00600040, 0x2c002dad, 0x00ae04a0, 0x00800080 },
- { 0x00600040, 0x2c202dad, 0x00ae04c0, 0x00800080 },
- { 0x00600040, 0x2c402dad, 0x00ae04e0, 0x00800080 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000071 },
- { 0x00600040, 0x2b702dad, 0x00ae0400, 0x00800080 },
- { 0x00600040, 0x2b902dad, 0x00ae0420, 0x00800080 },
- { 0x00600040, 0x2bb02dad, 0x00ae0440, 0x00800080 },
- { 0x00600040, 0x2bd02dad, 0x00ae0460, 0x00800080 },
- { 0x00600040, 0x2bf02dad, 0x00ae0480, 0x00800080 },
- { 0x00600040, 0x2c102dad, 0x00ae04a0, 0x00800080 },
- { 0x00600040, 0x2c302dad, 0x00ae04c0, 0x00800080 },
- { 0x00600040, 0x2c502dad, 0x00ae04e0, 0x00800080 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000067 },
- { 0x00800040, 0x2c602dad, 0x00ae0400, 0x00800080 },
- { 0x00800040, 0x2c802dad, 0x00ae0440, 0x00800080 },
- { 0x00800040, 0x2ca02dad, 0x00ae0480, 0x00800080 },
- { 0x00800040, 0x2cc02dad, 0x00ae04c0, 0x00800080 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000061 },
- { 0x00800040, 0x2ce02dad, 0x00ae0400, 0x00800080 },
- { 0x00800040, 0x2d002dad, 0x00ae0440, 0x00800080 },
- { 0x00800040, 0x2d202dad, 0x00ae0480, 0x00800080 },
- { 0x00800040, 0x2d402dad, 0x00ae04c0, 0x00800080 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x4a6001b1, 0x00b10a60, 0x00000000 },
- { 0x80800001, 0x4a8001b1, 0x00b10a80, 0x00000000 },
- { 0x80800001, 0x4aa001b1, 0x00b10aa0, 0x00000000 },
- { 0x80800001, 0x4ac001b1, 0x00b10ac0, 0x00000000 },
- { 0x80800001, 0x4ae001b1, 0x00b10ae0, 0x00000000 },
- { 0x80800001, 0x4b0001b1, 0x00b10b00, 0x00000000 },
- { 0x80800001, 0x4b2001b1, 0x00b10b20, 0x00000000 },
- { 0x80800001, 0x4b4001b1, 0x00b10b40, 0x00000000 },
- { 0x80800001, 0x4b6001b1, 0x00b10b60, 0x00000000 },
- { 0x80800001, 0x4b8001b1, 0x00b10b80, 0x00000000 },
- { 0x80800001, 0x4ba001b1, 0x00b10ba0, 0x00000000 },
- { 0x80800001, 0x4bc001b1, 0x00b10bc0, 0x00000000 },
- { 0x80800001, 0x4be001b1, 0x00b10be0, 0x00000000 },
- { 0x80800001, 0x4c0001b1, 0x00b10c00, 0x00000000 },
- { 0x80800001, 0x4c2001b1, 0x00b10c20, 0x00000000 },
- { 0x80800001, 0x4c4001b1, 0x00b10c40, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
- { 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20a80, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20aa0, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20ac0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b20ae0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b20b00, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20b20, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20b40, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20b60, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20b80, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20ba0, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b20bc0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b20be0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b20c00, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20c20, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20b60, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a80, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20b80, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b20aa0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b20ba0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20ac0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20bc0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20ae0, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20be0, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20b00, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b20c00, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b20b20, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b20c20, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20b40, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05902000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01d21, 0x00450a4c, 0x00000001 },
- { 0x80800001, 0x4c6001b1, 0x00b10c60, 0x00000000 },
- { 0x80800001, 0x4c8001b1, 0x00b10c80, 0x00000000 },
- { 0x80800001, 0x4ca001b1, 0x00b10ca0, 0x00000000 },
- { 0x80800001, 0x4cc001b1, 0x00b10cc0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20c60, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20c80, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20ca0, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20cc0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302001 },
- { 0x80800001, 0x4ce001b1, 0x00b10ce0, 0x00000000 },
- { 0x80800001, 0x4d0001b1, 0x00b10d00, 0x00000000 },
- { 0x80800001, 0x4d2001b1, 0x00b10d20, 0x00000000 },
- { 0x80800001, 0x4d4001b1, 0x00b10d40, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20ce0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20d00, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20d20, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20d40, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d03e0, 0x05302002 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00000001, 0x2de001ad, 0x00218000, 0x00000000 },
- { 0x00802041, 0x2e8025a5, 0x008d8000, 0x008d0e00 },
- { 0x00802041, 0x2e8024a5, 0x008d0e80, 0x008c0da0 },
- { 0x0080200c, 0x2e802ca5, 0x008d0e80, 0x00040004 },
- { 0x00000041, 0x2e8025a5, 0x00210de0, 0x00210da4 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802041, 0x2ec025a5, 0x008d8000, 0x008d0e20 },
- { 0x00802041, 0x2ec024a5, 0x008d0ec0, 0x008c0da0 },
- { 0x0080200c, 0x2ec02ca5, 0x008d0ec0, 0x00040004 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802041, 0x2f0025a5, 0x008d8000, 0x008d0e40 },
- { 0x00802041, 0x2f0024a5, 0x008d0f00, 0x008c0da0 },
- { 0x0080200c, 0x2f002ca5, 0x008d0f00, 0x00040004 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802041, 0x2f4025a5, 0x008d8000, 0x008d0e60 },
- { 0x00802041, 0x2f4024a5, 0x008d0f40, 0x008c0da0 },
- { 0x0080200c, 0x2f402ca5, 0x008d0f40, 0x00040004 },
- { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
- { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a },
- { 0x00802040, 0x24000ca5, 0x008d0400, 0x00000400 },
- { 0x00802040, 0x24400ca5, 0x008d0440, 0x00000400 },
- { 0x00802040, 0x24800ca5, 0x008d0480, 0x00000400 },
- { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00000400 },
- { 0x00802008, 0x24000ca5, 0x008d0400, 0x0000000b },
- { 0x00802008, 0x24400ca5, 0x008d0440, 0x0000000b },
- { 0x00802008, 0x24800ca5, 0x008d0480, 0x0000000b },
- { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x0000000b },
- { 0x00800001, 0x2dc001ad, 0x00ae0400, 0x00000000 },
- { 0x00800001, 0x2de001ad, 0x00ae0440, 0x00000000 },
- { 0x00800001, 0x2e0001ad, 0x00ae0480, 0x00000000 },
- { 0x00800001, 0x2e2001ad, 0x00ae04c0, 0x00000000 },
- { 0x00000001, 0x2a000001, 0x00210200, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0db00da0 },
- { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x00802040, 0x24000ca5, 0x008d0400, 0x00080000 },
- { 0x00802040, 0x24400ca5, 0x008d0440, 0x00080000 },
- { 0x00802040, 0x24800ca5, 0x008d0480, 0x00080000 },
- { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00080000 },
- { 0x00802008, 0x24000ca5, 0x008d0400, 0x00000014 },
- { 0x00802008, 0x24400ca5, 0x008d0440, 0x00000014 },
- { 0x00802008, 0x24800ca5, 0x008d0480, 0x00000014 },
- { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x00000014 },
- { 0x00000001, 0x22000020, 0x00210a00, 0x00000000 },
- { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x240014a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x242014a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x244014a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x246014a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x248014a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24a014a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24c014a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24e014a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x240814a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x242814a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x244814a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x246814a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x248814a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24a814a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24c814a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24e814a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x241014a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x243014a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x245014a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x247014a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x249014a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24b014a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24d014a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24f014a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x241814a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x243814a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x245814a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x247814a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x249814a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24b814a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24d814a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24f814a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x34000c20, 0x00210fc0, 0x00000020 },
diff --git a/src/shaders/mpeg2/vld/frame_intra.g4b.gen5 b/src/shaders/mpeg2/vld/frame_intra.g4b.gen5
deleted file mode 100644
index 957f6fc..0000000
--- a/src/shaders/mpeg2/vld/frame_intra.g4b.gen5
+++ /dev/null
@@ -1,313 +0,0 @@
- { 0x00600001, 0x2a400021, 0x008d03e0, 0x00000000 },
- { 0x00200001, 0x23e00121, 0x00450a4c, 0x00000000 },
- { 0x00000005, 0x2da02d29, 0x00210a48, 0x001f001f },
- { 0x00000005, 0x2da42d29, 0x00210a48, 0x60006000 },
- { 0x00000008, 0x2da42d29, 0x00210da4, 0x000d000d },
- { 0x00000001, 0x2da60169, 0x00000000, 0x00080008 },
- { 0x00000008, 0x2da42529, 0x00210da6, 0x00210da4 },
- { 0x01000005, 0x20002d3c, 0x00210a48, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x05000010, 0x20002d3c, 0x00210da0, 0x00090009 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x05000010, 0x20002d3c, 0x00210da0, 0x00110011 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x05000010, 0x20002d3c, 0x00210da0, 0x00190019 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000040, 0x2da03d29, 0x00210da0, 0xffe7ffe7 },
- { 0x00000009, 0x2da02d29, 0x00210da0, 0x00030003 },
- { 0x00000040, 0x2da02d29, 0x00210da0, 0x00400040 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000012 },
- { 0x00000040, 0x2da03d29, 0x00210da0, 0xfff7fff7 },
- { 0x00000009, 0x2da02d29, 0x00210da0, 0x00010001 },
- { 0x00000040, 0x2da02d29, 0x00210da0, 0x000a000a },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x00000040, 0x2da03d29, 0x00210da0, 0xffefffef },
- { 0x00000009, 0x2da02d29, 0x00210da0, 0x00020002 },
- { 0x00000040, 0x2da02d29, 0x00210da0, 0x001c001c },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000002 },
- { 0x00000009, 0x2da00d29, 0x00210da0, 0x00000001 },
- { 0x00000001, 0x2dc00129, 0x00210da0, 0x00000000 },
- { 0x00800001, 0x2e000229, 0x00b10020, 0x00000000 },
- { 0x00800001, 0x2e200229, 0x00b10030, 0x00000000 },
- { 0x00800001, 0x2e400229, 0x00b10040, 0x00000000 },
- { 0x00800001, 0x2e600229, 0x00b10050, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x03f003e0 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000142 },
- { 0x00800001, 0x270001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x272001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x274001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x276001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000136 },
- { 0x00800001, 0x278001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x27a001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x27c001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x27e001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000012a },
- { 0x00800001, 0x280001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x282001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x284001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x286001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000011e },
- { 0x00800001, 0x288001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x28a001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x28c001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x28e001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000112 },
- { 0x00800001, 0x290001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x292001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x294001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x296001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000106 },
- { 0x00800001, 0x298001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x29a001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x29c001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x29e001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x06f006e0 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000011e },
- { 0x00600040, 0x2a602dad, 0x00ae0400, 0x00800080 },
- { 0x00600040, 0x2a802dad, 0x00ae0420, 0x00800080 },
- { 0x00600040, 0x2aa02dad, 0x00ae0440, 0x00800080 },
- { 0x00600040, 0x2ac02dad, 0x00ae0460, 0x00800080 },
- { 0x00600040, 0x2ae02dad, 0x00ae0480, 0x00800080 },
- { 0x00600040, 0x2b002dad, 0x00ae04a0, 0x00800080 },
- { 0x00600040, 0x2b202dad, 0x00ae04c0, 0x00800080 },
- { 0x00600040, 0x2b402dad, 0x00ae04e0, 0x00800080 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000010a },
- { 0x00600040, 0x2a702dad, 0x00ae0400, 0x00800080 },
- { 0x00600040, 0x2a902dad, 0x00ae0420, 0x00800080 },
- { 0x00600040, 0x2ab02dad, 0x00ae0440, 0x00800080 },
- { 0x00600040, 0x2ad02dad, 0x00ae0460, 0x00800080 },
- { 0x00600040, 0x2af02dad, 0x00ae0480, 0x00800080 },
- { 0x00600040, 0x2b102dad, 0x00ae04a0, 0x00800080 },
- { 0x00600040, 0x2b302dad, 0x00ae04c0, 0x00800080 },
- { 0x00600040, 0x2b502dad, 0x00ae04e0, 0x00800080 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000f6 },
- { 0x00600040, 0x2b602dad, 0x00ae0400, 0x00800080 },
- { 0x00600040, 0x2b802dad, 0x00ae0420, 0x00800080 },
- { 0x00600040, 0x2ba02dad, 0x00ae0440, 0x00800080 },
- { 0x00600040, 0x2bc02dad, 0x00ae0460, 0x00800080 },
- { 0x00600040, 0x2be02dad, 0x00ae0480, 0x00800080 },
- { 0x00600040, 0x2c002dad, 0x00ae04a0, 0x00800080 },
- { 0x00600040, 0x2c202dad, 0x00ae04c0, 0x00800080 },
- { 0x00600040, 0x2c402dad, 0x00ae04e0, 0x00800080 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000e2 },
- { 0x00600040, 0x2b702dad, 0x00ae0400, 0x00800080 },
- { 0x00600040, 0x2b902dad, 0x00ae0420, 0x00800080 },
- { 0x00600040, 0x2bb02dad, 0x00ae0440, 0x00800080 },
- { 0x00600040, 0x2bd02dad, 0x00ae0460, 0x00800080 },
- { 0x00600040, 0x2bf02dad, 0x00ae0480, 0x00800080 },
- { 0x00600040, 0x2c102dad, 0x00ae04a0, 0x00800080 },
- { 0x00600040, 0x2c302dad, 0x00ae04c0, 0x00800080 },
- { 0x00600040, 0x2c502dad, 0x00ae04e0, 0x00800080 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000ce },
- { 0x00800040, 0x2c602dad, 0x00ae0400, 0x00800080 },
- { 0x00800040, 0x2c802dad, 0x00ae0440, 0x00800080 },
- { 0x00800040, 0x2ca02dad, 0x00ae0480, 0x00800080 },
- { 0x00800040, 0x2cc02dad, 0x00ae04c0, 0x00800080 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000c2 },
- { 0x00800040, 0x2ce02dad, 0x00ae0400, 0x00800080 },
- { 0x00800040, 0x2d002dad, 0x00ae0440, 0x00800080 },
- { 0x00800040, 0x2d202dad, 0x00ae0480, 0x00800080 },
- { 0x00800040, 0x2d402dad, 0x00ae04c0, 0x00800080 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x000f000f },
- { 0x80800001, 0x4a6001b1, 0x00b10a60, 0x00000000 },
- { 0x80800001, 0x4a8001b1, 0x00b10a80, 0x00000000 },
- { 0x80800001, 0x4aa001b1, 0x00b10aa0, 0x00000000 },
- { 0x80800001, 0x4ac001b1, 0x00b10ac0, 0x00000000 },
- { 0x80800001, 0x4ae001b1, 0x00b10ae0, 0x00000000 },
- { 0x80800001, 0x4b0001b1, 0x00b10b00, 0x00000000 },
- { 0x80800001, 0x4b2001b1, 0x00b10b20, 0x00000000 },
- { 0x80800001, 0x4b4001b1, 0x00b10b40, 0x00000000 },
- { 0x80800001, 0x4b6001b1, 0x00b10b60, 0x00000000 },
- { 0x80800001, 0x4b8001b1, 0x00b10b80, 0x00000000 },
- { 0x80800001, 0x4ba001b1, 0x00b10ba0, 0x00000000 },
- { 0x80800001, 0x4bc001b1, 0x00b10bc0, 0x00000000 },
- { 0x80800001, 0x4be001b1, 0x00b10be0, 0x00000000 },
- { 0x80800001, 0x4c0001b1, 0x00b10c00, 0x00000000 },
- { 0x80800001, 0x4c2001b1, 0x00b10c20, 0x00000000 },
- { 0x80800001, 0x4c4001b1, 0x00b10c40, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a42, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20a80, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20aa0, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20ac0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b20ae0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b20b00, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20b20, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20b40, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20b60, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20b80, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20ba0, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b20bc0, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b20be0, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b20c00, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20c20, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00800001, 0x20200232, 0x00b20a60, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20b60, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20a80, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20b80, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b20aa0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b20ba0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00b20ac0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00b20bc0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00b20ae0, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00b20be0, 0x00000000 },
- { 0x00800001, 0x20c00232, 0x00b20b00, 0x00000000 },
- { 0x00800001, 0x20d00232, 0x00b20c00, 0x00000000 },
- { 0x00800001, 0x20e00232, 0x00b20b20, 0x00000000 },
- { 0x00800001, 0x20f00232, 0x00b20c20, 0x00000000 },
- { 0x00800001, 0x21000232, 0x00b20b40, 0x00000000 },
- { 0x00800001, 0x21100232, 0x00b20c40, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x12082000 },
- { 0x00000001, 0x23e80061, 0x00000000, 0x00070007 },
- { 0x00200008, 0x23e01d21, 0x00450a4c, 0x00000001 },
- { 0x80800001, 0x4c6001b1, 0x00b10c60, 0x00000000 },
- { 0x80800001, 0x4c8001b1, 0x00b10c80, 0x00000000 },
- { 0x80800001, 0x4ca001b1, 0x00b10ca0, 0x00000000 },
- { 0x80800001, 0x4cc001b1, 0x00b10cc0, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20c60, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20c80, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20ca0, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20cc0, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082001 },
- { 0x80800001, 0x4ce001b1, 0x00b10ce0, 0x00000000 },
- { 0x80800001, 0x4d0001b1, 0x00b10d00, 0x00000000 },
- { 0x80800001, 0x4d2001b1, 0x00b10d20, 0x00000000 },
- { 0x80800001, 0x4d4001b1, 0x00b10d40, 0x00000000 },
- { 0x00800001, 0x20200232, 0x00b20ce0, 0x00000000 },
- { 0x00800001, 0x20300232, 0x00b20d00, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00b20d20, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b20d40, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x508d03e0, 0x06082002 },
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00000001, 0x2de001ad, 0x00218000, 0x00000000 },
- { 0x00802041, 0x2e8025a5, 0x008d8000, 0x008d0e00 },
- { 0x00802041, 0x2e8024a5, 0x008d0e80, 0x008c0da0 },
- { 0x0080200c, 0x2e802ca5, 0x008d0e80, 0x00040004 },
- { 0x00000041, 0x2e8025a5, 0x00210de0, 0x00210da4 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802041, 0x2ec025a5, 0x008d8000, 0x008d0e20 },
- { 0x00802041, 0x2ec024a5, 0x008d0ec0, 0x008c0da0 },
- { 0x0080200c, 0x2ec02ca5, 0x008d0ec0, 0x00040004 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802041, 0x2f0025a5, 0x008d8000, 0x008d0e40 },
- { 0x00802041, 0x2f0024a5, 0x008d0f00, 0x008c0da0 },
- { 0x0080200c, 0x2f002ca5, 0x008d0f00, 0x00040004 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802041, 0x2f4025a5, 0x008d8000, 0x008d0e60 },
- { 0x00802041, 0x2f4024a5, 0x008d0f40, 0x008c0da0 },
- { 0x0080200c, 0x2f402ca5, 0x008d0f40, 0x00040004 },
- { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
- { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00802040, 0x24000ca5, 0x008d0400, 0x00000400 },
- { 0x00802040, 0x24400ca5, 0x008d0440, 0x00000400 },
- { 0x00802040, 0x24800ca5, 0x008d0480, 0x00000400 },
- { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00000400 },
- { 0x00802008, 0x24000ca5, 0x008d0400, 0x0000000b },
- { 0x00802008, 0x24400ca5, 0x008d0440, 0x0000000b },
- { 0x00802008, 0x24800ca5, 0x008d0480, 0x0000000b },
- { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x0000000b },
- { 0x00800001, 0x2dc001ad, 0x00ae0400, 0x00000000 },
- { 0x00800001, 0x2de001ad, 0x00ae0440, 0x00000000 },
- { 0x00800001, 0x2e0001ad, 0x00ae0480, 0x00000000 },
- { 0x00800001, 0x2e2001ad, 0x00ae04c0, 0x00000000 },
- { 0x00000001, 0x2a000001, 0x00210200, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0db00da0 },
- { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x00802040, 0x24000ca5, 0x008d0400, 0x00080000 },
- { 0x00802040, 0x24400ca5, 0x008d0440, 0x00080000 },
- { 0x00802040, 0x24800ca5, 0x008d0480, 0x00080000 },
- { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00080000 },
- { 0x00802008, 0x24000ca5, 0x008d0400, 0x00000014 },
- { 0x00802008, 0x24400ca5, 0x008d0440, 0x00000014 },
- { 0x00802008, 0x24800ca5, 0x008d0480, 0x00000014 },
- { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x00000014 },
- { 0x00000001, 0x22000020, 0x00210a00, 0x00000000 },
- { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x240014a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x242014a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x244014a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x246014a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x248014a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24a014a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24c014a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24e014a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x240814a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x242814a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x244814a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x246814a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x248814a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24a814a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24c814a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24e814a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x241014a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x243014a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x245014a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x247014a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x249014a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24b014a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24d014a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24f014a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x241814a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x243814a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x245814a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x247814a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x249814a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24b814a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24d814a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24f814a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x34000c20, 0x00210fc0, 0x00000020 },
diff --git a/src/shaders/mpeg2/vld/idct.g4i b/src/shaders/mpeg2/vld/idct.g4i
deleted file mode 100644
index c1747d1..0000000
--- a/src/shaders/mpeg2/vld/idct.g4i
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix in UB format
- g3~g4:non intra IQ matrix in UB format
- g5~g20:IDCT table
- g56~g79:DCT data after IQ before idct
- g83~g106: IDCT data after idct
- g82: thread payload backup
- g125: ip before idct
-*/
-IDCT_START:
-mov (1) g126.0<1>UD ip {align1};
-jmpi DO_IDCT;
-add (16) g32<1>D g32<8,8,1>D ROW_ADD {compr};
-add (16) g34<1>D g34<8,8,1>D ROW_ADD {compr};
-add (16) g36<1>D g36<8,8,1>D ROW_ADD {compr};
-add (16) g38<1>D g38<8,8,1>D ROW_ADD {compr};
-
-shr (16) g32<1>D g32<8,8,1>D ROW_SHIFT {compr};
-shr (16) g34<1>D g34<8,8,1>D ROW_SHIFT {compr};
-shr (16) g36<1>D g36<8,8,1>D ROW_SHIFT {compr};
-shr (16) g38<1>D g38<8,8,1>D ROW_SHIFT {compr};
-
-mov (16) g110.0<1>W g32<16,8,2>W {align1};
-mov (16) g111.0<1>W g34<16,8,2>W {align1};
-mov (16) g112.0<1>W g36<16,8,2>W {align1};
-mov (16) g113.0<1>W g38<16,8,2>W {align1};
-
-mov (1) g80.0<1>UD a0.0<1,1,1>UD {align1}; //save a0
-mov (1) a0.0<1>UD 0x0DB00DA0UD {align1}; //begin at g110.0, the output of idct_row.g4i
-mov (1) g126.0<1>UD ip {align1};
-jmpi DO_IDCT;
-
-add (16) g32<1>D g32<8,8,1>D COL_ADD {compr};
-add (16) g34<1>D g34<8,8,1>D COL_ADD {compr};
-add (16) g36<1>D g36<8,8,1>D COL_ADD {compr};
-add (16) g38<1>D g38<8,8,1>D COL_ADD {compr};
-
-shr (16) g32<1>D g32<8,8,1>D COL_SHIFT {compr};
-shr (16) g34<1>D g34<8,8,1>D COL_SHIFT {compr};
-shr (16) g36<1>D g36<8,8,1>D COL_SHIFT {compr};
-shr (16) g38<1>D g38<8,8,1>D COL_SHIFT {compr};
-
-mov (1) a0.0<1>UD g80.0<1,1,1>UD {align1}; //restore a0
-add (1) ip g125.0<1,1,1>UD 0x20UD {align1}; //jump back
-
-DO_IDCT:
-add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1}; //increase the address
-dp4 (16) g40<1>D g[a0.0]<8,8,1>W g5<8,8,1>D {align1 compr};
-dp4 (16) g42<1>D g[a0.0]<8,8,1>W g7<8,8,1>D {align1 compr};
-dp4 (16) g44<1>D g[a0.0]<8,8,1>W g9<8,8,1>D {align1 compr};
-dp4 (16) g46<1>D g[a0.0]<8,8,1>W g11<8,8,1>D {align1 compr};
-dp4 (16) g48<1>D g[a0.0]<8,8,1>W g13<8,8,1>D {align1 compr};
-dp4 (16) g50<1>D g[a0.0]<8,8,1>W g15<8,8,1>D {align1 compr};
-dp4 (16) g52<1>D g[a0.0]<8,8,1>W g17<8,8,1>D {align1 compr};
-dp4 (16) g54<1>D g[a0.0]<8,8,1>W g19<8,8,1>D {align1 compr};
-add (2) g32.0<1>D g40.0<8,1,8>D g40.16<8,1,8>D {align1};
-add (2) g33.0<1>D g42.0<8,1,8>D g42.16<8,1,8>D {align1};
-add (2) g34.0<1>D g44.0<8,1,8>D g44.16<8,1,8>D {align1};
-add (2) g35.0<1>D g46.0<8,1,8>D g46.16<8,1,8>D {align1};
-add (2) g36.0<1>D g48.0<8,1,8>D g48.16<8,1,8>D {align1};
-add (2) g37.0<1>D g50.0<8,1,8>D g50.16<8,1,8>D {align1};
-add (2) g38.0<1>D g52.0<8,1,8>D g52.16<8,1,8>D {align1};
-add (2) g39.0<1>D g54.0<8,1,8>D g54.16<8,1,8>D {align1};
-
-add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
-dp4 (16) g40<1>D g[a0.0]<8,8,1>W g5<8,8,1>D {align1 compr};
-dp4 (16) g42<1>D g[a0.0]<8,8,1>W g7<8,8,1>D {align1 compr};
-dp4 (16) g44<1>D g[a0.0]<8,8,1>W g9<8,8,1>D {align1 compr};
-dp4 (16) g46<1>D g[a0.0]<8,8,1>W g11<8,8,1>D {align1 compr};
-dp4 (16) g48<1>D g[a0.0]<8,8,1>W g13<8,8,1>D {align1 compr};
-dp4 (16) g50<1>D g[a0.0]<8,8,1>W g15<8,8,1>D {align1 compr};
-dp4 (16) g52<1>D g[a0.0]<8,8,1>W g17<8,8,1>D {align1 compr};
-dp4 (16) g54<1>D g[a0.0]<8,8,1>W g19<8,8,1>D {align1 compr};
-add (2) g32.8<1>D g40.0<8,1,8>D g40.16<8,1,8>D {align1};
-add (2) g33.8<1>D g42.0<8,1,8>D g42.16<8,1,8>D {align1};
-add (2) g34.8<1>D g44.0<8,1,8>D g44.16<8,1,8>D {align1};
-add (2) g35.8<1>D g46.0<8,1,8>D g46.16<8,1,8>D {align1};
-add (2) g36.8<1>D g48.0<8,1,8>D g48.16<8,1,8>D {align1};
-add (2) g37.8<1>D g50.0<8,1,8>D g50.16<8,1,8>D {align1};
-add (2) g38.8<1>D g52.0<8,1,8>D g52.16<8,1,8>D {align1};
-add (2) g39.8<1>D g54.0<8,1,8>D g54.16<8,1,8>D {align1};
-
-add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
-dp4 (16) g40<1>D g[a0.0]<8,8,1>W g5<8,8,1>D {align1 compr};
-dp4 (16) g42<1>D g[a0.0]<8,8,1>W g7<8,8,1>D {align1 compr};
-dp4 (16) g44<1>D g[a0.0]<8,8,1>W g9<8,8,1>D {align1 compr};
-dp4 (16) g46<1>D g[a0.0]<8,8,1>W g11<8,8,1>D {align1 compr};
-dp4 (16) g48<1>D g[a0.0]<8,8,1>W g13<8,8,1>D {align1 compr};
-dp4 (16) g50<1>D g[a0.0]<8,8,1>W g15<8,8,1>D {align1 compr};
-dp4 (16) g52<1>D g[a0.0]<8,8,1>W g17<8,8,1>D {align1 compr};
-dp4 (16) g54<1>D g[a0.0]<8,8,1>W g19<8,8,1>D {align1 compr};
-add (2) g32.16<1>D g40.0<8,1,8>D g40.16<8,1,8>D {align1};
-add (2) g33.16<1>D g42.0<8,1,8>D g42.16<8,1,8>D {align1};
-add (2) g34.16<1>D g44.0<8,1,8>D g44.16<8,1,8>D {align1};
-add (2) g35.16<1>D g46.0<8,1,8>D g46.16<8,1,8>D {align1};
-add (2) g36.16<1>D g48.0<8,1,8>D g48.16<8,1,8>D {align1};
-add (2) g37.16<1>D g50.0<8,1,8>D g50.16<8,1,8>D {align1};
-add (2) g38.16<1>D g52.0<8,1,8>D g52.16<8,1,8>D {align1};
-add (2) g39.16<1>D g54.0<8,1,8>D g54.16<8,1,8>D {align1};
-
-add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00200020UD {align1};
-dp4 (16) g40<1>D g[a0.0]<8,8,1>W g5<8,8,1>D {align1 compr};
-dp4 (16) g42<1>D g[a0.0]<8,8,1>W g7<8,8,1>D {align1 compr};
-dp4 (16) g44<1>D g[a0.0]<8,8,1>W g9<8,8,1>D {align1 compr};
-dp4 (16) g46<1>D g[a0.0]<8,8,1>W g11<8,8,1>D {align1 compr};
-dp4 (16) g48<1>D g[a0.0]<8,8,1>W g13<8,8,1>D {align1 compr};
-dp4 (16) g50<1>D g[a0.0]<8,8,1>W g15<8,8,1>D {align1 compr};
-dp4 (16) g52<1>D g[a0.0]<8,8,1>W g17<8,8,1>D {align1 compr};
-dp4 (16) g54<1>D g[a0.0]<8,8,1>W g19<8,8,1>D {align1 compr};
-add (2) g32.24<1>D g40.0<8,1,8>D g40.16<8,1,8>D {align1};
-add (2) g33.24<1>D g42.0<8,1,8>D g42.16<8,1,8>D {align1};
-add (2) g34.24<1>D g44.0<8,1,8>D g44.16<8,1,8>D {align1};
-add (2) g35.24<1>D g46.0<8,1,8>D g46.16<8,1,8>D {align1};
-add (2) g36.24<1>D g48.0<8,1,8>D g48.16<8,1,8>D {align1};
-add (2) g37.24<1>D g50.0<8,1,8>D g50.16<8,1,8>D {align1};
-add (2) g38.24<1>D g52.0<8,1,8>D g52.16<8,1,8>D {align1};
-add (2) g39.24<1>D g54.0<8,1,8>D g54.16<8,1,8>D {align1};
-
-add (1) ip g126.0<1,1,1>UD 0x20UD {align1}; //jump back
diff --git a/src/shaders/mpeg2/vld/iq_intra.g4i b/src/shaders/mpeg2/vld/iq_intra.g4i
deleted file mode 100644
index b014361..0000000
--- a/src/shaders/mpeg2/vld/iq_intra.g4i
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix in UB format
- g3~g4:non intra IQ matrix in UB format
- g5~g20:IDCT table
- g32~g55:DCT data before IQ
- g56~g79:DCT data after IQ
- g82: thread payload backup
- g109: g109.0:q_scale_code, g109.4:intra_dc_mult,
- g110: q_scale_code
- g111: intra DC coefficient
- g112~g115: intra IQ matrix in UW format (in order to use instruction compress), copys from g1~g2
- g125: ip before jump
-*/
-and (1) g109.0<1>UW g82.8<1,1,1>UW 0x1fUW {align1}; //q_scale_code
-
-and (1) g109.4<1>UW g82.8<1,1,1>UW 0x6000UW {align1}; //intra_dc_presion
-shr (1) g109.4<1>UW g109.4<1,1,1>UW 13UW {align1};
-mov (1) g109.6<1>UW 0x8UW {align1};
-shr (1) g109.4<1>UW g109.6<1,1,1>UW g109.4<1,1,1>UW {align1}; //intra_dc_mult
-
-and.z (1) null g82.8<1,1,1>UW 0x20UW {align1}; //if(q_scale_type==0) q_scale=q_scale_code*2;
-(f0) jmpi Q_SCALE_TYPE_0;
-
-cmp.l (1) null g109.0<1,1,1>UW 9UW {align1}; //if(q_scale_type!=0) calculate q_scale
-(f0) jmpi DO_IQ;
-cmp.l (1) null g109.0<1,1,1>UW 17UW {align1};
-(f0) jmpi RANG_9_16;
-cmp.l (1) null g109.0<1,1,1>UW 25UW {align1};
-(f0) jmpi RANG_17_24;
-
-RANG_25_31:
-add (1) g109.0<1>UW g109.0<1,1,1>UW -25W {align1};
-shl (1) g109.0<1>UW g109.0<1,1,1>UW 3UW {align1};
-add (1) g109.0<1>UW g109.0<1,1,1>UW 64UW {align1};
-jmpi DO_IQ;
-
-RANG_9_16:
-add (1) g109.0<1>UW g109.0<1,1,1>UW -9W {align1};
-shl (1) g109.0<1>UW g109.0<1,1,1>UW 1UW {align1};
-add (1) g109.0<1>UW g109.0<1,1,1>UW 10UW {align1};
-jmpi DO_IQ;
-
-RANG_17_24:
-add (1) g109.0<1>UW g109.0<1,1,1>UW -17W {align1};
-shl (1) g109.0<1>UW g109.0<1,1,1>UW 2UW {align1};
-add (1) g109.0<1>UW g109.0<1,1,1>UW 28UW {align1};
-jmpi DO_IQ;
-
-Q_SCALE_TYPE_0:
-shl (1) g109.0<1>UW g109.0<1,1,1>UW 1UD {align1};
-
-DO_IQ:
-mov (1) g110.0<1>UW g109.0<1,1,1>UW {align1};
-
-mov (16) g112.0<1>UW g1.0<16,16,1>UB {align1};
-mov (16) g113.0<1>UW g1.16<16,16,1>UB {align1};
-mov (16) g114.0<1>UW g2.0<16,16,1>UB {align1};
-mov (16) g115.0<1>UW g2.16<16,16,1>UB {align1};
-
-mov (1) a0.0<1>UD 0x03F003E0UD {align1};
-
-mov (1) g125.0<1>UD ip {align1};
-jmpi DO_IQ_INTRA;
-mov (16) g56.0<1>W g116.0<16,8,2>W {align1};
-mov (16) g57.0<1>W g118.0<16,8,2>W {align1};
-mov (16) g58.0<1>W g120.0<16,8,2>W {align1};
-mov (16) g59.0<1>W g122.0<16,8,2>W {align1};
-
-mov (1) g125.0<1>UD ip {align1};
-jmpi DO_IQ_INTRA;
-mov (16) g60.0<1>W g116.0<16,8,2>W {align1};
-mov (16) g61.0<1>W g118.0<16,8,2>W {align1};
-mov (16) g62.0<1>W g120.0<16,8,2>W {align1};
-mov (16) g63.0<1>W g122.0<16,8,2>W {align1};
-
-mov (1) g125.0<1>UD ip {align1};
-jmpi DO_IQ_INTRA;
-mov (16) g64.0<1>W g116.0<16,8,2>W {align1};
-mov (16) g65.0<1>W g118.0<16,8,2>W {align1};
-mov (16) g66.0<1>W g120.0<16,8,2>W {align1};
-mov (16) g67.0<1>W g122.0<16,8,2>W {align1};
-
-mov (1) g125.0<1>UD ip {align1};
-jmpi DO_IQ_INTRA;
-mov (16) g68.0<1>W g116.0<16,8,2>W {align1};
-mov (16) g69.0<1>W g118.0<16,8,2>W {align1};
-mov (16) g70.0<1>W g120.0<16,8,2>W {align1};
-mov (16) g71.0<1>W g122.0<16,8,2>W {align1};
-
-mov (1) g125.0<1>UD ip {align1};
-jmpi DO_IQ_INTRA;
-mov (16) g72.0<1>W g116.0<16,8,2>W {align1};
-mov (16) g73.0<1>W g118.0<16,8,2>W {align1};
-mov (16) g74.0<1>W g120.0<16,8,2>W {align1};
-mov (16) g75.0<1>W g122.0<16,8,2>W {align1};
-
-mov (1) g125.0<1>UD ip {align1};
-jmpi DO_IQ_INTRA;
-mov (16) g76.0<1>W g116.0<16,8,2>W {align1};
-mov (16) g77.0<1>W g118.0<16,8,2>W {align1};
-mov (16) g78.0<1>W g120.0<16,8,2>W {align1};
-mov (16) g79.0<1>W g122.0<16,8,2>W {align1};
-
diff --git a/src/shaders/mpeg2/vld/iq_non_intra.g4i b/src/shaders/mpeg2/vld/iq_non_intra.g4i
deleted file mode 100644
index 03c09aa..0000000
--- a/src/shaders/mpeg2/vld/iq_non_intra.g4i
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix in UB format
- g3~g4:non intra IQ matrix in UB format
- g5~g20:IDCT table
- g32~g55:DCT data before IQ
- g56~g79:DCT data after IQ
- g82: thread payload backup
- g109: q_scale_code
- g110: q_scale_code
- g112~g115: non intra IQ matrix in UW format (in order to use instruction compress), copys from g3~g4
- g125: ip before jump
-*/
-and (1) g109.0<1>UW g82.8<1,1,1>UW 0x1fUW {align1}; //q_scale_code
-
-and.z (1) null g82.8<1,1,1>UW 0x20UW {align1}; //if(q_scale_type==0) q_scale=q_scale_code*2;
-(f0) jmpi Q_SCALE_TYPE_0;
-
-cmp.l (1) null g109.0<1,1,1>UW 9UW {align1}; //if(q_scale_type!=0) calculate q_scale
-(f0) jmpi DO_IQ;
-cmp.l (1) null g109.0<1,1,1>UW 17UW {align1};
-(f0) jmpi RANG_9_16;
-cmp.l (1) null g109.0<1,1,1>UW 25UW {align1};
-(f0) jmpi RANG_17_24;
-
-RANG_25_31:
-add (1) g109.0<1>UW g109.0<1,1,1>UW -25W {align1};
-shl (1) g109.0<1>UW g109.0<1,1,1>UW 3UW {align1};
-add (1) g109.0<1>UW g109.0<1,1,1>UW 64UW {align1};
-jmpi DO_IQ;
-
-RANG_9_16:
-add (1) g109.0<1>UW g109.0<1,1,1>UW -9W {align1};
-shl (1) g109.0<1>UW g109.0<1,1,1>UW 1UW {align1};
-add (1) g109.0<1>UW g109.0<1,1,1>UW 10UW {align1};
-jmpi DO_IQ;
-
-RANG_17_24:
-add (1) g109.0<1>UW g109.0<1,1,1>UW -17W {align1};
-shl (1) g109.0<1>UW g109.0<1,1,1>UW 2UW {align1};
-add (1) g109.0<1>UW g109.0<1,1,1>UW 28UW {align1};
-jmpi DO_IQ;
-
-Q_SCALE_TYPE_0:
-shl (1) g109.0<1>UW g109.0<1,1,1>UW 1UD {align1};
-
-DO_IQ:
-mov (1) g110.0<1>UW g109.0<1,1,1>UW {align1};
-
-mov (16) g112.0<1>UW g3.0<16,16,1>UB {align1};
-mov (16) g113.0<1>UW g3.16<16,16,1>UB {align1};
-mov (16) g114.0<1>UW g4.0<16,16,1>UB {align1};
-mov (16) g115.0<1>UW g4.16<16,16,1>UB {align1};
-
-mov (1) a0.0<1>UD 0x03F003E0UD {align1};
-
-//Y0
-iq_non_intra_y0:
-and.z (1) null g82.8<1,1,1>UW 0x800UW {align1};
-(f0) jmpi iq_non_intra_y1;
-mov (1) g125.0<1>UD ip {align1};
-jmpi DO_IQ_NON_INTRA;
-mov (16) g56.0<1>W g116.0<16,8,2>W {align1};
-mov (16) g57.0<1>W g118.0<16,8,2>W {align1};
-mov (16) g58.0<1>W g120.0<16,8,2>W {align1};
-mov (16) g59.0<1>W g122.0<16,8,2>W {align1};
-
-//Y1
-iq_non_intra_y1:
-and.z (1) null g82.8<1,1,1>UW 0x400UW {align1};
-(f0) jmpi iq_non_intra_y2;
-mov (1) g125.0<1>UD ip {align1};
-jmpi DO_IQ_NON_INTRA;
-mov (16) g60.0<1>W g116.0<16,8,2>W {align1};
-mov (16) g61.0<1>W g118.0<16,8,2>W {align1};
-mov (16) g62.0<1>W g120.0<16,8,2>W {align1};
-mov (16) g63.0<1>W g122.0<16,8,2>W {align1};
-
-//Y2
-iq_non_intra_y2:
-and.z (1) null g82.8<1,1,1>UW 0x200UW {align1};
-(f0) jmpi iq_non_intra_y3;
-mov (1) g125.0<1>UD ip {align1};
-jmpi DO_IQ_NON_INTRA;
-mov (16) g64.0<1>W g116.0<16,8,2>W {align1};
-mov (16) g65.0<1>W g118.0<16,8,2>W {align1};
-mov (16) g66.0<1>W g120.0<16,8,2>W {align1};
-mov (16) g67.0<1>W g122.0<16,8,2>W {align1};
-
-//Y3
-iq_non_intra_y3:
-and.z (1) null g82.8<1,1,1>UW 0x100UW {align1};
-(f0) jmpi iq_non_intra_u;
-mov (1) g125.0<1>UD ip {align1};
-jmpi DO_IQ_NON_INTRA;
-mov (16) g68.0<1>W g116.0<16,8,2>W {align1};
-mov (16) g69.0<1>W g118.0<16,8,2>W {align1};
-mov (16) g70.0<1>W g120.0<16,8,2>W {align1};
-mov (16) g71.0<1>W g122.0<16,8,2>W {align1};
-
-//U
-iq_non_intra_u:
-and.z (1) null g82.8<1,1,1>UW 0x80UW {align1};
-(f0) jmpi iq_non_intra_v;
-mov (1) g125.0<1>UD ip {align1};
-jmpi DO_IQ_NON_INTRA;
-mov (16) g72.0<1>W g116.0<16,8,2>W {align1};
-mov (16) g73.0<1>W g118.0<16,8,2>W {align1};
-mov (16) g74.0<1>W g120.0<16,8,2>W {align1};
-mov (16) g75.0<1>W g122.0<16,8,2>W {align1};
-
-//V
-iq_non_intra_v:
-and.z (1) null g82.8<1,1,1>UW 0x40UW {align1};
-(f0) jmpi iq_non_intra_end;
-mov (1) g125.0<1>UD ip {align1};
-jmpi DO_IQ_NON_INTRA;
-mov (16) g76.0<1>W g116.0<16,8,2>W {align1};
-mov (16) g77.0<1>W g118.0<16,8,2>W {align1};
-mov (16) g78.0<1>W g120.0<16,8,2>W {align1};
-mov (16) g79.0<1>W g122.0<16,8,2>W {align1};
-
-iq_non_intra_end:
diff --git a/src/shaders/mpeg2/vld/lib.g4a b/src/shaders/mpeg2/vld/lib.g4a
deleted file mode 100644
index 567caaf..0000000
--- a/src/shaders/mpeg2/vld/lib.g4a
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix in UB format
- g3~g4:non intra IQ matrix in UB format
- g5~g20:IDCT table
- g32~g55:DCT data before IQ
- g56~g79:DCT data after IQ
- g83~g106: IDCT data after idct
- g82: thread payload backup
- g125: ip before jump
-*/
-include(`iq_non_intra.g4i')
-
-define(`ROW_SHIFT', `11UD') //define for idct
-define(`ROW_ADD', `0x400UD')
-define(`COL_SHIFT', `20UD')
-define(`COL_ADD', `0x80000UD')
-
-mov (1) a0.0<1>UD 0x06F006E0UD {align1};//0x06F006E0UD+0x00200020UD=0x07100700UD (g56.0 and g56.16,the start of DCT data)
-
-//Y0
-and.nz (1) null g82.8<1,1,1>UW 0x800UW {align1};
-(f0) jmpi do_idct_y0;
-
-mov (8) g83.0<1>UW 0UW {align1};
-mov (8) g84.0<1>UW 0UW {align1};
-mov (8) g85.0<1>UW 0UW {align1};
-mov (8) g86.0<1>UW 0UW {align1};
-mov (8) g87.0<1>UW 0UW {align1};
-mov (8) g88.0<1>UW 0UW {align1};
-mov (8) g89.0<1>UW 0UW {align1};
-mov (8) g90.0<1>UW 0UW {align1};
-add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00800080UD {align1};
-jmpi block_y1;
-do_idct_y0:
-mov (1) g125.0<1>UD ip {align1};
-jmpi IDCT_START;
-mov (8) g83.0<1>W g32.0<16,8,2>W {align1};
-mov (8) g84.0<1>W g33.0<16,8,2>W {align1};
-mov (8) g85.0<1>W g34.0<16,8,2>W {align1};
-mov (8) g86.0<1>W g35.0<16,8,2>W {align1};
-mov (8) g87.0<1>W g36.0<16,8,2>W {align1};
-mov (8) g88.0<1>W g37.0<16,8,2>W {align1};
-mov (8) g89.0<1>W g38.0<16,8,2>W {align1};
-mov (8) g90.0<1>W g39.0<16,8,2>W {align1};
-
-//Y1
-block_y1:
-and.nz (1) null g82.8<1,1,1>UW 0x400UW {align1};
-(f0) jmpi do_idct_y1;
-mov (8) g83.16<1>UW 0UW {align1};
-mov (8) g84.16<1>UW 0UW {align1};
-mov (8) g85.16<1>UW 0UW {align1};
-mov (8) g86.16<1>UW 0UW {align1};
-mov (8) g87.16<1>UW 0UW {align1};
-mov (8) g88.16<1>UW 0UW {align1};
-mov (8) g89.16<1>UW 0UW {align1};
-mov (8) g90.16<1>UW 0UW {align1};
-add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00800080UD {align1};
-jmpi block_y2;
-do_idct_y1:
-mov (1) g125.0<1>UD ip {align1};
-jmpi IDCT_START;
-mov (8) g83.16<1>W g32.0<16,8,2>W {align1};
-mov (8) g84.16<1>W g33.0<16,8,2>W {align1};
-mov (8) g85.16<1>W g34.0<16,8,2>W {align1};
-mov (8) g86.16<1>W g35.0<16,8,2>W {align1};
-mov (8) g87.16<1>W g36.0<16,8,2>W {align1};
-mov (8) g88.16<1>W g37.0<16,8,2>W {align1};
-mov (8) g89.16<1>W g38.0<16,8,2>W {align1};
-mov (8) g90.16<1>W g39.0<16,8,2>W {align1};
-
-//Y2
-block_y2:
-and.nz (1) null g82.8<1,1,1>UW 0x200UW {align1};
-(f0) jmpi do_idct_y2;
-mov (8) g91.0<1>UW 0UW {align1};
-mov (8) g92.0<1>UW 0UW {align1};
-mov (8) g93.0<1>UW 0UW {align1};
-mov (8) g94.0<1>UW 0UW {align1};
-mov (8) g95.0<1>UW 0UW {align1};
-mov (8) g96.0<1>UW 0UW {align1};
-mov (8) g97.0<1>UW 0UW {align1};
-mov (8) g98.0<1>UW 0UW {align1};
-add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00800080UD {align1};
-jmpi block_y3;
-do_idct_y2:
-mov (1) g125.0<1>UD ip {align1};
-jmpi IDCT_START;
-mov (8) g91.0<1>W g32.0<16,8,2>W {align1};
-mov (8) g92.0<1>W g33.0<16,8,2>W {align1};
-mov (8) g93.0<1>W g34.0<16,8,2>W {align1};
-mov (8) g94.0<1>W g35.0<16,8,2>W {align1};
-mov (8) g95.0<1>W g36.0<16,8,2>W {align1};
-mov (8) g96.0<1>W g37.0<16,8,2>W {align1};
-mov (8) g97.0<1>W g38.0<16,8,2>W {align1};
-mov (8) g98.0<1>W g39.0<16,8,2>W {align1};
-
-//Y3
-block_y3:
-and.nz (1) null g82.8<1,1,1>UW 0x100UW {align1};
-(f0) jmpi do_idct_y3;
-mov (8) g91.16<1>UW 0UW {align1};
-mov (8) g92.16<1>UW 0UW {align1};
-mov (8) g93.16<1>UW 0UW {align1};
-mov (8) g94.16<1>UW 0UW {align1};
-mov (8) g95.16<1>UW 0UW {align1};
-mov (8) g96.16<1>UW 0UW {align1};
-mov (8) g97.16<1>UW 0UW {align1};
-mov (8) g98.16<1>UW 0UW {align1};
-add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00800080UD {align1};
-jmpi block_u;
-do_idct_y3:
-mov (1) g125.0<1>UD ip {align1};
-jmpi IDCT_START;
-mov (8) g91.16<1>W g32.0<16,8,2>W {align1};
-mov (8) g92.16<1>W g33.0<16,8,2>W {align1};
-mov (8) g93.16<1>W g34.0<16,8,2>W {align1};
-mov (8) g94.16<1>W g35.0<16,8,2>W {align1};
-mov (8) g95.16<1>W g36.0<16,8,2>W {align1};
-mov (8) g96.16<1>W g37.0<16,8,2>W {align1};
-mov (8) g97.16<1>W g38.0<16,8,2>W {align1};
-mov (8) g98.16<1>W g39.0<16,8,2>W {align1};
-
-//U
-block_u:
-and.nz (1) null g82.8<1,1,1>UW 0x80UW {align1};
-(f0) jmpi do_idct_u;
-mov (16) g99.0<1>UW 0UW {align1};
-mov (16) g100.0<1>UW 0UW {align1};
-mov (16) g101.0<1>UW 0UW {align1};
-mov (16) g102.0<1>UW 0UW {align1};
-add (1) a0.0<1>UD a0.0<1,1,1>UD 0x00800080UD {align1};
-jmpi block_v;
-do_idct_u:
-mov (1) g125.0<1>UD ip {align1};
-jmpi IDCT_START;
-mov (16) g99.0<1>W g32.0<16,8,2>W {align1};
-mov (16) g100.0<1>W g34.0<16,8,2>W {align1};
-mov (16) g101.0<1>W g36.0<16,8,2>W {align1};
-mov (16) g102.0<1>W g38.0<16,8,2>W {align1};
-
-//V
-block_v:
-and.nz (1) null g82.8<1,1,1>UW 0x40UW {align1};
-(f0) jmpi do_idct_v;
-mov (16) g103.0<1>UW 0UW {align1};
-mov (16) g104.0<1>UW 0UW {align1};
-mov (16) g105.0<1>UW 0UW {align1};
-mov (16) g106.0<1>UW 0UW {align1};
-jmpi block_end;
-do_idct_v:
-mov (1) g125.0<1>UD ip {align1};
-jmpi IDCT_START;
-mov (16) g103.0<1>W g32.0<16,8,2>W {align1};
-mov (16) g104.0<1>W g34.0<16,8,2>W {align1};
-mov (16) g105.0<1>W g36.0<16,8,2>W {align1};
-mov (16) g106.0<1>W g38.0<16,8,2>W {align1};
-block_end:
-
-add (1) ip g126.8<1,1,1>UD 0x20UD {align1}; //jump back
-include(`do_iq_non_intra.g4i')
-include(`idct.g4i')
diff --git a/src/shaders/mpeg2/vld/lib.g4b b/src/shaders/mpeg2/vld/lib.g4b
deleted file mode 100644
index 262bff9..0000000
--- a/src/shaders/mpeg2/vld/lib.g4b
+++ /dev/null
@@ -1,307 +0,0 @@
- { 0x00000005, 0x2da02d29, 0x00210a48, 0x001f001f },
- { 0x01000005, 0x20002d3c, 0x00210a48, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000012 },
- { 0x05000010, 0x20002d3c, 0x00210da0, 0x00090009 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 },
- { 0x05000010, 0x20002d3c, 0x00210da0, 0x00110011 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x05000010, 0x20002d3c, 0x00210da0, 0x00190019 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
- { 0x00000040, 0x2da03d29, 0x00210da0, 0xffe7ffe7 },
- { 0x00000009, 0x2da02d29, 0x00210da0, 0x00030003 },
- { 0x00000040, 0x2da02d29, 0x00210da0, 0x00400040 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 },
- { 0x00000040, 0x2da03d29, 0x00210da0, 0xfff7fff7 },
- { 0x00000009, 0x2da02d29, 0x00210da0, 0x00010001 },
- { 0x00000040, 0x2da02d29, 0x00210da0, 0x000a000a },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000005 },
- { 0x00000040, 0x2da03d29, 0x00210da0, 0xffefffef },
- { 0x00000009, 0x2da02d29, 0x00210da0, 0x00020002 },
- { 0x00000040, 0x2da02d29, 0x00210da0, 0x001c001c },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000001 },
- { 0x00000009, 0x2da00d29, 0x00210da0, 0x00000001 },
- { 0x00000001, 0x2dc00129, 0x00210da0, 0x00000000 },
- { 0x00800001, 0x2e000229, 0x00b10060, 0x00000000 },
- { 0x00800001, 0x2e200229, 0x00b10070, 0x00000000 },
- { 0x00800001, 0x2e400229, 0x00b10080, 0x00000000 },
- { 0x00800001, 0x2e600229, 0x00b10090, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x03f003e0 },
- { 0x01000005, 0x20002d3c, 0x00210a48, 0x08000800 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000a1 },
- { 0x00800001, 0x270001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x272001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x274001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x276001ad, 0x00ae0f40, 0x00000000 },
- { 0x01000005, 0x20002d3c, 0x00210a48, 0x04000400 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000099 },
- { 0x00800001, 0x278001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x27a001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x27c001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x27e001ad, 0x00ae0f40, 0x00000000 },
- { 0x01000005, 0x20002d3c, 0x00210a48, 0x02000200 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000091 },
- { 0x00800001, 0x280001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x282001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x284001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x286001ad, 0x00ae0f40, 0x00000000 },
- { 0x01000005, 0x20002d3c, 0x00210a48, 0x01000100 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000089 },
- { 0x00800001, 0x288001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x28a001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x28c001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x28e001ad, 0x00ae0f40, 0x00000000 },
- { 0x01000005, 0x20002d3c, 0x00210a48, 0x00800080 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000081 },
- { 0x00800001, 0x290001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x292001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x294001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x296001ad, 0x00ae0f40, 0x00000000 },
- { 0x01000005, 0x20002d3c, 0x00210a48, 0x00400040 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000079 },
- { 0x00800001, 0x298001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x29a001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x29c001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x29e001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x06f006e0 },
- { 0x02000005, 0x20002d3c, 0x00210a48, 0x08000800 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x00600001, 0x2a600169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2a800169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2aa00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2ac00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2ae00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b000169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b200169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b400169, 0x00000000, 0x00000000 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000077 },
- { 0x00600001, 0x2a6001ad, 0x00ae0400, 0x00000000 },
- { 0x00600001, 0x2a8001ad, 0x00ae0420, 0x00000000 },
- { 0x00600001, 0x2aa001ad, 0x00ae0440, 0x00000000 },
- { 0x00600001, 0x2ac001ad, 0x00ae0460, 0x00000000 },
- { 0x00600001, 0x2ae001ad, 0x00ae0480, 0x00000000 },
- { 0x00600001, 0x2b0001ad, 0x00ae04a0, 0x00000000 },
- { 0x00600001, 0x2b2001ad, 0x00ae04c0, 0x00000000 },
- { 0x00600001, 0x2b4001ad, 0x00ae04e0, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a48, 0x04000400 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x00600001, 0x2a700169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2a900169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2ab00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2ad00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2af00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b100169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b300169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b500169, 0x00000000, 0x00000000 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000061 },
- { 0x00600001, 0x2a7001ad, 0x00ae0400, 0x00000000 },
- { 0x00600001, 0x2a9001ad, 0x00ae0420, 0x00000000 },
- { 0x00600001, 0x2ab001ad, 0x00ae0440, 0x00000000 },
- { 0x00600001, 0x2ad001ad, 0x00ae0460, 0x00000000 },
- { 0x00600001, 0x2af001ad, 0x00ae0480, 0x00000000 },
- { 0x00600001, 0x2b1001ad, 0x00ae04a0, 0x00000000 },
- { 0x00600001, 0x2b3001ad, 0x00ae04c0, 0x00000000 },
- { 0x00600001, 0x2b5001ad, 0x00ae04e0, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a48, 0x02000200 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x00600001, 0x2b600169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b800169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2ba00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2bc00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2be00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2c000169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2c200169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2c400169, 0x00000000, 0x00000000 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000004b },
- { 0x00600001, 0x2b6001ad, 0x00ae0400, 0x00000000 },
- { 0x00600001, 0x2b8001ad, 0x00ae0420, 0x00000000 },
- { 0x00600001, 0x2ba001ad, 0x00ae0440, 0x00000000 },
- { 0x00600001, 0x2bc001ad, 0x00ae0460, 0x00000000 },
- { 0x00600001, 0x2be001ad, 0x00ae0480, 0x00000000 },
- { 0x00600001, 0x2c0001ad, 0x00ae04a0, 0x00000000 },
- { 0x00600001, 0x2c2001ad, 0x00ae04c0, 0x00000000 },
- { 0x00600001, 0x2c4001ad, 0x00ae04e0, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a48, 0x01000100 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x00600001, 0x2b700169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b900169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2bb00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2bd00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2bf00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2c100169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2c300169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2c500169, 0x00000000, 0x00000000 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000035 },
- { 0x00600001, 0x2b7001ad, 0x00ae0400, 0x00000000 },
- { 0x00600001, 0x2b9001ad, 0x00ae0420, 0x00000000 },
- { 0x00600001, 0x2bb001ad, 0x00ae0440, 0x00000000 },
- { 0x00600001, 0x2bd001ad, 0x00ae0460, 0x00000000 },
- { 0x00600001, 0x2bf001ad, 0x00ae0480, 0x00000000 },
- { 0x00600001, 0x2c1001ad, 0x00ae04a0, 0x00000000 },
- { 0x00600001, 0x2c3001ad, 0x00ae04c0, 0x00000000 },
- { 0x00600001, 0x2c5001ad, 0x00ae04e0, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a48, 0x00800080 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00800001, 0x2c600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0x2c800169, 0x00000000, 0x00000000 },
- { 0x00800001, 0x2ca00169, 0x00000000, 0x00000000 },
- { 0x00800001, 0x2cc00169, 0x00000000, 0x00000000 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000023 },
- { 0x00800001, 0x2c6001ad, 0x00ae0400, 0x00000000 },
- { 0x00800001, 0x2c8001ad, 0x00ae0440, 0x00000000 },
- { 0x00800001, 0x2ca001ad, 0x00ae0480, 0x00000000 },
- { 0x00800001, 0x2cc001ad, 0x00ae04c0, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a48, 0x00400040 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000005 },
- { 0x00800001, 0x2ce00169, 0x00000000, 0x00000000 },
- { 0x00800001, 0x2d000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0x2d200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0x2d400169, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00800001, 0x2ce001ad, 0x00ae0400, 0x00000000 },
- { 0x00800001, 0x2d0001ad, 0x00ae0440, 0x00000000 },
- { 0x00800001, 0x2d2001ad, 0x00ae0480, 0x00000000 },
- { 0x00800001, 0x2d4001ad, 0x00ae04c0, 0x00000000 },
- { 0x00000040, 0x34000c20, 0x00210fc8, 0x00000020 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802041, 0x2e8025a5, 0x008d8000, 0x008d0e00 },
- { 0x00802041, 0x2e8024a5, 0x008d0e80, 0x008c0da0 },
- { 0x0080200c, 0x2e802ca5, 0x008d0e80, 0x00040004 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802041, 0x2ec025a5, 0x008d8000, 0x008d0e20 },
- { 0x00802041, 0x2ec024a5, 0x008d0ec0, 0x008c0da0 },
- { 0x0080200c, 0x2ec02ca5, 0x008d0ec0, 0x00040004 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802041, 0x2f0025a5, 0x008d8000, 0x008d0e40 },
- { 0x00802041, 0x2f0024a5, 0x008d0f00, 0x008c0da0 },
- { 0x0080200c, 0x2f002ca5, 0x008d0f00, 0x00040004 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802041, 0x2f4025a5, 0x008d8000, 0x008d0e60 },
- { 0x00802041, 0x2f4024a5, 0x008d0f40, 0x008c0da0 },
- { 0x0080200c, 0x2f402ca5, 0x008d0f40, 0x00040004 },
- { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
- { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a },
- { 0x00802040, 0x24000ca5, 0x008d0400, 0x00000400 },
- { 0x00802040, 0x24400ca5, 0x008d0440, 0x00000400 },
- { 0x00802040, 0x24800ca5, 0x008d0480, 0x00000400 },
- { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00000400 },
- { 0x00802008, 0x24000ca5, 0x008d0400, 0x0000000b },
- { 0x00802008, 0x24400ca5, 0x008d0440, 0x0000000b },
- { 0x00802008, 0x24800ca5, 0x008d0480, 0x0000000b },
- { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x0000000b },
- { 0x00800001, 0x2dc001ad, 0x00ae0400, 0x00000000 },
- { 0x00800001, 0x2de001ad, 0x00ae0440, 0x00000000 },
- { 0x00800001, 0x2e0001ad, 0x00ae0480, 0x00000000 },
- { 0x00800001, 0x2e2001ad, 0x00ae04c0, 0x00000000 },
- { 0x00000001, 0x2a000001, 0x00210200, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0db00da0 },
- { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x00802040, 0x24000ca5, 0x008d0400, 0x00080000 },
- { 0x00802040, 0x24400ca5, 0x008d0440, 0x00080000 },
- { 0x00802040, 0x24800ca5, 0x008d0480, 0x00080000 },
- { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00080000 },
- { 0x00802008, 0x24000ca5, 0x008d0400, 0x00000014 },
- { 0x00802008, 0x24400ca5, 0x008d0440, 0x00000014 },
- { 0x00802008, 0x24800ca5, 0x008d0480, 0x00000014 },
- { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x00000014 },
- { 0x00000001, 0x22000020, 0x00210a00, 0x00000000 },
- { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x240014a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x242014a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x244014a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x246014a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x248014a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24a014a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24c014a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24e014a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x240814a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x242814a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x244814a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x246814a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x248814a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24a814a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24c814a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24e814a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x241014a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x243014a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x245014a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x247014a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x249014a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24b014a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24d014a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24f014a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x241814a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x243814a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x245814a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x247814a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x249814a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24b814a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24d814a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24f814a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x34000c20, 0x00210fc0, 0x00000020 },
diff --git a/src/shaders/mpeg2/vld/lib.g4b.gen5 b/src/shaders/mpeg2/vld/lib.g4b.gen5
deleted file mode 100644
index 2371beb..0000000
--- a/src/shaders/mpeg2/vld/lib.g4b.gen5
+++ /dev/null
@@ -1,307 +0,0 @@
- { 0x00000005, 0x2da02d29, 0x00210a48, 0x001f001f },
- { 0x01000005, 0x20002d3c, 0x00210a48, 0x00200020 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x05000010, 0x20002d3c, 0x00210da0, 0x00090009 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x05000010, 0x20002d3c, 0x00210da0, 0x00110011 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x05000010, 0x20002d3c, 0x00210da0, 0x00190019 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000040, 0x2da03d29, 0x00210da0, 0xffe7ffe7 },
- { 0x00000009, 0x2da02d29, 0x00210da0, 0x00030003 },
- { 0x00000040, 0x2da02d29, 0x00210da0, 0x00400040 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000012 },
- { 0x00000040, 0x2da03d29, 0x00210da0, 0xfff7fff7 },
- { 0x00000009, 0x2da02d29, 0x00210da0, 0x00010001 },
- { 0x00000040, 0x2da02d29, 0x00210da0, 0x000a000a },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x00000040, 0x2da03d29, 0x00210da0, 0xffefffef },
- { 0x00000009, 0x2da02d29, 0x00210da0, 0x00020002 },
- { 0x00000040, 0x2da02d29, 0x00210da0, 0x001c001c },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000002 },
- { 0x00000009, 0x2da00d29, 0x00210da0, 0x00000001 },
- { 0x00000001, 0x2dc00129, 0x00210da0, 0x00000000 },
- { 0x00800001, 0x2e000229, 0x00b10060, 0x00000000 },
- { 0x00800001, 0x2e200229, 0x00b10070, 0x00000000 },
- { 0x00800001, 0x2e400229, 0x00b10080, 0x00000000 },
- { 0x00800001, 0x2e600229, 0x00b10090, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x03f003e0 },
- { 0x01000005, 0x20002d3c, 0x00210a48, 0x08000800 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000142 },
- { 0x00800001, 0x270001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x272001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x274001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x276001ad, 0x00ae0f40, 0x00000000 },
- { 0x01000005, 0x20002d3c, 0x00210a48, 0x04000400 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000132 },
- { 0x00800001, 0x278001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x27a001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x27c001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x27e001ad, 0x00ae0f40, 0x00000000 },
- { 0x01000005, 0x20002d3c, 0x00210a48, 0x02000200 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000122 },
- { 0x00800001, 0x280001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x282001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x284001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x286001ad, 0x00ae0f40, 0x00000000 },
- { 0x01000005, 0x20002d3c, 0x00210a48, 0x01000100 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000112 },
- { 0x00800001, 0x288001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x28a001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x28c001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x28e001ad, 0x00ae0f40, 0x00000000 },
- { 0x01000005, 0x20002d3c, 0x00210a48, 0x00800080 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000102 },
- { 0x00800001, 0x290001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x292001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x294001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x296001ad, 0x00ae0f40, 0x00000000 },
- { 0x01000005, 0x20002d3c, 0x00210a48, 0x00400040 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000f2 },
- { 0x00800001, 0x298001ad, 0x00ae0e80, 0x00000000 },
- { 0x00800001, 0x29a001ad, 0x00ae0ec0, 0x00000000 },
- { 0x00800001, 0x29c001ad, 0x00ae0f00, 0x00000000 },
- { 0x00800001, 0x29e001ad, 0x00ae0f40, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x06f006e0 },
- { 0x02000005, 0x20002d3c, 0x00210a48, 0x08000800 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x00600001, 0x2a600169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2a800169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2aa00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2ac00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2ae00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b000169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b200169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b400169, 0x00000000, 0x00000000 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000ee },
- { 0x00600001, 0x2a6001ad, 0x00ae0400, 0x00000000 },
- { 0x00600001, 0x2a8001ad, 0x00ae0420, 0x00000000 },
- { 0x00600001, 0x2aa001ad, 0x00ae0440, 0x00000000 },
- { 0x00600001, 0x2ac001ad, 0x00ae0460, 0x00000000 },
- { 0x00600001, 0x2ae001ad, 0x00ae0480, 0x00000000 },
- { 0x00600001, 0x2b0001ad, 0x00ae04a0, 0x00000000 },
- { 0x00600001, 0x2b2001ad, 0x00ae04c0, 0x00000000 },
- { 0x00600001, 0x2b4001ad, 0x00ae04e0, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a48, 0x04000400 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x00600001, 0x2a700169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2a900169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2ab00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2ad00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2af00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b100169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b300169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b500169, 0x00000000, 0x00000000 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000c2 },
- { 0x00600001, 0x2a7001ad, 0x00ae0400, 0x00000000 },
- { 0x00600001, 0x2a9001ad, 0x00ae0420, 0x00000000 },
- { 0x00600001, 0x2ab001ad, 0x00ae0440, 0x00000000 },
- { 0x00600001, 0x2ad001ad, 0x00ae0460, 0x00000000 },
- { 0x00600001, 0x2af001ad, 0x00ae0480, 0x00000000 },
- { 0x00600001, 0x2b1001ad, 0x00ae04a0, 0x00000000 },
- { 0x00600001, 0x2b3001ad, 0x00ae04c0, 0x00000000 },
- { 0x00600001, 0x2b5001ad, 0x00ae04e0, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a48, 0x02000200 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x00600001, 0x2b600169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b800169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2ba00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2bc00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2be00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2c000169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2c200169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2c400169, 0x00000000, 0x00000000 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000096 },
- { 0x00600001, 0x2b6001ad, 0x00ae0400, 0x00000000 },
- { 0x00600001, 0x2b8001ad, 0x00ae0420, 0x00000000 },
- { 0x00600001, 0x2ba001ad, 0x00ae0440, 0x00000000 },
- { 0x00600001, 0x2bc001ad, 0x00ae0460, 0x00000000 },
- { 0x00600001, 0x2be001ad, 0x00ae0480, 0x00000000 },
- { 0x00600001, 0x2c0001ad, 0x00ae04a0, 0x00000000 },
- { 0x00600001, 0x2c2001ad, 0x00ae04c0, 0x00000000 },
- { 0x00600001, 0x2c4001ad, 0x00ae04e0, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a48, 0x01000100 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x00600001, 0x2b700169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b900169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2bb00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2bd00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2bf00169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2c100169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2c300169, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2c500169, 0x00000000, 0x00000000 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000006a },
- { 0x00600001, 0x2b7001ad, 0x00ae0400, 0x00000000 },
- { 0x00600001, 0x2b9001ad, 0x00ae0420, 0x00000000 },
- { 0x00600001, 0x2bb001ad, 0x00ae0440, 0x00000000 },
- { 0x00600001, 0x2bd001ad, 0x00ae0460, 0x00000000 },
- { 0x00600001, 0x2bf001ad, 0x00ae0480, 0x00000000 },
- { 0x00600001, 0x2c1001ad, 0x00ae04a0, 0x00000000 },
- { 0x00600001, 0x2c3001ad, 0x00ae04c0, 0x00000000 },
- { 0x00600001, 0x2c5001ad, 0x00ae04e0, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a48, 0x00800080 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x00800001, 0x2c600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0x2c800169, 0x00000000, 0x00000000 },
- { 0x00800001, 0x2ca00169, 0x00000000, 0x00000000 },
- { 0x00800001, 0x2cc00169, 0x00000000, 0x00000000 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00800080 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000046 },
- { 0x00800001, 0x2c6001ad, 0x00ae0400, 0x00000000 },
- { 0x00800001, 0x2c8001ad, 0x00ae0440, 0x00000000 },
- { 0x00800001, 0x2ca001ad, 0x00ae0480, 0x00000000 },
- { 0x00800001, 0x2cc001ad, 0x00ae04c0, 0x00000000 },
- { 0x02000005, 0x20002d3c, 0x00210a48, 0x00400040 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x00800001, 0x2ce00169, 0x00000000, 0x00000000 },
- { 0x00800001, 0x2d000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0x2d200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0x2d400169, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x00000001, 0x2fa00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c },
- { 0x00800001, 0x2ce001ad, 0x00ae0400, 0x00000000 },
- { 0x00800001, 0x2d0001ad, 0x00ae0440, 0x00000000 },
- { 0x00800001, 0x2d2001ad, 0x00ae0480, 0x00000000 },
- { 0x00800001, 0x2d4001ad, 0x00ae04c0, 0x00000000 },
- { 0x00000040, 0x34000c20, 0x00210fc8, 0x00000020 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802041, 0x2e8025a5, 0x008d8000, 0x008d0e00 },
- { 0x00802041, 0x2e8024a5, 0x008d0e80, 0x008c0da0 },
- { 0x0080200c, 0x2e802ca5, 0x008d0e80, 0x00040004 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802041, 0x2ec025a5, 0x008d8000, 0x008d0e20 },
- { 0x00802041, 0x2ec024a5, 0x008d0ec0, 0x008c0da0 },
- { 0x0080200c, 0x2ec02ca5, 0x008d0ec0, 0x00040004 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802041, 0x2f0025a5, 0x008d8000, 0x008d0e40 },
- { 0x00802041, 0x2f0024a5, 0x008d0f00, 0x008c0da0 },
- { 0x0080200c, 0x2f002ca5, 0x008d0f00, 0x00040004 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802041, 0x2f4025a5, 0x008d8000, 0x008d0e60 },
- { 0x00802041, 0x2f4024a5, 0x008d0f40, 0x008c0da0 },
- { 0x0080200c, 0x2f402ca5, 0x008d0f40, 0x00040004 },
- { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
- { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00802040, 0x24000ca5, 0x008d0400, 0x00000400 },
- { 0x00802040, 0x24400ca5, 0x008d0440, 0x00000400 },
- { 0x00802040, 0x24800ca5, 0x008d0480, 0x00000400 },
- { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00000400 },
- { 0x00802008, 0x24000ca5, 0x008d0400, 0x0000000b },
- { 0x00802008, 0x24400ca5, 0x008d0440, 0x0000000b },
- { 0x00802008, 0x24800ca5, 0x008d0480, 0x0000000b },
- { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x0000000b },
- { 0x00800001, 0x2dc001ad, 0x00ae0400, 0x00000000 },
- { 0x00800001, 0x2de001ad, 0x00ae0440, 0x00000000 },
- { 0x00800001, 0x2e0001ad, 0x00ae0480, 0x00000000 },
- { 0x00800001, 0x2e2001ad, 0x00ae04c0, 0x00000000 },
- { 0x00000001, 0x2a000001, 0x00210200, 0x00000000 },
- { 0x00000001, 0x22000060, 0x00000000, 0x0db00da0 },
- { 0x00000001, 0x2fc00001, 0x00001400, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x00802040, 0x24000ca5, 0x008d0400, 0x00080000 },
- { 0x00802040, 0x24400ca5, 0x008d0440, 0x00080000 },
- { 0x00802040, 0x24800ca5, 0x008d0480, 0x00080000 },
- { 0x00802040, 0x24c00ca5, 0x008d04c0, 0x00080000 },
- { 0x00802008, 0x24000ca5, 0x008d0400, 0x00000014 },
- { 0x00802008, 0x24400ca5, 0x008d0440, 0x00000014 },
- { 0x00802008, 0x24800ca5, 0x008d0480, 0x00000014 },
- { 0x00802008, 0x24c00ca5, 0x008d04c0, 0x00000014 },
- { 0x00000001, 0x22000020, 0x00210a00, 0x00000000 },
- { 0x00000040, 0x34000c20, 0x00210fa0, 0x00000020 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x240014a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x242014a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x244014a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x246014a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x248014a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24a014a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24c014a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24e014a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x240814a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x242814a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x244814a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x246814a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x248814a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24a814a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24c814a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24e814a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x241014a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x243014a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x245014a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x247014a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x249014a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24b014a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24d014a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24f014a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x22000c00, 0x00210200, 0x00200020 },
- { 0x00802054, 0x250015a5, 0x008d8000, 0x008d00a0 },
- { 0x00802054, 0x254015a5, 0x008d8000, 0x008d00e0 },
- { 0x00802054, 0x258015a5, 0x008d8000, 0x008d0120 },
- { 0x00802054, 0x25c015a5, 0x008d8000, 0x008d0160 },
- { 0x00802054, 0x260015a5, 0x008d8000, 0x008d01a0 },
- { 0x00802054, 0x264015a5, 0x008d8000, 0x008d01e0 },
- { 0x00802054, 0x268015a5, 0x008d8000, 0x008d0220 },
- { 0x00802054, 0x26c015a5, 0x008d8000, 0x008d0260 },
- { 0x00200040, 0x241814a5, 0x00800500, 0x00800510 },
- { 0x00200040, 0x243814a5, 0x00800540, 0x00800550 },
- { 0x00200040, 0x245814a5, 0x00800580, 0x00800590 },
- { 0x00200040, 0x247814a5, 0x008005c0, 0x008005d0 },
- { 0x00200040, 0x249814a5, 0x00800600, 0x00800610 },
- { 0x00200040, 0x24b814a5, 0x00800640, 0x00800650 },
- { 0x00200040, 0x24d814a5, 0x00800680, 0x00800690 },
- { 0x00200040, 0x24f814a5, 0x008006c0, 0x008006d0 },
- { 0x00000040, 0x34000c20, 0x00210fc0, 0x00000020 },
diff --git a/src/shaders/mpeg2/vld/motion_field_uv.g4i b/src/shaders/mpeg2/vld/motion_field_uv.g4i
deleted file mode 100644
index 4598c85..0000000
--- a/src/shaders/mpeg2/vld/motion_field_uv.g4i
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright © 2008 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Zhang Hua jun <huajun.zhang@intel.com>
- * Xing Dong sheng <dongsheng.xing@intel.com>
- *
- */
- and.z (1) null mv1<1,1,1>W 1W {align1};
- (f0) jmpi L1;
- and.z (1) null mv2<1,1,1>W 1W {align1};
- (f0) jmpi L2;
- include(`read_field_x1y1_uv.g4i')
- jmpi L5;
-L2:
- include(`read_field_x1y0_uv.g4i')
- jmpi L5;
-L1:
- and.z (1) null mv2<1,1,1>W 1W {align1};
- (f0) jmpi L4;
- include(`read_field_x0y1_uv.g4i')
- jmpi L5;
-L4:
- include(`read_field_x0y0_uv.g4i')
-L5:
-
diff --git a/src/shaders/mpeg2/vld/motion_field_y.g4i b/src/shaders/mpeg2/vld/motion_field_y.g4i
deleted file mode 100644
index 47d2ec4..0000000
--- a/src/shaders/mpeg2/vld/motion_field_y.g4i
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Zhang Hua jun <huajun.zhang@intel.com>
- * Xing Dong sheng <dongsheng.xing@intel.com>
- *
- */
- and.z (1) null mv1<1,1,1>W 1UW {align1};
- (f0) jmpi L1;
- and.z (1) null mv2<1,1,1>W 1UW {align1};
- (f0) jmpi L2;
- include(`read_field_x1y1_y.g4i')
- jmpi L5;
-L2:
- include(`read_field_x1y0_y.g4i')
- jmpi L5;
-L1:
- and.z (1) null mv2<1,1,1>W 1UW {align1};
- (f0) jmpi L4;
- include(`read_field_x0y1_y.g4i')
- jmpi L5;
-L4:
- include(`read_field_x0y0_y.g4i')
-L5:
diff --git a/src/shaders/mpeg2/vld/motion_frame_uv.g4i b/src/shaders/mpeg2/vld/motion_frame_uv.g4i
deleted file mode 100644
index 00a5f2b..0000000
--- a/src/shaders/mpeg2/vld/motion_frame_uv.g4i
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright © 2008 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Zhang Hua jun <huajun.zhang@intel.com>
- * Xing Dong sheng <dongsheng.xing@intel.com>
- */
-
- and.z (1) null mv1<1,1,1>UW 2UD {align1};
- (f0) jmpi LL1;
- and.z (1) null mv2<1,1,1>UW 2UD {align1};
- (f0) jmpi LL2;
- include(`read_frame_x1y1_uv.g4i')
- jmpi LL5;
-LL2:
- include(`read_frame_x1y0_uv.g4i')
- jmpi LL5;
-LL1:
- and.z (1) null mv2<1,1,1>UW 2UD {align1};
- (f0) jmpi LL4;
- include(`read_frame_x0y1_uv.g4i')
- jmpi LL5;
-LL4:
- include(`read_frame_x0y0_uv.g4i')
-LL5:
diff --git a/src/shaders/mpeg2/vld/motion_frame_y.g4i b/src/shaders/mpeg2/vld/motion_frame_y.g4i
deleted file mode 100644
index 88c8085..0000000
--- a/src/shaders/mpeg2/vld/motion_frame_y.g4i
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- */
-
-/* if (motion_vect.x & 1) {
- * if (motion_vect.y & 1)
- * half_pixel in x and y;
- * else
- * half_pixel in x;
- * } else {
- * if (motion_vect.y & 1)
- * half_pixel y;
- * else
- * full_pixel_read;
- * }
- */
-
- and.z (1) null mv1<1,1,1>UW 1UD {align1};
- (f0) jmpi LL1;
- and.z (1) null mv2<1,1,1>UW 1UD {align1};
- (f0) jmpi LL2;
- include(`read_frame_x1y1_y.g4i')
- jmpi LL5;
-LL2:
- include(`read_frame_x1y0_y.g4i')
- jmpi LL5;
-LL1:
- and.z (1) null mv2<1,1,1>UW 1UD {align1};
- (f0) jmpi LL4;
- include(`read_frame_x0y1_y.g4i')
- jmpi LL5;
-LL4:
- include(`read_frame_x0y0_y.g4i')
-LL5:
-
diff --git a/src/shaders/mpeg2/vld/null.g4a b/src/shaders/mpeg2/vld/null.g4a
deleted file mode 100644
index 1e1dcea..0000000
--- a/src/shaders/mpeg2/vld/null.g4a
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright © 2008 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- *
- */
-mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1};
-mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1};
-define(`UV_red',`0xffffffffUD')
-define(`UV_white',`0x7f7f7f7fUD')
-define(`UV_green',`0x00000000UD')
-
-mov(2) g6.0<1>UD g82.12<2,2,1>UW {align1};
-mov(1) g6.8<1>UD 0x000f000fUD { align1 };
-mov(16) m1<1>UD 0xFFFFFFFFUD {align1 compr};
-mov(16) m3<1>UD 0xFFFFFFFFUD {align1 compr};
-mov(16) m5<1>UD 0xFFFFFFFFUD {align1 compr};
-mov(16) m7<1>UD 0xFFFFFFFFUD {align1 compr};
-send (16) 0 acc0<1>UW g6<8,8,1>UW write(0, 0, 2, 0) mlen 9 rlen 0 { align1 };
-
-/*Fill U buffer & V buffer with 0x7F*/
-shr (2) g6.0<1>UD g82.12<2,2,1>UW 1UW {align1};
-
-mov(1) g6.8<1>UD 0x00070007UD { align1 };
-mov (16) m1<1>UD UV_white {align1 compr};
-//mov (16) m1<1>UD g1.0<16,8,1>UD {align1 compr};
-send (16) 0 acc0<1>UW g6<8,8,1>UW write(2, 0, 2, 0) mlen 3 rlen 0 { align1 };
-send (16) 0 acc0<1>UW g6<8,8,1>UW write(1, 0, 2, 0) mlen 3 rlen 0 { align1 };
-
-send (16) 0 acc0<1>UW g0<8,8,1>UW
- thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT};
diff --git a/src/shaders/mpeg2/vld/read_field_x0y0_uv.g4i b/src/shaders/mpeg2/vld/read_field_x0y0_uv.g4i
deleted file mode 100644
index 36e589a..0000000
--- a/src/shaders/mpeg2/vld/read_field_x0y0_uv.g4i
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g115: message descriptor for reading reference data */
-
-mov (1) g115.8<1>UD 0x7000FUD {align1}; // 8*16/32=4
-send (16) 0 g40.0<1>UW g115<16,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
-send (16) 0 g45.0<1>UW g115<16,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
-
-mov (16) g32.0<1>UW g40.0<16,8,1>UB {align1};
-mov (16) g33.0<1>UW g41.0<16,8,1>UB {align1};
-mov (16) g34.0<1>UW g42.0<16,8,1>UB {align1};
-mov (16) g35.0<1>UW g43.0<16,8,1>UB {align1};
-mov (16) g36.0<1>UW g45.0<16,8,1>UB {align1};
-mov (16) g37.0<1>UW g46.0<16,8,1>UB {align1};
-mov (16) g38.0<1>UW g47.0<16,8,1>UB {align1};
-mov (16) g39.0<1>UW g48.0<16,8,1>UB {align1};
diff --git a/src/shaders/mpeg2/vld/read_field_x0y0_y.g4i b/src/shaders/mpeg2/vld/read_field_x0y0_y.g4i
deleted file mode 100644
index e549598..0000000
--- a/src/shaders/mpeg2/vld/read_field_x0y0_y.g4i
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g115: message descriptor for reading reference data */
-mov (1) g115.8<1>UD 0x01FUD {align1};
-send (16) 0 g40.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
-send (16) 0 g42.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
-send (16) 0 g44.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
-send (16) 0 g46.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
-mov (1) g115.8<1>UD 0x07001FUD {align1};
-send (16) 0 g48.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
-
-mov (16) g32.0<1>UW g40.0<16,16,1>UB {align1};
-mov (16) g33.0<1>UW g42.0<16,16,1>UB {align1};
-mov (16) g34.0<1>UW g44.0<16,16,1>UB {align1};
-mov (16) g35.0<1>UW g46.0<16,16,1>UB {align1};
-mov (16) g36.0<1>UW g48.0<16,16,1>UB {align1};
-mov (16) g37.0<1>UW g50.0<16,16,1>UB {align1};
-mov (16) g38.0<1>UW g52.0<16,16,1>UB {align1};
-mov (16) g39.0<1>UW g54.0<16,16,1>UB {align1};
diff --git a/src/shaders/mpeg2/vld/read_field_x0y1_uv.g4i b/src/shaders/mpeg2/vld/read_field_x0y1_uv.g4i
deleted file mode 100644
index ac8030b..0000000
--- a/src/shaders/mpeg2/vld/read_field_x0y1_uv.g4i
+++ /dev/null
@@ -1,28 +0,0 @@
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g115: message descriptor for reading reference data */
-
-mov (1) g115.8<1>UD 0x07000FUD {align1}; // 8*16/32=4
-send (16) 0 g40.0<1>UW g115<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
-send (16) 0 g45.0<1>UW g115<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
-mov (1) g115.8<1>UD 0xFUD {align1};
-add (1) g115.4<1>UD g115.4<1,1,1>UD 8UD {align1};
-send (16) 0 g44.0<1>UW g115<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 1 {align1};//U
-send (16) 0 g49.0<1>UW g115<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 1 {align1};//V
-
-avg (16) g32.0<1>UW g40.0<16,8,1>UB g41.0<16,8,1>UB {align1};
-avg (16) g33.0<1>UW g41.0<16,8,1>UB g42.0<16,8,1>UB {align1};
-avg (16) g34.0<1>UW g42.0<16,8,1>UB g43.0<16,8,1>UB {align1};
-avg (16) g35.0<1>UW g43.0<16,8,1>UB g44.0<16,8,1>UB {align1};
-
-avg (16) g36.0<1>UW g45.0<16,8,1>UB g46.0<16,8,1>UB {align1};
-avg (16) g37.0<1>UW g46.0<16,8,1>UB g47.0<16,8,1>UB {align1};
-avg (16) g38.0<1>UW g47.0<16,8,1>UB g48.0<16,8,1>UB {align1};
-avg (16) g39.0<1>UW g48.0<16,8,1>UB g49.0<16,8,1>UB {align1};
diff --git a/src/shaders/mpeg2/vld/read_field_x0y1_y.g4i b/src/shaders/mpeg2/vld/read_field_x0y1_y.g4i
deleted file mode 100644
index 7a7909f..0000000
--- a/src/shaders/mpeg2/vld/read_field_x0y1_y.g4i
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g115: message descriptor for reading reference data */
-mov (1) g115.8<1>UD 0x01FUD {align1};
-send (16) 0 g40.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
-send (16) 0 g42.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
-send (16) 0 g44.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
-send (16) 0 g46.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
-mov (1) g115.8<1>UD 0x07001FUD {align1};
-send (16) 0 g48.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
-add (1) g115.4<1>UD g115.4<1,1,1>UD 8UD {align1};
-mov (1) g115.8<1>UD 0x1FUD {align1};
-send (16) 0 g56.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-
-avg.sat (16) g32.0<1>UW g40.0<16,16,1>UB g42.0<16,16,1>UB {align1};
-avg.sat (16) g33.0<1>UW g42.0<16,16,1>UB g44.0<16,16,1>UB {align1};
-avg.sat (16) g34.0<1>UW g44.0<16,16,1>UB g46.0<16,16,1>UB {align1};
-avg.sat (16) g35.0<1>UW g46.0<16,16,1>UB g48.0<16,16,1>UB {align1};
-avg.sat (16) g36.0<1>UW g48.0<16,16,1>UB g50.0<16,16,1>UB {align1};
-avg.sat (16) g37.0<1>UW g50.0<16,16,1>UB g52.0<16,16,1>UB {align1};
-avg.sat (16) g38.0<1>UW g52.0<16,16,1>UB g54.0<16,16,1>UB {align1};
-avg.sat (16) g39.0<1>UW g54.0<16,16,1>UB g56.0<16,16,1>UB {align1};
diff --git a/src/shaders/mpeg2/vld/read_field_x1y0_uv.g4i b/src/shaders/mpeg2/vld/read_field_x1y0_uv.g4i
deleted file mode 100644
index 4c36438..0000000
--- a/src/shaders/mpeg2/vld/read_field_x1y0_uv.g4i
+++ /dev/null
@@ -1,24 +0,0 @@
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g115: message descriptor for reading reference data */
-
-mov (1) g115.8<1>UD 0x07000FUD {align1}; // 8*16/32=4
-send (16) 0 g40.0<1>UW g115<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
-send (16) 0 g44.0<1>UW g115<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
-
-avg (16) g32.0<1>UW g40.0<16,8,1>UB g40.1<16,8,1>UB {align1};
-avg (16) g33.0<1>UW g41.0<16,8,1>UB g41.1<16,8,1>UB {align1};
-avg (16) g34.0<1>UW g42.0<16,8,1>UB g42.1<16,8,1>UB {align1};
-avg (16) g35.0<1>UW g43.0<16,8,1>UB g43.1<16,8,1>UB {align1};
-
-avg (16) g36.0<1>UW g44.0<16,8,1>UB g44.1<16,8,1>UB {align1};
-avg (16) g37.0<1>UW g45.0<16,8,1>UB g45.1<16,8,1>UB {align1};
-avg (16) g38.0<1>UW g46.0<16,8,1>UB g46.1<16,8,1>UB {align1};
-avg (16) g39.0<1>UW g47.0<16,8,1>UB g47.1<16,8,1>UB {align1};
diff --git a/src/shaders/mpeg2/vld/read_field_x1y0_y.g4i b/src/shaders/mpeg2/vld/read_field_x1y0_y.g4i
deleted file mode 100644
index c8ff505..0000000
--- a/src/shaders/mpeg2/vld/read_field_x1y0_y.g4i
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g115: message descriptor for reading reference data */
-mov (1) g115.8<1>UD 0x01FUD {align1};
-send (16) 0 g40.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
-send (16) 0 g42.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
-send (16) 0 g44.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
-send (16) 0 g46.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
-mov (1) g115.8<1>UD 0x07001FUD {align1};
-send (16) 0 g48.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
-
-avg.sat (16) g32.0<1>UW g40.0<16,16,1>UB g40.1<16,16,1>UB {align1};
-avg.sat (16) g33.0<1>UW g42.0<16,16,1>UB g42.1<16,16,1>UB {align1};
-avg.sat (16) g34.0<1>UW g44.0<16,16,1>UB g44.1<16,16,1>UB {align1};
-avg.sat (16) g35.0<1>UW g46.0<16,16,1>UB g46.1<16,16,1>UB {align1};
-avg.sat (16) g36.0<1>UW g48.0<16,16,1>UB g48.1<16,16,1>UB {align1};
-avg.sat (16) g37.0<1>UW g50.0<16,16,1>UB g50.1<16,16,1>UB {align1};
-avg.sat (16) g38.0<1>UW g52.0<16,16,1>UB g52.1<16,16,1>UB {align1};
-avg.sat (16) g39.0<1>UW g54.0<16,16,1>UB g54.1<16,16,1>UB {align1};
diff --git a/src/shaders/mpeg2/vld/read_field_x1y1_uv.g4i b/src/shaders/mpeg2/vld/read_field_x1y1_uv.g4i
deleted file mode 100644
index 816dd72..0000000
--- a/src/shaders/mpeg2/vld/read_field_x1y1_uv.g4i
+++ /dev/null
@@ -1,53 +0,0 @@
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g115: message descriptor for reading reference data */
-mov (1) g115.8<1>UD 0x07000FUD {align1};
-send (16) 0 g40.0<1>UW g115<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U
-send (16) 0 g45.0<1>UW g115<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V
-mov (1) g115.8<1>UD 0x01000FUD {align1};
-add (1) g115.4<1>UD g115.4<1,1,1>UD 8UD {align1};
-send (16) 0 g44.0<1>UW g115<8,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 1 {align1};//U
-send (16) 0 g49.0<1>UW g115<8,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 1 {align1};//V
-//U
-add (16) g32.0<1>UW g40.0<16,8,1>UB g41.0<16,8,1>UB {align1};
-add (16) g33.0<1>UW g41.0<16,8,1>UB g42.0<16,8,1>UB {align1};
-add (16) g34.0<1>UW g42.0<16,8,1>UB g43.0<16,8,1>UB {align1};
-add (16) g35.0<1>UW g43.0<16,8,1>UB g44.0<16,8,1>UB {align1};
-
-add (16) g32.0<1>UW g32.0<16,8,1>UW g40.1<16,8,1>UB {align1};
-add (16) g33.0<1>UW g33.0<16,8,1>UW g41.1<16,8,1>UB {align1};
-add (16) g34.0<1>UW g34.0<16,8,1>UW g42.1<16,8,1>UB {align1};
-add (16) g35.0<1>UW g35.0<16,8,1>UW g43.1<16,8,1>UB {align1};
-
-add (16) g32.0<1>UW g32.0<16,8,1>UW g41.1<16,8,1>UB {align1};
-add (16) g33.0<1>UW g33.0<16,8,1>UW g42.1<16,8,1>UB {align1};
-add (16) g34.0<1>UW g34.0<16,8,1>UW g43.1<16,8,1>UB {align1};
-add (16) g35.0<1>UW g35.0<16,8,1>UW g44.1<16,8,1>UB {align1};
-//V
-add (16) g36.0<1>UW g45.0<16,8,1>UB g46.0<16,8,1>UB {align1};
-add (16) g37.0<1>UW g46.0<16,8,1>UB g47.0<16,8,1>UB {align1};
-add (16) g38.0<1>UW g47.0<16,8,1>UB g48.0<16,8,1>UB {align1};
-add (16) g39.0<1>UW g48.0<16,8,1>UB g49.0<16,8,1>UB {align1};
-
-add (16) g36.0<1>UW g36.0<16,8,1>UW g45.1<16,8,1>UB {align1};
-add (16) g37.0<1>UW g37.0<16,8,1>UW g46.1<16,8,1>UB {align1};
-add (16) g38.0<1>UW g38.0<16,8,1>UW g47.1<16,8,1>UB {align1};
-add (16) g39.0<1>UW g39.0<16,8,1>UW g48.1<16,8,1>UB {align1};
-
-add (16) g36.0<1>UW g36.0<16,8,1>UW g46.1<16,8,1>UB {align1};
-add (16) g37.0<1>UW g37.0<16,8,1>UW g47.1<16,8,1>UB {align1};
-add (16) g38.0<1>UW g38.0<16,8,1>UW g48.1<16,8,1>UB {align1};
-add (16) g39.0<1>UW g39.0<16,8,1>UW g49.1<16,8,1>UB {align1};
-
-shr (32) g32.0<1>UW g32.0<16,16,1>UW 2UW {align1 compr};
-shr (32) g34.0<1>UW g34.0<16,16,1>UW 2UW {align1 compr};
-shr (32) g36.0<1>UW g36.0<16,16,1>UW 2UW {align1 compr};
-shr (32) g38.0<1>UW g38.0<16,16,1>UW 2UW {align1 compr};
-
diff --git a/src/shaders/mpeg2/vld/read_field_x1y1_y.g4i b/src/shaders/mpeg2/vld/read_field_x1y1_y.g4i
deleted file mode 100644
index dcc9ebf..0000000
--- a/src/shaders/mpeg2/vld/read_field_x1y1_y.g4i
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data
- g115: message descriptor for reading reference data */
-mov (1) g115.8<1>UD 0x01FUD {align1};
-send (16) 0 g40.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
-send (16) 0 g42.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
-send (16) 0 g44.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
-send (16) 0 g46.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1};
-mov (1) g115.8<1>UD 0x07001FUD {align1};
-send (16) 0 g48.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1};
-add (1) g115.4<1>UD g115.4<1,1,1>UD 8UD {align1};
-mov (1) g115.8<1>UD 0x1FUD {align1};
-send (16) 0 g56.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1};
-
-add (16) g32.0<1>UW g40.0<16,16,1>UB g42.0<16,16,1>UB {align1};
-add (16) g33.0<1>UW g42.0<16,16,1>UB g44.0<16,16,1>UB {align1};
-add (16) g34.0<1>UW g44.0<16,16,1>UB g46.0<16,16,1>UB {align1};
-add (16) g35.0<1>UW g46.0<16,16,1>UB g48.0<16,16,1>UB {align1};
-add (16) g36.0<1>UW g48.0<16,16,1>UB g50.0<16,16,1>UB {align1};
-add (16) g37.0<1>UW g50.0<16,16,1>UB g52.0<16,16,1>UB {align1};
-add (16) g38.0<1>UW g52.0<16,16,1>UB g54.0<16,16,1>UB {align1};
-add (16) g39.0<1>UW g54.0<16,16,1>UB g56.0<16,16,1>UB {align1};
-
-add (16) g32.0<1>UW g32.0<16,16,1>UW g40.1<16,16,1>UB {align1};
-add (16) g33.0<1>UW g33.0<16,16,1>UW g42.1<16,16,1>UB {align1};
-add (16) g34.0<1>UW g34.0<16,16,1>UW g44.1<16,16,1>UB {align1};
-add (16) g35.0<1>UW g35.0<16,16,1>UW g46.1<16,16,1>UB {align1};
-add (16) g36.0<1>UW g36.0<16,16,1>UW g48.1<16,16,1>UB {align1};
-add (16) g37.0<1>UW g37.0<16,16,1>UW g50.1<16,16,1>UB {align1};
-add (16) g38.0<1>UW g38.0<16,16,1>UW g52.1<16,16,1>UB {align1};
-add (16) g39.0<1>UW g39.0<16,16,1>UW g54.1<16,16,1>UB {align1};
-
-add (16) g32.0<1>UW g32.0<16,16,1>UW g42.1<16,16,1>UB {align1};
-add (16) g33.0<1>UW g33.0<16,16,1>UW g44.1<16,16,1>UB {align1};
-add (16) g34.0<1>UW g34.0<16,16,1>UW g46.1<16,16,1>UB {align1};
-add (16) g35.0<1>UW g35.0<16,16,1>UW g48.1<16,16,1>UB {align1};
-add (16) g36.0<1>UW g36.0<16,16,1>UW g50.1<16,16,1>UB {align1};
-add (16) g37.0<1>UW g37.0<16,16,1>UW g52.1<16,16,1>UB {align1};
-add (16) g38.0<1>UW g38.0<16,16,1>UW g54.1<16,16,1>UB {align1};
-add (16) g39.0<1>UW g39.0<16,16,1>UW g56.1<16,16,1>UB {align1};
-
-shr (16) g32.0<1>UW g32.0<16,16,1>UW 2UW {align1};
-shr (16) g33.0<1>UW g33.0<16,16,1>UW 2UW {align1};
-shr (16) g34.0<1>UW g34.0<16,16,1>UW 2UW {align1};
-shr (16) g35.0<1>UW g35.0<16,16,1>UW 2UW {align1};
-shr (16) g36.0<1>UW g36.0<16,16,1>UW 2UW {align1};
-shr (16) g37.0<1>UW g37.0<16,16,1>UW 2UW {align1};
-shr (16) g38.0<1>UW g38.0<16,16,1>UW 2UW {align1};
-shr (16) g39.0<1>UW g39.0<16,16,1>UW 2UW {align1};
diff --git a/src/shaders/mpeg2/vld/read_frame_x0y0_uv.g4i b/src/shaders/mpeg2/vld/read_frame_x0y0_uv.g4i
deleted file mode 100644
index 63f898f..0000000
--- a/src/shaders/mpeg2/vld/read_frame_x0y0_uv.g4i
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g32: message descriptor for reading reference data
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data */
-mov (1) g32.8<1>UD 0x007000fUD {align1};
-send (16) 0 g36.0<1>UW g32<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 4 {align1};
-send (16) 0 g40.0<1>UW g32<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 4 {align1};
-
-mov (16) g74.0<1>UW g36.0<16,8,1>UB {align1};
-mov (16) g75.0<1>UW g37.0<16,8,1>UB {align1};
-mov (16) g76.0<1>UW g38.0<16,8,1>UB {align1};
-mov (16) g77.0<1>UW g39.0<16,8,1>UB {align1};
-mov (16) g78.0<1>UW g40.0<16,8,1>UB {align1};
-mov (16) g79.0<1>UW g41.0<16,8,1>UB {align1};
-mov (16) g80.0<1>UW g42.0<16,8,1>UB {align1};
-mov (16) g81.0<1>UW g43.0<16,8,1>UB {align1};
diff --git a/src/shaders/mpeg2/vld/read_frame_x0y0_y.g4i b/src/shaders/mpeg2/vld/read_frame_x0y0_y.g4i
deleted file mode 100644
index 3ab5ccd..0000000
--- a/src/shaders/mpeg2/vld/read_frame_x0y0_y.g4i
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g32: message descriptor for reading reference data
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data */
-mov (1) g32.8<1>UD 0x007001FUD {align1};
-send (16) 0 g38.0<1>UW g32<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-send (16) 0 g46.0<1>UW g32<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1};
-
-mov (16) g58.0<1>UW g38.0<16,16,1>UB {align1};
-mov (16) g59.0<1>UW g39.0<16,16,1>UB {align1};
-mov (16) g60.0<1>UW g40.0<16,16,1>UB {align1};
-mov (16) g61.0<1>UW g41.0<16,16,1>UB {align1};
-mov (16) g62.0<1>UW g42.0<16,16,1>UB {align1};
-mov (16) g63.0<1>UW g43.0<16,16,1>UB {align1};
-mov (16) g64.0<1>UW g44.0<16,16,1>UB {align1};
-mov (16) g65.0<1>UW g45.0<16,16,1>UB {align1};
-mov (16) g66.0<1>UW g46.0<16,16,1>UB {align1};
-mov (16) g67.0<1>UW g47.0<16,16,1>UB {align1};
-mov (16) g68.0<1>UW g48.0<16,16,1>UB {align1};
-mov (16) g69.0<1>UW g49.0<16,16,1>UB {align1};
-mov (16) g70.0<1>UW g50.0<16,16,1>UB {align1};
-mov (16) g71.0<1>UW g51.0<16,16,1>UB {align1};
-mov (16) g72.0<1>UW g52.0<16,16,1>UB {align1};
-mov (16) g73.0<1>UW g53.0<16,16,1>UB {align1};
diff --git a/src/shaders/mpeg2/vld/read_frame_x0y1_uv.g4i b/src/shaders/mpeg2/vld/read_frame_x0y1_uv.g4i
deleted file mode 100644
index 6351ec5..0000000
--- a/src/shaders/mpeg2/vld/read_frame_x0y1_uv.g4i
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright © 2008 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDINg BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINgEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIgHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAgES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISINg FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINgS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Zhang Hua jun <huajun.zhang@intel.com>
- * Xing Dong sheng <dongsheng.xing@intel.com>
- *
- */
-mov (1) g32.8<1>UD 0x007001FUD {align1};
-send (16) 0 g34.0<1>UW g32<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 8 {align1}; //U
-send (16) 0 g44.0<1>UW g32<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 8 {align1}; //V
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-mov (1) g32.8<1>UD 0x1FUD {align1};
-send (16) 0 g42.0<1>UW g32<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 1 {align1}; //U
-send (16) 0 g52.0<1>UW g32<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 1 {align1}; //V
-
-//U
-avg (8) g74.0<1>UW g34.0<8,8,1>UB g35.0<8,8,1>UB {align1};
-avg (8) g74.16<1>UW g35.0<8,8,1>UB g36.0<8,8,1>UB {align1};
-avg (8) g75.0<1>UW g36.0<8,8,1>UB g37.0<8,8,1>UB {align1};
-avg (8) g75.16<1>UW g37.0<8,8,1>UB g38.0<8,8,1>UB {align1};
-avg (8) g76.0<1>UW g38.0<8,8,1>UB g39.0<8,8,1>UB {align1};
-avg (8) g76.16<1>UW g39.0<8,8,1>UB g40.0<8,8,1>UB {align1};
-avg (8) g77.0<1>UW g40.0<8,8,1>UB g41.0<8,8,1>UB {align1};
-avg (8) g77.16<1>UW g41.0<8,8,1>UB g42.0<8,8,1>UB {align1};
-
-//V
-avg (8) g78.0<1>UW g44.0<8,8,1>UB g45.0<8,8,1>UB {align1};
-avg (8) g78.16<1>UW g45.0<8,8,1>UB g46.0<8,8,1>UB {align1};
-avg (8) g79.0<1>UW g46.0<8,8,1>UB g47.0<8,8,1>UB {align1};
-avg (8) g79.16<1>UW g47.0<8,8,1>UB g48.0<8,8,1>UB {align1};
-avg (8) g80.0<1>UW g48.0<8,8,1>UB g49.0<8,8,1>UB {align1};
-avg (8) g80.16<1>UW g49.0<8,8,1>UB g50.0<8,8,1>UB {align1};
-avg (8) g81.0<1>UW g50.0<8,8,1>UB g51.0<8,8,1>UB {align1};
-avg (8) g81.16<1>UW g51.0<8,8,1>UB g52.0<8,8,1>UB {align1};
-
diff --git a/src/shaders/mpeg2/vld/read_frame_x0y1_y.g4i b/src/shaders/mpeg2/vld/read_frame_x0y1_y.g4i
deleted file mode 100644
index db3dcc5..0000000
--- a/src/shaders/mpeg2/vld/read_frame_x0y1_y.g4i
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g32: message descriptor for reading reference data
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data */
-mov (1) g32.8<1>UD 0x007001FUD {align1};
-send (16) 0 g38.0<1>UW g32<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-send (16) 0 g46.0<1>UW g32<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-mov (1) g32.8<1>UD 0x1FUD {align1};
-send (16) 0 g54.0<1>UW g32<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 1 {align1};
-
-avg.sat (16) g58.0<1>UW g38.0<16,16,1>UB g39.0<16,16,1>UB {align1};
-avg.sat (16) g59.0<1>UW g39.0<16,16,1>UB g40.0<16,16,1>UB {align1};
-avg.sat (16) g60.0<1>UW g40.0<16,16,1>UB g41.0<16,16,1>UB {align1};
-avg.sat (16) g61.0<1>UW g41.0<16,16,1>UB g42.0<16,16,1>UB {align1};
-avg.sat (16) g62.0<1>UW g42.0<16,16,1>UB g43.0<16,16,1>UB {align1};
-avg.sat (16) g63.0<1>UW g43.0<16,16,1>UB g44.0<16,16,1>UB {align1};
-avg.sat (16) g64.0<1>UW g44.0<16,16,1>UB g45.0<16,16,1>UB {align1};
-avg.sat (16) g65.0<1>UW g45.0<16,16,1>UB g46.0<16,16,1>UB {align1};
-avg.sat (16) g66.0<1>UW g46.0<16,16,1>UB g47.0<16,16,1>UB {align1};
-avg.sat (16) g67.0<1>UW g47.0<16,16,1>UB g48.0<16,16,1>UB {align1};
-avg.sat (16) g68.0<1>UW g48.0<16,16,1>UB g49.0<16,16,1>UB {align1};
-avg.sat (16) g69.0<1>UW g49.0<16,16,1>UB g50.0<16,16,1>UB {align1};
-avg.sat (16) g70.0<1>UW g50.0<16,16,1>UB g51.0<16,16,1>UB {align1};
-avg.sat (16) g71.0<1>UW g51.0<16,16,1>UB g52.0<16,16,1>UB {align1};
-avg.sat (16) g72.0<1>UW g52.0<16,16,1>UB g53.0<16,16,1>UB {align1};
-avg.sat (16) g73.0<1>UW g53.0<16,16,1>UB g54.0<16,16,1>UB {align1};
diff --git a/src/shaders/mpeg2/vld/read_frame_x1y0_uv.g4i b/src/shaders/mpeg2/vld/read_frame_x1y0_uv.g4i
deleted file mode 100644
index 05736f0..0000000
--- a/src/shaders/mpeg2/vld/read_frame_x1y0_uv.g4i
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright © 2008 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Zhang Hua jun <huajun.zhang@intel.com>
- * Xing Dong sheng <dongsheng.xing@intel.com>
- *
- */
-
-mov (1) g32.8<1>UD 0x007000fUD {align1};
-send (16) 0 g34.0<1>UW g32<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 4 {align1};
-send (16) 0 g44.0<1>UW g32<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 4 {align1};
-
-avg (16) g74.0<1>UW g34.0<16,8,1>UB g34.1<16,8,1>UB{align1};
-avg (16) g75.0<1>UW g35.0<16,8,1>UB g35.1<16,8,1>UB{align1};
-avg (16) g76.0<1>UW g36.0<16,8,1>UB g36.1<16,8,1>UB{align1};
-avg (16) g77.0<1>UW g37.0<16,8,1>UB g37.1<16,8,1>UB{align1};
-
-avg (16) g78.0<1>UW g44.0<16,8,1>UB g44.1<16,8,1>UB{align1};
-avg (16) g79.0<1>UW g45.0<16,8,1>UB g45.1<16,8,1>UB{align1};
-avg (16) g80.0<1>UW g46.0<16,8,1>UB g46.1<16,8,1>UB{align1};
-avg (16) g81.0<1>UW g47.0<16,8,1>UB g47.1<16,8,1>UB{align1};
diff --git a/src/shaders/mpeg2/vld/read_frame_x1y0_y.g4i b/src/shaders/mpeg2/vld/read_frame_x1y0_y.g4i
deleted file mode 100644
index c236d11..0000000
--- a/src/shaders/mpeg2/vld/read_frame_x1y0_y.g4i
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g32: message descriptor for reading reference data
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data */
-mov (1) g32.8<1>UD 0x007001FUD {align1};
-send (16) 0 g38.0<1>UW g32<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-send (16) 0 g46.0<1>UW g32<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1};
-
-avg.sat (16) g58.0<1>UW g38.0<16,16,1>UB g38.1<16,16,1>UB {align1};
-avg.sat (16) g59.0<1>UW g39.0<16,16,1>UB g39.1<16,16,1>UB {align1};
-avg.sat (16) g60.0<1>UW g40.0<16,16,1>UB g40.1<16,16,1>UB {align1};
-avg.sat (16) g61.0<1>UW g41.0<16,16,1>UB g41.1<16,16,1>UB {align1};
-avg.sat (16) g62.0<1>UW g42.0<16,16,1>UB g42.1<16,16,1>UB {align1};
-avg.sat (16) g63.0<1>UW g43.0<16,16,1>UB g43.1<16,16,1>UB {align1};
-avg.sat (16) g64.0<1>UW g44.0<16,16,1>UB g44.1<16,16,1>UB {align1};
-avg.sat (16) g65.0<1>UW g45.0<16,16,1>UB g45.1<16,16,1>UB {align1};
-avg.sat (16) g66.0<1>UW g46.0<16,16,1>UB g46.1<16,16,1>UB {align1};
-avg.sat (16) g67.0<1>UW g47.0<16,16,1>UB g47.1<16,16,1>UB {align1};
-avg.sat (16) g68.0<1>UW g48.0<16,16,1>UB g48.1<16,16,1>UB {align1};
-avg.sat (16) g69.0<1>UW g49.0<16,16,1>UB g49.1<16,16,1>UB {align1};
-avg.sat (16) g70.0<1>UW g50.0<16,16,1>UB g50.1<16,16,1>UB {align1};
-avg.sat (16) g71.0<1>UW g51.0<16,16,1>UB g51.1<16,16,1>UB {align1};
-avg.sat (16) g72.0<1>UW g52.0<16,16,1>UB g52.1<16,16,1>UB {align1};
-avg.sat (16) g73.0<1>UW g53.0<16,16,1>UB g53.1<16,16,1>UB {align1};
diff --git a/src/shaders/mpeg2/vld/read_frame_x1y1_uv.g4i b/src/shaders/mpeg2/vld/read_frame_x1y1_uv.g4i
deleted file mode 100644
index 2f741fa..0000000
--- a/src/shaders/mpeg2/vld/read_frame_x1y1_uv.g4i
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- */
-mov (1) g32.8<1>UD 0x007001FUD {align1};
-send (16) 0 g34.0<1>UW g32<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 8 {align1}; //U
-send (16) 0 g44.0<1>UW g32<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 8 {align1}; //V
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-mov (1) g32.8<1>UD 0x1FUD {align1};
-send (16) 0 g42.0<1>UW g32<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 1 {align1}; //U
-send (16) 0 g52.0<1>UW g32<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 1 {align1}; //V
-
-//U
-add (8) g74.0<1>UW g34.0<8,8,1>UB g34.1<8,8,1>UB {align1};
-add (8) g74.16<1>UW g35.0<8,8,1>UB g35.1<8,8,1>UB {align1};
-add (8) g75.0<1>UW g36.0<8,8,1>UB g36.1<8,8,1>UB {align1};
-add (8) g75.16<1>UW g37.0<8,8,1>UB g37.1<8,8,1>UB {align1};
-add (8) g76.0<1>UW g38.0<8,8,1>UB g38.1<8,8,1>UB {align1};
-add (8) g76.16<1>UW g39.0<8,8,1>UB g39.1<8,8,1>UB {align1};
-add (8) g77.0<1>UW g40.0<8,8,1>UB g40.1<8,8,1>UB {align1};
-add (8) g77.16<1>UW g41.0<8,8,1>UB g41.1<8,8,1>UB {align1};
-
-add (8) g74.0<1>UW g74.0<8,8,1>UW g35.0<8,8,1>UB {align1};
-add (8) g74.16<1>UW g74.16<8,8,1>UW g36.0<8,8,1>UB {align1};
-add (8) g75.0<1>UW g75.0<8,8,1>UW g37.0<8,8,1>UB {align1};
-add (8) g75.16<1>UW g75.16<8,8,1>UW g38.0<8,8,1>UB {align1};
-add (8) g76.0<1>UW g76.0<8,8,1>UW g39.0<8,8,1>UB {align1};
-add (8) g76.16<1>UW g76.16<8,8,1>UW g40.0<8,8,1>UB {align1};
-add (8) g77.0<1>UW g77.0<8,8,1>UW g41.0<8,8,1>UB {align1};
-add (8) g77.16<1>UW g77.16<8,8,1>UW g42.0<8,8,1>UB {align1};
-
-add (8) g74.0<1>UW g74.0<8,8,1>UW g35.1<8,8,1>UB {align1};
-add (8) g74.16<1>UW g74.16<8,8,1>UW g36.1<8,8,1>UB {align1};
-add (8) g75.0<1>UW g75.0<8,8,1>UW g37.1<8,8,1>UB {align1};
-add (8) g75.16<1>UW g75.16<8,8,1>UW g38.1<8,8,1>UB {align1};
-add (8) g76.0<1>UW g76.0<8,8,1>UW g39.1<8,8,1>UB {align1};
-add (8) g76.16<1>UW g76.16<8,8,1>UW g40.1<8,8,1>UB {align1};
-add (8) g77.0<1>UW g77.0<8,8,1>UW g41.1<8,8,1>UB {align1};
-add (8) g77.16<1>UW g77.16<8,8,1>UW g42.1<8,8,1>UB {align1};
-
-//V
-add (8) g78.0<1>UW g44.0<8,8,1>UB g44.1<8,8,1>UB {align1};
-add (8) g78.16<1>UW g45.0<8,8,1>UB g45.1<8,8,1>UB {align1};
-add (8) g79.0<1>UW g46.0<8,8,1>UB g46.1<8,8,1>UB {align1};
-add (8) g79.16<1>UW g47.0<8,8,1>UB g47.1<8,8,1>UB {align1};
-add (8) g80.0<1>UW g48.0<8,8,1>UB g48.1<8,8,1>UB {align1};
-add (8) g80.16<1>UW g49.0<8,8,1>UB g49.1<8,8,1>UB {align1};
-add (8) g81.0<1>UW g50.0<8,8,1>UB g50.1<8,8,1>UB {align1};
-add (8) g81.16<1>UW g51.0<8,8,1>UB g51.1<8,8,1>UB {align1};
-
-add (8) g78.0<1>UW g78.0<8,8,1>UW g45.0<8,8,1>UB {align1};
-add (8) g78.16<1>UW g78.16<8,8,1>UW g46.0<8,8,1>UB {align1};
-add (8) g79.0<1>UW g79.0<8,8,1>UW g47.0<8,8,1>UB {align1};
-add (8) g79.16<1>UW g79.16<8,8,1>UW g48.0<8,8,1>UB {align1};
-add (8) g80.0<1>UW g80.0<8,8,1>UW g49.0<8,8,1>UB {align1};
-add (8) g80.16<1>UW g80.16<8,8,1>UW g50.0<8,8,1>UB {align1};
-add (8) g81.0<1>UW g81.0<8,8,1>UW g51.0<8,8,1>UB {align1};
-add (8) g81.16<1>UW g81.16<8,8,1>UW g52.0<8,8,1>UB {align1};
-
-add (8) g78.0<1>UW g78.0<8,8,1>UW g45.1<8,8,1>UB {align1};
-add (8) g78.16<1>UW g78.16<8,8,1>UW g46.1<8,8,1>UB {align1};
-add (8) g79.0<1>UW g79.0<8,8,1>UW g47.1<8,8,1>UB {align1};
-add (8) g79.16<1>UW g79.16<8,8,1>UW g48.1<8,8,1>UB {align1};
-add (8) g80.0<1>UW g80.0<8,8,1>UW g49.1<8,8,1>UB {align1};
-add (8) g80.16<1>UW g80.16<8,8,1>UW g50.1<8,8,1>UB {align1};
-add (8) g81.0<1>UW g81.0<8,8,1>UW g51.1<8,8,1>UB {align1};
-add (8) g81.16<1>UW g81.16<8,8,1>UW g52.1<8,8,1>UB {align1};
-
-shr (16) g74.0<1>UW g74.0<16,16,1>UW 2UW {align1};
-shr (16) g75.0<1>UW g75.0<16,16,1>UW 2UW {align1};
-shr (16) g76.0<1>UW g76.0<16,16,1>UW 2UW {align1};
-shr (16) g77.0<1>UW g77.0<16,16,1>UW 2UW {align1};
-shr (16) g78.0<1>UW g78.0<16,16,1>UW 2UW {align1};
-shr (16) g79.0<1>UW g79.0<16,16,1>UW 2UW {align1};
-shr (16) g80.0<1>UW g80.0<16,16,1>UW 2UW {align1};
-shr (16) g81.0<1>UW g81.0<16,16,1>UW 2UW {align1};
diff --git a/src/shaders/mpeg2/vld/read_frame_x1y1_y.g4i b/src/shaders/mpeg2/vld/read_frame_x1y1_y.g4i
deleted file mode 100644
index 990927d..0000000
--- a/src/shaders/mpeg2/vld/read_frame_x1y1_y.g4i
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author:
- * Zou Nan hai <nanhai.zou@intel.com>
- * Yan Li <li.l.yan@intel.com>
- * Liu Xi bin<xibin.liu@intel.com>
- */
-/* GRF allocation:
- g1~g30: constant buffer
- g1~g2:intra IQ matrix
- g3~g4:non intra IQ matrix
- g5~g20:IDCT table
- g31: thread payload
- g32: message descriptor for reading reference data
- g58~g81:reference data
- g82: thread payload backup
- g83~g106:IDCT data */
-mov (1) g32.8<1>UD 0x007001FUD {align1};
-send (16) 0 g38.0<1>UW g32<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-send (16) 0 g46.0<1>UW g32<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1};
-add (1) g32.4<1>UD g32.4<1,1,1>UD 8UD {align1};
-mov (1) g32.8<1>UD 0x1FUD {align1};
-send (16) 0 g54.0<1>UW g32<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 1 {align1};
-
-add (16) g58.0<1>UW g38.0<16,16,1>UB g38.1<16,16,1>UB {align1};
-add (16) g59.0<1>UW g39.0<16,16,1>UB g39.1<16,16,1>UB {align1};
-add (16) g60.0<1>UW g40.0<16,16,1>UB g40.1<16,16,1>UB {align1};
-add (16) g61.0<1>UW g41.0<16,16,1>UB g41.1<16,16,1>UB {align1};
-add (16) g62.0<1>UW g42.0<16,16,1>UB g42.1<16,16,1>UB {align1};
-add (16) g63.0<1>UW g43.0<16,16,1>UB g43.1<16,16,1>UB {align1};
-add (16) g64.0<1>UW g44.0<16,16,1>UB g44.1<16,16,1>UB {align1};
-add (16) g65.0<1>UW g45.0<16,16,1>UB g45.1<16,16,1>UB {align1};
-add (16) g66.0<1>UW g46.0<16,16,1>UB g46.1<16,16,1>UB {align1};
-add (16) g67.0<1>UW g47.0<16,16,1>UB g47.1<16,16,1>UB {align1};
-add (16) g68.0<1>UW g48.0<16,16,1>UB g48.1<16,16,1>UB {align1};
-add (16) g69.0<1>UW g49.0<16,16,1>UB g49.1<16,16,1>UB {align1};
-add (16) g70.0<1>UW g50.0<16,16,1>UB g50.1<16,16,1>UB {align1};
-add (16) g71.0<1>UW g51.0<16,16,1>UB g51.1<16,16,1>UB {align1};
-add (16) g72.0<1>UW g52.0<16,16,1>UB g52.1<16,16,1>UB {align1};
-add (16) g73.0<1>UW g53.0<16,16,1>UB g53.1<16,16,1>UB {align1};
-
-add (16) g58.0<1>UW g58.0<16,16,1>UW g39.0<16,16,1>UB {align1};
-add (16) g59.0<1>UW g59.0<16,16,1>UW g40.0<16,16,1>UB {align1};
-add (16) g60.0<1>UW g60.0<16,16,1>UW g41.0<16,16,1>UB {align1};
-add (16) g61.0<1>UW g61.0<16,16,1>UW g42.0<16,16,1>UB {align1};
-add (16) g62.0<1>UW g62.0<16,16,1>UW g43.0<16,16,1>UB {align1};
-add (16) g63.0<1>UW g63.0<16,16,1>UW g44.0<16,16,1>UB {align1};
-add (16) g64.0<1>UW g64.0<16,16,1>UW g45.0<16,16,1>UB {align1};
-add (16) g65.0<1>UW g65.0<16,16,1>UW g46.0<16,16,1>UB {align1};
-add (16) g66.0<1>UW g66.0<16,16,1>UW g47.0<16,16,1>UB {align1};
-add (16) g67.0<1>UW g67.0<16,16,1>UW g48.0<16,16,1>UB {align1};
-add (16) g68.0<1>UW g68.0<16,16,1>UW g49.0<16,16,1>UB {align1};
-add (16) g69.0<1>UW g69.0<16,16,1>UW g50.0<16,16,1>UB {align1};
-add (16) g70.0<1>UW g70.0<16,16,1>UW g51.0<16,16,1>UB {align1};
-add (16) g71.0<1>UW g71.0<16,16,1>UW g52.0<16,16,1>UB {align1};
-add (16) g72.0<1>UW g72.0<16,16,1>UW g53.0<16,16,1>UB {align1};
-add (16) g73.0<1>UW g73.0<16,16,1>UW g54.0<16,16,1>UB {align1};
-
-add (16) g58.0<1>UW g58.0<16,16,1>UW g39.1<16,16,1>UB {align1};
-add (16) g59.0<1>UW g59.0<16,16,1>UW g40.1<16,16,1>UB {align1};
-add (16) g60.0<1>UW g60.0<16,16,1>UW g41.1<16,16,1>UB {align1};
-add (16) g61.0<1>UW g61.0<16,16,1>UW g42.1<16,16,1>UB {align1};
-add (16) g62.0<1>UW g62.0<16,16,1>UW g43.1<16,16,1>UB {align1};
-add (16) g63.0<1>UW g63.0<16,16,1>UW g44.1<16,16,1>UB {align1};
-add (16) g64.0<1>UW g64.0<16,16,1>UW g45.1<16,16,1>UB {align1};
-add (16) g65.0<1>UW g65.0<16,16,1>UW g46.1<16,16,1>UB {align1};
-add (16) g66.0<1>UW g66.0<16,16,1>UW g47.1<16,16,1>UB {align1};
-add (16) g67.0<1>UW g67.0<16,16,1>UW g48.1<16,16,1>UB {align1};
-add (16) g68.0<1>UW g68.0<16,16,1>UW g49.1<16,16,1>UB {align1};
-add (16) g69.0<1>UW g69.0<16,16,1>UW g50.1<16,16,1>UB {align1};
-add (16) g70.0<1>UW g70.0<16,16,1>UW g51.1<16,16,1>UB {align1};
-add (16) g71.0<1>UW g71.0<16,16,1>UW g52.1<16,16,1>UB {align1};
-add (16) g72.0<1>UW g72.0<16,16,1>UW g53.1<16,16,1>UB {align1};
-add (16) g73.0<1>UW g73.0<16,16,1>UW g54.1<16,16,1>UB {align1};
-
-shr.sat (16) g58.0<1>UW g58.0<16,16,1>UW 2UW {align1};
-shr.sat (16) g59.0<1>UW g59.0<16,16,1>UW 2UW {align1};
-shr.sat (16) g60.0<1>UW g60.0<16,16,1>UW 2UW {align1};
-shr.sat (16) g61.0<1>UW g61.0<16,16,1>UW 2UW {align1};
-shr.sat (16) g62.0<1>UW g62.0<16,16,1>UW 2UW {align1};
-shr.sat (16) g63.0<1>UW g63.0<16,16,1>UW 2UW {align1};
-shr.sat (16) g64.0<1>UW g64.0<16,16,1>UW 2UW {align1};
-shr.sat (16) g65.0<1>UW g65.0<16,16,1>UW 2UW {align1};
-shr.sat (16) g66.0<1>UW g66.0<16,16,1>UW 2UW {align1};
-shr.sat (16) g67.0<1>UW g67.0<16,16,1>UW 2UW {align1};
-shr.sat (16) g68.0<1>UW g68.0<16,16,1>UW 2UW {align1};
-shr.sat (16) g69.0<1>UW g69.0<16,16,1>UW 2UW {align1};
-shr.sat (16) g70.0<1>UW g70.0<16,16,1>UW 2UW {align1};
-shr.sat (16) g71.0<1>UW g71.0<16,16,1>UW 2UW {align1};
-shr.sat (16) g72.0<1>UW g72.0<16,16,1>UW 2UW {align1};
-shr.sat (16) g73.0<1>UW g73.0<16,16,1>UW 2UW {align1};
diff --git a/src/shaders/post_processing/Makefile.am b/src/shaders/post_processing/Makefile.am
deleted file mode 100644
index 8901a2c..0000000
--- a/src/shaders/post_processing/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-SUBDIRS = gen5_6 gen7 gen75 gen8 gen9
-
-# Extra clean files so that maintainer-clean removes *everything*
-MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/shaders/post_processing/gen5_6/Common/AYUV_Load_16x8.asm b/src/shaders/post_processing/gen5_6/Common/AYUV_Load_16x8.asm
deleted file mode 100644
index b62ab91..0000000
--- a/src/shaders/post_processing/gen5_6/Common/AYUV_Load_16x8.asm
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: AYUV_Load_16x8.asm
-//----------------------------------------------------------------
-
-
-#include "AYUV_Load_16x8.inc"
-
-// In order to load 64x8 AYUV data (16x8 pixels), we need to divide the data
-// into two regions and load them separately.
-//
-// 32 byte 32 byte
-//|----------------|----------------|
-//| | |
-//| A | B |8
-//| | |
-//| | |
-//|----------------|----------------|
-
-// Load the first 32x8 data block
-// Packed data block should be loaded as 32x8 pixel block
- add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Block origin
- shl (1) rMSGSRC.0<1>:d acc0:w 2:w { NoDDClr } // H. block origin need to be four times larger
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_YUV:ud { NoDDChk } // Block width and height (32x8)
- mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_YUV(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_YUV+nBI_CURRENT_SRC_YUV:ud
-
-//Load the second 32x8 data block
-// Offset the origin X - move to next 32 colomns
- add (1) rMSGSRC.0<1>:d rMSGSRC.0<0;1,0>:d 32:w // Increase X origin by 8
-
-// Size stays the same - 32x8
- mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud // Copy message description to message header
- send (8) udSRC_YUV(8)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_YUV+nBI_CURRENT_SRC_YUV:ud
-
-// Give AYUV region addresses to address register
- mov (1) SRC_YUV_OFFSET<1>:ud 0x00400038*32:ud //Address registers contain starting addresses of two halves
-
-//Directly move the data to destination
- $for(0; <nY_NUM_OF_ROWS; 1) {
- mov (16) uwDEST_Y(%1)<1> r[SRC_YUV_OFFSET,%1*32+2]<8,4>:ub
- mov (16) uwDEST_U(%1)<1> r[SRC_YUV_OFFSET,%1*32+1]<8,4>:ub
- mov (16) uwDEST_V(%1)<1> r[SRC_YUV_OFFSET,%1*32+0]<8,4>:ub
- }
- \ No newline at end of file
diff --git a/src/shaders/post_processing/gen5_6/Common/AYUV_Load_16x8.inc b/src/shaders/post_processing/gen5_6/Common/AYUV_Load_16x8.inc
deleted file mode 100644
index b6223ea..0000000
--- a/src/shaders/post_processing/gen5_6/Common/AYUV_Load_16x8.inc
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: AYUV_Load_16x8.inc
-//
-// AYUV data are first loaded to bottom I/O REGION_2, then unpacked to planar data
-// and stored in top I/O REGION_1
-
-#undef nY_NUM_OF_ROWS
-
-#define nY_NUM_OF_ROWS 8 // Number of Y rows per block
-
-#define nDPR_BLOCK_SIZE_YUV nBLOCK_WIDTH_32+nBLOCK_HEIGHT_8 // Y block size 32x8
-#define nDPR_MSG_SIZE_YUV nRESLEN_8 // # of MRF's to hold Y block data (8)
-
-//Temporary storage for unpacked AYUV data
-#define rUNPACK_TEMP REG(r,nTEMP0)
-.declare udUNPACK_TEMP Base=rUNPACK_TEMP ElementSize=4 SrcRegion=<8;8,1> Type=ud //1 GRF
-.declare ubUNPACK_TEMP Base=rUNPACK_TEMP ElementSize=1 SrcRegion=<32;32,1> Type=ub //1 GRF
-
-.declare ubBOT_Y_IO Base=REG(r,nBOT_Y) ElementSize=1 SrcRegion=REGION(32,1) Type=ub
-
-
-#define udSRC_YUV udBOT_Y_IO
-#define ubSRC_YUV ubBOT_Y_IO
-#define nSRC_YUV_REG nBOT_Y
-
-#define uwDEST_Y uwTOP_Y
-#define uwDEST_U uwTOP_U
-#define uwDEST_V uwTOP_V
-
-#define SRC_YUV_OFFSET a0.0
-
-#define nSRC_REGION nREGION_1 // REGION_1 will be the source region for first kernel
-
-// End of AYUV_Load_16x8.inc
diff --git a/src/shaders/post_processing/gen5_6/Common/Expansion.inc b/src/shaders/post_processing/gen5_6/Common/Expansion.inc
deleted file mode 100644
index b34a72f..0000000
--- a/src/shaders/post_processing/gen5_6/Common/Expansion.inc
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: Expansion.inc
-// Number of U/V rows per block definition
-#undef nUV_NUM_OF_ROWS
-#ifdef EXPAND_9x5
- #define nUV_NUM_OF_ROWS 6
-#else
- #define nUV_NUM_OF_ROWS 8
-#endif
-
-// Source/destination region definitions
-#undef uwDEST_U
-#undef uwDEST_V
-#if (nSRC_REGION==nREGION_1)
- #define uwDEST_U uwTOP_U
- #define uwDEST_V uwTOP_V
-#elif (nSRC_REGION==nREGION_2)
- #define uwDEST_U uwBOT_U
- #define uwDEST_V uwBOT_V
-#endif
-
-// End of Expansion.inc
diff --git a/src/shaders/post_processing/gen5_6/Common/IMC3_Load_8x4.asm b/src/shaders/post_processing/gen5_6/Common/IMC3_Load_8x4.asm
deleted file mode 100644
index ff6fe0d..0000000
--- a/src/shaders/post_processing/gen5_6/Common/IMC3_Load_8x4.asm
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: IMC3_Load_8x4.asm
-//
-//----------------------------------------------------------------
-
-#define IMC3_LOAD_8x4
-#include "PL3_Load.inc"
-
-// Load 16x8 planar Y ----------------------------------------------------------
- add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
-#if !defined(LOAD_UV_ONLY)
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_Y:ud // Block width and height (16x8)
-
- mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_Y(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_CURRENT_SRC_Y:ud
-#endif
-
-// Load 8x4 planar U and V -----------------------------------------------------
- asr (2) rMSGSRC.0<1>:d rMSGSRC.0<2;2,1>:d 1:w // U/V block origin should be half of Y's
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (8x4)
-
- mov (8) mMSGHDRU<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_U(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_U:ud
- mov (8) mMSGHDRV<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_V(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_V:ud
-
-// Convert to word-aligned format ----------------------------------------------
-#if !defined(LOAD_UV_ONLY)
- $for (nY_NUM_OF_ROWS-1; >-1; -1) {
- mov (16) uwDEST_Y(0,%1*16)<1> ubSRC_Y(0,%1*16)
- }
-#endif
- $for (nUV_NUM_OF_ROWS/2-1; >-1; -1) {
- mov (16) uwDEST_U(0, %1*16)<1> ubSRC_U(0, %1*16)
- mov (16) uwDEST_V(0, %1*16)<1> ubSRC_V(0, %1*16)
- }
-
-// End of IMC3_Load_8x4
diff --git a/src/shaders/post_processing/gen5_6/Common/IMC3_Load_8x5.asm b/src/shaders/post_processing/gen5_6/Common/IMC3_Load_8x5.asm
deleted file mode 100644
index 9975d00..0000000
--- a/src/shaders/post_processing/gen5_6/Common/IMC3_Load_8x5.asm
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: IMC3_Load_8x5.asm
-//
-//----------------------------------------------------------------
-
-#define IMC3_LOAD_8x5
-#include "PL3_Load.inc"
-
-// Load 16x8 planar Y ----------------------------------------------------------
- add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
-#if !defined(LOAD_UV_ONLY)
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_Y:ud // Block width and height (16x8)
-
- mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_Y(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_CURRENT_SRC_Y:ud
-#endif
-
-// Load 8x5 planar U and V -----------------------------------------------------
- asr (2) rMSGSRC.0<1>:d rMSGSRC.0<2;2,1>:d 1:w // U/V block origin should be half of Y's
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (8x5)
-
- mov (8) mMSGHDRU<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_U(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_U:ud
- mov (8) mMSGHDRV<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_V(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_V:ud
-
-// Convert to word-aligned format ----------------------------------------------
-#if !defined(LOAD_UV_ONLY)
- $for (nY_NUM_OF_ROWS-1; >-1; -1) {
- mov (16) uwDEST_Y(0,%1*16)<1> ubSRC_Y(0,%1*16)
- }
-#endif
- $for (nUV_NUM_OF_ROWS/2-1; >-1; -1) {
- mov (16) uwDEST_U(0, %1*16)<1> ubSRC_U(0, %1*16)
- mov (16) uwDEST_V(0, %1*16)<1> ubSRC_V(0, %1*16)
- }
-
-// End of IMC3_Load_8x5
diff --git a/src/shaders/post_processing/gen5_6/Common/IMC3_Load_9x5.asm b/src/shaders/post_processing/gen5_6/Common/IMC3_Load_9x5.asm
deleted file mode 100644
index 4c835c9..0000000
--- a/src/shaders/post_processing/gen5_6/Common/IMC3_Load_9x5.asm
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: IMC3_Load_9x5.asm
-//
-//----------------------------------------------------------------
-// This module loads 16x8 Y, 9x5 U and 9x5 V planar data blocks for CSC module
-// and stores it in byte-aligned format.
-//----------------------------------------------------------------
-
-#define IMC3_LOAD_9x5
-#include "PL3_Load.inc"
-
-// Load 16x8 planar Y ----------------------------------------------------------
- add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
-#if !defined(LOAD_UV_ONLY)
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_Y:ud // Block width and height (16x8)
-
- mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_Y(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_CURRENT_SRC_Y:ud
-#endif
-
-// Load 9x5 planar U and V -----------------------------------------------------
- asr (2) rMSGSRC.0<1>:d rMSGSRC.0<2;2,1>:d 1:w // U/V block origin should be half of Y's
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (12x5)
-
- mov (8) mMSGHDRU<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_U(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_U:ud
- mov (8) mMSGHDRV<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_V(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_V:ud
-
-// Convert to word-aligned format ----------------------------------------------
-#if !defined(LOAD_UV_ONLY)
- $for (nY_NUM_OF_ROWS-1; >-1; -1) {
- mov (16) uwDEST_Y(0,%1*16)<1> ubSRC_Y(0,%1*16)
- }
-#endif
- $for(nUV_NUM_OF_ROWS-2; >-1; -1) {
- mov (16) uwDEST_U(0, %1*16)<1> ubSRC_U(0, %1*16)
- mov (16) uwDEST_V(0, %1*16)<1> ubSRC_V(0, %1*16)
- }
-
-// End of IMC3_Load_9x5
diff --git a/src/shaders/post_processing/gen5_6/Common/Init_All_Regs.asm b/src/shaders/post_processing/gen5_6/Common/Init_All_Regs.asm
deleted file mode 100644
index a87c72b..0000000
--- a/src/shaders/post_processing/gen5_6/Common/Init_All_Regs.asm
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#ifdef GT // to remove error messages of un-initialized GRF
- .declare udGRF_space Base=r0.0 ElementSize=4 SrcRegion=REGION(8,1) Type=ud
-
- $for (7; <80; 1) {
- mov (8) udGRF_space(%1)<1> 0:ud
- }
-#else
-#endif \ No newline at end of file
diff --git a/src/shaders/post_processing/gen5_6/Common/Multiple_Loop.asm b/src/shaders/post_processing/gen5_6/Common/Multiple_Loop.asm
deleted file mode 100644
index 65e5f42..0000000
--- a/src/shaders/post_processing/gen5_6/Common/Multiple_Loop.asm
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-/////////////////////////////////////////////////////////////////////////////////
-// Multiple_Loop.asm
-
-
-// This lable is for satisfying component kernel build.
-// DL will remove this label and reference the real one in Multiple_Loop_Head.asm.
-#if defined(COMPONENT)
-VIDEO_PROCESSING_LOOP:
-#endif
-
-
-//===== Possible build flags for component kernels
-// 1) INC_SCALING
-// 2) INC_BLENDING
-// 3) INC_BLENDING and INC_SCALING
-// 4) (no flags)
-
-
-#define MxN_MULTIPLE_BLOCKS
-
-//------------------------------------------------------------------------------
-#if defined(MxN_MULTIPLE_BLOCKS)
-// Do Multiple Block Processing ------------------------------------------------
-
- // The 1st block has been processed before entering the loop
-
- // Processed all blocks?
- add.z.f0.0 (1) wNUM_BLKS:w wNUM_BLKS:w -1:w
-
- // Reached multi-block width?
- add (1) wORIX:w wORIX:w 16:w
- cmp.l.f0.1 (1) null:w wORIX:w wFRAME_ENDX:w // acc0.0 has wORIX
-
- #if defined(INC_SCALING)
- // Update SRC_VID_H_ORI for scaling
- mul (1) REG(r,nTEMP0):f fVIDEO_STEP_X:f 16.0:f
- add (1) fSRC_VID_H_ORI:f REG(r,nTEMP0):f fSRC_VID_H_ORI:f
- #endif
-
- #if defined(INC_BLENDING)
- // Update SRC_ALPHA_H_ORI for blending
- mul (1) REG(r,nTEMP0):f fALPHA_STEP_X:f 16.0:f
- add (1) fSRC_ALPHA_H_ORI:f REG(r,nTEMP0):f fSRC_ALPHA_H_ORI:f
- #endif
-
- (f0.0)jmpi (1) END_VIDEO_PROCESSING // All blocks are done - Exit loop
-
- // blocks in the middle of the loop (neither the first nor the last one)?
- // it may be on the left edge (Mx1) or not (1xN)
- mov (1) uwBLOCK_MASK_H<1>:uw uwBLOCK_MASK_H_MIDDLE:uw
-
- // the last block?
- cmp.e.f0.0 (1) null:w wNUM_BLKS:w 1:w
- (f0.0) mov (1) uwBLOCK_MASK_H<1>:uw uwBLOCK_MASK_H_RIGHT:uw
- (f0.0) mov (1) ubBLOCK_MASK_V<1>:ub ubBLOCK_MASK_V_BOTTOM:ub
-
- (f0.1)jmpi (1) VIDEO_PROCESSING_LOOP // If not the end of row, goto the beginning of the loop
-
- //If end of row, restart Horizontal offset and calculate Vertical offsets next row.
- mov (1) wORIX:w wCOPY_ORIX:w
- add (1) wORIY:w wORIY:w 8:w
-
- #if defined(INC_SCALING)
- // Update SRC_VID_H_ORI and SRC_VID_V_ORI for scaling
- mov (1) fSRC_VID_H_ORI:f fFRAME_VID_ORIX:f // Reset normalised X origin to 0 for video and alpha
- mul (1) REG(r,nTEMP0):f fVIDEO_STEP_Y:f 8.0:f
- add (1) fSRC_VID_V_ORI:f REG(r,nTEMP0):f fSRC_VID_V_ORI:f
- #endif
-
- #if defined(INC_BLENDING)
- // Update SRC_ALPHA_H_ORI and SRC_ALPHA_V_ORI for blending
- mov (1) fSRC_ALPHA_H_ORI:f fFRAME_ALPHA_ORIX:f // Reset normalised X origin to 0 for video and alpha
- mul (1) REG(r,nTEMP0):f fALPHA_STEP_Y:f 8.0:f
- add (1) fSRC_ALPHA_V_ORI:f REG(r,nTEMP0):f fSRC_ALPHA_V_ORI:f
- #endif
-
- jmpi (1) VIDEO_PROCESSING_LOOP // Continue Loop
-
-END_VIDEO_PROCESSING:
- nop
-
-#endif
-END_THREAD // End of Thread
diff --git a/src/shaders/post_processing/gen5_6/Common/Multiple_Loop_Head.asm b/src/shaders/post_processing/gen5_6/Common/Multiple_Loop_Head.asm
deleted file mode 100644
index 4780d93..0000000
--- a/src/shaders/post_processing/gen5_6/Common/Multiple_Loop_Head.asm
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//////////////////////////////////////////////////////////////////////////////////
-// Multiple_Loop_Head.asm
-// This code sets up the loop control for multiple blocks per thread
-
- mul (1) wFRAME_ENDX:w ubBLK_CNT_X:ub 16:uw { NoDDClr } // Build multi-block loop counters
- mov (1) wNUM_BLKS:w ubNUM_BLKS:ub { NoDDClr, NoDDChk } // Copy num blocks to word variable
- mov (1) wCOPY_ORIX:w wORIX:w { NoDDChk } // Copy multi-block origin in pixel
- mov (2) fFRAME_VID_ORIX<1>:f fSRC_VID_H_ORI<4;2,2>:f // Copy src video origin for scaling, and alpha origin for blending
- add (1) wFRAME_ENDX:w wFRAME_ENDX:w wORIX:w // Continue building multi-block loop counters
-
-VIDEO_PROCESSING_LOOP: // Loop back entry point as the biginning of the loop for multiple blocks
-
-// Beginning of the loop
diff --git a/src/shaders/post_processing/gen5_6/Common/NV11_Load_4x8.asm b/src/shaders/post_processing/gen5_6/Common/NV11_Load_4x8.asm
deleted file mode 100644
index 1700853..0000000
--- a/src/shaders/post_processing/gen5_6/Common/NV11_Load_4x8.asm
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: NV11_Load_4x8.asm
-//----------------------------------------------------------------
-
-#define NV11_LOAD_4x8
-#include "PL2_Load.inc"
-
-// Load 16x8 NV11 Y ------------------------------------------------------------
- add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
-#if !defined(LOAD_UV_ONLY)
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_Y:ud // Y block width and height (16x8)
- mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_Y(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_CURRENT_SRC_Y:ud
-#endif
-
-// Load 8x8 NV11 UV ----------------------------------------------------------
- asr (1) rMSGSRC.0<1>:d rMSGSRC.0<0;1,0>:d 1:w // U/V block origin should be half of Y's
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (8x8)
- mov (8) mMSGHDRU<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_U(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_UV:ud
-
-// Convert to word-aligned format ----------------------------------------------
-#if !defined(LOAD_UV_ONLY)
- $for (nY_NUM_OF_ROWS-1; >-1; -1) {
- mov (16) uwDEST_Y(0,%1*16)<1> ubSRC_Y(0,%1*16)
- }
-#endif
- $for (nUV_NUM_OF_ROWS/4-1; >-1; -1) {
- mov (16) uwDEST_U(0,%1*16)<1> ubSRC_U(0,%1*32)<32;16,2>
- mov (16) uwDEST_V(0,%1*16)<1> ubSRC_U(0,%1*32+1)<32;16,2>
- }
-
-// End of NV11_Load_4x8
diff --git a/src/shaders/post_processing/gen5_6/Common/NV11_Load_5x8.asm b/src/shaders/post_processing/gen5_6/Common/NV11_Load_5x8.asm
deleted file mode 100644
index 869d7bf..0000000
--- a/src/shaders/post_processing/gen5_6/Common/NV11_Load_5x8.asm
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: NV11_Load_5x8.asm
-//----------------------------------------------------------------
-
-#define NV11_LOAD_5x8
-#include "PL2_Load.inc"
-
-// Load 16x8 NV11 Y ------------------------------------------------------------
- add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
-#if !defined(LOAD_UV_ONLY)
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_Y:ud // Y block width and height (16x8)
- mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_Y(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_CURRENT_SRC_Y:ud
-#endif
-
-// Load 12x8 NV11 UV ---------------------------------------------------------
- asr (1) rMSGSRC.0<1>:d rMSGSRC.0<0;1,0>:d 1:w // U/V block origin should be half of Y's
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (12x8)
- mov (8) mMSGHDRU<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_U(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_UV:ud
-
-// Convert to word-aligned format ----------------------------------------------
-#if !defined(LOAD_UV_ONLY)
- $for (nY_NUM_OF_ROWS-1; >-1; -1) {
- mov (16) uwDEST_Y(0,%1*16)<1> ubSRC_Y(0,%1*16)
- }
-#endif
- $for (nUV_NUM_OF_ROWS/2-1; >-1; -1) {
- mov (16) uwDEST_U(0,%1*16)<1> ubSRC_U(0,%1*32)<16;8,2>
- mov (16) uwDEST_V(0,%1*16)<1> ubSRC_U(0,%1*32+1)<16;8,2>
- }
-
-// End of NV11_Load_5x8
diff --git a/src/shaders/post_processing/gen5_6/Common/NV12_Load_8x4.asm b/src/shaders/post_processing/gen5_6/Common/NV12_Load_8x4.asm
deleted file mode 100644
index 19bcd76..0000000
--- a/src/shaders/post_processing/gen5_6/Common/NV12_Load_8x4.asm
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: NV12_Load_8x4.asm
-//----------------------------------------------------------------
-
-#define NV12_LOAD_8x4
-#include "PL2_Load.inc"
-
-// Load 16x8 planar Y ----------------------------------------------------------
- add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
-#if !defined(LOAD_UV_ONLY)
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_Y:ud // Y block width and height (16x8)
- mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_Y(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_CURRENT_SRC_Y:ud
-#endif
-
-// Load 8x4 planar U and V -----------------------------------------------------
- asr (1) rMSGSRC.1<1>:d rMSGSRC.1<0;1,0>:d 1:w // U/V block origin should be half of Y's
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (16x4)
- mov (8) mMSGHDRU<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_U(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_UV:ud
-
-// Convert to word-aligned format ----------------------------------------------
-#if defined(FIX_POINT_CONVERSION) || defined(FLOAT_POINT_CONVERSION)
- // load NV12 and save it as packed AYUV to dst (64x8)
-
- $for (nY_NUM_OF_ROWS-1; >-1; -1) {
- // #### Y
- mov (8) ubDEST_Y(0,%1*16*4)<4> ubSRC_Y(0,%1*16)<0;8,1>
- mov (8) ubDEST_Y(0,(%1*16+8)*4)<4> ubSRC_Y(0,%1*16+8)<0;8,1>
-
- // #### U/V
- // error from compile: "Invalid horiz size 8", so I have to repeat UV first
- // mov (4) ubDEST_Y(0,%1*16*4+1)<8> ubSRC_U(0,%1/2*16)<0;4,2>
- // mov (4) ubDEST_Y(0,%1*16*4+1+32)<8> ubSRC_U(0,%1/2*16+8)<0;4,2>
-
- // repeate U/V for each one
- mov (8) REG2(r,nTEMP18,0)<2>:uw uwSRC_U(0,%1/2*8)<0;8,1>
- mov (8) REG2(r,nTEMP18,1)<2>:uw uwSRC_U(0,%1/2*8)<0;8,1>
-
- // mov U/V to ubDEST
- mov (8) ubDEST_Y(0,%1*16*4+1)<4> REG2(r,nTEMP18,0)<0;8,2>:ub
- mov (8) ubDEST_Y(0,%1*16*4+1+32)<4> REG2(r,nTEMP18,16)<0;8,2>:ub
-
- mov (8) ubDEST_Y(0,%1*16*4+2)<4> REG2(r,nTEMP18,1)<0;8,2>:ub
- mov (8) ubDEST_Y(0,%1*16*4+2+32)<4> REG2(r,nTEMP18,17)<0;8,2>:ub
- }
-#else
- #if !defined(LOAD_UV_ONLY)
- $for (nY_NUM_OF_ROWS-1; >-1; -1) {
- mov (16) uwDEST_Y(0,%1*16)<1> ubSRC_Y(0,%1*16)
- }
- #endif
- $for (nUV_NUM_OF_ROWS/2-1; >-1; -1) {
- // why "mov (16)"? should it be 8?
- mov (16) uwDEST_U(0,%1*16)<1> ubSRC_U(0,%1*32)<32;16,2>
- mov (16) uwDEST_V(0,%1*16)<1> ubSRC_U(0,%1*32+1)<32;16,2>
- }
-
-#endif
-
-// End of NV12_Load_8x4
diff --git a/src/shaders/post_processing/gen5_6/Common/NV12_Load_8x5.asm b/src/shaders/post_processing/gen5_6/Common/NV12_Load_8x5.asm
deleted file mode 100644
index 9cc3c29..0000000
--- a/src/shaders/post_processing/gen5_6/Common/NV12_Load_8x5.asm
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: NV12_Load_8x5.asm
-//----------------------------------------------------------------
-
-#define NV12_LOAD_8x5
-#include "PL2_Load.inc"
-
-// Load 16x8 planar Y ----------------------------------------------------------
- add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
-#if !defined(LOAD_UV_ONLY)
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_Y:ud // Y block width and height (16x8)
- mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_Y(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_CURRENT_SRC_Y:ud
-#endif
-
-// Load 8x5 planar U and V -----------------------------------------------------
- asr (1) rMSGSRC.1<1>:d rMSGSRC.1<0;1,0>:d 1:w // U/V block origin should be half of Y's
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (16x5)
- mov (8) mMSGHDRU<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_U(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_UV:ud
-
-// Convert to word-aligned format ----------------------------------------------
-#if !defined(LOAD_UV_ONLY)
- $for (nY_NUM_OF_ROWS-1; >-1; -1) {
- mov (16) uwDEST_Y(0,%1*16)<1> ubSRC_Y(0,%1*16)
- }
-#endif
- $for (nUV_NUM_OF_ROWS/2-1; >-1; -1) {
- mov (16) uwDEST_U(0,%1*16)<1> ubSRC_U(0,%1*32)<16;8,2>
- mov (16) uwDEST_V(0,%1*16)<1> ubSRC_U(0,%1*32+1)<16;8,2>
- }
-
-// End of NV12_Load_8x5
diff --git a/src/shaders/post_processing/gen5_6/Common/NV12_Load_9x5.asm b/src/shaders/post_processing/gen5_6/Common/NV12_Load_9x5.asm
deleted file mode 100644
index 101de11..0000000
--- a/src/shaders/post_processing/gen5_6/Common/NV12_Load_9x5.asm
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: NV12_Load_9x5.asm
-//----------------------------------------------------------------
-
-#define NV12_LOAD_9x5
-#include "PL2_Load.inc"
-
-// Load 16x8 planar Y ----------------------------------------------------------
- add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
-#if !defined(LOAD_UV_ONLY)
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_Y:ud // Y block width and height (16x8)
- mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_Y(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_CURRENT_SRC_Y:ud
-#endif
-
-// Load 9x5 planar U and V -----------------------------------------------------
- asr (1) rMSGSRC.1<1>:d rMSGSRC.1<0;1,0>:d 1:w // U/V block origin should be half of Y's
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (20x5)
- mov (8) mMSGHDRU<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_U(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_UV:ud
-
-// Convert to word-aligned format ----------------------------------------------
-#if !defined(LOAD_UV_ONLY)
- $for (nY_NUM_OF_ROWS-1; >-1; -1) {
- mov (16) uwDEST_Y(0,%1*16)<1> ubSRC_Y(0,%1*16)
- }
-#endif
- $for(nUV_NUM_OF_ROWS-2; >-1; -1) {
- mov (16) uwDEST_U(0,%1*16)<1> ubSRC_U(0,%1*32)<16;8,2>
- mov (16) uwDEST_V(0,%1*16)<1> ubSRC_U(0,%1*32+1)<16;8,2>
- }
-
-// End of NV12_Load_9x5
diff --git a/src/shaders/post_processing/gen5_6/Common/P208_Load_8x8.asm b/src/shaders/post_processing/gen5_6/Common/P208_Load_8x8.asm
deleted file mode 100644
index ec9b35c..0000000
--- a/src/shaders/post_processing/gen5_6/Common/P208_Load_8x8.asm
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: P208_Load_8x8.asm
-//----------------------------------------------------------------
-
-#define P208_LOAD_8x8
-#include "PL2_Load.inc"
-
- add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_Y:ud // Y Block width and height (16x8) (U/V block size is the same)
-
-// Load 16x8 P208 Y ------------------------------------------------------------
-#if !defined(LOAD_UV_ONLY)
- mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_Y(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_CURRENT_SRC_Y:ud
-#endif
-
- // Load 16x8 planar UV -----------------------------------------------------
- mov (8) mMSGHDRU<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_U(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_UV:ud
-
-// Convert to word-aligned format ----------------------------------------------
-#if !defined(LOAD_UV_ONLY)
- $for (0; <nY_NUM_OF_ROWS; 1) {
- mov (16) uwDEST_Y(0,%1*16) ubSRC_Y(0,%1*16)
- }
-#endif
- $for (0; <nUV_NUM_OF_ROWS/2; 1) {
- mov (16) uwDEST_U(0,%1*16) ubSRC_U(0,%1*32)<32;16,2>
- mov (16) uwDEST_V(0,%1*16) ubSRC_U(0,%1*32+1)<32;16,2>
- }
-
-// End of P208_Load_8x8.asm
diff --git a/src/shaders/post_processing/gen5_6/Common/P208_Load_9x8.asm b/src/shaders/post_processing/gen5_6/Common/P208_Load_9x8.asm
deleted file mode 100644
index 76ab040..0000000
--- a/src/shaders/post_processing/gen5_6/Common/P208_Load_9x8.asm
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: P208_Load_9x8.asm
-//----------------------------------------------------------------
-
-#define P208_LOAD_9x8
-#include "PL2_Load.inc"
-
- add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
-
-// Load 16x8 P208 Y ------------------------------------------------------------
-#if !defined(LOAD_UV_ONLY)
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_Y:ud // Y block width and height (16x8)
- mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_Y(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_CURRENT_SRC_Y:ud
-#endif
-
- // Load 16x8 planar UV -----------------------------------------------------
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (20x8)
- mov (8) mMSGHDRU<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_U(0)<1> mMSGHDRU udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_CURRENT_SRC_UV:ud
-
-// Convert to word-aligned format ----------------------------------------------
-#if !defined(LOAD_UV_ONLY)
- $for (0; <nY_NUM_OF_ROWS; 1) {
- mov (16) uwDEST_Y(0,%1*16) ubSRC_Y(0,%1*16)
- }
-#endif
- $for (0; <nUV_NUM_OF_ROWS; 1) {
- mov (16) uwDEST_U(0,%1*16) ubSRC_U(0,%1*32)<32;16,2>
- mov (16) uwDEST_V(0,%1*16) ubSRC_U(0,%1*32+1)<32;16,2>
- }
-
-// End of P208_Load_9x8.asm
diff --git a/src/shaders/post_processing/gen5_6/Common/PA_Load.inc b/src/shaders/post_processing/gen5_6/Common/PA_Load.inc
deleted file mode 100644
index bfe3495..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PA_Load.inc
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: PA_Load.inc
-//
-// YUV422 data are first loaded to bottom I/O REGION_2, then unpacked to planar data
-// and stored in top I/O REGION_1
-
-#undef nY_NUM_OF_ROWS
-#undef nUV_NUM_OF_ROWS
-
-#define nY_NUM_OF_ROWS 8 // Number of Y rows per block
-#define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
-
-#if defined(PA_LOAD_8x8)
- #define nDPR_BLOCK_SIZE_YUV nBLOCK_WIDTH_32+nBLOCK_HEIGHT_8 // Y block size 32x8
- #define nDPR_MSG_SIZE_YUV nRESLEN_8 // # of MRF's to hold Y block data (8)
-#endif
-#if defined(PA_LOAD_9x8)
- #define nDPR_BLOCK_SIZE_YUV_MAIN nBLOCK_WIDTH_32+nBLOCK_HEIGHT_8 // Main YUV block size 32x8
- #define nDPR_MSG_SIZE_YUV_MAIN nRESLEN_8 // # of MRF's to hold Y block data (8)
- #define nDPR_BLOCK_SIZE_YUV_ADDITION nBLOCK_WIDTH_4+nBLOCK_HEIGHT_8 // Additional YUV block size 4x8
- #define nDPR_MSG_SIZE_YUV_ADDITION nRESLEN_1 // # of MRF's to hold Y block data (8)
-#endif
-
-#define udSRC_YUV udBOT_Y_IO
-#define nSRC_YUV_REG nBOT_Y
-
-#define uwDEST_Y uwTOP_Y
-#define uwDEST_U uwTOP_U
-#define uwDEST_V uwTOP_V
-
-#define nSRC_REGION nREGION_1 // REGION_1 will be the source region for first kernel
-
-// End of PA_Load.inc
diff --git a/src/shaders/post_processing/gen5_6/Common/PA_Load_8x8.asm b/src/shaders/post_processing/gen5_6/Common/PA_Load_8x8.asm
deleted file mode 100644
index 470e9c6..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PA_Load_8x8.asm
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: PA_Load_8x8.asm
-//----------------------------------------------------------------
-
-#define PA_LOAD_8x8
-#include "PA_Load.inc"
-
-// Load 16x8 packed data block
-// Packed data block should be loaded as 32x8 pixel block
- add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Block origin
- shl (1) rMSGSRC.0<1>:d rMSGSRC.0<0;1,0>:w 1:w // H. block origin need to be doubled
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_YUV:ud // Block width and height (32x8)
- mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_YUV(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_YUV+nBI_CURRENT_SRC_YUV:ud
-
-// Unpack to "planar" YUV422 format in word-aligned bytes
- add (4) pCF_Y_OFFSET<1>:uw ubSRC_CF_OFFSET<4;4,1>:ub nSRC_YUV_REG*nGRFWIB:w // Initial Y,U,V offset in YUV422 block
- $for(0; <nY_NUM_OF_ROWS; 1) {
- mov (16) uwDEST_Y(0, %1*16)<1> r[pCF_Y_OFFSET, %1*nGRFWIB]REGION(16,2)
- mov (8) uwDEST_U(0, %1*8)<1> r[pCF_U_OFFSET, %1*nGRFWIB]REGION(8,4)
- mov (8) uwDEST_V(0, %1*8)<1> r[pCF_V_OFFSET, %1*nGRFWIB]REGION(8,4)
- }
-
-// End of PA_Load_8x8
diff --git a/src/shaders/post_processing/gen5_6/Common/PA_Load_9x8.asm b/src/shaders/post_processing/gen5_6/Common/PA_Load_9x8.asm
deleted file mode 100644
index ed9e3a2..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PA_Load_9x8.asm
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: PA_Load_9x8.asm
-//----------------------------------------------------------------
-// This module loads 16x8 Y, 9x8 U and 9x8 V planar data blocks for CSC module
-// and stores it in word-aligned format.
-//----------------------------------------------------------------
-
-#define PA_LOAD_9x8
-#include "PA_Load.inc"
-
-// Load 18x8 packed data block
-// Packed data block should be loaded as 36x8 pixel block
- add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Block origin
- shl (1) rMSGSRC.0<1>:d acc0:w 1:w // H. block origin need to be doubled
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_YUV_MAIN:ud // Block width and height (32x8)
- mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_YUV(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_YUV_MAIN+nBI_CURRENT_SRC_YUV:ud
-
- add (1) rMSGSRC.0<1>:d rMSGSRC.0:d 32:w //the last 4 pixels are read again for optimization
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_YUV_ADDITION:ud // Block width and height (4x8)
- mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_YUV(8)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_YUV_ADDITION+nBI_CURRENT_SRC_YUV:ud
-
-// Unpack to "planar" YUV422 format in word-aligned bytes
- add (4) pCF_Y_OFFSET<1>:uw ubSRC_CF_OFFSET<4;4,1>:ub nSRC_YUV_REG*nGRFWIB:w // Initial Y,U,V offset in YUV422 block
- $for(0; <nY_NUM_OF_ROWS; 1) {
- mov (16) uwDEST_Y(0, %1*16)<1> r[pCF_Y_OFFSET, %1*nGRFWIB]REGION(16,2)
- mov (8) uwDEST_U(0, %1*16)<1> r[pCF_U_OFFSET, %1*nGRFWIB]REGION(8,4)
- mov (8) uwDEST_V(0, %1*16)<1> r[pCF_V_OFFSET, %1*nGRFWIB]REGION(8,4)
- }
-
- $for(0; <nUV_NUM_OF_ROWS; 1) {
- mov (1) uwDEST_U(0, %1*16+8)<1> r[pCF_U_OFFSET, %1*4+256]REGION(1,0)
- mov (1) uwDEST_V(0, %1*16+8)<1> r[pCF_V_OFFSET, %1*4+256]REGION(1,0)
- }
- //UV expansion done in PL9x8_PL16x8.asm module
-
-// End of PA_Load_9x8
diff --git a/src/shaders/post_processing/gen5_6/Common/PL16x8_PL8x4.asm b/src/shaders/post_processing/gen5_6/Common/PL16x8_PL8x4.asm
deleted file mode 100644
index ff08793..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PL16x8_PL8x4.asm
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: PL16x8_PL8x4.asm
-//----------------------------------------------------------------
-
-#include "common.inc"
-
-#ifndef DEST_U //DEST_U, DEST_V not defined
-
- #if (nSRC_REGION==nREGION_1)
- #define DEST_Y uwTOP_Y
- #define DEST_U uwTOP_U
- #define DEST_V uwTOP_V
- #elif (nSRC_REGION==nREGION_2)
- #define DEST_Y uwBOT_Y
- #define DEST_U uwBOT_U
- #define DEST_V uwBOT_V
- #endif
-
-#endif
-
-//Convert 444 from sampler to 422
-$for (0, 0; <8; 2, 1) {
- mov (8) DEST_U(0,%2*8)<1> DEST_U(%1)<16;8,2>
- mov (8) DEST_V(0,%2*8)<1> DEST_V(%1)<16;8,2>
-}
-
-// Re-define new number of lines
-#undef nUV_NUM_OF_ROWS
-#define nUV_NUM_OF_ROWS 4
diff --git a/src/shaders/post_processing/gen5_6/Common/PL16x8_PL8x8.asm b/src/shaders/post_processing/gen5_6/Common/PL16x8_PL8x8.asm
deleted file mode 100644
index bf67443..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PL16x8_PL8x8.asm
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: PL16x8_PL8x8.asm
-//----------------------------------------------------------------
-
-#include "common.inc"
-
-#ifndef DEST_U
-
- //DEST_U, DEST_V not defined
- #if (nSRC_REGION==nREGION_1)
- #define DEST_Y uwTOP_Y
- #define DEST_U uwTOP_U
- #define DEST_V uwTOP_V
- #elif (nSRC_REGION==nREGION_2)
- #define DEST_Y uwBOT_Y
- #define DEST_U uwBOT_U
- #define DEST_V uwBOT_V
- #endif
-
-#endif
-
-
-//Convert 444 from sampler to 422
-$for (0, 0; <8; 2, 1) {
- mov DEST_U(%2)<1> DEST_U(%1)<16;8,2>
- mov DEST_V(%2)<1> DEST_V(%1)<16;8,2>
-}
diff --git a/src/shaders/post_processing/gen5_6/Common/PL2_Load.inc b/src/shaders/post_processing/gen5_6/Common/PL2_Load.inc
deleted file mode 100644
index 6391454..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PL2_Load.inc
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: PL2_Load.inc
-
-#undef nY_NUM_OF_ROWS
-#undef nUV_NUM_OF_ROWS
-
-#define nY_NUM_OF_ROWS 8 // Number of Y rows per block
-#define nDPR_BLOCK_SIZE_Y nBLOCK_WIDTH_16+nBLOCK_HEIGHT_8 // Y block size 16x8
-#define nDPR_MSG_SIZE_Y nRESLEN_4 // # of MRF's to hold Y block data (4)
-
-
-#if defined(NV11_LOAD_4x8)
- #define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
- #define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_8+nBLOCK_HEIGHT_8 // U/V block size 8x8
- #define nDPR_MSG_SIZE_UV nRESLEN_2 // # of MRF's to hold U/V block data (2)
-#endif
-
-#if defined(NV11_LOAD_5x8)
- #define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
- #define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_12+nBLOCK_HEIGHT_8 // U/V block size 12x8
- #define nDPR_MSG_SIZE_UV nRESLEN_4 // # of MRF's to hold U/V block data (4)
-#endif
-#if defined(NV12_LOAD_8x4)
- #define nUV_NUM_OF_ROWS 4 // Number of U/V rows per block
- #define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_16+nBLOCK_HEIGHT_4 // U/V block size 16x4
- #define nDPR_MSG_SIZE_UV nRESLEN_2 // # of MRF's to hold U/V block data (2)
-#endif
-#if defined(NV12_LOAD_8x5)
- #define nUV_NUM_OF_ROWS 6 // Number of U/V rows per block (Rounded Up to Nearest Even Number)
- #define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_16+nBLOCK_HEIGHT_5 // U/V block size 16x5
- #define nDPR_MSG_SIZE_UV nRESLEN_3 // # of MRF's to hold U/V block data (3)
-#endif
-#if defined(NV12_LOAD_9x5)
- #define nUV_NUM_OF_ROWS 6 // Number of U/V rows per block (Rounded Up to Nearest Even Number)
- #define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_20+nBLOCK_HEIGHT_5 // U/V block size 20x5
- #define nDPR_MSG_SIZE_UV nRESLEN_5 // # of MRF's to hold U/V block data (5)
-#endif
-#if defined(P208_LOAD_8x8)
- #define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
- #define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_16+nBLOCK_HEIGHT_8 // U/V block size 16x8
- #define nDPR_MSG_SIZE_UV nRESLEN_4 // # of MRF's to hold U/V block data (4)
-#endif
-#if defined(P208_LOAD_9x8)
- #define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
- #define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_20+nBLOCK_HEIGHT_8 // U/V block size 20x8
- #define nDPR_MSG_SIZE_UV nRESLEN_8 // # of MRF's to hold U/V block data (8)
-#endif
-
-// Source/destination region definitions
-#if !defined(udSRC_Y)
- #define udSRC_Y udBOT_Y_IO // Default Y source region is top Y region
-#endif
-
-#if !defined(udSRC_U)
- #define udSRC_U udBOT_U_IO // Default U source region is top U region
-#endif
-
-#define ubSRC_Y ubBOT_Y
-#define nSRC_Y_REG nBOT_Y
-#define ubSRC_U ubBOT_U
-#define nSRC_U_REG nBOT_U
-
-#define uwDEST_Y uwTOP_Y // However they can be transferred to word-aligned byte if desired
-#define uwDEST_U uwTOP_U
-#define uwDEST_V uwTOP_V
-
-#define ubDEST_Y ubTOP_Y // I'd like use them for color conversion
-#define uwSRC_U uwBOT_U
-
-#define nSRC_REGION nREGION_1 // REGION_1 will be the source region for first kernel
-
-// End of PL2_Load.inc
diff --git a/src/shaders/post_processing/gen5_6/Common/PL3_Load.inc b/src/shaders/post_processing/gen5_6/Common/PL3_Load.inc
deleted file mode 100644
index 1bbc1d1..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PL3_Load.inc
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: PL3_Load.inc
-
-#undef nY_NUM_OF_ROWS
-#undef nUV_NUM_OF_ROWS
-
-#define nY_NUM_OF_ROWS 8 // Number of Y rows per block
-#define nDPR_BLOCK_SIZE_Y nBLOCK_WIDTH_16+nBLOCK_HEIGHT_8 // Y block size 16x8
-#define nDPR_MSG_SIZE_Y nRESLEN_4 // # of MRF's to hold Y block data (4)
-
-#if defined(IMC3_LOAD_8x4)
- #define nUV_NUM_OF_ROWS 4 // Number of U/V rows per block
- #define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_8+nBLOCK_HEIGHT_4 // U/V block size 8x4
- #define nDPR_MSG_SIZE_UV nRESLEN_1 // # of MRF's to hold U/V block data (1)
-#endif
-#if defined(IMC3_LOAD_8x5)
- #define nUV_NUM_OF_ROWS 6 // Number of U/V rows per block (Rounded Up to Nearest Even Number)
- #define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_8+nBLOCK_HEIGHT_5 // U/V block size 8x5
- #define nDPR_MSG_SIZE_UV nRESLEN_2 // # of MRF's to hold U/V block data (2)
-#endif
-#if defined(IMC3_LOAD_9x5)
- #define nUV_NUM_OF_ROWS 6 // Number of U/V rows per block (Rounded Up to Nearest Even Number)
- #define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_12+nBLOCK_HEIGHT_5 // U/V block size 12x5
- #define nDPR_MSG_SIZE_UV nRESLEN_3 // # of MRF's to hold U/V block data (3)
-#endif
-
-// Source/destination region definitions
-#if !defined(udSRC_Y)
- #define udSRC_Y udBOT_Y_IO // Default Y source region is top Y region
-#endif
-
-#if !defined(udSRC_U)
- #define udSRC_U udBOT_U_IO // Default U source region is top U region
-#endif
-
-#if !defined(udSRC_V)
- #define udSRC_V udBOT_V_IO // Default V source region is top V region
-#endif
-
-#define ubSRC_Y ubBOT_Y // Loading data are always in byte type
-#define ubSRC_U ubBOT_U
-#define ubSRC_V ubBOT_V
-
-#define uwDEST_Y uwTOP_Y // However they can be transferred to word-aligned byte if desired
-#define uwDEST_U uwTOP_U
-#define uwDEST_V uwTOP_V
-
-#define nSRC_REGION nREGION_1 // REGION_1 will be the source region for first kernel
-
-// End of PL3_Load.inc
diff --git a/src/shaders/post_processing/gen5_6/Common/PL4x8_Save_NV11.asm b/src/shaders/post_processing/gen5_6/Common/PL4x8_Save_NV11.asm
deleted file mode 100644
index eeea3a2..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PL4x8_Save_NV11.asm
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-
-#include "PL4x8_Save_NV11.inc"
-
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
-
-#if !defined(SAVE_UV_ONLY)
-// Save current planar frame Y block data (16x8) -------------------------------
-
- mov (2) mMSGHDR.0<1>:d wORIX<2;2,1>:w // Block origin
- mov (1) mMSGHDR.2<1>:ud nDPW_BLOCK_SIZE_Y:ud // Block width and height (16x8)
-
-///* Yoni - masking is not relevant for ILK?!?
-//
-// //Use the mask to determine which pixels shouldn't be over-written
-// cmp.ge.f0.0 (1) NULLREG BLOCK_MASK_D:ud 0x00FFFFFF:ud //Check if all pixels in the block need to be modified
-// (f0.0) jmpi WritePlanarToDataPort
-//
-// //If mask is not all 1's, then load the entire 16x8 block
-// //so that only those bytes may be modified that need to be (using the mask)
-// send (8) SRC_YD(0)<1> MSGHDR MSGSRC<8;8,1>:ud DWBRMSGDSC+0x00040000+BI_DEST_Y:ud //16x8
-//
-// asr (2) MSGSRC.0<1>:ud ORIX<2;2,1>:w 1:w // U/V block origin should be half of Y's
-// mov (1) MSGSRC.2<1>:ud 0x00030007:ud // Block width and height (8x4)
-// send (8) SRC_UD(0)<1> MSGHDR MSGSRC<8;8,1>:ud DWBRMSGDSC+0x00010000+BI_DEST_U:ud
-// send (8) SRC_VD(0)<1> MSGHDR MSGSRC<8;8,1>:ud DWBRMSGDSC+0x00010000+BI_DEST_V:ud
-//
-// //Restore the origin information
-// mov (2) MSGSRC.0<1>:ud ORIX<2;2,1>:w // Block origin
-// mov (1) MSGSRC.2<1>:ud 0x0007000F:ud // Block width and height (16x8)
-//
-// //expand U and V to be aligned on word boundary
-// mov (16) SRC_UW(1)<1> SRC_U(0,16)
-// mov (16) SRC_UW(0)<1> SRC_U(0, 0)
-// mov (16) SRC_VW(1)<1> SRC_V(0,16)
-// mov (16) SRC_VW(0)<1> SRC_V(0, 0)
-//
-// //Merge the data
-// mov (1) f0.1:uw BLOCK_MASK_V:uw //Load the mask on flag reg
-// (f0.1) mov (8) TEMP0<1>:uw BLOCK_MASK_H:uw
-// (-f0.1) mov (8) TEMP0<1>:uw 0:uw
-//
-// // Destination is Word aligned
-// $for(0; <Y_ROW_SIZE; 2) {
-// mov (1) f0.1:uw TEMP(0,%1)<0;1,0>
-// (-f0.1) mov (16) DEST_Y(0, %1*32)<2> SRC_Y(0, %1*16)
-// (-f0.1) mov (16) DEST_U(0, %1*8)<1> SRC_U(0, %1*8) //only works for Word aligned Byte data
-// (-f0.1) mov (16) DEST_V(0, %1*8)<1> SRC_V(0, %1*8) //only works for Word aligned Byte data
-//
-// mov (1) f0.1:uw TEMP(0,1+%1)<0;1,0>
-// (-f0.1) mov (16) DEST_Y(0, 1+%1*32)<2> SRC_Y(0, 1+%1*16)
-//
-// }
-//
-//*/ Yoni - masking is not relevant for ILK?!?
-
-WritePlanarToDataPort:
- $for(0,0; <nY_NUM_OF_ROWS; 2,1) {
- mov (16) mubMSGPAYLOAD(%2,0)<1> ub2DEST_Y(%1)REGION(16,2)
- mov (16) mubMSGPAYLOAD(%2,16)<1> ub2DEST_Y(%1+1)REGION(16,2)
- }
- send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_Y+nBI_DESTINATION_Y:ud
-#endif
-
-// Save U/V data block in planar format (4x8) ----------------------------------
- mov (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w // Block origin
- asr (1) rMSGSRC.0<1>:d rMSGSRC.0<0;1,0>:d 1:w // U/V block origin should be half of Y's
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
-
- $for(0,0; <nY_NUM_OF_ROWS;4,1) {
- mov (16) mubMSGPAYLOAD(%2,0)<2> ub2DEST_U(%2)REGION(16,2)
- mov (16) mubMSGPAYLOAD(%2,1)<2> ub2DEST_V(%2)REGION(16,2)
- }
- send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_UV+nBI_DESTINATION_UV:ud
-
-// End of PL4x8_Save_NV11
-
diff --git a/src/shaders/post_processing/gen5_6/Common/PL4x8_Save_NV11.inc b/src/shaders/post_processing/gen5_6/Common/PL4x8_Save_NV11.inc
deleted file mode 100644
index 01830eb..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PL4x8_Save_NV11.inc
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//Module name: PL8x4_Save_NV11.inc
-//
-// Setup for storing planar data
-//
-
-#include "undefall.inc" //Undefine the SRC and DEST sysmbols
-
-#define nDPW_BLOCK_SIZE_Y nBLOCK_WIDTH_16+nBLOCK_HEIGHT_8 // Y block size 16x8
-#define nDPW_MSG_SIZE_Y nMSGLEN_4 // # of MRF's to hold Y block data (4)
-#define nDPW_BLOCK_SIZE_UV nBLOCK_WIDTH_8+nBLOCK_HEIGHT_8 // U/V interleaved block width and height (8x8)
-#define nDPW_MSG_SIZE_UV nMSGLEN_2 // # of MRF's to hold U/V block data (2)
-
-#if (nSRC_REGION==nREGION_1)
- #define udSRC_Y udBOT_Y_IO
- #define udSRC_U udBOT_U_IO
- #define udSRC_V udBOT_V_IO
- #define ubSRC_Y ubBOT_Y
- #define ubSRC_U ubBOT_U
- #define ubSRC_V ubBOT_V
-
- #define uwSRC_U uwBOT_U //For masking operation
- #define uwSRC_V uwBOT_V
-
- #define ub2DEST_Y ub2TOP_Y
- #define ub2DEST_U ub2TOP_U
- #define ub2DEST_V ub2TOP_V
-
-#elif (nSRC_REGION==nREGION_2)
- #define udSRC_Y udTOP_Y_IO
- #define udSRC_U udTOP_U_IO
- #define udSRC_V udTOP_V_IO
- #define ubSRC_Y ubTOP_Y
- #define ubSRC_U ubTOP_U
- #define ubSRC_V ubTOP_V
-
- #define uwSRC_U uwTOP_U //For masking operation
- #define uwSRC_V uwTOP_V
-
- #define ub2DEST_Y ub2BOT_Y
- #define ub2DEST_U ub2BOT_U
- #define ub2DEST_V ub2BOT_V
-
-#endif
-
-///* Yoni - masking is not relevant for ILK?!?
-//#define TEMP0 REG(r,54)
-//.declare TEMP Base=TEMP0 ElementSize=2 SrcRegion=<8;8,1> Type=uw
-///* Yoni - masking is not relevant for ILK?!?
-
-
diff --git a/src/shaders/post_processing/gen5_6/Common/PL5x8_PL16x8.asm b/src/shaders/post_processing/gen5_6/Common/PL5x8_PL16x8.asm
deleted file mode 100644
index 4dca14d..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PL5x8_PL16x8.asm
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: PL5x8_PL16x8.asm
-
-#include "Expansion.inc"
-
-//------------------------------ Horizontal Upconversion -----------------------------
- $for (nUV_NUM_OF_ROWS/2-1; >-1; -1) {
- avg.sat (16) uwDEST_U(0, %1*32+16) uwDEST_U(0, %1*16+7)<1;2,0> uwDEST_U(0, %1*16+7)<1;2,1>
- avg.sat (16) uwDEST_V(0, %1*32+16) uwDEST_V(0, %1*16+7)<1;2,0> uwDEST_V(0, %1*16+7)<1;2,1>
- avg.sat (16) uwDEST_U(0, %1*32) uwDEST_U(0, %1*16)<1;2,0> uwDEST_U(0, %1*16)<1;2,1>
- avg.sat (16) uwDEST_V(0, %1*32) uwDEST_V(0, %1*16)<1;2,0> uwDEST_V(0, %1*16)<1;2,1>
- }
- $for (nUV_NUM_OF_ROWS/2-1; >-1; -1) {
- avg.sat (16) uwDEST_U(0, %1*32+16) uwDEST_U(0, %1*32+18)<1;2,0> uwDEST_U(0, %1*32+18)<1;2,1>
- avg.sat (16) uwDEST_V(0, %1*32+16) uwDEST_V(0, %1*32+18)<1;2,0> uwDEST_V(0, %1*32+18)<1;2,1>
- avg.sat (16) uwDEST_U(0, %1*32) uwDEST_U(0, %1*32)<1;2,0> uwDEST_U(0, %1*32)<1;2,1>
- avg.sat (16) uwDEST_V(0, %1*32) uwDEST_V(0, %1*32)<1;2,0> uwDEST_V(0, %1*32)<1;2,1>
- }
-
-// End of PL5x8_PL16x8
diff --git a/src/shaders/post_processing/gen5_6/Common/PL5x8_PL8x8.asm b/src/shaders/post_processing/gen5_6/Common/PL5x8_PL8x8.asm
deleted file mode 100644
index 4644763..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PL5x8_PL8x8.asm
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: PL5x8_PL8x8.asm
-
-#include "Expansion.inc"
-
-//------------------------------ Horizontal Upconversion -----------------------------
- $for (0; <nUV_NUM_OF_ROWS; 1) {
- avg.sat (8) uwDEST_U(0, %1*8) uwDEST_U(0, %1*8)<1;2,0> uwDEST_U(0, %1*8)<1;2,1>
- avg.sat (8) uwDEST_V(0, %1*8) uwDEST_V(0, %1*8)<1;2,0> uwDEST_V(0, %1*8)<1;2,1>
- }
-
-// End of PL5x8_PL8x8
diff --git a/src/shaders/post_processing/gen5_6/Common/PL8x4_Save_IMC3.asm b/src/shaders/post_processing/gen5_6/Common/PL8x4_Save_IMC3.asm
deleted file mode 100644
index e2439a9..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PL8x4_Save_IMC3.asm
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: PL8x4_Save_IMC3.asm
-//
-// Save planar YUV420 frame data block of size 16x8
-
-#include "PL8x4_Save_IMC3.inc"
-
-//Use the mask to determine which pixels shouldn't be over-written
- and (1) acc0.0<1>:ud udBLOCK_MASK<0;1,0>:ud 0x00FFFFFF:ud
- cmp.ge.f0.0(1) dNULLREG acc0.0<0;1,0>:ud 0x00FFFFFF:ud //Check if all pixels in the block need to be modified
- (f0.0) jmpi WritePlanarToDataPort
-
- //If mask is not all 1's, then load the entire 16x8 block
- //so that only those bytes may be modified that need to be (using the mask)
-
- // Load 16x8 planar Y ----------------------------------------------------------
- mov (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w // Block origin
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_Y:ud // Block width and height (16x8)
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_Y(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_DESTINATION_Y:ud
- // Load 8x4 planar U and V -----------------------------------------------------
- asr (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w 1:w // U/V block origin should be half of Y's
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_UV:ud // Block width and height (8x4)
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_U(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_DESTINATION_U:ud
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_V(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_DESTINATION_V:ud
-
- //expand U and V to be aligned on word boundary - Y remains in bytes
- $for (nUV_NUM_OF_ROWS/2-1; >-1; -1) {
- mov (16) uwSRC_U(0, %1*16)<1> ubSRC_U(0, %1*16)
- mov (16) uwSRC_V(0, %1*16)<1> ubSRC_V(0, %1*16)
- }
-
- //Merge the data
- mov (1) f0.0:uw ubBLOCK_MASK_V:ub //Load the mask on flag reg
- (f0.0) mov (8) rMASK_TEMP<1>:uw uwBLOCK_MASK_H:uw
- (-f0.0) mov (8) rMASK_TEMP<1>:uw 0:uw
-
- // Destination is Word aligned
- $for(0; <nY_NUM_OF_ROWS; 2) {
- mov (1) f0.1:uw uwMASK_TEMP(0,%1)<0;1,0>
- (-f0.1) mov (16) ub2DEST_Y(0, %1*32)<2> ubSRC_Y(0, %1*16)
- (-f0.1) mov (16) ub2DEST_U(0, %1*8)<1> ubSRC_U(0, %1*8) //only works for Word aligned Byte data
- (-f0.1) mov (16) ub2DEST_V(0, %1*8)<1> ubSRC_V(0, %1*8) //only works for Word aligned Byte data
-
- mov (1) f0.1:uw uwMASK_TEMP(0,1+%1)<0;1,0>
- (-f0.1) mov (16) ub2DEST_Y(0, (1+%1)*32)<2> ubSRC_Y(0, (1+%1)*16)
- }
-
-WritePlanarToDataPort:
-#if !defined(SAVE_UV_ONLY)
-// Save current planar frame Y block data (16x8) -------------------------------
- mov (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w // Block origin
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_Y:ud // Block width and height (16x8)
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
- $for(0,0; <nY_NUM_OF_ROWS; 2,1) {
- mov(16) mubMSGPAYLOAD(%2,0)<1> ub2DEST_Y(%1)REGION(16,2)
- mov(16) mubMSGPAYLOAD(%2,16)<1> ub2DEST_Y(%1+1)REGION(16,2)
- }
- send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_Y+nBI_DESTINATION_Y:ud
-#endif
-// Save U/V data block in planar format (8x4) ----------------------------------
- asr (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w 1:w // U/V block origin should be half of Y's
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_UV:ud // Block width and height (8x4)
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
-
-// Save U picture data ---------------------------------------------------------
- mov (16) mubMSGPAYLOAD(0,0)<1> ub2DEST_U(0)REGION(16,2) // U rows 0,1
- mov (16) mubMSGPAYLOAD(0,16)<1> ub2DEST_U(1)REGION(16,2) // U rows 2,3
- send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_UV+nBI_DESTINATION_U:ud
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
-
-// Save V picture data ---------------------------------------------------------
- mov (16) mubMSGPAYLOAD(0,0)<1> ub2DEST_V(0)REGION(16,2) // V rows 0,1
- mov (16) mubMSGPAYLOAD(0,16)<1> ub2DEST_V(1)REGION(16,2) // V rows 2,3
- send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_UV+nBI_DESTINATION_V:ud
-
-// End of PL8x4_Save_IMC3
diff --git a/src/shaders/post_processing/gen5_6/Common/PL8x4_Save_IMC3.inc b/src/shaders/post_processing/gen5_6/Common/PL8x4_Save_IMC3.inc
deleted file mode 100644
index 9e026a1..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PL8x4_Save_IMC3.inc
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: PL8x4_Save_IMC3.inc
-//
-// Setup for storing planar data
-//
-
-#include "undefall.inc" //Undefine the SRC and DEST sysmbols
-
-// For saving
-#define nDPW_BLOCK_SIZE_Y nBLOCK_WIDTH_16+nBLOCK_HEIGHT_8 // Y block size 16x8
-#define nDPW_MSG_SIZE_Y nMSGLEN_4 // # of MRF's to hold Y block data (4)
-#define nDPW_BLOCK_SIZE_UV nBLOCK_WIDTH_8+nBLOCK_HEIGHT_4 // U/V block size 8x4
-#define nDPW_MSG_SIZE_UV nMSGLEN_1 // # of MRF's to hold U/V block data (1)
-
-// For masking
-#undef nDPR_MSG_SIZE_Y
-#define nDPR_MSG_SIZE_Y nRESLEN_4 // # of MRF's to hold Y block data (4)
-#undef nDPR_MSG_SIZE_UV
-#define nDPR_MSG_SIZE_UV nRESLEN_1 // # of MRF's to hold U/V block data (1)
-#define rMASK_TEMP REG(r,nTEMP0)
-.declare uwMASK_TEMP Base=rMASK_TEMP ElementSize=2 SrcRegion=<8;8,1> Type=uw //1 GRF
-
-#if (nSRC_REGION==nREGION_1)
- // For saving
- #define ub2DEST_Y ub2TOP_Y
- #define ub2DEST_U ub2TOP_U
- #define ub2DEST_V ub2TOP_V
- //For masking operation
- #define udSRC_Y udBOT_Y_IO
- #define udSRC_U udBOT_U_IO
- #define udSRC_V udBOT_V_IO
- #define ubSRC_Y ubBOT_Y
- #define ubSRC_U ubBOT_U
- #define ubSRC_V ubBOT_V
- #define uwSRC_U uwBOT_U
- #define uwSRC_V uwBOT_V
-
-#elif (nSRC_REGION==nREGION_2)
- // For saving
- #define ub2DEST_Y ub2BOT_Y
- #define ub2DEST_U ub2BOT_U
- #define ub2DEST_V ub2BOT_V
- //For masking operation
- #define udSRC_Y udTOP_Y_IO
- #define udSRC_U udTOP_U_IO
- #define udSRC_V udTOP_V_IO
- #define ubSRC_Y ubTOP_Y
- #define ubSRC_U ubTOP_U
- #define ubSRC_V ubTOP_V
- #define uwSRC_U uwTOP_U
- #define uwSRC_V uwTOP_V
-
-#endif
diff --git a/src/shaders/post_processing/gen5_6/Common/PL8x4_Save_NV12.asm b/src/shaders/post_processing/gen5_6/Common/PL8x4_Save_NV12.asm
deleted file mode 100644
index ffebaaa..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PL8x4_Save_NV12.asm
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-
-// Module name: PL8x4_Save_NV12.asm
-//
-// Save entire current planar frame data block of size 16x8
-//---------------------------------------------------------------
-// Symbols needed to be defined before including this module
-//
-// DWORD_ALIGNED_DEST: only if DEST_Y, DEST_U, DEST_V data are DWord aligned
-// ORIX:
-//---------------------------------------------------------------
-
-#include "PL8x4_Save_NV12.inc"
-
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
-
-#if !defined(SAVE_UV_ONLY)
-// Save current planar frame Y block data (16x8) -------------------------------
-
- mov (2) mMSGHDR.0<1>:d wORIX<2;2,1>:w // Block origin
- mov (1) mMSGHDR.2<1>:ud nDPW_BLOCK_SIZE_Y:ud // Block width and height (16x8)
-#endif
-
-//Use the mask to determine which pixels shouldn't be over-written
- and (1) acc0<1>:ud udBLOCK_MASK<0;1,0>:ud 0x00FFFFFF:ud
- cmp.ge.f0.0 (1) dNULLREG acc0<0;1,0>:ud 0x00FFFFFF:ud //Check if all pixels in the block need to be modified
- (f0.0) jmpi WritePlanarToDataPort
-
-//If mask is not all 1's, then load the entire 16x8 block
-//so that only those bytes may be modified that need to be (using the mask)
- send (8) udSRC_Y(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_Y+nBI_DESTINATION_Y:ud //16x8
-
- asr (1) rMSGSRC.1<1>:ud wORIY<0;1,0>:w 1:w { NoDDClr } // U/V block origin should be half of Y's
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_UV:ud { NoDDChk } // Block width and height (16x4)
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud //move message desrcptor to the message header
- send (8) udSRC_U(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_UV+nBI_DESTINATION_UV:ud
-
-//Restore the origin information
- mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w // Block origin
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_Y:ud // Block width and height (16x8)
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud //move message desrcptor to the message header
-
-//Merge the data
- mov (1) f0.1:uw ubBLOCK_MASK_V:ub //Load the mask on flag reg
- (f0.1) mov (8) rMASK_TEMP<1>:uw uwBLOCK_MASK_H:uw
- (-f0.1) mov (8) rMASK_TEMP<1>:uw 0:uw
-
-//convert the mask from 16bits to 8bits by selecting every other bit
- mov (1) udMASK_TEMP1(0,0)<1> 0x00040001:ud
- mov (1) udMASK_TEMP1(0,1)<1> 0x00400010:ud
- mov (1) udMASK_TEMP1(0,2)<1> 0x04000100:ud
- mov (1) udMASK_TEMP1(0,3)<1> 0x40001000:ud
-
-//merge the loaded block with the current block
- $for(0,0; <nY_NUM_OF_ROWS; 2,1) {
- mov (1) f0.1:uw uwMASK_TEMP(0, %1)<0;1,0>
- (-f0.1) mov (16) ubDEST_Y(0,%1*32)<2> ubSRC_Y(0,%1*16)
-
- and.nz.f0.1 (8) wNULLREG uwMASK_TEMP(0,%1)<0;1,0> uwMASK_TEMP1(0,0) //change the mask by selecting every other bit
- (-f0.1) mov (8) ubDEST_U(0, %2*16)<2> ub2SRC_U(0, %1*8)<16;8,2>
- (-f0.1) mov (8) ubDEST_V(0, %2*16)<2> ub2SRC_U(0, %1*8+1)<16;8,2>
-
- mov (1) f0.1:uw uwMASK_TEMP(0,1+%1)<0;1,0>
- (-f0.1) mov (16) ubDEST_Y(0, (1+%1)*32)<2> ubSRC_Y(0, (1+%1)*16)
-
- }
-
-WritePlanarToDataPort:
-#if !defined(SAVE_UV_ONLY)
- $for(0,0; <nY_NUM_OF_ROWS; 2,1) {
- mov (16) mubMSGPAYLOAD(%2,0)<1> ub2DEST_Y(%1)REGION(16,2)
- mov (16) mubMSGPAYLOAD(%2,16)<1> ub2DEST_Y(%1+1)REGION(16,2)
- }
- send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_Y+nBI_DESTINATION_Y:ud
-#endif
-
-//** Save 8x4 packed U and V -----------------------------------------------------
-// we could write directly wORIX to mMSGHDR and then execute asr on it, that way we could
-// avoid using rMSGSRC as a buffer and have one command less in code, but it is unknown whether
-//it is possible to do asr on mMSGHDR so we use rMSGSRC.
- mov (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w // Block origin
- asr (1) rMSGSRC.1<1>:d rMSGSRC.1<0;1,0>:d 1:w // U/V block origin should be half of Y's
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_UV:ud // U/V block width and height (16x4)
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
-
- $for(0,0; <nY_NUM_OF_ROWS;4,1) {
- mov (16) mubMSGPAYLOAD(%2,0)<2> ub2DEST_U(%2)REGION(16,2)
- mov (16) mubMSGPAYLOAD(%2,1)<2> ub2DEST_V(%2)REGION(16,2)
- }
- send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_UV+nBI_DESTINATION_UV:ud
-
-// End of PL8x4_Save_NV12
-
diff --git a/src/shaders/post_processing/gen5_6/Common/PL8x4_Save_NV12.inc b/src/shaders/post_processing/gen5_6/Common/PL8x4_Save_NV12.inc
deleted file mode 100644
index 8056b70..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PL8x4_Save_NV12.inc
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//Module name: PL8x4_Save_NV12.inc
-//
-// Setup for storing planar data
-//
-
-#include "undefall.inc" //Undefine the SRC and DEST sysmbols
-#undef nDPW_BLOCK_SIZE_Y
-#undef nDPW_MSG_SIZE_Y
-#undef nDPW_BLOCK_SIZE_UV
-#undef nDPW_MSG_SIZE_UV
-
-#define nDPW_BLOCK_SIZE_Y nBLOCK_WIDTH_16+nBLOCK_HEIGHT_8 // Y block size 16x8
-#define nDPW_MSG_SIZE_Y nMSGLEN_4 // # of MRF's to hold Y block data (4)
-#define nDPW_BLOCK_SIZE_UV nBLOCK_WIDTH_16+nBLOCK_HEIGHT_4 // U/V interleaved block width and height (16x4)
-#define nDPW_MSG_SIZE_UV nMSGLEN_2 // # of MRF's to hold U/V block data (2)
-
-// For masking
-#undef nDPR_MSG_SIZE_Y
-#define nDPR_MSG_SIZE_Y nRESLEN_4 // # of MRF's to hold Y block data (4)
-#undef nDPR_MSG_SIZE_UV
-#define nDPR_MSG_SIZE_UV nRESLEN_2
-#define rMASK_TEMP REG(r,nTEMP0)
-.declare uwMASK_TEMP Base=rMASK_TEMP ElementSize=2 SrcRegion=<8;8,1> Type=uw //1 GRF
-#define rMASK_TEMP1 REG(r,nTEMP1)
-.declare udMASK_TEMP1 Base=rMASK_TEMP1 ElementSize=4 SrcRegion=<4;4,1> Type=ud //1 GRF
-.declare uwMASK_TEMP1 Base=rMASK_TEMP1 ElementSize=2 SrcRegion=<8;8,1> Type=uw //1 GRF
-
-
-#if (nSRC_REGION==nREGION_1)
- #define udSRC_Y udBOT_Y_IO
- #define udSRC_U udBOT_U_IO
- #define udSRC_V udBOT_V_IO
- #define ubSRC_Y ubBOT_Y
- #define ubSRC_U ubBOT_U
- #define ubSRC_V ubBOT_V
-
- #define uwSRC_U uwBOT_U //For masking operation
- #define uwSRC_V uwBOT_V
-
- #define ub2DEST_Y ub2TOP_Y
- #define ub2DEST_U ub2TOP_U
- #define ub2DEST_V ub2TOP_V
-
- #define ubDEST_Y ubTOP_Y
- #define ubDEST_U ubTOP_U
- #define ubDEST_V ubTOP_V
-
- #define ub2SRC_U ub2BOT_U
-#elif (nSRC_REGION==nREGION_2)
- #define udSRC_Y udTOP_Y_IO
- #define udSRC_U udTOP_U_IO
- #define udSRC_V udTOP_V_IO
- #define ubSRC_Y ubTOP_Y
- #define ubSRC_U ubTOP_U
- #define ubSRC_V ubTOP_V
-
- #define uwSRC_U uwTOP_U //For masking operation
- #define uwSRC_V uwTOP_V
-
- #define ub2DEST_Y ub2BOT_Y
- #define ub2DEST_U ub2BOT_U
- #define ub2DEST_V ub2BOT_V
-
- #define ubDEST_Y ubBOT_Y
- #define ubDEST_U ubBOT_U
- #define ubDEST_V ubBOT_V
-
- #define ub2SRC_U ub2TOP_U
-#endif
-
-///* Yoni - masking is not relevant for ILK?!?
-//#define TEMP0 REG(r,54)
-//.declare TEMP Base=TEMP0 ElementSize=2 SrcRegion=<8;8,1> Type=uw
-///* Yoni - masking is not relevant for ILK?!?
-
diff --git a/src/shaders/post_processing/gen5_6/Common/PL8x5_PL8x8.asm b/src/shaders/post_processing/gen5_6/Common/PL8x5_PL8x8.asm
deleted file mode 100644
index 9b86846..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PL8x5_PL8x8.asm
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: PL8x5_PL8x8.asm
-
-#include "Expansion.inc"
-
-//------------------------------- Vertical Upconversion ------------------------------
- avg.sat (8) uwDEST_U(0, 3*16+8)<1> uwDEST_U(0, 3*8) uwDEST_U(0, (1+3)*8) // Optimization
- avg.sat (8) uwDEST_V(0, 3*16+8)<1> uwDEST_V(0, 3*8) uwDEST_V(0, (1+3)*8) // Optimization
-
- $for(nUV_NUM_OF_ROWS/2-2; >-1; -1) {
- mov (8) uwDEST_U(0, (1+%1)*16)<1> uwDEST_U(0, (1+%1)*8)
- avg.sat (8) uwDEST_U(0, %1*16+8)<1> uwDEST_U(0, %1*8) uwDEST_U(0, (1+%1)*8)
-
- mov (8) uwDEST_V(0, (1+%1)*16)<1> uwDEST_V(0, (1+%1)*8)
- avg.sat (8) uwDEST_V(0, %1*16+8)<1> uwDEST_V(0, %1*8) uwDEST_V(0, (1+%1)*8)
- }
-
-// End of PL8x5_PL8x8
diff --git a/src/shaders/post_processing/gen5_6/Common/PL8x8_PL8x4.asm b/src/shaders/post_processing/gen5_6/Common/PL8x8_PL8x4.asm
deleted file mode 100644
index 7c65541..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PL8x8_PL8x4.asm
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: PL8x8_PL8x4.asm
-//
-// Convert PL 8x8 to PL8x4 in GRF
-//---------------------------------------------------------------
-// Symbols needed to be defined before including this module
-//
-// DWORD_ALIGNED_DEST: only if DEST_Y, DEST_U, DEST_V data are DWord aligned
-// ORIX:
-//---------------------------------------------------------------
-
-#include "PL8x8_PL8x4.inc"
-
-// Convert PL8x8 to PL8x4 ---------------------------------------------------------
-
- mov (8) ubDEST_U(0,16)<2> ubDEST_U(1)<16;8,2> //selecting U every other row
- mov (16) ubDEST_U(0,32)<2> ubDEST_U(2)<32;8,2> //selecting U every other row
- mov (8) ubDEST_V(0,16)<2> ubDEST_V(1)<16;8,2> //selecting V every other row
- mov (16) ubDEST_V(0,32)<2> ubDEST_V(2)<32;8,2> //selecting V every other row
-
-// End of PL8x8_PL8x4.asm ------------------------------------------------------- \ No newline at end of file
diff --git a/src/shaders/post_processing/gen5_6/Common/PL8x8_PL8x4.inc b/src/shaders/post_processing/gen5_6/Common/PL8x8_PL8x4.inc
deleted file mode 100644
index 56e0c29..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PL8x8_PL8x4.inc
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: PL8x8_PL8x4.inc
-//
-// Setup module for convert PL8x8 to PL8x4
-//
-//
-
-// Source/destination region definitions
-//
-#include "undefall.inc" //Undefine the SRC and DEST sysmbols
-
-#if (nSRC_REGION==nREGION_1)
-
- //REGION_1 selected
- #define ubDEST_Y ubTOP_Y
- #define ubDEST_U ubTOP_U
- #define ubDEST_V ubTOP_V
-
-#elif (nSRC_REGION==nREGION_2)
-
- //REGION_2 selected
- #define ubDEST_Y ubBOT_Y
- #define ubDEST_U ubBOT_U
- #define ubDEST_V ubBOT_V
-
-
-#endif
diff --git a/src/shaders/post_processing/gen5_6/Common/PL8x8_Save_P208.asm b/src/shaders/post_processing/gen5_6/Common/PL8x8_Save_P208.asm
deleted file mode 100644
index 16da3fa..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PL8x8_Save_P208.asm
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-
-// Module name: PL8x8_Save_P208.asm
-//
-// Save entire current planar frame data block of size 16x8
-//---------------------------------------------------------------
-// Symbols needed to be defined before including this module
-//
-// DWORD_ALIGNED_DEST: only if DEST_Y, DEST_U, DEST_V data are DWord aligned
-// ORIX:
-//---------------------------------------------------------------
-
-#include "PL8x8_Save_P208.inc"
-
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
-
-#if !defined(SAVE_UV_ONLY)
-// Save current planar frame Y block data (16x8) -------------------------------
-
- mov (2) mMSGHDR.0<1>:d wORIX<2;2,1>:w // Block origin
- mov (1) mMSGHDR.2<1>:ud nDPW_BLOCK_SIZE_Y:ud // Block width and height (16x8)
-
-WritePlanarToDataPort:
- $for(0,0; <nY_NUM_OF_ROWS; 2,1) {
- mov (16) mubMSGPAYLOAD(%2,0)<1> ub2DEST_Y(%1)REGION(16,2)
- mov (16) mubMSGPAYLOAD(%2,16)<1> ub2DEST_Y(%1+1)REGION(16,2)
- }
- send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_Y+nBI_DESTINATION_Y:ud
-#endif
-
-//** Save 8x8 packed U and V -----------------------------------------------------
-// we could write directly wORIX to mMSGHDR and then execute asr on it, that way we could
-// avoid using rMSGSRC as a buffer and have one command less in code, but it is unknown whether
-//it is possible to do asr on mMSGHDR so we use rMSGSRC.
- mov (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w // Block origin
-
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_UV:ud // U/V block width and height (16x4)
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
-
- $for(0,0; <nY_NUM_OF_ROWS;2,1) {
- mov (16) mubMSGPAYLOAD(%2,0)<2> ub2DEST_U(%2)REGION(16,2)
- mov (16) mubMSGPAYLOAD(%2,1)<2> ub2DEST_V(%2)REGION(16,2)
- }
- send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_UV+nBI_DESTINATION_UV:ud
-
-//End of PL8x8_Save_P208.asm
-
diff --git a/src/shaders/post_processing/gen5_6/Common/PL8x8_Save_P208.inc b/src/shaders/post_processing/gen5_6/Common/PL8x8_Save_P208.inc
deleted file mode 100644
index f9bb80e..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PL8x8_Save_P208.inc
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-
-//Module name: PL8x8_Save_P208.inc
-//
-// Setup for storing planar data
-//
-
-#include "undefall.inc" //Undefine the SRC and DEST sysmbols
-
-#define nDPW_BLOCK_SIZE_Y nBLOCK_WIDTH_16+nBLOCK_HEIGHT_8 // Y block size 16x8
-#define nDPW_MSG_SIZE_Y nMSGLEN_4 // # of MRF's to hold Y block data (4)
-#define nDPW_BLOCK_SIZE_UV nBLOCK_WIDTH_16+nBLOCK_HEIGHT_8 // U/V interleaved block width and height (16x8)
-#define nDPW_MSG_SIZE_UV nMSGLEN_4 // # of MRF's to hold U/V block data (4)
-
-#if (nSRC_REGION==nREGION_1)
- #define udSRC_Y udBOT_Y_IO
- #define udSRC_U udBOT_U_IO
- #define udSRC_V udBOT_V_IO
- #define ubSRC_Y ubBOT_Y
- #define ubSRC_U ubBOT_U
- #define ubSRC_V ubBOT_V
-
- #define uwSRC_U uwBOT_U //For masking operation
- #define uwSRC_V uwBOT_V
-
- #define ub2DEST_Y ub2TOP_Y
- #define ub2DEST_U ub2TOP_U
- #define ub2DEST_V ub2TOP_V
-
-#elif (nSRC_REGION==nREGION_2)
- #define udSRC_Y udTOP_Y_IO
- #define udSRC_U udTOP_U_IO
- #define udSRC_V udTOP_V_IO
- #define ubSRC_Y ubTOP_Y
- #define ubSRC_U ubTOP_U
- #define ubSRC_V ubTOP_V
-
- #define uwSRC_U uwTOP_U //For masking operation
- #define uwSRC_V uwTOP_V
-
- #define ub2DEST_Y ub2BOT_Y
- #define ub2DEST_U ub2BOT_U
- #define ub2DEST_V ub2BOT_V
-
-#endif
-
-///* Yoni - masking is not relevant for ILK?!?
-//#define TEMP0 REG(r,54)
-//.declare TEMP Base=TEMP0 ElementSize=2 SrcRegion=<8;8,1> Type=uw
-///* Yoni - masking is not relevant for ILK?!?
-
-
diff --git a/src/shaders/post_processing/gen5_6/Common/PL8x8_Save_PA.asm b/src/shaders/post_processing/gen5_6/Common/PL8x8_Save_PA.asm
deleted file mode 100644
index bf787a4..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PL8x8_Save_PA.asm
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: PL8x8_Save_PA.asm
-//
-// Save planar YUV422 to packed YUV422 format data
-//
-// Note: SRC_* must reference to regions with data type "BYTE"
-// in order to save to byte-aligned byte location
-
-#include "PL8x8_Save_PA.inc"
-
- add (4) pCF_Y_OFFSET<1>:uw ubDEST_CF_OFFSET<4;4,1>:ub nDEST_YUV_REG*nGRFWIB:w // Initial Y,U,V offset in YUV422 block
-
- // Pack Y
- $for(0; <nY_NUM_OF_ROWS; 1) {
- mov (16) r[pCF_Y_OFFSET, %1*nGRFWIB]<2> ubSRC_Y(0,%1*32)
- }
-
- // Pack U/V
- $for(0; <nUV_NUM_OF_ROWS; 1) {
- mov (8) r[pCF_U_OFFSET, %1*nGRFWIB]<4> ubSRC_U(0, %1*16)
- mov (8) r[pCF_V_OFFSET, %1*nGRFWIB]<4> ubSRC_V(0, %1*16)
- }
-
- shl (1) rMSGSRC.0<1>:d wORIX<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
- mov (1) rMSGSRC.1<1>:d wORIY<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_YUV:ud { NoDDChk } // Block width and height (32x8)
-
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
-
-//Use the mask to determine which pixels shouldn't be over-written
- and (1) acc0.0<1>:ud udBLOCK_MASK<0;1,0>:ud 0x00FFFFFF:ud
- cmp.ge.f0.0(1) dNULLREG acc0.0<0;1,0>:ud 0x00FFFFFF:ud //Check if all pixels in the block need to be modified
- (f0.0) jmpi WritePackedToDataPort
-
- //If mask is not all 1's, then load the entire 32x8 block
- //so that only those bytes may be modified that need to be (using the mask)
-
- // Load 32x8 packed YUV 422 ----------------------------------------------------
- send (8) udSRC_YUV(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_YUV+nBI_DESTINATION_YUV:ud
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
-
- //Merge the data
- mov (1) f0.0:uw ubBLOCK_MASK_V:ub //Load the mask on flag reg
- (f0.0) mov (8) rMASK_TEMP<1>:uw uwBLOCK_MASK_H:uw
- (-f0.0) mov (8) rMASK_TEMP<1>:uw 0:uw
-
- // Destination is Byte aligned
- $for(0; <nY_NUM_OF_ROWS; 1) {
- mov (1) f0.1:uw uwMASK_TEMP(0,%1)<0;1,0>
- (-f0.1) mov (16) uwDEST_YUV(%1)<1> uwSRC_YUV(%1) //check the UV merge - vK
- }
-
-WritePackedToDataPort:
- // Packed YUV data are stored in one of the I/O regions before moving to MRF
- // Note: This is necessary since indirect addressing is not supported for MRF.
- // Packed data block should be saved as 32x8 pixel block
- $for(0; <nY_NUM_OF_ROWS; 1) {
- mov (8) mudMSGPAYLOAD(%1)<1> udDEST_YUV(%1)REGION(8,1)
- }
- send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_YUV+nBI_DESTINATION_YUV:ud
-
-// End of PL8x8_Save_PA
diff --git a/src/shaders/post_processing/gen5_6/Common/PL8x8_Save_PA.inc b/src/shaders/post_processing/gen5_6/Common/PL8x8_Save_PA.inc
deleted file mode 100644
index 082a919..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PL8x8_Save_PA.inc
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: PL8x8_Save_PA.inc
-//
-// Setup for storing packed data
-//
-
-#include "undefall.inc" //Undefine the SRC and DEST sysmbols
-
-// For saving
-#define nDPW_BLOCK_SIZE_YUV nBLOCK_WIDTH_32+nBLOCK_HEIGHT_8 // YUV block size 32x8
-#define nDPW_MSG_SIZE_YUV nMSGLEN_8 // # of MRF's to hold YUV block data (8)
-
-// For masking
-#undef nDPR_MSG_SIZE_YUV
-#define nDPR_MSG_SIZE_YUV nRESLEN_8 // # of MRF's to hold YUV block data (8)
-#define rMASK_TEMP REG(r,nTEMP0)
-.declare uwMASK_TEMP Base=rMASK_TEMP ElementSize=2 SrcRegion=<8;8,1> Type=uw //1 GRF
-
-#if (nSRC_REGION==nREGION_1)
- // For saving
- #define udSRC_YUV udTOP_Y_IO
- #define udDEST_YUV udBOT_Y_IO
- #define nDEST_YUV_REG nBOT_Y
- //For masking operation
- #define ubSRC_Y ub2TOP_Y
- #define ubSRC_U ub2TOP_U
- #define ubSRC_V ub2TOP_V
- #define uwSRC_YUV uwTOP_Y
- #define uwDEST_YUV uwBOT_Y
-
-#elif (nSRC_REGION==nREGION_2)
- // For saving
- #define udSRC_YUV udBOT_Y_IO
- #define udDEST_YUV udTOP_Y_IO
- #define nDEST_YUV_REG nTOP_Y
- //For masking operation
- #define ubSRC_Y ub2BOT_Y
- #define ubSRC_U ub2BOT_U
- #define ubSRC_V ub2BOT_V
- #define uwSRC_YUV uwBOT_Y
- #define uwDEST_YUV uwTOP_Y
-
-#endif
diff --git a/src/shaders/post_processing/gen5_6/Common/PL9x5_PL16x8.asm b/src/shaders/post_processing/gen5_6/Common/PL9x5_PL16x8.asm
deleted file mode 100644
index a5671f6..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PL9x5_PL16x8.asm
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: PL9x5_PL16x8.asm
-
-#define EXPAND_9x5
-#include "Expansion.inc"
-
-//------------------------------ Horizontal Upconversion -----------------------------
- $for (nUV_NUM_OF_ROWS-2; >-1; -1) {
- avg.sat (16) uwDEST_U(0, %1*16)<1> uwDEST_U(0, %1*16)<1;2,0> uwDEST_U(0, %1*16)<1;2,1>
- avg.sat (16) uwDEST_V(0, %1*16)<1> uwDEST_V(0, %1*16)<1;2,0> uwDEST_V(0, %1*16)<1;2,1>
- }
-
-#undef nUV_NUM_OF_ROWS
-#define nUV_NUM_OF_ROWS 8 //use packed version of all post-processing kernels
-
-//------------------------------- Vertical Upconversion ------------------------------
- avg.sat (16) uwDEST_U(0, 3*32+16)<1> uwDEST_U(0, 3*16) uwDEST_U(0, (1+3)*16)
- avg.sat (16) uwDEST_V(0, 3*32+16)<1> uwDEST_V(0, 3*16) uwDEST_V(0, (1+3)*16)
-
- $for(nUV_NUM_OF_ROWS/2-2; >-1; -1) {
- mov (16) uwDEST_U(0, (1+%1)*32)<1> uwDEST_U(0, (1+%1)*16)
- avg.sat (16) uwDEST_U(0, %1*32+16)<1> uwDEST_U(0, %1*16) uwDEST_U(0, (1+%1)*16)
-
- mov (16) uwDEST_V(0, (1+%1)*32)<1> uwDEST_V(0, (1+%1)*16)
- avg.sat (16) uwDEST_V(0, %1*32+16)<1> uwDEST_V(0, %1*16) uwDEST_V(0, (1+%1)*16)
- }
-
-// End of PL9x5_PL16x8
diff --git a/src/shaders/post_processing/gen5_6/Common/PL9x8_PL16x8.asm b/src/shaders/post_processing/gen5_6/Common/PL9x8_PL16x8.asm
deleted file mode 100644
index 5163346..0000000
--- a/src/shaders/post_processing/gen5_6/Common/PL9x8_PL16x8.asm
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: PL9x5_PL16x8.asm
-
-#include "Expansion.inc"
-
-//------------------------------ Horizontal Upconversion -----------------------------
- $for (0; <nUV_NUM_OF_ROWS; 1) {
- avg.sat (16) uwDEST_U(0, %1*16)<1> uwDEST_U(0, %1*16)<1;2,0> uwDEST_U(0, %1*16)<1;2,1>
- avg.sat (16) uwDEST_V(0, %1*16)<1> uwDEST_V(0, %1*16)<1;2,0> uwDEST_V(0, %1*16)<1;2,1>
- }
-
-// End of PL9x5_PL16x8 \ No newline at end of file
diff --git a/src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_RGB.asm b/src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_RGB.asm
deleted file mode 100644
index 19d7992..0000000
--- a/src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_RGB.asm
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: RGB16x8_Save_RGB.asm
-//
-// Save packed ARGB 444 frame data block of size 16x8
-//
-// To save 16x8 block (64x8 byte layout for ARGB8888) we need 2 send instructions
-// ---------
-// | 1 | 2 |
-// ---------
-
-#include "RGB16x8_Save_RGB.inc"
-
- shl (1) rMSGSRC.0<1>:d wORIX<0;1,0>:w 2:w { NoDDClr } // H. block origin need to be quadrupled
- mov (1) rMSGSRC.1<1>:d wORIY<0;1,0>:w { NoDDClr, NoDDChk } // Block origin (1st quadrant)
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_ARGB:ud { NoDDChk } // Block width and height (32x8)
-
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
-
-//Use the mask to determine which pixels shouldn't be over-written
- and (1) acc0.0<1>:ud udBLOCK_MASK<0;1,0>:ud 0x00FFFFFF:ud
- cmp.ge.f0.0(1) dNULLREG acc0.0<0;1,0>:ud 0x00FFFFFF:ud //Check if all pixels in the block need to be modified
- (f0.0) jmpi WriteARGBToDataPort
-
- //If mask is not all 1's, then load the entire 64x8 block
- //so that only those bytes may be modified that need to be (using the mask)
-
- // Load first block 16x8 packed ARGB 444 ---------------------------------------
- or (1) acc0.0<1>:ud udBLOCK_MASK<0;1,0>:ud 0xFF00FF00:ud //Check first block
- cmp.e.f0.0 (1) dNULLREG acc0.0<0;1,0>:ud 0xFFFFFFFF:ud
- (f0.0) jmpi SkipFirstBlockMerge //If full mask then skip this block
-
- send (8) udSRC_ARGB(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_ARGB+nBI_DESTINATION_RGB:ud
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
-
- //Merge the data
- mov (1) f0.0:uw ubBLOCK_MASK_V:ub //Load the mask on flag reg
- (f0.0) mov (8) rMASK_TEMP<1>:uw uwBLOCK_MASK_H:uw //use sel instruction - vK
- (-f0.0) mov (8) rMASK_TEMP<1>:uw 0:uw
-
- $for(0, 0; <nY_NUM_OF_ROWS; 1, 2) { //take care of the lines in the block, they are different in the src and dest
- mov (1) f0.1:uw uwMASK_TEMP(0,%1)<0;1,0>
- (-f0.1) mov (8) udDEST_ARGB(%2)<1> udSRC_ARGB(%1)
- }
-
-SkipFirstBlockMerge:
- // Load second block 16x8 packed ARGB 444 ---------------------------------------
- or (1) acc0.0<1>:ud udBLOCK_MASK<0;1,0>:ud 0xFF0000FF:ud //Check second block
- cmp.e.f0.0 (1) dNULLREG acc0.0<0;1,0>:ud 0xFFFFFFFF:ud
- (f0.0) jmpi WriteARGBToDataPort //If full mask then skip this block
-
- add (1) mMSGHDR.0<1>:d rMSGSRC.0<0;1,0>:d 32:d // Point to 2nd part
- send (8) udSRC_ARGB(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_ARGB+nBI_DESTINATION_RGB:ud
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud // Point to 1st part again
-
- //Merge the data
- mov (1) f0.0:uw ubBLOCK_MASK_V:ub //Load the mask on flag reg
- (f0.0) shr (8) rMASK_TEMP<1>:uw uwBLOCK_MASK_H:uw 8:uw //load the mask for second block
- (-f0.0) mov (8) rMASK_TEMP<1>:uw 0:uw
-
- $for(0, 1; <nY_NUM_OF_ROWS; 1, 2) { //take care of the lines in the block, they are different in the src and dest
- mov (1) f0.1:uw uwMASK_TEMP(0,%1)<0;1,0>
- (-f0.1) mov (8) udDEST_ARGB(%2)<1> udSRC_ARGB(%1)
- }
-
-WriteARGBToDataPort:
- // Move packed data to MRF and output
- $for(0; <nY_NUM_OF_ROWS; 1) {
- mov (8) mudMSGPAYLOAD(%1)<1> udDEST_ARGB(%1*2)
- }
- send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_ARGB+nBI_DESTINATION_RGB:ud
-
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
- add (1) mMSGHDR.0<1>:d rMSGSRC.0<0;1,0>:d 32:d // Point to 2nd part
- $for(0; <nY_NUM_OF_ROWS; 1) {
- mov (8) mudMSGPAYLOAD(%1)<1> udDEST_ARGB(%1*2+1)
- }
- send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_ARGB+nBI_DESTINATION_RGB:ud
-
-// End of RGB16x8_Save_RGB
diff --git a/src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_RGB.inc b/src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_RGB.inc
deleted file mode 100644
index f66b705..0000000
--- a/src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_RGB.inc
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: RGB16x8_Save_RGB.inc
-//
-
-#include "undefall.inc" //Undefine the SRC and DEST sysmbols
-
-// For saving
-#define nDPW_BLOCK_SIZE_ARGB nBLOCK_WIDTH_32+nBLOCK_HEIGHT_8 // ARGB block size 32x8
-#define nDPW_MSG_SIZE_ARGB nMSGLEN_8 // # of MRF's to hold ARGB block data (8)
-
-// For masking
-#undef nDPR_MSG_SIZE_ARGB
-#define nDPR_MSG_SIZE_ARGB nRESLEN_8 // # of MRF's to hold ARGB block data (8)
-#define rMASK_TEMP REG(r,nTEMP0)
-.declare uwMASK_TEMP Base=rMASK_TEMP ElementSize=2 SrcRegion=<8;8,1> Type=uw //1 GRF
-
-#if (nSRC_REGION==nREGION_1)
- // For saving
- #define udDEST_ARGB udTOP_Y_IO //The output of previous stage is stored here; This is modified and is written to render cache
- //For masking operation
- #define udSRC_ARGB udBOT_Y_IO //To hold the destination data that shouldn't be modified
-
-#elif (nSRC_REGION==nREGION_2)
- // For saving
- #define udDEST_ARGB udBOT_Y_IO //The output of previous stage is stored here; This is modified and is written to render cache
- //For masking operation
- #define udSRC_ARGB udTOP_Y_IO //To hold the destination data that shouldn't be modified
-
-#endif
diff --git a/src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_RGB16.asm b/src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_RGB16.asm
deleted file mode 100644
index 73371af..0000000
--- a/src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_RGB16.asm
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: RGB16x8_Save_RGB16.asm
-//
-// Save packed RGB565 frame data block of size 16x8
-//
-// To save 16x8 block (32x8 byte layout for RGB565) we need 1 send instruction
-// -----
-// | 1 |
-// -----
-
-#include "RGB16x8_Save_RGB16.inc"
-
-//convert 32 bit RGB to 16 bit RGB
- // Truncate A8R8G8B8 to A6R5G6B5 within byte.
- // That is keeping 5 MSB of R and B, and 6 MSB of G.
-
- $for (0, 0; <nY_NUM_OF_ROWS; 1, 2) {
- shr uwCSC_TEMP(%1,0)<1> ubDEST_ARGB(%2,0)<32;8,4> 3:w // B >> 3
-
- shl (16) uwTEMP_RGB16(0)<1> uwDEST_ARGB(%2,1)<16;8,2> 8:w // R << 8
- and (16) uwTEMP_RGB16(0)<1> uwTEMP_RGB16(0) 0xF800:uw
- or (16) uwCSC_TEMP(%1,0)<1> uwCSC_TEMP(%1,0)<16;16,1> uwTEMP_RGB16(0)
-
- shr (16) uwTEMP_RGB16(0)<1> uwDEST_ARGB(%2,0)<16;8,2> 5:w // G >> 5
- and (16) uwTEMP_RGB16(0)<1> uwTEMP_RGB16(0) 0x07E0:uw
- or (16) uwCSC_TEMP(%1,0)<1> uwCSC_TEMP(%1,0)<16;16,1> uwTEMP_RGB16(0)
- }
-
- mov (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w // Block origin (1st quadrant)
- shl (1) rMSGSRC.0<1>:d wORIX<0;1,0>:w 1:w // H. block origin need to be doubled for byte offset
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_RGB16:ud // Block width and height (32x8)
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
-
-//Use the mask to determine which pixels shouldn't be over-written
- and (1) acc0.0<1>:ud udBLOCK_MASK<0;1,0>:ud 0x00FFFFFF:ud
- cmp.ge.f0.0(1) dNULLREG acc0.0<0;1,0>:ud 0x00FFFFFF:ud //Check if all pixels in the block need to be modified
- (f0.0) jmpi WriteRGB16ToDataPort
-
- //If mask is not all 1's, then load the entire 32x8 block
- //so that only those bytes may be modified that need to be (using the mask)
-
- // Load 32x8 packed RGB565 -----------------------------------------------------
- send (8) udSRC_RGB16(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_RGB16+nBI_DESTINATION_RGB:ud
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
-
- //Merge the data
- mov (1) f0.0:uw ubBLOCK_MASK_V:ub //Load the mask on flag reg
- (f0.0) mov (8) rMASK_TEMP<1>:uw uwBLOCK_MASK_H:uw //use sel instruction - vK
- (-f0.0) mov (8) rMASK_TEMP<1>:uw 0:uw
-
- $for(0; <nY_NUM_OF_ROWS; 1) {
- mov (1) f0.1:uw uwMASK_TEMP(0,%1)<0;1,0>
- (-f0.1) mov (16) uwCSC_TEMP(%1)<1> uwSRC_RGB16(%1)
- }
-
-WriteRGB16ToDataPort:
- // Move packed data to MRF and output
- $for(0; <nY_NUM_OF_ROWS; 1) {
- mov (8) mudMSGPAYLOAD(%1)<1> udCSC_TEMP(%1)
- }
- send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_RGB16+nBI_DESTINATION_RGB:ud
-
-// End of RGB16x8_Save_RGB16
diff --git a/src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_RGB16.inc b/src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_RGB16.inc
deleted file mode 100644
index 844b2bc..0000000
--- a/src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_RGB16.inc
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: RGB16x8_Save_RGB16.inc
-//
-
-#include "undefall.inc" //Undefine the SRC and DEST sysmbols
-
-// For saving
-#define nDPW_BLOCK_SIZE_RGB16 nBLOCK_WIDTH_32+nBLOCK_HEIGHT_8 // RGB16 block size 32x8
-#define nDPW_MSG_SIZE_RGB16 nMSGLEN_8 // # of MRF's to hold RGB16 block data (8)
-
-// For conversion to 16bit
-.declare uwTEMP_RGB16 Base=REG(r,nTEMP1) ElementSize=2 SrcRegion=<16;16,1> Type=uw //1 GRF
-
-// For masking
-#undef nDPR_MSG_SIZE_RGB16
-#define nDPR_MSG_SIZE_RGB16 nRESLEN_8 // # of MRF's to hold ARGB block data (8)
-#define rMASK_TEMP REG(r,nTEMP0)
-.declare uwMASK_TEMP Base=rMASK_TEMP ElementSize=2 SrcRegion=<8;8,1> Type=uw //1 GRF
-
-#if (nSRC_REGION==nREGION_1)
- // For saving
- #define ubDEST_ARGB ubTOP_Y //Data from previous module
- #define uwDEST_ARGB uwTOP_Y //Data from previous module
- #define udCSC_TEMP udBOT_Y_IO //Data Converted to 16 bits
- #define uwCSC_TEMP uwBOT_Y
- //For masking operation
- #define udSRC_RGB16 udTOP_Y_IO //To hold the destination data that shouldn't be modified
- #define uwSRC_RGB16 uwTOP_Y
-
-#elif (nSRC_REGION==nREGION_2)
- // For saving
- #define ubDEST_ARGB ubBOT_Y //Data from previous module
- #define uwDEST_ARGB uwBOT_Y //Data from previous module
- #define udCSC_TEMP udTOP_Y_IO //Data Converted to 16 bits
- #define uwCSC_TEMP uwTOP_Y
- //For masking operation
- #define udSRC_RGB16 udBOT_Y_IO //To hold the destination data that shouldn't be modified
- #define uwSRC_RGB16 uwBOT_Y
-
-#endif
diff --git a/src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_Y416.asm b/src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_Y416.asm
deleted file mode 100644
index ced7390..0000000
--- a/src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_Y416.asm
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: RGB16x8_Save_Y416.asm
-//
-// Save packed ARGB 444 frame data block of size 16x8
-//
-// To save 16x8 block (128x8 byte layout for ARGB 16bit per component) we need 4 send instructions
-// -----------------
-// | 1 | 2 | 3 | 4 |
-// -----------------
-
-#include "RGB16x8_Save_RGB.inc"
-
- shl (1) rMSGSRC.0<1>:d wORIX<0;1,0>:w 3:w { NoDDClr } // H. block origin need to become 8 times
- mov (1) rMSGSRC.1<1>:d wORIY<0;1,0>:w { NoDDClr, NoDDChk } // Block origin (1st quadrant)
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_ARGB:ud { NoDDChk } // Block width and height (32x8)
-
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
-/* Not needed for validation kernels for now -vK
-//Use the mask to determine which pixels shouldn't be over-written
- and (1) acc0.0<1>:ud udBLOCK_MASK<0;1,0>:ud 0x00FFFFFF:ud
- cmp.ge.f0.0(1) dNULLREG acc0.0<0;1,0>:ud 0x00FFFFFF:ud //Check if all pixels in the block need to be modified
- (f0.0) jmpi WriteARGBToDataPort
-
- //If mask is not all 1's, then load the entire 64x8 block
- //so that only those bytes may be modified that need to be (using the mask)
-
- // Load first block 16x8 packed ARGB 444 ---------------------------------------
- or (1) acc0.0<1>:ud udBLOCK_MASK<0;1,0>:ud 0xFF00FF00:ud //Check first block
- cmp.e.f0.0 (1) dNULLREG acc0.0<0;1,0>:ud 0xFFFFFFFF:ud
- (f0.0) jmpi SkipFirstBlockMerge //If full mask then skip this block
-
- send (8) udSRC_ARGB(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_ARGB+nBI_DESTINATION_RGB:ud
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
-
- //Merge the data
- mov (1) f0.0:uw ubBLOCK_MASK_V:ub //Load the mask on flag reg
- (f0.0) mov (8) rMASK_TEMP<1>:uw uwBLOCK_MASK_H:uw //use sel instruction - vK
- (-f0.0) mov (8) rMASK_TEMP<1>:uw 0:uw
-
- $for(0, 0; <nY_NUM_OF_ROWS; 1, 2) { //take care of the lines in the block, they are different in the src and dest
- mov (1) f0.1:uw uwMASK_TEMP(0,%1)<0;1,0>
- (-f0.1) mov (8) udDEST_ARGB(%2)<1> udSRC_ARGB(%1)
- }
-
-SkipFirstBlockMerge:
- // Load second block 16x8 packed ARGB 444 ---------------------------------------
- or (1) acc0.0<1>:ud udBLOCK_MASK<0;1,0>:ud 0xFF0000FF:ud //Check second block
- cmp.e.f0.0 (1) dNULLREG acc0.0<0;1,0>:ud 0xFFFFFFFF:ud
- (f0.0) jmpi WriteARGBToDataPort //If full mask then skip this block
-
- add (1) mMSGHDR.0<1>:d rMSGSRC.0<0;1,0>:d 32:d // Point to 2nd part
- send (8) udSRC_ARGB(0)<1> mMSGHDR udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_ARGB+nBI_DESTINATION_RGB:ud
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud // Point to 1st part again
-
- //Merge the data
- mov (1) f0.0:uw ubBLOCK_MASK_V:ub //Load the mask on flag reg
- (f0.0) shr (8) rMASK_TEMP<1>:uw uwBLOCK_MASK_H:uw 8:uw //load the mask for second block
- (-f0.0) mov (8) rMASK_TEMP<1>:uw 0:uw
-
- $for(0, 1; <nY_NUM_OF_ROWS; 1, 2) { //take care of the lines in the block, they are different in the src and dest
- mov (1) f0.1:uw uwMASK_TEMP(0,%1)<0;1,0>
- (-f0.1) mov (8) udDEST_ARGB(%2)<1> udSRC_ARGB(%1)
- }
-*/
-WriteARGBToDataPort:
- // Move packed data to MRF and output
-
- //Write 1st 4X8 pixels
- $for(0; <nY_NUM_OF_ROWS; 1) {
- mov (8) mudMSGPAYLOAD(%1)<1> udDEST_ARGB(%1*4)
- }
- send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_ARGB+nBI_DESTINATION_RGB:ud
-
- //Write 2nd 4X8 pixels
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
- add (1) mMSGHDR.0<1>:d rMSGSRC.0<0;1,0>:d 32:d // Point to 2nd part
- $for(0; <nY_NUM_OF_ROWS; 1) {
- mov (8) mudMSGPAYLOAD(%1)<1> udDEST_ARGB(%1*4+1)
- }
- send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_ARGB+nBI_DESTINATION_RGB:ud
-
- //Write 3rd 4X8 pixels
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
- add (1) mMSGHDR.0<1>:d rMSGSRC.0<0;1,0>:d 64:d // Point to 2nd part
- $for(0; <nY_NUM_OF_ROWS; 1) {
- mov (8) mudMSGPAYLOAD(%1)<1> udDEST_ARGB(%1*4+2)
- }
- send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_ARGB+nBI_DESTINATION_RGB:ud
-
- //Write 4th 4X8 pixels
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
- add (1) mMSGHDR.0<1>:d rMSGSRC.0<0;1,0>:d 96:d // Point to 2nd part
- $for(0; <nY_NUM_OF_ROWS; 1) {
- mov (8) mudMSGPAYLOAD(%1)<1> udDEST_ARGB(%1*4+3)
- }
- send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_ARGB+nBI_DESTINATION_RGB:ud
-
-// End of RGB16x8_Save_Y416
diff --git a/src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_Y416.inc b/src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_Y416.inc
deleted file mode 100644
index 384db91..0000000
--- a/src/shaders/post_processing/gen5_6/Common/RGB16x8_Save_Y416.inc
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: RGB16x8_Save_Y416.inc
-//
-
-#include "undefall.inc" //Undefine the SRC and DEST sysmbols
-
-// For saving
-#define nDPW_BLOCK_SIZE_ARGB nBLOCK_WIDTH_32+nBLOCK_HEIGHT_8 // ARGB block size 32x8
-#define nDPW_MSG_SIZE_ARGB nMSGLEN_8 // # of MRF's to hold ARGB block data (8)
-
-// For masking
-#undef nDPR_MSG_SIZE_ARGB
-#define nDPR_MSG_SIZE_ARGB nRESLEN_8 // # of MRF's to hold ARGB block data (8)
-#define rMASK_TEMP REG(r,nTEMP0)
-.declare uwMASK_TEMP Base=rMASK_TEMP ElementSize=2 SrcRegion=<8;8,1> Type=uw //1 GRF
-
-#if (nSRC_REGION==nREGION_1)
- // For saving
- #define udDEST_ARGB udTOP_Y_IO //The output of previous stage is stored here; This is modified and is written to render cache
- //For masking operation
- #define udSRC_ARGB udBOT_Y_IO //To hold the destination data that shouldn't be modified
-
-#elif (nSRC_REGION==nREGION_2)
- // For saving
- #define udDEST_ARGB udBOT_Y_IO //The output of previous stage is stored here; This is modified and is written to render cache
- //For masking operation
- #define udSRC_ARGB udTOP_Y_IO //To hold the destination data that shouldn't be modified
-
-#endif
diff --git a/src/shaders/post_processing/gen5_6/Common/RGBX_Load_16x8.asm b/src/shaders/post_processing/gen5_6/Common/RGBX_Load_16x8.asm
deleted file mode 100644
index a661b49..0000000
--- a/src/shaders/post_processing/gen5_6/Common/RGBX_Load_16x8.asm
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: RGBA_Load_16x8.asm (copied from AYUV_Load_16x8.asm)
-//----------------------------------------------------------------
-
-
-#include "RGBX_Load_16x8.inc"
-
-// In order to load 64x8 RGBA data (16x8 pixels), we need to divide the data
-// into two regions and load them separately.
-//
-// 32 byte 32 byte
-//|----------------|----------------|
-//| | |
-//| A | B |8
-//| | |
-//| | |
-//|----------------|----------------|
-
-// Load the first 32x8 data block
-// Packed data block should be loaded as 32x8 pixel block
- add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Block origin
- shl (1) rMSGSRC.0<1>:d rMSGSRC.0<0;1,0>:w 2:w { NoDDClr } // H. block origin need to be four times larger
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_RGBA:ud { NoDDChk } // Block width and height (32x8)
- mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud
- send (8) udSRC_RGBA(0)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_RGBA+nBI_CURRENT_SRC_YUV:ud
-
-//Load the second 32x8 data block
-// Offset the origin X - move to next 32 colomns
- add (1) rMSGSRC.0<1>:d rMSGSRC.0<0;1,0>:d 32:w // Increase X origin by 8
-
-// Size stays the same - 32x8
- mov (8) mMSGHDRY<1>:ud rMSGSRC<8;8,1>:ud // Copy message description to message header
- send (8) udSRC_RGBA(8)<1> mMSGHDRY udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nDPR_MSG_SIZE_RGBA+nBI_CURRENT_SRC_YUV:ud
-
-// Give AYUV region addresses to address register
- // a0.0 is 0x38*32, a0.1 is 0x40*32. 0x40-0x38=8 (pixel)
- mov (1) SRC_RGBA_OFFSET<1>:ud 0x00400038*32:ud //Address registers contain starting addresses of two halves
-
-#if !defined(FIX_POINT_CONVERSION) && !defined(FLOAT_POINT_CONVERSION)
- //Directly move the data to destination
- $for(0; <nY_NUM_OF_ROWS; 1) {
- // 8 means 8 elements, not 2=8/2 element per row.
- mov (16) uwDEST_Y(%1)<1> r[SRC_RGBA_OFFSET,%1*32+3]<8,4>:ub // A/R
- mov (16) uwDEST_U(%1)<1> r[SRC_RGBA_OFFSET,%1*32+2]<8,4>:ub // Y/G
- mov (16) uwDEST_V(%1)<1> r[SRC_RGBA_OFFSET,%1*32+1]<8,4>:ub // U/B
- }
-#endif
-
diff --git a/src/shaders/post_processing/gen5_6/Common/RGBX_Load_16x8.inc b/src/shaders/post_processing/gen5_6/Common/RGBX_Load_16x8.inc
deleted file mode 100644
index ba7d521..0000000
--- a/src/shaders/post_processing/gen5_6/Common/RGBX_Load_16x8.inc
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#ifndef RGBA_LOAD_16X8_INC
-#define RGBA_LOAD_16X8_INC
-
-// Module name: RGBA_Load_16x8.inc
-//
-// RGBA data are first loaded to bottom I/O REGION_2, then does color conversion from RGB to YUV
-// finally, YUV data are stored in top I/O REGION_1 with planar format
-
-#undef nY_NUM_OF_ROWS
-
-#define nY_NUM_OF_ROWS 8 // Number of Y rows per block
-
-#define nDPR_BLOCK_SIZE_RGBA nBLOCK_WIDTH_32+nBLOCK_HEIGHT_8 // RGBA block size 32x8 (it is half size)
-#define nDPR_MSG_SIZE_RGBA nRESLEN_8 // # of MRF's to hold RGBA block data (8)
-
-//Temporary storage for unpacked AYUV data
-#define rUNPACK_TEMP REG(r,nTEMP0)
-.declare udUNPACK_TEMP Base=rUNPACK_TEMP ElementSize=4 SrcRegion=<8;8,1> Type=ud //1 GRF
-.declare ubUNPACK_TEMP Base=rUNPACK_TEMP ElementSize=1 SrcRegion=<32;32,1> Type=ub //1 GRF
-
-.declare ubBOT_Y_IO Base=REG(r,nBOT_Y) ElementSize=1 SrcRegion=REGION(32,1) Type=ub
-
-
-#define udSRC_RGBA udBOT_Y_IO
-#define ubSRC_RGBA ubBOT_Y_IO
-#define nSRC_RGBA_REG nBOT_Y
-
-#define uwDEST_Y uwTOP_Y
-#define uwDEST_U uwTOP_U
-#define uwDEST_V uwTOP_V
-
-#define SRC_RGBA_OFFSET a0.0
-#define SRC_RGBA_OFFSET_1 a0.0
-#define SRC_RGBA_OFFSET_2 a0.1
-
-#define nSRC_REGION nREGION_1 // REGION_1 will be the source region for first kernel
-
-// End of RGBA_Load_16x8.inc
-#endif \ No newline at end of file
diff --git a/src/shaders/post_processing/gen5_6/Common/RGBX_Save_YUV_Fix.asm b/src/shaders/post_processing/gen5_6/Common/RGBX_Save_YUV_Fix.asm
deleted file mode 100644
index 55c10ed..0000000
--- a/src/shaders/post_processing/gen5_6/Common/RGBX_Save_YUV_Fix.asm
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Authors:
- * Halley Zhao <halley.zhao@intel.com>
- */
-
-// Module name: PL16x8_PL8x4.asm
-//----------------------------------------------------------------
-
-#include "RGBX_Load_16x8.inc"
-
-#if (0)
- #define nTEMP0 34 // transformation coefficient
- #define nTEMP1 35 // one row of Y (first half register is used)
- #define nTEMP2 36 // first half of one row
- #define nTEMP3 37 // second half of one row
- #define nTEMP4 38 // mul and add
- #define nTEMP5 39 // mul and add
- #define nTEMP6 40 // mul and add
- #define nTEMP7 41 // mul and add
- #define nTEMP8 42 // sum of mul
- #define nTEMP10 44
- #define nTEMP12 46
- #define nTEMP14 48
- #define nTEMP16 50
- #define nTEMP17 51
- #define nTEMP18 52
-
- #define nTEMP24 58
-#endif
-
-$for(0; <nY_NUM_OF_ROWS; 1) {
- // BGRX | B | G | R | X |
- // ###### do on row for Y
- // #### mul and add
- mul (16) REG2(r, nTEMP4, 0)<1>:uw r[SRC_RGBA_OFFSET_1, %1*32 + 0]<0; 16,1>:ub ubRGB_to_Y_Coef_Fix<0;4,1>:ub
- mul (16) REG2(r, nTEMP5, 0)<1>:uw r[SRC_RGBA_OFFSET_1, %1*32 + 16]<0; 16,1>:ub ubRGB_to_Y_Coef_Fix<0;4,1>:ub
- mul (16) REG2(r, nTEMP6, 0)<1>:uw r[SRC_RGBA_OFFSET_2, %1*32 + 0]<0; 16,1>:ub ubRGB_to_Y_Coef_Fix<0;4,1>:ub
- mul (16) REG2(r, nTEMP7, 0)<1>:uw r[SRC_RGBA_OFFSET_2, %1*32 + 16]<0; 16,1>:ub ubRGB_to_Y_Coef_Fix<0;4,1>:ub
-
- add (4) REG2(r, nTEMP4, 0)<4>:uw REG2(r, nTEMP4, 0)<0;4,4>:uw REG2(r, nTEMP4, 1)<0;4,4>:uw
- add (4) REG2(r, nTEMP5, 0)<4>:uw REG2(r, nTEMP5, 0)<0;4,4>:uw REG2(r, nTEMP5, 1)<0;4,4>:uw
- add (4) REG2(r, nTEMP6, 0)<4>:uw REG2(r, nTEMP6, 0)<0;4,4>:uw REG2(r, nTEMP6, 1)<0;4,4>:uw
- add (4) REG2(r, nTEMP7, 0)<4>:uw REG2(r, nTEMP7, 0)<0;4,4>:uw REG2(r, nTEMP7, 1)<0;4,4>:uw
- add (4) REG2(r, nTEMP4, 0)<4>:uw REG2(r, nTEMP4, 0)<0;4,4>:uw REG2(r, nTEMP4, 2)<0;4,4>:uw
- add (4) REG2(r, nTEMP5, 0)<4>:uw REG2(r, nTEMP5, 0)<0;4,4>:uw REG2(r, nTEMP5, 2)<0;4,4>:uw
- add (4) REG2(r, nTEMP6, 0)<4>:uw REG2(r, nTEMP6, 0)<0;4,4>:uw REG2(r, nTEMP6, 2)<0;4,4>:uw
- add (4) REG2(r, nTEMP7, 0)<4>:uw REG2(r, nTEMP7, 0)<0;4,4>:uw REG2(r, nTEMP7, 2)<0;4,4>:uw
-
- // #### write Y to the 1 row
- mov (4) REG2(r, nTEMP8, 0)<1>:uw REG2(r, nTEMP4, 0)<0; 4, 4>:uw
- mov (4) REG2(r, nTEMP8, 4)<1>:uw REG2(r, nTEMP5, 0)<0; 4, 4>:uw
- mov (4) REG2(r, nTEMP8, 8)<1>:uw REG2(r, nTEMP6, 0)<0; 4, 4>:uw
- mov (4) REG2(r, nTEMP8, 12)<1>:uw REG2(r, nTEMP7, 0)<0; 4, 4>:uw
- add (16) REG2(r, nTEMP8, 0)<1>:uw REG2(r, nTEMP8, 0)<0; 16, 1>:uw 0x1080:uw
- mov (16) REG2(r, nTEMP8, 0)<1>:ub REG2(r, nTEMP8, 1)<0; 16, 2>:ub
- mov (16) uwDEST_Y(%1)<1> REG2(r,nTEMP8, 0)<0;16,1>:ub
-
- // ###### do one row for U
- // #### mul and add
- mul (16) REG2(r, nTEMP4, 0)<1>:w r[SRC_RGBA_OFFSET_1, %1*32 + 0]<0; 16,1>:ub bRGB_to_U_Coef_Fix<0;4,1>:b
- mul (16) REG2(r, nTEMP5, 0)<1>:w r[SRC_RGBA_OFFSET_1, %1*32 + 16]<0; 16,1>:ub bRGB_to_U_Coef_Fix<0;4,1>:b
- mul (16) REG2(r, nTEMP6, 0)<1>:w r[SRC_RGBA_OFFSET_2, %1*32 + 0]<0; 16,1>:ub bRGB_to_U_Coef_Fix<0;4,1>:b
- mul (16) REG2(r, nTEMP7, 0)<1>:w r[SRC_RGBA_OFFSET_2, %1*32 + 16]<0; 16,1>:ub bRGB_to_U_Coef_Fix<0;4,1>:b
-
- add (4) REG2(r, nTEMP4, 0)<4>:w REG2(r, nTEMP4, 0)<0;4,4>:w REG2(r, nTEMP4, 1)<0;4,4>:w
- add (4) REG2(r, nTEMP5, 0)<4>:w REG2(r, nTEMP5, 0)<0;4,4>:w REG2(r, nTEMP5, 1)<0;4,4>:w
- add (4) REG2(r, nTEMP6, 0)<4>:w REG2(r, nTEMP6, 0)<0;4,4>:w REG2(r, nTEMP6, 1)<0;4,4>:w
- add (4) REG2(r, nTEMP7, 0)<4>:w REG2(r, nTEMP7, 0)<0;4,4>:w REG2(r, nTEMP7, 1)<0;4,4>:w
- add (4) REG2(r, nTEMP4, 0)<4>:w REG2(r, nTEMP4, 0)<0;4,4>:w REG2(r, nTEMP4, 2)<0;4,4>:w
- add (4) REG2(r, nTEMP5, 0)<4>:w REG2(r, nTEMP5, 0)<0;4,4>:w REG2(r, nTEMP5, 2)<0;4,4>:w
- add (4) REG2(r, nTEMP6, 0)<4>:w REG2(r, nTEMP6, 0)<0;4,4>:w REG2(r, nTEMP6, 2)<0;4,4>:w
- add (4) REG2(r, nTEMP7, 0)<4>:w REG2(r, nTEMP7, 0)<0;4,4>:w REG2(r, nTEMP7, 2)<0;4,4>:w
-
- // #### write U to the 1 row
- mov (4) REG2(r, nTEMP8, 0)<1>:w REG2(r, nTEMP4, 0)<0; 4, 4>:w
- mov (4) REG2(r, nTEMP8, 4)<1>:w REG2(r, nTEMP5, 0)<0; 4, 4>:w
- mov (4) REG2(r, nTEMP8, 8)<1>:w REG2(r, nTEMP6, 0)<0; 4, 4>:w
- mov (4) REG2(r, nTEMP8, 12)<1>:w REG2(r, nTEMP7, 0)<0; 4, 4>:w
- add (16) REG2(r, nTEMP8, 0)<1>:uw REG2(r, nTEMP8, 0)<0; 16, 1>:w 0x8080:uw
- mov (16) REG2(r, nTEMP8, 0)<1>:ub REG2(r, nTEMP8, 1)<0; 16, 2>:ub
- mov (16) uwDEST_U(%1)<1> REG2(r,nTEMP8, 0)<0;16,1>:ub
-
- // ###### do one row for V
- // #### mul and add
- mul (16) REG2(r, nTEMP4, 0)<1>:w r[SRC_RGBA_OFFSET_1, %1*32 + 0]<0; 16,1>:ub bRGB_to_V_Coef_Fix<0;4,1>:b
- mul (16) REG2(r, nTEMP5, 0)<1>:w r[SRC_RGBA_OFFSET_1, %1*32 + 16]<0; 16,1>:ub bRGB_to_V_Coef_Fix<0;4,1>:b
- mul (16) REG2(r, nTEMP6, 0)<1>:w r[SRC_RGBA_OFFSET_2, %1*32 + 0]<0; 16,1>:ub bRGB_to_V_Coef_Fix<0;4,1>:b
- mul (16) REG2(r, nTEMP7, 0)<1>:w r[SRC_RGBA_OFFSET_2, %1*32 + 16]<0; 16,1>:ub bRGB_to_V_Coef_Fix<0;4,1>:b
-
- add (4) REG2(r, nTEMP4, 0)<4>:w REG2(r, nTEMP4, 0)<0;4,4>:w REG2(r, nTEMP4, 1)<0;4,4>:w
- add (4) REG2(r, nTEMP5, 0)<4>:w REG2(r, nTEMP5, 0)<0;4,4>:w REG2(r, nTEMP5, 1)<0;4,4>:w
- add (4) REG2(r, nTEMP6, 0)<4>:w REG2(r, nTEMP6, 0)<0;4,4>:w REG2(r, nTEMP6, 1)<0;4,4>:w
- add (4) REG2(r, nTEMP7, 0)<4>:w REG2(r, nTEMP7, 0)<0;4,4>:w REG2(r, nTEMP7, 1)<0;4,4>:w
- add (4) REG2(r, nTEMP4, 0)<4>:w REG2(r, nTEMP4, 0)<0;4,4>:w REG2(r, nTEMP4, 2)<0;4,4>:w
- add (4) REG2(r, nTEMP5, 0)<4>:w REG2(r, nTEMP5, 0)<0;4,4>:w REG2(r, nTEMP5, 2)<0;4,4>:w
- add (4) REG2(r, nTEMP6, 0)<4>:w REG2(r, nTEMP6, 0)<0;4,4>:w REG2(r, nTEMP6, 2)<0;4,4>:w
- add (4) REG2(r, nTEMP7, 0)<4>:w REG2(r, nTEMP7, 0)<0;4,4>:w REG2(r, nTEMP7, 2)<0;4,4>:w
-
- // #### write V to the 1 row
- mov (4) REG2(r, nTEMP8, 0)<1>:w REG2(r, nTEMP4, 0)<0; 4, 4>:w
- mov (4) REG2(r, nTEMP8, 4)<1>:w REG2(r, nTEMP5, 0)<0; 4, 4>:w
- mov (4) REG2(r, nTEMP8, 8)<1>:w REG2(r, nTEMP6, 0)<0; 4, 4>:w
- mov (4) REG2(r, nTEMP8, 12)<1>:w REG2(r, nTEMP7, 0)<0; 4, 4>:w
- add (16) REG2(r, nTEMP8, 0)<1>:uw REG2(r, nTEMP8, 0)<0; 16, 1>:w 0x8080:uw
- mov (16) REG2(r, nTEMP8, 0)<1>:ub REG2(r, nTEMP8, 1)<0; 16, 2>:ub
- mov (16) uwDEST_V(%1)<1> REG2(r,nTEMP8, 0)<0;16,1>:ub
-}
-
diff --git a/src/shaders/post_processing/gen5_6/Common/RGBX_Save_YUV_Float.asm b/src/shaders/post_processing/gen5_6/Common/RGBX_Save_YUV_Float.asm
deleted file mode 100644
index e3d9255..0000000
--- a/src/shaders/post_processing/gen5_6/Common/RGBX_Save_YUV_Float.asm
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Authors:
- * Halley Zhao <halley.zhao@intel.com>
- */
-
-// Module name: RGBX_Save_YUV_Float.asm
-//----------------------------------------------------------------
-
-#include "RGBX_Load_16x8.inc"
-
-#if (0)
- // 8 grf reg for one row of pixel (2 pixel per grf)
- #define nTEMP0 34
- #define nTEMP1 35
- #define nTEMP2 36
- #define nTEMP3 37
- #define nTEMP4 38
- #define nTEMP5 39
- #define nTEMP6 40
- #define nTEMP7 41
-
- #define nTEMP8 42 // transformation coefficient
- #define nTEMP10 44 // transformation coefficient
-
- #define nTEMP12 46 // save Y/U/V in ub format
- #define nTEMP14 48 // save YUV in ud format
- #define nTEMP16 50 // dp4 result
- #define nTEMP17 51
- #define nTEMP18 52
-
- #define nTEMP24 58
-#endif
-
-$for(0; <nY_NUM_OF_ROWS; 1) {
- // BGRX | B | G | R | X |
- // ###### save one row of pixel to temp grf with float format (required by dp4)
- // mov (8) doesn't work, puzzle
- mov (4) REG(r, nTEMP0)<1>:f r[SRC_RGBA_OFFSET_1,%1*32 + 0]<4,1>:ub
- mov (4) REG(r, nTEMP1)<1>:f r[SRC_RGBA_OFFSET_1,%1*32 + 8]<4,1>:ub
- mov (4) REG(r, nTEMP2)<1>:f r[SRC_RGBA_OFFSET_1,%1*32 + 16]<4,1>:ub
- mov (4) REG(r, nTEMP3)<1>:f r[SRC_RGBA_OFFSET_1,%1*32 + 24]<4,1>:ub
- mov (4) REG(r, nTEMP4)<1>:f r[SRC_RGBA_OFFSET_2,%1*32 + 0]<4,1>:ub
- mov (4) REG(r, nTEMP5)<1>:f r[SRC_RGBA_OFFSET_2,%1*32 + 8]<4,1>:ub
- mov (4) REG(r, nTEMP6)<1>:f r[SRC_RGBA_OFFSET_2,%1*32 + 16]<4,1>:ub
- mov (4) REG(r, nTEMP7)<1>:f r[SRC_RGBA_OFFSET_2,%1*32 + 24]<4,1>:ub
- mov (4) REG2(r, nTEMP0, 4)<1>:f r[SRC_RGBA_OFFSET_1,%1*32 + 4]<4,1>:ub
- mov (4) REG2(r, nTEMP1, 4)<1>:f r[SRC_RGBA_OFFSET_1,%1*32 + 12]<4,1>:ub
- mov (4) REG2(r, nTEMP2, 4)<1>:f r[SRC_RGBA_OFFSET_1,%1*32 + 20]<4,1>:ub
- mov (4) REG2(r, nTEMP3, 4)<1>:f r[SRC_RGBA_OFFSET_1,%1*32 + 28]<4,1>:ub
- mov (4) REG2(r, nTEMP4, 4)<1>:f r[SRC_RGBA_OFFSET_2,%1*32 + 4]<4,1>:ub
- mov (4) REG2(r, nTEMP5, 4)<1>:f r[SRC_RGBA_OFFSET_2,%1*32 + 12]<4,1>:ub
- mov (4) REG2(r, nTEMP6, 4)<1>:f r[SRC_RGBA_OFFSET_2,%1*32 + 20]<4,1>:ub
- mov (4) REG2(r, nTEMP7, 4)<1>:f r[SRC_RGBA_OFFSET_2,%1*32 + 24]<4,1>:ub
-
- // ###### do one row for Y
- // ##### dp4(nTEMP16) and save result to uw format(nTEMP12)
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(0, 0)<0;8,1> fRGB_to_Y_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 0)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(1, 0)<0;8,1> fRGB_to_Y_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 2)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(2, 0)<0;8,1> fRGB_to_Y_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 4)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(3, 0)<0;8,1> fRGB_to_Y_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 6)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(4, 0)<0;8,1> fRGB_to_Y_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 8)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(5, 0)<0;8,1> fRGB_to_Y_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 10)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(6, 0)<0;8,1> fRGB_to_Y_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 12)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(7, 0)<0;8,1> fRGB_to_Y_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 14)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- // #### write Y to the 1 row
- mov (16) uwDEST_Y(%1)<1> REG2(r,nTEMP12, 0)<0;16,1>:ub
-
- // ###### do one row for U
- // ##### dp4(nTEMP16) and save result to uw format(nTEMP12)
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(0, 0)<0;8,1> fRGB_to_U_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:d REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 0)<1>:w REG2(r, nTEMP14, 0)<0;2,2>:w
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(1, 0)<0;8,1> fRGB_to_U_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:d REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 2)<1>:w REG2(r, nTEMP14, 0)<0;2,2>:w
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(2, 0)<0;8,1> fRGB_to_U_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:d REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 4)<1>:w REG2(r, nTEMP14, 0)<0;2,2>:w
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(3, 0)<0;8,1> fRGB_to_U_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:d REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 6)<1>:w REG2(r, nTEMP14, 0)<0;2,2>:w
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(4, 0)<0;8,1> fRGB_to_U_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:d REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 8)<1>:w REG2(r, nTEMP14, 0)<0;2,2>:w
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(5, 0)<0;8,1> fRGB_to_U_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:d REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 10)<1>:w REG2(r, nTEMP14, 0)<0;2,2>:w
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(6, 0)<0;8,1> fRGB_to_U_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:d REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 12)<1>:w REG2(r, nTEMP14, 0)<0;2,2>:w
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(7, 0)<0;8,1> fRGB_to_U_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:d REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 14)<1>:w REG2(r, nTEMP14, 0)<0;2,2>:w
- add (16) REG2(r, nTEMP12, 0)<1>:w REG2(r, nTEMP12, 0)<0;16,1>:w 128:w
- // #### write U to the 1 row
- mov (16) uwDEST_U(%1)<1> REG2(r,nTEMP12, 0)<0;16,2>:ub
-
- // ###### do one row for V
- // ##### dp4(nTEMP16) and save result to uw format(nTEMP12)
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(0, 0)<0;8,1> fRGB_to_V_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:d REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 0)<1>:w REG2(r, nTEMP14, 0)<0;2,2>:w
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(1, 0)<0;8,1> fRGB_to_V_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:d REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 2)<1>:w REG2(r, nTEMP14, 0)<0;2,2>:w
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(2, 0)<0;8,1> fRGB_to_V_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:d REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 4)<1>:w REG2(r, nTEMP14, 0)<0;2,2>:w
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(3, 0)<0;8,1> fRGB_to_V_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:d REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 6)<1>:w REG2(r, nTEMP14, 0)<0;2,2>:w
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(4, 0)<0;8,1> fRGB_to_V_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:d REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 8)<1>:w REG2(r, nTEMP14, 0)<0;2,2>:w
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(5, 0)<0;8,1> fRGB_to_V_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:d REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 10)<1>:w REG2(r, nTEMP14, 0)<0;2,2>:w
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(6, 0)<0;8,1> fRGB_to_V_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:d REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 12)<1>:w REG2(r, nTEMP14, 0)<0;2,2>:w
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_BGRX(7, 0)<0;8,1> fRGB_to_V_Coef_Float<0;4,1>:f
- mov (2) REG2(r, nTEMP14, 0)<1>:d REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 14)<1>:w REG2(r, nTEMP14, 0)<0;2,2>:w
- add (16) REG2(r, nTEMP12, 0)<1>:w REG2(r, nTEMP12, 0)<0;16,1>:w 128:w
-
- // #### write V to the 1 row
- mov (16) uwDEST_V(%1)<1> REG2(r,nTEMP12, 0)<0;16,2>:ub
-}
diff --git a/src/shaders/post_processing/gen5_6/Common/RGBX_to_YUV_Coef.asm b/src/shaders/post_processing/gen5_6/Common/RGBX_to_YUV_Coef.asm
deleted file mode 100644
index 95fc405..0000000
--- a/src/shaders/post_processing/gen5_6/Common/RGBX_to_YUV_Coef.asm
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Authors:
- * Halley Zhao <halley.zhao@intel.com>
- */
-
-// Module name: RGB_to_YUV_Coef.asm
-//----------------------------------------------------------------
-
-// is src surface |R|G|B|X| layout? otherwise it is |B|G|R|X|
-and.nz.f0.1 (1) dNULLREG r1.1:ud 0xFF000000:ud
-#ifdef FIX_POINT_CONVERSION
- // Y = ( ( 66 * R + 129 * G + 25 * B + 128 ) >> 8) + 16
- (-f0.1) mov (1) REG2(r, nTEMP0, 0):ud 0x00428119:ud // used as unsigned byte
- ( f0.1) mov (1) REG2(r, nTEMP0, 0):ud 0x00198142:ud // used as unsigned byte
- // U = ( ( -38 * R - 74 * G + 112 * B + 128 ) >> 8) + 128
- (-f0.1) mov (1) REG2(r, nTEMP0, 1):ud 0x00DAB670:ud // used as signed byte
- ( f0.1) mov (1) REG2(r, nTEMP0, 1):ud 0x0070B6DA:ud // used as signed byte
- // V = ( ( 112 * R - 94 * G - 18 * B + 128 ) >> 8) + 128
- (-f0.1) mov (1) REG2(r, nTEMP0, 2):ud 0x0070A2EEud // used as signed byte
- ( f0.1) mov (1) REG2(r, nTEMP0, 2):ud 0x00EEA270ud // used as signed byte
-
- #define ubRGB_to_Y_Coef_Fix REG2(r, nTEMP0, 0)
- #define bRGB_to_U_Coef_Fix REG2(r, nTEMP0, 4)
- #define bRGB_to_V_Coef_Fix REG2(r, nTEMP0, 8)
-#else
- // Y = 0.299R + 0.587G + 0.114B
- (-f0.1) mov (1) REG2(r, nTEMP8, 0):f 0.114f // B coef
- ( f0.1) mov (1) REG2(r, nTEMP8, 2):f 0.114f // R coef
- mov (1) REG2(r, nTEMP8, 1):f 0.587f // G coef
- (-f0.1) mov (1) REG2(r, nTEMP8, 2):f 0.299f // R coef
- ( f0.1) mov (1) REG2(r, nTEMP8, 0):f 0.299f // B coef
- mov (1) REG2(r, nTEMP8, 3):f 0.000f // A coef
-
- // Cb= -0.169R - 0.331G + 0.499B + 128
- // U = -0.147R - 0.289G + 0.436B + 128
- (-f0.1) mov (1) REG2(r, nTEMP8, 4):f 0.436f // B coef
- ( f0.1) mov (1) REG2(r, nTEMP8, 6):f 0.436f // R coef
- mov (1) REG2(r, nTEMP8, 5):f -0.289f // G coef
- (-f0.1) mov (1) REG2(r, nTEMP8, 6):f -0.147f // R coef
- ( f0.1) mov (1) REG2(r, nTEMP8, 4):f -0.147f // B coef
- mov (1) REG2(r, nTEMP8, 7):f 0.000f // A coef
-
- // Cr= 0.499R - 0.418G - 0.0813B+ 128
- // V = 0.615R - 0.515G - 0.100B + 128
- (-f0.1) mov (1) REG2(r, nTEMP10, 0):f -0.100f // B coef
- ( f0.1) mov (1) REG2(r, nTEMP10, 2):f -0.100f // R coef
- mov (1) REG2(r, nTEMP10, 1):f -0.515f // G coef
- (-f0.1) mov (1) REG2(r, nTEMP10, 2):f 0.615f // R coef
- ( f0.1) mov (1) REG2(r, nTEMP10, 0):f 0.615f // B coef
- mov (1) REG2(r, nTEMP10, 3):f 0.000f // A coef
-
- #define fRGB_to_Y_Coef_Float REG2(r, nTEMP8, 0)
- #define fRGB_to_U_Coef_Float REG2(r, nTEMP8, 4)
- #define fRGB_to_V_Coef_Float REG2(r, nTEMP10, 0)
- .declare fROW_BGRX Base=REG(r,nTEMP0) ElementSize=4 SrcRegion=REGION(8,8) Type=f // r nTEMP0 - r nTEMP7
-#endif
-
diff --git a/src/shaders/post_processing/gen5_6/Common/RGB_Pack.asm b/src/shaders/post_processing/gen5_6/Common/RGB_Pack.asm
deleted file mode 100644
index ede4411..0000000
--- a/src/shaders/post_processing/gen5_6/Common/RGB_Pack.asm
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-
-.declare SRC_B Base=REG(r,10) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
-.declare SRC_G Base=REG(r,18) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
-.declare SRC_R Base=REG(r,26) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
-.declare SRC_A Base=REG(r,34) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
-
-#define DEST_ARGB ubBOT_ARGB
-
-#undef nSRC_REGION
-#define nSRC_REGION nREGION_2
-
-
-//Pack directly to mrf as optimization - vK
-
-$for(0, 0; <8; 1, 2) {
-// mov (16) DEST_ARGB(%2,0)<4> SRC_B(%1) { Compr, NoDDClr } // 16 B
-// mov (16) DEST_ARGB(%2,1)<4> SRC_G(%1) { Compr, NoDDClr, NoDDChk } // 16 G
-// mov (16) DEST_ARGB(%2,2)<4> SRC_R(%1) { Compr, NoDDClr, NoDDChk } // 16 R //these 2 inst can be merged - vK
-// mov (16) DEST_ARGB(%2,3)<4> SRC_A(%1) { Compr, NoDDChk } //DEST_RGB_FORMAT<0;1,0>:ub { Compr, NoDDChk } // 16 A
-
- mov (8) DEST_ARGB(%2, 0)<4> SRC_B(%1) { NoDDClr } // 8 B
- mov (8) DEST_ARGB(%2, 1)<4> SRC_G(%1) { NoDDClr, NoDDChk } // 8 G
- mov (8) DEST_ARGB(%2, 2)<4> SRC_R(%1) { NoDDClr, NoDDChk } // 8 R
- mov (8) DEST_ARGB(%2, 3)<4> SRC_A(%1) { NoDDChk } // 8 A
-
- mov (8) DEST_ARGB(%2+1,0)<4> SRC_B(%1,8) { NoDDClr } // 8 B
- mov (8) DEST_ARGB(%2+1,1)<4> SRC_G(%1,8) { NoDDClr, NoDDChk } // 8 G
- mov (8) DEST_ARGB(%2+1,2)<4> SRC_R(%1,8) { NoDDClr, NoDDChk } // 8 R
- mov (8) DEST_ARGB(%2+1,3)<4> SRC_A(%1,8) { NoDDChk } // 8 A
-}
diff --git a/src/shaders/post_processing/gen5_6/Common/SetupVPKernel.asm b/src/shaders/post_processing/gen5_6/Common/SetupVPKernel.asm
deleted file mode 100644
index 1d99256..0000000
--- a/src/shaders/post_processing/gen5_6/Common/SetupVPKernel.asm
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Modual name: SetupVPKernel.asm
-//
-// Initial setup for running video-processing kernels
-//
-
-#include "common.inc"
-
-//
-// Now, begin source code....
-//
-.code
-
-#include "Init_All_Regs.asm"
-
-mov (8) rMSGSRC.0<1>:ud r0.0<8;8,1>:ud // Initialize message payload header with R0
-#if defined (INC_BLENDING)
- mul (1) fALPHA_STEP_X:f fSCALING_STEP_RATIO:f fVIDEO_STEP_X:f //StepX_ratio = AlphaStepX / VideoStepX
-#endif
-
-// End of SetupVPKernel
-
-
-
-
diff --git a/src/shaders/post_processing/gen5_6/Common/YUVX_Save_RGBX_Fix.asm b/src/shaders/post_processing/gen5_6/Common/YUVX_Save_RGBX_Fix.asm
deleted file mode 100644
index 4a53a4b..0000000
--- a/src/shaders/post_processing/gen5_6/Common/YUVX_Save_RGBX_Fix.asm
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Authors:
- * Halley Zhao <halley.zhao@intel.com>
- */
-
-// Module name: YUVX_Save_RGBX_Fix.asm
-//----------------------------------------------------------------
-
-#include "RGBX_Load_16x8.inc"
-
-#if (0)
- #define nTEMP0 34 // transformation coefficient
- #define nTEMP1 35 // one row of R (first half register is used)
- #define nTEMP2 36 // one row of G (first half register is used)
- #define nTEMP3 37 // one row of B (first half register is used)
- #define nTEMP4 38 // mul and add
- #define nTEMP5 39 // mul and add
- #define nTEMP6 40 // mul and add
- #define nTEMP7 41 // mul and add
- #define nTEMP8 42 // sum of mul
- #define nTEMP10 44
- #define nTEMP10 44 // split ub pixel to word width 1st quarter
- #define nTEMP12 46 // split ub pixel to word width 2nd quarter
- #define nTEMP14 48 // split ub pixel to word width 3rd quarter
- #define nTEMP16 50 // split ub pixel to word width 4th quarter
- #define nTEMP17 51
- #define nTEMP18 52
-
- #define nTEMP24 58 // temp using for repeat U/V in NV12_Load_8x4.asm
-#endif
-
-#define ONE_ROW_DEBUG 0
-
-#if (ONE_ROW_DEBUG)
- #define ROW_NUM 0
- #define DBG_ROWNUM_BASE 1
- CHANNEL_2 2
-#else
- #define ROW_NUM %1
- $for(0; <nY_NUM_OF_ROWS; 1) {
-#endif
- // C = Y' - 16 D = U - 128 E = V - 128
- add (16) REG2(r,nTEMP10,0)<1>:w ubDEST_RGBX(0,ROW_NUM*64 )<0;16,1> bYUV_OFF<0;4,1>:b
- add (16) REG2(r,nTEMP12,0)<1>:w ubDEST_RGBX(0,ROW_NUM*64+16)<0;16,1> bYUV_OFF<0;4,1>:b
- add (16) REG2(r,nTEMP14,0)<1>:w ubDEST_RGBX(0,ROW_NUM*64+32)<0;16,1> bYUV_OFF<0;4,1>:b
- add (16) REG2(r,nTEMP16,0)<1>:w ubDEST_RGBX(0,ROW_NUM*64+48)<0;16,1> bYUV_OFF<0;4,1>:b
-
-#if (ONE_ROW_DEBUG)
- mov (16) ubDEST_RGBX(0,(DBG_ROWNUM_BASE)*64 )<1> REG2(r,nTEMP10, 0)<0;16,2>:ub
- mov (16) ubDEST_RGBX(0,(DBG_ROWNUM_BASE)*64+16)<1> REG2(r,nTEMP12, 0)<0;16,2>:ub
- mov (16) ubDEST_RGBX(0,(DBG_ROWNUM_BASE)*64+32)<1> REG2(r,nTEMP14, 0)<0;16,2>:ub
- mov (16) ubDEST_RGBX(0,(DBG_ROWNUM_BASE)*64+48)<1> REG2(r,nTEMP16, 0)<0;16,2>:ub
-#endif
-
- // |Y|U|V|X|==>|R|G|B|X|
- // ###### do one row for R
- // #### mul and add
- mul.sat (16) REG2(r, nTEMP4, 0)<1>:w REG2(r,nTEMP10,0)<0;16,1>:w wYUV_to_RGB_CH2_Coef_Fix<0;4,1>:w
- mul.sat (16) REG2(r, nTEMP5, 0)<1>:w REG2(r,nTEMP12,0)<0;16,1>:w wYUV_to_RGB_CH2_Coef_Fix<0;4,1>:w
- mul.sat (16) REG2(r, nTEMP6, 0)<1>:w REG2(r,nTEMP14,0)<0;16,1>:w wYUV_to_RGB_CH2_Coef_Fix<0;4,1>:w
- mul.sat (16) REG2(r, nTEMP7, 0)<1>:w REG2(r,nTEMP16,0)<0;16,1>:w wYUV_to_RGB_CH2_Coef_Fix<0;4,1>:w
-
- #if (ONE_ROW_DEBUG)
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+1)*64+CHANNEL_2 )<4> bYUV_to_RGB_CH2_Coef_Fix<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+1)*64+CHANNEL_2+32)<4> bYUV_to_RGB_CH2_Coef_Fix<0;8,1>:ub
-
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+2)*64+CHANNEL_2 )<4> REG2(r,nTEMP4, 0)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+2)*64+CHANNEL_2+32)<4> REG2(r,nTEMP4, 8)<0;8,1>:ub
- #endif
-
- add.sat (4) REG2(r, nTEMP4, 0)<4>:uw REG2(r, nTEMP4, 0)<0;4,4>:w REG2(r, nTEMP4, 1)<0;4,4>:w
- add.sat (4) REG2(r, nTEMP5, 0)<4>:uw REG2(r, nTEMP5, 0)<0;4,4>:w REG2(r, nTEMP5, 1)<0;4,4>:w
- add.sat (4) REG2(r, nTEMP6, 0)<4>:uw REG2(r, nTEMP6, 0)<0;4,4>:w REG2(r, nTEMP6, 1)<0;4,4>:w
- add.sat (4) REG2(r, nTEMP7, 0)<4>:uw REG2(r, nTEMP7, 0)<0;4,4>:w REG2(r, nTEMP7, 1)<0;4,4>:w
- add.sat (4) REG2(r, nTEMP4, 0)<4>:uw REG2(r, nTEMP4, 0)<0;4,4>:uw REG2(r, nTEMP4, 2)<0;4,4>:w
- add.sat (4) REG2(r, nTEMP5, 0)<4>:uw REG2(r, nTEMP5, 0)<0;4,4>:uw REG2(r, nTEMP5, 2)<0;4,4>:w
- add.sat (4) REG2(r, nTEMP6, 0)<4>:uw REG2(r, nTEMP6, 0)<0;4,4>:uw REG2(r, nTEMP6, 2)<0;4,4>:w
- add.sat (4) REG2(r, nTEMP7, 0)<4>:uw REG2(r, nTEMP7, 0)<0;4,4>:uw REG2(r, nTEMP7, 2)<0;4,4>:w
-
- // #### write one row of R to rnTEMP1
- mov (4) REG2(r, nTEMP8, 0)<1>:uw REG2(r, nTEMP4, 0)<0; 4, 4>:uw
- mov (4) REG2(r, nTEMP8, 4)<1>:uw REG2(r, nTEMP5, 0)<0; 4, 4>:uw
- mov (4) REG2(r, nTEMP8, 8)<1>:uw REG2(r, nTEMP6, 0)<0; 4, 4>:uw
- mov (4) REG2(r, nTEMP8, 12)<1>:uw REG2(r, nTEMP7, 0)<0; 4, 4>:uw
-
- #if (ONE_ROW_DEBUG)
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+3)*64+CHANNEL_2 )<4> REG2(r,nTEMP8, 0)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+3)*64+CHANNEL_2+32)<4> REG2(r,nTEMP8, 8)<0;8,1>:ub
- #endif
-
- add.sat (16) REG2(r, nTEMP8, 0)<1>:uw REG2(r, nTEMP8, 0)<0; 16, 1>:uw 0x80:uw
- shl.sat (16) REG2(r, nTEMP8, 0)<1>:uw REG2(r, nTEMP8, 0)<0; 16, 1>:uw 1:w
- mov (16) REG2(r, nTEMP1, 0)<1>:ub REG2(r, nTEMP8, 1)<0; 16, 2>:ub
-
- #if (ONE_ROW_DEBUG)
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+4)*64+CHANNEL_2 )<4> REG2(r,nTEMP8, 0)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+4)*64+CHANNEL_2+32)<4> REG2(r,nTEMP8, 8)<0;8,1>:ub
- #endif
- // ###### do one row for G
- // #### mul and add
- mul.sat (16) REG2(r, nTEMP4, 0)<1>:w REG2(r,nTEMP10,0)<0;16,1>:w wYUV_to_RGB_CH1_Coef_Fix<0;4,1>:w
- mul.sat (16) REG2(r, nTEMP5, 0)<1>:w REG2(r,nTEMP12,0)<0;16,1>:w wYUV_to_RGB_CH1_Coef_Fix<0;4,1>:w
- mul.sat (16) REG2(r, nTEMP6, 0)<1>:w REG2(r,nTEMP14,0)<0;16,1>:w wYUV_to_RGB_CH1_Coef_Fix<0;4,1>:w
- mul.sat (16) REG2(r, nTEMP7, 0)<1>:w REG2(r,nTEMP16,0)<0;16,1>:w wYUV_to_RGB_CH1_Coef_Fix<0;4,1>:w
-
- add.sat (4) REG2(r, nTEMP4, 0)<4>:uw REG2(r, nTEMP4, 0)<0;4,4>:w REG2(r, nTEMP4, 1)<0;4,4>:w
- add.sat (4) REG2(r, nTEMP5, 0)<4>:uw REG2(r, nTEMP5, 0)<0;4,4>:w REG2(r, nTEMP5, 1)<0;4,4>:w
- add.sat (4) REG2(r, nTEMP6, 0)<4>:uw REG2(r, nTEMP6, 0)<0;4,4>:w REG2(r, nTEMP6, 1)<0;4,4>:w
- add.sat (4) REG2(r, nTEMP7, 0)<4>:uw REG2(r, nTEMP7, 0)<0;4,4>:w REG2(r, nTEMP7, 1)<0;4,4>:w
- add.sat (4) REG2(r, nTEMP4, 0)<4>:uw REG2(r, nTEMP4, 0)<0;4,4>:uw REG2(r, nTEMP4, 2)<0;4,4>:w
- add.sat (4) REG2(r, nTEMP5, 0)<4>:uw REG2(r, nTEMP5, 0)<0;4,4>:uw REG2(r, nTEMP5, 2)<0;4,4>:w
- add.sat (4) REG2(r, nTEMP6, 0)<4>:uw REG2(r, nTEMP6, 0)<0;4,4>:uw REG2(r, nTEMP6, 2)<0;4,4>:w
- add.sat (4) REG2(r, nTEMP7, 0)<4>:uw REG2(r, nTEMP7, 0)<0;4,4>:uw REG2(r, nTEMP7, 2)<0;4,4>:w
-
- // #### write one row of G to rnTEMP2
- mov (4) REG2(r, nTEMP8, 0)<1>:uw REG2(r, nTEMP4, 0)<0; 4, 4>:uw
- mov (4) REG2(r, nTEMP8, 4)<1>:uw REG2(r, nTEMP5, 0)<0; 4, 4>:uw
- mov (4) REG2(r, nTEMP8, 8)<1>:uw REG2(r, nTEMP6, 0)<0; 4, 4>:uw
- mov (4) REG2(r, nTEMP8, 12)<1>:uw REG2(r, nTEMP7, 0)<0; 4, 4>:uw
-
- add (16) REG2(r, nTEMP8, 0)<1>:uw REG2(r, nTEMP8, 0)<0; 16, 1>:uw 0x80:uw // saturation
- shl.sat (16) REG2(r, nTEMP8, 0)<1>:uw REG2(r, nTEMP8, 0)<0; 16, 1>:uw 1:w
- mov (16) REG2(r, nTEMP2, 0)<1>:ub REG2(r, nTEMP8, 1)<0; 16, 2>:ub
-
- // ###### do one row for B
- // #### mul and add
- mul.sat (16) REG2(r, nTEMP4, 0)<1>:w REG2(r,nTEMP10,0)<0;16,1>:w wYUV_to_RGB_CH0_Coef_Fix<0;4,1>:w
- mul.sat (16) REG2(r, nTEMP5, 0)<1>:w REG2(r,nTEMP12,0)<0;16,1>:w wYUV_to_RGB_CH0_Coef_Fix<0;4,1>:w
- mul.sat (16) REG2(r, nTEMP6, 0)<1>:w REG2(r,nTEMP14,0)<0;16,1>:w wYUV_to_RGB_CH0_Coef_Fix<0;4,1>:w
- mul.sat (16) REG2(r, nTEMP7, 0)<1>:w REG2(r,nTEMP16,0)<0;16,1>:w wYUV_to_RGB_CH0_Coef_Fix<0;4,1>:w
-
- // I had reduced the following add because U coef is zero for B; but in order to support BGR/RGB at the same time, I have to add it back.
- add.sat (4) REG2(r, nTEMP4, 0)<4>:uw REG2(r, nTEMP4, 0)<0;4,4>:w REG2(r, nTEMP4, 1)<0;4,4>:w
- add.sat (4) REG2(r, nTEMP5, 0)<4>:uw REG2(r, nTEMP5, 0)<0;4,4>:w REG2(r, nTEMP5, 1)<0;4,4>:w
- add.sat (4) REG2(r, nTEMP6, 0)<4>:uw REG2(r, nTEMP6, 0)<0;4,4>:w REG2(r, nTEMP6, 1)<0;4,4>:w
- add.sat (4) REG2(r, nTEMP7, 0)<4>:uw REG2(r, nTEMP7, 0)<0;4,4>:w REG2(r, nTEMP7, 1)<0;4,4>:w
- add.sat (4) REG2(r, nTEMP4, 0)<4>:uw REG2(r, nTEMP4, 0)<0;4,4>:uw REG2(r, nTEMP4, 2)<0;4,4>:w
- add.sat (4) REG2(r, nTEMP5, 0)<4>:uw REG2(r, nTEMP5, 0)<0;4,4>:uw REG2(r, nTEMP5, 2)<0;4,4>:w
- add.sat (4) REG2(r, nTEMP6, 0)<4>:uw REG2(r, nTEMP6, 0)<0;4,4>:uw REG2(r, nTEMP6, 2)<0;4,4>:w
- add.sat (4) REG2(r, nTEMP7, 0)<4>:uw REG2(r, nTEMP7, 0)<0;4,4>:uw REG2(r, nTEMP7, 2)<0;4,4>:w
-
- // #### write one row of B to rnTEMP3
- mov (4) REG2(r, nTEMP8, 0)<1>:uw REG2(r, nTEMP4, 0)<0; 4, 4>:uw
- mov (4) REG2(r, nTEMP8, 4)<1>:uw REG2(r, nTEMP5, 0)<0; 4, 4>:uw
- mov (4) REG2(r, nTEMP8, 8)<1>:uw REG2(r, nTEMP6, 0)<0; 4, 4>:uw
- mov (4) REG2(r, nTEMP8, 12)<1>:uw REG2(r, nTEMP7, 0)<0; 4, 4>:uw
-
- add.sat (16) REG2(r, nTEMP8, 0)<1>:uw REG2(r, nTEMP8, 0)<0; 16, 1>:uw 0x80:uw // saturation
- shl.sat (16) REG2(r, nTEMP8, 0)<1>:uw REG2(r, nTEMP8, 0)<0; 16, 1>:uw 1:w
- mov (16) REG2(r, nTEMP3, 0)<1>:ub REG2(r, nTEMP8, 1)<0; 16, 2>:ub
-
- // B
- mov (8) ubDEST_RGBX(0,ROW_NUM*64 )<4> REG2(r,nTEMP3, 0)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,ROW_NUM*64+32)<4> REG2(r,nTEMP3, 8)<0;8,1>:ub
- // G
- mov (8) ubDEST_RGBX(0,ROW_NUM*64+1 )<4> REG2(r,nTEMP2, 0)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,ROW_NUM*64+1+32)<4> REG2(r,nTEMP2, 8)<0;8,1>:ub
- // R
- mov (8) ubDEST_RGBX(0,ROW_NUM*64+2 )<4> REG2(r,nTEMP1, 0)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,ROW_NUM*64+2+32)<4> REG2(r,nTEMP1, 8)<0;8,1>:ub
-#if (!ONE_ROW_DEBUG)
- }
-#endif
diff --git a/src/shaders/post_processing/gen5_6/Common/YUVX_Save_RGBX_Float.asm b/src/shaders/post_processing/gen5_6/Common/YUVX_Save_RGBX_Float.asm
deleted file mode 100644
index c3fd5df..0000000
--- a/src/shaders/post_processing/gen5_6/Common/YUVX_Save_RGBX_Float.asm
+++ /dev/null
@@ -1,317 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Authors:
- * Halley Zhao <halley.zhao@intel.com>
- */
-
-// Module name: YUVX_Save_RGBX_Float.asm
-//----------------------------------------------------------------
-
-#include "RGBX_Load_16x8.inc"
-
-#if (0)
- // 8 grf reg for one row of pixel (2 pixel per grf)
- #define nTEMP0 34
- #define nTEMP1 35
- #define nTEMP2 36
- #define nTEMP3 37
- #define nTEMP4 38
- #define nTEMP5 39
- #define nTEMP6 40
- #define nTEMP7 41
-
- #define nTEMP8 42 // transformation coefficient
- #define nTEMP10 44 // transformation coefficient
-
- #define nTEMP12 46 // save Y/U/V in ub format
- #define nTEMP14 48 // save YUV in ud format
- #define nTEMP16 50 // dp4 result
- #define nTEMP17 51
- #define nTEMP18 52 // temp used for repeat U/V in NV12_Load_8x4.asm
-
- #define nTEMP24 58 // it is not safe to use in my case. I try to use it for repeat U/V in NV12_Load_8x4.asm, Y data is taint in row 4/5
-#endif
-
-#define ONE_ROW_DEBUG 0
-
-#if (ONE_ROW_DEBUG)
- // if you want to debug a row which is not the first one, try the following:
- // 1. define ROW_NUM_READ to the row you want to debug
- // 2. ROW_NUM_WRITE can be same to DBG_ROWNUM_READ to overwrite original YUV data, or define it to a new row
- // 3. change (DBG_ROWNUM_BASE+?)=ROW_NUM_READ or ROW_NUM_WRITE to DBG_ROWNUM_0, to not conflict with others
- #define ROW_NUM_READ 0
- #define ROW_NUM_WRITE 0
- #define DBG_ROWNUM_BASE 1
- #define DBG_ROWNUM_0 0
-#else
- #define ROW_NUM_READ %1
- #define ROW_NUM_WRITE %1
- $for(0; <nY_NUM_OF_ROWS; 1) {
-#endif
- // YUVX | Y | U | V | X |
- // XRGB | B | G | R | X |
- // ###### save one row of pixel to temp grf with float format (required by dp4)
- // C = Y' - 16 D = U - 128 E = V - 128
-
- // the follow sentence doesn't work, I have to split it into two step
- // add (4) REG(r, nTEMP0)<1>:f r[SRC_RGBA_OFFSET_1,ROW_NUM_READ*32 + 0]<4,1>:ub REG2(r, nTEMP10, 16)<0;4,1>:b
-
- add (16) REG2(r,nTEMP12,0)<1>:w ubDEST_RGBX(0,ROW_NUM_READ*64 )<0;16,1> bYUV_OFF<0;4,1>:b
- add (16) REG2(r,nTEMP14,0)<1>:w ubDEST_RGBX(0,ROW_NUM_READ*64+16)<0;16,1> bYUV_OFF<0;4,1>:b
- add (16) REG2(r,nTEMP16,0)<1>:w ubDEST_RGBX(0,ROW_NUM_READ*64+32)<0;16,1> bYUV_OFF<0;4,1>:b
- add (16) REG2(r,nTEMP17,0)<1>:w ubDEST_RGBX(0,ROW_NUM_READ*64+48)<0;16,1> bYUV_OFF<0;4,1>:b
-
- mov (8) fROW_YUVA(0,0)<1> REG2(r, nTEMP12, 0)<0;8,1>:w
- mov (8) fROW_YUVA(1,0)<1> REG2(r, nTEMP12, 8)<0;8,1>:w
- mov (8) fROW_YUVA(2,0)<1> REG2(r, nTEMP14, 0)<0;8,1>:w
- mov (8) fROW_YUVA(3,0)<1> REG2(r, nTEMP14, 8)<0;8,1>:w
- mov (8) fROW_YUVA(4,0)<1> REG2(r, nTEMP16, 0)<0;8,1>:w
- mov (8) fROW_YUVA(5,0)<1> REG2(r, nTEMP16, 8)<0;8,1>:w
- mov (8) fROW_YUVA(6,0)<1> REG2(r, nTEMP17, 0)<0;8,1>:w
- mov (8) fROW_YUVA(7,0)<1> REG2(r, nTEMP17, 8)<0;8,1>:w
-
- #if (ONE_ROW_DEBUG)
- mov.sat (8) REG2(r, nTEMP14, 0)<1>:ud fROW_YUVA(0,0)<0;8,1>:f
- mov (8) REG2(r, nTEMP12, 0)<1>:ub REG2(r, nTEMP14, 0)<0;8,4>:ub
-
- // write Y-16, U-128, V-128 to the 2nd row of RGB (convert float to int first, write whole ud): 1st half, 2 pixels
- mov (16) ubDEST_RGBX(0,(DBG_ROWNUM_BASE)*64 )<1> REG2(r,nTEMP14, 0)<0;16,1>:ub
- mov (16) ubDEST_RGBX(0,(DBG_ROWNUM_BASE)*64+16)<1> REG2(r,nTEMP14, 16)<0;16,1>:ub
-
- mov.sat (8) REG2(r, nTEMP14, 0)<1>:ud fROW_YUVA(1,0)<0;8,1>:f
- mov (8) REG2(r, nTEMP12, 8)<1>:ub REG2(r, nTEMP14, 0)<0;8,4>:ub
-
- // write Y-16, U-128, V-128 to the 2nd row of RGB (convert float to int first, write whole ud): 2nd half, 2 pixels
- mov (16) ubDEST_RGBX(0,(DBG_ROWNUM_BASE)*64+32)<1> REG2(r,nTEMP14, 0)<0;16,1>:ub
- mov (16) ubDEST_RGBX(0,(DBG_ROWNUM_BASE)*64+48)<1> REG2(r,nTEMP14, 16)<0;16,1>:ub
-
- mov.sat (8) REG2(r, nTEMP14, 0)<1>:ud fROW_YUVA(2,0)<0;8,1>:f
- mov (8) REG2(r, nTEMP12, 16)<1>:ub REG2(r, nTEMP14, 0)<0;8,4>:ub
-
- mov.sat (8) REG2(r, nTEMP14, 0)<1>:ud fROW_YUVA(3,0)<0;8,1>:f
- mov (8) REG2(r, nTEMP12, 24)<1>:ub REG2(r, nTEMP14, 0)<0;8,4>:ub
-
- // write Y-16, U-128, V-128 to the 3rd row of RGB (convert float to int first, only LSB is used): 1st half, 8 pixels
- mov (16) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+1)*64 )<1> REG2(r,nTEMP12, 0)<0;16,1>:ub
- mov (16) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+1)*64+16)<1> REG2(r,nTEMP12, 16)<0;16,1>:ub
-
- mov.sat (8) REG2(r, nTEMP14, 0)<1>:ud fROW_YUVA(4,0)<0;8,1>:f
- mov (8) REG2(r, nTEMP12, 0)<1>:ub REG2(r, nTEMP14, 0)<0;8,4>:ub
-
- mov.sat (8) REG2(r, nTEMP14, 0)<1>:ud fROW_YUVA(5,0)<0;8,1>:f
- mov (8) REG2(r, nTEMP12, 8)<1>:ub REG2(r, nTEMP14, 0)<0;8,4>:ub
-
- mov.sat (8) REG2(r, nTEMP14, 0)<1>:ud fROW_YUVA(6,0)<0;8,1>:f
- mov (8) REG2(r, nTEMP12, 16)<1>:ub REG2(r, nTEMP14, 0)<0;8,4>:ub
-
- mov.sat (8) REG2(r, nTEMP14, 0)<1>:ud fROW_YUVA(7,0)<0;8,1>:f
- mov (8) REG2(r, nTEMP12, 24)<1>:ub REG2(r, nTEMP14, 0)<0;8,4>:ub
-
- // write Y-16, U-128, V-128 to the 3rd row of RGB (convert float to int first, only LSB is used): 2nd half, 8 pixels
- mov (16) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+1)*64+32)<1> REG2(r,nTEMP12, 0)<0;16,1>:ub
- mov (16) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+1)*64+48)<1> REG2(r,nTEMP12, 16)<0;16,1>:ub
- #endif
-
- // ######## do one row for Red ########
- #define fCOEF_REG fYUV_to_RGB_CH2_Coef_Float
- #define CHANNEL 2
- // ##### dp4(nTEMP16) and save result to uw format(nTEMP12)
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(0, 0)<0;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 0)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- #if (ONE_ROW_DEBUG)
- // write dp4 (raw float) of 2 pixel to the 4/5th row
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+2)*64+CHANNEL )<4> REG2(r,nTEMP16, 0)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+2)*64+CHANNEL+32)<4> REG2(r,nTEMP16, 8)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+3)*64+CHANNEL )<4> REG2(r,nTEMP16, 16)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+3)*64+CHANNEL+32)<4> REG2(r,nTEMP16, 24)<0;8,1>:ub
-
- // write dp4 (convert float to ud first, write whole ud) of 2 pixel to the 6/7th row
- mov (8) REG2(r, nTEMP17, 0)<1>:d REG2(r, nTEMP16, 0)<0;8,1>:f
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+4)*64+CHANNEL )<4> REG2(r,nTEMP17, 0)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+4)*64+CHANNEL+32)<4> REG2(r,nTEMP17, 8)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+5)*64+CHANNEL )<4> REG2(r,nTEMP17, 16)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+5)*64+CHANNEL+32)<4> REG2(r,nTEMP17, 24)<0;8,1>:ub
- #endif
-
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(1, 0)<0;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 2)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(2, 0)<0;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 4)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(3, 0)<0;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 6)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(4, 0)<0;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 8)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(5, 0)<5;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 10)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(6, 0)<6;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 12)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(7, 0)<0;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 14)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- // #### write this channel
- mov (8) ubDEST_RGBX(0,ROW_NUM_WRITE*64+CHANNEL )<4> REG2(r,nTEMP12, 0)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,ROW_NUM_WRITE*64+CHANNEL+32)<4> REG2(r,nTEMP12, 8)<0;8,1>:ub
-
- // ######## do one row for Green ########
- #define fCOEF_REG fYUV_to_RGB_CH1_Coef_Float // reg for green coefficient
- #define CHANNEL 1
- // ##### dp4(nTEMP16) and save result to uw format(nTEMP12)
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(0, 0)<0;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 0)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- #if (ONE_ROW_DEBUG)
- // write dp4 (raw float) of 2 pixel to the 4/5th row
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+2)*64+CHANNEL )<4> REG2(r,nTEMP16, 0)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+2)*64+CHANNEL+32)<4> REG2(r,nTEMP16, 8)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+3)*64+CHANNEL )<4> REG2(r,nTEMP16, 16)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+3)*64+CHANNEL+32)<4> REG2(r,nTEMP16, 24)<0;8,1>:ub
-
- // write dp4 (convert float to ud first, write whole ud) of 2 pixel to the 6/7th row
- mov (8) REG2(r, nTEMP17, 0)<1>:d REG2(r, nTEMP16, 0)<0;8,1>:f
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+4)*64+CHANNEL )<4> REG2(r,nTEMP17, 0)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+4)*64+CHANNEL+32)<4> REG2(r,nTEMP17, 8)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+5)*64+CHANNEL )<4> REG2(r,nTEMP17, 16)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+5)*64+CHANNEL+32)<4> REG2(r,nTEMP17, 24)<0;8,1>:ub
- #endif
-
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(1, 0)<0;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 2)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(2, 0)<0;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 4)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(3, 0)<0;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 6)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(4, 0)<0;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 8)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(5, 0)<5;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 10)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(6, 0)<6;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 12)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(7, 0)<0;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 14)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- // #### write this channel
- mov (8) ubDEST_RGBX(0,ROW_NUM_WRITE*64+CHANNEL )<4> REG2(r,nTEMP12, 0)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,ROW_NUM_WRITE*64+CHANNEL+32)<4> REG2(r,nTEMP12, 8)<0;8,1>:ub
-
- // ###### do one row for Blue channel
- #define fCOEF_REG fYUV_to_RGB_CH0_Coef_Float // reg for Blue coefficient
- #define CHANNEL 0
- // ##### dp4(nTEMP16) and save result to uw format(nTEMP12)
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(0, 0)<0;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 0)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- #if (ONE_ROW_DEBUG)
- // write dp4 (raw float) of 2 pixel to the 4/5th row
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+2)*64+CHANNEL )<4> REG2(r,nTEMP16, 0)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+2)*64+CHANNEL+32)<4> REG2(r,nTEMP16, 8)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+3)*64+CHANNEL )<4> REG2(r,nTEMP16, 16)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+3)*64+CHANNEL+32)<4> REG2(r,nTEMP16, 24)<0;8,1>:ub
-
- // write dp4 (convert float to ud first, write whole ud) of 2 pixel to the 6/7th row
- mov (8) REG2(r, nTEMP17, 0)<1>:d REG2(r, nTEMP16, 0)<0;8,1>:f
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+4)*64+CHANNEL )<4> REG2(r,nTEMP17, 0)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+4)*64+CHANNEL+32)<4> REG2(r,nTEMP17, 8)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+5)*64+CHANNEL )<4> REG2(r,nTEMP17, 16)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,(DBG_ROWNUM_BASE+5)*64+CHANNEL+32)<4> REG2(r,nTEMP17, 24)<0;8,1>:ub
- #endif
-
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(1, 0)<0;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 2)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(2, 0)<0;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 4)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(3, 0)<0;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 6)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(4, 0)<0;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 8)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(5, 0)<5;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 10)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(6, 0)<6;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 12)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- dp4 (8) REG2(r, nTEMP16, 0)<1>:f fROW_YUVA(7, 0)<0;8,1> fCOEF_REG<0;4,1>:f
- mov.sat (2) REG2(r, nTEMP14, 0)<1>:ud REG2(r, nTEMP16, 0)<0;2,4>:f
- mov (2) REG2(r, nTEMP12, 14)<1>:ub REG2(r, nTEMP14, 0)<0;2,4>:ub
-
- // #### write this channel
- mov (8) ubDEST_RGBX(0,ROW_NUM_WRITE*64+CHANNEL )<4> REG2(r,nTEMP12, 0)<0;8,1>:ub
- mov (8) ubDEST_RGBX(0,ROW_NUM_WRITE*64+CHANNEL+32)<4> REG2(r,nTEMP12, 8)<0;8,1>:ub
-#if (!ONE_ROW_DEBUG)
- }
-#endif
diff --git a/src/shaders/post_processing/gen5_6/Common/YUV_to_RGBX_Coef.asm b/src/shaders/post_processing/gen5_6/Common/YUV_to_RGBX_Coef.asm
deleted file mode 100644
index 6aae1a5..0000000
--- a/src/shaders/post_processing/gen5_6/Common/YUV_to_RGBX_Coef.asm
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Authors:
- * Halley Zhao <halley.zhao@intel.com>
- */
-
-// Module name: YUV_to_RGBX_Coef.asm
-//----------------------------------------------------------------
-#define ubDEST_RGBX ubTOP_Y // I'd like use them for color conversion
-
-// is dst surface |R|G|B|X| layout? otherwise, it is |B|G|R|X| layout
-and.nz.f0.1 (1) dNULLREG r1.2:ud 0xFF000000:ud
-#ifdef FIX_POINT_CONVERSION
- // ###### set up transformation coefficient
- // R = clip(( 298 * C + 0 * D + 409 * E + 128) >> 8)
- // R = clip((0x012A * C + 0 * D + 0x0199 * E + 128) >> 8)
- (-f0.1) mov (1) REG2(r, nTEMP0, 0):ud 0x0000012A:ud
- (-f0.1) mov (1) REG2(r, nTEMP0, 1):ud 0x00000199:ud
- ( f0.1) mov (1) REG2(r, nTEMP0, 4):ud 0x0000012A:ud
- ( f0.1) mov (1) REG2(r, nTEMP0, 5):ud 0x00000199:ud
-
- // G = clip(( 298 * C - 100 * D - 208 * E + 128) >> 8)
- // G = clip(( 0x012A * C - 0x64 * D - 0xD0 * E + 128) >> 8)
- // G = clip(( 0x012A * C + 0xFF9C * D + 0xFF30 * E + 128) >> 8)
- mov (1) REG2(r, nTEMP0, 2):ud 0xFF9C012A:ud
- mov (1) REG2(r, nTEMP0, 3):ud 0x0000FF30:ud
-
- // B = clip(( 298 * C + 516 * D + 0 * E + 128) >> 8)
- // B = clip((0x012A* C + 0x0204 * D + 0 * E + 128) >> 8)
- (-f0.1) mov (1) REG2(r, nTEMP0, 4):ud 0x0204012A:ud
- (-f0.1) mov (1) REG2(r, nTEMP0, 5):ud 0x00000000:ud
- ( f0.1) mov (1) REG2(r, nTEMP0, 0):ud 0x0204012A:ud
- ( f0.1) mov (1) REG2(r, nTEMP0, 1):ud 0x00000000:ud
-
- // asr.sat (24) REG2(r,nTEMP0,0)<1> REG2(r,nTEMP0,0)<0;24,1> 1:w
- asr.sat (8) REG2(r,nTEMP0, 0)<1>:w REG2(r,nTEMP0, 0)<0;8,1>:w 1:w
- asr.sat (4) REG2(r,nTEMP0,8)<1>:w REG2(r,nTEMP0,8)<0;4,1>:w 1:w
-
- // C = Y' - 16 D = U - 128 E = V - 128
- mov (1) REG2(r, nTEMP0, 6):ud 0x008080F0:ud
-
- #define wYUV_to_RGB_CH2_Coef_Fix REG2(r, nTEMP0, 0)
- #define wYUV_to_RGB_CH1_Coef_Fix REG2(r, nTEMP0, 4)
- #define wYUV_to_RGB_CH0_Coef_Fix REG2(r, nTEMP0, 8)
- #define bYUV_OFF REG2(r,nTEMP0,24)
-
- // debug use
- #define bYUV_to_RGB_CH2_Coef_Fix REG2(r, nTEMP0, 0)
- #define bYUV_to_RGB_CH1_Coef_Fix REG2(r, nTEMP0, 8)
- #define bYUV_to_RGB_CH0_Coef_Fix REG2(r, nTEMP0, 16)
-
-#else
- // R = Y + 1.13983*V
- // R = clip( Y + 1.402*(Cr-128)) // ITU-R
- (-f0.1) mov (1) REG2(r, nTEMP8, 3):f 0.000f // A coef
- (-f0.1) mov (1) REG2(r, nTEMP8, 2):f 1.402f // V coef
- (-f0.1) mov (1) REG2(r, nTEMP8, 1):f 0.0f // U coef
- (-f0.1) mov (1) REG2(r, nTEMP8, 0):f 1.0f // Y coef
-
- ( f0.1) mov (1) REG2(r, nTEMP10, 3):f 0.000f // A coef
- ( f0.1) mov (1) REG2(r, nTEMP10, 2):f 1.402f // V coef
- ( f0.1) mov (1) REG2(r, nTEMP10, 1):f 0.0f // U coef
- ( f0.1) mov (1) REG2(r, nTEMP10, 0):f 1.0f // Y coef
-
- // G = Y - 0.39465*U - 0.58060*V
- // G = clip( Y - 0.344*(Cb-128) - 0.714*(Cr-128))
- mov (1) REG2(r, nTEMP8, 7):f 0.000f // A coef
- mov (1) REG2(r, nTEMP8, 6):f -0.714f // V coef
- mov (1) REG2(r, nTEMP8, 5):f -0.344f // U coef
- mov (1) REG2(r, nTEMP8, 4):f 1.0f // Y coef
-
- // B = Y + 2.03211*U
- // B = clip( Y + 1.772*(Cb-128))
- (-f0.1) mov (1) REG2(r, nTEMP10, 3):f 0.000f // A coef
- (-f0.1) mov (1) REG2(r, nTEMP10, 2):f 0.0f // V coef
- (-f0.1) mov (1) REG2(r, nTEMP10, 1):f 1.772f // U coef
- (-f0.1) mov (1) REG2(r, nTEMP10, 0):f 1.0f // Y coef
-
- ( f0.1) mov (1) REG2(r, nTEMP8, 3):f 0.000f // A coef
- ( f0.1) mov (1) REG2(r, nTEMP8, 2):f 0.0f // V coef
- ( f0.1) mov (1) REG2(r, nTEMP8, 1):f 1.772f // U coef
- ( f0.1) mov (1) REG2(r, nTEMP8, 0):f 1.0f // Y coef
-
- mov (1) REG2(r, nTEMP10, 4):ud 0x008080F0:ud
-
- #define fYUV_to_RGB_CH2_Coef_Float REG2(r, nTEMP8, 0)
- #define fYUV_to_RGB_CH1_Coef_Float REG2(r, nTEMP8, 4)
- #define fYUV_to_RGB_CH0_Coef_Float REG2(r, nTEMP10, 0)
- #define bYUV_OFF REG2(r,nTEMP10,16)
-
- .declare fROW_YUVA Base=REG(r,nTEMP0) ElementSize=4 SrcRegion=REGION(8,8) Type=f // r nTEMP0 - r nTEMP7
-
-#endif
diff --git a/src/shaders/post_processing/gen5_6/Common/common.inc b/src/shaders/post_processing/gen5_6/Common/common.inc
deleted file mode 100644
index fde7640..0000000
--- a/src/shaders/post_processing/gen5_6/Common/common.inc
+++ /dev/null
@@ -1,647 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#ifndef COMMON_INC
-#define COMMON_INC
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 80
-.reg_count_payload 4
-
-
-//========== Common constants ==========
-
-// Bit position constants
-#define BIT0 0x01
-#define BIT1 0x02
-#define BIT2 0x04
-#define BIT3 0x08
-#define BIT4 0x10
-#define BIT5 0x20
-#define BIT6 0x40
-#define BIT7 0x80
-#define BIT8 0x0100
-#define BIT9 0x0200
-#define BIT10 0x0400
-#define BIT11 0x0800
-#define BIT12 0x1000
-#define BIT13 0x2000
-#define BIT14 0x4000
-#define BIT15 0x8000
-#define BIT16 0x00010000
-#define BIT17 0x00020000
-#define BIT18 0x00040000
-#define BIT19 0x00080000
-#define BIT20 0x00100000
-#define BIT21 0x00200000
-#define BIT22 0x00400000
-#define BIT23 0x00800000
-#define BIT24 0x01000000
-#define BIT25 0x02000000
-#define BIT26 0x04000000
-#define BIT27 0x08000000
-#define BIT28 0x10000000
-#define BIT29 0x20000000
-#define BIT30 0x40000000
-#define BIT31 0x80000000
-
-#define nGRFWIB 32 // GRF register width in byte
-#define nGRFWIW 16 // GRF register width in word
-#define nGRFWID 8 // GRF register width in dword
-
-#define nTOP_FIELD 0
-#define nBOTTOM_FIELD 1
-
-#define nPREVIOUS_FRAME 0 // Previous frame
-#define nCURRENT_FRAME 1 // Current frame
-#define nNEXT_FRAME 2 // Next frame
-
-#ifdef GT
-// GT DI Kernel
-#else // ILK
-// ILK DI Kernel
-#endif
-
-//===================================
-
-//========== Macros ==========
-#define REGION(Width,HStride) <Width*HStride;Width,HStride> // Region definition when ExecSize = Width
-
-#define RegFile(a) a
-#define REG(r,n) _REG(RegFile(r),n)
-#define _REG(r,n) __REG(r,n)
-#define __REG(r,n) r##n.0
-#define REG2(r,n,s) _REG2(RegFile(r),n,s)
-#define _REG2(r,n,s) __REG2(r,n,s)
-#define __REG2(r,n,s) r##n.##s
-
-#define dNULLREG null<1>:d
-#define wNULLREG null<1>:w
-
-#define KERNEL_ID(kernel_ID) mov NULLREG kernel_ID:ud
-
-
-#define NODDCLR
-#define NODDCLR_NODDCHK
-#define NODDCHK
-
-//#define NODDCLR { NoDDClr }
-//#define NODDCLR_NODDCHK { NoDDClr, NoDDChk }
-//#define NODDCHK { NoDDChk }
-
-
-//========== Defines ====================
-
-
-//========== GRF partition ==========
-// r0 header : r0 (1 GRF)
-// Static parameters : r1 - r5 (5 GRFS)
-// Inline parameters : r6 - r7 (2 GRFs)
-// MSGSRC : r9 (1 GRF)
-// Top IO region : r10 - r33 (24 GRFS 8 for each component Y,U,V 16X8:w)
-// Free space : r34 - r55 (22 GRFS)
-// Bottom IO region : r56 - r79 (24 GRFS 8 for each component Y,U,V 16X8:w)
-//===================================
-
-
-//========== Static Parameters ==========
-// r1
-#define fPROCAMP_C0 r1.0 // DWORD 0, Procamp constant C0 in :f
-#define wPROCAMP_C0 r1.0 // DWORD 0, Procamp constant C0 in :w
-#define NUMBER_0002 r1.1 // DWORD 0, 0x0002 used in procamp for GT
-#define udCP_MessageFormat r1.0 // DWORD 0, bits 2:3 of DWORD. (CE)
-#define udCP_StatePointer r1.0 // DWORD 0, bits 31:5 of DWORD.(CE)
-
-#define ubSRC_CF_OFFSET r1.4 // DWORD 1, byte 0-2. SRC packed color format YUV offset in :ub
-
-#define ubDEST_RGB_FORMAT r1.8 // DWORD 2, byte 0. Dest RGB color format (0:ARGB FF:XRGB)
-#define ubDEST_CF_OFFSET r1.8 // DWORD 2, byte 0-2. Dest packed color format YUV offset in :ub
-
-#define fPROCAMP_C1 r1.3 // DWORD 3, Procamp constant C1 in :f
-#define wPROCAMP_C1 r1.6 // DWORD 3, Procamp constant C1 in :w
-#define NUMBER_0100 r1.7 // DWORD 3, 0x0100 used in procamp for GT
-
-#define fPROCAMP_C2 r1.4 // DWORD 4, Procamp constant C2 in :f
-#define wPROCAMP_C2 r1.8 // DWORD 4, Procamp constant C2 in :w
-
-#define uwSPITCH_DIV2 r1.10 // DWORD 5, byte 0-1. statistics surface pitch divided by 2
-
-#define fVIDEO_STEP_Y r1.6 // DWORD 6, :f, AVS normalized reciprocal of Y Scaling factor
-#define ubSTMM_SHIFT r1.24 // DWORD 6, byte 0. Amount of right shift for the DI blending equation
-#define ubSTMM_MIN r1.25 // DWORD 6, byte 1. Min STMM for DI blending equation
-#define ubSTMM_MAX r1.26 // DWORD 6, byte 2. Max STMM for DI blending equation
-#define ubTFLD_FIRST r1.27 // DWORD 6, byte 3. Field parity order
-
-#define fPROCAMP_C5 r1.7 // DWORD 7, Procamp constant C3 in :f
-#define wPROCAMP_C5 r1.14 // DWORD 7, Procamp constant C3 in :w
-
-// r2
-#define fPROCAMP_C3 r2.0 // DWORD 0, Procamp constant C4 in :f
-#define wPROCAMP_C3 r2.0 // DWORD 0, Procamp constant C4 in :w
-
-#define fCSC_C5 r2.2 // DWORD 2. WG+CSC constant C5
-#define wCSC_C5 r2.4 // DWORD 2. WG+CSC constant C5
-
-#define fPROCAMP_C4 r2.3 // DWORD 3, Procamp constant C5 in :f
-#define wPROCAMP_C4 r2.6 // DWORD 3, Procamp constant C5 in :w
-
-#define fCSC_C8 r2.4 // DWORD 4. WG+CSC constant C8
-#define wCSC_C8 r2.8 // DWORD 4. WG+CSC constant C8
-#define fCSC_C9 r2.7 // DWORD 7. WG+CSC constant C9
-#define wCSC_C9 r2.14 // DWORD 7. WG+CSC constant C9
-
-// r3
-#define fCSC_C0 r3.0 // DWORD 0. WG+CSC constant C0
-#define wCSC_C0 r3.0 // DWORD 0. WG+CSC constant C0
-
-#define fSCALING_STEP_RATIO r3.1 // DWORD 1, = Alpha_X_Scaling_Step / Video_X_scaling_Step :f (blending)
-#define fALPHA_STEP_X r3.1 // DWORD 1, = 1/Scale X, 0.5 = 2x, in :f (blending)
-
-#define fALPHA_STEP_Y r3.2 // DWORD 2, = 1/Scale Y, in :f
-
-#define fCSC_C4 r3.3 // DWORD 3. WG+CSC constant C4
-#define wCSC_C4 r3.6 // DWORD 3. WG+CSC constant C4
-#define fCSC_C1 r3.4 // DWORD 4. WG+CSC constant C1
-#define wCSC_C1 r3.8 // DWORD 4. WG+CSC constant C1
-
-#define wSRC_H_ORI_OFFSET r3.10 // DWORD 5, bytes 0,1 :w
-#define wSRC_V_ORI_OFFSET r3.11 // DWORD 5, bytes 2,3 :w
-
-#define dCOLOR_PIXEL r3.6 // DWORD 6. Color pixel for Colorfill
-
-#define fCSC_C2 r3.6 // DWORD 6. WG+CSC constant C2
-#define wCSC_C2 r3.12 // DWORD 6. WG+CSC constant C2
-#define fCSC_C3 r3.7 // DWORD 7. WG+CSC constant C3
-#define wCSC_C3 r3.14 // DWORD 7. WG+CSC constant C3
-
-// r4
-#define fCSC_C6 r4.0 // DWORD 0. WG+CSC constant C6
-#define wCSC_C6 r4.0 // DWORD 0. WG+CSC constant C6
-
-#define wFRAME_ENDX r4.2 // DWORD 1, word 0. Horizontal end = Origin+Width (in pixels)(for multiple blocks)
-#define wNUM_BLKS r4.3 // DWORD 1, word 1. Number of blocks to process (for multiple blocks)
-
-#define wCOPY_ORIX r4.5 // DWORD 2, word 1. A copy of X origin (for multiple blocks)
-#define uwNLAS_ENABLE r4.4 // DWORD 2, bit 15, NLAS enble bit
-
-#define fCSC_C7 r4.3 // DWORD 3. WG+CSC constant C7
-#define wCSC_C7 r4.6 // DWORD 3. WG+CSC constant C7
-#define fCSC_C10 r4.4 // DWORD 4. WG+CSC constant C10
-#define wCSC_C10 r4.8 // DWORD 4. WG+CSC constant C10
-
-#define fFRAME_VID_ORIX r4.5 // DWORD 5, Frame horizontal origin normalized for scale kernel
-
-#define fFRAME_ALPHA_ORIX r4.6 // DWORD 6. Normalized alpha horiz origin for the frame
-
-#define fCSC_C11 r4.7 // DWORD 7. WG+CSC constant C11
-#define wCSC_C11 r4.14 // DWORD 7. WG+CSC constant C11
-
-//========================================
-
-//========== Inline parameters ===========
-// r5
-#define wORIX r5.0 // DWORD 0, byte 0-1. :w, Destination Block Horizontal Origin in pel
-#define wORIY r5.1 // DWORD 0, byte 2-3. :w, Destination Block Vertical Origin in pel
-
-#define fSRC_VID_H_ORI r5.1 // DWORD 1, :f, SRC Y horizontal origin normalized for scale kernel
-
-#define fSRC_VID_V_ORI r5.2 // DWORD 2, :f, SRC Y vertical origin normalized for scale kernel
-
-#define fSRC_ALPHA_H_ORI r5.3 // DWORD 3, :f, Normalized alpha horizontal origin
-
-#define fSRC_ALPHA_V_ORI r5.4 // DWORD 4, :f, Normalized alpha vertical origin
-
-#define uwALPHA_MASK_X r5.10 // DWORD 5, byte 0-1 :w, H. alpha mask
-#define ubALPHA_MASK_Y r5.22 // DWORD 5, byte 2. :ub,V. alpha mask
-#define ubBLK_CNT_X r5.23 // DWORD 5, byte 3, :ub, Horizontal Block Count per thread
-
-// mask is used for each block. it will be reloaded from r6 below for the last block.
-#define udBLOCK_MASK r5.6 // DWORD 6
-#define uwBLOCK_MASK_H r5.12 // DWORD 6, byte 0-1 :uw, Block horizontal mask used in non-DWord aligned kernels
-#define ubBLOCK_MASK_V r5.26 // DWORD 6, byte 2 :ub, Block vertical mask used in non-DWord aligned kernels
-#define ubNUM_BLKS r5.27 // DWORD 6, byte 3, :ub, Total Block Count per thread
-
-#define fVIDEO_STEP_X r5.7 // DWORD 7. :f, AVS normalized reciprocal of X Scaling factor
-
-// r6
-#define fVIDEO_STEP_DELTA r6.0 // DWORD 0. :f, AVS normalized delta between 2 adjacent scaling steps (used for non-linear scaling)
-
-// mask is used for the last block (assume only M*1 and 1*N block partation aer supported)
-#define udBLOCK_MASK_2 r6.1 // DWORD 1
-#define uwBLOCK_MASK_H_RIGHT r6.2 // DWORD 1, byte 0-1 :uw, Block horizontal mask used in non-DWord aligned kernels (right)
-#define ubBLOCK_MASK_V_BOTTOM r6.6 // DWORD 1, byte 2 :ub, Block vertical mask used in non-DWord aligned kernels
-#define uwBLOCK_MASK_H_MIDDLE r6.4 // DWORD 2, byte 0-1 :uw, Block horizontal mask used in non-DWord aligned kernels (left)
-
-
-//====================== Binding table =========================================
-
-#if defined(DNDI)
- // DNDI Surface Binding Table
- //#define nBI_SRC_CURR 0 // Current input frame surface
- //#define nBI_SRC_PRIV 1 // Denoised previous input frame surface
- //#define nBI_SRC_STAT 2 // Statistics input surface (STMM / Noise motion history)
- //#define nBI_DEST_1ST 3 // 1st deinterlaced output frame surface
-// #define nBI_DEST_YUV 3 // Dest frame YUV (for DN only)
- //#define nBI_DEST_Y 3 // Dest frame Y (for DN only)
- //#define nBI_DEST_2ND 4 // 2nd deinterlaced output frame surface
- //#define nBI_DEST_DN_CURR 6 // Denoised current output frame surface
- //#define nBI_DEST_STAT 7 // Statistics output surface (STMM / Noise motion history)
-// #define nBI_DEST_U 8 // Dest frame U (for DN only)
-// #define nBI_DEST_V 9 // Dest frame V (for DN only)
-// #define nBI_SRC_U 10 // Src frame U (for DN only)
-// #define nBI_SRC_V 11 // Src frame V (for DN only)
-// #define nBI_SRC_UV 10 // Current src frame for UV
-
-#endif
-
-#if defined(INPUT_PL3)
- // PL3 Surface Binding Table
-// #define nBI_SRC_ALPHA 0 // Alpha
-// #define nBI_SRC_Y 1 // Current src frame
-// #define nBI_SRC_U 2 // Current src frame
-// #define nBI_SRC_V 3 // Current src frame
-// #define nBI_DEST_Y 10 // Dest frame
-// #define nBI_DEST_U 11 // Dest frame
-// #define nBI_DEST_V 12 // Dest frame
-// #define nBI_DEST_YUV 7 // Dest frame
-// #define nBI_DEST_RGB 7 // same num as BI_DEST_YUV, never used at the same time
-#endif
-
-#if defined(INPUT_PL2)
- // PL2 Surface Binding Table
-// #define nBI_SRC_ALPHA 0 // Alpha
-// #define nBI_SRC_Y 1 // Current src frame for Y + offseted UV
-// #define nBI_SRC_YUV 1 // Current src frame for YUV in case of NV12_AVS
-// #define nBI_SRC_UV 2 // Current src frame for UV
-// #define nBI_DEST_YUV 7 // Current dest frame for Y + offseted UV
-// #define nBI_DEST_RGB 7 // same num as BI_DEST_YUV, never used at the same time
-// #define nBI_DEST_Y 10 // Dest frame
-// #define nBI_DEST_U 11 // Dest frame
-// #define nBI_DEST_V 12 // Dest frame
-#endif
-
-#if defined(INPUT_PA) || defined(COLORFILL)
- // Packed Surface Binding Table
-// #define nBI_SRC_ALPHA 0 // Alpha
-// #define nBI_SRC_YUV 1 // Current src frame
-// #define nBI_DEST_YUV 3 // Dest frame
-// #define nBI_DEST_RGB 3 // same num as BI_DEST_YUV, never used at the same time
-#endif
-
-
-//supper binding table
-#define nBI_ALPHA_SRC 0
-#define nBI_CURRENT_SRC_YUV 1
-#define nBI_FIELD_COPY_SRC_1_YUV 1
-#define nBI_CURRENT_SRC_Y 1
-#define nBI_FIELD_COPY_SRC_1_Y 1
-#define nBI_CURRENT_SRC_RGB 1
-#define nBI_CURRENT_SRC_UV 2
-#define nBI_FIELD_COPY_SRC_1_UV 2
-#define nBI_CURRENT_SRC_U 2
-#define nBI_FIELD_COPY_SRC_1_U 2
-#define nBI_CURRENT_SRC_V 3
-#define nBI_FIELD_COPY_SRC_1_V 3
-#define nBI_TEMPORAL_REFERENCE_YUV 4
-#define nBI_FIELD_COPY_SRC_2_YUV 4
-#define nBI_TEMPORAL_REFERENCE_Y 4
-#define nBI_FIELD_COPY_SRC_2_Y 4
-#define nBI_CURRENT_SRC_YUV_HW_DI 4
-#define nBI_TEMPORAL_REFERENCE_UV 5
-#define nBI_FIELD_COPY_SRC_2_UV 5
-#define nBI_TEMPORAL_REFERENCE_U 5
-#define nBI_FIELD_COPY_SRC_2_U 5
-#define nBI_DENOISED_PREV_HW_DI 5
-#define nBI_TEMPORAL_REFERENCE_V 6
-#define nBI_FIELD_COPY_SRC_2_V 6
-#define nBI_STMM_HISTORY 6
-#define nBI_DESTINATION_YUV 7
-#define nBI_DESTINATION_RGB 7
-#define nBI_DESTINATION_Y 7
-#define nBI_DESTINATION_UV 8
-#define nBI_DESTINATION_U 8
-#define nBI_DESTINATION_V 9
-#define nBI_DESTINATION_1_YUV 10
-#define nBI_DESTINATION_1_Y 10
-#define nBI_DESTINATION_1_UV 11
-#define nBI_DESTINATION_1_U 11
-#define nBI_DESTINATION_1_V 12
-#define nBI_DESTINATION_2_YUV 13
-#define nBI_DESTINATION_2_Y 13
-#define nBI_DESTINATION_2_UV 14
-#define nBI_DESTINATION_2_U 14
-#define nBI_DESTINATION_2_V 15
-#define nBI_STMM_HISTORY_OUTPUT 20
-#define nBI_TEMPORAL_REFERENCE_YUV_PDI 21
-#define nBI_TEMPORAL_REFERENCE_Y_PDI 21
-#define nBI_TEMPORAL_REFERENCE_UV_PDI 22
-#define nBI_TEMPORAL_REFERENCE_U_PDI 22
-#define nBI_TEMPORAL_REFERENCE_V_PDI 23
-#define nBI_SUBVIDEO_YUV 26
-#define nBI_SUBVIDEO_Y 26
-#define nBI_SUBVIDEO_UV 27
-#define nBI_SUBVIDEO_U 27
-#define nBI_SUBVIDEO_V 28
-#define nBI_SUBPICTURE_YUV 29
-#define nBI_SUBPICTURE_P8 29
-#define nBI_SUBPICTURE_A8 30
-#define nBI_GRAPHIC_YUV 31
-#define nBI_GRAPHIC_P8 31
-#define nBI_GRAPHIC_A8 32
-
-
-
-//========== Planar Sampler State Table Index ==========
-#define nSI_SRC_ALPHA 0x000 // Sampler State for Alpha
-
-//Sampler Index for AVS/IEF messages
-#define nSI_SRC_Y 0x400 // Sampler State for Y
-#define nSI_SRC_U 0x800 // Sampler State for U
-#define nSI_SRC_V 0xC00 // Sampler State for V
-#define nSI_SRC_UV 0x800 // For NV12 surfaces
-#define nSI_SRC_YUV 0x400 // For Packed surfaces
-#define nSI_SRC_RGB 0x400 // For ARGB surfaces
-
-//Sampler Index for SIMD16 sampler messages
-#define nSI_SRC_SIMD16_Y 0x100 // Sampler State for Y
-#define nSI_SRC_SIMD16_U 0x200 // Sampler State for U
-#define nSI_SRC_SIMD16_V 0x300 // Sampler State for V
-#define nSI_SRC_SIMD16_UV 0x200 // For NV12 surfaces
-#define nSI_SRC_SIMD16_YUV 0x100 // For Packed surfaces
-#define nSI_SRC_SIMD16_RGB 0x100 // For ARGB surfaces
-
-
-
-// Common Registers
-#define pCF_Y_OFFSET a0.4 // Address register holding Y offset
-#define pCF_U_OFFSET a0.5 // Address register holding U offset
-#define pCF_V_OFFSET a0.6 // Address register holding V offset
-
-// #define YUV_ORI ORIX // Used by writing packed data to dport
-
-
-//================= Message Payload Header fields ==============================
-#define IDP r0.2:ud // Interface Descriptor Pointer
-
-//================= Common Message Descriptor TBD add common load and save =====
-// Message descriptor for dataport media write
-#ifdef GT
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 0 1010 (media block write) 00000
- // 00000000 (binding table index - set later)
- // = 0x02094000
- #define nDPMW_MSGDSC 0x02094000
- #define nDPMR_MSGDSC 0x02098000 // Data Port Media Block Read Message Descriptor
- // TBD
-#else // ILK
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 000 0 010 (media block write) 0000
- // 00000000 (binding table index - set later)
- // = 0x02082000
- #define nDPMW_MSGDSC 0x02082000 // Data Port Media Block Write Message Descriptor
- #define nDPMR_MSGDSC 0x0208A000 // Data Port Media Block Read Message Descriptor
-#endif
-
-// Message Length defines
-#define nMSGLEN_1 0x02000000 // Message Length of 1 GRF for Send
-#define nMSGLEN_2 0x04000000 // Message Length of 2 GRF for Send
-#define nMSGLEN_4 0x08000000 // Message Length of 4 GRF for Send
-#define nMSGLEN_8 0x10000000 // Message Length of 8 GRF for Send
-
-// Response Length defines
-#define nRESLEN_1 0x00100000 // Message Response Length of 1 GRF from Send
-#define nRESLEN_2 0x00200000 // Message Response Length of 2 GRF from Send
-#define nRESLEN_3 0x00300000 // Message Response Length of 3 GRF from Send
-#define nRESLEN_4 0x00400000 // Message Response Length of 4 GRF from Send
-#define nRESLEN_5 0x00500000 // Message Response Length of 5 GRF from Send
-#define nRESLEN_8 0x00800000 // Message Response Length of 8 GRF from Send
-#define nRESLEN_9 0x00900000 // Message Response Length of 9 GRF from Send
-#define nRESLEN_11 0x00B00000 // Message Response Length of 11 GRF from Send
-#define nRESLEN_12 0x00C00000 // Message Response Length of 12 GRF from Send
-#define nRESLEN_16 0x01000000 // Message Response Length of 16 GRF from Send
-
-// Block Width and Height Size defines
-#define nBLOCK_WIDTH_4 0x00000003 // Block Width 4
-#define nBLOCK_WIDTH_5 0x00000004 // Block Width 5
-#define nBLOCK_WIDTH_8 0x00000007 // Block Width 8
-#define nBLOCK_WIDTH_9 0x00000008 // Block Width 9
-#define nBLOCK_WIDTH_12 0x0000000B // Block Width 12
-#define nBLOCK_WIDTH_16 0x0000000F // Block Width 16
-#define nBLOCK_WIDTH_20 0x00000013 // Block Width 20
-#define nBLOCK_WIDTH_32 0x0000001F // Block Width 32
-#define nBLOCK_HEIGHT_1 0x00000000 // Block Height 1
-#define nBLOCK_HEIGHT_2 0x00010000 // Block Height 2
-#define nBLOCK_HEIGHT_4 0x00030000 // Block Height 4
-#define nBLOCK_HEIGHT_5 0x00040000 // Block Height 5
-#define nBLOCK_HEIGHT_8 0x00070000 // Block Height 8
-
-// Extended Message Descriptors
-#define nEXTENDED_MATH 0x1
-#define nSMPL_ENGINE 0x2
-#define nMESSAGE_GATEWAY 0x3
-#define nDATAPORT_READ 0x4
-#define nDATAPORT_WRITE 0x5
-#define nURB 0x6
-#define nTS_EOT 0x27 // with End-Of-Thread bit ON
-
-// Common message descriptors:
-#ifdef GT
- #define nEOT_MSGDSC 0x02000010 // End of Thread Message Descriptor
- #define IF_NULL null:uw null:uw null:uw //for different if instructions on ILK and Gen6
-#else //ILK
- #define nEOT_MSGDSC 0x02000000 // End of Thread Message Descriptor
- #define IF_NULL
-#endif
-
-
-//===================== Math Function Control ===================================
-#define mfcINV 0x1 // reciprocal
-#define mfcLOG 0x2 // log
-#define mfcEXP 0x3 // exponent
-#define mfcSQRT 0x4 // square root
-#define mfcRSQ 0x5 // reciprocal square root
-#define mfcSIN 0x6 // sine (in radians)
-#define mfcCOS 0x7 // cosine (in radians)
-#define mfcSINCOS 0x8 // dst0 = sin of src0, dst1 = cosine of src0 (in radians) - GT+ ONLY
-#define mfcPOW 0xA // abs(src0) raised to the src1 power
-#define mfcINT_DIV_QR 0xB // return quotient and remainder
-#define mfcINT_DIV_Q 0xC // return quotient
-#define mfcINT_DIV_R 0xD // return remainder
-
-
-//=================== Message related registers =================================
-
-#ifdef GT
- #define udDUMMY_NULL
-#else // _ILK
- #define udDUMMY_NULL null:ud // Used in send inst as src0
-#endif
-
-
-//----------- Message Registers ------------
-#define mMSGHDR m1 // Message Payload Header
-#define mMSGHDRY m1 // Message Payload Header register for Y data
-#define mMSGHDRU m2 // Message Payload Header register for U data
-#define mMSGHDRV m3 // Message Payload Header register for V data
-#define mMSGHDRYA m4 // Second Message Payload Header register for Y data
-#define mMSGHDRH m5 // Message Payload Header register for motion history
-#define mMSGHDRY1 m1 // Message Payload Header register for first Y data
-#define mMSGHDRY2 m2 // Message Payload Header register for second Y data
-#define mMSGHDRY3 m3 // Message Payload Header register for third Y data
-#define mMSGHDRY4 m4 // Message Payload Header register for fourth Y data
-#define mMSGHDRY5 m5 // Message Payload Header register for fifth Y data
-#define mMSGHDRY6 m6 // Message Payload Header register for sixth Y data
-#define mMSGHDR_EOT m15 // Dummy Message Register for EOT
-
-#define rMSGSRC r8 // Message source register
-#define pMSGDSC a0.0:ud // Message Descriptor register (type DWORD)
-
-#define udMH_ORI rMSGSRC.0 // Data Port Media Block R/W message header block offset
-#define udMH_ORIX rMSGSRC.0 // Data Port Media Block R/W message header X offset
-#define udMH_ORIY rMSGSRC.1 // Data Port Media Block R/W message header Y offset
-#define udMH_SIZE rMSGSRC.2 // Data Port Media Block R/W message header block width & height
-
-// M2 - M9 for message data payload
-.declare mubMSGPAYLOAD Base=m2 ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-.declare muwMSGPAYLOAD Base=m2 ElementSize=2 SrcRegion=REGION(16,1) Type=uw
-.declare mudMSGPAYLOAD Base=m2 ElementSize=4 SrcRegion=REGION(8,1) Type=ud
-.declare mfMSGPAYLOAD Base=m2 ElementSize=4 SrcRegion=REGION(8,1) Type=f
-
-//=================== End of thread instruction ===========================
-#ifdef GT
- #define END_THREAD mov (8) mMSGHDR_EOT<1>:ud r0.0<8;8,1>:ud \n\
- send (1) null<1>:d mMSGHDR_EOT nTS_EOT nEOT_MSGDSC
-#else // ILK This should be changed to 1 instruction; I have tested it and it works - vK
- #define END_THREAD mov (8) mMSGHDR_EOT<1>:ud r0.0<8;8,1>:ud \n\
- send (1) dNULLREG mMSGHDR_EOT udDUMMY_NULL nTS_EOT nEOT_MSGDSC:ud
-#endif
-
-
-//=======================================================================
-// Region declarations for SRC and DEST as TOP and BOT
-
-// Common I/O regions
-#define nREGION_1 1
-#define nREGION_2 2
-
-//*** These region base GRFs are fixed regardless planar/packed, and data alignment.
-//*** Each kernel is responsible to select the correct region declaration below.
-//*** YUV regions are not necessarily next to each other.
-#define nTOP_Y 10 // r10 - r17 (8 GRFs)
-#define nTOP_U 18 // r18 - r25 (8 GRFs)
-#define nTOP_V 26 // r26 - r33 (8 GRFs)
-
-#define nBOT_Y 56 // r56 - r63 (8 GRFs)
-#define nBOT_U 64 // r64 - r71 (8 GRFs)
-#define nBOT_V 72 // r72 - r79 (8 GRFs)
-
-// Define temp space for any usages
-#define nTEMP0 34
-#define nTEMP1 35
-#define nTEMP2 36
-#define nTEMP3 37
-#define nTEMP4 38
-#define nTEMP5 39
-#define nTEMP6 40
-#define nTEMP7 41
-#define nTEMP8 42
-#define nTEMP10 44
-#define nTEMP12 46
-#define nTEMP14 48
-#define nTEMP16 50
-#define nTEMP17 51
-#define nTEMP18 52
-
-#define nTEMP24 58
-
-// Common region 1
-.declare ubTOP_Y Base=REG(r,nTOP_Y) ElementSize=1 SrcRegion=REGION(16,1) DstRegion=<1> Type=ub
-.declare ubTOP_U Base=REG(r,nTOP_U) ElementSize=1 SrcRegion=REGION(8,1) DstRegion=<1> Type=ub
-.declare ubTOP_V Base=REG(r,nTOP_V) ElementSize=1 SrcRegion=REGION(8,1) DstRegion=<1> Type=ub
-
-.declare uwTOP_Y Base=REG(r,nTOP_Y) ElementSize=2 SrcRegion=REGION(16,1) DstRegion=<1> Type=uw
-.declare uwTOP_U Base=REG(r,nTOP_U) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
-.declare uwTOP_V Base=REG(r,nTOP_V) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
-.declare ub2TOP_Y Base=REG(r,nTOP_Y) ElementSize=1 SrcRegion=REGION(16,2) DstRegion=<1> Type=ub
-.declare ub2TOP_U Base=REG(r,nTOP_U) ElementSize=1 SrcRegion=REGION(8,2) DstRegion=<1> Type=ub
-.declare ub2TOP_V Base=REG(r,nTOP_V) ElementSize=1 SrcRegion=REGION(8,2) DstRegion=<1> Type=ub
-
-.declare ub4TOP_Y Base=REG(r,nTOP_Y) ElementSize=1 SrcRegion=REGION(8,4) Type=ub
-.declare ub4TOP_U Base=REG(r,nTOP_U) ElementSize=1 SrcRegion=REGION(8,4) Type=ub
-.declare ub4TOP_V Base=REG(r,nTOP_V) ElementSize=1 SrcRegion=REGION(8,4) Type=ub
-
-.declare ubTOP_ARGB Base=REG(r,nTOP_Y) ElementSize=1 SrcRegion=REGION(8,4) Type=ub
-
-// Used by "send" instruction
-.declare udTOP_Y_IO Base=REG(r,nTOP_Y) ElementSize=4 SrcRegion=REGION(8,1) Type=ud
-.declare udTOP_U_IO Base=REG(r,nTOP_U) ElementSize=4 SrcRegion=REGION(8,1) Type=ud
-.declare udTOP_V_IO Base=REG(r,nTOP_V) ElementSize=4 SrcRegion=REGION(8,1) Type=ud
-
-// Common region 2
-.declare ubBOT_Y Base=REG(r,nBOT_Y) ElementSize=1 SrcRegion=REGION(16,1) DstRegion=<1> Type=ub
-.declare ubBOT_U Base=REG(r,nBOT_U) ElementSize=1 SrcRegion=REGION(8,1) DstRegion=<1> Type=ub
-.declare ubBOT_V Base=REG(r,nBOT_V) ElementSize=1 SrcRegion=REGION(8,1) DstRegion=<1> Type=ub
-
-.declare uwBOT_Y Base=REG(r,nBOT_Y) ElementSize=2 SrcRegion=REGION(16,1) DstRegion=<1> Type=uw
-.declare uwBOT_U Base=REG(r,nBOT_U) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
-.declare uwBOT_V Base=REG(r,nBOT_V) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
-.declare ub2BOT_Y Base=REG(r,nBOT_Y) ElementSize=1 SrcRegion=REGION(16,2) DstRegion=<1> Type=ub
-.declare ub2BOT_U Base=REG(r,nBOT_U) ElementSize=1 SrcRegion=REGION(8,2) DstRegion=<1> Type=ub
-.declare ub2BOT_V Base=REG(r,nBOT_V) ElementSize=1 SrcRegion=REGION(8,2) DstRegion=<1> Type=ub
-
-.declare ubBOT_ARGB Base=REG(r,nBOT_Y) ElementSize=1 SrcRegion=REGION(8,4) Type=ub
-
-// Used by "send" instruction
-.declare udBOT_Y_IO Base=REG(r,nBOT_Y) ElementSize=4 SrcRegion=REGION(8,1) Type=ud
-.declare udBOT_U_IO Base=REG(r,nBOT_U) ElementSize=4 SrcRegion=REGION(8,1) Type=ud
-.declare udBOT_V_IO Base=REG(r,nBOT_V) ElementSize=4 SrcRegion=REGION(8,1) Type=ud
-
-// End of common.inc
-
-#endif // COMMON_INC
diff --git a/src/shaders/post_processing/gen5_6/Common/readSampler16x1.asm b/src/shaders/post_processing/gen5_6/Common/readSampler16x1.asm
deleted file mode 100644
index d6c308f..0000000
--- a/src/shaders/post_processing/gen5_6/Common/readSampler16x1.asm
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: readSampler16x1.asm
-//
-// Read one row of pix through sampler
-//
-
-
-
-//#define SAMPLER_MSG_DSC 0x166A0000 // ILK Sampler Message Descriptor
-
-
-
-// Send Message [DevILK] Message Descriptor
-// MBZ MsgL=5 MsgR=8 H MBZ SIMD MsgType SmplrIndx BindTab
-// 000 0 101 0 1000 1 0 10 0000 0000 00000000
-// 0 A 8 A 0 0 0 0
-
-// MsgL=1+2*2(u,v)=5 MsgR=8
-
-#define SAMPLER_MSG_DSC 0x0A8A0000 // ILK Sampler Message Descriptor
-
-
-
-
-
-
-
- // Assume MSGSRC is set already in the caller
- //mov (8) rMSGSRC.0<1>:ud 0:ud // Unused fileds
-
-
-
- // Read 16 sampled pixels and stored them in float32 in 8 GRFs
- // 422 data is expanded to 444, return 8 GRF in the order of RGB- (UYV-).
- // 420 data has three surfaces, return 8 GRF. Valid is always in the 1st GRF when in R8. Make sure no overwrite the following 3 GRFs.
- // alpha data is expanded to 4444, return 8 GRF in the order of RGBA (UYVA).
-
- mov(16) mMSGHDR<1>:uw rMSGSRC<16;16,1>:uw
- send (16) DATABUF(0)<1> mMSGHDR udDUMMY_NULL 0x2 SAMPLER_MSG_DSC+SAMPLER_IDX+BINDING_IDX:ud
-
-
-
-
-
-
-
diff --git a/src/shaders/post_processing/gen5_6/Common/undefall.inc b/src/shaders/post_processing/gen5_6/Common/undefall.inc
deleted file mode 100644
index e70595b..0000000
--- a/src/shaders/post_processing/gen5_6/Common/undefall.inc
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Modual name: undefall.inc
-//
-// undefine all global symbol for new process
-//
-
-//Source definitions
-#undef ubSRC_Y
-#undef ubSRC_U
-#undef ubSRC_V
-
-#undef ub2SRC_Y
-#undef ub2SRC_U
-#undef ub2SRC_V
-
-#undef ub4SRC_Y
-#undef ub4SRC_U
-#undef ub4SRC_V
-
-#undef uwSRC_Y
-#undef uwSRC_U
-#undef uwSRC_V
-
-#undef udSRC_Y
-#undef udSRC_U
-#undef udSRC_V
-
-#undef udSRC_YUV
-#undef nSRC_YUV_REG
-
-//Destination definitions
-#undef ubDEST_Y
-#undef ubDEST_U
-#undef ubDEST_V
-
-#undef ub2DEST_Y
-#undef ub2DEST_U
-#undef ub2DEST_V
-
-#undef ub4DEST_Y
-#undef ub4DEST_U
-#undef ub4DEST_V
-
-#undef uwDEST_Y
-#undef uwDEST_U
-#undef uwDEST_V
-
-#undef udDEST_Y
-#undef udDEST_U
-#undef udDEST_V
-
-#undef udDEST_YUV
-#undef nDEST_YUV_REG
-#undef ubDEST_ARGB
-
-// End of undefall.inc
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/AVS_IEF.inc b/src/shaders/post_processing/gen5_6/Core_Kernels/AVS_IEF.inc
deleted file mode 100644
index 49321f0..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/AVS_IEF.inc
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: AVS_IEF.inc
-
-#ifndef _AVS_INF_INC_
-#define _AVS_INF_INC_
-
-#include "undefall.inc" //Undefine the SRC and DEST sysmbols
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (V)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (U)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-#define mAVS_8x8_HDR m0 // Message Header
-#define mAVS_PAYLOAD m1 // Message Payload Header
-
-#define mAVS_8x8_HDR_2 m2 // Message Header
-#define mAVS_PAYLOAD_2 m3 // Message Payload Header
-
-#define mAVS_8x8_HDR_UV m2 // Message Header
-#define mAVS_PAYLOAD_UV m3 // Message Payload Header
-
-#define rAVS_8x8_HDR rMSGSRC // Mirror of Message Header
-#define rAVS_PAYLOAD r9 // Mirror of Message Payload Header
-
- // AVS payload
- // m1.7 Ignored
- // m1.6 Pixel 0 V Address ---> ORIY (Y0)
- // m1.5 Delta V ---> Step Y
- // m1.4 Ignored
- // m1.3 Ignored
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 U 2nd Derivative ---> NLAS dx
- // m1.0 Delta U ---> Step X
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel
- // 19 Header Present 1
- // 18 MBZ 0
- // 17:16 SIMD Mode 11 ---> SIMD64
- // 15:12 Message Type 0011 ---> sample_8x8
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-#define nAVS_MSG_DSC_1CH 0x044BB000
-#define nAVS_MSG_DSC_2CH 0x048BB000
-#define nAVS_MSG_DSC_3CH 0x04CBB000
-#define nAVS_MSG_DSC_4CH 0x050BB000
-
-#define nAVS_RED_CHANNEL_ONLY 0x0000E000 // Enable Red channel only
-#define nAVS_GREEN_CHANNEL_ONLY 0x0000D000 // Enable Green channel only
-#define nAVS_RED_BLUE_CHANNELS 0x0000A000 // Enable Red and Blue channels
-#define nAVS_RGB_CHANNELS 0x00008000 // Enable RGB(YUV) channels
-#define nAVS_ALL_CHANNELS 0x00000000 // Enable all channels (ARGB\AYUV)
-
-
-
-.declare ubAVS_RESPONSE Base=REG(r,nTEMP8) ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-.declare uwAVS_RESPONSE Base=REG(r,nTEMP8) ElementSize=2 SrcRegion=REGION(16,1) Type=uw
-
-.declare ubAVS_RESPONSE_2 Base=REG(r,nTEMP24) ElementSize=1 SrcRegion=REGION(16,1) Type=ub
-.declare uwAVS_RESPONSE_2 Base=REG(r,nTEMP24) ElementSize=2 SrcRegion=REGION(16,1) Type=uw
-
-
-#if (nSRC_REGION==nREGION_2)
- #define uwDEST_Y uwBOT_Y
- #define uwDEST_U uwBOT_U
- #define uwDEST_V uwBOT_V
-
- #define ubDEST_Y ubBOT_Y
-
- #undef nSRC_REGION
- #define nSRC_REGION nREGION_2
-
-#else //(nSRC_REGION==nREGION_1)
- #define uwDEST_Y uwTOP_Y
- #define uwDEST_U uwTOP_U
- #define uwDEST_V uwTOP_V
-
- #define ubDEST_Y ubTOP_Y
-
- #undef nSRC_REGION
- #define nSRC_REGION nREGION_1
-
-#endif
-
-
-#endif //_AVS_INF_INC_
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/AVS_SetupFirstBlock.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/AVS_SetupFirstBlock.asm
deleted file mode 100644
index f00b07c..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/AVS_SetupFirstBlock.asm
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//------------------------------------------------------------------------------
-// AVS_SetupFirstBlock.asm
-//------------------------------------------------------------------------------
-
- // Setup Message Header
-// mov (8) mAVS_8x8_HDR<1>:ud rMSGSRC<8;8,1>:ud
-
- // Check NLAS Enable bit
- and.z.f0.0 (1) wNULLREG uwNLAS_ENABLE:uw BIT15:uw
- (f0.0)mov (1) fVIDEO_STEP_DELTA:f 0.0:f
-
- // Setup Message Payload Header for 1st block of Media Sampler 8x8
- mov (1) rAVS_PAYLOAD.0:f fVIDEO_STEP_DELTA:f //NLAS dx
- mov (1) rAVS_PAYLOAD.1:f fVIDEO_STEP_X:f //Step X
- mov (1) rAVS_PAYLOAD.5:f fVIDEO_STEP_Y:f //Step Y
- mov (2) rAVS_PAYLOAD.2<4>:f fSRC_VID_H_ORI<2;2,1>:f //Orig X and Y
-
-
-
-
-
-
-
-
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/AVS_SetupSecondBlock.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/AVS_SetupSecondBlock.asm
deleted file mode 100644
index fb93ed1..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/AVS_SetupSecondBlock.asm
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//------------------------------------------------------------------------------
-// AVS_SetupSecondBlock.asm
-//------------------------------------------------------------------------------
-
- //NLAS calculations for 2nd block of Media Sampler 8x8:
- // X(i) = X0 + dx*i + ddx*i*(i-1)/2 ==> X(8) = X0 + dx*8 +ddx*28
- // dx(i)= dx(0) + ddx*i ==> dx(8)= dx + ddx*8
-
- // Calculating X(8)
- mov (1) acc0.2<1>:f fSRC_VID_H_ORI:f
- mac (1) acc0.2<1>:f fVIDEO_STEP_X:f 8.0:f
- mac (1) rAVS_PAYLOAD.2:f fVIDEO_STEP_DELTA:f 28.0:f
-
- // Calculating dx(8)
- mov (1) acc0.1<1>:f fVIDEO_STEP_X:f
- mac (1) rAVS_PAYLOAD.1:f fVIDEO_STEP_DELTA:f 8.0:f
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/DI.inc b/src/shaders/post_processing/gen5_6/Core_Kernels/DI.inc
deleted file mode 100644
index 5a02574..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/DI.inc
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: DI.inc
-
-#ifdef GT
-// GT DI Kernel
-#else // ILK
-// ILK DI Kernel
-#endif
-
-
-//---------------------------------------------------------------------------
-// Binding table indices
-//---------------------------------------------------------------------------
-#define nBIDX_DI_PRV 10 // Previous DI-ed frame
-#define nBIDX_DI_CUR 13 // Current DI-ed frame
-#define nBIDX_DN 7 // Denoised frame
-#define nBIDX_STAT 20 // Statistics
-#define nBIDX_DI_Source 4 // Source Surface
-
-
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
-#define nSMPL_ENGINE 0x2
-#define nDATAPORT_WRITE 0x5
-#define nTS_EOT 0x27 // with End-Of-Thread bit ON
-
- // Message descriptor for end-of-thread
- // = 000 0001 (message len) 00000 (resp len)
- // 0 (header present 0) 00000000000000 0 (URB dereferenced) 0000
-#define nEOT_MSGDSC 0x02000000
-
- // Message descriptor for sampler read
- // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
- // 1 (header present 1) 0 11 (SIMD32/64 mode)
- // 1000 (message type) 0000 (DI state index)
- // 00000000 (binding table index - set later)
- // = 0x040b8000
-
-// comment begin
-// The following is commented out because of walker feature
-// It corresponds to the #ifdef GT #else and #endif
-//#define nSMPL_MSGDSC 0x040b8000
-//#define nSMPL_RESP_LEN_DI 0x00c00000 // 12
-//#define nSMPL_RESP_LEN_NODI_PL 0x00500000 // 5
-//#define nSMPL_RESP_LEN_NODI_PA 0x00900000 // 9
-//#define nSMPL_RESP_LEN_NODN 0x00900000 // 9
-//#define nSMPL_RESP_LEN_PDI 0x00b00000 // 11
-// comment end
-
-#ifdef GT
-
-#define nSMPL_MSGDSC 0x040b8000
-#define nSMPL_RESP_LEN_DI 0x00c00000 // 12
-#define nSMPL_RESP_LEN_NODI_PL 0x00500000 // 5 //DI disable, the XY stored in 5th GRF, no impact to return length
-#define nSMPL_RESP_LEN_NODI_PA 0x00900000 // 9 //DI disable, the XY stored in 5th GRF, no impact to return length
-#define nSMPL_RESP_LEN_NODN 0x00a00000 // 10 //NO DN, originally use 9, now we need use 10 to store the XY with walker
-#define nSMPL_RESP_LEN_PDI 0x00b00000 // 11
-
-#else
-
-#define nSMPL_MSGDSC 0x040b8000
-#define nSMPL_RESP_LEN_DI 0x00c00000 // 12
-#define nSMPL_RESP_LEN_NODI_PL 0x00500000 // 5
-#define nSMPL_RESP_LEN_NODI_PA 0x00900000 // 9
-#define nSMPL_RESP_LEN_NODN 0x00900000 // 9
-#define nSMPL_RESP_LEN_PDI 0x00b00000 // 11
-
-#endif
-
- // Message descriptor for dataport media write
-#ifdef GT
- // = 000 0000 (message len - set later) 00000 (resp len 0)
- // 1 (header present 1) 0 0 1010 (media block write) 00000
- // 00000000 (binding table index - set later)
- // = 0x00094000
-#define nDPMW_MSGDSC 0x00094000
-#else // ILK
- // = 000 0000 (message len - set later) 00000 (resp len 0)
- // 1 (header present 1) 000 0 010 (media block write) 0000
- // 00000000 (binding table index - set later)
- // = 0x00082000
-#define nDPMW_MSGDSC 0x00082000
-#endif
-#define nDPMW_MSG_LEN_STMM 0x04000000 // 2 - STMM
-#define nDPMW_MSG_LEN_DH 0x04000000 // 2 - Denoise history
-#define nDPMW_MSG_LEN_PA_DN 0x0a000000 // 5 - Denoised output
-#define nDPMW_MSG_LEN_PA_NODI 0x12000000 // 9 - Denoised output - denoise only - DI disabled
-#define nDPMW_MSG_LEN_PL_DN 0x06000000 // 3 - Denoised output
-#define nDPMW_MSG_LEN_PL_NODI 0x0a000000 // 5 - Denoised output - denoise only - DI disabled
-#define nDPMW_MSG_LEN_DI 0x0a000000 // 5 - DI output
-
-
-//---------------------------------------------------------------------------
-// Static and inline parameters
-//---------------------------------------------------------------------------
-// Static parameters
-.declare ubTFLD_FIRST Base=r1.27 ElementSize=1 Type=ub // top field first
-.declare ubSRCYUVOFFSET Base=r1.4 ElementSize=1 Type=ub // source packed format
-.declare ubDSTYUVOFFSET Base=r1.8 ElementSize=1 Type=ub // destination packed format
-.declare uwSPITCH_DIV2 Base=r1.10 ElementSize=2 Type=uw // statistics surface pitch divided by 2
-
-// Inline parameters
-.declare uwXORIGIN Base=r5.0 ElementSize=2 Type=uw // X and Y origin
-.declare uwYORIGIN Base=r5.1 ElementSize=2 Type=uw
-
-
-//---------------------------------------------------------------------------
-// Kernel GRF variables
-//---------------------------------------------------------------------------
-// Message response (Denoised & DI-ed pixels & statistics)
-.declare dRESP Base=r8 ElementSize=4 Type=d // Response message (12 or 5 or 11)
-.declare ubRESP Base=r8 ElementSize=1 Type=ub
-
-.declare dSTMM Base=r16 ElementSize=4 Type=d // STMM
-.declare ubDN_HIST_NODI Base=r12 ElementSize=1 Type=ub // Denoise history data (DI disabled)
-.declare ubDN_HIST_DI Base=r17 ElementSize=1 Type=ub // Denoise history data (DI enabled)
-.declare uwRETURNED_POSITION_DI Base=r17 ElementSize=2 Type=uw // XY_Return_Data (DI enabled)
-.declare uwRETURNED_POSITION_DN Base=r12 ElementSize=2 Type=uw // XY_Return_Data (DI disabled)
-
-.declare ub1ST_FLD_DN Base=r12 ElementSize=1 Type=ub // 1st field Denoised data (DI enabled)
-.declare d1ST_FLD_DN Base=r12 ElementSize=4 Type=d
-.declare ub2ND_FLD_DN Base=r18 ElementSize=1 Type=ub // 2nd field Denoised data (DI enabled)
-.declare d2ND_FLD_DN Base=r18 ElementSize=4 Type=d
-.declare ubPRV_DI Base=r8 ElementSize=1 Type=ub // Previous frame DI (DI enabled)
-.declare ubCUR_DI Base=r12 ElementSize=1 Type=ub // Previous frame DI (DI enabled)
-
-// Packed denoised output
-.declare ubDN_YUV Base=r22 ElementSize=1 Type=ub // Denoised YUV422
-.declare dDN_YUV Base=r22 ElementSize=4 Type=d
-#define npDN_YUV 704 // = 22*32 = 0x280
-
-// Packed DI output
-.declare dDI_YUV_PRV Base=r32 ElementSize=4 Type=d // Previous frame DI output
-.declare dDI_YUV_CUR Base=r36 ElementSize=4 Type=d // Current frame DI output
-#define npDI_YUV 1024 // = 32*32 = 0x
-
-// For packed output
-#define p422_YOFFSET a0.2
-#define p422_UOFFSET a0.3
-#define p422_VOFFSET a0.4
-#define pDN_TFLDSRC a0.6
-#define pDN_BFLDSRC a0.7
-#define npRESP 192 // = 6*32
-
-// Message source
-.declare udMSGSRC Base=r70 ElementSize=4 Type=ud
-.declare uwMSGSRC Base=r70 ElementSize=2 Type=uw
-.declare dMSGSRC Base=r70 ElementSize=4 Type=d
-
-
-//---------------------------------------------------------------------------
-// Kernel MRF variables
-//---------------------------------------------------------------------------
-#define mMSGHDR_SMPL m1 // Sampler response: m1~m2
-.declare mudMSGHDR_SMPL Base=m1 ElementSize=4 Type=ud
-.declare muwMSGHDR_SMPL Base=m1 ElementSize=2 Type=uw
-#define mMSGHDR_DN m3 // Denoise output: m3~m7 for PA, m3~m5 for PL
-.declare mdMSGHDR_DN Base=m3 ElementSize=4 Type=d
-#define mMSGHDR_STAT m8 // Statistics output: m8~m9
-.declare mdMSGHDR_STAT Base=m8 ElementSize=4 Type=d
-.declare mubMSGHDR_STAT Base=m8 ElementSize=1 Type=ub
-#define mMSGHDR_DI m10 // DI output: m10~m14
-.declare mdMSGHDR_DI Base=m10 ElementSize=4 Type=d
-#define mMSGHDR_EOT m15 // EOT
-
-#ifdef GT
-#define MSGSRC
-#else
-#define MSGSRC null:ud
-#endif
-
-
-//---------------------------------------------------------------------------
-// End of thread instruction
-//---------------------------------------------------------------------------
-#ifdef GT
-#define END_THREAD send (8) null<1>:d mMSGHDR_EOT nTS_EOT nEOT_MSGDSC
-#else // ILK
-#define END_THREAD send (8) null<1>:d mMSGHDR_EOT null:ud nTS_EOT nEOT_MSGDSC
-#endif
-
-
-// end of DI.inc
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/DI_Hist_Save.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/DI_Hist_Save.asm
deleted file mode 100644
index 267971a..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/DI_Hist_Save.asm
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-
-// Write denoise history to memory
-shr (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w 2:w NODDCLR // X,Y origin / 4
-add (1) rMSGSRC.0<1>:ud rMSGSRC.0<0;1,0>:ud uwSPITCH_DIV2<0;1,0>:uw NODDCLR_NODDCHK // Add pitch to X origin
-mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_HIST:ud NODDCHK // block width and height (4x2)
-
-mov (8) mMSGHDR_HIST<1>:ud rMSGSRC.0<8;8,1>:ud // message header
-mov (1) mudMSGHDR_HIST(1)<1> udRESP(nDI_HIST_OFFSET,0)<0;1,0> // Move denoise history to MRF
-
-send (8) dNULLREG mMSGHDR_HIST udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_HIST+nBI_STMM_HISTORY_OUTPUT:ud
-
-
-
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/DI_SAVE_PA.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/DI_SAVE_PA.asm
deleted file mode 100644
index c9e1adf..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/DI_SAVE_PA.asm
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
- shl (1) rMSGSRC.0<1>:ud wORIX<0;1,0>:w 1:w NODDCLR // H. block origin need to be doubled
- mov (1) rMSGSRC.1<1>:ud wORIY<0;1,0>:w NODDCLR_NODDCHK // Block origin
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_DI:ud NODDCHK // Block width and height (32x8)
-
-
- add (4) pCF_Y_OFFSET<1>:uw ubDEST_CF_OFFSET<4;4,1>:ub nDEST_YUV_REG*nGRFWIB:w // Initial Y,U,V offset in YUV422 block
-
- // Pack 2nd field Y
- $for(0; <nY_NUM_OF_ROWS; 1) {
- mov (16) r[pCF_Y_OFFSET, %1*nGRFWIB]<2> ubRESP(nDI_PREV_FRAME_LUMA_OFFSET,%1*16)
- }
- // Pack 1st field Y
- $for(0; <nY_NUM_OF_ROWS; 1) {
- mov (16) r[pCF_Y_OFFSET, %1+4*nGRFWIB]<2> ubRESP(nDI_CURR_FRAME_LUMA_OFFSET,%1*16)
- }
- // Pack 2nd field U
- $for(0; <nUV_NUM_OF_ROWS; 1) {
- mov (8) r[pCF_U_OFFSET, %1*nGRFWIB]<4> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
- }
- // Pack 1st field U
- $for(0; <nUV_NUM_OF_ROWS; 1) {
- mov (8) r[pCF_U_OFFSET, %1+4*nGRFWIB]<4> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
- }
- // Pack 2nd field V
- $for(0; <nUV_NUM_OF_ROWS; 1) {
- mov (8) r[pCF_V_OFFSET, %1*nGRFWIB]<4> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //Vpixels
- }
- // Packs1st field V
- $for(0; <nUV_NUM_OF_ROWS; 1) {
- mov (8) r[pCF_V_OFFSET, %1+4*nGRFWIB]<4> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //Vpixels
- }
-
- //save the previous frame
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
- $for(0; <4; 1) {
- mov (8) mudMSGPAYLOAD(%1)<1> udDEST_YUV(%1)REGION(8,1)
- }
- send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_DI+nBI_DESTINATION_1_YUV:ud
-
- //save the current frame
- mov (8) mMSGHDR<1>:ud rMSGSRC<8;8,1>:ud
- $for(0; <4; 1) {
- mov (8) mudMSGPAYLOAD(%1)<1> udDEST_YUV(%1+4)REGION(8,1)
- }
- send (8) dNULLREG mMSGHDR udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPW_MSG_SIZE_DI+nBI_DESTINATION_2_YUV:ud
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/DNDI.inc b/src/shaders/post_processing/gen5_6/Core_Kernels/DNDI.inc
deleted file mode 100644
index ddf3847..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/DNDI.inc
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Module name: DI.inc
-
-#ifdef GT
-// GT DI Kernel
-#else // ILK
-// ILK DI Kernel
-#endif
-
-#include "undefall.inc"
-
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
- // Message descriptor for sampler read
-// // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
-// // 1 (header present 1) 0 11 (SIMD32/64 mode)
-// // 1000 (message type) 0000 (DI state index)
-// // 00000000 (binding table index - set later)
-// // = 0x040b8000
-#define nSMPL_DI_MSGDSC 0x040b8000
-
-#define nSMPL_RESP_LEN_DNDI nRESLEN_12 // 12 - for DN + DI Alg
-#define nSMPL_RESP_LEN_DN_PL nRESLEN_5 // 5 - for DN Planar Alg
-#define nSMPL_RESP_LEN_DN_PA nRESLEN_9 // 9 - for DN Packed Alg
-#define nSMPL_RESP_LEN_DI nRESLEN_9 // 9 - for DI Only Alg
-#define nSMPL_RESP_LEN_PDI nRESLEN_11 // 11 - for Partial DI Alg
-
-// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
-#define nDPMW_MSG_LEN_STMM nMSGLEN_1 // 1 - For STMM Save
-#define nDPMW_MSG_LEN_HIST nMSGLEN_1 // 1 - For Denoise History Save
-#define nDPMW_MSG_LEN_PA_DN_DI nMSGLEN_4 // 4 - For DN Curr Save
-#define nDPMW_MSG_LEN_PA_DN_NODI nMSGLEN_8 // 8 - For DN Curr Save (denoise only - DI disabled)
-#define nDPMW_MSG_LEN_PL_DN_DI nMSGLEN_2 // 2 - For DN Curr Save
-#define nDPMW_MSG_LEN_PL_DN_NODI nMSGLEN_4 // 4 - For DN Curr Save (denoise only - DI disabled)
-
-#define nDPW_BLOCK_SIZE_STMM nBLOCK_WIDTH_8+nBLOCK_HEIGHT_4 // Y block size 8x4
-
-#undef nDPW_BLOCK_SIZE_DI
-#undef nDPW_MSG_SIZE_DI
-#define nDPW_BLOCK_SIZE_DI nBLOCK_WIDTH_32+nBLOCK_HEIGHT_4
-#define nDPW_MSG_SIZE_DI nMSGLEN_4
-
-
-//---------------------------------------------------------------------------
-// Kernel GRF variables
-//---------------------------------------------------------------------------
-// Defines for DI enabled
-#define nDI_PREV_FRAME_LUMA_OFFSET 0
-#define nDI_PREV_FRAME_CHROMA_OFFSET 2
-#define nDI_CURR_FRAME_LUMA_OFFSET 4
-#define nDI_CURR_FRAME_CHROMA_OFFSET 6
-#define nDI_STMM_OFFSET 8
-#define nDI_HIST_OFFSET 9
-#define nDI_CURR_2ND_FIELD_LUMA_OFFSET 10
-#define nDI_CURR_2ND_FIELD_CHROMA_OFFSET 11
-
-// Defines for DI disabled
-#define nNODI_LUMA_OFFSET 0
-#define nNODI_HIST_OFFSET 4
-#define nNODI_CHROMA_OFFSET 5
-
-#ifdef DI_ENABLE
- #define nHIST_OFFSET nDI_HIST_OFFSET
- #undef nY_NUM_OF_ROWS
- #define nY_NUM_OF_ROWS 8 // Number of Y rows per block (4 rows for each frame)
- #undef nUV_NUM_OF_ROWS
- #define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
-
-#endif
-
-#ifdef DI_DISABLE
- #define nHIST_OFFSET nNODI_HIST_OFFSET
-#endif
-
-#if (nSRC_REGION==nREGION_2)
- #define ub2SRC_Y ub2BOT_Y
- #define ub2SRC_U ub2BOT_U
- #define ub2SRC_V ub2BOT_V
- #define uwDEST_Y uwBOT_Y
- #define uwDEST_U uwBOT_U
- #define uwDEST_V uwBOT_V
- #define nDEST_YUV_REG nTOP_Y
- #define udDEST_YUV udTOP_Y_IO
-
- #define nRESP nTEMP0 // DI return message requires 12 GRFs
- #define nDN_YUV nTOP_Y // Space for Packing DN for next run requires 8 GRFs
-
- #undef nSRC_REGION
- #define nSRC_REGION nREGION_2
-
-#else
- #define ub2SRC_Y ub2TOP_Y
- #define ub2SRC_U ub2TOP_U
- #define ub2SRC_V ub2TOP_V
- #define uwDEST_Y uwTOP_Y
- #define uwDEST_U uwTOP_U
- #define uwDEST_V uwTOP_V
- #define nDEST_YUV_REG nBOT_Y
- #define udDEST_YUV udBOT_Y_IO
- #define nRESP nTEMP0 // DI return message requires 12 GRFs
- #define nDN_YUV nBOT_Y // Space for Packing DN for next run requires 8 GRFs
-
- #undef nSRC_REGION
- #define nSRC_REGION nREGION_1 // REGION_1 will be the source region for first kernel
-
-#endif
-
-
-
-
-
-
-
-
-
-// Message response (Denoised & DI-ed pixels & statistics)
-.declare udRESP Base=REG(r,nRESP) ElementSize=4 SrcRegion=REGION(8,1) DstRegion=<1> Type=ud
-.declare ubRESP Base=REG(r,nRESP) ElementSize=1 SrcRegion=REGION(16,1) DstRegion=<1> Type=ub
-
-// For Denoised Curr Output (Used as Priv in Next Run)
-.declare ubDN_YUV Base=REG(r,nDN_YUV) ElementSize=1 Type=ub
-.declare udDN_YUV Base=REG(r,nDN_YUV) ElementSize=4 Type=ud
-#define npDN_YUV nDN_YUV*nGRFWIB
-
-// For DI Process Output (1st and 2nd Frames Output)
-//.declare udDI_YUV_PRIV Base=REG(r,nTEMP0) ElementSize=4 Type=ud // Previous frame DI output
-//.declare udDI_YUV_CURR Base=REG(r,nTEMP0) ElementSize=4 Type=ud // Current frame DI output
-//#define npDI_YUV nTEMP0*nGRFWIB
-
-//---------------------------------------------------------------------------
-// Kernel MRF variables
-//---------------------------------------------------------------------------
-#define mMSG_SMPL m1 // Sampler Command is in: m1~m2
-.declare mudMSG_SMPL Base=mMSG_SMPL ElementSize=4 Type=ud
-.declare muwMSG_SMPL Base=mMSG_SMPL ElementSize=2 Type=uw
-
-#define mMSGHDR_DN m1 // Denoise Output: m1~m9 for PA, m3~m5 for PL
-.declare mudMSGHDR_DN Base=mMSGHDR_DN ElementSize=4 Type=ud
-.declare mubMSGHDR_DN Base=mMSGHDR_DN ElementSize=1 Type=ub
-
-#define mMSGHDR_STMM m11 // STMM Output: m11~m12
-.declare mudMSGHDR_STMM Base=mMSGHDR_STMM ElementSize=4 Type=ud
-#define mMSGHDR_HIST m13 // HIST Output: m13~m14
-.declare mudMSGHDR_HIST Base=mMSGHDR_HIST ElementSize=1 Type=ud
-
-#define mMSGHDR_DI_1ST m1 // DI output: m1~m5
-.declare mudMSGHDR_DI_1ST Base=mMSGHDR_DI_1ST ElementSize=4 Type=ud
-#define mMSGHDR_DI_2ND m6 // DI output: m6~m10
-.declare mudMSGHDR_DI_2ND Base=mMSGHDR_DI_2ND ElementSize=4 Type=ud
-
-// end of DNDI.inc
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/DNDI_COMMAND.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/DNDI_COMMAND.asm
deleted file mode 100644
index 7fbb202..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/DNDI_COMMAND.asm
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// Activate the DNDI send command
-mov (8) mudMSG_SMPL(0)<1> rMSGSRC.0<8;8,1>:ud NODDCLR // message header
-mov (1) muwMSG_SMPL(1,4)<1> wORIX<0;1,0>:w NODDCLR_NODDCHK// horizontal origin
-mov (1) muwMSG_SMPL(1,12)<1> wORIY<0;1,0>:w NODDCLR_NODDCHK // vertical origin
-//mov (2) muwMSG_SMPL(1,4)<2> wORIX<2;2,1>:w NODDCHK// problem during compile !! when using this line
-
-send (8) udRESP(0)<1> mMSG_SMPL udDUMMY_NULL nSMPL_ENGINE nSMPL_DI_MSGDSC+nSMPL_RESP_LEN+nBI_CURRENT_SRC_YUV_HW_DI:ud
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/DNDI_Hist_Save.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/DNDI_Hist_Save.asm
deleted file mode 100644
index 84a4854..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/DNDI_Hist_Save.asm
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-
-// Write denoise history to memory
-shr (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w 2:w NODDCLR // X,Y origin / 4
-add (1) rMSGSRC.0<1>:ud rMSGSRC.0<0;1,0>:ud uwSPITCH_DIV2<0;1,0>:uw NODDCLR_NODDCHK// Add pitch to X origin
-mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_HIST:ud NODDCHK // block width and height (4x2)
-
-mov (8) mMSGHDR_HIST<1>:ud rMSGSRC.0<8;8,1>:ud // message header
-mov (2) mudMSGHDR_HIST(1)<1> udRESP(nNODI_HIST_OFFSET,0)<2;2,1> // Move denoise history to MRF
-
-send (8) dNULLREG mMSGHDR_HIST udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_HIST+nBI_STMM_HISTORY_OUTPUT:ud
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_16x8.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_16x8.asm
deleted file mode 100644
index 1f99402..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_16x8.asm
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PA_AVS_IEF_16x8.asm ----------
-
-#include "AVS_IEF.inc"
-
-//------------------------------------------------------------------------------
-// 2 sampler reads for 8x8 YUV packed
-//------------------------------------------------------------------------------
-#include "PA_AVS_IEF_Sample.asm"
-
-//------------------------------------------------------------------------------
-// Unpacking sampler reads to 4:4:4 internal planar
-//------------------------------------------------------------------------------
-#include "PA_AVS_IEF_Unpack_16x8.asm"
-
-//------------------------------------------------------------------------------
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_8x4.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_8x4.asm
deleted file mode 100644
index d18b281..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_8x4.asm
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PA_AVS_IEF_8x4.asm ----------
-
-#include "AVS_IEF.inc"
-
-//------------------------------------------------------------------------------
-// 2 sampler reads for 8x8 YUV packed
-//------------------------------------------------------------------------------
-#include "PA_AVS_IEF_Sample.asm"
-
-//------------------------------------------------------------------------------
-// Unpacking sampler data to 4:2:0 internal planar
-//------------------------------------------------------------------------------
-#include "PA_AVS_IEF_Unpack_8x4.asm"
-
-//------------------------------------------------------------------------------
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_8x8.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_8x8.asm
deleted file mode 100644
index cfa8ab1..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_8x8.asm
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PA_AVS_IEF_8x8.asm ----------
-
-#include "AVS_IEF.inc"
-
-//------------------------------------------------------------------------------
-// 2 sampler reads for 8x8 YUV packed
-//------------------------------------------------------------------------------
-#include "PA_AVS_IEF_Sample.asm"
-
-//------------------------------------------------------------------------------
-// Unpacking sampler data to 4:2:2 internal planar
-//------------------------------------------------------------------------------
-#include "PA_AVS_IEF_Unpack_8x8.asm"
-
-//------------------------------------------------------------------------------
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_Sample.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_Sample.asm
deleted file mode 100644
index 592be14..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_Sample.asm
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PA_AVS_IEF_Sample.asm ----------
-
-//------------------------------------------------------------------------------
-// 2 sampler reads for 8x8 YUV packed
-//------------------------------------------------------------------------------
-
- // 1st 8x8 setup
- #include "AVS_SetupFirstBlock.asm"
-
- // Enable RGB(YUV) channels
- mov (1) rAVS_8x8_HDR.2:ud nAVS_RGB_CHANNELS:ud
-
- mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_3CH+nSI_SRC_YUV+nBI_CURRENT_SRC_YUV
- // Return YUV in 12 GRFs
-
- // 2nd 8x8 setup
- #include "AVS_SetupSecondBlock.asm"
-
- mov (16) mAVS_8x8_HDR_2.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE_2(0)<1> mAVS_8x8_HDR_2 udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_3CH+nSI_SRC_YUV+nBI_CURRENT_SRC_YUV
- // Return YUV in 12 GRFs
-
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_Unpack_16x8.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_Unpack_16x8.asm
deleted file mode 100644
index df7878f..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_Unpack_16x8.asm
+++ /dev/null
@@ -1,318 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PA_AVS_IEF_Unpack_16x8.asm ----------
-
-#ifdef AVS_OUTPUT_16_BIT //Output is packed in AVYU format
-// Move first 8x8 words of Y to dest GRF (as packed)
- mov (4) uwDEST_Y(0,1)<4> uwAVS_RESPONSE(2,0)<4;4,1>
- mov (4) uwDEST_Y(1,1)<4> uwAVS_RESPONSE(2,8)<4;4,1>
- mov (4) uwDEST_Y(4,1)<4> uwAVS_RESPONSE(2,4)<4;4,1>
- mov (4) uwDEST_Y(5,1)<4> uwAVS_RESPONSE(2,12)<4;4,1>
- mov (4) uwDEST_Y(8,1)<4> uwAVS_RESPONSE(3,0)<4;4,1>
- mov (4) uwDEST_Y(9,1)<4> uwAVS_RESPONSE(3,8)<4;4,1>
- mov (4) uwDEST_Y(12,1)<4> uwAVS_RESPONSE(3,4)<4;4,1>
- mov (4) uwDEST_Y(13,1)<4> uwAVS_RESPONSE(3,12)<4;4,1>
- mov (4) uwDEST_Y(16,1)<4> uwAVS_RESPONSE(8,0)<4;4,1>
- mov (4) uwDEST_Y(17,1)<4> uwAVS_RESPONSE(8,8)<4;4,1>
- mov (4) uwDEST_Y(20,1)<4> uwAVS_RESPONSE(8,4)<4;4,1>
- mov (4) uwDEST_Y(21,1)<4> uwAVS_RESPONSE(8,12)<4;4,1>
- mov (4) uwDEST_Y(24,1)<4> uwAVS_RESPONSE(9,0)<4;4,1>
- mov (4) uwDEST_Y(25,1)<4> uwAVS_RESPONSE(9,8)<4;4,1>
- mov (4) uwDEST_Y(28,1)<4> uwAVS_RESPONSE(9,4)<4;4,1>
- mov (4) uwDEST_Y(29,1)<4> uwAVS_RESPONSE(9,12)<4;4,1>
-
-// Move first 8x8 words of U to dest GRF (as packed)
- mov (4) uwDEST_Y(0,0)<4> uwAVS_RESPONSE(4,0)<4;4,1>
- mov (4) uwDEST_Y(1,0)<4> uwAVS_RESPONSE(4,8)<4;4,1>
- mov (4) uwDEST_Y(4,0)<4> uwAVS_RESPONSE(4,4)<4;4,1>
- mov (4) uwDEST_Y(5,0)<4> uwAVS_RESPONSE(4,12)<4;4,1>
- mov (4) uwDEST_Y(8,0)<4> uwAVS_RESPONSE(5,0)<4;4,1>
- mov (4) uwDEST_Y(9,0)<4> uwAVS_RESPONSE(5,8)<4;4,1>
- mov (4) uwDEST_Y(12,0)<4> uwAVS_RESPONSE(5,4)<4;4,1>
- mov (4) uwDEST_Y(13,0)<4> uwAVS_RESPONSE(5,12)<4;4,1>
- mov (4) uwDEST_Y(16,0)<4> uwAVS_RESPONSE(10,0)<4;4,1>
- mov (4) uwDEST_Y(17,0)<4> uwAVS_RESPONSE(10,8)<4;4,1>
- mov (4) uwDEST_Y(20,0)<4> uwAVS_RESPONSE(10,4)<4;4,1>
- mov (4) uwDEST_Y(21,0)<4> uwAVS_RESPONSE(10,12)<4;4,1>
- mov (4) uwDEST_Y(24,0)<4> uwAVS_RESPONSE(11,0)<4;4,1>
- mov (4) uwDEST_Y(25,0)<4> uwAVS_RESPONSE(11,8)<4;4,1>
- mov (4) uwDEST_Y(28,0)<4> uwAVS_RESPONSE(11,4)<4;4,1>
- mov (4) uwDEST_Y(29,0)<4> uwAVS_RESPONSE(11,12)<4;4,1>
-
-// Move first 8x8 words of V to dest GRF (as packed)
- mov (4) uwDEST_Y(0,2)<4> uwAVS_RESPONSE(0,0)<4;4,1>
- mov (4) uwDEST_Y(1,2)<4> uwAVS_RESPONSE(0,8)<4;4,1>
- mov (4) uwDEST_Y(4,2)<4> uwAVS_RESPONSE(0,4)<4;4,1>
- mov (4) uwDEST_Y(5,2)<4> uwAVS_RESPONSE(0,12)<4;4,1>
- mov (4) uwDEST_Y(8,2)<4> uwAVS_RESPONSE(1,0)<4;4,1>
- mov (4) uwDEST_Y(9,2)<4> uwAVS_RESPONSE(1,8)<4;4,1>
- mov (4) uwDEST_Y(12,2)<4> uwAVS_RESPONSE(1,4)<4;4,1>
- mov (4) uwDEST_Y(13,2)<4> uwAVS_RESPONSE(1,12)<4;4,1>
- mov (4) uwDEST_Y(16,2)<4> uwAVS_RESPONSE(6,0)<4;4,1>
- mov (4) uwDEST_Y(17,2)<4> uwAVS_RESPONSE(6,8)<4;4,1>
- mov (4) uwDEST_Y(20,2)<4> uwAVS_RESPONSE(6,4)<4;4,1>
- mov (4) uwDEST_Y(21,2)<4> uwAVS_RESPONSE(6,12)<4;4,1>
- mov (4) uwDEST_Y(24,2)<4> uwAVS_RESPONSE(7,0)<4;4,1>
- mov (4) uwDEST_Y(25,2)<4> uwAVS_RESPONSE(7,8)<4;4,1>
- mov (4) uwDEST_Y(28,2)<4> uwAVS_RESPONSE(7,4)<4;4,1>
- mov (4) uwDEST_Y(29,2)<4> uwAVS_RESPONSE(7,12)<4;4,1>
-
-// Move first 8x8 words of A to dest GRF (as packed)
- mov (4) uwDEST_Y(0,3)<4> 0:uw
- mov (4) uwDEST_Y(1,3)<4> 0:uw
- mov (4) uwDEST_Y(4,3)<4> 0:uw
- mov (4) uwDEST_Y(5,3)<4> 0:uw
- mov (4) uwDEST_Y(8,3)<4> 0:uw
- mov (4) uwDEST_Y(9,3)<4> 0:uw
- mov (4) uwDEST_Y(12,3)<4> 0:uw
- mov (4) uwDEST_Y(13,3)<4> 0:uw
- mov (4) uwDEST_Y(16,3)<4> 0:uw
- mov (4) uwDEST_Y(17,3)<4> 0:uw
- mov (4) uwDEST_Y(20,3)<4> 0:uw
- mov (4) uwDEST_Y(21,3)<4> 0:uw
- mov (4) uwDEST_Y(24,3)<4> 0:uw
- mov (4) uwDEST_Y(25,3)<4> 0:uw
- mov (4) uwDEST_Y(28,3)<4> 0:uw
- mov (4) uwDEST_Y(29,3)<4> 0:uw
-
-// Move second 8x8 words of Y to dest GRF
- mov (4) uwDEST_Y(2,1)<4> uwAVS_RESPONSE_2(2,0)<4;4,1>
- mov (4) uwDEST_Y(3,1)<4> uwAVS_RESPONSE_2(2,8)<4;4,1>
- mov (4) uwDEST_Y(6,1)<4> uwAVS_RESPONSE_2(2,4)<4;4,1>
- mov (4) uwDEST_Y(7,1)<4> uwAVS_RESPONSE_2(2,12)<4;4,1>
- mov (4) uwDEST_Y(10,1)<4> uwAVS_RESPONSE_2(3,0)<4;4,1>
- mov (4) uwDEST_Y(11,1)<4> uwAVS_RESPONSE_2(3,8)<4;4,1>
- mov (4) uwDEST_Y(14,1)<4> uwAVS_RESPONSE_2(3,4)<4;4,1>
- mov (4) uwDEST_Y(15,1)<4> uwAVS_RESPONSE_2(3,12)<4;4,1>
- mov (4) uwDEST_Y(18,1)<4> uwAVS_RESPONSE_2(8,0)<4;4,1>
- mov (4) uwDEST_Y(19,1)<4> uwAVS_RESPONSE_2(8,8)<4;4,1>
- mov (4) uwDEST_Y(22,1)<4> uwAVS_RESPONSE_2(8,4)<4;4,1>
- mov (4) uwDEST_Y(23,1)<4> uwAVS_RESPONSE_2(8,12)<4;4,1>
- mov (4) uwDEST_Y(26,1)<4> uwAVS_RESPONSE_2(9,0)<4;4,1>
- mov (4) uwDEST_Y(27,1)<4> uwAVS_RESPONSE_2(9,8)<4;4,1>
- mov (4) uwDEST_Y(30,1)<4> uwAVS_RESPONSE_2(9,4)<4;4,1>
- mov (4) uwDEST_Y(31,1)<4> uwAVS_RESPONSE_2(9,12)<4;4,1>
-
-// Move second 8x8 words of U to dest GRF
- mov (4) uwDEST_Y(2,0)<4> uwAVS_RESPONSE_2(4,0)<4;4,1>
- mov (4) uwDEST_Y(3,0)<4> uwAVS_RESPONSE_2(4,8)<4;4,1>
- mov (4) uwDEST_Y(6,0)<4> uwAVS_RESPONSE_2(4,4)<4;4,1>
- mov (4) uwDEST_Y(7,0)<4> uwAVS_RESPONSE_2(4,12)<4;4,1>
- mov (4) uwDEST_Y(10,0)<4> uwAVS_RESPONSE_2(5,0)<4;4,1>
- mov (4) uwDEST_Y(11,0)<4> uwAVS_RESPONSE_2(5,8)<4;4,1>
- mov (4) uwDEST_Y(14,0)<4> uwAVS_RESPONSE_2(5,4)<4;4,1>
- mov (4) uwDEST_Y(15,0)<4> uwAVS_RESPONSE_2(5,12)<4;4,1>
- mov (4) uwDEST_Y(18,0)<4> uwAVS_RESPONSE_2(10,0)<4;4,1>
- mov (4) uwDEST_Y(19,0)<4> uwAVS_RESPONSE_2(10,8)<4;4,1>
- mov (4) uwDEST_Y(22,0)<4> uwAVS_RESPONSE_2(10,4)<4;4,1>
- mov (4) uwDEST_Y(23,0)<4> uwAVS_RESPONSE_2(10,12)<4;4,1>
- mov (4) uwDEST_Y(26,0)<4> uwAVS_RESPONSE_2(11,0)<4;4,1>
- mov (4) uwDEST_Y(27,0)<4> uwAVS_RESPONSE_2(11,8)<4;4,1>
- mov (4) uwDEST_Y(30,0)<4> uwAVS_RESPONSE_2(11,4)<4;4,1>
- mov (4) uwDEST_Y(31,0)<4> uwAVS_RESPONSE_2(11,12)<4;4,1>
-
-// Move second 8x8 words of V to dest GRF
- mov (4) uwDEST_Y(2,2)<4> uwAVS_RESPONSE_2(0,0)<4;4,1>
- mov (4) uwDEST_Y(3,2)<4> uwAVS_RESPONSE_2(0,8)<4;4,1>
- mov (4) uwDEST_Y(6,2)<4> uwAVS_RESPONSE_2(0,4)<4;4,1>
- mov (4) uwDEST_Y(7,2)<4> uwAVS_RESPONSE_2(0,12)<4;4,1>
- mov (4) uwDEST_Y(10,2)<4> uwAVS_RESPONSE_2(1,0)<4;4,1>
- mov (4) uwDEST_Y(11,2)<4> uwAVS_RESPONSE_2(1,8)<4;4,1>
- mov (4) uwDEST_Y(14,2)<4> uwAVS_RESPONSE_2(1,4)<4;4,1>
- mov (4) uwDEST_Y(15,2)<4> uwAVS_RESPONSE_2(1,12)<4;4,1>
- mov (4) uwDEST_Y(18,2)<4> uwAVS_RESPONSE_2(6,0)<4;4,1>
- mov (4) uwDEST_Y(19,2)<4> uwAVS_RESPONSE_2(6,8)<4;4,1>
- mov (4) uwDEST_Y(22,2)<4> uwAVS_RESPONSE_2(6,4)<4;4,1>
- mov (4) uwDEST_Y(23,2)<4> uwAVS_RESPONSE_2(6,12)<4;4,1>
- mov (4) uwDEST_Y(26,2)<4> uwAVS_RESPONSE_2(7,0)<4;4,1>
- mov (4) uwDEST_Y(27,2)<4> uwAVS_RESPONSE_2(7,8)<4;4,1>
- mov (4) uwDEST_Y(30,2)<4> uwAVS_RESPONSE_2(7,4)<4;4,1>
- mov (4) uwDEST_Y(31,2)<4> uwAVS_RESPONSE_2(7,12)<4;4,1>
-
-// Move second 8x8 words of A to dest GRF
- mov (4) uwDEST_Y(2,3)<4> 0:uw
- mov (4) uwDEST_Y(3,3)<4> 0:uw
- mov (4) uwDEST_Y(6,3)<4> 0:uw
- mov (4) uwDEST_Y(7,3)<4> 0:uw
- mov (4) uwDEST_Y(10,3)<4> 0:uw
- mov (4) uwDEST_Y(11,3)<4> 0:uw
- mov (4) uwDEST_Y(14,3)<4> 0:uw
- mov (4) uwDEST_Y(15,3)<4> 0:uw
- mov (4) uwDEST_Y(18,3)<4> 0:uw
- mov (4) uwDEST_Y(19,3)<4> 0:uw
- mov (4) uwDEST_Y(22,3)<4> 0:uw
- mov (4) uwDEST_Y(23,3)<4> 0:uw
- mov (4) uwDEST_Y(26,3)<4> 0:uw
- mov (4) uwDEST_Y(27,3)<4> 0:uw
- mov (4) uwDEST_Y(30,3)<4> 0:uw
- mov (4) uwDEST_Y(31,3)<4> 0:uw
-
-/* This section will be used if 16-bit output is needed in planar format -vK
- // Move first 8x8 words of Y to dest GRF
- mov (8) uwDEST_Y(0)<1> uwAVS_RESPONSE(2,0)<8;4,1>
- mov (8) uwDEST_Y(1)<1> uwAVS_RESPONSE(2,8)<8;4,1>
- mov (8) uwDEST_Y(2)<1> uwAVS_RESPONSE(3,0)<8;4,1>
- mov (8) uwDEST_Y(3)<1> uwAVS_RESPONSE(3,8)<8;4,1>
- mov (8) uwDEST_Y(4)<1> uwAVS_RESPONSE(8,0)<8;4,1>
- mov (8) uwDEST_Y(5)<1> uwAVS_RESPONSE(8,8)<8;4,1>
- mov (8) uwDEST_Y(6)<1> uwAVS_RESPONSE(9,0)<8;4,1>
- mov (8) uwDEST_Y(7)<1> uwAVS_RESPONSE(9,8)<8;4,1>
-
- // Move first 8x8 words of V to dest GRF
- mov (8) uwDEST_V(0)<1> ubAVS_RESPONSE(0,0)<8;4,1>
- mov (8) uwDEST_V(1)<1> ubAVS_RESPONSE(0,8)<8;4,1>
- mov (8) uwDEST_V(2)<1> ubAVS_RESPONSE(1,0)<8;4,1>
- mov (8) uwDEST_V(3)<1> ubAVS_RESPONSE(1,8)<8;4,1>
- mov (8) uwDEST_V(4)<1> ubAVS_RESPONSE(6,0)<8;4,1>
- mov (8) uwDEST_V(5)<1> ubAVS_RESPONSE(6,8)<8;4,1>
- mov (8) uwDEST_V(6)<1> ubAVS_RESPONSE(7,0)<8;4,1>
- mov (8) uwDEST_V(7)<1> ubAVS_RESPONSE(7,8)<8;4,1>
-
- // Move first 8x8 words of U to dest GRF
- mov (8) uwDEST_U(0)<1> ubAVS_RESPONSE(4,0)<8;4,1>
- mov (8) uwDEST_U(1)<1> ubAVS_RESPONSE(4,8)<8;4,1>
- mov (8) uwDEST_U(2)<1> ubAVS_RESPONSE(5,0)<8;4,1>
- mov (8) uwDEST_U(3)<1> ubAVS_RESPONSE(5,8)<8;4,1>
- mov (8) uwDEST_U(4)<1> ubAVS_RESPONSE(10,0)<8;4,1>
- mov (8) uwDEST_U(5)<1> ubAVS_RESPONSE(10,8)<8;4,1>
- mov (8) uwDEST_U(6)<1> ubAVS_RESPONSE(11,0)<8;4,1>
- mov (8) uwDEST_U(7)<1> ubAVS_RESPONSE(11,8)<8;4,1>
-
- // Move second 8x8 words of Y to dest GRF
- mov (8) uwDEST_Y(0,8)<1> uwAVS_RESPONSE_2(2,0)<8;4,1>
- mov (8) uwDEST_Y(1,8)<1> uwAVS_RESPONSE_2(2,8)<8;4,1>
- mov (8) uwDEST_Y(2,8)<1> uwAVS_RESPONSE_2(3,0)<8;4,1>
- mov (8) uwDEST_Y(3,8)<1> uwAVS_RESPONSE_2(3,8)<8;4,1>
- mov (8) uwDEST_Y(4,8)<1> uwAVS_RESPONSE_2(8,0)<8;4,1>
- mov (8) uwDEST_Y(5,8)<1> uwAVS_RESPONSE_2(8,8)<8;4,1>
- mov (8) uwDEST_Y(6,8)<1> uwAVS_RESPONSE_2(9,0)<8;4,1>
- mov (8) uwDEST_Y(7,8)<1> uwAVS_RESPONSE_2(9,8)<8;4,1>
-
- // Move second 8x8 words of V to dest GRF
- mov (8) uwDEST_V(0,8)<1> ubAVS_RESPONSE_2(0,0)<8;4,1>
- mov (8) uwDEST_V(1,8)<1> ubAVS_RESPONSE_2(0,8)<8;4,1>
- mov (8) uwDEST_V(2,8)<1> ubAVS_RESPONSE_2(1,0)<8;4,1>
- mov (8) uwDEST_V(3,8)<1> ubAVS_RESPONSE_2(1,8)<8;4,1>
- mov (8) uwDEST_V(4,8)<1> ubAVS_RESPONSE_2(6,0)<8;4,1>
- mov (8) uwDEST_V(5,8)<1> ubAVS_RESPONSE_2(6,8)<8;4,1>
- mov (8) uwDEST_V(6,8)<1> ubAVS_RESPONSE_2(7,0)<8;4,1>
- mov (8) uwDEST_V(7,8)<1> ubAVS_RESPONSE_2(7,8)<8;4,1>
-
- // Move second 8x8 words of U to dest GRF
- mov (8) uwDEST_U(0,8)<1> ubAVS_RESPONSE_2(4,0)<8;4,1>
- mov (8) uwDEST_U(1,8)<1> ubAVS_RESPONSE_2(4,8)<8;4,1>
- mov (8) uwDEST_U(2,8)<1> ubAVS_RESPONSE_2(5,0)<8;4,1>
- mov (8) uwDEST_U(3,8)<1> ubAVS_RESPONSE_2(5,8)<8;4,1>
- mov (8) uwDEST_U(4,8)<1> ubAVS_RESPONSE_2(10,0)<8;4,1>
- mov (8) uwDEST_U(5,8)<1> ubAVS_RESPONSE_2(10,8)<8;4,1>
- mov (8) uwDEST_U(6,8)<1> ubAVS_RESPONSE_2(11,0)<8;4,1>
- mov (8) uwDEST_U(7,8)<1> ubAVS_RESPONSE_2(11,8)<8;4,1>
-*/
-#else /* OUTPUT_8_BIT */
- // Move first 8x8 words of Y to dest GRF
- mov (8) uwDEST_Y(0)<1> ubAVS_RESPONSE(2,1)<16;4,2>
- mov (8) uwDEST_Y(1)<1> ubAVS_RESPONSE(2,8+1)<16;4,2>
- mov (8) uwDEST_Y(2)<1> ubAVS_RESPONSE(3,1)<16;4,2>
- mov (8) uwDEST_Y(3)<1> ubAVS_RESPONSE(3,8+1)<16;4,2>
- mov (8) uwDEST_Y(4)<1> ubAVS_RESPONSE(8,1)<16;4,2>
- mov (8) uwDEST_Y(5)<1> ubAVS_RESPONSE(8,8+1)<16;4,2>
- mov (8) uwDEST_Y(6)<1> ubAVS_RESPONSE(9,1)<16;4,2>
- mov (8) uwDEST_Y(7)<1> ubAVS_RESPONSE(9,8+1)<16;4,2>
-
- // Move first 8x8 words of V to dest GRF
- mov (8) uwDEST_V(0)<1> ubAVS_RESPONSE(0,1)<16;4,2>
- mov (8) uwDEST_V(1)<1> ubAVS_RESPONSE(0,8+1)<16;4,2>
- mov (8) uwDEST_V(2)<1> ubAVS_RESPONSE(1,1)<16;4,2>
- mov (8) uwDEST_V(3)<1> ubAVS_RESPONSE(1,8+1)<16;4,2>
- mov (8) uwDEST_V(4)<1> ubAVS_RESPONSE(6,1)<16;4,2>
- mov (8) uwDEST_V(5)<1> ubAVS_RESPONSE(6,8+1)<16;4,2>
- mov (8) uwDEST_V(6)<1> ubAVS_RESPONSE(7,1)<16;4,2>
- mov (8) uwDEST_V(7)<1> ubAVS_RESPONSE(7,8+1)<16;4,2>
-
- // Move first 8x8 words of U to dest GRF
- mov (8) uwDEST_U(0)<1> ubAVS_RESPONSE(4,1)<16;4,2>
- mov (8) uwDEST_U(1)<1> ubAVS_RESPONSE(4,8+1)<16;4,2>
- mov (8) uwDEST_U(2)<1> ubAVS_RESPONSE(5,1)<16;4,2>
- mov (8) uwDEST_U(3)<1> ubAVS_RESPONSE(5,8+1)<16;4,2>
- mov (8) uwDEST_U(4)<1> ubAVS_RESPONSE(10,1)<16;4,2>
- mov (8) uwDEST_U(5)<1> ubAVS_RESPONSE(10,8+1)<16;4,2>
- mov (8) uwDEST_U(6)<1> ubAVS_RESPONSE(11,1)<16;4,2>
- mov (8) uwDEST_U(7)<1> ubAVS_RESPONSE(11,8+1)<16;4,2>
-
- // Move second 8x8 words of Y to dest GRF
- mov (8) uwDEST_Y(0,8)<1> ubAVS_RESPONSE_2(2,1)<16;4,2>
- mov (8) uwDEST_Y(1,8)<1> ubAVS_RESPONSE_2(2,8+1)<16;4,2>
- mov (8) uwDEST_Y(2,8)<1> ubAVS_RESPONSE_2(3,1)<16;4,2>
- mov (8) uwDEST_Y(3,8)<1> ubAVS_RESPONSE_2(3,8+1)<16;4,2>
- mov (8) uwDEST_Y(4,8)<1> ubAVS_RESPONSE_2(8,1)<16;4,2>
- mov (8) uwDEST_Y(5,8)<1> ubAVS_RESPONSE_2(8,8+1)<16;4,2>
- mov (8) uwDEST_Y(6,8)<1> ubAVS_RESPONSE_2(9,1)<16;4,2>
- mov (8) uwDEST_Y(7,8)<1> ubAVS_RESPONSE_2(9,8+1)<16;4,2>
-
- // Move second 8x8 words of V to dest GRF
- mov (8) uwDEST_V(0,8)<1> ubAVS_RESPONSE_2(0,1)<16;4,2>
- mov (8) uwDEST_V(1,8)<1> ubAVS_RESPONSE_2(0,8+1)<16;4,2>
- mov (8) uwDEST_V(2,8)<1> ubAVS_RESPONSE_2(1,1)<16;4,2>
- mov (8) uwDEST_V(3,8)<1> ubAVS_RESPONSE_2(1,8+1)<16;4,2>
- mov (8) uwDEST_V(4,8)<1> ubAVS_RESPONSE_2(6,1)<16;4,2>
- mov (8) uwDEST_V(5,8)<1> ubAVS_RESPONSE_2(6,8+1)<16;4,2>
- mov (8) uwDEST_V(6,8)<1> ubAVS_RESPONSE_2(7,1)<16;4,2>
- mov (8) uwDEST_V(7,8)<1> ubAVS_RESPONSE_2(7,8+1)<16;4,2>
-
- // Move second 8x8 words of U to dest GRF
- mov (8) uwDEST_U(0,8)<1> ubAVS_RESPONSE_2(4,1)<16;4,2>
- mov (8) uwDEST_U(1,8)<1> ubAVS_RESPONSE_2(4,8+1)<16;4,2>
- mov (8) uwDEST_U(2,8)<1> ubAVS_RESPONSE_2(5,1)<16;4,2>
- mov (8) uwDEST_U(3,8)<1> ubAVS_RESPONSE_2(5,8+1)<16;4,2>
- mov (8) uwDEST_U(4,8)<1> ubAVS_RESPONSE_2(10,1)<16;4,2>
- mov (8) uwDEST_U(5,8)<1> ubAVS_RESPONSE_2(10,8+1)<16;4,2>
- mov (8) uwDEST_U(6,8)<1> ubAVS_RESPONSE_2(11,1)<16;4,2>
- mov (8) uwDEST_U(7,8)<1> ubAVS_RESPONSE_2(11,8+1)<16;4,2>
-#endif
-//------------------------------------------------------------------------------
-
- // Re-define new number of lines
- #undef nUV_NUM_OF_ROWS
- #undef nY_NUM_OF_ROWS
-
- #define nY_NUM_OF_ROWS 8
- #define nUV_NUM_OF_ROWS 8
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_Unpack_8x4.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_Unpack_8x4.asm
deleted file mode 100644
index 12fbe19..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_Unpack_8x4.asm
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PA_AVS_IEF_Unpack_8x8.asm ----------
-
-// Yoni: In order to optimize unpacking, 3 methods are being checked:
-// 1. AVS_ORIGINAL
-// 2. AVS_ROUND_TO_8_BITS
-// 3. AVS_INDIRECT_ACCESS
-//
-// Only 1 method should stay in the code
-
-
-//#define AVS_ROUND_TO_8_BITS
-//#define AVS_INDIRECT_ACCESS
-
-
- // Move first 8x8 words of Y to dest GRF
- mov (8) uwDEST_Y(0)<1> ubAVS_RESPONSE(2,1)<16;4,2>
- mov (8) uwDEST_Y(1)<1> ubAVS_RESPONSE(2,8+1)<16;4,2>
- mov (8) uwDEST_Y(2)<1> ubAVS_RESPONSE(3,1)<16;4,2>
- mov (8) uwDEST_Y(3)<1> ubAVS_RESPONSE(3,8+1)<16;4,2>
- mov (8) uwDEST_Y(4)<1> ubAVS_RESPONSE(8,1)<16;4,2>
- mov (8) uwDEST_Y(5)<1> ubAVS_RESPONSE(8,8+1)<16;4,2>
- mov (8) uwDEST_Y(6)<1> ubAVS_RESPONSE(9,1)<16;4,2>
- mov (8) uwDEST_Y(7)<1> ubAVS_RESPONSE(9,8+1)<16;4,2>
-
- // Move first 4x8 words of V to dest GRF
- mov (4) uwDEST_V(0)<1> ubAVS_RESPONSE(0,1)<16;2,4>
- mov (4) uwDEST_V(0,8)<1> ubAVS_RESPONSE(1,1)<16;2,4>
- mov (4) uwDEST_V(1)<1> ubAVS_RESPONSE(6,1)<16;2,4>
- mov (4) uwDEST_V(1,8)<1> ubAVS_RESPONSE(7,1)<16;2,4>
-
- // Move first 4x8 words of U to dest GRF
- mov (4) uwDEST_U(0)<1> ubAVS_RESPONSE(4,1)<16;2,4>
- mov (4) uwDEST_U(0,8)<1> ubAVS_RESPONSE(5,1)<16;2,4>
- mov (4) uwDEST_U(1)<1> ubAVS_RESPONSE(10,1)<16;2,4>
- mov (4) uwDEST_U(1,8)<1> ubAVS_RESPONSE(11,1)<16;2,4>
-
- // Move second 8x8 words of Y to dest GRF
- mov (8) uwDEST_Y(0,8)<1> ubAVS_RESPONSE_2(2,1)<16;4,2>
- mov (8) uwDEST_Y(1,8)<1> ubAVS_RESPONSE_2(2,8+1)<16;4,2>
- mov (8) uwDEST_Y(2,8)<1> ubAVS_RESPONSE_2(3,1)<16;4,2>
- mov (8) uwDEST_Y(3,8)<1> ubAVS_RESPONSE_2(3,8+1)<16;4,2>
- mov (8) uwDEST_Y(4,8)<1> ubAVS_RESPONSE_2(8,1)<16;4,2>
- mov (8) uwDEST_Y(5,8)<1> ubAVS_RESPONSE_2(8,8+1)<16;4,2>
- mov (8) uwDEST_Y(6,8)<1> ubAVS_RESPONSE_2(9,1)<16;4,2>
- mov (8) uwDEST_Y(7,8)<1> ubAVS_RESPONSE_2(9,8+1)<16;4,2>
-
- // Move second 4x8 words of V to dest GRF
- mov (4) uwDEST_V(0,4)<1> ubAVS_RESPONSE_2(0,1)<16;2,4>
- mov (4) uwDEST_V(0,12)<1> ubAVS_RESPONSE_2(1,1)<16;2,4>
- mov (4) uwDEST_V(1,4)<1> ubAVS_RESPONSE_2(6,1)<16;2,4>
- mov (4) uwDEST_V(1,12)<1> ubAVS_RESPONSE_2(7,1)<16;2,4>
-
- // Move second 4x8 words of U to dest GRF
- mov (4) uwDEST_U(0,4)<1> ubAVS_RESPONSE_2(4,1)<16;2,4>
- mov (4) uwDEST_U(0,12)<1> ubAVS_RESPONSE_2(5,1)<16;2,4>
- mov (4) uwDEST_U(1,4)<1> ubAVS_RESPONSE_2(10,1)<16;2,4>
- mov (4) uwDEST_U(1,12)<1> ubAVS_RESPONSE_2(11,1)<16;2,4>
-
-//------------------------------------------------------------------------------
-
- // Re-define new number of lines
- #undef nUV_NUM_OF_ROWS
- #undef nY_NUM_OF_ROWS
-
- #define nY_NUM_OF_ROWS 8
- #define nUV_NUM_OF_ROWS 8
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_Unpack_8x8.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_Unpack_8x8.asm
deleted file mode 100644
index 50cb94e..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PA_AVS_IEF_Unpack_8x8.asm
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PA_AVS_IEF_Unpack_8x8.asm ----------
-
-// Yoni: In order to optimize unpacking, 3 methods are being checked:
-// 1. AVS_ORIGINAL
-// 2. AVS_ROUND_TO_8_BITS
-// 3. AVS_INDIRECT_ACCESS
-//
-// Only 1 method should stay in the code
-
-
-//#define AVS_ROUND_TO_8_BITS
-//#define AVS_INDIRECT_ACCESS
-
-
- // Move first 8x8 words of Y to dest GRF
- mov (8) uwDEST_Y(0)<1> ubAVS_RESPONSE(2,1)<16;4,2>
- mov (8) uwDEST_Y(1)<1> ubAVS_RESPONSE(2,8+1)<16;4,2>
- mov (8) uwDEST_Y(2)<1> ubAVS_RESPONSE(3,1)<16;4,2>
- mov (8) uwDEST_Y(3)<1> ubAVS_RESPONSE(3,8+1)<16;4,2>
- mov (8) uwDEST_Y(4)<1> ubAVS_RESPONSE(8,1)<16;4,2>
- mov (8) uwDEST_Y(5)<1> ubAVS_RESPONSE(8,8+1)<16;4,2>
- mov (8) uwDEST_Y(6)<1> ubAVS_RESPONSE(9,1)<16;4,2>
- mov (8) uwDEST_Y(7)<1> ubAVS_RESPONSE(9,8+1)<16;4,2>
-
- // Move first 4x8 words of V to dest GRF
- mov (4) uwDEST_V(0)<1> ubAVS_RESPONSE(0,1)<16;2,4>
- mov (4) uwDEST_V(0,8)<1> ubAVS_RESPONSE(0,8+1)<16;2,4>
- mov (4) uwDEST_V(1)<1> ubAVS_RESPONSE(1,1)<16;2,4>
- mov (4) uwDEST_V(1,8)<1> ubAVS_RESPONSE(1,8+1)<16;2,4>
- mov (4) uwDEST_V(2)<1> ubAVS_RESPONSE(6,1)<16;2,4>
- mov (4) uwDEST_V(2,8)<1> ubAVS_RESPONSE(6,8+1)<16;2,4>
- mov (4) uwDEST_V(3)<1> ubAVS_RESPONSE(7,1)<16;2,4>
- mov (4) uwDEST_V(3,8)<1> ubAVS_RESPONSE(7,8+1)<16;2,4>
-
- // Move first 4x8 words of U to dest GRF
- mov (4) uwDEST_U(0)<1> ubAVS_RESPONSE(4,1)<16;2,4>
- mov (4) uwDEST_U(0,8)<1> ubAVS_RESPONSE(4,8+1)<16;2,4>
- mov (4) uwDEST_U(1)<1> ubAVS_RESPONSE(5,1)<16;2,4>
- mov (4) uwDEST_U(1,8)<1> ubAVS_RESPONSE(5,8+1)<16;2,4>
- mov (4) uwDEST_U(2)<1> ubAVS_RESPONSE(10,1)<16;2,4>
- mov (4) uwDEST_U(2,8)<1> ubAVS_RESPONSE(10,8+1)<16;2,4>
- mov (4) uwDEST_U(3)<1> ubAVS_RESPONSE(11,1)<16;2,4>
- mov (4) uwDEST_U(3,8)<1> ubAVS_RESPONSE(11,8+1)<16;2,4>
-
- // Move second 8x8 words of Y to dest GRF
- mov (8) uwDEST_Y(0,8)<1> ubAVS_RESPONSE_2(2,1)<16;4,2>
- mov (8) uwDEST_Y(1,8)<1> ubAVS_RESPONSE_2(2,8+1)<16;4,2>
- mov (8) uwDEST_Y(2,8)<1> ubAVS_RESPONSE_2(3,1)<16;4,2>
- mov (8) uwDEST_Y(3,8)<1> ubAVS_RESPONSE_2(3,8+1)<16;4,2>
- mov (8) uwDEST_Y(4,8)<1> ubAVS_RESPONSE_2(8,1)<16;4,2>
- mov (8) uwDEST_Y(5,8)<1> ubAVS_RESPONSE_2(8,8+1)<16;4,2>
- mov (8) uwDEST_Y(6,8)<1> ubAVS_RESPONSE_2(9,1)<16;4,2>
- mov (8) uwDEST_Y(7,8)<1> ubAVS_RESPONSE_2(9,8+1)<16;4,2>
-
- // Move second 4x8 words of V to dest GRF
- mov (4) uwDEST_V(0,4)<1> ubAVS_RESPONSE_2(0,1)<16;2,4>
- mov (4) uwDEST_V(0,12)<1> ubAVS_RESPONSE_2(0,8+1)<16;2,4>
- mov (4) uwDEST_V(1,4)<1> ubAVS_RESPONSE_2(1,1)<16;2,4>
- mov (4) uwDEST_V(1,12)<1> ubAVS_RESPONSE_2(1,8+1)<16;2,4>
- mov (4) uwDEST_V(2,4)<1> ubAVS_RESPONSE_2(6,1)<16;2,4>
- mov (4) uwDEST_V(2,12)<1> ubAVS_RESPONSE_2(6,8+1)<16;2,4>
- mov (4) uwDEST_V(3,4)<1> ubAVS_RESPONSE_2(7,1)<16;2,4>
- mov (4) uwDEST_V(3,12)<1> ubAVS_RESPONSE_2(7,8+1)<16;2,4>
-
- // Move second 4x8 words of U to dest GRF
- mov (4) uwDEST_U(0,4)<1> ubAVS_RESPONSE_2(4,1)<16;2,4>
- mov (4) uwDEST_U(0,12)<1> ubAVS_RESPONSE_2(4,8+1)<16;2,4>
- mov (4) uwDEST_U(1,4)<1> ubAVS_RESPONSE_2(5,1)<16;2,4>
- mov (4) uwDEST_U(1,12)<1> ubAVS_RESPONSE_2(5,8+1)<16;2,4>
- mov (4) uwDEST_U(2,4)<1> ubAVS_RESPONSE_2(10,1)<16;2,4>
- mov (4) uwDEST_U(2,12)<1> ubAVS_RESPONSE_2(10,8+1)<16;2,4>
- mov (4) uwDEST_U(3,4)<1> ubAVS_RESPONSE_2(11,1)<16;2,4>
- mov (4) uwDEST_U(3,12)<1> ubAVS_RESPONSE_2(11,8+1)<16;2,4>
-
-//------------------------------------------------------------------------------
-
- // Re-define new number of lines
- #undef nUV_NUM_OF_ROWS
- #undef nY_NUM_OF_ROWS
-
- #define nY_NUM_OF_ROWS 8
- #define nUV_NUM_OF_ROWS 8
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PA_DNDI_ALG.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PA_DNDI_ALG.asm
deleted file mode 100644
index 57aa368..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PA_DNDI_ALG.asm
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#define DI_ENABLE
-
- #include "DNDI.inc"
-
- #ifdef DI_ONLY
- #undef nSMPL_RESP_LEN
- #define nSMPL_RESP_LEN nSMPL_RESP_LEN_DI // set the number of GRF
- #else
- #undef nSMPL_RESP_LEN
- #define nSMPL_RESP_LEN nSMPL_RESP_LEN_DNDI // set the number of GRF
- #endif
-
- #undef nDPW_BLOCK_SIZE_HIST
- #define nDPW_BLOCK_SIZE_HIST nBLOCK_WIDTH_4+nBLOCK_HEIGHT_1 // HIST Block Size for Write is 4x2
- #undef nDPW_BLOCK_SIZE_DN
- #define nDPW_BLOCK_SIZE_DN nBLOCK_WIDTH_32+nBLOCK_HEIGHT_4 // DN Block Size for Write is 32x4
-
-////////////////////////////////////// Run the DN Algorithm ///////////////////////////////////////
- #include "DNDI_Command.asm"
-
-////////////////////////////////////// Rearrange for Internal Planar //////////////////////////////
- //// move the previous frame Y component to internal planar format
- //$for (0; <nY_NUM_OF_ROWS/2; 1) {
- // mov (16) uwDEST_Y(%1,0)<1> ubRESP(nDI_PREV_FRAME_LUMA_OFFSET,%1*16)
- //}
- //// move the previous frame U,V components to internal planar format
- //$for (0; <nUV_NUM_OF_ROWS/2; 1) {
- // mov (8) uwDEST_U(0,%1*8)<1> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
- // mov (8) uwDEST_V(0,%1*8)<1> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //V pixels
- //}
- //// move the current frame Y component to internal planar format
- //$for (0; <nY_NUM_OF_ROWS/2; 1) {
- // mov (16) uwDEST_Y(%1+4,0)<1> ubRESP(nDI_CURR_FRAME_LUMA_OFFSET,%1*16)
- //}
- //// move the current frame U,V components to internal planar format
- //$for (0; <nUV_NUM_OF_ROWS/2; 1) {
- // mov (8) uwDEST_U(2,%1*8)<1> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
- // mov (8) uwDEST_V(2,%1*8)<1> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //V pixels
- //}
-
-////////////////////////////////////// Save the STMM Data for Next Run /////////////////////////
- // Write STMM to memory
- shr (1) rMSGSRC.0<1>:ud wORIX<0;1,0>:w 1:w NODDCLR // X origin / 2
- mov (1) rMSGSRC.1<1>:ud wORIY<0;1,0>:w NODDCLR_NODDCHK // Y origin
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_STMM:ud NODDCHK // block width and height (8x4)
- mov (8) mudMSGHDR_STMM(0)<1> rMSGSRC.0<8;8,1>:ud // message header
- mov (8) mudMSGHDR_STMM(1)<1> udRESP(nDI_STMM_OFFSET,0) // Move STMM to MRF
- send (8) dNULLREG mMSGHDR_STMM udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_STMM+nBI_STMM_HISTORY_OUTPUT:ud
-
-////////////////////////////////////// Save the History Data for Next Run /////////////////////////
-#ifdef DI_ONLY
-#else
-
- #include "DI_Hist_Save.asm"
-
-////////////////////////////////////// Pack and Save the DN Curr Frame for Next Run ///////////////
- // check top/bottom field first
- cmp.e.f0.0 (1) null<1>:w ubTFLD_FIRST<0;1,0>:ub 1:w
-
- add (4) pCF_Y_OFFSET<1>:uw ubSRC_CF_OFFSET<4;4,1>:ub npDN_YUV:uw
- //set the save DN position
- shl (1) rMSGSRC.0<1>:ud wORIX<0;1,0>:w 1:w NODDCLR // X origin * 2
- mov (1) rMSGSRC.1<1>:ud wORIY<0;1,0>:w NODDCLR_NODDCHK // Y origin
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_DN:ud NODDCHK // block width and height (8x4)
- mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
-
-
- (f0.0) jmpi (1) TOP_FIELD_FIRST
-
-BOTTOM_FIELD_FIRST:
- //$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
- // mov (16) r[pCF_Y_OFFSET, %1*32]<2>:ub ubRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*16) // 2nd field luma from current frame (line 0,2)
- // mov (16) r[pCF_Y_OFFSET, %1+1*32]<2>:ub ubRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,16) // 1st field luma from current frame (line 1,3)
- // mov (8) r[pCF_U_OFFSET, %1*32]<4>:ub ubRESP(nDI_CURR_2ND_FIELD_CHROMA_OFFSET,%2*16+1)<16;8,2> // 2nd field U from current frame (line 0,2)
- // mov (8) r[pCF_V_OFFSET, %1*32]<4>:ub ubRESP(nDI_CURR_2ND_FIELD_CHROMA_OFFSET,%2*16)<16;8,2> // 2nd field V from current frame (line 0,2)
- // mov (8) r[pCF_U_OFFSET, %1+1*32]<4>:ub ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET+%2,16+1)<16;8,2> // 1st field U from current frame (line 1,3)
- // mov (8) r[pCF_V_OFFSET, %1+1*32]<4>:ub ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET+%2,16)<16;8,2> // 1st field U from current frame (line 1,3)
- //}
- $for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
- mov (16) r[pCF_Y_OFFSET, %1*32]<2>:ub ubRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*16) // 2nd field luma from current frame (line 0,2)
- mov (16) r[pCF_Y_OFFSET, %1+1*32]<2>:ub ubRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,16) // 1st field luma from current frame (line 1,3)
- }
-
- $for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
- mov (8) r[pCF_U_OFFSET, %1*32]<4>:ub ubRESP(nDI_CURR_2ND_FIELD_CHROMA_OFFSET,%2*16+1)<16;8,2> // 2nd field U from current frame (line 0,2)
- mov (8) r[pCF_U_OFFSET, %1+1*32]<4>:ub ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET+%2,16+1)<16;8,2> // 1st field U from current frame (line 1,3)
- }
-
- $for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
- mov (8) r[pCF_V_OFFSET, %1*32]<4>:ub ubRESP(nDI_CURR_2ND_FIELD_CHROMA_OFFSET,%2*16)<16;8,2> // 2nd field V from current frame (line 0,2)
- mov (8) r[pCF_V_OFFSET, %1+1*32]<4>:ub ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET+%2,16)<16;8,2> // 1st field U from current frame (line 1,3)
- }
-
- jmpi (1) SAVE_DN_CURR
-
-TOP_FIELD_FIRST:
- //$for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
- // mov (16) r[pCF_Y_OFFSET, %1*32]<2>:ub ubRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,0) // 1st field luma from current frame (line 0,2)
- // mov (16) r[pCF_Y_OFFSET, %1+1*32]<2>:ub ubRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*16) // 2nd field luma from current frame (line 1,3)
- // mov (8) r[pCF_U_OFFSET, %1*32]<4>:ub ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET+%2,1)<16;8,2> // 1st field U from current frame (line 0,2)
- // mov (8) r[pCF_V_OFFSET, %1*32]<4>:ub ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET+%2,0)<16;8,2> // 1st field V from current frame (line 0,2)
- // mov (8) r[pCF_U_OFFSET, %1+1*32]<4>:ub ubRESP(nDI_CURR_2ND_FIELD_CHROMA_OFFSET,%2*16+1)<16;8,2> // 2nd field U from current frame (line 1,3)
- // mov (8) r[pCF_V_OFFSET, %1+1*32]<4>:ub ubRESP(nDI_CURR_2ND_FIELD_CHROMA_OFFSET,%2*16)<16;8,2> // 2nd field V from current frame (line 1,3)
- //}
- $for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
- mov (16) r[pCF_Y_OFFSET, %1*32]<2>:ub ubRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,0) // 1st field luma from current frame (line 0,2)
- mov (16) r[pCF_Y_OFFSET, %1+1*32]<2>:ub ubRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*16) // 2nd field luma from current frame (line 1,3)
- }
- $for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
- mov (8) r[pCF_U_OFFSET, %1*32]<4>:ub ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET+%2,1)<16;8,2> // 1st field U from current frame (line 0,2)
- mov (8) r[pCF_U_OFFSET, %1+1*32]<4>:ub ubRESP(nDI_CURR_2ND_FIELD_CHROMA_OFFSET,%2*16+1)<16;8,2> // 2nd field U from current frame (line 1,3)
- }
- $for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
- mov (8) r[pCF_V_OFFSET, %1*32]<4>:ub ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET+%2,0)<16;8,2> // 1st field V from current frame (line 0,2)
- mov (8) r[pCF_V_OFFSET, %1+1*32]<4>:ub ubRESP(nDI_CURR_2ND_FIELD_CHROMA_OFFSET,%2*16)<16;8,2> // 2nd field V from current frame (line 1,3)
- }
-
-SAVE_DN_CURR:
- $for(0; <nY_NUM_OF_ROWS/2; 1) {
- mov (8) mudMSGHDR_DN(%1+1)<1> udDN_YUV(%1)REGION(8,1)
- }
- send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_PA_DN_DI+nBI_DESTINATION_YUV:ud
-#endif
-
-// Save Processed frames
-#include "DI_Save_PA.asm"
-
-
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PA_DN_ALG.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PA_DN_ALG.asm
deleted file mode 100644
index 68c0d38..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PA_DN_ALG.asm
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#define DI_DISABLE
-
-#include "DNDI.inc"
-
-#undef nY_NUM_OF_ROWS
-#define nY_NUM_OF_ROWS 8 // Number of Y rows per block
-#undef nUV_NUM_OF_ROWS
-#define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
-
-#undef nSMPL_RESP_LEN
-#define nSMPL_RESP_LEN nSMPL_RESP_LEN_DN_PA // Set the Number of GRFs in DNDI response
-#undef nDPW_BLOCK_SIZE_DN
-#define nDPW_BLOCK_SIZE_DN nBLOCK_WIDTH_32+nBLOCK_HEIGHT_8 // DN Curr Block Size for Write is 32x8
-#undef nDPW_BLOCK_SIZE_HIST
-#define nDPW_BLOCK_SIZE_HIST nBLOCK_WIDTH_4+nBLOCK_HEIGHT_2 // HIST Block Size for Write is 4x2
-
-////////////////////////////////////// Run the DN Algorithm ///////////////////////////////////////
-#include "DNDI_COMMAND.asm"
-
-////////////////////////////////////// Save the History Data for Next Run /////////////////////////
-#include "DNDI_Hist_Save.asm"
-
-////////////////////////////////////// Pack and Save the DN Curr Frame for Next Run ///////////////
-add (4) pCF_Y_OFFSET<1>:uw ubDEST_CF_OFFSET<4;4,1>:ub npDN_YUV:w
-$for (0; <nY_NUM_OF_ROWS; 1) {
- mov (16) r[pCF_Y_OFFSET, %1*32]<2>:ub ubRESP(nNODI_LUMA_OFFSET,%1*16)<16;16,1> // copy line of Y
-}
-$for (0; <nUV_NUM_OF_ROWS; 1) {
- mov (8) r[pCF_U_OFFSET, %1*32]<4>:ub ubRESP(nNODI_CHROMA_OFFSET,%1*16+1)<16;8,2> // copy line of U
- mov (8) r[pCF_V_OFFSET, %1*32]<4>:ub ubRESP(nNODI_CHROMA_OFFSET,%1*16)<16;8,2> // copy line of V
-}
-
-shl (1) rMSGSRC.0<1>:ud wORIX<0;1,0>:w 1:w // X origin * 2 (422 output)
-mov (1) rMSGSRC.1<1>:ud wORIY<0;1,0>:w // Y origin
-mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_DN:ud // block width and height (32x8)
-mov (8) mMSGHDR_DN<1>:ud rMSGSRC<8;8,1>:ud // message header
-
-$for(0; <nY_NUM_OF_ROWS; 2) {
- mov (16) mudMSGHDR_DN(1+%1)<1> udDN_YUV(%1)REGION(8,1) // Move DN Curr to MRF
-}
-send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_PA_DN_NODI+nBI_DESTINATION_YUV:ud
-
-
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PA_Scaling.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PA_Scaling.asm
deleted file mode 100644
index c87f6c0..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PA_Scaling.asm
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PA_Scaling.asm ----------
-#include "Scaling.inc"
-
- // Build 16 elements ramp in float32 and normalized it
-// mov (8) SAMPLER_RAMP(0)<1> 0x76543210:v
-// add (8) SAMPLER_RAMP(1)<1> SAMPLER_RAMP(0) 8.0:f
-mov (4) SAMPLER_RAMP(0)<1> 0x48403000:vf //3, 2, 1, 0 in float vector
-mov (4) SAMPLER_RAMP(0,4)<1> 0x5C585450:vf //7, 6, 5, 4 in float vector
-add (8) SAMPLER_RAMP(1)<1> SAMPLER_RAMP(0) 8.0:f
-
-//Module: PrepareScaleCoord.asm
-
- // Setup for sampler msg hdr
- mov (2) rMSGSRC.0<1>:ud 0:ud { NoDDClr } // Unused fields
- mov (1) rMSGSRC.2<1>:ud 0:ud { NoDDChk } // Write and offset
-
- // Calculate 16 v based on the step Y and vertical origin
- mov (16) mfMSGPAYLOAD(2)<1> fSRC_VID_V_ORI<0;1,0>:f
- mov (16) SCALE_COORD_Y<1>:f fSRC_VID_V_ORI<0;1,0>:f
-
- // Calculate 16 u based on the step X and hori origin
-// line (16) mfMSGPAYLOAD(0)<1> SCALE_STEP_X<0;1,0>:f SAMPLER_RAMP(0) // Assign to mrf directly
- mov (16) acc0:f fSRC_VID_H_ORI<0;1,0>:f { Compr }
- mac (16) mfMSGPAYLOAD(0)<1> fVIDEO_STEP_X<0;1,0>:f SAMPLER_RAMP(0) { Compr }
-
- //Setup the constants for line instruction
- mov (1) SCALE_LINE_P255<1>:f 255.0:f { NoDDClr } //{ NoDDClr, NoDDChk }
- mov (1) SCALE_LINE_P0_5<1>:f 0.5:f { NoDDChk }
-
-//------------------------------------------------------------------------------
-
-$for (0; <nY_NUM_OF_ROWS; 1) {
-
- // Read 16 sampled pixels and store them in float32 in 8 GRFs in the order of BGRA (VYUA).
- mov (8) MSGHDR_SCALE.0:ud rMSGSRC.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (16) SCALE_RESPONSE_YW(0)<1> MSGHDR_SCALE udDUMMY_NULL nSMPL_ENGINE SMPLR_MSG_DSC+nSI_SRC_SIMD16_YUV+nBI_CURRENT_SRC_YUV
-
- // Calculate 16 v for next line
- add (16) mfMSGPAYLOAD(2)<1> SCALE_COORD_Y<8;8,1>:f fVIDEO_STEP_Y<0;1,0>:f // Assign to mrf directly
- add (16) SCALE_COORD_Y<1>:f SCALE_COORD_Y<8;8,1>:f fVIDEO_STEP_Y<0;1,0>:f // Assign to mrf directly
-
- // Scale back to [0, 255], convert f to ud
- line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_YF(0) { Compr } // Process B, V
- mov (16) SCALE_RESPONSE_YD(0)<1> acc0:f { Compr }
-
- line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_YF(2) { Compr } // Process B, V
- mov (16) SCALE_RESPONSE_YD(2)<1> acc0:f { Compr }
-
- line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_YF(4) { Compr } // Process B, V
- mov (16) SCALE_RESPONSE_YD(4)<1> acc0:f { Compr }
-
- mov (16) DEST_V(%1)<1> SCALE_RESPONSE_YB(0) //possible error due to truncation - vK
- mov (16) DEST_Y(%1)<1> SCALE_RESPONSE_YB(2) //possible error due to truncation - vK
- mov (16) DEST_U(%1)<1> SCALE_RESPONSE_YB(4) //possible error due to truncation - vK
-
-}
-
- #define nSRC_REGION nREGION_1
-
-//------------------------------------------------------------------------------
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_16x8.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_16x8.asm
deleted file mode 100644
index 3c7f6e9..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_16x8.asm
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PL2_AVS_IEF_16x8.asm ----------
-
-#include "AVS_IEF.inc"
-
-//------------------------------------------------------------------------------
-// 2 sampler reads for 8x8 Y each
-// 2 sampler read for 8x8 U and 8x8 V (NV11\P208 input surface)
-//------------------------------------------------------------------------------
-
- // 1st 8x8 setup
- #include "AVS_SetupFirstBlock.asm"
-
- // Enable green channel only
- mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud
-
- mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
- // Return Y in 4 GRFs
-
- // 8x8 U and V sampling
- // Enable red and blue channels
- mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_BLUE_CHANNELS:ud
-
- mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE(4)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_2CH+nSI_SRC_UV+nBI_CURRENT_SRC_UV
- // Return U and V in 8 GRFs
-
- // 2nd 8x8 setup
- #include "AVS_SetupSecondBlock.asm"
-
- // 2nd 8x8 Y sampling
- // Enable green channel only
- mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud
-
- mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE_2(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
-
- // 2nd 8x8 U and V sampling
- // Enable red and blue channels
- mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_BLUE_CHANNELS:ud
-
- mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE_2(4)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_2CH+nSI_SRC_UV+nBI_CURRENT_SRC_UV
- // Return U and V in 8 GRFs
-
-//------------------------------------------------------------------------------
-// Unpacking sampler reads to 4:4:4 internal planar
-//------------------------------------------------------------------------------
- #include "PL2_AVS_IEF_Unpack_16x8.asm"
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_8x4.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_8x4.asm
deleted file mode 100644
index 04361d4..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_8x4.asm
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PL2_AVS_IEF_8x4.asm ----------
-
-#include "AVS_IEF.inc"
-
-//------------------------------------------------------------------------------
-// 2 sampler reads for 8x8 Y each
-// 1 sampler read for 8x8 U and 8x8 V (NV11\NV12 input surface)
-//------------------------------------------------------------------------------
-
- // 1st 8x8 setup
- #include "AVS_SetupFirstBlock.asm"
-
- // Enable green channel only
- mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud
-
- mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
- // Return Y in 4 GRFs
-
- // 8x8 U and V sampling
- // Enable red and blue channels
- //Only 8x4 wil be used
- mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_BLUE_CHANNELS:ud
-
- // Calculate Chroma Step Size:
- // for H direction: 16 Luma samples are covered by 8 Chroma samples. Thus Chroma_Step_X = 2 * Luma_Step_X
- // for V direction: 8 Luma samples are covered by 8 Chroma samples. Thus Chroma_Step_Y = Luma_Step_Y
- mul (1) rAVS_PAYLOAD.1:f fVIDEO_STEP_X:f 2.0:f // Step X for chroma
-
- mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE(4)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_2CH+nSI_SRC_UV+nBI_CURRENT_SRC_UV
- // Return U and V in 8 GRFs
-
- // 2nd 8x8 setup
- #include "AVS_SetupSecondBlock.asm"
-
- // 2nd 8x8 Y sampling
- // Enable green channel only
- mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud
-
- mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE_2(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
-
-//------------------------------------------------------------------------------
-// Unpacking sampler reads to 4:2:0 internal planar
-//------------------------------------------------------------------------------
- #include "PL2_AVS_IEF_Unpack_8x4.asm"
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_8x8.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_8x8.asm
deleted file mode 100644
index a83a35c..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_8x8.asm
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PL2_AVS_IEF_8x8.asm ----------
-
-#include "AVS_IEF.inc"
-
-//------------------------------------------------------------------------------
-// 2 sampler reads for 8x8 Y each
-// 1 sampler read for 8x8 U and 8x8 V (NV11\NV12 input surface)
-//------------------------------------------------------------------------------
-
- // 1st 8x8 setup
- #include "AVS_SetupFirstBlock.asm"
-
- // Enable green channel only
- mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud
-
- mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
- // Return Y in 4 GRFs
-
- // 8x8 U and V sampling
- // Enable red and blue channels
- mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_BLUE_CHANNELS:ud
-
- // Calculate Chroma Step Size:
- // for H direction: 16 Luma samples are covered by 8 Chroma samples. Thus Chroma_Step_X = 2 * Luma_Step_X
- // for V direction: 8 Luma samples are covered by 8 Chroma samples. Thus Chroma_Step_Y = Luma_Step_Y
- mul (1) rAVS_PAYLOAD.1:f fVIDEO_STEP_X:f 2.0:f // Step X for chroma
-
- mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE(4)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_2CH+nSI_SRC_UV+nBI_CURRENT_SRC_UV
- // Return U and V in 8 GRFs
-
- // 2nd 8x8 setup
- #include "AVS_SetupSecondBlock.asm"
-
- // 2nd 8x8 Y sampling
- // Enable green channel only
- mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud
-
- mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE_2(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
-
-//------------------------------------------------------------------------------
-// Unpacking sampler reads to 4:2:2 internal planar
-//------------------------------------------------------------------------------
- #include "PL2_AVS_IEF_Unpack_8x8.asm"
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_Unpack_16x8.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_Unpack_16x8.asm
deleted file mode 100644
index 57ab255..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_Unpack_16x8.asm
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PL2_AVS_IEF_Unpack_16x8.asm ----------
-
-#ifdef AVS_OUTPUT_16_BIT //Output is packed in AVYU format
-// Move first 8x8 words of Y to dest GRF (as packed)
- mov (4) uwDEST_Y(0,1)<4> uwAVS_RESPONSE(0,0)<4;4,1>
- mov (4) uwDEST_Y(1,1)<4> uwAVS_RESPONSE(0,8)<4;4,1>
- mov (4) uwDEST_Y(4,1)<4> uwAVS_RESPONSE(0,4)<4;4,1>
- mov (4) uwDEST_Y(5,1)<4> uwAVS_RESPONSE(0,12)<4;4,1>
- mov (4) uwDEST_Y(8,1)<4> uwAVS_RESPONSE(1,0)<4;4,1>
- mov (4) uwDEST_Y(9,1)<4> uwAVS_RESPONSE(1,8)<4;4,1>
- mov (4) uwDEST_Y(12,1)<4> uwAVS_RESPONSE(1,4)<4;4,1>
- mov (4) uwDEST_Y(13,1)<4> uwAVS_RESPONSE(1,12)<4;4,1>
- mov (4) uwDEST_Y(16,1)<4> uwAVS_RESPONSE(2,0)<4;4,1>
- mov (4) uwDEST_Y(17,1)<4> uwAVS_RESPONSE(2,8)<4;4,1>
- mov (4) uwDEST_Y(20,1)<4> uwAVS_RESPONSE(2,4)<4;4,1>
- mov (4) uwDEST_Y(21,1)<4> uwAVS_RESPONSE(2,12)<4;4,1>
- mov (4) uwDEST_Y(24,1)<4> uwAVS_RESPONSE(3,0)<4;4,1>
- mov (4) uwDEST_Y(25,1)<4> uwAVS_RESPONSE(3,8)<4;4,1>
- mov (4) uwDEST_Y(28,1)<4> uwAVS_RESPONSE(3,4)<4;4,1>
- mov (4) uwDEST_Y(29,1)<4> uwAVS_RESPONSE(3,12)<4;4,1>
-
-// Move first 8x8 words of U to dest GRF (as packed)
- mov (4) uwDEST_Y(0,0)<4> uwAVS_RESPONSE(4,0)<4;4,1>
- mov (4) uwDEST_Y(1,0)<4> uwAVS_RESPONSE(4,8)<4;4,1>
- mov (4) uwDEST_Y(4,0)<4> uwAVS_RESPONSE(4,4)<4;4,1>
- mov (4) uwDEST_Y(5,0)<4> uwAVS_RESPONSE(4,12)<4;4,1>
- mov (4) uwDEST_Y(8,0)<4> uwAVS_RESPONSE(5,0)<4;4,1>
- mov (4) uwDEST_Y(9,0)<4> uwAVS_RESPONSE(5,8)<4;4,1>
- mov (4) uwDEST_Y(12,0)<4> uwAVS_RESPONSE(5,4)<4;4,1>
- mov (4) uwDEST_Y(13,0)<4> uwAVS_RESPONSE(5,12)<4;4,1>
- mov (4) uwDEST_Y(16,0)<4> uwAVS_RESPONSE(8,0)<4;4,1>
- mov (4) uwDEST_Y(17,0)<4> uwAVS_RESPONSE(8,8)<4;4,1>
- mov (4) uwDEST_Y(20,0)<4> uwAVS_RESPONSE(8,4)<4;4,1>
- mov (4) uwDEST_Y(21,0)<4> uwAVS_RESPONSE(8,12)<4;4,1>
- mov (4) uwDEST_Y(24,0)<4> uwAVS_RESPONSE(9,0)<4;4,1>
- mov (4) uwDEST_Y(25,0)<4> uwAVS_RESPONSE(9,8)<4;4,1>
- mov (4) uwDEST_Y(28,0)<4> uwAVS_RESPONSE(9,4)<4;4,1>
- mov (4) uwDEST_Y(29,0)<4> uwAVS_RESPONSE(9,12)<4;4,1>
-
-// Move first 8x8 words of V to dest GRF (as packed)
- mov (4) uwDEST_Y(0,2)<4> uwAVS_RESPONSE(6,0)<4;4,1>
- mov (4) uwDEST_Y(1,2)<4> uwAVS_RESPONSE(6,8)<4;4,1>
- mov (4) uwDEST_Y(4,2)<4> uwAVS_RESPONSE(6,4)<4;4,1>
- mov (4) uwDEST_Y(5,2)<4> uwAVS_RESPONSE(6,12)<4;4,1>
- mov (4) uwDEST_Y(8,2)<4> uwAVS_RESPONSE(7,0)<4;4,1>
- mov (4) uwDEST_Y(9,2)<4> uwAVS_RESPONSE(7,8)<4;4,1>
- mov (4) uwDEST_Y(12,2)<4> uwAVS_RESPONSE(7,4)<4;4,1>
- mov (4) uwDEST_Y(13,2)<4> uwAVS_RESPONSE(7,12)<4;4,1>
- mov (4) uwDEST_Y(16,2)<4> uwAVS_RESPONSE(10,0)<4;4,1>
- mov (4) uwDEST_Y(17,2)<4> uwAVS_RESPONSE(10,8)<4;4,1>
- mov (4) uwDEST_Y(20,2)<4> uwAVS_RESPONSE(10,4)<4;4,1>
- mov (4) uwDEST_Y(21,2)<4> uwAVS_RESPONSE(10,12)<4;4,1>
- mov (4) uwDEST_Y(24,2)<4> uwAVS_RESPONSE(11,0)<4;4,1>
- mov (4) uwDEST_Y(25,2)<4> uwAVS_RESPONSE(11,8)<4;4,1>
- mov (4) uwDEST_Y(28,2)<4> uwAVS_RESPONSE(11,4)<4;4,1>
- mov (4) uwDEST_Y(29,2)<4> uwAVS_RESPONSE(11,12)<4;4,1>
-
-// Move first 8x8 words of A to dest GRF (as packed)
- mov (4) uwDEST_Y(0,3)<4> 0:uw
- mov (4) uwDEST_Y(1,3)<4> 0:uw
- mov (4) uwDEST_Y(4,3)<4> 0:uw
- mov (4) uwDEST_Y(5,3)<4> 0:uw
- mov (4) uwDEST_Y(8,3)<4> 0:uw
- mov (4) uwDEST_Y(9,3)<4> 0:uw
- mov (4) uwDEST_Y(12,3)<4> 0:uw
- mov (4) uwDEST_Y(13,3)<4> 0:uw
- mov (4) uwDEST_Y(16,3)<4> 0:uw
- mov (4) uwDEST_Y(17,3)<4> 0:uw
- mov (4) uwDEST_Y(20,3)<4> 0:uw
- mov (4) uwDEST_Y(21,3)<4> 0:uw
- mov (4) uwDEST_Y(24,3)<4> 0:uw
- mov (4) uwDEST_Y(25,3)<4> 0:uw
- mov (4) uwDEST_Y(28,3)<4> 0:uw
- mov (4) uwDEST_Y(29,3)<4> 0:uw
-
-// Move second 8x8 words of Y to dest GRF
- mov (4) uwDEST_Y(2,1)<4> uwAVS_RESPONSE_2(0,0)<4;4,1>
- mov (4) uwDEST_Y(3,1)<4> uwAVS_RESPONSE_2(0,8)<4;4,1>
- mov (4) uwDEST_Y(6,1)<4> uwAVS_RESPONSE_2(0,4)<4;4,1>
- mov (4) uwDEST_Y(7,1)<4> uwAVS_RESPONSE_2(0,12)<4;4,1>
- mov (4) uwDEST_Y(10,1)<4> uwAVS_RESPONSE_2(1,0)<4;4,1>
- mov (4) uwDEST_Y(11,1)<4> uwAVS_RESPONSE_2(1,8)<4;4,1>
- mov (4) uwDEST_Y(14,1)<4> uwAVS_RESPONSE_2(1,4)<4;4,1>
- mov (4) uwDEST_Y(15,1)<4> uwAVS_RESPONSE_2(1,12)<4;4,1>
- mov (4) uwDEST_Y(18,1)<4> uwAVS_RESPONSE_2(2,0)<4;4,1>
- mov (4) uwDEST_Y(19,1)<4> uwAVS_RESPONSE_2(2,8)<4;4,1>
- mov (4) uwDEST_Y(22,1)<4> uwAVS_RESPONSE_2(2,4)<4;4,1>
- mov (4) uwDEST_Y(23,1)<4> uwAVS_RESPONSE_2(2,12)<4;4,1>
- mov (4) uwDEST_Y(26,1)<4> uwAVS_RESPONSE_2(3,0)<4;4,1>
- mov (4) uwDEST_Y(27,1)<4> uwAVS_RESPONSE_2(3,8)<4;4,1>
- mov (4) uwDEST_Y(30,1)<4> uwAVS_RESPONSE_2(3,4)<4;4,1>
- mov (4) uwDEST_Y(31,1)<4> uwAVS_RESPONSE_2(3,12)<4;4,1>
-
-// Move second 8x8 words of U to dest GRF
- mov (4) uwDEST_Y(2,0)<4> uwAVS_RESPONSE_2(4,0)<4;4,1>
- mov (4) uwDEST_Y(3,0)<4> uwAVS_RESPONSE_2(4,8)<4;4,1>
- mov (4) uwDEST_Y(6,0)<4> uwAVS_RESPONSE_2(4,4)<4;4,1>
- mov (4) uwDEST_Y(7,0)<4> uwAVS_RESPONSE_2(4,12)<4;4,1>
- mov (4) uwDEST_Y(10,0)<4> uwAVS_RESPONSE_2(5,0)<4;4,1>
- mov (4) uwDEST_Y(11,0)<4> uwAVS_RESPONSE_2(5,8)<4;4,1>
- mov (4) uwDEST_Y(14,0)<4> uwAVS_RESPONSE_2(5,4)<4;4,1>
- mov (4) uwDEST_Y(15,0)<4> uwAVS_RESPONSE_2(5,12)<4;4,1>
- mov (4) uwDEST_Y(18,0)<4> uwAVS_RESPONSE_2(8,0)<4;4,1>
- mov (4) uwDEST_Y(19,0)<4> uwAVS_RESPONSE_2(8,8)<4;4,1>
- mov (4) uwDEST_Y(22,0)<4> uwAVS_RESPONSE_2(8,4)<4;4,1>
- mov (4) uwDEST_Y(23,0)<4> uwAVS_RESPONSE_2(8,12)<4;4,1>
- mov (4) uwDEST_Y(26,0)<4> uwAVS_RESPONSE_2(9,0)<4;4,1>
- mov (4) uwDEST_Y(27,0)<4> uwAVS_RESPONSE_2(9,8)<4;4,1>
- mov (4) uwDEST_Y(30,0)<4> uwAVS_RESPONSE_2(9,4)<4;4,1>
- mov (4) uwDEST_Y(31,0)<4> uwAVS_RESPONSE_2(9,12)<4;4,1>
-
-// Move second 8x8 words of V to dest GRF
- mov (4) uwDEST_Y(2,2)<4> uwAVS_RESPONSE_2(6,0)<4;4,1>
- mov (4) uwDEST_Y(3,2)<4> uwAVS_RESPONSE_2(6,8)<4;4,1>
- mov (4) uwDEST_Y(6,2)<4> uwAVS_RESPONSE_2(6,4)<4;4,1>
- mov (4) uwDEST_Y(7,2)<4> uwAVS_RESPONSE_2(6,12)<4;4,1>
- mov (4) uwDEST_Y(10,2)<4> uwAVS_RESPONSE_2(7,0)<4;4,1>
- mov (4) uwDEST_Y(11,2)<4> uwAVS_RESPONSE_2(7,8)<4;4,1>
- mov (4) uwDEST_Y(14,2)<4> uwAVS_RESPONSE_2(7,4)<4;4,1>
- mov (4) uwDEST_Y(15,2)<4> uwAVS_RESPONSE_2(7,12)<4;4,1>
- mov (4) uwDEST_Y(18,2)<4> uwAVS_RESPONSE_2(10,0)<4;4,1>
- mov (4) uwDEST_Y(19,2)<4> uwAVS_RESPONSE_2(10,8)<4;4,1>
- mov (4) uwDEST_Y(22,2)<4> uwAVS_RESPONSE_2(10,4)<4;4,1>
- mov (4) uwDEST_Y(23,2)<4> uwAVS_RESPONSE_2(10,12)<4;4,1>
- mov (4) uwDEST_Y(26,2)<4> uwAVS_RESPONSE_2(11,0)<4;4,1>
- mov (4) uwDEST_Y(27,2)<4> uwAVS_RESPONSE_2(11,8)<4;4,1>
- mov (4) uwDEST_Y(30,2)<4> uwAVS_RESPONSE_2(11,4)<4;4,1>
- mov (4) uwDEST_Y(31,2)<4> uwAVS_RESPONSE_2(11,12)<4;4,1>
-
-// Move second 8x8 words of A to dest GRF
- mov (4) uwDEST_Y(2,3)<4> 0:uw
- mov (4) uwDEST_Y(3,3)<4> 0:uw
- mov (4) uwDEST_Y(6,3)<4> 0:uw
- mov (4) uwDEST_Y(7,3)<4> 0:uw
- mov (4) uwDEST_Y(10,3)<4> 0:uw
- mov (4) uwDEST_Y(11,3)<4> 0:uw
- mov (4) uwDEST_Y(14,3)<4> 0:uw
- mov (4) uwDEST_Y(15,3)<4> 0:uw
- mov (4) uwDEST_Y(18,3)<4> 0:uw
- mov (4) uwDEST_Y(19,3)<4> 0:uw
- mov (4) uwDEST_Y(22,3)<4> 0:uw
- mov (4) uwDEST_Y(23,3)<4> 0:uw
- mov (4) uwDEST_Y(26,3)<4> 0:uw
- mov (4) uwDEST_Y(27,3)<4> 0:uw
- mov (4) uwDEST_Y(30,3)<4> 0:uw
- mov (4) uwDEST_Y(31,3)<4> 0:uw
-
-/* This section will be used if 16-bit output is needed in planar format -vK
- // Move 1st 8x8 words of Y to dest GRF at lower 8 words of each RGF.
- $for(0; <8/2; 1) {
- mov (8) uwDEST_Y(%1*2)<1> uwAVS_RESPONSE(%1,0)<8;4,1>
- mov (8) uwDEST_Y(%1*2+1)<1> uwAVS_RESPONSE(%1,8)<8;4,1>
- }
-
- // Move 1st 8x8 words of U to dest GRF (Copy high byte in a word)
- mov (8) uwDEST_U(0)<1> uwAVS_RESPONSE(4,0)<8;4,1>
- mov (8) uwDEST_U(1)<1> uwAVS_RESPONSE(4,8)<8;4,1>
- mov (8) uwDEST_U(2)<1> uwAVS_RESPONSE(5,0)<8;4,1>
- mov (8) uwDEST_U(3)<1> uwAVS_RESPONSE(5,8)<8;4,1>
- mov (8) uwDEST_U(4)<1> uwAVS_RESPONSE(8,0)<8;4,1>
- mov (8) uwDEST_U(5)<1> uwAVS_RESPONSE(8,8)<8;4,1>
- mov (8) uwDEST_U(6)<1> uwAVS_RESPONSE(9,0)<8;4,1>
- mov (8) uwDEST_U(7)<1> uwAVS_RESPONSE(9,8)<8;4,1>
-
- // Move 1st 8x8 words of V to dest GRF
- mov (8) uwDEST_V(0)<1> uwAVS_RESPONSE(6,0)<8;4,1>
- mov (8) uwDEST_V(1)<1> uwAVS_RESPONSE(6,8)<8;4,1>
- mov (8) uwDEST_V(2)<1> uwAVS_RESPONSE(7,0)<8;4,1>
- mov (8) uwDEST_V(3)<1> uwAVS_RESPONSE(7,8)<8;4,1>
- mov (8) uwDEST_V(4)<1> uwAVS_RESPONSE(10,0)<8;4,1>
- mov (8) uwDEST_V(5)<1> uwAVS_RESPONSE(10,8)<8;4,1>
- mov (8) uwDEST_V(6)<1> uwAVS_RESPONSE(11,0)<8;4,1>
- mov (8) uwDEST_V(7)<1> uwAVS_RESPONSE(11,8)<8;4,1>
-
- // Move 2nd 8x8 words of Y to dest GRF at higher 8 words of each GRF.
- $for(0; <8/2; 1) {
- mov (8) uwDEST_Y(%1*2,8)<1> uwAVS_RESPONSE_2(%1,0)<8;4,1>
- mov (8) uwDEST_Y(%1*2+1,8)<1> uwAVS_RESPONSE_2(%1,8)<8;4,1>
- }
-
- // Move 2st 8x8 words of U to dest GRF (Copy high byte in a word)
- mov (8) uwDEST_U(0,8)<1> uwAVS_RESPONSE_2(4,0)<8;4,1>
- mov (8) uwDEST_U(1,8)<1> uwAVS_RESPONSE_2(4,8)<8;4,1>
- mov (8) uwDEST_U(2,8)<1> uwAVS_RESPONSE_2(5,0)<8;4,1>
- mov (8) uwDEST_U(3,8)<1> uwAVS_RESPONSE_2(5,8)<8;4,1>
- mov (8) uwDEST_U(4,8)<1> uwAVS_RESPONSE_2(8,0)<8;4,1>
- mov (8) uwDEST_U(5,8)<1> uwAVS_RESPONSE_2(8,8)<8;4,1>
- mov (8) uwDEST_U(6,8)<1> uwAVS_RESPONSE_2(9,0)<8;4,1>
- mov (8) uwDEST_U(7,8)<1> uwAVS_RESPONSE_2(9,8)<8;4,1>
-
- // Move 2st 8x8 words of V to dest GRF
- mov (8) uwDEST_V(0,8)<1> uwAVS_RESPONSE_2(6,0)<8;4,1>
- mov (8) uwDEST_V(1,8)<1> uwAVS_RESPONSE_2(6,8)<8;4,1>
- mov (8) uwDEST_V(2,8)<1> uwAVS_RESPONSE_2(7,0)<8;4,1>
- mov (8) uwDEST_V(3,8)<1> uwAVS_RESPONSE_2(7,8)<8;4,1>
- mov (8) uwDEST_V(4,8)<1> uwAVS_RESPONSE_2(10,0)<8;4,1>
- mov (8) uwDEST_V(5,8)<1> uwAVS_RESPONSE_2(10,8)<8;4,1>
- mov (8) uwDEST_V(6,8)<1> uwAVS_RESPONSE_2(11,0)<8;4,1>
- mov (8) uwDEST_V(7,8)<1> uwAVS_RESPONSE_2(11,8)<8;4,1>
-*/
-#else
- // Move 1st 8x8 words of Y to dest GRF at lower 8 words of each RGF.
- $for(0; <8/2; 1) {
- mov (8) uwDEST_Y(%1*2)<1> ubAVS_RESPONSE(%1,1)<16;4,2> // Copy high byte in a word
- mov (8) uwDEST_Y(%1*2+1)<1> ubAVS_RESPONSE(%1,8+1)<16;4,2> // Copy high byte in a word
- }
-
- // Move 1st 8x8 words of U to dest GRF (Copy high byte in a word)
- mov (8) uwDEST_U(0)<1> ubAVS_RESPONSE(4,1)<16;4,2>
- mov (8) uwDEST_U(1)<1> ubAVS_RESPONSE(4,8+1)<16;4,2>
- mov (8) uwDEST_U(2)<1> ubAVS_RESPONSE(5,1)<16;4,2>
- mov (8) uwDEST_U(3)<1> ubAVS_RESPONSE(5,8+1)<16;4,2>
- mov (8) uwDEST_U(4)<1> ubAVS_RESPONSE(8,1)<16;4,2>
- mov (8) uwDEST_U(5)<1> ubAVS_RESPONSE(8,8+1)<16;4,2>
- mov (8) uwDEST_U(6)<1> ubAVS_RESPONSE(9,1)<16;4,2>
- mov (8) uwDEST_U(7)<1> ubAVS_RESPONSE(9,8+1)<16;4,2>
-
- // Move 1st 8x8 words of V to dest GRF
- mov (8) uwDEST_V(0)<1> ubAVS_RESPONSE(6,1)<16;4,2>
- mov (8) uwDEST_V(1)<1> ubAVS_RESPONSE(6,8+1)<16;4,2>
- mov (8) uwDEST_V(2)<1> ubAVS_RESPONSE(7,1)<16;4,2>
- mov (8) uwDEST_V(3)<1> ubAVS_RESPONSE(7,8+1)<16;4,2>
- mov (8) uwDEST_V(4)<1> ubAVS_RESPONSE(10,1)<16;4,2>
- mov (8) uwDEST_V(5)<1> ubAVS_RESPONSE(10,8+1)<16;4,2>
- mov (8) uwDEST_V(6)<1> ubAVS_RESPONSE(11,1)<16;4,2>
- mov (8) uwDEST_V(7)<1> ubAVS_RESPONSE(11,8+1)<16;4,2>
-
- // Move 2nd 8x8 words of Y to dest GRF at higher 8 words of each GRF.
- $for(0; <8/2; 1) {
- mov (8) uwDEST_Y(%1*2,8)<1> ubAVS_RESPONSE_2(%1,1)<16;4,2> // Copy high byte in a word
- mov (8) uwDEST_Y(%1*2+1,8)<1> ubAVS_RESPONSE_2(%1,8+1)<16;4,2> // Copy high byte in a word
- }
-
- // Move 2st 8x8 words of U to dest GRF (Copy high byte in a word)
- mov (8) uwDEST_U(0,8)<1> ubAVS_RESPONSE_2(4,1)<16;4,2>
- mov (8) uwDEST_U(1,8)<1> ubAVS_RESPONSE_2(4,8+1)<16;4,2>
- mov (8) uwDEST_U(2,8)<1> ubAVS_RESPONSE_2(5,1)<16;4,2>
- mov (8) uwDEST_U(3,8)<1> ubAVS_RESPONSE_2(5,8+1)<16;4,2>
- mov (8) uwDEST_U(4,8)<1> ubAVS_RESPONSE_2(8,1)<16;4,2>
- mov (8) uwDEST_U(5,8)<1> ubAVS_RESPONSE_2(8,8+1)<16;4,2>
- mov (8) uwDEST_U(6,8)<1> ubAVS_RESPONSE_2(9,1)<16;4,2>
- mov (8) uwDEST_U(7,8)<1> ubAVS_RESPONSE_2(9,8+1)<16;4,2>
-
- // Move 2st 8x8 words of V to dest GRF
- mov (8) uwDEST_V(0,8)<1> ubAVS_RESPONSE_2(6,1)<16;4,2>
- mov (8) uwDEST_V(1,8)<1> ubAVS_RESPONSE_2(6,8+1)<16;4,2>
- mov (8) uwDEST_V(2,8)<1> ubAVS_RESPONSE_2(7,1)<16;4,2>
- mov (8) uwDEST_V(3,8)<1> ubAVS_RESPONSE_2(7,8+1)<16;4,2>
- mov (8) uwDEST_V(4,8)<1> ubAVS_RESPONSE_2(10,1)<16;4,2>
- mov (8) uwDEST_V(5,8)<1> ubAVS_RESPONSE_2(10,8+1)<16;4,2>
- mov (8) uwDEST_V(6,8)<1> ubAVS_RESPONSE_2(11,1)<16;4,2>
- mov (8) uwDEST_V(7,8)<1> ubAVS_RESPONSE_2(11,8+1)<16;4,2>
-#endif
-
- // Re-define new # of lines
- #undef nUV_NUM_OF_ROWS
- #undef nY_NUM_OF_ROWS
-
- #define nY_NUM_OF_ROWS 8
- #define nUV_NUM_OF_ROWS 8
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_Unpack_8x4.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_Unpack_8x4.asm
deleted file mode 100644
index 5257fb8..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_Unpack_8x4.asm
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PL2_AVS_IEF_8x4.asm ----------
-
- // Move first 8x8 words of Y to dest GRF at lower 8 words of each RGF.
- $for(0; <8/2; 1) {
- mov (8) uwDEST_Y(%1*2)<1> ubAVS_RESPONSE(%1,1)<16;4,2> // Copy high byte in a word
- mov (8) uwDEST_Y(%1*2+1)<1> ubAVS_RESPONSE(%1,8+1)<16;4,2> // Copy high byte in a word
- }
-
- // Move 8x4 words of U to dest GRF (Copy high byte in a word)
- mov (8) uwDEST_U(0)<1> ubAVS_RESPONSE(4,1)<16;4,2>
- mov (8) uwDEST_U(0,8)<1> ubAVS_RESPONSE(5,1)<16;4,2>
- mov (8) uwDEST_U(1)<1> ubAVS_RESPONSE(8,1)<16;4,2>
- mov (8) uwDEST_U(1,8)<1> ubAVS_RESPONSE(9,1)<16;4,2>
-
- // Move 8x4 words of V to dest GRF
- mov (8) uwDEST_V(0)<1> ubAVS_RESPONSE(6,1)<16;4,2>
- mov (8) uwDEST_V(0,8)<1> ubAVS_RESPONSE(7,1)<16;4,2>
- mov (8) uwDEST_V(1)<1> ubAVS_RESPONSE(10,1)<16;4,2>
- mov (8) uwDEST_V(1,8)<1> ubAVS_RESPONSE(11,1)<16;4,2>
-
- // Move 2nd 8x8 words of Y to dest GRF at higher 8 words of each GRF.
- $for(0; <8/2; 1) {
- mov (8) uwDEST_Y(%1*2,8)<1> ubAVS_RESPONSE_2(%1,1)<16;4,2> // Copy high byte in a word
- mov (8) uwDEST_Y(%1*2+1,8)<1> ubAVS_RESPONSE_2(%1,8+1)<16;4,2> // Copy high byte in a word
- }
-
-//------------------------------------------------------------------------------
-
- // Re-define new # of lines
- #undef nUV_NUM_OF_ROWS
- #undef nY_NUM_OF_ROWS
-
- #define nY_NUM_OF_ROWS 8
- #define nUV_NUM_OF_ROWS 4
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_Unpack_8x8.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_Unpack_8x8.asm
deleted file mode 100644
index 584fe94..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PL2_AVS_IEF_Unpack_8x8.asm
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PL2_AVS_IEF_8x8.asm ----------
-
- // Move first 8x8 words of Y to dest GRF at lower 8 words of each RGF.
- $for(0; <8/2; 1) {
- mov (8) uwDEST_Y(%1*2)<1> ubAVS_RESPONSE(%1,1)<16;4,2> // Copy high byte in a word
- mov (8) uwDEST_Y(%1*2+1)<1> ubAVS_RESPONSE(%1,8+1)<16;4,2> // Copy high byte in a word
- }
-
- // Move 8x8 words of U to dest GRF (Copy high byte in a word)
- mov (8) uwDEST_U(0)<1> ubAVS_RESPONSE(4,1)<16;4,2>
- mov (8) uwDEST_U(0,8)<1> ubAVS_RESPONSE(4,8+1)<16;4,2>
- mov (8) uwDEST_U(1)<1> ubAVS_RESPONSE(5,1)<16;4,2>
- mov (8) uwDEST_U(1,8)<1> ubAVS_RESPONSE(5,8+1)<16;4,2>
- mov (8) uwDEST_U(2)<1> ubAVS_RESPONSE(8,1)<16;4,2>
- mov (8) uwDEST_U(2,8)<1> ubAVS_RESPONSE(8,8+1)<16;4,2>
- mov (8) uwDEST_U(3)<1> ubAVS_RESPONSE(9,1)<16;4,2>
- mov (8) uwDEST_U(3,8)<1> ubAVS_RESPONSE(9,8+1)<16;4,2>
-
- // Move 8x8 words of V to dest GRF
- mov (8) uwDEST_V(0)<1> ubAVS_RESPONSE(6,1)<16;4,2>
- mov (8) uwDEST_V(0,8)<1> ubAVS_RESPONSE(6,8+1)<16;4,2>
- mov (8) uwDEST_V(1)<1> ubAVS_RESPONSE(7,1)<16;4,2>
- mov (8) uwDEST_V(1,8)<1> ubAVS_RESPONSE(7,8+1)<16;4,2>
- mov (8) uwDEST_V(2)<1> ubAVS_RESPONSE(10,1)<16;4,2>
- mov (8) uwDEST_V(2,8)<1> ubAVS_RESPONSE(10,8+1)<16;4,2>
- mov (8) uwDEST_V(3)<1> ubAVS_RESPONSE(11,1)<16;4,2>
- mov (8) uwDEST_V(3,8)<1> ubAVS_RESPONSE(11,8+1)<16;4,2>
-
- // Move 2nd 8x8 words of Y to dest GRF at higher 8 words of each GRF.
- $for(0; <8/2; 1) {
- mov (8) uwDEST_Y(%1*2,8)<1> ubAVS_RESPONSE_2(%1,1)<16;4,2> // Copy high byte in a word
- mov (8) uwDEST_Y(%1*2+1,8)<1> ubAVS_RESPONSE_2(%1,8+1)<16;4,2> // Copy high byte in a word
- }
-
-//------------------------------------------------------------------------------
-
- // Re-define new # of lines
- #undef nUV_NUM_OF_ROWS
- #undef nY_NUM_OF_ROWS
-
- #define nY_NUM_OF_ROWS 8
- #define nUV_NUM_OF_ROWS 8
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PL2_Scaling.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PL2_Scaling.asm
deleted file mode 100644
index 6228716..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PL2_Scaling.asm
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PL2_Scaling.asm ----------
-#include "Scaling.inc"
-
- // Build 16 elements ramp in float32 and normalized it
-// mov (8) SAMPLER_RAMP(0)<1> 0x76543210:v
-// add (8) SAMPLER_RAMP(1)<1> SAMPLER_RAMP(0) 8.0:f
-mov (4) SAMPLER_RAMP(0)<1> 0x48403000:vf //3, 2, 1, 0 in float vector
-mov (4) SAMPLER_RAMP(0,4)<1> 0x5C585450:vf //7, 6, 5, 4 in float vector
-add (8) SAMPLER_RAMP(1)<1> SAMPLER_RAMP(0) 8.0:f
-
-//Module: PrepareScaleCoord.asm
-
- // Setup for sampler msg hdr
- mov (2) rMSGSRC.0<1>:ud 0:ud { NoDDClr } // Unused fields
- mov (1) rMSGSRC.2<1>:ud 0:ud { NoDDChk } // Write and offset
-
- // Calculate 16 v based on the step Y and vertical origin
- mov (16) mfMSGPAYLOAD(2)<1> fSRC_VID_V_ORI<0;1,0>:f
- mov (16) SCALE_COORD_Y<1>:f fSRC_VID_V_ORI<0;1,0>:f
-
- // Calculate 16 u based on the step X and hori origin
-// line (16) mfMSGPAYLOAD(0)<1> SCALE_STEP_X<0;1,0>:f SAMPLER_RAMP(0) // Assign to mrf directly
- mov (16) acc0:f fSRC_VID_H_ORI<0;1,0>:f { Compr }
- mac (16) mfMSGPAYLOAD(0)<1> fVIDEO_STEP_X<0;1,0>:f SAMPLER_RAMP(0) { Compr }
-
- //Setup the constants for line instruction
- mov (1) SCALE_LINE_P255<1>:f 255.0:f { NoDDClr } //{ NoDDClr, NoDDChk }
- mov (1) SCALE_LINE_P0_5<1>:f 0.5:f { NoDDChk }
-
-//------------------------------------------------------------------------------
-
-$for (0; <nY_NUM_OF_ROWS; 1) {
-
- // Read 16 sampled pixels and store them in float32 in 8 GRFs in the order of BGRA (VYUA).
- mov (8) MSGHDR_SCALE.0:ud rMSGSRC.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (16) SCALE_RESPONSE_YW(0)<1> MSGHDR_SCALE udDUMMY_NULL nSMPL_ENGINE SMPLR_MSG_DSC+nSI_SRC_SIMD16_Y+nBI_CURRENT_SRC_Y
- send (16) SCALE_RESPONSE_UW(0)<1> MSGHDR_SCALE udDUMMY_NULL nSMPL_ENGINE SMPLR_MSG_DSC+nSI_SRC_SIMD16_UV+nBI_CURRENT_SRC_UV
-
- // Calculate 16 v for next line
- add (16) mfMSGPAYLOAD(2)<1> SCALE_COORD_Y<8;8,1>:f fVIDEO_STEP_Y<0;1,0>:f // Assign to mrf directly
- add (16) SCALE_COORD_Y<1>:f SCALE_COORD_Y<8;8,1>:f fVIDEO_STEP_Y<0;1,0>:f // Assign to mrf directly
-
- // Scale back to [0, 255], convert f to ud
- line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_YF(0) { Compr } // Process B, V
- mov (16) SCALE_RESPONSE_YD(0)<1> acc0:f { Compr }
-
- line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_UF(0) { Compr } // Process B, V
- mov (16) SCALE_RESPONSE_UD(0)<1> acc0:f { Compr }
-
- line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_UF(2) { Compr } // Process B, V
- mov (16) SCALE_RESPONSE_UD(2)<1> acc0:f { Compr }
-
- mov (16) DEST_Y(%1)<1> SCALE_RESPONSE_YB(0) //possible error due to truncation - vK
- mov (16) DEST_U(%1)<1> SCALE_RESPONSE_UB(0) //possible error due to truncation - vK
- mov (16) DEST_V(%1)<1> SCALE_RESPONSE_UB(2) //possible error due to truncation - vK
-
-}
-
- #define nSRC_REGION nREGION_1
-
-//------------------------------------------------------------------------------
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_16x8.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_16x8.asm
deleted file mode 100644
index 2ae387a..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_16x8.asm
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PL3_AVS_IEF_16x8.asm ----------
-
-#include "AVS_IEF.inc"
-
-//------------------------------------------------------------------------------
-// 2 sampler reads for 8x8 Y surface
-// 2 sampler read for 8x8 U surface
-// 2 sampler read for 8x8 V surface
-//------------------------------------------------------------------------------
-
- // 1st 8x8 setup
- #include "AVS_SetupFirstBlock.asm"
-
- // 1st 8x8 Y sampling
- mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud // Enable green channel
- mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
- // Return Y in 4 GRFs
-
- // 1st 8x8 U sampling
- mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_CHANNEL_ONLY:ud // Enable red channel
- mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE(4)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_U+nBI_CURRENT_SRC_U
- // Return U in 4 GRFs
-
- // 1st 8x8 V sampling
- mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_CHANNEL_ONLY:ud // Dummy instruction to avoid back-2-back send instructions
- mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE(8)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_V+nBI_CURRENT_SRC_V
- // Return V in 4 GRFs
-
- // 2nd 8x8 setup
- #include "AVS_SetupSecondBlock.asm"
-
- // 2nd 8x8 Y sampling
- mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud // Enable green channel
- mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE_2(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
- // Return Y in 4 GRFs
-
- // 2nd 8x8 U sampling
- mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_CHANNEL_ONLY:ud // Enable red channel
- mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE_2(4)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_U+nBI_CURRENT_SRC_U
- // Return U in 4 GRFs
-
- mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_CHANNEL_ONLY:ud // Dummy instruction just in order to avoid back-2-back send instructions!
-
- // 2nd 8x8 V sampling
- mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE_2(8)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_V+nBI_CURRENT_SRC_V
- // Return V in 4 GRFs
-
-//------------------------------------------------------------------------------
-// Unpacking sampler reads to 4:4:4 internal planar
-//------------------------------------------------------------------------------
- #include "PL3_AVS_IEF_Unpack_16x8.asm"
-
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_8x4.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_8x4.asm
deleted file mode 100644
index ea74755..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_8x4.asm
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PL3_AVS_IEF_8x4.asm ----------
-
-#include "AVS_IEF.inc"
-
-//------------------------------------------------------------------------------
-// 2 sampler reads for 8x8 Y surface
-// 1 sampler read for 8x8 U surface
-// 1 sampler read for 8x8 V surface
-//------------------------------------------------------------------------------
-
- // 1st 8x8 setup
- #include "AVS_SetupFirstBlock.asm"
-
- // 1st 8x8 Y sampling
- mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud // Enable green channel
- mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
- // Return Y in 4 GRFs
-
- // 8x8 U sampling ; Only 8x4 will be used
- mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_CHANNEL_ONLY:ud // Enable red channel
- mul (1) rAVS_PAYLOAD.1:f fVIDEO_STEP_X:f 2.0:f // Calculate Step X for chroma
- mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE(4)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_U+nBI_CURRENT_SRC_U
- // Return U in 4 GRFs
-
- // 8x8 V sampling ; Only 8x4 will be used
- mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_CHANNEL_ONLY:ud // Dummy instruction just in order to avoid back-2-back send instructions!
- mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE(8)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_V+nBI_CURRENT_SRC_V
- // Return V in 4 GRFs
-
- // 2nd 8x8 setup
- #include "AVS_SetupSecondBlock.asm"
-
- // 2nd 8x8 Y sampling
- mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud // Enable green channel
- mov (1) rAVS_PAYLOAD.1:f fVIDEO_STEP_X:f // Restore Step X for luma
- mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE(12)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
- // Return Y in 4 GRFs
-
-//------------------------------------------------------------------------------
-// Unpacking sampler reads to 4:2:0 internal planar
-//------------------------------------------------------------------------------
- #include "PL3_AVS_IEF_Unpack_8x4.asm"
-
-
-
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_8x8.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_8x8.asm
deleted file mode 100644
index 33cc379..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_8x8.asm
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PL3_AVS_IEF_8x8.asm ----------
-
-#include "AVS_IEF.inc"
-
-//------------------------------------------------------------------------------
-// 2 sampler reads for 8x8 Y surface
-// 1 sampler read for 8x8 U surface
-// 1 sampler read for 8x8 V surface
-//------------------------------------------------------------------------------
-
- // 1st 8x8 setup
- #include "AVS_SetupFirstBlock.asm"
-
- // 1st 8x8 Y sampling
- mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud // Enable green channel
- mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
- // Return Y in 4 GRFs
-
- // 8x8 U sampling
- mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_CHANNEL_ONLY:ud // Enable red channel
- mul (1) rAVS_PAYLOAD.1:f fVIDEO_STEP_X:f 2.0:f // Calculate Step X for chroma
- mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE(4)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_U+nBI_CURRENT_SRC_U
- // Return U in 4 GRFs
-
- // 8x8 V sampling
- mov (1) rAVS_8x8_HDR.2:ud nAVS_RED_CHANNEL_ONLY:ud // Dummy instruction just in order to avoid back-2-back send instructions!
- mov (16) mAVS_8x8_HDR_UV.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE(8)<1> mAVS_8x8_HDR_UV udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_V+nBI_CURRENT_SRC_V
- // Return V in 4 GRFs
-
- // 2nd 8x8 setup
- #include "AVS_SetupSecondBlock.asm"
-
- // 2nd 8x8 Y sampling
- mov (1) rAVS_8x8_HDR.2:ud nAVS_GREEN_CHANNEL_ONLY:ud // Enable green channel
- mov (1) rAVS_PAYLOAD.1:f fVIDEO_STEP_X:f // Restore Step X for luma
- mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE(12)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_1CH+nSI_SRC_Y+nBI_CURRENT_SRC_Y
- // Return Y in 4 GRFs
-
-//------------------------------------------------------------------------------
-// Unpacking sampler reads to 4:2:2 internal planar
-//------------------------------------------------------------------------------
- #include "PL3_AVS_IEF_Unpack_8x8.asm"
-
-
-
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_Unpack_16x8.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_Unpack_16x8.asm
deleted file mode 100644
index 950d1be..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_Unpack_16x8.asm
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PL3_AVS_IEF_Unpack_16x8.asm ----------
-
-#ifdef AVS_OUTPUT_16_BIT //Output is packed in AVYU format
-// Move first 8x8 words of Y to dest GRF (as packed)
- mov (4) uwDEST_Y(0,1)<4> uwAVS_RESPONSE(0,0)<4;4,1>
- mov (4) uwDEST_Y(1,1)<4> uwAVS_RESPONSE(0,8)<4;4,1>
- mov (4) uwDEST_Y(4,1)<4> uwAVS_RESPONSE(0,4)<4;4,1>
- mov (4) uwDEST_Y(5,1)<4> uwAVS_RESPONSE(0,12)<4;4,1>
- mov (4) uwDEST_Y(8,1)<4> uwAVS_RESPONSE(1,0)<4;4,1>
- mov (4) uwDEST_Y(9,1)<4> uwAVS_RESPONSE(1,8)<4;4,1>
- mov (4) uwDEST_Y(12,1)<4> uwAVS_RESPONSE(1,4)<4;4,1>
- mov (4) uwDEST_Y(13,1)<4> uwAVS_RESPONSE(1,12)<4;4,1>
- mov (4) uwDEST_Y(16,1)<4> uwAVS_RESPONSE(2,0)<4;4,1>
- mov (4) uwDEST_Y(17,1)<4> uwAVS_RESPONSE(2,8)<4;4,1>
- mov (4) uwDEST_Y(20,1)<4> uwAVS_RESPONSE(2,4)<4;4,1>
- mov (4) uwDEST_Y(21,1)<4> uwAVS_RESPONSE(2,12)<4;4,1>
- mov (4) uwDEST_Y(24,1)<4> uwAVS_RESPONSE(3,0)<4;4,1>
- mov (4) uwDEST_Y(25,1)<4> uwAVS_RESPONSE(3,8)<4;4,1>
- mov (4) uwDEST_Y(28,1)<4> uwAVS_RESPONSE(3,4)<4;4,1>
- mov (4) uwDEST_Y(29,1)<4> uwAVS_RESPONSE(3,12)<4;4,1>
-
-// Move first 8x8 words of U to dest GRF (as packed)
- mov (4) uwDEST_Y(0,0)<4> uwAVS_RESPONSE(4,0)<4;4,1>
- mov (4) uwDEST_Y(1,0)<4> uwAVS_RESPONSE(4,8)<4;4,1>
- mov (4) uwDEST_Y(4,0)<4> uwAVS_RESPONSE(4,4)<4;4,1>
- mov (4) uwDEST_Y(5,0)<4> uwAVS_RESPONSE(4,12)<4;4,1>
- mov (4) uwDEST_Y(8,0)<4> uwAVS_RESPONSE(5,0)<4;4,1>
- mov (4) uwDEST_Y(9,0)<4> uwAVS_RESPONSE(5,8)<4;4,1>
- mov (4) uwDEST_Y(12,0)<4> uwAVS_RESPONSE(5,4)<4;4,1>
- mov (4) uwDEST_Y(13,0)<4> uwAVS_RESPONSE(5,12)<4;4,1>
- mov (4) uwDEST_Y(16,0)<4> uwAVS_RESPONSE(6,0)<4;4,1>
- mov (4) uwDEST_Y(17,0)<4> uwAVS_RESPONSE(6,8)<4;4,1>
- mov (4) uwDEST_Y(20,0)<4> uwAVS_RESPONSE(6,4)<4;4,1>
- mov (4) uwDEST_Y(21,0)<4> uwAVS_RESPONSE(6,12)<4;4,1>
- mov (4) uwDEST_Y(24,0)<4> uwAVS_RESPONSE(7,0)<4;4,1>
- mov (4) uwDEST_Y(25,0)<4> uwAVS_RESPONSE(7,8)<4;4,1>
- mov (4) uwDEST_Y(28,0)<4> uwAVS_RESPONSE(7,4)<4;4,1>
- mov (4) uwDEST_Y(29,0)<4> uwAVS_RESPONSE(7,12)<4;4,1>
-
-// Move first 8x8 words of V to dest GRF (as packed)
- mov (4) uwDEST_Y(0,2)<4> uwAVS_RESPONSE(8,0)<4;4,1>
- mov (4) uwDEST_Y(1,2)<4> uwAVS_RESPONSE(8,8)<4;4,1>
- mov (4) uwDEST_Y(4,2)<4> uwAVS_RESPONSE(8,4)<4;4,1>
- mov (4) uwDEST_Y(5,2)<4> uwAVS_RESPONSE(8,12)<4;4,1>
- mov (4) uwDEST_Y(8,2)<4> uwAVS_RESPONSE(9,0)<4;4,1>
- mov (4) uwDEST_Y(9,2)<4> uwAVS_RESPONSE(9,8)<4;4,1>
- mov (4) uwDEST_Y(12,2)<4> uwAVS_RESPONSE(9,4)<4;4,1>
- mov (4) uwDEST_Y(13,2)<4> uwAVS_RESPONSE(9,12)<4;4,1>
- mov (4) uwDEST_Y(16,2)<4> uwAVS_RESPONSE(10,0)<4;4,1>
- mov (4) uwDEST_Y(17,2)<4> uwAVS_RESPONSE(10,8)<4;4,1>
- mov (4) uwDEST_Y(20,2)<4> uwAVS_RESPONSE(10,4)<4;4,1>
- mov (4) uwDEST_Y(21,2)<4> uwAVS_RESPONSE(10,12)<4;4,1>
- mov (4) uwDEST_Y(24,2)<4> uwAVS_RESPONSE(11,0)<4;4,1>
- mov (4) uwDEST_Y(25,2)<4> uwAVS_RESPONSE(11,8)<4;4,1>
- mov (4) uwDEST_Y(28,2)<4> uwAVS_RESPONSE(11,4)<4;4,1>
- mov (4) uwDEST_Y(29,2)<4> uwAVS_RESPONSE(11,12)<4;4,1>
-
-// Move first 8x8 words of A to dest GRF (as packed)
- mov (4) uwDEST_Y(0,3)<4> 0:uw
- mov (4) uwDEST_Y(1,3)<4> 0:uw
- mov (4) uwDEST_Y(4,3)<4> 0:uw
- mov (4) uwDEST_Y(5,3)<4> 0:uw
- mov (4) uwDEST_Y(8,3)<4> 0:uw
- mov (4) uwDEST_Y(9,3)<4> 0:uw
- mov (4) uwDEST_Y(12,3)<4> 0:uw
- mov (4) uwDEST_Y(13,3)<4> 0:uw
- mov (4) uwDEST_Y(16,3)<4> 0:uw
- mov (4) uwDEST_Y(17,3)<4> 0:uw
- mov (4) uwDEST_Y(20,3)<4> 0:uw
- mov (4) uwDEST_Y(21,3)<4> 0:uw
- mov (4) uwDEST_Y(24,3)<4> 0:uw
- mov (4) uwDEST_Y(25,3)<4> 0:uw
- mov (4) uwDEST_Y(28,3)<4> 0:uw
- mov (4) uwDEST_Y(29,3)<4> 0:uw
-
-// Move second 8x8 words of Y to dest GRF
- mov (4) uwDEST_Y(2,1)<4> uwAVS_RESPONSE_2(0,0)<4;4,1>
- mov (4) uwDEST_Y(3,1)<4> uwAVS_RESPONSE_2(0,8)<4;4,1>
- mov (4) uwDEST_Y(6,1)<4> uwAVS_RESPONSE_2(0,4)<4;4,1>
- mov (4) uwDEST_Y(7,1)<4> uwAVS_RESPONSE_2(0,12)<4;4,1>
- mov (4) uwDEST_Y(10,1)<4> uwAVS_RESPONSE_2(1,0)<4;4,1>
- mov (4) uwDEST_Y(11,1)<4> uwAVS_RESPONSE_2(1,8)<4;4,1>
- mov (4) uwDEST_Y(14,1)<4> uwAVS_RESPONSE_2(1,4)<4;4,1>
- mov (4) uwDEST_Y(15,1)<4> uwAVS_RESPONSE_2(1,12)<4;4,1>
- mov (4) uwDEST_Y(18,1)<4> uwAVS_RESPONSE_2(2,0)<4;4,1>
- mov (4) uwDEST_Y(19,1)<4> uwAVS_RESPONSE_2(2,8)<4;4,1>
- mov (4) uwDEST_Y(22,1)<4> uwAVS_RESPONSE_2(2,4)<4;4,1>
- mov (4) uwDEST_Y(23,1)<4> uwAVS_RESPONSE_2(2,12)<4;4,1>
- mov (4) uwDEST_Y(26,1)<4> uwAVS_RESPONSE_2(3,0)<4;4,1>
- mov (4) uwDEST_Y(27,1)<4> uwAVS_RESPONSE_2(3,8)<4;4,1>
- mov (4) uwDEST_Y(30,1)<4> uwAVS_RESPONSE_2(3,4)<4;4,1>
- mov (4) uwDEST_Y(31,1)<4> uwAVS_RESPONSE_2(3,12)<4;4,1>
-
-// Move second 8x8 words of U to dest GRF
- mov (4) uwDEST_Y(2,0)<4> uwAVS_RESPONSE_2(4,0)<4;4,1>
- mov (4) uwDEST_Y(3,0)<4> uwAVS_RESPONSE_2(4,8)<4;4,1>
- mov (4) uwDEST_Y(6,0)<4> uwAVS_RESPONSE_2(4,4)<4;4,1>
- mov (4) uwDEST_Y(7,0)<4> uwAVS_RESPONSE_2(4,12)<4;4,1>
- mov (4) uwDEST_Y(10,0)<4> uwAVS_RESPONSE_2(5,0)<4;4,1>
- mov (4) uwDEST_Y(11,0)<4> uwAVS_RESPONSE_2(5,8)<4;4,1>
- mov (4) uwDEST_Y(14,0)<4> uwAVS_RESPONSE_2(5,4)<4;4,1>
- mov (4) uwDEST_Y(15,0)<4> uwAVS_RESPONSE_2(5,12)<4;4,1>
- mov (4) uwDEST_Y(18,0)<4> uwAVS_RESPONSE_2(6,0)<4;4,1>
- mov (4) uwDEST_Y(19,0)<4> uwAVS_RESPONSE_2(6,8)<4;4,1>
- mov (4) uwDEST_Y(22,0)<4> uwAVS_RESPONSE_2(6,4)<4;4,1>
- mov (4) uwDEST_Y(23,0)<4> uwAVS_RESPONSE_2(6,12)<4;4,1>
- mov (4) uwDEST_Y(26,0)<4> uwAVS_RESPONSE_2(7,0)<4;4,1>
- mov (4) uwDEST_Y(27,0)<4> uwAVS_RESPONSE_2(7,8)<4;4,1>
- mov (4) uwDEST_Y(30,0)<4> uwAVS_RESPONSE_2(7,4)<4;4,1>
- mov (4) uwDEST_Y(31,0)<4> uwAVS_RESPONSE_2(7,12)<4;4,1>
-
-// Move second 8x8 words of V to dest GRF
- mov (4) uwDEST_Y(2,2)<4> uwAVS_RESPONSE_2(8,0)<4;4,1>
- mov (4) uwDEST_Y(3,2)<4> uwAVS_RESPONSE_2(8,8)<4;4,1>
- mov (4) uwDEST_Y(6,2)<4> uwAVS_RESPONSE_2(8,4)<4;4,1>
- mov (4) uwDEST_Y(7,2)<4> uwAVS_RESPONSE_2(8,12)<4;4,1>
- mov (4) uwDEST_Y(10,2)<4> uwAVS_RESPONSE_2(9,0)<4;4,1>
- mov (4) uwDEST_Y(11,2)<4> uwAVS_RESPONSE_2(9,8)<4;4,1>
- mov (4) uwDEST_Y(14,2)<4> uwAVS_RESPONSE_2(9,4)<4;4,1>
- mov (4) uwDEST_Y(15,2)<4> uwAVS_RESPONSE_2(9,12)<4;4,1>
- mov (4) uwDEST_Y(18,2)<4> uwAVS_RESPONSE_2(10,0)<4;4,1>
- mov (4) uwDEST_Y(19,2)<4> uwAVS_RESPONSE_2(10,8)<4;4,1>
- mov (4) uwDEST_Y(22,2)<4> uwAVS_RESPONSE_2(10,4)<4;4,1>
- mov (4) uwDEST_Y(23,2)<4> uwAVS_RESPONSE_2(10,12)<4;4,1>
- mov (4) uwDEST_Y(26,2)<4> uwAVS_RESPONSE_2(11,0)<4;4,1>
- mov (4) uwDEST_Y(27,2)<4> uwAVS_RESPONSE_2(11,8)<4;4,1>
- mov (4) uwDEST_Y(30,2)<4> uwAVS_RESPONSE_2(11,4)<4;4,1>
- mov (4) uwDEST_Y(31,2)<4> uwAVS_RESPONSE_2(11,12)<4;4,1>
-
-// Move second 8x8 words of A to dest GRF
- mov (4) uwDEST_Y(2,3)<4> 0:uw
- mov (4) uwDEST_Y(3,3)<4> 0:uw
- mov (4) uwDEST_Y(6,3)<4> 0:uw
- mov (4) uwDEST_Y(7,3)<4> 0:uw
- mov (4) uwDEST_Y(10,3)<4> 0:uw
- mov (4) uwDEST_Y(11,3)<4> 0:uw
- mov (4) uwDEST_Y(14,3)<4> 0:uw
- mov (4) uwDEST_Y(15,3)<4> 0:uw
- mov (4) uwDEST_Y(18,3)<4> 0:uw
- mov (4) uwDEST_Y(19,3)<4> 0:uw
- mov (4) uwDEST_Y(22,3)<4> 0:uw
- mov (4) uwDEST_Y(23,3)<4> 0:uw
- mov (4) uwDEST_Y(26,3)<4> 0:uw
- mov (4) uwDEST_Y(27,3)<4> 0:uw
- mov (4) uwDEST_Y(30,3)<4> 0:uw
- mov (4) uwDEST_Y(31,3)<4> 0:uw
-
-/* This section will be used if 16-bit output is needed in planar format -vK
- // Move 1st 8x8 words of Y to dest GRF at lower 8 words of each RGF.
- $for(0; <8/2; 1) {
- mov (8) uwDEST_Y(%1*2)<1> uwAVS_RESPONSE(%1)<8;4,1>
- mov (8) uwDEST_Y(%1*2+1)<1> uwAVS_RESPONSE(%1,8)<8;4,1>
- }
-
- // Move 8x8 words of U to dest GRF
- $for(0; <8/2; 1) {
- mov (8) uwDEST_U(%1*2)<1> uwAVS_RESPONSE(%1+4)<8;4,1>
- mov (8) uwDEST_U(%1*2+1)<1> uwAVS_RESPONSE(%1+4,8)<8;4,1>
- }
-
- // Move 8x8 words of V to dest GRF
- $for(0; <8/2; 1) {
- mov (8) uwDEST_V(%1*2)<1> uwAVS_RESPONSE(%1+8)<8;4,1>
- mov (8) uwDEST_V(%1*2+1)<1> uwAVS_RESPONSE(%1+8,8)<8;4,1>
- }
-
- // Move 2nd 8x8 words of Y to dest GRF
- $for(0; <8/2; 1) {
- mov (8) uwDEST_Y(%1*2,8)<1> uwAVS_RESPONSE_2(%1)<8;4,1>
- mov (8) uwDEST_Y(%1*2+1,8)<1> uwAVS_RESPONSE_2(%1,8)<8;4,1>
- }
-
- // Move 2nd 8x8 words of U to dest GRF
- $for(0; <8/2; 1) {
- mov (8) uwDEST_U(%1*2,8)<1> uwAVS_RESPONSE_2(%1+4)<8;4,1>
- mov (8) uwDEST_U(%1*2+1,8)<1> uwAVS_RESPONSE_2(%1+4,8)<8;4,1>
- }
-
- // Move 2nd 8x8 words of V to dest GRF
- $for(0; <8/2; 1) {
- mov (8) uwDEST_V(%1*2,8)<1> uwAVS_RESPONSE_2(%1+8)<8;4,1>
- mov (8) uwDEST_V(%1*2+1,8)<1> uwAVS_RESPONSE_2(%1+8,8)<8;4,1>
- }
-*/
-#else /* OUTPUT_8_BIT */
- // Move 1st 8x8 words of Y to dest GRF at lower 8 words of each RGF.
- $for(0; <8/2; 1) {
- mov (8) uwDEST_Y(%1*2)<1> ubAVS_RESPONSE(%1,1)<16;4,2> // Copy high byte in a word
- mov (8) uwDEST_Y(%1*2+1)<1> ubAVS_RESPONSE(%1,8+1)<16;4,2> // Copy high byte in a word
- }
-
- // Move 8x8 words of U to dest GRF
- $for(0; <8/2; 1) {
- mov (8) uwDEST_U(%1*2)<1> ubAVS_RESPONSE(%1+4,1)<16;4,2> // Copy high byte in a word
- mov (8) uwDEST_U(%1*2+1)<1> ubAVS_RESPONSE(%1+4,8+1)<16;4,2> // Copy high byte in a word
- }
-
- // Move 8x8 words of V to dest GRF
- $for(0; <8/2; 1) {
- mov (8) uwDEST_V(%1*2)<1> ubAVS_RESPONSE(%1+8,1)<16;4,2> // Copy high byte in a word
- mov (8) uwDEST_V(%1*2+1)<1> ubAVS_RESPONSE(%1+8,8+1)<16;4,2> // Copy high byte in a word
- }
-
- // Move 2nd 8x8 words of Y to dest GRF at higher 8 words of each RGF.
- $for(0; <8/2; 1) {
- mov (8) uwDEST_Y(%1*2,8)<1> ubAVS_RESPONSE_2(%1,1)<16;4,2> // Copy high byte in a word
- mov (8) uwDEST_Y(%1*2+1,8)<1> ubAVS_RESPONSE_2(%1,8+1)<16;4,2> // Copy high byte in a word
- }
-
- // Move 2nd 8x8 words of U to dest GRF
- $for(0; <8/2; 1) {
- mov (8) uwDEST_U(%1*2,8)<1> ubAVS_RESPONSE_2(%1+4,1)<16;4,2> // Copy high byte in a word
- mov (8) uwDEST_U(%1*2+1,8)<1> ubAVS_RESPONSE_2(%1+4,8+1)<16;4,2> // Copy high byte in a word
- }
-
- // Move 2nd 8x8 words of V to dest GRF
- $for(0; <8/2; 1) {
- mov (8) uwDEST_V(%1*2,8)<1> ubAVS_RESPONSE_2(%1+8,1)<16;4,2> // Copy high byte in a word
- mov (8) uwDEST_V(%1*2+1,8)<1> ubAVS_RESPONSE_2(%1+8,8+1)<16;4,2> // Copy high byte in a word
- }
-#endif
-//------------------------------------------------------------------------------
- // Re-define new # of lines
- #undef nUV_NUM_OF_ROWS
- #undef nY_NUM_OF_ROWS
-
- #define nY_NUM_OF_ROWS 8
- #define nUV_NUM_OF_ROWS 8
-
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_Unpack_8x4.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_Unpack_8x4.asm
deleted file mode 100644
index aeff3af..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_Unpack_8x4.asm
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PL3_AVS_IEF_Unpack_8x4.asm ----------
-
- // Move 1st 8x8 words of Y to dest GRF at lower 8 words of each RGF.
- $for(0; <8/2; 1) {
- mov (8) uwDEST_Y(%1*2)<1> ubAVS_RESPONSE(%1,1)<16;4,2> // Copy high byte in a word
- mov (8) uwDEST_Y(%1*2+1)<1> ubAVS_RESPONSE(%1,8+1)<16;4,2> // Copy high byte in a word
- }
-
- // Move 8x4 words of U to dest GRF (Copy high byte in a word)
- mov (8) uwDEST_U(0)<1> ubAVS_RESPONSE(4,1)<16;4,2>
- mov (8) uwDEST_U(0,8)<1> ubAVS_RESPONSE(4,9)<16;4,2>
- mov (8) uwDEST_U(1)<1> ubAVS_RESPONSE(5,1)<16;4,2>
- mov (8) uwDEST_U(1,8)<1> ubAVS_RESPONSE(5,9)<16;4,2>
-
- // Move 8x4 words of V to dest GRF
- mov (8) uwDEST_V(0)<1> ubAVS_RESPONSE(8,1)<16;4,2>
- mov (8) uwDEST_V(0,8)<1> ubAVS_RESPONSE(8,9)<16;4,2>
- mov (8) uwDEST_V(1)<1> ubAVS_RESPONSE(9,1)<16;4,2>
- mov (8) uwDEST_V(1,8)<1> ubAVS_RESPONSE(9,9)<16;4,2>
-
- // Move 2nd 8x8 words of Y to dest GRF at higher 8 words of each RGF.
- $for(0; <8/2; 1) {
- mov (8) uwDEST_Y(%1*2,8)<1> ubAVS_RESPONSE(%1+12,1)<16;4,2> // Copy high byte in a word
- mov (8) uwDEST_Y(%1*2+1,8)<1> ubAVS_RESPONSE(%1+12,8+1)<16;4,2> // Copy high byte in a word
- }
-
-//------------------------------------------------------------------------------
- // Re-define new # of lines
- #undef nUV_NUM_OF_ROWS
- #undef nY_NUM_OF_ROWS
-
- #define nY_NUM_OF_ROWS 8
- #define nUV_NUM_OF_ROWS 4
-
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_Unpack_8x8.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_Unpack_8x8.asm
deleted file mode 100644
index e7066f9..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PL3_AVS_IEF_Unpack_8x8.asm
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PL3_AVS_IEF_Unpack_8x8.asm ----------
-
- // Move 1st 8x8 words of Y to dest GRF at lower 8 words of each RGF.
- $for(0; <8/2; 1) {
- mov (8) uwDEST_Y(%1*2)<1> ubAVS_RESPONSE(%1,1)<16;4,2> // Copy high byte in a word
- mov (8) uwDEST_Y(%1*2+1)<1> ubAVS_RESPONSE(%1,8+1)<16;4,2> // Copy high byte in a word
- }
- // Move 8x8 words of U to dest GRF
- $for(0; <8/2; 1) {
- mov (8) uwDEST_U(%1)<1> ubAVS_RESPONSE(%1+4,1)<16;4,2> // Copy high byte in a word
- mov (8) uwDEST_U(%1,8)<1> ubAVS_RESPONSE(%1+4,8+1)<16;4,2> // Copy high byte in a word
- }
-
- // Move 8x8 words of V to dest GRF
- $for(0; <8/2; 1) {
- mov (8) uwDEST_V(%1)<1> ubAVS_RESPONSE(%1+8,1)<16;4,2> // Copy high byte in a word
- mov (8) uwDEST_V(%1,8)<1> ubAVS_RESPONSE(%1+8,8+1)<16;4,2> // Copy high byte in a word
- }
-
- // Move 2nd 8x8 words of Y to dest GRF at higher 8 words of each RGF.
- $for(0; <8/2; 1) {
- mov (8) uwDEST_Y(%1*2,8)<1> ubAVS_RESPONSE(%1+12,1)<16;4,2> // Copy high byte in a word
- mov (8) uwDEST_Y(%1*2+1,8)<1> ubAVS_RESPONSE(%1+12,8+1)<16;4,2> // Copy high byte in a word
- }
-
-//------------------------------------------------------------------------------
- // Re-define new # of lines
- #undef nUV_NUM_OF_ROWS
- #undef nY_NUM_OF_ROWS
-
- #define nY_NUM_OF_ROWS 8
- #define nUV_NUM_OF_ROWS 8
-
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PL3_Scaling.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PL3_Scaling.asm
deleted file mode 100644
index a0946cd..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PL3_Scaling.asm
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- PL3_Scaling.asm ----------
-#include "Scaling.inc"
-
- // Build 16 elements ramp in float32 and normalized it
-// mov (8) SAMPLER_RAMP(0)<1> 0x76543210:v
-// add (8) SAMPLER_RAMP(1)<1> SAMPLER_RAMP(0) 8.0:f
-mov (4) SAMPLER_RAMP(0)<1> 0x48403000:vf { NoDDClr }//3, 2, 1, 0 in float vector
-mov (4) SAMPLER_RAMP(0,4)<1> 0x5C585450:vf { NoDDChk }//7, 6, 5, 4 in float vector
-add (8) SAMPLER_RAMP(1)<1> SAMPLER_RAMP(0) 8.0:f
-
-
-//Module: PrepareScaleCoord.asm
-
- // Setup for sampler msg hdr
- mov (2) rMSGSRC.0<1>:ud 0:ud { NoDDClr } // Unused fields
- mov (1) rMSGSRC.2<1>:ud 0:ud { NoDDChk } // Write and offset
-
- // Calculate 16 v based on the step Y and vertical origin
- mov (16) mfMSGPAYLOAD(2)<1> fSRC_VID_V_ORI<0;1,0>:f
- mov (16) SCALE_COORD_Y<1>:f fSRC_VID_V_ORI<0;1,0>:f
-
- // Calculate 16 u based on the step X and hori origin
-// line (16) mfMSGPAYLOAD(0)<1> SCALE_STEP_X<0;1,0>:f SAMPLER_RAMP(0) // Assign to mrf directly
- mov (16) acc0:f fSRC_VID_H_ORI<0;1,0>:f { Compr }
- mac (16) mfMSGPAYLOAD(0)<1> fVIDEO_STEP_X<0;1,0>:f SAMPLER_RAMP(0) { Compr }
-
- //Setup the constants for line instruction
- mov (1) SCALE_LINE_P255<1>:f 255.0:f { NoDDClr } //{ NoDDClr, NoDDChk }
- mov (1) SCALE_LINE_P0_5<1>:f 0.5:f { NoDDChk }
-
-//------------------------------------------------------------------------------
-
-$for (0; <nY_NUM_OF_ROWS; 1) {
- // Read 16 sampled pixels and store them in float32 in 8 GRFs in the order of BGRA (VYUA).
- mov (8) MSGHDR_SCALE<1>:ud rMSGSRC<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (16) SCALE_RESPONSE_VW(0)<1> MSGHDR_SCALE udDUMMY_NULL nSMPL_ENGINE SMPLR_MSG_DSC+nSI_SRC_SIMD16_V+nBI_CURRENT_SRC_V
- send (16) SCALE_RESPONSE_YW(0)<1> MSGHDR_SCALE udDUMMY_NULL nSMPL_ENGINE SMPLR_MSG_DSC+nSI_SRC_SIMD16_Y+nBI_CURRENT_SRC_Y
- send (16) SCALE_RESPONSE_UW(0)<1> MSGHDR_SCALE udDUMMY_NULL nSMPL_ENGINE SMPLR_MSG_DSC+nSI_SRC_SIMD16_U+nBI_CURRENT_SRC_U
-
- // Calculate 16 v for next line
- add (16) mfMSGPAYLOAD(2)<1> SCALE_COORD_Y<8;8,1>:f fVIDEO_STEP_Y<0;1,0>:f // Assign to mrf directly
- add (16) SCALE_COORD_Y<1>:f SCALE_COORD_Y<8;8,1>:f fVIDEO_STEP_Y<0;1,0>:f // Assign to mrf directly
-
- // Scale back to [0, 255], convert f to ud
- line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_VF(0) { Compr } // Process B, V
- mov (16) SCALE_RESPONSE_VD(0)<1> acc0:f { Compr }
-
- line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_YF(0) { Compr } // Process B, V
- mov (16) SCALE_RESPONSE_YD(0)<1> acc0:f { Compr }
-
- line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_UF(0) { Compr } // Process B, V
- mov (16) SCALE_RESPONSE_UD(0)<1> acc0:f { Compr }
-
- mov (16) DEST_V(%1)<1> SCALE_RESPONSE_VB(0) //possible error due to truncation - vK
- mov (16) DEST_Y(%1)<1> SCALE_RESPONSE_YB(0) //possible error due to truncation - vK
- mov (16) DEST_U(%1)<1> SCALE_RESPONSE_UB(0) //possible error due to truncation - vK
-
-}
-
- #define nSRC_REGION nREGION_1
-
-//------------------------------------------------------------------------------
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG.asm
deleted file mode 100644
index b5e9119..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG.asm
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#define DI_ENABLE
-
- #include "DNDI.inc"
-
- #ifdef DI_ONLY
- #undef nSMPL_RESP_LEN
- #define nSMPL_RESP_LEN nSMPL_RESP_LEN_DI // set the number of GRF
- #else
- #undef nSMPL_RESP_LEN
- #define nSMPL_RESP_LEN nSMPL_RESP_LEN_DNDI // set the number of GRF
- #endif
-
- #undef nDPW_BLOCK_SIZE_HIST
- #define nDPW_BLOCK_SIZE_HIST nBLOCK_WIDTH_4+nBLOCK_HEIGHT_1 // HIST Block Size for Write is 4x2
- #undef nDPW_BLOCK_SIZE_DN
- #define nDPW_BLOCK_SIZE_DN nBLOCK_WIDTH_16+nBLOCK_HEIGHT_4 // DN Block Size for Write is 16x4
-
-////////////////////////////////////// Run the DN Algorithm ///////////////////////////////////////
- #include "DNDI_Command.asm"
-
-////////////////////////////////////// Rearrange for Internal Planar //////////////////////////////
-
-////////////////////////////////////// Save the STMM Data for Next Run /////////////////////////
- // Write STMM to memory
- shr (1) rMSGSRC.0<1>:ud wORIX<0;1,0>:w 1:w NODDCLR_NODDCHK // X origin / 2
- mov (1) rMSGSRC.1<1>:ud wORIY<0;1,0>:w NODDCLR_NODDCHK // Y origin
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_STMM:ud NODDCHK // block width and height (8x4)
- mov (8) mudMSGHDR_STMM(0)<1> rMSGSRC.0<8;8,1>:ud // message header
- mov (8) mudMSGHDR_STMM(1)<1> udRESP(nDI_STMM_OFFSET,0) // Move STMM to MRF
- send (8) dNULLREG mMSGHDR_STMM udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_STMM+nBI_STMM_HISTORY_OUTPUT:ud
-
-#ifdef DI_ONLY
-#else
-
-////////////////////////////////////// Save the History Data for Next Run /////////////////////////
- #include "DI_Hist_Save.asm"
-
-////////////////////////////////////// Save the DN Curr Frame for Next Run ////////////////////////
-
- //set the save DN parameters
- mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w NODDCLR // X origin and Y origin
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_DN:ud NODDCLR_NODDCHK // block width and height (16x4)
- mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
-
- // check top/bottom field first
- cmp.e.f0.0 (1) null<1>:w ubTFLD_FIRST<0;1,0>:ub 1:w
- (f0.0) jmpi (1) TOP_FIELD_FIRST
-
-BOTTOM_FIELD_FIRST:
- $for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
- mov (4) mudMSGHDR_DN(1,%1*4)<1> udRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*4)<4;4,1> // 2nd field luma from current frame (line 0,2)
- }
- $for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
- mov (4) mudMSGHDR_DN(1,%1*4+4)<1> udRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,4)<4;4,1> // 1st field luma from current frame (line 1,3)
- }
-
- jmpi (1) SAVE_DN_CURR
-
-TOP_FIELD_FIRST:
- $for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
- mov (4) mudMSGHDR_DN(1,%1*4)<1> udRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,0)<4;4,1> // 2nd field luma from current frame (line 0,2)
- }
- $for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
- mov (4) mudMSGHDR_DN(1,%1*4+4)<1> udRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*4)<4;4,1> // 1st field luma from current frame (line 1,3)
- }
-
-SAVE_DN_CURR:
- send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_PL_DN_DI+nBI_DESTINATION_Y:ud
-#endif
-
-// Save Processed frames
-#include "DI_Save_PA.asm"
-
-
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG_UVCopy_NV11.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG_UVCopy_NV11.asm
deleted file mode 100644
index e69ed1d..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG_UVCopy_NV11.asm
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#define DI_ENABLE
-
- #include "DNDI.inc"
-
- #undef nY_NUM_OF_ROWS
- #define nY_NUM_OF_ROWS 8 // Number of Y rows per block (4 rows for each frame)
- #undef nUV_NUM_OF_ROWS
- #define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
-
- #undef nSMPL_RESP_LEN
- #define nSMPL_RESP_LEN nSMPL_RESP_LEN_DNDI // set the number of GRF
- #undef nDPW_BLOCK_SIZE_HIST
- #define nDPW_BLOCK_SIZE_HIST nBLOCK_WIDTH_4+nBLOCK_HEIGHT_1 // HIST Block Size for Write is 4x2
- #undef nDPW_BLOCK_SIZE_DN
- #define nDPW_BLOCK_SIZE_DN nBLOCK_WIDTH_16+nBLOCK_HEIGHT_4 // DN Block Size for Write is 16x4
- #undef nDPR_BLOCK_SIZE_UV
- #define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_8+nBLOCK_HEIGHT_4 // DN Block Size for UV Write/Read is 8x4
-
-////////////////////////////////////// Run the DN Algorithm ///////////////////////////////////////
- #include "DNDI_Command.asm"
-
-////////////////////////////////////// Rearrange for Internal Planar //////////////////////////////
- // move the previous frame Y component to internal planar format
- $for (0; <nY_NUM_OF_ROWS/2; 1) {
- mov (16) uwDEST_Y(%1,0)<1> ubRESP(nDI_PREV_FRAME_LUMA_OFFSET,%1*16)
- }
- // move the previous frame U,V components to internal planar format
- $for (0; <nUV_NUM_OF_ROWS/2; 1) {
- mov (8) uwDEST_U(0,%1*8)<1> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
- mov (8) uwDEST_V(0,%1*8)<1> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //V pixels
- }
- // move the current frame Y component to internal planar format
- $for (0; <nY_NUM_OF_ROWS/2; 1) {
- mov (16) uwDEST_Y(%1+4,0)<1> ubRESP(nDI_CURR_FRAME_LUMA_OFFSET,%1*16)
- }
- // move the current frame U,V components to internal planar format
- $for (0; <nUV_NUM_OF_ROWS/2; 1) {
- mov (8) uwDEST_U(2,%1*8)<1> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
- mov (8) uwDEST_V(2,%1*8)<1> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //V pixels
- }
-
-////////////////////////////////////// Save the STMM Data for Next Run /////////////////////////
- // Write STMM to memory
- shr (1) rMSGSRC.0<1>:ud wORIX<0;1,0>:w 1:w // X origin / 2
- mov (1) rMSGSRC.1<1>:ud wORIY<0;1,0>:w // Y origin
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_STMM:ud // block width and height (8x4)
- mov (8) mudMSGHDR_STMM(0)<1> rMSGSRC.0<8;8,1>:ud // message header
- mov (8) mudMSGHDR_STMM(1)<1> udRESP(nDI_STMM_OFFSET,0) // Move STMM to MRF
- send (8) dNULLREG mMSGHDR_STMM udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_STMM+nBI_STMM_HISTORY_OUTPUT:ud
-
-////////////////////////////////////// Save the History Data for Next Run /////////////////////////
- #include "DI_Hist_Save.asm"
-
-////////////////////////////////////// Save the DN Curr Frame for Next Run ////////////////////////
- add (4) pCF_Y_OFFSET<1>:uw ubSRC_CF_OFFSET<4;4,1>:ub npDN_YUV:w
- // check top/bottom field first
- cmp.e.f0.0 (1) null<1>:w ubTFLD_FIRST<0;1,0>:ub 1:w
- (f0.0) jmpi (1) TOP_FIELD_FIRST
-
-BOTTOM_FIELD_FIRST:
- $for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
- mov (4) mudMSGHDR_DN(1,%1*4)<1> udRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*4)<4;4,1> // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN(1,%1*4+4)<1> udRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,4)<4;4,1> // 1st field luma from current frame (line 1,3)
- }
- jmpi (1) SAVE_DN_CURR
-
-TOP_FIELD_FIRST:
- $for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
- mov (4) mudMSGHDR_DN(1,%1*4)<1> udRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,0)<4;4,1> // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN(1,%1*4+4)<1> udRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*4)<4;4,1> // 1st field luma from current frame (line 1,3)
- }
-SAVE_DN_CURR:
- mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w // X origin and Y origin
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_DN:ud // block width and height (16x4)
- mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
- send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_PL_DN_DI+nBI_DESTINATION_Y:ud
-
-
-/////////////////////////////P208 UV Copy 422/////////////////////////////////////////////////////
- //Read UV through DATAPORT
- add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
- asr (1) rMSGSRC.0<1>:d rMSGSRC.0<0;1,0>:d 1:w // U/V block origin should be half of Y's
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (16x2)
- mov (8) mudMSGHDR_DN<1> rMSGSRC<8;8,1>:ud
- send (8) udBOT_U_IO(0)<1> mMSGHDR_DN udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nRESLEN_1+nBI_CURRENT_SRC_UV:ud
-
- //Write UV through DATAPORT
- mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w // X origin and Y origin
- asr (1) rMSGSRC.0<1>:d rMSGSRC.0<0;1,0>:d 1:w // U/V block origin should be half of Y's
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // block width and height (16x2)
- mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
- mov (8) mudMSGHDR_DN(1)<1> udBOT_U_IO(0)<8;8,1>
- send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nMSGLEN_1+nBI_DESTINATION_UV:ud \ No newline at end of file
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG_UVCopy_NV12.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG_UVCopy_NV12.asm
deleted file mode 100644
index 94b5674..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG_UVCopy_NV12.asm
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#define DI_ENABLE
-
- #include "DNDI.inc"
-
- #undef nY_NUM_OF_ROWS
- #define nY_NUM_OF_ROWS 8 // Number of Y rows per block (4 rows for each frame)
- #undef nUV_NUM_OF_ROWS
- #define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
-
- #undef nSMPL_RESP_LEN
- #define nSMPL_RESP_LEN nSMPL_RESP_LEN_DNDI // set the number of GRF
- #undef nDPW_BLOCK_SIZE_HIST
- #define nDPW_BLOCK_SIZE_HIST nBLOCK_WIDTH_4+nBLOCK_HEIGHT_1 // HIST Block Size for Write is 4x2
- #undef nDPW_BLOCK_SIZE_DN
- #define nDPW_BLOCK_SIZE_DN nBLOCK_WIDTH_16+nBLOCK_HEIGHT_4 // DN Block Size for Write is 16x4
- #undef nDPR_BLOCK_SIZE_UV
- #define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_16+nBLOCK_HEIGHT_2 // DN Block Size for UV Write/Read is 16x2
-
-////////////////////////////////////// Run the DN Algorithm ///////////////////////////////////////
- #include "DNDI_COMMAND.asm"
-
-////////////////////////////////////// Rearrange for Internal Planar //////////////////////////////
- // move the previous frame Y component to internal planar format
- $for (0; <nY_NUM_OF_ROWS/2; 1) {
- mov (16) uwDEST_Y(%1,0)<1> ubRESP(nDI_PREV_FRAME_LUMA_OFFSET,%1*16)
- }
- // move the previous frame U,V components to internal planar format
- $for (0; <nUV_NUM_OF_ROWS/2; 1) {
- mov (8) uwDEST_U(0,%1*8)<1> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
- mov (8) uwDEST_V(0,%1*8)<1> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //V pixels
- }
- // move the current frame Y component to internal planar format
- $for (0; <nY_NUM_OF_ROWS/2; 1) {
- mov (16) uwDEST_Y(%1+4,0)<1> ubRESP(nDI_CURR_FRAME_LUMA_OFFSET,%1*16)
- }
- // move the current frame U,V components to internal planar format
- $for (0; <nUV_NUM_OF_ROWS/2; 1) {
- mov (8) uwDEST_U(2,%1*8)<1> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
- mov (8) uwDEST_V(2,%1*8)<1> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //V pixels
- }
-
-////////////////////////////////////// Save the STMM Data for Next Run /////////////////////////
- // Write STMM to memory
- shr (1) rMSGSRC.0<1>:ud wORIX<0;1,0>:w 1:w // X origin / 2
- mov (1) rMSGSRC.1<1>:ud wORIY<0;1,0>:w // Y origin
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_STMM:ud // block width and height (8x4)
- mov (8) mudMSGHDR_STMM(0)<1> rMSGSRC.0<8;8,1>:ud // message header
- mov (8) mudMSGHDR_STMM(1)<1> udRESP(nDI_STMM_OFFSET,0) // Move STMM to MRF
- send (8) dNULLREG mMSGHDR_STMM udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_STMM+nBI_STMM_HISTORY_OUTPUT:ud
-
-////////////////////////////////////// Save the History Data for Next Run /////////////////////////
- #include "DI_Hist_Save.asm"
-
-////////////////////////////////////// Save the DN Curr Frame for Next Run ////////////////////////
- // previous frame
- $for (0; <nY_NUM_OF_ROWS/2; 1) {
- mov (16) mubMSGHDR_DN(1, %1*16)<1> ubRESP(nDI_PREV_FRAME_LUMA_OFFSET,%1*16)
- }
-
- mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w // X origin and Y origin
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_DN:ud // block width and height (16x4)
- mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
- send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_PL_DN_DI+nBI_DESTINATION_Y:ud
-
- //Write UV through DATAPORT
- mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w // X origin and Y origin
- asr (1) rMSGSRC.1<1>:d rMSGSRC.1<0;1,0>:d 1:w // U/V block origin should be half of Y's
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // block width and height (16x2)
- mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
-
- mov (8) mubMSGHDR_DN(1, 0)<2> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET, 1)<16 ;8,2>
- mov (8) mubMSGHDR_DN(1, 1)<2> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET, 16)<16 ;8,2>
- mov (8) mubMSGHDR_DN(1, 16)<2> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET+1, 1)<16 ;8,2>
- mov (8) mubMSGHDR_DN(1, 17)<2> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET+1, 16)<16 ;8,2>
- send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nMSGLEN_1+nBI_DESTINATION_UV:ud
-
- // current frame
- $for (0; <nY_NUM_OF_ROWS/2; 1) {
- mov (16) mubMSGHDR_DN(1, %1*16)<1> ubRESP(nDI_CURR_FRAME_LUMA_OFFSET,%1*16)
- }
-
- mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w // X origin and Y origin
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_DN:ud // block width and height (16x4)
- mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
- send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_PL_DN_DI+nBI_DESTINATION_1_Y:ud
-
- //Write UV through DATAPORT
- mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w // X origin and Y origin
- asr (1) rMSGSRC.1<1>:d rMSGSRC.1<0;1,0>:d 1:w // U/V block origin should be half of Y's
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // block width and height (16x2)
- mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
-
- mov (8) mubMSGHDR_DN(1, 0)<2> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET, 1)<16 ;8,2>
- mov (8) mubMSGHDR_DN(1, 1)<2> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET, 16)<16 ;8,2>
- mov (8) mubMSGHDR_DN(1, 16)<2> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET+1, 1)<16 ;8,2>
- mov (8) mubMSGHDR_DN(1, 17)<2> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET+1, 16)<16 ;8,2>
- send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nMSGLEN_1+nBI_DESTINATION_1_UV:ud
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG_UVCopy_P208.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG_UVCopy_P208.asm
deleted file mode 100644
index 1377638..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG_UVCopy_P208.asm
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#define DI_ENABLE
-
- #include "DNDI.inc"
-
- #undef nY_NUM_OF_ROWS
- #define nY_NUM_OF_ROWS 8 // Number of Y rows per block (4 rows for each frame)
- #undef nUV_NUM_OF_ROWS
- #define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
-
- #undef nSMPL_RESP_LEN
- #define nSMPL_RESP_LEN nSMPL_RESP_LEN_DNDI // set the number of GRF
- #undef nDPW_BLOCK_SIZE_HIST
- #define nDPW_BLOCK_SIZE_HIST nBLOCK_WIDTH_4+nBLOCK_HEIGHT_1 // HIST Block Size for Write is 4x2
- #undef nDPW_BLOCK_SIZE_DN
- #define nDPW_BLOCK_SIZE_DN nBLOCK_WIDTH_16+nBLOCK_HEIGHT_4 // DN Block Size for Write is 16x4
-
-////////////////////////////////////// Run the DN Algorithm ///////////////////////////////////////
- #include "DNDI_Command.asm"
-
-////////////////////////////////////// Rearrange for Internal Planar //////////////////////////////
- // move the previous frame Y component to internal planar format
- $for (0; <nY_NUM_OF_ROWS/2; 1) {
- mov (16) uwDEST_Y(%1,0)<1> ubRESP(nDI_PREV_FRAME_LUMA_OFFSET,%1*16)
- }
- // move the previous frame U,V components to internal planar format
- $for (0; <nUV_NUM_OF_ROWS/2; 1) {
- mov (8) uwDEST_U(0,%1*8)<1> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
- mov (8) uwDEST_V(0,%1*8)<1> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //V pixels
- }
- // move the current frame Y component to internal planar format
- $for (0; <nY_NUM_OF_ROWS/2; 1) {
- mov (16) uwDEST_Y(%1+4,0)<1> ubRESP(nDI_CURR_FRAME_LUMA_OFFSET,%1*16)
- }
- // move the current frame U,V components to internal planar format
- $for (0; <nUV_NUM_OF_ROWS/2; 1) {
- mov (8) uwDEST_U(2,%1*8)<1> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
- mov (8) uwDEST_V(2,%1*8)<1> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //V pixels
- }
-
-////////////////////////////////////// Save the STMM Data for Next Run /////////////////////////
- // Write STMM to memory
- shr (1) rMSGSRC.0<1>:ud wORIX<0;1,0>:w 1:w // X origin / 2
- mov (1) rMSGSRC.1<1>:ud wORIY<0;1,0>:w // Y origin
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_STMM:ud // block width and height (8x4)
- mov (8) mudMSGHDR_STMM(0)<1> rMSGSRC.0<8;8,1>:ud // message header
- mov (8) mudMSGHDR_STMM(1)<1> udRESP(nDI_STMM_OFFSET,0) // Move STMM to MRF
- send (8) dNULLREG mMSGHDR_STMM udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_STMM+nBI_STMM_HISTORY_OUTPUT:ud
-
-////////////////////////////////////// Save the History Data for Next Run /////////////////////////
- #include "DI_Hist_Save.asm"
-
-////////////////////////////////////// Save the DN Curr Frame for Next Run ////////////////////////
- add (4) pCF_Y_OFFSET<1>:uw ubSRC_CF_OFFSET<4;4,1>:ub npDN_YUV:w
- // check top/bottom field first
- cmp.e.f0.0 (1) null<1>:w ubTFLD_FIRST<0;1,0>:ub 1:w
- (f0.0) jmpi (1) TOP_FIELD_FIRST
-
-BOTTOM_FIELD_FIRST:
- $for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
- mov (4) mudMSGHDR_DN(1,%1*4)<1> udRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*4)<4;4,1> // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN(1,%1*4+4)<1> udRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,4)<4;4,1> // 1st field luma from current frame (line 1,3)
- }
- jmpi (1) SAVE_DN_CURR
-
-TOP_FIELD_FIRST:
- $for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
- mov (4) mudMSGHDR_DN(1,%1*4)<1> udRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,0)<4;4,1> // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN(1,%1*4+4)<1> udRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*4)<4;4,1> // 1st field luma from current frame (line 1,3)
- }
-SAVE_DN_CURR:
- mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w // X origin and Y origin
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_DN:ud // block width and height (16x4)
- mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
- send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_PL_DN_DI+nBI_DESTINATION_Y:ud
-
-
-/////////////////////////////P208 UV Copy 422/////////////////////////////////////////////////////
- //Read UV through DATAPORT
- add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_DN:ud // Y Block width and height (16x4) (U/V block size is the same)
- mov (8) mudMSGHDR_DN<1> rMSGSRC<8;8,1>:ud
- send (8) udBOT_U_IO(0)<1> mMSGHDR_DN udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nRESLEN_2+nBI_CURRENT_SRC_UV:ud
-
- //Write UV through DATAPORT
- mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w // X origin and Y origin
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_DN:ud // block width and height (16x4)
- mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
- mov (8) mudMSGHDR_DN(1)<1> udBOT_U_IO(0)<8;8,1>
- mov (8) mudMSGHDR_DN(2)<1> udBOT_U_IO(1)<8;8,1>
- send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_PL_DN_DI+nBI_DESTINATION_UV:ud
- \ No newline at end of file
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG_UVCopy_PL3.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG_UVCopy_PL3.asm
deleted file mode 100644
index e371575..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PL_DNDI_ALG_UVCopy_PL3.asm
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#define DI_ENABLE
-
- #include "DNDI.inc"
-
- #undef nY_NUM_OF_ROWS
- #define nY_NUM_OF_ROWS 8 // Number of Y rows per block (4 rows for each frame)
- #undef nUV_NUM_OF_ROWS
- #define nUV_NUM_OF_ROWS 8 // Number of U/V rows per block
-
- #undef nSMPL_RESP_LEN
- #define nSMPL_RESP_LEN nSMPL_RESP_LEN_DNDI // set the number of GRF
- #undef nDPW_BLOCK_SIZE_HIST
- #define nDPW_BLOCK_SIZE_HIST nBLOCK_WIDTH_4+nBLOCK_HEIGHT_1 // HIST Block Size for Write is 4x2
- #undef nDPW_BLOCK_SIZE_DN
- #define nDPW_BLOCK_SIZE_DN nBLOCK_WIDTH_16+nBLOCK_HEIGHT_4 // DN Block Size for Write is 16x4
- #undef nDPR_BLOCK_SIZE_UV
- #define nDPR_BLOCK_SIZE_UV nBLOCK_WIDTH_8+nBLOCK_HEIGHT_2 // DN Block Size for UV Write/Read is 8x2
-
-////////////////////////////////////// Run the DN Algorithm ///////////////////////////////////////
- #include "DNDI_Command.asm"
-
-////////////////////////////////////// Rearrange for Internal Planar //////////////////////////////
- // move the previous frame Y component to internal planar format
- $for (0; <nY_NUM_OF_ROWS/2; 1) {
- mov (16) uwDEST_Y(%1,0)<1> ubRESP(nDI_PREV_FRAME_LUMA_OFFSET,%1*16)
- }
- // move the previous frame U,V components to internal planar format
- $for (0; <nUV_NUM_OF_ROWS/2; 1) {
- mov (8) uwDEST_U(0,%1*8)<1> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
- mov (8) uwDEST_V(0,%1*8)<1> ubRESP(nDI_PREV_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //V pixels
- }
- // move the current frame Y component to internal planar format
- $for (0; <nY_NUM_OF_ROWS/2; 1) {
- mov (16) uwDEST_Y(%1+4,0)<1> ubRESP(nDI_CURR_FRAME_LUMA_OFFSET,%1*16)
- }
- // move the current frame U,V components to internal planar format
- $for (0; <nUV_NUM_OF_ROWS/2; 1) {
- mov (8) uwDEST_U(2,%1*8)<1> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16+1)<16;8,2> //U pixels
- mov (8) uwDEST_V(2,%1*8)<1> ubRESP(nDI_CURR_FRAME_CHROMA_OFFSET,%1*16)<16;8,2> //V pixels
- }
-
-////////////////////////////////////// Save the STMM Data for Next Run /////////////////////////
- // Write STMM to memory
- shr (1) rMSGSRC.0<1>:ud wORIX<0;1,0>:w 1:w // X origin / 2
- mov (1) rMSGSRC.1<1>:ud wORIY<0;1,0>:w // Y origin
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_STMM:ud // block width and height (8x4)
- mov (8) mudMSGHDR_STMM(0)<1> rMSGSRC.0<8;8,1>:ud // message header
- mov (8) mudMSGHDR_STMM(1)<1> udRESP(nDI_STMM_OFFSET,0) // Move STMM to MRF
- send (8) dNULLREG mMSGHDR_STMM udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_STMM+nBI_STMM_HISTORY_OUTPUT:ud
-
-////////////////////////////////////// Save the History Data for Next Run /////////////////////////
- #include "DI_Hist_Save.asm"
-
-////////////////////////////////////// Save the DN Curr Frame for Next Run ////////////////////////
- add (4) pCF_Y_OFFSET<1>:uw ubSRC_CF_OFFSET<4;4,1>:ub npDN_YUV:w
- // check top/bottom field first
- cmp.e.f0.0 (1) null<1>:w ubTFLD_FIRST<0;1,0>:ub 1:w
- (f0.0) jmpi (1) TOP_FIELD_FIRST
-
-BOTTOM_FIELD_FIRST:
- $for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
- mov (4) mudMSGHDR_DN(1,%1*4)<1> udRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*4)<4;4,1> // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN(1,%1*4+4)<1> udRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,4)<4;4,1> // 1st field luma from current frame (line 1,3)
- }
- jmpi (1) SAVE_DN_CURR
-
-TOP_FIELD_FIRST:
- $for (0,0; <nY_NUM_OF_ROWS/2; 2,1) {
- mov (4) mudMSGHDR_DN(1,%1*4)<1> udRESP(nDI_CURR_FRAME_LUMA_OFFSET+%2,0)<4;4,1> // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN(1,%1*4+4)<1> udRESP(nDI_CURR_2ND_FIELD_LUMA_OFFSET,%2*4)<4;4,1> // 1st field luma from current frame (line 1,3)
- }
-SAVE_DN_CURR:
- mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w // X origin and Y origin
- mov (1) rMSGSRC.2<1>:ud nDPW_BLOCK_SIZE_DN:ud // block width and height (16x4)
- mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
- send (8) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nDPMW_MSG_LEN_PL_DN_DI+nBI_DESTINATION_Y:ud
-
-
-/////////////////////////////IMC3 UV Copy 422/////////////////////////////////////////////////////
- //Read UV through DATAPORT
- add (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w wSRC_H_ORI_OFFSET<2;2,1>:w // Source Y Block origin
- asr (2) rMSGSRC.0<1>:d rMSGSRC.0<2;2,1>:d 1:w // U/V block origin should be half of Y's
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // U/V block width and height (8x2)
- mov (8) mudMSGHDR_DN<1> rMSGSRC<8;8,1>:ud
- send (4) udBOT_U_IO(0)<1> mMSGHDR_DN udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nRESLEN_1+nBI_CURRENT_SRC_U:ud
- send (4) udBOT_V_IO(0)<1> mMSGHDR_DN udDUMMY_NULL nDATAPORT_READ nDPMR_MSGDSC+nRESLEN_1+nBI_CURRENT_SRC_V:ud
-
- //Write UV through DATAPORT
- mov (2) rMSGSRC.0<1>:ud wORIX<2;2,1>:w // X origin and Y origin
- asr (2) rMSGSRC.0<1>:d wORIX<2;2,1>:w 1:w // U/V block origin should be half of Y's
- mov (1) rMSGSRC.2<1>:ud nDPR_BLOCK_SIZE_UV:ud // block width and height (8x2)
- mov (8) mudMSGHDR_DN(0)<1> rMSGSRC.0<8;8,1>:ud
- mov (4) mudMSGHDR_DN(1)<1> udBOT_U_IO(0)<4;4,1>
- send (4) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nMSGLEN_1+nBI_DESTINATION_U:ud
- mov (4) mudMSGHDR_DN(1)<1> udBOT_V_IO(0)<4;4,1>
- send (4) dNULLREG mMSGHDR_DN udDUMMY_NULL nDATAPORT_WRITE nDPMW_MSGDSC+nMSGLEN_1+nBI_DESTINATION_V:ud \ No newline at end of file
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/PL_DN_ALG.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/PL_DN_ALG.asm
deleted file mode 100644
index 2df3ce2..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/PL_DN_ALG.asm
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#define DI_DISABLE
-
-#include "DNDI.inc"
-
-#undef nY_NUM_OF_ROWS
-#define nY_NUM_OF_ROWS 8 // Number of Y rows per block
-
-#undef nSMPL_RESP_LEN
-#define nSMPL_RESP_LEN nSMPL_RESP_LEN_DN_PL // Set the Number of GRFs in DNDI response
-#undef nDPW_BLOCK_SIZE_DN
-#define nDPW_BLOCK_SIZE_DN nBLOCK_WIDTH_16+nBLOCK_HEIGHT_8 // DN Curr Block Size for Write is 16x8
-#undef nDPW_BLOCK_SIZE_HIST
-#define nDPW_BLOCK_SIZE_HIST nBLOCK_WIDTH_4+nBLOCK_HEIGHT_2 // HIST Block Size for Write is 4x2
-
-////////////////////////////////////// Run the DN Algorithm ///////////////////////////////////////
-#include "DNDI_COMMAND.asm"
-
-////////////////////////////////////// Rearrange for Internal Planar //////////////////////////////
-$for (0; <nY_NUM_OF_ROWS; 1) {
- mov (16) uwDEST_Y(0,%1*16)<1> ubRESP(nNODI_LUMA_OFFSET,%1*16)<16;16,1> // copy line of Y
-}
-
-////////////////////////////////////// Save the History Data for Next Run /////////////////////////
-#include "DNDI_Hist_Save.asm"
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/RGB_AVS_IEF_16x8.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/RGB_AVS_IEF_16x8.asm
deleted file mode 100644
index 2d799dc..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/RGB_AVS_IEF_16x8.asm
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- RGB_AVS_IEF_16x8.asm ----------
-
-#include "AVS_IEF.inc"
-
-//------------------------------------------------------------------------------
-// 2 sampler reads for 8x8 ARGB packed
-//------------------------------------------------------------------------------
-
- // 1st 8x8 setup
- #include "AVS_SetupFirstBlock.asm"
-
- mov (1) rAVS_8x8_HDR.2:ud nAVS_ALL_CHANNELS:ud // Enable ARGB channels
- mov (16) mAVS_8x8_HDR.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE(0)<1> mAVS_8x8_HDR udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_4CH+nSI_SRC_RGB+nBI_CURRENT_SRC_YUV
- // Return ARGB in 16 GRFs
-
- // 2nd 8x8 setup
- #include "AVS_SetupSecondBlock.asm"
- mov (16) mAVS_8x8_HDR_2.0:ud rAVS_8x8_HDR.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (1) uwAVS_RESPONSE_2(0)<1> mAVS_8x8_HDR_2 udDUMMY_NULL nSMPL_ENGINE nAVS_MSG_DSC_4CH+nSI_SRC_RGB+nBI_CURRENT_SRC_YUV
- // Return ARGB in 16 GRFs
-
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/RGB_AVS_IEF_Unpack_16x8.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/RGB_AVS_IEF_Unpack_16x8.asm
deleted file mode 100644
index f40bc61..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/RGB_AVS_IEF_Unpack_16x8.asm
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- RGB_AVS_IEF_Unpack_16x8.asm ----------
-#include "AVS_IEF.inc"
-
-#ifdef AVS_OUTPUT_16_BIT
-// Move first 8x8 words of B to dest GRF (as packed)
- mov (4) uwDEST_Y(0,2)<4> uwAVS_RESPONSE(4,0)<4;4,1>
- mov (4) uwDEST_Y(1,2)<4> uwAVS_RESPONSE(4,8)<4;4,1>
- mov (4) uwDEST_Y(4,2)<4> uwAVS_RESPONSE(4,4)<4;4,1>
- mov (4) uwDEST_Y(5,2)<4> uwAVS_RESPONSE(4,12)<4;4,1>
- mov (4) uwDEST_Y(8,2)<4> uwAVS_RESPONSE(5,0)<4;4,1>
- mov (4) uwDEST_Y(9,2)<4> uwAVS_RESPONSE(5,8)<4;4,1>
- mov (4) uwDEST_Y(12,2)<4> uwAVS_RESPONSE(5,4)<4;4,1>
- mov (4) uwDEST_Y(13,2)<4> uwAVS_RESPONSE(5,12)<4;4,1>
- mov (4) uwDEST_Y(16,2)<4> uwAVS_RESPONSE(12,0)<4;4,1>
- mov (4) uwDEST_Y(17,2)<4> uwAVS_RESPONSE(12,8)<4;4,1>
- mov (4) uwDEST_Y(20,2)<4> uwAVS_RESPONSE(12,4)<4;4,1>
- mov (4) uwDEST_Y(21,2)<4> uwAVS_RESPONSE(12,12)<4;4,1>
- mov (4) uwDEST_Y(24,2)<4> uwAVS_RESPONSE(13,0)<4;4,1>
- mov (4) uwDEST_Y(25,2)<4> uwAVS_RESPONSE(13,8)<4;4,1>
- mov (4) uwDEST_Y(28,2)<4> uwAVS_RESPONSE(13,4)<4;4,1>
- mov (4) uwDEST_Y(29,2)<4> uwAVS_RESPONSE(13,12)<4;4,1>
-
-// Move first 8x8 words of G to dest GRF (as packed)
- mov (4) uwDEST_Y(0,1)<4> uwAVS_RESPONSE(2,0)<4;4,1>
- mov (4) uwDEST_Y(1,1)<4> uwAVS_RESPONSE(2,8)<4;4,1>
- mov (4) uwDEST_Y(4,1)<4> uwAVS_RESPONSE(2,4)<4;4,1>
- mov (4) uwDEST_Y(5,1)<4> uwAVS_RESPONSE(2,12)<4;4,1>
- mov (4) uwDEST_Y(8,1)<4> uwAVS_RESPONSE(3,0)<4;4,1>
- mov (4) uwDEST_Y(9,1)<4> uwAVS_RESPONSE(3,8)<4;4,1>
- mov (4) uwDEST_Y(12,1)<4> uwAVS_RESPONSE(3,4)<4;4,1>
- mov (4) uwDEST_Y(13,1)<4> uwAVS_RESPONSE(3,12)<4;4,1>
- mov (4) uwDEST_Y(16,1)<4> uwAVS_RESPONSE(10,0)<4;4,1>
- mov (4) uwDEST_Y(17,1)<4> uwAVS_RESPONSE(10,8)<4;4,1>
- mov (4) uwDEST_Y(20,1)<4> uwAVS_RESPONSE(10,4)<4;4,1>
- mov (4) uwDEST_Y(21,1)<4> uwAVS_RESPONSE(10,12)<4;4,1>
- mov (4) uwDEST_Y(24,1)<4> uwAVS_RESPONSE(11,0)<4;4,1>
- mov (4) uwDEST_Y(25,1)<4> uwAVS_RESPONSE(11,8)<4;4,1>
- mov (4) uwDEST_Y(28,1)<4> uwAVS_RESPONSE(11,4)<4;4,1>
- mov (4) uwDEST_Y(29,1)<4> uwAVS_RESPONSE(11,12)<4;4,1>
-
-// Move first 8x8 words of R to dest GRF (as packed)
- mov (4) uwDEST_Y(0,0)<4> uwAVS_RESPONSE(0,0)<4;4,1>
- mov (4) uwDEST_Y(1,0)<4> uwAVS_RESPONSE(0,8)<4;4,1>
- mov (4) uwDEST_Y(4,0)<4> uwAVS_RESPONSE(0,4)<4;4,1>
- mov (4) uwDEST_Y(5,0)<4> uwAVS_RESPONSE(0,12)<4;4,1>
- mov (4) uwDEST_Y(8,0)<4> uwAVS_RESPONSE(1,0)<4;4,1>
- mov (4) uwDEST_Y(9,0)<4> uwAVS_RESPONSE(1,8)<4;4,1>
- mov (4) uwDEST_Y(12,0)<4> uwAVS_RESPONSE(1,4)<4;4,1>
- mov (4) uwDEST_Y(13,0)<4> uwAVS_RESPONSE(1,12)<4;4,1>
- mov (4) uwDEST_Y(16,0)<4> uwAVS_RESPONSE(8,0)<4;4,1>
- mov (4) uwDEST_Y(17,0)<4> uwAVS_RESPONSE(8,8)<4;4,1>
- mov (4) uwDEST_Y(20,0)<4> uwAVS_RESPONSE(8,4)<4;4,1>
- mov (4) uwDEST_Y(21,0)<4> uwAVS_RESPONSE(8,12)<4;4,1>
- mov (4) uwDEST_Y(24,0)<4> uwAVS_RESPONSE(9,0)<4;4,1>
- mov (4) uwDEST_Y(25,0)<4> uwAVS_RESPONSE(9,8)<4;4,1>
- mov (4) uwDEST_Y(28,0)<4> uwAVS_RESPONSE(9,4)<4;4,1>
- mov (4) uwDEST_Y(29,0)<4> uwAVS_RESPONSE(9,12)<4;4,1>
-
-// Move first 8x8 words of A to dest GRF (as packed)
- mov (4) uwDEST_Y(0,3)<4> uwAVS_RESPONSE(6,0)<4;4,1>
- mov (4) uwDEST_Y(1,3)<4> uwAVS_RESPONSE(6,8)<4;4,1>
- mov (4) uwDEST_Y(4,3)<4> uwAVS_RESPONSE(6,4)<4;4,1>
- mov (4) uwDEST_Y(5,3)<4> uwAVS_RESPONSE(6,12)<4;4,1>
- mov (4) uwDEST_Y(8,3)<4> uwAVS_RESPONSE(7,0)<4;4,1>
- mov (4) uwDEST_Y(9,3)<4> uwAVS_RESPONSE(7,8)<4;4,1>
- mov (4) uwDEST_Y(12,3)<4> uwAVS_RESPONSE(7,4)<4;4,1>
- mov (4) uwDEST_Y(13,3)<4> uwAVS_RESPONSE(7,12)<4;4,1>
- mov (4) uwDEST_Y(16,3)<4> uwAVS_RESPONSE(14,0)<4;4,1>
- mov (4) uwDEST_Y(17,3)<4> uwAVS_RESPONSE(14,8)<4;4,1>
- mov (4) uwDEST_Y(20,3)<4> uwAVS_RESPONSE(14,4)<4;4,1>
- mov (4) uwDEST_Y(21,3)<4> uwAVS_RESPONSE(14,12)<4;4,1>
- mov (4) uwDEST_Y(24,3)<4> uwAVS_RESPONSE(15,0)<4;4,1>
- mov (4) uwDEST_Y(25,3)<4> uwAVS_RESPONSE(15,8)<4;4,1>
- mov (4) uwDEST_Y(28,3)<4> uwAVS_RESPONSE(15,4)<4;4,1>
- mov (4) uwDEST_Y(29,3)<4> uwAVS_RESPONSE(15,12)<4;4,1>
-
-// Move second 8x8 words of B to dest GRF
- mov (4) uwDEST_Y(2,2)<4> uwAVS_RESPONSE_2(4,0)<4;4,1>
- mov (4) uwDEST_Y(3,2)<4> uwAVS_RESPONSE_2(4,8)<4;4,1>
- mov (4) uwDEST_Y(6,2)<4> uwAVS_RESPONSE_2(4,4)<4;4,1>
- mov (4) uwDEST_Y(7,2)<4> uwAVS_RESPONSE_2(4,12)<4;4,1>
- mov (4) uwDEST_Y(10,2)<4> uwAVS_RESPONSE_2(5,0)<4;4,1>
- mov (4) uwDEST_Y(11,2)<4> uwAVS_RESPONSE_2(5,8)<4;4,1>
- mov (4) uwDEST_Y(14,2)<4> uwAVS_RESPONSE_2(5,4)<4;4,1>
- mov (4) uwDEST_Y(15,2)<4> uwAVS_RESPONSE_2(5,12)<4;4,1>
- mov (4) uwDEST_Y(18,2)<4> uwAVS_RESPONSE_2(12,0)<4;4,1>
- mov (4) uwDEST_Y(19,2)<4> uwAVS_RESPONSE_2(12,8)<4;4,1>
- mov (4) uwDEST_Y(22,2)<4> uwAVS_RESPONSE_2(12,4)<4;4,1>
- mov (4) uwDEST_Y(23,2)<4> uwAVS_RESPONSE_2(12,12)<4;4,1>
- mov (4) uwDEST_Y(26,2)<4> uwAVS_RESPONSE_2(13,0)<4;4,1>
- mov (4) uwDEST_Y(27,2)<4> uwAVS_RESPONSE_2(13,8)<4;4,1>
- mov (4) uwDEST_Y(30,2)<4> uwAVS_RESPONSE_2(13,4)<4;4,1>
- mov (4) uwDEST_Y(31,2)<4> uwAVS_RESPONSE_2(13,12)<4;4,1>
-
-// Move second 8x8 words of G to dest GRF
- mov (4) uwDEST_Y(2,1)<4> uwAVS_RESPONSE_2(2,0)<4;4,1>
- mov (4) uwDEST_Y(3,1)<4> uwAVS_RESPONSE_2(2,8)<4;4,1>
- mov (4) uwDEST_Y(6,1)<4> uwAVS_RESPONSE_2(2,4)<4;4,1>
- mov (4) uwDEST_Y(7,1)<4> uwAVS_RESPONSE_2(2,12)<4;4,1>
- mov (4) uwDEST_Y(10,1)<4> uwAVS_RESPONSE_2(3,0)<4;4,1>
- mov (4) uwDEST_Y(11,1)<4> uwAVS_RESPONSE_2(3,8)<4;4,1>
- mov (4) uwDEST_Y(14,1)<4> uwAVS_RESPONSE_2(3,4)<4;4,1>
- mov (4) uwDEST_Y(15,1)<4> uwAVS_RESPONSE_2(3,12)<4;4,1>
- mov (4) uwDEST_Y(18,1)<4> uwAVS_RESPONSE_2(10,0)<4;4,1>
- mov (4) uwDEST_Y(19,1)<4> uwAVS_RESPONSE_2(10,8)<4;4,1>
- mov (4) uwDEST_Y(22,1)<4> uwAVS_RESPONSE_2(10,4)<4;4,1>
- mov (4) uwDEST_Y(23,1)<4> uwAVS_RESPONSE_2(10,12)<4;4,1>
- mov (4) uwDEST_Y(26,1)<4> uwAVS_RESPONSE_2(11,0)<4;4,1>
- mov (4) uwDEST_Y(27,1)<4> uwAVS_RESPONSE_2(11,8)<4;4,1>
- mov (4) uwDEST_Y(30,1)<4> uwAVS_RESPONSE_2(11,4)<4;4,1>
- mov (4) uwDEST_Y(31,1)<4> uwAVS_RESPONSE_2(11,12)<4;4,1>
-
-// Move second 8x8 words of R to dest GRF
- mov (4) uwDEST_Y(2,0)<4> uwAVS_RESPONSE_2(0,0)<4;4,1>
- mov (4) uwDEST_Y(3,0)<4> uwAVS_RESPONSE_2(0,8)<4;4,1>
- mov (4) uwDEST_Y(6,0)<4> uwAVS_RESPONSE_2(0,4)<4;4,1>
- mov (4) uwDEST_Y(7,0)<4> uwAVS_RESPONSE_2(0,12)<4;4,1>
- mov (4) uwDEST_Y(10,0)<4> uwAVS_RESPONSE_2(1,0)<4;4,1>
- mov (4) uwDEST_Y(11,0)<4> uwAVS_RESPONSE_2(1,8)<4;4,1>
- mov (4) uwDEST_Y(14,0)<4> uwAVS_RESPONSE_2(1,4)<4;4,1>
- mov (4) uwDEST_Y(15,0)<4> uwAVS_RESPONSE_2(1,12)<4;4,1>
- mov (4) uwDEST_Y(18,0)<4> uwAVS_RESPONSE_2(8,0)<4;4,1>
- mov (4) uwDEST_Y(19,0)<4> uwAVS_RESPONSE_2(8,8)<4;4,1>
- mov (4) uwDEST_Y(22,0)<4> uwAVS_RESPONSE_2(8,4)<4;4,1>
- mov (4) uwDEST_Y(23,0)<4> uwAVS_RESPONSE_2(8,12)<4;4,1>
- mov (4) uwDEST_Y(26,0)<4> uwAVS_RESPONSE_2(9,0)<4;4,1>
- mov (4) uwDEST_Y(27,0)<4> uwAVS_RESPONSE_2(9,8)<4;4,1>
- mov (4) uwDEST_Y(30,0)<4> uwAVS_RESPONSE_2(9,4)<4;4,1>
- mov (4) uwDEST_Y(31,0)<4> uwAVS_RESPONSE_2(9,12)<4;4,1>
-
-// Move second 8x8 words of A to dest GRF
- mov (4) uwDEST_Y(2,3)<4> uwAVS_RESPONSE_2(6,0)<4;4,1>
- mov (4) uwDEST_Y(3,3)<4> uwAVS_RESPONSE_2(6,8)<4;4,1>
- mov (4) uwDEST_Y(6,3)<4> uwAVS_RESPONSE_2(6,4)<4;4,1>
- mov (4) uwDEST_Y(7,3)<4> uwAVS_RESPONSE_2(6,12)<4;4,1>
- mov (4) uwDEST_Y(10,3)<4> uwAVS_RESPONSE_2(7,0)<4;4,1>
- mov (4) uwDEST_Y(11,3)<4> uwAVS_RESPONSE_2(7,8)<4;4,1>
- mov (4) uwDEST_Y(14,3)<4> uwAVS_RESPONSE_2(7,4)<4;4,1>
- mov (4) uwDEST_Y(15,3)<4> uwAVS_RESPONSE_2(7,12)<4;4,1>
- mov (4) uwDEST_Y(18,3)<4> uwAVS_RESPONSE_2(14,0)<4;4,1>
- mov (4) uwDEST_Y(19,3)<4> uwAVS_RESPONSE_2(14,8)<4;4,1>
- mov (4) uwDEST_Y(22,3)<4> uwAVS_RESPONSE_2(14,4)<4;4,1>
- mov (4) uwDEST_Y(23,3)<4> uwAVS_RESPONSE_2(14,12)<4;4,1>
- mov (4) uwDEST_Y(26,3)<4> uwAVS_RESPONSE_2(15,0)<4;4,1>
- mov (4) uwDEST_Y(27,3)<4> uwAVS_RESPONSE_2(15,8)<4;4,1>
- mov (4) uwDEST_Y(30,3)<4> uwAVS_RESPONSE_2(15,4)<4;4,1>
- mov (4) uwDEST_Y(31,3)<4> uwAVS_RESPONSE_2(15,12)<4;4,1>
-
-#else /* OUTPUT_8_BIT */
-// Move first 8x8 words of B to dest GRF
- mov (8) ubDEST_Y(0,2)<4> ubAVS_RESPONSE(4,1)<16;4,2>
- mov (8) ubDEST_Y(2,2)<4> ubAVS_RESPONSE(4,8+1)<16;4,2>
- mov (8) ubDEST_Y(4,2)<4> ubAVS_RESPONSE(5,1)<16;4,2>
- mov (8) ubDEST_Y(6,2)<4> ubAVS_RESPONSE(5,8+1)<16;4,2>
- mov (8) ubDEST_Y(8,2)<4> ubAVS_RESPONSE(12,1)<16;4,2>
- mov (8) ubDEST_Y(10,2)<4> ubAVS_RESPONSE(12,8+1)<16;4,2>
- mov (8) ubDEST_Y(12,2)<4> ubAVS_RESPONSE(13,1)<16;4,2>
- mov (8) ubDEST_Y(14,2)<4> ubAVS_RESPONSE(13,8+1)<16;4,2>
-
-// Move first 8x8 words of G to dest GRF
- mov (8) ubDEST_Y(0,1)<4> ubAVS_RESPONSE(2,1)<16;4,2>
- mov (8) ubDEST_Y(2,1)<4> ubAVS_RESPONSE(2,8+1)<16;4,2>
- mov (8) ubDEST_Y(4,1)<4> ubAVS_RESPONSE(3,1)<16;4,2>
- mov (8) ubDEST_Y(6,1)<4> ubAVS_RESPONSE(3,8+1)<16;4,2>
- mov (8) ubDEST_Y(8,1)<4> ubAVS_RESPONSE(10,1)<16;4,2>
- mov (8) ubDEST_Y(10,1)<4> ubAVS_RESPONSE(10,8+1)<16;4,2>
- mov (8) ubDEST_Y(12,1)<4> ubAVS_RESPONSE(11,1)<16;4,2>
- mov (8) ubDEST_Y(14,1)<4> ubAVS_RESPONSE(11,8+1)<16;4,2>
-
-// Move first 8x8 words of R to dest GRF
- mov (8) ubDEST_Y(0,0)<4> ubAVS_RESPONSE(0,1)<16;4,2>
- mov (8) ubDEST_Y(2,0)<4> ubAVS_RESPONSE(0,8+1)<16;4,2>
- mov (8) ubDEST_Y(4,0)<4> ubAVS_RESPONSE(1,1)<16;4,2>
- mov (8) ubDEST_Y(6,0)<4> ubAVS_RESPONSE(1,8+1)<16;4,2>
- mov (8) ubDEST_Y(8,0)<4> ubAVS_RESPONSE(8,1)<16;4,2>
- mov (8) ubDEST_Y(10,0)<4> ubAVS_RESPONSE(8,8+1)<16;4,2>
- mov (8) ubDEST_Y(12,0)<4> ubAVS_RESPONSE(9,1)<16;4,2>
- mov (8) ubDEST_Y(14,0)<4> ubAVS_RESPONSE(9,8+1)<16;4,2>
-
-// Move first 8x8 words of A to dest GRF
- mov (8) ubDEST_Y(0,3)<4> ubAVS_RESPONSE(6,1)<16;4,2>
- mov (8) ubDEST_Y(2,3)<4> ubAVS_RESPONSE(6,8+1)<16;4,2>
- mov (8) ubDEST_Y(4,3)<4> ubAVS_RESPONSE(7,1)<16;4,2>
- mov (8) ubDEST_Y(6,3)<4> ubAVS_RESPONSE(7,8+1)<16;4,2>
- mov (8) ubDEST_Y(8,3)<4> ubAVS_RESPONSE(14,1)<16;4,2>
- mov (8) ubDEST_Y(10,3)<4> ubAVS_RESPONSE(14,8+1)<16;4,2>
- mov (8) ubDEST_Y(12,3)<4> ubAVS_RESPONSE(15,1)<16;4,2>
- mov (8) ubDEST_Y(14,3)<4> ubAVS_RESPONSE(15,8+1)<16;4,2>
-
-// Move second 8x8 words of B to dest GRF
- mov (8) ubDEST_Y(1,2)<4> ubAVS_RESPONSE_2(4,1)<16;4,2>
- mov (8) ubDEST_Y(3,2)<4> ubAVS_RESPONSE_2(4,8+1)<16;4,2>
- mov (8) ubDEST_Y(5,2)<4> ubAVS_RESPONSE_2(5,1)<16;4,2>
- mov (8) ubDEST_Y(7,2)<4> ubAVS_RESPONSE_2(5,8+1)<16;4,2>
- mov (8) ubDEST_Y(9,2)<4> ubAVS_RESPONSE_2(12,1)<16;4,2>
- mov (8) ubDEST_Y(11,2)<4> ubAVS_RESPONSE_2(12,8+1)<16;4,2>
- mov (8) ubDEST_Y(13,2)<4> ubAVS_RESPONSE_2(13,1)<16;4,2>
- mov (8) ubDEST_Y(15,2)<4> ubAVS_RESPONSE_2(13,8+1)<16;4,2>
-
-// Move second 8x8 words of G to dest GRF
- mov (8) ubDEST_Y(1,1)<4> ubAVS_RESPONSE_2(2,1)<16;4,2>
- mov (8) ubDEST_Y(3,1)<4> ubAVS_RESPONSE_2(2,8+1)<16;4,2>
- mov (8) ubDEST_Y(5,1)<4> ubAVS_RESPONSE_2(3,1)<16;4,2>
- mov (8) ubDEST_Y(7,1)<4> ubAVS_RESPONSE_2(3,8+1)<16;4,2>
- mov (8) ubDEST_Y(9,1)<4> ubAVS_RESPONSE_2(10,1)<16;4,2>
- mov (8) ubDEST_Y(11,1)<4> ubAVS_RESPONSE_2(10,8+1)<16;4,2>
- mov (8) ubDEST_Y(13,1)<4> ubAVS_RESPONSE_2(11,1)<16;4,2>
- mov (8) ubDEST_Y(15,1)<4> ubAVS_RESPONSE_2(11,8+1)<16;4,2>
-
-// Move second 8x8 words of R to dest GRF
- mov (8) ubDEST_Y(1,0)<4> ubAVS_RESPONSE_2(0,1)<16;4,2>
- mov (8) ubDEST_Y(3,0)<4> ubAVS_RESPONSE_2(0,8+1)<16;4,2>
- mov (8) ubDEST_Y(5,0)<4> ubAVS_RESPONSE_2(1,1)<16;4,2>
- mov (8) ubDEST_Y(7,0)<4> ubAVS_RESPONSE_2(1,8+1)<16;4,2>
- mov (8) ubDEST_Y(9,0)<4> ubAVS_RESPONSE_2(8,1)<16;4,2>
- mov (8) ubDEST_Y(11,0)<4> ubAVS_RESPONSE_2(8,8+1)<16;4,2>
- mov (8) ubDEST_Y(13,0)<4> ubAVS_RESPONSE_2(9,1)<16;4,2>
- mov (8) ubDEST_Y(15,0)<4> ubAVS_RESPONSE_2(9,8+1)<16;4,2>
-
-// Move second 8x8 words of A to dest GRF
- mov (8) ubDEST_Y(1,3)<4> ubAVS_RESPONSE_2(6,1)<16;4,2>
- mov (8) ubDEST_Y(3,3)<4> ubAVS_RESPONSE_2(6,8+1)<16;4,2>
- mov (8) ubDEST_Y(5,3)<4> ubAVS_RESPONSE_2(7,1)<16;4,2>
- mov (8) ubDEST_Y(7,3)<4> ubAVS_RESPONSE_2(7,8+1)<16;4,2>
- mov (8) ubDEST_Y(9,3)<4> ubAVS_RESPONSE_2(14,1)<16;4,2>
- mov (8) ubDEST_Y(11,3)<4> ubAVS_RESPONSE_2(14,8+1)<16;4,2>
- mov (8) ubDEST_Y(13,3)<4> ubAVS_RESPONSE_2(15,1)<16;4,2>
- mov (8) ubDEST_Y(15,3)<4> ubAVS_RESPONSE_2(15,8+1)<16;4,2>
-#endif
-//------------------------------------------------------------------------------
-
- // Set to write bottom region to memory
- #define SRC_REGION REGION_2
-
- // Re-define new # of lines
- #undef nUV_NUM_OF_ROWS
- #undef nY_NUM_OF_ROWS
-
- #define nY_NUM_OF_ROWS 8
- #define nUV_NUM_OF_ROWS 8
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/RGB_AVS_IEF_Unscramble_16x8.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/RGB_AVS_IEF_Unscramble_16x8.asm
deleted file mode 100644
index 0730c07..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/RGB_AVS_IEF_Unscramble_16x8.asm
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- RGB_AVS_IEF_Unpack_16x8.asm ----------
-#include "AVS_IEF.inc"
-
-.declare DEST_B Base=REG(r,10) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
-.declare DEST_G Base=REG(r,18) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
-.declare DEST_R Base=REG(r,26) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
-.declare DEST_A Base=REG(r,34) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
-
-
-#ifdef AVS_OUTPUT_16_BIT
-//This portion will need to be changed if unpacking is required for Y416 kernels (in case of blending etc) - vK
-
-//// Move first 8x8 words of B to dest GRF (as packed)
-// mov (4) uwDEST_Y(0,2)<4> uwAVS_RESPONSE(4,0)<4;4,1>
-// mov (4) uwDEST_Y(1,2)<4> uwAVS_RESPONSE(4,8)<4;4,1>
-// mov (4) uwDEST_Y(4,2)<4> uwAVS_RESPONSE(4,4)<4;4,1>
-// mov (4) uwDEST_Y(5,2)<4> uwAVS_RESPONSE(4,12)<4;4,1>
-// mov (4) uwDEST_Y(8,2)<4> uwAVS_RESPONSE(5,0)<4;4,1>
-// mov (4) uwDEST_Y(9,2)<4> uwAVS_RESPONSE(5,8)<4;4,1>
-// mov (4) uwDEST_Y(12,2)<4> uwAVS_RESPONSE(5,4)<4;4,1>
-// mov (4) uwDEST_Y(13,2)<4> uwAVS_RESPONSE(5,12)<4;4,1>
-// mov (4) uwDEST_Y(16,2)<4> uwAVS_RESPONSE(12,0)<4;4,1>
-// mov (4) uwDEST_Y(17,2)<4> uwAVS_RESPONSE(12,8)<4;4,1>
-// mov (4) uwDEST_Y(20,2)<4> uwAVS_RESPONSE(12,4)<4;4,1>
-// mov (4) uwDEST_Y(21,2)<4> uwAVS_RESPONSE(12,12)<4;4,1>
-// mov (4) uwDEST_Y(24,2)<4> uwAVS_RESPONSE(13,0)<4;4,1>
-// mov (4) uwDEST_Y(25,2)<4> uwAVS_RESPONSE(13,8)<4;4,1>
-// mov (4) uwDEST_Y(28,2)<4> uwAVS_RESPONSE(13,4)<4;4,1>
-// mov (4) uwDEST_Y(29,2)<4> uwAVS_RESPONSE(13,12)<4;4,1>
-//
-//// Move first 8x8 words of G to dest GRF (as packed)
-// mov (4) uwDEST_Y(0,1)<4> uwAVS_RESPONSE(2,0)<4;4,1>
-// mov (4) uwDEST_Y(1,1)<4> uwAVS_RESPONSE(2,8)<4;4,1>
-// mov (4) uwDEST_Y(4,1)<4> uwAVS_RESPONSE(2,4)<4;4,1>
-// mov (4) uwDEST_Y(5,1)<4> uwAVS_RESPONSE(2,12)<4;4,1>
-// mov (4) uwDEST_Y(8,1)<4> uwAVS_RESPONSE(3,0)<4;4,1>
-// mov (4) uwDEST_Y(9,1)<4> uwAVS_RESPONSE(3,8)<4;4,1>
-// mov (4) uwDEST_Y(12,1)<4> uwAVS_RESPONSE(3,4)<4;4,1>
-// mov (4) uwDEST_Y(13,1)<4> uwAVS_RESPONSE(3,12)<4;4,1>
-// mov (4) uwDEST_Y(16,1)<4> uwAVS_RESPONSE(10,0)<4;4,1>
-// mov (4) uwDEST_Y(17,1)<4> uwAVS_RESPONSE(10,8)<4;4,1>
-// mov (4) uwDEST_Y(20,1)<4> uwAVS_RESPONSE(10,4)<4;4,1>
-// mov (4) uwDEST_Y(21,1)<4> uwAVS_RESPONSE(10,12)<4;4,1>
-// mov (4) uwDEST_Y(24,1)<4> uwAVS_RESPONSE(11,0)<4;4,1>
-// mov (4) uwDEST_Y(25,1)<4> uwAVS_RESPONSE(11,8)<4;4,1>
-// mov (4) uwDEST_Y(28,1)<4> uwAVS_RESPONSE(11,4)<4;4,1>
-// mov (4) uwDEST_Y(29,1)<4> uwAVS_RESPONSE(11,12)<4;4,1>
-//
-//// Move first 8x8 words of R to dest GRF (as packed)
-// mov (4) uwDEST_Y(0,0)<4> uwAVS_RESPONSE(0,0)<4;4,1>
-// mov (4) uwDEST_Y(1,0)<4> uwAVS_RESPONSE(0,8)<4;4,1>
-// mov (4) uwDEST_Y(4,0)<4> uwAVS_RESPONSE(0,4)<4;4,1>
-// mov (4) uwDEST_Y(5,0)<4> uwAVS_RESPONSE(0,12)<4;4,1>
-// mov (4) uwDEST_Y(8,0)<4> uwAVS_RESPONSE(1,0)<4;4,1>
-// mov (4) uwDEST_Y(9,0)<4> uwAVS_RESPONSE(1,8)<4;4,1>
-// mov (4) uwDEST_Y(12,0)<4> uwAVS_RESPONSE(1,4)<4;4,1>
-// mov (4) uwDEST_Y(13,0)<4> uwAVS_RESPONSE(1,12)<4;4,1>
-// mov (4) uwDEST_Y(16,0)<4> uwAVS_RESPONSE(8,0)<4;4,1>
-// mov (4) uwDEST_Y(17,0)<4> uwAVS_RESPONSE(8,8)<4;4,1>
-// mov (4) uwDEST_Y(20,0)<4> uwAVS_RESPONSE(8,4)<4;4,1>
-// mov (4) uwDEST_Y(21,0)<4> uwAVS_RESPONSE(8,12)<4;4,1>
-// mov (4) uwDEST_Y(24,0)<4> uwAVS_RESPONSE(9,0)<4;4,1>
-// mov (4) uwDEST_Y(25,0)<4> uwAVS_RESPONSE(9,8)<4;4,1>
-// mov (4) uwDEST_Y(28,0)<4> uwAVS_RESPONSE(9,4)<4;4,1>
-// mov (4) uwDEST_Y(29,0)<4> uwAVS_RESPONSE(9,12)<4;4,1>
-//
-//// Move first 8x8 words of A to dest GRF (as packed)
-// mov (4) uwDEST_Y(0,3)<4> uwAVS_RESPONSE(6,0)<4;4,1>
-// mov (4) uwDEST_Y(1,3)<4> uwAVS_RESPONSE(6,8)<4;4,1>
-// mov (4) uwDEST_Y(4,3)<4> uwAVS_RESPONSE(6,4)<4;4,1>
-// mov (4) uwDEST_Y(5,3)<4> uwAVS_RESPONSE(6,12)<4;4,1>
-// mov (4) uwDEST_Y(8,3)<4> uwAVS_RESPONSE(7,0)<4;4,1>
-// mov (4) uwDEST_Y(9,3)<4> uwAVS_RESPONSE(7,8)<4;4,1>
-// mov (4) uwDEST_Y(12,3)<4> uwAVS_RESPONSE(7,4)<4;4,1>
-// mov (4) uwDEST_Y(13,3)<4> uwAVS_RESPONSE(7,12)<4;4,1>
-// mov (4) uwDEST_Y(16,3)<4> uwAVS_RESPONSE(14,0)<4;4,1>
-// mov (4) uwDEST_Y(17,3)<4> uwAVS_RESPONSE(14,8)<4;4,1>
-// mov (4) uwDEST_Y(20,3)<4> uwAVS_RESPONSE(14,4)<4;4,1>
-// mov (4) uwDEST_Y(21,3)<4> uwAVS_RESPONSE(14,12)<4;4,1>
-// mov (4) uwDEST_Y(24,3)<4> uwAVS_RESPONSE(15,0)<4;4,1>
-// mov (4) uwDEST_Y(25,3)<4> uwAVS_RESPONSE(15,8)<4;4,1>
-// mov (4) uwDEST_Y(28,3)<4> uwAVS_RESPONSE(15,4)<4;4,1>
-// mov (4) uwDEST_Y(29,3)<4> uwAVS_RESPONSE(15,12)<4;4,1>
-//
-//// Move second 8x8 words of B to dest GRF
-// mov (4) uwDEST_Y(2,2)<4> uwAVS_RESPONSE_2(4,0)<4;4,1>
-// mov (4) uwDEST_Y(3,2)<4> uwAVS_RESPONSE_2(4,8)<4;4,1>
-// mov (4) uwDEST_Y(6,2)<4> uwAVS_RESPONSE_2(4,4)<4;4,1>
-// mov (4) uwDEST_Y(7,2)<4> uwAVS_RESPONSE_2(4,12)<4;4,1>
-// mov (4) uwDEST_Y(10,2)<4> uwAVS_RESPONSE_2(5,0)<4;4,1>
-// mov (4) uwDEST_Y(11,2)<4> uwAVS_RESPONSE_2(5,8)<4;4,1>
-// mov (4) uwDEST_Y(14,2)<4> uwAVS_RESPONSE_2(5,4)<4;4,1>
-// mov (4) uwDEST_Y(15,2)<4> uwAVS_RESPONSE_2(5,12)<4;4,1>
-// mov (4) uwDEST_Y(18,2)<4> uwAVS_RESPONSE_2(12,0)<4;4,1>
-// mov (4) uwDEST_Y(19,2)<4> uwAVS_RESPONSE_2(12,8)<4;4,1>
-// mov (4) uwDEST_Y(22,2)<4> uwAVS_RESPONSE_2(12,4)<4;4,1>
-// mov (4) uwDEST_Y(23,2)<4> uwAVS_RESPONSE_2(12,12)<4;4,1>
-// mov (4) uwDEST_Y(26,2)<4> uwAVS_RESPONSE_2(13,0)<4;4,1>
-// mov (4) uwDEST_Y(27,2)<4> uwAVS_RESPONSE_2(13,8)<4;4,1>
-// mov (4) uwDEST_Y(30,2)<4> uwAVS_RESPONSE_2(13,4)<4;4,1>
-// mov (4) uwDEST_Y(31,2)<4> uwAVS_RESPONSE_2(13,12)<4;4,1>
-//
-//// Move second 8x8 words of G to dest GRF
-// mov (4) uwDEST_Y(2,1)<4> uwAVS_RESPONSE_2(2,0)<4;4,1>
-// mov (4) uwDEST_Y(3,1)<4> uwAVS_RESPONSE_2(2,8)<4;4,1>
-// mov (4) uwDEST_Y(6,1)<4> uwAVS_RESPONSE_2(2,4)<4;4,1>
-// mov (4) uwDEST_Y(7,1)<4> uwAVS_RESPONSE_2(2,12)<4;4,1>
-// mov (4) uwDEST_Y(10,1)<4> uwAVS_RESPONSE_2(3,0)<4;4,1>
-// mov (4) uwDEST_Y(11,1)<4> uwAVS_RESPONSE_2(3,8)<4;4,1>
-// mov (4) uwDEST_Y(14,1)<4> uwAVS_RESPONSE_2(3,4)<4;4,1>
-// mov (4) uwDEST_Y(15,1)<4> uwAVS_RESPONSE_2(3,12)<4;4,1>
-// mov (4) uwDEST_Y(18,1)<4> uwAVS_RESPONSE_2(10,0)<4;4,1>
-// mov (4) uwDEST_Y(19,1)<4> uwAVS_RESPONSE_2(10,8)<4;4,1>
-// mov (4) uwDEST_Y(22,1)<4> uwAVS_RESPONSE_2(10,4)<4;4,1>
-// mov (4) uwDEST_Y(23,1)<4> uwAVS_RESPONSE_2(10,12)<4;4,1>
-// mov (4) uwDEST_Y(26,1)<4> uwAVS_RESPONSE_2(11,0)<4;4,1>
-// mov (4) uwDEST_Y(27,1)<4> uwAVS_RESPONSE_2(11,8)<4;4,1>
-// mov (4) uwDEST_Y(30,1)<4> uwAVS_RESPONSE_2(11,4)<4;4,1>
-// mov (4) uwDEST_Y(31,1)<4> uwAVS_RESPONSE_2(11,12)<4;4,1>
-//
-//// Move second 8x8 words of R to dest GRF
-// mov (4) uwDEST_Y(2,0)<4> uwAVS_RESPONSE_2(0,0)<4;4,1>
-// mov (4) uwDEST_Y(3,0)<4> uwAVS_RESPONSE_2(0,8)<4;4,1>
-// mov (4) uwDEST_Y(6,0)<4> uwAVS_RESPONSE_2(0,4)<4;4,1>
-// mov (4) uwDEST_Y(7,0)<4> uwAVS_RESPONSE_2(0,12)<4;4,1>
-// mov (4) uwDEST_Y(10,0)<4> uwAVS_RESPONSE_2(1,0)<4;4,1>
-// mov (4) uwDEST_Y(11,0)<4> uwAVS_RESPONSE_2(1,8)<4;4,1>
-// mov (4) uwDEST_Y(14,0)<4> uwAVS_RESPONSE_2(1,4)<4;4,1>
-// mov (4) uwDEST_Y(15,0)<4> uwAVS_RESPONSE_2(1,12)<4;4,1>
-// mov (4) uwDEST_Y(18,0)<4> uwAVS_RESPONSE_2(8,0)<4;4,1>
-// mov (4) uwDEST_Y(19,0)<4> uwAVS_RESPONSE_2(8,8)<4;4,1>
-// mov (4) uwDEST_Y(22,0)<4> uwAVS_RESPONSE_2(8,4)<4;4,1>
-// mov (4) uwDEST_Y(23,0)<4> uwAVS_RESPONSE_2(8,12)<4;4,1>
-// mov (4) uwDEST_Y(26,0)<4> uwAVS_RESPONSE_2(9,0)<4;4,1>
-// mov (4) uwDEST_Y(27,0)<4> uwAVS_RESPONSE_2(9,8)<4;4,1>
-// mov (4) uwDEST_Y(30,0)<4> uwAVS_RESPONSE_2(9,4)<4;4,1>
-// mov (4) uwDEST_Y(31,0)<4> uwAVS_RESPONSE_2(9,12)<4;4,1>
-//
-//// Move second 8x8 words of A to dest GRF
-// mov (4) uwDEST_Y(2,3)<4> uwAVS_RESPONSE_2(6,0)<4;4,1>
-// mov (4) uwDEST_Y(3,3)<4> uwAVS_RESPONSE_2(6,8)<4;4,1>
-// mov (4) uwDEST_Y(6,3)<4> uwAVS_RESPONSE_2(6,4)<4;4,1>
-// mov (4) uwDEST_Y(7,3)<4> uwAVS_RESPONSE_2(6,12)<4;4,1>
-// mov (4) uwDEST_Y(10,3)<4> uwAVS_RESPONSE_2(7,0)<4;4,1>
-// mov (4) uwDEST_Y(11,3)<4> uwAVS_RESPONSE_2(7,8)<4;4,1>
-// mov (4) uwDEST_Y(14,3)<4> uwAVS_RESPONSE_2(7,4)<4;4,1>
-// mov (4) uwDEST_Y(15,3)<4> uwAVS_RESPONSE_2(7,12)<4;4,1>
-// mov (4) uwDEST_Y(18,3)<4> uwAVS_RESPONSE_2(14,0)<4;4,1>
-// mov (4) uwDEST_Y(19,3)<4> uwAVS_RESPONSE_2(14,8)<4;4,1>
-// mov (4) uwDEST_Y(22,3)<4> uwAVS_RESPONSE_2(14,4)<4;4,1>
-// mov (4) uwDEST_Y(23,3)<4> uwAVS_RESPONSE_2(14,12)<4;4,1>
-// mov (4) uwDEST_Y(26,3)<4> uwAVS_RESPONSE_2(15,0)<4;4,1>
-// mov (4) uwDEST_Y(27,3)<4> uwAVS_RESPONSE_2(15,8)<4;4,1>
-// mov (4) uwDEST_Y(30,3)<4> uwAVS_RESPONSE_2(15,4)<4;4,1>
-// mov (4) uwDEST_Y(31,3)<4> uwAVS_RESPONSE_2(15,12)<4;4,1>
-
-#else /* OUTPUT_8_BIT */
-
-// Move first 8x8 words of B to dest GRF
- mov (8) DEST_B(0)<1> ubAVS_RESPONSE(4,1)<16;4,2>
- mov (8) DEST_B(1)<1> ubAVS_RESPONSE(4,8+1)<16;4,2>
- mov (8) DEST_B(2)<1> ubAVS_RESPONSE(5,1)<16;4,2>
- mov (8) DEST_B(3)<1> ubAVS_RESPONSE(5,8+1)<16;4,2>
- mov (8) DEST_B(4)<1> ubAVS_RESPONSE(12,1)<16;4,2>
- mov (8) DEST_B(5)<1> ubAVS_RESPONSE(12,8+1)<16;4,2>
- mov (8) DEST_B(6)<1> ubAVS_RESPONSE(13,1)<16;4,2>
- mov (8) DEST_B(7)<1> ubAVS_RESPONSE(13,8+1)<16;4,2>
-
-// Move first 8x8 words of G to dest GRF
- mov (8) DEST_G(0)<1> ubAVS_RESPONSE(2,1)<16;4,2>
- mov (8) DEST_G(1)<1> ubAVS_RESPONSE(2,8+1)<16;4,2>
- mov (8) DEST_G(2)<1> ubAVS_RESPONSE(3,1)<16;4,2>
- mov (8) DEST_G(3)<1> ubAVS_RESPONSE(3,8+1)<16;4,2>
- mov (8) DEST_G(4)<1> ubAVS_RESPONSE(10,1)<16;4,2>
- mov (8) DEST_G(5)<1> ubAVS_RESPONSE(10,8+1)<16;4,2>
- mov (8) DEST_G(6)<1> ubAVS_RESPONSE(11,1)<16;4,2>
- mov (8) DEST_G(7)<1> ubAVS_RESPONSE(11,8+1)<16;4,2>
-
-// Move first 8x8 words of R to dest GRF
- mov (8) DEST_R(0)<1> ubAVS_RESPONSE(0,1)<16;4,2>
- mov (8) DEST_R(1)<1> ubAVS_RESPONSE(0,8+1)<16;4,2>
- mov (8) DEST_R(2)<1> ubAVS_RESPONSE(1,1)<16;4,2>
- mov (8) DEST_R(3)<1> ubAVS_RESPONSE(1,8+1)<16;4,2>
- mov (8) DEST_R(4)<1> ubAVS_RESPONSE(8,1)<16;4,2>
- mov (8) DEST_R(5)<1> ubAVS_RESPONSE(8,8+1)<16;4,2>
- mov (8) DEST_R(6)<1> ubAVS_RESPONSE(9,1)<16;4,2>
- mov (8) DEST_R(7)<1> ubAVS_RESPONSE(9,8+1)<16;4,2>
-
-// Move first 8x8 words of A to dest GRF
- mov (8) DEST_A(0)<1> ubAVS_RESPONSE(6,1)<16;4,2>
- mov (8) DEST_A(1)<1> ubAVS_RESPONSE(6,8+1)<16;4,2>
- mov (8) DEST_A(2)<1> ubAVS_RESPONSE(7,1)<16;4,2>
- mov (8) DEST_A(3)<1> ubAVS_RESPONSE(7,8+1)<16;4,2>
- mov (8) DEST_A(4)<1> ubAVS_RESPONSE(14,1)<16;4,2>
- mov (8) DEST_A(5)<1> ubAVS_RESPONSE(14,8+1)<16;4,2>
- mov (8) DEST_A(6)<1> ubAVS_RESPONSE(15,1)<16;4,2>
- mov (8) DEST_A(7)<1> ubAVS_RESPONSE(15,8+1)<16;4,2>
-
-// Move second 8x8 words of B to dest GRF
- mov (8) DEST_B(0,8)<1> ubAVS_RESPONSE_2(4,1)<16;4,2>
- mov (8) DEST_B(1,8)<1> ubAVS_RESPONSE_2(4,8+1)<16;4,2>
- mov (8) DEST_B(2,8)<1> ubAVS_RESPONSE_2(5,1)<16;4,2>
- mov (8) DEST_B(3,8)<1> ubAVS_RESPONSE_2(5,8+1)<16;4,2>
- mov (8) DEST_B(4,8)<1> ubAVS_RESPONSE_2(12,1)<16;4,2>
- mov (8) DEST_B(5,8)<1> ubAVS_RESPONSE_2(12,8+1)<16;4,2>
- mov (8) DEST_B(6,8)<1> ubAVS_RESPONSE_2(13,1)<16;4,2>
- mov (8) DEST_B(7,8)<1> ubAVS_RESPONSE_2(13,8+1)<16;4,2>
-
-// Move second 8x8 words of G to dest GRF
- mov (8) DEST_G(0,8)<1> ubAVS_RESPONSE_2(2,1)<16;4,2>
- mov (8) DEST_G(1,8)<1> ubAVS_RESPONSE_2(2,8+1)<16;4,2>
- mov (8) DEST_G(2,8)<1> ubAVS_RESPONSE_2(3,1)<16;4,2>
- mov (8) DEST_G(3,8)<1> ubAVS_RESPONSE_2(3,8+1)<16;4,2>
- mov (8) DEST_G(4,8)<1> ubAVS_RESPONSE_2(10,1)<16;4,2>
- mov (8) DEST_G(5,8)<1> ubAVS_RESPONSE_2(10,8+1)<16;4,2>
- mov (8) DEST_G(6,8)<1> ubAVS_RESPONSE_2(11,1)<16;4,2>
- mov (8) DEST_G(7,8)<1> ubAVS_RESPONSE_2(11,8+1)<16;4,2>
-
-// Move second 8x8 words of R to dest GRF
- mov (8) DEST_R(0,8)<1> ubAVS_RESPONSE_2(0,1)<16;4,2>
- mov (8) DEST_R(1,8)<1> ubAVS_RESPONSE_2(0,8+1)<16;4,2>
- mov (8) DEST_R(2,8)<1> ubAVS_RESPONSE_2(1,1)<16;4,2>
- mov (8) DEST_R(3,8)<1> ubAVS_RESPONSE_2(1,8+1)<16;4,2>
- mov (8) DEST_R(4,8)<1> ubAVS_RESPONSE_2(8,1)<16;4,2>
- mov (8) DEST_R(5,8)<1> ubAVS_RESPONSE_2(8,8+1)<16;4,2>
- mov (8) DEST_R(6,8)<1> ubAVS_RESPONSE_2(9,1)<16;4,2>
- mov (8) DEST_R(7,8)<1> ubAVS_RESPONSE_2(9,8+1)<16;4,2>
-
-// Move second 8x8 words of A to dest GRF
- mov (8) DEST_A(0,8)<1> ubAVS_RESPONSE_2(6,1)<16;4,2>
- mov (8) DEST_A(1,8)<1> ubAVS_RESPONSE_2(6,8+1)<16;4,2>
- mov (8) DEST_A(2,8)<1> ubAVS_RESPONSE_2(7,1)<16;4,2>
- mov (8) DEST_A(3,8)<1> ubAVS_RESPONSE_2(7,8+1)<16;4,2>
- mov (8) DEST_A(4,8)<1> ubAVS_RESPONSE_2(14,1)<16;4,2>
- mov (8) DEST_A(5,8)<1> ubAVS_RESPONSE_2(14,8+1)<16;4,2>
- mov (8) DEST_A(6,8)<1> ubAVS_RESPONSE_2(15,1)<16;4,2>
- mov (8) DEST_A(7,8)<1> ubAVS_RESPONSE_2(15,8+1)<16;4,2>
-#endif
-//------------------------------------------------------------------------------
-
- // Set to write bottom region to memory
- #define SRC_REGION REGION_1
-
- // Re-define new # of lines
- #undef nUV_NUM_OF_ROWS
- #undef nY_NUM_OF_ROWS
-
- #define nY_NUM_OF_ROWS 8
- #define nUV_NUM_OF_ROWS 8
-
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/RGB_Scaling.asm b/src/shaders/post_processing/gen5_6/Core_Kernels/RGB_Scaling.asm
deleted file mode 100644
index 95f6658..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/RGB_Scaling.asm
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-//---------- RGB_Scaling.asm ----------
-#include "Scaling.inc"
-
- // Build 16 elements ramp in float32 and normalized it
-// mov (8) SAMPLER_RAMP(0)<1> 0x76543210:v
-// add (8) SAMPLER_RAMP(1)<1> SAMPLER_RAMP(0) 8.0:f
-mov (4) SAMPLER_RAMP(0)<1> 0x48403000:vf //3, 2, 1, 0 in float vector
-mov (4) SAMPLER_RAMP(0,4)<1> 0x5C585450:vf //7, 6, 5, 4 in float vector
-add (8) SAMPLER_RAMP(1)<1> SAMPLER_RAMP(0) 8.0:f
-
-//Module: PrepareScaleCoord.asm
-
- // Setup for sampler msg hdr
- mov (2) rMSGSRC.0<1>:ud 0:ud { NoDDClr } // Unused fields
- mov (1) rMSGSRC.2<1>:ud 0:ud { NoDDChk } // Write and offset
-
- // Calculate 16 v based on the step Y and vertical origin
- mov (16) mfMSGPAYLOAD(2)<1> fSRC_VID_V_ORI<0;1,0>:f
- mov (16) SCALE_COORD_Y<1>:f fSRC_VID_V_ORI<0;1,0>:f
-
- // Calculate 16 u based on the step X and hori origin
-// line (16) mfMSGPAYLOAD(0)<1> SCALE_STEP_X<0;1,0>:f SAMPLER_RAMP(0) // Assign to mrf directly
- mov (16) acc0:f fSRC_VID_H_ORI<0;1,0>:f { Compr }
- mac (16) mfMSGPAYLOAD(0)<1> fVIDEO_STEP_X<0;1,0>:f SAMPLER_RAMP(0) { Compr }
-
- //Setup the constants for line instruction
- mov (1) SCALE_LINE_P255<1>:f 255.0:f { NoDDClr } //{ NoDDClr, NoDDChk }
- mov (1) SCALE_LINE_P0_5<1>:f 0.5:f { NoDDChk }
-
-
-//------------------------------------------------------------------------------
-
-$for (0; <nY_NUM_OF_ROWS; 1) {
-
- // Read 16 sampled pixels and store them in float32 in 8 GRFs in the order of BGRA (VYUA).
- mov (8) MSGHDR_SCALE.0:ud rMSGSRC.0<8;8,1>:ud // Copy msg header and payload mirrors to MRFs
- send (16) SCALE_RESPONSE_YW(0)<1> MSGHDR_SCALE udDUMMY_NULL nSMPL_ENGINE SMPLR_MSG_DSC+nSI_SRC_SIMD16_RGB+nBI_CURRENT_SRC_RGB
-
- // Calculate 16 v for next line
- add (16) mfMSGPAYLOAD(2)<1> SCALE_COORD_Y<8;8,1>:f fVIDEO_STEP_Y<0;1,0>:f // Assign to mrf directly
- add (16) SCALE_COORD_Y<1>:f SCALE_COORD_Y<8;8,1>:f fVIDEO_STEP_Y<0;1,0>:f // Assign to mrf directly
-
- // Scale back to [0, 255], convert f to ud
- line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_YF(0) { Compr } // Process B, V
- mov (16) SCALE_RESPONSE_YD(0)<1> acc0:f { Compr }
-
- line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_YF(2) { Compr } // Process B, V
- mov (16) SCALE_RESPONSE_YD(2)<1> acc0:f { Compr }
-
- line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_YF(4) { Compr } // Process B, V
- mov (16) SCALE_RESPONSE_YD(4)<1> acc0:f { Compr }
-
-//#if defined(SAVE_ARGB) //Only needed if Alpha value is written to the destination
- line (16) acc0:f SCALE_LINE_P255<0;1,0>:f SCALE_RESPONSE_YF(6) { Compr } // Process B, V
- mov (16) SCALE_RESPONSE_YD(6)<1> acc0:f { Compr }
-//#endif
-
- mov (16) DEST_R(%1)<1> SCALE_RESPONSE_YB(0) //possible error due to truncation - vK
- mov (16) DEST_G(%1)<1> SCALE_RESPONSE_YB(2) //possible error due to truncation - vK
- mov (16) DEST_B(%1)<1> SCALE_RESPONSE_YB(4) //possible error due to truncation - vK
- mov (16) DEST_A(%1)<1> SCALE_RESPONSE_YB(6) //possible error due to truncation - vK
-}
diff --git a/src/shaders/post_processing/gen5_6/Core_Kernels/Scaling.inc b/src/shaders/post_processing/gen5_6/Core_Kernels/Scaling.inc
deleted file mode 100644
index 9bd07a2..0000000
--- a/src/shaders/post_processing/gen5_6/Core_Kernels/Scaling.inc
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * All Video Processing kernels
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// File name: Scaling.inc
-
-#ifndef _SCALING_INC_
-#define _SCALING_INC_
-
-// Local variables----------------------------------------------------------------------------------
-#define MSGHDR_SCALE m1 // Message Payload Header (Uses m2, m3, m4, m5 implicitly)
-
-//--------------------------------------------------------------------------------------------------
-//r10.0 thru r33.0; Primary surface read from sampler (16x8)
-#define DEST_Y uwTOP_Y
-#define DEST_U uwTOP_U
-#define DEST_V uwTOP_V
-
-//r10.0 thru r41.0
-.declare DEST_B Base=REG(r,10) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
-.declare DEST_G Base=REG(r,18) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
-.declare DEST_R Base=REG(r,26) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
-.declare DEST_A Base=REG(r,34) ElementSize=2 SrcRegion=REGION(8,1) DstRegion=<1> Type=uw
-
-//r56.0 thru r79.0
-.declare SCALE_RESPONSE_YF Base=REG(r,nBOT_Y) ElementSize=4 SrcRegion=REGION(8,1) Type=f
-.declare SCALE_RESPONSE_UF Base=REG(r,nBOT_U) ElementSize=4 SrcRegion=REGION(8,1) Type=f
-.declare SCALE_RESPONSE_VF Base=REG(r,nBOT_V) ElementSize=4 SrcRegion=REGION(8,1) Type=f
-
-.declare SCALE_RESPONSE_YW Base=REG(r,nBOT_Y) ElementSize=2 SrcRegion=REGION(16,1) Type=uw
-.declare SCALE_RESPONSE_UW Base=REG(r,nBOT_U) ElementSize=2 SrcRegion=REGION(16,1) Type=uw
-.declare SCALE_RESPONSE_VW Base=REG(r,nBOT_V) ElementSize=2 SrcRegion=REGION(16,1) Type=uw
-
-.declare SCALE_RESPONSE_YD Base=REG(r,nBOT_Y) ElementSize=4 SrcRegion=REGION(8,1) Type=ud
-.declare SCALE_RESPONSE_UD Base=REG(r,nBOT_U) ElementSize=4 SrcRegion=REGION(8,1) Type=ud
-.declare SCALE_RESPONSE_VD Base=REG(r,nBOT_V) ElementSize=4 SrcRegion=REGION(8,1) Type=ud
-
-.declare SCALE_RESPONSE_YB Base=REG(r,nBOT_Y) ElementSize=1 SrcRegion=REGION(8,4) Type=ub
-.declare SCALE_RESPONSE_UB Base=REG(r,nBOT_U) ElementSize=1 SrcRegion=REGION(8,4) Type=ub
-.declare SCALE_RESPONSE_VB Base=REG(r,nBOT_V) ElementSize=1 SrcRegion=REGION(8,4) Type=ub
-
-.declare SAMPLER_RAMP Base=REG(r,42) ElementSize=4 SrcRegion=<8;8,1> Type=f // 2 GRFs, 16 elements
-
-//#define SCALE_STEP_X REG2(r,43,0)
-//#define SCALE_COORD_X REG2(r,43,3)
-
-#define SCALE_LINE_P255 REG2(r,43,4) // = 255.0 Used in 'line' inst to multiply 255, add 0.5, and round to int.
-#define SCALE_LINE_P0_5 REG2(r,43,7) // = 0.5
-
-//r44.0 thru r45.0
-#define SCALE_COORD_Y REG(r,44) //2GRF
-
-
-// Send Message [DevILK] Message Descriptor
-// MBZ MsgL=5 MsgR=8 H MBZ SIMD MsgType SmplrIndx BindTab
-// 000 0 101 0 1000 1 0 10 0000 0000 00000000
-// 0 A 8 A 0 0 0 0
-// MsgL=1+2*2(u,v)=5 MsgR=8
-#define SMPLR_MSG_DSC 0x0A8A0000 // ILK Sampler Message Descriptor
-
-// Re-define new number of lines
-#undef nY_NUM_OF_ROWS
-#undef nUV_NUM_OF_ROWS
-
-#define nY_NUM_OF_ROWS 8
-#define nUV_NUM_OF_ROWS 8
-
-
-#endif //_SCALING_INC_
diff --git a/src/shaders/post_processing/gen5_6/Makefile.am b/src/shaders/post_processing/gen5_6/Makefile.am
deleted file mode 100755
index cb47880..0000000
--- a/src/shaders/post_processing/gen5_6/Makefile.am
+++ /dev/null
@@ -1,232 +0,0 @@
-
-INTEL_G4I =
-
-INTEL_G4A = null.g4a
-INTEL_G4B = null.g4b
-INTEL_G4B_GEN5 = null.g4b.gen5
-INTEL_G6A = null.g6a
-INTEL_G6B = null.g6b
-
-INTEL_PP_G4B_GEN5 = \
- nv12_avs_nv12.g4b.gen5 \
- nv12_dn_nv12.g4b.gen5 \
- nv12_dndi_nv12.g4b.gen5 \
- nv12_load_save_nv12.g4b.gen5 \
- nv12_load_save_pa.g4b.gen5 \
- nv12_load_save_pl3.g4b.gen5 \
- nv12_load_save_rgbx.g4b.gen5 \
- nv12_scaling_nv12.g4b.gen5 \
- pa_load_save_pa.g4b.gen5 \
- pa_load_save_nv12.g4b.gen5 \
- pa_load_save_pl3.g4b.gen5 \
- pl3_load_save_nv12.g4b.gen5 \
- pl3_load_save_pa.g4b.gen5 \
- pl3_load_save_pl3.g4b.gen5 \
- rgbx_load_save_nv12.g4b.gen5 \
- $(NULL)
-
-INTEL_PP_G6B = \
- nv12_avs_nv12.g6b \
- nv12_dn_nv12.g6b \
- nv12_dndi_nv12.g6b \
- nv12_load_save_nv12.g6b \
- nv12_load_save_pa.g6b \
- nv12_load_save_pl3.g6b \
- nv12_load_save_rgbx.g6b \
- nv12_scaling_nv12.g6b \
- pa_load_save_pa.g6b \
- pa_load_save_nv12.g6b \
- pa_load_save_pl3.g6b \
- pl3_load_save_nv12.g6b \
- pl3_load_save_pl3.g6b \
- pl3_load_save_pa.g6b \
- rgbx_load_save_nv12.g6b \
- $(NULL)
-
-INTEL_PP_ASM = \
- nv12_avs_nv12.asm \
- nv12_dn_nv12.asm \
- nv12_dndi_nv12.asm \
- nv12_load_save_nv12.asm \
- nv12_load_save_pa.asm \
- nv12_load_save_pl3.asm \
- nv12_load_save_rgbx.asm \
- nv12_scaling_nv12.asm \
- pa_load_save_pa.asm \
- pa_load_save_nv12.asm \
- pa_load_save_pl3.asm \
- pl3_load_save_nv12.asm \
- pl3_load_save_pl3.asm \
- pl3_load_save_pa.asm \
- rgbx_load_save_nv12.asm \
- $(NULL)
-
-INTEL_PP_ASM += \
- Common/AYUV_Load_16x8.asm \
- Common/IMC3_Load_8x4.asm \
- Common/IMC3_Load_8x5.asm \
- Common/IMC3_Load_9x5.asm \
- Common/Init_All_Regs.asm \
- Common/Multiple_Loop.asm \
- Common/Multiple_Loop_Head.asm \
- Common/NV11_Load_4x8.asm \
- Common/NV11_Load_5x8.asm \
- Common/NV12_Load_8x4.asm \
- Common/NV12_Load_8x5.asm \
- Common/NV12_Load_9x5.asm \
- Common/P208_Load_8x8.asm \
- Common/P208_Load_9x8.asm \
- Common/PA_Load_8x8.asm \
- Common/PA_Load_9x8.asm \
- Common/PL16x8_PL8x4.asm \
- Common/PL16x8_PL8x8.asm \
- Common/PL4x8_Save_NV11.asm \
- Common/PL5x8_PL16x8.asm \
- Common/PL5x8_PL8x8.asm \
- Common/PL8x4_Save_IMC3.asm \
- Common/PL8x4_Save_NV12.asm \
- Common/PL8x5_PL8x8.asm \
- Common/PL8x8_PL8x4.asm \
- Common/PL8x8_Save_P208.asm \
- Common/PL8x8_Save_PA.asm \
- Common/PL9x5_PL16x8.asm \
- Common/PL9x8_PL16x8.asm \
- Common/RGB16x8_Save_RGB.asm \
- Common/RGB16x8_Save_RGB16.asm \
- Common/RGB16x8_Save_Y416.asm \
- Common/RGB_Pack.asm \
- Common/RGBX_Load_16x8.asm \
- Common/RGBX_to_YUV_Coef.asm \
- Common/RGBX_Save_YUV_Fix.asm \
- Common/RGBX_Save_YUV_Float.asm \
- Common/YUV_to_RGBX_Coef.asm \
- Common/YUVX_Save_RGBX_Fix.asm \
- Common/YUVX_Save_RGBX_Float.asm \
- Common/SetupVPKernel.asm \
- Common/readSampler16x1.asm \
- Core_Kernels/AVS_SetupFirstBlock.asm \
- Core_Kernels/AVS_SetupSecondBlock.asm \
- Core_Kernels/DI_Hist_Save.asm \
- Core_Kernels/DI_SAVE_PA.asm \
- Core_Kernels/DNDI_COMMAND.asm \
- Core_Kernels/DNDI_Hist_Save.asm \
- Core_Kernels/PA_AVS_IEF_16x8.asm \
- Core_Kernels/PA_AVS_IEF_8x4.asm \
- Core_Kernels/PA_AVS_IEF_8x8.asm \
- Core_Kernels/PA_AVS_IEF_Sample.asm \
- Core_Kernels/PA_AVS_IEF_Unpack_16x8.asm \
- Core_Kernels/PA_AVS_IEF_Unpack_8x4.asm \
- Core_Kernels/PA_AVS_IEF_Unpack_8x8.asm \
- Core_Kernels/PA_DNDI_ALG.asm \
- Core_Kernels/PA_DN_ALG.asm \
- Core_Kernels/PA_Scaling.asm \
- Core_Kernels/PL2_AVS_IEF_16x8.asm \
- Core_Kernels/PL2_AVS_IEF_8x4.asm \
- Core_Kernels/PL2_AVS_IEF_8x8.asm \
- Core_Kernels/PL2_AVS_IEF_Unpack_16x8.asm \
- Core_Kernels/PL2_AVS_IEF_Unpack_8x4.asm \
- Core_Kernels/PL2_AVS_IEF_Unpack_8x8.asm \
- Core_Kernels/PL2_Scaling.asm \
- Core_Kernels/PL3_AVS_IEF_16x8.asm \
- Core_Kernels/PL3_AVS_IEF_8x4.asm \
- Core_Kernels/PL3_AVS_IEF_8x8.asm \
- Core_Kernels/PL3_AVS_IEF_Unpack_16x8.asm \
- Core_Kernels/PL3_AVS_IEF_Unpack_8x4.asm \
- Core_Kernels/PL3_AVS_IEF_Unpack_8x8.asm \
- Core_Kernels/PL3_Scaling.asm \
- Core_Kernels/PL_DNDI_ALG.asm \
- Core_Kernels/PL_DNDI_ALG_UVCopy_NV11.asm \
- Core_Kernels/PL_DNDI_ALG_UVCopy_NV12.asm \
- Core_Kernels/PL_DNDI_ALG_UVCopy_P208.asm \
- Core_Kernels/PL_DNDI_ALG_UVCopy_PL3.asm \
- Core_Kernels/PL_DN_ALG.asm \
- Core_Kernels/RGB_AVS_IEF_16x8.asm \
- Core_Kernels/RGB_AVS_IEF_Unpack_16x8.asm \
- Core_Kernels/RGB_AVS_IEF_Unscramble_16x8.asm \
- Core_Kernels/RGB_Scaling.asm \
- $(NULL)
-
-INTEL_PP_INC = \
- Common/AYUV_Load_16x8.inc \
- Common/Expansion.inc \
- Common/PA_Load.inc \
- Common/PL2_Load.inc \
- Common/PL3_Load.inc \
- Common/PL4x8_Save_NV11.inc \
- Common/PL8x4_Save_IMC3.inc \
- Common/PL8x4_Save_NV12.inc \
- Common/PL8x8_PL8x4.inc \
- Common/PL8x8_Save_P208.inc \
- Common/PL8x8_Save_PA.inc \
- Common/RGB16x8_Save_RGB.inc \
- Common/RGB16x8_Save_RGB16.inc \
- Common/RGB16x8_Save_Y416.inc \
- Common/RGBX_Load_16x8.inc \
- Common/common.inc \
- Common/undefall.inc \
- Core_Kernels/AVS_IEF.inc \
- Core_Kernels/DI.inc \
- Core_Kernels/DNDI.inc \
- Core_Kernels/Scaling.inc
- $(NULL)
-
-INTEL_PP_GEN5_ASM = $(INTEL_PP_G4B_GEN5:%.g4b.gen5=%.g5s)
-INTEL_PP_GEN6_ASM = $(INTEL_PP_G6B:%.g6b=%.g6s)
-
-TARGETS =
-if HAVE_GEN4ASM
-TARGETS += $(INTEL_PP_G4B_GEN5)
-TARGETS += $(INTEL_PP_G6B)
-endif
-
-all-local: $(TARGETS)
-
-SUFFIXES = .g4a .g4b .g4b.gen5 .g6a .g6b .g5s .g6s .asm
-
-if HAVE_GEN4ASM
-.g4a.g4b:
- $(AM_V_GEN)m4 $*.g4a > $*.g4m && \
- $(AM_V_GEN)$(GEN4ASM) -o $@ $*.g4m && \
- $(AM_V_GEN)$(GEN4ASM) -g 5 -o $@.gen5 $*.g4m && \
- rm $*.g4m
-
-.g6a.g6b:
- $(AM_V_GEN)m4 $< > $*.g6m && \
- $(AM_V_GEN)$(GEN4ASM) -g 6 -o $@ $*.g6m && \
- rm $*.g6m
-
-$(INTEL_G4B): $(INTEL_G4I)
-
-$(INTEL_PP_GEN5_ASM): $(INTEL_PP_ASM)
-.asm.g5s:
- $(AM_V_GEN)cpp -D DEV_ILK -I $(srcdir)/Common/ -I $(srcdir)/Core_Kernels $< > _pp0.$@; \
- $(PYTHON2) $(top_srcdir)/src/shaders/gpp.py _pp0.$@ $@; \
- rm _pp0.$@
-.g5s.g4b.gen5:
- $(AM_V_GEN)$(GEN4ASM) -a -o $@ -g 5 $<
-
-$(INTEL_PP_GEN6_ASM): $(INTEL_PP_ASM)
-.asm.g6s:
- $(AM_V_GEN)cpp -D GT -I $(srcdir)/Common/ -I $(srcdir)/Core_Kernels $< > _pp0.$@; \
- $(PYTHON2) $(top_srcdir)/src/shaders/gpp.py _pp0.$@ $@; \
- rm _pp0.$@
-.g6s.g6b:
- $(AM_V_GEN)$(GEN4ASM) -a -o $@ -g 6 $<
-endif
-
-CLEANFILES = $(INTEL_PP_GEN5_ASM) $(INTEL_PP_GEN6_ASM)
-
-EXTRA_DIST = \
- $(INTEL_G4A) \
- $(INTEL_G4B) \
- $(INTEL_G4B_GEN5) \
- $(INTEL_G4I) \
- $(INTEL_G6B) \
- $(INTEL_PP_ASM) \
- $(INTEL_PP_G4B_GEN5) \
- $(INTEL_PP_G6B) \
- $(INTEL_PP_INC) \
- $(NULL)
-
-# Extra clean files so that maintainer-clean removes *everything*
-MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/shaders/post_processing/gen5_6/null.g4a b/src/shaders/post_processing/gen5_6/null.g4a
deleted file mode 100644
index cde124a..0000000
--- a/src/shaders/post_processing/gen5_6/null.g4a
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Just for test */
-
-send(16) 0 acc0<1>UW g0<8,8,1>UW thread_spawner(0, 0, 0) mlen 1 rlen 0 {align1 EOT};
diff --git a/src/shaders/post_processing/gen5_6/null.g4b b/src/shaders/post_processing/gen5_6/null.g4b
deleted file mode 100644
index d8f28e7..0000000
--- a/src/shaders/post_processing/gen5_6/null.g4b
+++ /dev/null
@@ -1 +0,0 @@
- { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 },
diff --git a/src/shaders/post_processing/gen5_6/null.g4b.gen5 b/src/shaders/post_processing/gen5_6/null.g4b.gen5
deleted file mode 100644
index 2bd0ba6..0000000
--- a/src/shaders/post_processing/gen5_6/null.g4b.gen5
+++ /dev/null
@@ -1 +0,0 @@
- { 0x00800031, 0x24001d28, 0x748d0000, 0x82000000 },
diff --git a/src/shaders/post_processing/gen5_6/null.g6a b/src/shaders/post_processing/gen5_6/null.g6a
deleted file mode 100644
index cde124a..0000000
--- a/src/shaders/post_processing/gen5_6/null.g6a
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Just for test */
-
-send(16) 0 acc0<1>UW g0<8,8,1>UW thread_spawner(0, 0, 0) mlen 1 rlen 0 {align1 EOT};
diff --git a/src/shaders/post_processing/gen5_6/null.g6b b/src/shaders/post_processing/gen5_6/null.g6b
deleted file mode 100644
index e52415c..0000000
--- a/src/shaders/post_processing/gen5_6/null.g6b
+++ /dev/null
@@ -1 +0,0 @@
- { 0x07800031, 0x24001cc8, 0x00000000, 0x82000000 },
diff --git a/src/shaders/post_processing/gen5_6/nv12_avs_nv12.asm b/src/shaders/post_processing/gen5_6/nv12_avs_nv12.asm
deleted file mode 100644
index 6e0e1b3..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_avs_nv12.asm
+++ /dev/null
@@ -1,20 +0,0 @@
-// Module name: NV12_AVS_NV12
-.kernel NV12_AVS_NV12
-.code
-
-#define INC_SCALING
-
-#include "SetupVPKernel.asm"
-#include "Multiple_Loop_Head.asm"
-#include "PL2_AVS_IEF_16x8.asm"
-#include "PL16x8_PL8x4.asm"
-#include "PL8x4_Save_NV12.asm"
-#include "Multiple_Loop.asm"
-
-END_THREAD // End of Thread
-
-.end_code
-
-.end_kernel
-
-// end of nv12_avs_nv12.asm
diff --git a/src/shaders/post_processing/gen5_6/nv12_avs_nv12.g4b.gen5 b/src/shaders/post_processing/gen5_6/nv12_avs_nv12.g4b.gen5
deleted file mode 100644
index 7573a66..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_avs_nv12.g4b.gen5
+++ /dev/null
@@ -1,174 +0,0 @@
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x01000005, 0x20002d2c, 0x00000088, 0x80008000 },
- { 0x00010001, 0x20c003fd, 0x00000000, 0x00000000 },
- { 0x00000001, 0x212003bd, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x212403bd, 0x000000bc, 0x00000000 },
- { 0x00000001, 0x213403bd, 0x00000038, 0x00000000 },
- { 0x00200001, 0x612803bd, 0x004500a4, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0000d000 },
- { 0x00802001, 0x20000022, 0x008d0100, 0x00000000 },
- { 0x00000031, 0x25401c09, 0x208d0000, 0x044bb401 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0000a000 },
- { 0x00802001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x02000031, 0x25c01c09, 0x208d0000, 0x048bb802 },
- { 0x00000001, 0x240803bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x000000bc, 0x41000000 },
- { 0x00000048, 0x21287fbd, 0x000000c0, 0x41e00000 },
- { 0x00000001, 0x240403bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x21247fbd, 0x000000c0, 0x41000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0000d000 },
- { 0x00802001, 0x20000022, 0x008d0100, 0x00000000 },
- { 0x00000031, 0x27401c09, 0x208d0000, 0x044bb401 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0000a000 },
- { 0x00802001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x02000031, 0x27c01c09, 0x208d0000, 0x048bb802 },
- { 0x00600001, 0x21400229, 0x00aa0541, 0x00000000 },
- { 0x00600001, 0x21600229, 0x00aa0549, 0x00000000 },
- { 0x00600001, 0x21800229, 0x00aa0561, 0x00000000 },
- { 0x00600001, 0x21a00229, 0x00aa0569, 0x00000000 },
- { 0x00600001, 0x21c00229, 0x00aa0581, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x00aa0589, 0x00000000 },
- { 0x00600001, 0x22000229, 0x00aa05a1, 0x00000000 },
- { 0x00600001, 0x22200229, 0x00aa05a9, 0x00000000 },
- { 0x00600001, 0x22400229, 0x00aa05c1, 0x00000000 },
- { 0x00600001, 0x22600229, 0x00aa05c9, 0x00000000 },
- { 0x00600001, 0x22800229, 0x00aa05e1, 0x00000000 },
- { 0x00600001, 0x22a00229, 0x00aa05e9, 0x00000000 },
- { 0x00600001, 0x22c00229, 0x00aa0641, 0x00000000 },
- { 0x00600001, 0x22e00229, 0x00aa0649, 0x00000000 },
- { 0x00600001, 0x23000229, 0x00aa0661, 0x00000000 },
- { 0x00600001, 0x23200229, 0x00aa0669, 0x00000000 },
- { 0x00600001, 0x23400229, 0x00aa0601, 0x00000000 },
- { 0x00600001, 0x23600229, 0x00aa0609, 0x00000000 },
- { 0x00600001, 0x23800229, 0x00aa0621, 0x00000000 },
- { 0x00600001, 0x23a00229, 0x00aa0629, 0x00000000 },
- { 0x00600001, 0x23c00229, 0x00aa0681, 0x00000000 },
- { 0x00600001, 0x23e00229, 0x00aa0689, 0x00000000 },
- { 0x00600001, 0x24000229, 0x00aa06a1, 0x00000000 },
- { 0x00600001, 0x24200229, 0x00aa06a9, 0x00000000 },
- { 0x00600001, 0x21500229, 0x00aa0741, 0x00000000 },
- { 0x00600001, 0x21700229, 0x00aa0749, 0x00000000 },
- { 0x00600001, 0x21900229, 0x00aa0761, 0x00000000 },
- { 0x00600001, 0x21b00229, 0x00aa0769, 0x00000000 },
- { 0x00600001, 0x21d00229, 0x00aa0781, 0x00000000 },
- { 0x00600001, 0x21f00229, 0x00aa0789, 0x00000000 },
- { 0x00600001, 0x22100229, 0x00aa07a1, 0x00000000 },
- { 0x00600001, 0x22300229, 0x00aa07a9, 0x00000000 },
- { 0x00600001, 0x22500229, 0x00aa07c1, 0x00000000 },
- { 0x00600001, 0x22700229, 0x00aa07c9, 0x00000000 },
- { 0x00600001, 0x22900229, 0x00aa07e1, 0x00000000 },
- { 0x00600001, 0x22b00229, 0x00aa07e9, 0x00000000 },
- { 0x00600001, 0x22d00229, 0x00aa0841, 0x00000000 },
- { 0x00600001, 0x22f00229, 0x00aa0849, 0x00000000 },
- { 0x00600001, 0x23100229, 0x00aa0861, 0x00000000 },
- { 0x00600001, 0x23300229, 0x00aa0869, 0x00000000 },
- { 0x00600001, 0x23500229, 0x00aa0801, 0x00000000 },
- { 0x00600001, 0x23700229, 0x00aa0809, 0x00000000 },
- { 0x00600001, 0x23900229, 0x00aa0821, 0x00000000 },
- { 0x00600001, 0x23b00229, 0x00aa0829, 0x00000000 },
- { 0x00600001, 0x23d00229, 0x00aa0881, 0x00000000 },
- { 0x00600001, 0x23f00229, 0x00aa0889, 0x00000000 },
- { 0x00600001, 0x24100229, 0x00aa08a1, 0x00000000 },
- { 0x00600001, 0x24300229, 0x00aa08a9, 0x00000000 },
- { 0x00600001, 0x22400129, 0x00ae0240, 0x00000000 },
- { 0x00600001, 0x23400129, 0x00ae0340, 0x00000000 },
- { 0x00600001, 0x22500129, 0x00ae0280, 0x00000000 },
- { 0x00600001, 0x23500129, 0x00ae0380, 0x00000000 },
- { 0x00600001, 0x22600129, 0x00ae02c0, 0x00000000 },
- { 0x00600001, 0x23600129, 0x00ae03c0, 0x00000000 },
- { 0x00600001, 0x22700129, 0x00ae0300, 0x00000000 },
- { 0x00600001, 0x23700129, 0x00ae0400, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0248a007 },
- { 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x28000c01, 0x408d0000, 0x0228a008 },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
- { 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
- { 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
- { 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
- { 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
- { 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
- { 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
- { 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
- { 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
- { 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
- { 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
- { 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x0a082007 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
- { 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
- { 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
- { 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x06082008 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00000041, 0x24407fbd, 0x000000bc, 0x41800000 },
- { 0x00000040, 0x20a477bd, 0x00000440, 0x000000a4 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xfffffec6 },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000001, 0x20a403bd, 0x00000094, 0x00000000 },
- { 0x00000041, 0x24407fbd, 0x00000038, 0x41000000 },
- { 0x00000040, 0x20a877bd, 0x00000440, 0x000000a8 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffeba },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
diff --git a/src/shaders/post_processing/gen5_6/nv12_avs_nv12.g6b b/src/shaders/post_processing/gen5_6/nv12_avs_nv12.g6b
deleted file mode 100644
index 3bfdef6..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_avs_nv12.g6b
+++ /dev/null
@@ -1,247 +0,0 @@
- { 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x01000005, 0x20002d2c, 0x00000088, 0x80008000 },
- { 0x00010001, 0x20c003fd, 0x00000000, 0x00000000 },
- { 0x00000001, 0x212003bd, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x212403bd, 0x000000bc, 0x00000000 },
- { 0x00000001, 0x213403bd, 0x00000038, 0x00000000 },
- { 0x00200001, 0x612803bd, 0x004500a4, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0000d000 },
- { 0x00800001, 0x20000022, 0x008d0100, 0x00000000 },
- { 0x02000031, 0x25401cc9, 0x00000000, 0x044bb401 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0000a000 },
- { 0x00800001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x02000031, 0x25c01cc9, 0x00000040, 0x048bb802 },
- { 0x00000001, 0x240803bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x000000bc, 0x41000000 },
- { 0x00000048, 0x21287fbd, 0x000000c0, 0x41e00000 },
- { 0x00000001, 0x240403bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x21247fbd, 0x000000c0, 0x41000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0000d000 },
- { 0x00800001, 0x20000022, 0x008d0100, 0x00000000 },
- { 0x02000031, 0x27401cc9, 0x00000000, 0x044bb401 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0000a000 },
- { 0x00800001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x02000031, 0x27c01cc9, 0x00000040, 0x048bb802 },
- { 0x00600001, 0x21400229, 0x00aa0541, 0x00000000 },
- { 0x00600001, 0x21600229, 0x00aa0549, 0x00000000 },
- { 0x00600001, 0x21800229, 0x00aa0561, 0x00000000 },
- { 0x00600001, 0x21a00229, 0x00aa0569, 0x00000000 },
- { 0x00600001, 0x21c00229, 0x00aa0581, 0x00000000 },
- { 0x00600001, 0x21e00229, 0x00aa0589, 0x00000000 },
- { 0x00600001, 0x22000229, 0x00aa05a1, 0x00000000 },
- { 0x00600001, 0x22200229, 0x00aa05a9, 0x00000000 },
- { 0x00600001, 0x22400229, 0x00aa05c1, 0x00000000 },
- { 0x00600001, 0x22600229, 0x00aa05c9, 0x00000000 },
- { 0x00600001, 0x22800229, 0x00aa05e1, 0x00000000 },
- { 0x00600001, 0x22a00229, 0x00aa05e9, 0x00000000 },
- { 0x00600001, 0x22c00229, 0x00aa0641, 0x00000000 },
- { 0x00600001, 0x22e00229, 0x00aa0649, 0x00000000 },
- { 0x00600001, 0x23000229, 0x00aa0661, 0x00000000 },
- { 0x00600001, 0x23200229, 0x00aa0669, 0x00000000 },
- { 0x00600001, 0x23400229, 0x00aa0601, 0x00000000 },
- { 0x00600001, 0x23600229, 0x00aa0609, 0x00000000 },
- { 0x00600001, 0x23800229, 0x00aa0621, 0x00000000 },
- { 0x00600001, 0x23a00229, 0x00aa0629, 0x00000000 },
- { 0x00600001, 0x23c00229, 0x00aa0681, 0x00000000 },
- { 0x00600001, 0x23e00229, 0x00aa0689, 0x00000000 },
- { 0x00600001, 0x24000229, 0x00aa06a1, 0x00000000 },
- { 0x00600001, 0x24200229, 0x00aa06a9, 0x00000000 },
- { 0x00600001, 0x21500229, 0x00aa0741, 0x00000000 },
- { 0x00600001, 0x21700229, 0x00aa0749, 0x00000000 },
- { 0x00600001, 0x21900229, 0x00aa0761, 0x00000000 },
- { 0x00600001, 0x21b00229, 0x00aa0769, 0x00000000 },
- { 0x00600001, 0x21d00229, 0x00aa0781, 0x00000000 },
- { 0x00600001, 0x21f00229, 0x00aa0789, 0x00000000 },
- { 0x00600001, 0x22100229, 0x00aa07a1, 0x00000000 },
- { 0x00600001, 0x22300229, 0x00aa07a9, 0x00000000 },
- { 0x00600001, 0x22500229, 0x00aa07c1, 0x00000000 },
- { 0x00600001, 0x22700229, 0x00aa07c9, 0x00000000 },
- { 0x00600001, 0x22900229, 0x00aa07e1, 0x00000000 },
- { 0x00600001, 0x22b00229, 0x00aa07e9, 0x00000000 },
- { 0x00600001, 0x22d00229, 0x00aa0841, 0x00000000 },
- { 0x00600001, 0x22f00229, 0x00aa0849, 0x00000000 },
- { 0x00600001, 0x23100229, 0x00aa0861, 0x00000000 },
- { 0x00600001, 0x23300229, 0x00aa0869, 0x00000000 },
- { 0x00600001, 0x23500229, 0x00aa0801, 0x00000000 },
- { 0x00600001, 0x23700229, 0x00aa0809, 0x00000000 },
- { 0x00600001, 0x23900229, 0x00aa0821, 0x00000000 },
- { 0x00600001, 0x23b00229, 0x00aa0829, 0x00000000 },
- { 0x00600001, 0x23d00229, 0x00aa0881, 0x00000000 },
- { 0x00600001, 0x23f00229, 0x00aa0889, 0x00000000 },
- { 0x00600001, 0x24100229, 0x00aa08a1, 0x00000000 },
- { 0x00600001, 0x24300229, 0x00aa08a9, 0x00000000 },
- { 0x00600001, 0x22400129, 0x00ae0240, 0x00000000 },
- { 0x00600001, 0x23400129, 0x00ae0340, 0x00000000 },
- { 0x00600001, 0x22500129, 0x00ae0280, 0x00000000 },
- { 0x00600001, 0x23500129, 0x00ae0380, 0x00000000 },
- { 0x00600001, 0x22600129, 0x00ae02c0, 0x00000000 },
- { 0x00600001, 0x23600129, 0x00ae03c0, 0x00000000 },
- { 0x00600001, 0x22700129, 0x00ae0300, 0x00000000 },
- { 0x00600001, 0x23700129, 0x00ae0400, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02498007 },
- { 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x28000cc1, 0x00000020, 0x02298008 },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
- { 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
- { 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
- { 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
- { 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
- { 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
- { 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
- { 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
- { 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
- { 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
- { 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
- { 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x0a094007 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
- { 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
- { 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
- { 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x06094008 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00000041, 0x24407fbd, 0x000000bc, 0x41800000 },
- { 0x00000040, 0x20a477bd, 0x00000440, 0x000000a4 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xfffffec6 },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000001, 0x20a403bd, 0x00000094, 0x00000000 },
- { 0x00000041, 0x24407fbd, 0x00000038, 0x41000000 },
- { 0x00000040, 0x20a877bd, 0x00000440, 0x000000a8 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffeba },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen5_6/nv12_dn_nv12.asm b/src/shaders/post_processing/gen5_6/nv12_dn_nv12.asm
deleted file mode 100644
index 690d4c9..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_dn_nv12.asm
+++ /dev/null
@@ -1,26 +0,0 @@
-// Module name: NV12_DN_NV12
-.kernel NV12_DN_NV12
-.code
-
-#define INC_DN
-
-#include "SetupVPKernel.asm"
-#include "Multiple_Loop_Head.asm"
-
-#define LOAD_UV_ONLY
-#include "NV12_Load_8x4.asm"
-#undef LOAD_UV_ONLY
-
-#include "PL_DN_ALG.asm"
-
-#include "PL8x4_Save_NV12.asm"
-
-#include "Multiple_Loop.asm"
-
-END_THREAD // End of Thread
-
-.end_code
-
-.end_kernel
-
-// end of nv12_dn_nv12.asm
diff --git a/src/shaders/post_processing/gen5_6/nv12_dn_nv12.g4b.gen5 b/src/shaders/post_processing/gen5_6/nv12_dn_nv12.g4b.gen5
deleted file mode 100644
index 619f1e6..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_dn_nv12.g4b.gen5
+++ /dev/null
@@ -1,117 +0,0 @@
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x02600031, 0x28000c01, 0x408d0000, 0x0228a002 },
- { 0x00800001, 0x22600229, 0x00d20820, 0x00000000 },
- { 0x00800001, 0x23600229, 0x00d20821, 0x00000000 },
- { 0x00800001, 0x22400229, 0x00d20800, 0x00000000 },
- { 0x00800001, 0x23400229, 0x00d20801, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x204801aa, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x205801aa, 0x000000a2, 0x00000000 },
- { 0x01600031, 0x24400c01, 0x208d0000, 0x045b8004 },
- { 0x00800001, 0x21400229, 0x00b10440, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00b10450, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00b10460, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00b10470, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00b10480, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00b10490, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00b104a0, 0x00000000 },
- { 0x00800001, 0x22200229, 0x00b104b0, 0x00000000 },
- { 0x00200008, 0x21003da1, 0x004500a0, 0x00020002 },
- { 0x00000040, 0x21002421, 0x00000100, 0x00000034 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00010003 },
- { 0x00600001, 0x21a00022, 0x008d0100, 0x00000000 },
- { 0x00200001, 0x21c00022, 0x004504c0, 0x00000000 },
- { 0x0d600031, 0x20000c04, 0x508d0000, 0x04082014 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0248a007 },
- { 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x28000c01, 0x408d0000, 0x0228a008 },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
- { 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
- { 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
- { 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
- { 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
- { 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
- { 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
- { 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
- { 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
- { 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
- { 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
- { 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x0a082007 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
- { 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
- { 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
- { 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x06082008 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff32 },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff2c },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
diff --git a/src/shaders/post_processing/gen5_6/nv12_dn_nv12.g6b b/src/shaders/post_processing/gen5_6/nv12_dn_nv12.g6b
deleted file mode 100644
index f68daa6..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_dn_nv12.g6b
+++ /dev/null
@@ -1,190 +0,0 @@
- { 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x28000cc1, 0x00000040, 0x02298002 },
- { 0x00800001, 0x22600229, 0x00d20820, 0x00000000 },
- { 0x00800001, 0x23600229, 0x00d20821, 0x00000000 },
- { 0x00800001, 0x22400229, 0x00d20800, 0x00000000 },
- { 0x00800001, 0x23400229, 0x00d20801, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x204801aa, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x205801aa, 0x000000a2, 0x00000000 },
- { 0x02600031, 0x24400cc1, 0x00000020, 0x045b8004 },
- { 0x00800001, 0x21400229, 0x00b10440, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00b10450, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00b10460, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00b10470, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00b10480, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00b10490, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00b104a0, 0x00000000 },
- { 0x00800001, 0x22200229, 0x00b104b0, 0x00000000 },
- { 0x00200008, 0x21003da1, 0x004500a0, 0x00020002 },
- { 0x00000040, 0x21002421, 0x00000100, 0x00000034 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00010003 },
- { 0x00600001, 0x21a00022, 0x008d0100, 0x00000000 },
- { 0x00200001, 0x21c00022, 0x004504c0, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x000001a0, 0x04094014 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02498007 },
- { 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x28000cc1, 0x00000020, 0x02298008 },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
- { 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
- { 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
- { 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
- { 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
- { 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
- { 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
- { 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
- { 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
- { 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
- { 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
- { 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x0a094007 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
- { 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
- { 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
- { 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x06094008 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff32 },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff2c },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen5_6/nv12_dndi_nv12.asm b/src/shaders/post_processing/gen5_6/nv12_dndi_nv12.asm
deleted file mode 100644
index 3ea9cea..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_dndi_nv12.asm
+++ /dev/null
@@ -1,18 +0,0 @@
-// Module name: NV12_DNDI_NV12
-.kernel NV12_DNDI_NV12
-.code
-
-#define INC_DNDI
-
-#include "SetupVPKernel.asm"
-#include "Multiple_Loop_Head.asm"
-#include "PL_DNDI_ALG_UVCopy_NV12.asm"
-#include "Multiple_Loop.asm"
-
-END_THREAD // End of Thread
-
-.end_code
-
-.end_kernel
-
-// end of nv12_dndi_nv12.asm
diff --git a/src/shaders/post_processing/gen5_6/nv12_dndi_nv12.g4b.gen5 b/src/shaders/post_processing/gen5_6/nv12_dndi_nv12.g4b.gen5
deleted file mode 100644
index 4563d20..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_dndi_nv12.g4b.gen5
+++ /dev/null
@@ -1,97 +0,0 @@
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x204801aa, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x205801aa, 0x000000a2, 0x00000000 },
- { 0x01600031, 0x24400c01, 0x208d0000, 0x04cb8004 },
- { 0x00800001, 0x21400229, 0x00b10440, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00b10450, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00b10460, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00b10470, 0x00000000 },
- { 0x00600001, 0x22400229, 0x00ae0481, 0x00000000 },
- { 0x00600001, 0x23400229, 0x00ae0480, 0x00000000 },
- { 0x00600001, 0x22500229, 0x00ae0491, 0x00000000 },
- { 0x00600001, 0x23500229, 0x00ae0490, 0x00000000 },
- { 0x00600001, 0x22600229, 0x00ae04a1, 0x00000000 },
- { 0x00600001, 0x23600229, 0x00ae04a0, 0x00000000 },
- { 0x00600001, 0x22700229, 0x00ae04b1, 0x00000000 },
- { 0x00600001, 0x23700229, 0x00ae04b0, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00b104d0, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00b104e0, 0x00000000 },
- { 0x00800001, 0x22200229, 0x00b104f0, 0x00000000 },
- { 0x00600001, 0x22800229, 0x00ae0501, 0x00000000 },
- { 0x00600001, 0x23800229, 0x00ae0500, 0x00000000 },
- { 0x00600001, 0x22900229, 0x00ae0511, 0x00000000 },
- { 0x00600001, 0x23900229, 0x00ae0510, 0x00000000 },
- { 0x00600001, 0x22a00229, 0x00ae0521, 0x00000000 },
- { 0x00600001, 0x23a00229, 0x00ae0520, 0x00000000 },
- { 0x00600001, 0x22b00229, 0x00ae0531, 0x00000000 },
- { 0x00600001, 0x23b00229, 0x00ae0530, 0x00000000 },
- { 0x00000008, 0x21003da1, 0x000000a0, 0x00010001 },
- { 0x00000001, 0x210401a1, 0x000000a2, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
- { 0x00600001, 0x21600022, 0x008d0100, 0x00000000 },
- { 0x00600001, 0x21800022, 0x008d0540, 0x00000000 },
- { 0x0b600031, 0x20000c04, 0x508d0000, 0x04082014 },
- { 0x00200008, 0x21003da1, 0x004500a0, 0x00020002 },
- { 0x00000040, 0x21002421, 0x00000100, 0x00000034 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00000003 },
- { 0x00600001, 0x21a00022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x21c00022, 0x00000560, 0x00000000 },
- { 0x0d600031, 0x20000c04, 0x508d0000, 0x04082014 },
- { 0x00800001, 0x20400232, 0x00b10440, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b10450, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b10460, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b10470, 0x00000000 },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x06082007 },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0001000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00600001, 0x40400232, 0x00ae0481, 0x00000000 },
- { 0x00600001, 0x40410232, 0x00ae0490, 0x00000000 },
- { 0x00600001, 0x40500232, 0x00ae04a1, 0x00000000 },
- { 0x00600001, 0x40510232, 0x00ae04b0, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x04082008 },
- { 0x00800001, 0x20400232, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b104d0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b104e0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b104f0, 0x00000000 },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x0608200a },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0001000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00600001, 0x40400232, 0x00ae0501, 0x00000000 },
- { 0x00600001, 0x40410232, 0x00ae0510, 0x00000000 },
- { 0x00600001, 0x40500232, 0x00ae0521, 0x00000000 },
- { 0x00600001, 0x40510232, 0x00ae0530, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x0408200b },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff5a },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff54 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
diff --git a/src/shaders/post_processing/gen5_6/nv12_dndi_nv12.g6b b/src/shaders/post_processing/gen5_6/nv12_dndi_nv12.g6b
deleted file mode 100644
index 8d6ebe3..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_dndi_nv12.g6b
+++ /dev/null
@@ -1,170 +0,0 @@
- { 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x204801aa, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x205801aa, 0x000000a2, 0x00000000 },
- { 0x02600031, 0x24400cc1, 0x00000020, 0x04cb8004 },
- { 0x00800001, 0x21400229, 0x00b10440, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00b10450, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00b10460, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00b10470, 0x00000000 },
- { 0x00600001, 0x22400229, 0x00ae0481, 0x00000000 },
- { 0x00600001, 0x23400229, 0x00ae0480, 0x00000000 },
- { 0x00600001, 0x22500229, 0x00ae0491, 0x00000000 },
- { 0x00600001, 0x23500229, 0x00ae0490, 0x00000000 },
- { 0x00600001, 0x22600229, 0x00ae04a1, 0x00000000 },
- { 0x00600001, 0x23600229, 0x00ae04a0, 0x00000000 },
- { 0x00600001, 0x22700229, 0x00ae04b1, 0x00000000 },
- { 0x00600001, 0x23700229, 0x00ae04b0, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00b104d0, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00b104e0, 0x00000000 },
- { 0x00800001, 0x22200229, 0x00b104f0, 0x00000000 },
- { 0x00600001, 0x22800229, 0x00ae0501, 0x00000000 },
- { 0x00600001, 0x23800229, 0x00ae0500, 0x00000000 },
- { 0x00600001, 0x22900229, 0x00ae0511, 0x00000000 },
- { 0x00600001, 0x23900229, 0x00ae0510, 0x00000000 },
- { 0x00600001, 0x22a00229, 0x00ae0521, 0x00000000 },
- { 0x00600001, 0x23a00229, 0x00ae0520, 0x00000000 },
- { 0x00600001, 0x22b00229, 0x00ae0531, 0x00000000 },
- { 0x00600001, 0x23b00229, 0x00ae0530, 0x00000000 },
- { 0x00000008, 0x21003da1, 0x000000a0, 0x00010001 },
- { 0x00000001, 0x210401a1, 0x000000a2, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
- { 0x00600001, 0x21600022, 0x008d0100, 0x00000000 },
- { 0x00600001, 0x21800022, 0x008d0540, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000160, 0x04094014 },
- { 0x00200008, 0x21003da1, 0x004500a0, 0x00020002 },
- { 0x00000040, 0x21002421, 0x00000100, 0x00000034 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00000003 },
- { 0x00600001, 0x21a00022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x21c00022, 0x00000560, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x000001a0, 0x04094014 },
- { 0x00800001, 0x20400232, 0x00b10440, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b10450, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b10460, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b10470, 0x00000000 },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x06094007 },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0001000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00600001, 0x40400232, 0x00ae0481, 0x00000000 },
- { 0x00600001, 0x40410232, 0x00ae0490, 0x00000000 },
- { 0x00600001, 0x40500232, 0x00ae04a1, 0x00000000 },
- { 0x00600001, 0x40510232, 0x00ae04b0, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x04094008 },
- { 0x00800001, 0x20400232, 0x00b104c0, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00b104d0, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00b104e0, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00b104f0, 0x00000000 },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x0609400a },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0001000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00600001, 0x40400232, 0x00ae0501, 0x00000000 },
- { 0x00600001, 0x40410232, 0x00ae0510, 0x00000000 },
- { 0x00600001, 0x40500232, 0x00ae0521, 0x00000000 },
- { 0x00600001, 0x40510232, 0x00ae0530, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x0409400b },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff5a },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff54 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen5_6/nv12_load_save_nv12.asm b/src/shaders/post_processing/gen5_6/nv12_load_save_nv12.asm
deleted file mode 100644
index f234f83..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_load_save_nv12.asm
+++ /dev/null
@@ -1,17 +0,0 @@
-// Module name: NV12_LOAD_SAVE_NV12
-.kernel NV12_LOAD_SAVE_NV12
-.code
-
-#include "SetupVPKernel.asm"
-#include "Multiple_Loop_Head.asm"
-#include "NV12_Load_8x4.asm"
-#include "PL8x4_Save_NV12.asm"
-#include "Multiple_Loop.asm"
-
-END_THREAD // End of Thread
-
-.end_code
-
-.end_kernel
-
-// end of nv12_load_save_nv12.asm
diff --git a/src/shaders/post_processing/gen5_6/nv12_load_save_nv12.g4b.gen5 b/src/shaders/post_processing/gen5_6/nv12_load_save_nv12.g4b.gen5
deleted file mode 100644
index e169464..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_load_save_nv12.g4b.gen5
+++ /dev/null
@@ -1,110 +0,0 @@
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0248a001 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x02600031, 0x28000c01, 0x408d0000, 0x0228a002 },
- { 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
- { 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
- { 0x00800001, 0x22600229, 0x00d20820, 0x00000000 },
- { 0x00800001, 0x23600229, 0x00d20821, 0x00000000 },
- { 0x00800001, 0x22400229, 0x00d20800, 0x00000000 },
- { 0x00800001, 0x23400229, 0x00d20801, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0248a007 },
- { 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x28000c01, 0x408d0000, 0x0228a008 },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
- { 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
- { 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
- { 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
- { 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
- { 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
- { 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
- { 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
- { 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
- { 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
- { 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
- { 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x0a082007 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
- { 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
- { 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
- { 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x06082008 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff40 },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff3a },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
diff --git a/src/shaders/post_processing/gen5_6/nv12_load_save_nv12.g6b b/src/shaders/post_processing/gen5_6/nv12_load_save_nv12.g6b
deleted file mode 100644
index 9b69967..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_load_save_nv12.g6b
+++ /dev/null
@@ -1,183 +0,0 @@
- { 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02498001 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x28000cc1, 0x00000040, 0x02298002 },
- { 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
- { 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
- { 0x00800001, 0x22600229, 0x00d20820, 0x00000000 },
- { 0x00800001, 0x23600229, 0x00d20821, 0x00000000 },
- { 0x00800001, 0x22400229, 0x00d20800, 0x00000000 },
- { 0x00800001, 0x23400229, 0x00d20801, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02498007 },
- { 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x28000cc1, 0x00000020, 0x02298008 },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
- { 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
- { 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
- { 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
- { 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
- { 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
- { 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
- { 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
- { 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
- { 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
- { 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
- { 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x0a094007 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
- { 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
- { 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
- { 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x06094008 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff40 },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff3a },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen5_6/nv12_load_save_pa.asm b/src/shaders/post_processing/gen5_6/nv12_load_save_pa.asm
deleted file mode 100755
index 3fa4494..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_load_save_pa.asm
+++ /dev/null
@@ -1,18 +0,0 @@
-// Module name: NV12_LOAD_SAVE_pl1
-.kernel NV12_LOAD_SAVE_PL1 // what's usage of it? just a name?
-.code
-
-#include "SetupVPKernel.asm"
-#include "Multiple_Loop_Head.asm"
-#include "NV12_Load_8x5.asm"
-#include "PL8x5_PL8x8.asm"
-#include "PL8x8_Save_PA.asm"
-#include "Multiple_Loop.asm"
-
-END_THREAD // End of Thread
-
-.end_code
-
-.end_kernel
-
-// end of nv12_load_save_pl1.asm
diff --git a/src/shaders/post_processing/gen5_6/nv12_load_save_pa.g4b.gen5 b/src/shaders/post_processing/gen5_6/nv12_load_save_pa.g4b.gen5
deleted file mode 100644
index 9fae145..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_load_save_pa.g4b.gen5
+++ /dev/null
@@ -1,121 +0,0 @@
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0248a001 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0004000f },
- { 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x02600031, 0x28000c01, 0x408d0000, 0x0238a002 },
- { 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
- { 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
- { 0x00800001, 0x22800229, 0x00ae0840, 0x00000000 },
- { 0x00800001, 0x23800229, 0x00ae0841, 0x00000000 },
- { 0x00800001, 0x22600229, 0x00ae0820, 0x00000000 },
- { 0x00800001, 0x23600229, 0x00ae0821, 0x00000000 },
- { 0x00800001, 0x22400229, 0x00ae0800, 0x00000000 },
- { 0x00800001, 0x23400229, 0x00ae0801, 0x00000000 },
- { 0x80600042, 0x22b02529, 0x008d0270, 0x008d0280 },
- { 0x80600042, 0x23b02529, 0x008d0370, 0x008d0380 },
- { 0x00600001, 0x22a00129, 0x008d0270, 0x00000000 },
- { 0x80600042, 0x22902529, 0x008d0260, 0x008d0270 },
- { 0x00600001, 0x23a00129, 0x008d0370, 0x00000000 },
- { 0x80600042, 0x23902529, 0x008d0360, 0x008d0370 },
- { 0x00600001, 0x22800129, 0x008d0260, 0x00000000 },
- { 0x80600042, 0x22702529, 0x008d0250, 0x008d0260 },
- { 0x00600001, 0x23800129, 0x008d0360, 0x00000000 },
- { 0x80600042, 0x23702529, 0x008d0350, 0x008d0360 },
- { 0x00600001, 0x22600129, 0x008d0250, 0x00000000 },
- { 0x80600042, 0x22502529, 0x008d0240, 0x008d0250 },
- { 0x00600001, 0x23600129, 0x008d0350, 0x00000000 },
- { 0x80600042, 0x23502529, 0x008d0340, 0x008d0350 },
- { 0x00400040, 0x22083e28, 0x00690028, 0x07000700 },
- { 0x00800001, 0xd0000231, 0x00d20140, 0x00000000 },
- { 0x00800001, 0xd0200231, 0x00d20160, 0x00000000 },
- { 0x00800001, 0xd0400231, 0x00d20180, 0x00000000 },
- { 0x00800001, 0xd0600231, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0xd0800231, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0xd0a00231, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0xd0c00231, 0x00d20200, 0x00000000 },
- { 0x00800001, 0xd0e00231, 0x00d20220, 0x00000000 },
- { 0x00600001, 0xf4000231, 0x00ae0240, 0x00000000 },
- { 0x00600001, 0xf8000231, 0x00ae0340, 0x00000000 },
- { 0x00600001, 0xf4200231, 0x00ae0250, 0x00000000 },
- { 0x00600001, 0xf8200231, 0x00ae0350, 0x00000000 },
- { 0x00600001, 0xf4400231, 0x00ae0260, 0x00000000 },
- { 0x00600001, 0xf8400231, 0x00ae0360, 0x00000000 },
- { 0x00600001, 0xf4600231, 0x00ae0270, 0x00000000 },
- { 0x00600001, 0xf8600231, 0x00ae0370, 0x00000000 },
- { 0x00600001, 0xf4800231, 0x00ae0280, 0x00000000 },
- { 0x00600001, 0xf8800231, 0x00ae0380, 0x00000000 },
- { 0x00600001, 0xf4a00231, 0x00ae0290, 0x00000000 },
- { 0x00600001, 0xf8a00231, 0x00ae0390, 0x00000000 },
- { 0x00600001, 0xf4c00231, 0x00ae02a0, 0x00000000 },
- { 0x00600001, 0xf8c00231, 0x00ae03a0, 0x00000000 },
- { 0x00600001, 0xf4e00231, 0x00ae02b0, 0x00000000 },
- { 0x00600001, 0xf8e00231, 0x00ae03b0, 0x00000000 },
- { 0x00000409, 0x21003da5, 0x000000a0, 0x00010001 },
- { 0x00000c01, 0x210401a5, 0x000000a2, 0x00000000 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0007001f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000002a },
- { 0x01600031, 0x21400c01, 0x408d0000, 0x0288a007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x27000129, 0x02b10140, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x27200129, 0x02b10160, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x27400129, 0x02b10180, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x27600129, 0x02b101a0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x27800129, 0x02b101c0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x27a00129, 0x02b101e0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x27c00129, 0x02b10200, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x27e00129, 0x02b10220, 0x00000000 },
- { 0x00600001, 0x20400022, 0x008d0700, 0x00000000 },
- { 0x00600001, 0x20600022, 0x008d0720, 0x00000000 },
- { 0x00600001, 0x20800022, 0x008d0740, 0x00000000 },
- { 0x00600001, 0x20a00022, 0x008d0760, 0x00000000 },
- { 0x00600001, 0x20c00022, 0x008d0780, 0x00000000 },
- { 0x00600001, 0x20e00022, 0x008d07a0, 0x00000000 },
- { 0x00600001, 0x21000022, 0x008d07c0, 0x00000000 },
- { 0x00600001, 0x21200022, 0x008d07e0, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x12082007 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff2a },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff24 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
diff --git a/src/shaders/post_processing/gen5_6/nv12_load_save_pa.g6b b/src/shaders/post_processing/gen5_6/nv12_load_save_pa.g6b
deleted file mode 100644
index 53af4e4..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_load_save_pa.g6b
+++ /dev/null
@@ -1,194 +0,0 @@
- { 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02498001 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0004000f },
- { 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x28000cc1, 0x00000040, 0x02398002 },
- { 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
- { 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
- { 0x00800001, 0x22800229, 0x00ae0840, 0x00000000 },
- { 0x00800001, 0x23800229, 0x00ae0841, 0x00000000 },
- { 0x00800001, 0x22600229, 0x00ae0820, 0x00000000 },
- { 0x00800001, 0x23600229, 0x00ae0821, 0x00000000 },
- { 0x00800001, 0x22400229, 0x00ae0800, 0x00000000 },
- { 0x00800001, 0x23400229, 0x00ae0801, 0x00000000 },
- { 0x80600042, 0x22b02529, 0x008d0270, 0x008d0280 },
- { 0x80600042, 0x23b02529, 0x008d0370, 0x008d0380 },
- { 0x00600001, 0x22a00129, 0x008d0270, 0x00000000 },
- { 0x80600042, 0x22902529, 0x008d0260, 0x008d0270 },
- { 0x00600001, 0x23a00129, 0x008d0370, 0x00000000 },
- { 0x80600042, 0x23902529, 0x008d0360, 0x008d0370 },
- { 0x00600001, 0x22800129, 0x008d0260, 0x00000000 },
- { 0x80600042, 0x22702529, 0x008d0250, 0x008d0260 },
- { 0x00600001, 0x23800129, 0x008d0360, 0x00000000 },
- { 0x80600042, 0x23702529, 0x008d0350, 0x008d0360 },
- { 0x00600001, 0x22600129, 0x008d0250, 0x00000000 },
- { 0x80600042, 0x22502529, 0x008d0240, 0x008d0250 },
- { 0x00600001, 0x23600129, 0x008d0350, 0x00000000 },
- { 0x80600042, 0x23502529, 0x008d0340, 0x008d0350 },
- { 0x00400040, 0x22083e28, 0x00690028, 0x07000700 },
- { 0x00800001, 0xd0000231, 0x00d20140, 0x00000000 },
- { 0x00800001, 0xd0200231, 0x00d20160, 0x00000000 },
- { 0x00800001, 0xd0400231, 0x00d20180, 0x00000000 },
- { 0x00800001, 0xd0600231, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0xd0800231, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0xd0a00231, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0xd0c00231, 0x00d20200, 0x00000000 },
- { 0x00800001, 0xd0e00231, 0x00d20220, 0x00000000 },
- { 0x00600001, 0xf4000231, 0x00ae0240, 0x00000000 },
- { 0x00600001, 0xf8000231, 0x00ae0340, 0x00000000 },
- { 0x00600001, 0xf4200231, 0x00ae0250, 0x00000000 },
- { 0x00600001, 0xf8200231, 0x00ae0350, 0x00000000 },
- { 0x00600001, 0xf4400231, 0x00ae0260, 0x00000000 },
- { 0x00600001, 0xf8400231, 0x00ae0360, 0x00000000 },
- { 0x00600001, 0xf4600231, 0x00ae0270, 0x00000000 },
- { 0x00600001, 0xf8600231, 0x00ae0370, 0x00000000 },
- { 0x00600001, 0xf4800231, 0x00ae0280, 0x00000000 },
- { 0x00600001, 0xf8800231, 0x00ae0380, 0x00000000 },
- { 0x00600001, 0xf4a00231, 0x00ae0290, 0x00000000 },
- { 0x00600001, 0xf8a00231, 0x00ae0390, 0x00000000 },
- { 0x00600001, 0xf4c00231, 0x00ae02a0, 0x00000000 },
- { 0x00600001, 0xf8c00231, 0x00ae03a0, 0x00000000 },
- { 0x00600001, 0xf4e00231, 0x00ae02b0, 0x00000000 },
- { 0x00600001, 0xf8e00231, 0x00ae03b0, 0x00000000 },
- { 0x00000409, 0x21003da5, 0x000000a0, 0x00010001 },
- { 0x00000c01, 0x210401a5, 0x000000a2, 0x00000000 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0007001f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000002a },
- { 0x04600031, 0x21400cc1, 0x00000020, 0x02898007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x27000129, 0x02b10140, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x27200129, 0x02b10160, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x27400129, 0x02b10180, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x27600129, 0x02b101a0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x27800129, 0x02b101c0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x27a00129, 0x02b101e0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x27c00129, 0x02b10200, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x27e00129, 0x02b10220, 0x00000000 },
- { 0x00600001, 0x20400022, 0x008d0700, 0x00000000 },
- { 0x00600001, 0x20600022, 0x008d0720, 0x00000000 },
- { 0x00600001, 0x20800022, 0x008d0740, 0x00000000 },
- { 0x00600001, 0x20a00022, 0x008d0760, 0x00000000 },
- { 0x00600001, 0x20c00022, 0x008d0780, 0x00000000 },
- { 0x00600001, 0x20e00022, 0x008d07a0, 0x00000000 },
- { 0x00600001, 0x21000022, 0x008d07c0, 0x00000000 },
- { 0x00600001, 0x21200022, 0x008d07e0, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x12094007 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff2a },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff24 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen5_6/nv12_load_save_pl3.asm b/src/shaders/post_processing/gen5_6/nv12_load_save_pl3.asm
deleted file mode 100644
index 9fa44a1..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_load_save_pl3.asm
+++ /dev/null
@@ -1,17 +0,0 @@
-// Module name: NV12_LOAD_SAVE_PL3
-.kernel NV12_LOAD_SAVE_PL3
-.code
-
-#include "SetupVPKernel.asm"
-#include "Multiple_Loop_Head.asm"
-#include "NV12_Load_8x4.asm"
-#include "PL8x4_Save_IMC3.asm"
-#include "Multiple_Loop.asm"
-
-END_THREAD // End of Thread
-
-.end_code
-
-.end_kernel
-
-// end of nv12_load_save_pl3.asm
diff --git a/src/shaders/post_processing/gen5_6/nv12_load_save_pl3.g4b.gen5 b/src/shaders/post_processing/gen5_6/nv12_load_save_pl3.g4b.gen5
deleted file mode 100644
index 86d5dc7..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_load_save_pl3.g4b.gen5
+++ /dev/null
@@ -1,109 +0,0 @@
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0248a001 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x02600031, 0x28000c01, 0x408d0000, 0x0228a002 },
- { 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
- { 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
- { 0x00800001, 0x22600229, 0x00d20820, 0x00000000 },
- { 0x00800001, 0x23600229, 0x00d20821, 0x00000000 },
- { 0x00800001, 0x22400229, 0x00d20800, 0x00000000 },
- { 0x00800001, 0x23400229, 0x00d20801, 0x00000000 },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000052 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0248a007 },
- { 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x28000c01, 0x408d0000, 0x0218a008 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x29000c01, 0x408d0000, 0x0218a009 },
- { 0x00800001, 0x28200229, 0x008d0810, 0x00000000 },
- { 0x00800001, 0x29200229, 0x008d0910, 0x00000000 },
- { 0x00800001, 0x28000229, 0x008d0800, 0x00000000 },
- { 0x00800001, 0x29000229, 0x008d0900, 0x00000000 },
- { 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
- { 0x00910001, 0x22400231, 0x028d0800, 0x00000000 },
- { 0x00910001, 0x23400231, 0x028d0900, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
- { 0x00910001, 0x22500231, 0x028d0810, 0x00000000 },
- { 0x00910001, 0x23500231, 0x028d0910, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
- { 0x00910001, 0x22600231, 0x028d0820, 0x00000000 },
- { 0x00910001, 0x23600231, 0x028d0920, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
- { 0x00910001, 0x22700231, 0x028d0830, 0x00000000 },
- { 0x00910001, 0x23700231, 0x028d0930, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x0a082007 },
- { 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20240, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20260, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x04082008 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20340, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20360, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x04082009 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff42 },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff3c },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
diff --git a/src/shaders/post_processing/gen5_6/nv12_load_save_pl3.g6b b/src/shaders/post_processing/gen5_6/nv12_load_save_pl3.g6b
deleted file mode 100644
index 85a37f9..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_load_save_pl3.g6b
+++ /dev/null
@@ -1,182 +0,0 @@
- { 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02498001 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x28000cc1, 0x00000040, 0x02298002 },
- { 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
- { 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
- { 0x00800001, 0x22600229, 0x00d20820, 0x00000000 },
- { 0x00800001, 0x23600229, 0x00d20821, 0x00000000 },
- { 0x00800001, 0x22400229, 0x00d20800, 0x00000000 },
- { 0x00800001, 0x23400229, 0x00d20801, 0x00000000 },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000052 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02498007 },
- { 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x28000cc1, 0x00000020, 0x02198008 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x29000cc1, 0x00000020, 0x02198009 },
- { 0x00800001, 0x28200229, 0x008d0810, 0x00000000 },
- { 0x00800001, 0x29200229, 0x008d0910, 0x00000000 },
- { 0x00800001, 0x28000229, 0x008d0800, 0x00000000 },
- { 0x00800001, 0x29000229, 0x008d0900, 0x00000000 },
- { 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
- { 0x00910001, 0x22400231, 0x028d0800, 0x00000000 },
- { 0x00910001, 0x23400231, 0x028d0900, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
- { 0x00910001, 0x22500231, 0x028d0810, 0x00000000 },
- { 0x00910001, 0x23500231, 0x028d0910, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
- { 0x00910001, 0x22600231, 0x028d0820, 0x00000000 },
- { 0x00910001, 0x23600231, 0x028d0920, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
- { 0x00910001, 0x22700231, 0x028d0830, 0x00000000 },
- { 0x00910001, 0x23700231, 0x028d0930, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x0a094007 },
- { 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20240, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20260, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x04094008 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20340, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20360, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x04094009 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff42 },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff3c },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen5_6/nv12_load_save_rgbx.asm b/src/shaders/post_processing/gen5_6/nv12_load_save_rgbx.asm
deleted file mode 100755
index 72cd96b..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_load_save_rgbx.asm
+++ /dev/null
@@ -1,25 +0,0 @@
-// Module name: NV12_LOAD_SAVE_RGBX
-.kernel NV12_LOAD_SAVE_RGBX
-.code
-#define FIX_POINT_CONVERSION
-// #define FLOAT_POINT_CONVERSION
-
-#include "SetupVPKernel.asm"
-#include "YUV_to_RGBX_Coef.asm"
-#include "Multiple_Loop_Head.asm"
-#include "NV12_Load_8x4.asm"
-#ifdef FIX_POINT_CONVERSION
- #include "YUVX_Save_RGBX_Fix.asm"
-#else
- #include "YUVX_Save_RGBX_Float.asm"
-#endif
-#include "RGB16x8_Save_RGB.asm"
-#include "Multiple_Loop.asm"
-
-END_THREAD // End of Thread
-
-.end_code
-
-.end_kernel
-
-// end of nv12_load_save_rgbx.asm
diff --git a/src/shaders/post_processing/gen5_6/nv12_load_save_rgbx.g4b.gen5 b/src/shaders/post_processing/gen5_6/nv12_load_save_rgbx.g4b.gen5
deleted file mode 100644
index 25b21bc..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_load_save_rgbx.g4b.gen5
+++ /dev/null
@@ -1,721 +0,0 @@
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x02000005, 0x20000c24, 0x02000028, 0xff000000 },
- { 0x00110001, 0x24400061, 0x02000000, 0x0000012a },
- { 0x00110001, 0x24440061, 0x02000000, 0x00000199 },
- { 0x00010001, 0x24500061, 0x02000000, 0x0000012a },
- { 0x00010001, 0x24540061, 0x02000000, 0x00000199 },
- { 0x00000001, 0x24480061, 0x00000000, 0xff9c012a },
- { 0x00000001, 0x244c0061, 0x00000000, 0x0000ff30 },
- { 0x00110001, 0x24500061, 0x02000000, 0x0204012a },
- { 0x00110001, 0x24540061, 0x02000000, 0x00000000 },
- { 0x00010001, 0x24400061, 0x02000000, 0x0204012a },
- { 0x00010001, 0x24440061, 0x02000000, 0x00000000 },
- { 0x8060000c, 0x24403dad, 0x000d0440, 0x00010001 },
- { 0x8040000c, 0x24503dad, 0x00090450, 0x00010001 },
- { 0x00000001, 0x24580061, 0x00000000, 0x008080f0 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0248a001 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x02600031, 0x28000c01, 0x408d0000, 0x0228a002 },
- { 0x00600001, 0x63000231, 0x000d0770, 0x00000000 },
- { 0x00600001, 0x63200231, 0x000d0778, 0x00000000 },
- { 0x00600001, 0x46800129, 0x000d0830, 0x00000000 },
- { 0x00600001, 0x46820129, 0x000d0830, 0x00000000 },
- { 0x00600001, 0x63010231, 0x000e0680, 0x00000000 },
- { 0x00600001, 0x63210231, 0x000e0690, 0x00000000 },
- { 0x00600001, 0x63020231, 0x000e0681, 0x00000000 },
- { 0x00600001, 0x63220231, 0x000e0691, 0x00000000 },
- { 0x00600001, 0x62c00231, 0x000d0760, 0x00000000 },
- { 0x00600001, 0x62e00231, 0x000d0768, 0x00000000 },
- { 0x00600001, 0x46800129, 0x000d0830, 0x00000000 },
- { 0x00600001, 0x46820129, 0x000d0830, 0x00000000 },
- { 0x00600001, 0x62c10231, 0x000e0680, 0x00000000 },
- { 0x00600001, 0x62e10231, 0x000e0690, 0x00000000 },
- { 0x00600001, 0x62c20231, 0x000e0681, 0x00000000 },
- { 0x00600001, 0x62e20231, 0x000e0691, 0x00000000 },
- { 0x00600001, 0x62800231, 0x000d0750, 0x00000000 },
- { 0x00600001, 0x62a00231, 0x000d0758, 0x00000000 },
- { 0x00600001, 0x46800129, 0x000d0820, 0x00000000 },
- { 0x00600001, 0x46820129, 0x000d0820, 0x00000000 },
- { 0x00600001, 0x62810231, 0x000e0680, 0x00000000 },
- { 0x00600001, 0x62a10231, 0x000e0690, 0x00000000 },
- { 0x00600001, 0x62820231, 0x000e0681, 0x00000000 },
- { 0x00600001, 0x62a20231, 0x000e0691, 0x00000000 },
- { 0x00600001, 0x62400231, 0x000d0740, 0x00000000 },
- { 0x00600001, 0x62600231, 0x000d0748, 0x00000000 },
- { 0x00600001, 0x46800129, 0x000d0820, 0x00000000 },
- { 0x00600001, 0x46820129, 0x000d0820, 0x00000000 },
- { 0x00600001, 0x62410231, 0x000e0680, 0x00000000 },
- { 0x00600001, 0x62610231, 0x000e0690, 0x00000000 },
- { 0x00600001, 0x62420231, 0x000e0681, 0x00000000 },
- { 0x00600001, 0x62620231, 0x000e0691, 0x00000000 },
- { 0x00600001, 0x62000231, 0x000d0730, 0x00000000 },
- { 0x00600001, 0x62200231, 0x000d0738, 0x00000000 },
- { 0x00600001, 0x46800129, 0x000d0810, 0x00000000 },
- { 0x00600001, 0x46820129, 0x000d0810, 0x00000000 },
- { 0x00600001, 0x62010231, 0x000e0680, 0x00000000 },
- { 0x00600001, 0x62210231, 0x000e0690, 0x00000000 },
- { 0x00600001, 0x62020231, 0x000e0681, 0x00000000 },
- { 0x00600001, 0x62220231, 0x000e0691, 0x00000000 },
- { 0x00600001, 0x61c00231, 0x000d0720, 0x00000000 },
- { 0x00600001, 0x61e00231, 0x000d0728, 0x00000000 },
- { 0x00600001, 0x46800129, 0x000d0810, 0x00000000 },
- { 0x00600001, 0x46820129, 0x000d0810, 0x00000000 },
- { 0x00600001, 0x61c10231, 0x000e0680, 0x00000000 },
- { 0x00600001, 0x61e10231, 0x000e0690, 0x00000000 },
- { 0x00600001, 0x61c20231, 0x000e0681, 0x00000000 },
- { 0x00600001, 0x61e20231, 0x000e0691, 0x00000000 },
- { 0x00600001, 0x61800231, 0x000d0710, 0x00000000 },
- { 0x00600001, 0x61a00231, 0x000d0718, 0x00000000 },
- { 0x00600001, 0x46800129, 0x000d0800, 0x00000000 },
- { 0x00600001, 0x46820129, 0x000d0800, 0x00000000 },
- { 0x00600001, 0x61810231, 0x000e0680, 0x00000000 },
- { 0x00600001, 0x61a10231, 0x000e0690, 0x00000000 },
- { 0x00600001, 0x61820231, 0x000e0681, 0x00000000 },
- { 0x00600001, 0x61a20231, 0x000e0691, 0x00000000 },
- { 0x00600001, 0x61400231, 0x000d0700, 0x00000000 },
- { 0x00600001, 0x61600231, 0x000d0708, 0x00000000 },
- { 0x00600001, 0x46800129, 0x000d0800, 0x00000000 },
- { 0x00600001, 0x46820129, 0x000d0800, 0x00000000 },
- { 0x00600001, 0x61410231, 0x000e0680, 0x00000000 },
- { 0x00600001, 0x61610231, 0x000e0690, 0x00000000 },
- { 0x00600001, 0x61420231, 0x000e0681, 0x00000000 },
- { 0x00600001, 0x61620231, 0x000e0691, 0x00000000 },
- { 0x00800040, 0x2580562d, 0x00110140, 0x00090458 },
- { 0x00800040, 0x25c0562d, 0x00110150, 0x00090458 },
- { 0x00800040, 0x2600562d, 0x00110160, 0x00090458 },
- { 0x00800040, 0x2640562d, 0x00110170, 0x00090458 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090440 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090440 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090440 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090440 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24600231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090448 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090448 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090448 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090448 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24800231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090450 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090450 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090450 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090450 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24a00231, 0x00120541, 0x00000000 },
- { 0x00600001, 0x61400231, 0x000d04a0, 0x00000000 },
- { 0x00600001, 0x61600231, 0x000d04a8, 0x00000000 },
- { 0x00600001, 0x61410231, 0x000d0480, 0x00000000 },
- { 0x00600001, 0x61610231, 0x000d0488, 0x00000000 },
- { 0x00600001, 0x61420231, 0x000d0460, 0x00000000 },
- { 0x00600001, 0x61620231, 0x000d0468, 0x00000000 },
- { 0x00800040, 0x2580562d, 0x00110180, 0x00090458 },
- { 0x00800040, 0x25c0562d, 0x00110190, 0x00090458 },
- { 0x00800040, 0x2600562d, 0x001101a0, 0x00090458 },
- { 0x00800040, 0x2640562d, 0x001101b0, 0x00090458 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090440 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090440 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090440 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090440 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24600231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090448 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090448 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090448 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090448 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24800231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090450 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090450 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090450 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090450 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24a00231, 0x00120541, 0x00000000 },
- { 0x00600001, 0x61800231, 0x000d04a0, 0x00000000 },
- { 0x00600001, 0x61a00231, 0x000d04a8, 0x00000000 },
- { 0x00600001, 0x61810231, 0x000d0480, 0x00000000 },
- { 0x00600001, 0x61a10231, 0x000d0488, 0x00000000 },
- { 0x00600001, 0x61820231, 0x000d0460, 0x00000000 },
- { 0x00600001, 0x61a20231, 0x000d0468, 0x00000000 },
- { 0x00800040, 0x2580562d, 0x001101c0, 0x00090458 },
- { 0x00800040, 0x25c0562d, 0x001101d0, 0x00090458 },
- { 0x00800040, 0x2600562d, 0x001101e0, 0x00090458 },
- { 0x00800040, 0x2640562d, 0x001101f0, 0x00090458 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090440 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090440 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090440 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090440 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24600231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090448 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090448 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090448 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090448 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24800231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090450 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090450 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090450 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090450 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24a00231, 0x00120541, 0x00000000 },
- { 0x00600001, 0x61c00231, 0x000d04a0, 0x00000000 },
- { 0x00600001, 0x61e00231, 0x000d04a8, 0x00000000 },
- { 0x00600001, 0x61c10231, 0x000d0480, 0x00000000 },
- { 0x00600001, 0x61e10231, 0x000d0488, 0x00000000 },
- { 0x00600001, 0x61c20231, 0x000d0460, 0x00000000 },
- { 0x00600001, 0x61e20231, 0x000d0468, 0x00000000 },
- { 0x00800040, 0x2580562d, 0x00110200, 0x00090458 },
- { 0x00800040, 0x25c0562d, 0x00110210, 0x00090458 },
- { 0x00800040, 0x2600562d, 0x00110220, 0x00090458 },
- { 0x00800040, 0x2640562d, 0x00110230, 0x00090458 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090440 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090440 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090440 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090440 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24600231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090448 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090448 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090448 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090448 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24800231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090450 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090450 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090450 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090450 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24a00231, 0x00120541, 0x00000000 },
- { 0x00600001, 0x62000231, 0x000d04a0, 0x00000000 },
- { 0x00600001, 0x62200231, 0x000d04a8, 0x00000000 },
- { 0x00600001, 0x62010231, 0x000d0480, 0x00000000 },
- { 0x00600001, 0x62210231, 0x000d0488, 0x00000000 },
- { 0x00600001, 0x62020231, 0x000d0460, 0x00000000 },
- { 0x00600001, 0x62220231, 0x000d0468, 0x00000000 },
- { 0x00800040, 0x2580562d, 0x00110240, 0x00090458 },
- { 0x00800040, 0x25c0562d, 0x00110250, 0x00090458 },
- { 0x00800040, 0x2600562d, 0x00110260, 0x00090458 },
- { 0x00800040, 0x2640562d, 0x00110270, 0x00090458 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090440 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090440 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090440 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090440 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24600231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090448 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090448 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090448 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090448 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24800231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090450 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090450 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090450 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090450 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24a00231, 0x00120541, 0x00000000 },
- { 0x00600001, 0x62400231, 0x000d04a0, 0x00000000 },
- { 0x00600001, 0x62600231, 0x000d04a8, 0x00000000 },
- { 0x00600001, 0x62410231, 0x000d0480, 0x00000000 },
- { 0x00600001, 0x62610231, 0x000d0488, 0x00000000 },
- { 0x00600001, 0x62420231, 0x000d0460, 0x00000000 },
- { 0x00600001, 0x62620231, 0x000d0468, 0x00000000 },
- { 0x00800040, 0x2580562d, 0x00110280, 0x00090458 },
- { 0x00800040, 0x25c0562d, 0x00110290, 0x00090458 },
- { 0x00800040, 0x2600562d, 0x001102a0, 0x00090458 },
- { 0x00800040, 0x2640562d, 0x001102b0, 0x00090458 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090440 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090440 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090440 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090440 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24600231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090448 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090448 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090448 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090448 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24800231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090450 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090450 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090450 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090450 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24a00231, 0x00120541, 0x00000000 },
- { 0x00600001, 0x62800231, 0x000d04a0, 0x00000000 },
- { 0x00600001, 0x62a00231, 0x000d04a8, 0x00000000 },
- { 0x00600001, 0x62810231, 0x000d0480, 0x00000000 },
- { 0x00600001, 0x62a10231, 0x000d0488, 0x00000000 },
- { 0x00600001, 0x62820231, 0x000d0460, 0x00000000 },
- { 0x00600001, 0x62a20231, 0x000d0468, 0x00000000 },
- { 0x00800040, 0x2580562d, 0x001102c0, 0x00090458 },
- { 0x00800040, 0x25c0562d, 0x001102d0, 0x00090458 },
- { 0x00800040, 0x2600562d, 0x001102e0, 0x00090458 },
- { 0x00800040, 0x2640562d, 0x001102f0, 0x00090458 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090440 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090440 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090440 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090440 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24600231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090448 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090448 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090448 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090448 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24800231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090450 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090450 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090450 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090450 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24a00231, 0x00120541, 0x00000000 },
- { 0x00600001, 0x62c00231, 0x000d04a0, 0x00000000 },
- { 0x00600001, 0x62e00231, 0x000d04a8, 0x00000000 },
- { 0x00600001, 0x62c10231, 0x000d0480, 0x00000000 },
- { 0x00600001, 0x62e10231, 0x000d0488, 0x00000000 },
- { 0x00600001, 0x62c20231, 0x000d0460, 0x00000000 },
- { 0x00600001, 0x62e20231, 0x000d0468, 0x00000000 },
- { 0x00800040, 0x2580562d, 0x00110300, 0x00090458 },
- { 0x00800040, 0x25c0562d, 0x00110310, 0x00090458 },
- { 0x00800040, 0x2600562d, 0x00110320, 0x00090458 },
- { 0x00800040, 0x2640562d, 0x00110330, 0x00090458 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090440 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090440 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090440 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090440 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24600231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090448 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090448 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090448 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090448 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24800231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090450 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090450 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090450 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090450 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24a00231, 0x00120541, 0x00000000 },
- { 0x00600001, 0x63000231, 0x000d04a0, 0x00000000 },
- { 0x00600001, 0x63200231, 0x000d04a8, 0x00000000 },
- { 0x00600001, 0x63010231, 0x000d0480, 0x00000000 },
- { 0x00600001, 0x63210231, 0x000d0488, 0x00000000 },
- { 0x00600001, 0x63020231, 0x000d0460, 0x00000000 },
- { 0x00600001, 0x63220231, 0x000d0468, 0x00000000 },
- { 0x00000409, 0x21003da5, 0x000000a0, 0x00020002 },
- { 0x00000c01, 0x210401a5, 0x000000a2, 0x00000000 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0007001f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000062 },
- { 0x00000006, 0x24000c20, 0x000000b8, 0xff00ff00 },
- { 0x01000010, 0x20000c04, 0x00000400, 0xffffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000002a },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0288a007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00710001, 0x21400021, 0x028d0700, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00710001, 0x21800021, 0x028d0720, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00710001, 0x21c00021, 0x028d0740, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00710001, 0x22000021, 0x028d0760, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00710001, 0x22400021, 0x028d0780, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00710001, 0x22800021, 0x028d07a0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00710001, 0x22c00021, 0x028d07c0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00710001, 0x23000021, 0x028d07e0, 0x00000000 },
- { 0x00000006, 0x24000c20, 0x000000b8, 0xff0000ff },
- { 0x01000010, 0x20000c04, 0x00000400, 0xffffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000002c },
- { 0x00000040, 0x20201ca6, 0x00000100, 0x00000020 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0288a007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
- { 0x00610008, 0x24402d29, 0x000000b8, 0x00080008 },
- { 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00710001, 0x21600021, 0x028d0700, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00710001, 0x21a00021, 0x028d0720, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00710001, 0x21e00021, 0x028d0740, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00710001, 0x22200021, 0x028d0760, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00710001, 0x22600021, 0x028d0780, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00710001, 0x22a00021, 0x028d07a0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00710001, 0x22e00021, 0x028d07c0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00710001, 0x23200021, 0x028d07e0, 0x00000000 },
- { 0x00600001, 0x20400022, 0x008d0140, 0x00000000 },
- { 0x00600001, 0x20600022, 0x008d0180, 0x00000000 },
- { 0x00600001, 0x20800022, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x20a00022, 0x008d0200, 0x00000000 },
- { 0x00600001, 0x20c00022, 0x008d0240, 0x00000000 },
- { 0x00600001, 0x20e00022, 0x008d0280, 0x00000000 },
- { 0x00600001, 0x21000022, 0x008d02c0, 0x00000000 },
- { 0x00600001, 0x21200022, 0x008d0300, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x12082007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000040, 0x20201ca6, 0x00000100, 0x00000020 },
- { 0x00600001, 0x20400022, 0x008d0160, 0x00000000 },
- { 0x00600001, 0x20600022, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x20800022, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x20a00022, 0x008d0220, 0x00000000 },
- { 0x00600001, 0x20c00022, 0x008d0260, 0x00000000 },
- { 0x00600001, 0x20e00022, 0x008d02a0, 0x00000000 },
- { 0x00600001, 0x21000022, 0x008d02e0, 0x00000000 },
- { 0x00600001, 0x21200022, 0x008d0320, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x12082007 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xfffffa96 },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffa90 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
diff --git a/src/shaders/post_processing/gen5_6/nv12_load_save_rgbx.g6b b/src/shaders/post_processing/gen5_6/nv12_load_save_rgbx.g6b
deleted file mode 100644
index c97d64d..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_load_save_rgbx.g6b
+++ /dev/null
@@ -1,794 +0,0 @@
- { 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x02000005, 0x20000c24, 0x02000028, 0xff000000 },
- { 0x00110001, 0x24400061, 0x02000000, 0x0000012a },
- { 0x00110001, 0x24440061, 0x02000000, 0x00000199 },
- { 0x00010001, 0x24500061, 0x02000000, 0x0000012a },
- { 0x00010001, 0x24540061, 0x02000000, 0x00000199 },
- { 0x00000001, 0x24480061, 0x00000000, 0xff9c012a },
- { 0x00000001, 0x244c0061, 0x00000000, 0x0000ff30 },
- { 0x00110001, 0x24500061, 0x02000000, 0x0204012a },
- { 0x00110001, 0x24540061, 0x02000000, 0x00000000 },
- { 0x00010001, 0x24400061, 0x02000000, 0x0204012a },
- { 0x00010001, 0x24440061, 0x02000000, 0x00000000 },
- { 0x8060000c, 0x24403dad, 0x000d0440, 0x00010001 },
- { 0x8040000c, 0x24503dad, 0x00090450, 0x00010001 },
- { 0x00000001, 0x24580061, 0x00000000, 0x008080f0 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02498001 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x28000cc1, 0x00000040, 0x02298002 },
- { 0x00600001, 0x63000231, 0x000d0770, 0x00000000 },
- { 0x00600001, 0x63200231, 0x000d0778, 0x00000000 },
- { 0x00600001, 0x46800129, 0x000d0830, 0x00000000 },
- { 0x00600001, 0x46820129, 0x000d0830, 0x00000000 },
- { 0x00600001, 0x63010231, 0x000e0680, 0x00000000 },
- { 0x00600001, 0x63210231, 0x000e0690, 0x00000000 },
- { 0x00600001, 0x63020231, 0x000e0681, 0x00000000 },
- { 0x00600001, 0x63220231, 0x000e0691, 0x00000000 },
- { 0x00600001, 0x62c00231, 0x000d0760, 0x00000000 },
- { 0x00600001, 0x62e00231, 0x000d0768, 0x00000000 },
- { 0x00600001, 0x46800129, 0x000d0830, 0x00000000 },
- { 0x00600001, 0x46820129, 0x000d0830, 0x00000000 },
- { 0x00600001, 0x62c10231, 0x000e0680, 0x00000000 },
- { 0x00600001, 0x62e10231, 0x000e0690, 0x00000000 },
- { 0x00600001, 0x62c20231, 0x000e0681, 0x00000000 },
- { 0x00600001, 0x62e20231, 0x000e0691, 0x00000000 },
- { 0x00600001, 0x62800231, 0x000d0750, 0x00000000 },
- { 0x00600001, 0x62a00231, 0x000d0758, 0x00000000 },
- { 0x00600001, 0x46800129, 0x000d0820, 0x00000000 },
- { 0x00600001, 0x46820129, 0x000d0820, 0x00000000 },
- { 0x00600001, 0x62810231, 0x000e0680, 0x00000000 },
- { 0x00600001, 0x62a10231, 0x000e0690, 0x00000000 },
- { 0x00600001, 0x62820231, 0x000e0681, 0x00000000 },
- { 0x00600001, 0x62a20231, 0x000e0691, 0x00000000 },
- { 0x00600001, 0x62400231, 0x000d0740, 0x00000000 },
- { 0x00600001, 0x62600231, 0x000d0748, 0x00000000 },
- { 0x00600001, 0x46800129, 0x000d0820, 0x00000000 },
- { 0x00600001, 0x46820129, 0x000d0820, 0x00000000 },
- { 0x00600001, 0x62410231, 0x000e0680, 0x00000000 },
- { 0x00600001, 0x62610231, 0x000e0690, 0x00000000 },
- { 0x00600001, 0x62420231, 0x000e0681, 0x00000000 },
- { 0x00600001, 0x62620231, 0x000e0691, 0x00000000 },
- { 0x00600001, 0x62000231, 0x000d0730, 0x00000000 },
- { 0x00600001, 0x62200231, 0x000d0738, 0x00000000 },
- { 0x00600001, 0x46800129, 0x000d0810, 0x00000000 },
- { 0x00600001, 0x46820129, 0x000d0810, 0x00000000 },
- { 0x00600001, 0x62010231, 0x000e0680, 0x00000000 },
- { 0x00600001, 0x62210231, 0x000e0690, 0x00000000 },
- { 0x00600001, 0x62020231, 0x000e0681, 0x00000000 },
- { 0x00600001, 0x62220231, 0x000e0691, 0x00000000 },
- { 0x00600001, 0x61c00231, 0x000d0720, 0x00000000 },
- { 0x00600001, 0x61e00231, 0x000d0728, 0x00000000 },
- { 0x00600001, 0x46800129, 0x000d0810, 0x00000000 },
- { 0x00600001, 0x46820129, 0x000d0810, 0x00000000 },
- { 0x00600001, 0x61c10231, 0x000e0680, 0x00000000 },
- { 0x00600001, 0x61e10231, 0x000e0690, 0x00000000 },
- { 0x00600001, 0x61c20231, 0x000e0681, 0x00000000 },
- { 0x00600001, 0x61e20231, 0x000e0691, 0x00000000 },
- { 0x00600001, 0x61800231, 0x000d0710, 0x00000000 },
- { 0x00600001, 0x61a00231, 0x000d0718, 0x00000000 },
- { 0x00600001, 0x46800129, 0x000d0800, 0x00000000 },
- { 0x00600001, 0x46820129, 0x000d0800, 0x00000000 },
- { 0x00600001, 0x61810231, 0x000e0680, 0x00000000 },
- { 0x00600001, 0x61a10231, 0x000e0690, 0x00000000 },
- { 0x00600001, 0x61820231, 0x000e0681, 0x00000000 },
- { 0x00600001, 0x61a20231, 0x000e0691, 0x00000000 },
- { 0x00600001, 0x61400231, 0x000d0700, 0x00000000 },
- { 0x00600001, 0x61600231, 0x000d0708, 0x00000000 },
- { 0x00600001, 0x46800129, 0x000d0800, 0x00000000 },
- { 0x00600001, 0x46820129, 0x000d0800, 0x00000000 },
- { 0x00600001, 0x61410231, 0x000e0680, 0x00000000 },
- { 0x00600001, 0x61610231, 0x000e0690, 0x00000000 },
- { 0x00600001, 0x61420231, 0x000e0681, 0x00000000 },
- { 0x00600001, 0x61620231, 0x000e0691, 0x00000000 },
- { 0x00800040, 0x2580562d, 0x00110140, 0x00090458 },
- { 0x00800040, 0x25c0562d, 0x00110150, 0x00090458 },
- { 0x00800040, 0x2600562d, 0x00110160, 0x00090458 },
- { 0x00800040, 0x2640562d, 0x00110170, 0x00090458 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090440 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090440 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090440 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090440 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24600231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090448 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090448 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090448 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090448 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24800231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090450 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090450 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090450 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090450 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24a00231, 0x00120541, 0x00000000 },
- { 0x00600001, 0x61400231, 0x000d04a0, 0x00000000 },
- { 0x00600001, 0x61600231, 0x000d04a8, 0x00000000 },
- { 0x00600001, 0x61410231, 0x000d0480, 0x00000000 },
- { 0x00600001, 0x61610231, 0x000d0488, 0x00000000 },
- { 0x00600001, 0x61420231, 0x000d0460, 0x00000000 },
- { 0x00600001, 0x61620231, 0x000d0468, 0x00000000 },
- { 0x00800040, 0x2580562d, 0x00110180, 0x00090458 },
- { 0x00800040, 0x25c0562d, 0x00110190, 0x00090458 },
- { 0x00800040, 0x2600562d, 0x001101a0, 0x00090458 },
- { 0x00800040, 0x2640562d, 0x001101b0, 0x00090458 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090440 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090440 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090440 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090440 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24600231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090448 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090448 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090448 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090448 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24800231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090450 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090450 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090450 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090450 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24a00231, 0x00120541, 0x00000000 },
- { 0x00600001, 0x61800231, 0x000d04a0, 0x00000000 },
- { 0x00600001, 0x61a00231, 0x000d04a8, 0x00000000 },
- { 0x00600001, 0x61810231, 0x000d0480, 0x00000000 },
- { 0x00600001, 0x61a10231, 0x000d0488, 0x00000000 },
- { 0x00600001, 0x61820231, 0x000d0460, 0x00000000 },
- { 0x00600001, 0x61a20231, 0x000d0468, 0x00000000 },
- { 0x00800040, 0x2580562d, 0x001101c0, 0x00090458 },
- { 0x00800040, 0x25c0562d, 0x001101d0, 0x00090458 },
- { 0x00800040, 0x2600562d, 0x001101e0, 0x00090458 },
- { 0x00800040, 0x2640562d, 0x001101f0, 0x00090458 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090440 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090440 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090440 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090440 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24600231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090448 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090448 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090448 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090448 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24800231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090450 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090450 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090450 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090450 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24a00231, 0x00120541, 0x00000000 },
- { 0x00600001, 0x61c00231, 0x000d04a0, 0x00000000 },
- { 0x00600001, 0x61e00231, 0x000d04a8, 0x00000000 },
- { 0x00600001, 0x61c10231, 0x000d0480, 0x00000000 },
- { 0x00600001, 0x61e10231, 0x000d0488, 0x00000000 },
- { 0x00600001, 0x61c20231, 0x000d0460, 0x00000000 },
- { 0x00600001, 0x61e20231, 0x000d0468, 0x00000000 },
- { 0x00800040, 0x2580562d, 0x00110200, 0x00090458 },
- { 0x00800040, 0x25c0562d, 0x00110210, 0x00090458 },
- { 0x00800040, 0x2600562d, 0x00110220, 0x00090458 },
- { 0x00800040, 0x2640562d, 0x00110230, 0x00090458 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090440 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090440 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090440 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090440 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24600231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090448 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090448 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090448 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090448 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24800231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090450 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090450 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090450 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090450 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24a00231, 0x00120541, 0x00000000 },
- { 0x00600001, 0x62000231, 0x000d04a0, 0x00000000 },
- { 0x00600001, 0x62200231, 0x000d04a8, 0x00000000 },
- { 0x00600001, 0x62010231, 0x000d0480, 0x00000000 },
- { 0x00600001, 0x62210231, 0x000d0488, 0x00000000 },
- { 0x00600001, 0x62020231, 0x000d0460, 0x00000000 },
- { 0x00600001, 0x62220231, 0x000d0468, 0x00000000 },
- { 0x00800040, 0x2580562d, 0x00110240, 0x00090458 },
- { 0x00800040, 0x25c0562d, 0x00110250, 0x00090458 },
- { 0x00800040, 0x2600562d, 0x00110260, 0x00090458 },
- { 0x00800040, 0x2640562d, 0x00110270, 0x00090458 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090440 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090440 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090440 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090440 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24600231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090448 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090448 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090448 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090448 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24800231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090450 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090450 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090450 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090450 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24a00231, 0x00120541, 0x00000000 },
- { 0x00600001, 0x62400231, 0x000d04a0, 0x00000000 },
- { 0x00600001, 0x62600231, 0x000d04a8, 0x00000000 },
- { 0x00600001, 0x62410231, 0x000d0480, 0x00000000 },
- { 0x00600001, 0x62610231, 0x000d0488, 0x00000000 },
- { 0x00600001, 0x62420231, 0x000d0460, 0x00000000 },
- { 0x00600001, 0x62620231, 0x000d0468, 0x00000000 },
- { 0x00800040, 0x2580562d, 0x00110280, 0x00090458 },
- { 0x00800040, 0x25c0562d, 0x00110290, 0x00090458 },
- { 0x00800040, 0x2600562d, 0x001102a0, 0x00090458 },
- { 0x00800040, 0x2640562d, 0x001102b0, 0x00090458 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090440 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090440 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090440 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090440 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24600231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090448 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090448 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090448 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090448 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24800231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090450 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090450 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090450 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090450 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24a00231, 0x00120541, 0x00000000 },
- { 0x00600001, 0x62800231, 0x000d04a0, 0x00000000 },
- { 0x00600001, 0x62a00231, 0x000d04a8, 0x00000000 },
- { 0x00600001, 0x62810231, 0x000d0480, 0x00000000 },
- { 0x00600001, 0x62a10231, 0x000d0488, 0x00000000 },
- { 0x00600001, 0x62820231, 0x000d0460, 0x00000000 },
- { 0x00600001, 0x62a20231, 0x000d0468, 0x00000000 },
- { 0x00800040, 0x2580562d, 0x001102c0, 0x00090458 },
- { 0x00800040, 0x25c0562d, 0x001102d0, 0x00090458 },
- { 0x00800040, 0x2600562d, 0x001102e0, 0x00090458 },
- { 0x00800040, 0x2640562d, 0x001102f0, 0x00090458 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090440 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090440 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090440 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090440 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24600231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090448 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090448 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090448 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090448 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24800231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090450 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090450 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090450 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090450 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24a00231, 0x00120541, 0x00000000 },
- { 0x00600001, 0x62c00231, 0x000d04a0, 0x00000000 },
- { 0x00600001, 0x62e00231, 0x000d04a8, 0x00000000 },
- { 0x00600001, 0x62c10231, 0x000d0480, 0x00000000 },
- { 0x00600001, 0x62e10231, 0x000d0488, 0x00000000 },
- { 0x00600001, 0x62c20231, 0x000d0460, 0x00000000 },
- { 0x00600001, 0x62e20231, 0x000d0468, 0x00000000 },
- { 0x00800040, 0x2580562d, 0x00110300, 0x00090458 },
- { 0x00800040, 0x25c0562d, 0x00110310, 0x00090458 },
- { 0x00800040, 0x2600562d, 0x00110320, 0x00090458 },
- { 0x00800040, 0x2640562d, 0x00110330, 0x00090458 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090440 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090440 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090440 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090440 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24600231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090448 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090448 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090448 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090448 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24800231, 0x00120541, 0x00000000 },
- { 0x80800041, 0x24c035ad, 0x00110580, 0x00090450 },
- { 0x80800041, 0x24e035ad, 0x001105c0, 0x00090450 },
- { 0x80800041, 0x250035ad, 0x00110600, 0x00090450 },
- { 0x80800041, 0x252035ad, 0x00110640, 0x00090450 },
- { 0x80400040, 0x64c035a9, 0x000b04c0, 0x000b04c2 },
- { 0x80400040, 0x64e035a9, 0x000b04e0, 0x000b04e2 },
- { 0x80400040, 0x650035a9, 0x000b0500, 0x000b0502 },
- { 0x80400040, 0x652035a9, 0x000b0520, 0x000b0522 },
- { 0x80400040, 0x64c03529, 0x000b04c0, 0x000b04c4 },
- { 0x80400040, 0x64e03529, 0x000b04e0, 0x000b04e4 },
- { 0x80400040, 0x65003529, 0x000b0500, 0x000b0504 },
- { 0x80400040, 0x65203529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x80800040, 0x25402d29, 0x00110540, 0x00800080 },
- { 0x80800009, 0x25403d29, 0x00110540, 0x00010001 },
- { 0x00800001, 0x24a00231, 0x00120541, 0x00000000 },
- { 0x00600001, 0x63000231, 0x000d04a0, 0x00000000 },
- { 0x00600001, 0x63200231, 0x000d04a8, 0x00000000 },
- { 0x00600001, 0x63010231, 0x000d0480, 0x00000000 },
- { 0x00600001, 0x63210231, 0x000d0488, 0x00000000 },
- { 0x00600001, 0x63020231, 0x000d0460, 0x00000000 },
- { 0x00600001, 0x63220231, 0x000d0468, 0x00000000 },
- { 0x00000409, 0x21003da5, 0x000000a0, 0x00020002 },
- { 0x00000c01, 0x210401a5, 0x000000a2, 0x00000000 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0007001f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000062 },
- { 0x00000006, 0x24000c20, 0x000000b8, 0xff00ff00 },
- { 0x01000010, 0x20000c04, 0x00000400, 0xffffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000002a },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02898007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00710001, 0x21400021, 0x028d0700, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00710001, 0x21800021, 0x028d0720, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00710001, 0x21c00021, 0x028d0740, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00710001, 0x22000021, 0x028d0760, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00710001, 0x22400021, 0x028d0780, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00710001, 0x22800021, 0x028d07a0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00710001, 0x22c00021, 0x028d07c0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00710001, 0x23000021, 0x028d07e0, 0x00000000 },
- { 0x00000006, 0x24000c20, 0x000000b8, 0xff0000ff },
- { 0x01000010, 0x20000c04, 0x00000400, 0xffffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000002c },
- { 0x00000040, 0x20201ca6, 0x00000100, 0x00000020 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02898007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
- { 0x00610008, 0x24402d29, 0x000000b8, 0x00080008 },
- { 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00710001, 0x21600021, 0x028d0700, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00710001, 0x21a00021, 0x028d0720, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00710001, 0x21e00021, 0x028d0740, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00710001, 0x22200021, 0x028d0760, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00710001, 0x22600021, 0x028d0780, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00710001, 0x22a00021, 0x028d07a0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00710001, 0x22e00021, 0x028d07c0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00710001, 0x23200021, 0x028d07e0, 0x00000000 },
- { 0x00600001, 0x20400022, 0x008d0140, 0x00000000 },
- { 0x00600001, 0x20600022, 0x008d0180, 0x00000000 },
- { 0x00600001, 0x20800022, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x20a00022, 0x008d0200, 0x00000000 },
- { 0x00600001, 0x20c00022, 0x008d0240, 0x00000000 },
- { 0x00600001, 0x20e00022, 0x008d0280, 0x00000000 },
- { 0x00600001, 0x21000022, 0x008d02c0, 0x00000000 },
- { 0x00600001, 0x21200022, 0x008d0300, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x12094007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000040, 0x20201ca6, 0x00000100, 0x00000020 },
- { 0x00600001, 0x20400022, 0x008d0160, 0x00000000 },
- { 0x00600001, 0x20600022, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x20800022, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x20a00022, 0x008d0220, 0x00000000 },
- { 0x00600001, 0x20c00022, 0x008d0260, 0x00000000 },
- { 0x00600001, 0x20e00022, 0x008d02a0, 0x00000000 },
- { 0x00600001, 0x21000022, 0x008d02e0, 0x00000000 },
- { 0x00600001, 0x21200022, 0x008d0320, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x12094007 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xfffffa96 },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffa90 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen5_6/nv12_scaling_nv12.asm b/src/shaders/post_processing/gen5_6/nv12_scaling_nv12.asm
deleted file mode 100644
index d93d879..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_scaling_nv12.asm
+++ /dev/null
@@ -1,20 +0,0 @@
-// Module name: NV12_SCALING_NV12
-.kernel NV12_SCALING_NV12
-.code
-
-#define INC_SCALING
-
-#include "SetupVPKernel.asm"
-#include "Multiple_Loop_Head.asm"
-#include "PL2_Scaling.asm"
-#include "PL16x8_PL8x4.asm"
-#include "PL8x4_Save_NV12.asm"
-#include "Multiple_Loop.asm"
-
-END_THREAD // End of Thread
-
-.end_code
-
-.end_kernel
-
-// end of nv12_scaling_nv12.asm
diff --git a/src/shaders/post_processing/gen5_6/nv12_scaling_nv12.g4b.gen5 b/src/shaders/post_processing/gen5_6/nv12_scaling_nv12.g4b.gen5
deleted file mode 100644
index 11da70e..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_scaling_nv12.g4b.gen5
+++ /dev/null
@@ -1,226 +0,0 @@
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00400001, 0x254002fd, 0x00000000, 0x48403000 },
- { 0x00400001, 0x255002fd, 0x00000000, 0x5c585450 },
- { 0x00600040, 0x25607fbd, 0x008d0540, 0x41000000 },
- { 0x00200401, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00000801, 0x21080061, 0x00000000, 0x00000000 },
- { 0x00802001, 0x208003be, 0x000000a8, 0x00000000 },
- { 0x00802001, 0x258003bd, 0x000000a8, 0x00000000 },
- { 0x00802001, 0x240003bc, 0x000000a4, 0x00000000 },
- { 0x00802048, 0x204077be, 0x000000bc, 0x008d0540 },
- { 0x00000401, 0x257003fd, 0x00000000, 0x437f0000 },
- { 0x00000801, 0x257c03fd, 0x00000000, 0x3f000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01800031, 0x27001c09, 0x208d0000, 0x0a8a0101 },
- { 0x01800031, 0x28001c09, 0x208d0000, 0x0a8a0202 },
- { 0x00802040, 0x208077be, 0x008d0580, 0x00000038 },
- { 0x00802040, 0x258077bd, 0x008d0580, 0x00000038 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0700 },
- { 0x00802001, 0x27000381, 0x00b10400, 0x00000000 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0800 },
- { 0x00802001, 0x28000381, 0x00b10400, 0x00000000 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0840 },
- { 0x00802001, 0x28400381, 0x00b10400, 0x00000000 },
- { 0x00800001, 0x21400229, 0x00cf0700, 0x00000000 },
- { 0x00800001, 0x22400229, 0x00cf0800, 0x00000000 },
- { 0x00800001, 0x23400229, 0x00cf0840, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01800031, 0x27001c09, 0x208d0000, 0x0a8a0101 },
- { 0x01800031, 0x28001c09, 0x208d0000, 0x0a8a0202 },
- { 0x00802040, 0x208077be, 0x008d0580, 0x00000038 },
- { 0x00802040, 0x258077bd, 0x008d0580, 0x00000038 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0700 },
- { 0x00802001, 0x27000381, 0x00b10400, 0x00000000 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0800 },
- { 0x00802001, 0x28000381, 0x00b10400, 0x00000000 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0840 },
- { 0x00802001, 0x28400381, 0x00b10400, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00cf0700, 0x00000000 },
- { 0x00800001, 0x22600229, 0x00cf0800, 0x00000000 },
- { 0x00800001, 0x23600229, 0x00cf0840, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01800031, 0x27001c09, 0x208d0000, 0x0a8a0101 },
- { 0x01800031, 0x28001c09, 0x208d0000, 0x0a8a0202 },
- { 0x00802040, 0x208077be, 0x008d0580, 0x00000038 },
- { 0x00802040, 0x258077bd, 0x008d0580, 0x00000038 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0700 },
- { 0x00802001, 0x27000381, 0x00b10400, 0x00000000 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0800 },
- { 0x00802001, 0x28000381, 0x00b10400, 0x00000000 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0840 },
- { 0x00802001, 0x28400381, 0x00b10400, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00cf0700, 0x00000000 },
- { 0x00800001, 0x22800229, 0x00cf0800, 0x00000000 },
- { 0x00800001, 0x23800229, 0x00cf0840, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01800031, 0x27001c09, 0x208d0000, 0x0a8a0101 },
- { 0x01800031, 0x28001c09, 0x208d0000, 0x0a8a0202 },
- { 0x00802040, 0x208077be, 0x008d0580, 0x00000038 },
- { 0x00802040, 0x258077bd, 0x008d0580, 0x00000038 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0700 },
- { 0x00802001, 0x27000381, 0x00b10400, 0x00000000 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0800 },
- { 0x00802001, 0x28000381, 0x00b10400, 0x00000000 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0840 },
- { 0x00802001, 0x28400381, 0x00b10400, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00cf0700, 0x00000000 },
- { 0x00800001, 0x22a00229, 0x00cf0800, 0x00000000 },
- { 0x00800001, 0x23a00229, 0x00cf0840, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01800031, 0x27001c09, 0x208d0000, 0x0a8a0101 },
- { 0x01800031, 0x28001c09, 0x208d0000, 0x0a8a0202 },
- { 0x00802040, 0x208077be, 0x008d0580, 0x00000038 },
- { 0x00802040, 0x258077bd, 0x008d0580, 0x00000038 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0700 },
- { 0x00802001, 0x27000381, 0x00b10400, 0x00000000 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0800 },
- { 0x00802001, 0x28000381, 0x00b10400, 0x00000000 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0840 },
- { 0x00802001, 0x28400381, 0x00b10400, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00cf0700, 0x00000000 },
- { 0x00800001, 0x22c00229, 0x00cf0800, 0x00000000 },
- { 0x00800001, 0x23c00229, 0x00cf0840, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01800031, 0x27001c09, 0x208d0000, 0x0a8a0101 },
- { 0x01800031, 0x28001c09, 0x208d0000, 0x0a8a0202 },
- { 0x00802040, 0x208077be, 0x008d0580, 0x00000038 },
- { 0x00802040, 0x258077bd, 0x008d0580, 0x00000038 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0700 },
- { 0x00802001, 0x27000381, 0x00b10400, 0x00000000 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0800 },
- { 0x00802001, 0x28000381, 0x00b10400, 0x00000000 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0840 },
- { 0x00802001, 0x28400381, 0x00b10400, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00cf0700, 0x00000000 },
- { 0x00800001, 0x22e00229, 0x00cf0800, 0x00000000 },
- { 0x00800001, 0x23e00229, 0x00cf0840, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01800031, 0x27001c09, 0x208d0000, 0x0a8a0101 },
- { 0x01800031, 0x28001c09, 0x208d0000, 0x0a8a0202 },
- { 0x00802040, 0x208077be, 0x008d0580, 0x00000038 },
- { 0x00802040, 0x258077bd, 0x008d0580, 0x00000038 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0700 },
- { 0x00802001, 0x27000381, 0x00b10400, 0x00000000 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0800 },
- { 0x00802001, 0x28000381, 0x00b10400, 0x00000000 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0840 },
- { 0x00802001, 0x28400381, 0x00b10400, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00cf0700, 0x00000000 },
- { 0x00800001, 0x23000229, 0x00cf0800, 0x00000000 },
- { 0x00800001, 0x24000229, 0x00cf0840, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01800031, 0x27001c09, 0x208d0000, 0x0a8a0101 },
- { 0x01800031, 0x28001c09, 0x208d0000, 0x0a8a0202 },
- { 0x00802040, 0x208077be, 0x008d0580, 0x00000038 },
- { 0x00802040, 0x258077bd, 0x008d0580, 0x00000038 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0700 },
- { 0x00802001, 0x27000381, 0x00b10400, 0x00000000 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0800 },
- { 0x00802001, 0x28000381, 0x00b10400, 0x00000000 },
- { 0x00802059, 0x240077bc, 0x00000570, 0x008d0840 },
- { 0x00802001, 0x28400381, 0x00b10400, 0x00000000 },
- { 0x00800001, 0x22200229, 0x00cf0700, 0x00000000 },
- { 0x00800001, 0x23200229, 0x00cf0800, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00cf0840, 0x00000000 },
- { 0x00600001, 0x22400129, 0x00ae0240, 0x00000000 },
- { 0x00600001, 0x23400129, 0x00ae0340, 0x00000000 },
- { 0x00600001, 0x22500129, 0x00ae0280, 0x00000000 },
- { 0x00600001, 0x23500129, 0x00ae0380, 0x00000000 },
- { 0x00600001, 0x22600129, 0x00ae02c0, 0x00000000 },
- { 0x00600001, 0x23600129, 0x00ae03c0, 0x00000000 },
- { 0x00600001, 0x22700129, 0x00ae0300, 0x00000000 },
- { 0x00600001, 0x23700129, 0x00ae0400, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0248a007 },
- { 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x28000c01, 0x408d0000, 0x0228a008 },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
- { 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
- { 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
- { 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
- { 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
- { 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
- { 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
- { 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
- { 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
- { 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
- { 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
- { 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x0a082007 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
- { 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
- { 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
- { 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x06082008 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00000041, 0x24407fbd, 0x000000bc, 0x41800000 },
- { 0x00000040, 0x20a477bd, 0x00000440, 0x000000a4 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xfffffe5e },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000001, 0x20a403bd, 0x00000094, 0x00000000 },
- { 0x00000041, 0x24407fbd, 0x00000038, 0x41000000 },
- { 0x00000040, 0x20a877bd, 0x00000440, 0x000000a8 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffe52 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
diff --git a/src/shaders/post_processing/gen5_6/nv12_scaling_nv12.g6b b/src/shaders/post_processing/gen5_6/nv12_scaling_nv12.g6b
deleted file mode 100644
index ffaf8ef..0000000
--- a/src/shaders/post_processing/gen5_6/nv12_scaling_nv12.g6b
+++ /dev/null
@@ -1,299 +0,0 @@
- { 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00400001, 0x254002fd, 0x00000000, 0x48403000 },
- { 0x00400001, 0x255002fd, 0x00000000, 0x5c585450 },
- { 0x00600040, 0x25607fbd, 0x008d0540, 0x41000000 },
- { 0x00200401, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00000801, 0x21080061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x208003be, 0x000000a8, 0x00000000 },
- { 0x00800001, 0x258003bd, 0x000000a8, 0x00000000 },
- { 0x00800001, 0x240003bc, 0x000000a4, 0x00000000 },
- { 0x00800048, 0x204077be, 0x000000bc, 0x008d0540 },
- { 0x00000401, 0x257003fd, 0x00000000, 0x437f0000 },
- { 0x00000801, 0x257c03fd, 0x00000000, 0x3f000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x02800031, 0x27001cc9, 0x00000020, 0x0a8a0101 },
- { 0x02800031, 0x28001cc9, 0x00000020, 0x0a8a0202 },
- { 0x00800040, 0x208077be, 0x008d0580, 0x00000038 },
- { 0x00800040, 0x258077bd, 0x008d0580, 0x00000038 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0700 },
- { 0x00800001, 0x27000381, 0x008d0400, 0x00000000 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0800 },
- { 0x00800001, 0x28000381, 0x008d0400, 0x00000000 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0840 },
- { 0x00800001, 0x28400381, 0x008d0400, 0x00000000 },
- { 0x00800001, 0x21400229, 0x00cf0700, 0x00000000 },
- { 0x00800001, 0x22400229, 0x00cf0800, 0x00000000 },
- { 0x00800001, 0x23400229, 0x00cf0840, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x02800031, 0x27001cc9, 0x00000020, 0x0a8a0101 },
- { 0x02800031, 0x28001cc9, 0x00000020, 0x0a8a0202 },
- { 0x00800040, 0x208077be, 0x008d0580, 0x00000038 },
- { 0x00800040, 0x258077bd, 0x008d0580, 0x00000038 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0700 },
- { 0x00800001, 0x27000381, 0x008d0400, 0x00000000 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0800 },
- { 0x00800001, 0x28000381, 0x008d0400, 0x00000000 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0840 },
- { 0x00800001, 0x28400381, 0x008d0400, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00cf0700, 0x00000000 },
- { 0x00800001, 0x22600229, 0x00cf0800, 0x00000000 },
- { 0x00800001, 0x23600229, 0x00cf0840, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x02800031, 0x27001cc9, 0x00000020, 0x0a8a0101 },
- { 0x02800031, 0x28001cc9, 0x00000020, 0x0a8a0202 },
- { 0x00800040, 0x208077be, 0x008d0580, 0x00000038 },
- { 0x00800040, 0x258077bd, 0x008d0580, 0x00000038 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0700 },
- { 0x00800001, 0x27000381, 0x008d0400, 0x00000000 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0800 },
- { 0x00800001, 0x28000381, 0x008d0400, 0x00000000 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0840 },
- { 0x00800001, 0x28400381, 0x008d0400, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00cf0700, 0x00000000 },
- { 0x00800001, 0x22800229, 0x00cf0800, 0x00000000 },
- { 0x00800001, 0x23800229, 0x00cf0840, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x02800031, 0x27001cc9, 0x00000020, 0x0a8a0101 },
- { 0x02800031, 0x28001cc9, 0x00000020, 0x0a8a0202 },
- { 0x00800040, 0x208077be, 0x008d0580, 0x00000038 },
- { 0x00800040, 0x258077bd, 0x008d0580, 0x00000038 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0700 },
- { 0x00800001, 0x27000381, 0x008d0400, 0x00000000 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0800 },
- { 0x00800001, 0x28000381, 0x008d0400, 0x00000000 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0840 },
- { 0x00800001, 0x28400381, 0x008d0400, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00cf0700, 0x00000000 },
- { 0x00800001, 0x22a00229, 0x00cf0800, 0x00000000 },
- { 0x00800001, 0x23a00229, 0x00cf0840, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x02800031, 0x27001cc9, 0x00000020, 0x0a8a0101 },
- { 0x02800031, 0x28001cc9, 0x00000020, 0x0a8a0202 },
- { 0x00800040, 0x208077be, 0x008d0580, 0x00000038 },
- { 0x00800040, 0x258077bd, 0x008d0580, 0x00000038 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0700 },
- { 0x00800001, 0x27000381, 0x008d0400, 0x00000000 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0800 },
- { 0x00800001, 0x28000381, 0x008d0400, 0x00000000 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0840 },
- { 0x00800001, 0x28400381, 0x008d0400, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00cf0700, 0x00000000 },
- { 0x00800001, 0x22c00229, 0x00cf0800, 0x00000000 },
- { 0x00800001, 0x23c00229, 0x00cf0840, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x02800031, 0x27001cc9, 0x00000020, 0x0a8a0101 },
- { 0x02800031, 0x28001cc9, 0x00000020, 0x0a8a0202 },
- { 0x00800040, 0x208077be, 0x008d0580, 0x00000038 },
- { 0x00800040, 0x258077bd, 0x008d0580, 0x00000038 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0700 },
- { 0x00800001, 0x27000381, 0x008d0400, 0x00000000 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0800 },
- { 0x00800001, 0x28000381, 0x008d0400, 0x00000000 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0840 },
- { 0x00800001, 0x28400381, 0x008d0400, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00cf0700, 0x00000000 },
- { 0x00800001, 0x22e00229, 0x00cf0800, 0x00000000 },
- { 0x00800001, 0x23e00229, 0x00cf0840, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x02800031, 0x27001cc9, 0x00000020, 0x0a8a0101 },
- { 0x02800031, 0x28001cc9, 0x00000020, 0x0a8a0202 },
- { 0x00800040, 0x208077be, 0x008d0580, 0x00000038 },
- { 0x00800040, 0x258077bd, 0x008d0580, 0x00000038 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0700 },
- { 0x00800001, 0x27000381, 0x008d0400, 0x00000000 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0800 },
- { 0x00800001, 0x28000381, 0x008d0400, 0x00000000 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0840 },
- { 0x00800001, 0x28400381, 0x008d0400, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00cf0700, 0x00000000 },
- { 0x00800001, 0x23000229, 0x00cf0800, 0x00000000 },
- { 0x00800001, 0x24000229, 0x00cf0840, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x02800031, 0x27001cc9, 0x00000020, 0x0a8a0101 },
- { 0x02800031, 0x28001cc9, 0x00000020, 0x0a8a0202 },
- { 0x00800040, 0x208077be, 0x008d0580, 0x00000038 },
- { 0x00800040, 0x258077bd, 0x008d0580, 0x00000038 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0700 },
- { 0x00800001, 0x27000381, 0x008d0400, 0x00000000 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0800 },
- { 0x00800001, 0x28000381, 0x008d0400, 0x00000000 },
- { 0x00800059, 0x240077bc, 0x00000570, 0x008d0840 },
- { 0x00800001, 0x28400381, 0x008d0400, 0x00000000 },
- { 0x00800001, 0x22200229, 0x00cf0700, 0x00000000 },
- { 0x00800001, 0x23200229, 0x00cf0800, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00cf0840, 0x00000000 },
- { 0x00600001, 0x22400129, 0x00ae0240, 0x00000000 },
- { 0x00600001, 0x23400129, 0x00ae0340, 0x00000000 },
- { 0x00600001, 0x22500129, 0x00ae0280, 0x00000000 },
- { 0x00600001, 0x23500129, 0x00ae0380, 0x00000000 },
- { 0x00600001, 0x22600129, 0x00ae02c0, 0x00000000 },
- { 0x00600001, 0x23600129, 0x00ae03c0, 0x00000000 },
- { 0x00600001, 0x22700129, 0x00ae0300, 0x00000000 },
- { 0x00600001, 0x23700129, 0x00ae0400, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02498007 },
- { 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x28000cc1, 0x00000020, 0x02298008 },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
- { 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
- { 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
- { 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
- { 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
- { 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
- { 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
- { 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
- { 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
- { 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
- { 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
- { 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x0a094007 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
- { 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
- { 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
- { 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x06094008 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00000041, 0x24407fbd, 0x000000bc, 0x41800000 },
- { 0x00000040, 0x20a477bd, 0x00000440, 0x000000a4 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xfffffe5e },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000001, 0x20a403bd, 0x00000094, 0x00000000 },
- { 0x00000041, 0x24407fbd, 0x00000038, 0x41000000 },
- { 0x00000040, 0x20a877bd, 0x00000440, 0x000000a8 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffe52 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen5_6/pa_load_save_nv12.asm b/src/shaders/post_processing/gen5_6/pa_load_save_nv12.asm
deleted file mode 100755
index bd68a92..0000000
--- a/src/shaders/post_processing/gen5_6/pa_load_save_nv12.asm
+++ /dev/null
@@ -1,18 +0,0 @@
-// Module name: PA_LOAD_SAVE_NV12
-.kernel PA_LOAD_SAVE_NV12
-.code
-
-#include "SetupVPKernel.asm"
-#include "Multiple_Loop_Head.asm"
-#include "PA_Load_8x8.asm"
-#include "PL8x8_PL8x4.asm"
-#include "PL8x4_Save_NV12.asm"
-#include "Multiple_Loop.asm"
-
-END_THREAD // End of Thread
-
-.end_code
-
-.end_kernel
-
-// end of nv12_load_save_pl1.asm
diff --git a/src/shaders/post_processing/gen5_6/pa_load_save_nv12.g4b.gen5 b/src/shaders/post_processing/gen5_6/pa_load_save_nv12.g4b.gen5
deleted file mode 100644
index 14d883e..0000000
--- a/src/shaders/post_processing/gen5_6/pa_load_save_nv12.g4b.gen5
+++ /dev/null
@@ -1,124 +0,0 @@
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000009, 0x21003da5, 0x00000100, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007001f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0288a001 },
- { 0x00400040, 0x22083e28, 0x00690024, 0x07000700 },
- { 0x00800001, 0x21400229, 0x00d29000, 0x00000000 },
- { 0x00600001, 0x22400229, 0x00cf9400, 0x00000000 },
- { 0x00600001, 0x23400229, 0x00cf9800, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00d29020, 0x00000000 },
- { 0x00600001, 0x22500229, 0x00cf9420, 0x00000000 },
- { 0x00600001, 0x23500229, 0x00cf9820, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00d29040, 0x00000000 },
- { 0x00600001, 0x22600229, 0x00cf9440, 0x00000000 },
- { 0x00600001, 0x23600229, 0x00cf9840, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00d29060, 0x00000000 },
- { 0x00600001, 0x22700229, 0x00cf9460, 0x00000000 },
- { 0x00600001, 0x23700229, 0x00cf9860, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00d29080, 0x00000000 },
- { 0x00600001, 0x22800229, 0x00cf9480, 0x00000000 },
- { 0x00600001, 0x23800229, 0x00cf9880, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00d290a0, 0x00000000 },
- { 0x00600001, 0x22900229, 0x00cf94a0, 0x00000000 },
- { 0x00600001, 0x23900229, 0x00cf98a0, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00d290c0, 0x00000000 },
- { 0x00600001, 0x22a00229, 0x00cf94c0, 0x00000000 },
- { 0x00600001, 0x23a00229, 0x00cf98c0, 0x00000000 },
- { 0x00800001, 0x22200229, 0x00d290e0, 0x00000000 },
- { 0x00600001, 0x22b00229, 0x00cf94e0, 0x00000000 },
- { 0x00600001, 0x23b00229, 0x00cf98e0, 0x00000000 },
- { 0x00600001, 0x42500231, 0x00ae0260, 0x00000000 },
- { 0x00800001, 0x42600231, 0x00ce0280, 0x00000000 },
- { 0x00600001, 0x43500231, 0x00ae0360, 0x00000000 },
- { 0x00800001, 0x43600231, 0x00ce0380, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0248a007 },
- { 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x28000c01, 0x408d0000, 0x0228a008 },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
- { 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
- { 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
- { 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
- { 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
- { 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
- { 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
- { 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
- { 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
- { 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
- { 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
- { 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x0a082007 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
- { 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
- { 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
- { 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x06082008 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff24 },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff1e },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
diff --git a/src/shaders/post_processing/gen5_6/pa_load_save_nv12.g6b b/src/shaders/post_processing/gen5_6/pa_load_save_nv12.g6b
deleted file mode 100644
index eba4ef5..0000000
--- a/src/shaders/post_processing/gen5_6/pa_load_save_nv12.g6b
+++ /dev/null
@@ -1,197 +0,0 @@
- { 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000009, 0x21003da5, 0x00000100, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007001f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02898001 },
- { 0x00400040, 0x22083e28, 0x00690024, 0x07000700 },
- { 0x00800001, 0x21400229, 0x00d29000, 0x00000000 },
- { 0x00600001, 0x22400229, 0x00cf9400, 0x00000000 },
- { 0x00600001, 0x23400229, 0x00cf9800, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00d29020, 0x00000000 },
- { 0x00600001, 0x22500229, 0x00cf9420, 0x00000000 },
- { 0x00600001, 0x23500229, 0x00cf9820, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00d29040, 0x00000000 },
- { 0x00600001, 0x22600229, 0x00cf9440, 0x00000000 },
- { 0x00600001, 0x23600229, 0x00cf9840, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00d29060, 0x00000000 },
- { 0x00600001, 0x22700229, 0x00cf9460, 0x00000000 },
- { 0x00600001, 0x23700229, 0x00cf9860, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00d29080, 0x00000000 },
- { 0x00600001, 0x22800229, 0x00cf9480, 0x00000000 },
- { 0x00600001, 0x23800229, 0x00cf9880, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00d290a0, 0x00000000 },
- { 0x00600001, 0x22900229, 0x00cf94a0, 0x00000000 },
- { 0x00600001, 0x23900229, 0x00cf98a0, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00d290c0, 0x00000000 },
- { 0x00600001, 0x22a00229, 0x00cf94c0, 0x00000000 },
- { 0x00600001, 0x23a00229, 0x00cf98c0, 0x00000000 },
- { 0x00800001, 0x22200229, 0x00d290e0, 0x00000000 },
- { 0x00600001, 0x22b00229, 0x00cf94e0, 0x00000000 },
- { 0x00600001, 0x23b00229, 0x00cf98e0, 0x00000000 },
- { 0x00600001, 0x42500231, 0x00ae0260, 0x00000000 },
- { 0x00800001, 0x42600231, 0x00ce0280, 0x00000000 },
- { 0x00600001, 0x43500231, 0x00ae0360, 0x00000000 },
- { 0x00800001, 0x43600231, 0x00ce0380, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02498007 },
- { 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x28000cc1, 0x00000020, 0x02298008 },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
- { 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
- { 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
- { 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
- { 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
- { 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
- { 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
- { 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
- { 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
- { 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
- { 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
- { 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x0a094007 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
- { 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
- { 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
- { 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x06094008 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff24 },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff1e },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen5_6/pa_load_save_pa.asm b/src/shaders/post_processing/gen5_6/pa_load_save_pa.asm
deleted file mode 100644
index 72c2a8a..0000000
--- a/src/shaders/post_processing/gen5_6/pa_load_save_pa.asm
+++ /dev/null
@@ -1,17 +0,0 @@
-// Module name: PA_LOAD_SAVE_PA
-.kernel PA_LOAD_SAVE_PA
-.code
-
-#include "SetupVPKernel.asm"
-#include "Multiple_Loop_Head.asm"
-#include "PA_Load_8x8.asm"
-#include "PL8x8_Save_PA.asm"
-#include "Multiple_Loop.asm"
-
-END_THREAD // End of Thread
-
-.end_code
-
-.end_kernel
-
-// end of pa_load_save_pa.asm
diff --git a/src/shaders/post_processing/gen5_6/pa_load_save_pa.g4b.gen5 b/src/shaders/post_processing/gen5_6/pa_load_save_pa.g4b.gen5
deleted file mode 100644
index a75c75a..0000000
--- a/src/shaders/post_processing/gen5_6/pa_load_save_pa.g4b.gen5
+++ /dev/null
@@ -1,115 +0,0 @@
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000009, 0x21003da5, 0x00000100, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007001f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0288a001 },
- { 0x00400040, 0x22083e28, 0x00690024, 0x07000700 },
- { 0x00800001, 0x21400229, 0x00d29000, 0x00000000 },
- { 0x00600001, 0x22400229, 0x00cf9400, 0x00000000 },
- { 0x00600001, 0x23400229, 0x00cf9800, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00d29020, 0x00000000 },
- { 0x00600001, 0x22500229, 0x00cf9420, 0x00000000 },
- { 0x00600001, 0x23500229, 0x00cf9820, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00d29040, 0x00000000 },
- { 0x00600001, 0x22600229, 0x00cf9440, 0x00000000 },
- { 0x00600001, 0x23600229, 0x00cf9840, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00d29060, 0x00000000 },
- { 0x00600001, 0x22700229, 0x00cf9460, 0x00000000 },
- { 0x00600001, 0x23700229, 0x00cf9860, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00d29080, 0x00000000 },
- { 0x00600001, 0x22800229, 0x00cf9480, 0x00000000 },
- { 0x00600001, 0x23800229, 0x00cf9880, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00d290a0, 0x00000000 },
- { 0x00600001, 0x22900229, 0x00cf94a0, 0x00000000 },
- { 0x00600001, 0x23900229, 0x00cf98a0, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00d290c0, 0x00000000 },
- { 0x00600001, 0x22a00229, 0x00cf94c0, 0x00000000 },
- { 0x00600001, 0x23a00229, 0x00cf98c0, 0x00000000 },
- { 0x00800001, 0x22200229, 0x00d290e0, 0x00000000 },
- { 0x00600001, 0x22b00229, 0x00cf94e0, 0x00000000 },
- { 0x00600001, 0x23b00229, 0x00cf98e0, 0x00000000 },
- { 0x00400040, 0x22083e28, 0x00690028, 0x07000700 },
- { 0x00800001, 0xd0000231, 0x00d20140, 0x00000000 },
- { 0x00800001, 0xd0200231, 0x00d20160, 0x00000000 },
- { 0x00800001, 0xd0400231, 0x00d20180, 0x00000000 },
- { 0x00800001, 0xd0600231, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0xd0800231, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0xd0a00231, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0xd0c00231, 0x00d20200, 0x00000000 },
- { 0x00800001, 0xd0e00231, 0x00d20220, 0x00000000 },
- { 0x00600001, 0xf4000231, 0x00ae0240, 0x00000000 },
- { 0x00600001, 0xf8000231, 0x00ae0340, 0x00000000 },
- { 0x00600001, 0xf4200231, 0x00ae0250, 0x00000000 },
- { 0x00600001, 0xf8200231, 0x00ae0350, 0x00000000 },
- { 0x00600001, 0xf4400231, 0x00ae0260, 0x00000000 },
- { 0x00600001, 0xf8400231, 0x00ae0360, 0x00000000 },
- { 0x00600001, 0xf4600231, 0x00ae0270, 0x00000000 },
- { 0x00600001, 0xf8600231, 0x00ae0370, 0x00000000 },
- { 0x00600001, 0xf4800231, 0x00ae0280, 0x00000000 },
- { 0x00600001, 0xf8800231, 0x00ae0380, 0x00000000 },
- { 0x00600001, 0xf4a00231, 0x00ae0290, 0x00000000 },
- { 0x00600001, 0xf8a00231, 0x00ae0390, 0x00000000 },
- { 0x00600001, 0xf4c00231, 0x00ae02a0, 0x00000000 },
- { 0x00600001, 0xf8c00231, 0x00ae03a0, 0x00000000 },
- { 0x00600001, 0xf4e00231, 0x00ae02b0, 0x00000000 },
- { 0x00600001, 0xf8e00231, 0x00ae03b0, 0x00000000 },
- { 0x00000409, 0x21003da5, 0x000000a0, 0x00010001 },
- { 0x00000c01, 0x210401a5, 0x000000a2, 0x00000000 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0007001f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000002a },
- { 0x01600031, 0x21400c01, 0x408d0000, 0x0288a007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x27000129, 0x02b10140, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x27200129, 0x02b10160, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x27400129, 0x02b10180, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x27600129, 0x02b101a0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x27800129, 0x02b101c0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x27a00129, 0x02b101e0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x27c00129, 0x02b10200, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x27e00129, 0x02b10220, 0x00000000 },
- { 0x00600001, 0x20400022, 0x008d0700, 0x00000000 },
- { 0x00600001, 0x20600022, 0x008d0720, 0x00000000 },
- { 0x00600001, 0x20800022, 0x008d0740, 0x00000000 },
- { 0x00600001, 0x20a00022, 0x008d0760, 0x00000000 },
- { 0x00600001, 0x20c00022, 0x008d0780, 0x00000000 },
- { 0x00600001, 0x20e00022, 0x008d07a0, 0x00000000 },
- { 0x00600001, 0x21000022, 0x008d07c0, 0x00000000 },
- { 0x00600001, 0x21200022, 0x008d07e0, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x12082007 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff36 },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff30 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
diff --git a/src/shaders/post_processing/gen5_6/pa_load_save_pa.g6b b/src/shaders/post_processing/gen5_6/pa_load_save_pa.g6b
deleted file mode 100644
index 5d9fe48..0000000
--- a/src/shaders/post_processing/gen5_6/pa_load_save_pa.g6b
+++ /dev/null
@@ -1,188 +0,0 @@
- { 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000009, 0x21003da5, 0x00000100, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007001f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02898001 },
- { 0x00400040, 0x22083e28, 0x00690024, 0x07000700 },
- { 0x00800001, 0x21400229, 0x00d29000, 0x00000000 },
- { 0x00600001, 0x22400229, 0x00cf9400, 0x00000000 },
- { 0x00600001, 0x23400229, 0x00cf9800, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00d29020, 0x00000000 },
- { 0x00600001, 0x22500229, 0x00cf9420, 0x00000000 },
- { 0x00600001, 0x23500229, 0x00cf9820, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00d29040, 0x00000000 },
- { 0x00600001, 0x22600229, 0x00cf9440, 0x00000000 },
- { 0x00600001, 0x23600229, 0x00cf9840, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00d29060, 0x00000000 },
- { 0x00600001, 0x22700229, 0x00cf9460, 0x00000000 },
- { 0x00600001, 0x23700229, 0x00cf9860, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00d29080, 0x00000000 },
- { 0x00600001, 0x22800229, 0x00cf9480, 0x00000000 },
- { 0x00600001, 0x23800229, 0x00cf9880, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00d290a0, 0x00000000 },
- { 0x00600001, 0x22900229, 0x00cf94a0, 0x00000000 },
- { 0x00600001, 0x23900229, 0x00cf98a0, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00d290c0, 0x00000000 },
- { 0x00600001, 0x22a00229, 0x00cf94c0, 0x00000000 },
- { 0x00600001, 0x23a00229, 0x00cf98c0, 0x00000000 },
- { 0x00800001, 0x22200229, 0x00d290e0, 0x00000000 },
- { 0x00600001, 0x22b00229, 0x00cf94e0, 0x00000000 },
- { 0x00600001, 0x23b00229, 0x00cf98e0, 0x00000000 },
- { 0x00400040, 0x22083e28, 0x00690028, 0x07000700 },
- { 0x00800001, 0xd0000231, 0x00d20140, 0x00000000 },
- { 0x00800001, 0xd0200231, 0x00d20160, 0x00000000 },
- { 0x00800001, 0xd0400231, 0x00d20180, 0x00000000 },
- { 0x00800001, 0xd0600231, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0xd0800231, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0xd0a00231, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0xd0c00231, 0x00d20200, 0x00000000 },
- { 0x00800001, 0xd0e00231, 0x00d20220, 0x00000000 },
- { 0x00600001, 0xf4000231, 0x00ae0240, 0x00000000 },
- { 0x00600001, 0xf8000231, 0x00ae0340, 0x00000000 },
- { 0x00600001, 0xf4200231, 0x00ae0250, 0x00000000 },
- { 0x00600001, 0xf8200231, 0x00ae0350, 0x00000000 },
- { 0x00600001, 0xf4400231, 0x00ae0260, 0x00000000 },
- { 0x00600001, 0xf8400231, 0x00ae0360, 0x00000000 },
- { 0x00600001, 0xf4600231, 0x00ae0270, 0x00000000 },
- { 0x00600001, 0xf8600231, 0x00ae0370, 0x00000000 },
- { 0x00600001, 0xf4800231, 0x00ae0280, 0x00000000 },
- { 0x00600001, 0xf8800231, 0x00ae0380, 0x00000000 },
- { 0x00600001, 0xf4a00231, 0x00ae0290, 0x00000000 },
- { 0x00600001, 0xf8a00231, 0x00ae0390, 0x00000000 },
- { 0x00600001, 0xf4c00231, 0x00ae02a0, 0x00000000 },
- { 0x00600001, 0xf8c00231, 0x00ae03a0, 0x00000000 },
- { 0x00600001, 0xf4e00231, 0x00ae02b0, 0x00000000 },
- { 0x00600001, 0xf8e00231, 0x00ae03b0, 0x00000000 },
- { 0x00000409, 0x21003da5, 0x000000a0, 0x00010001 },
- { 0x00000c01, 0x210401a5, 0x000000a2, 0x00000000 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0007001f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000002a },
- { 0x04600031, 0x21400cc1, 0x00000020, 0x02898007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x27000129, 0x02b10140, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x27200129, 0x02b10160, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x27400129, 0x02b10180, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x27600129, 0x02b101a0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x27800129, 0x02b101c0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x27a00129, 0x02b101e0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x27c00129, 0x02b10200, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x27e00129, 0x02b10220, 0x00000000 },
- { 0x00600001, 0x20400022, 0x008d0700, 0x00000000 },
- { 0x00600001, 0x20600022, 0x008d0720, 0x00000000 },
- { 0x00600001, 0x20800022, 0x008d0740, 0x00000000 },
- { 0x00600001, 0x20a00022, 0x008d0760, 0x00000000 },
- { 0x00600001, 0x20c00022, 0x008d0780, 0x00000000 },
- { 0x00600001, 0x20e00022, 0x008d07a0, 0x00000000 },
- { 0x00600001, 0x21000022, 0x008d07c0, 0x00000000 },
- { 0x00600001, 0x21200022, 0x008d07e0, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x12094007 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff36 },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff30 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen5_6/pa_load_save_pl3.asm b/src/shaders/post_processing/gen5_6/pa_load_save_pl3.asm
deleted file mode 100755
index 9a79ac1..0000000
--- a/src/shaders/post_processing/gen5_6/pa_load_save_pl3.asm
+++ /dev/null
@@ -1,18 +0,0 @@
-// Module name: PA_LOAD_SAVE_PL3
-.kernel PA_LOAD_SAVE_PL3
-.code
-
-#include "SetupVPKernel.asm"
-#include "Multiple_Loop_Head.asm"
-#include "PA_Load_8x8.asm"
-#include "PL8x8_PL8x4.asm"
-#include "PL8x4_Save_IMC3.asm"
-#include "Multiple_Loop.asm"
-
-END_THREAD // End of Thread
-
-.end_code
-
-.end_kernel
-
-// end of pa_load_save_pl3.asm
diff --git a/src/shaders/post_processing/gen5_6/pa_load_save_pl3.g4b.gen5 b/src/shaders/post_processing/gen5_6/pa_load_save_pl3.g4b.gen5
deleted file mode 100755
index 6f79a69..0000000
--- a/src/shaders/post_processing/gen5_6/pa_load_save_pl3.g4b.gen5
+++ /dev/null
@@ -1,127 +0,0 @@
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000009, 0x21003da5, 0x00000100, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007001f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0288a001 },
- { 0x00400040, 0x22083e28, 0x00690024, 0x07000700 },
- { 0x00800001, 0x21400229, 0x00d29000, 0x00000000 },
- { 0x00600001, 0x22400229, 0x00cf9400, 0x00000000 },
- { 0x00600001, 0x23400229, 0x00cf9800, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00d29020, 0x00000000 },
- { 0x00600001, 0x22500229, 0x00cf9420, 0x00000000 },
- { 0x00600001, 0x23500229, 0x00cf9820, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00d29040, 0x00000000 },
- { 0x00600001, 0x22600229, 0x00cf9440, 0x00000000 },
- { 0x00600001, 0x23600229, 0x00cf9840, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00d29060, 0x00000000 },
- { 0x00600001, 0x22700229, 0x00cf9460, 0x00000000 },
- { 0x00600001, 0x23700229, 0x00cf9860, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00d29080, 0x00000000 },
- { 0x00600001, 0x22800229, 0x00cf9480, 0x00000000 },
- { 0x00600001, 0x23800229, 0x00cf9880, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00d290a0, 0x00000000 },
- { 0x00600001, 0x22900229, 0x00cf94a0, 0x00000000 },
- { 0x00600001, 0x23900229, 0x00cf98a0, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00d290c0, 0x00000000 },
- { 0x00600001, 0x22a00229, 0x00cf94c0, 0x00000000 },
- { 0x00600001, 0x23a00229, 0x00cf98c0, 0x00000000 },
- { 0x00800001, 0x22200229, 0x00d290e0, 0x00000000 },
- { 0x00600001, 0x22b00229, 0x00cf94e0, 0x00000000 },
- { 0x00600001, 0x23b00229, 0x00cf98e0, 0x00000000 },
- { 0x00600001, 0x42500231, 0x00ae0260, 0x00000000 },
- { 0x00800001, 0x42600231, 0x00ce0280, 0x00000000 },
- { 0x00600001, 0x43500231, 0x00ae0360, 0x00000000 },
- { 0x00800001, 0x43600231, 0x00ce0380, 0x00000000 },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000005a },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0248a007 },
- { 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x28000c01, 0x408d0000, 0x0218a008 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x29000c01, 0x408d0000, 0x0218a009 },
- { 0x00800001, 0x28600229, 0x008d0830, 0x00000000 },
- { 0x00800001, 0x29600229, 0x008d0930, 0x00000000 },
- { 0x00800001, 0x28400229, 0x008d0820, 0x00000000 },
- { 0x00800001, 0x29400229, 0x008d0920, 0x00000000 },
- { 0x00800001, 0x28200229, 0x008d0810, 0x00000000 },
- { 0x00800001, 0x29200229, 0x008d0910, 0x00000000 },
- { 0x00800001, 0x28000229, 0x008d0800, 0x00000000 },
- { 0x00800001, 0x29000229, 0x008d0900, 0x00000000 },
- { 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
- { 0x00910001, 0x22400231, 0x028d0800, 0x00000000 },
- { 0x00910001, 0x23400231, 0x028d0900, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
- { 0x00910001, 0x22500231, 0x028d0810, 0x00000000 },
- { 0x00910001, 0x23500231, 0x028d0910, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
- { 0x00910001, 0x22600231, 0x028d0820, 0x00000000 },
- { 0x00910001, 0x23600231, 0x028d0920, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
- { 0x00910001, 0x22700231, 0x028d0830, 0x00000000 },
- { 0x00910001, 0x23700231, 0x028d0930, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x0a082007 },
- { 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20240, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20260, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x04082008 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20340, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20360, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x04082009 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff1e },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff18 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
diff --git a/src/shaders/post_processing/gen5_6/pa_load_save_pl3.g6b b/src/shaders/post_processing/gen5_6/pa_load_save_pl3.g6b
deleted file mode 100755
index 7bcc5ca..0000000
--- a/src/shaders/post_processing/gen5_6/pa_load_save_pl3.g6b
+++ /dev/null
@@ -1,200 +0,0 @@
- { 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000009, 0x21003da5, 0x00000100, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007001f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02898001 },
- { 0x00400040, 0x22083e28, 0x00690024, 0x07000700 },
- { 0x00800001, 0x21400229, 0x00d29000, 0x00000000 },
- { 0x00600001, 0x22400229, 0x00cf9400, 0x00000000 },
- { 0x00600001, 0x23400229, 0x00cf9800, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00d29020, 0x00000000 },
- { 0x00600001, 0x22500229, 0x00cf9420, 0x00000000 },
- { 0x00600001, 0x23500229, 0x00cf9820, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00d29040, 0x00000000 },
- { 0x00600001, 0x22600229, 0x00cf9440, 0x00000000 },
- { 0x00600001, 0x23600229, 0x00cf9840, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00d29060, 0x00000000 },
- { 0x00600001, 0x22700229, 0x00cf9460, 0x00000000 },
- { 0x00600001, 0x23700229, 0x00cf9860, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00d29080, 0x00000000 },
- { 0x00600001, 0x22800229, 0x00cf9480, 0x00000000 },
- { 0x00600001, 0x23800229, 0x00cf9880, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00d290a0, 0x00000000 },
- { 0x00600001, 0x22900229, 0x00cf94a0, 0x00000000 },
- { 0x00600001, 0x23900229, 0x00cf98a0, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00d290c0, 0x00000000 },
- { 0x00600001, 0x22a00229, 0x00cf94c0, 0x00000000 },
- { 0x00600001, 0x23a00229, 0x00cf98c0, 0x00000000 },
- { 0x00800001, 0x22200229, 0x00d290e0, 0x00000000 },
- { 0x00600001, 0x22b00229, 0x00cf94e0, 0x00000000 },
- { 0x00600001, 0x23b00229, 0x00cf98e0, 0x00000000 },
- { 0x00600001, 0x42500231, 0x00ae0260, 0x00000000 },
- { 0x00800001, 0x42600231, 0x00ce0280, 0x00000000 },
- { 0x00600001, 0x43500231, 0x00ae0360, 0x00000000 },
- { 0x00800001, 0x43600231, 0x00ce0380, 0x00000000 },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000005a },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02498007 },
- { 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x28000cc1, 0x00000020, 0x02198008 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x29000cc1, 0x00000020, 0x02198009 },
- { 0x00800001, 0x28600229, 0x008d0830, 0x00000000 },
- { 0x00800001, 0x29600229, 0x008d0930, 0x00000000 },
- { 0x00800001, 0x28400229, 0x008d0820, 0x00000000 },
- { 0x00800001, 0x29400229, 0x008d0920, 0x00000000 },
- { 0x00800001, 0x28200229, 0x008d0810, 0x00000000 },
- { 0x00800001, 0x29200229, 0x008d0910, 0x00000000 },
- { 0x00800001, 0x28000229, 0x008d0800, 0x00000000 },
- { 0x00800001, 0x29000229, 0x008d0900, 0x00000000 },
- { 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
- { 0x00910001, 0x22400231, 0x028d0800, 0x00000000 },
- { 0x00910001, 0x23400231, 0x028d0900, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
- { 0x00910001, 0x22500231, 0x028d0810, 0x00000000 },
- { 0x00910001, 0x23500231, 0x028d0910, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
- { 0x00910001, 0x22600231, 0x028d0820, 0x00000000 },
- { 0x00910001, 0x23600231, 0x028d0920, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
- { 0x00910001, 0x22700231, 0x028d0830, 0x00000000 },
- { 0x00910001, 0x23700231, 0x028d0930, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x0a094007 },
- { 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20240, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20260, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x04094008 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20340, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20360, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x04094009 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff1e },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff18 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen5_6/pl3_load_save_nv12.asm b/src/shaders/post_processing/gen5_6/pl3_load_save_nv12.asm
deleted file mode 100644
index cd1b5fe..0000000
--- a/src/shaders/post_processing/gen5_6/pl3_load_save_nv12.asm
+++ /dev/null
@@ -1,17 +0,0 @@
-// Module name: PL3_LOAD_SAVE_NV12
-.kernel PL3_LOAD_SAVE_NV12
-.code
-
-#include "SetupVPKernel.asm"
-#include "Multiple_Loop_Head.asm"
-#include "IMC3_Load_8x4.asm"
-#include "PL8x4_Save_NV12.asm"
-#include "Multiple_Loop.asm"
-
-END_THREAD // End of Thread
-
-.end_code
-
-.end_kernel
-
-// end of pl3_load_save_nv12.asm
diff --git a/src/shaders/post_processing/gen5_6/pl3_load_save_nv12.g4b.gen5 b/src/shaders/post_processing/gen5_6/pl3_load_save_nv12.g4b.gen5
deleted file mode 100644
index 182be7c..0000000
--- a/src/shaders/post_processing/gen5_6/pl3_load_save_nv12.g4b.gen5
+++ /dev/null
@@ -1,112 +0,0 @@
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0248a001 },
- { 0x0020000c, 0x21003ca5, 0x00450100, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
- { 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x02600031, 0x28000c01, 0x408d0000, 0x0218a002 },
- { 0x00600001, 0x20600022, 0x008d0100, 0x00000000 },
- { 0x02600031, 0x29000c01, 0x408d0000, 0x0218a003 },
- { 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
- { 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
- { 0x00800001, 0x22600229, 0x008d0810, 0x00000000 },
- { 0x00800001, 0x23600229, 0x008d0910, 0x00000000 },
- { 0x00800001, 0x22400229, 0x008d0800, 0x00000000 },
- { 0x00800001, 0x23400229, 0x008d0900, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0248a007 },
- { 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x28000c01, 0x408d0000, 0x0228a008 },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
- { 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
- { 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
- { 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
- { 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
- { 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
- { 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
- { 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
- { 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
- { 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
- { 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
- { 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x0a082007 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
- { 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
- { 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
- { 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x06082008 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff3c },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff36 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
diff --git a/src/shaders/post_processing/gen5_6/pl3_load_save_nv12.g6b b/src/shaders/post_processing/gen5_6/pl3_load_save_nv12.g6b
deleted file mode 100644
index a1ab71a..0000000
--- a/src/shaders/post_processing/gen5_6/pl3_load_save_nv12.g6b
+++ /dev/null
@@ -1,185 +0,0 @@
- { 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02498001 },
- { 0x0020000c, 0x21003ca5, 0x00450100, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
- { 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x28000cc1, 0x00000040, 0x02198002 },
- { 0x00600001, 0x20600022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x29000cc1, 0x00000040, 0x02198003 },
- { 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
- { 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
- { 0x00800001, 0x22600229, 0x008d0810, 0x00000000 },
- { 0x00800001, 0x23600229, 0x008d0910, 0x00000000 },
- { 0x00800001, 0x22400229, 0x008d0800, 0x00000000 },
- { 0x00800001, 0x23400229, 0x008d0900, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02498007 },
- { 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x28000cc1, 0x00000020, 0x02298008 },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
- { 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
- { 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
- { 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
- { 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
- { 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
- { 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
- { 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
- { 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
- { 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
- { 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
- { 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x0a094007 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
- { 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
- { 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
- { 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x06094008 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff3c },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff36 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen5_6/pl3_load_save_pa.asm b/src/shaders/post_processing/gen5_6/pl3_load_save_pa.asm
deleted file mode 100755
index 11efe0a..0000000
--- a/src/shaders/post_processing/gen5_6/pl3_load_save_pa.asm
+++ /dev/null
@@ -1,18 +0,0 @@
-// Module name: PL3_LOAD_SAVE_pa
-.kernel PL3_LOAD_SAVE_PA // what's usage of it? just a name?
-.code
-
-#include "SetupVPKernel.asm"
-#include "Multiple_Loop_Head.asm"
-#include "IMC3_Load_8x5.asm"
-#include "PL8x5_PL8x8.asm"
-#include "PL8x8_Save_PA.asm"
-#include "Multiple_Loop.asm"
-
-END_THREAD // End of Thread
-
-.end_code
-
-.end_kernel
-
-// end of pl3_load_save_pa.asm
diff --git a/src/shaders/post_processing/gen5_6/pl3_load_save_pa.g4b.gen5 b/src/shaders/post_processing/gen5_6/pl3_load_save_pa.g4b.gen5
deleted file mode 100644
index dbac5a7..0000000
--- a/src/shaders/post_processing/gen5_6/pl3_load_save_pa.g4b.gen5
+++ /dev/null
@@ -1,123 +0,0 @@
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0248a001 },
- { 0x0020000c, 0x21003ca5, 0x00450100, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00040007 },
- { 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x02600031, 0x28000c01, 0x408d0000, 0x0228a002 },
- { 0x00600001, 0x20600022, 0x008d0100, 0x00000000 },
- { 0x02600031, 0x29000c01, 0x408d0000, 0x0228a003 },
- { 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
- { 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
- { 0x00800001, 0x22800229, 0x008d0820, 0x00000000 },
- { 0x00800001, 0x23800229, 0x008d0920, 0x00000000 },
- { 0x00800001, 0x22600229, 0x008d0810, 0x00000000 },
- { 0x00800001, 0x23600229, 0x008d0910, 0x00000000 },
- { 0x00800001, 0x22400229, 0x008d0800, 0x00000000 },
- { 0x00800001, 0x23400229, 0x008d0900, 0x00000000 },
- { 0x80600042, 0x22b02529, 0x008d0270, 0x008d0280 },
- { 0x80600042, 0x23b02529, 0x008d0370, 0x008d0380 },
- { 0x00600001, 0x22a00129, 0x008d0270, 0x00000000 },
- { 0x80600042, 0x22902529, 0x008d0260, 0x008d0270 },
- { 0x00600001, 0x23a00129, 0x008d0370, 0x00000000 },
- { 0x80600042, 0x23902529, 0x008d0360, 0x008d0370 },
- { 0x00600001, 0x22800129, 0x008d0260, 0x00000000 },
- { 0x80600042, 0x22702529, 0x008d0250, 0x008d0260 },
- { 0x00600001, 0x23800129, 0x008d0360, 0x00000000 },
- { 0x80600042, 0x23702529, 0x008d0350, 0x008d0360 },
- { 0x00600001, 0x22600129, 0x008d0250, 0x00000000 },
- { 0x80600042, 0x22502529, 0x008d0240, 0x008d0250 },
- { 0x00600001, 0x23600129, 0x008d0350, 0x00000000 },
- { 0x80600042, 0x23502529, 0x008d0340, 0x008d0350 },
- { 0x00400040, 0x22083e28, 0x00690028, 0x07000700 },
- { 0x00800001, 0xd0000231, 0x00d20140, 0x00000000 },
- { 0x00800001, 0xd0200231, 0x00d20160, 0x00000000 },
- { 0x00800001, 0xd0400231, 0x00d20180, 0x00000000 },
- { 0x00800001, 0xd0600231, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0xd0800231, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0xd0a00231, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0xd0c00231, 0x00d20200, 0x00000000 },
- { 0x00800001, 0xd0e00231, 0x00d20220, 0x00000000 },
- { 0x00600001, 0xf4000231, 0x00ae0240, 0x00000000 },
- { 0x00600001, 0xf8000231, 0x00ae0340, 0x00000000 },
- { 0x00600001, 0xf4200231, 0x00ae0250, 0x00000000 },
- { 0x00600001, 0xf8200231, 0x00ae0350, 0x00000000 },
- { 0x00600001, 0xf4400231, 0x00ae0260, 0x00000000 },
- { 0x00600001, 0xf8400231, 0x00ae0360, 0x00000000 },
- { 0x00600001, 0xf4600231, 0x00ae0270, 0x00000000 },
- { 0x00600001, 0xf8600231, 0x00ae0370, 0x00000000 },
- { 0x00600001, 0xf4800231, 0x00ae0280, 0x00000000 },
- { 0x00600001, 0xf8800231, 0x00ae0380, 0x00000000 },
- { 0x00600001, 0xf4a00231, 0x00ae0290, 0x00000000 },
- { 0x00600001, 0xf8a00231, 0x00ae0390, 0x00000000 },
- { 0x00600001, 0xf4c00231, 0x00ae02a0, 0x00000000 },
- { 0x00600001, 0xf8c00231, 0x00ae03a0, 0x00000000 },
- { 0x00600001, 0xf4e00231, 0x00ae02b0, 0x00000000 },
- { 0x00600001, 0xf8e00231, 0x00ae03b0, 0x00000000 },
- { 0x00000409, 0x21003da5, 0x000000a0, 0x00010001 },
- { 0x00000c01, 0x210401a5, 0x000000a2, 0x00000000 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0007001f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000002a },
- { 0x01600031, 0x21400c01, 0x408d0000, 0x0288a007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x27000129, 0x02b10140, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x27200129, 0x02b10160, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x27400129, 0x02b10180, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x27600129, 0x02b101a0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x27800129, 0x02b101c0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x27a00129, 0x02b101e0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x27c00129, 0x02b10200, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x27e00129, 0x02b10220, 0x00000000 },
- { 0x00600001, 0x20400022, 0x008d0700, 0x00000000 },
- { 0x00600001, 0x20600022, 0x008d0720, 0x00000000 },
- { 0x00600001, 0x20800022, 0x008d0740, 0x00000000 },
- { 0x00600001, 0x20a00022, 0x008d0760, 0x00000000 },
- { 0x00600001, 0x20c00022, 0x008d0780, 0x00000000 },
- { 0x00600001, 0x20e00022, 0x008d07a0, 0x00000000 },
- { 0x00600001, 0x21000022, 0x008d07c0, 0x00000000 },
- { 0x00600001, 0x21200022, 0x008d07e0, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x12082007 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff26 },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff20 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
diff --git a/src/shaders/post_processing/gen5_6/pl3_load_save_pa.g6b b/src/shaders/post_processing/gen5_6/pl3_load_save_pa.g6b
deleted file mode 100644
index 3af6f3f..0000000
--- a/src/shaders/post_processing/gen5_6/pl3_load_save_pa.g6b
+++ /dev/null
@@ -1,196 +0,0 @@
- { 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02498001 },
- { 0x0020000c, 0x21003ca5, 0x00450100, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00040007 },
- { 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x28000cc1, 0x00000040, 0x02298002 },
- { 0x00600001, 0x20600022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x29000cc1, 0x00000040, 0x02298003 },
- { 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
- { 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
- { 0x00800001, 0x22800229, 0x008d0820, 0x00000000 },
- { 0x00800001, 0x23800229, 0x008d0920, 0x00000000 },
- { 0x00800001, 0x22600229, 0x008d0810, 0x00000000 },
- { 0x00800001, 0x23600229, 0x008d0910, 0x00000000 },
- { 0x00800001, 0x22400229, 0x008d0800, 0x00000000 },
- { 0x00800001, 0x23400229, 0x008d0900, 0x00000000 },
- { 0x80600042, 0x22b02529, 0x008d0270, 0x008d0280 },
- { 0x80600042, 0x23b02529, 0x008d0370, 0x008d0380 },
- { 0x00600001, 0x22a00129, 0x008d0270, 0x00000000 },
- { 0x80600042, 0x22902529, 0x008d0260, 0x008d0270 },
- { 0x00600001, 0x23a00129, 0x008d0370, 0x00000000 },
- { 0x80600042, 0x23902529, 0x008d0360, 0x008d0370 },
- { 0x00600001, 0x22800129, 0x008d0260, 0x00000000 },
- { 0x80600042, 0x22702529, 0x008d0250, 0x008d0260 },
- { 0x00600001, 0x23800129, 0x008d0360, 0x00000000 },
- { 0x80600042, 0x23702529, 0x008d0350, 0x008d0360 },
- { 0x00600001, 0x22600129, 0x008d0250, 0x00000000 },
- { 0x80600042, 0x22502529, 0x008d0240, 0x008d0250 },
- { 0x00600001, 0x23600129, 0x008d0350, 0x00000000 },
- { 0x80600042, 0x23502529, 0x008d0340, 0x008d0350 },
- { 0x00400040, 0x22083e28, 0x00690028, 0x07000700 },
- { 0x00800001, 0xd0000231, 0x00d20140, 0x00000000 },
- { 0x00800001, 0xd0200231, 0x00d20160, 0x00000000 },
- { 0x00800001, 0xd0400231, 0x00d20180, 0x00000000 },
- { 0x00800001, 0xd0600231, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0xd0800231, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0xd0a00231, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0xd0c00231, 0x00d20200, 0x00000000 },
- { 0x00800001, 0xd0e00231, 0x00d20220, 0x00000000 },
- { 0x00600001, 0xf4000231, 0x00ae0240, 0x00000000 },
- { 0x00600001, 0xf8000231, 0x00ae0340, 0x00000000 },
- { 0x00600001, 0xf4200231, 0x00ae0250, 0x00000000 },
- { 0x00600001, 0xf8200231, 0x00ae0350, 0x00000000 },
- { 0x00600001, 0xf4400231, 0x00ae0260, 0x00000000 },
- { 0x00600001, 0xf8400231, 0x00ae0360, 0x00000000 },
- { 0x00600001, 0xf4600231, 0x00ae0270, 0x00000000 },
- { 0x00600001, 0xf8600231, 0x00ae0370, 0x00000000 },
- { 0x00600001, 0xf4800231, 0x00ae0280, 0x00000000 },
- { 0x00600001, 0xf8800231, 0x00ae0380, 0x00000000 },
- { 0x00600001, 0xf4a00231, 0x00ae0290, 0x00000000 },
- { 0x00600001, 0xf8a00231, 0x00ae0390, 0x00000000 },
- { 0x00600001, 0xf4c00231, 0x00ae02a0, 0x00000000 },
- { 0x00600001, 0xf8c00231, 0x00ae03a0, 0x00000000 },
- { 0x00600001, 0xf4e00231, 0x00ae02b0, 0x00000000 },
- { 0x00600001, 0xf8e00231, 0x00ae03b0, 0x00000000 },
- { 0x00000409, 0x21003da5, 0x000000a0, 0x00010001 },
- { 0x00000c01, 0x210401a5, 0x000000a2, 0x00000000 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0007001f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x0000002a },
- { 0x04600031, 0x21400cc1, 0x00000020, 0x02898007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x27000129, 0x02b10140, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x27200129, 0x02b10160, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x27400129, 0x02b10180, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x27600129, 0x02b101a0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x27800129, 0x02b101c0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x27a00129, 0x02b101e0, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x27c00129, 0x02b10200, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x27e00129, 0x02b10220, 0x00000000 },
- { 0x00600001, 0x20400022, 0x008d0700, 0x00000000 },
- { 0x00600001, 0x20600022, 0x008d0720, 0x00000000 },
- { 0x00600001, 0x20800022, 0x008d0740, 0x00000000 },
- { 0x00600001, 0x20a00022, 0x008d0760, 0x00000000 },
- { 0x00600001, 0x20c00022, 0x008d0780, 0x00000000 },
- { 0x00600001, 0x20e00022, 0x008d07a0, 0x00000000 },
- { 0x00600001, 0x21000022, 0x008d07c0, 0x00000000 },
- { 0x00600001, 0x21200022, 0x008d07e0, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x12094007 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff26 },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff20 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen5_6/pl3_load_save_pl3.asm b/src/shaders/post_processing/gen5_6/pl3_load_save_pl3.asm
deleted file mode 100644
index f2e9406..0000000
--- a/src/shaders/post_processing/gen5_6/pl3_load_save_pl3.asm
+++ /dev/null
@@ -1,17 +0,0 @@
-// Module name: PL3_LOAD_SAVE_pl3
-.kernel PL3_LOAD_SAVE_PL3
-.code
-
-#include "SetupVPKernel.asm"
-#include "Multiple_Loop_Head.asm"
-#include "IMC3_Load_8x4.asm"
-#include "PL8x4_Save_IMC3.asm"
-#include "Multiple_Loop.asm"
-
-END_THREAD // End of Thread
-
-.end_code
-
-.end_kernel
-
-// end of pl3_load_save_pl3.asm
diff --git a/src/shaders/post_processing/gen5_6/pl3_load_save_pl3.g4b.gen5 b/src/shaders/post_processing/gen5_6/pl3_load_save_pl3.g4b.gen5
deleted file mode 100644
index 9a90bcc..0000000
--- a/src/shaders/post_processing/gen5_6/pl3_load_save_pl3.g4b.gen5
+++ /dev/null
@@ -1,111 +0,0 @@
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0248a001 },
- { 0x0020000c, 0x21003ca5, 0x00450100, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
- { 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x02600031, 0x28000c01, 0x408d0000, 0x0218a002 },
- { 0x00600001, 0x20600022, 0x008d0100, 0x00000000 },
- { 0x02600031, 0x29000c01, 0x408d0000, 0x0218a003 },
- { 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
- { 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
- { 0x00800001, 0x22600229, 0x008d0810, 0x00000000 },
- { 0x00800001, 0x23600229, 0x008d0910, 0x00000000 },
- { 0x00800001, 0x22400229, 0x008d0800, 0x00000000 },
- { 0x00800001, 0x23400229, 0x008d0900, 0x00000000 },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000052 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0248a007 },
- { 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x28000c01, 0x408d0000, 0x0218a008 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x29000c01, 0x408d0000, 0x0218a009 },
- { 0x00800001, 0x28200229, 0x008d0810, 0x00000000 },
- { 0x00800001, 0x29200229, 0x008d0910, 0x00000000 },
- { 0x00800001, 0x28000229, 0x008d0800, 0x00000000 },
- { 0x00800001, 0x29000229, 0x008d0900, 0x00000000 },
- { 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
- { 0x00910001, 0x22400231, 0x028d0800, 0x00000000 },
- { 0x00910001, 0x23400231, 0x028d0900, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
- { 0x00910001, 0x22500231, 0x028d0810, 0x00000000 },
- { 0x00910001, 0x23500231, 0x028d0910, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
- { 0x00910001, 0x22600231, 0x028d0820, 0x00000000 },
- { 0x00910001, 0x23600231, 0x028d0920, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
- { 0x00910001, 0x22700231, 0x028d0830, 0x00000000 },
- { 0x00910001, 0x23700231, 0x028d0930, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x0a082007 },
- { 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20240, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20260, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x04082008 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20340, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20360, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x04082009 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff3e },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff38 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
diff --git a/src/shaders/post_processing/gen5_6/pl3_load_save_pl3.g6b b/src/shaders/post_processing/gen5_6/pl3_load_save_pl3.g6b
deleted file mode 100644
index 797fc88..0000000
--- a/src/shaders/post_processing/gen5_6/pl3_load_save_pl3.g6b
+++ /dev/null
@@ -1,184 +0,0 @@
- { 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02498001 },
- { 0x0020000c, 0x21003ca5, 0x00450100, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
- { 0x00600001, 0x20400022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x28000cc1, 0x00000040, 0x02198002 },
- { 0x00600001, 0x20600022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x29000cc1, 0x00000040, 0x02198003 },
- { 0x00800001, 0x22200229, 0x00b10770, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00b10760, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00b10750, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00b10740, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00b10730, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00b10720, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00b10710, 0x00000000 },
- { 0x00800001, 0x21400229, 0x00b10700, 0x00000000 },
- { 0x00800001, 0x22600229, 0x008d0810, 0x00000000 },
- { 0x00800001, 0x23600229, 0x008d0910, 0x00000000 },
- { 0x00800001, 0x22400229, 0x008d0800, 0x00000000 },
- { 0x00800001, 0x23400229, 0x008d0900, 0x00000000 },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000052 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02498007 },
- { 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x28000cc1, 0x00000020, 0x02198008 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x29000cc1, 0x00000020, 0x02198009 },
- { 0x00800001, 0x28200229, 0x008d0810, 0x00000000 },
- { 0x00800001, 0x29200229, 0x008d0910, 0x00000000 },
- { 0x00800001, 0x28000229, 0x008d0800, 0x00000000 },
- { 0x00800001, 0x29000229, 0x008d0900, 0x00000000 },
- { 0x00000001, 0x26000228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x000000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
- { 0x00910001, 0x22400231, 0x028d0800, 0x00000000 },
- { 0x00910001, 0x23400231, 0x028d0900, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
- { 0x00910001, 0x22500231, 0x028d0810, 0x00000000 },
- { 0x00910001, 0x23500231, 0x028d0910, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
- { 0x00910001, 0x22600231, 0x028d0820, 0x00000000 },
- { 0x00910001, 0x23600231, 0x028d0920, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
- { 0x00910001, 0x22700231, 0x028d0830, 0x00000000 },
- { 0x00910001, 0x23700231, 0x028d0930, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x0a094007 },
- { 0x0020000c, 0x21003da5, 0x004500a0, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x00030007 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20240, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20260, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x04094008 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20340, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20360, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x04094009 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xffffff3e },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xffffff38 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen5_6/rgbx_load_save_nv12.asm b/src/shaders/post_processing/gen5_6/rgbx_load_save_nv12.asm
deleted file mode 100755
index 4922cc7..0000000
--- a/src/shaders/post_processing/gen5_6/rgbx_load_save_nv12.asm
+++ /dev/null
@@ -1,26 +0,0 @@
-// Module name: RGBX_LOAD_SAVE_NV12
-.kernel RGBX_LOAD_SAVE_NV12
-.code
-#define FIX_POINT_CONVERSION
-// #define FLOAT_POINT_CONVERSION
-
-#include "SetupVPKernel.asm"
-#include "RGBX_to_YUV_Coef.asm"
-#include "Multiple_Loop_Head.asm"
-#include "RGBX_Load_16x8.asm"
-#ifdef FIX_POINT_CONVERSION
- #include "RGBX_Save_YUV_Fix.asm"
-#else
- #include "RGBX_Save_YUV_Float.asm"
-#endif
-#include "PL16x8_PL8x4.asm"
-#include "PL8x4_Save_NV12.asm"
-#include "Multiple_Loop.asm"
-
-END_THREAD // End of Thread
-
-.end_code
-
-.end_kernel
-
-// end of rgbx_load_save_nv12.asm
diff --git a/src/shaders/post_processing/gen5_6/rgbx_load_save_nv12.g4b.gen5 b/src/shaders/post_processing/gen5_6/rgbx_load_save_nv12.g4b.gen5
deleted file mode 100644
index b57ea4d..0000000
--- a/src/shaders/post_processing/gen5_6/rgbx_load_save_nv12.g4b.gen5
+++ /dev/null
@@ -1,570 +0,0 @@
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x02000005, 0x20000c24, 0x02000024, 0xff000000 },
- { 0x00110001, 0x24400061, 0x02000000, 0x00428119 },
- { 0x00010001, 0x24400061, 0x02000000, 0x00198142 },
- { 0x00110001, 0x24440061, 0x02000000, 0x00dab670 },
- { 0x00010001, 0x24440061, 0x02000000, 0x0070b6da },
- { 0x00110001, 0x24480061, 0x02000000, 0x0070a2ee },
- { 0x00010001, 0x24480061, 0x02000000, 0x00eea270 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000409, 0x21003da5, 0x00000100, 0x00020002 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0007001f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0288a001 },
- { 0x00000040, 0x21003ca5, 0x00000100, 0x00200020 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x28000c01, 0x408d0000, 0x0288a001 },
- { 0x00000001, 0x22000060, 0x00000000, 0x08000700 },
- { 0x00800041, 0x24c04629, 0x00118000, 0x00090440 },
- { 0x00800041, 0x24e04629, 0x00118010, 0x00090440 },
- { 0x00800041, 0x25004629, 0x00118400, 0x00090440 },
- { 0x00800041, 0x25204629, 0x00118410, 0x00090440 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x10801080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x21400229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x00118000, 0x00090444 },
- { 0x00800041, 0x24e0562d, 0x00118010, 0x00090444 },
- { 0x00800041, 0x2500562d, 0x00118400, 0x00090444 },
- { 0x00800041, 0x2520562d, 0x00118410, 0x00090444 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x22400229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x00118000, 0x00090448 },
- { 0x00800041, 0x24e0562d, 0x00118010, 0x00090448 },
- { 0x00800041, 0x2500562d, 0x00118400, 0x00090448 },
- { 0x00800041, 0x2520562d, 0x00118410, 0x00090448 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x23400229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c04629, 0x00118020, 0x00090440 },
- { 0x00800041, 0x24e04629, 0x00118030, 0x00090440 },
- { 0x00800041, 0x25004629, 0x00118420, 0x00090440 },
- { 0x00800041, 0x25204629, 0x00118430, 0x00090440 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x10801080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x00118020, 0x00090444 },
- { 0x00800041, 0x24e0562d, 0x00118030, 0x00090444 },
- { 0x00800041, 0x2500562d, 0x00118420, 0x00090444 },
- { 0x00800041, 0x2520562d, 0x00118430, 0x00090444 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x22600229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x00118020, 0x00090448 },
- { 0x00800041, 0x24e0562d, 0x00118030, 0x00090448 },
- { 0x00800041, 0x2500562d, 0x00118420, 0x00090448 },
- { 0x00800041, 0x2520562d, 0x00118430, 0x00090448 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x23600229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c04629, 0x00118040, 0x00090440 },
- { 0x00800041, 0x24e04629, 0x00118050, 0x00090440 },
- { 0x00800041, 0x25004629, 0x00118440, 0x00090440 },
- { 0x00800041, 0x25204629, 0x00118450, 0x00090440 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x10801080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x00118040, 0x00090444 },
- { 0x00800041, 0x24e0562d, 0x00118050, 0x00090444 },
- { 0x00800041, 0x2500562d, 0x00118440, 0x00090444 },
- { 0x00800041, 0x2520562d, 0x00118450, 0x00090444 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x22800229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x00118040, 0x00090448 },
- { 0x00800041, 0x24e0562d, 0x00118050, 0x00090448 },
- { 0x00800041, 0x2500562d, 0x00118440, 0x00090448 },
- { 0x00800041, 0x2520562d, 0x00118450, 0x00090448 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x23800229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c04629, 0x00118060, 0x00090440 },
- { 0x00800041, 0x24e04629, 0x00118070, 0x00090440 },
- { 0x00800041, 0x25004629, 0x00118460, 0x00090440 },
- { 0x00800041, 0x25204629, 0x00118470, 0x00090440 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x10801080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x00118060, 0x00090444 },
- { 0x00800041, 0x24e0562d, 0x00118070, 0x00090444 },
- { 0x00800041, 0x2500562d, 0x00118460, 0x00090444 },
- { 0x00800041, 0x2520562d, 0x00118470, 0x00090444 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x22a00229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x00118060, 0x00090448 },
- { 0x00800041, 0x24e0562d, 0x00118070, 0x00090448 },
- { 0x00800041, 0x2500562d, 0x00118460, 0x00090448 },
- { 0x00800041, 0x2520562d, 0x00118470, 0x00090448 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x23a00229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c04629, 0x00118080, 0x00090440 },
- { 0x00800041, 0x24e04629, 0x00118090, 0x00090440 },
- { 0x00800041, 0x25004629, 0x00118480, 0x00090440 },
- { 0x00800041, 0x25204629, 0x00118490, 0x00090440 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x10801080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x00118080, 0x00090444 },
- { 0x00800041, 0x24e0562d, 0x00118090, 0x00090444 },
- { 0x00800041, 0x2500562d, 0x00118480, 0x00090444 },
- { 0x00800041, 0x2520562d, 0x00118490, 0x00090444 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x22c00229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x00118080, 0x00090448 },
- { 0x00800041, 0x24e0562d, 0x00118090, 0x00090448 },
- { 0x00800041, 0x2500562d, 0x00118480, 0x00090448 },
- { 0x00800041, 0x2520562d, 0x00118490, 0x00090448 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x23c00229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c04629, 0x001180a0, 0x00090440 },
- { 0x00800041, 0x24e04629, 0x001180b0, 0x00090440 },
- { 0x00800041, 0x25004629, 0x001184a0, 0x00090440 },
- { 0x00800041, 0x25204629, 0x001184b0, 0x00090440 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x10801080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x001180a0, 0x00090444 },
- { 0x00800041, 0x24e0562d, 0x001180b0, 0x00090444 },
- { 0x00800041, 0x2500562d, 0x001184a0, 0x00090444 },
- { 0x00800041, 0x2520562d, 0x001184b0, 0x00090444 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x22e00229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x001180a0, 0x00090448 },
- { 0x00800041, 0x24e0562d, 0x001180b0, 0x00090448 },
- { 0x00800041, 0x2500562d, 0x001184a0, 0x00090448 },
- { 0x00800041, 0x2520562d, 0x001184b0, 0x00090448 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x23e00229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c04629, 0x001180c0, 0x00090440 },
- { 0x00800041, 0x24e04629, 0x001180d0, 0x00090440 },
- { 0x00800041, 0x25004629, 0x001184c0, 0x00090440 },
- { 0x00800041, 0x25204629, 0x001184d0, 0x00090440 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x10801080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x001180c0, 0x00090444 },
- { 0x00800041, 0x24e0562d, 0x001180d0, 0x00090444 },
- { 0x00800041, 0x2500562d, 0x001184c0, 0x00090444 },
- { 0x00800041, 0x2520562d, 0x001184d0, 0x00090444 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x23000229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x001180c0, 0x00090448 },
- { 0x00800041, 0x24e0562d, 0x001180d0, 0x00090448 },
- { 0x00800041, 0x2500562d, 0x001184c0, 0x00090448 },
- { 0x00800041, 0x2520562d, 0x001184d0, 0x00090448 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x24000229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c04629, 0x001180e0, 0x00090440 },
- { 0x00800041, 0x24e04629, 0x001180f0, 0x00090440 },
- { 0x00800041, 0x25004629, 0x001184e0, 0x00090440 },
- { 0x00800041, 0x25204629, 0x001184f0, 0x00090440 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x10801080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x22200229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x001180e0, 0x00090444 },
- { 0x00800041, 0x24e0562d, 0x001180f0, 0x00090444 },
- { 0x00800041, 0x2500562d, 0x001184e0, 0x00090444 },
- { 0x00800041, 0x2520562d, 0x001184f0, 0x00090444 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x23200229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x001180e0, 0x00090448 },
- { 0x00800041, 0x24e0562d, 0x001180f0, 0x00090448 },
- { 0x00800041, 0x2500562d, 0x001184e0, 0x00090448 },
- { 0x00800041, 0x2520562d, 0x001184f0, 0x00090448 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00110540, 0x00000000 },
- { 0x00600001, 0x22400129, 0x00ae0240, 0x00000000 },
- { 0x00600001, 0x23400129, 0x00ae0340, 0x00000000 },
- { 0x00600001, 0x22500129, 0x00ae0280, 0x00000000 },
- { 0x00600001, 0x23500129, 0x00ae0380, 0x00000000 },
- { 0x00600001, 0x22600129, 0x00ae02c0, 0x00000000 },
- { 0x00600001, 0x23600129, 0x00ae03c0, 0x00000000 },
- { 0x00600001, 0x22700129, 0x00ae0300, 0x00000000 },
- { 0x00600001, 0x23700129, 0x00ae0400, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
- { 0x01600031, 0x27000c01, 0x408d0000, 0x0248a007 },
- { 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x01600031, 0x28000c01, 0x408d0000, 0x0228a008 },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
- { 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
- { 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
- { 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
- { 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
- { 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
- { 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
- { 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
- { 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
- { 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
- { 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
- { 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x0a082007 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
- { 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
- { 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
- { 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
- { 0x01600031, 0x20000c04, 0x508d0000, 0x06082008 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xfffffbb6 },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffbb0 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x0f000031, 0x20000c04, 0x708d0000, 0x82000000 },
diff --git a/src/shaders/post_processing/gen5_6/rgbx_load_save_nv12.g6b b/src/shaders/post_processing/gen5_6/rgbx_load_save_nv12.g6b
deleted file mode 100644
index 1e9570c..0000000
--- a/src/shaders/post_processing/gen5_6/rgbx_load_save_nv12.g6b
+++ /dev/null
@@ -1,643 +0,0 @@
- { 0x00600001, 0x20e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x25e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x26e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x27e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29a00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x29e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21000021, 0x008d0000, 0x00000000 },
- { 0x02000005, 0x20000c24, 0x02000024, 0xff000000 },
- { 0x00110001, 0x24400061, 0x02000000, 0x00428119 },
- { 0x00010001, 0x24400061, 0x02000000, 0x00198142 },
- { 0x00110001, 0x24440061, 0x02000000, 0x00dab670 },
- { 0x00010001, 0x24440061, 0x02000000, 0x0070b6da },
- { 0x00110001, 0x24480061, 0x02000000, 0x0070a2ee },
- { 0x00010001, 0x24480061, 0x02000000, 0x00eea270 },
- { 0x00000441, 0x20842e2d, 0x000000b7, 0x00100010 },
- { 0x00000c01, 0x2086022d, 0x000000bb, 0x00000000 },
- { 0x00000801, 0x208a01ad, 0x000000a0, 0x00000000 },
- { 0x00200001, 0x209403bd, 0x006600a4, 0x00000000 },
- { 0x00000040, 0x208435ad, 0x00000084, 0x000000a0 },
- { 0x00200040, 0x210035a5, 0x004500a0, 0x00450074 },
- { 0x00000409, 0x21003da5, 0x00000100, 0x00020002 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0007001f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02898001 },
- { 0x00000040, 0x21003ca5, 0x00000100, 0x00200020 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x28000cc1, 0x00000020, 0x02898001 },
- { 0x00000001, 0x22000060, 0x00000000, 0x08000700 },
- { 0x00800041, 0x24c04629, 0x00118000, 0x00090440 },
- { 0x00800041, 0x24e04629, 0x00118010, 0x00090440 },
- { 0x00800041, 0x25004629, 0x00118400, 0x00090440 },
- { 0x00800041, 0x25204629, 0x00118410, 0x00090440 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x10801080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x21400229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x00118000, 0x00090444 },
- { 0x00800041, 0x24e0562d, 0x00118010, 0x00090444 },
- { 0x00800041, 0x2500562d, 0x00118400, 0x00090444 },
- { 0x00800041, 0x2520562d, 0x00118410, 0x00090444 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x22400229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x00118000, 0x00090448 },
- { 0x00800041, 0x24e0562d, 0x00118010, 0x00090448 },
- { 0x00800041, 0x2500562d, 0x00118400, 0x00090448 },
- { 0x00800041, 0x2520562d, 0x00118410, 0x00090448 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x23400229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c04629, 0x00118020, 0x00090440 },
- { 0x00800041, 0x24e04629, 0x00118030, 0x00090440 },
- { 0x00800041, 0x25004629, 0x00118420, 0x00090440 },
- { 0x00800041, 0x25204629, 0x00118430, 0x00090440 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x10801080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x21600229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x00118020, 0x00090444 },
- { 0x00800041, 0x24e0562d, 0x00118030, 0x00090444 },
- { 0x00800041, 0x2500562d, 0x00118420, 0x00090444 },
- { 0x00800041, 0x2520562d, 0x00118430, 0x00090444 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x22600229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x00118020, 0x00090448 },
- { 0x00800041, 0x24e0562d, 0x00118030, 0x00090448 },
- { 0x00800041, 0x2500562d, 0x00118420, 0x00090448 },
- { 0x00800041, 0x2520562d, 0x00118430, 0x00090448 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x23600229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c04629, 0x00118040, 0x00090440 },
- { 0x00800041, 0x24e04629, 0x00118050, 0x00090440 },
- { 0x00800041, 0x25004629, 0x00118440, 0x00090440 },
- { 0x00800041, 0x25204629, 0x00118450, 0x00090440 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x10801080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x21800229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x00118040, 0x00090444 },
- { 0x00800041, 0x24e0562d, 0x00118050, 0x00090444 },
- { 0x00800041, 0x2500562d, 0x00118440, 0x00090444 },
- { 0x00800041, 0x2520562d, 0x00118450, 0x00090444 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x22800229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x00118040, 0x00090448 },
- { 0x00800041, 0x24e0562d, 0x00118050, 0x00090448 },
- { 0x00800041, 0x2500562d, 0x00118440, 0x00090448 },
- { 0x00800041, 0x2520562d, 0x00118450, 0x00090448 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x23800229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c04629, 0x00118060, 0x00090440 },
- { 0x00800041, 0x24e04629, 0x00118070, 0x00090440 },
- { 0x00800041, 0x25004629, 0x00118460, 0x00090440 },
- { 0x00800041, 0x25204629, 0x00118470, 0x00090440 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x10801080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x21a00229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x00118060, 0x00090444 },
- { 0x00800041, 0x24e0562d, 0x00118070, 0x00090444 },
- { 0x00800041, 0x2500562d, 0x00118460, 0x00090444 },
- { 0x00800041, 0x2520562d, 0x00118470, 0x00090444 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x22a00229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x00118060, 0x00090448 },
- { 0x00800041, 0x24e0562d, 0x00118070, 0x00090448 },
- { 0x00800041, 0x2500562d, 0x00118460, 0x00090448 },
- { 0x00800041, 0x2520562d, 0x00118470, 0x00090448 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x23a00229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c04629, 0x00118080, 0x00090440 },
- { 0x00800041, 0x24e04629, 0x00118090, 0x00090440 },
- { 0x00800041, 0x25004629, 0x00118480, 0x00090440 },
- { 0x00800041, 0x25204629, 0x00118490, 0x00090440 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x10801080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x21c00229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x00118080, 0x00090444 },
- { 0x00800041, 0x24e0562d, 0x00118090, 0x00090444 },
- { 0x00800041, 0x2500562d, 0x00118480, 0x00090444 },
- { 0x00800041, 0x2520562d, 0x00118490, 0x00090444 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x22c00229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x00118080, 0x00090448 },
- { 0x00800041, 0x24e0562d, 0x00118090, 0x00090448 },
- { 0x00800041, 0x2500562d, 0x00118480, 0x00090448 },
- { 0x00800041, 0x2520562d, 0x00118490, 0x00090448 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x23c00229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c04629, 0x001180a0, 0x00090440 },
- { 0x00800041, 0x24e04629, 0x001180b0, 0x00090440 },
- { 0x00800041, 0x25004629, 0x001184a0, 0x00090440 },
- { 0x00800041, 0x25204629, 0x001184b0, 0x00090440 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x10801080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x21e00229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x001180a0, 0x00090444 },
- { 0x00800041, 0x24e0562d, 0x001180b0, 0x00090444 },
- { 0x00800041, 0x2500562d, 0x001184a0, 0x00090444 },
- { 0x00800041, 0x2520562d, 0x001184b0, 0x00090444 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x22e00229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x001180a0, 0x00090448 },
- { 0x00800041, 0x24e0562d, 0x001180b0, 0x00090448 },
- { 0x00800041, 0x2500562d, 0x001184a0, 0x00090448 },
- { 0x00800041, 0x2520562d, 0x001184b0, 0x00090448 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x23e00229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c04629, 0x001180c0, 0x00090440 },
- { 0x00800041, 0x24e04629, 0x001180d0, 0x00090440 },
- { 0x00800041, 0x25004629, 0x001184c0, 0x00090440 },
- { 0x00800041, 0x25204629, 0x001184d0, 0x00090440 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x10801080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x22000229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x001180c0, 0x00090444 },
- { 0x00800041, 0x24e0562d, 0x001180d0, 0x00090444 },
- { 0x00800041, 0x2500562d, 0x001184c0, 0x00090444 },
- { 0x00800041, 0x2520562d, 0x001184d0, 0x00090444 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x23000229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x001180c0, 0x00090448 },
- { 0x00800041, 0x24e0562d, 0x001180d0, 0x00090448 },
- { 0x00800041, 0x2500562d, 0x001184c0, 0x00090448 },
- { 0x00800041, 0x2520562d, 0x001184d0, 0x00090448 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x24000229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c04629, 0x001180e0, 0x00090440 },
- { 0x00800041, 0x24e04629, 0x001180f0, 0x00090440 },
- { 0x00800041, 0x25004629, 0x001184e0, 0x00090440 },
- { 0x00800041, 0x25204629, 0x001184f0, 0x00090440 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c02529, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e02529, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x65002529, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x65202529, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x25400129, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x25480129, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x25500129, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x25580129, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402d29, 0x00110540, 0x10801080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x22200229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x001180e0, 0x00090444 },
- { 0x00800041, 0x24e0562d, 0x001180f0, 0x00090444 },
- { 0x00800041, 0x2500562d, 0x001184e0, 0x00090444 },
- { 0x00800041, 0x2520562d, 0x001184f0, 0x00090444 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x23200229, 0x00110540, 0x00000000 },
- { 0x00800041, 0x24c0562d, 0x001180e0, 0x00090448 },
- { 0x00800041, 0x24e0562d, 0x001180f0, 0x00090448 },
- { 0x00800041, 0x2500562d, 0x001184e0, 0x00090448 },
- { 0x00800041, 0x2520562d, 0x001184f0, 0x00090448 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c2 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e2 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0502 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0522 },
- { 0x00400040, 0x64c035ad, 0x000b04c0, 0x000b04c4 },
- { 0x00400040, 0x64e035ad, 0x000b04e0, 0x000b04e4 },
- { 0x00400040, 0x650035ad, 0x000b0500, 0x000b0504 },
- { 0x00400040, 0x652035ad, 0x000b0520, 0x000b0524 },
- { 0x00400001, 0x254001ad, 0x000b04c0, 0x00000000 },
- { 0x00400001, 0x254801ad, 0x000b04e0, 0x00000000 },
- { 0x00400001, 0x255001ad, 0x000b0500, 0x00000000 },
- { 0x00400001, 0x255801ad, 0x000b0520, 0x00000000 },
- { 0x00800040, 0x25402da9, 0x00110540, 0x80808080 },
- { 0x00800001, 0x25400231, 0x00120541, 0x00000000 },
- { 0x00800001, 0x24200229, 0x00110540, 0x00000000 },
- { 0x00600001, 0x22400129, 0x00ae0240, 0x00000000 },
- { 0x00600001, 0x23400129, 0x00ae0340, 0x00000000 },
- { 0x00600001, 0x22500129, 0x00ae0280, 0x00000000 },
- { 0x00600001, 0x23500129, 0x00ae0380, 0x00000000 },
- { 0x00600001, 0x22600129, 0x00ae02c0, 0x00000000 },
- { 0x00600001, 0x23600129, 0x00ae03c0, 0x00000000 },
- { 0x00600001, 0x22700129, 0x00ae0300, 0x00000000 },
- { 0x00600001, 0x23700129, 0x00ae0400, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00200001, 0x202001a6, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x20280062, 0x00000000, 0x0007000f },
- { 0x00000005, 0x24000c20, 0x000000b8, 0x00ffffff },
- { 0x04000010, 0x20000c04, 0x00000400, 0x00ffffff },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000056 },
- { 0x04600031, 0x27000cc1, 0x00000020, 0x02498007 },
- { 0x0000040c, 0x21043da1, 0x000000a2, 0x00010001 },
- { 0x00000801, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x04600031, 0x28000cc1, 0x00000020, 0x02298008 },
- { 0x00200001, 0x210001a1, 0x004500a0, 0x00000000 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0007000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00000001, 0x26020228, 0x000000ba, 0x00000000 },
- { 0x00610001, 0x24400129, 0x020000b8, 0x00000000 },
- { 0x00710001, 0x24400169, 0x02000000, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00040001 },
- { 0x00000001, 0x24640061, 0x00000000, 0x00400010 },
- { 0x00000001, 0x24680061, 0x00000000, 0x04000100 },
- { 0x00000001, 0x246c0061, 0x00000000, 0x40001000 },
- { 0x00000001, 0x26020128, 0x00000440, 0x00000000 },
- { 0x00910001, 0x41400231, 0x02b10700, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000440, 0x008d0460 },
- { 0x00710001, 0x42400231, 0x02ae0800, 0x00000000 },
- { 0x00710001, 0x43400231, 0x02ae0801, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000442, 0x00000000 },
- { 0x00910001, 0x41600231, 0x02b10710, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000444, 0x00000000 },
- { 0x00910001, 0x41800231, 0x02b10720, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000444, 0x008d0460 },
- { 0x00710001, 0x42500231, 0x02ae0810, 0x00000000 },
- { 0x00710001, 0x43500231, 0x02ae0811, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000446, 0x00000000 },
- { 0x00910001, 0x41a00231, 0x02b10730, 0x00000000 },
- { 0x00000001, 0x26020128, 0x00000448, 0x00000000 },
- { 0x00910001, 0x41c00231, 0x02b10740, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x02000448, 0x008d0460 },
- { 0x00710001, 0x42600231, 0x02ae0820, 0x00000000 },
- { 0x00710001, 0x43600231, 0x02ae0821, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044a, 0x00000000 },
- { 0x00910001, 0x41e00231, 0x02b10750, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044c, 0x00000000 },
- { 0x00910001, 0x42000231, 0x02b10760, 0x00000000 },
- { 0x02600005, 0x2000252c, 0x0200044c, 0x008d0460 },
- { 0x00710001, 0x42700231, 0x02ae0830, 0x00000000 },
- { 0x00710001, 0x43700231, 0x02ae0831, 0x00000000 },
- { 0x00000001, 0x26020128, 0x0000044e, 0x00000000 },
- { 0x00910001, 0x42200231, 0x02b10770, 0x00000000 },
- { 0x00800001, 0x20400232, 0x00d20140, 0x00000000 },
- { 0x00800001, 0x20500232, 0x00d20160, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00d20180, 0x00000000 },
- { 0x00800001, 0x20700232, 0x00d201a0, 0x00000000 },
- { 0x00800001, 0x20800232, 0x00d201c0, 0x00000000 },
- { 0x00800001, 0x20900232, 0x00d201e0, 0x00000000 },
- { 0x00800001, 0x20a00232, 0x00d20200, 0x00000000 },
- { 0x00800001, 0x20b00232, 0x00d20220, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x0a094007 },
- { 0x00200001, 0x210001a5, 0x004500a0, 0x00000000 },
- { 0x0000000c, 0x21043ca5, 0x00000104, 0x00010001 },
- { 0x00000001, 0x21080061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x20200022, 0x008d0100, 0x00000000 },
- { 0x00800001, 0x40400232, 0x00d20240, 0x00000000 },
- { 0x00800001, 0x40410232, 0x00d20340, 0x00000000 },
- { 0x00800001, 0x40600232, 0x00d20260, 0x00000000 },
- { 0x00800001, 0x40610232, 0x00d20360, 0x00000000 },
- { 0x05600031, 0x20000cc4, 0x00000020, 0x06094008 },
- { 0x01000040, 0x20863dad, 0x00000086, 0xffffffff },
- { 0x00000040, 0x20a03dad, 0x000000a0, 0x00100010 },
- { 0x05000010, 0x200035ac, 0x020000a0, 0x00000084 },
- { 0x00010220, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x20b80129, 0x000000c8, 0x00000000 },
- { 0x01000010, 0x20003dac, 0x00000086, 0x00010001 },
- { 0x00010001, 0x20b80129, 0x000000c4, 0x00000000 },
- { 0x00010001, 0x20ba0231, 0x000000c6, 0x00000000 },
- { 0x00010220, 0x34001c00, 0x02001400, 0xfffffbb6 },
- { 0x00000001, 0x20a001ad, 0x0000008a, 0x00000000 },
- { 0x00000040, 0x20a23dad, 0x000000a2, 0x00080008 },
- { 0x00000220, 0x34001c00, 0x00001400, 0xfffffbb0 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
- { 0x00600001, 0x21e00022, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001cc4, 0x000001e0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/DI_Core.g4a b/src/shaders/post_processing/gen7/DI_Core.g4a
deleted file mode 100644
index 0c2391f..0000000
--- a/src/shaders/post_processing/gen7/DI_Core.g4a
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 22 // Total instruction count
-// 1 // Total kernel count
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// End of common.inc
-
-// FileName: DI.asm
-// Author: Vivek Kumar
-// Description: Tasks for DI only case (16x4 block)
-
-
-// End of common.inc
-
-
-// FileName: DNDI.inc
-// Author: Vivek Kumar
-// Description: Include file for DN, DI and DNDI
-// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//====================== Binding table (Explicit To DNDI)=========================================
-
-
-.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
-.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
-.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
-
-
-.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
-.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
-.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
-.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
-.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
-.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
-.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
-.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
-
-//r45
-//Use r45 as message header, so no need to "mov" the data.
-
-.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
-.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-// Message response (UV Copy); Use buffer 5
-.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Temp GRFs: For 42X to 422 Conversion
-.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
-.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
- // Message descriptor for sampler read
- // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
- // 1 (header present 1) 0 11 (SIMD32/64 mode)
- // 1000 (message type) 0000 (DI state index)
- // 00000000 (binding table index - set later)
- // = 0x040b8000
-
-
-// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
-
-
-//---------------------------------------------------------------------------
-// VDI Return Data format
-//---------------------------------------------------------------------------
-// Defines for DI enabled
-
-
-// Defines for DI disabled
-
-
-// FileName: DNDI_Command.asm
-// Author: Vivek Kumar
-// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
-
-// Prepare the DNDI send command
-mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
-mov (1) mwMSGHDR_DNDI(1,4)<1> r9.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
-mov (1) mwMSGHDR_DNDI(1,12)<1> r9.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
-
-send (8) udDNDI_RESP(0)<1> r18 0x2 0x4AE8003:ud
-
-// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
-// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
-mov (2) r9.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
-
-
-// FileName: DI_STMM_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write STMM to memory
-mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
-mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
-
-shr (1) mudMSGHDR_STMM(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
-mov (1) mudMSGHDR_STMM(0,1)<1> r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
-mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
-
-send (8) null<1>:d r20 0x5 0x40A8021:ud
-
-
-// FileName: DNDI_Enc_Stats_Save.asm
-// Author: Vivek Kumar
-// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write encoder statistics to memory
-//Currently enable this only on Gen6 validation
-mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
-mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
-
-shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
-mul (1) acc0.1<1>:ud r9.1<0;1,0>:w 3:w // Y origin * 3
-shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
-mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
-add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
-
-
- //Data block for Encoder Statistics
- //----------------------------------------------------
- //| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
- //----------------------------------------------------
- //| BNE | MCNT | FCNT | TCNT | X | X | X | X |
- //----------------------------------------------------
- //| DcTpT | SVCM | DcBpT | DcTpB |
- //----------------------------------------------------
- //| SHCM | STAD | DcTcB | DcBpB |
- //----------------------------------------------------
- mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
-
-
-send (8) null<1>:d r24 0x5 0x40A8021:ud
-
-
diff --git a/src/shaders/post_processing/gen7/DI_Save_NV12_16x4.g4a b/src/shaders/post_processing/gen7/DI_Save_NV12_16x4.g4a
deleted file mode 100644
index 6c910ba..0000000
--- a/src/shaders/post_processing/gen7/DI_Save_NV12_16x4.g4a
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 20 // Total instruction count
-// 1 // Total kernel count
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// End of common.inc
-
-// FileName: DI_Save_NV12_16x4.asm
-// Author: Vivek Kumar
-// Description: Save two 16x4 blocks of DI output in NV12 format
-
-
-// FileName: DNDI.inc
-// Author: Vivek Kumar
-// Description: Include file for DN, DI and DNDI
-// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//====================== Binding table (Explicit To DNDI)=========================================
-
-
-.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
-.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
-.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
-
-
-.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
-.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
-.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
-.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
-.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
-.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
-.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
-.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
-
-//r45
-//Use r45 as message header, so no need to "mov" the data.
-
-.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
-.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-// Message response (UV Copy); Use buffer 5
-.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Temp GRFs: For 42X to 422 Conversion
-.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
-.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
- // Message descriptor for sampler read
- // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
- // 1 (header present 1) 0 11 (SIMD32/64 mode)
- // 1000 (message type) 0000 (DI state index)
- // 00000000 (binding table index - set later)
- // = 0x040b8000
-
-
-// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
-
-
-//---------------------------------------------------------------------------
-// VDI Return Data format
-//---------------------------------------------------------------------------
-// Defines for DI enabled
-
-
-// Defines for DI disabled
-
-
-mov (2) r27.0<1>:d r9.0<2;2,1>:w { NoDDClr }
-mov (1) r27.2<1>:ud 0x3000F:ud { NoDDChk } // Block width and height (16x4)
-
-//Bottom field Y
- mov (8) mudMSGHDR_DI_OUT1(1)<1> udDNDI_RESP(0,0)
- mov (8) mudMSGHDR_DI_OUT1(2)<1> udDNDI_RESP(0,8)
-// Top field Y
- mov (8) mudMSGHDR_DI_OUT2(1)<1> udDNDI_RESP(4,0)
- mov (8) mudMSGHDR_DI_OUT2(2)<1> udDNDI_RESP(4,8)
-
-//copy message desrcptor to the message header
-mov (8) r18.0<1>:ud r27<8;8,1>:ud
-mov (8) r23.0<1>:ud r27<8;8,1>:ud
-
-//Change origin to U/V block
-asr (1) r27.1<1>:d r27.1<0;1,0>:d 1:w { NoDDClr } // U/V block origin should be half of Y's
-mov (1) r27.2<1>:ud 0x1000F:ud { NoDDChk } // Block width and height (16x2)
-
-// Bottom field U/V
-mov (16) r21.0<2>:ub ubDNDI_RESP(2, 1)<32;8,2> { NoDDClr }
-mov (16) r21.1<2>:ub ubDNDI_RESP(2, 0)<32;8,2> { NoDDChk }
-
-// Top field U/V
-mov (16) r26.0<2>:ub ubDNDI_RESP(6, 1)<32;8,2> { NoDDClr }
-mov (16) r26.1<2>:ub ubDNDI_RESP(6, 0)<32;8,2> { NoDDChk }
-
-//copy message desrcptor to the message header
-mov (8) r21<1>:ud r27<8;8,1>:ud
-mov (8) r26<1>:ud r27<8;8,1>:ud
-
-//Send out Y component on previous frame to surface
-send (8) null<1>:d r18.0 0x5 0x60A801B:ud
-//Send out Y component on current frame to surface
-send (8) null<1>:d r23.0 0x5 0x60A801E:ud
-//Send out U/V component on previous frame to surface
-send (8) null<1>:d r21 0x5 0x40A801C:ud
-//Send out U/V component on current frame to surface
-send (8) null<1>:d r26 0x5 0x40A801F:ud
diff --git a/src/shaders/post_processing/gen7/DI_Save_PA_16x4.g4a b/src/shaders/post_processing/gen7/DI_Save_PA_16x4.g4a
deleted file mode 100644
index efcc8ac..0000000
--- a/src/shaders/post_processing/gen7/DI_Save_PA_16x4.g4a
+++ /dev/null
@@ -1,311 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 33 // Total instruction count
-// 1 // Total kernel count
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// End of common.inc
-
-// FileName: DI_Save_PA_16x4.asm
-// Author: Vivek Kumar
-// Description: Save two 16x4 blocks of DI output in Packed format
-
-
-// FileName: DNDI.inc
-// Author: Vivek Kumar
-// Description: Include file for DN, DI and DNDI
-// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//====================== Binding table (Explicit To DNDI)=========================================
-
-
-.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
-.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
-.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
-
-
-.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
-.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
-.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
-.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
-.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
-.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
-.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
-.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
-
-//r45
-//Use r45 as message header, so no need to "mov" the data.
-
-.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
-.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-// Message response (UV Copy); Use buffer 5
-.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Temp GRFs: For 42X to 422 Conversion
-.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
-.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
- // Message descriptor for sampler read
- // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
- // 1 (header present 1) 0 11 (SIMD32/64 mode)
- // 1000 (message type) 0000 (DI state index)
- // 00000000 (binding table index - set later)
- // = 0x040b8000
-
-
-// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
-
-
-//---------------------------------------------------------------------------
-// VDI Return Data format
-//---------------------------------------------------------------------------
-// Defines for DI enabled
-
-
-// Defines for DI disabled
-
-
-add (4) a0.4<1>:uw r2.28<4;4,1>:ub 608:w // Initial Y,U,V offset in YUV422 block; it starts at m20
-
-mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
-shl (1) r27.0<1>:d r9.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
-mov (1) r27.1<1>:d r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
-mov (1) r27.2<1>:ud 0x3001F:ud { NoDDChk } // Block width and height (32x8)
-
-//prepare the message headers
-mov (8) r18.0<1>:ud r27<8;8,1>:ud
-mov (8) r23.0<1>:ud r27<8;8,1>:ud
-
-// Pack 2nd field Y
- mov (16) r[a0.4, 0]<2> ubDNDI_RESP(0,0) { NoDDClr }
- mov (16) r[a0.4, 32]<2> ubDNDI_RESP(0,16) { NoDDClr }
- mov (16) r[a0.4, 64]<2> ubDNDI_RESP(0,32) { NoDDClr }
- mov (16) r[a0.4, 96]<2> ubDNDI_RESP(0,48) { NoDDClr }
-// Pack 2nd field U
- mov (8) r[a0.5, 0]<4> ubDNDI_RESP(2,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 32]<4> ubDNDI_RESP(2,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 64]<4> ubDNDI_RESP(2,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 96]<4> ubDNDI_RESP(2,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
-// Pack 2nd field V
- mov (8) r[a0.6, 0]<4> ubDNDI_RESP(2,0)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 32]<4> ubDNDI_RESP(2,16)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 64]<4> ubDNDI_RESP(2,32)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 96]<4> ubDNDI_RESP(2,48)<16;8,2> { NoDDChk } //Vpixels
-
-// Pack 1st field Y
- mov (16) r[a0.4, 160]<2> ubDNDI_RESP(4,0) { NoDDClr }
- mov (16) r[a0.4, 192]<2> ubDNDI_RESP(4,16) { NoDDClr }
- mov (16) r[a0.4, 224]<2> ubDNDI_RESP(4,32) { NoDDClr }
- mov (16) r[a0.4, 256]<2> ubDNDI_RESP(4,48) { NoDDClr }
-// Pack 1st field U
- mov (8) r[a0.5, 160]<4> ubDNDI_RESP(6,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 192]<4> ubDNDI_RESP(6,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 224]<4> ubDNDI_RESP(6,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 256]<4> ubDNDI_RESP(6,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
-// Pack 1st field V
- mov (8) r[a0.6, 160]<4> ubDNDI_RESP(6,0)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 192]<4> ubDNDI_RESP(6,16)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 224]<4> ubDNDI_RESP(6,32)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 256]<4> ubDNDI_RESP(6,48)<16;8,2> { NoDDChk } //Vpixels
-
-//save the previous frame
-send (8) null<1>:d r18.0 0x5 0xA0A801B:ud
-
-//save the current frame
-send (8) null<1>:d r23.0 0x5 0xA0A801E:ud
diff --git a/src/shaders/post_processing/gen7/EOT.g4a b/src/shaders/post_processing/gen7/EOT.g4a
deleted file mode 100644
index 2c5bb44..0000000
--- a/src/shaders/post_processing/gen7/EOT.g4a
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 2 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
diff --git a/src/shaders/post_processing/gen7/Makefile.am b/src/shaders/post_processing/gen7/Makefile.am
deleted file mode 100644
index d76f7db..0000000
--- a/src/shaders/post_processing/gen7/Makefile.am
+++ /dev/null
@@ -1,108 +0,0 @@
-INTEL_PP_G7B = \
- avs.g7b \
- dndi.g7b \
- nv12_dn_nv12.g7b \
- pa_to_pl2.g7b \
- pa_to_pl3.g7b \
- pa_to_pa.g7b \
- pl2_to_pa.g7b \
- pl2_to_pl2.g7b \
- pl2_to_pl3.g7b \
- pl2_to_rgbx.g7b \
- pl3_to_pa.g7b \
- pl3_to_pl2.g7b \
- pl3_to_pl3.g7b \
- rgbx_to_nv12.g7b \
- $(NULL)
-
-INTEL_PP_G4A = \
- DI_Core.g4a \
- DI_Save_NV12_16x4.g4a \
- DI_Save_PA_16x4.g4a \
- EOT.g4a \
- NV12_DI_NV12.g4a \
- NV12_DNDI_422CP.g4a \
- NV12_DNDI_PA.g4a \
- NV12_DNUV_NV12.g4a \
- NV12_DN_422CP.g4a \
- NV12_DN_NV12.g4a \
- PA_AVS_Buf_0.g4a \
- PA_AVS_Buf_1.g4a \
- PA_AVS_Buf_2.g4a \
- PA_AVS_Buf_3.g4a \
- PA_DI_422CP.g4a \
- PA_DI_PA.g4a \
- PA_DNDI_422CP.g4a \
- PA_DNDI_PA.g4a \
- PA_DNUV_PA.g4a \
- PA_DN_422CP.g4a \
- PA_DN_PA.g4a \
- PL2_AVS_Buf_0.g4a \
- PL2_AVS_Buf_1.g4a \
- PL2_AVS_Buf_2.g4a \
- PL2_AVS_Buf_3.g4a \
- PL3_AVS_Buf_0.g4a \
- PL3_AVS_Buf_1.g4a \
- PL3_AVS_Buf_2.g4a \
- PL3_AVS_Buf_3.g4a \
- PL3_DNDI_422CP.g4a \
- PL3_DNDI_PA.g4a \
- PL3_DNUV_PL3.g4a \
- PL3_DN_422CP.g4a \
- PL3_DN_PL3.g4a \
- PL_DI_422CP.g4a \
- PL_DI_PA.g4a \
- RGB_to_YUV.g4a \
- Save_AVS_PA.g4a \
- Save_AVS_PL3.g4a \
- Save_AVS_NV12.g4a \
- Save_AVS_RGB.g4a \
- Save_AVS_RGBX.g4a \
- Set_AVS_Buf_0123_BGRA.g4a \
- Set_AVS_Buf_0123_PL2.g4a \
- Set_AVS_Buf_0123_PL3.g4a \
- Set_AVS_Buf_0123_VUYA.g4a \
- Set_AVS_Buf_0123_VYUA.g4a \
- Set_Layer_0.g4a \
- VP_Setup.g4a \
- YUV_to_RGB.g4a \
- $(NULL)
-
-INTEL_PP_ASM = $(INTEL_PP_G7B:%.g7b=%.asm)
-INTEL_PP_GEN7_ASM = $(INTEL_PP_G7B:%.g7b=%.g7s)
-
-INTEL_PP_G75B = $(INTEL_PP_G7B:%.g7b=%.g75b)
-
-TARGETS =
-if HAVE_GEN4ASM
-TARGETS += $(INTEL_PP_G7B) $(INTEL_PP_G75B)
-endif
-
-all-local: $(TARGETS)
-
-SUFFIXES = .g7b .g7s .asm
-
-if HAVE_GEN4ASM
-$(INTEL_PP_GEN7_ASM): $(INTEL_PP_ASM) $(INTEL_PP_G4A)
-.asm.g7s:
- $(AM_V_GEN)cpp $< > _pp0.$@; \
- $(PYTHON2) $(top_srcdir)/src/shaders/gpp.py _pp0.$@ $@; \
- rm _pp0.$@
-.g7s.g7b:
- $(AM_V_GEN)$(GEN4ASM) -a -o $@ -g 7 $<
-
-.g7s.g75b:
- $(AM_V_GEN)$(GEN4ASM) -a -o $@ -g 7.5 $<
-endif
-
-CLEANFILES = $(INTEL_PP_GEN7_ASM)
-
-EXTRA_DIST = \
- $(INTEL_PP_ASM) \
- $(INTEL_PP_G4A) \
- $(INTEL_PP_G75B) \
- $(INTEL_PP_G7B) \
- $(NULL)
-
-# Extra clean files so that maintainer-clean removes *everything*
-MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/shaders/post_processing/gen7/NV12_DI_NV12.g4a b/src/shaders/post_processing/gen7/NV12_DI_NV12.g4a
deleted file mode 100644
index e646cf1..0000000
--- a/src/shaders/post_processing/gen7/NV12_DI_NV12.g4a
+++ /dev/null
@@ -1,414 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 57 // Total instruction count
-// 1 // Total kernel count
-
-.kernel NV12_DI_NV12
-.code
-
-
-
-// FileName: DI.asm
-// Author: Vivek Kumar
-// Description: Tasks for DI only case (16x4 block)
-
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: DNDI.inc
-// Author: Vivek Kumar
-// Description: Include file for DN, DI and DNDI
-// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
-
-
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//====================== Binding table (Explicit To DNDI)=========================================
-
-
-.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
-.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
-.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
-
-
-.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
-.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
-.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
-.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
-.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
-.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
-.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
-.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
-
-//r45
-//Use r45 as message header, so no need to "mov" the data.
-
-.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
-.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-// Message response (UV Copy); Use buffer 5
-.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Temp GRFs: For 42X to 422 Conversion
-.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
-.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
- // Message descriptor for sampler read
- // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
- // 1 (header present 1) 0 11 (SIMD32/64 mode)
- // 1000 (message type) 0000 (DI state index)
- // 00000000 (binding table index - set later)
- // = 0x040b8000
-
-
-// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
-
-
-//---------------------------------------------------------------------------
-// VDI Return Data format
-//---------------------------------------------------------------------------
-// Defines for DI enabled
-
-
-// Defines for DI disabled
-
-
-
-// FileName: DNDI_Command.asm
-// Author: Vivek Kumar
-// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
-
-// Prepare the DNDI send command
-mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
-mov (1) mwMSGHDR_DNDI(1,4)<1> r9.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
-mov (1) mwMSGHDR_DNDI(1,12)<1> r9.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
-
-send (8) udDNDI_RESP(0)<1> r18 0x2 0x4AE8003:ud
-
-// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
-// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
-mov (2) r9.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
-
-
-
-// FileName: DI_STMM_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write STMM to memory
-mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
-mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
-
-shr (1) mudMSGHDR_STMM(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
-mov (1) mudMSGHDR_STMM(0,1)<1> r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
-mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
-
-send (8) null<1>:d r20 0x5 0x40A8021:ud
-
-
-
-// FileName: DNDI_Enc_Stats_Save.asm
-// Author: Vivek Kumar
-// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write encoder statistics to memory
-//Currently enable this only on Gen6 validation
-mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
-mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
-
-shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
-mul (1) acc0.1<1>:ud r9.1<0;1,0>:w 3:w // Y origin * 3
-shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
-mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
-add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
-
-
- //Data block for Encoder Statistics
- //----------------------------------------------------
- //| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
- //----------------------------------------------------
- //| BNE | MCNT | FCNT | TCNT | X | X | X | X |
- //----------------------------------------------------
- //| DcTpT | SVCM | DcBpT | DcTpB |
- //----------------------------------------------------
- //| SHCM | STAD | DcTcB | DcBpB |
- //----------------------------------------------------
- mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
-
-
-send (8) null<1>:d r24 0x5 0x40A8021:ud
-
-
-
-// FileName: DI_Save_NV12_16x4.asm
-// Author: Vivek Kumar
-// Description: Save two 16x4 blocks of DI output in Packed format
-
-
-// add (4) a0.4<1>:uw r2.28<4;4,1>:ub 608:w // Initial Y,U,V offset in YUV422 block; it starts at m20
-
-mov (8) r28.0<1>:ud r0.0<8;8,1>:ud
-mov (1) r28.0<1>:d r9.0<0;1,0>:w { NoDDClr } // H. block origin need to be doubled
-mov (1) r28.1<1>:d r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
-mov (1) r28.2<1>:ud 0x3000F:ud { NoDDChk } // Block width and height (32x8)
-
-//prepare the message headers
-mov (8) r18.0<1>:ud r28<8;8,1>:ud
-mov (8) r23.0<1>:ud r28<8;8,1>:ud
-
-//Bottom field Y
-mov (8) mudMSGHDR_DI_OUT1(1)<1> udDNDI_RESP(0,0)
-mov (8) mudMSGHDR_DI_OUT1(2)<1> udDNDI_RESP(0,8)
-// Top field Y
-mov (8) mudMSGHDR_DI_OUT2(1)<1> udDNDI_RESP(4,0)
-mov (8) mudMSGHDR_DI_OUT2(2)<1> udDNDI_RESP(4,8)
-
-//Change origin to U/V block
-asr (1) r28.1<1>:d r28.1<0;1,0>:d 1:w { NoDDClr } // U/V block origin should be half of Y's
-mov (1) r28.2<1>:ud 0x1000F:ud { NoDDChk } // Block width and height (16x2)
-
-// Bottom field U/V
-mov (16) r22.0<2>:ub ubDNDI_RESP(2, 1)<32;8,2> { NoDDClr }
-mov (16) r22.1<2>:ub ubDNDI_RESP(2, 0)<32;8,2> { NoDDChk }
-
-// Top field U/V
-mov (16) r27.0<2>:ub ubDNDI_RESP(6, 1)<32;8,2> { NoDDClr }
-mov (16) r27.1<2>:ub ubDNDI_RESP(6, 0)<32;8,2> { NoDDChk }
-
-//copy message desrcptor to the message header
-mov (8) r21<1>:ud r28<8;8,1>:ud
-mov (8) r26<1>:ud r28<8;8,1>:ud
-
-//Send out Y component on previous frame to surface
-send (8) null<1>:d r18 0x5 0x60A801B:ud
-//Send out Y component on current frame to surface
-send (8) null<1>:d r23 0x5 0x60A801E:ud
-//Send out U/V component on previous frame to surface
-send (8) null<1>:d r21 0x5 0x40A801C:ud
-//Send out U/V component on current frame to surface
-send (8) null<1>:d r26 0x5 0x40A801F:ud
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
-
-
-.end_code
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/NV12_DNDI_422CP.g4a b/src/shaders/post_processing/gen7/NV12_DNDI_422CP.g4a
deleted file mode 100644
index b877ee9..0000000
--- a/src/shaders/post_processing/gen7/NV12_DNDI_422CP.g4a
+++ /dev/null
@@ -1,579 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 116 // Total instruction count
-// 1 // Total kernel count
-
-.kernel NV12_DNDI_422CP
-.code
-
-
-
-// FileName: DNDI_PL_Core.asm
-// Author: Tatiya, Rupesh
-
-
-
-// FileName: DNDI_Core.asm
-// Author: Vivek Kumar
-// Description: Tasks for DN+DI case (16x4 block)
-
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: DNDI.inc
-// Author: Vivek Kumar
-// Description: Include file for DN, DI and DNDI
-// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
-
-
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//====================== Binding table (Explicit To DNDI)=========================================
-
-
-.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
-.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
-.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
-
-
-.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
-.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
-.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
-.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
-.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
-.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
-.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
-.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
-
-//r45
-//Use r45 as message header, so no need to "mov" the data.
-
-.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
-.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-// Message response (UV Copy); Use buffer 5
-.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Temp GRFs: For 42X to 422 Conversion
-.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
-.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
- // Message descriptor for sampler read
- // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
- // 1 (header present 1) 0 11 (SIMD32/64 mode)
- // 1000 (message type) 0000 (DI state index)
- // 00000000 (binding table index - set later)
- // = 0x040b8000
-
-
-// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
-
-
-//---------------------------------------------------------------------------
-// VDI Return Data format
-//---------------------------------------------------------------------------
-// Defines for DI enabled
-
-
-// Defines for DI disabled
-
-
-
-// FileName: DNDI_Command.asm
-// Author: Vivek Kumar
-// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
-
-// Prepare the DNDI send command
-mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
-mov (1) mwMSGHDR_DNDI(1,4)<1> r9.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
-mov (1) mwMSGHDR_DNDI(1,12)<1> r9.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
-
-send (8) udDNDI_RESP(0)<1> r18 0x2 0x4BE8003:ud
-
-// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
-// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
-mov (2) r9.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
-
-
-
-// FileName: DI_STMM_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write STMM to memory
-mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
-mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
-
-shr (1) mudMSGHDR_STMM(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
-mov (1) mudMSGHDR_STMM(0,1)<1> r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
-mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
-
-send (8) null<1>:d r20 0x5 0x40A8021:ud
-
-
-
-// FileName: DN_Hist_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DN history data to statistics surface
-
-// Write denoise history to memory
-mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
-
- mov (1) mudMSGHDR_HIST(1)<1> udDNDI_RESP(9,0)<0;1,0> // Move denoise history to MRF (4x1)
-
-
-shr (2) r27.0<1>:ud r9.0<2;2,1>:w 2:w // X,Y origin / 4
-add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
-mov (1) r27.2<1>:ud 0x3:ud { NoDDChk } // block width and height
-
-mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
-send (8) null<1>:d r22 0x5 0x40A8021:ud
-
-
-
-// FileName: DNDI_Enc_Stats_Save.asm
-// Author: Vivek Kumar
-// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write encoder statistics to memory
-//Currently enable this only on Gen6 validation
-mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
-mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
-
-shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
-mul (1) acc0.1<1>:ud r9.1<0;1,0>:w 3:w // Y origin * 3
-shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
-mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
-add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
-
-
- //Data block for Encoder Statistics
- //----------------------------------------------------
- //| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
- //----------------------------------------------------
- //| BNE | MCNT | FCNT | TCNT | X | X | X | X |
- //----------------------------------------------------
- //| DcTpT | SVCM | DcBpT | DcTpB |
- //----------------------------------------------------
- //| SHCM | STAD | DcTcB | DcBpB |
- //----------------------------------------------------
- mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
-
-
-send (8) null<1>:d r24 0x5 0x40A8021:ud
-
-
-
-// FileName: DN_Load_UV_NV12_16x4.asm
-// Author: Vivek Kumar
-// Description: Read UV for 16x4 block through DATAPORT
-
-
-
-// FileName: UVCopy_Load_16x4.asm
-// Author: Vivek Kumar
-// Description: Read UV for 16x4 block through DATAPORT
-
-
- add (2) r27.0<1>:d r9.0<2;2,1>:w r4.4<2;2,1>:w // Source Y Block origin
- asr (1) r27.1<1>:d r27.1<0;1,0>:d 1:w { NoDDClr } // U/V block origin should be half of Y's
- mov (1) r27.2<1>:ud 0x1000F:ud { NoDDChk } // U/V block width and height (8x4)
- mov (8) mudMSGHDR_UVCOPY(0)<1> r27.0<8;8,1>:ud
- send (8) udDNDI_UV_RESP(0)<1> r36 0x4 0x2190001:ud
-
-
-
-// FileName: DN_Save_Y_16x4.asm
-// Author: Vivek Kumar
-// Description: Save one 16x4 blocks of Y channel of DN output for reference
-
-
- // check top/bottom field first
-cmp.e.f0.0 (1) null<1>:w r1.28<0;1,0>:ub 1:w
-
-mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
-mov (2) mdMSGHDR_DN_OUT(0,0)<1> r9.0<2;2,1>:w { NoDDClr } // X origin * 2 (422 output)
-mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x3000F:ud { NoDDChk } // block width and height (32x8)
-
-(f0.0) jmpi (1) TOP_FIELD_FIRST
-
-BOTTOM_FIELD_FIRST:
-
- mov (4) mudMSGHDR_DN_OUT(1,0)<1> udDNDI_RESP(10,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN_OUT(1,4)<1> udDNDI_RESP(4,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
- mov (4) mudMSGHDR_DN_OUT(2,0)<1> udDNDI_RESP(10,4)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN_OUT(2,4)<1> udDNDI_RESP(5,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
-
- jmpi (1) SAVE_DN_CURR
-
-TOP_FIELD_FIRST:
- mov (4) mudMSGHDR_DN_OUT(1,0)<1> udDNDI_RESP(4,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN_OUT(1,4)<1> udDNDI_RESP(10,0)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
- mov (4) mudMSGHDR_DN_OUT(2,0)<1> udDNDI_RESP(5,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN_OUT(2,4)<1> udDNDI_RESP(10,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
-
-SAVE_DN_CURR:
-//send out data through data port
-send (8) null<1>:d r31.0 0x5 0x60A8018:ud
-
-
-
-// FileName: DI_Save_422CP_16x4.asm
-// Author: Vivek Kumar
-// Description: Save two 16x4 blocks of DI output in 422 format to Color Pipe (IECP)
-
-
-.declare mubMSGHDR_DI_OUT1_1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mubMSGHDR_DI_OUT1_2 Base=r21.0 ElementSize=1 Type=ub
-
-
-.declare mubMSGHDR_DI_OUT2_1 Base=r24.0 ElementSize=1 Type=ub
-
-
-.declare mubMSGHDR_DI_OUT2_2 Base=r27.0 ElementSize=1 Type=ub
-
-
-mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
-shl (1) r27.0<1>:ud r9.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
-mov (1) r27.1<1>:ud r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
-mov (1) r27.2<1>:ud 0x3000F:ud { NoDDClr, NoDDChk } // Block width and height (16x8)
-
-//M0.3 - 0 - CP Enable, 1 - Area of Interest, 3:2 Message Format(TBD), 4:3 - Ignored, 31:5 CP state pointer
-//Compose area-of-interest bit + color pipe state pointer
-or (1) r27.3<1>:ud r2.4<0;1,0>:ud r9.26<0;1,0>:b { NoDDChk }
-
-//prepare the message headers
-mov (8) r18.0<1>:ud r27<8;8,1>:ud
-mov (8) r24.0<1>:ud r27<8;8,1>:ud
-
-
-// Pack 2nd field Y; First 8x4 block
- mov (8) mubMSGHDR_DI_OUT1_1(1)<2> ubDNDI_RESP(0,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_1(1,16)<2> ubDNDI_RESP(0,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_1(2)<2> ubDNDI_RESP(0,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_1(2,16)<2> ubDNDI_RESP(0,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
-// Pack 2nd field U, V; First 8x4 block
- mov (4) mubMSGHDR_DI_OUT1_1(1,1)<4> ubDNDI_RESP(2,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(1,17)<4> ubDNDI_RESP(2,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT1_1(1,3)<4> ubDNDI_RESP(2,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(1,19)<4> ubDNDI_RESP(2,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(2,1)<4> ubDNDI_RESP(2,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(2,17)<4> ubDNDI_RESP(2,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT1_1(2,3)<4> ubDNDI_RESP(2,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(2,19)<4> ubDNDI_RESP(2,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-
-// Pack 2nd field Y; Second 8x4 block
-mov (8) r21.0<1>:ud r18.0<8;8,1>:ud
-add (1) r21.0<1>:ud r21.0<0;1,0>:w 0x10:w
-
- mov (8) mubMSGHDR_DI_OUT1_2(1)<2> ubDNDI_RESP(0,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_2(1,16)<2> ubDNDI_RESP(0,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_2(2)<2> ubDNDI_RESP(0,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_2(2,16)<2> ubDNDI_RESP(0,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
-// Pack 2nd field U, V; Second 8x4 block
- mov (4) mubMSGHDR_DI_OUT1_2(1,1)<4> ubDNDI_RESP(2,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(1,17)<4> ubDNDI_RESP(2,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT1_2(1,3)<4> ubDNDI_RESP(2,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(1,19)<4> ubDNDI_RESP(2,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(2,1)<4> ubDNDI_RESP(2,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(2,17)<4> ubDNDI_RESP(2,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT1_2(2,3)<4> ubDNDI_RESP(2,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(2,19)<4> ubDNDI_RESP(2,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-send (8) null<1>:d r18.0 0x5 0x60A801B:ud
-send (8) null<1>:d r21.0 0x5 0x60A801B:ud
-
-// Pack 1st field Y; 1st 8x4 block
- mov (8) mubMSGHDR_DI_OUT2_1(1)<2> ubDNDI_RESP(4,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_1(1,16)<2> ubDNDI_RESP(4,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_1(2)<2> ubDNDI_RESP(4,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_1(2,16)<2> ubDNDI_RESP(4,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
-// Pack 1st field U,V; 1st 8x4 block
- mov (4) mubMSGHDR_DI_OUT2_1(1,1)<4> ubDNDI_RESP(6,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(1,17)<4> ubDNDI_RESP(6,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT2_1(1,3)<4> ubDNDI_RESP(6,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(1,19)<4> ubDNDI_RESP(6,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(2,1)<4> ubDNDI_RESP(6,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(2,17)<4> ubDNDI_RESP(6,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT2_1(2,3)<4> ubDNDI_RESP(6,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(2,19)<4> ubDNDI_RESP(6,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-// Pack 1st field Y; 2nd 8x4 block
-mov (8) r27.0<1>:ud r24.0<8;8,1>:ud
-add (1) r27.0<1>:ud r27.0<0;1,0>:w 0x10:w
-
- mov (8) mubMSGHDR_DI_OUT2_2(1)<2> ubDNDI_RESP(4,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_2(1,16)<2> ubDNDI_RESP(4,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_2(2)<2> ubDNDI_RESP(4,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_2(2,16)<2> ubDNDI_RESP(4,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
-// Pack 1st field U, V; 2nd 8x4 block
- mov (4) mubMSGHDR_DI_OUT2_2(1,1)<4> ubDNDI_RESP(6,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(1,17)<4> ubDNDI_RESP(6,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT2_2(1,3)<4> ubDNDI_RESP(6,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(1,19)<4> ubDNDI_RESP(6,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(2,1)<4> ubDNDI_RESP(6,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(2,17)<4> ubDNDI_RESP(6,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT2_2(2,3)<4> ubDNDI_RESP(6,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(2,19)<4> ubDNDI_RESP(6,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-send (8) null<1>:d r24.0 0x5 0x60A801E:ud
-send (8) null<1>:d r27.0 0x5 0x60A801E:ud
-
-
-
-// FileName: DN_Save_UV_NV12_16x4.asm
-// Author: Vivek Kumar
-// Description: Save UV for 16x4 block through DATAPORT
-
-
-
-// FileName: UVCopy_Save_16x4.asm
-// Author: Vivek Kumar
-// Description: Save UV for 16x4 block through DATAPORT
-
-
-//Reuse the header from Load component
-
- mov (8) mudMSGHDR_UVCOPY(1)<1> udDNDI_UV_RESP(0)<8;8,1>
- send (8) null<1>:d r36 0x5 0x40A8019:ud
-
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
-
-
-.end_code
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/NV12_DNDI_PA.g4a b/src/shaders/post_processing/gen7/NV12_DNDI_PA.g4a
deleted file mode 100644
index 43bf7e0..0000000
--- a/src/shaders/post_processing/gen7/NV12_DNDI_PA.g4a
+++ /dev/null
@@ -1,517 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 86 // Total instruction count
-// 1 // Total kernel count
-
-.kernel NV12_DNDI_PA
-.code
-
-
-
-// FileName: DNDI_PL_Core.asm
-// Author: Tatiya, Rupesh
-
-
-
-// FileName: DNDI_Core.asm
-// Author: Vivek Kumar
-// Description: Tasks for DN+DI case (16x4 block)
-
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: DNDI.inc
-// Author: Vivek Kumar
-// Description: Include file for DN, DI and DNDI
-// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
-
-
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//====================== Binding table (Explicit To DNDI)=========================================
-
-
-.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
-.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
-.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
-
-
-.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
-.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
-.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
-.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
-.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
-.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
-.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
-.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
-
-//r45
-//Use r45 as message header, so no need to "mov" the data.
-
-.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
-.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-// Message response (UV Copy); Use buffer 5
-.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Temp GRFs: For 42X to 422 Conversion
-.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
-.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
- // Message descriptor for sampler read
- // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
- // 1 (header present 1) 0 11 (SIMD32/64 mode)
- // 1000 (message type) 0000 (DI state index)
- // 00000000 (binding table index - set later)
- // = 0x040b8000
-
-
-// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
-
-
-//---------------------------------------------------------------------------
-// VDI Return Data format
-//---------------------------------------------------------------------------
-// Defines for DI enabled
-
-
-// Defines for DI disabled
-
-
-
-// FileName: DNDI_Command.asm
-// Author: Vivek Kumar
-// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
-
-// Prepare the DNDI send command
-mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
-mov (1) mwMSGHDR_DNDI(1,4)<1> r9.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
-mov (1) mwMSGHDR_DNDI(1,12)<1> r9.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
-
-send (8) udDNDI_RESP(0)<1> r18 0x2 0x4BE8003:ud
-
-// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
-// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
-mov (2) r9.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
-
-
-
-// FileName: DI_STMM_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write STMM to memory
-mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
-mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
-
-shr (1) mudMSGHDR_STMM(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
-mov (1) mudMSGHDR_STMM(0,1)<1> r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
-mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
-
-send (8) null<1>:d r20 0x5 0x40A8021:ud
-
-
-
-// FileName: DN_Hist_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DN history data to statistics surface
-
-// Write denoise history to memory
-mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
-
- mov (1) mudMSGHDR_HIST(1)<1> udDNDI_RESP(9,0)<0;1,0> // Move denoise history to MRF (4x1)
-
-
-shr (2) r27.0<1>:ud r9.0<2;2,1>:w 2:w // X,Y origin / 4
-add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
-mov (1) r27.2<1>:ud 0x3:ud { NoDDChk } // block width and height
-
-mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
-send (8) null<1>:d r22 0x5 0x40A8021:ud
-
-
-
-// FileName: DNDI_Enc_Stats_Save.asm
-// Author: Vivek Kumar
-// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write encoder statistics to memory
-//Currently enable this only on Gen6 validation
-mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
-mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
-
-shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
-mul (1) acc0.1<1>:ud r9.1<0;1,0>:w 3:w // Y origin * 3
-shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
-mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
-add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
-
-
- //Data block for Encoder Statistics
- //----------------------------------------------------
- //| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
- //----------------------------------------------------
- //| BNE | MCNT | FCNT | TCNT | X | X | X | X |
- //----------------------------------------------------
- //| DcTpT | SVCM | DcBpT | DcTpB |
- //----------------------------------------------------
- //| SHCM | STAD | DcTcB | DcBpB |
- //----------------------------------------------------
- mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
-
-
-send (8) null<1>:d r24 0x5 0x40A8021:ud
-
-
-
-// FileName: DN_Load_UV_NV12_16x4.asm
-// Author: Vivek Kumar
-// Description: Read UV for 16x4 block through DATAPORT
-
-
-
-// FileName: UVCopy_Load_16x4.asm
-// Author: Vivek Kumar
-// Description: Read UV for 16x4 block through DATAPORT
-
-
- add (2) r27.0<1>:d r9.0<2;2,1>:w r4.4<2;2,1>:w // Source Y Block origin
- asr (1) r27.1<1>:d r27.1<0;1,0>:d 1:w { NoDDClr } // U/V block origin should be half of Y's
- mov (1) r27.2<1>:ud 0x1000F:ud { NoDDChk } // U/V block width and height (8x4)
- mov (8) mudMSGHDR_UVCOPY(0)<1> r27.0<8;8,1>:ud
- send (8) udDNDI_UV_RESP(0)<1> r36 0x4 0x2190001:ud
-
-
-
-// FileName: DN_Save_Y_16x4.asm
-// Author: Vivek Kumar
-// Description: Save one 16x4 blocks of Y channel of DN output for reference
-
-
- // check top/bottom field first
-cmp.e.f0.0 (1) null<1>:w r1.28<0;1,0>:ub 1:w
-
-mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
-mov (2) mdMSGHDR_DN_OUT(0,0)<1> r9.0<2;2,1>:w { NoDDClr } // X origin * 2 (422 output)
-mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x3000F:ud { NoDDChk } // block width and height (32x8)
-
-(f0.0) jmpi (1) TOP_FIELD_FIRST
-
-BOTTOM_FIELD_FIRST:
-
- mov (4) mudMSGHDR_DN_OUT(1,0)<1> udDNDI_RESP(10,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN_OUT(1,4)<1> udDNDI_RESP(4,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
- mov (4) mudMSGHDR_DN_OUT(2,0)<1> udDNDI_RESP(10,4)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN_OUT(2,4)<1> udDNDI_RESP(5,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
-
- jmpi (1) SAVE_DN_CURR
-
-TOP_FIELD_FIRST:
- mov (4) mudMSGHDR_DN_OUT(1,0)<1> udDNDI_RESP(4,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN_OUT(1,4)<1> udDNDI_RESP(10,0)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
- mov (4) mudMSGHDR_DN_OUT(2,0)<1> udDNDI_RESP(5,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN_OUT(2,4)<1> udDNDI_RESP(10,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
-
-SAVE_DN_CURR:
-//send out data through data port
-send (8) null<1>:d r31.0 0x5 0x60A8018:ud
-
-
-
-// FileName: DI_Save_PA_16x4.asm
-// Author: Vivek Kumar
-// Description: Save two 16x4 blocks of DI output in Packed format
-
-
-add (4) a0.4<1>:uw r2.28<4;4,1>:ub 608:w // Initial Y,U,V offset in YUV422 block; it starts at m20
-
-mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
-shl (1) r27.0<1>:d r9.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
-mov (1) r27.1<1>:d r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
-mov (1) r27.2<1>:ud 0x3001F:ud { NoDDChk } // Block width and height (32x8)
-
-//prepare the message headers
-mov (8) r18.0<1>:ud r27<8;8,1>:ud
-mov (8) r23.0<1>:ud r27<8;8,1>:ud
-
-// Pack 2nd field Y
- mov (16) r[a0.4, 0]<2> ubDNDI_RESP(0,0) { NoDDClr }
- mov (16) r[a0.4, 32]<2> ubDNDI_RESP(0,16) { NoDDClr }
- mov (16) r[a0.4, 64]<2> ubDNDI_RESP(0,32) { NoDDClr }
- mov (16) r[a0.4, 96]<2> ubDNDI_RESP(0,48) { NoDDClr }
-// Pack 2nd field U
- mov (8) r[a0.5, 0]<4> ubDNDI_RESP(2,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 32]<4> ubDNDI_RESP(2,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 64]<4> ubDNDI_RESP(2,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 96]<4> ubDNDI_RESP(2,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
-// Pack 2nd field V
- mov (8) r[a0.6, 0]<4> ubDNDI_RESP(2,0)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 32]<4> ubDNDI_RESP(2,16)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 64]<4> ubDNDI_RESP(2,32)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 96]<4> ubDNDI_RESP(2,48)<16;8,2> { NoDDChk } //Vpixels
-
-// Pack 1st field Y
- mov (16) r[a0.4, 160]<2> ubDNDI_RESP(4,0) { NoDDClr }
- mov (16) r[a0.4, 192]<2> ubDNDI_RESP(4,16) { NoDDClr }
- mov (16) r[a0.4, 224]<2> ubDNDI_RESP(4,32) { NoDDClr }
- mov (16) r[a0.4, 256]<2> ubDNDI_RESP(4,48) { NoDDClr }
-// Pack 1st field U
- mov (8) r[a0.5, 160]<4> ubDNDI_RESP(6,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 192]<4> ubDNDI_RESP(6,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 224]<4> ubDNDI_RESP(6,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 256]<4> ubDNDI_RESP(6,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
-// Pack 1st field V
- mov (8) r[a0.6, 160]<4> ubDNDI_RESP(6,0)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 192]<4> ubDNDI_RESP(6,16)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 224]<4> ubDNDI_RESP(6,32)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 256]<4> ubDNDI_RESP(6,48)<16;8,2> { NoDDChk } //Vpixels
-
-//save the previous frame
-send (8) null<1>:d r18.0 0x5 0xA0A801B:ud
-
-//save the current frame
-send (8) null<1>:d r23.0 0x5 0xA0A801E:ud
-
-
-
-// FileName: DN_Save_UV_NV12_16x4.asm
-// Author: Vivek Kumar
-// Description: Save UV for 16x4 block through DATAPORT
-
-
-
-// FileName: UVCopy_Save_16x4.asm
-// Author: Vivek Kumar
-// Description: Save UV for 16x4 block through DATAPORT
-
-
-//Reuse the header from Load component
-
- mov (8) mudMSGHDR_UVCOPY(1)<1> udDNDI_UV_RESP(0)<8;8,1>
- send (8) null<1>:d r36 0x5 0x40A8019:ud
-
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
-
-
-.end_code
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/NV12_DNUV_NV12.g4a b/src/shaders/post_processing/gen7/NV12_DNUV_NV12.g4a
deleted file mode 100644
index 73124c1..0000000
--- a/src/shaders/post_processing/gen7/NV12_DNUV_NV12.g4a
+++ /dev/null
@@ -1,2513 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 1153 // Total instruction count
-// 1 // Total kernel count
-
-
-.kernel NV12_DNUV_NV12
-.code
-
-
-
-//Module : DN_UV_Setup
-//Author : Tatiya, Rupesh
-//Description : Initial Set-up for DN_UV
-
-
-
-
-// Module name : ChromaDenoise.inc
-// Author : Tatiya, Rupesh
-
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//======================================================
-//Interface for serpent mode Chroma Denoise, added by Le
-//======================================================
-//r1
-
-
-//noise history thresholds (low and high)
-
-
-//temporal difference thresholds (high and low)
-
-
-//noise history thresholds (low and high)
-//#define ubNoiseHistMaxHigh r1.22
-//#define ubNoiseHistMaxLow r1.23
-//#define ubNoiseHistDeltaHigh r1.24
-//#define ubNoiseHistDeltaLow r1.25
-
-//Gaussian thresholds
-
-
-//temporal difference thresholds (default)
-
-
-//r2
-//history thresholds (default)
-
-
-//denoise factor (0-63)
-
-
-//====================== Binding table (Explicit To DNUV)=========================================
-//Used by DN_UV kernels
-
-
- //Pointer to Current Frame UV
-
-
-//r1-r6
- //CURBE GRFs used as TEMP : Used for max computation and storing max temporarily. : r1-r6
-
-
- .declare ubCURBE_TEMP Base=r1.0 ElementSize=1 Type=ub
- .declare uwCURBE_TEMP Base=r1.0 ElementSize=2 Type=uw
- .declare wCURBE_TEMP Base=r1.0 ElementSize=2 Type=w
- .declare fCURBE_TEMP Base=r1.0 ElementSize=4 Type=f
- .declare udCURBE_TEMP Base=r1.0 ElementSize=4 Type=ud
- .declare uwMAX_ABS_DIFF Base=r5.0 ElementSize=2 Type=uw
-
- //r1
-
-
- //r3
-
-
- //r4
-
-//r7
- //All of the following has to defined in Same GRF for optimal performance.
-
-
-//r8-24
- //Previous Frame UV
-
- .declare udPREV_UV Base=r8.0 ElementSize=4 Type=ud
- .declare ubPREV_UV Base=r8.0 ElementSize=1 Type=ub
-
-
-//r25-48
- //TEMP Space for any Usage.
-
-
-//=========================================================================
-//Definations and declarations for serpent mode Chroma Denoise, added by Le
-//=========================================================================
-
-
- .declare udGNE_UV Base=r24.0 ElementSize=4 Type=ud
- .declare fGNE_UV Base=r24.0 ElementSize=4 Type=f
- .declare ubGNE_UV Base=r24.0 ElementSize=1 Type=ub
-
- .declare udMSGHDR_BNE_SERP Base=r25.0 ElementSize=4 Type=ud
- .declare udMSGSRC_BNE_SERP Base=r26.0 ElementSize=4 Type=ud
-
-
- .declare ubDN_UV_Thresholds Base=r26.0 ElementSize=1 Type=ub
- .declare ubDN_UV_Thresholds_Temp Base=r27.0 ElementSize=1 Type=ub
- .declare udDN_UV_Thresholds Base=r26.0 ElementSize=4 Type=ud
- .declare udDN_UV_Thresholds_Temp Base=r27.0 ElementSize=4 Type=ud
- .declare fDN_UV_Thresholds Base=r26.0 ElementSize=4 Type=f
- .declare fDN_UV_Thresholds_Temp Base=r27.0 ElementSize=4 Type=f
-
-
-//====================================================================================
-
-
- //TEMP23: To hold V data for PL3 surfaces
- .declare udCURR_V_TEMP Base=r25.0 ElementSize=4 Type=ud
- .declare ubCURR_V_TEMP Base=r25.0 ElementSize=1 Type=ub
-
- //GRFs to calculate Median: r25-r42
- .declare ubMEDIAN_TEMP Base=r25.0 ElementSize=1 Type=ub
-
- //18 GRFs to hold difference : r25-r42
- .declare wDIFF Base=r25.0 ElementSize=2 Type=w
- .declare uwDIFF Base=r25.0 ElementSize=2 Type=uw
-
- //Temporal Diff
- .declare wDIFF_TEMPORAL Base=r25.0 ElementSize=2 Type=w
- .declare ubDIFF_TEMPORAL Base=r25.0 ElementSize=1 Type=ub
-
- //4 GRFs to hold Sobel Value : r43-46
- .declare wSOBEL_X Base=r43.0 ElementSize=2 Type=w
- .declare uwSOBEL Base=r43.0 ElementSize=2 Type=uw
-
-
- //2 GRFs to hold SOAD temporarily: r47-48
- .declare uwSOAD Base=r47.0 ElementSize=2 Type=uw
-
- //Temp GRFs to hold extra YUYV pixels: r43-r48
- .declare ubTEMP5 Base=r43.0 ElementSize=1 Type=ub
-
- //Temp GRFs in Median Calculation: r47-r48
- .declare ubTEMP1 Base=r47.0 ElementSize=1 Type=ub
-
- .declare uwTEMP0 Base=r48.0 ElementSize=2 Type=uw
- .declare ubTEMP0 Base=r48.0 ElementSize=1 Type=ub
-
- //Temp Space to store Median : r49-50
-
- .declare ubMEDIAN Base=r49.0 ElementSize=1 Type=ub
-
-//r49
-
-
-//r50
- //Message Source
-
-
-//r51
- //DN_UV History Surface
-
- .declare udHIST_UV Base=r51.0 ElementSize=4 Type=ud
- .declare ubHIST_UV Base=r51.0 ElementSize=1 Type=ub
-
-//r52 - r91
- //r52
- //Current Frame UV
-
-
- .declare udCURR_UV Base=r52.0 ElementSize=4 Type=ud
- .declare ubCURR_UV Base=r52.0 ElementSize=1 Type=ub
-
- //r54
- //CURBE COPY
-
-
- //r55
-
-
- .declare uwSOAD_MIN_8x4 Base=r56.0 ElementSize=2 Type=uw
-
- //r61
-
-
- //r62
-
-
- //History Surface Temp Origin
-
-
- //r63
- //Current Frame Y Temp Origin
-
-
- //BNE Surface Origin
-
-
- //r70
-
- .declare uwDIFF_TEMPORAL_SUM4x4 Base=r70.0 ElementSize=2 Type=uw //4 GRFs
-
- //r74-91 : For Saving Dest UV (PL2/PL3)
-
-
- .declare ubMSGPAYLOAD_UV0 Base=r75.0 ElementSize=1 Type=ub
-
-
- .declare ubMSGPAYLOAD_U Base=r75.0 ElementSize=1 Type=ub
-
-
- .declare ubMSGPAYLOAD_UV1 Base=r84.0 ElementSize=1 Type=ub
-
-
- .declare ubMSGPAYLOAD_V Base=r84.0 ElementSize=1 Type=ub
-
- //r90
-
- .declare uwDIFF_TEMPORAL_SUM4x4_FINAL Base=r90.0 ElementSize=2 Type=uw //2 GRFs
-
-//r92-127
- //Current Frame Y
-
-
- //r92
- .declare uwDIFF_TEMPORAL_SUM4x4_TEMP_0 Base=r92 ElementSize=2 Type=uw
- //r101
- .declare uwDIFF_TEMPORAL_SUM4x4_TEMP_1 Base=r101 ElementSize=2 Type=uw
- //r110
- .declare uwDIFF_TEMPORAL_SUM4x4_TEMP_2 Base=r110 ElementSize=2 Type=uw
- //r119
- .declare uwDIFF_TEMPORAL_SUM4x4_TEMP_3 Base=r119 ElementSize=2 Type=uw
-
- .declare udCURR_Y0 Base=r93.0 ElementSize=4 Type=ud
- .declare ubCURR_Y0 Base=r93.0 ElementSize=1 Type=ub
- .declare udCURR_Y1 Base=r102.0 ElementSize=4 Type=ud
- .declare ubCURR_Y1 Base=r102.0 ElementSize=1 Type=ub
- .declare udCURR_Y2 Base=r111.0 ElementSize=4 Type=ud
- .declare ubCURR_Y2 Base=r111.0 ElementSize=1 Type=ub
- .declare udCURR_Y3 Base=r120.0 ElementSize=4 Type=ud
- .declare ubCURR_Y3 Base=r120.0 ElementSize=1 Type=ub
-
- //r92: To hold U data for PL3 surfaces
- .declare udCURR_U_TEMP Base=r92.0 ElementSize=4 Type=ud
- .declare ubCURR_U_TEMP Base=r92.0 ElementSize=1 Type=ub
-
- //r112: To hold U data for PL3 surfaces
- .declare udPREV_U_TEMP Base=r112.0 ElementSize=4 Type=ud
- .declare ubPREV_U_TEMP Base=r112.0 ElementSize=1 Type=ub
-
- //r120: To hold U data for PL3 surfaces
- .declare udPREV_V_TEMP Base=r120.0 ElementSize=4 Type=ud
- .declare ubPREV_V_TEMP Base=r120.0 ElementSize=1 Type=ub
-
-
- // Initialize message source with r0.
- mov (8) r50.0<1>:ud r0.0<8;8,1>:ud
- mov (8) r92.0<1>:ud r0.0<8;8,1>:ud
- mov (8) r101.0<1>:ud r0.0<8;8,1>:ud
- mov (8) r110.0<1>:ud r0.0<8;8,1>:ud
- mov (8) r119.0<1>:ud r0.0<8;8,1>:ud
-
-
-
-//Module Name : DN_UV_PL2_Load_Curr_Frame_UV
-//Author : Tatiya, Rupesh
-//Description : Loads Current Frame UV data for PL2 input.
-
-
-
-//Module name : DN_UV_Load_Curr_Frame_UV
-//Author : Tatiya, Rupesh
-//Description : Loads Current Frame (UV only).
-// We need 4 extra rows (2 per field) and 2 extra pixel (1 each side) for both U and V each.
-// The processing size is 16x16 U and V each. So we need : U size - 18x20, V size - 18x20, UV size - 36x20, YUYV size - 72x20.
-
-
-
-
-//36x20 interleaved UV block is partitioned as follows:
-// <------ 18 --------> <--------18 ------->
-// -----------------------------------------
-// | 20x8 A !| 20x8 D !
-// | (overlapped) !| (overlapped) !
-// |-------------------!|------------------!
-// | 20x8 B !| 20x8 E !
-// | (overlapped) !| (overlapped) !
-// |-------------------!|------------------!
-// | 20x4 C !| 20x4 F !
-// | (overlapped) !| (overlapped) !
-// -----------------------------------------
-//
-// Cordinates: (x-2, y-2), (x+14, y-2), (x-2, y+6), (x+14, y+6), (x-2, y+14), (x+14, y+14)
-
- //UV surface origin: (ORIX, ORIY/2)
- add (2) r9.4<1>:w r9.0<2;2,1>:w r4.4<2;2,1>:w { AccWrEn } // Source Block origin
- shr (1) r9.5<1>:w acc0.5<0;1,0>:w 1:w
- mov (2) acc0.0<1>:d r9.4<2;2,1>:w
-
- //A
- add (2) r50.0<1>:d acc0.0<2;2,1>:d -2:d { AccWrEn }
- mov (1) r50.2<1>:ud 0x70013:ud
- send (8) udCURR_UV(0)<1> r50 0x4 0x2890004:ud
-
- //B
- add (1) r50.1<1>:d acc0.1<0;1,0>:d 8:d
- send (8) udCURR_UV(8)<1> r50 0x4 0x2890004:ud
-
- //C
- add (1) r50.1<1>:d acc0.1<0;1,0>:d 16:d
- mov (1) r50.2<1>:ud 0x30013:ud
- send (8) udCURR_UV(16)<1> r50 0x4 0x2490004:ud
-
- //D
- add (1) r50.0<1>:d acc0.0<0;1,0>:d 16:d { AccWrEn }
- mov (1) r50.1<1>:d acc0.1<0;1,0>:d
- mov (1) r50.2<1>:ud 0x70013:ud
- send (8) udCURR_UV(20)<1> r50 0x4 0x2890004:ud
-
- //E
- add (1) r50.1<1>:d acc0.1<0;1,0>:d 8:d
- send (8) udCURR_UV(28)<1> r50 0x4 0x2890004:ud
-
- //F
- add (1) r50.1<1>:d acc0.1<0;1,0>:d 16:d
- mov (1) r50.2<1>:ud 0x30013:ud
- send (8) udCURR_UV(36)<1> r50 0x4 0x2490004:ud
-
- //History Origin, Current Y origin and BNE surface origin - all are in inline GRF. Use , . -rT.
-
- //Calculate Origin For History Surface: (ORIX/4, ORIY/8)
- mov (16) acc0.0<1>:w r9.0<0;2,1>:w
- shr (1) r9.2<1>:w acc0.2<0;1,0>:w 2:w
- shr (1) r9.3<1>:w acc0.3<0;1,0>:w 3:w
-
- //Calculate Origin For BNE Surface: (ORIX/8, ORIY/16)
- shr (1) r9.6<1>:w acc0.6<0;1,0>:w 3:w
- shr (1) r9.7<1>:w acc0.7<0;1,0>:w 4:w
-
-
-
-//Module Name : DN_UV_PL2_Load_Prev_Frame_UV
-//Author : Tatiya, Rupesh
-//Description : Loads Pevious Frame UV data for PL2 input.
-
-
-
-//Module Name : DN_UV_Load_Prev_Frame_UV
-//Author : Tatiya, Rupesh
-//Description : Loads Prev Frame (UV only). U size - 16x16, V size - 16x16, UV size - 32x16, YUYV size - 64x16.
-
-
-
-
- mov (2) r50.0<1>:d r9.4<2;2,1>:w { AccWrEn } // Source lock origin
- mov (1) r50.2<1>:ud 0xF000F:ud // U/V block width and height (16x16)
- send (8) udPREV_UV(0)<1> r50 0x4 0x2890001:ud
-
- add (1) r50.0<1>:ud acc0.0<0;1,0>:d 16:w // Add 16 to X origin
- send (8) udPREV_UV(8)<1> r50 0x4 0x2890001:ud
-
-
- //TODO - See if History loading can be combined with Prev Frame Load. - rT
-
-
-//Module name : DN_UV_Load_Hist_UV
-//Author : Tatiya, Rupesh
-//Description : Load DN History for UV denoise. 4x4 for each U & V.
-
-
-
-
- mov (2) r50.0<1>:d r9.2<2;2,1>:w
- mov (1) r50.2<1>:ud 0x30007:ud
- send (8) udHIST_UV(0)<1> r50 0x4 0x2190022:ud
-
-
-
-//Module Name : DN_UV_420_Load_Curr_Frame_Y
-//Author : Tatiya, Rupesh
-//Description : Load Curr Frame Y data for 420 Input
-
-
-
-//Module Name : DN_UV_Load_Curr_Frame_Y
-//Author : Tatiya, Rupesh
-//Description : Loads Y of Current frame.
-
-
-
-
- //For 16x16 U and 16x16 V for 420, we need to read 32x32 Y.
-
- mov (8) acc0.0<1>:ud r0.0<8;8,1>:ud
- mov (1) acc0.2<1>:ud 0xF000F:ud
- add (2) acc0.0<1>:ud r9.0<2;2,1>:w r4.4<2;2,1>:w
-
- mov (8) r92.0<1>:ud acc0.0<8;8,1>:ud
-
- mov (8) r101.0<1>:ud acc0.0<8;8,1>:ud
- mov (8) r110.0<1>:ud acc0.0<8;8,1>:ud
- mov (8) r119.0<1>:ud acc0.0<8;8,1>:ud
-
- add (1) r101.1<1>:d acc0.1<0;1,0>:d 16:d
-
- add (1) r110.0<1>:d acc0.0<0;1,0>:d 16:d
-
- add (2) r119.0<1>:d acc0.0<2;2,1>:d 16:d
-
- send (8) udCURR_Y0(0)<1> r92 0x4 0x2890003:ud
- send (8) udCURR_Y1(0)<1> r101 0x4 0x2890003:ud
- send (8) udCURR_Y2(0)<1> r110 0x4 0x2890003:ud
- send (8) udCURR_Y3(0)<1> r119 0x4 0x2890003:ud
-
-
-
-//Module Name : DN_UV_Noise_Detection_UV
-//Author : Tatiya, Rupesh
-//Description : Performs noise detection on 16x16 U and 16x16 V each.
-
-
-
-//Module Name : DN_UV_Move_CURBE_Inline_UV.asm
-//Author : Tatiya, Rupesh
-
-
-
-
- //Mov CURBE data to another space - so that it can be used as Temp Space --> r1 - r6
- mov (4) r54.28<1>:ub r2.28<4;4,1>:ub //Dest. YUY2 offset
- mov (2) r54.5<1>:ud r4.0<4;2,2>:ud //Src YUY2 offset and Origin offset
- mov (4) r55.28<1>:ub r1.0<4;4,1>:ub
-
- mov (8) r61.20<1>:ub r1.4<8;8,1>:ub
- mov (4) r61.28<1>:ub r1.12<4;4,1>:ub
-
- //Move Inline Data to another space - so that it can be used as Temp Space --> r7
- mov (4) r62.10<1>:w r9.0<4;4,1>:w
- mov (4) r63.10<1>:w r9.4<4;4,1>:w
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- mov (1) a0.0:uw 1664:uw
- mov (1) a0.1:uw 1816:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- //TODO - remove one instruction here using arithmatic. -rT
- mov (1) a0.0:uw 1792:uw
- mov (1) a0.1:uw 1820:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- //TODO - remove one instruction here using arithmatic. -rT
- mov (1) a0.0:uw 1920:uw
- mov (1) a0.1:uw 1848:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- //TODO - remove one instruction here using arithmatic. -rT
- mov (1) a0.0:uw 2048:uw
- mov (1) a0.1:uw 1852:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- mov (1) a0.0:uw 2304:uw
- mov (1) a0.1:uw 1880:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- //TODO - remove one instruction here using arithmatic. -rT
- mov (1) a0.0:uw 2432:uw
- mov (1) a0.1:uw 1884:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- //TODO - remove one instruction here using arithmatic. -rT
- mov (1) a0.0:uw 2560:uw
- mov (1) a0.1:uw 1912:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- //TODO - remove one instruction here using arithmatic. -rT
- mov (1) a0.0:uw 2688:uw
- mov (1) a0.1:uw 1916:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-//Module : DN_UV_Noise_Reduction_UV
-//Author : Tatiya, Rupesh
-//Description : Performs Noise Reduction on 16x16 U and 16x16 V.
-//Tasks : 1. Update weight history
-// 2. Find if it block is motion block
-// 3. Compute Denoised Pixel.
-
-
-
-
-//History is 1+1 byte every 4x4 U and 4x4 V.
-
- cmp.l.f0.0 (16) null<1>:w ubHIST_UV(0,0)<16;16,1> r61.20<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w ubHIST_UV(0,0)<16;16,1> r61.22<0;2,1>:ub
-
- mov (16) uwCURBE_TEMP(0)<1> 0:w
- mov (16) uwCURBE_TEMP(1)<1> 0:w
-
- //Compute diff betn curr and prev. - First 16 lines
- // 8 lines here
- add (16) wDIFF_TEMPORAL(0)<1> ubCURR_UV(2,2)<16;16,1> -ubPREV_UV(0,0)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(1)<1> ubCURR_UV(3,2)<16;16,1> -ubPREV_UV(0,16)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(2)<1> ubCURR_UV(4,2)<16;16,1> -ubPREV_UV(0,32)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(3)<1> ubCURR_UV(5,2)<16;16,1> -ubPREV_UV(0,48)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(4)<1> ubCURR_UV(6,2)<16;16,1> -ubPREV_UV(0,64)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(5)<1> ubCURR_UV(7,2)<16;16,1> -ubPREV_UV(0,80)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(6)<1> ubCURR_UV(8,2)<16;16,1> -ubPREV_UV(0,96)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(7)<1> ubCURR_UV(9,2)<16;16,1> -ubPREV_UV(0,112)<16;16,1> //Diff UV interleaved
-
- //Update WT HIST
- (-f0.0) shr (16) uwCURBE_TEMP(0)<1> ubHIST_UV(0,0)<16;16,1> 1:w
- (f1.0) add (16) uwCURBE_TEMP(2)<1> ubHIST_UV(0,0)<16;16,1> r61.24<0;2,1>:ub
- (f0.0) mov (16) uwCURBE_TEMP(2)<1> r61.20<0;2,1>:ub
- (-f0.0.anyv) mov (16) uwCURBE_TEMP(2)<1> ubHIST_UV(0,0)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w ubHIST_UV(0,16)<16;16,1> r61.20<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w ubHIST_UV(0,16)<16;16,1> r61.22<0;2,1>:ub
-
- //Compute diff betn curr and prev. - First 16 lines
- // 8 more lines here
- add (16) wDIFF_TEMPORAL(8)<1> ubCURR_UV(10,2)<16;16,1> -ubPREV_UV(0,128)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(9)<1> ubCURR_UV(11,2)<16;16,1> -ubPREV_UV(0,144)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(10)<1> ubCURR_UV(12,2)<16;16,1> -ubPREV_UV(0,160)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(11)<1> ubCURR_UV(13,2)<16;16,1> -ubPREV_UV(0,176)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(12)<1> ubCURR_UV(14,2)<16;16,1> -ubPREV_UV(0,192)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(13)<1> ubCURR_UV(15,2)<16;16,1> -ubPREV_UV(0,208)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(14)<1> ubCURR_UV(16,2)<16;16,1> -ubPREV_UV(0,224)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(15)<1> ubCURR_UV(17,2)<16;16,1> -ubPREV_UV(0,240)<16;16,1> //Diff UV interleaved
-
- (-f0.0) shr (16) uwCURBE_TEMP(1)<1> ubHIST_UV(0,16)<16;16,1> 1:w
- (f1.0) add (16) uwCURBE_TEMP(3)<1> ubHIST_UV(0,16)<16;16,1> r61.24<0;2,1>:ub
- (f0.0) mov (16) uwCURBE_TEMP(3)<1> r61.20<0;2,1>:ub
- (-f0.0.anyv) mov(16) uwCURBE_TEMP(3)<1> ubHIST_UV(0,16)<16;16,1>
-
- //16x16 to 16x4 - First 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(0)<16;16,1> (abs)wDIFF_TEMPORAL(1)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(2)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(3)<16;16,1>
- //16x16 to 16x4 - First 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(4)<16;16,1> (abs)wDIFF_TEMPORAL(5)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(6)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(7)<16;16,1>
- //16x16 to 16x4 - First 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(8)<16;16,1> (abs)wDIFF_TEMPORAL(9)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(10)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(2)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(11)<16;16,1>
- //16x16 to 16x4 - First 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(12)<16;16,1> (abs)wDIFF_TEMPORAL(13)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(14)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(3)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(15)<16;16,1>
-
-//Compute diff betn curr and prev. - Second 16 lines
-//13 lines.
- add (16) wDIFF_TEMPORAL(16)<1> ubCURR_UV(22,2)<16;16,1> -ubPREV_UV(8,0)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(17)<1> ubCURR_UV(23,2)<16;16,1> -ubPREV_UV(8,16)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(18)<1> ubCURR_UV(24,2)<16;16,1> -ubPREV_UV(8,32)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(19)<1> ubCURR_UV(25,2)<16;16,1> -ubPREV_UV(8,48)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(20)<1> ubCURR_UV(26,2)<16;16,1> -ubPREV_UV(8,64)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(21)<1> ubCURR_UV(27,2)<16;16,1> -ubPREV_UV(8,80)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(22)<1> ubCURR_UV(28,2)<16;16,1> -ubPREV_UV(8,96)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(23)<1> ubCURR_UV(29,2)<16;16,1> -ubPREV_UV(8,112)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(24)<1> ubCURR_UV(30,2)<16;16,1> -ubPREV_UV(8,128)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(25)<1> ubCURR_UV(31,2)<16;16,1> -ubPREV_UV(8,144)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(26)<1> ubCURR_UV(32,2)<16;16,1> -ubPREV_UV(8,160)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(27)<1> ubCURR_UV(33,2)<16;16,1> -ubPREV_UV(8,176)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(28)<1> ubCURR_UV(34,2)<16;16,1> -ubPREV_UV(8,192)<16;16,1> //Diff UV interleaved
-
-//3 more lines
- add (16) wCURBE_TEMP(4)<1> ubCURR_UV(35,2)<16;16,1> -ubPREV_UV(8,208)<16;16,1> //Diff UV interleaved
- add (16) wCURBE_TEMP(5)<1> ubCURR_UV(36,2)<16;16,1> -ubPREV_UV(8,224)<16;16,1> //Diff UV interleaved
- add (16) wCURBE_TEMP(6)<1> ubCURR_UV(37,2)<16;16,1> -ubPREV_UV(8,240)<16;16,1> //Diff UV interleaved
-
- //16x4 to 8x4 - First 16 lines
- add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> uwDIFF_TEMPORAL_SUM4x4(2,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(2,2)<4;2,1>
-
- //8x4 to 4x4 - First 16 lines
- add (16) uwDIFF_TEMPORAL_SUM4x4_FINAL(0)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1> { AccWrEn }
-
- //16x16 to 16x4 - Second 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(16)<16;16,1> (abs)wDIFF_TEMPORAL(17)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(18)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(19)<16;16,1>
- //16x16 to 16x4 - Second 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(20)<16;16,1> (abs)wDIFF_TEMPORAL(21)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(22)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(23)<16;16,1>
- //16x16 to 16x4 - Second 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(24)<16;16,1> (abs)wDIFF_TEMPORAL(25)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(26)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(2)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(27)<16;16,1>
-
- //16x16 to 16x4 - Second 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(28)<16;16,1> (abs)wCURBE_TEMP(4)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wCURBE_TEMP(5)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(3)<1> acc0.0<16;16,1>:uw (abs)wCURBE_TEMP(6)<16;16,1>
-
- //Find if block is motion block - First 16 lines
- cmp.g.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_FINAL(0)<16;16,1> r61.26<0;2,1>:ub
-
- //Move TEMPORAL_SUM4x4 for SIMD16 use later.
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,0)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,2)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,4)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,6)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,8)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,10)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,12)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,14)<0;2,1>
-
- //Pick Appropriate Weight History Based on motion. - First 16 lines
- (-f0.0) mov (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(2)<16;16,1>
-
- //Actual DN - First 16 lines
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(0)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(0)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(2,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(2,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(2,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,0)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,8)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(0)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(0)<1> ubCURR_UV(2,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(0)<1> wDIFF_TEMPORAL(0)<16;16,1> ubCURR_UV(2,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(1)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(1)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(3,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(3,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(3,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,16)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,24)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(1)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(1)<1> ubCURR_UV(3,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(1)<1> wDIFF_TEMPORAL(1)<16;16,1> ubCURR_UV(3,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(2)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(2)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(4,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(4,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(4,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,32)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,40)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(2)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(2)<1> ubCURR_UV(4,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(2)<1> wDIFF_TEMPORAL(2)<16;16,1> ubCURR_UV(4,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(3)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(3)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(5,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(5,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(5,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,48)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,56)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(3)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(3)<1> ubCURR_UV(5,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(3)<1> wDIFF_TEMPORAL(3)<16;16,1> ubCURR_UV(5,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(4)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(4)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(6,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(6,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(6,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,64)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,72)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(4)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(4)<1> ubCURR_UV(6,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(4)<1> wDIFF_TEMPORAL(4)<16;16,1> ubCURR_UV(6,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(5)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(5)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(7,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(7,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(7,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,80)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,88)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(5)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(5)<1> ubCURR_UV(7,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(5)<1> wDIFF_TEMPORAL(5)<16;16,1> ubCURR_UV(7,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(6)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(6)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(8,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(8,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(8,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,96)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,104)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(6)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(6)<1> ubCURR_UV(8,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(6)<1> wDIFF_TEMPORAL(6)<16;16,1> ubCURR_UV(8,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(7)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(7)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(9,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(9,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(9,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,112)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,120)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(7)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(7)<1> ubCURR_UV(9,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(7)<1> wDIFF_TEMPORAL(7)<16;16,1> ubCURR_UV(9,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(8)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(8)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(10,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(10,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(10,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,128)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,136)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(8)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(8)<1> ubCURR_UV(10,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(8)<1> wDIFF_TEMPORAL(8)<16;16,1> ubCURR_UV(10,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(9)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(9)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(11,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(11,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(11,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,144)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,152)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(9)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(9)<1> ubCURR_UV(11,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(9)<1> wDIFF_TEMPORAL(9)<16;16,1> ubCURR_UV(11,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(10)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(10)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(12,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(12,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(12,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,160)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,168)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(10)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(10)<1> ubCURR_UV(12,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(10)<1> wDIFF_TEMPORAL(10)<16;16,1> ubCURR_UV(12,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(11)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(11)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(13,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(13,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(13,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,176)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,184)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(11)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(11)<1> ubCURR_UV(13,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(11)<1> wDIFF_TEMPORAL(11)<16;16,1> ubCURR_UV(13,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(12)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(12)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(14,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(14,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(14,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,192)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,200)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(12)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(12)<1> ubCURR_UV(14,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(12)<1> wDIFF_TEMPORAL(12)<16;16,1> ubCURR_UV(14,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(13)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(13)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(15,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(15,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(15,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,208)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,216)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(13)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(13)<1> ubCURR_UV(15,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(13)<1> wDIFF_TEMPORAL(13)<16;16,1> ubCURR_UV(15,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(14)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(14)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(16,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(16,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(16,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,224)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,232)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(14)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(14)<1> ubCURR_UV(16,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(14)<1> wDIFF_TEMPORAL(14)<16;16,1> ubCURR_UV(16,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(15)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(15)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(17,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(17,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(17,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,240)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,248)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(15)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(15)<1> ubCURR_UV(17,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(15)<1> wDIFF_TEMPORAL(15)<16;16,1> ubCURR_UV(17,2)<16;16,1>
-
-
- //16x4 to 8x4 - Second 16 lines
- add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> uwDIFF_TEMPORAL_SUM4x4(2,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(2,2)<4;2,1>
-
- //8x4 to 4x4 - Second 16 lines
- add (16) uwDIFF_TEMPORAL_SUM4x4_FINAL(1)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1> { AccWrEn }
-
- //Find if block is motion block - Second 16 lines
- cmp.g.f1.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_FINAL(1)<16;16,1> r61.26<0;2,1>:ub
-
- //Move TEMPORAL_SUM4x4 for SIMD16 use later.
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,0)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,2)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,4)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,6)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,8)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,10)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,12)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,14)<0;2,1>
-
- //Pick Appropriate Weight History Based on motion. - Second 16 lines
- (-f1.0) mov (16) uwCURBE_TEMP(1)<1> uwCURBE_TEMP(3)<16;16,1>
-
- //Actual DN - Second 16 lines
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(16)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(16)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(22,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(22,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(22,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,0)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,8)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(16)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(16)<1> ubCURR_UV(22,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(16)<1> wDIFF_TEMPORAL(16)<16;16,1> ubCURR_UV(22,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(17)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(17)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(23,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(23,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(23,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,16)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,24)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(17)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(17)<1> ubCURR_UV(23,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(17)<1> wDIFF_TEMPORAL(17)<16;16,1> ubCURR_UV(23,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(18)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(18)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(24,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(24,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(24,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,32)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,40)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(18)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(18)<1> ubCURR_UV(24,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(18)<1> wDIFF_TEMPORAL(18)<16;16,1> ubCURR_UV(24,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(19)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(19)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(25,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(25,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(25,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,48)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,56)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(19)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(19)<1> ubCURR_UV(25,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(19)<1> wDIFF_TEMPORAL(19)<16;16,1> ubCURR_UV(25,2)<16;16,1>
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(20)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(20)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(26,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(26,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(26,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,64)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,72)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(20)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(20)<1> ubCURR_UV(26,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(20)<1> wDIFF_TEMPORAL(20)<16;16,1> ubCURR_UV(26,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(21)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(21)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(27,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(27,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(27,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,80)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,88)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(21)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(21)<1> ubCURR_UV(27,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(21)<1> wDIFF_TEMPORAL(21)<16;16,1> ubCURR_UV(27,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(22)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(22)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(28,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(28,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(28,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,96)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,104)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(22)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(22)<1> ubCURR_UV(28,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(22)<1> wDIFF_TEMPORAL(22)<16;16,1> ubCURR_UV(28,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(23)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(23)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(29,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(29,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(29,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,112)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,120)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(23)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(23)<1> ubCURR_UV(29,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(23)<1> wDIFF_TEMPORAL(23)<16;16,1> ubCURR_UV(29,2)<16;16,1>
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(24)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(24)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(30,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(30,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(30,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,128)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,136)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(24)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(24)<1> ubCURR_UV(30,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(24)<1> wDIFF_TEMPORAL(24)<16;16,1> ubCURR_UV(30,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(25)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(25)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(31,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(31,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(31,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,144)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,152)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(25)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(25)<1> ubCURR_UV(31,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(25)<1> wDIFF_TEMPORAL(25)<16;16,1> ubCURR_UV(31,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(26)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(26)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(32,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(32,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(32,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,160)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,168)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(26)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(26)<1> ubCURR_UV(32,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(26)<1> wDIFF_TEMPORAL(26)<16;16,1> ubCURR_UV(32,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(27)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(27)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(33,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(33,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(33,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,176)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,184)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(27)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(27)<1> ubCURR_UV(33,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(27)<1> wDIFF_TEMPORAL(27)<16;16,1> ubCURR_UV(33,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(28)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(28)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(34,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(34,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(34,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,192)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,200)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(28)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(28)<1> ubCURR_UV(34,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(28)<1> wDIFF_TEMPORAL(28)<16;16,1> ubCURR_UV(34,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wCURBE_TEMP(4)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wCURBE_TEMP(4)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(35,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(35,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(35,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,208)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,216)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wCURBE_TEMP(4)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wCURBE_TEMP(4)<1> ubCURR_UV(35,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wCURBE_TEMP(4)<1> wCURBE_TEMP(4)<16;16,1> ubCURR_UV(35,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wCURBE_TEMP(5)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wCURBE_TEMP(5)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(36,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(36,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(36,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,224)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,232)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wCURBE_TEMP(5)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wCURBE_TEMP(5)<1> ubCURR_UV(36,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wCURBE_TEMP(5)<1> wCURBE_TEMP(5)<16;16,1> ubCURR_UV(36,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wCURBE_TEMP(6)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wCURBE_TEMP(6)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(37,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(37,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(37,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,240)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,248)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wCURBE_TEMP(6)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wCURBE_TEMP(6)<1> ubCURR_UV(37,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wCURBE_TEMP(6)<1> wCURBE_TEMP(6)<16;16,1> ubCURR_UV(37,2)<16;16,1>
-
- //Pack Weight History WORD -> BYTE
- mov (16) ubCURBE_TEMP(3,0)<1> ubCURBE_TEMP(0)<32;16,2>
- mov (16) ubCURBE_TEMP(3,16)<1> ubCURBE_TEMP(1)<32;16,2>
-
-
-
-//Module Name : DN_UV_Compute_BNE_UV
-//Author : Tatiya, Rupesh
-//Description : Computes minimum SOAD for each 16x4 block.
-
- cmp.l.f0.0 (8) null:w uwSOAD_MIN_8x4(0,12)<16;4,1> uwSOAD_MIN_8x4(2,12)<16;4,1>
- (f0.0)sel (8) uwCURBE_TEMP(1,0)<1> uwSOAD_MIN_8x4(0,12)<16;4,1> uwSOAD_MIN_8x4(2,12)<16;4,1>
-
- mov (8) ubCURBE_TEMP(1)<1> ubCURBE_TEMP(1)<16;8,2>
-
-
-
-//Module Name : DN_UV_PL2_Pack_Denoised_UV
-//Name : Tatiya, Rupesh
-//Description : Pack UV denoised data based on PL2 input.
-
-
-
-//Module Name : DN_UV_Pack_Denoised_UV
-//Name : Tatiya, Rupesh
-//Description : Pack UV denoised data based on PL2/PL3/PA.
-
-
-//First 16 lines.
- mov (16) ubMSGPAYLOAD_UV0(0,0)<1> ubDIFF_TEMPORAL(0)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV0(0,16)<1> ubDIFF_TEMPORAL(1)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV0(1,0)<1> ubDIFF_TEMPORAL(2)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV0(1,16)<1> ubDIFF_TEMPORAL(3)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV0(2,0)<1> ubDIFF_TEMPORAL(4)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV0(2,16)<1> ubDIFF_TEMPORAL(5)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV0(3,0)<1> ubDIFF_TEMPORAL(6)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV0(3,16)<1> ubDIFF_TEMPORAL(7)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV0(4,0)<1> ubDIFF_TEMPORAL(8)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV0(4,16)<1> ubDIFF_TEMPORAL(9)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV0(5,0)<1> ubDIFF_TEMPORAL(10)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV0(5,16)<1> ubDIFF_TEMPORAL(11)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV0(6,0)<1> ubDIFF_TEMPORAL(12)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV0(6,16)<1> ubDIFF_TEMPORAL(13)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV0(7,0)<1> ubDIFF_TEMPORAL(14)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV0(7,16)<1> ubDIFF_TEMPORAL(15)<32;16,2>
-
-//Second 16 lines.
-//12 lines first
- mov (16) ubMSGPAYLOAD_UV1(0,0)<1> ubDIFF_TEMPORAL(16)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV1(0,16)<1> ubDIFF_TEMPORAL(17)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV1(1,0)<1> ubDIFF_TEMPORAL(18)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV1(1,16)<1> ubDIFF_TEMPORAL(19)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV1(2,0)<1> ubDIFF_TEMPORAL(20)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV1(2,16)<1> ubDIFF_TEMPORAL(21)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV1(3,0)<1> ubDIFF_TEMPORAL(22)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV1(3,16)<1> ubDIFF_TEMPORAL(23)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV1(4,0)<1> ubDIFF_TEMPORAL(24)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV1(4,16)<1> ubDIFF_TEMPORAL(25)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV1(5,0)<1> ubDIFF_TEMPORAL(26)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV1(5,16)<1> ubDIFF_TEMPORAL(27)<32;16,2>
-
- //3 lines next
- mov (16) ubMSGPAYLOAD_UV1(6,0)<1> ubDIFF_TEMPORAL(28)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV1(6,16)<1> ubCURBE_TEMP(4)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV1(7,0)<1> ubCURBE_TEMP(5)<32;16,2>
- mov (16) ubMSGPAYLOAD_UV1(7,16)<1> ubCURBE_TEMP(6)<32;16,2>
-
-
-
-//Module Name : DN_UV_420_Save_Curr_Frame_Y
-//Author : Tatiya, Rupesh
-//Description : Save Curr Frame Y data for 420 Input
-
-
-
-//Module Name : DN_UV_Load_Curr_Frame_Y
-//Author : Tatiya, Rupesh
-//Description : Saves Y or YUY2 of Current frame.
-
-
-
-
- mov (8) acc0.0<1>:ud r0.0<8;8,1>:ud
- mov (2) acc0.0<1>:d r62.10<2;2,1>:w
-
- mov (1) acc0.2<1>:d 0xF000F:ud
-
- mov (8) r92.0<1>:ud acc0.0<8;8,1>:ud
-
- mov (8) r101.0<1>:ud acc0.0<8;8,1>:ud
- mov (8) r110.0<1>:ud acc0.0<8;8,1>:ud
- mov (8) r119.0<1>:ud acc0.0<8;8,1>:ud
-
- add (1) r101.1<1>:d acc0.1<0;1,0>:d 16:d
-
- add (1) r110.0<1>:d acc0.0<0;1,0>:d 16:d
-
- add (2) r119.0<1>:d acc0.0<2;2,1>:d 16:d
-
- send (8) null<1>:d r92 0x5 0x120A8018:ud
- send (8) null<1>:d r101 0x5 0x120A8018:ud
- send (8) null<1>:d r110 0x5 0x120A8018:ud
- send (8) null<1>:d r119 0x5 0x120A8018:ud
-
-
- //TODO - See if History saving can be combined with Curr Frame Save. - rT
-
-
-//Module Name : DN_UV_Save_Hist_UV
-//Author : Tatiya, Rupesh
-//Description : Saves DN history for UV data.
-
- mov (8) r3.0<1>:ud r0.0<8;8,1>:ud
- mov (2) r3.0<1>:d r62.12<2;2,1>:w
- mov (1) r3.2<1>:d 0x30007:ud
-
- send (8) null<1>:d r3 0x5 0x40A8021:ud
-
-
-
-//Module Name : DN_UV_Save_BNE_UV
-//Author : Tatiya, Rupesh
-//Description : Saves BNE values for 16x16 U and 16x16 V.
-
- mov (8) r1.0<1>:ud r0.0<8;8,1>:ud
- mov (2) r1.0<1>:d r63.12<2;2,1>:w
- mov (1) r1.2<1>:d 0x10003:ud
-
- send (8) null<1>:d r1 0x5 0x40A8023:ud
-
-
-
-//Module Name : DN_UV_PL2_Save_Curr_Frame_UV
-//Author : Tatiya, Rupesh
-
-
-
-//Module name : DN_UV_Save_Curr_Frame_UV
-//Author : Tatiya, Rupesh
-//Description : Saves Current Frame (UV only).
-
-
-
-
- mov (8) r74<1>:ud r0.0<8;8,1>:ud
- mov (8) r83<1>:ud r0.0<8;8,1>:ud
-
- mov (1) r74.0<1>:d r62.10<0;1,0>:w
- shr (1) r74.1<1>:d r62.11<0;1,0>:w 1:w
- mov (1) r74.2<1>:d 0xF000F:ud
-
- add (1) r83.0<1>:d r62.10<0;1,0>:w 16:d
- shr (1) r83.1<1>:d r62.11<0;1,0>:w 1:w
- mov (1) r83.2<1>:d 0xF000F:ud
-
- send (8) null<1>:d r74 0x5 0x120A8019:ud
- send (8) null<1>:d r83 0x5 0x120A8019:ud
-
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
-
-
- //All sub-routines here
-
-
-// Module Name : Noise_Detection
-// Author : Tatiya, Rupesh
-// Description : Performs noise detection on 32 pixels of U (8x4) and 32 pixels of V (8x4).
-
-DN_UV_NOISE_DETECTION_UV:
-
-// Find Field Block Median
-//
-// Purpose : Find the median value of the nine pixels in the same field
-// which are centered at current pixel.
-//
-// Works on 9 pixels centered at the current pixel
-// NOTE: pixels are within same field.
-// v4 - current pixel
-//
-// v2 v1 v0
-// * * * <--- Different field - not used
-// v5 v4 v3
-// * * * <--- Different field - not used
-// v8 v7 v6
-
-// Algorithm to find median modifies the data.
-// Copy the data needed to calculate median so the original source data stays intact.
-//
-
-//TODO - Change Interleaved implementation to separated one if - , does not work on predication. - rT
-
-//Delete Later - rT
-//mov (1) pCUR_UV:uw 52*32:uw
-
-// v0
-mov (16) ubMEDIAN_TEMP(0,0)<1> r[a0.0,0]<16;16,1>
-// v0
-mov (16) ubMEDIAN_TEMP(0,16)<1> r[a0.0,32]<16;16,1>
-// v1
-mov (16) ubMEDIAN_TEMP(1,0)<1> r[a0.0,2]<16;16,1>
-// v1
-mov (16) ubMEDIAN_TEMP(1,16)<1> r[a0.0,34]<16;16,1>
-// v2
-mov (16) ubMEDIAN_TEMP(2,0)<1> r[a0.0,4]<16;16,1>
-// v2
-mov (16) ubMEDIAN_TEMP(2,16)<1> r[a0.0,36]<16;16,1>
-// v3
-mov (16) ubMEDIAN_TEMP(3,0)<1> r[a0.0,64]<16;16,1>
-// v3
-mov (16) ubMEDIAN_TEMP(3,16)<1> r[a0.0,96]<16;16,1>
-// v4
-mov (16) ubMEDIAN_TEMP(4,0)<1> r[a0.0,66]<16;16,1>
-// v4
-mov (16) ubMEDIAN_TEMP(4,16)<1> r[a0.0,98]<16;16,1>
-// v5
-mov (16) ubMEDIAN_TEMP(5,0)<1> r[a0.0,68]<16;16,1>
-// v5
-mov (16) ubMEDIAN_TEMP(5,16)<1> r[a0.0,100]<16;16,1>
-// v6
-mov (16) ubMEDIAN_TEMP(6,0)<1> r[a0.0,128]<16;16,1>
-// v6
-mov (16) ubMEDIAN_TEMP(6,16)<1> r[a0.0,160]<16;16,1>
-// v7
-mov (16) ubMEDIAN_TEMP(7,0)<1> r[a0.0,130]<16;16,1>
-// v7
-mov (16) ubMEDIAN_TEMP(7,16)<1> r[a0.0,162]<16;16,1>
-// v8
-mov (16) ubMEDIAN_TEMP(8,0)<1> r[a0.0,132]<16;16,1>
-// v8
-mov (16) ubMEDIAN_TEMP(8,16)<1> r[a0.0,164]<16;16,1>
-
-//TODO - Optimize one instruction here.
-add (1) a0.0:uw a0.0<0;1,0>:uw 64:uw
-// v0
-mov (16) ubMEDIAN_TEMP(9,0)<1> r[a0.0,0]<16;16,1>
-// v0
-mov (16) ubMEDIAN_TEMP(9,16)<1> r[a0.0,32]<16;16,1>
-// v1
-mov (16) ubMEDIAN_TEMP(10,0)<1> r[a0.0,2]<16;16,1>
-// v1
-mov (16) ubMEDIAN_TEMP(10,16)<1> r[a0.0,34]<16;16,1>
-// v2
-mov (16) ubMEDIAN_TEMP(11,0)<1> r[a0.0,4]<16;16,1>
-// v2
-mov (16) ubMEDIAN_TEMP(11,16)<1> r[a0.0,36]<16;16,1>
-// v3
-mov (16) ubMEDIAN_TEMP(12,0)<1> r[a0.0,64]<16;16,1>
-// v3
-mov (16) ubMEDIAN_TEMP(12,16)<1> r[a0.0,96]<16;16,1>
-// v4
-mov (16) ubMEDIAN_TEMP(13,0)<1> r[a0.0,66]<16;16,1>
-// v4
-mov (16) ubMEDIAN_TEMP(13,16)<1> r[a0.0,98]<16;16,1>
-// v5
-mov (16) ubMEDIAN_TEMP(14,0)<1> r[a0.0,68]<16;16,1>
-// v5
-mov (16) ubMEDIAN_TEMP(14,16)<1> r[a0.0,100]<16;16,1>
-// v6
-mov (16) ubMEDIAN_TEMP(15,0)<1> r[a0.0,128]<16;16,1>
-// v6
-mov (16) ubMEDIAN_TEMP(15,16)<1> r[a0.0,160]<16;16,1>
-// v7
-mov (16) ubMEDIAN_TEMP(16,0)<1> r[a0.0,130]<16;16,1>
-// v7
-mov (16) ubMEDIAN_TEMP(16,16)<1> r[a0.0,162]<16;16,1>
-// v8
-mov (16) ubMEDIAN_TEMP(17,0)<1> r[a0.0,132]<16;16,1>
-// v8
-mov (16) ubMEDIAN_TEMP(17,16)<1> r[a0.0,164]<16;16,1>
-
-//TODO - Optimize one instruction here.
-add (1) a0.0:uw a0.0<0;1,0>:uw 64:uw
-
-// MedianSwap
-//
-// MedianSwap(inOutLeft, inOutRight)
-// {
-// if (inOutLeft > inOutRight)
-// {
-// temp = inOutLeft
-// inOutLeft = inOutRight
-// inOutRight = temp
-// }
-// }
-
-// MedianSwap(v1, v2) - U
-// MedianSwap(v4, v5) - U
-// MedianSwap(v1, v2) - V
-// MedianSwap(v4, v5) - V
-
-cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(1,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
-cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(5,0)<32;16,2>
-cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(1,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
-cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(5,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(1,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(1,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
-
-(f0.0) mov (16) ubMEDIAN_TEMP(1,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
-(f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(5,0)<32;16,2>
-(f1.0) mov (16) ubMEDIAN_TEMP(1,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
-(f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(5,1)<32;16,2>
-
-(f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubTEMP1(0,0)<16;16,1>
-(f0.1) mov (16) ubMEDIAN_TEMP(5,0)<2> ubTEMP1(0,16)<16;16,1>
-(f1.0) mov (16) ubMEDIAN_TEMP(2,1)<2> ubTEMP1(1,0)<16;16,1>
-(f1.1) mov (16) ubMEDIAN_TEMP(5,1)<2> ubTEMP1(1,16)<16;16,1>
-
-// MedianSwap(v7, v8) - U
-// MedianSwap(v0, v1) - U
-// MedianSwap(v7, v8) - V
-// MedianSwap(v0, v1) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(7,0)<32;16,2> ubMEDIAN_TEMP(8,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(0,0)<32;16,2> ubMEDIAN_TEMP(1,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(7,1)<32;16,2> ubMEDIAN_TEMP(8,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(0,1)<32;16,2> ubMEDIAN_TEMP(1,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(7,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(0,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(7,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(0,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(7,0)<2> ubMEDIAN_TEMP(8,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(0,0)<2> ubMEDIAN_TEMP(1,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(7,1)<2> ubMEDIAN_TEMP(8,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(0,1)<2> ubMEDIAN_TEMP(1,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(8,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(1,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(8,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(1,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // MedianSwap(v3, v4) - U
- // MedianSwap(v6, v7) - U
- // MedianSwap(v3, v4) - V
- // MedianSwap(v6, v7) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(3,0)<32;16,2> ubMEDIAN_TEMP(4,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(6,0)<32;16,2> ubMEDIAN_TEMP(7,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(3,1)<32;16,2> ubMEDIAN_TEMP(4,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(6,1)<32;16,2> ubMEDIAN_TEMP(7,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(3,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(6,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(3,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(6,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(3,0)<2> ubMEDIAN_TEMP(4,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(6,0)<2> ubMEDIAN_TEMP(7,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(3,1)<2> ubMEDIAN_TEMP(4,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(6,1)<2> ubMEDIAN_TEMP(7,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(7,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(4,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(7,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // MedianSwap(v1, v2) - U
- // MedianSwap(v4, v5) - U
- // MedianSwap(v1, v2) - V
- // MedianSwap(v4, v5) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(1,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(5,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(1,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(5,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(1,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(1,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(1,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(5,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(1,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(5,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(5,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(2,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(5,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // MedianSwap(v7, v8) - U
- // MedianSwap(v0, v3) - U
- // MedianSwap(v7, v8) - V
- // MedianSwap(v0, v3) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(7,0)<32;16,2> ubMEDIAN_TEMP(8,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(0,0)<32;16,2> ubMEDIAN_TEMP(3,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(7,1)<32;16,2> ubMEDIAN_TEMP(8,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(0,1)<32;16,2> ubMEDIAN_TEMP(3,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(7,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(0,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(7,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(0,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(7,0)<2> ubMEDIAN_TEMP(8,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(0,0)<2> ubMEDIAN_TEMP(3,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(7,1)<2> ubMEDIAN_TEMP(8,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(0,1)<2> ubMEDIAN_TEMP(3,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(8,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(3,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(8,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(3,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // NOTE:
- // Compare v0 to v6 to find the minimum.
- // Store the minimum for future use.
- //TODO - Find if MIN is needed.
- //cmp.l.f0.0 (16) null:w ubMEDIAN_TEMP(%1+0,0)<32;16,2> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
- //cmp.l.f1.0 (16) null:w ubMEDIAN_TEMP(%1+0,1)<32;16,2> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
- //(f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,0)<32;16,2>
- //(f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,1)<32;16,2>
- //(-f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
- //(-f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
-
- // MedianSwap(v5, v8) - U
- // MedianSwap(v4, v7) - U
- // MedianSwap(v5, v8) - V
- // MedianSwap(v4, v7) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(5,0)<32;16,2> ubMEDIAN_TEMP(8,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(7,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(5,1)<32;16,2> ubMEDIAN_TEMP(8,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(7,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(5,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(5,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(5,0)<2> ubMEDIAN_TEMP(8,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(7,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(5,1)<2> ubMEDIAN_TEMP(8,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(7,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(8,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(7,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(8,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(7,1)<2> ubTEMP1(1,16)<16;16,1>
-
-// NOTE:
-// Compare v2 to v8 to find the maximum.
-// Store the maximum for future use.
- //TODO - Find if MAX is needed.
-// cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(%1+2,0)<32;16,2> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
-// cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(%1+2,1)<32;16,2> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
-//(f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,0)<32;16,2>
-//(f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,1)<32;16,2>
-//(-f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
-//(-f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
-
-// MedianSwap(v3, v6) - U
-// MedianSwap(v1, v4) - U
-// MedianSwap(v3, v6) - V
-// MedianSwap(v1, v4) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(3,0)<32;16,2> ubMEDIAN_TEMP(6,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(1,0)<32;16,2> ubMEDIAN_TEMP(4,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(3,1)<32;16,2> ubMEDIAN_TEMP(6,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(1,1)<32;16,2> ubMEDIAN_TEMP(4,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(6,0)<2> ubMEDIAN_TEMP(3,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(1,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(6,1)<2> ubMEDIAN_TEMP(3,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(1,1)<32;16,2>
-
- // MedianSwap(v2,v5) - U
- // MedianSwap(v4,v7) - U
- // MedianSwap(v2,v5) - V
- // MedianSwap(v4,v7) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(2,0)<32;16,2> ubMEDIAN_TEMP(5,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(7,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(2,1)<32;16,2> ubMEDIAN_TEMP(5,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(7,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubMEDIAN_TEMP(5,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(7,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(2,1)<2> ubMEDIAN_TEMP(5,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(7,1)<32;16,2>
-
- // MedianSwap(v4,v2) - U
- // MedianSwap(v4,v2) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(2,1)<2> ubTEMP1(0,16)<16;16,1>
-
- // MedianSwap(v6,v4) - U
- // MedianSwap(v6,v4) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(6,0)<32;16,2> ubMEDIAN_TEMP(4,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(6,1)<32;16,2> ubMEDIAN_TEMP(4,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(6,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(6,1)<32;16,2>
-
- // MedianSwap(v4,v2) - U
- // MedianSwap(v4,v2) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
-cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(10,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
-cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(14,0)<32;16,2>
-cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(10,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
-cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(14,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(10,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(10,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
-
-(f0.0) mov (16) ubMEDIAN_TEMP(10,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
-(f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(14,0)<32;16,2>
-(f1.0) mov (16) ubMEDIAN_TEMP(10,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
-(f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(14,1)<32;16,2>
-
-(f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubTEMP1(0,0)<16;16,1>
-(f0.1) mov (16) ubMEDIAN_TEMP(14,0)<2> ubTEMP1(0,16)<16;16,1>
-(f1.0) mov (16) ubMEDIAN_TEMP(11,1)<2> ubTEMP1(1,0)<16;16,1>
-(f1.1) mov (16) ubMEDIAN_TEMP(14,1)<2> ubTEMP1(1,16)<16;16,1>
-
-// MedianSwap(v7, v8) - U
-// MedianSwap(v0, v1) - U
-// MedianSwap(v7, v8) - V
-// MedianSwap(v0, v1) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(16,0)<32;16,2> ubMEDIAN_TEMP(17,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(9,0)<32;16,2> ubMEDIAN_TEMP(10,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(16,1)<32;16,2> ubMEDIAN_TEMP(17,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(9,1)<32;16,2> ubMEDIAN_TEMP(10,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(16,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(9,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(16,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(9,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(16,0)<2> ubMEDIAN_TEMP(17,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(9,0)<2> ubMEDIAN_TEMP(10,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(16,1)<2> ubMEDIAN_TEMP(17,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(9,1)<2> ubMEDIAN_TEMP(10,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(17,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(10,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(17,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(10,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // MedianSwap(v3, v4) - U
- // MedianSwap(v6, v7) - U
- // MedianSwap(v3, v4) - V
- // MedianSwap(v6, v7) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(12,0)<32;16,2> ubMEDIAN_TEMP(13,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(15,0)<32;16,2> ubMEDIAN_TEMP(16,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(12,1)<32;16,2> ubMEDIAN_TEMP(13,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(15,1)<32;16,2> ubMEDIAN_TEMP(16,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(12,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(15,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(12,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(15,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(12,0)<2> ubMEDIAN_TEMP(13,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(15,0)<2> ubMEDIAN_TEMP(16,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(12,1)<2> ubMEDIAN_TEMP(13,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(15,1)<2> ubMEDIAN_TEMP(16,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(16,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(13,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(16,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // MedianSwap(v1, v2) - U
- // MedianSwap(v4, v5) - U
- // MedianSwap(v1, v2) - V
- // MedianSwap(v4, v5) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(10,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(14,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(10,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(14,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(10,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(10,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(10,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(14,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(10,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(14,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(14,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(11,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(14,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // MedianSwap(v7, v8) - U
- // MedianSwap(v0, v3) - U
- // MedianSwap(v7, v8) - V
- // MedianSwap(v0, v3) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(16,0)<32;16,2> ubMEDIAN_TEMP(17,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(9,0)<32;16,2> ubMEDIAN_TEMP(12,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(16,1)<32;16,2> ubMEDIAN_TEMP(17,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(9,1)<32;16,2> ubMEDIAN_TEMP(12,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(16,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(9,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(16,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(9,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(16,0)<2> ubMEDIAN_TEMP(17,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(9,0)<2> ubMEDIAN_TEMP(12,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(16,1)<2> ubMEDIAN_TEMP(17,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(9,1)<2> ubMEDIAN_TEMP(12,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(17,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(12,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(17,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(12,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // NOTE:
- // Compare v0 to v6 to find the minimum.
- // Store the minimum for future use.
- //TODO - Find if MIN is needed.
- //cmp.l.f0.0 (16) null:w ubMEDIAN_TEMP(%1+0,0)<32;16,2> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
- //cmp.l.f1.0 (16) null:w ubMEDIAN_TEMP(%1+0,1)<32;16,2> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
- //(f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,0)<32;16,2>
- //(f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,1)<32;16,2>
- //(-f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
- //(-f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
-
- // MedianSwap(v5, v8) - U
- // MedianSwap(v4, v7) - U
- // MedianSwap(v5, v8) - V
- // MedianSwap(v4, v7) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(14,0)<32;16,2> ubMEDIAN_TEMP(17,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(16,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(14,1)<32;16,2> ubMEDIAN_TEMP(17,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(16,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(14,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(14,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(14,0)<2> ubMEDIAN_TEMP(17,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(16,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(14,1)<2> ubMEDIAN_TEMP(17,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(16,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(17,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(16,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(17,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(16,1)<2> ubTEMP1(1,16)<16;16,1>
-
-// NOTE:
-// Compare v2 to v8 to find the maximum.
-// Store the maximum for future use.
- //TODO - Find if MAX is needed.
-// cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(%1+2,0)<32;16,2> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
-// cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(%1+2,1)<32;16,2> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
-//(f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,0)<32;16,2>
-//(f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,1)<32;16,2>
-//(-f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
-//(-f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
-
-// MedianSwap(v3, v6) - U
-// MedianSwap(v1, v4) - U
-// MedianSwap(v3, v6) - V
-// MedianSwap(v1, v4) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(12,0)<32;16,2> ubMEDIAN_TEMP(15,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(10,0)<32;16,2> ubMEDIAN_TEMP(13,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(12,1)<32;16,2> ubMEDIAN_TEMP(15,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(10,1)<32;16,2> ubMEDIAN_TEMP(13,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(15,0)<2> ubMEDIAN_TEMP(12,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(10,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(15,1)<2> ubMEDIAN_TEMP(12,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(10,1)<32;16,2>
-
- // MedianSwap(v2,v5) - U
- // MedianSwap(v4,v7) - U
- // MedianSwap(v2,v5) - V
- // MedianSwap(v4,v7) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(11,0)<32;16,2> ubMEDIAN_TEMP(14,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(16,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(11,1)<32;16,2> ubMEDIAN_TEMP(14,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(16,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubMEDIAN_TEMP(14,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(16,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(11,1)<2> ubMEDIAN_TEMP(14,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(16,1)<32;16,2>
-
- // MedianSwap(v4,v2) - U
- // MedianSwap(v4,v2) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(11,1)<2> ubTEMP1(0,16)<16;16,1>
-
- // MedianSwap(v6,v4) - U
- // MedianSwap(v6,v4) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(15,0)<32;16,2> ubMEDIAN_TEMP(13,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(15,1)<32;16,2> ubMEDIAN_TEMP(13,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(15,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(15,1)<32;16,2>
-
- // MedianSwap(v4,v2) - U
- // MedianSwap(v4,v2) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
-
-// Sobel Value calculation for the current pixel v4
-// v2 v1 v0
-// * * * <--- Different field - not used
-// v5 v4 v3
-// * * * <--- Different field - not used
-// v8 v7 v6
-//
-// Gx = -v0 - 2*v3 - v6 + v2 + 2*v5 + v8
-// Gy = v0 + 2*v1 + v2 - v6 - 2*v7 - v8
-//
-// Sobel = (|Gx| + |Gy|) >> 3
-
-//TODO - Change Later - rT
-add (1) a0.0:uw a0.0<0;1,0>:uw -128:uw
-
-// - 2 * v3
-mul (16) acc0.0<1>:w r[a0.0,64]<16;16,1>:ub -2:w
-// + v8
-mac (16) acc0.0<1>:w r[a0.0,132]<16;16,1>:ub 1:w
-// - v0
-mac (16) acc0.0<1>:w r[a0.0,0]<16;16,1>:ub -1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,128]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,4]<16;16,1>:ub 1:w
-// + 2 * v5
-mac (16) wSOBEL_X(0)<1> r[a0.0,68]<16;16,1>:ub 2:w
-// - 2 * v3
-mul (16) acc0.0<1>:w r[a0.0,96]<16;16,1>:ub -2:w
-// + v8
-mac (16) acc0.0<1>:w r[a0.0,164]<16;16,1>:ub 1:w
-// - v0
-mac (16) acc0.0<1>:w r[a0.0,32]<16;16,1>:ub -1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,160]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,36]<16;16,1>:ub 1:w
-// + 2 * v5
-mac (16) wSOBEL_X(1)<1> r[a0.0,100]<16;16,1>:ub 2:w
-// - 2 * v3
-mul (16) acc0.0<1>:w r[a0.0,128]<16;16,1>:ub -2:w
-// + v8
-mac (16) acc0.0<1>:w r[a0.0,196]<16;16,1>:ub 1:w
-// - v0
-mac (16) acc0.0<1>:w r[a0.0,64]<16;16,1>:ub -1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,192]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,68]<16;16,1>:ub 1:w
-// + 2 * v5
-mac (16) wSOBEL_X(2)<1> r[a0.0,132]<16;16,1>:ub 2:w
-// - 2 * v3
-mul (16) acc0.0<1>:w r[a0.0,160]<16;16,1>:ub -2:w
-// + v8
-mac (16) acc0.0<1>:w r[a0.0,228]<16;16,1>:ub 1:w
-// - v0
-mac (16) acc0.0<1>:w r[a0.0,96]<16;16,1>:ub -1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,224]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,100]<16;16,1>:ub 1:w
-// + 2 * v5
-mac (16) wSOBEL_X(3)<1> r[a0.0,164]<16;16,1>:ub 2:w
-
-// + 2 * v1
-mul (16) acc0.0<1>:w r[a0.0,2]<16;16,1>:ub 2:w
-// + v0
-mac (16) acc0.0<1>:w r[a0.0,0]<16;16,1>:ub 1:w
-// - v8
-mac (16) acc0.0<1>:w r[a0.0,132]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,4]<16;16,1>:ub 1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,128]<16;16,1>:ub -1:w
-// - 2 * v7
-mac (16) acc0.0<1>:w r[a0.0,130]<16;16,1>:ub -2:w
-
-add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(0)<16;16,1>
-
-shr (16) uwSOBEL(0)<1> acc0.0<16;16,1>:uw 3:uw
-// + 2 * v1
-mul (16) acc0.0<1>:w r[a0.0,34]<16;16,1>:ub 2:w
-// + v0
-mac (16) acc0.0<1>:w r[a0.0,32]<16;16,1>:ub 1:w
-// - v8
-mac (16) acc0.0<1>:w r[a0.0,164]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,36]<16;16,1>:ub 1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,160]<16;16,1>:ub -1:w
-// - 2 * v7
-mac (16) acc0.0<1>:w r[a0.0,162]<16;16,1>:ub -2:w
-
-add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(1)<16;16,1>
-
-shr (16) uwSOBEL(1)<1> acc0.0<16;16,1>:uw 3:uw
-// + 2 * v1
-mul (16) acc0.0<1>:w r[a0.0,66]<16;16,1>:ub 2:w
-// + v0
-mac (16) acc0.0<1>:w r[a0.0,64]<16;16,1>:ub 1:w
-// - v8
-mac (16) acc0.0<1>:w r[a0.0,196]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,68]<16;16,1>:ub 1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,192]<16;16,1>:ub -1:w
-// - 2 * v7
-mac (16) acc0.0<1>:w r[a0.0,194]<16;16,1>:ub -2:w
-
-add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(2)<16;16,1>
-
-shr (16) uwSOBEL(2)<1> acc0.0<16;16,1>:uw 3:uw
-// + 2 * v1
-mul (16) acc0.0<1>:w r[a0.0,98]<16;16,1>:ub 2:w
-// + v0
-mac (16) acc0.0<1>:w r[a0.0,96]<16;16,1>:ub 1:w
-// - v8
-mac (16) acc0.0<1>:w r[a0.0,228]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,100]<16;16,1>:ub 1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,224]<16;16,1>:ub -1:w
-// - 2 * v7
-mac (16) acc0.0<1>:w r[a0.0,226]<16;16,1>:ub -2:w
-
-add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(3)<16;16,1>
-
-shr (16) uwSOBEL(3)<1> acc0.0<16;16,1>:uw 3:uw
-
-//Mov Median in CURBE_TEMP to free up temp space.
-mov (16) ubMEDIAN(0,0)<1> ubMEDIAN_TEMP(4,0)<16;16,1>
-mov (16) ubMEDIAN(0,16)<1> ubMEDIAN_TEMP(4,16)<16;16,1>
-mov (16) ubMEDIAN(0,32)<1> ubMEDIAN_TEMP(13,0)<16;16,1>
-mov (16) ubMEDIAN(0,48)<1> ubMEDIAN_TEMP(13,16)<16;16,1>
-
-// Find:
-// absDiff = abs(ubCurY - ubMedian)
-// Find the difference between pixel and median value.
-
-//Median is interleaved. So difference is also interleaved.
-
-//------------------------------------------------------------------------------------------
-//Process 16 U and 16 V pixels here and rest later.
-// first row - v0,v1,v2
-add (16) wDIFF(0)<1> r[a0.0,0]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-add (16) wDIFF(1)<1> r[a0.0,2]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-add (16) wDIFF(2)<1> r[a0.0,4]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-
-// second row - v3,v4,v5
-add (16) wDIFF(3)<1> r[a0.0,64]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-add (16) wDIFF(4)<1> r[a0.0,66]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-add (16) wDIFF(5)<1> r[a0.0,68]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-
-// third row - v6,v7,v8
-add (16) wDIFF(6)<1> r[a0.0,128]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-add (16) wDIFF(7)<1> r[a0.0,130]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-add (16) wDIFF(8)<1> r[a0.0,132]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-// first row - v0,v1,v2
-add (16) wDIFF(9)<1> r[a0.0,32]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-add (16) wDIFF(10)<1> r[a0.0,34]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-add (16) wDIFF(11)<1> r[a0.0,36]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-
-// second row - v3,v4,v5
-add (16) wDIFF(12)<1> r[a0.0,96]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-add (16) wDIFF(13)<1> r[a0.0,98]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-add (16) wDIFF(14)<1> r[a0.0,100]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-
-// third row - v6,v7,v8
-add (16) wDIFF(15)<1> r[a0.0,160]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-add (16) wDIFF(16)<1> r[a0.0,162]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-add (16) wDIFF(17)<1> r[a0.0,164]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-
-//TODO - Change Later - rT
-add (1) a0.0:uw a0.0<0;1,0>:uw 64:uw
-
-// Find sum of all absolute differences AND
-// maximum absolute difference for 16 U and 16 V here.
-//First 2 rows of 8x4
-//Compare 0-1, 2-3, 4-5, 6-7
-cmp.g.f0.0 (16) null:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
-cmp.g.f0.1 (16) null:uw (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
-cmp.g.f1.0 (16) null:uw (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
-cmp.g.f1.1 (16) null:uw (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
-
-//Calculate SAD
- add (16) acc0.0<1>:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(2)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(3)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(4)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(5)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(6)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(7)<16;16,1>
- add (16) uwSOAD(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF(8)<16;16,1>
-
-(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
-(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
-(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
-(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
-
-//------------
- //DIFF(0-7) is not needed here. Populate it.
- // first row - v0,v1,v2
- add (16) wDIFF(0)<1> r[a0.0,0]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
- add (16) wDIFF(1)<1> r[a0.0,2]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
- add (16) wDIFF(2)<1> r[a0.0,4]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
-
- // second row - v3,v4,v5
- add (16) wDIFF(3)<1> r[a0.0,64]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
- add (16) wDIFF(4)<1> r[a0.0,66]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
- add (16) wDIFF(5)<1> r[a0.0,68]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
-
- // third row - v6,v7
- add (16) wDIFF(6)<1> r[a0.0,128]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
- add (16) wDIFF(7)<1> r[a0.0,130]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
-//------------
-
-//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-//Compare Max(0,1,2,3) - Max(4,5,6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-
-//Compare Max(0,1,2,3,4,5,6,7) - 8
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
-(f0.0)sel (16) uwMAX_ABS_DIFF(0)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
-
-//------------
- //Load v8 - DIFF(8)
- add (16) wDIFF(8)<1> r[a0.0,132]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
-//------------
-//Compare 0-1, 2-3, 4-5, 6-7
-cmp.g.f0.0 (16) null:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
-cmp.g.f0.1 (16) null:uw (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
-cmp.g.f1.0 (16) null:uw (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
-cmp.g.f1.1 (16) null:uw (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
-
-//Calculate SAD
- add (16) acc0.0<1>:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(11)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(12)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(13)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(14)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(15)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(16)<16;16,1>
- add (16) uwSOAD(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF(17)<16;16,1>
-
-(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
-(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
-(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
-(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
-
-//------------
- //DIFF(0-7) is not needed here. Populate it.
- // first row - v0,v1,v2
- add (16) wDIFF(9)<1> r[a0.0,32]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
- add (16) wDIFF(10)<1> r[a0.0,34]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
- add (16) wDIFF(11)<1> r[a0.0,36]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
-
- // second row - v3,v4,v5
- add (16) wDIFF(12)<1> r[a0.0,96]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
- add (16) wDIFF(13)<1> r[a0.0,98]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
- add (16) wDIFF(14)<1> r[a0.0,100]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
-
- // third row - v6,v7
- add (16) wDIFF(15)<1> r[a0.0,160]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
- add (16) wDIFF(16)<1> r[a0.0,162]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
-//------------
-
-//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-//Compare Max(0,1,2,3) - Max(4,5,6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-
-//Compare Max(0,1,2,3,4,5,6,7) - 8
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
-(f0.0)sel (16) uwMAX_ABS_DIFF(1)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
-
-//------------
- //Load v8 - DIFF(8)
- add (16) wDIFF(17)<1> r[a0.0,164]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
-//------------
-
-//if ((sobel_edge_measure < m_SobelEdgeThreshold) && ((block_max-block_min) < m_LocalDiffThreshold))
-// if (sigma_mb_min > sigma)
-// sigma_mb_min = sigma;
-
-//NOTE: block_min is always zero as median is one of the value in 3x3 block. So no need o calculate it.
-// So just do -
-//if ((sobel_edge_measure < m_SobelEdgeThreshold) && ((block_max) < m_LocalDiffThreshold) && ( sigma < sigma_mb_min))
-// sigma_mb_min = sigma;
-
-//We are processing 32 bytes of U and 32 bytes of V - each of size 8x4.
-//Compare first 8 bytes with max possible (255).
-//Start above condition from second 8 bytes.
-
-//TODO - Change Later - rT
-// mov (1) pCUR_MIN_SOAD_8x4:uw 1752:uw //r54.24:ub
-
-//First row of 8x4
- cmp.l.f0.0 (16) null:uw uwSOBEL(0)<16;16,1> r55.30<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(0)<16;16,1> r55.28<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(0)<16;16,1> 255:uw
-(f0.0) sel (16) uwSOBEL(0)<1> uwSOAD(0)<16;16,1> 255:uw
-
-//Second row of 8x4
- cmp.l.f0.0 (16) null:uw uwSOBEL(1)<16;16,1> r55.30<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(1)<16;16,1> r55.28<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(1)<16;16,1> uwSOBEL(0)<16;16,1>
-(f0.0) mov (16) uwSOBEL(0)<1> uwSOAD(1)<16;16,1>
-
-// Find sum of all absolute differences AND
-// maximum absolute difference for 16 U and 16 V here.
-//Second 2 rows of 8x4
-//Compare 0-1, 2-3, 4-5, 6-7
-cmp.g.f0.0 (16) null:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
-cmp.g.f0.1 (16) null:uw (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
-cmp.g.f1.0 (16) null:uw (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
-cmp.g.f1.1 (16) null:uw (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
-
-//Calculate SAD
- add (16) acc0.0<1>:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(2)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(3)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(4)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(5)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(6)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(7)<16;16,1>
- add (16) uwSOAD(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF(8)<16;16,1>
-
-(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
-(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
-(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
-(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
-
-//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-//Compare Max(0,1,2,3) - Max(4,5,6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-
-//Compare Max(0,1,2,3,4,5,6,7) - 8
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
-(f0.0)sel (16) uwMAX_ABS_DIFF(0)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
-//Compare 0-1, 2-3, 4-5, 6-7
-cmp.g.f0.0 (16) null:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
-cmp.g.f0.1 (16) null:uw (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
-cmp.g.f1.0 (16) null:uw (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
-cmp.g.f1.1 (16) null:uw (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
-
-//Calculate SAD
- add (16) acc0.0<1>:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(11)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(12)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(13)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(14)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(15)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(16)<16;16,1>
- add (16) uwSOAD(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF(17)<16;16,1>
-
-(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
-(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
-(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
-(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
-
-//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-//Compare Max(0,1,2,3) - Max(4,5,6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-
-//Compare Max(0,1,2,3,4,5,6,7) - 8
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
-(f0.0)sel (16) uwMAX_ABS_DIFF(1)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
-
-//Third row of 8x4
- cmp.l.f0.0 (16) null:uw uwSOBEL(2)<16;16,1> r55.30<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(0)<16;16,1> r55.28<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(0)<16;16,1> uwSOBEL(0)<16;16,1>
-(f0.0) mov (16) uwSOBEL(0)<1> uwSOAD(0)<16;16,1>
-
-//Fourth row of 8x4
- cmp.l.f0.0 (16) null:uw uwSOBEL(3)<16;16,1> r55.30<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(1)<16;16,1> r55.28<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(1)<16;16,1> uwSOBEL(0)<16;16,1>
-(f0.0) mov (16) uwSOBEL(0)<1> uwSOAD(1)<16;16,1>
-
- cmp.l.f0.0 (8) null:uw uwSOBEL(0,0)<8;8,1> uwSOBEL(0,8)<8;8,1>
-(f0.0) sel (8) uwSOBEL(0)<1> uwSOBEL(0,0)<8;8,1> uwSOBEL(0,8)<8;8,1>
-
- cmp.l.f0.0 (4) null:uw uwSOBEL(0,0)<4;4,1> uwSOBEL(0,4)<4;4,1>
-(f0.0) sel (4) uwSOBEL(0)<1> uwSOBEL(0,0)<4;4,1> uwSOBEL(0,4)<4;4,1>
-
- cmp.l.f0.0 (2) null:uw uwSOBEL(0,0)<2;2,1> uwSOBEL(0,2)<2;2,1>
-(f0.0) sel (2) r[a0.1,0]<1>:uw uwSOBEL(0,0)<2;2,1> uwSOBEL(0,2)<2;2,1>
-
-
-
-
-
-
-// End of common.inc
-
-mov (1) ip:ud r9.7<0;1,0>:d
-
-
-.end_code
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/NV12_DN_422CP.g4a b/src/shaders/post_processing/gen7/NV12_DN_422CP.g4a
deleted file mode 100644
index 91b3864..0000000
--- a/src/shaders/post_processing/gen7/NV12_DN_422CP.g4a
+++ /dev/null
@@ -1,561 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 113 // Total instruction count
-// 1 // Total kernel count
-
-.kernel NV12_DN_422CP
-.code
-
-
-
-// FileName: DN_PL_Core.asm
-// Author: Vivek Kumar
-// Description: Tasks for DN only case (16x8 block) for planar format
-
-
-
-// FileName: DN.asm
-// Author: Vivek Kumar
-// Description: Tasks for DN only case (16x8 block)
-
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: DNDI.inc
-// Author: Vivek Kumar
-// Description: Include file for DN, DI and DNDI
-// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
-
-
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//====================== Binding table (Explicit To DNDI)=========================================
-
-
-.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
-.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
-.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
-
-
-.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
-.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
-.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
-.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
-.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
-.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
-.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
-.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
-
-//r45
-//Use r45 as message header, so no need to "mov" the data.
-
-.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
-.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-// Message response (UV Copy); Use buffer 5
-.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Temp GRFs: For 42X to 422 Conversion
-.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
-.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
- // Message descriptor for sampler read
- // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
- // 1 (header present 1) 0 11 (SIMD32/64 mode)
- // 1000 (message type) 0000 (DI state index)
- // 00000000 (binding table index - set later)
- // = 0x040b8000
-
-
-// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
-
-
-//---------------------------------------------------------------------------
-// VDI Return Data format
-//---------------------------------------------------------------------------
-// Defines for DI enabled
-
-
-// Defines for DI disabled
-
-
-
-// FileName: DNDI_Command.asm
-// Author: Vivek Kumar
-// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
-
-// Prepare the DNDI send command
-mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
-mov (1) mwMSGHDR_DNDI(1,4)<1> r9.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
-mov (1) mwMSGHDR_DNDI(1,12)<1> r9.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
-
-send (8) udDNDI_RESP(0)<1> r18 0x2 0x45E8003:ud
-
-// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
-// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
-mov (2) r9.0<1>:w uwDNDI_RESP(4,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
-
-
-
-// FileName: DN_Hist_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DN history data to statistics surface
-
-// Write denoise history to memory
-mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
-
-
- mov (2) mudMSGHDR_HIST(1)<1> udDNDI_RESP(4,0)<2;2,1> // Move denoise history to MRF (4x2)
-
-
-shr (2) r27.0<1>:ud r9.0<2;2,1>:w 2:w // X,Y origin / 4
-add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
-mov (1) r27.2<1>:ud 0x10003:ud { NoDDChk } // block width and height
-
-mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
-send (8) null<1>:d r22 0x5 0x40A8021:ud
-
-
-
-// FileName: DNDI_Enc_Stats_Save.asm
-// Author: Vivek Kumar
-// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write encoder statistics to memory
-//Currently enable this only on Gen6 validation
-mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
-mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
-
-shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
-mul (1) acc0.1<1>:ud r9.1<0;1,0>:w 3:w // Y origin * 3
-shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
-mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x50003:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
-add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
-
-
- //Data block for Encoder Statistics
- //----------------------------------------------------
- //| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
- //----------------------------------------------------
- //| BNE | X | X | X | X |
- //----------------------------------------------------
- //| X | SVCM | X |
- //----------------------------------------------------
- //| SHCM | STAD | X |
- //----------------------------------------------------
- //| X | X |
- //----------------------------------------------------
- //| X | SVCM | X |
- //----------------------------------------------------
- //| SHCM | STAD | X |
- //----------------------------------------------------
- mov (1) mubMSGHDR_ENC_STATS(1,0)<1> ubDNDI_RESP(4,8)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
- mov (1) muwMSGHDR_ENC_STATS(1,3)<1> uwDNDI_RESP(4,11)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) muwMSGHDR_ENC_STATS(1,4)<1> uwDNDI_RESP(4,12)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (1) muwMSGHDR_ENC_STATS(1,9)<1> uwDNDI_RESP(4,8)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) muwMSGHDR_ENC_STATS(1,10)<1> uwDNDI_RESP(4,9)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
-
-
-send (8) null<1>:d r24 0x5 0x40A8021:ud
-
-
-
-// FileName: DN_Load_UV_NV12_16x8.asm
-// Author: Vivek Kumar
-// Description: Read UV for 16x8 block through DATAPORT
-
-
-
-// FileName: UVCopy_Load_16x8.asm
-// Author: Vivek Kumar
-// Description: Read UV for 16x8 block through DATAPORT
-
-//CHANGE : Read extra UV data to convert to 422. -rT
-//we are reading extra data in ALL cases irrespective of whether upsampling is reqd or not later on, to keep things simple.
-
-
- add (2) r27.0<1>:d r9.0<2;2,1>:w r4.4<2;2,1>:w // Source Y Block origin
- asr (1) r27.1<1>:d r27.1<0;1,0>:d 1:w { NoDDClr } // U/V block origin should be half of Y's
- mov (1) r27.2<1>:ud 0x4000F:ud { NoDDChk } // U/V block width and height (8x5)
- mov (8) mudMSGHDR_UVCOPY(0)<1> r27.0<8;8,1>:ud
- send (8) udDNDI_UV_RESP(0)<1> r36 0x4 0x2390001:ud
-
- //Update Header for Save
- mov (1) mudMSGHDR_UVCOPY(0,2)<1> 0x3000F:ud // U/V block width and height (8x4)
-
-
-
-// FileName: DN_Save_Y_16x8.asm
-// Author: Vivek Kumar
-// Description: Save one 16x8 blocks of Y channel of DN output for reference
-
-
-mov (8) mudDN_Y_OUT(0,0)<1> r0<8;8,1>:ud // message header
-mov (2) mudDN_Y_OUT(0,0)<1> r9.0<2;2,1>:w { NoDDClr } // X origin
-mov (1) mudDN_Y_OUT(0,2)<1> 0x7000F:ud { NoDDChk } // block width and height (16x8)
-
-//send out data through data port
-send (8) null<1>:d mudDN_Y_OUT 0x5 0xA0A8018:ud
-
-
-
-// FileName: DN_Save_UV_NV12_16x8.asm
-// Author: Vivek Kumar
-// Description: Save UV for 16x8 block through DATAPORT
-
-
-
-// FileName: UVCopy_Save_16x8.asm
-// Author: Vivek Kumar
-// Description: Save UV for 16x8 block through DATAPORT
-
-
-//Reuse the header from Load component
-//Header is modified at the end of load - to be usable for save.
-
- mov (8) mudMSGHDR_UVCOPY(1)<1> udDNDI_UV_RESP(0)<8;8,1>
- mov (8) mudMSGHDR_UVCOPY(2)<1> udDNDI_UV_RESP(1)<8;8,1>
- send (8) null<1>:d r36 0x5 0x60A8019:ud
-
-
-
-// FileName: DN_Upsample_UV_NV12_16x8.asm
-// Author: Tatiya, Rupesh
-// Description: Upconvert 420 UV to 422
-
-
-
-// FileName: UVCopy_Upsample_UV_16x8.asm
-// Author: Tatiya, Rupesh
-// Description: Convert 42X UV to 422 - to be used for IECP.
-
-
- avg.sat (16) uwDNDI_UVCOPY_TEMP(0) ubDNDI_UV_RESP(0,0)<16;16,1> ubDNDI_UV_RESP(0,0)<16;16,1>
- avg.sat (16) uwDNDI_UVCOPY_TEMP(1) ubDNDI_UV_RESP(0,0)<16;16,1> ubDNDI_UV_RESP(0,16)<16;16,1>
- avg.sat (16) uwDNDI_UVCOPY_TEMP(2) ubDNDI_UV_RESP(0,16)<16;16,1> ubDNDI_UV_RESP(0,16)<16;16,1>
- avg.sat (16) uwDNDI_UVCOPY_TEMP(3) ubDNDI_UV_RESP(0,16)<16;16,1> ubDNDI_UV_RESP(0,32)<16;16,1>
- avg.sat (16) uwDNDI_UVCOPY_TEMP(4) ubDNDI_UV_RESP(0,32)<16;16,1> ubDNDI_UV_RESP(0,32)<16;16,1>
- avg.sat (16) uwDNDI_UVCOPY_TEMP(5) ubDNDI_UV_RESP(0,32)<16;16,1> ubDNDI_UV_RESP(0,48)<16;16,1>
- avg.sat (16) uwDNDI_UVCOPY_TEMP(6) ubDNDI_UV_RESP(0,48)<16;16,1> ubDNDI_UV_RESP(0,48)<16;16,1>
- avg.sat (16) uwDNDI_UVCOPY_TEMP(7) ubDNDI_UV_RESP(0,48)<16;16,1> ubDNDI_UV_RESP(0,64)<16;16,1>
-
- mov (16) ubDNDI_RESP(5,1)<2> ubDNDI_UVCOPY_TEMP(0,0)<32;8,4> { NoDDClr } //Copy U data
- mov (16) ubDNDI_RESP(5,0)<2> ubDNDI_UVCOPY_TEMP(0,2)<32;8,4> { NoDDChk } //Copy V data
- mov (16) ubDNDI_RESP(5,33)<2> ubDNDI_UVCOPY_TEMP(2,0)<32;8,4> { NoDDClr } //Copy U data
- mov (16) ubDNDI_RESP(5,32)<2> ubDNDI_UVCOPY_TEMP(2,2)<32;8,4> { NoDDChk } //Copy V data
- mov (16) ubDNDI_RESP(5,65)<2> ubDNDI_UVCOPY_TEMP(4,0)<32;8,4> { NoDDClr } //Copy U data
- mov (16) ubDNDI_RESP(5,64)<2> ubDNDI_UVCOPY_TEMP(4,2)<32;8,4> { NoDDChk } //Copy V data
- mov (16) ubDNDI_RESP(5,97)<2> ubDNDI_UVCOPY_TEMP(6,0)<32;8,4> { NoDDClr } //Copy U data
- mov (16) ubDNDI_RESP(5,96)<2> ubDNDI_UVCOPY_TEMP(6,2)<32;8,4> { NoDDChk } //Copy V data
-
-
-
-// FileName: DN_Save_422CP_16x8.asm
-// Author: Vivek Kumar
-// Description: Save one 16x8 blocks of DN output to the color pipe in 4-2-2 format
-
-
-.declare mubMSGHDR_DN_OUT_2 Base=r36.0 ElementSize=1 Type=ub
-
-
-mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
-shl (1) mdMSGHDR_DN_OUT(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } // X origin * 2 (422 output)
-mov (1) mdMSGHDR_DN_OUT(0,1)<1> r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
-mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x7000F:ud { NoDDClr, NoDDChk } // block width and height (16x8)
-
-//M0.3 - 0 - CP Enable, 1 - Area of Interest, 3:2 Message Format(TBD), 4:3 - Ignored, 31:5 CP state pointer
-//Compose area-of-interest bit + color pipe state pointer
-or (1) mudMSGHDR_DN_OUT(0,3)<1> r2.4<0;1,0>:ud r9.26<0;1,0>:b { NoDDChk }
-
-// First 8 x 8 Block
- mov (8) mubMSGHDR_DN_OUT(1)<2> ubDNDI_RESP(0,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT(1,16)<2> ubDNDI_RESP(0,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT(2)<2> ubDNDI_RESP(0,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT(2,16)<2> ubDNDI_RESP(0,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT(3)<2> ubDNDI_RESP(0,64)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT(3,16)<2> ubDNDI_RESP(0,80)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT(4)<2> ubDNDI_RESP(0,96)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT(4,16)<2> ubDNDI_RESP(0,112)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT(1,1)<4> ubDNDI_RESP(5,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(1,17)<4> ubDNDI_RESP(5,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT(1,3)<4> ubDNDI_RESP(5,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(1,19)<4> ubDNDI_RESP(5,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(2,1)<4> ubDNDI_RESP(5,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(2,17)<4> ubDNDI_RESP(5,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT(2,3)<4> ubDNDI_RESP(5,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(2,19)<4> ubDNDI_RESP(5,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(3,1)<4> ubDNDI_RESP(5,65)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(3,17)<4> ubDNDI_RESP(5,81)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT(3,3)<4> ubDNDI_RESP(5,64)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(3,19)<4> ubDNDI_RESP(5,80)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(4,1)<4> ubDNDI_RESP(5,97)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(4,17)<4> ubDNDI_RESP(5,113)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT(4,3)<4> ubDNDI_RESP(5,96)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(4,19)<4> ubDNDI_RESP(5,112)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-// Second 8 x 8 Block
-mov (8) r36.0<1>:ud r31.0<8;8,1>:ud
-add (1) r36.0<1>:ud r36.0<0;1,0>:w 0x10:w
-
- mov (8) mubMSGHDR_DN_OUT_2(1)<2> ubDNDI_RESP(0,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT_2(1,16)<2> ubDNDI_RESP(0,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT_2(2)<2> ubDNDI_RESP(0,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT_2(2,16)<2> ubDNDI_RESP(0,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT_2(3)<2> ubDNDI_RESP(0,72)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT_2(3,16)<2> ubDNDI_RESP(0,88)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT_2(4)<2> ubDNDI_RESP(0,104)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT_2(4,16)<2> ubDNDI_RESP(0,120)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT_2(1,1)<4> ubDNDI_RESP(5,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(1,17)<4> ubDNDI_RESP(5,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT_2(1,3)<4> ubDNDI_RESP(5,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(1,19)<4> ubDNDI_RESP(5,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(2,1)<4> ubDNDI_RESP(5,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(2,17)<4> ubDNDI_RESP(5,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT_2(2,3)<4> ubDNDI_RESP(5,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(2,19)<4> ubDNDI_RESP(5,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(3,1)<4> ubDNDI_RESP(5,73)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(3,17)<4> ubDNDI_RESP(5,89)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT_2(3,3)<4> ubDNDI_RESP(5,72)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(3,19)<4> ubDNDI_RESP(5,88)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(4,1)<4> ubDNDI_RESP(5,105)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(4,17)<4> ubDNDI_RESP(5,121)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT_2(4,3)<4> ubDNDI_RESP(5,104)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(4,19)<4> ubDNDI_RESP(5,120)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-//send out data through data port
-send (8) null<1>:d r31.0 0x5 0xA0A801B:ud
-send (8) null<1>:d r36.0 0x5 0xA0A801B:ud
-
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
-
-
-.end_code
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/NV12_DN_NV12.g4a b/src/shaders/post_processing/gen7/NV12_DN_NV12.g4a
deleted file mode 100644
index 546866f..0000000
--- a/src/shaders/post_processing/gen7/NV12_DN_NV12.g4a
+++ /dev/null
@@ -1,442 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 40 // Total instruction count
-// 1 // Total kernel count
-
-.kernel NV12_DN_NV12
-.code
-
-
-
-// FileName: DN_PL_Core.asm
-// Author: Vivek Kumar
-// Description: Tasks for DN only case (16x8 block) for planar format
-
-
-
-// FileName: DN.asm
-// Author: Vivek Kumar
-// Description: Tasks for DN only case (16x8 block)
-
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: DNDI.inc
-// Author: Vivek Kumar
-// Description: Include file for DN, DI and DNDI
-// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
-
-
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//====================== Binding table (Explicit To DNDI)=========================================
-
-
-.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
-.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
-.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
-
-
-.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
-.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
-.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
-.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
-.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
-.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
-.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
-.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
-
-//r45
-//Use r45 as message header, so no need to "mov" the data.
-
-.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
-.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-// Message response (UV Copy); Use buffer 5
-.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Temp GRFs: For 42X to 422 Conversion
-.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
-.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
- // Message descriptor for sampler read
- // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
- // 1 (header present 1) 0 11 (SIMD32/64 mode)
- // 1000 (message type) 0000 (DI state index)
- // 00000000 (binding table index - set later)
- // = 0x040b8000
-
-
-// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
-
-
-//---------------------------------------------------------------------------
-// VDI Return Data format
-//---------------------------------------------------------------------------
-// Defines for DI enabled
-
-
-// Defines for DI disabled
-
-
-
-// FileName: DNDI_Command.asm
-// Author: Vivek Kumar
-// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
-
-// Prepare the DNDI send command
-mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
-mov (1) mwMSGHDR_DNDI(1,4)<1> r9.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
-mov (1) mwMSGHDR_DNDI(1,12)<1> r9.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
-
-send (8) udDNDI_RESP(0)<1> r18 0x2 0x45E8003:ud
-
-// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
-// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
-mov (2) r9.0<1>:w uwDNDI_RESP(4,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
-
-
-
-// FileName: DN_Hist_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DN history data to statistics surface
-
-// Write denoise history to memory
-mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
-
-
- mov (2) mudMSGHDR_HIST(1)<1> udDNDI_RESP(4,0)<2;2,1> // Move denoise history to MRF (4x2)
-
-
-shr (2) r27.0<1>:ud r9.0<2;2,1>:w 2:w // X,Y origin / 4
-add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
-mov (1) r27.2<1>:ud 0x10003:ud { NoDDChk } // block width and height
-
-mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
-send (8) null<1>:d r22 0x5 0x40A8021:ud
-
-
-
-// FileName: DNDI_Enc_Stats_Save.asm
-// Author: Vivek Kumar
-// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write encoder statistics to memory
-//Currently enable this only on Gen6 validation
-mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
-mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
-
-shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
-mul (1) acc0.1<1>:ud r9.1<0;1,0>:w 3:w // Y origin * 3
-shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
-mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x50003:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
-add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
-
-
- //Data block for Encoder Statistics
- //----------------------------------------------------
- //| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
- //----------------------------------------------------
- //| BNE | X | X | X | X |
- //----------------------------------------------------
- //| X | SVCM | X |
- //----------------------------------------------------
- //| SHCM | STAD | X |
- //----------------------------------------------------
- //| X | X |
- //----------------------------------------------------
- //| X | SVCM | X |
- //----------------------------------------------------
- //| SHCM | STAD | X |
- //----------------------------------------------------
- mov (1) mubMSGHDR_ENC_STATS(1,0)<1> ubDNDI_RESP(4,8)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
- mov (1) muwMSGHDR_ENC_STATS(1,3)<1> uwDNDI_RESP(4,11)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) muwMSGHDR_ENC_STATS(1,4)<1> uwDNDI_RESP(4,12)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (1) muwMSGHDR_ENC_STATS(1,9)<1> uwDNDI_RESP(4,8)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) muwMSGHDR_ENC_STATS(1,10)<1> uwDNDI_RESP(4,9)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
-
-
-send (8) null<1>:d r24 0x5 0x40A8021:ud
-
-
-
-// FileName: DN_Load_UV_NV12_16x8.asm
-// Author: Vivek Kumar
-// Description: Read UV for 16x8 block through DATAPORT
-
-
-
-// FileName: UVCopy_Load_16x8.asm
-// Author: Vivek Kumar
-// Description: Read UV for 16x8 block through DATAPORT
-
-//CHANGE : Read extra UV data to convert to 422. -rT
-//we are reading extra data in ALL cases irrespective of whether upsampling is reqd or not later on, to keep things simple.
-
-
- add (2) r27.0<1>:d r9.0<2;2,1>:w r4.4<2;2,1>:w // Source Y Block origin
- asr (1) r27.1<1>:d r27.1<0;1,0>:d 1:w { NoDDClr } // U/V block origin should be half of Y's
- mov (1) r27.2<1>:ud 0x4000F:ud { NoDDChk } // U/V block width and height (8x5)
- mov (8) mudMSGHDR_UVCOPY(0)<1> r27.0<8;8,1>:ud
- send (8) udDNDI_UV_RESP(0)<1> r36 0x4 0x2390001:ud
-
- //Update Header for Save
- mov (1) mudMSGHDR_UVCOPY(0,2)<1> 0x3000F:ud // U/V block width and height (8x4)
-
-
-
-// FileName: DN_Save_Y_16x8.asm
-// Author: Vivek Kumar
-// Description: Save one 16x8 blocks of Y channel of DN output for reference
-
-
-mov (8) mudDN_Y_OUT(0,0)<1> r0<8;8,1>:ud // message header
-mov (2) mudDN_Y_OUT(0,0)<1> r9.0<2;2,1>:w { NoDDClr } // X origin
-mov (1) mudDN_Y_OUT(0,2)<1> 0x7000F:ud { NoDDChk } // block width and height (16x8)
-
-//send out data through data port
-send (8) null<1>:d mudDN_Y_OUT 0x5 0xA0A8018:ud
-
-
-
-// FileName: DN_Save_UV_NV12_16x8.asm
-// Author: Vivek Kumar
-// Description: Save UV for 16x8 block through DATAPORT
-
-
-
-// FileName: UVCopy_Save_16x8.asm
-// Author: Vivek Kumar
-// Description: Save UV for 16x8 block through DATAPORT
-
-
-//Reuse the header from Load component
-//Header is modified at the end of load - to be usable for save.
-
- mov (8) mudMSGHDR_UVCOPY(1)<1> udDNDI_UV_RESP(0)<8;8,1>
- mov (8) mudMSGHDR_UVCOPY(2)<1> udDNDI_UV_RESP(1)<8;8,1>
- send (8) null<1>:d r36 0x5 0x60A8019:ud
-
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
-
-
-.end_code
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/PA_AVS_Buf_0.g4a b/src/shaders/post_processing/gen7/PA_AVS_Buf_0.g4a
deleted file mode 100644
index 6668336..0000000
--- a/src/shaders/post_processing/gen7/PA_AVS_Buf_0.g4a
+++ /dev/null
@@ -1,561 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 39 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PA_AVS_Buf_0.asm
-// Author: Vivek Kumar
-// Description: Loads 8x8 AVS/IEF Packed data into Buffer 0
-
-
-
-// FileName : PA_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF Packed data into Buffer N
-
-//On IVB, for AVS module - set buffer pointers offset according to AVS Layout.
-//Change it to Sample Unorm layout in Shuffle modules.
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- //NOTE: We need offsets for second halfof LAYER 0 - even if we do not load it.
- //Update the channel offset in the buffers for the lower 8x4 data for BUFFER_0.
- mov (1) r22.4<1>:ud 0x400040:ud
-
-
- //Check if layer is to be skipped
-
-
- // f0.1 pre-computed in Set_Layer_0
- (-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_0_
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x50EB400:ud //msg desc
-
- mov (1) r16.2:ud 0x00000000:ud // Enable ARGB channels
-
-
- //OPT: rAVS_PAYLOAD.1 and .7 --> use NODDCLR, NODDCHK -rT
- mov (1) r25.7<1>:ud r9.7:ud { NoDDClr }
- mov (1) r25.1<1>:ud r9.12:uw { NoDDChk }
-
-
- // set the vertical block number
-
-
- mov (8) r17.0:ud r25.0<8;8,1>:ud
-
- // Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
- // if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- // {
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- // }
- // else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- // {
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- // }
- // else{
- // modified_u_coord = u_coord;
- // }
- // Where u_left = u – 2*du + 3*ddu for IEF On
- // And u_left = u for IEF Off case
- //
-
- // check whether Gen7 AVS WA is enabled,
- mov (1) r14.8:uw f0.0:uw // save f0.0
-
- and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
- (-f0.0)jmpi (1) GEN7_AVS_WA_DONE_L0_0_
-
-
- // Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
-
- and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
- (f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
- (f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
- (f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
- (f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
- (-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
-
- and (1) r14.1:ud r2.3:uw 0xFFF8:uw
- asr (1) r14.1:ud r14.1:ud 3:d
- mov (1) r14.1:f r14.1:ud
-
- // Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
- mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
- add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
- add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
-
- //Check if the values are < 0 and account for (int) cast of negative numbers
-
- //(int)(u_left*width)
- cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
- mov (1) r14.0:d r14.0:f
- (f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
-
- //(int)(u_left*width + 5.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
- mov (1) r14.2:d r14.2:f
- (f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
-
- //(int)(u_left*width + 255.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
- mov (1) r14.3:d r14.3:f
- (f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
-
- mov (1) f0.0:uw 0:uw // clear flag
- //if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- (f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
- //else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- (-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- (f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
-
-
-GEN7_AVS_WA_DONE_L0_0_:
- mov (1) f0.0:uw r14.8:uw // restore f0.0
-
- send (1) uwBUFFER_0(0)<1> r16 0x2 a0.0:ud
- // Returns packed data in 16 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_0_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen7/PA_AVS_Buf_1.g4a b/src/shaders/post_processing/gen7/PA_AVS_Buf_1.g4a
deleted file mode 100644
index fecd538..0000000
--- a/src/shaders/post_processing/gen7/PA_AVS_Buf_1.g4a
+++ /dev/null
@@ -1,553 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 37 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PA_AVS_Buf_1.asm
-// Author: Vivek Kumar
-// Description: Loads 8x8 AVS/IEF Packed data into Buffer 1
-
-
-
-// FileName : PA_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF Packed data into Buffer N
-
-//On IVB, for AVS module - set buffer pointers offset according to AVS Layout.
-//Change it to Sample Unorm layout in Shuffle modules.
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- //Check if layer is to be skipped
-
-
- // f0.1 pre-computed in Set_Layer_0
- (-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_1_
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x50EB400:ud //msg desc
-
- mov (1) r16.2:ud 0x00000000:ud // Enable ARGB channels
-
-
- // set the vertical block number
-
- add (1) r25.1<1>:ud r9.12:uw 1:ud
-
-
- mov (8) r17.0:ud r25.0<8;8,1>:ud
-
- // Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
- // if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- // {
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- // }
- // else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- // {
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- // }
- // else{
- // modified_u_coord = u_coord;
- // }
- // Where u_left = u – 2*du + 3*ddu for IEF On
- // And u_left = u for IEF Off case
- //
-
- // check whether Gen7 AVS WA is enabled,
- mov (1) r14.8:uw f0.0:uw // save f0.0
-
- and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
- (-f0.0)jmpi (1) GEN7_AVS_WA_DONE_L0_1_
-
-
- // Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
-
- and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
- (f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
- (f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
- (f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
- (f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
- (-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
-
- and (1) r14.1:ud r2.3:uw 0xFFF8:uw
- asr (1) r14.1:ud r14.1:ud 3:d
- mov (1) r14.1:f r14.1:ud
-
- // Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
- mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
- add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
- add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
-
- //Check if the values are < 0 and account for (int) cast of negative numbers
-
- //(int)(u_left*width)
- cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
- mov (1) r14.0:d r14.0:f
- (f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
-
- //(int)(u_left*width + 5.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
- mov (1) r14.2:d r14.2:f
- (f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
-
- //(int)(u_left*width + 255.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
- mov (1) r14.3:d r14.3:f
- (f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
-
- mov (1) f0.0:uw 0:uw // clear flag
- //if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- (f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
- //else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- (-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- (f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
-
-
-GEN7_AVS_WA_DONE_L0_1_:
- mov (1) f0.0:uw r14.8:uw // restore f0.0
-
- send (1) uwBUFFER_1(0)<1> r16 0x2 a0.0:ud
- // Returns packed data in 16 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_1_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen7/PA_AVS_Buf_2.g4a b/src/shaders/post_processing/gen7/PA_AVS_Buf_2.g4a
deleted file mode 100644
index 494b26b..0000000
--- a/src/shaders/post_processing/gen7/PA_AVS_Buf_2.g4a
+++ /dev/null
@@ -1,554 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 37 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PA_AVS_Buf_2.asm
-// Author: Vivek Kumar
-// Description: Loads 8x8 AVS/IEF Packed data into Buffer 2
-
-
-
-// FileName : PA_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF Packed data into Buffer N
-
-//On IVB, for AVS module - set buffer pointers offset according to AVS Layout.
-//Change it to Sample Unorm layout in Shuffle modules.
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- //Check if layer is to be skipped
-
-
- // f0.1 pre-computed in Set_Layer_0
- (-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_2_
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x50EB400:ud //msg desc
-
- mov (1) r16.2:ud 0x00000000:ud // Enable ARGB channels
-
-
- // set the vertical block number
-
-
- add (1) r25.1<1>:ud r9.12:uw 2:ud
-
-
- mov (8) r17.0:ud r25.0<8;8,1>:ud
-
- // Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
- // if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- // {
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- // }
- // else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- // {
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- // }
- // else{
- // modified_u_coord = u_coord;
- // }
- // Where u_left = u – 2*du + 3*ddu for IEF On
- // And u_left = u for IEF Off case
- //
-
- // check whether Gen7 AVS WA is enabled,
- mov (1) r14.8:uw f0.0:uw // save f0.0
-
- and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
- (-f0.0)jmpi (1) GEN7_AVS_WA_DONE_L0_2_
-
-
- // Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
-
- and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
- (f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
- (f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
- (f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
- (f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
- (-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
-
- and (1) r14.1:ud r2.3:uw 0xFFF8:uw
- asr (1) r14.1:ud r14.1:ud 3:d
- mov (1) r14.1:f r14.1:ud
-
- // Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
- mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
- add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
- add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
-
- //Check if the values are < 0 and account for (int) cast of negative numbers
-
- //(int)(u_left*width)
- cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
- mov (1) r14.0:d r14.0:f
- (f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
-
- //(int)(u_left*width + 5.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
- mov (1) r14.2:d r14.2:f
- (f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
-
- //(int)(u_left*width + 255.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
- mov (1) r14.3:d r14.3:f
- (f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
-
- mov (1) f0.0:uw 0:uw // clear flag
- //if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- (f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
- //else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- (-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- (f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
-
-
-GEN7_AVS_WA_DONE_L0_2_:
- mov (1) f0.0:uw r14.8:uw // restore f0.0
-
- send (1) uwBUFFER_2(0)<1> r16 0x2 a0.0:ud
- // Returns packed data in 16 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_2_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen7/PA_AVS_Buf_3.g4a b/src/shaders/post_processing/gen7/PA_AVS_Buf_3.g4a
deleted file mode 100644
index 14d201f..0000000
--- a/src/shaders/post_processing/gen7/PA_AVS_Buf_3.g4a
+++ /dev/null
@@ -1,554 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 37 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PA_AVS_Buf_3.asm
-// Author: Vivek Kumar
-// Description: Loads 8x8 AVS/IEF Packed data into Buffer 3
-
-
-
-// FileName : PA_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF Packed data into Buffer N
-
-//On IVB, for AVS module - set buffer pointers offset according to AVS Layout.
-//Change it to Sample Unorm layout in Shuffle modules.
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- //Check if layer is to be skipped
-
-
- // f0.1 pre-computed in Set_Layer_0
- (-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_3_
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x50EB400:ud //msg desc
-
- mov (1) r16.2:ud 0x00000000:ud // Enable ARGB channels
-
-
- // set the vertical block number
-
-
- add (1) r25.1<1>:ud r9.12:uw 3:ud
-
-
- mov (8) r17.0:ud r25.0<8;8,1>:ud
-
- // Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
- // if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- // {
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- // }
- // else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- // {
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- // }
- // else{
- // modified_u_coord = u_coord;
- // }
- // Where u_left = u – 2*du + 3*ddu for IEF On
- // And u_left = u for IEF Off case
- //
-
- // check whether Gen7 AVS WA is enabled,
- mov (1) r14.8:uw f0.0:uw // save f0.0
-
- and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
- (-f0.0)jmpi (1) GEN7_AVS_WA_DONE_L0_3_
-
-
- // Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
-
- and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
- (f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
- (f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
- (f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
- (f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
- (-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
-
- and (1) r14.1:ud r2.3:uw 0xFFF8:uw
- asr (1) r14.1:ud r14.1:ud 3:d
- mov (1) r14.1:f r14.1:ud
-
- // Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
- mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
- add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
- add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
-
- //Check if the values are < 0 and account for (int) cast of negative numbers
-
- //(int)(u_left*width)
- cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
- mov (1) r14.0:d r14.0:f
- (f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
-
- //(int)(u_left*width + 5.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
- mov (1) r14.2:d r14.2:f
- (f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
-
- //(int)(u_left*width + 255.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
- mov (1) r14.3:d r14.3:f
- (f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
-
- mov (1) f0.0:uw 0:uw // clear flag
- //if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- (f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
- //else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- (-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- (f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
-
-
-GEN7_AVS_WA_DONE_L0_3_:
- mov (1) f0.0:uw r14.8:uw // restore f0.0
-
- send (1) uwBUFFER_3(0)<1> r16 0x2 a0.0:ud
- // Returns packed data in 16 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_3_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen7/PA_DI_422CP.g4a b/src/shaders/post_processing/gen7/PA_DI_422CP.g4a
deleted file mode 100644
index 04dc2ab..0000000
--- a/src/shaders/post_processing/gen7/PA_DI_422CP.g4a
+++ /dev/null
@@ -1,483 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 87 // Total instruction count
-// 1 // Total kernel count
-
-.kernel PA_DI_422CP
-.code
-
-
-
-// FileName: DI.asm
-// Author: Vivek Kumar
-// Description: Tasks for DI only case (16x4 block)
-
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: DNDI.inc
-// Author: Vivek Kumar
-// Description: Include file for DN, DI and DNDI
-// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
-
-
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//====================== Binding table (Explicit To DNDI)=========================================
-
-
-.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
-.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
-.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
-
-
-.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
-.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
-.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
-.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
-.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
-.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
-.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
-.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
-
-//r45
-//Use r45 as message header, so no need to "mov" the data.
-
-.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
-.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-// Message response (UV Copy); Use buffer 5
-.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Temp GRFs: For 42X to 422 Conversion
-.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
-.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
- // Message descriptor for sampler read
- // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
- // 1 (header present 1) 0 11 (SIMD32/64 mode)
- // 1000 (message type) 0000 (DI state index)
- // 00000000 (binding table index - set later)
- // = 0x040b8000
-
-
-// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
-
-
-//---------------------------------------------------------------------------
-// VDI Return Data format
-//---------------------------------------------------------------------------
-// Defines for DI enabled
-
-
-// Defines for DI disabled
-
-
-
-// FileName: DNDI_Command.asm
-// Author: Vivek Kumar
-// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
-
-// Prepare the DNDI send command
-mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
-mov (1) mwMSGHDR_DNDI(1,4)<1> r9.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
-mov (1) mwMSGHDR_DNDI(1,12)<1> r9.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
-
-send (8) udDNDI_RESP(0)<1> r18 0x2 0x4AE8003:ud
-
-// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
-// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
-mov (2) r9.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
-
-
-
-// FileName: DI_STMM_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write STMM to memory
-mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
-mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
-
-shr (1) mudMSGHDR_STMM(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
-mov (1) mudMSGHDR_STMM(0,1)<1> r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
-mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
-
-send (8) null<1>:d r20 0x5 0x40A8021:ud
-
-
-
-// FileName: DNDI_Enc_Stats_Save.asm
-// Author: Vivek Kumar
-// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write encoder statistics to memory
-//Currently enable this only on Gen6 validation
-mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
-mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
-
-shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
-mul (1) acc0.1<1>:ud r9.1<0;1,0>:w 3:w // Y origin * 3
-shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
-mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
-add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
-
-
- //Data block for Encoder Statistics
- //----------------------------------------------------
- //| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
- //----------------------------------------------------
- //| BNE | MCNT | FCNT | TCNT | X | X | X | X |
- //----------------------------------------------------
- //| DcTpT | SVCM | DcBpT | DcTpB |
- //----------------------------------------------------
- //| SHCM | STAD | DcTcB | DcBpB |
- //----------------------------------------------------
- mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
-
-
-send (8) null<1>:d r24 0x5 0x40A8021:ud
-
-
-
-// FileName: DI_Save_422CP_16x4.asm
-// Author: Vivek Kumar
-// Description: Save two 16x4 blocks of DI output in 422 format to Color Pipe (IECP)
-
-
-.declare mubMSGHDR_DI_OUT1_1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mubMSGHDR_DI_OUT1_2 Base=r21.0 ElementSize=1 Type=ub
-
-
-.declare mubMSGHDR_DI_OUT2_1 Base=r24.0 ElementSize=1 Type=ub
-
-
-.declare mubMSGHDR_DI_OUT2_2 Base=r27.0 ElementSize=1 Type=ub
-
-
-mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
-shl (1) r27.0<1>:ud r9.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
-mov (1) r27.1<1>:ud r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
-mov (1) r27.2<1>:ud 0x3000F:ud { NoDDClr, NoDDChk } // Block width and height (16x8)
-
-//M0.3 - 0 - CP Enable, 1 - Area of Interest, 3:2 Message Format(TBD), 4:3 - Ignored, 31:5 CP state pointer
-//Compose area-of-interest bit + color pipe state pointer
-or (1) r27.3<1>:ud r2.4<0;1,0>:ud r9.26<0;1,0>:b { NoDDChk }
-
-//prepare the message headers
-mov (8) r18.0<1>:ud r27<8;8,1>:ud
-mov (8) r24.0<1>:ud r27<8;8,1>:ud
-
-
-// Pack 2nd field Y; First 8x4 block
- mov (8) mubMSGHDR_DI_OUT1_1(1)<2> ubDNDI_RESP(0,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_1(1,16)<2> ubDNDI_RESP(0,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_1(2)<2> ubDNDI_RESP(0,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_1(2,16)<2> ubDNDI_RESP(0,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
-// Pack 2nd field U, V; First 8x4 block
- mov (4) mubMSGHDR_DI_OUT1_1(1,1)<4> ubDNDI_RESP(2,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(1,17)<4> ubDNDI_RESP(2,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT1_1(1,3)<4> ubDNDI_RESP(2,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(1,19)<4> ubDNDI_RESP(2,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(2,1)<4> ubDNDI_RESP(2,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(2,17)<4> ubDNDI_RESP(2,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT1_1(2,3)<4> ubDNDI_RESP(2,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(2,19)<4> ubDNDI_RESP(2,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-
-// Pack 2nd field Y; Second 8x4 block
-mov (8) r21.0<1>:ud r18.0<8;8,1>:ud
-add (1) r21.0<1>:ud r21.0<0;1,0>:w 0x10:w
-
- mov (8) mubMSGHDR_DI_OUT1_2(1)<2> ubDNDI_RESP(0,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_2(1,16)<2> ubDNDI_RESP(0,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_2(2)<2> ubDNDI_RESP(0,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_2(2,16)<2> ubDNDI_RESP(0,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
-// Pack 2nd field U, V; Second 8x4 block
- mov (4) mubMSGHDR_DI_OUT1_2(1,1)<4> ubDNDI_RESP(2,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(1,17)<4> ubDNDI_RESP(2,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT1_2(1,3)<4> ubDNDI_RESP(2,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(1,19)<4> ubDNDI_RESP(2,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(2,1)<4> ubDNDI_RESP(2,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(2,17)<4> ubDNDI_RESP(2,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT1_2(2,3)<4> ubDNDI_RESP(2,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(2,19)<4> ubDNDI_RESP(2,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-send (8) null<1>:d r18.0 0x5 0x60A801B:ud
-send (8) null<1>:d r21.0 0x5 0x60A801B:ud
-
-// Pack 1st field Y; 1st 8x4 block
- mov (8) mubMSGHDR_DI_OUT2_1(1)<2> ubDNDI_RESP(4,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_1(1,16)<2> ubDNDI_RESP(4,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_1(2)<2> ubDNDI_RESP(4,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_1(2,16)<2> ubDNDI_RESP(4,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
-// Pack 1st field U,V; 1st 8x4 block
- mov (4) mubMSGHDR_DI_OUT2_1(1,1)<4> ubDNDI_RESP(6,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(1,17)<4> ubDNDI_RESP(6,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT2_1(1,3)<4> ubDNDI_RESP(6,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(1,19)<4> ubDNDI_RESP(6,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(2,1)<4> ubDNDI_RESP(6,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(2,17)<4> ubDNDI_RESP(6,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT2_1(2,3)<4> ubDNDI_RESP(6,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(2,19)<4> ubDNDI_RESP(6,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-// Pack 1st field Y; 2nd 8x4 block
-mov (8) r27.0<1>:ud r24.0<8;8,1>:ud
-add (1) r27.0<1>:ud r27.0<0;1,0>:w 0x10:w
-
- mov (8) mubMSGHDR_DI_OUT2_2(1)<2> ubDNDI_RESP(4,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_2(1,16)<2> ubDNDI_RESP(4,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_2(2)<2> ubDNDI_RESP(4,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_2(2,16)<2> ubDNDI_RESP(4,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
-// Pack 1st field U, V; 2nd 8x4 block
- mov (4) mubMSGHDR_DI_OUT2_2(1,1)<4> ubDNDI_RESP(6,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(1,17)<4> ubDNDI_RESP(6,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT2_2(1,3)<4> ubDNDI_RESP(6,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(1,19)<4> ubDNDI_RESP(6,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(2,1)<4> ubDNDI_RESP(6,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(2,17)<4> ubDNDI_RESP(6,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT2_2(2,3)<4> ubDNDI_RESP(6,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(2,19)<4> ubDNDI_RESP(6,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-send (8) null<1>:d r24.0 0x5 0x60A801E:ud
-send (8) null<1>:d r27.0 0x5 0x60A801E:ud
-
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
-
-
-.end_code
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/PA_DI_PA.g4a b/src/shaders/post_processing/gen7/PA_DI_PA.g4a
deleted file mode 100644
index d269665..0000000
--- a/src/shaders/post_processing/gen7/PA_DI_PA.g4a
+++ /dev/null
@@ -1,421 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 57 // Total instruction count
-// 1 // Total kernel count
-
-.kernel PA_DI_PA
-.code
-
-
-
-// FileName: DI.asm
-// Author: Vivek Kumar
-// Description: Tasks for DI only case (16x4 block)
-
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: DNDI.inc
-// Author: Vivek Kumar
-// Description: Include file for DN, DI and DNDI
-// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
-
-
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//====================== Binding table (Explicit To DNDI)=========================================
-
-
-.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
-.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
-.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
-
-
-.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
-.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
-.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
-.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
-.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
-.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
-.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
-.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
-
-//r45
-//Use r45 as message header, so no need to "mov" the data.
-
-.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
-.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-// Message response (UV Copy); Use buffer 5
-.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Temp GRFs: For 42X to 422 Conversion
-.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
-.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
- // Message descriptor for sampler read
- // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
- // 1 (header present 1) 0 11 (SIMD32/64 mode)
- // 1000 (message type) 0000 (DI state index)
- // 00000000 (binding table index - set later)
- // = 0x040b8000
-
-
-// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
-
-
-//---------------------------------------------------------------------------
-// VDI Return Data format
-//---------------------------------------------------------------------------
-// Defines for DI enabled
-
-
-// Defines for DI disabled
-
-
-
-// FileName: DNDI_Command.asm
-// Author: Vivek Kumar
-// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
-
-// Prepare the DNDI send command
-mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
-mov (1) mwMSGHDR_DNDI(1,4)<1> r9.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
-mov (1) mwMSGHDR_DNDI(1,12)<1> r9.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
-
-send (8) udDNDI_RESP(0)<1> r18 0x2 0x4AE8003:ud
-
-// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
-// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
-mov (2) r9.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
-
-
-
-// FileName: DI_STMM_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write STMM to memory
-mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
-mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
-
-shr (1) mudMSGHDR_STMM(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
-mov (1) mudMSGHDR_STMM(0,1)<1> r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
-mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
-
-send (8) null<1>:d r20 0x5 0x40A8021:ud
-
-
-
-// FileName: DNDI_Enc_Stats_Save.asm
-// Author: Vivek Kumar
-// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write encoder statistics to memory
-//Currently enable this only on Gen6 validation
-mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
-mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
-
-shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
-mul (1) acc0.1<1>:ud r9.1<0;1,0>:w 3:w // Y origin * 3
-shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
-mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
-add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
-
-
- //Data block for Encoder Statistics
- //----------------------------------------------------
- //| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
- //----------------------------------------------------
- //| BNE | MCNT | FCNT | TCNT | X | X | X | X |
- //----------------------------------------------------
- //| DcTpT | SVCM | DcBpT | DcTpB |
- //----------------------------------------------------
- //| SHCM | STAD | DcTcB | DcBpB |
- //----------------------------------------------------
- mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
-
-
-send (8) null<1>:d r24 0x5 0x40A8021:ud
-
-
-
-// FileName: DI_Save_PA_16x4.asm
-// Author: Vivek Kumar
-// Description: Save two 16x4 blocks of DI output in Packed format
-
-
-add (4) a0.4<1>:uw r2.28<4;4,1>:ub 608:w // Initial Y,U,V offset in YUV422 block; it starts at m20
-
-mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
-shl (1) r27.0<1>:d r9.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
-mov (1) r27.1<1>:d r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
-mov (1) r27.2<1>:ud 0x3001F:ud { NoDDChk } // Block width and height (32x8)
-
-//prepare the message headers
-mov (8) r18.0<1>:ud r27<8;8,1>:ud
-mov (8) r23.0<1>:ud r27<8;8,1>:ud
-
-// Pack 2nd field Y
- mov (16) r[a0.4, 0]<2> ubDNDI_RESP(0,0) { NoDDClr }
- mov (16) r[a0.4, 32]<2> ubDNDI_RESP(0,16) { NoDDClr }
- mov (16) r[a0.4, 64]<2> ubDNDI_RESP(0,32) { NoDDClr }
- mov (16) r[a0.4, 96]<2> ubDNDI_RESP(0,48) { NoDDClr }
-// Pack 2nd field U
- mov (8) r[a0.5, 0]<4> ubDNDI_RESP(2,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 32]<4> ubDNDI_RESP(2,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 64]<4> ubDNDI_RESP(2,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 96]<4> ubDNDI_RESP(2,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
-// Pack 2nd field V
- mov (8) r[a0.6, 0]<4> ubDNDI_RESP(2,0)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 32]<4> ubDNDI_RESP(2,16)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 64]<4> ubDNDI_RESP(2,32)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 96]<4> ubDNDI_RESP(2,48)<16;8,2> { NoDDChk } //Vpixels
-
-// Pack 1st field Y
- mov (16) r[a0.4, 160]<2> ubDNDI_RESP(4,0) { NoDDClr }
- mov (16) r[a0.4, 192]<2> ubDNDI_RESP(4,16) { NoDDClr }
- mov (16) r[a0.4, 224]<2> ubDNDI_RESP(4,32) { NoDDClr }
- mov (16) r[a0.4, 256]<2> ubDNDI_RESP(4,48) { NoDDClr }
-// Pack 1st field U
- mov (8) r[a0.5, 160]<4> ubDNDI_RESP(6,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 192]<4> ubDNDI_RESP(6,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 224]<4> ubDNDI_RESP(6,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 256]<4> ubDNDI_RESP(6,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
-// Pack 1st field V
- mov (8) r[a0.6, 160]<4> ubDNDI_RESP(6,0)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 192]<4> ubDNDI_RESP(6,16)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 224]<4> ubDNDI_RESP(6,32)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 256]<4> ubDNDI_RESP(6,48)<16;8,2> { NoDDChk } //Vpixels
-
-//save the previous frame
-send (8) null<1>:d r18.0 0x5 0xA0A801B:ud
-
-//save the current frame
-send (8) null<1>:d r23.0 0x5 0xA0A801E:ud
-
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
-
-
-.end_code
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/PA_DNDI_422CP.g4a b/src/shaders/post_processing/gen7/PA_DNDI_422CP.g4a
deleted file mode 100644
index 84e2c30..0000000
--- a/src/shaders/post_processing/gen7/PA_DNDI_422CP.g4a
+++ /dev/null
@@ -1,559 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 127 // Total instruction count
-// 1 // Total kernel count
-
-.kernel PA_DNDI_422CP
-.code
-
-
-
-// FileName: DNDI_PL_Core.asm
-// Author: Tatiya, Rupesh
-
-
-
-// FileName: DNDI_Core.asm
-// Author: Vivek Kumar
-// Description: Tasks for DN+DI case (16x4 block)
-
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: DNDI.inc
-// Author: Vivek Kumar
-// Description: Include file for DN, DI and DNDI
-// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
-
-
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//====================== Binding table (Explicit To DNDI)=========================================
-
-
-.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
-.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
-.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
-
-
-.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
-.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
-.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
-.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
-.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
-.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
-.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
-.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
-
-//r45
-//Use r45 as message header, so no need to "mov" the data.
-
-.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
-.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-// Message response (UV Copy); Use buffer 5
-.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Temp GRFs: For 42X to 422 Conversion
-.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
-.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
- // Message descriptor for sampler read
- // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
- // 1 (header present 1) 0 11 (SIMD32/64 mode)
- // 1000 (message type) 0000 (DI state index)
- // 00000000 (binding table index - set later)
- // = 0x040b8000
-
-
-// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
-
-
-//---------------------------------------------------------------------------
-// VDI Return Data format
-//---------------------------------------------------------------------------
-// Defines for DI enabled
-
-
-// Defines for DI disabled
-
-
-
-// FileName: DNDI_Command.asm
-// Author: Vivek Kumar
-// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
-
-// Prepare the DNDI send command
-mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
-mov (1) mwMSGHDR_DNDI(1,4)<1> r9.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
-mov (1) mwMSGHDR_DNDI(1,12)<1> r9.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
-
-send (8) udDNDI_RESP(0)<1> r18 0x2 0x4CE8003:ud
-
-// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
-// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
-mov (2) r9.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
-
-
-
-// FileName: DI_STMM_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write STMM to memory
-mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
-mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
-
-shr (1) mudMSGHDR_STMM(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
-mov (1) mudMSGHDR_STMM(0,1)<1> r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
-mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
-
-send (8) null<1>:d r20 0x5 0x40A8021:ud
-
-
-
-// FileName: DN_Hist_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DN history data to statistics surface
-
-// Write denoise history to memory
-mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
-
- mov (1) mudMSGHDR_HIST(1)<1> udDNDI_RESP(9,0)<0;1,0> // Move denoise history to MRF (4x1)
-
-
-shr (2) r27.0<1>:ud r9.0<2;2,1>:w 2:w // X,Y origin / 4
-add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
-mov (1) r27.2<1>:ud 0x3:ud { NoDDChk } // block width and height
-
-mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
-send (8) null<1>:d r22 0x5 0x40A8021:ud
-
-
-
-// FileName: DNDI_Enc_Stats_Save.asm
-// Author: Vivek Kumar
-// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write encoder statistics to memory
-//Currently enable this only on Gen6 validation
-mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
-mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
-
-shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
-mul (1) acc0.1<1>:ud r9.1<0;1,0>:w 3:w // Y origin * 3
-shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
-mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
-add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
-
-
- //Data block for Encoder Statistics
- //----------------------------------------------------
- //| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
- //----------------------------------------------------
- //| BNE | MCNT | FCNT | TCNT | X | X | X | X |
- //----------------------------------------------------
- //| DcTpT | SVCM | DcBpT | DcTpB |
- //----------------------------------------------------
- //| SHCM | STAD | DcTcB | DcBpB |
- //----------------------------------------------------
- mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
-
-
-send (8) null<1>:d r24 0x5 0x40A8021:ud
-
-
-
-// FileName: DN_Save_PA_16x4.asm
-// Author: Vivek Kumar
-// Description: Save one 16x4 blocks of DN output in Packed format for reference
-
-
- // check top/bottom field first
-cmp.e.f0.0 (1) null<1>:w r1.28<0;1,0>:ub 1:w
-
-add (4) a0.4<1>:uw r4.0<4;4,1>:ub 1024:w // Initial Y,U,V offset in YUV422 block; it starts at m14
-
-mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
-shl (1) mdMSGHDR_DN_OUT(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } // X origin * 2 (422 output)
-mov (1) mdMSGHDR_DN_OUT(0,1)<1> r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
-mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x3001F:ud { NoDDChk } // block width and height (32x8)
-
-(f0.0) jmpi (1) TOP_FIELD_FIRST
-
-BOTTOM_FIELD_FIRST:
- mov (16) r[a0.4, 0]<2>:ub ubDNDI_RESP(10,0) { NoDDClr } // 2nd field luma from current frame (line 0,2)
- mov (16) r[a0.4, 32]<2>:ub ubDNDI_RESP(4,16) { NoDDClr } // 1st field luma from current frame (line 1,3)
- mov (16) r[a0.4, 64]<2>:ub ubDNDI_RESP(10,16) { NoDDClr } // 2nd field luma from current frame (line 0,2)
- mov (16) r[a0.4, 96]<2>:ub ubDNDI_RESP(5,16) { NoDDClr } // 1st field luma from current frame (line 1,3)
- mov (8) r[a0.5, 0]<4>:ub ubDNDI_RESP(11,1)<16;8,2> { NoDDClr, NoDDChk } // 2nd field U from current frame (line 0,2)
- mov (8) r[a0.5, 32]<4>:ub ubDNDI_RESP(6,17)<16;8,2> { NoDDClr, NoDDChk } // 1st field U from current frame (line 1,3)
- mov (8) r[a0.5, 64]<4>:ub ubDNDI_RESP(11,17)<16;8,2> { NoDDClr, NoDDChk } // 2nd field U from current frame (line 0,2)
- mov (8) r[a0.5, 96]<4>:ub ubDNDI_RESP(7,17)<16;8,2> { NoDDClr, NoDDChk } // 1st field U from current frame (line 1,3)
- mov (8) r[a0.6, 0]<4>:ub ubDNDI_RESP(11,0)<16;8,2> { NoDDChk } // 2nd field V from current frame (line 0,2)
- mov (8) r[a0.6, 32]<4>:ub ubDNDI_RESP(6,16)<16;8,2> { NoDDChk } // 1st field U from current frame (line 1,3)
- mov (8) r[a0.6, 64]<4>:ub ubDNDI_RESP(11,16)<16;8,2> { NoDDChk } // 2nd field V from current frame (line 0,2)
- mov (8) r[a0.6, 96]<4>:ub ubDNDI_RESP(7,16)<16;8,2> { NoDDChk } // 1st field U from current frame (line 1,3)
-jmpi (1) SAVE_DN_CURR
-
-TOP_FIELD_FIRST:
- mov (16) r[a0.4, 0]<2>:ub ubDNDI_RESP(4,0) { NoDDClr } // 1st field luma from current frame (line 0,2)
- mov (16) r[a0.4, 32]<2>:ub ubDNDI_RESP(10,0) { NoDDClr } // 2nd field luma from current frame (line 1,3)
- mov (16) r[a0.4, 64]<2>:ub ubDNDI_RESP(5,0) { NoDDClr } // 1st field luma from current frame (line 0,2)
- mov (16) r[a0.4, 96]<2>:ub ubDNDI_RESP(10,16) { NoDDClr } // 2nd field luma from current frame (line 1,3)
- mov (8) r[a0.5, 0]<4>:ub ubDNDI_RESP(6,1)<16;8,2> { NoDDClr, NoDDChk } // 1st field U from current frame (line 0,2)
- mov (8) r[a0.5, 32]<4>:ub ubDNDI_RESP(11,1)<16;8,2> { NoDDClr, NoDDChk } // 2nd field U from current frame (line 1,3)
- mov (8) r[a0.5, 64]<4>:ub ubDNDI_RESP(7,1)<16;8,2> { NoDDClr, NoDDChk } // 1st field U from current frame (line 0,2)
- mov (8) r[a0.5, 96]<4>:ub ubDNDI_RESP(11,17)<16;8,2> { NoDDClr, NoDDChk } // 2nd field U from current frame (line 1,3)
- mov (8) r[a0.6, 0]<4>:ub ubDNDI_RESP(6,0)<16;8,2> { NoDDChk } // 1st field V from current frame (line 0,2)
- mov (8) r[a0.6, 32]<4>:ub ubDNDI_RESP(11,0)<16;8,2> { NoDDChk } // 2nd field V from current frame (line 1,3)
- mov (8) r[a0.6, 64]<4>:ub ubDNDI_RESP(7,0)<16;8,2> { NoDDChk } // 1st field V from current frame (line 0,2)
- mov (8) r[a0.6, 96]<4>:ub ubDNDI_RESP(11,16)<16;8,2> { NoDDChk } // 2nd field V from current frame (line 1,3)
-
-SAVE_DN_CURR:
-//send out data through data port
-send (8) null<1>:d r31.0 0x5 0xA0A8018:ud
-
-
-
-// FileName: DI_Save_422CP_16x4.asm
-// Author: Vivek Kumar
-// Description: Save two 16x4 blocks of DI output in 422 format to Color Pipe (IECP)
-
-
-.declare mubMSGHDR_DI_OUT1_1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mubMSGHDR_DI_OUT1_2 Base=r21.0 ElementSize=1 Type=ub
-
-
-.declare mubMSGHDR_DI_OUT2_1 Base=r24.0 ElementSize=1 Type=ub
-
-
-.declare mubMSGHDR_DI_OUT2_2 Base=r27.0 ElementSize=1 Type=ub
-
-
-mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
-shl (1) r27.0<1>:ud r9.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
-mov (1) r27.1<1>:ud r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
-mov (1) r27.2<1>:ud 0x3000F:ud { NoDDClr, NoDDChk } // Block width and height (16x8)
-
-//M0.3 - 0 - CP Enable, 1 - Area of Interest, 3:2 Message Format(TBD), 4:3 - Ignored, 31:5 CP state pointer
-//Compose area-of-interest bit + color pipe state pointer
-or (1) r27.3<1>:ud r2.4<0;1,0>:ud r9.26<0;1,0>:b { NoDDChk }
-
-//prepare the message headers
-mov (8) r18.0<1>:ud r27<8;8,1>:ud
-mov (8) r24.0<1>:ud r27<8;8,1>:ud
-
-
-// Pack 2nd field Y; First 8x4 block
- mov (8) mubMSGHDR_DI_OUT1_1(1)<2> ubDNDI_RESP(0,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_1(1,16)<2> ubDNDI_RESP(0,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_1(2)<2> ubDNDI_RESP(0,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_1(2,16)<2> ubDNDI_RESP(0,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
-// Pack 2nd field U, V; First 8x4 block
- mov (4) mubMSGHDR_DI_OUT1_1(1,1)<4> ubDNDI_RESP(2,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(1,17)<4> ubDNDI_RESP(2,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT1_1(1,3)<4> ubDNDI_RESP(2,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(1,19)<4> ubDNDI_RESP(2,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(2,1)<4> ubDNDI_RESP(2,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(2,17)<4> ubDNDI_RESP(2,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT1_1(2,3)<4> ubDNDI_RESP(2,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(2,19)<4> ubDNDI_RESP(2,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-
-// Pack 2nd field Y; Second 8x4 block
-mov (8) r21.0<1>:ud r18.0<8;8,1>:ud
-add (1) r21.0<1>:ud r21.0<0;1,0>:w 0x10:w
-
- mov (8) mubMSGHDR_DI_OUT1_2(1)<2> ubDNDI_RESP(0,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_2(1,16)<2> ubDNDI_RESP(0,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_2(2)<2> ubDNDI_RESP(0,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_2(2,16)<2> ubDNDI_RESP(0,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
-// Pack 2nd field U, V; Second 8x4 block
- mov (4) mubMSGHDR_DI_OUT1_2(1,1)<4> ubDNDI_RESP(2,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(1,17)<4> ubDNDI_RESP(2,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT1_2(1,3)<4> ubDNDI_RESP(2,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(1,19)<4> ubDNDI_RESP(2,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(2,1)<4> ubDNDI_RESP(2,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(2,17)<4> ubDNDI_RESP(2,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT1_2(2,3)<4> ubDNDI_RESP(2,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(2,19)<4> ubDNDI_RESP(2,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-send (8) null<1>:d r18.0 0x5 0x60A801B:ud
-send (8) null<1>:d r21.0 0x5 0x60A801B:ud
-
-// Pack 1st field Y; 1st 8x4 block
- mov (8) mubMSGHDR_DI_OUT2_1(1)<2> ubDNDI_RESP(4,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_1(1,16)<2> ubDNDI_RESP(4,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_1(2)<2> ubDNDI_RESP(4,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_1(2,16)<2> ubDNDI_RESP(4,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
-// Pack 1st field U,V; 1st 8x4 block
- mov (4) mubMSGHDR_DI_OUT2_1(1,1)<4> ubDNDI_RESP(6,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(1,17)<4> ubDNDI_RESP(6,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT2_1(1,3)<4> ubDNDI_RESP(6,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(1,19)<4> ubDNDI_RESP(6,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(2,1)<4> ubDNDI_RESP(6,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(2,17)<4> ubDNDI_RESP(6,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT2_1(2,3)<4> ubDNDI_RESP(6,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(2,19)<4> ubDNDI_RESP(6,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-// Pack 1st field Y; 2nd 8x4 block
-mov (8) r27.0<1>:ud r24.0<8;8,1>:ud
-add (1) r27.0<1>:ud r27.0<0;1,0>:w 0x10:w
-
- mov (8) mubMSGHDR_DI_OUT2_2(1)<2> ubDNDI_RESP(4,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_2(1,16)<2> ubDNDI_RESP(4,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_2(2)<2> ubDNDI_RESP(4,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_2(2,16)<2> ubDNDI_RESP(4,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
-// Pack 1st field U, V; 2nd 8x4 block
- mov (4) mubMSGHDR_DI_OUT2_2(1,1)<4> ubDNDI_RESP(6,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(1,17)<4> ubDNDI_RESP(6,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT2_2(1,3)<4> ubDNDI_RESP(6,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(1,19)<4> ubDNDI_RESP(6,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(2,1)<4> ubDNDI_RESP(6,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(2,17)<4> ubDNDI_RESP(6,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT2_2(2,3)<4> ubDNDI_RESP(6,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(2,19)<4> ubDNDI_RESP(6,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-send (8) null<1>:d r24.0 0x5 0x60A801E:ud
-send (8) null<1>:d r27.0 0x5 0x60A801E:ud
-
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
-
-
-.end_code
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/PA_DNDI_PA.g4a b/src/shaders/post_processing/gen7/PA_DNDI_PA.g4a
deleted file mode 100644
index a737bdb..0000000
--- a/src/shaders/post_processing/gen7/PA_DNDI_PA.g4a
+++ /dev/null
@@ -1,497 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 97 // Total instruction count
-// 1 // Total kernel count
-
-.kernel PA_DNDI_PA
-.code
-
-
-
-// FileName: DNDI_PL_Core.asm
-// Author: Tatiya, Rupesh
-
-
-
-// FileName: DNDI_Core.asm
-// Author: Vivek Kumar
-// Description: Tasks for DN+DI case (16x4 block)
-
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: DNDI.inc
-// Author: Vivek Kumar
-// Description: Include file for DN, DI and DNDI
-// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
-
-
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//====================== Binding table (Explicit To DNDI)=========================================
-
-
-.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
-.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
-.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
-
-
-.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
-.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
-.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
-.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
-.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
-.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
-.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
-.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
-
-//r45
-//Use r45 as message header, so no need to "mov" the data.
-
-.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
-.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-// Message response (UV Copy); Use buffer 5
-.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Temp GRFs: For 42X to 422 Conversion
-.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
-.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
- // Message descriptor for sampler read
- // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
- // 1 (header present 1) 0 11 (SIMD32/64 mode)
- // 1000 (message type) 0000 (DI state index)
- // 00000000 (binding table index - set later)
- // = 0x040b8000
-
-
-// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
-
-
-//---------------------------------------------------------------------------
-// VDI Return Data format
-//---------------------------------------------------------------------------
-// Defines for DI enabled
-
-
-// Defines for DI disabled
-
-
-
-// FileName: DNDI_Command.asm
-// Author: Vivek Kumar
-// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
-
-// Prepare the DNDI send command
-mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
-mov (1) mwMSGHDR_DNDI(1,4)<1> r9.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
-mov (1) mwMSGHDR_DNDI(1,12)<1> r9.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
-
-send (8) udDNDI_RESP(0)<1> r18 0x2 0x4CE8003:ud
-
-// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
-// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
-mov (2) r9.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
-
-
-
-// FileName: DI_STMM_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write STMM to memory
-mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
-mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
-
-shr (1) mudMSGHDR_STMM(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
-mov (1) mudMSGHDR_STMM(0,1)<1> r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
-mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
-
-send (8) null<1>:d r20 0x5 0x40A8021:ud
-
-
-
-// FileName: DN_Hist_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DN history data to statistics surface
-
-// Write denoise history to memory
-mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
-
- mov (1) mudMSGHDR_HIST(1)<1> udDNDI_RESP(9,0)<0;1,0> // Move denoise history to MRF (4x1)
-
-
-shr (2) r27.0<1>:ud r9.0<2;2,1>:w 2:w // X,Y origin / 4
-add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
-mov (1) r27.2<1>:ud 0x3:ud { NoDDChk } // block width and height
-
-mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
-send (8) null<1>:d r22 0x5 0x40A8021:ud
-
-
-
-// FileName: DNDI_Enc_Stats_Save.asm
-// Author: Vivek Kumar
-// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write encoder statistics to memory
-//Currently enable this only on Gen6 validation
-mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
-mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
-
-shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
-mul (1) acc0.1<1>:ud r9.1<0;1,0>:w 3:w // Y origin * 3
-shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
-mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
-add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
-
-
- //Data block for Encoder Statistics
- //----------------------------------------------------
- //| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
- //----------------------------------------------------
- //| BNE | MCNT | FCNT | TCNT | X | X | X | X |
- //----------------------------------------------------
- //| DcTpT | SVCM | DcBpT | DcTpB |
- //----------------------------------------------------
- //| SHCM | STAD | DcTcB | DcBpB |
- //----------------------------------------------------
- mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
-
-
-send (8) null<1>:d r24 0x5 0x40A8021:ud
-
-
-
-// FileName: DN_Save_PA_16x4.asm
-// Author: Vivek Kumar
-// Description: Save one 16x4 blocks of DN output in Packed format for reference
-
-
- // check top/bottom field first
-cmp.e.f0.0 (1) null<1>:w r1.28<0;1,0>:ub 1:w
-
-add (4) a0.4<1>:uw r4.0<4;4,1>:ub 1024:w // Initial Y,U,V offset in YUV422 block; it starts at m14
-
-mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
-shl (1) mdMSGHDR_DN_OUT(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } // X origin * 2 (422 output)
-mov (1) mdMSGHDR_DN_OUT(0,1)<1> r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
-mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x3001F:ud { NoDDChk } // block width and height (32x8)
-
-(f0.0) jmpi (1) TOP_FIELD_FIRST
-
-BOTTOM_FIELD_FIRST:
- mov (16) r[a0.4, 0]<2>:ub ubDNDI_RESP(10,0) { NoDDClr } // 2nd field luma from current frame (line 0,2)
- mov (16) r[a0.4, 32]<2>:ub ubDNDI_RESP(4,16) { NoDDClr } // 1st field luma from current frame (line 1,3)
- mov (16) r[a0.4, 64]<2>:ub ubDNDI_RESP(10,16) { NoDDClr } // 2nd field luma from current frame (line 0,2)
- mov (16) r[a0.4, 96]<2>:ub ubDNDI_RESP(5,16) { NoDDClr } // 1st field luma from current frame (line 1,3)
- mov (8) r[a0.5, 0]<4>:ub ubDNDI_RESP(11,1)<16;8,2> { NoDDClr, NoDDChk } // 2nd field U from current frame (line 0,2)
- mov (8) r[a0.5, 32]<4>:ub ubDNDI_RESP(6,17)<16;8,2> { NoDDClr, NoDDChk } // 1st field U from current frame (line 1,3)
- mov (8) r[a0.5, 64]<4>:ub ubDNDI_RESP(11,17)<16;8,2> { NoDDClr, NoDDChk } // 2nd field U from current frame (line 0,2)
- mov (8) r[a0.5, 96]<4>:ub ubDNDI_RESP(7,17)<16;8,2> { NoDDClr, NoDDChk } // 1st field U from current frame (line 1,3)
- mov (8) r[a0.6, 0]<4>:ub ubDNDI_RESP(11,0)<16;8,2> { NoDDChk } // 2nd field V from current frame (line 0,2)
- mov (8) r[a0.6, 32]<4>:ub ubDNDI_RESP(6,16)<16;8,2> { NoDDChk } // 1st field U from current frame (line 1,3)
- mov (8) r[a0.6, 64]<4>:ub ubDNDI_RESP(11,16)<16;8,2> { NoDDChk } // 2nd field V from current frame (line 0,2)
- mov (8) r[a0.6, 96]<4>:ub ubDNDI_RESP(7,16)<16;8,2> { NoDDChk } // 1st field U from current frame (line 1,3)
-jmpi (1) SAVE_DN_CURR
-
-TOP_FIELD_FIRST:
- mov (16) r[a0.4, 0]<2>:ub ubDNDI_RESP(4,0) { NoDDClr } // 1st field luma from current frame (line 0,2)
- mov (16) r[a0.4, 32]<2>:ub ubDNDI_RESP(10,0) { NoDDClr } // 2nd field luma from current frame (line 1,3)
- mov (16) r[a0.4, 64]<2>:ub ubDNDI_RESP(5,0) { NoDDClr } // 1st field luma from current frame (line 0,2)
- mov (16) r[a0.4, 96]<2>:ub ubDNDI_RESP(10,16) { NoDDClr } // 2nd field luma from current frame (line 1,3)
- mov (8) r[a0.5, 0]<4>:ub ubDNDI_RESP(6,1)<16;8,2> { NoDDClr, NoDDChk } // 1st field U from current frame (line 0,2)
- mov (8) r[a0.5, 32]<4>:ub ubDNDI_RESP(11,1)<16;8,2> { NoDDClr, NoDDChk } // 2nd field U from current frame (line 1,3)
- mov (8) r[a0.5, 64]<4>:ub ubDNDI_RESP(7,1)<16;8,2> { NoDDClr, NoDDChk } // 1st field U from current frame (line 0,2)
- mov (8) r[a0.5, 96]<4>:ub ubDNDI_RESP(11,17)<16;8,2> { NoDDClr, NoDDChk } // 2nd field U from current frame (line 1,3)
- mov (8) r[a0.6, 0]<4>:ub ubDNDI_RESP(6,0)<16;8,2> { NoDDChk } // 1st field V from current frame (line 0,2)
- mov (8) r[a0.6, 32]<4>:ub ubDNDI_RESP(11,0)<16;8,2> { NoDDChk } // 2nd field V from current frame (line 1,3)
- mov (8) r[a0.6, 64]<4>:ub ubDNDI_RESP(7,0)<16;8,2> { NoDDChk } // 1st field V from current frame (line 0,2)
- mov (8) r[a0.6, 96]<4>:ub ubDNDI_RESP(11,16)<16;8,2> { NoDDChk } // 2nd field V from current frame (line 1,3)
-
-SAVE_DN_CURR:
-//send out data through data port
-send (8) null<1>:d r31.0 0x5 0xA0A8018:ud
-
-
-
-// FileName: DI_Save_PA_16x4.asm
-// Author: Vivek Kumar
-// Description: Save two 16x4 blocks of DI output in Packed format
-
-
-add (4) a0.4<1>:uw r2.28<4;4,1>:ub 608:w // Initial Y,U,V offset in YUV422 block; it starts at m20
-
-mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
-shl (1) r27.0<1>:d r9.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
-mov (1) r27.1<1>:d r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
-mov (1) r27.2<1>:ud 0x3001F:ud { NoDDChk } // Block width and height (32x8)
-
-//prepare the message headers
-mov (8) r18.0<1>:ud r27<8;8,1>:ud
-mov (8) r23.0<1>:ud r27<8;8,1>:ud
-
-// Pack 2nd field Y
- mov (16) r[a0.4, 0]<2> ubDNDI_RESP(0,0) { NoDDClr }
- mov (16) r[a0.4, 32]<2> ubDNDI_RESP(0,16) { NoDDClr }
- mov (16) r[a0.4, 64]<2> ubDNDI_RESP(0,32) { NoDDClr }
- mov (16) r[a0.4, 96]<2> ubDNDI_RESP(0,48) { NoDDClr }
-// Pack 2nd field U
- mov (8) r[a0.5, 0]<4> ubDNDI_RESP(2,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 32]<4> ubDNDI_RESP(2,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 64]<4> ubDNDI_RESP(2,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 96]<4> ubDNDI_RESP(2,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
-// Pack 2nd field V
- mov (8) r[a0.6, 0]<4> ubDNDI_RESP(2,0)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 32]<4> ubDNDI_RESP(2,16)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 64]<4> ubDNDI_RESP(2,32)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 96]<4> ubDNDI_RESP(2,48)<16;8,2> { NoDDChk } //Vpixels
-
-// Pack 1st field Y
- mov (16) r[a0.4, 160]<2> ubDNDI_RESP(4,0) { NoDDClr }
- mov (16) r[a0.4, 192]<2> ubDNDI_RESP(4,16) { NoDDClr }
- mov (16) r[a0.4, 224]<2> ubDNDI_RESP(4,32) { NoDDClr }
- mov (16) r[a0.4, 256]<2> ubDNDI_RESP(4,48) { NoDDClr }
-// Pack 1st field U
- mov (8) r[a0.5, 160]<4> ubDNDI_RESP(6,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 192]<4> ubDNDI_RESP(6,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 224]<4> ubDNDI_RESP(6,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 256]<4> ubDNDI_RESP(6,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
-// Pack 1st field V
- mov (8) r[a0.6, 160]<4> ubDNDI_RESP(6,0)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 192]<4> ubDNDI_RESP(6,16)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 224]<4> ubDNDI_RESP(6,32)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 256]<4> ubDNDI_RESP(6,48)<16;8,2> { NoDDChk } //Vpixels
-
-//save the previous frame
-send (8) null<1>:d r18.0 0x5 0xA0A801B:ud
-
-//save the current frame
-send (8) null<1>:d r23.0 0x5 0xA0A801E:ud
-
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
-
-
-.end_code
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/PA_DNUV_PA.g4a b/src/shaders/post_processing/gen7/PA_DNUV_PA.g4a
deleted file mode 100644
index 68502b4..0000000
--- a/src/shaders/post_processing/gen7/PA_DNUV_PA.g4a
+++ /dev/null
@@ -1,2726 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 1319 // Total instruction count
-// 1 // Total kernel count
-
-
-.kernel YUY2_DNUV_YUY2
-.code
-
-
-
-//Module : DN_UV_Setup
-//Author : Tatiya, Rupesh
-//Description : Initial Set-up for DN_UV
-
-
-
-
-// Module name : ChromaDenoise.inc
-// Author : Tatiya, Rupesh
-
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//======================================================
-//Interface for serpent mode Chroma Denoise, added by Le
-//======================================================
-//r1
-
-
-//noise history thresholds (low and high)
-
-
-//temporal difference thresholds (high and low)
-
-
-//noise history thresholds (low and high)
-//#define ubNoiseHistMaxHigh r1.22
-//#define ubNoiseHistMaxLow r1.23
-//#define ubNoiseHistDeltaHigh r1.24
-//#define ubNoiseHistDeltaLow r1.25
-
-//Gaussian thresholds
-
-
-//temporal difference thresholds (default)
-
-
-//r2
-//history thresholds (default)
-
-
-//denoise factor (0-63)
-
-
-//====================== Binding table (Explicit To DNUV)=========================================
-//Used by DN_UV kernels
-
-
- //Pointer to Current Frame UV
-
-
-//r1-r6
- //CURBE GRFs used as TEMP : Used for max computation and storing max temporarily. : r1-r6
-
-
- .declare ubCURBE_TEMP Base=r1.0 ElementSize=1 Type=ub
- .declare uwCURBE_TEMP Base=r1.0 ElementSize=2 Type=uw
- .declare wCURBE_TEMP Base=r1.0 ElementSize=2 Type=w
- .declare fCURBE_TEMP Base=r1.0 ElementSize=4 Type=f
- .declare udCURBE_TEMP Base=r1.0 ElementSize=4 Type=ud
- .declare uwMAX_ABS_DIFF Base=r5.0 ElementSize=2 Type=uw
-
- //r1
-
-
- //r3
-
-
- //r4
-
-//r7
- //All of the following has to defined in Same GRF for optimal performance.
-
-
-//r8-24
- //Previous Frame UV
-
- .declare udPREV_UV Base=r8.0 ElementSize=4 Type=ud
- .declare ubPREV_UV Base=r8.0 ElementSize=1 Type=ub
-
-
-//r25-48
- //TEMP Space for any Usage.
-
-
-//=========================================================================
-//Definations and declarations for serpent mode Chroma Denoise, added by Le
-//=========================================================================
-
-
- .declare udGNE_UV Base=r24.0 ElementSize=4 Type=ud
- .declare fGNE_UV Base=r24.0 ElementSize=4 Type=f
- .declare ubGNE_UV Base=r24.0 ElementSize=1 Type=ub
-
- .declare udMSGHDR_BNE_SERP Base=r25.0 ElementSize=4 Type=ud
- .declare udMSGSRC_BNE_SERP Base=r26.0 ElementSize=4 Type=ud
-
-
- .declare ubDN_UV_Thresholds Base=r26.0 ElementSize=1 Type=ub
- .declare ubDN_UV_Thresholds_Temp Base=r27.0 ElementSize=1 Type=ub
- .declare udDN_UV_Thresholds Base=r26.0 ElementSize=4 Type=ud
- .declare udDN_UV_Thresholds_Temp Base=r27.0 ElementSize=4 Type=ud
- .declare fDN_UV_Thresholds Base=r26.0 ElementSize=4 Type=f
- .declare fDN_UV_Thresholds_Temp Base=r27.0 ElementSize=4 Type=f
-
-
-//====================================================================================
-
-
- //TEMP23: To hold V data for PL3 surfaces
- .declare udCURR_V_TEMP Base=r25.0 ElementSize=4 Type=ud
- .declare ubCURR_V_TEMP Base=r25.0 ElementSize=1 Type=ub
-
- //GRFs to calculate Median: r25-r42
- .declare ubMEDIAN_TEMP Base=r25.0 ElementSize=1 Type=ub
-
- //18 GRFs to hold difference : r25-r42
- .declare wDIFF Base=r25.0 ElementSize=2 Type=w
- .declare uwDIFF Base=r25.0 ElementSize=2 Type=uw
-
- //Temporal Diff
- .declare wDIFF_TEMPORAL Base=r25.0 ElementSize=2 Type=w
- .declare ubDIFF_TEMPORAL Base=r25.0 ElementSize=1 Type=ub
-
- //4 GRFs to hold Sobel Value : r43-46
- .declare wSOBEL_X Base=r43.0 ElementSize=2 Type=w
- .declare uwSOBEL Base=r43.0 ElementSize=2 Type=uw
-
-
- //2 GRFs to hold SOAD temporarily: r47-48
- .declare uwSOAD Base=r47.0 ElementSize=2 Type=uw
-
- //Temp GRFs to hold extra YUYV pixels: r43-r48
- .declare ubTEMP5 Base=r43.0 ElementSize=1 Type=ub
-
- //Temp GRFs in Median Calculation: r47-r48
- .declare ubTEMP1 Base=r47.0 ElementSize=1 Type=ub
-
- .declare uwTEMP0 Base=r48.0 ElementSize=2 Type=uw
- .declare ubTEMP0 Base=r48.0 ElementSize=1 Type=ub
-
- //Temp Space to store Median : r49-50
-
- .declare ubMEDIAN Base=r49.0 ElementSize=1 Type=ub
-
-//r49
-
-
-//r50
- //Message Source
-
-
-//r51
- //DN_UV History Surface
-
- .declare udHIST_UV Base=r51.0 ElementSize=4 Type=ud
- .declare ubHIST_UV Base=r51.0 ElementSize=1 Type=ub
-
-//r52 - r91
- //r52
- //Current Frame UV
-
-
- .declare udCURR_UV Base=r52.0 ElementSize=4 Type=ud
- .declare ubCURR_UV Base=r52.0 ElementSize=1 Type=ub
-
- //r54
- //CURBE COPY
-
-
- //r55
-
-
- .declare uwSOAD_MIN_8x4 Base=r56.0 ElementSize=2 Type=uw
-
- //r61
-
-
- //r62
-
-
- //History Surface Temp Origin
-
-
- //r63
- //Current Frame Y Temp Origin
-
-
- //BNE Surface Origin
-
-
- //r70
-
- .declare uwDIFF_TEMPORAL_SUM4x4 Base=r70.0 ElementSize=2 Type=uw //4 GRFs
-
- //r74-91 : For Saving Dest UV (PL2/PL3)
-
-
- .declare ubMSGPAYLOAD_UV0 Base=r75.0 ElementSize=1 Type=ub
-
-
- .declare ubMSGPAYLOAD_U Base=r75.0 ElementSize=1 Type=ub
-
-
- .declare ubMSGPAYLOAD_UV1 Base=r84.0 ElementSize=1 Type=ub
-
-
- .declare ubMSGPAYLOAD_V Base=r84.0 ElementSize=1 Type=ub
-
- //r90
-
- .declare uwDIFF_TEMPORAL_SUM4x4_FINAL Base=r90.0 ElementSize=2 Type=uw //2 GRFs
-
-//r92-127
- //Current Frame Y
-
-
- //r92
- .declare uwDIFF_TEMPORAL_SUM4x4_TEMP_0 Base=r92 ElementSize=2 Type=uw
- //r101
- .declare uwDIFF_TEMPORAL_SUM4x4_TEMP_1 Base=r101 ElementSize=2 Type=uw
- //r110
- .declare uwDIFF_TEMPORAL_SUM4x4_TEMP_2 Base=r110 ElementSize=2 Type=uw
- //r119
- .declare uwDIFF_TEMPORAL_SUM4x4_TEMP_3 Base=r119 ElementSize=2 Type=uw
-
- .declare udCURR_Y0 Base=r93.0 ElementSize=4 Type=ud
- .declare ubCURR_Y0 Base=r93.0 ElementSize=1 Type=ub
- .declare udCURR_Y1 Base=r102.0 ElementSize=4 Type=ud
- .declare ubCURR_Y1 Base=r102.0 ElementSize=1 Type=ub
- .declare udCURR_Y2 Base=r111.0 ElementSize=4 Type=ud
- .declare ubCURR_Y2 Base=r111.0 ElementSize=1 Type=ub
- .declare udCURR_Y3 Base=r120.0 ElementSize=4 Type=ud
- .declare ubCURR_Y3 Base=r120.0 ElementSize=1 Type=ub
-
- //r92: To hold U data for PL3 surfaces
- .declare udCURR_U_TEMP Base=r92.0 ElementSize=4 Type=ud
- .declare ubCURR_U_TEMP Base=r92.0 ElementSize=1 Type=ub
-
- //r112: To hold U data for PL3 surfaces
- .declare udPREV_U_TEMP Base=r112.0 ElementSize=4 Type=ud
- .declare ubPREV_U_TEMP Base=r112.0 ElementSize=1 Type=ub
-
- //r120: To hold U data for PL3 surfaces
- .declare udPREV_V_TEMP Base=r120.0 ElementSize=4 Type=ud
- .declare ubPREV_V_TEMP Base=r120.0 ElementSize=1 Type=ub
-
-
- // Initialize message source with r0.
- mov (8) r50.0<1>:ud r0.0<8;8,1>:ud
- mov (8) r92.0<1>:ud r0.0<8;8,1>:ud
- mov (8) r101.0<1>:ud r0.0<8;8,1>:ud
- mov (8) r110.0<1>:ud r0.0<8;8,1>:ud
- mov (8) r119.0<1>:ud r0.0<8;8,1>:ud
-
-
-
-//Module Name : DN_UV_YUY2_Load_Curr_Frame_YUV
-//Author : Tatiya, Rupesh
-//Description : Loads Current Frame YUV data for YUY2 input.
-
-
-
-//Module name : DN_UV_Load_Curr_Frame_UV
-//Author : Tatiya, Rupesh
-//Description : Loads Current Frame (UV only).
-// We need 4 extra rows (2 per field) and 2 extra pixel (1 each side) for both U and V each.
-// The processing size is 16x16 U and V each. So we need : U size - 18x20, V size - 18x20, UV size - 36x20, YUYV size - 72x20.
-
-
-
-
-//72x20 interleaved YUYV block is partitioned as follows:
-// <------ 36 --------> <--------36 ------->
-// ------------------------------------------
-// | | 32x2 B1 | 32x2 B2 | |
-// | 4 |--------------------------------| 4 |
-// | x | | | x |
-// |20 | 32x8 A1 | 32x8 A3 | 20|
-// | |---------------|----------------| |
-// | C1| 32x8 A2 | 32x8 A4 | C2|
-// | | | | |
-// | |--------------------------------| |
-// | | 32x2 B3 | 32x2 B4 | |
-// ------------------------------------------
-//
-// Cordinates: (x, y), (x, y+8), (x+32, y), (x+32, y+8), (x-4, y-2), (x+64, y-2),(x, y-2), (x+32, y-2), (x, y+16), (x+32, y+16)
-
- //UV surface origin: (2xORIX, ORIY)
- add (2) r9.4<1>:w r9.0<2;2,1>:w r4.4<2;2,1>:w { AccWrEn } // Source Block origin
- shl (1) r9.4<1>:w acc0.4<0;1,0>:w 1:w
-
- //A1
- mov (2) r92.0<1>:d r9.4<2;2,1>:w { AccWrEn } // Source Block origin
- mov (1) r92.2<1>:ud 0x7001F:ud
- send (8) udCURR_Y0(0)<1> r92 0x4 0x2890003:ud
-
- //A2
- mov (1) r101.0<1>:d acc0.0<0;1,0>:d
- add (1) r101.1<1>:d acc0.1<0;1,0>:d 8:d
- mov (1) r101.2<1>:ud 0x7001F:ud
- send (8) udCURR_Y1(0)<1> r101 0x4 0x2890003:ud
-
- //B1
- mov (1) r50.0<1>:d acc0.0<0;1,0>:d
- add (1) r50.1<1>:d acc0.1<0;1,0>:d -2:d
- mov (1) r50.2<1>:ud 0x1001F:ud
- send (8) udCURR_UV(0)<1> r50 0x4 0x2290003:ud
-
- //B3
- mov (1) r50.0<1>:d acc0.0<0;1,0>:d
- add (1) r50.1<1>:d acc0.1<0;1,0>:d 16:d
- send (8) udCURR_UV(18)<1> r50 0x4 0x2290003:ud
-
- //C1
- add (1) r50.0<1>:d acc0.0<0;1,0>:d -4:d
- add (1) r50.1<1>:d acc0.1<0;1,0>:d -2:d
- mov (1) r50.2<1>:ud 0x130003:ud
- send (8) ubTEMP5(0)<1> r50 0x4 0x2390003:ud
-
- //A3
- add (1) r110.0<1>:d acc0.0<0;1,0>:d 32:d
- mov (1) r110.1<1>:d acc0.1<0;1,0>:d
- mov (1) r110.2<1>:ud 0x7001F:ud
- send (8) udCURR_Y2(0)<1> r110 0x4 0x2890003:ud
-
- //A4
- add (1) r119.0<1>:d acc0.0<0;1,0>:d 32:d
- add (1) r119.1<1>:d acc0.1<0;1,0>:d 8:d
- mov (1) r119.2<1>:ud 0x7001F:ud
- send (8) udCURR_Y3(0)<1> r119 0x4 0x2890003:ud
-
- //B2
- add (1) r50.0<1>:d acc0.0<0;1,0>:d 32:d
- add (1) r50.1<1>:d acc0.1<0;1,0>:d -2:d
- mov (1) r50.2<1>:ud 0x1001F:ud
- send (8) udCURR_UV(20)<1> r50 0x4 0x2290003:ud
-
- //B4
- add (1) r50.0<1>:d acc0.0<0;1,0>:d 32:d
- add (1) r50.1<1>:d acc0.1<0;1,0>:d 16:d
- send (8) udCURR_UV(38)<1> r50 0x4 0x2290003:ud
-
- //C2
- add (1) r50.0<1>:d acc0.0<0;1,0>:d 64:d
- add (1) r50.1<1>:d acc0.1<0;1,0>:d -2:d
- mov (1) r50.2<1>:ud 0x130003:ud
- send (8) ubTEMP5(3)<1> r50 0x4 0x2390003:ud
-
- //History Origin, Current Y origin and BNE surface origin - all are in inline GRF. Use , . -rT.
-
- //Calculate Origin For History Surface: (ORIX/4, ORIY/4)
- shr (2) r9.2<1>:w r9.0<2;2,1>:w 2:w
-
- //Calculate Origin For BNE Surface: (ORIX/8, ORIY/8)
- shr (2) r9.6<1>:w r9.0<2;2,1>:w 3:w
-
-
-
-//Module Name : DN_UV_YUY2_Load_Prev_Frame_YUV.asm
-//Author : Tatiya, Rupesh
-//Description : Loads Pevious Frame YUV data for YUY2 input.
-
-
-
-//Module Name : DN_UV_Load_Prev_Frame_UV
-//Author : Tatiya, Rupesh
-//Description : Loads Prev Frame (UV only). U size - 16x16, V size - 16x16, UV size - 32x16, YUYV size - 64x16.
-
-
-
-
- mov (2) r50.0<1>:d r9.4<2;2,1>:w { AccWrEn } // Source lock origin
- mov (1) r50.2<1>:ud 0x7001F:ud // U/V block width and height (16x16)
- send (8) udPREV_UV(0)<1> r50 0x4 0x2890000:ud
-
- add (1) r50.1<1>:ud acc0.1<0;1,0>:d 8:w // Add 16 to X origin
- send (8) udPREV_UV(8)<1> r50 0x4 0x2890000:ud
-
- add (1) r50.0<1>:ud acc0.0<0;1,0>:d 32:w
- mov (1) r50.1<1>:ud acc0.1<0;1,0>:d
- send (8) udPREV_UV(16)<1> r50 0x4 0x2890000:ud
-
- add (1) r50.1<1>:ud acc0.0<0;1,0>:d 8:w
- send (8) udPREV_UV(24)<1> r50 0x4 0x2890000:ud
-
-
- //TODO - See if History loading can be combined with Prev Frame Load. - rT
-
-
-//Module name : DN_UV_Load_Hist_UV
-//Author : Tatiya, Rupesh
-//Description : Load DN History for UV denoise. 4x4 for each U & V.
-
-
-
-
- mov (2) r50.0<1>:d r9.2<2;2,1>:w
- mov (1) r50.2<1>:ud 0x30007:ud
- send (8) udHIST_UV(0)<1> r50 0x4 0x2190022:ud
-
-
-
-//Module Name: DN_UV_YUY2_Extract_Curr_Frame_UV
-//Author : Tatiya, Rupesh
-//Description: Extract UV data from current YUY2 frame.
-
-//72x20 interleaved YUYV block is partitioned as follows:
-// <------ 36 --------> <--------36 ------->
-// ------------------------------------------
-// | | 32x2 B1 | 32x2 B2 | |
-// | 4 |--------------------------------| 4 |
-// | x | | | x |
-// |20 | 32x8 A1 | 32x8 A3 | 20|
-// | |---------------|----------------| |
-// | C1| 32x8 A2 | 32x8 A4 | C2|
-// | | | | |
-// | |--------------------------------| |
-// | | 32x2 B3 | 32x2 B4 | |
-// ------------------------------------------
-
- // Set SRC pointers according to Input packing i.e. YUYV, YVYU, UYVY, VYUY
- add (1) a0.0<1>:uw r4.1<0;1,0>:ub 2976:w //A1
- add (1) a0.1<1>:uw r4.1<0;1,0>:ub 3264:w //A2
- add (1) a0.2<1>:uw r4.1<0;1,0>:ub 3552:w //A3
- add (1) a0.3<1>:uw r4.1<0;1,0>:ub 3840:w //A4
- add (1) a0.4<1>:uw r4.1<0;1,0>:ub 1664:w //B1
- add (1) a0.5<1>:uw r4.1<0;1,0>:ub 2240:w //B3B2
- add (1) a0.6<1>:uw r4.1<0;1,0>:ub 2880:w //B4
- add (1) a0.7<1>:uw r4.1<0;1,0>:ub 1376:w //C1C2
-
- //Left 20x20 UV : 16x16 UV (Original)+4 extra rows(2 per field on top/bottom)+4 extra pixels(2 on left/right)
-
- //A1
- mov (16) ubCURR_UV(2,2)<1> r[a0.0, 0]<32;16,2>
- mov (16) ubCURR_UV(3,2)<1> r[a0.0, 32]<32;16,2>
- mov (16) ubCURR_UV(4,2)<1> r[a0.0, 64]<32;16,2>
- mov (16) ubCURR_UV(5,2)<1> r[a0.0, 96]<32;16,2>
- mov (16) ubCURR_UV(6,2)<1> r[a0.0, 128]<32;16,2>
- mov (16) ubCURR_UV(7,2)<1> r[a0.0, 160]<32;16,2>
- mov (16) ubCURR_UV(8,2)<1> r[a0.0, 192]<32;16,2>
- mov (16) ubCURR_UV(9,2)<1> r[a0.0, 224]<32;16,2>
-
- //A2
- mov (16) ubCURR_UV(10,2)<1> r[a0.1, 0]<32;16,2>
- mov (16) ubCURR_UV(11,2)<1> r[a0.1, 32]<32;16,2>
- mov (16) ubCURR_UV(12,2)<1> r[a0.1, 64]<32;16,2>
- mov (16) ubCURR_UV(13,2)<1> r[a0.1, 96]<32;16,2>
- mov (16) ubCURR_UV(14,2)<1> r[a0.1, 128]<32;16,2>
- mov (16) ubCURR_UV(15,2)<1> r[a0.1, 160]<32;16,2>
- mov (16) ubCURR_UV(16,2)<1> r[a0.1, 192]<32;16,2>
- mov (16) ubCURR_UV(17,2)<1> r[a0.1, 224]<32;16,2>
-
- //B1
- mov (16) ubCURR_UV(0,2)<1> r[a0.4, 0]<32;16,2>
- mov (16) ubCURR_UV(1,2)<1> r[a0.4, 32]<32;16,2>
-
- //B3
- mov (16) ubCURR_UV(18,2)<1> r[a0.5, 0]<32;16,2>
- mov (16) ubCURR_UV(19,2)<1> r[a0.5, 32]<32;16,2>
-
- //TODO - Find a way to reduce this 40 SIMD2 instructions - rT
- //C1
- mov (2) ubCURR_UV(0,0)<1> r[a0.7, 0]<4;2,2>
- mov (2) ubCURR_UV(1,0)<1> r[a0.7, 4]<4;2,2>
- mov (2) ubCURR_UV(2,0)<1> r[a0.7, 8]<4;2,2>
- mov (2) ubCURR_UV(3,0)<1> r[a0.7, 12]<4;2,2>
- mov (2) ubCURR_UV(4,0)<1> r[a0.7, 16]<4;2,2>
- mov (2) ubCURR_UV(5,0)<1> r[a0.7, 20]<4;2,2>
- mov (2) ubCURR_UV(6,0)<1> r[a0.7, 24]<4;2,2>
- mov (2) ubCURR_UV(7,0)<1> r[a0.7, 28]<4;2,2>
- mov (2) ubCURR_UV(8,0)<1> r[a0.7, 32]<4;2,2>
- mov (2) ubCURR_UV(9,0)<1> r[a0.7, 36]<4;2,2>
- mov (2) ubCURR_UV(10,0)<1> r[a0.7, 40]<4;2,2>
- mov (2) ubCURR_UV(11,0)<1> r[a0.7, 44]<4;2,2>
- mov (2) ubCURR_UV(12,0)<1> r[a0.7, 48]<4;2,2>
- mov (2) ubCURR_UV(13,0)<1> r[a0.7, 52]<4;2,2>
- mov (2) ubCURR_UV(14,0)<1> r[a0.7, 56]<4;2,2>
- mov (2) ubCURR_UV(15,0)<1> r[a0.7, 60]<4;2,2>
- mov (2) ubCURR_UV(16,0)<1> r[a0.7, 64]<4;2,2>
- mov (2) ubCURR_UV(17,0)<1> r[a0.7, 68]<4;2,2>
- mov (2) ubCURR_UV(18,0)<1> r[a0.7, 72]<4;2,2>
- mov (2) ubCURR_UV(19,0)<1> r[a0.7, 76]<4;2,2>
-
- //2 right bytes from B2 - 2 rows
- mov (2) ubCURR_UV(0,18)<1> r[a0.5, 64]<4;2,2>
- mov (2) ubCURR_UV(1,18)<1> r[a0.5, 96]<4;2,2>
-
- //2 right bytes from A3 - 8 rows
- mov (2) ubCURR_UV(2,18)<1> r[a0.2, 0]<4;2,2>
- mov (2) ubCURR_UV(3,18)<1> r[a0.2, 32]<4;2,2>
- mov (2) ubCURR_UV(4,18)<1> r[a0.2, 64]<4;2,2>
- mov (2) ubCURR_UV(5,18)<1> r[a0.2, 96]<4;2,2>
- mov (2) ubCURR_UV(6,18)<1> r[a0.2, 128]<4;2,2>
- mov (2) ubCURR_UV(7,18)<1> r[a0.2, 160]<4;2,2>
- mov (2) ubCURR_UV(8,18)<1> r[a0.2, 192]<4;2,2>
- mov (2) ubCURR_UV(9,18)<1> r[a0.2, 224]<4;2,2>
-
- //2 right bytes from A4 - 8 rows
- mov (2) ubCURR_UV(10,18)<1> r[a0.3, 0]<4;2,2>
- mov (2) ubCURR_UV(11,18)<1> r[a0.3, 32]<4;2,2>
- mov (2) ubCURR_UV(12,18)<1> r[a0.3, 64]<4;2,2>
- mov (2) ubCURR_UV(13,18)<1> r[a0.3, 96]<4;2,2>
- mov (2) ubCURR_UV(14,18)<1> r[a0.3, 128]<4;2,2>
- mov (2) ubCURR_UV(15,18)<1> r[a0.3, 160]<4;2,2>
- mov (2) ubCURR_UV(16,18)<1> r[a0.3, 192]<4;2,2>
- mov (2) ubCURR_UV(17,18)<1> r[a0.3, 224]<4;2,2>
-
- //2 right bytes from B4 - 2 rows
- mov (2) ubCURR_UV(18,18)<1> r[a0.6, 0]<4;2,2>
- mov (2) ubCURR_UV(19,18)<1> r[a0.6, 32]<4;2,2>
-
- //Right 20x20 UV : 16x16 UV (Original)+4 extra rows(2 per field on top/bottom)+4 extra pixels(2 on left/right)
-
- //A3
- mov (16) ubCURR_UV(22,2)<1> r[a0.2, 0]<32;16,2>
- mov (16) ubCURR_UV(23,2)<1> r[a0.2, 32]<32;16,2>
- mov (16) ubCURR_UV(24,2)<1> r[a0.2, 64]<32;16,2>
- mov (16) ubCURR_UV(25,2)<1> r[a0.2, 96]<32;16,2>
- mov (16) ubCURR_UV(26,2)<1> r[a0.2, 128]<32;16,2>
- mov (16) ubCURR_UV(27,2)<1> r[a0.2, 160]<32;16,2>
- mov (16) ubCURR_UV(28,2)<1> r[a0.2, 192]<32;16,2>
- mov (16) ubCURR_UV(29,2)<1> r[a0.2, 224]<32;16,2>
-
- //A4
- mov (16) ubCURR_UV(30,2)<1> r[a0.3, 0]<32;16,2>
- mov (16) ubCURR_UV(31,2)<1> r[a0.3, 32]<32;16,2>
- mov (16) ubCURR_UV(32,2)<1> r[a0.3, 64]<32;16,2>
- mov (16) ubCURR_UV(33,2)<1> r[a0.3, 96]<32;16,2>
- mov (16) ubCURR_UV(34,2)<1> r[a0.3, 128]<32;16,2>
- mov (16) ubCURR_UV(35,2)<1> r[a0.3, 160]<32;16,2>
- mov (16) ubCURR_UV(36,2)<1> r[a0.3, 192]<32;16,2>
- mov (16) ubCURR_UV(37,2)<1> r[a0.3, 224]<32;16,2>
-
- //B2
- mov (16) ubCURR_UV(20,2)<1> r[a0.5, 64]<32;16,2>
- mov (16) ubCURR_UV(21,2)<1> r[a0.5, 96]<32;16,2>
-
- //B4
- mov (16) ubCURR_UV(38,2)<1> r[a0.6, 0]<32;16,2>
- mov (16) ubCURR_UV(39,2)<1> r[a0.6, 32]<32;16,2>
-
- //TODO - Find a way to reduce this 40 SIMD2 instructions - rT
- //C2
- mov (2) ubCURR_UV(20,18)<1> r[a0.7, 96]<4;2,2>
- mov (2) ubCURR_UV(21,18)<1> r[a0.7, 100]<4;2,2>
- mov (2) ubCURR_UV(22,18)<1> r[a0.7, 104]<4;2,2>
- mov (2) ubCURR_UV(23,18)<1> r[a0.7, 108]<4;2,2>
- mov (2) ubCURR_UV(24,18)<1> r[a0.7, 112]<4;2,2>
- mov (2) ubCURR_UV(25,18)<1> r[a0.7, 116]<4;2,2>
- mov (2) ubCURR_UV(26,18)<1> r[a0.7, 120]<4;2,2>
- mov (2) ubCURR_UV(27,18)<1> r[a0.7, 124]<4;2,2>
- mov (2) ubCURR_UV(28,18)<1> r[a0.7, 128]<4;2,2>
- mov (2) ubCURR_UV(29,18)<1> r[a0.7, 132]<4;2,2>
- mov (2) ubCURR_UV(30,18)<1> r[a0.7, 136]<4;2,2>
- mov (2) ubCURR_UV(31,18)<1> r[a0.7, 140]<4;2,2>
- mov (2) ubCURR_UV(32,18)<1> r[a0.7, 144]<4;2,2>
- mov (2) ubCURR_UV(33,18)<1> r[a0.7, 148]<4;2,2>
- mov (2) ubCURR_UV(34,18)<1> r[a0.7, 152]<4;2,2>
- mov (2) ubCURR_UV(35,18)<1> r[a0.7, 156]<4;2,2>
- mov (2) ubCURR_UV(36,18)<1> r[a0.7, 160]<4;2,2>
- mov (2) ubCURR_UV(37,18)<1> r[a0.7, 164]<4;2,2>
- mov (2) ubCURR_UV(38,18)<1> r[a0.7, 168]<4;2,2>
- mov (2) ubCURR_UV(39,18)<1> r[a0.7, 172]<4;2,2>
-
- //2 left bytes from B1 - 2 rows
- mov (2) ubCURR_UV(20,0)<1> r[a0.4, 28]<4;2,2>
- mov (2) ubCURR_UV(21,0)<1> r[a0.4, 60]<4;2,2>
-
- //2 left bytes from A1 - 8 rows
- mov (2) ubCURR_UV(22,0)<1> r[a0.0, 28]<4;2,2>
- mov (2) ubCURR_UV(23,0)<1> r[a0.0, 60]<4;2,2>
- mov (2) ubCURR_UV(24,0)<1> r[a0.0, 92]<4;2,2>
- mov (2) ubCURR_UV(25,0)<1> r[a0.0, 124]<4;2,2>
- mov (2) ubCURR_UV(26,0)<1> r[a0.0, 156]<4;2,2>
- mov (2) ubCURR_UV(27,0)<1> r[a0.0, 188]<4;2,2>
- mov (2) ubCURR_UV(28,0)<1> r[a0.0, 220]<4;2,2>
- mov (2) ubCURR_UV(29,0)<1> r[a0.0, 252]<4;2,2>
-
- //2 left bytes from A2 - 8 rows
- mov (2) ubCURR_UV(30,0)<1> r[a0.1, 28]<4;2,2>
- mov (2) ubCURR_UV(31,0)<1> r[a0.1, 60]<4;2,2>
- mov (2) ubCURR_UV(32,0)<1> r[a0.1, 92]<4;2,2>
- mov (2) ubCURR_UV(33,0)<1> r[a0.1, 124]<4;2,2>
- mov (2) ubCURR_UV(34,0)<1> r[a0.1, 156]<4;2,2>
- mov (2) ubCURR_UV(35,0)<1> r[a0.1, 188]<4;2,2>
- mov (2) ubCURR_UV(36,0)<1> r[a0.1, 220]<4;2,2>
- mov (2) ubCURR_UV(37,0)<1> r[a0.1, 252]<4;2,2>
-
- //2 left bytes from B3 - 2 rows
- mov (2) ubCURR_UV(38,0)<1> r[a0.5, 28]<4;2,2>
- mov (2) ubCURR_UV(39,0)<1> r[a0.5, 60]<4;2,2>
-
-
-
-// Module Name : DN_UV_YUY2_Extract_Prev_Frame_UV
-// Author : Tatiya, Rupesh
-// Description : Extract UV from previous frame YUY2.
-
- // Set SRC pointers according to Input packing i.e. YUYV, YVYU, UYVY, VYUY
- add (1) a0.0<1>:uw r4.1<0;1,0>:ub 256:w
- add (1) a0.1<1>:uw r4.1<0;1,0>:ub 768:w
-
- mov (16) ubPREV_UV(0,0)<1> r[a0.0, 0]<32;16,2>:ub
- mov (16) ubPREV_UV(0,16)<1> r[a0.0, 32]<32;16,2>:ub
- mov (16) ubPREV_UV(1,0)<1> r[a0.0, 64]<32;16,2>:ub
- mov (16) ubPREV_UV(1,16)<1> r[a0.0, 96]<32;16,2>:ub
- mov (16) ubPREV_UV(2,0)<1> r[a0.0, 128]<32;16,2>:ub
- mov (16) ubPREV_UV(2,16)<1> r[a0.0, 160]<32;16,2>:ub
- mov (16) ubPREV_UV(3,0)<1> r[a0.0, 192]<32;16,2>:ub
- mov (16) ubPREV_UV(3,16)<1> r[a0.0, 224]<32;16,2>:ub
- mov (16) ubPREV_UV(4,0)<1> r[a0.0, 256]<32;16,2>:ub
- mov (16) ubPREV_UV(4,16)<1> r[a0.0, 288]<32;16,2>:ub
- mov (16) ubPREV_UV(5,0)<1> r[a0.0, 320]<32;16,2>:ub
- mov (16) ubPREV_UV(5,16)<1> r[a0.0, 352]<32;16,2>:ub
- mov (16) ubPREV_UV(6,0)<1> r[a0.0, 384]<32;16,2>:ub
- mov (16) ubPREV_UV(6,16)<1> r[a0.0, 416]<32;16,2>:ub
- mov (16) ubPREV_UV(7,0)<1> r[a0.0, 448]<32;16,2>:ub
- mov (16) ubPREV_UV(7,16)<1> r[a0.0, 480]<32;16,2>:ub
-
- mov (16) ubPREV_UV(8,0)<1> r[a0.1, 0]<32;16,2>:ub
- mov (16) ubPREV_UV(8,16)<1> r[a0.1, 32]<32;16,2>:ub
- mov (16) ubPREV_UV(9,0)<1> r[a0.1, 64]<32;16,2>:ub
- mov (16) ubPREV_UV(9,16)<1> r[a0.1, 96]<32;16,2>:ub
- mov (16) ubPREV_UV(10,0)<1> r[a0.1, 128]<32;16,2>:ub
- mov (16) ubPREV_UV(10,16)<1> r[a0.1, 160]<32;16,2>:ub
- mov (16) ubPREV_UV(11,0)<1> r[a0.1, 192]<32;16,2>:ub
- mov (16) ubPREV_UV(11,16)<1> r[a0.1, 224]<32;16,2>:ub
- mov (16) ubPREV_UV(12,0)<1> r[a0.1, 256]<32;16,2>:ub
- mov (16) ubPREV_UV(12,16)<1> r[a0.1, 288]<32;16,2>:ub
- mov (16) ubPREV_UV(13,0)<1> r[a0.1, 320]<32;16,2>:ub
- mov (16) ubPREV_UV(13,16)<1> r[a0.1, 352]<32;16,2>:ub
- mov (16) ubPREV_UV(14,0)<1> r[a0.1, 384]<32;16,2>:ub
- mov (16) ubPREV_UV(14,16)<1> r[a0.1, 416]<32;16,2>:ub
- mov (16) ubPREV_UV(15,0)<1> r[a0.1, 448]<32;16,2>:ub
- mov (16) ubPREV_UV(15,16)<1> r[a0.1, 480]<32;16,2>:ub
-
-
-
-//Module Name : DN_UV_Noise_Detection_UV
-//Author : Tatiya, Rupesh
-//Description : Performs noise detection on 16x16 U and 16x16 V each.
-
-
-
-//Module Name : DN_UV_Move_CURBE_Inline_UV.asm
-//Author : Tatiya, Rupesh
-
-
-
-
- //Mov CURBE data to another space - so that it can be used as Temp Space --> r1 - r6
- mov (4) r54.28<1>:ub r2.28<4;4,1>:ub //Dest. YUY2 offset
- mov (2) r54.5<1>:ud r4.0<4;2,2>:ud //Src YUY2 offset and Origin offset
- mov (4) r55.28<1>:ub r1.0<4;4,1>:ub
-
- mov (8) r61.20<1>:ub r1.4<8;8,1>:ub
- mov (4) r61.28<1>:ub r1.12<4;4,1>:ub
-
- //Move Inline Data to another space - so that it can be used as Temp Space --> r7
- mov (4) r62.10<1>:w r9.0<4;4,1>:w
- mov (4) r63.10<1>:w r9.4<4;4,1>:w
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- mov (1) a0.0:uw 1664:uw
- mov (1) a0.1:uw 1816:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- //TODO - remove one instruction here using arithmatic. -rT
- mov (1) a0.0:uw 1792:uw
- mov (1) a0.1:uw 1820:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- //TODO - remove one instruction here using arithmatic. -rT
- mov (1) a0.0:uw 1920:uw
- mov (1) a0.1:uw 1848:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- //TODO - remove one instruction here using arithmatic. -rT
- mov (1) a0.0:uw 2048:uw
- mov (1) a0.1:uw 1852:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- mov (1) a0.0:uw 2304:uw
- mov (1) a0.1:uw 1880:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- //TODO - remove one instruction here using arithmatic. -rT
- mov (1) a0.0:uw 2432:uw
- mov (1) a0.1:uw 1884:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- //TODO - remove one instruction here using arithmatic. -rT
- mov (1) a0.0:uw 2560:uw
- mov (1) a0.1:uw 1912:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- //TODO - remove one instruction here using arithmatic. -rT
- mov (1) a0.0:uw 2688:uw
- mov (1) a0.1:uw 1916:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-//Module : DN_UV_Noise_Reduction_UV
-//Author : Tatiya, Rupesh
-//Description : Performs Noise Reduction on 16x16 U and 16x16 V.
-//Tasks : 1. Update weight history
-// 2. Find if it block is motion block
-// 3. Compute Denoised Pixel.
-
-
-
-
-//History is 1+1 byte every 4x4 U and 4x4 V.
-
- cmp.l.f0.0 (16) null<1>:w ubHIST_UV(0,0)<16;16,1> r61.20<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w ubHIST_UV(0,0)<16;16,1> r61.22<0;2,1>:ub
-
- mov (16) uwCURBE_TEMP(0)<1> 0:w
- mov (16) uwCURBE_TEMP(1)<1> 0:w
-
- //Compute diff betn curr and prev. - First 16 lines
- // 8 lines here
- add (16) wDIFF_TEMPORAL(0)<1> ubCURR_UV(2,2)<16;16,1> -ubPREV_UV(0,0)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(1)<1> ubCURR_UV(3,2)<16;16,1> -ubPREV_UV(0,16)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(2)<1> ubCURR_UV(4,2)<16;16,1> -ubPREV_UV(0,32)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(3)<1> ubCURR_UV(5,2)<16;16,1> -ubPREV_UV(0,48)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(4)<1> ubCURR_UV(6,2)<16;16,1> -ubPREV_UV(0,64)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(5)<1> ubCURR_UV(7,2)<16;16,1> -ubPREV_UV(0,80)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(6)<1> ubCURR_UV(8,2)<16;16,1> -ubPREV_UV(0,96)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(7)<1> ubCURR_UV(9,2)<16;16,1> -ubPREV_UV(0,112)<16;16,1> //Diff UV interleaved
-
- //Update WT HIST
- (-f0.0) shr (16) uwCURBE_TEMP(0)<1> ubHIST_UV(0,0)<16;16,1> 1:w
- (f1.0) add (16) uwCURBE_TEMP(2)<1> ubHIST_UV(0,0)<16;16,1> r61.24<0;2,1>:ub
- (f0.0) mov (16) uwCURBE_TEMP(2)<1> r61.20<0;2,1>:ub
- (-f0.0.anyv) mov (16) uwCURBE_TEMP(2)<1> ubHIST_UV(0,0)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w ubHIST_UV(0,16)<16;16,1> r61.20<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w ubHIST_UV(0,16)<16;16,1> r61.22<0;2,1>:ub
-
- //Compute diff betn curr and prev. - First 16 lines
- // 8 more lines here
- add (16) wDIFF_TEMPORAL(8)<1> ubCURR_UV(10,2)<16;16,1> -ubPREV_UV(0,128)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(9)<1> ubCURR_UV(11,2)<16;16,1> -ubPREV_UV(0,144)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(10)<1> ubCURR_UV(12,2)<16;16,1> -ubPREV_UV(0,160)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(11)<1> ubCURR_UV(13,2)<16;16,1> -ubPREV_UV(0,176)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(12)<1> ubCURR_UV(14,2)<16;16,1> -ubPREV_UV(0,192)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(13)<1> ubCURR_UV(15,2)<16;16,1> -ubPREV_UV(0,208)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(14)<1> ubCURR_UV(16,2)<16;16,1> -ubPREV_UV(0,224)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(15)<1> ubCURR_UV(17,2)<16;16,1> -ubPREV_UV(0,240)<16;16,1> //Diff UV interleaved
-
- (-f0.0) shr (16) uwCURBE_TEMP(1)<1> ubHIST_UV(0,16)<16;16,1> 1:w
- (f1.0) add (16) uwCURBE_TEMP(3)<1> ubHIST_UV(0,16)<16;16,1> r61.24<0;2,1>:ub
- (f0.0) mov (16) uwCURBE_TEMP(3)<1> r61.20<0;2,1>:ub
- (-f0.0.anyv) mov(16) uwCURBE_TEMP(3)<1> ubHIST_UV(0,16)<16;16,1>
-
- //16x16 to 16x4 - First 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(0)<16;16,1> (abs)wDIFF_TEMPORAL(1)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(2)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(3)<16;16,1>
- //16x16 to 16x4 - First 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(4)<16;16,1> (abs)wDIFF_TEMPORAL(5)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(6)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(7)<16;16,1>
- //16x16 to 16x4 - First 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(8)<16;16,1> (abs)wDIFF_TEMPORAL(9)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(10)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(2)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(11)<16;16,1>
- //16x16 to 16x4 - First 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(12)<16;16,1> (abs)wDIFF_TEMPORAL(13)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(14)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(3)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(15)<16;16,1>
-
-//Compute diff betn curr and prev. - Second 16 lines
-//13 lines.
- add (16) wDIFF_TEMPORAL(16)<1> ubCURR_UV(22,2)<16;16,1> -ubPREV_UV(8,0)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(17)<1> ubCURR_UV(23,2)<16;16,1> -ubPREV_UV(8,16)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(18)<1> ubCURR_UV(24,2)<16;16,1> -ubPREV_UV(8,32)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(19)<1> ubCURR_UV(25,2)<16;16,1> -ubPREV_UV(8,48)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(20)<1> ubCURR_UV(26,2)<16;16,1> -ubPREV_UV(8,64)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(21)<1> ubCURR_UV(27,2)<16;16,1> -ubPREV_UV(8,80)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(22)<1> ubCURR_UV(28,2)<16;16,1> -ubPREV_UV(8,96)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(23)<1> ubCURR_UV(29,2)<16;16,1> -ubPREV_UV(8,112)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(24)<1> ubCURR_UV(30,2)<16;16,1> -ubPREV_UV(8,128)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(25)<1> ubCURR_UV(31,2)<16;16,1> -ubPREV_UV(8,144)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(26)<1> ubCURR_UV(32,2)<16;16,1> -ubPREV_UV(8,160)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(27)<1> ubCURR_UV(33,2)<16;16,1> -ubPREV_UV(8,176)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(28)<1> ubCURR_UV(34,2)<16;16,1> -ubPREV_UV(8,192)<16;16,1> //Diff UV interleaved
-
-//3 more lines
- add (16) wCURBE_TEMP(4)<1> ubCURR_UV(35,2)<16;16,1> -ubPREV_UV(8,208)<16;16,1> //Diff UV interleaved
- add (16) wCURBE_TEMP(5)<1> ubCURR_UV(36,2)<16;16,1> -ubPREV_UV(8,224)<16;16,1> //Diff UV interleaved
- add (16) wCURBE_TEMP(6)<1> ubCURR_UV(37,2)<16;16,1> -ubPREV_UV(8,240)<16;16,1> //Diff UV interleaved
-
- //16x4 to 8x4 - First 16 lines
- add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> uwDIFF_TEMPORAL_SUM4x4(2,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(2,2)<4;2,1>
-
- //8x4 to 4x4 - First 16 lines
- add (16) uwDIFF_TEMPORAL_SUM4x4_FINAL(0)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1> { AccWrEn }
-
- //16x16 to 16x4 - Second 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(16)<16;16,1> (abs)wDIFF_TEMPORAL(17)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(18)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(19)<16;16,1>
- //16x16 to 16x4 - Second 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(20)<16;16,1> (abs)wDIFF_TEMPORAL(21)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(22)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(23)<16;16,1>
- //16x16 to 16x4 - Second 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(24)<16;16,1> (abs)wDIFF_TEMPORAL(25)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(26)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(2)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(27)<16;16,1>
-
- //16x16 to 16x4 - Second 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(28)<16;16,1> (abs)wCURBE_TEMP(4)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wCURBE_TEMP(5)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(3)<1> acc0.0<16;16,1>:uw (abs)wCURBE_TEMP(6)<16;16,1>
-
- //Find if block is motion block - First 16 lines
- cmp.g.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_FINAL(0)<16;16,1> r61.26<0;2,1>:ub
-
- //Move TEMPORAL_SUM4x4 for SIMD16 use later.
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,0)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,2)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,4)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,6)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,8)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,10)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,12)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,14)<0;2,1>
-
- //Pick Appropriate Weight History Based on motion. - First 16 lines
- (-f0.0) mov (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(2)<16;16,1>
-
- //Actual DN - First 16 lines
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(0)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(0)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(2,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(2,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(2,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,0)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,8)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(0)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(0)<1> ubCURR_UV(2,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(0)<1> wDIFF_TEMPORAL(0)<16;16,1> ubCURR_UV(2,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(1)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(1)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(3,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(3,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(3,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,16)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,24)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(1)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(1)<1> ubCURR_UV(3,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(1)<1> wDIFF_TEMPORAL(1)<16;16,1> ubCURR_UV(3,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(2)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(2)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(4,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(4,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(4,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,32)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,40)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(2)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(2)<1> ubCURR_UV(4,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(2)<1> wDIFF_TEMPORAL(2)<16;16,1> ubCURR_UV(4,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(3)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(3)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(5,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(5,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(5,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,48)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,56)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(3)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(3)<1> ubCURR_UV(5,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(3)<1> wDIFF_TEMPORAL(3)<16;16,1> ubCURR_UV(5,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(4)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(4)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(6,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(6,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(6,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,64)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,72)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(4)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(4)<1> ubCURR_UV(6,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(4)<1> wDIFF_TEMPORAL(4)<16;16,1> ubCURR_UV(6,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(5)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(5)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(7,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(7,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(7,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,80)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,88)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(5)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(5)<1> ubCURR_UV(7,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(5)<1> wDIFF_TEMPORAL(5)<16;16,1> ubCURR_UV(7,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(6)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(6)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(8,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(8,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(8,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,96)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,104)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(6)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(6)<1> ubCURR_UV(8,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(6)<1> wDIFF_TEMPORAL(6)<16;16,1> ubCURR_UV(8,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(7)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(7)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(9,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(9,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(9,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,112)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,120)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(7)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(7)<1> ubCURR_UV(9,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(7)<1> wDIFF_TEMPORAL(7)<16;16,1> ubCURR_UV(9,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(8)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(8)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(10,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(10,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(10,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,128)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,136)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(8)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(8)<1> ubCURR_UV(10,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(8)<1> wDIFF_TEMPORAL(8)<16;16,1> ubCURR_UV(10,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(9)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(9)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(11,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(11,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(11,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,144)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,152)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(9)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(9)<1> ubCURR_UV(11,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(9)<1> wDIFF_TEMPORAL(9)<16;16,1> ubCURR_UV(11,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(10)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(10)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(12,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(12,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(12,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,160)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,168)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(10)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(10)<1> ubCURR_UV(12,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(10)<1> wDIFF_TEMPORAL(10)<16;16,1> ubCURR_UV(12,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(11)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(11)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(13,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(13,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(13,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,176)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,184)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(11)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(11)<1> ubCURR_UV(13,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(11)<1> wDIFF_TEMPORAL(11)<16;16,1> ubCURR_UV(13,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(12)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(12)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(14,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(14,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(14,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,192)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,200)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(12)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(12)<1> ubCURR_UV(14,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(12)<1> wDIFF_TEMPORAL(12)<16;16,1> ubCURR_UV(14,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(13)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(13)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(15,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(15,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(15,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,208)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,216)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(13)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(13)<1> ubCURR_UV(15,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(13)<1> wDIFF_TEMPORAL(13)<16;16,1> ubCURR_UV(15,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(14)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(14)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(16,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(16,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(16,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,224)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,232)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(14)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(14)<1> ubCURR_UV(16,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(14)<1> wDIFF_TEMPORAL(14)<16;16,1> ubCURR_UV(16,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(15)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(15)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(17,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(17,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(17,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,240)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,248)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(15)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(15)<1> ubCURR_UV(17,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(15)<1> wDIFF_TEMPORAL(15)<16;16,1> ubCURR_UV(17,2)<16;16,1>
-
-
- //16x4 to 8x4 - Second 16 lines
- add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> uwDIFF_TEMPORAL_SUM4x4(2,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(2,2)<4;2,1>
-
- //8x4 to 4x4 - Second 16 lines
- add (16) uwDIFF_TEMPORAL_SUM4x4_FINAL(1)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1> { AccWrEn }
-
- //Find if block is motion block - Second 16 lines
- cmp.g.f1.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_FINAL(1)<16;16,1> r61.26<0;2,1>:ub
-
- //Move TEMPORAL_SUM4x4 for SIMD16 use later.
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,0)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,2)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,4)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,6)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,8)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,10)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,12)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,14)<0;2,1>
-
- //Pick Appropriate Weight History Based on motion. - Second 16 lines
- (-f1.0) mov (16) uwCURBE_TEMP(1)<1> uwCURBE_TEMP(3)<16;16,1>
-
- //Actual DN - Second 16 lines
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(16)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(16)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(22,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(22,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(22,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,0)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,8)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(16)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(16)<1> ubCURR_UV(22,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(16)<1> wDIFF_TEMPORAL(16)<16;16,1> ubCURR_UV(22,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(17)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(17)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(23,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(23,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(23,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,16)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,24)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(17)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(17)<1> ubCURR_UV(23,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(17)<1> wDIFF_TEMPORAL(17)<16;16,1> ubCURR_UV(23,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(18)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(18)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(24,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(24,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(24,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,32)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,40)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(18)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(18)<1> ubCURR_UV(24,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(18)<1> wDIFF_TEMPORAL(18)<16;16,1> ubCURR_UV(24,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(19)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(19)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(25,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(25,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(25,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,48)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,56)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(19)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(19)<1> ubCURR_UV(25,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(19)<1> wDIFF_TEMPORAL(19)<16;16,1> ubCURR_UV(25,2)<16;16,1>
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(20)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(20)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(26,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(26,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(26,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,64)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,72)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(20)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(20)<1> ubCURR_UV(26,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(20)<1> wDIFF_TEMPORAL(20)<16;16,1> ubCURR_UV(26,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(21)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(21)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(27,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(27,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(27,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,80)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,88)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(21)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(21)<1> ubCURR_UV(27,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(21)<1> wDIFF_TEMPORAL(21)<16;16,1> ubCURR_UV(27,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(22)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(22)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(28,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(28,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(28,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,96)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,104)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(22)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(22)<1> ubCURR_UV(28,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(22)<1> wDIFF_TEMPORAL(22)<16;16,1> ubCURR_UV(28,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(23)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(23)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(29,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(29,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(29,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,112)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,120)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(23)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(23)<1> ubCURR_UV(29,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(23)<1> wDIFF_TEMPORAL(23)<16;16,1> ubCURR_UV(29,2)<16;16,1>
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(24)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(24)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(30,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(30,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(30,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,128)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,136)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(24)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(24)<1> ubCURR_UV(30,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(24)<1> wDIFF_TEMPORAL(24)<16;16,1> ubCURR_UV(30,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(25)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(25)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(31,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(31,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(31,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,144)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,152)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(25)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(25)<1> ubCURR_UV(31,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(25)<1> wDIFF_TEMPORAL(25)<16;16,1> ubCURR_UV(31,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(26)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(26)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(32,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(32,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(32,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,160)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,168)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(26)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(26)<1> ubCURR_UV(32,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(26)<1> wDIFF_TEMPORAL(26)<16;16,1> ubCURR_UV(32,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(27)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(27)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(33,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(33,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(33,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,176)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,184)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(27)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(27)<1> ubCURR_UV(33,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(27)<1> wDIFF_TEMPORAL(27)<16;16,1> ubCURR_UV(33,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(28)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(28)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(34,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(34,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(34,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,192)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,200)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(28)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(28)<1> ubCURR_UV(34,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(28)<1> wDIFF_TEMPORAL(28)<16;16,1> ubCURR_UV(34,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wCURBE_TEMP(4)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wCURBE_TEMP(4)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(35,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(35,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(35,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,208)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,216)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wCURBE_TEMP(4)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wCURBE_TEMP(4)<1> ubCURR_UV(35,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wCURBE_TEMP(4)<1> wCURBE_TEMP(4)<16;16,1> ubCURR_UV(35,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wCURBE_TEMP(5)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wCURBE_TEMP(5)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(36,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(36,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(36,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,224)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,232)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wCURBE_TEMP(5)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wCURBE_TEMP(5)<1> ubCURR_UV(36,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wCURBE_TEMP(5)<1> wCURBE_TEMP(5)<16;16,1> ubCURR_UV(36,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wCURBE_TEMP(6)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wCURBE_TEMP(6)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(37,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(37,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(37,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,240)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,248)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wCURBE_TEMP(6)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wCURBE_TEMP(6)<1> ubCURR_UV(37,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wCURBE_TEMP(6)<1> wCURBE_TEMP(6)<16;16,1> ubCURR_UV(37,2)<16;16,1>
-
- //Pack Weight History WORD -> BYTE
- mov (16) ubCURBE_TEMP(3,0)<1> ubCURBE_TEMP(0)<32;16,2>
- mov (16) ubCURBE_TEMP(3,16)<1> ubCURBE_TEMP(1)<32;16,2>
-
-
-
-//Module Name : DN_UV_Compute_BNE_UV
-//Author : Tatiya, Rupesh
-//Description : Computes minimum SOAD for each 16x4 block.
-
- cmp.l.f0.0 (8) null:w uwSOAD_MIN_8x4(0,12)<16;4,1> uwSOAD_MIN_8x4(2,12)<16;4,1>
- (f0.0)sel (8) uwCURBE_TEMP(1,0)<1> uwSOAD_MIN_8x4(0,12)<16;4,1> uwSOAD_MIN_8x4(2,12)<16;4,1>
-
- mov (8) ubCURBE_TEMP(1)<1> ubCURBE_TEMP(1)<16;8,2>
-
-
-
-//Module Name : DN_UV_YUY2_Pack_Denoised_UV
-//Name : Tatiya, Rupesh
-//Description : Pack UV denoised data based on YUY2 input.
-
-
-
-//Module Name : DN_UV_Pack_Denoised_UV
-//Name : Tatiya, Rupesh
-//Description : Pack UV denoised data based on PL2/PL3/PA.
-
-
- add (1) a0.0<1>:uw r54.21<0;1,0>:ub 2976:w
- add (1) a0.1<1>:uw r54.21<0;1,0>:ub 3264:w
- add (1) a0.2<1>:uw r54.21<0;1,0>:ub 3552:w
- add (1) a0.3<1>:uw r54.21<0;1,0>:ub 3840:w
-
-//First 8 lines.
- mov (16) r[a0.0, 0]<2>:ub ubDIFF_TEMPORAL(0)<32;16,2>
- mov (16) r[a0.0, 32]<2>:ub ubDIFF_TEMPORAL(1)<32;16,2>
- mov (16) r[a0.0, 64]<2>:ub ubDIFF_TEMPORAL(2)<32;16,2>
- mov (16) r[a0.0, 96]<2>:ub ubDIFF_TEMPORAL(3)<32;16,2>
- mov (16) r[a0.0, 128]<2>:ub ubDIFF_TEMPORAL(4)<32;16,2>
- mov (16) r[a0.0, 160]<2>:ub ubDIFF_TEMPORAL(5)<32;16,2>
- mov (16) r[a0.0, 192]<2>:ub ubDIFF_TEMPORAL(6)<32;16,2>
- mov (16) r[a0.0, 224]<2>:ub ubDIFF_TEMPORAL(7)<32;16,2>
-
-//Second 8 lines
- mov (16) r[a0.1, 0]<2>:ub ubDIFF_TEMPORAL(8)<32;16,2>
- mov (16) r[a0.1, 32]<2>:ub ubDIFF_TEMPORAL(9)<32;16,2>
- mov (16) r[a0.1, 64]<2>:ub ubDIFF_TEMPORAL(10)<32;16,2>
- mov (16) r[a0.1, 96]<2>:ub ubDIFF_TEMPORAL(11)<32;16,2>
- mov (16) r[a0.1, 128]<2>:ub ubDIFF_TEMPORAL(12)<32;16,2>
- mov (16) r[a0.1, 160]<2>:ub ubDIFF_TEMPORAL(13)<32;16,2>
- mov (16) r[a0.1, 192]<2>:ub ubDIFF_TEMPORAL(14)<32;16,2>
- mov (16) r[a0.1, 224]<2>:ub ubDIFF_TEMPORAL(15)<32;16,2>
-
-//Third 8 lines
- mov (16) r[a0.2, 0]<2>:ub ubDIFF_TEMPORAL(16)<32;16,2>
- mov (16) r[a0.2, 32]<2>:ub ubDIFF_TEMPORAL(17)<32;16,2>
- mov (16) r[a0.2, 64]<2>:ub ubDIFF_TEMPORAL(18)<32;16,2>
- mov (16) r[a0.2, 96]<2>:ub ubDIFF_TEMPORAL(19)<32;16,2>
- mov (16) r[a0.2, 128]<2>:ub ubDIFF_TEMPORAL(20)<32;16,2>
- mov (16) r[a0.2, 160]<2>:ub ubDIFF_TEMPORAL(21)<32;16,2>
- mov (16) r[a0.2, 192]<2>:ub ubDIFF_TEMPORAL(22)<32;16,2>
- mov (16) r[a0.2, 224]<2>:ub ubDIFF_TEMPORAL(23)<32;16,2>
-
-//Fourth 8 lines
-//5 lines first
- mov (16) r[a0.3, 0]<2>:ub ubDIFF_TEMPORAL(24)<32;16,2>
- mov (16) r[a0.3, 32]<2>:ub ubDIFF_TEMPORAL(25)<32;16,2>
- mov (16) r[a0.3, 64]<2>:ub ubDIFF_TEMPORAL(26)<32;16,2>
- mov (16) r[a0.3, 96]<2>:ub ubDIFF_TEMPORAL(27)<32;16,2>
- mov (16) r[a0.3, 128]<2>:ub ubDIFF_TEMPORAL(28)<32;16,2>
-
-//3 more lines
- mov (16) r[a0.3, 160]<2>:ub ubCURBE_TEMP(4)<32;16,2>
- mov (16) r[a0.3, 192]<2>:ub ubCURBE_TEMP(5)<32;16,2>
- mov (16) r[a0.3, 224]<2>:ub ubCURBE_TEMP(6)<32;16,2>
-
-
- //TODO - See if History saving can be combined with Curr Frame Save. - rT
-
-
-//Module Name : DN_UV_Save_Hist_UV
-//Author : Tatiya, Rupesh
-//Description : Saves DN history for UV data.
-
- mov (8) r3.0<1>:ud r0.0<8;8,1>:ud
- mov (2) r3.0<1>:d r62.12<2;2,1>:w
- mov (1) r3.2<1>:d 0x30007:ud
-
- send (8) null<1>:d r3 0x5 0x40A8021:ud
-
-
-
-//Module Name : DN_UV_Save_BNE_UV
-//Author : Tatiya, Rupesh
-//Description : Saves BNE values for 16x16 U and 16x16 V.
-
- mov (8) r1.0<1>:ud r0.0<8;8,1>:ud
- mov (2) r1.0<1>:d r63.12<2;2,1>:w
- mov (1) r1.2<1>:d 0x10003:ud
-
- send (8) null<1>:d r1 0x5 0x40A8023:ud
-
-
-
-//Module Name : DN_UV_YUY2_Save_Curr_Frame_YUV
-//Author : Tatiya, Rupesh
-
-
-
-//Module Name : DN_UV_Load_Curr_Frame_Y
-//Author : Tatiya, Rupesh
-//Description : Saves Y or YUY2 of Current frame.
-
-
-
-
- mov (8) acc0.0<1>:ud r0.0<8;8,1>:ud
- shl (1) r62.10<1>:w r62.10<0;1,0>:w 1:w
- mov (1) acc0.0<1>:d r62.10<0;1,0>:w
- mov (1) acc0.1<1>:d r62.11<0;1,0>:w
-
- mov (1) acc0.2<1>:d 0x7001F:ud
-
- mov (8) r92.0<1>:ud acc0.0<8;8,1>:ud
-
- mov (8) r101.0<1>:ud acc0.0<8;8,1>:ud
- mov (8) r110.0<1>:ud acc0.0<8;8,1>:ud
- mov (8) r119.0<1>:ud acc0.0<8;8,1>:ud
-
- add (1) r101.1<1>:d acc0.1<0;1,0>:d 8:d
-
- add (1) r110.0<1>:d acc0.0<0;1,0>:d 32:d
-
- add (1) r119.0<1>:d acc0.0<0;1,0>:d 32:d
- add (1) r119.1<1>:d acc0.1<0;1,0>:d 8:d
-
- send (8) null<1>:d r92 0x5 0x120A8018:ud
- send (8) null<1>:d r101 0x5 0x120A8018:ud
- send (8) null<1>:d r110 0x5 0x120A8018:ud
- send (8) null<1>:d r119 0x5 0x120A8018:ud
-
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
-
-
- //All sub-routines here
-
-
-// Module Name : Noise_Detection
-// Author : Tatiya, Rupesh
-// Description : Performs noise detection on 32 pixels of U (8x4) and 32 pixels of V (8x4).
-
-DN_UV_NOISE_DETECTION_UV:
-
-// Find Field Block Median
-//
-// Purpose : Find the median value of the nine pixels in the same field
-// which are centered at current pixel.
-//
-// Works on 9 pixels centered at the current pixel
-// NOTE: pixels are within same field.
-// v4 - current pixel
-//
-// v2 v1 v0
-// * * * <--- Different field - not used
-// v5 v4 v3
-// * * * <--- Different field - not used
-// v8 v7 v6
-
-// Algorithm to find median modifies the data.
-// Copy the data needed to calculate median so the original source data stays intact.
-//
-
-//TODO - Change Interleaved implementation to separated one if - , does not work on predication. - rT
-
-//Delete Later - rT
-//mov (1) pCUR_UV:uw 52*32:uw
-
-// v0
-mov (16) ubMEDIAN_TEMP(0,0)<1> r[a0.0,0]<16;16,1>
-// v0
-mov (16) ubMEDIAN_TEMP(0,16)<1> r[a0.0,32]<16;16,1>
-// v1
-mov (16) ubMEDIAN_TEMP(1,0)<1> r[a0.0,2]<16;16,1>
-// v1
-mov (16) ubMEDIAN_TEMP(1,16)<1> r[a0.0,34]<16;16,1>
-// v2
-mov (16) ubMEDIAN_TEMP(2,0)<1> r[a0.0,4]<16;16,1>
-// v2
-mov (16) ubMEDIAN_TEMP(2,16)<1> r[a0.0,36]<16;16,1>
-// v3
-mov (16) ubMEDIAN_TEMP(3,0)<1> r[a0.0,64]<16;16,1>
-// v3
-mov (16) ubMEDIAN_TEMP(3,16)<1> r[a0.0,96]<16;16,1>
-// v4
-mov (16) ubMEDIAN_TEMP(4,0)<1> r[a0.0,66]<16;16,1>
-// v4
-mov (16) ubMEDIAN_TEMP(4,16)<1> r[a0.0,98]<16;16,1>
-// v5
-mov (16) ubMEDIAN_TEMP(5,0)<1> r[a0.0,68]<16;16,1>
-// v5
-mov (16) ubMEDIAN_TEMP(5,16)<1> r[a0.0,100]<16;16,1>
-// v6
-mov (16) ubMEDIAN_TEMP(6,0)<1> r[a0.0,128]<16;16,1>
-// v6
-mov (16) ubMEDIAN_TEMP(6,16)<1> r[a0.0,160]<16;16,1>
-// v7
-mov (16) ubMEDIAN_TEMP(7,0)<1> r[a0.0,130]<16;16,1>
-// v7
-mov (16) ubMEDIAN_TEMP(7,16)<1> r[a0.0,162]<16;16,1>
-// v8
-mov (16) ubMEDIAN_TEMP(8,0)<1> r[a0.0,132]<16;16,1>
-// v8
-mov (16) ubMEDIAN_TEMP(8,16)<1> r[a0.0,164]<16;16,1>
-
-//TODO - Optimize one instruction here.
-add (1) a0.0:uw a0.0<0;1,0>:uw 64:uw
-// v0
-mov (16) ubMEDIAN_TEMP(9,0)<1> r[a0.0,0]<16;16,1>
-// v0
-mov (16) ubMEDIAN_TEMP(9,16)<1> r[a0.0,32]<16;16,1>
-// v1
-mov (16) ubMEDIAN_TEMP(10,0)<1> r[a0.0,2]<16;16,1>
-// v1
-mov (16) ubMEDIAN_TEMP(10,16)<1> r[a0.0,34]<16;16,1>
-// v2
-mov (16) ubMEDIAN_TEMP(11,0)<1> r[a0.0,4]<16;16,1>
-// v2
-mov (16) ubMEDIAN_TEMP(11,16)<1> r[a0.0,36]<16;16,1>
-// v3
-mov (16) ubMEDIAN_TEMP(12,0)<1> r[a0.0,64]<16;16,1>
-// v3
-mov (16) ubMEDIAN_TEMP(12,16)<1> r[a0.0,96]<16;16,1>
-// v4
-mov (16) ubMEDIAN_TEMP(13,0)<1> r[a0.0,66]<16;16,1>
-// v4
-mov (16) ubMEDIAN_TEMP(13,16)<1> r[a0.0,98]<16;16,1>
-// v5
-mov (16) ubMEDIAN_TEMP(14,0)<1> r[a0.0,68]<16;16,1>
-// v5
-mov (16) ubMEDIAN_TEMP(14,16)<1> r[a0.0,100]<16;16,1>
-// v6
-mov (16) ubMEDIAN_TEMP(15,0)<1> r[a0.0,128]<16;16,1>
-// v6
-mov (16) ubMEDIAN_TEMP(15,16)<1> r[a0.0,160]<16;16,1>
-// v7
-mov (16) ubMEDIAN_TEMP(16,0)<1> r[a0.0,130]<16;16,1>
-// v7
-mov (16) ubMEDIAN_TEMP(16,16)<1> r[a0.0,162]<16;16,1>
-// v8
-mov (16) ubMEDIAN_TEMP(17,0)<1> r[a0.0,132]<16;16,1>
-// v8
-mov (16) ubMEDIAN_TEMP(17,16)<1> r[a0.0,164]<16;16,1>
-
-//TODO - Optimize one instruction here.
-add (1) a0.0:uw a0.0<0;1,0>:uw 64:uw
-
-// MedianSwap
-//
-// MedianSwap(inOutLeft, inOutRight)
-// {
-// if (inOutLeft > inOutRight)
-// {
-// temp = inOutLeft
-// inOutLeft = inOutRight
-// inOutRight = temp
-// }
-// }
-
-// MedianSwap(v1, v2) - U
-// MedianSwap(v4, v5) - U
-// MedianSwap(v1, v2) - V
-// MedianSwap(v4, v5) - V
-
-cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(1,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
-cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(5,0)<32;16,2>
-cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(1,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
-cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(5,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(1,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(1,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
-
-(f0.0) mov (16) ubMEDIAN_TEMP(1,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
-(f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(5,0)<32;16,2>
-(f1.0) mov (16) ubMEDIAN_TEMP(1,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
-(f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(5,1)<32;16,2>
-
-(f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubTEMP1(0,0)<16;16,1>
-(f0.1) mov (16) ubMEDIAN_TEMP(5,0)<2> ubTEMP1(0,16)<16;16,1>
-(f1.0) mov (16) ubMEDIAN_TEMP(2,1)<2> ubTEMP1(1,0)<16;16,1>
-(f1.1) mov (16) ubMEDIAN_TEMP(5,1)<2> ubTEMP1(1,16)<16;16,1>
-
-// MedianSwap(v7, v8) - U
-// MedianSwap(v0, v1) - U
-// MedianSwap(v7, v8) - V
-// MedianSwap(v0, v1) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(7,0)<32;16,2> ubMEDIAN_TEMP(8,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(0,0)<32;16,2> ubMEDIAN_TEMP(1,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(7,1)<32;16,2> ubMEDIAN_TEMP(8,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(0,1)<32;16,2> ubMEDIAN_TEMP(1,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(7,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(0,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(7,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(0,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(7,0)<2> ubMEDIAN_TEMP(8,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(0,0)<2> ubMEDIAN_TEMP(1,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(7,1)<2> ubMEDIAN_TEMP(8,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(0,1)<2> ubMEDIAN_TEMP(1,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(8,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(1,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(8,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(1,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // MedianSwap(v3, v4) - U
- // MedianSwap(v6, v7) - U
- // MedianSwap(v3, v4) - V
- // MedianSwap(v6, v7) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(3,0)<32;16,2> ubMEDIAN_TEMP(4,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(6,0)<32;16,2> ubMEDIAN_TEMP(7,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(3,1)<32;16,2> ubMEDIAN_TEMP(4,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(6,1)<32;16,2> ubMEDIAN_TEMP(7,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(3,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(6,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(3,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(6,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(3,0)<2> ubMEDIAN_TEMP(4,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(6,0)<2> ubMEDIAN_TEMP(7,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(3,1)<2> ubMEDIAN_TEMP(4,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(6,1)<2> ubMEDIAN_TEMP(7,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(7,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(4,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(7,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // MedianSwap(v1, v2) - U
- // MedianSwap(v4, v5) - U
- // MedianSwap(v1, v2) - V
- // MedianSwap(v4, v5) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(1,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(5,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(1,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(5,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(1,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(1,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(1,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(5,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(1,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(5,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(5,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(2,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(5,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // MedianSwap(v7, v8) - U
- // MedianSwap(v0, v3) - U
- // MedianSwap(v7, v8) - V
- // MedianSwap(v0, v3) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(7,0)<32;16,2> ubMEDIAN_TEMP(8,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(0,0)<32;16,2> ubMEDIAN_TEMP(3,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(7,1)<32;16,2> ubMEDIAN_TEMP(8,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(0,1)<32;16,2> ubMEDIAN_TEMP(3,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(7,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(0,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(7,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(0,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(7,0)<2> ubMEDIAN_TEMP(8,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(0,0)<2> ubMEDIAN_TEMP(3,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(7,1)<2> ubMEDIAN_TEMP(8,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(0,1)<2> ubMEDIAN_TEMP(3,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(8,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(3,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(8,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(3,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // NOTE:
- // Compare v0 to v6 to find the minimum.
- // Store the minimum for future use.
- //TODO - Find if MIN is needed.
- //cmp.l.f0.0 (16) null:w ubMEDIAN_TEMP(%1+0,0)<32;16,2> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
- //cmp.l.f1.0 (16) null:w ubMEDIAN_TEMP(%1+0,1)<32;16,2> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
- //(f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,0)<32;16,2>
- //(f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,1)<32;16,2>
- //(-f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
- //(-f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
-
- // MedianSwap(v5, v8) - U
- // MedianSwap(v4, v7) - U
- // MedianSwap(v5, v8) - V
- // MedianSwap(v4, v7) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(5,0)<32;16,2> ubMEDIAN_TEMP(8,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(7,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(5,1)<32;16,2> ubMEDIAN_TEMP(8,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(7,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(5,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(5,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(5,0)<2> ubMEDIAN_TEMP(8,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(7,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(5,1)<2> ubMEDIAN_TEMP(8,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(7,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(8,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(7,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(8,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(7,1)<2> ubTEMP1(1,16)<16;16,1>
-
-// NOTE:
-// Compare v2 to v8 to find the maximum.
-// Store the maximum for future use.
- //TODO - Find if MAX is needed.
-// cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(%1+2,0)<32;16,2> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
-// cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(%1+2,1)<32;16,2> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
-//(f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,0)<32;16,2>
-//(f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,1)<32;16,2>
-//(-f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
-//(-f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
-
-// MedianSwap(v3, v6) - U
-// MedianSwap(v1, v4) - U
-// MedianSwap(v3, v6) - V
-// MedianSwap(v1, v4) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(3,0)<32;16,2> ubMEDIAN_TEMP(6,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(1,0)<32;16,2> ubMEDIAN_TEMP(4,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(3,1)<32;16,2> ubMEDIAN_TEMP(6,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(1,1)<32;16,2> ubMEDIAN_TEMP(4,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(6,0)<2> ubMEDIAN_TEMP(3,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(1,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(6,1)<2> ubMEDIAN_TEMP(3,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(1,1)<32;16,2>
-
- // MedianSwap(v2,v5) - U
- // MedianSwap(v4,v7) - U
- // MedianSwap(v2,v5) - V
- // MedianSwap(v4,v7) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(2,0)<32;16,2> ubMEDIAN_TEMP(5,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(7,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(2,1)<32;16,2> ubMEDIAN_TEMP(5,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(7,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubMEDIAN_TEMP(5,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(7,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(2,1)<2> ubMEDIAN_TEMP(5,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(7,1)<32;16,2>
-
- // MedianSwap(v4,v2) - U
- // MedianSwap(v4,v2) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(2,1)<2> ubTEMP1(0,16)<16;16,1>
-
- // MedianSwap(v6,v4) - U
- // MedianSwap(v6,v4) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(6,0)<32;16,2> ubMEDIAN_TEMP(4,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(6,1)<32;16,2> ubMEDIAN_TEMP(4,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(6,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(6,1)<32;16,2>
-
- // MedianSwap(v4,v2) - U
- // MedianSwap(v4,v2) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
-cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(10,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
-cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(14,0)<32;16,2>
-cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(10,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
-cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(14,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(10,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(10,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
-
-(f0.0) mov (16) ubMEDIAN_TEMP(10,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
-(f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(14,0)<32;16,2>
-(f1.0) mov (16) ubMEDIAN_TEMP(10,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
-(f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(14,1)<32;16,2>
-
-(f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubTEMP1(0,0)<16;16,1>
-(f0.1) mov (16) ubMEDIAN_TEMP(14,0)<2> ubTEMP1(0,16)<16;16,1>
-(f1.0) mov (16) ubMEDIAN_TEMP(11,1)<2> ubTEMP1(1,0)<16;16,1>
-(f1.1) mov (16) ubMEDIAN_TEMP(14,1)<2> ubTEMP1(1,16)<16;16,1>
-
-// MedianSwap(v7, v8) - U
-// MedianSwap(v0, v1) - U
-// MedianSwap(v7, v8) - V
-// MedianSwap(v0, v1) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(16,0)<32;16,2> ubMEDIAN_TEMP(17,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(9,0)<32;16,2> ubMEDIAN_TEMP(10,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(16,1)<32;16,2> ubMEDIAN_TEMP(17,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(9,1)<32;16,2> ubMEDIAN_TEMP(10,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(16,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(9,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(16,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(9,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(16,0)<2> ubMEDIAN_TEMP(17,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(9,0)<2> ubMEDIAN_TEMP(10,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(16,1)<2> ubMEDIAN_TEMP(17,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(9,1)<2> ubMEDIAN_TEMP(10,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(17,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(10,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(17,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(10,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // MedianSwap(v3, v4) - U
- // MedianSwap(v6, v7) - U
- // MedianSwap(v3, v4) - V
- // MedianSwap(v6, v7) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(12,0)<32;16,2> ubMEDIAN_TEMP(13,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(15,0)<32;16,2> ubMEDIAN_TEMP(16,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(12,1)<32;16,2> ubMEDIAN_TEMP(13,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(15,1)<32;16,2> ubMEDIAN_TEMP(16,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(12,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(15,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(12,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(15,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(12,0)<2> ubMEDIAN_TEMP(13,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(15,0)<2> ubMEDIAN_TEMP(16,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(12,1)<2> ubMEDIAN_TEMP(13,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(15,1)<2> ubMEDIAN_TEMP(16,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(16,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(13,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(16,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // MedianSwap(v1, v2) - U
- // MedianSwap(v4, v5) - U
- // MedianSwap(v1, v2) - V
- // MedianSwap(v4, v5) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(10,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(14,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(10,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(14,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(10,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(10,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(10,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(14,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(10,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(14,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(14,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(11,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(14,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // MedianSwap(v7, v8) - U
- // MedianSwap(v0, v3) - U
- // MedianSwap(v7, v8) - V
- // MedianSwap(v0, v3) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(16,0)<32;16,2> ubMEDIAN_TEMP(17,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(9,0)<32;16,2> ubMEDIAN_TEMP(12,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(16,1)<32;16,2> ubMEDIAN_TEMP(17,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(9,1)<32;16,2> ubMEDIAN_TEMP(12,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(16,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(9,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(16,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(9,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(16,0)<2> ubMEDIAN_TEMP(17,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(9,0)<2> ubMEDIAN_TEMP(12,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(16,1)<2> ubMEDIAN_TEMP(17,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(9,1)<2> ubMEDIAN_TEMP(12,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(17,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(12,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(17,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(12,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // NOTE:
- // Compare v0 to v6 to find the minimum.
- // Store the minimum for future use.
- //TODO - Find if MIN is needed.
- //cmp.l.f0.0 (16) null:w ubMEDIAN_TEMP(%1+0,0)<32;16,2> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
- //cmp.l.f1.0 (16) null:w ubMEDIAN_TEMP(%1+0,1)<32;16,2> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
- //(f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,0)<32;16,2>
- //(f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,1)<32;16,2>
- //(-f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
- //(-f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
-
- // MedianSwap(v5, v8) - U
- // MedianSwap(v4, v7) - U
- // MedianSwap(v5, v8) - V
- // MedianSwap(v4, v7) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(14,0)<32;16,2> ubMEDIAN_TEMP(17,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(16,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(14,1)<32;16,2> ubMEDIAN_TEMP(17,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(16,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(14,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(14,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(14,0)<2> ubMEDIAN_TEMP(17,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(16,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(14,1)<2> ubMEDIAN_TEMP(17,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(16,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(17,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(16,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(17,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(16,1)<2> ubTEMP1(1,16)<16;16,1>
-
-// NOTE:
-// Compare v2 to v8 to find the maximum.
-// Store the maximum for future use.
- //TODO - Find if MAX is needed.
-// cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(%1+2,0)<32;16,2> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
-// cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(%1+2,1)<32;16,2> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
-//(f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,0)<32;16,2>
-//(f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,1)<32;16,2>
-//(-f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
-//(-f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
-
-// MedianSwap(v3, v6) - U
-// MedianSwap(v1, v4) - U
-// MedianSwap(v3, v6) - V
-// MedianSwap(v1, v4) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(12,0)<32;16,2> ubMEDIAN_TEMP(15,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(10,0)<32;16,2> ubMEDIAN_TEMP(13,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(12,1)<32;16,2> ubMEDIAN_TEMP(15,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(10,1)<32;16,2> ubMEDIAN_TEMP(13,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(15,0)<2> ubMEDIAN_TEMP(12,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(10,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(15,1)<2> ubMEDIAN_TEMP(12,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(10,1)<32;16,2>
-
- // MedianSwap(v2,v5) - U
- // MedianSwap(v4,v7) - U
- // MedianSwap(v2,v5) - V
- // MedianSwap(v4,v7) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(11,0)<32;16,2> ubMEDIAN_TEMP(14,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(16,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(11,1)<32;16,2> ubMEDIAN_TEMP(14,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(16,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubMEDIAN_TEMP(14,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(16,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(11,1)<2> ubMEDIAN_TEMP(14,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(16,1)<32;16,2>
-
- // MedianSwap(v4,v2) - U
- // MedianSwap(v4,v2) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(11,1)<2> ubTEMP1(0,16)<16;16,1>
-
- // MedianSwap(v6,v4) - U
- // MedianSwap(v6,v4) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(15,0)<32;16,2> ubMEDIAN_TEMP(13,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(15,1)<32;16,2> ubMEDIAN_TEMP(13,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(15,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(15,1)<32;16,2>
-
- // MedianSwap(v4,v2) - U
- // MedianSwap(v4,v2) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
-
-// Sobel Value calculation for the current pixel v4
-// v2 v1 v0
-// * * * <--- Different field - not used
-// v5 v4 v3
-// * * * <--- Different field - not used
-// v8 v7 v6
-//
-// Gx = -v0 - 2*v3 - v6 + v2 + 2*v5 + v8
-// Gy = v0 + 2*v1 + v2 - v6 - 2*v7 - v8
-//
-// Sobel = (|Gx| + |Gy|) >> 3
-
-//TODO - Change Later - rT
-add (1) a0.0:uw a0.0<0;1,0>:uw -128:uw
-
-// - 2 * v3
-mul (16) acc0.0<1>:w r[a0.0,64]<16;16,1>:ub -2:w
-// + v8
-mac (16) acc0.0<1>:w r[a0.0,132]<16;16,1>:ub 1:w
-// - v0
-mac (16) acc0.0<1>:w r[a0.0,0]<16;16,1>:ub -1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,128]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,4]<16;16,1>:ub 1:w
-// + 2 * v5
-mac (16) wSOBEL_X(0)<1> r[a0.0,68]<16;16,1>:ub 2:w
-// - 2 * v3
-mul (16) acc0.0<1>:w r[a0.0,96]<16;16,1>:ub -2:w
-// + v8
-mac (16) acc0.0<1>:w r[a0.0,164]<16;16,1>:ub 1:w
-// - v0
-mac (16) acc0.0<1>:w r[a0.0,32]<16;16,1>:ub -1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,160]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,36]<16;16,1>:ub 1:w
-// + 2 * v5
-mac (16) wSOBEL_X(1)<1> r[a0.0,100]<16;16,1>:ub 2:w
-// - 2 * v3
-mul (16) acc0.0<1>:w r[a0.0,128]<16;16,1>:ub -2:w
-// + v8
-mac (16) acc0.0<1>:w r[a0.0,196]<16;16,1>:ub 1:w
-// - v0
-mac (16) acc0.0<1>:w r[a0.0,64]<16;16,1>:ub -1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,192]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,68]<16;16,1>:ub 1:w
-// + 2 * v5
-mac (16) wSOBEL_X(2)<1> r[a0.0,132]<16;16,1>:ub 2:w
-// - 2 * v3
-mul (16) acc0.0<1>:w r[a0.0,160]<16;16,1>:ub -2:w
-// + v8
-mac (16) acc0.0<1>:w r[a0.0,228]<16;16,1>:ub 1:w
-// - v0
-mac (16) acc0.0<1>:w r[a0.0,96]<16;16,1>:ub -1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,224]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,100]<16;16,1>:ub 1:w
-// + 2 * v5
-mac (16) wSOBEL_X(3)<1> r[a0.0,164]<16;16,1>:ub 2:w
-
-// + 2 * v1
-mul (16) acc0.0<1>:w r[a0.0,2]<16;16,1>:ub 2:w
-// + v0
-mac (16) acc0.0<1>:w r[a0.0,0]<16;16,1>:ub 1:w
-// - v8
-mac (16) acc0.0<1>:w r[a0.0,132]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,4]<16;16,1>:ub 1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,128]<16;16,1>:ub -1:w
-// - 2 * v7
-mac (16) acc0.0<1>:w r[a0.0,130]<16;16,1>:ub -2:w
-
-add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(0)<16;16,1>
-
-shr (16) uwSOBEL(0)<1> acc0.0<16;16,1>:uw 3:uw
-// + 2 * v1
-mul (16) acc0.0<1>:w r[a0.0,34]<16;16,1>:ub 2:w
-// + v0
-mac (16) acc0.0<1>:w r[a0.0,32]<16;16,1>:ub 1:w
-// - v8
-mac (16) acc0.0<1>:w r[a0.0,164]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,36]<16;16,1>:ub 1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,160]<16;16,1>:ub -1:w
-// - 2 * v7
-mac (16) acc0.0<1>:w r[a0.0,162]<16;16,1>:ub -2:w
-
-add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(1)<16;16,1>
-
-shr (16) uwSOBEL(1)<1> acc0.0<16;16,1>:uw 3:uw
-// + 2 * v1
-mul (16) acc0.0<1>:w r[a0.0,66]<16;16,1>:ub 2:w
-// + v0
-mac (16) acc0.0<1>:w r[a0.0,64]<16;16,1>:ub 1:w
-// - v8
-mac (16) acc0.0<1>:w r[a0.0,196]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,68]<16;16,1>:ub 1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,192]<16;16,1>:ub -1:w
-// - 2 * v7
-mac (16) acc0.0<1>:w r[a0.0,194]<16;16,1>:ub -2:w
-
-add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(2)<16;16,1>
-
-shr (16) uwSOBEL(2)<1> acc0.0<16;16,1>:uw 3:uw
-// + 2 * v1
-mul (16) acc0.0<1>:w r[a0.0,98]<16;16,1>:ub 2:w
-// + v0
-mac (16) acc0.0<1>:w r[a0.0,96]<16;16,1>:ub 1:w
-// - v8
-mac (16) acc0.0<1>:w r[a0.0,228]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,100]<16;16,1>:ub 1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,224]<16;16,1>:ub -1:w
-// - 2 * v7
-mac (16) acc0.0<1>:w r[a0.0,226]<16;16,1>:ub -2:w
-
-add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(3)<16;16,1>
-
-shr (16) uwSOBEL(3)<1> acc0.0<16;16,1>:uw 3:uw
-
-//Mov Median in CURBE_TEMP to free up temp space.
-mov (16) ubMEDIAN(0,0)<1> ubMEDIAN_TEMP(4,0)<16;16,1>
-mov (16) ubMEDIAN(0,16)<1> ubMEDIAN_TEMP(4,16)<16;16,1>
-mov (16) ubMEDIAN(0,32)<1> ubMEDIAN_TEMP(13,0)<16;16,1>
-mov (16) ubMEDIAN(0,48)<1> ubMEDIAN_TEMP(13,16)<16;16,1>
-
-// Find:
-// absDiff = abs(ubCurY - ubMedian)
-// Find the difference between pixel and median value.
-
-//Median is interleaved. So difference is also interleaved.
-
-//------------------------------------------------------------------------------------------
-//Process 16 U and 16 V pixels here and rest later.
-// first row - v0,v1,v2
-add (16) wDIFF(0)<1> r[a0.0,0]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-add (16) wDIFF(1)<1> r[a0.0,2]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-add (16) wDIFF(2)<1> r[a0.0,4]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-
-// second row - v3,v4,v5
-add (16) wDIFF(3)<1> r[a0.0,64]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-add (16) wDIFF(4)<1> r[a0.0,66]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-add (16) wDIFF(5)<1> r[a0.0,68]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-
-// third row - v6,v7,v8
-add (16) wDIFF(6)<1> r[a0.0,128]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-add (16) wDIFF(7)<1> r[a0.0,130]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-add (16) wDIFF(8)<1> r[a0.0,132]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-// first row - v0,v1,v2
-add (16) wDIFF(9)<1> r[a0.0,32]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-add (16) wDIFF(10)<1> r[a0.0,34]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-add (16) wDIFF(11)<1> r[a0.0,36]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-
-// second row - v3,v4,v5
-add (16) wDIFF(12)<1> r[a0.0,96]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-add (16) wDIFF(13)<1> r[a0.0,98]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-add (16) wDIFF(14)<1> r[a0.0,100]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-
-// third row - v6,v7,v8
-add (16) wDIFF(15)<1> r[a0.0,160]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-add (16) wDIFF(16)<1> r[a0.0,162]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-add (16) wDIFF(17)<1> r[a0.0,164]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-
-//TODO - Change Later - rT
-add (1) a0.0:uw a0.0<0;1,0>:uw 64:uw
-
-// Find sum of all absolute differences AND
-// maximum absolute difference for 16 U and 16 V here.
-//First 2 rows of 8x4
-//Compare 0-1, 2-3, 4-5, 6-7
-cmp.g.f0.0 (16) null:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
-cmp.g.f0.1 (16) null:uw (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
-cmp.g.f1.0 (16) null:uw (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
-cmp.g.f1.1 (16) null:uw (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
-
-//Calculate SAD
- add (16) acc0.0<1>:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(2)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(3)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(4)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(5)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(6)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(7)<16;16,1>
- add (16) uwSOAD(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF(8)<16;16,1>
-
-(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
-(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
-(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
-(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
-
-//------------
- //DIFF(0-7) is not needed here. Populate it.
- // first row - v0,v1,v2
- add (16) wDIFF(0)<1> r[a0.0,0]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
- add (16) wDIFF(1)<1> r[a0.0,2]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
- add (16) wDIFF(2)<1> r[a0.0,4]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
-
- // second row - v3,v4,v5
- add (16) wDIFF(3)<1> r[a0.0,64]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
- add (16) wDIFF(4)<1> r[a0.0,66]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
- add (16) wDIFF(5)<1> r[a0.0,68]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
-
- // third row - v6,v7
- add (16) wDIFF(6)<1> r[a0.0,128]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
- add (16) wDIFF(7)<1> r[a0.0,130]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
-//------------
-
-//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-//Compare Max(0,1,2,3) - Max(4,5,6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-
-//Compare Max(0,1,2,3,4,5,6,7) - 8
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
-(f0.0)sel (16) uwMAX_ABS_DIFF(0)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
-
-//------------
- //Load v8 - DIFF(8)
- add (16) wDIFF(8)<1> r[a0.0,132]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
-//------------
-//Compare 0-1, 2-3, 4-5, 6-7
-cmp.g.f0.0 (16) null:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
-cmp.g.f0.1 (16) null:uw (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
-cmp.g.f1.0 (16) null:uw (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
-cmp.g.f1.1 (16) null:uw (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
-
-//Calculate SAD
- add (16) acc0.0<1>:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(11)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(12)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(13)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(14)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(15)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(16)<16;16,1>
- add (16) uwSOAD(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF(17)<16;16,1>
-
-(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
-(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
-(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
-(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
-
-//------------
- //DIFF(0-7) is not needed here. Populate it.
- // first row - v0,v1,v2
- add (16) wDIFF(9)<1> r[a0.0,32]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
- add (16) wDIFF(10)<1> r[a0.0,34]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
- add (16) wDIFF(11)<1> r[a0.0,36]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
-
- // second row - v3,v4,v5
- add (16) wDIFF(12)<1> r[a0.0,96]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
- add (16) wDIFF(13)<1> r[a0.0,98]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
- add (16) wDIFF(14)<1> r[a0.0,100]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
-
- // third row - v6,v7
- add (16) wDIFF(15)<1> r[a0.0,160]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
- add (16) wDIFF(16)<1> r[a0.0,162]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
-//------------
-
-//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-//Compare Max(0,1,2,3) - Max(4,5,6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-
-//Compare Max(0,1,2,3,4,5,6,7) - 8
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
-(f0.0)sel (16) uwMAX_ABS_DIFF(1)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
-
-//------------
- //Load v8 - DIFF(8)
- add (16) wDIFF(17)<1> r[a0.0,164]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
-//------------
-
-//if ((sobel_edge_measure < m_SobelEdgeThreshold) && ((block_max-block_min) < m_LocalDiffThreshold))
-// if (sigma_mb_min > sigma)
-// sigma_mb_min = sigma;
-
-//NOTE: block_min is always zero as median is one of the value in 3x3 block. So no need o calculate it.
-// So just do -
-//if ((sobel_edge_measure < m_SobelEdgeThreshold) && ((block_max) < m_LocalDiffThreshold) && ( sigma < sigma_mb_min))
-// sigma_mb_min = sigma;
-
-//We are processing 32 bytes of U and 32 bytes of V - each of size 8x4.
-//Compare first 8 bytes with max possible (255).
-//Start above condition from second 8 bytes.
-
-//TODO - Change Later - rT
-// mov (1) pCUR_MIN_SOAD_8x4:uw 1752:uw //r54.24:ub
-
-//First row of 8x4
- cmp.l.f0.0 (16) null:uw uwSOBEL(0)<16;16,1> r55.30<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(0)<16;16,1> r55.28<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(0)<16;16,1> 255:uw
-(f0.0) sel (16) uwSOBEL(0)<1> uwSOAD(0)<16;16,1> 255:uw
-
-//Second row of 8x4
- cmp.l.f0.0 (16) null:uw uwSOBEL(1)<16;16,1> r55.30<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(1)<16;16,1> r55.28<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(1)<16;16,1> uwSOBEL(0)<16;16,1>
-(f0.0) mov (16) uwSOBEL(0)<1> uwSOAD(1)<16;16,1>
-
-// Find sum of all absolute differences AND
-// maximum absolute difference for 16 U and 16 V here.
-//Second 2 rows of 8x4
-//Compare 0-1, 2-3, 4-5, 6-7
-cmp.g.f0.0 (16) null:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
-cmp.g.f0.1 (16) null:uw (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
-cmp.g.f1.0 (16) null:uw (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
-cmp.g.f1.1 (16) null:uw (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
-
-//Calculate SAD
- add (16) acc0.0<1>:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(2)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(3)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(4)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(5)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(6)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(7)<16;16,1>
- add (16) uwSOAD(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF(8)<16;16,1>
-
-(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
-(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
-(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
-(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
-
-//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-//Compare Max(0,1,2,3) - Max(4,5,6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-
-//Compare Max(0,1,2,3,4,5,6,7) - 8
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
-(f0.0)sel (16) uwMAX_ABS_DIFF(0)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
-//Compare 0-1, 2-3, 4-5, 6-7
-cmp.g.f0.0 (16) null:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
-cmp.g.f0.1 (16) null:uw (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
-cmp.g.f1.0 (16) null:uw (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
-cmp.g.f1.1 (16) null:uw (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
-
-//Calculate SAD
- add (16) acc0.0<1>:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(11)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(12)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(13)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(14)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(15)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(16)<16;16,1>
- add (16) uwSOAD(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF(17)<16;16,1>
-
-(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
-(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
-(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
-(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
-
-//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-//Compare Max(0,1,2,3) - Max(4,5,6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-
-//Compare Max(0,1,2,3,4,5,6,7) - 8
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
-(f0.0)sel (16) uwMAX_ABS_DIFF(1)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
-
-//Third row of 8x4
- cmp.l.f0.0 (16) null:uw uwSOBEL(2)<16;16,1> r55.30<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(0)<16;16,1> r55.28<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(0)<16;16,1> uwSOBEL(0)<16;16,1>
-(f0.0) mov (16) uwSOBEL(0)<1> uwSOAD(0)<16;16,1>
-
-//Fourth row of 8x4
- cmp.l.f0.0 (16) null:uw uwSOBEL(3)<16;16,1> r55.30<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(1)<16;16,1> r55.28<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(1)<16;16,1> uwSOBEL(0)<16;16,1>
-(f0.0) mov (16) uwSOBEL(0)<1> uwSOAD(1)<16;16,1>
-
- cmp.l.f0.0 (8) null:uw uwSOBEL(0,0)<8;8,1> uwSOBEL(0,8)<8;8,1>
-(f0.0) sel (8) uwSOBEL(0)<1> uwSOBEL(0,0)<8;8,1> uwSOBEL(0,8)<8;8,1>
-
- cmp.l.f0.0 (4) null:uw uwSOBEL(0,0)<4;4,1> uwSOBEL(0,4)<4;4,1>
-(f0.0) sel (4) uwSOBEL(0)<1> uwSOBEL(0,0)<4;4,1> uwSOBEL(0,4)<4;4,1>
-
- cmp.l.f0.0 (2) null:uw uwSOBEL(0,0)<2;2,1> uwSOBEL(0,2)<2;2,1>
-(f0.0) sel (2) r[a0.1,0]<1>:uw uwSOBEL(0,0)<2;2,1> uwSOBEL(0,2)<2;2,1>
-
-
-
-
-
-
-// End of common.inc
-
-mov (1) ip:ud r9.7<0;1,0>:d
-
-
-.end_code
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/PA_DN_422CP.g4a b/src/shaders/post_processing/gen7/PA_DN_422CP.g4a
deleted file mode 100644
index d83f8aa..0000000
--- a/src/shaders/post_processing/gen7/PA_DN_422CP.g4a
+++ /dev/null
@@ -1,513 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 114 // Total instruction count
-// 1 // Total kernel count
-
-.kernel PA_DN_422CP
-.code
-
-
-
-// FileName: DN_PA_Core.asm
-// Author: Vivek Kumar
-// Description: Tasks for DN only case (16x8 block) for Packed format
-
-
-
-// FileName: DN.asm
-// Author: Vivek Kumar
-// Description: Tasks for DN only case (16x8 block)
-
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: DNDI.inc
-// Author: Vivek Kumar
-// Description: Include file for DN, DI and DNDI
-// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
-
-
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//====================== Binding table (Explicit To DNDI)=========================================
-
-
-.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
-.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
-.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
-
-
-.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
-.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
-.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
-.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
-.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
-.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
-.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
-.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
-
-//r45
-//Use r45 as message header, so no need to "mov" the data.
-
-.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
-.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-// Message response (UV Copy); Use buffer 5
-.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Temp GRFs: For 42X to 422 Conversion
-.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
-.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
- // Message descriptor for sampler read
- // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
- // 1 (header present 1) 0 11 (SIMD32/64 mode)
- // 1000 (message type) 0000 (DI state index)
- // 00000000 (binding table index - set later)
- // = 0x040b8000
-
-
-// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
-
-
-//---------------------------------------------------------------------------
-// VDI Return Data format
-//---------------------------------------------------------------------------
-// Defines for DI enabled
-
-
-// Defines for DI disabled
-
-
-
-// FileName: DNDI_Command.asm
-// Author: Vivek Kumar
-// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
-
-// Prepare the DNDI send command
-mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
-mov (1) mwMSGHDR_DNDI(1,4)<1> r9.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
-mov (1) mwMSGHDR_DNDI(1,12)<1> r9.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
-
-send (8) udDNDI_RESP(0)<1> r18 0x2 0x49E8003:ud
-
-// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
-// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
-mov (2) r9.0<1>:w uwDNDI_RESP(4,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
-
-
-
-// FileName: DN_Hist_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DN history data to statistics surface
-
-// Write denoise history to memory
-mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
-
-
- mov (2) mudMSGHDR_HIST(1)<1> udDNDI_RESP(4,0)<2;2,1> // Move denoise history to MRF (4x2)
-
-
-shr (2) r27.0<1>:ud r9.0<2;2,1>:w 2:w // X,Y origin / 4
-add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
-mov (1) r27.2<1>:ud 0x10003:ud { NoDDChk } // block width and height
-
-mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
-send (8) null<1>:d r22 0x5 0x40A8021:ud
-
-
-
-// FileName: DNDI_Enc_Stats_Save.asm
-// Author: Vivek Kumar
-// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write encoder statistics to memory
-//Currently enable this only on Gen6 validation
-mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
-mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
-
-shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
-mul (1) acc0.1<1>:ud r9.1<0;1,0>:w 3:w // Y origin * 3
-shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
-mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x50003:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
-add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
-
-
- //Data block for Encoder Statistics
- //----------------------------------------------------
- //| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
- //----------------------------------------------------
- //| BNE | X | X | X | X |
- //----------------------------------------------------
- //| X | SVCM | X |
- //----------------------------------------------------
- //| SHCM | STAD | X |
- //----------------------------------------------------
- //| X | X |
- //----------------------------------------------------
- //| X | SVCM | X |
- //----------------------------------------------------
- //| SHCM | STAD | X |
- //----------------------------------------------------
- mov (1) mubMSGHDR_ENC_STATS(1,0)<1> ubDNDI_RESP(4,8)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
- mov (1) muwMSGHDR_ENC_STATS(1,3)<1> uwDNDI_RESP(4,11)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) muwMSGHDR_ENC_STATS(1,4)<1> uwDNDI_RESP(4,12)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (1) muwMSGHDR_ENC_STATS(1,9)<1> uwDNDI_RESP(4,8)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) muwMSGHDR_ENC_STATS(1,10)<1> uwDNDI_RESP(4,9)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
-
-
-send (8) null<1>:d r24 0x5 0x40A8021:ud
-
-
-
-// FileName: DN_Save_PA.asm
-// Author: Vivek Kumar
-// Description: Save one 16x8 blocks of DN output in Packed format
-
-
-add (4) a0.4<1>:uw r2.28<4;4,1>:ub 1024:w // Initial Y,U,V offset in YUV422 block; it starts at m14
-
-mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
-shl (1) mdMSGHDR_DN_OUT(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } // X origin * 2 (422 output)
-mov (1) mdMSGHDR_DN_OUT(0,1)<1> r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
-mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x7001F:ud { NoDDChk } // block width and height (32x8)
-
- mov (16) r[a0.4,0]<2>:ub ubDNDI_RESP(0,0)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (16) r[a0.4,32]<2>:ub ubDNDI_RESP(0,16)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (16) r[a0.4,64]<2>:ub ubDNDI_RESP(0,32)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (16) r[a0.4,96]<2>:ub ubDNDI_RESP(0,48)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (16) r[a0.4,128]<2>:ub ubDNDI_RESP(0,64)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (16) r[a0.4,160]<2>:ub ubDNDI_RESP(0,80)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (16) r[a0.4,192]<2>:ub ubDNDI_RESP(0,96)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (16) r[a0.4,224]<2>:ub ubDNDI_RESP(0,112)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) r[a0.5,0]<4>:ub ubDNDI_RESP(5,1)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (8) r[a0.6,0]<4>:ub ubDNDI_RESP(5,0)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (8) r[a0.5,32]<4>:ub ubDNDI_RESP(5,17)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (8) r[a0.6,32]<4>:ub ubDNDI_RESP(5,16)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (8) r[a0.5,64]<4>:ub ubDNDI_RESP(5,33)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (8) r[a0.6,64]<4>:ub ubDNDI_RESP(5,32)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (8) r[a0.5,96]<4>:ub ubDNDI_RESP(5,49)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (8) r[a0.6,96]<4>:ub ubDNDI_RESP(5,48)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (8) r[a0.5,128]<4>:ub ubDNDI_RESP(5,65)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (8) r[a0.6,128]<4>:ub ubDNDI_RESP(5,64)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (8) r[a0.5,160]<4>:ub ubDNDI_RESP(5,81)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (8) r[a0.6,160]<4>:ub ubDNDI_RESP(5,80)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (8) r[a0.5,192]<4>:ub ubDNDI_RESP(5,97)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (8) r[a0.6,192]<4>:ub ubDNDI_RESP(5,96)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (8) r[a0.5,224]<4>:ub ubDNDI_RESP(5,113)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (8) r[a0.6,224]<4>:ub ubDNDI_RESP(5,112)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-//send out data through data port
-send (8) null<1>:d r31.0 0x5 0x120A8018:ud
-
-
-
-// FileName: DN_Save_422CP_16x8.asm
-// Author: Vivek Kumar
-// Description: Save one 16x8 blocks of DN output to the color pipe in 4-2-2 format
-
-
-.declare mubMSGHDR_DN_OUT_2 Base=r36.0 ElementSize=1 Type=ub
-
-
-mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
-shl (1) mdMSGHDR_DN_OUT(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } // X origin * 2 (422 output)
-mov (1) mdMSGHDR_DN_OUT(0,1)<1> r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
-mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x7000F:ud { NoDDClr, NoDDChk } // block width and height (16x8)
-
-//M0.3 - 0 - CP Enable, 1 - Area of Interest, 3:2 Message Format(TBD), 4:3 - Ignored, 31:5 CP state pointer
-//Compose area-of-interest bit + color pipe state pointer
-or (1) mudMSGHDR_DN_OUT(0,3)<1> r2.4<0;1,0>:ud r9.26<0;1,0>:b { NoDDChk }
-
-// First 8 x 8 Block
- mov (8) mubMSGHDR_DN_OUT(1)<2> ubDNDI_RESP(0,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT(1,16)<2> ubDNDI_RESP(0,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT(2)<2> ubDNDI_RESP(0,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT(2,16)<2> ubDNDI_RESP(0,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT(3)<2> ubDNDI_RESP(0,64)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT(3,16)<2> ubDNDI_RESP(0,80)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT(4)<2> ubDNDI_RESP(0,96)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT(4,16)<2> ubDNDI_RESP(0,112)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT(1,1)<4> ubDNDI_RESP(5,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(1,17)<4> ubDNDI_RESP(5,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT(1,3)<4> ubDNDI_RESP(5,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(1,19)<4> ubDNDI_RESP(5,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(2,1)<4> ubDNDI_RESP(5,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(2,17)<4> ubDNDI_RESP(5,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT(2,3)<4> ubDNDI_RESP(5,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(2,19)<4> ubDNDI_RESP(5,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(3,1)<4> ubDNDI_RESP(5,65)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(3,17)<4> ubDNDI_RESP(5,81)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT(3,3)<4> ubDNDI_RESP(5,64)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(3,19)<4> ubDNDI_RESP(5,80)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(4,1)<4> ubDNDI_RESP(5,97)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(4,17)<4> ubDNDI_RESP(5,113)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT(4,3)<4> ubDNDI_RESP(5,96)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(4,19)<4> ubDNDI_RESP(5,112)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-// Second 8 x 8 Block
-mov (8) r36.0<1>:ud r31.0<8;8,1>:ud
-add (1) r36.0<1>:ud r36.0<0;1,0>:w 0x10:w
-
- mov (8) mubMSGHDR_DN_OUT_2(1)<2> ubDNDI_RESP(0,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT_2(1,16)<2> ubDNDI_RESP(0,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT_2(2)<2> ubDNDI_RESP(0,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT_2(2,16)<2> ubDNDI_RESP(0,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT_2(3)<2> ubDNDI_RESP(0,72)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT_2(3,16)<2> ubDNDI_RESP(0,88)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT_2(4)<2> ubDNDI_RESP(0,104)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT_2(4,16)<2> ubDNDI_RESP(0,120)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT_2(1,1)<4> ubDNDI_RESP(5,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(1,17)<4> ubDNDI_RESP(5,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT_2(1,3)<4> ubDNDI_RESP(5,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(1,19)<4> ubDNDI_RESP(5,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(2,1)<4> ubDNDI_RESP(5,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(2,17)<4> ubDNDI_RESP(5,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT_2(2,3)<4> ubDNDI_RESP(5,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(2,19)<4> ubDNDI_RESP(5,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(3,1)<4> ubDNDI_RESP(5,73)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(3,17)<4> ubDNDI_RESP(5,89)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT_2(3,3)<4> ubDNDI_RESP(5,72)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(3,19)<4> ubDNDI_RESP(5,88)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(4,1)<4> ubDNDI_RESP(5,105)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(4,17)<4> ubDNDI_RESP(5,121)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT_2(4,3)<4> ubDNDI_RESP(5,104)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(4,19)<4> ubDNDI_RESP(5,120)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-//send out data through data port
-send (8) null<1>:d r31.0 0x5 0xA0A801B:ud
-send (8) null<1>:d r36.0 0x5 0xA0A801B:ud
-
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
-
-
-.end_code
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/PA_DN_PA.g4a b/src/shaders/post_processing/gen7/PA_DN_PA.g4a
deleted file mode 100644
index d2cb53f..0000000
--- a/src/shaders/post_processing/gen7/PA_DN_PA.g4a
+++ /dev/null
@@ -1,425 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 57 // Total instruction count
-// 1 // Total kernel count
-
-.kernel PA_DN_PA
-.code
-
-
-
-// FileName: DN_PA_Core.asm
-// Author: Vivek Kumar
-// Description: Tasks for DN only case (16x8 block) for Packed format
-
-
-
-// FileName: DN.asm
-// Author: Vivek Kumar
-// Description: Tasks for DN only case (16x8 block)
-
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: DNDI.inc
-// Author: Vivek Kumar
-// Description: Include file for DN, DI and DNDI
-// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
-
-
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//====================== Binding table (Explicit To DNDI)=========================================
-
-
-.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
-.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
-.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
-
-
-.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
-.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
-.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
-.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
-.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
-.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
-.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
-.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
-
-//r45
-//Use r45 as message header, so no need to "mov" the data.
-
-.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
-.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-// Message response (UV Copy); Use buffer 5
-.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Temp GRFs: For 42X to 422 Conversion
-.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
-.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
- // Message descriptor for sampler read
- // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
- // 1 (header present 1) 0 11 (SIMD32/64 mode)
- // 1000 (message type) 0000 (DI state index)
- // 00000000 (binding table index - set later)
- // = 0x040b8000
-
-
-// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
-
-
-//---------------------------------------------------------------------------
-// VDI Return Data format
-//---------------------------------------------------------------------------
-// Defines for DI enabled
-
-
-// Defines for DI disabled
-
-
-
-// FileName: DNDI_Command.asm
-// Author: Vivek Kumar
-// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
-
-// Prepare the DNDI send command
-mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
-mov (1) mwMSGHDR_DNDI(1,4)<1> r9.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
-mov (1) mwMSGHDR_DNDI(1,12)<1> r9.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
-
-send (8) udDNDI_RESP(0)<1> r18 0x2 0x49E8003:ud
-
-// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
-// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
-mov (2) r9.0<1>:w uwDNDI_RESP(4,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
-
-
-
-// FileName: DN_Hist_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DN history data to statistics surface
-
-// Write denoise history to memory
-mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
-
-
- mov (2) mudMSGHDR_HIST(1)<1> udDNDI_RESP(4,0)<2;2,1> // Move denoise history to MRF (4x2)
-
-
-shr (2) r27.0<1>:ud r9.0<2;2,1>:w 2:w // X,Y origin / 4
-add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
-mov (1) r27.2<1>:ud 0x10003:ud { NoDDChk } // block width and height
-
-mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
-send (8) null<1>:d r22 0x5 0x40A8021:ud
-
-
-
-// FileName: DNDI_Enc_Stats_Save.asm
-// Author: Vivek Kumar
-// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write encoder statistics to memory
-//Currently enable this only on Gen6 validation
-mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
-mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
-
-shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
-mul (1) acc0.1<1>:ud r9.1<0;1,0>:w 3:w // Y origin * 3
-shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
-mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x50003:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
-add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
-
-
- //Data block for Encoder Statistics
- //----------------------------------------------------
- //| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
- //----------------------------------------------------
- //| BNE | X | X | X | X |
- //----------------------------------------------------
- //| X | SVCM | X |
- //----------------------------------------------------
- //| SHCM | STAD | X |
- //----------------------------------------------------
- //| X | X |
- //----------------------------------------------------
- //| X | SVCM | X |
- //----------------------------------------------------
- //| SHCM | STAD | X |
- //----------------------------------------------------
- mov (1) mubMSGHDR_ENC_STATS(1,0)<1> ubDNDI_RESP(4,8)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
- mov (1) muwMSGHDR_ENC_STATS(1,3)<1> uwDNDI_RESP(4,11)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) muwMSGHDR_ENC_STATS(1,4)<1> uwDNDI_RESP(4,12)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (1) muwMSGHDR_ENC_STATS(1,9)<1> uwDNDI_RESP(4,8)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) muwMSGHDR_ENC_STATS(1,10)<1> uwDNDI_RESP(4,9)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
-
-
-send (8) null<1>:d r24 0x5 0x40A8021:ud
-
-
-
-// FileName: DN_Save_PA.asm
-// Author: Vivek Kumar
-// Description: Save one 16x8 blocks of DN output in Packed format
-
-
-add (4) a0.4<1>:uw r2.28<4;4,1>:ub 1024:w // Initial Y,U,V offset in YUV422 block; it starts at m14
-
-mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
-shl (1) mdMSGHDR_DN_OUT(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } // X origin * 2 (422 output)
-mov (1) mdMSGHDR_DN_OUT(0,1)<1> r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
-mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x7001F:ud { NoDDChk } // block width and height (32x8)
-
- mov (16) r[a0.4,0]<2>:ub ubDNDI_RESP(0,0)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (16) r[a0.4,32]<2>:ub ubDNDI_RESP(0,16)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (16) r[a0.4,64]<2>:ub ubDNDI_RESP(0,32)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (16) r[a0.4,96]<2>:ub ubDNDI_RESP(0,48)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (16) r[a0.4,128]<2>:ub ubDNDI_RESP(0,64)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (16) r[a0.4,160]<2>:ub ubDNDI_RESP(0,80)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (16) r[a0.4,192]<2>:ub ubDNDI_RESP(0,96)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (16) r[a0.4,224]<2>:ub ubDNDI_RESP(0,112)<16;16,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) r[a0.5,0]<4>:ub ubDNDI_RESP(5,1)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (8) r[a0.6,0]<4>:ub ubDNDI_RESP(5,0)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (8) r[a0.5,32]<4>:ub ubDNDI_RESP(5,17)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (8) r[a0.6,32]<4>:ub ubDNDI_RESP(5,16)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (8) r[a0.5,64]<4>:ub ubDNDI_RESP(5,33)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (8) r[a0.6,64]<4>:ub ubDNDI_RESP(5,32)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (8) r[a0.5,96]<4>:ub ubDNDI_RESP(5,49)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (8) r[a0.6,96]<4>:ub ubDNDI_RESP(5,48)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (8) r[a0.5,128]<4>:ub ubDNDI_RESP(5,65)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (8) r[a0.6,128]<4>:ub ubDNDI_RESP(5,64)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (8) r[a0.5,160]<4>:ub ubDNDI_RESP(5,81)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (8) r[a0.6,160]<4>:ub ubDNDI_RESP(5,80)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (8) r[a0.5,192]<4>:ub ubDNDI_RESP(5,97)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (8) r[a0.6,192]<4>:ub ubDNDI_RESP(5,96)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (8) r[a0.5,224]<4>:ub ubDNDI_RESP(5,113)<16;8,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (8) r[a0.6,224]<4>:ub ubDNDI_RESP(5,112)<16;8,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-//send out data through data port
-send (8) null<1>:d r31.0 0x5 0x120A8018:ud
-
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
-
-
-.end_code
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/PL2_AVS_Buf_0.g4a b/src/shaders/post_processing/gen7/PL2_AVS_Buf_0.g4a
deleted file mode 100644
index 3a4df29..0000000
--- a/src/shaders/post_processing/gen7/PL2_AVS_Buf_0.g4a
+++ /dev/null
@@ -1,564 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 44 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PL2_AVS_Buf_0.asm
-// Author: Tatiya, Rupesh
-// Description: Loads 8x8 AVS/IEF PL2 data into Buffer 0
-
-
-
-// FileName : PL2_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF PL2 data into Buffer N
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- //NOTE: We need offsets for second halfof LAYER 0 - even if we do not load it.
- //Update the channel offset in the buffers for the lower 8x4 data for BUFFER_0.
- mov (1) r22.4<1>:ud 0x400040:ud
-
-
- //Check if layer is to be skipped
-
-
- // f0.1 pre-computed in Set_Layer_0
- (-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_0_
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB400:ud //msg desc
-
- mov (1) r16.2:ud 0x0000D000:ud // Enable Red channel
-
-
- mov (1) r25.7<1>:ud r9.7:ud { NoDDClr }
- mov (1) r25.1<1>:ud r9.12:uw { NoDDChk }
-
-
- // set the vertical block number
-
-
- mov (8) r17.0:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
-
- // Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
- // if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- // {
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- // }
- // else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- // {
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- // }
- // else{
- // modified_u_coord = u_coord;
- // }
- // Where u_left = u – 2*du + 3*ddu for IEF On
- // And u_left = u for IEF Off case
- //
-
- // check whether Gen7 AVS WA is enabled,
- mov (1) r14.8:uw f0.0:uw // save f0.0
- mov (1) r14.5:f r17.2<0;1,0>:f // save pixel 0 U for chroma
-
- and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
- (-f0.0)jmpi (1) GEN7_PL2_AVS_WA_DONE_L0_0_
-
- // Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
-
- and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
- (f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
- (f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
- (f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
- (f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
- (-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
-
- and (1) r14.1:ud r2.3:uw 0xFFF8:uw
- asr (1) r14.1:ud r14.1:ud 3:d
- mov (1) r14.1:f r14.1:ud
-
- // Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
- mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
- add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
- add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
-
- //Check if the values are < 0 and account for (int) cast of negative numbers
-
- //(int)(u_left*width)
- cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
- mov (1) r14.0:d r14.0:f
- (f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
-
- //(int)(u_left*width + 5.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
- mov (1) r14.2:d r14.2:f
- (f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
-
- //(int)(u_left*width + 255.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
- mov (1) r14.3:d r14.3:f
- (f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
-
- mov (1) f0.0:uw 0:uw // clear flag
- //if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- (f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
- //else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- (-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- (f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
-
-GEN7_PL2_AVS_WA_DONE_L0_0_:
- mov (1) f0.0:uw r14.8:uw // restore f0.0
-
- send (1) uwBUFFER_0(0)<1> r16 0x2 a0.0:ud
- // Returns Y data in 4 GRFs in scrambled order
-
- mov (1) r17.2:f r14.5:f // restore pixel 0 U for chroma, No AVS WA for chroma
-
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x48EB801:ud // msg desc; 1 is added to change BI to UV
- mov (1) r16.2:ud 0x0000A000:ud // Enable Red+Blue channel
-
- send (1) uwBUFFER_0(4)<1> r16 0x2 a0.0:ud
- // Returns UV data in 8 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_0_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen7/PL2_AVS_Buf_1.g4a b/src/shaders/post_processing/gen7/PL2_AVS_Buf_1.g4a
deleted file mode 100644
index 6c492d2..0000000
--- a/src/shaders/post_processing/gen7/PL2_AVS_Buf_1.g4a
+++ /dev/null
@@ -1,557 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 42 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PL2_AVS_Buf_1.asm
-// Author: Tatiya, Rupesh
-// Description: Loads 8x8 AVS/IEF PL2 data into Buffer 1
-
-
-
-// FileName : PL2_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF PL2 data into Buffer N
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- //Check if layer is to be skipped
-
-
- // f0.1 pre-computed in Set_Layer_0
- (-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_1_
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB400:ud //msg desc
-
- mov (1) r16.2:ud 0x0000D000:ud // Enable Red channel
-
-
- // set the vertical block number
-
- add (1) r25.1<1>:ud r9.12:uw 1:ud
-
-
- mov (8) r17.0:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
-
- // Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
- // if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- // {
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- // }
- // else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- // {
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- // }
- // else{
- // modified_u_coord = u_coord;
- // }
- // Where u_left = u – 2*du + 3*ddu for IEF On
- // And u_left = u for IEF Off case
- //
-
- // check whether Gen7 AVS WA is enabled,
- mov (1) r14.8:uw f0.0:uw // save f0.0
- mov (1) r14.5:f r17.2<0;1,0>:f // save pixel 0 U for chroma
-
- and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
- (-f0.0)jmpi (1) GEN7_PL2_AVS_WA_DONE_L0_1_
-
- // Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
-
- and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
- (f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
- (f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
- (f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
- (f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
- (-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
-
- and (1) r14.1:ud r2.3:uw 0xFFF8:uw
- asr (1) r14.1:ud r14.1:ud 3:d
- mov (1) r14.1:f r14.1:ud
-
- // Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
- mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
- add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
- add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
-
- //Check if the values are < 0 and account for (int) cast of negative numbers
-
- //(int)(u_left*width)
- cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
- mov (1) r14.0:d r14.0:f
- (f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
-
- //(int)(u_left*width + 5.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
- mov (1) r14.2:d r14.2:f
- (f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
-
- //(int)(u_left*width + 255.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
- mov (1) r14.3:d r14.3:f
- (f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
-
- mov (1) f0.0:uw 0:uw // clear flag
- //if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- (f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
- //else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- (-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- (f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
-
-GEN7_PL2_AVS_WA_DONE_L0_1_:
- mov (1) f0.0:uw r14.8:uw // restore f0.0
-
- send (1) uwBUFFER_1(0)<1> r16 0x2 a0.0:ud
- // Returns Y data in 4 GRFs in scrambled order
-
- mov (1) r17.2:f r14.5:f // restore pixel 0 U for chroma, No AVS WA for chroma
-
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x48EB801:ud // msg desc; 1 is added to change BI to UV
- mov (1) r16.2:ud 0x0000A000:ud // Enable Red+Blue channel
-
- send (1) uwBUFFER_1(4)<1> r16 0x2 a0.0:ud
- // Returns UV data in 8 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_1_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen7/PL2_AVS_Buf_2.g4a b/src/shaders/post_processing/gen7/PL2_AVS_Buf_2.g4a
deleted file mode 100644
index 52f1cca..0000000
--- a/src/shaders/post_processing/gen7/PL2_AVS_Buf_2.g4a
+++ /dev/null
@@ -1,558 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 42 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PL2_AVS_Buf_2.asm
-// Author: Tatiya, Rupesh
-// Description: Loads 8x8 AVS/IEF PL2 data into Buffer 2
-
-
-
-// FileName : PL2_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF PL2 data into Buffer N
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- //Check if layer is to be skipped
-
-
- // f0.1 pre-computed in Set_Layer_0
- (-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_2_
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB400:ud //msg desc
-
- mov (1) r16.2:ud 0x0000D000:ud // Enable Red channel
-
-
- // set the vertical block number
-
-
- add (1) r25.1<1>:ud r9.12:uw 2:ud
-
-
- mov (8) r17.0:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
-
- // Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
- // if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- // {
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- // }
- // else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- // {
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- // }
- // else{
- // modified_u_coord = u_coord;
- // }
- // Where u_left = u – 2*du + 3*ddu for IEF On
- // And u_left = u for IEF Off case
- //
-
- // check whether Gen7 AVS WA is enabled,
- mov (1) r14.8:uw f0.0:uw // save f0.0
- mov (1) r14.5:f r17.2<0;1,0>:f // save pixel 0 U for chroma
-
- and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
- (-f0.0)jmpi (1) GEN7_PL2_AVS_WA_DONE_L0_2_
-
- // Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
-
- and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
- (f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
- (f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
- (f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
- (f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
- (-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
-
- and (1) r14.1:ud r2.3:uw 0xFFF8:uw
- asr (1) r14.1:ud r14.1:ud 3:d
- mov (1) r14.1:f r14.1:ud
-
- // Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
- mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
- add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
- add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
-
- //Check if the values are < 0 and account for (int) cast of negative numbers
-
- //(int)(u_left*width)
- cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
- mov (1) r14.0:d r14.0:f
- (f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
-
- //(int)(u_left*width + 5.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
- mov (1) r14.2:d r14.2:f
- (f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
-
- //(int)(u_left*width + 255.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
- mov (1) r14.3:d r14.3:f
- (f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
-
- mov (1) f0.0:uw 0:uw // clear flag
- //if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- (f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
- //else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- (-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- (f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
-
-GEN7_PL2_AVS_WA_DONE_L0_2_:
- mov (1) f0.0:uw r14.8:uw // restore f0.0
-
- send (1) uwBUFFER_2(0)<1> r16 0x2 a0.0:ud
- // Returns Y data in 4 GRFs in scrambled order
-
- mov (1) r17.2:f r14.5:f // restore pixel 0 U for chroma, No AVS WA for chroma
-
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x48EB801:ud // msg desc; 1 is added to change BI to UV
- mov (1) r16.2:ud 0x0000A000:ud // Enable Red+Blue channel
-
- send (1) uwBUFFER_2(4)<1> r16 0x2 a0.0:ud
- // Returns UV data in 8 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_2_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen7/PL2_AVS_Buf_3.g4a b/src/shaders/post_processing/gen7/PL2_AVS_Buf_3.g4a
deleted file mode 100644
index 2dab0d1..0000000
--- a/src/shaders/post_processing/gen7/PL2_AVS_Buf_3.g4a
+++ /dev/null
@@ -1,558 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 42 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PL2_AVS_Buf_3.asm
-// Author: Tatiya, Rupesh
-// Description: Loads 8x8 AVS/IEF PL2 data into Buffer 0
-
-
-
-// FileName : PL2_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF PL2 data into Buffer N
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- //Check if layer is to be skipped
-
-
- // f0.1 pre-computed in Set_Layer_0
- (-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_3_
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB400:ud //msg desc
-
- mov (1) r16.2:ud 0x0000D000:ud // Enable Red channel
-
-
- // set the vertical block number
-
-
- add (1) r25.1<1>:ud r9.12:uw 3:ud
-
-
- mov (8) r17.0:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
-
- // Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
- // if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- // {
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- // }
- // else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- // {
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- // }
- // else{
- // modified_u_coord = u_coord;
- // }
- // Where u_left = u – 2*du + 3*ddu for IEF On
- // And u_left = u for IEF Off case
- //
-
- // check whether Gen7 AVS WA is enabled,
- mov (1) r14.8:uw f0.0:uw // save f0.0
- mov (1) r14.5:f r17.2<0;1,0>:f // save pixel 0 U for chroma
-
- and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
- (-f0.0)jmpi (1) GEN7_PL2_AVS_WA_DONE_L0_3_
-
- // Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
-
- and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
- (f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
- (f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
- (f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
- (f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
- (-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
-
- and (1) r14.1:ud r2.3:uw 0xFFF8:uw
- asr (1) r14.1:ud r14.1:ud 3:d
- mov (1) r14.1:f r14.1:ud
-
- // Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
- mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
- add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
- add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
-
- //Check if the values are < 0 and account for (int) cast of negative numbers
-
- //(int)(u_left*width)
- cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
- mov (1) r14.0:d r14.0:f
- (f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
-
- //(int)(u_left*width + 5.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
- mov (1) r14.2:d r14.2:f
- (f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
-
- //(int)(u_left*width + 255.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
- mov (1) r14.3:d r14.3:f
- (f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
-
- mov (1) f0.0:uw 0:uw // clear flag
- //if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- (f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
- //else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- (-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- (f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
-
-GEN7_PL2_AVS_WA_DONE_L0_3_:
- mov (1) f0.0:uw r14.8:uw // restore f0.0
-
- send (1) uwBUFFER_3(0)<1> r16 0x2 a0.0:ud
- // Returns Y data in 4 GRFs in scrambled order
-
- mov (1) r17.2:f r14.5:f // restore pixel 0 U for chroma, No AVS WA for chroma
-
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x48EB801:ud // msg desc; 1 is added to change BI to UV
- mov (1) r16.2:ud 0x0000A000:ud // Enable Red+Blue channel
-
- send (1) uwBUFFER_3(4)<1> r16 0x2 a0.0:ud
- // Returns UV data in 8 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_3_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen7/PL3_AVS_Buf_0.g4a b/src/shaders/post_processing/gen7/PL3_AVS_Buf_0.g4a
deleted file mode 100644
index ee9f9de..0000000
--- a/src/shaders/post_processing/gen7/PL3_AVS_Buf_0.g4a
+++ /dev/null
@@ -1,571 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 47 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PL3_AVS_Buf_0.asm
-// Author: Tatiya, Rupesh
-// Description: Loads 8x8 AVS/IEF PL3 data into Buffer 0
-
-
-
-// FileName : PL3_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF PL3 data into Buffer N
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- //NOTE: We need offsets for second halfof LAYER 0 - even if we do not load it.
- //Update the channel offset in the buffers for the lower 8x4 data for BUFFER_0.
- mov (1) r22.4<1>:ud 0x400040:ud
-
-
- //Check if layer is to be skipped
-
-
- // f0.1 pre-computed in Set_Layer_0
- (-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_0_
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB400:ud //msg desc
-
- mov (1) r16.2:ud 0x0000D000:ud // Enable Red channel
-
-
- mov (1) r25.7<1>:ud r9.7:ud { NoDDClr }
- mov (1) r25.1<1>:ud r9.12:uw { NoDDChk }
-
-
- // set the vertical block number
-
-
- mov (8) r17.0:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
-
- // Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
- // if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- // {
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- // }
- // else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- // {
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- // }
- // else{
- // modified_u_coord = u_coord;
- // }
- // Where u_left = u – 2*du + 3*ddu for IEF On
- // And u_left = u for IEF Off case
- //
-
- // check whether Gen7 AVS WA is enabled,
- mov (1) r14.8:uw f0.0:uw // save f0.0
- mov (1) r14.5:f r17.2<0;1,0>:f // save pixel 0 U for chroma
-
- and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
- (-f0.0)jmpi (1) GEN7_PL3_AVS_WA_DONE_L0_0_
-
- // Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
-
- and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
- (f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
- (f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
- (f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
- (f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
- (-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
-
- and (1) r14.1:ud r2.3:uw 0xFFF8:uw
- asr (1) r14.1:ud r14.1:ud 3:d
- mov (1) r14.1:f r14.1:ud
-
- // Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
- mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
- add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
- add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
-
- //Check if the values are < 0 and account for (int) cast of negative numbers
-
- //(int)(u_left*width)
- cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
- mov (1) r14.0:d r14.0:f
- (f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
-
- //(int)(u_left*width + 5.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
- mov (1) r14.2:d r14.2:f
- (f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
-
- //(int)(u_left*width + 255.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
- mov (1) r14.3:d r14.3:f
- (f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
-
- mov (1) f0.0:uw 0:uw // clear flag
- //if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- (f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
- //else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- (-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- (f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
-
-GEN7_PL3_AVS_WA_DONE_L0_0_:
- mov (1) f0.0:uw r14.8:uw // restore f0.0
-
-
- send (1) uwBUFFER_0(0)<1> r16 0x2 a0.0:ud
- // Returns Y data in 4 GRFs in scrambled order
-
- mov (1) r17.2:f r14.5:f // restore pixel 0 U for chroma, No AVS WA for chroma
-
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB801:ud // msg desc; 1 is added to change BI to UV
- mov (1) r16.2:ud 0x0000E000:ud // Enable Red channel
-
- send (1) uwBUFFER_0(4)<1> r16 0x2 a0.0:ud
- // Returns U data in 4 GRFs in scrambled order
-
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EBC02:ud // msg desc; 1 is added to change BI to UV
- mov (1) r16.2:ud 0x0000E000:ud // Enable Red channel
-
- send (1) uwBUFFER_0(8)<1> r16 0x2 a0.0:ud
- // Returns V data in 4 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_0_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen7/PL3_AVS_Buf_1.g4a b/src/shaders/post_processing/gen7/PL3_AVS_Buf_1.g4a
deleted file mode 100644
index dd10080..0000000
--- a/src/shaders/post_processing/gen7/PL3_AVS_Buf_1.g4a
+++ /dev/null
@@ -1,564 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 45 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PL3_AVS_Buf_1.asm
-// Author: Tatiya, Rupesh
-// Description: Loads 8x8 AVS/IEF PL3 data into Buffer 1
-
-
-
-// FileName : PL3_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF PL3 data into Buffer N
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- //Check if layer is to be skipped
-
-
- // f0.1 pre-computed in Set_Layer_0
- (-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_1_
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB400:ud //msg desc
-
- mov (1) r16.2:ud 0x0000D000:ud // Enable Red channel
-
-
- // set the vertical block number
-
- add (1) r25.1<1>:ud r9.12:uw 1:ud
-
-
- mov (8) r17.0:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
-
- // Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
- // if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- // {
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- // }
- // else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- // {
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- // }
- // else{
- // modified_u_coord = u_coord;
- // }
- // Where u_left = u – 2*du + 3*ddu for IEF On
- // And u_left = u for IEF Off case
- //
-
- // check whether Gen7 AVS WA is enabled,
- mov (1) r14.8:uw f0.0:uw // save f0.0
- mov (1) r14.5:f r17.2<0;1,0>:f // save pixel 0 U for chroma
-
- and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
- (-f0.0)jmpi (1) GEN7_PL3_AVS_WA_DONE_L0_1_
-
- // Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
-
- and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
- (f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
- (f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
- (f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
- (f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
- (-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
-
- and (1) r14.1:ud r2.3:uw 0xFFF8:uw
- asr (1) r14.1:ud r14.1:ud 3:d
- mov (1) r14.1:f r14.1:ud
-
- // Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
- mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
- add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
- add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
-
- //Check if the values are < 0 and account for (int) cast of negative numbers
-
- //(int)(u_left*width)
- cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
- mov (1) r14.0:d r14.0:f
- (f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
-
- //(int)(u_left*width + 5.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
- mov (1) r14.2:d r14.2:f
- (f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
-
- //(int)(u_left*width + 255.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
- mov (1) r14.3:d r14.3:f
- (f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
-
- mov (1) f0.0:uw 0:uw // clear flag
- //if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- (f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
- //else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- (-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- (f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
-
-GEN7_PL3_AVS_WA_DONE_L0_1_:
- mov (1) f0.0:uw r14.8:uw // restore f0.0
-
-
- send (1) uwBUFFER_1(0)<1> r16 0x2 a0.0:ud
- // Returns Y data in 4 GRFs in scrambled order
-
- mov (1) r17.2:f r14.5:f // restore pixel 0 U for chroma, No AVS WA for chroma
-
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB801:ud // msg desc; 1 is added to change BI to UV
- mov (1) r16.2:ud 0x0000E000:ud // Enable Red channel
-
- send (1) uwBUFFER_1(4)<1> r16 0x2 a0.0:ud
- // Returns U data in 4 GRFs in scrambled order
-
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EBC02:ud // msg desc; 1 is added to change BI to UV
- mov (1) r16.2:ud 0x0000E000:ud // Enable Red channel
-
- send (1) uwBUFFER_1(8)<1> r16 0x2 a0.0:ud
- // Returns V data in 4 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_1_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen7/PL3_AVS_Buf_2.g4a b/src/shaders/post_processing/gen7/PL3_AVS_Buf_2.g4a
deleted file mode 100644
index 4595293..0000000
--- a/src/shaders/post_processing/gen7/PL3_AVS_Buf_2.g4a
+++ /dev/null
@@ -1,565 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 45 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PL3_AVS_Buf_2.asm
-// Author: Tatiya, Rupesh
-// Description: Loads 8x8 AVS/IEF PL3 data into Buffer 2
-
-
-
-// FileName : PL3_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF PL3 data into Buffer N
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- //Check if layer is to be skipped
-
-
- // f0.1 pre-computed in Set_Layer_0
- (-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_2_
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB400:ud //msg desc
-
- mov (1) r16.2:ud 0x0000D000:ud // Enable Red channel
-
-
- // set the vertical block number
-
-
- add (1) r25.1<1>:ud r9.12:uw 2:ud
-
-
- mov (8) r17.0:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
-
- // Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
- // if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- // {
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- // }
- // else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- // {
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- // }
- // else{
- // modified_u_coord = u_coord;
- // }
- // Where u_left = u – 2*du + 3*ddu for IEF On
- // And u_left = u for IEF Off case
- //
-
- // check whether Gen7 AVS WA is enabled,
- mov (1) r14.8:uw f0.0:uw // save f0.0
- mov (1) r14.5:f r17.2<0;1,0>:f // save pixel 0 U for chroma
-
- and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
- (-f0.0)jmpi (1) GEN7_PL3_AVS_WA_DONE_L0_2_
-
- // Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
-
- and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
- (f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
- (f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
- (f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
- (f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
- (-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
-
- and (1) r14.1:ud r2.3:uw 0xFFF8:uw
- asr (1) r14.1:ud r14.1:ud 3:d
- mov (1) r14.1:f r14.1:ud
-
- // Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
- mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
- add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
- add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
-
- //Check if the values are < 0 and account for (int) cast of negative numbers
-
- //(int)(u_left*width)
- cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
- mov (1) r14.0:d r14.0:f
- (f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
-
- //(int)(u_left*width + 5.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
- mov (1) r14.2:d r14.2:f
- (f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
-
- //(int)(u_left*width + 255.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
- mov (1) r14.3:d r14.3:f
- (f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
-
- mov (1) f0.0:uw 0:uw // clear flag
- //if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- (f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
- //else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- (-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- (f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
-
-GEN7_PL3_AVS_WA_DONE_L0_2_:
- mov (1) f0.0:uw r14.8:uw // restore f0.0
-
-
- send (1) uwBUFFER_2(0)<1> r16 0x2 a0.0:ud
- // Returns Y data in 4 GRFs in scrambled order
-
- mov (1) r17.2:f r14.5:f // restore pixel 0 U for chroma, No AVS WA for chroma
-
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB801:ud // msg desc; 1 is added to change BI to UV
- mov (1) r16.2:ud 0x0000E000:ud // Enable Red channel
-
- send (1) uwBUFFER_2(4)<1> r16 0x2 a0.0:ud
- // Returns U data in 4 GRFs in scrambled order
-
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EBC02:ud // msg desc; 1 is added to change BI to UV
- mov (1) r16.2:ud 0x0000E000:ud // Enable Red channel
-
- send (1) uwBUFFER_2(8)<1> r16 0x2 a0.0:ud
- // Returns V data in 4 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_2_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen7/PL3_AVS_Buf_3.g4a b/src/shaders/post_processing/gen7/PL3_AVS_Buf_3.g4a
deleted file mode 100644
index ed07bf8..0000000
--- a/src/shaders/post_processing/gen7/PL3_AVS_Buf_3.g4a
+++ /dev/null
@@ -1,565 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 45 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PL3_AVS_Buf_3.asm
-// Author: Tatiya, Rupesh
-// Description: Loads 8x8 AVS/IEF PL3 data into Buffer 3
-
-
-
-// FileName : PL3_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF PL3 data into Buffer N
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- //Check if layer is to be skipped
-
-
- // f0.1 pre-computed in Set_Layer_0
- (-f0.1) jmpi (1) SKIP_AVS_LOAD_L0_3_
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB400:ud //msg desc
-
- mov (1) r16.2:ud 0x0000D000:ud // Enable Red channel
-
-
- // set the vertical block number
-
-
- add (1) r25.1<1>:ud r9.12:uw 3:ud
-
-
- mov (8) r17.0:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
-
- // Gen7 AVS WA Only for YUV packed surfaces, NV12 and Y-channel only for Planar surfaces
- // if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- // {
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- // }
- // else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- // {
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- // }
- // else{
- // modified_u_coord = u_coord;
- // }
- // Where u_left = u – 2*du + 3*ddu for IEF On
- // And u_left = u for IEF Off case
- //
-
- // check whether Gen7 AVS WA is enabled,
- mov (1) r14.8:uw f0.0:uw // save f0.0
- mov (1) r14.5:f r17.2<0;1,0>:f // save pixel 0 U for chroma
-
- and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
- (-f0.0)jmpi (1) GEN7_PL3_AVS_WA_DONE_L0_3_
-
- // Gen7 AVS WA, check if IEF is ON for choosing Gen7 AVS WA formula
-
- and.nz.f0.0 (8) null<1>:uw r2.3<0;1,0>:uw 0x4:uw
- (f0.0)mov (8) acc0.0:f r17.2<0;1,0>:f
- (f0.0)mac (8) acc0.0:f r17.4<0;1,0>:f -2.0:f
- (f0.0)mac (8) acc0.0:f r17.6<0;1,0>:f 3.0:f
- (f0.0)mov (1) r14.2:f acc0:f // IEF ON, rTEMP3.2 = u_left
- (-f0.0)mov (1) r14.2:f r17.2<0;1,0>:f // IEF OFF, rTEMP3.2 = u_left
-
- and (1) r14.1:ud r2.3:uw 0xFFF8:uw
- asr (1) r14.1:ud r14.1:ud 3:d
- mov (1) r14.1:f r14.1:ud
-
- // Gen7 AVS WA, if (int)(u_left*width + 5.0/256) > (int)(u_left*width)
- mul (1) r14.0:f r14.2:f r14.1:f // rTEMP3.0 = u_left*width
- add (1) r14.2:f r14.0:f 0.01953125:f // rTEMP3.2 = u_left*width + 5.0/256
- add (1) r14.3:f r14.0:f 0.99609375:f // rTEMP3.3 = u_left*width + 255.0/256
-
- //Check if the values are < 0 and account for (int) cast of negative numbers
-
- //(int)(u_left*width)
- cmp.l.f0.0 (1) null<1>:f r14.0:f 0.00000000:f
- mov (1) r14.0:d r14.0:f
- (f0.0)add (1) r14.0:d r14.0<0;1,0>:d -1:d
-
- //(int)(u_left*width + 5.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.2:f 0.00000000:f
- mov (1) r14.2:d r14.2:f
- (f0.0)add (1) r14.2:d r14.2<0;1,0>:d -1:d
-
- //(int)(u_left*width + 255.0/256)
- cmp.l.f0.0 (1) null<1>:f r14.3:f 0.00000000:f
- mov (1) r14.3:d r14.3:f
- (f0.0)add (1) r14.3:d r14.3<0;1,0>:d -1:d
-
- mov (1) f0.0:uw 0:uw // clear flag
- //if (((int)(u_left*width + 5.0/256) > (int)(u_left*width))
- cmp.g.f1.0 (1) null<1>:d r14.2:d r14.0:d
- // modified_u_coord = u_coord – 5.0/(256*width); //floating point
- (f1.0) add (1) r17.2:f r17.2<0;1,0>:f -r2.3:f
- //else if(((int)(u_left*width + 255.0/256) == (int)(u_left*width))
- (-f1.0) cmp.e.f0.0 (1) null<1>:d r14.3:d r14.0:d
- // modified_u_coord = u_coord + 1.0/(256*width); //floating point
- (f0.0) add (1) r17.2:f r17.2<0;1,0>:f r2.2:f
-
-GEN7_PL3_AVS_WA_DONE_L0_3_:
- mov (1) f0.0:uw r14.8:uw // restore f0.0
-
-
- send (1) uwBUFFER_3(0)<1> r16 0x2 a0.0:ud
- // Returns Y data in 4 GRFs in scrambled order
-
- mov (1) r17.2:f r14.5:f // restore pixel 0 U for chroma, No AVS WA for chroma
-
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EB801:ud // msg desc; 1 is added to change BI to UV
- mov (1) r16.2:ud 0x0000E000:ud // Enable Red channel
-
- send (1) uwBUFFER_3(4)<1> r16 0x2 a0.0:ud
- // Returns U data in 4 GRFs in scrambled order
-
- add (1) a0.0:ud r23.5<0;1,0>:ud 0x44EBC02:ud // msg desc; 1 is added to change BI to UV
- mov (1) r16.2:ud 0x0000E000:ud // Enable Red channel
-
- send (1) uwBUFFER_3(8)<1> r16 0x2 a0.0:ud
- // Returns V data in 4 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_3_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen7/PL3_DNDI_422CP.g4a b/src/shaders/post_processing/gen7/PL3_DNDI_422CP.g4a
deleted file mode 100644
index 946c15c..0000000
--- a/src/shaders/post_processing/gen7/PL3_DNDI_422CP.g4a
+++ /dev/null
@@ -1,584 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 120 // Total instruction count
-// 1 // Total kernel count
-
-.kernel PL3_DNDI_422CP
-.code
-
-
-
-// FileName: DNDI_PL_Core.asm
-// Author: Tatiya, Rupesh
-
-
-
-// FileName: DNDI_Core.asm
-// Author: Vivek Kumar
-// Description: Tasks for DN+DI case (16x4 block)
-
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: DNDI.inc
-// Author: Vivek Kumar
-// Description: Include file for DN, DI and DNDI
-// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
-
-
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//====================== Binding table (Explicit To DNDI)=========================================
-
-
-.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
-.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
-.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
-
-
-.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
-.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
-.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
-.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
-.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
-.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
-.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
-.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
-
-//r45
-//Use r45 as message header, so no need to "mov" the data.
-
-.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
-.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-// Message response (UV Copy); Use buffer 5
-.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Temp GRFs: For 42X to 422 Conversion
-.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
-.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
- // Message descriptor for sampler read
- // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
- // 1 (header present 1) 0 11 (SIMD32/64 mode)
- // 1000 (message type) 0000 (DI state index)
- // 00000000 (binding table index - set later)
- // = 0x040b8000
-
-
-// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
-
-
-//---------------------------------------------------------------------------
-// VDI Return Data format
-//---------------------------------------------------------------------------
-// Defines for DI enabled
-
-
-// Defines for DI disabled
-
-
-
-// FileName: DNDI_Command.asm
-// Author: Vivek Kumar
-// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
-
-// Prepare the DNDI send command
-mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
-mov (1) mwMSGHDR_DNDI(1,4)<1> r9.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
-mov (1) mwMSGHDR_DNDI(1,12)<1> r9.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
-
-send (8) udDNDI_RESP(0)<1> r18 0x2 0x4BE8003:ud
-
-// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
-// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
-mov (2) r9.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
-
-
-
-// FileName: DI_STMM_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write STMM to memory
-mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
-mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
-
-shr (1) mudMSGHDR_STMM(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
-mov (1) mudMSGHDR_STMM(0,1)<1> r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
-mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
-
-send (8) null<1>:d r20 0x5 0x40A8021:ud
-
-
-
-// FileName: DN_Hist_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DN history data to statistics surface
-
-// Write denoise history to memory
-mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
-
- mov (1) mudMSGHDR_HIST(1)<1> udDNDI_RESP(9,0)<0;1,0> // Move denoise history to MRF (4x1)
-
-
-shr (2) r27.0<1>:ud r9.0<2;2,1>:w 2:w // X,Y origin / 4
-add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
-mov (1) r27.2<1>:ud 0x3:ud { NoDDChk } // block width and height
-
-mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
-send (8) null<1>:d r22 0x5 0x40A8021:ud
-
-
-
-// FileName: DNDI_Enc_Stats_Save.asm
-// Author: Vivek Kumar
-// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write encoder statistics to memory
-//Currently enable this only on Gen6 validation
-mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
-mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
-
-shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
-mul (1) acc0.1<1>:ud r9.1<0;1,0>:w 3:w // Y origin * 3
-shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
-mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
-add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
-
-
- //Data block for Encoder Statistics
- //----------------------------------------------------
- //| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
- //----------------------------------------------------
- //| BNE | MCNT | FCNT | TCNT | X | X | X | X |
- //----------------------------------------------------
- //| DcTpT | SVCM | DcBpT | DcTpB |
- //----------------------------------------------------
- //| SHCM | STAD | DcTcB | DcBpB |
- //----------------------------------------------------
- mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
-
-
-send (8) null<1>:d r24 0x5 0x40A8021:ud
-
-
-
-// FileName: DN_Load_UV_IMC3_16x4.asm
-// Author: Vivek Kumar
-// Description: Read UV for 16x4 block through DATAPORT
-
-
-
-// FileName: UVCopy_Load_16x4.asm
-// Author: Vivek Kumar
-// Description: Read UV for 16x4 block through DATAPORT
-
-
- add (2) r27.0<1>:d r9.0<2;2,1>:w r4.4<2;2,1>:w // Source Y Block origin
- asr (2) r27.0<1>:d r27.0<2;2,1>:d 1:w { NoDDClr } // U/V block origin should be half of Y's
- mov (1) r27.2<1>:ud 0x10007:ud { NoDDChk } // U/V block width and height (8x2)
- mov (8) r36<1>:ud r27.0<8;8,1>:ud
- mov (8) r38<1>:ud r27.0<8;8,1>:ud
- send (8) udDNDI_UV_RESP(0)<1> r36 0x4 0x2190001:ud
- send (8) udDNDI_UV_RESP(1)<1> r38 0x4 0x2190002:ud
-
-
-
-// FileName: DN_Save_Y_16x4.asm
-// Author: Vivek Kumar
-// Description: Save one 16x4 blocks of Y channel of DN output for reference
-
-
- // check top/bottom field first
-cmp.e.f0.0 (1) null<1>:w r1.28<0;1,0>:ub 1:w
-
-mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
-mov (2) mdMSGHDR_DN_OUT(0,0)<1> r9.0<2;2,1>:w { NoDDClr } // X origin * 2 (422 output)
-mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x3000F:ud { NoDDChk } // block width and height (32x8)
-
-(f0.0) jmpi (1) TOP_FIELD_FIRST
-
-BOTTOM_FIELD_FIRST:
-
- mov (4) mudMSGHDR_DN_OUT(1,0)<1> udDNDI_RESP(10,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN_OUT(1,4)<1> udDNDI_RESP(4,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
- mov (4) mudMSGHDR_DN_OUT(2,0)<1> udDNDI_RESP(10,4)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN_OUT(2,4)<1> udDNDI_RESP(5,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
-
- jmpi (1) SAVE_DN_CURR
-
-TOP_FIELD_FIRST:
- mov (4) mudMSGHDR_DN_OUT(1,0)<1> udDNDI_RESP(4,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN_OUT(1,4)<1> udDNDI_RESP(10,0)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
- mov (4) mudMSGHDR_DN_OUT(2,0)<1> udDNDI_RESP(5,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN_OUT(2,4)<1> udDNDI_RESP(10,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
-
-SAVE_DN_CURR:
-//send out data through data port
-send (8) null<1>:d r31.0 0x5 0x60A8018:ud
-
-
-
-// FileName: DI_Save_422CP_16x4.asm
-// Author: Vivek Kumar
-// Description: Save two 16x4 blocks of DI output in 422 format to Color Pipe (IECP)
-
-
-.declare mubMSGHDR_DI_OUT1_1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mubMSGHDR_DI_OUT1_2 Base=r21.0 ElementSize=1 Type=ub
-
-
-.declare mubMSGHDR_DI_OUT2_1 Base=r24.0 ElementSize=1 Type=ub
-
-
-.declare mubMSGHDR_DI_OUT2_2 Base=r27.0 ElementSize=1 Type=ub
-
-
-mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
-shl (1) r27.0<1>:ud r9.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
-mov (1) r27.1<1>:ud r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
-mov (1) r27.2<1>:ud 0x3000F:ud { NoDDClr, NoDDChk } // Block width and height (16x8)
-
-//M0.3 - 0 - CP Enable, 1 - Area of Interest, 3:2 Message Format(TBD), 4:3 - Ignored, 31:5 CP state pointer
-//Compose area-of-interest bit + color pipe state pointer
-or (1) r27.3<1>:ud r2.4<0;1,0>:ud r9.26<0;1,0>:b { NoDDChk }
-
-//prepare the message headers
-mov (8) r18.0<1>:ud r27<8;8,1>:ud
-mov (8) r24.0<1>:ud r27<8;8,1>:ud
-
-
-// Pack 2nd field Y; First 8x4 block
- mov (8) mubMSGHDR_DI_OUT1_1(1)<2> ubDNDI_RESP(0,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_1(1,16)<2> ubDNDI_RESP(0,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_1(2)<2> ubDNDI_RESP(0,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_1(2,16)<2> ubDNDI_RESP(0,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
-// Pack 2nd field U, V; First 8x4 block
- mov (4) mubMSGHDR_DI_OUT1_1(1,1)<4> ubDNDI_RESP(2,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(1,17)<4> ubDNDI_RESP(2,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT1_1(1,3)<4> ubDNDI_RESP(2,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(1,19)<4> ubDNDI_RESP(2,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(2,1)<4> ubDNDI_RESP(2,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(2,17)<4> ubDNDI_RESP(2,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT1_1(2,3)<4> ubDNDI_RESP(2,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(2,19)<4> ubDNDI_RESP(2,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-
-// Pack 2nd field Y; Second 8x4 block
-mov (8) r21.0<1>:ud r18.0<8;8,1>:ud
-add (1) r21.0<1>:ud r21.0<0;1,0>:w 0x10:w
-
- mov (8) mubMSGHDR_DI_OUT1_2(1)<2> ubDNDI_RESP(0,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_2(1,16)<2> ubDNDI_RESP(0,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_2(2)<2> ubDNDI_RESP(0,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_2(2,16)<2> ubDNDI_RESP(0,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
-// Pack 2nd field U, V; Second 8x4 block
- mov (4) mubMSGHDR_DI_OUT1_2(1,1)<4> ubDNDI_RESP(2,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(1,17)<4> ubDNDI_RESP(2,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT1_2(1,3)<4> ubDNDI_RESP(2,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(1,19)<4> ubDNDI_RESP(2,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(2,1)<4> ubDNDI_RESP(2,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(2,17)<4> ubDNDI_RESP(2,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT1_2(2,3)<4> ubDNDI_RESP(2,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(2,19)<4> ubDNDI_RESP(2,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-send (8) null<1>:d r18.0 0x5 0x60A801B:ud
-send (8) null<1>:d r21.0 0x5 0x60A801B:ud
-
-// Pack 1st field Y; 1st 8x4 block
- mov (8) mubMSGHDR_DI_OUT2_1(1)<2> ubDNDI_RESP(4,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_1(1,16)<2> ubDNDI_RESP(4,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_1(2)<2> ubDNDI_RESP(4,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_1(2,16)<2> ubDNDI_RESP(4,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
-// Pack 1st field U,V; 1st 8x4 block
- mov (4) mubMSGHDR_DI_OUT2_1(1,1)<4> ubDNDI_RESP(6,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(1,17)<4> ubDNDI_RESP(6,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT2_1(1,3)<4> ubDNDI_RESP(6,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(1,19)<4> ubDNDI_RESP(6,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(2,1)<4> ubDNDI_RESP(6,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(2,17)<4> ubDNDI_RESP(6,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT2_1(2,3)<4> ubDNDI_RESP(6,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(2,19)<4> ubDNDI_RESP(6,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-// Pack 1st field Y; 2nd 8x4 block
-mov (8) r27.0<1>:ud r24.0<8;8,1>:ud
-add (1) r27.0<1>:ud r27.0<0;1,0>:w 0x10:w
-
- mov (8) mubMSGHDR_DI_OUT2_2(1)<2> ubDNDI_RESP(4,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_2(1,16)<2> ubDNDI_RESP(4,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_2(2)<2> ubDNDI_RESP(4,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_2(2,16)<2> ubDNDI_RESP(4,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
-// Pack 1st field U, V; 2nd 8x4 block
- mov (4) mubMSGHDR_DI_OUT2_2(1,1)<4> ubDNDI_RESP(6,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(1,17)<4> ubDNDI_RESP(6,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT2_2(1,3)<4> ubDNDI_RESP(6,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(1,19)<4> ubDNDI_RESP(6,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(2,1)<4> ubDNDI_RESP(6,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(2,17)<4> ubDNDI_RESP(6,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT2_2(2,3)<4> ubDNDI_RESP(6,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(2,19)<4> ubDNDI_RESP(6,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-send (8) null<1>:d r24.0 0x5 0x60A801E:ud
-send (8) null<1>:d r27.0 0x5 0x60A801E:ud
-
-
-
-// FileName: DN_Save_UV_IMC3_16x4.asm
-// Author: Vivek Kumar
-// Description: Save UV for 16x4 block through DATAPORT
-
-
-
-// FileName: UVCopy_Save_16x4.asm
-// Author: Vivek Kumar
-// Description: Save UV for 16x4 block through DATAPORT
-
-
-//Reuse the header from Load component
-
-
- mov (4) mudMSGHDR_UCOPY(1)<1> udDNDI_UV_RESP(0)<4;4,1>
- mov (4) mudMSGHDR_VCOPY(1)<1> udDNDI_UV_RESP(1)<4;4,1>
- send (4) null<1>:d r36 0x5 0x40A8019:ud
- send (4) null<1>:d r38 0x5 0x40A801A:ud
-
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
-
-
-.end_code
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/PL3_DNDI_PA.g4a b/src/shaders/post_processing/gen7/PL3_DNDI_PA.g4a
deleted file mode 100644
index b8bc73c..0000000
--- a/src/shaders/post_processing/gen7/PL3_DNDI_PA.g4a
+++ /dev/null
@@ -1,522 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 90 // Total instruction count
-// 1 // Total kernel count
-
-.kernel PL3_DNDI_PA
-.code
-
-
-
-// FileName: DNDI_PL_Core.asm
-// Author: Tatiya, Rupesh
-
-
-
-// FileName: DNDI_Core.asm
-// Author: Vivek Kumar
-// Description: Tasks for DN+DI case (16x4 block)
-
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: DNDI.inc
-// Author: Vivek Kumar
-// Description: Include file for DN, DI and DNDI
-// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
-
-
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//====================== Binding table (Explicit To DNDI)=========================================
-
-
-.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
-.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
-.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
-
-
-.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
-.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
-.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
-.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
-.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
-.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
-.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
-.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
-
-//r45
-//Use r45 as message header, so no need to "mov" the data.
-
-.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
-.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-// Message response (UV Copy); Use buffer 5
-.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Temp GRFs: For 42X to 422 Conversion
-.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
-.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
- // Message descriptor for sampler read
- // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
- // 1 (header present 1) 0 11 (SIMD32/64 mode)
- // 1000 (message type) 0000 (DI state index)
- // 00000000 (binding table index - set later)
- // = 0x040b8000
-
-
-// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
-
-
-//---------------------------------------------------------------------------
-// VDI Return Data format
-//---------------------------------------------------------------------------
-// Defines for DI enabled
-
-
-// Defines for DI disabled
-
-
-
-// FileName: DNDI_Command.asm
-// Author: Vivek Kumar
-// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
-
-// Prepare the DNDI send command
-mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
-mov (1) mwMSGHDR_DNDI(1,4)<1> r9.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
-mov (1) mwMSGHDR_DNDI(1,12)<1> r9.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
-
-send (8) udDNDI_RESP(0)<1> r18 0x2 0x4BE8003:ud
-
-// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
-// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
-mov (2) r9.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
-
-
-
-// FileName: DI_STMM_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write STMM to memory
-mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
-mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
-
-shr (1) mudMSGHDR_STMM(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
-mov (1) mudMSGHDR_STMM(0,1)<1> r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
-mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
-
-send (8) null<1>:d r20 0x5 0x40A8021:ud
-
-
-
-// FileName: DN_Hist_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DN history data to statistics surface
-
-// Write denoise history to memory
-mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
-
- mov (1) mudMSGHDR_HIST(1)<1> udDNDI_RESP(9,0)<0;1,0> // Move denoise history to MRF (4x1)
-
-
-shr (2) r27.0<1>:ud r9.0<2;2,1>:w 2:w // X,Y origin / 4
-add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
-mov (1) r27.2<1>:ud 0x3:ud { NoDDChk } // block width and height
-
-mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
-send (8) null<1>:d r22 0x5 0x40A8021:ud
-
-
-
-// FileName: DNDI_Enc_Stats_Save.asm
-// Author: Vivek Kumar
-// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write encoder statistics to memory
-//Currently enable this only on Gen6 validation
-mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
-mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
-
-shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
-mul (1) acc0.1<1>:ud r9.1<0;1,0>:w 3:w // Y origin * 3
-shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
-mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
-add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
-
-
- //Data block for Encoder Statistics
- //----------------------------------------------------
- //| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
- //----------------------------------------------------
- //| BNE | MCNT | FCNT | TCNT | X | X | X | X |
- //----------------------------------------------------
- //| DcTpT | SVCM | DcBpT | DcTpB |
- //----------------------------------------------------
- //| SHCM | STAD | DcTcB | DcBpB |
- //----------------------------------------------------
- mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
-
-
-send (8) null<1>:d r24 0x5 0x40A8021:ud
-
-
-
-// FileName: DN_Load_UV_IMC3_16x4.asm
-// Author: Vivek Kumar
-// Description: Read UV for 16x4 block through DATAPORT
-
-
-
-// FileName: UVCopy_Load_16x4.asm
-// Author: Vivek Kumar
-// Description: Read UV for 16x4 block through DATAPORT
-
-
- add (2) r27.0<1>:d r9.0<2;2,1>:w r4.4<2;2,1>:w // Source Y Block origin
- asr (2) r27.0<1>:d r27.0<2;2,1>:d 1:w { NoDDClr } // U/V block origin should be half of Y's
- mov (1) r27.2<1>:ud 0x10007:ud { NoDDChk } // U/V block width and height (8x2)
- mov (8) r36<1>:ud r27.0<8;8,1>:ud
- mov (8) r38<1>:ud r27.0<8;8,1>:ud
- send (8) udDNDI_UV_RESP(0)<1> r36 0x4 0x2190001:ud
- send (8) udDNDI_UV_RESP(1)<1> r38 0x4 0x2190002:ud
-
-
-
-// FileName: DN_Save_Y_16x4.asm
-// Author: Vivek Kumar
-// Description: Save one 16x4 blocks of Y channel of DN output for reference
-
-
- // check top/bottom field first
-cmp.e.f0.0 (1) null<1>:w r1.28<0;1,0>:ub 1:w
-
-mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
-mov (2) mdMSGHDR_DN_OUT(0,0)<1> r9.0<2;2,1>:w { NoDDClr } // X origin * 2 (422 output)
-mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x3000F:ud { NoDDChk } // block width and height (32x8)
-
-(f0.0) jmpi (1) TOP_FIELD_FIRST
-
-BOTTOM_FIELD_FIRST:
-
- mov (4) mudMSGHDR_DN_OUT(1,0)<1> udDNDI_RESP(10,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN_OUT(1,4)<1> udDNDI_RESP(4,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
- mov (4) mudMSGHDR_DN_OUT(2,0)<1> udDNDI_RESP(10,4)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN_OUT(2,4)<1> udDNDI_RESP(5,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
-
- jmpi (1) SAVE_DN_CURR
-
-TOP_FIELD_FIRST:
- mov (4) mudMSGHDR_DN_OUT(1,0)<1> udDNDI_RESP(4,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN_OUT(1,4)<1> udDNDI_RESP(10,0)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
- mov (4) mudMSGHDR_DN_OUT(2,0)<1> udDNDI_RESP(5,0)<4;4,1> { NoDDClr } // 2nd field luma from current frame (line 0,2)
- mov (4) mudMSGHDR_DN_OUT(2,4)<1> udDNDI_RESP(10,4)<4;4,1> { NoDDChk } // 1st field luma from current frame (line 1,3)
-
-SAVE_DN_CURR:
-//send out data through data port
-send (8) null<1>:d r31.0 0x5 0x60A8018:ud
-
-
-
-// FileName: DI_Save_PA_16x4.asm
-// Author: Vivek Kumar
-// Description: Save two 16x4 blocks of DI output in Packed format
-
-
-add (4) a0.4<1>:uw r2.28<4;4,1>:ub 608:w // Initial Y,U,V offset in YUV422 block; it starts at m20
-
-mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
-shl (1) r27.0<1>:d r9.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
-mov (1) r27.1<1>:d r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
-mov (1) r27.2<1>:ud 0x3001F:ud { NoDDChk } // Block width and height (32x8)
-
-//prepare the message headers
-mov (8) r18.0<1>:ud r27<8;8,1>:ud
-mov (8) r23.0<1>:ud r27<8;8,1>:ud
-
-// Pack 2nd field Y
- mov (16) r[a0.4, 0]<2> ubDNDI_RESP(0,0) { NoDDClr }
- mov (16) r[a0.4, 32]<2> ubDNDI_RESP(0,16) { NoDDClr }
- mov (16) r[a0.4, 64]<2> ubDNDI_RESP(0,32) { NoDDClr }
- mov (16) r[a0.4, 96]<2> ubDNDI_RESP(0,48) { NoDDClr }
-// Pack 2nd field U
- mov (8) r[a0.5, 0]<4> ubDNDI_RESP(2,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 32]<4> ubDNDI_RESP(2,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 64]<4> ubDNDI_RESP(2,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 96]<4> ubDNDI_RESP(2,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
-// Pack 2nd field V
- mov (8) r[a0.6, 0]<4> ubDNDI_RESP(2,0)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 32]<4> ubDNDI_RESP(2,16)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 64]<4> ubDNDI_RESP(2,32)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 96]<4> ubDNDI_RESP(2,48)<16;8,2> { NoDDChk } //Vpixels
-
-// Pack 1st field Y
- mov (16) r[a0.4, 160]<2> ubDNDI_RESP(4,0) { NoDDClr }
- mov (16) r[a0.4, 192]<2> ubDNDI_RESP(4,16) { NoDDClr }
- mov (16) r[a0.4, 224]<2> ubDNDI_RESP(4,32) { NoDDClr }
- mov (16) r[a0.4, 256]<2> ubDNDI_RESP(4,48) { NoDDClr }
-// Pack 1st field U
- mov (8) r[a0.5, 160]<4> ubDNDI_RESP(6,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 192]<4> ubDNDI_RESP(6,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 224]<4> ubDNDI_RESP(6,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 256]<4> ubDNDI_RESP(6,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
-// Pack 1st field V
- mov (8) r[a0.6, 160]<4> ubDNDI_RESP(6,0)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 192]<4> ubDNDI_RESP(6,16)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 224]<4> ubDNDI_RESP(6,32)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 256]<4> ubDNDI_RESP(6,48)<16;8,2> { NoDDChk } //Vpixels
-
-//save the previous frame
-send (8) null<1>:d r18.0 0x5 0xA0A801B:ud
-
-//save the current frame
-send (8) null<1>:d r23.0 0x5 0xA0A801E:ud
-
-
-
-// FileName: DN_Save_UV_IMC3_16x4.asm
-// Author: Vivek Kumar
-// Description: Save UV for 16x4 block through DATAPORT
-
-
-
-// FileName: UVCopy_Save_16x4.asm
-// Author: Vivek Kumar
-// Description: Save UV for 16x4 block through DATAPORT
-
-
-//Reuse the header from Load component
-
-
- mov (4) mudMSGHDR_UCOPY(1)<1> udDNDI_UV_RESP(0)<4;4,1>
- mov (4) mudMSGHDR_VCOPY(1)<1> udDNDI_UV_RESP(1)<4;4,1>
- send (4) null<1>:d r36 0x5 0x40A8019:ud
- send (4) null<1>:d r38 0x5 0x40A801A:ud
-
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
-
-
-.end_code
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/PL3_DNUV_PL3.g4a b/src/shaders/post_processing/gen7/PL3_DNUV_PL3.g4a
deleted file mode 100644
index 67e83e1..0000000
--- a/src/shaders/post_processing/gen7/PL3_DNUV_PL3.g4a
+++ /dev/null
@@ -1,2706 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 1295 // Total instruction count
-// 1 // Total kernel count
-
-
-.kernel PL3_DNUV_PL3
-.code
-
-
-
-//Module : DN_UV_Setup
-//Author : Tatiya, Rupesh
-//Description : Initial Set-up for DN_UV
-
-
-
-
-// Module name : ChromaDenoise.inc
-// Author : Tatiya, Rupesh
-
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//======================================================
-//Interface for serpent mode Chroma Denoise, added by Le
-//======================================================
-//r1
-
-
-//noise history thresholds (low and high)
-
-
-//temporal difference thresholds (high and low)
-
-
-//noise history thresholds (low and high)
-//#define ubNoiseHistMaxHigh r1.22
-//#define ubNoiseHistMaxLow r1.23
-//#define ubNoiseHistDeltaHigh r1.24
-//#define ubNoiseHistDeltaLow r1.25
-
-//Gaussian thresholds
-
-
-//temporal difference thresholds (default)
-
-
-//r2
-//history thresholds (default)
-
-
-//denoise factor (0-63)
-
-
-//====================== Binding table (Explicit To DNUV)=========================================
-//Used by DN_UV kernels
-
-
- //Pointer to Current Frame UV
-
-
-//r1-r6
- //CURBE GRFs used as TEMP : Used for max computation and storing max temporarily. : r1-r6
-
-
- .declare ubCURBE_TEMP Base=r1.0 ElementSize=1 Type=ub
- .declare uwCURBE_TEMP Base=r1.0 ElementSize=2 Type=uw
- .declare wCURBE_TEMP Base=r1.0 ElementSize=2 Type=w
- .declare fCURBE_TEMP Base=r1.0 ElementSize=4 Type=f
- .declare udCURBE_TEMP Base=r1.0 ElementSize=4 Type=ud
- .declare uwMAX_ABS_DIFF Base=r5.0 ElementSize=2 Type=uw
-
- //r1
-
-
- //r3
-
-
- //r4
-
-//r7
- //All of the following has to defined in Same GRF for optimal performance.
-
-
-//r8-24
- //Previous Frame UV
-
- .declare udPREV_UV Base=r8.0 ElementSize=4 Type=ud
- .declare ubPREV_UV Base=r8.0 ElementSize=1 Type=ub
-
-
-//r25-48
- //TEMP Space for any Usage.
-
-
-//=========================================================================
-//Definations and declarations for serpent mode Chroma Denoise, added by Le
-//=========================================================================
-
-
- .declare udGNE_UV Base=r24.0 ElementSize=4 Type=ud
- .declare fGNE_UV Base=r24.0 ElementSize=4 Type=f
- .declare ubGNE_UV Base=r24.0 ElementSize=1 Type=ub
-
- .declare udMSGHDR_BNE_SERP Base=r25.0 ElementSize=4 Type=ud
- .declare udMSGSRC_BNE_SERP Base=r26.0 ElementSize=4 Type=ud
-
-
- .declare ubDN_UV_Thresholds Base=r26.0 ElementSize=1 Type=ub
- .declare ubDN_UV_Thresholds_Temp Base=r27.0 ElementSize=1 Type=ub
- .declare udDN_UV_Thresholds Base=r26.0 ElementSize=4 Type=ud
- .declare udDN_UV_Thresholds_Temp Base=r27.0 ElementSize=4 Type=ud
- .declare fDN_UV_Thresholds Base=r26.0 ElementSize=4 Type=f
- .declare fDN_UV_Thresholds_Temp Base=r27.0 ElementSize=4 Type=f
-
-
-//====================================================================================
-
-
- //TEMP23: To hold V data for PL3 surfaces
- .declare udCURR_V_TEMP Base=r25.0 ElementSize=4 Type=ud
- .declare ubCURR_V_TEMP Base=r25.0 ElementSize=1 Type=ub
-
- //GRFs to calculate Median: r25-r42
- .declare ubMEDIAN_TEMP Base=r25.0 ElementSize=1 Type=ub
-
- //18 GRFs to hold difference : r25-r42
- .declare wDIFF Base=r25.0 ElementSize=2 Type=w
- .declare uwDIFF Base=r25.0 ElementSize=2 Type=uw
-
- //Temporal Diff
- .declare wDIFF_TEMPORAL Base=r25.0 ElementSize=2 Type=w
- .declare ubDIFF_TEMPORAL Base=r25.0 ElementSize=1 Type=ub
-
- //4 GRFs to hold Sobel Value : r43-46
- .declare wSOBEL_X Base=r43.0 ElementSize=2 Type=w
- .declare uwSOBEL Base=r43.0 ElementSize=2 Type=uw
-
-
- //2 GRFs to hold SOAD temporarily: r47-48
- .declare uwSOAD Base=r47.0 ElementSize=2 Type=uw
-
- //Temp GRFs to hold extra YUYV pixels: r43-r48
- .declare ubTEMP5 Base=r43.0 ElementSize=1 Type=ub
-
- //Temp GRFs in Median Calculation: r47-r48
- .declare ubTEMP1 Base=r47.0 ElementSize=1 Type=ub
-
- .declare uwTEMP0 Base=r48.0 ElementSize=2 Type=uw
- .declare ubTEMP0 Base=r48.0 ElementSize=1 Type=ub
-
- //Temp Space to store Median : r49-50
-
- .declare ubMEDIAN Base=r49.0 ElementSize=1 Type=ub
-
-//r49
-
-
-//r50
- //Message Source
-
-
-//r51
- //DN_UV History Surface
-
- .declare udHIST_UV Base=r51.0 ElementSize=4 Type=ud
- .declare ubHIST_UV Base=r51.0 ElementSize=1 Type=ub
-
-//r52 - r91
- //r52
- //Current Frame UV
-
-
- .declare udCURR_UV Base=r52.0 ElementSize=4 Type=ud
- .declare ubCURR_UV Base=r52.0 ElementSize=1 Type=ub
-
- //r54
- //CURBE COPY
-
-
- //r55
-
-
- .declare uwSOAD_MIN_8x4 Base=r56.0 ElementSize=2 Type=uw
-
- //r61
-
-
- //r62
-
-
- //History Surface Temp Origin
-
-
- //r63
- //Current Frame Y Temp Origin
-
-
- //BNE Surface Origin
-
-
- //r70
-
- .declare uwDIFF_TEMPORAL_SUM4x4 Base=r70.0 ElementSize=2 Type=uw //4 GRFs
-
- //r74-91 : For Saving Dest UV (PL2/PL3)
-
-
- .declare ubMSGPAYLOAD_UV0 Base=r75.0 ElementSize=1 Type=ub
-
-
- .declare ubMSGPAYLOAD_U Base=r75.0 ElementSize=1 Type=ub
-
-
- .declare ubMSGPAYLOAD_UV1 Base=r84.0 ElementSize=1 Type=ub
-
-
- .declare ubMSGPAYLOAD_V Base=r84.0 ElementSize=1 Type=ub
-
- //r90
-
- .declare uwDIFF_TEMPORAL_SUM4x4_FINAL Base=r90.0 ElementSize=2 Type=uw //2 GRFs
-
-//r92-127
- //Current Frame Y
-
-
- //r92
- .declare uwDIFF_TEMPORAL_SUM4x4_TEMP_0 Base=r92 ElementSize=2 Type=uw
- //r101
- .declare uwDIFF_TEMPORAL_SUM4x4_TEMP_1 Base=r101 ElementSize=2 Type=uw
- //r110
- .declare uwDIFF_TEMPORAL_SUM4x4_TEMP_2 Base=r110 ElementSize=2 Type=uw
- //r119
- .declare uwDIFF_TEMPORAL_SUM4x4_TEMP_3 Base=r119 ElementSize=2 Type=uw
-
- .declare udCURR_Y0 Base=r93.0 ElementSize=4 Type=ud
- .declare ubCURR_Y0 Base=r93.0 ElementSize=1 Type=ub
- .declare udCURR_Y1 Base=r102.0 ElementSize=4 Type=ud
- .declare ubCURR_Y1 Base=r102.0 ElementSize=1 Type=ub
- .declare udCURR_Y2 Base=r111.0 ElementSize=4 Type=ud
- .declare ubCURR_Y2 Base=r111.0 ElementSize=1 Type=ub
- .declare udCURR_Y3 Base=r120.0 ElementSize=4 Type=ud
- .declare ubCURR_Y3 Base=r120.0 ElementSize=1 Type=ub
-
- //r92: To hold U data for PL3 surfaces
- .declare udCURR_U_TEMP Base=r92.0 ElementSize=4 Type=ud
- .declare ubCURR_U_TEMP Base=r92.0 ElementSize=1 Type=ub
-
- //r112: To hold U data for PL3 surfaces
- .declare udPREV_U_TEMP Base=r112.0 ElementSize=4 Type=ud
- .declare ubPREV_U_TEMP Base=r112.0 ElementSize=1 Type=ub
-
- //r120: To hold U data for PL3 surfaces
- .declare udPREV_V_TEMP Base=r120.0 ElementSize=4 Type=ud
- .declare ubPREV_V_TEMP Base=r120.0 ElementSize=1 Type=ub
-
-
- // Initialize message source with r0.
- mov (8) r50.0<1>:ud r0.0<8;8,1>:ud
- mov (8) r92.0<1>:ud r0.0<8;8,1>:ud
- mov (8) r101.0<1>:ud r0.0<8;8,1>:ud
- mov (8) r110.0<1>:ud r0.0<8;8,1>:ud
- mov (8) r119.0<1>:ud r0.0<8;8,1>:ud
-
-
-
-//Module Name : DN_UV_PL3_Load_Curr_Frame_UV
-//Author : Tatiya, Rupesh
-//Description : Loads Current Frame U/V data for PL3 input.
-
-
-
-//Module name : DN_UV_Load_Curr_Frame_UV
-//Author : Tatiya, Rupesh
-//Description : Loads Current Frame (UV only).
-// We need 4 extra rows (2 per field) and 2 extra pixel (1 each side) for both U and V each.
-// The processing size is 16x16 U and V each. So we need : U size - 18x20, V size - 18x20, UV size - 36x20, YUYV size - 72x20.
-
-
-
-
-//18x20 U/V block is partitioned as follows:
-// <------ 18 ------>
-// ------------------
-// | 18x8 A1 |
-// | |
-// |----------------|
-// | 18x8 A2 |
-// | |
-// |----------------|
-// | 18x4 A2 |
-// |----------------|
-//
-// Cordinates: (x-1, y-2), (x-1, y+6), (x-1, y+14)
-
-//1. Load U data into starting at CURR_Y0 (r93-r122)
-//2. Load V data into TEMP space (r25-r44)
-
- //U/V surface origin: (ORIX/2, ORIY/2)
- add (2) r9.4<1>:w r9.0<2;2,1>:w r4.4<2;2,1>:w { AccWrEn } // Source Block origin
- shr (2) r9.4<1>:w acc0.4<2;2,1>:w 1:w //U Data
- mov (2) acc0.0<1>:d r9.4<2;2,1>:w
-
- //A1
- add (1) r50.0<1>:d acc0.0<0;1,0>:d -1:d
- add (1) r50.1<1>:d acc0.1<0;1,0>:d -2:d
- mov (1) r50.2<1>:ud 0x70011:ud
- send (8) udCURR_U_TEMP(0)<1> r50 0x4 0x2890004:ud
-
- //A2
- add (1) r50.1<1>:d acc0.1<0;1,0>:d 6:d
- send (8) udCURR_U_TEMP(8)<1> r50 0x4 0x2890004:ud
-
- //A3
- add (1) r50.1<1>:d acc0.1<0;1,0>:d 14:d
- mov (1) r50.2<1>:ud 0x30011:ud
- send (8) udCURR_U_TEMP(16)<1> r50 0x4 0x2490004:ud
-
- //V Data
- //A1
- add (1) r50.0<1>:d acc0.0<0;1,0>:d -1:d
- add (1) r50.1<1>:d acc0.1<0;1,0>:d -2:d
- mov (1) r50.2<1>:ud 0x70011:ud
- send (8) udCURR_V_TEMP(0)<1> r50 0x4 0x2890005:ud
-
- //A2
- add (1) r50.1<1>:d acc0.1<0;1,0>:d 6:d
- send (8) udCURR_V_TEMP(8)<1> r50 0x4 0x2890005:ud
-
- //A3
- add (1) r50.1<1>:d acc0.1<0;1,0>:d 14:d
- mov (1) r50.2<1>:ud 0x30011:ud
- send (8) udCURR_V_TEMP(16)<1> r50 0x4 0x2490005:ud
-
- //History Origin, Current Y origin and BNE surface origin - all are in inline GRF. Use , . -rT.
-
- //Calculate Origin For History Surface: (ORIX/4, ORIY/8)
- mov (16) acc0.0<1>:w r9.0<0;2,1>:w { AccWrEn }
- shr (1) r9.2<1>:w acc0.2<0;1,0>:w 2:w
- shr (1) r9.3<1>:w acc0.3<0;1,0>:w 3:w
-
- //Calculate Origin For BNE Surface: (ORIX/8, ORIY/16)
- shr (1) r9.6<1>:w acc0.6<0;1,0>:w 3:w
- shr (1) r9.7<1>:w acc0.7<0;1,0>:w 4:w
-
-
-
-//Module Name : DN_UV_PL3_Load_Prev_Frame_UV.asm
-//Author : Tatiya, Rupesh
-//Description : Loads Pevious Frame UV data for PL3 input.
-
-
-
-//Module Name : DN_UV_Load_Prev_Frame_UV
-//Author : Tatiya, Rupesh
-//Description : Loads Prev Frame (UV only). U size - 16x16, V size - 16x16, UV size - 32x16, YUYV size - 64x16.
-
-
-
-
-//1. Load U in bottom half of UV space for prev frame (r17-r24)
-//2. Load V in bottom quarter of Y space for curr frame (r120-r127)
-
- mov (2) r50.0<1>:d r9.4<2;2,1>:w { AccWrEn } // Source lock origin
- mov (1) r50.2<1>:ud 0xF000F:ud // U/V block width and height (16x16)
-
- mov (8) r49.0<1>:ud r50<8;8,1>:ud
-
- send (8) udPREV_U_TEMP(0)<1> r50 0x4 0x2890001:ud //U data
- send (8) udPREV_V_TEMP(0)<1> r49 0x4 0x2890002:ud //V data
-
-
- //TODO - See if History loading can be combined with Prev Frame Load. - rT
-
-
-//Module name : DN_UV_Load_Hist_UV
-//Author : Tatiya, Rupesh
-//Description : Load DN History for UV denoise. 4x4 for each U & V.
-
-
-
-
- mov (2) r50.0<1>:d r9.2<2;2,1>:w
- mov (1) r50.2<1>:ud 0x30007:ud
- send (8) udHIST_UV(0)<1> r50 0x4 0x2190022:ud
-
-
-
-//File Name : DN_UV_PL3_Interleave_Curr_Frame_UV.asm
-//Author : Tatiya, Rupesh
-//Description : Interleave separately loaded U and V for PL3 format.
-// This is needed because Noise Detection and Noise Reduction works on interleaved UV data.
-
-//1. U data: Starting at CURR_Y0 (r93-r122)
-//2. V data: TEMP space (r25-r44)
-
-//In one GRF, we need 10 U (1+8+1) bytes, but there's no SIMD10. So use SIMD16 and discard last 6 bytes.
-
-
-//Move U data
- mov (16) ubCURR_UV(0,0)<2> ubCURR_U_TEMP(0,0)<16;16,1>
- mov (16) ubCURR_UV(20,0)<2> ubCURR_U_TEMP(0,8)<16;16,1>
-
- mov (16) ubCURR_UV(1,0)<2> ubCURR_U_TEMP(1,0)<16;16,1>
- mov (16) ubCURR_UV(21,0)<2> ubCURR_U_TEMP(1,8)<16;16,1>
-
- mov (16) ubCURR_UV(2,0)<2> ubCURR_U_TEMP(2,0)<16;16,1>
- mov (16) ubCURR_UV(22,0)<2> ubCURR_U_TEMP(2,8)<16;16,1>
-
- mov (16) ubCURR_UV(3,0)<2> ubCURR_U_TEMP(3,0)<16;16,1>
- mov (16) ubCURR_UV(23,0)<2> ubCURR_U_TEMP(3,8)<16;16,1>
-
- mov (16) ubCURR_UV(4,0)<2> ubCURR_U_TEMP(4,0)<16;16,1>
- mov (16) ubCURR_UV(24,0)<2> ubCURR_U_TEMP(4,8)<16;16,1>
-
- mov (16) ubCURR_UV(5,0)<2> ubCURR_U_TEMP(5,0)<16;16,1>
- mov (16) ubCURR_UV(25,0)<2> ubCURR_U_TEMP(5,8)<16;16,1>
-
- mov (16) ubCURR_UV(6,0)<2> ubCURR_U_TEMP(6,0)<16;16,1>
- mov (16) ubCURR_UV(26,0)<2> ubCURR_U_TEMP(6,8)<16;16,1>
-
- mov (16) ubCURR_UV(7,0)<2> ubCURR_U_TEMP(7,0)<16;16,1>
- mov (16) ubCURR_UV(27,0)<2> ubCURR_U_TEMP(7,8)<16;16,1>
-
- mov (16) ubCURR_UV(8,0)<2> ubCURR_U_TEMP(8,0)<16;16,1>
- mov (16) ubCURR_UV(28,0)<2> ubCURR_U_TEMP(8,8)<16;16,1>
-
- mov (16) ubCURR_UV(9,0)<2> ubCURR_U_TEMP(9,0)<16;16,1>
- mov (16) ubCURR_UV(29,0)<2> ubCURR_U_TEMP(9,8)<16;16,1>
-
- mov (16) ubCURR_UV(10,0)<2> ubCURR_U_TEMP(10,0)<16;16,1>
- mov (16) ubCURR_UV(30,0)<2> ubCURR_U_TEMP(10,8)<16;16,1>
-
- mov (16) ubCURR_UV(11,0)<2> ubCURR_U_TEMP(11,0)<16;16,1>
- mov (16) ubCURR_UV(31,0)<2> ubCURR_U_TEMP(11,8)<16;16,1>
-
- mov (16) ubCURR_UV(12,0)<2> ubCURR_U_TEMP(12,0)<16;16,1>
- mov (16) ubCURR_UV(32,0)<2> ubCURR_U_TEMP(12,8)<16;16,1>
-
- mov (16) ubCURR_UV(13,0)<2> ubCURR_U_TEMP(13,0)<16;16,1>
- mov (16) ubCURR_UV(33,0)<2> ubCURR_U_TEMP(13,8)<16;16,1>
-
- mov (16) ubCURR_UV(14,0)<2> ubCURR_U_TEMP(14,0)<16;16,1>
- mov (16) ubCURR_UV(34,0)<2> ubCURR_U_TEMP(14,8)<16;16,1>
-
- mov (16) ubCURR_UV(15,0)<2> ubCURR_U_TEMP(15,0)<16;16,1>
- mov (16) ubCURR_UV(35,0)<2> ubCURR_U_TEMP(15,8)<16;16,1>
-
- mov (16) ubCURR_UV(16,0)<2> ubCURR_U_TEMP(16,0)<16;16,1>
- mov (16) ubCURR_UV(36,0)<2> ubCURR_U_TEMP(16,8)<16;16,1>
-
- mov (16) ubCURR_UV(17,0)<2> ubCURR_U_TEMP(17,0)<16;16,1>
- mov (16) ubCURR_UV(37,0)<2> ubCURR_U_TEMP(17,8)<16;16,1>
-
- mov (16) ubCURR_UV(18,0)<2> ubCURR_U_TEMP(18,0)<16;16,1>
- mov (16) ubCURR_UV(38,0)<2> ubCURR_U_TEMP(18,8)<16;16,1>
-
- mov (16) ubCURR_UV(19,0)<2> ubCURR_U_TEMP(19,0)<16;16,1>
- mov (16) ubCURR_UV(39,0)<2> ubCURR_U_TEMP(19,8)<16;16,1>
-
-
-//Move V data
- mov (16) ubCURR_UV(0,1)<2> ubCURR_V_TEMP(0,0)<16;16,1>
- mov (16) ubCURR_UV(20,1)<2> ubCURR_V_TEMP(0,8)<16;16,1>
- mov (16) ubCURR_UV(1,1)<2> ubCURR_V_TEMP(1,0)<16;16,1>
- mov (16) ubCURR_UV(21,1)<2> ubCURR_V_TEMP(1,8)<16;16,1>
- mov (16) ubCURR_UV(2,1)<2> ubCURR_V_TEMP(2,0)<16;16,1>
- mov (16) ubCURR_UV(22,1)<2> ubCURR_V_TEMP(2,8)<16;16,1>
- mov (16) ubCURR_UV(3,1)<2> ubCURR_V_TEMP(3,0)<16;16,1>
- mov (16) ubCURR_UV(23,1)<2> ubCURR_V_TEMP(3,8)<16;16,1>
- mov (16) ubCURR_UV(4,1)<2> ubCURR_V_TEMP(4,0)<16;16,1>
- mov (16) ubCURR_UV(24,1)<2> ubCURR_V_TEMP(4,8)<16;16,1>
- mov (16) ubCURR_UV(5,1)<2> ubCURR_V_TEMP(5,0)<16;16,1>
- mov (16) ubCURR_UV(25,1)<2> ubCURR_V_TEMP(5,8)<16;16,1>
- mov (16) ubCURR_UV(6,1)<2> ubCURR_V_TEMP(6,0)<16;16,1>
- mov (16) ubCURR_UV(26,1)<2> ubCURR_V_TEMP(6,8)<16;16,1>
- mov (16) ubCURR_UV(7,1)<2> ubCURR_V_TEMP(7,0)<16;16,1>
- mov (16) ubCURR_UV(27,1)<2> ubCURR_V_TEMP(7,8)<16;16,1>
- mov (16) ubCURR_UV(8,1)<2> ubCURR_V_TEMP(8,0)<16;16,1>
- mov (16) ubCURR_UV(28,1)<2> ubCURR_V_TEMP(8,8)<16;16,1>
- mov (16) ubCURR_UV(9,1)<2> ubCURR_V_TEMP(9,0)<16;16,1>
- mov (16) ubCURR_UV(29,1)<2> ubCURR_V_TEMP(9,8)<16;16,1>
- mov (16) ubCURR_UV(10,1)<2> ubCURR_V_TEMP(10,0)<16;16,1>
- mov (16) ubCURR_UV(30,1)<2> ubCURR_V_TEMP(10,8)<16;16,1>
- mov (16) ubCURR_UV(11,1)<2> ubCURR_V_TEMP(11,0)<16;16,1>
- mov (16) ubCURR_UV(31,1)<2> ubCURR_V_TEMP(11,8)<16;16,1>
- mov (16) ubCURR_UV(12,1)<2> ubCURR_V_TEMP(12,0)<16;16,1>
- mov (16) ubCURR_UV(32,1)<2> ubCURR_V_TEMP(12,8)<16;16,1>
- mov (16) ubCURR_UV(13,1)<2> ubCURR_V_TEMP(13,0)<16;16,1>
- mov (16) ubCURR_UV(33,1)<2> ubCURR_V_TEMP(13,8)<16;16,1>
- mov (16) ubCURR_UV(14,1)<2> ubCURR_V_TEMP(14,0)<16;16,1>
- mov (16) ubCURR_UV(34,1)<2> ubCURR_V_TEMP(14,8)<16;16,1>
- mov (16) ubCURR_UV(15,1)<2> ubCURR_V_TEMP(15,0)<16;16,1>
- mov (16) ubCURR_UV(35,1)<2> ubCURR_V_TEMP(15,8)<16;16,1>
- mov (16) ubCURR_UV(16,1)<2> ubCURR_V_TEMP(16,0)<16;16,1>
- mov (16) ubCURR_UV(36,1)<2> ubCURR_V_TEMP(16,8)<16;16,1>
- mov (16) ubCURR_UV(17,1)<2> ubCURR_V_TEMP(17,0)<16;16,1>
- mov (16) ubCURR_UV(37,1)<2> ubCURR_V_TEMP(17,8)<16;16,1>
- mov (16) ubCURR_UV(18,1)<2> ubCURR_V_TEMP(18,0)<16;16,1>
- mov (16) ubCURR_UV(38,1)<2> ubCURR_V_TEMP(18,8)<16;16,1>
- mov (16) ubCURR_UV(19,1)<2> ubCURR_V_TEMP(19,0)<16;16,1>
- mov (16) ubCURR_UV(39,1)<2> ubCURR_V_TEMP(19,8)<16;16,1>
-
-
-
-//File Name : DN_UV_PL3_Interleave_Prev_Frame_UV.asm
-//Author : Tatiya, Rupesh
-//Description : Interleave separately loaded U and V for PL3 format.
-// This is needed because Noise Detection and Noise Reduction works on interleaved UV data.
-
-//1.U Data: bottom half of UV space for prev frame (r17-r24)
-//2.V Data: bottom quarter of Y space for curr frame (r120-r127)
-
- mov (16) ubPREV_UV(0,0)<2> ubPREV_U_TEMP(0,0)<16;8,1> { NoDDClr }
- mov (16) ubPREV_UV(8,0)<2> ubPREV_U_TEMP(0,8)<16;8,1> { NoDDClr }
- mov (16) ubPREV_UV(1,0)<2> ubPREV_U_TEMP(1,0)<16;8,1> { NoDDClr }
- mov (16) ubPREV_UV(9,0)<2> ubPREV_U_TEMP(1,8)<16;8,1> { NoDDClr }
- mov (16) ubPREV_UV(2,0)<2> ubPREV_U_TEMP(2,0)<16;8,1> { NoDDClr }
- mov (16) ubPREV_UV(10,0)<2> ubPREV_U_TEMP(2,8)<16;8,1> { NoDDClr }
- mov (16) ubPREV_UV(3,0)<2> ubPREV_U_TEMP(3,0)<16;8,1> { NoDDClr }
- mov (16) ubPREV_UV(11,0)<2> ubPREV_U_TEMP(3,8)<16;8,1> { NoDDClr }
- mov (16) ubPREV_UV(4,0)<2> ubPREV_U_TEMP(4,0)<16;8,1> { NoDDClr }
- mov (16) ubPREV_UV(12,0)<2> ubPREV_U_TEMP(4,8)<16;8,1> { NoDDClr }
- mov (16) ubPREV_UV(5,0)<2> ubPREV_U_TEMP(5,0)<16;8,1> { NoDDClr }
- mov (16) ubPREV_UV(13,0)<2> ubPREV_U_TEMP(5,8)<16;8,1> { NoDDClr }
- mov (16) ubPREV_UV(6,0)<2> ubPREV_U_TEMP(6,0)<16;8,1> { NoDDClr }
- mov (16) ubPREV_UV(14,0)<2> ubPREV_U_TEMP(6,8)<16;8,1> { NoDDClr }
- mov (16) ubPREV_UV(7,0)<2> ubPREV_U_TEMP(7,0)<16;8,1> { NoDDClr }
- mov (16) ubPREV_UV(15,0)<2> ubPREV_U_TEMP(7,8)<16;8,1> { NoDDClr }
-
- mov (16) ubPREV_UV(0,1)<2> ubPREV_V_TEMP(0,0)<16;8,1> { NoDDChk }
- mov (16) ubPREV_UV(8,1)<2> ubPREV_V_TEMP(0,8)<16;8,1> { NoDDChk }
- mov (16) ubPREV_UV(1,1)<2> ubPREV_V_TEMP(1,0)<16;8,1> { NoDDChk }
- mov (16) ubPREV_UV(9,1)<2> ubPREV_V_TEMP(1,8)<16;8,1> { NoDDChk }
- mov (16) ubPREV_UV(2,1)<2> ubPREV_V_TEMP(2,0)<16;8,1> { NoDDChk }
- mov (16) ubPREV_UV(10,1)<2> ubPREV_V_TEMP(2,8)<16;8,1> { NoDDChk }
- mov (16) ubPREV_UV(3,1)<2> ubPREV_V_TEMP(3,0)<16;8,1> { NoDDChk }
- mov (16) ubPREV_UV(11,1)<2> ubPREV_V_TEMP(3,8)<16;8,1> { NoDDChk }
- mov (16) ubPREV_UV(4,1)<2> ubPREV_V_TEMP(4,0)<16;8,1> { NoDDChk }
- mov (16) ubPREV_UV(12,1)<2> ubPREV_V_TEMP(4,8)<16;8,1> { NoDDChk }
- mov (16) ubPREV_UV(5,1)<2> ubPREV_V_TEMP(5,0)<16;8,1> { NoDDChk }
- mov (16) ubPREV_UV(13,1)<2> ubPREV_V_TEMP(5,8)<16;8,1> { NoDDChk }
- mov (16) ubPREV_UV(6,1)<2> ubPREV_V_TEMP(6,0)<16;8,1> { NoDDChk }
- mov (16) ubPREV_UV(14,1)<2> ubPREV_V_TEMP(6,8)<16;8,1> { NoDDChk }
- mov (16) ubPREV_UV(7,1)<2> ubPREV_V_TEMP(7,0)<16;8,1> { NoDDChk }
- mov (16) ubPREV_UV(15,1)<2> ubPREV_V_TEMP(7,8)<16;8,1> { NoDDChk }
-
-
-
-//Module Name : DN_UV_420_Load_Curr_Frame_Y
-//Author : Tatiya, Rupesh
-//Description : Load Curr Frame Y data for 420 Input
-
-
-
-//Module Name : DN_UV_Load_Curr_Frame_Y
-//Author : Tatiya, Rupesh
-//Description : Loads Y of Current frame.
-
-
-
-
- //For 16x16 U and 16x16 V for 420, we need to read 32x32 Y.
-
- mov (8) acc0.0<1>:ud r0.0<8;8,1>:ud
- mov (1) acc0.2<1>:ud 0xF000F:ud
- add (2) acc0.0<1>:ud r9.0<2;2,1>:w r4.4<2;2,1>:w
-
- mov (8) r92.0<1>:ud acc0.0<8;8,1>:ud
-
- mov (8) r101.0<1>:ud acc0.0<8;8,1>:ud
- mov (8) r110.0<1>:ud acc0.0<8;8,1>:ud
- mov (8) r119.0<1>:ud acc0.0<8;8,1>:ud
-
- add (1) r101.1<1>:d acc0.1<0;1,0>:d 16:d
-
- add (1) r110.0<1>:d acc0.0<0;1,0>:d 16:d
-
- add (2) r119.0<1>:d acc0.0<2;2,1>:d 16:d
-
- send (8) udCURR_Y0(0)<1> r92 0x4 0x2890003:ud
- send (8) udCURR_Y1(0)<1> r101 0x4 0x2890003:ud
- send (8) udCURR_Y2(0)<1> r110 0x4 0x2890003:ud
- send (8) udCURR_Y3(0)<1> r119 0x4 0x2890003:ud
-
-
-
-//Module Name : DN_UV_Noise_Detection_UV
-//Author : Tatiya, Rupesh
-//Description : Performs noise detection on 16x16 U and 16x16 V each.
-
-
-
-//Module Name : DN_UV_Move_CURBE_Inline_UV.asm
-//Author : Tatiya, Rupesh
-
-
-
-
- //Mov CURBE data to another space - so that it can be used as Temp Space --> r1 - r6
- mov (4) r54.28<1>:ub r2.28<4;4,1>:ub //Dest. YUY2 offset
- mov (2) r54.5<1>:ud r4.0<4;2,2>:ud //Src YUY2 offset and Origin offset
- mov (4) r55.28<1>:ub r1.0<4;4,1>:ub
-
- mov (8) r61.20<1>:ub r1.4<8;8,1>:ub
- mov (4) r61.28<1>:ub r1.12<4;4,1>:ub
-
- //Move Inline Data to another space - so that it can be used as Temp Space --> r7
- mov (4) r62.10<1>:w r9.0<4;4,1>:w
- mov (4) r63.10<1>:w r9.4<4;4,1>:w
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- mov (1) a0.0:uw 1664:uw
- mov (1) a0.1:uw 1816:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- //TODO - remove one instruction here using arithmatic. -rT
- mov (1) a0.0:uw 1792:uw
- mov (1) a0.1:uw 1820:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- //TODO - remove one instruction here using arithmatic. -rT
- mov (1) a0.0:uw 1920:uw
- mov (1) a0.1:uw 1848:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- //TODO - remove one instruction here using arithmatic. -rT
- mov (1) a0.0:uw 2048:uw
- mov (1) a0.1:uw 1852:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- mov (1) a0.0:uw 2304:uw
- mov (1) a0.1:uw 1880:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- //TODO - remove one instruction here using arithmatic. -rT
- mov (1) a0.0:uw 2432:uw
- mov (1) a0.1:uw 1884:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- //TODO - remove one instruction here using arithmatic. -rT
- mov (1) a0.0:uw 2560:uw
- mov (1) a0.1:uw 1912:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-
-
-//Module Name : DN_UV_Noise_Detection_Set_Top_Region_N
-//Author : Tatiya, Rupesh
-//Description : Sets sub-region region N from Top region.
-
-
- //TODO - remove one instruction here using arithmatic. -rT
- mov (1) a0.0:uw 2688:uw
- mov (1) a0.1:uw 1916:uw
-
-
-
-
-add (1) r9.7<1>:d ip:ud 32:d { NoCompact }
- jmpi (1) DN_UV_NOISE_DETECTION_UV { NoCompact }
-
-
-
-//Module : DN_UV_Noise_Reduction_UV
-//Author : Tatiya, Rupesh
-//Description : Performs Noise Reduction on 16x16 U and 16x16 V.
-//Tasks : 1. Update weight history
-// 2. Find if it block is motion block
-// 3. Compute Denoised Pixel.
-
-
-
-
-//History is 1+1 byte every 4x4 U and 4x4 V.
-
- cmp.l.f0.0 (16) null<1>:w ubHIST_UV(0,0)<16;16,1> r61.20<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w ubHIST_UV(0,0)<16;16,1> r61.22<0;2,1>:ub
-
- mov (16) uwCURBE_TEMP(0)<1> 0:w
- mov (16) uwCURBE_TEMP(1)<1> 0:w
-
- //Compute diff betn curr and prev. - First 16 lines
- // 8 lines here
- add (16) wDIFF_TEMPORAL(0)<1> ubCURR_UV(2,2)<16;16,1> -ubPREV_UV(0,0)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(1)<1> ubCURR_UV(3,2)<16;16,1> -ubPREV_UV(0,16)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(2)<1> ubCURR_UV(4,2)<16;16,1> -ubPREV_UV(0,32)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(3)<1> ubCURR_UV(5,2)<16;16,1> -ubPREV_UV(0,48)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(4)<1> ubCURR_UV(6,2)<16;16,1> -ubPREV_UV(0,64)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(5)<1> ubCURR_UV(7,2)<16;16,1> -ubPREV_UV(0,80)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(6)<1> ubCURR_UV(8,2)<16;16,1> -ubPREV_UV(0,96)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(7)<1> ubCURR_UV(9,2)<16;16,1> -ubPREV_UV(0,112)<16;16,1> //Diff UV interleaved
-
- //Update WT HIST
- (-f0.0) shr (16) uwCURBE_TEMP(0)<1> ubHIST_UV(0,0)<16;16,1> 1:w
- (f1.0) add (16) uwCURBE_TEMP(2)<1> ubHIST_UV(0,0)<16;16,1> r61.24<0;2,1>:ub
- (f0.0) mov (16) uwCURBE_TEMP(2)<1> r61.20<0;2,1>:ub
- (-f0.0.anyv) mov (16) uwCURBE_TEMP(2)<1> ubHIST_UV(0,0)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w ubHIST_UV(0,16)<16;16,1> r61.20<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w ubHIST_UV(0,16)<16;16,1> r61.22<0;2,1>:ub
-
- //Compute diff betn curr and prev. - First 16 lines
- // 8 more lines here
- add (16) wDIFF_TEMPORAL(8)<1> ubCURR_UV(10,2)<16;16,1> -ubPREV_UV(0,128)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(9)<1> ubCURR_UV(11,2)<16;16,1> -ubPREV_UV(0,144)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(10)<1> ubCURR_UV(12,2)<16;16,1> -ubPREV_UV(0,160)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(11)<1> ubCURR_UV(13,2)<16;16,1> -ubPREV_UV(0,176)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(12)<1> ubCURR_UV(14,2)<16;16,1> -ubPREV_UV(0,192)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(13)<1> ubCURR_UV(15,2)<16;16,1> -ubPREV_UV(0,208)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(14)<1> ubCURR_UV(16,2)<16;16,1> -ubPREV_UV(0,224)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(15)<1> ubCURR_UV(17,2)<16;16,1> -ubPREV_UV(0,240)<16;16,1> //Diff UV interleaved
-
- (-f0.0) shr (16) uwCURBE_TEMP(1)<1> ubHIST_UV(0,16)<16;16,1> 1:w
- (f1.0) add (16) uwCURBE_TEMP(3)<1> ubHIST_UV(0,16)<16;16,1> r61.24<0;2,1>:ub
- (f0.0) mov (16) uwCURBE_TEMP(3)<1> r61.20<0;2,1>:ub
- (-f0.0.anyv) mov(16) uwCURBE_TEMP(3)<1> ubHIST_UV(0,16)<16;16,1>
-
- //16x16 to 16x4 - First 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(0)<16;16,1> (abs)wDIFF_TEMPORAL(1)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(2)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(3)<16;16,1>
- //16x16 to 16x4 - First 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(4)<16;16,1> (abs)wDIFF_TEMPORAL(5)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(6)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(7)<16;16,1>
- //16x16 to 16x4 - First 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(8)<16;16,1> (abs)wDIFF_TEMPORAL(9)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(10)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(2)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(11)<16;16,1>
- //16x16 to 16x4 - First 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(12)<16;16,1> (abs)wDIFF_TEMPORAL(13)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(14)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(3)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(15)<16;16,1>
-
-//Compute diff betn curr and prev. - Second 16 lines
-//13 lines.
- add (16) wDIFF_TEMPORAL(16)<1> ubCURR_UV(22,2)<16;16,1> -ubPREV_UV(8,0)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(17)<1> ubCURR_UV(23,2)<16;16,1> -ubPREV_UV(8,16)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(18)<1> ubCURR_UV(24,2)<16;16,1> -ubPREV_UV(8,32)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(19)<1> ubCURR_UV(25,2)<16;16,1> -ubPREV_UV(8,48)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(20)<1> ubCURR_UV(26,2)<16;16,1> -ubPREV_UV(8,64)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(21)<1> ubCURR_UV(27,2)<16;16,1> -ubPREV_UV(8,80)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(22)<1> ubCURR_UV(28,2)<16;16,1> -ubPREV_UV(8,96)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(23)<1> ubCURR_UV(29,2)<16;16,1> -ubPREV_UV(8,112)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(24)<1> ubCURR_UV(30,2)<16;16,1> -ubPREV_UV(8,128)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(25)<1> ubCURR_UV(31,2)<16;16,1> -ubPREV_UV(8,144)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(26)<1> ubCURR_UV(32,2)<16;16,1> -ubPREV_UV(8,160)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(27)<1> ubCURR_UV(33,2)<16;16,1> -ubPREV_UV(8,176)<16;16,1> //Diff UV interleaved
- add (16) wDIFF_TEMPORAL(28)<1> ubCURR_UV(34,2)<16;16,1> -ubPREV_UV(8,192)<16;16,1> //Diff UV interleaved
-
-//3 more lines
- add (16) wCURBE_TEMP(4)<1> ubCURR_UV(35,2)<16;16,1> -ubPREV_UV(8,208)<16;16,1> //Diff UV interleaved
- add (16) wCURBE_TEMP(5)<1> ubCURR_UV(36,2)<16;16,1> -ubPREV_UV(8,224)<16;16,1> //Diff UV interleaved
- add (16) wCURBE_TEMP(6)<1> ubCURR_UV(37,2)<16;16,1> -ubPREV_UV(8,240)<16;16,1> //Diff UV interleaved
-
- //16x4 to 8x4 - First 16 lines
- add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> uwDIFF_TEMPORAL_SUM4x4(2,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(2,2)<4;2,1>
-
- //8x4 to 4x4 - First 16 lines
- add (16) uwDIFF_TEMPORAL_SUM4x4_FINAL(0)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1> { AccWrEn }
-
- //16x16 to 16x4 - Second 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(16)<16;16,1> (abs)wDIFF_TEMPORAL(17)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(18)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(19)<16;16,1>
- //16x16 to 16x4 - Second 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(20)<16;16,1> (abs)wDIFF_TEMPORAL(21)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(22)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(23)<16;16,1>
- //16x16 to 16x4 - Second 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(24)<16;16,1> (abs)wDIFF_TEMPORAL(25)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(26)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(2)<1> acc0.0<16;16,1>:uw (abs)wDIFF_TEMPORAL(27)<16;16,1>
-
- //16x16 to 16x4 - Second 16 lines
- add (16) acc0.0<1>:uw (abs)wDIFF_TEMPORAL(28)<16;16,1> (abs)wCURBE_TEMP(4)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wCURBE_TEMP(5)<16;16,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(3)<1> acc0.0<16;16,1>:uw (abs)wCURBE_TEMP(6)<16;16,1>
-
- //Find if block is motion block - First 16 lines
- cmp.g.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_FINAL(0)<16;16,1> r61.26<0;2,1>:ub
-
- //Move TEMPORAL_SUM4x4 for SIMD16 use later.
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,0)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,2)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,4)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,6)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,8)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,10)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,12)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(0,14)<0;2,1>
-
- //Pick Appropriate Weight History Based on motion. - First 16 lines
- (-f0.0) mov (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(2)<16;16,1>
-
- //Actual DN - First 16 lines
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(0)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(0)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(2,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(2,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(2,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,0)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,8)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(0)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(0)<1> ubCURR_UV(2,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(0)<1> wDIFF_TEMPORAL(0)<16;16,1> ubCURR_UV(2,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(1)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(1)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(3,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(3,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(3,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,16)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,24)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(1)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(1)<1> ubCURR_UV(3,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(1)<1> wDIFF_TEMPORAL(1)<16;16,1> ubCURR_UV(3,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(2)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(2)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(4,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(4,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(4,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,32)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,40)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(2)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(2)<1> ubCURR_UV(4,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(2)<1> wDIFF_TEMPORAL(2)<16;16,1> ubCURR_UV(4,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(3)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(3)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(5,2)<8;8,1> -uwCURBE_TEMP(0,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(5,10)<8;8,1> -uwCURBE_TEMP(0,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(5,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,48)<8;8,1> uwCURBE_TEMP(0,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,56)<8;8,1> uwCURBE_TEMP(0,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(3)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(3)<1> ubCURR_UV(5,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(3)<1> wDIFF_TEMPORAL(3)<16;16,1> ubCURR_UV(5,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(4)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(4)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(6,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(6,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(6,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,64)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,72)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(4)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(4)<1> ubCURR_UV(6,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(4)<1> wDIFF_TEMPORAL(4)<16;16,1> ubCURR_UV(6,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(5)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(5)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(7,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(7,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(7,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,80)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,88)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(5)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(5)<1> ubCURR_UV(7,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(5)<1> wDIFF_TEMPORAL(5)<16;16,1> ubCURR_UV(7,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(6)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(6)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(8,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(8,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(8,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,96)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,104)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(6)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(6)<1> ubCURR_UV(8,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(6)<1> wDIFF_TEMPORAL(6)<16;16,1> ubCURR_UV(8,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(7)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(7)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(9,2)<8;8,1> -uwCURBE_TEMP(0,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(9,10)<8;8,1> -uwCURBE_TEMP(0,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(9,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,112)<8;8,1> uwCURBE_TEMP(0,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,120)<8;8,1> uwCURBE_TEMP(0,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(7)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(7)<1> ubCURR_UV(9,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(7)<1> wDIFF_TEMPORAL(7)<16;16,1> ubCURR_UV(9,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(8)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(8)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(10,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(10,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(10,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,128)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,136)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(8)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(8)<1> ubCURR_UV(10,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(8)<1> wDIFF_TEMPORAL(8)<16;16,1> ubCURR_UV(10,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(9)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(9)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(11,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(11,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(11,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,144)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,152)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(9)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(9)<1> ubCURR_UV(11,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(9)<1> wDIFF_TEMPORAL(9)<16;16,1> ubCURR_UV(11,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(10)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(10)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(12,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(12,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(12,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,160)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,168)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(10)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(10)<1> ubCURR_UV(12,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(10)<1> wDIFF_TEMPORAL(10)<16;16,1> ubCURR_UV(12,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(11)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(11)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(13,2)<8;8,1> -uwCURBE_TEMP(0,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(13,10)<8;8,1> -uwCURBE_TEMP(0,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(13,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,176)<8;8,1> uwCURBE_TEMP(0,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,184)<8;8,1> uwCURBE_TEMP(0,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(11)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(11)<1> ubCURR_UV(13,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(11)<1> wDIFF_TEMPORAL(11)<16;16,1> ubCURR_UV(13,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(12)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(12)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(14,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(14,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(14,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,192)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,200)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(12)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(12)<1> ubCURR_UV(14,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(12)<1> wDIFF_TEMPORAL(12)<16;16,1> ubCURR_UV(14,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(13)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(13)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(15,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(15,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(15,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,208)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,216)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(13)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(13)<1> ubCURR_UV(15,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(13)<1> wDIFF_TEMPORAL(13)<16;16,1> ubCURR_UV(15,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(14)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(14)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(16,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(16,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(16,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,224)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,232)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(14)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(14)<1> ubCURR_UV(16,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(14)<1> wDIFF_TEMPORAL(14)<16;16,1> ubCURR_UV(16,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(15)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(15)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(17,2)<8;8,1> -uwCURBE_TEMP(0,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(17,10)<8;8,1> -uwCURBE_TEMP(0,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(17,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(0,240)<8;8,1> uwCURBE_TEMP(0,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(0,248)<8;8,1> uwCURBE_TEMP(0,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(15)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(15)<1> ubCURR_UV(17,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(15)<1> wDIFF_TEMPORAL(15)<16;16,1> ubCURR_UV(17,2)<16;16,1>
-
-
- //16x4 to 8x4 - Second 16 lines
- add (16) uwDIFF_TEMPORAL_SUM4x4(0)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1>
- add (16) uwDIFF_TEMPORAL_SUM4x4(1)<1> uwDIFF_TEMPORAL_SUM4x4(2,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(2,2)<4;2,1>
-
- //8x4 to 4x4 - Second 16 lines
- add (16) uwDIFF_TEMPORAL_SUM4x4_FINAL(1)<1> uwDIFF_TEMPORAL_SUM4x4(0,0)<4;2,1> uwDIFF_TEMPORAL_SUM4x4(0,2)<4;2,1> { AccWrEn }
-
- //Find if block is motion block - Second 16 lines
- cmp.g.f1.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_FINAL(1)<16;16,1> r61.26<0;2,1>:ub
-
- //Move TEMPORAL_SUM4x4 for SIMD16 use later.
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,0)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,2)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,4)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,6)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,8)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,10)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,0)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,12)<0;2,1>
- mov (8) uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0,8)<1> uwDIFF_TEMPORAL_SUM4x4_FINAL(1,14)<0;2,1>
-
- //Pick Appropriate Weight History Based on motion. - Second 16 lines
- (-f1.0) mov (16) uwCURBE_TEMP(1)<1> uwCURBE_TEMP(3)<16;16,1>
-
- //Actual DN - Second 16 lines
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(16)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(16)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(22,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(22,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(22,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,0)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,8)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(16)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(16)<1> ubCURR_UV(22,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(16)<1> wDIFF_TEMPORAL(16)<16;16,1> ubCURR_UV(22,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(17)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(17)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(23,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(23,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(23,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,16)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,24)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(17)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(17)<1> ubCURR_UV(23,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(17)<1> wDIFF_TEMPORAL(17)<16;16,1> ubCURR_UV(23,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(18)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(18)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(24,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(24,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(24,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,32)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,40)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(18)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(18)<1> ubCURR_UV(24,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(18)<1> wDIFF_TEMPORAL(18)<16;16,1> ubCURR_UV(24,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(19)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(19)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(25,2)<8;8,1> -uwCURBE_TEMP(1,0)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(25,10)<8;8,1> -uwCURBE_TEMP(1,2)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(25,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,48)<8;8,1> uwCURBE_TEMP(1,0)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,56)<8;8,1> uwCURBE_TEMP(1,2)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(19)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(19)<1> ubCURR_UV(25,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_0(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(19)<1> wDIFF_TEMPORAL(19)<16;16,1> ubCURR_UV(25,2)<16;16,1>
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(20)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(20)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(26,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(26,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(26,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,64)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,72)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(20)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(20)<1> ubCURR_UV(26,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(20)<1> wDIFF_TEMPORAL(20)<16;16,1> ubCURR_UV(26,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(21)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(21)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(27,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(27,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(27,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,80)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,88)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(21)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(21)<1> ubCURR_UV(27,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(21)<1> wDIFF_TEMPORAL(21)<16;16,1> ubCURR_UV(27,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(22)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(22)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(28,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(28,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(28,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,96)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,104)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(22)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(22)<1> ubCURR_UV(28,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(22)<1> wDIFF_TEMPORAL(22)<16;16,1> ubCURR_UV(28,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(23)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(23)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(29,2)<8;8,1> -uwCURBE_TEMP(1,4)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(29,10)<8;8,1> -uwCURBE_TEMP(1,6)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(29,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,112)<8;8,1> uwCURBE_TEMP(1,4)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,120)<8;8,1> uwCURBE_TEMP(1,6)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(23)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(23)<1> ubCURR_UV(29,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_1(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(23)<1> wDIFF_TEMPORAL(23)<16;16,1> ubCURR_UV(29,2)<16;16,1>
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(24)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(24)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(30,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(30,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(30,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,128)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,136)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(24)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(24)<1> ubCURR_UV(30,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(24)<1> wDIFF_TEMPORAL(24)<16;16,1> ubCURR_UV(30,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(25)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(25)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(31,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(31,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(31,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,144)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,152)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(25)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(25)<1> ubCURR_UV(31,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(25)<1> wDIFF_TEMPORAL(25)<16;16,1> ubCURR_UV(31,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(26)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(26)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(32,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(32,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(32,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,160)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,168)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(26)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(26)<1> ubCURR_UV(32,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(26)<1> wDIFF_TEMPORAL(26)<16;16,1> ubCURR_UV(32,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(27)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(27)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(33,2)<8;8,1> -uwCURBE_TEMP(1,8)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(33,10)<8;8,1> -uwCURBE_TEMP(1,10)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(33,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,176)<8;8,1> uwCURBE_TEMP(1,8)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,184)<8;8,1> uwCURBE_TEMP(1,10)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(27)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(27)<1> ubCURR_UV(33,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_2(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(27)<1> wDIFF_TEMPORAL(27)<16;16,1> ubCURR_UV(33,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(28)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wDIFF_TEMPORAL(28)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(34,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(34,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(34,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,192)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,200)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wDIFF_TEMPORAL(28)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wDIFF_TEMPORAL(28)<1> ubCURR_UV(34,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wDIFF_TEMPORAL(28)<1> wDIFF_TEMPORAL(28)<16;16,1> ubCURR_UV(34,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wCURBE_TEMP(4)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wCURBE_TEMP(4)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(35,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(35,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(35,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,208)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,216)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wCURBE_TEMP(4)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wCURBE_TEMP(4)<1> ubCURR_UV(35,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wCURBE_TEMP(4)<1> wCURBE_TEMP(4)<16;16,1> ubCURR_UV(35,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wCURBE_TEMP(5)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wCURBE_TEMP(5)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(36,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(36,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(36,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,224)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,232)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wCURBE_TEMP(5)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wCURBE_TEMP(5)<1> ubCURR_UV(36,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wCURBE_TEMP(5)<1> wCURBE_TEMP(5)<16;16,1> ubCURR_UV(36,2)<16;16,1>
-
- cmp.l.f0.0 (16) null<1>:w (abs)wCURBE_TEMP(6)<16;16,1> r61.28<0;2,1>:ub
- cmp.l.f1.0 (16) null<1>:w (abs)wCURBE_TEMP(6)<16;16,1> r61.30<0;2,1>:ub
- mul (8) acc0.0<1>:w ubCURR_UV(37,2)<8;8,1> -uwCURBE_TEMP(1,12)<0;2,1>
- mul (8) acc0.8<1>:w ubCURR_UV(37,10)<8;8,1> -uwCURBE_TEMP(1,14)<0;2,1>
- mac (16) acc0<1>:w ubCURR_UV(37,2)<16;16,1> 256:w
- mac (8) acc0.0<1>:w ubPREV_UV(8,240)<8;8,1> uwCURBE_TEMP(1,12)<0;2,1>
- mac (8) acc0.8<1>:w ubPREV_UV(8,248)<8;8,1> uwCURBE_TEMP(1,14)<0;2,1>
- add (16) acc0<1>:w acc0<16;16,1>:w 128:w
- (f0.0) shr (16) wCURBE_TEMP(6)<1> acc0<16;16,1>:w 8:w
- (-f0.0) mov (16) wCURBE_TEMP(6)<1> ubCURR_UV(37,2)<16;16,1>
- cmp.le.f0.0 (16) null<1>:w uwDIFF_TEMPORAL_SUM4x4_TEMP_3(0)<16;16,1> r61.26<0;2,1>:ub
- (-f0.0.allv) avg (16) wCURBE_TEMP(6)<1> wCURBE_TEMP(6)<16;16,1> ubCURR_UV(37,2)<16;16,1>
-
- //Pack Weight History WORD -> BYTE
- mov (16) ubCURBE_TEMP(3,0)<1> ubCURBE_TEMP(0)<32;16,2>
- mov (16) ubCURBE_TEMP(3,16)<1> ubCURBE_TEMP(1)<32;16,2>
-
-
-
-//Module Name : DN_UV_Compute_BNE_UV
-//Author : Tatiya, Rupesh
-//Description : Computes minimum SOAD for each 16x4 block.
-
- cmp.l.f0.0 (8) null:w uwSOAD_MIN_8x4(0,12)<16;4,1> uwSOAD_MIN_8x4(2,12)<16;4,1>
- (f0.0)sel (8) uwCURBE_TEMP(1,0)<1> uwSOAD_MIN_8x4(0,12)<16;4,1> uwSOAD_MIN_8x4(2,12)<16;4,1>
-
- mov (8) ubCURBE_TEMP(1)<1> ubCURBE_TEMP(1)<16;8,2>
-
-
-
-//File Name : DN_UV_PL3_Unpack_Denoised_UV.asm
-//Author : Tatiya, Rupesh
-//Description : Upack the interleaved UV data
-
-//First 16 lines.
- mov (8) ubMSGPAYLOAD_U(0,0)<1> ubDIFF_TEMPORAL(0,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(0,16)<1> ubDIFF_TEMPORAL(1,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(0,0)<1> ubDIFF_TEMPORAL(0,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(0,16)<1> ubDIFF_TEMPORAL(1,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(1,0)<1> ubDIFF_TEMPORAL(2,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(1,16)<1> ubDIFF_TEMPORAL(3,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(1,0)<1> ubDIFF_TEMPORAL(2,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(1,16)<1> ubDIFF_TEMPORAL(3,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(2,0)<1> ubDIFF_TEMPORAL(4,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(2,16)<1> ubDIFF_TEMPORAL(5,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(2,0)<1> ubDIFF_TEMPORAL(4,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(2,16)<1> ubDIFF_TEMPORAL(5,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(3,0)<1> ubDIFF_TEMPORAL(6,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(3,16)<1> ubDIFF_TEMPORAL(7,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(3,0)<1> ubDIFF_TEMPORAL(6,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(3,16)<1> ubDIFF_TEMPORAL(7,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(4,0)<1> ubDIFF_TEMPORAL(8,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(4,16)<1> ubDIFF_TEMPORAL(9,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(4,0)<1> ubDIFF_TEMPORAL(8,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(4,16)<1> ubDIFF_TEMPORAL(9,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(5,0)<1> ubDIFF_TEMPORAL(10,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(5,16)<1> ubDIFF_TEMPORAL(11,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(5,0)<1> ubDIFF_TEMPORAL(10,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(5,16)<1> ubDIFF_TEMPORAL(11,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(6,0)<1> ubDIFF_TEMPORAL(12,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(6,16)<1> ubDIFF_TEMPORAL(13,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(6,0)<1> ubDIFF_TEMPORAL(12,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(6,16)<1> ubDIFF_TEMPORAL(13,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(7,0)<1> ubDIFF_TEMPORAL(14,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(7,16)<1> ubDIFF_TEMPORAL(15,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(7,0)<1> ubDIFF_TEMPORAL(14,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(7,16)<1> ubDIFF_TEMPORAL(15,2)<32;8,4>
-
-//Second 16 lines.
-//12 lines first
- mov (8) ubMSGPAYLOAD_U(0,8)<1> ubDIFF_TEMPORAL(16,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(0,24)<1> ubDIFF_TEMPORAL(17,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(0,8)<1> ubDIFF_TEMPORAL(16,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(0,24)<1> ubDIFF_TEMPORAL(17,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(1,8)<1> ubDIFF_TEMPORAL(18,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(1,24)<1> ubDIFF_TEMPORAL(19,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(1,8)<1> ubDIFF_TEMPORAL(18,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(1,24)<1> ubDIFF_TEMPORAL(19,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(2,8)<1> ubDIFF_TEMPORAL(20,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(2,24)<1> ubDIFF_TEMPORAL(21,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(2,8)<1> ubDIFF_TEMPORAL(20,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(2,24)<1> ubDIFF_TEMPORAL(21,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(3,8)<1> ubDIFF_TEMPORAL(22,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(3,24)<1> ubDIFF_TEMPORAL(23,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(3,8)<1> ubDIFF_TEMPORAL(22,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(3,24)<1> ubDIFF_TEMPORAL(23,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(4,8)<1> ubDIFF_TEMPORAL(24,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(4,24)<1> ubDIFF_TEMPORAL(25,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(4,8)<1> ubDIFF_TEMPORAL(24,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(4,24)<1> ubDIFF_TEMPORAL(25,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(5,8)<1> ubDIFF_TEMPORAL(26,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(5,24)<1> ubDIFF_TEMPORAL(27,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(5,8)<1> ubDIFF_TEMPORAL(26,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(5,24)<1> ubDIFF_TEMPORAL(27,2)<32;8,4>
-
- //3 lines next
- mov (8) ubMSGPAYLOAD_U(6,8)<1> ubDIFF_TEMPORAL(28,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(6,24)<1> ubCURBE_TEMP(4,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(6,8)<1> ubDIFF_TEMPORAL(28,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(6,24)<1> ubCURBE_TEMP(4,2)<32;8,4>
-
- mov (8) ubMSGPAYLOAD_U(7,8)<1> ubCURBE_TEMP(5,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_U(7,24)<1> ubCURBE_TEMP(6,0)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(7,8)<1> ubCURBE_TEMP(5,2)<32;8,4>
- mov (8) ubMSGPAYLOAD_V(7,24)<1> ubCURBE_TEMP(6,2)<32;8,4>
-
-
-
-//Module Name : DN_UV_420_Save_Curr_Frame_Y
-//Author : Tatiya, Rupesh
-//Description : Save Curr Frame Y data for 420 Input
-
-
-
-//Module Name : DN_UV_Load_Curr_Frame_Y
-//Author : Tatiya, Rupesh
-//Description : Saves Y or YUY2 of Current frame.
-
-
-
-
- mov (8) acc0.0<1>:ud r0.0<8;8,1>:ud
- mov (2) acc0.0<1>:d r62.10<2;2,1>:w
-
- mov (1) acc0.2<1>:d 0xF000F:ud
-
- mov (8) r92.0<1>:ud acc0.0<8;8,1>:ud
-
- mov (8) r101.0<1>:ud acc0.0<8;8,1>:ud
- mov (8) r110.0<1>:ud acc0.0<8;8,1>:ud
- mov (8) r119.0<1>:ud acc0.0<8;8,1>:ud
-
- add (1) r101.1<1>:d acc0.1<0;1,0>:d 16:d
-
- add (1) r110.0<1>:d acc0.0<0;1,0>:d 16:d
-
- add (2) r119.0<1>:d acc0.0<2;2,1>:d 16:d
-
- send (8) null<1>:d r92 0x5 0x120A8018:ud
- send (8) null<1>:d r101 0x5 0x120A8018:ud
- send (8) null<1>:d r110 0x5 0x120A8018:ud
- send (8) null<1>:d r119 0x5 0x120A8018:ud
-
-
- //TODO - See if History saving can be combined with Curr Frame Save. - rT
-
-
-//Module Name : DN_UV_Save_Hist_UV
-//Author : Tatiya, Rupesh
-//Description : Saves DN history for UV data.
-
- mov (8) r3.0<1>:ud r0.0<8;8,1>:ud
- mov (2) r3.0<1>:d r62.12<2;2,1>:w
- mov (1) r3.2<1>:d 0x30007:ud
-
- send (8) null<1>:d r3 0x5 0x40A8021:ud
-
-
-
-//Module Name : DN_UV_Save_BNE_UV
-//Author : Tatiya, Rupesh
-//Description : Saves BNE values for 16x16 U and 16x16 V.
-
- mov (8) r1.0<1>:ud r0.0<8;8,1>:ud
- mov (2) r1.0<1>:d r63.12<2;2,1>:w
- mov (1) r1.2<1>:d 0x10003:ud
-
- send (8) null<1>:d r1 0x5 0x40A8023:ud
-
-
-
-//File Name : DN_UV_PL3_Save_Curr_Frame_UV.asm
-//Author : Tatiya, Rupesh
-//Description : Save U and V data for PL3 surface
-
-
-
-//Module name : DN_UV_Save_Curr_Frame_UV
-//Author : Tatiya, Rupesh
-//Description : Saves Current Frame (UV only).
-
-
-
-
- mov (8) r74<1>:ud r0.0<8;8,1>:ud
- mov (8) r83<1>:ud r0.0<8;8,1>:ud
-
- shr (2) r74.0<1>:d r62.10<2;2,1>:w 1:w
- mov (1) r74.2<1>:d 0xF000F:ud
-
- mov (8) r83.0<1>:ud r74.0<8;8,1>:ud
-
- send (8) null<1>:d r74 0x5 0x120A8019:ud
- send (8) null<1>:d r83 0x5 0x120A801A:ud
-
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
-
-
- //All sub-routines here
-
-
-// Module Name : Noise_Detection
-// Author : Tatiya, Rupesh
-// Description : Performs noise detection on 32 pixels of U (8x4) and 32 pixels of V (8x4).
-
-DN_UV_NOISE_DETECTION_UV:
-
-// Find Field Block Median
-//
-// Purpose : Find the median value of the nine pixels in the same field
-// which are centered at current pixel.
-//
-// Works on 9 pixels centered at the current pixel
-// NOTE: pixels are within same field.
-// v4 - current pixel
-//
-// v2 v1 v0
-// * * * <--- Different field - not used
-// v5 v4 v3
-// * * * <--- Different field - not used
-// v8 v7 v6
-
-// Algorithm to find median modifies the data.
-// Copy the data needed to calculate median so the original source data stays intact.
-//
-
-//TODO - Change Interleaved implementation to separated one if - , does not work on predication. - rT
-
-//Delete Later - rT
-//mov (1) pCUR_UV:uw 52*32:uw
-
-// v0
-mov (16) ubMEDIAN_TEMP(0,0)<1> r[a0.0,0]<16;16,1>
-// v0
-mov (16) ubMEDIAN_TEMP(0,16)<1> r[a0.0,32]<16;16,1>
-// v1
-mov (16) ubMEDIAN_TEMP(1,0)<1> r[a0.0,2]<16;16,1>
-// v1
-mov (16) ubMEDIAN_TEMP(1,16)<1> r[a0.0,34]<16;16,1>
-// v2
-mov (16) ubMEDIAN_TEMP(2,0)<1> r[a0.0,4]<16;16,1>
-// v2
-mov (16) ubMEDIAN_TEMP(2,16)<1> r[a0.0,36]<16;16,1>
-// v3
-mov (16) ubMEDIAN_TEMP(3,0)<1> r[a0.0,64]<16;16,1>
-// v3
-mov (16) ubMEDIAN_TEMP(3,16)<1> r[a0.0,96]<16;16,1>
-// v4
-mov (16) ubMEDIAN_TEMP(4,0)<1> r[a0.0,66]<16;16,1>
-// v4
-mov (16) ubMEDIAN_TEMP(4,16)<1> r[a0.0,98]<16;16,1>
-// v5
-mov (16) ubMEDIAN_TEMP(5,0)<1> r[a0.0,68]<16;16,1>
-// v5
-mov (16) ubMEDIAN_TEMP(5,16)<1> r[a0.0,100]<16;16,1>
-// v6
-mov (16) ubMEDIAN_TEMP(6,0)<1> r[a0.0,128]<16;16,1>
-// v6
-mov (16) ubMEDIAN_TEMP(6,16)<1> r[a0.0,160]<16;16,1>
-// v7
-mov (16) ubMEDIAN_TEMP(7,0)<1> r[a0.0,130]<16;16,1>
-// v7
-mov (16) ubMEDIAN_TEMP(7,16)<1> r[a0.0,162]<16;16,1>
-// v8
-mov (16) ubMEDIAN_TEMP(8,0)<1> r[a0.0,132]<16;16,1>
-// v8
-mov (16) ubMEDIAN_TEMP(8,16)<1> r[a0.0,164]<16;16,1>
-
-//TODO - Optimize one instruction here.
-add (1) a0.0:uw a0.0<0;1,0>:uw 64:uw
-// v0
-mov (16) ubMEDIAN_TEMP(9,0)<1> r[a0.0,0]<16;16,1>
-// v0
-mov (16) ubMEDIAN_TEMP(9,16)<1> r[a0.0,32]<16;16,1>
-// v1
-mov (16) ubMEDIAN_TEMP(10,0)<1> r[a0.0,2]<16;16,1>
-// v1
-mov (16) ubMEDIAN_TEMP(10,16)<1> r[a0.0,34]<16;16,1>
-// v2
-mov (16) ubMEDIAN_TEMP(11,0)<1> r[a0.0,4]<16;16,1>
-// v2
-mov (16) ubMEDIAN_TEMP(11,16)<1> r[a0.0,36]<16;16,1>
-// v3
-mov (16) ubMEDIAN_TEMP(12,0)<1> r[a0.0,64]<16;16,1>
-// v3
-mov (16) ubMEDIAN_TEMP(12,16)<1> r[a0.0,96]<16;16,1>
-// v4
-mov (16) ubMEDIAN_TEMP(13,0)<1> r[a0.0,66]<16;16,1>
-// v4
-mov (16) ubMEDIAN_TEMP(13,16)<1> r[a0.0,98]<16;16,1>
-// v5
-mov (16) ubMEDIAN_TEMP(14,0)<1> r[a0.0,68]<16;16,1>
-// v5
-mov (16) ubMEDIAN_TEMP(14,16)<1> r[a0.0,100]<16;16,1>
-// v6
-mov (16) ubMEDIAN_TEMP(15,0)<1> r[a0.0,128]<16;16,1>
-// v6
-mov (16) ubMEDIAN_TEMP(15,16)<1> r[a0.0,160]<16;16,1>
-// v7
-mov (16) ubMEDIAN_TEMP(16,0)<1> r[a0.0,130]<16;16,1>
-// v7
-mov (16) ubMEDIAN_TEMP(16,16)<1> r[a0.0,162]<16;16,1>
-// v8
-mov (16) ubMEDIAN_TEMP(17,0)<1> r[a0.0,132]<16;16,1>
-// v8
-mov (16) ubMEDIAN_TEMP(17,16)<1> r[a0.0,164]<16;16,1>
-
-//TODO - Optimize one instruction here.
-add (1) a0.0:uw a0.0<0;1,0>:uw 64:uw
-
-// MedianSwap
-//
-// MedianSwap(inOutLeft, inOutRight)
-// {
-// if (inOutLeft > inOutRight)
-// {
-// temp = inOutLeft
-// inOutLeft = inOutRight
-// inOutRight = temp
-// }
-// }
-
-// MedianSwap(v1, v2) - U
-// MedianSwap(v4, v5) - U
-// MedianSwap(v1, v2) - V
-// MedianSwap(v4, v5) - V
-
-cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(1,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
-cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(5,0)<32;16,2>
-cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(1,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
-cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(5,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(1,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(1,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
-
-(f0.0) mov (16) ubMEDIAN_TEMP(1,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
-(f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(5,0)<32;16,2>
-(f1.0) mov (16) ubMEDIAN_TEMP(1,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
-(f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(5,1)<32;16,2>
-
-(f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubTEMP1(0,0)<16;16,1>
-(f0.1) mov (16) ubMEDIAN_TEMP(5,0)<2> ubTEMP1(0,16)<16;16,1>
-(f1.0) mov (16) ubMEDIAN_TEMP(2,1)<2> ubTEMP1(1,0)<16;16,1>
-(f1.1) mov (16) ubMEDIAN_TEMP(5,1)<2> ubTEMP1(1,16)<16;16,1>
-
-// MedianSwap(v7, v8) - U
-// MedianSwap(v0, v1) - U
-// MedianSwap(v7, v8) - V
-// MedianSwap(v0, v1) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(7,0)<32;16,2> ubMEDIAN_TEMP(8,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(0,0)<32;16,2> ubMEDIAN_TEMP(1,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(7,1)<32;16,2> ubMEDIAN_TEMP(8,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(0,1)<32;16,2> ubMEDIAN_TEMP(1,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(7,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(0,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(7,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(0,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(7,0)<2> ubMEDIAN_TEMP(8,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(0,0)<2> ubMEDIAN_TEMP(1,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(7,1)<2> ubMEDIAN_TEMP(8,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(0,1)<2> ubMEDIAN_TEMP(1,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(8,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(1,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(8,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(1,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // MedianSwap(v3, v4) - U
- // MedianSwap(v6, v7) - U
- // MedianSwap(v3, v4) - V
- // MedianSwap(v6, v7) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(3,0)<32;16,2> ubMEDIAN_TEMP(4,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(6,0)<32;16,2> ubMEDIAN_TEMP(7,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(3,1)<32;16,2> ubMEDIAN_TEMP(4,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(6,1)<32;16,2> ubMEDIAN_TEMP(7,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(3,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(6,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(3,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(6,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(3,0)<2> ubMEDIAN_TEMP(4,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(6,0)<2> ubMEDIAN_TEMP(7,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(3,1)<2> ubMEDIAN_TEMP(4,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(6,1)<2> ubMEDIAN_TEMP(7,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(7,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(4,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(7,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // MedianSwap(v1, v2) - U
- // MedianSwap(v4, v5) - U
- // MedianSwap(v1, v2) - V
- // MedianSwap(v4, v5) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(1,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(5,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(1,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(5,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(1,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(1,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(1,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(5,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(1,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(5,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(5,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(2,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(5,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // MedianSwap(v7, v8) - U
- // MedianSwap(v0, v3) - U
- // MedianSwap(v7, v8) - V
- // MedianSwap(v0, v3) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(7,0)<32;16,2> ubMEDIAN_TEMP(8,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(0,0)<32;16,2> ubMEDIAN_TEMP(3,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(7,1)<32;16,2> ubMEDIAN_TEMP(8,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(0,1)<32;16,2> ubMEDIAN_TEMP(3,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(7,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(0,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(7,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(0,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(7,0)<2> ubMEDIAN_TEMP(8,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(0,0)<2> ubMEDIAN_TEMP(3,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(7,1)<2> ubMEDIAN_TEMP(8,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(0,1)<2> ubMEDIAN_TEMP(3,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(8,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(3,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(8,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(3,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // NOTE:
- // Compare v0 to v6 to find the minimum.
- // Store the minimum for future use.
- //TODO - Find if MIN is needed.
- //cmp.l.f0.0 (16) null:w ubMEDIAN_TEMP(%1+0,0)<32;16,2> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
- //cmp.l.f1.0 (16) null:w ubMEDIAN_TEMP(%1+0,1)<32;16,2> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
- //(f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,0)<32;16,2>
- //(f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,1)<32;16,2>
- //(-f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
- //(-f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
-
- // MedianSwap(v5, v8) - U
- // MedianSwap(v4, v7) - U
- // MedianSwap(v5, v8) - V
- // MedianSwap(v4, v7) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(5,0)<32;16,2> ubMEDIAN_TEMP(8,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(7,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(5,1)<32;16,2> ubMEDIAN_TEMP(8,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(7,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(5,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(5,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(5,0)<2> ubMEDIAN_TEMP(8,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(7,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(5,1)<2> ubMEDIAN_TEMP(8,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(7,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(8,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(7,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(8,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(7,1)<2> ubTEMP1(1,16)<16;16,1>
-
-// NOTE:
-// Compare v2 to v8 to find the maximum.
-// Store the maximum for future use.
- //TODO - Find if MAX is needed.
-// cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(%1+2,0)<32;16,2> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
-// cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(%1+2,1)<32;16,2> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
-//(f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,0)<32;16,2>
-//(f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,1)<32;16,2>
-//(-f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
-//(-f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
-
-// MedianSwap(v3, v6) - U
-// MedianSwap(v1, v4) - U
-// MedianSwap(v3, v6) - V
-// MedianSwap(v1, v4) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(3,0)<32;16,2> ubMEDIAN_TEMP(6,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(1,0)<32;16,2> ubMEDIAN_TEMP(4,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(3,1)<32;16,2> ubMEDIAN_TEMP(6,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(1,1)<32;16,2> ubMEDIAN_TEMP(4,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(6,0)<2> ubMEDIAN_TEMP(3,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(1,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(6,1)<2> ubMEDIAN_TEMP(3,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(1,1)<32;16,2>
-
- // MedianSwap(v2,v5) - U
- // MedianSwap(v4,v7) - U
- // MedianSwap(v2,v5) - V
- // MedianSwap(v4,v7) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(2,0)<32;16,2> ubMEDIAN_TEMP(5,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(7,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(2,1)<32;16,2> ubMEDIAN_TEMP(5,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(7,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubMEDIAN_TEMP(5,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(7,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(2,1)<2> ubMEDIAN_TEMP(5,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(7,1)<32;16,2>
-
- // MedianSwap(v4,v2) - U
- // MedianSwap(v4,v2) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(4,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(4,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(2,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(2,1)<2> ubTEMP1(0,16)<16;16,1>
-
- // MedianSwap(v6,v4) - U
- // MedianSwap(v6,v4) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(6,0)<32;16,2> ubMEDIAN_TEMP(4,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(6,1)<32;16,2> ubMEDIAN_TEMP(4,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(6,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(6,1)<32;16,2>
-
- // MedianSwap(v4,v2) - U
- // MedianSwap(v4,v2) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(4,0)<32;16,2> ubMEDIAN_TEMP(2,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(4,1)<32;16,2> ubMEDIAN_TEMP(2,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(4,0)<2> ubMEDIAN_TEMP(2,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(4,1)<2> ubMEDIAN_TEMP(2,1)<32;16,2>
-cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(10,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
-cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(14,0)<32;16,2>
-cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(10,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
-cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(14,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(10,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(10,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
-
-(f0.0) mov (16) ubMEDIAN_TEMP(10,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
-(f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(14,0)<32;16,2>
-(f1.0) mov (16) ubMEDIAN_TEMP(10,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
-(f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(14,1)<32;16,2>
-
-(f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubTEMP1(0,0)<16;16,1>
-(f0.1) mov (16) ubMEDIAN_TEMP(14,0)<2> ubTEMP1(0,16)<16;16,1>
-(f1.0) mov (16) ubMEDIAN_TEMP(11,1)<2> ubTEMP1(1,0)<16;16,1>
-(f1.1) mov (16) ubMEDIAN_TEMP(14,1)<2> ubTEMP1(1,16)<16;16,1>
-
-// MedianSwap(v7, v8) - U
-// MedianSwap(v0, v1) - U
-// MedianSwap(v7, v8) - V
-// MedianSwap(v0, v1) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(16,0)<32;16,2> ubMEDIAN_TEMP(17,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(9,0)<32;16,2> ubMEDIAN_TEMP(10,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(16,1)<32;16,2> ubMEDIAN_TEMP(17,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(9,1)<32;16,2> ubMEDIAN_TEMP(10,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(16,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(9,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(16,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(9,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(16,0)<2> ubMEDIAN_TEMP(17,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(9,0)<2> ubMEDIAN_TEMP(10,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(16,1)<2> ubMEDIAN_TEMP(17,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(9,1)<2> ubMEDIAN_TEMP(10,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(17,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(10,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(17,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(10,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // MedianSwap(v3, v4) - U
- // MedianSwap(v6, v7) - U
- // MedianSwap(v3, v4) - V
- // MedianSwap(v6, v7) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(12,0)<32;16,2> ubMEDIAN_TEMP(13,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(15,0)<32;16,2> ubMEDIAN_TEMP(16,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(12,1)<32;16,2> ubMEDIAN_TEMP(13,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(15,1)<32;16,2> ubMEDIAN_TEMP(16,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(12,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(15,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(12,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(15,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(12,0)<2> ubMEDIAN_TEMP(13,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(15,0)<2> ubMEDIAN_TEMP(16,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(12,1)<2> ubMEDIAN_TEMP(13,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(15,1)<2> ubMEDIAN_TEMP(16,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(16,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(13,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(16,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // MedianSwap(v1, v2) - U
- // MedianSwap(v4, v5) - U
- // MedianSwap(v1, v2) - V
- // MedianSwap(v4, v5) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(10,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(14,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(10,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(14,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(10,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(10,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(10,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(14,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(10,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(14,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(14,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(11,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(14,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // MedianSwap(v7, v8) - U
- // MedianSwap(v0, v3) - U
- // MedianSwap(v7, v8) - V
- // MedianSwap(v0, v3) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(16,0)<32;16,2> ubMEDIAN_TEMP(17,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(9,0)<32;16,2> ubMEDIAN_TEMP(12,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(16,1)<32;16,2> ubMEDIAN_TEMP(17,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(9,1)<32;16,2> ubMEDIAN_TEMP(12,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(16,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(9,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(16,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(9,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(16,0)<2> ubMEDIAN_TEMP(17,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(9,0)<2> ubMEDIAN_TEMP(12,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(16,1)<2> ubMEDIAN_TEMP(17,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(9,1)<2> ubMEDIAN_TEMP(12,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(17,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(12,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(17,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(12,1)<2> ubTEMP1(1,16)<16;16,1>
-
- // NOTE:
- // Compare v0 to v6 to find the minimum.
- // Store the minimum for future use.
- //TODO - Find if MIN is needed.
- //cmp.l.f0.0 (16) null:w ubMEDIAN_TEMP(%1+0,0)<32;16,2> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
- //cmp.l.f1.0 (16) null:w ubMEDIAN_TEMP(%1+0,1)<32;16,2> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
- //(f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,0)<32;16,2>
- //(f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+0,1)<32;16,2>
- //(-f0.0) mov (16) ubCURR_MIN(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,0)<32;16,2>
- //(-f1.0) mov (16) ubCURR_MIN(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+6,1)<32;16,2>
-
- // MedianSwap(v5, v8) - U
- // MedianSwap(v4, v7) - U
- // MedianSwap(v5, v8) - V
- // MedianSwap(v4, v7) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(14,0)<32;16,2> ubMEDIAN_TEMP(17,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(16,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(14,1)<32;16,2> ubMEDIAN_TEMP(17,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(16,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(14,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
- mov (16) ubTEMP1(1,0)<1> ubMEDIAN_TEMP(14,1)<32;16,2>
- mov (16) ubTEMP1(1,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(14,0)<2> ubMEDIAN_TEMP(17,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(16,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(14,1)<2> ubMEDIAN_TEMP(17,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(16,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(17,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(16,0)<2> ubTEMP1(0,16)<16;16,1>
- (f1.0) mov (16) ubMEDIAN_TEMP(17,1)<2> ubTEMP1(1,0)<16;16,1>
- (f1.1) mov (16) ubMEDIAN_TEMP(16,1)<2> ubTEMP1(1,16)<16;16,1>
-
-// NOTE:
-// Compare v2 to v8 to find the maximum.
-// Store the maximum for future use.
- //TODO - Find if MAX is needed.
-// cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(%1+2,0)<32;16,2> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
-// cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(%1+2,1)<32;16,2> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
-//(f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,0)<32;16,2>
-//(f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+2,1)<32;16,2>
-//(-f0.0) mov (16) ubCURR_MAX(0,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,0)<32;16,2>
-//(-f1.0) mov (16) ubCURR_MAX(1,%2*16+0)<1> ubMEDIAN_TEMP(%1+8,1)<32;16,2>
-
-// MedianSwap(v3, v6) - U
-// MedianSwap(v1, v4) - U
-// MedianSwap(v3, v6) - V
-// MedianSwap(v1, v4) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(12,0)<32;16,2> ubMEDIAN_TEMP(15,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(10,0)<32;16,2> ubMEDIAN_TEMP(13,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(12,1)<32;16,2> ubMEDIAN_TEMP(15,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(10,1)<32;16,2> ubMEDIAN_TEMP(13,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(15,0)<2> ubMEDIAN_TEMP(12,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(10,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(15,1)<2> ubMEDIAN_TEMP(12,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(10,1)<32;16,2>
-
- // MedianSwap(v2,v5) - U
- // MedianSwap(v4,v7) - U
- // MedianSwap(v2,v5) - V
- // MedianSwap(v4,v7) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(11,0)<32;16,2> ubMEDIAN_TEMP(14,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(16,0)<32;16,2>
- cmp.g.f1.0 (16) null:w ubMEDIAN_TEMP(11,1)<32;16,2> ubMEDIAN_TEMP(14,1)<32;16,2>
- cmp.g.f1.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(16,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubMEDIAN_TEMP(14,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(16,0)<32;16,2>
- (f1.0) mov (16) ubMEDIAN_TEMP(11,1)<2> ubMEDIAN_TEMP(14,1)<32;16,2>
- (f1.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(16,1)<32;16,2>
-
- // MedianSwap(v4,v2) - U
- // MedianSwap(v4,v2) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
-
- mov (16) ubTEMP1(0,0)<1> ubMEDIAN_TEMP(13,0)<32;16,2>
- mov (16) ubTEMP1(0,16)<1> ubMEDIAN_TEMP(13,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(11,0)<2> ubTEMP1(0,0)<16;16,1>
- (f0.1) mov (16) ubMEDIAN_TEMP(11,1)<2> ubTEMP1(0,16)<16;16,1>
-
- // MedianSwap(v6,v4) - U
- // MedianSwap(v6,v4) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(15,0)<32;16,2> ubMEDIAN_TEMP(13,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(15,1)<32;16,2> ubMEDIAN_TEMP(13,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(15,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(15,1)<32;16,2>
-
- // MedianSwap(v4,v2) - U
- // MedianSwap(v4,v2) - V
- cmp.g.f0.0 (16) null:w ubMEDIAN_TEMP(13,0)<32;16,2> ubMEDIAN_TEMP(11,0)<32;16,2>
- cmp.g.f0.1 (16) null:w ubMEDIAN_TEMP(13,1)<32;16,2> ubMEDIAN_TEMP(11,1)<32;16,2>
-
- (f0.0) mov (16) ubMEDIAN_TEMP(13,0)<2> ubMEDIAN_TEMP(11,0)<32;16,2>
- (f0.1) mov (16) ubMEDIAN_TEMP(13,1)<2> ubMEDIAN_TEMP(11,1)<32;16,2>
-
-// Sobel Value calculation for the current pixel v4
-// v2 v1 v0
-// * * * <--- Different field - not used
-// v5 v4 v3
-// * * * <--- Different field - not used
-// v8 v7 v6
-//
-// Gx = -v0 - 2*v3 - v6 + v2 + 2*v5 + v8
-// Gy = v0 + 2*v1 + v2 - v6 - 2*v7 - v8
-//
-// Sobel = (|Gx| + |Gy|) >> 3
-
-//TODO - Change Later - rT
-add (1) a0.0:uw a0.0<0;1,0>:uw -128:uw
-
-// - 2 * v3
-mul (16) acc0.0<1>:w r[a0.0,64]<16;16,1>:ub -2:w
-// + v8
-mac (16) acc0.0<1>:w r[a0.0,132]<16;16,1>:ub 1:w
-// - v0
-mac (16) acc0.0<1>:w r[a0.0,0]<16;16,1>:ub -1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,128]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,4]<16;16,1>:ub 1:w
-// + 2 * v5
-mac (16) wSOBEL_X(0)<1> r[a0.0,68]<16;16,1>:ub 2:w
-// - 2 * v3
-mul (16) acc0.0<1>:w r[a0.0,96]<16;16,1>:ub -2:w
-// + v8
-mac (16) acc0.0<1>:w r[a0.0,164]<16;16,1>:ub 1:w
-// - v0
-mac (16) acc0.0<1>:w r[a0.0,32]<16;16,1>:ub -1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,160]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,36]<16;16,1>:ub 1:w
-// + 2 * v5
-mac (16) wSOBEL_X(1)<1> r[a0.0,100]<16;16,1>:ub 2:w
-// - 2 * v3
-mul (16) acc0.0<1>:w r[a0.0,128]<16;16,1>:ub -2:w
-// + v8
-mac (16) acc0.0<1>:w r[a0.0,196]<16;16,1>:ub 1:w
-// - v0
-mac (16) acc0.0<1>:w r[a0.0,64]<16;16,1>:ub -1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,192]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,68]<16;16,1>:ub 1:w
-// + 2 * v5
-mac (16) wSOBEL_X(2)<1> r[a0.0,132]<16;16,1>:ub 2:w
-// - 2 * v3
-mul (16) acc0.0<1>:w r[a0.0,160]<16;16,1>:ub -2:w
-// + v8
-mac (16) acc0.0<1>:w r[a0.0,228]<16;16,1>:ub 1:w
-// - v0
-mac (16) acc0.0<1>:w r[a0.0,96]<16;16,1>:ub -1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,224]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,100]<16;16,1>:ub 1:w
-// + 2 * v5
-mac (16) wSOBEL_X(3)<1> r[a0.0,164]<16;16,1>:ub 2:w
-
-// + 2 * v1
-mul (16) acc0.0<1>:w r[a0.0,2]<16;16,1>:ub 2:w
-// + v0
-mac (16) acc0.0<1>:w r[a0.0,0]<16;16,1>:ub 1:w
-// - v8
-mac (16) acc0.0<1>:w r[a0.0,132]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,4]<16;16,1>:ub 1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,128]<16;16,1>:ub -1:w
-// - 2 * v7
-mac (16) acc0.0<1>:w r[a0.0,130]<16;16,1>:ub -2:w
-
-add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(0)<16;16,1>
-
-shr (16) uwSOBEL(0)<1> acc0.0<16;16,1>:uw 3:uw
-// + 2 * v1
-mul (16) acc0.0<1>:w r[a0.0,34]<16;16,1>:ub 2:w
-// + v0
-mac (16) acc0.0<1>:w r[a0.0,32]<16;16,1>:ub 1:w
-// - v8
-mac (16) acc0.0<1>:w r[a0.0,164]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,36]<16;16,1>:ub 1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,160]<16;16,1>:ub -1:w
-// - 2 * v7
-mac (16) acc0.0<1>:w r[a0.0,162]<16;16,1>:ub -2:w
-
-add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(1)<16;16,1>
-
-shr (16) uwSOBEL(1)<1> acc0.0<16;16,1>:uw 3:uw
-// + 2 * v1
-mul (16) acc0.0<1>:w r[a0.0,66]<16;16,1>:ub 2:w
-// + v0
-mac (16) acc0.0<1>:w r[a0.0,64]<16;16,1>:ub 1:w
-// - v8
-mac (16) acc0.0<1>:w r[a0.0,196]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,68]<16;16,1>:ub 1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,192]<16;16,1>:ub -1:w
-// - 2 * v7
-mac (16) acc0.0<1>:w r[a0.0,194]<16;16,1>:ub -2:w
-
-add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(2)<16;16,1>
-
-shr (16) uwSOBEL(2)<1> acc0.0<16;16,1>:uw 3:uw
-// + 2 * v1
-mul (16) acc0.0<1>:w r[a0.0,98]<16;16,1>:ub 2:w
-// + v0
-mac (16) acc0.0<1>:w r[a0.0,96]<16;16,1>:ub 1:w
-// - v8
-mac (16) acc0.0<1>:w r[a0.0,228]<16;16,1>:ub -1:w
-// + v2
-mac (16) acc0.0<1>:w r[a0.0,100]<16;16,1>:ub 1:w
-// - v6
-mac (16) acc0.0<1>:w r[a0.0,224]<16;16,1>:ub -1:w
-// - 2 * v7
-mac (16) acc0.0<1>:w r[a0.0,226]<16;16,1>:ub -2:w
-
-add (16) acc0.0<1>:uw (abs)acc0.0<16;16,1>:w (abs)wSOBEL_X(3)<16;16,1>
-
-shr (16) uwSOBEL(3)<1> acc0.0<16;16,1>:uw 3:uw
-
-//Mov Median in CURBE_TEMP to free up temp space.
-mov (16) ubMEDIAN(0,0)<1> ubMEDIAN_TEMP(4,0)<16;16,1>
-mov (16) ubMEDIAN(0,16)<1> ubMEDIAN_TEMP(4,16)<16;16,1>
-mov (16) ubMEDIAN(0,32)<1> ubMEDIAN_TEMP(13,0)<16;16,1>
-mov (16) ubMEDIAN(0,48)<1> ubMEDIAN_TEMP(13,16)<16;16,1>
-
-// Find:
-// absDiff = abs(ubCurY - ubMedian)
-// Find the difference between pixel and median value.
-
-//Median is interleaved. So difference is also interleaved.
-
-//------------------------------------------------------------------------------------------
-//Process 16 U and 16 V pixels here and rest later.
-// first row - v0,v1,v2
-add (16) wDIFF(0)<1> r[a0.0,0]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-add (16) wDIFF(1)<1> r[a0.0,2]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-add (16) wDIFF(2)<1> r[a0.0,4]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-
-// second row - v3,v4,v5
-add (16) wDIFF(3)<1> r[a0.0,64]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-add (16) wDIFF(4)<1> r[a0.0,66]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-add (16) wDIFF(5)<1> r[a0.0,68]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-
-// third row - v6,v7,v8
-add (16) wDIFF(6)<1> r[a0.0,128]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-add (16) wDIFF(7)<1> r[a0.0,130]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-add (16) wDIFF(8)<1> r[a0.0,132]<16;16,1>:ub -ubMEDIAN(0,0)<16;16,1>
-// first row - v0,v1,v2
-add (16) wDIFF(9)<1> r[a0.0,32]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-add (16) wDIFF(10)<1> r[a0.0,34]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-add (16) wDIFF(11)<1> r[a0.0,36]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-
-// second row - v3,v4,v5
-add (16) wDIFF(12)<1> r[a0.0,96]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-add (16) wDIFF(13)<1> r[a0.0,98]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-add (16) wDIFF(14)<1> r[a0.0,100]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-
-// third row - v6,v7,v8
-add (16) wDIFF(15)<1> r[a0.0,160]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-add (16) wDIFF(16)<1> r[a0.0,162]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-add (16) wDIFF(17)<1> r[a0.0,164]<16;16,1>:ub -ubMEDIAN(0,16)<16;16,1>
-
-//TODO - Change Later - rT
-add (1) a0.0:uw a0.0<0;1,0>:uw 64:uw
-
-// Find sum of all absolute differences AND
-// maximum absolute difference for 16 U and 16 V here.
-//First 2 rows of 8x4
-//Compare 0-1, 2-3, 4-5, 6-7
-cmp.g.f0.0 (16) null:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
-cmp.g.f0.1 (16) null:uw (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
-cmp.g.f1.0 (16) null:uw (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
-cmp.g.f1.1 (16) null:uw (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
-
-//Calculate SAD
- add (16) acc0.0<1>:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(2)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(3)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(4)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(5)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(6)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(7)<16;16,1>
- add (16) uwSOAD(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF(8)<16;16,1>
-
-(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
-(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
-(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
-(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
-
-//------------
- //DIFF(0-7) is not needed here. Populate it.
- // first row - v0,v1,v2
- add (16) wDIFF(0)<1> r[a0.0,0]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
- add (16) wDIFF(1)<1> r[a0.0,2]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
- add (16) wDIFF(2)<1> r[a0.0,4]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
-
- // second row - v3,v4,v5
- add (16) wDIFF(3)<1> r[a0.0,64]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
- add (16) wDIFF(4)<1> r[a0.0,66]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
- add (16) wDIFF(5)<1> r[a0.0,68]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
-
- // third row - v6,v7
- add (16) wDIFF(6)<1> r[a0.0,128]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
- add (16) wDIFF(7)<1> r[a0.0,130]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
-//------------
-
-//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-//Compare Max(0,1,2,3) - Max(4,5,6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-
-//Compare Max(0,1,2,3,4,5,6,7) - 8
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
-(f0.0)sel (16) uwMAX_ABS_DIFF(0)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
-
-//------------
- //Load v8 - DIFF(8)
- add (16) wDIFF(8)<1> r[a0.0,132]<16;16,1>:ub -ubMEDIAN(1,0)<16;16,1>
-//------------
-//Compare 0-1, 2-3, 4-5, 6-7
-cmp.g.f0.0 (16) null:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
-cmp.g.f0.1 (16) null:uw (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
-cmp.g.f1.0 (16) null:uw (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
-cmp.g.f1.1 (16) null:uw (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
-
-//Calculate SAD
- add (16) acc0.0<1>:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(11)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(12)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(13)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(14)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(15)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(16)<16;16,1>
- add (16) uwSOAD(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF(17)<16;16,1>
-
-(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
-(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
-(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
-(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
-
-//------------
- //DIFF(0-7) is not needed here. Populate it.
- // first row - v0,v1,v2
- add (16) wDIFF(9)<1> r[a0.0,32]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
- add (16) wDIFF(10)<1> r[a0.0,34]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
- add (16) wDIFF(11)<1> r[a0.0,36]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
-
- // second row - v3,v4,v5
- add (16) wDIFF(12)<1> r[a0.0,96]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
- add (16) wDIFF(13)<1> r[a0.0,98]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
- add (16) wDIFF(14)<1> r[a0.0,100]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
-
- // third row - v6,v7
- add (16) wDIFF(15)<1> r[a0.0,160]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
- add (16) wDIFF(16)<1> r[a0.0,162]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
-//------------
-
-//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-//Compare Max(0,1,2,3) - Max(4,5,6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-
-//Compare Max(0,1,2,3,4,5,6,7) - 8
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
-(f0.0)sel (16) uwMAX_ABS_DIFF(1)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
-
-//------------
- //Load v8 - DIFF(8)
- add (16) wDIFF(17)<1> r[a0.0,164]<16;16,1>:ub -ubMEDIAN(1,16)<16;16,1>
-//------------
-
-//if ((sobel_edge_measure < m_SobelEdgeThreshold) && ((block_max-block_min) < m_LocalDiffThreshold))
-// if (sigma_mb_min > sigma)
-// sigma_mb_min = sigma;
-
-//NOTE: block_min is always zero as median is one of the value in 3x3 block. So no need o calculate it.
-// So just do -
-//if ((sobel_edge_measure < m_SobelEdgeThreshold) && ((block_max) < m_LocalDiffThreshold) && ( sigma < sigma_mb_min))
-// sigma_mb_min = sigma;
-
-//We are processing 32 bytes of U and 32 bytes of V - each of size 8x4.
-//Compare first 8 bytes with max possible (255).
-//Start above condition from second 8 bytes.
-
-//TODO - Change Later - rT
-// mov (1) pCUR_MIN_SOAD_8x4:uw 1752:uw //r54.24:ub
-
-//First row of 8x4
- cmp.l.f0.0 (16) null:uw uwSOBEL(0)<16;16,1> r55.30<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(0)<16;16,1> r55.28<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(0)<16;16,1> 255:uw
-(f0.0) sel (16) uwSOBEL(0)<1> uwSOAD(0)<16;16,1> 255:uw
-
-//Second row of 8x4
- cmp.l.f0.0 (16) null:uw uwSOBEL(1)<16;16,1> r55.30<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(1)<16;16,1> r55.28<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(1)<16;16,1> uwSOBEL(0)<16;16,1>
-(f0.0) mov (16) uwSOBEL(0)<1> uwSOAD(1)<16;16,1>
-
-// Find sum of all absolute differences AND
-// maximum absolute difference for 16 U and 16 V here.
-//Second 2 rows of 8x4
-//Compare 0-1, 2-3, 4-5, 6-7
-cmp.g.f0.0 (16) null:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
-cmp.g.f0.1 (16) null:uw (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
-cmp.g.f1.0 (16) null:uw (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
-cmp.g.f1.1 (16) null:uw (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
-
-//Calculate SAD
- add (16) acc0.0<1>:uw (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(2)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(3)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(4)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(5)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(6)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(7)<16;16,1>
- add (16) uwSOAD(0)<1> acc0.0<16;16,1>:uw (abs)wDIFF(8)<16;16,1>
-
-(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(0)<16;16,1> (abs)wDIFF(1)<16;16,1>
-(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(2)<16;16,1> (abs)wDIFF(3)<16;16,1>
-(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(4)<16;16,1> (abs)wDIFF(5)<16;16,1>
-(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(6)<16;16,1> (abs)wDIFF(7)<16;16,1>
-
-//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-//Compare Max(0,1,2,3) - Max(4,5,6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-
-//Compare Max(0,1,2,3,4,5,6,7) - 8
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
-(f0.0)sel (16) uwMAX_ABS_DIFF(0)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(8)<16;16,1>
-//Compare 0-1, 2-3, 4-5, 6-7
-cmp.g.f0.0 (16) null:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
-cmp.g.f0.1 (16) null:uw (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
-cmp.g.f1.0 (16) null:uw (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
-cmp.g.f1.1 (16) null:uw (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
-
-//Calculate SAD
- add (16) acc0.0<1>:uw (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(11)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(12)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(13)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(14)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(15)<16;16,1>
- add (16) acc0.0<1>:uw acc0.0<16;16,1>:uw (abs)wDIFF(16)<16;16,1>
- add (16) uwSOAD(1)<1> acc0.0<16;16,1>:uw (abs)wDIFF(17)<16;16,1>
-
-(f0.0) sel (16) uwCURBE_TEMP(0)<1> (abs)wDIFF(9)<16;16,1> (abs)wDIFF(10)<16;16,1>
-(f0.1) sel (16) uwCURBE_TEMP(1)<1> (abs)wDIFF(11)<16;16,1> (abs)wDIFF(12)<16;16,1>
-(f1.0) sel (16) uwCURBE_TEMP(2)<1> (abs)wDIFF(13)<16;16,1> (abs)wDIFF(14)<16;16,1>
-(f1.1) sel (16) uwCURBE_TEMP(3)<1> (abs)wDIFF(15)<16;16,1> (abs)wDIFF(16)<16;16,1>
-
-//Compare Max(0,1) - Max(2,3), Max(4,5) - Max(6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-cmp.g.f0.1 (16) null:uw uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(1)<16;16,1>
-(f0.1)sel (16) uwCURBE_TEMP(2)<1> uwCURBE_TEMP(2)<16;16,1> uwCURBE_TEMP(3)<16;16,1>
-
-//Compare Max(0,1,2,3) - Max(4,5,6,7)
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-(f0.0)sel (16) uwCURBE_TEMP(0)<1> uwCURBE_TEMP(0)<16;16,1> uwCURBE_TEMP(2)<16;16,1>
-
-//Compare Max(0,1,2,3,4,5,6,7) - 8
-cmp.g.f0.0 (16) null:uw uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
-(f0.0)sel (16) uwMAX_ABS_DIFF(1)<1> uwCURBE_TEMP(0)<16;16,1> (abs)wDIFF(17)<16;16,1>
-
-//Third row of 8x4
- cmp.l.f0.0 (16) null:uw uwSOBEL(2)<16;16,1> r55.30<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(0)<16;16,1> r55.28<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(0)<16;16,1> uwSOBEL(0)<16;16,1>
-(f0.0) mov (16) uwSOBEL(0)<1> uwSOAD(0)<16;16,1>
-
-//Fourth row of 8x4
- cmp.l.f0.0 (16) null:uw uwSOBEL(3)<16;16,1> r55.30<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwMAX_ABS_DIFF(1)<16;16,1> r55.28<0;2,1>:ub
-(f0.0) cmp.l.f0.0 (16) null:uw uwSOAD(1)<16;16,1> uwSOBEL(0)<16;16,1>
-(f0.0) mov (16) uwSOBEL(0)<1> uwSOAD(1)<16;16,1>
-
- cmp.l.f0.0 (8) null:uw uwSOBEL(0,0)<8;8,1> uwSOBEL(0,8)<8;8,1>
-(f0.0) sel (8) uwSOBEL(0)<1> uwSOBEL(0,0)<8;8,1> uwSOBEL(0,8)<8;8,1>
-
- cmp.l.f0.0 (4) null:uw uwSOBEL(0,0)<4;4,1> uwSOBEL(0,4)<4;4,1>
-(f0.0) sel (4) uwSOBEL(0)<1> uwSOBEL(0,0)<4;4,1> uwSOBEL(0,4)<4;4,1>
-
- cmp.l.f0.0 (2) null:uw uwSOBEL(0,0)<2;2,1> uwSOBEL(0,2)<2;2,1>
-(f0.0) sel (2) r[a0.1,0]<1>:uw uwSOBEL(0,0)<2;2,1> uwSOBEL(0,2)<2;2,1>
-
-
-
-
-
-
-// End of common.inc
-
-mov (1) ip:ud r9.7<0;1,0>:d
-
-
-.end_code
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/PL3_DN_422CP.g4a b/src/shaders/post_processing/gen7/PL3_DN_422CP.g4a
deleted file mode 100644
index af8e438..0000000
--- a/src/shaders/post_processing/gen7/PL3_DN_422CP.g4a
+++ /dev/null
@@ -1,566 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 117 // Total instruction count
-// 1 // Total kernel count
-
-.kernel PL3_DN_422CP
-.code
-
-
-
-// FileName: DN_PL_Core.asm
-// Author: Vivek Kumar
-// Description: Tasks for DN only case (16x8 block) for planar format
-
-
-
-// FileName: DN.asm
-// Author: Vivek Kumar
-// Description: Tasks for DN only case (16x8 block)
-
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: DNDI.inc
-// Author: Vivek Kumar
-// Description: Include file for DN, DI and DNDI
-// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
-
-
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//====================== Binding table (Explicit To DNDI)=========================================
-
-
-.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
-.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
-.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
-
-
-.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
-.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
-.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
-.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
-.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
-.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
-.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
-.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
-
-//r45
-//Use r45 as message header, so no need to "mov" the data.
-
-.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
-.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-// Message response (UV Copy); Use buffer 5
-.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Temp GRFs: For 42X to 422 Conversion
-.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
-.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
- // Message descriptor for sampler read
- // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
- // 1 (header present 1) 0 11 (SIMD32/64 mode)
- // 1000 (message type) 0000 (DI state index)
- // 00000000 (binding table index - set later)
- // = 0x040b8000
-
-
-// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
-
-
-//---------------------------------------------------------------------------
-// VDI Return Data format
-//---------------------------------------------------------------------------
-// Defines for DI enabled
-
-
-// Defines for DI disabled
-
-
-
-// FileName: DNDI_Command.asm
-// Author: Vivek Kumar
-// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
-
-// Prepare the DNDI send command
-mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
-mov (1) mwMSGHDR_DNDI(1,4)<1> r9.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
-mov (1) mwMSGHDR_DNDI(1,12)<1> r9.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
-
-send (8) udDNDI_RESP(0)<1> r18 0x2 0x45E8003:ud
-
-// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
-// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
-mov (2) r9.0<1>:w uwDNDI_RESP(4,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
-
-
-
-// FileName: DN_Hist_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DN history data to statistics surface
-
-// Write denoise history to memory
-mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
-
-
- mov (2) mudMSGHDR_HIST(1)<1> udDNDI_RESP(4,0)<2;2,1> // Move denoise history to MRF (4x2)
-
-
-shr (2) r27.0<1>:ud r9.0<2;2,1>:w 2:w // X,Y origin / 4
-add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
-mov (1) r27.2<1>:ud 0x10003:ud { NoDDChk } // block width and height
-
-mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
-send (8) null<1>:d r22 0x5 0x40A8021:ud
-
-
-
-// FileName: DNDI_Enc_Stats_Save.asm
-// Author: Vivek Kumar
-// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write encoder statistics to memory
-//Currently enable this only on Gen6 validation
-mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
-mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
-
-shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
-mul (1) acc0.1<1>:ud r9.1<0;1,0>:w 3:w // Y origin * 3
-shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
-mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x50003:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
-add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
-
-
- //Data block for Encoder Statistics
- //----------------------------------------------------
- //| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
- //----------------------------------------------------
- //| BNE | X | X | X | X |
- //----------------------------------------------------
- //| X | SVCM | X |
- //----------------------------------------------------
- //| SHCM | STAD | X |
- //----------------------------------------------------
- //| X | X |
- //----------------------------------------------------
- //| X | SVCM | X |
- //----------------------------------------------------
- //| SHCM | STAD | X |
- //----------------------------------------------------
- mov (1) mubMSGHDR_ENC_STATS(1,0)<1> ubDNDI_RESP(4,8)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
- mov (1) muwMSGHDR_ENC_STATS(1,3)<1> uwDNDI_RESP(4,11)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) muwMSGHDR_ENC_STATS(1,4)<1> uwDNDI_RESP(4,12)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (1) muwMSGHDR_ENC_STATS(1,9)<1> uwDNDI_RESP(4,8)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) muwMSGHDR_ENC_STATS(1,10)<1> uwDNDI_RESP(4,9)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
-
-
-send (8) null<1>:d r24 0x5 0x40A8021:ud
-
-
-
-// FileName: DN_Load_UV_IMC3_16x8.asm
-// Author: Vivek Kumar
-// Description: Read UV for 16x8 block through DATAPORT
-
-
-
-// FileName: UVCopy_Load_16x8.asm
-// Author: Vivek Kumar
-// Description: Read UV for 16x8 block through DATAPORT
-
-//CHANGE : Read extra UV data to convert to 422. -rT
-//we are reading extra data in ALL cases irrespective of whether upsampling is reqd or not later on, to keep things simple.
-
-
- add (2) r27.0<1>:d r9.0<2;2,1>:w r4.4<2;2,1>:w // Source Y Block origin
- asr (2) r27.0<1>:d r27.0<2;2,1>:d 1:w { NoDDClr } // U/V block origin should be half of Y's
- mov (1) r27.2<1>:ud 0x40007:ud { NoDDChk } // U/V block width and height (8x5)
- mov (8) r36<1>:ud r27.0<8;8,1>:ud
- mov (8) r38<1>:ud r27.0<8;8,1>:ud
- send (8) udDNDI_UV_RESP(0)<1> r36 0x4 0x2290001:ud
- send (8) udDNDI_UV_RESP(2)<1> r38 0x4 0x2290002:ud
-
- //Update Header for Save
- mov (1) mudMSGHDR_UCOPY(0,2)<1> 0x30007:ud // U block width and height (8x4)
- mov (1) mudMSGHDR_VCOPY(0,2)<1> 0x30007:ud // V block width and height (8x4)
-
-
-
-// FileName: DN_Save_Y_16x8.asm
-// Author: Vivek Kumar
-// Description: Save one 16x8 blocks of Y channel of DN output for reference
-
-
-mov (8) mudDN_Y_OUT(0,0)<1> r0<8;8,1>:ud // message header
-mov (2) mudDN_Y_OUT(0,0)<1> r9.0<2;2,1>:w { NoDDClr } // X origin
-mov (1) mudDN_Y_OUT(0,2)<1> 0x7000F:ud { NoDDChk } // block width and height (16x8)
-
-//send out data through data port
-send (8) null<1>:d mudDN_Y_OUT 0x5 0xA0A8018:ud
-
-
-
-// FileName: DN_Save_UV_IMC3_16x8.asm
-// Author: Vivek Kumar
-// Description: Save UV for 16x8 block through DATAPORT
-
-
-
-// FileName: UVCopy_Save_16x8.asm
-// Author: Vivek Kumar
-// Description: Save UV for 16x8 block through DATAPORT
-
-
-//Reuse the header from Load component
-//Header is modified at the end of load - to be usable for save.
-
-
- mov (8) mudMSGHDR_UCOPY(1)<1> udDNDI_UV_RESP(0)<8;8,1>
- mov (8) mudMSGHDR_VCOPY(1)<1> udDNDI_UV_RESP(2)<8;8,1>
- send (4) null<1>:d r36 0x5 0x40A8019:ud
- send (4) null<1>:d r38 0x5 0x40A801A:ud
-
-
-
-// FileName: DN_Upsample_UV_IMC3_16x8.asm
-// Author: Tatiya, Rupesh
-// Description: Upconvert 420 UV to 422
-
-
-
-// FileName: UVCopy_Upsample_UV_16x8.asm
-// Author: Tatiya, Rupesh
-// Description: Convert 42X UV to 422 - to be used for IECP.
-
-
- avg.sat (16) uwDNDI_UVCOPY_TEMP(0) ubDNDI_UV_RESP(0,0)<0;8,1> ubDNDI_UV_RESP(0,0)<8;8,1>
- avg.sat (16) uwDNDI_UVCOPY_TEMP(4) ubDNDI_UV_RESP(2,0)<0;8,1> ubDNDI_UV_RESP(2,0)<8;8,1>
- avg.sat (16) uwDNDI_UVCOPY_TEMP(1) ubDNDI_UV_RESP(0,8)<0;8,1> ubDNDI_UV_RESP(0,8)<8;8,1>
- avg.sat (16) uwDNDI_UVCOPY_TEMP(5) ubDNDI_UV_RESP(2,8)<0;8,1> ubDNDI_UV_RESP(2,8)<8;8,1>
- avg.sat (16) uwDNDI_UVCOPY_TEMP(2) ubDNDI_UV_RESP(0,16)<0;8,1> ubDNDI_UV_RESP(0,16)<8;8,1>
- avg.sat (16) uwDNDI_UVCOPY_TEMP(6) ubDNDI_UV_RESP(2,16)<0;8,1> ubDNDI_UV_RESP(2,16)<8;8,1>
- avg.sat (16) uwDNDI_UVCOPY_TEMP(3) ubDNDI_UV_RESP(0,24)<0;8,1> ubDNDI_UV_RESP(0,24)<8;8,1>
- avg.sat (16) uwDNDI_UVCOPY_TEMP(7) ubDNDI_UV_RESP(2,24)<0;8,1> ubDNDI_UV_RESP(2,24)<8;8,1>
-
- mov (16) ubDNDI_RESP(5, 1)<2> ubDNDI_UVCOPY_TEMP(0,0)<32;16,2> { NoDDClr }
- mov (16) ubDNDI_RESP(5, 0)<2> ubDNDI_UVCOPY_TEMP(4,0)<32;16,2> { NoDDChk }
- mov (16) ubDNDI_RESP(5, 33)<2> ubDNDI_UVCOPY_TEMP(1,0)<32;16,2> { NoDDClr }
- mov (16) ubDNDI_RESP(5, 32)<2> ubDNDI_UVCOPY_TEMP(5,0)<32;16,2> { NoDDChk }
- mov (16) ubDNDI_RESP(5, 65)<2> ubDNDI_UVCOPY_TEMP(2,0)<32;16,2> { NoDDClr }
- mov (16) ubDNDI_RESP(5, 64)<2> ubDNDI_UVCOPY_TEMP(6,0)<32;16,2> { NoDDChk }
- mov (16) ubDNDI_RESP(5, 97)<2> ubDNDI_UVCOPY_TEMP(3,0)<32;16,2> { NoDDClr }
- mov (16) ubDNDI_RESP(5, 96)<2> ubDNDI_UVCOPY_TEMP(7,0)<32;16,2> { NoDDChk }
-
-
-
-// FileName: DN_Save_422CP_16x8.asm
-// Author: Vivek Kumar
-// Description: Save one 16x8 blocks of DN output to the color pipe in 4-2-2 format
-
-
-.declare mubMSGHDR_DN_OUT_2 Base=r36.0 ElementSize=1 Type=ub
-
-
-mov (8) mudMSGHDR_DN_OUT(0)<1> r0<8;8,1>:ud // message header
-shl (1) mdMSGHDR_DN_OUT(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } // X origin * 2 (422 output)
-mov (1) mdMSGHDR_DN_OUT(0,1)<1> r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
-mov (1) mudMSGHDR_DN_OUT(0,2)<1> 0x7000F:ud { NoDDClr, NoDDChk } // block width and height (16x8)
-
-//M0.3 - 0 - CP Enable, 1 - Area of Interest, 3:2 Message Format(TBD), 4:3 - Ignored, 31:5 CP state pointer
-//Compose area-of-interest bit + color pipe state pointer
-or (1) mudMSGHDR_DN_OUT(0,3)<1> r2.4<0;1,0>:ud r9.26<0;1,0>:b { NoDDChk }
-
-// First 8 x 8 Block
- mov (8) mubMSGHDR_DN_OUT(1)<2> ubDNDI_RESP(0,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT(1,16)<2> ubDNDI_RESP(0,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT(2)<2> ubDNDI_RESP(0,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT(2,16)<2> ubDNDI_RESP(0,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT(3)<2> ubDNDI_RESP(0,64)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT(3,16)<2> ubDNDI_RESP(0,80)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT(4)<2> ubDNDI_RESP(0,96)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT(4,16)<2> ubDNDI_RESP(0,112)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT(1,1)<4> ubDNDI_RESP(5,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(1,17)<4> ubDNDI_RESP(5,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT(1,3)<4> ubDNDI_RESP(5,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(1,19)<4> ubDNDI_RESP(5,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(2,1)<4> ubDNDI_RESP(5,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(2,17)<4> ubDNDI_RESP(5,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT(2,3)<4> ubDNDI_RESP(5,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(2,19)<4> ubDNDI_RESP(5,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(3,1)<4> ubDNDI_RESP(5,65)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(3,17)<4> ubDNDI_RESP(5,81)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT(3,3)<4> ubDNDI_RESP(5,64)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(3,19)<4> ubDNDI_RESP(5,80)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(4,1)<4> ubDNDI_RESP(5,97)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(4,17)<4> ubDNDI_RESP(5,113)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT(4,3)<4> ubDNDI_RESP(5,96)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT(4,19)<4> ubDNDI_RESP(5,112)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-// Second 8 x 8 Block
-mov (8) r36.0<1>:ud r31.0<8;8,1>:ud
-add (1) r36.0<1>:ud r36.0<0;1,0>:w 0x10:w
-
- mov (8) mubMSGHDR_DN_OUT_2(1)<2> ubDNDI_RESP(0,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT_2(1,16)<2> ubDNDI_RESP(0,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT_2(2)<2> ubDNDI_RESP(0,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT_2(2,16)<2> ubDNDI_RESP(0,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT_2(3)<2> ubDNDI_RESP(0,72)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT_2(3,16)<2> ubDNDI_RESP(0,88)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT_2(4)<2> ubDNDI_RESP(0,104)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DN_OUT_2(4,16)<2> ubDNDI_RESP(0,120)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT_2(1,1)<4> ubDNDI_RESP(5,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(1,17)<4> ubDNDI_RESP(5,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT_2(1,3)<4> ubDNDI_RESP(5,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(1,19)<4> ubDNDI_RESP(5,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(2,1)<4> ubDNDI_RESP(5,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(2,17)<4> ubDNDI_RESP(5,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT_2(2,3)<4> ubDNDI_RESP(5,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(2,19)<4> ubDNDI_RESP(5,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(3,1)<4> ubDNDI_RESP(5,73)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(3,17)<4> ubDNDI_RESP(5,89)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT_2(3,3)<4> ubDNDI_RESP(5,72)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(3,19)<4> ubDNDI_RESP(5,88)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(4,1)<4> ubDNDI_RESP(5,105)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(4,17)<4> ubDNDI_RESP(5,121)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DN_OUT_2(4,3)<4> ubDNDI_RESP(5,104)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DN_OUT_2(4,19)<4> ubDNDI_RESP(5,120)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-//send out data through data port
-send (8) null<1>:d r31.0 0x5 0xA0A801B:ud
-send (8) null<1>:d r36.0 0x5 0xA0A801B:ud
-
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
-
-
-.end_code
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/PL3_DN_PL3.g4a b/src/shaders/post_processing/gen7/PL3_DN_PL3.g4a
deleted file mode 100644
index 1d97614..0000000
--- a/src/shaders/post_processing/gen7/PL3_DN_PL3.g4a
+++ /dev/null
@@ -1,447 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 44 // Total instruction count
-// 1 // Total kernel count
-
-.kernel PL3_DN_PL3
-.code
-
-
-
-// FileName: DN_PL_Core.asm
-// Author: Vivek Kumar
-// Description: Tasks for DN only case (16x8 block) for planar format
-
-
-
-// FileName: DN.asm
-// Author: Vivek Kumar
-// Description: Tasks for DN only case (16x8 block)
-
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: DNDI.inc
-// Author: Vivek Kumar
-// Description: Include file for DN, DI and DNDI
-// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
-
-
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//====================== Binding table (Explicit To DNDI)=========================================
-
-
-.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
-.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
-.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
-
-
-.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
-.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
-.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
-.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
-.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
-.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
-.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
-.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
-
-//r45
-//Use r45 as message header, so no need to "mov" the data.
-
-.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
-.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-// Message response (UV Copy); Use buffer 5
-.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Temp GRFs: For 42X to 422 Conversion
-.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
-.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
- // Message descriptor for sampler read
- // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
- // 1 (header present 1) 0 11 (SIMD32/64 mode)
- // 1000 (message type) 0000 (DI state index)
- // 00000000 (binding table index - set later)
- // = 0x040b8000
-
-
-// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
-
-
-//---------------------------------------------------------------------------
-// VDI Return Data format
-//---------------------------------------------------------------------------
-// Defines for DI enabled
-
-
-// Defines for DI disabled
-
-
-
-// FileName: DNDI_Command.asm
-// Author: Vivek Kumar
-// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
-
-// Prepare the DNDI send command
-mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
-mov (1) mwMSGHDR_DNDI(1,4)<1> r9.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
-mov (1) mwMSGHDR_DNDI(1,12)<1> r9.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
-
-send (8) udDNDI_RESP(0)<1> r18 0x2 0x45E8003:ud
-
-// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
-// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
-mov (2) r9.0<1>:w uwDNDI_RESP(4,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
-
-
-
-// FileName: DN_Hist_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DN history data to statistics surface
-
-// Write denoise history to memory
-mov (8) r27<1>:ud r0.0<8;8,1>:ud // message header
-
-
- mov (2) mudMSGHDR_HIST(1)<1> udDNDI_RESP(4,0)<2;2,1> // Move denoise history to MRF (4x2)
-
-
-shr (2) r27.0<1>:ud r9.0<2;2,1>:w 2:w // X,Y origin / 4
-add (1) r27.0<1>:ud r27.0<0;1,0>:ud r1.12<0;1,0>:uw { NoDDClr } // Add pitch to X origin
-mov (1) r27.2<1>:ud 0x10003:ud { NoDDChk } // block width and height
-
-mov (8) mudMSGHDR_HIST(0)<1> r27.0<8;8,1>:ud
-send (8) null<1>:d r22 0x5 0x40A8021:ud
-
-
-
-// FileName: DNDI_Enc_Stats_Save.asm
-// Author: Vivek Kumar
-// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write encoder statistics to memory
-//Currently enable this only on Gen6 validation
-mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
-mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
-
-shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
-mul (1) acc0.1<1>:ud r9.1<0;1,0>:w 3:w // Y origin * 3
-shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
-mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x50003:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
-add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
-
-
- //Data block for Encoder Statistics
- //----------------------------------------------------
- //| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
- //----------------------------------------------------
- //| BNE | X | X | X | X |
- //----------------------------------------------------
- //| X | SVCM | X |
- //----------------------------------------------------
- //| SHCM | STAD | X |
- //----------------------------------------------------
- //| X | X |
- //----------------------------------------------------
- //| X | SVCM | X |
- //----------------------------------------------------
- //| SHCM | STAD | X |
- //----------------------------------------------------
- mov (1) mubMSGHDR_ENC_STATS(1,0)<1> ubDNDI_RESP(4,8)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
- mov (1) muwMSGHDR_ENC_STATS(1,3)<1> uwDNDI_RESP(4,11)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) muwMSGHDR_ENC_STATS(1,4)<1> uwDNDI_RESP(4,12)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (1) muwMSGHDR_ENC_STATS(1,9)<1> uwDNDI_RESP(4,8)<0;1,0> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) muwMSGHDR_ENC_STATS(1,10)<1> uwDNDI_RESP(4,9)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
-
-
-send (8) null<1>:d r24 0x5 0x40A8021:ud
-
-
-
-// FileName: DN_Load_UV_IMC3_16x8.asm
-// Author: Vivek Kumar
-// Description: Read UV for 16x8 block through DATAPORT
-
-
-
-// FileName: UVCopy_Load_16x8.asm
-// Author: Vivek Kumar
-// Description: Read UV for 16x8 block through DATAPORT
-
-//CHANGE : Read extra UV data to convert to 422. -rT
-//we are reading extra data in ALL cases irrespective of whether upsampling is reqd or not later on, to keep things simple.
-
-
- add (2) r27.0<1>:d r9.0<2;2,1>:w r4.4<2;2,1>:w // Source Y Block origin
- asr (2) r27.0<1>:d r27.0<2;2,1>:d 1:w { NoDDClr } // U/V block origin should be half of Y's
- mov (1) r27.2<1>:ud 0x40007:ud { NoDDChk } // U/V block width and height (8x5)
- mov (8) r36<1>:ud r27.0<8;8,1>:ud
- mov (8) r38<1>:ud r27.0<8;8,1>:ud
- send (8) udDNDI_UV_RESP(0)<1> r36 0x4 0x2290001:ud
- send (8) udDNDI_UV_RESP(2)<1> r38 0x4 0x2290002:ud
-
- //Update Header for Save
- mov (1) mudMSGHDR_UCOPY(0,2)<1> 0x30007:ud // U block width and height (8x4)
- mov (1) mudMSGHDR_VCOPY(0,2)<1> 0x30007:ud // V block width and height (8x4)
-
-
-
-// FileName: DN_Save_Y_16x8.asm
-// Author: Vivek Kumar
-// Description: Save one 16x8 blocks of Y channel of DN output for reference
-
-
-mov (8) mudDN_Y_OUT(0,0)<1> r0<8;8,1>:ud // message header
-mov (2) mudDN_Y_OUT(0,0)<1> r9.0<2;2,1>:w { NoDDClr } // X origin
-mov (1) mudDN_Y_OUT(0,2)<1> 0x7000F:ud { NoDDChk } // block width and height (16x8)
-
-//send out data through data port
-send (8) null<1>:d mudDN_Y_OUT 0x5 0xA0A8018:ud
-
-
-
-// FileName: DN_Save_UV_IMC3_16x8.asm
-// Author: Vivek Kumar
-// Description: Save UV for 16x8 block through DATAPORT
-
-
-
-// FileName: UVCopy_Save_16x8.asm
-// Author: Vivek Kumar
-// Description: Save UV for 16x8 block through DATAPORT
-
-
-//Reuse the header from Load component
-//Header is modified at the end of load - to be usable for save.
-
-
- mov (8) mudMSGHDR_UCOPY(1)<1> udDNDI_UV_RESP(0)<8;8,1>
- mov (8) mudMSGHDR_VCOPY(1)<1> udDNDI_UV_RESP(2)<8;8,1>
- send (4) null<1>:d r36 0x5 0x40A8019:ud
- send (4) null<1>:d r38 0x5 0x40A801A:ud
-
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
-
-
-.end_code
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/PL_DI_422CP.g4a b/src/shaders/post_processing/gen7/PL_DI_422CP.g4a
deleted file mode 100644
index 4543287..0000000
--- a/src/shaders/post_processing/gen7/PL_DI_422CP.g4a
+++ /dev/null
@@ -1,483 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 87 // Total instruction count
-// 1 // Total kernel count
-
-.kernel PL_DI_422CP
-.code
-
-
-
-// FileName: DI.asm
-// Author: Vivek Kumar
-// Description: Tasks for DI only case (16x4 block)
-
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: DNDI.inc
-// Author: Vivek Kumar
-// Description: Include file for DN, DI and DNDI
-// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
-
-
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//====================== Binding table (Explicit To DNDI)=========================================
-
-
-.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
-.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
-.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
-
-
-.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
-.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
-.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
-.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
-.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
-.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
-.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
-.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
-
-//r45
-//Use r45 as message header, so no need to "mov" the data.
-
-.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
-.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-// Message response (UV Copy); Use buffer 5
-.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Temp GRFs: For 42X to 422 Conversion
-.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
-.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
- // Message descriptor for sampler read
- // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
- // 1 (header present 1) 0 11 (SIMD32/64 mode)
- // 1000 (message type) 0000 (DI state index)
- // 00000000 (binding table index - set later)
- // = 0x040b8000
-
-
-// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
-
-
-//---------------------------------------------------------------------------
-// VDI Return Data format
-//---------------------------------------------------------------------------
-// Defines for DI enabled
-
-
-// Defines for DI disabled
-
-
-
-// FileName: DNDI_Command.asm
-// Author: Vivek Kumar
-// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
-
-// Prepare the DNDI send command
-mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
-mov (1) mwMSGHDR_DNDI(1,4)<1> r9.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
-mov (1) mwMSGHDR_DNDI(1,12)<1> r9.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
-
-send (8) udDNDI_RESP(0)<1> r18 0x2 0x4AE8003:ud
-
-// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
-// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
-mov (2) r9.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
-
-
-
-// FileName: DI_STMM_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write STMM to memory
-mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
-mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
-
-shr (1) mudMSGHDR_STMM(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
-mov (1) mudMSGHDR_STMM(0,1)<1> r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
-mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
-
-send (8) null<1>:d r20 0x5 0x40A8021:ud
-
-
-
-// FileName: DNDI_Enc_Stats_Save.asm
-// Author: Vivek Kumar
-// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write encoder statistics to memory
-//Currently enable this only on Gen6 validation
-mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
-mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
-
-shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
-mul (1) acc0.1<1>:ud r9.1<0;1,0>:w 3:w // Y origin * 3
-shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
-mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
-add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
-
-
- //Data block for Encoder Statistics
- //----------------------------------------------------
- //| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
- //----------------------------------------------------
- //| BNE | MCNT | FCNT | TCNT | X | X | X | X |
- //----------------------------------------------------
- //| DcTpT | SVCM | DcBpT | DcTpB |
- //----------------------------------------------------
- //| SHCM | STAD | DcTcB | DcBpB |
- //----------------------------------------------------
- mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
-
-
-send (8) null<1>:d r24 0x5 0x40A8021:ud
-
-
-
-// FileName: DI_Save_422CP_16x4.asm
-// Author: Vivek Kumar
-// Description: Save two 16x4 blocks of DI output in 422 format to Color Pipe (IECP)
-
-
-.declare mubMSGHDR_DI_OUT1_1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mubMSGHDR_DI_OUT1_2 Base=r21.0 ElementSize=1 Type=ub
-
-
-.declare mubMSGHDR_DI_OUT2_1 Base=r24.0 ElementSize=1 Type=ub
-
-
-.declare mubMSGHDR_DI_OUT2_2 Base=r27.0 ElementSize=1 Type=ub
-
-
-mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
-shl (1) r27.0<1>:ud r9.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
-mov (1) r27.1<1>:ud r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
-mov (1) r27.2<1>:ud 0x3000F:ud { NoDDClr, NoDDChk } // Block width and height (16x8)
-
-//M0.3 - 0 - CP Enable, 1 - Area of Interest, 3:2 Message Format(TBD), 4:3 - Ignored, 31:5 CP state pointer
-//Compose area-of-interest bit + color pipe state pointer
-or (1) r27.3<1>:ud r2.4<0;1,0>:ud r9.26<0;1,0>:b { NoDDChk }
-
-//prepare the message headers
-mov (8) r18.0<1>:ud r27<8;8,1>:ud
-mov (8) r24.0<1>:ud r27<8;8,1>:ud
-
-
-// Pack 2nd field Y; First 8x4 block
- mov (8) mubMSGHDR_DI_OUT1_1(1)<2> ubDNDI_RESP(0,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_1(1,16)<2> ubDNDI_RESP(0,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_1(2)<2> ubDNDI_RESP(0,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_1(2,16)<2> ubDNDI_RESP(0,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
-// Pack 2nd field U, V; First 8x4 block
- mov (4) mubMSGHDR_DI_OUT1_1(1,1)<4> ubDNDI_RESP(2,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(1,17)<4> ubDNDI_RESP(2,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT1_1(1,3)<4> ubDNDI_RESP(2,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(1,19)<4> ubDNDI_RESP(2,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(2,1)<4> ubDNDI_RESP(2,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(2,17)<4> ubDNDI_RESP(2,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT1_1(2,3)<4> ubDNDI_RESP(2,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_1(2,19)<4> ubDNDI_RESP(2,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-
-// Pack 2nd field Y; Second 8x4 block
-mov (8) r21.0<1>:ud r18.0<8;8,1>:ud
-add (1) r21.0<1>:ud r21.0<0;1,0>:w 0x10:w
-
- mov (8) mubMSGHDR_DI_OUT1_2(1)<2> ubDNDI_RESP(0,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_2(1,16)<2> ubDNDI_RESP(0,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_2(2)<2> ubDNDI_RESP(0,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT1_2(2,16)<2> ubDNDI_RESP(0,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
-// Pack 2nd field U, V; Second 8x4 block
- mov (4) mubMSGHDR_DI_OUT1_2(1,1)<4> ubDNDI_RESP(2,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(1,17)<4> ubDNDI_RESP(2,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT1_2(1,3)<4> ubDNDI_RESP(2,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(1,19)<4> ubDNDI_RESP(2,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(2,1)<4> ubDNDI_RESP(2,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(2,17)<4> ubDNDI_RESP(2,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT1_2(2,3)<4> ubDNDI_RESP(2,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT1_2(2,19)<4> ubDNDI_RESP(2,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-send (8) null<1>:d r18.0 0x5 0x60A801B:ud
-send (8) null<1>:d r21.0 0x5 0x60A801B:ud
-
-// Pack 1st field Y; 1st 8x4 block
- mov (8) mubMSGHDR_DI_OUT2_1(1)<2> ubDNDI_RESP(4,0)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_1(1,16)<2> ubDNDI_RESP(4,16)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_1(2)<2> ubDNDI_RESP(4,32)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_1(2,16)<2> ubDNDI_RESP(4,48)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
-// Pack 1st field U,V; 1st 8x4 block
- mov (4) mubMSGHDR_DI_OUT2_1(1,1)<4> ubDNDI_RESP(6,1)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(1,17)<4> ubDNDI_RESP(6,17)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT2_1(1,3)<4> ubDNDI_RESP(6,0)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(1,19)<4> ubDNDI_RESP(6,16)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(2,1)<4> ubDNDI_RESP(6,33)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(2,17)<4> ubDNDI_RESP(6,49)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT2_1(2,3)<4> ubDNDI_RESP(6,32)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_1(2,19)<4> ubDNDI_RESP(6,48)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-// Pack 1st field Y; 2nd 8x4 block
-mov (8) r27.0<1>:ud r24.0<8;8,1>:ud
-add (1) r27.0<1>:ud r27.0<0;1,0>:w 0x10:w
-
- mov (8) mubMSGHDR_DI_OUT2_2(1)<2> ubDNDI_RESP(4,8)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_2(1,16)<2> ubDNDI_RESP(4,24)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_2(2)<2> ubDNDI_RESP(4,40)<8;8,1> { NoDDClr } // copy line of Y directly to memory as optimization
- mov (8) mubMSGHDR_DI_OUT2_2(2,16)<2> ubDNDI_RESP(4,56)<8;8,1> { NoDDClr, NoDDChk } // copy line of Y directly to memory as optimization
-
-// Pack 1st field U, V; 2nd 8x4 block
- mov (4) mubMSGHDR_DI_OUT2_2(1,1)<4> ubDNDI_RESP(6,9)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(1,17)<4> ubDNDI_RESP(6,25)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT2_2(1,3)<4> ubDNDI_RESP(6,8)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(1,19)<4> ubDNDI_RESP(6,24)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(2,1)<4> ubDNDI_RESP(6,41)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(2,17)<4> ubDNDI_RESP(6,57)<8;4,2> { NoDDClr, NoDDChk } // copy line of U directly to memory as optimization
-
- mov (4) mubMSGHDR_DI_OUT2_2(2,3)<4> ubDNDI_RESP(6,40)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
- mov (4) mubMSGHDR_DI_OUT2_2(2,19)<4> ubDNDI_RESP(6,56)<8;4,2> { NoDDChk } // copy line of V directly to memory as optimization
-
-send (8) null<1>:d r24.0 0x5 0x60A801E:ud
-send (8) null<1>:d r27.0 0x5 0x60A801E:ud
-
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
-
-
-.end_code
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/PL_DI_PA.g4a b/src/shaders/post_processing/gen7/PL_DI_PA.g4a
deleted file mode 100644
index 12cb9b5..0000000
--- a/src/shaders/post_processing/gen7/PL_DI_PA.g4a
+++ /dev/null
@@ -1,421 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 57 // Total instruction count
-// 1 // Total kernel count
-
-.kernel PL_DI_PA
-.code
-
-
-
-// FileName: DI.asm
-// Author: Vivek Kumar
-// Description: Tasks for DI only case (16x4 block)
-
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: DNDI.inc
-// Author: Vivek Kumar
-// Description: Include file for DN, DI and DNDI
-// Inputs: DI_ENABLE, DN_ENABLE, DN_PLANAR, DN_PACKED
-
-
-
-
-// End of common.inc
-
-
-//Interface:
-//Static Parameters:
-//r1
-
-
-//====================== Binding table (Explicit To DNDI)=========================================
-
-
-.declare mudMSGHDR_DNDI Base=r18 ElementSize=4 Type=ud
-.declare mdMSGHDR_DNDI Base=r18 ElementSize=4 Type=d
-.declare mwMSGHDR_DNDI Base=r18 ElementSize=2 Type=w
-
-
-.declare mudMSGHDR_STMM Base=r20 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_HIST Base=r22 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_ENC_STATS Base=r24 ElementSize=4 Type=ud
-.declare muwMSGHDR_ENC_STATS Base=r24 ElementSize=2 Type=uw
-.declare mubMSGHDR_ENC_STATS Base=r24 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=ud
-.declare mdMSGHDR_DN_OUT Base=r31.0 ElementSize=4 Type=d
-.declare mubMSGHDR_DN_OUT Base=r31.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=ud
-.declare mdMSGHDR_UVCOPY Base=r36 ElementSize=4 Type=d
-.declare mudMSGHDR_UCOPY Base=r36 ElementSize=4 Type=ud
-.declare mudMSGHDR_VCOPY Base=r38 ElementSize=4 Type=ud
-
-
-.declare mudMSGHDR_DI_OUT1 Base=r18.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT1 Base=r18.0 ElementSize=1 Type=ub
-
-
-.declare mudMSGHDR_DI_OUT2 Base=r23.0 ElementSize=4 Type=ud
-.declare mubMSGHDR_DI_OUT2 Base=r23.0 ElementSize=1 Type=ub
-
-//r45
-//Use r45 as message header, so no need to "mov" the data.
-
-.declare mudDN_Y_OUT Base=r45.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-// Message response (Denoised & DI-ed pixels & statistics); Use buffer 5
-.declare udDNDI_RESP Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare uwDNDI_RESP Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare ubDNDI_RESP Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-// Message response (UV Copy); Use buffer 5
-.declare udDNDI_UV_RESP Base=r58.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare ubDNDI_UV_RESP Base=r58.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Temp GRFs: For 42X to 422 Conversion
-.declare uwDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw //8 GRFs
-.declare ubDNDI_UVCOPY_TEMP Base=r10.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub //8 GRFs
-//---------------------------------------------------------------------------
-// Message descriptors
-//---------------------------------------------------------------------------
-// Extended message descriptor
- // Message descriptor for sampler read
- // = 000 0010 (message len 2) 00000 (resp len - set later, 12 or 5 or 11)
- // 1 (header present 1) 0 11 (SIMD32/64 mode)
- // 1000 (message type) 0000 (DI state index)
- // 00000000 (binding table index - set later)
- // = 0x040b8000
-
-
-// Attention: The Message Length is The Number of GRFs with Data Only, without the Header
-
-
-//---------------------------------------------------------------------------
-// VDI Return Data format
-//---------------------------------------------------------------------------
-// Defines for DI enabled
-
-
-// Defines for DI disabled
-
-
-
-// FileName: DNDI_Command.asm
-// Author: Vivek Kumar
-// Description: Sends a message to the VDI to process one DN (16x8) or DNDI (16x4) block
-
-// Prepare the DNDI send command
-mov (8) mudMSGHDR_DNDI(0)<1> r0.0<8;8,1>:ud // message header
-mov (1) mwMSGHDR_DNDI(1,4)<1> r9.0<0;1,0>:w { NoDDClr } // horizontal origin // Do we need to add offset here? -vK
-mov (1) mwMSGHDR_DNDI(1,12)<1> r9.1<0;1,0>:w { NoDDChk } // vertical origin // Can these 2 be combined? - vK
-
-send (8) udDNDI_RESP(0)<1> r18 0x2 0x4AE8003:ud
-
-// On Gen6, with VDI walker, use the XY pair returned rather than programmed above
-// VDI_RETURNED_XY is ordered XY in case of walker enables and the same as programmed in case of walker disabled
-mov (2) r9.0<1>:w uwDNDI_RESP(9,14)<2;2,1> // horizontal/Vertial origin in W.14 and W.15
-
-
-
-// FileName: DI_STMM_Save.asm
-// Author: Vivek Kumar
-// Description: Saves DI STMM Data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write STMM to memory
-mov (8) mudMSGHDR_STMM(0)<1> r0.0<8;8,1>:ud // message header
-mov (8) mudMSGHDR_STMM(1)<1> udDNDI_RESP(8,0) // Move STMM to MRF
-
-shr (1) mudMSGHDR_STMM(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } // X origin / 2
-mov (1) mudMSGHDR_STMM(0,1)<1> r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Y origin
-mov (1) mudMSGHDR_STMM(0,2)<1> 0x30007:ud { NoDDChk } // block width and height (8x4)
-
-send (8) null<1>:d r20 0x5 0x40A8021:ud
-
-
-
-// FileName: DNDI_Enc_Stats_Save.asm
-// Author: Vivek Kumar
-// Description: Saves Encoder Statistics data to statistics surface in case of DI enabled (for 16x4 block)
-
-// Write encoder statistics to memory
-//Currently enable this only on Gen6 validation
-mov (8) mudMSGHDR_ENC_STATS(1)<1> 0x0:ud // Init payload MRF
-mov (8) mudMSGHDR_ENC_STATS(0)<1> r0.0<8;8,1>:ud // message header
-
-shr (1) mudMSGHDR_ENC_STATS(0,0)<1> r9.0<0;1,0>:w 1:w { NoDDClr } //enable the flag after testing on si { NoDDClr } // X origin / 2
-mul (1) acc0.1<1>:ud r9.1<0;1,0>:w 3:w // Y origin * 3
-shr (1) mudMSGHDR_ENC_STATS(0,1)<1> acc0.1<0;1,0>:ud 2:w { NoDDClr, NoDDChk } //enable the flag after testing on si { NoDDClr, NoDDChk } // Y origin * 3/4
-mov (1) mudMSGHDR_ENC_STATS(0,2)<1> 0x20007:ud { NoDDChk } //enable the flag after testing on si { NoDDChk } // block width and height (8x3)
-add (2) mudMSGHDR_ENC_STATS(0,0)<1> mudMSGHDR_ENC_STATS(0,0)<2;2,1> r1.12<2;2,1>:uw // Add pitch to X,Y origin
-
-
- //Data block for Encoder Statistics
- //----------------------------------------------------
- //| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Bytes
- //----------------------------------------------------
- //| BNE | MCNT | FCNT | TCNT | X | X | X | X |
- //----------------------------------------------------
- //| DcTpT | SVCM | DcBpT | DcTpB |
- //----------------------------------------------------
- //| SHCM | STAD | DcTcB | DcBpB |
- //----------------------------------------------------
- mov (1) mudMSGHDR_ENC_STATS(1,0)<1> udDNDI_RESP(9,1)<0;1,0> { NoDDClr } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,3)<2> udDNDI_RESP(9,3)<2;2,1> { NoDDClr, NoDDChk } // Move encoder statistics to MRF
- mov (2) mudMSGHDR_ENC_STATS(1,2)<2> udDNDI_RESP(9,5)<2;2,1> { NoDDChk } // Move encoder statistics to MRF
-
-
-send (8) null<1>:d r24 0x5 0x40A8021:ud
-
-
-
-// FileName: DI_Save_PA_16x4.asm
-// Author: Vivek Kumar
-// Description: Save two 16x4 blocks of DI output in Packed format
-
-
-add (4) a0.4<1>:uw r2.28<4;4,1>:ub 608:w // Initial Y,U,V offset in YUV422 block; it starts at m20
-
-mov (8) r27.0<1>:ud r0.0<8;8,1>:ud
-shl (1) r27.0<1>:d r9.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be doubled
-mov (1) r27.1<1>:d r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin
-mov (1) r27.2<1>:ud 0x3001F:ud { NoDDChk } // Block width and height (32x8)
-
-//prepare the message headers
-mov (8) r18.0<1>:ud r27<8;8,1>:ud
-mov (8) r23.0<1>:ud r27<8;8,1>:ud
-
-// Pack 2nd field Y
- mov (16) r[a0.4, 0]<2> ubDNDI_RESP(0,0) { NoDDClr }
- mov (16) r[a0.4, 32]<2> ubDNDI_RESP(0,16) { NoDDClr }
- mov (16) r[a0.4, 64]<2> ubDNDI_RESP(0,32) { NoDDClr }
- mov (16) r[a0.4, 96]<2> ubDNDI_RESP(0,48) { NoDDClr }
-// Pack 2nd field U
- mov (8) r[a0.5, 0]<4> ubDNDI_RESP(2,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 32]<4> ubDNDI_RESP(2,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 64]<4> ubDNDI_RESP(2,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 96]<4> ubDNDI_RESP(2,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
-// Pack 2nd field V
- mov (8) r[a0.6, 0]<4> ubDNDI_RESP(2,0)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 32]<4> ubDNDI_RESP(2,16)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 64]<4> ubDNDI_RESP(2,32)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 96]<4> ubDNDI_RESP(2,48)<16;8,2> { NoDDChk } //Vpixels
-
-// Pack 1st field Y
- mov (16) r[a0.4, 160]<2> ubDNDI_RESP(4,0) { NoDDClr }
- mov (16) r[a0.4, 192]<2> ubDNDI_RESP(4,16) { NoDDClr }
- mov (16) r[a0.4, 224]<2> ubDNDI_RESP(4,32) { NoDDClr }
- mov (16) r[a0.4, 256]<2> ubDNDI_RESP(4,48) { NoDDClr }
-// Pack 1st field U
- mov (8) r[a0.5, 160]<4> ubDNDI_RESP(6,1)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 192]<4> ubDNDI_RESP(6,17)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 224]<4> ubDNDI_RESP(6,33)<16;8,2> { NoDDClr, NoDDChk } //U pixels
- mov (8) r[a0.5, 256]<4> ubDNDI_RESP(6,49)<16;8,2> { NoDDClr, NoDDChk } //U pixels
-// Pack 1st field V
- mov (8) r[a0.6, 160]<4> ubDNDI_RESP(6,0)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 192]<4> ubDNDI_RESP(6,16)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 224]<4> ubDNDI_RESP(6,32)<16;8,2> { NoDDChk } //Vpixels
- mov (8) r[a0.6, 256]<4> ubDNDI_RESP(6,48)<16;8,2> { NoDDChk } //Vpixels
-
-//save the previous frame
-send (8) null<1>:d r18.0 0x5 0xA0A801B:ud
-
-//save the current frame
-send (8) null<1>:d r23.0 0x5 0xA0A801E:ud
-
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
-
-
-.end_code
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/RGB_to_YUV.g4a b/src/shaders/post_processing/gen7/RGB_to_YUV.g4a
deleted file mode 100644
index 09602c5..0000000
--- a/src/shaders/post_processing/gen7/RGB_to_YUV.g4a
+++ /dev/null
@@ -1,932 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- */
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// Module name: YUV_to_RGB.asm
-//
-// Convert YUV to RGB, handle it by 16x4 block
-//
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare bBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare bBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare bBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare bBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-//Pointer to mask reg
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
-//Msg payload buffers; upto 4 full-size messages can be written
-
-//Unnecessary to use the MSGPayLoad, So it is temporiarily used for conversion of YUV->RGB
-
-.declare fBUFFER_R Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-.declare fBUFFER_G Base=r30.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-.declare fBUFFER_B Base=r32.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-.declare fBUFFER_Y Base=r36.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-.declare fBUFFER_U Base=r38.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-.declare fBUFFER_V Base=r40.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-.declare wTempY Base=r42.0 ElementSize=2 Type=w
-.declare wTempU Base=r44.0 ElementSize=2 Type=w
-.declare wTempV Base=r46.0 ElementSize=2 Type=w
-
-.declare ubTempY Base=r42.0 ElementSize=1 Type=ub
-.declare ubTempU Base=r44.0 ElementSize=1 Type=ub
-.declare ubTempV Base=r46.0 ElementSize=1 Type=ub
-
- // the r17 register (nTEMP0) is originally defined from "Common.inc"
- // instead of re-defining a nTEMP0 here, we use "SAVE_RGB" suffix for its naming
-
- .declare uwTemp0 Base=r17.0 ElementSize=2 Type=uw
-
-
-//_SAVE_INC_
- // ITU-R conversion, Now we are using ITU-R conversion
- // Y = 0.299R + 0.587G + 0.114B
- // U = -0.169R - 0.331G + 0.499B + 128
- // V = 0.499R - 0.418G - 0.0813B+ 128
-
- // At the save module we have all 8 address sub-registers available.
- // So we will use PING-PONG type of scheme to save the data using
- // pointers pBUF_CHNL_TOP_8x4 and pBUF_CHNL_BOT_8x4. This will help
- // reduce dependency. - rT
-
- //wBUFF_CHNL_PTR points to either buffer 0 or buffer 4.
- //Add appropriate offsets to get pointers for all buffers (1,2,3 or 5).
- //Offsets are zero for buffer 0 and buffer 4.
- //It always uses the YUVA layout.
-//for BUFFER_0
- mov (4) a0.0<1>:uw r22.0<4;4,1>:uw
- mov (4) a0.4<1>:uw r22.0<4;4,1>:uw
- // YUV uses the a0.5,a0.6 and a0.4 as the indirect-register
- // Y = a0.5, U=a0.6, V=a0.4
- // if channel swap?
- // This means that it should be BGRX(B is the LSB) or RGBX
- // 1 means that it is BGRX.
- and.nz.f0.0 null<1>:w r2.0<0;1,0>:uw 0x01:w
- // pointer swap
- (f0.0) mov (1) uwTemp0<1> a0.0:uw
- (f0.0) mov (1) a0.0:uw a0.1:uw
- (f0.0) mov (1) a0.1:uw uwTemp0<0;1,0>
-
-//the first line in the block 0
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 1]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 17]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 1]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 17]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 1]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 17]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 0]<1>:uw 0:uw
- mov (16) r[a0.6, 0]<1>:uw 0:uw
- mov (16) r[a0.4, 0]<1>:uw 0:uw
- mov (16) r[a0.5,1]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,1]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,1]<2>:ub ubTempV(0, 0)<32;8,4>
-
-
-//the second line in the block 0
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 33]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 49]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 33]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 49]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 33]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 49]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 32]<1>:uw 0:uw
- mov (16) r[a0.6, 32]<1>:uw 0:uw
- mov (16) r[a0.4, 32]<1>:uw 0:uw
- mov (16) r[a0.5,33]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,33]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,33]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//the third line in the block 0
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 65]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 81]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 65]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 81]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 65]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 81]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 64]<1>:uw 0:uw
- mov (16) r[a0.6, 64]<1>:uw 0:uw
- mov (16) r[a0.4, 64]<1>:uw 0:uw
- mov (16) r[a0.5,65]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,65]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,65]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//the fourth line in the block 0
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 97]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 113]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 97]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 113]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 97]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 113]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 96]<1>:uw 0:uw
- mov (16) r[a0.6, 96]<1>:uw 0:uw
- mov (16) r[a0.4, 96]<1>:uw 0:uw
- mov (16) r[a0.5,97]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,97]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,97]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//for Buffer_1
-
- add (8) a0.0<1>:uw a0.0<8;8,1>:uw 512:uw
-//the first line in the block 1
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 1]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 17]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 1]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 17]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 1]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 17]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 0]<1>:uw 0:uw
- mov (16) r[a0.6, 0]<1>:uw 0:uw
- mov (16) r[a0.4, 0]<1>:uw 0:uw
- mov (16) r[a0.5,1]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,1]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,1]<2>:ub ubTempV(0, 0)<32;8,4>
-
-
-//the second line in the block 1
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 33]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 49]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 33]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 49]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 33]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 49]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 32]<1>:uw 0:uw
- mov (16) r[a0.6, 32]<1>:uw 0:uw
- mov (16) r[a0.4, 32]<1>:uw 0:uw
- mov (16) r[a0.5,33]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,33]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,33]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//the third line in the block 1
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 65]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 81]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 65]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 81]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 65]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 81]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 64]<1>:uw 0:uw
- mov (16) r[a0.6, 64]<1>:uw 0:uw
- mov (16) r[a0.4, 64]<1>:uw 0:uw
- mov (16) r[a0.5,65]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,65]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,65]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//the fourth line in the block 1
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 97]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 113]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 97]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 113]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 97]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 113]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 96]<1>:uw 0:uw
- mov (16) r[a0.6, 96]<1>:uw 0:uw
- mov (16) r[a0.4, 96]<1>:uw 0:uw
- mov (16) r[a0.5,97]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,97]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,97]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//for Buffer_2
- add (8) a0.0<1>:uw a0.0<8;8,1>:uw 512:uw
-//the first line in the block 2
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 1]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 17]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 1]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 17]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 1]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 17]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 0]<1>:uw 0:uw
- mov (16) r[a0.6, 0]<1>:uw 0:uw
- mov (16) r[a0.4, 0]<1>:uw 0:uw
- mov (16) r[a0.5,1]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,1]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,1]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//the second line in the block 2
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 33]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 49]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 33]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 49]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 33]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 49]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 32]<1>:uw 0:uw
- mov (16) r[a0.6, 32]<1>:uw 0:uw
- mov (16) r[a0.4, 32]<1>:uw 0:uw
- mov (16) r[a0.5,33]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,33]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,33]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//the third line in the block 2
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 65]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 81]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 65]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 81]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 65]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 81]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 64]<1>:uw 0:uw
- mov (16) r[a0.6, 64]<1>:uw 0:uw
- mov (16) r[a0.4, 64]<1>:uw 0:uw
- mov (16) r[a0.5,65]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,65]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,65]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//the fourth line in the block 2
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 97]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 113]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 97]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 113]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 97]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 113]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 96]<1>:uw 0:uw
- mov (16) r[a0.6, 96]<1>:uw 0:uw
- mov (16) r[a0.4, 96]<1>:uw 0:uw
- mov (16) r[a0.5,97]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,97]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,97]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//for Buffer_3
- add (8) a0.0<1>:uw a0.0<8;8,1>:uw 512:uw
-//the first line in the block 3
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 1]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 17]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 1]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 17]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 1]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 17]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 0]<1>:uw 0:uw
- mov (16) r[a0.6, 0]<1>:uw 0:uw
- mov (16) r[a0.4, 0]<1>:uw 0:uw
- mov (16) r[a0.5,1]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,1]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,1]<2>:ub ubTempV(0, 0)<32;8,4>
-
-
-//the second line in the block 3
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 33]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 49]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 33]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 49]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 33]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 49]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 32]<1>:uw 0:uw
- mov (16) r[a0.6, 32]<1>:uw 0:uw
- mov (16) r[a0.4, 32]<1>:uw 0:uw
- mov (16) r[a0.5,33]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,33]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,33]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//the third line in the block 3
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 65]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 81]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 65]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 81]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 65]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 81]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 64]<1>:uw 0:uw
- mov (16) r[a0.6, 64]<1>:uw 0:uw
- mov (16) r[a0.4, 64]<1>:uw 0:uw
- mov (16) r[a0.5,65]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,65]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,65]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//the fourth line in the block 3
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 97]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 113]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 97]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 113]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 97]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 113]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 96]<1>:uw 0:uw
- mov (16) r[a0.6, 96]<1>:uw 0:uw
- mov (16) r[a0.4, 96]<1>:uw 0:uw
- mov (16) r[a0.5,97]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,97]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,97]<2>:ub ubTempV(0, 0)<32;8,4>
-
diff --git a/src/shaders/post_processing/gen7/Save_AVS_NV12.g4a b/src/shaders/post_processing/gen7/Save_AVS_NV12.g4a
deleted file mode 100644
index 74a109a..0000000
--- a/src/shaders/post_processing/gen7/Save_AVS_NV12.g4a
+++ /dev/null
@@ -1,573 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 131 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// Module name: Save_AVS_NV12.asm
-//
-// Save NV12 420 frame data block of size 16x16
-//
-// To save 16x16 block (16x16 bytes of Y and 16x8 bytes of interleaved UV), we need 2 send instructions with of size 16x16 and 16x8 each.
-// ---------------
-// | 16x16 |
-// | YUYV |
-// ---------------
-// | 16x8 UV |
-// ---------------
-
-//-----------------------------------------------------------------
-//The layout of data is as follows:
-//mMSGHDR0 : Y data header (16x16)
-//mubMSGPAYLOAD0 : Y data payload (8 GRFs)
-//mMSGHDR1 : U data header (16x8)
-//mubMSGPAYLOAD1 : U data payload (4 GRFs)
-//------------------------------------------------------------------
-
-
-
-// Module name: Save.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
-//Msg payload buffers; upto 4 full-size messages can be written
-
-
-.declare mudMSGPAYLOAD0 Base=r29.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD1 Base=r38.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD2 Base=r47.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD3 Base=r56.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-
-.declare muwMSGPAYLOAD0 Base=r29.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD1 Base=r38.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD2 Base=r47.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD3 Base=r56.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-
-.declare mubMSGPAYLOAD0 Base=r29.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD1 Base=r38.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD2 Base=r47.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD3 Base=r56.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD4 Base=r32.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD5 Base=r41.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD6 Base=r50.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD7 Base=r59.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-
-
- // the r17 register (nTEMP0) is originally defined from "Common.inc"
- // instead of re-defining a nTEMP0 here, we use "SAVE_RGB" suffix for its naming
-
- .declare uwTemp0 Base=r17.0 ElementSize=2 Type=uw
-
-
-//_SAVE_INC_
-
-
- // At the save module we have all 8 address sub-registers available.
- // So we will use PING-PONG type of scheme to save the data using
- // pointers pBUF_CHNL_TOP_8x4 and pBUF_CHNL_BOT_8x4. This will help
- // reduce dependency. - rT
-
- //wBUFF_CHNL_PTR points to either buffer 0 or buffer 4.
- //Add appropriate offsets to get pointers for all buffers (1,2,3 or 5).
- //Offsets are zero for buffer 0 and buffer 4.
- add (4) a0.0:uw r22.0<4;4,1>:w 0:uw
- add (4) a0.4:uw r22.0<4;4,1>:w 512:uw
-
- //Set up header for Y,U and V data
- mov (8) r28<1>:ud r27<8;8,1>:ud
- mov (8) r37<1>:ud r27<8;8,1>:ud
-
- mov (2) r28.0<1>:d r9.0<2;2,1>:w { NoDDClr } //ORI Y (LUMA) = ORI
- mov (1) r37.0<1>:d r9.0<0;1,0>:w { NoDDClr } //H ORI (CHROMA) = H ORI
- shr (1) r37.1<1>:d r9.1<0;1,0>:w 1:w { NoDDClr, NoDDChk } //V ORI (CHROMA) = V ORI/2
-
- mov (1) r28.2<1>:ud 0xF000F:ud { NoDDChk } // Y Block width and height (16x16)
- mov (1) r37.2<1>:ud 0x7000F:ud { NoDDChk } // UV Block width and height(16x8)
-
-// Unscramble, and pack data directly to MRFs
-
-// Data 16x16 block is divided as -
-// ---------
-// | 0 |
-// ---------
-// | 1 |
-// ---------
-// | 2 |
-// ---------
-// | 3 |
-// ---------
-// All sub-blocks are of size 16x4
-// 0: ubBUFFER_0
-// 1: ubBUFFER_1, ubBUFFER_0+16
-// 2: ubBUFFER_2
-// 3: ubBUFFER_3, ubBUFFER_2+16
-
- //Y Rounding 16x4 top part
- add.sat (16) r[a0.1,0]<1>:uw r[a0.1,0]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,32]<1>:uw r[a0.1,32]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,64]<1>:uw r[a0.1,64]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,96]<1>:uw r[a0.1,96]<16;16,1>:uw 0x0080:uw
-
- // U Averaging and Rounding, 8x2 top part
- add.sat (8) r[a0.2,0]<2>:uw r[a0.2,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.2,64]<2>:uw r[a0.2,64]<16;8,2>:uw 0x0080:uw
- // V Averaging and Rounding, 8x2 top part
- add.sat (8) r[a0.0,0]<2>:uw r[a0.0,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.0,64]<2>:uw r[a0.0,64]<16;8,2>:uw 0x0080:uw
-
- add (4) a0.0:uw r22.0<4;4,1>:w 1024:uw //Update Buffer 2 pointers
-
- //Y Rounding, 16x4 bottom part
- add.sat (16) r[a0.5,0]<1>:uw r[a0.5,0]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,32]<1>:uw r[a0.5,32]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,64]<1>:uw r[a0.5,64]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,96]<1>:uw r[a0.5,96]<16;16,1>:uw 0x0080:uw
-
- // U Averaging and Rounding, 8x2 bottom part
- add.sat (8) r[a0.6,0]<2>:uw r[a0.6,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.6,64]<2>:uw r[a0.6,64]<16;8,2>:uw 0x0080:uw
- // V Averaging and Rounding, 8x2 bottom part
- add.sat (8) r[a0.4,0]<2>:uw r[a0.4,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.4,64]<2>:uw r[a0.4,64]<16;8,2>:uw 0x0080:uw
-
- add (4) a0.4:uw r22.0<4;4,1>:w 1536:uw //Update Buffer 3 pointers
-
- //Y Rounding 16x4 top part
- add.sat (16) r[a0.1,0]<1>:uw r[a0.1,0]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,32]<1>:uw r[a0.1,32]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,64]<1>:uw r[a0.1,64]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,96]<1>:uw r[a0.1,96]<16;16,1>:uw 0x0080:uw
-
- // U Averaging and Rounding, 8x2 top part
- add.sat (8) r[a0.2,0]<2>:uw r[a0.2,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.2,64]<2>:uw r[a0.2,64]<16;8,2>:uw 0x0080:uw
- // V Averaging and Rounding, 8x2 top part
- add.sat (8) r[a0.0,0]<2>:uw r[a0.0,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.0,64]<2>:uw r[a0.0,64]<16;8,2>:uw 0x0080:uw
-
- //Y Rounding, 16x4 bottom part
- add.sat (16) r[a0.5,0]<1>:uw r[a0.5,0]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,32]<1>:uw r[a0.5,32]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,64]<1>:uw r[a0.5,64]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,96]<1>:uw r[a0.5,96]<16;16,1>:uw 0x0080:uw
-
- // U Averaging and Rounding, 8x2 bottom part
- add.sat (8) r[a0.6,0]<2>:uw r[a0.6,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.6,64]<2>:uw r[a0.6,64]<16;8,2>:uw 0x0080:uw
- // V Averaging and Rounding, 8x2 bottom part
- add.sat (8) r[a0.4,0]<2>:uw r[a0.4,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.4,64]<2>:uw r[a0.4,64]<16;8,2>:uw 0x0080:uw
-
- // restore pBUF_CHNL_TOP_8x4 and pBUF_CHNL_BOT_8x4 registers
- add (4) a0.0:uw r22.0<4;4,1>:w 0:uw
- add (4) a0.4:uw r22.0<4;4,1>:w 512:uw
-
-//Buffer 0
-//Move Y to msg payload
- mov (16) mubMSGPAYLOAD0(0,0)<1> r[a0.1, 1]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(0,16)<1> r[a0.1, 33]<32;16,2>:ub { NoDDChk }
- mov (16) mubMSGPAYLOAD0(1,0)<1> r[a0.1, 65]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(1,16)<1> r[a0.1, 97]<32;16,2>:ub { NoDDChk }
-
-//Move U to msg payload
- mov (8) mubMSGPAYLOAD1(0,0)<2> r[a0.2, 1]<32;8,4>:ub { NoDDClr }
- mov (8) mubMSGPAYLOAD1(0,16)<2> r[a0.2, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
-
-//Move V to msg payload
- mov (8) mubMSGPAYLOAD1(0,1)<2> r[a0.0, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD1(0,17)<2> r[a0.0, 65]<32;8,4>:ub { NoDDChk }
-
- add (4) a0.0:uw r22.0<4;4,1>:w 1024:uw //Update Buffer 2 pointers
-
-//Buffer 1
- mov (16) mubMSGPAYLOAD0(2,0)<1> r[a0.5, 1]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(2,16)<1> r[a0.5, 33]<32;16,2>:ub { NoDDChk }
- mov (16) mubMSGPAYLOAD0(3,0)<1> r[a0.5, 65]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(3,16)<1> r[a0.5, 97]<32;16,2>:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(1,0)<2> r[a0.6, 1]<32;8,4>:ub { NoDDClr }
- mov (8) mubMSGPAYLOAD1(1,16)<2> r[a0.6, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(1,1)<2> r[a0.4, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD1(1,17)<2> r[a0.4, 65]<32;8,4>:ub { NoDDChk }
-
- add (4) a0.4:uw r22.0<4;4,1>:w 1536:uw //Update Buffer 3 pointers
-
-//Buffer 2
- mov (16) mubMSGPAYLOAD0(4,0)<1> r[a0.1, 1]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(4,16)<1> r[a0.1, 33]<32;16,2>:ub { NoDDChk }
- mov (16) mubMSGPAYLOAD0(5,0)<1> r[a0.1, 65]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(5,16)<1> r[a0.1, 97]<32;16,2>:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(2,0)<2> r[a0.2, 1]<32;8,4>:ub { NoDDClr }
- mov (8) mubMSGPAYLOAD1(2,16)<2> r[a0.2, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(2,1)<2> r[a0.0, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD1(2,17)<2> r[a0.0, 65]<32;8,4>:ub { NoDDChk }
-
-//Buffer 3
- mov (16) mubMSGPAYLOAD0(6,0)<1> r[a0.5, 1]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(6,16)<1> r[a0.5, 33]<32;16,2>:ub { NoDDChk }
- mov (16) mubMSGPAYLOAD0(7,0)<1> r[a0.5, 65]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(7,16)<1> r[a0.5, 97]<32;16,2>:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(3,0)<2> r[a0.6, 1]<32;8,4>:ub { NoDDClr }
- mov (8) mubMSGPAYLOAD1(3,16)<2> r[a0.6, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(3,1)<2> r[a0.4, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD1(3,17)<2> r[a0.4, 65]<32;8,4>:ub { NoDDChk }
-//===========================================================================
-
-send (1) null<1>:d r28 0x5 0x120A8018:ud
-send (1) null<1>:d r37 0x5 0xA0A8019:ud
diff --git a/src/shaders/post_processing/gen7/Save_AVS_PA.g4a b/src/shaders/post_processing/gen7/Save_AVS_PA.g4a
deleted file mode 100644
index d1f23eb..0000000
--- a/src/shaders/post_processing/gen7/Save_AVS_PA.g4a
+++ /dev/null
@@ -1,647 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 174 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// Module name: Save_AVS_PA.asm
-//
-// Save PA 422 frame data block of size 16x16
-//
-// To save 16x16 block (32x16 bytes of YUYV) we need 2 send instructions with of size 16x16 each.
-// -------------------------------
-// | 16x16 | 16x16 |
-// | YUYV | YUYV |
-// -------------------------------
-// these 2 sends are replaced by 8 32x2 sends to improve performance
-
-
-
-// Module name: Save.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
-//Msg payload buffers; upto 4 full-size messages can be written
-
-
-.declare mudMSGPAYLOAD0 Base=r29.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD1 Base=r38.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD2 Base=r47.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD3 Base=r56.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-
-.declare muwMSGPAYLOAD0 Base=r29.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD1 Base=r38.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD2 Base=r47.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD3 Base=r56.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-
-.declare mubMSGPAYLOAD0 Base=r29.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD1 Base=r38.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD2 Base=r47.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD3 Base=r56.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD4 Base=r32.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD5 Base=r41.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD6 Base=r50.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD7 Base=r59.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-
-
- // the r17 register (nTEMP0) is originally defined from "Common.inc"
- // instead of re-defining a nTEMP0 here, we use "SAVE_RGB" suffix for its naming
-
- .declare uwTemp0 Base=r17.0 ElementSize=2 Type=uw
-
-
-//_SAVE_INC_
-
-
- //wBUFF_CHNL_PTR points to buffer 0.
- //Add appropriate offsets to get pointers for all buffers (1,2,3).
- //Offset is zero for buffer 0.
- add (4) a0.0:uw r22.0<4;4,1>:w 0:uw
-
- //Set DEST pointers according to output packing i.e. YUYV, YVYU, UYVY, VYUY
- add (4) a0.4<1>:w r2.28<4;4,1>:ub 928:uw
-
- shl (1) r27.0<1>:d r9.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be 2 times
- mov (1) r27.1<1>:d r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin (1st quadrant)
- mov (1) r27.2<1>:ud 0x1001F:ud { NoDDChk } // Block width and height (32x2)
-
-// Rounding
- // left
- add.sat (4) r[a0.0, 0]<2>:uw r[a0.0, 0]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,32]<2>:uw r[a0.0, 32]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,64]<2>:uw r[a0.0, 64]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,96]<2>:uw r[a0.0, 96]<8;4,2>:uw 0x0080:uw
-
- add.sat (8) r[a0.1, 0]<1>:uw r[a0.1, 0]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,32]<1>:uw r[a0.1, 32]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,64]<1>:uw r[a0.1, 64]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,96]<1>:uw r[a0.1, 96]<8;8,1>:uw 0x0080:uw
-
- add.sat (4) r[a0.2, 0]<2>:uw r[a0.2, 0]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,32]<2>:uw r[a0.2, 32]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,64]<2>:uw r[a0.2, 64]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,96]<2>:uw r[a0.2, 96]<8;4,2>:uw 0x0080:uw
-
- // right
- add.sat (4) r[a0.0,16]<2>:uw r[a0.0, 16]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,48]<2>:uw r[a0.0, 48]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,80]<2>:uw r[a0.0, 80]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,112]<2>:uw r[a0.0, 112]<8;4,2>:uw 0x0080:uw
-
- add.sat (8) r[a0.1, 16]<1>:uw r[a0.1, 16]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,48]<1>:uw r[a0.1, 48]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,80]<1>:uw r[a0.1, 80]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,112]<1>:uw r[a0.1, 112]<8;8,1>:uw 0x0080:uw
-
- add.sat (4) r[a0.2, 16]<2>:uw r[a0.2, 16]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,48]<2>:uw r[a0.2, 48]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,80]<2>:uw r[a0.2, 80]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,112]<2>:uw r[a0.2, 112]<8;4,2>:uw 0x0080:uw
-
- add (4) a0.0:uw r22.0<4;4,1>:w 512:uw
- // left
- add.sat (4) r[a0.0, 0]<2>:uw r[a0.0, 0]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,32]<2>:uw r[a0.0, 32]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,64]<2>:uw r[a0.0, 64]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,96]<2>:uw r[a0.0, 96]<8;4,2>:uw 0x0080:uw
-
- add.sat (8) r[a0.1, 0]<1>:uw r[a0.1, 0]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,32]<1>:uw r[a0.1, 32]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,64]<1>:uw r[a0.1, 64]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,96]<1>:uw r[a0.1, 96]<8;8,1>:uw 0x0080:uw
-
- add.sat (4) r[a0.2, 0]<2>:uw r[a0.2, 0]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,32]<2>:uw r[a0.2, 32]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,64]<2>:uw r[a0.2, 64]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,96]<2>:uw r[a0.2, 96]<8;4,2>:uw 0x0080:uw
-
- // right
- add.sat (4) r[a0.0,16]<2>:uw r[a0.0, 16]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,48]<2>:uw r[a0.0, 48]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,80]<2>:uw r[a0.0, 80]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,112]<2>:uw r[a0.0, 112]<8;4,2>:uw 0x0080:uw
-
- add.sat (8) r[a0.1, 16]<1>:uw r[a0.1, 16]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,48]<1>:uw r[a0.1, 48]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,80]<1>:uw r[a0.1, 80]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,112]<1>:uw r[a0.1, 112]<8;8,1>:uw 0x0080:uw
-
- add.sat (4) r[a0.2, 16]<2>:uw r[a0.2, 16]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,48]<2>:uw r[a0.2, 48]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,80]<2>:uw r[a0.2, 80]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,112]<2>:uw r[a0.2, 112]<8;4,2>:uw 0x0080:uw
-
- add (4) a0.0:uw r22.0<4;4,1>:w 1024:uw
- // left
- add.sat (4) r[a0.0, 0]<2>:uw r[a0.0, 0]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,32]<2>:uw r[a0.0, 32]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,64]<2>:uw r[a0.0, 64]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,96]<2>:uw r[a0.0, 96]<8;4,2>:uw 0x0080:uw
-
- add.sat (8) r[a0.1, 0]<1>:uw r[a0.1, 0]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,32]<1>:uw r[a0.1, 32]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,64]<1>:uw r[a0.1, 64]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,96]<1>:uw r[a0.1, 96]<8;8,1>:uw 0x0080:uw
-
- add.sat (4) r[a0.2, 0]<2>:uw r[a0.2, 0]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,32]<2>:uw r[a0.2, 32]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,64]<2>:uw r[a0.2, 64]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,96]<2>:uw r[a0.2, 96]<8;4,2>:uw 0x0080:uw
-
- // right
- add.sat (4) r[a0.0,16]<2>:uw r[a0.0, 16]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,48]<2>:uw r[a0.0, 48]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,80]<2>:uw r[a0.0, 80]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,112]<2>:uw r[a0.0, 112]<8;4,2>:uw 0x0080:uw
-
- add.sat (8) r[a0.1, 16]<1>:uw r[a0.1, 16]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,48]<1>:uw r[a0.1, 48]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,80]<1>:uw r[a0.1, 80]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,112]<1>:uw r[a0.1, 112]<8;8,1>:uw 0x0080:uw
-
- add.sat (4) r[a0.2, 16]<2>:uw r[a0.2, 16]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,48]<2>:uw r[a0.2, 48]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,80]<2>:uw r[a0.2, 80]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,112]<2>:uw r[a0.2, 112]<8;4,2>:uw 0x0080:uw
-
- add (4) a0.0:uw r22.0<4;4,1>:w 1536:uw
- // left
- add.sat (4) r[a0.0, 0]<2>:uw r[a0.0, 0]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,32]<2>:uw r[a0.0, 32]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,64]<2>:uw r[a0.0, 64]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,96]<2>:uw r[a0.0, 96]<8;4,2>:uw 0x0080:uw
-
- add.sat (8) r[a0.1, 0]<1>:uw r[a0.1, 0]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,32]<1>:uw r[a0.1, 32]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,64]<1>:uw r[a0.1, 64]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,96]<1>:uw r[a0.1, 96]<8;8,1>:uw 0x0080:uw
-
- add.sat (4) r[a0.2, 0]<2>:uw r[a0.2, 0]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,32]<2>:uw r[a0.2, 32]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,64]<2>:uw r[a0.2, 64]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,96]<2>:uw r[a0.2, 96]<8;4,2>:uw 0x0080:uw
-
- // right
- add.sat (4) r[a0.0,16]<2>:uw r[a0.0, 16]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,48]<2>:uw r[a0.0, 48]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,80]<2>:uw r[a0.0, 80]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,112]<2>:uw r[a0.0, 112]<8;4,2>:uw 0x0080:uw
-
- add.sat (8) r[a0.1, 16]<1>:uw r[a0.1, 16]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,48]<1>:uw r[a0.1, 48]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,80]<1>:uw r[a0.1, 80]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,112]<1>:uw r[a0.1, 112]<8;8,1>:uw 0x0080:uw
-
- add.sat (4) r[a0.2, 16]<2>:uw r[a0.2, 16]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,48]<2>:uw r[a0.2, 48]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,80]<2>:uw r[a0.2, 80]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,112]<2>:uw r[a0.2, 112]<8;4,2>:uw 0x0080:uw
-
- add (4) a0.0:uw r22.0<4;4,1>:w 2048:uw
- // restore pointer
- add (4) a0.0:uw r22.0<4;4,1>:w 0:uw
-
- mov (8) r28<1>:ud r27<8;8,1>:ud
- mov (8) r37<1>:ud r27<8;8,1>:ud
- add (1) r37.1<1>:d r27.1<0;1,0>:d 2:d // Point to 2nd part
-
-
- mov (8) r[a0.6, 0]<4>:ub r[a0.0, 1]<32;8,4>:ub { NoDDClr }
- mov (8) r[a0.6, 32]<4>:ub r[a0.0,33]<32;8,4>:ub { NoDDClr }
- mov (16) r[a0.4, 0]<2>:ub r[a0.1, 1]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (16) r[a0.4, 32]<2>:ub r[a0.1,33]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (8) r[a0.5, 0]<4>:ub r[a0.2, 1]<32;8,4>:ub { NoDDChk }
- mov (8) r[a0.5, 32]<4>:ub r[a0.2,33]<32;8,4>:ub { NoDDChk }
-
- mov (8) r[a0.6, 288]<4>:ub r[a0.0,65]<32;8,4>:ub { NoDDClr }
- mov (8) r[a0.6, 320]<4>:ub r[a0.0,97]<32;8,4>:ub { NoDDClr }
- mov (16) r[a0.4,288]<2>:ub r[a0.1,65]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (16) r[a0.4,320]<2>:ub r[a0.1,97]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (8) r[a0.5,288]<4>:ub r[a0.2,65]<32;8,4>:ub { NoDDChk }
- mov (8) r[a0.5,320]<4>:ub r[a0.2,97]<32;8,4>:ub { NoDDChk }
-
- send (1) null<1>:d r28 0x5 0x60A8018:ud
- send (1) null<1>:d r37 0x5 0x60A8018:ud
-
- // restore pointer
- add (4) a0.0:uw r22.0<4;4,1>:w 512:uw
-
- add (1) r28.1<1>:d r27.1<0;1,0>:d 4:d // Point to 2nd part
- add (1) r37.1<1>:d r27.1<0;1,0>:d 6:d // Point to 2nd part
-
-
- mov (8) r[a0.6, 0]<4>:ub r[a0.0, 1]<32;8,4>:ub { NoDDClr }
- mov (8) r[a0.6, 32]<4>:ub r[a0.0,33]<32;8,4>:ub { NoDDClr }
- mov (16) r[a0.4, 0]<2>:ub r[a0.1, 1]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (16) r[a0.4, 32]<2>:ub r[a0.1,33]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (8) r[a0.5, 0]<4>:ub r[a0.2, 1]<32;8,4>:ub { NoDDChk }
- mov (8) r[a0.5, 32]<4>:ub r[a0.2,33]<32;8,4>:ub { NoDDChk }
-
- mov (8) r[a0.6, 288]<4>:ub r[a0.0,65]<32;8,4>:ub { NoDDClr }
- mov (8) r[a0.6, 320]<4>:ub r[a0.0,97]<32;8,4>:ub { NoDDClr }
- mov (16) r[a0.4,288]<2>:ub r[a0.1,65]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (16) r[a0.4,320]<2>:ub r[a0.1,97]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (8) r[a0.5,288]<4>:ub r[a0.2,65]<32;8,4>:ub { NoDDChk }
- mov (8) r[a0.5,320]<4>:ub r[a0.2,97]<32;8,4>:ub { NoDDChk }
-
- send (1) null<1>:d r28 0x5 0x60A8018:ud
- send (1) null<1>:d r37 0x5 0x60A8018:ud
-
- // restore pointer
- add (4) a0.0:uw r22.0<4;4,1>:w 1024:uw
-
- add (1) r28.1<1>:d r27.1<0;1,0>:d 8:d // Point to 2nd part
- add (1) r37.1<1>:d r27.1<0;1,0>:d 10:d // Point to 2nd part
-
-
- mov (8) r[a0.6, 0]<4>:ub r[a0.0, 1]<32;8,4>:ub { NoDDClr }
- mov (8) r[a0.6, 32]<4>:ub r[a0.0,33]<32;8,4>:ub { NoDDClr }
- mov (16) r[a0.4, 0]<2>:ub r[a0.1, 1]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (16) r[a0.4, 32]<2>:ub r[a0.1,33]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (8) r[a0.5, 0]<4>:ub r[a0.2, 1]<32;8,4>:ub { NoDDChk }
- mov (8) r[a0.5, 32]<4>:ub r[a0.2,33]<32;8,4>:ub { NoDDChk }
-
- mov (8) r[a0.6, 288]<4>:ub r[a0.0,65]<32;8,4>:ub { NoDDClr }
- mov (8) r[a0.6, 320]<4>:ub r[a0.0,97]<32;8,4>:ub { NoDDClr }
- mov (16) r[a0.4,288]<2>:ub r[a0.1,65]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (16) r[a0.4,320]<2>:ub r[a0.1,97]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (8) r[a0.5,288]<4>:ub r[a0.2,65]<32;8,4>:ub { NoDDChk }
- mov (8) r[a0.5,320]<4>:ub r[a0.2,97]<32;8,4>:ub { NoDDChk }
-
- send (1) null<1>:d r28 0x5 0x60A8018:ud
- send (1) null<1>:d r37 0x5 0x60A8018:ud
-
- // restore pointer
- add (4) a0.0:uw r22.0<4;4,1>:w 1536:uw
-
- add (1) r28.1<1>:d r27.1<0;1,0>:d 12:d // Point to 2nd part
- add (1) r37.1<1>:d r27.1<0;1,0>:d 14:d // Point to 2nd part
-
- mov (8) r[a0.6, 0]<4>:ub r[a0.0, 1]<32;8,4>:ub { NoDDClr }
- mov (8) r[a0.6, 32]<4>:ub r[a0.0,33]<32;8,4>:ub { NoDDClr }
- mov (16) r[a0.4, 0]<2>:ub r[a0.1, 1]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (16) r[a0.4, 32]<2>:ub r[a0.1,33]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (8) r[a0.5, 0]<4>:ub r[a0.2, 1]<32;8,4>:ub { NoDDChk }
- mov (8) r[a0.5, 32]<4>:ub r[a0.2,33]<32;8,4>:ub { NoDDChk }
-
- mov (8) r[a0.6, 288]<4>:ub r[a0.0,65]<32;8,4>:ub { NoDDClr }
- mov (8) r[a0.6, 320]<4>:ub r[a0.0,97]<32;8,4>:ub { NoDDClr }
- mov (16) r[a0.4,288]<2>:ub r[a0.1,65]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (16) r[a0.4,320]<2>:ub r[a0.1,97]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (8) r[a0.5,288]<4>:ub r[a0.2,65]<32;8,4>:ub { NoDDChk }
- mov (8) r[a0.5,320]<4>:ub r[a0.2,97]<32;8,4>:ub { NoDDChk }
-
- send (1) null<1>:d r28 0x5 0x60A8018:ud
- send (1) null<1>:d r37 0x5 0x60A8018:ud
-
diff --git a/src/shaders/post_processing/gen7/Save_AVS_PL3.g4a b/src/shaders/post_processing/gen7/Save_AVS_PL3.g4a
deleted file mode 100644
index fd0905f..0000000
--- a/src/shaders/post_processing/gen7/Save_AVS_PL3.g4a
+++ /dev/null
@@ -1,586 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 84 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// Module name: Save_AVS_PL3.asm
-//
-// Save PL3 420 frame data block of size 16x16
-//
-// To save 16x16 block (16x16 byte of Y and 8x8 byte of U and V each) we need 3 send instructions with one of size 16x16 and two of size 8x8.
-// -----------------
-// | 16x16 Y |
-// | |
-// -----------------
-// | 8x8 U |
-// ---------
-// | 8x8 V |
-// ---------
-
-//-----------------------------------------------------------------
-//The layout of data is as follows:
-//mMSGHDR0 : Y data header (16x16)
-//mubMSGPAYLOAD0 : Y data payload (8 GRFs)
-//mMSGHDR1 : U data header (8x8)
-//mubMSGPAYLOAD1 : U data payload (2 GRFs)
-//mMSGHDR2 : V data header (8x8)
-//mubMSGPAYLOAD2 : V data payload (2 GRFs)
-//------------------------------------------------------------------
-
-
-
-// Module name: Save.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
-//Msg payload buffers; upto 4 full-size messages can be written
-
-
-.declare mudMSGPAYLOAD0 Base=r29.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD1 Base=r38.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD2 Base=r47.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD3 Base=r56.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-
-.declare muwMSGPAYLOAD0 Base=r29.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD1 Base=r38.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD2 Base=r47.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD3 Base=r56.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-
-.declare mubMSGPAYLOAD0 Base=r29.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD1 Base=r38.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD2 Base=r47.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD3 Base=r56.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD4 Base=r32.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD5 Base=r41.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD6 Base=r50.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD7 Base=r59.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-
-
- // the r17 register (nTEMP0) is originally defined from "Common.inc"
- // instead of re-defining a nTEMP0 here, we use "SAVE_RGB" suffix for its naming
-
- .declare uwTemp0 Base=r17.0 ElementSize=2 Type=uw
-
-
-//_SAVE_INC_
-
-
- // At the save module we have all 8 address sub-registers available.
- // So we will use PING-PONG type of scheme to save the data using
- // pointers pBUF_CHNL_TOP_8x4 and pBUF_CHNL_BOT_8x4. This will help
- // reduce dependency. - rT
-
- //wBUFF_CHNL_PTR points to either buffer 0 or buffer 4.
- //Add appropriate offsets to get pointers for all buffers (1,2,3 or 5).
- //Offsets are zero for buffer 0 and buffer 4.
- add (4) a0.0:uw r22.0<4;4,1>:w 0:uw
- add (4) a0.4:uw r22.0<4;4,1>:w 512:uw
-
- //Set up header for Y,U and V data
- mov (8) r28<1>:ud r27<8;8,1>:ud
- mov (8) r37<1>:ud r27<8;8,1>:ud
- mov (8) r46<1>:ud r27<8;8,1>:ud
-
- mov (2) r28.0<1>:d r9.0<2;2,1>:w { NoDDClr } //ORI Y (LUMA) = ORI
- shr (2) r37.0<1>:d r9.0<2;2,1>:w 1:w { NoDDClr } //H/V ORI U = H/V ORI/2
- shr (2) r46.0<1>:d r9.0<2;2,1>:w 1:w { NoDDClr } //H/V ORI V = H/V ORI/2
-
- mov (1) r28.2<1>:ud 0xF000F:ud { NoDDChk } // Y Block width and height (16x16)
- mov (1)r37.2<1>:ud 0x70007:ud { NoDDChk } // U Block width and height (8x8)
- mov (1)r46.2<1>:ud 0x70007:ud { NoDDChk } // V Block width and height (8x8)
-
-// Unscramble, and pack data directly to MRFs
-
-// Data 16x16 block is divided as -
-// ---------
-// | 0 |
-// ---------
-// | 1 |
-// ---------
-// | 2 |
-// ---------
-// | 3 |
-// ---------
-// All sub-blocks are of size 16x4
-// 0: ubBUFFER_0
-// 1: ubBUFFER_1, ubBUFFER_0+16
-// 2: ubBUFFER_2
-// 3: ubBUFFER_3, ubBUFFER_2+16
-
- //Y Rounding, first
- add.sat (16) r[a0.1,0]<1>:uw r[a0.1,0]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,32]<1>:uw r[a0.1,32]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,64]<1>:uw r[a0.1,64]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,96]<1>:uw r[a0.1,96]<16;16,1>:uw 0x0080:uw
-
- // U rounding
- add.sat (8) r[a0.2,0]<2>:uw r[a0.2,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.2,64]<2>:uw r[a0.2,64]<16;8,2>:uw 0x0080:uw
-
- // V rounding
- add.sat (8) r[a0.0,0]<2>:uw r[a0.0,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.0,64]<2>:uw r[a0.0,64]<16;8,2>:uw 0x0080:uw
-
- add (4) a0.0:uw r22.0<4;4,1>:w 1024:uw //Update Buffer 2 pointers
-
- //Y Rounding, second
- add.sat (16) r[a0.5,0]<1>:uw r[a0.5,0]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,32]<1>:uw r[a0.5,32]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,64]<1>:uw r[a0.5,64]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,96]<1>:uw r[a0.5,96]<16;16,1>:uw 0x0080:uw
-
- // U rounding
- add.sat (8) r[a0.6,0]<2>:uw r[a0.6,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.6,64]<2>:uw r[a0.6,64]<16;8,2>:uw 0x0080:uw
-
- // V rounding
- add.sat (8) r[a0.4,0]<2>:uw r[a0.4,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.4,64]<2>:uw r[a0.4,64]<16;8,2>:uw 0x0080:uw
-
- add (4) a0.4:uw r22.0<4;4,1>:w 1536:uw //Update Buffer 3 pointers
-
- //Y Rounding, third
- add.sat (16) r[a0.1,0]<1>:uw r[a0.1,0]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,32]<1>:uw r[a0.1,32]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,64]<1>:uw r[a0.1,64]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,96]<1>:uw r[a0.1,96]<16;16,1>:uw 0x0080:uw
-
- // U rounding
- add.sat (8) r[a0.2,0]<2>:uw r[a0.2,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.2,64]<2>:uw r[a0.2,64]<16;8,2>:uw 0x0080:uw
-
- // V rounding
- add.sat (8) r[a0.0,0]<2>:uw r[a0.0,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.0,64]<2>:uw r[a0.0,64]<16;8,2>:uw 0x0080:uw
-
-
- //Y Rounding, fourth
- add.sat (16) r[a0.5,0]<1>:uw r[a0.5,0]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,32]<1>:uw r[a0.5,32]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,64]<1>:uw r[a0.5,64]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,96]<1>:uw r[a0.5,96]<16;16,1>:uw 0x0080:uw
-
- // U rounding
- add.sat (8) r[a0.6,0]<2>:uw r[a0.6,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.6,64]<2>:uw r[a0.6,64]<16;8,2>:uw 0x0080:uw
-
- // V rounding
- add.sat (8) r[a0.4,0]<2>:uw r[a0.4,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.4,64]<2>:uw r[a0.4,64]<16;8,2>:uw 0x0080:uw
-
- // restore the TOP and BOT pointers
- add (4) a0.0:uw r22.0<4;4,1>:w 0:uw
- add (4) a0.4:uw r22.0<4;4,1>:w 512:uw
-
-//Buffer 0
-//Move Y to msg payload
- mov (16) mubMSGPAYLOAD0(0,0)<1> r[a0.1, 1]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(0,16)<1> r[a0.1, 33]<32;16,2>:ub { NoDDChk }
- mov (16) mubMSGPAYLOAD0(1,0)<1> r[a0.1, 65]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(1,16)<1> r[a0.1, 97]<32;16,2>:ub { NoDDChk }
-
-//Move U to msg payload
- mov (8) mubMSGPAYLOAD1(0,0)<1> r[a0.2, 1]<32;8,4>:ub { NoDDClr }
- mov (8) mubMSGPAYLOAD1(0,8)<1> r[a0.2, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
-
-//Move V to msg payload
- mov (8) mubMSGPAYLOAD2(0,0)<1> r[a0.0, 1]<32;8,4>:ub { NoDDClr }
- mov (8) mubMSGPAYLOAD2(0,8)<1> r[a0.0, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
-
- add (4) a0.0:uw r22.0<4;4,1>:w 1024:uw //Update Buffer 2 pointers
-
-//Buffer 1
- mov (16) mubMSGPAYLOAD0(2,0)<1> r[a0.5, 1]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(2,16)<1> r[a0.5, 33]<32;16,2>:ub { NoDDChk }
- mov (16) mubMSGPAYLOAD0(3,0)<1> r[a0.5, 65]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(3,16)<1> r[a0.5, 97]<32;16,2>:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(0,16)<1> r[a0.6, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD1(0,24)<1> r[a0.6, 65]<32;8,4>:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD2(0,16)<1> r[a0.4, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD2(0,24)<1> r[a0.4, 65]<32;8,4>:ub { NoDDChk }
-
- add (4) a0.4:uw r22.0<4;4,1>:w 1536:uw //Update Buffer 3 pointers
-
-//Buffer 2
- mov (16) mubMSGPAYLOAD0(4,0)<1> r[a0.1, 1]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(4,16)<1> r[a0.1, 33]<32;16,2>:ub { NoDDChk }
- mov (16) mubMSGPAYLOAD0(5,0)<1> r[a0.1, 65]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(5,16)<1> r[a0.1, 97]<32;16,2>:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(1,0)<1> r[a0.2, 1]<32;8,4>:ub { NoDDClr }
- mov (8) mubMSGPAYLOAD1(1,8)<1> r[a0.2, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
-
- mov (8) mubMSGPAYLOAD2(1,0)<1> r[a0.0, 1]<32;8,4>:ub { NoDDClr }
- mov (8) mubMSGPAYLOAD2(1,8)<1> r[a0.0, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
-
-//Buffer 3
- mov (16) mubMSGPAYLOAD0(6,0)<1> r[a0.5, 1]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(6,16)<1> r[a0.5, 33]<32;16,2>:ub { NoDDChk }
- mov (16) mubMSGPAYLOAD0(7,0)<1> r[a0.5, 65]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(7,16)<1> r[a0.5, 97]<32;16,2>:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(1,16)<1> r[a0.6, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD1(1,24)<1> r[a0.6, 65]<32;8,4>:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD2(1,16)<1> r[a0.4, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD2(1,24)<1> r[a0.4, 65]<32;8,4>:ub { NoDDChk }
-
-//===========================================================================
-
-send (1) null<1>:d r28 0x5 0x120A8018:ud
-send (1) null<1>:d r37 0x5 0x60A8019:ud
-send (1) null<1>:d r46 0x5 0x60A801A:ud
diff --git a/src/shaders/post_processing/gen7/Save_AVS_RGB.g4a b/src/shaders/post_processing/gen7/Save_AVS_RGB.g4a
deleted file mode 100644
index 7aaa446..0000000
--- a/src/shaders/post_processing/gen7/Save_AVS_RGB.g4a
+++ /dev/null
@@ -1,690 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 198 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// Module name: Save_AVS_RGB.asm
-//
-// Save packed ARGB 444 frame data block of size 16x16
-//
-// To save 16x16 block (64x16 byte layout for ARGB8888) we need 4 send instructions with 16x16 in each
-// -----------------
-// | 0 | 1 | 2 | 3 |
-// -----------------
-// the 4 16x16 block send has been replaced by 16 32x2 sends to get better performance
-
-
-
-// Module name: Save.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
-//Msg payload buffers; upto 4 full-size messages can be written
-
-
-.declare mudMSGPAYLOAD0 Base=r29.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD1 Base=r38.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD2 Base=r47.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD3 Base=r56.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-
-.declare muwMSGPAYLOAD0 Base=r29.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD1 Base=r38.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD2 Base=r47.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD3 Base=r56.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-
-.declare mubMSGPAYLOAD0 Base=r29.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD1 Base=r38.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD2 Base=r47.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD3 Base=r56.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD4 Base=r32.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD5 Base=r41.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD6 Base=r50.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD7 Base=r59.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-
-
- // the r17 register (nTEMP0) is originally defined from "Common.inc"
- // instead of re-defining a nTEMP0 here, we use "SAVE_RGB" suffix for its naming
-
- .declare uwTemp0 Base=r17.0 ElementSize=2 Type=uw
-
-
-//_SAVE_INC_
-
-
-// At the save module we have all 8 address sub-registers available.
-// So we will use PING-PONG type of scheme to save the data using
-// pointers pBUF_CHNL_TOP_8x4 and pBUF_CHNL_BOT_8x4. This will help
-// reduce dependency. - rT
-
-// channel switching based on bit 0 of uWRGB_BGR_CH_SWITCH
-
- // if channel swap?
- and.nz.f0.0 null<1>:w r2.3<0;1,0>:uw 0x01:w
-
-//wBUFF_CHNL_PTR points to either buffer 0 or buffer 4.
-//Add appropriate offsets to get pointers for all buffers (1,2,3 or 5).
-//Offsets are zero for buffer 0 and buffer 4.
- add (4) a0.0:uw r22.0<4;4,1>:w 0:uw
-
- // pointer swap
- (f0.0) mov (1) uwTemp0<1> a0.0:uw
- (f0.0) mov (1) a0.0:uw a0.2:uw
- (f0.0) mov (1) a0.2:uw uwTemp0<0;1,0>
-
- shl (1) r27.0<1>:d r9.0<0;1,0>:w 2:w { NoDDClr } // H. block origin need to be quadrupled
- mov (1) r27.1<1>:d r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin (1st quadrant)
- mov (1) r27.2<1>:ud 0x1001F:ud { NoDDChk } // Block width and height (32x2)
-
- add (4) a0.4:uw a0.0<4;4,1>:w r22.8<0;2,1>:w
-
- mov (8) r28<1>:ud r27<8;8,1>:ud
- mov (8) r37<1>:ud r27<8;8,1>:ud
- mov (8) r46<1>:ud r27<8;8,1>:ud
- mov (8) r55<1>:ud r27<8;8,1>:ud
-
- mov (8) r31<1>:ud r27<8;8,1>:ud
- mov (8) r40<1>:ud r27<8;8,1>:ud
- mov (8) r49<1>:ud r27<8;8,1>:ud
- mov (8) r58<1>:ud r27<8;8,1>:ud
-
-
-//for BUFFER 0
- add (1) r37.1<1>:d r27.1<0;1,0>:d 2:d
- add (1) r46.0<1>:d r27.0<0;1,0>:d 32:d
- add (1) r55.0<1>:d r27.0<0;1,0>:d 32:d
- add (1) r55.1<1>:d r27.1<0;1,0>:d 2:d
-
-// for BUFFER 1
- add (1) r31.1<1>:d r27.1<0;1,0>:d 4:d
- add (1) r40.1<1>:d r27.1<0;1,0>:d 6:d
- add (1) r49.0<1>:d r27.0<0;1,0>:d 32:d
- add (1) r49.1<1>:d r27.1<0;1,0>:d 4:d
- add (1) r58.0<1>:d r27.0<0;1,0>:d 32:d
- add (1) r58.1<1>:d r27.1<0;1,0>:d 6:d
- // write Buf_0 to 1st quarter of four horizontal output blocks
-
-// Please note the scattered order of NODDCLR, NODDCHK flags. Since the sub-registers
-// of destination reg are not updated at one place and hence even flags are scattered. -rT
-
- mov (8) mubMSGPAYLOAD0(0, 0)<4> r[a0.2, 1]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD0(0, 1)<4> r[a0.1, 1]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD0(0, 2)<4> r[a0.0, 1]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD0(0, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD0(1, 0)<4> r[a0.2, 33]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD0(1, 1)<4> r[a0.1, 33]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD0(1, 2)<4> r[a0.0, 33]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD0(1, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(0, 0)<4> r[a0.6, 1]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD1(0, 1)<4> r[a0.5, 1]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD1(0, 2)<4> r[a0.4, 1]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD1(0, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(1, 0)<4> r[a0.6, 33]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD1(1, 1)<4> r[a0.5, 33]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD1(1, 2)<4> r[a0.4, 33]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD1(1, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD2(0, 0)<4> r[a0.2, 17]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD2(0, 1)<4> r[a0.1, 17]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD2(0, 2)<4> r[a0.0, 17]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD2(0, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD2(1, 0)<4> r[a0.2, 49]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD2(1, 1)<4> r[a0.1, 49]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD2(1, 2)<4> r[a0.0, 49]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD2(1, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD3(0, 0)<4> r[a0.6, 17]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD3(0, 1)<4> r[a0.5, 17]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD3(0, 2)<4> r[a0.4, 17]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD3(0, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD3(1, 0)<4> r[a0.6, 49]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD3(1, 1)<4> r[a0.5, 49]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD3(1, 2)<4> r[a0.4, 49]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD3(1, 3)<4> r2.31:ub { NoDDChk }
-
- // write Buf_1 to 2nd quarter of four horizontal output blocks
- add (4) a0.0:uw r22.0<4;4,1>:w 512:uw
-
- // pointer swap
- (f0.0) mov (1) uwTemp0<1> a0.0:uw
- (f0.0) mov (1) a0.0:uw a0.2:uw
- (f0.0) mov (1) a0.2:uw uwTemp0<0;1,0>
-
- add (4) a0.4:uw a0.0<4;4,1>:w r22.8<0;2,1>:w
-
- mov (8) mubMSGPAYLOAD4(0, 0)<4> r[a0.2, 1]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD4(0, 1)<4> r[a0.1, 1]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD4(0, 2)<4> r[a0.0, 1]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD4(0, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD4(1, 0)<4> r[a0.2, 33]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD4(1, 1)<4> r[a0.1, 33]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD4(1, 2)<4> r[a0.0, 33]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD4(1, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD5(0, 0)<4> r[a0.6, 1]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD5(0, 1)<4> r[a0.5, 1]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD5(0, 2)<4> r[a0.4, 1]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD5(0, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD5(1, 0)<4> r[a0.6, 33]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD5(1, 1)<4> r[a0.5, 33]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD5(1, 2)<4> r[a0.4, 33]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD5(1, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD6(0, 0)<4> r[a0.2, 17]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD6(0, 1)<4> r[a0.1, 17]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD6(0, 2)<4> r[a0.0, 17]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD6(0, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD6(1, 0)<4> r[a0.2, 49]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD6(1, 1)<4> r[a0.1, 49]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD6(1, 2)<4> r[a0.0, 49]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD6(1, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD7(0, 0)<4> r[a0.6, 17]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD7(0, 1)<4> r[a0.5, 17]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD7(0, 2)<4> r[a0.4, 17]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD7(0, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD7(1, 0)<4> r[a0.6, 49]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD7(1, 1)<4> r[a0.5, 49]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD7(1, 2)<4> r[a0.4, 49]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD7(1, 3)<4> r2.31:ub { NoDDChk }
-
- // send buffer 0 and buffer 1
- send (1) null<1>:d r28 0x5 0x60A8018:ud
- send (1) null<1>:d r37 0x5 0x60A8018:ud
- send (1) null<1>:d r46 0x5 0x60A8018:ud
- send (1) null<1>:d r55 0x5 0x60A8018:ud
-
- send (1) null<1>:d r31 0x5 0x60A8018:ud
- send (1) null<1>:d r40 0x5 0x60A8018:ud
- send (1) null<1>:d r49 0x5 0x60A8018:ud
- send (1) null<1>:d r58 0x5 0x60A8018:ud
-
-//==========
-//prepare headers
-//for BUFFER 2
- add (1) r28.1<1>:d r27.1<0;1,0>:d 8:d
- add (1) r37.1<1>:d r27.1<0;1,0>:d 10:d
- add (1) r46.0<1>:d r27.0<0;1,0>:d 32:d
- add (1) r46.1<1>:d r27.1<0;1,0>:d 8:d
- add (1) r55.0<1>:d r27.0<0;1,0>:d 32:d
- add (1) r55.1<1>:d r27.1<0;1,0>:d 10:d
-// for BUFFER 3
- add (1) r31.1<1>:d r27.1<0;1,0>:d 12:d
- add (1) r40.1<1>:d r27.1<0;1,0>:d 14:d
- add (1) r49.0<1>:d r27.0<0;1,0>:d 32:d
- add (1) r49.1<1>:d r27.1<0;1,0>:d 12:d
- add (1) r58.0<1>:d r27.0<0;1,0>:d 32:d
- add (1) r58.1<1>:d r27.1<0;1,0>:d 14:d
-
-//===========
-
- // write Buf_2 to 3rd quarter of four horizontal output blocks
- add (4) a0.0:uw r22.0<4;4,1>:w 1024:uw
-
- // pointer swap
- (f0.0) mov (1) uwTemp0<1> a0.0:uw
- (f0.0) mov (1) a0.0:uw a0.2:uw
- (f0.0) mov (1) a0.2:uw uwTemp0<0;1,0>
-
- add (4) a0.4:uw a0.0<4;4,1>:w r22.8<0;2,1>:w
-
- mov (8) mubMSGPAYLOAD0(0, 0)<4> r[a0.2, 1]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD0(0, 1)<4> r[a0.1, 1]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD0(0, 2)<4> r[a0.0, 1]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD0(0, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD0(1, 0)<4> r[a0.2, 33]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD0(1, 1)<4> r[a0.1, 33]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD0(1, 2)<4> r[a0.0, 33]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD0(1, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(0, 0)<4> r[a0.6, 1]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD1(0, 1)<4> r[a0.5, 1]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD1(0, 2)<4> r[a0.4, 1]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD1(0, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(1, 0)<4> r[a0.6, 33]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD1(1, 1)<4> r[a0.5, 33]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD1(1, 2)<4> r[a0.4, 33]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD1(1, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD2(0, 0)<4> r[a0.2, 17]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD2(0, 1)<4> r[a0.1, 17]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD2(0, 2)<4> r[a0.0, 17]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD2(0, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD2(1, 0)<4> r[a0.2, 49]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD2(1, 1)<4> r[a0.1, 49]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD2(1, 2)<4> r[a0.0, 49]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD2(1, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD3(0, 0)<4> r[a0.6, 17]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD3(0, 1)<4> r[a0.5, 17]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD3(0, 2)<4> r[a0.4, 17]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD3(0, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD3(1, 0)<4> r[a0.6, 49]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD3(1, 1)<4> r[a0.5, 49]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD3(1, 2)<4> r[a0.4, 49]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD3(1, 3)<4> r2.31:ub { NoDDChk }
-
- // write Buf_3 to 4th quarter of four horizontal output blocks
- add (4) a0.0:uw r22.0<4;4,1>:w 1536:uw
-
- // pointer swap
- (f0.0) mov (1) uwTemp0<1> a0.0:uw
- (f0.0) mov (1) a0.0:uw a0.2:uw
- (f0.0) mov (1) a0.2:uw uwTemp0<0;1,0>
-
- add (4) a0.4:uw a0.0<4;4,1>:w r22.8<0;2,1>:w
-
- mov (8) mubMSGPAYLOAD4(0, 0)<4> r[a0.2, 1]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD4(0, 1)<4> r[a0.1, 1]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD4(0, 2)<4> r[a0.0, 1]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD4(0, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD4(1, 0)<4> r[a0.2, 33]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD4(1, 1)<4> r[a0.1, 33]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD4(1, 2)<4> r[a0.0, 33]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD4(1, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD5(0, 0)<4> r[a0.6, 1]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD5(0, 1)<4> r[a0.5, 1]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD5(0, 2)<4> r[a0.4, 1]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD5(0, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD5(1, 0)<4> r[a0.6, 33]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD5(1, 1)<4> r[a0.5, 33]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD5(1, 2)<4> r[a0.4, 33]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD5(1, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD6(0, 0)<4> r[a0.2, 17]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD6(0, 1)<4> r[a0.1, 17]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD6(0, 2)<4> r[a0.0, 17]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD6(0, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD6(1, 0)<4> r[a0.2, 49]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD6(1, 1)<4> r[a0.1, 49]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD6(1, 2)<4> r[a0.0, 49]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD6(1, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD7(0, 0)<4> r[a0.6, 17]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD7(0, 1)<4> r[a0.5, 17]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD7(0, 2)<4> r[a0.4, 17]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD7(0, 3)<4> r2.31:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD7(1, 0)<4> r[a0.6, 49]<16;8,2> { NoDDClr }
- mov (8) mubMSGPAYLOAD7(1, 1)<4> r[a0.5, 49]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD7(1, 2)<4> r[a0.4, 49]<16;8,2> { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD7(1, 3)<4> r2.31:ub { NoDDChk }
-
- // send buffer 2 and buffer 3
- send (1) null<1>:d r28 0x5 0x60A8018:ud
- send (1) null<1>:d r37 0x5 0x60A8018:ud
- send (1) null<1>:d r46 0x5 0x60A8018:ud
- send (1) null<1>:d r55 0x5 0x60A8018:ud
-
- send (1) null<1>:d r31 0x5 0x60A8018:ud
- send (1) null<1>:d r40 0x5 0x60A8018:ud
- send (1) null<1>:d r49 0x5 0x60A8018:ud
- send (1) null<1>:d r58 0x5 0x60A8018:ud
diff --git a/src/shaders/post_processing/gen7/Save_AVS_RGBX.g4a b/src/shaders/post_processing/gen7/Save_AVS_RGBX.g4a
deleted file mode 100644
index a61fdbd..0000000
--- a/src/shaders/post_processing/gen7/Save_AVS_RGBX.g4a
+++ /dev/null
@@ -1,661 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- */
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// Module name: Save_AVS_RGBX.asm
-//
-// Save packed ARGB 444 frame data block of size 16x16
-//
-// To save 16x16 block (64x16 byte layout for ARGB8888) we need 4 send instructions with 32x8 in each
-// --------
-// | 0 | 1 |
-// | 2 | 3 |
-// ---------
-// the 4 32x8 block send is used
-
-
-
-// Module name: Save.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
-//Msg payload buffers; upto 4 full-size messages can be written
-
-
-.declare mudMSGPAYLOAD0 Base=r29.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD1 Base=r38.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD2 Base=r47.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD3 Base=r56.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-
-.declare muwMSGPAYLOAD0 Base=r29.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD1 Base=r38.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD2 Base=r47.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD3 Base=r56.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-
-.declare mubMSGPAYLOAD0 Base=r29.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD1 Base=r38.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD2 Base=r47.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD3 Base=r56.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD4 Base=r32.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD5 Base=r41.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD6 Base=r50.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD7 Base=r59.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-
-
- // the r17 register (nTEMP0) is originally defined from "Common.inc"
- // instead of re-defining a nTEMP0 here, we use "SAVE_RGB" suffix for its naming
-
- .declare uwTemp0 Base=r17.0 ElementSize=2 Type=uw
-
-
-//_SAVE_INC_
-
-
-// At the save module we have all 8 address sub-registers available.
-// So we will use PING-PONG type of scheme to save the data using
-// pointers pBUF_CHNL_TOP_8x4 and pBUF_CHNL_BOT_8x4. This will help
-// reduce dependency. - rT
-
- //Internal LAYOUT:(RRGGBBAA)
- //Assign buffer channel order for Buffer 0123 in the order RGBA a0.3>A, a0.2>B, a0.1>G, a0.0>R
- // R = 0, G= 4, B = 8, A = 12.
- mov (4) acc0.0<1>:w 0x62EA:v
- add (4) acc0.0<1>:w acc0<4;4,1>:w 70:uw
- shl (4) r22.0<1>:w acc0<4;4,1>:w 5:uw
-
- // if channel swap?
- // This means that it should be BGRA(B is the LSB) or RGBA
- // the internal format is always RGBA(MSB-A-B-G-R).
- and.nz.f0.0 null<1>:w r2.3<0;1,0>:uw 0x01:w
-
-//wBUFF_CHNL_PTR points to either buffer 0 or buffer 4.
-//Add appropriate offsets to get pointers for all buffers (1,2,3 or 5).
-//Offsets are zero for buffer 0 and buffer 4.
- add (4) a0.0:uw r22.0<4;4,1>:w 0:uw
-
- // pointer swap
- (f0.0) mov (1) uwTemp0<1> a0.0<0;1,0>:uw
- (f0.0) mov (1) a0.0<1>:uw a0.2<0;1,0>:uw
- (f0.0) mov (1) a0.2<1>:uw uwTemp0<0;1,0>
-
- shl (1) r27.0<1>:d r9.0<0;1,0>:w 2:w { NoDDClr } // H. block origin need to be quadrupled
- mov (1) r27.1<1>:d r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin (1st quadrant)
- mov (1) r27.2<1>:ud 0x3001F:ud { NoDDChk } // Block width and height (32x4)
-
- mov (4) a0.4<1>:uw a0.0<4;4,1>:uw
-
- mov (8) r28<1>:ud r27<8;8,1>:ud
- mov (8) r37<1>:ud r27<8;8,1>:ud
- mov (8) r46<1>:ud r27<8;8,1>:ud
- mov (8) r55<1>:ud r27<8;8,1>:ud
-
- mov (8) r31<1>:ud r27<8;8,1>:ud
- mov (8) r40<1>:ud r27<8;8,1>:ud
- mov (8) r49<1>:ud r27<8;8,1>:ud
- mov (8) r58<1>:ud r27<8;8,1>:ud
-
-//Buffer 0/1 are written by using 4 32x4.
-
- add (1) r37.0<1>:d r27.0<0;1,0>:d 32:d
-
- add (1) r46.1<1>:d r27.1<0;1,0>:d 4:d
-
- add (1) r55.1<1>:d r27.1<0;1,0>:d 4:d
- add (1) r55.0<1>:d r27.0<0;1,0>:d 32:d
-
- // write Buf_0 to 1st quarter of four horizontal output blocks
-
-// Please note the scattered order of NODDCLR, NODDCHK flags. Since the sub-registers
-// of destination reg are not updated at one place and hence even flags are scattered. -rT
-
-/* for block 0 the left part of buffer 0 and 1 */
- mov (8) mubMSGPAYLOAD0(0, 0)<4> r[a0.0, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(0, 1)<4> r[a0.1, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(0, 2)<4> r[a0.2, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(0, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD0(1, 0)<4> r[a0.0, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(1, 1)<4> r[a0.1, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(1, 2)<4> r[a0.2, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(1, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD1(0, 0)<4> r[a0.0, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(0, 1)<4> r[a0.1, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(0, 2)<4> r[a0.2, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(0, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD1(1, 0)<4> r[a0.0, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(1, 1)<4> r[a0.1, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(1, 2)<4> r[a0.2, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(1, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD0(2, 0)<4> r[a0.0, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(2, 1)<4> r[a0.1, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(2, 2)<4> r[a0.2, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(2, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD0(3, 0)<4> r[a0.0, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(3, 1)<4> r[a0.1, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(3, 2)<4> r[a0.2, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(3, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD1(2, 0)<4> r[a0.0, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(2, 1)<4> r[a0.1, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(2, 2)<4> r[a0.2, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(2, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD1(3, 0)<4> r[a0.0, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(3, 1)<4> r[a0.1, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(3, 2)<4> r[a0.2, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(3, 3)<4> r2.31:ub
-
-/* For Buffer 0 */
- send (16) null<1>:d r28 0x5 0x0A0A8018:ud
- send (16) null<1>:d r37 0x5 0x0A0A8018:ud
-
- add (4) a0.0<1>:uw a0.4<4;4,1>:uw 512:uw
- mov (8) mubMSGPAYLOAD2(0, 0)<4> r[a0.0, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(0, 1)<4> r[a0.1, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(0, 2)<4> r[a0.2, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(0, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD2(1, 0)<4> r[a0.0, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(1, 1)<4> r[a0.1, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(1, 2)<4> r[a0.2, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(1, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD3(0, 0)<4> r[a0.0, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(0, 1)<4> r[a0.1, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(0, 2)<4> r[a0.2, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(0, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD3(1, 0)<4> r[a0.0, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(1, 1)<4> r[a0.1, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(1, 2)<4> r[a0.2, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(1, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD2(2, 0)<4> r[a0.0, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(2, 1)<4> r[a0.1, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(2, 2)<4> r[a0.2, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(2, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD2(3, 0)<4> r[a0.0, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(3, 1)<4> r[a0.1, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(3, 2)<4> r[a0.2, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(3, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD3(2, 0)<4> r[a0.0, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(2, 1)<4> r[a0.1, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(2, 2)<4> r[a0.2, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(2, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD3(3, 0)<4> r[a0.0, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(3, 1)<4> r[a0.1, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(3, 2)<4> r[a0.2, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(3, 3)<4> r2.31:ub
- // send Buffer 1
- send (16) null<1>:d r46 0x5 0x0A0A8018:ud
- send (16) null<1>:d r55 0x5 0x0A0A8018:ud
-
-
-/* for Buffer 2/3 */
- mov (8) r28<1>:ud r27<8;8,1>:ud
- mov (8) r37<1>:ud r27<8;8,1>:ud
- mov (8) r46<1>:ud r27<8;8,1>:ud
- mov (8) r55<1>:ud r27<8;8,1>:ud
-
- add (1) r28.1<1>:d r27.1<0;1,0>:d 8:d
-
- add (1) r37.0<1>:d r27.0<0;1,0>:d 32:d
- add (1) r37.1<1>:d r27.1<0;1,0>:d 8:d
-
- add (1) r46.1<1>:d r27.1<0;1,0>:d 12:d
-
- add (1) r55.1<1>:d r27.1<0;1,0>:d 12:d
- add (1) r55.0<1>:d r27.0<0;1,0>:d 32:d
-
- add (4) a0.0<1>:uw a0.4<4;4,1>:uw 1024:uw
-
- mov (8) mubMSGPAYLOAD0(0, 0)<4> r[a0.0, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(0, 1)<4> r[a0.1, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(0, 2)<4> r[a0.2, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(0, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD0(1, 0)<4> r[a0.0, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(1, 1)<4> r[a0.1, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(1, 2)<4> r[a0.2, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(1, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD1(0, 0)<4> r[a0.0, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(0, 1)<4> r[a0.1, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(0, 2)<4> r[a0.2, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(0, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD1(1, 0)<4> r[a0.0, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(1, 1)<4> r[a0.1, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(1, 2)<4> r[a0.2, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(1, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD0(2, 0)<4> r[a0.0, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(2, 1)<4> r[a0.1, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(2, 2)<4> r[a0.2, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(2, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD0(3, 0)<4> r[a0.0, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(3, 1)<4> r[a0.1, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(3, 2)<4> r[a0.2, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(3, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD1(2, 0)<4> r[a0.0, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(2, 1)<4> r[a0.1, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(2, 2)<4> r[a0.2, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(2, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD1(3, 0)<4> r[a0.0, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(3, 1)<4> r[a0.1, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(3, 2)<4> r[a0.2, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(3, 3)<4> r2.31:ub
-
-// Send Buffer 2
- send (16) null<1>:d r28 0x5 0x0A0A8018:ud
- send (16) null<1>:d r37 0x5 0x0A0A8018:ud
-
- add (4) a0.0<1>:uw a0.4<4;4,1>:uw 1536:uw
- mov (8) mubMSGPAYLOAD2(0, 0)<4> r[a0.0, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(0, 1)<4> r[a0.1, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(0, 2)<4> r[a0.2, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(0, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD2(1, 0)<4> r[a0.0, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(1, 1)<4> r[a0.1, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(1, 2)<4> r[a0.2, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(1, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD3(0, 0)<4> r[a0.0, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(0, 1)<4> r[a0.1, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(0, 2)<4> r[a0.2, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(0, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD3(1, 0)<4> r[a0.0, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(1, 1)<4> r[a0.1, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(1, 2)<4> r[a0.2, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(1, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD2(2, 0)<4> r[a0.0, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(2, 1)<4> r[a0.1, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(2, 2)<4> r[a0.2, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(2, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD2(3, 0)<4> r[a0.0, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(3, 1)<4> r[a0.1, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(3, 2)<4> r[a0.2, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(3, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD3(2, 0)<4> r[a0.0, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(2, 1)<4> r[a0.1, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(2, 2)<4> r[a0.2, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(2, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD3(3, 0)<4> r[a0.0, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(3, 1)<4> r[a0.1, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(3, 2)<4> r[a0.2, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(3, 3)<4> r2.31:ub
- // send buffer 3
- send (16) null<1>:d r46 0x5 0x0A0A8018:ud
- send (16) null<1>:d r55 0x5 0x0A0A8018:ud
-
-
-
diff --git a/src/shaders/post_processing/gen7/Set_AVS_Buf_0123_BGRA.g4a b/src/shaders/post_processing/gen7/Set_AVS_Buf_0123_BGRA.g4a
deleted file mode 100644
index 147f2c2..0000000
--- a/src/shaders/post_processing/gen7/Set_AVS_Buf_0123_BGRA.g4a
+++ /dev/null
@@ -1,388 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 7 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-//Module Name: Set_AVS_Buf_0123_BGRA.asm
-
-
-
-//Module Name: Set_Buf_0123_BGRA
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- //AVS LAYOUT:(UUYYVVAA)
- //AVS RGBX LAYOUT (RRGGBBAA)
- //Assign buffer channel order for Buffer 0123 in the order AUYV a0.3>A, a0.2>U, a0.1>Y, a0.0>V
- // V = 8, Y= 0, U = 4, A = 12.
- // And a0.x is used as indirect-register for RGBX. R=a0.1, G=a0.2, B=a0.0
- // B = 8, R= 0, G = 4, A = 12
- mov (4) acc0.0<1>:w 0x6EA2:v
- add (4) acc0.0<1>:w acc0<4;4,1>:w 70:uw
- shl (4) r22.0<1>:w acc0<4;4,1>:w 5:uw
-
- //OPT: wAVS_SU_SHUFFLE_PTR_0 and udAVS_SU_SHUFFLE_OFF_0 are sub-regs of same GRF. -rT
-
- //SU LAYOUT:(VYUAVYUA)
- //V = 4, Y = 2, U = 0, A = 6
- //B = 4, G = 2, R = 0, A = 6
- mov (4) acc0.0<1>:w 0x6204:v
- add (4) acc0.0<1>:w acc0<4;4,1>:w 64:uw
- shl (4) r18.0<1>:w acc0<4;4,1>:w 5:uw { NoDDClr } //Convert to BYTE address.
-
- //OFFSET:
- mov (1) r18.4<1>:ud 0x1000100:ud { NoDDChk }
-
-
diff --git a/src/shaders/post_processing/gen7/Set_AVS_Buf_0123_PL2.g4a b/src/shaders/post_processing/gen7/Set_AVS_Buf_0123_PL2.g4a
deleted file mode 100644
index 75636b6..0000000
--- a/src/shaders/post_processing/gen7/Set_AVS_Buf_0123_PL2.g4a
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 7 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-//Module Name: Set_AVS_Buf_0123_PL2.asm
-
-
-
-//Module Name: Set_Buf_0123_PL2
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- //AVS LAYOUT: (YYUUVVAA)
- //Assign buffer channel order for Buffer 0123 in the order AUYV a0.3>A, a0.2>U, a0.1>Y, a0.0>V
- //For PL2-AVS: V = 8, Y= 0, U = 4, A = 12.
- mov (4) acc0.0<1>:w 0x6EA2:v //Subtract 6 from 0,4,8,12
- add (4) acc0.0<1>:w acc0<4;4,1>:w 70:uw //add 6 back
- shl (4) r22.0<1>:w acc0<4;4,1>:w 5:uw //Convert to BYTE address.
-
- //OPT: wAVS_SU_SHUFFLE_PTR_0 and udAVS_SU_SHUFFLE_OFF_0 are sub-regs of same GRF. -rT
- //SU LAYOUT:(YUVAYUVA)
- //V = 4, Y = 0, U = 2, A = 6
- mov (4) acc0.0<1>:w 0x6204:v
- add (4) acc0.0<1>:w acc0<4;4,1>:w 64:uw
- shl (4) r18.0<1>:w acc0<4;4,1>:w 5:uw { NoDDClr } //Convert to BYTE address.
-
- //OFFSET:
- mov (1) r18.4<1>:ud 0x1000100:ud { NoDDChk }
-
-
diff --git a/src/shaders/post_processing/gen7/Set_AVS_Buf_0123_PL3.g4a b/src/shaders/post_processing/gen7/Set_AVS_Buf_0123_PL3.g4a
deleted file mode 100644
index 65db8e1..0000000
--- a/src/shaders/post_processing/gen7/Set_AVS_Buf_0123_PL3.g4a
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 7 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-//Module Name: Set_AVS_Buf_0123_PL3.asm
-
-
-
-//Module Name: Set_Buf_0123_PL3
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- //AVS LAYOUT: (YYUUVVAA)
- //Assign buffer channel order for Buffer 0123 in the order AUYV a0.3>A, a0.2>U, a0.1>Y, a0.0>V
- //For PL3-AVS: V = 8, Y= 0, U = 4, A = 12.
- mov (4) acc0.0<1>:w 0x6EA2:v //Subtract 6 from 0,4,8,12
- add (4) acc0.0<1>:w acc0<4;4,1>:w 70:uw //add 6 back
- shl (4) r22.0<1>:w acc0<4;4,1>:w 5:uw //Convert to BYTE address.
-
- //OPT: wAVS_SU_SHUFFLE_PTR_0 and udAVS_SU_SHUFFLE_OFF_0 are sub-regs of same GRF. -rT
- //SU LAYOUT:(YUVAYUVA)
- //V = 4, Y = 0, U = 2, A = 6
- mov (4) acc0.0<1>:w 0x6204:v
- add (4) acc0.0<1>:w acc0<4;4,1>:w 64:uw
- shl (4) r18.0<1>:w acc0<4;4,1>:w 5:uw { NoDDClr } //Convert to BYTE address.
-
- //OFFSET:
- mov (1) r18.4<1>:ud 0x1000100:ud { NoDDChk }
-
-
diff --git a/src/shaders/post_processing/gen7/Set_AVS_Buf_0123_VUYA.g4a b/src/shaders/post_processing/gen7/Set_AVS_Buf_0123_VUYA.g4a
deleted file mode 100644
index 6af9889..0000000
--- a/src/shaders/post_processing/gen7/Set_AVS_Buf_0123_VUYA.g4a
+++ /dev/null
@@ -1,384 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 7 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-//Module Name: Set_AVS_Buf_0123_YUVA.asm
-
-
-
-// Module Name : Set_Buf_0123_VUYA
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- //For AVS: We use surface state as R8G8B8A8_UNORM and hence set pointers to VUYA.
- //AVS LAYOUT:(VVUUYYAA)
- //Assign buffer channel order for Buffer 0123 in the order AUYV a0.3>A, a0.2>U, a0.1>Y, a0.0>V
- //V = 0, Y= 8, U = 4, A = 12.
- mov (4) acc0.0<1>:w 0x6E2A:v
- add (4) acc0.0<1>:w acc0<4;4,1>:w 70:uw
- shl (4) r22.0<1>:w acc0<4;4,1>:w 5:uw
-
- //Used by Shuffle.
- //SU LAYOUT:(VUYAVUYA)
- //V = 0, Y = 4, U = 2, A = 6
- mov (4) acc0.0<1>:w 0x6240:v
- add (4) acc0.0<1>:w acc0<4;4,1>:w 64:uw
- shl (4) r18.0<1>:w acc0<4;4,1>:w 5:uw { NoDDClr } //Convert to BYTE address.
-
- //OFFSET:
- mov (1) r18.4<1>:ud 0x1000100:ud { NoDDChk }
-
-
diff --git a/src/shaders/post_processing/gen7/Set_AVS_Buf_0123_VYUA.g4a b/src/shaders/post_processing/gen7/Set_AVS_Buf_0123_VYUA.g4a
deleted file mode 100644
index afca370..0000000
--- a/src/shaders/post_processing/gen7/Set_AVS_Buf_0123_VYUA.g4a
+++ /dev/null
@@ -1,384 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 7 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-//Module Name: Set_AVS_Buf_0123_VYUA.asm
-
-
-
-//Module Name: Set_Buf_0123_VYUA
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- //AVS LAYOUT:(VVYYUUAA)
- //Assign buffer channel order for Buffer 0123 in the order AUYV a0.3>A, a0.2>U, a0.1>Y, a0.0>V
- // V = 0, Y= 4, U = 8, A = 12.
- mov (4) acc0.0<1>:w 0x62EA:v //Subtract 6 from 0,4,8,12
- add (4) acc0.0<1>:w acc0<4;4,1>:w 70:uw //add 6 back
- shl (4) r22.0<1>:w acc0<4;4,1>:w 5:uw //Convert to BYTE address.
-
- //OPT: wAVS_SU_SHUFFLE_PTR_0 and udAVS_SU_SHUFFLE_OFF_0 are sub-regs of same GRF. -rT
-
- //SU LAYOUT:(VYUAVYUA)
- //V = 0, Y = 2, U = 4, A = 6
- mov (4) acc0.0<1>:w 0x6420:v
- add (4) acc0.0<1>:w acc0<4;4,1>:w 64:uw
- shl (4) r18.0<1>:w acc0<4;4,1>:w 5:uw { NoDDClr } //Convert to BYTE address.
-
- //OFFSET:
- mov (1) r18.4<1>:ud 0x1000100:ud { NoDDChk }
-
-
diff --git a/src/shaders/post_processing/gen7/Set_Layer_0.g4a b/src/shaders/post_processing/gen7/Set_Layer_0.g4a
deleted file mode 100644
index 4a31eef..0000000
--- a/src/shaders/post_processing/gen7/Set_Layer_0.g4a
+++ /dev/null
@@ -1,489 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 18 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-
-
-
-
-//Module name: Set_Layer_N.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
-//Used to generate LABELS at compile time.
-
-
-//definitions for Expand Mask
-.declare uwMask_Temp1 Base=r17.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-.declare ubMask_Temp1 Base=r17.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub // 1 GRF
-.declare udMask_Temp1 Base=r17.0 ElementSize=4 Type=ud // 1 GRF
-.declare uwMask_Temp2 Base=r16.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-.declare ubMask_Temp2 Base=r16.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub // 1 GRF
-.declare udMask_Temp2 Base=r16.0 ElementSize=4 Type=ud // 1 GRF
-
-.declare uwMask_Temp3 Base=r15.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-.declare ubMask_Temp3 Base=r15.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub // 1 GRF
-
-.declare udALPHA_MASK_REG Base=r21.0 ElementSize=4 Type=ud // 1 GRF
-.declare udALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//Initialize mask reg to FFFF
-
- mov (16) uwALPHA_MASK_REG(0)<1> 0xFFFF:uw
-
-
-//Fast jump for -
-//LAYER0: we determine whether layer 0 is to be loaded and processed or not based
-// on block mask in module "Set_Layer_0" and store result in f0.1.
-// This flag is then directly used to while loading buf0-3 and colorfill.
-// (So flag f0.1 should not be changed from Set_Layer_0 till Colorfill)
-//
-//LAYER1-7: For all other layers, we compute whether layer is to be loaded and processed
-// based on block mask in module "Set_Layer_1-7" and store result in SKIP_LAYER
-// variable.
-// While Loading buf 4 and 5, we move SKIP_LAYER to f0.0 every time and use it
-// for Loading.
-// For processing though, we move SKIP_LAYER only once to f0.1 in module
-// "Set_Buf0_Buf4" and use f0.1 for deciding whether layer 1-7 (all 4 sub blocks)
-// is to be processed or not.
-// (So flag f0.1) should not be modififed from module "Set_Buf0_Buf4" till module
-// that processess sub-block 3).
-//
-//None of the above fast jumps, apply to CSC modules. We always perform CSC irrespective of mask.
-//
-//Example: (Without going into finer details)
-// Typical Combined kernel:
-//
-// (let var = decision whether to load/process that layer)
-//
-// Set_Layer_0 //f0.1 <- var
-// ..
-// Set_Layer_1 //f0.1 <- var, SKIP_LAYER <- var
-// ..
-// Load buf 0 //use f0.1
-// Load buf 4 //f0.0 <- SKIP_LAYER
-// Load buf 1 //use f0.1
-// Load buf 5 //f0.0 <- SKIP_LAYER
-// Load buf 2 //use f0.1
-// Load buf 3 //use f0.1
-// ..
-// ..
-// Colorfill
-// ..
-// Set_Buf0_Buf4 //f0.1 <- SKIP_LAYER
-// process0-4 //Use f0.1
-// Load buf 4
-// Set_Buf1_Buf5
-// process1-5
-// Load buf 5
-// ..
-// Set_Layer_2 //f0.1 <-var, SKIP_LAYER <- var
-// ..
-// Set_Buf2_Buf4
-// process2-4
-// Load buf 4
-// Set_Buf3_Buf5
-// process3-5
-// Load buf 5
-// ..
-
-
- //For layer 0, use f0.1 directly
- cmp.ne.f0.1 (1) null<1>:d r9.2:uw 0:uw
- (f0.1)cmp.ne.f0.1 (1) null<1>:d r9.3:uw 0:uw
- (-f0.1) jmpi (1) SKIP_LAYER_L0
-
-
- and (1) r24.2:ub r2.2<0;1,0>:uw 3:uw
-
-
- //Copy all AVS Payload data
- // Setup Message Payload Header for 1st block of Media Sampler 8x8 (16x4 for IVB+)
- mov (1) r25.6:f r9.5:f { NoDDClr } //NLAS dx
- mov (1) r25.4:f r3.0:f { NoDDClr, NoDDChk } //Step X
- mov (1) r25.5:f r4.0:f { NoDDClr, NoDDChk } //Step Y
-
-
- mov (1) r25.2:f r6.0<0;1,0>:f { NoDDClr, NoDDChk } //Orig X
- mov (1) r25.3:f r5.0<0;1,0>:f { NoDDChk } //Orig Y
-
- //NLAS calculations for 2nd half of blocks of Media Sampler 8x8:
- // X(i) = X0 + dx*i + ddx*i*(i-1)/2 ==> X(8) = X0 + dx*8 +ddx*28
- // dx(i)= dx(0) + ddx*i ==> dx(8)= dx + ddx*8
-
- //OPTIMIZATION: fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY - are sub registers of same GRF. Use NODDCLR NODDCHK. -rT
-
- // Calculating X(8)
- mov (1) acc0.2:f r6.0:f
- mac (1) acc0.2:f r3.0:f 8.0:f
- mac (1) r23.2:f r9.5:f 28.0:f { NoDDClr }
-
- // Calculating Y(4)
- mul (1) r23.1<1>:f r4.0:f 4.0:f { NoDDClr, NoDDChk } //dY*4
-
- // Calculating dx(8)
- mov (1) acc0.4:f r3.0:f
- mac (1) r23.4:f r9.5:f 8.0:f { NoDDClr, NoDDChk }
-
- // Binding Index
- mov (1) r23.5:ud 0:ud { NoDDChk }
-
-
-SKIP_LAYER_L0:
- nop
-
-
diff --git a/src/shaders/post_processing/gen7/VP_Setup.g4a b/src/shaders/post_processing/gen7/VP_Setup.g4a
deleted file mode 100644
index 837e3c9..0000000
--- a/src/shaders/post_processing/gen7/VP_Setup.g4a
+++ /dev/null
@@ -1,875 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// 326 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: VP_Setup.asm
-// Author: Vivek Kumar
-// Description: Sets up all parameters for the Video Processing Kernel
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
-//Setup pointer to the inline parameter
-
-// Copy MSG HDR
- mov (8) r27.0<1>:ud r0.0<8;8,1>:ud // Initialize message payload header with R0
-
-
-//temp; remove it once unread msg warnings are resolved -vK
-mov (8) r25:ud r0.0<8;8,1>:ud
-mov (8) r26:ud r0.0<8;8,1>:ud
-
-// Calculate StepX for all layers and overwrite it on the ratio
- mul (8) r3.0<1>:f r3.0<8;8,1>:f r9.4<0;1,0>:f //StepX_ratio = StepX / VideoStepX
-
- //Normalised Ratio of Horizontal step size with main video for all layers now becomes
- //Normalised Horizontal step size for all layers
-
-// Calculate block origin for all layers and overwrite it on the frame origin
- mov (2) r8.5<1>:f r9.0<2;2,1>:w //Convert origin from word to float
-
- cmp.e.f0.0 (8) null<1>:d r2.26:ub 1:uw
-
-
- shr (1) r17.0<1>:uw r2.2<0;1,0>:uw 0:uw
- and (1) r17.0<1>:uw r17.0<0;1,0>:uw 3:uw
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 1:uw
- (f0.1) jmpi (1) ROTATE_90_L0
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 2:uw
- (f0.1) jmpi (1) ROTATE_180_L0
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 3:uw
- (f0.1) jmpi (1) ROTATE_270_L0
-
- // rotate 0 degree
-ROTATE_0_L0:
- (-f0.0)mov (1) acc0.0:f r6.0<0;1,0>:f
- (-f0.0)mac (1) r6.0<1>:f r3.0<0;1,0>:f r8.5<0;1,0>:f
-
- mov (1) acc0.0:f r5.0<0;1,0>:f
- mac (1) r5.0<1>:f r4.0<0;1,0>:f r8.6<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L0
-
- // rotate 90 degree
-ROTATE_90_L0:
- (-f0.0)mov (1) acc0.0:f r6.0<0;1,0>:f
- (-f0.0)mac (1) r6.0<1>:f r3.0<0;1,0>:f r8.6<0;1,0>:f
-
- mov (1) r16.0<1>:f r2.0<0;1,0>:uw
- add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
- add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
-
- mov (1) acc0.0:f r5.0<0;1,0>:f
- mac (1) r5.0<1>:f r4.0<0;1,0>:f r17.0<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L0
-
- // rotate 180 degree
-ROTATE_180_L0:
- (-f0.0)mov (1) r16.0<1>:f r2.0<0;1,0>:uw
- (-f0.0)add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
- (-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- (-f0.0)mov (1) acc0.0:f r6.0<0;1,0>:f
- (-f0.0)mac (1) r6.0<1>:f r3.0<0;1,0>:f r17.0<0;1,0>:f
-
- mov (1) r16.0<1>:f r2.1<0;1,0>:uw
- add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
- add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- mov (1) acc0.0:f r5.0<0;1,0>:f
- mac (1) r5.0<1>:f r4.0<0;1,0>:f r17.0<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L0
-
- // rotate 270 degree
-ROTATE_270_L0:
- (-f0.0)mov (1) r16.0<1>:f r2.1<0;1,0>:uw
- (-f0.0)add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
- (-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- (-f0.0)mov (1) acc0.0:f r6.0<0;1,0>:f
- (-f0.0)mac (1) r6.0<1>:f r3.0<0;1,0>:f r17.0<0;1,0>:f
-
- mov (1) acc0.0:f r5.0<0;1,0>:f
- mac (1) r5.0<1>:f r4.0<0;1,0>:f r8.5<0;1,0>:f
-
-END_SRC_BLOCK_ORIG_COMP_L0:
- nop
- shr (1) r17.0<1>:uw r2.2<0;1,0>:uw 2:uw
- and (1) r17.0<1>:uw r17.0<0;1,0>:uw 3:uw
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 1:uw
- (f0.1) jmpi (1) ROTATE_90_L1
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 2:uw
- (f0.1) jmpi (1) ROTATE_180_L1
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 3:uw
- (f0.1) jmpi (1) ROTATE_270_L1
-
- // rotate 0 degree
-ROTATE_0_L1:
- (-f0.0)mov (1) acc0.1:f r6.1<0;1,0>:f
- (-f0.0)mac (1) r6.1<1>:f r3.1<0;1,0>:f r8.5<0;1,0>:f
-
- mov (1) acc0.1:f r5.1<0;1,0>:f
- mac (1) r5.1<1>:f r4.1<0;1,0>:f r8.6<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L1
-
- // rotate 90 degree
-ROTATE_90_L1:
- (-f0.0)mov (1) acc0.1:f r6.1<0;1,0>:f
- (-f0.0)mac (1) r6.1<1>:f r3.1<0;1,0>:f r8.6<0;1,0>:f
-
- mov (1) r16.0<1>:f r2.0<0;1,0>:uw
- add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
- add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
-
- mov (1) acc0.1:f r5.1<0;1,0>:f
- mac (1) r5.1<1>:f r4.1<0;1,0>:f r17.0<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L1
-
- // rotate 180 degree
-ROTATE_180_L1:
- (-f0.0)mov (1) r16.0<1>:f r2.0<0;1,0>:uw
- (-f0.0)add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
- (-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- (-f0.0)mov (1) acc0.1:f r6.1<0;1,0>:f
- (-f0.0)mac (1) r6.1<1>:f r3.1<0;1,0>:f r17.0<0;1,0>:f
-
- mov (1) r16.0<1>:f r2.1<0;1,0>:uw
- add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
- add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- mov (1) acc0.1:f r5.1<0;1,0>:f
- mac (1) r5.1<1>:f r4.1<0;1,0>:f r17.0<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L1
-
- // rotate 270 degree
-ROTATE_270_L1:
- (-f0.0)mov (1) r16.0<1>:f r2.1<0;1,0>:uw
- (-f0.0)add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
- (-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- (-f0.0)mov (1) acc0.1:f r6.1<0;1,0>:f
- (-f0.0)mac (1) r6.1<1>:f r3.1<0;1,0>:f r17.0<0;1,0>:f
-
- mov (1) acc0.1:f r5.1<0;1,0>:f
- mac (1) r5.1<1>:f r4.1<0;1,0>:f r8.5<0;1,0>:f
-
-END_SRC_BLOCK_ORIG_COMP_L1:
- nop
- shr (1) r17.0<1>:uw r2.2<0;1,0>:uw 4:uw
- and (1) r17.0<1>:uw r17.0<0;1,0>:uw 3:uw
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 1:uw
- (f0.1) jmpi (1) ROTATE_90_L2
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 2:uw
- (f0.1) jmpi (1) ROTATE_180_L2
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 3:uw
- (f0.1) jmpi (1) ROTATE_270_L2
-
- // rotate 0 degree
-ROTATE_0_L2:
- (-f0.0)mov (1) acc0.2:f r6.2<0;1,0>:f
- (-f0.0)mac (1) r6.2<1>:f r3.2<0;1,0>:f r8.5<0;1,0>:f
-
- mov (1) acc0.2:f r5.2<0;1,0>:f
- mac (1) r5.2<1>:f r4.2<0;1,0>:f r8.6<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L2
-
- // rotate 90 degree
-ROTATE_90_L2:
- (-f0.0)mov (1) acc0.2:f r6.2<0;1,0>:f
- (-f0.0)mac (1) r6.2<1>:f r3.2<0;1,0>:f r8.6<0;1,0>:f
-
- mov (1) r16.0<1>:f r2.0<0;1,0>:uw
- add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
- add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
-
- mov (1) acc0.2:f r5.2<0;1,0>:f
- mac (1) r5.2<1>:f r4.2<0;1,0>:f r17.0<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L2
-
- // rotate 180 degree
-ROTATE_180_L2:
- (-f0.0)mov (1) r16.0<1>:f r2.0<0;1,0>:uw
- (-f0.0)add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
- (-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- (-f0.0)mov (1) acc0.2:f r6.2<0;1,0>:f
- (-f0.0)mac (1) r6.2<1>:f r3.2<0;1,0>:f r17.0<0;1,0>:f
-
- mov (1) r16.0<1>:f r2.1<0;1,0>:uw
- add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
- add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- mov (1) acc0.2:f r5.2<0;1,0>:f
- mac (1) r5.2<1>:f r4.2<0;1,0>:f r17.0<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L2
-
- // rotate 270 degree
-ROTATE_270_L2:
- (-f0.0)mov (1) r16.0<1>:f r2.1<0;1,0>:uw
- (-f0.0)add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
- (-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- (-f0.0)mov (1) acc0.2:f r6.2<0;1,0>:f
- (-f0.0)mac (1) r6.2<1>:f r3.2<0;1,0>:f r17.0<0;1,0>:f
-
- mov (1) acc0.2:f r5.2<0;1,0>:f
- mac (1) r5.2<1>:f r4.2<0;1,0>:f r8.5<0;1,0>:f
-
-END_SRC_BLOCK_ORIG_COMP_L2:
- nop
- shr (1) r17.0<1>:uw r2.2<0;1,0>:uw 6:uw
- and (1) r17.0<1>:uw r17.0<0;1,0>:uw 3:uw
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 1:uw
- (f0.1) jmpi (1) ROTATE_90_L3
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 2:uw
- (f0.1) jmpi (1) ROTATE_180_L3
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 3:uw
- (f0.1) jmpi (1) ROTATE_270_L3
-
- // rotate 0 degree
-ROTATE_0_L3:
- (-f0.0)mov (1) acc0.3:f r6.3<0;1,0>:f
- (-f0.0)mac (1) r6.3<1>:f r3.3<0;1,0>:f r8.5<0;1,0>:f
-
- mov (1) acc0.3:f r5.3<0;1,0>:f
- mac (1) r5.3<1>:f r4.3<0;1,0>:f r8.6<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L3
-
- // rotate 90 degree
-ROTATE_90_L3:
- (-f0.0)mov (1) acc0.3:f r6.3<0;1,0>:f
- (-f0.0)mac (1) r6.3<1>:f r3.3<0;1,0>:f r8.6<0;1,0>:f
-
- mov (1) r16.0<1>:f r2.0<0;1,0>:uw
- add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
- add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
-
- mov (1) acc0.3:f r5.3<0;1,0>:f
- mac (1) r5.3<1>:f r4.3<0;1,0>:f r17.0<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L3
-
- // rotate 180 degree
-ROTATE_180_L3:
- (-f0.0)mov (1) r16.0<1>:f r2.0<0;1,0>:uw
- (-f0.0)add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
- (-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- (-f0.0)mov (1) acc0.3:f r6.3<0;1,0>:f
- (-f0.0)mac (1) r6.3<1>:f r3.3<0;1,0>:f r17.0<0;1,0>:f
-
- mov (1) r16.0<1>:f r2.1<0;1,0>:uw
- add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
- add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- mov (1) acc0.3:f r5.3<0;1,0>:f
- mac (1) r5.3<1>:f r4.3<0;1,0>:f r17.0<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L3
-
- // rotate 270 degree
-ROTATE_270_L3:
- (-f0.0)mov (1) r16.0<1>:f r2.1<0;1,0>:uw
- (-f0.0)add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
- (-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- (-f0.0)mov (1) acc0.3:f r6.3<0;1,0>:f
- (-f0.0)mac (1) r6.3<1>:f r3.3<0;1,0>:f r17.0<0;1,0>:f
-
- mov (1) acc0.3:f r5.3<0;1,0>:f
- mac (1) r5.3<1>:f r4.3<0;1,0>:f r8.5<0;1,0>:f
-
-END_SRC_BLOCK_ORIG_COMP_L3:
- nop
- shr (1) r17.0<1>:uw r2.2<0;1,0>:uw 8:uw
- and (1) r17.0<1>:uw r17.0<0;1,0>:uw 3:uw
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 1:uw
- (f0.1) jmpi (1) ROTATE_90_L4
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 2:uw
- (f0.1) jmpi (1) ROTATE_180_L4
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 3:uw
- (f0.1) jmpi (1) ROTATE_270_L4
-
- // rotate 0 degree
-ROTATE_0_L4:
- (-f0.0)mov (1) acc0.4:f r6.4<0;1,0>:f
- (-f0.0)mac (1) r6.4<1>:f r3.4<0;1,0>:f r8.5<0;1,0>:f
-
- mov (1) acc0.4:f r5.4<0;1,0>:f
- mac (1) r5.4<1>:f r4.4<0;1,0>:f r8.6<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L4
-
- // rotate 90 degree
-ROTATE_90_L4:
- (-f0.0)mov (1) acc0.4:f r6.4<0;1,0>:f
- (-f0.0)mac (1) r6.4<1>:f r3.4<0;1,0>:f r8.6<0;1,0>:f
-
- mov (1) r16.0<1>:f r2.0<0;1,0>:uw
- add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
- add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
-
- mov (1) acc0.4:f r5.4<0;1,0>:f
- mac (1) r5.4<1>:f r4.4<0;1,0>:f r17.0<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L4
-
- // rotate 180 degree
-ROTATE_180_L4:
- (-f0.0)mov (1) r16.0<1>:f r2.0<0;1,0>:uw
- (-f0.0)add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
- (-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- (-f0.0)mov (1) acc0.4:f r6.4<0;1,0>:f
- (-f0.0)mac (1) r6.4<1>:f r3.4<0;1,0>:f r17.0<0;1,0>:f
-
- mov (1) r16.0<1>:f r2.1<0;1,0>:uw
- add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
- add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- mov (1) acc0.4:f r5.4<0;1,0>:f
- mac (1) r5.4<1>:f r4.4<0;1,0>:f r17.0<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L4
-
- // rotate 270 degree
-ROTATE_270_L4:
- (-f0.0)mov (1) r16.0<1>:f r2.1<0;1,0>:uw
- (-f0.0)add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
- (-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- (-f0.0)mov (1) acc0.4:f r6.4<0;1,0>:f
- (-f0.0)mac (1) r6.4<1>:f r3.4<0;1,0>:f r17.0<0;1,0>:f
-
- mov (1) acc0.4:f r5.4<0;1,0>:f
- mac (1) r5.4<1>:f r4.4<0;1,0>:f r8.5<0;1,0>:f
-
-END_SRC_BLOCK_ORIG_COMP_L4:
- nop
- shr (1) r17.0<1>:uw r2.2<0;1,0>:uw 10:uw
- and (1) r17.0<1>:uw r17.0<0;1,0>:uw 3:uw
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 1:uw
- (f0.1) jmpi (1) ROTATE_90_L5
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 2:uw
- (f0.1) jmpi (1) ROTATE_180_L5
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 3:uw
- (f0.1) jmpi (1) ROTATE_270_L5
-
- // rotate 0 degree
-ROTATE_0_L5:
- (-f0.0)mov (1) acc0.5:f r6.5<0;1,0>:f
- (-f0.0)mac (1) r6.5<1>:f r3.5<0;1,0>:f r8.5<0;1,0>:f
-
- mov (1) acc0.5:f r5.5<0;1,0>:f
- mac (1) r5.5<1>:f r4.5<0;1,0>:f r8.6<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L5
-
- // rotate 90 degree
-ROTATE_90_L5:
- (-f0.0)mov (1) acc0.5:f r6.5<0;1,0>:f
- (-f0.0)mac (1) r6.5<1>:f r3.5<0;1,0>:f r8.6<0;1,0>:f
-
- mov (1) r16.0<1>:f r2.0<0;1,0>:uw
- add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
- add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
-
- mov (1) acc0.5:f r5.5<0;1,0>:f
- mac (1) r5.5<1>:f r4.5<0;1,0>:f r17.0<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L5
-
- // rotate 180 degree
-ROTATE_180_L5:
- (-f0.0)mov (1) r16.0<1>:f r2.0<0;1,0>:uw
- (-f0.0)add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
- (-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- (-f0.0)mov (1) acc0.5:f r6.5<0;1,0>:f
- (-f0.0)mac (1) r6.5<1>:f r3.5<0;1,0>:f r17.0<0;1,0>:f
-
- mov (1) r16.0<1>:f r2.1<0;1,0>:uw
- add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
- add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- mov (1) acc0.5:f r5.5<0;1,0>:f
- mac (1) r5.5<1>:f r4.5<0;1,0>:f r17.0<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L5
-
- // rotate 270 degree
-ROTATE_270_L5:
- (-f0.0)mov (1) r16.0<1>:f r2.1<0;1,0>:uw
- (-f0.0)add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
- (-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- (-f0.0)mov (1) acc0.5:f r6.5<0;1,0>:f
- (-f0.0)mac (1) r6.5<1>:f r3.5<0;1,0>:f r17.0<0;1,0>:f
-
- mov (1) acc0.5:f r5.5<0;1,0>:f
- mac (1) r5.5<1>:f r4.5<0;1,0>:f r8.5<0;1,0>:f
-
-END_SRC_BLOCK_ORIG_COMP_L5:
- nop
- shr (1) r17.0<1>:uw r2.2<0;1,0>:uw 12:uw
- and (1) r17.0<1>:uw r17.0<0;1,0>:uw 3:uw
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 1:uw
- (f0.1) jmpi (1) ROTATE_90_L6
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 2:uw
- (f0.1) jmpi (1) ROTATE_180_L6
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 3:uw
- (f0.1) jmpi (1) ROTATE_270_L6
-
- // rotate 0 degree
-ROTATE_0_L6:
- (-f0.0)mov (1) acc0.6:f r6.6<0;1,0>:f
- (-f0.0)mac (1) r6.6<1>:f r3.6<0;1,0>:f r8.5<0;1,0>:f
-
- mov (1) acc0.6:f r5.6<0;1,0>:f
- mac (1) r5.6<1>:f r4.6<0;1,0>:f r8.6<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L6
-
- // rotate 90 degree
-ROTATE_90_L6:
- (-f0.0)mov (1) acc0.6:f r6.6<0;1,0>:f
- (-f0.0)mac (1) r6.6<1>:f r3.6<0;1,0>:f r8.6<0;1,0>:f
-
- mov (1) r16.0<1>:f r2.0<0;1,0>:uw
- add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
- add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
-
- mov (1) acc0.6:f r5.6<0;1,0>:f
- mac (1) r5.6<1>:f r4.6<0;1,0>:f r17.0<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L6
-
- // rotate 180 degree
-ROTATE_180_L6:
- (-f0.0)mov (1) r16.0<1>:f r2.0<0;1,0>:uw
- (-f0.0)add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
- (-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- (-f0.0)mov (1) acc0.6:f r6.6<0;1,0>:f
- (-f0.0)mac (1) r6.6<1>:f r3.6<0;1,0>:f r17.0<0;1,0>:f
-
- mov (1) r16.0<1>:f r2.1<0;1,0>:uw
- add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
- add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- mov (1) acc0.6:f r5.6<0;1,0>:f
- mac (1) r5.6<1>:f r4.6<0;1,0>:f r17.0<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L6
-
- // rotate 270 degree
-ROTATE_270_L6:
- (-f0.0)mov (1) r16.0<1>:f r2.1<0;1,0>:uw
- (-f0.0)add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
- (-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- (-f0.0)mov (1) acc0.6:f r6.6<0;1,0>:f
- (-f0.0)mac (1) r6.6<1>:f r3.6<0;1,0>:f r17.0<0;1,0>:f
-
- mov (1) acc0.6:f r5.6<0;1,0>:f
- mac (1) r5.6<1>:f r4.6<0;1,0>:f r8.5<0;1,0>:f
-
-END_SRC_BLOCK_ORIG_COMP_L6:
- nop
- shr (1) r17.0<1>:uw r2.2<0;1,0>:uw 14:uw
- and (1) r17.0<1>:uw r17.0<0;1,0>:uw 3:uw
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 1:uw
- (f0.1) jmpi (1) ROTATE_90_L7
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 2:uw
- (f0.1) jmpi (1) ROTATE_180_L7
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 3:uw
- (f0.1) jmpi (1) ROTATE_270_L7
-
- // rotate 0 degree
-ROTATE_0_L7:
- (-f0.0)mov (1) acc0.7:f r6.7<0;1,0>:f
- (-f0.0)mac (1) r6.7<1>:f r3.7<0;1,0>:f r8.5<0;1,0>:f
-
- mov (1) acc0.7:f r5.7<0;1,0>:f
- mac (1) r5.7<1>:f r4.7<0;1,0>:f r8.6<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L7
-
- // rotate 90 degree
-ROTATE_90_L7:
- (-f0.0)mov (1) acc0.7:f r6.7<0;1,0>:f
- (-f0.0)mac (1) r6.7<1>:f r3.7<0;1,0>:f r8.6<0;1,0>:f
-
- mov (1) r16.0<1>:f r2.0<0;1,0>:uw
- add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
- add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
-
- mov (1) acc0.7:f r5.7<0;1,0>:f
- mac (1) r5.7<1>:f r4.7<0;1,0>:f r17.0<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L7
-
- // rotate 180 degree
-ROTATE_180_L7:
- (-f0.0)mov (1) r16.0<1>:f r2.0<0;1,0>:uw
- (-f0.0)add (1) r17.0<1>:f -r8.5<0;1,0>:f r16.0<0;1,0>:f
- (-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- (-f0.0)mov (1) acc0.7:f r6.7<0;1,0>:f
- (-f0.0)mac (1) r6.7<1>:f r3.7<0;1,0>:f r17.0<0;1,0>:f
-
- mov (1) r16.0<1>:f r2.1<0;1,0>:uw
- add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
- add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- mov (1) acc0.7:f r5.7<0;1,0>:f
- mac (1) r5.7<1>:f r4.7<0;1,0>:f r17.0<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L7
-
- // rotate 270 degree
-ROTATE_270_L7:
- (-f0.0)mov (1) r16.0<1>:f r2.1<0;1,0>:uw
- (-f0.0)add (1) r17.0<1>:f -r8.6<0;1,0>:f r16.0<0;1,0>:f
- (-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- (-f0.0)mov (1) acc0.7:f r6.7<0;1,0>:f
- (-f0.0)mac (1) r6.7<1>:f r3.7<0;1,0>:f r17.0<0;1,0>:f
-
- mov (1) acc0.7:f r5.7<0;1,0>:f
- mac (1) r5.7<1>:f r4.7<0;1,0>:f r8.5<0;1,0>:f
-
-END_SRC_BLOCK_ORIG_COMP_L7:
- nop
-
-
diff --git a/src/shaders/post_processing/gen7/YUV_to_RGB.g4a b/src/shaders/post_processing/gen7/YUV_to_RGB.g4a
deleted file mode 100644
index c7e1246..0000000
--- a/src/shaders/post_processing/gen7/YUV_to_RGB.g4a
+++ /dev/null
@@ -1,1017 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * This file was originally licensed under the following license
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- */
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// Module name: YUV_to_RGB.asm
-//
-// Convert YUV to RGB, handle it by 16x4 block
-//
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare bBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare bBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare bBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare bBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
-//Msg payload buffers; upto 4 full-size messages can be written
-
-//Unnecessary to use the MSGPayLoad, So it is temporiarily used for conversion of YUV->RGB
-
-.declare fBUFFER_R Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-.declare fBUFFER_G Base=r30.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-.declare fBUFFER_B Base=r32.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-.declare fBUFFER_Y Base=r36.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-.declare fBUFFER_U Base=r38.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-.declare fBUFFER_V Base=r40.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-
-.declare wTempR Base=r42.0 ElementSize=2 Type=w
-.declare wTempG Base=r44.0 ElementSize=2 Type=w
-.declare wTempB Base=r46.0 ElementSize=2 Type=w
-
-.declare ubTempR Base=r42.0 ElementSize=1 Type=ub
-.declare ubTempG Base=r44.0 ElementSize=1 Type=ub
-.declare ubTempB Base=r46.0 ElementSize=1 Type=ub
-
- // the r17 register (nTEMP0) is originally defined from "Common.inc"
- // instead of re-defining a nTEMP0 here, we use "SAVE_RGB" suffix for its naming
-
- .declare wTemp0 Base=r17.0 ElementSize=2 Type=uw
-
-
-//_SAVE_INC_
- // NTSC standard
- // R = Clamp ( 1.164(Y-16/255) + 1.596(Cr-128/255))
- // G = Clamp ( 1.164(Y-16/255) - 0.813(Cr-128/255) - 0.392(Cb-128/255))
- // B = Clamp ( 1.164(Y-16/255) + 2.017(Cb-128/255))
- // ITU-R conversion, Now we are using ITU-R conversion
- // R = clip( Y + 1.402*(Cr-128)) // ITU-R
- // G = clip( Y - 0.344*(Cb-128) - 0.714*(Cr-128))
- // B = clip( Y + 1.772*(Cb-128))
-
- // At the save module we have all 8 address sub-registers available.
- // So we will use PING-PONG type of scheme to save the data using
- // pointers pBUF_CHNL_TOP_8x4 and pBUF_CHNL_BOT_8x4. This will help
- // reduce dependency. - rT
-
- //wBUFF_CHNL_PTR points to either buffer 0 or buffer 4.
- //Add appropriate offsets to get pointers for all buffers (1,2,3 or 5).
- //Offsets are zero for buffer 0 and buffer 4.
- //Y/U/V is also stored as R/G/B for the internal purpose
-//for BUFFER_0
- mov (4) a0.0<1>:uw r22.0<4;4,1>:uw
-//the first line in the block 0
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 1]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 17]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 1]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 17]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 1]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 17]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,1]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,1]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,1]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the second line in the block 0
-
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 33]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 49]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 33]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 49]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 33]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 49]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,33]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,33]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,33]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the third line in the block 0
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 65]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 81]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 65]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 81]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 65]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 81]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,65]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,65]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,65]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the fourth line in the block 0
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 97]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 113]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 97]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 113]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 97]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 113]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,97]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,97]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,97]<2>:ub ubTempB(0, 0)<32;8,4>
-
-
-//for BUFFER_1
- add (4) a0.0<1>:uw r22.0<4;4,1>:uw 512:uw
-//the first line in the block 1
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 1]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 17]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 1]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 17]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 1]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 17]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,1]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,1]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,1]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the second line in the block 1
-
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 33]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 49]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 33]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 49]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 33]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 49]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,33]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,33]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,33]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the third line in the block 1
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 65]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 81]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 65]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 81]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 65]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 81]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,65]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,65]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,65]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the fourth line in the block 1
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 97]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 113]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 97]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 113]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 97]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 113]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,97]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,97]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,97]<2>:ub ubTempB(0, 0)<32;8,4>
-
-
-//for BUFFER_2
- add (4) a0.0<1>:uw r22.0<4;4,1>:uw 1024:uw
-//the first line in the block 2
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 1]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 17]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 1]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 17]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 1]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 17]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,1]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,1]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,1]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the second line in the block 2
-
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 33]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 49]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 33]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 49]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 33]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 49]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,33]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,33]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,33]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the third line in the block 2
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 65]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 81]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 65]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 81]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 65]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 81]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,65]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,65]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,65]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the fourth line in the block 2
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 97]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 113]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 97]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 113]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 97]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 113]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,97]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,97]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,97]<2>:ub ubTempB(0, 0)<32;8,4>
-
-
-//for BUFFER_3
- add (4) a0.0<1>:uw r22.0<4;4,1>:uw 1536:uw
-//the first line in the block 3
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 1]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 17]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 1]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 17]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 1]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 17]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,1]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,1]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,1]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the second line in the block 3
-
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 33]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 49]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 33]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 49]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 33]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 49]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,33]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,33]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,33]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the third line in the block 3
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 65]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 81]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 65]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 81]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 65]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 81]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,65]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,65]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,65]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the fourth line in the block 3
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 97]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 113]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 97]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 113]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 97]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 113]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,97]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,97]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,97]<2>:ub ubTempB(0, 0)<32;8,4>
-
diff --git a/src/shaders/post_processing/gen7/avs.asm b/src/shaders/post_processing/gen7/avs.asm
deleted file mode 100644
index 091ed50..0000000
--- a/src/shaders/post_processing/gen7/avs.asm
+++ /dev/null
@@ -1,19 +0,0 @@
-// Module name: AVS
-.kernel AVS
-.code
-
-#include "VP_Setup.g4a"
-#include "Set_Layer_0.g4a"
-#include "Set_AVS_Buf_0123_PL2.g4a"
-#include "PL2_AVS_Buf_0.g4a"
-#include "PL2_AVS_Buf_1.g4a"
-#include "PL2_AVS_Buf_2.g4a"
-#include "PL2_AVS_Buf_3.g4a"
-#include "Save_AVS_NV12.g4a"
-#include "EOT.g4a"
-
-.end_code
-
-.end_kernel
-
-// end of DNDI
diff --git a/src/shaders/post_processing/gen7/avs.g75b b/src/shaders/post_processing/gen7/avs.g75b
deleted file mode 100644
index 310ce94..0000000
--- a/src/shaders/post_processing/gen7/avs.g75b
+++ /dev/null
@@ -1,604 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000000d0 },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000290 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00200401, 0x238001a5, 0x00450120, 0x00000000 },
- { 0x00000401, 0x24a001a5, 0x00000120, 0x00000000 },
- { 0x00000c08, 0x24a43da5, 0x00000122, 0x00010001 },
- { 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
- { 0x00000801, 0x24a80061, 0x00000000, 0x0007000f },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x44c00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x44d00231, 0x00cf8841, 0x00000000 },
- { 0x00600c01, 0x44c10231, 0x00cf8001, 0x00000000 },
- { 0x00600801, 0x44d10231, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
- { 0x00600401, 0x44e00231, 0x00cf9801, 0x00000000 },
- { 0x00600c01, 0x44f00231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x44e10231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x44f10231, 0x00cf9041, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x45000231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x45100231, 0x00cf8841, 0x00000000 },
- { 0x00600c01, 0x45010231, 0x00cf8001, 0x00000000 },
- { 0x00600801, 0x45110231, 0x00cf8041, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
- { 0x00600401, 0x45200231, 0x00cf9801, 0x00000000 },
- { 0x00600c01, 0x45300231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x45210231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x45310231, 0x00cf9041, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x0a0a8019 },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/avs.g7b b/src/shaders/post_processing/gen7/avs.g7b
deleted file mode 100644
index 995648c..0000000
--- a/src/shaders/post_processing/gen7/avs.g7b
+++ /dev/null
@@ -1,604 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x0000001a },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000052 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00200401, 0x238001a5, 0x00450120, 0x00000000 },
- { 0x00000401, 0x24a001a5, 0x00000120, 0x00000000 },
- { 0x00000c08, 0x24a43da5, 0x00000122, 0x00010001 },
- { 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
- { 0x00000801, 0x24a80061, 0x00000000, 0x0007000f },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x44c00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x44d00231, 0x00cf8841, 0x00000000 },
- { 0x00600c01, 0x44c10231, 0x00cf8001, 0x00000000 },
- { 0x00600801, 0x44d10231, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
- { 0x00600401, 0x44e00231, 0x00cf9801, 0x00000000 },
- { 0x00600c01, 0x44f00231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x44e10231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x44f10231, 0x00cf9041, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x45000231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x45100231, 0x00cf8841, 0x00000000 },
- { 0x00600c01, 0x45010231, 0x00cf8001, 0x00000000 },
- { 0x00600801, 0x45110231, 0x00cf8041, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
- { 0x00600401, 0x45200231, 0x00cf9801, 0x00000000 },
- { 0x00600c01, 0x45300231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x45210231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x45310231, 0x00cf9041, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x0a0a8019 },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/dndi.asm b/src/shaders/post_processing/gen7/dndi.asm
deleted file mode 100644
index b820fdb..0000000
--- a/src/shaders/post_processing/gen7/dndi.asm
+++ /dev/null
@@ -1,11 +0,0 @@
-// Module name: DNDI
-.kernel DNDI
-.code
-
-#include "NV12_DI_NV12.g4a"
-
-.end_code
-
-.end_kernel
-
-// end of DNDI
diff --git a/src/shaders/post_processing/gen7/dndi.g75b b/src/shaders/post_processing/gen7/dndi.g75b
deleted file mode 100644
index 2f9dff9..0000000
--- a/src/shaders/post_processing/gen7/dndi.g75b
+++ /dev/null
@@ -1,46 +0,0 @@
- { 0x00600001, 0x22400021, 0x008d0000, 0x00000000 },
- { 0x00000401, 0x226801ad, 0x00000120, 0x00000000 },
- { 0x00000801, 0x227801ad, 0x00000122, 0x00000000 },
- { 0x02600031, 0x25c00e21, 0x00000240, 0x04ae8003 },
- { 0x00200001, 0x2120012d, 0x004506fc, 0x00000000 },
- { 0x00600001, 0x22800021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x22a00021, 0x008d06c0, 0x00000000 },
- { 0x00000408, 0x22803da1, 0x00000120, 0x00010001 },
- { 0x00000c01, 0x228401a1, 0x00000122, 0x00000000 },
- { 0x00000801, 0x22880061, 0x00000000, 0x00030007 },
- { 0x05600031, 0x20000e24, 0x00000280, 0x040a8021 },
- { 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23000021, 0x008d0000, 0x00000000 },
- { 0x00000408, 0x23003da1, 0x00000120, 0x00010001 },
- { 0x00000041, 0x24043da0, 0x00000122, 0x00030003 },
- { 0x00000c08, 0x23043c01, 0x00000404, 0x00020002 },
- { 0x00000801, 0x23080061, 0x00000000, 0x00020007 },
- { 0x00200040, 0x23002421, 0x00450300, 0x00450038 },
- { 0x00000401, 0x23200021, 0x000006e4, 0x00000000 },
- { 0x00200c01, 0x432c0021, 0x004506ec, 0x00000000 },
- { 0x00200801, 0x43280021, 0x004506f4, 0x00000000 },
- { 0x05600031, 0x20000e24, 0x00000300, 0x040a8021 },
- { 0x00600001, 0x23800021, 0x008d0000, 0x00000000 },
- { 0x00000401, 0x238001a5, 0x00000120, 0x00000000 },
- { 0x00000c01, 0x238401a5, 0x00000122, 0x00000000 },
- { 0x00000801, 0x23880061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x22400021, 0x008d0380, 0x00000000 },
- { 0x00600001, 0x22e00021, 0x008d0380, 0x00000000 },
- { 0x00600001, 0x22600021, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x22800021, 0x008d05e0, 0x00000000 },
- { 0x00600001, 0x23000021, 0x008d0640, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0660, 0x00000000 },
- { 0x0000040c, 0x23843ca5, 0x00000384, 0x00010001 },
- { 0x00000801, 0x23880061, 0x00000000, 0x0001000f },
- { 0x00800401, 0x42c00231, 0x00ce0601, 0x00000000 },
- { 0x00800801, 0x42c10231, 0x00ce0600, 0x00000000 },
- { 0x00800401, 0x43600231, 0x00ce0681, 0x00000000 },
- { 0x00800801, 0x43610231, 0x00ce0680, 0x00000000 },
- { 0x00600001, 0x22a00021, 0x008d0380, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0380, 0x00000000 },
- { 0x05600031, 0x20000e24, 0x00000240, 0x060a801b },
- { 0x05600031, 0x20000e24, 0x000002e0, 0x060a801e },
- { 0x05600031, 0x20000e24, 0x000002a0, 0x040a801c },
- { 0x05600031, 0x20000e24, 0x00000340, 0x040a801f },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/dndi.g7b b/src/shaders/post_processing/gen7/dndi.g7b
deleted file mode 100644
index 2f9dff9..0000000
--- a/src/shaders/post_processing/gen7/dndi.g7b
+++ /dev/null
@@ -1,46 +0,0 @@
- { 0x00600001, 0x22400021, 0x008d0000, 0x00000000 },
- { 0x00000401, 0x226801ad, 0x00000120, 0x00000000 },
- { 0x00000801, 0x227801ad, 0x00000122, 0x00000000 },
- { 0x02600031, 0x25c00e21, 0x00000240, 0x04ae8003 },
- { 0x00200001, 0x2120012d, 0x004506fc, 0x00000000 },
- { 0x00600001, 0x22800021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x22a00021, 0x008d06c0, 0x00000000 },
- { 0x00000408, 0x22803da1, 0x00000120, 0x00010001 },
- { 0x00000c01, 0x228401a1, 0x00000122, 0x00000000 },
- { 0x00000801, 0x22880061, 0x00000000, 0x00030007 },
- { 0x05600031, 0x20000e24, 0x00000280, 0x040a8021 },
- { 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23000021, 0x008d0000, 0x00000000 },
- { 0x00000408, 0x23003da1, 0x00000120, 0x00010001 },
- { 0x00000041, 0x24043da0, 0x00000122, 0x00030003 },
- { 0x00000c08, 0x23043c01, 0x00000404, 0x00020002 },
- { 0x00000801, 0x23080061, 0x00000000, 0x00020007 },
- { 0x00200040, 0x23002421, 0x00450300, 0x00450038 },
- { 0x00000401, 0x23200021, 0x000006e4, 0x00000000 },
- { 0x00200c01, 0x432c0021, 0x004506ec, 0x00000000 },
- { 0x00200801, 0x43280021, 0x004506f4, 0x00000000 },
- { 0x05600031, 0x20000e24, 0x00000300, 0x040a8021 },
- { 0x00600001, 0x23800021, 0x008d0000, 0x00000000 },
- { 0x00000401, 0x238001a5, 0x00000120, 0x00000000 },
- { 0x00000c01, 0x238401a5, 0x00000122, 0x00000000 },
- { 0x00000801, 0x23880061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x22400021, 0x008d0380, 0x00000000 },
- { 0x00600001, 0x22e00021, 0x008d0380, 0x00000000 },
- { 0x00600001, 0x22600021, 0x008d05c0, 0x00000000 },
- { 0x00600001, 0x22800021, 0x008d05e0, 0x00000000 },
- { 0x00600001, 0x23000021, 0x008d0640, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0660, 0x00000000 },
- { 0x0000040c, 0x23843ca5, 0x00000384, 0x00010001 },
- { 0x00000801, 0x23880061, 0x00000000, 0x0001000f },
- { 0x00800401, 0x42c00231, 0x00ce0601, 0x00000000 },
- { 0x00800801, 0x42c10231, 0x00ce0600, 0x00000000 },
- { 0x00800401, 0x43600231, 0x00ce0681, 0x00000000 },
- { 0x00800801, 0x43610231, 0x00ce0680, 0x00000000 },
- { 0x00600001, 0x22a00021, 0x008d0380, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0380, 0x00000000 },
- { 0x05600031, 0x20000e24, 0x00000240, 0x060a801b },
- { 0x05600031, 0x20000e24, 0x000002e0, 0x060a801e },
- { 0x05600031, 0x20000e24, 0x000002a0, 0x040a801c },
- { 0x05600031, 0x20000e24, 0x00000340, 0x040a801f },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/nv12_dn_nv12.asm b/src/shaders/post_processing/gen7/nv12_dn_nv12.asm
deleted file mode 100644
index 94e7c6b..0000000
--- a/src/shaders/post_processing/gen7/nv12_dn_nv12.asm
+++ /dev/null
@@ -1,5 +0,0 @@
-// Module name: DN
-
-#include "NV12_DN_NV12.g4a"
-
-// end of DNDI
diff --git a/src/shaders/post_processing/gen7/nv12_dn_nv12.g75b b/src/shaders/post_processing/gen7/nv12_dn_nv12.g75b
deleted file mode 100644
index 663cbec..0000000
--- a/src/shaders/post_processing/gen7/nv12_dn_nv12.g75b
+++ /dev/null
@@ -1,40 +0,0 @@
- { 0x00600001, 0x22400021, 0x008d0000, 0x00000000 },
- { 0x00000401, 0x226801ad, 0x00000120, 0x00000000 },
- { 0x00000801, 0x227801ad, 0x00000122, 0x00000000 },
- { 0x02600031, 0x25c00e21, 0x00000240, 0x045e8003 },
- { 0x00200001, 0x2120012d, 0x0045065c, 0x00000000 },
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00200001, 0x22e00021, 0x00450640, 0x00000000 },
- { 0x00200008, 0x23603da1, 0x00450120, 0x00020002 },
- { 0x00000440, 0x23602421, 0x00000360, 0x00000038 },
- { 0x00000801, 0x23680061, 0x00000000, 0x00010003 },
- { 0x00600001, 0x22c00021, 0x008d0360, 0x00000000 },
- { 0x05600031, 0x20000e24, 0x000002c0, 0x040a8021 },
- { 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23000021, 0x008d0000, 0x00000000 },
- { 0x00000408, 0x23003da1, 0x00000120, 0x00010001 },
- { 0x00000041, 0x24043da0, 0x00000122, 0x00030003 },
- { 0x00000c08, 0x23043c01, 0x00000404, 0x00020002 },
- { 0x00000801, 0x23080061, 0x00000000, 0x00050003 },
- { 0x00200040, 0x23002421, 0x00450300, 0x00450038 },
- { 0x00000401, 0x23200231, 0x00000648, 0x00000000 },
- { 0x00000c01, 0x23260129, 0x00000656, 0x00000000 },
- { 0x00200c01, 0x23280129, 0x00450658, 0x00000000 },
- { 0x00000c01, 0x23320129, 0x00000650, 0x00000000 },
- { 0x00200801, 0x23340129, 0x00450652, 0x00000000 },
- { 0x05600031, 0x20000e24, 0x00000300, 0x040a8021 },
- { 0x00200040, 0x236035a5, 0x00450120, 0x00450088 },
- { 0x0000040c, 0x23643ca5, 0x00000364, 0x00010001 },
- { 0x00000801, 0x23680061, 0x00000000, 0x0004000f },
- { 0x00600001, 0x24800021, 0x008d0360, 0x00000000 },
- { 0x04600031, 0x27400e21, 0x00000480, 0x02390001 },
- { 0x00000001, 0x24880061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x25a00021, 0x008d0000, 0x00000000 },
- { 0x00200401, 0x25a001a1, 0x00450120, 0x00000000 },
- { 0x00000801, 0x25a80061, 0x00000000, 0x0007000f },
- { 0x05600031, 0x20000e24, 0x000005a0, 0x0a0a8018 },
- { 0x00600001, 0x24a00021, 0x008d0740, 0x00000000 },
- { 0x00600001, 0x24c00021, 0x008d0760, 0x00000000 },
- { 0x05600031, 0x20000e24, 0x00000480, 0x060a8019 },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/nv12_dn_nv12.g7b b/src/shaders/post_processing/gen7/nv12_dn_nv12.g7b
deleted file mode 100644
index 663cbec..0000000
--- a/src/shaders/post_processing/gen7/nv12_dn_nv12.g7b
+++ /dev/null
@@ -1,40 +0,0 @@
- { 0x00600001, 0x22400021, 0x008d0000, 0x00000000 },
- { 0x00000401, 0x226801ad, 0x00000120, 0x00000000 },
- { 0x00000801, 0x227801ad, 0x00000122, 0x00000000 },
- { 0x02600031, 0x25c00e21, 0x00000240, 0x045e8003 },
- { 0x00200001, 0x2120012d, 0x0045065c, 0x00000000 },
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00200001, 0x22e00021, 0x00450640, 0x00000000 },
- { 0x00200008, 0x23603da1, 0x00450120, 0x00020002 },
- { 0x00000440, 0x23602421, 0x00000360, 0x00000038 },
- { 0x00000801, 0x23680061, 0x00000000, 0x00010003 },
- { 0x00600001, 0x22c00021, 0x008d0360, 0x00000000 },
- { 0x05600031, 0x20000e24, 0x000002c0, 0x040a8021 },
- { 0x00600001, 0x23200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x23000021, 0x008d0000, 0x00000000 },
- { 0x00000408, 0x23003da1, 0x00000120, 0x00010001 },
- { 0x00000041, 0x24043da0, 0x00000122, 0x00030003 },
- { 0x00000c08, 0x23043c01, 0x00000404, 0x00020002 },
- { 0x00000801, 0x23080061, 0x00000000, 0x00050003 },
- { 0x00200040, 0x23002421, 0x00450300, 0x00450038 },
- { 0x00000401, 0x23200231, 0x00000648, 0x00000000 },
- { 0x00000c01, 0x23260129, 0x00000656, 0x00000000 },
- { 0x00200c01, 0x23280129, 0x00450658, 0x00000000 },
- { 0x00000c01, 0x23320129, 0x00000650, 0x00000000 },
- { 0x00200801, 0x23340129, 0x00450652, 0x00000000 },
- { 0x05600031, 0x20000e24, 0x00000300, 0x040a8021 },
- { 0x00200040, 0x236035a5, 0x00450120, 0x00450088 },
- { 0x0000040c, 0x23643ca5, 0x00000364, 0x00010001 },
- { 0x00000801, 0x23680061, 0x00000000, 0x0004000f },
- { 0x00600001, 0x24800021, 0x008d0360, 0x00000000 },
- { 0x04600031, 0x27400e21, 0x00000480, 0x02390001 },
- { 0x00000001, 0x24880061, 0x00000000, 0x0003000f },
- { 0x00600001, 0x25a00021, 0x008d0000, 0x00000000 },
- { 0x00200401, 0x25a001a1, 0x00450120, 0x00000000 },
- { 0x00000801, 0x25a80061, 0x00000000, 0x0007000f },
- { 0x05600031, 0x20000e24, 0x000005a0, 0x0a0a8018 },
- { 0x00600001, 0x24a00021, 0x008d0740, 0x00000000 },
- { 0x00600001, 0x24c00021, 0x008d0760, 0x00000000 },
- { 0x05600031, 0x20000e24, 0x00000480, 0x060a8019 },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/pa_to_pa.asm b/src/shaders/post_processing/gen7/pa_to_pa.asm
deleted file mode 100644
index 62f14bd..0000000
--- a/src/shaders/post_processing/gen7/pa_to_pa.asm
+++ /dev/null
@@ -1,17 +0,0 @@
-// Module name: AVS
-.kernel PA_TO_PL3
-.code
-
-#include "VP_Setup.g4a"
-#include "Set_Layer_0.g4a"
-#include "Set_AVS_Buf_0123_VYUA.g4a"
-#include "PA_AVS_Buf_0.g4a"
-#include "PA_AVS_Buf_1.g4a"
-#include "PA_AVS_Buf_2.g4a"
-#include "PA_AVS_Buf_3.g4a"
-#include "Save_AVS_PA.g4a"
-#include "EOT.g4a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/pa_to_pa.g75b b/src/shaders/post_processing/gen7/pa_to_pa.g75b
deleted file mode 100644
index 1f63b1b..0000000
--- a/src/shaders/post_processing/gen7/pa_to_pa.g75b
+++ /dev/null
@@ -1,677 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000000d0 },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x000062ea },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006420 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000240 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000230 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000230 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000230 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082e2c, 0x0069005c, 0x03a003a0 },
- { 0x00000409, 0x23603da5, 0x00000120, 0x00010001 },
- { 0x00000c01, 0x236401a5, 0x00000122, 0x00000000 },
- { 0x00000801, 0x23680061, 0x00000000, 0x0001001f },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x02000200 },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x06000600 },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x08000800 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x00000002 },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x02000200 },
- { 0x00000040, 0x23841ca5, 0x00000364, 0x00000004 },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x00000006 },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00000040, 0x23841ca5, 0x00000364, 0x00000008 },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x0000000a },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x06000600 },
- { 0x00000040, 0x23841ca5, 0x00000364, 0x0000000c },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x0000000e },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/pa_to_pa.g7b b/src/shaders/post_processing/gen7/pa_to_pa.g7b
deleted file mode 100644
index 656063e..0000000
--- a/src/shaders/post_processing/gen7/pa_to_pa.g7b
+++ /dev/null
@@ -1,677 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x0000001a },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x000062ea },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006420 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000048 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000046 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000046 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000046 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082e2c, 0x0069005c, 0x03a003a0 },
- { 0x00000409, 0x23603da5, 0x00000120, 0x00010001 },
- { 0x00000c01, 0x236401a5, 0x00000122, 0x00000000 },
- { 0x00000801, 0x23680061, 0x00000000, 0x0001001f },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x02000200 },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x06000600 },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x08000800 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x00000002 },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x02000200 },
- { 0x00000040, 0x23841ca5, 0x00000364, 0x00000004 },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x00000006 },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00000040, 0x23841ca5, 0x00000364, 0x00000008 },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x0000000a },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x06000600 },
- { 0x00000040, 0x23841ca5, 0x00000364, 0x0000000c },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x0000000e },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/pa_to_pl2.asm b/src/shaders/post_processing/gen7/pa_to_pl2.asm
deleted file mode 100644
index 1e952b4..0000000
--- a/src/shaders/post_processing/gen7/pa_to_pl2.asm
+++ /dev/null
@@ -1,17 +0,0 @@
-// Module name: AVS
-.kernel PA_TO_pl2
-.code
-
-#include "VP_Setup.g4a"
-#include "Set_Layer_0.g4a"
-#include "Set_AVS_Buf_0123_VYUA.g4a"
-#include "PA_AVS_Buf_0.g4a"
-#include "PA_AVS_Buf_1.g4a"
-#include "PA_AVS_Buf_2.g4a"
-#include "PA_AVS_Buf_3.g4a"
-#include "Save_AVS_NV12.g4a"
-#include "EOT.g4a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/pa_to_pl2.g75b b/src/shaders/post_processing/gen7/pa_to_pl2.g75b
deleted file mode 100644
index d963762..0000000
--- a/src/shaders/post_processing/gen7/pa_to_pl2.g75b
+++ /dev/null
@@ -1,584 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000000d0 },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x000062ea },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006420 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000240 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000230 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000230 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000230 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00200401, 0x238001a5, 0x00450120, 0x00000000 },
- { 0x00000401, 0x24a001a5, 0x00000120, 0x00000000 },
- { 0x00000c08, 0x24a43da5, 0x00000122, 0x00010001 },
- { 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
- { 0x00000801, 0x24a80061, 0x00000000, 0x0007000f },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x44c00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x44d00231, 0x00cf8841, 0x00000000 },
- { 0x00600c01, 0x44c10231, 0x00cf8001, 0x00000000 },
- { 0x00600801, 0x44d10231, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
- { 0x00600401, 0x44e00231, 0x00cf9801, 0x00000000 },
- { 0x00600c01, 0x44f00231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x44e10231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x44f10231, 0x00cf9041, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x45000231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x45100231, 0x00cf8841, 0x00000000 },
- { 0x00600c01, 0x45010231, 0x00cf8001, 0x00000000 },
- { 0x00600801, 0x45110231, 0x00cf8041, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
- { 0x00600401, 0x45200231, 0x00cf9801, 0x00000000 },
- { 0x00600c01, 0x45300231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x45210231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x45310231, 0x00cf9041, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x0a0a8019 },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/pa_to_pl2.g7b b/src/shaders/post_processing/gen7/pa_to_pl2.g7b
deleted file mode 100644
index d5ce5d4..0000000
--- a/src/shaders/post_processing/gen7/pa_to_pl2.g7b
+++ /dev/null
@@ -1,584 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x0000001a },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x000062ea },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006420 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000048 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000046 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000046 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000046 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00200401, 0x238001a5, 0x00450120, 0x00000000 },
- { 0x00000401, 0x24a001a5, 0x00000120, 0x00000000 },
- { 0x00000c08, 0x24a43da5, 0x00000122, 0x00010001 },
- { 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
- { 0x00000801, 0x24a80061, 0x00000000, 0x0007000f },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x44c00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x44d00231, 0x00cf8841, 0x00000000 },
- { 0x00600c01, 0x44c10231, 0x00cf8001, 0x00000000 },
- { 0x00600801, 0x44d10231, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
- { 0x00600401, 0x44e00231, 0x00cf9801, 0x00000000 },
- { 0x00600c01, 0x44f00231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x44e10231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x44f10231, 0x00cf9041, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x45000231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x45100231, 0x00cf8841, 0x00000000 },
- { 0x00600c01, 0x45010231, 0x00cf8001, 0x00000000 },
- { 0x00600801, 0x45110231, 0x00cf8041, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
- { 0x00600401, 0x45200231, 0x00cf9801, 0x00000000 },
- { 0x00600c01, 0x45300231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x45210231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x45310231, 0x00cf9041, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x0a0a8019 },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/pa_to_pl3.asm b/src/shaders/post_processing/gen7/pa_to_pl3.asm
deleted file mode 100644
index d149f48..0000000
--- a/src/shaders/post_processing/gen7/pa_to_pl3.asm
+++ /dev/null
@@ -1,17 +0,0 @@
-// Module name: AVS
-.kernel PA_TO_PL3
-.code
-
-#include "VP_Setup.g4a"
-#include "Set_Layer_0.g4a"
-#include "Set_AVS_Buf_0123_VYUA.g4a"
-#include "PA_AVS_Buf_0.g4a"
-#include "PA_AVS_Buf_1.g4a"
-#include "PA_AVS_Buf_2.g4a"
-#include "PA_AVS_Buf_3.g4a"
-#include "Save_AVS_PL3.g4a"
-#include "EOT.g4a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/pa_to_pl3.g75b b/src/shaders/post_processing/gen7/pa_to_pl3.g75b
deleted file mode 100644
index 9e42f7e..0000000
--- a/src/shaders/post_processing/gen7/pa_to_pl3.g75b
+++ /dev/null
@@ -1,587 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000000d0 },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x000062ea },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006420 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000240 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000230 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000230 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000230 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25c00021, 0x008d0360, 0x00000000 },
- { 0x00200401, 0x238001a5, 0x00450120, 0x00000000 },
- { 0x00200408, 0x24a03da5, 0x00450120, 0x00010001 },
- { 0x00200408, 0x25c03da5, 0x00450120, 0x00010001 },
- { 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
- { 0x00000801, 0x24a80061, 0x00000000, 0x00070007 },
- { 0x00000801, 0x25c80061, 0x00000000, 0x00070007 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x24c00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x24c80231, 0x00cf8841, 0x00000000 },
- { 0x00600401, 0x25e00231, 0x00cf8001, 0x00000000 },
- { 0x00600c01, 0x25e80231, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
- { 0x00600c01, 0x24d00231, 0x00cf9801, 0x00000000 },
- { 0x00600801, 0x24d80231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x25f00231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x25f80231, 0x00cf9041, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x24e00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x24e80231, 0x00cf8841, 0x00000000 },
- { 0x00600401, 0x26000231, 0x00cf8001, 0x00000000 },
- { 0x00600c01, 0x26080231, 0x00cf8041, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
- { 0x00600c01, 0x24f00231, 0x00cf9801, 0x00000000 },
- { 0x00600801, 0x24f80231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x26100231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x26180231, 0x00cf9041, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8019 },
- { 0x05000031, 0x20000e24, 0x000005c0, 0x060a801a },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/pa_to_pl3.g7b b/src/shaders/post_processing/gen7/pa_to_pl3.g7b
deleted file mode 100644
index ad9a1c3..0000000
--- a/src/shaders/post_processing/gen7/pa_to_pl3.g7b
+++ /dev/null
@@ -1,587 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x0000001a },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x000062ea },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006420 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000048 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000046 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000046 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000046 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25c00021, 0x008d0360, 0x00000000 },
- { 0x00200401, 0x238001a5, 0x00450120, 0x00000000 },
- { 0x00200408, 0x24a03da5, 0x00450120, 0x00010001 },
- { 0x00200408, 0x25c03da5, 0x00450120, 0x00010001 },
- { 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
- { 0x00000801, 0x24a80061, 0x00000000, 0x00070007 },
- { 0x00000801, 0x25c80061, 0x00000000, 0x00070007 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x24c00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x24c80231, 0x00cf8841, 0x00000000 },
- { 0x00600401, 0x25e00231, 0x00cf8001, 0x00000000 },
- { 0x00600c01, 0x25e80231, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
- { 0x00600c01, 0x24d00231, 0x00cf9801, 0x00000000 },
- { 0x00600801, 0x24d80231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x25f00231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x25f80231, 0x00cf9041, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x24e00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x24e80231, 0x00cf8841, 0x00000000 },
- { 0x00600401, 0x26000231, 0x00cf8001, 0x00000000 },
- { 0x00600c01, 0x26080231, 0x00cf8041, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
- { 0x00600c01, 0x24f00231, 0x00cf9801, 0x00000000 },
- { 0x00600801, 0x24f80231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x26100231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x26180231, 0x00cf9041, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8019 },
- { 0x05000031, 0x20000e24, 0x000005c0, 0x060a801a },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/pl2_to_pa.asm b/src/shaders/post_processing/gen7/pl2_to_pa.asm
deleted file mode 100644
index 5f737ee..0000000
--- a/src/shaders/post_processing/gen7/pl2_to_pa.asm
+++ /dev/null
@@ -1,17 +0,0 @@
-// Module name: AVS
-.kernel PL2_TO_PA
-.code
-
-#include "VP_Setup.g4a"
-#include "Set_Layer_0.g4a"
-#include "Set_AVS_Buf_0123_PL2.g4a"
-#include "PL2_AVS_Buf_0.g4a"
-#include "PL2_AVS_Buf_1.g4a"
-#include "PL2_AVS_Buf_2.g4a"
-#include "PL2_AVS_Buf_3.g4a"
-#include "Save_AVS_PA.g4a"
-#include "EOT.g4a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/pl2_to_pa.g75b b/src/shaders/post_processing/gen7/pl2_to_pa.g75b
deleted file mode 100644
index 589f1f8..0000000
--- a/src/shaders/post_processing/gen7/pl2_to_pa.g75b
+++ /dev/null
@@ -1,697 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000000d0 },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000290 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082e2c, 0x0069005c, 0x03a003a0 },
- { 0x00000409, 0x23603da5, 0x00000120, 0x00010001 },
- { 0x00000c01, 0x236401a5, 0x00000122, 0x00000000 },
- { 0x00000801, 0x23680061, 0x00000000, 0x0001001f },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x02000200 },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x06000600 },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x08000800 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x00000002 },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x02000200 },
- { 0x00000040, 0x23841ca5, 0x00000364, 0x00000004 },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x00000006 },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00000040, 0x23841ca5, 0x00000364, 0x00000008 },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x0000000a },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x06000600 },
- { 0x00000040, 0x23841ca5, 0x00000364, 0x0000000c },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x0000000e },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/pl2_to_pa.g7b b/src/shaders/post_processing/gen7/pl2_to_pa.g7b
deleted file mode 100644
index 1e6c104..0000000
--- a/src/shaders/post_processing/gen7/pl2_to_pa.g7b
+++ /dev/null
@@ -1,697 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x0000001a },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000052 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082e2c, 0x0069005c, 0x03a003a0 },
- { 0x00000409, 0x23603da5, 0x00000120, 0x00010001 },
- { 0x00000c01, 0x236401a5, 0x00000122, 0x00000000 },
- { 0x00000801, 0x23680061, 0x00000000, 0x0001001f },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x02000200 },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x06000600 },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x08000800 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x00000002 },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x02000200 },
- { 0x00000040, 0x23841ca5, 0x00000364, 0x00000004 },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x00000006 },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00000040, 0x23841ca5, 0x00000364, 0x00000008 },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x0000000a },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x06000600 },
- { 0x00000040, 0x23841ca5, 0x00000364, 0x0000000c },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x0000000e },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/pl2_to_pl2.asm b/src/shaders/post_processing/gen7/pl2_to_pl2.asm
deleted file mode 100644
index 6e840d5..0000000
--- a/src/shaders/post_processing/gen7/pl2_to_pl2.asm
+++ /dev/null
@@ -1,17 +0,0 @@
-// Module name: AVS
-.kernel PL2_TO_PL2
-.code
-
-#include "VP_Setup.g4a"
-#include "Set_Layer_0.g4a"
-#include "Set_AVS_Buf_0123_PL2.g4a"
-#include "PL2_AVS_Buf_0.g4a"
-#include "PL2_AVS_Buf_1.g4a"
-#include "PL2_AVS_Buf_2.g4a"
-#include "PL2_AVS_Buf_3.g4a"
-#include "Save_AVS_NV12.g4a"
-#include "EOT.g4a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/pl2_to_pl2.g75b b/src/shaders/post_processing/gen7/pl2_to_pl2.g75b
deleted file mode 100644
index 310ce94..0000000
--- a/src/shaders/post_processing/gen7/pl2_to_pl2.g75b
+++ /dev/null
@@ -1,604 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000000d0 },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000290 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00200401, 0x238001a5, 0x00450120, 0x00000000 },
- { 0x00000401, 0x24a001a5, 0x00000120, 0x00000000 },
- { 0x00000c08, 0x24a43da5, 0x00000122, 0x00010001 },
- { 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
- { 0x00000801, 0x24a80061, 0x00000000, 0x0007000f },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x44c00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x44d00231, 0x00cf8841, 0x00000000 },
- { 0x00600c01, 0x44c10231, 0x00cf8001, 0x00000000 },
- { 0x00600801, 0x44d10231, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
- { 0x00600401, 0x44e00231, 0x00cf9801, 0x00000000 },
- { 0x00600c01, 0x44f00231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x44e10231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x44f10231, 0x00cf9041, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x45000231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x45100231, 0x00cf8841, 0x00000000 },
- { 0x00600c01, 0x45010231, 0x00cf8001, 0x00000000 },
- { 0x00600801, 0x45110231, 0x00cf8041, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
- { 0x00600401, 0x45200231, 0x00cf9801, 0x00000000 },
- { 0x00600c01, 0x45300231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x45210231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x45310231, 0x00cf9041, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x0a0a8019 },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/pl2_to_pl2.g7b b/src/shaders/post_processing/gen7/pl2_to_pl2.g7b
deleted file mode 100644
index 995648c..0000000
--- a/src/shaders/post_processing/gen7/pl2_to_pl2.g7b
+++ /dev/null
@@ -1,604 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x0000001a },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000052 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00200401, 0x238001a5, 0x00450120, 0x00000000 },
- { 0x00000401, 0x24a001a5, 0x00000120, 0x00000000 },
- { 0x00000c08, 0x24a43da5, 0x00000122, 0x00010001 },
- { 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
- { 0x00000801, 0x24a80061, 0x00000000, 0x0007000f },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x44c00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x44d00231, 0x00cf8841, 0x00000000 },
- { 0x00600c01, 0x44c10231, 0x00cf8001, 0x00000000 },
- { 0x00600801, 0x44d10231, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
- { 0x00600401, 0x44e00231, 0x00cf9801, 0x00000000 },
- { 0x00600c01, 0x44f00231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x44e10231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x44f10231, 0x00cf9041, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x45000231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x45100231, 0x00cf8841, 0x00000000 },
- { 0x00600c01, 0x45010231, 0x00cf8001, 0x00000000 },
- { 0x00600801, 0x45110231, 0x00cf8041, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
- { 0x00600401, 0x45200231, 0x00cf9801, 0x00000000 },
- { 0x00600c01, 0x45300231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x45210231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x45310231, 0x00cf9041, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x0a0a8019 },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/pl2_to_pl3.asm b/src/shaders/post_processing/gen7/pl2_to_pl3.asm
deleted file mode 100644
index d48071b..0000000
--- a/src/shaders/post_processing/gen7/pl2_to_pl3.asm
+++ /dev/null
@@ -1,17 +0,0 @@
-// Module name: AVS
-.kernel PL2_TO_PL3
-.code
-
-#include "VP_Setup.g4a"
-#include "Set_Layer_0.g4a"
-#include "Set_AVS_Buf_0123_PL2.g4a"
-#include "PL2_AVS_Buf_0.g4a"
-#include "PL2_AVS_Buf_1.g4a"
-#include "PL2_AVS_Buf_2.g4a"
-#include "PL2_AVS_Buf_3.g4a"
-#include "Save_AVS_PL3.g4a"
-#include "EOT.g4a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/pl2_to_pl3.g75b b/src/shaders/post_processing/gen7/pl2_to_pl3.g75b
deleted file mode 100644
index f6fec4f..0000000
--- a/src/shaders/post_processing/gen7/pl2_to_pl3.g75b
+++ /dev/null
@@ -1,607 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000000d0 },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000290 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25c00021, 0x008d0360, 0x00000000 },
- { 0x00200401, 0x238001a5, 0x00450120, 0x00000000 },
- { 0x00200408, 0x24a03da5, 0x00450120, 0x00010001 },
- { 0x00200408, 0x25c03da5, 0x00450120, 0x00010001 },
- { 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
- { 0x00000801, 0x24a80061, 0x00000000, 0x00070007 },
- { 0x00000801, 0x25c80061, 0x00000000, 0x00070007 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x24c00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x24c80231, 0x00cf8841, 0x00000000 },
- { 0x00600401, 0x25e00231, 0x00cf8001, 0x00000000 },
- { 0x00600c01, 0x25e80231, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
- { 0x00600c01, 0x24d00231, 0x00cf9801, 0x00000000 },
- { 0x00600801, 0x24d80231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x25f00231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x25f80231, 0x00cf9041, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x24e00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x24e80231, 0x00cf8841, 0x00000000 },
- { 0x00600401, 0x26000231, 0x00cf8001, 0x00000000 },
- { 0x00600c01, 0x26080231, 0x00cf8041, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
- { 0x00600c01, 0x24f00231, 0x00cf9801, 0x00000000 },
- { 0x00600801, 0x24f80231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x26100231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x26180231, 0x00cf9041, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8019 },
- { 0x05000031, 0x20000e24, 0x000005c0, 0x060a801a },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/pl2_to_pl3.g7b b/src/shaders/post_processing/gen7/pl2_to_pl3.g7b
deleted file mode 100644
index 377b1bb..0000000
--- a/src/shaders/post_processing/gen7/pl2_to_pl3.g7b
+++ /dev/null
@@ -1,607 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x0000001a },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000052 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25c00021, 0x008d0360, 0x00000000 },
- { 0x00200401, 0x238001a5, 0x00450120, 0x00000000 },
- { 0x00200408, 0x24a03da5, 0x00450120, 0x00010001 },
- { 0x00200408, 0x25c03da5, 0x00450120, 0x00010001 },
- { 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
- { 0x00000801, 0x24a80061, 0x00000000, 0x00070007 },
- { 0x00000801, 0x25c80061, 0x00000000, 0x00070007 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x24c00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x24c80231, 0x00cf8841, 0x00000000 },
- { 0x00600401, 0x25e00231, 0x00cf8001, 0x00000000 },
- { 0x00600c01, 0x25e80231, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
- { 0x00600c01, 0x24d00231, 0x00cf9801, 0x00000000 },
- { 0x00600801, 0x24d80231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x25f00231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x25f80231, 0x00cf9041, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x24e00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x24e80231, 0x00cf8841, 0x00000000 },
- { 0x00600401, 0x26000231, 0x00cf8001, 0x00000000 },
- { 0x00600c01, 0x26080231, 0x00cf8041, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
- { 0x00600c01, 0x24f00231, 0x00cf9801, 0x00000000 },
- { 0x00600801, 0x24f80231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x26100231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x26180231, 0x00cf9041, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8019 },
- { 0x05000031, 0x20000e24, 0x000005c0, 0x060a801a },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/pl2_to_rgbx.asm b/src/shaders/post_processing/gen7/pl2_to_rgbx.asm
deleted file mode 100644
index dd18c4d..0000000
--- a/src/shaders/post_processing/gen7/pl2_to_rgbx.asm
+++ /dev/null
@@ -1,18 +0,0 @@
-// Module name: AVS
-.kernel PL2_TO_PA
-.code
-
-#include "VP_Setup.g4a"
-#include "Set_Layer_0.g4a"
-#include "Set_AVS_Buf_0123_PL2.g4a"
-#include "PL2_AVS_Buf_0.g4a"
-#include "PL2_AVS_Buf_1.g4a"
-#include "PL2_AVS_Buf_2.g4a"
-#include "PL2_AVS_Buf_3.g4a"
-#include "YUV_to_RGB.g4a"
-#include "Save_AVS_RGBX.g4a"
-#include "EOT.g4a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/pl2_to_rgbx.g75b b/src/shaders/post_processing/gen7/pl2_to_rgbx.g75b
deleted file mode 100644
index 1d65bc5..0000000
--- a/src/shaders/post_processing/gen7/pl2_to_rgbx.g75b
+++ /dev/null
@@ -1,1180 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000000d0 },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000290 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000280 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x22000128, 0x006902c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4010231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8010231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0010231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4210231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8210231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0210231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4410231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8410231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0410231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4610231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8610231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0610231, 0x00cf05c0, 0x00000000 },
- { 0x00400040, 0x22002d28, 0x006902c0, 0x02000200 },
- { 0x00600001, 0x2480023d, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4010231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8010231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0010231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4210231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8210231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0210231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4410231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8410231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0410231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4610231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8610231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0610231, 0x00cf05c0, 0x00000000 },
- { 0x00400040, 0x22002d28, 0x006902c0, 0x04000400 },
- { 0x00600001, 0x2480023d, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4010231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8010231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0010231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4210231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8210231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0210231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4410231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8410231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0410231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4610231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8610231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0610231, 0x00cf05c0, 0x00000000 },
- { 0x00400040, 0x22002d28, 0x006902c0, 0x06000600 },
- { 0x00600001, 0x2480023d, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4010231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8010231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0010231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4210231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8210231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0210231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4410231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8410231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0410231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4610231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8610231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0610231, 0x00cf05c0, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x000062ea },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x02800005, 0x20003d2c, 0x00000046, 0x00010001 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00010001, 0x22200109, 0x00000200, 0x00000000 },
- { 0x00010001, 0x22000108, 0x00000204, 0x00000000 },
- { 0x00010001, 0x22040128, 0x00000220, 0x00000000 },
- { 0x00000409, 0x23603da5, 0x00000120, 0x00020002 },
- { 0x00000c01, 0x236401a5, 0x00000122, 0x00000000 },
- { 0x00000801, 0x23680061, 0x00000000, 0x0003001f },
- { 0x00400001, 0x22080108, 0x00690200, 0x00000000 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25c00021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x26e00021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x23e00021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25000021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x26200021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x27400021, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x24a01ca5, 0x00000360, 0x00000020 },
- { 0x00000040, 0x25c41ca5, 0x00000364, 0x00000004 },
- { 0x00000040, 0x26e41ca5, 0x00000364, 0x00000004 },
- { 0x00000040, 0x26e01ca5, 0x00000360, 0x00000020 },
- { 0x00600001, 0x63a00231, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x63a10231, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x63a20231, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x63a30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x63c00231, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x63c10231, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x63c20231, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x63c30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64c00231, 0x00ae8011, 0x00000000 },
- { 0x00600001, 0x64c10231, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x64c20231, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x64c30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64e00231, 0x00ae8031, 0x00000000 },
- { 0x00600001, 0x64e10231, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x64e20231, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x64e30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x63e00231, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x63e10231, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x63e20231, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x63e30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64000231, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x64010231, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x64020231, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x64030231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x65000231, 0x00ae8051, 0x00000000 },
- { 0x00600001, 0x65010231, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x65020231, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x65030231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x65200231, 0x00ae8071, 0x00000000 },
- { 0x00600001, 0x65210231, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x65220231, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x65230231, 0x0000005f, 0x00000000 },
- { 0x05800031, 0x20000e24, 0x00000380, 0x0a0a8018 },
- { 0x05800031, 0x20000e24, 0x000004a0, 0x0a0a8018 },
- { 0x00400040, 0x22002d08, 0x00690208, 0x02000200 },
- { 0x00600001, 0x65e00231, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x65e10231, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x65e20231, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x65e30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66000231, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x66010231, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x66020231, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x66030231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67000231, 0x00ae8011, 0x00000000 },
- { 0x00600001, 0x67010231, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x67020231, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x67030231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67200231, 0x00ae8031, 0x00000000 },
- { 0x00600001, 0x67210231, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x67220231, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x67230231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66200231, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x66210231, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x66220231, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x66230231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66400231, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x66410231, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x66420231, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x66430231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67400231, 0x00ae8051, 0x00000000 },
- { 0x00600001, 0x67410231, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x67420231, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x67430231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67600231, 0x00ae8071, 0x00000000 },
- { 0x00600001, 0x67610231, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x67620231, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x67630231, 0x0000005f, 0x00000000 },
- { 0x05800031, 0x20000e24, 0x000005c0, 0x0a0a8018 },
- { 0x05800031, 0x20000e24, 0x000006e0, 0x0a0a8018 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25c00021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x26e00021, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x23841ca5, 0x00000364, 0x00000008 },
- { 0x00000040, 0x24a01ca5, 0x00000360, 0x00000020 },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x00000008 },
- { 0x00000040, 0x25c41ca5, 0x00000364, 0x0000000c },
- { 0x00000040, 0x26e41ca5, 0x00000364, 0x0000000c },
- { 0x00000040, 0x26e01ca5, 0x00000360, 0x00000020 },
- { 0x00400040, 0x22002d08, 0x00690208, 0x04000400 },
- { 0x00600001, 0x63a00231, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x63a10231, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x63a20231, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x63a30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x63c00231, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x63c10231, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x63c20231, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x63c30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64c00231, 0x00ae8011, 0x00000000 },
- { 0x00600001, 0x64c10231, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x64c20231, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x64c30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64e00231, 0x00ae8031, 0x00000000 },
- { 0x00600001, 0x64e10231, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x64e20231, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x64e30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x63e00231, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x63e10231, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x63e20231, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x63e30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64000231, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x64010231, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x64020231, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x64030231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x65000231, 0x00ae8051, 0x00000000 },
- { 0x00600001, 0x65010231, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x65020231, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x65030231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x65200231, 0x00ae8071, 0x00000000 },
- { 0x00600001, 0x65210231, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x65220231, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x65230231, 0x0000005f, 0x00000000 },
- { 0x05800031, 0x20000e24, 0x00000380, 0x0a0a8018 },
- { 0x05800031, 0x20000e24, 0x000004a0, 0x0a0a8018 },
- { 0x00400040, 0x22002d08, 0x00690208, 0x06000600 },
- { 0x00600001, 0x65e00231, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x65e10231, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x65e20231, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x65e30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66000231, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x66010231, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x66020231, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x66030231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67000231, 0x00ae8011, 0x00000000 },
- { 0x00600001, 0x67010231, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x67020231, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x67030231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67200231, 0x00ae8031, 0x00000000 },
- { 0x00600001, 0x67210231, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x67220231, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x67230231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66200231, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x66210231, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x66220231, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x66230231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66400231, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x66410231, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x66420231, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x66430231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67400231, 0x00ae8051, 0x00000000 },
- { 0x00600001, 0x67410231, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x67420231, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x67430231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67600231, 0x00ae8071, 0x00000000 },
- { 0x00600001, 0x67610231, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x67620231, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x67630231, 0x0000005f, 0x00000000 },
- { 0x05800031, 0x20000e24, 0x000005c0, 0x0a0a8018 },
- { 0x05800031, 0x20000e24, 0x000006e0, 0x0a0a8018 },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/pl2_to_rgbx.g7b b/src/shaders/post_processing/gen7/pl2_to_rgbx.g7b
deleted file mode 100644
index 7c38529..0000000
--- a/src/shaders/post_processing/gen7/pl2_to_rgbx.g7b
+++ /dev/null
@@ -1,1180 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x0000001a },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000052 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000050 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x048eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x22000128, 0x006902c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4010231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8010231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0010231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4210231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8210231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0210231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4410231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8410231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0410231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4610231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8610231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0610231, 0x00cf05c0, 0x00000000 },
- { 0x00400040, 0x22002d28, 0x006902c0, 0x02000200 },
- { 0x00600001, 0x2480023d, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4010231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8010231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0010231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4210231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8210231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0210231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4410231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8410231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0410231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4610231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8610231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0610231, 0x00cf05c0, 0x00000000 },
- { 0x00400040, 0x22002d28, 0x006902c0, 0x04000400 },
- { 0x00600001, 0x2480023d, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4010231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8010231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0010231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4210231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8210231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0210231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4410231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8410231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0410231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4610231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8610231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0610231, 0x00cf05c0, 0x00000000 },
- { 0x00400040, 0x22002d28, 0x006902c0, 0x06000600 },
- { 0x00600001, 0x2480023d, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4010231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8010231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0010231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4210231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8210231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0210231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4410231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8410231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0410231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2480023d, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x24a0023d, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x24c0023d, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x24e0023d, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x2500023d, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x2520023d, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24807fbd, 0x00200480, 0x3b8080c4 },
- { 0x00800041, 0x24c07fbd, 0x002004c0, 0x3b8080c4 },
- { 0x00800041, 0x25007fbd, 0x00200500, 0x3b8080c4 },
- { 0x00800040, 0x248077bd, 0x00200480, 0x000000ec },
- { 0x00800040, 0x24c077bd, 0x002004c0, 0x000000fc },
- { 0x00800040, 0x250077bd, 0x00200500, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000e4 },
- { 0x80800048, 0x238077bd, 0x008d0500, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x000000f4 },
- { 0x80800048, 0x23c077bd, 0x008d0500, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d0480, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d04c0, 0x00000104 },
- { 0x80800048, 0x240077bd, 0x008d0500, 0x00000108 },
- { 0x00800041, 0x23807fbd, 0x008d0380, 0x437f0000 },
- { 0x00800041, 0x23c07fbd, 0x008d03c0, 0x437f0000 },
- { 0x00800041, 0x24007fbd, 0x008d0400, 0x437f0000 },
- { 0x00800001, 0x454003ad, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc4610231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc8610231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0610231, 0x00cf05c0, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x000062ea },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x02800005, 0x20003d2c, 0x00000046, 0x00010001 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00010001, 0x22200109, 0x00000200, 0x00000000 },
- { 0x00010001, 0x22000108, 0x00000204, 0x00000000 },
- { 0x00010001, 0x22040128, 0x00000220, 0x00000000 },
- { 0x00000409, 0x23603da5, 0x00000120, 0x00020002 },
- { 0x00000c01, 0x236401a5, 0x00000122, 0x00000000 },
- { 0x00000801, 0x23680061, 0x00000000, 0x0003001f },
- { 0x00400001, 0x22080108, 0x00690200, 0x00000000 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25c00021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x26e00021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x23e00021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25000021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x26200021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x27400021, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x24a01ca5, 0x00000360, 0x00000020 },
- { 0x00000040, 0x25c41ca5, 0x00000364, 0x00000004 },
- { 0x00000040, 0x26e41ca5, 0x00000364, 0x00000004 },
- { 0x00000040, 0x26e01ca5, 0x00000360, 0x00000020 },
- { 0x00600001, 0x63a00231, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x63a10231, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x63a20231, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x63a30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x63c00231, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x63c10231, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x63c20231, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x63c30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64c00231, 0x00ae8011, 0x00000000 },
- { 0x00600001, 0x64c10231, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x64c20231, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x64c30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64e00231, 0x00ae8031, 0x00000000 },
- { 0x00600001, 0x64e10231, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x64e20231, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x64e30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x63e00231, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x63e10231, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x63e20231, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x63e30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64000231, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x64010231, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x64020231, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x64030231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x65000231, 0x00ae8051, 0x00000000 },
- { 0x00600001, 0x65010231, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x65020231, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x65030231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x65200231, 0x00ae8071, 0x00000000 },
- { 0x00600001, 0x65210231, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x65220231, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x65230231, 0x0000005f, 0x00000000 },
- { 0x05800031, 0x20000e24, 0x00000380, 0x0a0a8018 },
- { 0x05800031, 0x20000e24, 0x000004a0, 0x0a0a8018 },
- { 0x00400040, 0x22002d08, 0x00690208, 0x02000200 },
- { 0x00600001, 0x65e00231, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x65e10231, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x65e20231, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x65e30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66000231, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x66010231, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x66020231, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x66030231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67000231, 0x00ae8011, 0x00000000 },
- { 0x00600001, 0x67010231, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x67020231, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x67030231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67200231, 0x00ae8031, 0x00000000 },
- { 0x00600001, 0x67210231, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x67220231, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x67230231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66200231, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x66210231, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x66220231, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x66230231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66400231, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x66410231, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x66420231, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x66430231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67400231, 0x00ae8051, 0x00000000 },
- { 0x00600001, 0x67410231, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x67420231, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x67430231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67600231, 0x00ae8071, 0x00000000 },
- { 0x00600001, 0x67610231, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x67620231, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x67630231, 0x0000005f, 0x00000000 },
- { 0x05800031, 0x20000e24, 0x000005c0, 0x0a0a8018 },
- { 0x05800031, 0x20000e24, 0x000006e0, 0x0a0a8018 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25c00021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x26e00021, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x23841ca5, 0x00000364, 0x00000008 },
- { 0x00000040, 0x24a01ca5, 0x00000360, 0x00000020 },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x00000008 },
- { 0x00000040, 0x25c41ca5, 0x00000364, 0x0000000c },
- { 0x00000040, 0x26e41ca5, 0x00000364, 0x0000000c },
- { 0x00000040, 0x26e01ca5, 0x00000360, 0x00000020 },
- { 0x00400040, 0x22002d08, 0x00690208, 0x04000400 },
- { 0x00600001, 0x63a00231, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x63a10231, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x63a20231, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x63a30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x63c00231, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x63c10231, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x63c20231, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x63c30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64c00231, 0x00ae8011, 0x00000000 },
- { 0x00600001, 0x64c10231, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x64c20231, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x64c30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64e00231, 0x00ae8031, 0x00000000 },
- { 0x00600001, 0x64e10231, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x64e20231, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x64e30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x63e00231, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x63e10231, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x63e20231, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x63e30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64000231, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x64010231, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x64020231, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x64030231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x65000231, 0x00ae8051, 0x00000000 },
- { 0x00600001, 0x65010231, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x65020231, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x65030231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x65200231, 0x00ae8071, 0x00000000 },
- { 0x00600001, 0x65210231, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x65220231, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x65230231, 0x0000005f, 0x00000000 },
- { 0x05800031, 0x20000e24, 0x00000380, 0x0a0a8018 },
- { 0x05800031, 0x20000e24, 0x000004a0, 0x0a0a8018 },
- { 0x00400040, 0x22002d08, 0x00690208, 0x06000600 },
- { 0x00600001, 0x65e00231, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x65e10231, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x65e20231, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x65e30231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66000231, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x66010231, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x66020231, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x66030231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67000231, 0x00ae8011, 0x00000000 },
- { 0x00600001, 0x67010231, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x67020231, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x67030231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67200231, 0x00ae8031, 0x00000000 },
- { 0x00600001, 0x67210231, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x67220231, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x67230231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66200231, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x66210231, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x66220231, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x66230231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66400231, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x66410231, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x66420231, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x66430231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67400231, 0x00ae8051, 0x00000000 },
- { 0x00600001, 0x67410231, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x67420231, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x67430231, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67600231, 0x00ae8071, 0x00000000 },
- { 0x00600001, 0x67610231, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x67620231, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x67630231, 0x0000005f, 0x00000000 },
- { 0x05800031, 0x20000e24, 0x000005c0, 0x0a0a8018 },
- { 0x05800031, 0x20000e24, 0x000006e0, 0x0a0a8018 },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/pl3_to_pa.asm b/src/shaders/post_processing/gen7/pl3_to_pa.asm
deleted file mode 100644
index b3be8f9..0000000
--- a/src/shaders/post_processing/gen7/pl3_to_pa.asm
+++ /dev/null
@@ -1,17 +0,0 @@
-// Module name: AVS
-.kernel PL3_TO_PA
-.code
-
-#include "VP_Setup.g4a"
-#include "Set_Layer_0.g4a"
-#include "Set_AVS_Buf_0123_PL3.g4a"
-#include "PL3_AVS_Buf_0.g4a"
-#include "PL3_AVS_Buf_1.g4a"
-#include "PL3_AVS_Buf_2.g4a"
-#include "PL3_AVS_Buf_3.g4a"
-#include "Save_AVS_PA.g4a"
-#include "EOT.g4a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/pl3_to_pa.g75b b/src/shaders/post_processing/gen7/pl3_to_pa.g75b
deleted file mode 100644
index 0f7c498..0000000
--- a/src/shaders/post_processing/gen7/pl3_to_pa.g75b
+++ /dev/null
@@ -1,709 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000000d0 },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000002c0 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x29000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000002b0 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2b000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000002b0 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2d000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000002b0 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2f000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082e2c, 0x0069005c, 0x03a003a0 },
- { 0x00000409, 0x23603da5, 0x00000120, 0x00010001 },
- { 0x00000c01, 0x236401a5, 0x00000122, 0x00000000 },
- { 0x00000801, 0x23680061, 0x00000000, 0x0001001f },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x02000200 },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x06000600 },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x08000800 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x00000002 },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x02000200 },
- { 0x00000040, 0x23841ca5, 0x00000364, 0x00000004 },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x00000006 },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00000040, 0x23841ca5, 0x00000364, 0x00000008 },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x0000000a },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x06000600 },
- { 0x00000040, 0x23841ca5, 0x00000364, 0x0000000c },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x0000000e },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/pl3_to_pa.g7b b/src/shaders/post_processing/gen7/pl3_to_pa.g7b
deleted file mode 100644
index 5e46e34..0000000
--- a/src/shaders/post_processing/gen7/pl3_to_pa.g7b
+++ /dev/null
@@ -1,709 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x0000001a },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000058 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x29000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000056 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2b000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000056 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2d000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000056 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2f000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082e2c, 0x0069005c, 0x03a003a0 },
- { 0x00000409, 0x23603da5, 0x00000120, 0x00010001 },
- { 0x00000c01, 0x236401a5, 0x00000122, 0x00000000 },
- { 0x00000801, 0x23680061, 0x00000000, 0x0001001f },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x02000200 },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x06000600 },
- { 0x80400040, 0xc0002d29, 0x008a8000, 0x00800080 },
- { 0x80400040, 0xc0202d29, 0x008a8020, 0x00800080 },
- { 0x80400040, 0xc0402d29, 0x008a8040, 0x00800080 },
- { 0x80400040, 0xc0602d29, 0x008a8060, 0x00800080 },
- { 0x80600040, 0xa4002d29, 0x008d8400, 0x00800080 },
- { 0x80600040, 0xa4202d29, 0x008d8420, 0x00800080 },
- { 0x80600040, 0xa4402d29, 0x008d8440, 0x00800080 },
- { 0x80600040, 0xa4602d29, 0x008d8460, 0x00800080 },
- { 0x80400040, 0xc8002d29, 0x008a8800, 0x00800080 },
- { 0x80400040, 0xc8202d29, 0x008a8820, 0x00800080 },
- { 0x80400040, 0xc8402d29, 0x008a8840, 0x00800080 },
- { 0x80400040, 0xc8602d29, 0x008a8860, 0x00800080 },
- { 0x80400040, 0xc0102d29, 0x008a8010, 0x00800080 },
- { 0x80400040, 0xc0302d29, 0x008a8030, 0x00800080 },
- { 0x80400040, 0xc0502d29, 0x008a8050, 0x00800080 },
- { 0x80400040, 0xc0702d29, 0x008a8070, 0x00800080 },
- { 0x80600040, 0xa4102d29, 0x008d8410, 0x00800080 },
- { 0x80600040, 0xa4302d29, 0x008d8430, 0x00800080 },
- { 0x80600040, 0xa4502d29, 0x008d8450, 0x00800080 },
- { 0x80600040, 0xa4702d29, 0x008d8470, 0x00800080 },
- { 0x80400040, 0xc8102d29, 0x008a8810, 0x00800080 },
- { 0x80400040, 0xc8302d29, 0x008a8830, 0x00800080 },
- { 0x80400040, 0xc8502d29, 0x008a8850, 0x00800080 },
- { 0x80400040, 0xc8702d29, 0x008a8870, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x08000800 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x00000002 },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x02000200 },
- { 0x00000040, 0x23841ca5, 0x00000364, 0x00000004 },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x00000006 },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00000040, 0x23841ca5, 0x00000364, 0x00000008 },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x0000000a },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x06000600 },
- { 0x00000040, 0x23841ca5, 0x00000364, 0x0000000c },
- { 0x00000040, 0x24a41ca5, 0x00000364, 0x0000000e },
- { 0x00600401, 0xf8000231, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0xf8200231, 0x00cf8021, 0x00000000 },
- { 0x00800c01, 0xd0000231, 0x00d28401, 0x00000000 },
- { 0x00800c01, 0xd0200231, 0x00d28421, 0x00000000 },
- { 0x00600801, 0xf4000231, 0x00cf8801, 0x00000000 },
- { 0x00600801, 0xf4200231, 0x00cf8821, 0x00000000 },
- { 0x00600401, 0xf9200231, 0x00cf8041, 0x00000000 },
- { 0x00600401, 0xf9400231, 0x00cf8061, 0x00000000 },
- { 0x00800c01, 0xd1200231, 0x00d28441, 0x00000000 },
- { 0x00800c01, 0xd1400231, 0x00d28461, 0x00000000 },
- { 0x00600801, 0xf5200231, 0x00cf8841, 0x00000000 },
- { 0x00600801, 0xf5400231, 0x00cf8861, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x060a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8018 },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/pl3_to_pl2.asm b/src/shaders/post_processing/gen7/pl3_to_pl2.asm
deleted file mode 100644
index 6123fc9..0000000
--- a/src/shaders/post_processing/gen7/pl3_to_pl2.asm
+++ /dev/null
@@ -1,17 +0,0 @@
-// Module name: AVS
-.kernel PL3_TO_PL2
-.code
-
-#include "VP_Setup.g4a"
-#include "Set_Layer_0.g4a"
-#include "Set_AVS_Buf_0123_PL3.g4a"
-#include "PL3_AVS_Buf_0.g4a"
-#include "PL3_AVS_Buf_1.g4a"
-#include "PL3_AVS_Buf_2.g4a"
-#include "PL3_AVS_Buf_3.g4a"
-#include "Save_AVS_NV12.g4a"
-#include "EOT.g4a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/pl3_to_pl2.g75b b/src/shaders/post_processing/gen7/pl3_to_pl2.g75b
deleted file mode 100644
index 75853bb..0000000
--- a/src/shaders/post_processing/gen7/pl3_to_pl2.g75b
+++ /dev/null
@@ -1,616 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000000d0 },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000002c0 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x29000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000002b0 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2b000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000002b0 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2d000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000002b0 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2f000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00200401, 0x238001a5, 0x00450120, 0x00000000 },
- { 0x00000401, 0x24a001a5, 0x00000120, 0x00000000 },
- { 0x00000c08, 0x24a43da5, 0x00000122, 0x00010001 },
- { 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
- { 0x00000801, 0x24a80061, 0x00000000, 0x0007000f },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x44c00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x44d00231, 0x00cf8841, 0x00000000 },
- { 0x00600c01, 0x44c10231, 0x00cf8001, 0x00000000 },
- { 0x00600801, 0x44d10231, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
- { 0x00600401, 0x44e00231, 0x00cf9801, 0x00000000 },
- { 0x00600c01, 0x44f00231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x44e10231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x44f10231, 0x00cf9041, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x45000231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x45100231, 0x00cf8841, 0x00000000 },
- { 0x00600c01, 0x45010231, 0x00cf8001, 0x00000000 },
- { 0x00600801, 0x45110231, 0x00cf8041, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
- { 0x00600401, 0x45200231, 0x00cf9801, 0x00000000 },
- { 0x00600c01, 0x45300231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x45210231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x45310231, 0x00cf9041, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x0a0a8019 },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/pl3_to_pl2.g7b b/src/shaders/post_processing/gen7/pl3_to_pl2.g7b
deleted file mode 100644
index fed7353..0000000
--- a/src/shaders/post_processing/gen7/pl3_to_pl2.g7b
+++ /dev/null
@@ -1,616 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x0000001a },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000058 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x29000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000056 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2b000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000056 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2d000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000056 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2f000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00200401, 0x238001a5, 0x00450120, 0x00000000 },
- { 0x00000401, 0x24a001a5, 0x00000120, 0x00000000 },
- { 0x00000c08, 0x24a43da5, 0x00000122, 0x00010001 },
- { 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
- { 0x00000801, 0x24a80061, 0x00000000, 0x0007000f },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x44c00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x44d00231, 0x00cf8841, 0x00000000 },
- { 0x00600c01, 0x44c10231, 0x00cf8001, 0x00000000 },
- { 0x00600801, 0x44d10231, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
- { 0x00600401, 0x44e00231, 0x00cf9801, 0x00000000 },
- { 0x00600c01, 0x44f00231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x44e10231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x44f10231, 0x00cf9041, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x45000231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x45100231, 0x00cf8841, 0x00000000 },
- { 0x00600c01, 0x45010231, 0x00cf8001, 0x00000000 },
- { 0x00600801, 0x45110231, 0x00cf8041, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
- { 0x00600401, 0x45200231, 0x00cf9801, 0x00000000 },
- { 0x00600c01, 0x45300231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x45210231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x45310231, 0x00cf9041, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x0a0a8019 },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/pl3_to_pl3.asm b/src/shaders/post_processing/gen7/pl3_to_pl3.asm
deleted file mode 100644
index 0861513..0000000
--- a/src/shaders/post_processing/gen7/pl3_to_pl3.asm
+++ /dev/null
@@ -1,17 +0,0 @@
-// Module name: AVS
-.kernel PL3_TO_PL3
-.code
-
-#include "VP_Setup.g4a"
-#include "Set_Layer_0.g4a"
-#include "Set_AVS_Buf_0123_PL3.g4a"
-#include "PL3_AVS_Buf_0.g4a"
-#include "PL3_AVS_Buf_1.g4a"
-#include "PL3_AVS_Buf_2.g4a"
-#include "PL3_AVS_Buf_3.g4a"
-#include "Save_AVS_PL3.g4a"
-#include "EOT.g4a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/pl3_to_pl3.g75b b/src/shaders/post_processing/gen7/pl3_to_pl3.g75b
deleted file mode 100644
index a11b132..0000000
--- a/src/shaders/post_processing/gen7/pl3_to_pl3.g75b
+++ /dev/null
@@ -1,619 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000000d0 },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000002c0 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x29000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000002b0 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2b000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000002b0 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2d000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000002b0 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2f000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25c00021, 0x008d0360, 0x00000000 },
- { 0x00200401, 0x238001a5, 0x00450120, 0x00000000 },
- { 0x00200408, 0x24a03da5, 0x00450120, 0x00010001 },
- { 0x00200408, 0x25c03da5, 0x00450120, 0x00010001 },
- { 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
- { 0x00000801, 0x24a80061, 0x00000000, 0x00070007 },
- { 0x00000801, 0x25c80061, 0x00000000, 0x00070007 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x24c00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x24c80231, 0x00cf8841, 0x00000000 },
- { 0x00600401, 0x25e00231, 0x00cf8001, 0x00000000 },
- { 0x00600c01, 0x25e80231, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
- { 0x00600c01, 0x24d00231, 0x00cf9801, 0x00000000 },
- { 0x00600801, 0x24d80231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x25f00231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x25f80231, 0x00cf9041, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x24e00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x24e80231, 0x00cf8841, 0x00000000 },
- { 0x00600401, 0x26000231, 0x00cf8001, 0x00000000 },
- { 0x00600c01, 0x26080231, 0x00cf8041, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
- { 0x00600c01, 0x24f00231, 0x00cf9801, 0x00000000 },
- { 0x00600801, 0x24f80231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x26100231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x26180231, 0x00cf9041, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8019 },
- { 0x05000031, 0x20000e24, 0x000005c0, 0x060a801a },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/pl3_to_pl3.g7b b/src/shaders/post_processing/gen7/pl3_to_pl3.g7b
deleted file mode 100644
index 1292798..0000000
--- a/src/shaders/post_processing/gen7/pl3_to_pl3.g7b
+++ /dev/null
@@ -1,619 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x0000001a },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000058 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x28800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x29000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000056 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2a800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2b000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000056 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2c800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2d000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000056 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000d000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x00000001, 0x21d403bd, 0x00000228, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x00000001, 0x222803bd, 0x000001d4, 0x00000000 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044eb801 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2e800229, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x044ebc02 },
- { 0x00000001, 0x22080061, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2f000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25c00021, 0x008d0360, 0x00000000 },
- { 0x00200401, 0x238001a5, 0x00450120, 0x00000000 },
- { 0x00200408, 0x24a03da5, 0x00450120, 0x00010001 },
- { 0x00200408, 0x25c03da5, 0x00450120, 0x00010001 },
- { 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
- { 0x00000801, 0x24a80061, 0x00000000, 0x00070007 },
- { 0x00000801, 0x25c80061, 0x00000000, 0x00070007 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x24c00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x24c80231, 0x00cf8841, 0x00000000 },
- { 0x00600401, 0x25e00231, 0x00cf8001, 0x00000000 },
- { 0x00600c01, 0x25e80231, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
- { 0x00600c01, 0x24d00231, 0x00cf9801, 0x00000000 },
- { 0x00600801, 0x24d80231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x25f00231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x25f80231, 0x00cf9041, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x24e00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x24e80231, 0x00cf8841, 0x00000000 },
- { 0x00600401, 0x26000231, 0x00cf8001, 0x00000000 },
- { 0x00600c01, 0x26080231, 0x00cf8041, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
- { 0x00600c01, 0x24f00231, 0x00cf9801, 0x00000000 },
- { 0x00600801, 0x24f80231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x26100231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x26180231, 0x00cf9041, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x060a8019 },
- { 0x05000031, 0x20000e24, 0x000005c0, 0x060a801a },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/rgbx_to_nv12.asm b/src/shaders/post_processing/gen7/rgbx_to_nv12.asm
deleted file mode 100644
index 8bf8bd8..0000000
--- a/src/shaders/post_processing/gen7/rgbx_to_nv12.asm
+++ /dev/null
@@ -1,18 +0,0 @@
-// Module name: AVS
-.kernel RGBX_TO_NV12
-.code
-
-#include "VP_Setup.g4a"
-#include "Set_Layer_0.g4a"
-#include "Set_AVS_Buf_0123_BGRA.g4a"
-#include "PA_AVS_Buf_0.g4a"
-#include "PA_AVS_Buf_1.g4a"
-#include "PA_AVS_Buf_2.g4a"
-#include "PA_AVS_Buf_3.g4a"
-#include "RGB_to_YUV.g4a"
-#include "Save_AVS_NV12.g4a"
-#include "EOT.g4a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen7/rgbx_to_nv12.g75b b/src/shaders/post_processing/gen7/rgbx_to_nv12.g75b
deleted file mode 100644
index 3673546..0000000
--- a/src/shaders/post_processing/gen7/rgbx_to_nv12.g75b
+++ /dev/null
@@ -1,1009 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000090 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x000000f0 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000180 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x000000d0 },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000240 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000230 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000230 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000230 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x000001a0 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x22000128, 0x006902c0, 0x00000000 },
- { 0x00400001, 0x22080128, 0x006902c0, 0x00000000 },
- { 0x02800005, 0x20003d2c, 0x00000040, 0x00010001 },
- { 0x00010001, 0x22200109, 0x00000200, 0x00000000 },
- { 0x00010001, 0x22000108, 0x00000202, 0x00000000 },
- { 0x00010001, 0x22020128, 0x00000220, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4010231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8010231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0010231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4210231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8210231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0210231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4410231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8410231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0410231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4610231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8610231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0610231, 0x00cf05c0, 0x00000000 },
- { 0x00600040, 0x22002d08, 0x008d0200, 0x02000200 },
- { 0x00600001, 0x2380023d, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4010231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8010231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0010231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4210231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8210231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0210231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4410231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8410231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0410231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4610231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8610231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0610231, 0x00cf05c0, 0x00000000 },
- { 0x00600040, 0x22002d08, 0x008d0200, 0x02000200 },
- { 0x00600001, 0x2380023d, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4010231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8010231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0010231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4210231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8210231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0210231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4410231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8410231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0410231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4610231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8610231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0610231, 0x00cf05c0, 0x00000000 },
- { 0x00600040, 0x22002d08, 0x008d0200, 0x02000200 },
- { 0x00600001, 0x2380023d, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4010231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8010231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0010231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4210231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8210231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0210231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4410231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8410231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0410231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4610231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8610231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0610231, 0x00cf05c0, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00200401, 0x238001a5, 0x00450120, 0x00000000 },
- { 0x00000401, 0x24a001a5, 0x00000120, 0x00000000 },
- { 0x00000c08, 0x24a43da5, 0x00000122, 0x00010001 },
- { 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
- { 0x00000801, 0x24a80061, 0x00000000, 0x0007000f },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x44c00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x44d00231, 0x00cf8841, 0x00000000 },
- { 0x00600c01, 0x44c10231, 0x00cf8001, 0x00000000 },
- { 0x00600801, 0x44d10231, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
- { 0x00600401, 0x44e00231, 0x00cf9801, 0x00000000 },
- { 0x00600c01, 0x44f00231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x44e10231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x44f10231, 0x00cf9041, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x45000231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x45100231, 0x00cf8841, 0x00000000 },
- { 0x00600c01, 0x45010231, 0x00cf8001, 0x00000000 },
- { 0x00600801, 0x45110231, 0x00cf8041, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
- { 0x00600401, 0x45200231, 0x00cf9801, 0x00000000 },
- { 0x00600c01, 0x45300231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x45210231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x45310231, 0x00cf9041, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x0a0a8019 },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen7/rgbx_to_nv12.g7b b/src/shaders/post_processing/gen7/rgbx_to_nv12.g7b
deleted file mode 100644
index 0affc80..0000000
--- a/src/shaders/post_processing/gen7/rgbx_to_nv12.g7b
+++ /dev/null
@@ -1,1009 +0,0 @@
- { 0x00600001, 0x23600021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200021, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400021, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x206077bd, 0x008d0060, 0x00000130 },
- { 0x00200001, 0x211401bd, 0x00450120, 0x00000000 },
- { 0x01600010, 0x20002e24, 0x0000005a, 0x00010001 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00000000 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000114 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240003bc, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c077bd, 0x00000060, 0x00000220 },
- { 0x00000001, 0x240003bc, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a077bd, 0x00000080, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00020002 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000114 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240403bc, 0x000000c4, 0x00000000 },
- { 0x00110048, 0x20c477bd, 0x00000064, 0x00000220 },
- { 0x00000001, 0x240403bc, 0x000000a4, 0x00000000 },
- { 0x00000048, 0x20a477bd, 0x00000084, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00040004 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000114 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240803bc, 0x000000c8, 0x00000000 },
- { 0x00110048, 0x20c877bd, 0x00000068, 0x00000220 },
- { 0x00000001, 0x240803bc, 0x000000a8, 0x00000000 },
- { 0x00000048, 0x20a877bd, 0x00000088, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00060006 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000114 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x240c03bc, 0x000000cc, 0x00000000 },
- { 0x00110048, 0x20cc77bd, 0x0000006c, 0x00000220 },
- { 0x00000001, 0x240c03bc, 0x000000ac, 0x00000000 },
- { 0x00000048, 0x20ac77bd, 0x0000008c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x00080008 },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000114 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241003bc, 0x000000d0, 0x00000000 },
- { 0x00110048, 0x20d077bd, 0x00000070, 0x00000220 },
- { 0x00000001, 0x241003bc, 0x000000b0, 0x00000000 },
- { 0x00000048, 0x20b077bd, 0x00000090, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000a000a },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000114 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241403bc, 0x000000d4, 0x00000000 },
- { 0x00110048, 0x20d477bd, 0x00000074, 0x00000220 },
- { 0x00000001, 0x241403bc, 0x000000b4, 0x00000000 },
- { 0x00000048, 0x20b477bd, 0x00000094, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000c000c },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000114 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241803bc, 0x000000d8, 0x00000000 },
- { 0x00110048, 0x20d877bd, 0x00000078, 0x00000220 },
- { 0x00000001, 0x241803bc, 0x000000b8, 0x00000000 },
- { 0x00000048, 0x20b877bd, 0x00000098, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000008, 0x22202d29, 0x00000044, 0x000e000e },
- { 0x00000005, 0x22202d29, 0x00000220, 0x00030003 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00010001 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000012 },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00020002 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x01000010, 0x20002d2c, 0x02000220, 0x00030003 },
- { 0x00010220, 0x34001c00, 0x02001400, 0x00000030 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000114 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000118 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000118 },
- { 0x00000001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x00000024 },
- { 0x00110001, 0x2200013d, 0x00000040, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004114, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00000040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00000040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000220 },
- { 0x00000220, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00110001, 0x2200013d, 0x00000042, 0x00000000 },
- { 0x00110040, 0x222077bd, 0x00004118, 0x00000200 },
- { 0x00110040, 0x22207fbd, 0x00000220, 0xc1800000 },
- { 0x00110001, 0x241c03bc, 0x000000dc, 0x00000000 },
- { 0x00110048, 0x20dc77bd, 0x0000007c, 0x00000220 },
- { 0x00000001, 0x241c03bc, 0x000000bc, 0x00000000 },
- { 0x00000048, 0x20bc77bd, 0x0000009c, 0x00000114 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a00169, 0x00000000, 0xffffffff },
- { 0x02000010, 0x20002d24, 0x02000124, 0x00000000 },
- { 0x02010010, 0x20002d24, 0x02000126, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x0000001a },
- { 0x00000005, 0x23022d31, 0x00000044, 0x00030003 },
- { 0x00000401, 0x233803bd, 0x00000134, 0x00000000 },
- { 0x00000c01, 0x233003bd, 0x00000060, 0x00000000 },
- { 0x00000c01, 0x233403bd, 0x00000080, 0x00000000 },
- { 0x00000c01, 0x232803bd, 0x000000c0, 0x00000000 },
- { 0x00000801, 0x232c03bd, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x240803bc, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24087fbc, 0x00000060, 0x41000000 },
- { 0x00000448, 0x22e87fbd, 0x00000134, 0x41e00000 },
- { 0x00000c41, 0x22e47fbd, 0x00000080, 0x40800000 },
- { 0x00000001, 0x241003bc, 0x00000060, 0x00000000 },
- { 0x00000c48, 0x22f07fbd, 0x00000134, 0x41000000 },
- { 0x00000801, 0x22f40061, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006ea2 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00460046 },
- { 0x00400009, 0x22c02d8d, 0x00690400, 0x00050005 },
- { 0x00400001, 0x2400036c, 0x00000000, 0x00006204 },
- { 0x00400040, 0x24002d8c, 0x00690400, 0x00400040 },
- { 0x00400409, 0x22402d8d, 0x00690400, 0x00050005 },
- { 0x00000801, 0x22500061, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00061, 0x00000000, 0x00400040 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000048 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000401, 0x233c0021, 0x0000013c, 0x00000000 },
- { 0x00000801, 0x23240121, 0x00000138, 0x00000000 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x28000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000046 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000001 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2a000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000046 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000002 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2c000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00110220, 0x34001c00, 0x02001400, 0x00000046 },
- { 0x00000040, 0x22000c20, 0x000002f4, 0x050eb400 },
- { 0x00000001, 0x22080061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23240d21, 0x00000138, 0x00000003 },
- { 0x00600001, 0x22200021, 0x008d0320, 0x00000000 },
- { 0x00000001, 0x21d00109, 0x00000600, 0x00000000 },
- { 0x02000005, 0x20002d28, 0x00000046, 0x00020002 },
- { 0x00110220, 0x34001c00, 0x00001400, 0x00000034 },
- { 0x02600005, 0x20002d28, 0x00000046, 0x00040004 },
- { 0x00610001, 0x240003bc, 0x00000228, 0x00000000 },
- { 0x00610048, 0x24007fbc, 0x00000230, 0xc0000000 },
- { 0x00610048, 0x24007fbc, 0x00000238, 0x40400000 },
- { 0x00010001, 0x21c8039d, 0x00210400, 0x00000000 },
- { 0x00110001, 0x21c803bd, 0x00000228, 0x00000000 },
- { 0x00000005, 0x21c42d21, 0x00000046, 0xfff8fff8 },
- { 0x0000000c, 0x21c41c21, 0x000001c4, 0x00000003 },
- { 0x00000001, 0x21c4003d, 0x000001c4, 0x00000000 },
- { 0x00000041, 0x21c077bd, 0x000001c8, 0x000001c4 },
- { 0x00000040, 0x21c87fbd, 0x000001c0, 0x3ca00000 },
- { 0x00000040, 0x21cc7fbd, 0x000001c0, 0x3f7f0000 },
- { 0x05000010, 0x20007fbc, 0x000001c0, 0x00000000 },
- { 0x00000001, 0x21c003a5, 0x000001c0, 0x00000000 },
- { 0x00010040, 0x21c01ca5, 0x000001c0, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001c8, 0x00000000 },
- { 0x00000001, 0x21c803a5, 0x000001c8, 0x00000000 },
- { 0x00010040, 0x21c81ca5, 0x000001c8, 0xffffffff },
- { 0x05000010, 0x20007fbc, 0x000001cc, 0x00000000 },
- { 0x00000001, 0x21cc03a5, 0x000001cc, 0x00000000 },
- { 0x00010040, 0x21cc1ca5, 0x000001cc, 0xffffffff },
- { 0x00000001, 0x26000168, 0x00000000, 0x00000000 },
- { 0x03000010, 0x200014a4, 0x040001c8, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x04000228, 0x0000404c },
- { 0x01110010, 0x200014a4, 0x000001cc, 0x000001c0 },
- { 0x00010040, 0x222877bd, 0x00000228, 0x00000048 },
- { 0x00000001, 0x26000128, 0x000001d0, 0x00000000 },
- { 0x02000031, 0x2e000229, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x22000128, 0x006902c0, 0x00000000 },
- { 0x00400001, 0x22080128, 0x006902c0, 0x00000000 },
- { 0x02800005, 0x20003d2c, 0x00000040, 0x00010001 },
- { 0x00010001, 0x22200109, 0x00000200, 0x00000000 },
- { 0x00010001, 0x22000108, 0x00000202, 0x00000000 },
- { 0x00010001, 0x22020128, 0x00000220, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4010231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8010231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0010231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4210231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8210231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0210231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4410231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8410231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0410231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4610231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8610231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0610231, 0x00cf05c0, 0x00000000 },
- { 0x00600040, 0x22002d08, 0x008d0200, 0x02000200 },
- { 0x00600001, 0x2380023d, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4010231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8010231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0010231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4210231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8210231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0210231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4410231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8410231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0410231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4610231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8610231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0610231, 0x00cf05c0, 0x00000000 },
- { 0x00600040, 0x22002d08, 0x008d0200, 0x02000200 },
- { 0x00600001, 0x2380023d, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4010231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8010231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0010231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4210231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8210231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0210231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4410231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8410231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0410231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4610231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8610231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0610231, 0x00cf05c0, 0x00000000 },
- { 0x00600040, 0x22002d08, 0x008d0200, 0x02000200 },
- { 0x00600001, 0x2380023d, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8801, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8811, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0000169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4010231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8010231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0010231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8821, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8831, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0200169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4210231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8210231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0210231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8841, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8851, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0400169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4410231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8410231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0410231, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x2380023d, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x23a0023d, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x23c0023d, 0x00ae8861, 0x00000000 },
- { 0x00600001, 0x23e0023d, 0x00ae8871, 0x00000000 },
- { 0x00600001, 0x2400023d, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x2420023d, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24007fbc, 0x008d0380, 0x3e991687 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24807fbd, 0x008d0400, 0x3de978d5 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c07fbd, 0x008d0400, 0x3eff7cee },
- { 0x00800001, 0x240003fc, 0x00000000, 0x43000000 },
- { 0x00800048, 0x24007fbc, 0x008d0380, 0x3eff7cee },
- { 0x00800048, 0x24007fbc, 0x008d03c0, 0xbed60419 },
- { 0x00800048, 0x25007fbd, 0x008d0400, 0xbda6809d },
- { 0x00800001, 0x454003ad, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x458003ad, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c003ad, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xb4600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb8600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xb0600169, 0x00000000, 0x00000000 },
- { 0x00800001, 0xd4610231, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xd8610231, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xd0610231, 0x00cf05c0, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00600001, 0x23800021, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d0360, 0x00000000 },
- { 0x00200401, 0x238001a5, 0x00450120, 0x00000000 },
- { 0x00000401, 0x24a001a5, 0x00000120, 0x00000000 },
- { 0x00000c08, 0x24a43da5, 0x00000122, 0x00010001 },
- { 0x00000801, 0x23880061, 0x00000000, 0x000f000f },
- { 0x00000801, 0x24a80061, 0x00000000, 0x0007000f },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 },
- { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 },
- { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 },
- { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 },
- { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 },
- { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 },
- { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 },
- { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 },
- { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 },
- { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 },
- { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 },
- { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 },
- { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 },
- { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 },
- { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 },
- { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 },
- { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x23b00231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x23c00231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x23d00231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x44c00231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x44d00231, 0x00cf8841, 0x00000000 },
- { 0x00600c01, 0x44c10231, 0x00cf8001, 0x00000000 },
- { 0x00600801, 0x44d10231, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 },
- { 0x00800401, 0x23e00231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x23f00231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24000231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24100231, 0x00d29461, 0x00000000 },
- { 0x00600401, 0x44e00231, 0x00cf9801, 0x00000000 },
- { 0x00600c01, 0x44f00231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x44e10231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x44f10231, 0x00cf9041, 0x00000000 },
- { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 },
- { 0x00800401, 0x24200231, 0x00d28401, 0x00000000 },
- { 0x00800801, 0x24300231, 0x00d28421, 0x00000000 },
- { 0x00800401, 0x24400231, 0x00d28441, 0x00000000 },
- { 0x00800801, 0x24500231, 0x00d28461, 0x00000000 },
- { 0x00600401, 0x45000231, 0x00cf8801, 0x00000000 },
- { 0x00600c01, 0x45100231, 0x00cf8841, 0x00000000 },
- { 0x00600c01, 0x45010231, 0x00cf8001, 0x00000000 },
- { 0x00600801, 0x45110231, 0x00cf8041, 0x00000000 },
- { 0x00800401, 0x24600231, 0x00d29401, 0x00000000 },
- { 0x00800801, 0x24700231, 0x00d29421, 0x00000000 },
- { 0x00800401, 0x24800231, 0x00d29441, 0x00000000 },
- { 0x00800801, 0x24900231, 0x00d29461, 0x00000000 },
- { 0x00600401, 0x45200231, 0x00cf9801, 0x00000000 },
- { 0x00600c01, 0x45300231, 0x00cf9841, 0x00000000 },
- { 0x00600c01, 0x45210231, 0x00cf9001, 0x00000000 },
- { 0x00600801, 0x45310231, 0x00cf9041, 0x00000000 },
- { 0x05000031, 0x20000e24, 0x00000380, 0x120a8018 },
- { 0x05000031, 0x20000e24, 0x000004a0, 0x0a0a8019 },
- { 0x00600001, 0x2fe00021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20001e24, 0x00000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen75/Makefile.am b/src/shaders/post_processing/gen75/Makefile.am
deleted file mode 100644
index cdad1d9..0000000
--- a/src/shaders/post_processing/gen75/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-INTEL_PP_PRE_G75B = \
- sharpening_h_blur.g75b \
- sharpening_unmask.g75b \
- sharpening_v_blur.g75b
-
-EXTRA_DIST = $(INTEL_PP_PRE_G75B)
-
-# Extra clean files so that maintainer-clean removes *everything*
-MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/shaders/post_processing/gen75/sharpening_h_blur.g75b b/src/shaders/post_processing/gen75/sharpening_h_blur.g75b
deleted file mode 100644
index d81319c..0000000
--- a/src/shaders/post_processing/gen75/sharpening_h_blur.g75b
+++ /dev/null
@@ -1,1718 +0,0 @@
-{ 0x00000001, 0x23400161, 0x00000000, 0x00000000 },
-{ 0x00600001, 0x204003bd, 0x008d0000, 0x00000000 },
-{ 0x00000001, 0x23440161, 0x00000000, 0x00020002 },
-{ 0x00000001, 0x20480061, 0x00000000, 0x000f0007 },
-{ 0x00000001, 0x20400161, 0x00000000, 0x00000000 },
-{ 0x00000040, 0x22000c20, 0x00000340, 0x02490000 },
-{ 0x00000001, 0x204403bd, 0x00000028, 0x00000000 },
-{ 0x00000001, 0x202c0161, 0x00000000, 0x00040004 },
-{ 0x0c600031, 0x204003a1, 0x00000040, 0x00000200 },
-{ 0x00000040, 0x20243c21, 0x00000020, 0xfffcfffc },
-{ 0x06000010, 0x20002c20, 0x02000024, 0x00040004 },
-{ 0x00200001, 0x232803bd, 0x004500b0, 0x00000000 },
-{ 0x00200001, 0x230803bd, 0x004500a0, 0x00000000 },
-{ 0x00200001, 0x22e803bd, 0x00450090, 0x00000000 },
-{ 0x00200001, 0x22c803bd, 0x00450080, 0x00000000 },
-{ 0x00200001, 0x22a803bd, 0x00450070, 0x00000000 },
-{ 0x00200001, 0x228803bd, 0x00450060, 0x00000000 },
-{ 0x00200001, 0x226803bd, 0x00450050, 0x00000000 },
-{ 0x00200001, 0x224803bd, 0x00450040, 0x00000000 },
-{ 0x00200001, 0x233803bd, 0x004500b8, 0x00000000 },
-{ 0x00200001, 0x231803bd, 0x004500a8, 0x00000000 },
-{ 0x00200001, 0x22f803bd, 0x00450098, 0x00000000 },
-{ 0x00200001, 0x22d803bd, 0x00450088, 0x00000000 },
-{ 0x00200001, 0x22b803bd, 0x00450078, 0x00000000 },
-{ 0x00200001, 0x229803bd, 0x00450068, 0x00000000 },
-{ 0x00200001, 0x227803bd, 0x00450058, 0x00000000 },
-{ 0x00200001, 0x225803bd, 0x00450048, 0x00000000 },
-{ 0x00010220, 0x34001c00, 0x02001400, 0x000067d0 },
-{ 0x00600001, 0x204003bd, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000c20, 0x00000340, 0x02490000 },
-{ 0x00200001, 0x226003bd, 0x00450268, 0x00000000 },
-{ 0x00200001, 0x224003bd, 0x00450248, 0x00000000 },
-{ 0x00200001, 0x228003bd, 0x00450288, 0x00000000 },
-{ 0x00200001, 0x22c003bd, 0x004502c8, 0x00000000 },
-{ 0x00200001, 0x22a003bd, 0x004502a8, 0x00000000 },
-{ 0x00200001, 0x232003bd, 0x00450328, 0x00000000 },
-{ 0x00000001, 0x20480061, 0x00000000, 0x000f0007 },
-{ 0x00200001, 0x230003bd, 0x00450308, 0x00000000 },
-{ 0x00200001, 0x22e003bd, 0x004502e8, 0x00000000 },
-{ 0x00000040, 0x20402c21, 0x0000002c, 0x00040004 },
-{ 0x00000001, 0x204403bd, 0x00000028, 0x00000000 },
-{ 0x0c600031, 0x204003a1, 0x00000040, 0x00000200 },
-{ 0x00200001, 0x227003bd, 0x00450278, 0x00000000 },
-{ 0x00200001, 0x225003bd, 0x00450258, 0x00000000 },
-{ 0x00200001, 0x226803bd, 0x00450050, 0x00000000 },
-{ 0x00200001, 0x224803bd, 0x00450040, 0x00000000 },
-{ 0x00200001, 0x227803bd, 0x00450058, 0x00000000 },
-{ 0x00200001, 0x225803bd, 0x00450048, 0x00000000 },
-{ 0x00000001, 0x2040023d, 0x00000240, 0x00000000 },
-{ 0x00200001, 0x229003bd, 0x00450298, 0x00000000 },
-{ 0x00000001, 0x2044023d, 0x00000250, 0x00000000 },
-{ 0x00000001, 0x2048023d, 0x00000260, 0x00000000 },
-{ 0x00200001, 0x228803bd, 0x00450060, 0x00000000 },
-{ 0x00200001, 0x22d003bd, 0x004502d8, 0x00000000 },
-{ 0x00200001, 0x22b003bd, 0x004502b8, 0x00000000 },
-{ 0x00200001, 0x229803bd, 0x00450068, 0x00000000 },
-{ 0x00000001, 0x204c023d, 0x00000270, 0x00000000 },
-{ 0x00200001, 0x22c803bd, 0x00450080, 0x00000000 },
-{ 0x00200001, 0x22a803bd, 0x00450070, 0x00000000 },
-{ 0x00000001, 0x2050023d, 0x00000280, 0x00000000 },
-{ 0x00200001, 0x22d803bd, 0x00450088, 0x00000000 },
-{ 0x00200001, 0x22b803bd, 0x00450078, 0x00000000 },
-{ 0x00200001, 0x233003bd, 0x00450338, 0x00000000 },
-{ 0x00200001, 0x231003bd, 0x00450318, 0x00000000 },
-{ 0x00200001, 0x22f003bd, 0x004502f8, 0x00000000 },
-{ 0x00000001, 0x2054023d, 0x00000290, 0x00000000 },
-{ 0x00200001, 0x22e803bd, 0x00450090, 0x00000000 },
-{ 0x00200001, 0x230803bd, 0x004500a0, 0x00000000 },
-{ 0x00200001, 0x232803bd, 0x004500b0, 0x00000000 },
-{ 0x00000001, 0x2058023d, 0x000002a0, 0x00000000 },
-{ 0x00000001, 0x2060023d, 0x000002c0, 0x00000000 },
-{ 0x00000001, 0x2064023d, 0x000002d0, 0x00000000 },
-{ 0x00000001, 0x205c023d, 0x000002b0, 0x00000000 },
-{ 0x00200001, 0x233803bd, 0x004500b8, 0x00000000 },
-{ 0x00200001, 0x231803bd, 0x004500a8, 0x00000000 },
-{ 0x00200001, 0x22f803bd, 0x00450098, 0x00000000 },
-{ 0x00000001, 0x2068023d, 0x000002e0, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c1, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x00000241, 0x00000000 },
-{ 0x00000001, 0x203003fd, 0x00000000, 0x332bcc77 },
-{ 0x00000001, 0x214003fd, 0x00000000, 0x3c1d98ad },
-{ 0x00000001, 0x206c023d, 0x000002f0, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d1, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000251, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000261, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e1, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f1, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000271, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000281, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000301, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000311, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000291, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a1, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000321, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000331, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b1, 0x00000000 },
-{ 0x00800041, 0x20c07fbd, 0x008d0080, 0x3875735f },
-{ 0x00000001, 0x2080023d, 0x00000242, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c2, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000252, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000262, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000272, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000282, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000292, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a2, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872003 },
-{ 0x00000001, 0x209c023d, 0x000002b2, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d2, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x2080023d, 0x00000243, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e2, 0x00000000 },
-{ 0x00000001, 0x2070023d, 0x00000300, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f2, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000253, 0x00000000 },
-{ 0x00000001, 0x2074023d, 0x00000310, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000263, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000302, 0x00000000 },
-{ 0x00000001, 0x2078023d, 0x00000320, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000312, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000273, 0x00000000 },
-{ 0x00000001, 0x207c023d, 0x00000330, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000283, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000322, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72003 },
-{ 0x00000001, 0x20bc023d, 0x00000332, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000293, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a3, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x209c023d, 0x000002b3, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c3, 0x00000000 },
-{ 0x00000001, 0x215003fd, 0x00000000, 0x3e525448 },
-{ 0x00000001, 0x216003fd, 0x00000000, 0x3f11e168 },
-{ 0x00000001, 0x20a4023d, 0x000002d3, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e3, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f3, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000303, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20b4023d, 0x00000313, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000323, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x00000244, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000254, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000333, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x2088023d, 0x00000264, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000274, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c4, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d4, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000284, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000294, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e4, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f4, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a4, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b4, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000304, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000314, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00000001, 0x2080023d, 0x00000245, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000324, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000334, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000255, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000265, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x00000001, 0x20a0023d, 0x000002c5, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000275, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000285, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d5, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e5, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000295, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a5, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f5, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000305, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b5, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20b4023d, 0x00000315, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000325, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x00000246, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000256, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000335, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x2088023d, 0x00000266, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000276, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c6, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000286, 0x00000000 },
-{ 0x00000001, 0x217003fd, 0x00000000, 0x3875735f },
-{ 0x00000001, 0x20a4023d, 0x000002d6, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e6, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f6, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000306, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000296, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000316, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000326, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a6, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b6, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000336, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x2080023d, 0x00000247, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c7, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d7, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000257, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000267, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e7, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f7, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000277, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000287, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000307, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000317, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000297, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a7, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000327, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000337, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b7, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072017 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472017 },
-{ 0x00000001, 0x20a0023d, 0x000002c8, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x00000248, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000258, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d8, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e8, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000268, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000278, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f8, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000308, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000288, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000298, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000318, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000328, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a8, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b8, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000338, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00000001, 0x218003a5, 0x00000100, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000104, 0x00000000 },
-{ 0x00000001, 0x61a000b1, 0x00000180, 0x00000000 },
-{ 0x00000001, 0x2060023d, 0x000002c1, 0x00000000 },
-{ 0x00000001, 0x2040023d, 0x00000241, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x00000242, 0x00000000 },
-{ 0x00000001, 0x61a800b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000108, 0x00000000 },
-{ 0x00000001, 0x61b000b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000010c, 0x00000000 },
-{ 0x00000001, 0x61b800b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000110, 0x00000000 },
-{ 0x00000001, 0x61c000b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000114, 0x00000000 },
-{ 0x00000001, 0x61c800b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000118, 0x00000000 },
-{ 0x00000001, 0x61d000b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000011c, 0x00000000 },
-{ 0x00000001, 0x61d800b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000120, 0x00000000 },
-{ 0x00000001, 0x61e000b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000124, 0x00000000 },
-{ 0x00000001, 0x61e800b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000128, 0x00000000 },
-{ 0x00000001, 0x61f000b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000012c, 0x00000000 },
-{ 0x00000001, 0x61f800b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000130, 0x00000000 },
-{ 0x00000001, 0x2064023d, 0x000002d1, 0x00000000 },
-{ 0x00000001, 0x2044023d, 0x00000251, 0x00000000 },
-{ 0x00000001, 0x620000b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000134, 0x00000000 },
-{ 0x00000001, 0x2048023d, 0x00000261, 0x00000000 },
-{ 0x00000001, 0x2068023d, 0x000002e1, 0x00000000 },
-{ 0x00000001, 0x206c023d, 0x000002f1, 0x00000000 },
-{ 0x00000001, 0x204c023d, 0x00000271, 0x00000000 },
-{ 0x00000001, 0x620800b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000138, 0x00000000 },
-{ 0x00000001, 0x2050023d, 0x00000281, 0x00000000 },
-{ 0x00000001, 0x2070023d, 0x00000301, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000252, 0x00000000 },
-{ 0x00000001, 0x2074023d, 0x00000311, 0x00000000 },
-{ 0x00000001, 0x2054023d, 0x00000291, 0x00000000 },
-{ 0x00000001, 0x621000b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000262, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000013c, 0x00000000 },
-{ 0x00000001, 0x2058023d, 0x000002a1, 0x00000000 },
-{ 0x00000001, 0x2078023d, 0x00000321, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000272, 0x00000000 },
-{ 0x00000001, 0x207c023d, 0x00000331, 0x00000000 },
-{ 0x00000001, 0x205c023d, 0x000002b1, 0x00000000 },
-{ 0x00000001, 0x621800b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000282, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c2, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000292, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d2, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e2, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f2, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000302, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000312, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a2, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000322, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000332, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b2, 0x00000000 },
-{ 0x00800041, 0x20c07fbd, 0x008d0080, 0x3875735f },
-{ 0x00000001, 0x2080023d, 0x00000243, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c3, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872003 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72003 },
-{ 0x00000001, 0x2084023d, 0x00000253, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d3, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000263, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000273, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e3, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f3, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000283, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000293, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000303, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000313, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a3, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b3, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000323, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000333, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x2080023d, 0x00000244, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x20a0023d, 0x000002c4, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000254, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000264, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d4, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e4, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000274, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000284, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f4, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000304, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000294, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a4, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000314, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000324, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b4, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20bc023d, 0x00000334, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x2080023d, 0x00000245, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000255, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c5, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000265, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d5, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000275, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e5, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f5, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000285, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000295, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000305, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000315, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a5, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b5, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000325, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000335, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00000001, 0x2080023d, 0x00000246, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x00000001, 0x20a0023d, 0x000002c6, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000256, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000266, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d6, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e6, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000276, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000286, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f6, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000306, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000296, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a6, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000316, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000326, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b6, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20bc023d, 0x00000336, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x2080023d, 0x00000247, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000257, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c7, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d7, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000267, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000277, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e7, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f7, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000287, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000297, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000307, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000317, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a7, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b7, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000327, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000337, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x2080023d, 0x00000248, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c8, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000258, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000268, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000278, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000288, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000298, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a8, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b8, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072017 },
-{ 0x00000001, 0x2080023d, 0x00000249, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000259, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000269, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000279, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000289, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000299, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a9, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d8, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b9, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00000001, 0x20a8023d, 0x000002e8, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f8, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000100, 0x00000000 },
-{ 0x00000001, 0x61a100b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000308, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000318, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000104, 0x00000000 },
-{ 0x00000001, 0x61a900b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000328, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000338, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000108, 0x00000000 },
-{ 0x00000001, 0x61b100b1, 0x00000220, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472017 },
-{ 0x00000001, 0x20a0023d, 0x000002c9, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000010c, 0x00000000 },
-{ 0x00000001, 0x61b900b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d9, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e9, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000110, 0x00000000 },
-{ 0x00000001, 0x61c100b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f9, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000309, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000114, 0x00000000 },
-{ 0x00000001, 0x61c900b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000319, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000329, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000118, 0x00000000 },
-{ 0x00000001, 0x61d100b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000339, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x00000001, 0x222003a5, 0x0000011c, 0x00000000 },
-{ 0x00000001, 0x61d900b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000120, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c3, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x00000243, 0x00000000 },
-{ 0x00000001, 0x2060023d, 0x000002c2, 0x00000000 },
-{ 0x00000001, 0x2040023d, 0x00000242, 0x00000000 },
-{ 0x00000001, 0x61e100b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000124, 0x00000000 },
-{ 0x00000001, 0x61e900b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000128, 0x00000000 },
-{ 0x00000001, 0x61f100b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000012c, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d3, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000253, 0x00000000 },
-{ 0x00000001, 0x61f900b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x2064023d, 0x000002d2, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e3, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000263, 0x00000000 },
-{ 0x00000001, 0x2044023d, 0x00000252, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000130, 0x00000000 },
-{ 0x00000001, 0x620100b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x2048023d, 0x00000262, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000273, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f3, 0x00000000 },
-{ 0x00000001, 0x2068023d, 0x000002e2, 0x00000000 },
-{ 0x00000001, 0x206c023d, 0x000002f2, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000303, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000283, 0x00000000 },
-{ 0x00000001, 0x204c023d, 0x00000272, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000134, 0x00000000 },
-{ 0x00000001, 0x620900b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x2050023d, 0x00000282, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000293, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000313, 0x00000000 },
-{ 0x00000001, 0x2070023d, 0x00000302, 0x00000000 },
-{ 0x00000001, 0x2074023d, 0x00000312, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000323, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a3, 0x00000000 },
-{ 0x00000001, 0x2054023d, 0x00000292, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000138, 0x00000000 },
-{ 0x00000001, 0x621100b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x2058023d, 0x000002a2, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b3, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000333, 0x00000000 },
-{ 0x00000001, 0x2078023d, 0x00000322, 0x00000000 },
-{ 0x00000001, 0x207c023d, 0x00000332, 0x00000000 },
-{ 0x00800041, 0x20c07fbd, 0x008d0080, 0x3875735f },
-{ 0x00000001, 0x205c023d, 0x000002b2, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000013c, 0x00000000 },
-{ 0x00000001, 0x621900b1, 0x00000220, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872003 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72003 },
-{ 0x00000001, 0x2080023d, 0x00000244, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c4, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000254, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d4, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000264, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e4, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f4, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000274, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000284, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000304, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000314, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000294, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a4, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000324, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000334, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b4, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x20a0023d, 0x000002c5, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x00000245, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000255, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d5, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e5, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000265, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000275, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f5, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000305, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000285, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000295, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000315, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000325, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a5, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b5, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000335, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x2080023d, 0x00000246, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c6, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d6, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000256, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000266, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e6, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f6, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000276, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000286, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000306, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000316, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000296, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a6, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000326, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000336, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b6, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00000001, 0x2080023d, 0x00000247, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x00000001, 0x2084023d, 0x00000257, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c7, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000267, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000277, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d7, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e7, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000287, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000297, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f7, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000307, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a7, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b7, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000317, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000327, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x2080023d, 0x00000248, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000337, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x2084023d, 0x00000258, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000268, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c8, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d8, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000278, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000288, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e8, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f8, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000298, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a8, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000308, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000318, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b8, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x20b8023d, 0x00000328, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000338, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x00000249, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000259, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x20a0023d, 0x000002c9, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000269, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000279, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d9, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e9, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000289, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000299, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f9, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000309, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a9, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b9, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000319, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000329, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072017 },
-{ 0x00000001, 0x20bc023d, 0x00000339, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x0000024a, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472017 },
-{ 0x00000001, 0x20a0023d, 0x000002ca, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x0000025a, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x0000026a, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002da, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002ea, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x0000027a, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x0000028a, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002fa, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x0000030a, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x0000029a, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002aa, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x0000031a, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x0000032a, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002ba, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00000001, 0x20bc023d, 0x0000033a, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x00000001, 0x222003a5, 0x00000100, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000104, 0x00000000 },
-{ 0x00000001, 0x41a20231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000108, 0x00000000 },
-{ 0x00000001, 0x41aa0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000010c, 0x00000000 },
-{ 0x00000001, 0x41b20231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000110, 0x00000000 },
-{ 0x00000001, 0x41ba0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000114, 0x00000000 },
-{ 0x00000001, 0x41c20231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000118, 0x00000000 },
-{ 0x00000001, 0x41ca0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000011c, 0x00000000 },
-{ 0x00000001, 0x41d20231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000120, 0x00000000 },
-{ 0x00000001, 0x41da0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000124, 0x00000000 },
-{ 0x00000001, 0x41e20231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x41ea0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000128, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c4, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x00000244, 0x00000000 },
-{ 0x00000001, 0x2040023d, 0x00000243, 0x00000000 },
-{ 0x00000001, 0x2060023d, 0x000002c3, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000012c, 0x00000000 },
-{ 0x00000001, 0x41f20231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d4, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000254, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000130, 0x00000000 },
-{ 0x00000001, 0x41fa0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x2044023d, 0x00000253, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e4, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000264, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x2048023d, 0x00000263, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f4, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000274, 0x00000000 },
-{ 0x00000001, 0x2064023d, 0x000002d3, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000134, 0x00000000 },
-{ 0x00000001, 0x42020231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x2068023d, 0x000002e3, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000284, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000304, 0x00000000 },
-{ 0x00000001, 0x204c023d, 0x00000273, 0x00000000 },
-{ 0x00000001, 0x2050023d, 0x00000283, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000314, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000294, 0x00000000 },
-{ 0x00000001, 0x206c023d, 0x000002f3, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000138, 0x00000000 },
-{ 0x00000001, 0x420a0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x2070023d, 0x00000303, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a4, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000324, 0x00000000 },
-{ 0x00000001, 0x2054023d, 0x00000293, 0x00000000 },
-{ 0x00000001, 0x2058023d, 0x000002a3, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000334, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b4, 0x00000000 },
-{ 0x00000001, 0x2074023d, 0x00000313, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000013c, 0x00000000 },
-{ 0x00000001, 0x42120231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x2078023d, 0x00000323, 0x00000000 },
-{ 0x00800041, 0x20c07fbd, 0x008d0080, 0x3875735f },
-{ 0x00000001, 0x205c023d, 0x000002b3, 0x00000000 },
-{ 0x00000001, 0x207c023d, 0x00000333, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872003 },
-{ 0x00000001, 0x421a0231, 0x00000024, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72003 },
-{ 0x00000001, 0x2080023d, 0x00000245, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c5, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000255, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d5, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000265, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000275, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e5, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f5, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000285, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000295, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000305, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000315, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a5, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b5, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000325, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000335, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x2080023d, 0x00000246, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x20a0023d, 0x000002c6, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000256, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000266, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d6, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e6, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000276, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000286, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f6, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000306, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000296, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a6, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000316, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000326, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b6, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20bc023d, 0x00000336, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x2080023d, 0x00000247, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000257, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c7, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d7, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000267, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000277, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e7, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f7, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000287, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000297, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000307, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000317, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a7, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b7, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000327, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000337, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x00000001, 0x2080023d, 0x00000248, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000258, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000268, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c8, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000278, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000288, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d8, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e8, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000298, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a8, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f8, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000308, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b8, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20b4023d, 0x00000318, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000328, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x00000249, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000259, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000338, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x2088023d, 0x00000269, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000279, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c9, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d9, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000289, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000299, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e9, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f9, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a9, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b9, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000309, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000319, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x2080023d, 0x0000024a, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000329, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000339, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x0000025a, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x0000026a, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x20a0023d, 0x000002ca, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x0000027a, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x0000028a, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002da, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002ea, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x0000029a, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002aa, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002fa, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x0000030a, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002ba, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x0000031a, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x0000032a, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072017 },
-{ 0x00000001, 0x20bc023d, 0x0000033a, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x0000024b, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472017 },
-{ 0x00000001, 0x20a0023d, 0x000002cb, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x0000025b, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x0000026b, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002db, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002eb, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x0000027b, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x0000028b, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002fb, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x0000030b, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x0000029b, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002ab, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x0000031b, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x0000032b, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002bb, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00000001, 0x20bc023d, 0x0000033b, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x00000001, 0x222003a5, 0x00000100, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000104, 0x00000000 },
-{ 0x00000001, 0x41a30231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000108, 0x00000000 },
-{ 0x00000001, 0x41ab0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000010c, 0x00000000 },
-{ 0x00000001, 0x41b30231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000110, 0x00000000 },
-{ 0x00000001, 0x41bb0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000114, 0x00000000 },
-{ 0x00000001, 0x41c30231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000118, 0x00000000 },
-{ 0x00000001, 0x41cb0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000011c, 0x00000000 },
-{ 0x00000001, 0x41d30231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000120, 0x00000000 },
-{ 0x00000001, 0x41db0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000124, 0x00000000 },
-{ 0x00000001, 0x41e30231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x41eb0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000128, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c5, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x00000245, 0x00000000 },
-{ 0x00000001, 0x2060023d, 0x000002c4, 0x00000000 },
-{ 0x00000001, 0x2040023d, 0x00000244, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000012c, 0x00000000 },
-{ 0x00000001, 0x41f30231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000130, 0x00000000 },
-{ 0x00000001, 0x41fb0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d5, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000255, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e5, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000265, 0x00000000 },
-{ 0x00000001, 0x2064023d, 0x000002d4, 0x00000000 },
-{ 0x00000001, 0x2044023d, 0x00000254, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000134, 0x00000000 },
-{ 0x00000001, 0x42030231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x2048023d, 0x00000264, 0x00000000 },
-{ 0x00000001, 0x2068023d, 0x000002e4, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000275, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f5, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000305, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000285, 0x00000000 },
-{ 0x00000001, 0x206c023d, 0x000002f4, 0x00000000 },
-{ 0x00000001, 0x204c023d, 0x00000274, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000138, 0x00000000 },
-{ 0x00000001, 0x420b0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x2050023d, 0x00000284, 0x00000000 },
-{ 0x00000001, 0x2070023d, 0x00000304, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000295, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000315, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000325, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a5, 0x00000000 },
-{ 0x00000001, 0x2074023d, 0x00000314, 0x00000000 },
-{ 0x00000001, 0x2054023d, 0x00000294, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000013c, 0x00000000 },
-{ 0x00000001, 0x42130231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x2058023d, 0x000002a4, 0x00000000 },
-{ 0x00000001, 0x2078023d, 0x00000324, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b5, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000335, 0x00000000 },
-{ 0x00800041, 0x20c07fbd, 0x008d0080, 0x3875735f },
-{ 0x00000001, 0x207c023d, 0x00000334, 0x00000000 },
-{ 0x00000001, 0x205c023d, 0x000002b4, 0x00000000 },
-{ 0x00000001, 0x421b0231, 0x00000024, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872003 },
-{ 0x00000001, 0x2080023d, 0x00000246, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c6, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72003 },
-{ 0x00000001, 0x2084023d, 0x00000256, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000266, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d6, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000276, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000286, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e6, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f6, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000296, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a6, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000306, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000316, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b6, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x20b8023d, 0x00000326, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000336, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x00000247, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000257, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x20a0023d, 0x000002c7, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000267, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000277, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d7, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e7, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000287, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000297, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f7, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000307, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a7, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b7, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000317, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000327, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x2080023d, 0x00000248, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000337, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x2084023d, 0x00000258, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000268, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c8, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d8, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000278, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000288, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e8, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f8, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000298, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a8, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000308, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000318, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b8, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000328, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00000001, 0x20bc023d, 0x00000338, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x00000249, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000259, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000269, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x00000001, 0x208c023d, 0x00000279, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000289, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c9, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d9, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000299, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a9, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e9, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f9, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b9, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20b0023d, 0x00000309, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000319, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x0000024a, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x0000025a, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000329, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000339, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x0000026a, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x0000027a, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x20a0023d, 0x000002ca, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x0000028a, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x0000029a, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002da, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002ea, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002aa, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002ba, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002fa, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x0000030a, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x2080023d, 0x0000024b, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x0000031a, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x0000032a, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x0000025b, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x0000026b, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x0000033a, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x208c023d, 0x0000027b, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x0000028b, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002cb, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002db, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x0000029b, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002ab, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002eb, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002fb, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002bb, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x0000030b, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072017 },
-{ 0x00000001, 0x20b4023d, 0x0000031b, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x0000024c, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x0000025c, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x0000026c, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x0000027c, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x0000028c, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x0000029c, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002ac, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002bc, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00000001, 0x222003a5, 0x00000100, 0x00000000 },
-{ 0x00000001, 0x61a400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000104, 0x00000000 },
-{ 0x00000001, 0x61ac00b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x0000032b, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000108, 0x00000000 },
-{ 0x00000001, 0x61b400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x0000033b, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472017 },
-{ 0x00000001, 0x222003a5, 0x0000010c, 0x00000000 },
-{ 0x00000001, 0x61bc00b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002cc, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002dc, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000110, 0x00000000 },
-{ 0x00000001, 0x61c400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002ec, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002fc, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000114, 0x00000000 },
-{ 0x00000001, 0x61cc00b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x0000030c, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x0000031c, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000118, 0x00000000 },
-{ 0x00000001, 0x61d400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x0000032c, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x0000033c, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000011c, 0x00000000 },
-{ 0x00000001, 0x61dc00b1, 0x00000220, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x00000001, 0x222003a5, 0x00000120, 0x00000000 },
-{ 0x00000001, 0x61e400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000124, 0x00000000 },
-{ 0x00000001, 0x61ec00b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000128, 0x00000000 },
-{ 0x00000001, 0x61f400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000012c, 0x00000000 },
-{ 0x00000001, 0x61fc00b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000130, 0x00000000 },
-{ 0x00000001, 0x620400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000134, 0x00000000 },
-{ 0x00000001, 0x620c00b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000138, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c6, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x00000246, 0x00000000 },
-{ 0x00000001, 0x2060023d, 0x000002c5, 0x00000000 },
-{ 0x00000001, 0x2040023d, 0x00000245, 0x00000000 },
-{ 0x00000001, 0x621400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d6, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000256, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000266, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e6, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f6, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000276, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000286, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000306, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000316, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000296, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a6, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000326, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000336, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b6, 0x00000000 },
-{ 0x00800041, 0x20c07fbd, 0x008d0080, 0x3875735f },
-{ 0x00000001, 0x2064023d, 0x000002d5, 0x00000000 },
-{ 0x00000001, 0x2044023d, 0x00000255, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x00000247, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c7, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000257, 0x00000000 },
-{ 0x00000001, 0x2048023d, 0x00000265, 0x00000000 },
-{ 0x00000001, 0x2068023d, 0x000002e5, 0x00000000 },
-{ 0x00000001, 0x206c023d, 0x000002f5, 0x00000000 },
-{ 0x00000001, 0x204c023d, 0x00000275, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000267, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000277, 0x00000000 },
-{ 0x00000001, 0x2050023d, 0x00000285, 0x00000000 },
-{ 0x00000001, 0x2070023d, 0x00000305, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d7, 0x00000000 },
-{ 0x00000001, 0x2074023d, 0x00000315, 0x00000000 },
-{ 0x00000001, 0x2054023d, 0x00000295, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000287, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e7, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000297, 0x00000000 },
-{ 0x00000001, 0x2058023d, 0x000002a5, 0x00000000 },
-{ 0x00000001, 0x2078023d, 0x00000325, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f7, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000013c, 0x00000000 },
-{ 0x00000001, 0x207c023d, 0x00000335, 0x00000000 },
-{ 0x00000001, 0x205c023d, 0x000002b5, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a7, 0x00000000 },
-{ 0x00000001, 0x621c00b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000307, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b7, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872003 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72003 },
-{ 0x00000001, 0x20b4023d, 0x00000317, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x20b8023d, 0x00000327, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x00000248, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000258, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000268, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000337, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000278, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000288, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x20a0023d, 0x000002c8, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000298, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a8, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d8, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e8, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b8, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20ac023d, 0x000002f8, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000308, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x00000249, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000259, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000318, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000328, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000269, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000279, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000338, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x2090023d, 0x00000289, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000299, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c9, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d9, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a9, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b9, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e9, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f9, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00000001, 0x2080023d, 0x0000024a, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000309, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000319, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x0000025a, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x0000026a, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000329, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000339, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x0000027a, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x0000028a, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x00000001, 0x20a0023d, 0x000002ca, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x0000029a, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002aa, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002da, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002ea, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002ba, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002fa, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20b0023d, 0x0000030a, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x0000024b, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x0000025b, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x0000026b, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x0000031a, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x0000027b, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x0000028b, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x0000032a, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x0000033a, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x0000029b, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002ab, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x20a0023d, 0x000002cb, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002bb, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x20a4023d, 0x000002db, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002eb, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x0000024c, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x0000025c, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002fb, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x0000030b, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x0000026c, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x0000027c, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x0000031b, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x0000032b, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x0000028c, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x0000029c, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x0000033b, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x2098023d, 0x000002ac, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002bc, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002cc, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002dc, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072017 },
-{ 0x00000001, 0x2080023d, 0x0000024d, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002ec, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002fc, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x0000025d, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x0000026d, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x0000030c, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x0000031c, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x0000027d, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x0000028d, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x0000032c, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x0000033c, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x0000029d, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002ad, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472017 },
-{ 0x00000001, 0x20a0023d, 0x000002cd, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002bd, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002dd, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00000001, 0x20a8023d, 0x000002ed, 0x00000000 },
-{ 0x00000001, 0x2040023d, 0x00000246, 0x00000000 },
-{ 0x00000001, 0x2060023d, 0x000002c6, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000100, 0x00000000 },
-{ 0x00000001, 0x61a500b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000104, 0x00000000 },
-{ 0x00000001, 0x61ad00b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000108, 0x00000000 },
-{ 0x00000001, 0x61b500b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000010c, 0x00000000 },
-{ 0x00000001, 0x61bd00b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000110, 0x00000000 },
-{ 0x00000001, 0x61c500b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002fd, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000114, 0x00000000 },
-{ 0x00000001, 0x61cd00b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x0000030d, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x0000031d, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000118, 0x00000000 },
-{ 0x00000001, 0x61d500b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x0000032d, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x0000033d, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000011c, 0x00000000 },
-{ 0x00000001, 0x61dd00b1, 0x00000220, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x00000001, 0x222003a5, 0x00000120, 0x00000000 },
-{ 0x00000001, 0x61e500b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000124, 0x00000000 },
-{ 0x00000001, 0x61ed00b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000128, 0x00000000 },
-{ 0x00000001, 0x61f500b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000012c, 0x00000000 },
-{ 0x00000001, 0x61fd00b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000130, 0x00000000 },
-{ 0x00000001, 0x2044023d, 0x00000256, 0x00000000 },
-{ 0x00000001, 0x620500b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000134, 0x00000000 },
-{ 0x00000001, 0x2048023d, 0x00000266, 0x00000000 },
-{ 0x00000001, 0x204c023d, 0x00000276, 0x00000000 },
-{ 0x00000001, 0x620d00b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000138, 0x00000000 },
-{ 0x00000001, 0x2050023d, 0x00000286, 0x00000000 },
-{ 0x00000001, 0x2054023d, 0x00000296, 0x00000000 },
-{ 0x00000001, 0x621500b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x2064023d, 0x000002d6, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000013c, 0x00000000 },
-{ 0x00000001, 0x2058023d, 0x000002a6, 0x00000000 },
-{ 0x00000001, 0x2068023d, 0x000002e6, 0x00000000 },
-{ 0x00000001, 0x205c023d, 0x000002b6, 0x00000000 },
-{ 0x00000001, 0x621d00b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x206c023d, 0x000002f6, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c7, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x00000247, 0x00000000 },
-{ 0x00000001, 0x2070023d, 0x00000306, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d7, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000257, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000267, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e7, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f7, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000277, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000287, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000307, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000317, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000297, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a7, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000327, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000337, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b7, 0x00000000 },
-{ 0x00800041, 0x20c07fbd, 0x008d0080, 0x3875735f },
-{ 0x00000001, 0x2080023d, 0x00000248, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c8, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872003 },
-{ 0x00000001, 0x2084023d, 0x00000258, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000268, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000278, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000288, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000298, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a8, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d8, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b8, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e8, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x2080023d, 0x00000249, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f8, 0x00000000 },
-{ 0x00000001, 0x2074023d, 0x00000316, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000308, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000259, 0x00000000 },
-{ 0x00000001, 0x2078023d, 0x00000326, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000269, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000318, 0x00000000 },
-{ 0x00000001, 0x207c023d, 0x00000336, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000328, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000279, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72003 },
-{ 0x00000001, 0x2090023d, 0x00000289, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000338, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x2094023d, 0x00000299, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a9, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c9, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d9, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b9, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e9, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20ac023d, 0x000002f9, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x0000024a, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x0000025a, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x0000026a, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000309, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x0000027a, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x0000028a, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000319, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000329, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x0000029a, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002aa, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000339, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x209c023d, 0x000002ba, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00000001, 0x20a0023d, 0x000002ca, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002da, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x0000024b, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x0000025b, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002ea, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002fa, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x0000026b, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x0000027b, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x0000030a, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x0000031a, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x0000028b, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x0000029b, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x0000032a, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x0000033a, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002ab, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002bb, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x00000001, 0x20a0023d, 0x000002cb, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x2080023d, 0x0000024c, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002db, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002eb, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x0000025c, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x0000026c, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002fb, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x0000030b, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x0000027c, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x0000028c, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x0000031b, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x0000032b, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x0000029c, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002ac, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x0000033b, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x209c023d, 0x000002bc, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002cc, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002dc, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x20a8023d, 0x000002ec, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002fc, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x0000030c, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x0000031c, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x0000032c, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x0000033c, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x0000024d, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x20a0023d, 0x000002cd, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x0000025d, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x0000026d, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002dd, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002ed, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x0000027d, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x0000028d, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002fd, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x0000030d, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x0000029d, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002ad, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x0000031d, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x0000032d, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002bd, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072017 },
-{ 0x00000001, 0x20bc023d, 0x0000033d, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472017 },
-{ 0x00000001, 0x2080023d, 0x0000024e, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x0000025e, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002ce, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002de, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x0000026e, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x0000027e, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002ee, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002fe, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x0000028e, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x0000029e, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x0000030e, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x0000031e, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002ae, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002be, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x0000032e, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x0000033e, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00000001, 0x222003a5, 0x00000100, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000104, 0x00000000 },
-{ 0x00000001, 0x41a60231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x41ae0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000108, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x2040023d, 0x00000247, 0x00000000 },
-{ 0x00000001, 0x2060023d, 0x000002c7, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000010c, 0x00000000 },
-{ 0x00000001, 0x41b60231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000110, 0x00000000 },
-{ 0x00000001, 0x41be0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000114, 0x00000000 },
-{ 0x00000001, 0x41c60231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000118, 0x00000000 },
-{ 0x00000001, 0x41ce0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000011c, 0x00000000 },
-{ 0x00000001, 0x41d60231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000120, 0x00000000 },
-{ 0x00000001, 0x41de0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000124, 0x00000000 },
-{ 0x00000001, 0x41e60231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000128, 0x00000000 },
-{ 0x00000001, 0x41ee0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000012c, 0x00000000 },
-{ 0x00000001, 0x41f60231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000130, 0x00000000 },
-{ 0x00000001, 0x41fe0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x2044023d, 0x00000257, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000134, 0x00000000 },
-{ 0x00000001, 0x42060231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x2048023d, 0x00000267, 0x00000000 },
-{ 0x00000001, 0x204c023d, 0x00000277, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x00000138, 0x00000000 },
-{ 0x00000001, 0x420e0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x2050023d, 0x00000287, 0x00000000 },
-{ 0x00000001, 0x2054023d, 0x00000297, 0x00000000 },
-{ 0x00000001, 0x222003a5, 0x0000013c, 0x00000000 },
-{ 0x00000001, 0x42160231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x2058023d, 0x000002a7, 0x00000000 },
-{ 0x00000001, 0x2064023d, 0x000002d7, 0x00000000 },
-{ 0x00000001, 0x205c023d, 0x000002b7, 0x00000000 },
-{ 0x00000001, 0x421e0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x2068023d, 0x000002e7, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c8, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x00000248, 0x00000000 },
-{ 0x00000001, 0x206c023d, 0x000002f7, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d8, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x00000258, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000268, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e8, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f8, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000278, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000288, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000308, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000318, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000298, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a8, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000328, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x00000338, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b8, 0x00000000 },
-{ 0x00800041, 0x20c07fbd, 0x008d0080, 0x3875735f },
-{ 0x00000001, 0x2080023d, 0x00000249, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002c9, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872003 },
-{ 0x00000001, 0x2084023d, 0x00000259, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x00000269, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x00000279, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x00000289, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x00000299, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002a9, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002b9, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002d9, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x2080023d, 0x0000024a, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002e9, 0x00000000 },
-{ 0x00000001, 0x2070023d, 0x00000307, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002f9, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x0000025a, 0x00000000 },
-{ 0x00000001, 0x2074023d, 0x00000317, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x0000026a, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x00000309, 0x00000000 },
-{ 0x00000001, 0x2078023d, 0x00000327, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x00000319, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x0000027a, 0x00000000 },
-{ 0x00000001, 0x207c023d, 0x00000337, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x0000028a, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x00000329, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72003 },
-{ 0x00000001, 0x20bc023d, 0x00000339, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x0000029a, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002aa, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x20a0023d, 0x000002ca, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002ba, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002da, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20a8023d, 0x000002ea, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x0000024b, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002fa, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x0000025b, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x0000026b, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x0000030a, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x0000031a, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x0000027b, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x0000028b, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x0000032a, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x0000033a, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x0000029b, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002ab, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x20a0023d, 0x000002cb, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002bb, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00000001, 0x20a4023d, 0x000002db, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002eb, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x0000024c, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x0000025c, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002fb, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x0000030b, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x0000026c, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x0000027c, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x0000031b, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x0000032b, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x0000028c, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x0000029c, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x0000033b, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x00000001, 0x2098023d, 0x000002ac, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002bc, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002cc, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002dc, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x2080023d, 0x0000024d, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002ec, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002fc, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x0000025d, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x0000026d, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x0000030c, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x0000031c, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x0000027d, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x0000028d, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x0000032c, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x0000033c, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x0000029d, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002ad, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x209c023d, 0x000002bd, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002cd, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x20a4023d, 0x000002dd, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002ed, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002fd, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x0000030d, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x0000031d, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x0000032d, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x0000033d, 0x00000000 },
-{ 0x00000001, 0x2080023d, 0x0000024e, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x20a0023d, 0x000002ce, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x0000025e, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x0000026e, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002de, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002ee, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x0000027e, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x0000028e, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002fe, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x0000030e, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x0000029e, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002ae, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x0000031e, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x0000032e, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002be, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072017 },
-{ 0x00000001, 0x20bc023d, 0x0000033e, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472017 },
-{ 0x00000001, 0x2080023d, 0x0000024f, 0x00000000 },
-{ 0x00000001, 0x2084023d, 0x0000025f, 0x00000000 },
-{ 0x00000001, 0x20a0023d, 0x000002cf, 0x00000000 },
-{ 0x00000001, 0x20a4023d, 0x000002df, 0x00000000 },
-{ 0x00000001, 0x2088023d, 0x0000026f, 0x00000000 },
-{ 0x00000001, 0x208c023d, 0x0000027f, 0x00000000 },
-{ 0x00000001, 0x20a8023d, 0x000002ef, 0x00000000 },
-{ 0x00000001, 0x20ac023d, 0x000002ff, 0x00000000 },
-{ 0x00000001, 0x2090023d, 0x0000028f, 0x00000000 },
-{ 0x00000001, 0x2094023d, 0x0000029f, 0x00000000 },
-{ 0x00000001, 0x20b0023d, 0x0000030f, 0x00000000 },
-{ 0x00000001, 0x20b4023d, 0x0000031f, 0x00000000 },
-{ 0x00000001, 0x2098023d, 0x000002af, 0x00000000 },
-{ 0x00000001, 0x209c023d, 0x000002bf, 0x00000000 },
-{ 0x00000001, 0x20b8023d, 0x0000032f, 0x00000000 },
-{ 0x00000001, 0x20bc023d, 0x0000033f, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00000001, 0x204003a5, 0x00000100, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x00000001, 0x602400b1, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x204003a5, 0x00000104, 0x00000000 },
-{ 0x00000001, 0x41a70231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x41af0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x204003a5, 0x00000108, 0x00000000 },
-{ 0x00600001, 0x218003bd, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000c20, 0x00000344, 0x0a0a8000 },
-{ 0x00000001, 0x602400b1, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x204003a5, 0x0000010c, 0x00000000 },
-{ 0x00000001, 0x41b70231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x204003a5, 0x00000110, 0x00000000 },
-{ 0x00000001, 0x41bf0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x204003a5, 0x00000114, 0x00000000 },
-{ 0x00000001, 0x41c70231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x204003a5, 0x00000118, 0x00000000 },
-{ 0x00000001, 0x41cf0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x204003a5, 0x0000011c, 0x00000000 },
-{ 0x00000001, 0x41d70231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x204003a5, 0x00000120, 0x00000000 },
-{ 0x00000001, 0x41df0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x204003a5, 0x00000124, 0x00000000 },
-{ 0x00000001, 0x41e70231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x204003a5, 0x00000128, 0x00000000 },
-{ 0x00000001, 0x41ef0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x204003a5, 0x0000012c, 0x00000000 },
-{ 0x00000001, 0x41f70231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x204003a5, 0x00000130, 0x00000000 },
-{ 0x00000001, 0x41ff0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x204003a5, 0x00000134, 0x00000000 },
-{ 0x00000001, 0x42070231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x204003a5, 0x00000138, 0x00000000 },
-{ 0x00000001, 0x420f0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x602400b1, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x204003a5, 0x0000013c, 0x00000000 },
-{ 0x00000001, 0x42170231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x21880061, 0x00000000, 0x000f0007 },
-{ 0x00000001, 0x602400b1, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x218003bd, 0x0000002c, 0x00000000 },
-{ 0x00000001, 0x421f0231, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x218403bd, 0x00000028, 0x00000000 },
-{ 0x0c600031, 0x200003a0, 0x00000180, 0x00000200 },
-{ 0x00000040, 0x202c2c21, 0x0000002c, 0x00080008 },
-{ 0x00000040, 0x20243c21, 0x00000020, 0xfffcfffc },
-{ 0x05000010, 0x20000420, 0x0000002c, 0x00000024 },
-{ 0x00010220, 0x34001c00, 0x00001400, 0xffff9830 },
-{ 0x00600001, 0x204003bd, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000c20, 0x00000340, 0x02290000 },
-{ 0x00000001, 0x20480061, 0x00000000, 0x000f0003 },
-{ 0x00000001, 0x20400161, 0x00000000, 0x00000000 },
-{ 0x00000001, 0x204403bd, 0x00000028, 0x00000000 },
-{ 0x0c600031, 0x204003a1, 0x00000040, 0x00000200 },
-{ 0x00800001, 0x206003bd, 0x008d0040, 0x00000000 },
-{ 0x00000040, 0x22000c20, 0x00000344, 0x060a8000 },
-{ 0x00600001, 0x204003bd, 0x008d0000, 0x00000000 },
-{ 0x00000001, 0x20480061, 0x00000000, 0x000f0003 },
-{ 0x00000001, 0x20400161, 0x00000000, 0x00000000 },
-{ 0x00000001, 0x204403bd, 0x00000028, 0x00000000 },
-{ 0x0c600031, 0x200003a0, 0x00000040, 0x00000200 },
-{ 0x00000040, 0x20243c21, 0x00000020, 0xfffcfffc },
-{ 0x00600001, 0x204003bd, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000c20, 0x00000340, 0x02290000 },
-{ 0x00000001, 0x20480061, 0x00000000, 0x000f0003 },
-{ 0x00000001, 0x204003bd, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x204403bd, 0x00000028, 0x00000000 },
-{ 0x0c600031, 0x204003a1, 0x00000040, 0x00000200 },
-{ 0x00800001, 0x206003bd, 0x008d0040, 0x00000000 },
-{ 0x00000040, 0x22000c20, 0x00000344, 0x060a8000 },
-{ 0x00600001, 0x204003bd, 0x008d0000, 0x00000000 },
-{ 0x00000001, 0x20480061, 0x00000000, 0x000f0003 },
-{ 0x00000001, 0x204003bd, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x204403bd, 0x00000028, 0x00000000 },
-{ 0x0c600031, 0x200003a0, 0x00000040, 0x00000200 },
-{ 0x00600001, 0x2e0003bd, 0x008d0000, 0x00000000 },
-{ 0x07000031, 0x20000fa0, 0x00000e00, 0x82000010 },
diff --git a/src/shaders/post_processing/gen75/sharpening_unmask.g75b b/src/shaders/post_processing/gen75/sharpening_unmask.g75b
deleted file mode 100644
index e0baf3b..0000000
--- a/src/shaders/post_processing/gen75/sharpening_unmask.g75b
+++ /dev/null
@@ -1,170 +0,0 @@
-{ 0x00000001, 0x21280161, 0x00000000, 0x00000000 },
-{ 0x00000001, 0x202c0161, 0x00000000, 0x00000000 },
-{ 0x00000001, 0x21480161, 0x00000000, 0x00050005 },
-{ 0x00000001, 0x21680161, 0x00000000, 0x00040004 },
-{ 0x00000001, 0x21880161, 0x00000000, 0x00020002 },
-{ 0x00000001, 0x21080161, 0x00000000, 0x00010001 },
-{ 0x06000010, 0x20002c20, 0x04000020, 0x00000000 },
-{ 0x00010220, 0x34001c00, 0x04001400, 0x00000530 },
-{ 0x00600001, 0x204003bd, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000c20, 0x00000128, 0x02190000 },
-{ 0x06000010, 0x20002c20, 0x02000030, 0x00000000 },
-{ 0x00000001, 0x20480061, 0x00000000, 0x00030003 },
-{ 0x00000001, 0x204003bd, 0x0000002c, 0x00000000 },
-{ 0x00000001, 0x204403bd, 0x00000028, 0x00000000 },
-{ 0x0c600031, 0x206003a1, 0x00000040, 0x00000200 },
-{ 0x00000040, 0x22000c20, 0x00000188, 0x02190000 },
-{ 0x00400001, 0x21a003bd, 0x00690060, 0x00000000 },
-{ 0x0c600031, 0x204003a1, 0x00000040, 0x00000200 },
-{ 0x00400001, 0x21c003bd, 0x00690040, 0x00000000 },
-{ 0x00010220, 0x34001c00, 0x02001400, 0x00000150 },
-{ 0x00000001, 0x218201ed, 0x00000000, 0x00800080 },
-{ 0x00400001, 0x217003bd, 0x006901a0, 0x00000000 },
-{ 0x00400001, 0x215003bd, 0x006901c0, 0x00000000 },
-{ 0x0020002c, 0x21601c01, 0x00490000, 0x00000460 },
-{ 0x00000001, 0x210c01ed, 0x00000000, 0x00800080 },
-{ 0x00400001, 0x217003bd, 0x006901a0, 0x00000000 },
-{ 0x00400001, 0x215003bd, 0x00690150, 0x00000000 },
-{ 0x0020002c, 0x21201c01, 0x00490000, 0x00000500 },
-{ 0x00400001, 0x217003bd, 0x00690150, 0x00000000 },
-{ 0x00000001, 0x218001ed, 0x00000000, 0x00800080 },
-{ 0x00400001, 0x215003bd, 0x00690150, 0x00000000 },
-{ 0x0020002c, 0x21001c01, 0x00490000, 0x00000570 },
-{ 0x00000001, 0x218001ed, 0x00000000, 0x00800080 },
-{ 0x0020002c, 0x21001c01, 0x00490000, 0x00000550 },
-{ 0x00000001, 0x4180002d, 0x00000030, 0x00000000 },
-{ 0x00400001, 0x217003bd, 0x00690150, 0x00000000 },
-{ 0x00000001, 0x202401ad, 0x00000180, 0x00000000 },
-{ 0x00400001, 0x215003bd, 0x006901a0, 0x00000000 },
-{ 0x0020002c, 0x21001c01, 0x00490000, 0x00000500 },
-{ 0x00400001, 0x219003bd, 0x00690150, 0x00000000 },
-{ 0x00000220, 0x34001c00, 0x00001400, 0x00000010 },
-{ 0x00400001, 0x219003bd, 0x006901a0, 0x00000000 },
-{ 0x01000010, 0x20002c20, 0x00000034, 0x00000000 },
-{ 0x00010220, 0x34001c00, 0x00001400, 0x00000160 },
-{ 0x00000001, 0x210e01ed, 0x00000000, 0x00800080 },
-{ 0x00400001, 0x217003bd, 0x006901a0, 0x00000000 },
-{ 0x00400001, 0x215003bd, 0x006901c0, 0x00000000 },
-{ 0x0020002c, 0x21801c01, 0x00490000, 0x000005e0 },
-{ 0x00000001, 0x210c01ed, 0x00000000, 0x00800080 },
-{ 0x00400001, 0x217003bd, 0x006901a0, 0x00000000 },
-{ 0x00400001, 0x215003bd, 0x00690150, 0x00000000 },
-{ 0x0020002c, 0x21201c01, 0x00490000, 0x00000380 },
-{ 0x00600040, 0x41503e31, 0x00ae4150, 0x00ff00ff },
-{ 0x00000001, 0x211001ed, 0x00000000, 0x00800080 },
-{ 0x00600040, 0x41513e31, 0x00ae4151, 0x00ff00ff },
-{ 0x00400001, 0x217003bd, 0x00690150, 0x00000000 },
-{ 0x0020002c, 0x21401c01, 0x00490000, 0x00000630 },
-{ 0x00000001, 0x211001ed, 0x00000000, 0x00800080 },
-{ 0x0020002c, 0x21401c01, 0x00490000, 0x00000610 },
-{ 0x00000001, 0x4110002d, 0x00000034, 0x00000000 },
-{ 0x00400001, 0x217003bd, 0x00690150, 0x00000000 },
-{ 0x00000001, 0x202401ad, 0x00000110, 0x00000000 },
-{ 0x00400001, 0x215003bd, 0x00690190, 0x00000000 },
-{ 0x0020002c, 0x21401c01, 0x00490000, 0x000005c0 },
-{ 0x00400001, 0x21e003bd, 0x00690150, 0x00000000 },
-{ 0x00000220, 0x34001c00, 0x00001400, 0x00000010 },
-{ 0x00400001, 0x21e003bd, 0x00690190, 0x00000000 },
-{ 0x00600001, 0x204003bd, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000c20, 0x00000168, 0x040a8000 },
-{ 0x00400001, 0x206003bd, 0x006901e0, 0x00000000 },
-{ 0x00000001, 0x20480061, 0x00000000, 0x00030003 },
-{ 0x00000001, 0x204003bd, 0x0000002c, 0x00000000 },
-{ 0x00000001, 0x204403bd, 0x00000028, 0x00000000 },
-{ 0x0c600031, 0x200003a0, 0x00000040, 0x00000200 },
-{ 0x0000000c, 0x20242c21, 0x00000028, 0x00010001 },
-{ 0x00600001, 0x204003bd, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000c20, 0x00000108, 0x02190000 },
-{ 0x00000001, 0x20480061, 0x00000000, 0x00010003 },
-{ 0x00000001, 0x204003bd, 0x0000002c, 0x00000000 },
-{ 0x00000001, 0x204403bd, 0x00000024, 0x00000000 },
-{ 0x0c600031, 0x204003a1, 0x00000040, 0x00000200 },
-{ 0x00200001, 0x206003bd, 0x00450040, 0x00000000 },
-{ 0x00000040, 0x22000c20, 0x00000148, 0x040a8000 },
-{ 0x00600001, 0x204003bd, 0x008d0000, 0x00000000 },
-{ 0x00000001, 0x20480061, 0x00000000, 0x00010003 },
-{ 0x00000001, 0x204003bd, 0x0000002c, 0x00000000 },
-{ 0x00000001, 0x204403bd, 0x00000024, 0x00000000 },
-{ 0x0c600031, 0x200003a0, 0x00000040, 0x00000200 },
-{ 0x00000040, 0x202c2c21, 0x0000002c, 0x00040004 },
-{ 0x05000010, 0x20000420, 0x0600002c, 0x00000020 },
-{ 0x00010220, 0x34001c00, 0x06001400, 0xfffffad0 },
-{ 0x00600001, 0x2e0003bd, 0x008d0000, 0x00000000 },
-{ 0x07000031, 0x20000fa0, 0x00000e00, 0x82000010 },
-{ 0x00000040, 0x20243da5, 0x00004182, 0x00800080 },
-{ 0x00600041, 0x20c03625, 0x008d0178, 0x00000182 },
-{ 0x00600041, 0x20803625, 0x008d0170, 0x00000182 },
-{ 0x05600010, 0x2000462c, 0x00ae0170, 0x00ae0150 },
-{ 0x00600041, 0x206044a5, 0x00000024, 0x008d0158 },
-{ 0x00600041, 0x204044a5, 0x00000024, 0x008d0150 },
-{ 0x00600040, 0x20a014a5, 0x008d00c0, 0x008d0060 },
-{ 0x00600040, 0x208014a5, 0x008d0080, 0x008d0040 },
-{ 0x0080000c, 0x40403cad, 0x008d0080, 0x00070007 },
-{ 0x05601010, 0x2000462c, 0x00ae0171, 0x00ae0151 },
-{ 0x00800001, 0x204001ad, 0x00ae0040, 0x00000000 },
-{ 0x00610001, 0x415001b1, 0x00ae0040, 0x00000000 },
-{ 0x00611001, 0x415101b1, 0x00ae0042, 0x00000000 },
-{ 0x0020002d, 0x20000024, 0x00450160, 0x00000000 },
-{ 0x00800040, 0x2040462d, 0x00b10150, 0x00b14170 },
-{ 0x00000040, 0x20243da5, 0x0000410c, 0x00800080 },
-{ 0x05800010, 0x20003dac, 0x04b10040, 0x00000000 },
-{ 0x00810001, 0x204001ad, 0x04b14040, 0x00000000 },
-{ 0x00600041, 0x208044a5, 0x00000024, 0x008d0158 },
-{ 0x00600041, 0x206044a5, 0x00000024, 0x008d0150 },
-{ 0x00800041, 0x20a035a5, 0x008d0040, 0x0000010c },
-{ 0x00800040, 0x204014a5, 0x008d00a0, 0x008d0060 },
-{ 0x0080000c, 0x60403cb1, 0x008d0040, 0x00070007 },
-{ 0x00800001, 0x21500231, 0x00cf0040, 0x00000000 },
-{ 0x0020002d, 0x20000024, 0x00450120, 0x00000000 },
-{ 0x00600040, 0x20803e25, 0x008d4170, 0x00ff00ff },
-{ 0x00600040, 0x20403e25, 0x008d4150, 0x00ff00ff },
-{ 0x00600040, 0x20a03e25, 0x008d4178, 0x00ff00ff },
-{ 0x00600040, 0x20603e25, 0x008d4158, 0x00ff00ff },
-{ 0x00000040, 0x20243da5, 0x00004180, 0x00800080 },
-{ 0x10600041, 0x240014a4, 0x008d0040, 0x008d0080 },
-{ 0x10600049, 0x200014a4, 0x008d0040, 0x008d0080 },
-{ 0x00600001, 0x20c00085, 0x008d0400, 0x00000000 },
-{ 0x10600041, 0x240014a4, 0x008d0060, 0x008d00a0 },
-{ 0x10600049, 0x200014a4, 0x008d0060, 0x008d00a0 },
-{ 0x00600001, 0x20e00085, 0x008d0400, 0x00000000 },
-{ 0x00000001, 0x204001e5, 0x00000000, 0x00ff00ff },
-{ 0x0c600038, 0x208014a5, 0x008d00e0, 0x00000040 },
-{ 0x0c600038, 0x206014a5, 0x008d00c0, 0x00000040 },
-{ 0x00800040, 0x40403cad, 0x008d4060, 0x00ff00ff },
-{ 0x00800001, 0x204001ad, 0x00ae0040, 0x00000000 },
-{ 0x00600041, 0x208044a5, 0x00000024, 0x008d0158 },
-{ 0x00800041, 0x20a035a5, 0x008d0040, 0x00000180 },
-{ 0x00600041, 0x206044a5, 0x00000024, 0x008d0150 },
-{ 0x00800040, 0x204014a5, 0x008d00a0, 0x008d0060 },
-{ 0x0080000c, 0x60403cb1, 0x008d0040, 0x00070007 },
-{ 0x00800001, 0x21500231, 0x00cf0040, 0x00000000 },
-{ 0x0020002d, 0x20000024, 0x00450100, 0x00000000 },
-{ 0x00000040, 0x20243da5, 0x0000410e, 0x00800080 },
-{ 0x00600041, 0x20c03625, 0x008d0178, 0x0000010e },
-{ 0x00600041, 0x20803625, 0x008d0170, 0x0000010e },
-{ 0x03600010, 0x2000462c, 0x02ae0170, 0x00ae0150 },
-{ 0x00600041, 0x206044a5, 0x00000024, 0x008d0158 },
-{ 0x00600041, 0x204044a5, 0x00000024, 0x008d0150 },
-{ 0x00600040, 0x20a014a5, 0x008d00c0, 0x008d0060 },
-{ 0x00600040, 0x208014a5, 0x008d0080, 0x008d0040 },
-{ 0x0080000c, 0x40403cad, 0x008d0080, 0x00070007 },
-{ 0x03601010, 0x2000462c, 0x02ae0171, 0x00ae0151 },
-{ 0x00800001, 0x204001ad, 0x00ae0040, 0x00000000 },
-{ 0x00610001, 0x415001b1, 0x02ae0040, 0x00000000 },
-{ 0x00611001, 0x415101b1, 0x02ae0042, 0x00000000 },
-{ 0x0020002d, 0x20000024, 0x00450180, 0x00000000 },
-{ 0x00000001, 0x208001e5, 0x00000000, 0x00ff00ff },
-{ 0x00600041, 0x20604625, 0x008d0178, 0x008d0158 },
-{ 0x00600041, 0x20404625, 0x008d0170, 0x008d0150 },
-{ 0x00000040, 0x20243da5, 0x00004110, 0x00800080 },
-{ 0x0c600038, 0x20c014a5, 0x008d0060, 0x00000080 },
-{ 0x0c600038, 0x20a014a5, 0x008d0040, 0x00000080 },
-{ 0x00800001, 0x404000ad, 0x008d00a0, 0x00000000 },
-{ 0x00800001, 0x204001ad, 0x00ae0040, 0x00000000 },
-{ 0x00600041, 0x208044a5, 0x00000024, 0x008d0158 },
-{ 0x00800041, 0x20a035a5, 0x008d0040, 0x00000110 },
-{ 0x00600041, 0x206044a5, 0x00000024, 0x008d0150 },
-{ 0x00800040, 0x204014a5, 0x008d00a0, 0x008d0060 },
-{ 0x0080000c, 0x60403cb1, 0x008d0040, 0x00070007 },
-{ 0x00800001, 0x21500231, 0x00cf0040, 0x00000000 },
-{ 0x0020002d, 0x20000024, 0x00450140, 0x00000000 },
diff --git a/src/shaders/post_processing/gen75/sharpening_v_blur.g75b b/src/shaders/post_processing/gen75/sharpening_v_blur.g75b
deleted file mode 100644
index 6657540..0000000
--- a/src/shaders/post_processing/gen75/sharpening_v_blur.g75b
+++ /dev/null
@@ -1,368 +0,0 @@
-{ 0x00000001, 0x23600161, 0x00000000, 0x00000000 },
-{ 0x00600001, 0x204003bd, 0x008d0000, 0x00000000 },
-{ 0x00000001, 0x23640161, 0x00000000, 0x00020002 },
-{ 0x00000001, 0x20480061, 0x00000000, 0x0007000f },
-{ 0x00000001, 0x204003bd, 0x0000002c, 0x00000000 },
-{ 0x00000040, 0x22000c20, 0x00000360, 0x02490000 },
-{ 0x00000001, 0x20440161, 0x00000000, 0x00000000 },
-{ 0x00000001, 0x20280161, 0x00000000, 0x00040004 },
-{ 0x0c600031, 0x22e003a1, 0x00000040, 0x00000200 },
-{ 0x00000040, 0x20203c21, 0x00000024, 0xfffcfffc },
-{ 0x06000010, 0x20002c20, 0x02000020, 0x00040004 },
-{ 0x00010220, 0x34001c00, 0x02001400, 0x00001470 },
-{ 0x00600001, 0x204003bd, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000c20, 0x00000360, 0x02490000 },
-{ 0x00800001, 0x22a003bd, 0x008d0320, 0x00000000 },
-{ 0x00800001, 0x226003bd, 0x008d02e0, 0x00000000 },
-{ 0x00000001, 0x20480061, 0x00000000, 0x0007000f },
-{ 0x00000001, 0x204003bd, 0x0000002c, 0x00000000 },
-{ 0x00000040, 0x20442c21, 0x00000028, 0x00040004 },
-{ 0x00600001, 0x20a0023d, 0x008d0278, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d0270, 0x00000000 },
-{ 0x00600001, 0x2060023d, 0x008d0268, 0x00000000 },
-{ 0x0c600031, 0x22e003a1, 0x00000040, 0x00000200 },
-{ 0x00000001, 0x202003fd, 0x00000000, 0x332bcc77 },
-{ 0x00800041, 0x20c07fbd, 0x008d0080, 0x3875735f },
-{ 0x00600001, 0x2040023d, 0x008d0260, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872002 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72002 },
-{ 0x00600001, 0x20a0023d, 0x008d0288, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d0280, 0x00000000 },
-{ 0x00000001, 0x214003fd, 0x00000000, 0x3e525448 },
-{ 0x00000001, 0x216003fd, 0x00000000, 0x3875735f },
-{ 0x00600001, 0x2040023d, 0x008d0270, 0x00000000 },
-{ 0x00000001, 0x203003fd, 0x00000000, 0x3c1d98ad },
-{ 0x00600001, 0x2060023d, 0x008d0278, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00600001, 0x20a0023d, 0x008d0298, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d0290, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00600001, 0x20a0023d, 0x008d02a8, 0x00000000 },
-{ 0x00000001, 0x215003fd, 0x00000000, 0x3f11e168 },
-{ 0x00600001, 0x2080023d, 0x008d02a0, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00600001, 0x20a0023d, 0x008d02b8, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d02b0, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00600001, 0x20a0023d, 0x008d02c8, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d02c0, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x00600001, 0x20a0023d, 0x008d02d8, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d02d0, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x00600001, 0x20a0023d, 0x008d02e8, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d02e0, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072002 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472002 },
-{ 0x00600001, 0x20a0023d, 0x008d0288, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d0280, 0x00000000 },
-{ 0x00800001, 0x218003a5, 0x008d0100, 0x00000000 },
-{ 0x00800041, 0x20c07fbd, 0x008d0080, 0x3875735f },
-{ 0x00800001, 0x618000b1, 0x008d0180, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d0298, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d0290, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72002 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872002 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00600001, 0x2080023d, 0x008d02a0, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02a8, 0x00000000 },
-{ 0x00800001, 0x21a00231, 0x00cf0180, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00600001, 0x2080023d, 0x008d02b0, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02b8, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00600001, 0x2060023d, 0x008d0288, 0x00000000 },
-{ 0x00600001, 0x2040023d, 0x008d0280, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00600001, 0x2080023d, 0x008d02c0, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02c8, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00600001, 0x2080023d, 0x008d02d0, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02d8, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00600001, 0x2080023d, 0x008d02e0, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02e8, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00600001, 0x2080023d, 0x008d02f0, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02f8, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472002 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072002 },
-{ 0x00600001, 0x2080023d, 0x008d0290, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d0298, 0x00000000 },
-{ 0x00800001, 0x222003a5, 0x008d0100, 0x00000000 },
-{ 0x00800041, 0x20c07fbd, 0x008d0080, 0x3875735f },
-{ 0x00800001, 0x622000b1, 0x008d0220, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02a8, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d02a0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72002 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872002 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00600001, 0x2080023d, 0x008d02b0, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02b8, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00600001, 0x2080023d, 0x008d02c0, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02c8, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00600001, 0x2080023d, 0x008d02d0, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02d8, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00600001, 0x2080023d, 0x008d02e0, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02e8, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00800001, 0x21b00231, 0x00cf0220, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d02f0, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02f8, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x00600001, 0x2080023d, 0x008d0300, 0x00000000 },
-{ 0x00600001, 0x2060023d, 0x008d0298, 0x00000000 },
-{ 0x00600001, 0x2040023d, 0x008d0290, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d0308, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072002 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472002 },
-{ 0x00600001, 0x20a0023d, 0x008d02a8, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d02a0, 0x00000000 },
-{ 0x00800001, 0x222003a5, 0x008d0100, 0x00000000 },
-{ 0x00800041, 0x20c07fbd, 0x008d0080, 0x3875735f },
-{ 0x00800001, 0x622000b1, 0x008d0220, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02b8, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d02b0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72002 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872002 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00600001, 0x2040023d, 0x008d02a0, 0x00000000 },
-{ 0x00600001, 0x2060023d, 0x008d02a8, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d02c0, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02c8, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00600001, 0x2080023d, 0x008d02d0, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02d8, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00600001, 0x2080023d, 0x008d02e0, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02e8, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00600001, 0x2080023d, 0x008d02f0, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02f8, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00600001, 0x2080023d, 0x008d0300, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d0308, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00600001, 0x2080023d, 0x008d0310, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d0318, 0x00000000 },
-{ 0x00800001, 0x21c00231, 0x00cf0220, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472002 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072002 },
-{ 0x00600001, 0x2080023d, 0x008d02b0, 0x00000000 },
-{ 0x00800001, 0x222003a5, 0x008d0100, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02b8, 0x00000000 },
-{ 0x00800001, 0x622000b1, 0x008d0220, 0x00000000 },
-{ 0x00800041, 0x20c07fbd, 0x008d0080, 0x3875735f },
-{ 0x00800001, 0x21d00231, 0x00cf0220, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872002 },
-{ 0x00600001, 0x20a0023d, 0x008d02c8, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d02c0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72002 },
-{ 0x00600001, 0x2040023d, 0x008d02b0, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x00600001, 0x2060023d, 0x008d02b8, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02d8, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d02d0, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00600001, 0x20a0023d, 0x008d02e8, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d02e0, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00600001, 0x20a0023d, 0x008d02f8, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d02f0, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00600001, 0x20a0023d, 0x008d0308, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d0300, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x00600001, 0x20a0023d, 0x008d0318, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d0310, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x00600001, 0x20a0023d, 0x008d0328, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d0320, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072002 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472002 },
-{ 0x00600001, 0x20a0023d, 0x008d02c8, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d02c0, 0x00000000 },
-{ 0x00800001, 0x222003a5, 0x008d0100, 0x00000000 },
-{ 0x00800041, 0x20c07fbd, 0x008d0080, 0x3875735f },
-{ 0x00800001, 0x622000b1, 0x008d0220, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02d8, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d02d0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72002 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872002 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00600001, 0x2080023d, 0x008d02e0, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02e8, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00600001, 0x2080023d, 0x008d02f0, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02f8, 0x00000000 },
-{ 0x00800001, 0x21e00231, 0x00cf0220, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00600001, 0x2080023d, 0x008d0300, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d0308, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00600001, 0x2060023d, 0x008d02c8, 0x00000000 },
-{ 0x00600001, 0x2040023d, 0x008d02c0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00600001, 0x2080023d, 0x008d0310, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d0318, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00600001, 0x2080023d, 0x008d0320, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d0328, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00600001, 0x2080023d, 0x008d0330, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d0338, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472002 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072002 },
-{ 0x00600001, 0x2080023d, 0x008d02d0, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02d8, 0x00000000 },
-{ 0x00800001, 0x222003a5, 0x008d0100, 0x00000000 },
-{ 0x00800041, 0x20c07fbd, 0x008d0080, 0x3875735f },
-{ 0x00800001, 0x622000b1, 0x008d0220, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02e8, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d02e0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72002 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872002 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00600001, 0x2080023d, 0x008d02f0, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02f8, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00600001, 0x2080023d, 0x008d0300, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d0308, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00600001, 0x2080023d, 0x008d0310, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d0318, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00600001, 0x2080023d, 0x008d0320, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d0328, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00600001, 0x2080023d, 0x008d0330, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d0338, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00800001, 0x21f00231, 0x00cf0220, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d0340, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d0348, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072002 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472002 },
-{ 0x00600001, 0x2080023d, 0x008d02e0, 0x00000000 },
-{ 0x00600001, 0x2060023d, 0x008d02d8, 0x00000000 },
-{ 0x00600001, 0x2040023d, 0x008d02d0, 0x00000000 },
-{ 0x00600001, 0x218003bd, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000c20, 0x00000364, 0x0a0a8000 },
-{ 0x00600001, 0x20a0023d, 0x008d02e8, 0x00000000 },
-{ 0x00800001, 0x222003a5, 0x008d0100, 0x00000000 },
-{ 0x00800041, 0x20c07fbd, 0x008d0080, 0x3875735f },
-{ 0x00800001, 0x622000b1, 0x008d0220, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d02f8, 0x00000000 },
-{ 0x00600001, 0x2080023d, 0x008d02f0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72002 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872002 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00600001, 0x2080023d, 0x008d0300, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d0308, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00600001, 0x2080023d, 0x008d0310, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d0318, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00600001, 0x2080023d, 0x008d0320, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d0328, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00600001, 0x2080023d, 0x008d0330, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d0338, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00600001, 0x2080023d, 0x008d0340, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d0348, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00600001, 0x2080023d, 0x008d0350, 0x00000000 },
-{ 0x00600001, 0x20a0023d, 0x008d0358, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472002 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072002 },
-{ 0x00000001, 0x21880061, 0x00000000, 0x0007000f },
-{ 0x00800001, 0x204003a5, 0x008d0100, 0x00000000 },
-{ 0x00000001, 0x218003bd, 0x0000002c, 0x00000000 },
-{ 0x00800001, 0x22000231, 0x00cf0220, 0x00000000 },
-{ 0x00800001, 0x604000b1, 0x008d0040, 0x00000000 },
-{ 0x00800001, 0x22100231, 0x00cf0040, 0x00000000 },
-{ 0x00000001, 0x218403bd, 0x00000028, 0x00000000 },
-{ 0x00000040, 0x20282c21, 0x00000028, 0x00080008 },
-{ 0x0c600031, 0x200003a0, 0x00000180, 0x00000200 },
-{ 0x00000040, 0x20203c21, 0x00000024, 0xfffcfffc },
-{ 0x05000010, 0x20000420, 0x00000028, 0x00000020 },
-{ 0x00010220, 0x34001c00, 0x00001400, 0xffffeb90 },
-{ 0x00600001, 0x204003bd, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000c20, 0x00000360, 0x02290000 },
-{ 0x00000001, 0x20480061, 0x00000000, 0x0003000f },
-{ 0x00000001, 0x204003bd, 0x0000002c, 0x00000000 },
-{ 0x00000001, 0x20440161, 0x00000000, 0x00000000 },
-{ 0x0c600031, 0x226003a1, 0x00000040, 0x00000200 },
-{ 0x00600001, 0x204003bd, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000c20, 0x00000364, 0x060a8000 },
-{ 0x00800001, 0x206003bd, 0x008d0260, 0x00000000 },
-{ 0x00000001, 0x20480061, 0x00000000, 0x0003000f },
-{ 0x00000001, 0x204003bd, 0x0000002c, 0x00000000 },
-{ 0x00000001, 0x20440161, 0x00000000, 0x00000000 },
-{ 0x00000040, 0x20203c21, 0x00000024, 0xfffcfffc },
-{ 0x0c600031, 0x200003a0, 0x00000040, 0x00000200 },
-{ 0x00600001, 0x204003bd, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000c20, 0x00000360, 0x02290000 },
-{ 0x00000001, 0x20480061, 0x00000000, 0x0003000f },
-{ 0x00000001, 0x204003bd, 0x0000002c, 0x00000000 },
-{ 0x00000001, 0x204403bd, 0x00000020, 0x00000000 },
-{ 0x0c600031, 0x226003a1, 0x00000040, 0x00000200 },
-{ 0x00600001, 0x204003bd, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000c20, 0x00000364, 0x060a8000 },
-{ 0x00800001, 0x206003bd, 0x008d0260, 0x00000000 },
-{ 0x00000001, 0x20480061, 0x00000000, 0x0003000f },
-{ 0x00000001, 0x204003bd, 0x0000002c, 0x00000000 },
-{ 0x00000001, 0x204403bd, 0x00000020, 0x00000000 },
-{ 0x0c600031, 0x200003a0, 0x00000040, 0x00000200 },
-{ 0x00600001, 0x2e0003bd, 0x008d0000, 0x00000000 },
-{ 0x07000031, 0x20000fa0, 0x00000e00, 0x82000010 },
diff --git a/src/shaders/post_processing/gen8/EOT.g8a b/src/shaders/post_processing/gen8/EOT.g8a
deleted file mode 100644
index f03f96c..0000000
--- a/src/shaders/post_processing/gen8/EOT.g8a
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 2 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-//End of Thread message
-
-mov (8) r127<1>:ud r0.0<8;8,1>:ud
- send (1) null<1>:d r127 0x27 0x02000010
diff --git a/src/shaders/post_processing/gen8/Makefile.am b/src/shaders/post_processing/gen8/Makefile.am
deleted file mode 100644
index 052b342..0000000
--- a/src/shaders/post_processing/gen8/Makefile.am
+++ /dev/null
@@ -1,82 +0,0 @@
-INTEL_PP_G8B = \
- pl2_to_pl2.g8b \
- pl2_to_pl3.g8b \
- pl3_to_pl2.g8b \
- pl3_to_pl3.g8b \
- pl2_to_rgbx.g8b \
- rgbx_to_nv12.g8b \
- pl2_to_pa.g8b \
- pl3_to_pa.g8b \
- pa_to_pl2.g8b \
- pa_to_pl3.g8b \
- pa_to_pa.g8b \
- $(NULL)
-
-INTEL_PP_PRE_G8B = \
- sharpening_h_blur.g8b \
- sharpening_unmask.g8b \
- sharpening_v_blur.g8b \
- conv_nv12.g8b
-
-INTEL_PP_G8A = \
- EOT.g8a \
- PL2_AVS_Buf_0.g8a \
- PL2_AVS_Buf_1.g8a \
- PL2_AVS_Buf_2.g8a \
- PL2_AVS_Buf_3.g8a \
- PL2_media_read_buf0123.g8a \
- PL3_AVS_Buf_0.g8a \
- PL3_AVS_Buf_1.g8a \
- PL3_AVS_Buf_2.g8a \
- PL3_AVS_Buf_3.g8a \
- PL3_media_read_buf0123.g8a \
- PA_AVS_Buf_0.g8a \
- PA_AVS_Buf_1.g8a \
- PA_AVS_Buf_2.g8a \
- PA_AVS_Buf_3.g8a \
- Save_AVS_NV12.g8a \
- Save_AVS_PL3.g8a \
- Save_AVS_RGBX.g8a \
- Save_AVS_PA.g8a \
- Set_AVS_Buf_0123_PL2.g8a \
- Set_AVS_Buf_0123_PL3.g8a \
- Set_AVS_Buf_0123_BGRA.g8a \
- Set_AVS_Buf_0123_VYUA.g8a \
- YUV_to_RGB.g8a \
- RGB_to_YUV.g8a \
- Set_Layer_0.g8a \
- VP_Setup.g8a \
- $(NULL)
-
-INTEL_PP_ASM = $(INTEL_PP_G8B:%.g8b=%.asm)
-INTEL_PP_GEN8_ASM = $(INTEL_PP_G8B:%.g8b=%.g8s)
-
-TARGETS =
-if HAVE_GEN4ASM
-TARGETS += $(INTEL_PP_G8B)
-endif
-
-all-local: $(TARGETS)
-
-SUFFIXES = .g8b .g8s .asm
-
-if HAVE_GEN4ASM
-$(INTEL_PP_GEN8_ASM): $(INTEL_PP_ASM) $(INTEL_PP_G8A)
-.asm.g8s:
- $(AM_V_GEN)cpp $< > _pp0.$@; \
- $(PYTHON2) $(top_srcdir)/src/shaders/gpp.py _pp0.$@ $@; \
- rm _pp0.$@
-.g8s.g8b:
- $(AM_V_GEN)$(GEN4ASM) -a -o $@ -g 8 $<
-endif
-
-CLEANFILES = $(INTEL_PP_GEN7_ASM)
-
-EXTRA_DIST = \
- $(INTEL_PP_ASM) \
- $(INTEL_PP_G8A) \
- $(INTEL_PP_G8B) \
- $(INTEL_PP_PRE_G8B)
-
-# Extra clean files so that maintainer-clean removes *everything*
-MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/shaders/post_processing/gen8/PA_AVS_Buf_0.g8a b/src/shaders/post_processing/gen8/PA_AVS_Buf_0.g8a
deleted file mode 100644
index 11acccb..0000000
--- a/src/shaders/post_processing/gen8/PA_AVS_Buf_0.g8a
+++ /dev/null
@@ -1,457 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 44 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PL2_AVS_Buf_0.asm
-// Author: Tatiya, Rupesh
-// Description: Loads 8x8 AVS/IEF PL2 data into Buffer 0
-
-
-
-// FileName : PL2_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF PL2 data into Buffer N
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- //NOTE: We need offsets for second halfof LAYER 0 - even if we do not load it.
- //Update the channel offset in the buffers for the lower 8x4 data for BUFFER_0.
- mov (1) r22.4<1>:ud 0x400040:ud
-
-
- mov (1) r16.3<1>:ud r0.3<0;1,0>:ud
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x50EB000:ud //msg desc
-
- mov (1) r16.2<1>:ud 0x00000000:ud // Enable ARGB channels
-
-
-
- // set the vertical block number
-
- mov (1) r25.1<1>:ud 0:ud
-
- mov (8) r17.0<1>:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
-
- send (1) uwBUFFER_0(0)<1> r16 0x2 a0.0:ud
- // Returns RGBA data in 16 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_0_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen8/PA_AVS_Buf_1.g8a b/src/shaders/post_processing/gen8/PA_AVS_Buf_1.g8a
deleted file mode 100644
index 246beec..0000000
--- a/src/shaders/post_processing/gen8/PA_AVS_Buf_1.g8a
+++ /dev/null
@@ -1,457 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 44 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PL2_AVS_Buf_0.asm
-// Author: Tatiya, Rupesh
-// Description: Loads 8x8 AVS/IEF PL2 data into Buffer 0
-
-
-
-// FileName : PL2_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF PL2 data into Buffer N
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- //NOTE: We need offsets for second halfof LAYER 0 - even if we do not load it.
- //Update the channel offset in the buffers for the lower 8x4 data for BUFFER_0.
- mov (1) r22.4<1>:ud 0x400040:ud
-
-
- mov (1) r16.3<1>:ud r0.3<0;1,0>:ud
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x50EB000:ud //msg desc
-
- mov (1) r16.2<1>:ud 0x00000000:ud // Enable ARGB channels
-
-
-
- // set the vertical block number
-
- mov (1) r25.1<1>:ud 1:ud
-
- mov (8) r17.0<1>:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
-
- send (1) uwBUFFER_1(0)<1> r16 0x2 a0.0:ud
- // Returns RGBA data in 16 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_0_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen8/PA_AVS_Buf_2.g8a b/src/shaders/post_processing/gen8/PA_AVS_Buf_2.g8a
deleted file mode 100644
index 549bde6..0000000
--- a/src/shaders/post_processing/gen8/PA_AVS_Buf_2.g8a
+++ /dev/null
@@ -1,457 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 44 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PL2_AVS_Buf_0.asm
-// Author: Tatiya, Rupesh
-// Description: Loads 8x8 AVS/IEF PL2 data into Buffer 0
-
-
-
-// FileName : PL2_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF PL2 data into Buffer N
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- //NOTE: We need offsets for second halfof LAYER 0 - even if we do not load it.
- //Update the channel offset in the buffers for the lower 8x4 data for BUFFER_0.
- mov (1) r22.4<1>:ud 0x400040:ud
-
-
- mov (1) r16.3<1>:ud r0.3<0;1,0>:ud
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x50EB000:ud //msg desc
-
- mov (1) r16.2<1>:ud 0x00000000:ud // Enable ARGB channels
-
-
-
- // set the vertical block number
-
- mov (1) r25.1<1>:ud 2:ud
-
- mov (8) r17.0<1>:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
-
- send (1) uwBUFFER_2(0)<1> r16 0x2 a0.0:ud
- // Returns RGBA data in 16 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_0_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen8/PA_AVS_Buf_3.g8a b/src/shaders/post_processing/gen8/PA_AVS_Buf_3.g8a
deleted file mode 100644
index ac9e631..0000000
--- a/src/shaders/post_processing/gen8/PA_AVS_Buf_3.g8a
+++ /dev/null
@@ -1,457 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 44 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PL2_AVS_Buf_0.asm
-// Author: Tatiya, Rupesh
-// Description: Loads 8x8 AVS/IEF PL2 data into Buffer 0
-
-
-
-// FileName : PL2_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF PL2 data into Buffer N
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- //NOTE: We need offsets for second halfof LAYER 0 - even if we do not load it.
- //Update the channel offset in the buffers for the lower 8x4 data for BUFFER_0.
- mov (1) r22.4<1>:ud 0x400040:ud
-
-
- mov (1) r16.3<1>:ud r0.3<0;1,0>:ud
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x50EB000:ud //msg desc
-
- mov (1) r16.2<1>:ud 0x00000000:ud // Enable ARGB channels
-
-
-
- // set the vertical block number
-
- mov (1) r25.1<1>:ud 3:ud
-
- mov (8) r17.0<1>:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
-
- send (1) uwBUFFER_3(0)<1> r16 0x2 a0.0:ud
- // Returns RGBA data in 16 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_0_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen8/PL2_AVS_Buf_0.g8a b/src/shaders/post_processing/gen8/PL2_AVS_Buf_0.g8a
deleted file mode 100644
index 7463b3b..0000000
--- a/src/shaders/post_processing/gen8/PL2_AVS_Buf_0.g8a
+++ /dev/null
@@ -1,462 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 44 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PL2_AVS_Buf_0.asm
-// Author: Tatiya, Rupesh
-// Description: Loads 8x8 AVS/IEF PL2 data into Buffer 0
-
-
-
-// FileName : PL2_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF PL2 data into Buffer N
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- //NOTE: We need offsets for second halfof LAYER 0 - even if we do not load it.
- //Update the channel offset in the buffers for the lower 8x4 data for BUFFER_0.
- mov (1) r22.4<1>:ud 0x400040:ud
-
-
- mov (1) r16.3<1>:ud r0.3<0;1,0>:ud
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x44EB000:ud //msg desc
-
- mov (1) r16.2<1>:ud 0x0000D000:ud // Enable Red channel
-
-
-
- // set the vertical block number
-
-
- mov (8) r17.0<1>:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
-
- send (1) uwBUFFER_0(0)<1> r16 0x2 a0.0:ud
- // Returns Y data in 4 GRFs in scrambled order
-
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x48EB001:ud // msg desc; 1 is added to change BI to UV
- mov (1) r16.2<1>:ud 0x0000A000:ud // Enable Red+Blue channel
-
- send (1) uwBUFFER_0(4)<1> r16 0x2 a0.0:ud
- // Returns UV data in 8 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_0_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen8/PL2_AVS_Buf_1.g8a b/src/shaders/post_processing/gen8/PL2_AVS_Buf_1.g8a
deleted file mode 100644
index 89cc747..0000000
--- a/src/shaders/post_processing/gen8/PL2_AVS_Buf_1.g8a
+++ /dev/null
@@ -1,458 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 42 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PL2_AVS_Buf_1.asm
-// Author: Tatiya, Rupesh
-// Description: Loads 8x8 AVS/IEF PL2 data into Buffer 1
-
-
-
-// FileName : PL2_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF PL2 data into Buffer N
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- mov (1) r16.3<1>:ud r0.3<0;1,0>:ud
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x44EB000:ud //msg desc
-
- mov (1) r16.2<1>:ud 0x0000D000:ud // Enable Red channel
-
-
- // set the vertical block number
-
- mov (1) r25.1<1>:ud 1:ud
-
-
- mov (8) r17.0<1>:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
-
- send (1) uwBUFFER_1(0)<1> r16 0x2 a0.0:ud
- // Returns Y data in 4 GRFs in scrambled order
-
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x48EB001:ud // msg desc; 1 is added to change BI to UV
- mov (1) r16.2<1>:ud 0x0000A000:ud // Enable Red+Blue channel
-
- send (1) uwBUFFER_1(4)<1> r16 0x2 a0.0:ud
- // Returns UV data in 8 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_1_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen8/PL2_AVS_Buf_2.g8a b/src/shaders/post_processing/gen8/PL2_AVS_Buf_2.g8a
deleted file mode 100644
index b97657d..0000000
--- a/src/shaders/post_processing/gen8/PL2_AVS_Buf_2.g8a
+++ /dev/null
@@ -1,458 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 42 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PL2_AVS_Buf_2.asm
-// Author: Tatiya, Rupesh
-// Description: Loads 8x8 AVS/IEF PL2 data into Buffer 2
-
-
-
-// FileName : PL2_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF PL2 data into Buffer N
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- mov (1) r16.3<1>:ud r0.3<0;1,0>:ud
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x44EB000:ud //msg desc
-
- mov (1) r16.2<1>:ud 0x0000D000:ud // Enable Red channel
-
-
- // set the vertical block number
-
-
- mov (1) r25.1<1>:ud 2:ud
-
-
- mov (8) r17.0<1>:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
-
- send (1) uwBUFFER_2(0)<1> r16 0x2 a0.0:ud
- // Returns Y data in 4 GRFs in scrambled order
-
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x48EB001:ud // msg desc; 1 is added to change BI to UV
- mov (1) r16.2<1>:ud 0x0000A000:ud // Enable Red+Blue channel
-
- send (1) uwBUFFER_2(4)<1> r16 0x2 a0.0:ud
- // Returns UV data in 8 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_2_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen8/PL2_AVS_Buf_3.g8a b/src/shaders/post_processing/gen8/PL2_AVS_Buf_3.g8a
deleted file mode 100644
index 4885155..0000000
--- a/src/shaders/post_processing/gen8/PL2_AVS_Buf_3.g8a
+++ /dev/null
@@ -1,460 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 42 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PL2_AVS_Buf_3.asm
-// Author: Tatiya, Rupesh
-// Description: Loads 8x8 AVS/IEF PL2 data into Buffer 0
-
-
-
-// FileName : PL2_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF PL2 data into Buffer N
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
-
- mov (1) r16.3<1>:ud r0.3<0;1,0>:ud
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x44EB000:ud //msg desc
-
- mov (1) r16.2<1>:ud 0x0000D000:ud // Enable Red channel
-
-
- // set the vertical block number
-
-
- mov (1) r25.1<1>:ud 3:ud
-
-
- mov (8) r17.0<1>:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
-
- send (1) uwBUFFER_3(0)<1> r16 0x2 a0.0:ud
- // Returns Y data in 4 GRFs in scrambled order
-
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x48EB001:ud // msg desc; 1 is added to change BI to UV
- mov (1) r16.2<1>:ud 0x0000A000:ud // Enable Red+Blue channel
-
- send (1) uwBUFFER_3(4)<1> r16 0x2 a0.0:ud
- // Returns UV data in 8 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_3_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a b/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
deleted file mode 100644
index 5a46019..0000000
--- a/src/shaders/post_processing/gen8/PL2_media_read_buf0123.g8a
+++ /dev/null
@@ -1,65 +0,0 @@
-
- and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
- (-f0.0)jmpi (1) __SKIP_MEDIA_READ
-
- mov (8) r28<1>:ud r27<8;8,1>:ud
- mov (2) r28.0<1>:d r9.0<2;2,1>:w //ORI Y (LUMA) = ORI
- mov (1) r28.2<1>:ud 0xF000F:ud // Y Block width and height (16x16)
-
- send (1) r29<1>:d r28 0xc 0x2890003:ud
-
- /* Save data in uwBuffer, it is not an efficient way, but we can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
- shl (16) uwBUFFER_0(0)<1> r29.0<16;16,1>:ub 8:w
- shl (16) uwBUFFER_0(1)<1> r29.16<16;16,1>:ub 8:w
- shl (16) uwBUFFER_0(2)<1> r30.0<16;16,1>:ub 8:w
- shl (16) uwBUFFER_0(3)<1> r30.16<16;16,1>:ub 8:w
-
- shl (16) uwBUFFER_1(0)<1> r31.0<16;16,1>:ub 8:w
- shl (16) uwBUFFER_1(1)<1> r31.16<16;16,1>:ub 8:w
- shl (16) uwBUFFER_1(2)<1> r32.0<16;16,1>:ub 8:w
- shl (16) uwBUFFER_1(3)<1> r32.16<16;16,1>:ub 8:w
-
- shl (16) uwBUFFER_2(0)<1> r33.0<16;16,1>:ub 8:w
- shl (16) uwBUFFER_2(1)<1> r33.16<16;16,1>:ub 8:w
- shl (16) uwBUFFER_2(2)<1> r34.0<16;16,1>:ub 8:w
- shl (16) uwBUFFER_2(3)<1> r34.16<16;16,1>:ub 8:w
-
- shl (16) uwBUFFER_3(0)<1> r35.0<16;16,1>:ub 8:w
- shl (16) uwBUFFER_3(1)<1> r35.16<16;16,1>:ub 8:w
- shl (16) uwBUFFER_3(2)<1> r36.0<16;16,1>:ub 8:w
- shl (16) uwBUFFER_3(3)<1> r36.16<16;16,1>:ub 8:w
-
- mov (8) r37<1>:ud r27<8;8,1>:ud
- mov (1) r37.0<1>:d r9.0<0;1,0>:w
- shr (1) r37.1<1>:d r9.1<0;1,0>:w 1:w
- mov (1) r37.2<1>:ud 0x7000F:ud // U Block width and height (8x8)
-
- send (1) r38<1>:d r37 0xc 0x2490004:ud
-
- shl (8) uwBUFFER_0(4)<2> r38.0<16;8,2>:ub 8:w
- shl (8) uwBUFFER_0(6)<2> r38.16<16;8,2>:ub 8:w
-
- shl (8) uwBUFFER_1(4)<2> r39.0<16;8,2>:ub 8:w
- shl (8) uwBUFFER_1(6)<2> r39.16<16;8,2>:ub 8:w
-
- shl (8) uwBUFFER_2(4)<2> r40.0<16;8,2>:ub 8:w
- shl (8) uwBUFFER_2(6)<2> r40.16<16;8,2>:ub 8:w
-
- shl (8) uwBUFFER_3(4)<2> r41.0<16;8,2>:ub 8:w
- shl (8) uwBUFFER_3(6)<2> r41.16<16;8,2>:ub 8:w
-
- shl (8) uwBUFFER_0(8)<2> r38.1<16;8,2>:ub 8:w
- shl (8) uwBUFFER_0(10)<2> r38.17<16;8,2>:ub 8:w
-
- shl (8) uwBUFFER_1(8)<2> r39.1<16;8,2>:ub 8:w
- shl (8) uwBUFFER_1(10)<2> r39.17<16;8,2>:ub 8:w
-
- shl (8) uwBUFFER_2(8)<2> r40.1<16;8,2>:ub 8:w
- shl (8) uwBUFFER_2(10)<2> r40.17<16;8,2>:ub 8:w
-
- shl (8) uwBUFFER_3(8)<2> r41.1<16;8,2>:ub 8:w
- shl (8) uwBUFFER_3(10)<2> r41.17<16;8,2>:ub 8:w
-
- jmpi (1) __SAVE_BUF0123
-
-__SKIP_MEDIA_READ: \ No newline at end of file
diff --git a/src/shaders/post_processing/gen8/PL3_AVS_Buf_0.g8a b/src/shaders/post_processing/gen8/PL3_AVS_Buf_0.g8a
deleted file mode 100644
index f9c8688..0000000
--- a/src/shaders/post_processing/gen8/PL3_AVS_Buf_0.g8a
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 44 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PL2_AVS_Buf_0.asm
-// Author: Tatiya, Rupesh
-// Description: Loads 8x8 AVS/IEF PL2 data into Buffer 0
-
-
-
-// FileName : PL2_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF PL2 data into Buffer N
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- //NOTE: We need offsets for second halfof LAYER 0 - even if we do not load it.
- //Update the channel offset in the buffers for the lower 8x4 data for BUFFER_0.
- mov (1) r22.4<1>:ud 0x400040:ud
-
-
- mov (1) r16.3<1>:ud r0.3<0;1,0>:ud
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x44EB000:ud //msg desc
-
- mov (1) r16.2<1>:ud 0x0000D000:ud // Enable Red channel
-
-
-
- // set the vertical block number
-
- mov (1) r25.1<1>:ud 0:ud
-
- mov (8) r17.0<1>:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
-
- send (1) uwBUFFER_0(0)<1> r16 0x2 a0.0:ud
- // Returns Y data in 4 GRFs in scrambled order
-
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x44EB001:ud // msg desc; 1 is added to change BI to UV
-
- mov (1) r16.2<1>:ud 0x0000E000:ud // Enable Red channel
-
- send (1) uwBUFFER_0(4)<1> r16 0x2 a0.0:ud
- // Returns U data in 4 GRFs in scrambled order
-
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x44EB002:ud // msg desc; 1 is added to change BI to UV
- mov (1) r16.2<1>:ud 0x0000E000:ud // Enable Red channel
-
- send (1) uwBUFFER_0(8)<1> r16 0x2 a0.0:ud
- // Returns V data in 4 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_0_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen8/PL3_AVS_Buf_1.g8a b/src/shaders/post_processing/gen8/PL3_AVS_Buf_1.g8a
deleted file mode 100644
index 2bfaadb..0000000
--- a/src/shaders/post_processing/gen8/PL3_AVS_Buf_1.g8a
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 44 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PL2_AVS_Buf_0.asm
-// Author: Tatiya, Rupesh
-// Description: Loads 8x8 AVS/IEF PL2 data into Buffer 0
-
-
-
-// FileName : PL2_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF PL2 data into Buffer N
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- //NOTE: We need offsets for second halfof LAYER 0 - even if we do not load it.
- //Update the channel offset in the buffers for the lower 8x4 data for BUFFER_0.
- mov (1) r22.4<1>:ud 0x400040:ud
-
-
- mov (1) r16.3<1>:ud r0.3<0;1,0>:ud
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x44EB000:ud //msg desc
-
- mov (1) r16.2<1>:ud 0x0000D000:ud // Enable Red channel
-
-
-
- // set the vertical block number
-
- mov (1) r25.1<1>:ud 1:ud
-
- mov (8) r17.0<1>:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
-
- send (1) uwBUFFER_1(0)<1> r16 0x2 a0.0:ud
- // Returns Y data in 4 GRFs in scrambled order
-
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x44EB001:ud // msg desc; 1 is added to change BI to UV
-
- mov (1) r16.2<1>:ud 0x0000E000:ud // Enable Red channel
-
- send (1) uwBUFFER_1(4)<1> r16 0x2 a0.0:ud
- // Returns U data in 4 GRFs in scrambled order
-
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x44EB002:ud // msg desc; 1 is added to change BI to UV
- mov (1) r16.2<1>:ud 0x0000E000:ud // Enable Red channel
-
- send (1) uwBUFFER_1(8)<1> r16 0x2 a0.0:ud
- // Returns V data in 4 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_0_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen8/PL3_AVS_Buf_2.g8a b/src/shaders/post_processing/gen8/PL3_AVS_Buf_2.g8a
deleted file mode 100644
index 57c2df2..0000000
--- a/src/shaders/post_processing/gen8/PL3_AVS_Buf_2.g8a
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 44 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PL2_AVS_Buf_0.asm
-// Author: Tatiya, Rupesh
-// Description: Loads 8x8 AVS/IEF PL2 data into Buffer 0
-
-
-
-// FileName : PL2_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF PL2 data into Buffer N
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- //NOTE: We need offsets for second halfof LAYER 0 - even if we do not load it.
- //Update the channel offset in the buffers for the lower 8x4 data for BUFFER_0.
- mov (1) r22.4<1>:ud 0x400040:ud
-
-
- mov (1) r16.3<1>:ud r0.3<0;1,0>:ud
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x44EB000:ud //msg desc
-
- mov (1) r16.2<1>:ud 0x0000D000:ud // Enable Red channel
-
-
-
- // set the vertical block number
-
- mov (1) r25.1<1>:ud 2:ud
-
- mov (8) r17.0<1>:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
-
- send (1) uwBUFFER_2(0)<1> r16 0x2 a0.0:ud
- // Returns Y data in 4 GRFs in scrambled order
-
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x44EB001:ud // msg desc; 1 is added to change BI to UV
-
- mov (1) r16.2<1>:ud 0x0000E000:ud // Enable Red channel
-
- send (1) uwBUFFER_2(4)<1> r16 0x2 a0.0:ud
- // Returns U data in 4 GRFs in scrambled order
-
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x44EB002:ud // msg desc; 1 is added to change BI to UV
- mov (1) r16.2<1>:ud 0x0000E000:ud // Enable Red channel
-
- send (1) uwBUFFER_2(8)<1> r16 0x2 a0.0:ud
- // Returns V data in 4 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_0_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen8/PL3_AVS_Buf_3.g8a b/src/shaders/post_processing/gen8/PL3_AVS_Buf_3.g8a
deleted file mode 100644
index 553da39..0000000
--- a/src/shaders/post_processing/gen8/PL3_AVS_Buf_3.g8a
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 44 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: PL2_AVS_Buf_0.asm
-// Author: Tatiya, Rupesh
-// Description: Loads 8x8 AVS/IEF PL2 data into Buffer 0
-
-
-
-// FileName : PL2_AVS_Buf.asm
-// Author : Tatiya, Rupesh
-// Description : Loads 8x8 AVS/IEF PL2 data into Buffer N
-
-
-
-// Module name: Scaling.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- // Message Header
- // m0.7 31:0 Debug
- // m0.6 31:0 Debug
- // m0.5 31:0 Ignored
- // m0.4 31:0 Ignored
- // m0.3 31:0 Ignored
- // m0.2 31:16 Ignored
- // 15 Alpha Write Channel Mask enable=0, disable=1
- // 14 Blue Write Channel Mask (U)
- // 13 Green Write Channel Mask (Y)
- // 12 Red Write Channel Mask (V)
- // 11:0 Ignored
- // m0.1 Ignored
- // m0.0 Ignored
-
-
- // AVS payload
- // m1.7 Group ID Number
- // m1.6 U 2nd Derivative ---> NLAS dx
- // m1.5 Delta V ---> Step Y
- // m1.4 Delta U ---> Step X
- // m1.3 Pixel 0 V Address ---> ORIY (Y0)
- // m1.2 Pixel 0 U Address ---> ORIX (X0)
- // m1.1 Vertical Block Number
- // m1.0 Reserved
-
- // Sampler Message Descriptor
- // 31:29 Reserved 000
- // 28:25 Message length 0010
- // 24:20 Response length xxxxx ---> 4GRFs for each enabled channel (AVS), 2GRFs for each enabled channel (sample unorm)
- // 19 Header Present 1
- // 18:17 SIMD Mode 11 ---> SIMD32/64
- // 16:12 Message Type xxxxx ---> 01011 sample_8x8, 01100 (sample_unorm), 01010 (sample_unorm+killpix)
- // 11:8 Sampler Index xxxx
- // 7:0 Binding Table Index xxxxxxxx
-
-
- // Msg Header M0.2
- // 15:15 Alpha Write Channel Mask, 0: written back, 1: not written back
- // 14:14 Blue Write Channel Mask
- // 13:13 Green Write Channel Mask
- // 12:12 Red Write Channel Mask
-
-
-//By design, Buffer 0,1,2,3 always have Layer 0 and Buffer 4,5 always have L1-L7
-
-
-//used to generate LABELS at compile time.
-
-
- // 18:17 SIMD Mode 10 ---> SIMD16
- // 16:12 Message Type xxxxx ---> 00000 (SIMD16)
-
-
-//r10-17 - 8 GRFs to load SIMD16 data (upto 4 channels)
-//r18-19 - 2 GRFs to store sampler ramp.
-
- .declare mfSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare muwSCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
- .declare mudCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare mubCALING_0X_34X_PAYLOAD Base=r14.0 ElementSize=1 SrcRegion=<32;32,1> DstRegion=<1> Type=ub
-
-
- .declare fSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
- .declare udSCALING_0X_34X_TEMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
- .declare ub4SCALING_0X_34X_TEMP Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<1> Type=ub
- .declare uwSCALING_0X_34X_TEMP Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
- // Sampler ramp is used for Scaling 0X_0.34X
- .declare fSAMPLER_RAMP Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> Type=f // 1 GRFs, 8 elements
-
-
- //#define rMSGDSC_UV r23.0
-
-
-//End of _SCALING_
-
-
- //NOTE: We need offsets for second halfof LAYER 0 - even if we do not load it.
- //Update the channel offset in the buffers for the lower 8x4 data for BUFFER_0.
- mov (1) r22.4<1>:ud 0x400040:ud
-
-
- mov (1) r16.3<1>:ud r0.3<0;1,0>:ud
-
-
- //AVS_PAYLOAD already has all the data loaded at this point
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x44EB000:ud //msg desc
-
- mov (1) r16.2<1>:ud 0x0000D000:ud // Enable Red channel
-
-
-
- // set the vertical block number
-
- mov (1) r25.1<1>:ud 3:ud
-
- mov (8) r17.0<1>:ud r25.0<8;8,1>:ud // Copy msg payload mirrors to MRFs
-
- send (1) uwBUFFER_3(0)<1> r16 0x2 a0.0:ud
- // Returns Y data in 4 GRFs in scrambled order
-
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x44EB001:ud // msg desc; 1 is added to change BI to UV
-
- mov (1) r16.2<1>:ud 0x0000E000:ud // Enable Red channel
-
- send (1) uwBUFFER_3(4)<1> r16 0x2 a0.0:ud
- // Returns U data in 4 GRFs in scrambled order
-
- add (1) a0.0<1>:ud r23.5<0;1,0>:ud 0x44EB002:ud // msg desc; 1 is added to change BI to UV
- mov (1) r16.2<1>:ud 0x0000E000:ud // Enable Red channel
-
- send (1) uwBUFFER_3(8)<1> r16 0x2 a0.0:ud
- // Returns V data in 4 GRFs in scrambled order
-
-SKIP_AVS_LOAD_L0_0_:
- nop
-
-
diff --git a/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a b/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
deleted file mode 100644
index 3018d5c..0000000
--- a/src/shaders/post_processing/gen8/PL3_media_read_buf0123.g8a
+++ /dev/null
@@ -1,68 +0,0 @@
-
- and.nz.f0.0 (1) null<1>:uw r2.3:uw 0x2:uw
- (-f0.0)jmpi (1) __SKIP_MEDIA_READ
-
- mov (8) r28<1>:ud r27<8;8,1>:ud
- mov (2) r28.0<1>:d r9.0<2;2,1>:w //ORI Y (LUMA) = ORI
- mov (1) r28.2<1>:ud 0xF000F:ud // Y Block width and height (16x16)
-
- send (1) r29<1>:d r28 0xc 0x2890003:ud
-
- /* Save data in uwBuffer, it is not an efficient way, but we can re-use Save_AVS_NV12.g8a and Save_AVS_PL3.g8a */
- shl (16) uwBUFFER_0(0)<1> r29.0<16;16,1>:ub 8:w
- shl (16) uwBUFFER_0(1)<1> r29.16<16;16,1>:ub 8:w
- shl (16) uwBUFFER_0(2)<1> r30.0<16;16,1>:ub 8:w
- shl (16) uwBUFFER_0(3)<1> r30.16<16;16,1>:ub 8:w
-
- shl (16) uwBUFFER_1(0)<1> r31.0<16;16,1>:ub 8:w
- shl (16) uwBUFFER_1(1)<1> r31.16<16;16,1>:ub 8:w
- shl (16) uwBUFFER_1(2)<1> r32.0<16;16,1>:ub 8:w
- shl (16) uwBUFFER_1(3)<1> r32.16<16;16,1>:ub 8:w
-
- shl (16) uwBUFFER_2(0)<1> r33.0<16;16,1>:ub 8:w
- shl (16) uwBUFFER_2(1)<1> r33.16<16;16,1>:ub 8:w
- shl (16) uwBUFFER_2(2)<1> r34.0<16;16,1>:ub 8:w
- shl (16) uwBUFFER_2(3)<1> r34.16<16;16,1>:ub 8:w
-
- shl (16) uwBUFFER_3(0)<1> r35.0<16;16,1>:ub 8:w
- shl (16) uwBUFFER_3(1)<1> r35.16<16;16,1>:ub 8:w
- shl (16) uwBUFFER_3(2)<1> r36.0<16;16,1>:ub 8:w
- shl (16) uwBUFFER_3(3)<1> r36.16<16;16,1>:ub 8:w
-
- mov (8) r37<1>:ud r27<8;8,1>:ud
- shr (2) r37.0<1>:d r9.0<2;2,1>:w 1:w //H/V ORI U = H/V ORI/2
- mov (1) r37.2<1>:ud 0x70007:ud // U Block width and height (8x8)
- send (1) r38<1>:d r37 0xc 0x2290004:ud
-
- shl (8) uwBUFFER_0(4)<2> r38.0<8;8,1>:ub 8:w
- shl (8) uwBUFFER_0(6)<2> r38.8<8;8,1>:ub 8:w
-
- shl (8) uwBUFFER_1(4)<2> r38.16<8;8,1>:ub 8:w
- shl (8) uwBUFFER_1(6)<2> r38.24<8;8,1>:ub 8:w
-
- shl (8) uwBUFFER_2(4)<2> r39.0<8;8,1>:ub 8:w
- shl (8) uwBUFFER_2(6)<2> r39.8<8;8,1>:ub 8:w
-
- shl (8) uwBUFFER_3(4)<2> r39.16<8;8,1>:ub 8:w
- shl (8) uwBUFFER_3(6)<2> r39.24<8;8,1>:ub 8:w
-
- mov (8) r46<1>:ud r27<8;8,1>:ud
- shr (2) r46.0<1>:d r9.0<2;2,1>:w 1:w //H/V ORI V = H/V ORI/2
- mov (1) r46.2<1>:ud 0x70007:ud // V Block width and height (8x8)
- send (1) r47<1>:d r46 0xc 0x2290005:ud
-
- shl (8) uwBUFFER_0(8)<2> r47.0<8;8,1>:ub 8:w
- shl (8) uwBUFFER_0(10)<2> r47.8<8;8,1>:ub 8:w
-
- shl (8) uwBUFFER_1(8)<2> r47.16<8;8,1>:ub 8:w
- shl (8) uwBUFFER_1(10)<2> r47.24<8;8,1>:ub 8:w
-
- shl (8) uwBUFFER_2(8)<2> r48.0<8;8,1>:ub 8:w
- shl (8) uwBUFFER_2(10)<2> r48.8<8;8,1>:ub 8:w
-
- shl (8) uwBUFFER_3(8)<2> r48.16<8;8,1>:ub 8:w
- shl (8) uwBUFFER_3(10)<2> r48.24<8;8,1>:ub 8:w
-
- jmpi (1) __SAVE_BUF0123
-
-__SKIP_MEDIA_READ: \ No newline at end of file
diff --git a/src/shaders/post_processing/gen8/RGB_to_YUV.g8a b/src/shaders/post_processing/gen8/RGB_to_YUV.g8a
deleted file mode 100644
index ebea264..0000000
--- a/src/shaders/post_processing/gen8/RGB_to_YUV.g8a
+++ /dev/null
@@ -1,910 +0,0 @@
-/*
- * Copyright 2000-2013 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- */
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// Module name: YUV_to_RGB.asm
-//
-// Convert YUV to RGB, handle it by 16x4 block
-//
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare bBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare bBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare bBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare bBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-//Pointer to mask reg
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
-//Msg payload buffers; upto 4 full-size messages can be written
-
-//Unnecessary to use the MSGPayLoad, So it is temporiarily used for conversion of YUV->RGB
-
-.declare fBUFFER_R Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-.declare fBUFFER_G Base=r30.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-.declare fBUFFER_B Base=r32.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-.declare fBUFFER_Y Base=r36.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-.declare fBUFFER_U Base=r38.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-.declare fBUFFER_V Base=r40.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-.declare wTempY Base=r42.0 ElementSize=2 Type=w
-.declare wTempU Base=r44.0 ElementSize=2 Type=w
-.declare wTempV Base=r46.0 ElementSize=2 Type=w
-
-.declare ubTempY Base=r42.0 ElementSize=1 Type=ub
-.declare ubTempU Base=r44.0 ElementSize=1 Type=ub
-.declare ubTempV Base=r46.0 ElementSize=1 Type=ub
-
- // the r17 register (nTEMP0) is originally defined from "Common.inc"
- // instead of re-defining a nTEMP0 here, we use "SAVE_RGB" suffix for its naming
-
- .declare uwTemp0 Base=r17.0 ElementSize=2 Type=uw
-
-
-//_SAVE_INC_
- // ITU-R conversion, Now we are using ITU-R conversion
- // Y = 0.299R + 0.587G + 0.114B
- // U = -0.169R - 0.331G + 0.499B + 128
- // V = 0.499R - 0.418G - 0.0813B+ 128
-
- // At the save module we have all 8 address sub-registers available.
- // So we will use PING-PONG type of scheme to save the data using
- // pointers pBUF_CHNL_TOP_8x4 and pBUF_CHNL_BOT_8x4. This will help
- // reduce dependency. - rT
-
- //wBUFF_CHNL_PTR points to either buffer 0 or buffer 4.
- //Add appropriate offsets to get pointers for all buffers (1,2,3 or 5).
- //Offsets are zero for buffer 0 and buffer 4.
- //It always uses the YUVA layout.
-//for BUFFER_0
- mov (4) a0.0<1>:uw r22.0<4;4,1>:uw
- mov (4) a0.4<1>:uw r22.0<4;4,1>:uw
- // YUV uses the a0.5,a0.6 and a0.4 as the indirect-register
- // Y = a0.5, U=a0.6, V=a0.4
- // if channel swap?
- // This means that it should be BGRX(B is the LSB) or RGBX
- // 1 means that it is BGRX.
- and.nz.f0.0 null<1>:w r2.0<0;1,0>:uw 0x01:w
- // pointer swap
- (f0.0) mov (1) uwTemp0<1> a0.0:uw
- (f0.0) mov (1) a0.0:uw a0.1:uw
- (f0.0) mov (1) a0.1:uw uwTemp0<0;1,0>
-
-//the first line in the block 0
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 1]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 17]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 1]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 17]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 1]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 17]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 0]<1>:uw 0:uw
- mov (16) r[a0.6, 0]<1>:uw 0:uw
- mov (16) r[a0.4, 0]<1>:uw 0:uw
- mov (16) r[a0.5,1]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,1]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,1]<2>:ub ubTempV(0, 0)<32;8,4>
-
-
-//the second line in the block 0
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 33]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 49]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 33]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 49]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 33]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 49]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 32]<1>:uw 0:uw
- mov (16) r[a0.6, 32]<1>:uw 0:uw
- mov (16) r[a0.4, 32]<1>:uw 0:uw
- mov (16) r[a0.5,33]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,33]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,33]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//the third line in the block 0
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 65]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 81]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 65]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 81]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 65]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 81]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 64]<1>:uw 0:uw
- mov (16) r[a0.6, 64]<1>:uw 0:uw
- mov (16) r[a0.4, 64]<1>:uw 0:uw
- mov (16) r[a0.5,65]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,65]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,65]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//the fourth line in the block 0
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 97]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 113]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 97]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 113]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 97]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 113]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 96]<1>:uw 0:uw
- mov (16) r[a0.6, 96]<1>:uw 0:uw
- mov (16) r[a0.4, 96]<1>:uw 0:uw
- mov (16) r[a0.5,97]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,97]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,97]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//for Buffer_1
-
- add (8) a0.0<1>:uw a0.0<8;8,1>:uw 512:uw
-//the first line in the block 1
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 1]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 17]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 1]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 17]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 1]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 17]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 0]<1>:uw 0:uw
- mov (16) r[a0.6, 0]<1>:uw 0:uw
- mov (16) r[a0.4, 0]<1>:uw 0:uw
- mov (16) r[a0.5,1]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,1]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,1]<2>:ub ubTempV(0, 0)<32;8,4>
-
-
-//the second line in the block 1
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 33]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 49]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 33]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 49]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 33]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 49]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 32]<1>:uw 0:uw
- mov (16) r[a0.6, 32]<1>:uw 0:uw
- mov (16) r[a0.4, 32]<1>:uw 0:uw
- mov (16) r[a0.5,33]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,33]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,33]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//the third line in the block 1
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 65]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 81]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 65]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 81]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 65]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 81]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 64]<1>:uw 0:uw
- mov (16) r[a0.6, 64]<1>:uw 0:uw
- mov (16) r[a0.4, 64]<1>:uw 0:uw
- mov (16) r[a0.5,65]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,65]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,65]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//the fourth line in the block 1
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 97]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 113]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 97]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 113]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 97]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 113]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 96]<1>:uw 0:uw
- mov (16) r[a0.6, 96]<1>:uw 0:uw
- mov (16) r[a0.4, 96]<1>:uw 0:uw
- mov (16) r[a0.5,97]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,97]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,97]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//for Buffer_2
- add (8) a0.0<1>:uw a0.0<8;8,1>:uw 512:uw
-//the first line in the block 2
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 1]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 17]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 1]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 17]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 1]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 17]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 0]<1>:uw 0:uw
- mov (16) r[a0.6, 0]<1>:uw 0:uw
- mov (16) r[a0.4, 0]<1>:uw 0:uw
- mov (16) r[a0.5,1]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,1]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,1]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//the second line in the block 2
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 33]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 49]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 33]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 49]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 33]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 49]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 32]<1>:uw 0:uw
- mov (16) r[a0.6, 32]<1>:uw 0:uw
- mov (16) r[a0.4, 32]<1>:uw 0:uw
- mov (16) r[a0.5,33]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,33]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,33]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//the third line in the block 2
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 65]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 81]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 65]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 81]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 65]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 81]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 64]<1>:uw 0:uw
- mov (16) r[a0.6, 64]<1>:uw 0:uw
- mov (16) r[a0.4, 64]<1>:uw 0:uw
- mov (16) r[a0.5,65]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,65]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,65]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//the fourth line in the block 2
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 97]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 113]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 97]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 113]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 97]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 113]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 96]<1>:uw 0:uw
- mov (16) r[a0.6, 96]<1>:uw 0:uw
- mov (16) r[a0.4, 96]<1>:uw 0:uw
- mov (16) r[a0.5,97]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,97]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,97]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//for Buffer_3
- add (8) a0.0<1>:uw a0.0<8;8,1>:uw 512:uw
-//the first line in the block 3
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 1]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 17]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 1]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 17]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 1]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 17]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 0]<1>:uw 0:uw
- mov (16) r[a0.6, 0]<1>:uw 0:uw
- mov (16) r[a0.4, 0]<1>:uw 0:uw
- mov (16) r[a0.5,1]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,1]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,1]<2>:ub ubTempV(0, 0)<32;8,4>
-
-
-//the second line in the block 3
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 33]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 49]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 33]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 49]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 33]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 49]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 32]<1>:uw 0:uw
- mov (16) r[a0.6, 32]<1>:uw 0:uw
- mov (16) r[a0.4, 32]<1>:uw 0:uw
- mov (16) r[a0.5,33]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,33]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,33]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//the third line in the block 3
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 65]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 81]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 65]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 81]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 65]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 81]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 64]<1>:uw 0:uw
- mov (16) r[a0.6, 64]<1>:uw 0:uw
- mov (16) r[a0.4, 64]<1>:uw 0:uw
- mov (16) r[a0.5,65]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,65]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,65]<2>:ub ubTempV(0, 0)<32;8,4>
-
-//the fourth line in the block 3
- mov (8) fBUFFER_R(0, 0)<1> r[a0.1, 97]<16;8,2>:ub
- mov (8) fBUFFER_R(1, 0)<1> r[a0.1, 113]<16;8,2>:ub
- mov (8) fBUFFER_G(0, 0)<1> r[a0.2, 97]<16;8,2>:ub
- mov (8) fBUFFER_G(1, 0)<1> r[a0.2, 113]<16;8,2>:ub
- mov (8) fBUFFER_B(0, 0)<1> r[a0.0, 97]<16;8,2>:ub
- mov (8) fBUFFER_B(1, 0)<1> r[a0.0, 113]<16;8,2>:ub
-
- mul (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.299f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> 0.587f
- mac (16) fBUFFER_Y(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.114f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> -0.169f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.331f
- mac (16) fBUFFER_U(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 0.499f
-
- mov (16) acc0.0<1>:f 128.0f
- mac (16) acc0.0<1>:f fBUFFER_R(0, 0)<8;8,1> 0.499f
- mac (16) acc0.0<1>:f fBUFFER_G(0, 0)<8;8,1> -0.418f
- mac (16) fBUFFER_V(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> -0.0813f
-
- mov (16) wTempY(0,0)<2> fBUFFER_Y(0, 0)<8;8,1>
- mov (16) wTempU(0,0)<2> fBUFFER_U(0, 0)<8;8,1>
- mov (16) wTempV(0,0)<2> fBUFFER_V(0, 0)<8;8,1>
-
- mov (16) r[a0.5, 96]<1>:uw 0:uw
- mov (16) r[a0.6, 96]<1>:uw 0:uw
- mov (16) r[a0.4, 96]<1>:uw 0:uw
- mov (16) r[a0.5,97]<2>:ub ubTempY(0, 0)<32;8,4>
- mov (16) r[a0.6,97]<2>:ub ubTempU(0, 0)<32;8,4>
- mov (16) r[a0.4,97]<2>:ub ubTempV(0, 0)<32;8,4>
-
diff --git a/src/shaders/post_processing/gen8/Save_AVS_NV12.g8a b/src/shaders/post_processing/gen8/Save_AVS_NV12.g8a
deleted file mode 100644
index 5c59f0b..0000000
--- a/src/shaders/post_processing/gen8/Save_AVS_NV12.g8a
+++ /dev/null
@@ -1,555 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 131 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// Module name: Save_AVS_NV12.asm
-//
-// Save NV12 420 frame data block of size 16x16
-//
-// To save 16x16 block (16x16 bytes of Y and 16x8 bytes of interleaved UV), we need 2 send instructions with of size 16x16 and 16x8 each.
-// ---------------
-// | 16x16 |
-// | YUYV |
-// ---------------
-// | 16x8 UV |
-// ---------------
-
-//-----------------------------------------------------------------
-//The layout of data is as follows:
-//mMSGHDR0 : Y data header (16x16)
-//mubMSGPAYLOAD0 : Y data payload (8 GRFs)
-//mMSGHDR1 : U data header (16x8)
-//mubMSGPAYLOAD1 : U data payload (4 GRFs)
-//------------------------------------------------------------------
-
-
-
-// Module name: Save.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
-//Msg payload buffers; upto 4 full-size messages can be written
-
-
-.declare mudMSGPAYLOAD0 Base=r29.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD1 Base=r38.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD2 Base=r47.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD3 Base=r56.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-
-.declare muwMSGPAYLOAD0 Base=r29.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD1 Base=r38.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD2 Base=r47.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD3 Base=r56.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-
-.declare mubMSGPAYLOAD0 Base=r29.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD1 Base=r38.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD2 Base=r47.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD3 Base=r56.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD4 Base=r32.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD5 Base=r41.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD6 Base=r50.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD7 Base=r59.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-
-
- // the r17 register (nTEMP0) is originally defined from "Common.inc"
- // instead of re-defining a nTEMP0 here, we use "SAVE_RGB" suffix for its naming
-
- .declare uwTemp0 Base=r17.0 ElementSize=2 Type=uw
-
-
-//_SAVE_INC_
-
-
- // At the save module we have all 8 address sub-registers available.
- // So we will use PING-PONG type of scheme to save the data using
- // pointers pBUF_CHNL_TOP_8x4 and pBUF_CHNL_BOT_8x4. This will help
- // reduce dependency. - rT
-
- //wBUFF_CHNL_PTR points to either buffer 0 or buffer 4.
- //Add appropriate offsets to get pointers for all buffers (1,2,3 or 5).
- //Offsets are zero for buffer 0 and buffer 4.
- add (4) a0.0<1>:uw r22.0<4;4,1>:w 0:uw
- add (4) a0.4<1>:uw r22.0<4;4,1>:w 512:uw
-
- //Set up header for Y,U and V data
- mov (8) r28<1>:ud r27<8;8,1>:ud
- mov (8) r37<1>:ud r27<8;8,1>:ud
-
- mov (2) r28.0<1>:d r9.0<2;2,1>:w { NoDDClr } //ORI Y (LUMA) = ORI
- mov (1) r37.0<1>:d r9.0<0;1,0>:w { NoDDClr } //H ORI (CHROMA) = H ORI
- shr (1) r37.1<1>:d r9.1<0;1,0>:w 1:w { NoDDClr, NoDDChk } //V ORI (CHROMA) = V ORI/2
-
- mov (1) r28.2<1>:ud 0xF000F:ud { NoDDChk } // Y Block width and height (16x16)
- mov (1) r37.2<1>:ud 0x7000F:ud { NoDDChk } // UV Block width and height(16x8)
-
-// Unscramble, and pack data directly to MRFs
-
-// Data 16x16 block is divided as -
-// ---------
-// | 0 |
-// ---------
-// | 1 |
-// ---------
-// | 2 |
-// ---------
-// | 3 |
-// ---------
-// All sub-blocks are of size 16x4
-// 0: ubBUFFER_0
-// 1: ubBUFFER_1, ubBUFFER_0+16
-// 2: ubBUFFER_2
-// 3: ubBUFFER_3, ubBUFFER_2+16
-
- //Y Rounding 16x4 top part
- add.sat (16) r[a0.1,0]<1>:uw r[a0.1,0]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,32]<1>:uw r[a0.1,32]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,64]<1>:uw r[a0.1,64]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,96]<1>:uw r[a0.1,96]<16;16,1>:uw 0x0080:uw
-
- // U Averaging and Rounding, 8x2 top part
- add.sat (8) r[a0.2,0]<2>:uw r[a0.2,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.2,64]<2>:uw r[a0.2,64]<16;8,2>:uw 0x0080:uw
-
- // V Averaging and Rounding, 8x2 top part
- add.sat (8) r[a0.0,0]<2>:uw r[a0.0,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.0,64]<2>:uw r[a0.0,64]<16;8,2>:uw 0x0080:uw
-
- add (4) a0.0<1>:uw r22.0<4;4,1>:w 1024:uw //Update Buffer 2 pointers
-
- //Y Rounding, 16x4 bottom part
- add.sat (16) r[a0.5,0]<1>:uw r[a0.5,0]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,32]<1>:uw r[a0.5,32]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,64]<1>:uw r[a0.5,64]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,96]<1>:uw r[a0.5,96]<16;16,1>:uw 0x0080:uw
-
- // U Averaging and Rounding, 8x2 bottom part
- add.sat (8) r[a0.6,0]<2>:uw r[a0.6,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.6,64]<2>:uw r[a0.6,64]<16;8,2>:uw 0x0080:uw
-
- // V Averaging and Rounding, 8x2 bottom part
- add.sat (8) r[a0.4,0]<2>:uw r[a0.4,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.4,64]<2>:uw r[a0.4,64]<16;8,2>:uw 0x0080:uw
-
- add (4) a0.4<1>:uw r22.0<4;4,1>:w 1536:uw //Update Buffer 3 pointers
-
- //Y Rounding 16x4 top part
- add.sat (16) r[a0.1,0]<1>:uw r[a0.1,0]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,32]<1>:uw r[a0.1,32]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,64]<1>:uw r[a0.1,64]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,96]<1>:uw r[a0.1,96]<16;16,1>:uw 0x0080:uw
-
- // U Averaging and Rounding, 8x2 top part
- add.sat (8) r[a0.2,0]<2>:uw r[a0.2,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.2,64]<2>:uw r[a0.2,64]<16;8,2>:uw 0x0080:uw
-
- // V Averaging and Rounding, 8x2 top part
- add.sat (8) r[a0.0,0]<2>:uw r[a0.0,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.0,64]<2>:uw r[a0.0,64]<16;8,2>:uw 0x0080:uw
-
- //Y Rounding, 16x4 bottom part
- add.sat (16) r[a0.5,0]<1>:uw r[a0.5,0]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,32]<1>:uw r[a0.5,32]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,64]<1>:uw r[a0.5,64]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,96]<1>:uw r[a0.5,96]<16;16,1>:uw 0x0080:uw
-
- // U Averaging and Rounding, 8x2 bottom part
- add.sat (8) r[a0.6,0]<2>:uw r[a0.6,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.6,64]<2>:uw r[a0.6,64]<16;8,2>:uw 0x0080:uw
-
- // V Averaging and Rounding, 8x2 bottom part
- add.sat (8) r[a0.4,0]<2>:uw r[a0.4,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.4,64]<2>:uw r[a0.4,64]<16;8,2>:uw 0x0080:uw
-
- // restore pBUF_CHNL_TOP_8x4 and pBUF_CHNL_BOT_8x4 registers
- add (4) a0.0<1>:uw r22.0<4;4,1>:w 0:uw
- add (4) a0.4<1>:uw r22.0<4;4,1>:w 512:uw
-
-//Buffer 0
-//Move Y to msg payload
- mov (16) mubMSGPAYLOAD0(0,0)<1> r[a0.1, 1]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(0,16)<1> r[a0.1, 33]<32;16,2>:ub { NoDDChk }
- mov (16) mubMSGPAYLOAD0(1,0)<1> r[a0.1, 65]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(1,16)<1> r[a0.1, 97]<32;16,2>:ub { NoDDChk }
-
-//Move U to msg payload
- mov (8) mubMSGPAYLOAD1(0,0)<2> r[a0.2, 1]<32;8,4>:ub { NoDDClr }
- mov (8) mubMSGPAYLOAD1(0,16)<2> r[a0.2, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
-
-//Move V to msg payload
- mov (8) mubMSGPAYLOAD1(0,1)<2> r[a0.0, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD1(0,17)<2> r[a0.0, 65]<32;8,4>:ub { NoDDChk }
-
- add (4) a0.0<1>:uw r22.0<4;4,1>:w 1024:uw //Update Buffer 2 pointers
-
-//Buffer 1
- mov (16) mubMSGPAYLOAD0(2,0)<1> r[a0.5, 1]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(2,16)<1> r[a0.5, 33]<32;16,2>:ub { NoDDChk }
- mov (16) mubMSGPAYLOAD0(3,0)<1> r[a0.5, 65]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(3,16)<1> r[a0.5, 97]<32;16,2>:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(1,0)<2> r[a0.6, 1]<32;8,4>:ub { NoDDClr }
- mov (8) mubMSGPAYLOAD1(1,16)<2> r[a0.6, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(1,1)<2> r[a0.4, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD1(1,17)<2> r[a0.4, 65]<32;8,4>:ub { NoDDChk }
-
- add (4) a0.4<1>:uw r22.0<4;4,1>:w 1536:uw //Update Buffer 3 pointers
-
-//Buffer 2
- mov (16) mubMSGPAYLOAD0(4,0)<1> r[a0.1, 1]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(4,16)<1> r[a0.1, 33]<32;16,2>:ub { NoDDChk }
- mov (16) mubMSGPAYLOAD0(5,0)<1> r[a0.1, 65]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(5,16)<1> r[a0.1, 97]<32;16,2>:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(2,0)<2> r[a0.2, 1]<32;8,4>:ub { NoDDClr }
- mov (8) mubMSGPAYLOAD1(2,16)<2> r[a0.2, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(2,1)<2> r[a0.0, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD1(2,17)<2> r[a0.0, 65]<32;8,4>:ub { NoDDChk }
-
-//Buffer 3
- mov (16) mubMSGPAYLOAD0(6,0)<1> r[a0.5, 1]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(6,16)<1> r[a0.5, 33]<32;16,2>:ub { NoDDChk }
- mov (16) mubMSGPAYLOAD0(7,0)<1> r[a0.5, 65]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(7,16)<1> r[a0.5, 97]<32;16,2>:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(3,0)<2> r[a0.6, 1]<32;8,4>:ub { NoDDClr }
- mov (8) mubMSGPAYLOAD1(3,16)<2> r[a0.6, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(3,1)<2> r[a0.4, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD1(3,17)<2> r[a0.4, 65]<32;8,4>:ub { NoDDChk }
-//===========================================================================
-
-send (1) null<1>:d r28 0xc 0x120A8018:ud
-send (1) null<1>:d r37 0xc 0xA0A8019:ud
diff --git a/src/shaders/post_processing/gen8/Save_AVS_PA.g8a b/src/shaders/post_processing/gen8/Save_AVS_PA.g8a
deleted file mode 100644
index a8ddc09..0000000
--- a/src/shaders/post_processing/gen8/Save_AVS_PA.g8a
+++ /dev/null
@@ -1,629 +0,0 @@
-/*
- * Copyright 2000-2013 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * Authors: Zhao Yakui <yakui.zhao@intel.com>
- */
-// 174 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// Module name: Save_AVS_PA.asm
-//
-// Save PA 422 frame data block of size 16x16
-//
-// To save 16x16 block (32x16 bytes of YUYV) we need 2 send instructions with of size 16x16 each.
-// -------------------------------
-// | 16x16 | 16x16 |
-// | YUYV | YUYV |
-// -------------------------------
-// these 2 sends are replaced by 8 32x2 sends to improve performance
-
-
-
-// Module name: Save.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
-//Msg payload buffers; upto 4 full-size messages can be written
-
-
-.declare mudMSGPAYLOAD0 Base=r29.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD1 Base=r38.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD2 Base=r47.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD3 Base=r56.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-
-.declare muwMSGPAYLOAD0 Base=r29.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD1 Base=r38.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD2 Base=r47.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD3 Base=r56.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-
-.declare mubMSGPAYLOAD0 Base=r29.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD1 Base=r38.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD2 Base=r47.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD3 Base=r56.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD4 Base=r32.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD5 Base=r41.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD6 Base=r50.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD7 Base=r59.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-
-
- // the r17 register (nTEMP0) is originally defined from "Common.inc"
- // instead of re-defining a nTEMP0 here, we use "SAVE_RGB" suffix for its naming
-
- .declare uwTemp0 Base=r17.0 ElementSize=2 Type=uw
-
-
-//_SAVE_INC_
-
-
- //wBUFF_CHNL_PTR points to buffer 0.
- //Add appropriate offsets to get pointers for all buffers (1,2,3).
- //Offset is zero for buffer 0.
- add (4) a0.0<1>:uw r22.0<4;4,1>:w 0:uw
-
- //Set DEST pointers according to output packing i.e. YUYV, YVYU, UYVY, VYUY
- add (4) a0.4<1>:w r2.28<4;4,1>:ub 928:uw
-
- /* X block origin. YUY2 or UYUV */
- shl (1) r27.0<1>:d r9.0<0;1,0>:w 1:w { NoDDClr } // H. block origin need to be 2 times
- mov (1) r27.1<1>:d r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin (1st quadrant)
- mov (1) r27.2<1>:ud 0x1001F:ud { NoDDChk } // Block width and height (32x2)
-
-// Rounding
- // left
- add.sat (4) r[a0.0, 0]<2>:uw r[a0.0, 0]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,32]<2>:uw r[a0.0, 32]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,64]<2>:uw r[a0.0, 64]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,96]<2>:uw r[a0.0, 96]<8;4,2>:uw 0x0080:uw
-
- add.sat (8) r[a0.1, 0]<1>:uw r[a0.1, 0]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,32]<1>:uw r[a0.1, 32]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,64]<1>:uw r[a0.1, 64]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,96]<1>:uw r[a0.1, 96]<8;8,1>:uw 0x0080:uw
-
- add.sat (4) r[a0.2, 0]<2>:uw r[a0.2, 0]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,32]<2>:uw r[a0.2, 32]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,64]<2>:uw r[a0.2, 64]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,96]<2>:uw r[a0.2, 96]<8;4,2>:uw 0x0080:uw
-
- // right
- add.sat (4) r[a0.0,16]<2>:uw r[a0.0, 16]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,48]<2>:uw r[a0.0, 48]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,80]<2>:uw r[a0.0, 80]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,112]<2>:uw r[a0.0, 112]<8;4,2>:uw 0x0080:uw
-
- add.sat (8) r[a0.1, 16]<1>:uw r[a0.1, 16]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,48]<1>:uw r[a0.1, 48]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,80]<1>:uw r[a0.1, 80]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,112]<1>:uw r[a0.1, 112]<8;8,1>:uw 0x0080:uw
-
- add.sat (4) r[a0.2, 16]<2>:uw r[a0.2, 16]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,48]<2>:uw r[a0.2, 48]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,80]<2>:uw r[a0.2, 80]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,112]<2>:uw r[a0.2, 112]<8;4,2>:uw 0x0080:uw
-
- add (4) a0.0<1>:uw r22.0<4;4,1>:w 512:uw
- // left
- add.sat (4) r[a0.0, 0]<2>:uw r[a0.0, 0]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,32]<2>:uw r[a0.0, 32]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,64]<2>:uw r[a0.0, 64]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,96]<2>:uw r[a0.0, 96]<8;4,2>:uw 0x0080:uw
-
- add.sat (8) r[a0.1, 0]<1>:uw r[a0.1, 0]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,32]<1>:uw r[a0.1, 32]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,64]<1>:uw r[a0.1, 64]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,96]<1>:uw r[a0.1, 96]<8;8,1>:uw 0x0080:uw
-
- add.sat (4) r[a0.2, 0]<2>:uw r[a0.2, 0]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,32]<2>:uw r[a0.2, 32]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,64]<2>:uw r[a0.2, 64]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,96]<2>:uw r[a0.2, 96]<8;4,2>:uw 0x0080:uw
-
- // right
- add.sat (4) r[a0.0,16]<2>:uw r[a0.0, 16]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,48]<2>:uw r[a0.0, 48]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,80]<2>:uw r[a0.0, 80]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,112]<2>:uw r[a0.0, 112]<8;4,2>:uw 0x0080:uw
-
- add.sat (8) r[a0.1, 16]<1>:uw r[a0.1, 16]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,48]<1>:uw r[a0.1, 48]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,80]<1>:uw r[a0.1, 80]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,112]<1>:uw r[a0.1, 112]<8;8,1>:uw 0x0080:uw
-
- add.sat (4) r[a0.2, 16]<2>:uw r[a0.2, 16]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,48]<2>:uw r[a0.2, 48]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,80]<2>:uw r[a0.2, 80]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,112]<2>:uw r[a0.2, 112]<8;4,2>:uw 0x0080:uw
-
- add (4) a0.0<1>:uw r22.0<4;4,1>:w 1024:uw
- // left
- add.sat (4) r[a0.0, 0]<2>:uw r[a0.0, 0]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,32]<2>:uw r[a0.0, 32]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,64]<2>:uw r[a0.0, 64]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,96]<2>:uw r[a0.0, 96]<8;4,2>:uw 0x0080:uw
-
- add.sat (8) r[a0.1, 0]<1>:uw r[a0.1, 0]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,32]<1>:uw r[a0.1, 32]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,64]<1>:uw r[a0.1, 64]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,96]<1>:uw r[a0.1, 96]<8;8,1>:uw 0x0080:uw
-
- add.sat (4) r[a0.2, 0]<2>:uw r[a0.2, 0]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,32]<2>:uw r[a0.2, 32]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,64]<2>:uw r[a0.2, 64]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,96]<2>:uw r[a0.2, 96]<8;4,2>:uw 0x0080:uw
-
- // right
- add.sat (4) r[a0.0,16]<2>:uw r[a0.0, 16]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,48]<2>:uw r[a0.0, 48]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,80]<2>:uw r[a0.0, 80]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,112]<2>:uw r[a0.0, 112]<8;4,2>:uw 0x0080:uw
-
- add.sat (8) r[a0.1, 16]<1>:uw r[a0.1, 16]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,48]<1>:uw r[a0.1, 48]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,80]<1>:uw r[a0.1, 80]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,112]<1>:uw r[a0.1, 112]<8;8,1>:uw 0x0080:uw
-
- add.sat (4) r[a0.2, 16]<2>:uw r[a0.2, 16]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,48]<2>:uw r[a0.2, 48]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,80]<2>:uw r[a0.2, 80]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,112]<2>:uw r[a0.2, 112]<8;4,2>:uw 0x0080:uw
-
- add (4) a0.0<1>:uw r22.0<4;4,1>:w 1536:uw
- // left
- add.sat (4) r[a0.0, 0]<2>:uw r[a0.0, 0]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,32]<2>:uw r[a0.0, 32]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,64]<2>:uw r[a0.0, 64]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,96]<2>:uw r[a0.0, 96]<8;4,2>:uw 0x0080:uw
-
- add.sat (8) r[a0.1, 0]<1>:uw r[a0.1, 0]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,32]<1>:uw r[a0.1, 32]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,64]<1>:uw r[a0.1, 64]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,96]<1>:uw r[a0.1, 96]<8;8,1>:uw 0x0080:uw
-
- add.sat (4) r[a0.2, 0]<2>:uw r[a0.2, 0]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,32]<2>:uw r[a0.2, 32]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,64]<2>:uw r[a0.2, 64]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,96]<2>:uw r[a0.2, 96]<8;4,2>:uw 0x0080:uw
-
- // right
- add.sat (4) r[a0.0,16]<2>:uw r[a0.0, 16]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,48]<2>:uw r[a0.0, 48]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,80]<2>:uw r[a0.0, 80]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.0,112]<2>:uw r[a0.0, 112]<8;4,2>:uw 0x0080:uw
-
- add.sat (8) r[a0.1, 16]<1>:uw r[a0.1, 16]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,48]<1>:uw r[a0.1, 48]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,80]<1>:uw r[a0.1, 80]<8;8,1>:uw 0x0080:uw
- add.sat (8) r[a0.1,112]<1>:uw r[a0.1, 112]<8;8,1>:uw 0x0080:uw
-
- add.sat (4) r[a0.2, 16]<2>:uw r[a0.2, 16]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,48]<2>:uw r[a0.2, 48]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,80]<2>:uw r[a0.2, 80]<8;4,2>:uw 0x0080:uw
- add.sat (4) r[a0.2,112]<2>:uw r[a0.2, 112]<8;4,2>:uw 0x0080:uw
-
- add (4) a0.0<1>:uw r22.0<4;4,1>:w 2048:uw
- // restore pointer
- add (4) a0.0<1>:uw r22.0<4;4,1>:w 0:uw
-
- mov (8) r28<1>:ud r27<8;8,1>:ud
- mov (8) r37<1>:ud r27<8;8,1>:ud
- add (1) r37.1<1>:d r27.1<0;1,0>:d 2:d // Point to 2nd part
-
- /* a0.2 U, a0.1 Y, a0.0 V */
-
- mov (8) r[a0.6, 0]<4>:ub r[a0.0, 1]<32;8,4>:ub { NoDDClr }
- mov (8) r[a0.6, 32]<4>:ub r[a0.0,33]<32;8,4>:ub { NoDDClr }
- mov (16) r[a0.4, 0]<2>:ub r[a0.1, 1]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (16) r[a0.4, 32]<2>:ub r[a0.1,33]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (8) r[a0.5, 0]<4>:ub r[a0.2, 1]<32;8,4>:ub { NoDDChk }
- mov (8) r[a0.5, 32]<4>:ub r[a0.2,33]<32;8,4>:ub { NoDDChk }
-
- /* a0.4 + 288 = r38 */
- mov (8) r[a0.6, 288]<4>:ub r[a0.0,65]<32;8,4>:ub { NoDDClr }
- mov (8) r[a0.6, 320]<4>:ub r[a0.0,97]<32;8,4>:ub { NoDDClr }
- mov (16) r[a0.4,288]<2>:ub r[a0.1,65]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (16) r[a0.4,320]<2>:ub r[a0.1,97]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (8) r[a0.5,288]<4>:ub r[a0.2,65]<32;8,4>:ub { NoDDChk }
- mov (8) r[a0.5,320]<4>:ub r[a0.2,97]<32;8,4>:ub { NoDDChk }
-
- send (1) null<1>:d r28 0xc 0x60A8018:ud
- send (1) null<1>:d r37 0xc 0x60A8018:ud
-
- // restore pointer
- add (4) a0.0<1>:uw r22.0<4;4,1>:w 512:uw
-
- add (1) r28.1<1>:d r27.1<0;1,0>:d 4:d // Point to 2nd part
- add (1) r37.1<1>:d r27.1<0;1,0>:d 6:d // Point to 2nd part
-
-
- mov (8) r[a0.6, 0]<4>:ub r[a0.0, 1]<32;8,4>:ub { NoDDClr }
- mov (8) r[a0.6, 32]<4>:ub r[a0.0,33]<32;8,4>:ub { NoDDClr }
- mov (16) r[a0.4, 0]<2>:ub r[a0.1, 1]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (16) r[a0.4, 32]<2>:ub r[a0.1,33]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (8) r[a0.5, 0]<4>:ub r[a0.2, 1]<32;8,4>:ub { NoDDChk }
- mov (8) r[a0.5, 32]<4>:ub r[a0.2,33]<32;8,4>:ub { NoDDChk }
-
- mov (8) r[a0.6, 288]<4>:ub r[a0.0,65]<32;8,4>:ub { NoDDClr }
- mov (8) r[a0.6, 320]<4>:ub r[a0.0,97]<32;8,4>:ub { NoDDClr }
- mov (16) r[a0.4,288]<2>:ub r[a0.1,65]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (16) r[a0.4,320]<2>:ub r[a0.1,97]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (8) r[a0.5,288]<4>:ub r[a0.2,65]<32;8,4>:ub { NoDDChk }
- mov (8) r[a0.5,320]<4>:ub r[a0.2,97]<32;8,4>:ub { NoDDChk }
-
- send (1) null<1>:d r28 0xc 0x60A8018:ud
- send (1) null<1>:d r37 0xc 0x60A8018:ud
-
- // restore pointer
- add (4) a0.0<1>:uw r22.0<4;4,1>:w 1024:uw
-
- add (1) r28.1<1>:d r27.1<0;1,0>:d 8:d // Point to 2nd part
- add (1) r37.1<1>:d r27.1<0;1,0>:d 10:d // Point to 2nd part
-
-
- mov (8) r[a0.6, 0]<4>:ub r[a0.0, 1]<32;8,4>:ub { NoDDClr }
- mov (8) r[a0.6, 32]<4>:ub r[a0.0,33]<32;8,4>:ub { NoDDClr }
- mov (16) r[a0.4, 0]<2>:ub r[a0.1, 1]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (16) r[a0.4, 32]<2>:ub r[a0.1,33]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (8) r[a0.5, 0]<4>:ub r[a0.2, 1]<32;8,4>:ub { NoDDChk }
- mov (8) r[a0.5, 32]<4>:ub r[a0.2,33]<32;8,4>:ub { NoDDChk }
-
- mov (8) r[a0.6, 288]<4>:ub r[a0.0,65]<32;8,4>:ub { NoDDClr }
- mov (8) r[a0.6, 320]<4>:ub r[a0.0,97]<32;8,4>:ub { NoDDClr }
- mov (16) r[a0.4,288]<2>:ub r[a0.1,65]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (16) r[a0.4,320]<2>:ub r[a0.1,97]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (8) r[a0.5,288]<4>:ub r[a0.2,65]<32;8,4>:ub { NoDDChk }
- mov (8) r[a0.5,320]<4>:ub r[a0.2,97]<32;8,4>:ub { NoDDChk }
-
- send (1) null<1>:d r28 0xc 0x60A8018:ud
- send (1) null<1>:d r37 0xc 0x60A8018:ud
-
- // restore pointer
- add (4) a0.0<1>:uw r22.0<4;4,1>:w 1536:uw
-
- add (1) r28.1<1>:d r27.1<0;1,0>:d 12:d // Point to 2nd part
- add (1) r37.1<1>:d r27.1<0;1,0>:d 14:d // Point to 2nd part
-
- mov (8) r[a0.6, 0]<4>:ub r[a0.0, 1]<32;8,4>:ub { NoDDClr }
- mov (8) r[a0.6, 32]<4>:ub r[a0.0,33]<32;8,4>:ub { NoDDClr }
- mov (16) r[a0.4, 0]<2>:ub r[a0.1, 1]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (16) r[a0.4, 32]<2>:ub r[a0.1,33]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (8) r[a0.5, 0]<4>:ub r[a0.2, 1]<32;8,4>:ub { NoDDChk }
- mov (8) r[a0.5, 32]<4>:ub r[a0.2,33]<32;8,4>:ub { NoDDChk }
-
- mov (8) r[a0.6, 288]<4>:ub r[a0.0,65]<32;8,4>:ub { NoDDClr }
- mov (8) r[a0.6, 320]<4>:ub r[a0.0,97]<32;8,4>:ub { NoDDClr }
- mov (16) r[a0.4,288]<2>:ub r[a0.1,65]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (16) r[a0.4,320]<2>:ub r[a0.1,97]<32;16,2>:ub { NoDDClr, NoDDChk }
- mov (8) r[a0.5,288]<4>:ub r[a0.2,65]<32;8,4>:ub { NoDDChk }
- mov (8) r[a0.5,320]<4>:ub r[a0.2,97]<32;8,4>:ub { NoDDChk }
-
- send (1) null<1>:d r28 0xc 0x60A8018:ud
- send (1) null<1>:d r37 0xc 0x60A8018:ud
-
diff --git a/src/shaders/post_processing/gen8/Save_AVS_PL3.g8a b/src/shaders/post_processing/gen8/Save_AVS_PL3.g8a
deleted file mode 100644
index 572d2aa..0000000
--- a/src/shaders/post_processing/gen8/Save_AVS_PL3.g8a
+++ /dev/null
@@ -1,565 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- * Author: Zhao Yakui <yakui.zhao@intel.com>
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 84 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// Module name: Save_AVS_PL3.asm
-//
-// Save PL3 420 frame data block of size 16x16
-//
-// To save 16x16 block (16x16 byte of Y and 8x8 byte of U and V each) we need 3 send instructions with one of size 16x16 and two of size 8x8.
-// -----------------
-// | 16x16 Y |
-// | |
-// -----------------
-// | 8x8 U |
-// ---------
-// | 8x8 V |
-// ---------
-
-//-----------------------------------------------------------------
-//The layout of data is as follows:
-//mMSGHDR0 : Y data header (16x16)
-//mubMSGPAYLOAD0 : Y data payload (8 GRFs)
-//mMSGHDR1 : U data header (8x8)
-//mubMSGPAYLOAD1 : U data payload (2 GRFs)
-//mMSGHDR2 : V data header (8x8)
-//mubMSGPAYLOAD2 : V data payload (2 GRFs)
-//------------------------------------------------------------------
-
-
-
-// Module name: Save.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
-//Msg payload buffers; upto 4 full-size messages can be written
-
-
-.declare mudMSGPAYLOAD0 Base=r29.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD1 Base=r38.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD2 Base=r47.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD3 Base=r56.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-
-.declare muwMSGPAYLOAD0 Base=r29.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD1 Base=r38.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD2 Base=r47.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD3 Base=r56.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-
-.declare mubMSGPAYLOAD0 Base=r29.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD1 Base=r38.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD2 Base=r47.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD3 Base=r56.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD4 Base=r32.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD5 Base=r41.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD6 Base=r50.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD7 Base=r59.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-
-
- // the r17 register (nTEMP0) is originally defined from "Common.inc"
- // instead of re-defining a nTEMP0 here, we use "SAVE_RGB" suffix for its naming
-
- .declare uwTemp0 Base=r17.0 ElementSize=2 Type=uw
-
-
-//_SAVE_INC_
-
-
- // At the save module we have all 8 address sub-registers available.
- // So we will use PING-PONG type of scheme to save the data using
- // pointers pBUF_CHNL_TOP_8x4 and pBUF_CHNL_BOT_8x4. This will help
- // reduce dependency. - rT
-
- //wBUFF_CHNL_PTR points to either buffer 0 or buffer 4.
- //Add appropriate offsets to get pointers for all buffers (1,2,3 or 5).
- //Offsets are zero for buffer 0 and buffer 4.
- add (4) a0.0<1>:uw r22.0<4;4,1>:w 0:uw
- add (4) a0.4<1>:uw r22.0<4;4,1>:w 512:uw
-
- //Set up header for Y,U and V data
- mov (8) r28<1>:ud r27<8;8,1>:ud
- mov (8) r37<1>:ud r27<8;8,1>:ud
- mov (8) r46<1>:ud r27<8;8,1>:ud
-
- mov (2) r28.0<1>:d r9.0<2;2,1>:w { NoDDClr } //ORI Y (LUMA) = ORI
- shr (2) r37.0<1>:d r9.0<2;2,1>:w 1:w { NoDDClr } //H/V ORI U = H/V ORI/2
- shr (2) r46.0<1>:d r9.0<2;2,1>:w 1:w { NoDDClr } //H/V ORI V = H/V ORI/2
-
- mov (1) r28.2<1>:ud 0xF000F:ud { NoDDChk } // Y Block width and height (16x16)
- mov (1) r37.2<1>:ud 0x70007:ud { NoDDChk } // U Block width and height (8x8)
- mov (1) r46.2<1>:ud 0x70007:ud { NoDDChk } // V Block width and height (8x8)
-
-// Unscramble, and pack data directly to MRFs
-
-// Data 16x16 block is divided as -
-// ---------
-// | 0 |
-// ---------
-// | 1 |
-// ---------
-// | 2 |
-// ---------
-// | 3 |
-// ---------
-// All sub-blocks are of size 16x4
-// 0: ubBUFFER_0
-// 1: ubBUFFER_1, ubBUFFER_0+16
-// 2: ubBUFFER_2
-// 3: ubBUFFER_3, ubBUFFER_2+16
-
- //Y Rounding, first
- add.sat (16) r[a0.1,0]<1>:uw r[a0.1,0]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,32]<1>:uw r[a0.1,32]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,64]<1>:uw r[a0.1,64]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,96]<1>:uw r[a0.1,96]<16;16,1>:uw 0x0080:uw
-
- // U rounding
- add.sat (8) r[a0.2,0]<2>:uw r[a0.2,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.2,64]<2>:uw r[a0.2,64]<16;8,2>:uw 0x0080:uw
-
- // V rounding
- add.sat (8) r[a0.0,0]<2>:uw r[a0.0,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.0,64]<2>:uw r[a0.0,64]<16;8,2>:uw 0x0080:uw
-
- add (4) a0.0<1>:uw r22.0<4;4,1>:w 1024:uw //Update Buffer 2 pointers
-
- //Y Rounding, second
- add.sat (16) r[a0.5,0]<1>:uw r[a0.5,0]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,32]<1>:uw r[a0.5,32]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,64]<1>:uw r[a0.5,64]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,96]<1>:uw r[a0.5,96]<16;16,1>:uw 0x0080:uw
-
- // U rounding
- add.sat (8) r[a0.6,0]<2>:uw r[a0.6,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.6,64]<2>:uw r[a0.6,64]<16;8,2>:uw 0x0080:uw
-
- // V rounding
- add.sat (8) r[a0.4,0]<2>:uw r[a0.4,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.4,64]<2>:uw r[a0.4,64]<16;8,2>:uw 0x0080:uw
-
- add (4) a0.4<1>:uw r22.0<4;4,1>:w 1536:uw //Update Buffer 3 pointers
-
- //Y Rounding, third
- add.sat (16) r[a0.1,0]<1>:uw r[a0.1,0]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,32]<1>:uw r[a0.1,32]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,64]<1>:uw r[a0.1,64]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.1,96]<1>:uw r[a0.1,96]<16;16,1>:uw 0x0080:uw
-
- // U rounding
- add.sat (8) r[a0.2,0]<2>:uw r[a0.2,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.2,64]<2>:uw r[a0.2,64]<16;8,2>:uw 0x0080:uw
-
- // V rounding
- add.sat (8) r[a0.0,0]<2>:uw r[a0.0,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.0,64]<2>:uw r[a0.0,64]<16;8,2>:uw 0x0080:uw
-
-
- //Y Rounding, fourth
- add.sat (16) r[a0.5,0]<1>:uw r[a0.5,0]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,32]<1>:uw r[a0.5,32]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,64]<1>:uw r[a0.5,64]<16;16,1>:uw 0x0080:uw
- add.sat (16) r[a0.5,96]<1>:uw r[a0.5,96]<16;16,1>:uw 0x0080:uw
-
- // U rounding
- add.sat (8) r[a0.6,0]<2>:uw r[a0.6,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.6,64]<2>:uw r[a0.6,64]<16;8,2>:uw 0x0080:uw
-
- // V rounding
- add.sat (8) r[a0.4,0]<2>:uw r[a0.4,0]<16;8,2>:uw 0x0080:uw
- add.sat (8) r[a0.4,64]<2>:uw r[a0.4,64]<16;8,2>:uw 0x0080:uw
-
- // restore the TOP and BOT pointers
- add (4) a0.0<1>:uw r22.0<4;4,1>:w 0:uw
- add (4) a0.4<1>:uw r22.0<4;4,1>:w 512:uw
-
-//Buffer 0
-//Move Y to msg payload
- mov (16) mubMSGPAYLOAD0(0,0)<1> r[a0.1, 1]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(0,16)<1> r[a0.1, 33]<32;16,2>:ub { NoDDChk }
- mov (16) mubMSGPAYLOAD0(1,0)<1> r[a0.1, 65]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(1,16)<1> r[a0.1, 97]<32;16,2>:ub { NoDDChk }
-
-//Move U to msg payload
- mov (8) mubMSGPAYLOAD1(0,0)<1> r[a0.2, 1]<32;8,4>:ub { NoDDClr }
- mov (8) mubMSGPAYLOAD1(0,8)<1> r[a0.2, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
-
-//Move V to msg payload
- mov (8) mubMSGPAYLOAD2(0,0)<1> r[a0.0, 1]<32;8,4>:ub { NoDDClr }
- mov (8) mubMSGPAYLOAD2(0,8)<1> r[a0.0, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
-
- add (4) a0.0<1>:uw r22.0<4;4,1>:w 1024:uw //Update Buffer 2 pointers
-
-//Buffer 1
- mov (16) mubMSGPAYLOAD0(2,0)<1> r[a0.5, 1]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(2,16)<1> r[a0.5, 33]<32;16,2>:ub { NoDDChk }
- mov (16) mubMSGPAYLOAD0(3,0)<1> r[a0.5, 65]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(3,16)<1> r[a0.5, 97]<32;16,2>:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(0,16)<1> r[a0.6, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD1(0,24)<1> r[a0.6, 65]<32;8,4>:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD2(0,16)<1> r[a0.4, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD2(0,24)<1> r[a0.4, 65]<32;8,4>:ub { NoDDChk }
-
- add (4) a0.4<1>:uw r22.0<4;4,1>:w 1536:uw //Update Buffer 3 pointers
-
-//Buffer 2
- mov (16) mubMSGPAYLOAD0(4,0)<1> r[a0.1, 1]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(4,16)<1> r[a0.1, 33]<32;16,2>:ub { NoDDChk }
- mov (16) mubMSGPAYLOAD0(5,0)<1> r[a0.1, 65]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(5,16)<1> r[a0.1, 97]<32;16,2>:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(1,0)<1> r[a0.2, 1]<32;8,4>:ub { NoDDClr }
- mov (8) mubMSGPAYLOAD1(1,8)<1> r[a0.2, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
-
- mov (8) mubMSGPAYLOAD2(1,0)<1> r[a0.0, 1]<32;8,4>:ub { NoDDClr }
- mov (8) mubMSGPAYLOAD2(1,8)<1> r[a0.0, 65]<32;8,4>:ub { NoDDClr, NoDDChk }
-
-//Buffer 3
- mov (16) mubMSGPAYLOAD0(6,0)<1> r[a0.5, 1]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(6,16)<1> r[a0.5, 33]<32;16,2>:ub { NoDDChk }
- mov (16) mubMSGPAYLOAD0(7,0)<1> r[a0.5, 65]<32;16,2>:ub { NoDDClr }
- mov (16) mubMSGPAYLOAD0(7,16)<1> r[a0.5, 97]<32;16,2>:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD1(1,16)<1> r[a0.6, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD1(1,24)<1> r[a0.6, 65]<32;8,4>:ub { NoDDChk }
-
- mov (8) mubMSGPAYLOAD2(1,16)<1> r[a0.4, 1]<32;8,4>:ub { NoDDClr, NoDDChk }
- mov (8) mubMSGPAYLOAD2(1,24)<1> r[a0.4, 65]<32;8,4>:ub { NoDDChk }
-
-//===========================================================================
-
-send (1) null<1>:d r28 0xc 0x120A8018:ud
-send (1) null<1>:d r37 0xc 0x60A8019:ud
-send (1) null<1>:d r46 0xc 0x60A801A:ud
diff --git a/src/shaders/post_processing/gen8/Save_AVS_RGBX.g8a b/src/shaders/post_processing/gen8/Save_AVS_RGBX.g8a
deleted file mode 100644
index fbf3543..0000000
--- a/src/shaders/post_processing/gen8/Save_AVS_RGBX.g8a
+++ /dev/null
@@ -1,641 +0,0 @@
-/*
- * Copyright 2000-2013 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- */
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// Module name: Save_AVS_RGBX.asm
-//
-// Save packed ARGB 444 frame data block of size 16x16
-//
-// To save 16x16 block (64x16 byte layout for ARGB8888) we need 8 send instructions with 32x4 in each
-// --------
-// | 0 | 1 |
-// | 2 | 3 |
-// | 4 | 5 |
-// | 6 | 7 |
-// ---------
-// the 8 32x4 block send is used
-
-
-
-// Module name: Save.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
-//Msg payload buffers; upto 4 full-size messages can be written
-
-
-.declare mudMSGPAYLOAD0 Base=r29.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD1 Base=r38.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD2 Base=r47.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mudMSGPAYLOAD3 Base=r56.0 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-
-.declare muwMSGPAYLOAD0 Base=r29.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD1 Base=r38.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD2 Base=r47.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare muwMSGPAYLOAD3 Base=r56.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-
-.declare mubMSGPAYLOAD0 Base=r29.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD1 Base=r38.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD2 Base=r47.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD3 Base=r56.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD4 Base=r32.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD5 Base=r41.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD6 Base=r50.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare mubMSGPAYLOAD7 Base=r59.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-
-
- // the r17 register (nTEMP0) is originally defined from "Common.inc"
- // instead of re-defining a nTEMP0 here, we use "SAVE_RGB" suffix for its naming
-
- .declare uwTemp0 Base=r17.0 ElementSize=2 Type=uw
-
-
-//_SAVE_INC_
-
-
-// At the save module we have all 8 address sub-registers available.
-// So we will use PING-PONG type of scheme to save the data using
-// pointers pBUF_CHNL_TOP_8x4 and pBUF_CHNL_BOT_8x4. This will help
-// reduce dependency. - rT
-
- //Internal LAYOUT:(RRGGBBAA)
- //Assign buffer channel order for Buffer 0123 in the order RGBA a0.3>A, a0.2>B, a0.1>G, a0.0>R
- // R = 0, G= 4, B = 8, A = 12.
- mov (4) acc0.0<1>:w 0x62EA:v
- add (4) acc0.0<1>:w acc0<4;4,1>:w 70:uw
- shl (4) r22.0<1>:w acc0<4;4,1>:w 5:uw
-
- // if channel swap?
- // This means that it should be BGRA(B is the LSB) or RGBA
- // the internal format is always RGBA(MSB-A-B-G-R).
- and.nz.f0.0 null<1>:w r2.3<0;1,0>:uw 0x01:w
-
-//wBUFF_CHNL_PTR points to either buffer 0 or buffer 4.
-//Add appropriate offsets to get pointers for all buffers (1,2,3 or 5).
-//Offsets are zero for buffer 0 and buffer 4.
- add (4) a0.0<1>:uw r22.0<4;4,1>:w 0:uw
-
- // pointer swap
- (f0.0) mov (1) uwTemp0<1> a0.0<0;1,0>:uw
- (f0.0) mov (1) a0.0<1>:uw a0.2<0;1,0>:uw
- (f0.0) mov (1) a0.2<1>:uw uwTemp0<0;1,0>
-
- shl (1) r27.0<1>:d r9.0<0;1,0>:w 2:w { NoDDClr } // H. block origin need to be quadrupled
- mov (1) r27.1<1>:d r9.1<0;1,0>:w { NoDDClr, NoDDChk } // Block origin (1st quadrant)
- mov (1) r27.2<1>:ud 0x3001F:ud { NoDDChk } // Block width and height (32x4)
-
- mov (4) a0.4<1>:uw a0.0<4;4,1>:uw
-
- mov (8) r28<1>:ud r27<8;8,1>:ud
- mov (8) r37<1>:ud r27<8;8,1>:ud
- mov (8) r46<1>:ud r27<8;8,1>:ud
- mov (8) r55<1>:ud r27<8;8,1>:ud
-
- mov (8) r31<1>:ud r27<8;8,1>:ud
- mov (8) r40<1>:ud r27<8;8,1>:ud
- mov (8) r49<1>:ud r27<8;8,1>:ud
- mov (8) r58<1>:ud r27<8;8,1>:ud
-
-//Buffer 0/1 are written by using 4 32x4.
-
- add (1) r37.0<1>:d r27.0<0;1,0>:d 32:d
-
- add (1) r46.1<1>:d r27.1<0;1,0>:d 4:d
-
- add (1) r55.1<1>:d r27.1<0;1,0>:d 4:d
- add (1) r55.0<1>:d r27.0<0;1,0>:d 32:d
-
- // write Buf_0 to 1st quarter of four horizontal output blocks
-
-// Please note the scattered order of NODDCLR, NODDCHK flags. Since the sub-registers
-// of destination reg are not updated at one place and hence even flags are scattered. -rT
-
-/* for block 0 the left part of buffer 0 and 1 */
- mov (8) mubMSGPAYLOAD0(0, 0)<4> r[a0.0, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(0, 1)<4> r[a0.1, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(0, 2)<4> r[a0.2, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(0, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD0(1, 0)<4> r[a0.0, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(1, 1)<4> r[a0.1, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(1, 2)<4> r[a0.2, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(1, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD1(0, 0)<4> r[a0.0, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(0, 1)<4> r[a0.1, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(0, 2)<4> r[a0.2, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(0, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD1(1, 0)<4> r[a0.0, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(1, 1)<4> r[a0.1, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(1, 2)<4> r[a0.2, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(1, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD0(2, 0)<4> r[a0.0, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(2, 1)<4> r[a0.1, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(2, 2)<4> r[a0.2, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(2, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD0(3, 0)<4> r[a0.0, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(3, 1)<4> r[a0.1, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(3, 2)<4> r[a0.2, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(3, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD1(2, 0)<4> r[a0.0, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(2, 1)<4> r[a0.1, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(2, 2)<4> r[a0.2, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(2, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD1(3, 0)<4> r[a0.0, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(3, 1)<4> r[a0.1, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(3, 2)<4> r[a0.2, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(3, 3)<4> r2.31:ub
-
-/* For Buffer 0 */
- send (16) null<1>:d r28 0xc 0x0A0A8018:ud
- send (16) null<1>:d r37 0xc 0x0A0A8018:ud
-
- add (4) a0.0<1>:uw a0.4<4;4,1>:uw 512:uw
- mov (8) mubMSGPAYLOAD2(0, 0)<4> r[a0.0, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(0, 1)<4> r[a0.1, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(0, 2)<4> r[a0.2, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(0, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD2(1, 0)<4> r[a0.0, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(1, 1)<4> r[a0.1, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(1, 2)<4> r[a0.2, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(1, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD3(0, 0)<4> r[a0.0, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(0, 1)<4> r[a0.1, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(0, 2)<4> r[a0.2, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(0, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD3(1, 0)<4> r[a0.0, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(1, 1)<4> r[a0.1, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(1, 2)<4> r[a0.2, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(1, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD2(2, 0)<4> r[a0.0, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(2, 1)<4> r[a0.1, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(2, 2)<4> r[a0.2, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(2, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD2(3, 0)<4> r[a0.0, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(3, 1)<4> r[a0.1, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(3, 2)<4> r[a0.2, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(3, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD3(2, 0)<4> r[a0.0, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(2, 1)<4> r[a0.1, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(2, 2)<4> r[a0.2, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(2, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD3(3, 0)<4> r[a0.0, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(3, 1)<4> r[a0.1, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(3, 2)<4> r[a0.2, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(3, 3)<4> r2.31:ub
- // send Buffer 1
- send (16) null<1>:d r46 0xc 0x0A0A8018:ud
- send (16) null<1>:d r55 0xc 0x0A0A8018:ud
-
-
-/* for Buffer 2/3 */
- mov (8) r28<1>:ud r27<8;8,1>:ud
- mov (8) r37<1>:ud r27<8;8,1>:ud
- mov (8) r46<1>:ud r27<8;8,1>:ud
- mov (8) r55<1>:ud r27<8;8,1>:ud
-
- add (1) r28.1<1>:d r27.1<0;1,0>:d 8:d
-
- add (1) r37.0<1>:d r27.0<0;1,0>:d 32:d
- add (1) r37.1<1>:d r27.1<0;1,0>:d 8:d
-
- add (1) r46.1<1>:d r27.1<0;1,0>:d 12:d
-
- add (1) r55.1<1>:d r27.1<0;1,0>:d 12:d
- add (1) r55.0<1>:d r27.0<0;1,0>:d 32:d
-
- add (4) a0.0<1>:uw a0.4<4;4,1>:uw 1024:uw
-
- mov (8) mubMSGPAYLOAD0(0, 0)<4> r[a0.0, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(0, 1)<4> r[a0.1, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(0, 2)<4> r[a0.2, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(0, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD0(1, 0)<4> r[a0.0, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(1, 1)<4> r[a0.1, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(1, 2)<4> r[a0.2, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(1, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD1(0, 0)<4> r[a0.0, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(0, 1)<4> r[a0.1, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(0, 2)<4> r[a0.2, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(0, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD1(1, 0)<4> r[a0.0, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(1, 1)<4> r[a0.1, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(1, 2)<4> r[a0.2, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(1, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD0(2, 0)<4> r[a0.0, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(2, 1)<4> r[a0.1, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(2, 2)<4> r[a0.2, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(2, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD0(3, 0)<4> r[a0.0, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(3, 1)<4> r[a0.1, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(3, 2)<4> r[a0.2, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD0(3, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD1(2, 0)<4> r[a0.0, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(2, 1)<4> r[a0.1, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(2, 2)<4> r[a0.2, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(2, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD1(3, 0)<4> r[a0.0, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(3, 1)<4> r[a0.1, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(3, 2)<4> r[a0.2, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD1(3, 3)<4> r2.31:ub
-
-// Send Buffer 2
- send (16) null<1>:d r28 0xc 0x0A0A8018:ud
- send (16) null<1>:d r37 0xc 0x0A0A8018:ud
-
- add (4) a0.0<1>:uw a0.4<4;4,1>:uw 1536:uw
- mov (8) mubMSGPAYLOAD2(0, 0)<4> r[a0.0, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(0, 1)<4> r[a0.1, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(0, 2)<4> r[a0.2, 1]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(0, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD2(1, 0)<4> r[a0.0, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(1, 1)<4> r[a0.1, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(1, 2)<4> r[a0.2, 33]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(1, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD3(0, 0)<4> r[a0.0, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(0, 1)<4> r[a0.1, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(0, 2)<4> r[a0.2, 17]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(0, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD3(1, 0)<4> r[a0.0, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(1, 1)<4> r[a0.1, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(1, 2)<4> r[a0.2, 49]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(1, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD2(2, 0)<4> r[a0.0, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(2, 1)<4> r[a0.1, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(2, 2)<4> r[a0.2, 65]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(2, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD2(3, 0)<4> r[a0.0, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(3, 1)<4> r[a0.1, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(3, 2)<4> r[a0.2, 97]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD2(3, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD3(2, 0)<4> r[a0.0, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(2, 1)<4> r[a0.1, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(2, 2)<4> r[a0.2, 81]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(2, 3)<4> r2.31:ub
-
- mov (8) mubMSGPAYLOAD3(3, 0)<4> r[a0.0, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(3, 1)<4> r[a0.1, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(3, 2)<4> r[a0.2, 113]<16;8,2>:ub
- mov (8) mubMSGPAYLOAD3(3, 3)<4> r2.31:ub
- // send buffer 3
- send (16) null<1>:d r46 0xc 0x0A0A8018:ud
- send (16) null<1>:d r55 0xc 0x0A0A8018:ud
-
-
-
diff --git a/src/shaders/post_processing/gen8/Set_AVS_Buf_0123_BGRA.g8a b/src/shaders/post_processing/gen8/Set_AVS_Buf_0123_BGRA.g8a
deleted file mode 100644
index b1f7fb7..0000000
--- a/src/shaders/post_processing/gen8/Set_AVS_Buf_0123_BGRA.g8a
+++ /dev/null
@@ -1,368 +0,0 @@
-/*
- * Copyright 2000-2013 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Authors: Zhao Yakui <yakui.zhao@intel.com>
- */
-// 7 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-//Module Name: Set_AVS_Buf_0123_BGRA.asm
-
-
-
-//Module Name: Set_Buf_0123_BGRA
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- //AVS LAYOUT:(UUYYVVAA)
- //AVS RGBX LAYOUT (RRGGBBAA)
- //Assign buffer channel order for Buffer 0123 in the order AUYV a0.3>A, a0.2>U, a0.1>Y, a0.0>V
- // V = 8, Y= 0, U = 4, A = 12.
- // And a0.x is used as indirect-register for RGBX. R=a0.1, G=a0.2, B=a0.0
- // B = 8, R= 0, G = 4, A = 12
- mov (4) acc0.0<1>:w 0x6EA2:v
- add (4) acc0.0<1>:w acc0<4;4,1>:w 70:uw
- shl (4) r22.0<1>:w acc0<4;4,1>:w 5:uw
-
- //OPT: wAVS_SU_SHUFFLE_PTR_0 and udAVS_SU_SHUFFLE_OFF_0 are sub-regs of same GRF. -rT
-
- //SU LAYOUT:(VYUAVYUA)
- //V = 4, Y = 2, U = 0, A = 6
- //B = 4, G = 2, R = 0, A = 6
- mov (4) acc0.0<1>:w 0x6204:v
- add (4) acc0.0<1>:w acc0<4;4,1>:w 64:uw
- shl (4) r18.0<1>:w acc0<4;4,1>:w 5:uw { NoDDClr } //Convert to BYTE address.
-
- //OFFSET:
- mov (1) r18.4<1>:ud 0x1000100:ud { NoDDChk }
-
-
diff --git a/src/shaders/post_processing/gen8/Set_AVS_Buf_0123_PL2.g8a b/src/shaders/post_processing/gen8/Set_AVS_Buf_0123_PL2.g8a
deleted file mode 100644
index dcbe297..0000000
--- a/src/shaders/post_processing/gen8/Set_AVS_Buf_0123_PL2.g8a
+++ /dev/null
@@ -1,361 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 7 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-//Module Name: Set_AVS_Buf_0123_PL2.asm
-
-
-
-//Module Name: Set_Buf_0123_PL2
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- //AVS LAYOUT: (YYUUVVAA)
- //Assign buffer channel order for Buffer 0123 in the order AUYV a0.3>A, a0.2>U, a0.1>Y, a0.0>V
- //For PL2-AVS: V = 8, Y= 0, U = 4, A = 12.
- mov (4) acc0.0<1>:w 0x6EA2:v //Subtract 6 from 0,4,8,12
- add (4) acc0.0<1>:w acc0<4;4,1>:w 70:uw //add 6 back
- shl (4) r22.0<1>:w acc0<4;4,1>:w 5:uw //Convert to BYTE address.
-
- //OPT: wAVS_SU_SHUFFLE_PTR_0 and udAVS_SU_SHUFFLE_OFF_0 are sub-regs of same GRF. -rT
- //SU LAYOUT:(YUVAYUVA)
- //V = 4, Y = 0, U = 2, A = 6
- mov (4) acc0.0<1>:w 0x6204:v
- add (4) acc0.0<1>:w acc0<4;4,1>:w 64:uw
- shl (4) r18.0<1>:w acc0<4;4,1>:w 5:uw { NoDDClr } //Convert to BYTE address.
-
- //OFFSET:
- mov (1) r18.4<1>:ud 0x1000100:ud { NoDDChk }
-
-
diff --git a/src/shaders/post_processing/gen8/Set_AVS_Buf_0123_PL3.g8a b/src/shaders/post_processing/gen8/Set_AVS_Buf_0123_PL3.g8a
deleted file mode 100644
index 292e687..0000000
--- a/src/shaders/post_processing/gen8/Set_AVS_Buf_0123_PL3.g8a
+++ /dev/null
@@ -1,362 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 7 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-//Module Name: Set_AVS_Buf_0123_PL3.asm
-
-
-
-//Module Name: Set_Buf_0123_PL3
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- //AVS LAYOUT: (YYUUVVAA)
- //Assign buffer channel order for Buffer 0123 in the order AUYV a0.3>A, a0.2>U, a0.1>Y, a0.0>V
- //For PL3-AVS: V = 8, Y= 0, U = 4, A = 12.
- mov (4) acc0.0<1>:w 0x6EA2:v
- //Subtract 6 from 0,4,8,12
- add (4) acc0.0<1>:w acc0<4;4,1>:w 70:uw //add 6 back
- shl (4) r22.0<1>:w acc0<4;4,1>:w 5:uw //Convert to BYTE address.
-
- //OPT: wAVS_SU_SHUFFLE_PTR_0 and udAVS_SU_SHUFFLE_OFF_0 are sub-regs of same GRF. -rT
- //SU LAYOUT:(YUVAYUVA)
- //V = 4, Y = 0, U = 2, A = 6
- mov (4) acc0.0<1>:w 0x6204:v
- add (4) acc0.0<1>:w acc0<4;4,1>:w 64:uw
- shl (4) r18.0<1>:w acc0<4;4,1>:w 5:uw { NoDDClr } //Convert to BYTE address.
-
- //OFFSET:
- mov (1) r18.4<1>:ud 0x1000100:ud { NoDDChk }
-
-
diff --git a/src/shaders/post_processing/gen8/Set_AVS_Buf_0123_VYUA.g8a b/src/shaders/post_processing/gen8/Set_AVS_Buf_0123_VYUA.g8a
deleted file mode 100644
index 84f89f9..0000000
--- a/src/shaders/post_processing/gen8/Set_AVS_Buf_0123_VYUA.g8a
+++ /dev/null
@@ -1,366 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 7 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-//Module Name: Set_AVS_Buf_0123_VYUA.asm
-
-
-
-//Module Name: Set_Buf_0123_VYUA
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
- //AVS LAYOUT:(VVYYUUAA)
- //Assign buffer channel order for Buffer 0123 in the order AUYV a0.3>A, a0.2>U, a0.1>Y, a0.0>V
- // V = 0, Y= 4, U = 8, A = 12.
- //YCrCb or YCrCb_Swap returns the following data:
- //Cr is returned on R-channel. 0
- //Y is returned on G channel. 4
- //Cb is returned on B channel. 8
- mov (4) acc0.0<1>:w 0x62EA:v //Subtract 6 from 0,4,8,12
- add (4) acc0.0<1>:w acc0<4;4,1>:w 70:uw //add 6 back
- shl (4) r22.0<1>:w acc0<4;4,1>:w 5:uw //Convert to BYTE address.
-
- //OPT: wAVS_SU_SHUFFLE_PTR_0 and udAVS_SU_SHUFFLE_OFF_0 are sub-regs of same GRF. -rT
-
- //SU LAYOUT:(VYUAVYUA)
- //V = 0, Y = 2, U = 4, A = 6
- mov (4) acc0.0<1>:w 0x6420:v
- add (4) acc0.0<1>:w acc0<4;4,1>:w 64:uw
- shl (4) r18.0<1>:w acc0<4;4,1>:w 5:uw { NoDDClr } //Convert to BYTE address.
-
- //OFFSET:
- mov (1) r18.4<1>:ud 0x1000100:ud { NoDDChk }
-
-
diff --git a/src/shaders/post_processing/gen8/Set_Layer_0.g8a b/src/shaders/post_processing/gen8/Set_Layer_0.g8a
deleted file mode 100644
index 8219655..0000000
--- a/src/shaders/post_processing/gen8/Set_Layer_0.g8a
+++ /dev/null
@@ -1,483 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// 18 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-#define MSG_AVS_SAMPLE 0x00000000
-#define MSG_CONVOLE_SAMPLE 0x10000000
-#define MSG_MINMAX_SAMPLE 0x20000000
-#define MSG_MINMAXF_SAMPLE 0x30000000
-#define MSG_ERODE_SAMPLE 0x40000000
-#define MSG_DILATE_SAMPLE 0x50000000
-#define MSG_BOOLCENT_SAMPLE 0x60000000
-#define MSG_CENTROID_SAMPLE 0x70000000
-
-#define MSG_IEF_BYPASS 0x08000000
-#define MSG_IEF_ENABLE 0x00000000
-
-//16x4 or 8x4 or 16x8 or 4x4
-#define MSG_AVS_164 0x00000000
-#define MSG_AVS_84 0x02000000
-#define MSG_AVS_168 0x04000000
-#define MSG_AVS_44 0x06000000
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-
-
-
-
-//Module name: Set_Layer_N.inc
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
-//Used to generate LABELS at compile time.
-
-
-//definitions for Expand Mask
-.declare uwMask_Temp1 Base=r17.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-.declare ubMask_Temp1 Base=r17.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub // 1 GRF
-.declare udMask_Temp1 Base=r17.0 ElementSize=4 Type=ud // 1 GRF
-.declare uwMask_Temp2 Base=r16.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-.declare ubMask_Temp2 Base=r16.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub // 1 GRF
-.declare udMask_Temp2 Base=r16.0 ElementSize=4 Type=ud // 1 GRF
-
-.declare uwMask_Temp3 Base=r15.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-.declare ubMask_Temp3 Base=r15.0 ElementSize=1 SrcRegion=<16;16,1> Type=ub // 1 GRF
-
-.declare udALPHA_MASK_REG Base=r21.0 ElementSize=4 Type=ud // 1 GRF
-.declare udALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//Initialize mask reg to FFFF
-
- mov (16) uwALPHA_MASK_REG(0)<1> 0xFFFF:uw
-
-
-//Fast jump for -
-//LAYER0: we determine whether layer 0 is to be loaded and processed or not based
-// on block mask in module "Set_Layer_0" and store result in f0.1.
-// This flag is then directly used to while loading buf0-3 and colorfill.
-// (So flag f0.1 should not be changed from Set_Layer_0 till Colorfill)
-//
-//LAYER1-7: For all other layers, we compute whether layer is to be loaded and processed
-// based on block mask in module "Set_Layer_1-7" and store result in SKIP_LAYER
-// variable.
-// While Loading buf 4 and 5, we move SKIP_LAYER to f0.0 every time and use it
-// for Loading.
-// For processing though, we move SKIP_LAYER only once to f0.1 in module
-// "Set_Buf0_Buf4" and use f0.1 for deciding whether layer 1-7 (all 4 sub blocks)
-// is to be processed or not.
-// (So flag f0.1) should not be modififed from module "Set_Buf0_Buf4" till module
-// that processess sub-block 3).
-//
-//None of the above fast jumps, apply to CSC modules. We always perform CSC irrespective of mask.
-//
-//Example: (Without going into finer details)
-// Typical Combined kernel:
-//
-// (let var = decision whether to load/process that layer)
-//
-// Set_Layer_0 //f0.1 <- var
-// ..
-// Set_Layer_1 //f0.1 <- var, SKIP_LAYER <- var
-// ..
-// Load buf 0 //use f0.1
-// Load buf 4 //f0.0 <- SKIP_LAYER
-// Load buf 1 //use f0.1
-// Load buf 5 //f0.0 <- SKIP_LAYER
-// Load buf 2 //use f0.1
-// Load buf 3 //use f0.1
-// ..
-// ..
-// Colorfill
-// ..
-// Set_Buf0_Buf4 //f0.1 <- SKIP_LAYER
-// process0-4 //Use f0.1
-// Load buf 4
-// Set_Buf1_Buf5
-// process1-5
-// Load buf 5
-// ..
-// Set_Layer_2 //f0.1 <-var, SKIP_LAYER <- var
-// ..
-// Set_Buf2_Buf4
-// process2-4
-// Load buf 4
-// Set_Buf3_Buf5
-// process3-5
-// Load buf 5
-// ..
-
-
- and (1) r24.2<1>:ub r2.2<0;1,0>:uw 3:uw
-
-
- //Copy all AVS Payload data
- // Setup Message Payload Header for 1st block of Media Sampler 8x8 (16x4 for IVB+)
- //currently the dx & dy is passed by Constant buffer (zero)
- mov (1) r25.0<1>:f r9.6<0;1,0>:f //NLAS dy
- mov (1) r25.6<1>:f r9.5<0;1,0>:f //NLAS dx
- mov (1) r25.4<1>:f r3.0<0;1,0>:f //Step X
- mov (1) r25.5<1>:f r4.0<0;1,0>:f //Step Y
-
-
- mov (1) r25.2<1>:f r6.0<0;1,0>:f //Orig X
- mov (1) r25.3<1>:f r5.0<0;1,0>:f //Orig Y
-
- mov (1) r25.7<1>:ud 0:ud
- add (1) r25.7<1>:ud r25.7<0;1,0>:ud MSG_AVS_SAMPLE + MSG_AVS_164 + MSG_IEF_BYPASS:ud
-
- //NLAS calculations for 2nd half of blocks of Media Sampler 8x8:
- // X(i) = X0 + dx*i + ddx*i*(i-1)/2 ==> X(8) = X0 + dx*8 +ddx*28
- // dx(i)= dx(0) + ddx*i ==> dx(8)= dx + ddx*8
-
- //OPTIMIZATION: fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY - are sub registers of same GRF. Use NODDCLR NODDCHK. -rT
-
- // Calculating X(8)
- mov (1) acc0.2<1>:f r6.0<0;1,0>:f
- mac (1) acc0.2<1>:f r3.0<0;1,0>:f 8.0:f
- mac (1) r23.2<1>:f r9.5<0;1,0>:f 28.0:f { NoDDClr }
-
- // Calculating Y(4)
- mul (1) r23.1<1>:f r4.0<0;1,0>:f 4.0:f { NoDDClr, NoDDChk } //dY*4
-
- // Calculating dx(8)
- mov (1) acc0.4<1>:f r3.0<0;1,0>:f
- mac (1) r23.4<1>:f r9.5<0;1,0>:f 8.0:f { NoDDClr, NoDDChk }
-
- // Binding Index
- mov (1) r23.5<1>:ud 0:ud { NoDDChk }
-
-
-SKIP_LAYER_L0:
- nop
-
-
diff --git a/src/shaders/post_processing/gen8/VP_Setup.g8a b/src/shaders/post_processing/gen8/VP_Setup.g8a
deleted file mode 100644
index 8ef15db..0000000
--- a/src/shaders/post_processing/gen8/VP_Setup.g8a
+++ /dev/null
@@ -1,440 +0,0 @@
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/*
- * Copyright 2000-2011 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * Authors: Zhao Yakui <yakui.zhao@intel.com>
- */
-
-// 326 // Total instruction count
-// 1 // Total kernel count
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// FileName: VP_Setup.asm
-// Author: Vivek Kumar
-// Description: Sets up all parameters for the Video Processing Kernel
-
-
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-
-
-// End of common.inc
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_4 Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-.declare udBUFFER_5 Base=r46.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwBUFFER_0 Base=r64.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_1 Base=r80.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_2 Base=r96.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_3 Base=r112.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_4 Base=r28.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-.declare uwBUFFER_5 Base=r46.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare ubBUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4BUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_4 Base=r28.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-.declare ub4BUFFER_5 Base=r46.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
-//Setup pointer to the inline parameter
-
-// Copy MSG HDR
- mov (8) r27.0<1>:ud r0.0<8;8,1>:ud // Initialize message payload header with R0
-
-// Only one layer is enough
-
-//temp; remove it once unread msg warnings are resolved -vK
-mov (8) r25<1>:ud r0.0<8;8,1>:ud
-mov (8) r26<1>:ud r0.0<8;8,1>:ud
-
-// Calculate StepX for all layers and overwrite it on the ratio
- mul (8) r3.0<1>:f r3.0<8;8,1>:f r9.4<0;1,0>:f //StepX_ratio = StepX / VideoStepX
-
- //Normalised Ratio of Horizontal step size with main video for all layers now becomes
- //Normalised Horizontal step size for all layers
-
-// Calculate block origin for all layers and overwrite it on the frame origin
- mov (2) r10.5<1>:f r9.0<2;2,1>:w //Convert origin from word to float
-
- cmp.e.f0.0 (1) null<1>:d r2.26<0;1,0>:ub 1:uw
-
-
- shr (1) r17.0<1>:uw r2.2<0;1,0>:uw 0:uw
- and (1) r17.0<1>:uw r17.0<0;1,0>:uw 3:uw
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 1:uw
- (f0.1) jmpi (1) ROTATE_90_L0
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 2:uw
- (f0.1) jmpi (1) ROTATE_180_L0
- cmp.e.f0.1 (1) null<1>:w r17.0<0;1,0>:uw 3:uw
- (f0.1) jmpi (1) ROTATE_270_L0
-
- // rotate 0 degree
-ROTATE_0_L0:
- (-f0.0)mov (1) acc0.0<1>:f r6.0<0;1,0>:f
- (-f0.0)mac (1) r6.0<1>:f r3.0<0;1,0>:f r10.5<0;1,0>:f
-
- mov (1) acc0.0<1>:f r5.0<0;1,0>:f
- mac (1) r5.0<1>:f r4.0<0;1,0>:f r10.6<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L0
-
- // rotate 90 degree
-ROTATE_90_L0:
- (-f0.0)mov (1) acc0.0<1>:f r6.0<0;1,0>:f
- (-f0.0)mac (1) r6.0<1>:f r3.0<0;1,0>:f r10.6<0;1,0>:f
-
- mov (1) r16.0<1>:f r2.0<0;1,0>:uw
- add (1) r17.0<1>:f -r10.5<0;1,0>:f r16.0<0;1,0>:f
- add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
-
- mov (1) acc0.0<1>:f r5.0<0;1,0>:f
- mac (1) r5.0<1>:f r4.0<0;1,0>:f r17.0<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L0
-
- // rotate 180 degree
-ROTATE_180_L0:
- (-f0.0)mov (1) r16.0<1>:f r2.0<0;1,0>:uw
- (-f0.0)add (1) r17.0<1>:f -r10.5<0;1,0>:f r16.0<0;1,0>:f
- (-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- (-f0.0)mov (1) acc0.0<1>:f r6.0<0;1,0>:f
- (-f0.0)mac (1) r6.0<1>:f r3.0<0;1,0>:f r17.0<0;1,0>:f
-
- mov (1) r16.0<1>:f r2.1<0;1,0>:uw
- add (1) r17.0<1>:f -r10.6<0;1,0>:f r16.0<0;1,0>:f
- add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- mov (1) acc0.0<1>:f r5.0<0;1,0>:f
- mac (1) r5.0<1>:f r4.0<0;1,0>:f r17.0<0;1,0>:f
- jmpi (1) END_SRC_BLOCK_ORIG_COMP_L0
-
- // rotate 270 degree
-ROTATE_270_L0:
- (-f0.0)mov (1) r16.0<1>:f r2.1<0;1,0>:uw
- (-f0.0)add (1) r17.0<1>:f -r10.6<0;1,0>:f r16.0<0;1,0>:f
- (-f0.0)add (1) r17.0<1>:f r17.0<0;1,0>:f -16.0:f
- (-f0.0)mov (1) acc0.0<1>:f r6.0<0;1,0>:f
- (-f0.0)mac (1) r6.0<1>:f r3.0<0;1,0>:f r17.0<0;1,0>:f
-
- mov (1) acc0.0<1>:f r5.0<0;1,0>:f
- mac (1) r5.0<1>:f r4.0<0;1,0>:f r10.5<0;1,0>:f
-
-END_SRC_BLOCK_ORIG_COMP_L0:
- nop
diff --git a/src/shaders/post_processing/gen8/YUV_to_RGB.g8a b/src/shaders/post_processing/gen8/YUV_to_RGB.g8a
deleted file mode 100644
index e1994f2..0000000
--- a/src/shaders/post_processing/gen8/YUV_to_RGB.g8a
+++ /dev/null
@@ -1,996 +0,0 @@
-/*
- * Copyright 2000-2013 Intel Corporation All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- */
-
-
-
-// Module name: common.inc
-//
-// Common header file for all Video-Processing kernels
-//
-
-.default_execution_size (16)
-.default_register_type :ub
-
-.reg_count_total 128
-.reg_count_payload 7
-
-//========== Common constants ==========
-
-
-//========== Macros ==========
-
-
-//Fast Jump, For more details see "Set_Layer_N.asm"
-
-
-//========== Defines ====================
-
-//========== Static Parameters (Common To All) ==========
-//r1
-
-
-//r2
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-//Color Pipe (IECP) parameters
-
-
-//ByteCopy
-
-
-//r4
-
- // e.g. byte0 byte1 byte2
- // YUYV 0 1 3
- // YVYU 0 3 1
-
-
-//========== Inline parameters (Common To All) ===========
-
-
-//============== Binding Index Table===========
-//Common between DNDI and DNUV
-
-
-//================= Common Message Descriptor =====
-// Message descriptor for thread spawning
-// Message Descriptors
-// = 000 0001 (min message len 1 ) 0,0000 (resp len 0 -add later)
-// 0000,0000,0000
-// 0001(Spawn a root thread),0001 (Root thread spawn thread)
-// = 0x02000011
-// Thread Spawner Message Descriptor
-
-
-// Message descriptor for atomic operation add
-// Message Descriptors
-// = 000 0110 (min message len 6 ) 0,0000 (resp len 0 -add later)
-// 1(header present)001,10(typed atomic operation)0(return enabled)0(slot group, low 8 bits),0111 (AOP_Add)
-// 0000,0000 (Binding table index, added later)
-// = 0x02000011
-
-// Atomic Operation Add Message Descriptor
-
-
-// Message descriptor for dataport media write
- // Message Descriptors
- // = 000 0001 (min message len 1 - add later) 00000 (resp len 0)
- // 1 (header present 1) 0 1010 (media block write) 000000
- // 00000000 (binding table index - set later)
- // = 0x020A8000
-
-
-// Message Length defines
-
-
-// Response Length defines
-
-
-// Block Width and Height Size defines
-
-
-// Extended Message Descriptors
-
-
-// Common message descriptors:
-
-
-//===================== Math Function Control ===================================
-
-
-//============ Message Registers ===============
- // buf4 starts from r28
-
-
-//#define mMSGHDR_EOT r43 // Dummy Message Register for EOT
-
-
-.declare mubMSGPAYLOAD Base=r30 ElementSize=1 SrcRegion=<16;16,1> Type=ub
-.declare muwMSGPAYLOAD Base=r30 ElementSize=2 SrcRegion=<16;16,1> Type=uw
-.declare mudMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=ud
-.declare mfMSGPAYLOAD Base=r30 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-//=================== End of thread instruction ===========================
-
-
-//=====================Pointers Used=====================================
-
-
-//=======================================================================
-
-
-//r11-r17
-// Define temp space for any usages
-
-
-// Common Buffers
-
-
-// temp space for rotation
-
-.declare fROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare udROBUF Base=r11.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=ud
-
-.declare uwROBUF Base=r11.0 ElementSize=2 SrcRegion=<16;16,1> DstRegion=<1> Type=uw
-
-.declare ubROBUF Base=r11.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-.declare ub4ROBUF Base=r11.0 ElementSize=1 SrcRegion=<32;8,4> DstRegion=<4> Type=ub
-
-
-// End of common.inc
-
-
-// Module name: YUV_to_RGB.asm
-//
-// Convert YUV to RGB, handle it by 16x4 block
-//
-
-
-// Description: Includes all definitions explicit to Fast Composite.
-
-
-//========== GRF partition ==========
- // r0 header : r0 (1 GRF)
- // Static parameters : r1 - r6 (6 GRFS)
- // Inline parameters : r7 - r8 (2 GRFs)
- // MSGSRC : r27 (1 GRF)
-//===================================
-
-//Interface:
-//========== Static Parameters (Explicit To Fast Composite) ==========
-//r1
-//CSC Set 0
-
-
-.declare udCSC_CURBE Base=r1.0 ElementSize=4 Type=ud
-
-//Constant alpha
-
-
-//r2
-
-
-// Gen7 AVS WA
-
-
-// WiDi Definitions
-
-
-//Colorfill
-
-
- // 0: 0-degree, 1: 90, 2: 180, 3: 270-degree, clockwise.
-
-.declare ubCOLOR_PIXEL_VAL Base=r2.20 ElementSize=1 SrcRegion=<0;1,0> DstRegion=<1> Type=ub
-
-//r3
-//Normalised Ratio of Horizontal step size with main video for all layers
-
-
- //Normalised Ratio of Horizontal step size with main video for all layers becomes
- //Normalised Horizontal step size for all layers in VP_Setup.asm
-
-
-//r4
-//Normalised Vertical step size for all layers
-
-
-//r5
-//Normalised Vertical Frame Origin for all layers
-
-
-//r6
-//Normalised Horizontal Frame Origin for all layers
-
-
-//========== Inline Parameters (Explicit To Fast Composite) ==========
-
-
-//Main video Step X
-
-
-//====================== Binding table (Explicit To Fast Composite)=========================================
-
-
-//Used by Interlaced Scaling Kernels
-
-
-//========== Sampler State Table Index (Explicit To Fast Composite)==========
-//Sampler Index for AVS/IEF messages
-
-
-//Sampler Index for SIMD16 sampler messages
-
-
-//=============================================================================
-
-.declare fBUFFER_0 Base=r64.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_1 Base=r80.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_2 Base=r96.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-.declare fBUFFER_3 Base=r112.0 ElementSize=4 SrcRegion=<8;8,1> DstRegion=<1> Type=f
-
-.declare bBUFFER_0 Base=r64.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare bBUFFER_1 Base=r80.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare bBUFFER_2 Base=r96.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-.declare bBUFFER_3 Base=r112.0 ElementSize=1 SrcRegion=<16;16,1> DstRegion=<1> Type=ub
-
-//Pointer to mask reg
-
-
-//r18
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-.declare udCSC_COEFF_0 Base=r18.0 ElementSize=4 Type=ud // 1 GRF
-
-//r19
-
-
-.declare udCSC_COEFF_1 Base=r19.0 ElementSize=4 Type=ud // 1 GRF
-
-
-//r20
-
-.declare uwALPHA_MASK_REG_TEMP Base=r20.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r21
-
-.declare uwALPHA_MASK_REG Base=r21.0 ElementSize=2 SrcRegion=<16;16,1> Type=uw // 1 GRF
-
-//r22
-
-
-//Always keep Cannel Pointers and Offsets in same GRF, so that we can use
-// NODDCLR, NODDCHK flags. -rT
-
-
-//Keep fORIGIN_X_NLAS, fY_OFFSET_2ND_BLOCK, fSTEP_X_NLAS, pMSGDSC_COPY, ubCONST_ALPHA_COPY as
-//sub registers of same GRF to enable using NODDCLR NODDCHK. -rT
-
-//r23
-
-
-//Lumakey
-
-
-//r24
-
-
-//r25
-
-
-//r26
-
-
-//defines to generate LABELS during compile time.
-
-
-//Msg payload buffers; upto 4 full-size messages can be written
-
-//Unnecessary to use the MSGPayLoad, So it is temporiarily used for conversion of YUV->RGB
-
-.declare fBUFFER_R Base=r28.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-.declare fBUFFER_G Base=r30.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-.declare fBUFFER_B Base=r32.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-.declare fBUFFER_Y Base=r36.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-.declare fBUFFER_U Base=r38.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-.declare fBUFFER_V Base=r40.0 ElementSize=4 SrcRegion=<8;8,1> Type=f
-
-
-.declare wTempR Base=r42.0 ElementSize=2 Type=w
-.declare wTempG Base=r44.0 ElementSize=2 Type=w
-.declare wTempB Base=r46.0 ElementSize=2 Type=w
-
-.declare ubTempR Base=r42.0 ElementSize=1 Type=ub
-.declare ubTempG Base=r44.0 ElementSize=1 Type=ub
-.declare ubTempB Base=r46.0 ElementSize=1 Type=ub
-
- // the r17 register (nTEMP0) is originally defined from "Common.inc"
- // instead of re-defining a nTEMP0 here, we use "SAVE_RGB" suffix for its naming
-
- .declare wTemp0 Base=r17.0 ElementSize=2 Type=uw
-
-
-//_SAVE_INC_
- // NTSC standard
- // R = Clamp ( 1.164(Y-16/255) + 1.596(Cr-128/255))
- // G = Clamp ( 1.164(Y-16/255) - 0.813(Cr-128/255) - 0.392(Cb-128/255))
- // B = Clamp ( 1.164(Y-16/255) + 2.017(Cb-128/255))
- // ITU-R conversion, Now we are using ITU-R conversion
- // R = clip( Y + 1.402*(Cr-128)) // ITU-R
- // G = clip( Y - 0.344*(Cb-128) - 0.714*(Cr-128))
- // B = clip( Y + 1.772*(Cb-128))
-
- // At the save module we have all 8 address sub-registers available.
- // So we will use PING-PONG type of scheme to save the data using
- // pointers pBUF_CHNL_TOP_8x4 and pBUF_CHNL_BOT_8x4. This will help
- // reduce dependency. - rT
-
- //wBUFF_CHNL_PTR points to either buffer 0 or buffer 4.
- //Add appropriate offsets to get pointers for all buffers (1,2,3 or 5).
- //Offsets are zero for buffer 0 and buffer 4.
- //Y/U/V is also stored as R/G/B for the internal purpose
-//for BUFFER_0
- mov (4) a0.0<1>:uw r22.0<4;4,1>:uw
-//the first line in the block 0
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 1]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 17]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 1]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 17]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 1]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 17]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
-
- mov (16) r[a0.1,1]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,1]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,1]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the second line in the block 0
-
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 33]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 49]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 33]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 49]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 33]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 49]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,33]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,33]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,33]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the third line in the block 0
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 65]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 81]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 65]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 81]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 65]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 81]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,65]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,65]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,65]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the fourth line in the block 0
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 97]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 113]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 97]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 113]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 97]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 113]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,97]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,97]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,97]<2>:ub ubTempB(0, 0)<32;8,4>
-
-
-//for BUFFER_1
- add (4) a0.0<1>:uw r22.0<4;4,1>:uw 512:uw
-//the first line in the block 1
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 1]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 17]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 1]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 17]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 1]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 17]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,1]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,1]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,1]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the second line in the block 1
-
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 33]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 49]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 33]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 49]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 33]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 49]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,33]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,33]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,33]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the third line in the block 1
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 65]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 81]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 65]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 81]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 65]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 81]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,65]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,65]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,65]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the fourth line in the block 1
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 97]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 113]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 97]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 113]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 97]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 113]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,97]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,97]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,97]<2>:ub ubTempB(0, 0)<32;8,4>
-
-
-//for BUFFER_2
- add (4) a0.0<1>:uw r22.0<4;4,1>:uw 1024:uw
-//the first line in the block 2
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 1]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 17]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 1]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 17]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 1]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 17]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,1]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,1]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,1]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the second line in the block 2
-
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 33]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 49]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 33]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 49]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 33]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 49]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,33]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,33]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,33]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the third line in the block 2
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 65]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 81]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 65]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 81]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 65]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 81]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,65]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,65]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,65]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the fourth line in the block 2
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 97]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 113]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 97]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 113]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 97]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 113]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,97]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,97]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,97]<2>:ub ubTempB(0, 0)<32;8,4>
-
-
-//for BUFFER_3
- add (4) a0.0<1>:uw r22.0<4;4,1>:uw 1536:uw
-//the first line in the block 3
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 1]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 17]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 1]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 17]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 1]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 17]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,1]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,1]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,1]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the second line in the block 3
-
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 33]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 49]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 33]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 49]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 33]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 49]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,33]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,33]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,33]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the third line in the block 3
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 65]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 81]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 65]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 81]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 65]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 81]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,65]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,65]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,65]<2>:ub ubTempB(0, 0)<32;8,4>
-
-//the fourth line in the block 3
- mov (8) fBUFFER_Y(0, 0)<1> r[a0.1, 97]<16;8,2>:ub
- mov (8) fBUFFER_Y(1, 0)<1> r[a0.1, 113]<16;8,2>:ub
- mov (8) fBUFFER_U(0, 0)<1> r[a0.2, 97]<16;8,2>:ub
- mov (8) fBUFFER_U(1, 0)<1> r[a0.2, 113]<16;8,2>:ub
- mov (8) fBUFFER_V(0, 0)<1> r[a0.0, 97]<16;8,2>:ub
- mov (8) fBUFFER_V(1, 0)<1> r[a0.0, 113]<16;8,2>:ub
-
- mul (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> 0.0039216f
- mul (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> 0.0039216f
-
- add (16) fBUFFER_Y(0, 0)<1> fBUFFER_Y(0, 0)<1> r7.3<0;1,0>:f
- add (16) fBUFFER_U(0, 0)<1> fBUFFER_U(0, 0)<1> r7.7<0;1,0>:f
- add (16) fBUFFER_V(0, 0)<1> fBUFFER_V(0, 0)<1> r8.3<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.1<0;1,0>:f
- mac.sat (16) fBUFFER_R(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.2<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r7.4<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r7.5<0;1,0>:f
- mac.sat (16) fBUFFER_G(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r7.6<0;1,0>:f
-
- mul (16) acc0.0<1>:f fBUFFER_Y(0, 0)<8;8,1> r8.0<0;1,0>:f
- mac (16) acc0.0<1>:f fBUFFER_U(0, 0)<8;8,1> r8.1<0;1,0>:f
- mac.sat (16) fBUFFER_B(0, 0)<1> fBUFFER_V(0, 0)<8;8,1> r8.2<0;1,0>:f
-
- mul (16) fBUFFER_R(0, 0)<1> fBUFFER_R(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_G(0, 0)<1> fBUFFER_G(0, 0)<8;8,1> 255.0f
- mul (16) fBUFFER_B(0, 0)<1> fBUFFER_B(0, 0)<8;8,1> 255.0f
-
- mov (16) wTempR(0, 0)<2> fBUFFER_R(0, 0)<8;8,1>
- mov (16) wTempG(0, 0)<2> fBUFFER_G(0, 0)<8;8,1>
- mov (16) wTempB(0, 0)<2> fBUFFER_B(0, 0)<8;8,1>
- mov (16) r[a0.1,97]<2>:ub ubTempR(0, 0)<32;8,4>
- mov (16) r[a0.2,97]<2>:ub ubTempG(0, 0)<32;8,4>
- mov (16) r[a0.0,97]<2>:ub ubTempB(0, 0)<32;8,4>
-
diff --git a/src/shaders/post_processing/gen8/conv_nv12.g8b b/src/shaders/post_processing/gen8/conv_nv12.g8b
deleted file mode 100644
index b62dff3..0000000
--- a/src/shaders/post_processing/gen8/conv_nv12.g8b
+++ /dev/null
@@ -1,362 +0,0 @@
-{ 0x00600001, 0x20602648, 0x00000000, 0x76543210 },
-{ 0x00000005, 0x2700124c, 0x16000004, 0x01ff01ff },
-{ 0x00600001, 0x27401208, 0x008d0060, 0x00000000 },
-{ 0x00000005, 0x2720124c, 0x16000006, 0x01ff01ff },
-{ 0x00000041, 0x20a01208, 0x16000700, 0x00100010 },
-{ 0x00600040, 0x27600208, 0x168d0740, 0x00080008 },
-{ 0x00000041, 0x20801228, 0x16000720, 0x00100010 },
-{ 0x00000040, 0x27800228, 0x02000040, 0x000000a0 },
-{ 0x00800040, 0x27400208, 0x028d0740, 0x000000a0 },
-{ 0x00000041, 0x21003ae8, 0x3e000048, 0x3f000000 },
-{ 0x00000041, 0x21603ae8, 0x3e00004c, 0x3f000000 },
-{ 0x00800001, 0x212002e8, 0x00000080, 0x00000000 },
-{ 0x00800001, 0x20c002e8, 0x008d0740, 0x00000000 },
-{ 0x0080015b, 0x401e0000, 0xc020b001, 0x02472004 },
-{ 0x0080015b, 0x3e1e0000, 0x80208001, 0x01872004 },
-{ 0x00800040, 0x28003ae8, 0x3a8d0800, 0x00000054 },
-{ 0x00800040, 0x27c03ae8, 0x3a8d07c0, 0x00000050 },
-{ 0x00000001, 0x28401e28, 0x00000000, 0x00000000 },
-{ 0x00000001, 0x29600208, 0x0000005c, 0x00000000 },
-{ 0x00000040, 0x27a00228, 0x02000044, 0x00000080 },
-{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
-{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x20c00208, 0x008d0800, 0x00000000 },
-{ 0x00800001, 0x20800208, 0x008d07c0, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x06000058, 0x122c0000 },
-{ 0x00000001, 0x20680608, 0x00000000, 0x0000e000 },
-{ 0x02800031, 0x21803a68, 0x008d0060, 0x00000200 },
-{ 0x00000001, 0x21c01ee8, 0x00000000, 0x00ff00ff },
-{ 0x00800040, 0x28003ae8, 0x3a8d0800, 0x0000004c },
-{ 0x00800001, 0x23600608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x23201ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x22a00208, 0x008d07c0, 0x00000000 },
-{ 0x00600001, 0x22800208, 0x008d0060, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x06000058, 0x122c0000 },
-{ 0x00800001, 0x22e00208, 0x008d0800, 0x00000000 },
-{ 0x00800040, 0x28003ae8, 0x3a8d0800, 0x0000004c },
-{ 0x00800001, 0x24c00608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x24801ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x24000208, 0x008d07c0, 0x00000000 },
-{ 0x00600001, 0x23e00208, 0x008d0280, 0x00000000 },
-{ 0x00800001, 0x24400208, 0x008d0800, 0x00000000 },
-{ 0x00800040, 0x28003ae8, 0x3a8d0800, 0x0000004c },
-{ 0x00800001, 0x26200608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x25e01ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x25600208, 0x008d07c0, 0x00000000 },
-{ 0x00600001, 0x25400208, 0x008d03e0, 0x00000000 },
-{ 0x00800001, 0x25a00208, 0x008d0800, 0x00000000 },
-{ 0x00600001, 0x2200020c, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x28400a28, 0x1e000840, 0x00010001 },
-{ 0x00000001, 0x2204020c, 0x000007a0, 0x00000000 },
-{ 0x00000001, 0x2200020c, 0x00000780, 0x00000000 },
-{ 0x00000001, 0x2208060c, 0x00000000, 0x0003000f },
-{ 0x05000010, 0x20000a23, 0x1e000840, 0x00040004 },
-{ 0x00800040, 0x28003ae8, 0x3a8d0800, 0x0000004c },
-{ 0x00000040, 0x27a00a28, 0x1e0007a0, 0x00040004 },
-{ 0x00800041, 0x21803ae8, 0x3a8d0180, 0x000001c0 },
-{ 0x00600001, 0x22603a28, 0x008d01a0, 0x00000000 },
-{ 0x00600001, 0x21e03a28, 0x008d0180, 0x00000000 },
-{ 0x02800031, 0x21803a68, 0x008d0280, 0x00000200 },
-{ 0x00600001, 0x22282288, 0x00cf0260, 0x00000000 },
-{ 0x00600001, 0x22202288, 0x00cf01e0, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x06000058, 0x122c0000 },
-{ 0x00800041, 0x21803ae8, 0x3a8d0180, 0x000001c0 },
-{ 0x00600001, 0x23c03a28, 0x008d01a0, 0x00000000 },
-{ 0x00600001, 0x23a03a28, 0x008d0180, 0x00000000 },
-{ 0x02800031, 0x21803a68, 0x008d03e0, 0x00000200 },
-{ 0x00600001, 0x22382288, 0x00cf03c0, 0x00000000 },
-{ 0x00600001, 0x22302288, 0x00cf03a0, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x06000058, 0x122c0000 },
-{ 0x00800041, 0x21803ae8, 0x3a8d0180, 0x000001c0 },
-{ 0x00600001, 0x25203a28, 0x008d01a0, 0x00000000 },
-{ 0x00600001, 0x25003a28, 0x008d0180, 0x00000000 },
-{ 0x02800031, 0x21803a68, 0x008d0540, 0x00000200 },
-{ 0x00600001, 0x22482288, 0x00cf0520, 0x00000000 },
-{ 0x00600001, 0x22402288, 0x00cf0500, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x06000960, 0x060a8000 },
-{ 0x00800041, 0x21803ae8, 0x3a8d0180, 0x000001c0 },
-{ 0x00600001, 0x26803a28, 0x008d01a0, 0x00000000 },
-{ 0x00600001, 0x26603a28, 0x008d0180, 0x00000000 },
-{ 0x00600001, 0x22582288, 0x00cf0680, 0x00000000 },
-{ 0x00600001, 0x22502288, 0x00cf0660, 0x00000000 },
-{ 0x0c600031, 0x20003a04, 0x008d0200, 0x00000200 },
-{ 0x00010020, 0x34000007, 0x0e001400, 0xfffffc00 },
-{ 0x00600001, 0x20602668, 0x00000000, 0x76543210 },
-{ 0x00000041, 0x20a01228, 0x16000720, 0x00100010 },
-{ 0x00600009, 0x27601a08, 0x168d0060, 0x00010001 },
-{ 0x00000041, 0x20801208, 0x16000700, 0x00100010 },
-{ 0x00600001, 0x20c00a08, 0x000000a0, 0x00000000 },
-{ 0x00600001, 0x27400208, 0x008d0760, 0x00000000 },
-{ 0x00600040, 0x20e00208, 0x168d00c0, 0x00020002 },
-{ 0x00800040, 0x27400208, 0x028d0740, 0x00000080 },
-{ 0x00800001, 0x216002e8, 0x008d00c0, 0x00000000 },
-{ 0x00800001, 0x212002e8, 0x008d0740, 0x00000000 },
-{ 0x00000005, 0x21a00208, 0x1600003c, 0x000c000c },
-{ 0x0080015b, 0x401e0000, 0xc0202a01, 0x02c72004 },
-{ 0x0080015b, 0x3e1e0000, 0x80202801, 0x02472004 },
-{ 0x00000040, 0x21000228, 0x02000044, 0x000000a0 },
-{ 0x02000010, 0x20000202, 0x160001a0, 0x000c000c },
-{ 0x00800040, 0x28003ae8, 0x3a8d0800, 0x00000038 },
-{ 0x00800040, 0x27c03ae8, 0x3a8d07c0, 0x00000034 },
-{ 0x00000040, 0x28600208, 0x16000058, 0x00010001 },
-{ 0x00000040, 0x28800208, 0x16000058, 0x00020002 },
-{ 0x00000040, 0x28a00208, 0x1600005c, 0x00010001 },
-{ 0x00000040, 0x28c00208, 0x1600005c, 0x00020002 },
-{ 0x0000000c, 0x27a00a28, 0x1e000100, 0x00010001 },
-{ 0x00010020, 0x34000006, 0x0e001400, 0x00000370 },
-{ 0x00000001, 0x28401e28, 0x00000000, 0x00000000 },
-{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x06000860, 0x124c0000 },
-{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x20c00208, 0x008d0800, 0x00000000 },
-{ 0x00800001, 0x20800208, 0x008d07c0, 0x00000000 },
-{ 0x00000001, 0x20680608, 0x00000000, 0x0000c000 },
-{ 0x02800031, 0x28e03a68, 0x008d0060, 0x00000200 },
-{ 0x00000001, 0x22c03ee8, 0x00000000, 0x40800000 },
-{ 0x00000001, 0x21801ee8, 0x00000000, 0x00ff00ff },
-{ 0x0080015b, 0x401e0000, 0xc02401c8, 0x05800404 },
-{ 0x00800001, 0x23c00608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x23801ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x23000208, 0x008d07c0, 0x00000000 },
-{ 0x00600001, 0x22e00208, 0x008d0060, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x06000860, 0x124c0000 },
-{ 0x00800001, 0x23400208, 0x008d0800, 0x00000000 },
-{ 0x00600001, 0x21c0020c, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x28400a28, 0x1e000840, 0x00010001 },
-{ 0x00000001, 0x21c4020c, 0x000007a0, 0x00000000 },
-{ 0x00000001, 0x21c0020c, 0x00000780, 0x00000000 },
-{ 0x00000001, 0x21c8060c, 0x00000000, 0x0003000f },
-{ 0x05000010, 0x20000a21, 0x1e000840, 0x00020002 },
-{ 0x0080015b, 0x401e0000, 0xc02401c8, 0x05800404 },
-{ 0x00000040, 0x27a00a28, 0x1e0007a0, 0x00040004 },
-{ 0x00800041, 0x29203ae8, 0x3a8d0920, 0x00000180 },
-{ 0x00800041, 0x28e03ae8, 0x3a8d08e0, 0x00000180 },
-{ 0x00600001, 0x22803a28, 0x008d0940, 0x00000000 },
-{ 0x00600001, 0x22403a28, 0x008d0920, 0x00000000 },
-{ 0x00600001, 0x22203a28, 0x008d0900, 0x00000000 },
-{ 0x00600001, 0x21a03a28, 0x008d08e0, 0x00000000 },
-{ 0x02800031, 0x28e03a68, 0x008d02e0, 0x00000200 },
-{ 0x00600001, 0x62a00a88, 0x008d0280, 0x00000000 },
-{ 0x00600001, 0x62600a88, 0x008d0240, 0x00000000 },
-{ 0x00600001, 0x41f02288, 0x00cf0220, 0x00000000 },
-{ 0x00600001, 0x41e02288, 0x00cf01a0, 0x00000000 },
-{ 0x00600001, 0x41f12288, 0x006002a0, 0x00000000 },
-{ 0x00600001, 0x41e12288, 0x00600260, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060008a0, 0x060a8000 },
-{ 0x00800041, 0x29203ae8, 0x3a8d0920, 0x00000180 },
-{ 0x00800041, 0x28e03ae8, 0x3a8d08e0, 0x00000180 },
-{ 0x00600001, 0x24803a28, 0x008d0940, 0x00000000 },
-{ 0x00600001, 0x24403a28, 0x008d0920, 0x00000000 },
-{ 0x00600001, 0x24203a28, 0x008d0900, 0x00000000 },
-{ 0x00600001, 0x24003a28, 0x008d08e0, 0x00000000 },
-{ 0x00600001, 0x64a00a88, 0x008d0480, 0x00000000 },
-{ 0x00600001, 0x64600a88, 0x008d0440, 0x00000000 },
-{ 0x00600001, 0x42102288, 0x00cf0420, 0x00000000 },
-{ 0x00600001, 0x42002288, 0x00cf0400, 0x00000000 },
-{ 0x00600001, 0x42112288, 0x006004a0, 0x00000000 },
-{ 0x00600001, 0x42012288, 0x00600460, 0x00000000 },
-{ 0x0c600031, 0x20003a04, 0x008d01c0, 0x00000200 },
-{ 0x00010020, 0x34000005, 0x0e001400, 0xfffffcb0 },
-{ 0x00000020, 0x34000004, 0x0e001400, 0x00000c60 },
-{ 0x00000005, 0x20600208, 0x1600003c, 0x000c000c },
-{ 0x02000010, 0x20000200, 0x16000060, 0x00040004 },
-{ 0x00010020, 0x34000004, 0x0e001400, 0x00000370 },
-{ 0x00000001, 0x28401e28, 0x00000000, 0x00000000 },
-{ 0x0000000c, 0x27800a28, 0x1e000780, 0x00010001 },
-{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x06000860, 0x124c0000 },
-{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x20c00208, 0x008d0800, 0x00000000 },
-{ 0x00800001, 0x20800208, 0x008d07c0, 0x00000000 },
-{ 0x00000001, 0x20680608, 0x00000000, 0x0000c000 },
-{ 0x02800031, 0x28e03a68, 0x008d0060, 0x00000200 },
-{ 0x00000001, 0x22a03ee8, 0x00000000, 0x40800000 },
-{ 0x00000001, 0x21801ee8, 0x00000000, 0x00ff00ff },
-{ 0x0080015b, 0x401e0000, 0xc02401c8, 0x05400404 },
-{ 0x00800001, 0x23a00608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x23601ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x22e00208, 0x008d07c0, 0x00000000 },
-{ 0x00600001, 0x22c00208, 0x008d0060, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x06000860, 0x124c0000 },
-{ 0x00800001, 0x23200208, 0x008d0800, 0x00000000 },
-{ 0x00600001, 0x21c0020c, 0x008d0000, 0x00000000 },
-{ 0x00000001, 0x21c4020c, 0x000007a0, 0x00000000 },
-{ 0x00000001, 0x21c0020c, 0x00000780, 0x00000000 },
-{ 0x00000001, 0x21c8060c, 0x00000000, 0x00030007 },
-{ 0x00000040, 0x28400a28, 0x1e000840, 0x00010001 },
-{ 0x00600001, 0x2240020c, 0x008d01c0, 0x00000000 },
-{ 0x05000010, 0x20000a23, 0x1e000840, 0x00020002 },
-{ 0x0080015b, 0x401e0000, 0xc02401c8, 0x05400404 },
-{ 0x00000040, 0x27a00a28, 0x1e0007a0, 0x00040004 },
-{ 0x00800041, 0x29203ae8, 0x3a8d0920, 0x00000180 },
-{ 0x00800041, 0x28e03ae8, 0x3a8d08e0, 0x00000180 },
-{ 0x00600001, 0x22803a28, 0x008d0940, 0x00000000 },
-{ 0x00600001, 0x22203a28, 0x008d0920, 0x00000000 },
-{ 0x00600001, 0x22003a28, 0x008d0900, 0x00000000 },
-{ 0x00600001, 0x21a03a28, 0x008d08e0, 0x00000000 },
-{ 0x02800031, 0x28e03a68, 0x008d02c0, 0x00000200 },
-{ 0x00600001, 0x22682288, 0x00cf0280, 0x00000000 },
-{ 0x00600001, 0x21e82288, 0x00cf0200, 0x00000000 },
-{ 0x00600001, 0x21e02288, 0x00cf01a0, 0x00000000 },
-{ 0x00600001, 0x22602288, 0x00cf0220, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060008a0, 0x040a8000 },
-{ 0x00800041, 0x28e03ae8, 0x3a8d08e0, 0x00000180 },
-{ 0x00600001, 0x24003a28, 0x008d0900, 0x00000000 },
-{ 0x00600001, 0x23e03a28, 0x008d08e0, 0x00000000 },
-{ 0x00600001, 0x21f82288, 0x00cf0400, 0x00000000 },
-{ 0x00600001, 0x21f02288, 0x00cf03e0, 0x00000000 },
-{ 0x0c600031, 0x20003a04, 0x008d01c0, 0x00000200 },
-{ 0x00800041, 0x29203ae8, 0x3a8d0920, 0x00000180 },
-{ 0x00600001, 0x24403a28, 0x008d0940, 0x00000000 },
-{ 0x00600001, 0x24203a28, 0x008d0920, 0x00000000 },
-{ 0x00600001, 0x22782288, 0x00cf0440, 0x00000000 },
-{ 0x00600001, 0x22702288, 0x00cf0420, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060008c0, 0x040a8000 },
-{ 0x0c600031, 0x20003a04, 0x008d0240, 0x00000200 },
-{ 0x00010020, 0x34000007, 0x0e001400, 0xfffffcc0 },
-{ 0x00000020, 0x34000004, 0x0e001400, 0x000008c0 },
-{ 0x00000005, 0x20600208, 0x1600003c, 0x000c000c },
-{ 0x02000010, 0x20000202, 0x16000060, 0x00080008 },
-{ 0x00010020, 0x34000006, 0x0e001400, 0x00000450 },
-{ 0x00000001, 0x28401e28, 0x00000000, 0x00000000 },
-{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x06000860, 0x122c0000 },
-{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x20c00208, 0x008d0800, 0x00000000 },
-{ 0x00800001, 0x20800208, 0x008d07c0, 0x00000000 },
-{ 0x00000001, 0x20680608, 0x00000000, 0x0000e000 },
-{ 0x02800031, 0x28e03a68, 0x008d0060, 0x00000200 },
-{ 0x00800001, 0x22600608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x22201ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x21e00208, 0x008d0800, 0x00000000 },
-{ 0x00800001, 0x21a00208, 0x008d07c0, 0x00000000 },
-{ 0x00600001, 0x21800208, 0x008d0060, 0x00000000 },
-{ 0x00600001, 0x24000208, 0x008d0180, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x06000880, 0x122c0000 },
-{ 0x00600001, 0x25200208, 0x008d0400, 0x00000000 },
-{ 0x02800031, 0x29203a68, 0x008d0180, 0x00000200 },
-{ 0x00000001, 0x23e03ee8, 0x00000000, 0x40800000 },
-{ 0x00000001, 0x22a01ee8, 0x00000000, 0x00ff00ff },
-{ 0x0080015b, 0x401e0000, 0xc02401c8, 0x07c00404 },
-{ 0x00800001, 0x24e00608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x24a01ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x24200208, 0x008d07c0, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x06000860, 0x122c0000 },
-{ 0x00800001, 0x24600208, 0x008d0800, 0x00000000 },
-{ 0x00800001, 0x26000608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x25c01ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x25400208, 0x008d07c0, 0x00000000 },
-{ 0x00800001, 0x25800208, 0x008d0800, 0x00000000 },
-{ 0x00600001, 0x22e0020c, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x28400a28, 0x1e000840, 0x00010001 },
-{ 0x00000001, 0x22e4020c, 0x000007a0, 0x00000000 },
-{ 0x00000001, 0x22e0020c, 0x00000780, 0x00000000 },
-{ 0x00000001, 0x22e8060c, 0x00000000, 0x0003000f },
-{ 0x05000010, 0x20000a21, 0x1e000840, 0x00020002 },
-{ 0x0080015b, 0x401e0000, 0xc02401c8, 0x07c00404 },
-{ 0x00000040, 0x27a00a28, 0x1e0007a0, 0x00040004 },
-{ 0x00800041, 0x28e03ae8, 0x3a8d08e0, 0x000002a0 },
-{ 0x00600001, 0x23403a28, 0x008d0900, 0x00000000 },
-{ 0x00600001, 0x22c03a28, 0x008d08e0, 0x00000000 },
-{ 0x02800031, 0x28e03a68, 0x008d0400, 0x00000200 },
-{ 0x00600001, 0x43102288, 0x00cf0340, 0x00000000 },
-{ 0x00600001, 0x43002288, 0x00cf02c0, 0x00000000 },
-{ 0x00800041, 0x29203ae8, 0x3a8d0920, 0x000002a0 },
-{ 0x00000040, 0x22000204, 0x06000880, 0x122c0000 },
-{ 0x00600001, 0x23a03a28, 0x008d0940, 0x00000000 },
-{ 0x00600001, 0x23603a28, 0x008d0920, 0x00000000 },
-{ 0x02800031, 0x29203a68, 0x008d0520, 0x00000200 },
-{ 0x00600001, 0x63c00a88, 0x008d03a0, 0x00000000 },
-{ 0x00600001, 0x63800a88, 0x008d0360, 0x00000000 },
-{ 0x00600001, 0x43112288, 0x006003c0, 0x00000000 },
-{ 0x00600001, 0x43012288, 0x00600380, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060008a0, 0x060a8000 },
-{ 0x00800041, 0x28e03ae8, 0x3a8d08e0, 0x000002a0 },
-{ 0x00600001, 0x26603a28, 0x008d0900, 0x00000000 },
-{ 0x00600001, 0x26403a28, 0x008d08e0, 0x00000000 },
-{ 0x00600001, 0x43302288, 0x00cf0660, 0x00000000 },
-{ 0x00600001, 0x43202288, 0x00cf0640, 0x00000000 },
-{ 0x00800041, 0x29203ae8, 0x3a8d0920, 0x000002a0 },
-{ 0x00600001, 0x26c03a28, 0x008d0940, 0x00000000 },
-{ 0x00600001, 0x26803a28, 0x008d0920, 0x00000000 },
-{ 0x00600001, 0x66e00a88, 0x008d06c0, 0x00000000 },
-{ 0x00600001, 0x66a00a88, 0x008d0680, 0x00000000 },
-{ 0x00600001, 0x43312288, 0x006006e0, 0x00000000 },
-{ 0x00600001, 0x43212288, 0x006006a0, 0x00000000 },
-{ 0x0c600031, 0x20003a04, 0x008d02e0, 0x00000200 },
-{ 0x00010020, 0x34000005, 0x0e001400, 0xfffffbd0 },
-{ 0x00000020, 0x34000004, 0x0e001400, 0x00000440 },
-{ 0x00000001, 0x28401e28, 0x00000000, 0x00000000 },
-{ 0x0000000c, 0x27800a28, 0x1e000780, 0x00010001 },
-{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x06000860, 0x122c0000 },
-{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x20c00208, 0x008d0800, 0x00000000 },
-{ 0x00800001, 0x20800208, 0x008d07c0, 0x00000000 },
-{ 0x00000001, 0x20680608, 0x00000000, 0x0000e000 },
-{ 0x02800031, 0x28e03a68, 0x008d0060, 0x00000200 },
-{ 0x00800001, 0x22600608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x22201ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x21e00208, 0x008d0800, 0x00000000 },
-{ 0x00800001, 0x21a00208, 0x008d07c0, 0x00000000 },
-{ 0x00600001, 0x21800208, 0x008d0060, 0x00000000 },
-{ 0x00600001, 0x23e00208, 0x008d0180, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x06000880, 0x122c0000 },
-{ 0x00600001, 0x25000208, 0x008d03e0, 0x00000000 },
-{ 0x02800031, 0x29203a68, 0x008d0180, 0x00000200 },
-{ 0x00000001, 0x23c03ee8, 0x00000000, 0x40800000 },
-{ 0x00000001, 0x22a01ee8, 0x00000000, 0x00ff00ff },
-{ 0x0080015b, 0x401e0000, 0xc02401c8, 0x07800404 },
-{ 0x00800001, 0x24c00608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x24801ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x24000208, 0x008d07c0, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x06000860, 0x122c0000 },
-{ 0x00800001, 0x24400208, 0x008d0800, 0x00000000 },
-{ 0x00800001, 0x25e00608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x25a01ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x25200208, 0x008d07c0, 0x00000000 },
-{ 0x00800001, 0x25600208, 0x008d0800, 0x00000000 },
-{ 0x00600001, 0x22e0020c, 0x008d0000, 0x00000000 },
-{ 0x00000001, 0x22e4020c, 0x000007a0, 0x00000000 },
-{ 0x00000001, 0x22e0020c, 0x00000780, 0x00000000 },
-{ 0x00000001, 0x22e8060c, 0x00000000, 0x00030007 },
-{ 0x00000040, 0x28400a28, 0x1e000840, 0x00010001 },
-{ 0x00600001, 0x2360020c, 0x008d02e0, 0x00000000 },
-{ 0x05000010, 0x20000a20, 0x1e000840, 0x00020002 },
-{ 0x0080015b, 0x401e0000, 0xc02401c8, 0x07800404 },
-{ 0x00000040, 0x27a00a28, 0x1e0007a0, 0x00040004 },
-{ 0x00800041, 0x28e03ae8, 0x3a8d08e0, 0x000002a0 },
-{ 0x00600001, 0x23203a28, 0x008d0900, 0x00000000 },
-{ 0x00600001, 0x22c03a28, 0x008d08e0, 0x00000000 },
-{ 0x02800031, 0x28e03a68, 0x008d03e0, 0x00000200 },
-{ 0x00600001, 0x23082288, 0x00cf0320, 0x00000000 },
-{ 0x00600001, 0x23002288, 0x00cf02c0, 0x00000000 },
-{ 0x00800041, 0x29203ae8, 0x3a8d0920, 0x000002a0 },
-{ 0x00000040, 0x22000204, 0x06000880, 0x122c0000 },
-{ 0x00600001, 0x23a03a28, 0x008d0940, 0x00000000 },
-{ 0x00600001, 0x23403a28, 0x008d0920, 0x00000000 },
-{ 0x02800031, 0x29203a68, 0x008d0500, 0x00000200 },
-{ 0x00600001, 0x23882288, 0x00cf03a0, 0x00000000 },
-{ 0x00600001, 0x23802288, 0x00cf0340, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060008a0, 0x040a8000 },
-{ 0x00800041, 0x28e03ae8, 0x3a8d08e0, 0x000002a0 },
-{ 0x00600001, 0x26403a28, 0x008d0900, 0x00000000 },
-{ 0x00600001, 0x26203a28, 0x008d08e0, 0x00000000 },
-{ 0x00600001, 0x23182288, 0x00cf0640, 0x00000000 },
-{ 0x00600001, 0x23102288, 0x00cf0620, 0x00000000 },
-{ 0x0c600031, 0x20003a04, 0x008d02e0, 0x00000200 },
-{ 0x00800041, 0x29203ae8, 0x3a8d0920, 0x000002a0 },
-{ 0x00600001, 0x26803a28, 0x008d0940, 0x00000000 },
-{ 0x00600001, 0x26603a28, 0x008d0920, 0x00000000 },
-{ 0x00600001, 0x23982288, 0x00cf0680, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060008c0, 0x040a8000 },
-{ 0x00600001, 0x23902288, 0x00cf0660, 0x00000000 },
-{ 0x0c600031, 0x20003a04, 0x008d0360, 0x00000200 },
-{ 0x00010020, 0x34000004, 0x0e001400, 0xfffffbe0 },
-{ 0x00600001, 0x2fe0020c, 0x008d0000, 0x00000000 },
-{ 0x07000031, 0x20003a00, 0x06000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen8/pa_to_pa.asm b/src/shaders/post_processing/gen8/pa_to_pa.asm
deleted file mode 100644
index 44e3b35..0000000
--- a/src/shaders/post_processing/gen8/pa_to_pa.asm
+++ /dev/null
@@ -1,17 +0,0 @@
-// Module name: AVS
-.kernel YUY2_TO_NV12
-.code
-
-#include "VP_Setup.g8a"
-#include "Set_Layer_0.g8a"
-#include "Set_AVS_Buf_0123_VYUA.g8a"
-#include "PA_AVS_Buf_0.g8a"
-#include "PA_AVS_Buf_1.g8a"
-#include "PA_AVS_Buf_2.g8a"
-#include "PA_AVS_Buf_3.g8a"
-#include "Save_AVS_PA.g8a"
-#include "EOT.g8a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen8/pa_to_pa.g8b b/src/shaders/post_processing/gen8/pa_to_pa.g8b
deleted file mode 100644
index 5a92f0a..0000000
--- a/src/shaders/post_processing/gen8/pa_to_pa.g8b
+++ /dev/null
@@ -1,279 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x000062ea },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006420 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22082260, 0x1669005c, 0x03a003a0 },
- { 0x00000209, 0x23601a28, 0x1e000120, 0x00010001 },
- { 0x00000601, 0x23641a28, 0x00000122, 0x00000000 },
- { 0x00000401, 0x23680608, 0x00000000, 0x0001001f },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x02000200 },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x06000600 },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x08000800 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x00000002 },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x02000200 },
- { 0x00000040, 0x23840a28, 0x0e000364, 0x00000004 },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x00000006 },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x00000040, 0x23840a28, 0x0e000364, 0x00000008 },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x0000000a },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x06000600 },
- { 0x00000040, 0x23840a28, 0x0e000364, 0x0000000c },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x0000000e },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x0e000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen8/pa_to_pl2.asm b/src/shaders/post_processing/gen8/pa_to_pl2.asm
deleted file mode 100644
index adc81fd..0000000
--- a/src/shaders/post_processing/gen8/pa_to_pl2.asm
+++ /dev/null
@@ -1,17 +0,0 @@
-// Module name: AVS
-.kernel YUY2_TO_NV12
-.code
-
-#include "VP_Setup.g8a"
-#include "Set_Layer_0.g8a"
-#include "Set_AVS_Buf_0123_VYUA.g8a"
-#include "PA_AVS_Buf_0.g8a"
-#include "PA_AVS_Buf_1.g8a"
-#include "PA_AVS_Buf_2.g8a"
-#include "PA_AVS_Buf_3.g8a"
-#include "Save_AVS_NV12.g8a"
-#include "EOT.g8a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen8/pa_to_pl2.g8b b/src/shaders/post_processing/gen8/pa_to_pl2.g8b
deleted file mode 100644
index 09390f6..0000000
--- a/src/shaders/post_processing/gen8/pa_to_pl2.g8b
+++ /dev/null
@@ -1,186 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x000062ea },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006420 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00200201, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00000201, 0x24a01a28, 0x00000120, 0x00000000 },
- { 0x00000608, 0x24a41a28, 0x1e000122, 0x00010001 },
- { 0x00000401, 0x23880608, 0x00000000, 0x000f000f },
- { 0x00000401, 0x24a80608, 0x00000000, 0x0007000f },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x23b02288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x23c02288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x23d02288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x44c02288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x44d02288, 0x00cf8441, 0x00000000 },
- { 0x00600601, 0x44c12288, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0x44d12288, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x00800201, 0x23e02288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x23f02288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24002288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24102288, 0x00d28a61, 0x00000000 },
- { 0x00600201, 0x44e02288, 0x00cf8c01, 0x00000000 },
- { 0x00600601, 0x44f02288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x44e12288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x44f12288, 0x00cf8841, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x00800201, 0x24202288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x24302288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x24402288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x24502288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x45002288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x45102288, 0x00cf8441, 0x00000000 },
- { 0x00600601, 0x45012288, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0x45112288, 0x00cf8041, 0x00000000 },
- { 0x00800201, 0x24602288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x24702288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24802288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24902288, 0x00d28a61, 0x00000000 },
- { 0x00600201, 0x45202288, 0x00cf8c01, 0x00000000 },
- { 0x00600601, 0x45302288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x45212288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x45312288, 0x00cf8841, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x120a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x0a0a8019 },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x0e000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen8/pa_to_pl3.asm b/src/shaders/post_processing/gen8/pa_to_pl3.asm
deleted file mode 100644
index 44c7f9e..0000000
--- a/src/shaders/post_processing/gen8/pa_to_pl3.asm
+++ /dev/null
@@ -1,17 +0,0 @@
-// Module name: AVS
-.kernel YUY2_TO_NV12
-.code
-
-#include "VP_Setup.g8a"
-#include "Set_Layer_0.g8a"
-#include "Set_AVS_Buf_0123_VYUA.g8a"
-#include "PA_AVS_Buf_0.g8a"
-#include "PA_AVS_Buf_1.g8a"
-#include "PA_AVS_Buf_2.g8a"
-#include "PA_AVS_Buf_3.g8a"
-#include "Save_AVS_PL3.g8a"
-#include "EOT.g8a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen8/pa_to_pl3.g8b b/src/shaders/post_processing/gen8/pa_to_pl3.g8b
deleted file mode 100644
index 255ea81..0000000
--- a/src/shaders/post_processing/gen8/pa_to_pl3.g8b
+++ /dev/null
@@ -1,189 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x000062ea },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006420 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
- { 0x00200201, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00200208, 0x24a01a28, 0x1e450120, 0x00010001 },
- { 0x00200208, 0x25c01a28, 0x1e450120, 0x00010001 },
- { 0x00000401, 0x23880608, 0x00000000, 0x000f000f },
- { 0x00000401, 0x24a80608, 0x00000000, 0x00070007 },
- { 0x00000401, 0x25c80608, 0x00000000, 0x00070007 },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x23b02288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x23c02288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x23d02288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x24c02288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x24c82288, 0x00cf8441, 0x00000000 },
- { 0x00600201, 0x25e02288, 0x00cf8001, 0x00000000 },
- { 0x00600601, 0x25e82288, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x00800201, 0x23e02288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x23f02288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24002288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24102288, 0x00d28a61, 0x00000000 },
- { 0x00600601, 0x24d02288, 0x00cf8c01, 0x00000000 },
- { 0x00600401, 0x24d82288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x25f02288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x25f82288, 0x00cf8841, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x00800201, 0x24202288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x24302288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x24402288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x24502288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x24e02288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x24e82288, 0x00cf8441, 0x00000000 },
- { 0x00600201, 0x26002288, 0x00cf8001, 0x00000000 },
- { 0x00600601, 0x26082288, 0x00cf8041, 0x00000000 },
- { 0x00800201, 0x24602288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x24702288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24802288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24902288, 0x00d28a61, 0x00000000 },
- { 0x00600601, 0x24f02288, 0x00cf8c01, 0x00000000 },
- { 0x00600401, 0x24f82288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x26102288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x26182288, 0x00cf8841, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x120a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8019 },
- { 0x0c000031, 0x20002220, 0x060005c0, 0x060a801a },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x0e000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen8/pl2_to_pa.asm b/src/shaders/post_processing/gen8/pl2_to_pa.asm
deleted file mode 100644
index 55d9ced..0000000
--- a/src/shaders/post_processing/gen8/pl2_to_pa.asm
+++ /dev/null
@@ -1,17 +0,0 @@
-// Module name: AVS
-.kernel PL2_TO_PA
-.code
-
-#include "VP_Setup.g8a"
-#include "Set_Layer_0.g8a"
-#include "Set_AVS_Buf_0123_PL2.g8a"
-#include "PL2_AVS_Buf_0.g8a"
-#include "PL2_AVS_Buf_1.g8a"
-#include "PL2_AVS_Buf_2.g8a"
-#include "PL2_AVS_Buf_3.g8a"
-#include "Save_AVS_PA.g8a"
-#include "EOT.g8a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen8/pl2_to_pa.g8b b/src/shaders/post_processing/gen8/pl2_to_pa.g8b
deleted file mode 100644
index 5a3dde5..0000000
--- a/src/shaders/post_processing/gen8/pl2_to_pa.g8b
+++ /dev/null
@@ -1,287 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006ea2 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006204 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x28802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2a802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2c802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2e802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22082260, 0x1669005c, 0x03a003a0 },
- { 0x00000209, 0x23601a28, 0x1e000120, 0x00010001 },
- { 0x00000601, 0x23641a28, 0x00000122, 0x00000000 },
- { 0x00000401, 0x23680608, 0x00000000, 0x0001001f },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x02000200 },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x06000600 },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x08000800 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x00000002 },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x02000200 },
- { 0x00000040, 0x23840a28, 0x0e000364, 0x00000004 },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x00000006 },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x00000040, 0x23840a28, 0x0e000364, 0x00000008 },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x0000000a },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x06000600 },
- { 0x00000040, 0x23840a28, 0x0e000364, 0x0000000c },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x0000000e },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x0e000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.asm b/src/shaders/post_processing/gen8/pl2_to_pl2.asm
deleted file mode 100644
index a5999ac..0000000
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.asm
+++ /dev/null
@@ -1,19 +0,0 @@
-// Module name: AVS
-.kernel PL2_TO_PL2
-.code
-
-#include "VP_Setup.g8a"
-#include "Set_Layer_0.g8a"
-#include "Set_AVS_Buf_0123_PL2.g8a"
-#include "PL2_media_read_buf0123.g8a"
-#include "PL2_AVS_Buf_0.g8a"
-#include "PL2_AVS_Buf_1.g8a"
-#include "PL2_AVS_Buf_2.g8a"
-#include "PL2_AVS_Buf_3.g8a"
-__SAVE_BUF0123:
-#include "Save_AVS_NV12.g8a"
-#include "EOT.g8a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b b/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
deleted file mode 100644
index 2c3d015..0000000
--- a/src/shaders/post_processing/gen8/pl2_to_pl2.g8b
+++ /dev/null
@@ -1,238 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006ea2 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006204 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
- { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
- { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
- { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
- { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
- { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
- { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
- { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
- { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
- { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
- { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
- { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
- { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
- { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
- { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
- { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
- { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
- { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
- { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
- { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
- { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
- { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
- { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
- { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
- { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
- { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
- { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
- { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
- { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
- { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
- { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
- { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
- { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
- { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
- { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
- { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
- { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
- { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x28802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2a802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2c802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2e802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00200201, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00000201, 0x24a01a28, 0x00000120, 0x00000000 },
- { 0x00000608, 0x24a41a28, 0x1e000122, 0x00010001 },
- { 0x00000401, 0x23880608, 0x00000000, 0x000f000f },
- { 0x00000401, 0x24a80608, 0x00000000, 0x0007000f },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x23b02288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x23c02288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x23d02288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x44c02288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x44d02288, 0x00cf8441, 0x00000000 },
- { 0x00600601, 0x44c12288, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0x44d12288, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x00800201, 0x23e02288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x23f02288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24002288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24102288, 0x00d28a61, 0x00000000 },
- { 0x00600201, 0x44e02288, 0x00cf8c01, 0x00000000 },
- { 0x00600601, 0x44f02288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x44e12288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x44f12288, 0x00cf8841, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x00800201, 0x24202288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x24302288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x24402288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x24502288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x45002288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x45102288, 0x00cf8441, 0x00000000 },
- { 0x00600601, 0x45012288, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0x45112288, 0x00cf8041, 0x00000000 },
- { 0x00800201, 0x24602288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x24702288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24802288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24902288, 0x00d28a61, 0x00000000 },
- { 0x00600201, 0x45202288, 0x00cf8c01, 0x00000000 },
- { 0x00600601, 0x45302288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x45212288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x45312288, 0x00cf8841, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x120a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x0a0a8019 },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x0e000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.asm b/src/shaders/post_processing/gen8/pl2_to_pl3.asm
deleted file mode 100644
index b42163c..0000000
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.asm
+++ /dev/null
@@ -1,19 +0,0 @@
-// Module name: AVS
-.kernel PL2_TO_PL3
-.code
-
-#include "VP_Setup.g8a"
-#include "Set_Layer_0.g8a"
-#include "Set_AVS_Buf_0123_PL2.g8a"
-#include "PL2_media_read_buf0123.g8a"
-#include "PL2_AVS_Buf_0.g8a"
-#include "PL2_AVS_Buf_1.g8a"
-#include "PL2_AVS_Buf_2.g8a"
-#include "PL2_AVS_Buf_3.g8a"
-__SAVE_BUF0123:
-#include "Save_AVS_PL3.g8a"
-#include "EOT.g8a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b b/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
deleted file mode 100644
index 72f81a2..0000000
--- a/src/shaders/post_processing/gen8/pl2_to_pl3.g8b
+++ /dev/null
@@ -1,241 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006ea2 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006204 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
- { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
- { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
- { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
- { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
- { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
- { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
- { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
- { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
- { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
- { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
- { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
- { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
- { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
- { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
- { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
- { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
- { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
- { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
- { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
- { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
- { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
- { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
- { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
- { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
- { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
- { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
- { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
- { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
- { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
- { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
- { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
- { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
- { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
- { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
- { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
- { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
- { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x28802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2a802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2c802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2e802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
- { 0x00200201, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00200208, 0x24a01a28, 0x1e450120, 0x00010001 },
- { 0x00200208, 0x25c01a28, 0x1e450120, 0x00010001 },
- { 0x00000401, 0x23880608, 0x00000000, 0x000f000f },
- { 0x00000401, 0x24a80608, 0x00000000, 0x00070007 },
- { 0x00000401, 0x25c80608, 0x00000000, 0x00070007 },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x23b02288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x23c02288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x23d02288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x24c02288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x24c82288, 0x00cf8441, 0x00000000 },
- { 0x00600201, 0x25e02288, 0x00cf8001, 0x00000000 },
- { 0x00600601, 0x25e82288, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x00800201, 0x23e02288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x23f02288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24002288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24102288, 0x00d28a61, 0x00000000 },
- { 0x00600601, 0x24d02288, 0x00cf8c01, 0x00000000 },
- { 0x00600401, 0x24d82288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x25f02288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x25f82288, 0x00cf8841, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x00800201, 0x24202288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x24302288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x24402288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x24502288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x24e02288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x24e82288, 0x00cf8441, 0x00000000 },
- { 0x00600201, 0x26002288, 0x00cf8001, 0x00000000 },
- { 0x00600601, 0x26082288, 0x00cf8041, 0x00000000 },
- { 0x00800201, 0x24602288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x24702288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24802288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24902288, 0x00d28a61, 0x00000000 },
- { 0x00600601, 0x24f02288, 0x00cf8c01, 0x00000000 },
- { 0x00600401, 0x24f82288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x26102288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x26182288, 0x00cf8841, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x120a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8019 },
- { 0x0c000031, 0x20002220, 0x060005c0, 0x060a801a },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x0e000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen8/pl2_to_rgbx.asm b/src/shaders/post_processing/gen8/pl2_to_rgbx.asm
deleted file mode 100644
index 58a5204..0000000
--- a/src/shaders/post_processing/gen8/pl2_to_rgbx.asm
+++ /dev/null
@@ -1,18 +0,0 @@
-// Module name: AVS
-.kernel PL2_TO_PL2
-.code
-
-#include "VP_Setup.g8a"
-#include "Set_Layer_0.g8a"
-#include "Set_AVS_Buf_0123_PL2.g8a"
-#include "PL2_AVS_Buf_0.g8a"
-#include "PL2_AVS_Buf_1.g8a"
-#include "PL2_AVS_Buf_2.g8a"
-#include "PL2_AVS_Buf_3.g8a"
-#include "YUV_to_RGB.g8a"
-#include "Save_AVS_RGBX.g8a"
-#include "EOT.g8a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen8/pl2_to_rgbx.g8b b/src/shaders/post_processing/gen8/pl2_to_rgbx.g8b
deleted file mode 100644
index ba6c270..0000000
--- a/src/shaders/post_processing/gen8/pl2_to_rgbx.g8b
+++ /dev/null
@@ -1,770 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006ea2 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006204 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x28802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2a802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2c802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2e802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x22001240, 0x006902c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2012288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4012288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0012288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2212288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4212288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0212288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2412288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4412288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0412288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2612288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4612288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0612288, 0x00cf05c0, 0x00000000 },
- { 0x00400040, 0x22001240, 0x166902c0, 0x02000200 },
- { 0x00600001, 0x248022e8, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2012288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4012288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0012288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2212288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4212288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0212288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2412288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4412288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0412288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2612288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4612288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0612288, 0x00cf05c0, 0x00000000 },
- { 0x00400040, 0x22001240, 0x166902c0, 0x04000400 },
- { 0x00600001, 0x248022e8, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2012288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4012288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0012288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2212288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4212288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0212288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2412288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4412288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0412288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2612288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4612288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0612288, 0x00cf05c0, 0x00000000 },
- { 0x00400040, 0x22001240, 0x166902c0, 0x06000600 },
- { 0x00600001, 0x248022e8, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2012288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4012288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0012288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2212288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4212288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0212288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2412288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4412288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0412288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2612288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4612288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0612288, 0x00cf05c0, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x000062ea },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x02800005, 0x20001260, 0x1e000046, 0x00010001 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00010001, 0x22201048, 0x00000200, 0x00000000 },
- { 0x00010001, 0x22001040, 0x00000204, 0x00000000 },
- { 0x00010001, 0x22041240, 0x00000220, 0x00000000 },
- { 0x00000209, 0x23601a28, 0x1e000120, 0x00020002 },
- { 0x00000601, 0x23641a28, 0x00000122, 0x00000000 },
- { 0x00000401, 0x23680608, 0x00000000, 0x0003001f },
- { 0x00400001, 0x22081040, 0x00690200, 0x00000000 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x26e00208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x23e00208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25000208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x26200208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x27400208, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x24a00a28, 0x0e000360, 0x00000020 },
- { 0x00000040, 0x25c40a28, 0x0e000364, 0x00000004 },
- { 0x00000040, 0x26e40a28, 0x0e000364, 0x00000004 },
- { 0x00000040, 0x26e00a28, 0x0e000360, 0x00000020 },
- { 0x00600001, 0x63a02288, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x63a12288, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x63a22288, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x63a32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x63c02288, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x63c12288, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x63c22288, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x63c32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64c02288, 0x00ae8011, 0x00000000 },
- { 0x00600001, 0x64c12288, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x64c22288, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x64c32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64e02288, 0x00ae8031, 0x00000000 },
- { 0x00600001, 0x64e12288, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x64e22288, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x64e32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x63e02288, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x63e12288, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x63e22288, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x63e32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64002288, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x64012288, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x64022288, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x64032288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x65002288, 0x00ae8051, 0x00000000 },
- { 0x00600001, 0x65012288, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x65022288, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x65032288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x65202288, 0x00ae8071, 0x00000000 },
- { 0x00600001, 0x65212288, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x65222288, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x65232288, 0x0000005f, 0x00000000 },
- { 0x0c800031, 0x20002220, 0x06000380, 0x0a0a8018 },
- { 0x0c800031, 0x20002220, 0x060004a0, 0x0a0a8018 },
- { 0x00400040, 0x22001040, 0x16690208, 0x02000200 },
- { 0x00600001, 0x65e02288, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x65e12288, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x65e22288, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x65e32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66002288, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x66012288, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x66022288, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x66032288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67002288, 0x00ae8011, 0x00000000 },
- { 0x00600001, 0x67012288, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x67022288, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x67032288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67202288, 0x00ae8031, 0x00000000 },
- { 0x00600001, 0x67212288, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x67222288, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x67232288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66202288, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x66212288, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x66222288, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x66232288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66402288, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x66412288, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x66422288, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x66432288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67402288, 0x00ae8051, 0x00000000 },
- { 0x00600001, 0x67412288, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x67422288, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x67432288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67602288, 0x00ae8071, 0x00000000 },
- { 0x00600001, 0x67612288, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x67622288, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x67632288, 0x0000005f, 0x00000000 },
- { 0x0c800031, 0x20002220, 0x060005c0, 0x0a0a8018 },
- { 0x0c800031, 0x20002220, 0x060006e0, 0x0a0a8018 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x26e00208, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x23840a28, 0x0e000364, 0x00000008 },
- { 0x00000040, 0x24a00a28, 0x0e000360, 0x00000020 },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x00000008 },
- { 0x00000040, 0x25c40a28, 0x0e000364, 0x0000000c },
- { 0x00000040, 0x26e40a28, 0x0e000364, 0x0000000c },
- { 0x00000040, 0x26e00a28, 0x0e000360, 0x00000020 },
- { 0x00400040, 0x22001040, 0x16690208, 0x04000400 },
- { 0x00600001, 0x63a02288, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x63a12288, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x63a22288, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x63a32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x63c02288, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x63c12288, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x63c22288, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x63c32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64c02288, 0x00ae8011, 0x00000000 },
- { 0x00600001, 0x64c12288, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x64c22288, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x64c32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64e02288, 0x00ae8031, 0x00000000 },
- { 0x00600001, 0x64e12288, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x64e22288, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x64e32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x63e02288, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x63e12288, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x63e22288, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x63e32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64002288, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x64012288, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x64022288, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x64032288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x65002288, 0x00ae8051, 0x00000000 },
- { 0x00600001, 0x65012288, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x65022288, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x65032288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x65202288, 0x00ae8071, 0x00000000 },
- { 0x00600001, 0x65212288, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x65222288, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x65232288, 0x0000005f, 0x00000000 },
- { 0x0c800031, 0x20002220, 0x06000380, 0x0a0a8018 },
- { 0x0c800031, 0x20002220, 0x060004a0, 0x0a0a8018 },
- { 0x00400040, 0x22001040, 0x16690208, 0x06000600 },
- { 0x00600001, 0x65e02288, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x65e12288, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x65e22288, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x65e32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66002288, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x66012288, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x66022288, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x66032288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67002288, 0x00ae8011, 0x00000000 },
- { 0x00600001, 0x67012288, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x67022288, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x67032288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67202288, 0x00ae8031, 0x00000000 },
- { 0x00600001, 0x67212288, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x67222288, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x67232288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66202288, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x66212288, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x66222288, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x66232288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66402288, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x66412288, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x66422288, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x66432288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67402288, 0x00ae8051, 0x00000000 },
- { 0x00600001, 0x67412288, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x67422288, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x67432288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67602288, 0x00ae8071, 0x00000000 },
- { 0x00600001, 0x67612288, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x67622288, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x67632288, 0x0000005f, 0x00000000 },
- { 0x0c800031, 0x20002220, 0x060005c0, 0x0a0a8018 },
- { 0x0c800031, 0x20002220, 0x060006e0, 0x0a0a8018 },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x0e000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pa.asm b/src/shaders/post_processing/gen8/pl3_to_pa.asm
deleted file mode 100644
index acb7670..0000000
--- a/src/shaders/post_processing/gen8/pl3_to_pa.asm
+++ /dev/null
@@ -1,17 +0,0 @@
-// Module name: AVS
-.kernel PL3_TO_PL3
-.code
-
-#include "VP_Setup.g8a"
-#include "Set_Layer_0.g8a"
-#include "Set_AVS_Buf_0123_PL3.g8a"
-#include "PL3_AVS_Buf_0.g8a"
-#include "PL3_AVS_Buf_1.g8a"
-#include "PL3_AVS_Buf_2.g8a"
-#include "PL3_AVS_Buf_3.g8a"
-#include "Save_AVS_PA.g8a"
-#include "EOT.g8a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen8/pl3_to_pa.g8b b/src/shaders/post_processing/gen8/pl3_to_pa.g8b
deleted file mode 100644
index 4bf6294..0000000
--- a/src/shaders/post_processing/gen8/pl3_to_pa.g8b
+++ /dev/null
@@ -1,303 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006ea2 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006204 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x28802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x29002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2a802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2b002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2c802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2d002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2e802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2f002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22082260, 0x1669005c, 0x03a003a0 },
- { 0x00000209, 0x23601a28, 0x1e000120, 0x00010001 },
- { 0x00000601, 0x23641a28, 0x00000122, 0x00000000 },
- { 0x00000401, 0x23680608, 0x00000000, 0x0001001f },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x02000200 },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x06000600 },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x08000800 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x00000002 },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x02000200 },
- { 0x00000040, 0x23840a28, 0x0e000364, 0x00000004 },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x00000006 },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x00000040, 0x23840a28, 0x0e000364, 0x00000008 },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x0000000a },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x06000600 },
- { 0x00000040, 0x23840a28, 0x0e000364, 0x0000000c },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x0000000e },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x0e000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.asm b/src/shaders/post_processing/gen8/pl3_to_pl2.asm
deleted file mode 100644
index d68f72d..0000000
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.asm
+++ /dev/null
@@ -1,19 +0,0 @@
-// Module name: AVS
-.kernel PL3_TO_PL2
-.code
-
-#include "VP_Setup.g8a"
-#include "Set_Layer_0.g8a"
-#include "Set_AVS_Buf_0123_PL3.g8a"
-#include "PL3_media_read_buf0123.g8a"
-#include "PL3_AVS_Buf_0.g8a"
-#include "PL3_AVS_Buf_1.g8a"
-#include "PL3_AVS_Buf_2.g8a"
-#include "PL3_AVS_Buf_3.g8a"
-__SAVE_BUF0123:
-#include "Save_AVS_NV12.g8a"
-#include "EOT.g8a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b b/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
deleted file mode 100644
index b2f2a56..0000000
--- a/src/shaders/post_processing/gen8/pl3_to_pl2.g8b
+++ /dev/null
@@ -1,257 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006ea2 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006204 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
- { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
- { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
- { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
- { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
- { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
- { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
- { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
- { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
- { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
- { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
- { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
- { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
- { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
- { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
- { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
- { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
- { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
- { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
- { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
- { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
- { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
- { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
- { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
- { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
- { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
- { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
- { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
- { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
- { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
- { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
- { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
- { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
- { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
- { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
- { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
- { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
- { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
- { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
- { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
- { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x28802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x29002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2a802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2b002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2c802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2d002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2e802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2f002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00200201, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00000201, 0x24a01a28, 0x00000120, 0x00000000 },
- { 0x00000608, 0x24a41a28, 0x1e000122, 0x00010001 },
- { 0x00000401, 0x23880608, 0x00000000, 0x000f000f },
- { 0x00000401, 0x24a80608, 0x00000000, 0x0007000f },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x23b02288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x23c02288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x23d02288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x44c02288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x44d02288, 0x00cf8441, 0x00000000 },
- { 0x00600601, 0x44c12288, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0x44d12288, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x00800201, 0x23e02288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x23f02288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24002288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24102288, 0x00d28a61, 0x00000000 },
- { 0x00600201, 0x44e02288, 0x00cf8c01, 0x00000000 },
- { 0x00600601, 0x44f02288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x44e12288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x44f12288, 0x00cf8841, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x00800201, 0x24202288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x24302288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x24402288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x24502288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x45002288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x45102288, 0x00cf8441, 0x00000000 },
- { 0x00600601, 0x45012288, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0x45112288, 0x00cf8041, 0x00000000 },
- { 0x00800201, 0x24602288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x24702288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24802288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24902288, 0x00d28a61, 0x00000000 },
- { 0x00600201, 0x45202288, 0x00cf8c01, 0x00000000 },
- { 0x00600601, 0x45302288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x45212288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x45312288, 0x00cf8841, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x120a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x0a0a8019 },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x0e000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.asm b/src/shaders/post_processing/gen8/pl3_to_pl3.asm
deleted file mode 100644
index b91bb46..0000000
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.asm
+++ /dev/null
@@ -1,19 +0,0 @@
-// Module name: AVS
-.kernel PL3_TO_PL3
-.code
-
-#include "VP_Setup.g8a"
-#include "Set_Layer_0.g8a"
-#include "Set_AVS_Buf_0123_PL3.g8a"
-#include "PL3_media_read_buf0123.g8a"
-#include "PL3_AVS_Buf_0.g8a"
-#include "PL3_AVS_Buf_1.g8a"
-#include "PL3_AVS_Buf_2.g8a"
-#include "PL3_AVS_Buf_3.g8a"
-__SAVE_BUF0123:
-#include "Save_AVS_PL3.g8a"
-#include "EOT.g8a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b b/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
deleted file mode 100644
index 593b81d..0000000
--- a/src/shaders/post_processing/gen8/pl3_to_pl3.g8b
+++ /dev/null
@@ -1,260 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006ea2 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006204 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
- { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
- { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
- { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
- { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
- { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
- { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
- { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
- { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
- { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
- { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
- { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
- { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
- { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
- { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
- { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
- { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
- { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
- { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
- { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
- { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
- { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
- { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
- { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
- { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
- { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
- { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
- { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
- { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
- { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
- { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
- { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
- { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
- { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
- { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
- { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
- { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
- { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
- { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
- { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
- { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x28802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x29002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2a802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2b002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2c802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2d002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2e802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2f002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
- { 0x00200201, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00200208, 0x24a01a28, 0x1e450120, 0x00010001 },
- { 0x00200208, 0x25c01a28, 0x1e450120, 0x00010001 },
- { 0x00000401, 0x23880608, 0x00000000, 0x000f000f },
- { 0x00000401, 0x24a80608, 0x00000000, 0x00070007 },
- { 0x00000401, 0x25c80608, 0x00000000, 0x00070007 },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x23b02288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x23c02288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x23d02288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x24c02288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x24c82288, 0x00cf8441, 0x00000000 },
- { 0x00600201, 0x25e02288, 0x00cf8001, 0x00000000 },
- { 0x00600601, 0x25e82288, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x00800201, 0x23e02288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x23f02288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24002288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24102288, 0x00d28a61, 0x00000000 },
- { 0x00600601, 0x24d02288, 0x00cf8c01, 0x00000000 },
- { 0x00600401, 0x24d82288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x25f02288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x25f82288, 0x00cf8841, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x00800201, 0x24202288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x24302288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x24402288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x24502288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x24e02288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x24e82288, 0x00cf8441, 0x00000000 },
- { 0x00600201, 0x26002288, 0x00cf8001, 0x00000000 },
- { 0x00600601, 0x26082288, 0x00cf8041, 0x00000000 },
- { 0x00800201, 0x24602288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x24702288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24802288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24902288, 0x00d28a61, 0x00000000 },
- { 0x00600601, 0x24f02288, 0x00cf8c01, 0x00000000 },
- { 0x00600401, 0x24f82288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x26102288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x26182288, 0x00cf8841, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x120a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8019 },
- { 0x0c000031, 0x20002220, 0x060005c0, 0x060a801a },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x0e000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen8/rgbx_to_nv12.asm b/src/shaders/post_processing/gen8/rgbx_to_nv12.asm
deleted file mode 100644
index 14baafe..0000000
--- a/src/shaders/post_processing/gen8/rgbx_to_nv12.asm
+++ /dev/null
@@ -1,18 +0,0 @@
-// Module name: AVS
-.kernel RGBX_TO_NV12
-.code
-
-#include "VP_Setup.g8a"
-#include "Set_Layer_0.g8a"
-#include "Set_AVS_Buf_0123_BGRA.g8a"
-#include "PA_AVS_Buf_0.g8a"
-#include "PA_AVS_Buf_1.g8a"
-#include "PA_AVS_Buf_2.g8a"
-#include "PA_AVS_Buf_3.g8a"
-#include "RGB_to_YUV.g8a"
-#include "Save_AVS_NV12.g8a"
-#include "EOT.g8a"
-
-.end_code
-
-.end_kernel
diff --git a/src/shaders/post_processing/gen8/rgbx_to_nv12.g8b b/src/shaders/post_processing/gen8/rgbx_to_nv12.g8b
deleted file mode 100644
index 1d2d131..0000000
--- a/src/shaders/post_processing/gen8/rgbx_to_nv12.g8b
+++ /dev/null
@@ -1,611 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006ea2 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006204 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x22001240, 0x006902c0, 0x00000000 },
- { 0x00400001, 0x22081240, 0x006902c0, 0x00000000 },
- { 0x02800005, 0x20001260, 0x1e000040, 0x00010001 },
- { 0x00010001, 0x22201048, 0x00000200, 0x00000000 },
- { 0x00010001, 0x22001040, 0x00000202, 0x00000000 },
- { 0x00010001, 0x22021240, 0x00000220, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca012288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc012288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8012288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca212288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc212288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8212288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca412288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc412288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8412288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca612288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc612288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8612288, 0x00cf05c0, 0x00000000 },
- { 0x00600040, 0x22001040, 0x168d0200, 0x02000200 },
- { 0x00600001, 0x238022e8, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca012288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc012288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8012288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca212288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc212288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8212288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca412288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc412288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8412288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca612288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc612288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8612288, 0x00cf05c0, 0x00000000 },
- { 0x00600040, 0x22001040, 0x168d0200, 0x02000200 },
- { 0x00600001, 0x238022e8, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca012288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc012288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8012288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca212288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc212288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8212288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca412288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc412288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8412288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca612288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc612288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8612288, 0x00cf05c0, 0x00000000 },
- { 0x00600040, 0x22001040, 0x168d0200, 0x02000200 },
- { 0x00600001, 0x238022e8, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca012288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc012288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8012288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca212288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc212288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8212288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca412288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc412288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8412288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca612288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc612288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8612288, 0x00cf05c0, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00200201, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00000201, 0x24a01a28, 0x00000120, 0x00000000 },
- { 0x00000608, 0x24a41a28, 0x1e000122, 0x00010001 },
- { 0x00000401, 0x23880608, 0x00000000, 0x000f000f },
- { 0x00000401, 0x24a80608, 0x00000000, 0x0007000f },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x23b02288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x23c02288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x23d02288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x44c02288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x44d02288, 0x00cf8441, 0x00000000 },
- { 0x00600601, 0x44c12288, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0x44d12288, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x00800201, 0x23e02288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x23f02288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24002288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24102288, 0x00d28a61, 0x00000000 },
- { 0x00600201, 0x44e02288, 0x00cf8c01, 0x00000000 },
- { 0x00600601, 0x44f02288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x44e12288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x44f12288, 0x00cf8841, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x00800201, 0x24202288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x24302288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x24402288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x24502288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x45002288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x45102288, 0x00cf8441, 0x00000000 },
- { 0x00600601, 0x45012288, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0x45112288, 0x00cf8041, 0x00000000 },
- { 0x00800201, 0x24602288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x24702288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24802288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24902288, 0x00d28a61, 0x00000000 },
- { 0x00600201, 0x45202288, 0x00cf8c01, 0x00000000 },
- { 0x00600601, 0x45302288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x45212288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x45312288, 0x00cf8841, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x120a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x0a0a8019 },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x0e000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen8/sharpening_h_blur.g8b b/src/shaders/post_processing/gen8/sharpening_h_blur.g8b
deleted file mode 100644
index ffa759b..0000000
--- a/src/shaders/post_processing/gen8/sharpening_h_blur.g8b
+++ /dev/null
@@ -1,1718 +0,0 @@
-{ 0x00000001, 0x23401608, 0x00000000, 0x00000000 },
-{ 0x00600001, 0x20403ae8, 0x008d0000, 0x00000000 },
-{ 0x00000001, 0x23441608, 0x00000000, 0x00020002 },
-{ 0x00000001, 0x20480608, 0x00000000, 0x000f0007 },
-{ 0x00000001, 0x20401608, 0x00000000, 0x00000000 },
-{ 0x00000040, 0x22000200, 0x06000340, 0x02490000 },
-{ 0x00000001, 0x20443ae8, 0x00000028, 0x00000000 },
-{ 0x00000001, 0x202c1608, 0x00000000, 0x00040004 },
-{ 0x0c600031, 0x20403a08, 0x00000040, 0x00000200 },
-{ 0x00000040, 0x20240208, 0x1e000020, 0xfffcfffc },
-{ 0x06000010, 0x20000201, 0x16000024, 0x00040004 },
-{ 0x00200001, 0x23283ae8, 0x004500b0, 0x00000000 },
-{ 0x00200001, 0x23083ae8, 0x004500a0, 0x00000000 },
-{ 0x00200001, 0x22e83ae8, 0x00450090, 0x00000000 },
-{ 0x00200001, 0x22c83ae8, 0x00450080, 0x00000000 },
-{ 0x00200001, 0x22a83ae8, 0x00450070, 0x00000000 },
-{ 0x00200001, 0x22883ae8, 0x00450060, 0x00000000 },
-{ 0x00200001, 0x22683ae8, 0x00450050, 0x00000000 },
-{ 0x00200001, 0x22483ae8, 0x00450040, 0x00000000 },
-{ 0x00200001, 0x23383ae8, 0x004500b8, 0x00000000 },
-{ 0x00200001, 0x23183ae8, 0x004500a8, 0x00000000 },
-{ 0x00200001, 0x22f83ae8, 0x00450098, 0x00000000 },
-{ 0x00200001, 0x22d83ae8, 0x00450088, 0x00000000 },
-{ 0x00200001, 0x22b83ae8, 0x00450078, 0x00000000 },
-{ 0x00200001, 0x22983ae8, 0x00450068, 0x00000000 },
-{ 0x00200001, 0x22783ae8, 0x00450058, 0x00000000 },
-{ 0x00200001, 0x22583ae8, 0x00450048, 0x00000000 },
-{ 0x00010020, 0x34000005, 0x0e001400, 0x000067d0 },
-{ 0x00600001, 0x20403ae8, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000200, 0x06000340, 0x02490000 },
-{ 0x00200001, 0x22603ae8, 0x00450268, 0x00000000 },
-{ 0x00200001, 0x22403ae8, 0x00450248, 0x00000000 },
-{ 0x00200001, 0x22803ae8, 0x00450288, 0x00000000 },
-{ 0x00200001, 0x22c03ae8, 0x004502c8, 0x00000000 },
-{ 0x00200001, 0x22a03ae8, 0x004502a8, 0x00000000 },
-{ 0x00200001, 0x23203ae8, 0x00450328, 0x00000000 },
-{ 0x00000001, 0x20480608, 0x00000000, 0x000f0007 },
-{ 0x00200001, 0x23003ae8, 0x00450308, 0x00000000 },
-{ 0x00200001, 0x22e03ae8, 0x004502e8, 0x00000000 },
-{ 0x00000040, 0x20400208, 0x1600002c, 0x00040004 },
-{ 0x00000001, 0x20443ae8, 0x00000028, 0x00000000 },
-{ 0x0c600031, 0x20403a08, 0x00000040, 0x00000200 },
-{ 0x00200001, 0x22703ae8, 0x00450278, 0x00000000 },
-{ 0x00200001, 0x22503ae8, 0x00450258, 0x00000000 },
-{ 0x00200001, 0x22683ae8, 0x00450050, 0x00000000 },
-{ 0x00200001, 0x22483ae8, 0x00450040, 0x00000000 },
-{ 0x00200001, 0x22783ae8, 0x00450058, 0x00000000 },
-{ 0x00200001, 0x22583ae8, 0x00450048, 0x00000000 },
-{ 0x00000001, 0x204022e8, 0x00000240, 0x00000000 },
-{ 0x00200001, 0x22903ae8, 0x00450298, 0x00000000 },
-{ 0x00000001, 0x204422e8, 0x00000250, 0x00000000 },
-{ 0x00000001, 0x204822e8, 0x00000260, 0x00000000 },
-{ 0x00200001, 0x22883ae8, 0x00450060, 0x00000000 },
-{ 0x00200001, 0x22d03ae8, 0x004502d8, 0x00000000 },
-{ 0x00200001, 0x22b03ae8, 0x004502b8, 0x00000000 },
-{ 0x00200001, 0x22983ae8, 0x00450068, 0x00000000 },
-{ 0x00000001, 0x204c22e8, 0x00000270, 0x00000000 },
-{ 0x00200001, 0x22c83ae8, 0x00450080, 0x00000000 },
-{ 0x00200001, 0x22a83ae8, 0x00450070, 0x00000000 },
-{ 0x00000001, 0x205022e8, 0x00000280, 0x00000000 },
-{ 0x00200001, 0x22d83ae8, 0x00450088, 0x00000000 },
-{ 0x00200001, 0x22b83ae8, 0x00450078, 0x00000000 },
-{ 0x00200001, 0x23303ae8, 0x00450338, 0x00000000 },
-{ 0x00200001, 0x23103ae8, 0x00450318, 0x00000000 },
-{ 0x00200001, 0x22f03ae8, 0x004502f8, 0x00000000 },
-{ 0x00000001, 0x205422e8, 0x00000290, 0x00000000 },
-{ 0x00200001, 0x22e83ae8, 0x00450090, 0x00000000 },
-{ 0x00200001, 0x23083ae8, 0x004500a0, 0x00000000 },
-{ 0x00200001, 0x23283ae8, 0x004500b0, 0x00000000 },
-{ 0x00000001, 0x205822e8, 0x000002a0, 0x00000000 },
-{ 0x00000001, 0x206022e8, 0x000002c0, 0x00000000 },
-{ 0x00000001, 0x206422e8, 0x000002d0, 0x00000000 },
-{ 0x00000001, 0x205c22e8, 0x000002b0, 0x00000000 },
-{ 0x00200001, 0x23383ae8, 0x004500b8, 0x00000000 },
-{ 0x00200001, 0x23183ae8, 0x004500a8, 0x00000000 },
-{ 0x00200001, 0x22f83ae8, 0x00450098, 0x00000000 },
-{ 0x00000001, 0x206822e8, 0x000002e0, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c1, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x00000241, 0x00000000 },
-{ 0x00000001, 0x20303ee8, 0x00000000, 0x332bcc77 },
-{ 0x00000001, 0x21403ee8, 0x00000000, 0x3c1d98ad },
-{ 0x00000001, 0x206c22e8, 0x000002f0, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d1, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000251, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000261, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e1, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f1, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000271, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000281, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000301, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000311, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000291, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a1, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000321, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000331, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b1, 0x00000000 },
-{ 0x00800041, 0x20c03ae8, 0x3e8d0080, 0x3875735f },
-{ 0x00000001, 0x208022e8, 0x00000242, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c2, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000252, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000262, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000272, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000282, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000292, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a2, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872003 },
-{ 0x00000001, 0x209c22e8, 0x000002b2, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d2, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x208022e8, 0x00000243, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e2, 0x00000000 },
-{ 0x00000001, 0x207022e8, 0x00000300, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f2, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000253, 0x00000000 },
-{ 0x00000001, 0x207422e8, 0x00000310, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000263, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000302, 0x00000000 },
-{ 0x00000001, 0x207822e8, 0x00000320, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000312, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000273, 0x00000000 },
-{ 0x00000001, 0x207c22e8, 0x00000330, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000283, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000322, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72003 },
-{ 0x00000001, 0x20bc22e8, 0x00000332, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000293, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a3, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x209c22e8, 0x000002b3, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c3, 0x00000000 },
-{ 0x00000001, 0x21503ee8, 0x00000000, 0x3e525448 },
-{ 0x00000001, 0x21603ee8, 0x00000000, 0x3f11e168 },
-{ 0x00000001, 0x20a422e8, 0x000002d3, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e3, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f3, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000303, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20b422e8, 0x00000313, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000323, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x00000244, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000254, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000333, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x208822e8, 0x00000264, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000274, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c4, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d4, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000284, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000294, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e4, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f4, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a4, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b4, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000304, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000314, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00000001, 0x208022e8, 0x00000245, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000324, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000334, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000255, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000265, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x00000001, 0x20a022e8, 0x000002c5, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000275, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000285, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d5, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e5, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000295, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a5, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f5, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000305, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b5, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20b422e8, 0x00000315, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000325, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x00000246, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000256, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000335, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x208822e8, 0x00000266, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000276, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c6, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000286, 0x00000000 },
-{ 0x00000001, 0x21703ee8, 0x00000000, 0x3875735f },
-{ 0x00000001, 0x20a422e8, 0x000002d6, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e6, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f6, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000306, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000296, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000316, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000326, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a6, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b6, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000336, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x208022e8, 0x00000247, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c7, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d7, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000257, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000267, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e7, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f7, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000277, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000287, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000307, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000317, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000297, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a7, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000327, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000337, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b7, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072017 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472017 },
-{ 0x00000001, 0x20a022e8, 0x000002c8, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x00000248, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000258, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d8, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e8, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000268, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000278, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f8, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000308, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000288, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000298, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000318, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000328, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a8, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b8, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000338, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00000001, 0x21803a28, 0x00000100, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000104, 0x00000000 },
-{ 0x00000001, 0x61a00a88, 0x00000180, 0x00000000 },
-{ 0x00000001, 0x206022e8, 0x000002c1, 0x00000000 },
-{ 0x00000001, 0x204022e8, 0x00000241, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x00000242, 0x00000000 },
-{ 0x00000001, 0x61a80a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000108, 0x00000000 },
-{ 0x00000001, 0x61b00a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000010c, 0x00000000 },
-{ 0x00000001, 0x61b80a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000110, 0x00000000 },
-{ 0x00000001, 0x61c00a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000114, 0x00000000 },
-{ 0x00000001, 0x61c80a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000118, 0x00000000 },
-{ 0x00000001, 0x61d00a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000011c, 0x00000000 },
-{ 0x00000001, 0x61d80a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000120, 0x00000000 },
-{ 0x00000001, 0x61e00a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000124, 0x00000000 },
-{ 0x00000001, 0x61e80a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000128, 0x00000000 },
-{ 0x00000001, 0x61f00a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000012c, 0x00000000 },
-{ 0x00000001, 0x61f80a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000130, 0x00000000 },
-{ 0x00000001, 0x206422e8, 0x000002d1, 0x00000000 },
-{ 0x00000001, 0x204422e8, 0x00000251, 0x00000000 },
-{ 0x00000001, 0x62000a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000134, 0x00000000 },
-{ 0x00000001, 0x204822e8, 0x00000261, 0x00000000 },
-{ 0x00000001, 0x206822e8, 0x000002e1, 0x00000000 },
-{ 0x00000001, 0x206c22e8, 0x000002f1, 0x00000000 },
-{ 0x00000001, 0x204c22e8, 0x00000271, 0x00000000 },
-{ 0x00000001, 0x62080a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000138, 0x00000000 },
-{ 0x00000001, 0x205022e8, 0x00000281, 0x00000000 },
-{ 0x00000001, 0x207022e8, 0x00000301, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000252, 0x00000000 },
-{ 0x00000001, 0x207422e8, 0x00000311, 0x00000000 },
-{ 0x00000001, 0x205422e8, 0x00000291, 0x00000000 },
-{ 0x00000001, 0x62100a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000262, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000013c, 0x00000000 },
-{ 0x00000001, 0x205822e8, 0x000002a1, 0x00000000 },
-{ 0x00000001, 0x207822e8, 0x00000321, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000272, 0x00000000 },
-{ 0x00000001, 0x207c22e8, 0x00000331, 0x00000000 },
-{ 0x00000001, 0x205c22e8, 0x000002b1, 0x00000000 },
-{ 0x00000001, 0x62180a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000282, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c2, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000292, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d2, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e2, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f2, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000302, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000312, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a2, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000322, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000332, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b2, 0x00000000 },
-{ 0x00800041, 0x20c03ae8, 0x3e8d0080, 0x3875735f },
-{ 0x00000001, 0x208022e8, 0x00000243, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c3, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872003 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72003 },
-{ 0x00000001, 0x208422e8, 0x00000253, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d3, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000263, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000273, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e3, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f3, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000283, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000293, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000303, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000313, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a3, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b3, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000323, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000333, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x208022e8, 0x00000244, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x20a022e8, 0x000002c4, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000254, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000264, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d4, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e4, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000274, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000284, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f4, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000304, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000294, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a4, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000314, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000324, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b4, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20bc22e8, 0x00000334, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x208022e8, 0x00000245, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000255, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c5, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000265, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d5, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000275, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e5, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f5, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000285, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000295, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000305, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000315, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a5, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b5, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000325, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000335, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00000001, 0x208022e8, 0x00000246, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x00000001, 0x20a022e8, 0x000002c6, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000256, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000266, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d6, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e6, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000276, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000286, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f6, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000306, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000296, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a6, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000316, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000326, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b6, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20bc22e8, 0x00000336, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x208022e8, 0x00000247, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000257, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c7, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d7, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000267, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000277, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e7, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f7, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000287, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000297, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000307, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000317, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a7, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b7, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000327, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000337, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x208022e8, 0x00000248, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c8, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000258, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000268, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000278, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000288, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000298, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a8, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b8, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072017 },
-{ 0x00000001, 0x208022e8, 0x00000249, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000259, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000269, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000279, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000289, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000299, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a9, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d8, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b9, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00000001, 0x20a822e8, 0x000002e8, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f8, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000100, 0x00000000 },
-{ 0x00000001, 0x61a10a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000308, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000318, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000104, 0x00000000 },
-{ 0x00000001, 0x61a90a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000328, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000338, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000108, 0x00000000 },
-{ 0x00000001, 0x61b10a88, 0x00000220, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472017 },
-{ 0x00000001, 0x20a022e8, 0x000002c9, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000010c, 0x00000000 },
-{ 0x00000001, 0x61b90a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d9, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e9, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000110, 0x00000000 },
-{ 0x00000001, 0x61c10a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f9, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000309, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000114, 0x00000000 },
-{ 0x00000001, 0x61c90a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000319, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000329, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000118, 0x00000000 },
-{ 0x00000001, 0x61d10a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000339, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x00000001, 0x22203a28, 0x0000011c, 0x00000000 },
-{ 0x00000001, 0x61d90a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000120, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c3, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x00000243, 0x00000000 },
-{ 0x00000001, 0x206022e8, 0x000002c2, 0x00000000 },
-{ 0x00000001, 0x204022e8, 0x00000242, 0x00000000 },
-{ 0x00000001, 0x61e10a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000124, 0x00000000 },
-{ 0x00000001, 0x61e90a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000128, 0x00000000 },
-{ 0x00000001, 0x61f10a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000012c, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d3, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000253, 0x00000000 },
-{ 0x00000001, 0x61f90a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x206422e8, 0x000002d2, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e3, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000263, 0x00000000 },
-{ 0x00000001, 0x204422e8, 0x00000252, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000130, 0x00000000 },
-{ 0x00000001, 0x62010a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x204822e8, 0x00000262, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000273, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f3, 0x00000000 },
-{ 0x00000001, 0x206822e8, 0x000002e2, 0x00000000 },
-{ 0x00000001, 0x206c22e8, 0x000002f2, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000303, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000283, 0x00000000 },
-{ 0x00000001, 0x204c22e8, 0x00000272, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000134, 0x00000000 },
-{ 0x00000001, 0x62090a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x205022e8, 0x00000282, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000293, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000313, 0x00000000 },
-{ 0x00000001, 0x207022e8, 0x00000302, 0x00000000 },
-{ 0x00000001, 0x207422e8, 0x00000312, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000323, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a3, 0x00000000 },
-{ 0x00000001, 0x205422e8, 0x00000292, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000138, 0x00000000 },
-{ 0x00000001, 0x62110a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x205822e8, 0x000002a2, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b3, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000333, 0x00000000 },
-{ 0x00000001, 0x207822e8, 0x00000322, 0x00000000 },
-{ 0x00000001, 0x207c22e8, 0x00000332, 0x00000000 },
-{ 0x00800041, 0x20c03ae8, 0x3e8d0080, 0x3875735f },
-{ 0x00000001, 0x205c22e8, 0x000002b2, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000013c, 0x00000000 },
-{ 0x00000001, 0x62190a88, 0x00000220, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872003 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72003 },
-{ 0x00000001, 0x208022e8, 0x00000244, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c4, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000254, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d4, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000264, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e4, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f4, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000274, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000284, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000304, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000314, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000294, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a4, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000324, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000334, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b4, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x20a022e8, 0x000002c5, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x00000245, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000255, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d5, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e5, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000265, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000275, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f5, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000305, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000285, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000295, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000315, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000325, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a5, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b5, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000335, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x208022e8, 0x00000246, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c6, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d6, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000256, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000266, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e6, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f6, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000276, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000286, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000306, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000316, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000296, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a6, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000326, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000336, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b6, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00000001, 0x208022e8, 0x00000247, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x00000001, 0x208422e8, 0x00000257, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c7, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000267, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000277, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d7, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e7, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000287, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000297, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f7, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000307, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a7, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b7, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000317, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000327, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x208022e8, 0x00000248, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000337, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x208422e8, 0x00000258, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000268, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c8, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d8, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000278, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000288, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e8, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f8, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000298, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a8, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000308, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000318, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b8, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x20b822e8, 0x00000328, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000338, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x00000249, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000259, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x20a022e8, 0x000002c9, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000269, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000279, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d9, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e9, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000289, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000299, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f9, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000309, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a9, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b9, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000319, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000329, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072017 },
-{ 0x00000001, 0x20bc22e8, 0x00000339, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x0000024a, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472017 },
-{ 0x00000001, 0x20a022e8, 0x000002ca, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x0000025a, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x0000026a, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002da, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002ea, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x0000027a, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x0000028a, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002fa, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x0000030a, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x0000029a, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002aa, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x0000031a, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x0000032a, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002ba, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00000001, 0x20bc22e8, 0x0000033a, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x00000001, 0x22203a28, 0x00000100, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000104, 0x00000000 },
-{ 0x00000001, 0x41a22288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000108, 0x00000000 },
-{ 0x00000001, 0x41aa2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000010c, 0x00000000 },
-{ 0x00000001, 0x41b22288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000110, 0x00000000 },
-{ 0x00000001, 0x41ba2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000114, 0x00000000 },
-{ 0x00000001, 0x41c22288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000118, 0x00000000 },
-{ 0x00000001, 0x41ca2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000011c, 0x00000000 },
-{ 0x00000001, 0x41d22288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000120, 0x00000000 },
-{ 0x00000001, 0x41da2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000124, 0x00000000 },
-{ 0x00000001, 0x41e22288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x41ea2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000128, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c4, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x00000244, 0x00000000 },
-{ 0x00000001, 0x204022e8, 0x00000243, 0x00000000 },
-{ 0x00000001, 0x206022e8, 0x000002c3, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000012c, 0x00000000 },
-{ 0x00000001, 0x41f22288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d4, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000254, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000130, 0x00000000 },
-{ 0x00000001, 0x41fa2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x204422e8, 0x00000253, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e4, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000264, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x204822e8, 0x00000263, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f4, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000274, 0x00000000 },
-{ 0x00000001, 0x206422e8, 0x000002d3, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000134, 0x00000000 },
-{ 0x00000001, 0x42022288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x206822e8, 0x000002e3, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000284, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000304, 0x00000000 },
-{ 0x00000001, 0x204c22e8, 0x00000273, 0x00000000 },
-{ 0x00000001, 0x205022e8, 0x00000283, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000314, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000294, 0x00000000 },
-{ 0x00000001, 0x206c22e8, 0x000002f3, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000138, 0x00000000 },
-{ 0x00000001, 0x420a2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x207022e8, 0x00000303, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a4, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000324, 0x00000000 },
-{ 0x00000001, 0x205422e8, 0x00000293, 0x00000000 },
-{ 0x00000001, 0x205822e8, 0x000002a3, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000334, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b4, 0x00000000 },
-{ 0x00000001, 0x207422e8, 0x00000313, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000013c, 0x00000000 },
-{ 0x00000001, 0x42122288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x207822e8, 0x00000323, 0x00000000 },
-{ 0x00800041, 0x20c03ae8, 0x3e8d0080, 0x3875735f },
-{ 0x00000001, 0x205c22e8, 0x000002b3, 0x00000000 },
-{ 0x00000001, 0x207c22e8, 0x00000333, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872003 },
-{ 0x00000001, 0x421a2288, 0x00000024, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72003 },
-{ 0x00000001, 0x208022e8, 0x00000245, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c5, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000255, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d5, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000265, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000275, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e5, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f5, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000285, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000295, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000305, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000315, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a5, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b5, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000325, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000335, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x208022e8, 0x00000246, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x20a022e8, 0x000002c6, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000256, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000266, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d6, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e6, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000276, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000286, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f6, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000306, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000296, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a6, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000316, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000326, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b6, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20bc22e8, 0x00000336, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x208022e8, 0x00000247, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000257, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c7, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d7, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000267, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000277, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e7, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f7, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000287, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000297, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000307, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000317, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a7, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b7, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000327, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000337, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x00000001, 0x208022e8, 0x00000248, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000258, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000268, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c8, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000278, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000288, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d8, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e8, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000298, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a8, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f8, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000308, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b8, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20b422e8, 0x00000318, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000328, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x00000249, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000259, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000338, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x208822e8, 0x00000269, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000279, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c9, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d9, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000289, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000299, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e9, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f9, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a9, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b9, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000309, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000319, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x208022e8, 0x0000024a, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000329, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000339, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x0000025a, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x0000026a, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x20a022e8, 0x000002ca, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x0000027a, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x0000028a, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002da, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002ea, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x0000029a, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002aa, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002fa, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x0000030a, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002ba, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x0000031a, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x0000032a, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072017 },
-{ 0x00000001, 0x20bc22e8, 0x0000033a, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x0000024b, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472017 },
-{ 0x00000001, 0x20a022e8, 0x000002cb, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x0000025b, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x0000026b, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002db, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002eb, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x0000027b, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x0000028b, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002fb, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x0000030b, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x0000029b, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002ab, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x0000031b, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x0000032b, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002bb, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00000001, 0x20bc22e8, 0x0000033b, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x00000001, 0x22203a28, 0x00000100, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000104, 0x00000000 },
-{ 0x00000001, 0x41a32288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000108, 0x00000000 },
-{ 0x00000001, 0x41ab2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000010c, 0x00000000 },
-{ 0x00000001, 0x41b32288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000110, 0x00000000 },
-{ 0x00000001, 0x41bb2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000114, 0x00000000 },
-{ 0x00000001, 0x41c32288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000118, 0x00000000 },
-{ 0x00000001, 0x41cb2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000011c, 0x00000000 },
-{ 0x00000001, 0x41d32288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000120, 0x00000000 },
-{ 0x00000001, 0x41db2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000124, 0x00000000 },
-{ 0x00000001, 0x41e32288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x41eb2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000128, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c5, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x00000245, 0x00000000 },
-{ 0x00000001, 0x206022e8, 0x000002c4, 0x00000000 },
-{ 0x00000001, 0x204022e8, 0x00000244, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000012c, 0x00000000 },
-{ 0x00000001, 0x41f32288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000130, 0x00000000 },
-{ 0x00000001, 0x41fb2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d5, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000255, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e5, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000265, 0x00000000 },
-{ 0x00000001, 0x206422e8, 0x000002d4, 0x00000000 },
-{ 0x00000001, 0x204422e8, 0x00000254, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000134, 0x00000000 },
-{ 0x00000001, 0x42032288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x204822e8, 0x00000264, 0x00000000 },
-{ 0x00000001, 0x206822e8, 0x000002e4, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000275, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f5, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000305, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000285, 0x00000000 },
-{ 0x00000001, 0x206c22e8, 0x000002f4, 0x00000000 },
-{ 0x00000001, 0x204c22e8, 0x00000274, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000138, 0x00000000 },
-{ 0x00000001, 0x420b2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x205022e8, 0x00000284, 0x00000000 },
-{ 0x00000001, 0x207022e8, 0x00000304, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000295, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000315, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000325, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a5, 0x00000000 },
-{ 0x00000001, 0x207422e8, 0x00000314, 0x00000000 },
-{ 0x00000001, 0x205422e8, 0x00000294, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000013c, 0x00000000 },
-{ 0x00000001, 0x42132288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x205822e8, 0x000002a4, 0x00000000 },
-{ 0x00000001, 0x207822e8, 0x00000324, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b5, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000335, 0x00000000 },
-{ 0x00800041, 0x20c03ae8, 0x3e8d0080, 0x3875735f },
-{ 0x00000001, 0x207c22e8, 0x00000334, 0x00000000 },
-{ 0x00000001, 0x205c22e8, 0x000002b4, 0x00000000 },
-{ 0x00000001, 0x421b2288, 0x00000024, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872003 },
-{ 0x00000001, 0x208022e8, 0x00000246, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c6, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72003 },
-{ 0x00000001, 0x208422e8, 0x00000256, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000266, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d6, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000276, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000286, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e6, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f6, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000296, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a6, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000306, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000316, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b6, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x20b822e8, 0x00000326, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000336, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x00000247, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000257, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x20a022e8, 0x000002c7, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000267, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000277, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d7, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e7, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000287, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000297, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f7, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000307, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a7, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b7, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000317, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000327, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x208022e8, 0x00000248, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000337, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x208422e8, 0x00000258, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000268, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c8, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d8, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000278, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000288, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e8, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f8, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000298, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a8, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000308, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000318, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b8, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000328, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00000001, 0x20bc22e8, 0x00000338, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x00000249, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000259, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000269, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x00000001, 0x208c22e8, 0x00000279, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000289, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c9, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d9, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000299, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a9, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e9, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f9, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b9, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20b022e8, 0x00000309, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000319, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x0000024a, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x0000025a, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000329, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000339, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x0000026a, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x0000027a, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x20a022e8, 0x000002ca, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x0000028a, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x0000029a, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002da, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002ea, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002aa, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002ba, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002fa, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x0000030a, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x208022e8, 0x0000024b, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x0000031a, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x0000032a, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x0000025b, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x0000026b, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x0000033a, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x208c22e8, 0x0000027b, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x0000028b, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002cb, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002db, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x0000029b, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002ab, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002eb, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002fb, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002bb, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x0000030b, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072017 },
-{ 0x00000001, 0x20b422e8, 0x0000031b, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x0000024c, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x0000025c, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x0000026c, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x0000027c, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x0000028c, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x0000029c, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002ac, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002bc, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00000001, 0x22203a28, 0x00000100, 0x00000000 },
-{ 0x00000001, 0x61a40a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000104, 0x00000000 },
-{ 0x00000001, 0x61ac0a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x0000032b, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000108, 0x00000000 },
-{ 0x00000001, 0x61b40a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x0000033b, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472017 },
-{ 0x00000001, 0x22203a28, 0x0000010c, 0x00000000 },
-{ 0x00000001, 0x61bc0a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002cc, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002dc, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000110, 0x00000000 },
-{ 0x00000001, 0x61c40a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002ec, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002fc, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000114, 0x00000000 },
-{ 0x00000001, 0x61cc0a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x0000030c, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x0000031c, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000118, 0x00000000 },
-{ 0x00000001, 0x61d40a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x0000032c, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x0000033c, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000011c, 0x00000000 },
-{ 0x00000001, 0x61dc0a88, 0x00000220, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x00000001, 0x22203a28, 0x00000120, 0x00000000 },
-{ 0x00000001, 0x61e40a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000124, 0x00000000 },
-{ 0x00000001, 0x61ec0a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000128, 0x00000000 },
-{ 0x00000001, 0x61f40a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000012c, 0x00000000 },
-{ 0x00000001, 0x61fc0a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000130, 0x00000000 },
-{ 0x00000001, 0x62040a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000134, 0x00000000 },
-{ 0x00000001, 0x620c0a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000138, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c6, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x00000246, 0x00000000 },
-{ 0x00000001, 0x206022e8, 0x000002c5, 0x00000000 },
-{ 0x00000001, 0x204022e8, 0x00000245, 0x00000000 },
-{ 0x00000001, 0x62140a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d6, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000256, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000266, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e6, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f6, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000276, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000286, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000306, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000316, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000296, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a6, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000326, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000336, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b6, 0x00000000 },
-{ 0x00800041, 0x20c03ae8, 0x3e8d0080, 0x3875735f },
-{ 0x00000001, 0x206422e8, 0x000002d5, 0x00000000 },
-{ 0x00000001, 0x204422e8, 0x00000255, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x00000247, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c7, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000257, 0x00000000 },
-{ 0x00000001, 0x204822e8, 0x00000265, 0x00000000 },
-{ 0x00000001, 0x206822e8, 0x000002e5, 0x00000000 },
-{ 0x00000001, 0x206c22e8, 0x000002f5, 0x00000000 },
-{ 0x00000001, 0x204c22e8, 0x00000275, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000267, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000277, 0x00000000 },
-{ 0x00000001, 0x205022e8, 0x00000285, 0x00000000 },
-{ 0x00000001, 0x207022e8, 0x00000305, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d7, 0x00000000 },
-{ 0x00000001, 0x207422e8, 0x00000315, 0x00000000 },
-{ 0x00000001, 0x205422e8, 0x00000295, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000287, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e7, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000297, 0x00000000 },
-{ 0x00000001, 0x205822e8, 0x000002a5, 0x00000000 },
-{ 0x00000001, 0x207822e8, 0x00000325, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f7, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000013c, 0x00000000 },
-{ 0x00000001, 0x207c22e8, 0x00000335, 0x00000000 },
-{ 0x00000001, 0x205c22e8, 0x000002b5, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a7, 0x00000000 },
-{ 0x00000001, 0x621c0a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000307, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b7, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872003 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72003 },
-{ 0x00000001, 0x20b422e8, 0x00000317, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x20b822e8, 0x00000327, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x00000248, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000258, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000268, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000337, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000278, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000288, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x20a022e8, 0x000002c8, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000298, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a8, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d8, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e8, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b8, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20ac22e8, 0x000002f8, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000308, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x00000249, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000259, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000318, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000328, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000269, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000279, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000338, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x209022e8, 0x00000289, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000299, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c9, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d9, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a9, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b9, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e9, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f9, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00000001, 0x208022e8, 0x0000024a, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000309, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000319, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x0000025a, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x0000026a, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000329, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000339, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x0000027a, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x0000028a, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x00000001, 0x20a022e8, 0x000002ca, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x0000029a, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002aa, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002da, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002ea, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002ba, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002fa, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20b022e8, 0x0000030a, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x0000024b, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x0000025b, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x0000026b, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x0000031a, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x0000027b, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x0000028b, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x0000032a, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x0000033a, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x0000029b, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002ab, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x20a022e8, 0x000002cb, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002bb, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x20a422e8, 0x000002db, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002eb, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x0000024c, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x0000025c, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002fb, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x0000030b, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x0000026c, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x0000027c, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x0000031b, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x0000032b, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x0000028c, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x0000029c, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x0000033b, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x209822e8, 0x000002ac, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002bc, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002cc, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002dc, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072017 },
-{ 0x00000001, 0x208022e8, 0x0000024d, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002ec, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002fc, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x0000025d, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x0000026d, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x0000030c, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x0000031c, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x0000027d, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x0000028d, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x0000032c, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x0000033c, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x0000029d, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002ad, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472017 },
-{ 0x00000001, 0x20a022e8, 0x000002cd, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002bd, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002dd, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00000001, 0x20a822e8, 0x000002ed, 0x00000000 },
-{ 0x00000001, 0x204022e8, 0x00000246, 0x00000000 },
-{ 0x00000001, 0x206022e8, 0x000002c6, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000100, 0x00000000 },
-{ 0x00000001, 0x61a50a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000104, 0x00000000 },
-{ 0x00000001, 0x61ad0a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000108, 0x00000000 },
-{ 0x00000001, 0x61b50a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000010c, 0x00000000 },
-{ 0x00000001, 0x61bd0a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000110, 0x00000000 },
-{ 0x00000001, 0x61c50a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002fd, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000114, 0x00000000 },
-{ 0x00000001, 0x61cd0a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x0000030d, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x0000031d, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000118, 0x00000000 },
-{ 0x00000001, 0x61d50a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x0000032d, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x0000033d, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000011c, 0x00000000 },
-{ 0x00000001, 0x61dd0a88, 0x00000220, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x00000001, 0x22203a28, 0x00000120, 0x00000000 },
-{ 0x00000001, 0x61e50a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000124, 0x00000000 },
-{ 0x00000001, 0x61ed0a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000128, 0x00000000 },
-{ 0x00000001, 0x61f50a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000012c, 0x00000000 },
-{ 0x00000001, 0x61fd0a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000130, 0x00000000 },
-{ 0x00000001, 0x204422e8, 0x00000256, 0x00000000 },
-{ 0x00000001, 0x62050a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000134, 0x00000000 },
-{ 0x00000001, 0x204822e8, 0x00000266, 0x00000000 },
-{ 0x00000001, 0x204c22e8, 0x00000276, 0x00000000 },
-{ 0x00000001, 0x620d0a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000138, 0x00000000 },
-{ 0x00000001, 0x205022e8, 0x00000286, 0x00000000 },
-{ 0x00000001, 0x205422e8, 0x00000296, 0x00000000 },
-{ 0x00000001, 0x62150a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x206422e8, 0x000002d6, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000013c, 0x00000000 },
-{ 0x00000001, 0x205822e8, 0x000002a6, 0x00000000 },
-{ 0x00000001, 0x206822e8, 0x000002e6, 0x00000000 },
-{ 0x00000001, 0x205c22e8, 0x000002b6, 0x00000000 },
-{ 0x00000001, 0x621d0a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x206c22e8, 0x000002f6, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c7, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x00000247, 0x00000000 },
-{ 0x00000001, 0x207022e8, 0x00000306, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d7, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000257, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000267, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e7, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f7, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000277, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000287, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000307, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000317, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000297, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a7, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000327, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000337, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b7, 0x00000000 },
-{ 0x00800041, 0x20c03ae8, 0x3e8d0080, 0x3875735f },
-{ 0x00000001, 0x208022e8, 0x00000248, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c8, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872003 },
-{ 0x00000001, 0x208422e8, 0x00000258, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000268, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000278, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000288, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000298, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a8, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d8, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b8, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e8, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x208022e8, 0x00000249, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f8, 0x00000000 },
-{ 0x00000001, 0x207422e8, 0x00000316, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000308, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000259, 0x00000000 },
-{ 0x00000001, 0x207822e8, 0x00000326, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000269, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000318, 0x00000000 },
-{ 0x00000001, 0x207c22e8, 0x00000336, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000328, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000279, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72003 },
-{ 0x00000001, 0x209022e8, 0x00000289, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000338, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x209422e8, 0x00000299, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a9, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c9, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d9, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b9, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e9, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20ac22e8, 0x000002f9, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x0000024a, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x0000025a, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x0000026a, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000309, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x0000027a, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x0000028a, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000319, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000329, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x0000029a, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002aa, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000339, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x209c22e8, 0x000002ba, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00000001, 0x20a022e8, 0x000002ca, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002da, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x0000024b, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x0000025b, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002ea, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002fa, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x0000026b, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x0000027b, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x0000030a, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x0000031a, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x0000028b, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x0000029b, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x0000032a, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x0000033a, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002ab, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002bb, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x00000001, 0x20a022e8, 0x000002cb, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x208022e8, 0x0000024c, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002db, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002eb, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x0000025c, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x0000026c, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002fb, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x0000030b, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x0000027c, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x0000028c, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x0000031b, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x0000032b, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x0000029c, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002ac, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x0000033b, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x209c22e8, 0x000002bc, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002cc, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002dc, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x20a822e8, 0x000002ec, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002fc, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x0000030c, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x0000031c, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x0000032c, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x0000033c, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x0000024d, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x20a022e8, 0x000002cd, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x0000025d, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x0000026d, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002dd, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002ed, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x0000027d, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x0000028d, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002fd, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x0000030d, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x0000029d, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002ad, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x0000031d, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x0000032d, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002bd, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072017 },
-{ 0x00000001, 0x20bc22e8, 0x0000033d, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472017 },
-{ 0x00000001, 0x208022e8, 0x0000024e, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x0000025e, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002ce, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002de, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x0000026e, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x0000027e, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002ee, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002fe, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x0000028e, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x0000029e, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x0000030e, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x0000031e, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002ae, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002be, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x0000032e, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x0000033e, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00000001, 0x22203a28, 0x00000100, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000104, 0x00000000 },
-{ 0x00000001, 0x41a62288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x41ae2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000108, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x204022e8, 0x00000247, 0x00000000 },
-{ 0x00000001, 0x206022e8, 0x000002c7, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000010c, 0x00000000 },
-{ 0x00000001, 0x41b62288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000110, 0x00000000 },
-{ 0x00000001, 0x41be2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000114, 0x00000000 },
-{ 0x00000001, 0x41c62288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000118, 0x00000000 },
-{ 0x00000001, 0x41ce2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000011c, 0x00000000 },
-{ 0x00000001, 0x41d62288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000120, 0x00000000 },
-{ 0x00000001, 0x41de2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000124, 0x00000000 },
-{ 0x00000001, 0x41e62288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000128, 0x00000000 },
-{ 0x00000001, 0x41ee2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000012c, 0x00000000 },
-{ 0x00000001, 0x41f62288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000130, 0x00000000 },
-{ 0x00000001, 0x41fe2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x204422e8, 0x00000257, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000134, 0x00000000 },
-{ 0x00000001, 0x42062288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x204822e8, 0x00000267, 0x00000000 },
-{ 0x00000001, 0x204c22e8, 0x00000277, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x00000138, 0x00000000 },
-{ 0x00000001, 0x420e2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x205022e8, 0x00000287, 0x00000000 },
-{ 0x00000001, 0x205422e8, 0x00000297, 0x00000000 },
-{ 0x00000001, 0x22203a28, 0x0000013c, 0x00000000 },
-{ 0x00000001, 0x42162288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000220, 0x00000000 },
-{ 0x00000001, 0x205822e8, 0x000002a7, 0x00000000 },
-{ 0x00000001, 0x206422e8, 0x000002d7, 0x00000000 },
-{ 0x00000001, 0x205c22e8, 0x000002b7, 0x00000000 },
-{ 0x00000001, 0x421e2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x206822e8, 0x000002e7, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c8, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x00000248, 0x00000000 },
-{ 0x00000001, 0x206c22e8, 0x000002f7, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d8, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x00000258, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000268, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e8, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f8, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000278, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000288, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000308, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000318, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000298, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a8, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000328, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x00000338, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b8, 0x00000000 },
-{ 0x00800041, 0x20c03ae8, 0x3e8d0080, 0x3875735f },
-{ 0x00000001, 0x208022e8, 0x00000249, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002c9, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872003 },
-{ 0x00000001, 0x208422e8, 0x00000259, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x00000269, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x00000279, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x00000289, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x00000299, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002a9, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002b9, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002d9, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x208022e8, 0x0000024a, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002e9, 0x00000000 },
-{ 0x00000001, 0x207022e8, 0x00000307, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002f9, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x0000025a, 0x00000000 },
-{ 0x00000001, 0x207422e8, 0x00000317, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x0000026a, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x00000309, 0x00000000 },
-{ 0x00000001, 0x207822e8, 0x00000327, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x00000319, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x0000027a, 0x00000000 },
-{ 0x00000001, 0x207c22e8, 0x00000337, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x0000028a, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x00000329, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72003 },
-{ 0x00000001, 0x20bc22e8, 0x00000339, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x0000029a, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002aa, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x20a022e8, 0x000002ca, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002ba, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002da, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x20a822e8, 0x000002ea, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x0000024b, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002fa, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x0000025b, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x0000026b, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x0000030a, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x0000031a, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x0000027b, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x0000028b, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x0000032a, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x0000033a, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x0000029b, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002ab, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x20a022e8, 0x000002cb, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002bb, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00000001, 0x20a422e8, 0x000002db, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002eb, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x0000024c, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x0000025c, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002fb, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x0000030b, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x0000026c, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x0000027c, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x0000031b, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x0000032b, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x0000028c, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x0000029c, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x0000033b, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x00000001, 0x209822e8, 0x000002ac, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002bc, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002cc, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002dc, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00000001, 0x208022e8, 0x0000024d, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002ec, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002fc, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x0000025d, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x0000026d, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x0000030c, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x0000031c, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x0000027d, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x0000028d, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x0000032c, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x0000033c, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x0000029d, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002ad, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x00000001, 0x209c22e8, 0x000002bd, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002cd, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x20a422e8, 0x000002dd, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002ed, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002fd, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x0000030d, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x0000031d, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x0000032d, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x0000033d, 0x00000000 },
-{ 0x00000001, 0x208022e8, 0x0000024e, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00000001, 0x20a022e8, 0x000002ce, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x0000025e, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x0000026e, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002de, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002ee, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x0000027e, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x0000028e, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002fe, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x0000030e, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x0000029e, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002ae, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x0000031e, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x0000032e, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002be, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072017 },
-{ 0x00000001, 0x20bc22e8, 0x0000033e, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472017 },
-{ 0x00000001, 0x208022e8, 0x0000024f, 0x00000000 },
-{ 0x00000001, 0x208422e8, 0x0000025f, 0x00000000 },
-{ 0x00000001, 0x20a022e8, 0x000002cf, 0x00000000 },
-{ 0x00000001, 0x20a422e8, 0x000002df, 0x00000000 },
-{ 0x00000001, 0x208822e8, 0x0000026f, 0x00000000 },
-{ 0x00000001, 0x208c22e8, 0x0000027f, 0x00000000 },
-{ 0x00000001, 0x20a822e8, 0x000002ef, 0x00000000 },
-{ 0x00000001, 0x20ac22e8, 0x000002ff, 0x00000000 },
-{ 0x00000001, 0x209022e8, 0x0000028f, 0x00000000 },
-{ 0x00000001, 0x209422e8, 0x0000029f, 0x00000000 },
-{ 0x00000001, 0x20b022e8, 0x0000030f, 0x00000000 },
-{ 0x00000001, 0x20b422e8, 0x0000031f, 0x00000000 },
-{ 0x00000001, 0x209822e8, 0x000002af, 0x00000000 },
-{ 0x00000001, 0x209c22e8, 0x000002bf, 0x00000000 },
-{ 0x00000001, 0x20b822e8, 0x0000032f, 0x00000000 },
-{ 0x00000001, 0x20bc22e8, 0x0000033f, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00000001, 0x20403a28, 0x00000100, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x00000001, 0x60240a88, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x20403a28, 0x00000104, 0x00000000 },
-{ 0x00000001, 0x41a72288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x41af2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x20403a28, 0x00000108, 0x00000000 },
-{ 0x00600001, 0x21803ae8, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000200, 0x06000344, 0x0a0a8000 },
-{ 0x00000001, 0x60240a88, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x20403a28, 0x0000010c, 0x00000000 },
-{ 0x00000001, 0x41b72288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x20403a28, 0x00000110, 0x00000000 },
-{ 0x00000001, 0x41bf2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x20403a28, 0x00000114, 0x00000000 },
-{ 0x00000001, 0x41c72288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x20403a28, 0x00000118, 0x00000000 },
-{ 0x00000001, 0x41cf2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x20403a28, 0x0000011c, 0x00000000 },
-{ 0x00000001, 0x41d72288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x20403a28, 0x00000120, 0x00000000 },
-{ 0x00000001, 0x41df2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x20403a28, 0x00000124, 0x00000000 },
-{ 0x00000001, 0x41e72288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x20403a28, 0x00000128, 0x00000000 },
-{ 0x00000001, 0x41ef2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x20403a28, 0x0000012c, 0x00000000 },
-{ 0x00000001, 0x41f72288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x20403a28, 0x00000130, 0x00000000 },
-{ 0x00000001, 0x41ff2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x20403a28, 0x00000134, 0x00000000 },
-{ 0x00000001, 0x42072288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x20403a28, 0x00000138, 0x00000000 },
-{ 0x00000001, 0x420f2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x60240a88, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x20403a28, 0x0000013c, 0x00000000 },
-{ 0x00000001, 0x42172288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x21880608, 0x00000000, 0x000f0007 },
-{ 0x00000001, 0x60240a88, 0x00000040, 0x00000000 },
-{ 0x00000001, 0x21803ae8, 0x0000002c, 0x00000000 },
-{ 0x00000001, 0x421f2288, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x21843ae8, 0x00000028, 0x00000000 },
-{ 0x0c600031, 0x20003a00, 0x00000180, 0x00000200 },
-{ 0x00000040, 0x202c0208, 0x1600002c, 0x00080008 },
-{ 0x00000040, 0x20240208, 0x1e000020, 0xfffcfffc },
-{ 0x05000010, 0x20000200, 0x0200002c, 0x00000024 },
-{ 0x00010020, 0x34000004, 0x0e001400, 0xffff9830 },
-{ 0x00600001, 0x20403ae8, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000200, 0x06000340, 0x02290000 },
-{ 0x00000001, 0x20480608, 0x00000000, 0x000f0003 },
-{ 0x00000001, 0x20401608, 0x00000000, 0x00000000 },
-{ 0x00000001, 0x20443ae8, 0x00000028, 0x00000000 },
-{ 0x0c600031, 0x20403a08, 0x00000040, 0x00000200 },
-{ 0x00800001, 0x20603ae8, 0x008d0040, 0x00000000 },
-{ 0x00000040, 0x22000200, 0x06000344, 0x060a8000 },
-{ 0x00600001, 0x20403ae8, 0x008d0000, 0x00000000 },
-{ 0x00000001, 0x20480608, 0x00000000, 0x000f0003 },
-{ 0x00000001, 0x20401608, 0x00000000, 0x00000000 },
-{ 0x00000001, 0x20443ae8, 0x00000028, 0x00000000 },
-{ 0x0c600031, 0x20003a00, 0x00000040, 0x00000200 },
-{ 0x00000040, 0x20240208, 0x1e000020, 0xfffcfffc },
-{ 0x00600001, 0x20403ae8, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000200, 0x06000340, 0x02290000 },
-{ 0x00000001, 0x20480608, 0x00000000, 0x000f0003 },
-{ 0x00000001, 0x20403ae8, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x20443ae8, 0x00000028, 0x00000000 },
-{ 0x0c600031, 0x20403a08, 0x00000040, 0x00000200 },
-{ 0x00800001, 0x20603ae8, 0x008d0040, 0x00000000 },
-{ 0x00000040, 0x22000200, 0x06000344, 0x060a8000 },
-{ 0x00600001, 0x20403ae8, 0x008d0000, 0x00000000 },
-{ 0x00000001, 0x20480608, 0x00000000, 0x000f0003 },
-{ 0x00000001, 0x20403ae8, 0x00000024, 0x00000000 },
-{ 0x00000001, 0x20443ae8, 0x00000028, 0x00000000 },
-{ 0x0c600031, 0x20003a00, 0x00000040, 0x00000200 },
-{ 0x00600001, 0x2e003ae8, 0x008d0000, 0x00000000 },
-{ 0x07000031, 0x20003a00, 0x06000e00, 0x82000010 },
diff --git a/src/shaders/post_processing/gen8/sharpening_unmask.g8b b/src/shaders/post_processing/gen8/sharpening_unmask.g8b
deleted file mode 100644
index f27a2d5..0000000
--- a/src/shaders/post_processing/gen8/sharpening_unmask.g8b
+++ /dev/null
@@ -1,159 +0,0 @@
-{ 0x00000001, 0x21281608, 0x00000000, 0x00000000 },
-{ 0x00000001, 0x202c1608, 0x00000000, 0x00000000 },
-{ 0x00000001, 0x21481608, 0x00000000, 0x00050005 },
-{ 0x00000001, 0x21681608, 0x00000000, 0x00040004 },
-{ 0x00000001, 0x21881608, 0x00000000, 0x00020002 },
-{ 0x00000001, 0x21081608, 0x00000000, 0x00010001 },
-{ 0x06000010, 0x20000202, 0x16000020, 0x00000000 },
-{ 0x00010020, 0x34000006, 0x0e001400, 0x00000530 },
-{ 0x00600001, 0x20403ae8, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000200, 0x06000128, 0x02190000 },
-{ 0x06000010, 0x20000201, 0x16000030, 0x00000000 },
-{ 0x00000001, 0x20480608, 0x00000000, 0x00030003 },
-{ 0x00000001, 0x20403ae8, 0x0000002c, 0x00000000 },
-{ 0x00000001, 0x20443ae8, 0x00000028, 0x00000000 },
-{ 0x0c600031, 0x20603a08, 0x00000040, 0x00000200 },
-{ 0x00000040, 0x22000200, 0x06000188, 0x02190000 },
-{ 0x00400001, 0x21a03ae8, 0x00690060, 0x00000000 },
-{ 0x0c600031, 0x20403a08, 0x00000040, 0x00000200 },
-{ 0x00400001, 0x21c03ae8, 0x00690040, 0x00000000 },
-{ 0x00010020, 0x34000005, 0x0e001400, 0x00000150 },
-{ 0x00000001, 0x21821e68, 0x00000000, 0x00800080 },
-{ 0x00400001, 0x21703ae8, 0x006901a0, 0x00000000 },
-{ 0x00400001, 0x21503ae8, 0x006901c0, 0x00000000 },
-{ 0x0080802c, 0x21600008, 0x0e490000, 0x00000460 },
-{ 0x00000001, 0x210c1e68, 0x00000000, 0x00800080 },
-{ 0x00400001, 0x21703ae8, 0x006901a0, 0x00000000 },
-{ 0x00400001, 0x21503ae8, 0x00690150, 0x00000000 },
-{ 0x0080802c, 0x21200008, 0x0e490000, 0x000004e0 },
-{ 0x00400001, 0x21703ae8, 0x00690150, 0x00000000 },
-{ 0x00000001, 0x21801e68, 0x00000000, 0x00800080 },
-{ 0x00400001, 0x21503ae8, 0x00690150, 0x00000000 },
-{ 0x0080802c, 0x21000008, 0x0e490000, 0x00000550 },
-{ 0x00000001, 0x21801e68, 0x00000000, 0x00800080 },
-{ 0x0080802c, 0x21000008, 0x0e490000, 0x00000530 },
-{ 0x00000001, 0x41800268, 0x00000030, 0x00000000 },
-{ 0x00400001, 0x21703ae8, 0x00690150, 0x00000000 },
-{ 0x00000001, 0x20241a68, 0x00000180, 0x00000000 },
-{ 0x00400001, 0x21503ae8, 0x006901a0, 0x00000000 },
-{ 0x0080802c, 0x21000008, 0x0e490000, 0x000004e0 },
-{ 0x00400001, 0x21903ae8, 0x00690150, 0x00000000 },
-{ 0x00000020, 0x34000004, 0x0e001400, 0x00000010 },
-{ 0x00400001, 0x21903ae8, 0x006901a0, 0x00000000 },
-{ 0x01000010, 0x20000200, 0x16000034, 0x00000000 },
-{ 0x00010020, 0x34000004, 0x0e001400, 0x00000160 },
-{ 0x00000001, 0x21121e68, 0x00000000, 0x00800080 },
-{ 0x00400001, 0x21703ae8, 0x006901a0, 0x00000000 },
-{ 0x00400001, 0x21503ae8, 0x006901c0, 0x00000000 },
-{ 0x0080802c, 0x21800008, 0x0e490000, 0x00000560 },
-{ 0x00000001, 0x210c1e68, 0x00000000, 0x00800080 },
-{ 0x00400001, 0x21703ae8, 0x006901a0, 0x00000000 },
-{ 0x00400001, 0x21503ae8, 0x00690150, 0x00000000 },
-{ 0x0080802c, 0x21200008, 0x0e490000, 0x00000360 },
-{ 0x00600040, 0x41502288, 0x1eae4150, 0x00ff00ff },
-{ 0x00000001, 0x21101e68, 0x00000000, 0x00800080 },
-{ 0x00600040, 0x41512288, 0x1eae4151, 0x00ff00ff },
-{ 0x00400001, 0x21703ae8, 0x00690150, 0x00000000 },
-{ 0x0080802c, 0x21400008, 0x0e490000, 0x00000590 },
-{ 0x00000001, 0x21101e68, 0x00000000, 0x00800080 },
-{ 0x0080802c, 0x21400008, 0x0e490000, 0x00000570 },
-{ 0x00000001, 0x41100268, 0x00000034, 0x00000000 },
-{ 0x00400001, 0x21703ae8, 0x00690150, 0x00000000 },
-{ 0x00000001, 0x20241a68, 0x00000110, 0x00000000 },
-{ 0x00400001, 0x21503ae8, 0x00690190, 0x00000000 },
-{ 0x0080802c, 0x21400008, 0x0e490000, 0x00000520 },
-{ 0x00400001, 0x21e03ae8, 0x00690150, 0x00000000 },
-{ 0x00000020, 0x34000004, 0x0e001400, 0x00000010 },
-{ 0x00400001, 0x21e03ae8, 0x00690190, 0x00000000 },
-{ 0x00600001, 0x20403ae8, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000200, 0x06000168, 0x040a8000 },
-{ 0x00400001, 0x20603ae8, 0x006901e0, 0x00000000 },
-{ 0x00000001, 0x20480608, 0x00000000, 0x00030003 },
-{ 0x00000001, 0x20403ae8, 0x0000002c, 0x00000000 },
-{ 0x00000001, 0x20443ae8, 0x00000028, 0x00000000 },
-{ 0x0c600031, 0x20003a00, 0x00000040, 0x00000200 },
-{ 0x0000000c, 0x20240208, 0x16000028, 0x00010001 },
-{ 0x00600001, 0x20403ae8, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000200, 0x06000108, 0x02190000 },
-{ 0x00000001, 0x20480608, 0x00000000, 0x00010003 },
-{ 0x00000001, 0x20403ae8, 0x0000002c, 0x00000000 },
-{ 0x00000001, 0x20443ae8, 0x00000024, 0x00000000 },
-{ 0x0c600031, 0x20403a08, 0x00000040, 0x00000200 },
-{ 0x00200001, 0x20603ae8, 0x00450040, 0x00000000 },
-{ 0x00000040, 0x22000200, 0x06000148, 0x040a8000 },
-{ 0x00600001, 0x20403ae8, 0x008d0000, 0x00000000 },
-{ 0x00000001, 0x20480608, 0x00000000, 0x00010003 },
-{ 0x00000001, 0x20403ae8, 0x0000002c, 0x00000000 },
-{ 0x00000001, 0x20443ae8, 0x00000024, 0x00000000 },
-{ 0x0c600031, 0x20003a00, 0x00000040, 0x00000200 },
-{ 0x00000040, 0x202c0208, 0x1600002c, 0x00040004 },
-{ 0x05000010, 0x20000203, 0x0200002c, 0x00000020 },
-{ 0x00010020, 0x34000007, 0x0e001400, 0xfffffad0 },
-{ 0x00600001, 0x2e003ae8, 0x008d0000, 0x00000000 },
-{ 0x07000031, 0x20003a00, 0x06000e00, 0x82000010 },
-{ 0x00000040, 0x20241a28, 0x1e004182, 0x00800080 },
-{ 0x00800041, 0x20802228, 0x1ab10170, 0x00000182 },
-{ 0x05600010, 0x20002260, 0x22ae0170, 0x00ae0150 },
-{ 0x00600041, 0x20600a28, 0x22000024, 0x008d0158 },
-{ 0x00600041, 0x20400a28, 0x22000024, 0x008d0150 },
-{ 0x00800040, 0x20400a28, 0x0a8d0080, 0x008d0040 },
-{ 0x0080000c, 0x40400a68, 0x1e8d0040, 0x00070007 },
-{ 0x05601010, 0x20002260, 0x22ae0171, 0x00ae0151 },
-{ 0x00800001, 0x20401a68, 0x00ae0040, 0x00000000 },
-{ 0x00610001, 0x41501a88, 0x00ae0040, 0x00000000 },
-{ 0x00611001, 0x41511a88, 0x00ae0042, 0x00000000 },
-{ 0x0080002d, 0x20000220, 0x00450160, 0x00000000 },
-{ 0x00800040, 0x20402268, 0x22b10150, 0x00b14170 },
-{ 0x00000040, 0x20241a28, 0x1e00410c, 0x00800080 },
-{ 0x05800010, 0x20001a62, 0x1eb10040, 0x00000000 },
-{ 0x00810001, 0x20401a6a, 0x00b14040, 0x00000000 },
-{ 0x00600041, 0x20800a28, 0x22000024, 0x008d0158 },
-{ 0x00600041, 0x20600a28, 0x22000024, 0x008d0150 },
-{ 0x00800041, 0x20a01a28, 0x1a8d0040, 0x0000010c },
-{ 0x00800040, 0x20400a28, 0x0a8d00a0, 0x008d0060 },
-{ 0x0080000c, 0x60400a88, 0x1e8d0040, 0x00070007 },
-{ 0x00800001, 0x21502288, 0x00cf0040, 0x00000000 },
-{ 0x0080002d, 0x20000220, 0x00450120, 0x00000000 },
-{ 0x00800040, 0x20802228, 0x1eb14170, 0x00ff00ff },
-{ 0x00800040, 0x20402228, 0x1eb14150, 0x00ff00ff },
-{ 0x00000040, 0x20241a28, 0x1e004180, 0x00800080 },
-{ 0x00600041, 0x20c00a28, 0x0a8d0040, 0x008d0080 },
-{ 0x00600041, 0x20e00a28, 0x0a8d0060, 0x008d00a0 },
-{ 0x00000001, 0x20401e28, 0x00000000, 0x00ff00ff },
-{ 0x0c600038, 0x20800a28, 0x0a8d00e0, 0x00000040 },
-{ 0x0c600038, 0x20600a28, 0x0a8d00c0, 0x00000040 },
-{ 0x00800040, 0x40400a68, 0x1e8d4060, 0x00ff00ff },
-{ 0x00800001, 0x20401a68, 0x00ae0040, 0x00000000 },
-{ 0x00600041, 0x20800a28, 0x22000024, 0x008d0158 },
-{ 0x00800041, 0x20a01a28, 0x1a8d0040, 0x00000180 },
-{ 0x00600041, 0x20600a28, 0x22000024, 0x008d0150 },
-{ 0x00800040, 0x20400a28, 0x0a8d00a0, 0x008d0060 },
-{ 0x0080000c, 0x60400a88, 0x1e8d0040, 0x00070007 },
-{ 0x00800001, 0x21502288, 0x00cf0040, 0x00000000 },
-{ 0x0080002d, 0x20000220, 0x00450100, 0x00000000 },
-{ 0x00000040, 0x20241a28, 0x1e004112, 0x00800080 },
-{ 0x00800041, 0x20802228, 0x1ab10170, 0x00000112 },
-{ 0x03600010, 0x20002261, 0x22ae0170, 0x00ae0150 },
-{ 0x00600041, 0x20600a28, 0x22000024, 0x008d0158 },
-{ 0x00600041, 0x20400a28, 0x22000024, 0x008d0150 },
-{ 0x00800040, 0x20400a28, 0x0a8d0080, 0x008d0040 },
-{ 0x0080000c, 0x40400a68, 0x1e8d0040, 0x00070007 },
-{ 0x03601010, 0x20002261, 0x22ae0171, 0x00ae0151 },
-{ 0x00800001, 0x20401a68, 0x00ae0040, 0x00000000 },
-{ 0x00610001, 0x41501a89, 0x00ae0040, 0x00000000 },
-{ 0x00611001, 0x41511a89, 0x00ae0042, 0x00000000 },
-{ 0x0080002d, 0x20000220, 0x00450180, 0x00000000 },
-{ 0x00000001, 0x20801e28, 0x00000000, 0x00ff00ff },
-{ 0x00800041, 0x20402228, 0x22b10170, 0x00b10150 },
-{ 0x00000040, 0x20241a28, 0x1e004110, 0x00800080 },
-{ 0x0c600038, 0x20c00a28, 0x0a8d0060, 0x00000080 },
-{ 0x0c600038, 0x20a00a28, 0x0a8d0040, 0x00000080 },
-{ 0x00800001, 0x40400a68, 0x008d00a0, 0x00000000 },
-{ 0x00800001, 0x20401a68, 0x00ae0040, 0x00000000 },
-{ 0x00600041, 0x20800a28, 0x22000024, 0x008d0158 },
-{ 0x00800041, 0x20a01a28, 0x1a8d0040, 0x00000110 },
-{ 0x00600041, 0x20600a28, 0x22000024, 0x008d0150 },
-{ 0x00800040, 0x20400a28, 0x0a8d00a0, 0x008d0060 },
-{ 0x0080000c, 0x60400a88, 0x1e8d0040, 0x00070007 },
-{ 0x00800001, 0x21502288, 0x00cf0040, 0x00000000 },
-{ 0x0080002d, 0x20000220, 0x00450140, 0x00000000 },
diff --git a/src/shaders/post_processing/gen8/sharpening_v_blur.g8b b/src/shaders/post_processing/gen8/sharpening_v_blur.g8b
deleted file mode 100644
index a57f43d..0000000
--- a/src/shaders/post_processing/gen8/sharpening_v_blur.g8b
+++ /dev/null
@@ -1,296 +0,0 @@
-{ 0x00000001, 0x23601608, 0x00000000, 0x00000000 },
-{ 0x00600001, 0x20403ae8, 0x008d0000, 0x00000000 },
-{ 0x00000001, 0x23641608, 0x00000000, 0x00020002 },
-{ 0x00000001, 0x20480608, 0x00000000, 0x0007000f },
-{ 0x00000001, 0x20403ae8, 0x0000002c, 0x00000000 },
-{ 0x00000040, 0x22000200, 0x06000360, 0x02490000 },
-{ 0x00000001, 0x20441608, 0x00000000, 0x00000000 },
-{ 0x00000001, 0x20281608, 0x00000000, 0x00040004 },
-{ 0x0c600031, 0x22e03a08, 0x00000040, 0x00000200 },
-{ 0x00000040, 0x20200208, 0x1e000024, 0xfffcfffc },
-{ 0x06000010, 0x20000201, 0x16000020, 0x00040004 },
-{ 0x00010020, 0x34000005, 0x0e001400, 0x00000ff0 },
-{ 0x00600001, 0x20403ae8, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000200, 0x06000360, 0x02490000 },
-{ 0x00800001, 0x22a03ae8, 0x008d0320, 0x00000000 },
-{ 0x00800001, 0x22603ae8, 0x008d02e0, 0x00000000 },
-{ 0x00000001, 0x21403ee8, 0x00000000, 0x3e525448 },
-{ 0x00000001, 0x21603ee8, 0x00000000, 0x3875735f },
-{ 0x00000001, 0x20480608, 0x00000000, 0x0007000f },
-{ 0x00000001, 0x20403ae8, 0x0000002c, 0x00000000 },
-{ 0x00000040, 0x20440208, 0x16000028, 0x00040004 },
-{ 0x00800001, 0x208022e8, 0x00b10270, 0x00000000 },
-{ 0x0c600031, 0x22e03a08, 0x00000040, 0x00000200 },
-{ 0x00000001, 0x20203ee8, 0x00000000, 0x332bcc77 },
-{ 0x00800041, 0x20c03ae8, 0x3e8d0080, 0x3875735f },
-{ 0x00800001, 0x208022e8, 0x00b10280, 0x00000000 },
-{ 0x00800001, 0x204022e8, 0x00b10260, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72002 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872002 },
-{ 0x00000001, 0x20303ee8, 0x00000000, 0x3c1d98ad },
-{ 0x00800001, 0x204022e8, 0x00b10270, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00800001, 0x208022e8, 0x00b10290, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00000001, 0x21503ee8, 0x00000000, 0x3f11e168 },
-{ 0x00800001, 0x208022e8, 0x00b102a0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00800001, 0x208022e8, 0x00b102b0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00800001, 0x208022e8, 0x00b102c0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00800001, 0x208022e8, 0x00b102d0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00800001, 0x208022e8, 0x00b102e0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472002 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072002 },
-{ 0x00800001, 0x208022e8, 0x00b10280, 0x00000000 },
-{ 0x00800001, 0x21803a28, 0x008d0100, 0x00000000 },
-{ 0x00800041, 0x20c03ae8, 0x3e8d0080, 0x3875735f },
-{ 0x00800001, 0x61800a88, 0x008d0180, 0x00000000 },
-{ 0x00800001, 0x21a02288, 0x00cf0180, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872002 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72002 },
-{ 0x00800001, 0x208022e8, 0x00b10290, 0x00000000 },
-{ 0x00800001, 0x204022e8, 0x00b10280, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00800001, 0x208022e8, 0x00b102a0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00800001, 0x208022e8, 0x00b102b0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00800001, 0x208022e8, 0x00b102c0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00800001, 0x208022e8, 0x00b102d0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00800001, 0x208022e8, 0x00b102e0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00800001, 0x208022e8, 0x00b102f0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472002 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072002 },
-{ 0x00800001, 0x208022e8, 0x00b10290, 0x00000000 },
-{ 0x00800001, 0x22203a28, 0x008d0100, 0x00000000 },
-{ 0x00800041, 0x20c03ae8, 0x3e8d0080, 0x3875735f },
-{ 0x00800001, 0x62200a88, 0x008d0220, 0x00000000 },
-{ 0x00800001, 0x208022e8, 0x00b102a0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72002 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872002 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00800001, 0x208022e8, 0x00b102b0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00800001, 0x208022e8, 0x00b102c0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00800001, 0x208022e8, 0x00b102d0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00800001, 0x208022e8, 0x00b102e0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00800001, 0x208022e8, 0x00b102f0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00800001, 0x208022e8, 0x00b10300, 0x00000000 },
-{ 0x00800001, 0x21b02288, 0x00cf0220, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472002 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072002 },
-{ 0x00800001, 0x22203a28, 0x008d0100, 0x00000000 },
-{ 0x00800001, 0x62200a88, 0x008d0220, 0x00000000 },
-{ 0x00800001, 0x208022e8, 0x00b102a0, 0x00000000 },
-{ 0x00800001, 0x204022e8, 0x00b10290, 0x00000000 },
-{ 0x00800001, 0x21c02288, 0x00cf0220, 0x00000000 },
-{ 0x00800041, 0x20c03ae8, 0x3e8d0080, 0x3875735f },
-{ 0x00800001, 0x208022e8, 0x00b102b0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72002 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872002 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00800001, 0x204022e8, 0x00b102a0, 0x00000000 },
-{ 0x00800001, 0x208022e8, 0x00b102c0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00800001, 0x208022e8, 0x00b102d0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00800001, 0x208022e8, 0x00b102e0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00800001, 0x208022e8, 0x00b102f0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00800001, 0x208022e8, 0x00b10300, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00800001, 0x208022e8, 0x00b10310, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472002 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072002 },
-{ 0x00800001, 0x208022e8, 0x00b102b0, 0x00000000 },
-{ 0x00800001, 0x22203a28, 0x008d0100, 0x00000000 },
-{ 0x00800041, 0x20c03ae8, 0x3e8d0080, 0x3875735f },
-{ 0x00800001, 0x62200a88, 0x008d0220, 0x00000000 },
-{ 0x00800001, 0x208022e8, 0x00b102c0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72002 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872002 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00800001, 0x208022e8, 0x00b102d0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00800001, 0x208022e8, 0x00b102e0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00800001, 0x208022e8, 0x00b102f0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00800001, 0x208022e8, 0x00b10300, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00800001, 0x21d02288, 0x00cf0220, 0x00000000 },
-{ 0x00800001, 0x208022e8, 0x00b10310, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x00800001, 0x204022e8, 0x00b102b0, 0x00000000 },
-{ 0x00800001, 0x208022e8, 0x00b10320, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472002 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072002 },
-{ 0x00800001, 0x208022e8, 0x00b102c0, 0x00000000 },
-{ 0x00800001, 0x22203a28, 0x008d0100, 0x00000000 },
-{ 0x00800041, 0x20c03ae8, 0x3e8d0080, 0x3875735f },
-{ 0x00800001, 0x62200a88, 0x008d0220, 0x00000000 },
-{ 0x00800001, 0x208022e8, 0x00b102d0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72002 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872002 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00800001, 0x204022e8, 0x00b102c0, 0x00000000 },
-{ 0x00800001, 0x208022e8, 0x00b102e0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00800001, 0x208022e8, 0x00b102f0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00800001, 0x208022e8, 0x00b10300, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00800001, 0x208022e8, 0x00b10310, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00800001, 0x208022e8, 0x00b10320, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00800001, 0x208022e8, 0x00b10330, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472002 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072002 },
-{ 0x00800001, 0x21e02288, 0x00cf0220, 0x00000000 },
-{ 0x00800001, 0x208022e8, 0x00b102d0, 0x00000000 },
-{ 0x00800001, 0x22203a28, 0x008d0100, 0x00000000 },
-{ 0x00800041, 0x20c03ae8, 0x3e8d0080, 0x3875735f },
-{ 0x00800001, 0x62200a88, 0x008d0220, 0x00000000 },
-{ 0x00800001, 0x208022e8, 0x00b102e0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72002 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872002 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00800001, 0x208022e8, 0x00b102f0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00800001, 0x208022e8, 0x00b10300, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00800001, 0x21f02288, 0x00cf0220, 0x00000000 },
-{ 0x00800001, 0x208022e8, 0x00b10310, 0x00000000 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x00800001, 0x204022e8, 0x00b102d0, 0x00000000 },
-{ 0x00600001, 0x21803ae8, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000200, 0x06000364, 0x0a0a8000 },
-{ 0x00800001, 0x208022e8, 0x00b10320, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00800001, 0x208022e8, 0x00b10330, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00800001, 0x208022e8, 0x00b10340, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472002 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072002 },
-{ 0x00800001, 0x208022e8, 0x00b102e0, 0x00000000 },
-{ 0x00800001, 0x22203a28, 0x008d0100, 0x00000000 },
-{ 0x00800041, 0x20c03ae8, 0x3e8d0080, 0x3875735f },
-{ 0x00800001, 0x62200a88, 0x008d0220, 0x00000000 },
-{ 0x00800001, 0x208022e8, 0x00b102f0, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392071c8, 0x00c72002 },
-{ 0x0060015b, 0x081e0000, 0x392061c8, 0x00872002 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00800001, 0x208022e8, 0x00b10300, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00800001, 0x208022e8, 0x00b10310, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472015 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072015 },
-{ 0x00800001, 0x208022e8, 0x00b10320, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472014 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072014 },
-{ 0x00800001, 0x208022e8, 0x00b10330, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472003 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072003 },
-{ 0x00800001, 0x208022e8, 0x00b10340, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472016 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072016 },
-{ 0x00800001, 0x208022e8, 0x00b10350, 0x00000000 },
-{ 0x0060015b, 0x091e0000, 0x392091c8, 0x01472002 },
-{ 0x0060015b, 0x081e0000, 0x392081c8, 0x01072002 },
-{ 0x00000001, 0x21880608, 0x00000000, 0x0007000f },
-{ 0x00800001, 0x20403a28, 0x008d0100, 0x00000000 },
-{ 0x00000001, 0x21803ae8, 0x0000002c, 0x00000000 },
-{ 0x00800001, 0x22002288, 0x00cf0220, 0x00000000 },
-{ 0x00800001, 0x60400a88, 0x008d0040, 0x00000000 },
-{ 0x00800001, 0x22102288, 0x00cf0040, 0x00000000 },
-{ 0x00000001, 0x21843ae8, 0x00000028, 0x00000000 },
-{ 0x00000040, 0x20280208, 0x16000028, 0x00080008 },
-{ 0x0c600031, 0x20003a00, 0x00000180, 0x00000200 },
-{ 0x00000040, 0x20200208, 0x1e000024, 0xfffcfffc },
-{ 0x05000010, 0x20000200, 0x02000028, 0x00000020 },
-{ 0x00010020, 0x34000004, 0x0e001400, 0xfffff010 },
-{ 0x00600001, 0x20403ae8, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000200, 0x06000360, 0x02290000 },
-{ 0x00000001, 0x20480608, 0x00000000, 0x0003000f },
-{ 0x00000001, 0x20403ae8, 0x0000002c, 0x00000000 },
-{ 0x00000001, 0x20441608, 0x00000000, 0x00000000 },
-{ 0x0c600031, 0x22603a08, 0x00000040, 0x00000200 },
-{ 0x00600001, 0x20403ae8, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000200, 0x06000364, 0x060a8000 },
-{ 0x00800001, 0x20603ae8, 0x008d0260, 0x00000000 },
-{ 0x00000001, 0x20480608, 0x00000000, 0x0003000f },
-{ 0x00000001, 0x20403ae8, 0x0000002c, 0x00000000 },
-{ 0x00000001, 0x20441608, 0x00000000, 0x00000000 },
-{ 0x00000040, 0x20200208, 0x1e000024, 0xfffcfffc },
-{ 0x0c600031, 0x20003a00, 0x00000040, 0x00000200 },
-{ 0x00600001, 0x20403ae8, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000200, 0x06000360, 0x02290000 },
-{ 0x00000001, 0x20480608, 0x00000000, 0x0003000f },
-{ 0x00000001, 0x20403ae8, 0x0000002c, 0x00000000 },
-{ 0x00000001, 0x20443ae8, 0x00000020, 0x00000000 },
-{ 0x0c600031, 0x22603a08, 0x00000040, 0x00000200 },
-{ 0x00600001, 0x20403ae8, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000200, 0x06000364, 0x060a8000 },
-{ 0x00800001, 0x20603ae8, 0x008d0260, 0x00000000 },
-{ 0x00000001, 0x20480608, 0x00000000, 0x0003000f },
-{ 0x00000001, 0x20403ae8, 0x0000002c, 0x00000000 },
-{ 0x00000001, 0x20443ae8, 0x00000020, 0x00000000 },
-{ 0x0c600031, 0x20003a00, 0x00000040, 0x00000200 },
-{ 0x00600001, 0x2e003ae8, 0x008d0000, 0x00000000 },
-{ 0x07000031, 0x20003a00, 0x06000e00, 0x82000010 },
diff --git a/src/shaders/post_processing/gen9/Makefile.am b/src/shaders/post_processing/gen9/Makefile.am
deleted file mode 100644
index 7cbacd9..0000000
--- a/src/shaders/post_processing/gen9/Makefile.am
+++ /dev/null
@@ -1,81 +0,0 @@
-SRCDIR = $(top_srcdir)/src/shaders/post_processing/gen8
-VPATH = $(SRCDIR)
-
-INTEL_PP_PRE_G9B = \
- conv_p010.g9b \
- conv_nv12.g9b
-
-INTEL_PP_G9B = \
- pl2_to_pl2.g9b \
- pl2_to_pl3.g9b \
- pl3_to_pl2.g9b \
- pl3_to_pl3.g9b \
- pl2_to_rgbx.g9b \
- rgbx_to_nv12.g9b \
- pl2_to_pa.g9b \
- pl3_to_pa.g9b \
- pa_to_pl2.g9b \
- pa_to_pl3.g9b \
- pa_to_pa.g9b \
- $(NULL)
-
-INTEL_PP_G8A = \
- EOT.g8a \
- PL2_AVS_Buf_0.g8a \
- PL2_AVS_Buf_1.g8a \
- PL2_AVS_Buf_2.g8a \
- PL2_AVS_Buf_3.g8a \
- PL3_AVS_Buf_0.g8a \
- PL3_AVS_Buf_1.g8a \
- PL3_AVS_Buf_2.g8a \
- PL3_AVS_Buf_3.g8a \
- PA_AVS_Buf_0.g8a \
- PA_AVS_Buf_1.g8a \
- PA_AVS_Buf_2.g8a \
- PA_AVS_Buf_3.g8a \
- Save_AVS_NV12.g8a \
- Save_AVS_PL3.g8a \
- Save_AVS_RGBX.g8a \
- Save_AVS_PA.g8a \
- Set_AVS_Buf_0123_PL2.g8a \
- Set_AVS_Buf_0123_PL3.g8a \
- Set_AVS_Buf_0123_BGRA.g8a \
- Set_AVS_Buf_0123_VYUA.g8a \
- YUV_to_RGB.g8a \
- RGB_to_YUV.g8a \
- Set_Layer_0.g8a \
- VP_Setup.g8a \
- $(NULL)
-
-INTEL_PP_G9A = $(INTEL_PP_G8A)
-INTEL_PP_ASM = $(INTEL_PP_G9B:%.g9b=%.asm)
-INTEL_PP_GEN9_ASM = $(INTEL_PP_G9B:%.g9b=%.g9s)
-
-TARGETS =
-if HAVE_GEN4ASM
-TARGETS += $(INTEL_PP_G9B)
-endif
-
-all-local: $(TARGETS)
-
-SUFFIXES = .g9b .g9s .asm
-
-if HAVE_GEN4ASM
-$(INTEL_PP_GEN9_ASM): $(INTEL_PP_ASM) $(INTEL_PP_G9A)
-.asm.g9s:
- $(AM_V_GEN)cpp $< > _pp0.$@; \
- $(PYTHON2) $(top_srcdir)/src/shaders/gpp.py _pp0.$@ $@; \
- rm _pp0.$@
-.g9s.g9b:
- $(AM_V_GEN)$(GEN4ASM) -a -o $@ -g 9 $<
-endif
-
-CLEANFILES = $(INTEL_PP_GEN9_ASM)
-
-EXTRA_DIST = \
- $(INTEL_PP_G9B) \
- $(INTEL_PP_PRE_G9B) \
- $(NULL)
-
-# Extra clean files so that maintainer-clean removes *everything*
-MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/shaders/post_processing/gen9/conv_nv12.g9b b/src/shaders/post_processing/gen9/conv_nv12.g9b
deleted file mode 100644
index cf3c68f..0000000
--- a/src/shaders/post_processing/gen9/conv_nv12.g9b
+++ /dev/null
@@ -1,368 +0,0 @@
-{ 0x00600001, 0x20602648, 0x00000000, 0x76543210 },
-{ 0x00000005, 0x26c0124c, 0x16000004, 0x07ff07ff },
-{ 0x00600001, 0x26e01208, 0x008d0060, 0x00000000 },
-{ 0x00000005, 0x26c2124c, 0x16000006, 0x07ff07ff },
-{ 0x00000041, 0x20a01208, 0x160006c0, 0x00100010 },
-{ 0x00600040, 0x27000208, 0x168d06e0, 0x00080008 },
-{ 0x00000041, 0x20801228, 0x160006c2, 0x00100010 },
-{ 0x00000040, 0x26c40228, 0x02000040, 0x000000a0 },
-{ 0x00800040, 0x26e00208, 0x028d06e0, 0x000000a0 },
-{ 0x00000041, 0x21003ae8, 0x3e000048, 0x3f000000 },
-{ 0x00000041, 0x21603ae8, 0x3e00004c, 0x3f000000 },
-{ 0x00800001, 0x212002e8, 0x00000080, 0x00000000 },
-{ 0x00800001, 0x20c002e8, 0x008d06e0, 0x00000000 },
-{ 0x0080015b, 0x3b1e0000, 0xc020b001, 0x02472004 },
-{ 0x0080015b, 0x391e0000, 0x80208001, 0x01872004 },
-{ 0x00800040, 0x27603ae8, 0x3a8d0760, 0x00000054 },
-{ 0x00800040, 0x27203ae8, 0x3a8d0720, 0x00000050 },
-{ 0x00000001, 0x26cc1e28, 0x00000000, 0x00000000 },
-{ 0x00000001, 0x28a00208, 0x0000005c, 0x00000000 },
-{ 0x00000040, 0x26c80228, 0x02000044, 0x00000080 },
-{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
-{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x20c00208, 0x008d0760, 0x00000000 },
-{ 0x00800001, 0x20800208, 0x008d0720, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x06000058, 0x122c0000 },
-{ 0x00000001, 0x20680608, 0x00000000, 0x0000e000 },
-{ 0x02800031, 0x21800268, 0x00000060, 0x00000200 },
-{ 0x00000001, 0x21c01ee8, 0x00000000, 0x00ff00ff },
-{ 0x00800040, 0x27603ae8, 0x3a8d0760, 0x0000004c },
-{ 0x00800001, 0x23000608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x22c01ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x22400208, 0x008d0720, 0x00000000 },
-{ 0x00600001, 0x22200208, 0x008d0060, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x06000058, 0x122c0000 },
-{ 0x00800001, 0x22800208, 0x008d0760, 0x00000000 },
-{ 0x00800040, 0x27603ae8, 0x3a8d0760, 0x0000004c },
-{ 0x00800001, 0x24600608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x24201ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x23a00208, 0x008d0720, 0x00000000 },
-{ 0x00600001, 0x23800208, 0x008d0220, 0x00000000 },
-{ 0x00800001, 0x23e00208, 0x008d0760, 0x00000000 },
-{ 0x00800040, 0x27603ae8, 0x3a8d0760, 0x0000004c },
-{ 0x00800001, 0x25c00608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x25801ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x25000208, 0x008d0720, 0x00000000 },
-{ 0x00600001, 0x24e00208, 0x008d0380, 0x00000000 },
-{ 0x00800001, 0x25400208, 0x008d0760, 0x00000000 },
-{ 0x00600001, 0x2640020c, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x26cc0a28, 0x1e0006cc, 0x00010001 },
-{ 0x00000001, 0x2644020c, 0x000006c8, 0x00000000 },
-{ 0x00000001, 0x2640020c, 0x000006c4, 0x00000000 },
-{ 0x00000001, 0x2648060c, 0x00000000, 0x0003000f },
-{ 0x05000010, 0x20000a23, 0x1e0006cc, 0x00040004 },
-{ 0x00800040, 0x27603ae8, 0x3a8d0760, 0x0000004c },
-{ 0x00000040, 0x26c80a28, 0x1e0006c8, 0x00040004 },
-{ 0x00800041, 0x21803ae8, 0x3a8d0180, 0x000001c0 },
-{ 0x00600001, 0x22003a28, 0x008d01a0, 0x00000000 },
-{ 0x00600001, 0x21e03a28, 0x008d0180, 0x00000000 },
-{ 0x02800031, 0x21800268, 0x00000220, 0x00000200 },
-{ 0x00600001, 0x27a82288, 0x00cf0200, 0x00000000 },
-{ 0x00600001, 0x27a02288, 0x00cf01e0, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x06000058, 0x122c0000 },
-{ 0x00800041, 0x21803ae8, 0x3a8d0180, 0x000001c0 },
-{ 0x00600001, 0x23603a28, 0x008d01a0, 0x00000000 },
-{ 0x00600001, 0x23403a28, 0x008d0180, 0x00000000 },
-{ 0x02800031, 0x21800268, 0x00000380, 0x00000200 },
-{ 0x00600001, 0x27b82288, 0x00cf0360, 0x00000000 },
-{ 0x00600001, 0x27b02288, 0x00cf0340, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x06000058, 0x122c0000 },
-{ 0x00800041, 0x21803ae8, 0x3a8d0180, 0x000001c0 },
-{ 0x00600001, 0x24c03a28, 0x008d01a0, 0x00000000 },
-{ 0x00600001, 0x24a03a28, 0x008d0180, 0x00000000 },
-{ 0x02800031, 0x21800268, 0x000004e0, 0x00000200 },
-{ 0x00600001, 0x27c82288, 0x00cf04c0, 0x00000000 },
-{ 0x00600001, 0x27c02288, 0x00cf04a0, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060008a0, 0x020a8000 },
-{ 0x00800041, 0x21803ae8, 0x3a8d0180, 0x000001c0 },
-{ 0x00600001, 0x26203a28, 0x008d01a0, 0x00000000 },
-{ 0x00600001, 0x26003a28, 0x008d0180, 0x00000000 },
-{ 0x00600001, 0x27d82288, 0x00cf0620, 0x00000000 },
-{ 0x00600001, 0x27d02288, 0x00cf0600, 0x00000000 },
-{ 0x0c600033, 0x0003d014, 0x00002642, 0x00000000 },
-{ 0x00010020, 0x34000007, 0x0e001400, 0xfffffc00 },
-{ 0x00600001, 0x20602668, 0x00000000, 0x76543210 },
-{ 0x00000041, 0x20a01228, 0x160006c2, 0x00100010 },
-{ 0x00600009, 0x27001a08, 0x168d0060, 0x00010001 },
-{ 0x00000041, 0x20801208, 0x160006c0, 0x00100010 },
-{ 0x00600001, 0x20c00a08, 0x000000a0, 0x00000000 },
-{ 0x00600001, 0x26e00208, 0x008d0700, 0x00000000 },
-{ 0x00600040, 0x20e00208, 0x168d00c0, 0x00020002 },
-{ 0x00800040, 0x26e00208, 0x028d06e0, 0x00000080 },
-{ 0x00800001, 0x216002e8, 0x008d00c0, 0x00000000 },
-{ 0x00800001, 0x212002e8, 0x008d06e0, 0x00000000 },
-{ 0x00000005, 0x21a00208, 0x1600003c, 0x000c000c },
-{ 0x0080015b, 0x3b1e0000, 0xc0202a01, 0x02c72004 },
-{ 0x0080015b, 0x391e0000, 0x80202801, 0x02472004 },
-{ 0x00000040, 0x21000228, 0x02000044, 0x000000a0 },
-{ 0x02000010, 0x20000202, 0x160001a0, 0x000c000c },
-{ 0x00800040, 0x27603ae8, 0x3a8d0760, 0x00000038 },
-{ 0x00800040, 0x27203ae8, 0x3a8d0720, 0x00000034 },
-{ 0x00000040, 0x26d00208, 0x16000058, 0x00010001 },
-{ 0x00000040, 0x26d40208, 0x16000058, 0x00020002 },
-{ 0x00000040, 0x26d80208, 0x1600005c, 0x00010001 },
-{ 0x00000040, 0x26dc0208, 0x1600005c, 0x00020002 },
-{ 0x0000000c, 0x26c80a28, 0x1e000100, 0x00010001 },
-{ 0x00010020, 0x34000006, 0x0e001400, 0x00000370 },
-{ 0x00000001, 0x26cc1e28, 0x00000000, 0x00000000 },
-{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060006d0, 0x124c0000 },
-{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x20c00208, 0x008d0760, 0x00000000 },
-{ 0x00800001, 0x20800208, 0x008d0720, 0x00000000 },
-{ 0x00000001, 0x20680608, 0x00000000, 0x0000c000 },
-{ 0x02800031, 0x27e00268, 0x00000060, 0x00000200 },
-{ 0x00000001, 0x22603ee8, 0x00000000, 0x40800000 },
-{ 0x00000001, 0x21801ee8, 0x00000000, 0x00ff00ff },
-{ 0x0080015b, 0x3b1e0000, 0xc023b1c8, 0x04c00404 },
-{ 0x00800001, 0x23600608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x23201ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x22a00208, 0x008d0720, 0x00000000 },
-{ 0x00600001, 0x22800208, 0x008d0060, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060006d0, 0x124c0000 },
-{ 0x00800001, 0x22e00208, 0x008d0760, 0x00000000 },
-{ 0x00600001, 0x2460020c, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x26cc0a28, 0x1e0006cc, 0x00010001 },
-{ 0x00000001, 0x2464020c, 0x000006c8, 0x00000000 },
-{ 0x00000001, 0x2460020c, 0x000006c4, 0x00000000 },
-{ 0x00000001, 0x2468060c, 0x00000000, 0x0003000f },
-{ 0x05000010, 0x20000a21, 0x1e0006cc, 0x00020002 },
-{ 0x0080015b, 0x3b1e0000, 0xc023b1c8, 0x04c00404 },
-{ 0x00000040, 0x26c80a28, 0x1e0006c8, 0x00040004 },
-{ 0x00800041, 0x28203ae8, 0x3a8d0820, 0x00000180 },
-{ 0x00800041, 0x27e03ae8, 0x3a8d07e0, 0x00000180 },
-{ 0x00600001, 0x22203a28, 0x008d0840, 0x00000000 },
-{ 0x00600001, 0x21e03a28, 0x008d0820, 0x00000000 },
-{ 0x00600001, 0x21c03a28, 0x008d0800, 0x00000000 },
-{ 0x00600001, 0x21a03a28, 0x008d07e0, 0x00000000 },
-{ 0x02800031, 0x27e00268, 0x00000280, 0x00000200 },
-{ 0x00600001, 0x62400a88, 0x008d0220, 0x00000000 },
-{ 0x00600001, 0x62000a88, 0x008d01e0, 0x00000000 },
-{ 0x00600001, 0x47b02288, 0x00cf01c0, 0x00000000 },
-{ 0x00600001, 0x47a02288, 0x00cf01a0, 0x00000000 },
-{ 0x00600001, 0x47b12288, 0x00600240, 0x00000000 },
-{ 0x00600001, 0x47a12288, 0x00600200, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060006d8, 0x020a8000 },
-{ 0x00800041, 0x28203ae8, 0x3a8d0820, 0x00000180 },
-{ 0x00800041, 0x27e03ae8, 0x3a8d07e0, 0x00000180 },
-{ 0x00600001, 0x24203a28, 0x008d0840, 0x00000000 },
-{ 0x00600001, 0x23e03a28, 0x008d0820, 0x00000000 },
-{ 0x00600001, 0x23c03a28, 0x008d0800, 0x00000000 },
-{ 0x00600001, 0x23a03a28, 0x008d07e0, 0x00000000 },
-{ 0x00600001, 0x64400a88, 0x008d0420, 0x00000000 },
-{ 0x00600001, 0x64000a88, 0x008d03e0, 0x00000000 },
-{ 0x00600001, 0x47d02288, 0x00cf03c0, 0x00000000 },
-{ 0x00600001, 0x47c02288, 0x00cf03a0, 0x00000000 },
-{ 0x00600001, 0x47d12288, 0x00600440, 0x00000000 },
-{ 0x00600001, 0x47c12288, 0x00600400, 0x00000000 },
-{ 0x0c600033, 0x0003d014, 0x00002462, 0x00000000 },
-{ 0x00010020, 0x34000005, 0x0e001400, 0xfffffcb0 },
-{ 0x00000020, 0x34000004, 0x0e001400, 0x00000cc0 },
-{ 0x00000005, 0x20600208, 0x1600003c, 0x000c000c },
-{ 0x02000010, 0x20000200, 0x16000060, 0x00040004 },
-{ 0x00010020, 0x34000004, 0x0e001400, 0x000003a0 },
-{ 0x0000000c, 0x26c40a28, 0x1e0006c4, 0x00010001 },
-{ 0x00000001, 0x26cc1e28, 0x00000000, 0x00000000 },
-{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060006d0, 0x124c0000 },
-{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x20c00208, 0x008d0760, 0x00000000 },
-{ 0x00800001, 0x20800208, 0x008d0720, 0x00000000 },
-{ 0x00000001, 0x20680608, 0x00000000, 0x0000c000 },
-{ 0x02800031, 0x27e00268, 0x00000060, 0x00000200 },
-{ 0x00000001, 0x22203ee8, 0x00000000, 0x40800000 },
-{ 0x00000001, 0x21801ee8, 0x00000000, 0x00ff00ff },
-{ 0x0080015b, 0x3b1e0000, 0xc023b1c8, 0x04400404 },
-{ 0x00800001, 0x23200608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x22e01ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x22600208, 0x008d0720, 0x00000000 },
-{ 0x00600001, 0x22400208, 0x008d0060, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060006d0, 0x124c0000 },
-{ 0x00800001, 0x22a00208, 0x008d0760, 0x00000000 },
-{ 0x00600001, 0x23e0020c, 0x008d0000, 0x00000000 },
-{ 0x00000001, 0x23e4020c, 0x000006c8, 0x00000000 },
-{ 0x00000001, 0x23e0020c, 0x000006c4, 0x00000000 },
-{ 0x00000001, 0x23e8060c, 0x00000000, 0x00030007 },
-{ 0x00600001, 0x2400020c, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x26cc0a28, 0x1e0006cc, 0x00010001 },
-{ 0x00000001, 0x2404020c, 0x000006c8, 0x00000000 },
-{ 0x00000001, 0x2400020c, 0x000006c4, 0x00000000 },
-{ 0x00000001, 0x2408060c, 0x00000000, 0x00030007 },
-{ 0x05000010, 0x20000a23, 0x1e0006cc, 0x00020002 },
-{ 0x0080015b, 0x3b1e0000, 0xc023b1c8, 0x04400404 },
-{ 0x00000040, 0x26c80a28, 0x1e0006c8, 0x00040004 },
-{ 0x00800041, 0x28203ae8, 0x3a8d0820, 0x00000180 },
-{ 0x00800041, 0x27e03ae8, 0x3a8d07e0, 0x00000180 },
-{ 0x00600001, 0x22003a28, 0x008d0840, 0x00000000 },
-{ 0x00600001, 0x21e03a28, 0x008d0820, 0x00000000 },
-{ 0x00600001, 0x21c03a28, 0x008d0800, 0x00000000 },
-{ 0x00600001, 0x21a03a28, 0x008d07e0, 0x00000000 },
-{ 0x02800031, 0x27e00268, 0x00000240, 0x00000200 },
-{ 0x00600001, 0x28882288, 0x00cf0200, 0x00000000 },
-{ 0x00600001, 0x28682288, 0x00cf01c0, 0x00000000 },
-{ 0x00600001, 0x28602288, 0x00cf01a0, 0x00000000 },
-{ 0x00600001, 0x28802288, 0x00cf01e0, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060006d8, 0x020a8000 },
-{ 0x00800041, 0x27e03ae8, 0x3a8d07e0, 0x00000180 },
-{ 0x00600001, 0x23803a28, 0x008d0800, 0x00000000 },
-{ 0x00600001, 0x23603a28, 0x008d07e0, 0x00000000 },
-{ 0x00600001, 0x28782288, 0x00cf0380, 0x00000000 },
-{ 0x00600001, 0x28702288, 0x00cf0360, 0x00000000 },
-{ 0x0c600033, 0x00043014, 0x000023e1, 0x00000000 },
-{ 0x00800041, 0x28203ae8, 0x3a8d0820, 0x00000180 },
-{ 0x00600001, 0x23c03a28, 0x008d0840, 0x00000000 },
-{ 0x00600001, 0x23a03a28, 0x008d0820, 0x00000000 },
-{ 0x00600001, 0x28982288, 0x00cf03c0, 0x00000000 },
-{ 0x00600001, 0x28902288, 0x00cf03a0, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060006dc, 0x020a8000 },
-{ 0x0c600033, 0x00044014, 0x00002401, 0x00000000 },
-{ 0x00010020, 0x34000007, 0x0e001400, 0xfffffc90 },
-{ 0x00000020, 0x34000004, 0x0e001400, 0x000008f0 },
-{ 0x00000005, 0x20600208, 0x1600003c, 0x000c000c },
-{ 0x02000010, 0x20000202, 0x16000060, 0x00080008 },
-{ 0x00010020, 0x34000006, 0x0e001400, 0x00000450 },
-{ 0x00000001, 0x26cc1e28, 0x00000000, 0x00000000 },
-{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060006d0, 0x122c0000 },
-{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x20c00208, 0x008d0760, 0x00000000 },
-{ 0x00800001, 0x20800208, 0x008d0720, 0x00000000 },
-{ 0x00000001, 0x20680608, 0x00000000, 0x0000e000 },
-{ 0x02800031, 0x27e00268, 0x00000060, 0x00000200 },
-{ 0x00800001, 0x22600608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x22201ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x21e00208, 0x008d0760, 0x00000000 },
-{ 0x00800001, 0x21a00208, 0x008d0720, 0x00000000 },
-{ 0x00600001, 0x21800208, 0x008d0060, 0x00000000 },
-{ 0x00600001, 0x23a00208, 0x008d0180, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060006d4, 0x122c0000 },
-{ 0x00600001, 0x24c00208, 0x008d03a0, 0x00000000 },
-{ 0x02800031, 0x28200268, 0x00000180, 0x00000200 },
-{ 0x00000001, 0x23803ee8, 0x00000000, 0x40800000 },
-{ 0x00000001, 0x22a01ee8, 0x00000000, 0x00ff00ff },
-{ 0x0080015b, 0x3b1e0000, 0xc023b1c8, 0x07000404 },
-{ 0x00800001, 0x24800608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x24401ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x23c00208, 0x008d0720, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060006d0, 0x122c0000 },
-{ 0x00800001, 0x24000208, 0x008d0760, 0x00000000 },
-{ 0x00800001, 0x25a00608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x25601ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x24e00208, 0x008d0720, 0x00000000 },
-{ 0x00800001, 0x25200208, 0x008d0760, 0x00000000 },
-{ 0x00600001, 0x26a0020c, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x26cc0a28, 0x1e0006cc, 0x00010001 },
-{ 0x00000001, 0x26a4020c, 0x000006c8, 0x00000000 },
-{ 0x00000001, 0x26a0020c, 0x000006c4, 0x00000000 },
-{ 0x00000001, 0x26a8060c, 0x00000000, 0x0003000f },
-{ 0x05000010, 0x20000a21, 0x1e0006cc, 0x00020002 },
-{ 0x0080015b, 0x3b1e0000, 0xc023b1c8, 0x07000404 },
-{ 0x00000040, 0x26c80a28, 0x1e0006c8, 0x00040004 },
-{ 0x00800041, 0x27e03ae8, 0x3a8d07e0, 0x000002a0 },
-{ 0x00600001, 0x22e03a28, 0x008d0800, 0x00000000 },
-{ 0x00600001, 0x22c03a28, 0x008d07e0, 0x00000000 },
-{ 0x02800031, 0x27e00268, 0x000003a0, 0x00000200 },
-{ 0x00600001, 0x47b02288, 0x00cf02e0, 0x00000000 },
-{ 0x00600001, 0x47a02288, 0x00cf02c0, 0x00000000 },
-{ 0x00800041, 0x28203ae8, 0x3a8d0820, 0x000002a0 },
-{ 0x00000040, 0x22000204, 0x060006d4, 0x122c0000 },
-{ 0x00600001, 0x23403a28, 0x008d0840, 0x00000000 },
-{ 0x00600001, 0x23003a28, 0x008d0820, 0x00000000 },
-{ 0x02800031, 0x28200268, 0x000004c0, 0x00000200 },
-{ 0x00600001, 0x63600a88, 0x008d0340, 0x00000000 },
-{ 0x00600001, 0x63200a88, 0x008d0300, 0x00000000 },
-{ 0x00600001, 0x47b12288, 0x00600360, 0x00000000 },
-{ 0x00600001, 0x47a12288, 0x00600320, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060006d8, 0x020a8000 },
-{ 0x00800041, 0x27e03ae8, 0x3a8d07e0, 0x000002a0 },
-{ 0x00600001, 0x26003a28, 0x008d0800, 0x00000000 },
-{ 0x00600001, 0x25e03a28, 0x008d07e0, 0x00000000 },
-{ 0x00600001, 0x47d02288, 0x00cf0600, 0x00000000 },
-{ 0x00600001, 0x47c02288, 0x00cf05e0, 0x00000000 },
-{ 0x00800041, 0x28203ae8, 0x3a8d0820, 0x000002a0 },
-{ 0x00600001, 0x26603a28, 0x008d0840, 0x00000000 },
-{ 0x00600001, 0x26203a28, 0x008d0820, 0x00000000 },
-{ 0x00600001, 0x66800a88, 0x008d0660, 0x00000000 },
-{ 0x00600001, 0x66400a88, 0x008d0620, 0x00000000 },
-{ 0x00600001, 0x47d12288, 0x00600680, 0x00000000 },
-{ 0x00600001, 0x47c12288, 0x00600640, 0x00000000 },
-{ 0x0c600033, 0x0003d014, 0x000026a2, 0x00000000 },
-{ 0x00010020, 0x34000005, 0x0e001400, 0xfffffbd0 },
-{ 0x00000020, 0x34000004, 0x0e001400, 0x00000470 },
-{ 0x0000000c, 0x26c40a28, 0x1e0006c4, 0x00010001 },
-{ 0x00000001, 0x26cc1e28, 0x00000000, 0x00000000 },
-{ 0x00600001, 0x20600208, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060006d0, 0x122c0000 },
-{ 0x00800001, 0x21400608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x21001ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x20c00208, 0x008d0760, 0x00000000 },
-{ 0x00800001, 0x20800208, 0x008d0720, 0x00000000 },
-{ 0x00000001, 0x20680608, 0x00000000, 0x0000e000 },
-{ 0x02800031, 0x27e00268, 0x00000060, 0x00000200 },
-{ 0x00800001, 0x22600608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x22201ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x21e00208, 0x008d0760, 0x00000000 },
-{ 0x00800001, 0x21a00208, 0x008d0720, 0x00000000 },
-{ 0x00600001, 0x21800208, 0x008d0060, 0x00000000 },
-{ 0x00600001, 0x23600208, 0x008d0180, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060006d4, 0x122c0000 },
-{ 0x00600001, 0x24800208, 0x008d0360, 0x00000000 },
-{ 0x02800031, 0x28200268, 0x00000180, 0x00000200 },
-{ 0x00000001, 0x23403ee8, 0x00000000, 0x40800000 },
-{ 0x00000001, 0x22a01ee8, 0x00000000, 0x00ff00ff },
-{ 0x0080015b, 0x3b1e0000, 0xc023b1c8, 0x06800404 },
-{ 0x00800001, 0x24400608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x24001ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x23800208, 0x008d0720, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060006d0, 0x122c0000 },
-{ 0x00800001, 0x23c00208, 0x008d0760, 0x00000000 },
-{ 0x00800001, 0x25600608, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x25201ee8, 0x00000000, 0x00000000 },
-{ 0x00800001, 0x24a00208, 0x008d0720, 0x00000000 },
-{ 0x00800001, 0x24e00208, 0x008d0760, 0x00000000 },
-{ 0x00600001, 0x2620020c, 0x008d0000, 0x00000000 },
-{ 0x00000001, 0x2624020c, 0x000006c8, 0x00000000 },
-{ 0x00000001, 0x2620020c, 0x000006c4, 0x00000000 },
-{ 0x00000001, 0x2628060c, 0x00000000, 0x00030007 },
-{ 0x00600001, 0x2640020c, 0x008d0000, 0x00000000 },
-{ 0x00000040, 0x26cc0a28, 0x1e0006cc, 0x00010001 },
-{ 0x00000001, 0x2644020c, 0x000006c8, 0x00000000 },
-{ 0x00000001, 0x2640020c, 0x000006c4, 0x00000000 },
-{ 0x00000001, 0x2648060c, 0x00000000, 0x00030007 },
-{ 0x05000010, 0x20000a20, 0x1e0006cc, 0x00020002 },
-{ 0x0080015b, 0x3b1e0000, 0xc023b1c8, 0x06800404 },
-{ 0x00000040, 0x26c80a28, 0x1e0006c8, 0x00040004 },
-{ 0x00800041, 0x27e03ae8, 0x3a8d07e0, 0x000002a0 },
-{ 0x00600001, 0x22e03a28, 0x008d0800, 0x00000000 },
-{ 0x00600001, 0x22c03a28, 0x008d07e0, 0x00000000 },
-{ 0x02800031, 0x27e00268, 0x00000360, 0x00000200 },
-{ 0x00600001, 0x28682288, 0x00cf02e0, 0x00000000 },
-{ 0x00600001, 0x28602288, 0x00cf02c0, 0x00000000 },
-{ 0x00800041, 0x28203ae8, 0x3a8d0820, 0x000002a0 },
-{ 0x00000040, 0x22000204, 0x060006d4, 0x122c0000 },
-{ 0x00600001, 0x23203a28, 0x008d0840, 0x00000000 },
-{ 0x00600001, 0x23003a28, 0x008d0820, 0x00000000 },
-{ 0x02800031, 0x28200268, 0x00000480, 0x00000200 },
-{ 0x00600001, 0x28882288, 0x00cf0320, 0x00000000 },
-{ 0x00600001, 0x28802288, 0x00cf0300, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060006d8, 0x020a8000 },
-{ 0x00800041, 0x27e03ae8, 0x3a8d07e0, 0x000002a0 },
-{ 0x00600001, 0x25c03a28, 0x008d0800, 0x00000000 },
-{ 0x00600001, 0x25a03a28, 0x008d07e0, 0x00000000 },
-{ 0x00600001, 0x28782288, 0x00cf05c0, 0x00000000 },
-{ 0x00600001, 0x28702288, 0x00cf05a0, 0x00000000 },
-{ 0x0c600033, 0x00043014, 0x00002621, 0x00000000 },
-{ 0x00800041, 0x28203ae8, 0x3a8d0820, 0x000002a0 },
-{ 0x00600001, 0x26003a28, 0x008d0840, 0x00000000 },
-{ 0x00600001, 0x25e03a28, 0x008d0820, 0x00000000 },
-{ 0x00600001, 0x28982288, 0x00cf0600, 0x00000000 },
-{ 0x00000040, 0x22000204, 0x060006dc, 0x020a8000 },
-{ 0x00600001, 0x28902288, 0x00cf05e0, 0x00000000 },
-{ 0x0c600033, 0x00044014, 0x00002641, 0x00000000 },
-{ 0x00010020, 0x34000004, 0x0e001400, 0xfffffbb0 },
-{ 0x00600001, 0x2fe0020c, 0x008d0000, 0x00000000 },
-{ 0x07000031, 0x20000200, 0x06000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen9/conv_p010.g9b b/src/shaders/post_processing/gen9/conv_p010.g9b
deleted file mode 100644
index 536a46c..0000000
--- a/src/shaders/post_processing/gen9/conv_p010.g9b
+++ /dev/null
@@ -1,783 +0,0 @@
-{ 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 },
diff --git a/src/shaders/post_processing/gen9/pa_to_pa.g9b b/src/shaders/post_processing/gen9/pa_to_pa.g9b
deleted file mode 100644
index c06ff03..0000000
--- a/src/shaders/post_processing/gen9/pa_to_pa.g9b
+++ /dev/null
@@ -1,279 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x000062ea },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006420 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22082260, 0x1669005c, 0x03a003a0 },
- { 0x00000209, 0x23601a28, 0x1e000120, 0x00010001 },
- { 0x00000601, 0x23641a28, 0x00000122, 0x00000000 },
- { 0x00000401, 0x23680608, 0x00000000, 0x0001001f },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x02000200 },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x06000600 },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x08000800 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x00000002 },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x02000200 },
- { 0x00000040, 0x23840a28, 0x0e000364, 0x00000004 },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x00000006 },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x00000040, 0x23840a28, 0x0e000364, 0x00000008 },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x0000000a },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x06000600 },
- { 0x00000040, 0x23840a28, 0x0e000364, 0x0000000c },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x0000000e },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x06000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen9/pa_to_pl2.g9b b/src/shaders/post_processing/gen9/pa_to_pl2.g9b
deleted file mode 100644
index 22960a9..0000000
--- a/src/shaders/post_processing/gen9/pa_to_pl2.g9b
+++ /dev/null
@@ -1,186 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x000062ea },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006420 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00200201, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00000201, 0x24a01a28, 0x00000120, 0x00000000 },
- { 0x00000608, 0x24a41a28, 0x1e000122, 0x00010001 },
- { 0x00000401, 0x23880608, 0x00000000, 0x000f000f },
- { 0x00000401, 0x24a80608, 0x00000000, 0x0007000f },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x23b02288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x23c02288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x23d02288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x44c02288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x44d02288, 0x00cf8441, 0x00000000 },
- { 0x00600601, 0x44c12288, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0x44d12288, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x00800201, 0x23e02288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x23f02288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24002288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24102288, 0x00d28a61, 0x00000000 },
- { 0x00600201, 0x44e02288, 0x00cf8c01, 0x00000000 },
- { 0x00600601, 0x44f02288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x44e12288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x44f12288, 0x00cf8841, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x00800201, 0x24202288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x24302288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x24402288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x24502288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x45002288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x45102288, 0x00cf8441, 0x00000000 },
- { 0x00600601, 0x45012288, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0x45112288, 0x00cf8041, 0x00000000 },
- { 0x00800201, 0x24602288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x24702288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24802288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24902288, 0x00d28a61, 0x00000000 },
- { 0x00600201, 0x45202288, 0x00cf8c01, 0x00000000 },
- { 0x00600601, 0x45302288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x45212288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x45312288, 0x00cf8841, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x120a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x0a0a8019 },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x06000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen9/pa_to_pl3.g9b b/src/shaders/post_processing/gen9/pa_to_pl3.g9b
deleted file mode 100644
index c37964d..0000000
--- a/src/shaders/post_processing/gen9/pa_to_pl3.g9b
+++ /dev/null
@@ -1,189 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x000062ea },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006420 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
- { 0x00200201, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00200208, 0x24a01a28, 0x1e450120, 0x00010001 },
- { 0x00200208, 0x25c01a28, 0x1e450120, 0x00010001 },
- { 0x00000401, 0x23880608, 0x00000000, 0x000f000f },
- { 0x00000401, 0x24a80608, 0x00000000, 0x00070007 },
- { 0x00000401, 0x25c80608, 0x00000000, 0x00070007 },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x23b02288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x23c02288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x23d02288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x24c02288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x24c82288, 0x00cf8441, 0x00000000 },
- { 0x00600201, 0x25e02288, 0x00cf8001, 0x00000000 },
- { 0x00600601, 0x25e82288, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x00800201, 0x23e02288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x23f02288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24002288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24102288, 0x00d28a61, 0x00000000 },
- { 0x00600601, 0x24d02288, 0x00cf8c01, 0x00000000 },
- { 0x00600401, 0x24d82288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x25f02288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x25f82288, 0x00cf8841, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x00800201, 0x24202288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x24302288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x24402288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x24502288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x24e02288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x24e82288, 0x00cf8441, 0x00000000 },
- { 0x00600201, 0x26002288, 0x00cf8001, 0x00000000 },
- { 0x00600601, 0x26082288, 0x00cf8041, 0x00000000 },
- { 0x00800201, 0x24602288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x24702288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24802288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24902288, 0x00d28a61, 0x00000000 },
- { 0x00600601, 0x24f02288, 0x00cf8c01, 0x00000000 },
- { 0x00600401, 0x24f82288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x26102288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x26182288, 0x00cf8841, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x120a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8019 },
- { 0x0c000031, 0x20002220, 0x060005c0, 0x060a801a },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x06000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pa.g9b b/src/shaders/post_processing/gen9/pl2_to_pa.g9b
deleted file mode 100644
index 75bbd2f..0000000
--- a/src/shaders/post_processing/gen9/pl2_to_pa.g9b
+++ /dev/null
@@ -1,287 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006ea2 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006204 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x28802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2a802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2c802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2e802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22082260, 0x1669005c, 0x03a003a0 },
- { 0x00000209, 0x23601a28, 0x1e000120, 0x00010001 },
- { 0x00000601, 0x23641a28, 0x00000122, 0x00000000 },
- { 0x00000401, 0x23680608, 0x00000000, 0x0001001f },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x02000200 },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x06000600 },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x08000800 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x00000002 },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x02000200 },
- { 0x00000040, 0x23840a28, 0x0e000364, 0x00000004 },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x00000006 },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x00000040, 0x23840a28, 0x0e000364, 0x00000008 },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x0000000a },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x06000600 },
- { 0x00000040, 0x23840a28, 0x0e000364, 0x0000000c },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x0000000e },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x06000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b b/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
deleted file mode 100644
index aa1b270..0000000
--- a/src/shaders/post_processing/gen9/pl2_to_pl2.g9b
+++ /dev/null
@@ -1,238 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006ea2 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006204 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
- { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
- { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
- { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
- { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
- { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
- { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
- { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
- { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
- { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
- { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
- { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
- { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
- { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
- { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
- { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
- { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
- { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
- { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
- { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
- { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
- { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
- { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
- { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
- { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
- { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
- { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
- { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
- { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
- { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
- { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
- { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
- { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
- { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
- { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
- { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
- { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
- { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x28802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2a802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2c802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2e802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00200201, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00000201, 0x24a01a28, 0x00000120, 0x00000000 },
- { 0x00000608, 0x24a41a28, 0x1e000122, 0x00010001 },
- { 0x00000401, 0x23880608, 0x00000000, 0x000f000f },
- { 0x00000401, 0x24a80608, 0x00000000, 0x0007000f },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x23b02288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x23c02288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x23d02288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x44c02288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x44d02288, 0x00cf8441, 0x00000000 },
- { 0x00600601, 0x44c12288, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0x44d12288, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x00800201, 0x23e02288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x23f02288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24002288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24102288, 0x00d28a61, 0x00000000 },
- { 0x00600201, 0x44e02288, 0x00cf8c01, 0x00000000 },
- { 0x00600601, 0x44f02288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x44e12288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x44f12288, 0x00cf8841, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x00800201, 0x24202288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x24302288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x24402288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x24502288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x45002288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x45102288, 0x00cf8441, 0x00000000 },
- { 0x00600601, 0x45012288, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0x45112288, 0x00cf8041, 0x00000000 },
- { 0x00800201, 0x24602288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x24702288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24802288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24902288, 0x00d28a61, 0x00000000 },
- { 0x00600201, 0x45202288, 0x00cf8c01, 0x00000000 },
- { 0x00600601, 0x45302288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x45212288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x45312288, 0x00cf8841, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x120a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x0a0a8019 },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x06000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b b/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
deleted file mode 100644
index 148f939..0000000
--- a/src/shaders/post_processing/gen9/pl2_to_pl3.g9b
+++ /dev/null
@@ -1,241 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006ea2 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006204 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
- { 0x00110020, 0x34000004, 0x0e001400, 0x000002a0 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
- { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
- { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
- { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
- { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
- { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
- { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
- { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
- { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
- { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
- { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
- { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
- { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
- { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
- { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
- { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
- { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
- { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00000001, 0x24a01a28, 0x00000120, 0x00000000 },
- { 0x00000008, 0x24a41a28, 0x1e000122, 0x00010001 },
- { 0x00000001, 0x24a80608, 0x00000000, 0x0007000f },
- { 0x0c000031, 0x24c02228, 0x060004a0, 0x02490004 },
- { 0x00600009, 0x48802248, 0x1eae04c0, 0x00080008 },
- { 0x00600009, 0x48c02248, 0x1eae04d0, 0x00080008 },
- { 0x00600009, 0x4a802248, 0x1eae04e0, 0x00080008 },
- { 0x00600009, 0x4ac02248, 0x1eae04f0, 0x00080008 },
- { 0x00600009, 0x4c802248, 0x1eae0500, 0x00080008 },
- { 0x00600009, 0x4cc02248, 0x1eae0510, 0x00080008 },
- { 0x00600009, 0x4e802248, 0x1eae0520, 0x00080008 },
- { 0x00600009, 0x4ec02248, 0x1eae0530, 0x00080008 },
- { 0x00600009, 0x49002248, 0x1eae04c1, 0x00080008 },
- { 0x00600009, 0x49402248, 0x1eae04d1, 0x00080008 },
- { 0x00600009, 0x4b002248, 0x1eae04e1, 0x00080008 },
- { 0x00600009, 0x4b402248, 0x1eae04f1, 0x00080008 },
- { 0x00600009, 0x4d002248, 0x1eae0501, 0x00080008 },
- { 0x00600009, 0x4d402248, 0x1eae0511, 0x00080008 },
- { 0x00600009, 0x4f002248, 0x1eae0521, 0x00080008 },
- { 0x00600009, 0x4f402248, 0x1eae0531, 0x00080008 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000280 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x28802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2a802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2c802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2e802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
- { 0x00200201, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00200208, 0x24a01a28, 0x1e450120, 0x00010001 },
- { 0x00200208, 0x25c01a28, 0x1e450120, 0x00010001 },
- { 0x00000401, 0x23880608, 0x00000000, 0x000f000f },
- { 0x00000401, 0x24a80608, 0x00000000, 0x00070007 },
- { 0x00000401, 0x25c80608, 0x00000000, 0x00070007 },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x23b02288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x23c02288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x23d02288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x24c02288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x24c82288, 0x00cf8441, 0x00000000 },
- { 0x00600201, 0x25e02288, 0x00cf8001, 0x00000000 },
- { 0x00600601, 0x25e82288, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x00800201, 0x23e02288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x23f02288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24002288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24102288, 0x00d28a61, 0x00000000 },
- { 0x00600601, 0x24d02288, 0x00cf8c01, 0x00000000 },
- { 0x00600401, 0x24d82288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x25f02288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x25f82288, 0x00cf8841, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x00800201, 0x24202288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x24302288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x24402288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x24502288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x24e02288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x24e82288, 0x00cf8441, 0x00000000 },
- { 0x00600201, 0x26002288, 0x00cf8001, 0x00000000 },
- { 0x00600601, 0x26082288, 0x00cf8041, 0x00000000 },
- { 0x00800201, 0x24602288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x24702288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24802288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24902288, 0x00d28a61, 0x00000000 },
- { 0x00600601, 0x24f02288, 0x00cf8c01, 0x00000000 },
- { 0x00600401, 0x24f82288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x26102288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x26182288, 0x00cf8841, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x120a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8019 },
- { 0x0c000031, 0x20002220, 0x060005c0, 0x060a801a },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x06000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen9/pl2_to_rgbx.g9b b/src/shaders/post_processing/gen9/pl2_to_rgbx.g9b
deleted file mode 100644
index 95a0e6a..0000000
--- a/src/shaders/post_processing/gen9/pl2_to_rgbx.g9b
+++ /dev/null
@@ -1,770 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006ea2 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006204 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x28802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2a802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2c802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x048eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000a000 },
- { 0x02000031, 0x2e802248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x22001240, 0x006902c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2012288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4012288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0012288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2212288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4212288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0212288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2412288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4412288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0412288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2612288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4612288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0612288, 0x00cf05c0, 0x00000000 },
- { 0x00400040, 0x22001240, 0x166902c0, 0x02000200 },
- { 0x00600001, 0x248022e8, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2012288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4012288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0012288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2212288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4212288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0212288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2412288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4412288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0412288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2612288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4612288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0612288, 0x00cf05c0, 0x00000000 },
- { 0x00400040, 0x22001240, 0x166902c0, 0x04000400 },
- { 0x00600001, 0x248022e8, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2012288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4012288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0012288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2212288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4212288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0212288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2412288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4412288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0412288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2612288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4612288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0612288, 0x00cf05c0, 0x00000000 },
- { 0x00400040, 0x22001240, 0x166902c0, 0x06000600 },
- { 0x00600001, 0x248022e8, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2012288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4012288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0012288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2212288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4212288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0212288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2412288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4412288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0412288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x248022e8, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x24a022e8, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x24c022e8, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x24e022e8, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x250022e8, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x252022e8, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24803ae8, 0x3e200480, 0x3b8080c4 },
- { 0x00800041, 0x24c03ae8, 0x3e2004c0, 0x3b8080c4 },
- { 0x00800041, 0x25003ae8, 0x3e200500, 0x3b8080c4 },
- { 0x00800040, 0x24803ae8, 0x3a200480, 0x000000ec },
- { 0x00800040, 0x24c03ae8, 0x3a2004c0, 0x000000fc },
- { 0x00800040, 0x25003ae8, 0x3a200500, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000e4 },
- { 0x80800048, 0x23803ae8, 0x3a8d0500, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x000000f4 },
- { 0x80800048, 0x23c03ae8, 0x3a8d0500, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d0480, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d04c0, 0x00000104 },
- { 0x80800048, 0x24003ae8, 0x3a8d0500, 0x00000108 },
- { 0x00800041, 0x23803ae8, 0x3e8d0380, 0x437f0000 },
- { 0x00800041, 0x23c03ae8, 0x3e8d03c0, 0x437f0000 },
- { 0x00800041, 0x24003ae8, 0x3e8d0400, 0x437f0000 },
- { 0x00800001, 0x45403a68, 0x008d0380, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d03c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0400, 0x00000000 },
- { 0x00800001, 0xc2612288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xc4612288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc0612288, 0x00cf05c0, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x000062ea },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x02800005, 0x20001260, 0x1e000046, 0x00010001 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00010001, 0x22201048, 0x00000200, 0x00000000 },
- { 0x00010001, 0x22001040, 0x00000204, 0x00000000 },
- { 0x00010001, 0x22041240, 0x00000220, 0x00000000 },
- { 0x00000209, 0x23601a28, 0x1e000120, 0x00020002 },
- { 0x00000601, 0x23641a28, 0x00000122, 0x00000000 },
- { 0x00000401, 0x23680608, 0x00000000, 0x0003001f },
- { 0x00400001, 0x22081040, 0x00690200, 0x00000000 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x26e00208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x23e00208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25000208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x26200208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x27400208, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x24a00a28, 0x0e000360, 0x00000020 },
- { 0x00000040, 0x25c40a28, 0x0e000364, 0x00000004 },
- { 0x00000040, 0x26e40a28, 0x0e000364, 0x00000004 },
- { 0x00000040, 0x26e00a28, 0x0e000360, 0x00000020 },
- { 0x00600001, 0x63a02288, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x63a12288, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x63a22288, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x63a32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x63c02288, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x63c12288, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x63c22288, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x63c32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64c02288, 0x00ae8011, 0x00000000 },
- { 0x00600001, 0x64c12288, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x64c22288, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x64c32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64e02288, 0x00ae8031, 0x00000000 },
- { 0x00600001, 0x64e12288, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x64e22288, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x64e32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x63e02288, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x63e12288, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x63e22288, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x63e32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64002288, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x64012288, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x64022288, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x64032288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x65002288, 0x00ae8051, 0x00000000 },
- { 0x00600001, 0x65012288, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x65022288, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x65032288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x65202288, 0x00ae8071, 0x00000000 },
- { 0x00600001, 0x65212288, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x65222288, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x65232288, 0x0000005f, 0x00000000 },
- { 0x0c800031, 0x20002220, 0x06000380, 0x0a0a8018 },
- { 0x0c800031, 0x20002220, 0x060004a0, 0x0a0a8018 },
- { 0x00400040, 0x22001040, 0x16690208, 0x02000200 },
- { 0x00600001, 0x65e02288, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x65e12288, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x65e22288, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x65e32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66002288, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x66012288, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x66022288, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x66032288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67002288, 0x00ae8011, 0x00000000 },
- { 0x00600001, 0x67012288, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x67022288, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x67032288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67202288, 0x00ae8031, 0x00000000 },
- { 0x00600001, 0x67212288, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x67222288, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x67232288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66202288, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x66212288, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x66222288, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x66232288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66402288, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x66412288, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x66422288, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x66432288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67402288, 0x00ae8051, 0x00000000 },
- { 0x00600001, 0x67412288, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x67422288, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x67432288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67602288, 0x00ae8071, 0x00000000 },
- { 0x00600001, 0x67612288, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x67622288, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x67632288, 0x0000005f, 0x00000000 },
- { 0x0c800031, 0x20002220, 0x060005c0, 0x0a0a8018 },
- { 0x0c800031, 0x20002220, 0x060006e0, 0x0a0a8018 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x26e00208, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x23840a28, 0x0e000364, 0x00000008 },
- { 0x00000040, 0x24a00a28, 0x0e000360, 0x00000020 },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x00000008 },
- { 0x00000040, 0x25c40a28, 0x0e000364, 0x0000000c },
- { 0x00000040, 0x26e40a28, 0x0e000364, 0x0000000c },
- { 0x00000040, 0x26e00a28, 0x0e000360, 0x00000020 },
- { 0x00400040, 0x22001040, 0x16690208, 0x04000400 },
- { 0x00600001, 0x63a02288, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x63a12288, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x63a22288, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x63a32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x63c02288, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x63c12288, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x63c22288, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x63c32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64c02288, 0x00ae8011, 0x00000000 },
- { 0x00600001, 0x64c12288, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x64c22288, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x64c32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64e02288, 0x00ae8031, 0x00000000 },
- { 0x00600001, 0x64e12288, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x64e22288, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x64e32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x63e02288, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x63e12288, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x63e22288, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x63e32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x64002288, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x64012288, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x64022288, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x64032288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x65002288, 0x00ae8051, 0x00000000 },
- { 0x00600001, 0x65012288, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x65022288, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x65032288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x65202288, 0x00ae8071, 0x00000000 },
- { 0x00600001, 0x65212288, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x65222288, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x65232288, 0x0000005f, 0x00000000 },
- { 0x0c800031, 0x20002220, 0x06000380, 0x0a0a8018 },
- { 0x0c800031, 0x20002220, 0x060004a0, 0x0a0a8018 },
- { 0x00400040, 0x22001040, 0x16690208, 0x06000600 },
- { 0x00600001, 0x65e02288, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x65e12288, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x65e22288, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x65e32288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66002288, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x66012288, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x66022288, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x66032288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67002288, 0x00ae8011, 0x00000000 },
- { 0x00600001, 0x67012288, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x67022288, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x67032288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67202288, 0x00ae8031, 0x00000000 },
- { 0x00600001, 0x67212288, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x67222288, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x67232288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66202288, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x66212288, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x66222288, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x66232288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x66402288, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x66412288, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x66422288, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x66432288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67402288, 0x00ae8051, 0x00000000 },
- { 0x00600001, 0x67412288, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x67422288, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x67432288, 0x0000005f, 0x00000000 },
- { 0x00600001, 0x67602288, 0x00ae8071, 0x00000000 },
- { 0x00600001, 0x67612288, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x67622288, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x67632288, 0x0000005f, 0x00000000 },
- { 0x0c800031, 0x20002220, 0x060005c0, 0x0a0a8018 },
- { 0x0c800031, 0x20002220, 0x060006e0, 0x0a0a8018 },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x06000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pa.g9b b/src/shaders/post_processing/gen9/pl3_to_pa.g9b
deleted file mode 100644
index 91309ee..0000000
--- a/src/shaders/post_processing/gen9/pl3_to_pa.g9b
+++ /dev/null
@@ -1,303 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006ea2 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006204 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x28802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x29002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2a802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2b002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2c802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2d002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2e802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2f002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22082260, 0x1669005c, 0x03a003a0 },
- { 0x00000209, 0x23601a28, 0x1e000120, 0x00010001 },
- { 0x00000601, 0x23641a28, 0x00000122, 0x00000000 },
- { 0x00000401, 0x23680608, 0x00000000, 0x0001001f },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x02000200 },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x06000600 },
- { 0x80400040, 0xc0001248, 0x168a8000, 0x00800080 },
- { 0x80400040, 0xc0201248, 0x168a8020, 0x00800080 },
- { 0x80400040, 0xc0401248, 0x168a8040, 0x00800080 },
- { 0x80400040, 0xc0601248, 0x168a8060, 0x00800080 },
- { 0x80600040, 0xa2001248, 0x168d8200, 0x00800080 },
- { 0x80600040, 0xa2201248, 0x168d8220, 0x00800080 },
- { 0x80600040, 0xa2401248, 0x168d8240, 0x00800080 },
- { 0x80600040, 0xa2601248, 0x168d8260, 0x00800080 },
- { 0x80400040, 0xc4001248, 0x168a8400, 0x00800080 },
- { 0x80400040, 0xc4201248, 0x168a8420, 0x00800080 },
- { 0x80400040, 0xc4401248, 0x168a8440, 0x00800080 },
- { 0x80400040, 0xc4601248, 0x168a8460, 0x00800080 },
- { 0x80400040, 0xc0101248, 0x168a8010, 0x00800080 },
- { 0x80400040, 0xc0301248, 0x168a8030, 0x00800080 },
- { 0x80400040, 0xc0501248, 0x168a8050, 0x00800080 },
- { 0x80400040, 0xc0701248, 0x168a8070, 0x00800080 },
- { 0x80600040, 0xa2101248, 0x168d8210, 0x00800080 },
- { 0x80600040, 0xa2301248, 0x168d8230, 0x00800080 },
- { 0x80600040, 0xa2501248, 0x168d8250, 0x00800080 },
- { 0x80600040, 0xa2701248, 0x168d8270, 0x00800080 },
- { 0x80400040, 0xc4101248, 0x168a8410, 0x00800080 },
- { 0x80400040, 0xc4301248, 0x168a8430, 0x00800080 },
- { 0x80400040, 0xc4501248, 0x168a8450, 0x00800080 },
- { 0x80400040, 0xc4701248, 0x168a8470, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x08000800 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x00000002 },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x02000200 },
- { 0x00000040, 0x23840a28, 0x0e000364, 0x00000004 },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x00000006 },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x00000040, 0x23840a28, 0x0e000364, 0x00000008 },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x0000000a },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x06000600 },
- { 0x00000040, 0x23840a28, 0x0e000364, 0x0000000c },
- { 0x00000040, 0x24a40a28, 0x0e000364, 0x0000000e },
- { 0x00600201, 0xec002288, 0x00cf8001, 0x00000000 },
- { 0x00600201, 0xec202288, 0x00cf8021, 0x00000000 },
- { 0x00800601, 0xc8002288, 0x00d28201, 0x00000000 },
- { 0x00800601, 0xc8202288, 0x00d28221, 0x00000000 },
- { 0x00600401, 0xea002288, 0x00cf8401, 0x00000000 },
- { 0x00600401, 0xea202288, 0x00cf8421, 0x00000000 },
- { 0x00600201, 0xed202288, 0x00cf8041, 0x00000000 },
- { 0x00600201, 0xed402288, 0x00cf8061, 0x00000000 },
- { 0x00800601, 0xc9202288, 0x00d28241, 0x00000000 },
- { 0x00800601, 0xc9402288, 0x00d28261, 0x00000000 },
- { 0x00600401, 0xeb202288, 0x00cf8441, 0x00000000 },
- { 0x00600401, 0xeb402288, 0x00cf8461, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x060a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8018 },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x06000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b b/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
deleted file mode 100644
index 4184a12..0000000
--- a/src/shaders/post_processing/gen9/pl3_to_pl2.g9b
+++ /dev/null
@@ -1,257 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006ea2 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006204 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
- { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
- { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
- { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
- { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
- { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
- { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
- { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
- { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
- { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
- { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
- { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
- { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
- { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
- { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
- { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
- { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
- { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
- { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
- { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
- { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
- { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
- { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
- { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
- { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
- { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
- { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
- { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
- { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
- { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
- { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
- { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
- { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
- { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
- { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
- { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
- { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
- { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
- { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
- { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
- { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x28802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x29002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2a802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2b002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2c802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2d002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2e802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2f002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00200201, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00000201, 0x24a01a28, 0x00000120, 0x00000000 },
- { 0x00000608, 0x24a41a28, 0x1e000122, 0x00010001 },
- { 0x00000401, 0x23880608, 0x00000000, 0x000f000f },
- { 0x00000401, 0x24a80608, 0x00000000, 0x0007000f },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x23b02288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x23c02288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x23d02288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x44c02288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x44d02288, 0x00cf8441, 0x00000000 },
- { 0x00600601, 0x44c12288, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0x44d12288, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x00800201, 0x23e02288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x23f02288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24002288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24102288, 0x00d28a61, 0x00000000 },
- { 0x00600201, 0x44e02288, 0x00cf8c01, 0x00000000 },
- { 0x00600601, 0x44f02288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x44e12288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x44f12288, 0x00cf8841, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x00800201, 0x24202288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x24302288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x24402288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x24502288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x45002288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x45102288, 0x00cf8441, 0x00000000 },
- { 0x00600601, 0x45012288, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0x45112288, 0x00cf8041, 0x00000000 },
- { 0x00800201, 0x24602288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x24702288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24802288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24902288, 0x00d28a61, 0x00000000 },
- { 0x00600201, 0x45202288, 0x00cf8c01, 0x00000000 },
- { 0x00600601, 0x45302288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x45212288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x45312288, 0x00cf8841, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x120a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x0a0a8019 },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x06000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b b/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
deleted file mode 100644
index 50f391d..0000000
--- a/src/shaders/post_processing/gen9/pl3_to_pl3.g9b
+++ /dev/null
@@ -1,260 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006ea2 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006204 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x02000005, 0x20001240, 0x16000046, 0x00020002 },
- { 0x00110020, 0x34000004, 0x0e001400, 0x000002d0 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00200001, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00000001, 0x23880608, 0x00000000, 0x000f000f },
- { 0x0c000031, 0x23a02228, 0x06000380, 0x02890003 },
- { 0x00800009, 0x28002248, 0x1eb103a0, 0x00080008 },
- { 0x00800009, 0x28202248, 0x1eb103b0, 0x00080008 },
- { 0x00800009, 0x28402248, 0x1eb103c0, 0x00080008 },
- { 0x00800009, 0x28602248, 0x1eb103d0, 0x00080008 },
- { 0x00800009, 0x2a002248, 0x1eb103e0, 0x00080008 },
- { 0x00800009, 0x2a202248, 0x1eb103f0, 0x00080008 },
- { 0x00800009, 0x2a402248, 0x1eb10400, 0x00080008 },
- { 0x00800009, 0x2a602248, 0x1eb10410, 0x00080008 },
- { 0x00800009, 0x2c002248, 0x1eb10420, 0x00080008 },
- { 0x00800009, 0x2c202248, 0x1eb10430, 0x00080008 },
- { 0x00800009, 0x2c402248, 0x1eb10440, 0x00080008 },
- { 0x00800009, 0x2c602248, 0x1eb10450, 0x00080008 },
- { 0x00800009, 0x2e002248, 0x1eb10460, 0x00080008 },
- { 0x00800009, 0x2e202248, 0x1eb10470, 0x00080008 },
- { 0x00800009, 0x2e402248, 0x1eb10480, 0x00080008 },
- { 0x00800009, 0x2e602248, 0x1eb10490, 0x00080008 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00200008, 0x24a01a28, 0x1e450120, 0x00010001 },
- { 0x00000001, 0x24a80608, 0x00000000, 0x00070007 },
- { 0x0c000031, 0x24c02228, 0x060004a0, 0x02290004 },
- { 0x00600009, 0x48802248, 0x1e8d04c0, 0x00080008 },
- { 0x00600009, 0x48c02248, 0x1e8d04c8, 0x00080008 },
- { 0x00600009, 0x4a802248, 0x1e8d04d0, 0x00080008 },
- { 0x00600009, 0x4ac02248, 0x1e8d04d8, 0x00080008 },
- { 0x00600009, 0x4c802248, 0x1e8d04e0, 0x00080008 },
- { 0x00600009, 0x4cc02248, 0x1e8d04e8, 0x00080008 },
- { 0x00600009, 0x4e802248, 0x1e8d04f0, 0x00080008 },
- { 0x00600009, 0x4ec02248, 0x1e8d04f8, 0x00080008 },
- { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
- { 0x00200008, 0x25c01a28, 0x1e450120, 0x00010001 },
- { 0x00000001, 0x25c80608, 0x00000000, 0x00070007 },
- { 0x0c000031, 0x25e02228, 0x060005c0, 0x02290005 },
- { 0x00600009, 0x49002248, 0x1e8d05e0, 0x00080008 },
- { 0x00600009, 0x49402248, 0x1e8d05e8, 0x00080008 },
- { 0x00600009, 0x4b002248, 0x1e8d05f0, 0x00080008 },
- { 0x00600009, 0x4b402248, 0x1e8d05f8, 0x00080008 },
- { 0x00600009, 0x4d002248, 0x1e8d0600, 0x00080008 },
- { 0x00600009, 0x4d402248, 0x1e8d0608, 0x00080008 },
- { 0x00600009, 0x4f002248, 0x1e8d0610, 0x00080008 },
- { 0x00600009, 0x4f402248, 0x1e8d0618, 0x00080008 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000380 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x28802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x29002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2a802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2b002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2c802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2d002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000d000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb001 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2e802248, 0x00000200, 0x00000200 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x044eb002 },
- { 0x00000001, 0x22080608, 0x00000000, 0x0000e000 },
- { 0x02000031, 0x2f002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x25c00208, 0x008d0360, 0x00000000 },
- { 0x00200201, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00200208, 0x24a01a28, 0x1e450120, 0x00010001 },
- { 0x00200208, 0x25c01a28, 0x1e450120, 0x00010001 },
- { 0x00000401, 0x23880608, 0x00000000, 0x000f000f },
- { 0x00000401, 0x24a80608, 0x00000000, 0x00070007 },
- { 0x00000401, 0x25c80608, 0x00000000, 0x00070007 },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x23b02288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x23c02288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x23d02288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x24c02288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x24c82288, 0x00cf8441, 0x00000000 },
- { 0x00600201, 0x25e02288, 0x00cf8001, 0x00000000 },
- { 0x00600601, 0x25e82288, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x00800201, 0x23e02288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x23f02288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24002288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24102288, 0x00d28a61, 0x00000000 },
- { 0x00600601, 0x24d02288, 0x00cf8c01, 0x00000000 },
- { 0x00600401, 0x24d82288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x25f02288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x25f82288, 0x00cf8841, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x00800201, 0x24202288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x24302288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x24402288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x24502288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x24e02288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x24e82288, 0x00cf8441, 0x00000000 },
- { 0x00600201, 0x26002288, 0x00cf8001, 0x00000000 },
- { 0x00600601, 0x26082288, 0x00cf8041, 0x00000000 },
- { 0x00800201, 0x24602288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x24702288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24802288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24902288, 0x00d28a61, 0x00000000 },
- { 0x00600601, 0x24f02288, 0x00cf8c01, 0x00000000 },
- { 0x00600401, 0x24f82288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x26102288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x26182288, 0x00cf8841, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x120a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x060a8019 },
- { 0x0c000031, 0x20002220, 0x060005c0, 0x060a801a },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x06000fe0, 0x82000010 },
diff --git a/src/shaders/post_processing/gen9/rgbx_to_nv12.g9b b/src/shaders/post_processing/gen9/rgbx_to_nv12.g9b
deleted file mode 100644
index bee1d92..0000000
--- a/src/shaders/post_processing/gen9/rgbx_to_nv12.g9b
+++ /dev/null
@@ -1,611 +0,0 @@
- { 0x00600001, 0x23600208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23200208, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x23400208, 0x008d0000, 0x00000000 },
- { 0x00600041, 0x20603ae8, 0x3a8d0060, 0x00000130 },
- { 0x00200001, 0x21541ae8, 0x00450120, 0x00000000 },
- { 0x01000010, 0x20002220, 0x1600005a, 0x00010001 },
- { 0x00000008, 0x22201248, 0x16000044, 0x00000000 },
- { 0x00000005, 0x22201248, 0x16000220, 0x00030003 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00010001 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000090 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00020002 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x000000f0 },
- { 0x01000010, 0x20001261, 0x16000220, 0x00030003 },
- { 0x00010020, 0x34000005, 0x0e001400, 0x00000180 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000154 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000158 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x000001a0 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000158 },
- { 0x00000001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000120 },
- { 0x00110001, 0x220012e8, 0x00000040, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004154, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00000040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00000040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000220 },
- { 0x00000020, 0x34000004, 0x0e001400, 0x00000070 },
- { 0x00110001, 0x220012e8, 0x00000042, 0x00000000 },
- { 0x00110040, 0x22203ae8, 0x3a004158, 0x00000200 },
- { 0x00110040, 0x22203ae8, 0x3e000220, 0xc1800000 },
- { 0x00110001, 0x24003ae0, 0x000000c0, 0x00000000 },
- { 0x00110048, 0x20c03ae8, 0x3a000060, 0x00000220 },
- { 0x00000001, 0x24003ae0, 0x000000a0, 0x00000000 },
- { 0x00000048, 0x20a03ae8, 0x3a000080, 0x00000154 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00800001, 0x22a01648, 0x10000000, 0xffffffff },
- { 0x00000005, 0x23021288, 0x16000044, 0x00030003 },
- { 0x00000001, 0x23203ae8, 0x00000138, 0x00000000 },
- { 0x00000001, 0x23383ae8, 0x00000134, 0x00000000 },
- { 0x00000001, 0x23303ae8, 0x00000060, 0x00000000 },
- { 0x00000001, 0x23343ae8, 0x00000080, 0x00000000 },
- { 0x00000001, 0x23283ae8, 0x000000c0, 0x00000000 },
- { 0x00000001, 0x232c3ae8, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x233c0608, 0x00000000, 0x00000000 },
- { 0x00000040, 0x233c0208, 0x0600033c, 0x08000000 },
- { 0x00000001, 0x24083ae0, 0x000000c0, 0x00000000 },
- { 0x00000048, 0x24083ae0, 0x3e000060, 0x41000000 },
- { 0x00000248, 0x22e83ae8, 0x3e000134, 0x41e00000 },
- { 0x00000641, 0x22e43ae8, 0x3e000080, 0x40800000 },
- { 0x00000001, 0x24103ae0, 0x00000060, 0x00000000 },
- { 0x00000648, 0x22f03ae8, 0x3e000134, 0x41000000 },
- { 0x00000401, 0x22f40608, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006ea2 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00460046 },
- { 0x00400009, 0x22c01868, 0x16690400, 0x00050005 },
- { 0x00400001, 0x24003660, 0x30000000, 0x00006204 },
- { 0x00400040, 0x24001860, 0x16690400, 0x00400040 },
- { 0x00400209, 0x22401868, 0x16690400, 0x00050005 },
- { 0x00000401, 0x22500608, 0x00000000, 0x01000100 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x28002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000001 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2a002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000002 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2c002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22d00608, 0x00000000, 0x00400040 },
- { 0x00000001, 0x220c0208, 0x0000000c, 0x00000000 },
- { 0x00000040, 0x22000200, 0x060002f4, 0x050eb000 },
- { 0x00000001, 0x22080608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23240608, 0x00000000, 0x00000003 },
- { 0x00600001, 0x22200208, 0x008d0320, 0x00000000 },
- { 0x02000031, 0x2e002248, 0x00000200, 0x00000200 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00400001, 0x22001240, 0x006902c0, 0x00000000 },
- { 0x00400001, 0x22081240, 0x006902c0, 0x00000000 },
- { 0x02800005, 0x20001260, 0x1e000040, 0x00010001 },
- { 0x00010001, 0x22201048, 0x00000200, 0x00000000 },
- { 0x00010001, 0x22001040, 0x00000202, 0x00000000 },
- { 0x00010001, 0x22021240, 0x00000220, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca012288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc012288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8012288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca212288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc212288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8212288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca412288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc412288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8412288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca612288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc612288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8612288, 0x00cf05c0, 0x00000000 },
- { 0x00600040, 0x22001040, 0x168d0200, 0x02000200 },
- { 0x00600001, 0x238022e8, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca012288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc012288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8012288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca212288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc212288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8212288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca412288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc412288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8412288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca612288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc612288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8612288, 0x00cf05c0, 0x00000000 },
- { 0x00600040, 0x22001040, 0x168d0200, 0x02000200 },
- { 0x00600001, 0x238022e8, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca012288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc012288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8012288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca212288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc212288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8212288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca412288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc412288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8412288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca612288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc612288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8612288, 0x00cf05c0, 0x00000000 },
- { 0x00600040, 0x22001040, 0x168d0200, 0x02000200 },
- { 0x00600001, 0x238022e8, 0x00ae8201, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8211, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8401, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8411, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8001, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8011, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8001648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca012288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc012288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8012288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8221, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8231, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8421, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8431, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8021, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8031, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8201648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca212288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc212288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8212288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8241, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8251, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8441, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8451, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8041, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8051, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8401648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca412288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc412288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8412288, 0x00cf05c0, 0x00000000 },
- { 0x00600001, 0x238022e8, 0x00ae8261, 0x00000000 },
- { 0x00600001, 0x23a022e8, 0x00ae8271, 0x00000000 },
- { 0x00600001, 0x23c022e8, 0x00ae8461, 0x00000000 },
- { 0x00600001, 0x23e022e8, 0x00ae8471, 0x00000000 },
- { 0x00600001, 0x240022e8, 0x00ae8061, 0x00000000 },
- { 0x00600001, 0x242022e8, 0x00ae8071, 0x00000000 },
- { 0x00800041, 0x24003ae0, 0x3e8d0380, 0x3e991687 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0x3f1645a2 },
- { 0x00800048, 0x24803ae8, 0x3e8d0400, 0x3de978d5 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0xbe2d0e56 },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbea978d5 },
- { 0x00800048, 0x24c03ae8, 0x3e8d0400, 0x3eff7cee },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x43000000 },
- { 0x00800048, 0x24003ae0, 0x3e8d0380, 0x3eff7cee },
- { 0x00800048, 0x24003ae0, 0x3e8d03c0, 0xbed60419 },
- { 0x00800048, 0x25003ae8, 0x3e8d0400, 0xbda6809d },
- { 0x00800001, 0x45403a68, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x45803a68, 0x008d04c0, 0x00000000 },
- { 0x00800001, 0x45c03a68, 0x008d0500, 0x00000000 },
- { 0x00800001, 0xaa601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xac601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xa8601648, 0x10000000, 0x00000000 },
- { 0x00800001, 0xca612288, 0x00cf0540, 0x00000000 },
- { 0x00800001, 0xcc612288, 0x00cf0580, 0x00000000 },
- { 0x00800001, 0xc8612288, 0x00cf05c0, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00600001, 0x23800208, 0x008d0360, 0x00000000 },
- { 0x00600001, 0x24a00208, 0x008d0360, 0x00000000 },
- { 0x00200201, 0x23801a28, 0x00450120, 0x00000000 },
- { 0x00000201, 0x24a01a28, 0x00000120, 0x00000000 },
- { 0x00000608, 0x24a41a28, 0x1e000122, 0x00010001 },
- { 0x00000401, 0x23880608, 0x00000000, 0x000f000f },
- { 0x00000401, 0x24a80608, 0x00000000, 0x0007000f },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 },
- { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 },
- { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 },
- { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 },
- { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 },
- { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 },
- { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 },
- { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 },
- { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 },
- { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 },
- { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 },
- { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 },
- { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 },
- { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 },
- { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 },
- { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 },
- { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x23b02288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x23c02288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x23d02288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x44c02288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x44d02288, 0x00cf8441, 0x00000000 },
- { 0x00600601, 0x44c12288, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0x44d12288, 0x00cf8041, 0x00000000 },
- { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 },
- { 0x00800201, 0x23e02288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x23f02288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24002288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24102288, 0x00d28a61, 0x00000000 },
- { 0x00600201, 0x44e02288, 0x00cf8c01, 0x00000000 },
- { 0x00600601, 0x44f02288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x44e12288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x44f12288, 0x00cf8841, 0x00000000 },
- { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 },
- { 0x00800201, 0x24202288, 0x00d28201, 0x00000000 },
- { 0x00800401, 0x24302288, 0x00d28221, 0x00000000 },
- { 0x00800201, 0x24402288, 0x00d28241, 0x00000000 },
- { 0x00800401, 0x24502288, 0x00d28261, 0x00000000 },
- { 0x00600201, 0x45002288, 0x00cf8401, 0x00000000 },
- { 0x00600601, 0x45102288, 0x00cf8441, 0x00000000 },
- { 0x00600601, 0x45012288, 0x00cf8001, 0x00000000 },
- { 0x00600401, 0x45112288, 0x00cf8041, 0x00000000 },
- { 0x00800201, 0x24602288, 0x00d28a01, 0x00000000 },
- { 0x00800401, 0x24702288, 0x00d28a21, 0x00000000 },
- { 0x00800201, 0x24802288, 0x00d28a41, 0x00000000 },
- { 0x00800401, 0x24902288, 0x00d28a61, 0x00000000 },
- { 0x00600201, 0x45202288, 0x00cf8c01, 0x00000000 },
- { 0x00600601, 0x45302288, 0x00cf8c41, 0x00000000 },
- { 0x00600601, 0x45212288, 0x00cf8801, 0x00000000 },
- { 0x00600401, 0x45312288, 0x00cf8841, 0x00000000 },
- { 0x0c000031, 0x20002220, 0x06000380, 0x120a8018 },
- { 0x0c000031, 0x20002220, 0x060004a0, 0x0a0a8019 },
- { 0x00600001, 0x2fe00208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x20002220, 0x06000fe0, 0x82000010 },
diff --git a/src/shaders/render/Makefile.am b/src/shaders/render/Makefile.am
deleted file mode 100644
index 63991ce..0000000
--- a/src/shaders/render/Makefile.am
+++ /dev/null
@@ -1,206 +0,0 @@
-
-INTEL_G4I = \
- exa_wm.g4i \
- exa_wm_affine.g4i \
- exa_wm_yuv_color_balance.gxa \
- exa_yuv_rgb.gxa \
- exa_yuv_gen4.g4i \
- exa_yuv_gen6.g4i
-
-INTEL_G4A = \
- exa_sf.g4a \
- exa_wm_xy.g4a \
- exa_wm_src_affine.g4a \
- exa_wm_src_sample_argb.g4a \
- exa_wm_src_sample_planar.g4a \
- exa_wm_yuv_color_balance.g4a \
- exa_wm_yuv_rgb.g4a \
- exa_wm_write.g4a
-
-INTEL_G4S = $(INTEL_G4A:%.g4a=%.g4s)
-
-INTEL_G4B = \
- exa_sf.g4b \
- exa_wm_xy.g4b \
- exa_wm_src_affine.g4b \
- exa_wm_src_sample_argb.g4b \
- exa_wm_src_sample_planar.g4b \
- exa_wm_yuv_color_balance.g4b \
- exa_wm_yuv_rgb.g4b \
- exa_wm_write.g4b
-
-INTEL_G4B_GEN5 = \
- exa_sf.g4b.gen5 \
- exa_wm_xy.g4b.gen5 \
- exa_wm_src_affine.g4b.gen5 \
- exa_wm_src_sample_argb.g4b.gen5 \
- exa_wm_src_sample_planar.g4b.gen5 \
- exa_wm_yuv_color_balance.g4b.gen5 \
- exa_wm_yuv_rgb.g4b.gen5 \
- exa_wm_write.g4b.gen5
-
-INTEL_G6I = $(INTEL_G4I)
-
-INTEL_G6A = \
- exa_wm_src_affine.g6a \
- exa_wm_src_sample_argb.g6a \
- exa_wm_src_sample_planar.g6a \
- exa_wm_write.g6a \
- exa_wm_yuv_color_balance.g6a \
- exa_wm_yuv_rgb.g6a
-
-INTEL_G6S = $(INTEL_G6A:%.g6a=%.g6s)
-
-INTEL_G6B = \
- exa_wm_src_affine.g6b \
- exa_wm_src_sample_argb.g6b \
- exa_wm_src_sample_planar.g6b \
- exa_wm_write.g6b \
- exa_wm_yuv_color_balance.g6b \
- exa_wm_yuv_rgb.g6b
-
-INTEL_G7I = $(INTEL_G4I) \
- exa_wm_write.g7i
-
-INTEL_G7A = \
- exa_wm_src_affine.g7a \
- exa_wm_src_sample_argb.g7a \
- exa_wm_src_sample_planar.g7a \
- exa_wm_write.g7a \
- exa_wm_yuv_color_balance.g7a \
- exa_wm_yuv_rgb.g7a
-
-INTEL_G7S = $(INTEL_G7A:%.g7a=%.g7s)
-
-INTEL_G7B = \
- exa_wm_src_affine.g7b \
- exa_wm_src_sample_argb.g7b \
- exa_wm_src_sample_planar.g7b \
- exa_wm_write.g7b \
- exa_wm_yuv_color_balance.g7b \
- exa_wm_yuv_rgb.g7b
-
-# XXX: only regenerate binary for EU code containing JMPI instructions
-INTEL_G7B_HASWELL = \
- exa_wm_src_sample_planar.g7b.haswell \
- exa_wm_yuv_color_balance.g7b.haswell \
- $(NULL)
-
-INTEL_G8A = \
- exa_wm_src_affine.g8a \
- exa_wm_src_sample_planar.g8a \
- exa_wm_src_sample_argb.g8a \
- exa_wm_yuv_color_balance.g8a \
- exa_wm_write.g8a \
- exa_wm_yuv_rgb.g8a
-
-INTEL_G8S = $(INTEL_G8A:%.g8a=%.g8s)
-
-INTEL_G8B = \
- exa_wm_src_affine.g8b \
- exa_wm_src_sample_planar.g8b \
- exa_wm_src_sample_argb.g8b \
- exa_wm_yuv_color_balance.g8b \
- exa_wm_yuv_rgb.g8b \
- exa_wm_write.g8b
-
-INTEL_G9A = \
- exa_wm_src_affine.g9a \
- exa_wm_src_sample_planar.g9a \
- exa_wm_src_sample_argb.g9a \
- exa_wm_yuv_color_balance.g9a \
- exa_wm_write.g9a \
- exa_wm_yuv_rgb.g9a
-
-INTEL_G9I = $(INTEL_G4I)
-
-INTEL_G9S = $(INTEL_G9A:%.g9a=%.g9s)
-
-INTEL_G9B = \
- exa_wm_src_affine.g9b \
- exa_wm_src_sample_planar.g9b \
- exa_wm_src_sample_argb.g9b \
- exa_wm_yuv_color_balance.g9b \
- exa_wm_yuv_rgb.g9b \
- exa_wm_write.g9b
-
-TARGETS =
-if HAVE_GEN4ASM
-TARGETS += $(INTEL_G4B)
-TARGETS += $(INTEL_G4B_GEN5)
-TARGETS += $(INTEL_G6B)
-TARGETS += $(INTEL_G7B)
-TARGETS += $(INTEL_G7B_HASWELL)
-TARGETS += $(INTEL_G8B)
-TARGETS += $(INTEL_G9B)
-endif
-
-all-local: $(TARGETS)
-
-SUFFIXES = .g4a .g4s .g4b .g4b.gen5 .g6a .g6s .g6b .g7a .g7s .g7b .g7b.haswell .g8a .g8b .g8s
-
-if HAVE_GEN4ASM
-$(INTEL_G4S): $(INTEL_G4A) $(INTEL_G4I)
-.g4a.g4s:
- $(AM_V_GEN)m4 -I$(srcdir) $< > $@
-.g4s.g4b:
- $(AM_V_GEN)$(GEN4ASM) -o $@ $<
-.g4s.g4b.gen5:
- $(AM_V_GEN)$(GEN4ASM) -g 5 -o $@ $<
-
-$(INTEL_G6S): $(INTEL_G6A) $(INTEL_G6I)
-.g6a.g6s:
- $(AM_V_GEN)m4 -I$(srcdir) $< > $@
-.g6s.g6b:
- $(AM_V_GEN)$(GEN4ASM) -g 6 -o $@ $<
-
-$(INTEL_G7S): $(INTEL_G7A) $(INTEL_G7I)
-.g7a.g7s:
- $(AM_V_GEN)m4 -I$(srcdir) $< > $@
-.g7s.g7b:
- $(AM_V_GEN)$(GEN4ASM) -g 7 -o $@ $<
-.g7s.g7b.haswell:
- $(AM_V_GEN)$(GEN4ASM) -g 7.5 -o $@ $<
-
-
-$(INTEL_G8S): $(INTEL_G8A) $(INTEL_G8I)
-.g8a.g8s:
- $(AM_V_GEN)m4 -I$(srcdir) $< > $@
-.g8s.g8b:
- $(AM_V_GEN)$(GEN4ASM) -g 8 -o $@ $<
-
-$(INTEL_G9S): $(INTEL_G9A) $(INTEL_G9I)
-.g9a.g9s:
- $(AM_V_GEN)m4 -I$(srcdir) $< > $@
-.g9s.g9b:
- $(AM_V_GEN)$(GEN4ASM) -g 9 -o $@ $<
-
-endif
-
-CLEANFILES = \
- $(INTEL_G4S) \
- $(INTEL_G6S) \
- $(INTEL_G7S) \
- $(INTEL_G8S) \
- $(INTEL_G9S) \
- $(NULL)
-
-EXTRA_DIST = \
- $(INTEL_G4A) \
- $(INTEL_G4B) \
- $(INTEL_G4B_GEN5) \
- $(INTEL_G4I) \
- $(INTEL_G6A) \
- $(INTEL_G6B) \
- $(INTEL_G7A) \
- $(INTEL_G7B) \
- $(INTEL_G7B_HASWELL) \
- $(INTEL_G7I) \
- $(INTEL_G8A) \
- $(INTEL_G8B) \
- $(INTEL_G9A) \
- $(INTEL_G9B) \
- $(NULL)
-
-# Extra clean files so that maintainer-clean removes *everything*
-MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/shaders/render/exa_sf.g4a b/src/shaders/render/exa_sf.g4a
deleted file mode 100644
index 3e660ac..0000000
--- a/src/shaders/render/exa_sf.g4a
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright © 2006 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Keith Packard <keithp@keithp.com>
- * Eric Anholt <eric@anholt.net>
- *
- */
-
-/*
- * Inputs (note all sub-register addresses are bytes, not float indices)
- *
- * Note that the vertices will have been reordered:
- *
- * V0 is topmost (leftmost among topmost) (upper left)
- * V1 is next clockwise (lower right)
- * V2 is remaining (lower left)
- *
- * V0 ...................... XX
- * | .
- * | .
- * | .
- * V2------------------------V1
- *
- * G0 thread state -- just pass along
- *
- * G1 and G2 are fixed by SF spec
- *
- * G1.0 reserved
- * G1.4 Provoking vertex
- * G1.8 Determinant
- * G1.12 X1 - X0
- * G1.16 X2 - X0
- * G1.20 Y1 - Y0
- * G1.24 Y2 - Y0
- * G1.30 reserved
- *
- * G2.0 Z0
- * G2.4 1/W0
- * G2.8 Z1
- * G2.12 1/W1
- * G2.16 Z2
- * G2.20 1/W2
- * G2.24 reserved
- * G2.30 reserved
- *
- * G3 is V0 Vertex Attribute Data from URB (upper left)
- *
- * G3.0 u0
- * G3.4 v0
- *
- * G4 is V1 Vertex Attribute Data from URB (lower right)
- *
- * G4.0 u1
- * G4.4 v1
- *
- * G5 is V2 Vertex Attribute Data from URB (lower left)
- *
- */
-
-/* Compute inverses of the input deltas */
-send (4) 0 g6<1>F g1.12<4,4,1>F math inv mlen 1 rlen 1 { align1 };
-
-/* texture location at V0 */
-mov (4) m3<1>F g3<4,4,1>F { align1 };
-
-/* compute V1 - V2 (motion in X) for texture coordinates */
-add (4) g7<1>F g4<4,4,1>F -g5<4,4,1>F { align1 };
-
-/* multiply by 1/dx */
-mul (4) m1<1>F g7<4,4,1>F g6.0<0,1,0>F { align1 };
-
-/* Compute V2 - V0 (motion in Y) for texture coordinates */
-add (4) g7<1>F g5<4,4,1>F -g3<4,4,1>F { align1 };
-
-/* multiply by 1/dy */
-mul (4) m2<1>F g7<4,4,1>F g6.8<0,1,0>F {align1 };
-
-/* and we're done */
-send (8) 0 null g0<8,8,1>F urb 0 transpose used complete mlen 4 rlen 0 { align1 EOT };
-nop;
-nop;
-nop;
-nop;
-nop;
-nop;
-nop;
-nop;
diff --git a/src/shaders/render/exa_sf.g4b b/src/shaders/render/exa_sf.g4b
deleted file mode 100644
index 223c9c9..0000000
--- a/src/shaders/render/exa_sf.g4b
+++ /dev/null
@@ -1,15 +0,0 @@
- { 0x00400031, 0x20c01fbd, 0x0069002c, 0x01110001 },
- { 0x00400001, 0x206003be, 0x00690060, 0x00000000 },
- { 0x00400040, 0x20e077bd, 0x00690080, 0x006940a0 },
- { 0x00400041, 0x202077be, 0x006900e0, 0x000000c0 },
- { 0x00400040, 0x20e077bd, 0x006900a0, 0x00694060 },
- { 0x00400041, 0x204077be, 0x006900e0, 0x000000c8 },
- { 0x00600031, 0x20001fbc, 0x008d0000, 0x8640c800 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/src/shaders/render/exa_sf.g4b.gen5 b/src/shaders/render/exa_sf.g4b.gen5
deleted file mode 100644
index a838f47..0000000
--- a/src/shaders/render/exa_sf.g4b.gen5
+++ /dev/null
@@ -1,15 +0,0 @@
- { 0x00400031, 0x20c01fbd, 0x1069002c, 0x02100001 },
- { 0x00400001, 0x206003be, 0x00690060, 0x00000000 },
- { 0x00400040, 0x20e077bd, 0x00690080, 0x006940a0 },
- { 0x00400041, 0x202077be, 0x006900e0, 0x000000c0 },
- { 0x00400040, 0x20e077bd, 0x006900a0, 0x00694060 },
- { 0x00400041, 0x204077be, 0x006900e0, 0x000000c8 },
- { 0x00600031, 0x20001fbc, 0x648d0000, 0x8808c800 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/src/shaders/render/exa_wm.g4i b/src/shaders/render/exa_wm.g4i
deleted file mode 100644
index e186d3a..0000000
--- a/src/shaders/render/exa_wm.g4i
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright © 2006-2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Wang Zhenyu <zhenyu.z.wang@intel.com>
- * Keith Packard <keithp@keithp.com>
- */
-
-/*
- * Input parameters
- */
-
-/* Destination X/Y */
-define(`dst_x_uw', `g1.8<2,4,0>UW')
-define(`dst_y_uw', `g1.10<2,4,0>UW')
-define(`screen_x0', `g1.0<0,1,0>F')
-define(`screen_y0', `g1.4<0,1,0>F')
-
-/* UV flag */
-define(`interleaved_uv', `g2.0<0,1,0>UW')
-
-/* Source transformation parameters */
-define(`src_du_dx', `g6.0<0,1,0>F')
-define(`src_du_dy', `g6.4<0,1,0>F')
-define(`src_uo', `g6.12<0,1,0>F')
-define(`src_dv_dx', `g6.16<0,1,0>F')
-define(`src_dv_dy', `g6.20<0,1,0>F')
-define(`src_vo', `g6.28<0,1,0>F')
-define(`src_dw_dx', `g7.0<0,1,0>F')
-define(`src_dw_dy', `g7.4<0,1,0>F')
-define(`src_wo', `g7.12<0,1,0>F')
-
-define(`mask_du_dx', `g8.0<0,1,0>F')
-define(`mask_du_dy', `g8.4<0,1,0>F')
-define(`mask_uo', `g8.12<0,1,0>F')
-define(`mask_dv_dx', `g8.16<0,1,0>F')
-define(`mask_dv_dy', `g8.20<0,1,0>F')
-define(`mask_vo', `g8.28<0,1,0>F')
-define(`mask_dw_dx', `g9.0<0,1,0>F')
-define(`mask_dw_dy', `g9.4<0,1,0>F')
-define(`mask_wo', `g9.12<0,1,0>F')
-
-/* Attribute for snb+ */
-define(`a0_a_x',`g10.0<0,1,0>F')
-define(`a0_a_y',`g10.16<0,1,0>F')
-
-/*
- * Local variables. Pairs must be aligned on even reg boundry
- */
-
-/* this holds the X dest coordinates */
-define(`dst_x', `g42')
-define(`dst_x_0', `dst_x')
-define(`dst_x_1', `g43')
-
-/* this holds the Y dest coordinates */
-define(`dst_y', `g44')
-define(`dst_y_0', `dst_y')
-define(`dst_y_1', `g45')
-
-/* When computing x * dn/dx, use this */
-define(`temp_x', `g30')
-define(`temp_x_0', `temp_x')
-define(`temp_x_1', `g31')
-
-/* When computing y * dn/dy, use this */
-define(`temp_y', `g28')
-define(`temp_y_0', temp_y)
-define(`temp_y_1', `g29')
-
-/* when loading x/y, use these to hold them in UW format */
-define(`temp_x_uw', temp_x)
-define(`temp_y_uw', temp_y)
-
-/* compute source and mask u/v to this pair to send to sampler */
-define(`src_msg', `m1')
-define(`src_msg_ind',`1')
-define(`src_u', `m2')
-define(`src_v', `m4')
-define(`src_w', `g12')
-define(`src_w_0', `src_w')
-define(`src_w_1', `g13')
-
-define(`mask_msg', `m7')
-define(`mask_msg_ind',`7')
-define(`mask_u', `m8')
-define(`mask_v', `m10')
-define(`mask_w', `src_w')
-define(`mask_w_0', `src_w_0')
-define(`mask_w_1', `src_w_1')
-
-/* sample src to these registers */
-define(`src_sample_base', `g14')
-
-define(`src_sample_r', `g14')
-define(`src_sample_r_01', `g14')
-define(`src_sample_r_23', `g15')
-
-define(`src_sample_g', `g16')
-define(`src_sample_g_01', `g16')
-define(`src_sample_g_23', `g17')
-
-define(`src_sample_b', `g18')
-define(`src_sample_b_01', `g18')
-define(`src_sample_b_23', `g19')
-
-define(`src_sample_a', `g20')
-define(`src_sample_a_01', `g20')
-define(`src_sample_a_23', `g21')
-
-/* sample mask to these registers */
-define(`mask_sample_base', `g22')
-
-define(`mask_sample_r', `g22')
-define(`mask_sample_r_01', `g22')
-define(`mask_sample_r_23', `g23')
-
-define(`mask_sample_g', `g24')
-define(`mask_sample_g_01', `g24')
-define(`mask_sample_g_23', `g25')
-
-define(`mask_sample_b', `g26')
-define(`mask_sample_b_01', `g26')
-define(`mask_sample_b_23', `g27')
-
-define(`mask_sample_a', `g28')
-define(`mask_sample_a_01', `g28')
-define(`mask_sample_a_23', `g29')
-
-/* Color Balance to these registers */
-define(`color_balance_base', `g32')
-
-define(`color_balance_r', `g32')
-define(`color_balance_r_01', `g32')
-define(`color_balance_r_23', `g33')
-
-define(`color_balance_g', `g34')
-define(`color_balance_g_01', `g34')
-define(`color_balance_g_23', `g35')
-
-define(`color_balance_b', `g36')
-define(`color_balance_b_01', `g37')
-define(`color_balance_b_23', `g37')
-
-define(`color_balance_a', `g38')
-define(`color_balance_a_01', `g39')
-define(`color_balance_a_23', `g39')
-
-/* data port SIMD16 send registers */
-
-define(`data_port_msg_0', `m0')
-define(`data_port_msg_0_ind', `0')
-define(`data_port_msg_1', `m1')
-define(`data_port_r_01', `m2')
-define(`data_port_g_01', `m3')
-define(`data_port_b_01', `m4')
-define(`data_port_a_01', `m5')
-
-define(`data_port_r_23', `m6')
-define(`data_port_g_23', `m7')
-define(`data_port_b_23', `m8')
-define(`data_port_a_23', `m9')
-
diff --git a/src/shaders/render/exa_wm_affine.g4i b/src/shaders/render/exa_wm_affine.g4i
deleted file mode 100644
index e72656b..0000000
--- a/src/shaders/render/exa_wm_affine.g4i
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright © 2006 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Wang Zhenyu <zhenyu.z.wang@intel.com>
- * Keith Packard <keithp@keithp.com>
- */
-
-/*
- * Fragment to compute src u/v values under an affine transform
- */
-
-/********** Compute u *************/
-
-mul (16) temp_x<1>F dst_x<8,8,1>F du_dx { compr align1 };
-mul (16) temp_y<1>F dst_y<8,8,1>F du_dy { compr align1 };
-add (16) temp_x<1>F temp_x<8,8,1>F temp_y<8,8,1>F { compr align1 };
-add (16) u<1>F temp_x<8,8,1>F uo { compr align1 };
-
-/********** Compute v *************/
-
-mul (16) temp_x<1>F dst_x<8,8,1>F dv_dx { compr align1 };
-mul (16) temp_y<1>F dst_y<8,8,1>F dv_dy { compr align1 };
-add (16) temp_x<1>F temp_x<8,8,1>F temp_y<8,8,1>F { compr align1 };
-add (16) v<1>F temp_x<8,8,1>F vo { compr align1 };
diff --git a/src/shaders/render/exa_wm_src_affine.g4a b/src/shaders/render/exa_wm_src_affine.g4a
deleted file mode 100644
index 3194b5a..0000000
--- a/src/shaders/render/exa_wm_src_affine.g4a
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright © 2006 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Wang Zhenyu <zhenyu.z.wang@intel.com>
- * Keith Packard <keithp@keithp.com>
- */
-
-/*
- * Fragment to compute src u/v values under an affine transform
- */
-
-include(`exa_wm.g4i')
-
-define(`du_dx', `src_du_dx')
-define(`du_dy', `src_du_dy')
-define(`uo', `src_uo')
-
-define(`dv_dx', `src_dv_dx')
-define(`dv_dy', `src_dv_dy')
-define(`vo', `src_vo')
-
-define(`u', `src_u')
-define(`v', `src_v')
-
-include(`exa_wm_affine.g4i')
diff --git a/src/shaders/render/exa_wm_src_affine.g4b b/src/shaders/render/exa_wm_src_affine.g4b
deleted file mode 100644
index 7507b72..0000000
--- a/src/shaders/render/exa_wm_src_affine.g4b
+++ /dev/null
@@ -1,8 +0,0 @@
- { 0x00802041, 0x23c077bd, 0x008d0540, 0x000000c0 },
- { 0x00802041, 0x238077bd, 0x008d0580, 0x000000c4 },
- { 0x00802040, 0x23c077bd, 0x008d03c0, 0x008d0380 },
- { 0x00802040, 0x204077be, 0x008d03c0, 0x000000cc },
- { 0x00802041, 0x23c077bd, 0x008d0540, 0x000000d0 },
- { 0x00802041, 0x238077bd, 0x008d0580, 0x000000d4 },
- { 0x00802040, 0x23c077bd, 0x008d03c0, 0x008d0380 },
- { 0x00802040, 0x208077be, 0x008d03c0, 0x000000dc },
diff --git a/src/shaders/render/exa_wm_src_affine.g4b.gen5 b/src/shaders/render/exa_wm_src_affine.g4b.gen5
deleted file mode 100644
index 7507b72..0000000
--- a/src/shaders/render/exa_wm_src_affine.g4b.gen5
+++ /dev/null
@@ -1,8 +0,0 @@
- { 0x00802041, 0x23c077bd, 0x008d0540, 0x000000c0 },
- { 0x00802041, 0x238077bd, 0x008d0580, 0x000000c4 },
- { 0x00802040, 0x23c077bd, 0x008d03c0, 0x008d0380 },
- { 0x00802040, 0x204077be, 0x008d03c0, 0x000000cc },
- { 0x00802041, 0x23c077bd, 0x008d0540, 0x000000d0 },
- { 0x00802041, 0x238077bd, 0x008d0580, 0x000000d4 },
- { 0x00802040, 0x23c077bd, 0x008d03c0, 0x008d0380 },
- { 0x00802040, 0x208077be, 0x008d03c0, 0x000000dc },
diff --git a/src/shaders/render/exa_wm_src_affine.g6a b/src/shaders/render/exa_wm_src_affine.g6a
deleted file mode 100644
index 04358cb..0000000
--- a/src/shaders/render/exa_wm_src_affine.g6a
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- */
-
-/*
- * Fragment to compute src u/v values
- */
-include(`exa_wm.g4i')
-
-define(`ul', `src_u')
-define(`uh', `m3')
-define(`vl', `src_v')
-define(`vh', `m5')
-
-define(`bl', `g2.0<8,8,1>F')
-define(`bh', `g4.0<8,8,1>F')
-
-/* U */
-pln (8) ul<1>F a0_a_x bl { align1 }; /* pixel 0-7 */
-pln (8) uh<1>F a0_a_x bh { align1 }; /* pixel 8-15 */
-
-/* V */
-pln (8) vl<1>F a0_a_y bl { align1 }; /* pixel 0-7 */
-pln (8) vh<1>F a0_a_y bh { align1 }; /* pixel 8-15 */
diff --git a/src/shaders/render/exa_wm_src_affine.g6b b/src/shaders/render/exa_wm_src_affine.g6b
deleted file mode 100644
index 22c1d22..0000000
--- a/src/shaders/render/exa_wm_src_affine.g6b
+++ /dev/null
@@ -1,4 +0,0 @@
- { 0x0060005a, 0x204077be, 0x00000140, 0x008d0040 },
- { 0x0060005a, 0x206077be, 0x00000140, 0x008d0080 },
- { 0x0060005a, 0x208077be, 0x00000150, 0x008d0040 },
- { 0x0060005a, 0x20a077be, 0x00000150, 0x008d0080 },
diff --git a/src/shaders/render/exa_wm_src_affine.g7a b/src/shaders/render/exa_wm_src_affine.g7a
deleted file mode 100644
index 88e5ed5..0000000
--- a/src/shaders/render/exa_wm_src_affine.g7a
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- */
-
-/*
- * Fragment to compute src u/v values
- */
-include(`exa_wm.g4i')
-
-define(`ul', `g66')
-define(`uh', `g67')
-define(`vl', `g68')
-define(`vh', `g69')
-
-define(`bl', `g2.0<8,8,1>F')
-define(`bh', `g4.0<8,8,1>F')
-
-
-/* U */
-pln (8) ul<1>F a0_a_x bl { align1 }; /* pixel 0-7 */
-pln (8) uh<1>F a0_a_x bh { align1 }; /* pixel 8-15 */
-
-/* V */
-pln (8) vl<1>F a0_a_y bl { align1 }; /* pixel 0-7 */
-pln (8) vh<1>F a0_a_y bh { align1 }; /* pixel 8-15 */
diff --git a/src/shaders/render/exa_wm_src_affine.g7b b/src/shaders/render/exa_wm_src_affine.g7b
deleted file mode 100644
index a15b7b6..0000000
--- a/src/shaders/render/exa_wm_src_affine.g7b
+++ /dev/null
@@ -1,4 +0,0 @@
- { 0x0060005a, 0x284077bd, 0x00000140, 0x008d0040 },
- { 0x0060005a, 0x286077bd, 0x00000140, 0x008d0080 },
- { 0x0060005a, 0x288077bd, 0x00000150, 0x008d0040 },
- { 0x0060005a, 0x28a077bd, 0x00000150, 0x008d0080 },
diff --git a/src/shaders/render/exa_wm_src_affine.g8a b/src/shaders/render/exa_wm_src_affine.g8a
deleted file mode 100644
index 7927c3b..0000000
--- a/src/shaders/render/exa_wm_src_affine.g8a
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- */
-
-/*
- * Fragment to compute src u/v values
- */
-include(`exa_wm.g4i')
-
-define(`ul', `g66')
-define(`uh', `g67')
-define(`vl', `g68')
-define(`vh', `g69')
-
-define(`bl', `g2.0<8,8,1>F')
-define(`bh', `g4.0<8,8,1>F')
-
-
-/* U */
-pln (8) ul<1>F a0_a_x bl { align1 }; /* pixel 0-7 */
-pln (8) uh<1>F a0_a_x bh { align1 }; /* pixel 8-15 */
-
-/* V */
-pln (8) vl<1>F a0_a_y bl { align1 }; /* pixel 0-7 */
-pln (8) vh<1>F a0_a_y bh { align1 }; /* pixel 8-15 */
diff --git a/src/shaders/render/exa_wm_src_affine.g8b b/src/shaders/render/exa_wm_src_affine.g8b
deleted file mode 100644
index f5f9eca..0000000
--- a/src/shaders/render/exa_wm_src_affine.g8b
+++ /dev/null
@@ -1,4 +0,0 @@
- { 0x0060005a, 0x28403ae8, 0x3a000140, 0x008d0040 },
- { 0x0060005a, 0x28603ae8, 0x3a000140, 0x008d0080 },
- { 0x0060005a, 0x28803ae8, 0x3a000150, 0x008d0040 },
- { 0x0060005a, 0x28a03ae8, 0x3a000150, 0x008d0080 },
diff --git a/src/shaders/render/exa_wm_src_affine.g9a b/src/shaders/render/exa_wm_src_affine.g9a
deleted file mode 100644
index 832f70c..0000000
--- a/src/shaders/render/exa_wm_src_affine.g9a
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- */
-
-/*
- * Fragment to compute src u/v values
- */
-include(`exa_wm.g4i')
-
-define(`ul', `g66')
-define(`uh', `g67')
-define(`vl', `g68')
-define(`vh', `g69')
-
-define(`bl', `g2.0<8,8,1>F')
-define(`bh', `g4.0<8,8,1>F')
-
-
-/* U */
-pln (8) ul<1>F a0_a_x bl { align1 }; /* pixel 0-7 */
-pln (8) uh<1>F a0_a_x bh { align1 }; /* pixel 8-15 */
-
-/* V */
-pln (8) vl<1>F a0_a_y bl { align1 }; /* pixel 0-7 */
-pln (8) vh<1>F a0_a_y bh { align1 }; /* pixel 8-15 */
diff --git a/src/shaders/render/exa_wm_src_affine.g9b b/src/shaders/render/exa_wm_src_affine.g9b
deleted file mode 100644
index f5f9eca..0000000
--- a/src/shaders/render/exa_wm_src_affine.g9b
+++ /dev/null
@@ -1,4 +0,0 @@
- { 0x0060005a, 0x28403ae8, 0x3a000140, 0x008d0040 },
- { 0x0060005a, 0x28603ae8, 0x3a000140, 0x008d0080 },
- { 0x0060005a, 0x28803ae8, 0x3a000150, 0x008d0040 },
- { 0x0060005a, 0x28a03ae8, 0x3a000150, 0x008d0080 },
diff --git a/src/shaders/render/exa_wm_src_sample_argb.g4a b/src/shaders/render/exa_wm_src_sample_argb.g4a
deleted file mode 100644
index c657655..0000000
--- a/src/shaders/render/exa_wm_src_sample_argb.g4a
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright © 2006 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Wang Zhenyu <zhenyu.z.wang@intel.com>
- * Keith Packard <keithp@keithp.com>
- */
-
-/* Sample the src surface */
-
-include(`exa_wm.g4i')
-
-define(`global_alpha', `r2.0<0,1,0>f')
-
-/* prepare sampler read back gX register, which would be written back to output */
-
-/* use simd16 sampler, param 0 is u, param 1 is v. */
-/* 'payload' loading, assuming tex coord start from g4 */
-
-/* load argb */
-mov (1) g0.8<1>UD 0x00000000UD { align1 mask_disable };
-
-/* src_msg will be copied with g0, as it contains send desc */
-/* emit sampler 'send' cmd */
-send (16) src_msg_ind /* msg reg index */
- src_sample_base<1>UW /* readback */
- g0<8,8,1>UW /* copy to msg start reg*/
- sampler (1,0,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 8 { align1 }; /* required message len 5, readback len 8 */
-
-mul (8) src_sample_a_01<1>f src_sample_a_01<8,8,1>f global_alpha { align1 };
-mul (8) src_sample_a_23<1>f src_sample_a_23<8,8,1>f global_alpha { align1 };
diff --git a/src/shaders/render/exa_wm_src_sample_argb.g4b b/src/shaders/render/exa_wm_src_sample_argb.g4b
deleted file mode 100644
index 42e4a68..0000000
--- a/src/shaders/render/exa_wm_src_sample_argb.g4b
+++ /dev/null
@@ -1,4 +0,0 @@
- { 0x00000201, 0x20080061, 0x00000000, 0x00000000 },
- { 0x01800031, 0x21c01d29, 0x008d0000, 0x02580001 },
- { 0x00600041, 0x228077bd, 0x008d0280, 0x00000040 },
- { 0x00600041, 0x22a077bd, 0x008d02a0, 0x00000040 },
diff --git a/src/shaders/render/exa_wm_src_sample_argb.g4b.gen5 b/src/shaders/render/exa_wm_src_sample_argb.g4b.gen5
deleted file mode 100644
index 2012f89..0000000
--- a/src/shaders/render/exa_wm_src_sample_argb.g4b.gen5
+++ /dev/null
@@ -1,4 +0,0 @@
- { 0x00000201, 0x20080061, 0x00000000, 0x00000000 },
- { 0x01800031, 0x21c01d29, 0x208d0000, 0x0a8a0001 },
- { 0x00600041, 0x228077bd, 0x008d0280, 0x00000040 },
- { 0x00600041, 0x22a077bd, 0x008d02a0, 0x00000040 },
diff --git a/src/shaders/render/exa_wm_src_sample_argb.g6a b/src/shaders/render/exa_wm_src_sample_argb.g6a
deleted file mode 100644
index c30b209..0000000
--- a/src/shaders/render/exa_wm_src_sample_argb.g6a
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright © 2006 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Wang Zhenyu <zhenyu.z.wang@intel.com>
- * Keith Packard <keithp@keithp.com>
- */
-
-/* Sample the src surface */
-
-include(`exa_wm.g4i')
-
-/* subpicture global alpha */
-define(`global_alpha', `r6.0<0,1,0>f')
-
-/* prepare sampler read back gX register, which would be written back to output */
-
-/* use simd16 sampler, param 0 is u, param 1 is v. */
-/* 'payload' loading, assuming tex coord start from g4 */
-
-/* load argb */
-mov (1) g0.8<1>UD 0x00000000UD { align1 mask_disable };
-mov (8) src_msg<1>UD g0<8,8,1>UD { align1 mask_disable };
-
-/* src_msg will be copied with g0, as it contains send desc */
-/* emit sampler 'send' cmd */
-send (16) src_msg_ind /* msg reg index */
- src_sample_base<1>UW /* readback */
- null
- sampler (1,0,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 8 { align1 }; /* required message len 5, readback len 8 */
-
-mul (8) src_sample_a_01<1>f src_sample_a_01<8,8,1>f global_alpha { align1 };
-mul (8) src_sample_a_23<1>f src_sample_a_23<1>f global_alpha { align1 };
-
diff --git a/src/shaders/render/exa_wm_src_sample_argb.g6b b/src/shaders/render/exa_wm_src_sample_argb.g6b
deleted file mode 100644
index 53c6248..0000000
--- a/src/shaders/render/exa_wm_src_sample_argb.g6b
+++ /dev/null
@@ -1,5 +0,0 @@
- { 0x00000201, 0x20080061, 0x00000000, 0x00000000 },
- { 0x00600201, 0x20200022, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x21c01cc9, 0x00000020, 0x0a8a0001 },
- { 0x00600041, 0x228077bd, 0x008d0280, 0x000000c0 },
- { 0x00600041, 0x22a077bd, 0x002002a0, 0x000000c0 },
diff --git a/src/shaders/render/exa_wm_src_sample_argb.g7a b/src/shaders/render/exa_wm_src_sample_argb.g7a
deleted file mode 100644
index 0165f7b..0000000
--- a/src/shaders/render/exa_wm_src_sample_argb.g7a
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright © 2006 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Wang Zhenyu <zhenyu.z.wang@intel.com>
- * Keith Packard <keithp@keithp.com>
- */
-
-/* Sample the src surface */
-
-include(`exa_wm.g4i')
-
-/* Ivybridge uses GRFs in SEND instruction */
-define(`src_msg_gen7', `g65')
-define(`src_msg_ind_gen7',`65')
-
-/* subpicture global alpha */
-define(`global_alpha', `r6.0<0,1,0>f')
-
-/* prepare sampler read back gX register, which would be written back to output */
-
-/* use simd16 sampler, param 0 is u, param 1 is v. */
-/* 'payload' loading, assuming tex coord start from g4 */
-
-/* load argb */
-mov (1) g0.8<1>UD 0x00000000UD { align1 mask_disable };
-mov (8) src_msg_gen7<1>UD g0<8,8,1>UD { align1 mask_disable };
-
-/* src_msg will be copied with g0, as it contains send desc */
-/* emit sampler 'send' cmd */
-send (16) src_msg_ind_gen7 /* msg reg index */
- src_sample_base<1>UW /* readback */
- null
- sampler (1,0,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 8 { align1 }; /* required message len 5, readback len 8 */
-
-mul (8) src_sample_a_01<1>f src_sample_a_01<8,8,1>f global_alpha { align1 mask_disable };
-mul (8) src_sample_a_23<1>f src_sample_a_23<8,8,1>f global_alpha { align1 mask_disable };
-
diff --git a/src/shaders/render/exa_wm_src_sample_argb.g7b b/src/shaders/render/exa_wm_src_sample_argb.g7b
deleted file mode 100644
index 0708bc0..0000000
--- a/src/shaders/render/exa_wm_src_sample_argb.g7b
+++ /dev/null
@@ -1,5 +0,0 @@
- { 0x00000201, 0x20080061, 0x00000000, 0x00000000 },
- { 0x00600201, 0x28200021, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x21c01ca9, 0x00000820, 0x0a8c0001 },
- { 0x00600241, 0x228077bd, 0x008d0280, 0x000000c0 },
- { 0x00600241, 0x22a077bd, 0x008d02a0, 0x000000c0 },
diff --git a/src/shaders/render/exa_wm_src_sample_argb.g8a b/src/shaders/render/exa_wm_src_sample_argb.g8a
deleted file mode 100644
index 3a4e99f..0000000
--- a/src/shaders/render/exa_wm_src_sample_argb.g8a
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Wang Zhenyu <zhenyu.z.wang@intel.com>
- * Keith Packard <keithp@keithp.com>
- */
-
-/* Sample the src surface */
-
-include(`exa_wm.g4i')
-
-/* Ivybridge uses GRFs in SEND instruction */
-define(`src_msg_gen8', `g65')
-define(`src_msg_ind_gen8',`65')
-
-/* subpicture global alpha */
-define(`global_alpha', `r6.0<0,1,0>f')
-
-/* prepare sampler read back gX register, which would be written back to output */
-
-/* use simd16 sampler, param 0 is u, param 1 is v. */
-/* 'payload' loading, assuming tex coord start from g4 */
-
-/* load argb */
-mov (1) g0.8<1>UD 0x00000000UD { align1 mask_disable };
-mov (8) src_msg_gen8<1>UD g0<8,8,1>UD { align1 mask_disable };
-
-/* src_msg will be copied with g0, as it contains send desc */
-/* emit sampler 'send' cmd */
-send (16) src_msg_ind_gen8 /* msg reg index */
- src_sample_base<1>UW /* readback */
- null
- sampler (1,0,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 8 { align1 }; /* required message len 5, readback len 8 */
-
-mul (8) src_sample_a_01<1>f src_sample_a_01<8,8,1>f global_alpha { align1 mask_disable };
-mul (8) src_sample_a_23<1>f src_sample_a_23<8,8,1>f global_alpha { align1 mask_disable };
-
diff --git a/src/shaders/render/exa_wm_src_sample_argb.g8b b/src/shaders/render/exa_wm_src_sample_argb.g8b
deleted file mode 100644
index 2b04637..0000000
--- a/src/shaders/render/exa_wm_src_sample_argb.g8b
+++ /dev/null
@@ -1,5 +0,0 @@
- { 0x00000001, 0x2008060c, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2820020c, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x21c00a48, 0x0e000820, 0x0a8c0001 },
- { 0x00600041, 0x22803aec, 0x3a8d0280, 0x000000c0 },
- { 0x00600041, 0x22a03aec, 0x3a8d02a0, 0x000000c0 },
diff --git a/src/shaders/render/exa_wm_src_sample_argb.g9a b/src/shaders/render/exa_wm_src_sample_argb.g9a
deleted file mode 100644
index ca57ea6..0000000
--- a/src/shaders/render/exa_wm_src_sample_argb.g9a
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Wang Zhenyu <zhenyu.z.wang@intel.com>
- * Keith Packard <keithp@keithp.com>
- * Zhao Yakui <yakui.zhao@intel.com>
- */
-
-/* Sample the src surface */
-
-include(`exa_wm.g4i')
-
-/* Ivybridge uses GRFs in SEND instruction */
-define(`src_msg_gen8', `g65')
-define(`src_msg_ind_gen8',`65')
-
-/* subpicture global alpha */
-define(`global_alpha', `r6.0<0,1,0>f')
-
-/* prepare sampler read back gX register, which would be written back to output */
-
-/* use simd16 sampler, param 0 is u, param 1 is v. */
-/* 'payload' loading, assuming tex coord start from g4 */
-
-/* load argb */
-mov (1) g0.8<1>UD 0x00000000UD { align1 mask_disable };
-mov (8) src_msg_gen8<1>UD g0<8,8,1>UD { align1 mask_disable };
-
-/* src_msg will be copied with g0, as it contains send desc */
-/* emit sampler 'send' cmd */
-send (16) src_msg_ind_gen8 /* msg reg index */
- src_sample_base<1>UW /* readback */
- null
- sampler (1,0,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 8 { align1 }; /* required message len 5, readback len 8 */
-
-mul (8) src_sample_a_01<1>f src_sample_a_01<8,8,1>f global_alpha { align1 mask_disable };
-mul (8) src_sample_a_23<1>f src_sample_a_23<8,8,1>f global_alpha { align1 mask_disable };
diff --git a/src/shaders/render/exa_wm_src_sample_argb.g9b b/src/shaders/render/exa_wm_src_sample_argb.g9b
deleted file mode 100644
index 5cd181e..0000000
--- a/src/shaders/render/exa_wm_src_sample_argb.g9b
+++ /dev/null
@@ -1,5 +0,0 @@
- { 0x00000001, 0x2008060c, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2820020c, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x21c00a48, 0x06000820, 0x0a8c0001 },
- { 0x00600041, 0x22803aec, 0x3a8d0280, 0x000000c0 },
- { 0x00600041, 0x22a03aec, 0x3a8d02a0, 0x000000c0 },
diff --git a/src/shaders/render/exa_wm_src_sample_planar.g4a b/src/shaders/render/exa_wm_src_sample_planar.g4a
deleted file mode 100644
index 8cbb289..0000000
--- a/src/shaders/render/exa_wm_src_sample_planar.g4a
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright © 2006 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Wang Zhenyu <zhenyu.z.wang@intel.com>
- * Keith Packard <keithp@keithp.com>
- */
-
-/* Sample the src surface in planar format */
-
-include(`exa_wm.g4i')
-
-/* prepare sampler read back gX register, which would be written back to output */
-
-/* use simd16 sampler, param 0 is u, param 1 is v. */
-/* 'payload' loading, assuming tex coord start from g4 */
-
-and.nz (1) null interleaved_uv 0x01UW {align1};
-(f0) jmpi INTERLEAVED_UV;
-
-/* load r */
-mov (1) g0.8<1>UD 0x0000e000UD { align1 mask_disable };
-
-/* src_msg will be copied with g0, as it contains send desc */
-/* emit sampler 'send' cmd */
-
-/* sample U (Cr) */
-send (16) src_msg_ind /* msg reg index */
- src_sample_g<1>UW /* readback */
- g0<8,8,1>UW /* copy to msg start reg*/
- sampler (3,2,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 2 { align1 }; /* required message len 5, readback len 8 */
-
-/* sample V (Cb) */
-send (16) src_msg_ind /* msg reg index */
- src_sample_b<1>UW /* readback */
- g0<8,8,1>UW /* copy to msg start reg*/
- sampler (5,4,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 2 { align1 }; /* required message len 5, readback len 8 */
-
-jmpi SAMPLE_Y;
-
-INTERLEAVED_UV:
-/* load r */
-mov (1) g0.8<1>UD 0x0000c000UD { align1 mask_disable };
-
-/* sample UV (CrCb) */
-send (16) src_msg_ind /* msg reg index */
- src_sample_g<1>UW /* readback */
- g0<8,8,1>UW /* copy to msg start reg*/
- sampler (3,2,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 4 { align1 }; /* required message len 5, readback len 8 */
-
-/* load r */
-mov (1) g0.8<1>UD 0x0000e000UD { align1 mask_disable };
-
-SAMPLE_Y:
-/* sample Y */
-send (16) src_msg_ind /* msg reg index */
- src_sample_r<1>UW /* readback */
- g0<8,8,1>UW /* copy to msg start reg*/
- sampler (1,0,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 2 { align1 }; /* required message len 5, readback len 8 */
-
diff --git a/src/shaders/render/exa_wm_src_sample_planar.g4b b/src/shaders/render/exa_wm_src_sample_planar.g4b
deleted file mode 100644
index 94f2f3b..0000000
--- a/src/shaders/render/exa_wm_src_sample_planar.g4b
+++ /dev/null
@@ -1,10 +0,0 @@
- { 0x02000005, 0x20002d3c, 0x00000040, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 },
- { 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
- { 0x01800031, 0x22001d29, 0x008d0000, 0x02520203 },
- { 0x01800031, 0x22401d29, 0x008d0000, 0x02520405 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000003 },
- { 0x00000201, 0x20080061, 0x00000000, 0x0000c000 },
- { 0x01800031, 0x22001d29, 0x008d0000, 0x02540203 },
- { 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
- { 0x01800031, 0x21c01d29, 0x008d0000, 0x02520001 },
diff --git a/src/shaders/render/exa_wm_src_sample_planar.g4b.gen5 b/src/shaders/render/exa_wm_src_sample_planar.g4b.gen5
deleted file mode 100644
index c645723..0000000
--- a/src/shaders/render/exa_wm_src_sample_planar.g4b.gen5
+++ /dev/null
@@ -1,10 +0,0 @@
- { 0x02000005, 0x20002d3c, 0x00000040, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
- { 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
- { 0x01800031, 0x22001d29, 0x208d0000, 0x0a2a0203 },
- { 0x01800031, 0x22401d29, 0x208d0000, 0x0a2a0405 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000201, 0x20080061, 0x00000000, 0x0000c000 },
- { 0x01800031, 0x22001d29, 0x208d0000, 0x0a4a0203 },
- { 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
- { 0x01800031, 0x21c01d29, 0x208d0000, 0x0a2a0001 },
diff --git a/src/shaders/render/exa_wm_src_sample_planar.g6a b/src/shaders/render/exa_wm_src_sample_planar.g6a
deleted file mode 100644
index 9f907fc..0000000
--- a/src/shaders/render/exa_wm_src_sample_planar.g6a
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright © 2006 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Wang Zhenyu <zhenyu.z.wang@intel.com>
- * Keith Packard <keithp@keithp.com>
- */
-
-/* Sample the src surface in planar format */
-
-include(`exa_wm.g4i')
-/* UV flag */
-define(`nv12', `g6.0<0,1,0>UW')
-
-/* prepare sampler read back gX register, which would be written back to output */
-
-/* use simd16 sampler, param 0 is u, param 1 is v. */
-/* 'payload' loading, assuming tex coord start from g4 */
-cmp.g.f0.0 (1) null nv12 0x0UW {align1};
-(f0.0) jmpi INTERLEAVED_UV;
-
-/* load r */
-mov (1) g0.8<1>UD 0x0000e000UD { align1 mask_disable };
-mov (8) src_msg<1>UD g0<8,8,1>UD { align1 mask_disable };
-
-/* src_msg will be copied with g0, as it contains send desc */
-/* emit sampler 'send' cmd */
-
-/* sample U (Cr) */
-send (16) src_msg_ind /* msg reg index */
- src_sample_g<1>UW /* readback */
- null
- sampler (3,2,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 2 { align1 }; /* required message len 5, readback len 8 */
-
-/* sample V (Cb) */
-mov (1) g0.8<1>UD 0x0000e000UD { align1 mask_disable };
-mov (8) src_msg<1>UD g0<8,8,1>UD { align1 mask_disable };
-
-send (16) src_msg_ind /* msg reg index */
- src_sample_b<1>UW /* readback */
- null
- sampler (5,4,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 2 { align1 }; /* required message len 5, readback len 8 */
-
-jmpi SAMPLE_Y;
-
-INTERLEAVED_UV:
-mov (1) g0.8<1>UD 0x0000c000UD { align1 mask_disable };
-mov (8) src_msg<1>UD g0<8,8,1>UD { align1 mask_disable };
-
-/* sample UV (CrCb) */
-send (16) src_msg_ind /* msg reg index */
- src_sample_g<1>UW /* readback */
- null
- sampler (3,2,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 4 { align1 }; /* required message len 5, readback len 8 */
-
-SAMPLE_Y:
-mov (1) g0.8<1>UD 0x0000e000UD { align1 mask_disable };
-mov (8) src_msg<1>UD g0<8,8,1>UD { align1 mask_disable };
-
-/* sample Y */
-send (16) src_msg_ind /* msg reg index */
- src_sample_r<1>UW /* readback */
- null
- sampler (1,0,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 2 { align1 }; /* required message len 5, readback len 8 */
-
diff --git a/src/shaders/render/exa_wm_src_sample_planar.g6b b/src/shaders/render/exa_wm_src_sample_planar.g6b
deleted file mode 100644
index e9368b6..0000000
--- a/src/shaders/render/exa_wm_src_sample_planar.g6b
+++ /dev/null
@@ -1,15 +0,0 @@
- { 0x03000010, 0x20002d3c, 0x000000c0, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
- { 0x00600201, 0x20200022, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x22001cc9, 0x00000020, 0x0a2a0203 },
- { 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
- { 0x00600201, 0x20200022, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x22401cc9, 0x00000020, 0x0a2a0405 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000201, 0x20080061, 0x00000000, 0x0000c000 },
- { 0x00600201, 0x20200022, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x22001cc9, 0x00000020, 0x0a4a0203 },
- { 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
- { 0x00600201, 0x20200022, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x21c01cc9, 0x00000020, 0x0a2a0001 },
diff --git a/src/shaders/render/exa_wm_src_sample_planar.g7a b/src/shaders/render/exa_wm_src_sample_planar.g7a
deleted file mode 100644
index 8a47fb5..0000000
--- a/src/shaders/render/exa_wm_src_sample_planar.g7a
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright © 2006 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Wang Zhenyu <zhenyu.z.wang@intel.com>
- * Keith Packard <keithp@keithp.com>
- */
-
-/* Sample the src surface in planar format */
-
-include(`exa_wm.g4i')
-
-/* Ivybridge uses GRFs in SEND instruction */
-define(`src_msg_gen7', `g65')
-define(`src_msg_ind_gen7',`65')
-/* UV flag */
-define(`uv_flag', `g6.0<0,1,0>UW')
-
-/* prepare sampler read back gX register, which would be written back to output */
-
-/* use simd16 sampler, param 0 is u, param 1 is v. */
-/* 'payload' loading, assuming tex coord start from g4 */
-cmp.e.f0.0 (1) null uv_flag 0x1UW {align1};
-(f0.0) jmpi INTERLEAVED_UV;
-
-cmp.e.f0.0 (1) null uv_flag 0x2UW {align1};
-(f0.0) jmpi CONSTANT_UV;
-
-/* load r */
-mov (1) g0.8<1>UD 0x0000e000UD { align1 mask_disable };
-mov (8) src_msg_gen7<1>UD g0<8,8,1>UD { align1 mask_disable };
-
-/* emit sampler 'send' cmd */
-
-/* sample U (Cr) */
-send (16) src_msg_ind_gen7 /* msg reg index */
- src_sample_g<1>UW /* readback */
- null
- sampler (3,2,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 2 { align1 }; /* required message len 5, readback len 8 */
-
-/* sample V (Cb) */
-mov (1) g0.8<1>UD 0x0000e000UD { align1 mask_disable };
-mov (8) src_msg_gen7<1>UD g0<8,8,1>UD { align1 mask_disable };
-
-send (16) src_msg_ind_gen7 /* msg reg index */
- src_sample_b<1>UW /* readback */
- null
- sampler (5,4,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 2 { align1 }; /* required message len 5, readback len 8 */
-
-jmpi SAMPLE_Y;
-
-CONSTANT_UV:
-mov (16) src_sample_g<1>f 0.5f { compr align1 mask_disable };
-mov (16) src_sample_b<1>f 0.5f { compr align1 mask_disable };
-
-jmpi SAMPLE_Y;
-
-INTERLEAVED_UV:
-mov (1) g0.8<1>UD 0x0000c000UD { align1 mask_disable };
-mov (8) src_msg_gen7<1>UD g0<8,8,1>UD { align1 mask_disable };
-
-/* sample UV (CrCb) */
-send (16) src_msg_ind_gen7 /* msg reg index */
- src_sample_g<1>UW /* readback */
- null
- sampler (3,2,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 4 { align1 }; /* required message len 5, readback len 8 */
-
-
-SAMPLE_Y:
-mov (1) g0.8<1>UD 0x0000e000UD { align1 mask_disable };
-mov (8) src_msg_gen7<1>UD g0<8,8,1>UD { align1 mask_disable };
-
-/* sample Y */
-send (16) src_msg_ind_gen7 /* msg reg index */
- src_sample_r<1>UW /* readback */
- null
- sampler (1,0,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 2 { align1 }; /* required message len 5, readback len 8 */
-
diff --git a/src/shaders/render/exa_wm_src_sample_planar.g7b b/src/shaders/render/exa_wm_src_sample_planar.g7b
deleted file mode 100644
index 598bd66..0000000
--- a/src/shaders/render/exa_wm_src_sample_planar.g7b
+++ /dev/null
@@ -1,20 +0,0 @@
- { 0x01000010, 0x20002d3c, 0x000000c0, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
- { 0x01000010, 0x20002d3c, 0x000000c0, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
- { 0x00600201, 0x28200021, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x22001ca9, 0x00000820, 0x0a2c0203 },
- { 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
- { 0x00600201, 0x28200021, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x22401ca9, 0x00000820, 0x0a2c0405 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x00800201, 0x220003fd, 0x00000000, 0x3f000000 },
- { 0x00800201, 0x224003fd, 0x00000000, 0x3f000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000201, 0x20080061, 0x00000000, 0x0000c000 },
- { 0x00600201, 0x28200021, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x22001ca9, 0x00000820, 0x0a4c0203 },
- { 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
- { 0x00600201, 0x28200021, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x21c01ca9, 0x00000820, 0x0a2c0001 },
diff --git a/src/shaders/render/exa_wm_src_sample_planar.g7b.haswell b/src/shaders/render/exa_wm_src_sample_planar.g7b.haswell
deleted file mode 100644
index dc388c2..0000000
--- a/src/shaders/render/exa_wm_src_sample_planar.g7b.haswell
+++ /dev/null
@@ -1,20 +0,0 @@
- { 0x01000010, 0x20002d3c, 0x000000c0, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000c0 },
- { 0x01000010, 0x20002d3c, 0x000000c0, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
- { 0x00600201, 0x28200021, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x22001ca9, 0x00000820, 0x0a2c0203 },
- { 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
- { 0x00600201, 0x28200021, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x22401ca9, 0x00000820, 0x0a2c0405 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000060 },
- { 0x00800201, 0x220003fd, 0x00000000, 0x3f000000 },
- { 0x00800201, 0x224003fd, 0x00000000, 0x3f000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x00000201, 0x20080061, 0x00000000, 0x0000c000 },
- { 0x00600201, 0x28200021, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x22001ca9, 0x00000820, 0x0a4c0203 },
- { 0x00000201, 0x20080061, 0x00000000, 0x0000e000 },
- { 0x00600201, 0x28200021, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x21c01ca9, 0x00000820, 0x0a2c0001 },
diff --git a/src/shaders/render/exa_wm_src_sample_planar.g8a b/src/shaders/render/exa_wm_src_sample_planar.g8a
deleted file mode 100644
index 7684491..0000000
--- a/src/shaders/render/exa_wm_src_sample_planar.g8a
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Wang Zhenyu <zhenyu.z.wang@intel.com>
- * Keith Packard <keithp@keithp.com>
- * Zhao Yakui <yakui.zhao@intel.com>
- */
-
-/* Sample the src surface in planar format */
-
-include(`exa_wm.g4i')
-
-/* Ivybridge uses GRFs in SEND instruction */
-define(`src_msg_gen8', `g65')
-define(`src_msg_ind_gen8',`65')
-/* UV flag */
-define(`uv_flag', `g6.0<0,1,0>UW')
-
-/* prepare sampler read back gX register, which would be written back to output */
-
-/* use simd16 sampler, param 0 is u, param 1 is v. */
-/* 'payload' loading, assuming tex coord start from g4 */
-cmp.e.f0.0 (1) null uv_flag 0x1UW {align1};
-(f0.0) jmpi INTERLEAVED_UV;
-
-cmp.e.f0.0 (1) null uv_flag 0x2UW {align1};
-(f0.0) jmpi CONSTANT_UV;
-
-/* load r */
-mov (1) g0.8<1>UD 0x0000e000UD { align1 mask_disable };
-mov (8) src_msg_gen8<1>UD g0<8,8,1>UD { align1 mask_disable };
-
-/* emit sampler 'send' cmd */
-
-/* sample U (Cr) */
-send (16) src_msg_ind_gen8 /* msg reg index */
- src_sample_g<1>UW /* readback */
- null
- sampler (3,2,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 2 { align1 }; /* required message len 5, readback len 8 */
-
-/* sample V (Cb) */
-mov (1) g0.8<1>UD 0x0000e000UD { align1 mask_disable };
-mov (8) src_msg_gen8<1>UD g0<8,8,1>UD { align1 mask_disable };
-
-send (16) src_msg_ind_gen8 /* msg reg index */
- src_sample_b<1>UW /* readback */
- null
- sampler (5,4,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 2 { align1 }; /* required message len 5, readback len 8 */
-
-jmpi SAMPLE_Y;
-
-CONSTANT_UV:
-mov (16) src_sample_g<1>f 0.5f { compr align1 mask_disable };
-mov (16) src_sample_b<1>f 0.5f { compr align1 mask_disable };
-
-jmpi SAMPLE_Y;
-
-INTERLEAVED_UV:
-mov (1) g0.8<1>UD 0x0000c000UD { align1 mask_disable };
-mov (8) src_msg_gen8<1>UD g0<8,8,1>UD { align1 mask_disable };
-
-/* sample UV (CrCb) */
-send (16) src_msg_ind_gen8 /* msg reg index */
- src_sample_g<1>UW /* readback */
- null
- sampler (3,2,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 4 { align1 }; /* required message len 5, readback len 8 */
-
-
-SAMPLE_Y:
-mov (1) g0.8<1>UD 0x0000e000UD { align1 mask_disable };
-mov (8) src_msg_gen8<1>UD g0<8,8,1>UD { align1 mask_disable };
-
-/* sample Y */
-send (16) src_msg_ind_gen8 /* msg reg index */
- src_sample_r<1>UW /* readback */
- null
- sampler (1,0,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 2 { align1 }; /* required message len 5, readback len 8 */
-
diff --git a/src/shaders/render/exa_wm_src_sample_planar.g8b b/src/shaders/render/exa_wm_src_sample_planar.g8b
deleted file mode 100644
index f29cfe4..0000000
--- a/src/shaders/render/exa_wm_src_sample_planar.g8b
+++ /dev/null
@@ -1,20 +0,0 @@
- { 0x01000010, 0x200012e0, 0x160000c0, 0x00010001 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000c0 },
- { 0x01000010, 0x200012e0, 0x160000c0, 0x00020002 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000070 },
- { 0x00000001, 0x2008060c, 0x00000000, 0x0000e000 },
- { 0x00600001, 0x2820020c, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x22000a48, 0x0e000820, 0x0a2c0203 },
- { 0x00000001, 0x2008060c, 0x00000000, 0x0000e000 },
- { 0x00600001, 0x2820020c, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x22400a48, 0x0e000820, 0x0a2c0405 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000060 },
- { 0x00800001, 0x22003eec, 0x38000000, 0x3f000000 },
- { 0x00800001, 0x22403eec, 0x38000000, 0x3f000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x00000001, 0x2008060c, 0x00000000, 0x0000c000 },
- { 0x00600001, 0x2820020c, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x22000a48, 0x0e000820, 0x0a4c0203 },
- { 0x00000001, 0x2008060c, 0x00000000, 0x0000e000 },
- { 0x00600001, 0x2820020c, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x21c00a48, 0x0e000820, 0x0a2c0001 },
diff --git a/src/shaders/render/exa_wm_src_sample_planar.g9a b/src/shaders/render/exa_wm_src_sample_planar.g9a
deleted file mode 100644
index f5369ca..0000000
--- a/src/shaders/render/exa_wm_src_sample_planar.g9a
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Wang Zhenyu <zhenyu.z.wang@intel.com>
- * Keith Packard <keithp@keithp.com>
- * Zhao Yakui <yakui.zhao@intel.com>
- */
-
-/* Sample the src surface in planar format */
-
-include(`exa_wm.g4i')
-
-/* Ivybridge uses GRFs in SEND instruction */
-define(`src_msg_gen8', `g65')
-define(`src_msg_ind_gen8',`65')
-/* UV flag */
-define(`uv_flag', `g6.0<0,1,0>UW')
-
-/* prepare sampler read back gX register, which would be written back to output */
-
-/* use simd16 sampler, param 0 is u, param 1 is v. */
-/* 'payload' loading, assuming tex coord start from g4 */
-cmp.e.f0.0 (1) null uv_flag 0x1UW {align1};
-(f0.0) jmpi INTERLEAVED_UV;
-
-cmp.e.f0.0 (1) null uv_flag 0x2UW {align1};
-(f0.0) jmpi CONSTANT_UV;
-
-/* load r */
-mov (1) g0.8<1>UD 0x0000e000UD { align1 mask_disable };
-mov (8) src_msg_gen8<1>UD g0<8,8,1>UD { align1 mask_disable };
-
-/* emit sampler 'send' cmd */
-
-/* sample U (Cr) */
-send (16) src_msg_ind_gen8 /* msg reg index */
- src_sample_g<1>UW /* readback */
- null
- sampler (3,2,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 2 { align1 }; /* required message len 5, readback len 8 */
-
-/* sample V (Cb) */
-mov (1) g0.8<1>UD 0x0000e000UD { align1 mask_disable };
-mov (8) src_msg_gen8<1>UD g0<8,8,1>UD { align1 mask_disable };
-
-send (16) src_msg_ind_gen8 /* msg reg index */
- src_sample_b<1>UW /* readback */
- null
- sampler (5,4,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 2 { align1 }; /* required message len 5, readback len 8 */
-
-jmpi SAMPLE_Y;
-
-CONSTANT_UV:
-mov (16) src_sample_g<1>f 0.5f { compr align1 mask_disable };
-mov (16) src_sample_b<1>f 0.5f { compr align1 mask_disable };
-
-jmpi SAMPLE_Y;
-
-INTERLEAVED_UV:
-mov (1) g0.8<1>UD 0x0000c000UD { align1 mask_disable };
-mov (8) src_msg_gen8<1>UD g0<8,8,1>UD { align1 mask_disable };
-
-/* sample UV (CrCb) */
-send (16) src_msg_ind_gen8 /* msg reg index */
- src_sample_g<1>UW /* readback */
- null
- sampler (3,2,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 4 { align1 }; /* required message len 5, readback len 8 */
-
-
-SAMPLE_Y:
-mov (1) g0.8<1>UD 0x0000e000UD { align1 mask_disable };
-mov (8) src_msg_gen8<1>UD g0<8,8,1>UD { align1 mask_disable };
-
-/* sample Y */
-send (16) src_msg_ind_gen8 /* msg reg index */
- src_sample_r<1>UW /* readback */
- null
- sampler (1,0,F) /* sampler message description, (binding_table,sampler_index,datatype)
- /* here(src->dst) we should use src_sampler and src_surface */
- mlen 5 rlen 2 { align1 }; /* required message len 5, readback len 8 */
diff --git a/src/shaders/render/exa_wm_src_sample_planar.g9b b/src/shaders/render/exa_wm_src_sample_planar.g9b
deleted file mode 100644
index 45e28b0..0000000
--- a/src/shaders/render/exa_wm_src_sample_planar.g9b
+++ /dev/null
@@ -1,20 +0,0 @@
- { 0x01000010, 0x200012e0, 0x160000c0, 0x00010001 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000c0 },
- { 0x01000010, 0x200012e0, 0x160000c0, 0x00020002 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000070 },
- { 0x00000001, 0x2008060c, 0x00000000, 0x0000e000 },
- { 0x00600001, 0x2820020c, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x22000a48, 0x06000820, 0x0a2c0203 },
- { 0x00000001, 0x2008060c, 0x00000000, 0x0000e000 },
- { 0x00600001, 0x2820020c, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x22400a48, 0x06000820, 0x0a2c0405 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000060 },
- { 0x00800001, 0x22003eec, 0x38000000, 0x3f000000 },
- { 0x00800001, 0x22403eec, 0x38000000, 0x3f000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x00000001, 0x2008060c, 0x00000000, 0x0000c000 },
- { 0x00600001, 0x2820020c, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x22000a48, 0x06000820, 0x0a4c0203 },
- { 0x00000001, 0x2008060c, 0x00000000, 0x0000e000 },
- { 0x00600001, 0x2820020c, 0x008d0000, 0x00000000 },
- { 0x02800031, 0x21c00a48, 0x06000820, 0x0a2c0001 },
diff --git a/src/shaders/render/exa_wm_write.g4a b/src/shaders/render/exa_wm_write.g4a
deleted file mode 100644
index 2cb3d89..0000000
--- a/src/shaders/render/exa_wm_write.g4a
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright © 2006 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Wang Zhenyu <zhenyu.z.wang@intel.com>
- * Keith Packard <keithp@keithp.com>
- */
-
-include(`exa_wm.g4i')
-
-/*
- * Prepare data in m2-m5 for subspan(1,0), m6-m9 for subspan(3,2),
- *
- * Note that the SIMD16 write message takes data for the first
- * two sub-spans followed by the data for the second two sub-spans
- * instead of having the two sub-spans interleaved by channel. Weird.
- */
-
-mov (8) data_port_r_01<1>F g14<8,8,1>F { align1 };
-mov (8) data_port_g_01<1>F g16<8,8,1>F { align1 };
-mov (8) data_port_b_01<1>F g18<8,8,1>F { align1 };
-mov (8) data_port_a_01<1>F src_sample_a_01<8,8,1>F { align1 };
-
-mov (8) data_port_r_23<1>F src_sample_r_23<8,8,1>F { sechalf align1 };
-mov (8) data_port_g_23<1>F src_sample_g_23<8,8,1>F { sechalf align1 };
-mov (8) data_port_b_23<1>F src_sample_b_23<8,8,1>F { sechalf align1 };
-mov (8) data_port_a_23<1>F src_sample_a_23<8,8,1>F { sechalf align1 };
-
-
-mov (8) data_port_r_01<1>F src_sample_r_01<8,8,1>F { align1 };
-mov (8) data_port_g_01<1>F src_sample_g_01<8,8,1>F { align1 };
-mov (8) data_port_b_01<1>F src_sample_b_01<8,8,1>F { align1 };
-mov (8) data_port_a_01<1>F src_sample_a_01<8,8,1>F { align1 };
-
-mov (8) data_port_r_23<1>F src_sample_r_23<8,8,1>F { sechalf align1 };
-mov (8) data_port_g_23<1>F src_sample_g_23<8,8,1>F { sechalf align1 };
-mov (8) data_port_b_23<1>F src_sample_b_23<8,8,1>F { sechalf align1 };
-mov (8) data_port_a_23<1>F src_sample_a_23<8,8,1>F { sechalf align1 };
-
-/* m0, m1 are all direct passed by PS thread payload */
-mov (8) data_port_msg_1<1>UD g1<8,8,1>UD { mask_disable align1 };
-
-/* write */
-send (16)
- data_port_msg_0_ind
- acc0<1>UW
- g0<8,8,1>UW
- write (
- 0, /* binding_table */
- 8, /* pixel scordboard clear, msg type simd16 single source */
- 4, /* render target write */
- 0 /* no write commit message */
- )
- mlen 10
- rlen 0
- { align1 EOT };
-
-nop;
-nop;
-nop;
-nop;
-nop;
-nop;
-nop;
-nop;
-
diff --git a/src/shaders/render/exa_wm_write.g4b b/src/shaders/render/exa_wm_write.g4b
deleted file mode 100644
index b7dcd16..0000000
--- a/src/shaders/render/exa_wm_write.g4b
+++ /dev/null
@@ -1,26 +0,0 @@
- { 0x00600001, 0x204003be, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x206003be, 0x008d0200, 0x00000000 },
- { 0x00600001, 0x208003be, 0x008d0240, 0x00000000 },
- { 0x00600001, 0x20a003be, 0x008d0280, 0x00000000 },
- { 0x00601001, 0x20c003be, 0x008d01e0, 0x00000000 },
- { 0x00601001, 0x20e003be, 0x008d0220, 0x00000000 },
- { 0x00601001, 0x210003be, 0x008d0260, 0x00000000 },
- { 0x00601001, 0x212003be, 0x008d02a0, 0x00000000 },
- { 0x00600001, 0x204003be, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x206003be, 0x008d0200, 0x00000000 },
- { 0x00600001, 0x208003be, 0x008d0240, 0x00000000 },
- { 0x00600001, 0x20a003be, 0x008d0280, 0x00000000 },
- { 0x00601001, 0x20c003be, 0x008d01e0, 0x00000000 },
- { 0x00601001, 0x20e003be, 0x008d0220, 0x00000000 },
- { 0x00601001, 0x210003be, 0x008d0260, 0x00000000 },
- { 0x00601001, 0x212003be, 0x008d02a0, 0x00000000 },
- { 0x00600201, 0x20200022, 0x008d0020, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x008d0000, 0x85a04800 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/src/shaders/render/exa_wm_write.g4b.gen5 b/src/shaders/render/exa_wm_write.g4b.gen5
deleted file mode 100644
index 14c1dae..0000000
--- a/src/shaders/render/exa_wm_write.g4b.gen5
+++ /dev/null
@@ -1,26 +0,0 @@
- { 0x00600001, 0x204003be, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x206003be, 0x008d0200, 0x00000000 },
- { 0x00600001, 0x208003be, 0x008d0240, 0x00000000 },
- { 0x00600001, 0x20a003be, 0x008d0280, 0x00000000 },
- { 0x00601001, 0x20c003be, 0x008d01e0, 0x00000000 },
- { 0x00601001, 0x20e003be, 0x008d0220, 0x00000000 },
- { 0x00601001, 0x210003be, 0x008d0260, 0x00000000 },
- { 0x00601001, 0x212003be, 0x008d02a0, 0x00000000 },
- { 0x00600001, 0x204003be, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x206003be, 0x008d0200, 0x00000000 },
- { 0x00600001, 0x208003be, 0x008d0240, 0x00000000 },
- { 0x00600001, 0x20a003be, 0x008d0280, 0x00000000 },
- { 0x00601001, 0x20c003be, 0x008d01e0, 0x00000000 },
- { 0x00601001, 0x20e003be, 0x008d0220, 0x00000000 },
- { 0x00601001, 0x210003be, 0x008d0260, 0x00000000 },
- { 0x00601001, 0x212003be, 0x008d02a0, 0x00000000 },
- { 0x00600201, 0x20200022, 0x008d0020, 0x00000000 },
- { 0x00800031, 0x24001d28, 0x548d0000, 0x94084800 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/src/shaders/render/exa_wm_write.g6a b/src/shaders/render/exa_wm_write.g6a
deleted file mode 100644
index c0f3cc1..0000000
--- a/src/shaders/render/exa_wm_write.g6a
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- */
-
-include(`exa_wm.g4i')
-
-/*
- * Prepare data in m2-m3 for Red channel, m4-m5 for Green channel,
- * m6-m7 for Blue and m8-m9 for Alpha channel
- */
-define(`slot_r_00', `m2')
-define(`slot_r_01', `m3')
-define(`slot_g_00', `m4')
-define(`slot_g_01', `m5')
-define(`slot_b_00', `m6')
-define(`slot_b_01', `m7')
-define(`slot_a_00', `m8')
-define(`slot_a_01', `m9')
-define(`data_port_msg_2_ind', `2')
-
-mov (8) slot_r_00<1>F src_sample_r_01<8,8,1>F { align1 };
-mov (8) slot_r_01<1>F src_sample_r_23<8,8,1>F { align1 };
-
-mov (8) slot_g_00<1>F src_sample_g_01<8,8,1>F { align1 };
-mov (8) slot_g_01<1>F src_sample_g_23<8,8,1>F { align1 };
-
-mov (8) slot_b_00<1>F src_sample_b_01<8,8,1>F { align1 };
-mov (8) slot_b_01<1>F src_sample_b_23<8,8,1>F { align1 };
-
-mov (8) slot_a_00<1>F src_sample_a_01<8,8,1>F { align1 };
-mov (8) slot_a_01<1>F src_sample_a_23<8,8,1>F { align1 };
-
-/* write */
-send (16)
- data_port_msg_2_ind
- acc0<1>UW
- null
- write (
- 0, /* binding_table */
- 16, /* pixel scordboard clear, msg type simd16 single source */
- 12, /* render target write */
- 0, /* no write commit message */
- 0 /* headerless render target write */
- )
- mlen 8
- rlen 0
- { align1 EOT };
-
-nop;
-nop;
-nop;
-nop;
-nop;
-nop;
-nop;
-nop;
-
diff --git a/src/shaders/render/exa_wm_write.g6b b/src/shaders/render/exa_wm_write.g6b
deleted file mode 100644
index 3cb6bff..0000000
--- a/src/shaders/render/exa_wm_write.g6b
+++ /dev/null
@@ -1,17 +0,0 @@
- { 0x00600001, 0x204003be, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x206003be, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x208003be, 0x008d0200, 0x00000000 },
- { 0x00600001, 0x20a003be, 0x008d0220, 0x00000000 },
- { 0x00600001, 0x20c003be, 0x008d0240, 0x00000000 },
- { 0x00600001, 0x20e003be, 0x008d0260, 0x00000000 },
- { 0x00600001, 0x210003be, 0x008d0280, 0x00000000 },
- { 0x00600001, 0x212003be, 0x008d02a0, 0x00000000 },
- { 0x05800031, 0x24001cc8, 0x00000040, 0x90019000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/src/shaders/render/exa_wm_write.g7a b/src/shaders/render/exa_wm_write.g7a
deleted file mode 100644
index f2eb0ea..0000000
--- a/src/shaders/render/exa_wm_write.g7a
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- */
-
-include(`exa_wm.g4i')
-include(`exa_wm_write.g7i')
diff --git a/src/shaders/render/exa_wm_write.g7b b/src/shaders/render/exa_wm_write.g7b
deleted file mode 100644
index b0a1d07..0000000
--- a/src/shaders/render/exa_wm_write.g7b
+++ /dev/null
@@ -1,19 +0,0 @@
- { 0x00600201, 0x2e000021, 0x008d0000, 0x00000000 },
- { 0x00600201, 0x2e200021, 0x008d0020, 0x00000000 },
- { 0x00600201, 0x2e4003bd, 0x008d01c0, 0x00000000 },
- { 0x00600201, 0x2e6003bd, 0x008d01e0, 0x00000000 },
- { 0x00600201, 0x2e8003bd, 0x008d0200, 0x00000000 },
- { 0x00600201, 0x2ea003bd, 0x008d0220, 0x00000000 },
- { 0x00600201, 0x2ec003bd, 0x008d0240, 0x00000000 },
- { 0x00600201, 0x2ee003bd, 0x008d0260, 0x00000000 },
- { 0x00600201, 0x2f0003bd, 0x008d0280, 0x00000000 },
- { 0x00600201, 0x2f2003bd, 0x008d02a0, 0x00000000 },
- { 0x05800031, 0x20001ca8, 0x00000e00, 0x940b1000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/src/shaders/render/exa_wm_write.g7i b/src/shaders/render/exa_wm_write.g7i
deleted file mode 100644
index 3fbb432..0000000
--- a/src/shaders/render/exa_wm_write.g7i
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- */
-
-/* header */
-define(`data_port_msg_2_0', `g112')
-define(`data_port_msg_2_1', `g113')
-define(`data_port_msg_2_ind', `112')
-
-mov (8) data_port_msg_2_0<1>UD g0<8,8,1>UD {align1 mask_disable};
-mov (8) data_port_msg_2_1<1>UD g1<8,8,1>UD {align1 mask_disable};
-
-/*
- * Prepare data in g114-g115 for Red channel, g116-g117 for Green channel,
- * g118-g119 for Blue and g120-g121 for Alpha channel
- */
-define(`slot_r_00', `g114')
-define(`slot_r_01', `g115')
-define(`slot_g_00', `g116')
-define(`slot_g_01', `g117')
-define(`slot_b_00', `g118')
-define(`slot_b_01', `g119')
-define(`slot_a_00', `g120')
-define(`slot_a_01', `g121')
-
-mov (8) slot_r_00<1>F src_sample_r_01<8,8,1>F { align1 mask_disable };
-mov (8) slot_r_01<1>F src_sample_r_23<8,8,1>F { align1 mask_disable };
-
-mov (8) slot_g_00<1>F src_sample_g_01<8,8,1>F { align1 mask_disable };
-mov (8) slot_g_01<1>F src_sample_g_23<8,8,1>F { align1 mask_disable };
-
-mov (8) slot_b_00<1>F src_sample_b_01<8,8,1>F { align1 mask_disable };
-mov (8) slot_b_01<1>F src_sample_b_23<8,8,1>F { align1 mask_disable };
-
-mov (8) slot_a_00<1>F src_sample_a_01<8,8,1>F { align1 mask_disable };
-mov (8) slot_a_01<1>F src_sample_a_23<8,8,1>F { align1 mask_disable };
-
-send (16)
- data_port_msg_2_ind
- null<1>UW
- null
- write (
- 0, /* binding table index */
- 16, /* last render target(1) + slots 15:0(0) + msg type simd16 single source(000) */
- 12, /* render target write */
- 0, /* ignore for Ivybridge */
- 1 /* header present */
- )
- mlen 10
- rlen 0
- { align1 EOT };
-
-nop;
-nop;
-nop;
-nop;
-nop;
-nop;
-nop;
-nop;
diff --git a/src/shaders/render/exa_wm_write.g8a b/src/shaders/render/exa_wm_write.g8a
deleted file mode 100644
index 6c386af..0000000
--- a/src/shaders/render/exa_wm_write.g8a
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- */
-
-include(`exa_wm.g4i')
-include(`exa_wm_write.g7i')
diff --git a/src/shaders/render/exa_wm_write.g8b b/src/shaders/render/exa_wm_write.g8b
deleted file mode 100644
index a320f46..0000000
--- a/src/shaders/render/exa_wm_write.g8b
+++ /dev/null
@@ -1,19 +0,0 @@
- { 0x00600001, 0x2e00020c, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x2e20020c, 0x008d0020, 0x00000000 },
- { 0x00600001, 0x2e403aec, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x2e603aec, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x2e803aec, 0x008d0200, 0x00000000 },
- { 0x00600001, 0x2ea03aec, 0x008d0220, 0x00000000 },
- { 0x00600001, 0x2ec03aec, 0x008d0240, 0x00000000 },
- { 0x00600001, 0x2ee03aec, 0x008d0260, 0x00000000 },
- { 0x00600001, 0x2f003aec, 0x008d0280, 0x00000000 },
- { 0x00600001, 0x2f203aec, 0x008d02a0, 0x00000000 },
- { 0x05800031, 0x20000a40, 0x0e000e00, 0x940b1000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/src/shaders/render/exa_wm_write.g9a b/src/shaders/render/exa_wm_write.g9a
deleted file mode 100644
index d735efd..0000000
--- a/src/shaders/render/exa_wm_write.g9a
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- */
-
-include(`exa_wm.g4i')
-include(`exa_wm_write.g7i')
diff --git a/src/shaders/render/exa_wm_write.g9b b/src/shaders/render/exa_wm_write.g9b
deleted file mode 100644
index e625b9d..0000000
--- a/src/shaders/render/exa_wm_write.g9b
+++ /dev/null
@@ -1,19 +0,0 @@
- { 0x00600001, 0x2e00020c, 0x008d0000, 0x00000000 },
- { 0x00600001, 0x2e20020c, 0x008d0020, 0x00000000 },
- { 0x00600001, 0x2e403aec, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x2e603aec, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x2e803aec, 0x008d0200, 0x00000000 },
- { 0x00600001, 0x2ea03aec, 0x008d0220, 0x00000000 },
- { 0x00600001, 0x2ec03aec, 0x008d0240, 0x00000000 },
- { 0x00600001, 0x2ee03aec, 0x008d0260, 0x00000000 },
- { 0x00600001, 0x2f003aec, 0x008d0280, 0x00000000 },
- { 0x00600001, 0x2f203aec, 0x008d02a0, 0x00000000 },
- { 0x05800031, 0x20000a40, 0x06000e00, 0x940b1000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/src/shaders/render/exa_wm_xy.g4a b/src/shaders/render/exa_wm_xy.g4a
deleted file mode 100644
index e99f5ac..0000000
--- a/src/shaders/render/exa_wm_xy.g4a
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright © 2006 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Wang Zhenyu <zhenyu.z.wang@intel.com>
- * Keith Packard <keithp@keithp.com>
- */
-
-/*
- * Register assignments:
- *
- * x g6/g7
- * y g8/g9
- *
- * temp x g10/g11
- * temp y g12/g13
- *
- * src w g14/g15
- * src u m1/m2
- * src v m3/m4
- */
-
-/* Fragment to compute per-pixel XY values */
-
-include(`exa_wm.g4i')
-
- /* Load X and Y coordinates and compute per-pixel coordinates */
-add (16) temp_x_uw<1>UW dst_x_uw 0x10101010V { align1 };
-add (16) temp_y_uw<1>UW dst_y_uw 0x11001100V { align1 };
-
- /* subtract screen-space origin of vertex 0 */
-add (16) dst_x<1>F temp_x_uw<8,8,1>UW -screen_x0 { compr align1 };
-add (16) dst_y<1>F temp_y_uw<8,8,1>UW -screen_y0 { compr align1 };
diff --git a/src/shaders/render/exa_wm_xy.g4b b/src/shaders/render/exa_wm_xy.g4b
deleted file mode 100644
index 2b3b235..0000000
--- a/src/shaders/render/exa_wm_xy.g4b
+++ /dev/null
@@ -1,4 +0,0 @@
- { 0x00800040, 0x23c06d29, 0x00480028, 0x10101010 },
- { 0x00800040, 0x23806d29, 0x0048002a, 0x11001100 },
- { 0x00802040, 0x2540753d, 0x008d03c0, 0x00004020 },
- { 0x00802040, 0x2580753d, 0x008d0380, 0x00004024 },
diff --git a/src/shaders/render/exa_wm_xy.g4b.gen5 b/src/shaders/render/exa_wm_xy.g4b.gen5
deleted file mode 100644
index 2b3b235..0000000
--- a/src/shaders/render/exa_wm_xy.g4b.gen5
+++ /dev/null
@@ -1,4 +0,0 @@
- { 0x00800040, 0x23c06d29, 0x00480028, 0x10101010 },
- { 0x00800040, 0x23806d29, 0x0048002a, 0x11001100 },
- { 0x00802040, 0x2540753d, 0x008d03c0, 0x00004020 },
- { 0x00802040, 0x2580753d, 0x008d0380, 0x00004024 },
diff --git a/src/shaders/render/exa_wm_yuv_color_balance.g4a b/src/shaders/render/exa_wm_yuv_color_balance.g4a
deleted file mode 100644
index 33ba67a..0000000
--- a/src/shaders/render/exa_wm_yuv_color_balance.g4a
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Haihao Xiang <haihao.xiang@intel.com>
- *
- */
-
-include(`exa_wm.g4i')
-
-/* Color Balance parameters */
-define(`skip_color_balance', `g2.2<0,1,0>uw')
-define(`contrast', `g2.16<0,1,0>f')
-define(`brightness', `g2.20<0,1,0>f')
-define(`cos_c_s', `g2.24<0,1,0>f')
-define(`sin_c_s', `g2.28<0,1,0>f')
-define(`sin_c_s_t', `g2.28')
-
-include(`exa_wm_yuv_color_balance.gxa')
diff --git a/src/shaders/render/exa_wm_yuv_color_balance.g4b b/src/shaders/render/exa_wm_yuv_color_balance.g4b
deleted file mode 100644
index cba9aca..0000000
--- a/src/shaders/render/exa_wm_yuv_color_balance.g4b
+++ /dev/null
@@ -1,15 +0,0 @@
- { 0x01000010, 0x20002d3c, 0x00000042, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000d },
- { 0x00802040, 0x24007fbd, 0x008d01c0, 0xbd808081 },
- { 0x00802041, 0x240077bd, 0x008d0400, 0x00000050 },
- { 0x00802040, 0x240077bd, 0x008d0400, 0x00000054 },
- { 0x00802040, 0x21c07fbd, 0x008d0400, 0x3d808081 },
- { 0x00802040, 0x24807fbd, 0x008d0200, 0xbf008084 },
- { 0x00802040, 0x24407fbd, 0x008d0240, 0xbf008084 },
- { 0x00802001, 0x240003fc, 0x00000000, 0x3f008084 },
- { 0x00802048, 0x240077bc, 0x008d0440, 0x0000005c },
- { 0x00802048, 0x220077bd, 0x008d0480, 0x00000058 },
- { 0x00000041, 0x205c7fbd, 0x0000005c, 0xbf800000 },
- { 0x00802001, 0x240003fc, 0x00000000, 0x3f008084 },
- { 0x00802048, 0x240077bc, 0x008d0480, 0x0000005c },
- { 0x00802048, 0x224077bd, 0x008d0440, 0x00000058 },
diff --git a/src/shaders/render/exa_wm_yuv_color_balance.g4b.gen5 b/src/shaders/render/exa_wm_yuv_color_balance.g4b.gen5
deleted file mode 100644
index 5a24a0e..0000000
--- a/src/shaders/render/exa_wm_yuv_color_balance.g4b.gen5
+++ /dev/null
@@ -1,15 +0,0 @@
- { 0x01000010, 0x20002d3c, 0x00000042, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000001a },
- { 0x00802040, 0x24007fbd, 0x008d01c0, 0xbd808081 },
- { 0x00802041, 0x240077bd, 0x008d0400, 0x00000050 },
- { 0x00802040, 0x240077bd, 0x008d0400, 0x00000054 },
- { 0x00802040, 0x21c07fbd, 0x008d0400, 0x3d808081 },
- { 0x00802040, 0x24807fbd, 0x008d0200, 0xbf008084 },
- { 0x00802040, 0x24407fbd, 0x008d0240, 0xbf008084 },
- { 0x00802001, 0x240003fc, 0x00000000, 0x3f008084 },
- { 0x00802048, 0x240077bc, 0x008d0440, 0x0000005c },
- { 0x00802048, 0x220077bd, 0x008d0480, 0x00000058 },
- { 0x00000041, 0x205c7fbd, 0x0000005c, 0xbf800000 },
- { 0x00802001, 0x240003fc, 0x00000000, 0x3f008084 },
- { 0x00802048, 0x240077bc, 0x008d0480, 0x0000005c },
- { 0x00802048, 0x224077bd, 0x008d0440, 0x00000058 },
diff --git a/src/shaders/render/exa_wm_yuv_color_balance.g6a b/src/shaders/render/exa_wm_yuv_color_balance.g6a
deleted file mode 100644
index 6906357..0000000
--- a/src/shaders/render/exa_wm_yuv_color_balance.g6a
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Haihao Xiang <haihao.xiang@intel.com>
- *
- */
-
-include(`exa_wm.g4i')
-
-/* Color Balance parameters */
-define(`skip_color_balance', `g6.2<0,1,0>uw')
-define(`contrast', `g6.16<0,1,0>f')
-define(`brightness', `g6.20<0,1,0>f')
-define(`cos_c_s', `g6.24<0,1,0>f')
-define(`sin_c_s', `g6.28<0,1,0>f')
-define(`sin_c_s_t', `g6.28')
-
-include(`exa_wm_yuv_color_balance.gxa')
diff --git a/src/shaders/render/exa_wm_yuv_color_balance.g6b b/src/shaders/render/exa_wm_yuv_color_balance.g6b
deleted file mode 100644
index 0a9e6b9..0000000
--- a/src/shaders/render/exa_wm_yuv_color_balance.g6b
+++ /dev/null
@@ -1,15 +0,0 @@
- { 0x01000010, 0x20002d3c, 0x000000c2, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000001a },
- { 0x00800040, 0x24007fbd, 0x008d01c0, 0xbd808081 },
- { 0x00800041, 0x240077bd, 0x008d0400, 0x000000d0 },
- { 0x00800040, 0x240077bd, 0x008d0400, 0x000000d4 },
- { 0x00800040, 0x21c07fbd, 0x008d0400, 0x3d808081 },
- { 0x00800040, 0x24807fbd, 0x008d0200, 0xbf008084 },
- { 0x00800040, 0x24407fbd, 0x008d0240, 0xbf008084 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x3f008084 },
- { 0x00800048, 0x240077bc, 0x008d0440, 0x000000dc },
- { 0x00800048, 0x220077bd, 0x008d0480, 0x000000d8 },
- { 0x00000041, 0x20dc7fbd, 0x000000dc, 0xbf800000 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x3f008084 },
- { 0x00800048, 0x240077bc, 0x008d0480, 0x000000dc },
- { 0x00800048, 0x224077bd, 0x008d0440, 0x000000d8 },
diff --git a/src/shaders/render/exa_wm_yuv_color_balance.g7a b/src/shaders/render/exa_wm_yuv_color_balance.g7a
deleted file mode 100644
index 6906357..0000000
--- a/src/shaders/render/exa_wm_yuv_color_balance.g7a
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Haihao Xiang <haihao.xiang@intel.com>
- *
- */
-
-include(`exa_wm.g4i')
-
-/* Color Balance parameters */
-define(`skip_color_balance', `g6.2<0,1,0>uw')
-define(`contrast', `g6.16<0,1,0>f')
-define(`brightness', `g6.20<0,1,0>f')
-define(`cos_c_s', `g6.24<0,1,0>f')
-define(`sin_c_s', `g6.28<0,1,0>f')
-define(`sin_c_s_t', `g6.28')
-
-include(`exa_wm_yuv_color_balance.gxa')
diff --git a/src/shaders/render/exa_wm_yuv_color_balance.g7b b/src/shaders/render/exa_wm_yuv_color_balance.g7b
deleted file mode 100644
index 0a9e6b9..0000000
--- a/src/shaders/render/exa_wm_yuv_color_balance.g7b
+++ /dev/null
@@ -1,15 +0,0 @@
- { 0x01000010, 0x20002d3c, 0x000000c2, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000001a },
- { 0x00800040, 0x24007fbd, 0x008d01c0, 0xbd808081 },
- { 0x00800041, 0x240077bd, 0x008d0400, 0x000000d0 },
- { 0x00800040, 0x240077bd, 0x008d0400, 0x000000d4 },
- { 0x00800040, 0x21c07fbd, 0x008d0400, 0x3d808081 },
- { 0x00800040, 0x24807fbd, 0x008d0200, 0xbf008084 },
- { 0x00800040, 0x24407fbd, 0x008d0240, 0xbf008084 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x3f008084 },
- { 0x00800048, 0x240077bc, 0x008d0440, 0x000000dc },
- { 0x00800048, 0x220077bd, 0x008d0480, 0x000000d8 },
- { 0x00000041, 0x20dc7fbd, 0x000000dc, 0xbf800000 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x3f008084 },
- { 0x00800048, 0x240077bc, 0x008d0480, 0x000000dc },
- { 0x00800048, 0x224077bd, 0x008d0440, 0x000000d8 },
diff --git a/src/shaders/render/exa_wm_yuv_color_balance.g7b.haswell b/src/shaders/render/exa_wm_yuv_color_balance.g7b.haswell
deleted file mode 100644
index 2780c08..0000000
--- a/src/shaders/render/exa_wm_yuv_color_balance.g7b.haswell
+++ /dev/null
@@ -1,15 +0,0 @@
- { 0x01000010, 0x20002d3c, 0x000000c2, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000d0 },
- { 0x00800040, 0x24007fbd, 0x008d01c0, 0xbd808081 },
- { 0x00800041, 0x240077bd, 0x008d0400, 0x000000d0 },
- { 0x00800040, 0x240077bd, 0x008d0400, 0x000000d4 },
- { 0x00800040, 0x21c07fbd, 0x008d0400, 0x3d808081 },
- { 0x00800040, 0x24807fbd, 0x008d0200, 0xbf008084 },
- { 0x00800040, 0x24407fbd, 0x008d0240, 0xbf008084 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x3f008084 },
- { 0x00800048, 0x240077bc, 0x008d0440, 0x000000dc },
- { 0x00800048, 0x220077bd, 0x008d0480, 0x000000d8 },
- { 0x00000041, 0x20dc7fbd, 0x000000dc, 0xbf800000 },
- { 0x00800001, 0x240003fc, 0x00000000, 0x3f008084 },
- { 0x00800048, 0x240077bc, 0x008d0480, 0x000000dc },
- { 0x00800048, 0x224077bd, 0x008d0440, 0x000000d8 },
diff --git a/src/shaders/render/exa_wm_yuv_color_balance.g8a b/src/shaders/render/exa_wm_yuv_color_balance.g8a
deleted file mode 100644
index f3cc28f..0000000
--- a/src/shaders/render/exa_wm_yuv_color_balance.g8a
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Haihao Xiang <haihao.xiang@intel.com>
- * Zhao Yakui <yakui.zhao@intel.com>
- *
- */
-
-include(`exa_wm.g4i')
-
-/* Color Balance parameters */
-define(`skip_color_balance', `g6.2<0,1,0>uw')
-define(`contrast', `g6.16<0,1,0>f')
-define(`brightness', `g6.20<0,1,0>f')
-define(`cos_c_s', `g6.24<0,1,0>f')
-define(`sin_c_s', `g6.28<0,1,0>f')
-define(`sin_c_s_t', `g6.28')
-
-include(`exa_wm_yuv_color_balance.gxa')
diff --git a/src/shaders/render/exa_wm_yuv_color_balance.g8b b/src/shaders/render/exa_wm_yuv_color_balance.g8b
deleted file mode 100644
index 5dc2c8b..0000000
--- a/src/shaders/render/exa_wm_yuv_color_balance.g8b
+++ /dev/null
@@ -1,15 +0,0 @@
- { 0x01000010, 0x200012e0, 0x160000c2, 0x00010001 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000d0 },
- { 0x00800040, 0x24003ae8, 0x3e8d01c0, 0xbd808081 },
- { 0x00800041, 0x24003ae8, 0x3a8d0400, 0x000000d0 },
- { 0x00800040, 0x24003ae8, 0x3a8d0400, 0x000000d4 },
- { 0x00800040, 0x21c03ae8, 0x3e8d0400, 0x3d808081 },
- { 0x00800040, 0x24803ae8, 0x3e8d0200, 0xbf008084 },
- { 0x00800040, 0x24403ae8, 0x3e8d0240, 0xbf008084 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x3f008084 },
- { 0x00800048, 0x24003ae0, 0x3a8d0440, 0x000000dc },
- { 0x00800048, 0x22003ae8, 0x3a8d0480, 0x000000d8 },
- { 0x00000041, 0x20dc3ae8, 0x3e0000dc, 0xbf800000 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x3f008084 },
- { 0x00800048, 0x24003ae0, 0x3a8d0480, 0x000000dc },
- { 0x00800048, 0x22403ae8, 0x3a8d0440, 0x000000d8 },
diff --git a/src/shaders/render/exa_wm_yuv_color_balance.g9a b/src/shaders/render/exa_wm_yuv_color_balance.g9a
deleted file mode 100644
index 511e3f3..0000000
--- a/src/shaders/render/exa_wm_yuv_color_balance.g9a
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Haihao Xiang <haihao.xiang@intel.com>
- * Zhao Yakui <yakui.zhao@intel.com>
- *
- */
-
-include(`exa_wm.g4i')
-
-/* Color Balance parameters */
-define(`skip_color_balance', `g6.2<0,1,0>uw')
-define(`contrast', `g6.16<0,1,0>f')
-define(`brightness', `g6.20<0,1,0>f')
-define(`cos_c_s', `g6.24<0,1,0>f')
-define(`sin_c_s', `g6.28<0,1,0>f')
-define(`sin_c_s_t', `g6.28')
-
-include(`exa_wm_yuv_color_balance.gxa')
diff --git a/src/shaders/render/exa_wm_yuv_color_balance.g9b b/src/shaders/render/exa_wm_yuv_color_balance.g9b
deleted file mode 100644
index 5dc2c8b..0000000
--- a/src/shaders/render/exa_wm_yuv_color_balance.g9b
+++ /dev/null
@@ -1,15 +0,0 @@
- { 0x01000010, 0x200012e0, 0x160000c2, 0x00010001 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000d0 },
- { 0x00800040, 0x24003ae8, 0x3e8d01c0, 0xbd808081 },
- { 0x00800041, 0x24003ae8, 0x3a8d0400, 0x000000d0 },
- { 0x00800040, 0x24003ae8, 0x3a8d0400, 0x000000d4 },
- { 0x00800040, 0x21c03ae8, 0x3e8d0400, 0x3d808081 },
- { 0x00800040, 0x24803ae8, 0x3e8d0200, 0xbf008084 },
- { 0x00800040, 0x24403ae8, 0x3e8d0240, 0xbf008084 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x3f008084 },
- { 0x00800048, 0x24003ae0, 0x3a8d0440, 0x000000dc },
- { 0x00800048, 0x22003ae8, 0x3a8d0480, 0x000000d8 },
- { 0x00000041, 0x20dc3ae8, 0x3e0000dc, 0xbf800000 },
- { 0x00800001, 0x24003ee0, 0x38000000, 0x3f008084 },
- { 0x00800048, 0x24003ae0, 0x3a8d0480, 0x000000dc },
- { 0x00800048, 0x22403ae8, 0x3a8d0440, 0x000000d8 },
diff --git a/src/shaders/render/exa_wm_yuv_color_balance.gxa b/src/shaders/render/exa_wm_yuv_color_balance.gxa
deleted file mode 100644
index 948067c..0000000
--- a/src/shaders/render/exa_wm_yuv_color_balance.gxa
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Haihao Xiang <haihao.xiang@intel.com>
- *
- */
-
-define(`Cr', `src_sample_b')
-define(`Cr_01', `src_sample_b_01')
-define(`Cr_23', `src_sample_b_23')
-
-define(`Y', `src_sample_r')
-define(`Y_01', `src_sample_r_01')
-define(`Y_23', `src_sample_r_23')
-
-define(`Cb', `src_sample_g')
-define(`Cb_01', `src_sample_g_01')
-define(`Cb_23', `src_sample_g_23')
-
-define(`Crn', `color_balance_g')
-define(`Crn_01', `color_balance_g_01')
-define(`Crn_23', `color_balance_g_23')
-
-define(`Yn', `color_balance_r')
-define(`Yn_01', `color_balance_r_01')
-define(`Yn_23', `color_balance_r_23')
-
-define(`Cbn', `color_balance_b')
-define(`Cbn_01', `color_balance_b_01')
-define(`Cbn_23', `color_balance_b_23')
-
-cmp.e.f0.0 (1) null skip_color_balance 0x1uw {align1};
-(f0.0) jmpi _DONE_COLOR_BALANCE;
-
-/* Yout = (Yin - 16 / 255) * contrast + brightness + 16 / 255 */
-add (16) Yn<1>F Y<8,8,1>F -0.0627451F { compr align1 };
-mul (16) Yn<1>F Yn<8,8,1>F contrast { compr align1 };
-add (16) Yn<1>F Yn<8,8,1>F brightness { compr align1 };
-add (16) Y<1>F Yn<8,8,1>F 0.0627451F { compr align1 };
-
-/* Uout = (Uin - 128 / 255) * cos_c_s + (Vin - 128 / 255) * sin_c_s + 128 / 255 */
-/* Vout = (Vin - 128 / 255) * cos_c_s - (Uin - 128 / 255) * sin_c_s + 128 / 255 */
-add (16) Cbn<1>F Cb<8,8,1>F -0.501961F { compr align1 };
-add (16) Crn<1>F Cr<8,8,1>F -0.501961F { compr align1 };
-
-mov (16) acc0<1>F 0.501961F { compr align1 };
-mac (16) acc0<1>F Crn<8,8,1>F sin_c_s { compr align1 };
-mac (16) Cb<1>F Cbn<8,8,1>F cos_c_s { compr align1 };
-
-mul (1) sin_c_s_t<1>F sin_c_s -1.0F { align1};
-mov (16) acc0<1>F 0.501961F { compr align1 };
-mac (16) acc0<1>F Cbn<8,8,1>F sin_c_s { compr align1 };
-mac (16) Cr<1>F Crn<8,8,1>F cos_c_s { compr align1 };
-
-_DONE_COLOR_BALANCE:
diff --git a/src/shaders/render/exa_wm_yuv_rgb.g4a b/src/shaders/render/exa_wm_yuv_rgb.g4a
deleted file mode 100644
index e3d2464..0000000
--- a/src/shaders/render/exa_wm_yuv_rgb.g4a
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright © 2006-2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Keith Packard <keithp@keithp.com>
- * Eric Anholt <eric@anholt.net>
- *
- */
-
-include(`exa_wm.g4i')
-include(`exa_yuv_gen4.g4i')
-include(`exa_yuv_rgb.gxa')
-
diff --git a/src/shaders/render/exa_wm_yuv_rgb.g4b b/src/shaders/render/exa_wm_yuv_rgb.g4b
deleted file mode 100644
index b116ece..0000000
--- a/src/shaders/render/exa_wm_yuv_rgb.g4b
+++ /dev/null
@@ -1,13 +0,0 @@
- { 0x00802040, 0x22c077bd, 0x008d01c0, 0x0000006c },
- { 0x00802040, 0x230077bd, 0x008d0200, 0x0000007c },
- { 0x00802040, 0x234077bd, 0x008d0240, 0x0000008c },
- { 0x00802041, 0x240077bc, 0x008d02c0, 0x00000060 },
- { 0x00802048, 0x240077bc, 0x008d0300, 0x00000064 },
- { 0x80802048, 0x21c077bd, 0x008d0340, 0x00000068 },
- { 0x00802041, 0x240077bc, 0x008d02c0, 0x00000070 },
- { 0x00802048, 0x240077bc, 0x008d0300, 0x00000074 },
- { 0x80802048, 0x220077bd, 0x008d0340, 0x00000078 },
- { 0x00802041, 0x240077bc, 0x008d02c0, 0x00000080 },
- { 0x00802048, 0x240077bc, 0x008d0300, 0x00000084 },
- { 0x80802048, 0x224077bd, 0x008d0340, 0x00000088 },
- { 0x00802001, 0x228003fd, 0x00000000, 0x3f800000 },
diff --git a/src/shaders/render/exa_wm_yuv_rgb.g4b.gen5 b/src/shaders/render/exa_wm_yuv_rgb.g4b.gen5
deleted file mode 100644
index b116ece..0000000
--- a/src/shaders/render/exa_wm_yuv_rgb.g4b.gen5
+++ /dev/null
@@ -1,13 +0,0 @@
- { 0x00802040, 0x22c077bd, 0x008d01c0, 0x0000006c },
- { 0x00802040, 0x230077bd, 0x008d0200, 0x0000007c },
- { 0x00802040, 0x234077bd, 0x008d0240, 0x0000008c },
- { 0x00802041, 0x240077bc, 0x008d02c0, 0x00000060 },
- { 0x00802048, 0x240077bc, 0x008d0300, 0x00000064 },
- { 0x80802048, 0x21c077bd, 0x008d0340, 0x00000068 },
- { 0x00802041, 0x240077bc, 0x008d02c0, 0x00000070 },
- { 0x00802048, 0x240077bc, 0x008d0300, 0x00000074 },
- { 0x80802048, 0x220077bd, 0x008d0340, 0x00000078 },
- { 0x00802041, 0x240077bc, 0x008d02c0, 0x00000080 },
- { 0x00802048, 0x240077bc, 0x008d0300, 0x00000084 },
- { 0x80802048, 0x224077bd, 0x008d0340, 0x00000088 },
- { 0x00802001, 0x228003fd, 0x00000000, 0x3f800000 },
diff --git a/src/shaders/render/exa_wm_yuv_rgb.g6a b/src/shaders/render/exa_wm_yuv_rgb.g6a
deleted file mode 100644
index ede0298..0000000
--- a/src/shaders/render/exa_wm_yuv_rgb.g6a
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright © 2006-2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Keith Packard <keithp@keithp.com>
- * Eric Anholt <eric@anholt.net>
- *
- */
-
-include(`exa_wm.g4i')
-include(`exa_yuv_gen6.g4i')
-include(`exa_yuv_rgb.gxa')
diff --git a/src/shaders/render/exa_wm_yuv_rgb.g6b b/src/shaders/render/exa_wm_yuv_rgb.g6b
deleted file mode 100644
index d09ae00..0000000
--- a/src/shaders/render/exa_wm_yuv_rgb.g6b
+++ /dev/null
@@ -1,13 +0,0 @@
- { 0x00800040, 0x22c077bd, 0x008d01c0, 0x000000ec },
- { 0x00800040, 0x230077bd, 0x008d0200, 0x000000fc },
- { 0x00800040, 0x234077bd, 0x008d0240, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d02c0, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d0300, 0x000000e4 },
- { 0x80800048, 0x21c077bd, 0x008d0340, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d02c0, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d0300, 0x000000f4 },
- { 0x80800048, 0x220077bd, 0x008d0340, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d02c0, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d0300, 0x00000104 },
- { 0x80800048, 0x224077bd, 0x008d0340, 0x00000108 },
- { 0x00800001, 0x228003fd, 0x00000000, 0x3f800000 },
diff --git a/src/shaders/render/exa_wm_yuv_rgb.g7a b/src/shaders/render/exa_wm_yuv_rgb.g7a
deleted file mode 100644
index ede0298..0000000
--- a/src/shaders/render/exa_wm_yuv_rgb.g7a
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright © 2006-2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Keith Packard <keithp@keithp.com>
- * Eric Anholt <eric@anholt.net>
- *
- */
-
-include(`exa_wm.g4i')
-include(`exa_yuv_gen6.g4i')
-include(`exa_yuv_rgb.gxa')
diff --git a/src/shaders/render/exa_wm_yuv_rgb.g7b b/src/shaders/render/exa_wm_yuv_rgb.g7b
deleted file mode 100644
index d09ae00..0000000
--- a/src/shaders/render/exa_wm_yuv_rgb.g7b
+++ /dev/null
@@ -1,13 +0,0 @@
- { 0x00800040, 0x22c077bd, 0x008d01c0, 0x000000ec },
- { 0x00800040, 0x230077bd, 0x008d0200, 0x000000fc },
- { 0x00800040, 0x234077bd, 0x008d0240, 0x0000010c },
- { 0x00800041, 0x240077bc, 0x008d02c0, 0x000000e0 },
- { 0x00800048, 0x240077bc, 0x008d0300, 0x000000e4 },
- { 0x80800048, 0x21c077bd, 0x008d0340, 0x000000e8 },
- { 0x00800041, 0x240077bc, 0x008d02c0, 0x000000f0 },
- { 0x00800048, 0x240077bc, 0x008d0300, 0x000000f4 },
- { 0x80800048, 0x220077bd, 0x008d0340, 0x000000f8 },
- { 0x00800041, 0x240077bc, 0x008d02c0, 0x00000100 },
- { 0x00800048, 0x240077bc, 0x008d0300, 0x00000104 },
- { 0x80800048, 0x224077bd, 0x008d0340, 0x00000108 },
- { 0x00800001, 0x228003fd, 0x00000000, 0x3f800000 },
diff --git a/src/shaders/render/exa_wm_yuv_rgb.g8a b/src/shaders/render/exa_wm_yuv_rgb.g8a
deleted file mode 100644
index 9da53c8..0000000
--- a/src/shaders/render/exa_wm_yuv_rgb.g8a
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Keith Packard <keithp@keithp.com>
- * Eric Anholt <eric@anholt.net>
- * Zhao Yakui <yakui.zhao@intel.com>
- *
- */
-
-include(`exa_wm.g4i')
-include(`exa_yuv_gen6.g4i')
-include(`exa_yuv_rgb.gxa')
diff --git a/src/shaders/render/exa_wm_yuv_rgb.g8b b/src/shaders/render/exa_wm_yuv_rgb.g8b
deleted file mode 100644
index 6b6b4d1..0000000
--- a/src/shaders/render/exa_wm_yuv_rgb.g8b
+++ /dev/null
@@ -1,13 +0,0 @@
- { 0x00800040, 0x22c03ae8, 0x3a8d01c0, 0x000000ec },
- { 0x00800040, 0x23003ae8, 0x3a8d0200, 0x000000fc },
- { 0x00800040, 0x23403ae8, 0x3a8d0240, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d02c0, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d0300, 0x000000e4 },
- { 0x80800048, 0x21c03ae8, 0x3a8d0340, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d02c0, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d0300, 0x000000f4 },
- { 0x80800048, 0x22003ae8, 0x3a8d0340, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d02c0, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d0300, 0x00000104 },
- { 0x80800048, 0x22403ae8, 0x3a8d0340, 0x00000108 },
- { 0x00800001, 0x22803ee8, 0x38000000, 0x3f800000 },
diff --git a/src/shaders/render/exa_wm_yuv_rgb.g9a b/src/shaders/render/exa_wm_yuv_rgb.g9a
deleted file mode 100644
index e5f82c6..0000000
--- a/src/shaders/render/exa_wm_yuv_rgb.g9a
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Keith Packard <keithp@keithp.com>
- * Eric Anholt <eric@anholt.net>
- * Zhao Yakui <yakui.zhao@intel.com>
- *
- */
-
-include(`exa_wm.g4i')
-include(`exa_yuv_gen6.g4i')
-include(`exa_yuv_rgb.gxa')
diff --git a/src/shaders/render/exa_wm_yuv_rgb.g9b b/src/shaders/render/exa_wm_yuv_rgb.g9b
deleted file mode 100644
index 6b6b4d1..0000000
--- a/src/shaders/render/exa_wm_yuv_rgb.g9b
+++ /dev/null
@@ -1,13 +0,0 @@
- { 0x00800040, 0x22c03ae8, 0x3a8d01c0, 0x000000ec },
- { 0x00800040, 0x23003ae8, 0x3a8d0200, 0x000000fc },
- { 0x00800040, 0x23403ae8, 0x3a8d0240, 0x0000010c },
- { 0x00800041, 0x24003ae0, 0x3a8d02c0, 0x000000e0 },
- { 0x00800048, 0x24003ae0, 0x3a8d0300, 0x000000e4 },
- { 0x80800048, 0x21c03ae8, 0x3a8d0340, 0x000000e8 },
- { 0x00800041, 0x24003ae0, 0x3a8d02c0, 0x000000f0 },
- { 0x00800048, 0x24003ae0, 0x3a8d0300, 0x000000f4 },
- { 0x80800048, 0x22003ae8, 0x3a8d0340, 0x000000f8 },
- { 0x00800041, 0x24003ae0, 0x3a8d02c0, 0x00000100 },
- { 0x00800048, 0x24003ae0, 0x3a8d0300, 0x00000104 },
- { 0x80800048, 0x22403ae8, 0x3a8d0340, 0x00000108 },
- { 0x00800001, 0x22803ee8, 0x38000000, 0x3f800000 },
diff --git a/src/shaders/render/exa_yuv_gen4.g4i b/src/shaders/render/exa_yuv_gen4.g4i
deleted file mode 100644
index 5a66616..0000000
--- a/src/shaders/render/exa_yuv_gen4.g4i
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- */
-
-/* YUV to RGB matrix coeff */
-
-define(`coef_ry', `g3.0<0,1,0>F')
-define(`coef_ru', `g3.4<0,1,0>F')
-define(`coef_rv', `g3.8<0,1,0>F')
-define(`coef_yd', `g3.12<0,1,0>F')
-
-define(`coef_gy', `g3.16<0,1,0>F')
-define(`coef_gu', `g3.20<0,1,0>F')
-define(`coef_gv', `g3.24<0,1,0>F')
-define(`coef_ud', `g3.28<0,1,0>F')
-
-define(`coef_by', `g4.0<0,1,0>F')
-define(`coef_bu', `g4.4<0,1,0>F')
-define(`coef_bv', `g4.8<0,1,0>F')
-define(`coef_vd', `g4.12<0,1,0>F')
diff --git a/src/shaders/render/exa_yuv_gen6.g4i b/src/shaders/render/exa_yuv_gen6.g4i
deleted file mode 100644
index a8d69ee..0000000
--- a/src/shaders/render/exa_yuv_gen6.g4i
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- */
-/* YUV to RGB matrix coeff */
-
-
-define(`coef_ry', `g7.0<0,1,0>F')
-define(`coef_ru', `g7.4<0,1,0>F')
-define(`coef_rv', `g7.8<0,1,0>F')
-define(`coef_yd', `g7.12<0,1,0>F')
-
-define(`coef_gy', `g7.16<0,1,0>F')
-define(`coef_gu', `g7.20<0,1,0>F')
-define(`coef_gv', `g7.24<0,1,0>F')
-define(`coef_ud', `g7.28<0,1,0>F')
-
-define(`coef_by', `g8.0<0,1,0>F')
-define(`coef_bu', `g8.4<0,1,0>F')
-define(`coef_bv', `g8.8<0,1,0>F')
-define(`coef_vd', `g8.12<0,1,0>F')
diff --git a/src/shaders/render/exa_yuv_rgb.gxa b/src/shaders/render/exa_yuv_rgb.gxa
deleted file mode 100644
index 656ae73..0000000
--- a/src/shaders/render/exa_yuv_rgb.gxa
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- */
-
-define(`YCbCr_base', `src_sample_base')
-
-define(`Cr', `src_sample_b')
-define(`Cr_01', `src_sample_b_01')
-define(`Cr_23', `src_sample_b_23')
-
-define(`Y', `src_sample_r')
-define(`Y_01', `src_sample_r_01')
-define(`Y_23', `src_sample_r_23')
-
-define(`Cb', `src_sample_g')
-define(`Cb_01', `src_sample_g_01')
-define(`Cb_23', `src_sample_g_23')
-
-define(`Crn', `mask_sample_b')
-define(`Crn_01', `mask_sample_b_01')
-define(`Crn_23', `mask_sample_b_23')
-
-define(`Yn', `mask_sample_r')
-define(`Yn_01', `mask_sample_r_01')
-define(`Yn_23', `mask_sample_r_23')
-
-define(`Cbn', `mask_sample_g')
-define(`Cbn_01', `mask_sample_g_01')
-define(`Cbn_23', `mask_sample_g_23')
-
-add (16) Yn<1>F Y<8,8,1>F coef_yd { compr align1 };
-
-add (16) Cbn<1>F Cb<8,8,1>F coef_ud { compr align1 };
-
-add (16) Crn<1>F Cr<8,8,1>F coef_vd { compr align1 };
-
-mul (16) acc0<1>F Yn<8,8,1>F coef_ry { compr align1 };
-mac (16) acc0<1>F Cbn<8,8,1>F coef_ru { compr align1 };
-mac.sat (16) src_sample_r<1>F Crn<8,8,1>F coef_rv { compr align1 };
-
-mul (16) acc0<1>F Yn<8,8,1>F coef_gy { compr align1 };
-mac (16) acc0<1>F Cbn<8,8,1>F coef_gu { compr align1 };
-mac.sat(16) src_sample_g<1>F Crn<8,8,1>F coef_gv { compr align1 };
-
-mul (16) acc0<1>F Yn<8,8,1>F coef_by { compr align1 };
-mac (16) acc0<1>F Cbn<8,8,1>F coef_bu { compr align1 };
-mac.sat(16) src_sample_b<1>F Crn<8,8,1>F coef_bv { compr align1 };
-
- /*
- * A = 1.0
- */
-mov (16) src_sample_a<1>F 1.0F { compr align1 };
diff --git a/src/shaders/utils/Makefile.am b/src/shaders/utils/Makefile.am
deleted file mode 100644
index 1bffbb8..0000000
--- a/src/shaders/utils/Makefile.am
+++ /dev/null
@@ -1,116 +0,0 @@
-MFC_CORE = \
- end_thread.asm \
- mfc_batchbuffer_head.asm \
- mfc_batchbuffer_tail.asm
-MFC_CORE_AVC = \
- mfc_batchbuffer_avc_intra.asm \
- mfc_batchbuffer_avc_inter.asm
-
-MFC_CORE_HSW = \
- mfc_batchbuffer_hsw.asm
-
-INTEL_G6B = mfc_batchbuffer_avc_intra.g6b mfc_batchbuffer_avc_inter.g6b
-INTEL_G6A = mfc_batchbuffer_avc_intra.g6a mfc_batchbuffer_avc_inter.g6a
-INTEL_GEN6_INC = mfc_batchbuffer.inc
-INTEL_GEN6_ASM = $(INTEL_G6A:%.g6a=%.gen6.asm)
-
-INTEL_G7B = mfc_batchbuffer_avc_intra.g7b mfc_batchbuffer_avc_inter.g7b
-INTEL_G7A = mfc_batchbuffer_avc_intra.g7a mfc_batchbuffer_avc_inter.g7a
-INTEL_GEN7_INC = mfc_batchbuffer.inc
-INTEL_GEN7_ASM = $(INTEL_G7A:%.g7a=%.gen7.asm)
-
-INTEL_G75B = mfc_batchbuffer_hsw.g75b
-INTEL_G75A = mfc_batchbuffer_hsw.g75a
-INTEL_GEN75_INC = mfc_batchbuffer_hsw.inc
-INTEL_GEN75_ASM = $(INTEL_G75A:%.g75a=%.gen75.asm)
-
-INTEL_G8B = mfc_batchbuffer_hsw.g8b
-INTEL_G8A = mfc_batchbuffer_hsw.g8a
-INTEL_GEN8_INC = mfc_batchbuffer_hsw.inc
-INTEL_GEN8_ASM = $(INTEL_G9A:%.g9a=%.gen8.asm)
-
-INTEL_G9B = mfc_batchbuffer_hsw.g9b
-INTEL_G9A = mfc_batchbuffer_hsw.g9a
-INTEL_GEN9_INC = mfc_batchbuffer_hsw.inc
-INTEL_GEN9_ASM = $(INTEL_G9A:%.g9a=%.gen9.asm)
-
-TARGETS =
-if HAVE_GEN4ASM
-TARGETS += $(INTEL_G6B)
-TARGETS += $(INTEL_G7B)
-TARGETS += $(INTEL_G75B)
-TARGETS += $(INTEL_G8B)
-TARGETS += $(INTEL_G9B)
-endif
-
-all-local: $(TARGETS)
-
-SUFFIXES = .g6a .g6b .g7a .g7b .gen6.asm .gen7.asm .g75a .g75b .gen75.asm .g9a .g9b .gen9.asm .g8a .g8b .gen8.asm
-
-if HAVE_GEN4ASM
-$(INTEL_GEN6_ASM): $(MFC_CORE) $(MFC_CORE_AVC) $(INTEL_GEN6_INC)
-.g6a.gen6.asm:
- $(AM_V_GEN)cpp -P -DDEV_SNB $< > _mfc0.$@ && \
- m4 _mfc0.$@ > $@ && \
- rm _mfc0.$@
-.gen6.asm.g6b:
- $(AM_V_GEN)$(GEN4ASM) -g 6 -o $@ $<
-
-$(INTEL_GEN7_ASM): $(MFC_CORE) $(MFC_CORE_AVC) $(INTEL_GEN7_INC)
-.g7a.gen7.asm:
- $(AM_V_GEN)cpp -P -DDEV_IVB $< > _mfc0.$@ && \
- m4 _mfc0.$@ > $@ && \
- rm _mfc0.$@
-.gen7.asm.g7b:
- $(AM_V_GEN)$(GEN4ASM) -g 7 -o $@ $<
-
-$(INTEL_GEN75_ASM): $(MFC_CORE_HSW) $(INTEL_GEN75_INC)
-.g75a.gen75.asm:
- $(AM_V_GEN)cpp -P $< > _mfc0.$@ && \
- m4 _mfc0.$@ > $@ && \
- rm _mfc0.$@
-.gen75.asm.g75b:
- $(AM_V_GEN)$(GEN4ASM) -g 7.5 -o $@ $<
-
-$(INTEL_GEN8_ASM): $(MFC_CORE_HSW) $(INTEL_GEN8_INC)
-.g8a.gen8.asm:
- $(AM_V_GEN)cpp -P $< > _mfc0.$@ && \
- m4 _mfc0.$@ > $@ && \
- rm _mfc0.$@
-.gen8.asm.g8b:
- $(AM_V_GEN)$(GEN4ASM) -g 8 -o $@ $<
-
-$(INTEL_GEN9_ASM): $(MFC_CORE_HSW) $(INTEL_GEN8_INC)
-.g9a.gen9.asm:
- $(AM_V_GEN)cpp -P $< > _mfc0.$@ && \
- m4 _mfc0.$@ > $@ && \
- rm _mfc0.$@
-.gen9.asm.g9b:
- $(AM_V_GEN)$(GEN4ASM) -g 9 -o $@ $<
-
-endif
-
-CLEANFILES = $(INTEL_GEN6_ASM) $(INTEL_GEN7_ASM) $(INTEL_GEN75_ASM) $(INTEL_GEN9_ASM) $(INTEL_GEN8_ASM)
-
-EXTRA_DIST = \
- $(INTEL_G6A) \
- $(INTEL_G6B) \
- $(INTEL_G7A) \
- $(INTEL_G7B) \
- $(INTEL_G75A) \
- $(INTEL_G75B) \
- $(INTEL_GEN6_INC) \
- $(INTEL_GEN7_INC) \
- $(INTEL_GEN75_INC) \
- $(INTEL_G8A) \
- $(INTEL_G8B) \
- $(INTEL_G9A) \
- $(INTEL_G9B) \
- $(INTEL_GEN9_INC) \
- $(MFC_CORE) \
- $(MFC_CORE_AVC) \
- $(MFC_CORE_HSW) \
- $(NULL)
-
-# Extra clean files so that maintainer-clean removes *everything*
-MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/shaders/utils/end_thread.asm b/src/shaders/utils/end_thread.asm
deleted file mode 100644
index c299d28..0000000
--- a/src/shaders/utils/end_thread.asm
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- */
-
-__EXIT:
- mov (8) msg_reg0<1>:ud r0<8,8,1>:ud {align1} ;
- send (16) msg_ind acc0<1>ud null thread_spawner(0, 0, 1) mlen 1 rlen 0 {align1 EOT} ;
diff --git a/src/shaders/utils/mfc_batchbuffer.inc b/src/shaders/utils/mfc_batchbuffer.inc
deleted file mode 100644
index c3a0fec..0000000
--- a/src/shaders/utils/mfc_batchbuffer.inc
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- */
-
-define(`BIND_IDX_VME_OUTPUT', `0')
-define(`BIND_IDX_MFC_SLICE_HEADER', `1')
-define(`BIND_IDX_MFC_BATCHBUFFER', `2')
-
-define(`INTRAMBFLAG_MASK', `0x00002000')
-
-#ifdef DEV_SNB
-
-define(`OB_CACHE_TYPE', `5')
-
-#else
-
-define(`OB_CACHE_TYPE', `10')
-
-#endif
-
-define(`OB_READ', `0')
-define(`OB_WRITE', `8')
-
-define(`OB_CONTROL_0', `0') /* 1 OWord, low 128 bits */
-define(`OB_CONTROL_1', `1') /* 1 OWord, high 128 bits */
-define(`OB_CONTROL_2', `2') /* 2 OWords */
-define(`OB_CONTROL_3', `3') /* 4 OWords */
-define(`OB_CONTROL_4', `4') /* 8 OWords */
-
-#ifdef DEV_SNB
-
-define(`OB_WRITE_COMMIT_CATEGORY', `1') /* write commit on Sandybrige */
-
-#else
-
-define(`OB_WRITE_COMMIT_CATEGORY', `0') /* category on Ivybridge */
-
-#endif
-
-define(`OB_HEADER_PRESENT', `1')
-
-define(`INTER_VME_OUTPUT_IN_BYTES', `160')
-define(`INTER_VME_OUTPUT_IN_OWS', `10')
-define(`INTER_VME_OUTPUT_MV_IN_OWS', `8')
-
-define(`MFC_AVC_PAK_OBJECT_INTRA_DW0', `0x71490009:UD')
-define(`MFC_AVC_PAK_OBJECT_INTRA_DW3', `0x000e0000:UD') /* CbpDC (1 << 19 | 1 << 18 | 1 << 17) */
-define(`MFC_AVC_PAK_OBJECT_INTRA_DW4', `0xFFFF0000:UD') /* CBP for Y */
-define(`MFC_AVC_PAK_OBJECT_INTRA_DW5', `0x000F000F:UD')
-define(`MFC_AVC_PAK_OBJECT_INTRA_DW6', `0x04000000:UD') /* the flag of the last macroblock */
-
-define(`MFC_AVC_PAK_OBJECT_INTER_DW0', `MFC_AVC_PAK_OBJECT_INTRA_DW0')
-define(`MFC_AVC_PAK_OBJECT_INTER_DW1', `0x20:UD') /* 32 MVs */
-define(`MFC_AVC_PAK_OBJECT_INTER_DW2', `INTER_VME_OUTPUT_IN_BYTES:UD') /* offset, in bytes */
-define(`MFC_AVC_PAK_OBJECT_INTER_DW3', `0x014e0000:UD') /*
- * (1 << 24) | PackedMvNum, Debug
- * (4 << 20) | 8 MV, SNB don't use it
- * (1 << 19) | CbpDcY
- * (1 << 18) | CbpDcU
- * (1 << 17) | CbpDcV
- * (0 << 15) | Transform8x8Flag = 0
- * (0 << 14) | Frame based
- * (0 << 13) | Inter MB
- * (1 << 8) | MbType = P_L0_16x16
- * (0 << 7) | MBZ for frame
- * (0 << 6) | MBZ
- * (2 << 4) | MBZ for inter
- * (0 << 3) | MBZ
- * (0 << 2) | SkipMbFlag
- * (0 << 0) InterMbMode
- */
-define(`MFC_AVC_PAK_OBJECT_INTER_DW4', `MFC_AVC_PAK_OBJECT_INTRA_DW4')
-define(`MFC_AVC_PAK_OBJECT_INTER_DW5', `MFC_AVC_PAK_OBJECT_INTRA_DW5')
-define(`MFC_AVC_PAK_OBJECT_INTER_DW6', `MFC_AVC_PAK_OBJECT_INTRA_DW6')
-
-define(`MI_BATCH_BUFFER_END', `0x05000000:UD')
-
-/* GRF registers
- * r0 header
- * r1~r4 constant buffer (reserved)
- * r5 inline data
- * r6~r7 reserved
- * r8~r15 temporary registers
- * r16 write back of Oword Block Write
- */
-/*
- * GRF 0 -- header
- */
-define(`thread_id_ub', `r0.20<0,1,0>:UB') /* thread id in payload */
-
-/*
- * GRF 1~4 -- Constant Buffer (reserved)
- */
-
-define(`FLAG_MASK_LAST_SLICE', `0x0001:uw')
-define(`FLAG_MASK_LAST_OBJECT', `0x0002:uw')
-define(`FLAG_MASK_FIRST_OBJECT', `0x0004:uw')
-
-/*
- * GRF 5 -- inline data
- */
-define(`inline_reg0', `r5')
-define(`head_offset', `inline_reg0.0') /* :ud, in units of Owords */
-define(`batchbuffer_offset', `inline_reg0.4') /* :ud, in units of Owords */
-define(`tail_size', `inline_reg0.8') /* :w, in units of Owords */
-define(`head_size', `inline_reg0.10') /* :w, in units of Owords */
-define(`flags', `inline_reg0.12') /* :uw,
- * bit0 the flag of the last slice
- * bit1 the flag of the last object in a slice
- * bit2 the flag of the first object in a slice
- */
-define(`total_mbs', `inline_reg0.14') /* :w, the number of macroblock commands
- * being processed by the kernel
- */
-define(`mb_x', `inline_reg0.16') /* :ub, */
-define(`mb_y', `inline_reg0.17') /* :ub, */
-define(`mb_xy', `inline_reg0.16') /* :uw, */
-define(`width_in_mb', `inline_reg0.20') /* :uw, the picture width in macroblocks */
-define(`qp', `inline_reg0.22') /* :ub, */
-define(`ref_idx0', `inline_reg0.24') /* :ud */
-define(`ref_idx1', `inline_reg0.28') /* :ud */
-
-/*
- * GRF 8~15 -- temporary registers
- */
-define(`tmp_reg0', `r8')
-define(`tmp_reg1', `r9')
-define(`tmp_reg2', `r10')
-define(`tmp_reg3', `r11')
-define(`tmp_reg4', `r12')
-define(`tmp_reg5', `r13')
-define(`tmp_reg6', `r14')
-define(`tmp_reg7', `r15')
-
-define(`tmp_vme_output', `tmp_reg0')
-define(`tmp_slice_header', `tmp_reg1')
-define(`tmp_mfc_batchbuffer', `tmp_reg2')
-define(`tmp_offset', `tmp_reg7')
-/*
- * GRF 16~23 write back for Oword Block Read message
- */
-define(`ob_read_wb', `r16<1>:uw')
-define(`ob_read_wb0', `r16')
-define(`ob_read_wb1', `r17')
-define(`ob_read_wb2', `r18')
-define(`ob_read_wb3', `r19')
-define(`ob_read_wb4', `r20')
-define(`ob_read_wb5', `r21')
-define(`ob_read_wb6', `r22')
-define(`ob_read_wb7', `r23')
-
-define(`ob_read_wb_len_slice_header', `1')
-define(`ob_read_wb_len_vme_intra', `1')
-define(`ob_read_wb_len_vme_inter', `1')
-
-#ifdef DEV_SNB
-
-/*
- * GRF 24~25 write back for Oword Block Write message
- */
-
-define(`ob_write_wb', `r24')
-define(`ob_write_wb_length', `1')
-
-#else
-
-/*
- * GRF 24~25 -- reserved
- */
-define(`ob_write_wb', `null<1>:W')
-define(`ob_write_wb_length', `0')
-
-#endif
-
-/*
- * GRF 26~27
- */
-define(`pak_object_ud', `r26.0')
-define(`pak_object0_ud', `r26.0')
-define(`pak_object1_ud', `r26.4')
-define(`pak_object2_ud', `r26.8')
-define(`pak_object3_ud', `r26.12')
-define(`pak_object4_ud', `r26.16')
-define(`pak_object5_ud', `r26.20')
-define(`pak_object6_ud', `r26.24')
-define(`pak_object7_ud', `r26.28')
-define(`pak_object8_ud', `r27.0')
-define(`pak_object9_ud', `r27.4')
-define(`pak_object10_ud', `r27.8')
-define(`pak_object11_ud', `r27.12')
-
-#ifdef DEV_SNB
-
-/*
- * Message Payload registers
- */
-define(`msg_ind', `0')
-define(`msg_reg0', `m0')
-define(`msg_reg1', `m1')
-define(`msg_reg2', `m2')
-define(`msg_reg3', `m3')
-define(`msg_reg4', `m4')
-define(`msg_reg5', `m5')
-define(`msg_reg6', `m6')
-define(`msg_reg7', `m7')
-define(`msg_reg8', `m8')
-
-#else
-
-/*
- * Message Payload registers
- */
-define(`msg_ind', `64')
-define(`msg_reg0', `g64')
-define(`msg_reg1', `g65')
-define(`msg_reg2', `g66')
-define(`msg_reg3', `g67')
-define(`msg_reg4', `g68')
-define(`msg_reg5', `g69')
-define(`msg_reg6', `g70')
-define(`msg_reg7', `g71')
-define(`msg_reg8', `g72')
-
-#endif
diff --git a/src/shaders/utils/mfc_batchbuffer_avc_inter.asm b/src/shaders/utils/mfc_batchbuffer_avc_inter.asm
deleted file mode 100644
index 549f021..0000000
--- a/src/shaders/utils/mfc_batchbuffer_avc_inter.asm
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- */
-
-__PAK_OBJECT:
- mul (1) tmp_offset.0<1>:ud width_in_mb<0,1,0>:uw mb_y<0,1,0>:ub {align1};
- add (1) tmp_offset.0<1>:ud tmp_offset.0<0,1,0>:ud mb_x<0,1,0>:ub {align1};
- /*
- * The layout of VME output
- * ++++++++++++++++++++++++++++++++++++++++++++++
- * | MV(128bytes) | other info (32bytes) |
- * ++++++++++++++++++++++++++++++++++++++++++++++
- */
- mul (1) tmp_vme_output.8<1>:ud tmp_offset.0<0,1,0>:ud INTER_VME_OUTPUT_IN_OWS:ud {align1} ; /* point to output buffer */
- add (1) tmp_vme_output.8<1>:ud tmp_vme_output.8<0,1,0>:ud INTER_VME_OUTPUT_MV_IN_OWS:uw {align1}; /* point to other info */
-
-__PAK_OBJECT_LOOP:
- /*
- * Read other info
- */
- mov (8) msg_reg0.0<1>:ud tmp_vme_output<8,8,1>:ud {align1} ;
-
-send (16)
- msg_ind
- ob_read_wb
- null
- data_port(
- OB_CACHE_TYPE,
- OB_READ,
- OB_CONTROL_2,
- BIND_IDX_VME_OUTPUT,
- OB_WRITE_COMMIT_CATEGORY,
- OB_HEADER_PRESENT
- )
- mlen 1
- rlen ob_read_wb_len_vme_inter
- {align1};
-
-
- /*
- * Fill the command
- */
- mov (16) pak_object_ud<1>:ud 0x0:ud {align1} ;
-
- and.z.f0.1 (1) null<1>:uw flags<0,1,0>:uw FLAG_MASK_LAST_OBJECT {align1};
-
- and.z.f0.0 (1) null<1>:ud ob_read_wb0.0<0,1,0>:ud INTRAMBFLAG_MASK:ud {align1} ;
-
- (-f0.0)jmpi (1) __FILL_INTRA_PAK_COMMAND ;
-
-__FILL_INTER_PAK_COMMAND:
- /* DW0 */
- mov (1) pak_object0_ud<1>:ud MFC_AVC_PAK_OBJECT_INTER_DW0 ;
-
- /* DW2 */
- mul (1) pak_object2_ud<1>:ud tmp_offset.0<0,1,0>:ud INTER_VME_OUTPUT_IN_BYTES:ud {align1} ;
-
- /* DW5 */
- mov (1) pak_object5_ud<1>:ud MFC_AVC_PAK_OBJECT_INTRA_DW5 ;
-
- /* DW1 must be 32 for 8 MVs and 128 for 32 MVs !!! */
- mov (1) pak_object1_ud<1>:ud ob_read_wb0.8<0,1,0>:ud {align1} ;
-
- /* DW3 */
- mov (1) pak_object3_ud<1>:ud ob_read_wb0.0<0,1,0>:ud {align1} ;
-
- /* DW4 */
- add (1) pak_object4_ud<1>:ud mb_xy<0,1,0>:uw MFC_AVC_PAK_OBJECT_INTER_DW4 {align1} ;
- add (1) mb_x<1>:ub mb_x<0,1,0>:ub 1:uw {align1};
- cmp.e.f0.0 (1) null<1>:uw width_in_mb<0,1,0>:uw mb_x<0,1,0>:ub {align1};
- (f0.0)mov (1) mb_x<1>:ub 0:uw {align1} ;
- (f0.0)add (1) mb_y<1>:ub mb_y<0,1,0>:ub 1:uw {align1} ;
-
- /* DW6 */
- mov (1) pak_object6_ud<1>:ud 0x0:ud {align1} ;
- (-f0.1)mov (1) pak_object6_ud<1>:ud MFC_AVC_PAK_OBJECT_INTER_DW6 {align1} ;
- cmp.e.f0.0 (1) null<1>:uw total_mbs<0,1,0>:uw 1:uw {align1};
- (-f0.0)mov (1) pak_object6_ud<1>:ud 0x0:ud {align1} ;
- add (1) pak_object6_ud<1>:ud pak_object6_ud<0,1,0>:ud qp<0,1,0>:ub {align1} ;
-
- /* DW7 */
- mov (1) pak_object7_ud<1>:ud ob_read_wb0.4<0,1,0>:ud {align1} ;
-
- /* DW8 */
- mov (1) pak_object8_ud<1>:ud ref_idx0<0,1,0>:ud {align1} ;
-
- /* DW9 */
- mov (1) pak_object9_ud<1>:ud ref_idx1<0,1,0>:ud {align1} ;
-
- jmpi (1) __OUTPUT_PAK_COMMAND ;
-
-__FILL_INTRA_PAK_COMMAND:
- /* DW0 */
- mov (1) pak_object0_ud<1>:ud MFC_AVC_PAK_OBJECT_INTRA_DW0 ;
-
- /* DW5 */
- mov (1) pak_object5_ud<1>:ud MFC_AVC_PAK_OBJECT_INTRA_DW5 ;
-
- /* DW4 */
- add (1) pak_object4_ud<1>:ud mb_xy<0,1,0>:uw MFC_AVC_PAK_OBJECT_INTRA_DW4 {align1} ;
- add (1) mb_x<1>:ub mb_x<0,1,0>:ub 1:uw {align1};
- cmp.e.f0.0 (1) null<1>:uw width_in_mb<0,1,0>:uw mb_x<0,1,0>:ub {align1};
- (f0.0)mov (1) mb_x<1>:ub 0:uw {align1} ;
- (f0.0)add (1) mb_y<1>:ub mb_y<0,1,0>:ub 1:uw {align1} ;
-
- /* DW6 */
- mov (1) pak_object6_ud<1>:ud 0x0:ud {align1} ;
- (-f0.1)mov (1) pak_object6_ud<1>:ud MFC_AVC_PAK_OBJECT_INTRA_DW6 {align1} ;
- cmp.e.f0.0 (1) null<1>:uw total_mbs<0,1,0>:uw 1:uw {align1};
- (-f0.0)mov (1) pak_object6_ud<1>:ud 0x0:ud {align1} ;
- add (1) pak_object6_ud<1>:ud pak_object6_ud<0,1,0>:ud qp<0,1,0>:ub {align1} ;
-
- /* DW3 */
- and (1) pak_object3_ud<1>:ud ob_read_wb0.0<0,1,0>:ud 0xFFFF {align1} ;
- add (1) pak_object3_ud<1>:ud pak_object3_ud<0,1,0>:ud MFC_AVC_PAK_OBJECT_INTRA_DW3 {align1} ;
-
- /* DW7 */
- mov (1) pak_object7_ud<1>:ud ob_read_wb0.4<0,1,0>:ud {align1} ;
-
- /* DW8 */
- mov (1) pak_object8_ud<1>:ud ob_read_wb0.8<0,1,0>:ud {align1} ;
-
- /* DW9 */
- and (1) pak_object9_ud<1>:ud ob_read_wb0.12<0,1,0>:ud 0xFC:ud {align1} ;
-
-__OUTPUT_PAK_COMMAND:
- mov (8) msg_reg0.0<1>:ud tmp_mfc_batchbuffer<8,8,1>:ud {align1} ;
- mov (8) msg_reg1.0<1>:ud pak_object_ud<8,8,1>:ud {align1} ;
- mov (8) msg_reg2.0<1>:ud pak_object8_ud<8,8,1>:ud {align1} ;
-
- /* point to the next other info block */
- add (1) tmp_vme_output.8<1>:ud tmp_vme_output.8<0,1,0>:ud INTER_VME_OUTPUT_IN_OWS:ud {align1} ;
-
-send (16)
- msg_ind
- ob_write_wb
- null
- data_port(
- OB_CACHE_TYPE,
- OB_WRITE,
- OB_CONTROL_3,
- BIND_IDX_MFC_BATCHBUFFER,
- OB_WRITE_COMMIT_CATEGORY,
- OB_HEADER_PRESENT
- )
- mlen 3
- rlen ob_write_wb_length
- {align1};
-
- /* the new offset */
- add (1) tmp_mfc_batchbuffer.8<1>:ud tmp_mfc_batchbuffer.8<0,1,0>:ud 4:ud {align1} ;
- add (1) tmp_offset.0<1>:ud tmp_offset.0<0,1,0>:ud 1:ud {align1};
-
- add.z.f0.0 (1) total_mbs<1>:w total_mbs<0,1,0>:w -1:w {align1};
- (-f0.0)jmpi (1) __PAK_OBJECT_LOOP ;
-
diff --git a/src/shaders/utils/mfc_batchbuffer_avc_inter.g6a b/src/shaders/utils/mfc_batchbuffer_avc_inter.g6a
deleted file mode 100644
index bef586a..0000000
--- a/src/shaders/utils/mfc_batchbuffer_avc_inter.g6a
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- */
-
-#include "mfc_batchbuffer.inc"
-#include "mfc_batchbuffer_head.asm"
-#include "mfc_batchbuffer_avc_inter.asm"
-#include "mfc_batchbuffer_tail.asm"
-#include "end_thread.asm"
-
diff --git a/src/shaders/utils/mfc_batchbuffer_avc_inter.g6b b/src/shaders/utils/mfc_batchbuffer_avc_inter.g6b
deleted file mode 100644
index 24b268f..0000000
--- a/src/shaders/utils/mfc_batchbuffer_avc_inter.g6b
+++ /dev/null
@@ -1,90 +0,0 @@
- { 0x00800001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x21340231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x21280021, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x21540231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x21480021, 0x000000a4, 0x00000000 },
- { 0x01000005, 0x20002d28, 0x000000ac, 0x00040004 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000012 },
- { 0x00600001, 0x20000022, 0x008d0120, 0x00000000 },
- { 0x05800031, 0x22001cc9, 0x00000000, 0x021a0001 },
- { 0x00600001, 0x20000022, 0x008d0140, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0200, 0x00000000 },
- { 0x05800031, 0x23001cdd, 0x00000000, 0x041b0002 },
- { 0x00000040, 0x21280c21, 0x00000128, 0x00000001 },
- { 0x00000040, 0x21480c21, 0x00000148, 0x00000001 },
- { 0x01000040, 0x20aa3dad, 0x000000aa, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0xffffffee },
- { 0x00000041, 0x21e04521, 0x000000b4, 0x000000b1 },
- { 0x00000040, 0x21e04421, 0x000001e0, 0x000000b0 },
- { 0x00000041, 0x21080c21, 0x000001e0, 0x0000000a },
- { 0x00000040, 0x21082c21, 0x00000108, 0x00080008 },
- { 0x00600001, 0x20000022, 0x008d0100, 0x00000000 },
- { 0x05800031, 0x22001cc9, 0x00000000, 0x021a0200 },
- { 0x00800001, 0x23400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002d28, 0x020000ac, 0x00020002 },
- { 0x01000005, 0x20000c20, 0x00000200, 0x00002000 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000026 },
- { 0x00000001, 0x23400061, 0x00000000, 0x71490009 },
- { 0x00000041, 0x23480c21, 0x000001e0, 0x000000a0 },
- { 0x00000001, 0x23540061, 0x00000000, 0x000f000f },
- { 0x00000001, 0x23440021, 0x00000208, 0x00000000 },
- { 0x00000001, 0x234c0021, 0x00000200, 0x00000000 },
- { 0x00000040, 0x23500d21, 0x000000b0, 0xffff0000 },
- { 0x00000040, 0x20b02e31, 0x000000b0, 0x00010001 },
- { 0x01000010, 0x20004528, 0x000000b4, 0x000000b0 },
- { 0x00010001, 0x20b00171, 0x00000000, 0x00000000 },
- { 0x00010040, 0x20b12e31, 0x000000b1, 0x00010001 },
- { 0x00000001, 0x23580061, 0x00000000, 0x00000000 },
- { 0x00110001, 0x23580061, 0x02000000, 0x04000000 },
- { 0x01000010, 0x20002d28, 0x000000ae, 0x00010001 },
- { 0x00110001, 0x23580061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23584421, 0x00000358, 0x000000b6 },
- { 0x00000001, 0x235c0021, 0x00000204, 0x00000000 },
- { 0x00000001, 0x23600021, 0x000000b8, 0x00000000 },
- { 0x00000001, 0x23640021, 0x000000bc, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x00000001, 0x23400061, 0x00000000, 0x71490009 },
- { 0x00000001, 0x23540061, 0x00000000, 0x000f000f },
- { 0x00000040, 0x23500d21, 0x000000b0, 0xffff0000 },
- { 0x00000040, 0x20b02e31, 0x000000b0, 0x00010001 },
- { 0x01000010, 0x20004528, 0x000000b4, 0x000000b0 },
- { 0x00010001, 0x20b00171, 0x00000000, 0x00000000 },
- { 0x00010040, 0x20b12e31, 0x000000b1, 0x00010001 },
- { 0x00000001, 0x23580061, 0x00000000, 0x00000000 },
- { 0x00110001, 0x23580061, 0x02000000, 0x04000000 },
- { 0x01000010, 0x20002d28, 0x000000ae, 0x00010001 },
- { 0x00110001, 0x23580061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23584421, 0x00000358, 0x000000b6 },
- { 0x00000005, 0x234c1c21, 0x00000200, 0x0000ffff },
- { 0x00000040, 0x234c0c21, 0x0000034c, 0x000e0000 },
- { 0x00000001, 0x235c0021, 0x00000204, 0x00000000 },
- { 0x00000001, 0x23600021, 0x00000208, 0x00000000 },
- { 0x00000005, 0x23640c21, 0x0000020c, 0x000000fc },
- { 0x00600001, 0x20000022, 0x008d0140, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0340, 0x00000000 },
- { 0x00600001, 0x20400022, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x21080c21, 0x00000108, 0x0000000a },
- { 0x05800031, 0x23001cdd, 0x00000000, 0x061b0302 },
- { 0x00000040, 0x21480c21, 0x00000148, 0x00000004 },
- { 0x00000040, 0x21e00c21, 0x000001e0, 0x00000001 },
- { 0x01000040, 0x20ae3dad, 0x000000ae, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0xffffff9a },
- { 0x00010020, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x00600001, 0x20000022, 0x008d0120, 0x00000000 },
- { 0x05800031, 0x22001cc9, 0x00000000, 0x021a0001 },
- { 0x00600001, 0x20000022, 0x008d0140, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0200, 0x00000000 },
- { 0x05800031, 0x23001cdd, 0x00000000, 0x041b0002 },
- { 0x00000040, 0x21280c21, 0x00000128, 0x00000001 },
- { 0x00000040, 0x21480c21, 0x00000148, 0x00000001 },
- { 0x01000040, 0x20a83dad, 0x000000a8, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0xffffffee },
- { 0x01000005, 0x20002d28, 0x000000ac, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
- { 0x00600001, 0x20000022, 0x008d0140, 0x00000000 },
- { 0x00400001, 0x20200062, 0x00000000, 0x00000000 },
- { 0x00000001, 0x20240062, 0x00000000, 0x05000000 },
- { 0x05800031, 0x23001cdd, 0x00000000, 0x041b0002 },
- { 0x00600001, 0x20000022, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24001cc0, 0x00000000, 0x82000010 },
diff --git a/src/shaders/utils/mfc_batchbuffer_avc_inter.g7a b/src/shaders/utils/mfc_batchbuffer_avc_inter.g7a
deleted file mode 100644
index bef586a..0000000
--- a/src/shaders/utils/mfc_batchbuffer_avc_inter.g7a
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- */
-
-#include "mfc_batchbuffer.inc"
-#include "mfc_batchbuffer_head.asm"
-#include "mfc_batchbuffer_avc_inter.asm"
-#include "mfc_batchbuffer_tail.asm"
-#include "end_thread.asm"
-
diff --git a/src/shaders/utils/mfc_batchbuffer_avc_inter.g7b b/src/shaders/utils/mfc_batchbuffer_avc_inter.g7b
deleted file mode 100644
index f0e2012..0000000
--- a/src/shaders/utils/mfc_batchbuffer_avc_inter.g7b
+++ /dev/null
@@ -1,90 +0,0 @@
- { 0x00800001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x21340231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x21280021, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x21540231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x21480021, 0x000000a4, 0x00000000 },
- { 0x01000005, 0x20002d28, 0x000000ac, 0x00040004 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000012 },
- { 0x00600001, 0x28000021, 0x008d0120, 0x00000000 },
- { 0x0a800031, 0x22001ca9, 0x00000800, 0x02180001 },
- { 0x00600001, 0x28000021, 0x008d0140, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0200, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0002 },
- { 0x00000040, 0x21280c21, 0x00000128, 0x00000001 },
- { 0x00000040, 0x21480c21, 0x00000148, 0x00000001 },
- { 0x01000040, 0x20aa3dad, 0x000000aa, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0xffffffee },
- { 0x00000041, 0x21e04521, 0x000000b4, 0x000000b1 },
- { 0x00000040, 0x21e04421, 0x000001e0, 0x000000b0 },
- { 0x00000041, 0x21080c21, 0x000001e0, 0x0000000a },
- { 0x00000040, 0x21082c21, 0x00000108, 0x00080008 },
- { 0x00600001, 0x28000021, 0x008d0100, 0x00000000 },
- { 0x0a800031, 0x22001ca9, 0x00000800, 0x02180200 },
- { 0x00800001, 0x23400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002d28, 0x020000ac, 0x00020002 },
- { 0x01000005, 0x20000c20, 0x00000200, 0x00002000 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000026 },
- { 0x00000001, 0x23400061, 0x00000000, 0x71490009 },
- { 0x00000041, 0x23480c21, 0x000001e0, 0x000000a0 },
- { 0x00000001, 0x23540061, 0x00000000, 0x000f000f },
- { 0x00000001, 0x23440021, 0x00000208, 0x00000000 },
- { 0x00000001, 0x234c0021, 0x00000200, 0x00000000 },
- { 0x00000040, 0x23500d21, 0x000000b0, 0xffff0000 },
- { 0x00000040, 0x20b02e31, 0x000000b0, 0x00010001 },
- { 0x01000010, 0x20004528, 0x000000b4, 0x000000b0 },
- { 0x00010001, 0x20b00171, 0x00000000, 0x00000000 },
- { 0x00010040, 0x20b12e31, 0x000000b1, 0x00010001 },
- { 0x00000001, 0x23580061, 0x00000000, 0x00000000 },
- { 0x00110001, 0x23580061, 0x02000000, 0x04000000 },
- { 0x01000010, 0x20002d28, 0x000000ae, 0x00010001 },
- { 0x00110001, 0x23580061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23584421, 0x00000358, 0x000000b6 },
- { 0x00000001, 0x235c0021, 0x00000204, 0x00000000 },
- { 0x00000001, 0x23600021, 0x000000b8, 0x00000000 },
- { 0x00000001, 0x23640021, 0x000000bc, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x00000001, 0x23400061, 0x00000000, 0x71490009 },
- { 0x00000001, 0x23540061, 0x00000000, 0x000f000f },
- { 0x00000040, 0x23500d21, 0x000000b0, 0xffff0000 },
- { 0x00000040, 0x20b02e31, 0x000000b0, 0x00010001 },
- { 0x01000010, 0x20004528, 0x000000b4, 0x000000b0 },
- { 0x00010001, 0x20b00171, 0x00000000, 0x00000000 },
- { 0x00010040, 0x20b12e31, 0x000000b1, 0x00010001 },
- { 0x00000001, 0x23580061, 0x00000000, 0x00000000 },
- { 0x00110001, 0x23580061, 0x02000000, 0x04000000 },
- { 0x01000010, 0x20002d28, 0x000000ae, 0x00010001 },
- { 0x00110001, 0x23580061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23584421, 0x00000358, 0x000000b6 },
- { 0x00000005, 0x234c1c21, 0x00000200, 0x0000ffff },
- { 0x00000040, 0x234c0c21, 0x0000034c, 0x000e0000 },
- { 0x00000001, 0x235c0021, 0x00000204, 0x00000000 },
- { 0x00000001, 0x23600021, 0x00000208, 0x00000000 },
- { 0x00000005, 0x23640c21, 0x0000020c, 0x000000fc },
- { 0x00600001, 0x28000021, 0x008d0140, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0340, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x21080c21, 0x00000108, 0x0000000a },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x060a0302 },
- { 0x00000040, 0x21480c21, 0x00000148, 0x00000004 },
- { 0x00000040, 0x21e00c21, 0x000001e0, 0x00000001 },
- { 0x01000040, 0x20ae3dad, 0x000000ae, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0xffffff9a },
- { 0x00010020, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x00600001, 0x28000021, 0x008d0120, 0x00000000 },
- { 0x0a800031, 0x22001ca9, 0x00000800, 0x02180001 },
- { 0x00600001, 0x28000021, 0x008d0140, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0200, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0002 },
- { 0x00000040, 0x21280c21, 0x00000128, 0x00000001 },
- { 0x00000040, 0x21480c21, 0x00000148, 0x00000001 },
- { 0x01000040, 0x20a83dad, 0x000000a8, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0xffffffee },
- { 0x01000005, 0x20002d28, 0x000000ac, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
- { 0x00600001, 0x28000021, 0x008d0140, 0x00000000 },
- { 0x00400001, 0x28200061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x28240061, 0x00000000, 0x05000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0002 },
- { 0x00600001, 0x28000021, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24001ca0, 0x00000800, 0x82000010 },
diff --git a/src/shaders/utils/mfc_batchbuffer_avc_intra.asm b/src/shaders/utils/mfc_batchbuffer_avc_intra.asm
deleted file mode 100644
index 838ab13..0000000
--- a/src/shaders/utils/mfc_batchbuffer_avc_intra.asm
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- */
-
-__PAK_OBJECT:
- mul (1) tmp_vme_output.8<1>:ud width_in_mb<0,1,0>:uw mb_y<0,1,0>:ub {align1};
- add (1) tmp_vme_output.8<1>:ud tmp_vme_output.8<0,1,0>:ud mb_x<0,1,0>:ub {align1};
-
- mov (16) pak_object_ud<1>:ud 0x0:ud {align1} ;
- mov (1) pak_object0_ud<1>:ud MFC_AVC_PAK_OBJECT_INTRA_DW0 ;
- mov (1) pak_object5_ud<1>:ud MFC_AVC_PAK_OBJECT_INTRA_DW5 ;
-
- and.z.f0.1 (1) null<1>:uw flags<0,1,0>:uw FLAG_MASK_LAST_OBJECT {align1};
-
-__PAK_OBJECT_LOOP:
- mov (8) msg_reg0.0<1>:ud tmp_vme_output<8,8,1>:ud {align1} ;
-
-send (16)
- msg_ind
- ob_read_wb
- null
- data_port(
- OB_CACHE_TYPE,
- OB_READ,
- OB_CONTROL_0,
- BIND_IDX_VME_OUTPUT,
- OB_WRITE_COMMIT_CATEGORY,
- OB_HEADER_PRESENT
- )
- mlen 1
- rlen ob_read_wb_len_vme_intra
- {align1};
-
- /* DW4 */
- add (1) pak_object4_ud<1>:ud mb_xy<0,1,0>:uw MFC_AVC_PAK_OBJECT_INTRA_DW4 {align1} ;
- add (1) mb_x<1>:ub mb_x<0,1,0>:ub 1:uw {align1};
- cmp.e.f0.0 (1) null<1>:uw width_in_mb<0,1,0>:uw mb_x<0,1,0>:ub {align1};
- (f0.0)mov (1) mb_x<1>:ub 0:uw {align1} ;
- (f0.0)add (1) mb_y<1>:ub mb_y<0,1,0>:ub 1:uw {align1} ;
-
- /* DW6 */
- mov (1) pak_object6_ud<1>:ud 0x0:ud {align1} ;
- (-f0.1)mov (1) pak_object6_ud<1>:ud MFC_AVC_PAK_OBJECT_INTRA_DW6 {align1} ;
- cmp.e.f0.0 (1) null<1>:uw total_mbs<0,1,0>:uw 1:uw {align1};
- (-f0.0)mov (1) pak_object6_ud<1>:ud 0x0:ud {align1} ;
- add (1) pak_object6_ud<1>:ud pak_object6_ud<0,1,0>:ud qp<0,1,0>:ub {align1} ;
-
- /* DW3 */
- and (1) pak_object3_ud<1>:ud ob_read_wb0.0<0,1,0>:ud 0xFFFF {align1} ;
- add (1) pak_object3_ud<1>:ud pak_object3_ud<0,1,0>:ud MFC_AVC_PAK_OBJECT_INTRA_DW3 {align1} ;
-
- /* DW7 */
- mov (1) pak_object7_ud<1>:ud ob_read_wb0.4<0,1,0>:ud {align1} ;
-
- /* DW8 */
- mov (1) pak_object8_ud<1>:ud ob_read_wb0.8<0,1,0>:ud {align1} ;
-
- /* DW9 */
- and (1) pak_object9_ud<1>:ud ob_read_wb0.12<0,1,0>:ud 0xFC:ud {align1} ;
-
- mov (8) msg_reg0.0<1>:ud tmp_mfc_batchbuffer<8,8,1>:ud {align1} ;
- mov (8) msg_reg1.0<1>:ud pak_object_ud<8,8,1>:ud {align1} ;
- mov (8) msg_reg2.0<1>:ud pak_object8_ud<8,8,1>:ud {align1} ;
-
- /* the new offset */
- add (1) tmp_vme_output.8<1>:ud tmp_vme_output.8<0,1,0>:ud 1:ud {align1} ;
-
-send (16)
- msg_ind
- ob_write_wb
- null
- data_port(
- OB_CACHE_TYPE,
- OB_WRITE,
- OB_CONTROL_3,
- BIND_IDX_MFC_BATCHBUFFER,
- OB_WRITE_COMMIT_CATEGORY,
- OB_HEADER_PRESENT
- )
- mlen 3
- rlen ob_write_wb_length
- {align1};
-
- /* the new offset */
- add (1) tmp_mfc_batchbuffer.8<1>:ud tmp_mfc_batchbuffer.8<0,1,0>:ud 4:ud {align1} ;
-
- add.z.f0.0 (1) total_mbs<1>:w total_mbs<0,1,0>:w -1:w {align1};
- (-f0.0)jmpi (1) __PAK_OBJECT_LOOP ;
-
diff --git a/src/shaders/utils/mfc_batchbuffer_avc_intra.g6a b/src/shaders/utils/mfc_batchbuffer_avc_intra.g6a
deleted file mode 100644
index fba9bd5..0000000
--- a/src/shaders/utils/mfc_batchbuffer_avc_intra.g6a
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- */
-
-#include "mfc_batchbuffer.inc"
-#include "mfc_batchbuffer_head.asm"
-#include "mfc_batchbuffer_avc_intra.asm"
-#include "mfc_batchbuffer_tail.asm"
-#include "end_thread.asm"
-
diff --git a/src/shaders/utils/mfc_batchbuffer_avc_intra.g6b b/src/shaders/utils/mfc_batchbuffer_avc_intra.g6b
deleted file mode 100644
index 3222bd6..0000000
--- a/src/shaders/utils/mfc_batchbuffer_avc_intra.g6b
+++ /dev/null
@@ -1,66 +0,0 @@
- { 0x00800001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x21340231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x21280021, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x21540231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x21480021, 0x000000a4, 0x00000000 },
- { 0x01000005, 0x20002d28, 0x000000ac, 0x00040004 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000012 },
- { 0x00600001, 0x20000022, 0x008d0120, 0x00000000 },
- { 0x05800031, 0x22001cc9, 0x00000000, 0x021a0001 },
- { 0x00600001, 0x20000022, 0x008d0140, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0200, 0x00000000 },
- { 0x05800031, 0x23001cdd, 0x00000000, 0x041b0002 },
- { 0x00000040, 0x21280c21, 0x00000128, 0x00000001 },
- { 0x00000040, 0x21480c21, 0x00000148, 0x00000001 },
- { 0x01000040, 0x20aa3dad, 0x000000aa, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0xffffffee },
- { 0x00000041, 0x21084521, 0x000000b4, 0x000000b1 },
- { 0x00000040, 0x21084421, 0x00000108, 0x000000b0 },
- { 0x00800001, 0x23400061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23400061, 0x00000000, 0x71490009 },
- { 0x00000001, 0x23540061, 0x00000000, 0x000f000f },
- { 0x01000005, 0x20002d28, 0x020000ac, 0x00020002 },
- { 0x00600001, 0x20000022, 0x008d0100, 0x00000000 },
- { 0x05800031, 0x22001cc9, 0x00000000, 0x021a0000 },
- { 0x00000040, 0x23500d21, 0x000000b0, 0xffff0000 },
- { 0x00000040, 0x20b02e31, 0x000000b0, 0x00010001 },
- { 0x01000010, 0x20004528, 0x000000b4, 0x000000b0 },
- { 0x00010001, 0x20b00171, 0x00000000, 0x00000000 },
- { 0x00010040, 0x20b12e31, 0x000000b1, 0x00010001 },
- { 0x00000001, 0x23580061, 0x00000000, 0x00000000 },
- { 0x00110001, 0x23580061, 0x02000000, 0x04000000 },
- { 0x01000010, 0x20002d28, 0x000000ae, 0x00010001 },
- { 0x00110001, 0x23580061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23584421, 0x00000358, 0x000000b6 },
- { 0x00000005, 0x234c1c21, 0x00000200, 0x0000ffff },
- { 0x00000040, 0x234c0c21, 0x0000034c, 0x000e0000 },
- { 0x00000001, 0x235c0021, 0x00000204, 0x00000000 },
- { 0x00000001, 0x23600021, 0x00000208, 0x00000000 },
- { 0x00000005, 0x23640c21, 0x0000020c, 0x000000fc },
- { 0x00600001, 0x20000022, 0x008d0140, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0340, 0x00000000 },
- { 0x00600001, 0x20400022, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x21080c21, 0x00000108, 0x00000001 },
- { 0x05800031, 0x23001cdd, 0x00000000, 0x061b0302 },
- { 0x00000040, 0x21480c21, 0x00000148, 0x00000004 },
- { 0x01000040, 0x20ae3dad, 0x000000ae, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0xffffffce },
- { 0x00010020, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x00600001, 0x20000022, 0x008d0120, 0x00000000 },
- { 0x05800031, 0x22001cc9, 0x00000000, 0x021a0001 },
- { 0x00600001, 0x20000022, 0x008d0140, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0200, 0x00000000 },
- { 0x05800031, 0x23001cdd, 0x00000000, 0x041b0002 },
- { 0x00000040, 0x21280c21, 0x00000128, 0x00000001 },
- { 0x00000040, 0x21480c21, 0x00000148, 0x00000001 },
- { 0x01000040, 0x20a83dad, 0x000000a8, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0xffffffee },
- { 0x01000005, 0x20002d28, 0x000000ac, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
- { 0x00600001, 0x20000022, 0x008d0140, 0x00000000 },
- { 0x00400001, 0x20200062, 0x00000000, 0x00000000 },
- { 0x00000001, 0x20240062, 0x00000000, 0x05000000 },
- { 0x05800031, 0x23001cdd, 0x00000000, 0x041b0002 },
- { 0x00600001, 0x20000022, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24001cc0, 0x00000000, 0x82000010 },
diff --git a/src/shaders/utils/mfc_batchbuffer_avc_intra.g7a b/src/shaders/utils/mfc_batchbuffer_avc_intra.g7a
deleted file mode 100644
index fba9bd5..0000000
--- a/src/shaders/utils/mfc_batchbuffer_avc_intra.g7a
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- */
-
-#include "mfc_batchbuffer.inc"
-#include "mfc_batchbuffer_head.asm"
-#include "mfc_batchbuffer_avc_intra.asm"
-#include "mfc_batchbuffer_tail.asm"
-#include "end_thread.asm"
-
diff --git a/src/shaders/utils/mfc_batchbuffer_avc_intra.g7b b/src/shaders/utils/mfc_batchbuffer_avc_intra.g7b
deleted file mode 100644
index 2bf1612..0000000
--- a/src/shaders/utils/mfc_batchbuffer_avc_intra.g7b
+++ /dev/null
@@ -1,66 +0,0 @@
- { 0x00800001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x21340231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x21280021, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x21540231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x21480021, 0x000000a4, 0x00000000 },
- { 0x01000005, 0x20002d28, 0x000000ac, 0x00040004 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000012 },
- { 0x00600001, 0x28000021, 0x008d0120, 0x00000000 },
- { 0x0a800031, 0x22001ca9, 0x00000800, 0x02180001 },
- { 0x00600001, 0x28000021, 0x008d0140, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0200, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0002 },
- { 0x00000040, 0x21280c21, 0x00000128, 0x00000001 },
- { 0x00000040, 0x21480c21, 0x00000148, 0x00000001 },
- { 0x01000040, 0x20aa3dad, 0x000000aa, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0xffffffee },
- { 0x00000041, 0x21084521, 0x000000b4, 0x000000b1 },
- { 0x00000040, 0x21084421, 0x00000108, 0x000000b0 },
- { 0x00800001, 0x23400061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23400061, 0x00000000, 0x71490009 },
- { 0x00000001, 0x23540061, 0x00000000, 0x000f000f },
- { 0x01000005, 0x20002d28, 0x020000ac, 0x00020002 },
- { 0x00600001, 0x28000021, 0x008d0100, 0x00000000 },
- { 0x0a800031, 0x22001ca9, 0x00000800, 0x02180000 },
- { 0x00000040, 0x23500d21, 0x000000b0, 0xffff0000 },
- { 0x00000040, 0x20b02e31, 0x000000b0, 0x00010001 },
- { 0x01000010, 0x20004528, 0x000000b4, 0x000000b0 },
- { 0x00010001, 0x20b00171, 0x00000000, 0x00000000 },
- { 0x00010040, 0x20b12e31, 0x000000b1, 0x00010001 },
- { 0x00000001, 0x23580061, 0x00000000, 0x00000000 },
- { 0x00110001, 0x23580061, 0x02000000, 0x04000000 },
- { 0x01000010, 0x20002d28, 0x000000ae, 0x00010001 },
- { 0x00110001, 0x23580061, 0x00000000, 0x00000000 },
- { 0x00000040, 0x23584421, 0x00000358, 0x000000b6 },
- { 0x00000005, 0x234c1c21, 0x00000200, 0x0000ffff },
- { 0x00000040, 0x234c0c21, 0x0000034c, 0x000e0000 },
- { 0x00000001, 0x235c0021, 0x00000204, 0x00000000 },
- { 0x00000001, 0x23600021, 0x00000208, 0x00000000 },
- { 0x00000005, 0x23640c21, 0x0000020c, 0x000000fc },
- { 0x00600001, 0x28000021, 0x008d0140, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0340, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d0360, 0x00000000 },
- { 0x00000040, 0x21080c21, 0x00000108, 0x00000001 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x060a0302 },
- { 0x00000040, 0x21480c21, 0x00000148, 0x00000004 },
- { 0x01000040, 0x20ae3dad, 0x000000ae, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0xffffffce },
- { 0x00010020, 0x34001c00, 0x02001400, 0x0000001e },
- { 0x00600001, 0x28000021, 0x008d0120, 0x00000000 },
- { 0x0a800031, 0x22001ca9, 0x00000800, 0x02180001 },
- { 0x00600001, 0x28000021, 0x008d0140, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0200, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0002 },
- { 0x00000040, 0x21280c21, 0x00000128, 0x00000001 },
- { 0x00000040, 0x21480c21, 0x00000148, 0x00000001 },
- { 0x01000040, 0x20a83dad, 0x000000a8, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0xffffffee },
- { 0x01000005, 0x20002d28, 0x000000ac, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 },
- { 0x00600001, 0x28000021, 0x008d0140, 0x00000000 },
- { 0x00400001, 0x28200061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x28240061, 0x00000000, 0x05000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0002 },
- { 0x00600001, 0x28000021, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24001ca0, 0x00000800, 0x82000010 },
diff --git a/src/shaders/utils/mfc_batchbuffer_head.asm b/src/shaders/utils/mfc_batchbuffer_head.asm
deleted file mode 100644
index fe9744f..0000000
--- a/src/shaders/utils/mfc_batchbuffer_head.asm
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- */
-
-/*
- * __START
- */
-__START:
- mov (16) tmp_reg0<1>:ud 0x0:ud {align1} ;
- mov (16) tmp_reg2<1>:ud 0x0:ud {align1} ;
-
- mov (1) tmp_slice_header.20<1>:ub thread_id_ub {align1}; /* dispatch id */
- mov (1) tmp_slice_header.8<1>:ud head_offset<0,1,0>:ud {align1};
- mov (1) tmp_mfc_batchbuffer.20<1>:ub thread_id_ub {align1}; /* dispatch id */
- mov (1) tmp_mfc_batchbuffer.8<1>:ud batchbuffer_offset<0,1,0>:ud {align1};
-
-__HEAD:
- and.z.f0.0 (1) null<1>:uw flags<0,1,0>:uw FLAG_MASK_FIRST_OBJECT {align1};
- (f0.0)jmpi (1) __PAK_OBJECT ;
-
-__HEAD_LOOP:
- mov (8) msg_reg0.0<1>:ud tmp_slice_header<8,8,1>:ud {align1} ;
-
-send (16)
- msg_ind
- ob_read_wb
- null
- data_port(
- OB_CACHE_TYPE,
- OB_READ,
- OB_CONTROL_0,
- BIND_IDX_MFC_SLICE_HEADER,
- OB_WRITE_COMMIT_CATEGORY,
- OB_HEADER_PRESENT
- )
- mlen 1
- rlen ob_read_wb_len_slice_header
- {align1};
-
- mov (8) msg_reg0.0<1>:ud tmp_mfc_batchbuffer<8,8,1>:ud {align1} ;
- mov (8) msg_reg1.0<1>:ud ob_read_wb0<8,8,1>:ud {align1} ;
-
-send (16)
- msg_ind
- ob_write_wb
- null
- data_port(
- OB_CACHE_TYPE,
- OB_WRITE,
- OB_CONTROL_0,
- BIND_IDX_MFC_BATCHBUFFER,
- OB_WRITE_COMMIT_CATEGORY,
- OB_HEADER_PRESENT
- )
- mlen 2
- rlen ob_write_wb_length
- {align1};
-
- /* the new offset */
- add (1) tmp_slice_header.8<1>:ud tmp_slice_header.8<0,1,0>:ud 1:ud {align1} ;
- add (1) tmp_mfc_batchbuffer.8<1>:ud tmp_mfc_batchbuffer.8<0,1,0>:ud 1:ud {align1} ;
-
- add.z.f0.0 (1) head_size<1>:w head_size<0,1,0>:w -1:w {align1};
- (-f0.0)jmpi (1) __HEAD_LOOP ;
-
diff --git a/src/shaders/utils/mfc_batchbuffer_hsw.asm b/src/shaders/utils/mfc_batchbuffer_hsw.asm
deleted file mode 100644
index c34e934..0000000
--- a/src/shaders/utils/mfc_batchbuffer_hsw.asm
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- * Copyright © 2010-2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- */
-
-START:
- mov (16) pak_object_reg0.0<1>:ud 0x0:ud {align1};
- mov (8) obw_m0.0<1>:ud 0x0:ud {align1};
- mov (8) mb_cur_msg.0<1>:ud 0x0:ud {align1};
- mov (16) mb_temp.0<1>:ud 0x0:ud {align1};
- mov (1) cur_mb_x<1>:uw mb_x<0,1,0>:ub {align1};
- mov (1) cur_mb_y<1>:uw mb_y<0,1,0>:ub {align1};
- mov (1) end_mb_x<1>:uw slice_end_x<0,1,0>:ub {align1};
- mov (1) end_mb_y<1>:uw slice_end_y<0,1,0>:ub {align1};
- mov (1) end_loop_count<1>:uw total_mbs<0,1,0>:uw {align1};
- mov (1) vme_len<1>:ud 2:ud {align1};
- and.z.f0.0 (1) null:uw mb_flag<0,1,0>:ub INTRA_SLICE:uw {align1};
- (f0.0) mov (1) vme_len<1>:ud 24:ud {align1};
-
- mov (1) obw_m0.8<1>:UD buffer_offset<0,1,0>:ud {align1};
- mov (1) obw_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
- mul (1) mb_cur_msg.8<1>:UD width_in_mbs<0,1,0>:UW cur_mb_y<0,1,0>:UW {align1};
- add (1) mb_cur_msg.8<1>:UD mb_cur_msg.8<0,1,0>:UD cur_mb_x<0,1,0>:uw {align1};
- mul (1) mb_cur_msg.8<1>:UD mb_cur_msg.8<0,1,0>:UD vme_len<0,1,0>:UD {align1};
- mov (1) mb_cur_msg.20<1>:UB thread_id_ub {align1}; /* dispatch id */
- mov (1) pak_object0_ud<1>:ud MFC_AVC_PAK_OBJECT_DW0:ud {align1};
- mov (1) pak_object5_ud<1>:ud MFC_AVC_PAK_OBJECT_DW5:ud {align1};
- mov (1) pak_object10_ud<1>:ud MFC_AVC_PAK_OBJECT_DW10:ud {align1};
- mov (1) pak_object6_ud<1>:ub qp_flag<0,1,0>:ub {align1};
-
-pak_object_loop:
- mov (8) mb_msg0.0<1>:ud mb_cur_msg.0<8,8,1>:ud {align1};
- mov (1) pak_object4_ud<1>:ud MFC_AVC_PAK_OBJECT_DW4:ud {align1};
- mov (1) tmp_reg0.0<1>:ub cur_mb_x<0,1,0>:ub {align1};
- mov (1) tmp_reg0.1<1>:ub cur_mb_y<0,1,0>:ub {align1};
- mov (1) pak_object4_ud<1>:uw tmp_reg0.0<0,1,0>:uw {align1};
- /* pak_object6_ud */
- mov (1) pak_object_reg0.26<1>:uw 0x0:uw {align1};
-
- cmp.e.f0.0 (1) null:uw cur_mb_x<0,1,0>:uw end_mb_x<0,1,0>:uw {align1};
- (-f0.0) jmpi (1) start_mb_flag;
- cmp.e.f0.0 (1) null:uw cur_mb_y<0,1,0>:uw end_mb_y<0,1,0>:uw {align1};
- (f0.0) mov (1) pak_object_reg0.26<1>:uw MFC_AVC_PAK_LAST_MB:uw {align1};
-start_mb_flag:
- and.z.f0.0 (1) null:uw mb_flag<0,1,0>:ub INTRA_SLICE:uw {align1};
- (f0.0) jmpi (1) inter_frame_start;
-
-/* bind index 0, read 2 oword (32bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- null
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_2,
- MV_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
- jmpi (1) intra_pak_command;
-
-nop;
-nop;
-inter_frame_start:
-/* bind index 0, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- null
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- MV_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) jmpi (1) intra_pak_command;
-
-/* MV len and MV mode */
- and (1) pak_object3_ud<1>:ud mb_inter_wb.0<0,1,0>:ud MFC_AVC_INTER_MASK_DW3:ud {align1};
- add (1) pak_object3_ud<1>:ud pak_object3_ud<0,1,0>:ud MFC_AVC_PAK_CBP:ud {align1};
- and (1) tmp_reg0.0<1>:uw mb_inter_wb.0<0,1,0>:uw INTER_MASK:uw {align1};
- mov (1) pak_object1_ud<1>:ud 32:ud {align1};
- cmp.e.f0.0 (1) null:uw tmp_reg0.0<0,1,0>:uw INTER_8X8MODE:uw {align1};
- (-f0.0) add (1) pak_object3_ud<1>:ud pak_object3_ud<0,1,0>:ud INTER_MV8:ud {align1};
- (-f0.0) jmpi (1) inter_mv_check;
- and.nz.f0.0 (1) null:ud mb_inter_wb.4<0,1,0>:uw SUBSHAPE_MASK:uw {align1};
- (f0.0) mov (1) pak_object1_ud<1>:ud 128:ud {align1};
- (f0.0) add (1) pak_object3_ud<1>:ud pak_object3_ud<0,1,0>:ud INTER_MV32:ud {align1};
- (f0.0) jmpi (1) mv_check_end;
-
- add (1) pak_object3_ud<1>:ud pak_object3_ud<0,1,0>:ud INTER_MV8:ud {align1};
-
-inter_mv_check:
- and (1) tmp_reg0.0<1>:uw mb_inter_wb.0<0,1,0>:uw INTER_MASK:uw {align1};
- cmp.e.f0.0 (1) null:uw tmp_reg0.0<0,1,0>:uw INTER_16X16MODE:uw {align1};
- (f0.0) jmpi (1) mv_check_end;
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB A */
-/* bind index 0, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- null
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- MV_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-
- mov (2) mb_mv0.8<1>:ud mb_mv1.0<2,2,1>:ud {align1};
- mov (2) mb_mv0.16<1>:ud mb_mv2.0<2,2,1>:ud {align1};
- mov (2) mb_mv0.24<1>:ud mb_mv3.0<2,2,1>:ud {align1};
-
- mov (8) msg_reg0.0<1>:ud mb_msg0.0<8,8,1>:ud {align1} ;
- mov (8) msg_reg1.0<1>:ud mb_mv0.0<8,8,1>:ud {align1} ;
-/* Write MV for MB A */
-/* bind index 0, write 2 oword (32bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- MV_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-mv_check_end:
-
-/* ref list */
- mov (1) pak_object8_ud<1>:ud fwd_ref<0,1,0>:ud {align1};
- mov (1) pak_object9_ud<1>:ud bwd_ref<0,1,0>:ud {align1};
-/* inter_mode. pak_object7_ud */
- mov (1) pak_object7_ud<1>:ud 0x0:ud {align1};
- mov (1) pak_object_reg0.28<1>:ub mb_inter_wb.5<0,1,0>:ub {align1};
- mov (1) pak_object_reg0.29<1>:ub mb_inter_wb.6<0,1,0>:ub {align1};
-
-/* mv start address */
- add (1) tmp_reg0.4<1>:ud mb_cur_msg.8<0,1,0>:ud 3:ud {align1};
- mul (1) pak_object2_ud<1>:ud tmp_reg0.4<0,1,0>:ud 16:ud {align1};
-
- jmpi (1) write_pak_command;
-
-intra_pak_command:
- /* object 1/2 is set to zero */
- mov (2) pak_object1_ud<1>:ud 0x0:ud {align1};
- /* object 7/8 intra mode */
- mov (1) pak_object7_ud<1>:ud mb_intra_wb.4<0,1,0>:ud {align1};
- mov (1) pak_object8_ud<1>:ud mb_intra_wb.8<0,1,0>:ud {align1};
- /* object 9 Intra structure */
- mov (1) pak_object9_ud<1>:ud 0x0:ud {align1};
- mov (1) pak_object9_ud<1>:ub mb_intra_wb.12<0,1,0>:ub {align1};
-
- and (1) pak_object3_ud<1>:ud mb_intra_wb.0<0,1,0>:ud MFC_AVC_INTRA_MASK_DW3:ud {align1};
- add (1) pak_object3_ud<1>:ud pak_object3_ud<0,1,0>:ud MFC_AVC_INTRA_FLAG + MFC_AVC_PAK_CBP:ud {align1};
-
- mov (1) tmp_reg0.0<1>:ud 0:ud {align1};
- mov (1) tmp_reg0.1<1>:ub mb_intra_wb.2<0,1,0>:ub {align1};
- and (1) tmp_reg0.0<1>:uw tmp_reg0.0<0,1,0>:uw AVC_INTRA_MASK:uw {align1};
- add (1) pak_object3_ud<1>:ud pak_object3_ud<0,1,0>:ud tmp_reg0.0<0,1,0>:ud {align1};
-
-/* Write the pak command into the batchbuffer */
-write_pak_command:
- mov (8) msg_reg0.0<1>:ud obw_m0.0<8,8,1>:ud {align1} ;
- mov (8) msg_reg1.0<1>:ud pak_object_reg0.0<8,8,1>:ud {align1} ;
-
-/* bind index 3, write 2 oword (32bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- MFC_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
- add (1) msg_reg0.8<1>:ud msg_reg0.8<0,1,0>:ud 2:ud {align1};
- mov (8) msg_reg1.0<1>:ud pak_object_reg1.0<8,8,1>:ud {align1};
-
-/* bind index 3, write 1 oword (16bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_0,
- MFC_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-
-/* Check the next mb */
-add (1) cur_loop_count<1>:uw cur_loop_count<0,1,0>:uw 1:uw {align1};
-cmp.e.f0.0 (1) null:uw cur_loop_count<0,1,0>:uw end_loop_count<0,1,0>:uw {align1};
-(f0.0) jmpi (1) pak_loop_end;
-/* the buffer offset for next block */
-add (1) obw_m0.8<1>:ud obw_m0.8<0,1,0>:ud 3:uw {align1};
-add (1) mb_cur_msg.8<1>:ud mb_cur_msg.8<0,1,0>:ud vme_len<0,1,0>:ud {align1};
-add (1) cur_mb_x<1>:uw cur_mb_x<0,1,0>:uw 1:uw {align1};
-/* Check whether it is already equal to width in mbs */
-cmp.e.f0.0 (1) null:uw cur_mb_x<0,1,0>:uw width_in_mbs<0,1,0>:uw {align1};
-(f0.0) add (1) cur_mb_y<1>:uw cur_mb_y<0,1,0>:uw 1:uw {align1};
-(f0.0) mov (1) cur_mb_x<1>:uw 0:uw {align1};
-
-/* continue the pak command for next mb */
-jmpi (1) pak_object_loop;
-nop;
-nop;
-pak_loop_end:
-/* Issue message fence so that the previous write message is committed */
-send (16)
- msg_ind
- mb_wb.0<1>:ud
- null
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_FENCE,
- OBR_MF_COMMIT,
- MFC_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-__EXIT:
-/*
- * kill thread
- */
-mov (8) ts_msg_reg0<1>:UD r0<8,8,1>:UD {align1};
-send (1) ts_msg_ind acc0<1>UW null thread_spawner(0, 0, 1) mlen 1 rlen 0 {align1 EOT};
-
-nop;
-
diff --git a/src/shaders/utils/mfc_batchbuffer_hsw.g75a b/src/shaders/utils/mfc_batchbuffer_hsw.g75a
deleted file mode 100644
index 4a96754..0000000
--- a/src/shaders/utils/mfc_batchbuffer_hsw.g75a
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright © 2010-2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- */
-
-#include "mfc_batchbuffer_hsw.inc"
-#include "mfc_batchbuffer_hsw.asm"
-
diff --git a/src/shaders/utils/mfc_batchbuffer_hsw.g75b b/src/shaders/utils/mfc_batchbuffer_hsw.g75b
deleted file mode 100644
index 2f42643..0000000
--- a/src/shaders/utils/mfc_batchbuffer_hsw.g75b
+++ /dev/null
@@ -1,105 +0,0 @@
- { 0x00800001, 0x23400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b000061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x2ac00061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x2ac00229, 0x000000a8, 0x00000000 },
- { 0x00000001, 0x2ac20229, 0x000000a9, 0x00000000 },
- { 0x00000001, 0x2ae00229, 0x000000b0, 0x00000000 },
- { 0x00000001, 0x2ae20229, 0x000000b1, 0x00000000 },
- { 0x00000001, 0x2ae40129, 0x000000ac, 0x00000000 },
- { 0x00000001, 0x2ae80061, 0x00000000, 0x00000002 },
- { 0x01000005, 0x20002e28, 0x000000a4, 0x00010001 },
- { 0x00010001, 0x2ae80061, 0x00000000, 0x00000018 },
- { 0x00000001, 0x21e80021, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x21f40231, 0x00000014, 0x00000000 },
- { 0x00000041, 0x2b082521, 0x000000aa, 0x00000ac2 },
- { 0x00000040, 0x2b082421, 0x00000b08, 0x00000ac0 },
- { 0x00000041, 0x2b080421, 0x00000b08, 0x00000ae8 },
- { 0x00000001, 0x2b140231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x23400061, 0x00000000, 0x7149000a },
- { 0x00000001, 0x23540061, 0x00000000, 0x000f000f },
- { 0x00000001, 0x23680061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23580231, 0x000000a6, 0x00000000 },
- { 0x00600001, 0x2b400021, 0x008d0b00, 0x00000000 },
- { 0x00000001, 0x23500061, 0x00000000, 0xffff0000 },
- { 0x00000001, 0x21000231, 0x00000ac0, 0x00000000 },
- { 0x00000001, 0x21010231, 0x00000ac2, 0x00000000 },
- { 0x00000001, 0x23500129, 0x00000100, 0x00000000 },
- { 0x00000001, 0x235a0169, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20002528, 0x00000ac0, 0x00000ae0 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x01000010, 0x20002528, 0x00000ac2, 0x00000ae2 },
- { 0x00010001, 0x235a0169, 0x00000000, 0x04000400 },
- { 0x01000005, 0x20002e28, 0x000000a4, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000040 },
- { 0x0a800031, 0x2b601ca1, 0x00000b40, 0x02180200 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000240 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0a800031, 0x2b601ca1, 0x00000b40, 0x02280300 },
- { 0x05000010, 0x2000252c, 0x00000b70, 0x00000b88 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000001f0 },
- { 0x00000005, 0x234c0c21, 0x00000b80, 0x1f00ffff },
- { 0x00000040, 0x234c0c21, 0x0000034c, 0x000e0000 },
- { 0x00000005, 0x21002d29, 0x00000b80, 0x00030003 },
- { 0x00000001, 0x23440061, 0x00000000, 0x00000020 },
- { 0x01000010, 0x20002d28, 0x00000100, 0x00030003 },
- { 0x00110040, 0x234c0c21, 0x0000034c, 0x00400000 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000050 },
- { 0x02000005, 0x20002d20, 0x00000b84, 0xff00ff00 },
- { 0x00010001, 0x23440061, 0x00000000, 0x00000080 },
- { 0x00010040, 0x234c0c21, 0x0000034c, 0x00600000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000c0 },
- { 0x00000040, 0x234c0c21, 0x0000034c, 0x00400000 },
- { 0x00000005, 0x21002d29, 0x00000b80, 0x00030003 },
- { 0x01000010, 0x20002d28, 0x00000100, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000080 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000003 },
- { 0x0a800031, 0x2ba01ca1, 0x00000b40, 0x02480400 },
- { 0x00200001, 0x2ba80021, 0x00450bc0, 0x00000000 },
- { 0x00200001, 0x2bb00021, 0x00450be0, 0x00000000 },
- { 0x00200001, 0x2bb80021, 0x00450c00, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0b40, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0ba0, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0200 },
- { 0x00000001, 0x23600021, 0x000000b4, 0x00000000 },
- { 0x00000001, 0x23640021, 0x000000b8, 0x00000000 },
- { 0x00000001, 0x235c0061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x235c0231, 0x00000b85, 0x00000000 },
- { 0x00000001, 0x235d0231, 0x00000b86, 0x00000000 },
- { 0x00000040, 0x21040c21, 0x00000b08, 0x00000003 },
- { 0x00000041, 0x23480c21, 0x00000104, 0x00000010 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000b0 },
- { 0x00200001, 0x23440061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x235c0021, 0x00000b64, 0x00000000 },
- { 0x00000001, 0x23600021, 0x00000b68, 0x00000000 },
- { 0x00000001, 0x23640061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23640231, 0x00000b6c, 0x00000000 },
- { 0x00000005, 0x234c0c21, 0x00000b60, 0x0000c0ff },
- { 0x00000040, 0x234c0c21, 0x0000034c, 0x000e2000 },
- { 0x00000001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x21010231, 0x00000b62, 0x00000000 },
- { 0x00000005, 0x21002d29, 0x00000100, 0x1f001f00 },
- { 0x00000040, 0x234c0421, 0x0000034c, 0x00000100 },
- { 0x00600001, 0x28000021, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0340, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0202 },
- { 0x00000040, 0x28080c21, 0x00000808, 0x00000002 },
- { 0x00600001, 0x28200021, 0x008d0360, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0002 },
- { 0x00000040, 0x2ac42d29, 0x00000ac4, 0x00010001 },
- { 0x01000010, 0x20002528, 0x00000ac4, 0x00000ae4 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000090 },
- { 0x00000040, 0x21e82c21, 0x000001e8, 0x00030003 },
- { 0x00000040, 0x2b080421, 0x00000b08, 0x00000ae8 },
- { 0x00000040, 0x2ac02d29, 0x00000ac0, 0x00010001 },
- { 0x01000010, 0x20002528, 0x00000ac0, 0x000000aa },
- { 0x00010040, 0x2ac22d29, 0x00000ac2, 0x00010001 },
- { 0x00010001, 0x2ac00169, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0xfffffb30 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0a800031, 0x2b601ca1, 0x00000800, 0x0219e002 },
- { 0x00600001, 0x2e000021, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x24001ca8, 0x00000e00, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/src/shaders/utils/mfc_batchbuffer_hsw.g8a b/src/shaders/utils/mfc_batchbuffer_hsw.g8a
deleted file mode 100644
index dc39253..0000000
--- a/src/shaders/utils/mfc_batchbuffer_hsw.g8a
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright © 2010-2016 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- */
-
-#include "mfc_batchbuffer_hsw.inc"
-#include "mfc_batchbuffer_hsw.asm"
diff --git a/src/shaders/utils/mfc_batchbuffer_hsw.g8b b/src/shaders/utils/mfc_batchbuffer_hsw.g8b
deleted file mode 100644
index cca39f5..0000000
--- a/src/shaders/utils/mfc_batchbuffer_hsw.g8b
+++ /dev/null
@@ -1,105 +0,0 @@
- { 0x00800001, 0x23400608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b000608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x2ac00608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x2ac02248, 0x000000a8, 0x00000000 },
- { 0x00000001, 0x2ac22248, 0x000000a9, 0x00000000 },
- { 0x00000001, 0x2ae02248, 0x000000b0, 0x00000000 },
- { 0x00000001, 0x2ae22248, 0x000000b1, 0x00000000 },
- { 0x00000001, 0x2ae41248, 0x000000ac, 0x00000000 },
- { 0x00000001, 0x2ae80608, 0x00000000, 0x00000002 },
- { 0x01000005, 0x20002240, 0x160000a4, 0x00010001 },
- { 0x00010001, 0x2ae80608, 0x00000000, 0x00000018 },
- { 0x00000001, 0x21e80208, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x21f42288, 0x00000014, 0x00000000 },
- { 0x00000041, 0x2b081208, 0x120000aa, 0x00000ac2 },
- { 0x00000040, 0x2b080208, 0x12000b08, 0x00000ac0 },
- { 0x00000041, 0x2b080208, 0x02000b08, 0x00000ae8 },
- { 0x00000001, 0x2b142288, 0x00000014, 0x00000000 },
- { 0x00000001, 0x23400608, 0x00000000, 0x7149000a },
- { 0x00000001, 0x23540608, 0x00000000, 0x000f000f },
- { 0x00000001, 0x23680608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23582288, 0x000000a6, 0x00000000 },
- { 0x00600001, 0x2b400208, 0x008d0b00, 0x00000000 },
- { 0x00000001, 0x23500608, 0x00000000, 0xffff0000 },
- { 0x00000001, 0x21002288, 0x00000ac0, 0x00000000 },
- { 0x00000001, 0x21012288, 0x00000ac2, 0x00000000 },
- { 0x00000001, 0x23501248, 0x00000100, 0x00000000 },
- { 0x00000001, 0x235a1648, 0x10000000, 0x00000000 },
- { 0x01000010, 0x20001240, 0x12000ac0, 0x00000ae0 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000020 },
- { 0x01000010, 0x20001240, 0x12000ac2, 0x00000ae2 },
- { 0x00010001, 0x235a1648, 0x10000000, 0x04000400 },
- { 0x01000005, 0x20002240, 0x160000a4, 0x00010001 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000040 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x02180200 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000240 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x02280300 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000001f0 },
- { 0x00000005, 0x234c0208, 0x06000b80, 0x1f00ffff },
- { 0x00000040, 0x234c0208, 0x0600034c, 0x000e0000 },
- { 0x00000005, 0x21001248, 0x16000b80, 0x00030003 },
- { 0x00000001, 0x23440608, 0x00000000, 0x00000020 },
- { 0x01000010, 0x20001240, 0x16000100, 0x00030003 },
- { 0x00110040, 0x234c0208, 0x0600034c, 0x00400000 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000050 },
- { 0x02000005, 0x20001200, 0x16000b84, 0xff00ff00 },
- { 0x00010001, 0x23440608, 0x00000000, 0x00000080 },
- { 0x00010040, 0x234c0208, 0x0600034c, 0x00600000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000c0 },
- { 0x00000040, 0x234c0208, 0x0600034c, 0x00400000 },
- { 0x00000005, 0x21001248, 0x16000b80, 0x00030003 },
- { 0x01000010, 0x20001240, 0x16000100, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000080 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x0e000b40, 0x02480400 },
- { 0x00200001, 0x2ba80208, 0x00450bc0, 0x00000000 },
- { 0x00200001, 0x2bb00208, 0x00450be0, 0x00000000 },
- { 0x00200001, 0x2bb80208, 0x00450c00, 0x00000000 },
- { 0x00600001, 0x28000208, 0x008d0b40, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0ba0, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x0e000800, 0x040a0200 },
- { 0x00000001, 0x23600208, 0x000000b4, 0x00000000 },
- { 0x00000001, 0x23640208, 0x000000b8, 0x00000000 },
- { 0x00000001, 0x235c0608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x235c2288, 0x00000b85, 0x00000000 },
- { 0x00000001, 0x235d2288, 0x00000b86, 0x00000000 },
- { 0x00000040, 0x21040208, 0x06000b08, 0x00000003 },
- { 0x00000041, 0x23480208, 0x06000104, 0x00000010 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x000000b0 },
- { 0x00200001, 0x23440608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x235c0208, 0x00000b64, 0x00000000 },
- { 0x00000001, 0x23600208, 0x00000b68, 0x00000000 },
- { 0x00000001, 0x23640608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23642288, 0x00000b6c, 0x00000000 },
- { 0x00000005, 0x234c0208, 0x06000b60, 0x0000c0ff },
- { 0x00000040, 0x234c0208, 0x0600034c, 0x000e2000 },
- { 0x00000001, 0x21000608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x21012288, 0x00000b62, 0x00000000 },
- { 0x00000005, 0x21001248, 0x16000100, 0x1f001f00 },
- { 0x00000040, 0x234c0208, 0x0200034c, 0x00000100 },
- { 0x00600001, 0x28000208, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0340, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x0e000800, 0x040a0202 },
- { 0x00000040, 0x28080208, 0x06000808, 0x00000002 },
- { 0x00600001, 0x28200208, 0x008d0360, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x0e000800, 0x040a0002 },
- { 0x00000040, 0x2ac41248, 0x16000ac4, 0x00010001 },
- { 0x01000010, 0x20001240, 0x12000ac4, 0x00000ae4 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000090 },
- { 0x00000040, 0x21e80208, 0x160001e8, 0x00030003 },
- { 0x00000040, 0x2b080208, 0x02000b08, 0x00000ae8 },
- { 0x00000040, 0x2ac01248, 0x16000ac0, 0x00010001 },
- { 0x01000010, 0x20001240, 0x12000ac0, 0x000000aa },
- { 0x00010040, 0x2ac21248, 0x16000ac2, 0x00010001 },
- { 0x00010001, 0x2ac01648, 0x10000000, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0xfffffb30 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x0e000800, 0x0219e002 },
- { 0x00600001, 0x2e000208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x24000a40, 0x0e000e00, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/src/shaders/utils/mfc_batchbuffer_hsw.g9a b/src/shaders/utils/mfc_batchbuffer_hsw.g9a
deleted file mode 100644
index dc39253..0000000
--- a/src/shaders/utils/mfc_batchbuffer_hsw.g9a
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright © 2010-2016 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- */
-
-#include "mfc_batchbuffer_hsw.inc"
-#include "mfc_batchbuffer_hsw.asm"
diff --git a/src/shaders/utils/mfc_batchbuffer_hsw.g9b b/src/shaders/utils/mfc_batchbuffer_hsw.g9b
deleted file mode 100644
index 40812fb..0000000
--- a/src/shaders/utils/mfc_batchbuffer_hsw.g9b
+++ /dev/null
@@ -1,105 +0,0 @@
- { 0x00800001, 0x23400608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x21e00608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b000608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x2ac00608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x2ac02248, 0x000000a8, 0x00000000 },
- { 0x00000001, 0x2ac22248, 0x000000a9, 0x00000000 },
- { 0x00000001, 0x2ae02248, 0x000000b0, 0x00000000 },
- { 0x00000001, 0x2ae22248, 0x000000b1, 0x00000000 },
- { 0x00000001, 0x2ae41248, 0x000000ac, 0x00000000 },
- { 0x00000001, 0x2ae80608, 0x00000000, 0x00000002 },
- { 0x01000005, 0x20002240, 0x160000a4, 0x00010001 },
- { 0x00010001, 0x2ae80608, 0x00000000, 0x00000018 },
- { 0x00000001, 0x21e80208, 0x000000a0, 0x00000000 },
- { 0x00000001, 0x21f42288, 0x00000014, 0x00000000 },
- { 0x00000041, 0x2b081208, 0x120000aa, 0x00000ac2 },
- { 0x00000040, 0x2b080208, 0x12000b08, 0x00000ac0 },
- { 0x00000041, 0x2b080208, 0x02000b08, 0x00000ae8 },
- { 0x00000001, 0x2b142288, 0x00000014, 0x00000000 },
- { 0x00000001, 0x23400608, 0x00000000, 0x7149000a },
- { 0x00000001, 0x23540608, 0x00000000, 0x000f000f },
- { 0x00000001, 0x23680608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23582288, 0x000000a6, 0x00000000 },
- { 0x00600001, 0x2b400208, 0x008d0b00, 0x00000000 },
- { 0x00000001, 0x23500608, 0x00000000, 0xffff0000 },
- { 0x00000001, 0x21002288, 0x00000ac0, 0x00000000 },
- { 0x00000001, 0x21012288, 0x00000ac2, 0x00000000 },
- { 0x00000001, 0x23501248, 0x00000100, 0x00000000 },
- { 0x00000001, 0x235a1648, 0x10000000, 0x00000000 },
- { 0x01000010, 0x20001240, 0x12000ac0, 0x00000ae0 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000020 },
- { 0x01000010, 0x20001240, 0x12000ac2, 0x00000ae2 },
- { 0x00010001, 0x235a1648, 0x10000000, 0x04000400 },
- { 0x01000005, 0x20002240, 0x160000a4, 0x00010001 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000040 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x02180200 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000240 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x02280300 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000001f0 },
- { 0x00000005, 0x234c0208, 0x06000b80, 0x1f00ffff },
- { 0x00000040, 0x234c0208, 0x0600034c, 0x000e0000 },
- { 0x00000005, 0x21001248, 0x16000b80, 0x00030003 },
- { 0x00000001, 0x23440608, 0x00000000, 0x00000020 },
- { 0x01000010, 0x20001240, 0x16000100, 0x00030003 },
- { 0x00110040, 0x234c0208, 0x0600034c, 0x00400000 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000050 },
- { 0x02000005, 0x20001200, 0x16000b84, 0xff00ff00 },
- { 0x00010001, 0x23440608, 0x00000000, 0x00000080 },
- { 0x00010040, 0x234c0208, 0x0600034c, 0x00600000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000c0 },
- { 0x00000040, 0x234c0208, 0x0600034c, 0x00400000 },
- { 0x00000005, 0x21001248, 0x16000b80, 0x00030003 },
- { 0x01000010, 0x20001240, 0x16000100, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000080 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x06000b40, 0x02480400 },
- { 0x00200001, 0x2ba80208, 0x00450bc0, 0x00000000 },
- { 0x00200001, 0x2bb00208, 0x00450be0, 0x00000000 },
- { 0x00200001, 0x2bb80208, 0x00450c00, 0x00000000 },
- { 0x00600001, 0x28000208, 0x008d0b40, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0ba0, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x06000800, 0x040a0200 },
- { 0x00000001, 0x23600208, 0x000000b4, 0x00000000 },
- { 0x00000001, 0x23640208, 0x000000b8, 0x00000000 },
- { 0x00000001, 0x235c0608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x235c2288, 0x00000b85, 0x00000000 },
- { 0x00000001, 0x235d2288, 0x00000b86, 0x00000000 },
- { 0x00000040, 0x21040208, 0x06000b08, 0x00000003 },
- { 0x00000041, 0x23480208, 0x06000104, 0x00000010 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x000000b0 },
- { 0x00200001, 0x23440608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x235c0208, 0x00000b64, 0x00000000 },
- { 0x00000001, 0x23600208, 0x00000b68, 0x00000000 },
- { 0x00000001, 0x23640608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23642288, 0x00000b6c, 0x00000000 },
- { 0x00000005, 0x234c0208, 0x06000b60, 0x0000c0ff },
- { 0x00000040, 0x234c0208, 0x0600034c, 0x000e2000 },
- { 0x00000001, 0x21000608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x21012288, 0x00000b62, 0x00000000 },
- { 0x00000005, 0x21001248, 0x16000100, 0x1f001f00 },
- { 0x00000040, 0x234c0208, 0x0200034c, 0x00000100 },
- { 0x00600001, 0x28000208, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0340, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x06000800, 0x040a0202 },
- { 0x00000040, 0x28080208, 0x06000808, 0x00000002 },
- { 0x00600001, 0x28200208, 0x008d0360, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x06000800, 0x040a0002 },
- { 0x00000040, 0x2ac41248, 0x16000ac4, 0x00010001 },
- { 0x01000010, 0x20001240, 0x12000ac4, 0x00000ae4 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000090 },
- { 0x00000040, 0x21e80208, 0x160001e8, 0x00030003 },
- { 0x00000040, 0x2b080208, 0x02000b08, 0x00000ae8 },
- { 0x00000040, 0x2ac01248, 0x16000ac0, 0x00010001 },
- { 0x01000010, 0x20001240, 0x12000ac0, 0x000000aa },
- { 0x00010040, 0x2ac21248, 0x16000ac2, 0x00010001 },
- { 0x00010001, 0x2ac01648, 0x10000000, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0xfffffb30 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x06000800, 0x0219e002 },
- { 0x00600001, 0x2e000208, 0x008d0000, 0x00000000 },
- { 0x07000031, 0x24000a40, 0x06000e00, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/src/shaders/utils/mfc_batchbuffer_hsw.inc b/src/shaders/utils/mfc_batchbuffer_hsw.inc
deleted file mode 100644
index 588006e..0000000
--- a/src/shaders/utils/mfc_batchbuffer_hsw.inc
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright © 2010-2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- */
-
-/* GRF registers
- * r0 header
- * r1~r4 constant buffer (reserved)
- * r5 inline data
- * r6~r7 reserved
- * r8~r15 temporary registers
- * r16 write back of Oword Block Write
- */
-
-/*
- * GRF 0 -- header
- */
-define(`thread_id_ub', `r0.20<0,1,0>:UB') /* thread id in payload */
-
-define(`inline_reg0', `r5')
-define(`buffer_offset', `inline_reg0.0') /* :ud, in units of Owords */
-/* :ub,
- * bit0 indicates the frame type. 1 is the I-frame. 0 is P-B frame
- */
-define(`mb_flag', `inline_reg0.4')
-define(`qp_flag', `inline_reg0.6') /* :ub */
-
-define(`mb_x', `inline_reg0.8') /* :ub, */
-define(`mb_y', `inline_reg0.9') /* :ub, */
-define(`mb_xy', `inline_reg0.8') /* :uw, */
-/* :uw, the picture width in macroblocks */
-define(`width_in_mbs', `inline_reg0.10')
-/* :w, the number of macroblock commands being processed by the kernel */
-define(`total_mbs', `inline_reg0.12')
-/* ub, the mb x/y of the last mb in slice */
-define(`slice_end_x', `inline_reg0.16')
-define(`slice_end_y', `inline_reg0.17')
-
-/* :ud the forward reference picture list */
-define(`fwd_ref', `inline_reg0.20')
-/* :ud the backward reference picture list */
-define(`bwd_ref', `inline_reg0.24')
-
-/*
- * GRF 8~15 -- temporary registers
- */
-define(`tmp_reg0', `r8')
-define(`tmp_reg1', `r9')
-define(`tmp_reg2', `r10')
-define(`tmp_reg3', `r11')
-define(`tmp_reg4', `r12')
-define(`tmp_reg5', `r13')
-define(`tmp_reg6', `r14')
-define(`tmp_reg7', `r15')
-
-define(`obw_m0', `tmp_reg7')
-
-define(`obw_wb', `null<1>:W')
-define(`obw_wb_length', `0')
-
-/*
- * GRF 26~27
- */
-define(`pak_object_reg0', `r26')
-define(`pak_object0_ud', `r26.0')
-define(`pak_object1_ud', `r26.4')
-define(`pak_object2_ud', `r26.8')
-define(`pak_object3_ud', `r26.12')
-define(`pak_object4_ud', `r26.16')
-define(`pak_object5_ud', `r26.20')
-define(`pak_object6_ud', `r26.24')
-define(`pak_object7_ud', `r26.28')
-
-define(`pak_object_reg1', `r27')
-define(`pak_object8_ud', `r27.0')
-define(`pak_object9_ud', `r27.4')
-define(`pak_object10_ud', `r27.8')
-define(`pak_object11_ud', `r27.12')
-
-/*
- * Message Payload registers
- */
-define(`msg_ind', `64')
-define(`msg_reg0', `g64')
-define(`msg_reg1', `g65')
-define(`msg_reg2', `g66')
-define(`msg_reg3', `g67')
-define(`msg_reg4', `g68')
-define(`msg_reg5', `g69')
-define(`msg_reg6', `g70')
-define(`msg_reg7', `g71')
-define(`msg_reg8', `g72')
-
-define(`MV_BIND_IDX', `0')
-define(`MFC_BIND_IDX', `2')
-
-define(`ts_msg_ind', `112')
-define(`ts_msg_reg0', `r112')
-
-
-define(`MFC_AVC_PAK_OBJECT_DW0', `0x7149000a')
-define(`MFC_AVC_PAK_OBJECT_DW4', `0xFFFF0000') /* CBP for Y */
-define(`MFC_AVC_PAK_OBJECT_DW5', `0x000F000F')
-define(`MFC_AVC_PAK_OBJECT_DW10', `0x0000000')
-
-define(`OBR_MESSAGE_TYPE', `0')
-define(`OBR_CACHE_TYPE', `10')
-
-define(`OBR_MESSAGE_FENCE', `7')
-define(`OBR_MF_NOCOMMIT', `0')
-define(`OBR_MF_COMMIT', `0x20')
-
-define(`OBR_CONTROL_0', `0') /* 1 OWord, low 128 bits */
-define(`OBR_CONTROL_1', `1') /* 1 OWord, high 128 bits */
-define(`OBR_CONTROL_2', `2') /* 2 OWords */
-define(`OBR_CONTROL_4', `3') /* 4 OWords */
-define(`OBR_CONTROL_8', `4') /* 8 OWords */
-
-define(`OBR_HEADER_PRESENT', `1')
-define(`OBR_WRITE_COMMIT_CATEGORY', `0') /* category on Ivybridge */
-
-define(`OBW_WRITE_COMMIT_CATEGORY', `0') /* category on Ivybridge */
-
-define(`OBW_CACHE_TYPE', `10')
-
-
-define(`OBW_MESSAGE_TYPE', `8')
-
-define(`OBW_CONTROL_0', `0') /* 1 OWord, low 128 bits */
-define(`OBW_CONTROL_1', `1') /* 1 OWord, high 128 bits */
-define(`OBW_CONTROL_2', `2') /* 2 OWords */
-define(`OBW_CONTROL_4', `3') /* 4 OWords */
-define(`OBW_CONTROL_8', `4') /* 8 OWords */
-define(`OBW_HEADER_PRESENT', `1')
-
-define(`INTER_MASK', `0x03')
-define(`INTER_16X16MODE', `0x0')
-define(`INTER_16X8MODE', `0x01')
-define(`INTER_8X16MODE', `0x02')
-define(`INTER_8X8MODE', `0x03')
-define(`SUBSHAPE_MASK', `0xFF00')
-
-define(`mb_ind', `90')
-define(`mb_msg0', `r90')
-define(`mb_wb', `r91')
-define(`mb_intra_wb', `r91')
-define(`mb_inter_wb', `r92')
-define(`mb_mv0', `r93')
-define(`mb_mv1', `r94')
-define(`mb_mv2', `r95')
-define(`mb_mv3', `r96')
-
-define(`mb_temp', `r86')
-define(`cur_mb_x', `mb_temp.0') /* :uw, */
-define(`cur_mb_y', `mb_temp.2') /* :uw, */
-define(`cur_loop_count', `mb_temp.4') /* :uw, */
-define(`mb_end', `r87')
-define(`end_mb_x', `mb_end.0') /* :uw, */
-define(`end_mb_y', `mb_end.2') /* :uw, */
-define(`end_loop_count', `mb_end.4') /* :uw, */
-/* :ud the length of VME predict result for every mb. Units in owords */
-define(`vme_len', `mb_end.8')
-define(`mb_cur_msg', `r88')
-
-define(`INTRA_SLICE', `0x0001')
-define(`MFC_AVC_PAK_LAST_MB', `0x0400')
-
-define(`MFC_AVC_INTER_MASK_DW3', `0x1F00FFFF')
-define(`MFC_AVC_INTRA_MASK_DW3', `0x0000C0FF')
-define(`INTER_MV8', `0x00400000')
-define(`INTER_MV32', `0x00600000')
-define(`MFC_AVC_PAK_CBP', `0x000E0000')
-define(`MFC_AVC_INTRA_FLAG', `0x00002000')
-define(`AVC_INTRA_MASK', `0x1F00')
diff --git a/src/shaders/utils/mfc_batchbuffer_tail.asm b/src/shaders/utils/mfc_batchbuffer_tail.asm
deleted file mode 100644
index 155bbdb..0000000
--- a/src/shaders/utils/mfc_batchbuffer_tail.asm
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- */
-
-__TAIL:
- (f0.1)jmpi (1) __EXIT ;
-
-__TAIL_LOOP:
- mov (8) msg_reg0.0<1>:ud tmp_slice_header<8,8,1>:ud {align1} ;
-
-send (16)
- msg_ind
- ob_read_wb
- null
- data_port(
- OB_CACHE_TYPE,
- OB_READ,
- OB_CONTROL_0,
- BIND_IDX_MFC_SLICE_HEADER,
- OB_WRITE_COMMIT_CATEGORY,
- OB_HEADER_PRESENT
- )
- mlen 1
- rlen ob_read_wb_len_slice_header
- {align1};
-
- mov (8) msg_reg0.0<1>:ud tmp_mfc_batchbuffer<8,8,1>:ud {align1} ;
- mov (8) msg_reg1.0<1>:ud ob_read_wb0<8,8,1>:ud {align1} ;
-
-send (16)
- msg_ind
- ob_write_wb
- null
- data_port(
- OB_CACHE_TYPE,
- OB_WRITE,
- OB_CONTROL_0,
- BIND_IDX_MFC_BATCHBUFFER,
- OB_WRITE_COMMIT_CATEGORY,
- OB_HEADER_PRESENT
- )
- mlen 2
- rlen ob_write_wb_length
- {align1};
-
- /* the new offset */
- add (1) tmp_slice_header.8<1>:ud tmp_slice_header.8<0,1,0>:ud 1:ud {align1} ;
- add (1) tmp_mfc_batchbuffer.8<1>:ud tmp_mfc_batchbuffer.8<0,1,0>:ud 1:ud {align1} ;
-
- add.z.f0.0 (1) tail_size<1>:w tail_size<0,1,0>:w -1:w {align1};
- (-f0.0)jmpi (1) __TAIL_LOOP ;
-
-
-__DONE:
-
- and.z.f0.0 (1) null<1>:uw flags<0,1,0>:uw FLAG_MASK_LAST_SLICE {align1};
- (f0.0)jmpi (1) __EXIT ;
-
-/* bind index 5, write 1 oword, msg type: 8(OWord Block Write) */
- mov (8) msg_reg0.0<1>:ud tmp_mfc_batchbuffer<8,8,1>:ud {align1} ;
- mov (4) msg_reg1.0<1>:ud 0x0:ud {align1} ;
- mov (1) msg_reg1.4<1>:ud MI_BATCH_BUFFER_END {align1} ;
-
-send (16)
- msg_ind
- ob_write_wb
- null
- data_port(
- OB_CACHE_TYPE,
- OB_WRITE,
- OB_CONTROL_0,
- BIND_IDX_MFC_BATCHBUFFER,
- OB_WRITE_COMMIT_CATEGORY,
- OB_HEADER_PRESENT
- )
- mlen 2
- rlen ob_write_wb_length
- {align1};
diff --git a/src/shaders/vld/Makefile b/src/shaders/vld/Makefile
deleted file mode 100644
index c0bda3a..0000000
--- a/src/shaders/vld/Makefile
+++ /dev/null
@@ -1,384 +0,0 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
-# i965_drv_video/shaders/vld/Makefile. Generated from Makefile.in by configure.
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-pkgdatadir = $(datadir)/libva
-pkglibdir = $(libdir)/libva
-pkgincludedir = $(includedir)/libva
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = x86_64-unknown-linux-gnu
-host_triplet = x86_64-unknown-linux-gnu
-subdir = i965_drv_video/shaders/vld
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = aclocal -I /opt/X11R7/share/aclocal
-AMTAR = ${SHELL} /root/libva/missing --run tar
-AR = ar
-AUTOCONF = ${SHELL} /root/libva/missing --run autoconf
-AUTOHEADER = ${SHELL} /root/libva/missing --run autoheader
-AUTOMAKE = ${SHELL} /root/libva/missing --run automake-1.10
-AWK = gawk
-CC = gcc
-CCDEPMODE = depmode=gcc3
-CFLAGS = -g -O2
-CPP = gcc -E
-CPPFLAGS =
-CXX = g++
-CXXCPP = g++ -E
-CXXDEPMODE = depmode=gcc3
-CXXFLAGS = -g -O2
-CYGPATH_W = echo
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DRM_CFLAGS = -I/opt/X11R7/include -I/opt/X11R7/include/drm
-DRM_LIBS = -L/opt/X11R7/lib -ldrm
-ECHO = echo
-ECHO_C =
-ECHO_N = -n
-ECHO_T =
-EGREP = /bin/grep -E
-EXEEXT =
-F77 = gfortran
-FFLAGS = -g -O2
-GREP = /bin/grep
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-LDFLAGS =
-LIBOBJS =
-LIBS =
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LN_S = ln -s
-LTLIBOBJS =
-MAKEINFO = ${SHELL} /root/libva/missing --run makeinfo
-MKDIR_P = /bin/mkdir -p
-OBJEXT = o
-PACKAGE = libva
-PACKAGE_BUGREPORT = waldo.bastian@intel.com
-PACKAGE_NAME = libva
-PACKAGE_STRING = libva 0.29
-PACKAGE_TARNAME = libva
-PACKAGE_VERSION = 0.29
-PATH_SEPARATOR = :
-PKG_CONFIG = /usr/bin/pkg-config
-RANLIB = ranlib
-SED = /bin/sed
-SET_MAKE =
-SHELL = /bin/sh
-STRIP = strip
-VERSION = 0.29
-abs_builddir = /root/libva/i965_drv_video/shaders/vld
-abs_srcdir = /root/libva/i965_drv_video/shaders/vld
-abs_top_builddir = /root/libva
-abs_top_srcdir = /root/libva
-ac_ct_CC = gcc
-ac_ct_CXX = g++
-ac_ct_F77 = gfortran
-am__include = include
-am__leading_dot = .
-am__quote =
-am__tar = ${AMTAR} chof - "$$tardir"
-am__untar = ${AMTAR} xf -
-bindir = ${exec_prefix}/bin
-build = x86_64-unknown-linux-gnu
-build_alias =
-build_cpu = x86_64
-build_os = linux-gnu
-build_vendor = unknown
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-gen4asm = no
-host = x86_64-unknown-linux-gnu
-host_alias =
-host_cpu = x86_64
-host_os = linux-gnu
-host_vendor = unknown
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-install_sh = $(SHELL) /root/libva/install-sh
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-mandir = ${datarootdir}/man
-mkdir_p = /bin/mkdir -p
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-pkgconfigdir = ${exec_prefix}/lib/pkgconfig
-prefix = /opt/X11R7
-program_transform_name = s,x,x,
-psdir = ${docdir}
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-sysconfdir = ${prefix}/etc
-target_alias =
-top_builddir = ../../..
-top_srcdir = ../../..
-INTEL_G4I = addidct.g4i \
- do_iq_intra.g4i \
- do_iq_non_intra.g4i \
- idct.g4i \
- iq_intra.g4i \
- iq_non_intra.g4i \
- motion_field_uv.g4i \
- motion_field_y.g4i \
- motion_frame_uv.g4i \
- motion_frame_y.g4i \
- read_field_x0y0_uv.g4i \
- read_field_x0y0_y.g4i \
- read_field_x0y1_y.g4i \
- read_field_x1y0_y.g4i \
- read_field_x1y1_y.g4i \
- read_frame_x0y0_uv.g4i \
- read_frame_x0y0_y.g4i \
- read_frame_x0y1_y.g4i \
- read_frame_x1y0_y.g4i \
- read_frame_x1y1_y.g4i
-
-INTEL_G4A = ipicture.g4a \
- lib.g4a \
- frame_forward.g4a \
- frame_backward.g4a \
- frame_f_b.g4a \
- field_forward.g4a \
- field_backward.g4a \
- field_f_b.g4a
-
-INTEL_G4B = ipicture.g4b \
- lib.g4b \
- frame_forward.g4b \
- frame_backward.g4b \
- frame_f_b.g4b \
- field_forward.g4b \
- field_backward.g4b \
- field_f_b.g4b
-
-EXTRA_DIST = $(INTEL_G4I) \
- $(INTEL_G4A) \
- $(INTEL_G4B)
-
-#SUFFIXES = .g4a .g4b
-#BUILT_SOURCES = $(INTEL_G4B)
-all: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) all-am
-
-.SUFFIXES:
-.SUFFIXES: .g4a .g4b
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu i965_drv_video/shaders/vld/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu i965_drv_video/shaders/vld/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
- fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) check-am
-all-am: Makefile
-installdirs:
-install: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
- -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
-clean-local:
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-local mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-info: install-info-am
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-ps: install-ps-am
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
- clean-local distclean distclean-generic distclean-libtool \
- distdir dvi dvi-am html html-am info info-am install \
- install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- uninstall uninstall-am
-
-#.g4a.g4b:
-# m4 $*.g4a > $*.g4m && intel-gen4asm -o $@ $*.g4m && rm $*.g4m
-
-#$(INTEL_G4B): $(INTEL_G4I)
-
-#clean-local:
-# -rm -f $(INTEL_G4B)
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/shaders/vme/Makefile.am b/src/shaders/vme/Makefile.am
deleted file mode 100644
index 83d337a..0000000
--- a/src/shaders/vme/Makefile.am
+++ /dev/null
@@ -1,118 +0,0 @@
-VME_CORE = batchbuffer.asm intra_frame.asm inter_frame.asm
-VME7_CORE = batchbuffer.asm intra_frame_ivb.asm inter_frame_ivb.asm inter_bframe_ivb.asm mpeg2_inter_ivb.asm
-VME75_CORE = batchbuffer.asm intra_frame_haswell.asm inter_frame_haswell.asm inter_bframe_haswell.asm mpeg2_inter_haswell.asm
-VME8_CORE = intra_frame_gen8.asm inter_frame_gen8.asm inter_bframe_gen8.asm mpeg2_inter_gen8.asm vp8_intra_frame_gen8.asm vp8_inter_frame_gen8.asm
-VME9_CORE = $(VME8_CORE)
-
-INTEL_G6B = batchbuffer.g6b intra_frame.g6b inter_frame.g6b
-INTEL_G6A = batchbuffer.g6a intra_frame.g6a inter_frame.g6a
-INTEL_GEN6_INC = batchbuffer.inc vme.inc
-INTEL_GEN6_ASM = $(INTEL_G6A:%.g6a=%.gen6.asm)
-
-INTEL_G7B = batchbuffer.g7b intra_frame.g7b inter_frame.g7b intra_frame_ivb.g7b inter_frame_ivb.g7b inter_bframe_ivb.g7b mpeg2_inter_ivb.g7b
-INTEL_G7A = batchbuffer.g7a intra_frame.g7a inter_frame.g7a intra_frame_ivb.g7a inter_frame_ivb.g7a inter_bframe_ivb.g7a mpeg2_inter_ivb.g7a
-INTEL_GEN7_INC = batchbuffer.inc vme.inc vme7_mpeg2.inc vme7.inc
-INTEL_GEN7_ASM = $(INTEL_G7A:%.g7a=%.gen7.asm)
-
-INTEL_G75B = batchbuffer.g75b intra_frame_haswell.g75b inter_frame_haswell.g75b inter_bframe_haswell.g75b mpeg2_inter_haswell.g75b
-INTEL_G75A = batchbuffer.g75a intra_frame_haswell.g75a inter_frame_haswell.g75a inter_bframe_haswell.g75a mpeg2_inter_haswell.g75a
-INTEL_GEN75_INC = batchbuffer.inc vme75.inc vme75_mpeg2.inc
-INTEL_GEN75_ASM = $(INTEL_G75A:%.g75a=%.gen75.asm)
-
-
-INTEL_G8B = intra_frame_gen8.g8b inter_frame_gen8.g8b inter_bframe_gen8.g8b mpeg2_inter_gen8.g8b vp8_intra_frame_gen8.g8b vp8_inter_frame_gen8.g8b
-INTEL_G8A = intra_frame_gen8.g8a inter_frame_gen8.g8a inter_bframe_gen8.g8a mpeg2_inter_gen8.g8a vp8_intra_frame_gen8.g8a vp8_inter_frame_gen8.g8a
-INTEL_GEN8_INC = vme8.inc vme75_mpeg2.inc
-INTEL_GEN8_ASM = $(INTEL_G8A:%.g8a=%.gen8.asm)
-
-
-INTEL_G9B = intra_frame_gen9.g9b inter_frame_gen9.g9b inter_bframe_gen9.g9b mpeg2_inter_gen9.g9b vp8_intra_frame_gen9.g9b vp8_inter_frame_gen9.g9b
-INTEL_G9A = intra_frame_gen9.g9a inter_frame_gen9.g9a inter_bframe_gen9.g9a mpeg2_inter_gen9.g9a vp8_intra_frame_gen9.g9a vp8_inter_frame_gen9.g9a
-INTEL_GEN9_INC = $(INTEL_GEN8_INC)
-INTEL_GEN9_ASM = $(INTEL_G9A:%.g9a=%.gen9.asm)
-
-
-TARGETS =
-if HAVE_GEN4ASM
-TARGETS += $(INTEL_G6B)
-TARGETS += $(INTEL_G7B)
-TARGETS += $(INTEL_G75B)
-TARGETS += $(INTEL_G8B)
-TARGETS += $(INTEL_G9B)
-endif
-
-all-local: $(TARGETS)
-
-SUFFIXES = .g6a .g6b .g7a .g7b .gen6.asm .gen7.asm .g75a .g75b .gen75.asm .g8a .g8b .gen8.asm .g9a .g9b .gen9.asm
-
-if HAVE_GEN4ASM
-$(INTEL_GEN6_ASM): $(VME_CORE) $(INTEL_GEN6_INC)
-.g6a.gen6.asm:
- $(AM_V_GEN)cpp -P -DDEV_SNB $< > _vme0.$@ && \
- m4 _vme0.$@ > $@ && \
- rm _vme0.$@
-.gen6.asm.g6b:
- $(AM_V_GEN)$(GEN4ASM) -g 6 -o $@ $<
-
-$(INTEL_GEN7_ASM): $(VME7_CORE) $(INTEL_GEN7_INC)
-.g7a.gen7.asm:
- $(AM_V_GEN)cpp -P -DDEV_IVB $< > _vme0.$@ && \
- m4 _vme0.$@ > $@ && \
- rm _vme0.$@
-.gen7.asm.g7b:
- $(AM_V_GEN)$(GEN4ASM) -g 7 -o $@ $<
-
-
-$(INTEL_GEN75_ASM): $(VME75_CORE) $(INTEL_GEN75_INC)
-.g75a.gen75.asm:
- $(AM_V_GEN)cpp -P $< > _vme0.$@ && \
- m4 _vme0.$@ > $@ && \
- rm _vme0.$@
-.gen75.asm.g75b:
- $(AM_V_GEN)$(GEN4ASM) -g 7.5 -o $@ $<
-
-$(INTEL_GEN8_ASM): $(VME8_CORE) $(INTEL_GEN8_INC)
-.g8a.gen8.asm:
- $(AM_V_GEN)cpp -P $< > _vme0.$@ && \
- m4 _vme0.$@ > $@ && \
- rm _vme0.$@
-.gen8.asm.g8b:
- $(AM_V_GEN)$(GEN4ASM) -g 8 -o $@ $<
-
-$(INTEL_GEN9_ASM): $(VME9_CORE) $(INTEL_GEN9_INC)
-.g9a.gen9.asm:
- $(AM_V_GEN)cpp -P $< > _vme0.$@ && \
- m4 _vme0.$@ > $@ && \
- rm _vme0.$@
-.gen9.asm.g9b:
- $(AM_V_GEN)$(GEN4ASM) -g 9 -o $@ $<
-
-endif
-
-CLEANFILES = $(INTEL_GEN6_ASM) $(INTEL_GEN7_ASM) $(INTEL_GEN75_ASM) $(INTEL_GEN8_ASM) $(INTEL_GEN9_ASM)
-
-EXTRA_DIST = \
- $(INTEL_G6A) \
- $(INTEL_G6B) \
- $(INTEL_G75A) \
- $(INTEL_G75B) \
- $(INTEL_G7A) \
- $(INTEL_G7B) \
- $(INTEL_G8A) \
- $(INTEL_G8B) \
- $(INTEL_G9A) \
- $(INTEL_G9B) \
- $(INTEL_GEN6_INC) \
- $(INTEL_GEN75_INC) \
- $(INTEL_GEN7_INC) \
- $(INTEL_GEN8_INC) \
- $(INTEL_GEN9_INC) \
- $(VME75_CORE) \
- $(VME7_CORE) \
- $(VME8_CORE) \
- $(VME9_CORE) \
- $(VME_CORE) \
- $(NULL)
-
-# Extra clean files so that maintainer-clean removes *everything*
-MAINTAINERCLEANFILES = Makefile.in
diff --git a/src/shaders/vme/batchbuffer.asm b/src/shaders/vme/batchbuffer.asm
deleted file mode 100644
index b8ba3b2..0000000
--- a/src/shaders/vme/batchbuffer.asm
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- */
-
-/*
- * __START
- */
-__START:
- mov (16) tmp_reg0<1>:ud 0x0:ud {align1} ;
- mov (16) tmp_reg2<1>:ud 0x0:ud {align1} ;
- mov (1) obw_header.20<1>:ub thread_id_ub {align1}; /* dispatch id */
-
- mov (8) media_object_ud<1>:ud 0x0:ud {align1} ;
- mov (1) media_object0_ud<1>:ud CMD_MEDIA_OBJECT {align1} ;
- mov (1) media_object1_ud<1>:ud mtype_ub<0,1,0>ub {align1};
- mov (1) media_object6_width<1>:uw width_in_mb<0,1,0>:uw {align1};
- mov (1) media_object7_flag<1>:uw transform_8x8_ub<0,1,0>ub {align1};
- mov (1) media_object7_num_mbs<1>:uw NUM_MACROBLOCKS_PER_COMMAND:uw {align1} ;
-
- mov (1) width_per_row<1>:ud width_in_mb<0,1,0>:uw {align1} ;
- and.z.f0.1 (1) remainder_cmds<1>:ud total_mbs<0,1,0>:ud (NUM_MACROBLOCKS_PER_COMMAND - 1):ud {align1} ;
- and.z.f0.0 (1) total_mbs<1>:ud total_mbs<0,1,0>:ud -NUM_MACROBLOCKS_PER_COMMAND:ud {align1} ;
-
- (f0.0)jmpi (1) __REMAINDER ;
-
-__CMD_LOOP:
- mov (8) msg_reg0.0<1>:ud obw_header<8,8,1>:ud {align1};
- mov (8) msg_reg1<1>:ud media_object_ud<8,8,1>:ud {align1};
-
-/* bind index 5, write 2 oword, msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
- /* (x, y) of the first macroblock */
- add (1) count<1>:ud count<0,1,0>:ud NUM_MACROBLOCKS_PER_COMMAND:uw {align1} ;
- math (1) quotient<1>:ud count<0,1,0>:ud width_per_row<0,1,0>:ud intdivmod {align1} ;
- shl (1) quotient<1>:ud quotient<0,1,0>:ud 8:uw {align1} ;
- add (1) quotient<1>:ud quotient<0,1,0>:ud remainder<0,1,0>:ud {align1} ;
- mov (1) media_object6_xy<1>:uw quotient<0,1,0>:uw {align1} ;
-
- /* the new offset */
- add (1) obw_header.8<1>:ud obw_header.8<0,1,0>:ud 2:uw {align1} ;
-
- add.z.f0.0 (1) total_mbs<1>:w total_mbs<0,1,0>:w -NUM_MACROBLOCKS_PER_COMMAND:w {align1} ;
- (-f0.0)jmpi (1) __CMD_LOOP ;
-
-__REMAINDER:
- (f0.1)jmpi (1) __DONE ;
-
- mov (1) media_object7_num_mbs<1>:uw remainder_cmds<0,1,0>:uw {align1} ;
- mov (8) msg_reg0.0<1>:ud obw_header<8,8,1>:ud {align1};
- mov (8) msg_reg1<1>:ud media_object_ud<8,8,1>:ud {align1};
-
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
- /* the new offset */
- add (1) obw_header.8<1>:ud obw_header.8<0,1,0>:ud 2:uw {align1} ;
-
-__DONE:
-
-/* bind index 5, write 1 oword, msg type: 8(OWord Block Write) */
- mov (8) msg_reg0.0<1>:ud obw_header<8,8,1>:ud {align1} ;
- mov (4) msg_reg1.0<1>:ud 0x0:ud {align1} ;
- mov (1) msg_reg1.4<1>:ud MI_BATCH_BUFFER_END {align1} ;
-
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_0,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-__EXIT:
- mov (8) msg_reg0<1>:ud r0<8,8,1>:ud {align1} ;
- send (16) msg_ind acc0<1>ud null thread_spawner(0, 0, 1) mlen 1 rlen 0 {align1 EOT} ;
diff --git a/src/shaders/vme/batchbuffer.g6a b/src/shaders/vme/batchbuffer.g6a
deleted file mode 100644
index 08ec2bc..0000000
--- a/src/shaders/vme/batchbuffer.g6a
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- */
-
-#include "batchbuffer.inc"
-#include "batchbuffer.asm"
-
diff --git a/src/shaders/vme/batchbuffer.g6b b/src/shaders/vme/batchbuffer.g6b
deleted file mode 100644
index cd3e8cc..0000000
--- a/src/shaders/vme/batchbuffer.g6b
+++ /dev/null
@@ -1,36 +0,0 @@
- { 0x00800001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x21140231, 0x00000014, 0x00000000 },
- { 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22000061, 0x00000000, 0x71000006 },
- { 0x00000001, 0x22040221, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x221a0129, 0x000000a6, 0x00000000 },
- { 0x00000001, 0x221c0229, 0x000000a4, 0x00000000 },
- { 0x00000001, 0x221e0169, 0x00000000, 0x02000200 },
- { 0x00000001, 0x21280121, 0x000000a6, 0x00000000 },
- { 0x01000005, 0x21240c21, 0x020000a0, 0x000001ff },
- { 0x01000005, 0x20a00c21, 0x000000a0, 0xfffffe00 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00600001, 0x20000022, 0x008d0100, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0200, 0x00000000 },
- { 0x05800031, 0x22401cdd, 0x00000000, 0x041b0205 },
- { 0x00000040, 0x21202c21, 0x00000120, 0x02000200 },
- { 0x0b000038, 0x21400421, 0x00000120, 0x00000128 },
- { 0x00000009, 0x21402c21, 0x00000140, 0x00080008 },
- { 0x00000040, 0x21400421, 0x00000140, 0x00000160 },
- { 0x00000001, 0x22180129, 0x00000140, 0x00000000 },
- { 0x00000040, 0x21082c21, 0x00000108, 0x00020002 },
- { 0x01000040, 0x20a03dad, 0x000000a0, 0xfe00fe00 },
- { 0x00110020, 0x34001c00, 0x00001400, 0xffffffea },
- { 0x00010020, 0x34001c00, 0x02001400, 0x0000000a },
- { 0x00000001, 0x221e0129, 0x00000124, 0x00000000 },
- { 0x00600001, 0x20000022, 0x008d0100, 0x00000000 },
- { 0x00600001, 0x20200022, 0x008d0200, 0x00000000 },
- { 0x05800031, 0x22401cdd, 0x00000000, 0x041b0205 },
- { 0x00000040, 0x21082c21, 0x00000108, 0x00020002 },
- { 0x00600001, 0x20000022, 0x008d0100, 0x00000000 },
- { 0x00400001, 0x20200062, 0x00000000, 0x00000000 },
- { 0x00000001, 0x20240062, 0x00000000, 0x05000000 },
- { 0x05800031, 0x22401cdd, 0x00000000, 0x041b0005 },
- { 0x00600001, 0x20000022, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24001cc0, 0x00000000, 0x82000010 },
diff --git a/src/shaders/vme/batchbuffer.g75a b/src/shaders/vme/batchbuffer.g75a
deleted file mode 100644
index 9a4c31a..0000000
--- a/src/shaders/vme/batchbuffer.g75a
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "batchbuffer.inc"
-#include "batchbuffer.asm"
diff --git a/src/shaders/vme/batchbuffer.g75b b/src/shaders/vme/batchbuffer.g75b
deleted file mode 100644
index 41b0203..0000000
--- a/src/shaders/vme/batchbuffer.g75b
+++ /dev/null
@@ -1,36 +0,0 @@
- { 0x00800001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x21140231, 0x00000014, 0x00000000 },
- { 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22000061, 0x00000000, 0x71000006 },
- { 0x00000001, 0x22040221, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x221a0129, 0x000000a6, 0x00000000 },
- { 0x00000001, 0x221c0229, 0x000000a4, 0x00000000 },
- { 0x00000001, 0x221e0169, 0x00000000, 0x02000200 },
- { 0x00000001, 0x21280121, 0x000000a6, 0x00000000 },
- { 0x01000005, 0x21240c21, 0x020000a0, 0x000001ff },
- { 0x01000005, 0x20a00c21, 0x000000a0, 0xfffffe00 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000b0 },
- { 0x00600001, 0x28000021, 0x008d0100, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0200, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0205 },
- { 0x00000040, 0x21202c21, 0x00000120, 0x02000200 },
- { 0x0b000038, 0x21400421, 0x00000120, 0x00000128 },
- { 0x00000009, 0x21402c21, 0x00000140, 0x00080008 },
- { 0x00000040, 0x21400421, 0x00000140, 0x00000160 },
- { 0x00000001, 0x22180129, 0x00000140, 0x00000000 },
- { 0x00000040, 0x21082c21, 0x00000108, 0x00020002 },
- { 0x01000040, 0x20a03dad, 0x000000a0, 0xfe00fe00 },
- { 0x00110020, 0x34001c00, 0x00001400, 0xffffff50 },
- { 0x00010020, 0x34001c00, 0x02001400, 0x00000050 },
- { 0x00000001, 0x221e0129, 0x00000124, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0100, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0200, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0205 },
- { 0x00000040, 0x21082c21, 0x00000108, 0x00020002 },
- { 0x00600001, 0x28000021, 0x008d0100, 0x00000000 },
- { 0x00400001, 0x28200061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x28240061, 0x00000000, 0x05000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0005 },
- { 0x00600001, 0x28000021, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24001ca0, 0x00000800, 0x82000010 },
diff --git a/src/shaders/vme/batchbuffer.g7a b/src/shaders/vme/batchbuffer.g7a
deleted file mode 100644
index 08ec2bc..0000000
--- a/src/shaders/vme/batchbuffer.g7a
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- */
-
-#include "batchbuffer.inc"
-#include "batchbuffer.asm"
-
diff --git a/src/shaders/vme/batchbuffer.g7b b/src/shaders/vme/batchbuffer.g7b
deleted file mode 100644
index 1bbbe09..0000000
--- a/src/shaders/vme/batchbuffer.g7b
+++ /dev/null
@@ -1,36 +0,0 @@
- { 0x00800001, 0x21000061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x21400061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x21140231, 0x00000014, 0x00000000 },
- { 0x00600001, 0x22000061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22000061, 0x00000000, 0x71000006 },
- { 0x00000001, 0x22040221, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x221a0129, 0x000000a6, 0x00000000 },
- { 0x00000001, 0x221c0229, 0x000000a4, 0x00000000 },
- { 0x00000001, 0x221e0169, 0x00000000, 0x02000200 },
- { 0x00000001, 0x21280121, 0x000000a6, 0x00000000 },
- { 0x01000005, 0x21240c21, 0x020000a0, 0x000001ff },
- { 0x01000005, 0x20a00c21, 0x000000a0, 0xfffffe00 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000016 },
- { 0x00600001, 0x28000021, 0x008d0100, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0200, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0205 },
- { 0x00000040, 0x21202c21, 0x00000120, 0x02000200 },
- { 0x0b000038, 0x21400421, 0x00000120, 0x00000128 },
- { 0x00000009, 0x21402c21, 0x00000140, 0x00080008 },
- { 0x00000040, 0x21400421, 0x00000140, 0x00000160 },
- { 0x00000001, 0x22180129, 0x00000140, 0x00000000 },
- { 0x00000040, 0x21082c21, 0x00000108, 0x00020002 },
- { 0x01000040, 0x20a03dad, 0x000000a0, 0xfe00fe00 },
- { 0x00110020, 0x34001c00, 0x00001400, 0xffffffea },
- { 0x00010020, 0x34001c00, 0x02001400, 0x0000000a },
- { 0x00000001, 0x221e0129, 0x00000124, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0100, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0200, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0205 },
- { 0x00000040, 0x21082c21, 0x00000108, 0x00020002 },
- { 0x00600001, 0x28000021, 0x008d0100, 0x00000000 },
- { 0x00400001, 0x28200061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x28240061, 0x00000000, 0x05000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0005 },
- { 0x00600001, 0x28000021, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24001ca0, 0x00000800, 0x82000010 },
diff --git a/src/shaders/vme/batchbuffer.inc b/src/shaders/vme/batchbuffer.inc
deleted file mode 100644
index 5cb86ab..0000000
--- a/src/shaders/vme/batchbuffer.inc
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Xiang Haihao <haihao.xiang@intel.com>
- */
-
-define(`BIND_IDX_VME', `0')
-define(`BIND_IDX_VME_REF0', `1')
-define(`BIND_IDX_VME_REF1', `2')
-define(`BIND_IDX_OUTPUT', `3')
-define(`BIND_IDX_INEP', `4')
-define(`BIND_IDX_VME_BATCHBUFFER', `5')
-
-#ifdef DEV_SNB
-
-define(`OBW_CACHE_TYPE', `5')
-
-#else
-
-define(`OBW_CACHE_TYPE', `10')
-
-#endif
-
-define(`OBW_MESSAGE_TYPE', `8')
-
-define(`OBW_BIND_IDX', `BIND_IDX_VME_BATCHBUFFER')
-
-define(`OBW_CONTROL_0', `0') /* 1 OWord, low 128 bits */
-define(`OBW_CONTROL_1', `1') /* 1 OWord, high 128 bits */
-define(`OBW_CONTROL_2', `2') /* 2 OWords */
-define(`OBW_CONTROL_3', `3') /* 4 OWords */
-define(`OBW_CONTROL_4', `4') /* 8 OWords */
-
-#ifdef DEV_SNB
-
-define(`OBW_WRITE_COMMIT_CATEGORY', `1') /* write commit on Sandybrige */
-
-#else
-
-define(`OBW_WRITE_COMMIT_CATEGORY', `0') /* category on Ivybridge */
-
-#endif
-
-define(`OBW_HEADER_PRESENT', `1')
-
-define(`CMD_MEDIA_OBJECT', `0x71000006:UD')
-define(`MI_BATCH_BUFFER_END', `0x05000000:UD')
-
-define(`NUM_MACROBLOCKS_PER_COMMAND', `512')
-
-/* GRF registers
- * r0 header
- * r1~r4 constant buffer (reserved)
- * r5 inline data
- * r6~r7 reserved
- * r8~r15 temporary registers
- * r16 media object command
- * r17
- * r18 write back of Oword Block Write
- */
-/*
- * GRF 0 -- header
- */
-define(`thread_id_ub', `r0.20<0,1,0>:UB') /* thread id in payload */
-
-/*
- * GRF 1~4 -- Constant Buffer (reserved)
- */
-
-/*
- * GRF 5 -- inline data
- */
-define(`inline_reg0', `r5')
-define(`total_mbs', `inline_reg0.0') /* the number of macroblocks in a picture */
-define(`transform_8x8_ub', `inline_reg0.4') /* transform_8x8 flag */
-define(`mtype_ub', `inline_reg0.5') /* 0: INTRA, 1: INTER */
-define(`width_in_mb', `inline_reg0.6') /* the picture width in macroblocks */
-
-/*
- * GRF 8~15 -- temporary registers
- */
-define(`tmp_reg0', `r8')
-define(`obw_header', `tmp_reg0')
-define(`tmp_reg1', `r9')
-define(`count', `tmp_reg1.0')
-define(`remainder_cmds', `tmp_reg1.4')
-define(`width_per_row', `tmp_reg1.8')
-define(`tmp_reg2', `r10')
-define(`quotient', `tmp_reg2')
-define(`tmp_reg3', `r11')
-define(`remainder', `tmp_reg3')
-define(`tmp_reg4', `r12')
-define(`tmp_reg5', `r13')
-define(`tmp_reg6', `r14')
-define(`tmp_reg7', `r15')
-
-/*
- * GRF 16
- */
-define(`media_object_ud', `r16.0')
-define(`media_object0_ud', `r16.0')
-define(`media_object1_ud', `r16.4')
-define(`media_object2_ud', `r16.8')
-define(`media_object3_ud', `r16.12')
-define(`media_object4_ud', `r16.16')
-define(`media_object5_ud', `r16.20')
-define(`media_object6_ud', `r16.24')
-define(`media_object6_xy', `r16.24')
-define(`media_object6_x', `r16.24')
-define(`media_object6_y', `r16.25')
-define(`media_object6_width', `r16.26')
-define(`media_object7_ud', `r16.28')
-define(`media_object7_flag', `r16.28')
-define(`media_object7_num_mbs', `r16.30')
-
-/*
- * GRF 18 write back for Oword Block Write message
- */
-
-#if DEV_SNB
-
-define(`obw_wb', `r18')
-define(`obw_wb_length', `1')
-
-#else
-
-/*
- * write commit is removed on Ivybridge
- */
-define(`obw_wb', `null<1>:W')
-define(`obw_wb_length', `0')
-
-#endif
-
-/*
- * Message Payload registers
- */
-#if DEV_SNB
-
-define(`msg_ind', `0')
-define(`msg_reg0', `m0')
-define(`msg_reg1', `m1')
-define(`msg_reg2', `m2')
-define(`msg_reg3', `m3')
-define(`msg_reg4', `m4')
-define(`msg_reg5', `m5')
-define(`msg_reg6', `m6')
-define(`msg_reg7', `m7')
-define(`msg_reg8', `m8')
-
-#else
-
-define(`msg_ind', `64')
-define(`msg_reg0', `g64')
-define(`msg_reg1', `g65')
-define(`msg_reg2', `g66')
-define(`msg_reg3', `g67')
-define(`msg_reg4', `g68')
-define(`msg_reg5', `g69')
-define(`msg_reg6', `g70')
-define(`msg_reg7', `g71')
-define(`msg_reg8', `g72')
-
-#endif
diff --git a/src/shaders/vme/inter_bframe_gen8.asm b/src/shaders/vme/inter_bframe_gen8.asm
deleted file mode 100644
index b37cd7f..0000000
--- a/src/shaders/vme/inter_bframe_gen8.asm
+++ /dev/null
@@ -1,891 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- * Authors: Zhao Yakui <yakui.zhao@intel.com>
- */
-// Modual name: Inter_bframe_haswell.asm
-//
-// Make inter predition estimation for Inter frame for B-frame
-//
-
-//
-// Now, begin source code....
-//
-
-#define SAVE_RET add (1) RETURN_REG<1>:ud ip:ud 32:ud
-#define RETURN mov (1) ip:ud RETURN_REG<0,1,0>:ud
-
-/*
- * __START
- */
-__INTER_START:
-mov (16) tmp_reg0.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg2.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg4.0<1>:UD 0x0:UD {align1} ;
-mov (16) tmp_reg6.0<1>:UD 0x0:UD {align1} ;
-
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-mov (1) read0_header.8<1>:UD BLOCK_32X1 {align1};
-mov (1) read0_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-mov (1) read1_header.8<1>:UD BLOCK_4X16 {align1};
-mov (1) read1_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) vme_m0.8<1>:UW orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-mov (1) vme_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-mul (1) obw_m0.8<1>:UD w_in_mb_uw<0,1,0>:UW orig_y_ub<0,1,0>:UB {align1};
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD orig_x_ub<0,1,0>:UB {align1};
-mul (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 24:UD {align1};
-mov (1) obw_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/*
- * Media Read Message -- fetch Luma neighbor edge pixels
- */
-/* ROW */
-mov (8) msg_reg0.0<1>:UD read0_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_ROW<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* COL */
-mov (8) msg_reg0.0<1>:UD read1_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_COL0<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 2 {align1};
-
-/*
- * Media Read Message -- fetch Chroma neighbor edge pixels
- */
-/* ROW */
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 3:UW {align1}; /* x * 16 , y * 8 */
-mul (1) read0_header.0<1>:D read0_header.0<0,1,0>:D 2:W {align1};
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-mov (8) msg_reg0.0<1>:UD read0_header.0<8,8,1>:UD {align1};
-send (8) msg_ind CHROMA_ROW<1>:UB null read(BIND_IDX_CBCR, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* COL */
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 3:UW {align1}; /* x * 16, y * 8 */
-mul (1) read1_header.0<1>:D read1_header.0<0,1,0>:D 2:W {align1};
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-mov (1) read1_header.8<1>:UD BLOCK_8X4 {align1};
-mov (8) msg_reg0.0<1>:UD read1_header.0<8,8,1>:UD {align1};
-send (8) msg_ind CHROMA_COL<1>:UB null read(BIND_IDX_CBCR, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-mov (8) vme_m1.0<1>:ud 0:ud {align1};
-mov (8) mb_mvp_ref.0<1>:ud 0:ud {align1};
-mov (8) mb_ref_win.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw mb_hwdep<0,1,0>:uw 0x04:uw {align1};
-(f0.0) jmpi (1) __mb_hwdep_end;
-
-/* read back the data for MB A */
-/* the layout of MB result is: rx.0(Available). rx.4(MVa), rX.8(MVb), rX.16(Pred_L0 flag),
-* rX.18 (Pred_L1 flag), rX.20(Forward reference ID), rX.22(Backwared reference ID)
-*/
-mov (8) mba_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbb_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbc_result.0<1>:ud 0x0:ud {align1};
-mba_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (2) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_AE:uw {align1};
-/* MB A doesn't exist. Zero MV. mba_flag is zero and ref ID = -1 */
-(f0.0) mov (2) mba_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbb_start;
-mov (1) mba_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (2) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mba_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbb_start;
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB A */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-/* MV */
-mov (2) mba_result.20<1>:w -1:w {align1};
-mov (1) INPUT_ARG0.0<1>:ud mb_inter_wb.4<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.4<1>:ud mb_inter_wb.0<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.8<1>:ud INTER_BLOCK1:ud {align1};
-SAVE_RET {align1};
-jmpi (1) mb_pred_func;
-mov (1) mb_pred_mode.0<1>:uw RET_ARG<0,1,0>:uw {align1};
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L0 {align1};
-(f0.0) mov (1) mba_result.16<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mba_result.20<1>:w 0:w {align1};
-(f0.0) mov (1) mba_result.4<1>:ud mb_mv1.8<0,1,0>:ud {align1};
-(f0.0) jmpi (1) mbb_start;
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L1 {align1};
-(f0.0) mov (1) mba_result.18<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mba_result.22<1>:w 0:w {align1};
-(f0.0) mov (1) mba_result.8<1>:ud mb_mv1.12<0,1,0>:ud {align1};
-(f0.0) jmpi (1) mbb_start;
-mov (2) mba_result.4<1>:ud mb_mv1.8<2,2,1>:ud {align1};
-mov (2) mba_result.16<1>:uw MB_PRED_FLAG {align1};
-mov (2) mba_result.20<1>:w 0:w {align1};
-
-mbb_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (2) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_B:uw {align1};
-/* MB B doesn't exist. Zero MV. mba_flag is zero */
-/* If MB B doesn't exist, neither MB C nor D exists */
-(f0.0) mov (2) mbb_result.20<1>:w -1:w {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (1) mbb_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (2) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mbb_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbc_start;
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB B */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-mov (2) mbb_result.20<1>:w -1:w {align1};
-mov (1) INPUT_ARG0.0<1>:ud mb_inter_wb.4<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.4<1>:ud mb_inter_wb.0<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.8<1>:ud INTER_BLOCK2:ud {align1};
-SAVE_RET {align1};
-jmpi (1) mb_pred_func;
-mov (1) mb_pred_mode.0<1>:uw RET_ARG<0,1,0>:uw {align1};
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L0 {align1};
-(f0.0) mov (1) mbb_result.16<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mbb_result.20<1>:w 0:w {align1};
-(f0.0) mov (1) mbb_result.4<1>:ud mb_mv2.16<0,1,0>:ud {align1};
-(f0.0) jmpi (1) mbc_start;
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L1 {align1};
-(f0.0) mov (1) mbb_result.18<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mbb_result.22<1>:w 0:w {align1};
-(f0.0) mov (1) mbb_result.8<1>:ud mb_mv2.20<0,1,0>:ud {align1};
-(f0.0) jmpi (1) mbc_start;
-mov (2) mbb_result.16<1>:uw MB_PRED_FLAG {align1};
-mov (2) mbb_result.20<1>:w 0:w {align1};
-mov (2) mbb_result.4<1>:ud mb_mv2.16<2,2,1>:ud {align1};
-
-mbc_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_C:uw {align1};
-/* MB C doesn't exist. Zero MV. mba_flag is zero */
-/* Based on h264 spec the MB D will be replaced if MB C doesn't exist */
-(f0.0) jmpi (1) mbd_start;
-mov (1) mbc_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (2) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB C */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-/* Forward MV */
-mov (2) mbc_result.20<1>:w -1:w {align1};
-mov (1) INPUT_ARG0.0<1>:ud mb_inter_wb.4<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.4<1>:ud mb_inter_wb.0<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.8<1>:ud INTER_BLOCK2:ud {align1};
-SAVE_RET {align1};
-jmpi (1) mb_pred_func;
-mov (1) mb_pred_mode.0<1>:uw RET_ARG<0,1,0>:uw {align1};
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L0 {align1};
-(f0.0) mov (1) mbc_result.16<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mbc_result.20<1>:w 0:w {align1};
-(f0.0) mov (1) mbc_result.4<1>:ud mb_mv2.16<0,1,0>:ud {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L1 {align1};
-(f0.0) mov (1) mbc_result.18<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mbc_result.22<1>:w 0:w {align1};
-(f0.0) mov (1) mbc_result.8<1>:ud mb_mv2.20<0,1,0>:ud {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (2) mbc_result.16<1>:uw MB_PRED_FLAG {align1};
-mov (2) mbc_result.20<1>:w 0:w {align1};
-mov (2) mbc_result.4<1>:ud mb_mv2.16<2,2,1>:ud {align1};
-
-jmpi (1) mb_mvp_start;
-mbd_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (2) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_D:uw {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (1) mbc_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (2) tmp_reg0.0<1>:w tmp_reg0.0<2,2,1>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-cmp.l.f0.0 (2) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB D */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ub
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-
-/* Forward MV */
-mov (2) mbc_result.20<1>:w -1:w {align1};
-mov (1) INPUT_ARG0.0<1>:ud mb_inter_wb.4<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.4<1>:ud mb_inter_wb.0<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.8<1>:ud INTER_BLOCK3:ud {align1};
-SAVE_RET {align1};
-jmpi (1) mb_pred_func;
-mov (1) mb_pred_mode.0<1>:uw RET_ARG<0,1,0>:uw {align1};
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L0 {align1};
-(f0.0) mov (1) mbc_result.16<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mbc_result.20<1>:w 0:w {align1};
-(f0.0) mov (1) mbc_result.4<1>:ud mb_mv3.24<0,1,0>:ud {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L1 {align1};
-(f0.0) mov (1) mbc_result.18<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mbc_result.22<1>:w 0:w {align1};
-(f0.0) mov (1) mbc_result.8<1>:ud mb_mv3.28<0,1,0>:ud {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (2) mbc_result.16<1>:uw MB_PRED_FLAG {align1};
-mov (2) mbc_result.20<1>:w 0:w {align1};
-mov (2) mbc_result.4<1>:ud mb_mv3.24<2,2,1>:ud {align1};
-
-mb_mvp_start:
-/*TODO: Add the skip prediction */
-/* Check whether both MB B and C are inavailable */
-add (1) tmp_reg0.0<1>:d mbb_result.0<0,1,0>:d mbc_result.0<0,1,0>:d {align1};
-cmp.z.f0.0 (1) null:d tmp_reg0.0<0,1,0>:d 0:d {align1};
-(-f0.0) jmpi (1) mb_median_start;
-cmp.nz.f0.0 (2) null:d mba_result.0<0,1,0>:d 0:d {align1};
-(f0.0) mov (2) mbb_result.4<1>:ud mba_result.4<2,2,1>:ud {align1};
-(f0.0) mov (2) mbc_result.4<1>:ud mba_result.4<2,2,1>:ud {align1};
-(f0.0) mov (2) mbb_result.20<1>:uw mba_result.20<2,2,1>:uw {align1};
-(f0.0) mov (2) mbc_result.20<1>:uw mba_result.20<2,2,1>:uw {align1};
-(f0.0) mov (2) mb_mvp_ref.0<1>:ud mba_result.4<2,2,1>:ud {align1};
-(-f0.0) mov (2) mb_mvp_ref.0<1>:ud 0:ud {align1};
-jmpi (1) __mb_hwdep_end;
-
-mb_median_start:
-/* forward_MVP */
-/* check whether only one neighbour MB has the same ref ID with the current MB */
-mov (8) tmp_reg0.0<1>:ud 0:ud {align1};
-cmp.z.f0.0 (1) null:d mba_result.20<0,1,0>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbb_result.20<0,1,0>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbb_result.4<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbc_result.20<0,1,0>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbc_result.4<0,1,0>:ud {align1};
-cmp.e.f0.0 (1) null:d tmp_reg0.0<0,1,0>:w 1:w {align1};
-(f0.0) mov (1) mb_mvp_ref.0<1>:ud tmp_reg0.4<0,1,0>:ud {align1};
-(f0.0) jmpi (1) mvp_backward;
-
-mov (1) INPUT_ARG0.0<1>:w mba_result.4<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.4<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.4<0,1,0>:w {align1};
-SAVE_RET {align1};
- jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.0<1>:w RET_ARG<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.0<1>:w mba_result.6<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.6<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.6<0,1,0>:w {align1};
-SAVE_RET {align1};
-jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.2<1>:w RET_ARG<0,1,0>:w {align1};
-
-
-mvp_backward:
-/* check whether only one neighbour MB has the same ref ID with the current MB */
-mov (8) tmp_reg0.0<1>:ud 0:ud {align1};
-cmp.z.f0.0 (1) null:d mba_result.22<0,1,0>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mba_result.8<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbb_result.22<0,1,0>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbb_result.8<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbc_result.22<0,1,0>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbc_result.8<0,1,0>:ud {align1};
-cmp.e.f0.0 (1) null:d tmp_reg0.0<0,1,0>:w 1:w {align1};
-(f0.0) mov (1) mb_mvp_ref.4<1>:ud tmp_reg0.4<0,1,0>:ud {align1};
-(f0.0) jmpi (1) __mb_hwdep_end;
-
-mov (1) INPUT_ARG0.0<1>:w mba_result.8<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.8<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.8<0,1,0>:w {align1};
-SAVE_RET {align1};
- jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.4<1>:w RET_ARG<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.0<1>:w mba_result.10<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.10<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.10<0,1,0>:w {align1};
-SAVE_RET {align1};
-jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.6<1>:w RET_ARG<0,1,0>:w {align1};
-
-__mb_hwdep_end:
-asr (4) mb_ref_win.0<1>:w mb_mvp_ref.0<4,4,1>:w 2:w {align1};
-add (4) mb_ref_win.8<1>:w mb_ref_win.0<4,4,1>:w 3:w {align1};
-and (4) mb_ref_win.16<1>:uw mb_ref_win.8<4,4,1>:uw 0xFFFC:uw {align1};
-/* m2, get the MV/Mb cost passed from constant buffer when
-spawning thread by MEDIA_OBJECT */
-mov (8) vme_m2<1>:UD r1.0<8,8,1>:UD {align1};
-
-mov (8) vme_msg_2<1>:UD vme_m2.0<8,8,1>:UD {align1};
-/* m3 cost center */
-mov (8) vme_m3.0<1>:ud 0x0:ud {align1};
-mov (8) vme_msg_3<1>:UD vme_m3.0<8,8,1>:UD {align1};
-
-/* m4. skip center */
-mov (8) vme_msg_4<1>:ud 0x0:ud {align1};
-
-/* m5 */
-mov (1) INEP_ROW.0<1>:UD 0x0:UD {align1};
-and (1) INEP_ROW.4<1>:UD INEP_ROW.4<0,1,0>:UD 0xFF000000:UD {align1};
-mov (8) vme_msg_5<1>:UD INEP_ROW.0<8,8,1>:UD {align1};
-/* Use the Luma mode */
-mov (1) tmp_reg0.0<1>:UW LUMA_INTRA_MODE:UW {align1};
-mov (1) vme_msg_5.5<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-/* m6 */
-mov (8) vme_msg_6<1>:UD 0x0:UD {align1};
-mov (16) vme_msg_6.0<1>:UB INEP_COL0.3<32,8,4>:UB {align1};
-mov (1) vme_msg_6.16<1>:UD INTRA_PREDICTORE_MODE {align1};
-
-/* the penalty for Intra mode */
-mov (1) vme_msg_6.28<1>:UD 0x010101:UD {align1};
-mov (1) vme_msg_6.20<1>:UW CHROMA_ROW.6<0,1,0>:UW {align1};
-
-
-/* m7 */
-
-mov (4) vme_msg_7.16<1>:UD CHROMA_ROW.8<4,4,1>:UD {align1};
-mov (8) vme_msg_7.0<1>:UW CHROMA_COL.2<16,8,2>:UW {align1};
-
-/*
- * SIC VME message
- */
-/* m1 */
-mov (1) intra_flag<1>:UW 0x0:UW {align1} ;
-and.z.f0.0 (1) null<1>:UW transform_8x8_ub<0,1,0>:UB 1:UW {align1};
-(f0.0) mov (1) intra_part_mask_ub<1>:UB LUMA_INTRA_8x8_DISABLE {align1};
-
-/* assign MB intra struct from the thread payload*/
-mov (1) mb_intra_struct_ub<1>:UB input_mb_intra_ub<0,1,0>:UB {align1};
-
-/* Disable DC HAAR component when calculating HARR SATD block */
-mov (1) tmp_reg0.0<1>:UW DC_HARR_DISABLE:UW {align1};
-mov (1) vme_m1.30<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-mov (8) vme_msg_1<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-/* m0 */
-mov (1) vme_m0.12<1>:UD INTRA_SAD_HAAR:UD {align1}; /* 16x16 Source, Intra_harr */
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-/* after verification it will be passed by using payload */
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- cre(
- BIND_IDX_VME,
- VME_SIC_MESSAGE_TYPE
- )
- mlen sic_vme_msg_length
- rlen vme_wb_length
- {align1};
-/*
- * Oword Block Write message
- */
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-mov (1) msg_reg1.4<1>:UD vme_wb.16<0,1,0>:UD {align1};
-mov (1) msg_reg1.8<1>:UD vme_wb.20<0,1,0>:UD {align1};
-mov (1) msg_reg1.12<1>:UD vme_wb.24<0,1,0>:UD {align1};
-
-/* Distortion, Intra (17-16), */
-mov (1) msg_reg1.16<1>:UW vme_wb.12<0,1,0>:UW {align1};
-
-mov (1) msg_reg1.20<1>:UD vme_wb.8<0,1,0>:UD {align1};
-/* VME clock counts */
-mov (1) msg_reg1.24<1>:UD vme_wb.28<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.28<1>:UD obw_m0.8<0,1,0>:UD {align1};
-
-/* bind index 3, write 2 oword (32bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-/* IME search */
-mov (1) vme_m0.12<1>:UD SEARCH_CTRL_DUAL_REFERENCE + INTER_PART_MASK + INTER_SAD_HAAR:UD {align1}; /* 16x16 Source, harr */
-mov (1) vme_m0.22<1>:UW DREF_REGION_SIZE {align1};
-/* Dual Reference Width&Height,32x32 */
-
-mov (1) vme_m0.0<1>:UD vme_m0.8<0,1,0>:UD {align1};
-
-/* Reference = (x-8,y-8)-(x+8,y+8) */
-add (1) vme_m0.0<1>:W vme_m0.0<0,1,0>:W -8:W {align1};
-add (1) vme_m0.2<1>:W vme_m0.2<0,1,0>:W -8:W {align1};
-
-mov (1) vme_m0.0<1>:W -8:W {align1};
-mov (1) vme_m0.2<1>:W -8:W {align1};
-
-mov (1) vme_m0.4<1>:UD vme_m0.0<0,1,0>:UD {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_AE:uw {align1};
-(f0.0) add (1) vme_m0.0<1>:w vme_m0.0<0,1,0>:w 4:w {align1};
-(f0.0) add (1) vme_m0.4<1>:w vme_m0.4<0,1,0>:w 4:w {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_B:uw {align1};
-(f0.0) add (1) vme_m0.2<1>:w vme_m0.2<0,1,0>:w 4:w {align1};
-(f0.0) add (1) vme_m0.6<1>:w vme_m0.6<0,1,0>:w 4:w {align1};
-
-add (2) vme_m0.0<1>:w vme_m0.0<2,2,1>:w mb_ref_win.16<2,2,1>:w {align1};
-add (2) vme_m0.4<1>:w vme_m0.4<2,2,1>:w mb_ref_win.20<2,2,1>:w {align1};
-
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-mov (1) vme_m1.0<1>:UD ADAPTIVE_SEARCH_ENABLE:ud {align1} ;
-/* the Max MV number is passed by constant buffer */
-mov (1) vme_m1.4<1>:UB r4.28<0,1,0>:UB {align1};
-mov (1) vme_m1.8<1>:UD DSTART_CENTER + DSEARCH_PATH_LEN:UD {align1};
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-mov (8) vme_msg_2<1>:UD vme_m2.0<8,8,1>:UD {align1};
-
-
-/* Setup the Cost center */
-/* currently four 8x8 share the same cost center */
-mov (4) vme_m3.0<2>:ud mb_mvp_ref.0<0,1,0>:ud {align1};
-mov (4) vme_m3.4<2>:ud mb_mvp_ref.4<0,1,0>:ud {align1};
-
-/* M4/M5 search path */
-
-mov (1) vme_msg_4.0<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_4.4<1>:UD 0x100F0F0F:UD {align1};
-mov (1) vme_msg_4.8<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_4.12<1>:UD 0x000F0F0F:UD {align1};
-
-mov (4) vme_msg_4.16<1>:UD 0x0:UD {align1};
-mov (8) vme_msg_5.16<1>:UD 0x0:UD {align1};
-
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- vme(
- BIND_IDX_VME,
- 0,
- 0,
- VME_IME_MESSAGE_TYPE
- )
- mlen ime_vme_msg_length
- rlen vme_wb_length {align1};
-
-/* Set Macroblock-shape/mode for FBR */
-
-mov (1) vme_m2.20<1>:UD 0x0:UD {align1};
-mov (1) vme_m2.21<1>:UB vme_wb.25<0,1,0>:UB {align1};
-mov (1) vme_m2.22<1>:UB vme_wb.26<0,1,0>:UB {align1};
-
-and (1) tmp_reg0.0<1>:UW vme_wb.0<0,1,0>:UW 0x03:UW {align1};
-mov (1) vme_m2.20<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-/* Send FBR message into CRE */
-
-mov (8) vme_msg_4.0<1>:UD vme_wb1.0<8,8,1>:UD {align1};
-mov (8) vme_msg_5.0<1>:ud vme_wb2.0<8,8,1>:ud {align1};
-mov (8) vme_msg_6.0<1>:ud vme_wb3.0<8,8,1>:ud {align1};
-mov (8) vme_msg_7.0<1>:ud vme_wb4.0<8,8,1>:ud {align1};
-
- /* 16x16 Source, 1/4 pixel, harr, BME ENABLE */
-mov (1) vme_m0.12<1>:UD INTER_SAD_HAAR + SUB_PEL_MODE_QUARTER + FBR_BME_ENABLE:UD {align1};
-
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-mov (1) tmp_reg0.0<1>:uw BI_WEIGHT {align1};
-mov (1) vme_m1.6<1>:UB tmp_reg0.0<0,1,0>:ub {align1};
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-mov (8) vme_msg_2.0<1>:UD vme_m2.0<8,8,1>:UD {align1};
-mov (8) vme_msg_3.0<1>:UD vme_m3.0<8,8,1>:UD {align1};
-
-/* after verification it will be passed by using payload */
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- cre(
- BIND_IDX_VME,
- VME_FBR_MESSAGE_TYPE
- )
- mlen fbr_vme_msg_length
- rlen vme_wb_length
- {align1};
-
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x02:UD {align1};
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-/* write FME info */
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.4<1>:UD vme_wb.24<0,1,0>:UD {align1};
-/* Inter distortion of FME */
-mov (1) msg_reg1.8<1>:UD vme_wb.8<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.12<1>:UD vme_m2.20<0,1,0>:UD {align1};
-
-/* bind index 3, write oword (16bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_0,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-/* Write FME/BME MV */
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x01:UD {align1};
-mov (8) msg_reg0.0<1>:UD obw_m0.0<8,8,1>:UD {align1};
-
-
-mov (8) msg_reg1.0<1>:UD vme_wb1.0<8,8,1>:UD {align1};
-mov (8) msg_reg2.0<1>:ud vme_wb2.0<8,8,1>:ud {align1};
-mov (8) msg_reg3.0<1>:ud vme_wb3.0<8,8,1>:ud {align1};
-mov (8) msg_reg4.0<1>:ud vme_wb4.0<8,8,1>:ud {align1};
-/* bind index 3, write 8 oword (128 bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_8,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 5
- rlen obw_wb_length
- {align1};
-
-/* Write FME/BME RefID */
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x08:UD {align1};
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-
-mov (8) msg_reg1.0<1>:UD vme_wb6.0<8,8,1>:UD {align1};
-
-/* bind index 3, write 2 oword (32bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-
-/* Issue message fence so that the previous write message is committed */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_FENCE,
- OBR_MF_COMMIT,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-__EXIT:
-/*
- * kill thread
- */
-mov (8) ts_msg_reg0<1>:UD r0<8,8,1>:UD {align1};
-send (16) ts_msg_ind acc0<1>UW null thread_spawner(0, 0, 1) mlen 1 rlen 0 {align1 EOT};
-
-
- nop ;
- nop ;
-/* Compare three word data to get the min value */
-word_imin:
- cmp.le.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- cmp.le.f0.0 (1) null:w TEMP_VAR0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w TEMP_VAR0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- RETURN {align1};
-
-/* Compare three word data to get the max value */
-word_imax:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- cmp.ge.f0.0 (1) null:w TEMP_VAR0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w TEMP_VAR0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- RETURN {align1};
-
-word_imedian:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_a_ge_b;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_end;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- jmpi (1) cmp_end;
-cmp_a_ge_b:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_end;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
-cmp_end:
- RETURN {align1};
-
-mb_pred_func:
- mov (8) TEMP_VAR0.0<1>:ud 0:ud {align1};
- mov (1) TEMP_VAR0.0<1>:ub INPUT_ARG0.2<0,1,0>:ub {align1};
- and (1) TEMP_VAR0.4<1>:uw INPUT_ARG0.4<0,1,0>:uw INTER_MASK:uw {align1};
- /* INTER16x16 mode. The bit1-0 is the prediction mode */
- cmp.e.f0.0 (1) null:uw TEMP_VAR0.4<0,1,0>:uw INTER_16X16MODE:uw {align1};
- (f0.0) and (1) RET_ARG<1>:uw TEMP_VAR0.0<0,1,0>:uw PRED_MASK {align1};
- (f0.0) jmpi (1) end_mb_pred;
- /* Check whether it is INTER8x8 mode. */
- cmp.e.f0.0 (1) null:uw TEMP_VAR0.4<0,1,0>:uw INTER_8X8MODE:uw {align1};
- (f0.0) jmpi (1) mb_pred_func_8;
-
- /* Check whether it is INTER16x8 mode. */
- cmp.e.f0.0 (1) null:uw TEMP_VAR0.4<0,1,0>:uw INTER_16X8MODE:uw {align1};
- (f0.0) jmpi (1) mb_pred_func_168;
-mb_pred_func_816:
- /* Block 0/2 uses the bit1-0. Block 1/3 uses the bit3-2 */
- mov (1) TEMP_VAR0.8<1>:uw INPUT_ARG0.8<0,1,0>:uw {align1};
- and.z.f0.0 (1) null:uw TEMP_VAR0.8<0,1,0>:uw INTER_BLOCK1:uw {align1};
- (f0.0) and (1) RET_ARG<1>:uw TEMP_VAR0.0<0,1,0>:uw PRED_MASK {align1};
- (f0.0) jmpi (1) end_mb_pred;
- shr (1) TEMP_VAR0.16<1>:uw TEMP_VAR0.0<0,1,0>:uw 2:uw {align1};
- and (1) RET_ARG<1>:uw TEMP_VAR0.16<0,1,0>:uw PRED_MASK {align1};
- jmpi (1) end_mb_pred;
-
-mb_pred_func_168:
- /* Block 0/1 uses the bit1-0. Block 2/3 uses the bit3-2 */
- mov (1) TEMP_VAR0.8<1>:uw INPUT_ARG0.8<0,1,0>:uw {align1};
- cmp.l.f0.0 (1) null:uw TEMP_VAR0.8<0,1,0>:uw INTER_BLOCK2:uw {align1};
- (f0.0) and (1) RET_ARG<1>:uw TEMP_VAR0.0<0,1,0>:uw PRED_MASK {align1};
- (f0.0) jmpi (1) end_mb_pred;
- shr (1) TEMP_VAR0.16<1>:uw TEMP_VAR0.0<0,1,0>:uw 2:uw {align1};
- and (1) RET_ARG<1>:uw TEMP_VAR0.16<0,1,0>:uw PRED_MASK {align1};
- jmpi (1) end_mb_pred;
-
-mb_pred_func_8:
- /* 8X8 mode. Every block uses two bits as the prediction mode. */
- mul (1) TEMP_VAR0.8<1>:uw INPUT_ARG0.8<0,1,0>:uw 2:uw {align1};
- shr (1) TEMP_VAR0.16<1>:uw TEMP_VAR0.0<0,1,0>:uw TEMP_VAR0.8<0,1,0>:uw {align1};
- and (1) RET_ARG<1>:uw TEMP_VAR0.16<0,1,0>:uw PRED_MASK {align1};
-end_mb_pred:
- RETURN {align1};
-
diff --git a/src/shaders/vme/inter_bframe_gen8.g8a b/src/shaders/vme/inter_bframe_gen8.g8a
deleted file mode 100644
index 8aff32e..0000000
--- a/src/shaders/vme/inter_bframe_gen8.g8a
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "vme8.inc"
-#include "inter_bframe_gen8.asm"
diff --git a/src/shaders/vme/inter_bframe_gen8.g8b b/src/shaders/vme/inter_bframe_gen8.g8b
deleted file mode 100644
index ca6614c..0000000
--- a/src/shaders/vme/inter_bframe_gen8.g8b
+++ /dev/null
@@ -1,423 +0,0 @@
- { 0x00800001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24c00608, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24002228, 0x164500a0, 0x00040004 },
- { 0x00000040, 0x24000a28, 0x1e000400, 0xfff8fff8 },
- { 0x00000040, 0x24040a28, 0x1e000404, 0xffffffff },
- { 0x00000001, 0x24080e08, 0x08000000, 0x0000001f },
- { 0x00000001, 0x24142288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24202228, 0x164500a0, 0x00040004 },
- { 0x00000040, 0x24200a28, 0x1e000420, 0xfffcfffc },
- { 0x00000001, 0x24280e08, 0x08000000, 0x000f0003 },
- { 0x00000001, 0x24342288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24482248, 0x164500a0, 0x00040004 },
- { 0x00000001, 0x24542288, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24881208, 0x220000a2, 0x000000a1 },
- { 0x00000040, 0x24880208, 0x22000488, 0x000000a0 },
- { 0x00000041, 0x24880208, 0x06000488, 0x00000018 },
- { 0x00000001, 0x24942288, 0x00000014, 0x00000000 },
- { 0x00600001, 0x28000208, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x23800a88, 0x0e000800, 0x02190004 },
- { 0x00600001, 0x28000208, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x23a00a88, 0x0e000800, 0x02290004 },
- { 0x00200009, 0x24002228, 0x164500a0, 0x00030003 },
- { 0x00000041, 0x24000a28, 0x1e000400, 0x00020002 },
- { 0x00000040, 0x24000a28, 0x1e000400, 0xfff8fff8 },
- { 0x00000040, 0x24040a28, 0x1e000404, 0xffffffff },
- { 0x00600001, 0x28000208, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x26000a88, 0x0e000800, 0x02190006 },
- { 0x00200009, 0x24202228, 0x164500a0, 0x00030003 },
- { 0x00000041, 0x24200a28, 0x1e000420, 0x00020002 },
- { 0x00000040, 0x24200a28, 0x1e000420, 0xfffcfffc },
- { 0x00000001, 0x24280e08, 0x08000000, 0x00070003 },
- { 0x00600001, 0x28000208, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x26200a88, 0x0e000800, 0x02190006 },
- { 0x00600001, 0x24600608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2ac00608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2a800608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20001240, 0x160000a6, 0x00040004 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000d60 },
- { 0x00600001, 0x2ae00608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b000608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b200608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01200005, 0x20002240, 0x160000a5, 0x00600060 },
- { 0x00210001, 0x2af41e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000210 },
- { 0x00000001, 0x2ae00e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24001a68, 0x1e000400, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x02280303 },
- { 0x05200010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2af41e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000160 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x0e000b40, 0x02480403 },
- { 0x00200001, 0x2af41e68, 0x18000000, 0xffffffff },
- { 0x00000001, 0x2fa00208, 0x00000b84, 0x00000000 },
- { 0x00000001, 0x2fa40208, 0x00000b80, 0x00000000 },
- { 0x00000001, 0x2fa80608, 0x00000000, 0x00000001 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00001490 },
- { 0x00000001, 0x2aa01248, 0x00000fe4, 0x00000000 },
- { 0x01000010, 0x20001240, 0x16000aa0, 0x00000000 },
- { 0x00010001, 0x2af01e48, 0x18000000, 0x00010001 },
- { 0x00010001, 0x2af41e68, 0x18000000, 0x00000000 },
- { 0x00010001, 0x2ae40208, 0x00000bc8, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000080 },
- { 0x01000010, 0x20001240, 0x16000aa0, 0x00010001 },
- { 0x00010001, 0x2af21e48, 0x18000000, 0x00010001 },
- { 0x00010001, 0x2af61e68, 0x18000000, 0x00000000 },
- { 0x00010001, 0x2ae80208, 0x00000bcc, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x00200001, 0x2ae40208, 0x00450bc8, 0x00000000 },
- { 0x00200001, 0x2af01e48, 0x18000000, 0x00010001 },
- { 0x00200001, 0x2af41e68, 0x18000000, 0x00000000 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01200005, 0x20002240, 0x160000a5, 0x00100010 },
- { 0x00210001, 0x2b141e68, 0x18000000, 0xffffffff },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000006c0 },
- { 0x00000001, 0x2b000e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24021a68, 0x1e000402, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x02280303 },
- { 0x05200010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b141e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000160 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x0e000b40, 0x02480403 },
- { 0x00200001, 0x2b141e68, 0x18000000, 0xffffffff },
- { 0x00000001, 0x2fa00208, 0x00000b84, 0x00000000 },
- { 0x00000001, 0x2fa40208, 0x00000b80, 0x00000000 },
- { 0x00000001, 0x2fa80608, 0x00000000, 0x00000002 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00001230 },
- { 0x00000001, 0x2aa01248, 0x00000fe4, 0x00000000 },
- { 0x01000010, 0x20001240, 0x16000aa0, 0x00000000 },
- { 0x00010001, 0x2b101e48, 0x18000000, 0x00010001 },
- { 0x00010001, 0x2b141e68, 0x18000000, 0x00000000 },
- { 0x00010001, 0x2b040208, 0x00000bf0, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000080 },
- { 0x01000010, 0x20001240, 0x16000aa0, 0x00010001 },
- { 0x00010001, 0x2b121e48, 0x18000000, 0x00010001 },
- { 0x00010001, 0x2b161e68, 0x18000000, 0x00000000 },
- { 0x00010001, 0x2b080208, 0x00000bf4, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x00200001, 0x2b101e48, 0x18000000, 0x00010001 },
- { 0x00200001, 0x2b141e68, 0x18000000, 0x00000000 },
- { 0x00200001, 0x2b040208, 0x00450bf0, 0x00000000 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00080008 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000230 },
- { 0x00000001, 0x2b200e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24021a68, 0x1e000402, 0xffffffff },
- { 0x00000040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x02280303 },
- { 0x05200010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000003c0 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x0e000b40, 0x02480403 },
- { 0x00200001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00000001, 0x2fa00208, 0x00000b84, 0x00000000 },
- { 0x00000001, 0x2fa40208, 0x00000b80, 0x00000000 },
- { 0x00000001, 0x2fa80608, 0x00000000, 0x00000002 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000fe0 },
- { 0x00000001, 0x2aa01248, 0x00000fe4, 0x00000000 },
- { 0x01000010, 0x20001240, 0x16000aa0, 0x00000000 },
- { 0x00010001, 0x2b301e48, 0x18000000, 0x00010001 },
- { 0x00010001, 0x2b341e68, 0x18000000, 0x00000000 },
- { 0x00010001, 0x2b240208, 0x00000bf0, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000002e0 },
- { 0x01000010, 0x20001240, 0x16000aa0, 0x00010001 },
- { 0x00010001, 0x2b321e48, 0x18000000, 0x00010001 },
- { 0x00010001, 0x2b361e68, 0x18000000, 0x00000000 },
- { 0x00010001, 0x2b280208, 0x00000bf4, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000290 },
- { 0x00200001, 0x2b301e48, 0x18000000, 0x00010001 },
- { 0x00200001, 0x2b341e68, 0x18000000, 0x00000000 },
- { 0x00200001, 0x2b240208, 0x00450bf0, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000250 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01200005, 0x20002240, 0x160000a5, 0x00040004 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000210 },
- { 0x00000001, 0x2b200e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00200040, 0x24001a68, 0x1e450400, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x02280303 },
- { 0x05200010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000160 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a88, 0x0e000b40, 0x02480403 },
- { 0x00200001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00000001, 0x2fa00208, 0x00000b84, 0x00000000 },
- { 0x00000001, 0x2fa40208, 0x00000b80, 0x00000000 },
- { 0x00000001, 0x2fa80608, 0x00000000, 0x00000003 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000d80 },
- { 0x00000001, 0x2aa01248, 0x00000fe4, 0x00000000 },
- { 0x01000010, 0x20001240, 0x16000aa0, 0x00000000 },
- { 0x00010001, 0x2b301e48, 0x18000000, 0x00010001 },
- { 0x00010001, 0x2b341e68, 0x18000000, 0x00000000 },
- { 0x00010001, 0x2b240208, 0x00000c18, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000080 },
- { 0x01000010, 0x20001240, 0x16000aa0, 0x00010001 },
- { 0x00010001, 0x2b321e48, 0x18000000, 0x00010001 },
- { 0x00010001, 0x2b361e68, 0x18000000, 0x00000000 },
- { 0x00010001, 0x2b280208, 0x00000c1c, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x00200001, 0x2b301e48, 0x18000000, 0x00010001 },
- { 0x00200001, 0x2b341e68, 0x18000000, 0x00000000 },
- { 0x00200001, 0x2b240208, 0x00450c18, 0x00000000 },
- { 0x00000040, 0x24000a28, 0x0a000b00, 0x00000b20 },
- { 0x01000010, 0x20000a20, 0x0e000400, 0x00000000 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000080 },
- { 0x02200010, 0x20000a20, 0x0e000ae0, 0x00000000 },
- { 0x00210001, 0x2b040208, 0x00450ae4, 0x00000000 },
- { 0x00210001, 0x2b240208, 0x00450ae4, 0x00000000 },
- { 0x00210001, 0x2b141248, 0x00450af4, 0x00000000 },
- { 0x00210001, 0x2b341248, 0x00450af4, 0x00000000 },
- { 0x00210001, 0x2ac00208, 0x00450ae4, 0x00000000 },
- { 0x00310001, 0x2ac00608, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000320 },
- { 0x00600001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000af4, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000ae4, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000b14, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000b04, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000b34, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000b24, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x2ac00208, 0x00000404, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000c0 },
- { 0x00000001, 0x2fa01a68, 0x00000ae4, 0x00000000 },
- { 0x00000001, 0x2fa41a68, 0x00000b04, 0x00000000 },
- { 0x00000001, 0x2fa81a68, 0x00000b24, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x000009d0 },
- { 0x00000001, 0x2ac01a68, 0x00000fe4, 0x00000000 },
- { 0x00000001, 0x2fa01a68, 0x00000ae6, 0x00000000 },
- { 0x00000001, 0x2fa41a68, 0x00000b06, 0x00000000 },
- { 0x00000001, 0x2fa81a68, 0x00000b26, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000970 },
- { 0x00000001, 0x2ac21a68, 0x00000fe4, 0x00000000 },
- { 0x00600001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000af6, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000ae8, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000b16, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000b08, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000b36, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000b28, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x2ac40208, 0x00000404, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000c0 },
- { 0x00000001, 0x2fa01a68, 0x00000ae8, 0x00000000 },
- { 0x00000001, 0x2fa41a68, 0x00000b08, 0x00000000 },
- { 0x00000001, 0x2fa81a68, 0x00000b28, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000840 },
- { 0x00000001, 0x2ac41a68, 0x00000fe4, 0x00000000 },
- { 0x00000001, 0x2fa01a68, 0x00000aea, 0x00000000 },
- { 0x00000001, 0x2fa41a68, 0x00000b0a, 0x00000000 },
- { 0x00000001, 0x2fa81a68, 0x00000b2a, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x000007e0 },
- { 0x00000001, 0x2ac61a68, 0x00000fe4, 0x00000000 },
- { 0x0040000c, 0x2a801a68, 0x1e690ac0, 0x00020002 },
- { 0x00400040, 0x2a881a68, 0x1e690a80, 0x00030003 },
- { 0x00400005, 0x2a901248, 0x16690a88, 0xfffcfffc },
- { 0x00600001, 0x25600208, 0x008d0020, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x25800608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x28800608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23800608, 0x00000000, 0x00000000 },
- { 0x00000005, 0x23840208, 0x06000384, 0xff000000 },
- { 0x00600001, 0x28a00208, 0x008d0380, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00010001 },
- { 0x00000001, 0x28a52288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28c00608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x28c02288, 0x00cf03a3, 0x00000000 },
- { 0x00000001, 0x28d00608, 0x00000000, 0x11111111 },
- { 0x00000001, 0x28dc0608, 0x00000000, 0x00010101 },
- { 0x00000001, 0x28d41248, 0x00000606, 0x00000000 },
- { 0x00400001, 0x28f00208, 0x00690608, 0x00000000 },
- { 0x00600001, 0x28e01248, 0x00ae0622, 0x00000000 },
- { 0x00000001, 0x247c1648, 0x10000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a4, 0x00010001 },
- { 0x00010001, 0x247c0e88, 0x08000000, 0x00000002 },
- { 0x00000001, 0x247d2288, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00200020 },
- { 0x00000001, 0x247e2288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00800000 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x0e000800, 0x10782000 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200208, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240208, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280208, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0208, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28301248, 0x0000018c, 0x00000000 },
- { 0x00000001, 0x28340208, 0x00000188, 0x00000000 },
- { 0x00000001, 0x28380208, 0x0000019c, 0x00000000 },
- { 0x00000001, 0x283c0208, 0x00000488, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x0e000800, 0x040a0203 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00200700 },
- { 0x00000001, 0x24561648, 0x10000000, 0x20202020 },
- { 0x00000001, 0x24400208, 0x00000448, 0x00000000 },
- { 0x00000040, 0x24401a68, 0x1e000440, 0xfff8fff8 },
- { 0x00000040, 0x24421a68, 0x1e000442, 0xfff8fff8 },
- { 0x00000001, 0x24401e68, 0x18000000, 0xfff8fff8 },
- { 0x00000001, 0x24421e68, 0x18000000, 0xfff8fff8 },
- { 0x00000001, 0x24440208, 0x00000440, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00600060 },
- { 0x00010040, 0x24401a68, 0x1e000440, 0x00040004 },
- { 0x00010040, 0x24441a68, 0x1e000444, 0x00040004 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00100010 },
- { 0x00010040, 0x24421a68, 0x1e000442, 0x00040004 },
- { 0x00010040, 0x24461a68, 0x1e000446, 0x00040004 },
- { 0x00200040, 0x24401a68, 0x1a450440, 0x00450a90 },
- { 0x00200040, 0x24441a68, 0x1a450444, 0x00450a94 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x24600608, 0x00000000, 0x00000002 },
- { 0x00000001, 0x24642288, 0x0000009c, 0x00000000 },
- { 0x00000001, 0x24680608, 0x00000000, 0x00001212 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00400001, 0x45800208, 0x00000ac0, 0x00000000 },
- { 0x00400001, 0x45840208, 0x00000ac4, 0x00000000 },
- { 0x00000001, 0x28800608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28840608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28880608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x288c0608, 0x00000000, 0x000f0f0f },
- { 0x00400001, 0x28900608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28b00608, 0x00000000, 0x00000000 },
- { 0x08600031, 0x21800a08, 0x0e000800, 0x0c784000 },
- { 0x00000001, 0x25740608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25752288, 0x00000199, 0x00000000 },
- { 0x00000001, 0x25762288, 0x0000019a, 0x00000000 },
- { 0x00000005, 0x24001248, 0x16000180, 0x00030003 },
- { 0x00000001, 0x25742288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28800208, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28a00208, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28c00208, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28e00208, 0x008d0200, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00203000 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00200020 },
- { 0x00000001, 0x24662288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d0580, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x0e000800, 0x10786000 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000002 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200208, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240208, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28280208, 0x00000188, 0x00000000 },
- { 0x00000001, 0x282c0208, 0x00000574, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x0e000800, 0x040a0003 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000001 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28800208, 0x008d0200, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x0e000800, 0x0a0a0403 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000008 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0240, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x0e000800, 0x040a0203 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x0219e003 },
- { 0x00600001, 0x2e000208, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24000a40, 0x0e000e00, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x06000010, 0x20001a60, 0x1a000fa0, 0x00000fa4 },
- { 0x00010001, 0x2f601a68, 0x00000fa0, 0x00000000 },
- { 0x00110001, 0x2f601a68, 0x00000fa4, 0x00000000 },
- { 0x06000010, 0x20001a60, 0x1a000f60, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000f60, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa4 },
- { 0x00010001, 0x2f601a68, 0x00000fa0, 0x00000000 },
- { 0x00110001, 0x2f601a68, 0x00000fa4, 0x00000000 },
- { 0x04000010, 0x20001a60, 0x1a000f60, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000f60, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa4 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000070 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa0, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000a0 },
- { 0x04000010, 0x20001a60, 0x1a000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa4, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000060 },
- { 0x04000010, 0x20001a60, 0x1a000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa4, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa0, 0x00000000 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
- { 0x00600001, 0x2f600608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x2f602288, 0x00000fa2, 0x00000000 },
- { 0x00000005, 0x2f641248, 0x16000fa4, 0x00030003 },
- { 0x01000010, 0x20001240, 0x16000f64, 0x00000000 },
- { 0x00010005, 0x2fe41248, 0x16000f60, 0x00030003 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000150 },
- { 0x01000010, 0x20001240, 0x16000f64, 0x00030003 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000100 },
- { 0x01000010, 0x20001240, 0x16000f64, 0x00010001 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000070 },
- { 0x00000001, 0x2f681248, 0x00000fa8, 0x00000000 },
- { 0x01000005, 0x20001240, 0x16000f68, 0x00010001 },
- { 0x00010005, 0x2fe41248, 0x16000f60, 0x00030003 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000d0 },
- { 0x00000008, 0x2f701248, 0x16000f60, 0x00020002 },
- { 0x00000005, 0x2fe41248, 0x16000f70, 0x00030003 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x000000a0 },
- { 0x00000001, 0x2f681248, 0x00000fa8, 0x00000000 },
- { 0x05000010, 0x20001240, 0x16000f68, 0x00020002 },
- { 0x00010005, 0x2fe41248, 0x16000f60, 0x00030003 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000060 },
- { 0x00000008, 0x2f701248, 0x16000f60, 0x00020002 },
- { 0x00000005, 0x2fe41248, 0x16000f70, 0x00030003 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x00000041, 0x2f681248, 0x16000fa8, 0x00020002 },
- { 0x00000008, 0x2f701248, 0x12000f60, 0x00000f68 },
- { 0x00000005, 0x2fe41248, 0x16000f70, 0x00030003 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
diff --git a/src/shaders/vme/inter_bframe_gen9.g9a b/src/shaders/vme/inter_bframe_gen9.g9a
deleted file mode 100644
index 8aff32e..0000000
--- a/src/shaders/vme/inter_bframe_gen9.g9a
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "vme8.inc"
-#include "inter_bframe_gen8.asm"
diff --git a/src/shaders/vme/inter_bframe_gen9.g9b b/src/shaders/vme/inter_bframe_gen9.g9b
deleted file mode 100644
index 26e077a..0000000
--- a/src/shaders/vme/inter_bframe_gen9.g9b
+++ /dev/null
@@ -1,423 +0,0 @@
- { 0x00800001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24c00608, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24002228, 0x164500a0, 0x00040004 },
- { 0x00000040, 0x24000a28, 0x1e000400, 0xfff8fff8 },
- { 0x00000040, 0x24040a28, 0x1e000404, 0xffffffff },
- { 0x00000001, 0x24080e08, 0x08000000, 0x0000001f },
- { 0x00000001, 0x24142288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24202228, 0x164500a0, 0x00040004 },
- { 0x00000040, 0x24200a28, 0x1e000420, 0xfffcfffc },
- { 0x00000001, 0x24280e08, 0x08000000, 0x000f0003 },
- { 0x00000001, 0x24342288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24482248, 0x164500a0, 0x00040004 },
- { 0x00000001, 0x24542288, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24881208, 0x220000a2, 0x000000a1 },
- { 0x00000040, 0x24880208, 0x22000488, 0x000000a0 },
- { 0x00000041, 0x24880208, 0x06000488, 0x00000018 },
- { 0x00000001, 0x24942288, 0x00000014, 0x00000000 },
- { 0x00600001, 0x28000208, 0x008d0400, 0x00000000 },
- { 0x0c600031, 0x23800a88, 0x06000800, 0x02190004 },
- { 0x00600001, 0x28000208, 0x008d0420, 0x00000000 },
- { 0x0c600031, 0x23a00a88, 0x06000800, 0x02290004 },
- { 0x00200009, 0x24002228, 0x164500a0, 0x00030003 },
- { 0x00000041, 0x24000a28, 0x1e000400, 0x00020002 },
- { 0x00000040, 0x24000a28, 0x1e000400, 0xfff8fff8 },
- { 0x00000040, 0x24040a28, 0x1e000404, 0xffffffff },
- { 0x00600001, 0x28000208, 0x008d0400, 0x00000000 },
- { 0x0c600031, 0x26000a88, 0x06000800, 0x02190006 },
- { 0x00200009, 0x24202228, 0x164500a0, 0x00030003 },
- { 0x00000041, 0x24200a28, 0x1e000420, 0x00020002 },
- { 0x00000040, 0x24200a28, 0x1e000420, 0xfffcfffc },
- { 0x00000001, 0x24280e08, 0x08000000, 0x00070003 },
- { 0x00600001, 0x28000208, 0x008d0420, 0x00000000 },
- { 0x0c600031, 0x26200a88, 0x06000800, 0x02190006 },
- { 0x00600001, 0x24600608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2ac00608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2a800608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20001240, 0x160000a6, 0x00040004 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000d60 },
- { 0x00600001, 0x2ae00608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b000608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b200608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01200005, 0x20002240, 0x160000a5, 0x00600060 },
- { 0x00210001, 0x2af41e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000210 },
- { 0x00000001, 0x2ae00e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24001a68, 0x1e000400, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x02280303 },
- { 0x05200010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2af41e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000160 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x06000b40, 0x02480403 },
- { 0x00200001, 0x2af41e68, 0x18000000, 0xffffffff },
- { 0x00000001, 0x2fa00208, 0x00000b84, 0x00000000 },
- { 0x00000001, 0x2fa40208, 0x00000b80, 0x00000000 },
- { 0x00000001, 0x2fa80608, 0x00000000, 0x00000001 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00001490 },
- { 0x00000001, 0x2aa01248, 0x00000fe4, 0x00000000 },
- { 0x01000010, 0x20001240, 0x16000aa0, 0x00000000 },
- { 0x00010001, 0x2af01e48, 0x18000000, 0x00010001 },
- { 0x00010001, 0x2af41e68, 0x18000000, 0x00000000 },
- { 0x00010001, 0x2ae40208, 0x00000bc8, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000080 },
- { 0x01000010, 0x20001240, 0x16000aa0, 0x00010001 },
- { 0x00010001, 0x2af21e48, 0x18000000, 0x00010001 },
- { 0x00010001, 0x2af61e68, 0x18000000, 0x00000000 },
- { 0x00010001, 0x2ae80208, 0x00000bcc, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x00200001, 0x2ae40208, 0x00450bc8, 0x00000000 },
- { 0x00200001, 0x2af01e48, 0x18000000, 0x00010001 },
- { 0x00200001, 0x2af41e68, 0x18000000, 0x00000000 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01200005, 0x20002240, 0x160000a5, 0x00100010 },
- { 0x00210001, 0x2b141e68, 0x18000000, 0xffffffff },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000006c0 },
- { 0x00000001, 0x2b000e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24021a68, 0x1e000402, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x02280303 },
- { 0x05200010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b141e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000160 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x06000b40, 0x02480403 },
- { 0x00200001, 0x2b141e68, 0x18000000, 0xffffffff },
- { 0x00000001, 0x2fa00208, 0x00000b84, 0x00000000 },
- { 0x00000001, 0x2fa40208, 0x00000b80, 0x00000000 },
- { 0x00000001, 0x2fa80608, 0x00000000, 0x00000002 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00001230 },
- { 0x00000001, 0x2aa01248, 0x00000fe4, 0x00000000 },
- { 0x01000010, 0x20001240, 0x16000aa0, 0x00000000 },
- { 0x00010001, 0x2b101e48, 0x18000000, 0x00010001 },
- { 0x00010001, 0x2b141e68, 0x18000000, 0x00000000 },
- { 0x00010001, 0x2b040208, 0x00000bf0, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000080 },
- { 0x01000010, 0x20001240, 0x16000aa0, 0x00010001 },
- { 0x00010001, 0x2b121e48, 0x18000000, 0x00010001 },
- { 0x00010001, 0x2b161e68, 0x18000000, 0x00000000 },
- { 0x00010001, 0x2b080208, 0x00000bf4, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x00200001, 0x2b101e48, 0x18000000, 0x00010001 },
- { 0x00200001, 0x2b141e68, 0x18000000, 0x00000000 },
- { 0x00200001, 0x2b040208, 0x00450bf0, 0x00000000 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00080008 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000230 },
- { 0x00000001, 0x2b200e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24021a68, 0x1e000402, 0xffffffff },
- { 0x00000040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x02280303 },
- { 0x05200010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000003c0 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x06000b40, 0x02480403 },
- { 0x00200001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00000001, 0x2fa00208, 0x00000b84, 0x00000000 },
- { 0x00000001, 0x2fa40208, 0x00000b80, 0x00000000 },
- { 0x00000001, 0x2fa80608, 0x00000000, 0x00000002 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000fe0 },
- { 0x00000001, 0x2aa01248, 0x00000fe4, 0x00000000 },
- { 0x01000010, 0x20001240, 0x16000aa0, 0x00000000 },
- { 0x00010001, 0x2b301e48, 0x18000000, 0x00010001 },
- { 0x00010001, 0x2b341e68, 0x18000000, 0x00000000 },
- { 0x00010001, 0x2b240208, 0x00000bf0, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000002e0 },
- { 0x01000010, 0x20001240, 0x16000aa0, 0x00010001 },
- { 0x00010001, 0x2b321e48, 0x18000000, 0x00010001 },
- { 0x00010001, 0x2b361e68, 0x18000000, 0x00000000 },
- { 0x00010001, 0x2b280208, 0x00000bf4, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000290 },
- { 0x00200001, 0x2b301e48, 0x18000000, 0x00010001 },
- { 0x00200001, 0x2b341e68, 0x18000000, 0x00000000 },
- { 0x00200001, 0x2b240208, 0x00450bf0, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000250 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01200005, 0x20002240, 0x160000a5, 0x00040004 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000210 },
- { 0x00000001, 0x2b200e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00200040, 0x24001a68, 0x1e450400, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x02280303 },
- { 0x05200010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000160 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a88, 0x06000b40, 0x02480403 },
- { 0x00200001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00000001, 0x2fa00208, 0x00000b84, 0x00000000 },
- { 0x00000001, 0x2fa40208, 0x00000b80, 0x00000000 },
- { 0x00000001, 0x2fa80608, 0x00000000, 0x00000003 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000d80 },
- { 0x00000001, 0x2aa01248, 0x00000fe4, 0x00000000 },
- { 0x01000010, 0x20001240, 0x16000aa0, 0x00000000 },
- { 0x00010001, 0x2b301e48, 0x18000000, 0x00010001 },
- { 0x00010001, 0x2b341e68, 0x18000000, 0x00000000 },
- { 0x00010001, 0x2b240208, 0x00000c18, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000080 },
- { 0x01000010, 0x20001240, 0x16000aa0, 0x00010001 },
- { 0x00010001, 0x2b321e48, 0x18000000, 0x00010001 },
- { 0x00010001, 0x2b361e68, 0x18000000, 0x00000000 },
- { 0x00010001, 0x2b280208, 0x00000c1c, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x00200001, 0x2b301e48, 0x18000000, 0x00010001 },
- { 0x00200001, 0x2b341e68, 0x18000000, 0x00000000 },
- { 0x00200001, 0x2b240208, 0x00450c18, 0x00000000 },
- { 0x00000040, 0x24000a28, 0x0a000b00, 0x00000b20 },
- { 0x01000010, 0x20000a20, 0x0e000400, 0x00000000 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000080 },
- { 0x02200010, 0x20000a20, 0x0e000ae0, 0x00000000 },
- { 0x00210001, 0x2b040208, 0x00450ae4, 0x00000000 },
- { 0x00210001, 0x2b240208, 0x00450ae4, 0x00000000 },
- { 0x00210001, 0x2b141248, 0x00450af4, 0x00000000 },
- { 0x00210001, 0x2b341248, 0x00450af4, 0x00000000 },
- { 0x00210001, 0x2ac00208, 0x00450ae4, 0x00000000 },
- { 0x00310001, 0x2ac00608, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000320 },
- { 0x00600001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000af4, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000ae4, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000b14, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000b04, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000b34, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000b24, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x2ac00208, 0x00000404, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000c0 },
- { 0x00000001, 0x2fa01a68, 0x00000ae4, 0x00000000 },
- { 0x00000001, 0x2fa41a68, 0x00000b04, 0x00000000 },
- { 0x00000001, 0x2fa81a68, 0x00000b24, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x000009d0 },
- { 0x00000001, 0x2ac01a68, 0x00000fe4, 0x00000000 },
- { 0x00000001, 0x2fa01a68, 0x00000ae6, 0x00000000 },
- { 0x00000001, 0x2fa41a68, 0x00000b06, 0x00000000 },
- { 0x00000001, 0x2fa81a68, 0x00000b26, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000970 },
- { 0x00000001, 0x2ac21a68, 0x00000fe4, 0x00000000 },
- { 0x00600001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000af6, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000ae8, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000b16, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000b08, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000b36, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000b28, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x2ac40208, 0x00000404, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000c0 },
- { 0x00000001, 0x2fa01a68, 0x00000ae8, 0x00000000 },
- { 0x00000001, 0x2fa41a68, 0x00000b08, 0x00000000 },
- { 0x00000001, 0x2fa81a68, 0x00000b28, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000840 },
- { 0x00000001, 0x2ac41a68, 0x00000fe4, 0x00000000 },
- { 0x00000001, 0x2fa01a68, 0x00000aea, 0x00000000 },
- { 0x00000001, 0x2fa41a68, 0x00000b0a, 0x00000000 },
- { 0x00000001, 0x2fa81a68, 0x00000b2a, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x000007e0 },
- { 0x00000001, 0x2ac61a68, 0x00000fe4, 0x00000000 },
- { 0x0040000c, 0x2a801a68, 0x1e690ac0, 0x00020002 },
- { 0x00400040, 0x2a881a68, 0x1e690a80, 0x00030003 },
- { 0x00400005, 0x2a901248, 0x16690a88, 0xfffcfffc },
- { 0x00600001, 0x25600208, 0x008d0020, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x25800608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x28800608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23800608, 0x00000000, 0x00000000 },
- { 0x00000005, 0x23840208, 0x06000384, 0xff000000 },
- { 0x00600001, 0x28a00208, 0x008d0380, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00010001 },
- { 0x00000001, 0x28a52288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28c00608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x28c02288, 0x00cf03a3, 0x00000000 },
- { 0x00000001, 0x28d00608, 0x00000000, 0x11111111 },
- { 0x00000001, 0x28dc0608, 0x00000000, 0x00010101 },
- { 0x00000001, 0x28d41248, 0x00000606, 0x00000000 },
- { 0x00400001, 0x28f00208, 0x00690608, 0x00000000 },
- { 0x00600001, 0x28e01248, 0x00ae0622, 0x00000000 },
- { 0x00000001, 0x247c1648, 0x10000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a4, 0x00010001 },
- { 0x00010001, 0x247c0e88, 0x08000000, 0x00000002 },
- { 0x00000001, 0x247d2288, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00200020 },
- { 0x00000001, 0x247e2288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00800000 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x06000800, 0x10782000 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200208, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240208, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280208, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0208, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28301248, 0x0000018c, 0x00000000 },
- { 0x00000001, 0x28340208, 0x00000188, 0x00000000 },
- { 0x00000001, 0x28380208, 0x0000019c, 0x00000000 },
- { 0x00000001, 0x283c0208, 0x00000488, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x06000800, 0x040a0203 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00200700 },
- { 0x00000001, 0x24561648, 0x10000000, 0x20202020 },
- { 0x00000001, 0x24400208, 0x00000448, 0x00000000 },
- { 0x00000040, 0x24401a68, 0x1e000440, 0xfff8fff8 },
- { 0x00000040, 0x24421a68, 0x1e000442, 0xfff8fff8 },
- { 0x00000001, 0x24401e68, 0x18000000, 0xfff8fff8 },
- { 0x00000001, 0x24421e68, 0x18000000, 0xfff8fff8 },
- { 0x00000001, 0x24440208, 0x00000440, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00600060 },
- { 0x00010040, 0x24401a68, 0x1e000440, 0x00040004 },
- { 0x00010040, 0x24441a68, 0x1e000444, 0x00040004 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00100010 },
- { 0x00010040, 0x24421a68, 0x1e000442, 0x00040004 },
- { 0x00010040, 0x24461a68, 0x1e000446, 0x00040004 },
- { 0x00200040, 0x24401a68, 0x1a450440, 0x00450a90 },
- { 0x00200040, 0x24441a68, 0x1a450444, 0x00450a94 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x24600608, 0x00000000, 0x00000002 },
- { 0x00000001, 0x24642288, 0x0000009c, 0x00000000 },
- { 0x00000001, 0x24680608, 0x00000000, 0x00001212 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00400001, 0x45800208, 0x00000ac0, 0x00000000 },
- { 0x00400001, 0x45840208, 0x00000ac4, 0x00000000 },
- { 0x00000001, 0x28800608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28840608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28880608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x288c0608, 0x00000000, 0x000f0f0f },
- { 0x00400001, 0x28900608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28b00608, 0x00000000, 0x00000000 },
- { 0x08600031, 0x21800a08, 0x06000800, 0x0c784000 },
- { 0x00000001, 0x25740608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25752288, 0x00000199, 0x00000000 },
- { 0x00000001, 0x25762288, 0x0000019a, 0x00000000 },
- { 0x00000005, 0x24001248, 0x16000180, 0x00030003 },
- { 0x00000001, 0x25742288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28800208, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28a00208, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28c00208, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28e00208, 0x008d0200, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00203000 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00200020 },
- { 0x00000001, 0x24662288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d0580, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x06000800, 0x10786000 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000002 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200208, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240208, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28280208, 0x00000188, 0x00000000 },
- { 0x00000001, 0x282c0208, 0x00000574, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x06000800, 0x040a0003 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000001 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28800208, 0x008d0200, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x06000800, 0x0a0a0403 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000008 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0240, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x06000800, 0x040a0203 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x0219e003 },
- { 0x00600001, 0x2e000208, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24000a40, 0x06000e00, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x06000010, 0x20001a60, 0x1a000fa0, 0x00000fa4 },
- { 0x00010001, 0x2f601a68, 0x00000fa0, 0x00000000 },
- { 0x00110001, 0x2f601a68, 0x00000fa4, 0x00000000 },
- { 0x06000010, 0x20001a60, 0x1a000f60, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000f60, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa4 },
- { 0x00010001, 0x2f601a68, 0x00000fa0, 0x00000000 },
- { 0x00110001, 0x2f601a68, 0x00000fa4, 0x00000000 },
- { 0x04000010, 0x20001a60, 0x1a000f60, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000f60, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa4 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000070 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa0, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000a0 },
- { 0x04000010, 0x20001a60, 0x1a000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa4, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000060 },
- { 0x04000010, 0x20001a60, 0x1a000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa4, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa0, 0x00000000 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
- { 0x00600001, 0x2f600608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x2f602288, 0x00000fa2, 0x00000000 },
- { 0x00000005, 0x2f641248, 0x16000fa4, 0x00030003 },
- { 0x01000010, 0x20001240, 0x16000f64, 0x00000000 },
- { 0x00010005, 0x2fe41248, 0x16000f60, 0x00030003 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000150 },
- { 0x01000010, 0x20001240, 0x16000f64, 0x00030003 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000100 },
- { 0x01000010, 0x20001240, 0x16000f64, 0x00010001 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000070 },
- { 0x00000001, 0x2f681248, 0x00000fa8, 0x00000000 },
- { 0x01000005, 0x20001240, 0x16000f68, 0x00010001 },
- { 0x00010005, 0x2fe41248, 0x16000f60, 0x00030003 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000d0 },
- { 0x00000008, 0x2f701248, 0x16000f60, 0x00020002 },
- { 0x00000005, 0x2fe41248, 0x16000f70, 0x00030003 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x000000a0 },
- { 0x00000001, 0x2f681248, 0x00000fa8, 0x00000000 },
- { 0x05000010, 0x20001240, 0x16000f68, 0x00020002 },
- { 0x00010005, 0x2fe41248, 0x16000f60, 0x00030003 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000060 },
- { 0x00000008, 0x2f701248, 0x16000f60, 0x00020002 },
- { 0x00000005, 0x2fe41248, 0x16000f70, 0x00030003 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x00000041, 0x2f681248, 0x16000fa8, 0x00020002 },
- { 0x00000008, 0x2f701248, 0x12000f60, 0x00000f68 },
- { 0x00000005, 0x2fe41248, 0x16000f70, 0x00030003 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
diff --git a/src/shaders/vme/inter_bframe_haswell.asm b/src/shaders/vme/inter_bframe_haswell.asm
deleted file mode 100644
index dbc15c5..0000000
--- a/src/shaders/vme/inter_bframe_haswell.asm
+++ /dev/null
@@ -1,900 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- * Authors: Zhao Yakui <yakui.zhao@intel.com>
- */
-// Modual name: Inter_bframe_haswell.asm
-//
-// Make inter predition estimation for Inter frame for B-frame
-//
-
-//
-// Now, begin source code....
-//
-
-#define SAVE_RET add (1) RETURN_REG<1>:ud ip:ud 32:ud
-#define RETURN mov (1) ip:ud RETURN_REG<0,1,0>:ud
-
-/*
- * __START
- */
-__INTER_START:
-mov (16) tmp_reg0.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg2.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg4.0<1>:UD 0x0:UD {align1} ;
-mov (16) tmp_reg6.0<1>:UD 0x0:UD {align1} ;
-
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-mov (1) read0_header.8<1>:UD BLOCK_32X1 {align1};
-mov (1) read0_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-mov (1) read1_header.8<1>:UD BLOCK_4X16 {align1};
-mov (1) read1_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) vme_m0.8<1>:UW orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-mov (1) vme_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-mul (1) obw_m0.8<1>:UD w_in_mb_uw<0,1,0>:UW orig_y_ub<0,1,0>:UB {align1};
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD orig_x_ub<0,1,0>:UB {align1};
-mul (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 24:UD {align1};
-mov (1) obw_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/*
- * Media Read Message -- fetch Luma neighbor edge pixels
- */
-/* ROW */
-mov (8) msg_reg0.0<1>:UD read0_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_ROW<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* COL */
-mov (8) msg_reg0.0<1>:UD read1_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_COL0<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 2 {align1};
-
-/*
- * Media Read Message -- fetch Chroma neighbor edge pixels
- */
-/* ROW */
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 3:UW {align1}; /* x * 16 , y * 8 */
-mul (1) read0_header.0<1>:D read0_header.0<0,1,0>:D 2:W {align1};
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-mov (8) msg_reg0.0<1>:UD read0_header.0<8,8,1>:UD {align1};
-send (8) msg_ind CHROMA_ROW<1>:UB null read(BIND_IDX_CBCR, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* COL */
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 3:UW {align1}; /* x * 16, y * 8 */
-mul (1) read1_header.0<1>:D read1_header.0<0,1,0>:D 2:W {align1};
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-mov (1) read1_header.8<1>:UD BLOCK_8X4 {align1};
-mov (8) msg_reg0.0<1>:UD read1_header.0<8,8,1>:UD {align1};
-send (8) msg_ind CHROMA_COL<1>:UB null read(BIND_IDX_CBCR, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-mov (8) vme_m1.0<1>:ud 0:ud {align1};
-mov (8) mb_mvp_ref.0<1>:ud 0:ud {align1};
-mov (8) mb_ref_win.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw mb_hwdep<0,1,0>:uw 0x04:uw {align1};
-(f0.0) jmpi (1) __mb_hwdep_end;
-
-/* read back the data for MB A */
-/* the layout of MB result is: rx.0(Available). rx.4(MVa), rX.8(MVb), rX.16(Pred_L0 flag),
-* rX.18 (Pred_L1 flag), rX.20(Forward reference ID), rX.22(Backwared reference ID)
-*/
-mov (8) mba_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbb_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbc_result.0<1>:ud 0x0:ud {align1};
-mba_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_AE:uw {align1};
-/* MB A doesn't exist. Zero MV. mba_flag is zero and ref ID = -1 */
-(f0.0) mov (2) mba_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbb_start;
-mov (1) mba_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mba_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbb_start;
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB A */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-/* MV */
-mov (2) mba_result.4<1>:ud mb_mv1.8<2,2,1>:ud {align1};
-mov (2) mba_result.20<1>:w -1:w {align1};
-mov (1) INPUT_ARG0.0<1>:ud mb_inter_wb.4<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.4<1>:ud mb_inter_wb.0<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.8<1>:ud INTER_BLOCK1:ud {align1};
-SAVE_RET {align1};
-jmpi (1) mb_pred_func;
-mov (1) mb_pred_mode.0<1>:uw RET_ARG<0,1,0>:uw {align1};
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L0 {align1};
-(f0.0) mov (1) mba_result.16<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mba_result.20<1>:w 0:w {align1};
-(f0.0) jmpi (1) mbb_start;
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L1 {align1};
-(f0.0) mov (1) mba_result.18<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mba_result.22<1>:w 0:w {align1};
-(f0.0) jmpi (1) mbb_start;
-mov (2) mba_result.16<1>:uw MB_PRED_FLAG {align1};
-mov (2) mba_result.20<1>:w 0:w {align1};
-
-mbb_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_B:uw {align1};
-/* MB B doesn't exist. Zero MV. mba_flag is zero */
-/* If MB B doesn't exist, neither MB C nor D exists */
-(f0.0) mov (2) mbb_result.20<1>:w -1:w {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (1) mbb_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mbb_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbc_start;
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB B */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-mov (2) mbb_result.4<1>:ud mb_mv2.16<2,2,1>:ud {align1};
-mov (2) mbb_result.20<1>:w -1:w {align1};
-mov (1) INPUT_ARG0.0<1>:ud mb_inter_wb.4<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.4<1>:ud mb_inter_wb.0<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.8<1>:ud INTER_BLOCK2:ud {align1};
-SAVE_RET {align1};
-jmpi (1) mb_pred_func;
-mov (1) mb_pred_mode.0<1>:uw RET_ARG<0,1,0>:uw {align1};
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L0 {align1};
-(f0.0) mov (1) mbb_result.16<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mbb_result.20<1>:w 0:w {align1};
-(f0.0) jmpi (1) mbc_start;
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L1 {align1};
-(f0.0) mov (1) mbb_result.18<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mbb_result.22<1>:w 0:w {align1};
-(f0.0) jmpi (1) mbc_start;
-mov (2) mbb_result.16<1>:uw MB_PRED_FLAG {align1};
-mov (2) mbb_result.20<1>:w 0:w {align1};
-
-mbc_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_C:uw {align1};
-/* MB C doesn't exist. Zero MV. mba_flag is zero */
-/* Based on h264 spec the MB D will be replaced if MB C doesn't exist */
-(f0.0) jmpi (1) mbd_start;
-mov (1) mbc_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB C */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-/* Forward MV */
-mov (2) mbc_result.4<1>:ud mb_mv2.16<2,2,1>:ud {align1};
-mov (2) mbc_result.20<1>:w -1:w {align1};
-mov (1) INPUT_ARG0.0<1>:ud mb_inter_wb.4<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.4<1>:ud mb_inter_wb.0<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.8<1>:ud INTER_BLOCK2:ud {align1};
-SAVE_RET {align1};
-jmpi (1) mb_pred_func;
-mov (1) mb_pred_mode.0<1>:uw RET_ARG<0,1,0>:uw {align1};
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L0 {align1};
-(f0.0) mov (1) mbc_result.16<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mbc_result.20<1>:w 0:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L1 {align1};
-(f0.0) mov (1) mbc_result.18<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mbc_result.22<1>:w 0:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (2) mbc_result.16<1>:uw MB_PRED_FLAG {align1};
-mov (2) mbc_result.20<1>:w 0:w {align1};
-
-jmpi (1) mb_mvp_start;
-mbd_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_D:uw {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (1) mbc_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (2) tmp_reg0.0<1>:w tmp_reg0.0<2,2,1>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB D */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ub
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-
-/* Forward MV */
-mov (2) mbc_result.4<1>:ud mb_mv3.24<2,2,1>:ud {align1};
-mov (2) mbc_result.20<1>:w -1:w {align1};
-mov (1) INPUT_ARG0.0<1>:ud mb_inter_wb.4<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.4<1>:ud mb_inter_wb.0<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.8<1>:ud INTER_BLOCK3:ud {align1};
-SAVE_RET {align1};
-jmpi (1) mb_pred_func;
-mov (1) mb_pred_mode.0<1>:uw RET_ARG<0,1,0>:uw {align1};
-mov (1) mbc_result.18<1>:w MB_PRED_FLAG {align1};
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L0 {align1};
-(f0.0) mov (1) mbc_result.16<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mbc_result.20<1>:w 0:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L1 {align1};
-(f0.0) mov (1) mbc_result.18<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mbc_result.22<1>:w 0:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (2) mbc_result.16<1>:uw MB_PRED_FLAG {align1};
-mov (2) mbc_result.20<1>:w 0:w {align1};
-
-mb_mvp_start:
-/*TODO: Add the skip prediction */
-/* Check whether both MB B and C are inavailable */
-add (1) tmp_reg0.0<1>:d mbb_result.0<0,1,0>:d mbc_result.0<0,1,0>:d {align1};
-cmp.z.f0.0 (1) null:d tmp_reg0.0<0,1,0>:d 0:d {align1};
-(-f0.0) jmpi (1) mb_median_start;
-cmp.nz.f0.0 (1) null:d mba_result.0<0,1,0>:d 0:d {align1};
-(f0.0) mov (2) mbb_result.4<1>:ud mba_result.4<2,2,1>:ud {align1};
-(f0.0) mov (2) mbc_result.4<1>:ud mba_result.4<2,2,1>:ud {align1};
-(f0.0) mov (2) mbb_result.20<1>:uw mba_result.20<2,2,1>:uw {align1};
-(f0.0) mov (2) mbc_result.20<1>:uw mba_result.20<2,2,1>:uw {align1};
-(f0.0) mov (2) mb_mvp_ref.0<1>:ud mba_result.4<2,2,1>:ud {align1};
-(-f0.0) mov (2) mb_mvp_ref.0<1>:ud 0:ud {align1};
-jmpi (1) __mb_hwdep_end;
-
-mb_median_start:
-/* forward_MVP */
-/* check whether only one neighbour MB has the same ref ID with the current MB */
-mov (8) tmp_reg0.0<1>:ud 0:ud {align1};
-cmp.z.f0.0 (1) null:d mba_result.20<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbb_result.20<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbb_result.4<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbc_result.20<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbc_result.4<0,1,0>:ud {align1};
-cmp.e.f0.0 (1) null:d tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) mb_mvp_ref.0<1>:ud tmp_reg0.4<0,1,0>:ud {align1};
-(f0.0) jmpi (1) mvp_backward;
-
-mov (1) INPUT_ARG0.0<1>:w mba_result.4<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.4<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.4<0,1,0>:w {align1};
-SAVE_RET {align1};
- jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.0<1>:w RET_ARG<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.0<1>:w mba_result.6<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.6<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.6<0,1,0>:w {align1};
-SAVE_RET {align1};
-jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.2<1>:w RET_ARG<0,1,0>:w {align1};
-
-
-mvp_backward:
-/* check whether only one neighbour MB has the same ref ID with the current MB */
-mov (8) tmp_reg0.0<1>:ud 0:ud {align1};
-cmp.z.f0.0 (1) null:d mba_result.22<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mba_result.8<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbb_result.22<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbb_result.8<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbc_result.22<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbc_result.8<0,1,0>:ud {align1};
-cmp.e.f0.0 (1) null:d tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) mb_mvp_ref.4<1>:ud tmp_reg0.4<0,1,0>:ud {align1};
-(f0.0) jmpi (1) __mb_hwdep_end;
-
-mov (1) INPUT_ARG0.0<1>:w mba_result.8<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.8<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.8<0,1,0>:w {align1};
-SAVE_RET {align1};
- jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.4<1>:w RET_ARG<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.0<1>:w mba_result.10<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.10<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.10<0,1,0>:w {align1};
-SAVE_RET {align1};
-jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.6<1>:w RET_ARG<0,1,0>:w {align1};
-
-__mb_hwdep_end:
-asr (4) mb_ref_win.0<1>:w mb_mvp_ref.0<4,4,1>:w 2:w {align1};
-add (4) mb_ref_win.8<1>:w mb_ref_win.0<4,4,1>:w 3:w {align1};
-and (4) mb_ref_win.16<1>:uw mb_ref_win.8<4,4,1>:uw 0xFFFC:uw {align1};
-
-mov (8) msg_reg0.0<1>:ud 0:ud {align1};
-mov (1) msg_reg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-mov (1) tmp_reg0.0<1>:UD qp_ub<0,1,0>:ub {align1};
-mul (1) msg_reg0.8<1>:ud tmp_reg0.0<1>:ud 2:ud {align1};
-
-send (16)
- msg_ind
- vme_cost_wb.0<1>:ud
- null
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_2,
- BIND_IDX_COST,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-/* m2, get the MV/Mb cost passed from constant buffer when
-spawning thread by MEDIA_OBJECT */
-mov (8) vme_m2<1>:UD vme_cost_wb.0<8,8,1>:UD {align1};
-
-mov (8) vme_msg_2<1>:UD vme_m2.0<8,8,1>:UD {align1};
-
-/* m3 */
-mov (8) vme_msg_3<1>:UD 0x0:UD {align1};
-
-/* m4 */
-mov (1) INEP_ROW.0<1>:UD 0x0:UD {align1};
-and (1) INEP_ROW.4<1>:UD INEP_ROW.4<0,1,0>:UD 0xFF000000:UD {align1};
-mov (8) vme_msg_4<1>:UD INEP_ROW.0<8,8,1>:UD {align1};
-
-/* m5 */
-mov (8) vme_msg_5<1>:UD 0x0:UD {align1};
-mov (16) vme_msg_5.0<1>:UB INEP_COL0.3<32,8,4>:UB {align1};
-mov (1) vme_msg_5.16<1>:UD INTRA_PREDICTORE_MODE {align1};
-
-/* the penalty for Intra mode */
-mov (1) vme_msg_5.28<1>:UD 0x010101:UD {align1};
-mov (1) vme_msg_5.20<1>:UW CHROMA_ROW.6<0,1,0>:UW {align1};
-
-
-/* m6 */
-
-mov (4) vme_msg_6.16<1>:UD CHROMA_ROW.8<4,4,1>:UD {align1};
-mov (8) vme_msg_6.0<1>:UW CHROMA_COL.2<16,8,2>:UW {align1};
-
-/*
- * SIC VME message
- */
-/* m0 */
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-mov (1) tmp_reg0.0<1>:UW LUMA_INTRA_MODE:UW {align1};
-/* Use the Luma mode */
-mov (1) vme_msg_4.5<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-/* m1 */
-mov (1) intra_flag<1>:UW 0x0:UW {align1} ;
-and.z.f0.0 (1) null<1>:UW transform_8x8_ub<0,1,0>:UB 1:UW {align1};
-(f0.0) mov (1) intra_part_mask_ub<1>:UB LUMA_INTRA_8x8_DISABLE {align1};
-
-/* assign MB intra struct from the thread payload*/
-mov (1) mb_intra_struct_ub<1>:UB input_mb_intra_ub<0,1,0>:UB {align1};
-
-/* Disable DC HAAR component when calculating HARR SATD block */
-mov (1) tmp_reg0.0<1>:UW DC_HARR_DISABLE:UW {align1};
-mov (1) vme_m1.30<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-mov (1) vme_m0.12<1>:UD INTRA_SAD_HAAR:UD {align1}; /* 16x16 Source, Intra_harr */
-/* m0 */
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-mov (8) vme_msg_1<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-/* after verification it will be passed by using payload */
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- cre(
- BIND_IDX_VME,
- VME_SIC_MESSAGE_TYPE
- )
- mlen sic_vme_msg_length
- rlen vme_wb_length
- {align1};
-/*
- * Oword Block Write message
- */
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-mov (1) msg_reg1.4<1>:UD vme_wb.16<0,1,0>:UD {align1};
-mov (1) msg_reg1.8<1>:UD vme_wb.20<0,1,0>:UD {align1};
-mov (1) msg_reg1.12<1>:UD vme_wb.24<0,1,0>:UD {align1};
-
-/* Distortion, Intra (17-16), */
-mov (1) msg_reg1.16<1>:UW vme_wb.12<0,1,0>:UW {align1};
-
-mov (1) msg_reg1.20<1>:UD vme_wb.8<0,1,0>:UD {align1};
-/* VME clock counts */
-mov (1) msg_reg1.24<1>:UD vme_wb.28<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.28<1>:UD obw_m0.8<0,1,0>:UD {align1};
-
-/* bind index 3, write 2 oword (32bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-/* IME search */
-mov (1) vme_m0.12<1>:UD SEARCH_CTRL_DUAL_REFERENCE + INTER_PART_MASK + INTER_SAD_HAAR:UD {align1}; /* 16x16 Source, harr */
-mov (1) vme_m0.22<1>:UW DREF_REGION_SIZE {align1};
-/* Dual Reference Width&Height,32x32 */
-
-mov (1) vme_m0.0<1>:UD vme_m0.8<0,1,0>:UD {align1};
-
-/* Reference = (x-8,y-8)-(x+8,y+8) */
-add (1) vme_m0.0<1>:W vme_m0.0<0,1,0>:W -8:W {align1};
-add (1) vme_m0.2<1>:W vme_m0.2<0,1,0>:W -8:W {align1};
-
-mov (1) vme_m0.0<1>:W -8:W {align1};
-mov (1) vme_m0.2<1>:W -8:W {align1};
-
-mov (1) vme_m0.4<1>:UD vme_m0.0<0,1,0>:UD {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_AE:uw {align1};
-(f0.0) add (1) vme_m0.0<1>:w vme_m0.0<0,1,0>:w 4:w {align1};
-(f0.0) add (1) vme_m0.4<1>:w vme_m0.4<0,1,0>:w 4:w {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_B:uw {align1};
-(f0.0) add (1) vme_m0.2<1>:w vme_m0.2<0,1,0>:w 4:w {align1};
-(f0.0) add (1) vme_m0.6<1>:w vme_m0.6<0,1,0>:w 4:w {align1};
-
-add (2) vme_m0.0<1>:w vme_m0.0<2,2,1>:w mb_ref_win.16<2,2,1>:w {align1};
-add (2) vme_m0.4<1>:w vme_m0.4<2,2,1>:w mb_ref_win.20<2,2,1>:w {align1};
-
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-mov (1) vme_m1.0<1>:UD ADAPTIVE_SEARCH_ENABLE:ud {align1} ;
-/* the Max MV number is passed by constant buffer */
-mov (1) vme_m1.4<1>:UB r4.28<0,1,0>:UB {align1};
-mov (1) vme_m1.8<1>:UD DSTART_CENTER + DSEARCH_PATH_LEN:UD {align1};
-/* Set the MV cost center */
-mov (1) vme_m1.16<1>:ud mb_mvp_ref.0<0,1,0>:ud {align1};
-mov (1) vme_m1.20<1>:ud mb_mvp_ref.4<0,1,0>:ud {align1};
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-mov (8) vme_msg_2<1>:UD vme_m2.0<8,8,1>:UD {align1};
-/* M3/M4 search path */
-
-mov (1) vme_msg_3.0<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_3.4<1>:UD 0x100F0F0F:UD {align1};
-mov (1) vme_msg_3.8<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_3.12<1>:UD 0x000F0F0F:UD {align1};
-
-mov (4) vme_msg_3.16<1>:UD 0x0:UD {align1};
-mov (8) vme_msg_4.16<1>:UD 0x0:UD {align1};
-
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- vme(
- BIND_IDX_VME,
- 0,
- 0,
- VME_IME_MESSAGE_TYPE
- )
- mlen ime_vme_msg_length
- rlen vme_wb_length {align1};
-
-/* Set Macroblock-shape/mode for FBR */
-
-mov (1) vme_m2.20<1>:UD 0x0:UD {align1};
-mov (1) vme_m2.21<1>:UB vme_wb.25<0,1,0>:UB {align1};
-mov (1) vme_m2.22<1>:UB vme_wb.26<0,1,0>:UB {align1};
-
-and (1) tmp_reg0.0<1>:UW vme_wb.0<0,1,0>:UW 0x03:UW {align1};
-mov (1) vme_m2.20<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-/* Send FBR message into CRE */
-
-mov (8) vme_msg_3.0<1>:UD vme_wb1.0<8,8,1>:UD {align1};
-mov (8) vme_msg_4.0<1>:ud vme_wb2.0<8,8,1>:ud {align1};
-mov (8) vme_msg_5.0<1>:ud vme_wb3.0<8,8,1>:ud {align1};
-mov (8) vme_msg_6.0<1>:ud vme_wb4.0<8,8,1>:ud {align1};
-
- /* 16x16 Source, 1/4 pixel, harr, BME ENABLE */
-mov (1) vme_m0.12<1>:UD INTER_SAD_HAAR + SUB_PEL_MODE_QUARTER + FBR_BME_ENABLE:UD {align1};
-
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-mov (1) tmp_reg0.0<1>:uw BI_WEIGHT {align1};
-mov (1) vme_m1.6<1>:UB tmp_reg0.0<0,1,0>:ub {align1};
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-mov (8) vme_msg_2.0<1>:UD vme_m2.0<8,8,1>:UD {align1};
-
-/* after verification it will be passed by using payload */
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- cre(
- BIND_IDX_VME,
- VME_FBR_MESSAGE_TYPE
- )
- mlen fbr_vme_msg_length
- rlen vme_wb_length
- {align1};
-
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x02:UD {align1};
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-/* write FME info */
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.4<1>:UD vme_wb.24<0,1,0>:UD {align1};
-/* Inter distortion of FME */
-mov (1) msg_reg1.8<1>:UD vme_wb.8<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.12<1>:UD vme_m2.20<0,1,0>:UD {align1};
-
-/* bind index 3, write oword (16bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_0,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-/* Write FME/BME MV */
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x01:UD {align1};
-mov (8) msg_reg0.0<1>:UD obw_m0.0<8,8,1>:UD {align1};
-
-
-mov (8) msg_reg1.0<1>:UD vme_wb1.0<8,8,1>:UD {align1};
-mov (8) msg_reg2.0<1>:ud vme_wb2.0<8,8,1>:ud {align1};
-mov (8) msg_reg3.0<1>:ud vme_wb3.0<8,8,1>:ud {align1};
-mov (8) msg_reg4.0<1>:ud vme_wb4.0<8,8,1>:ud {align1};
-/* bind index 3, write 8 oword (128 bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_8,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 5
- rlen obw_wb_length
- {align1};
-
-/* Write FME/BME RefID */
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x08:UD {align1};
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-
-mov (8) msg_reg1.0<1>:UD vme_wb6.0<8,8,1>:UD {align1};
-
-/* bind index 3, write 2 oword (32bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-
-/* Issue message fence so that the previous write message is committed */
-send (16)
- mb_ind
- obw_wb
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_FENCE,
- OBR_MF_COMMIT,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-__EXIT:
-/*
- * kill thread
- */
-mov (8) ts_msg_reg0<1>:UD r0<8,8,1>:UD {align1};
-send (16) ts_msg_ind acc0<1>UW null thread_spawner(0, 0, 1) mlen 1 rlen 0 {align1 EOT};
-
-
- nop ;
- nop ;
-/* Compare three word data to get the min value */
-word_imin:
- cmp.le.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- cmp.le.f0.0 (1) null:w TEMP_VAR0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w TEMP_VAR0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- RETURN {align1};
-
-/* Compare three word data to get the max value */
-word_imax:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- cmp.ge.f0.0 (1) null:w TEMP_VAR0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w TEMP_VAR0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- RETURN {align1};
-
-word_imedian:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_a_ge_b;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_end;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- jmpi (1) cmp_end;
-cmp_a_ge_b:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_end;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
-cmp_end:
- RETURN {align1};
-
-mb_pred_func:
- mov (8) TEMP_VAR0.0<1>:ud 0:ud {align1};
- mov (1) TEMP_VAR0.0<1>:ub INPUT_ARG0.2<0,1,0>:ub {align1};
- and (1) TEMP_VAR0.4<1>:uw INPUT_ARG0.4<0,1,0>:uw INTER_MASK:uw {align1};
- /* INTER16x16 mode. The bit1-0 is the prediction mode */
- cmp.e.f0.0 (1) null:uw TEMP_VAR0.4<1>:uw INTER_16X16MODE:uw {align1};
- (f0.0) and (1) RET_ARG<1>:uw TEMP_VAR0.0<0,1,0>:uw PRED_MASK {align1};
- (f0.0) jmpi (1) end_mb_pred;
- /* Check whether it is INTER8x8 mode. */
- cmp.e.f0.0 (1) null:uw TEMP_VAR0.4<1>:uw INTER_8X8MODE:uw {align1};
- (f0.0) jmpi (1) mb_pred_func_8;
-
- /* Check whether it is INTER16x8 mode. */
- cmp.e.f0.0 (1) null:uw TEMP_VAR0.4<1>:uw INTER_16X8MODE:uw {align1};
- (f0.0) jmpi (1) mb_pred_func_168;
-mb_pred_func_816:
- /* Block 0/2 uses the bit1-0. Block 1/3 uses the bit3-2 */
- mov (1) TEMP_VAR0.8<1>:uw INPUT_ARG0.8<0,1,0>:uw {align1};
- and.z.f0.0 (1) null:uw TEMP_VAR0.8<1>:uw INTER_BLOCK1:uw {align1};
- (f0.0) and (1) RET_ARG<1>:uw TEMP_VAR0.0<0,1,0>:uw PRED_MASK {align1};
- (f0.0) jmpi (1) end_mb_pred;
- shr (1) TEMP_VAR0.16<1>:uw TEMP_VAR0.0<0,1,0>:uw 2:uw {align1};
- and (1) RET_ARG<1>:uw TEMP_VAR0.16<1>:uw PRED_MASK {align1};
- jmpi (1) end_mb_pred;
-
-mb_pred_func_168:
- /* Block 0/1 uses the bit1-0. Block 2/3 uses the bit3-2 */
- mov (1) TEMP_VAR0.8<1>:uw INPUT_ARG0.8<0,1,0>:uw {align1};
- cmp.l.f0.0 (1) null:uw TEMP_VAR0.8<1>:uw INTER_BLOCK2:uw {align1};
- (f0.0) and (1) RET_ARG<1>:uw TEMP_VAR0.0<0,1,0>:uw PRED_MASK {align1};
- (f0.0) jmpi (1) end_mb_pred;
- shr (1) TEMP_VAR0.16<1>:uw TEMP_VAR0.0<0,1,0>:uw 2:uw {align1};
- and (1) RET_ARG<1>:uw TEMP_VAR0.16<1>:uw PRED_MASK {align1};
- jmpi (1) end_mb_pred;
-
-mb_pred_func_8:
- /* 8X8 mode. Every block uses two bits as the prediction mode. */
- mul (1) TEMP_VAR0.8<1>:uw INPUT_ARG0.8<0,1,0>:uw 2:uw {align1};
- shr (1) TEMP_VAR0.16<1>:uw TEMP_VAR0.0<0,1,0>:uw TEMP_VAR0.8<0,1,0>:uw {align1};
- and (1) RET_ARG<1>:uw TEMP_VAR0.16<1>:uw PRED_MASK {align1};
-end_mb_pred:
- RETURN {align1};
-
diff --git a/src/shaders/vme/inter_bframe_haswell.g75a b/src/shaders/vme/inter_bframe_haswell.g75a
deleted file mode 100644
index b5eca7e..0000000
--- a/src/shaders/vme/inter_bframe_haswell.g75a
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "vme75.inc"
-#include "inter_bframe_haswell.asm"
diff --git a/src/shaders/vme/inter_bframe_haswell.g75b b/src/shaders/vme/inter_bframe_haswell.g75b
deleted file mode 100644
index 113eac0..0000000
--- a/src/shaders/vme/inter_bframe_haswell.g75b
+++ /dev/null
@@ -1,418 +0,0 @@
- { 0x00800001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24002e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24003ca5, 0x00000400, 0xfff8fff8 },
- { 0x00000040, 0x24043ca5, 0x00000404, 0xffffffff },
- { 0x00000001, 0x240800e1, 0x00000000, 0x0000001f },
- { 0x00000001, 0x24140231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24202e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24203ca5, 0x00000420, 0xfffcfffc },
- { 0x00000001, 0x242800e1, 0x00000000, 0x000f0003 },
- { 0x00000001, 0x24340231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24482e29, 0x004500a0, 0x00040004 },
- { 0x00000001, 0x24540231, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24884521, 0x000000a2, 0x000000a1 },
- { 0x00000040, 0x24884421, 0x00000488, 0x000000a0 },
- { 0x00000041, 0x24880c21, 0x00000488, 0x00000018 },
- { 0x00000001, 0x24940231, 0x00000014, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x23801cb1, 0x00000800, 0x02190004 },
- { 0x00600001, 0x28000021, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x23a01cb1, 0x00000800, 0x02290004 },
- { 0x00200009, 0x24002e25, 0x004500a0, 0x00030003 },
- { 0x00000041, 0x24003ca5, 0x00000400, 0x00020002 },
- { 0x00000040, 0x24003ca5, 0x00000400, 0xfff8fff8 },
- { 0x00000040, 0x24043ca5, 0x00000404, 0xffffffff },
- { 0x00600001, 0x28000021, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x26001cb1, 0x00000800, 0x02190006 },
- { 0x00200009, 0x24202e25, 0x004500a0, 0x00030003 },
- { 0x00000041, 0x24203ca5, 0x00000420, 0x00020002 },
- { 0x00000040, 0x24203ca5, 0x00000420, 0xfffcfffc },
- { 0x00000001, 0x242800e1, 0x00000000, 0x00070003 },
- { 0x00600001, 0x28000021, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x26201cb1, 0x00000800, 0x02190006 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2ac00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2a800061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002d28, 0x000000a6, 0x00040004 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000ce0 },
- { 0x00600001, 0x2ae00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00600060 },
- { 0x00210001, 0x2af401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000001f0 },
- { 0x00000001, 0x2ae000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24003dad, 0x00000400, 0xffffffff },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x00000018 },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b601ca1, 0x00000b40, 0x02280303 },
- { 0x05000010, 0x2000252c, 0x00000b70, 0x00000b88 },
- { 0x00210001, 0x2af401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000140 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000003 },
- { 0x0a800031, 0x2ba01ca1, 0x00000b40, 0x02480403 },
- { 0x00200001, 0x2ae40021, 0x00450bc8, 0x00000000 },
- { 0x00200001, 0x2af401ed, 0x00000000, 0xffffffff },
- { 0x00000001, 0x2fa00021, 0x00000b84, 0x00000000 },
- { 0x00000001, 0x2fa40021, 0x00000b80, 0x00000000 },
- { 0x00000001, 0x2fa80061, 0x00000000, 0x00000001 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00001430 },
- { 0x00000001, 0x2aa00129, 0x00000fe4, 0x00000000 },
- { 0x01000010, 0x20002d28, 0x00000aa0, 0x00000000 },
- { 0x00010001, 0x2af001e9, 0x00000000, 0x00010001 },
- { 0x00010001, 0x2af401ed, 0x00000000, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000060 },
- { 0x01000010, 0x20002d28, 0x00000aa0, 0x00010001 },
- { 0x00010001, 0x2af201e9, 0x00000000, 0x00010001 },
- { 0x00010001, 0x2af601ed, 0x00000000, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00200001, 0x2af001e9, 0x00000000, 0x00010001 },
- { 0x00200001, 0x2af401ed, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00100010 },
- { 0x00210001, 0x2b1401ed, 0x00000000, 0xffffffff },
- { 0x00210001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000660 },
- { 0x00000001, 0x2b0000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24023dad, 0x00000402, 0xffffffff },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x00000018 },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b601ca1, 0x00000b40, 0x02280303 },
- { 0x05000010, 0x2000252c, 0x00000b70, 0x00000b88 },
- { 0x00210001, 0x2b1401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000140 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000003 },
- { 0x0a800031, 0x2ba01ca1, 0x00000b40, 0x02480403 },
- { 0x00200001, 0x2b040021, 0x00450bf0, 0x00000000 },
- { 0x00200001, 0x2b1401ed, 0x00000000, 0xffffffff },
- { 0x00000001, 0x2fa00021, 0x00000b84, 0x00000000 },
- { 0x00000001, 0x2fa40021, 0x00000b80, 0x00000000 },
- { 0x00000001, 0x2fa80061, 0x00000000, 0x00000002 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000011f0 },
- { 0x00000001, 0x2aa00129, 0x00000fe4, 0x00000000 },
- { 0x01000010, 0x20002d28, 0x00000aa0, 0x00000000 },
- { 0x00010001, 0x2b1001e9, 0x00000000, 0x00010001 },
- { 0x00010001, 0x2b1401ed, 0x00000000, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000060 },
- { 0x01000010, 0x20002d28, 0x00000aa0, 0x00010001 },
- { 0x00010001, 0x2b1201e9, 0x00000000, 0x00010001 },
- { 0x00010001, 0x2b1601ed, 0x00000000, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00200001, 0x2b1001e9, 0x00000000, 0x00010001 },
- { 0x00200001, 0x2b1401ed, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00080008 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000210 },
- { 0x00000001, 0x2b2000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24023dad, 0x00000402, 0xffffffff },
- { 0x00000040, 0x24003dad, 0x00000400, 0x00010001 },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x00000018 },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b601ca1, 0x00000b40, 0x02280303 },
- { 0x05000010, 0x2000252c, 0x00000b70, 0x00000b88 },
- { 0x00210001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000380 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000003 },
- { 0x0a800031, 0x2ba01ca1, 0x00000b40, 0x02480403 },
- { 0x00200001, 0x2b240021, 0x00450bf0, 0x00000000 },
- { 0x00200001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00000001, 0x2fa00021, 0x00000b84, 0x00000000 },
- { 0x00000001, 0x2fa40021, 0x00000b80, 0x00000000 },
- { 0x00000001, 0x2fa80061, 0x00000000, 0x00000002 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000fc0 },
- { 0x00000001, 0x2aa00129, 0x00000fe4, 0x00000000 },
- { 0x01000010, 0x20002d28, 0x00000aa0, 0x00000000 },
- { 0x00010001, 0x2b3001e9, 0x00000000, 0x00010001 },
- { 0x00010001, 0x2b3401ed, 0x00000000, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000002a0 },
- { 0x01000010, 0x20002d28, 0x00000aa0, 0x00010001 },
- { 0x00010001, 0x2b3201e9, 0x00000000, 0x00010001 },
- { 0x00010001, 0x2b3601ed, 0x00000000, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000260 },
- { 0x00200001, 0x2b3001e9, 0x00000000, 0x00010001 },
- { 0x00200001, 0x2b3401ed, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000230 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00040004 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000200 },
- { 0x00000001, 0x2b2000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00200040, 0x24003dad, 0x00450400, 0xffffffff },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x00000018 },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b601ca1, 0x00000b40, 0x02280303 },
- { 0x05000010, 0x2000252c, 0x00000b70, 0x00000b88 },
- { 0x00210001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000150 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000003 },
- { 0x0a800031, 0x2ba01cb1, 0x00000b40, 0x02480403 },
- { 0x00200001, 0x2b240021, 0x00450c18, 0x00000000 },
- { 0x00200001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00000001, 0x2fa00021, 0x00000b84, 0x00000000 },
- { 0x00000001, 0x2fa40021, 0x00000b80, 0x00000000 },
- { 0x00000001, 0x2fa80061, 0x00000000, 0x00000003 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000d90 },
- { 0x00000001, 0x2aa00129, 0x00000fe4, 0x00000000 },
- { 0x00000001, 0x2b3201ed, 0x00000000, 0x00010001 },
- { 0x01000010, 0x20002d28, 0x00000aa0, 0x00000000 },
- { 0x00010001, 0x2b3001e9, 0x00000000, 0x00010001 },
- { 0x00010001, 0x2b3401ed, 0x00000000, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000060 },
- { 0x01000010, 0x20002d28, 0x00000aa0, 0x00010001 },
- { 0x00010001, 0x2b3201e9, 0x00000000, 0x00010001 },
- { 0x00010001, 0x2b3601ed, 0x00000000, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00200001, 0x2b3001e9, 0x00000000, 0x00010001 },
- { 0x00200001, 0x2b3401ed, 0x00000000, 0x00000000 },
- { 0x00000040, 0x240014a5, 0x00000b00, 0x00000b20 },
- { 0x01000010, 0x20001ca4, 0x00000400, 0x00000000 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000080 },
- { 0x02000010, 0x20001ca4, 0x00000ae0, 0x00000000 },
- { 0x00210001, 0x2b040021, 0x00450ae4, 0x00000000 },
- { 0x00210001, 0x2b240021, 0x00450ae4, 0x00000000 },
- { 0x00210001, 0x2b140129, 0x00450af4, 0x00000000 },
- { 0x00210001, 0x2b340129, 0x00450af4, 0x00000000 },
- { 0x00210001, 0x2ac00021, 0x00450ae4, 0x00000000 },
- { 0x00310001, 0x2ac00061, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000320 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200af4, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000ae4, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200b14, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000b04, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200b34, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000b24, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200400, 0x00010001 },
- { 0x00010001, 0x2ac00021, 0x00000404, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000c0 },
- { 0x00000001, 0x2fa001ad, 0x00000ae4, 0x00000000 },
- { 0x00000001, 0x2fa401ad, 0x00000b04, 0x00000000 },
- { 0x00000001, 0x2fa801ad, 0x00000b24, 0x00000000 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000a00 },
- { 0x00000001, 0x2ac001ad, 0x00000fe4, 0x00000000 },
- { 0x00000001, 0x2fa001ad, 0x00000ae6, 0x00000000 },
- { 0x00000001, 0x2fa401ad, 0x00000b06, 0x00000000 },
- { 0x00000001, 0x2fa801ad, 0x00000b26, 0x00000000 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000009a0 },
- { 0x00000001, 0x2ac201ad, 0x00000fe4, 0x00000000 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200af6, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000ae8, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200b16, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000b08, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200b36, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000b28, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200400, 0x00010001 },
- { 0x00010001, 0x2ac40021, 0x00000404, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000c0 },
- { 0x00000001, 0x2fa001ad, 0x00000ae8, 0x00000000 },
- { 0x00000001, 0x2fa401ad, 0x00000b08, 0x00000000 },
- { 0x00000001, 0x2fa801ad, 0x00000b28, 0x00000000 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000870 },
- { 0x00000001, 0x2ac401ad, 0x00000fe4, 0x00000000 },
- { 0x00000001, 0x2fa001ad, 0x00000aea, 0x00000000 },
- { 0x00000001, 0x2fa401ad, 0x00000b0a, 0x00000000 },
- { 0x00000001, 0x2fa801ad, 0x00000b2a, 0x00000000 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000810 },
- { 0x00000001, 0x2ac601ad, 0x00000fe4, 0x00000000 },
- { 0x0040000c, 0x2a803dad, 0x00690ac0, 0x00020002 },
- { 0x00400040, 0x2a883dad, 0x00690a80, 0x00030003 },
- { 0x00400005, 0x2a902d29, 0x00690a88, 0xfffcfffc },
- { 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x28140231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x24000221, 0x000000a8, 0x00000000 },
- { 0x00000041, 0x28080c21, 0x00200400, 0x00000002 },
- { 0x0a800031, 0x25801ca1, 0x00000800, 0x02180208 },
- { 0x00600001, 0x25600021, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23800061, 0x00000000, 0x00000000 },
- { 0x00000005, 0x23840c21, 0x00000384, 0xff000000 },
- { 0x00600001, 0x28800021, 0x008d0380, 0x00000000 },
- { 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x28a00231, 0x00cf03a3, 0x00000000 },
- { 0x00000001, 0x28b00061, 0x00000000, 0x11111111 },
- { 0x00000001, 0x28bc0061, 0x00000000, 0x00010101 },
- { 0x00000001, 0x28b40129, 0x00000606, 0x00000000 },
- { 0x00400001, 0x28d00021, 0x00690608, 0x00000000 },
- { 0x00600001, 0x28c00129, 0x00ae0622, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x24000169, 0x00000000, 0x00010001 },
- { 0x00000001, 0x28850231, 0x00000400, 0x00000000 },
- { 0x00000001, 0x247c0169, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a4, 0x00010001 },
- { 0x00010001, 0x247c00f1, 0x00000000, 0x00000002 },
- { 0x00000001, 0x247d0231, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x24000169, 0x00000000, 0x00200020 },
- { 0x00000001, 0x247e0231, 0x00000400, 0x00000000 },
- { 0x00000001, 0x244c0061, 0x00000000, 0x00800000 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x0d600031, 0x21801ca1, 0x00000800, 0x0e782000 },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200021, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240021, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280021, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0021, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28300129, 0x0000018c, 0x00000000 },
- { 0x00000001, 0x28340021, 0x00000188, 0x00000000 },
- { 0x00000001, 0x28380021, 0x0000019c, 0x00000000 },
- { 0x00000001, 0x283c0021, 0x00000488, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0203 },
- { 0x00000001, 0x244c0061, 0x00000000, 0x00200700 },
- { 0x00000001, 0x24560169, 0x00000000, 0x20202020 },
- { 0x00000001, 0x24400021, 0x00000448, 0x00000000 },
- { 0x00000040, 0x24403dad, 0x00000440, 0xfff8fff8 },
- { 0x00000040, 0x24423dad, 0x00000442, 0xfff8fff8 },
- { 0x00000001, 0x244001ed, 0x00000000, 0xfff8fff8 },
- { 0x00000001, 0x244201ed, 0x00000000, 0xfff8fff8 },
- { 0x00000001, 0x24440021, 0x00000440, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00600060 },
- { 0x00010040, 0x24403dad, 0x00000440, 0x00040004 },
- { 0x00010040, 0x24443dad, 0x00000444, 0x00040004 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00100010 },
- { 0x00010040, 0x24423dad, 0x00000442, 0x00040004 },
- { 0x00010040, 0x24463dad, 0x00000446, 0x00040004 },
- { 0x00200040, 0x244035ad, 0x00450440, 0x00450a90 },
- { 0x00200040, 0x244435ad, 0x00450444, 0x00450a94 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00000002 },
- { 0x00000001, 0x24640231, 0x0000009c, 0x00000000 },
- { 0x00000001, 0x24680061, 0x00000000, 0x00001212 },
- { 0x00000001, 0x24700021, 0x00000ac0, 0x00000000 },
- { 0x00000001, 0x24740021, 0x00000ac4, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d0560, 0x00000000 },
- { 0x00000001, 0x28600061, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28640061, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28680061, 0x00000000, 0x10010101 },
- { 0x00000001, 0x286c0061, 0x00000000, 0x000f0f0f },
- { 0x00400001, 0x28700061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28900061, 0x00000000, 0x00000000 },
- { 0x08600031, 0x21801ca1, 0x00000800, 0x0a784000 },
- { 0x00000001, 0x25740061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25750231, 0x00000199, 0x00000000 },
- { 0x00000001, 0x25760231, 0x0000019a, 0x00000000 },
- { 0x00000005, 0x24002d29, 0x00000180, 0x00030003 },
- { 0x00000001, 0x25740231, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28600021, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28800021, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28a00021, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28c00021, 0x008d0200, 0x00000000 },
- { 0x00000001, 0x244c0061, 0x00000000, 0x00203000 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x24000169, 0x00000000, 0x00200020 },
- { 0x00000001, 0x24660231, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d0560, 0x00000000 },
- { 0x0d600031, 0x21801ca1, 0x00000800, 0x0e786000 },
- { 0x00000040, 0x24880c21, 0x00000488, 0x00000002 },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200021, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240021, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28280021, 0x00000188, 0x00000000 },
- { 0x00000001, 0x282c0021, 0x00000574, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0003 },
- { 0x00000040, 0x24880c21, 0x00000488, 0x00000001 },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28600021, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28800021, 0x008d0200, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x0a0a0403 },
- { 0x00000040, 0x24880c21, 0x00000488, 0x00000008 },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0240, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0203 },
- { 0x0a800031, 0x20001cac, 0x00000b40, 0x0219e003 },
- { 0x00600001, 0x2e000021, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24001ca8, 0x00000e00, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x06000010, 0x200035ac, 0x00000fa0, 0x00000fa4 },
- { 0x00010001, 0x2f6001ad, 0x00000fa0, 0x00000000 },
- { 0x00110001, 0x2f6001ad, 0x00000fa4, 0x00000000 },
- { 0x06000010, 0x200035ac, 0x00000f60, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000f60, 0x00000000 },
- { 0x00110001, 0x2fe401ad, 0x00000fa8, 0x00000000 },
- { 0x00000001, 0x34000020, 0x00000fe0, 0x00000000 },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa4 },
- { 0x00010001, 0x2f6001ad, 0x00000fa0, 0x00000000 },
- { 0x00110001, 0x2f6001ad, 0x00000fa4, 0x00000000 },
- { 0x04000010, 0x200035ac, 0x00000f60, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000f60, 0x00000000 },
- { 0x00110001, 0x2fe401ad, 0x00000fa8, 0x00000000 },
- { 0x00000001, 0x34000020, 0x00000fe0, 0x00000000 },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa4 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa0, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000a0 },
- { 0x04000010, 0x200035ac, 0x00000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe401ad, 0x00000fa4, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000060 },
- { 0x04000010, 0x200035ac, 0x00000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa4, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe401ad, 0x00000fa0, 0x00000000 },
- { 0x00000001, 0x34000020, 0x00000fe0, 0x00000000 },
- { 0x00600001, 0x2f600061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x2f600231, 0x00000fa2, 0x00000000 },
- { 0x00000005, 0x2f642d29, 0x00000fa4, 0x00030003 },
- { 0x01000010, 0x20002d28, 0x00200f64, 0x00000000 },
- { 0x00010005, 0x2fe42d29, 0x00000f60, 0x00030003 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000150 },
- { 0x01000010, 0x20002d28, 0x00200f64, 0x00030003 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000100 },
- { 0x01000010, 0x20002d28, 0x00200f64, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x00000001, 0x2f680129, 0x00000fa8, 0x00000000 },
- { 0x01000005, 0x20002d28, 0x00200f68, 0x00010001 },
- { 0x00010005, 0x2fe42d29, 0x00000f60, 0x00030003 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000d0 },
- { 0x00000008, 0x2f702d29, 0x00000f60, 0x00020002 },
- { 0x00000005, 0x2fe42d29, 0x00200f70, 0x00030003 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000a0 },
- { 0x00000001, 0x2f680129, 0x00000fa8, 0x00000000 },
- { 0x05000010, 0x20002d28, 0x00200f68, 0x00020002 },
- { 0x00010005, 0x2fe42d29, 0x00000f60, 0x00030003 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000060 },
- { 0x00000008, 0x2f702d29, 0x00000f60, 0x00020002 },
- { 0x00000005, 0x2fe42d29, 0x00200f70, 0x00030003 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x00000041, 0x2f682d29, 0x00000fa8, 0x00020002 },
- { 0x00000008, 0x2f702529, 0x00000f60, 0x00000f68 },
- { 0x00000005, 0x2fe42d29, 0x00200f70, 0x00030003 },
- { 0x00000001, 0x34000020, 0x00000fe0, 0x00000000 },
diff --git a/src/shaders/vme/inter_bframe_ivb.asm b/src/shaders/vme/inter_bframe_ivb.asm
deleted file mode 100644
index 8277ae5..0000000
--- a/src/shaders/vme/inter_bframe_ivb.asm
+++ /dev/null
@@ -1,759 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- * Authors: Zhao Yakui <yakui.zhao@intel.com>
- *
- */
-// Modual name: InterFrame_ivy.asm
-//
-// Make intra predition estimation for Inter-B frame
-//
-
-//
-// Now, begin source code....
-//
-
-#define SAVE_RET add (1) RETURN_REG<1>:ud ip:ud 32:ud
-#define RETURN mov (1) ip:ud RETURN_REG<0,1,0>:ud
-
-/*
- * __START
- */
-__INTER_START:
-mov (16) tmp_reg0.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg2.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg4.0<1>:UD 0x0:UD {align1} ;
-mov (16) tmp_reg6.0<1>:UD 0x0:UD {align1} ;
-
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-mov (1) read0_header.8<1>:UD BLOCK_32X1 {align1};
-mov (1) read0_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-mov (1) read1_header.8<1>:UD BLOCK_4X16 {align1};
-mov (1) read1_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) vme_m0.8<1>:UW orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-mov (1) vme_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-mul (1) obw_m0.8<1>:UD w_in_mb_uw<0,1,0>:UW orig_y_ub<0,1,0>:UB {align1};
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD orig_x_ub<0,1,0>:UB {align1};
-mul (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD INTER_VME_OUTPUT_IN_OWS:UD {align1};
-mov (1) obw_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/*
- * Media Read Message -- fetch Luma neighbor edge pixels
- */
-/* ROW */
-mov (8) msg_reg0.0<1>:UD read0_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_ROW<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* COL */
-mov (8) msg_reg0.0<1>:UD read1_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_COL0<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 2 {align1};
-
-mov (8) mb_mvp_ref.0<1>:ud 0:ud {align1};
-mov (8) mb_ref_win.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw mb_hwdep<0,1,0>:uw 0x04:uw {align1};
-(f0.0) jmpi (1) __mb_hwdep_end;
-/* read back the data for MB A */
-/* the layout of MB result is: rx.0(Available). rx.4(MVa), rX.8(MVb), rX.16(Pred_L0 flag),
-* rX.18 (Pred_L1 flag), rX.20(Forward reference ID), rX.22(Backwared reference ID)
-*/
-mov (8) mba_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbb_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbc_result.0<1>:ud 0x0:ud {align1};
-mba_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_AE:uw {align1};
-/* MB A doesn't exist. Zero MV. mba_flag is zero and ref ID = -1 */
-(f0.0) mov (2) mba_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbb_start;
-mov (1) mba_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_IN_OWS:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-mov (1) mb_msg_tmp.8<1>:ud mb_msg0.8<0,1,0>:ud {align1};
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_MV_IN_OWS:UD {align1};
-/* bind index 3, read 1 oword (16bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_0,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-and.z.f0.0 (1) null<1>:ud mb_mode_wb.0 <0,1,0>:ud INTRAMBFLAG_MASK:ud {align1} ;
-(-f0.0) mov (2) mba_result.20<1>:w -1:w {align1};
-(-f0.0) jmpi (1) mbb_start;
-
-mov (1) mb_msg0.8<1>:UD mb_msg_tmp.8<0,1,0>:ud {align1};
-/* Read MV for MB A */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-/* MV */
-mov (2) mba_result.4<1>:ud mb_mv1.8<2,2,1>:ud {align1};
-mov (2) mba_result.20<1>:w -1:w {align1};
-mov (1) INPUT_ARG0.0<1>:ud mb_mode_wb.4<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.4<1>:ud mb_mode_wb.0<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.8<1>:ud INTER_BLOCK1:ud {align1};
-SAVE_RET {align1};
-jmpi (1) mb_pred_func;
-mov (1) mb_pred_mode.0<1>:uw RET_ARG<0,1,0>:uw {align1};
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L0 {align1};
-(f0.0) mov (1) mba_result.16<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mba_result.20<1>:w 0:w {align1};
-(f0.0) jmpi (1) mbb_start;
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L1 {align1};
-(f0.0) mov (1) mba_result.18<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mba_result.22<1>:w 0:w {align1};
-(f0.0) jmpi (1) mbb_start;
-mov (2) mba_result.16<1>:uw MB_PRED_FLAG {align1};
-mov (2) mba_result.20<1>:w 0:w {align1};
-
-mbb_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_B:uw {align1};
-/* MB B doesn't exist. Zero MV. mba_flag is zero */
-/* If MB B doesn't exist, neither MB C nor D exists */
-(f0.0) mov (2) mbb_result.20<1>:w -1:w {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (1) mbb_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_IN_OWS:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-mov (1) mb_msg_tmp.8<1>:ud mb_msg0.8<0,1,0>:ud {align1};
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_MV_IN_OWS:UD {align1};
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_0,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-and.z.f0.0 (1) null<1>:ud mb_mode_wb.0 <0,1,0>:ud INTRAMBFLAG_MASK:ud {align1} ;
-(-f0.0) mov (2) mbb_result.20<1>:w -1:w {align1};
-(-f0.0) jmpi (1) mbc_start;
-
-mov (1) mb_msg0.8<1>:UD mb_msg_tmp.8<0,1,0>:ud {align1};
-/* Read MV for MB B */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-
-mov (2) mbb_result.4<1>:ud mb_mv2.16<2,2,1>:ud {align1};
-mov (2) mbb_result.20<1>:w -1:w {align1};
-mov (1) INPUT_ARG0.0<1>:ud mb_mode_wb.4<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.4<1>:ud mb_mode_wb.0<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.8<1>:ud INTER_BLOCK2:ud {align1};
-SAVE_RET {align1};
-jmpi (1) mb_pred_func;
-mov (1) mb_pred_mode.0<1>:uw RET_ARG<0,1,0>:uw {align1};
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L0 {align1};
-(f0.0) mov (1) mbb_result.16<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mbb_result.20<1>:w 0:w {align1};
-(f0.0) jmpi (1) mbc_start;
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L1 {align1};
-(f0.0) mov (1) mbb_result.18<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mbb_result.22<1>:w 0:w {align1};
-(f0.0) jmpi (1) mbc_start;
-mov (2) mbb_result.16<1>:uw MB_PRED_FLAG {align1};
-
-mbc_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_C:uw {align1};
-/* MB C doesn't exist. Zero MV. mba_flag is zero */
-/* Based on h264 spec the MB D will be replaced if MB C doesn't exist */
-(f0.0) jmpi (1) mbd_start;
-mov (1) mbc_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_IN_OWS:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-mov (1) mb_msg_tmp.8<1>:ud mb_msg0.8<0,1,0>:ud {align1};
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_MV_IN_OWS:UD {align1};
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_0,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-and.z.f0.0 (1) null<1>:ud mb_mode_wb.0 <0,1,0>:ud INTRAMBFLAG_MASK:ud {align1} ;
-(-f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(-f0.0) jmpi (1) mb_mvp_start;
-mov (1) mb_msg0.8<1>:UD mb_msg_tmp.8<0,1,0>:ud {align1};
-/* Read MV for MB C */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-/* Forward MV */
-mov (2) mbc_result.4<1>:ud mb_mv2.16<2,2,1>:ud {align1};
-mov (2) mbc_result.20<1>:w -1:w {align1};
-mov (1) INPUT_ARG0.0<1>:ud mb_mode_wb.4<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.4<1>:ud mb_mode_wb.0<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.8<1>:ud INTER_BLOCK2:ud {align1};
-SAVE_RET {align1};
-jmpi (1) mb_pred_func;
-mov (1) mb_pred_mode.0<1>:uw RET_ARG<0,1,0>:uw {align1};
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L0 {align1};
-(f0.0) mov (1) mbc_result.16<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mbc_result.20<1>:w 0:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L1 {align1};
-(f0.0) mov (1) mbc_result.18<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mbc_result.22<1>:w 0:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (2) mbc_result.16<1>:uw MB_PRED_FLAG {align1};
-mov (2) mbc_result.20<1>:w 0:w {align1};
-
-jmpi (1) mb_mvp_start;
-mbd_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_D:uw {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (1) mbc_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (2) tmp_reg0.0<1>:w tmp_reg0.0<2,2,1>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_IN_OWS:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-mov (1) mb_msg_tmp.8<1>:ud mb_msg0.8<0,1,0>:ud {align1};
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_MV_IN_OWS:UD {align1};
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_0,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-and.z.f0.0 (1) null<1>:ud mb_mode_wb.0 <0,1,0>:ud INTRAMBFLAG_MASK:ud {align1} ;
-(-f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(-f0.0) jmpi (1) mb_mvp_start;
-
-mov (1) mb_msg0.8<1>:UD mb_msg_tmp.8<0,1,0>:ud {align1};
-/* Read MV for MB D */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ub
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-
-/* Forward MV */
-mov (2) mbc_result.4<1>:ud mb_mv3.24<2,2,1>:ud {align1};
-mov (2) mbc_result.20<1>:w -1:w {align1};
-mov (1) INPUT_ARG0.0<1>:ud mb_mode_wb.4<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.4<1>:ud mb_mode_wb.0<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.8<1>:ud INTER_BLOCK3:ud {align1};
-SAVE_RET {align1};
-jmpi (1) mb_pred_func;
-mov (1) mb_pred_mode.0<1>:uw RET_ARG<0,1,0>:uw {align1};
-mov (1) mbc_result.18<1>:w MB_PRED_FLAG {align1};
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L0 {align1};
-(f0.0) mov (1) mbc_result.16<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mbc_result.20<1>:w 0:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-cmp.e.f0.0 (1) null:uw mb_pred_mode.0<0,1,0>:uw PRED_L1 {align1};
-(f0.0) mov (1) mbc_result.18<1>:uw MB_PRED_FLAG {align1};
-(f0.0) mov (1) mbc_result.22<1>:w 0:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (2) mbc_result.16<1>:uw MB_PRED_FLAG {align1};
-mov (2) mbc_result.20<1>:w 0:w {align1};
-
-mb_mvp_start:
-/*TODO: Add the skip prediction */
-/* Check whether both MB B and C are invailable */
-add (1) tmp_reg0.0<1>:d mbb_result.0<0,1,0>:d mbc_result.0<0,1,0>:d {align1};
-cmp.z.f0.0 (1) null:d tmp_reg0.0<0,1,0>:d 0:d {align1};
-(-f0.0) jmpi (1) mb_median_start;
-cmp.nz.f0.0 (1) null:d mba_result.0<0,1,0>:d 0:d {align1};
-(f0.0) mov (2) mbb_result.4<1>:ud mba_result.4<2,2,1>:ud {align1};
-(f0.0) mov (2) mbc_result.4<1>:ud mba_result.4<2,2,1>:ud {align1};
-(f0.0) mov (2) mbb_result.20<1>:uw mba_result.20<2,2,1>:uw {align1};
-(f0.0) mov (2) mbc_result.20<1>:uw mba_result.20<2,2,1>:uw {align1};
-(f0.0) mov (2) mb_mvp_ref.0<1>:ud mba_result.4<2,2,1>:ud {align1};
-(-f0.0) mov (2) mb_mvp_ref.0<1>:ud 0:ud {align1};
-jmpi (1) __mb_hwdep_end;
-
-mb_median_start:
-/* forward_MVP */
-/* check whether only one neighbour MB has the same ref ID with the current MB */
-mov (8) tmp_reg0.0<1>:ud 0:ud {align1};
-cmp.z.f0.0 (1) null:d mba_result.20<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbb_result.20<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbb_result.4<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbc_result.20<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbc_result.4<0,1,0>:ud {align1};
-cmp.e.f0.0 (1) null:d tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) mb_mvp_ref.0<1>:ud tmp_reg0.4<0,1,0>:ud {align1};
-(f0.0) jmpi (1) mvp_backward;
-
-mov (1) INPUT_ARG0.0<1>:w mba_result.4<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.4<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.4<0,1,0>:w {align1};
-SAVE_RET {align1};
- jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.0<1>:w RET_ARG<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.0<1>:w mba_result.6<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.6<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.6<0,1,0>:w {align1};
-SAVE_RET {align1};
-jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.2<1>:w RET_ARG<0,1,0>:w {align1};
-
-
-mvp_backward:
-/* check whether only one neighbour MB has the same ref ID with the current MB */
-mov (8) tmp_reg0.0<1>:ud 0:ud {align1};
-cmp.z.f0.0 (1) null:d mba_result.22<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mba_result.8<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbb_result.22<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbb_result.8<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbc_result.22<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbc_result.8<0,1,0>:ud {align1};
-cmp.e.f0.0 (1) null:d tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) mb_mvp_ref.4<1>:ud tmp_reg0.4<0,1,0>:ud {align1};
-(f0.0) jmpi (1) __mb_hwdep_end;
-
-mov (1) INPUT_ARG0.0<1>:w mba_result.8<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.8<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.8<0,1,0>:w {align1};
-SAVE_RET {align1};
- jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.4<1>:w RET_ARG<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.0<1>:w mba_result.10<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.10<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.10<0,1,0>:w {align1};
-SAVE_RET {align1};
-jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.6<1>:w RET_ARG<0,1,0>:w {align1};
-
-__mb_hwdep_end:
-asr (4) mb_ref_win.0<1>:w mb_mvp_ref.0<4,4,1>:w 2:w {align1};
-add (4) mb_ref_win.8<1>:w mb_ref_win.0<4,4,1>:w 3:w {align1};
-and (4) mb_ref_win.16<1>:uw mb_ref_win.8<4,4,1>:uw 0xFFFC:uw {align1};
-
-/* m2 */
-mov (8) vme_msg_2<1>:UD 0x0:UD {align1};
-
-/* m3 */
-mov (1) INEP_ROW.0<1>:UD 0x0:UD {align1};
-and (1) INEP_ROW.4<1>:UD INEP_ROW.4<0,1,0>:UD 0xFF000000:UD {align1};
-mov (8) vme_msg_3<1>:UD INEP_ROW.0<8,8,1>:UD {align1};
-
-/* m4 */
-mov (8) vme_msg_4<1>:UD 0x0 {align1};
-mov (16) vme_msg_4.0<1>:UB INEP_COL0.3<32,8,4>:UB {align1};
-mov (1) vme_msg_4.16<1>:UD INTRA_PREDICTORE_MODE {align1};
-
-
-/* m1 */
-mov (8) vme_m1.0<1>:ud 0x0:ud {align1};
-and.z.f0.0 (1) null<1>:UW transform_8x8_ub<0,1,0>:UB 1:UW {align1};
-(f0.0) mov (1) intra_part_mask_ub<1>:UB LUMA_INTRA_8x8_DISABLE:uw {align1};
-
-/* assign MB intra struct from the thread payload*/
-mov (1) mb_intra_struct_ub<1>:UB input_mb_intra_ub<0,1,0>:UB {align1};
-
-
-/* M0 */
-/* IME search */
-mov (1) vme_m0.12<1>:UD SEARCH_CTRL_DUAL_REFERENCE + INTER_PART_MASK + INTER_SAD_HAAR + SUB_PEL_MODE_QUARTER:UD {align1};
-/* 16x16 Source, 1/4 pixel, harr */
-mov (1) vme_m0.22<1>:UW DREF_REGION_SIZE {align1}; /* Reference Width&Height, 48x40 */
-
-mov (1) vme_m0.0<1>:UD vme_m0.8<0,1,0>:UD {align1};
-
-mov (1) vme_m0.0<1>:W -8:W {align1};
-mov (1) vme_m0.2<1>:W -8:W {align1};
-
-mov (1) vme_m0.4<1>:UD vme_m0.0<0,1,0>:UD {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_AE:uw {align1};
-(f0.0) add (1) vme_m0.0<1>:w vme_m0.0<0,1,0>:w 4:w {align1};
-(f0.0) add (1) vme_m0.4<1>:w vme_m0.4<0,1,0>:w 4:w {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_B:uw {align1};
-(f0.0) add (1) vme_m0.2<1>:w vme_m0.2<0,1,0>:w 4:w {align1};
-(f0.0) add (1) vme_m0.6<1>:w vme_m0.6<0,1,0>:w 4:w {align1};
-
-mov (1) vme_m0.4<1>:UD vme_m0.0<0,1,0>:UD {align1};
-
-add (2) vme_m0.0<1>:w vme_m0.0<2,2,1>:w mb_ref_win.16<2,2,1>:w {align1};
-add (2) vme_m0.4<1>:w vme_m0.4<2,2,1>:w mb_ref_win.20<2,2,1>:w {align1};
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-/* m1 */
-
-mov (1) vme_m1.0<1>:UD ADAPTIVE_SEARCH_ENABLE:ud {align1} ;
-/* MV num is passed by constant buffer. R4.28 */
-mov (1) vme_m1.4<1>:UB r4.28<0,1,0>:UB {align1};
-add (1) vme_m1.4<1>:UD vme_m1.4<0,1,0>:UD FB_PRUNING_ENABLE:UD {align1};
-add (1) vme_m1.6<1>:uw vme_m1.6<0,1,0>:uw BI_WEIGHT {align1};
-
-
-mov (1) vme_m1.8<1>:UD DSTART_CENTER + DSEARCH_PATH_LEN:UD {align1};
-
-/* Set the MV cost center */
-mov (1) vme_m1.16<1>:ud mb_mvp_ref.0<0,1,0>:ud {align1};
-mov (1) vme_m1.20<1>:ud mb_mvp_ref.4<0,1,0>:ud {align1};
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-mov (1) tmp_reg0.0<1>:ud qp_ub<0,1,0>:ub {align1};
-/* lut_subindex */
-and (1) tmp_reg1.0<1>:ud tmp_reg0.0<0,1,0>:ud 0x06:ud {align1};
-shl (1) tmp_reg0.4<1>:ud tmp_reg1.0<0,1,0>:ud 10:ud {align1};
-
-/* lut_index */
-and (1) tmp_reg1.0<1>:ud tmp_reg0.0<0,1,0>:ud 0x038:ud {align1};
-shl (1) tmp_reg1.4<1>:ud tmp_reg1.0<0,1,0>:ud 5:ud {align1};
-
-add (1) tmp_reg0.0<1>:ud tmp_reg0.4<0,1,0>:ud tmp_reg1.4<0,1,0>:ud {align1};
-/* Use one register as the descriptor of send instruction */
-
-add (1) a0.0<1>:ud tmp_reg0.0<0,1,0>:ud 0x0a686000:ud {align1};
-send (1) vme_wb.0<1>:ud vme_msg_0 0x08 a0.0<0,1,0>:ud {align1};
-
-and.z.f0.0 (1) null<1>:ud vme_wb0.0<0,1,0>:ud INTRAMBFLAG_MASK:ud {align1} ;
-
-(-f0.0)jmpi (1) __INTRA_INFO ;
-
-__INTER_INFO:
-/* Write MV pairs */
-mov (8) msg_reg0.0<1>:UD obw_m0.0<8,8,1>:UD {align1};
-
-mov (8) msg_reg1.0<1>:UD vme_wb1.0<8,8,1>:UD {align1};
-
-mov (8) msg_reg2.0<1>:UD vme_wb2.0<8,8,1>:UD {align1};
-
-mov (8) msg_reg3.0<1>:UD vme_wb3.0<8,8,1>:UD {align1};
-
-mov (8) msg_reg4.0<1>:UD vme_wb4.0<8,8,1>:UD {align1};
-/* bind index 3, write 8 oword (128 bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_8,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 5
- rlen obw_wb_length
- {align1};
-
-mov (1) tmp_uw1<1>:uw 0:uw {align1} ;
-mov (1) tmp_ud1<1>:ud 0:ud {align1} ;
-and (1) tmp_uw1<1>:uw vme_wb0.2<0,1,0>:uw MV32_BIT_MASK:uw {align1} ;
-shr (1) tmp_uw1<1>:uw tmp_uw1<1>:uw MV32_BIT_SHIFT:uw {align1} ;
-mul (1) tmp_ud1<1>:ud tmp_uw1<0,1,0>:uw 96:uw {align1} ;
-add (1) tmp_ud1<1>:ud tmp_ud1<0,1,0>:ud 32:uw {align1} ;
-shl (1) tmp_uw1<1>:uw tmp_uw1<0,1,0>:uw MFC_MV32_BIT_SHIFT:uw {align1} ;
-add (1) tmp_uw1<1>:uw tmp_uw1<0,1,0>:uw MVSIZE_UW_BASE:uw {align1} ;
-add (1) tmp_uw1<1>:uw tmp_uw1<0,1,0>:uw CBP_DC_YUV_UW:uw {align1} ;
-
-mov (1) msg_reg1.0<1>:uw vme_wb0.0<0,1,0>:uw {align1} ;
-mov (1) msg_reg1.2<1>:uw tmp_uw1<0,1,0>:uw {align1} ;
-mov (1) msg_reg1.4<1>:UD vme_wb0.28<0,1,0>:UD {align1};
-mov (1) msg_reg1.8<1>:ud tmp_ud1<0,1,0>:ud {align1} ;
-mov (1) msg_reg1.12<1>:ud vme_wb0.0<0,1,0>:ud {align1} ;
-mov (1) msg_reg1.16<1>:ud 0x25:ud {align1} ;
-jmpi (1) __OUTPUT_INFO;
-
-__INTRA_INFO:
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-mov (1) msg_reg1.4<1>:UD vme_wb.16<0,1,0>:UD {align1};
-mov (1) msg_reg1.8<1>:UD vme_wb.20<0,1,0>:UD {align1};
-mov (1) msg_reg1.12<1>:UD vme_wb.24<0,1,0>:UD {align1};
-mov (1) msg_reg1.16<1>:ud 0x35:ud {align1} ;
-
-__OUTPUT_INFO:
-
-mov (1) msg_reg1.20<1>:ud obw_m0.8<0,1,0>:ud {align1};
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD INTER_VME_OUTPUT_MV_IN_OWS:UD {align1};
-mov (8) msg_reg0.0<1>:ud obw_m0.0<8,8,1>:ud {align1};
-
-
-/* bind index 3, write 1 oword, msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-NOP;
-
-/* Issue message fence so that the previous write message is committed */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_FENCE,
- OBR_MF_COMMIT,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-__EXIT:
-/*
- * kill thread
- */
-mov (8) ts_msg_reg0<1>:UD r0<8,8,1>:UD {align1};
-send (16) ts_msg_ind acc0<1>UW null thread_spawner(0, 0, 1) mlen 1 rlen 0 {align1 EOT};
-
-
- nop ;
- nop ;
-/* Compare three word data to get the min value */
-word_imin:
- cmp.le.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- cmp.le.f0.0 (1) null:w TEMP_VAR0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w TEMP_VAR0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- RETURN {align1};
-
-/* Compare three word data to get the max value */
-word_imax:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- cmp.ge.f0.0 (1) null:w TEMP_VAR0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w TEMP_VAR0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- RETURN {align1};
-
-word_imedian:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_a_ge_b;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_end;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- jmpi (1) cmp_end;
-cmp_a_ge_b:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_end;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
-cmp_end:
- RETURN {align1};
-
-/* This is to get the prediction mode for the correspongding partions/sub-mb
- * Parameter description:
- ARG0.0: INTER_SHAPE/PRED_MODE
- ARG0.4: INTER_MODE(16x16, 16x8, 8x16 or 8X8)
- ARG0.8: sub-mb block number(block 0/1/2/3)
-*/
-
-mb_pred_func:
- mov (8) TEMP_VAR0.0<1>:ud 0:ud {align1};
- mov (1) TEMP_VAR0.0<1>:ub INPUT_ARG0.1<0,1,0>:ub {align1};
- and (1) TEMP_VAR0.4<1>:uw INPUT_ARG0.4<0,1,0>:uw INTER_MASK:uw {align1};
- /* INTER16x16 mode. The bit1-0 is the prediction mode */
- cmp.e.f0.0 (1) null:uw TEMP_VAR0.4<1>:uw INTER_16X16MODE:uw {align1};
- (f0.0) and (1) RET_ARG<1>:uw TEMP_VAR0.0<0,1,0>:uw PRED_MASK {align1};
- (f0.0) jmpi (1) end_mb_pred;
- /* Check whether it is INTER8x8 mode. */
- cmp.e.f0.0 (1) null:uw TEMP_VAR0.4<1>:uw INTER_8X8MODE:uw {align1};
- (f0.0) jmpi (1) mb_pred_func_8;
-
- /* Check whether it is INTER16x8 mode. */
- cmp.e.f0.0 (1) null:uw TEMP_VAR0.4<1>:uw INTER_16X8MODE:uw {align1};
- (f0.0) jmpi (1) mb_pred_func_168;
-mb_pred_func_816:
- /* Block 0/2 uses the bit1-0. Block 1/3 uses the bit3-2 */
- mov (1) TEMP_VAR0.8<1>:uw INPUT_ARG0.8<0,1,0>:uw {align1};
- and.z.f0.0 (1) null:uw TEMP_VAR0.8<1>:uw INTER_BLOCK1:uw {align1};
- (f0.0) and (1) RET_ARG<1>:uw TEMP_VAR0.0<0,1,0>:uw PRED_MASK {align1};
- (f0.0) jmpi (1) end_mb_pred;
- shr (1) TEMP_VAR0.16<1>:uw TEMP_VAR0.0<0,1,0>:uw 2:uw {align1};
- and (1) RET_ARG<1>:uw TEMP_VAR0.16<1>:uw PRED_MASK {align1};
- jmpi (1) end_mb_pred;
-
-mb_pred_func_168:
- /* Block 0/1 uses the bit1-0. Block 2/3 uses the bit3-2 */
- mov (1) TEMP_VAR0.8<1>:uw INPUT_ARG0.8<0,1,0>:uw {align1};
- cmp.l.f0.0 (1) null:uw TEMP_VAR0.8<1>:uw INTER_BLOCK2:uw {align1};
- (f0.0) and (1) RET_ARG<1>:uw TEMP_VAR0.0<0,1,0>:uw PRED_MASK {align1};
- (f0.0) jmpi (1) end_mb_pred;
- shr (1) TEMP_VAR0.16<1>:uw TEMP_VAR0.0<0,1,0>:uw 2:uw {align1};
- and (1) RET_ARG<1>:uw TEMP_VAR0.16<1>:uw PRED_MASK {align1};
- jmpi (1) end_mb_pred;
-
-mb_pred_func_8:
- /* 8X8 mode. Every block uses two bits as the prediction mode. */
- mul (1) TEMP_VAR0.8<1>:uw INPUT_ARG0.8<0,1,0>:uw 2:uw {align1};
- shr (1) TEMP_VAR0.16<1>:uw TEMP_VAR0.0<0,1,0>:uw TEMP_VAR0.8<0,1,0>:uw {align1};
- and (1) RET_ARG<1>:uw TEMP_VAR0.16<1>:uw PRED_MASK {align1};
-end_mb_pred:
- RETURN {align1};
-
diff --git a/src/shaders/vme/inter_bframe_ivb.g7a b/src/shaders/vme/inter_bframe_ivb.g7a
deleted file mode 100644
index e7ae9c4..0000000
--- a/src/shaders/vme/inter_bframe_ivb.g7a
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "vme7.inc"
-#include "inter_bframe_ivb.asm"
diff --git a/src/shaders/vme/inter_bframe_ivb.g7b b/src/shaders/vme/inter_bframe_ivb.g7b
deleted file mode 100644
index 79eb292..0000000
--- a/src/shaders/vme/inter_bframe_ivb.g7b
+++ /dev/null
@@ -1,383 +0,0 @@
- { 0x00800001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24002e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24003ca5, 0x00000400, 0xfff8fff8 },
- { 0x00000040, 0x24043ca5, 0x00000404, 0xffffffff },
- { 0x00000001, 0x240800e1, 0x00000000, 0x0000001f },
- { 0x00000001, 0x24140231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24202e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24203ca5, 0x00000420, 0xfffcfffc },
- { 0x00000001, 0x242800e1, 0x00000000, 0x000f0003 },
- { 0x00000001, 0x24340231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24482e29, 0x004500a0, 0x00040004 },
- { 0x00000001, 0x24540231, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24884521, 0x000000a2, 0x000000a1 },
- { 0x00000040, 0x24884421, 0x00000488, 0x000000a0 },
- { 0x00000041, 0x24880c21, 0x00000488, 0x0000000a },
- { 0x00000001, 0x24940231, 0x00000014, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x23801cb1, 0x00000800, 0x02190004 },
- { 0x00600001, 0x28000021, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x23a01cb1, 0x00000800, 0x02290004 },
- { 0x00600001, 0x2ac00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2a800061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002d28, 0x000000a6, 0x00040004 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000001aa },
- { 0x00600001, 0x2ae00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00600060 },
- { 0x00210001, 0x2af401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000042 },
- { 0x00000001, 0x2ae000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24003dad, 0x00000400, 0xffffffff },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x0000000a },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x2b680021, 0x00000b48, 0x00000000 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000008 },
- { 0x0a800031, 0x2b801ca1, 0x00000b40, 0x02180003 },
- { 0x01000005, 0x20000c20, 0x00000b80, 0x00002000 },
- { 0x00310001, 0x2af401ed, 0x00000000, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000028 },
- { 0x00000001, 0x2b480021, 0x00000b68, 0x00000000 },
- { 0x0a800031, 0x2ba01ca1, 0x00000b40, 0x02480403 },
- { 0x00200001, 0x2ae40021, 0x00450bc8, 0x00000000 },
- { 0x00200001, 0x2af401ed, 0x00000000, 0xffffffff },
- { 0x00000001, 0x2fa00021, 0x00000b84, 0x00000000 },
- { 0x00000001, 0x2fa40021, 0x00000b80, 0x00000000 },
- { 0x00000001, 0x2fa80061, 0x00000000, 0x00000001 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000256 },
- { 0x00000001, 0x2aa00129, 0x00000fe4, 0x00000000 },
- { 0x01000010, 0x20002d28, 0x00000aa0, 0x00000000 },
- { 0x00010001, 0x2af001e9, 0x00000000, 0x00010001 },
- { 0x00010001, 0x2af401ed, 0x00000000, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x01000010, 0x20002d28, 0x00000aa0, 0x00010001 },
- { 0x00010001, 0x2af201e9, 0x00000000, 0x00010001 },
- { 0x00010001, 0x2af601ed, 0x00000000, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 },
- { 0x00200001, 0x2af001e9, 0x00000000, 0x00010001 },
- { 0x00200001, 0x2af401ed, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00100010 },
- { 0x00210001, 0x2b1401ed, 0x00000000, 0xffffffff },
- { 0x00210001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000d6 },
- { 0x00000001, 0x2b0000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24023dad, 0x00000402, 0xffffffff },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x0000000a },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x2b680021, 0x00000b48, 0x00000000 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000008 },
- { 0x0a800031, 0x2b801ca1, 0x00000b40, 0x02180003 },
- { 0x01000005, 0x20000c20, 0x00000b80, 0x00002000 },
- { 0x00310001, 0x2b1401ed, 0x00000000, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000026 },
- { 0x00000001, 0x2b480021, 0x00000b68, 0x00000000 },
- { 0x0a800031, 0x2ba01ca1, 0x00000b40, 0x02480403 },
- { 0x00200001, 0x2b040021, 0x00450bf0, 0x00000000 },
- { 0x00200001, 0x2b1401ed, 0x00000000, 0xffffffff },
- { 0x00000001, 0x2fa00021, 0x00000b84, 0x00000000 },
- { 0x00000001, 0x2fa40021, 0x00000b80, 0x00000000 },
- { 0x00000001, 0x2fa80061, 0x00000000, 0x00000002 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000020a },
- { 0x00000001, 0x2aa00129, 0x00000fe4, 0x00000000 },
- { 0x01000010, 0x20002d28, 0x00000aa0, 0x00000000 },
- { 0x00010001, 0x2b1001e9, 0x00000000, 0x00010001 },
- { 0x00010001, 0x2b1401ed, 0x00000000, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x01000010, 0x20002d28, 0x00000aa0, 0x00010001 },
- { 0x00010001, 0x2b1201e9, 0x00000000, 0x00010001 },
- { 0x00010001, 0x2b1601ed, 0x00000000, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000002 },
- { 0x00200001, 0x2b1001e9, 0x00000000, 0x00010001 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00080008 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000046 },
- { 0x00000001, 0x2b2000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24023dad, 0x00000402, 0xffffffff },
- { 0x00000040, 0x24003dad, 0x00000400, 0x00010001 },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x0000000a },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x2b680021, 0x00000b48, 0x00000000 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000008 },
- { 0x0a800031, 0x2b801ca1, 0x00000b40, 0x02180003 },
- { 0x01000005, 0x20000c20, 0x00000b80, 0x00002000 },
- { 0x00310001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000074 },
- { 0x00000001, 0x2b480021, 0x00000b68, 0x00000000 },
- { 0x0a800031, 0x2ba01ca1, 0x00000b40, 0x02480403 },
- { 0x00200001, 0x2b240021, 0x00450bf0, 0x00000000 },
- { 0x00200001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00000001, 0x2fa00021, 0x00000b84, 0x00000000 },
- { 0x00000001, 0x2fa40021, 0x00000b80, 0x00000000 },
- { 0x00000001, 0x2fa80061, 0x00000000, 0x00000002 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000001c2 },
- { 0x00000001, 0x2aa00129, 0x00000fe4, 0x00000000 },
- { 0x01000010, 0x20002d28, 0x00000aa0, 0x00000000 },
- { 0x00010001, 0x2b3001e9, 0x00000000, 0x00010001 },
- { 0x00010001, 0x2b3401ed, 0x00000000, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000058 },
- { 0x01000010, 0x20002d28, 0x00000aa0, 0x00010001 },
- { 0x00010001, 0x2b3201e9, 0x00000000, 0x00010001 },
- { 0x00010001, 0x2b3601ed, 0x00000000, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000050 },
- { 0x00200001, 0x2b3001e9, 0x00000000, 0x00010001 },
- { 0x00200001, 0x2b3401ed, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00040004 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000044 },
- { 0x00000001, 0x2b2000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00200040, 0x24003dad, 0x00450400, 0xffffffff },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x0000000a },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x2b680021, 0x00000b48, 0x00000000 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000008 },
- { 0x0a800031, 0x2b801ca1, 0x00000b40, 0x02180003 },
- { 0x01000005, 0x20000c20, 0x00000b80, 0x00002000 },
- { 0x00310001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0x0000002a },
- { 0x00000001, 0x2b480021, 0x00000b68, 0x00000000 },
- { 0x0a800031, 0x2ba01cb1, 0x00000b40, 0x02480403 },
- { 0x00200001, 0x2b240021, 0x00450c18, 0x00000000 },
- { 0x00200001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00000001, 0x2fa00021, 0x00000b84, 0x00000000 },
- { 0x00000001, 0x2fa40021, 0x00000b80, 0x00000000 },
- { 0x00000001, 0x2fa80061, 0x00000000, 0x00000003 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000178 },
- { 0x00000001, 0x2aa00129, 0x00000fe4, 0x00000000 },
- { 0x00000001, 0x2b3201ed, 0x00000000, 0x00010001 },
- { 0x01000010, 0x20002d28, 0x00000aa0, 0x00000000 },
- { 0x00010001, 0x2b3001e9, 0x00000000, 0x00010001 },
- { 0x00010001, 0x2b3401ed, 0x00000000, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x01000010, 0x20002d28, 0x00000aa0, 0x00010001 },
- { 0x00010001, 0x2b3201e9, 0x00000000, 0x00010001 },
- { 0x00010001, 0x2b3601ed, 0x00000000, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 },
- { 0x00200001, 0x2b3001e9, 0x00000000, 0x00010001 },
- { 0x00200001, 0x2b3401ed, 0x00000000, 0x00000000 },
- { 0x00000040, 0x240014a5, 0x00000b00, 0x00000b20 },
- { 0x01000010, 0x20001ca4, 0x00000400, 0x00000000 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x02000010, 0x20001ca4, 0x00000ae0, 0x00000000 },
- { 0x00210001, 0x2b040021, 0x00450ae4, 0x00000000 },
- { 0x00210001, 0x2b240021, 0x00450ae4, 0x00000000 },
- { 0x00210001, 0x2b140129, 0x00450af4, 0x00000000 },
- { 0x00210001, 0x2b340129, 0x00450af4, 0x00000000 },
- { 0x00210001, 0x2ac00021, 0x00450ae4, 0x00000000 },
- { 0x00310001, 0x2ac00061, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000064 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200af4, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000ae4, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200b14, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000b04, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200b34, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000b24, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200400, 0x00010001 },
- { 0x00010001, 0x2ac00021, 0x00000404, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
- { 0x00000001, 0x2fa001ad, 0x00000ae4, 0x00000000 },
- { 0x00000001, 0x2fa401ad, 0x00000b04, 0x00000000 },
- { 0x00000001, 0x2fa801ad, 0x00000b24, 0x00000000 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000106 },
- { 0x00000001, 0x2ac001ad, 0x00000fe4, 0x00000000 },
- { 0x00000001, 0x2fa001ad, 0x00000ae6, 0x00000000 },
- { 0x00000001, 0x2fa401ad, 0x00000b06, 0x00000000 },
- { 0x00000001, 0x2fa801ad, 0x00000b26, 0x00000000 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000fa },
- { 0x00000001, 0x2ac201ad, 0x00000fe4, 0x00000000 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200af6, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000ae8, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200b16, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000b08, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200b36, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000b28, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200400, 0x00010001 },
- { 0x00010001, 0x2ac40021, 0x00000404, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
- { 0x00000001, 0x2fa001ad, 0x00000ae8, 0x00000000 },
- { 0x00000001, 0x2fa401ad, 0x00000b08, 0x00000000 },
- { 0x00000001, 0x2fa801ad, 0x00000b28, 0x00000000 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000d4 },
- { 0x00000001, 0x2ac401ad, 0x00000fe4, 0x00000000 },
- { 0x00000001, 0x2fa001ad, 0x00000aea, 0x00000000 },
- { 0x00000001, 0x2fa401ad, 0x00000b0a, 0x00000000 },
- { 0x00000001, 0x2fa801ad, 0x00000b2a, 0x00000000 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000c8 },
- { 0x00000001, 0x2ac601ad, 0x00000fe4, 0x00000000 },
- { 0x0040000c, 0x2a803dad, 0x00690ac0, 0x00020002 },
- { 0x00400040, 0x2a883dad, 0x00690a80, 0x00030003 },
- { 0x00400005, 0x2a902d29, 0x00690a88, 0xfffcfffc },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23800061, 0x00000000, 0x00000000 },
- { 0x00000005, 0x23840c21, 0x00000384, 0xff000000 },
- { 0x00600001, 0x28600021, 0x008d0380, 0x00000000 },
- { 0x00600001, 0x288000e1, 0x00000000, 0x00000000 },
- { 0x00800001, 0x28800231, 0x00cf03a3, 0x00000000 },
- { 0x00000001, 0x28900061, 0x00000000, 0x11111111 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a4, 0x00010001 },
- { 0x00010001, 0x247c0171, 0x00000000, 0x00020002 },
- { 0x00000001, 0x247d0231, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x244c0061, 0x00000000, 0x00203700 },
- { 0x00000001, 0x24560169, 0x00000000, 0x20202020 },
- { 0x00000001, 0x24400021, 0x00000448, 0x00000000 },
- { 0x00000001, 0x244001ed, 0x00000000, 0xfff8fff8 },
- { 0x00000001, 0x244201ed, 0x00000000, 0xfff8fff8 },
- { 0x00000001, 0x24440021, 0x00000440, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00600060 },
- { 0x00010040, 0x24403dad, 0x00000440, 0x00040004 },
- { 0x00010040, 0x24443dad, 0x00000444, 0x00040004 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00100010 },
- { 0x00010040, 0x24423dad, 0x00000442, 0x00040004 },
- { 0x00010040, 0x24463dad, 0x00000446, 0x00040004 },
- { 0x00000001, 0x24440021, 0x00000440, 0x00000000 },
- { 0x00200040, 0x244035ad, 0x00450440, 0x00450a90 },
- { 0x00200040, 0x244435ad, 0x00450444, 0x00450a94 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00000002 },
- { 0x00000001, 0x24640231, 0x0000009c, 0x00000000 },
- { 0x00000040, 0x24640c21, 0x00000464, 0x40000000 },
- { 0x00000040, 0x24662d29, 0x00000466, 0x00200020 },
- { 0x00000001, 0x24680061, 0x00000000, 0x00001212 },
- { 0x00000001, 0x24700021, 0x00000ac0, 0x00000000 },
- { 0x00000001, 0x24740021, 0x00000ac4, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x00000001, 0x24000221, 0x000000a8, 0x00000000 },
- { 0x00000005, 0x24200c21, 0x00000400, 0x00000006 },
- { 0x00000009, 0x24040c21, 0x00000420, 0x0000000a },
- { 0x00000005, 0x24200c21, 0x00000400, 0x00000038 },
- { 0x00000009, 0x24240c21, 0x00000420, 0x00000005 },
- { 0x00000040, 0x24000421, 0x00000404, 0x00000424 },
- { 0x00000040, 0x22000c20, 0x00000400, 0x0a686000 },
- { 0x08000031, 0x21800221, 0x00000800, 0x00000200 },
- { 0x01000005, 0x20000c20, 0x00000180, 0x00002000 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x0000002c },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28600021, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28800021, 0x008d0200, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x0a0a0403 },
- { 0x00000001, 0x25420169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25440061, 0x00000000, 0x00000000 },
- { 0x00000005, 0x25422d29, 0x00000182, 0x00200020 },
- { 0x00000008, 0x25422d29, 0x00200542, 0x00050005 },
- { 0x00000041, 0x25442d21, 0x00000542, 0x00600060 },
- { 0x00000040, 0x25442c21, 0x00000544, 0x00200020 },
- { 0x00000009, 0x25422d29, 0x00000542, 0x00050005 },
- { 0x00000040, 0x25422d29, 0x00000542, 0x00400040 },
- { 0x00000040, 0x25422d29, 0x00000542, 0x000e000e },
- { 0x00000001, 0x28200129, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28220129, 0x00000542, 0x00000000 },
- { 0x00000001, 0x28240021, 0x0000019c, 0x00000000 },
- { 0x00000001, 0x28280021, 0x00000544, 0x00000000 },
- { 0x00000001, 0x282c0021, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28300061, 0x00000000, 0x00000025 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x00000001, 0x28200021, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240021, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280021, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0021, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28300061, 0x00000000, 0x00000035 },
- { 0x00000001, 0x28340021, 0x00000488, 0x00000000 },
- { 0x00000040, 0x24880c21, 0x00000488, 0x00000008 },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0203 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0a800031, 0x2b801ca1, 0x00000b40, 0x0219e003 },
- { 0x00600001, 0x2e000021, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24001ca8, 0x00000e00, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x06000010, 0x200035ac, 0x00000fa0, 0x00000fa4 },
- { 0x00010001, 0x2f6001ad, 0x00000fa0, 0x00000000 },
- { 0x00110001, 0x2f6001ad, 0x00000fa4, 0x00000000 },
- { 0x06000010, 0x200035ac, 0x00000f60, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000f60, 0x00000000 },
- { 0x00110001, 0x2fe401ad, 0x00000fa8, 0x00000000 },
- { 0x00000001, 0x34000020, 0x00000fe0, 0x00000000 },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa4 },
- { 0x00010001, 0x2f6001ad, 0x00000fa0, 0x00000000 },
- { 0x00110001, 0x2f6001ad, 0x00000fa4, 0x00000000 },
- { 0x04000010, 0x200035ac, 0x00000f60, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000f60, 0x00000000 },
- { 0x00110001, 0x2fe401ad, 0x00000fa8, 0x00000000 },
- { 0x00000001, 0x34000020, 0x00000fe0, 0x00000000 },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa4 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa0, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x04000010, 0x200035ac, 0x00000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe401ad, 0x00000fa4, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x04000010, 0x200035ac, 0x00000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa4, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe401ad, 0x00000fa0, 0x00000000 },
- { 0x00000001, 0x34000020, 0x00000fe0, 0x00000000 },
- { 0x00600001, 0x2f600061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x2f600231, 0x00000fa1, 0x00000000 },
- { 0x00000005, 0x2f642d29, 0x00000fa4, 0x00030003 },
- { 0x01000010, 0x20002d28, 0x00200f64, 0x00000000 },
- { 0x00010005, 0x2fe42d29, 0x00000f60, 0x00030003 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000002a },
- { 0x01000010, 0x20002d28, 0x00200f64, 0x00030003 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x01000010, 0x20002d28, 0x00200f64, 0x00010001 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00000001, 0x2f680129, 0x00000fa8, 0x00000000 },
- { 0x01000005, 0x20002d28, 0x00200f68, 0x00010001 },
- { 0x00010005, 0x2fe42d29, 0x00000f60, 0x00030003 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000001a },
- { 0x00000008, 0x2f702d29, 0x00000f60, 0x00020002 },
- { 0x00000005, 0x2fe42d29, 0x00200f70, 0x00030003 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x00000001, 0x2f680129, 0x00000fa8, 0x00000000 },
- { 0x05000010, 0x20002d28, 0x00200f68, 0x00020002 },
- { 0x00010005, 0x2fe42d29, 0x00000f60, 0x00030003 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x00000008, 0x2f702d29, 0x00000f60, 0x00020002 },
- { 0x00000005, 0x2fe42d29, 0x00200f70, 0x00030003 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x00000041, 0x2f682d29, 0x00000fa8, 0x00020002 },
- { 0x00000008, 0x2f702529, 0x00000f60, 0x00000f68 },
- { 0x00000005, 0x2fe42d29, 0x00200f70, 0x00030003 },
- { 0x00000001, 0x34000020, 0x00000fe0, 0x00000000 },
diff --git a/src/shaders/vme/inter_frame.asm b/src/shaders/vme/inter_frame.asm
deleted file mode 100644
index 1f0a4b9..0000000
--- a/src/shaders/vme/inter_frame.asm
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-// Modual name: IntraFrame.asm
-//
-// Make intra predition estimation for Intra frame
-//
-
-//
-// Now, begin source code....
-//
-
-/*
- * __START
- */
-__INTER_START:
-mov (16) tmp_reg0.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg2.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg3.0<1>:UD 0x0:UD {align1};
-
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-mov (1) read0_header.8<1>:UD BLOCK_32X1 {align1};
-mov (1) read0_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-mov (1) read1_header.8<1>:UD BLOCK_4X16 {align1};
-mov (1) read1_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) vme_m0.8<1>:UW orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* Source = (x, y) * 16 */
-
-cmp.z.f0.0 (1) null<1>:uw quality_level_ub<0,1,0>:ub LOW_QUALITY_LEVEL:uw {align1};
-(f0.0) jmpi (1) __low_quality_search;
-
-__high_quality_search:
-#ifdef DEV_SNB
-shl (2) vme_m0.0<1>:UW orig_xy_ub<2,2,1>:UB 4:UW {align1};
-add (1) vme_m0.0<1>:W vme_m0.0<0,1,0>:W -16:W {align1}; /* Reference = (x-16,y-12)-(x+32,y+24) */
-add (1) vme_m0.2<1>:W vme_m0.2<0,1,0>:W -12:W {align1};
-#else
-mov (1) vme_m0.0<1>:W -16:W {align1} ; /* Reference = (x-16,y-12)-(x+32,y+24) */
-mov (1) vme_m0.2<1>:W -12:W {align1} ;
-#endif
-
-mov (1) vme_m0.12<1>:UD SEARCH_CTRL_SINGLE + INTER_PART_MASK + INTER_SAD_HAAR + SUB_PEL_MODE_QUARTER:UD {align1}; /* 16x16 Source, 1/4 pixel, harr */
-mov (1) vme_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-mov (1) vme_m0.22<1>:UW REF_REGION_SIZE {align1}; /* Reference Width&Height, 48x40 */
-jmpi __vme_msg1;
-
-
-__low_quality_search:
-#ifdef DEV_SNB
-shl (2) vme_m0.0<1>:UW orig_xy_ub<2,2,1>:UB 4:UW {align1};
-add (1) vme_m0.0<1>:W vme_m0.0<0,1,0>:W -8:W {align1};
-add (1) vme_m0.2<1>:W vme_m0.2<0,1,0>:W -8:W {align1};
-#else
-mov (1) vme_m0.0<1>:W -8:W {align1} ;
-mov (1) vme_m0.2<1>:W -8:W {align1} ;
-#endif
-
-mov (1) vme_m0.12<1>:UD SEARCH_CTRL_SINGLE + INTER_PART_MASK + INTER_SAD_HAAR + SUB_PEL_MODE_HALF:UD {align1}; /* 16x16 Source, 1/2 pixel, harr */
-mov (1) vme_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-mov (1) vme_m0.22<1>:UW MIN_REF_REGION_SIZE {align1}; /* Reference Width&Height, 32x32 */
-
-__vme_msg1:
-mov (1) vme_m1.0<1>:UD ADAPTIVE_SEARCH_ENABLE:ud {align1} ;
-mov (1) vme_m1.4<1>:UD FB_PRUNING_ENABLE:UD {align1};
-/* MV num is passed by constant buffer. R4.28 */
-mov (1) vme_m1.4<1>:UB r4.28<0,1,0>:UB {align1};
-mov (1) vme_m1.8<1>:UD START_CENTER + SEARCH_PATH_LEN:UD {align1};
-
-mul (1) obw_m0.8<1>:UD w_in_mb_uw<0,1,0>:UW orig_y_ub<0,1,0>:UB {align1};
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD orig_x_ub<0,1,0>:UB {align1};
-mul (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD INTER_VME_OUTPUT_IN_OWS:UD {align1};
-mov (1) obw_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-__VME_LOOP:
-
-/*
- * Media Read Message -- fetch neighbor edge pixels
- */
-/* ROW */
-mov (8) msg_reg0.0<1>:UD read0_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_ROW<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* COL */
-mov (8) msg_reg0.0<1>:UD read1_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_COL0<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 2 {align1};
-
-/*
- * VME message
- */
-/* m0 */
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-/* m1 */
-mov (1) intra_flag<1>:UW 0x0:UW {align1} ;
-and.z.f0.0 (1) null<1>:UW transform_8x8_ub<0,1,0>:UB 1:UW {align1};
-(f0.0) mov (1) intra_part_mask_ub<1>:UB LUMA_INTRA_8x8_DISABLE {align1};
-
-cmp.nz.f0.0 (1) null<1>:UW orig_x_ub<0,1,0>:UB 0:UW {align1}; /* X != 0 */
-(f0.0) add (1) mb_intra_struct_ub<1>:UB mb_intra_struct_ub<0,1,0>:UB INTRA_PRED_AVAIL_FLAG_AE {align1}; /* A */
-
-cmp.nz.f0.0 (1) null<1>:UW orig_y_ub<0,1,0>:UB 0:UW {align1}; /* Y != 0 */
-(f0.0) add (1) mb_intra_struct_ub<1>:UB mb_intra_struct_ub<0,1,0>:UB INTRA_PRED_AVAIL_FLAG_B {align1}; /* B */
-
-mul.nz.f0.0 (1) null<1>:UW orig_x_ub<0,1,0>:UB orig_y_ub<0,1,0>:UB {align1}; /* X * Y != 0 */
-(f0.0) add (1) mb_intra_struct_ub<1>:UB mb_intra_struct_ub<0,1,0>:UB INTRA_PRED_AVAIL_FLAG_D {align1}; /* D */
-
-add (1) tmp_x_w<1>:W orig_x_ub<0,1,0>:UB 1:UW {align1}; /* X + 1 */
-add (1) tmp_x_w<1>:W w_in_mb_uw<0,1,0>:UW -tmp_x_w<0,1,0>:W {align1}; /* width - (X + 1) */
-mul.nz.f0.0 (1) null<1>:UD tmp_x_w<0,1,0>:W orig_y_ub<0,1,0>:UB {align1}; /* (width - (X + 1)) * Y != 0 */
-(f0.0) add (1) mb_intra_struct_ub<1>:UB mb_intra_struct_ub<0,1,0>:UB INTRA_PRED_AVAIL_FLAG_C {align1}; /* C */
-
-and.nz.f0.0 (1) null<1>:UW slice_edge_ub<0,1,0>:UB 2:UW {align1};
-(f0.0) and (1) mb_intra_struct_ub<1>:UB mb_intra_struct_ub<0,1,0>:UB 0xE0 {align1}; /* slice edge disable B,C,D*/
-
-mov (8) vme_msg_1<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-/* m2 */
-mov (8) vme_msg_2<1>:UD 0x0:UD {align1};
-
-/* m3 */
-mov (1) INEP_ROW.0<1>:UD 0x0:UD {align1};
-and (1) INEP_ROW.4<1>:UD INEP_ROW.4<0,1,0>:UD 0xFF000000:UD {align1};
-mov (8) vme_msg_3<1>:UD INEP_ROW.0<8,8,1>:UD {align1};
-
-/* m4 */
-mov (8) vme_msg_4<1>:UD 0x0 {align1};
-mov (16) vme_msg_4.0<1>:UB INEP_COL0.3<32,8,4>:UB {align1};
-mov (1) vme_msg_4.16<1>:UD INTRA_PREDICTORE_MODE {align1};
-
-send (8)
- vme_msg_ind
- vme_wb
- null
- vme(
- BIND_IDX_VME,
- 0,
- 0,
- VME_MESSAGE_TYPE_MIXED
- )
- mlen vme_msg_length
- rlen vme_inter_wb_length
- {align1};
-/*
- * Oword Block Write message
- */
-
-/* MV pairs */
-mov (8) msg_reg0.0<1>:UD obw_m0.0<8,8,1>:UD {align1};
-
-#ifdef DEV_SNB
-mov (16) obw_m1.0<1>:UW vme_wb1.0<16,16,1>:UB {align1};
-add (8) obw_m1.0<2>:W obw_m1.0<16,8,2>:W -64:W {align1};
-add (8) obw_m1.2<2>:W obw_m1.2<16,8,2>:W -48:W {align1};
-mov (16) obw_m2.0<1>:UW vme_wb1.16<16,16,1>:UB {align1};
-add (8) obw_m2.0<2>:W obw_m2.0<16,8,2>:W -64:W {align1};
-add (8) obw_m2.2<2>:W obw_m2.2<16,8,2>:W -48:W {align1};
-mov (16) obw_m3.0<1>:UW vme_wb2.0<16,16,1>:UB {align1};
-add (8) obw_m3.0<2>:W obw_m3.0<16,8,2>:W -64:W {align1};
-add (8) obw_m3.2<2>:W obw_m3.2<16,8,2>:W -48:W {align1};
-mov (16) obw_m4.0<1>:UW vme_wb2.16<16,16,1>:UB {align1};
-add (8) obw_m4.0<2>:W obw_m4.0<16,8,2>:W -64:W {align1};
-add (8) obw_m4.2<2>:W obw_m4.2<16,8,2>:W -48:W {align1};
-#else
-mov (8) obw_m1.0<1>:ud vme_wb1.0<8,8,1>:ud {align1};
-mov (8) obw_m2.0<1>:ud vme_wb2.0<8,8,1>:ud {align1};
-mov (8) obw_m3.0<1>:ud vme_wb3.0<8,8,1>:ud {align1};
-mov (8) obw_m4.0<1>:ud vme_wb4.0<8,8,1>:ud {align1};
-#endif
-
-mov (8) msg_reg1.0<1>:UD obw_m1.0<8,8,1>:UD {align1};
-
-mov (8) msg_reg2.0<1>:UD obw_m2.0<8,8,1>:UD {align1};
-
-mov (8) msg_reg3.0<1>:UD obw_m3.0<8,8,1>:UD {align1};
-
-mov (8) msg_reg4.0<1>:UD obw_m4.0<8,8,1>:UD {align1};
-
-/* bind index 3, write 8 oword, msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_4,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 5
- rlen obw_wb_length
- {align1};
-
-/* other info */
-add (1) msg_reg0.8<1>:UD obw_m0.8<0,1,0>:UD INTER_VME_OUTPUT_MV_IN_OWS:UD {align1} ;
-
-and.z.f0.0 (1) null<1>:ud vme_wb0.0<0,1,0>:ud INTRAMBFLAG_MASK:ud {align1} ;
-
-(-f0.0)jmpi (1) __INTRA_INFO ;
-
-__INTER_INFO:
-mov (1) tmp_uw1<1>:uw 0:uw {align1} ;
-mov (1) tmp_ud1<1>:ud 0:ud {align1} ;
-(f0.0)and (1) tmp_uw1<1>:uw vme_wb0.2<0,1,0>:uw MV32_BIT_MASK:uw {align1} ;
-(f0.0)shr (1) tmp_uw1<1>:uw tmp_uw1<1>:uw MV32_BIT_SHIFT:uw {align1} ;
-(f0.0)mul (1) tmp_ud1<1>:ud tmp_uw1<0,1,0>:uw 96:uw {align1} ;
-(f0.0)add (1) tmp_ud1<1>:ud tmp_ud1<0,1,0>:ud 32:uw {align1} ;
-(f0.0)shl (1) tmp_uw1<1>:uw tmp_uw1<0,1,0>:uw MFC_MV32_BIT_SHIFT:uw {align1} ;
-(f0.0)add (1) tmp_uw1<1>:uw tmp_uw1<0,1,0>:uw MVSIZE_UW_BASE:uw {align1} ;
-add (1) tmp_uw1<1>:uw tmp_uw1<0,1,0>:uw CBP_DC_YUV_UW:uw {align1} ;
-
-mov (1) msg_reg1.0<1>:uw vme_wb0.0<0,1,0>:uw {align1} ;
-mov (1) msg_reg1.2<1>:uw tmp_uw1<0,1,0>:uw {align1} ;
-mov (1) msg_reg1.4<1>:UD vme_wb0.28<0,1,0>:UD {align1};
-mov (1) msg_reg1.8<1>:ud tmp_ud1<0,1,0>:ud {align1} ;
-
-jmpi (1) __OUTPUT_INFO ;
-
-__INTRA_INFO:
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-mov (1) msg_reg1.4<1>:UD vme_wb.16<0,1,0>:UD {align1};
-mov (1) msg_reg1.8<1>:UD vme_wb.20<0,1,0>:UD {align1};
-mov (1) msg_reg1.12<1>:UD vme_wb.24<0,1,0>:UD {align1};
-
-__OUTPUT_INFO:
-/* bind index 3, write 1 oword, msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_0,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-add (1) orig_x_ub<1>:ub orig_x_ub<0,1,0>:ub 1:uw {align1} ;
-add (1) vme_m0.8<1>:UW vme_m0.8<0,1,0>:UW 16:UW {align1}; /* X += 16 */
-#ifdef DEV_SNB
-add (1) vme_m0.0<1>:W vme_m0.0<0,1,0>:W 16:W {align1}; /* X += 16 */
-#endif
-
-cmp.e.f0.0 (1) null<1>:uw w_in_mb_uw<0,1,0>:uw orig_x_ub<0,1,0>:ub {align1};
-/* (0, y + 1) */
-(f0.0)mov (1) orig_x_ub<1>:ub 0:uw {align1} ;
-(f0.0)add (1) orig_y_ub<1>:ub orig_y_ub<0,1,0>:ub 1:uw {align1} ;
-(f0.0)mov (1) vme_m0.8<1>:uw 0:uw {align1} ;
-(f0.0)add (1) vme_m0.10<1>:uw vme_m0.10<0,1,0>:uw 16:uw {align1} ;
-#ifdef DEV_SNB
-(f0.0)mov (1) vme_m0.0<1>:w -16:W {align1}; /* Reference = (x-16,y-12)-(x+32,y+24) */
-(f0.0)add (1) vme_m0.2<1>:w vme_m0.2<0,1,0>:w 16:w {align1};
-#endif
-
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-
-shl (2) vme_m0.8<1>:UW orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* Source = (x, y) * 16 */
-
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD INTER_VME_OUTPUT_IN_OWS:UW {align1} ;
-
-add.z.f0.1 (1) num_macroblocks<1>:w num_macroblocks<0,1,0>:w -1:w {align1} ;
-(-f0.1)jmpi (1) __VME_LOOP ;
-
-__EXIT:
-
-/*
- * kill thread
- */
-mov (8) msg_reg0<1>:UD r0<8,8,1>:UD {align1};
-send (16) msg_ind acc0<1>UW null thread_spawner(0, 0, 1) mlen 1 rlen 0 {align1 EOT};
diff --git a/src/shaders/vme/inter_frame.g6a b/src/shaders/vme/inter_frame.g6a
deleted file mode 100644
index 7568a01..0000000
--- a/src/shaders/vme/inter_frame.g6a
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "vme.inc"
-#include "inter_frame.asm"
diff --git a/src/shaders/vme/inter_frame.g6b b/src/shaders/vme/inter_frame.g6b
deleted file mode 100644
index bc7cd43..0000000
--- a/src/shaders/vme/inter_frame.g6b
+++ /dev/null
@@ -1,126 +0,0 @@
- { 0x00800001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24002e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24003ca5, 0x00000400, 0xfff8fff8 },
- { 0x00000040, 0x24043ca5, 0x00000404, 0xffffffff },
- { 0x00000001, 0x240800e1, 0x00000000, 0x0000001f },
- { 0x00000001, 0x24140231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24202e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24203ca5, 0x00000420, 0xfffcfffc },
- { 0x00000001, 0x242800e1, 0x00000000, 0x000f0003 },
- { 0x00000001, 0x24340231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24482e29, 0x004500a0, 0x00040004 },
- { 0x01000010, 0x20002e28, 0x000000a8, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x00200009, 0x24402e29, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24403dad, 0x00000440, 0xfff0fff0 },
- { 0x00000040, 0x24423dad, 0x00000442, 0xfff4fff4 },
- { 0x00000001, 0x244c0061, 0x00000000, 0x00203000 },
- { 0x00000001, 0x24540231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x24560169, 0x00000000, 0x28302830 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x00200009, 0x24402e29, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24403dad, 0x00000440, 0xfff8fff8 },
- { 0x00000040, 0x24423dad, 0x00000442, 0xfff8fff8 },
- { 0x00000001, 0x244c0061, 0x00000000, 0x00201000 },
- { 0x00000001, 0x24540231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x24560169, 0x00000000, 0x20202020 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00000002 },
- { 0x00000001, 0x24640061, 0x00000000, 0x40000000 },
- { 0x00000001, 0x24640231, 0x0000009c, 0x00000000 },
- { 0x00000001, 0x24680061, 0x00000000, 0x30003030 },
- { 0x00000041, 0x24884521, 0x000000a2, 0x000000a1 },
- { 0x00000040, 0x24884421, 0x00000488, 0x000000a0 },
- { 0x00000041, 0x24880c21, 0x00000488, 0x0000000a },
- { 0x00000001, 0x24940231, 0x00000014, 0x00000000 },
- { 0x00600001, 0x20000022, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x22401cd1, 0x00000000, 0x02188004 },
- { 0x00600001, 0x20000022, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x22801cd1, 0x00000000, 0x02288004 },
- { 0x00600001, 0x20000022, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x247c0169, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a4, 0x00010001 },
- { 0x00010001, 0x247c00f1, 0x00000000, 0x00000002 },
- { 0x02000010, 0x20002e28, 0x000000a0, 0x00000000 },
- { 0x00010040, 0x247d1e31, 0x0000047d, 0x00000060 },
- { 0x02000010, 0x20002e28, 0x000000a1, 0x00000000 },
- { 0x00010040, 0x247d1e31, 0x0000047d, 0x00000010 },
- { 0x02000041, 0x20004628, 0x000000a0, 0x000000a1 },
- { 0x00010040, 0x247d1e31, 0x0000047d, 0x00000004 },
- { 0x00000040, 0x25202e2d, 0x000000a0, 0x00010001 },
- { 0x00000040, 0x2520352d, 0x000000a2, 0x00004520 },
- { 0x02000041, 0x200045a0, 0x00000520, 0x000000a1 },
- { 0x00010040, 0x247d1e31, 0x0000047d, 0x00000008 },
- { 0x02000005, 0x20002e28, 0x000000a4, 0x00020002 },
- { 0x00010005, 0x247d1e31, 0x0000047d, 0x000000e0 },
- { 0x00600001, 0x20200022, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x20400062, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x00000005, 0x22440c21, 0x00000244, 0xff000000 },
- { 0x00600001, 0x20400022, 0x008d0240, 0x00000000 },
- { 0x00600001, 0x206000e2, 0x00000000, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00cf0283, 0x00000000 },
- { 0x00000001, 0x20700062, 0x00000000, 0x11111111 },
- { 0x08600031, 0x21801cdd, 0x00000000, 0x08486000 },
- { 0x00600001, 0x20000022, 0x008d0480, 0x00000000 },
- { 0x00800001, 0x24a00229, 0x00b101a0, 0x00000000 },
- { 0x00600040, 0x44a03dad, 0x00ae04a0, 0xffc0ffc0 },
- { 0x00600040, 0x44a23dad, 0x00ae04a2, 0xffd0ffd0 },
- { 0x00800001, 0x24c00229, 0x00b101b0, 0x00000000 },
- { 0x00600040, 0x44c03dad, 0x00ae04c0, 0xffc0ffc0 },
- { 0x00600040, 0x44c23dad, 0x00ae04c2, 0xffd0ffd0 },
- { 0x00800001, 0x24e00229, 0x00b101c0, 0x00000000 },
- { 0x00600040, 0x44e03dad, 0x00ae04e0, 0xffc0ffc0 },
- { 0x00600040, 0x44e23dad, 0x00ae04e2, 0xffd0ffd0 },
- { 0x00800001, 0x25000229, 0x00b101d0, 0x00000000 },
- { 0x00600040, 0x45003dad, 0x00ae0500, 0xffc0ffc0 },
- { 0x00600040, 0x45023dad, 0x00ae0502, 0xffd0ffd0 },
- { 0x00600001, 0x20200022, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x20400022, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x20600022, 0x008d04e0, 0x00000000 },
- { 0x00600001, 0x20800022, 0x008d0500, 0x00000000 },
- { 0x05800031, 0x22001cdd, 0x00000000, 0x0a1b0403 },
- { 0x00000040, 0x20080c22, 0x00000488, 0x00000008 },
- { 0x01000005, 0x20000c20, 0x00000180, 0x00002000 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x0000001c },
- { 0x00000001, 0x25420169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25440061, 0x00000000, 0x00000000 },
- { 0x00010005, 0x25422d29, 0x00000182, 0x00100010 },
- { 0x00010008, 0x25422d29, 0x00200542, 0x00040004 },
- { 0x00010041, 0x25442d21, 0x00000542, 0x00600060 },
- { 0x00010040, 0x25442c21, 0x00000544, 0x00200020 },
- { 0x00010009, 0x25422d29, 0x00000542, 0x00050005 },
- { 0x00010040, 0x25422d29, 0x00000542, 0x00400040 },
- { 0x00000040, 0x25422d29, 0x00000542, 0x000e000e },
- { 0x00000001, 0x2020012a, 0x00000180, 0x00000000 },
- { 0x00000001, 0x2022012a, 0x00000542, 0x00000000 },
- { 0x00000001, 0x20240022, 0x0000019c, 0x00000000 },
- { 0x00000001, 0x20280022, 0x00000544, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 },
- { 0x00000001, 0x20200022, 0x00000180, 0x00000000 },
- { 0x00000001, 0x20240022, 0x00000190, 0x00000000 },
- { 0x00000001, 0x20280022, 0x00000194, 0x00000000 },
- { 0x00000001, 0x202c0022, 0x00000198, 0x00000000 },
- { 0x05800031, 0x22001cdd, 0x00000000, 0x041b0003 },
- { 0x00000040, 0x20a02e31, 0x000000a0, 0x00010001 },
- { 0x00000040, 0x24482d29, 0x00000448, 0x00100010 },
- { 0x00000040, 0x24403dad, 0x00000440, 0x00100010 },
- { 0x01000010, 0x20004528, 0x000000a2, 0x000000a0 },
- { 0x00010001, 0x20a00171, 0x00000000, 0x00000000 },
- { 0x00010040, 0x20a12e31, 0x000000a1, 0x00010001 },
- { 0x00010001, 0x24480169, 0x00000000, 0x00000000 },
- { 0x00010040, 0x244a2d29, 0x0000044a, 0x00100010 },
- { 0x00010001, 0x244001ed, 0x00000000, 0xfff0fff0 },
- { 0x00010040, 0x24423dad, 0x00000442, 0x00100010 },
- { 0x00200009, 0x24002e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24003ca5, 0x00000400, 0xfff8fff8 },
- { 0x00000040, 0x24043ca5, 0x00000404, 0xffffffff },
- { 0x00200009, 0x24202e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24203ca5, 0x00000420, 0xfffcfffc },
- { 0x00200009, 0x24482e29, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24882c21, 0x00000488, 0x000a000a },
- { 0x01000040, 0x20a63dad, 0x020000a6, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x02001400, 0xffffff50 },
- { 0x00600001, 0x20000022, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24001cc8, 0x00000000, 0x82000010 },
diff --git a/src/shaders/vme/inter_frame.g7a b/src/shaders/vme/inter_frame.g7a
deleted file mode 100644
index 7568a01..0000000
--- a/src/shaders/vme/inter_frame.g7a
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "vme.inc"
-#include "inter_frame.asm"
diff --git a/src/shaders/vme/inter_frame.g7b b/src/shaders/vme/inter_frame.g7b
deleted file mode 100644
index 2a34927..0000000
--- a/src/shaders/vme/inter_frame.g7b
+++ /dev/null
@@ -1,113 +0,0 @@
- { 0x00800001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24002e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24003ca5, 0x00000400, 0xfff8fff8 },
- { 0x00000040, 0x24043ca5, 0x00000404, 0xffffffff },
- { 0x00000001, 0x240800e1, 0x00000000, 0x0000001f },
- { 0x00000001, 0x24140231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24202e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24203ca5, 0x00000420, 0xfffcfffc },
- { 0x00000001, 0x242800e1, 0x00000000, 0x000f0003 },
- { 0x00000001, 0x24340231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24482e29, 0x004500a0, 0x00040004 },
- { 0x01000010, 0x20002e28, 0x000000a8, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x00000001, 0x244001ed, 0x00000000, 0xfff0fff0 },
- { 0x00000001, 0x244201ed, 0x00000000, 0xfff4fff4 },
- { 0x00000001, 0x244c0061, 0x00000000, 0x00203000 },
- { 0x00000001, 0x24540231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x24560169, 0x00000000, 0x28302830 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x00000001, 0x244001ed, 0x00000000, 0xfff8fff8 },
- { 0x00000001, 0x244201ed, 0x00000000, 0xfff8fff8 },
- { 0x00000001, 0x244c0061, 0x00000000, 0x00201000 },
- { 0x00000001, 0x24540231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x24560169, 0x00000000, 0x20202020 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00000002 },
- { 0x00000001, 0x24640061, 0x00000000, 0x40000000 },
- { 0x00000001, 0x24640231, 0x0000009c, 0x00000000 },
- { 0x00000001, 0x24680061, 0x00000000, 0x30003030 },
- { 0x00000041, 0x24884521, 0x000000a2, 0x000000a1 },
- { 0x00000040, 0x24884421, 0x00000488, 0x000000a0 },
- { 0x00000041, 0x24880c21, 0x00000488, 0x0000000a },
- { 0x00000001, 0x24940231, 0x00000014, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x22401cb1, 0x00000800, 0x02190004 },
- { 0x00600001, 0x28000021, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x22801cb1, 0x00000800, 0x02290004 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x247c0169, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a4, 0x00010001 },
- { 0x00010001, 0x247c00f1, 0x00000000, 0x00000002 },
- { 0x02000010, 0x20002e28, 0x000000a0, 0x00000000 },
- { 0x00010040, 0x247d1e31, 0x0000047d, 0x00000060 },
- { 0x02000010, 0x20002e28, 0x000000a1, 0x00000000 },
- { 0x00010040, 0x247d1e31, 0x0000047d, 0x00000010 },
- { 0x02000041, 0x20004628, 0x000000a0, 0x000000a1 },
- { 0x00010040, 0x247d1e31, 0x0000047d, 0x00000004 },
- { 0x00000040, 0x25202e2d, 0x000000a0, 0x00010001 },
- { 0x00000040, 0x2520352d, 0x000000a2, 0x00004520 },
- { 0x02000041, 0x200045a0, 0x00000520, 0x000000a1 },
- { 0x00010040, 0x247d1e31, 0x0000047d, 0x00000008 },
- { 0x02000005, 0x20002e28, 0x000000a4, 0x00020002 },
- { 0x00010005, 0x247d1e31, 0x0000047d, 0x000000e0 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x00000005, 0x22440c21, 0x00000244, 0xff000000 },
- { 0x00600001, 0x28600021, 0x008d0240, 0x00000000 },
- { 0x00600001, 0x288000e1, 0x00000000, 0x00000000 },
- { 0x00800001, 0x28800231, 0x00cf0283, 0x00000000 },
- { 0x00000001, 0x28900061, 0x00000000, 0x11111111 },
- { 0x08600031, 0x21801cbd, 0x00000800, 0x0a686000 },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x24a00021, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x24c00021, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x24e00021, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x25000021, 0x008d0200, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d04a0, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d04c0, 0x00000000 },
- { 0x00600001, 0x28600021, 0x008d04e0, 0x00000000 },
- { 0x00600001, 0x28800021, 0x008d0500, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x0a0a0403 },
- { 0x00000040, 0x28080c21, 0x00000488, 0x00000008 },
- { 0x01000005, 0x20000c20, 0x00000180, 0x00002000 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x0000001c },
- { 0x00000001, 0x25420169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25440061, 0x00000000, 0x00000000 },
- { 0x00010005, 0x25422d29, 0x00000182, 0x00200020 },
- { 0x00010008, 0x25422d29, 0x00200542, 0x00050005 },
- { 0x00010041, 0x25442d21, 0x00000542, 0x00600060 },
- { 0x00010040, 0x25442c21, 0x00000544, 0x00200020 },
- { 0x00010009, 0x25422d29, 0x00000542, 0x00050005 },
- { 0x00010040, 0x25422d29, 0x00000542, 0x00400040 },
- { 0x00000040, 0x25422d29, 0x00000542, 0x000e000e },
- { 0x00000001, 0x28200129, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28220129, 0x00000542, 0x00000000 },
- { 0x00000001, 0x28240021, 0x0000019c, 0x00000000 },
- { 0x00000001, 0x28280021, 0x00000544, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 },
- { 0x00000001, 0x28200021, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240021, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280021, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0021, 0x00000198, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0003 },
- { 0x00000040, 0x20a02e31, 0x000000a0, 0x00010001 },
- { 0x00000040, 0x24482d29, 0x00000448, 0x00100010 },
- { 0x01000010, 0x20004528, 0x000000a2, 0x000000a0 },
- { 0x00010001, 0x20a00171, 0x00000000, 0x00000000 },
- { 0x00010040, 0x20a12e31, 0x000000a1, 0x00010001 },
- { 0x00010001, 0x24480169, 0x00000000, 0x00000000 },
- { 0x00010040, 0x244a2d29, 0x0000044a, 0x00100010 },
- { 0x00200009, 0x24002e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24003ca5, 0x00000400, 0xfff8fff8 },
- { 0x00000040, 0x24043ca5, 0x00000404, 0xffffffff },
- { 0x00200009, 0x24202e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24203ca5, 0x00000420, 0xfffcfffc },
- { 0x00200009, 0x24482e29, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24882c21, 0x00000488, 0x000a000a },
- { 0x01000040, 0x20a63dad, 0x020000a6, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x02001400, 0xffffff66 },
- { 0x00600001, 0x28000021, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24001ca8, 0x00000800, 0x82000010 },
diff --git a/src/shaders/vme/inter_frame_gen8.asm b/src/shaders/vme/inter_frame_gen8.asm
deleted file mode 100644
index 6296aa1..0000000
--- a/src/shaders/vme/inter_frame_gen8.asm
+++ /dev/null
@@ -1,789 +0,0 @@
-/*
- * Copyright © <2013>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-// Modual name: Inter_frame_gen8.asm
-//
-// Make inter predition estimation for Inter-frame on gen8
-//
-
-//
-// Now, begin source code....
-//
-
-#define SAVE_RET add (1) RETURN_REG<1>:ud ip:ud 32:ud
-#define RETURN mov (1) ip:ud RETURN_REG<0,1,0>:ud
-
-/*
- * __START
- */
-__INTER_START:
-mov (16) tmp_reg0.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg2.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg4.0<1>:UD 0x0:UD {align1} ;
-mov (16) tmp_reg6.0<1>:UD 0x0:UD {align1} ;
-
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-mov (1) read0_header.8<1>:UD BLOCK_32X1 {align1};
-mov (1) read0_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-mov (1) read1_header.8<1>:UD BLOCK_4X16 {align1};
-mov (1) read1_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) vme_m0.8<1>:UW orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-mov (1) vme_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-mul (1) obw_m0.8<1>:UD w_in_mb_uw<0,1,0>:UW orig_y_ub<0,1,0>:UB {align1};
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD orig_x_ub<0,1,0>:UB {align1};
-mul (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 24:UD {align1};
-mov (1) obw_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/*
- * Media Read Message -- fetch Luma neighbor edge pixels
- */
-/* ROW */
-mov (8) msg_reg0.0<1>:UD read0_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_ROW<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* COL */
-mov (8) msg_reg0.0<1>:UD read1_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_COL0<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 2 {align1};
-
-/*
- * Media Read Message -- fetch Chroma neighbor edge pixels
- */
-/* ROW */
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 3:UW {align1}; /* x * 16 , y * 8 */
-mul (1) read0_header.0<1>:D read0_header.0<0,1,0>:D 2:W {align1};
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-mov (8) msg_reg0.0<1>:UD read0_header.0<8,8,1>:UD {align1};
-send (8) msg_ind CHROMA_ROW<1>:UB null read(BIND_IDX_CBCR, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* COL */
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 3:UW {align1}; /* x * 16, y * 8 */
-mul (1) read1_header.0<1>:D read1_header.0<0,1,0>:D 2:W {align1};
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-mov (1) read1_header.8<1>:UD BLOCK_8X4 {align1};
-mov (8) msg_reg0.0<1>:UD read1_header.0<8,8,1>:UD {align1};
-send (8) msg_ind CHROMA_COL<1>:UB null read(BIND_IDX_CBCR, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-mov (8) mb_mvp_ref.0<1>:ud 0:ud {align1};
-mov (8) mb_ref_win.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw mb_hwdep<0,1,0>:uw 0x04:uw {align1};
-(f0.0) jmpi (1) __mb_hwdep_end;
-/* read back the data for MB A */
-/* the layout of MB result is: rx.0(Available). rx.4(MVa), rX.8(MVb), rX.16(Pred_L0 flag),
-* rX.18 (Pred_L1 flag), rX.20(Forward reference ID), rX.22(Backwared reference ID)
-*/
-mov (8) mba_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbb_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbc_result.0<1>:ud 0x0:ud {align1};
-mba_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_AE:uw {align1};
-/* MB A doesn't exist. Zero MV. mba_flag is zero and ref ID = -1 */
-(f0.0) mov (2) mba_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbb_start;
-mov (1) mba_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mba_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbb_start;
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB A */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-/* MV */
-mov (2) mba_result.4<1>:ud mb_mv1.8<2,2,1>:ud {align1};
-mov (1) mba_result.16<1>:w MB_PRED_FLAG {align1};
-
-mbb_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_B:uw {align1};
-/* MB B doesn't exist. Zero MV. mba_flag is zero */
-/* If MB B doesn't exist, neither MB C nor D exists */
-(f0.0) mov (2) mbb_result.20<1>:w -1:w {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (1) mbb_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mbb_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbc_start;
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB B */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-mov (2) mbb_result.4<1>:ud mb_mv2.16<2,2,1>:ud {align1};
-mov (1) mbb_result.16<1>:w MB_PRED_FLAG {align1};
-
-mbc_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_C:uw {align1};
-/* MB C doesn't exist. Zero MV. mba_flag is zero */
-/* Based on h264 spec the MB D will be replaced if MB C doesn't exist */
-(f0.0) jmpi (1) mbd_start;
-mov (1) mbc_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB C */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-/* Forward MV */
-mov (2) mbc_result.4<1>:ud mb_mv2.16<2,2,1>:ud {align1};
-mov (1) mbc_result.16<1>:w MB_PRED_FLAG {align1};
-
-jmpi (1) mb_mvp_start;
-mbd_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_D:uw {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (1) mbc_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (2) tmp_reg0.0<1>:w tmp_reg0.0<2,2,1>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB D */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ub
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-
-/* Forward MV */
-mov (2) mbc_result.4<1>:ud mb_mv3.24<2,2,1>:ud {align1};
-mov (1) mbc_result.16<1>:w MB_PRED_FLAG {align1};
-
-mb_mvp_start:
-/*TODO: Add the skip prediction */
-/* Check whether both MB B and C are inavailable */
-add (1) tmp_reg0.0<1>:d mbb_result.0<0,1,0>:d mbc_result.0<0,1,0>:d {align1};
-cmp.z.f0.0 (1) null:d tmp_reg0.0<0,1,0>:d 0:d {align1};
-(-f0.0) jmpi (1) mb_median_start;
-cmp.nz.f0.0 (1) null:d mba_result.0<0,1,0>:d 0:d {align1};
-(f0.0) mov (1) mbb_result.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-(f0.0) mov (1) mbc_result.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-(f0.0) mov (1) mbb_result.20<1>:uw mba_result.20<0,1,0>:uw {align1};
-(f0.0) mov (1) mbc_result.20<1>:uw mba_result.20<0,1,0>:uw {align1};
-(f0.0) mov (1) mb_mvp_ref.0<1>:ud mba_result.4<0,1,0>:ud {align1};
-(-f0.0) mov (1) mb_mvp_ref.0<1>:ud 0:ud {align1};
-jmpi (1) __mb_hwdep_end;
-
-mb_median_start:
-/* check whether only one neighbour MB has the same ref ID with the current MB */
-mov (8) tmp_reg0.0<1>:ud 0:ud {align1};
-cmp.z.f0.0 (1) null:d mba_result.20<0,1,0>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbb_result.20<0,1,0>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbb_result.4<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbc_result.20<0,1,0>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbc_result.4<0,1,0>:ud {align1};
-cmp.e.f0.0 (1) null:d tmp_reg0.0<0,1,0>:w 1:w {align1};
-(f0.0) mov (1) mb_mvp_ref.0<1>:ud tmp_reg0.4<0,1,0>:ud {align1};
-(f0.0) jmpi (1) __mb_hwdep_end;
-
-mov (1) INPUT_ARG0.0<1>:w mba_result.4<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.4<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.4<0,1,0>:w {align1};
-SAVE_RET {align1};
- jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.0<1>:w RET_ARG<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.0<1>:w mba_result.6<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.6<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.6<0,1,0>:w {align1};
-SAVE_RET {align1};
-jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.2<1>:w RET_ARG<0,1,0>:w {align1};
-
-__mb_hwdep_end:
-asr (2) mb_ref_win.0<1>:w mb_mvp_ref.0<2,2,1>:w 2:w {align1};
-add (2) mb_ref_win.8<1>:w mb_ref_win.0<2,2,1>:w 3:w {align1};
-and (2) mb_ref_win.16<1>:uw mb_ref_win.8<2,2,1>:uw 0xFFFC:uw {align1};
-/* m2, get the MV/Mb cost passed from constant buffer when
-spawning thread by MEDIA_OBJECT */
-mov (8) vme_m2<1>:UD r1.0<8,8,1>:UD {align1};
-
-mov (8) vme_msg_2<1>:UD vme_m2.0<8,8,1>:UD {align1};
-
-/* m3 FWD/BWD cost center*/
-mov (8) vme_msg_3<1>:UD 0x0:UD {align1};
-
-/* m4 skip center*/
-mov (8) vme_msg_4<1>:UD 0x0:UD {align1};
-
-/* m5 */
-mov (1) INEP_ROW.0<1>:UD 0x0:UD {align1};
-and (1) INEP_ROW.4<1>:UD INEP_ROW.4<0,1,0>:UD 0xFF000000:UD {align1};
-mov (8) vme_msg_5<1>:UD INEP_ROW.0<8,8,1>:UD {align1};
-
-
-/* Use the Luma mode */
-mov (1) tmp_reg0.0<1>:UW LUMA_INTRA_MODE:UW {align1};
-mov (1) vme_msg_5.5<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-/* m6 */
-mov (8) vme_msg_6<1>:UD 0x0:UD {align1};
-mov (16) vme_msg_6.0<1>:UB INEP_COL0.3<32,8,4>:UB {align1};
-mov (1) vme_msg_6.16<1>:UD INTRA_PREDICTORE_MODE {align1};
-
-/* the penalty for Intra mode */
-mov (1) vme_msg_6.28<1>:UD 0x010101:UD {align1};
-mov (1) vme_msg_6.20<1>:UW CHROMA_ROW.6<0,1,0>:UW {align1};
-
-
-/* m7 */
-
-mov (4) vme_msg_7.16<1>:UD CHROMA_ROW.8<4,4,1>:UD {align1};
-mov (8) vme_msg_7.0<1>:UW CHROMA_COL.2<16,8,2>:UW {align1};
-
-/*
- * SIC VME message
- */
-
-/* m1 */
-mov (1) intra_flag<1>:UW 0x0:UW {align1} ;
-and.z.f0.0 (1) null<1>:UW transform_8x8_ub<0,1,0>:UB 1:UW {align1};
-(f0.0) mov (1) intra_part_mask_ub<1>:UB LUMA_INTRA_8x8_DISABLE {align1};
-
-/* assign MB intra struct from the thread payload*/
-mov (1) mb_intra_struct_ub<1>:UB input_mb_intra_ub<0,1,0>:UB {align1};
-
-/* Disable DC HAAR component when calculating HARR SATD block */
-mov (1) tmp_reg0.0<1>:UW DC_HARR_DISABLE:UW {align1};
-mov (1) vme_m1.30<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-mov (8) vme_msg_1<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-/* m0 */
-mov (1) vme_m0.12<1>:UD INTRA_SAD_HAAR:UD {align1}; /* 16x16 Source, Intra_harr */
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-/* after verification it will be passed by using payload */
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- cre(
- BIND_IDX_VME,
- VME_SIC_MESSAGE_TYPE
- )
- mlen sic_vme_msg_length
- rlen vme_wb_length
- {align1};
-
-/* Check whether mb type is 0 */
-and.z.f0.0 (1) null<1>:UD vme_wb.0<0,1,0>:UD W0_INTRA_MB_TYPE_MASK {align1};
-(-f0.0) jmpi (1) __write_intra_output;
-
-/* Check whether intra mb mode is INTRA_8x8 */
-and (1) tmp_reg2<1>:UD vme_wb.0<0,1,0>:UD W0_INTRA_MB_MODE_MASK {align1};
-cmp.z.f0.0 (1) null<1>:UD tmp_reg2<0,1,0>:UD W0_INTRA_8x8 {align1};
-
-/* Set transform 8x8 flag */
-(f0.0) or (1) vme_wb.0<1>:UD vme_wb.0<0,1,0>:UD W0_TRANSFORM_8x8_FLAG {align1};
-
-__write_intra_output:
-/*
- * Oword Block Write message
- */
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-mov (1) msg_reg1.4<1>:UD vme_wb.16<0,1,0>:UD {align1};
-mov (1) msg_reg1.8<1>:UD vme_wb.20<0,1,0>:UD {align1};
-mov (1) msg_reg1.12<1>:UD vme_wb.24<0,1,0>:UD {align1};
-
-/* Distortion, Intra (17-16), */
-mov (1) msg_reg1.16<1>:UW vme_wb.12<0,1,0>:UW {align1};
-
-mov (1) msg_reg1.20<1>:UD vme_wb.8<0,1,0>:UD {align1};
-/* VME clock counts */
-mov (1) msg_reg1.24<1>:UD vme_wb.28<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.28<1>:UD obw_m0.8<0,1,0>:UD {align1};
-
-/* bind index 3, write 2 oword (32bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-/* IME search */
-cmp.z.f0.0 (1) null<1>:uw quality_level_ub<0,1,0>:ub LOW_QUALITY_LEVEL:uw {align1};
-(f0.0) jmpi (1) __low_quality_search;
-
-__high_quality_search:
-/* M3/M4 search path */
-mov (1) vme_msg_3.0<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_3.4<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_3.8<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_3.12<1>:UD 0x100F0F0F:UD {align1};
-mov (1) vme_msg_3.16<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_3.20<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_3.24<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_3.28<1>:UD 0x100F0F0F:UD {align1};
-mov (1) vme_msg_4.0<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_4.4<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_4.8<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_4.12<1>:UD 0x000F0F0F:UD {align1};
-mov (4) vme_msg_4.16<1>:UD 0x0:UD {align1};
-
-mov (1) vme_m0.12<1>:UD SEARCH_CTRL_SINGLE + INTER_PART_MASK + INTER_SAD_HAAR:UD {align1}; /* 16x16 Source, harr */
-mov (1) vme_m0.22<1>:UW REF_REGION_SIZE {align1}; /* Reference Width&Height, 48x40 */
-mov (1) vme_m0.0<1>:W -16:W {align1};
-mov (1) vme_m0.2<1>:W -12:W {align1};
-
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_AE:uw {align1};
-(f0.0) add (1) vme_m0.0<1>:w vme_m0.0<0,1,0>:w 12:w {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_B:uw {align1};
-(f0.0) add (1) vme_m0.2<1>:w vme_m0.2<0,1,0>:w 8:w {align1};
-jmpi (1) __vme_msg;
-
-__low_quality_search:
-/* M3/M4 search path */
-mov (1) vme_msg_3.0<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_3.4<1>:UD 0x100F0F0F:UD {align1};
-mov (1) vme_msg_3.8<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_3.12<1>:UD 0x000F0F0F:UD {align1};
-mov (4) vme_msg_3.16<1>:UD 0x0:UD {align1};
-mov (8) vme_msg_4.16<1>:UD 0x0:UD {align1};
-
-mov (1) vme_m0.12<1>:UD SEARCH_CTRL_SINGLE + INTER_PART_MASK + INTER_SAD_HAAR:UD {align1}; /* 16x16 Source, harr */
-mov (1) vme_m0.22<1>:UW MIN_REF_REGION_SIZE {align1}; /* Reference Width&Height, 32x32 */
-mov (1) vme_m0.0<1>:W -8:W {align1};
-mov (1) vme_m0.2<1>:W -8:W {align1};
-
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_AE:uw {align1};
-(f0.0) add (1) vme_m0.0<1>:w vme_m0.0<0,1,0>:w 4:w {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_B:uw {align1};
-(f0.0) add (1) vme_m0.2<1>:w vme_m0.2<0,1,0>:w 4:w {align1};
-
-__vme_msg:
-mov (1) vme_m0.4<1>:UD vme_m0.0<0,1,0>:UD {align1};
-add (2) vme_m0.0<1>:w vme_m0.0<2,2,1>:w mb_ref_win.16<2,2,1>:w {align1};
-add (2) vme_m0.4<1>:w vme_m0.4<2,2,1>:w mb_ref_win.16<2,2,1>:w {align1};
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-mov (1) vme_m1.0<1>:UD ADAPTIVE_SEARCH_ENABLE:ud {align1} ;
-/* the Max MV number is passed by constant buffer */
-mov (1) vme_m1.4<1>:UB r4.28<0,1,0>:UB {align1};
-mov (1) vme_m1.8<1>:UD START_CENTER + SEARCH_PATH_LEN:UD {align1};
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-/* Setup the Cost center */
-/* currently four 8x8 share the same cost center */
-mov (4) vme_m3.0<2>:ud mb_mvp_ref.0<0,1,0>:ud {align1};
-mov (4) vme_m3.4<2>:ud mb_mvp_ref.0<0,1,0>:ud {align1};
-
-mov (8) vme_msg_3<1>:UD vme_m3.0<8,8,1>:UD {align1};
-mov (8) vme_msg_2<1>:UD vme_m2.0<8,8,1>:UD {align1};
-
-/* M4/M5 search path */
-mov (1) vme_msg_4.0<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_4.4<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_4.8<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_4.12<1>:UD 0x100F0F0F:UD {align1};
-mov (1) vme_msg_4.16<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_4.20<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_4.24<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_4.28<1>:UD 0x100F0F0F:UD {align1};
-
-mov (1) vme_msg_5.0<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_5.4<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_5.8<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_5.12<1>:UD 0x000F0F0F:UD {align1};
-
-mov (4) vme_msg_5.16<1>:UD 0x0:UD {align1};
-
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- vme(
- BIND_IDX_VME,
- 0,
- 0,
- VME_IME_MESSAGE_TYPE
- )
- mlen ime_vme_msg_length
- rlen vme_wb_length {align1};
-
-/* Set Macroblock-shape/mode for FBR */
-
-mov (1) vme_m2.20<1>:UD 0x0:UD {align1};
-mov (1) vme_m2.21<1>:UB vme_wb.25<0,1,0>:UB {align1};
-mov (1) vme_m2.22<1>:UB vme_wb.26<0,1,0>:UB {align1};
-
-and (1) tmp_reg0.0<1>:UW vme_wb.0<0,1,0>:UW 0x03:UW {align1};
-mov (1) vme_m2.20<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-/* Send FBR message into CRE */
-
-mov (8) vme_msg_4.0<1>:UD vme_wb1.0<8,8,1>:UD {align1};
-mov (8) vme_msg_5.0<1>:ud vme_wb2.0<8,8,1>:ud {align1};
-mov (8) vme_msg_6.0<1>:ud vme_wb3.0<8,8,1>:ud {align1};
-mov (8) vme_msg_7.0<1>:ud vme_wb4.0<8,8,1>:ud {align1};
-
-mov (1) vme_m0.12<1>:UD INTER_SAD_HAAR + SUB_PEL_MODE_QUARTER + FBR_BME_DISABLE:UD {align1}; /* 16x16 Source, 1/4 pixel, harr, BME disable */
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-mov (8) vme_msg_2.0<1>:UD vme_m2.0<8,8,1>:UD {align1};
-mov (8) vme_msg_3.0<1>:UD vme_m3.0<8,8,1>:UD {align1};
-
-/* after verification it will be passed by using payload */
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- cre(
- BIND_IDX_VME,
- VME_FBR_MESSAGE_TYPE
- )
- mlen fbr_vme_msg_length
- rlen vme_wb_length
- {align1};
-
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x02:UD {align1};
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-/* write FME info */
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.4<1>:UD vme_wb.24<0,1,0>:UD {align1};
-/* Inter distortion of FME */
-mov (1) msg_reg1.8<1>:UD vme_wb.8<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.12<1>:UD vme_m2.20<0,1,0>:UD {align1};
-
-/* bind index 3, write oword (16bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_0,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-/* Write FME/BME MV */
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x01:UD {align1};
-mov (8) msg_reg0.0<1>:UD obw_m0.0<8,8,1>:UD {align1};
-
-
-mov (8) msg_reg1.0<1>:UD vme_wb1.0<8,8,1>:UD {align1};
-mov (8) msg_reg2.0<1>:ud vme_wb2.0<8,8,1>:ud {align1};
-mov (8) msg_reg3.0<1>:ud vme_wb3.0<8,8,1>:ud {align1};
-mov (8) msg_reg4.0<1>:ud vme_wb4.0<8,8,1>:ud {align1};
-/* bind index 3, write 8 oword (128 bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_8,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 5
- rlen obw_wb_length
- {align1};
-
-/* Write FME/BME RefID */
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x08:UD {align1};
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-
-mov (8) msg_reg1.0<1>:UD vme_wb6.0<8,8,1>:UD {align1};
-
-/* bind index 3, write 2 oword (32bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-/* Issue message fence so that the previous write message is committed */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_FENCE,
- OBR_MF_COMMIT,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-__EXIT:
-/*
- * kill thread
- */
-mov (8) ts_msg_reg0<1>:UD r0<8,8,1>:UD {align1};
-send (16) ts_msg_ind acc0<1>UW null thread_spawner(0, 0, 1) mlen 1 rlen 0 {align1 EOT};
-
-
- nop ;
- nop ;
-/* Compare three word data to get the min value */
-word_imin:
- cmp.le.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- cmp.le.f0.0 (1) null:w TEMP_VAR0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w TEMP_VAR0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- RETURN {align1};
-
-/* Compare three word data to get the max value */
-word_imax:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- cmp.ge.f0.0 (1) null:w TEMP_VAR0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w TEMP_VAR0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- RETURN {align1};
-
-word_imedian:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_a_ge_b;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_end;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- jmpi (1) cmp_end;
-cmp_a_ge_b:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_end;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
-cmp_end:
- RETURN {align1};
-
diff --git a/src/shaders/vme/inter_frame_gen8.g8a b/src/shaders/vme/inter_frame_gen8.g8a
deleted file mode 100644
index f514dd3..0000000
--- a/src/shaders/vme/inter_frame_gen8.g8a
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "vme8.inc"
-#include "inter_frame_gen8.asm"
diff --git a/src/shaders/vme/inter_frame_gen8.g8b b/src/shaders/vme/inter_frame_gen8.g8b
deleted file mode 100644
index ddc96fc..0000000
--- a/src/shaders/vme/inter_frame_gen8.g8b
+++ /dev/null
@@ -1,332 +0,0 @@
- { 0x00800001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24c00608, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24002228, 0x164500a0, 0x00040004 },
- { 0x00000040, 0x24000a28, 0x1e000400, 0xfff8fff8 },
- { 0x00000040, 0x24040a28, 0x1e000404, 0xffffffff },
- { 0x00000001, 0x24080e08, 0x08000000, 0x0000001f },
- { 0x00000001, 0x24142288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24202228, 0x164500a0, 0x00040004 },
- { 0x00000040, 0x24200a28, 0x1e000420, 0xfffcfffc },
- { 0x00000001, 0x24280e08, 0x08000000, 0x000f0003 },
- { 0x00000001, 0x24342288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24482248, 0x164500a0, 0x00040004 },
- { 0x00000001, 0x24542288, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24881208, 0x220000a2, 0x000000a1 },
- { 0x00000040, 0x24880208, 0x22000488, 0x000000a0 },
- { 0x00000041, 0x24880208, 0x06000488, 0x00000018 },
- { 0x00000001, 0x24942288, 0x00000014, 0x00000000 },
- { 0x00600001, 0x28000208, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x23800a88, 0x0e000800, 0x02190004 },
- { 0x00600001, 0x28000208, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x23a00a88, 0x0e000800, 0x02290004 },
- { 0x00200009, 0x24002228, 0x164500a0, 0x00030003 },
- { 0x00000041, 0x24000a28, 0x1e000400, 0x00020002 },
- { 0x00000040, 0x24000a28, 0x1e000400, 0xfff8fff8 },
- { 0x00000040, 0x24040a28, 0x1e000404, 0xffffffff },
- { 0x00600001, 0x28000208, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x26000a88, 0x0e000800, 0x02190006 },
- { 0x00200009, 0x24202228, 0x164500a0, 0x00030003 },
- { 0x00000041, 0x24200a28, 0x1e000420, 0x00020002 },
- { 0x00000040, 0x24200a28, 0x1e000420, 0xfffcfffc },
- { 0x00000001, 0x24280e08, 0x08000000, 0x00070003 },
- { 0x00600001, 0x28000208, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x26200a88, 0x0e000800, 0x02190006 },
- { 0x00600001, 0x2ac00608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2a800608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20001240, 0x160000a6, 0x00040004 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000750 },
- { 0x00600001, 0x2ae00608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b000608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b200608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00600060 },
- { 0x00210001, 0x2af41e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000f0 },
- { 0x00000001, 0x2ae00e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24001a68, 0x1e000400, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2af41e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000040 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x0e000b40, 0x02480403 },
- { 0x00200001, 0x2ae40208, 0x00450bc8, 0x00000000 },
- { 0x00000001, 0x2af01e68, 0x18000000, 0x00010001 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00100010 },
- { 0x00210001, 0x2b141e68, 0x18000000, 0xffffffff },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000360 },
- { 0x00000001, 0x2b000e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24021a68, 0x1e000402, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b141e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000040 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x0e000b40, 0x02480403 },
- { 0x00200001, 0x2b040208, 0x00450bf0, 0x00000000 },
- { 0x00000001, 0x2b101e68, 0x18000000, 0x00010001 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00080008 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000110 },
- { 0x00000001, 0x2b200e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24021a68, 0x1e000402, 0xffffffff },
- { 0x00000040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000180 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x0e000b40, 0x02480403 },
- { 0x00200001, 0x2b240208, 0x00450bf0, 0x00000000 },
- { 0x00000001, 0x2b301e68, 0x18000000, 0x00010001 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000130 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00040004 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000f0 },
- { 0x00000001, 0x2b200e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00200040, 0x24001a68, 0x1e450400, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000040 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a88, 0x0e000b40, 0x02480403 },
- { 0x00200001, 0x2b240208, 0x00450c18, 0x00000000 },
- { 0x00000001, 0x2b301e68, 0x18000000, 0x00010001 },
- { 0x00000040, 0x24000a28, 0x0a000b00, 0x00000b20 },
- { 0x01000010, 0x20000a20, 0x0e000400, 0x00000000 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000080 },
- { 0x02000010, 0x20000a20, 0x0e000ae0, 0x00000000 },
- { 0x00010001, 0x2b040208, 0x00000ae4, 0x00000000 },
- { 0x00010001, 0x2b240208, 0x00000ae4, 0x00000000 },
- { 0x00010001, 0x2b141248, 0x00000af4, 0x00000000 },
- { 0x00010001, 0x2b341248, 0x00000af4, 0x00000000 },
- { 0x00010001, 0x2ac00208, 0x00000ae4, 0x00000000 },
- { 0x00110001, 0x2ac00608, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000190 },
- { 0x00600001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000af4, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000ae4, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000b14, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000b04, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000b34, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000b24, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x2ac00208, 0x00000404, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000c0 },
- { 0x00000001, 0x2fa01a68, 0x00000ae4, 0x00000000 },
- { 0x00000001, 0x2fa41a68, 0x00000b04, 0x00000000 },
- { 0x00000001, 0x2fa81a68, 0x00000b24, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000a70 },
- { 0x00000001, 0x2ac01a68, 0x00000fe4, 0x00000000 },
- { 0x00000001, 0x2fa01a68, 0x00000ae6, 0x00000000 },
- { 0x00000001, 0x2fa41a68, 0x00000b06, 0x00000000 },
- { 0x00000001, 0x2fa81a68, 0x00000b26, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000a10 },
- { 0x00000001, 0x2ac21a68, 0x00000fe4, 0x00000000 },
- { 0x0020000c, 0x2a801a68, 0x1e450ac0, 0x00020002 },
- { 0x00200040, 0x2a881a68, 0x1e450a80, 0x00030003 },
- { 0x00200005, 0x2a901248, 0x16450a88, 0xfffcfffc },
- { 0x00600001, 0x25600208, 0x008d0020, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x28600608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23800608, 0x00000000, 0x00000000 },
- { 0x00000005, 0x23840208, 0x06000384, 0xff000000 },
- { 0x00600001, 0x28a00208, 0x008d0380, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00010001 },
- { 0x00000001, 0x28a52288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28c00608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x28c02288, 0x00cf03a3, 0x00000000 },
- { 0x00000001, 0x28d00608, 0x00000000, 0x11111111 },
- { 0x00000001, 0x28dc0608, 0x00000000, 0x00010101 },
- { 0x00000001, 0x28d41248, 0x00000606, 0x00000000 },
- { 0x00400001, 0x28f00208, 0x00690608, 0x00000000 },
- { 0x00600001, 0x28e01248, 0x00ae0622, 0x00000000 },
- { 0x00000001, 0x247c1648, 0x10000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a4, 0x00010001 },
- { 0x00010001, 0x247c0e88, 0x08000000, 0x00000002 },
- { 0x00000001, 0x247d2288, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00200020 },
- { 0x00000001, 0x247e2288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00800000 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x0e000800, 0x10782000 },
- { 0x01000005, 0x20000200, 0x06000180, 0x001f0000 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x00000005, 0x24400208, 0x06000180, 0x00000030 },
- { 0x01000010, 0x20000200, 0x06000440, 0x00000010 },
- { 0x00010006, 0x21800208, 0x06000180, 0x00008000 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200208, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240208, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280208, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0208, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28301248, 0x0000018c, 0x00000000 },
- { 0x00000001, 0x28340208, 0x00000188, 0x00000000 },
- { 0x00000001, 0x28380208, 0x0000019c, 0x00000000 },
- { 0x00000001, 0x283c0208, 0x00000488, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x0e000800, 0x040a0203 },
- { 0x01000010, 0x20002240, 0x160000a7, 0x00020002 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000160 },
- { 0x00000001, 0x28600608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28640608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28680608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x286c0608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28700608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28740608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28780608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x287c0608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28800608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28840608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28880608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x288c0608, 0x00000000, 0x000f0f0f },
- { 0x00400001, 0x28900608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00200000 },
- { 0x00000001, 0x24561648, 0x10000000, 0x28302830 },
- { 0x00000001, 0x24401e68, 0x18000000, 0xfff0fff0 },
- { 0x00000001, 0x24421e68, 0x18000000, 0xfff4fff4 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00600060 },
- { 0x00010040, 0x24401a68, 0x1e000440, 0x000c000c },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00100010 },
- { 0x00010040, 0x24421a68, 0x1e000442, 0x00080008 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x000000e0 },
- { 0x00000001, 0x28600608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28640608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28680608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x286c0608, 0x00000000, 0x000f0f0f },
- { 0x00400001, 0x28700608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28900608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00200000 },
- { 0x00000001, 0x24561648, 0x10000000, 0x20202020 },
- { 0x00000001, 0x24401e68, 0x18000000, 0xfff8fff8 },
- { 0x00000001, 0x24421e68, 0x18000000, 0xfff8fff8 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00600060 },
- { 0x00010040, 0x24401a68, 0x1e000440, 0x00040004 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00100010 },
- { 0x00010040, 0x24421a68, 0x1e000442, 0x00040004 },
- { 0x00000001, 0x24440208, 0x00000440, 0x00000000 },
- { 0x00200040, 0x24401a68, 0x1a450440, 0x00450a90 },
- { 0x00200040, 0x24441a68, 0x1a450444, 0x00450a90 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x24600608, 0x00000000, 0x00000002 },
- { 0x00000001, 0x24642288, 0x0000009c, 0x00000000 },
- { 0x00000001, 0x24680608, 0x00000000, 0x30003030 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00400001, 0x45800208, 0x00000ac0, 0x00000000 },
- { 0x00400001, 0x45840208, 0x00000ac0, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00000001, 0x28800608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28840608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28880608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x288c0608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28900608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28940608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28980608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x289c0608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28a00608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28a40608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28a80608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x28ac0608, 0x00000000, 0x000f0f0f },
- { 0x00400001, 0x28b00608, 0x00000000, 0x00000000 },
- { 0x08600031, 0x21800a08, 0x0e000800, 0x0c784000 },
- { 0x00000001, 0x25740608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25752288, 0x00000199, 0x00000000 },
- { 0x00000001, 0x25762288, 0x0000019a, 0x00000000 },
- { 0x00000005, 0x24001248, 0x16000180, 0x00030003 },
- { 0x00000001, 0x25742288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28800208, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28a00208, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28c00208, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28e00208, 0x008d0200, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00243000 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d0580, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x0e000800, 0x10786000 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000002 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200208, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240208, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28280208, 0x00000188, 0x00000000 },
- { 0x00000001, 0x282c0208, 0x00000574, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x0e000800, 0x040a0003 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000001 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28800208, 0x008d0200, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x0e000800, 0x0a0a0403 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000008 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0240, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x0e000800, 0x040a0203 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x0219e003 },
- { 0x00600001, 0x2e000208, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24000a40, 0x0e000e00, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x06000010, 0x20001a60, 0x1a000fa0, 0x00000fa4 },
- { 0x00010001, 0x2f601a68, 0x00000fa0, 0x00000000 },
- { 0x00110001, 0x2f601a68, 0x00000fa4, 0x00000000 },
- { 0x06000010, 0x20001a60, 0x1a000f60, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000f60, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa4 },
- { 0x00010001, 0x2f601a68, 0x00000fa0, 0x00000000 },
- { 0x00110001, 0x2f601a68, 0x00000fa4, 0x00000000 },
- { 0x04000010, 0x20001a60, 0x1a000f60, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000f60, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa4 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000070 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa0, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000a0 },
- { 0x04000010, 0x20001a60, 0x1a000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa4, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000060 },
- { 0x04000010, 0x20001a60, 0x1a000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa4, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa0, 0x00000000 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
diff --git a/src/shaders/vme/inter_frame_gen9.g9a b/src/shaders/vme/inter_frame_gen9.g9a
deleted file mode 100644
index f514dd3..0000000
--- a/src/shaders/vme/inter_frame_gen9.g9a
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "vme8.inc"
-#include "inter_frame_gen8.asm"
diff --git a/src/shaders/vme/inter_frame_gen9.g9b b/src/shaders/vme/inter_frame_gen9.g9b
deleted file mode 100644
index 1a7376c..0000000
--- a/src/shaders/vme/inter_frame_gen9.g9b
+++ /dev/null
@@ -1,332 +0,0 @@
- { 0x00800001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24c00608, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24002228, 0x164500a0, 0x00040004 },
- { 0x00000040, 0x24000a28, 0x1e000400, 0xfff8fff8 },
- { 0x00000040, 0x24040a28, 0x1e000404, 0xffffffff },
- { 0x00000001, 0x24080e08, 0x08000000, 0x0000001f },
- { 0x00000001, 0x24142288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24202228, 0x164500a0, 0x00040004 },
- { 0x00000040, 0x24200a28, 0x1e000420, 0xfffcfffc },
- { 0x00000001, 0x24280e08, 0x08000000, 0x000f0003 },
- { 0x00000001, 0x24342288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24482248, 0x164500a0, 0x00040004 },
- { 0x00000001, 0x24542288, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24881208, 0x220000a2, 0x000000a1 },
- { 0x00000040, 0x24880208, 0x22000488, 0x000000a0 },
- { 0x00000041, 0x24880208, 0x06000488, 0x00000018 },
- { 0x00000001, 0x24942288, 0x00000014, 0x00000000 },
- { 0x00600001, 0x28000208, 0x008d0400, 0x00000000 },
- { 0x0c600031, 0x23800a88, 0x06000800, 0x02190004 },
- { 0x00600001, 0x28000208, 0x008d0420, 0x00000000 },
- { 0x0c600031, 0x23a00a88, 0x06000800, 0x02290004 },
- { 0x00200009, 0x24002228, 0x164500a0, 0x00030003 },
- { 0x00000041, 0x24000a28, 0x1e000400, 0x00020002 },
- { 0x00000040, 0x24000a28, 0x1e000400, 0xfff8fff8 },
- { 0x00000040, 0x24040a28, 0x1e000404, 0xffffffff },
- { 0x00600001, 0x28000208, 0x008d0400, 0x00000000 },
- { 0x0c600031, 0x26000a88, 0x06000800, 0x02190006 },
- { 0x00200009, 0x24202228, 0x164500a0, 0x00030003 },
- { 0x00000041, 0x24200a28, 0x1e000420, 0x00020002 },
- { 0x00000040, 0x24200a28, 0x1e000420, 0xfffcfffc },
- { 0x00000001, 0x24280e08, 0x08000000, 0x00070003 },
- { 0x00600001, 0x28000208, 0x008d0420, 0x00000000 },
- { 0x0c600031, 0x26200a88, 0x06000800, 0x02190006 },
- { 0x00600001, 0x2ac00608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2a800608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20001240, 0x160000a6, 0x00040004 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000750 },
- { 0x00600001, 0x2ae00608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b000608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b200608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00600060 },
- { 0x00210001, 0x2af41e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000f0 },
- { 0x00000001, 0x2ae00e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24001a68, 0x1e000400, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2af41e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000040 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x06000b40, 0x02480403 },
- { 0x00200001, 0x2ae40208, 0x00450bc8, 0x00000000 },
- { 0x00000001, 0x2af01e68, 0x18000000, 0x00010001 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00100010 },
- { 0x00210001, 0x2b141e68, 0x18000000, 0xffffffff },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000360 },
- { 0x00000001, 0x2b000e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24021a68, 0x1e000402, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b141e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000040 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x06000b40, 0x02480403 },
- { 0x00200001, 0x2b040208, 0x00450bf0, 0x00000000 },
- { 0x00000001, 0x2b101e68, 0x18000000, 0x00010001 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00080008 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000110 },
- { 0x00000001, 0x2b200e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24021a68, 0x1e000402, 0xffffffff },
- { 0x00000040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000180 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x06000b40, 0x02480403 },
- { 0x00200001, 0x2b240208, 0x00450bf0, 0x00000000 },
- { 0x00000001, 0x2b301e68, 0x18000000, 0x00010001 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000130 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00040004 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000f0 },
- { 0x00000001, 0x2b200e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00200040, 0x24001a68, 0x1e450400, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000040 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a88, 0x06000b40, 0x02480403 },
- { 0x00200001, 0x2b240208, 0x00450c18, 0x00000000 },
- { 0x00000001, 0x2b301e68, 0x18000000, 0x00010001 },
- { 0x00000040, 0x24000a28, 0x0a000b00, 0x00000b20 },
- { 0x01000010, 0x20000a20, 0x0e000400, 0x00000000 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000080 },
- { 0x02000010, 0x20000a20, 0x0e000ae0, 0x00000000 },
- { 0x00010001, 0x2b040208, 0x00000ae4, 0x00000000 },
- { 0x00010001, 0x2b240208, 0x00000ae4, 0x00000000 },
- { 0x00010001, 0x2b141248, 0x00000af4, 0x00000000 },
- { 0x00010001, 0x2b341248, 0x00000af4, 0x00000000 },
- { 0x00010001, 0x2ac00208, 0x00000ae4, 0x00000000 },
- { 0x00110001, 0x2ac00608, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000190 },
- { 0x00600001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000af4, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000ae4, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000b14, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000b04, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000b34, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000b24, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x2ac00208, 0x00000404, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000c0 },
- { 0x00000001, 0x2fa01a68, 0x00000ae4, 0x00000000 },
- { 0x00000001, 0x2fa41a68, 0x00000b04, 0x00000000 },
- { 0x00000001, 0x2fa81a68, 0x00000b24, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000a70 },
- { 0x00000001, 0x2ac01a68, 0x00000fe4, 0x00000000 },
- { 0x00000001, 0x2fa01a68, 0x00000ae6, 0x00000000 },
- { 0x00000001, 0x2fa41a68, 0x00000b06, 0x00000000 },
- { 0x00000001, 0x2fa81a68, 0x00000b26, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000a10 },
- { 0x00000001, 0x2ac21a68, 0x00000fe4, 0x00000000 },
- { 0x0020000c, 0x2a801a68, 0x1e450ac0, 0x00020002 },
- { 0x00200040, 0x2a881a68, 0x1e450a80, 0x00030003 },
- { 0x00200005, 0x2a901248, 0x16450a88, 0xfffcfffc },
- { 0x00600001, 0x25600208, 0x008d0020, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x28600608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23800608, 0x00000000, 0x00000000 },
- { 0x00000005, 0x23840208, 0x06000384, 0xff000000 },
- { 0x00600001, 0x28a00208, 0x008d0380, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00010001 },
- { 0x00000001, 0x28a52288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28c00608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x28c02288, 0x00cf03a3, 0x00000000 },
- { 0x00000001, 0x28d00608, 0x00000000, 0x11111111 },
- { 0x00000001, 0x28dc0608, 0x00000000, 0x00010101 },
- { 0x00000001, 0x28d41248, 0x00000606, 0x00000000 },
- { 0x00400001, 0x28f00208, 0x00690608, 0x00000000 },
- { 0x00600001, 0x28e01248, 0x00ae0622, 0x00000000 },
- { 0x00000001, 0x247c1648, 0x10000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a4, 0x00010001 },
- { 0x00010001, 0x247c0e88, 0x08000000, 0x00000002 },
- { 0x00000001, 0x247d2288, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00200020 },
- { 0x00000001, 0x247e2288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00800000 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x06000800, 0x10782000 },
- { 0x01000005, 0x20000200, 0x06000180, 0x001f0000 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x00000005, 0x24400208, 0x06000180, 0x00000030 },
- { 0x01000010, 0x20000200, 0x06000440, 0x00000010 },
- { 0x00010006, 0x21800208, 0x06000180, 0x00008000 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200208, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240208, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280208, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0208, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28301248, 0x0000018c, 0x00000000 },
- { 0x00000001, 0x28340208, 0x00000188, 0x00000000 },
- { 0x00000001, 0x28380208, 0x0000019c, 0x00000000 },
- { 0x00000001, 0x283c0208, 0x00000488, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x06000800, 0x040a0203 },
- { 0x01000010, 0x20002240, 0x160000a7, 0x00020002 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000160 },
- { 0x00000001, 0x28600608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28640608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28680608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x286c0608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28700608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28740608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28780608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x287c0608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28800608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28840608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28880608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x288c0608, 0x00000000, 0x000f0f0f },
- { 0x00400001, 0x28900608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00200000 },
- { 0x00000001, 0x24561648, 0x10000000, 0x28302830 },
- { 0x00000001, 0x24401e68, 0x18000000, 0xfff0fff0 },
- { 0x00000001, 0x24421e68, 0x18000000, 0xfff4fff4 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00600060 },
- { 0x00010040, 0x24401a68, 0x1e000440, 0x000c000c },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00100010 },
- { 0x00010040, 0x24421a68, 0x1e000442, 0x00080008 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x000000e0 },
- { 0x00000001, 0x28600608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28640608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28680608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x286c0608, 0x00000000, 0x000f0f0f },
- { 0x00400001, 0x28700608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28900608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00200000 },
- { 0x00000001, 0x24561648, 0x10000000, 0x20202020 },
- { 0x00000001, 0x24401e68, 0x18000000, 0xfff8fff8 },
- { 0x00000001, 0x24421e68, 0x18000000, 0xfff8fff8 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00600060 },
- { 0x00010040, 0x24401a68, 0x1e000440, 0x00040004 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00100010 },
- { 0x00010040, 0x24421a68, 0x1e000442, 0x00040004 },
- { 0x00000001, 0x24440208, 0x00000440, 0x00000000 },
- { 0x00200040, 0x24401a68, 0x1a450440, 0x00450a90 },
- { 0x00200040, 0x24441a68, 0x1a450444, 0x00450a90 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x24600608, 0x00000000, 0x00000002 },
- { 0x00000001, 0x24642288, 0x0000009c, 0x00000000 },
- { 0x00000001, 0x24680608, 0x00000000, 0x30003030 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00400001, 0x45800208, 0x00000ac0, 0x00000000 },
- { 0x00400001, 0x45840208, 0x00000ac0, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00000001, 0x28800608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28840608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28880608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x288c0608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28900608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28940608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28980608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x289c0608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28a00608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28a40608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28a80608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x28ac0608, 0x00000000, 0x000f0f0f },
- { 0x00400001, 0x28b00608, 0x00000000, 0x00000000 },
- { 0x08600031, 0x21800a08, 0x06000800, 0x0c784000 },
- { 0x00000001, 0x25740608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25752288, 0x00000199, 0x00000000 },
- { 0x00000001, 0x25762288, 0x0000019a, 0x00000000 },
- { 0x00000005, 0x24001248, 0x16000180, 0x00030003 },
- { 0x00000001, 0x25742288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28800208, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28a00208, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28c00208, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28e00208, 0x008d0200, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00243000 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d0580, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x06000800, 0x10786000 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000002 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200208, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240208, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28280208, 0x00000188, 0x00000000 },
- { 0x00000001, 0x282c0208, 0x00000574, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x06000800, 0x040a0003 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000001 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28800208, 0x008d0200, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x06000800, 0x0a0a0403 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000008 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0240, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x06000800, 0x040a0203 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x0219e003 },
- { 0x00600001, 0x2e000208, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24000a40, 0x06000e00, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x06000010, 0x20001a60, 0x1a000fa0, 0x00000fa4 },
- { 0x00010001, 0x2f601a68, 0x00000fa0, 0x00000000 },
- { 0x00110001, 0x2f601a68, 0x00000fa4, 0x00000000 },
- { 0x06000010, 0x20001a60, 0x1a000f60, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000f60, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa4 },
- { 0x00010001, 0x2f601a68, 0x00000fa0, 0x00000000 },
- { 0x00110001, 0x2f601a68, 0x00000fa4, 0x00000000 },
- { 0x04000010, 0x20001a60, 0x1a000f60, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000f60, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa4 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000070 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa0, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000a0 },
- { 0x04000010, 0x20001a60, 0x1a000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa4, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000060 },
- { 0x04000010, 0x20001a60, 0x1a000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa4, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa0, 0x00000000 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
diff --git a/src/shaders/vme/inter_frame_haswell.asm b/src/shaders/vme/inter_frame_haswell.asm
deleted file mode 100644
index 7f08d3e..0000000
--- a/src/shaders/vme/inter_frame_haswell.asm
+++ /dev/null
@@ -1,770 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-// Modual name: Inter_frame_haswell.asm
-//
-// Make inter predition estimation for Inter-frame on Haswell
-//
-
-//
-// Now, begin source code....
-//
-
-#define SAVE_RET add (1) RETURN_REG<1>:ud ip:ud 32:ud
-#define RETURN mov (1) ip:ud RETURN_REG<0,1,0>:ud
-
-/*
- * __START
- */
-__INTER_START:
-mov (16) tmp_reg0.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg2.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg4.0<1>:UD 0x0:UD {align1} ;
-mov (16) tmp_reg6.0<1>:UD 0x0:UD {align1} ;
-
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-mov (1) read0_header.8<1>:UD BLOCK_32X1 {align1};
-mov (1) read0_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-mov (1) read1_header.8<1>:UD BLOCK_4X16 {align1};
-mov (1) read1_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) vme_m0.8<1>:UW orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-mov (1) vme_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-mul (1) obw_m0.8<1>:UD w_in_mb_uw<0,1,0>:UW orig_y_ub<0,1,0>:UB {align1};
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD orig_x_ub<0,1,0>:UB {align1};
-mul (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 24:UD {align1};
-mov (1) obw_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/*
- * Media Read Message -- fetch Luma neighbor edge pixels
- */
-/* ROW */
-mov (8) msg_reg0.0<1>:UD read0_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_ROW<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* COL */
-mov (8) msg_reg0.0<1>:UD read1_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_COL0<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 2 {align1};
-
-/*
- * Media Read Message -- fetch Chroma neighbor edge pixels
- */
-/* ROW */
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 3:UW {align1}; /* x * 16 , y * 8 */
-mul (1) read0_header.0<1>:D read0_header.0<0,1,0>:D 2:W {align1};
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-mov (8) msg_reg0.0<1>:UD read0_header.0<8,8,1>:UD {align1};
-send (8) msg_ind CHROMA_ROW<1>:UB null read(BIND_IDX_CBCR, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* COL */
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 3:UW {align1}; /* x * 16, y * 8 */
-mul (1) read1_header.0<1>:D read1_header.0<0,1,0>:D 2:W {align1};
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-mov (1) read1_header.8<1>:UD BLOCK_8X4 {align1};
-mov (8) msg_reg0.0<1>:UD read1_header.0<8,8,1>:UD {align1};
-send (8) msg_ind CHROMA_COL<1>:UB null read(BIND_IDX_CBCR, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-mov (8) mb_mvp_ref.0<1>:ud 0:ud {align1};
-mov (8) mb_ref_win.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw mb_hwdep<0,1,0>:uw 0x04:uw {align1};
-(f0.0) jmpi (1) __mb_hwdep_end;
-/* read back the data for MB A */
-/* the layout of MB result is: rx.0(Available). rx.4(MVa), rX.8(MVb), rX.16(Pred_L0 flag),
-* rX.18 (Pred_L1 flag), rX.20(Forward reference ID), rX.22(Backwared reference ID)
-*/
-mov (8) mba_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbb_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbc_result.0<1>:ud 0x0:ud {align1};
-mba_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_AE:uw {align1};
-/* MB A doesn't exist. Zero MV. mba_flag is zero and ref ID = -1 */
-(f0.0) mov (2) mba_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbb_start;
-mov (1) mba_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mba_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbb_start;
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB A */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-/* MV */
-mov (2) mba_result.4<1>:ud mb_mv1.8<2,2,1>:ud {align1};
-mov (1) mba_result.16<1>:w MB_PRED_FLAG {align1};
-
-mbb_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_B:uw {align1};
-/* MB B doesn't exist. Zero MV. mba_flag is zero */
-/* If MB B doesn't exist, neither MB C nor D exists */
-(f0.0) mov (2) mbb_result.20<1>:w -1:w {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (1) mbb_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mbb_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbc_start;
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB B */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-mov (2) mbb_result.4<1>:ud mb_mv2.16<2,2,1>:ud {align1};
-mov (1) mbb_result.16<1>:w MB_PRED_FLAG {align1};
-
-mbc_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_C:uw {align1};
-/* MB C doesn't exist. Zero MV. mba_flag is zero */
-/* Based on h264 spec the MB D will be replaced if MB C doesn't exist */
-(f0.0) jmpi (1) mbd_start;
-mov (1) mbc_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB C */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-/* Forward MV */
-mov (2) mbc_result.4<1>:ud mb_mv2.16<2,2,1>:ud {align1};
-mov (1) mbc_result.16<1>:w MB_PRED_FLAG {align1};
-
-jmpi (1) mb_mvp_start;
-mbd_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_D:uw {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (1) mbc_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (2) tmp_reg0.0<1>:w tmp_reg0.0<2,2,1>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB D */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ub
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-
-/* Forward MV */
-mov (2) mbc_result.4<1>:ud mb_mv3.24<2,2,1>:ud {align1};
-mov (1) mbc_result.16<1>:w MB_PRED_FLAG {align1};
-
-mb_mvp_start:
-/*TODO: Add the skip prediction */
-/* Check whether both MB B and C are inavailable */
-add (1) tmp_reg0.0<1>:d mbb_result.0<0,1,0>:d mbc_result.0<0,1,0>:d {align1};
-cmp.z.f0.0 (1) null:d tmp_reg0.0<0,1,0>:d 0:d {align1};
-(-f0.0) jmpi (1) mb_median_start;
-cmp.nz.f0.0 (1) null:d mba_result.0<0,1,0>:d 0:d {align1};
-(f0.0) mov (1) mbb_result.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-(f0.0) mov (1) mbc_result.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-(f0.0) mov (1) mbb_result.20<1>:uw mba_result.20<0,1,0>:uw {align1};
-(f0.0) mov (1) mbc_result.20<1>:uw mba_result.20<0,1,0>:uw {align1};
-(f0.0) mov (1) mb_mvp_ref.0<1>:ud mba_result.4<0,1,0>:ud {align1};
-(-f0.0) mov (1) mb_mvp_ref.0<1>:ud 0:ud {align1};
-jmpi (1) __mb_hwdep_end;
-
-mb_median_start:
-/* check whether only one neighbour MB has the same ref ID with the current MB */
-mov (8) tmp_reg0.0<1>:ud 0:ud {align1};
-cmp.z.f0.0 (1) null:d mba_result.20<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbb_result.20<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbb_result.4<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbc_result.20<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbc_result.4<0,1,0>:ud {align1};
-cmp.e.f0.0 (1) null:d tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) mb_mvp_ref.0<1>:ud tmp_reg0.4<0,1,0>:ud {align1};
-(f0.0) jmpi (1) __mb_hwdep_end;
-
-mov (1) INPUT_ARG0.0<1>:w mba_result.4<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.4<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.4<0,1,0>:w {align1};
-SAVE_RET {align1};
- jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.0<1>:w RET_ARG<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.0<1>:w mba_result.6<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.6<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.6<0,1,0>:w {align1};
-SAVE_RET {align1};
-jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.2<1>:w RET_ARG<0,1,0>:w {align1};
-
-__mb_hwdep_end:
-asr (2) mb_ref_win.0<1>:w mb_mvp_ref.0<2,2,1>:w 2:w {align1};
-add (2) mb_ref_win.8<1>:w mb_ref_win.0<2,2,1>:w 3:w {align1};
-and (2) mb_ref_win.16<1>:uw mb_ref_win.8<2,2,1>:uw 0xFFFC:uw {align1};
-
-mov (8) msg_reg0.0<1>:ud 0:ud {align1};
-mov (1) msg_reg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-mov (1) tmp_reg0.0<1>:UD qp_ub<0,1,0>:ub {align1};
-mul (1) msg_reg0.8<1>:ud tmp_reg0.0<1>:ud 2:ud {align1};
-
-send (16)
- msg_ind
- vme_cost_wb.0<1>:ud
- null
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_2,
- BIND_IDX_COST,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-/* m2, get the MV/Mb cost passed from constant buffer when
-spawning thread by MEDIA_OBJECT */
-mov (8) vme_m2<1>:UD vme_cost_wb.0<8,8,1>:UD {align1};
-
-mov (8) vme_msg_2<1>:UD vme_m2.0<8,8,1>:UD {align1};
-
-/* m3 */
-mov (8) vme_msg_3<1>:UD 0x0:UD {align1};
-
-/* m4 */
-mov (1) INEP_ROW.0<1>:UD 0x0:UD {align1};
-and (1) INEP_ROW.4<1>:UD INEP_ROW.4<0,1,0>:UD 0xFF000000:UD {align1};
-mov (8) vme_msg_4<1>:UD INEP_ROW.0<8,8,1>:UD {align1};
-
-/* m5 */
-mov (8) vme_msg_5<1>:UD 0x0:UD {align1};
-mov (16) vme_msg_5.0<1>:UB INEP_COL0.3<32,8,4>:UB {align1};
-mov (1) vme_msg_5.16<1>:UD INTRA_PREDICTORE_MODE {align1};
-
-/* the penalty for Intra mode */
-mov (1) vme_msg_5.28<1>:UD 0x010101:UD {align1};
-mov (1) vme_msg_5.20<1>:UW CHROMA_ROW.6<0,1,0>:UW {align1};
-
-
-/* m6 */
-mov (4) vme_msg_6.16<1>:UD CHROMA_ROW.8<4,4,1>:UD {align1};
-mov (8) vme_msg_6.0<1>:UW CHROMA_COL.2<16,8,2>:UW {align1};
-
-/*
- * SIC VME message
- */
-/* m0 */
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-mov (1) tmp_reg0.0<1>:UW LUMA_INTRA_MODE:UW {align1};
-/* Use the Luma mode */
-mov (1) vme_msg_4.5<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-/* m1 */
-mov (1) intra_flag<1>:UW 0x0:UW {align1} ;
-and.z.f0.0 (1) null<1>:UW transform_8x8_ub<0,1,0>:UB 1:UW {align1};
-(f0.0) mov (1) intra_part_mask_ub<1>:UB LUMA_INTRA_8x8_DISABLE {align1};
-
-/* assign MB intra struct from the thread payload*/
-mov (1) mb_intra_struct_ub<1>:UB input_mb_intra_ub<0,1,0>:UB {align1};
-
-/* Disable DC HAAR component when calculating HARR SATD block */
-mov (1) tmp_reg0.0<1>:UW DC_HARR_DISABLE:UW {align1};
-mov (1) vme_m1.30<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-mov (1) vme_m0.12<1>:UD INTRA_SAD_HAAR:UD {align1}; /* 16x16 Source, Intra_harr */
-/* m0 */
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-mov (8) vme_msg_1<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-/* after verification it will be passed by using payload */
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- cre(
- BIND_IDX_VME,
- VME_SIC_MESSAGE_TYPE
- )
- mlen sic_vme_msg_length
- rlen vme_wb_length
- {align1};
-/*
- * Oword Block Write message
- */
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-mov (1) msg_reg1.4<1>:UD vme_wb.16<0,1,0>:UD {align1};
-mov (1) msg_reg1.8<1>:UD vme_wb.20<0,1,0>:UD {align1};
-mov (1) msg_reg1.12<1>:UD vme_wb.24<0,1,0>:UD {align1};
-
-/* Distortion, Intra (17-16), */
-mov (1) msg_reg1.16<1>:UW vme_wb.12<0,1,0>:UW {align1};
-
-mov (1) msg_reg1.20<1>:UD vme_wb.8<0,1,0>:UD {align1};
-/* VME clock counts */
-mov (1) msg_reg1.24<1>:UD vme_wb.28<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.28<1>:UD obw_m0.8<0,1,0>:UD {align1};
-
-/* bind index 3, write 2 oword (32bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-/* IME search */
-cmp.z.f0.0 (1) null<1>:uw quality_level_ub<0,1,0>:ub LOW_QUALITY_LEVEL:uw {align1};
-(f0.0) jmpi (1) __low_quality_search;
-
-__high_quality_search:
-/* M3/M4 search path */
-mov (1) vme_msg_3.0<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_3.4<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_3.8<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_3.12<1>:UD 0x100F0F0F:UD {align1};
-mov (1) vme_msg_3.16<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_3.20<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_3.24<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_3.28<1>:UD 0x100F0F0F:UD {align1};
-mov (1) vme_msg_4.0<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_4.4<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_4.8<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_4.12<1>:UD 0x000F0F0F:UD {align1};
-mov (4) vme_msg_4.16<1>:UD 0x0:UD {align1};
-
-mov (1) vme_m0.12<1>:UD SEARCH_CTRL_SINGLE + INTER_PART_MASK + INTER_SAD_HAAR:UD {align1}; /* 16x16 Source, harr */
-mov (1) vme_m0.22<1>:UW REF_REGION_SIZE {align1}; /* Reference Width&Height, 48x40 */
-mov (1) vme_m0.0<1>:W -16:W {align1};
-mov (1) vme_m0.2<1>:W -12:W {align1};
-
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_AE:uw {align1};
-(f0.0) add (1) vme_m0.0<1>:w vme_m0.0<0,1,0>:w 12:w {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_B:uw {align1};
-(f0.0) add (1) vme_m0.2<1>:w vme_m0.2<0,1,0>:w 8:w {align1};
-
-jmpi (1) __vme_msg;
-
-__low_quality_search:
-/* M3/M4 search path */
-mov (1) vme_msg_3.0<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_3.4<1>:UD 0x100F0F0F:UD {align1};
-mov (1) vme_msg_3.8<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_3.12<1>:UD 0x000F0F0F:UD {align1};
-mov (4) vme_msg_3.16<1>:UD 0x0:UD {align1};
-mov (8) vme_msg_4.16<1>:UD 0x0:UD {align1};
-
-mov (1) vme_m0.12<1>:UD SEARCH_CTRL_SINGLE + INTER_PART_MASK + INTER_SAD_HAAR:UD {align1}; /* 16x16 Source, harr */
-mov (1) vme_m0.22<1>:UW MIN_REF_REGION_SIZE {align1}; /* Reference Width&Height, 32x32 */
-mov (1) vme_m0.0<1>:W -8:W {align1};
-mov (1) vme_m0.2<1>:W -8:W {align1};
-
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_AE:uw {align1};
-(f0.0) add (1) vme_m0.0<1>:w vme_m0.0<0,1,0>:w 4:w {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_B:uw {align1};
-(f0.0) add (1) vme_m0.2<1>:w vme_m0.2<0,1,0>:w 4:w {align1};
-
-__vme_msg:
-mov (1) vme_m0.4<1>:UD vme_m0.0<0,1,0>:UD {align1};
-add (2) vme_m0.0<1>:w vme_m0.0<2,2,1>:w mb_ref_win.16<2,2,1>:w {align1};
-add (2) vme_m0.4<1>:w vme_m0.4<2,2,1>:w mb_ref_win.16<2,2,1>:w {align1};
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-mov (1) vme_m1.0<1>:UD ADAPTIVE_SEARCH_ENABLE:ud {align1} ;
-/* the Max MV number is passed by constant buffer */
-mov (1) vme_m1.4<1>:UB r4.28<0,1,0>:UB {align1};
-mov (1) vme_m1.8<1>:UD START_CENTER + SEARCH_PATH_LEN:UD {align1};
-/* Set the MV cost center */
-mov (1) vme_m1.16<1>:ud mb_mvp_ref.0<0,1,0>:ud {align1};
-mov (1) vme_m1.20<1>:ud mb_mvp_ref.0<0,1,0>:ud {align1};
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-mov (8) vme_msg_2<1>:UD vme_m2.0<8,8,1>:UD {align1};
-
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- vme(
- BIND_IDX_VME,
- 0,
- 0,
- VME_IME_MESSAGE_TYPE
- )
- mlen ime_vme_msg_length
- rlen vme_wb_length {align1};
-
-/* Set Macroblock-shape/mode for FBR */
-
-mov (1) vme_m2.20<1>:UD 0x0:UD {align1};
-mov (1) vme_m2.21<1>:UB vme_wb.25<0,1,0>:UB {align1};
-mov (1) vme_m2.22<1>:UB vme_wb.26<0,1,0>:UB {align1};
-
-and (1) tmp_reg0.0<1>:UW vme_wb.0<0,1,0>:UW 0x03:UW {align1};
-mov (1) vme_m2.20<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-/* Send FBR message into CRE */
-
-mov (8) vme_msg_3.0<1>:UD vme_wb1.0<8,8,1>:UD {align1};
-mov (8) vme_msg_4.0<1>:ud vme_wb2.0<8,8,1>:ud {align1};
-mov (8) vme_msg_5.0<1>:ud vme_wb3.0<8,8,1>:ud {align1};
-mov (8) vme_msg_6.0<1>:ud vme_wb4.0<8,8,1>:ud {align1};
-
-mov (1) vme_m0.12<1>:UD INTER_SAD_HAAR + SUB_PEL_MODE_QUARTER + FBR_BME_DISABLE:UD {align1}; /* 16x16 Source, 1/4 pixel, harr, BME disable */
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-mov (8) vme_msg_2.0<1>:UD vme_m2.0<8,8,1>:UD {align1};
-
-/* after verification it will be passed by using payload */
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- cre(
- BIND_IDX_VME,
- VME_FBR_MESSAGE_TYPE
- )
- mlen fbr_vme_msg_length
- rlen vme_wb_length
- {align1};
-
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x02:UD {align1};
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-/* write FME info */
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.4<1>:UD vme_wb.24<0,1,0>:UD {align1};
-/* Inter distortion of FME */
-mov (1) msg_reg1.8<1>:UD vme_wb.8<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.12<1>:UD vme_m2.20<0,1,0>:UD {align1};
-
-/* bind index 3, write oword (16bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_0,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-/* Write FME/BME MV */
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x01:UD {align1};
-mov (8) msg_reg0.0<1>:UD obw_m0.0<8,8,1>:UD {align1};
-
-
-mov (8) msg_reg1.0<1>:UD vme_wb1.0<8,8,1>:UD {align1};
-mov (8) msg_reg2.0<1>:ud vme_wb2.0<8,8,1>:ud {align1};
-mov (8) msg_reg3.0<1>:ud vme_wb3.0<8,8,1>:ud {align1};
-mov (8) msg_reg4.0<1>:ud vme_wb4.0<8,8,1>:ud {align1};
-/* bind index 3, write 8 oword (128 bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_8,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 5
- rlen obw_wb_length
- {align1};
-
-/* Write FME/BME RefID */
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x08:UD {align1};
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-
-mov (8) msg_reg1.0<1>:UD vme_wb6.0<8,8,1>:UD {align1};
-
-/* bind index 3, write 2 oword (32bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-/* Issue message fence so that the previous write message is committed */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_FENCE,
- OBR_MF_COMMIT,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-__EXIT:
-/*
- * kill thread
- */
-mov (8) ts_msg_reg0<1>:UD r0<8,8,1>:UD {align1};
-send (16) ts_msg_ind acc0<1>UW null thread_spawner(0, 0, 1) mlen 1 rlen 0 {align1 EOT};
-
- nop ;
- nop ;
-/* Compare three word data to get the min value */
-word_imin:
- cmp.le.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- cmp.le.f0.0 (1) null:w TEMP_VAR0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w TEMP_VAR0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- RETURN {align1};
-
-/* Compare three word data to get the max value */
-word_imax:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- cmp.ge.f0.0 (1) null:w TEMP_VAR0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w TEMP_VAR0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- RETURN {align1};
-
-word_imedian:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_a_ge_b;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_end;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- jmpi (1) cmp_end;
-cmp_a_ge_b:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_end;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
-cmp_end:
- RETURN {align1};
diff --git a/src/shaders/vme/inter_frame_haswell.g75a b/src/shaders/vme/inter_frame_haswell.g75a
deleted file mode 100644
index e95ed93..0000000
--- a/src/shaders/vme/inter_frame_haswell.g75a
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "vme75.inc"
-#include "inter_frame_haswell.asm"
diff --git a/src/shaders/vme/inter_frame_haswell.g75b b/src/shaders/vme/inter_frame_haswell.g75b
deleted file mode 100644
index 5aa520e..0000000
--- a/src/shaders/vme/inter_frame_haswell.g75b
+++ /dev/null
@@ -1,316 +0,0 @@
- { 0x00800001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24002e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24003ca5, 0x00000400, 0xfff8fff8 },
- { 0x00000040, 0x24043ca5, 0x00000404, 0xffffffff },
- { 0x00000001, 0x240800e1, 0x00000000, 0x0000001f },
- { 0x00000001, 0x24140231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24202e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24203ca5, 0x00000420, 0xfffcfffc },
- { 0x00000001, 0x242800e1, 0x00000000, 0x000f0003 },
- { 0x00000001, 0x24340231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24482e29, 0x004500a0, 0x00040004 },
- { 0x00000001, 0x24540231, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24884521, 0x000000a2, 0x000000a1 },
- { 0x00000040, 0x24884421, 0x00000488, 0x000000a0 },
- { 0x00000041, 0x24880c21, 0x00000488, 0x00000018 },
- { 0x00000001, 0x24940231, 0x00000014, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x23801cb1, 0x00000800, 0x02190004 },
- { 0x00600001, 0x28000021, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x23a01cb1, 0x00000800, 0x02290004 },
- { 0x00200009, 0x24002e25, 0x004500a0, 0x00030003 },
- { 0x00000041, 0x24003ca5, 0x00000400, 0x00020002 },
- { 0x00000040, 0x24003ca5, 0x00000400, 0xfff8fff8 },
- { 0x00000040, 0x24043ca5, 0x00000404, 0xffffffff },
- { 0x00600001, 0x28000021, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x26001cb1, 0x00000800, 0x02190006 },
- { 0x00200009, 0x24202e25, 0x004500a0, 0x00030003 },
- { 0x00000041, 0x24203ca5, 0x00000420, 0x00020002 },
- { 0x00000040, 0x24203ca5, 0x00000420, 0xfffcfffc },
- { 0x00000001, 0x242800e1, 0x00000000, 0x00070003 },
- { 0x00600001, 0x28000021, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x26201cb1, 0x00000800, 0x02190006 },
- { 0x00600001, 0x2ac00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2a800061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002d28, 0x000000a6, 0x00040004 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000740 },
- { 0x00600001, 0x2ae00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00600060 },
- { 0x00210001, 0x2af401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000f0 },
- { 0x00000001, 0x2ae000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24003dad, 0x00000400, 0xffffffff },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x00000018 },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b601ca1, 0x00000b40, 0x02280303 },
- { 0x05000010, 0x2000252c, 0x00000b70, 0x00000b88 },
- { 0x00210001, 0x2af401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000040 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000003 },
- { 0x0a800031, 0x2ba01ca1, 0x00000b40, 0x02480403 },
- { 0x00200001, 0x2ae40021, 0x00450bc8, 0x00000000 },
- { 0x00000001, 0x2af001ed, 0x00000000, 0x00010001 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00100010 },
- { 0x00210001, 0x2b1401ed, 0x00000000, 0xffffffff },
- { 0x00210001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000350 },
- { 0x00000001, 0x2b0000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24023dad, 0x00000402, 0xffffffff },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x00000018 },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b601ca1, 0x00000b40, 0x02280303 },
- { 0x05000010, 0x2000252c, 0x00000b70, 0x00000b88 },
- { 0x00210001, 0x2b1401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000040 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000003 },
- { 0x0a800031, 0x2ba01ca1, 0x00000b40, 0x02480403 },
- { 0x00200001, 0x2b040021, 0x00450bf0, 0x00000000 },
- { 0x00000001, 0x2b1001ed, 0x00000000, 0x00010001 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00080008 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000110 },
- { 0x00000001, 0x2b2000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24023dad, 0x00000402, 0xffffffff },
- { 0x00000040, 0x24003dad, 0x00000400, 0x00010001 },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x00000018 },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b601ca1, 0x00000b40, 0x02280303 },
- { 0x05000010, 0x2000252c, 0x00000b70, 0x00000b88 },
- { 0x00210001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000170 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000003 },
- { 0x0a800031, 0x2ba01ca1, 0x00000b40, 0x02480403 },
- { 0x00200001, 0x2b240021, 0x00450bf0, 0x00000000 },
- { 0x00000001, 0x2b3001ed, 0x00000000, 0x00010001 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00040004 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000f0 },
- { 0x00000001, 0x2b2000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00200040, 0x24003dad, 0x00450400, 0xffffffff },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x00000018 },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b601ca1, 0x00000b40, 0x02280303 },
- { 0x05000010, 0x2000252c, 0x00000b70, 0x00000b88 },
- { 0x00210001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000040 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000003 },
- { 0x0a800031, 0x2ba01cb1, 0x00000b40, 0x02480403 },
- { 0x00200001, 0x2b240021, 0x00450c18, 0x00000000 },
- { 0x00000001, 0x2b3001ed, 0x00000000, 0x00010001 },
- { 0x00000040, 0x240014a5, 0x00000b00, 0x00000b20 },
- { 0x01000010, 0x20001ca4, 0x00000400, 0x00000000 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000080 },
- { 0x02000010, 0x20001ca4, 0x00000ae0, 0x00000000 },
- { 0x00010001, 0x2b040021, 0x00000ae4, 0x00000000 },
- { 0x00010001, 0x2b240021, 0x00000ae4, 0x00000000 },
- { 0x00010001, 0x2b140129, 0x00000af4, 0x00000000 },
- { 0x00010001, 0x2b340129, 0x00000af4, 0x00000000 },
- { 0x00010001, 0x2ac00021, 0x00000ae4, 0x00000000 },
- { 0x00110001, 0x2ac00061, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000190 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200af4, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000ae4, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200b14, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000b04, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200b34, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000b24, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200400, 0x00010001 },
- { 0x00010001, 0x2ac00021, 0x00000404, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000c0 },
- { 0x00000001, 0x2fa001ad, 0x00000ae4, 0x00000000 },
- { 0x00000001, 0x2fa401ad, 0x00000b04, 0x00000000 },
- { 0x00000001, 0x2fa801ad, 0x00000b24, 0x00000000 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000980 },
- { 0x00000001, 0x2ac001ad, 0x00000fe4, 0x00000000 },
- { 0x00000001, 0x2fa001ad, 0x00000ae6, 0x00000000 },
- { 0x00000001, 0x2fa401ad, 0x00000b06, 0x00000000 },
- { 0x00000001, 0x2fa801ad, 0x00000b26, 0x00000000 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000920 },
- { 0x00000001, 0x2ac201ad, 0x00000fe4, 0x00000000 },
- { 0x0020000c, 0x2a803dad, 0x00450ac0, 0x00020002 },
- { 0x00200040, 0x2a883dad, 0x00450a80, 0x00030003 },
- { 0x00200005, 0x2a902d29, 0x00450a88, 0xfffcfffc },
- { 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x28140231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x24000221, 0x000000a8, 0x00000000 },
- { 0x00000041, 0x28080c21, 0x00200400, 0x00000002 },
- { 0x0a800031, 0x25801ca1, 0x00000800, 0x02180208 },
- { 0x00600001, 0x25600021, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23800061, 0x00000000, 0x00000000 },
- { 0x00000005, 0x23840c21, 0x00000384, 0xff000000 },
- { 0x00600001, 0x28800021, 0x008d0380, 0x00000000 },
- { 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x28a00231, 0x00cf03a3, 0x00000000 },
- { 0x00000001, 0x28b00061, 0x00000000, 0x11111111 },
- { 0x00000001, 0x28bc0061, 0x00000000, 0x00010101 },
- { 0x00000001, 0x28b40129, 0x00000606, 0x00000000 },
- { 0x00400001, 0x28d00021, 0x00690608, 0x00000000 },
- { 0x00600001, 0x28c00129, 0x00ae0622, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x24000169, 0x00000000, 0x00010001 },
- { 0x00000001, 0x28850231, 0x00000400, 0x00000000 },
- { 0x00000001, 0x247c0169, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a4, 0x00010001 },
- { 0x00010001, 0x247c00f1, 0x00000000, 0x00000002 },
- { 0x00000001, 0x247d0231, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x24000169, 0x00000000, 0x00200020 },
- { 0x00000001, 0x247e0231, 0x00000400, 0x00000000 },
- { 0x00000001, 0x244c0061, 0x00000000, 0x00800000 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x0d600031, 0x21801ca1, 0x00000800, 0x0e782000 },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200021, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240021, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280021, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0021, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28300129, 0x0000018c, 0x00000000 },
- { 0x00000001, 0x28340021, 0x00000188, 0x00000000 },
- { 0x00000001, 0x28380021, 0x0000019c, 0x00000000 },
- { 0x00000001, 0x283c0021, 0x00000488, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0203 },
- { 0x01000010, 0x20002e28, 0x000000a7, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000160 },
- { 0x00000001, 0x28600061, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28640061, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28680061, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x286c0061, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28700061, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28740061, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28780061, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x287c0061, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28800061, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28840061, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28880061, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x288c0061, 0x00000000, 0x000f0f0f },
- { 0x00400001, 0x28900061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x244c0061, 0x00000000, 0x00200000 },
- { 0x00000001, 0x24560169, 0x00000000, 0x28302830 },
- { 0x00000001, 0x244001ed, 0x00000000, 0xfff0fff0 },
- { 0x00000001, 0x244201ed, 0x00000000, 0xfff4fff4 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00600060 },
- { 0x00010040, 0x24403dad, 0x00000440, 0x000c000c },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00100010 },
- { 0x00010040, 0x24423dad, 0x00000442, 0x00080008 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000e0 },
- { 0x00000001, 0x28600061, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28640061, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28680061, 0x00000000, 0x10010101 },
- { 0x00000001, 0x286c0061, 0x00000000, 0x000f0f0f },
- { 0x00400001, 0x28700061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28900061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x244c0061, 0x00000000, 0x00200000 },
- { 0x00000001, 0x24560169, 0x00000000, 0x20202020 },
- { 0x00000001, 0x244001ed, 0x00000000, 0xfff8fff8 },
- { 0x00000001, 0x244201ed, 0x00000000, 0xfff8fff8 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00600060 },
- { 0x00010040, 0x24403dad, 0x00000440, 0x00040004 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00100010 },
- { 0x00010040, 0x24423dad, 0x00000442, 0x00040004 },
- { 0x00000001, 0x24440021, 0x00000440, 0x00000000 },
- { 0x00200040, 0x244035ad, 0x00450440, 0x00450a90 },
- { 0x00200040, 0x244435ad, 0x00450444, 0x00450a90 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00000002 },
- { 0x00000001, 0x24640231, 0x0000009c, 0x00000000 },
- { 0x00000001, 0x24680061, 0x00000000, 0x30003030 },
- { 0x00000001, 0x24700021, 0x00000ac0, 0x00000000 },
- { 0x00000001, 0x24740021, 0x00000ac0, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d0560, 0x00000000 },
- { 0x08600031, 0x21801ca1, 0x00000800, 0x0a784000 },
- { 0x00000001, 0x25740061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25750231, 0x00000199, 0x00000000 },
- { 0x00000001, 0x25760231, 0x0000019a, 0x00000000 },
- { 0x00000005, 0x24002d29, 0x00000180, 0x00030003 },
- { 0x00000001, 0x25740231, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28600021, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28800021, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28a00021, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28c00021, 0x008d0200, 0x00000000 },
- { 0x00000001, 0x244c0061, 0x00000000, 0x00243000 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d0560, 0x00000000 },
- { 0x0d600031, 0x21801ca1, 0x00000800, 0x0e786000 },
- { 0x00000040, 0x24880c21, 0x00000488, 0x00000002 },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200021, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240021, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28280021, 0x00000188, 0x00000000 },
- { 0x00000001, 0x282c0021, 0x00000574, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0003 },
- { 0x00000040, 0x24880c21, 0x00000488, 0x00000001 },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28600021, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28800021, 0x008d0200, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x0a0a0403 },
- { 0x00000040, 0x24880c21, 0x00000488, 0x00000008 },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0240, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0203 },
- { 0x0a800031, 0x2b601ca1, 0x00000b40, 0x0219e003 },
- { 0x00600001, 0x2e000021, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24001ca8, 0x00000e00, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x06000010, 0x200035ac, 0x00000fa0, 0x00000fa4 },
- { 0x00010001, 0x2f6001ad, 0x00000fa0, 0x00000000 },
- { 0x00110001, 0x2f6001ad, 0x00000fa4, 0x00000000 },
- { 0x06000010, 0x200035ac, 0x00000f60, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000f60, 0x00000000 },
- { 0x00110001, 0x2fe401ad, 0x00000fa8, 0x00000000 },
- { 0x00000001, 0x34000020, 0x00000fe0, 0x00000000 },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa4 },
- { 0x00010001, 0x2f6001ad, 0x00000fa0, 0x00000000 },
- { 0x00110001, 0x2f6001ad, 0x00000fa4, 0x00000000 },
- { 0x04000010, 0x200035ac, 0x00000f60, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000f60, 0x00000000 },
- { 0x00110001, 0x2fe401ad, 0x00000fa8, 0x00000000 },
- { 0x00000001, 0x34000020, 0x00000fe0, 0x00000000 },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa4 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa0, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000a0 },
- { 0x04000010, 0x200035ac, 0x00000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe401ad, 0x00000fa4, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000060 },
- { 0x04000010, 0x200035ac, 0x00000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa4, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe401ad, 0x00000fa0, 0x00000000 },
- { 0x00000001, 0x34000020, 0x00000fe0, 0x00000000 },
diff --git a/src/shaders/vme/inter_frame_ivb.asm b/src/shaders/vme/inter_frame_ivb.asm
deleted file mode 100644
index 42a9969..0000000
--- a/src/shaders/vme/inter_frame_ivb.asm
+++ /dev/null
@@ -1,622 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- * Authors: Zhao Yakui <yakui.zhao@intel.com>
- *
- */
-// Modual name: InterFrame_ivy.asm
-//
-// Make inter predition estimation for Inter frame on Ivy
-//
-
-//
-// Now, begin source code....
-//
-
-#define SAVE_RET add (1) RETURN_REG<1>:ud ip:ud 32:ud
-#define RETURN mov (1) ip:ud RETURN_REG<0,1,0>:ud
-
-/*
- * __START
- */
-__INTER_START:
-mov (16) tmp_reg0.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg2.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg4.0<1>:UD 0x0:UD {align1} ;
-mov (16) tmp_reg6.0<1>:UD 0x0:UD {align1} ;
-
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-mov (1) read0_header.8<1>:UD BLOCK_32X1 {align1};
-mov (1) read0_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-mov (1) read1_header.8<1>:UD BLOCK_4X16 {align1};
-mov (1) read1_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) vme_m0.8<1>:UW orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-mov (1) vme_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-mul (1) obw_m0.8<1>:UD w_in_mb_uw<0,1,0>:UW orig_y_ub<0,1,0>:UB {align1};
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD orig_x_ub<0,1,0>:UB {align1};
-mul (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD INTER_VME_OUTPUT_IN_OWS:UD {align1};
-mov (1) obw_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/*
- * Media Read Message -- fetch Luma neighbor edge pixels
- */
-/* ROW */
-mov (8) msg_reg0.0<1>:UD read0_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_ROW<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* COL */
-mov (8) msg_reg0.0<1>:UD read1_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_COL0<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 2 {align1};
-
-mov (8) mb_mvp_ref.0<1>:ud 0:ud {align1};
-mov (8) mb_ref_win.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw mb_hwdep<0,1,0>:uw 0x04:uw {align1};
-(f0.0) jmpi (1) __mb_hwdep_end;
-/* read back the data for MB A */
-/* the layout of MB result is: rx.0(Available). rx.4(MVa), rX.8(MVb), rX.16(Pred_L0 flag),
-* rX.18 (Pred_L1 flag), rX.20(Forward reference ID), rX.22(Backwared reference ID)
-*/
-mov (8) mba_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbb_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbc_result.0<1>:ud 0x0:ud {align1};
-mba_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_AE:uw {align1};
-/* MB A doesn't exist. Zero MV. mba_flag is zero and ref ID = -1 */
-(f0.0) mov (2) mba_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbb_start;
-mov (1) mba_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_IN_OWS:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-mov (1) mb_msg_tmp.8<1>:ud mb_msg0.8<0,1,0>:ud {align1};
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_MV_IN_OWS:UD {align1};
-/* bind index 3, read 1 oword (16bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_0,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-and.z.f0.0 (1) null<1>:ud mb_mode_wb.0<0,1,0>:ud INTRAMBFLAG_MASK:ud {align1} ;
-(-f0.0) mov (2) mba_result.20<1>:w -1:w {align1};
-(-f0.0) jmpi (1) mbb_start;
-
-mov (1) mb_msg0.8<1>:UD mb_msg_tmp.8<0,1,0>:ud {align1};
-/* Read MV for MB A */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-/* MV */
-mov (2) mba_result.4<1>:ud mb_mv1.8<2,2,1>:ud {align1};
-mov (1) mba_result.16<1>:w MB_PRED_FLAG {align1};
-
-mbb_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_B:uw {align1};
-/* MB B doesn't exist. Zero MV. mba_flag is zero */
-/* If MB B doesn't exist, neither MB C nor D exists */
-(f0.0) mov (2) mbb_result.20<1>:w -1:w {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (1) mbb_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_IN_OWS:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-mov (1) mb_msg_tmp.8<1>:ud mb_msg0.8<0,1,0>:ud {align1};
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_MV_IN_OWS:UD {align1};
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_0,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-and.z.f0.0 (1) null<1>:ud mb_mode_wb.0<0,1,0>:ud INTRAMBFLAG_MASK:ud {align1} ;
-(-f0.0) mov (2) mbb_result.20<1>:w -1:w {align1};
-(-f0.0) jmpi (1) mbc_start;
-
-mov (1) mb_msg0.8<1>:UD mb_msg_tmp.8<0,1,0>:ud {align1};
-/* Read MV for MB B */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-mov (2) mbb_result.4<1>:ud mb_mv2.16<2,2,1>:ud {align1};
-mov (1) mbb_result.16<1>:w MB_PRED_FLAG {align1};
-
-mbc_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_C:uw {align1};
-/* MB C doesn't exist. Zero MV. mba_flag is zero */
-/* Based on h264 spec the MB D will be replaced if MB C doesn't exist */
-(f0.0) jmpi (1) mbd_start;
-mov (1) mbc_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_IN_OWS:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-mov (1) mb_msg_tmp.8<1>:ud mb_msg0.8<0,1,0>:ud {align1};
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_MV_IN_OWS:UD {align1};
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_0,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-and.z.f0.0 (1) null<1>:ud mb_mode_wb.0<0,1,0>:ud INTRAMBFLAG_MASK:ud {align1} ;
-(-f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(-f0.0) jmpi (1) mb_mvp_start;
-mov (1) mb_msg0.8<1>:UD mb_msg_tmp.8<0,1,0>:ud {align1};
-/* Read MV for MB C */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-/* Forward MV */
-mov (2) mbc_result.4<1>:ud mb_mv2.16<2,2,1>:ud {align1};
-mov (1) mbc_result.16<1>:w MB_PRED_FLAG {align1};
-
-jmpi (1) mb_mvp_start;
-mbd_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_D:uw {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (1) mbc_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (2) tmp_reg0.0<1>:w tmp_reg0.0<2,2,1>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_IN_OWS:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-mov (1) mb_msg_tmp.8<1>:ud mb_msg0.8<0,1,0>:ud {align1};
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_MV_IN_OWS:UD {align1};
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_0,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-and.z.f0.0 (1) null<1>:ud mb_mode_wb.0<0,1,0>:ud INTRAMBFLAG_MASK:ud {align1} ;
-(-f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(-f0.0) jmpi (1) mb_mvp_start;
-
-mov (1) mb_msg0.8<1>:UD mb_msg_tmp.8<0,1,0>:ud {align1};
-/* Read MV for MB D */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ub
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-
-/* Forward MV */
-mov (2) mbc_result.4<1>:ud mb_mv3.24<2,2,1>:ud {align1};
-mov (1) mbc_result.16<1>:w MB_PRED_FLAG {align1};
-
-mb_mvp_start:
-/*TODO: Add the skip prediction */
-/* Check whether both MB B and C are invailable */
-add (1) tmp_reg0.0<1>:d mbb_result.0<0,1,0>:d mbc_result.0<0,1,0>:d {align1};
-cmp.z.f0.0 (1) null:d tmp_reg0.0<0,1,0>:d 0:d {align1};
-(-f0.0) jmpi (1) mb_median_start;
-cmp.nz.f0.0 (1) null:d mba_result.0<0,1,0>:d 0:d {align1};
-(f0.0) mov (1) mbb_result.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-(f0.0) mov (1) mbc_result.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-(f0.0) mov (1) mbb_result.20<1>:uw mba_result.20<0,1,0>:uw {align1};
-(f0.0) mov (1) mbc_result.20<1>:uw mba_result.20<0,1,0>:uw {align1};
-(f0.0) mov (1) mb_mvp_ref.0<1>:ud mba_result.4<0,1,0>:ud {align1};
-(-f0.0) mov (1) mb_mvp_ref.0<1>:ud 0:ud {align1};
-jmpi (1) __mb_hwdep_end;
-
-mb_median_start:
-/* check whether only one neighbour MB has the same ref ID with the current MB */
-mov (8) tmp_reg0.0<1>:ud 0:ud {align1};
-cmp.z.f0.0 (1) null:d mba_result.20<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbb_result.20<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbb_result.4<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbc_result.20<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbc_result.4<0,1,0>:ud {align1};
-cmp.e.f0.0 (1) null:d tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) mb_mvp_ref.0<1>:ud tmp_reg0.4<0,1,0>:ud {align1};
-(f0.0) jmpi (1) __mb_hwdep_end;
-
-mov (1) INPUT_ARG0.0<1>:w mba_result.4<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.4<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.4<0,1,0>:w {align1};
-SAVE_RET {align1};
- jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.0<1>:w RET_ARG<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.0<1>:w mba_result.6<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.6<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.6<0,1,0>:w {align1};
-SAVE_RET {align1};
-jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.2<1>:w RET_ARG<0,1,0>:w {align1};
-
-__mb_hwdep_end:
-asr (2) mb_ref_win.0<1>:w mb_mvp_ref.0<2,2,1>:w 2:w {align1};
-add (2) mb_ref_win.8<1>:w mb_ref_win.0<2,2,1>:w 3:w {align1};
-and (2) mb_ref_win.16<1>:uw mb_ref_win.8<2,2,1>:uw 0xFFFC:uw {align1};
-
-/* m2 */
-mov (8) vme_msg_2<1>:UD 0x0:UD {align1};
-
-/* m3 */
-mov (1) INEP_ROW.0<1>:UD 0x0:UD {align1};
-and (1) INEP_ROW.4<1>:UD INEP_ROW.4<0,1,0>:UD 0xFF000000:UD {align1};
-mov (8) vme_msg_3<1>:UD INEP_ROW.0<8,8,1>:UD {align1};
-
-/* m4 */
-mov (8) vme_msg_4<1>:UD 0x0 {align1};
-mov (16) vme_msg_4.0<1>:UB INEP_COL0.3<32,8,4>:UB {align1};
-mov (1) vme_msg_4.16<1>:UD INTRA_PREDICTORE_MODE {align1};
-
-
-/* m1 */
-mov (8) vme_m1.0<1>:ud 0x0:ud {align1};
-and.z.f0.0 (1) null<1>:UW transform_8x8_ub<0,1,0>:UB 1:UW {align1};
-(f0.0) mov (1) intra_part_mask_ub<1>:UB LUMA_INTRA_8x8_DISABLE:uw {align1};
-
-/* assign MB intra struct from the thread payload*/
-mov (1) mb_intra_struct_ub<1>:UB input_mb_intra_ub<0,1,0>:UB {align1};
-
-
-/* M0 */
-/* IME search */
-cmp.z.f0.0 (1) null<1>:uw quality_level_ub<0,1,0>:ub LOW_QUALITY_LEVEL:uw {align1};
-(f0.0) jmpi (1) __low_quality_search;
-
-__high_quality_search:
-mov (1) vme_m0.12<1>:UD SEARCH_CTRL_SINGLE + INTER_PART_MASK + INTER_SAD_HAAR + SUB_PEL_MODE_QUARTER:UD {align1};
-/* 16x16 Source, 1/4 pixel, harr */
-mov (1) vme_m0.22<1>:UW REF_REGION_SIZE {align1}; /* Reference Width&Height, 48x40 */
-
-mov (1) vme_m0.0<1>:W -16:W {align1};
-mov (1) vme_m0.2<1>:W -12:W {align1};
-
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_AE:uw {align1};
-(f0.0) add (1) vme_m0.0<1>:w vme_m0.0<0,1,0>:w 12:w {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_B:uw {align1};
-(f0.0) add (1) vme_m0.2<1>:w vme_m0.2<0,1,0>:w 8:w {align1};
-
-jmpi __vme_msg;
-
-__low_quality_search:
-mov (1) vme_m0.12<1>:UD SEARCH_CTRL_SINGLE + INTER_PART_MASK + INTER_SAD_HAAR + SUB_PEL_MODE_HALF:UD {align1};
-/* 16x16 Source, 1/2 pixel, harr */
-mov (1) vme_m0.22<1>:UW MIN_REF_REGION_SIZE {align1}; /* Reference Width&Height, 32x32 */
-
-mov (1) vme_m0.0<1>:W -8:W {align1};
-mov (1) vme_m0.2<1>:W -8:W {align1};
-
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_AE:uw {align1};
-(f0.0) add (1) vme_m0.0<1>:w vme_m0.0<0,1,0>:w 4:w {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_B:uw {align1};
-(f0.0) add (1) vme_m0.2<1>:w vme_m0.2<0,1,0>:w 4:w {align1};
-
-__vme_msg:
-mov (1) vme_m0.4<1>:UD vme_m0.0<0,1,0>:UD {align1};
-add (2) vme_m0.0<1>:w vme_m0.0<2,2,1>:w mb_ref_win.16<2,2,1>:w {align1};
-add (2) vme_m0.4<1>:w vme_m0.4<2,2,1>:w mb_ref_win.16<2,2,1>:w {align1};
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-/* m1 */
-
-mov (1) vme_m1.0<1>:UD ADAPTIVE_SEARCH_ENABLE:ud {align1} ;
-/* MV num is passed by constant buffer. R4.28 */
-mov (1) vme_m1.4<1>:UB r4.28<0,1,0>:UB {align1};
-add (1) vme_m1.4<1>:UD vme_m1.4<0,1,0>:UD FB_PRUNING_DISABLE:UD {align1};
-mov (1) vme_m1.8<1>:UD START_CENTER + SEARCH_PATH_LEN:UD {align1};
-
-/* Set the MV cost center */
-mov (1) vme_m1.16<1>:ud mb_mvp_ref.0<0,1,0>:ud {align1};
-mov (1) vme_m1.20<1>:ud mb_mvp_ref.0<0,1,0>:ud {align1};
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-mov (1) tmp_reg0.0<1>:ud qp_ub<0,1,0>:ub {align1};
-/* lut_subindex */
-and (1) tmp_reg1.0<1>:ud tmp_reg0.0<0,1,0>:ud 0x06:ud {align1};
-shl (1) tmp_reg0.4<1>:ud tmp_reg1.0<0,1,0>:ud 10:ud {align1};
-
-/* lut_index */
-and (1) tmp_reg1.0<1>:ud tmp_reg0.0<0,1,0>:ud 0x038:ud {align1};
-shl (1) tmp_reg1.4<1>:ud tmp_reg1.0<0,1,0>:ud 5:ud {align1};
-
-add (1) tmp_reg0.0<1>:ud tmp_reg0.4<0,1,0>:ud tmp_reg1.4<0,1,0>:ud {align1};
-/* Use one register as the descriptor of send instruction */
-
-add (1) a0.0<1>:ud tmp_reg0.0<0,1,0>:ud 0x0a686000:ud {align1};
-send (1) vme_wb.0<1>:ud vme_msg_0 0x08 a0.0<0,1,0>:ud {align1};
-
-and.z.f0.0 (1) null<1>:ud vme_wb0.0<0,1,0>:ud INTRAMBFLAG_MASK:ud {align1} ;
-
-(-f0.0)jmpi (1) __INTRA_INFO ;
-
-__INTER_INFO:
-/* Write MV pairs */
-mov (8) msg_reg0.0<1>:UD obw_m0.0<8,8,1>:UD {align1};
-
-mov (8) msg_reg1.0<1>:UD vme_wb1.0<8,8,1>:UD {align1};
-
-mov (8) msg_reg2.0<1>:UD vme_wb2.0<8,8,1>:UD {align1};
-
-mov (8) msg_reg3.0<1>:UD vme_wb3.0<8,8,1>:UD {align1};
-
-mov (8) msg_reg4.0<1>:UD vme_wb4.0<8,8,1>:UD {align1};
-/* bind index 3, write 8 oword (128 bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_8,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 5
- rlen obw_wb_length
- {align1};
-
-mov (1) tmp_uw1<1>:uw 0:uw {align1} ;
-mov (1) tmp_ud1<1>:ud 0:ud {align1} ;
-and (1) tmp_uw1<1>:uw vme_wb0.2<0,1,0>:uw MV32_BIT_MASK:uw {align1} ;
-shr (1) tmp_uw1<1>:uw tmp_uw1<1>:uw MV32_BIT_SHIFT:uw {align1} ;
-mul (1) tmp_ud1<1>:ud tmp_uw1<0,1,0>:uw 96:uw {align1} ;
-add (1) tmp_ud1<1>:ud tmp_ud1<0,1,0>:ud 32:uw {align1} ;
-shl (1) tmp_uw1<1>:uw tmp_uw1<0,1,0>:uw MFC_MV32_BIT_SHIFT:uw {align1} ;
-add (1) tmp_uw1<1>:uw tmp_uw1<0,1,0>:uw MVSIZE_UW_BASE:uw {align1} ;
-add (1) tmp_uw1<1>:uw tmp_uw1<0,1,0>:uw CBP_DC_YUV_UW:uw {align1} ;
-
-mov (1) msg_reg1.0<1>:uw vme_wb0.0<0,1,0>:uw {align1} ;
-mov (1) msg_reg1.2<1>:uw tmp_uw1<0,1,0>:uw {align1} ;
-mov (1) msg_reg1.4<1>:UD vme_wb0.28<0,1,0>:UD {align1};
-mov (1) msg_reg1.8<1>:ud tmp_ud1<0,1,0>:ud {align1} ;
-mov (1) msg_reg1.12<1>:ud vme_wb0.0<0,1,0>:ud {align1} ;
-mov (1) msg_reg1.16<1>:ud 0x25:ud {align1} ;
-jmpi (1) __OUTPUT_INFO;
-
-__INTRA_INFO:
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-mov (1) msg_reg1.4<1>:UD vme_wb.16<0,1,0>:UD {align1};
-mov (1) msg_reg1.8<1>:UD vme_wb.20<0,1,0>:UD {align1};
-mov (1) msg_reg1.12<1>:UD vme_wb.24<0,1,0>:UD {align1};
-mov (1) msg_reg1.16<1>:ud 0x35:ud {align1} ;
-
-__OUTPUT_INFO:
-
-mov (1) msg_reg1.20<1>:ud obw_m0.8<0,1,0>:ud {align1};
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD INTER_VME_OUTPUT_MV_IN_OWS:UD {align1};
-mov (8) msg_reg0.0<1>:ud obw_m0.0<8,8,1>:ud {align1};
-
-
-/* bind index 3, write 1 oword, msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-/* Issue message fence so that the previous write message is committed */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_FENCE,
- OBR_MF_COMMIT,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-__EXIT:
-/*
- * kill thread
- */
-mov (8) ts_msg_reg0<1>:UD r0<8,8,1>:UD {align1};
-send (16) ts_msg_ind acc0<1>UW null thread_spawner(0, 0, 1) mlen 1 rlen 0 {align1 EOT};
-
-
- nop ;
- nop ;
-/* Compare three word data to get the min value */
-word_imin:
- cmp.le.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- cmp.le.f0.0 (1) null:w TEMP_VAR0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w TEMP_VAR0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- RETURN {align1};
-
-/* Compare three word data to get the max value */
-word_imax:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- cmp.ge.f0.0 (1) null:w TEMP_VAR0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w TEMP_VAR0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- RETURN {align1};
-
-word_imedian:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_a_ge_b;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_end;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- jmpi (1) cmp_end;
-cmp_a_ge_b:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_end;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
-cmp_end:
- RETURN {align1};
-
diff --git a/src/shaders/vme/inter_frame_ivb.g7a b/src/shaders/vme/inter_frame_ivb.g7a
deleted file mode 100644
index 77293ee..0000000
--- a/src/shaders/vme/inter_frame_ivb.g7a
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "vme7.inc"
-#include "inter_frame_ivb.asm"
diff --git a/src/shaders/vme/inter_frame_ivb.g7b b/src/shaders/vme/inter_frame_ivb.g7b
deleted file mode 100644
index 9f0dfae..0000000
--- a/src/shaders/vme/inter_frame_ivb.g7b
+++ /dev/null
@@ -1,271 +0,0 @@
- { 0x00800001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24002e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24003ca5, 0x00000400, 0xfff8fff8 },
- { 0x00000040, 0x24043ca5, 0x00000404, 0xffffffff },
- { 0x00000001, 0x240800e1, 0x00000000, 0x0000001f },
- { 0x00000001, 0x24140231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24202e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24203ca5, 0x00000420, 0xfffcfffc },
- { 0x00000001, 0x242800e1, 0x00000000, 0x000f0003 },
- { 0x00000001, 0x24340231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24482e29, 0x004500a0, 0x00040004 },
- { 0x00000001, 0x24540231, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24884521, 0x000000a2, 0x000000a1 },
- { 0x00000040, 0x24884421, 0x00000488, 0x000000a0 },
- { 0x00000041, 0x24880c21, 0x00000488, 0x0000000a },
- { 0x00000001, 0x24940231, 0x00000014, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x23801cb1, 0x00000800, 0x02190004 },
- { 0x00600001, 0x28000021, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x23a01cb1, 0x00000800, 0x02290004 },
- { 0x00600001, 0x2ac00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2a800061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002d28, 0x000000a6, 0x00040004 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000f8 },
- { 0x00600001, 0x2ae00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b200061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00600060 },
- { 0x00210001, 0x2af401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x00000001, 0x2ae000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24003dad, 0x00000400, 0xffffffff },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x0000000a },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x2b680021, 0x00000b48, 0x00000000 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000008 },
- { 0x0a800031, 0x2b801ca1, 0x00000b40, 0x02180003 },
- { 0x01000005, 0x20000c20, 0x00000b80, 0x00002000 },
- { 0x00310001, 0x2af401ed, 0x00000000, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000008 },
- { 0x00000001, 0x2b480021, 0x00000b68, 0x00000000 },
- { 0x0a800031, 0x2ba01ca1, 0x00000b40, 0x02480403 },
- { 0x00200001, 0x2ae40021, 0x00450bc8, 0x00000000 },
- { 0x00000001, 0x2af001ed, 0x00000000, 0x00010001 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00100010 },
- { 0x00210001, 0x2b1401ed, 0x00000000, 0xffffffff },
- { 0x00210001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000076 },
- { 0x00000001, 0x2b0000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24023dad, 0x00000402, 0xffffffff },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x0000000a },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x2b680021, 0x00000b48, 0x00000000 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000008 },
- { 0x0a800031, 0x2b801ca1, 0x00000b40, 0x02180003 },
- { 0x01000005, 0x20000c20, 0x00000b80, 0x00002000 },
- { 0x00310001, 0x2b1401ed, 0x00000000, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000008 },
- { 0x00000001, 0x2b480021, 0x00000b68, 0x00000000 },
- { 0x0a800031, 0x2ba01ca1, 0x00000b40, 0x02480403 },
- { 0x00200001, 0x2b040021, 0x00450bf0, 0x00000000 },
- { 0x00000001, 0x2b1001ed, 0x00000000, 0x00010001 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00080008 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000026 },
- { 0x00000001, 0x2b2000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24023dad, 0x00000402, 0xffffffff },
- { 0x00000040, 0x24003dad, 0x00000400, 0x00010001 },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x0000000a },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x2b680021, 0x00000b48, 0x00000000 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000008 },
- { 0x0a800031, 0x2b801ca1, 0x00000b40, 0x02180003 },
- { 0x01000005, 0x20000c20, 0x00000b80, 0x00002000 },
- { 0x00310001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000032 },
- { 0x00000001, 0x2b480021, 0x00000b68, 0x00000000 },
- { 0x0a800031, 0x2ba01ca1, 0x00000b40, 0x02480403 },
- { 0x00200001, 0x2b240021, 0x00450bf0, 0x00000000 },
- { 0x00000001, 0x2b3001ed, 0x00000000, 0x00010001 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00040004 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x00000001, 0x2b2000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00200040, 0x24003dad, 0x00450400, 0xffffffff },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x0000000a },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x2b680021, 0x00000b48, 0x00000000 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000008 },
- { 0x0a800031, 0x2b801ca1, 0x00000b40, 0x02180003 },
- { 0x01000005, 0x20000c20, 0x00000b80, 0x00002000 },
- { 0x00310001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000008 },
- { 0x00000001, 0x2b480021, 0x00000b68, 0x00000000 },
- { 0x0a800031, 0x2ba01cb1, 0x00000b40, 0x02480403 },
- { 0x00200001, 0x2b240021, 0x00450c18, 0x00000000 },
- { 0x00000001, 0x2b3001ed, 0x00000000, 0x00010001 },
- { 0x00000040, 0x240014a5, 0x00000b00, 0x00000b20 },
- { 0x01000010, 0x20001ca4, 0x00000400, 0x00000000 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x02000010, 0x20001ca4, 0x00000ae0, 0x00000000 },
- { 0x00010001, 0x2b040021, 0x00000ae4, 0x00000000 },
- { 0x00010001, 0x2b240021, 0x00000ae4, 0x00000000 },
- { 0x00010001, 0x2b140129, 0x00000af4, 0x00000000 },
- { 0x00010001, 0x2b340129, 0x00000af4, 0x00000000 },
- { 0x00010001, 0x2ac00021, 0x00000ae4, 0x00000000 },
- { 0x00110001, 0x2ac00061, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200af4, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000ae4, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200b14, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000b04, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200b34, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000b24, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200400, 0x00010001 },
- { 0x00010001, 0x2ac00021, 0x00000404, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
- { 0x00000001, 0x2fa001ad, 0x00000ae4, 0x00000000 },
- { 0x00000001, 0x2fa401ad, 0x00000b04, 0x00000000 },
- { 0x00000001, 0x2fa801ad, 0x00000b24, 0x00000000 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000de },
- { 0x00000001, 0x2ac001ad, 0x00000fe4, 0x00000000 },
- { 0x00000001, 0x2fa001ad, 0x00000ae6, 0x00000000 },
- { 0x00000001, 0x2fa401ad, 0x00000b06, 0x00000000 },
- { 0x00000001, 0x2fa801ad, 0x00000b26, 0x00000000 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000000d2 },
- { 0x00000001, 0x2ac201ad, 0x00000fe4, 0x00000000 },
- { 0x0020000c, 0x2a803dad, 0x00450ac0, 0x00020002 },
- { 0x00200040, 0x2a883dad, 0x00450a80, 0x00030003 },
- { 0x00200005, 0x2a902d29, 0x00450a88, 0xfffcfffc },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23800061, 0x00000000, 0x00000000 },
- { 0x00000005, 0x23840c21, 0x00000384, 0xff000000 },
- { 0x00600001, 0x28600021, 0x008d0380, 0x00000000 },
- { 0x00600001, 0x288000e1, 0x00000000, 0x00000000 },
- { 0x00800001, 0x28800231, 0x00cf03a3, 0x00000000 },
- { 0x00000001, 0x28900061, 0x00000000, 0x11111111 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a4, 0x00010001 },
- { 0x00010001, 0x247c0171, 0x00000000, 0x00020002 },
- { 0x00000001, 0x247d0231, 0x000000a5, 0x00000000 },
- { 0x01000010, 0x20002e28, 0x000000a7, 0x00020002 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000012 },
- { 0x00000001, 0x244c0061, 0x00000000, 0x00203000 },
- { 0x00000001, 0x24560169, 0x00000000, 0x28302830 },
- { 0x00000001, 0x244001ed, 0x00000000, 0xfff0fff0 },
- { 0x00000001, 0x244201ed, 0x00000000, 0xfff4fff4 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00600060 },
- { 0x00010040, 0x24403dad, 0x00000440, 0x000c000c },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00100010 },
- { 0x00010040, 0x24423dad, 0x00000442, 0x00080008 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000001, 0x244c0061, 0x00000000, 0x00201000 },
- { 0x00000001, 0x24560169, 0x00000000, 0x20202020 },
- { 0x00000001, 0x244001ed, 0x00000000, 0xfff8fff8 },
- { 0x00000001, 0x244201ed, 0x00000000, 0xfff8fff8 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00600060 },
- { 0x00010040, 0x24403dad, 0x00000440, 0x00040004 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00100010 },
- { 0x00010040, 0x24423dad, 0x00000442, 0x00040004 },
- { 0x00000001, 0x24440021, 0x00000440, 0x00000000 },
- { 0x00200040, 0x244035ad, 0x00450440, 0x00450a90 },
- { 0x00200040, 0x244435ad, 0x00450444, 0x00450a90 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00000002 },
- { 0x00000001, 0x24640231, 0x0000009c, 0x00000000 },
- { 0x00000040, 0x24640c21, 0x00000464, 0x00000000 },
- { 0x00000001, 0x24680061, 0x00000000, 0x30003030 },
- { 0x00000001, 0x24700021, 0x00000ac0, 0x00000000 },
- { 0x00000001, 0x24740021, 0x00000ac0, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x00000001, 0x24000221, 0x000000a8, 0x00000000 },
- { 0x00000005, 0x24200c21, 0x00000400, 0x00000006 },
- { 0x00000009, 0x24040c21, 0x00000420, 0x0000000a },
- { 0x00000005, 0x24200c21, 0x00000400, 0x00000038 },
- { 0x00000009, 0x24240c21, 0x00000420, 0x00000005 },
- { 0x00000040, 0x24000421, 0x00000404, 0x00000424 },
- { 0x00000040, 0x22000c20, 0x00000400, 0x0a686000 },
- { 0x08000031, 0x21800221, 0x00000800, 0x00000200 },
- { 0x01000005, 0x20000c20, 0x00000180, 0x00002000 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x0000002c },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28600021, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28800021, 0x008d0200, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x0a0a0403 },
- { 0x00000001, 0x25420169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25440061, 0x00000000, 0x00000000 },
- { 0x00000005, 0x25422d29, 0x00000182, 0x00200020 },
- { 0x00000008, 0x25422d29, 0x00200542, 0x00050005 },
- { 0x00000041, 0x25442d21, 0x00000542, 0x00600060 },
- { 0x00000040, 0x25442c21, 0x00000544, 0x00200020 },
- { 0x00000009, 0x25422d29, 0x00000542, 0x00050005 },
- { 0x00000040, 0x25422d29, 0x00000542, 0x00400040 },
- { 0x00000040, 0x25422d29, 0x00000542, 0x000e000e },
- { 0x00000001, 0x28200129, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28220129, 0x00000542, 0x00000000 },
- { 0x00000001, 0x28240021, 0x0000019c, 0x00000000 },
- { 0x00000001, 0x28280021, 0x00000544, 0x00000000 },
- { 0x00000001, 0x282c0021, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28300061, 0x00000000, 0x00000025 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x00000001, 0x28200021, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240021, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280021, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0021, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28300061, 0x00000000, 0x00000035 },
- { 0x00000001, 0x28340021, 0x00000488, 0x00000000 },
- { 0x00000040, 0x24880c21, 0x00000488, 0x00000008 },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0203 },
- { 0x0a800031, 0x2b801ca1, 0x00000b40, 0x0219e003 },
- { 0x00600001, 0x2e000021, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24001ca8, 0x00000e00, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x06000010, 0x200035ac, 0x00000fa0, 0x00000fa4 },
- { 0x00010001, 0x2f6001ad, 0x00000fa0, 0x00000000 },
- { 0x00110001, 0x2f6001ad, 0x00000fa4, 0x00000000 },
- { 0x06000010, 0x200035ac, 0x00000f60, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000f60, 0x00000000 },
- { 0x00110001, 0x2fe401ad, 0x00000fa8, 0x00000000 },
- { 0x00000001, 0x34000020, 0x00000fe0, 0x00000000 },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa4 },
- { 0x00010001, 0x2f6001ad, 0x00000fa0, 0x00000000 },
- { 0x00110001, 0x2f6001ad, 0x00000fa4, 0x00000000 },
- { 0x04000010, 0x200035ac, 0x00000f60, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000f60, 0x00000000 },
- { 0x00110001, 0x2fe401ad, 0x00000fa8, 0x00000000 },
- { 0x00000001, 0x34000020, 0x00000fe0, 0x00000000 },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa4 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa0, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x04000010, 0x200035ac, 0x00000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe401ad, 0x00000fa4, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x04000010, 0x200035ac, 0x00000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa4, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe401ad, 0x00000fa0, 0x00000000 },
- { 0x00000001, 0x34000020, 0x00000fe0, 0x00000000 },
diff --git a/src/shaders/vme/intra_frame.asm b/src/shaders/vme/intra_frame.asm
deleted file mode 100644
index a833623..0000000
--- a/src/shaders/vme/intra_frame.asm
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-// Modual name: IntraFrame.asm
-//
-// Make intra predition estimation for Intra frame
-//
-
-//
-// Now, begin source code....
-//
-
-/*
- * __START
- */
-__INTRA_START:
-mov (16) tmp_reg0.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg2.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg4.0<1>:UD 0x0:UD {align1} ;
-
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-mov (1) read0_header.8<1>:UD BLOCK_32X1 {align1};
-mov (1) read0_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-mov (1) read1_header.8<1>:UD BLOCK_4X16 {align1};
-mov (1) read1_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) vme_m0.8<1>:UW orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-mov (1) vme_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-mul (1) obw_m0.8<1>:UD w_in_mb_uw<0,1,0>:UW orig_y_ub<0,1,0>:UB {align1};
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD orig_x_ub<0,1,0>:UB {align1};
-mov (1) obw_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/*
- * Media Read Message -- fetch neighbor edge pixels
- */
-/* ROW */
-__INTRA_LOOP:
-mov (8) msg_reg0.0<1>:UD read0_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_ROW<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* COL */
-mov (8) msg_reg0.0<1>:UD read1_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_COL0<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 2 {align1};
-
-/*
- * VME message
- */
-/* m0 */
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-/* m1 */
-mov (1) intra_flag<1>:UW 0x0:UW {align1} ;
-and.z.f0.0 (1) null<1>:UW transform_8x8_ub<0,1,0>:UB 1:UW {align1};
-(f0.0) mov (1) intra_part_mask_ub<1>:UB LUMA_INTRA_8x8_DISABLE {align1};
-
-cmp.nz.f0.0 (1) null<1>:UW orig_x_ub<0,1,0>:UB 0:UW {align1}; /* X != 0 */
-(f0.0) add (1) mb_intra_struct_ub<1>:UB mb_intra_struct_ub<0,1,0>:UB INTRA_PRED_AVAIL_FLAG_AE {align1}; /* A */
-
-cmp.nz.f0.0 (1) null<1>:UW orig_y_ub<0,1,0>:UB 0:UW {align1}; /* Y != 0 */
-(f0.0) add (1) mb_intra_struct_ub<1>:UB mb_intra_struct_ub<0,1,0>:UB INTRA_PRED_AVAIL_FLAG_B {align1}; /* B */
-
-mul.nz.f0.0 (1) null<1>:UW orig_x_ub<0,1,0>:UB orig_y_ub<0,1,0>:UB {align1}; /* X * Y != 0 */
-(f0.0) add (1) mb_intra_struct_ub<1>:UB mb_intra_struct_ub<0,1,0>:UB INTRA_PRED_AVAIL_FLAG_D {align1}; /* D */
-
-add (1) tmp_x_w<1>:W orig_x_ub<0,1,0>:UB 1:UW {align1}; /* X + 1 */
-add (1) tmp_x_w<1>:W w_in_mb_uw<0,1,0>:UW -tmp_x_w<0,1,0>:W {align1}; /* width - (X + 1) */
-mul.nz.f0.0 (1) null<1>:UD tmp_x_w<0,1,0>:W orig_y_ub<0,1,0>:UB {align1}; /* (width - (X + 1)) * Y != 0 */
-(f0.0) add (1) mb_intra_struct_ub<1>:UB mb_intra_struct_ub<0,1,0>:UB INTRA_PRED_AVAIL_FLAG_C {align1}; /* C */
-
-and.nz.f0.0 (1) null<1>:UW slice_edge_ub<0,1,0>:UB 2:UW {align1};
-(f0.0) and (1) mb_intra_struct_ub<1>:UB mb_intra_struct_ub<0,1,0>:UB 0xE0 {align1}; /* slice edge disable B,C,D*/
-
-
-mov (8) vme_msg_1<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-/* m2 */
-mov (8) vme_msg_2<1>:UD 0x0:UD {align1};
-
-/* m3 */
-mov (1) INEP_ROW.0<1>:UD 0x0:UD {align1};
-and (1) INEP_ROW.4<1>:UD INEP_ROW.4<0,1,0>:UD 0xFF000000:UD {align1};
-mov (8) vme_msg_3<1>:UD INEP_ROW.0<8,8,1>:UD {align1};
-
-/* m4 */
-mov (8) vme_msg_4<1>:UD 0x0 {align1};
-mov (16) vme_msg_4.0<1>:UB INEP_COL0.3<32,8,4>:UB {align1};
-mov (1) vme_msg_4.16<1>:UD INTRA_PREDICTORE_MODE {align1};
-
-send (8)
- vme_msg_ind
- vme_wb
- null
- vme(
- BIND_IDX_VME,
- 0,
- 0,
- VME_MESSAGE_TYPE_INTRA
- )
- mlen vme_msg_length
- rlen vme_intra_wb_length
- {align1};
-
-/*
- * Oword Block Write message
- */
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-mov (1) msg_reg1.4<1>:UD vme_wb.16<0,1,0>:UD {align1};
-mov (1) msg_reg1.8<1>:UD vme_wb.20<0,1,0>:UD {align1};
-mov (1) msg_reg1.12<1>:UD vme_wb.24<0,1,0>:UD {align1};
-/* bind index 3, write 1 oword, msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_0,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D 16:W {align1}; /* X offset: X += 16 */
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D 16:W {align1}; /* X offset: X += 16 */
-add (1) vme_m0.8<1>:UW vme_m0.8<0,1,0>:UW 16:UW {align1}; /* Y = Y, X += 16 */
-
-add (1) orig_x_ub<1>:ub orig_x_ub<0,1,0>:ub 1:uw {align1} ;
-cmp.e.f0.0 (1) null<1>:uw w_in_mb_uw<0,1,0>:uw orig_x_ub<0,1,0>:ub {align1};
-(f0.0)mov (1) orig_x_ub<1>:ub 0:uw {align1} ;
-(f0.0)add (1) orig_y_ub<1>:ub orig_y_ub<0,1,0>:ub 1:uw {align1} ;
-(f0.0)mov (1) read0_header.0<1>:D -8:W {align1}; /* X offset */
-(f0.0)add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D 16:W {align1}; /* Y offset */
-(f0.0)mov (1) read1_header.0<1>:D -4:W {align1}; /* X offset */
-(f0.0)add (1) read1_header.4<1>:D read1_header.4<0,1,0>:D 16:W {align1}; /* Y offset */
-/* X = 0, Y += 16 */
-(f0.0)mov (1) vme_m0.8<1>:UW 0:UW {align1};
-(f0.0)add (1) vme_m0.10<1>:UW vme_m0.10<0,1,0>:UW 16:UW {align1};
-
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 1:uw {align1}; /* the new offset */
-
-add.z.f0.0 (1) num_macroblocks<1>:w num_macroblocks<0,1,0>:w -1:w {align1} ;
-(-f0.0)jmpi (1) __INTRA_LOOP ;
-
-__EXIT:
-/*
- * kill thread
- */
-mov (8) msg_reg0<1>:UD r0<8,8,1>:UD {align1};
-send (16) msg_ind acc0<1>UW null thread_spawner(0, 0, 1) mlen 1 rlen 0 {align1 EOT};
diff --git a/src/shaders/vme/intra_frame.g6a b/src/shaders/vme/intra_frame.g6a
deleted file mode 100644
index 10c4f98..0000000
--- a/src/shaders/vme/intra_frame.g6a
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "vme.inc"
-#include "intra_frame.asm"
-
diff --git a/src/shaders/vme/intra_frame.g6b b/src/shaders/vme/intra_frame.g6b
deleted file mode 100644
index 9edfef7..0000000
--- a/src/shaders/vme/intra_frame.g6b
+++ /dev/null
@@ -1,70 +0,0 @@
- { 0x00800001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24002e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24003ca5, 0x00000400, 0xfff8fff8 },
- { 0x00000040, 0x24043ca5, 0x00000404, 0xffffffff },
- { 0x00000001, 0x240800e1, 0x00000000, 0x0000001f },
- { 0x00000001, 0x24140231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24202e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24203ca5, 0x00000420, 0xfffcfffc },
- { 0x00000001, 0x242800e1, 0x00000000, 0x000f0003 },
- { 0x00000001, 0x24340231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24482e29, 0x004500a0, 0x00040004 },
- { 0x00000001, 0x24540231, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24884521, 0x000000a2, 0x000000a1 },
- { 0x00000040, 0x24884421, 0x00000488, 0x000000a0 },
- { 0x00000001, 0x24940231, 0x00000014, 0x00000000 },
- { 0x00600001, 0x20000022, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x22401cd1, 0x00000000, 0x02188004 },
- { 0x00600001, 0x20000022, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x22801cd1, 0x00000000, 0x02288004 },
- { 0x00600001, 0x20000022, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x247c0169, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a4, 0x00010001 },
- { 0x00010001, 0x247c00f1, 0x00000000, 0x00000002 },
- { 0x02000010, 0x20002e28, 0x000000a0, 0x00000000 },
- { 0x00010040, 0x247d1e31, 0x0000047d, 0x00000060 },
- { 0x02000010, 0x20002e28, 0x000000a1, 0x00000000 },
- { 0x00010040, 0x247d1e31, 0x0000047d, 0x00000010 },
- { 0x02000041, 0x20004628, 0x000000a0, 0x000000a1 },
- { 0x00010040, 0x247d1e31, 0x0000047d, 0x00000004 },
- { 0x00000040, 0x25202e2d, 0x000000a0, 0x00010001 },
- { 0x00000040, 0x2520352d, 0x000000a2, 0x00004520 },
- { 0x02000041, 0x200045a0, 0x00000520, 0x000000a1 },
- { 0x00010040, 0x247d1e31, 0x0000047d, 0x00000008 },
- { 0x02000005, 0x20002e28, 0x000000a4, 0x00020002 },
- { 0x00010005, 0x247d1e31, 0x0000047d, 0x000000e0 },
- { 0x00600001, 0x20200022, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x20400062, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x00000005, 0x22440c21, 0x00000244, 0xff000000 },
- { 0x00600001, 0x20400022, 0x008d0240, 0x00000000 },
- { 0x00600001, 0x206000e2, 0x00000000, 0x00000000 },
- { 0x00800001, 0x20600232, 0x00cf0283, 0x00000000 },
- { 0x00000001, 0x20700062, 0x00000000, 0x11111111 },
- { 0x08600031, 0x21801cdd, 0x00000000, 0x08184000 },
- { 0x00600001, 0x20000022, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x20200022, 0x00000180, 0x00000000 },
- { 0x00000001, 0x20240022, 0x00000190, 0x00000000 },
- { 0x00000001, 0x20280022, 0x00000194, 0x00000000 },
- { 0x00000001, 0x202c0022, 0x00000198, 0x00000000 },
- { 0x05800031, 0x22001cdd, 0x00000000, 0x041b0003 },
- { 0x00000040, 0x24003ca5, 0x00000400, 0x00100010 },
- { 0x00000040, 0x24203ca5, 0x00000420, 0x00100010 },
- { 0x00000040, 0x24482d29, 0x00000448, 0x00100010 },
- { 0x00000040, 0x20a02e31, 0x000000a0, 0x00010001 },
- { 0x01000010, 0x20004528, 0x000000a2, 0x000000a0 },
- { 0x00010001, 0x20a00171, 0x00000000, 0x00000000 },
- { 0x00010040, 0x20a12e31, 0x000000a1, 0x00010001 },
- { 0x00010001, 0x240001e5, 0x00000000, 0xfff8fff8 },
- { 0x00010040, 0x24043ca5, 0x00000404, 0x00100010 },
- { 0x00010001, 0x242001e5, 0x00000000, 0xfffcfffc },
- { 0x00010040, 0x24243ca5, 0x00000424, 0x00100010 },
- { 0x00010001, 0x24480169, 0x00000000, 0x00000000 },
- { 0x00010040, 0x244a2d29, 0x0000044a, 0x00100010 },
- { 0x00000040, 0x24882c21, 0x00000488, 0x00010001 },
- { 0x01000040, 0x20a63dad, 0x000000a6, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0xffffff9a },
- { 0x00600001, 0x20000022, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24001cc8, 0x00000000, 0x82000010 },
diff --git a/src/shaders/vme/intra_frame.g7a b/src/shaders/vme/intra_frame.g7a
deleted file mode 100644
index 10c4f98..0000000
--- a/src/shaders/vme/intra_frame.g7a
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "vme.inc"
-#include "intra_frame.asm"
-
diff --git a/src/shaders/vme/intra_frame.g7b b/src/shaders/vme/intra_frame.g7b
deleted file mode 100644
index b257784..0000000
--- a/src/shaders/vme/intra_frame.g7b
+++ /dev/null
@@ -1,70 +0,0 @@
- { 0x00800001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24002e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24003ca5, 0x00000400, 0xfff8fff8 },
- { 0x00000040, 0x24043ca5, 0x00000404, 0xffffffff },
- { 0x00000001, 0x240800e1, 0x00000000, 0x0000001f },
- { 0x00000001, 0x24140231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24202e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24203ca5, 0x00000420, 0xfffcfffc },
- { 0x00000001, 0x242800e1, 0x00000000, 0x000f0003 },
- { 0x00000001, 0x24340231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24482e29, 0x004500a0, 0x00040004 },
- { 0x00000001, 0x24540231, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24884521, 0x000000a2, 0x000000a1 },
- { 0x00000040, 0x24884421, 0x00000488, 0x000000a0 },
- { 0x00000001, 0x24940231, 0x00000014, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x22401cb1, 0x00000800, 0x02190004 },
- { 0x00600001, 0x28000021, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x22801cb1, 0x00000800, 0x02290004 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x247c0169, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a4, 0x00010001 },
- { 0x00010001, 0x247c00f1, 0x00000000, 0x00000002 },
- { 0x02000010, 0x20002e28, 0x000000a0, 0x00000000 },
- { 0x00010040, 0x247d1e31, 0x0000047d, 0x00000060 },
- { 0x02000010, 0x20002e28, 0x000000a1, 0x00000000 },
- { 0x00010040, 0x247d1e31, 0x0000047d, 0x00000010 },
- { 0x02000041, 0x20004628, 0x000000a0, 0x000000a1 },
- { 0x00010040, 0x247d1e31, 0x0000047d, 0x00000004 },
- { 0x00000040, 0x25202e2d, 0x000000a0, 0x00010001 },
- { 0x00000040, 0x2520352d, 0x000000a2, 0x00004520 },
- { 0x02000041, 0x200045a0, 0x00000520, 0x000000a1 },
- { 0x00010040, 0x247d1e31, 0x0000047d, 0x00000008 },
- { 0x02000005, 0x20002e28, 0x000000a4, 0x00020002 },
- { 0x00010005, 0x247d1e31, 0x0000047d, 0x000000e0 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x22400061, 0x00000000, 0x00000000 },
- { 0x00000005, 0x22440c21, 0x00000244, 0xff000000 },
- { 0x00600001, 0x28600021, 0x008d0240, 0x00000000 },
- { 0x00600001, 0x288000e1, 0x00000000, 0x00000000 },
- { 0x00800001, 0x28800231, 0x00cf0283, 0x00000000 },
- { 0x00000001, 0x28900061, 0x00000000, 0x11111111 },
- { 0x08600031, 0x21801cbd, 0x00000800, 0x0a184000 },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200021, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240021, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280021, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0021, 0x00000198, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0003 },
- { 0x00000040, 0x24003ca5, 0x00000400, 0x00100010 },
- { 0x00000040, 0x24203ca5, 0x00000420, 0x00100010 },
- { 0x00000040, 0x24482d29, 0x00000448, 0x00100010 },
- { 0x00000040, 0x20a02e31, 0x000000a0, 0x00010001 },
- { 0x01000010, 0x20004528, 0x000000a2, 0x000000a0 },
- { 0x00010001, 0x20a00171, 0x00000000, 0x00000000 },
- { 0x00010040, 0x20a12e31, 0x000000a1, 0x00010001 },
- { 0x00010001, 0x240001e5, 0x00000000, 0xfff8fff8 },
- { 0x00010040, 0x24043ca5, 0x00000404, 0x00100010 },
- { 0x00010001, 0x242001e5, 0x00000000, 0xfffcfffc },
- { 0x00010040, 0x24243ca5, 0x00000424, 0x00100010 },
- { 0x00010001, 0x24480169, 0x00000000, 0x00000000 },
- { 0x00010040, 0x244a2d29, 0x0000044a, 0x00100010 },
- { 0x00000040, 0x24882c21, 0x00000488, 0x00010001 },
- { 0x01000040, 0x20a63dad, 0x000000a6, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0xffffff9a },
- { 0x00600001, 0x28000021, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24001ca8, 0x00000800, 0x82000010 },
diff --git a/src/shaders/vme/intra_frame_gen8.asm b/src/shaders/vme/intra_frame_gen8.asm
deleted file mode 100644
index d43ec92..0000000
--- a/src/shaders/vme/intra_frame_gen8.asm
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-// Modual name: IntraFrame_gen8.asm
-//
-// Make intra predition estimation for Intra frame on Gen8
-//
-
-//
-// Now, begin source code....
-//
-
-/*
- * __START
- */
-__INTRA_START:
-mov (16) tmp_reg0.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg2.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg4.0<1>:UD 0x0:UD {align1} ;
-mov (16) tmp_reg6.0<1>:UD 0x0:UD {align1} ;
-
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-mov (1) read0_header.8<1>:UD BLOCK_32X1 {align1};
-mov (1) read0_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-mov (1) read1_header.8<1>:UD BLOCK_4X16 {align1};
-mov (1) read1_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) vme_m0.8<1>:UW orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-mov (1) vme_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-mul (1) obw_m0.8<1>:UD w_in_mb_uw<0,1,0>:UW orig_y_ub<0,1,0>:UB {align1};
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD orig_x_ub<0,1,0>:UB {align1};
-mul (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x02:UD {align1};
-mov (1) obw_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/*
- * Media Read Message -- fetch Luma neighbor edge pixels
- */
-/* ROW */
-mov (8) msg_reg0.0<1>:UD read0_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_ROW<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* COL */
-mov (8) msg_reg0.0<1>:UD read1_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_COL0<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 2 {align1};
-
-/*
- * Media Read Message -- fetch Chroma neighbor edge pixels
- */
-/* ROW */
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 3:UW {align1}; /* x * 16 , y * 8 */
-mul (1) read0_header.0<1>:D read0_header.0<0,1,0>:D 2:W {align1};
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-mov (8) msg_reg0.0<1>:UD read0_header.0<8,8,1>:UD {align1};
-send (8) msg_ind CHROMA_ROW<1>:UB null read(BIND_IDX_CBCR, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* COL */
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 3:UW {align1}; /* x * 16, y * 8 */
-mul (1) read1_header.0<1>:D read1_header.0<0,1,0>:D 2:W {align1};
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-mov (1) read1_header.8<1>:UD BLOCK_8X4 {align1};
-mov (8) msg_reg0.0<1>:UD read1_header.0<8,8,1>:UD {align1};
-send (8) msg_ind CHROMA_COL<1>:UB null read(BIND_IDX_CBCR, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* m2, get the MV/Mb cost passed by constant buffer
-when creating EU thread by MEDIA_OBJECT */
-mov (8) vme_msg_2<1>:UD r1.0<8,8,1>:UD {align1};
-
-/* m3. This is changed for FWD/BWD cost center */
-mov (8) vme_msg_3<1>:UD 0x0:UD {align1};
-
-/* m4.*/
-mov (8) vme_msg_4<1>:ud 0x0:ud {align1};
-
-/* m5 */
-mov (1) INEP_ROW.0<1>:UD 0x0:UD {align1};
-and (1) INEP_ROW.4<1>:UD INEP_ROW.4<0,1,0>:UD 0xFF000000:UD {align1};
-mov (8) vme_msg_5<1>:UD INEP_ROW.0<8,8,1>:UD {align1};
-
-mov (1) tmp_reg0.0<1>:UW LUMA_CHROMA_MODE:UW {align1};
-/* Use the Luma mode */
-mov (1) vme_msg_5.5<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-/* m6 */
-mov (8) vme_msg_6<1>:UD 0x0:UD {align1};
-mov (16) vme_msg_6.0<1>:UB INEP_COL0.3<32,8,4>:UB {align1};
-mov (1) vme_msg_6.16<1>:UD INTRA_PREDICTORE_MODE {align1};
-
-/* the penalty for Intra mode */
-mov (1) vme_msg_6.28<1>:UD 0x010101:UD {align1};
-mov (1) vme_msg_6.20<1>:UW CHROMA_ROW.6<0,1,0>:UW {align1};
-
-
-/* m7 */
-
-mov (4) vme_msg_7.16<1>:UD CHROMA_ROW.8<4,4,1>:UD {align1};
-mov (8) vme_msg_7.0<1>:UW CHROMA_COL.2<16,8,2>:UW {align1};
-
-/*
- * VME message
- */
-
-/* m1 */
-mov (1) intra_flag<1>:UW 0x0:UW {align1} ;
-and.z.f0.0 (1) null<1>:UW transform_8x8_ub<0,1,0>:UB 1:UW {align1};
-(f0.0) mov (1) intra_part_mask_ub<1>:UB LUMA_INTRA_8x8_DISABLE {align1};
-
-/* assign MB intra struct from the thread payload*/
-mov (1) mb_intra_struct_ub<1>:UB input_mb_intra_ub<0,1,0>:UB {align1};
-
-/* Disable DC HAAR component when calculating HARR SATD block */
-mov (1) tmp_reg0.0<1>:UW DC_HARR_DISABLE:UW {align1};
-mov (1) vme_m1.30<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-mov (8) vme_msg_1<1>:UD vme_m1.0<8,8,1>:UD {align1};
-/* m0 */
-/* 16x16 Source, Intra_harr */
-add (1) vme_m0.12<1>:UD vme_m0.12<0,1,0>:ud INTRA_SAD_HAAR:UD {align1};
-mov (8) vme_msg_0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-/* after verification it will be passed by using payload */
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- cre(
- BIND_IDX_VME,
- VME_SIC_MESSAGE_TYPE
- )
- mlen sic_vme_msg_length
- rlen vme_wb_length
- {align1};
-
-/* Check whether mb type is 0 */
-and.z.f0.0 (1) null<1>:UD vme_wb.0<0,1,0>:UD W0_INTRA_MB_TYPE_MASK {align1};
-(-f0.0) jmpi (1) __write_intra_output;
-
-/* Check whether intra mb mode is INTRA_8x8 */
-and (1) tmp_reg2<1>:UD vme_wb.0<0,1,0>:UD W0_INTRA_MB_MODE_MASK {align1};
-cmp.z.f0.0 (1) null<1>:UD tmp_reg2<0,1,0>:UD W0_INTRA_8x8 {align1};
-
-/* Set transform 8x8 flag */
-(f0.0) or (1) vme_wb.0<1>:UD vme_wb.0<0,1,0>:UD W0_TRANSFORM_8x8_FLAG {align1};
-
-__write_intra_output:
-/*
- * Oword Block Write message
- */
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-mov (1) msg_reg1.4<1>:UD vme_wb.16<0,1,0>:UD {align1};
-mov (1) msg_reg1.8<1>:UD vme_wb.20<0,1,0>:UD {align1};
-mov (1) msg_reg1.12<1>:UD vme_wb.24<0,1,0>:UD {align1};
-
-/* Distortion, Intra (17-16), */
-mov (1) msg_reg1.16<1>:UW vme_wb.12<0,1,0>:UW {align1};
-
-mov (1) msg_reg1.20<1>:UD vme_wb.8<0,1,0>:UD {align1};
-/* VME clock counts */
-mov (1) msg_reg1.24<1>:UD vme_wb.28<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.28<1>:UD obw_m0.8<0,1,0>:UD {align1};
-
-/* bind index 3, write 2 oword (32bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-__EXIT:
-/*
- * kill thread
- */
-mov (8) ts_msg_reg0<1>:UD r0<8,8,1>:UD {align1};
-send (16) ts_msg_ind acc0<1>UW null thread_spawner(0, 0, 1) mlen 1 rlen 0 {align1 EOT};
diff --git a/src/shaders/vme/intra_frame_gen8.g8a b/src/shaders/vme/intra_frame_gen8.g8a
deleted file mode 100644
index 859c72c..0000000
--- a/src/shaders/vme/intra_frame_gen8.g8a
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "vme8.inc"
-#include "intra_frame_gen8.asm"
diff --git a/src/shaders/vme/intra_frame_gen8.g8b b/src/shaders/vme/intra_frame_gen8.g8b
deleted file mode 100644
index a4ddf29..0000000
--- a/src/shaders/vme/intra_frame_gen8.g8b
+++ /dev/null
@@ -1,77 +0,0 @@
- { 0x00800001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24c00608, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24002228, 0x164500a0, 0x00040004 },
- { 0x00000040, 0x24000a28, 0x1e000400, 0xfff8fff8 },
- { 0x00000040, 0x24040a28, 0x1e000404, 0xffffffff },
- { 0x00000001, 0x24080e08, 0x08000000, 0x0000001f },
- { 0x00000001, 0x24142288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24202228, 0x164500a0, 0x00040004 },
- { 0x00000040, 0x24200a28, 0x1e000420, 0xfffcfffc },
- { 0x00000001, 0x24280e08, 0x08000000, 0x000f0003 },
- { 0x00000001, 0x24342288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24482248, 0x164500a0, 0x00040004 },
- { 0x00000001, 0x24542288, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24881208, 0x220000a2, 0x000000a1 },
- { 0x00000040, 0x24880208, 0x22000488, 0x000000a0 },
- { 0x00000041, 0x24880208, 0x06000488, 0x00000002 },
- { 0x00000001, 0x24942288, 0x00000014, 0x00000000 },
- { 0x00600001, 0x28000208, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x23800a88, 0x0e000800, 0x02190004 },
- { 0x00600001, 0x28000208, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x23a00a88, 0x0e000800, 0x02290004 },
- { 0x00200009, 0x24002228, 0x164500a0, 0x00030003 },
- { 0x00000041, 0x24000a28, 0x1e000400, 0x00020002 },
- { 0x00000040, 0x24000a28, 0x1e000400, 0xfff8fff8 },
- { 0x00000040, 0x24040a28, 0x1e000404, 0xffffffff },
- { 0x00600001, 0x28000208, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x26000a88, 0x0e000800, 0x02190006 },
- { 0x00200009, 0x24202228, 0x164500a0, 0x00030003 },
- { 0x00000041, 0x24200a28, 0x1e000420, 0x00020002 },
- { 0x00000040, 0x24200a28, 0x1e000420, 0xfffcfffc },
- { 0x00000001, 0x24280e08, 0x08000000, 0x00070003 },
- { 0x00600001, 0x28000208, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x26200a88, 0x0e000800, 0x02190006 },
- { 0x00600001, 0x28400208, 0x008d0020, 0x00000000 },
- { 0x00600001, 0x28600608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23800608, 0x00000000, 0x00000000 },
- { 0x00000005, 0x23840208, 0x06000384, 0xff000000 },
- { 0x00600001, 0x28a00208, 0x008d0380, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00000000 },
- { 0x00000001, 0x28a52288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28c00608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x28c02288, 0x00cf03a3, 0x00000000 },
- { 0x00000001, 0x28d00608, 0x00000000, 0x11111111 },
- { 0x00000001, 0x28dc0608, 0x00000000, 0x00010101 },
- { 0x00000001, 0x28d41248, 0x00000606, 0x00000000 },
- { 0x00400001, 0x28f00208, 0x00690608, 0x00000000 },
- { 0x00600001, 0x28e01248, 0x00ae0622, 0x00000000 },
- { 0x00000001, 0x247c1648, 0x10000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a4, 0x00010001 },
- { 0x00010001, 0x247c0e88, 0x08000000, 0x00000002 },
- { 0x00000001, 0x247d2288, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00200020 },
- { 0x00000001, 0x247e2288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00000040, 0x244c0208, 0x0600044c, 0x00800000 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x0e000800, 0x10782000 },
- { 0x01000005, 0x20000200, 0x06000180, 0x001f0000 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x00000005, 0x24400208, 0x06000180, 0x00000030 },
- { 0x01000010, 0x20000200, 0x06000440, 0x00000010 },
- { 0x00010006, 0x21800208, 0x06000180, 0x00008000 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200208, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240208, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280208, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0208, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28301248, 0x0000018c, 0x00000000 },
- { 0x00000001, 0x28340208, 0x00000188, 0x00000000 },
- { 0x00000001, 0x28380208, 0x0000019c, 0x00000000 },
- { 0x00000001, 0x283c0208, 0x00000488, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x0e000800, 0x040a0203 },
- { 0x00600001, 0x2e000208, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24000a40, 0x0e000e00, 0x82000010 },
diff --git a/src/shaders/vme/intra_frame_gen9.g9a b/src/shaders/vme/intra_frame_gen9.g9a
deleted file mode 100644
index 859c72c..0000000
--- a/src/shaders/vme/intra_frame_gen9.g9a
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "vme8.inc"
-#include "intra_frame_gen8.asm"
diff --git a/src/shaders/vme/intra_frame_gen9.g9b b/src/shaders/vme/intra_frame_gen9.g9b
deleted file mode 100644
index 2d92cf4..0000000
--- a/src/shaders/vme/intra_frame_gen9.g9b
+++ /dev/null
@@ -1,77 +0,0 @@
- { 0x00800001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24c00608, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24002228, 0x164500a0, 0x00040004 },
- { 0x00000040, 0x24000a28, 0x1e000400, 0xfff8fff8 },
- { 0x00000040, 0x24040a28, 0x1e000404, 0xffffffff },
- { 0x00000001, 0x24080e08, 0x08000000, 0x0000001f },
- { 0x00000001, 0x24142288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24202228, 0x164500a0, 0x00040004 },
- { 0x00000040, 0x24200a28, 0x1e000420, 0xfffcfffc },
- { 0x00000001, 0x24280e08, 0x08000000, 0x000f0003 },
- { 0x00000001, 0x24342288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24482248, 0x164500a0, 0x00040004 },
- { 0x00000001, 0x24542288, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24881208, 0x220000a2, 0x000000a1 },
- { 0x00000040, 0x24880208, 0x22000488, 0x000000a0 },
- { 0x00000041, 0x24880208, 0x06000488, 0x00000002 },
- { 0x00000001, 0x24942288, 0x00000014, 0x00000000 },
- { 0x00600001, 0x28000208, 0x008d0400, 0x00000000 },
- { 0x0c600031, 0x23800a88, 0x06000800, 0x02190004 },
- { 0x00600001, 0x28000208, 0x008d0420, 0x00000000 },
- { 0x0c600031, 0x23a00a88, 0x06000800, 0x02290004 },
- { 0x00200009, 0x24002228, 0x164500a0, 0x00030003 },
- { 0x00000041, 0x24000a28, 0x1e000400, 0x00020002 },
- { 0x00000040, 0x24000a28, 0x1e000400, 0xfff8fff8 },
- { 0x00000040, 0x24040a28, 0x1e000404, 0xffffffff },
- { 0x00600001, 0x28000208, 0x008d0400, 0x00000000 },
- { 0x0c600031, 0x26000a88, 0x06000800, 0x02190006 },
- { 0x00200009, 0x24202228, 0x164500a0, 0x00030003 },
- { 0x00000041, 0x24200a28, 0x1e000420, 0x00020002 },
- { 0x00000040, 0x24200a28, 0x1e000420, 0xfffcfffc },
- { 0x00000001, 0x24280e08, 0x08000000, 0x00070003 },
- { 0x00600001, 0x28000208, 0x008d0420, 0x00000000 },
- { 0x0c600031, 0x26200a88, 0x06000800, 0x02190006 },
- { 0x00600001, 0x28400208, 0x008d0020, 0x00000000 },
- { 0x00600001, 0x28600608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23800608, 0x00000000, 0x00000000 },
- { 0x00000005, 0x23840208, 0x06000384, 0xff000000 },
- { 0x00600001, 0x28a00208, 0x008d0380, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00000000 },
- { 0x00000001, 0x28a52288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28c00608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x28c02288, 0x00cf03a3, 0x00000000 },
- { 0x00000001, 0x28d00608, 0x00000000, 0x11111111 },
- { 0x00000001, 0x28dc0608, 0x00000000, 0x00010101 },
- { 0x00000001, 0x28d41248, 0x00000606, 0x00000000 },
- { 0x00400001, 0x28f00208, 0x00690608, 0x00000000 },
- { 0x00600001, 0x28e01248, 0x00ae0622, 0x00000000 },
- { 0x00000001, 0x247c1648, 0x10000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a4, 0x00010001 },
- { 0x00010001, 0x247c0e88, 0x08000000, 0x00000002 },
- { 0x00000001, 0x247d2288, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00200020 },
- { 0x00000001, 0x247e2288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00000040, 0x244c0208, 0x0600044c, 0x00800000 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x06000800, 0x10782000 },
- { 0x01000005, 0x20000200, 0x06000180, 0x001f0000 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x00000005, 0x24400208, 0x06000180, 0x00000030 },
- { 0x01000010, 0x20000200, 0x06000440, 0x00000010 },
- { 0x00010006, 0x21800208, 0x06000180, 0x00008000 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200208, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240208, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280208, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0208, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28301248, 0x0000018c, 0x00000000 },
- { 0x00000001, 0x28340208, 0x00000188, 0x00000000 },
- { 0x00000001, 0x28380208, 0x0000019c, 0x00000000 },
- { 0x00000001, 0x283c0208, 0x00000488, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x06000800, 0x040a0203 },
- { 0x00600001, 0x2e000208, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24000a40, 0x06000e00, 0x82000010 },
diff --git a/src/shaders/vme/intra_frame_haswell.asm b/src/shaders/vme/intra_frame_haswell.asm
deleted file mode 100644
index ac4a6ba..0000000
--- a/src/shaders/vme/intra_frame_haswell.asm
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-// Modual name: IntraFrame.asm
-//
-// Make intra predition estimation for Intra frame
-//
-
-//
-// Now, begin source code....
-//
-
-/*
- * __START
- */
-__INTRA_START:
-mov (16) tmp_reg0.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg2.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg4.0<1>:UD 0x0:UD {align1} ;
-mov (16) tmp_reg6.0<1>:UD 0x0:UD {align1} ;
-
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-mov (1) read0_header.8<1>:UD BLOCK_32X1 {align1};
-mov (1) read0_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-mov (1) read1_header.8<1>:UD BLOCK_4X16 {align1};
-mov (1) read1_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) vme_m0.8<1>:UW orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-mov (1) vme_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-mul (1) obw_m0.8<1>:UD w_in_mb_uw<0,1,0>:UW orig_y_ub<0,1,0>:UB {align1};
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD orig_x_ub<0,1,0>:UB {align1};
-mul (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x02:UD {align1};
-mov (1) obw_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/*
- * Media Read Message -- fetch Luma neighbor edge pixels
- */
-/* ROW */
-mov (8) msg_reg0.0<1>:UD read0_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_ROW<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* COL */
-mov (8) msg_reg0.0<1>:UD read1_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_COL0<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 2 {align1};
-
-/*
- * Media Read Message -- fetch Chroma neighbor edge pixels
- */
-/* ROW */
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 3:UW {align1}; /* x * 16 , y * 8 */
-mul (1) read0_header.0<1>:D read0_header.0<0,1,0>:D 2:W {align1};
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-mov (8) msg_reg0.0<1>:UD read0_header.0<8,8,1>:UD {align1};
-send (8) msg_ind CHROMA_ROW<1>:UB null read(BIND_IDX_CBCR, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* COL */
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 3:UW {align1}; /* x * 16, y * 8 */
-mul (1) read1_header.0<1>:D read1_header.0<0,1,0>:D 2:W {align1};
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-mov (1) read1_header.8<1>:UD BLOCK_8X4 {align1};
-mov (8) msg_reg0.0<1>:UD read1_header.0<8,8,1>:UD {align1};
-send (8) msg_ind CHROMA_COL<1>:UB null read(BIND_IDX_CBCR, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-mov (8) msg_reg0.0<1>:ud 0:ud {align1};
-mov (1) msg_reg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-mov (1) tmp_reg0.0<1>:UD qp_ub<0,1,0>:ub {align1};
-mul (1) msg_reg0.8<1>:ud tmp_reg0.0<1>:ud 2:ud {align1};
-
-send (16)
- msg_ind
- vme_cost_wb.0<1>:ud
- null
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_2,
- BIND_IDX_COST,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-/* m2, get the MV/Mb cost passed by constant buffer
-when creating EU thread by MEDIA_OBJECT */
-mov (8) vme_msg_2<1>:UD vme_cost_wb<8,8,1>:UD {align1};
-
-/* m3 */
-mov (8) vme_msg_3<1>:UD 0x0:UD {align1};
-
-/* m4 */
-mov (1) INEP_ROW.0<1>:UD 0x0:UD {align1};
-and (1) INEP_ROW.4<1>:UD INEP_ROW.4<0,1,0>:UD 0xFF000000:UD {align1};
-mov (8) vme_msg_4<1>:UD INEP_ROW.0<8,8,1>:UD {align1};
-
-/* m5 */
-mov (8) vme_msg_5<1>:UD 0x0:UD {align1};
-mov (16) vme_msg_5.0<1>:UB INEP_COL0.3<32,8,4>:UB {align1};
-mov (1) vme_msg_5.16<1>:UD INTRA_PREDICTORE_MODE {align1};
-
-/* the penalty for Intra mode */
-mov (1) vme_msg_5.28<1>:UD 0x010101:UD {align1};
-mov (1) vme_msg_5.20<1>:UW CHROMA_ROW.6<0,1,0>:UW {align1};
-
-
-/* m6 */
-
-mov (4) vme_msg_6.16<1>:UD CHROMA_ROW.8<4,4,1>:UD {align1};
-mov (8) vme_msg_6.0<1>:UW CHROMA_COL.2<16,8,2>:UW {align1};
-
-/*
- * VME message
- */
-/* m0 */
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-mov (1) tmp_reg0.0<1>:UW LUMA_CHROMA_MODE:UW {align1};
-/* Use the Luma mode */
-mov (1) vme_msg_4.5<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-/* m1 */
-mov (1) intra_flag<1>:UW 0x0:UW {align1} ;
-and.z.f0.0 (1) null<1>:UW transform_8x8_ub<0,1,0>:UB 1:UW {align1};
-(f0.0) mov (1) intra_part_mask_ub<1>:UB LUMA_INTRA_8x8_DISABLE {align1};
-
-/* assign MB intra struct from the thread payload*/
-mov (1) mb_intra_struct_ub<1>:UB input_mb_intra_ub<0,1,0>:UB {align1};
-/* Disable DC HAAR component when calculating HARR SATD block */
-mov (1) tmp_reg0.0<1>:UW DC_HARR_DISABLE:UW {align1};
-mov (1) vme_m1.30<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-/* m0 */
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-mov (8) vme_msg_1<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-/* after verification it will be passed by using payload */
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- cre(
- BIND_IDX_VME,
- VME_SIC_MESSAGE_TYPE
- )
- mlen sic_vme_msg_length
- rlen vme_wb_length
- {align1};
-/*
- * Oword Block Write message
- */
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-mov (1) msg_reg1.4<1>:UD vme_wb.16<0,1,0>:UD {align1};
-mov (1) msg_reg1.8<1>:UD vme_wb.20<0,1,0>:UD {align1};
-mov (1) msg_reg1.12<1>:UD vme_wb.24<0,1,0>:UD {align1};
-
-/* Distortion, Intra (17-16), */
-mov (1) msg_reg1.16<1>:UW vme_wb.12<0,1,0>:UW {align1};
-
-mov (1) msg_reg1.20<1>:UD vme_wb.8<0,1,0>:UD {align1};
-/* VME clock counts */
-mov (1) msg_reg1.24<1>:UD vme_wb.28<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.28<1>:UD obw_m0.8<0,1,0>:UD {align1};
-
-/* bind index 3, write 2 oword (32bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-__EXIT:
-/*
- * kill thread
- */
-mov (8) ts_msg_reg0<1>:UD r0<8,8,1>:UD {align1};
-send (16) ts_msg_ind acc0<1>UW null thread_spawner(0, 0, 1) mlen 1 rlen 0 {align1 EOT};
diff --git a/src/shaders/vme/intra_frame_haswell.g75a b/src/shaders/vme/intra_frame_haswell.g75a
deleted file mode 100644
index a690fdd..0000000
--- a/src/shaders/vme/intra_frame_haswell.g75a
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "vme75.inc"
-#include "intra_frame_haswell.asm"
diff --git a/src/shaders/vme/intra_frame_haswell.g75b b/src/shaders/vme/intra_frame_haswell.g75b
deleted file mode 100644
index 88866d3..0000000
--- a/src/shaders/vme/intra_frame_haswell.g75b
+++ /dev/null
@@ -1,76 +0,0 @@
- { 0x00800001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24002e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24003ca5, 0x00000400, 0xfff8fff8 },
- { 0x00000040, 0x24043ca5, 0x00000404, 0xffffffff },
- { 0x00000001, 0x240800e1, 0x00000000, 0x0000001f },
- { 0x00000001, 0x24140231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24202e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24203ca5, 0x00000420, 0xfffcfffc },
- { 0x00000001, 0x242800e1, 0x00000000, 0x000f0003 },
- { 0x00000001, 0x24340231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24482e29, 0x004500a0, 0x00040004 },
- { 0x00000001, 0x24540231, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24884521, 0x000000a2, 0x000000a1 },
- { 0x00000040, 0x24884421, 0x00000488, 0x000000a0 },
- { 0x00000041, 0x24880c21, 0x00000488, 0x00000002 },
- { 0x00000001, 0x24940231, 0x00000014, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x23801cb1, 0x00000800, 0x02190004 },
- { 0x00600001, 0x28000021, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x23a01cb1, 0x00000800, 0x02290004 },
- { 0x00200009, 0x24002e25, 0x004500a0, 0x00030003 },
- { 0x00000041, 0x24003ca5, 0x00000400, 0x00020002 },
- { 0x00000040, 0x24003ca5, 0x00000400, 0xfff8fff8 },
- { 0x00000040, 0x24043ca5, 0x00000404, 0xffffffff },
- { 0x00600001, 0x28000021, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x26001cb1, 0x00000800, 0x02190006 },
- { 0x00200009, 0x24202e25, 0x004500a0, 0x00030003 },
- { 0x00000041, 0x24203ca5, 0x00000420, 0x00020002 },
- { 0x00000040, 0x24203ca5, 0x00000420, 0xfffcfffc },
- { 0x00000001, 0x242800e1, 0x00000000, 0x00070003 },
- { 0x00600001, 0x28000021, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x26201cb1, 0x00000800, 0x02190006 },
- { 0x00600001, 0x28000061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x28140231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x24000221, 0x000000a8, 0x00000000 },
- { 0x00000041, 0x28080c21, 0x00200400, 0x00000002 },
- { 0x0a800031, 0x25801ca1, 0x00000800, 0x02180208 },
- { 0x00600001, 0x28400021, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23800061, 0x00000000, 0x00000000 },
- { 0x00000005, 0x23840c21, 0x00000384, 0xff000000 },
- { 0x00600001, 0x28800021, 0x008d0380, 0x00000000 },
- { 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x28a00231, 0x00cf03a3, 0x00000000 },
- { 0x00000001, 0x28b00061, 0x00000000, 0x11111111 },
- { 0x00000001, 0x28bc0061, 0x00000000, 0x00010101 },
- { 0x00000001, 0x28b40129, 0x00000606, 0x00000000 },
- { 0x00400001, 0x28d00021, 0x00690608, 0x00000000 },
- { 0x00600001, 0x28c00129, 0x00ae0622, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x24000169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x28850231, 0x00000400, 0x00000000 },
- { 0x00000001, 0x247c0169, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a4, 0x00010001 },
- { 0x00010001, 0x247c00f1, 0x00000000, 0x00000002 },
- { 0x00000001, 0x247d0231, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x24000169, 0x00000000, 0x00200020 },
- { 0x00000001, 0x247e0231, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x0d600031, 0x21801ca1, 0x00000800, 0x0e782000 },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200021, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240021, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280021, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0021, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28300129, 0x0000018c, 0x00000000 },
- { 0x00000001, 0x28340021, 0x00000188, 0x00000000 },
- { 0x00000001, 0x28380021, 0x0000019c, 0x00000000 },
- { 0x00000001, 0x283c0021, 0x00000488, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0203 },
- { 0x00600001, 0x2e000021, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24001ca8, 0x00000e00, 0x82000010 },
diff --git a/src/shaders/vme/intra_frame_ivb.asm b/src/shaders/vme/intra_frame_ivb.asm
deleted file mode 100644
index b138e88..0000000
--- a/src/shaders/vme/intra_frame_ivb.asm
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-// Modual name: IntraFrame.asm
-//
-// Make intra predition estimation for Intra frame
-//
-
-//
-// Now, begin source code....
-//
-
-/*
- * __START
- */
-__INTRA_START:
-mov (16) tmp_reg0.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg2.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg4.0<1>:UD 0x0:UD {align1} ;
-mov (16) tmp_reg6.0<1>:UD 0x0:UD {align1} ;
-
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-mov (1) read0_header.8<1>:UD BLOCK_32X1 {align1};
-mov (1) read0_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-mov (1) read1_header.8<1>:UD BLOCK_4X16 {align1};
-mov (1) read1_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) vme_m0.8<1>:UW orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-mov (1) vme_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-mul (1) obw_m0.8<1>:UD w_in_mb_uw<0,1,0>:UW orig_y_ub<0,1,0>:UB {align1};
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD orig_x_ub<0,1,0>:UB {align1};
-mov (1) obw_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/*
- * Media Read Message -- fetch Luma neighbor edge pixels
- */
-/* ROW */
-mov (8) msg_reg0.0<1>:UD read0_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_ROW<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* COL */
-mov (8) msg_reg0.0<1>:UD read1_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_COL0<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 2 {align1};
-
-/* m0 */
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-/* m2 */
-mov (8) vme_msg_2<1>:UD 0x0:UD {align1};
-
-/*
- * VME message
- */
-/* m0 */
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-/* m1 */
-mov (8) vme_m1.0<1>:ud 0x0:ud {align1};
-and.z.f0.0 (1) null<1>:UW transform_8x8_ub<0,1,0>:UB 1:UW {align1};
-(f0.0) mov (1) intra_part_mask_ub<1>:UB LUMA_INTRA_8x8_DISABLE:uw {align1};
-
-/* assign MB intra struct from the thread payload*/
-mov (1) mb_intra_struct_ub<1>:UB input_mb_intra_ub<0,1,0>:UB {align1};
-
-mov (8) vme_msg_1<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-/* m2 */
-mov (8) vme_msg_2<1>:UD 0x0:UD {align1};
-
-/* m3 */
-mov (1) INEP_ROW.0<1>:UD 0x0:UD {align1};
-and (1) INEP_ROW.4<1>:UD INEP_ROW.4<0,1,0>:UD 0xFF000000:UD {align1};
-mov (8) vme_msg_3<1>:UD INEP_ROW.0<8,8,1>:UD {align1};
-
-/* m4 */
-mov (8) vme_msg_4<1>:UD 0x0 {align1};
-mov (16) vme_msg_4.0<1>:UB INEP_COL0.3<32,8,4>:UB {align1};
-mov (1) vme_msg_4.16<1>:UD INTRA_PREDICTORE_MODE {align1};
-
-mov (1) tmp_reg0.0<1>:ud qp_ub<0,1,0>:ub {align1};
-/* lut_subindex */
-and (1) tmp_reg1.0<1>:ud tmp_reg0.0<0,1,0>:ud 0x06:ud {align1};
-shl (1) tmp_reg0.4<1>:ud tmp_reg1.0<0,1,0>:ud 10:ud {align1};
-
-/* lut_index */
-and (1) tmp_reg1.0<1>:ud tmp_reg0.0<0,1,0>:ud 0x038:ud {align1};
-shl (1) tmp_reg1.4<1>:ud tmp_reg1.0<0,1,0>:ud 5:ud {align1};
-
-add (1) tmp_reg0.0<1>:ud tmp_reg0.4<0,1,0>:ud tmp_reg1.4<0,1,0>:ud {align1};
-/* Use one register as the descriptor of send instruction */
-
-add (1) a0.0<1>:ud tmp_reg0.0<0,1,0>:ud 0x0a184000:ud {align1};
-send (1) vme_wb.0<1>:ud vme_msg_0 0x08 a0.0<0,1,0>:ud {align1};
-
-/*
- * Oword Block Write message
- */
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-mov (1) msg_reg1.4<1>:UD vme_wb.16<0,1,0>:UD {align1};
-mov (1) msg_reg1.8<1>:UD vme_wb.20<0,1,0>:UD {align1};
-mov (1) msg_reg1.12<1>:UD vme_wb.24<0,1,0>:UD {align1};
-
-/* bind index 3, write 2 oword (32bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_0,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-__EXIT:
-/*
- * kill thread
- */
-mov (8) ts_msg_reg0<1>:UD r0<8,8,1>:UD {align1};
-send (16) ts_msg_ind acc0<1>UW null thread_spawner(0, 0, 1) mlen 1 rlen 0 {align1 EOT};
diff --git a/src/shaders/vme/intra_frame_ivb.g7a b/src/shaders/vme/intra_frame_ivb.g7a
deleted file mode 100644
index a1b195a..0000000
--- a/src/shaders/vme/intra_frame_ivb.g7a
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "vme7.inc"
-#include "intra_frame_ivb.asm"
-
diff --git a/src/shaders/vme/intra_frame_ivb.g7b b/src/shaders/vme/intra_frame_ivb.g7b
deleted file mode 100644
index d2aa1eb..0000000
--- a/src/shaders/vme/intra_frame_ivb.g7b
+++ /dev/null
@@ -1,53 +0,0 @@
- { 0x00800001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24002e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24003ca5, 0x00000400, 0xfff8fff8 },
- { 0x00000040, 0x24043ca5, 0x00000404, 0xffffffff },
- { 0x00000001, 0x240800e1, 0x00000000, 0x0000001f },
- { 0x00000001, 0x24140231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24202e25, 0x004500a0, 0x00040004 },
- { 0x00000040, 0x24203ca5, 0x00000420, 0xfffcfffc },
- { 0x00000001, 0x242800e1, 0x00000000, 0x000f0003 },
- { 0x00000001, 0x24340231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24482e29, 0x004500a0, 0x00040004 },
- { 0x00000001, 0x24540231, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24884521, 0x000000a2, 0x000000a1 },
- { 0x00000040, 0x24884421, 0x00000488, 0x000000a0 },
- { 0x00000001, 0x24940231, 0x00000014, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x23801cb1, 0x00000800, 0x02190004 },
- { 0x00600001, 0x28000021, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x23a01cb1, 0x00000800, 0x02290004 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a4, 0x00010001 },
- { 0x00010001, 0x247c0171, 0x00000000, 0x00020002 },
- { 0x00000001, 0x247d0231, 0x000000a5, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23800061, 0x00000000, 0x00000000 },
- { 0x00000005, 0x23840c21, 0x00000384, 0xff000000 },
- { 0x00600001, 0x28600021, 0x008d0380, 0x00000000 },
- { 0x00600001, 0x288000e1, 0x00000000, 0x00000000 },
- { 0x00800001, 0x28800231, 0x00cf03a3, 0x00000000 },
- { 0x00000001, 0x28900061, 0x00000000, 0x11111111 },
- { 0x00000001, 0x24000221, 0x000000a8, 0x00000000 },
- { 0x00000005, 0x24200c21, 0x00000400, 0x00000006 },
- { 0x00000009, 0x24040c21, 0x00000420, 0x0000000a },
- { 0x00000005, 0x24200c21, 0x00000400, 0x00000038 },
- { 0x00000009, 0x24240c21, 0x00000420, 0x00000005 },
- { 0x00000040, 0x24000421, 0x00000404, 0x00000424 },
- { 0x00000040, 0x22000c20, 0x00000400, 0x0a184000 },
- { 0x08000031, 0x21800221, 0x00000800, 0x00000200 },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200021, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240021, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280021, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0021, 0x00000198, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0003 },
- { 0x00600001, 0x2e000021, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24001ca8, 0x00000e00, 0x82000010 },
diff --git a/src/shaders/vme/mpeg2_inter_gen8.asm b/src/shaders/vme/mpeg2_inter_gen8.asm
deleted file mode 100644
index 8297a55..0000000
--- a/src/shaders/vme/mpeg2_inter_gen8.asm
+++ /dev/null
@@ -1,884 +0,0 @@
-/*
- * Copyright © <2013>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-// Modual name: mpeg2_inter_gen8.asm
-//
-// Make inter predition estimation for MPEG2 Inter-frame on gen8
-//
-
-//
-// Now, begin source code....
-//
-
-#define SAVE_RET add (1) RETURN_REG<1>:ud ip:ud 32:ud
-#define RETURN mov (1) ip:ud RETURN_REG<0,1,0>:ud
-
-/*
- * __START
- */
-__INTER_START:
-mov (16) tmp_reg0.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg2.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg4.0<1>:UD 0x0:UD {align1} ;
-mov (16) tmp_reg6.0<1>:UD 0x0:UD {align1} ;
-
-
-shl (2) vme_m0.8<1>:UW orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-mov (1) vme_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-mul (1) obw_m0.8<1>:UD w_in_mb_uw<0,1,0>:UW orig_y_ub<0,1,0>:UB {align1};
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD orig_x_ub<0,1,0>:UB {align1};
-mul (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 24:UD {align1};
-mov (1) obw_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-
-shl (2) pic_ref.0<1>:uw r4.24<2,2,1>:uw 4:uw {align1};
-mov (2) pic_ref.16<1>:uw r4.20<2,2,1>:uw {align1};
-mov (8) mb_mvp_ref.0<1>:ud 0:ud {align1};
-mov (8) mb_ref_win.0<1>:ud 0:ud {align1};
-mov (8) mba_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbb_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbc_result.0<1>:ud 0x0:ud {align1};
-
-and.z.f0.0 (1) null:uw mb_hwdep<0,1,0>:uw 0x04:uw {align1};
-(f0.0) jmpi (1) __mb_hwdep_end;
-/* read back the data for MB A */
-/* the layout of MB result is: rx.0(Available). rx.4(MVa), rX.8(MVb), rX.16(Pred_L0 flag),
-* rX.18 (Pred_L1 flag), rX.20(Forward reference ID), rX.22(Backwared reference ID)
-*/
-mba_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_AE:uw {align1};
-/* MB A doesn't exist. Zero MV. mba_flag is zero and ref ID = -1 */
-(f0.0) mov (2) mba_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbb_start;
-mov (1) mba_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mba_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbb_start;
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB A */
-/* bind index 3, read 2 oword (32 bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_2,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-/* TODO: RefID is required after multi-references are added */
-/* MV */
-mov (2) mba_result.4<1>:ud mb_mv0.0<2,2,1>:ud {align1};
-mov (1) mba_result.16<1>:w MB_PRED_FLAG {align1};
-
-mbb_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_B:uw {align1};
-/* MB B doesn't exist. Zero MV. mba_flag is zero */
-/* If MB B doesn't exist, neither MB C nor D exists */
-(f0.0) mov (2) mbb_result.20<1>:w -1:w {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (1) mbb_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mbb_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbc_start;
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB B */
-/* bind index 3, read 2 oword (32bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_2,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-/* TODO: RefID is required after multi-references are added */
-mov (2) mbb_result.4<1>:ud mb_mv0.0<2,2,1>:ud {align1};
-mov (1) mbb_result.16<1>:w MB_PRED_FLAG {align1};
-
-mbc_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_C:uw {align1};
-/* MB C doesn't exist. Zero MV. mba_flag is zero */
-/* Based on h264 spec the MB D will be replaced if MB C doesn't exist */
-(f0.0) jmpi (1) mbd_start;
-mov (1) mbc_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB C */
-/* bind index 3, read 2 oword (32bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_2,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-/* TODO: RefID is required after multi-references are added */
-/* Forward MV */
-mov (2) mbc_result.4<1>:ud mb_mv0.0<2,2,1>:ud {align1};
-mov (1) mbc_result.16<1>:w MB_PRED_FLAG {align1};
-
-jmpi (1) mb_mvp_start;
-mbd_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_D:uw {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (1) mbc_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (2) tmp_reg0.0<1>:w tmp_reg0.0<2,2,1>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB D */
-/* bind index 3, read 2 oword (32bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ub
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_2,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-
-/* Forward MV */
-mov (2) mbc_result.4<1>:ud mb_mv0.0<2,2,1>:ud {align1};
-mov (1) mbc_result.16<1>:w MB_PRED_FLAG {align1};
-
-mb_mvp_start:
-/*TODO: Add the skip prediction */
-/* Check whether both MB B and C are inavailable */
-add (1) tmp_reg0.0<1>:d mbb_result.0<0,1,0>:d mbc_result.0<0,1,0>:d {align1};
-cmp.z.f0.0 (1) null:d tmp_reg0.0<0,1,0>:d 0:d {align1};
-(-f0.0) jmpi (1) mb_median_start;
-cmp.nz.f0.0 (1) null:d mba_result.0<0,1,0>:d 0:d {align1};
-(f0.0) mov (1) mbb_result.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-(f0.0) mov (1) mbc_result.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-(f0.0) mov (1) mbb_result.20<1>:uw mba_result.20<0,1,0>:uw {align1};
-(f0.0) mov (1) mbc_result.20<1>:uw mba_result.20<0,1,0>:uw {align1};
-(f0.0) mov (1) mb_mvp_ref.0<1>:ud mba_result.4<0,1,0>:ud {align1};
-(-f0.0) mov (1) mb_mvp_ref.0<1>:ud 0:ud {align1};
-jmpi (1) __mb_hwdep_end;
-
-mb_median_start:
-/* check whether only one neighbour MB has the same ref ID with the current MB */
-mov (8) tmp_reg0.0<1>:ud 0:ud {align1};
-cmp.z.f0.0 (1) null:d mba_result.20<0,1,0>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbb_result.20<0,1,0>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbb_result.4<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbc_result.20<0,1,0>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbc_result.4<0,1,0>:ud {align1};
-cmp.e.f0.0 (1) null:d tmp_reg0.0<0,1,0>:w 1:w {align1};
-(f0.0) mov (1) mb_mvp_ref.0<1>:ud tmp_reg0.4<0,1,0>:ud {align1};
-(f0.0) jmpi (1) __mb_hwdep_end;
-
-mov (1) INPUT_ARG0.0<1>:w mba_result.4<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.4<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.4<0,1,0>:w {align1};
-SAVE_RET {align1};
- jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.0<1>:w RET_ARG<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.0<1>:w mba_result.6<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.6<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.6<0,1,0>:w {align1};
-SAVE_RET {align1};
-jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.2<1>:w RET_ARG<0,1,0>:w {align1};
-
-__mb_hwdep_end:
-
-mov (2) mv_cc_ref.0<1>:w mba_result.4<2,2,1>:w {align1};
-
-/* Calibrate the ref window for MPEG2 */
-mov (1) vme_m0.0<1>:W -16:W {align1};
-mov (1) vme_m0.2<1>:W -12:W {align1};
-
-mov (1) INPUT_ARG0.0<1>:ud vme_m0.0<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.8<1>:ud vme_m0.8<0,1,0>:ud {align1};
-mov (8) INPUT_ARG1.0<1>:ud pic_ref.0<8,8,1>:ud {align1};
-
-SAVE_RET {align1};
-jmpi (1) ref_boundary_check;
-mov (2) vme_m0.0<1>:w RET_ARG<2,2,1>:w {align1};
-
-/* m2, get the MV/Mb cost passed from constant buffer when
-spawning thread by MEDIA_OBJECT */
-mov (8) vme_m2<1>:UD r1.0<8,8,1>:UD {align1};
-
-mov (8) vme_msg_2<1>:UD vme_m2.0<8,8,1>:UD {align1};
-
-/* m3 FWD/BWD cost center*/
-mov (8) vme_msg_3<1>:UD 0x0:UD {align1};
-
-/* m4 skip center*/
-mov (8) vme_msg_4<1>:UD 0x0:UD {align1};
-
-/* m5 */
-mov (8) vme_msg_5<1>:UD 0x0:UD {align1};
-
-
-/* Use the Luma mode */
-mov (1) tmp_reg0.0<1>:UW LUMA_INTRA_MODE:UW {align1};
-mov (1) vme_msg_5.5<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-mov (1) tmp_reg0.0<1>:UW INTRA16_DC_PRED:UW {align1};
-mov (1) vme_msg_5.4<1>:ub tmp_reg0.0<0,1,0>:UB {align1};
-
-/* m6 */
-mov (8) vme_msg_6<1>:UD 0x0:UD {align1};
-mov (1) vme_msg_6.16<1>:UD INTRA_PREDICTORE_MODE {align1};
-
-/* the penalty for Intra mode */
-mov (1) vme_msg_6.28<1>:UD 0x010101:UD {align1};
-
-
-/* m7 */
-
-mov (8) vme_msg_7.0<1>:ud 0x0:ud {align1};
-
-/*
- * SIC VME message
- */
-
-/* Disable Intra8x8/Intra4x4 Intra-prediction */
-/* m1 */
-mov (8) vme_m1.0<1>:ud 0x0:UD {align1};
-
-mov (1) intra_flag<1>:UW 0x0:UW {align1} ;
-mov (1) tmp_reg0.0<1>:uw LUMA_INTRA_8x8_DISABLE:uw {align1};
-add (1) tmp_reg0.0<1>:uw tmp_reg0.0<0,1,0>:uw LUMA_INTRA_4x4_DISABLE:uw {align1};
-mov (1) intra_part_mask_ub<1>:UB tmp_reg0.0<0,1,0>:ub {align1};
-
-/* assign MB intra struct from the thread payload*/
-mov (1) mb_intra_struct_ub<1>:UB input_mb_intra_ub<0,1,0>:UB {align1};
-
-/* Enable DC HAAR component when calculating HARR SATD block */
-mov (1) tmp_reg0.0<1>:UW DC_HARR_ENABLE:UW {align1};
-mov (1) vme_m1.30<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-mov (8) vme_msg_1<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-/* m0 */
-mov (1) vme_m0.12<1>:UD INTRA_SAD_HAAR:UD {align1}; /* 16x16 Source, Intra_harr */
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-/* after verification it will be passed by using payload */
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- cre(
- BIND_IDX_VME,
- VME_SIC_MESSAGE_TYPE
- )
- mlen sic_vme_msg_length
- rlen vme_wb_length
- {align1};
-/*
- * Oword Block Write message
- */
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-mov (1) msg_reg1.4<1>:UD vme_wb.16<0,1,0>:UD {align1};
-mov (1) msg_reg1.8<1>:UD vme_wb.20<0,1,0>:UD {align1};
-mov (1) msg_reg1.12<1>:UD vme_wb.24<0,1,0>:UD {align1};
-
-/* Distortion, Intra (17-16), */
-mov (1) msg_reg1.16<1>:UW vme_wb.12<0,1,0>:UW {align1};
-
-mov (1) msg_reg1.20<1>:UD vme_wb.8<0,1,0>:UD {align1};
-/* VME clock counts */
-mov (1) msg_reg1.24<1>:UD vme_wb.28<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.28<1>:UD obw_m0.8<0,1,0>:UD {align1};
-
-/* bind index 3, write 2 oword (32bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-/* IME search */
-mov (1) vme_m0.12<1>:UD SEARCH_CTRL_SINGLE + INTER_PART_MASK + INTER_SAD_HAAR:UD {align1}; /* 16x16 Source, harr */
-mov (1) vme_m0.22<1>:UW REF_REGION_SIZE {align1}; /* Reference Width&Height, 48x40 */
-
-mov (1) vme_m0.4<1>:UD vme_m0.0<0,1,0>:UD {align1};
-
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-mov (1) vme_m1.0<1>:UD ADAPTIVE_SEARCH_ENABLE:ud {align1} ;
-/* the Max MV number is passed by constant buffer */
-mov (1) vme_m1.4<1>:UB r4.28<0,1,0>:UB {align1};
-mov (1) vme_m1.8<1>:UD START_CENTER + SEARCH_PATH_LEN:UD {align1};
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-/* Setup the Cost center */
-/* currently four 8x8 share the same cost center */
-mov (4) vme_m3.0<2>:ud mv_cc_ref.0<0,1,0>:ud {align1};
-mov (4) vme_m3.4<2>:ud mv_cc_ref.0<0,1,0>:ud {align1};
-
-mov (8) vme_msg_3<1>:UD vme_m3.0<8,8,1>:UD {align1};
-mov (8) vme_msg_2<1>:UD vme_m2.0<8,8,1>:UD {align1};
-
-/* M4/M5 search path */
-mov (1) vme_msg_4.0<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_4.4<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_4.8<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_4.12<1>:UD 0x100F0F0F:UD {align1};
-mov (1) vme_msg_4.16<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_4.20<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_4.24<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_4.28<1>:UD 0x100F0F0F:UD {align1};
-
-mov (1) vme_msg_5.0<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_5.4<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_5.8<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_5.12<1>:UD 0x000F0F0F:UD {align1};
-
-mov (4) vme_msg_5.16<1>:UD 0x0:UD {align1};
-
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- vme(
- BIND_IDX_VME,
- 0,
- 0,
- VME_IME_MESSAGE_TYPE
- )
- mlen ime_vme_msg_length
- rlen vme_wb_length {align1};
-
-/* Set Macroblock-shape/mode for FBR */
-
-mov (1) vme_m2.20<1>:UD 0x0:UD {align1};
-mov (1) vme_m2.21<1>:UB vme_wb.25<0,1,0>:UB {align1};
-mov (1) vme_m2.22<1>:UB vme_wb.26<0,1,0>:UB {align1};
-
-and (1) tmp_reg0.0<1>:UW vme_wb.0<0,1,0>:UW 0x03:UW {align1};
-mov (1) vme_m2.20<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-/* Send FBR message into CRE */
-
-mov (8) vme_msg_4.0<1>:UD vme_wb1.0<8,8,1>:UD {align1};
-mov (8) vme_msg_5.0<1>:ud vme_wb2.0<8,8,1>:ud {align1};
-mov (8) vme_msg_6.0<1>:ud vme_wb3.0<8,8,1>:ud {align1};
-mov (8) vme_msg_7.0<1>:ud vme_wb4.0<8,8,1>:ud {align1};
-
-mov (1) vme_m0.12<1>:UD INTER_SAD_HAAR + SUB_PEL_MODE_HALF + FBR_BME_DISABLE:UD {align1}; /* 16x16 Source, 1/2 pixel, harr, BME disable */
-/* Bilinear filter */
-mov (1) tmp_reg0.0<1>:uw 0x04:uw {align1};
-add (1) vme_m1.30<1>:ub vme_m1.30<0,1,0>:ub tmp_reg0.0<0,1,0>:ub {align1};
-
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-mov (8) vme_msg_2.0<1>:UD vme_m2.0<8,8,1>:UD {align1};
-mov (8) vme_msg_3.0<1>:UD vme_m3.0<8,8,1>:UD {align1};
-
-/* after verification it will be passed by using payload */
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- cre(
- BIND_IDX_VME,
- VME_FBR_MESSAGE_TYPE
- )
- mlen fbr_vme_msg_length
- rlen vme_wb_length
- {align1};
-
-and.z.f0.0 (1) null:uw mb_hwdep<0,1,0>:uw 0x04:uw {align1};
-(-f0.0) jmpi (1) vme_run_again;
-nop;
-vme_mv_output:
-
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x02:UD {align1};
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-/* write FME info */
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.4<1>:UD vme_wb.24<0,1,0>:UD {align1};
-/* Inter distortion of FME */
-mov (1) msg_reg1.8<1>:UD vme_wb.8<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.12<1>:UD vme_m2.20<0,1,0>:UD {align1};
-
-/* bind index 3, write oword (16bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_0,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-/* Write FME/BME MV */
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x01:UD {align1};
-mov (8) msg_reg0.0<1>:UD obw_m0.0<8,8,1>:UD {align1};
-
-
-mov (8) msg_reg1.0<1>:UD vme_wb1.0<8,8,1>:UD {align1};
-mov (8) msg_reg2.0<1>:ud vme_wb2.0<8,8,1>:ud {align1};
-mov (8) msg_reg3.0<1>:ud vme_wb3.0<8,8,1>:ud {align1};
-mov (8) msg_reg4.0<1>:ud vme_wb4.0<8,8,1>:ud {align1};
-/* bind index 3, write 2 oword (32 bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-/* Write FME/BME RefID */
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x08:UD {align1};
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-
-mov (8) msg_reg1.0<1>:UD vme_wb6.0<8,8,1>:UD {align1};
-
-/* bind index 3, write 2 oword (32bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-/* Issue message fence so that the previous write message is committed */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_FENCE,
- OBR_MF_COMMIT,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-__EXIT:
-/*
- * kill thread
- */
-mov (8) ts_msg_reg0<1>:UD r0<8,8,1>:UD {align1};
-send (16) ts_msg_ind acc0<1>UW null thread_spawner(0, 0, 1) mlen 1 rlen 0 {align1 EOT};
-
-
- nop ;
- nop ;
-
-word_imedian:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_a_ge_b;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_end;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- jmpi (1) cmp_end;
-cmp_a_ge_b:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_end;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
-cmp_end:
- RETURN {align1};
-
-nop;
-nop;
-ref_boundary_check:
-
-/* The left/up coordinate of reference window */
-add (2) TEMP_VAR0.0<1>:w INPUT_ARG0.8<2,2,1>:w INPUT_ARG0.0<2,2,1>:w {align1};
-/* The right/bottom coordinate of reference window */
-add (1) TEMP_VAR0.16<1>:w TEMP_VAR0.0<0,1,0>:w 48:w {align1};
-add (1) TEMP_VAR0.18<1>:w TEMP_VAR0.2<0,1,0>:w 40:w {align1};
-
-/* Firstly the MV range is checked */
-mul (2) TEMP_VAR1.16<1>:w INPUT_ARG1.16<2,2,1>:w -1:w {align1};
-add (2) TEMP_VAR1.0<1>:w INPUT_ARG0.8<2,2,1>:w TEMP_VAR1.16<2,2,1>:w {align1};
-add (2) TEMP_VAR1.4<1>:w INPUT_ARG0.8<2,2,1>:w INPUT_ARG1.16<2,2,1>:w {align1};
-
-cmp.l.f0.0 (1) null:w TEMP_VAR0.0<0,1,0>:w TEMP_VAR1.0<0,1,0>:w {align1};
-(f0.0) mov (1) TEMP_VAR0.0<1>:w TEMP_VAR1.0<0,1,0>:w {align1};
-cmp.g.f0.0 (1) null:w TEMP_VAR0.16<0,1,0>:w TEMP_VAR1.4<0,1,0>:w {align1};
-(f0.0) add (1) TEMP_VAR0.0<1>:w TEMP_VAR1.4<0,1,0>:w -48:w {align1};
-cmp.l.f0.0 (1) null:w TEMP_VAR0.2<0,1,0>:w TEMP_VAR1.2<0,1,0>:w {align1};
-(f0.0) mov (1) TEMP_VAR0.2<1>:w TEMP_VAR1.2<0,1,0>:w {align1};
-cmp.g.f0.0 (1) null:w TEMP_VAR0.18<0,1,0>:w TEMP_VAR1.6<0,1,0>:w {align1};
-(f0.0) add (1) TEMP_VAR0.2<1>:w TEMP_VAR1.6<0,1,0>:w -40:w {align1};
-
-x_left_cmp:
- cmp.l.f0.0 (1) null:w TEMP_VAR0.0<0,1,0>:w 0:w {align1};
- (-f0.0) jmpi (1) x_right_cmp;
- (f0.0) mov (1) TEMP_VAR0.0<1>:w 0:w {align1};
- jmpi (1) y_top_cmp;
-x_right_cmp:
- cmp.g.f0.0 (1) null:w TEMP_VAR0.16<0,1,0>:w INPUT_ARG1.0<0,1,0>:w {align1};
- (-f0.0) jmpi (1) y_top_cmp;
- (f0.0) add (1) TEMP_VAR0.0<1>:w INPUT_ARG1.0<0,1,0>:w -48:w {align1};
-y_top_cmp:
- cmp.l.f0.0 (1) null:w TEMP_VAR0.2<0,1,0>:w 0:w {align1};
- (-f0.0) jmpi (1) y_bottom_cmp;
- (f0.0) mov (1) TEMP_VAR0.2<1>:w 0:w {align1};
- jmpi (1) y_bottom_end;
-y_bottom_cmp:
- cmp.g.f0.0 (1) null:w TEMP_VAR0.18<0,1,0>:w INPUT_ARG1.2<0,1,0>:w {align1};
- (f0.0) add (1) TEMP_VAR0.2<1>:w INPUT_ARG1.2<0,1,0>:w -40:w {align1};
-
-y_bottom_end:
-mul (2) TEMP_VAR1.0<1>:w INPUT_ARG0.8<2,2,1>:w -1:w {align1};
-add (2) RET_ARG<1>:w TEMP_VAR0.0<2,2,1>:w TEMP_VAR1.0<2,2,1>:w {align1};
- RETURN {align1};
-nop;
-nop;
-
-vme_run_again:
-
-asr (2) mb_ref_win.0<1>:w mb_mvp_ref.0<2,2,1>:w 2:w {align1};
-mov (2) tmp_reg0.0<1>:w mb_ref_win.0<2,2,1>:w {align1};
-add (2) mb_ref_win.8<1>:w mb_ref_win.0<2,2,1>:w 3:w {align1};
-and (2) mb_ref_win.16<1>:uw mb_ref_win.8<2,2,1>:uw 0xFFFC:uw {align1};
-
-cmp.l.f0.0 (1) null:w tmp_reg0.0<0,1,0>:w 0:w {align1};
-(f0.0) mul (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w -1:w {align1};
-cmp.l.f0.0 (1) null:w tmp_reg0.2<0,1,0>:w 0:w {align1};
-(f0.0) mul (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-
-cmp.ge.f0.0 (1) null:w tmp_reg0.0<0,1,0>:w 4:w {align1};
-(f0.0) jmpi (1) vme_start;
-cmp.ge.f0.0 (1) null:w tmp_reg0.2<0,1,0>:w 4:w {align1};
-(f0.0) jmpi (1) vme_start;
-
-jmpi (1) vme_done;
-
-vme_start:
- mov (8) tmp_vme_wb0.0<1>:ud vme_wb0.0<8,8,1>:ud {align1};
- mov (8) tmp_vme_wb1.0<1>:ud vme_wb1.0<8,8,1>:ud {align1};
-
-/* Calibrate the ref window for MPEG2 */
-mov (1) vme_m0.0<1>:W -16:W {align1};
-mov (1) vme_m0.2<1>:W -12:W {align1};
-mov (1) INPUT_ARG0.8<1>:ud vme_m0.8<0,1,0>:ud {align1};
-add (2) INPUT_ARG0.0<1>:w vme_m0.0<2,2,1>:w mb_ref_win.16<2,2,1>:w {align1};
-mov (8) INPUT_ARG1.0<1>:ud pic_ref.0<8,8,1>:ud {align1};
-
-SAVE_RET {align1};
-jmpi (1) ref_boundary_check;
-mov (2) vme_m0.0<1>:w RET_ARG<2,2,1>:w {align1};
-
-/* IME search */
-mov (1) vme_m0.12<1>:UD SEARCH_CTRL_SINGLE + INTER_PART_MASK + INTER_SAD_HAAR:UD {align1}; /* 16x16 Source, harr */
-mov (1) vme_m0.22<1>:UW REF_REGION_SIZE {align1}; /* Reference Width&Height, 48x40 */
-
-mov (1) vme_m0.4<1>:UD vme_m0.0<0,1,0>:UD {align1};
-
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-mov (8) vme_m1.0<1>:ud 0x0:UD {align1};
-
-mov (1) vme_m1.0<1>:UD ADAPTIVE_SEARCH_ENABLE:ud {align1} ;
-/* the Max MV number is passed by constant buffer */
-mov (1) vme_m1.4<1>:UB r4.28<0,1,0>:UB {align1};
-mov (1) vme_m1.8<1>:UD START_CENTER + SEARCH_PATH_LEN:UD {align1};
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-/* Setup the Cost center */
-/* currently four 8x8 share the same cost center */
-mov (4) vme_m3.0<2>:ud mv_cc_ref.0<0,1,0>:ud {align1};
-mov (4) vme_m3.4<2>:ud mv_cc_ref.0<0,1,0>:ud {align1};
-
-mov (8) vme_msg_3<1>:UD vme_m3.0<8,8,1>:UD {align1};
-mov (8) vme_msg_2<1>:UD vme_m2.0<8,8,1>:UD {align1};
-
-/* M4/M5 search path */
-mov (1) vme_msg_4.0<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_4.4<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_4.8<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_4.12<1>:UD 0x100F0F0F:UD {align1};
-mov (1) vme_msg_4.16<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_4.20<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_4.24<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_4.28<1>:UD 0x100F0F0F:UD {align1};
-
-mov (1) vme_msg_5.0<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_5.4<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_5.8<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_5.12<1>:UD 0x000F0F0F:UD {align1};
-
-mov (4) vme_msg_5.16<1>:UD 0x0:UD {align1};
-
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- vme(
- BIND_IDX_VME,
- 0,
- 0,
- VME_IME_MESSAGE_TYPE
- )
- mlen ime_vme_msg_length
- rlen vme_wb_length {align1};
-
-/* Set Macroblock-shape/mode for FBR */
-
-mov (1) vme_m2.20<1>:UD 0x0:UD {align1};
-mov (1) vme_m2.21<1>:UB vme_wb.25<0,1,0>:UB {align1};
-mov (1) vme_m2.22<1>:UB vme_wb.26<0,1,0>:UB {align1};
-
-and (1) tmp_reg0.0<1>:UW vme_wb.0<0,1,0>:UW 0x03:UW {align1};
-mov (1) vme_m2.20<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-/* Send FBR message into CRE */
-
-mov (8) vme_msg_4.0<1>:UD vme_wb1.0<8,8,1>:UD {align1};
-mov (8) vme_msg_5.0<1>:ud vme_wb2.0<8,8,1>:ud {align1};
-mov (8) vme_msg_6.0<1>:ud vme_wb3.0<8,8,1>:ud {align1};
-mov (8) vme_msg_7.0<1>:ud vme_wb4.0<8,8,1>:ud {align1};
-
-mov (1) vme_m0.12<1>:UD INTER_SAD_HAAR + SUB_PEL_MODE_HALF + FBR_BME_DISABLE:UD {align1}; /* 16x16 Source, 1/2 pixel, harr, BME disable */
-/* Bilinear filter */
-mov (1) tmp_reg0.0<1>:uw 0x04:uw {align1};
-add (1) vme_m1.30<1>:ub vme_m1.30<0,1,0>:ub tmp_reg0.0<0,1,0>:ub {align1};
-
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-mov (8) vme_msg_2.0<1>:UD vme_m2.0<8,8,1>:UD {align1};
-mov (8) vme_msg_3.0<1>:UD vme_m3.0<8,8,1>:UD {align1};
-
-/* after verification it will be passed by using payload */
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- cre(
- BIND_IDX_VME,
- VME_FBR_MESSAGE_TYPE
- )
- mlen fbr_vme_msg_length
- rlen vme_wb_length
- {align1};
-
-cmp.l.f0.0 (1) null:uw vme_wb0.8<0,1,0>:uw tmp_vme_wb0.8<0,1,0>:uw {align1};
-(f0.0) jmpi (1) vme_done;
-mov (8) vme_wb0.0<1>:ud tmp_vme_wb0.0<8,8,1>:ud {align1};
-mov (8) vme_wb1.0<1>:ud tmp_vme_wb1.0<8,8,1>:ud {align1};
-
-vme_done:
- jmpi (1) vme_mv_output;
-nop;
-nop;
-nop;
-
diff --git a/src/shaders/vme/mpeg2_inter_gen8.g8a b/src/shaders/vme/mpeg2_inter_gen8.g8a
deleted file mode 100644
index 26f94a7..0000000
--- a/src/shaders/vme/mpeg2_inter_gen8.g8a
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "vme8.inc"
-#include "vme75_mpeg2.inc"
-#include "mpeg2_inter_gen8.asm"
diff --git a/src/shaders/vme/mpeg2_inter_gen8.g8b b/src/shaders/vme/mpeg2_inter_gen8.g8b
deleted file mode 100644
index 6686c9f..0000000
--- a/src/shaders/vme/mpeg2_inter_gen8.g8b
+++ /dev/null
@@ -1,371 +0,0 @@
- { 0x00800001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24c00608, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24482248, 0x164500a0, 0x00040004 },
- { 0x00000001, 0x24542288, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24881208, 0x220000a2, 0x000000a1 },
- { 0x00000040, 0x24880208, 0x22000488, 0x000000a0 },
- { 0x00000041, 0x24880208, 0x06000488, 0x00000018 },
- { 0x00000001, 0x24942288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x2a401248, 0x16450098, 0x00040004 },
- { 0x00200001, 0x2a501248, 0x00450094, 0x00000000 },
- { 0x00600001, 0x2ac00608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2a800608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2ae00608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b000608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b200608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20001240, 0x160000a6, 0x00040004 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000720 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00600060 },
- { 0x00210001, 0x2af41e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000f0 },
- { 0x00000001, 0x2ae00e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24001a68, 0x1e000400, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2af41e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000040 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x0e000b40, 0x02180203 },
- { 0x00200001, 0x2ae40208, 0x00450ba0, 0x00000000 },
- { 0x00000001, 0x2af01e68, 0x18000000, 0x00010001 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00100010 },
- { 0x00210001, 0x2b141e68, 0x18000000, 0xffffffff },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000360 },
- { 0x00000001, 0x2b000e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24021a68, 0x1e000402, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b141e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000040 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x0e000b40, 0x02180203 },
- { 0x00200001, 0x2b040208, 0x00450ba0, 0x00000000 },
- { 0x00000001, 0x2b101e68, 0x18000000, 0x00010001 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00080008 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000110 },
- { 0x00000001, 0x2b200e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24021a68, 0x1e000402, 0xffffffff },
- { 0x00000040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000180 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x0e000b40, 0x02180203 },
- { 0x00200001, 0x2b240208, 0x00450ba0, 0x00000000 },
- { 0x00000001, 0x2b301e68, 0x18000000, 0x00010001 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000130 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00040004 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000f0 },
- { 0x00000001, 0x2b200e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00200040, 0x24001a68, 0x1e450400, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000040 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a88, 0x0e000b40, 0x02180203 },
- { 0x00200001, 0x2b240208, 0x00450ba0, 0x00000000 },
- { 0x00000001, 0x2b301e68, 0x18000000, 0x00010001 },
- { 0x00000040, 0x24000a28, 0x0a000b00, 0x00000b20 },
- { 0x01000010, 0x20000a20, 0x0e000400, 0x00000000 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000080 },
- { 0x02000010, 0x20000a20, 0x0e000ae0, 0x00000000 },
- { 0x00010001, 0x2b040208, 0x00000ae4, 0x00000000 },
- { 0x00010001, 0x2b240208, 0x00000ae4, 0x00000000 },
- { 0x00010001, 0x2b141248, 0x00000af4, 0x00000000 },
- { 0x00010001, 0x2b341248, 0x00000af4, 0x00000000 },
- { 0x00010001, 0x2ac00208, 0x00000ae4, 0x00000000 },
- { 0x00110001, 0x2ac00608, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000190 },
- { 0x00600001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000af4, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000ae4, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000b14, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000b04, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000b34, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000b24, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x2ac00208, 0x00000404, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000c0 },
- { 0x00000001, 0x2fa01a68, 0x00000ae4, 0x00000000 },
- { 0x00000001, 0x2fa41a68, 0x00000b04, 0x00000000 },
- { 0x00000001, 0x2fa81a68, 0x00000b24, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000780 },
- { 0x00000001, 0x2ac01a68, 0x00000fe4, 0x00000000 },
- { 0x00000001, 0x2fa01a68, 0x00000ae6, 0x00000000 },
- { 0x00000001, 0x2fa41a68, 0x00000b06, 0x00000000 },
- { 0x00000001, 0x2fa81a68, 0x00000b26, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000720 },
- { 0x00000001, 0x2ac21a68, 0x00000fe4, 0x00000000 },
- { 0x00200001, 0x2a201a68, 0x00450ae4, 0x00000000 },
- { 0x00000001, 0x24401e68, 0x18000000, 0xfff0fff0 },
- { 0x00000001, 0x24421e68, 0x18000000, 0xfff4fff4 },
- { 0x00000001, 0x2fa00208, 0x00000440, 0x00000000 },
- { 0x00000001, 0x2fa80208, 0x00000448, 0x00000000 },
- { 0x00600001, 0x2fc00208, 0x008d0a40, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x000007b0 },
- { 0x00200001, 0x24401a68, 0x00450fe4, 0x00000000 },
- { 0x00600001, 0x25600208, 0x008d0020, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x28600608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28a00608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00010001 },
- { 0x00000001, 0x28a52288, 0x00000400, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00bb00bb },
- { 0x00000001, 0x28a42288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28c00608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x28d00608, 0x00000000, 0x11111111 },
- { 0x00000001, 0x28dc0608, 0x00000000, 0x00010101 },
- { 0x00600001, 0x28e00608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24600608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x247c1648, 0x10000000, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00020002 },
- { 0x00000040, 0x24001248, 0x16000400, 0x00040004 },
- { 0x00000001, 0x247c2288, 0x00000400, 0x00000000 },
- { 0x00000001, 0x247d2288, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00000000 },
- { 0x00000001, 0x247e2288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00800000 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x0e000800, 0x10782000 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200208, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240208, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280208, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0208, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28301248, 0x0000018c, 0x00000000 },
- { 0x00000001, 0x28340208, 0x00000188, 0x00000000 },
- { 0x00000001, 0x28380208, 0x0000019c, 0x00000000 },
- { 0x00000001, 0x283c0208, 0x00000488, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x0e000800, 0x040a0203 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x7e200000 },
- { 0x00000001, 0x24561648, 0x10000000, 0x28302830 },
- { 0x00000001, 0x24440208, 0x00000440, 0x00000000 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x24600608, 0x00000000, 0x00000002 },
- { 0x00000001, 0x24642288, 0x0000009c, 0x00000000 },
- { 0x00000001, 0x24680608, 0x00000000, 0x30003030 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00400001, 0x45800208, 0x00000a20, 0x00000000 },
- { 0x00400001, 0x45840208, 0x00000a20, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00000001, 0x28800608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28840608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28880608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x288c0608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28900608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28940608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28980608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x289c0608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28a00608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28a40608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28a80608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x28ac0608, 0x00000000, 0x000f0f0f },
- { 0x00400001, 0x28b00608, 0x00000000, 0x00000000 },
- { 0x08600031, 0x21800a08, 0x0e000800, 0x0c784000 },
- { 0x00000001, 0x25740608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25752288, 0x00000199, 0x00000000 },
- { 0x00000001, 0x25762288, 0x0000019a, 0x00000000 },
- { 0x00000005, 0x24001248, 0x16000180, 0x00030003 },
- { 0x00000001, 0x25742288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28800208, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28a00208, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28c00208, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28e00208, 0x008d0200, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00241000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00040004 },
- { 0x00000040, 0x247e2288, 0x2200047e, 0x00000400 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d0580, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x0e000800, 0x10786000 },
- { 0x01000005, 0x20001240, 0x160000a6, 0x00040004 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x000004a0 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000002 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200208, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240208, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28280208, 0x00000188, 0x00000000 },
- { 0x00000001, 0x282c0208, 0x00000574, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x0e000800, 0x040a0003 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000001 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28800208, 0x008d0200, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x0e000800, 0x040a0203 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000008 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0240, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x0e000800, 0x040a0203 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x0219e003 },
- { 0x00600001, 0x2e000208, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24000a40, 0x0e000e00, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa4 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000070 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa0, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000a0 },
- { 0x04000010, 0x20001a60, 0x1a000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa4, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000060 },
- { 0x04000010, 0x20001a60, 0x1a000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa4, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa0, 0x00000000 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00200040, 0x2f601a68, 0x1a450fa8, 0x00450fa0 },
- { 0x00000040, 0x2f701a68, 0x1e000f60, 0x00300030 },
- { 0x00000040, 0x2f721a68, 0x1e000f62, 0x00280028 },
- { 0x00200041, 0x2f901a68, 0x1e450fd0, 0xffffffff },
- { 0x00200040, 0x2f801a68, 0x1a450fa8, 0x00450f90 },
- { 0x00200040, 0x2f841a68, 0x1a450fa8, 0x00450fd0 },
- { 0x05000010, 0x20001a60, 0x1a000f60, 0x00000f80 },
- { 0x00010001, 0x2f601a68, 0x00000f80, 0x00000000 },
- { 0x03000010, 0x20001a60, 0x1a000f70, 0x00000f84 },
- { 0x00010040, 0x2f601a68, 0x1e000f84, 0xffd0ffd0 },
- { 0x05000010, 0x20001a60, 0x1a000f62, 0x00000f82 },
- { 0x00010001, 0x2f621a68, 0x00000f82, 0x00000000 },
- { 0x03000010, 0x20001a60, 0x1a000f72, 0x00000f86 },
- { 0x00010040, 0x2f621a68, 0x1e000f86, 0xffd8ffd8 },
- { 0x05000010, 0x20001a60, 0x1e000f60, 0x00000000 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000020 },
- { 0x00010001, 0x2f601e68, 0x18000000, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x03000010, 0x20001a60, 0x1a000f70, 0x00000fc0 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000010 },
- { 0x00010040, 0x2f601a68, 0x1e000fc0, 0xffd0ffd0 },
- { 0x05000010, 0x20001a60, 0x1e000f62, 0x00000000 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000020 },
- { 0x00010001, 0x2f621e68, 0x18000000, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000020 },
- { 0x03000010, 0x20001a60, 0x1a000f72, 0x00000fc2 },
- { 0x00010040, 0x2f621a68, 0x1e000fc2, 0xffd8ffd8 },
- { 0x00200041, 0x2f801a68, 0x1e450fa8, 0xffffffff },
- { 0x00200040, 0x2fe41a68, 0x1a450f60, 0x00450f80 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0020000c, 0x2a801a68, 0x1e450ac0, 0x00020002 },
- { 0x00200001, 0x24001a68, 0x00450a80, 0x00000000 },
- { 0x00200040, 0x2a881a68, 0x1e450a80, 0x00030003 },
- { 0x00200005, 0x2a901248, 0x16450a88, 0xfffcfffc },
- { 0x05000010, 0x20001a60, 0x1e000400, 0x00000000 },
- { 0x00010041, 0x24001a68, 0x1e000400, 0xffffffff },
- { 0x05000010, 0x20001a60, 0x1e000402, 0x00000000 },
- { 0x00010041, 0x24021a68, 0x1e000402, 0xffffffff },
- { 0x04000010, 0x20001a60, 0x1e000400, 0x00040004 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x04000010, 0x20001a60, 0x1e000402, 0x00040004 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000010 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x000003a0 },
- { 0x00600001, 0x2c800208, 0x008d0180, 0x00000000 },
- { 0x00600001, 0x2ca00208, 0x008d01a0, 0x00000000 },
- { 0x00000001, 0x24401e68, 0x18000000, 0xfff0fff0 },
- { 0x00000001, 0x24421e68, 0x18000000, 0xfff4fff4 },
- { 0x00000001, 0x2fa80208, 0x00000448, 0x00000000 },
- { 0x00200040, 0x2fa01a68, 0x1a450440, 0x00450a90 },
- { 0x00600001, 0x2fc00208, 0x008d0a40, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0xfffffca0 },
- { 0x00200001, 0x24401a68, 0x00450fe4, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x7e200000 },
- { 0x00000001, 0x24561648, 0x10000000, 0x28302830 },
- { 0x00000001, 0x24440208, 0x00000440, 0x00000000 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x24600608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x24600608, 0x00000000, 0x00000002 },
- { 0x00000001, 0x24642288, 0x0000009c, 0x00000000 },
- { 0x00000001, 0x24680608, 0x00000000, 0x30003030 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00400001, 0x45800208, 0x00000a20, 0x00000000 },
- { 0x00400001, 0x45840208, 0x00000a20, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00000001, 0x28800608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28840608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28880608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x288c0608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28900608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28940608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28980608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x289c0608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28a00608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28a40608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28a80608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x28ac0608, 0x00000000, 0x000f0f0f },
- { 0x00400001, 0x28b00608, 0x00000000, 0x00000000 },
- { 0x08600031, 0x21800a08, 0x0e000800, 0x0c784000 },
- { 0x00000001, 0x25740608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25752288, 0x00000199, 0x00000000 },
- { 0x00000001, 0x25762288, 0x0000019a, 0x00000000 },
- { 0x00000005, 0x24001248, 0x16000180, 0x00030003 },
- { 0x00000001, 0x25742288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28800208, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28a00208, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28c00208, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28e00208, 0x008d0200, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00241000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00040004 },
- { 0x00000040, 0x247e2288, 0x2200047e, 0x00000400 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d0580, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x0e000800, 0x10786000 },
- { 0x05000010, 0x20001240, 0x12000188, 0x00000c88 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000020 },
- { 0x00600001, 0x21800208, 0x008d0c80, 0x00000000 },
- { 0x00600001, 0x21a00208, 0x008d0ca0, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0xfffff6f0 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/src/shaders/vme/mpeg2_inter_gen9.g9a b/src/shaders/vme/mpeg2_inter_gen9.g9a
deleted file mode 100644
index 26f94a7..0000000
--- a/src/shaders/vme/mpeg2_inter_gen9.g9a
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "vme8.inc"
-#include "vme75_mpeg2.inc"
-#include "mpeg2_inter_gen8.asm"
diff --git a/src/shaders/vme/mpeg2_inter_gen9.g9b b/src/shaders/vme/mpeg2_inter_gen9.g9b
deleted file mode 100644
index 222da7c..0000000
--- a/src/shaders/vme/mpeg2_inter_gen9.g9b
+++ /dev/null
@@ -1,371 +0,0 @@
- { 0x00800001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24c00608, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24482248, 0x164500a0, 0x00040004 },
- { 0x00000001, 0x24542288, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24881208, 0x220000a2, 0x000000a1 },
- { 0x00000040, 0x24880208, 0x22000488, 0x000000a0 },
- { 0x00000041, 0x24880208, 0x06000488, 0x00000018 },
- { 0x00000001, 0x24942288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x2a401248, 0x16450098, 0x00040004 },
- { 0x00200001, 0x2a501248, 0x00450094, 0x00000000 },
- { 0x00600001, 0x2ac00608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2a800608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2ae00608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b000608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b200608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20001240, 0x160000a6, 0x00040004 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000720 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00600060 },
- { 0x00210001, 0x2af41e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000f0 },
- { 0x00000001, 0x2ae00e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24001a68, 0x1e000400, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2af41e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000040 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x06000b40, 0x02180203 },
- { 0x00200001, 0x2ae40208, 0x00450ba0, 0x00000000 },
- { 0x00000001, 0x2af01e68, 0x18000000, 0x00010001 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00100010 },
- { 0x00210001, 0x2b141e68, 0x18000000, 0xffffffff },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000360 },
- { 0x00000001, 0x2b000e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24021a68, 0x1e000402, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b141e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000040 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x06000b40, 0x02180203 },
- { 0x00200001, 0x2b040208, 0x00450ba0, 0x00000000 },
- { 0x00000001, 0x2b101e68, 0x18000000, 0x00010001 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00080008 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000110 },
- { 0x00000001, 0x2b200e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24021a68, 0x1e000402, 0xffffffff },
- { 0x00000040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000180 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x06000b40, 0x02180203 },
- { 0x00200001, 0x2b240208, 0x00450ba0, 0x00000000 },
- { 0x00000001, 0x2b301e68, 0x18000000, 0x00010001 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000130 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00040004 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000f0 },
- { 0x00000001, 0x2b200e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00200040, 0x24001a68, 0x1e450400, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000040 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a88, 0x06000b40, 0x02180203 },
- { 0x00200001, 0x2b240208, 0x00450ba0, 0x00000000 },
- { 0x00000001, 0x2b301e68, 0x18000000, 0x00010001 },
- { 0x00000040, 0x24000a28, 0x0a000b00, 0x00000b20 },
- { 0x01000010, 0x20000a20, 0x0e000400, 0x00000000 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000080 },
- { 0x02000010, 0x20000a20, 0x0e000ae0, 0x00000000 },
- { 0x00010001, 0x2b040208, 0x00000ae4, 0x00000000 },
- { 0x00010001, 0x2b240208, 0x00000ae4, 0x00000000 },
- { 0x00010001, 0x2b141248, 0x00000af4, 0x00000000 },
- { 0x00010001, 0x2b341248, 0x00000af4, 0x00000000 },
- { 0x00010001, 0x2ac00208, 0x00000ae4, 0x00000000 },
- { 0x00110001, 0x2ac00608, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000190 },
- { 0x00600001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000af4, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000ae4, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000b14, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000b04, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000b34, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000b24, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x2ac00208, 0x00000404, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000c0 },
- { 0x00000001, 0x2fa01a68, 0x00000ae4, 0x00000000 },
- { 0x00000001, 0x2fa41a68, 0x00000b04, 0x00000000 },
- { 0x00000001, 0x2fa81a68, 0x00000b24, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000780 },
- { 0x00000001, 0x2ac01a68, 0x00000fe4, 0x00000000 },
- { 0x00000001, 0x2fa01a68, 0x00000ae6, 0x00000000 },
- { 0x00000001, 0x2fa41a68, 0x00000b06, 0x00000000 },
- { 0x00000001, 0x2fa81a68, 0x00000b26, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000720 },
- { 0x00000001, 0x2ac21a68, 0x00000fe4, 0x00000000 },
- { 0x00200001, 0x2a201a68, 0x00450ae4, 0x00000000 },
- { 0x00000001, 0x24401e68, 0x18000000, 0xfff0fff0 },
- { 0x00000001, 0x24421e68, 0x18000000, 0xfff4fff4 },
- { 0x00000001, 0x2fa00208, 0x00000440, 0x00000000 },
- { 0x00000001, 0x2fa80208, 0x00000448, 0x00000000 },
- { 0x00600001, 0x2fc00208, 0x008d0a40, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x000007b0 },
- { 0x00200001, 0x24401a68, 0x00450fe4, 0x00000000 },
- { 0x00600001, 0x25600208, 0x008d0020, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x28600608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28a00608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00010001 },
- { 0x00000001, 0x28a52288, 0x00000400, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00bb00bb },
- { 0x00000001, 0x28a42288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28c00608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x28d00608, 0x00000000, 0x11111111 },
- { 0x00000001, 0x28dc0608, 0x00000000, 0x00010101 },
- { 0x00600001, 0x28e00608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24600608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x247c1648, 0x10000000, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00020002 },
- { 0x00000040, 0x24001248, 0x16000400, 0x00040004 },
- { 0x00000001, 0x247c2288, 0x00000400, 0x00000000 },
- { 0x00000001, 0x247d2288, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00000000 },
- { 0x00000001, 0x247e2288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00800000 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x06000800, 0x10782000 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200208, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240208, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280208, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0208, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28301248, 0x0000018c, 0x00000000 },
- { 0x00000001, 0x28340208, 0x00000188, 0x00000000 },
- { 0x00000001, 0x28380208, 0x0000019c, 0x00000000 },
- { 0x00000001, 0x283c0208, 0x00000488, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x06000800, 0x040a0203 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x7e200000 },
- { 0x00000001, 0x24561648, 0x10000000, 0x28302830 },
- { 0x00000001, 0x24440208, 0x00000440, 0x00000000 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x24600608, 0x00000000, 0x00000002 },
- { 0x00000001, 0x24642288, 0x0000009c, 0x00000000 },
- { 0x00000001, 0x24680608, 0x00000000, 0x30003030 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00400001, 0x45800208, 0x00000a20, 0x00000000 },
- { 0x00400001, 0x45840208, 0x00000a20, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00000001, 0x28800608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28840608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28880608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x288c0608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28900608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28940608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28980608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x289c0608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28a00608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28a40608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28a80608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x28ac0608, 0x00000000, 0x000f0f0f },
- { 0x00400001, 0x28b00608, 0x00000000, 0x00000000 },
- { 0x08600031, 0x21800a08, 0x06000800, 0x0c784000 },
- { 0x00000001, 0x25740608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25752288, 0x00000199, 0x00000000 },
- { 0x00000001, 0x25762288, 0x0000019a, 0x00000000 },
- { 0x00000005, 0x24001248, 0x16000180, 0x00030003 },
- { 0x00000001, 0x25742288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28800208, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28a00208, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28c00208, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28e00208, 0x008d0200, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00241000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00040004 },
- { 0x00000040, 0x247e2288, 0x2200047e, 0x00000400 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d0580, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x06000800, 0x10786000 },
- { 0x01000005, 0x20001240, 0x160000a6, 0x00040004 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x000004a0 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000002 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200208, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240208, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28280208, 0x00000188, 0x00000000 },
- { 0x00000001, 0x282c0208, 0x00000574, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x06000800, 0x040a0003 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000001 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28800208, 0x008d0200, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x06000800, 0x040a0203 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000008 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0240, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x06000800, 0x040a0203 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x0219e003 },
- { 0x00600001, 0x2e000208, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24000a40, 0x06000e00, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa4 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000070 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa0, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000a0 },
- { 0x04000010, 0x20001a60, 0x1a000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa4, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000060 },
- { 0x04000010, 0x20001a60, 0x1a000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa4, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa0, 0x00000000 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00200040, 0x2f601a68, 0x1a450fa8, 0x00450fa0 },
- { 0x00000040, 0x2f701a68, 0x1e000f60, 0x00300030 },
- { 0x00000040, 0x2f721a68, 0x1e000f62, 0x00280028 },
- { 0x00200041, 0x2f901a68, 0x1e450fd0, 0xffffffff },
- { 0x00200040, 0x2f801a68, 0x1a450fa8, 0x00450f90 },
- { 0x00200040, 0x2f841a68, 0x1a450fa8, 0x00450fd0 },
- { 0x05000010, 0x20001a60, 0x1a000f60, 0x00000f80 },
- { 0x00010001, 0x2f601a68, 0x00000f80, 0x00000000 },
- { 0x03000010, 0x20001a60, 0x1a000f70, 0x00000f84 },
- { 0x00010040, 0x2f601a68, 0x1e000f84, 0xffd0ffd0 },
- { 0x05000010, 0x20001a60, 0x1a000f62, 0x00000f82 },
- { 0x00010001, 0x2f621a68, 0x00000f82, 0x00000000 },
- { 0x03000010, 0x20001a60, 0x1a000f72, 0x00000f86 },
- { 0x00010040, 0x2f621a68, 0x1e000f86, 0xffd8ffd8 },
- { 0x05000010, 0x20001a60, 0x1e000f60, 0x00000000 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000020 },
- { 0x00010001, 0x2f601e68, 0x18000000, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x03000010, 0x20001a60, 0x1a000f70, 0x00000fc0 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000010 },
- { 0x00010040, 0x2f601a68, 0x1e000fc0, 0xffd0ffd0 },
- { 0x05000010, 0x20001a60, 0x1e000f62, 0x00000000 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000020 },
- { 0x00010001, 0x2f621e68, 0x18000000, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000020 },
- { 0x03000010, 0x20001a60, 0x1a000f72, 0x00000fc2 },
- { 0x00010040, 0x2f621a68, 0x1e000fc2, 0xffd8ffd8 },
- { 0x00200041, 0x2f801a68, 0x1e450fa8, 0xffffffff },
- { 0x00200040, 0x2fe41a68, 0x1a450f60, 0x00450f80 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0020000c, 0x2a801a68, 0x1e450ac0, 0x00020002 },
- { 0x00200001, 0x24001a68, 0x00450a80, 0x00000000 },
- { 0x00200040, 0x2a881a68, 0x1e450a80, 0x00030003 },
- { 0x00200005, 0x2a901248, 0x16450a88, 0xfffcfffc },
- { 0x05000010, 0x20001a60, 0x1e000400, 0x00000000 },
- { 0x00010041, 0x24001a68, 0x1e000400, 0xffffffff },
- { 0x05000010, 0x20001a60, 0x1e000402, 0x00000000 },
- { 0x00010041, 0x24021a68, 0x1e000402, 0xffffffff },
- { 0x04000010, 0x20001a60, 0x1e000400, 0x00040004 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x04000010, 0x20001a60, 0x1e000402, 0x00040004 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000010 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x000003a0 },
- { 0x00600001, 0x2c800208, 0x008d0180, 0x00000000 },
- { 0x00600001, 0x2ca00208, 0x008d01a0, 0x00000000 },
- { 0x00000001, 0x24401e68, 0x18000000, 0xfff0fff0 },
- { 0x00000001, 0x24421e68, 0x18000000, 0xfff4fff4 },
- { 0x00000001, 0x2fa80208, 0x00000448, 0x00000000 },
- { 0x00200040, 0x2fa01a68, 0x1a450440, 0x00450a90 },
- { 0x00600001, 0x2fc00208, 0x008d0a40, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0xfffffca0 },
- { 0x00200001, 0x24401a68, 0x00450fe4, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x7e200000 },
- { 0x00000001, 0x24561648, 0x10000000, 0x28302830 },
- { 0x00000001, 0x24440208, 0x00000440, 0x00000000 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x24600608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x24600608, 0x00000000, 0x00000002 },
- { 0x00000001, 0x24642288, 0x0000009c, 0x00000000 },
- { 0x00000001, 0x24680608, 0x00000000, 0x30003030 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00400001, 0x45800208, 0x00000a20, 0x00000000 },
- { 0x00400001, 0x45840208, 0x00000a20, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00000001, 0x28800608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28840608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28880608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x288c0608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28900608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28940608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28980608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x289c0608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28a00608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28a40608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28a80608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x28ac0608, 0x00000000, 0x000f0f0f },
- { 0x00400001, 0x28b00608, 0x00000000, 0x00000000 },
- { 0x08600031, 0x21800a08, 0x06000800, 0x0c784000 },
- { 0x00000001, 0x25740608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25752288, 0x00000199, 0x00000000 },
- { 0x00000001, 0x25762288, 0x0000019a, 0x00000000 },
- { 0x00000005, 0x24001248, 0x16000180, 0x00030003 },
- { 0x00000001, 0x25742288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28800208, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28a00208, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28c00208, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28e00208, 0x008d0200, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00241000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00040004 },
- { 0x00000040, 0x247e2288, 0x2200047e, 0x00000400 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d0580, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x06000800, 0x10786000 },
- { 0x05000010, 0x20001240, 0x12000188, 0x00000c88 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000020 },
- { 0x00600001, 0x21800208, 0x008d0c80, 0x00000000 },
- { 0x00600001, 0x21a00208, 0x008d0ca0, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0xfffff6f0 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/src/shaders/vme/mpeg2_inter_haswell.asm b/src/shaders/vme/mpeg2_inter_haswell.asm
deleted file mode 100644
index 04a8685..0000000
--- a/src/shaders/vme/mpeg2_inter_haswell.asm
+++ /dev/null
@@ -1,876 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- * Author : Zhao Yakui <yakui.zhao@intel.com>
- */
-// Modual name: mpeg2_inter_haswell.asm
-//
-// Make MPEG2 inter predition estimation for Inter-frame on Haswell
-//
-
-//
-// Now, begin source code....
-//
-
-#define SAVE_RET add (1) RETURN_REG<1>:ud ip:ud 32:ud
-#define RETURN mov (1) ip:ud RETURN_REG<0,1,0>:ud
-
-/*
- * __START
- */
-__INTER_START:
-mov (16) tmp_reg0.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg2.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg4.0<1>:UD 0x0:UD {align1} ;
-mov (16) tmp_reg6.0<1>:UD 0x0:UD {align1} ;
-
-shl (2) vme_m0.8<1>:UW orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-mov (1) vme_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-mul (1) obw_m0.8<1>:UD w_in_mb_uw<0,1,0>:UW orig_y_ub<0,1,0>:UB {align1};
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD orig_x_ub<0,1,0>:UB {align1};
-mul (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 24:UD {align1};
-mov (1) obw_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) pic_ref.0<1>:uw r4.24<2,2,1>:uw 4:uw {align1};
-mov (2) pic_ref.16<1>:uw r4.20<2,2,1>:uw {align1};
-mov (8) mb_mvp_ref.0<1>:ud 0:ud {align1};
-mov (8) mb_ref_win.0<1>:ud 0:ud {align1};
-mov (8) mba_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbb_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbc_result.0<1>:ud 0x0:ud {align1};
-
-and.z.f0.0 (1) null:uw mb_hwdep<0,1,0>:uw 0x04:uw {align1};
-(f0.0) jmpi (1) __mb_hwdep_end;
-/* read back the data for MB A */
-/* the layout of MB result is: rx.0(Available). rx.4(MVa), rX.8(MVb), rX.16(Pred_L0 flag),
-* rX.18 (Pred_L1 flag), rX.20(Forward reference ID), rX.22(Backwared reference ID)
-*/
-mba_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_AE:uw {align1};
-/* MB A doesn't exist. Zero MV. mba_flag is zero and ref ID = -1 */
-(f0.0) mov (2) mba_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbb_start;
-mov (1) mba_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mba_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbb_start;
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB A */
-/* bind index 3, read 2 oword (16bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_2,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-/* TODO: RefID is required after multi-references are added */
-/* MV */
-mov (2) mba_result.4<1>:ud mb_mv0.0<2,2,1>:ud {align1};
-mov (1) mba_result.16<1>:w MB_PRED_FLAG {align1};
-
-mbb_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_B:uw {align1};
-/* MB B doesn't exist. Zero MV. mba_flag is zero */
-/* If MB B doesn't exist, neither MB C nor D exists */
-(f0.0) mov (2) mbb_result.20<1>:w -1:w {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (1) mbb_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mbb_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbc_start;
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB B */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_2,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-/* TODO: RefID is required after multi-references are added */
-mov (2) mbb_result.4<1>:ud mb_mv0.0<2,2,1>:ud {align1};
-mov (1) mbb_result.16<1>:w MB_PRED_FLAG {align1};
-
-mbc_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_C:uw {align1};
-/* MB C doesn't exist. Zero MV. mba_flag is zero */
-/* Based on h264 spec the MB D will be replaced if MB C doesn't exist */
-(f0.0) jmpi (1) mbd_start;
-mov (1) mbc_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB C */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_2,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-/* TODO: RefID is required after multi-references are added */
-/* Forward MV */
-mov (2) mbc_result.4<1>:ud mb_mv0.0<2,2,1>:ud {align1};
-mov (1) mbc_result.16<1>:w MB_PRED_FLAG {align1};
-
-jmpi (1) mb_mvp_start;
-mbd_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_D:uw {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (1) mbc_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (2) tmp_reg0.0<1>:w tmp_reg0.0<2,2,1>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB D */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ub
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_2,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-
-/* Forward MV */
-mov (2) mbc_result.4<1>:ud mb_mv0.0<2,2,1>:ud {align1};
-mov (1) mbc_result.16<1>:w MB_PRED_FLAG {align1};
-
-mb_mvp_start:
-/*TODO: Add the skip prediction */
-/* Check whether both MB B and C are inavailable */
-add (1) tmp_reg0.0<1>:d mbb_result.0<0,1,0>:d mbc_result.0<0,1,0>:d {align1};
-cmp.z.f0.0 (1) null:d tmp_reg0.0<0,1,0>:d 0:d {align1};
-(-f0.0) jmpi (1) mb_median_start;
-cmp.nz.f0.0 (1) null:d mba_result.0<0,1,0>:d 0:d {align1};
-(f0.0) mov (1) mbb_result.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-(f0.0) mov (1) mbc_result.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-(f0.0) mov (1) mbb_result.20<1>:uw mba_result.20<0,1,0>:uw {align1};
-(f0.0) mov (1) mbc_result.20<1>:uw mba_result.20<0,1,0>:uw {align1};
-(f0.0) mov (1) mb_mvp_ref.0<1>:ud mba_result.4<0,1,0>:ud {align1};
-(-f0.0) mov (1) mb_mvp_ref.0<1>:ud 0:ud {align1};
-jmpi (1) __mb_hwdep_end;
-
-mb_median_start:
-/* check whether only one neighbour MB has the same ref ID with the current MB */
-mov (8) tmp_reg0.0<1>:ud 0:ud {align1};
-cmp.z.f0.0 (1) null:d mba_result.20<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbb_result.20<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbb_result.4<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbc_result.20<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbc_result.4<0,1,0>:ud {align1};
-cmp.e.f0.0 (1) null:d tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) mb_mvp_ref.0<1>:ud tmp_reg0.4<0,1,0>:ud {align1};
-(f0.0) jmpi (1) __mb_hwdep_end;
-
-mov (1) INPUT_ARG0.0<1>:w mba_result.4<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.4<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.4<0,1,0>:w {align1};
-SAVE_RET {align1};
- jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.0<1>:w RET_ARG<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.0<1>:w mba_result.6<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.6<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.6<0,1,0>:w {align1};
-SAVE_RET {align1};
-jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.2<1>:w RET_ARG<0,1,0>:w {align1};
-
-__mb_hwdep_end:
-
-mov (2) mv_cc_ref.0<1>:w mba_result.4<2,2,1>:w {align1};
-
-/* Calibrate the ref window for MPEG2 */
-mov (1) vme_m0.0<1>:W -16:W {align1};
-mov (1) vme_m0.2<1>:W -12:W {align1};
-
-mov (1) INPUT_ARG0.0<1>:ud vme_m0.0<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.8<1>:ud vme_m0.8<0,1,0>:ud {align1};
-mov (8) INPUT_ARG1.0<1>:ud pic_ref.0<8,8,1>:ud {align1};
-
-SAVE_RET {align1};
-jmpi (1) ref_boundary_check;
-mov (2) vme_m0.0<1>:w RET_ARG<2,2,1>:w {align1};
-
-/* m2, get the MV/Mb cost passed from constant buffer when
-spawning thread by MEDIA_OBJECT */
-mov (8) vme_m2<1>:UD r1.0<8,8,1>:UD {align1};
-
-mov (8) vme_msg_2<1>:UD vme_m2.0<8,8,1>:UD {align1};
-
-/* m3 */
-mov (8) vme_msg_3<1>:UD 0x0:UD {align1};
-
-/* the neighbour pixel is zero for MPEG2 Intra-prediction */
-
-/* m4 */
-mov (8) vme_msg_4<1>:UD 0:UD {align1};
-mov (1) tmp_reg0.0<1>:UW LUMA_INTRA_MODE:UW {align1};
-/* Use the Luma mode */
-mov (1) vme_msg_4.5<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-mov (1) tmp_reg0.0<1>:UW INTRA16_DC_PRED:UW {align1};
-mov (1) vme_msg_4.4<1>:ub tmp_reg0.0<0,1,0>:UB {align1};
-
-/* m5 */
-mov (8) vme_msg_5<1>:UD 0x0:UD {align1};
-mov (1) vme_msg_5.16<1>:UD INTRA_PREDICTORE_MODE {align1};
-
-/* the penalty for Intra mode */
-mov (1) vme_msg_5.28<1>:UD 0x010101:UD {align1};
-
-
-/* m6 */
-mov (8) vme_msg_6.0<1>:UD 0:Ud {align1};
-
-/*
- * SIC VME message
- */
-/* m0 */
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-/* Disable Intra8x8/Intra4x4 Intra-prediction */
-/* m1 */
-mov (8) vme_m1.0<1>:ud 0x0:UD {align1};
-
-mov (1) intra_flag<1>:UW 0x0:UW {align1} ;
-mov (1) tmp_reg0.0<1>:uw LUMA_INTRA_8x8_DISABLE:uw {align1};
-add (1) tmp_reg0.0<1>:uw tmp_reg0.0<0,1,0>:uw LUMA_INTRA_4x4_DISABLE:uw {align1};
-mov (1) intra_part_mask_ub<1>:UB tmp_reg0.0<0,1,0>:ub {align1};
-
-/* assign MB intra struct from the thread payload*/
-mov (1) mb_intra_struct_ub<1>:UB input_mb_intra_ub<0,1,0>:UB {align1};
-
-/* Enable DC HAAR component when calculating HARR SATD block */
-mov (1) tmp_reg0.0<1>:UW DC_HARR_ENABLE:UW {align1};
-mov (1) vme_m1.30<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-mov (1) vme_m0.12<1>:UD INTRA_SAD_HAAR:UD {align1}; /* 16x16 Source, Intra_harr */
-/* m0 */
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-mov (8) vme_msg_1<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-/* after verification it will be passed by using payload */
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- cre(
- BIND_IDX_VME,
- VME_SIC_MESSAGE_TYPE
- )
- mlen sic_vme_msg_length
- rlen vme_wb_length
- {align1};
-
-/*
- * Oword Block Write message
- */
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-mov (1) msg_reg1.4<1>:UD vme_wb.16<0,1,0>:UD {align1};
-mov (1) msg_reg1.8<1>:UD vme_wb.20<0,1,0>:UD {align1};
-mov (1) msg_reg1.12<1>:UD vme_wb.24<0,1,0>:UD {align1};
-
-/* Distortion, Intra (17-16), */
-mov (1) msg_reg1.16<1>:UW vme_wb.12<0,1,0>:UW {align1};
-
-mov (1) msg_reg1.20<1>:UD vme_wb.8<0,1,0>:UD {align1};
-/* VME clock counts */
-mov (1) msg_reg1.24<1>:UD vme_wb.28<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.28<1>:UD obw_m0.8<0,1,0>:UD {align1};
-
-/* bind index 3, write 2 oword (32bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-/* IME search */
-mov (1) vme_m0.12<1>:UD SEARCH_CTRL_SINGLE + INTER_PART_MASK + INTER_SAD_HAAR:UD {align1}; /* 16x16 Source, harr */
-mov (1) vme_m0.22<1>:UW REF_REGION_SIZE {align1}; /* Reference Width&Height, 48x40 */
-
-mov (1) vme_m0.4<1>:UD vme_m0.0<0,1,0>:UD {align1};
-
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-mov (1) vme_m1.0<1>:UD ADAPTIVE_SEARCH_ENABLE:ud {align1} ;
-/* the Max MV number is passed by constant buffer */
-mov (1) vme_m1.4<1>:UB r4.28<0,1,0>:UB {align1};
-mov (1) vme_m1.8<1>:UD START_CENTER + SEARCH_PATH_LEN:UD {align1};
-/* Set the MV cost center */
-mov (1) vme_m1.16<1>:ud mv_cc_ref.0<0,1,0>:ud {align1};
-mov (1) vme_m1.20<1>:ud mv_cc_ref.0<0,1,0>:ud {align1};
-
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-mov (8) vme_msg_2<1>:UD vme_m2.0<8,8,1>:UD {align1};
-/* M3/M4 search path */
-
-mov (1) vme_msg_3.0<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_3.4<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_3.8<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_3.12<1>:UD 0x100F0F0F:UD {align1};
-mov (1) vme_msg_3.16<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_3.20<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_3.24<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_3.28<1>:UD 0x100F0F0F:UD {align1};
-
-mov (1) vme_msg_4.0<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_4.4<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_4.8<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_4.12<1>:UD 0x000F0F0F:UD {align1};
-
-mov (4) vme_msg_4.16<1>:UD 0x0:UD {align1};
-
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- vme(
- BIND_IDX_VME,
- 0,
- 0,
- VME_IME_MESSAGE_TYPE
- )
- mlen ime_vme_msg_length
- rlen vme_wb_length {align1};
-
-/* Set Macroblock-shape/mode for FBR */
-
-mov (1) vme_m2.20<1>:UD 0x0:UD {align1};
-mov (1) vme_m2.21<1>:UB vme_wb.25<0,1,0>:UB {align1};
-mov (1) vme_m2.22<1>:UB vme_wb.26<0,1,0>:UB {align1};
-
-and (1) tmp_reg0.0<1>:UW vme_wb.0<0,1,0>:UW 0x03:UW {align1};
-mov (1) vme_m2.20<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-/* Send FBR message into CRE */
-
-mov (8) vme_msg_3.0<1>:UD vme_wb1.0<8,8,1>:UD {align1};
-mov (8) vme_msg_4.0<1>:ud vme_wb2.0<8,8,1>:ud {align1};
-mov (8) vme_msg_5.0<1>:ud vme_wb3.0<8,8,1>:ud {align1};
-mov (8) vme_msg_6.0<1>:ud vme_wb4.0<8,8,1>:ud {align1};
-
-mov (1) vme_m0.12<1>:UD INTER_SAD_HAAR + SUB_PEL_MODE_HALF + FBR_BME_DISABLE:UD {align1}; /* 16x16 Source, 1/2 pixel, harr, BME disable */
-
-/* Bilinear filter */
-mov (1) tmp_reg0.0<1>:uw 0x04:uw {align1};
-add (1) vme_m1.30<1>:ub vme_m1.30<0,1,0>:ub tmp_reg0.0<0,1,0>:ub {align1};
-
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-mov (8) vme_msg_2.0<1>:UD vme_m2.0<8,8,1>:UD {align1};
-
-/* after verification it will be passed by using payload */
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- cre(
- BIND_IDX_VME,
- VME_FBR_MESSAGE_TYPE
- )
- mlen fbr_vme_msg_length
- rlen vme_wb_length
- {align1};
-
-and.z.f0.0 (1) null:uw mb_hwdep<0,1,0>:uw 0x04:uw {align1};
-(-f0.0) jmpi (1) vme_run_again;
-nop;
-vme_mv_output:
-
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x02:UD {align1};
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-/* write FME info */
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.4<1>:UD vme_wb.24<0,1,0>:UD {align1};
-/* Inter distortion of FME */
-mov (1) msg_reg1.8<1>:UD vme_wb.8<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.12<1>:UD vme_m2.20<0,1,0>:UD {align1};
-
-/* bind index 3, write oword (16bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_0,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-
-/* Write FME/BME MV */
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x01:UD {align1};
-mov (8) msg_reg0.0<1>:UD obw_m0.0<8,8,1>:UD {align1};
-
-
-mov (8) msg_reg1.0<1>:UD vme_wb1.0<8,8,1>:UD {align1};
-mov (8) msg_reg2.0<1>:ud vme_wb2.0<8,8,1>:ud {align1};
-mov (8) msg_reg3.0<1>:ud vme_wb3.0<8,8,1>:ud {align1};
-mov (8) msg_reg4.0<1>:ud vme_wb4.0<8,8,1>:ud {align1};
-/* bind index 3, write 8 oword (128 bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-/* Write FME/BME RefID */
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x08:UD {align1};
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-
-mov (8) msg_reg1.0<1>:UD vme_wb6.0<8,8,1>:UD {align1};
-
-/* bind index 3, write 2 oword (32bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-
-/* Issue message fence so that the previous write message is committed */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_FENCE,
- OBR_MF_COMMIT,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-__EXIT:
-/*
- * kill thread
- */
-mov (8) ts_msg_reg0<1>:UD r0<8,8,1>:UD {align1};
-send (16) ts_msg_ind acc0<1>UW null thread_spawner(0, 0, 1) mlen 1 rlen 0 {align1 EOT};
-
- nop ;
- nop ;
-
-word_imedian:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_a_ge_b;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_end;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- jmpi (1) cmp_end;
-cmp_a_ge_b:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_end;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
-cmp_end:
- RETURN {align1};
-
-nop;
-nop;
-
-ref_boundary_check:
-
-/* The left/up coordinate of reference window */
-add (2) TEMP_VAR0.0<1>:w INPUT_ARG0.8<2,2,1>:w INPUT_ARG0.0<2,2,1>:w {align1};
-/* The right/bottom coordinate of reference window */
-add (1) TEMP_VAR0.16<1>:w TEMP_VAR0.0<0,1,0>:w 48:w {align1};
-add (1) TEMP_VAR0.18<1>:w TEMP_VAR0.2<0,1,0>:w 40:w {align1};
-
-/* Firstly the MV range is checked */
-mul (2) TEMP_VAR1.16<1>:w INPUT_ARG1.16<2,2,1>:w -1:w {align1};
-add (2) TEMP_VAR1.0<1>:w INPUT_ARG0.8<2,2,1>:w TEMP_VAR1.16<2,2,1>:w {align1};
-add (2) TEMP_VAR1.4<1>:w INPUT_ARG0.8<2,2,1>:w INPUT_ARG1.16<2,2,1>:w {align1};
-
-cmp.l.f0.0 (1) null:w TEMP_VAR0.0<0,1,0>:w TEMP_VAR1.0<0,1,0>:w {align1};
-(f0.0) mov (1) TEMP_VAR0.0<1>:w TEMP_VAR1.0<0,1,0>:w {align1};
-cmp.g.f0.0 (1) null:w TEMP_VAR0.16<0,1,0>:w TEMP_VAR1.4<0,1,0>:w {align1};
-(f0.0) add (1) TEMP_VAR0.0<1>:w TEMP_VAR1.4<0,1,0>:w -48:w {align1};
-cmp.l.f0.0 (1) null:w TEMP_VAR0.2<0,1,0>:w TEMP_VAR1.2<0,1,0>:w {align1};
-(f0.0) mov (1) TEMP_VAR0.2<1>:w TEMP_VAR1.2<0,1,0>:w {align1};
-cmp.g.f0.0 (1) null:w TEMP_VAR0.18<0,1,0>:w TEMP_VAR1.6<0,1,0>:w {align1};
-(f0.0) add (1) TEMP_VAR0.2<1>:w TEMP_VAR1.6<0,1,0>:w -40:w {align1};
-
-x_left_cmp:
- cmp.l.f0.0 (1) null:w TEMP_VAR0.0<0,1,0>:w 0:w {align1};
- (-f0.0) jmpi (1) x_right_cmp;
- (f0.0) mov (1) TEMP_VAR0.0<1>:w 0:w {align1};
- jmpi (1) y_top_cmp;
-x_right_cmp:
- cmp.g.f0.0 (1) null:w TEMP_VAR0.16<0,1,0>:w INPUT_ARG1.0<0,1,0>:w {align1};
- (-f0.0) jmpi (1) y_top_cmp;
- (f0.0) add (1) TEMP_VAR0.0<1>:w INPUT_ARG1.0<0,1,0>:w -48:w {align1};
-y_top_cmp:
- cmp.l.f0.0 (1) null:w TEMP_VAR0.2<0,1,0>:w 0:w {align1};
- (-f0.0) jmpi (1) y_bottom_cmp;
- (f0.0) mov (1) TEMP_VAR0.2<1>:w 0:w {align1};
- jmpi (1) y_bottom_end;
-y_bottom_cmp:
- cmp.g.f0.0 (1) null:w TEMP_VAR0.18<0,1,0>:w INPUT_ARG1.2<0,1,0>:w {align1};
- (f0.0) add (1) TEMP_VAR0.2<1>:w INPUT_ARG1.2<0,1,0>:w -40:w {align1};
-
-y_bottom_end:
-mul (2) TEMP_VAR1.0<1>:w INPUT_ARG0.8<2,2,1>:w -1:w {align1};
-add (2) RET_ARG<1>:w TEMP_VAR0.0<2,2,1>:w TEMP_VAR1.0<2,2,1>:w {align1};
- RETURN {align1};
-nop;
-nop;
-
-vme_run_again:
-
-asr (2) mb_ref_win.0<1>:w mb_mvp_ref.0<2,2,1>:w 2:w {align1};
-mov (2) tmp_reg0.0<1>:w mb_ref_win.0<2,2,1>:w {align1};
-add (2) mb_ref_win.8<1>:w mb_ref_win.0<2,2,1>:w 3:w {align1};
-and (2) mb_ref_win.16<1>:uw mb_ref_win.8<2,2,1>:uw 0xFFFC:uw {align1};
-
-cmp.l.f0.0 (1) null:w tmp_reg0.0<0,1,0>:w 0:w {align1};
-(f0.0) mul (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w -1:w {align1};
-cmp.l.f0.0 (1) null:w tmp_reg0.2<0,1,0>:w 0:w {align1};
-(f0.0) mul (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-
-cmp.ge.f0.0 (1) null:w tmp_reg0.0<0,1,0>:w 4:w {align1};
-(f0.0) jmpi (1) vme_start;
-cmp.ge.f0.0 (1) null:w tmp_reg0.2<0,1,0>:w 4:w {align1};
-(f0.0) jmpi (1) vme_start;
-
-jmpi (1) vme_done;
-
-vme_start:
- mov (8) tmp_vme_wb0.0<1>:ud vme_wb0.0<8,8,1>:ud {align1};
- mov (8) tmp_vme_wb1.0<1>:ud vme_wb1.0<8,8,1>:ud {align1};
-
-/* Calibrate the ref window for MPEG2 */
-mov (1) vme_m0.0<1>:W -16:W {align1};
-mov (1) vme_m0.2<1>:W -12:W {align1};
-mov (4) INPUT_ARG0.0<1>:ud vme_m0.0<4,4,1>:ud {align1};
-add (2) INPUT_ARG0.0<1>:w INPUT_ARG0.0<2,2,1>:w mb_ref_win.16<2,2,1>:w {align1};
-mov (8) INPUT_ARG1.0<1>:ud pic_ref.0<8,8,1>:ud {align1};
-
-SAVE_RET {align1};
-jmpi (1) ref_boundary_check;
-mov (2) vme_m0.0<1>:w RET_ARG<2,2,1>:w {align1};
-
-/* IME search */
-mov (1) vme_m0.12<1>:UD SEARCH_CTRL_SINGLE + INTER_PART_MASK + INTER_SAD_HAAR:UD {align1}; /* 16x16 Source, harr */
-mov (1) vme_m0.22<1>:UW REF_REGION_SIZE {align1}; /* Reference Width&Height, 48x40 */
-
-mov (1) vme_m0.4<1>:UD vme_m0.0<0,1,0>:UD {align1};
-
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-mov (8) vme_m1.0<1>:ud 0x0:UD {align1};
-
-mov (1) vme_m1.0<1>:UD ADAPTIVE_SEARCH_ENABLE:ud {align1} ;
-/* the Max MV number is passed by constant buffer */
-mov (1) vme_m1.4<1>:UB r4.28<0,1,0>:UB {align1};
-mov (1) vme_m1.8<1>:UD START_CENTER + SEARCH_PATH_LEN:UD {align1};
-/* Set the MV cost center */
-mov (1) vme_m1.16<1>:ud mv_cc_ref.0<0,1,0>:ud {align1};
-mov (1) vme_m1.20<1>:ud mv_cc_ref.0<0,1,0>:ud {align1};
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-mov (8) vme_msg_2<1>:UD vme_m2.0<8,8,1>:UD {align1};
-/* M3/M4 search path */
-
-mov (1) vme_msg_3.0<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_3.4<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_3.8<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_3.12<1>:UD 0x100F0F0F:UD {align1};
-mov (1) vme_msg_3.16<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_3.20<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_3.24<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_3.28<1>:UD 0x100F0F0F:UD {align1};
-
-mov (1) vme_msg_4.0<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_4.4<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_4.8<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_4.12<1>:UD 0x000F0F0F:UD {align1};
-
-mov (4) vme_msg_4.16<1>:UD 0x0:UD {align1};
-
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- vme(
- BIND_IDX_VME,
- 0,
- 0,
- VME_IME_MESSAGE_TYPE
- )
- mlen ime_vme_msg_length
- rlen vme_wb_length {align1};
-
-/* Set Macroblock-shape/mode for FBR */
-
-mov (1) vme_m2.20<1>:UD 0x0:UD {align1};
-mov (1) vme_m2.21<1>:UB vme_wb.25<0,1,0>:UB {align1};
-mov (1) vme_m2.22<1>:UB vme_wb.26<0,1,0>:UB {align1};
-
-and (1) tmp_reg0.0<1>:UW vme_wb.0<0,1,0>:UW 0x03:UW {align1};
-mov (1) vme_m2.20<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-/* Send FBR message into CRE */
-
-mov (8) vme_msg_3.0<1>:UD vme_wb1.0<8,8,1>:UD {align1};
-mov (8) vme_msg_4.0<1>:ud vme_wb2.0<8,8,1>:ud {align1};
-mov (8) vme_msg_5.0<1>:ud vme_wb3.0<8,8,1>:ud {align1};
-mov (8) vme_msg_6.0<1>:ud vme_wb4.0<8,8,1>:ud {align1};
-
-mov (1) vme_m0.12<1>:UD INTER_SAD_HAAR + SUB_PEL_MODE_HALF + FBR_BME_DISABLE:UD {align1}; /* 16x16 Source, 1/2 pixel, harr, BME disable */
-
-/* Bilinear filter */
-mov (1) tmp_reg0.0<1>:uw 0x04:uw {align1};
-add (1) vme_m1.30<1>:ub vme_m1.30<0,1,0>:ub tmp_reg0.0<0,1,0>:ub {align1};
-
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-mov (8) vme_msg_2.0<1>:UD vme_m2.0<8,8,1>:UD {align1};
-
-/* after verification it will be passed by using payload */
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- cre(
- BIND_IDX_VME,
- VME_FBR_MESSAGE_TYPE
- )
- mlen fbr_vme_msg_length
- rlen vme_wb_length
- {align1};
-
-cmp.l.f0.0 (1) null:uw vme_wb0.8<0,1,0>:uw tmp_vme_wb0.8<0,1,0>:uw {align1};
-(f0.0) jmpi (1) vme_done;
-mov (8) vme_wb0.0<1>:ud tmp_vme_wb0.0<8,8,1>:ud {align1};
-mov (8) vme_wb1.0<1>:ud tmp_vme_wb1.0<8,8,1>:ud {align1};
-
-vme_done:
- jmpi (1) vme_mv_output;
-nop;
-nop;
-nop;
-
diff --git a/src/shaders/vme/mpeg2_inter_haswell.g75a b/src/shaders/vme/mpeg2_inter_haswell.g75a
deleted file mode 100644
index 355812c..0000000
--- a/src/shaders/vme/mpeg2_inter_haswell.g75a
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "vme75.inc"
-#include "vme75_mpeg2.inc"
-#include "mpeg2_inter_haswell.asm"
diff --git a/src/shaders/vme/mpeg2_inter_haswell.g75b b/src/shaders/vme/mpeg2_inter_haswell.g75b
deleted file mode 100644
index 25c629d..0000000
--- a/src/shaders/vme/mpeg2_inter_haswell.g75b
+++ /dev/null
@@ -1,366 +0,0 @@
- { 0x00800001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24482e29, 0x004500a0, 0x00040004 },
- { 0x00000001, 0x24540231, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24884521, 0x000000a2, 0x000000a1 },
- { 0x00000040, 0x24884421, 0x00000488, 0x000000a0 },
- { 0x00000041, 0x24880c21, 0x00000488, 0x00000018 },
- { 0x00000001, 0x24940231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x2a402d29, 0x00450098, 0x00040004 },
- { 0x00200001, 0x2a500129, 0x00450094, 0x00000000 },
- { 0x00600001, 0x2ac00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2a800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2ae00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b200061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002d28, 0x000000a6, 0x00040004 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000710 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00600060 },
- { 0x00210001, 0x2af401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000f0 },
- { 0x00000001, 0x2ae000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24003dad, 0x00000400, 0xffffffff },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x00000018 },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b601ca1, 0x00000b40, 0x02280303 },
- { 0x05000010, 0x2000252c, 0x00000b70, 0x00000b88 },
- { 0x00210001, 0x2af401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000040 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000003 },
- { 0x0a800031, 0x2ba01ca1, 0x00000b40, 0x02180203 },
- { 0x00200001, 0x2ae40021, 0x00450ba0, 0x00000000 },
- { 0x00000001, 0x2af001ed, 0x00000000, 0x00010001 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00100010 },
- { 0x00210001, 0x2b1401ed, 0x00000000, 0xffffffff },
- { 0x00210001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000350 },
- { 0x00000001, 0x2b0000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24023dad, 0x00000402, 0xffffffff },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x00000018 },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b601ca1, 0x00000b40, 0x02280303 },
- { 0x05000010, 0x2000252c, 0x00000b70, 0x00000b88 },
- { 0x00210001, 0x2b1401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000040 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000003 },
- { 0x0a800031, 0x2ba01ca1, 0x00000b40, 0x02180203 },
- { 0x00200001, 0x2b040021, 0x00450ba0, 0x00000000 },
- { 0x00000001, 0x2b1001ed, 0x00000000, 0x00010001 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00080008 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000110 },
- { 0x00000001, 0x2b2000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24023dad, 0x00000402, 0xffffffff },
- { 0x00000040, 0x24003dad, 0x00000400, 0x00010001 },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x00000018 },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b601ca1, 0x00000b40, 0x02280303 },
- { 0x05000010, 0x2000252c, 0x00000b70, 0x00000b88 },
- { 0x00210001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000170 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000003 },
- { 0x0a800031, 0x2ba01ca1, 0x00000b40, 0x02180203 },
- { 0x00200001, 0x2b240021, 0x00450ba0, 0x00000000 },
- { 0x00000001, 0x2b3001ed, 0x00000000, 0x00010001 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000120 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00040004 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000f0 },
- { 0x00000001, 0x2b2000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00200040, 0x24003dad, 0x00450400, 0xffffffff },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x00000018 },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b601ca1, 0x00000b40, 0x02280303 },
- { 0x05000010, 0x2000252c, 0x00000b70, 0x00000b88 },
- { 0x00210001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000040 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000003 },
- { 0x0a800031, 0x2ba01cb1, 0x00000b40, 0x02180203 },
- { 0x00200001, 0x2b240021, 0x00450ba0, 0x00000000 },
- { 0x00000001, 0x2b3001ed, 0x00000000, 0x00010001 },
- { 0x00000040, 0x240014a5, 0x00000b00, 0x00000b20 },
- { 0x01000010, 0x20001ca4, 0x00000400, 0x00000000 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000080 },
- { 0x02000010, 0x20001ca4, 0x00000ae0, 0x00000000 },
- { 0x00010001, 0x2b040021, 0x00000ae4, 0x00000000 },
- { 0x00010001, 0x2b240021, 0x00000ae4, 0x00000000 },
- { 0x00010001, 0x2b140129, 0x00000af4, 0x00000000 },
- { 0x00010001, 0x2b340129, 0x00000af4, 0x00000000 },
- { 0x00010001, 0x2ac00021, 0x00000ae4, 0x00000000 },
- { 0x00110001, 0x2ac00061, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000190 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200af4, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000ae4, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200b14, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000b04, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200b34, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000b24, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200400, 0x00010001 },
- { 0x00010001, 0x2ac00021, 0x00000404, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000c0 },
- { 0x00000001, 0x2fa001ad, 0x00000ae4, 0x00000000 },
- { 0x00000001, 0x2fa401ad, 0x00000b04, 0x00000000 },
- { 0x00000001, 0x2fa801ad, 0x00000b24, 0x00000000 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000760 },
- { 0x00000001, 0x2ac001ad, 0x00000fe4, 0x00000000 },
- { 0x00000001, 0x2fa001ad, 0x00000ae6, 0x00000000 },
- { 0x00000001, 0x2fa401ad, 0x00000b06, 0x00000000 },
- { 0x00000001, 0x2fa801ad, 0x00000b26, 0x00000000 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000700 },
- { 0x00000001, 0x2ac201ad, 0x00000fe4, 0x00000000 },
- { 0x00200001, 0x2a2001ad, 0x00450ae4, 0x00000000 },
- { 0x00000001, 0x244001ed, 0x00000000, 0xfff0fff0 },
- { 0x00000001, 0x244201ed, 0x00000000, 0xfff4fff4 },
- { 0x00000001, 0x2fa00021, 0x00000440, 0x00000000 },
- { 0x00000001, 0x2fa80021, 0x00000448, 0x00000000 },
- { 0x00600001, 0x2fc00021, 0x008d0a40, 0x00000000 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000790 },
- { 0x00200001, 0x244001ad, 0x00450fe4, 0x00000000 },
- { 0x00600001, 0x25600021, 0x008d0020, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x24000169, 0x00000000, 0x00010001 },
- { 0x00000001, 0x28850231, 0x00000400, 0x00000000 },
- { 0x00000001, 0x24000169, 0x00000000, 0x00bb00bb },
- { 0x00000001, 0x28840231, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28a00061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x28b00061, 0x00000000, 0x11111111 },
- { 0x00000001, 0x28bc0061, 0x00000000, 0x00010101 },
- { 0x00600001, 0x28c00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x247c0169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x24000169, 0x00000000, 0x00020002 },
- { 0x00000040, 0x24002d29, 0x00000400, 0x00040004 },
- { 0x00000001, 0x247c0231, 0x00000400, 0x00000000 },
- { 0x00000001, 0x247d0231, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x24000169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x247e0231, 0x00000400, 0x00000000 },
- { 0x00000001, 0x244c0061, 0x00000000, 0x00800000 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x0d600031, 0x21801ca1, 0x00000800, 0x0e782000 },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200021, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240021, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280021, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0021, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28300129, 0x0000018c, 0x00000000 },
- { 0x00000001, 0x28340021, 0x00000188, 0x00000000 },
- { 0x00000001, 0x28380021, 0x0000019c, 0x00000000 },
- { 0x00000001, 0x283c0021, 0x00000488, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0203 },
- { 0x00000001, 0x244c0061, 0x00000000, 0x7e200000 },
- { 0x00000001, 0x24560169, 0x00000000, 0x28302830 },
- { 0x00000001, 0x24440021, 0x00000440, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00000002 },
- { 0x00000001, 0x24640231, 0x0000009c, 0x00000000 },
- { 0x00000001, 0x24680061, 0x00000000, 0x30003030 },
- { 0x00000001, 0x24700021, 0x00000a20, 0x00000000 },
- { 0x00000001, 0x24740021, 0x00000a20, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d0560, 0x00000000 },
- { 0x00000001, 0x28600061, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28640061, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28680061, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x286c0061, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28700061, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28740061, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28780061, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x287c0061, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28800061, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28840061, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28880061, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x288c0061, 0x00000000, 0x000f0f0f },
- { 0x00400001, 0x28900061, 0x00000000, 0x00000000 },
- { 0x08600031, 0x21801ca1, 0x00000800, 0x0a784000 },
- { 0x00000001, 0x25740061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25750231, 0x00000199, 0x00000000 },
- { 0x00000001, 0x25760231, 0x0000019a, 0x00000000 },
- { 0x00000005, 0x24002d29, 0x00000180, 0x00030003 },
- { 0x00000001, 0x25740231, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28600021, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28800021, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28a00021, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28c00021, 0x008d0200, 0x00000000 },
- { 0x00000001, 0x244c0061, 0x00000000, 0x00241000 },
- { 0x00000001, 0x24000169, 0x00000000, 0x00040004 },
- { 0x00000040, 0x247e4631, 0x0000047e, 0x00000400 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d0560, 0x00000000 },
- { 0x0d600031, 0x21801ca1, 0x00000800, 0x0e786000 },
- { 0x01000005, 0x20002d28, 0x000000a6, 0x00040004 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x000004a0 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00000040, 0x24880c21, 0x00000488, 0x00000002 },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200021, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240021, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28280021, 0x00000188, 0x00000000 },
- { 0x00000001, 0x282c0021, 0x00000574, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0003 },
- { 0x00000040, 0x24880c21, 0x00000488, 0x00000001 },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28600021, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28800021, 0x008d0200, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0203 },
- { 0x00000040, 0x24880c21, 0x00000488, 0x00000008 },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0240, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0203 },
- { 0x0a800031, 0x2b601ca1, 0x00000b40, 0x0219e003 },
- { 0x00600001, 0x2e000021, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24001ca8, 0x00000e00, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa4 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000070 },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa0, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000a0 },
- { 0x04000010, 0x200035ac, 0x00000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe401ad, 0x00000fa4, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000060 },
- { 0x04000010, 0x200035ac, 0x00000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa4, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe401ad, 0x00000fa0, 0x00000000 },
- { 0x00000001, 0x34000020, 0x00000fe0, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00200040, 0x2f6035ad, 0x00450fa8, 0x00450fa0 },
- { 0x00000040, 0x2f703dad, 0x00000f60, 0x00300030 },
- { 0x00000040, 0x2f723dad, 0x00000f62, 0x00280028 },
- { 0x00200041, 0x2f903dad, 0x00450fd0, 0xffffffff },
- { 0x00200040, 0x2f8035ad, 0x00450fa8, 0x00450f90 },
- { 0x00200040, 0x2f8435ad, 0x00450fa8, 0x00450fd0 },
- { 0x05000010, 0x200035ac, 0x00000f60, 0x00000f80 },
- { 0x00010001, 0x2f6001ad, 0x00000f80, 0x00000000 },
- { 0x03000010, 0x200035ac, 0x00000f70, 0x00000f84 },
- { 0x00010040, 0x2f603dad, 0x00000f84, 0xffd0ffd0 },
- { 0x05000010, 0x200035ac, 0x00000f62, 0x00000f82 },
- { 0x00010001, 0x2f6201ad, 0x00000f82, 0x00000000 },
- { 0x03000010, 0x200035ac, 0x00000f72, 0x00000f86 },
- { 0x00010040, 0x2f623dad, 0x00000f86, 0xffd8ffd8 },
- { 0x05000010, 0x20003dac, 0x00000f60, 0x00000000 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00010001, 0x2f6001ed, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x03000010, 0x200035ac, 0x00000f70, 0x00000fc0 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00010040, 0x2f603dad, 0x00000fc0, 0xffd0ffd0 },
- { 0x05000010, 0x20003dac, 0x00000f62, 0x00000000 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00010001, 0x2f6201ed, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x03000010, 0x200035ac, 0x00000f72, 0x00000fc2 },
- { 0x00010040, 0x2f623dad, 0x00000fc2, 0xffd8ffd8 },
- { 0x00200041, 0x2f803dad, 0x00450fa8, 0xffffffff },
- { 0x00200040, 0x2fe435ad, 0x00450f60, 0x00450f80 },
- { 0x00000001, 0x34000020, 0x00000fe0, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0020000c, 0x2a803dad, 0x00450ac0, 0x00020002 },
- { 0x00200001, 0x240001ad, 0x00450a80, 0x00000000 },
- { 0x00200040, 0x2a883dad, 0x00450a80, 0x00030003 },
- { 0x00200005, 0x2a902d29, 0x00450a88, 0xfffcfffc },
- { 0x05000010, 0x20003dac, 0x00000400, 0x00000000 },
- { 0x00010041, 0x24003dad, 0x00000400, 0xffffffff },
- { 0x05000010, 0x20003dac, 0x00000402, 0x00000000 },
- { 0x00010041, 0x24023dad, 0x00000402, 0xffffffff },
- { 0x04000010, 0x20003dac, 0x00000400, 0x00040004 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 },
- { 0x04000010, 0x20003dac, 0x00000402, 0x00040004 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000380 },
- { 0x00600001, 0x2c800021, 0x008d0180, 0x00000000 },
- { 0x00600001, 0x2ca00021, 0x008d01a0, 0x00000000 },
- { 0x00000001, 0x244001ed, 0x00000000, 0xfff0fff0 },
- { 0x00000001, 0x244201ed, 0x00000000, 0xfff4fff4 },
- { 0x00400001, 0x2fa00021, 0x00690440, 0x00000000 },
- { 0x00200040, 0x2fa035ad, 0x00450fa0, 0x00450a90 },
- { 0x00600001, 0x2fc00021, 0x008d0a40, 0x00000000 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0xfffffca0 },
- { 0x00200001, 0x244001ad, 0x00450fe4, 0x00000000 },
- { 0x00000001, 0x244c0061, 0x00000000, 0x7e200000 },
- { 0x00000001, 0x24560169, 0x00000000, 0x28302830 },
- { 0x00000001, 0x24440021, 0x00000440, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00000002 },
- { 0x00000001, 0x24640231, 0x0000009c, 0x00000000 },
- { 0x00000001, 0x24680061, 0x00000000, 0x30003030 },
- { 0x00000001, 0x24700021, 0x00000a20, 0x00000000 },
- { 0x00000001, 0x24740021, 0x00000a20, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d0560, 0x00000000 },
- { 0x00000001, 0x28600061, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28640061, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28680061, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x286c0061, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28700061, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28740061, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28780061, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x287c0061, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28800061, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28840061, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28880061, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x288c0061, 0x00000000, 0x000f0f0f },
- { 0x00400001, 0x28900061, 0x00000000, 0x00000000 },
- { 0x08600031, 0x21801ca1, 0x00000800, 0x0a784000 },
- { 0x00000001, 0x25740061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25750231, 0x00000199, 0x00000000 },
- { 0x00000001, 0x25760231, 0x0000019a, 0x00000000 },
- { 0x00000005, 0x24002d29, 0x00000180, 0x00030003 },
- { 0x00000001, 0x25740231, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28600021, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28800021, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28a00021, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28c00021, 0x008d0200, 0x00000000 },
- { 0x00000001, 0x244c0061, 0x00000000, 0x00241000 },
- { 0x00000001, 0x24000169, 0x00000000, 0x00040004 },
- { 0x00000040, 0x247e4631, 0x0000047e, 0x00000400 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400021, 0x008d0560, 0x00000000 },
- { 0x0d600031, 0x21801ca1, 0x00000800, 0x0e786000 },
- { 0x05000010, 0x20002528, 0x00000188, 0x00000c88 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000020 },
- { 0x00600001, 0x21800021, 0x008d0c80, 0x00000000 },
- { 0x00600001, 0x21a00021, 0x008d0ca0, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0xfffff710 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/src/shaders/vme/mpeg2_inter_ivb.asm b/src/shaders/vme/mpeg2_inter_ivb.asm
deleted file mode 100644
index 823b6e5..0000000
--- a/src/shaders/vme/mpeg2_inter_ivb.asm
+++ /dev/null
@@ -1,721 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- * Authors: Zhao Yakui <yakui.zhao@intel.com>
- *
- */
-// Modual name: mpeg2_inter_ivb.asm
-//
-// Make inter predition estimation for Mpeg2 Inter frame on Ivy
-//
-
-//
-// Now, begin source code....
-//
-
-#define SAVE_RET add (1) RETURN_REG<1>:ud ip:ud 32:ud
-#define RETURN mov (1) ip:ud RETURN_REG<0,1,0>:ud
-
-/*
- * __START
- */
-__INTER_START:
-mov (16) tmp_reg0.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg2.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg4.0<1>:UD 0x0:UD {align1} ;
-mov (16) tmp_reg6.0<1>:UD 0x0:UD {align1} ;
-
-shl (2) vme_m0.8<1>:UW orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-mov (1) vme_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-mul (1) obw_m0.8<1>:UD w_in_mb_uw<0,1,0>:UW orig_y_ub<0,1,0>:UB {align1};
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD orig_x_ub<0,1,0>:UB {align1};
-mul (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD INTER_VME_OUTPUT_IN_OWS:UD {align1};
-mov (1) obw_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) pic_ref.0<1>:uw r4.24<2,2,1>:uw 4:uw {align1};
-mov (2) pic_ref.16<1>:uw r4.20<2,2,1>:uw {align1};
-
-mov (8) mb_mvp_ref.0<1>:ud 0:ud {align1};
-mov (8) mb_ref_win.0<1>:ud 0:ud {align1};
-mov (8) mba_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbb_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbc_result.0<1>:ud 0x0:ud {align1};
-and.z.f0.0 (1) null:uw mb_hwdep<0,1,0>:uw 0x04:uw {align1};
-(f0.0) jmpi (1) __mb_hwdep_end;
-/* read back the data for MB A */
-/* the layout of MB result is: rx.0(Available). rx.4(MVa), rX.8(MVb), rX.16(Pred_L0 flag),
-* rX.18 (Pred_L1 flag), rX.20(Forward reference ID), rX.22(Backwared reference ID)
-*/
-mba_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_AE:uw {align1};
-/* MB A doesn't exist. Zero MV. mba_flag is zero and ref ID = -1 */
-(f0.0) mov (2) mba_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbb_start;
-mov (1) mba_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_IN_OWS:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-mov (1) mb_msg_tmp.8<1>:ud mb_msg0.8<0,1,0>:ud {align1};
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_MV_IN_OWS:UD {align1};
-/* bind index 3, read 1 oword (16bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_0,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-and.z.f0.0 (1) null<1>:ud mb_mode_wb.0<0,1,0>:ud INTRAMBFLAG_MASK:ud {align1} ;
-(-f0.0) mov (2) mba_result.20<1>:w -1:w {align1};
-(-f0.0) jmpi (1) mbb_start;
-
-mov (1) mb_msg0.8<1>:UD mb_msg_tmp.8<0,1,0>:ud {align1};
-/* Read MV for MB A */
-/* bind index 3, read 2 oword (16bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_2,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-/* TODO: RefID is required after multi-references are added */
-/* MV */
-mov (2) mba_result.4<1>:ud mb_mv0.0<2,2,1>:ud {align1};
-mov (1) mba_result.16<1>:w MB_PRED_FLAG {align1};
-
-mbb_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_B:uw {align1};
-/* MB B doesn't exist. Zero MV. mba_flag is zero */
-/* If MB B doesn't exist, neither MB C nor D exists */
-(f0.0) mov (2) mbb_result.20<1>:w -1:w {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (1) mbb_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_IN_OWS:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-mov (1) mb_msg_tmp.8<1>:ud mb_msg0.8<0,1,0>:ud {align1};
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_MV_IN_OWS:UD {align1};
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_0,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-and.z.f0.0 (1) null<1>:ud mb_mode_wb.0<0,1,0>:ud INTRAMBFLAG_MASK:ud {align1} ;
-(-f0.0) mov (2) mbb_result.20<1>:w -1:w {align1};
-(-f0.0) jmpi (1) mbc_start;
-
-mov (1) mb_msg0.8<1>:UD mb_msg_tmp.8<0,1,0>:ud {align1};
-/* Read MV for MB B */
-/* bind index 3, read 2 oword (16bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_2,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-/* TODO: RefID is required after multi-references are added */
-mov (2) mbb_result.4<1>:ud mb_mv0.0<2,2,1>:ud {align1};
-mov (1) mbb_result.16<1>:w MB_PRED_FLAG {align1};
-
-mbc_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_C:uw {align1};
-/* MB C doesn't exist. Zero MV. mba_flag is zero */
-/* Based on h264 spec the MB D will be replaced if MB C doesn't exist */
-(f0.0) jmpi (1) mbd_start;
-mov (1) mbc_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_IN_OWS:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-mov (1) mb_msg_tmp.8<1>:ud mb_msg0.8<0,1,0>:ud {align1};
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_MV_IN_OWS:UD {align1};
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_0,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-and.z.f0.0 (1) null<1>:ud mb_mode_wb.0<0,1,0>:ud INTRAMBFLAG_MASK:ud {align1} ;
-(-f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(-f0.0) jmpi (1) mb_mvp_start;
-mov (1) mb_msg0.8<1>:UD mb_msg_tmp.8<0,1,0>:ud {align1};
-/* Read MV for MB C */
-/* bind index 3, read 2 oword (16bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_2,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-/* TODO: RefID is required after multi-references are added */
-/* Forward MV */
-mov (2) mbc_result.4<1>:ud mb_mv0.0<2,2,1>:ud {align1};
-mov (1) mbc_result.16<1>:w MB_PRED_FLAG {align1};
-
-jmpi (1) mb_mvp_start;
-mbd_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_D:uw {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (1) mbc_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (2) tmp_reg0.0<1>:w tmp_reg0.0<2,2,1>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_IN_OWS:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-mov (1) mb_msg_tmp.8<1>:ud mb_msg0.8<0,1,0>:ud {align1};
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD INTER_VME_OUTPUT_MV_IN_OWS:UD {align1};
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_0,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-and.z.f0.0 (1) null<1>:ud mb_mode_wb.0<0,1,0>:ud INTRAMBFLAG_MASK:ud {align1} ;
-(-f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(-f0.0) jmpi (1) mb_mvp_start;
-
-mov (1) mb_msg0.8<1>:UD mb_msg_tmp.8<0,1,0>:ud {align1};
-/* Read MV for MB D */
-/* bind index 3, read 2 oword (16bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ub
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_2,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-
-/* Forward MV */
-mov (2) mbc_result.4<1>:ud mb_mv0.0<2,2,1>:ud {align1};
-mov (1) mbc_result.16<1>:w MB_PRED_FLAG {align1};
-
-mb_mvp_start:
-/*TODO: Add the skip prediction */
-/* Check whether both MB B and C are invailable */
-add (1) tmp_reg0.0<1>:d mbb_result.0<0,1,0>:d mbc_result.0<0,1,0>:d {align1};
-cmp.z.f0.0 (1) null:d tmp_reg0.0<0,1,0>:d 0:d {align1};
-(-f0.0) jmpi (1) mb_median_start;
-cmp.nz.f0.0 (1) null:d mba_result.0<0,1,0>:d 0:d {align1};
-(f0.0) mov (1) mbb_result.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-(f0.0) mov (1) mbc_result.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-(f0.0) mov (1) mbb_result.20<1>:uw mba_result.20<0,1,0>:uw {align1};
-(f0.0) mov (1) mbc_result.20<1>:uw mba_result.20<0,1,0>:uw {align1};
-(f0.0) mov (1) mb_mvp_ref.0<1>:ud mba_result.4<0,1,0>:ud {align1};
-(-f0.0) mov (1) mb_mvp_ref.0<1>:ud 0:ud {align1};
-jmpi (1) __mb_hwdep_end;
-
-mb_median_start:
-/* check whether only one neighbour MB has the same ref ID with the current MB */
-mov (8) tmp_reg0.0<1>:ud 0:ud {align1};
-cmp.z.f0.0 (1) null:d mba_result.20<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbb_result.20<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbb_result.4<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbc_result.20<1>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbc_result.4<0,1,0>:ud {align1};
-cmp.e.f0.0 (1) null:d tmp_reg0.0<1>:w 1:w {align1};
-(f0.0) mov (1) mb_mvp_ref.0<1>:ud tmp_reg0.4<0,1,0>:ud {align1};
-(f0.0) jmpi (1) __mb_hwdep_end;
-
-mov (1) INPUT_ARG0.0<1>:w mba_result.4<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.4<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.4<0,1,0>:w {align1};
-SAVE_RET {align1};
- jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.0<1>:w RET_ARG<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.0<1>:w mba_result.6<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.6<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.6<0,1,0>:w {align1};
-SAVE_RET {align1};
-jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.2<1>:w RET_ARG<0,1,0>:w {align1};
-
-__mb_hwdep_end:
-
-mov (2) mv_cc_ref.0<1>:w mba_result.4<2,2,1>:w {align1};
-
-/* Calibrate the ref window for MPEG2 */
-mov (1) vme_m0.0<1>:W -16:W {align1};
-mov (1) vme_m0.2<1>:W -12:W {align1};
-mov (1) INPUT_ARG0.0<1>:ud vme_m0.0<0,1,0>:ud {align1};
-mov (1) INPUT_ARG0.8<1>:ud vme_m0.8<0,1,0>:ud {align1};
-mov (8) INPUT_ARG1.0<1>:ud pic_ref.0<8,8,1>:ud {align1};
-
-SAVE_RET {align1};
-jmpi (1) ref_boundary_check;
-mov (2) vme_m0.0<1>:w RET_ARG<2,2,1>:w {align1};
-
-/* m2 */
-mov (8) vme_msg_2<1>:UD 0x0:UD {align1};
-
-/* m3 */
-mov (8) vme_msg_3<1>:UD 0x0:UD {align1};
-/* Use the Luma mode */
-mov (1) tmp_reg0.0<1>:UW INTRA16_DC_PRED:UW {align1};
-mov (1) vme_msg_3.4<1>:ub tmp_reg0.0<0,1,0>:UB {align1};
-
-/* m4 */
-mov (8) vme_msg_4<1>:UD 0x0:UD {align1};
-mov (1) vme_msg_4.16<1>:UD INTRA_PREDICTORE_MODE {align1};
-
-
-/* m1 */
-mov (8) vme_m1.0<1>:ud 0x0:ud {align1};
-mov (1) intra_flag<1>:UW 0x0:UW {align1} ;
-mov (1) tmp_reg0.0<1>:uw LUMA_INTRA_8x8_DISABLE:uw {align1};
-add (1) tmp_reg0.0<1>:uw tmp_reg0.0<0,1,0>:uw LUMA_INTRA_4x4_DISABLE:uw {align1};
-mov (1) intra_part_mask_ub<1>:UB tmp_reg0.0<0,1,0>:ub {align1};
-/* m1 */
-/* assign MB intra struct from the thread payload*/
-mov (1) mb_intra_struct_ub<1>:UB input_mb_intra_ub<0,1,0>:UB {align1};
-
-
-/* M0 */
-/* IME search */
-mov (1) vme_m0.12<1>:UD SEARCH_CTRL_SINGLE + INTER_PART_MASK + INTER_SAD_HAAR + SUB_PEL_MODE_HALF:UD {align1};
-/* 16x16 Source, 1/2 pixel, harr */
-mov (1) vme_m0.22<1>:UW REF_REGION_SIZE {align1}; /* Reference Width&Height, 48x40 */
-
-mov (1) vme_m0.4<1>:UD vme_m0.0<0,1,0>:UD {align1};
-add (2) vme_m0.0<1>:w vme_m0.0<2,2,1>:w mb_ref_win.16<2,2,1>:w {align1};
-add (2) vme_m0.4<1>:w vme_m0.4<2,2,1>:w mb_ref_win.16<2,2,1>:w {align1};
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-/* m1 */
-
-mov (1) vme_m1.0<1>:UD ADAPTIVE_SEARCH_ENABLE:ud {align1} ;
-/* MV num is passed by constant buffer. R4.28 */
-mov (1) vme_m1.4<1>:UB r4.28<0,1,0>:UB {align1};
-add (1) vme_m1.4<1>:UD vme_m1.4<0,1,0>:UD FB_PRUNING_DISABLE:UD {align1};
-mov (1) vme_m1.8<1>:UD START_CENTER + SEARCH_PATH_LEN:UD {align1};
-
-/* Bilinear filter */
-mov (1) tmp_reg0.0<1>:uw 0x04:uw {align1};
-add (1) vme_m1.30<1>:ub vme_m1.30<0,1,0>:ub tmp_reg0.0<0,1,0>:ub {align1};
-
-/* Set the MV cost center */
-mov (1) vme_m1.16<1>:ud mv_cc_ref.0<0,1,0>:ud {align1};
-mov (1) vme_m1.20<1>:ud mv_cc_ref.0<0,1,0>:ud {align1};
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-
-send (8)
- vme_msg_ind
- vme_wb
- null
- vme(
- BIND_IDX_VME,
- 0,
- 0,
- VME_MESSAGE_TYPE_MIXED
- )
- mlen vme_msg_length
- rlen vme_inter_wb_length
- {align1};
-
-and.z.f0.0 (1) null:uw mb_hwdep<0,1,0>:uw 0x04:uw {align1};
-(-f0.0) jmpi (1) vme_run_again;
-
-vme_mv_output:
-
-and.z.f0.0 (1) null<1>:ud vme_wb0.0<0,1,0>:ud INTRAMBFLAG_MASK:ud {align1} ;
-
-(-f0.0)jmpi (1) __INTRA_INFO ;
-
-__INTER_INFO:
-/* Write MV pairs */
-mov (8) msg_reg0.0<1>:UD obw_m0.0<8,8,1>:UD {align1};
-
-mov (8) msg_reg1.0<1>:UD vme_wb1.0<8,8,1>:UD {align1};
-
-/* bind index 3, write 8 oword (128 bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-
-mov (1) msg_reg1.0<1>:ud vme_wb0.0<0,1,0>:ud {align1} ;
-mov (1) msg_reg1.4<1>:UD vme_wb0.28<0,1,0>:UD {align1};
-mov (1) msg_reg1.8<1>:ud tmp_ud1<0,1,0>:ud {align1} ;
-mov (1) msg_reg1.12<1>:ud vme_wb0.0<0,1,0>:ud {align1} ;
-mov (1) msg_reg1.16<1>:ud 0x25:ud {align1} ;
-jmpi (1) __OUTPUT_INFO;
-
-__INTRA_INFO:
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-mov (1) msg_reg1.4<1>:UD vme_wb.16<0,1,0>:UD {align1};
-mov (1) msg_reg1.8<1>:UD vme_wb.20<0,1,0>:UD {align1};
-mov (1) msg_reg1.12<1>:UD vme_wb.24<0,1,0>:UD {align1};
-mov (1) msg_reg1.16<1>:ud 0x35:ud {align1} ;
-
-__OUTPUT_INFO:
-
-mov (1) msg_reg1.20<1>:ud obw_m0.8<0,1,0>:ud {align1};
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD INTER_VME_OUTPUT_MV_IN_OWS:UD {align1};
-mov (8) msg_reg0.0<1>:ud obw_m0.0<8,8,1>:ud {align1};
-
-
-/* bind index 3, write 1 oword, msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-/* Issue message fence so that the previous write message is committed */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_FENCE,
- OBR_MF_COMMIT,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-__EXIT:
-/*
- * kill thread
- */
-mov (8) ts_msg_reg0<1>:UD r0<8,8,1>:UD {align1};
-send (16) ts_msg_ind acc0<1>UW null thread_spawner(0, 0, 1) mlen 1 rlen 0 {align1 EOT};
-
-
- nop ;
- nop ;
-
-word_imedian:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_a_ge_b;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_end;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- jmpi (1) cmp_end;
-cmp_a_ge_b:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_end;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
-cmp_end:
- RETURN {align1};
-
-nop;
-nop;
-
-ref_boundary_check:
-
-/* The left/up coordinate of reference window */
-add (2) TEMP_VAR0.0<1>:w INPUT_ARG0.8<2,2,1>:w INPUT_ARG0.0<2,2,1>:w {align1};
-/* The right/bottom coordinate of reference window */
-add (1) TEMP_VAR0.16<1>:w TEMP_VAR0.0<0,1,0>:w 48:w {align1};
-add (1) TEMP_VAR0.18<1>:w TEMP_VAR0.2<0,1,0>:w 40:w {align1};
-
-/* Firstly the MV range is checked */
-mul (2) TEMP_VAR1.16<1>:w INPUT_ARG1.16<2,2,1>:w -1:w {align1};
-add (2) TEMP_VAR1.0<1>:w INPUT_ARG0.8<2,2,1>:w TEMP_VAR1.16<2,2,1>:w {align1};
-add (2) TEMP_VAR1.4<1>:w INPUT_ARG0.8<2,2,1>:w INPUT_ARG1.16<2,2,1>:w {align1};
-
-cmp.l.f0.0 (1) null:w TEMP_VAR0.0<0,1,0>:w TEMP_VAR1.0<0,1,0>:w {align1};
-(f0.0) mov (1) TEMP_VAR0.0<1>:w TEMP_VAR1.0<0,1,0>:w {align1};
-cmp.g.f0.0 (1) null:w TEMP_VAR0.16<0,1,0>:w TEMP_VAR1.4<0,1,0>:w {align1};
-(f0.0) add (1) TEMP_VAR0.0<1>:w TEMP_VAR1.4<0,1,0>:w -48:w {align1};
-cmp.l.f0.0 (1) null:w TEMP_VAR0.2<0,1,0>:w TEMP_VAR1.2<0,1,0>:w {align1};
-(f0.0) mov (1) TEMP_VAR0.2<1>:w TEMP_VAR1.2<0,1,0>:w {align1};
-cmp.g.f0.0 (1) null:w TEMP_VAR0.18<0,1,0>:w TEMP_VAR1.6<0,1,0>:w {align1};
-(f0.0) add (1) TEMP_VAR0.2<1>:w TEMP_VAR1.6<0,1,0>:w -40:w {align1};
-
-
-x_left_cmp:
- cmp.l.f0.0 (1) null:w TEMP_VAR0.0<0,1,0>:w 0:w {align1};
- (-f0.0) jmpi (1) x_right_cmp;
- (f0.0) mov (1) TEMP_VAR0.0<1>:w 0:w {align1};
- jmpi (1) y_top_cmp;
-x_right_cmp:
- cmp.g.f0.0 (1) null:w TEMP_VAR0.16<0,1,0>:w INPUT_ARG1.0<0,1,0>:w {align1};
- (-f0.0) jmpi (1) y_top_cmp;
- (f0.0) add (1) TEMP_VAR0.0<1>:w INPUT_ARG1.0<0,1,0>:w -48:w {align1};
-y_top_cmp:
- cmp.l.f0.0 (1) null:w TEMP_VAR0.2<0,1,0>:w 0:w {align1};
- (-f0.0) jmpi (1) y_bottom_cmp;
- (f0.0) mov (1) TEMP_VAR0.2<1>:w 0:w {align1};
- jmpi (1) y_bottom_end;
-y_bottom_cmp:
- cmp.g.f0.0 (1) null:w TEMP_VAR0.18<0,1,0>:w INPUT_ARG1.2<0,1,0>:w {align1};
- (f0.0) add (1) TEMP_VAR0.2<1>:w INPUT_ARG1.2<0,1,0>:w -40:w {align1};
-
-y_bottom_end:
-mul (2) TEMP_VAR1.0<1>:w INPUT_ARG0.8<2,2,1>:w -1:w {align1};
-add (2) RET_ARG<1>:w TEMP_VAR0.0<2,2,1>:w TEMP_VAR1.0<2,2,1>:w {align1};
- RETURN {align1};
-nop;
-nop;
-
-vme_run_again:
-
-asr (2) mb_ref_win.0<1>:w mb_mvp_ref.0<2,2,1>:w 2:w {align1};
-mov (2) tmp_reg0.0<1>:w mb_ref_win.0<2,2,1>:w {align1};
-add (2) mb_ref_win.8<1>:w mb_ref_win.0<2,2,1>:w 3:w {align1};
-and (2) mb_ref_win.16<1>:uw mb_ref_win.8<2,2,1>:uw 0xFFFC:uw {align1};
-
-cmp.l.f0.0 (1) null:w tmp_reg0.0<0,1,0>:w 0:w {align1};
-(f0.0) mul (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w -1:w {align1};
-cmp.l.f0.0 (1) null:w tmp_reg0.2<0,1,0>:w 0:w {align1};
-(f0.0) mul (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-
-cmp.ge.f0.0 (1) null:w tmp_reg0.0<0,1,0>:w 4:w {align1};
-(f0.0) jmpi (1) vme_start;
-cmp.ge.f0.0 (1) null:w tmp_reg0.2<0,1,0>:w 4:w {align1};
-(f0.0) jmpi (1) vme_start;
-
-jmpi (1) vme_done;
-
-vme_start:
- mov (8) tmp_vme_wb0.0<1>:ud vme_wb0.0<8,8,1>:ud {align1};
- mov (8) tmp_vme_wb1.0<1>:ud vme_wb1.0<8,8,1>:ud {align1};
-
-/* Calibrate the ref window for MPEG2 */
-mov (1) vme_m0.0<1>:W -16:W {align1};
-mov (1) vme_m0.2<1>:W -12:W {align1};
-mov (1) INPUT_ARG0.8<1>:ud vme_m0.8<0,1,0>:ud {align1};
-add (2) INPUT_ARG0.0<1>:w vme_m0.0<2,2,1>:w mb_ref_win.16<2,2,1>:w {align1};
-mov (8) INPUT_ARG1.0<1>:ud pic_ref.0<8,8,1>:ud {align1};
-
-SAVE_RET {align1};
-jmpi (1) ref_boundary_check;
-mov (2) vme_m0.0<1>:w RET_ARG<2,2,1>:w {align1};
-
-/* m2 */
-mov (8) vme_msg_2<1>:UD 0x0:UD {align1};
-
-/* m3 */
-mov (8) vme_msg_3<1>:UD 0x0:UD {align1};
-
-/* m4 */
-mov (8) vme_msg_4<1>:UD 0x0:UD {align1};
-
-
-/* m1 */
-mov (8) vme_m1.0<1>:ud 0x0:ud {align1};
-mov (1) intra_flag<1>:UW 0x0:UW {align1} ;
-mov (1) tmp_reg0.0<1>:uw LUMA_INTRA_8x8_DISABLE:uw {align1};
-add (1) tmp_reg0.0<1>:uw tmp_reg0.0<0,1,0>:uw LUMA_INTRA_4x4_DISABLE:uw {align1};
-mov (1) intra_part_mask_ub<1>:UB tmp_reg0.0<0,1,0>:ub {align1};
-/* m1 */
-/* assign MB intra struct from the thread payload*/
-mov (1) mb_intra_struct_ub<1>:UB input_mb_intra_ub<0,1,0>:UB {align1};
-
-
-/* M0 */
-/* IME search */
-mov (1) vme_m0.12<1>:UD SEARCH_CTRL_SINGLE + INTER_PART_MASK + INTER_SAD_HAAR + SUB_PEL_MODE_HALF:UD {align1};
-/* 16x16 Source, 1/2 pixel, harr */
-mov (1) vme_m0.22<1>:UW REF_REGION_SIZE {align1}; /* Reference Width&Height, 48x40 */
-
-mov (1) vme_m0.4<1>:UD vme_m0.0<0,1,0>:UD {align1};
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-/* m1 */
-
-mov (1) vme_m1.0<1>:UD ADAPTIVE_SEARCH_ENABLE:ud {align1} ;
-/* MV num is passed by constant buffer. R4.28 */
-mov (1) vme_m1.4<1>:UB r4.28<0,1,0>:UB {align1};
-add (1) vme_m1.4<1>:UD vme_m1.4<0,1,0>:UD FB_PRUNING_DISABLE:UD {align1};
-mov (1) vme_m1.8<1>:UD START_CENTER + SEARCH_PATH_LEN:UD {align1};
-
-/* Bilinear filter */
-mov (1) tmp_reg0.0<1>:uw 0x04:uw {align1};
-add (1) vme_m1.30<1>:ub vme_m1.30<0,1,0>:ub tmp_reg0.0<0,1,0>:ub {align1};
-
-/* Set the MV cost center */
-mov (1) vme_m1.16<1>:ud mv_cc_ref.0<0,1,0>:ud {align1};
-mov (1) vme_m1.20<1>:ud mv_cc_ref.0<0,1,0>:ud {align1};
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-
-send (8)
- vme_msg_ind
- vme_wb
- null
- vme(
- BIND_IDX_VME,
- 0,
- 0,
- VME_MESSAGE_TYPE_INTER
- )
- mlen vme_msg_length
- rlen vme_inter_wb_length
- {align1};
-
-
-cmp.l.f0.0 (1) null:uw vme_wb0.6<0,1,0>:uw tmp_vme_wb0.6<0,1,0>:uw {align1};
-(f0.0) jmpi (1) vme_done;
-mov (8) vme_wb0.0<1>:ud tmp_vme_wb0.0<8,8,1>:ud {align1};
-mov (8) vme_wb1.0<1>:ud tmp_vme_wb1.0<8,8,1>:ud {align1};
-
-vme_done:
- jmpi (1) vme_mv_output;
-nop;
-nop;
-nop;
-
diff --git a/src/shaders/vme/mpeg2_inter_ivb.g7a b/src/shaders/vme/mpeg2_inter_ivb.g7a
deleted file mode 100644
index bf0cdb3..0000000
--- a/src/shaders/vme/mpeg2_inter_ivb.g7a
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "vme7.inc"
-#include "vme7_mpeg2.inc"
-#include "mpeg2_inter_ivb.asm"
diff --git a/src/shaders/vme/mpeg2_inter_ivb.g7b b/src/shaders/vme/mpeg2_inter_ivb.g7b
deleted file mode 100644
index 1ffcdd5..0000000
--- a/src/shaders/vme/mpeg2_inter_ivb.g7b
+++ /dev/null
@@ -1,308 +0,0 @@
- { 0x00800001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800061, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24c00061, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24482e29, 0x004500a0, 0x00040004 },
- { 0x00000001, 0x24540231, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24884521, 0x000000a2, 0x000000a1 },
- { 0x00000040, 0x24884421, 0x00000488, 0x000000a0 },
- { 0x00000041, 0x24880c21, 0x00000488, 0x0000000a },
- { 0x00000001, 0x24940231, 0x00000014, 0x00000000 },
- { 0x00200009, 0x2a402d29, 0x00450098, 0x00040004 },
- { 0x00200001, 0x2a500129, 0x00450094, 0x00000000 },
- { 0x00600001, 0x2ac00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2a800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2ae00061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b000061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b200061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002d28, 0x000000a6, 0x00040004 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x000000f2 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00600060 },
- { 0x00210001, 0x2af401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x00000001, 0x2ae000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24003dad, 0x00000400, 0xffffffff },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x0000000a },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x2b680021, 0x00000b48, 0x00000000 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000008 },
- { 0x0a800031, 0x2b801ca1, 0x00000b40, 0x02180003 },
- { 0x01000005, 0x20000c20, 0x00000b80, 0x00002000 },
- { 0x00310001, 0x2af401ed, 0x00000000, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000008 },
- { 0x00000001, 0x2b480021, 0x00000b68, 0x00000000 },
- { 0x0a800031, 0x2ba01ca1, 0x00000b40, 0x02180203 },
- { 0x00200001, 0x2ae40021, 0x00450ba0, 0x00000000 },
- { 0x00000001, 0x2af001ed, 0x00000000, 0x00010001 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00100010 },
- { 0x00210001, 0x2b1401ed, 0x00000000, 0xffffffff },
- { 0x00210001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000076 },
- { 0x00000001, 0x2b0000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24023dad, 0x00000402, 0xffffffff },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x0000000a },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x2b680021, 0x00000b48, 0x00000000 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000008 },
- { 0x0a800031, 0x2b801ca1, 0x00000b40, 0x02180003 },
- { 0x01000005, 0x20000c20, 0x00000b80, 0x00002000 },
- { 0x00310001, 0x2b1401ed, 0x00000000, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000008 },
- { 0x00000001, 0x2b480021, 0x00000b68, 0x00000000 },
- { 0x0a800031, 0x2ba01ca1, 0x00000b40, 0x02180203 },
- { 0x00200001, 0x2b040021, 0x00450ba0, 0x00000000 },
- { 0x00000001, 0x2b1001ed, 0x00000000, 0x00010001 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00080008 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000026 },
- { 0x00000001, 0x2b2000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24023dad, 0x00000402, 0xffffffff },
- { 0x00000040, 0x24003dad, 0x00000400, 0x00010001 },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x0000000a },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x2b680021, 0x00000b48, 0x00000000 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000008 },
- { 0x0a800031, 0x2b801ca1, 0x00000b40, 0x02180003 },
- { 0x01000005, 0x20000c20, 0x00000b80, 0x00002000 },
- { 0x00310001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000032 },
- { 0x00000001, 0x2b480021, 0x00000b68, 0x00000000 },
- { 0x0a800031, 0x2ba01ca1, 0x00000b40, 0x02180203 },
- { 0x00200001, 0x2b240021, 0x00450ba0, 0x00000000 },
- { 0x00000001, 0x2b3001ed, 0x00000000, 0x00010001 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 },
- { 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002e28, 0x000000a5, 0x00040004 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000022 },
- { 0x00000001, 0x2b2000e5, 0x00000000, 0x00000001 },
- { 0x00200001, 0x24000229, 0x004500a0, 0x00000000 },
- { 0x00200040, 0x24003dad, 0x00450400, 0xffffffff },
- { 0x00000041, 0x2b482521, 0x000000a2, 0x00000402 },
- { 0x00000040, 0x2b482421, 0x00000b48, 0x00000400 },
- { 0x00000041, 0x2b480c21, 0x00000b48, 0x0000000a },
- { 0x00000001, 0x2b540231, 0x00000014, 0x00000000 },
- { 0x00000001, 0x2b680021, 0x00000b48, 0x00000000 },
- { 0x00000040, 0x2b480c21, 0x00000b48, 0x00000008 },
- { 0x0a800031, 0x2b801ca1, 0x00000b40, 0x02180003 },
- { 0x01000005, 0x20000c20, 0x00000b80, 0x00002000 },
- { 0x00310001, 0x2b3401ed, 0x00000000, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000008 },
- { 0x00000001, 0x2b480021, 0x00000b68, 0x00000000 },
- { 0x0a800031, 0x2ba01cb1, 0x00000b40, 0x02180203 },
- { 0x00200001, 0x2b240021, 0x00450ba0, 0x00000000 },
- { 0x00000001, 0x2b3001ed, 0x00000000, 0x00010001 },
- { 0x00000040, 0x240014a5, 0x00000b00, 0x00000b20 },
- { 0x01000010, 0x20001ca4, 0x00000400, 0x00000000 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000010 },
- { 0x02000010, 0x20001ca4, 0x00000ae0, 0x00000000 },
- { 0x00010001, 0x2b040021, 0x00000ae4, 0x00000000 },
- { 0x00010001, 0x2b240021, 0x00000ae4, 0x00000000 },
- { 0x00010001, 0x2b140129, 0x00000af4, 0x00000000 },
- { 0x00010001, 0x2b340129, 0x00000af4, 0x00000000 },
- { 0x00010001, 0x2ac00021, 0x00000ae4, 0x00000000 },
- { 0x00110001, 0x2ac00061, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 },
- { 0x00600001, 0x24000061, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200af4, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000ae4, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200b14, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000b04, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200b34, 0x00000000 },
- { 0x00010040, 0x24003dad, 0x00200400, 0x00010001 },
- { 0x00010001, 0x24040021, 0x00000b24, 0x00000000 },
- { 0x01000010, 0x20003da4, 0x00200400, 0x00010001 },
- { 0x00010001, 0x2ac00021, 0x00000404, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 },
- { 0x00000001, 0x2fa001ad, 0x00000ae4, 0x00000000 },
- { 0x00000001, 0x2fa401ad, 0x00000b04, 0x00000000 },
- { 0x00000001, 0x2fa801ad, 0x00000b24, 0x00000000 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000008e },
- { 0x00000001, 0x2ac001ad, 0x00000fe4, 0x00000000 },
- { 0x00000001, 0x2fa001ad, 0x00000ae6, 0x00000000 },
- { 0x00000001, 0x2fa401ad, 0x00000b06, 0x00000000 },
- { 0x00000001, 0x2fa801ad, 0x00000b26, 0x00000000 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000082 },
- { 0x00000001, 0x2ac201ad, 0x00000fe4, 0x00000000 },
- { 0x00200001, 0x2a2001ad, 0x00450ae4, 0x00000000 },
- { 0x00000001, 0x244001ed, 0x00000000, 0xfff0fff0 },
- { 0x00000001, 0x244201ed, 0x00000000, 0xfff4fff4 },
- { 0x00000001, 0x2fa00021, 0x00000440, 0x00000000 },
- { 0x00000001, 0x2fa80021, 0x00000448, 0x00000000 },
- { 0x00600001, 0x2fc00021, 0x008d0a40, 0x00000000 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000094 },
- { 0x00200001, 0x244001ad, 0x00450fe4, 0x00000000 },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x24000169, 0x00000000, 0x00bb00bb },
- { 0x00000001, 0x28640231, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x28900061, 0x00000000, 0x11111111 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x247c0169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x24000169, 0x00000000, 0x00020002 },
- { 0x00000040, 0x24002d29, 0x00000400, 0x00040004 },
- { 0x00000001, 0x247c0231, 0x00000400, 0x00000000 },
- { 0x00000001, 0x247d0231, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x244c0061, 0x00000000, 0x7e201000 },
- { 0x00000001, 0x24560169, 0x00000000, 0x28302830 },
- { 0x00000001, 0x24440021, 0x00000440, 0x00000000 },
- { 0x00200040, 0x244035ad, 0x00450440, 0x00450a90 },
- { 0x00200040, 0x244435ad, 0x00450444, 0x00450a90 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00000002 },
- { 0x00000001, 0x24640231, 0x0000009c, 0x00000000 },
- { 0x00000040, 0x24640c21, 0x00000464, 0x00000000 },
- { 0x00000001, 0x24680061, 0x00000000, 0x30003030 },
- { 0x00000001, 0x24000169, 0x00000000, 0x00040004 },
- { 0x00000040, 0x247e4631, 0x0000047e, 0x00000400 },
- { 0x00000001, 0x24700021, 0x00000a20, 0x00000000 },
- { 0x00000001, 0x24740021, 0x00000a20, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x08600031, 0x21801cbd, 0x00000800, 0x0a686000 },
- { 0x01000005, 0x20002d28, 0x000000a6, 0x00040004 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000096 },
- { 0x01000005, 0x20000c20, 0x00000180, 0x00002000 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000012 },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d01a0, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0203 },
- { 0x00000001, 0x28200021, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240021, 0x0000019c, 0x00000000 },
- { 0x00000001, 0x28280021, 0x00000544, 0x00000000 },
- { 0x00000001, 0x282c0021, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28300061, 0x00000000, 0x00000025 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000a },
- { 0x00000001, 0x28200021, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240021, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280021, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0021, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28300061, 0x00000000, 0x00000035 },
- { 0x00000001, 0x28340021, 0x00000488, 0x00000000 },
- { 0x00000040, 0x24880c21, 0x00000488, 0x00000008 },
- { 0x00600001, 0x28000021, 0x008d0480, 0x00000000 },
- { 0x0a800031, 0x20001cac, 0x00000800, 0x040a0203 },
- { 0x0a800031, 0x2b801ca1, 0x00000b40, 0x0219e003 },
- { 0x00600001, 0x2e000021, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24001ca8, 0x00000e00, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa4 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x0000000e },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa0, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000014 },
- { 0x04000010, 0x200035ac, 0x00000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe401ad, 0x00000fa4, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000000c },
- { 0x04000010, 0x200035ac, 0x00000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa4, 0x00000000 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x04000010, 0x200035ac, 0x00000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe401ad, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe401ad, 0x00000fa0, 0x00000000 },
- { 0x00000001, 0x34000020, 0x00000fe0, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x00200040, 0x2f6035ad, 0x00450fa8, 0x00450fa0 },
- { 0x00000040, 0x2f703dad, 0x00000f60, 0x00300030 },
- { 0x00000040, 0x2f723dad, 0x00000f62, 0x00280028 },
- { 0x00200041, 0x2f903dad, 0x00450fd0, 0xffffffff },
- { 0x00200040, 0x2f8035ad, 0x00450fa8, 0x00450f90 },
- { 0x00200040, 0x2f8435ad, 0x00450fa8, 0x00450fd0 },
- { 0x05000010, 0x200035ac, 0x00000f60, 0x00000f80 },
- { 0x00010001, 0x2f6001ad, 0x00000f80, 0x00000000 },
- { 0x03000010, 0x200035ac, 0x00000f70, 0x00000f84 },
- { 0x00010040, 0x2f603dad, 0x00000f84, 0xffd0ffd0 },
- { 0x05000010, 0x200035ac, 0x00000f62, 0x00000f82 },
- { 0x00010001, 0x2f6201ad, 0x00000f82, 0x00000000 },
- { 0x03000010, 0x200035ac, 0x00000f72, 0x00000f86 },
- { 0x00010040, 0x2f623dad, 0x00000f86, 0xffd8ffd8 },
- { 0x05000010, 0x20003dac, 0x00000f60, 0x00000000 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000004 },
- { 0x00010001, 0x2f6001ed, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x03000010, 0x200035ac, 0x00000f70, 0x00000fc0 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000002 },
- { 0x00010040, 0x2f603dad, 0x00000fc0, 0xffd0ffd0 },
- { 0x05000010, 0x20003dac, 0x00000f62, 0x00000000 },
- { 0x00110020, 0x34001c00, 0x00001400, 0x00000004 },
- { 0x00010001, 0x2f6201ed, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 },
- { 0x03000010, 0x200035ac, 0x00000f72, 0x00000fc2 },
- { 0x00010040, 0x2f623dad, 0x00000fc2, 0xffd8ffd8 },
- { 0x00200041, 0x2f803dad, 0x00450fa8, 0xffffffff },
- { 0x00200040, 0x2fe435ad, 0x00450f60, 0x00450f80 },
- { 0x00000001, 0x34000020, 0x00000fe0, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0020000c, 0x2a803dad, 0x00450ac0, 0x00020002 },
- { 0x00200001, 0x240001ad, 0x00450a80, 0x00000000 },
- { 0x00200040, 0x2a883dad, 0x00450a80, 0x00030003 },
- { 0x00200005, 0x2a902d29, 0x00450a88, 0xfffcfffc },
- { 0x05000010, 0x20003dac, 0x00000400, 0x00000000 },
- { 0x00010041, 0x24003dad, 0x00000400, 0xffffffff },
- { 0x05000010, 0x20003dac, 0x00000402, 0x00000000 },
- { 0x00010041, 0x24023dad, 0x00000402, 0xffffffff },
- { 0x04000010, 0x20003dac, 0x00000400, 0x00040004 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000006 },
- { 0x04000010, 0x20003dac, 0x00000402, 0x00040004 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000002 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a },
- { 0x00600001, 0x2c800021, 0x008d0180, 0x00000000 },
- { 0x00600001, 0x2ca00021, 0x008d01a0, 0x00000000 },
- { 0x00000001, 0x244001ed, 0x00000000, 0xfff0fff0 },
- { 0x00000001, 0x244201ed, 0x00000000, 0xfff4fff4 },
- { 0x00000001, 0x2fa80021, 0x00000448, 0x00000000 },
- { 0x00200040, 0x2fa035ad, 0x00450440, 0x00450a90 },
- { 0x00600001, 0x2fc00021, 0x008d0a40, 0x00000000 },
- { 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0xffffff94 },
- { 0x00200001, 0x244001ad, 0x00450fe4, 0x00000000 },
- { 0x00600001, 0x28400061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28600061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800061, 0x00000000, 0x00000000 },
- { 0x00600001, 0x24600061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x247c0169, 0x00000000, 0x00000000 },
- { 0x00000001, 0x24000169, 0x00000000, 0x00020002 },
- { 0x00000040, 0x24002d29, 0x00000400, 0x00040004 },
- { 0x00000001, 0x247c0231, 0x00000400, 0x00000000 },
- { 0x00000001, 0x247d0231, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x244c0061, 0x00000000, 0x7e201000 },
- { 0x00000001, 0x24560169, 0x00000000, 0x28302830 },
- { 0x00000001, 0x24440021, 0x00000440, 0x00000000 },
- { 0x00600001, 0x28000021, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x24600061, 0x00000000, 0x00000002 },
- { 0x00000001, 0x24640231, 0x0000009c, 0x00000000 },
- { 0x00000040, 0x24640c21, 0x00000464, 0x00000000 },
- { 0x00000001, 0x24680061, 0x00000000, 0x30003030 },
- { 0x00000001, 0x24000169, 0x00000000, 0x00040004 },
- { 0x00000040, 0x247e4631, 0x0000047e, 0x00000400 },
- { 0x00000001, 0x24700021, 0x00000a20, 0x00000000 },
- { 0x00000001, 0x24740021, 0x00000a20, 0x00000000 },
- { 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
- { 0x08600031, 0x21801cbd, 0x00000800, 0x0a682000 },
- { 0x05000010, 0x20002528, 0x00000186, 0x00000c86 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 },
- { 0x00600001, 0x21800021, 0x008d0c80, 0x00000000 },
- { 0x00600001, 0x21a00021, 0x008d0ca0, 0x00000000 },
- { 0x00000020, 0x34001c00, 0x00001400, 0xffffff04 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
diff --git a/src/shaders/vme/vme.inc b/src/shaders/vme/vme.inc
deleted file mode 100644
index 50f990a..0000000
--- a/src/shaders/vme/vme.inc
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-// Modual name: ME_header.inc
-//
-// Global symbols define
-//
-
-/*
- * Constant
- */
-define(`VME_MESSAGE_TYPE_INTER', `1')
-define(`VME_MESSAGE_TYPE_INTRA', `2')
-define(`VME_MESSAGE_TYPE_MIXED', `3')
-
-define(`BLOCK_32X1', `0x0000001F')
-define(`BLOCK_4X16', `0x000F0003')
-
-define(`LUMA_INTRA_16x16_DISABLE', `0x1')
-define(`LUMA_INTRA_8x8_DISABLE', `0x2')
-define(`LUMA_INTRA_4x4_DISABLE', `0x4')
-
-define(`INTRA_PRED_AVAIL_FLAG_AE', `0x60')
-define(`INTRA_PRED_AVAIL_FLAG_B', `0x10')
-define(`INTRA_PRED_AVAIL_FLAG_C', `0x8')
-define(`INTRA_PRED_AVAIL_FLAG_D', `0x4')
-
-define(`BIND_IDX_VME', `0')
-define(`BIND_IDX_VME_REF0', `1')
-define(`BIND_IDX_VME_REF1', `2')
-define(`BIND_IDX_OUTPUT', `3')
-define(`BIND_IDX_INEP', `4')
-
-define(`SUB_PEL_MODE_INTEGER', `0x00000000')
-define(`SUB_PEL_MODE_HALF', `0x00001000')
-define(`SUB_PEL_MODE_QUARTER', `0x00003000')
-
-define(`INTER_SAD_NONE', `0x00000000')
-define(`INTER_SAD_HAAR', `0x00200000')
-
-define(`INTRA_SAD_NONE', `0x00000000')
-define(`INTRA_SAD_HAAR', `0x00800000')
-
-define(`INTER_PART_MASK', `0x00000000')
-
-define(`SEARCH_CTRL_SINGLE', `0x00000000')
-define(`SEARCH_CTRL_DUAL_START', `0x00000100')
-define(`SEARCH_CTRL_DUAL_RECORD', `0x00000300')
-define(`SEARCH_CTRL_DUAL_REFERENCE', `0x00000700')
-
-define(`REF_REGION_SIZE', `0x2830:UW')
-define(`MIN_REF_REGION_SIZE', `0x2020:UW')
-
-define(`BI_SUB_MB_PART_MASK', `0x0c000000')
-define(`MAX_NUM_MV', `0x00000020')
-define(`FB_PRUNING_ENABLE', `0x40000000')
-
-define(`SEARCH_PATH_LEN', `0x00003030')
-define(`START_CENTER', `0x30000000')
-
-define(`ADAPTIVE_SEARCH_ENABLE', `0x00000002')
-define(`INTRA_PREDICTORE_MODE', `0x11111111:UD')
-
-define(`INTER_VME_OUTPUT_IN_OWS', `10')
-define(`INTER_VME_OUTPUT_MV_IN_OWS', `8')
-
-define(`INTRAMBFLAG_MASK', `0x00002000')
-define(`MVSIZE_UW_BASE', `0x0040')
-define(`MFC_MV32_BIT_SHIFT', `5')
-define(`CBP_DC_YUV_UW', `0x000E')
-
-#ifdef DEV_SNB
-
-define(`MV32_BIT_MASK', `0x0010')
-define(`MV32_BIT_SHIFT', `4')
-
-define(`OBW_CACHE_TYPE', `5')
-
-#else
-
-define(`MV32_BIT_MASK', `0x0020')
-define(`MV32_BIT_SHIFT', `5')
-
-define(`OBW_CACHE_TYPE', `10')
-
-#endif
-
-define(`OBW_MESSAGE_TYPE', `8')
-
-define(`OBW_BIND_IDX', `BIND_IDX_OUTPUT')
-
-define(`OBW_CONTROL_0', `0') /* 1 OWord, low 128 bits */
-define(`OBW_CONTROL_1', `1') /* 1 OWord, high 128 bits */
-define(`OBW_CONTROL_2', `2') /* 2 OWords */
-define(`OBW_CONTROL_3', `3') /* 4 OWords */
-define(`OBW_CONTROL_4', `4') /* 8 OWords */
-
-#ifdef DEV_SNB
-
-define(`OBW_WRITE_COMMIT_CATEGORY', `1') /* write commit on Sandybrige */
-
-#else
-
-define(`OBW_WRITE_COMMIT_CATEGORY', `0') /* category on Ivybridge */
-
-#endif
-
-
-define(`OBW_HEADER_PRESENT', `1')
-
-/* GRF registers
- * r0 header
- * r1~r4 constant buffer (reserved)
- * r5 inline data
- * r6~r11 reserved
- * r12 write back of VME message
- * r13 write back of Oword Block Write
- */
-/*
- * GRF 0 -- header
- */
-define(`thread_id_ub', `r0.20<0,1,0>:UB') /* thread id in payload */
-
-/*
- * GRF 1~4 -- Constant Buffer (reserved)
- */
-
-/*
- * GRF 5 -- inline data
- */
-define(`inline_reg0', `r5')
-define(`w_in_mb_uw', `inline_reg0.2')
-define(`orig_xy_ub', `inline_reg0.0')
-define(`orig_x_ub', `inline_reg0.0') /* in macroblock */
-define(`orig_y_ub', `inline_reg0.1')
-define(`transform_8x8_ub', `inline_reg0.4')
-define(`slice_edge_ub', `inline_reg0.4')
-define(`num_macroblocks', `inline_reg0.6')
-define(`quality_level_ub', `inline_reg0.8')
-
-/*
- * GRF 6~11 -- reserved
- */
-
-/*
- * GRF 12~15 -- write back for VME message
- */
-define(`vme_wb', `r12')
-define(`vme_wb0', `r12')
-define(`vme_wb1', `r13')
-define(`vme_wb2', `r14')
-define(`vme_wb3', `r15')
-
-#ifdef DEV_SNB
-/*
- * GRF 16 -- write back for Oword Block Write message with write commit bit
- */
-define(`obw_wb', `r16')
-define(`obw_wb_length', `1')
-
-#else
-
-/*
- * GRF 16 -- write back for VME message
- */
-define(`vme_wb4', `r16')
-define(`obw_wb', `null<1>:W')
-define(`obw_wb_length', `0')
-
-#endif
-
-/*
- * GRF 18~21 -- Intra Neighbor Edge Pixels
- */
-define(`INEP_ROW', `r18')
-define(`INEP_COL0', `r20')
-define(`INEP_COL1', `r21')
-
-/*
- * temporary registers
- */
-define(`tmp_reg0', `r32')
-define(`read0_header', `tmp_reg0')
-define(`tmp_reg1', `r33')
-define(`read1_header', `tmp_reg1')
-define(`tmp_reg2', `r34')
-define(`vme_m0', `tmp_reg2')
-define(`tmp_reg3', `r35')
-define(`vme_m1', `tmp_reg3')
-define(`intra_flag', `vme_m1.28')
-define(`intra_part_mask_ub', `vme_m1.28')
-define(`mb_intra_struct_ub', `vme_m1.29')
-define(`tmp_reg4', `r36')
-define(`obw_m0', `tmp_reg4')
-define(`tmp_reg5', `r37')
-define(`obw_m1', `tmp_reg5')
-define(`tmp_reg6', `r38')
-define(`obw_m2', `tmp_reg6')
-define(`tmp_reg7', `r39')
-define(`obw_m3', `tmp_reg7')
-define(`tmp_reg8', `r40')
-define(`obw_m4', `tmp_reg8')
-define(`tmp_reg9', `r41')
-define(`tmp_x_w', `tmp_reg9.0')
-define(`tmp_rega', `r42')
-define(`tmp_ud0', `tmp_rega.0')
-define(`tmp_ud1', `tmp_rega.4')
-define(`tmp_ud2', `tmp_rega.8')
-define(`tmp_ud3', `tmp_rega.12')
-define(`tmp_uw0', `tmp_rega.0')
-define(`tmp_uw1', `tmp_rega.2')
-define(`tmp_uw2', `tmp_rega.4')
-define(`tmp_uw3', `tmp_rega.6')
-define(`tmp_uw4', `tmp_rega.8')
-define(`tmp_uw5', `tmp_rega.10')
-define(`tmp_uw6', `tmp_rega.12')
-define(`tmp_uw7', `tmp_rega.14')
-
-/*
- * MRF registers
- */
-#ifdef DEV_SNB
-
-define(`msg_ind', `0')
-define(`msg_reg0', `m0') /* m0 */
-define(`msg_reg1', `m1') /* m1 */
-define(`msg_reg2', `m2') /* m2 */
-define(`msg_reg3', `m3') /* m3 */
-define(`msg_reg4', `m4') /* m4 */
-
-#else
-
-define(`msg_ind', `64')
-define(`msg_reg0', `g64')
-define(`msg_reg1', `g65')
-define(`msg_reg2', `g66')
-define(`msg_reg3', `g67')
-define(`msg_reg4', `g68')
-
-#endif
-
-/*
- * VME message payload
- */
-
-#ifdef DEV_SNB
-
-define(`vme_msg_length', `4')
-define(`vme_inter_wb_length', `4')
-
-#else
-
-define(`vme_msg_length', `5')
-define(`vme_inter_wb_length', `6')
-
-#endif
-
-define(`vme_intra_wb_length', `1')
-
-define(`vme_msg_ind', `msg_ind')
-define(`vme_msg_0', `msg_reg0')
-define(`vme_msg_1', `msg_reg1')
-define(`vme_msg_2', `msg_reg2')
-
-#ifdef DEV_SNB
-
-define(`vme_msg_3', `vme_msg_2')
-define(`vme_msg_4', `msg_reg3')
-
-#else
-
-define(`vme_msg_3', `msg_reg3')
-define(`vme_msg_4', `msg_reg4')
-
-#endif
-
-define(`DEFAULT_QUALITY_LEVEL', `0x01')
-define(`HIGH_QUALITY_LEVEL', `DEFAULT_QUALITY_LEVEL')
-define(`LOW_QUALITY_LEVEL', `0x02')
diff --git a/src/shaders/vme/vme7.inc b/src/shaders/vme/vme7.inc
deleted file mode 100644
index 8c1731c..0000000
--- a/src/shaders/vme/vme7.inc
+++ /dev/null
@@ -1,342 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-// Modual name: ME_header.inc
-//
-// Global symbols define
-//
-
-/*
- * Constant
- */
-define(`VME_MESSAGE_TYPE_INTER', `1')
-define(`VME_MESSAGE_TYPE_INTRA', `2')
-define(`VME_MESSAGE_TYPE_MIXED', `3')
-
-define(`BLOCK_32X1', `0x0000001F')
-define(`BLOCK_4X16', `0x000F0003')
-
-define(`LUMA_INTRA_16x16_DISABLE', `0x1')
-define(`LUMA_INTRA_8x8_DISABLE', `0x2')
-define(`LUMA_INTRA_4x4_DISABLE', `0x4')
-
-define(`INTRA_PRED_AVAIL_FLAG_AE', `0x60')
-define(`INTRA_PRED_AVAIL_FLAG_B', `0x10')
-define(`INTRA_PRED_AVAIL_FLAG_C', `0x8')
-define(`INTRA_PRED_AVAIL_FLAG_D', `0x4')
-
-define(`BIND_IDX_VME', `0')
-define(`BIND_IDX_VME_REF0', `1')
-define(`BIND_IDX_VME_REF1', `2')
-define(`BIND_IDX_OUTPUT', `3')
-define(`BIND_IDX_INEP', `4')
-
-define(`SUB_PEL_MODE_INTEGER', `0x00000000')
-define(`SUB_PEL_MODE_HALF', `0x00001000')
-define(`SUB_PEL_MODE_QUARTER', `0x00003000')
-
-define(`INTER_SAD_NONE', `0x00000000')
-define(`INTER_SAD_HAAR', `0x00200000')
-
-define(`INTRA_SAD_NONE', `0x00000000')
-define(`INTRA_SAD_HAAR', `0x00800000')
-
-define(`INTER_PART_MASK', `0x00000000')
-
-define(`SEARCH_CTRL_SINGLE', `0x00000000')
-define(`SEARCH_CTRL_DUAL_START', `0x00000100')
-define(`SEARCH_CTRL_DUAL_RECORD', `0x00000300')
-define(`SEARCH_CTRL_DUAL_REFERENCE', `0x00000700')
-
-define(`REF_REGION_SIZE', `0x2830:UW')
-define(`MIN_REF_REGION_SIZE', `0x2020:UW')
-define(`DREF_REGION_SIZE', `0x2020:UW')
-
-define(`BI_SUB_MB_PART_MASK', `0x0c000000')
-define(`MAX_NUM_MV', `0x00000020')
-define(`FB_PRUNING_ENABLE', `0x40000000')
-define(`FB_PRUNING_DISABLE', `0x00000000')
-
-define(`SEARCH_PATH_LEN', `0x00003030')
-define(`START_CENTER', `0x30000000')
-
-define(`ADAPTIVE_SEARCH_ENABLE', `0x00000002')
-define(`INTRA_PREDICTORE_MODE', `0x11111111:UD')
-
-define(`INTER_VME_OUTPUT_IN_OWS', `10')
-define(`INTER_VME_OUTPUT_MV_IN_OWS', `8')
-
-define(`INTRAMBFLAG_MASK', `0x00002000')
-define(`MVSIZE_UW_BASE', `0x0040')
-define(`MFC_MV32_BIT_SHIFT', `5')
-define(`CBP_DC_YUV_UW', `0x000E')
-
-define(`DC_HARR_ENABLE', `0x0000')
-define(`DC_HARR_DISABLE', `0x0020')
-
-define(`MV32_BIT_MASK', `0x0020')
-define(`MV32_BIT_SHIFT', `5')
-
-define(`OBW_CACHE_TYPE', `10')
-
-
-define(`OBW_MESSAGE_TYPE', `8')
-
-define(`OBW_BIND_IDX', `BIND_IDX_OUTPUT')
-
-define(`OBW_CONTROL_0', `0') /* 1 OWord, low 128 bits */
-define(`OBW_CONTROL_1', `1') /* 1 OWord, high 128 bits */
-define(`OBW_CONTROL_2', `2') /* 2 OWords */
-define(`OBW_CONTROL_3', `3') /* 4 OWords */
-define(`OBW_CONTROL_8', `4') /* 8 OWords */
-
-define(`FME_REPART_ENABLE', `0x80000000')
-define(`FME_REPART_DISABLE', `0x00000000')
-define(`FME_SINGLE_PARTION', `0x00000000')
-define(`FME_MUL_PARTION', `0x00000008')
-
-
-define(`OBW_WRITE_COMMIT_CATEGORY', `0') /* category on Ivybridge */
-
-
-define(`OBW_HEADER_PRESENT', `1')
-
-/* GRF registers
- * r0 header
- * r1~r4 constant buffer (reserved)
- * r5 inline data
- * r6~r11 reserved
- * r12 write back of VME message
- * r13 write back of Oword Block Write
- */
-/*
- * GRF 0 -- header
- */
-define(`thread_id_ub', `r0.20<0,1,0>:UB') /* thread id in payload */
-
-/*
- * GRF 1~4 -- Constant Buffer (reserved)
- */
-
-/*
- * GRF 5 -- inline data
- */
-define(`inline_reg0', `r5')
-define(`w_in_mb_uw', `inline_reg0.2')
-define(`orig_xy_ub', `inline_reg0.0')
-define(`orig_x_ub', `inline_reg0.0') /* in macroblock */
-define(`orig_y_ub', `inline_reg0.1')
-define(`transform_8x8_ub', `inline_reg0.4')
-define(`input_mb_intra_ub', `inline_reg0.5')
-define(`num_macroblocks', `inline_reg0.6')
-define(`quality_level_ub', `inline_reg0.7')
-
-define(`qp_ub', `inline_reg0.8')
-/*
- * GRF 6~11 -- reserved
- */
-
-/*
- * GRF 12~15 -- write back for VME message
- */
-define(`vme_wb', `r12')
-define(`vme_wb0', `r12')
-define(`vme_wb1', `r13')
-define(`vme_wb2', `r14')
-define(`vme_wb3', `r15')
-define(`vme_wb4', `r16')
-define(`vme_wb5', `r17')
-define(`vme_wb6', `r18')
-
-
-/*
- * GRF 24 -- write for VME output message
- */
-define(`obw_wb', `null<1>:W')
-define(`obw_wb_length', `0')
-
-
-/*
- * GRF 28~30 -- Intra Neighbor Edge Pixels
- */
-define(`INEP_ROW', `r28')
-define(`INEP_COL0', `r29')
-define(`INEP_COL1', `r30')
-
-/*
- * temporary registers
- */
-define(`tmp_reg0', `r32')
-define(`read0_header', `tmp_reg0')
-define(`tmp_reg1', `r33')
-define(`read1_header', `tmp_reg1')
-define(`tmp_reg2', `r34')
-define(`vme_m0', `tmp_reg2')
-define(`tmp_reg3', `r35')
-define(`vme_m1', `tmp_reg3')
-define(`intra_flag', `vme_m1.28')
-define(`intra_part_mask_ub', `vme_m1.28')
-define(`mb_intra_struct_ub', `vme_m1.29')
-define(`tmp_reg4', `r36')
-define(`obw_m0', `tmp_reg4')
-define(`tmp_reg5', `r37')
-define(`obw_m1', `tmp_reg5')
-define(`tmp_reg6', `r38')
-define(`obw_m2', `tmp_reg6')
-define(`tmp_reg7', `r39')
-define(`obw_m3', `tmp_reg7')
-define(`tmp_reg8', `r40')
-define(`obw_m4', `tmp_reg8')
-define(`tmp_reg9', `r41')
-define(`tmp_x_w', `tmp_reg9.0')
-define(`tmp_rega', `r42')
-define(`tmp_ud0', `tmp_rega.0')
-define(`tmp_ud1', `tmp_rega.4')
-define(`tmp_ud2', `tmp_rega.8')
-define(`tmp_ud3', `tmp_rega.12')
-define(`tmp_uw0', `tmp_rega.0')
-define(`tmp_uw1', `tmp_rega.2')
-define(`tmp_uw2', `tmp_rega.4')
-define(`tmp_uw3', `tmp_rega.6')
-define(`tmp_uw4', `tmp_rega.8')
-define(`tmp_uw5', `tmp_rega.10')
-define(`tmp_uw6', `tmp_rega.12')
-define(`tmp_uw7', `tmp_rega.14')
-
-define(`vme_m2', `r43')
-/*
- * MRF registers
- */
-
-define(`msg_ind', `64')
-define(`msg_reg0', `r64')
-define(`msg_reg1', `r65')
-define(`msg_reg2', `r66')
-define(`msg_reg3', `r67')
-define(`msg_reg4', `r68')
-define(`msg_reg5', `r69')
-define(`msg_reg6', `r70')
-define(`msg_reg7', `r71')
-define(`msg_reg8', `r72')
-define(`msg_reg9', `r73')
-
-define(`ts_msg_ind', `112')
-define(`ts_msg_reg0', `r112')
-/*
- * VME message payload
- */
-
-define(`vme_msg_length', `5')
-define(`vme_inter_wb_length', `6')
-define(`vme_intra_wb_length', `1')
-
-define(`vme_msg_ind', `msg_ind')
-define(`vme_msg_0', `msg_reg0')
-define(`vme_msg_1', `msg_reg1')
-define(`vme_msg_2', `msg_reg2')
-
-define(`vme_msg_3', `msg_reg3')
-define(`vme_msg_4', `msg_reg4')
-
-
-define(`vme_msg_5', `msg_reg5')
-define(`vme_msg_6', `msg_reg6')
-define(`vme_msg_7', `msg_reg7')
-define(`vme_msg_8', `msg_reg8')
-define(`vme_msg_9', `msg_reg9')
-
-define(`RETURN_REG', `r127.0')
-define(`RET_ARG', `r127.4')
-
-/* Now at most two registers are used for input parameter */
-define(`INPUT_ARG0', `r125')
-define(`INPUT_ARG1', `r126')
-
-/* Two temporal registers are used in the function */
-define(`TEMP_VAR0', `r123')
-define(`TEMP_VAR1', `r124')
-
-
-define(`OBR_MESSAGE_TYPE', `0')
-define(`OBR_CACHE_TYPE', `10')
-define(`OBR_BIND_IDX', `BIND_IDX_OUTPUT')
-
-define(`OBR_CONTROL_0', `0') /* 1 OWord, low 128 bits */
-define(`OBR_CONTROL_1', `1') /* 1 OWord, high 128 bits */
-define(`OBR_CONTROL_2', `2') /* 2 OWords */
-define(`OBR_CONTROL_4', `3') /* 4 OWords */
-define(`OBR_CONTROL_8', `4') /* 8 OWords */
-define(`OBR_WRITE_COMMIT_CATEGORY', `0') /* category on SNB+ for Data port */
-define(`OBR_HEADER_PRESENT', `1')
-
-define(`mb_hwdep', `r5.6')
-define(`MB_AVAIL', `1:d')
-define(`MB_PRED_FLAG', `1:w')
-
-define(`mb_pred_mode', `r85')
-define(`mb_mvp_ref', `r86')
-define(`mba_result', `r87')
-define(`mbb_result', `r88')
-define(`mbc_result', `r89')
-define(`mb_ind', `90')
-define(`mb_msg0', `r90')
-define(`mb_msg_tmp', `r91')
-define(`mb_wb', `r92')
-define(`mb_mode_wb', `r92')
-define(`mb_mv0', `r93')
-define(`mb_mv1', `r94')
-define(`mb_mv2', `r95')
-define(`mb_mv3', `r96')
-define(`mb_ref', `r97')
-define(`mb_ref_win', `r84')
-
-define(`PRED_L0', `0x0':uw)
-define(`PRED_L1', `0x1':uw)
-define(`PRED_BI', `0x2':uw)
-define(`PRED_DIRECT', `0x3':uw)
-define(`PRED_MASK', `0x3':uw)
-
-/* The MAX search len per reference is 16 */
-define(`DSEARCH_PATH_LEN', `0x00001212')
-define(`BI_WEIGHT', `0x20':uw)
-define(`DSTART_CENTER', `0x00000000')
-define(`INTER_MASK', `0x03')
-define(`INTER_16X16MODE', `0x0')
-define(`INTER_16X8MODE', `0x01')
-define(`INTER_8X16MODE', `0x02')
-define(`INTER_8X8MODE', `0x03')
-define(`INTER_BLOCK0', `0x0')
-define(`INTER_BLOCK1', `0x1')
-define(`INTER_BLOCK2', `0x2')
-define(`INTER_BLOCK3', `0x3')
-define(`INTER_16X8MODE', `0x01')
-define(`INTER_8X16MODE', `0x02')
-
-define(`OBR_MESSAGE_FENCE', `7')
-define(`OBR_MF_NOCOMMIT', `0')
-define(`OBR_MF_COMMIT', `0x20')
-
-define(`DEFAULT_QUALITY_LEVEL', `0x01')
-define(`HIGH_QUALITY_LEVEL', `DEFAULT_QUALITY_LEVEL')
-define(`LOW_QUALITY_LEVEL', `0x02')
diff --git a/src/shaders/vme/vme75.inc b/src/shaders/vme/vme75.inc
deleted file mode 100644
index fa7aa7e..0000000
--- a/src/shaders/vme/vme75.inc
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-// Modual name: ME_header.inc
-//
-// Global symbols define
-//
-
-/*
- * Constant
- */
-define(`VME_MESSAGE_TYPE_INTER', `1')
-define(`VME_MESSAGE_TYPE_INTRA', `2')
-define(`VME_MESSAGE_TYPE_MIXED', `3')
-
-define(`VME_SIC_MESSAGE_TYPE', `1')
-define(`VME_IME_MESSAGE_TYPE', `2')
-define(`VME_FBR_MESSAGE_TYPE', `3')
-
-define(`BLOCK_32X1', `0x0000001F')
-define(`BLOCK_4X16', `0x000F0003')
-define(`BLOCK_8X4', `0x00070003')
-
-define(`LUMA_INTRA_16x16_DISABLE', `0x1')
-define(`LUMA_INTRA_8x8_DISABLE', `0x2')
-define(`LUMA_INTRA_4x4_DISABLE', `0x4')
-
-define(`INTRA_PRED_AVAIL_FLAG_AE', `0x60')
-define(`INTRA_PRED_AVAIL_FLAG_B', `0x10')
-define(`INTRA_PRED_AVAIL_FLAG_C', `0x8')
-define(`INTRA_PRED_AVAIL_FLAG_D', `0x4')
-
-define(`BIND_IDX_VME', `0')
-define(`BIND_IDX_VME_REF0', `1')
-define(`BIND_IDX_VME_REF1', `2')
-define(`BIND_IDX_OUTPUT', `3')
-define(`BIND_IDX_INEP', `4')
-define(`BIND_IDX_COST', `8')
-
-define(`SUB_PEL_MODE_INTEGER', `0x00000000')
-define(`SUB_PEL_MODE_HALF', `0x00001000')
-define(`SUB_PEL_MODE_QUARTER', `0x00003000')
-
-define(`INTER_SAD_NONE', `0x00000000')
-define(`INTER_SAD_HAAR', `0x00200000')
-
-define(`INTRA_SAD_NONE', `0x00000000')
-define(`INTRA_SAD_HAAR', `0x00800000')
-
-define(`INTER_PART_MASK', `0x00000000')
-
-define(`SEARCH_CTRL_SINGLE', `0x00000000')
-define(`SEARCH_CTRL_DUAL_START', `0x00000100')
-define(`SEARCH_CTRL_DUAL_RECORD', `0x00000300')
-define(`SEARCH_CTRL_DUAL_REFERENCE', `0x00000700')
-
-define(`REF_REGION_SIZE', `0x2830:UW')
-define(`MIN_REF_REGION_SIZE', `0x2020:UW')
-define(`DREF_REGION_SIZE', `0x2020:UW')
-
-define(`BI_SUB_MB_PART_MASK', `0x0c000000')
-define(`MAX_NUM_MV', `0x00000020')
-define(`FB_PRUNING_ENABLE', `0x40000000')
-
-define(`SEARCH_PATH_LEN', `0x00003030')
-define(`START_CENTER', `0x30000000')
-
-define(`ADAPTIVE_SEARCH_ENABLE', `0x00000002')
-define(`INTRA_PREDICTORE_MODE', `0x11111111:UD')
-
-define(`INTER_VME_OUTPUT_IN_OWS', `10')
-define(`INTER_VME_OUTPUT_MV_IN_OWS', `8')
-
-define(`INTRAMBFLAG_MASK', `0x00002000')
-define(`MVSIZE_UW_BASE', `0x0040')
-define(`MFC_MV32_BIT_SHIFT', `5')
-define(`CBP_DC_YUV_UW', `0x000E')
-
-define(`DC_HARR_ENABLE', `0x0000')
-define(`DC_HARR_DISABLE', `0x0020')
-
-define(`MV32_BIT_MASK', `0x0020')
-define(`MV32_BIT_SHIFT', `5')
-
-define(`OBW_CACHE_TYPE', `10')
-
-
-define(`OBW_MESSAGE_TYPE', `8')
-
-define(`OBW_BIND_IDX', `BIND_IDX_OUTPUT')
-
-define(`OBW_CONTROL_0', `0') /* 1 OWord, low 128 bits */
-define(`OBW_CONTROL_1', `1') /* 1 OWord, high 128 bits */
-define(`OBW_CONTROL_2', `2') /* 2 OWords */
-define(`OBW_CONTROL_3', `3') /* 4 OWords */
-define(`OBW_CONTROL_8', `4') /* 8 OWords */
-
-define(`FBR_BME_ENABLE', `0x00000000')
-define(`FBR_BME_DISABLE', `0x00040000')
-
-define(`OBW_WRITE_COMMIT_CATEGORY', `0') /* category on Ivybridge */
-
-
-define(`OBW_HEADER_PRESENT', `1')
-
-/* GRF registers
- * r0 header
- * r1~r4 constant buffer (reserved)
- * r5 inline data
- * r6~r11 reserved
- * r12 write back of VME message
- * r13 write back of Oword Block Write
- */
-/*
- * GRF 0 -- header
- */
-define(`thread_id_ub', `r0.20<0,1,0>:UB') /* thread id in payload */
-
-/*
- * GRF 1~4 -- Constant Buffer (reserved)
- */
-
-/*
- * GRF 5 -- inline data
- */
-define(`inline_reg0', `r5')
-define(`w_in_mb_uw', `inline_reg0.2')
-define(`orig_xy_ub', `inline_reg0.0')
-define(`orig_x_ub', `inline_reg0.0') /* in macroblock */
-define(`orig_y_ub', `inline_reg0.1')
-define(`transform_8x8_ub', `inline_reg0.4')
-define(`input_mb_intra_ub', `inline_reg0.5')
-define(`num_macroblocks', `inline_reg0.6')
-define(`quality_level_ub', `inline_reg0.7')
-
-define(`qp_ub', `inline_reg0.8')
-
-/*
- * GRF 6~11 -- reserved
- */
-
-/*
- * GRF 12~15 -- write back for VME message
- */
-define(`vme_wb', `r12')
-define(`vme_wb0', `r12')
-define(`vme_wb1', `r13')
-define(`vme_wb2', `r14')
-define(`vme_wb3', `r15')
-define(`vme_wb4', `r16')
-define(`vme_wb5', `r17')
-define(`vme_wb6', `r18')
-define(`vme_ime_wb7', `r19')
-define(`vme_ime_wb8', `r20')
-define(`vme_ime_wb9', `r21')
-define(`vme_ime_wb10', `r22')
-
-
-/*
- * GRF 24 -- write for VME output message
- */
-define(`obw_wb', `null<1>:W')
-define(`obw_wb_length', `0')
-
-
-/*
- * GRF 28~30 -- Intra Neighbor Edge Pixels
- */
-define(`INEP_ROW', `r28')
-define(`INEP_COL0', `r29')
-define(`INEP_COL1', `r30')
-
-/*
- * GRF 48~50 -- Chroma Neighbor Edge Pixels
- */
-define(`CHROMA_ROW', `r48')
-define(`CHROMA_COL', `r49')
-
-/*
- * temporary registers
- */
-define(`tmp_reg0', `r32')
-define(`read0_header', `tmp_reg0')
-define(`tmp_reg1', `r33')
-define(`read1_header', `tmp_reg1')
-define(`tmp_reg2', `r34')
-define(`vme_m0', `tmp_reg2')
-define(`tmp_reg3', `r35')
-define(`vme_m1', `tmp_reg3')
-define(`intra_flag', `vme_m1.28')
-define(`intra_part_mask_ub', `vme_m1.28')
-define(`mb_intra_struct_ub', `vme_m1.29')
-define(`tmp_reg4', `r36')
-define(`obw_m0', `tmp_reg4')
-define(`tmp_reg5', `r37')
-define(`obw_m1', `tmp_reg5')
-define(`tmp_reg6', `r38')
-define(`obw_m2', `tmp_reg6')
-define(`tmp_reg7', `r39')
-define(`obw_m3', `tmp_reg7')
-define(`tmp_reg8', `r40')
-define(`obw_m4', `tmp_reg8')
-define(`tmp_reg9', `r41')
-define(`tmp_x_w', `tmp_reg9.0')
-define(`tmp_rega', `r42')
-define(`tmp_ud0', `tmp_rega.0')
-define(`tmp_ud1', `tmp_rega.4')
-define(`tmp_ud2', `tmp_rega.8')
-define(`tmp_ud3', `tmp_rega.12')
-define(`tmp_uw0', `tmp_rega.0')
-define(`tmp_uw1', `tmp_rega.2')
-define(`tmp_uw2', `tmp_rega.4')
-define(`tmp_uw3', `tmp_rega.6')
-define(`tmp_uw4', `tmp_rega.8')
-define(`tmp_uw5', `tmp_rega.10')
-define(`tmp_uw6', `tmp_rega.12')
-define(`tmp_uw7', `tmp_rega.14')
-
-define(`vme_m2', `r43')
-define(`vme_cost_wb', `r44')
-/*
- * MRF registers
- */
-
-define(`msg_ind', `64')
-define(`msg_reg0', `r64')
-define(`msg_reg1', `r65')
-define(`msg_reg2', `r66')
-define(`msg_reg3', `r67')
-define(`msg_reg4', `r68')
-define(`msg_reg5', `r69')
-define(`msg_reg6', `r70')
-define(`msg_reg7', `r71')
-define(`msg_reg8', `r72')
-define(`msg_reg9', `r73')
-
-define(`ts_msg_ind', `112')
-define(`ts_msg_reg0', `r112')
-/*
- * VME message payload
- */
-
-define(`vme_intra_wb_length', `1')
-define(`vme_wb_length', `7')
-define(`sic_vme_msg_length', `7')
-define(`fbr_vme_msg_length', `7')
-define(`ime_vme_msg_length', `5')
-
-define(`vme_msg_ind', `msg_ind')
-define(`vme_msg_0', `msg_reg0')
-define(`vme_msg_1', `msg_reg1')
-define(`vme_msg_2', `msg_reg2')
-
-define(`vme_msg_3', `msg_reg3')
-define(`vme_msg_4', `msg_reg4')
-
-
-define(`vme_msg_5', `msg_reg5')
-define(`vme_msg_6', `msg_reg6')
-define(`vme_msg_7', `msg_reg7')
-define(`vme_msg_8', `msg_reg8')
-define(`vme_msg_9', `msg_reg9')
-
-define(`BIND_IDX_CBCR', `6')
-
-
-define(`LUMA_CHROMA_MODE', `0x0')
-define(`LUMA_INTRA_MODE', `0x1')
-define(`LUMA_INTRA_DISABLE', `0x2')
-
-define(`RETURN_REG', `r127.0')
-define(`RET_ARG', `r127.4')
-
-/* Now at most two registers are used for input parameter */
-define(`INPUT_ARG0', `r125')
-define(`INPUT_ARG1', `r126')
-
-/* Two temporal registers are used in the function */
-define(`TEMP_VAR0', `r123')
-define(`TEMP_VAR1', `r124')
-
-
-define(`OBR_MESSAGE_TYPE', `0')
-define(`OBR_CACHE_TYPE', `10')
-define(`OBR_BIND_IDX', `BIND_IDX_OUTPUT')
-
-define(`OBR_CONTROL_0', `0') /* 1 OWord, low 128 bits */
-define(`OBR_CONTROL_1', `1') /* 1 OWord, high 128 bits */
-define(`OBR_CONTROL_2', `2') /* 2 OWords */
-define(`OBR_CONTROL_4', `3') /* 4 OWords */
-define(`OBR_CONTROL_8', `4') /* 8 OWords */
-define(`OBR_WRITE_COMMIT_CATEGORY', `0') /* category on SNB+ for Data port */
-define(`OBR_HEADER_PRESENT', `1')
-
-define(`mb_hwdep', `r5.6')
-define(`MB_AVAIL', `1:d')
-define(`MB_PRED_FLAG', `1:w')
-
-define(`mb_pred_mode', `r85')
-define(`mb_mvp_ref', `r86')
-define(`mba_result', `r87')
-define(`mbb_result', `r88')
-define(`mbc_result', `r89')
-define(`mb_ind', `90')
-define(`mb_msg0', `r90')
-define(`mb_wb', `r91')
-define(`mb_intra_wb', `r91')
-define(`mb_inter_wb', `r92')
-define(`mb_mv0', `r93')
-define(`mb_mv1', `r94')
-define(`mb_mv2', `r95')
-define(`mb_mv3', `r96')
-define(`mb_ref', `r97')
-define(`mb_ref_win', `r84')
-
-define(`PRED_L0', `0x0':uw)
-define(`PRED_L1', `0x1':uw)
-define(`PRED_BI', `0x2':uw)
-define(`PRED_DIRECT', `0x3':uw)
-define(`PRED_MASK', `0x3':uw)
-
-/* The MAX search len per reference is 16 */
-define(`DSEARCH_PATH_LEN', `0x00001212')
-define(`BI_WEIGHT', `0x20':uw)
-define(`DSTART_CENTER', `0x00000000')
-define(`INTER_MASK', `0x03')
-define(`INTER_16X16MODE', `0x0')
-define(`INTER_16X8MODE', `0x01')
-define(`INTER_8X16MODE', `0x02')
-define(`INTER_8X8MODE', `0x03')
-define(`INTER_BLOCK0', `0x0')
-define(`INTER_BLOCK1', `0x1')
-define(`INTER_BLOCK2', `0x2')
-define(`INTER_BLOCK3', `0x3')
-define(`INTER_16X8MODE', `0x01')
-define(`INTER_8X16MODE', `0x02')
-
-define(`OBR_MESSAGE_FENCE', `7')
-define(`OBR_MF_NOCOMMIT', `0')
-define(`OBR_MF_COMMIT', `0x20')
-
-define(`DEFAULT_QUALITY_LEVEL', `0x01')
-define(`HIGH_QUALITY_LEVEL', `DEFAULT_QUALITY_LEVEL')
-define(`LOW_QUALITY_LEVEL', `0x02')
diff --git a/src/shaders/vme/vme75_mpeg2.inc b/src/shaders/vme/vme75_mpeg2.inc
deleted file mode 100644
index db08764..0000000
--- a/src/shaders/vme/vme75_mpeg2.inc
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-// Modual name: ME_header.inc
-//
-// Global symbols define
-//
-
-/*
- * Constant
- */
-
-define(`INTER_PART_MASK', `0x7e000000')
-define(`mpeg2_ref', `r83')
-define(`pic_ref', `r82')
-define(`INTRA16_DC_PRED', `0xBB')
-/* Cost center ref */
-define(`mv_cc_ref', `r81')
-define(`tmp_vme_wb0', `r100')
-define(`tmp_vme_wb1', `r101')
-define(`tmp_vme_wb2', `r102')
-define(`tmp_vme_wb3', `r103')
-define(`tmp_vme_wb4', `r104')
-define(`tmp_vme_wb5', `r105')
-define(`tmp_vme_wb6', `r106')
-define(`tmp_vme_wb7', `r107')
-define(`tmp_vme_wb8', `r108')
-define(`tmp_vme_wb9', `r109')
diff --git a/src/shaders/vme/vme7_mpeg2.inc b/src/shaders/vme/vme7_mpeg2.inc
deleted file mode 100644
index 2cb9836..0000000
--- a/src/shaders/vme/vme7_mpeg2.inc
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-// Modual name: ME_header.inc
-//
-// Global symbols define
-//
-
-/*
- * Constant
- */
-
-define(`INTER_PART_MASK', `0x7e000000')
-define(`mpeg2_ref', `r83')
-define(`pic_ref', `r82')
-define(`INTRA16_DC_PRED', `0xBB')
-
-/* Cost center ref */
-define(`mv_cc_ref', `r81')
-
-define(`tmp_vme_wb0', `r100')
-define(`tmp_vme_wb1', `r101')
-define(`tmp_vme_wb2', `r102')
-define(`tmp_vme_wb3', `r103')
-define(`tmp_vme_wb4', `r104')
-define(`tmp_vme_wb5', `r105')
-define(`tmp_vme_wb6', `r106')
-define(`tmp_vme_wb7', `r107')
-define(`tmp_vme_wb8', `r108')
-define(`tmp_vme_wb9', `r109')
diff --git a/src/shaders/vme/vme8.inc b/src/shaders/vme/vme8.inc
deleted file mode 100644
index c2bdaab..0000000
--- a/src/shaders/vme/vme8.inc
+++ /dev/null
@@ -1,374 +0,0 @@
-/*
- * Copyright © <2010>, Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-// Modual name: ME_header.inc for Gen8
-//
-// Global symbols define
-//
-
-/*
- * Constant
- */
-define(`VME_MESSAGE_TYPE_INTER', `1')
-define(`VME_MESSAGE_TYPE_INTRA', `2')
-define(`VME_MESSAGE_TYPE_MIXED', `3')
-
-define(`VME_SIC_MESSAGE_TYPE', `1')
-define(`VME_IME_MESSAGE_TYPE', `2')
-define(`VME_FBR_MESSAGE_TYPE', `3')
-
-define(`BLOCK_32X1', `0x0000001F')
-define(`BLOCK_4X16', `0x000F0003')
-define(`BLOCK_8X4', `0x00070003')
-
-define(`LUMA_INTRA_16x16_DISABLE', `0x1')
-define(`LUMA_INTRA_8x8_DISABLE', `0x2')
-define(`LUMA_INTRA_4x4_DISABLE', `0x4')
-
-define(`SUB_PART_8x4_DISABLE', `0x10')
-define(`SUB_PART_4x8_DISABLE', `0x20')
-
-define(`INTRA_PRED_AVAIL_FLAG_AE', `0x60')
-define(`INTRA_PRED_AVAIL_FLAG_B', `0x10')
-define(`INTRA_PRED_AVAIL_FLAG_C', `0x8')
-define(`INTRA_PRED_AVAIL_FLAG_D', `0x4')
-
-define(`BIND_IDX_VME', `0')
-define(`BIND_IDX_VME_REF0', `1')
-define(`BIND_IDX_VME_REF1', `2')
-define(`BIND_IDX_OUTPUT', `3')
-define(`BIND_IDX_INEP', `4')
-
-define(`SUB_PEL_MODE_INTEGER', `0x00000000')
-define(`SUB_PEL_MODE_HALF', `0x00001000')
-define(`SUB_PEL_MODE_QUARTER', `0x00003000')
-
-define(`INTER_SAD_NONE', `0x00000000')
-define(`INTER_SAD_HAAR', `0x00200000')
-
-define(`INTRA_SAD_NONE', `0x00000000')
-define(`INTRA_SAD_HAAR', `0x00800000')
-
-define(`INTER_PART_MASK', `0x00000000')
-define(`VP8_INTER_PART_MASK', `0x7e000000')
-
-define(`SEARCH_CTRL_SINGLE', `0x00000000')
-define(`SEARCH_CTRL_DUAL_START', `0x00000100')
-define(`SEARCH_CTRL_DUAL_RECORD', `0x00000300')
-define(`SEARCH_CTRL_DUAL_REFERENCE', `0x00000700')
-
-define(`REF_REGION_SIZE', `0x2830:UW')
-define(`MIN_REF_REGION_SIZE', `0x2020:UW')
-define(`DREF_REGION_SIZE', `0x2020:UW')
-
-define(`BI_SUB_MB_PART_MASK', `0x0c000000')
-define(`MAX_NUM_MV', `0x00000020')
-define(`FB_PRUNING_ENABLE', `0x40000000')
-
-define(`SEARCH_PATH_LEN', `0x00003030')
-define(`START_CENTER', `0x30000000')
-
-define(`ADAPTIVE_SEARCH_ENABLE', `0x00000002')
-define(`INTRA_PREDICTORE_MODE', `0x11111111:UD')
-
-define(`INTRA_PLANAR_MODE_MASK', `0x10001000:UD')
-
-define(`INTER_VME_OUTPUT_IN_OWS', `10')
-define(`INTER_VME_OUTPUT_MV_IN_OWS', `8')
-
-define(`INTRAMBFLAG_MASK', `0x00002000')
-define(`MVSIZE_UW_BASE', `0x0040')
-define(`MFC_MV32_BIT_SHIFT', `5')
-define(`CBP_DC_YUV_UW', `0x000E')
-
-define(`DC_HARR_ENABLE', `0x0000')
-define(`DC_HARR_DISABLE', `0x0020')
-
-define(`MV32_BIT_MASK', `0x0020')
-define(`MV32_BIT_SHIFT', `5')
-
-define(`OBW_CACHE_TYPE', `10')
-
-
-define(`OBW_MESSAGE_TYPE', `8')
-
-define(`OBW_BIND_IDX', `BIND_IDX_OUTPUT')
-
-define(`OBW_CONTROL_0', `0') /* 1 OWord, low 128 bits */
-define(`OBW_CONTROL_1', `1') /* 1 OWord, high 128 bits */
-define(`OBW_CONTROL_2', `2') /* 2 OWords */
-define(`OBW_CONTROL_3', `3') /* 4 OWords */
-define(`OBW_CONTROL_8', `4') /* 8 OWords */
-
-define(`FBR_BME_ENABLE', `0x00000000')
-define(`FBR_BME_DISABLE', `0x00040000')
-
-define(`OBW_WRITE_COMMIT_CATEGORY', `0') /* category on Ivybridge */
-
-
-define(`OBW_HEADER_PRESENT', `1')
-
-define(`W0_INTRA_MB_TYPE_MASK', `0x1F0000:UD')
-define(`W0_INTRA_MB_MODE_MASK', `0x30:UD')
-define(`W0_INTRA_8x8', `0x10:UD')
-define(`W0_TRANSFORM_8x8_FLAG', `0x8000:UD')
-
-/* GRF registers
- * r0 header
- * r1~r4 constant buffer (reserved)
- * r5 inline data
- * r6~r11 reserved
- * r12 write back of VME message
- * r13 write back of Oword Block Write
- */
-/*
- * GRF 0 -- header
- */
-define(`thread_id_ub', `r0.20<0,1,0>:UB') /* thread id in payload */
-
-/*
- * GRF 1~4 -- Constant Buffer (reserved)
- */
-
-/*
- * GRF 5 -- inline data
- */
-define(`inline_reg0', `r5')
-define(`w_in_mb_uw', `inline_reg0.2')
-define(`orig_xy_ub', `inline_reg0.0')
-define(`orig_x_ub', `inline_reg0.0') /* in macroblock */
-define(`orig_y_ub', `inline_reg0.1')
-define(`transform_8x8_ub', `inline_reg0.4')
-define(`input_mb_intra_ub', `inline_reg0.5')
-define(`num_macroblocks', `inline_reg0.6')
-define(`quality_level_ub', `inline_reg0.7')
-
-/*
- * GRF 6~11 -- reserved
- */
-
-/*
- * GRF 12~15 -- write back for VME message
- */
-define(`vme_wb', `r12')
-define(`vme_wb0', `r12')
-define(`vme_wb1', `r13')
-define(`vme_wb2', `r14')
-define(`vme_wb3', `r15')
-define(`vme_wb4', `r16')
-define(`vme_wb5', `r17')
-define(`vme_wb6', `r18')
-define(`vme_ime_wb7', `r19')
-define(`vme_ime_wb8', `r20')
-define(`vme_ime_wb9', `r21')
-define(`vme_ime_wb10', `r22')
-
-
-/*
- * GRF 24 -- write for VME output message
- */
-define(`obw_wb', `null<1>:W')
-define(`obw_wb_length', `0')
-
-
-/*
- * GRF 28~30 -- Intra Neighbor Edge Pixels
- */
-define(`INEP_ROW', `r28')
-define(`INEP_COL0', `r29')
-define(`INEP_COL1', `r30')
-
-/*
- * GRF 48~50 -- Chroma Neighbor Edge Pixels
- */
-define(`CHROMA_ROW', `r48')
-define(`CHROMA_COL', `r49')
-
-/*
- * temporary registers
- */
-define(`tmp_reg0', `r32')
-define(`read0_header', `tmp_reg0')
-define(`tmp_reg1', `r33')
-define(`read1_header', `tmp_reg1')
-define(`tmp_reg2', `r34')
-define(`vme_m0', `tmp_reg2')
-define(`tmp_reg3', `r35')
-define(`vme_m1', `tmp_reg3')
-define(`intra_flag', `vme_m1.28')
-define(`intra_part_mask_ub', `vme_m1.28')
-define(`mb_intra_struct_ub', `vme_m1.29')
-define(`tmp_reg4', `r36')
-define(`obw_m0', `tmp_reg4')
-define(`tmp_reg5', `r37')
-define(`obw_m1', `tmp_reg5')
-define(`tmp_reg6', `r38')
-define(`obw_m2', `tmp_reg6')
-define(`tmp_reg7', `r39')
-define(`obw_m3', `tmp_reg7')
-define(`tmp_reg8', `r40')
-define(`obw_m4', `tmp_reg8')
-define(`tmp_reg9', `r41')
-define(`tmp_x_w', `tmp_reg9.0')
-define(`tmp_rega', `r42')
-define(`tmp_ud0', `tmp_rega.0')
-define(`tmp_ud1', `tmp_rega.4')
-define(`tmp_ud2', `tmp_rega.8')
-define(`tmp_ud3', `tmp_rega.12')
-define(`tmp_uw0', `tmp_rega.0')
-define(`tmp_uw1', `tmp_rega.2')
-define(`tmp_uw2', `tmp_rega.4')
-define(`tmp_uw3', `tmp_rega.6')
-define(`tmp_uw4', `tmp_rega.8')
-define(`tmp_uw5', `tmp_rega.10')
-define(`tmp_uw6', `tmp_rega.12')
-define(`tmp_uw7', `tmp_rega.14')
-
-define(`vme_m2', `r43')
-define(`vme_m3', `r44')
-/*
- * MRF registers
- */
-
-define(`msg_ind', `64')
-define(`msg_reg0', `r64')
-define(`msg_reg1', `r65')
-define(`msg_reg2', `r66')
-define(`msg_reg3', `r67')
-define(`msg_reg4', `r68')
-define(`msg_reg5', `r69')
-define(`msg_reg6', `r70')
-define(`msg_reg7', `r71')
-define(`msg_reg8', `r72')
-define(`msg_reg9', `r73')
-
-define(`ts_msg_ind', `112')
-define(`ts_msg_reg0', `r112')
-/*
- * VME message payload
- */
-
-define(`vme_intra_wb_length', `1')
-define(`vme_wb_length', `7')
-define(`sic_vme_msg_length', `8')
-define(`fbr_vme_msg_length', `8')
-define(`ime_vme_msg_length', `6')
-
-define(`vme_msg_ind', `msg_ind')
-define(`vme_msg_0', `msg_reg0')
-define(`vme_msg_1', `msg_reg1')
-define(`vme_msg_2', `msg_reg2')
-
-define(`vme_msg_3', `msg_reg3')
-define(`vme_msg_4', `msg_reg4')
-
-
-define(`vme_msg_5', `msg_reg5')
-define(`vme_msg_6', `msg_reg6')
-define(`vme_msg_7', `msg_reg7')
-define(`vme_msg_8', `msg_reg8')
-define(`vme_msg_9', `msg_reg9')
-
-define(`BIND_IDX_CBCR', `6')
-
-
-define(`LUMA_CHROMA_MODE', `0x0')
-define(`LUMA_INTRA_MODE', `0x1')
-define(`LUMA_INTRA_DISABLE', `0x2')
-
-define(`RETURN_REG', `r127.0')
-define(`RET_ARG', `r127.4')
-
-/* Now at most two registers are used for input parameter */
-define(`INPUT_ARG0', `r125')
-define(`INPUT_ARG1', `r126')
-
-/* Two temporal registers are used in the function */
-define(`TEMP_VAR0', `r123')
-define(`TEMP_VAR1', `r124')
-
-
-define(`OBR_MESSAGE_TYPE', `0')
-define(`OBR_CACHE_TYPE', `10')
-define(`OBR_BIND_IDX', `BIND_IDX_OUTPUT')
-
-define(`OBR_CONTROL_0', `0') /* 1 OWord, low 128 bits */
-define(`OBR_CONTROL_1', `1') /* 1 OWord, high 128 bits */
-define(`OBR_CONTROL_2', `2') /* 2 OWords */
-define(`OBR_CONTROL_4', `3') /* 4 OWords */
-define(`OBR_CONTROL_8', `4') /* 8 OWords */
-define(`OBR_WRITE_COMMIT_CATEGORY', `0') /* category on SNB+ for Data port */
-define(`OBR_HEADER_PRESENT', `1')
-
-define(`mb_hwdep', `r5.6')
-define(`MB_AVAIL', `1:d')
-define(`MB_PRED_FLAG', `1:w')
-
-define(`mb_pred_mode', `r85')
-define(`mb_mvp_ref', `r86')
-define(`mba_result', `r87')
-define(`mbb_result', `r88')
-define(`mbc_result', `r89')
-define(`mb_ind', `90')
-define(`mb_msg0', `r90')
-define(`mb_wb', `r91')
-define(`mb_intra_wb', `r91')
-define(`mb_inter_wb', `r92')
-define(`mb_mv0', `r93')
-define(`mb_mv1', `r94')
-define(`mb_mv2', `r95')
-define(`mb_mv3', `r96')
-define(`mb_ref', `r97')
-define(`mb_ref_win', `r84')
-
-define(`PRED_L0', `0x0':uw)
-define(`PRED_L1', `0x1':uw)
-define(`PRED_BI', `0x2':uw)
-define(`PRED_DIRECT', `0x3':uw)
-define(`PRED_MASK', `0x3':uw)
-
-/* The MAX search len per reference is 16 */
-define(`DSEARCH_PATH_LEN', `0x00001212')
-define(`BI_WEIGHT', `0x20':uw)
-define(`DSTART_CENTER', `0x00000000')
-define(`INTER_MASK', `0x03')
-define(`INTER_16X16MODE', `0x0')
-define(`INTER_16X8MODE', `0x01')
-define(`INTER_8X16MODE', `0x02')
-define(`INTER_8X8MODE', `0x03')
-define(`INTER_BLOCK0', `0x0')
-define(`INTER_BLOCK1', `0x1')
-define(`INTER_BLOCK2', `0x2')
-define(`INTER_BLOCK3', `0x3')
-define(`INTER_16X8MODE', `0x01')
-define(`INTER_8X16MODE', `0x02')
-
-
-define(`OBR_MESSAGE_FENCE', `7')
-define(`OBR_MF_NOCOMMIT', `0')
-define(`OBR_MF_COMMIT', `0x20')
-
-define(`DEFAULT_QUALITY_LEVEL', `0x01')
-define(`HIGH_QUALITY_LEVEL', `DEFAULT_QUALITY_LEVEL')
-define(`LOW_QUALITY_LEVEL', `0x02')
diff --git a/src/shaders/vme/vp8_inter_frame_gen8.asm b/src/shaders/vme/vp8_inter_frame_gen8.asm
deleted file mode 100644
index d660810..0000000
--- a/src/shaders/vme/vp8_inter_frame_gen8.asm
+++ /dev/null
@@ -1,739 +0,0 @@
-/*
- * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- * Xiang Haihao <haihao.xiang@intel.com>
- * Li Zhong <zhong.li@intel.com>
- *
- */
-
-#define SAVE_RET add (1) RETURN_REG<1>:ud ip:ud 32:ud
-#define RETURN mov (1) ip:ud RETURN_REG<0,1,0>:ud
-
-/*
- * __START
- */
-__INTER_START:
-mov (16) tmp_reg0.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg2.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg4.0<1>:UD 0x0:UD {align1} ;
-mov (16) tmp_reg6.0<1>:UD 0x0:UD {align1} ;
-
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-mov (1) read0_header.8<1>:UD BLOCK_32X1 {align1};
-mov (1) read0_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-mov (1) read1_header.8<1>:UD BLOCK_4X16 {align1};
-mov (1) read1_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) vme_m0.8<1>:UW orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-mov (1) vme_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-mul (1) obw_m0.8<1>:UD w_in_mb_uw<0,1,0>:UW orig_y_ub<0,1,0>:UB {align1};
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD orig_x_ub<0,1,0>:UB {align1};
-mul (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 24:UD {align1};
-mov (1) obw_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/*
- * Media Read Message -- fetch Luma neighbor edge pixels
- */
-/* ROW */
-mov (8) msg_reg0.0<1>:UD read0_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_ROW<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* COL */
-mov (8) msg_reg0.0<1>:UD read1_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_COL0<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 2 {align1};
-
-/*
- * Media Read Message -- fetch Chroma neighbor edge pixels
- */
-/* ROW */
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 3:UW {align1}; /* x * 16 , y * 8 */
-mul (1) read0_header.0<1>:D read0_header.0<0,1,0>:D 2:W {align1};
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-mov (8) msg_reg0.0<1>:UD read0_header.0<8,8,1>:UD {align1};
-send (8) msg_ind CHROMA_ROW<1>:UB null read(BIND_IDX_CBCR, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* COL */
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 3:UW {align1}; /* x * 16, y * 8 */
-mul (1) read1_header.0<1>:D read1_header.0<0,1,0>:D 2:W {align1};
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-mov (1) read1_header.8<1>:UD BLOCK_8X4 {align1};
-mov (8) msg_reg0.0<1>:UD read1_header.0<8,8,1>:UD {align1};
-send (8) msg_ind CHROMA_COL<1>:UB null read(BIND_IDX_CBCR, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-mov (8) mb_mvp_ref.0<1>:ud 0:ud {align1};
-mov (8) mb_ref_win.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw mb_hwdep<0,1,0>:uw 0x04:uw {align1};
-(f0.0) jmpi (1) __mb_hwdep_end;
-/* read back the data for MB A */
-/* the layout of MB result is: rx.0(Available). rx.4(MVa), rX.8(MVb), rX.16(Pred_L0 flag),
-* rX.18 (Pred_L1 flag), rX.20(Forward reference ID), rX.22(Backwared reference ID)
-*/
-mov (8) mba_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbb_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbc_result.0<1>:ud 0x0:ud {align1};
-mba_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_AE:uw {align1};
-/* MB A doesn't exist. Zero MV. mba_flag is zero and ref ID = -1 */
-(f0.0) mov (2) mba_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbb_start;
-mov (1) mba_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mba_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbb_start;
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB A */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-/* MV */
-mov (2) mba_result.4<1>:ud mb_mv1.8<2,2,1>:ud {align1};
-mov (1) mba_result.16<1>:w MB_PRED_FLAG {align1};
-
-mbb_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_B:uw {align1};
-/* MB B doesn't exist. Zero MV. mba_flag is zero */
-/* If MB B doesn't exist, neither MB C nor D exists */
-(f0.0) mov (2) mbb_result.20<1>:w -1:w {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (1) mbb_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mbb_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mbc_start;
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB B */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-mov (2) mbb_result.4<1>:ud mb_mv2.16<2,2,1>:ud {align1};
-mov (1) mbb_result.16<1>:w MB_PRED_FLAG {align1};
-
-mbc_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_C:uw {align1};
-/* MB C doesn't exist. Zero MV. mba_flag is zero */
-/* Based on h264 spec the MB D will be replaced if MB C doesn't exist */
-(f0.0) jmpi (1) mbd_start;
-mov (1) mbc_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (1) tmp_reg0.2<1>:w tmp_reg0.2<0,1,0>:w -1:w {align1};
-add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB C */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-/* TODO: RefID is required after multi-references are added */
-/* Forward MV */
-mov (2) mbc_result.4<1>:ud mb_mv2.16<2,2,1>:ud {align1};
-mov (1) mbc_result.16<1>:w MB_PRED_FLAG {align1};
-
-jmpi (1) mb_mvp_start;
-mbd_start:
-mov (8) mb_msg0.0<1>:ud 0:ud {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_D:uw {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-mov (1) mbc_result.0<1>:d MB_AVAIL {align1};
-mov (2) tmp_reg0.0<1>:UW orig_xy_ub<2,2,1>:UB {align1};
-add (2) tmp_reg0.0<1>:w tmp_reg0.0<2,2,1>:w -1:w {align1};
-mul (1) mb_msg0.8<1>:UD w_in_mb_uw<0,1,0>:UW tmp_reg0.2<0,1,0>:UW {align1};
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD tmp_reg0.0<0,1,0>:uw {align1};
-mul (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:UD 24:UD {align1};
-mov (1) mb_msg0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/* bind index 3, read 4 oword (64bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_4,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 2
- {align1};
-
-cmp.l.f0.0 (1) null:w mb_intra_wb.16<0,1,0>:uw mb_inter_wb.8<0,1,0>:uw {align1};
-(f0.0) mov (2) mbc_result.20<1>:w -1:w {align1};
-(f0.0) jmpi (1) mb_mvp_start;
-
-add (1) mb_msg0.8<1>:UD mb_msg0.8<0,1,0>:ud 3:ud {align1};
-/* Read MV for MB D */
-/* bind index 3, read 8 oword (128bytes), msg type: 0(OWord Block Read) */
-send (16)
- mb_ind
- mb_mv0.0<1>:ub
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_TYPE,
- OBR_CONTROL_8,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 4
- {align1};
-
-/* TODO: RefID is required after multi-references are added */
-
-/* Forward MV */
-mov (2) mbc_result.4<1>:ud mb_mv3.24<2,2,1>:ud {align1};
-mov (1) mbc_result.16<1>:w MB_PRED_FLAG {align1};
-
-mb_mvp_start:
-/*TODO: Add the skip prediction */
-/* Check whether both MB B and C are inavailable */
-add (1) tmp_reg0.0<1>:d mbb_result.0<0,1,0>:d mbc_result.0<0,1,0>:d {align1};
-cmp.z.f0.0 (1) null:d tmp_reg0.0<0,1,0>:d 0:d {align1};
-(-f0.0) jmpi (1) mb_median_start;
-cmp.nz.f0.0 (1) null:d mba_result.0<0,1,0>:d 0:d {align1};
-(f0.0) mov (1) mbb_result.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-(f0.0) mov (1) mbc_result.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-(f0.0) mov (1) mbb_result.20<1>:uw mba_result.20<0,1,0>:uw {align1};
-(f0.0) mov (1) mbc_result.20<1>:uw mba_result.20<0,1,0>:uw {align1};
-(f0.0) mov (1) mb_mvp_ref.0<1>:ud mba_result.4<0,1,0>:ud {align1};
-(-f0.0) mov (1) mb_mvp_ref.0<1>:ud 0:ud {align1};
-jmpi (1) __mb_hwdep_end;
-
-mb_median_start:
-/* check whether only one neighbour MB has the same ref ID with the current MB */
-mov (8) tmp_reg0.0<1>:ud 0:ud {align1};
-cmp.z.f0.0 (1) null:d mba_result.20<0,1,0>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mba_result.4<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbb_result.20<0,1,0>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbb_result.4<0,1,0>:ud {align1};
-cmp.z.f0.0 (1) null:d mbc_result.20<0,1,0>:w 0:w {align1};
-(f0.0) add (1) tmp_reg0.0<1>:w tmp_reg0.0<0,1,0>:w 1:w {align1};
-(f0.0) mov (1) tmp_reg0.4<1>:ud mbc_result.4<0,1,0>:ud {align1};
-cmp.e.f0.0 (1) null:d tmp_reg0.0<0,1,0>:w 1:w {align1};
-(f0.0) mov (1) mb_mvp_ref.0<1>:ud tmp_reg0.4<0,1,0>:ud {align1};
-(f0.0) jmpi (1) __mb_hwdep_end;
-
-mov (1) INPUT_ARG0.0<1>:w mba_result.4<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.4<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.4<0,1,0>:w {align1};
-SAVE_RET {align1};
- jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.0<1>:w RET_ARG<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.0<1>:w mba_result.6<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.4<1>:w mbb_result.6<0,1,0>:w {align1};
-mov (1) INPUT_ARG0.8<1>:w mbc_result.6<0,1,0>:w {align1};
-SAVE_RET {align1};
-jmpi (1) word_imedian;
-mov (1) mb_mvp_ref.2<1>:w RET_ARG<0,1,0>:w {align1};
-
-__mb_hwdep_end:
-asr (2) mb_ref_win.0<1>:w mb_mvp_ref.0<2,2,1>:w 2:w {align1};
-add (2) mb_ref_win.8<1>:w mb_ref_win.0<2,2,1>:w 3:w {align1};
-and (2) mb_ref_win.16<1>:uw mb_ref_win.8<2,2,1>:uw 0xFFFC:uw {align1};
-/* m2, get the MV/Mb cost passed from constant buffer when
-spawning thread by MEDIA_OBJECT */
-mov (8) vme_m2<1>:UD r1.0<8,8,1>:UD {align1};
-
-mov (8) vme_msg_2<1>:UD vme_m2.0<8,8,1>:UD {align1};
-
-/* m3 FWD/BWD cost center*/
-mov (8) vme_msg_3<1>:UD 0x0:UD {align1};
-
-/* m4 skip center*/
-mov (8) vme_msg_4<1>:UD 0x0:UD {align1};
-
-/* m5 */
-mov (1) INEP_ROW.0<1>:UD 0x0:UD {align1};
-and (1) INEP_ROW.4<1>:UD INEP_ROW.4<0,1,0>:UD 0xFF000000:UD {align1};
-mov (8) vme_msg_5<1>:UD INEP_ROW.0<8,8,1>:UD {align1};
-
-
-/* Use the Luma mode */
-mov (1) tmp_reg0.0<1>:UW LUMA_INTRA_MODE:UW {align1};
-mov (1) vme_msg_5.5<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-/* m6 */
-mov (8) vme_msg_6<1>:UD 0x0:UD {align1};
-mov (16) vme_msg_6.0<1>:UB INEP_COL0.3<32,8,4>:UB {align1};
-mov (1) vme_msg_6.16<1>:UD INTRA_PREDICTORE_MODE {align1};
-
-/* the penalty for Intra mode */
-mov (1) vme_msg_6.28<1>:UD 0x010101:UD {align1};
-mov (1) vme_msg_6.20<1>:UW CHROMA_ROW.6<0,1,0>:UW {align1};
-
-
-/* m7 */
-
-mov (4) vme_msg_7.16<1>:UD CHROMA_ROW.8<4,4,1>:UD {align1};
-mov (8) vme_msg_7.0<1>:UW CHROMA_COL.2<16,8,2>:UW {align1};
-
-/*
- * SIC VME message
- */
-
-/* m1 */
-mov (1) intra_flag<1>:UW 0x0:UW {align1};
-mov (1) intra_part_mask_ub<1>:UB LUMA_INTRA_8x8_DISABLE {align1}; /* vp8 don't support intra_8x8 mode*/
-
-/* assign MB intra struct from the thread payload*/
-mov (1) mb_intra_struct_ub<1>:UB input_mb_intra_ub<0,1,0>:UB {align1};
-
-/* Disable DC HAAR component when calculating HARR SATD block */
-mov (1) tmp_reg0.0<1>:UW DC_HARR_DISABLE:UW {align1};
-mov (1) vme_m1.30<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-mov (8) vme_msg_1<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-/* m0 */
-mov (1) vme_m0.12<1>:UD INTRA_SAD_HAAR:UD {align1}; /* 16x16 Source, Intra_harr */
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-/* after verification it will be passed by using payload */
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- cre(
- BIND_IDX_VME,
- VME_SIC_MESSAGE_TYPE
- )
- mlen sic_vme_msg_length
- rlen vme_wb_length
- {align1};
-/*
- * Oword Block Write message
- */
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-mov (1) msg_reg1.4<1>:UD vme_wb.16<0,1,0>:UD {align1};
-mov (1) msg_reg1.8<1>:UD vme_wb.20<0,1,0>:UD {align1};
-mov (1) msg_reg1.12<1>:UD vme_wb.24<0,1,0>:UD {align1};
-
-/* Distortion, Intra (17-16), */
-mov (1) msg_reg1.16<1>:UW vme_wb.12<0,1,0>:UW {align1};
-
-mov (1) msg_reg1.20<1>:UD vme_wb.8<0,1,0>:UD {align1};
-/* VME clock counts */
-mov (1) msg_reg1.24<1>:UD vme_wb.28<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.28<1>:UD obw_m0.8<0,1,0>:UD {align1};
-
-/* bind index 3, write 2 oword (32bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-/* IME search */
-mov (1) vme_m0.12<1>:UD SEARCH_CTRL_SINGLE + VP8_INTER_PART_MASK + INTER_SAD_HAAR:UD {align1}; /* 16x16 Source, harr */
-mov (1) vme_m0.22<1>:UW REF_REGION_SIZE {align1}; /* Reference Width&Height, 48x40 */
-
-mov (1) vme_m0.0<1>:UD vme_m0.8<0,1,0>:UD {align1};
-
-add (1) vme_m0.0<1>:W vme_m0.0<0,1,0>:W -16:W {align1}; /* Reference = (x-16,y-12)-(x+32,y+28) */
-add (1) vme_m0.2<1>:W vme_m0.2<0,1,0>:W -12:W {align1};
-
-mov (1) vme_m0.0<1>:W -16:W {align1};
-mov (1) vme_m0.2<1>:W -12:W {align1};
-
-mov (1) vme_m0.4<1>:UD vme_m0.0<0,1,0>:UD {align1};
-
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_AE:uw {align1};
-(f0.0) add (1) vme_m0.0<1>:w vme_m0.0<0,1,0>:w 12:w {align1};
-and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_B:uw {align1};
-(f0.0) add (1) vme_m0.2<1>:w vme_m0.2<0,1,0>:w 8:w {align1};
-
-add (2) vme_m0.0<1>:w vme_m0.0<2,2,1>:w mb_ref_win.16<2,2,1>:w {align1};
-add (2) vme_m0.4<1>:w vme_m0.4<2,2,1>:w mb_ref_win.16<2,2,1>:w {align1};
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-mov (1) vme_m1.0<1>:UD ADAPTIVE_SEARCH_ENABLE:ud {align1} ;
-/* the Max MV number is passed by constant buffer */
-mov (1) vme_m1.4<1>:UB r4.28<0,1,0>:UB {align1};
-mov (1) vme_m1.8<1>:UD START_CENTER + SEARCH_PATH_LEN:UD {align1};
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-/* Setup the Cost center */
-/* currently four 8x8 share the same cost center */
-mov (4) vme_m3.0<2>:ud mb_mvp_ref.0<0,1,0>:ud {align1};
-mov (4) vme_m3.4<2>:ud mb_mvp_ref.0<0,1,0>:ud {align1};
-
-mov (8) vme_msg_3<1>:UD vme_m3.0<8,8,1>:UD {align1};
-mov (8) vme_msg_2<1>:UD vme_m2.0<8,8,1>:UD {align1};
-
-/* M4/M5 search path */
-mov (1) vme_msg_4.0<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_4.4<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_4.8<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_4.12<1>:UD 0x100F0F0F:UD {align1};
-mov (1) vme_msg_4.16<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_4.20<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_4.24<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_4.28<1>:UD 0x100F0F0F:UD {align1};
-
-mov (1) vme_msg_5.0<1>:UD 0x01010101:UD {align1};
-mov (1) vme_msg_5.4<1>:UD 0x10010101:UD {align1};
-mov (1) vme_msg_5.8<1>:UD 0x0F0F0F0F:UD {align1};
-mov (1) vme_msg_5.12<1>:UD 0x000F0F0F:UD {align1};
-
-mov (4) vme_msg_5.16<1>:UD 0x0:UD {align1};
-
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- vme(
- BIND_IDX_VME,
- 0,
- 0,
- VME_IME_MESSAGE_TYPE
- )
- mlen ime_vme_msg_length
- rlen vme_wb_length {align1};
-
-/* Set Macroblock-shape/mode for FBR */
-
-mov (1) vme_m2.20<1>:UD 0x0:UD {align1};
-mov (1) vme_m2.21<1>:UB vme_wb.25<0,1,0>:UB {align1};
-mov (1) vme_m2.22<1>:UB vme_wb.26<0,1,0>:UB {align1};
-
-and (1) tmp_reg0.0<1>:UW vme_wb.0<0,1,0>:UW 0x03:UW {align1};
-mov (1) vme_m2.20<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-/* Send FBR message into CRE */
-
-mov (8) vme_msg_4.0<1>:UD vme_wb1.0<8,8,1>:UD {align1};
-mov (8) vme_msg_5.0<1>:ud vme_wb2.0<8,8,1>:ud {align1};
-mov (8) vme_msg_6.0<1>:ud vme_wb3.0<8,8,1>:ud {align1};
-mov (8) vme_msg_7.0<1>:ud vme_wb4.0<8,8,1>:ud {align1};
-
-mov (1) vme_m0.12<1>:UD INTER_SAD_HAAR + SUB_PEL_MODE_QUARTER + FBR_BME_DISABLE:UD {align1}; /* 16x16 Source, 1/4 pixel, harr, BME disable */
-mov (8) vme_msg_0.0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-mov (8) vme_msg_2.0<1>:UD vme_m2.0<8,8,1>:UD {align1};
-mov (8) vme_msg_3.0<1>:UD vme_m3.0<8,8,1>:UD {align1};
-
-/* after verification it will be passed by using payload */
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- cre(
- BIND_IDX_VME,
- VME_FBR_MESSAGE_TYPE
- )
- mlen fbr_vme_msg_length
- rlen vme_wb_length
- {align1};
-
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x02:UD {align1};
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-/* write FME info */
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.4<1>:UD vme_wb.24<0,1,0>:UD {align1};
-/* Inter distortion of FME */
-mov (1) msg_reg1.8<1>:UD vme_wb.8<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.12<1>:UD vme_m2.20<0,1,0>:UD {align1};
-
-/* bind index 3, write oword (16bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_0,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-/* Write FME/BME MV */
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x01:UD {align1};
-mov (8) msg_reg0.0<1>:UD obw_m0.0<8,8,1>:UD {align1};
-
-
-mov (8) msg_reg1.0<1>:UD vme_wb1.0<8,8,1>:UD {align1};
-mov (8) msg_reg2.0<1>:ud vme_wb2.0<8,8,1>:ud {align1};
-mov (8) msg_reg3.0<1>:ud vme_wb3.0<8,8,1>:ud {align1};
-mov (8) msg_reg4.0<1>:ud vme_wb4.0<8,8,1>:ud {align1};
-/* bind index 3, write 8 oword (128 bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_8,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 5
- rlen obw_wb_length
- {align1};
-
-/* Write FME/BME RefID */
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x08:UD {align1};
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-
-mov (8) msg_reg1.0<1>:UD vme_wb6.0<8,8,1>:UD {align1};
-
-/* bind index 3, write 2 oword (32bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-/* Issue message fence so that the previous write message is committed */
-send (16)
- mb_ind
- mb_wb.0<1>:ud
- NULL
- data_port(
- OBR_CACHE_TYPE,
- OBR_MESSAGE_FENCE,
- OBR_MF_COMMIT,
- OBR_BIND_IDX,
- OBR_WRITE_COMMIT_CATEGORY,
- OBR_HEADER_PRESENT
- )
- mlen 1
- rlen 1
- {align1};
-
-__EXIT:
-/*
- * kill thread
- */
-mov (8) ts_msg_reg0<1>:UD r0<8,8,1>:UD {align1};
-send (16) ts_msg_ind acc0<1>UW null thread_spawner(0, 0, 1) mlen 1 rlen 0 {align1 EOT};
-
-
- nop ;
- nop ;
-/* Compare three word data to get the min value */
-word_imin:
- cmp.le.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- cmp.le.f0.0 (1) null:w TEMP_VAR0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w TEMP_VAR0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- RETURN {align1};
-
-/* Compare three word data to get the max value */
-word_imax:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) TEMP_VAR0.0<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- cmp.ge.f0.0 (1) null:w TEMP_VAR0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w TEMP_VAR0.0<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- RETURN {align1};
-
-word_imedian:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_a_ge_b;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_end;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- jmpi (1) cmp_end;
-cmp_a_ge_b:
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
- (f0.0) jmpi (1) cmp_end;
- cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
- (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
-cmp_end:
- RETURN {align1};
-
diff --git a/src/shaders/vme/vp8_inter_frame_gen8.g8a b/src/shaders/vme/vp8_inter_frame_gen8.g8a
deleted file mode 100644
index 3b72c1c..0000000
--- a/src/shaders/vme/vp8_inter_frame_gen8.g8a
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "vme8.inc"
-#include "vp8_inter_frame_gen8.asm"
diff --git a/src/shaders/vme/vp8_inter_frame_gen8.g8b b/src/shaders/vme/vp8_inter_frame_gen8.g8b
deleted file mode 100644
index 6377aae..0000000
--- a/src/shaders/vme/vp8_inter_frame_gen8.g8b
+++ /dev/null
@@ -1,299 +0,0 @@
- { 0x00800001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24c00608, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24002228, 0x164500a0, 0x00040004 },
- { 0x00000040, 0x24000a28, 0x1e000400, 0xfff8fff8 },
- { 0x00000040, 0x24040a28, 0x1e000404, 0xffffffff },
- { 0x00000001, 0x24080e08, 0x08000000, 0x0000001f },
- { 0x00000001, 0x24142288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24202228, 0x164500a0, 0x00040004 },
- { 0x00000040, 0x24200a28, 0x1e000420, 0xfffcfffc },
- { 0x00000001, 0x24280e08, 0x08000000, 0x000f0003 },
- { 0x00000001, 0x24342288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24482248, 0x164500a0, 0x00040004 },
- { 0x00000001, 0x24542288, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24881208, 0x220000a2, 0x000000a1 },
- { 0x00000040, 0x24880208, 0x22000488, 0x000000a0 },
- { 0x00000041, 0x24880208, 0x06000488, 0x00000018 },
- { 0x00000001, 0x24942288, 0x00000014, 0x00000000 },
- { 0x00600001, 0x28000208, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x23800a88, 0x0e000800, 0x02190004 },
- { 0x00600001, 0x28000208, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x23a00a88, 0x0e000800, 0x02290004 },
- { 0x00200009, 0x24002228, 0x164500a0, 0x00030003 },
- { 0x00000041, 0x24000a28, 0x1e000400, 0x00020002 },
- { 0x00000040, 0x24000a28, 0x1e000400, 0xfff8fff8 },
- { 0x00000040, 0x24040a28, 0x1e000404, 0xffffffff },
- { 0x00600001, 0x28000208, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x26000a88, 0x0e000800, 0x02190006 },
- { 0x00200009, 0x24202228, 0x164500a0, 0x00030003 },
- { 0x00000041, 0x24200a28, 0x1e000420, 0x00020002 },
- { 0x00000040, 0x24200a28, 0x1e000420, 0xfffcfffc },
- { 0x00000001, 0x24280e08, 0x08000000, 0x00070003 },
- { 0x00600001, 0x28000208, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x26200a88, 0x0e000800, 0x02190006 },
- { 0x00600001, 0x2ac00608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2a800608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20001240, 0x160000a6, 0x00040004 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000750 },
- { 0x00600001, 0x2ae00608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b000608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b200608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00600060 },
- { 0x00210001, 0x2af41e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000f0 },
- { 0x00000001, 0x2ae00e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24001a68, 0x1e000400, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2af41e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000040 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x0e000b40, 0x02480403 },
- { 0x00200001, 0x2ae40208, 0x00450bc8, 0x00000000 },
- { 0x00000001, 0x2af01e68, 0x18000000, 0x00010001 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00100010 },
- { 0x00210001, 0x2b141e68, 0x18000000, 0xffffffff },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000360 },
- { 0x00000001, 0x2b000e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24021a68, 0x1e000402, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b141e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000040 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x0e000b40, 0x02480403 },
- { 0x00200001, 0x2b040208, 0x00450bf0, 0x00000000 },
- { 0x00000001, 0x2b101e68, 0x18000000, 0x00010001 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00080008 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000110 },
- { 0x00000001, 0x2b200e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24021a68, 0x1e000402, 0xffffffff },
- { 0x00000040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000180 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x0e000b40, 0x02480403 },
- { 0x00200001, 0x2b240208, 0x00450bf0, 0x00000000 },
- { 0x00000001, 0x2b301e68, 0x18000000, 0x00010001 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000130 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00040004 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000f0 },
- { 0x00000001, 0x2b200e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00200040, 0x24001a68, 0x1e450400, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000040 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a88, 0x0e000b40, 0x02480403 },
- { 0x00200001, 0x2b240208, 0x00450c18, 0x00000000 },
- { 0x00000001, 0x2b301e68, 0x18000000, 0x00010001 },
- { 0x00000040, 0x24000a28, 0x0a000b00, 0x00000b20 },
- { 0x01000010, 0x20000a20, 0x0e000400, 0x00000000 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000080 },
- { 0x02000010, 0x20000a20, 0x0e000ae0, 0x00000000 },
- { 0x00010001, 0x2b040208, 0x00000ae4, 0x00000000 },
- { 0x00010001, 0x2b240208, 0x00000ae4, 0x00000000 },
- { 0x00010001, 0x2b141248, 0x00000af4, 0x00000000 },
- { 0x00010001, 0x2b341248, 0x00000af4, 0x00000000 },
- { 0x00010001, 0x2ac00208, 0x00000ae4, 0x00000000 },
- { 0x00110001, 0x2ac00608, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000190 },
- { 0x00600001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000af4, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000ae4, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000b14, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000b04, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000b34, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000b24, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x2ac00208, 0x00000404, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000c0 },
- { 0x00000001, 0x2fa01a68, 0x00000ae4, 0x00000000 },
- { 0x00000001, 0x2fa41a68, 0x00000b04, 0x00000000 },
- { 0x00000001, 0x2fa81a68, 0x00000b24, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000860 },
- { 0x00000001, 0x2ac01a68, 0x00000fe4, 0x00000000 },
- { 0x00000001, 0x2fa01a68, 0x00000ae6, 0x00000000 },
- { 0x00000001, 0x2fa41a68, 0x00000b06, 0x00000000 },
- { 0x00000001, 0x2fa81a68, 0x00000b26, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000800 },
- { 0x00000001, 0x2ac21a68, 0x00000fe4, 0x00000000 },
- { 0x0020000c, 0x2a801a68, 0x1e450ac0, 0x00020002 },
- { 0x00200040, 0x2a881a68, 0x1e450a80, 0x00030003 },
- { 0x00200005, 0x2a901248, 0x16450a88, 0xfffcfffc },
- { 0x00600001, 0x25600208, 0x008d0020, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x28600608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23800608, 0x00000000, 0x00000000 },
- { 0x00000005, 0x23840208, 0x06000384, 0xff000000 },
- { 0x00600001, 0x28a00208, 0x008d0380, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00010001 },
- { 0x00000001, 0x28a52288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28c00608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x28c02288, 0x00cf03a3, 0x00000000 },
- { 0x00000001, 0x28d00608, 0x00000000, 0x11111111 },
- { 0x00000001, 0x28dc0608, 0x00000000, 0x00010101 },
- { 0x00000001, 0x28d41248, 0x00000606, 0x00000000 },
- { 0x00400001, 0x28f00208, 0x00690608, 0x00000000 },
- { 0x00600001, 0x28e01248, 0x00ae0622, 0x00000000 },
- { 0x00000001, 0x247c1648, 0x10000000, 0x00000000 },
- { 0x00000001, 0x247c0e88, 0x08000000, 0x00000002 },
- { 0x00000001, 0x247d2288, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00200020 },
- { 0x00000001, 0x247e2288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00800000 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x0e000800, 0x10782000 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200208, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240208, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280208, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0208, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28301248, 0x0000018c, 0x00000000 },
- { 0x00000001, 0x28340208, 0x00000188, 0x00000000 },
- { 0x00000001, 0x28380208, 0x0000019c, 0x00000000 },
- { 0x00000001, 0x283c0208, 0x00000488, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x0e000800, 0x040a0203 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x7e200000 },
- { 0x00000001, 0x24561648, 0x10000000, 0x28302830 },
- { 0x00000001, 0x24400208, 0x00000448, 0x00000000 },
- { 0x00000040, 0x24401a68, 0x1e000440, 0xfff0fff0 },
- { 0x00000040, 0x24421a68, 0x1e000442, 0xfff4fff4 },
- { 0x00000001, 0x24401e68, 0x18000000, 0xfff0fff0 },
- { 0x00000001, 0x24421e68, 0x18000000, 0xfff4fff4 },
- { 0x00000001, 0x24440208, 0x00000440, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00600060 },
- { 0x00010040, 0x24401a68, 0x1e000440, 0x000c000c },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00100010 },
- { 0x00010040, 0x24421a68, 0x1e000442, 0x00080008 },
- { 0x00200040, 0x24401a68, 0x1a450440, 0x00450a90 },
- { 0x00200040, 0x24441a68, 0x1a450444, 0x00450a90 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x24600608, 0x00000000, 0x00000002 },
- { 0x00000001, 0x24642288, 0x0000009c, 0x00000000 },
- { 0x00000001, 0x24680608, 0x00000000, 0x30003030 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00400001, 0x45800208, 0x00000ac0, 0x00000000 },
- { 0x00400001, 0x45840208, 0x00000ac0, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00000001, 0x28800608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28840608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28880608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x288c0608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28900608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28940608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28980608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x289c0608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28a00608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28a40608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28a80608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x28ac0608, 0x00000000, 0x000f0f0f },
- { 0x00400001, 0x28b00608, 0x00000000, 0x00000000 },
- { 0x08600031, 0x21800a08, 0x0e000800, 0x0c784000 },
- { 0x00000001, 0x25740608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25752288, 0x00000199, 0x00000000 },
- { 0x00000001, 0x25762288, 0x0000019a, 0x00000000 },
- { 0x00000005, 0x24001248, 0x16000180, 0x00030003 },
- { 0x00000001, 0x25742288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28800208, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28a00208, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28c00208, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28e00208, 0x008d0200, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00243000 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d0580, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x0e000800, 0x10786000 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000002 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200208, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240208, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28280208, 0x00000188, 0x00000000 },
- { 0x00000001, 0x282c0208, 0x00000574, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x0e000800, 0x040a0003 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000001 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28800208, 0x008d0200, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x0e000800, 0x0a0a0403 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000008 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0240, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x0e000800, 0x040a0203 },
- { 0x0a800031, 0x2b600a08, 0x0e000b40, 0x0219e003 },
- { 0x00600001, 0x2e000208, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24000a40, 0x0e000e00, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x06000010, 0x20001a60, 0x1a000fa0, 0x00000fa4 },
- { 0x00010001, 0x2f601a68, 0x00000fa0, 0x00000000 },
- { 0x00110001, 0x2f601a68, 0x00000fa4, 0x00000000 },
- { 0x06000010, 0x20001a60, 0x1a000f60, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000f60, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa4 },
- { 0x00010001, 0x2f601a68, 0x00000fa0, 0x00000000 },
- { 0x00110001, 0x2f601a68, 0x00000fa4, 0x00000000 },
- { 0x04000010, 0x20001a60, 0x1a000f60, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000f60, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa4 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000070 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa0, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000a0 },
- { 0x04000010, 0x20001a60, 0x1a000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa4, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000060 },
- { 0x04000010, 0x20001a60, 0x1a000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa4, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa0, 0x00000000 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
diff --git a/src/shaders/vme/vp8_inter_frame_gen9.g9a b/src/shaders/vme/vp8_inter_frame_gen9.g9a
deleted file mode 100644
index 3b72c1c..0000000
--- a/src/shaders/vme/vp8_inter_frame_gen9.g9a
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "vme8.inc"
-#include "vp8_inter_frame_gen8.asm"
diff --git a/src/shaders/vme/vp8_inter_frame_gen9.g9b b/src/shaders/vme/vp8_inter_frame_gen9.g9b
deleted file mode 100644
index bf8ad1c..0000000
--- a/src/shaders/vme/vp8_inter_frame_gen9.g9b
+++ /dev/null
@@ -1,299 +0,0 @@
- { 0x00800001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24c00608, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24002228, 0x164500a0, 0x00040004 },
- { 0x00000040, 0x24000a28, 0x1e000400, 0xfff8fff8 },
- { 0x00000040, 0x24040a28, 0x1e000404, 0xffffffff },
- { 0x00000001, 0x24080e08, 0x08000000, 0x0000001f },
- { 0x00000001, 0x24142288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24202228, 0x164500a0, 0x00040004 },
- { 0x00000040, 0x24200a28, 0x1e000420, 0xfffcfffc },
- { 0x00000001, 0x24280e08, 0x08000000, 0x000f0003 },
- { 0x00000001, 0x24342288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24482248, 0x164500a0, 0x00040004 },
- { 0x00000001, 0x24542288, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24881208, 0x220000a2, 0x000000a1 },
- { 0x00000040, 0x24880208, 0x22000488, 0x000000a0 },
- { 0x00000041, 0x24880208, 0x06000488, 0x00000018 },
- { 0x00000001, 0x24942288, 0x00000014, 0x00000000 },
- { 0x00600001, 0x28000208, 0x008d0400, 0x00000000 },
- { 0x0c600031, 0x23800a88, 0x06000800, 0x02190004 },
- { 0x00600001, 0x28000208, 0x008d0420, 0x00000000 },
- { 0x0c600031, 0x23a00a88, 0x06000800, 0x02290004 },
- { 0x00200009, 0x24002228, 0x164500a0, 0x00030003 },
- { 0x00000041, 0x24000a28, 0x1e000400, 0x00020002 },
- { 0x00000040, 0x24000a28, 0x1e000400, 0xfff8fff8 },
- { 0x00000040, 0x24040a28, 0x1e000404, 0xffffffff },
- { 0x00600001, 0x28000208, 0x008d0400, 0x00000000 },
- { 0x0c600031, 0x26000a88, 0x06000800, 0x02190006 },
- { 0x00200009, 0x24202228, 0x164500a0, 0x00030003 },
- { 0x00000041, 0x24200a28, 0x1e000420, 0x00020002 },
- { 0x00000040, 0x24200a28, 0x1e000420, 0xfffcfffc },
- { 0x00000001, 0x24280e08, 0x08000000, 0x00070003 },
- { 0x00600001, 0x28000208, 0x008d0420, 0x00000000 },
- { 0x0c600031, 0x26200a88, 0x06000800, 0x02190006 },
- { 0x00600001, 0x2ac00608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2a800608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20001240, 0x160000a6, 0x00040004 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000750 },
- { 0x00600001, 0x2ae00608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b000608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b200608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00600060 },
- { 0x00210001, 0x2af41e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000f0 },
- { 0x00000001, 0x2ae00e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24001a68, 0x1e000400, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2af41e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000040 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x06000b40, 0x02480403 },
- { 0x00200001, 0x2ae40208, 0x00450bc8, 0x00000000 },
- { 0x00000001, 0x2af01e68, 0x18000000, 0x00010001 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00100010 },
- { 0x00210001, 0x2b141e68, 0x18000000, 0xffffffff },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000360 },
- { 0x00000001, 0x2b000e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24021a68, 0x1e000402, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b141e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000040 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x06000b40, 0x02480403 },
- { 0x00200001, 0x2b040208, 0x00450bf0, 0x00000000 },
- { 0x00000001, 0x2b101e68, 0x18000000, 0x00010001 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00080008 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000110 },
- { 0x00000001, 0x2b200e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00000040, 0x24021a68, 0x1e000402, 0xffffffff },
- { 0x00000040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000180 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a08, 0x06000b40, 0x02480403 },
- { 0x00200001, 0x2b240208, 0x00450bf0, 0x00000000 },
- { 0x00000001, 0x2b301e68, 0x18000000, 0x00010001 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000130 },
- { 0x00600001, 0x2b400608, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00040004 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000f0 },
- { 0x00000001, 0x2b200e28, 0x08000000, 0x00000001 },
- { 0x00200001, 0x24002248, 0x004500a0, 0x00000000 },
- { 0x00200040, 0x24001a68, 0x1e450400, 0xffffffff },
- { 0x00000041, 0x2b481208, 0x120000a2, 0x00000402 },
- { 0x00000040, 0x2b480208, 0x12000b48, 0x00000400 },
- { 0x00000041, 0x2b480208, 0x06000b48, 0x00000018 },
- { 0x00000001, 0x2b542288, 0x00000014, 0x00000000 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x02280303 },
- { 0x05000010, 0x20001260, 0x12000b70, 0x00000b88 },
- { 0x00210001, 0x2b341e68, 0x18000000, 0xffffffff },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000040 },
- { 0x00000040, 0x2b480208, 0x06000b48, 0x00000003 },
- { 0x0a800031, 0x2ba00a88, 0x06000b40, 0x02480403 },
- { 0x00200001, 0x2b240208, 0x00450c18, 0x00000000 },
- { 0x00000001, 0x2b301e68, 0x18000000, 0x00010001 },
- { 0x00000040, 0x24000a28, 0x0a000b00, 0x00000b20 },
- { 0x01000010, 0x20000a20, 0x0e000400, 0x00000000 },
- { 0x00110020, 0x34000000, 0x0e001400, 0x00000080 },
- { 0x02000010, 0x20000a20, 0x0e000ae0, 0x00000000 },
- { 0x00010001, 0x2b040208, 0x00000ae4, 0x00000000 },
- { 0x00010001, 0x2b240208, 0x00000ae4, 0x00000000 },
- { 0x00010001, 0x2b141248, 0x00000af4, 0x00000000 },
- { 0x00010001, 0x2b341248, 0x00000af4, 0x00000000 },
- { 0x00010001, 0x2ac00208, 0x00000ae4, 0x00000000 },
- { 0x00110001, 0x2ac00608, 0x00000000, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000190 },
- { 0x00600001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000af4, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000ae4, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000b14, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000b04, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000b34, 0x00000000 },
- { 0x00010040, 0x24001a68, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x24040208, 0x00000b24, 0x00000000 },
- { 0x01000010, 0x20001a20, 0x1e000400, 0x00010001 },
- { 0x00010001, 0x2ac00208, 0x00000404, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000c0 },
- { 0x00000001, 0x2fa01a68, 0x00000ae4, 0x00000000 },
- { 0x00000001, 0x2fa41a68, 0x00000b04, 0x00000000 },
- { 0x00000001, 0x2fa81a68, 0x00000b24, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000860 },
- { 0x00000001, 0x2ac01a68, 0x00000fe4, 0x00000000 },
- { 0x00000001, 0x2fa01a68, 0x00000ae6, 0x00000000 },
- { 0x00000001, 0x2fa41a68, 0x00000b06, 0x00000000 },
- { 0x00000001, 0x2fa81a68, 0x00000b26, 0x00000000 },
- { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000800 },
- { 0x00000001, 0x2ac21a68, 0x00000fe4, 0x00000000 },
- { 0x0020000c, 0x2a801a68, 0x1e450ac0, 0x00020002 },
- { 0x00200040, 0x2a881a68, 0x1e450a80, 0x00030003 },
- { 0x00200005, 0x2a901248, 0x16450a88, 0xfffcfffc },
- { 0x00600001, 0x25600208, 0x008d0020, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x28600608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23800608, 0x00000000, 0x00000000 },
- { 0x00000005, 0x23840208, 0x06000384, 0xff000000 },
- { 0x00600001, 0x28a00208, 0x008d0380, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00010001 },
- { 0x00000001, 0x28a52288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28c00608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x28c02288, 0x00cf03a3, 0x00000000 },
- { 0x00000001, 0x28d00608, 0x00000000, 0x11111111 },
- { 0x00000001, 0x28dc0608, 0x00000000, 0x00010101 },
- { 0x00000001, 0x28d41248, 0x00000606, 0x00000000 },
- { 0x00400001, 0x28f00208, 0x00690608, 0x00000000 },
- { 0x00600001, 0x28e01248, 0x00ae0622, 0x00000000 },
- { 0x00000001, 0x247c1648, 0x10000000, 0x00000000 },
- { 0x00000001, 0x247c0e88, 0x08000000, 0x00000002 },
- { 0x00000001, 0x247d2288, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00200020 },
- { 0x00000001, 0x247e2288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00800000 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x06000800, 0x10782000 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200208, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240208, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280208, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0208, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28301248, 0x0000018c, 0x00000000 },
- { 0x00000001, 0x28340208, 0x00000188, 0x00000000 },
- { 0x00000001, 0x28380208, 0x0000019c, 0x00000000 },
- { 0x00000001, 0x283c0208, 0x00000488, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x06000800, 0x040a0203 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x7e200000 },
- { 0x00000001, 0x24561648, 0x10000000, 0x28302830 },
- { 0x00000001, 0x24400208, 0x00000448, 0x00000000 },
- { 0x00000040, 0x24401a68, 0x1e000440, 0xfff0fff0 },
- { 0x00000040, 0x24421a68, 0x1e000442, 0xfff4fff4 },
- { 0x00000001, 0x24401e68, 0x18000000, 0xfff0fff0 },
- { 0x00000001, 0x24421e68, 0x18000000, 0xfff4fff4 },
- { 0x00000001, 0x24440208, 0x00000440, 0x00000000 },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00600060 },
- { 0x00010040, 0x24401a68, 0x1e000440, 0x000c000c },
- { 0x01000005, 0x20002240, 0x160000a5, 0x00100010 },
- { 0x00010040, 0x24421a68, 0x1e000442, 0x00080008 },
- { 0x00200040, 0x24401a68, 0x1a450440, 0x00450a90 },
- { 0x00200040, 0x24441a68, 0x1a450444, 0x00450a90 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x00000001, 0x24600608, 0x00000000, 0x00000002 },
- { 0x00000001, 0x24642288, 0x0000009c, 0x00000000 },
- { 0x00000001, 0x24680608, 0x00000000, 0x30003030 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00400001, 0x45800208, 0x00000ac0, 0x00000000 },
- { 0x00400001, 0x45840208, 0x00000ac0, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d0580, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00000001, 0x28800608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28840608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28880608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x288c0608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28900608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28940608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28980608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x289c0608, 0x00000000, 0x100f0f0f },
- { 0x00000001, 0x28a00608, 0x00000000, 0x01010101 },
- { 0x00000001, 0x28a40608, 0x00000000, 0x10010101 },
- { 0x00000001, 0x28a80608, 0x00000000, 0x0f0f0f0f },
- { 0x00000001, 0x28ac0608, 0x00000000, 0x000f0f0f },
- { 0x00400001, 0x28b00608, 0x00000000, 0x00000000 },
- { 0x08600031, 0x21800a08, 0x06000800, 0x0c784000 },
- { 0x00000001, 0x25740608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x25752288, 0x00000199, 0x00000000 },
- { 0x00000001, 0x25762288, 0x0000019a, 0x00000000 },
- { 0x00000005, 0x24001248, 0x16000180, 0x00030003 },
- { 0x00000001, 0x25742288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28800208, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28a00208, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28c00208, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28e00208, 0x008d0200, 0x00000000 },
- { 0x00000001, 0x244c0608, 0x00000000, 0x00243000 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d0560, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d0580, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x06000800, 0x10786000 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000002 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200208, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240208, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28280208, 0x00000188, 0x00000000 },
- { 0x00000001, 0x282c0208, 0x00000574, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x06000800, 0x040a0003 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000001 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d01a0, 0x00000000 },
- { 0x00600001, 0x28400208, 0x008d01c0, 0x00000000 },
- { 0x00600001, 0x28600208, 0x008d01e0, 0x00000000 },
- { 0x00600001, 0x28800208, 0x008d0200, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x06000800, 0x0a0a0403 },
- { 0x00000040, 0x24880208, 0x06000488, 0x00000008 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0240, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x06000800, 0x040a0203 },
- { 0x0a800031, 0x2b600a08, 0x06000b40, 0x0219e003 },
- { 0x00600001, 0x2e000208, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24000a40, 0x06000e00, 0x82000010 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x0000007e, 0x00000000, 0x00000000, 0x00000000 },
- { 0x06000010, 0x20001a60, 0x1a000fa0, 0x00000fa4 },
- { 0x00010001, 0x2f601a68, 0x00000fa0, 0x00000000 },
- { 0x00110001, 0x2f601a68, 0x00000fa4, 0x00000000 },
- { 0x06000010, 0x20001a60, 0x1a000f60, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000f60, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa4 },
- { 0x00010001, 0x2f601a68, 0x00000fa0, 0x00000000 },
- { 0x00110001, 0x2f601a68, 0x00000fa4, 0x00000000 },
- { 0x04000010, 0x20001a60, 0x1a000f60, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000f60, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa4 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000070 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa0, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x000000a0 },
- { 0x04000010, 0x20001a60, 0x1a000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa4, 0x00000000 },
- { 0x00000020, 0x34000000, 0x0e001400, 0x00000060 },
- { 0x04000010, 0x20001a60, 0x1a000fa4, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa4, 0x00000000 },
- { 0x00010020, 0x34000000, 0x0e001400, 0x00000030 },
- { 0x04000010, 0x20001a60, 0x1a000fa0, 0x00000fa8 },
- { 0x00010001, 0x2fe41a68, 0x00000fa8, 0x00000000 },
- { 0x00110001, 0x2fe41a68, 0x00000fa0, 0x00000000 },
- { 0x00000001, 0x34000200, 0x00000fe0, 0x00000000 },
diff --git a/src/shaders/vme/vp8_intra_frame_gen8.asm b/src/shaders/vme/vp8_intra_frame_gen8.asm
deleted file mode 100644
index f1e7891..0000000
--- a/src/shaders/vme/vp8_intra_frame_gen8.asm
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- * Xiang Haihao <haihao.xiang@intel.com>
- * Li Zhong <zhong.li@intel.com>
- *
- */
-
-/*
- * __START
- */
-__INTRA_START:
-mov (16) tmp_reg0.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg2.0<1>:UD 0x0:UD {align1};
-mov (16) tmp_reg4.0<1>:UD 0x0:UD {align1} ;
-mov (16) tmp_reg6.0<1>:UD 0x0:UD {align1} ;
-
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-mov (1) read0_header.8<1>:UD BLOCK_32X1 {align1};
-mov (1) read0_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-mov (1) read1_header.8<1>:UD BLOCK_4X16 {align1};
-mov (1) read1_header.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-shl (2) vme_m0.8<1>:UW orig_xy_ub<2,2,1>:UB 4:UW {align1}; /* (x, y) * 16 */
-mov (1) vme_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-mul (1) obw_m0.8<1>:UD w_in_mb_uw<0,1,0>:UW orig_y_ub<0,1,0>:UB {align1};
-add (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD orig_x_ub<0,1,0>:UB {align1};
-mul (1) obw_m0.8<1>:UD obw_m0.8<0,1,0>:UD 0x02:UD {align1};
-mov (1) obw_m0.20<1>:UB thread_id_ub {align1}; /* dispatch id */
-
-/*
- * Media Read Message -- fetch Luma neighbor edge pixels
- */
-/* ROW */
-mov (8) msg_reg0.0<1>:UD read0_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_ROW<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* COL */
-mov (8) msg_reg0.0<1>:UD read1_header.0<8,8,1>:UD {align1};
-send (8) msg_ind INEP_COL0<1>:UB null read(BIND_IDX_INEP, 0, 0, 4) mlen 1 rlen 2 {align1};
-
-/*
- * Media Read Message -- fetch Chroma neighbor edge pixels
- */
-/* ROW */
-shl (2) read0_header.0<1>:D orig_xy_ub<2,2,1>:UB 3:UW {align1}; /* x * 16 , y * 8 */
-mul (1) read0_header.0<1>:D read0_header.0<0,1,0>:D 2:W {align1};
-add (1) read0_header.0<1>:D read0_header.0<0,1,0>:D -8:W {align1}; /* X offset */
-add (1) read0_header.4<1>:D read0_header.4<0,1,0>:D -1:W {align1}; /* Y offset */
-mov (8) msg_reg0.0<1>:UD read0_header.0<8,8,1>:UD {align1};
-send (8) msg_ind CHROMA_ROW<1>:UB null read(BIND_IDX_CBCR, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* COL */
-shl (2) read1_header.0<1>:D orig_xy_ub<2,2,1>:UB 3:UW {align1}; /* x * 16, y * 8 */
-mul (1) read1_header.0<1>:D read1_header.0<0,1,0>:D 2:W {align1};
-add (1) read1_header.0<1>:D read1_header.0<0,1,0>:D -4:W {align1}; /* X offset */
-mov (1) read1_header.8<1>:UD BLOCK_8X4 {align1};
-mov (8) msg_reg0.0<1>:UD read1_header.0<8,8,1>:UD {align1};
-send (8) msg_ind CHROMA_COL<1>:UB null read(BIND_IDX_CBCR, 0, 0, 4) mlen 1 rlen 1 {align1};
-
-/* m2, get the MV/Mb cost passed by constant buffer
-when creating EU thread by MEDIA_OBJECT */
-mov (8) vme_msg_2<1>:UD r1.0<8,8,1>:UD {align1};
-
-/* m3. This is changed for FWD/BWD cost center */
-mov (8) vme_msg_3<1>:UD 0x0:UD {align1};
-
-/* m4.*/
-mov (8) vme_msg_4<1>:ud 0x0:ud {align1};
-
-/* m5 */
-mov (1) INEP_ROW.0<1>:UD 0x0:UD {align1};
-and (1) INEP_ROW.4<1>:UD INEP_ROW.4<0,1,0>:UD 0xFF000000:UD {align1};
-mov (8) vme_msg_5<1>:UD INEP_ROW.0<8,8,1>:UD {align1};
-
-mov (1) tmp_reg0.0<1>:UB INTRA_PLANAR_MODE_MASK {align1}; /* vp8 don't support planar intra mode */
-mov (1) tmp_reg0.1<1>:UB LUMA_CHROMA_MODE {align1}; /* Intra type: Luma + Chroma */
-
-/* Intra mode mask && Intra compute type */
-mov (1) vme_msg_5.4<1>:UW tmp_reg0.0<0,1,0>:UW {align1};
-
-/* m6 */
-mov (8) vme_msg_6<1>:UD 0x0:UD {align1};
-mov (16) vme_msg_6.0<1>:UB INEP_COL0.3<32,8,4>:UB {align1};
-mov (1) vme_msg_6.16<1>:UD INTRA_PREDICTORE_MODE {align1};
-
-/* the penalty for Intra mode */
-mov (1) vme_msg_6.28<1>:UD 0x010101:UD {align1};
-mov (1) vme_msg_6.20<1>:UW CHROMA_ROW.6<0,1,0>:UW {align1};
-
-
-/* m7 */
-
-mov (4) vme_msg_7.16<1>:UD CHROMA_ROW.8<4,4,1>:UD {align1};
-mov (8) vme_msg_7.0<1>:UW CHROMA_COL.2<16,8,2>:UW {align1};
-
-/*
- * VME message
- */
-
-/* m1 */
-mov (1) intra_flag<1>:UW 0x0:UW {align1};
-mov (1) intra_part_mask_ub<1>:UB LUMA_INTRA_8x8_DISABLE {align1}; /* vp8 don't support intra_8x8 mode*/
-
-/* assign MB intra struct from the thread payload*/
-mov (1) mb_intra_struct_ub<1>:UB input_mb_intra_ub<0,1,0>:UB {align1};
-
-/* Disable DC HAAR component when calculating HARR SATD block */
-mov (1) tmp_reg0.0<1>:UW DC_HARR_DISABLE:UW {align1};
-mov (1) vme_m1.30<1>:UB tmp_reg0.0<0,1,0>:UB {align1};
-
-mov (8) vme_msg_1<1>:UD vme_m1.0<8,8,1>:UD {align1};
-
-/* m0 */
-add (1) vme_m0.12<1>:UD vme_m0.12<0,1,0>:ud INTRA_SAD_HAAR:UD {align1};/* 16x16 Source, Intra_harr */
-mov (1) vme_m0.15<1>:UB SUB_PART_8x4_DISABLE + SUB_PART_4x8_DISABLE {align1}; /* vp8 don't support 8x4 and 4x8 partion */
-mov (8) vme_msg_0<1>:UD vme_m0.0<8,8,1>:UD {align1};
-
-/* after verification it will be passed by using payload */
-send (8)
- vme_msg_ind
- vme_wb<1>:UD
- null
- cre(
- BIND_IDX_VME,
- VME_SIC_MESSAGE_TYPE
- )
- mlen sic_vme_msg_length
- rlen vme_wb_length
- {align1};
-/*
- * Oword Block Write message
- */
-mov (8) msg_reg0.0<1>:UD obw_m0<8,8,1>:UD {align1};
-
-mov (1) msg_reg1.0<1>:UD vme_wb.0<0,1,0>:UD {align1};
-mov (1) msg_reg1.4<1>:UD vme_wb.16<0,1,0>:UD {align1};
-mov (1) msg_reg1.8<1>:UD vme_wb.20<0,1,0>:UD {align1};
-mov (1) msg_reg1.12<1>:UD vme_wb.24<0,1,0>:UD {align1};
-
-/* Distortion, Intra (17-16), */
-mov (1) msg_reg1.16<1>:UW vme_wb.12<0,1,0>:UW {align1};
-
-mov (1) msg_reg1.20<1>:UD vme_wb.8<0,1,0>:UD {align1};
-/* VME clock counts */
-mov (1) msg_reg1.24<1>:UD vme_wb.28<0,1,0>:UD {align1};
-
-mov (1) msg_reg1.28<1>:UD obw_m0.8<0,1,0>:UD {align1};
-
-/* bind index 3, write 2 oword (32bytes), msg type: 8(OWord Block Write) */
-send (16)
- msg_ind
- obw_wb
- null
- data_port(
- OBW_CACHE_TYPE,
- OBW_MESSAGE_TYPE,
- OBW_CONTROL_2,
- OBW_BIND_IDX,
- OBW_WRITE_COMMIT_CATEGORY,
- OBW_HEADER_PRESENT
- )
- mlen 2
- rlen obw_wb_length
- {align1};
-
-__EXIT:
-/*
- * kill thread
- */
-mov (8) ts_msg_reg0<1>:UD r0<8,8,1>:UD {align1};
-send (16) ts_msg_ind acc0<1>UW null thread_spawner(0, 0, 1) mlen 1 rlen 0 {align1 EOT};
diff --git a/src/shaders/vme/vp8_intra_frame_gen8.g8a b/src/shaders/vme/vp8_intra_frame_gen8.g8a
deleted file mode 100644
index a445b1e..0000000
--- a/src/shaders/vme/vp8_intra_frame_gen8.g8a
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "vme8.inc"
-#include "vp8_intra_frame_gen8.asm"
diff --git a/src/shaders/vme/vp8_intra_frame_gen8.g8b b/src/shaders/vme/vp8_intra_frame_gen8.g8b
deleted file mode 100644
index 4dca617..0000000
--- a/src/shaders/vme/vp8_intra_frame_gen8.g8b
+++ /dev/null
@@ -1,73 +0,0 @@
- { 0x00800001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24c00608, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24002228, 0x164500a0, 0x00040004 },
- { 0x00000040, 0x24000a28, 0x1e000400, 0xfff8fff8 },
- { 0x00000040, 0x24040a28, 0x1e000404, 0xffffffff },
- { 0x00000001, 0x24080e08, 0x08000000, 0x0000001f },
- { 0x00000001, 0x24142288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24202228, 0x164500a0, 0x00040004 },
- { 0x00000040, 0x24200a28, 0x1e000420, 0xfffcfffc },
- { 0x00000001, 0x24280e08, 0x08000000, 0x000f0003 },
- { 0x00000001, 0x24342288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24482248, 0x164500a0, 0x00040004 },
- { 0x00000001, 0x24542288, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24881208, 0x220000a2, 0x000000a1 },
- { 0x00000040, 0x24880208, 0x22000488, 0x000000a0 },
- { 0x00000041, 0x24880208, 0x06000488, 0x00000002 },
- { 0x00000001, 0x24942288, 0x00000014, 0x00000000 },
- { 0x00600001, 0x28000208, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x23800a88, 0x0e000800, 0x02190004 },
- { 0x00600001, 0x28000208, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x23a00a88, 0x0e000800, 0x02290004 },
- { 0x00200009, 0x24002228, 0x164500a0, 0x00030003 },
- { 0x00000041, 0x24000a28, 0x1e000400, 0x00020002 },
- { 0x00000040, 0x24000a28, 0x1e000400, 0xfff8fff8 },
- { 0x00000040, 0x24040a28, 0x1e000404, 0xffffffff },
- { 0x00600001, 0x28000208, 0x008d0400, 0x00000000 },
- { 0x04600031, 0x26000a88, 0x0e000800, 0x02190006 },
- { 0x00200009, 0x24202228, 0x164500a0, 0x00030003 },
- { 0x00000041, 0x24200a28, 0x1e000420, 0x00020002 },
- { 0x00000040, 0x24200a28, 0x1e000420, 0xfffcfffc },
- { 0x00000001, 0x24280e08, 0x08000000, 0x00070003 },
- { 0x00600001, 0x28000208, 0x008d0420, 0x00000000 },
- { 0x04600031, 0x26200a88, 0x0e000800, 0x02190006 },
- { 0x00600001, 0x28400208, 0x008d0020, 0x00000000 },
- { 0x00600001, 0x28600608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23800608, 0x00000000, 0x00000000 },
- { 0x00000005, 0x23840208, 0x06000384, 0xff000000 },
- { 0x00600001, 0x28a00208, 0x008d0380, 0x00000000 },
- { 0x00000001, 0x24000688, 0x00000000, 0x10001000 },
- { 0x00000001, 0x24010e88, 0x08000000, 0x00000000 },
- { 0x00000001, 0x28a41248, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28c00608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x28c02288, 0x00cf03a3, 0x00000000 },
- { 0x00000001, 0x28d00608, 0x00000000, 0x11111111 },
- { 0x00000001, 0x28dc0608, 0x00000000, 0x00010101 },
- { 0x00000001, 0x28d41248, 0x00000606, 0x00000000 },
- { 0x00400001, 0x28f00208, 0x00690608, 0x00000000 },
- { 0x00600001, 0x28e01248, 0x00ae0622, 0x00000000 },
- { 0x00000001, 0x247c1648, 0x10000000, 0x00000000 },
- { 0x00000001, 0x247c0e88, 0x08000000, 0x00000002 },
- { 0x00000001, 0x247d2288, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00200020 },
- { 0x00000001, 0x247e2288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00000040, 0x244c0208, 0x0600044c, 0x00800000 },
- { 0x00000001, 0x244f0e88, 0x08000000, 0x00000030 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x0e000800, 0x10782000 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200208, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240208, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280208, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0208, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28301248, 0x0000018c, 0x00000000 },
- { 0x00000001, 0x28340208, 0x00000188, 0x00000000 },
- { 0x00000001, 0x28380208, 0x0000019c, 0x00000000 },
- { 0x00000001, 0x283c0208, 0x00000488, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x0e000800, 0x040a0203 },
- { 0x00600001, 0x2e000208, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24000a40, 0x0e000e00, 0x82000010 },
diff --git a/src/shaders/vme/vp8_intra_frame_gen9.g9a b/src/shaders/vme/vp8_intra_frame_gen9.g9a
deleted file mode 100644
index a445b1e..0000000
--- a/src/shaders/vme/vp8_intra_frame_gen9.g9a
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "vme8.inc"
-#include "vp8_intra_frame_gen8.asm"
diff --git a/src/shaders/vme/vp8_intra_frame_gen9.g9b b/src/shaders/vme/vp8_intra_frame_gen9.g9b
deleted file mode 100644
index f056f4f..0000000
--- a/src/shaders/vme/vp8_intra_frame_gen9.g9b
+++ /dev/null
@@ -1,73 +0,0 @@
- { 0x00800001, 0x24000608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24400608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24800608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x24c00608, 0x00000000, 0x00000000 },
- { 0x00200009, 0x24002228, 0x164500a0, 0x00040004 },
- { 0x00000040, 0x24000a28, 0x1e000400, 0xfff8fff8 },
- { 0x00000040, 0x24040a28, 0x1e000404, 0xffffffff },
- { 0x00000001, 0x24080e08, 0x08000000, 0x0000001f },
- { 0x00000001, 0x24142288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24202228, 0x164500a0, 0x00040004 },
- { 0x00000040, 0x24200a28, 0x1e000420, 0xfffcfffc },
- { 0x00000001, 0x24280e08, 0x08000000, 0x000f0003 },
- { 0x00000001, 0x24342288, 0x00000014, 0x00000000 },
- { 0x00200009, 0x24482248, 0x164500a0, 0x00040004 },
- { 0x00000001, 0x24542288, 0x00000014, 0x00000000 },
- { 0x00000041, 0x24881208, 0x220000a2, 0x000000a1 },
- { 0x00000040, 0x24880208, 0x22000488, 0x000000a0 },
- { 0x00000041, 0x24880208, 0x06000488, 0x00000002 },
- { 0x00000001, 0x24942288, 0x00000014, 0x00000000 },
- { 0x00600001, 0x28000208, 0x008d0400, 0x00000000 },
- { 0x0c600031, 0x23800a88, 0x06000800, 0x02190004 },
- { 0x00600001, 0x28000208, 0x008d0420, 0x00000000 },
- { 0x0c600031, 0x23a00a88, 0x06000800, 0x02290004 },
- { 0x00200009, 0x24002228, 0x164500a0, 0x00030003 },
- { 0x00000041, 0x24000a28, 0x1e000400, 0x00020002 },
- { 0x00000040, 0x24000a28, 0x1e000400, 0xfff8fff8 },
- { 0x00000040, 0x24040a28, 0x1e000404, 0xffffffff },
- { 0x00600001, 0x28000208, 0x008d0400, 0x00000000 },
- { 0x0c600031, 0x26000a88, 0x06000800, 0x02190006 },
- { 0x00200009, 0x24202228, 0x164500a0, 0x00030003 },
- { 0x00000041, 0x24200a28, 0x1e000420, 0x00020002 },
- { 0x00000040, 0x24200a28, 0x1e000420, 0xfffcfffc },
- { 0x00000001, 0x24280e08, 0x08000000, 0x00070003 },
- { 0x00600001, 0x28000208, 0x008d0420, 0x00000000 },
- { 0x0c600031, 0x26200a88, 0x06000800, 0x02190006 },
- { 0x00600001, 0x28400208, 0x008d0020, 0x00000000 },
- { 0x00600001, 0x28600608, 0x00000000, 0x00000000 },
- { 0x00600001, 0x28800608, 0x00000000, 0x00000000 },
- { 0x00000001, 0x23800608, 0x00000000, 0x00000000 },
- { 0x00000005, 0x23840208, 0x06000384, 0xff000000 },
- { 0x00600001, 0x28a00208, 0x008d0380, 0x00000000 },
- { 0x00000001, 0x24000688, 0x00000000, 0x10001000 },
- { 0x00000001, 0x24010e88, 0x08000000, 0x00000000 },
- { 0x00000001, 0x28a41248, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28c00608, 0x00000000, 0x00000000 },
- { 0x00800001, 0x28c02288, 0x00cf03a3, 0x00000000 },
- { 0x00000001, 0x28d00608, 0x00000000, 0x11111111 },
- { 0x00000001, 0x28dc0608, 0x00000000, 0x00010101 },
- { 0x00000001, 0x28d41248, 0x00000606, 0x00000000 },
- { 0x00400001, 0x28f00208, 0x00690608, 0x00000000 },
- { 0x00600001, 0x28e01248, 0x00ae0622, 0x00000000 },
- { 0x00000001, 0x247c1648, 0x10000000, 0x00000000 },
- { 0x00000001, 0x247c0e88, 0x08000000, 0x00000002 },
- { 0x00000001, 0x247d2288, 0x000000a5, 0x00000000 },
- { 0x00000001, 0x24001648, 0x10000000, 0x00200020 },
- { 0x00000001, 0x247e2288, 0x00000400, 0x00000000 },
- { 0x00600001, 0x28200208, 0x008d0460, 0x00000000 },
- { 0x00000040, 0x244c0208, 0x0600044c, 0x00800000 },
- { 0x00000001, 0x244f0e88, 0x08000000, 0x00000030 },
- { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 },
- { 0x0d600031, 0x21800a08, 0x06000800, 0x10782000 },
- { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 },
- { 0x00000001, 0x28200208, 0x00000180, 0x00000000 },
- { 0x00000001, 0x28240208, 0x00000190, 0x00000000 },
- { 0x00000001, 0x28280208, 0x00000194, 0x00000000 },
- { 0x00000001, 0x282c0208, 0x00000198, 0x00000000 },
- { 0x00000001, 0x28301248, 0x0000018c, 0x00000000 },
- { 0x00000001, 0x28340208, 0x00000188, 0x00000000 },
- { 0x00000001, 0x28380208, 0x0000019c, 0x00000000 },
- { 0x00000001, 0x283c0208, 0x00000488, 0x00000000 },
- { 0x0a800031, 0x20000a60, 0x06000800, 0x040a0203 },
- { 0x00600001, 0x2e000208, 0x008d0000, 0x00000000 },
- { 0x07800031, 0x24000a40, 0x06000e00, 0x82000010 },
diff --git a/src/sysdeps.h b/src/sysdeps.h
deleted file mode 100644
index 71bfb4d..0000000
--- a/src/sysdeps.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2012 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef SYSDEPS_H
-#define SYSDEPS_H
-
-#ifdef ANDROID
-
-# include "config_android.h"
-
-#else
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#endif /* ANDROID */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdbool.h>
-#include <string.h>
-#include <stdint.h>
-#include <assert.h>
-
-#endif /* SYSDEPS_H */
diff --git a/src/va_backend_compat.h b/src/va_backend_compat.h
deleted file mode 100644
index 7f0a607..0000000
--- a/src/va_backend_compat.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2012 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef VA_BACKEND_COMPAT_H
-#define VA_BACKEND_COMPAT_H
-
-#include <va/va_backend.h>
-
-#if VA_CHECK_VERSION(0,33,0)
-# include <va/va_drmcommon.h>
-
-# define VA_CHECK_DRM_AUTH_TYPE(ctx, type) \
- (((struct drm_state *)(ctx)->drm_state)->auth_type == (type))
-
-#else
-# include <va/va_dricommon.h>
-
-# define VA_CHECK_DRM_AUTH_TYPE(ctx, type) \
- (((struct dri_state *)(ctx)->dri_state)->driConnectedFlag == (type))
-
-# define drm_state dri_state
-# define VA_DRM_AUTH_DRI1 VA_DRI1
-# define VA_DRM_AUTH_DRI2 VA_DRI2
-# define VA_DRM_AUTH_CUSTOM VA_DUMMY
-#endif
-
-#if !VA_CHECK_VERSION(0,35,2)
-# define VAProfileH264MultiviewHigh 15
-# define VAProfileH264StereoHigh 16
-#endif
-
-#if !VA_CHECK_VERSION(0,38,1)
-
-# define VA_RT_FORMAT_YUV420_10BPP 0x00000100
-# define VA_FOURCC_P010 0x30313050
-# define VA_FOURCC_P016 0x36313050
-
-#endif
-
-#endif /* VA_BACKEND_COMPAT_H */
diff --git a/src/vp8_probs.h b/src/vp8_probs.h
deleted file mode 100644
index 0206699..0000000
--- a/src/vp8_probs.h
+++ /dev/null
@@ -1,339 +0,0 @@
-/*
- * Copyright © 2014 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-/*
- * This file defines some vp8 probability tables, and
- * they are ported from libvpx (https://github.com/mrchapp/libvpx/).
- * The original copyright and licence statement as below.
- */
-
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP8_PROBS_H
-#define VP8_PROBS_H
-
-static const unsigned char vp8_ymode_prob[4] =
-{
- 112, 86, 140, 37
-};
-
-static const unsigned char vp8_kf_ymode_prob[4] =
-{
- 145, 156, 163, 128
-};
-
-static const unsigned char vp8_uv_mode_prob[3] =
-{
- 162, 101, 204
-};
-
-static const unsigned char vp8_kf_uv_mode_prob[3] =
-{
- 142, 114, 183
-};
-
-static const unsigned char vp8_base_skip_false_prob[128] =
-{
- 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255,
- 251, 248, 244, 240, 236, 232, 229, 225,
- 221, 217, 213, 208, 204, 199, 194, 190,
- 187, 183, 179, 175, 172, 168, 164, 160,
- 157, 153, 149, 145, 142, 138, 134, 130,
- 127, 124, 120, 117, 114, 110, 107, 104,
- 101, 98, 95, 92, 89, 86, 83, 80,
- 77, 74, 71, 68, 65, 62, 59, 56,
- 53, 50, 47, 44, 41, 38, 35, 32,
- 30, 28, 26, 24, 22, 20, 18, 16,
-};
-
-static const unsigned char vp8_mv_update_probs[2][19] =
-{
- {
- 237,
- 246,
- 253, 253, 254, 254, 254, 254, 254,
- 254, 254, 254, 254, 254, 250, 250, 252, 254, 254
- },
- {
- 231,
- 243,
- 245, 253, 254, 254, 254, 254, 254,
- 254, 254, 254, 254, 254, 251, 251, 254, 254, 254
- }
-};
-
-static const unsigned char vp8_default_mv_context[2][19] =
-{
- {
- 162, /* is short */
- 128, /* sign */
- 225, 146, 172, 147, 214, 39, 156, /* short tree */
- 128, 129, 132, 75, 145, 178, 206, 239, 254, 254 /* long bits */
- },
-
- {
- 164,
- 128,
- 204, 170, 119, 235, 140, 230, 228,
- 128, 130, 130, 74, 148, 180, 203, 236, 254, 254
-
- }
-};
-
-static const unsigned char vp8_default_coef_probs[4][8][3][11] =
-{
- { /* Block Type ( 0 ) */
- { /* Coeff Band ( 0 )*/
- { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
- { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
- { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }
- },
- { /* Coeff Band ( 1 )*/
- { 253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128 },
- { 189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128 },
- { 106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128 }
- },
- { /* Coeff Band ( 2 )*/
- { 1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128 },
- { 181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128 },
- { 78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128 }
- },
- { /* Coeff Band ( 3 )*/
- { 1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128 },
- { 184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128 },
- { 77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128 }
- },
- { /* Coeff Band ( 4 )*/
- { 1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128 },
- { 170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128 },
- { 37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128 }
- },
- { /* Coeff Band ( 5 )*/
- { 1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128 },
- { 207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128 },
- { 102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128 }
- },
- { /* Coeff Band ( 6 )*/
- { 1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128 },
- { 177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128 },
- { 80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128 }
- },
- { /* Coeff Band ( 7 )*/
- { 1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
- { 246, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
- { 255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }
- }
- },
- { /* Block Type ( 1 ) */
- { /* Coeff Band ( 0 )*/
- { 198, 35, 237, 223, 193, 187, 162, 160, 145, 155, 62 },
- { 131, 45, 198, 221, 172, 176, 220, 157, 252, 221, 1 },
- { 68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128 }
- },
- { /* Coeff Band ( 1 )*/
- { 1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128 },
- { 184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128 },
- { 81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128 }
- },
- { /* Coeff Band ( 2 )*/
- { 1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128 },
- { 99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128 },
- { 23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128 }
- },
- { /* Coeff Band ( 3 )*/
- { 1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128 },
- { 109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128 },
- { 44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128 }
- },
- { /* Coeff Band ( 4 )*/
- { 1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128 },
- { 94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128 },
- { 22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128 }
- },
- { /* Coeff Band ( 5 )*/
- { 1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128 },
- { 124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128 },
- { 35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128 }
- },
- { /* Coeff Band ( 6 )*/
- { 1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128 },
- { 121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128 },
- { 45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128 }
- },
- { /* Coeff Band ( 7 )*/
- { 1, 1, 251, 255, 213, 255, 128, 128, 128, 128, 128 },
- { 203, 1, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
- { 137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128 }
- }
- },
- { /* Block Type ( 2 ) */
- { /* Coeff Band ( 0 )*/
- { 253, 9, 248, 251, 207, 208, 255, 192, 128, 128, 128 },
- { 175, 13, 224, 243, 193, 185, 249, 198, 255, 255, 128 },
- { 73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128 }
- },
- { /* Coeff Band ( 1 )*/
- { 1, 95, 247, 253, 212, 183, 255, 255, 128, 128, 128 },
- { 239, 90, 244, 250, 211, 209, 255, 255, 128, 128, 128 },
- { 155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128 }
- },
- { /* Coeff Band ( 2 )*/
- { 1, 24, 239, 251, 218, 219, 255, 205, 128, 128, 128 },
- { 201, 51, 219, 255, 196, 186, 128, 128, 128, 128, 128 },
- { 69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128 }
- },
- { /* Coeff Band ( 3 )*/
- { 1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128 },
- { 223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128 },
- { 141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128 }
- },
- { /* Coeff Band ( 4 )*/
- { 1, 16, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
- { 190, 36, 230, 255, 236, 255, 128, 128, 128, 128, 128 },
- { 149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 }
- },
- { /* Coeff Band ( 5 )*/
- { 1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
- { 247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
- { 240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128 }
- },
- { /* Coeff Band ( 6 )*/
- { 1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128 },
- { 213, 62, 250, 255, 255, 128, 128, 128, 128, 128, 128 },
- { 55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128 }
- },
- { /* Coeff Band ( 7 )*/
- { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
- { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
- { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }
- }
- },
- { /* Block Type ( 3 ) */
- { /* Coeff Band ( 0 )*/
- { 202, 24, 213, 235, 186, 191, 220, 160, 240, 175, 255 },
- { 126, 38, 182, 232, 169, 184, 228, 174, 255, 187, 128 },
- { 61, 46, 138, 219, 151, 178, 240, 170, 255, 216, 128 }
- },
- { /* Coeff Band ( 1 )*/
- { 1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128 },
- { 166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128 },
- { 39, 77, 162, 232, 172, 180, 245, 178, 255, 255, 128 }
- },
- { /* Coeff Band ( 2 )*/
- { 1, 52, 220, 246, 198, 199, 249, 220, 255, 255, 128 },
- { 124, 74, 191, 243, 183, 193, 250, 221, 255, 255, 128 },
- { 24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128 }
- },
- { /* Coeff Band ( 3 )*/
- { 1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128 },
- { 149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128 },
- { 28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128 }
- },
- { /* Coeff Band ( 4 )*/
- { 1, 81, 230, 252, 204, 203, 255, 192, 128, 128, 128 },
- { 123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128 },
- { 20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128 }
- },
- { /* Coeff Band ( 5 )*/
- { 1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128 },
- { 168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128 },
- { 47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128 }
- },
- { /* Coeff Band ( 6 )*/
- { 1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128 },
- { 141, 84, 213, 252, 201, 202, 255, 219, 128, 128, 128 },
- { 42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128 }
- },
- { /* Coeff Band ( 7 )*/
- { 1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
- { 244, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
- { 238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 }
- }
- }
-};
-
-/* Work in progress recalibration of baseline rate tables based on
- * the assumption that bits per mb is inversely proportional to the
- * quantizer value.
- * Note: this table value multiplied by 512
- */
-static const int vp8_bits_per_mb[2][128] =
-{
- /* Intra case 450000/Qintra */
- {
- 1125000,900000, 750000, 642857, 562500, 500000, 450000, 450000,
- 409090, 375000, 346153, 321428, 300000, 281250, 264705, 264705,
- 250000, 236842, 225000, 225000, 214285, 214285, 204545, 204545,
- 195652, 195652, 187500, 180000, 180000, 173076, 166666, 160714,
- 155172, 150000, 145161, 140625, 136363, 132352, 128571, 125000,
- 121621, 121621, 118421, 115384, 112500, 109756, 107142, 104651,
- 102272, 100000, 97826, 97826, 95744, 93750, 91836, 90000,
- 88235, 86538, 84905, 83333, 81818, 80357, 78947, 77586,
- 76271, 75000, 73770, 72580, 71428, 70312, 69230, 68181,
- 67164, 66176, 65217, 64285, 63380, 62500, 61643, 60810,
- 60000, 59210, 59210, 58441, 57692, 56962, 56250, 55555,
- 54878, 54216, 53571, 52941, 52325, 51724, 51136, 50561,
- 49450, 48387, 47368, 46875, 45918, 45000, 44554, 44117,
- 43269, 42452, 41666, 40909, 40178, 39473, 38793, 38135,
- 36885, 36290, 35714, 35156, 34615, 34090, 33582, 33088,
- 32608, 32142, 31468, 31034, 30405, 29801, 29220, 28662,
- },
-
- /* Inter case 285000/Qinter */
- {
- 712500, 570000, 475000, 407142, 356250, 316666, 285000, 259090,
- 237500, 219230, 203571, 190000, 178125, 167647, 158333, 150000,
- 142500, 135714, 129545, 123913, 118750, 114000, 109615, 105555,
- 101785, 98275, 95000, 91935, 89062, 86363, 83823, 81428,
- 79166, 77027, 75000, 73076, 71250, 69512, 67857, 66279,
- 64772, 63333, 61956, 60638, 59375, 58163, 57000, 55882,
- 54807, 53773, 52777, 51818, 50892, 50000, 49137, 47500,
- 45967, 44531, 43181, 41911, 40714, 39583, 38513, 37500,
- 36538, 35625, 34756, 33928, 33139, 32386, 31666, 30978,
- 30319, 29687, 29081, 28500, 27941, 27403, 26886, 26388,
- 25909, 25446, 25000, 24568, 23949, 23360, 22800, 22265,
- 21755, 21268, 20802, 20357, 19930, 19520, 19127, 18750,
- 18387, 18037, 17701, 17378, 17065, 16764, 16473, 16101,
- 15745, 15405, 15079, 14766, 14467, 14179, 13902, 13636,
- 13380, 13133, 12895, 12666, 12445, 12179, 11924, 11632,
- 11445, 11220, 11003, 10795, 10594, 10401, 10215, 10035,
- }
-};
-
-#endif /* _VP8_PROBS_H_ */
diff --git a/src/vp9_probs.c b/src/vp9_probs.c
deleted file mode 100644
index 5d0cad4..0000000
--- a/src/vp9_probs.c
+++ /dev/null
@@ -1,1106 +0,0 @@
-/*
- * Copyright © 2016 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Zhao Yakui <yakui.zhao@intel.com>
- */
-/*
- * This file defines some vp9 probability tables, and
- * they are ported from libvpx (https://github.com/webmproject/libvpx/).
- * The original copyright and licence statement as below.
- */
-
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-#include "vp9_probs.h"
-#include "i965_drv_video.h"
-#include <stdlib.h>
-
-struct tx_probs default_tx_probs = {
- { { 100 },
- { 66 } },
-
- { { 20, 152 },
- { 15, 101 } },
-
- { { 3, 136, 37 },
- { 5, 52, 13 } },
-};
-
-vp9_prob default_skip_probs[SKIP_CONTEXTS] = {
- 192, 128, 64
-};
-
-vp9_prob default_inter_mode_probs[INTER_MODE_CONTEXTS]
- [INTER_MODES - 1] = {
- {2, 173, 34}, // 0 = both zero mv
- {7, 145, 85}, // 1 = one zero mv + one a predicted mv
- {7, 166, 63}, // 2 = two predicted mvs
- {7, 94, 66}, // 3 = one predicted/zero and one new mv
- {8, 64, 46}, // 4 = two new mvs
- {17, 81, 31}, // 5 = one intra neighbour + x
- {25, 29, 30}, // 6 = two intra neighbours
-};
-
-vp9_prob default_switchable_interp_prob[SWITCHABLE_FILTER_CONTEXTS][SWITCHABLE_FILTERS - 1] = {
- { 235, 162, },
- { 36, 255, },
- { 34, 3, },
- { 149, 144, },
-};
-
-vp9_prob default_intra_inter_p[INTRA_INTER_CONTEXTS] = {
- 9, 102, 187, 225
-};
-
-vp9_prob default_comp_inter_p[COMP_INTER_CONTEXTS] = {
- 239, 183, 119, 96, 41
-};
-
-vp9_prob default_single_ref_p[REF_CONTEXTS][2] = {
- { 33, 16 },
- { 77, 74 },
- { 142, 142 },
- { 172, 170 },
- { 238, 247 }
-};
-
-vp9_prob default_comp_ref_p[REF_CONTEXTS] = {
- 50, 126, 123, 221, 226
-};
-
-vp9_prob vp9_kf_uv_mode_prob[INTRA_MODES][INTRA_MODES - 1] = {
- { 144, 11, 54, 157, 195, 130, 46, 58, 108 }, // y = dc
- { 118, 15, 123, 148, 131, 101, 44, 93, 131 }, // y = v
- { 113, 12, 23, 188, 226, 142, 26, 32, 125 }, // y = h
- { 120, 11, 50, 123, 163, 135, 64, 77, 103 }, // y = d45
- { 113, 9, 36, 155, 111, 157, 32, 44, 161 }, // y = d135
- { 116, 9, 55, 176, 76, 96, 37, 61, 149 }, // y = d117
- { 115, 9, 28, 141, 161, 167, 21, 25, 193 }, // y = d153
- { 120, 12, 32, 145, 195, 142, 32, 38, 86 }, // y = d207
- { 116, 12, 64, 120, 140, 125, 49, 115, 121 }, // y = d63
- { 102, 19, 66, 162, 182, 122, 35, 59, 128 } // y = tm
-};
-
-vp9_prob default_if_y_probs[BLOCK_SIZE_GROUPS][INTRA_MODES - 1] = {
- { 65, 32, 18, 144, 162, 194, 41, 51, 98 }, // block_size < 8x8
- { 132, 68, 18, 165, 217, 196, 45, 40, 78 }, // block_size < 16x16
- { 173, 80, 19, 176, 240, 193, 64, 35, 46 }, // block_size < 32x32
- { 221, 135, 38, 194, 248, 121, 96, 85, 29 } // block_size >= 32x32
-};
-
-vp9_prob default_if_uv_probs[INTRA_MODES][INTRA_MODES - 1] = {
- { 120, 7, 76, 176, 208, 126, 28, 54, 103 }, // y = dc
- { 48, 12, 154, 155, 139, 90, 34, 117, 119 }, // y = v
- { 67, 6, 25, 204, 243, 158, 13, 21, 96 }, // y = h
- { 97, 5, 44, 131, 176, 139, 48, 68, 97 }, // y = d45
- { 83, 5, 42, 156, 111, 152, 26, 49, 152 }, // y = d135
- { 80, 5, 58, 178, 74, 83, 33, 62, 145 }, // y = d117
- { 86, 5, 32, 154, 192, 168, 14, 22, 163 }, // y = d153
- { 85, 5, 32, 156, 216, 148, 19, 29, 73 }, // y = d207
- { 77, 7, 64, 116, 132, 122, 37, 126, 120 }, // y = d63
- { 101, 21, 107, 181, 192, 103, 19, 67, 125 } // y = tm
-};
-
-vp9_prob default_seg_tree_probs[SEG_TREE_PROBS] = {
- 255, 255, 255, 255, 255, 255, 255
-};
-
-vp9_prob default_seg_pred_probs[PREDICTION_PROBS] = {
- 255, 255, 255
-};
-
-vp9_prob vp9_kf_partition_probs[PARTITION_CONTEXTS]
- [PARTITION_TYPES - 1] = {
- // 8x8 -> 4x4
- { 158, 97, 94 }, // a/l both not split
- { 93, 24, 99 }, // a split, l not split
- { 85, 119, 44 }, // l split, a not split
- { 62, 59, 67 }, // a/l both split
- // 16x16 -> 8x8
- { 149, 53, 53 }, // a/l both not split
- { 94, 20, 48 }, // a split, l not split
- { 83, 53, 24 }, // l split, a not split
- { 52, 18, 18 }, // a/l both split
- // 32x32 -> 16x16
- { 150, 40, 39 }, // a/l both not split
- { 78, 12, 26 }, // a split, l not split
- { 67, 33, 11 }, // l split, a not split
- { 24, 7, 5 }, // a/l both split
- // 64x64 -> 32x32
- { 174, 35, 49 }, // a/l both not split
- { 68, 11, 27 }, // a split, l not split
- { 57, 15, 9 }, // l split, a not split
- { 12, 3, 3 }, // a/l both split
-};
-
-vp9_prob default_partition_probs[PARTITION_CONTEXTS]
- [PARTITION_TYPES - 1] = {
- // 8x8 -> 4x4
- { 199, 122, 141 }, // a/l both not split
- { 147, 63, 159 }, // a split, l not split
- { 148, 133, 118 }, // l split, a not split
- { 121, 104, 114 }, // a/l both split
- // 16x16 -> 8x8
- { 174, 73, 87 }, // a/l both not split
- { 92, 41, 83 }, // a split, l not split
- { 82, 99, 50 }, // l split, a not split
- { 53, 39, 39 }, // a/l both split
- // 32x32 -> 16x16
- { 177, 58, 59 }, // a/l both not split
- { 68, 26, 63 }, // a split, l not split
- { 52, 79, 25 }, // l split, a not split
- { 17, 14, 12 }, // a/l both split
- // 64x64 -> 32x32
- { 222, 34, 30 }, // a/l both not split
- { 72, 16, 44 }, // a split, l not split
- { 58, 32, 12 }, // l split, a not split
- { 10, 7, 6 }, // a/l both split
-};
-
-//Rearranged the values for better usage
-nmv_context default_nmv_context = {
- {32, 64, 96},
- {
- { // Vertical component
- 128, // sign
- {224, 144, 192, 168, 192, 176, 192, 198, 198, 245}, // class
- {216}, // class0
- {136, 140, 148, 160, 176, 192, 224, 234, 234, 240}, // bits
- },
- { // Horizontal component
- 128, // sign
- {216, 128, 176, 160, 176, 176, 192, 198, 198, 208}, // class
- {208}, // class0
- {136, 140, 148, 160, 176, 192, 224, 234, 234, 240}, // bits
- }
- },
- {{128, 128, 64}, {96, 112, 64}}, // class0_fp0
- {64, 96, 64}, // fp0
- {{128, 128, 64}, {96, 112, 64}}, // class0_fp1
- {64, 96, 64}, // fp1
- {160, 128}, // class0_hp bit
- {160, 128} // hp
-
-};
-
-//Rearranged the coeff probs for better usage
-vp9_prob default_coef_probs_4x4[COEFF_PROB_SIZE][COEFF_PROB_NUM] = {
- // Y plane - Intra
- // Band 0
- { 195, 29, 183 }, { 84, 49, 136 }, { 8, 42, 71 },
- // Band 1
- { 31, 107, 169 }, { 35, 99, 159 }, { 17, 82, 140 },
- { 8, 66, 114 }, { 2, 44, 76 }, { 1, 19, 32 },
- // Band 2
- { 40, 132, 201 }, { 29, 114, 187 }, { 13, 91, 157 },
- { 7, 75, 127 }, { 3, 58, 95 }, { 1, 28, 47 },
- // Band 3
- { 69, 142, 221 }, { 42, 122, 201 }, { 15, 91, 159 },
- { 6, 67, 121 }, { 1, 42, 77 }, { 1, 17, 31 },
- // Band 4
- { 102, 148, 228 }, { 67, 117, 204 }, { 17, 82, 154 },
- { 6, 59, 114 }, { 2, 39, 75 }, { 1, 15, 29 },
- // Band 5
- { 156, 57, 233 }, { 119, 57, 212 }, { 58, 48, 163 },
- { 29, 40, 124 }, { 12, 30, 81 }, { 3, 12, 31 },
-
- // Y plane - Inter
- // Band 0
- { 191, 107, 226 }, { 124, 117, 204 }, { 25, 99, 155 },
- // Band 1
- { 29, 148, 210 }, { 37, 126, 194 }, { 8, 93, 157 },
- { 2, 68, 118 }, { 1, 39, 69 }, { 1, 17, 33 },
- // Band 2
- { 41, 151, 213 }, { 27, 123, 193 }, { 3, 82, 144 },
- { 1, 58, 105 }, { 1, 32, 60 }, { 1, 13, 26 },
- // Band 3
- { 59, 159, 220 }, { 23, 126, 198 }, { 4, 88, 151 },
- { 1, 66, 114 }, { 1, 38, 71 }, { 1, 18, 34 },
- // Band 4
- { 114, 136, 232 }, { 51, 114, 207 }, { 11, 83, 155 },
- { 3, 56, 105 }, { 1, 33, 65 }, { 1, 17, 34 },
- // Band 5
- { 149, 65, 234 }, { 121, 57, 215 }, { 61, 49, 166 },
- { 28, 36, 114 }, { 12, 25, 76 }, { 3, 16, 42 },
-
- // UV plane - Intra
- // Band 0
- { 214, 49, 220 }, { 132, 63, 188 }, { 42, 65, 137 },
- // Band 1
- { 85, 137, 221 }, { 104, 131, 216 }, { 49, 111, 192 },
- { 21, 87, 155 }, { 2, 49, 87 }, { 1, 16, 28 },
- // Band 2
- { 89, 163, 230 }, { 90, 137, 220 }, { 29, 100, 183 },
- { 10, 70, 135 }, { 2, 42, 81 }, { 1, 17, 33 },
- // Band 3
- { 108, 167, 237 }, { 55, 133, 222 }, { 15, 97, 179 },
- { 4, 72, 135 }, { 1, 45, 85 }, { 1, 19, 38 },
- // Band 4
- { 124, 146, 240 }, { 66, 124, 224 }, { 17, 88, 175 },
- { 4, 58, 122 }, { 1, 36, 75 }, { 1, 18, 37 },
- // Band 5
- { 141, 79, 241 }, { 126, 70, 227 }, { 66, 58, 182 },
- { 30, 44, 136 }, { 12, 34, 96 }, { 2, 20, 47 },
-
- // UV plane - Inter
- // Band 0
- { 229, 99, 249 }, { 143, 111, 235 }, { 46, 109, 192 },
- // Band 1
- { 82, 158, 236 }, { 94, 146, 224 }, { 25, 117, 191 },
- { 9, 87, 149 }, { 3, 56, 99 }, { 1, 33, 57 },
- // Band 2
- { 83, 167, 237 }, { 68, 145, 222 }, { 10, 103, 177 },
- { 2, 72, 131 }, { 1, 41, 79 }, { 1, 20, 39 },
- // Band 3
- { 99, 167, 239 }, { 47, 141, 224 }, { 10, 104, 178 },
- { 2, 73, 133 }, { 1, 44, 85 }, { 1, 22, 47 },
- // Band 4
- { 127, 145, 243 }, { 71, 129, 228 }, { 17, 93, 177 },
- { 3, 61, 124 }, { 1, 41, 84 }, { 1, 21, 52 },
- // Band 5
- { 157, 78, 244 }, { 140, 72, 231 }, { 69, 58, 184 },
- { 31, 44, 137 }, { 14, 38, 105 }, { 8, 23, 61 }
-};
-
-vp9_prob default_coef_probs_8x8[COEFF_PROB_SIZE][COEFF_PROB_NUM] = {
- // Y plane - Intra
- // Band 0
- { 125, 34, 187 }, { 52, 41, 133 }, { 6, 31, 56 },
- // Band 1
- { 37, 109, 153 }, { 51, 102, 147 }, { 23, 87, 128 },
- { 8, 67, 101 }, { 1, 41, 63 }, { 1, 19, 29 },
- // Band 2
- { 31, 154, 185 }, { 17, 127, 175 }, { 6, 96, 145 },
- { 2, 73, 114 }, { 1, 51, 82 }, { 1, 28, 45 },
- // Band 3
- { 23, 163, 200 }, { 10, 131, 185 }, { 2, 93, 148 },
- { 1, 67, 111 }, { 1, 41, 69 }, { 1, 14, 24 },
- // Band 4
- { 29, 176, 217 }, { 12, 145, 201 }, { 3, 101, 156 },
- { 1, 69, 111 }, { 1, 39, 63 }, { 1, 14, 23 },
- // Band 5
- { 57, 192, 233 }, { 25, 154, 215 }, { 6, 109, 167 },
- { 3, 78, 118 }, { 1, 48, 69 }, { 1, 21, 29 },
-
- // Y plane - Inter
- // Band 0
- { 202, 105, 245 }, { 108, 106, 216 }, { 18, 90, 144 },
- // Band 1
- { 33, 172, 219 }, { 64, 149, 206 }, { 14, 117, 177 },
- { 5, 90, 141 }, { 2, 61, 95 }, { 1, 37, 57 },
- // Band 2
- { 33, 179, 220 }, { 11, 140, 198 }, { 1, 89, 148 },
- { 1, 60, 104 }, { 1, 33, 57 }, { 1, 12, 21 },
- // Band 3
- { 30, 181, 221 }, { 8, 141, 198 }, { 1, 87, 145 },
- { 1, 58, 100 }, { 1, 31, 55 }, { 1, 12, 20 },
- // Band 4
- { 32, 186, 224 }, { 7, 142, 198 }, { 1, 86, 143 },
- { 1, 58, 100 }, { 1, 31, 55 }, { 1, 12, 22 },
- // Band 5
- { 57, 192, 227 }, { 20, 143, 204 }, { 3, 96, 154 },
- { 1, 68, 112 }, { 1, 42, 69 }, { 1, 19, 32 },
-
- // UV plane - Intra
- // Band 0
- { 212, 35, 215 }, { 113, 47, 169 }, { 29, 48, 105 },
- // Band 1
- { 74, 129, 203 }, { 106, 120, 203 }, { 49, 107, 178 },
- { 19, 84, 144 }, { 4, 50, 84 }, { 1, 15, 25 },
- // Band 2
- { 71, 172, 217 }, { 44, 141, 209 }, { 15, 102, 173 },
- { 6, 76, 133 }, { 2, 51, 89 }, { 1, 24, 42 },
- // Band 3
- { 64, 185, 231 }, { 31, 148, 216 }, { 8, 103, 175 },
- { 3, 74, 131 }, { 1, 46, 81 }, { 1, 18, 30 },
- // Band 4
- { 65, 196, 235 }, { 25, 157, 221 }, { 5, 105, 174 },
- { 1, 67, 120 }, { 1, 38, 69 }, { 1, 15, 30 },
- // Band 5
- { 65, 204, 238 }, { 30, 156, 224 }, { 7, 107, 177 },
- { 2, 70, 124 }, { 1, 42, 73 }, { 1, 18, 34 },
-
- // UV Plane - Inter
- // Band 0
- { 225, 86, 251 }, { 144, 104, 235 }, { 42, 99, 181 },
- // Band 1
- { 85, 175, 239 }, { 112, 165, 229 }, { 29, 136, 200 },
- { 12, 103, 162 }, { 6, 77, 123 }, { 2, 53, 84 },
- // Band 2
- { 75, 183, 239 }, { 30, 155, 221 }, { 3, 106, 171 },
- { 1, 74, 128 }, { 1, 44, 76 }, { 1, 17, 28 },
- // Band 3
- { 73, 185, 240 }, { 27, 159, 222 }, { 2, 107, 172 },
- { 1, 75, 127 }, { 1, 42, 73 }, { 1, 17, 29 },
- // Band 4
- { 62, 190, 238 }, { 21, 159, 222 }, { 2, 107, 172 },
- { 1, 72, 122 }, { 1, 40, 71 }, { 1, 18, 32 },
- // Band 5
- { 61, 199, 240 }, { 27, 161, 226 }, { 4, 113, 180 },
- { 1, 76, 129 }, { 1, 46, 80 }, { 1, 23, 41 }
-};
-
-vp9_prob default_coef_probs_16x16[COEFF_PROB_SIZE][COEFF_PROB_NUM] = {
- // Y plane - Intra
- // Band 0
- { 7, 27, 153 }, { 5, 30, 95 }, { 1, 16, 30 },
- // Band 1
- { 50, 75, 127 }, { 57, 75, 124 }, { 27, 67, 108 },
- { 10, 54, 86 }, { 1, 33, 52 }, { 1, 12, 18 },
- // Band 2
- { 43, 125, 151 }, { 26, 108, 148 }, { 7, 83, 122 },
- { 2, 59, 89 }, { 1, 38, 60 }, { 1, 17, 27 },
- // Band 3
- { 23, 144, 163 }, { 13, 112, 154 }, { 2, 75, 117 },
- { 1, 50, 81 }, { 1, 31, 51 }, { 1, 14, 23 },
- // Band 4
- { 18, 162, 185 }, { 6, 123, 171 }, { 1, 78, 125 },
- { 1, 51, 86 }, { 1, 31, 54 }, { 1, 14, 23 },
- // Band 5
- { 15, 199, 227 }, { 3, 150, 204 }, { 1, 91, 146 },
- { 1, 55, 95 }, { 1, 30, 53 }, { 1, 11, 20 },
-
- // Y plane - Inter
- // Band 0
- { 19, 55, 240 }, { 19, 59, 196 }, { 3, 52, 105 },
- // Band 1
- { 41, 166, 207 }, { 104, 153, 199 }, { 31, 123, 181 },
- { 14, 101, 152 }, { 5, 72, 106 }, { 1, 36, 52 },
- // Band 2
- { 35, 176, 211 }, { 12, 131, 190 }, { 2, 88, 144 },
- { 1, 60, 101 }, { 1, 36, 60 }, { 1, 16, 28 },
- // Band 3
- { 28, 183, 213 }, { 8, 134, 191 }, { 1, 86, 142 },
- { 1, 56, 96 }, { 1, 30, 53 }, { 1, 12, 20 },
- // Band 4
- { 20, 190, 215 }, { 4, 135, 192 }, { 1, 84, 139 },
- { 1, 53, 91 }, { 1, 28, 49 }, { 1, 11, 20 },
- // Band 5
- { 13, 196, 216 }, { 2, 137, 192 }, { 1, 86, 143 },
- { 1, 57, 99 }, { 1, 32, 56 }, { 1, 13, 24 },
-
- // UV plane - Intra
- // Band 0
- { 211, 29, 217 }, { 96, 47, 156 }, { 22, 43, 87 },
- // Band 1
- { 78, 120, 193 }, { 111, 116, 186 }, { 46, 102, 164 },
- { 15, 80, 128 }, { 2, 49, 76 }, { 1, 18, 28 },
- // Band 2
- { 71, 161, 203 }, { 42, 132, 192 }, { 10, 98, 150 },
- { 3, 69, 109 }, { 1, 44, 70 }, { 1, 18, 29 },
- // Band 3
- { 57, 186, 211 }, { 30, 140, 196 }, { 4, 93, 146 },
- { 1, 62, 102 }, { 1, 38, 65 }, { 1, 16, 27 },
- // Band 4
- { 47, 199, 217 }, { 14, 145, 196 }, { 1, 88, 142 },
- { 1, 57, 98 }, { 1, 36, 62 }, { 1, 15, 26 },
- // Band 5
- { 26, 219, 229 }, { 5, 155, 207 }, { 1, 94, 151 },
- { 1, 60, 104 }, { 1, 36, 62 }, { 1, 16, 28 },
-
- // UV plane - Inter
- // Band 0
- { 233, 29, 248 }, { 146, 47, 220 }, { 43, 52, 140 },
- // Band 1
- { 100, 163, 232 }, { 179, 161, 222 }, { 63, 142, 204 },
- { 37, 113, 174 }, { 26, 89, 137 }, { 18, 68, 97 },
- // Band 2
- { 85, 181, 230 }, { 32, 146, 209 }, { 7, 100, 164 },
- { 3, 71, 121 }, { 1, 45, 77 }, { 1, 18, 30 },
- // Band 3
- { 65, 187, 230 }, { 20, 148, 207 }, { 2, 97, 159 },
- { 1, 68, 116 }, { 1, 40, 70 }, { 1, 14, 29 },
- // Band 4
- { 40, 194, 227 }, { 8, 147, 204 }, { 1, 94, 155 },
- { 1, 65, 112 }, { 1, 39, 66 }, { 1, 14, 26 },
- // Band 5
- { 16, 208, 228 }, { 3, 151, 207 }, { 1, 98, 160 },
- { 1, 67, 117 }, { 1, 41, 74 }, { 1, 17, 31 }
-};
-
-vp9_prob default_coef_probs_32x32[COEFF_PROB_SIZE][COEFF_PROB_NUM] = {
- // Y plane - Intra
- // Band 0
- { 17, 38, 140 }, { 7, 34, 80 }, { 1, 17, 29 },
- // Band 1
- { 37, 75, 128 }, { 41, 76, 128 }, { 26, 66, 116 },
- { 12, 52, 94 }, { 2, 32, 55 }, { 1, 10, 16 },
- // Band 2
- { 50, 127, 154 }, { 37, 109, 152 }, { 16, 82, 121 },
- { 5, 59, 85 }, { 1, 35, 54 }, { 1, 13, 20 },
- //Band 3
- { 40, 142, 167 }, { 17, 110, 157 }, { 2, 71, 112 },
- { 1, 44, 72 }, { 1, 27, 45 }, { 1, 11, 17 },
- // Band 4
- { 30, 175, 188 }, { 9, 124, 169 }, { 1, 74, 116 },
- { 1, 48, 78 }, { 1, 30, 49 }, { 1, 11, 18 },
- // Band 5
- { 10, 222, 223 }, { 2, 150, 194 }, { 1, 83, 128 },
- { 1, 48, 79 }, { 1, 27, 45 }, { 1, 11, 17 },
-
- // Y plane - Inter
- // Band 0
- { 36, 41, 235 }, { 29, 36, 193 }, { 10, 27, 111 },
- // Band 1
- { 85, 165, 222 }, { 177, 162, 215 }, { 110, 135, 195 },
- { 57, 113, 168 }, { 23, 83, 120 }, { 10, 49, 61 },
- // Band 2
- { 85, 190, 223 }, { 36, 139, 200 }, { 5, 90, 146 },
- { 1, 60, 103 }, { 1, 38, 65 }, { 1, 18, 30 },
- // Band 3
- { 72, 202, 223 }, { 23, 141, 199 }, { 2, 86, 140 },
- { 1, 56, 97 }, { 1, 36, 61 }, { 1, 16, 27 },
- // Band 4
- { 55, 218, 225 }, { 13, 145, 200 }, { 1, 86, 141 },
- { 1, 57, 99 }, { 1, 35, 61 }, { 1, 13, 22 },
- // Band 5
- { 15, 235, 212 }, { 1, 132, 184 }, { 1, 84, 139 },
- { 1, 57, 97 }, { 1, 34, 56 }, { 1, 14, 23 },
-
- // UV plane - Intra
- // Band 0
- { 181, 21, 201 }, { 61, 37, 123 }, { 10, 38, 71 },
- // Band 1
- { 47, 106, 172 }, { 95, 104, 173 }, { 42, 93, 159 },
- { 18, 77, 131 }, { 4, 50, 81 }, { 1, 17, 23 },
- // Band 2
- { 62, 147, 199 }, { 44, 130, 189 }, { 28, 102, 154 },
- { 18, 75, 115 }, { 2, 44, 65 }, { 1, 12, 19 },
- // Band 3
- { 55, 153, 210 }, { 24, 130, 194 }, { 3, 93, 146 },
- { 1, 61, 97 }, { 1, 31, 50 }, { 1, 10, 16 },
- // Band 4
- { 49, 186, 223 }, { 17, 148, 204 }, { 1, 96, 142 },
- { 1, 53, 83 }, { 1, 26, 44 }, { 1, 11, 17 },
- // Band 5
- { 13, 217, 212 }, { 2, 136, 180 }, { 1, 78, 124 },
- { 1, 50, 83 }, { 1, 29, 49 }, { 1, 14, 23 },
-
- // UV plane - Inter
- // Band 0
- { 197, 13, 247 }, { 82, 17, 222 }, { 25, 17, 162 },
- // Band 1
- { 126, 186, 247 }, { 234, 191, 243 }, { 176, 177, 234 },
- { 104, 158, 220 }, { 66, 128, 186 }, { 55, 90, 137 },
- // Band 2
- { 111, 197, 242 }, { 46, 158, 219 }, { 9, 104, 171 },
- { 2, 65, 125 }, { 1, 44, 80 }, { 1, 17, 91 },
- // Band 3
- { 104, 208, 245 }, { 39, 168, 224 }, { 3, 109, 162 },
- { 1, 79, 124 }, { 1, 50, 102 }, { 1, 43, 102 },
- // Band 4
- { 84, 220, 246 }, { 31, 177, 231 }, { 2, 115, 180 },
- { 1, 79, 134 }, { 1, 55, 77 }, { 1, 60, 79 },
- // Band 5
- { 43, 243, 240 }, { 8, 180, 217 }, { 1, 115, 166 },
- { 1, 84, 121 }, { 1, 51, 67 }, { 1, 16, 6 }
-
-};
-
-#define FC_INTRA_OFFSET 0
-#define FC_INTRA_SIZE 1664
-
-#define FC_INTER_OFFSET 1664
-#define FC_INTER_SIZE 384
-
-#define FC_SKIP_OFFSET 1664
-#define FC_SKIP_SIZE 3
-
-void intel_init_default_vp9_probs(FRAME_CONTEXT *frame_context)
-{
- if (!frame_context)
- return;
-
- frame_context->tx_probs = default_tx_probs;
- //dummy 52
- memcpy(frame_context->coeff_probs4x4, default_coef_probs_4x4,
- sizeof(default_coef_probs_4x4));
- memcpy(frame_context->coeff_probs8x8, default_coef_probs_8x8,
- sizeof(default_coef_probs_8x8));
- memcpy(frame_context->coeff_probs16x16, default_coef_probs_16x16,
- sizeof(default_coef_probs_16x16));
- memcpy(frame_context->coeff_probs32x32, default_coef_probs_32x32,
- sizeof(default_coef_probs_16x16));
- //dummy 16
- memcpy(frame_context->skip_probs, default_skip_probs,
- sizeof(default_skip_probs));
- memcpy(frame_context->inter_mode_probs, default_inter_mode_probs,
- sizeof(default_inter_mode_probs));
- memcpy(frame_context->switchable_interp_prob,
- default_switchable_interp_prob,
- sizeof(default_switchable_interp_prob));
- memcpy(frame_context->intra_inter_prob, default_intra_inter_p,
- sizeof(default_intra_inter_p));
- memcpy(frame_context->comp_inter_prob, default_comp_inter_p,
- sizeof(default_comp_inter_p));
- memcpy(frame_context->single_ref_prob, default_single_ref_p,
- sizeof(default_single_ref_p));
- memcpy(frame_context->comp_ref_prob, default_comp_ref_p,
- sizeof(default_comp_ref_p));
- memcpy(frame_context->y_mode_prob, default_if_y_probs,
- sizeof(default_if_y_probs));
- memcpy(frame_context->partition_prob, default_partition_probs,
- sizeof(default_partition_probs));
- frame_context->nmvc = default_nmv_context;
- //dummy 47
- memcpy(frame_context->uv_mode_prob, default_if_uv_probs,
- sizeof(default_if_uv_probs));
- memcpy(frame_context->seg_tree_probs, default_seg_tree_probs,
- sizeof(default_seg_tree_probs));
- memcpy(frame_context->seg_pred_probs, default_seg_pred_probs,
- sizeof(default_seg_pred_probs));
- return;
-}
-
-
-void intel_vp9_copy_frame_context(FRAME_CONTEXT *dst,
- FRAME_CONTEXT *src,
- bool inter_flag)
-{
- unsigned char *fc_dst, *fc_src;
-
- if (!dst || !src)
- return;
-
- fc_dst = (unsigned char *)dst;
- fc_src = (unsigned char *)src;
- /* update the prob related with tx_mode/tx_coeff */
- memcpy(fc_dst + FC_INTRA_OFFSET, fc_src + FC_INTRA_OFFSET, FC_INTRA_SIZE);
-
- if (inter_flag) {
- /* update the prob related with inter-frame */
- memcpy(fc_dst + FC_INTER_OFFSET, fc_src + FC_INTER_OFFSET, FC_INTER_SIZE);
- } else {
- memcpy(fc_dst + FC_SKIP_OFFSET, fc_src + FC_SKIP_OFFSET, FC_SKIP_SIZE);
- }
-}
-
-void intel_update_intra_frame_context(FRAME_CONTEXT *frame_context)
-{
- if (!frame_context)
- return;
-
- memcpy(frame_context->partition_prob, vp9_kf_partition_probs,
- sizeof(vp9_kf_partition_probs));
-
- memcpy(frame_context->uv_mode_prob, vp9_kf_uv_mode_prob,
- sizeof(vp9_kf_uv_mode_prob));
-
-}
-
-struct vp9_write_bit_buffer {
- uint8_t *bit_buffer;
- int bit_offset;
-};
-
-static
-void vp9_wb_write_bit(struct vp9_write_bit_buffer *wb, int bit)
-{
- const int off = wb->bit_offset;
- const int p = off / 8;
- const int q = 7 - off % 8;
- if (q == 7) {
- wb->bit_buffer[p] = bit << q;
- } else {
- wb->bit_buffer[p] &= ~(1 << q);
- wb->bit_buffer[p] |= bit << q;
- }
- wb->bit_offset = off + 1;
-}
-
-static
-void vp9_wb_write_literal(struct vp9_write_bit_buffer *wb, int data, int bits)
-{
- int bit;
- for (bit = bits - 1; bit >= 0; bit--)
- vp9_wb_write_bit(wb, (data >> bit) & 1);
-}
-
-static
-void write_bitdepth_colorspace_sampling(int codec_profile,
- struct vp9_write_bit_buffer *wb)
-{
- int profile = VAProfileVP9Profile0;
- profile = profile + 0;
-
- if (codec_profile >= (VAProfileVP9Profile0 + 2)) {
- /* the bit-depth will be added for VP9Profile2/3 */
- /* this will be added later */
- }
-
- /* Add the default color-space */
- vp9_wb_write_literal(wb, 0, 3);
- vp9_wb_write_bit(wb, 0); // 0: [16, 235] (i.e. xvYCC), 1: [0, 255]
-
- /* the sampling_x/y will be added for VP9Profile1/2/3 later */
-}
-
-#define MAX_TILE_WIDTH_B64 64
-#define MIN_TILE_WIDTH_B64 4
-
-static int get_min_log2_tile_cols(const int sb_cols) {
- int min_log2 = 0;
-
- while ((MAX_TILE_WIDTH_B64 << min_log2) < sb_cols)
- ++min_log2;
-
- return min_log2;
-}
-
-static int get_max_log2_tile_cols(const int sb_cols) {
- int max_log2 = 1;
-
- while ((sb_cols >> max_log2) >= MIN_TILE_WIDTH_B64)
- ++max_log2;
-
- return max_log2 - 1;
-}
-
-
-bool intel_write_uncompressed_header(struct encode_state *encode_state,
- int codec_profile,
- char *header_data,
- int *header_length,
- vp9_header_bitoffset *header_bitoffset)
-{
-#define VP9_SYNC_CODE_0 0x49
-#define VP9_SYNC_CODE_1 0x83
-#define VP9_SYNC_CODE_2 0x42
-
-#define VP9_FRAME_MARKER 0x2
-
-#define REFS_PER_FRAME 3
-
-#define REF_FRAMES_LOG2 3
-#define REF_FRAMES (1 << REF_FRAMES_LOG2)
-
-#define VP9_KEY_FRAME 0
-
- VAEncPictureParameterBufferVP9 *pic_param;
- VAEncMiscParameterTypeVP9PerSegmantParam *seg_param = NULL;
- struct vp9_write_bit_buffer *wb, vp9_wb;
-
- if (!encode_state->pic_param_ext || !encode_state->pic_param_ext->buffer)
- return false;
-
- if (!header_data || !header_bitoffset || !header_length)
- return false;
-
- memset(header_bitoffset, 0, sizeof(vp9_header_bitoffset));
-
- pic_param = (VAEncPictureParameterBufferVP9 *)encode_state->pic_param_ext->buffer;
-
- if (encode_state->q_matrix)
- seg_param = (VAEncMiscParameterTypeVP9PerSegmantParam *) encode_state->q_matrix->buffer;
-
- vp9_wb.bit_buffer = (uint8_t *)header_data;
- vp9_wb.bit_offset = 0;
- wb = &vp9_wb;
- vp9_wb_write_literal(wb, VP9_FRAME_MARKER, 2);
-
- if (codec_profile == VAProfileVP9Profile0) {
- vp9_wb_write_literal(wb, 0, 2);
- } else {
- /* Other VP9Profile1/2/3 will be added later */
- }
-
- vp9_wb_write_bit(wb, 0); // show_existing_frame
- vp9_wb_write_bit(wb, pic_param->pic_flags.bits.frame_type);
- vp9_wb_write_bit(wb, pic_param->pic_flags.bits.show_frame);
- vp9_wb_write_bit(wb, pic_param->pic_flags.bits.error_resilient_mode);
-
- if (pic_param->pic_flags.bits.frame_type == VP9_KEY_FRAME) {
- vp9_wb_write_literal(wb, VP9_SYNC_CODE_0, 8);
- vp9_wb_write_literal(wb, VP9_SYNC_CODE_1, 8);
- vp9_wb_write_literal(wb, VP9_SYNC_CODE_2, 8);
-
- write_bitdepth_colorspace_sampling(codec_profile, wb);
-
- /* write the encoded frame size */
- vp9_wb_write_literal(wb, pic_param->frame_width_dst - 1, 16);
- vp9_wb_write_literal(wb, pic_param->frame_height_dst - 1, 16);
- /* write display size */
- if ((pic_param->frame_width_dst != pic_param->frame_width_src) ||
- (pic_param->frame_height_dst != pic_param->frame_height_src)) {
- vp9_wb_write_bit(wb, 1);
- vp9_wb_write_literal(wb, pic_param->frame_width_src - 1, 16);
- vp9_wb_write_literal(wb, pic_param->frame_height_src - 1, 16);
- } else
- vp9_wb_write_bit(wb, 0);
- } else {
- /* for the non-Key frame */
- if (!pic_param->pic_flags.bits.show_frame)
- vp9_wb_write_bit(wb, pic_param->pic_flags.bits.intra_only);
-
- if (!pic_param->pic_flags.bits.error_resilient_mode)
- vp9_wb_write_literal(wb, pic_param->pic_flags.bits.reset_frame_context, 2);
-
- if (pic_param->pic_flags.bits.intra_only) {
- vp9_wb_write_literal(wb, VP9_SYNC_CODE_0, 8);
- vp9_wb_write_literal(wb, VP9_SYNC_CODE_1, 8);
- vp9_wb_write_literal(wb, VP9_SYNC_CODE_2, 8);
-
- /* Add the bit_depth for VP9Profile1/2/3 */
- /* write the refreshed_frame_flags */
- vp9_wb_write_literal(wb, pic_param->refresh_frame_flags, REF_FRAMES);
- /* write the encoded frame size */
- vp9_wb_write_literal(wb, pic_param->frame_width_dst - 1, 16);
- vp9_wb_write_literal(wb, pic_param->frame_height_dst - 1, 16);
- /* write display size */
- if ((pic_param->frame_width_dst != pic_param->frame_width_src) ||
- (pic_param->frame_height_dst != pic_param->frame_height_src)) {
- vp9_wb_write_bit(wb, 1);
- vp9_wb_write_literal(wb, pic_param->frame_width_src - 1, 16);
- vp9_wb_write_literal(wb, pic_param->frame_height_src - 1, 16);
- } else
- vp9_wb_write_bit(wb, 0);
-
- } else {
- /* The refresh_frame_map is for the next frame so that it can select Last/Godlen/Alt ref_index */
- /*
- if ((pic_param->ref_flags.bits.ref_frame_ctrl_l0) & (1 << 0))
- refresh_flags = 1 << pic_param->ref_flags.bits.ref_last_idx;
- if ((pic_param->ref_flags.bits.ref_frame_ctrl_l0) & (1 << 0))
- refresh_flags = 1 << pic_param->ref_flags.bits.ref_last_idx;
- if ((pic_param->ref_flags.bits.ref_frame_ctrl_l0) & (1 << 0))
- refresh_flags = 1 << pic_param->ref_flags.bits.ref_last_idx;
- */
- vp9_wb_write_literal(wb, pic_param->refresh_frame_flags, REF_FRAMES);
-
- vp9_wb_write_literal(wb, pic_param->ref_flags.bits.ref_last_idx, REF_FRAMES_LOG2);
- vp9_wb_write_bit(wb, pic_param->ref_flags.bits.ref_last_sign_bias);
- vp9_wb_write_literal(wb, pic_param->ref_flags.bits.ref_gf_idx, REF_FRAMES_LOG2);
- vp9_wb_write_bit(wb, pic_param->ref_flags.bits.ref_gf_sign_bias);
- vp9_wb_write_literal(wb, pic_param->ref_flags.bits.ref_arf_idx, REF_FRAMES_LOG2);
- vp9_wb_write_bit(wb, pic_param->ref_flags.bits.ref_arf_sign_bias);
-
- /* write three bits with zero so that it can parse width/height directly */
- vp9_wb_write_literal(wb, 0, 3);
- vp9_wb_write_literal(wb, pic_param->frame_width_dst - 1, 16);
- vp9_wb_write_literal(wb, pic_param->frame_height_dst - 1, 16);
-
- /* write display size */
- if ((pic_param->frame_width_dst != pic_param->frame_width_src) ||
- (pic_param->frame_height_dst != pic_param->frame_height_src)) {
-
- vp9_wb_write_bit(wb, 1);
- vp9_wb_write_literal(wb, pic_param->frame_width_src - 1, 16);
- vp9_wb_write_literal(wb, pic_param->frame_height_src - 1, 16);
- } else
- vp9_wb_write_bit(wb, 0);
-
- vp9_wb_write_bit(wb, pic_param->pic_flags.bits.allow_high_precision_mv);
-
-#define SWITCHABLE_FILTER 4
-#define FILTER_MASK 3
-
- if (pic_param->pic_flags.bits.mcomp_filter_type == SWITCHABLE_FILTER)
- vp9_wb_write_bit(wb, 1);
- else {
- const int filter_to_literal[4] = { 1, 0, 2, 3 };
- uint8_t filter_flag = pic_param->pic_flags.bits.mcomp_filter_type;
- filter_flag = filter_flag & FILTER_MASK;
- vp9_wb_write_bit(wb, 0);
- vp9_wb_write_literal(wb, filter_to_literal[filter_flag], 2);
- }
- }
- }
-
- /* write refresh_frame_context/paralle frame_decoding */
- if (!pic_param->pic_flags.bits.error_resilient_mode) {
- vp9_wb_write_bit(wb, pic_param->pic_flags.bits.refresh_frame_context);
- vp9_wb_write_bit(wb, pic_param->pic_flags.bits.frame_parallel_decoding_mode);
- }
-
- vp9_wb_write_literal(wb, pic_param->pic_flags.bits.frame_context_idx, 2);
-
- /* write loop filter */
- header_bitoffset->bit_offset_lf_level = wb->bit_offset;
- vp9_wb_write_literal(wb, pic_param->filter_level, 6);
- vp9_wb_write_literal(wb, pic_param->sharpness_level, 3);
-
- {
- int i, mode_flag;
-
- vp9_wb_write_bit(wb, 1);
- vp9_wb_write_bit(wb, 1);
- header_bitoffset->bit_offset_ref_lf_delta = wb->bit_offset;
- for (i = 0; i < 4; i++) {
- /*
- * This check is skipped to prepare the bit_offset_lf_ref
- if (pic_param->ref_lf_delta[i] == 0) {
- vp9_wb_write_bit(wb, 0);
- continue;
- }
- */
-
- vp9_wb_write_bit(wb, 1);
- mode_flag = pic_param->ref_lf_delta[i];
- if (mode_flag >=0) {
- vp9_wb_write_literal(wb, mode_flag & (0x3F), 6);
- vp9_wb_write_bit(wb, 0);
- } else {
- mode_flag = -mode_flag;
- vp9_wb_write_literal(wb, mode_flag & (0x3F), 6);
- vp9_wb_write_bit(wb, 1);
- }
- }
-
- header_bitoffset->bit_offset_mode_lf_delta = wb->bit_offset;
- for (i = 0; i < 2; i++) {
- /*
- * This check is skipped to prepare the bit_offset_lf_ref
- if (pic_param->mode_lf_delta[i] == 0) {
- vp9_wb_write_bit(wb, 0);
- continue;
- }
- */
- vp9_wb_write_bit(wb, 1);
- mode_flag = pic_param->mode_lf_delta[i];
- if (mode_flag >=0) {
- vp9_wb_write_literal(wb, mode_flag & (0x3F), 6);
- vp9_wb_write_bit(wb, 0);
- } else {
- mode_flag = -mode_flag;
- vp9_wb_write_literal(wb, mode_flag & (0x3F), 6);
- vp9_wb_write_bit(wb, 1);
- }
- }
- }
-
- /* write basic quantizer */
- header_bitoffset->bit_offset_qindex = wb->bit_offset;
- vp9_wb_write_literal(wb, pic_param->luma_ac_qindex, 8);
- if (pic_param->luma_dc_qindex_delta) {
- int delta_q = pic_param->luma_dc_qindex_delta;
- vp9_wb_write_bit(wb, 1);
- vp9_wb_write_literal(wb, abs(delta_q), 4);
- vp9_wb_write_bit(wb, delta_q < 0);
- } else
- vp9_wb_write_bit(wb, 0);
-
- if (pic_param->chroma_dc_qindex_delta) {
- int delta_q = pic_param->chroma_dc_qindex_delta;
- vp9_wb_write_bit(wb, 1);
- vp9_wb_write_literal(wb, abs(delta_q), 4);
- vp9_wb_write_bit(wb, delta_q < 0);
- } else
- vp9_wb_write_bit(wb, 0);
-
- if (pic_param->chroma_ac_qindex_delta) {
- int delta_q = pic_param->chroma_ac_qindex_delta;
- vp9_wb_write_bit(wb, 1);
- vp9_wb_write_literal(wb, abs(delta_q), 4);
- vp9_wb_write_bit(wb, delta_q < 0);
- } else
- vp9_wb_write_bit(wb, 0);
-
- vp9_wb_write_bit(wb, pic_param->pic_flags.bits.segmentation_enabled);
- if (pic_param->pic_flags.bits.segmentation_enabled) {
- int i;
-
-#define VP9_MAX_PROB 255
- vp9_wb_write_bit(wb, pic_param->pic_flags.bits.segmentation_update_map);
- if (pic_param->pic_flags.bits.segmentation_update_map) {
-
- header_bitoffset->bit_offset_segmentation = wb->bit_offset;
- /* write the seg_tree_probs */
- /* segment_tree_probs/segment_pred_probs are not passed.
- * So the hard-coded prob is writen
- */
- for (i = 0; i < 7; i++) {
- vp9_wb_write_bit(wb, 1);
- vp9_wb_write_literal(wb, VP9_MAX_PROB, 8);
- }
-
- vp9_wb_write_bit(wb, pic_param->pic_flags.bits.segmentation_temporal_update);
- if (pic_param->pic_flags.bits.segmentation_temporal_update) {
- for (i = 0; i < 3; i++) {
- vp9_wb_write_bit(wb, 1);
- vp9_wb_write_literal(wb, VP9_MAX_PROB, 8);
- }
- }
- }
-
- /* write the segment_data info */
- if (seg_param == NULL) {
- vp9_wb_write_bit(wb, 0);
- } else {
- VAEncSegParamVP9 *seg_data;
- int seg_delta;
-
- /* update_data */
- vp9_wb_write_bit(wb, 1);
- /* abs_delta should be zero */
- vp9_wb_write_bit(wb, 0);
- for (i = 0; i < 8; i++) {
- seg_data = &seg_param->seg_data[i];
-
- /* The segment qindex delta */
- /* This check is skipped */
- /* if (seg_data->segment_qindex_delta != 0) */
- if (1) {
- vp9_wb_write_bit(wb, 1);
- seg_delta = seg_data->segment_qindex_delta;
- vp9_wb_write_literal(wb, abs(seg_delta), 8);
- vp9_wb_write_bit(wb, seg_delta < 0);
- } else
- vp9_wb_write_bit(wb, 0);
-
- /* The segment lf delta */
- /* if (seg_data->segment_lf_level_delta != 0) */
- if (1) {
- vp9_wb_write_bit(wb, 1);
- seg_delta = seg_data->segment_lf_level_delta;
- vp9_wb_write_literal(wb, abs(seg_delta), 6);
- vp9_wb_write_bit(wb, seg_delta < 0);
- } else
- vp9_wb_write_bit(wb, 0);
-
- /* segment reference flag */
- vp9_wb_write_bit(wb, seg_data->seg_flags.bits.segment_reference_enabled);
- if (seg_data->seg_flags.bits.segment_reference_enabled)
- {
- vp9_wb_write_literal(wb, seg_data->seg_flags.bits.segment_reference, 2);
- }
-
- /* segment skip flag */
- vp9_wb_write_bit(wb, seg_data->seg_flags.bits.segment_reference_skipped);
- }
- }
- }
-
- /* write tile info */
- {
- int sb_cols = (pic_param->frame_width_dst + 63) / 64;
- int min_log2_tile_cols, max_log2_tile_cols;
- int col_data;
-
- /* write tile column info */
- min_log2_tile_cols = get_min_log2_tile_cols(sb_cols);
- max_log2_tile_cols = get_max_log2_tile_cols(sb_cols);
-
- col_data = pic_param->log2_tile_columns - min_log2_tile_cols;
- while(col_data--) {
- vp9_wb_write_bit(wb, 1);
- }
- if (pic_param->log2_tile_columns < max_log2_tile_cols)
- vp9_wb_write_bit(wb, 0);
-
- /* write tile row info */
- vp9_wb_write_bit(wb, pic_param->log2_tile_rows);
- if (pic_param->log2_tile_rows)
- vp9_wb_write_bit(wb, (pic_param->log2_tile_rows != 1));
- }
-
- /* get the bit_offset of the first partition size */
- header_bitoffset->bit_offset_first_partition_size = wb->bit_offset;
-
- /* reserve the space for writing the first partitions ize */
- vp9_wb_write_literal(wb, 0, 16);
-
- *header_length = (wb->bit_offset + 7) / 8;
-
- return true;
-}
-
-const unsigned short vp9_quant_dc[256] = {
- 4, 8, 8, 9, 10, 11, 12, 12,
- 13, 14, 15, 16, 17, 18, 19, 19,
- 20, 21, 22, 23, 24, 25, 26, 26,
- 27, 28, 29, 30, 31, 32, 32, 33,
- 34, 35, 36, 37, 38, 38, 39, 40,
- 41, 42, 43, 43, 44, 45, 46, 47,
- 48, 48, 49, 50, 51, 52, 53, 53,
- 54, 55, 56, 57, 57, 58, 59, 60,
- 61, 62, 62, 63, 64, 65, 66, 66,
- 67, 68, 69, 70, 70, 71, 72, 73,
- 74, 74, 75, 76, 77, 78, 78, 79,
- 80, 81, 81, 82, 83, 84, 85, 85,
- 87, 88, 90, 92, 93, 95, 96, 98,
- 99, 101, 102, 104, 105, 107, 108, 110,
- 111, 113, 114, 116, 117, 118, 120, 121,
- 123, 125, 127, 129, 131, 134, 136, 138,
- 140, 142, 144, 146, 148, 150, 152, 154,
- 156, 158, 161, 164, 166, 169, 172, 174,
- 177, 180, 182, 185, 187, 190, 192, 195,
- 199, 202, 205, 208, 211, 214, 217, 220,
- 223, 226, 230, 233, 237, 240, 243, 247,
- 250, 253, 257, 261, 265, 269, 272, 276,
- 280, 284, 288, 292, 296, 300, 304, 309,
- 313, 317, 322, 326, 330, 335, 340, 344,
- 349, 354, 359, 364, 369, 374, 379, 384,
- 389, 395, 400, 406, 411, 417, 423, 429,
- 435, 441, 447, 454, 461, 467, 475, 482,
- 489, 497, 505, 513, 522, 530, 539, 549,
- 559, 569, 579, 590, 602, 614, 626, 640,
- 654, 668, 684, 700, 717, 736, 755, 775,
- 796, 819, 843, 869, 896, 925, 955, 988,
- 1022, 1058, 1098, 1139, 1184, 1232, 1282, 1336,
-};
-
-const unsigned short vp9_quant_ac[256] = {
- 4, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102,
- 104, 106, 108, 110, 112, 114, 116, 118,
- 120, 122, 124, 126, 128, 130, 132, 134,
- 136, 138, 140, 142, 144, 146, 148, 150,
- 152, 155, 158, 161, 164, 167, 170, 173,
- 176, 179, 182, 185, 188, 191, 194, 197,
- 200, 203, 207, 211, 215, 219, 223, 227,
- 231, 235, 239, 243, 247, 251, 255, 260,
- 265, 270, 275, 280, 285, 290, 295, 300,
- 305, 311, 317, 323, 329, 335, 341, 347,
- 353, 359, 366, 373, 380, 387, 394, 401,
- 408, 416, 424, 432, 440, 448, 456, 465,
- 474, 483, 492, 501, 510, 520, 530, 540,
- 550, 560, 571, 582, 593, 604, 615, 627,
- 639, 651, 663, 676, 689, 702, 715, 729,
- 743, 757, 771, 786, 801, 816, 832, 848,
- 864, 881, 898, 915, 933, 951, 969, 988,
- 1007, 1026, 1046, 1066, 1087, 1108, 1129, 1151,
- 1173, 1196, 1219, 1243, 1267, 1292, 1317, 1343,
- 1369, 1396, 1423, 1451, 1479, 1508, 1537, 1567,
- 1597, 1628, 1660, 1692, 1725, 1759, 1793, 1828,
-};
diff --git a/src/vp9_probs.h b/src/vp9_probs.h
deleted file mode 100644
index d9ff805..0000000
--- a/src/vp9_probs.h
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * Copyright © 2015 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-/*
- * This file defines some vp9 probability tables, and
- * they are ported from libvpx (https://github.com/webmproject/libvpx/).
- * The original copyright and licence statement as below.
- */
-
-/*
- * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef VP9_PROBS_H
-#define VP9_PROBS_H
-
-#include <stdbool.h>
-
-#define TX_SIZE_CONTEXTS 2
-#define TX_SIZES 4
-#define PLANE_TYPES 2
-#define SKIP_CONTEXTS 3
-#define INTER_MODE_CONTEXTS 7
-#define INTER_MODES 4
-#define SWITCHABLE_FILTERS 3
-#define SWITCHABLE_FILTER_CONTEXTS (SWITCHABLE_FILTERS + 1)
-#define MAX_SEGMENTS 8
-#define PREDICTION_PROBS 3
-#define SEG_TREE_PROBS (MAX_SEGMENTS-1)
-#define MV_JOINTS 4
-#define INTRA_INTER_CONTEXTS 4
-#define COMP_INTER_CONTEXTS 5
-#define REF_CONTEXTS 5
-#define BLOCK_SIZE_GROUPS 4
-#define INTRA_MODES 10
-#define PARTITION_PLOFFSET 4 // number of probability models per block size
-#define PARTITION_CONTEXTS (4 * PARTITION_PLOFFSET)
-#define PARTITION_TYPES 4
-#define REF_TYPES 2 // intra=0, inter=1
-#define COEF_BANDS 6
-#define COEFF_CONTEXTS 6
-#define UNCONSTRAINED_NODES 3
-#define MV_CLASSES 11
-#define CLASS0_BITS 1 /* bits at integer precision for class 0 */
-#define CLASS0_SIZE (1 << CLASS0_BITS)
-#define MV_OFFSET_BITS (MV_CLASSES + CLASS0_BITS - 2)
-#define MV_MAX_BITS (MV_CLASSES + CLASS0_BITS + 2)
-#define MV_FP_SIZE 4
-#define FRAME_CONTEXTS_LOG2 2
-#define FRAME_CONTEXTS (1 << FRAME_CONTEXTS_LOG2)
-
-#define COEFF_PROB_SIZE 132
-#define COEFF_PROB_NUM 3
-
-#define TX_PROBS_IDX 0
-#define COEFF_PROBS_IDX 64
-#define INTRA_PROBS_IDX 1603
-#define SEG_PROBS_IDX 2010
-
-typedef uint8_t vp9_prob;
-
-#define vpx_memset memset
-#define vpx_memcpy memcpy
-
-#define vp9_zero(dest) memset(&dest, 0, sizeof(dest))
-
-#define vp9_copy(dest, src) { \
- assert(sizeof(dest) == sizeof(src)); \
- vpx_memcpy(dest, src, sizeof(src)); \
-}
-
-struct tx_probs {
- vp9_prob p8x8[TX_SIZE_CONTEXTS][TX_SIZES - 3];
- vp9_prob p16x16[TX_SIZE_CONTEXTS][TX_SIZES - 2];
- vp9_prob p32x32[TX_SIZE_CONTEXTS][TX_SIZES - 1];
-};
-
-struct tx_counts {
- unsigned int p32x32[TX_SIZE_CONTEXTS][TX_SIZES];
- unsigned int p16x16[TX_SIZE_CONTEXTS][TX_SIZES - 1];
- unsigned int p8x8[TX_SIZE_CONTEXTS][TX_SIZES - 2];
- unsigned int tx_totals[TX_SIZES];
-};
-
-typedef struct {
- vp9_prob sign;
- vp9_prob classes[MV_CLASSES - 1];
- vp9_prob class0[CLASS0_SIZE - 1];
- vp9_prob bits[MV_OFFSET_BITS];
-} nmv_component;
-
-//Modified the nmv_context from libvpx to suit our HW needs
-typedef struct {
- vp9_prob joints[MV_JOINTS-1];
- nmv_component comps[2];
- vp9_prob class0_fp0[CLASS0_SIZE][MV_FP_SIZE - 1];
- vp9_prob fp0[MV_FP_SIZE - 1];
- vp9_prob class0_fp1[CLASS0_SIZE][MV_FP_SIZE - 1];
- vp9_prob fp1[MV_FP_SIZE - 1];
- vp9_prob class0_hp[2];
- vp9_prob hp[2];
-} nmv_context;
-
-//Modified the FRAME_CONTEXT from libvpx to suit our HW needs
-typedef struct frame_contexts {
- struct tx_probs tx_probs;
- vp9_prob dummy1[52];
- vp9_prob coeff_probs4x4[COEFF_PROB_SIZE][COEFF_PROB_NUM];
- vp9_prob coeff_probs8x8[COEFF_PROB_SIZE][COEFF_PROB_NUM];
- vp9_prob coeff_probs16x16[COEFF_PROB_SIZE][COEFF_PROB_NUM];
- vp9_prob coeff_probs32x32[COEFF_PROB_SIZE][COEFF_PROB_NUM];
- vp9_prob dummy2[16];
- vp9_prob skip_probs[SKIP_CONTEXTS];
- vp9_prob inter_mode_probs[INTER_MODE_CONTEXTS][INTER_MODES - 1];
- vp9_prob switchable_interp_prob[SWITCHABLE_FILTER_CONTEXTS]
- [SWITCHABLE_FILTERS - 1];
- vp9_prob intra_inter_prob[INTRA_INTER_CONTEXTS];
- vp9_prob comp_inter_prob[COMP_INTER_CONTEXTS];
- vp9_prob single_ref_prob[REF_CONTEXTS][2];
- vp9_prob comp_ref_prob[REF_CONTEXTS];
- vp9_prob y_mode_prob[BLOCK_SIZE_GROUPS][INTRA_MODES - 1];
- vp9_prob partition_prob[PARTITION_CONTEXTS][PARTITION_TYPES - 1];
- nmv_context nmvc;
- vp9_prob dummy3[47];
- vp9_prob uv_mode_prob[INTRA_MODES][INTRA_MODES - 1];
- vp9_prob seg_tree_probs[SEG_TREE_PROBS];
- vp9_prob seg_pred_probs[PREDICTION_PROBS];
- vp9_prob dummy4[28];
- int initialized;
-} FRAME_CONTEXT;
-
-
-extern struct tx_probs default_tx_probs;
-
-extern vp9_prob default_skip_probs[SKIP_CONTEXTS];
-
-extern vp9_prob default_inter_mode_probs[INTER_MODE_CONTEXTS]
- [INTER_MODES - 1];
-
-extern vp9_prob default_switchable_interp_prob[SWITCHABLE_FILTER_CONTEXTS]
- [SWITCHABLE_FILTERS - 1];
-
-extern vp9_prob default_intra_inter_p[INTRA_INTER_CONTEXTS];
-
-extern vp9_prob default_comp_inter_p[COMP_INTER_CONTEXTS];
-
-extern vp9_prob default_single_ref_p[REF_CONTEXTS][2];
-
-extern vp9_prob default_comp_ref_p[REF_CONTEXTS];
-
-extern vp9_prob vp9_kf_uv_mode_prob[INTRA_MODES][INTRA_MODES - 1];
-
-extern vp9_prob default_if_y_probs[BLOCK_SIZE_GROUPS][INTRA_MODES - 1];
-
-extern vp9_prob default_if_uv_probs[INTRA_MODES][INTRA_MODES - 1];
-
-extern vp9_prob default_seg_tree_probs[SEG_TREE_PROBS];
-
-extern vp9_prob default_seg_pred_probs[PREDICTION_PROBS];
-
-extern vp9_prob vp9_kf_partition_probs[PARTITION_CONTEXTS]
- [PARTITION_TYPES - 1];
-
-extern vp9_prob default_partition_probs[PARTITION_CONTEXTS]
- [PARTITION_TYPES - 1];
-
-extern nmv_context default_nmv_context;
-
-extern vp9_prob default_coef_probs_4x4[COEFF_PROB_SIZE][COEFF_PROB_NUM];
-
-extern vp9_prob default_coef_probs_8x8[COEFF_PROB_SIZE][COEFF_PROB_NUM];
-
-extern vp9_prob default_coef_probs_16x16[COEFF_PROB_SIZE][COEFF_PROB_NUM];
-
-extern vp9_prob default_coef_probs_32x32[COEFF_PROB_SIZE][COEFF_PROB_NUM];
-
-extern void intel_init_default_vp9_probs(FRAME_CONTEXT *frame_context);
-
-extern void intel_vp9_copy_frame_context(FRAME_CONTEXT *dst,
- FRAME_CONTEXT *src,
- bool inter_flag);
-
-extern void intel_update_intra_frame_context(FRAME_CONTEXT *frame_context);
-
-
-typedef struct _vp9_header_bitoffset_ {
- unsigned int bit_offset_ref_lf_delta;
- unsigned int bit_offset_mode_lf_delta;
- unsigned int bit_offset_lf_level;
- unsigned int bit_offset_qindex;
- unsigned int bit_offset_first_partition_size;
- unsigned int bit_offset_segmentation;
- unsigned int bit_size_segmentation;
-} vp9_header_bitoffset;
-
-struct encode_state;
-extern bool intel_write_uncompressed_header(struct encode_state *encode_state,
- int codec_profile,
- char *header_data,
- int *header_length,
- vp9_header_bitoffset *header_bitoffset);
-
-typedef enum {
- ONLY_4X4 = 0, // only 4x4 transform used
- ALLOW_8X8 = 1, // allow block transform size up to 8x8
- ALLOW_16X16 = 2, // allow block transform size up to 16x16
- ALLOW_32X32 = 3, // allow block transform size up to 32x32
- TX_MODE_SELECT = 4, // transform specified for each block
- TX_MODES = 5,
-} TX_MODE;
-
-typedef enum {
- SINGLE_REFERENCE = 0,
- COMPOUND_REFERENCE = 1,
- REFERENCE_MODE_SELECT = 2,
- REFERENCE_MODES = 3,
-} REFERENCE_MODE;
-
-extern const unsigned short vp9_quant_dc[256];
-extern const unsigned short vp9_quant_ac[256];
-
-#endif /*VP9_PROBS_H */
diff --git a/src/vpx_probs.AUTHORS b/src/vpx_probs.AUTHORS
deleted file mode 100644
index e69de29..0000000
--- a/src/vpx_probs.AUTHORS
+++ /dev/null
diff --git a/src/vpx_probs.LICENSE b/src/vpx_probs.LICENSE
deleted file mode 100644
index e69de29..0000000
--- a/src/vpx_probs.LICENSE
+++ /dev/null
diff --git a/src/vpx_probs.PATENTS b/src/vpx_probs.PATENTS
deleted file mode 100644
index e69de29..0000000
--- a/src/vpx_probs.PATENTS
+++ /dev/null
diff --git a/src/wayland-drm-client-protocol.h b/src/wayland-drm-client-protocol.h
deleted file mode 100644
index da267e8..0000000
--- a/src/wayland-drm-client-protocol.h
+++ /dev/null
@@ -1,290 +0,0 @@
-/* Generated by wayland-scanner 1.11.90 */
-
-#ifndef DRM_CLIENT_PROTOCOL_H
-#define DRM_CLIENT_PROTOCOL_H
-
-#include <stdint.h>
-#include <stddef.h>
-#include "wayland-client.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @page page_drm The drm protocol
- * @section page_ifaces_drm Interfaces
- * - @subpage page_iface_wl_drm -
- * @section page_copyright_drm Copyright
- * <pre>
- *
- * Copyright © 2008-2011 Kristian Høgsberg
- * Copyright © 2010-2011 Intel Corporation
- *
- * Permission to use, copy, modify, distribute, and sell this
- * software and its documentation for any purpose is hereby granted
- * without fee, provided that\n the above copyright notice appear in
- * all copies and that both that copyright notice and this permission
- * notice appear in supporting documentation, and that the name of
- * the copyright holders not be used in advertising or publicity
- * pertaining to distribution of the software without specific,
- * written prior permission. The copyright holders make no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied
- * warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
- * THIS SOFTWARE.
- * </pre>
- */
-struct wl_buffer;
-struct wl_drm;
-
-/**
- * @page page_iface_wl_drm wl_drm
- * @section page_iface_wl_drm_api API
- * See @ref iface_wl_drm.
- */
-/**
- * @defgroup iface_wl_drm The wl_drm interface
- */
-extern const struct wl_interface wl_drm_interface;
-
-#ifndef WL_DRM_ERROR_ENUM
-#define WL_DRM_ERROR_ENUM
-enum wl_drm_error {
- WL_DRM_ERROR_AUTHENTICATE_FAIL = 0,
- WL_DRM_ERROR_INVALID_FORMAT = 1,
- WL_DRM_ERROR_INVALID_NAME = 2,
-};
-#endif /* WL_DRM_ERROR_ENUM */
-
-#ifndef WL_DRM_FORMAT_ENUM
-#define WL_DRM_FORMAT_ENUM
-enum wl_drm_format {
- WL_DRM_FORMAT_C8 = 0x20203843,
- WL_DRM_FORMAT_RGB332 = 0x38424752,
- WL_DRM_FORMAT_BGR233 = 0x38524742,
- WL_DRM_FORMAT_XRGB4444 = 0x32315258,
- WL_DRM_FORMAT_XBGR4444 = 0x32314258,
- WL_DRM_FORMAT_RGBX4444 = 0x32315852,
- WL_DRM_FORMAT_BGRX4444 = 0x32315842,
- WL_DRM_FORMAT_ARGB4444 = 0x32315241,
- WL_DRM_FORMAT_ABGR4444 = 0x32314241,
- WL_DRM_FORMAT_RGBA4444 = 0x32314152,
- WL_DRM_FORMAT_BGRA4444 = 0x32314142,
- WL_DRM_FORMAT_XRGB1555 = 0x35315258,
- WL_DRM_FORMAT_XBGR1555 = 0x35314258,
- WL_DRM_FORMAT_RGBX5551 = 0x35315852,
- WL_DRM_FORMAT_BGRX5551 = 0x35315842,
- WL_DRM_FORMAT_ARGB1555 = 0x35315241,
- WL_DRM_FORMAT_ABGR1555 = 0x35314241,
- WL_DRM_FORMAT_RGBA5551 = 0x35314152,
- WL_DRM_FORMAT_BGRA5551 = 0x35314142,
- WL_DRM_FORMAT_RGB565 = 0x36314752,
- WL_DRM_FORMAT_BGR565 = 0x36314742,
- WL_DRM_FORMAT_RGB888 = 0x34324752,
- WL_DRM_FORMAT_BGR888 = 0x34324742,
- WL_DRM_FORMAT_XRGB8888 = 0x34325258,
- WL_DRM_FORMAT_XBGR8888 = 0x34324258,
- WL_DRM_FORMAT_RGBX8888 = 0x34325852,
- WL_DRM_FORMAT_BGRX8888 = 0x34325842,
- WL_DRM_FORMAT_ARGB8888 = 0x34325241,
- WL_DRM_FORMAT_ABGR8888 = 0x34324241,
- WL_DRM_FORMAT_RGBA8888 = 0x34324152,
- WL_DRM_FORMAT_BGRA8888 = 0x34324142,
- WL_DRM_FORMAT_XRGB2101010 = 0x30335258,
- WL_DRM_FORMAT_XBGR2101010 = 0x30334258,
- WL_DRM_FORMAT_RGBX1010102 = 0x30335852,
- WL_DRM_FORMAT_BGRX1010102 = 0x30335842,
- WL_DRM_FORMAT_ARGB2101010 = 0x30335241,
- WL_DRM_FORMAT_ABGR2101010 = 0x30334241,
- WL_DRM_FORMAT_RGBA1010102 = 0x30334152,
- WL_DRM_FORMAT_BGRA1010102 = 0x30334142,
- WL_DRM_FORMAT_YUYV = 0x56595559,
- WL_DRM_FORMAT_YVYU = 0x55595659,
- WL_DRM_FORMAT_UYVY = 0x59565955,
- WL_DRM_FORMAT_VYUY = 0x59555956,
- WL_DRM_FORMAT_AYUV = 0x56555941,
- WL_DRM_FORMAT_NV12 = 0x3231564e,
- WL_DRM_FORMAT_NV21 = 0x3132564e,
- WL_DRM_FORMAT_NV16 = 0x3631564e,
- WL_DRM_FORMAT_NV61 = 0x3136564e,
- WL_DRM_FORMAT_YUV410 = 0x39565559,
- WL_DRM_FORMAT_YVU410 = 0x39555659,
- WL_DRM_FORMAT_YUV411 = 0x31315559,
- WL_DRM_FORMAT_YVU411 = 0x31315659,
- WL_DRM_FORMAT_YUV420 = 0x32315559,
- WL_DRM_FORMAT_YVU420 = 0x32315659,
- WL_DRM_FORMAT_YUV422 = 0x36315559,
- WL_DRM_FORMAT_YVU422 = 0x36315659,
- WL_DRM_FORMAT_YUV444 = 0x34325559,
- WL_DRM_FORMAT_YVU444 = 0x34325659,
-};
-#endif /* WL_DRM_FORMAT_ENUM */
-
-#ifndef WL_DRM_CAPABILITY_ENUM
-#define WL_DRM_CAPABILITY_ENUM
-/**
- * @ingroup iface_wl_drm
- * wl_drm capability bitmask
- *
- * Bitmask of capabilities.
- */
-enum wl_drm_capability {
- /**
- * wl_drm prime available
- */
- WL_DRM_CAPABILITY_PRIME = 1,
-};
-#endif /* WL_DRM_CAPABILITY_ENUM */
-
-/**
- * @ingroup iface_wl_drm
- * @struct wl_drm_listener
- */
-struct wl_drm_listener {
- /**
- */
- void (*device)(void *data,
- struct wl_drm *wl_drm,
- const char *name);
- /**
- */
- void (*format)(void *data,
- struct wl_drm *wl_drm,
- uint32_t format);
- /**
- */
- void (*authenticated)(void *data,
- struct wl_drm *wl_drm);
- /**
- */
- void (*capabilities)(void *data,
- struct wl_drm *wl_drm,
- uint32_t value);
-};
-
-/**
- * @ingroup wl_drm_iface
- */
-static inline int
-wl_drm_add_listener(struct wl_drm *wl_drm,
- const struct wl_drm_listener *listener, void *data)
-{
- return wl_proxy_add_listener((struct wl_proxy *) wl_drm,
- (void (**)(void)) listener, data);
-}
-
-#define WL_DRM_AUTHENTICATE 0
-#define WL_DRM_CREATE_BUFFER 1
-#define WL_DRM_CREATE_PLANAR_BUFFER 2
-#define WL_DRM_CREATE_PRIME_BUFFER 3
-
-/**
- * @ingroup iface_wl_drm
- */
-#define WL_DRM_AUTHENTICATE_SINCE_VERSION 1
-/**
- * @ingroup iface_wl_drm
- */
-#define WL_DRM_CREATE_BUFFER_SINCE_VERSION 1
-/**
- * @ingroup iface_wl_drm
- */
-#define WL_DRM_CREATE_PLANAR_BUFFER_SINCE_VERSION 1
-/**
- * @ingroup iface_wl_drm
- */
-#define WL_DRM_CREATE_PRIME_BUFFER_SINCE_VERSION 2
-
-/** @ingroup iface_wl_drm */
-static inline void
-wl_drm_set_user_data(struct wl_drm *wl_drm, void *user_data)
-{
- wl_proxy_set_user_data((struct wl_proxy *) wl_drm, user_data);
-}
-
-/** @ingroup iface_wl_drm */
-static inline void *
-wl_drm_get_user_data(struct wl_drm *wl_drm)
-{
- return wl_proxy_get_user_data((struct wl_proxy *) wl_drm);
-}
-
-static inline uint32_t
-wl_drm_get_version(struct wl_drm *wl_drm)
-{
- return wl_proxy_get_version((struct wl_proxy *) wl_drm);
-}
-
-/** @ingroup iface_wl_drm */
-static inline void
-wl_drm_destroy(struct wl_drm *wl_drm)
-{
- wl_proxy_destroy((struct wl_proxy *) wl_drm);
-}
-
-/**
- * @ingroup iface_wl_drm
- */
-static inline void
-wl_drm_authenticate(struct wl_drm *wl_drm, uint32_t id)
-{
- wl_proxy_marshal((struct wl_proxy *) wl_drm,
- WL_DRM_AUTHENTICATE, id);
-}
-
-/**
- * @ingroup iface_wl_drm
- */
-static inline struct wl_buffer *
-wl_drm_create_buffer(struct wl_drm *wl_drm, uint32_t name, int32_t width, int32_t height, uint32_t stride, uint32_t format)
-{
- struct wl_proxy *id;
-
- id = wl_proxy_marshal_constructor((struct wl_proxy *) wl_drm,
- WL_DRM_CREATE_BUFFER, &wl_buffer_interface, NULL, name, width, height, stride, format);
-
- return (struct wl_buffer *) id;
-}
-
-/**
- * @ingroup iface_wl_drm
- */
-static inline struct wl_buffer *
-wl_drm_create_planar_buffer(struct wl_drm *wl_drm, uint32_t name, int32_t width, int32_t height, uint32_t format, int32_t offset0, int32_t stride0, int32_t offset1, int32_t stride1, int32_t offset2, int32_t stride2)
-{
- struct wl_proxy *id;
-
- id = wl_proxy_marshal_constructor((struct wl_proxy *) wl_drm,
- WL_DRM_CREATE_PLANAR_BUFFER, &wl_buffer_interface, NULL, name, width, height, format, offset0, stride0, offset1, stride1, offset2, stride2);
-
- return (struct wl_buffer *) id;
-}
-
-/**
- * @ingroup iface_wl_drm
- */
-static inline struct wl_buffer *
-wl_drm_create_prime_buffer(struct wl_drm *wl_drm, int32_t name, int32_t width, int32_t height, uint32_t format, int32_t offset0, int32_t stride0, int32_t offset1, int32_t stride1, int32_t offset2, int32_t stride2)
-{
- struct wl_proxy *id;
-
- id = wl_proxy_marshal_constructor((struct wl_proxy *) wl_drm,
- WL_DRM_CREATE_PRIME_BUFFER, &wl_buffer_interface, NULL, name, width, height, format, offset0, stride0, offset1, stride1, offset2, stride2);
-
- return (struct wl_buffer *) id;
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/src/wayland-drm.xml b/src/wayland-drm.xml
deleted file mode 100644
index 5e64622..0000000
--- a/src/wayland-drm.xml
+++ /dev/null
@@ -1,185 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<protocol name="drm">
-
- <copyright>
- Copyright © 2008-2011 Kristian Høgsberg
- Copyright © 2010-2011 Intel Corporation
-
- Permission to use, copy, modify, distribute, and sell this
- software and its documentation for any purpose is hereby granted
- without fee, provided that\n the above copyright notice appear in
- all copies and that both that copyright notice and this permission
- notice appear in supporting documentation, and that the name of
- the copyright holders not be used in advertising or publicity
- pertaining to distribution of the software without specific,
- written prior permission. The copyright holders make no
- representations about the suitability of this software for any
- purpose. It is provided "as is" without express or implied
- warranty.
-
- THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
- SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
- THIS SOFTWARE.
- </copyright>
-
- <!-- drm support. This object is created by the server and published
- using the display's global event. -->
- <interface name="wl_drm" version="2">
- <enum name="error">
- <entry name="authenticate_fail" value="0"/>
- <entry name="invalid_format" value="1"/>
- <entry name="invalid_name" value="2"/>
- </enum>
-
- <enum name="format">
- <!-- The drm format codes match the #defines in drm_fourcc.h.
- The formats actually supported by the compositor will be
- reported by the format event. -->
- <entry name="c8" value="0x20203843"/>
- <entry name="rgb332" value="0x38424752"/>
- <entry name="bgr233" value="0x38524742"/>
- <entry name="xrgb4444" value="0x32315258"/>
- <entry name="xbgr4444" value="0x32314258"/>
- <entry name="rgbx4444" value="0x32315852"/>
- <entry name="bgrx4444" value="0x32315842"/>
- <entry name="argb4444" value="0x32315241"/>
- <entry name="abgr4444" value="0x32314241"/>
- <entry name="rgba4444" value="0x32314152"/>
- <entry name="bgra4444" value="0x32314142"/>
- <entry name="xrgb1555" value="0x35315258"/>
- <entry name="xbgr1555" value="0x35314258"/>
- <entry name="rgbx5551" value="0x35315852"/>
- <entry name="bgrx5551" value="0x35315842"/>
- <entry name="argb1555" value="0x35315241"/>
- <entry name="abgr1555" value="0x35314241"/>
- <entry name="rgba5551" value="0x35314152"/>
- <entry name="bgra5551" value="0x35314142"/>
- <entry name="rgb565" value="0x36314752"/>
- <entry name="bgr565" value="0x36314742"/>
- <entry name="rgb888" value="0x34324752"/>
- <entry name="bgr888" value="0x34324742"/>
- <entry name="xrgb8888" value="0x34325258"/>
- <entry name="xbgr8888" value="0x34324258"/>
- <entry name="rgbx8888" value="0x34325852"/>
- <entry name="bgrx8888" value="0x34325842"/>
- <entry name="argb8888" value="0x34325241"/>
- <entry name="abgr8888" value="0x34324241"/>
- <entry name="rgba8888" value="0x34324152"/>
- <entry name="bgra8888" value="0x34324142"/>
- <entry name="xrgb2101010" value="0x30335258"/>
- <entry name="xbgr2101010" value="0x30334258"/>
- <entry name="rgbx1010102" value="0x30335852"/>
- <entry name="bgrx1010102" value="0x30335842"/>
- <entry name="argb2101010" value="0x30335241"/>
- <entry name="abgr2101010" value="0x30334241"/>
- <entry name="rgba1010102" value="0x30334152"/>
- <entry name="bgra1010102" value="0x30334142"/>
- <entry name="yuyv" value="0x56595559"/>
- <entry name="yvyu" value="0x55595659"/>
- <entry name="uyvy" value="0x59565955"/>
- <entry name="vyuy" value="0x59555956"/>
- <entry name="ayuv" value="0x56555941"/>
- <entry name="nv12" value="0x3231564e"/>
- <entry name="nv21" value="0x3132564e"/>
- <entry name="nv16" value="0x3631564e"/>
- <entry name="nv61" value="0x3136564e"/>
- <entry name="yuv410" value="0x39565559"/>
- <entry name="yvu410" value="0x39555659"/>
- <entry name="yuv411" value="0x31315559"/>
- <entry name="yvu411" value="0x31315659"/>
- <entry name="yuv420" value="0x32315559"/>
- <entry name="yvu420" value="0x32315659"/>
- <entry name="yuv422" value="0x36315559"/>
- <entry name="yvu422" value="0x36315659"/>
- <entry name="yuv444" value="0x34325559"/>
- <entry name="yvu444" value="0x34325659"/>
- </enum>
-
- <!-- Call this request with the magic received from drmGetMagic().
- It will be passed on to the drmAuthMagic() or
- DRIAuthConnection() call. This authentication must be
- completed before create_buffer could be used. -->
- <request name="authenticate">
- <arg name="id" type="uint"/>
- </request>
-
- <!-- Create a wayland buffer for the named DRM buffer. The DRM
- surface must have a name using the flink ioctl -->
- <request name="create_buffer">
- <arg name="id" type="new_id" interface="wl_buffer"/>
- <arg name="name" type="uint"/>
- <arg name="width" type="int"/>
- <arg name="height" type="int"/>
- <arg name="stride" type="uint"/>
- <arg name="format" type="uint"/>
- </request>
-
- <!-- Create a wayland buffer for the named DRM buffer. The DRM
- surface must have a name using the flink ioctl -->
- <request name="create_planar_buffer">
- <arg name="id" type="new_id" interface="wl_buffer"/>
- <arg name="name" type="uint"/>
- <arg name="width" type="int"/>
- <arg name="height" type="int"/>
- <arg name="format" type="uint"/>
- <arg name="offset0" type="int"/>
- <arg name="stride0" type="int"/>
- <arg name="offset1" type="int"/>
- <arg name="stride1" type="int"/>
- <arg name="offset2" type="int"/>
- <arg name="stride2" type="int"/>
- </request>
-
- <!-- Notification of the path of the drm device which is used by
- the server. The client should use this device for creating
- local buffers. Only buffers created from this device should
- be be passed to the server using this drm object's
- create_buffer request. -->
- <event name="device">
- <arg name="name" type="string"/>
- </event>
-
- <event name="format">
- <arg name="format" type="uint"/>
- </event>
-
- <!-- Raised if the authenticate request succeeded -->
- <event name="authenticated"/>
-
- <enum name="capability" since="2">
- <description summary="wl_drm capability bitmask">
- Bitmask of capabilities.
- </description>
- <entry name="prime" value="1" summary="wl_drm prime available"/>
- </enum>
-
- <event name="capabilities">
- <arg name="value" type="uint"/>
- </event>
-
- <!-- Version 2 additions -->
-
- <!-- Create a wayland buffer for the prime fd. Use for regular and planar
- buffers. Pass 0 for offset and stride for unused planes. -->
- <request name="create_prime_buffer" since="2">
- <arg name="id" type="new_id" interface="wl_buffer"/>
- <arg name="name" type="fd"/>
- <arg name="width" type="int"/>
- <arg name="height" type="int"/>
- <arg name="format" type="uint"/>
- <arg name="offset0" type="int"/>
- <arg name="stride0" type="int"/>
- <arg name="offset1" type="int"/>
- <arg name="stride1" type="int"/>
- <arg name="offset2" type="int"/>
- <arg name="stride2" type="int"/>
- </request>
-
- </interface>
-
-</protocol>
diff --git a/test/Makefile.am b/test/Makefile.am
deleted file mode 100644
index f250fee..0000000
--- a/test/Makefile.am
+++ /dev/null
@@ -1,109 +0,0 @@
-AUTOMAKE_OPTIONS = subdir-objects
-
-AM_CXXFLAGS = \
- -I$(top_srcdir)/test/gtest/include \
- $(NULL)
-
-AM_CPPFLAGS = \
- -DGTEST_HAS_PTHREAD=1 \
- -DGTEST_USE_OWN_TR1_TUPLE=0 \
- -DGTEST_LANG_CXX11=1 \
- -DGTEST_HAS_TR1_TUPLE=1 \
- -DPTHREADS \
- -DVA_DRIVERS_PATH="\"$(LIBVA_DRIVERS_PATH)\"" \
- -DTEST_VA_DRIVERS_PATH="\"$(abs_top_srcdir)/src/.libs\"" \
- -std=c++11 \
- $(NULL)
-
-AM_LDFLAGS = \
- -pthread \
- $(NULL)
-
-# libgtest
-noinst_LTLIBRARIES = libgtest.la
-
-libgtest_la_SOURCES = \
- gtest/src/gtest-all.cc \
- gtest/src/gtest_main.cc \
- $(NULL)
-
-libgtest_la_CXXFLAGS = \
- -I$(top_srcdir)/test/gtest \
- $(AM_CXXFLAGS) \
- $(NULL)
-
-EXTRA_DIST = \
- gtest/docs \
- gtest/include \
- gtest/src/*.cc \
- gtest/src/*.h \
- gtest/README.md \
- gtest/LICENSE \
- $(NULL)
-
-# test_i965_drv_video
-noinst_PROGRAMS = test_i965_drv_video
-noinst_HEADERS = \
- i965_avce_test_common.h \
- i965_config_test.h \
- i965_internal_decl.h \
- i965_jpeg_test_data.h \
- i965_streamable.h \
- i965_test_environment.h \
- i965_test_fixture.h \
- i965_test_image_utils.h \
- test.h \
- test_utils.h \
- $(NULL)
-
-test_i965_drv_video_SOURCES = \
- i965_avcd_config_test.cpp \
- i965_avce_config_test.cpp \
- i965_avce_context_test.cpp \
- i965_avce_test_common.cpp \
- i965_chipset_test.cpp \
- i965_config_test.cpp \
- i965_initialize_test.cpp \
- i965_jpeg_test_data.cpp \
- i965_jpeg_decode_test.cpp \
- i965_jpeg_encode_test.cpp \
- i965_jpegd_config_test.cpp \
- i965_jpege_config_test.cpp \
- i965_surface_test.cpp \
- i965_test_environment.cpp \
- i965_test_fixture.cpp \
- i965_test_image_utils.cpp \
- object_heap_test.cpp \
- test_main.cpp \
- $(NULL)
-
-test_i965_drv_video_LDFLAGS = \
- $(DRM_LDFLAGS) \
- $(LIBVA_DEPS_LDFLAGS) \
- $(LIBVA_DRM_DEPS_LDFLAGS) \
- $(AM_LDFLAGS) \
- $(NULL)
-
-test_i965_drv_video_LDADD = \
- $(top_srcdir)/src/libi965_drv_video.la \
- libgtest.la \
- $(DRM_LIBS) \
- $(LIBVA_DEPS_LIBS) \
- $(LIBVA_DRM_DEPS_LIBS) \
- -ldrm_intel -lm -ldl \
- $(NULL)
-
-test_i965_drv_video_CPPFLAGS = \
- $(DRM_CFLAGS) \
- $(LIBVA_DEPS_CFLAGS) \
- $(LIBVA_DRM_DEPS_CFLAGS) \
- $(AM_CPPFLAGS) \
- $(NULL)
-
-test_i965_drv_video_CXXFLAGS = \
- -Wall -Werror \
- $(AM_CXXFLAGS) \
- $(NULL)
-
-check-local: test_i965_drv_video
- $(builddir)/test_i965_drv_video
diff --git a/test/gtest/LICENSE b/test/gtest/LICENSE
deleted file mode 100644
index 1941a11..0000000
--- a/test/gtest/LICENSE
+++ /dev/null
@@ -1,28 +0,0 @@
-Copyright 2008, Google Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/test/gtest/README.md b/test/gtest/README.md
deleted file mode 100644
index edd4408..0000000
--- a/test/gtest/README.md
+++ /dev/null
@@ -1,280 +0,0 @@
-
-### Generic Build Instructions ###
-
-#### Setup ####
-
-To build Google Test and your tests that use it, you need to tell your
-build system where to find its headers and source files. The exact
-way to do it depends on which build system you use, and is usually
-straightforward.
-
-#### Build ####
-
-Suppose you put Google Test in directory `${GTEST_DIR}`. To build it,
-create a library build target (or a project as called by Visual Studio
-and Xcode) to compile
-
- ${GTEST_DIR}/src/gtest-all.cc
-
-with `${GTEST_DIR}/include` in the system header search path and `${GTEST_DIR}`
-in the normal header search path. Assuming a Linux-like system and gcc,
-something like the following will do:
-
- g++ -isystem ${GTEST_DIR}/include -I${GTEST_DIR} \
- -pthread -c ${GTEST_DIR}/src/gtest-all.cc
- ar -rv libgtest.a gtest-all.o
-
-(We need `-pthread` as Google Test uses threads.)
-
-Next, you should compile your test source file with
-`${GTEST_DIR}/include` in the system header search path, and link it
-with gtest and any other necessary libraries:
-
- g++ -isystem ${GTEST_DIR}/include -pthread path/to/your_test.cc libgtest.a \
- -o your_test
-
-As an example, the make/ directory contains a Makefile that you can
-use to build Google Test on systems where GNU make is available
-(e.g. Linux, Mac OS X, and Cygwin). It doesn't try to build Google
-Test's own tests. Instead, it just builds the Google Test library and
-a sample test. You can use it as a starting point for your own build
-script.
-
-If the default settings are correct for your environment, the
-following commands should succeed:
-
- cd ${GTEST_DIR}/make
- make
- ./sample1_unittest
-
-If you see errors, try to tweak the contents of `make/Makefile` to make
-them go away. There are instructions in `make/Makefile` on how to do
-it.
-
-### Using CMake ###
-
-Google Test comes with a CMake build script (
-[CMakeLists.txt](CMakeLists.txt)) that can be used on a wide range of platforms ("C" stands for
-cross-platform.). If you don't have CMake installed already, you can
-download it for free from <http://www.cmake.org/>.
-
-CMake works by generating native makefiles or build projects that can
-be used in the compiler environment of your choice. The typical
-workflow starts with:
-
- mkdir mybuild # Create a directory to hold the build output.
- cd mybuild
- cmake ${GTEST_DIR} # Generate native build scripts.
-
-If you want to build Google Test's samples, you should replace the
-last command with
-
- cmake -Dgtest_build_samples=ON ${GTEST_DIR}
-
-If you are on a \*nix system, you should now see a Makefile in the
-current directory. Just type 'make' to build gtest.
-
-If you use Windows and have Visual Studio installed, a `gtest.sln` file
-and several `.vcproj` files will be created. You can then build them
-using Visual Studio.
-
-On Mac OS X with Xcode installed, a `.xcodeproj` file will be generated.
-
-### Legacy Build Scripts ###
-
-Before settling on CMake, we have been providing hand-maintained build
-projects/scripts for Visual Studio, Xcode, and Autotools. While we
-continue to provide them for convenience, they are not actively
-maintained any more. We highly recommend that you follow the
-instructions in the previous two sections to integrate Google Test
-with your existing build system.
-
-If you still need to use the legacy build scripts, here's how:
-
-The msvc\ folder contains two solutions with Visual C++ projects.
-Open the `gtest.sln` or `gtest-md.sln` file using Visual Studio, and you
-are ready to build Google Test the same way you build any Visual
-Studio project. Files that have names ending with -md use DLL
-versions of Microsoft runtime libraries (the /MD or the /MDd compiler
-option). Files without that suffix use static versions of the runtime
-libraries (the /MT or the /MTd option). Please note that one must use
-the same option to compile both gtest and the test code. If you use
-Visual Studio 2005 or above, we recommend the -md version as /MD is
-the default for new projects in these versions of Visual Studio.
-
-On Mac OS X, open the `gtest.xcodeproj` in the `xcode/` folder using
-Xcode. Build the "gtest" target. The universal binary framework will
-end up in your selected build directory (selected in the Xcode
-"Preferences..." -> "Building" pane and defaults to xcode/build).
-Alternatively, at the command line, enter:
-
- xcodebuild
-
-This will build the "Release" configuration of gtest.framework in your
-default build location. See the "xcodebuild" man page for more
-information about building different configurations and building in
-different locations.
-
-If you wish to use the Google Test Xcode project with Xcode 4.x and
-above, you need to either:
-
- * update the SDK configuration options in xcode/Config/General.xconfig.
- Comment options `SDKROOT`, `MACOS_DEPLOYMENT_TARGET`, and `GCC_VERSION`. If
- you choose this route you lose the ability to target earlier versions
- of MacOS X.
- * Install an SDK for an earlier version. This doesn't appear to be
- supported by Apple, but has been reported to work
- (http://stackoverflow.com/questions/5378518).
-
-### Tweaking Google Test ###
-
-Google Test can be used in diverse environments. The default
-configuration may not work (or may not work well) out of the box in
-some environments. However, you can easily tweak Google Test by
-defining control macros on the compiler command line. Generally,
-these macros are named like `GTEST_XYZ` and you define them to either 1
-or 0 to enable or disable a certain feature.
-
-We list the most frequently used macros below. For a complete list,
-see file [include/gtest/internal/gtest-port.h](include/gtest/internal/gtest-port.h).
-
-### Choosing a TR1 Tuple Library ###
-
-Some Google Test features require the C++ Technical Report 1 (TR1)
-tuple library, which is not yet available with all compilers. The
-good news is that Google Test implements a subset of TR1 tuple that's
-enough for its own need, and will automatically use this when the
-compiler doesn't provide TR1 tuple.
-
-Usually you don't need to care about which tuple library Google Test
-uses. However, if your project already uses TR1 tuple, you need to
-tell Google Test to use the same TR1 tuple library the rest of your
-project uses, or the two tuple implementations will clash. To do
-that, add
-
- -DGTEST_USE_OWN_TR1_TUPLE=0
-
-to the compiler flags while compiling Google Test and your tests. If
-you want to force Google Test to use its own tuple library, just add
-
- -DGTEST_USE_OWN_TR1_TUPLE=1
-
-to the compiler flags instead.
-
-If you don't want Google Test to use tuple at all, add
-
- -DGTEST_HAS_TR1_TUPLE=0
-
-and all features using tuple will be disabled.
-
-### Multi-threaded Tests ###
-
-Google Test is thread-safe where the pthread library is available.
-After `#include "gtest/gtest.h"`, you can check the `GTEST_IS_THREADSAFE`
-macro to see whether this is the case (yes if the macro is `#defined` to
-1, no if it's undefined.).
-
-If Google Test doesn't correctly detect whether pthread is available
-in your environment, you can force it with
-
- -DGTEST_HAS_PTHREAD=1
-
-or
-
- -DGTEST_HAS_PTHREAD=0
-
-When Google Test uses pthread, you may need to add flags to your
-compiler and/or linker to select the pthread library, or you'll get
-link errors. If you use the CMake script or the deprecated Autotools
-script, this is taken care of for you. If you use your own build
-script, you'll need to read your compiler and linker's manual to
-figure out what flags to add.
-
-### As a Shared Library (DLL) ###
-
-Google Test is compact, so most users can build and link it as a
-static library for the simplicity. You can choose to use Google Test
-as a shared library (known as a DLL on Windows) if you prefer.
-
-To compile *gtest* as a shared library, add
-
- -DGTEST_CREATE_SHARED_LIBRARY=1
-
-to the compiler flags. You'll also need to tell the linker to produce
-a shared library instead - consult your linker's manual for how to do
-it.
-
-To compile your *tests* that use the gtest shared library, add
-
- -DGTEST_LINKED_AS_SHARED_LIBRARY=1
-
-to the compiler flags.
-
-Note: while the above steps aren't technically necessary today when
-using some compilers (e.g. GCC), they may become necessary in the
-future, if we decide to improve the speed of loading the library (see
-<http://gcc.gnu.org/wiki/Visibility> for details). Therefore you are
-recommended to always add the above flags when using Google Test as a
-shared library. Otherwise a future release of Google Test may break
-your build script.
-
-### Avoiding Macro Name Clashes ###
-
-In C++, macros don't obey namespaces. Therefore two libraries that
-both define a macro of the same name will clash if you `#include` both
-definitions. In case a Google Test macro clashes with another
-library, you can force Google Test to rename its macro to avoid the
-conflict.
-
-Specifically, if both Google Test and some other code define macro
-FOO, you can add
-
- -DGTEST_DONT_DEFINE_FOO=1
-
-to the compiler flags to tell Google Test to change the macro's name
-from `FOO` to `GTEST_FOO`. Currently `FOO` can be `FAIL`, `SUCCEED`,
-or `TEST`. For example, with `-DGTEST_DONT_DEFINE_TEST=1`, you'll
-need to write
-
- GTEST_TEST(SomeTest, DoesThis) { ... }
-
-instead of
-
- TEST(SomeTest, DoesThis) { ... }
-
-in order to define a test.
-
-## Developing Google Test ##
-
-This section discusses how to make your own changes to Google Test.
-
-### Testing Google Test Itself ###
-
-To make sure your changes work as intended and don't break existing
-functionality, you'll want to compile and run Google Test's own tests.
-For that you can use CMake:
-
- mkdir mybuild
- cd mybuild
- cmake -Dgtest_build_tests=ON ${GTEST_DIR}
-
-Make sure you have Python installed, as some of Google Test's tests
-are written in Python. If the cmake command complains about not being
-able to find Python (`Could NOT find PythonInterp (missing:
-PYTHON_EXECUTABLE)`), try telling it explicitly where your Python
-executable can be found:
-
- cmake -DPYTHON_EXECUTABLE=path/to/python -Dgtest_build_tests=ON ${GTEST_DIR}
-
-Next, you can build Google Test and all of its own tests. On \*nix,
-this is usually done by 'make'. To run the tests, do
-
- make test
-
-All tests should pass.
-
-Normally you don't need to worry about regenerating the source files,
-unless you need to modify them. In that case, you should modify the
-corresponding .pump files instead and run the pump.py Python script to
-regenerate them. You can find pump.py in the [scripts/](scripts/) directory.
-Read the [Pump manual](docs/PumpManual.md) for how to use it.
diff --git a/test/gtest/docs/AdvancedGuide.md b/test/gtest/docs/AdvancedGuide.md
deleted file mode 100644
index d85cb23..0000000
--- a/test/gtest/docs/AdvancedGuide.md
+++ /dev/null
@@ -1,2182 +0,0 @@
-
-
-Now that you have read [Primer](Primer.md) and learned how to write tests
-using Google Test, it's time to learn some new tricks. This document
-will show you more assertions as well as how to construct complex
-failure messages, propagate fatal failures, reuse and speed up your
-test fixtures, and use various flags with your tests.
-
-# More Assertions #
-
-This section covers some less frequently used, but still significant,
-assertions.
-
-## Explicit Success and Failure ##
-
-These three assertions do not actually test a value or expression. Instead,
-they generate a success or failure directly. Like the macros that actually
-perform a test, you may stream a custom failure message into the them.
-
-| `SUCCEED();` |
-|:-------------|
-
-Generates a success. This does NOT make the overall test succeed. A test is
-considered successful only if none of its assertions fail during its execution.
-
-Note: `SUCCEED()` is purely documentary and currently doesn't generate any
-user-visible output. However, we may add `SUCCEED()` messages to Google Test's
-output in the future.
-
-| `FAIL();` | `ADD_FAILURE();` | `ADD_FAILURE_AT("`_file\_path_`", `_line\_number_`);` |
-|:-----------|:-----------------|:------------------------------------------------------|
-
-`FAIL()` generates a fatal failure, while `ADD_FAILURE()` and `ADD_FAILURE_AT()` generate a nonfatal
-failure. These are useful when control flow, rather than a Boolean expression,
-deteremines the test's success or failure. For example, you might want to write
-something like:
-
-```
-switch(expression) {
- case 1: ... some checks ...
- case 2: ... some other checks
- ...
- default: FAIL() << "We shouldn't get here.";
-}
-```
-
-Note: you can only use `FAIL()` in functions that return `void`. See the [Assertion Placement section](#assertion-placement) for more information.
-
-_Availability_: Linux, Windows, Mac.
-
-## Exception Assertions ##
-
-These are for verifying that a piece of code throws (or does not
-throw) an exception of the given type:
-
-| **Fatal assertion** | **Nonfatal assertion** | **Verifies** |
-|:--------------------|:-----------------------|:-------------|
-| `ASSERT_THROW(`_statement_, _exception\_type_`);` | `EXPECT_THROW(`_statement_, _exception\_type_`);` | _statement_ throws an exception of the given type |
-| `ASSERT_ANY_THROW(`_statement_`);` | `EXPECT_ANY_THROW(`_statement_`);` | _statement_ throws an exception of any type |
-| `ASSERT_NO_THROW(`_statement_`);` | `EXPECT_NO_THROW(`_statement_`);` | _statement_ doesn't throw any exception |
-
-Examples:
-
-```
-ASSERT_THROW(Foo(5), bar_exception);
-
-EXPECT_NO_THROW({
- int n = 5;
- Bar(&n);
-});
-```
-
-_Availability_: Linux, Windows, Mac; since version 1.1.0.
-
-## Predicate Assertions for Better Error Messages ##
-
-Even though Google Test has a rich set of assertions, they can never be
-complete, as it's impossible (nor a good idea) to anticipate all the scenarios
-a user might run into. Therefore, sometimes a user has to use `EXPECT_TRUE()`
-to check a complex expression, for lack of a better macro. This has the problem
-of not showing you the values of the parts of the expression, making it hard to
-understand what went wrong. As a workaround, some users choose to construct the
-failure message by themselves, streaming it into `EXPECT_TRUE()`. However, this
-is awkward especially when the expression has side-effects or is expensive to
-evaluate.
-
-Google Test gives you three different options to solve this problem:
-
-### Using an Existing Boolean Function ###
-
-If you already have a function or a functor that returns `bool` (or a type
-that can be implicitly converted to `bool`), you can use it in a _predicate
-assertion_ to get the function arguments printed for free:
-
-| **Fatal assertion** | **Nonfatal assertion** | **Verifies** |
-|:--------------------|:-----------------------|:-------------|
-| `ASSERT_PRED1(`_pred1, val1_`);` | `EXPECT_PRED1(`_pred1, val1_`);` | _pred1(val1)_ returns true |
-| `ASSERT_PRED2(`_pred2, val1, val2_`);` | `EXPECT_PRED2(`_pred2, val1, val2_`);` | _pred2(val1, val2)_ returns true |
-| ... | ... | ... |
-
-In the above, _predn_ is an _n_-ary predicate function or functor, where
-_val1_, _val2_, ..., and _valn_ are its arguments. The assertion succeeds
-if the predicate returns `true` when applied to the given arguments, and fails
-otherwise. When the assertion fails, it prints the value of each argument. In
-either case, the arguments are evaluated exactly once.
-
-Here's an example. Given
-
-```
-// Returns true iff m and n have no common divisors except 1.
-bool MutuallyPrime(int m, int n) { ... }
-const int a = 3;
-const int b = 4;
-const int c = 10;
-```
-
-the assertion `EXPECT_PRED2(MutuallyPrime, a, b);` will succeed, while the
-assertion `EXPECT_PRED2(MutuallyPrime, b, c);` will fail with the message
-
-<pre>
-!MutuallyPrime(b, c) is false, where<br>
-b is 4<br>
-c is 10<br>
-</pre>
-
-**Notes:**
-
- 1. If you see a compiler error "no matching function to call" when using `ASSERT_PRED*` or `EXPECT_PRED*`, please see [this FAQ](FAQ.md#the-compiler-complains-no-matching-function-to-call-when-i-use-assert_predn-how-do-i-fix-it) for how to resolve it.
- 1. Currently we only provide predicate assertions of arity <= 5. If you need a higher-arity assertion, let us know.
-
-_Availability_: Linux, Windows, Mac
-
-### Using a Function That Returns an AssertionResult ###
-
-While `EXPECT_PRED*()` and friends are handy for a quick job, the
-syntax is not satisfactory: you have to use different macros for
-different arities, and it feels more like Lisp than C++. The
-`::testing::AssertionResult` class solves this problem.
-
-An `AssertionResult` object represents the result of an assertion
-(whether it's a success or a failure, and an associated message). You
-can create an `AssertionResult` using one of these factory
-functions:
-
-```
-namespace testing {
-
-// Returns an AssertionResult object to indicate that an assertion has
-// succeeded.
-AssertionResult AssertionSuccess();
-
-// Returns an AssertionResult object to indicate that an assertion has
-// failed.
-AssertionResult AssertionFailure();
-
-}
-```
-
-You can then use the `<<` operator to stream messages to the
-`AssertionResult` object.
-
-To provide more readable messages in Boolean assertions
-(e.g. `EXPECT_TRUE()`), write a predicate function that returns
-`AssertionResult` instead of `bool`. For example, if you define
-`IsEven()` as:
-
-```
-::testing::AssertionResult IsEven(int n) {
- if ((n % 2) == 0)
- return ::testing::AssertionSuccess();
- else
- return ::testing::AssertionFailure() << n << " is odd";
-}
-```
-
-instead of:
-
-```
-bool IsEven(int n) {
- return (n % 2) == 0;
-}
-```
-
-the failed assertion `EXPECT_TRUE(IsEven(Fib(4)))` will print:
-
-<pre>
-Value of: IsEven(Fib(4))<br>
-Actual: false (*3 is odd*)<br>
-Expected: true<br>
-</pre>
-
-instead of a more opaque
-
-<pre>
-Value of: IsEven(Fib(4))<br>
-Actual: false<br>
-Expected: true<br>
-</pre>
-
-If you want informative messages in `EXPECT_FALSE` and `ASSERT_FALSE`
-as well, and are fine with making the predicate slower in the success
-case, you can supply a success message:
-
-```
-::testing::AssertionResult IsEven(int n) {
- if ((n % 2) == 0)
- return ::testing::AssertionSuccess() << n << " is even";
- else
- return ::testing::AssertionFailure() << n << " is odd";
-}
-```
-
-Then the statement `EXPECT_FALSE(IsEven(Fib(6)))` will print
-
-<pre>
-Value of: IsEven(Fib(6))<br>
-Actual: true (8 is even)<br>
-Expected: false<br>
-</pre>
-
-_Availability_: Linux, Windows, Mac; since version 1.4.1.
-
-### Using a Predicate-Formatter ###
-
-If you find the default message generated by `(ASSERT|EXPECT)_PRED*` and
-`(ASSERT|EXPECT)_(TRUE|FALSE)` unsatisfactory, or some arguments to your
-predicate do not support streaming to `ostream`, you can instead use the
-following _predicate-formatter assertions_ to _fully_ customize how the
-message is formatted:
-
-| **Fatal assertion** | **Nonfatal assertion** | **Verifies** |
-|:--------------------|:-----------------------|:-------------|
-| `ASSERT_PRED_FORMAT1(`_pred\_format1, val1_`);` | `EXPECT_PRED_FORMAT1(`_pred\_format1, val1_`);` | _pred\_format1(val1)_ is successful |
-| `ASSERT_PRED_FORMAT2(`_pred\_format2, val1, val2_`);` | `EXPECT_PRED_FORMAT2(`_pred\_format2, val1, val2_`);` | _pred\_format2(val1, val2)_ is successful |
-| `...` | `...` | `...` |
-
-The difference between this and the previous two groups of macros is that instead of
-a predicate, `(ASSERT|EXPECT)_PRED_FORMAT*` take a _predicate-formatter_
-(_pred\_formatn_), which is a function or functor with the signature:
-
-`::testing::AssertionResult PredicateFormattern(const char* `_expr1_`, const char* `_expr2_`, ... const char* `_exprn_`, T1 `_val1_`, T2 `_val2_`, ... Tn `_valn_`);`
-
-where _val1_, _val2_, ..., and _valn_ are the values of the predicate
-arguments, and _expr1_, _expr2_, ..., and _exprn_ are the corresponding
-expressions as they appear in the source code. The types `T1`, `T2`, ..., and
-`Tn` can be either value types or reference types. For example, if an
-argument has type `Foo`, you can declare it as either `Foo` or `const Foo&`,
-whichever is appropriate.
-
-A predicate-formatter returns a `::testing::AssertionResult` object to indicate
-whether the assertion has succeeded or not. The only way to create such an
-object is to call one of these factory functions:
-
-As an example, let's improve the failure message in the previous example, which uses `EXPECT_PRED2()`:
-
-```
-// Returns the smallest prime common divisor of m and n,
-// or 1 when m and n are mutually prime.
-int SmallestPrimeCommonDivisor(int m, int n) { ... }
-
-// A predicate-formatter for asserting that two integers are mutually prime.
-::testing::AssertionResult AssertMutuallyPrime(const char* m_expr,
- const char* n_expr,
- int m,
- int n) {
- if (MutuallyPrime(m, n))
- return ::testing::AssertionSuccess();
-
- return ::testing::AssertionFailure()
- << m_expr << " and " << n_expr << " (" << m << " and " << n
- << ") are not mutually prime, " << "as they have a common divisor "
- << SmallestPrimeCommonDivisor(m, n);
-}
-```
-
-With this predicate-formatter, we can use
-
-```
-EXPECT_PRED_FORMAT2(AssertMutuallyPrime, b, c);
-```
-
-to generate the message
-
-<pre>
-b and c (4 and 10) are not mutually prime, as they have a common divisor 2.<br>
-</pre>
-
-As you may have realized, many of the assertions we introduced earlier are
-special cases of `(EXPECT|ASSERT)_PRED_FORMAT*`. In fact, most of them are
-indeed defined using `(EXPECT|ASSERT)_PRED_FORMAT*`.
-
-_Availability_: Linux, Windows, Mac.
-
-
-## Floating-Point Comparison ##
-
-Comparing floating-point numbers is tricky. Due to round-off errors, it is
-very unlikely that two floating-points will match exactly. Therefore,
-`ASSERT_EQ` 's naive comparison usually doesn't work. And since floating-points
-can have a wide value range, no single fixed error bound works. It's better to
-compare by a fixed relative error bound, except for values close to 0 due to
-the loss of precision there.
-
-In general, for floating-point comparison to make sense, the user needs to
-carefully choose the error bound. If they don't want or care to, comparing in
-terms of Units in the Last Place (ULPs) is a good default, and Google Test
-provides assertions to do this. Full details about ULPs are quite long; if you
-want to learn more, see
-[this article on float comparison](http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm).
-
-### Floating-Point Macros ###
-
-| **Fatal assertion** | **Nonfatal assertion** | **Verifies** |
-|:--------------------|:-----------------------|:-------------|
-| `ASSERT_FLOAT_EQ(`_val1, val2_`);` | `EXPECT_FLOAT_EQ(`_val1, val2_`);` | the two `float` values are almost equal |
-| `ASSERT_DOUBLE_EQ(`_val1, val2_`);` | `EXPECT_DOUBLE_EQ(`_val1, val2_`);` | the two `double` values are almost equal |
-
-By "almost equal", we mean the two values are within 4 ULP's from each
-other.
-
-The following assertions allow you to choose the acceptable error bound:
-
-| **Fatal assertion** | **Nonfatal assertion** | **Verifies** |
-|:--------------------|:-----------------------|:-------------|
-| `ASSERT_NEAR(`_val1, val2, abs\_error_`);` | `EXPECT_NEAR`_(val1, val2, abs\_error_`);` | the difference between _val1_ and _val2_ doesn't exceed the given absolute error |
-
-_Availability_: Linux, Windows, Mac.
-
-### Floating-Point Predicate-Format Functions ###
-
-Some floating-point operations are useful, but not that often used. In order
-to avoid an explosion of new macros, we provide them as predicate-format
-functions that can be used in predicate assertion macros (e.g.
-`EXPECT_PRED_FORMAT2`, etc).
-
-```
-EXPECT_PRED_FORMAT2(::testing::FloatLE, val1, val2);
-EXPECT_PRED_FORMAT2(::testing::DoubleLE, val1, val2);
-```
-
-Verifies that _val1_ is less than, or almost equal to, _val2_. You can
-replace `EXPECT_PRED_FORMAT2` in the above table with `ASSERT_PRED_FORMAT2`.
-
-_Availability_: Linux, Windows, Mac.
-
-## Windows HRESULT assertions ##
-
-These assertions test for `HRESULT` success or failure.
-
-| **Fatal assertion** | **Nonfatal assertion** | **Verifies** |
-|:--------------------|:-----------------------|:-------------|
-| `ASSERT_HRESULT_SUCCEEDED(`_expression_`);` | `EXPECT_HRESULT_SUCCEEDED(`_expression_`);` | _expression_ is a success `HRESULT` |
-| `ASSERT_HRESULT_FAILED(`_expression_`);` | `EXPECT_HRESULT_FAILED(`_expression_`);` | _expression_ is a failure `HRESULT` |
-
-The generated output contains the human-readable error message
-associated with the `HRESULT` code returned by _expression_.
-
-You might use them like this:
-
-```
-CComPtr shell;
-ASSERT_HRESULT_SUCCEEDED(shell.CoCreateInstance(L"Shell.Application"));
-CComVariant empty;
-ASSERT_HRESULT_SUCCEEDED(shell->ShellExecute(CComBSTR(url), empty, empty, empty, empty));
-```
-
-_Availability_: Windows.
-
-## Type Assertions ##
-
-You can call the function
-```
-::testing::StaticAssertTypeEq<T1, T2>();
-```
-to assert that types `T1` and `T2` are the same. The function does
-nothing if the assertion is satisfied. If the types are different,
-the function call will fail to compile, and the compiler error message
-will likely (depending on the compiler) show you the actual values of
-`T1` and `T2`. This is mainly useful inside template code.
-
-_Caveat:_ When used inside a member function of a class template or a
-function template, `StaticAssertTypeEq<T1, T2>()` is effective _only if_
-the function is instantiated. For example, given:
-```
-template <typename T> class Foo {
- public:
- void Bar() { ::testing::StaticAssertTypeEq<int, T>(); }
-};
-```
-the code:
-```
-void Test1() { Foo<bool> foo; }
-```
-will _not_ generate a compiler error, as `Foo<bool>::Bar()` is never
-actually instantiated. Instead, you need:
-```
-void Test2() { Foo<bool> foo; foo.Bar(); }
-```
-to cause a compiler error.
-
-_Availability:_ Linux, Windows, Mac; since version 1.3.0.
-
-## Assertion Placement ##
-
-You can use assertions in any C++ function. In particular, it doesn't
-have to be a method of the test fixture class. The one constraint is
-that assertions that generate a fatal failure (`FAIL*` and `ASSERT_*`)
-can only be used in void-returning functions. This is a consequence of
-Google Test not using exceptions. By placing it in a non-void function
-you'll get a confusing compile error like
-`"error: void value not ignored as it ought to be"`.
-
-If you need to use assertions in a function that returns non-void, one option
-is to make the function return the value in an out parameter instead. For
-example, you can rewrite `T2 Foo(T1 x)` to `void Foo(T1 x, T2* result)`. You
-need to make sure that `*result` contains some sensible value even when the
-function returns prematurely. As the function now returns `void`, you can use
-any assertion inside of it.
-
-If changing the function's type is not an option, you should just use
-assertions that generate non-fatal failures, such as `ADD_FAILURE*` and
-`EXPECT_*`.
-
-_Note_: Constructors and destructors are not considered void-returning
-functions, according to the C++ language specification, and so you may not use
-fatal assertions in them. You'll get a compilation error if you try. A simple
-workaround is to transfer the entire body of the constructor or destructor to a
-private void-returning method. However, you should be aware that a fatal
-assertion failure in a constructor does not terminate the current test, as your
-intuition might suggest; it merely returns from the constructor early, possibly
-leaving your object in a partially-constructed state. Likewise, a fatal
-assertion failure in a destructor may leave your object in a
-partially-destructed state. Use assertions carefully in these situations!
-
-# Teaching Google Test How to Print Your Values #
-
-When a test assertion such as `EXPECT_EQ` fails, Google Test prints the
-argument values to help you debug. It does this using a
-user-extensible value printer.
-
-This printer knows how to print built-in C++ types, native arrays, STL
-containers, and any type that supports the `<<` operator. For other
-types, it prints the raw bytes in the value and hopes that you the
-user can figure it out.
-
-As mentioned earlier, the printer is _extensible_. That means
-you can teach it to do a better job at printing your particular type
-than to dump the bytes. To do that, define `<<` for your type:
-
-```
-#include <iostream>
-
-namespace foo {
-
-class Bar { ... }; // We want Google Test to be able to print instances of this.
-
-// It's important that the << operator is defined in the SAME
-// namespace that defines Bar. C++'s look-up rules rely on that.
-::std::ostream& operator<<(::std::ostream& os, const Bar& bar) {
- return os << bar.DebugString(); // whatever needed to print bar to os
-}
-
-} // namespace foo
-```
-
-Sometimes, this might not be an option: your team may consider it bad
-style to have a `<<` operator for `Bar`, or `Bar` may already have a
-`<<` operator that doesn't do what you want (and you cannot change
-it). If so, you can instead define a `PrintTo()` function like this:
-
-```
-#include <iostream>
-
-namespace foo {
-
-class Bar { ... };
-
-// It's important that PrintTo() is defined in the SAME
-// namespace that defines Bar. C++'s look-up rules rely on that.
-void PrintTo(const Bar& bar, ::std::ostream* os) {
- *os << bar.DebugString(); // whatever needed to print bar to os
-}
-
-} // namespace foo
-```
-
-If you have defined both `<<` and `PrintTo()`, the latter will be used
-when Google Test is concerned. This allows you to customize how the value
-appears in Google Test's output without affecting code that relies on the
-behavior of its `<<` operator.
-
-If you want to print a value `x` using Google Test's value printer
-yourself, just call `::testing::PrintToString(`_x_`)`, which
-returns an `std::string`:
-
-```
-vector<pair<Bar, int> > bar_ints = GetBarIntVector();
-
-EXPECT_TRUE(IsCorrectBarIntVector(bar_ints))
- << "bar_ints = " << ::testing::PrintToString(bar_ints);
-```
-
-# Death Tests #
-
-In many applications, there are assertions that can cause application failure
-if a condition is not met. These sanity checks, which ensure that the program
-is in a known good state, are there to fail at the earliest possible time after
-some program state is corrupted. If the assertion checks the wrong condition,
-then the program may proceed in an erroneous state, which could lead to memory
-corruption, security holes, or worse. Hence it is vitally important to test
-that such assertion statements work as expected.
-
-Since these precondition checks cause the processes to die, we call such tests
-_death tests_. More generally, any test that checks that a program terminates
-(except by throwing an exception) in an expected fashion is also a death test.
-
-Note that if a piece of code throws an exception, we don't consider it "death"
-for the purpose of death tests, as the caller of the code could catch the exception
-and avoid the crash. If you want to verify exceptions thrown by your code,
-see [Exception Assertions](#exception-assertions).
-
-If you want to test `EXPECT_*()/ASSERT_*()` failures in your test code, see [Catching Failures](#catching-failures).
-
-## How to Write a Death Test ##
-
-Google Test has the following macros to support death tests:
-
-| **Fatal assertion** | **Nonfatal assertion** | **Verifies** |
-|:--------------------|:-----------------------|:-------------|
-| `ASSERT_DEATH(`_statement, regex_`);` | `EXPECT_DEATH(`_statement, regex_`);` | _statement_ crashes with the given error |
-| `ASSERT_DEATH_IF_SUPPORTED(`_statement, regex_`);` | `EXPECT_DEATH_IF_SUPPORTED(`_statement, regex_`);` | if death tests are supported, verifies that _statement_ crashes with the given error; otherwise verifies nothing |
-| `ASSERT_EXIT(`_statement, predicate, regex_`);` | `EXPECT_EXIT(`_statement, predicate, regex_`);` |_statement_ exits with the given error and its exit code matches _predicate_ |
-
-where _statement_ is a statement that is expected to cause the process to
-die, _predicate_ is a function or function object that evaluates an integer
-exit status, and _regex_ is a regular expression that the stderr output of
-_statement_ is expected to match. Note that _statement_ can be _any valid
-statement_ (including _compound statement_) and doesn't have to be an
-expression.
-
-As usual, the `ASSERT` variants abort the current test function, while the
-`EXPECT` variants do not.
-
-**Note:** We use the word "crash" here to mean that the process
-terminates with a _non-zero_ exit status code. There are two
-possibilities: either the process has called `exit()` or `_exit()`
-with a non-zero value, or it may be killed by a signal.
-
-This means that if _statement_ terminates the process with a 0 exit
-code, it is _not_ considered a crash by `EXPECT_DEATH`. Use
-`EXPECT_EXIT` instead if this is the case, or if you want to restrict
-the exit code more precisely.
-
-A predicate here must accept an `int` and return a `bool`. The death test
-succeeds only if the predicate returns `true`. Google Test defines a few
-predicates that handle the most common cases:
-
-```
-::testing::ExitedWithCode(exit_code)
-```
-
-This expression is `true` if the program exited normally with the given exit
-code.
-
-```
-::testing::KilledBySignal(signal_number) // Not available on Windows.
-```
-
-This expression is `true` if the program was killed by the given signal.
-
-The `*_DEATH` macros are convenient wrappers for `*_EXIT` that use a predicate
-that verifies the process' exit code is non-zero.
-
-Note that a death test only cares about three things:
-
- 1. does _statement_ abort or exit the process?
- 1. (in the case of `ASSERT_EXIT` and `EXPECT_EXIT`) does the exit status satisfy _predicate_? Or (in the case of `ASSERT_DEATH` and `EXPECT_DEATH`) is the exit status non-zero? And
- 1. does the stderr output match _regex_?
-
-In particular, if _statement_ generates an `ASSERT_*` or `EXPECT_*` failure, it will **not** cause the death test to fail, as Google Test assertions don't abort the process.
-
-To write a death test, simply use one of the above macros inside your test
-function. For example,
-
-```
-TEST(MyDeathTest, Foo) {
- // This death test uses a compound statement.
- ASSERT_DEATH({ int n = 5; Foo(&n); }, "Error on line .* of Foo()");
-}
-TEST(MyDeathTest, NormalExit) {
- EXPECT_EXIT(NormalExit(), ::testing::ExitedWithCode(0), "Success");
-}
-TEST(MyDeathTest, KillMyself) {
- EXPECT_EXIT(KillMyself(), ::testing::KilledBySignal(SIGKILL), "Sending myself unblockable signal");
-}
-```
-
-verifies that:
-
- * calling `Foo(5)` causes the process to die with the given error message,
- * calling `NormalExit()` causes the process to print `"Success"` to stderr and exit with exit code 0, and
- * calling `KillMyself()` kills the process with signal `SIGKILL`.
-
-The test function body may contain other assertions and statements as well, if
-necessary.
-
-_Important:_ We strongly recommend you to follow the convention of naming your
-test case (not test) `*DeathTest` when it contains a death test, as
-demonstrated in the above example. The `Death Tests And Threads` section below
-explains why.
-
-If a test fixture class is shared by normal tests and death tests, you
-can use typedef to introduce an alias for the fixture class and avoid
-duplicating its code:
-```
-class FooTest : public ::testing::Test { ... };
-
-typedef FooTest FooDeathTest;
-
-TEST_F(FooTest, DoesThis) {
- // normal test
-}
-
-TEST_F(FooDeathTest, DoesThat) {
- // death test
-}
-```
-
-_Availability:_ Linux, Windows (requires MSVC 8.0 or above), Cygwin, and Mac (the latter three are supported since v1.3.0). `(ASSERT|EXPECT)_DEATH_IF_SUPPORTED` are new in v1.4.0.
-
-## Regular Expression Syntax ##
-
-On POSIX systems (e.g. Linux, Cygwin, and Mac), Google Test uses the
-[POSIX extended regular expression](http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap09.html#tag_09_04)
-syntax in death tests. To learn about this syntax, you may want to read this [Wikipedia entry](http://en.wikipedia.org/wiki/Regular_expression#POSIX_Extended_Regular_Expressions).
-
-On Windows, Google Test uses its own simple regular expression
-implementation. It lacks many features you can find in POSIX extended
-regular expressions. For example, we don't support union (`"x|y"`),
-grouping (`"(xy)"`), brackets (`"[xy]"`), and repetition count
-(`"x{5,7}"`), among others. Below is what we do support (Letter `A` denotes a
-literal character, period (`.`), or a single `\\` escape sequence; `x`
-and `y` denote regular expressions.):
-
-| `c` | matches any literal character `c` |
-|:----|:----------------------------------|
-| `\\d` | matches any decimal digit |
-| `\\D` | matches any character that's not a decimal digit |
-| `\\f` | matches `\f` |
-| `\\n` | matches `\n` |
-| `\\r` | matches `\r` |
-| `\\s` | matches any ASCII whitespace, including `\n` |
-| `\\S` | matches any character that's not a whitespace |
-| `\\t` | matches `\t` |
-| `\\v` | matches `\v` |
-| `\\w` | matches any letter, `_`, or decimal digit |
-| `\\W` | matches any character that `\\w` doesn't match |
-| `\\c` | matches any literal character `c`, which must be a punctuation |
-| `\\.` | matches the `.` character |
-| `.` | matches any single character except `\n` |
-| `A?` | matches 0 or 1 occurrences of `A` |
-| `A*` | matches 0 or many occurrences of `A` |
-| `A+` | matches 1 or many occurrences of `A` |
-| `^` | matches the beginning of a string (not that of each line) |
-| `$` | matches the end of a string (not that of each line) |
-| `xy` | matches `x` followed by `y` |
-
-To help you determine which capability is available on your system,
-Google Test defines macro `GTEST_USES_POSIX_RE=1` when it uses POSIX
-extended regular expressions, or `GTEST_USES_SIMPLE_RE=1` when it uses
-the simple version. If you want your death tests to work in both
-cases, you can either `#if` on these macros or use the more limited
-syntax only.
-
-## How It Works ##
-
-Under the hood, `ASSERT_EXIT()` spawns a new process and executes the
-death test statement in that process. The details of of how precisely
-that happens depend on the platform and the variable
-`::testing::GTEST_FLAG(death_test_style)` (which is initialized from the
-command-line flag `--gtest_death_test_style`).
-
- * On POSIX systems, `fork()` (or `clone()` on Linux) is used to spawn the child, after which:
- * If the variable's value is `"fast"`, the death test statement is immediately executed.
- * If the variable's value is `"threadsafe"`, the child process re-executes the unit test binary just as it was originally invoked, but with some extra flags to cause just the single death test under consideration to be run.
- * On Windows, the child is spawned using the `CreateProcess()` API, and re-executes the binary to cause just the single death test under consideration to be run - much like the `threadsafe` mode on POSIX.
-
-Other values for the variable are illegal and will cause the death test to
-fail. Currently, the flag's default value is `"fast"`. However, we reserve the
-right to change it in the future. Therefore, your tests should not depend on
-this.
-
-In either case, the parent process waits for the child process to complete, and checks that
-
- 1. the child's exit status satisfies the predicate, and
- 1. the child's stderr matches the regular expression.
-
-If the death test statement runs to completion without dying, the child
-process will nonetheless terminate, and the assertion fails.
-
-## Death Tests And Threads ##
-
-The reason for the two death test styles has to do with thread safety. Due to
-well-known problems with forking in the presence of threads, death tests should
-be run in a single-threaded context. Sometimes, however, it isn't feasible to
-arrange that kind of environment. For example, statically-initialized modules
-may start threads before main is ever reached. Once threads have been created,
-it may be difficult or impossible to clean them up.
-
-Google Test has three features intended to raise awareness of threading issues.
-
- 1. A warning is emitted if multiple threads are running when a death test is encountered.
- 1. Test cases with a name ending in "DeathTest" are run before all other tests.
- 1. It uses `clone()` instead of `fork()` to spawn the child process on Linux (`clone()` is not available on Cygwin and Mac), as `fork()` is more likely to cause the child to hang when the parent process has multiple threads.
-
-It's perfectly fine to create threads inside a death test statement; they are
-executed in a separate process and cannot affect the parent.
-
-## Death Test Styles ##
-
-The "threadsafe" death test style was introduced in order to help mitigate the
-risks of testing in a possibly multithreaded environment. It trades increased
-test execution time (potentially dramatically so) for improved thread safety.
-We suggest using the faster, default "fast" style unless your test has specific
-problems with it.
-
-You can choose a particular style of death tests by setting the flag
-programmatically:
-
-```
-::testing::FLAGS_gtest_death_test_style = "threadsafe";
-```
-
-You can do this in `main()` to set the style for all death tests in the
-binary, or in individual tests. Recall that flags are saved before running each
-test and restored afterwards, so you need not do that yourself. For example:
-
-```
-TEST(MyDeathTest, TestOne) {
- ::testing::FLAGS_gtest_death_test_style = "threadsafe";
- // This test is run in the "threadsafe" style:
- ASSERT_DEATH(ThisShouldDie(), "");
-}
-
-TEST(MyDeathTest, TestTwo) {
- // This test is run in the "fast" style:
- ASSERT_DEATH(ThisShouldDie(), "");
-}
-
-int main(int argc, char** argv) {
- ::testing::InitGoogleTest(&argc, argv);
- ::testing::FLAGS_gtest_death_test_style = "fast";
- return RUN_ALL_TESTS();
-}
-```
-
-## Caveats ##
-
-The _statement_ argument of `ASSERT_EXIT()` can be any valid C++ statement.
-If it leaves the current function via a `return` statement or by throwing an exception,
-the death test is considered to have failed. Some Google Test macros may return
-from the current function (e.g. `ASSERT_TRUE()`), so be sure to avoid them in _statement_.
-
-Since _statement_ runs in the child process, any in-memory side effect (e.g.
-modifying a variable, releasing memory, etc) it causes will _not_ be observable
-in the parent process. In particular, if you release memory in a death test,
-your program will fail the heap check as the parent process will never see the
-memory reclaimed. To solve this problem, you can
-
- 1. try not to free memory in a death test;
- 1. free the memory again in the parent process; or
- 1. do not use the heap checker in your program.
-
-Due to an implementation detail, you cannot place multiple death test
-assertions on the same line; otherwise, compilation will fail with an unobvious
-error message.
-
-Despite the improved thread safety afforded by the "threadsafe" style of death
-test, thread problems such as deadlock are still possible in the presence of
-handlers registered with `pthread_atfork(3)`.
-
-# Using Assertions in Sub-routines #
-
-## Adding Traces to Assertions ##
-
-If a test sub-routine is called from several places, when an assertion
-inside it fails, it can be hard to tell which invocation of the
-sub-routine the failure is from. You can alleviate this problem using
-extra logging or custom failure messages, but that usually clutters up
-your tests. A better solution is to use the `SCOPED_TRACE` macro:
-
-| `SCOPED_TRACE(`_message_`);` |
-|:-----------------------------|
-
-where _message_ can be anything streamable to `std::ostream`. This
-macro will cause the current file name, line number, and the given
-message to be added in every failure message. The effect will be
-undone when the control leaves the current lexical scope.
-
-For example,
-
-```
-10: void Sub1(int n) {
-11: EXPECT_EQ(1, Bar(n));
-12: EXPECT_EQ(2, Bar(n + 1));
-13: }
-14:
-15: TEST(FooTest, Bar) {
-16: {
-17: SCOPED_TRACE("A"); // This trace point will be included in
-18: // every failure in this scope.
-19: Sub1(1);
-20: }
-21: // Now it won't.
-22: Sub1(9);
-23: }
-```
-
-could result in messages like these:
-
-```
-path/to/foo_test.cc:11: Failure
-Value of: Bar(n)
-Expected: 1
- Actual: 2
- Trace:
-path/to/foo_test.cc:17: A
-
-path/to/foo_test.cc:12: Failure
-Value of: Bar(n + 1)
-Expected: 2
- Actual: 3
-```
-
-Without the trace, it would've been difficult to know which invocation
-of `Sub1()` the two failures come from respectively. (You could add an
-extra message to each assertion in `Sub1()` to indicate the value of
-`n`, but that's tedious.)
-
-Some tips on using `SCOPED_TRACE`:
-
- 1. With a suitable message, it's often enough to use `SCOPED_TRACE` at the beginning of a sub-routine, instead of at each call site.
- 1. When calling sub-routines inside a loop, make the loop iterator part of the message in `SCOPED_TRACE` such that you can know which iteration the failure is from.
- 1. Sometimes the line number of the trace point is enough for identifying the particular invocation of a sub-routine. In this case, you don't have to choose a unique message for `SCOPED_TRACE`. You can simply use `""`.
- 1. You can use `SCOPED_TRACE` in an inner scope when there is one in the outer scope. In this case, all active trace points will be included in the failure messages, in reverse order they are encountered.
- 1. The trace dump is clickable in Emacs' compilation buffer - hit return on a line number and you'll be taken to that line in the source file!
-
-_Availability:_ Linux, Windows, Mac.
-
-## Propagating Fatal Failures ##
-
-A common pitfall when using `ASSERT_*` and `FAIL*` is not understanding that
-when they fail they only abort the _current function_, not the entire test. For
-example, the following test will segfault:
-```
-void Subroutine() {
- // Generates a fatal failure and aborts the current function.
- ASSERT_EQ(1, 2);
- // The following won't be executed.
- ...
-}
-
-TEST(FooTest, Bar) {
- Subroutine();
- // The intended behavior is for the fatal failure
- // in Subroutine() to abort the entire test.
- // The actual behavior: the function goes on after Subroutine() returns.
- int* p = NULL;
- *p = 3; // Segfault!
-}
-```
-
-Since we don't use exceptions, it is technically impossible to
-implement the intended behavior here. To alleviate this, Google Test
-provides two solutions. You could use either the
-`(ASSERT|EXPECT)_NO_FATAL_FAILURE` assertions or the
-`HasFatalFailure()` function. They are described in the following two
-subsections.
-
-### Asserting on Subroutines ###
-
-As shown above, if your test calls a subroutine that has an `ASSERT_*`
-failure in it, the test will continue after the subroutine
-returns. This may not be what you want.
-
-Often people want fatal failures to propagate like exceptions. For
-that Google Test offers the following macros:
-
-| **Fatal assertion** | **Nonfatal assertion** | **Verifies** |
-|:--------------------|:-----------------------|:-------------|
-| `ASSERT_NO_FATAL_FAILURE(`_statement_`);` | `EXPECT_NO_FATAL_FAILURE(`_statement_`);` | _statement_ doesn't generate any new fatal failures in the current thread. |
-
-Only failures in the thread that executes the assertion are checked to
-determine the result of this type of assertions. If _statement_
-creates new threads, failures in these threads are ignored.
-
-Examples:
-
-```
-ASSERT_NO_FATAL_FAILURE(Foo());
-
-int i;
-EXPECT_NO_FATAL_FAILURE({
- i = Bar();
-});
-```
-
-_Availability:_ Linux, Windows, Mac. Assertions from multiple threads
-are currently not supported.
-
-### Checking for Failures in the Current Test ###
-
-`HasFatalFailure()` in the `::testing::Test` class returns `true` if an
-assertion in the current test has suffered a fatal failure. This
-allows functions to catch fatal failures in a sub-routine and return
-early.
-
-```
-class Test {
- public:
- ...
- static bool HasFatalFailure();
-};
-```
-
-The typical usage, which basically simulates the behavior of a thrown
-exception, is:
-
-```
-TEST(FooTest, Bar) {
- Subroutine();
- // Aborts if Subroutine() had a fatal failure.
- if (HasFatalFailure())
- return;
- // The following won't be executed.
- ...
-}
-```
-
-If `HasFatalFailure()` is used outside of `TEST()` , `TEST_F()` , or a test
-fixture, you must add the `::testing::Test::` prefix, as in:
-
-```
-if (::testing::Test::HasFatalFailure())
- return;
-```
-
-Similarly, `HasNonfatalFailure()` returns `true` if the current test
-has at least one non-fatal failure, and `HasFailure()` returns `true`
-if the current test has at least one failure of either kind.
-
-_Availability:_ Linux, Windows, Mac. `HasNonfatalFailure()` and
-`HasFailure()` are available since version 1.4.0.
-
-# Logging Additional Information #
-
-In your test code, you can call `RecordProperty("key", value)` to log
-additional information, where `value` can be either a string or an `int`. The _last_ value recorded for a key will be emitted to the XML output
-if you specify one. For example, the test
-
-```
-TEST_F(WidgetUsageTest, MinAndMaxWidgets) {
- RecordProperty("MaximumWidgets", ComputeMaxUsage());
- RecordProperty("MinimumWidgets", ComputeMinUsage());
-}
-```
-
-will output XML like this:
-
-```
-...
- <testcase name="MinAndMaxWidgets" status="run" time="6" classname="WidgetUsageTest"
- MaximumWidgets="12"
- MinimumWidgets="9" />
-...
-```
-
-_Note_:
- * `RecordProperty()` is a static member of the `Test` class. Therefore it needs to be prefixed with `::testing::Test::` if used outside of the `TEST` body and the test fixture class.
- * `key` must be a valid XML attribute name, and cannot conflict with the ones already used by Google Test (`name`, `status`, `time`, `classname`, `type_param`, and `value_param`).
- * Calling `RecordProperty()` outside of the lifespan of a test is allowed. If it's called outside of a test but between a test case's `SetUpTestCase()` and `TearDownTestCase()` methods, it will be attributed to the XML element for the test case. If it's called outside of all test cases (e.g. in a test environment), it will be attributed to the top-level XML element.
-
-_Availability_: Linux, Windows, Mac.
-
-# Sharing Resources Between Tests in the Same Test Case #
-
-
-
-Google Test creates a new test fixture object for each test in order to make
-tests independent and easier to debug. However, sometimes tests use resources
-that are expensive to set up, making the one-copy-per-test model prohibitively
-expensive.
-
-If the tests don't change the resource, there's no harm in them sharing a
-single resource copy. So, in addition to per-test set-up/tear-down, Google Test
-also supports per-test-case set-up/tear-down. To use it:
-
- 1. In your test fixture class (say `FooTest` ), define as `static` some member variables to hold the shared resources.
- 1. In the same test fixture class, define a `static void SetUpTestCase()` function (remember not to spell it as **`SetupTestCase`** with a small `u`!) to set up the shared resources and a `static void TearDownTestCase()` function to tear them down.
-
-That's it! Google Test automatically calls `SetUpTestCase()` before running the
-_first test_ in the `FooTest` test case (i.e. before creating the first
-`FooTest` object), and calls `TearDownTestCase()` after running the _last test_
-in it (i.e. after deleting the last `FooTest` object). In between, the tests
-can use the shared resources.
-
-Remember that the test order is undefined, so your code can't depend on a test
-preceding or following another. Also, the tests must either not modify the
-state of any shared resource, or, if they do modify the state, they must
-restore the state to its original value before passing control to the next
-test.
-
-Here's an example of per-test-case set-up and tear-down:
-```
-class FooTest : public ::testing::Test {
- protected:
- // Per-test-case set-up.
- // Called before the first test in this test case.
- // Can be omitted if not needed.
- static void SetUpTestCase() {
- shared_resource_ = new ...;
- }
-
- // Per-test-case tear-down.
- // Called after the last test in this test case.
- // Can be omitted if not needed.
- static void TearDownTestCase() {
- delete shared_resource_;
- shared_resource_ = NULL;
- }
-
- // You can define per-test set-up and tear-down logic as usual.
- virtual void SetUp() { ... }
- virtual void TearDown() { ... }
-
- // Some expensive resource shared by all tests.
- static T* shared_resource_;
-};
-
-T* FooTest::shared_resource_ = NULL;
-
-TEST_F(FooTest, Test1) {
- ... you can refer to shared_resource here ...
-}
-TEST_F(FooTest, Test2) {
- ... you can refer to shared_resource here ...
-}
-```
-
-_Availability:_ Linux, Windows, Mac.
-
-# Global Set-Up and Tear-Down #
-
-Just as you can do set-up and tear-down at the test level and the test case
-level, you can also do it at the test program level. Here's how.
-
-First, you subclass the `::testing::Environment` class to define a test
-environment, which knows how to set-up and tear-down:
-
-```
-class Environment {
- public:
- virtual ~Environment() {}
- // Override this to define how to set up the environment.
- virtual void SetUp() {}
- // Override this to define how to tear down the environment.
- virtual void TearDown() {}
-};
-```
-
-Then, you register an instance of your environment class with Google Test by
-calling the `::testing::AddGlobalTestEnvironment()` function:
-
-```
-Environment* AddGlobalTestEnvironment(Environment* env);
-```
-
-Now, when `RUN_ALL_TESTS()` is called, it first calls the `SetUp()` method of
-the environment object, then runs the tests if there was no fatal failures, and
-finally calls `TearDown()` of the environment object.
-
-It's OK to register multiple environment objects. In this case, their `SetUp()`
-will be called in the order they are registered, and their `TearDown()` will be
-called in the reverse order.
-
-Note that Google Test takes ownership of the registered environment objects.
-Therefore **do not delete them** by yourself.
-
-You should call `AddGlobalTestEnvironment()` before `RUN_ALL_TESTS()` is
-called, probably in `main()`. If you use `gtest_main`, you need to call
-this before `main()` starts for it to take effect. One way to do this is to
-define a global variable like this:
-
-```
-::testing::Environment* const foo_env = ::testing::AddGlobalTestEnvironment(new FooEnvironment);
-```
-
-However, we strongly recommend you to write your own `main()` and call
-`AddGlobalTestEnvironment()` there, as relying on initialization of global
-variables makes the code harder to read and may cause problems when you
-register multiple environments from different translation units and the
-environments have dependencies among them (remember that the compiler doesn't
-guarantee the order in which global variables from different translation units
-are initialized).
-
-_Availability:_ Linux, Windows, Mac.
-
-
-# Value Parameterized Tests #
-
-_Value-parameterized tests_ allow you to test your code with different
-parameters without writing multiple copies of the same test.
-
-Suppose you write a test for your code and then realize that your code is affected by a presence of a Boolean command line flag.
-
-```
-TEST(MyCodeTest, TestFoo) {
- // A code to test foo().
-}
-```
-
-Usually people factor their test code into a function with a Boolean parameter in such situations. The function sets the flag, then executes the testing code.
-
-```
-void TestFooHelper(bool flag_value) {
- flag = flag_value;
- // A code to test foo().
-}
-
-TEST(MyCodeTest, TestFoo) {
- TestFooHelper(false);
- TestFooHelper(true);
-}
-```
-
-But this setup has serious drawbacks. First, when a test assertion fails in your tests, it becomes unclear what value of the parameter caused it to fail. You can stream a clarifying message into your `EXPECT`/`ASSERT` statements, but it you'll have to do it with all of them. Second, you have to add one such helper function per test. What if you have ten tests? Twenty? A hundred?
-
-Value-parameterized tests will let you write your test only once and then easily instantiate and run it with an arbitrary number of parameter values.
-
-Here are some other situations when value-parameterized tests come handy:
-
- * You want to test different implementations of an OO interface.
- * You want to test your code over various inputs (a.k.a. data-driven testing). This feature is easy to abuse, so please exercise your good sense when doing it!
-
-## How to Write Value-Parameterized Tests ##
-
-To write value-parameterized tests, first you should define a fixture
-class. It must be derived from both `::testing::Test` and
-`::testing::WithParamInterface<T>` (the latter is a pure interface),
-where `T` is the type of your parameter values. For convenience, you
-can just derive the fixture class from `::testing::TestWithParam<T>`,
-which itself is derived from both `::testing::Test` and
-`::testing::WithParamInterface<T>`. `T` can be any copyable type. If
-it's a raw pointer, you are responsible for managing the lifespan of
-the pointed values.
-
-```
-class FooTest : public ::testing::TestWithParam<const char*> {
- // You can implement all the usual fixture class members here.
- // To access the test parameter, call GetParam() from class
- // TestWithParam<T>.
-};
-
-// Or, when you want to add parameters to a pre-existing fixture class:
-class BaseTest : public ::testing::Test {
- ...
-};
-class BarTest : public BaseTest,
- public ::testing::WithParamInterface<const char*> {
- ...
-};
-```
-
-Then, use the `TEST_P` macro to define as many test patterns using
-this fixture as you want. The `_P` suffix is for "parameterized" or
-"pattern", whichever you prefer to think.
-
-```
-TEST_P(FooTest, DoesBlah) {
- // Inside a test, access the test parameter with the GetParam() method
- // of the TestWithParam<T> class:
- EXPECT_TRUE(foo.Blah(GetParam()));
- ...
-}
-
-TEST_P(FooTest, HasBlahBlah) {
- ...
-}
-```
-
-Finally, you can use `INSTANTIATE_TEST_CASE_P` to instantiate the test
-case with any set of parameters you want. Google Test defines a number of
-functions for generating test parameters. They return what we call
-(surprise!) _parameter generators_. Here is a summary of them,
-which are all in the `testing` namespace:
-
-| `Range(begin, end[, step])` | Yields values `{begin, begin+step, begin+step+step, ...}`. The values do not include `end`. `step` defaults to 1. |
-|:----------------------------|:------------------------------------------------------------------------------------------------------------------|
-| `Values(v1, v2, ..., vN)` | Yields values `{v1, v2, ..., vN}`. |
-| `ValuesIn(container)` and `ValuesIn(begin, end)` | Yields values from a C-style array, an STL-style container, or an iterator range `[begin, end)`. `container`, `begin`, and `end` can be expressions whose values are determined at run time. |
-| `Bool()` | Yields sequence `{false, true}`. |
-| `Combine(g1, g2, ..., gN)` | Yields all combinations (the Cartesian product for the math savvy) of the values generated by the `N` generators. This is only available if your system provides the `<tr1/tuple>` header. If you are sure your system does, and Google Test disagrees, you can override it by defining `GTEST_HAS_TR1_TUPLE=1`. See comments in [include/gtest/internal/gtest-port.h](../include/gtest/internal/gtest-port.h) for more information. |
-
-For more details, see the comments at the definitions of these functions in the [source code](../include/gtest/gtest-param-test.h).
-
-The following statement will instantiate tests from the `FooTest` test case
-each with parameter values `"meeny"`, `"miny"`, and `"moe"`.
-
-```
-INSTANTIATE_TEST_CASE_P(InstantiationName,
- FooTest,
- ::testing::Values("meeny", "miny", "moe"));
-```
-
-To distinguish different instances of the pattern (yes, you can
-instantiate it more than once), the first argument to
-`INSTANTIATE_TEST_CASE_P` is a prefix that will be added to the actual
-test case name. Remember to pick unique prefixes for different
-instantiations. The tests from the instantiation above will have these
-names:
-
- * `InstantiationName/FooTest.DoesBlah/0` for `"meeny"`
- * `InstantiationName/FooTest.DoesBlah/1` for `"miny"`
- * `InstantiationName/FooTest.DoesBlah/2` for `"moe"`
- * `InstantiationName/FooTest.HasBlahBlah/0` for `"meeny"`
- * `InstantiationName/FooTest.HasBlahBlah/1` for `"miny"`
- * `InstantiationName/FooTest.HasBlahBlah/2` for `"moe"`
-
-You can use these names in [--gtest\_filter](#running-a-subset-of-the-tests).
-
-This statement will instantiate all tests from `FooTest` again, each
-with parameter values `"cat"` and `"dog"`:
-
-```
-const char* pets[] = {"cat", "dog"};
-INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest,
- ::testing::ValuesIn(pets));
-```
-
-The tests from the instantiation above will have these names:
-
- * `AnotherInstantiationName/FooTest.DoesBlah/0` for `"cat"`
- * `AnotherInstantiationName/FooTest.DoesBlah/1` for `"dog"`
- * `AnotherInstantiationName/FooTest.HasBlahBlah/0` for `"cat"`
- * `AnotherInstantiationName/FooTest.HasBlahBlah/1` for `"dog"`
-
-Please note that `INSTANTIATE_TEST_CASE_P` will instantiate _all_
-tests in the given test case, whether their definitions come before or
-_after_ the `INSTANTIATE_TEST_CASE_P` statement.
-
-You can see
-[these](../samples/sample7_unittest.cc)
-[files](../samples/sample8_unittest.cc) for more examples.
-
-_Availability_: Linux, Windows (requires MSVC 8.0 or above), Mac; since version 1.2.0.
-
-## Creating Value-Parameterized Abstract Tests ##
-
-In the above, we define and instantiate `FooTest` in the same source
-file. Sometimes you may want to define value-parameterized tests in a
-library and let other people instantiate them later. This pattern is
-known as <i>abstract tests</i>. As an example of its application, when you
-are designing an interface you can write a standard suite of abstract
-tests (perhaps using a factory function as the test parameter) that
-all implementations of the interface are expected to pass. When
-someone implements the interface, he can instantiate your suite to get
-all the interface-conformance tests for free.
-
-To define abstract tests, you should organize your code like this:
-
- 1. Put the definition of the parameterized test fixture class (e.g. `FooTest`) in a header file, say `foo_param_test.h`. Think of this as _declaring_ your abstract tests.
- 1. Put the `TEST_P` definitions in `foo_param_test.cc`, which includes `foo_param_test.h`. Think of this as _implementing_ your abstract tests.
-
-Once they are defined, you can instantiate them by including
-`foo_param_test.h`, invoking `INSTANTIATE_TEST_CASE_P()`, and linking
-with `foo_param_test.cc`. You can instantiate the same abstract test
-case multiple times, possibly in different source files.
-
-# Typed Tests #
-
-Suppose you have multiple implementations of the same interface and
-want to make sure that all of them satisfy some common requirements.
-Or, you may have defined several types that are supposed to conform to
-the same "concept" and you want to verify it. In both cases, you want
-the same test logic repeated for different types.
-
-While you can write one `TEST` or `TEST_F` for each type you want to
-test (and you may even factor the test logic into a function template
-that you invoke from the `TEST`), it's tedious and doesn't scale:
-if you want _m_ tests over _n_ types, you'll end up writing _m\*n_
-`TEST`s.
-
-_Typed tests_ allow you to repeat the same test logic over a list of
-types. You only need to write the test logic once, although you must
-know the type list when writing typed tests. Here's how you do it:
-
-First, define a fixture class template. It should be parameterized
-by a type. Remember to derive it from `::testing::Test`:
-
-```
-template <typename T>
-class FooTest : public ::testing::Test {
- public:
- ...
- typedef std::list<T> List;
- static T shared_;
- T value_;
-};
-```
-
-Next, associate a list of types with the test case, which will be
-repeated for each type in the list:
-
-```
-typedef ::testing::Types<char, int, unsigned int> MyTypes;
-TYPED_TEST_CASE(FooTest, MyTypes);
-```
-
-The `typedef` is necessary for the `TYPED_TEST_CASE` macro to parse
-correctly. Otherwise the compiler will think that each comma in the
-type list introduces a new macro argument.
-
-Then, use `TYPED_TEST()` instead of `TEST_F()` to define a typed test
-for this test case. You can repeat this as many times as you want:
-
-```
-TYPED_TEST(FooTest, DoesBlah) {
- // Inside a test, refer to the special name TypeParam to get the type
- // parameter. Since we are inside a derived class template, C++ requires
- // us to visit the members of FooTest via 'this'.
- TypeParam n = this->value_;
-
- // To visit static members of the fixture, add the 'TestFixture::'
- // prefix.
- n += TestFixture::shared_;
-
- // To refer to typedefs in the fixture, add the 'typename TestFixture::'
- // prefix. The 'typename' is required to satisfy the compiler.
- typename TestFixture::List values;
- values.push_back(n);
- ...
-}
-
-TYPED_TEST(FooTest, HasPropertyA) { ... }
-```
-
-You can see `samples/sample6_unittest.cc` for a complete example.
-
-_Availability:_ Linux, Windows (requires MSVC 8.0 or above), Mac;
-since version 1.1.0.
-
-# Type-Parameterized Tests #
-
-_Type-parameterized tests_ are like typed tests, except that they
-don't require you to know the list of types ahead of time. Instead,
-you can define the test logic first and instantiate it with different
-type lists later. You can even instantiate it more than once in the
-same program.
-
-If you are designing an interface or concept, you can define a suite
-of type-parameterized tests to verify properties that any valid
-implementation of the interface/concept should have. Then, the author
-of each implementation can just instantiate the test suite with his
-type to verify that it conforms to the requirements, without having to
-write similar tests repeatedly. Here's an example:
-
-First, define a fixture class template, as we did with typed tests:
-
-```
-template <typename T>
-class FooTest : public ::testing::Test {
- ...
-};
-```
-
-Next, declare that you will define a type-parameterized test case:
-
-```
-TYPED_TEST_CASE_P(FooTest);
-```
-
-The `_P` suffix is for "parameterized" or "pattern", whichever you
-prefer to think.
-
-Then, use `TYPED_TEST_P()` to define a type-parameterized test. You
-can repeat this as many times as you want:
-
-```
-TYPED_TEST_P(FooTest, DoesBlah) {
- // Inside a test, refer to TypeParam to get the type parameter.
- TypeParam n = 0;
- ...
-}
-
-TYPED_TEST_P(FooTest, HasPropertyA) { ... }
-```
-
-Now the tricky part: you need to register all test patterns using the
-`REGISTER_TYPED_TEST_CASE_P` macro before you can instantiate them.
-The first argument of the macro is the test case name; the rest are
-the names of the tests in this test case:
-
-```
-REGISTER_TYPED_TEST_CASE_P(FooTest,
- DoesBlah, HasPropertyA);
-```
-
-Finally, you are free to instantiate the pattern with the types you
-want. If you put the above code in a header file, you can `#include`
-it in multiple C++ source files and instantiate it multiple times.
-
-```
-typedef ::testing::Types<char, int, unsigned int> MyTypes;
-INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes);
-```
-
-To distinguish different instances of the pattern, the first argument
-to the `INSTANTIATE_TYPED_TEST_CASE_P` macro is a prefix that will be
-added to the actual test case name. Remember to pick unique prefixes
-for different instances.
-
-In the special case where the type list contains only one type, you
-can write that type directly without `::testing::Types<...>`, like this:
-
-```
-INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, int);
-```
-
-You can see `samples/sample6_unittest.cc` for a complete example.
-
-_Availability:_ Linux, Windows (requires MSVC 8.0 or above), Mac;
-since version 1.1.0.
-
-# Testing Private Code #
-
-If you change your software's internal implementation, your tests should not
-break as long as the change is not observable by users. Therefore, per the
-_black-box testing principle_, most of the time you should test your code
-through its public interfaces.
-
-If you still find yourself needing to test internal implementation code,
-consider if there's a better design that wouldn't require you to do so. If you
-absolutely have to test non-public interface code though, you can. There are
-two cases to consider:
-
- * Static functions (_not_ the same as static member functions!) or unnamed namespaces, and
- * Private or protected class members
-
-## Static Functions ##
-
-Both static functions and definitions/declarations in an unnamed namespace are
-only visible within the same translation unit. To test them, you can `#include`
-the entire `.cc` file being tested in your `*_test.cc` file. (`#include`ing `.cc`
-files is not a good way to reuse code - you should not do this in production
-code!)
-
-However, a better approach is to move the private code into the
-`foo::internal` namespace, where `foo` is the namespace your project normally
-uses, and put the private declarations in a `*-internal.h` file. Your
-production `.cc` files and your tests are allowed to include this internal
-header, but your clients are not. This way, you can fully test your internal
-implementation without leaking it to your clients.
-
-## Private Class Members ##
-
-Private class members are only accessible from within the class or by friends.
-To access a class' private members, you can declare your test fixture as a
-friend to the class and define accessors in your fixture. Tests using the
-fixture can then access the private members of your production class via the
-accessors in the fixture. Note that even though your fixture is a friend to
-your production class, your tests are not automatically friends to it, as they
-are technically defined in sub-classes of the fixture.
-
-Another way to test private members is to refactor them into an implementation
-class, which is then declared in a `*-internal.h` file. Your clients aren't
-allowed to include this header but your tests can. Such is called the Pimpl
-(Private Implementation) idiom.
-
-Or, you can declare an individual test as a friend of your class by adding this
-line in the class body:
-
-```
-FRIEND_TEST(TestCaseName, TestName);
-```
-
-For example,
-```
-// foo.h
-#include "gtest/gtest_prod.h"
-
-// Defines FRIEND_TEST.
-class Foo {
- ...
- private:
- FRIEND_TEST(FooTest, BarReturnsZeroOnNull);
- int Bar(void* x);
-};
-
-// foo_test.cc
-...
-TEST(FooTest, BarReturnsZeroOnNull) {
- Foo foo;
- EXPECT_EQ(0, foo.Bar(NULL));
- // Uses Foo's private member Bar().
-}
-```
-
-Pay special attention when your class is defined in a namespace, as you should
-define your test fixtures and tests in the same namespace if you want them to
-be friends of your class. For example, if the code to be tested looks like:
-
-```
-namespace my_namespace {
-
-class Foo {
- friend class FooTest;
- FRIEND_TEST(FooTest, Bar);
- FRIEND_TEST(FooTest, Baz);
- ...
- definition of the class Foo
- ...
-};
-
-} // namespace my_namespace
-```
-
-Your test code should be something like:
-
-```
-namespace my_namespace {
-class FooTest : public ::testing::Test {
- protected:
- ...
-};
-
-TEST_F(FooTest, Bar) { ... }
-TEST_F(FooTest, Baz) { ... }
-
-} // namespace my_namespace
-```
-
-# Catching Failures #
-
-If you are building a testing utility on top of Google Test, you'll
-want to test your utility. What framework would you use to test it?
-Google Test, of course.
-
-The challenge is to verify that your testing utility reports failures
-correctly. In frameworks that report a failure by throwing an
-exception, you could catch the exception and assert on it. But Google
-Test doesn't use exceptions, so how do we test that a piece of code
-generates an expected failure?
-
-`"gtest/gtest-spi.h"` contains some constructs to do this. After
-`#include`ing this header, you can use
-
-| `EXPECT_FATAL_FAILURE(`_statement, substring_`);` |
-|:--------------------------------------------------|
-
-to assert that _statement_ generates a fatal (e.g. `ASSERT_*`) failure
-whose message contains the given _substring_, or use
-
-| `EXPECT_NONFATAL_FAILURE(`_statement, substring_`);` |
-|:-----------------------------------------------------|
-
-if you are expecting a non-fatal (e.g. `EXPECT_*`) failure.
-
-For technical reasons, there are some caveats:
-
- 1. You cannot stream a failure message to either macro.
- 1. _statement_ in `EXPECT_FATAL_FAILURE()` cannot reference local non-static variables or non-static members of `this` object.
- 1. _statement_ in `EXPECT_FATAL_FAILURE()` cannot return a value.
-
-_Note:_ Google Test is designed with threads in mind. Once the
-synchronization primitives in `"gtest/internal/gtest-port.h"` have
-been implemented, Google Test will become thread-safe, meaning that
-you can then use assertions in multiple threads concurrently. Before
-that, however, Google Test only supports single-threaded usage. Once
-thread-safe, `EXPECT_FATAL_FAILURE()` and `EXPECT_NONFATAL_FAILURE()`
-will capture failures in the current thread only. If _statement_
-creates new threads, failures in these threads will be ignored. If
-you want to capture failures from all threads instead, you should use
-the following macros:
-
-| `EXPECT_FATAL_FAILURE_ON_ALL_THREADS(`_statement, substring_`);` |
-|:-----------------------------------------------------------------|
-| `EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(`_statement, substring_`);` |
-
-# Getting the Current Test's Name #
-
-Sometimes a function may need to know the name of the currently running test.
-For example, you may be using the `SetUp()` method of your test fixture to set
-the golden file name based on which test is running. The `::testing::TestInfo`
-class has this information:
-
-```
-namespace testing {
-
-class TestInfo {
- public:
- // Returns the test case name and the test name, respectively.
- //
- // Do NOT delete or free the return value - it's managed by the
- // TestInfo class.
- const char* test_case_name() const;
- const char* name() const;
-};
-
-} // namespace testing
-```
-
-
-> To obtain a `TestInfo` object for the currently running test, call
-`current_test_info()` on the `UnitTest` singleton object:
-
-```
-// Gets information about the currently running test.
-// Do NOT delete the returned object - it's managed by the UnitTest class.
-const ::testing::TestInfo* const test_info =
- ::testing::UnitTest::GetInstance()->current_test_info();
-printf("We are in test %s of test case %s.\n",
- test_info->name(), test_info->test_case_name());
-```
-
-`current_test_info()` returns a null pointer if no test is running. In
-particular, you cannot find the test case name in `TestCaseSetUp()`,
-`TestCaseTearDown()` (where you know the test case name implicitly), or
-functions called from them.
-
-_Availability:_ Linux, Windows, Mac.
-
-# Extending Google Test by Handling Test Events #
-
-Google Test provides an <b>event listener API</b> to let you receive
-notifications about the progress of a test program and test
-failures. The events you can listen to include the start and end of
-the test program, a test case, or a test method, among others. You may
-use this API to augment or replace the standard console output,
-replace the XML output, or provide a completely different form of
-output, such as a GUI or a database. You can also use test events as
-checkpoints to implement a resource leak checker, for example.
-
-_Availability:_ Linux, Windows, Mac; since v1.4.0.
-
-## Defining Event Listeners ##
-
-To define a event listener, you subclass either
-[testing::TestEventListener](../include/gtest/gtest.h#L991)
-or [testing::EmptyTestEventListener](../include/gtest/gtest.h#L1044).
-The former is an (abstract) interface, where <i>each pure virtual method<br>
-can be overridden to handle a test event</i> (For example, when a test
-starts, the `OnTestStart()` method will be called.). The latter provides
-an empty implementation of all methods in the interface, such that a
-subclass only needs to override the methods it cares about.
-
-When an event is fired, its context is passed to the handler function
-as an argument. The following argument types are used:
- * [UnitTest](../include/gtest/gtest.h#L1151) reflects the state of the entire test program,
- * [TestCase](../include/gtest/gtest.h#L778) has information about a test case, which can contain one or more tests,
- * [TestInfo](../include/gtest/gtest.h#L644) contains the state of a test, and
- * [TestPartResult](../include/gtest/gtest-test-part.h#L47) represents the result of a test assertion.
-
-An event handler function can examine the argument it receives to find
-out interesting information about the event and the test program's
-state. Here's an example:
-
-```
- class MinimalistPrinter : public ::testing::EmptyTestEventListener {
- // Called before a test starts.
- virtual void OnTestStart(const ::testing::TestInfo& test_info) {
- printf("*** Test %s.%s starting.\n",
- test_info.test_case_name(), test_info.name());
- }
-
- // Called after a failed assertion or a SUCCEED() invocation.
- virtual void OnTestPartResult(
- const ::testing::TestPartResult& test_part_result) {
- printf("%s in %s:%d\n%s\n",
- test_part_result.failed() ? "*** Failure" : "Success",
- test_part_result.file_name(),
- test_part_result.line_number(),
- test_part_result.summary());
- }
-
- // Called after a test ends.
- virtual void OnTestEnd(const ::testing::TestInfo& test_info) {
- printf("*** Test %s.%s ending.\n",
- test_info.test_case_name(), test_info.name());
- }
- };
-```
-
-## Using Event Listeners ##
-
-To use the event listener you have defined, add an instance of it to
-the Google Test event listener list (represented by class
-[TestEventListeners](../include/gtest/gtest.h#L1064)
-- note the "s" at the end of the name) in your
-`main()` function, before calling `RUN_ALL_TESTS()`:
-```
-int main(int argc, char** argv) {
- ::testing::InitGoogleTest(&argc, argv);
- // Gets hold of the event listener list.
- ::testing::TestEventListeners& listeners =
- ::testing::UnitTest::GetInstance()->listeners();
- // Adds a listener to the end. Google Test takes the ownership.
- listeners.Append(new MinimalistPrinter);
- return RUN_ALL_TESTS();
-}
-```
-
-There's only one problem: the default test result printer is still in
-effect, so its output will mingle with the output from your minimalist
-printer. To suppress the default printer, just release it from the
-event listener list and delete it. You can do so by adding one line:
-```
- ...
- delete listeners.Release(listeners.default_result_printer());
- listeners.Append(new MinimalistPrinter);
- return RUN_ALL_TESTS();
-```
-
-Now, sit back and enjoy a completely different output from your
-tests. For more details, you can read this
-[sample](../samples/sample9_unittest.cc).
-
-You may append more than one listener to the list. When an `On*Start()`
-or `OnTestPartResult()` event is fired, the listeners will receive it in
-the order they appear in the list (since new listeners are added to
-the end of the list, the default text printer and the default XML
-generator will receive the event first). An `On*End()` event will be
-received by the listeners in the _reverse_ order. This allows output by
-listeners added later to be framed by output from listeners added
-earlier.
-
-## Generating Failures in Listeners ##
-
-You may use failure-raising macros (`EXPECT_*()`, `ASSERT_*()`,
-`FAIL()`, etc) when processing an event. There are some restrictions:
-
- 1. You cannot generate any failure in `OnTestPartResult()` (otherwise it will cause `OnTestPartResult()` to be called recursively).
- 1. A listener that handles `OnTestPartResult()` is not allowed to generate any failure.
-
-When you add listeners to the listener list, you should put listeners
-that handle `OnTestPartResult()` _before_ listeners that can generate
-failures. This ensures that failures generated by the latter are
-attributed to the right test by the former.
-
-We have a sample of failure-raising listener
-[here](../samples/sample10_unittest.cc).
-
-# Running Test Programs: Advanced Options #
-
-Google Test test programs are ordinary executables. Once built, you can run
-them directly and affect their behavior via the following environment variables
-and/or command line flags. For the flags to work, your programs must call
-`::testing::InitGoogleTest()` before calling `RUN_ALL_TESTS()`.
-
-To see a list of supported flags and their usage, please run your test
-program with the `--help` flag. You can also use `-h`, `-?`, or `/?`
-for short. This feature is added in version 1.3.0.
-
-If an option is specified both by an environment variable and by a
-flag, the latter takes precedence. Most of the options can also be
-set/read in code: to access the value of command line flag
-`--gtest_foo`, write `::testing::GTEST_FLAG(foo)`. A common pattern is
-to set the value of a flag before calling `::testing::InitGoogleTest()`
-to change the default value of the flag:
-```
-int main(int argc, char** argv) {
- // Disables elapsed time by default.
- ::testing::GTEST_FLAG(print_time) = false;
-
- // This allows the user to override the flag on the command line.
- ::testing::InitGoogleTest(&argc, argv);
-
- return RUN_ALL_TESTS();
-}
-```
-
-## Selecting Tests ##
-
-This section shows various options for choosing which tests to run.
-
-### Listing Test Names ###
-
-Sometimes it is necessary to list the available tests in a program before
-running them so that a filter may be applied if needed. Including the flag
-`--gtest_list_tests` overrides all other flags and lists tests in the following
-format:
-```
-TestCase1.
- TestName1
- TestName2
-TestCase2.
- TestName
-```
-
-None of the tests listed are actually run if the flag is provided. There is no
-corresponding environment variable for this flag.
-
-_Availability:_ Linux, Windows, Mac.
-
-### Running a Subset of the Tests ###
-
-By default, a Google Test program runs all tests the user has defined.
-Sometimes, you want to run only a subset of the tests (e.g. for debugging or
-quickly verifying a change). If you set the `GTEST_FILTER` environment variable
-or the `--gtest_filter` flag to a filter string, Google Test will only run the
-tests whose full names (in the form of `TestCaseName.TestName`) match the
-filter.
-
-The format of a filter is a '`:`'-separated list of wildcard patterns (called
-the positive patterns) optionally followed by a '`-`' and another
-'`:`'-separated pattern list (called the negative patterns). A test matches the
-filter if and only if it matches any of the positive patterns but does not
-match any of the negative patterns.
-
-A pattern may contain `'*'` (matches any string) or `'?'` (matches any single
-character). For convenience, the filter `'*-NegativePatterns'` can be also
-written as `'-NegativePatterns'`.
-
-For example:
-
- * `./foo_test` Has no flag, and thus runs all its tests.
- * `./foo_test --gtest_filter=*` Also runs everything, due to the single match-everything `*` value.
- * `./foo_test --gtest_filter=FooTest.*` Runs everything in test case `FooTest`.
- * `./foo_test --gtest_filter=*Null*:*Constructor*` Runs any test whose full name contains either `"Null"` or `"Constructor"`.
- * `./foo_test --gtest_filter=-*DeathTest.*` Runs all non-death tests.
- * `./foo_test --gtest_filter=FooTest.*-FooTest.Bar` Runs everything in test case `FooTest` except `FooTest.Bar`.
-
-_Availability:_ Linux, Windows, Mac.
-
-### Temporarily Disabling Tests ###
-
-If you have a broken test that you cannot fix right away, you can add the
-`DISABLED_` prefix to its name. This will exclude it from execution. This is
-better than commenting out the code or using `#if 0`, as disabled tests are
-still compiled (and thus won't rot).
-
-If you need to disable all tests in a test case, you can either add `DISABLED_`
-to the front of the name of each test, or alternatively add it to the front of
-the test case name.
-
-For example, the following tests won't be run by Google Test, even though they
-will still be compiled:
-
-```
-// Tests that Foo does Abc.
-TEST(FooTest, DISABLED_DoesAbc) { ... }
-
-class DISABLED_BarTest : public ::testing::Test { ... };
-
-// Tests that Bar does Xyz.
-TEST_F(DISABLED_BarTest, DoesXyz) { ... }
-```
-
-_Note:_ This feature should only be used for temporary pain-relief. You still
-have to fix the disabled tests at a later date. As a reminder, Google Test will
-print a banner warning you if a test program contains any disabled tests.
-
-_Tip:_ You can easily count the number of disabled tests you have
-using `grep`. This number can be used as a metric for improving your
-test quality.
-
-_Availability:_ Linux, Windows, Mac.
-
-### Temporarily Enabling Disabled Tests ###
-
-To include [disabled tests](#temporarily-disabling-tests) in test
-execution, just invoke the test program with the
-`--gtest_also_run_disabled_tests` flag or set the
-`GTEST_ALSO_RUN_DISABLED_TESTS` environment variable to a value other
-than `0`. You can combine this with the
-[--gtest\_filter](#running-a-subset-of-the-tests) flag to further select
-which disabled tests to run.
-
-_Availability:_ Linux, Windows, Mac; since version 1.3.0.
-
-## Repeating the Tests ##
-
-Once in a while you'll run into a test whose result is hit-or-miss. Perhaps it
-will fail only 1% of the time, making it rather hard to reproduce the bug under
-a debugger. This can be a major source of frustration.
-
-The `--gtest_repeat` flag allows you to repeat all (or selected) test methods
-in a program many times. Hopefully, a flaky test will eventually fail and give
-you a chance to debug. Here's how to use it:
-
-| `$ foo_test --gtest_repeat=1000` | Repeat foo\_test 1000 times and don't stop at failures. |
-|:---------------------------------|:--------------------------------------------------------|
-| `$ foo_test --gtest_repeat=-1` | A negative count means repeating forever. |
-| `$ foo_test --gtest_repeat=1000 --gtest_break_on_failure` | Repeat foo\_test 1000 times, stopping at the first failure. This is especially useful when running under a debugger: when the testfails, it will drop into the debugger and you can then inspect variables and stacks. |
-| `$ foo_test --gtest_repeat=1000 --gtest_filter=FooBar` | Repeat the tests whose name matches the filter 1000 times. |
-
-If your test program contains global set-up/tear-down code registered
-using `AddGlobalTestEnvironment()`, it will be repeated in each
-iteration as well, as the flakiness may be in it. You can also specify
-the repeat count by setting the `GTEST_REPEAT` environment variable.
-
-_Availability:_ Linux, Windows, Mac.
-
-## Shuffling the Tests ##
-
-You can specify the `--gtest_shuffle` flag (or set the `GTEST_SHUFFLE`
-environment variable to `1`) to run the tests in a program in a random
-order. This helps to reveal bad dependencies between tests.
-
-By default, Google Test uses a random seed calculated from the current
-time. Therefore you'll get a different order every time. The console
-output includes the random seed value, such that you can reproduce an
-order-related test failure later. To specify the random seed
-explicitly, use the `--gtest_random_seed=SEED` flag (or set the
-`GTEST_RANDOM_SEED` environment variable), where `SEED` is an integer
-between 0 and 99999. The seed value 0 is special: it tells Google Test
-to do the default behavior of calculating the seed from the current
-time.
-
-If you combine this with `--gtest_repeat=N`, Google Test will pick a
-different random seed and re-shuffle the tests in each iteration.
-
-_Availability:_ Linux, Windows, Mac; since v1.4.0.
-
-## Controlling Test Output ##
-
-This section teaches how to tweak the way test results are reported.
-
-### Colored Terminal Output ###
-
-Google Test can use colors in its terminal output to make it easier to spot
-the separation between tests, and whether tests passed.
-
-You can set the GTEST\_COLOR environment variable or set the `--gtest_color`
-command line flag to `yes`, `no`, or `auto` (the default) to enable colors,
-disable colors, or let Google Test decide. When the value is `auto`, Google
-Test will use colors if and only if the output goes to a terminal and (on
-non-Windows platforms) the `TERM` environment variable is set to `xterm` or
-`xterm-color`.
-
-_Availability:_ Linux, Windows, Mac.
-
-### Suppressing the Elapsed Time ###
-
-By default, Google Test prints the time it takes to run each test. To
-suppress that, run the test program with the `--gtest_print_time=0`
-command line flag. Setting the `GTEST_PRINT_TIME` environment
-variable to `0` has the same effect.
-
-_Availability:_ Linux, Windows, Mac. (In Google Test 1.3.0 and lower,
-the default behavior is that the elapsed time is **not** printed.)
-
-### Generating an XML Report ###
-
-Google Test can emit a detailed XML report to a file in addition to its normal
-textual output. The report contains the duration of each test, and thus can
-help you identify slow tests.
-
-To generate the XML report, set the `GTEST_OUTPUT` environment variable or the
-`--gtest_output` flag to the string `"xml:_path_to_output_file_"`, which will
-create the file at the given location. You can also just use the string
-`"xml"`, in which case the output can be found in the `test_detail.xml` file in
-the current directory.
-
-If you specify a directory (for example, `"xml:output/directory/"` on Linux or
-`"xml:output\directory\"` on Windows), Google Test will create the XML file in
-that directory, named after the test executable (e.g. `foo_test.xml` for test
-program `foo_test` or `foo_test.exe`). If the file already exists (perhaps left
-over from a previous run), Google Test will pick a different name (e.g.
-`foo_test_1.xml`) to avoid overwriting it.
-
-The report uses the format described here. It is based on the
-`junitreport` Ant task and can be parsed by popular continuous build
-systems like [Hudson](https://hudson.dev.java.net/). Since that format
-was originally intended for Java, a little interpretation is required
-to make it apply to Google Test tests, as shown here:
-
-```
-<testsuites name="AllTests" ...>
- <testsuite name="test_case_name" ...>
- <testcase name="test_name" ...>
- <failure message="..."/>
- <failure message="..."/>
- <failure message="..."/>
- </testcase>
- </testsuite>
-</testsuites>
-```
-
- * The root `<testsuites>` element corresponds to the entire test program.
- * `<testsuite>` elements correspond to Google Test test cases.
- * `<testcase>` elements correspond to Google Test test functions.
-
-For instance, the following program
-
-```
-TEST(MathTest, Addition) { ... }
-TEST(MathTest, Subtraction) { ... }
-TEST(LogicTest, NonContradiction) { ... }
-```
-
-could generate this report:
-
-```
-<?xml version="1.0" encoding="UTF-8"?>
-<testsuites tests="3" failures="1" errors="0" time="35" name="AllTests">
- <testsuite name="MathTest" tests="2" failures="1" errors="0" time="15">
- <testcase name="Addition" status="run" time="7" classname="">
- <failure message="Value of: add(1, 1)&#x0A; Actual: 3&#x0A;Expected: 2" type=""/>
- <failure message="Value of: add(1, -1)&#x0A; Actual: 1&#x0A;Expected: 0" type=""/>
- </testcase>
- <testcase name="Subtraction" status="run" time="5" classname="">
- </testcase>
- </testsuite>
- <testsuite name="LogicTest" tests="1" failures="0" errors="0" time="5">
- <testcase name="NonContradiction" status="run" time="5" classname="">
- </testcase>
- </testsuite>
-</testsuites>
-```
-
-Things to note:
-
- * The `tests` attribute of a `<testsuites>` or `<testsuite>` element tells how many test functions the Google Test program or test case contains, while the `failures` attribute tells how many of them failed.
- * The `time` attribute expresses the duration of the test, test case, or entire test program in milliseconds.
- * Each `<failure>` element corresponds to a single failed Google Test assertion.
- * Some JUnit concepts don't apply to Google Test, yet we have to conform to the DTD. Therefore you'll see some dummy elements and attributes in the report. You can safely ignore these parts.
-
-_Availability:_ Linux, Windows, Mac.
-
-## Controlling How Failures Are Reported ##
-
-### Turning Assertion Failures into Break-Points ###
-
-When running test programs under a debugger, it's very convenient if the
-debugger can catch an assertion failure and automatically drop into interactive
-mode. Google Test's _break-on-failure_ mode supports this behavior.
-
-To enable it, set the `GTEST_BREAK_ON_FAILURE` environment variable to a value
-other than `0` . Alternatively, you can use the `--gtest_break_on_failure`
-command line flag.
-
-_Availability:_ Linux, Windows, Mac.
-
-### Disabling Catching Test-Thrown Exceptions ###
-
-Google Test can be used either with or without exceptions enabled. If
-a test throws a C++ exception or (on Windows) a structured exception
-(SEH), by default Google Test catches it, reports it as a test
-failure, and continues with the next test method. This maximizes the
-coverage of a test run. Also, on Windows an uncaught exception will
-cause a pop-up window, so catching the exceptions allows you to run
-the tests automatically.
-
-When debugging the test failures, however, you may instead want the
-exceptions to be handled by the debugger, such that you can examine
-the call stack when an exception is thrown. To achieve that, set the
-`GTEST_CATCH_EXCEPTIONS` environment variable to `0`, or use the
-`--gtest_catch_exceptions=0` flag when running the tests.
-
-**Availability**: Linux, Windows, Mac.
-
-### Letting Another Testing Framework Drive ###
-
-If you work on a project that has already been using another testing
-framework and is not ready to completely switch to Google Test yet,
-you can get much of Google Test's benefit by using its assertions in
-your existing tests. Just change your `main()` function to look
-like:
-
-```
-#include "gtest/gtest.h"
-
-int main(int argc, char** argv) {
- ::testing::GTEST_FLAG(throw_on_failure) = true;
- // Important: Google Test must be initialized.
- ::testing::InitGoogleTest(&argc, argv);
-
- ... whatever your existing testing framework requires ...
-}
-```
-
-With that, you can use Google Test assertions in addition to the
-native assertions your testing framework provides, for example:
-
-```
-void TestFooDoesBar() {
- Foo foo;
- EXPECT_LE(foo.Bar(1), 100); // A Google Test assertion.
- CPPUNIT_ASSERT(foo.IsEmpty()); // A native assertion.
-}
-```
-
-If a Google Test assertion fails, it will print an error message and
-throw an exception, which will be treated as a failure by your host
-testing framework. If you compile your code with exceptions disabled,
-a failed Google Test assertion will instead exit your program with a
-non-zero code, which will also signal a test failure to your test
-runner.
-
-If you don't write `::testing::GTEST_FLAG(throw_on_failure) = true;` in
-your `main()`, you can alternatively enable this feature by specifying
-the `--gtest_throw_on_failure` flag on the command-line or setting the
-`GTEST_THROW_ON_FAILURE` environment variable to a non-zero value.
-
-Death tests are _not_ supported when other test framework is used to organize tests.
-
-_Availability:_ Linux, Windows, Mac; since v1.3.0.
-
-## Distributing Test Functions to Multiple Machines ##
-
-If you have more than one machine you can use to run a test program,
-you might want to run the test functions in parallel and get the
-result faster. We call this technique _sharding_, where each machine
-is called a _shard_.
-
-Google Test is compatible with test sharding. To take advantage of
-this feature, your test runner (not part of Google Test) needs to do
-the following:
-
- 1. Allocate a number of machines (shards) to run the tests.
- 1. On each shard, set the `GTEST_TOTAL_SHARDS` environment variable to the total number of shards. It must be the same for all shards.
- 1. On each shard, set the `GTEST_SHARD_INDEX` environment variable to the index of the shard. Different shards must be assigned different indices, which must be in the range `[0, GTEST_TOTAL_SHARDS - 1]`.
- 1. Run the same test program on all shards. When Google Test sees the above two environment variables, it will select a subset of the test functions to run. Across all shards, each test function in the program will be run exactly once.
- 1. Wait for all shards to finish, then collect and report the results.
-
-Your project may have tests that were written without Google Test and
-thus don't understand this protocol. In order for your test runner to
-figure out which test supports sharding, it can set the environment
-variable `GTEST_SHARD_STATUS_FILE` to a non-existent file path. If a
-test program supports sharding, it will create this file to
-acknowledge the fact (the actual contents of the file are not
-important at this time; although we may stick some useful information
-in it in the future.); otherwise it will not create it.
-
-Here's an example to make it clear. Suppose you have a test program
-`foo_test` that contains the following 5 test functions:
-```
-TEST(A, V)
-TEST(A, W)
-TEST(B, X)
-TEST(B, Y)
-TEST(B, Z)
-```
-and you have 3 machines at your disposal. To run the test functions in
-parallel, you would set `GTEST_TOTAL_SHARDS` to 3 on all machines, and
-set `GTEST_SHARD_INDEX` to 0, 1, and 2 on the machines respectively.
-Then you would run the same `foo_test` on each machine.
-
-Google Test reserves the right to change how the work is distributed
-across the shards, but here's one possible scenario:
-
- * Machine #0 runs `A.V` and `B.X`.
- * Machine #1 runs `A.W` and `B.Y`.
- * Machine #2 runs `B.Z`.
-
-_Availability:_ Linux, Windows, Mac; since version 1.3.0.
-
-# Fusing Google Test Source Files #
-
-Google Test's implementation consists of ~30 files (excluding its own
-tests). Sometimes you may want them to be packaged up in two files (a
-`.h` and a `.cc`) instead, such that you can easily copy them to a new
-machine and start hacking there. For this we provide an experimental
-Python script `fuse_gtest_files.py` in the `scripts/` directory (since release 1.3.0).
-Assuming you have Python 2.4 or above installed on your machine, just
-go to that directory and run
-```
-python fuse_gtest_files.py OUTPUT_DIR
-```
-
-and you should see an `OUTPUT_DIR` directory being created with files
-`gtest/gtest.h` and `gtest/gtest-all.cc` in it. These files contain
-everything you need to use Google Test. Just copy them to anywhere
-you want and you are ready to write tests. You can use the
-[scripts/test/Makefile](../scripts/test/Makefile)
-file as an example on how to compile your tests against them.
-
-# Where to Go from Here #
-
-Congratulations! You've now learned more advanced Google Test tools and are
-ready to tackle more complex testing tasks. If you want to dive even deeper, you
-can read the [Frequently-Asked Questions](FAQ.md).
diff --git a/test/gtest/docs/DevGuide.md b/test/gtest/docs/DevGuide.md
deleted file mode 100644
index 06467a3..0000000
--- a/test/gtest/docs/DevGuide.md
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-If you are interested in understanding the internals of Google Test,
-building from source, or contributing ideas or modifications to the
-project, then this document is for you.
-
-# Introduction #
-
-First, let's give you some background of the project.
-
-## Licensing ##
-
-All Google Test source and pre-built packages are provided under the [New BSD License](http://www.opensource.org/licenses/bsd-license.php).
-
-## The Google Test Community ##
-
-The Google Test community exists primarily through the [discussion group](http://groups.google.com/group/googletestframework) and the GitHub repository.
-You are definitely encouraged to contribute to the
-discussion and you can also help us to keep the effectiveness of the
-group high by following and promoting the guidelines listed here.
-
-### Please Be Friendly ###
-
-Showing courtesy and respect to others is a vital part of the Google
-culture, and we strongly encourage everyone participating in Google
-Test development to join us in accepting nothing less. Of course,
-being courteous is not the same as failing to constructively disagree
-with each other, but it does mean that we should be respectful of each
-other when enumerating the 42 technical reasons that a particular
-proposal may not be the best choice. There's never a reason to be
-antagonistic or dismissive toward anyone who is sincerely trying to
-contribute to a discussion.
-
-Sure, C++ testing is serious business and all that, but it's also
-a lot of fun. Let's keep it that way. Let's strive to be one of the
-friendliest communities in all of open source.
-
-As always, discuss Google Test in the official GoogleTest discussion group.
-You don't have to actually submit code in order to sign up. Your participation
-itself is a valuable contribution.
-
-# Working with the Code #
-
-If you want to get your hands dirty with the code inside Google Test,
-this is the section for you.
-
-## Compiling from Source ##
-
-Once you check out the code, you can find instructions on how to
-compile it in the [README](../README.md) file.
-
-## Testing ##
-
-A testing framework is of no good if itself is not thoroughly tested.
-Tests should be written for any new code, and changes should be
-verified to not break existing tests before they are submitted for
-review. To perform the tests, follow the instructions in
-[README](../README.md) and verify that there are no failures.
-
-# Contributing Code #
-
-We are excited that Google Test is now open source, and hope to get
-great patches from the community. Before you fire up your favorite IDE
-and begin hammering away at that new feature, though, please take the
-time to read this section and understand the process. While it seems
-rigorous, we want to keep a high standard of quality in the code
-base.
-
-## Contributor License Agreements ##
-
-You must sign a Contributor License Agreement (CLA) before we can
-accept any code. The CLA protects you and us.
-
- * If you are an individual writing original source code and you're sure you own the intellectual property, then you'll need to sign an [individual CLA](http://code.google.com/legal/individual-cla-v1.0.html).
- * If you work for a company that wants to allow you to contribute your work to Google Test, then you'll need to sign a [corporate CLA](http://code.google.com/legal/corporate-cla-v1.0.html).
-
-Follow either of the two links above to access the appropriate CLA and
-instructions for how to sign and return it.
-
-## Coding Style ##
-
-To keep the source consistent, readable, diffable and easy to merge,
-we use a fairly rigid coding style, as defined by the [google-styleguide](http://code.google.com/p/google-styleguide/) project. All patches will be expected
-to conform to the style outlined [here](http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml).
-
-## Updating Generated Code ##
-
-Some of Google Test's source files are generated by the Pump tool (a
-Python script). If you need to update such files, please modify the
-source (`foo.h.pump`) and re-generate the C++ file using Pump. You
-can read the PumpManual for details.
-
-## Submitting Patches ##
-
-Please do submit code. Here's what you need to do:
-
- 1. A submission should be a set of changes that addresses one issue in the [issue tracker](https://github.com/google/googletest/issues). Please don't mix more than one logical change per submittal, because it makes the history hard to follow. If you want to make a change that doesn't have a corresponding issue in the issue tracker, please create one.
- 1. Also, coordinate with team members that are listed on the issue in question. This ensures that work isn't being duplicated and communicating your plan early also generally leads to better patches.
- 1. Ensure that your code adheres to the [Google Test source code style](#Coding_Style.md).
- 1. Ensure that there are unit tests for your code.
- 1. Sign a Contributor License Agreement.
- 1. Create a Pull Request in the usual way.
-
-## Google Test Committers ##
-
-The current members of the Google Test engineering team are the only
-committers at present. In the great tradition of eating one's own
-dogfood, we will be requiring each new Google Test engineering team
-member to earn the right to become a committer by following the
-procedures in this document, writing consistently great code, and
-demonstrating repeatedly that he or she truly gets the zen of Google
-Test.
-
-# Release Process #
-
-We follow a typical release process:
-
- 1. A release branch named `release-X.Y` is created.
- 1. Bugs are fixed and features are added in trunk; those individual patches are merged into the release branch until it's stable.
- 1. An individual point release (the `Z` in `X.Y.Z`) is made by creating a tag from the branch.
- 1. Repeat steps 2 and 3 throughout one release cycle (as determined by features or time).
- 1. Go back to step 1 to create another release branch and so on.
-
----
-
-This page is based on the [Making GWT Better](http://code.google.com/webtoolkit/makinggwtbetter.html) guide from the [Google Web Toolkit](http://code.google.com/webtoolkit/) project. Except as otherwise [noted](http://code.google.com/policies.html#restrictions), the content of this page is licensed under the [Creative Commons Attribution 2.5 License](http://creativecommons.org/licenses/by/2.5/).
diff --git a/test/gtest/docs/Documentation.md b/test/gtest/docs/Documentation.md
deleted file mode 100644
index 8ca1aac..0000000
--- a/test/gtest/docs/Documentation.md
+++ /dev/null
@@ -1,14 +0,0 @@
-This page lists all documentation wiki pages for Google Test **(the SVN trunk version)**
--- **if you use a released version of Google Test, please read the
-documentation for that specific version instead.**
-
- * [Primer](Primer.md) -- start here if you are new to Google Test.
- * [Samples](Samples.md) -- learn from examples.
- * [AdvancedGuide](AdvancedGuide.md) -- learn more about Google Test.
- * [XcodeGuide](XcodeGuide.md) -- how to use Google Test in Xcode on Mac.
- * [Frequently-Asked Questions](FAQ.md) -- check here before asking a question on the mailing list.
-
-To contribute code to Google Test, read:
-
- * [DevGuide](DevGuide.md) -- read this _before_ writing your first patch.
- * [PumpManual](PumpManual.md) -- how we generate some of Google Test's source files. \ No newline at end of file
diff --git a/test/gtest/docs/FAQ.md b/test/gtest/docs/FAQ.md
deleted file mode 100644
index 5fd6cb7..0000000
--- a/test/gtest/docs/FAQ.md
+++ /dev/null
@@ -1,1087 +0,0 @@
-
-
-If you cannot find the answer to your question here, and you have read
-[Primer](Primer.md) and [AdvancedGuide](AdvancedGuide.md), send it to
-googletestframework@googlegroups.com.
-
-## Why should I use Google Test instead of my favorite C++ testing framework? ##
-
-First, let us say clearly that we don't want to get into the debate of
-which C++ testing framework is **the best**. There exist many fine
-frameworks for writing C++ tests, and we have tremendous respect for
-the developers and users of them. We don't think there is (or will
-be) a single best framework - you have to pick the right tool for the
-particular task you are tackling.
-
-We created Google Test because we couldn't find the right combination
-of features and conveniences in an existing framework to satisfy _our_
-needs. The following is a list of things that _we_ like about Google
-Test. We don't claim them to be unique to Google Test - rather, the
-combination of them makes Google Test the choice for us. We hope this
-list can help you decide whether it is for you too.
-
- * Google Test is designed to be portable: it doesn't require exceptions or RTTI; it works around various bugs in various compilers and environments; etc. As a result, it works on Linux, Mac OS X, Windows and several embedded operating systems.
- * Nonfatal assertions (`EXPECT_*`) have proven to be great time savers, as they allow a test to report multiple failures in a single edit-compile-test cycle.
- * It's easy to write assertions that generate informative messages: you just use the stream syntax to append any additional information, e.g. `ASSERT_EQ(5, Foo(i)) << " where i = " << i;`. It doesn't require a new set of macros or special functions.
- * Google Test automatically detects your tests and doesn't require you to enumerate them in order to run them.
- * Death tests are pretty handy for ensuring that your asserts in production code are triggered by the right conditions.
- * `SCOPED_TRACE` helps you understand the context of an assertion failure when it comes from inside a sub-routine or loop.
- * You can decide which tests to run using name patterns. This saves time when you want to quickly reproduce a test failure.
- * Google Test can generate XML test result reports that can be parsed by popular continuous build system like Hudson.
- * Simple things are easy in Google Test, while hard things are possible: in addition to advanced features like [global test environments](AdvancedGuide.md#global-set-up-and-tear-down) and tests parameterized by [values](AdvancedGuide.md#value-parameterized-tests) or [types](docs/AdvancedGuide.md#typed-tests), Google Test supports various ways for the user to extend the framework -- if Google Test doesn't do something out of the box, chances are that a user can implement the feature using Google Test's public API, without changing Google Test itself. In particular, you can:
- * expand your testing vocabulary by defining [custom predicates](AdvancedGuide.md#predicate-assertions-for-better-error-messages),
- * teach Google Test how to [print your types](AdvancedGuide.md#teaching-google-test-how-to-print-your-values),
- * define your own testing macros or utilities and verify them using Google Test's [Service Provider Interface](AdvancedGuide.md#catching-failures), and
- * reflect on the test cases or change the test output format by intercepting the [test events](AdvancedGuide.md#extending-google-test-by-handling-test-events).
-
-## I'm getting warnings when compiling Google Test. Would you fix them? ##
-
-We strive to minimize compiler warnings Google Test generates. Before releasing a new version, we test to make sure that it doesn't generate warnings when compiled using its CMake script on Windows, Linux, and Mac OS.
-
-Unfortunately, this doesn't mean you are guaranteed to see no warnings when compiling Google Test in your environment:
-
- * You may be using a different compiler as we use, or a different version of the same compiler. We cannot possibly test for all compilers.
- * You may be compiling on a different platform as we do.
- * Your project may be using different compiler flags as we do.
-
-It is not always possible to make Google Test warning-free for everyone. Or, it may not be desirable if the warning is rarely enabled and fixing the violations makes the code more complex.
-
-If you see warnings when compiling Google Test, we suggest that you use the `-isystem` flag (assuming your are using GCC) to mark Google Test headers as system headers. That'll suppress warnings from Google Test headers.
-
-## Why should not test case names and test names contain underscore? ##
-
-Underscore (`_`) is special, as C++ reserves the following to be used by
-the compiler and the standard library:
-
- 1. any identifier that starts with an `_` followed by an upper-case letter, and
- 1. any identifier that containers two consecutive underscores (i.e. `__`) _anywhere_ in its name.
-
-User code is _prohibited_ from using such identifiers.
-
-Now let's look at what this means for `TEST` and `TEST_F`.
-
-Currently `TEST(TestCaseName, TestName)` generates a class named
-`TestCaseName_TestName_Test`. What happens if `TestCaseName` or `TestName`
-contains `_`?
-
- 1. If `TestCaseName` starts with an `_` followed by an upper-case letter (say, `_Foo`), we end up with `_Foo_TestName_Test`, which is reserved and thus invalid.
- 1. If `TestCaseName` ends with an `_` (say, `Foo_`), we get `Foo__TestName_Test`, which is invalid.
- 1. If `TestName` starts with an `_` (say, `_Bar`), we get `TestCaseName__Bar_Test`, which is invalid.
- 1. If `TestName` ends with an `_` (say, `Bar_`), we get `TestCaseName_Bar__Test`, which is invalid.
-
-So clearly `TestCaseName` and `TestName` cannot start or end with `_`
-(Actually, `TestCaseName` can start with `_` -- as long as the `_` isn't
-followed by an upper-case letter. But that's getting complicated. So
-for simplicity we just say that it cannot start with `_`.).
-
-It may seem fine for `TestCaseName` and `TestName` to contain `_` in the
-middle. However, consider this:
-``` cpp
-TEST(Time, Flies_Like_An_Arrow) { ... }
-TEST(Time_Flies, Like_An_Arrow) { ... }
-```
-
-Now, the two `TEST`s will both generate the same class
-(`Time_Files_Like_An_Arrow_Test`). That's not good.
-
-So for simplicity, we just ask the users to avoid `_` in `TestCaseName`
-and `TestName`. The rule is more constraining than necessary, but it's
-simple and easy to remember. It also gives Google Test some wiggle
-room in case its implementation needs to change in the future.
-
-If you violate the rule, there may not be immediately consequences,
-but your test may (just may) break with a new compiler (or a new
-version of the compiler you are using) or with a new version of Google
-Test. Therefore it's best to follow the rule.
-
-## Why is it not recommended to install a pre-compiled copy of Google Test (for example, into /usr/local)? ##
-
-In the early days, we said that you could install
-compiled Google Test libraries on `*`nix systems using `make install`.
-Then every user of your machine can write tests without
-recompiling Google Test.
-
-This seemed like a good idea, but it has a
-got-cha: every user needs to compile his tests using the _same_ compiler
-flags used to compile the installed Google Test libraries; otherwise
-he may run into undefined behaviors (i.e. the tests can behave
-strangely and may even crash for no obvious reasons).
-
-Why? Because C++ has this thing called the One-Definition Rule: if
-two C++ source files contain different definitions of the same
-class/function/variable, and you link them together, you violate the
-rule. The linker may or may not catch the error (in many cases it's
-not required by the C++ standard to catch the violation). If it
-doesn't, you get strange run-time behaviors that are unexpected and
-hard to debug.
-
-If you compile Google Test and your test code using different compiler
-flags, they may see different definitions of the same
-class/function/variable (e.g. due to the use of `#if` in Google Test).
-Therefore, for your sanity, we recommend to avoid installing pre-compiled
-Google Test libraries. Instead, each project should compile
-Google Test itself such that it can be sure that the same flags are
-used for both Google Test and the tests.
-
-## How do I generate 64-bit binaries on Windows (using Visual Studio 2008)? ##
-
-(Answered by Trevor Robinson)
-
-Load the supplied Visual Studio solution file, either `msvc\gtest-md.sln` or
-`msvc\gtest.sln`. Go through the migration wizard to migrate the
-solution and project files to Visual Studio 2008. Select
-`Configuration Manager...` from the `Build` menu. Select `<New...>` from
-the `Active solution platform` dropdown. Select `x64` from the new
-platform dropdown, leave `Copy settings from` set to `Win32` and
-`Create new project platforms` checked, then click `OK`. You now have
-`Win32` and `x64` platform configurations, selectable from the
-`Standard` toolbar, which allow you to toggle between building 32-bit or
-64-bit binaries (or both at once using Batch Build).
-
-In order to prevent build output files from overwriting one another,
-you'll need to change the `Intermediate Directory` settings for the
-newly created platform configuration across all the projects. To do
-this, multi-select (e.g. using shift-click) all projects (but not the
-solution) in the `Solution Explorer`. Right-click one of them and
-select `Properties`. In the left pane, select `Configuration Properties`,
-and from the `Configuration` dropdown, select `All Configurations`.
-Make sure the selected platform is `x64`. For the
-`Intermediate Directory` setting, change the value from
-`$(PlatformName)\$(ConfigurationName)` to
-`$(OutDir)\$(ProjectName)`. Click `OK` and then build the
-solution. When the build is complete, the 64-bit binaries will be in
-the `msvc\x64\Debug` directory.
-
-## Can I use Google Test on MinGW? ##
-
-We haven't tested this ourselves, but Per Abrahamsen reported that he
-was able to compile and install Google Test successfully when using
-MinGW from Cygwin. You'll need to configure it with:
-
-`PATH/TO/configure CC="gcc -mno-cygwin" CXX="g++ -mno-cygwin"`
-
-You should be able to replace the `-mno-cygwin` option with direct links
-to the real MinGW binaries, but we haven't tried that.
-
-Caveats:
-
- * There are many warnings when compiling.
- * `make check` will produce some errors as not all tests for Google Test itself are compatible with MinGW.
-
-We also have reports on successful cross compilation of Google Test
-MinGW binaries on Linux using
-[these instructions](http://wiki.wxwidgets.org/Cross-Compiling_Under_Linux#Cross-compiling_under_Linux_for_MS_Windows)
-on the WxWidgets site.
-
-Please contact `googletestframework@googlegroups.com` if you are
-interested in improving the support for MinGW.
-
-## Why does Google Test support EXPECT\_EQ(NULL, ptr) and ASSERT\_EQ(NULL, ptr) but not EXPECT\_NE(NULL, ptr) and ASSERT\_NE(NULL, ptr)? ##
-
-Due to some peculiarity of C++, it requires some non-trivial template
-meta programming tricks to support using `NULL` as an argument of the
-`EXPECT_XX()` and `ASSERT_XX()` macros. Therefore we only do it where
-it's most needed (otherwise we make the implementation of Google Test
-harder to maintain and more error-prone than necessary).
-
-The `EXPECT_EQ()` macro takes the _expected_ value as its first
-argument and the _actual_ value as the second. It's reasonable that
-someone wants to write `EXPECT_EQ(NULL, some_expression)`, and this
-indeed was requested several times. Therefore we implemented it.
-
-The need for `EXPECT_NE(NULL, ptr)` isn't nearly as strong. When the
-assertion fails, you already know that `ptr` must be `NULL`, so it
-doesn't add any information to print ptr in this case. That means
-`EXPECT_TRUE(ptr != NULL)` works just as well.
-
-If we were to support `EXPECT_NE(NULL, ptr)`, for consistency we'll
-have to support `EXPECT_NE(ptr, NULL)` as well, as unlike `EXPECT_EQ`,
-we don't have a convention on the order of the two arguments for
-`EXPECT_NE`. This means using the template meta programming tricks
-twice in the implementation, making it even harder to understand and
-maintain. We believe the benefit doesn't justify the cost.
-
-Finally, with the growth of Google Mock's [matcher](../../googlemock/docs/CookBook.md#using-matchers-in-google-test-assertions) library, we are
-encouraging people to use the unified `EXPECT_THAT(value, matcher)`
-syntax more often in tests. One significant advantage of the matcher
-approach is that matchers can be easily combined to form new matchers,
-while the `EXPECT_NE`, etc, macros cannot be easily
-combined. Therefore we want to invest more in the matchers than in the
-`EXPECT_XX()` macros.
-
-## Does Google Test support running tests in parallel? ##
-
-Test runners tend to be tightly coupled with the build/test
-environment, and Google Test doesn't try to solve the problem of
-running tests in parallel. Instead, we tried to make Google Test work
-nicely with test runners. For example, Google Test's XML report
-contains the time spent on each test, and its `gtest_list_tests` and
-`gtest_filter` flags can be used for splitting the execution of test
-methods into multiple processes. These functionalities can help the
-test runner run the tests in parallel.
-
-## Why don't Google Test run the tests in different threads to speed things up? ##
-
-It's difficult to write thread-safe code. Most tests are not written
-with thread-safety in mind, and thus may not work correctly in a
-multi-threaded setting.
-
-If you think about it, it's already hard to make your code work when
-you know what other threads are doing. It's much harder, and
-sometimes even impossible, to make your code work when you don't know
-what other threads are doing (remember that test methods can be added,
-deleted, or modified after your test was written). If you want to run
-the tests in parallel, you'd better run them in different processes.
-
-## Why aren't Google Test assertions implemented using exceptions? ##
-
-Our original motivation was to be able to use Google Test in projects
-that disable exceptions. Later we realized some additional benefits
-of this approach:
-
- 1. Throwing in a destructor is undefined behavior in C++. Not using exceptions means Google Test's assertions are safe to use in destructors.
- 1. The `EXPECT_*` family of macros will continue even after a failure, allowing multiple failures in a `TEST` to be reported in a single run. This is a popular feature, as in C++ the edit-compile-test cycle is usually quite long and being able to fixing more than one thing at a time is a blessing.
- 1. If assertions are implemented using exceptions, a test may falsely ignore a failure if it's caught by user code:
-``` cpp
-try { ... ASSERT_TRUE(...) ... }
-catch (...) { ... }
-```
-The above code will pass even if the `ASSERT_TRUE` throws. While it's unlikely for someone to write this in a test, it's possible to run into this pattern when you write assertions in callbacks that are called by the code under test.
-
-The downside of not using exceptions is that `ASSERT_*` (implemented
-using `return`) will only abort the current function, not the current
-`TEST`.
-
-## Why do we use two different macros for tests with and without fixtures? ##
-
-Unfortunately, C++'s macro system doesn't allow us to use the same
-macro for both cases. One possibility is to provide only one macro
-for tests with fixtures, and require the user to define an empty
-fixture sometimes:
-
-``` cpp
-class FooTest : public ::testing::Test {};
-
-TEST_F(FooTest, DoesThis) { ... }
-```
-or
-``` cpp
-typedef ::testing::Test FooTest;
-
-TEST_F(FooTest, DoesThat) { ... }
-```
-
-Yet, many people think this is one line too many. :-) Our goal was to
-make it really easy to write tests, so we tried to make simple tests
-trivial to create. That means using a separate macro for such tests.
-
-We think neither approach is ideal, yet either of them is reasonable.
-In the end, it probably doesn't matter much either way.
-
-## Why don't we use structs as test fixtures? ##
-
-We like to use structs only when representing passive data. This
-distinction between structs and classes is good for documenting the
-intent of the code's author. Since test fixtures have logic like
-`SetUp()` and `TearDown()`, they are better defined as classes.
-
-## Why are death tests implemented as assertions instead of using a test runner? ##
-
-Our goal was to make death tests as convenient for a user as C++
-possibly allows. In particular:
-
- * The runner-style requires to split the information into two pieces: the definition of the death test itself, and the specification for the runner on how to run the death test and what to expect. The death test would be written in C++, while the runner spec may or may not be. A user needs to carefully keep the two in sync. `ASSERT_DEATH(statement, expected_message)` specifies all necessary information in one place, in one language, without boilerplate code. It is very declarative.
- * `ASSERT_DEATH` has a similar syntax and error-reporting semantics as other Google Test assertions, and thus is easy to learn.
- * `ASSERT_DEATH` can be mixed with other assertions and other logic at your will. You are not limited to one death test per test method. For example, you can write something like:
-``` cpp
- if (FooCondition()) {
- ASSERT_DEATH(Bar(), "blah");
- } else {
- ASSERT_EQ(5, Bar());
- }
-```
-If you prefer one death test per test method, you can write your tests in that style too, but we don't want to impose that on the users. The fewer artificial limitations the better.
- * `ASSERT_DEATH` can reference local variables in the current function, and you can decide how many death tests you want based on run-time information. For example,
-``` cpp
- const int count = GetCount(); // Only known at run time.
- for (int i = 1; i <= count; i++) {
- ASSERT_DEATH({
- double* buffer = new double[i];
- ... initializes buffer ...
- Foo(buffer, i)
- }, "blah blah");
- }
-```
-The runner-based approach tends to be more static and less flexible, or requires more user effort to get this kind of flexibility.
-
-Another interesting thing about `ASSERT_DEATH` is that it calls `fork()`
-to create a child process to run the death test. This is lightening
-fast, as `fork()` uses copy-on-write pages and incurs almost zero
-overhead, and the child process starts from the user-supplied
-statement directly, skipping all global and local initialization and
-any code leading to the given statement. If you launch the child
-process from scratch, it can take seconds just to load everything and
-start running if the test links to many libraries dynamically.
-
-## My death test modifies some state, but the change seems lost after the death test finishes. Why? ##
-
-Death tests (`EXPECT_DEATH`, etc) are executed in a sub-process s.t. the
-expected crash won't kill the test program (i.e. the parent process). As a
-result, any in-memory side effects they incur are observable in their
-respective sub-processes, but not in the parent process. You can think of them
-as running in a parallel universe, more or less.
-
-## The compiler complains about "undefined references" to some static const member variables, but I did define them in the class body. What's wrong? ##
-
-If your class has a static data member:
-
-``` cpp
-// foo.h
-class Foo {
- ...
- static const int kBar = 100;
-};
-```
-
-You also need to define it _outside_ of the class body in `foo.cc`:
-
-``` cpp
-const int Foo::kBar; // No initializer here.
-```
-
-Otherwise your code is **invalid C++**, and may break in unexpected ways. In
-particular, using it in Google Test comparison assertions (`EXPECT_EQ`, etc)
-will generate an "undefined reference" linker error.
-
-## I have an interface that has several implementations. Can I write a set of tests once and repeat them over all the implementations? ##
-
-Google Test doesn't yet have good support for this kind of tests, or
-data-driven tests in general. We hope to be able to make improvements in this
-area soon.
-
-## Can I derive a test fixture from another? ##
-
-Yes.
-
-Each test fixture has a corresponding and same named test case. This means only
-one test case can use a particular fixture. Sometimes, however, multiple test
-cases may want to use the same or slightly different fixtures. For example, you
-may want to make sure that all of a GUI library's test cases don't leak
-important system resources like fonts and brushes.
-
-In Google Test, you share a fixture among test cases by putting the shared
-logic in a base test fixture, then deriving from that base a separate fixture
-for each test case that wants to use this common logic. You then use `TEST_F()`
-to write tests using each derived fixture.
-
-Typically, your code looks like this:
-
-``` cpp
-// Defines a base test fixture.
-class BaseTest : public ::testing::Test {
- protected:
- ...
-};
-
-// Derives a fixture FooTest from BaseTest.
-class FooTest : public BaseTest {
- protected:
- virtual void SetUp() {
- BaseTest::SetUp(); // Sets up the base fixture first.
- ... additional set-up work ...
- }
- virtual void TearDown() {
- ... clean-up work for FooTest ...
- BaseTest::TearDown(); // Remember to tear down the base fixture
- // after cleaning up FooTest!
- }
- ... functions and variables for FooTest ...
-};
-
-// Tests that use the fixture FooTest.
-TEST_F(FooTest, Bar) { ... }
-TEST_F(FooTest, Baz) { ... }
-
-... additional fixtures derived from BaseTest ...
-```
-
-If necessary, you can continue to derive test fixtures from a derived fixture.
-Google Test has no limit on how deep the hierarchy can be.
-
-For a complete example using derived test fixtures, see
-[sample5](../samples/sample5_unittest.cc).
-
-## My compiler complains "void value not ignored as it ought to be." What does this mean? ##
-
-You're probably using an `ASSERT_*()` in a function that doesn't return `void`.
-`ASSERT_*()` can only be used in `void` functions.
-
-## My death test hangs (or seg-faults). How do I fix it? ##
-
-In Google Test, death tests are run in a child process and the way they work is
-delicate. To write death tests you really need to understand how they work.
-Please make sure you have read this.
-
-In particular, death tests don't like having multiple threads in the parent
-process. So the first thing you can try is to eliminate creating threads
-outside of `EXPECT_DEATH()`.
-
-Sometimes this is impossible as some library you must use may be creating
-threads before `main()` is even reached. In this case, you can try to minimize
-the chance of conflicts by either moving as many activities as possible inside
-`EXPECT_DEATH()` (in the extreme case, you want to move everything inside), or
-leaving as few things as possible in it. Also, you can try to set the death
-test style to `"threadsafe"`, which is safer but slower, and see if it helps.
-
-If you go with thread-safe death tests, remember that they rerun the test
-program from the beginning in the child process. Therefore make sure your
-program can run side-by-side with itself and is deterministic.
-
-In the end, this boils down to good concurrent programming. You have to make
-sure that there is no race conditions or dead locks in your program. No silver
-bullet - sorry!
-
-## Should I use the constructor/destructor of the test fixture or the set-up/tear-down function? ##
-
-The first thing to remember is that Google Test does not reuse the
-same test fixture object across multiple tests. For each `TEST_F`,
-Google Test will create a fresh test fixture object, _immediately_
-call `SetUp()`, run the test body, call `TearDown()`, and then
-_immediately_ delete the test fixture object.
-
-When you need to write per-test set-up and tear-down logic, you have
-the choice between using the test fixture constructor/destructor or
-`SetUp()/TearDown()`. The former is usually preferred, as it has the
-following benefits:
-
- * By initializing a member variable in the constructor, we have the option to make it `const`, which helps prevent accidental changes to its value and makes the tests more obviously correct.
- * In case we need to subclass the test fixture class, the subclass' constructor is guaranteed to call the base class' constructor first, and the subclass' destructor is guaranteed to call the base class' destructor afterward. With `SetUp()/TearDown()`, a subclass may make the mistake of forgetting to call the base class' `SetUp()/TearDown()` or call them at the wrong moment.
-
-You may still want to use `SetUp()/TearDown()` in the following rare cases:
- * If the tear-down operation could throw an exception, you must use `TearDown()` as opposed to the destructor, as throwing in a destructor leads to undefined behavior and usually will kill your program right away. Note that many standard libraries (like STL) may throw when exceptions are enabled in the compiler. Therefore you should prefer `TearDown()` if you want to write portable tests that work with or without exceptions.
- * The assertion macros throw an exception when flag `--gtest_throw_on_failure` is specified. Therefore, you shouldn't use Google Test assertions in a destructor if you plan to run your tests with this flag.
- * In a constructor or destructor, you cannot make a virtual function call on this object. (You can call a method declared as virtual, but it will be statically bound.) Therefore, if you need to call a method that will be overriden in a derived class, you have to use `SetUp()/TearDown()`.
-
-## The compiler complains "no matching function to call" when I use ASSERT\_PREDn. How do I fix it? ##
-
-If the predicate function you use in `ASSERT_PRED*` or `EXPECT_PRED*` is
-overloaded or a template, the compiler will have trouble figuring out which
-overloaded version it should use. `ASSERT_PRED_FORMAT*` and
-`EXPECT_PRED_FORMAT*` don't have this problem.
-
-If you see this error, you might want to switch to
-`(ASSERT|EXPECT)_PRED_FORMAT*`, which will also give you a better failure
-message. If, however, that is not an option, you can resolve the problem by
-explicitly telling the compiler which version to pick.
-
-For example, suppose you have
-
-``` cpp
-bool IsPositive(int n) {
- return n > 0;
-}
-bool IsPositive(double x) {
- return x > 0;
-}
-```
-
-you will get a compiler error if you write
-
-``` cpp
-EXPECT_PRED1(IsPositive, 5);
-```
-
-However, this will work:
-
-``` cpp
-EXPECT_PRED1(*static_cast<bool (*)(int)>*(IsPositive), 5);
-```
-
-(The stuff inside the angled brackets for the `static_cast` operator is the
-type of the function pointer for the `int`-version of `IsPositive()`.)
-
-As another example, when you have a template function
-
-``` cpp
-template <typename T>
-bool IsNegative(T x) {
- return x < 0;
-}
-```
-
-you can use it in a predicate assertion like this:
-
-``` cpp
-ASSERT_PRED1(IsNegative*<int>*, -5);
-```
-
-Things are more interesting if your template has more than one parameters. The
-following won't compile:
-
-``` cpp
-ASSERT_PRED2(*GreaterThan<int, int>*, 5, 0);
-```
-
-
-as the C++ pre-processor thinks you are giving `ASSERT_PRED2` 4 arguments,
-which is one more than expected. The workaround is to wrap the predicate
-function in parentheses:
-
-``` cpp
-ASSERT_PRED2(*(GreaterThan<int, int>)*, 5, 0);
-```
-
-
-## My compiler complains about "ignoring return value" when I call RUN\_ALL\_TESTS(). Why? ##
-
-Some people had been ignoring the return value of `RUN_ALL_TESTS()`. That is,
-instead of
-
-``` cpp
-return RUN_ALL_TESTS();
-```
-
-they write
-
-``` cpp
-RUN_ALL_TESTS();
-```
-
-This is wrong and dangerous. A test runner needs to see the return value of
-`RUN_ALL_TESTS()` in order to determine if a test has passed. If your `main()`
-function ignores it, your test will be considered successful even if it has a
-Google Test assertion failure. Very bad.
-
-To help the users avoid this dangerous bug, the implementation of
-`RUN_ALL_TESTS()` causes gcc to raise this warning, when the return value is
-ignored. If you see this warning, the fix is simple: just make sure its value
-is used as the return value of `main()`.
-
-## My compiler complains that a constructor (or destructor) cannot return a value. What's going on? ##
-
-Due to a peculiarity of C++, in order to support the syntax for streaming
-messages to an `ASSERT_*`, e.g.
-
-``` cpp
-ASSERT_EQ(1, Foo()) << "blah blah" << foo;
-```
-
-we had to give up using `ASSERT*` and `FAIL*` (but not `EXPECT*` and
-`ADD_FAILURE*`) in constructors and destructors. The workaround is to move the
-content of your constructor/destructor to a private void member function, or
-switch to `EXPECT_*()` if that works. This section in the user's guide explains
-it.
-
-## My set-up function is not called. Why? ##
-
-C++ is case-sensitive. It should be spelled as `SetUp()`. Did you
-spell it as `Setup()`?
-
-Similarly, sometimes people spell `SetUpTestCase()` as `SetupTestCase()` and
-wonder why it's never called.
-
-## How do I jump to the line of a failure in Emacs directly? ##
-
-Google Test's failure message format is understood by Emacs and many other
-IDEs, like acme and XCode. If a Google Test message is in a compilation buffer
-in Emacs, then it's clickable. You can now hit `enter` on a message to jump to
-the corresponding source code, or use `C-x `` to jump to the next failure.
-
-## I have several test cases which share the same test fixture logic, do I have to define a new test fixture class for each of them? This seems pretty tedious. ##
-
-You don't have to. Instead of
-
-``` cpp
-class FooTest : public BaseTest {};
-
-TEST_F(FooTest, Abc) { ... }
-TEST_F(FooTest, Def) { ... }
-
-class BarTest : public BaseTest {};
-
-TEST_F(BarTest, Abc) { ... }
-TEST_F(BarTest, Def) { ... }
-```
-
-you can simply `typedef` the test fixtures:
-``` cpp
-typedef BaseTest FooTest;
-
-TEST_F(FooTest, Abc) { ... }
-TEST_F(FooTest, Def) { ... }
-
-typedef BaseTest BarTest;
-
-TEST_F(BarTest, Abc) { ... }
-TEST_F(BarTest, Def) { ... }
-```
-
-## The Google Test output is buried in a whole bunch of log messages. What do I do? ##
-
-The Google Test output is meant to be a concise and human-friendly report. If
-your test generates textual output itself, it will mix with the Google Test
-output, making it hard to read. However, there is an easy solution to this
-problem.
-
-Since most log messages go to stderr, we decided to let Google Test output go
-to stdout. This way, you can easily separate the two using redirection. For
-example:
-```
-./my_test > googletest_output.txt
-```
-
-## Why should I prefer test fixtures over global variables? ##
-
-There are several good reasons:
- 1. It's likely your test needs to change the states of its global variables. This makes it difficult to keep side effects from escaping one test and contaminating others, making debugging difficult. By using fixtures, each test has a fresh set of variables that's different (but with the same names). Thus, tests are kept independent of each other.
- 1. Global variables pollute the global namespace.
- 1. Test fixtures can be reused via subclassing, which cannot be done easily with global variables. This is useful if many test cases have something in common.
-
-## How do I test private class members without writing FRIEND\_TEST()s? ##
-
-You should try to write testable code, which means classes should be easily
-tested from their public interface. One way to achieve this is the Pimpl idiom:
-you move all private members of a class into a helper class, and make all
-members of the helper class public.
-
-You have several other options that don't require using `FRIEND_TEST`:
- * Write the tests as members of the fixture class:
-``` cpp
-class Foo {
- friend class FooTest;
- ...
-};
-
-class FooTest : public ::testing::Test {
- protected:
- ...
- void Test1() {...} // This accesses private members of class Foo.
- void Test2() {...} // So does this one.
-};
-
-TEST_F(FooTest, Test1) {
- Test1();
-}
-
-TEST_F(FooTest, Test2) {
- Test2();
-}
-```
- * In the fixture class, write accessors for the tested class' private members, then use the accessors in your tests:
-``` cpp
-class Foo {
- friend class FooTest;
- ...
-};
-
-class FooTest : public ::testing::Test {
- protected:
- ...
- T1 get_private_member1(Foo* obj) {
- return obj->private_member1_;
- }
-};
-
-TEST_F(FooTest, Test1) {
- ...
- get_private_member1(x)
- ...
-}
-```
- * If the methods are declared **protected**, you can change their access level in a test-only subclass:
-``` cpp
-class YourClass {
- ...
- protected: // protected access for testability.
- int DoSomethingReturningInt();
- ...
-};
-
-// in the your_class_test.cc file:
-class TestableYourClass : public YourClass {
- ...
- public: using YourClass::DoSomethingReturningInt; // changes access rights
- ...
-};
-
-TEST_F(YourClassTest, DoSomethingTest) {
- TestableYourClass obj;
- assertEquals(expected_value, obj.DoSomethingReturningInt());
-}
-```
-
-## How do I test private class static members without writing FRIEND\_TEST()s? ##
-
-We find private static methods clutter the header file. They are
-implementation details and ideally should be kept out of a .h. So often I make
-them free functions instead.
-
-Instead of:
-``` cpp
-// foo.h
-class Foo {
- ...
- private:
- static bool Func(int n);
-};
-
-// foo.cc
-bool Foo::Func(int n) { ... }
-
-// foo_test.cc
-EXPECT_TRUE(Foo::Func(12345));
-```
-
-You probably should better write:
-``` cpp
-// foo.h
-class Foo {
- ...
-};
-
-// foo.cc
-namespace internal {
- bool Func(int n) { ... }
-}
-
-// foo_test.cc
-namespace internal {
- bool Func(int n);
-}
-
-EXPECT_TRUE(internal::Func(12345));
-```
-
-## I would like to run a test several times with different parameters. Do I need to write several similar copies of it? ##
-
-No. You can use a feature called [value-parameterized tests](AdvancedGuide.md#Value_Parameterized_Tests) which
-lets you repeat your tests with different parameters, without defining it more than once.
-
-## How do I test a file that defines main()? ##
-
-To test a `foo.cc` file, you need to compile and link it into your unit test
-program. However, when the file contains a definition for the `main()`
-function, it will clash with the `main()` of your unit test, and will result in
-a build error.
-
-The right solution is to split it into three files:
- 1. `foo.h` which contains the declarations,
- 1. `foo.cc` which contains the definitions except `main()`, and
- 1. `foo_main.cc` which contains nothing but the definition of `main()`.
-
-Then `foo.cc` can be easily tested.
-
-If you are adding tests to an existing file and don't want an intrusive change
-like this, there is a hack: just include the entire `foo.cc` file in your unit
-test. For example:
-``` cpp
-// File foo_unittest.cc
-
-// The headers section
-...
-
-// Renames main() in foo.cc to make room for the unit test main()
-#define main FooMain
-
-#include "a/b/foo.cc"
-
-// The tests start here.
-...
-```
-
-
-However, please remember this is a hack and should only be used as the last
-resort.
-
-## What can the statement argument in ASSERT\_DEATH() be? ##
-
-`ASSERT_DEATH(_statement_, _regex_)` (or any death assertion macro) can be used
-wherever `_statement_` is valid. So basically `_statement_` can be any C++
-statement that makes sense in the current context. In particular, it can
-reference global and/or local variables, and can be:
- * a simple function call (often the case),
- * a complex expression, or
- * a compound statement.
-
-Some examples are shown here:
-
-``` cpp
-// A death test can be a simple function call.
-TEST(MyDeathTest, FunctionCall) {
- ASSERT_DEATH(Xyz(5), "Xyz failed");
-}
-
-// Or a complex expression that references variables and functions.
-TEST(MyDeathTest, ComplexExpression) {
- const bool c = Condition();
- ASSERT_DEATH((c ? Func1(0) : object2.Method("test")),
- "(Func1|Method) failed");
-}
-
-// Death assertions can be used any where in a function. In
-// particular, they can be inside a loop.
-TEST(MyDeathTest, InsideLoop) {
- // Verifies that Foo(0), Foo(1), ..., and Foo(4) all die.
- for (int i = 0; i < 5; i++) {
- EXPECT_DEATH_M(Foo(i), "Foo has \\d+ errors",
- ::testing::Message() << "where i is " << i);
- }
-}
-
-// A death assertion can contain a compound statement.
-TEST(MyDeathTest, CompoundStatement) {
- // Verifies that at lease one of Bar(0), Bar(1), ..., and
- // Bar(4) dies.
- ASSERT_DEATH({
- for (int i = 0; i < 5; i++) {
- Bar(i);
- }
- },
- "Bar has \\d+ errors");}
-```
-
-`googletest_unittest.cc` contains more examples if you are interested.
-
-## What syntax does the regular expression in ASSERT\_DEATH use? ##
-
-On POSIX systems, Google Test uses the POSIX Extended regular
-expression syntax
-(http://en.wikipedia.org/wiki/Regular_expression#POSIX_Extended_Regular_Expressions).
-On Windows, it uses a limited variant of regular expression
-syntax. For more details, see the
-[regular expression syntax](AdvancedGuide.md#Regular_Expression_Syntax).
-
-## I have a fixture class Foo, but TEST\_F(Foo, Bar) gives me error "no matching function for call to Foo::Foo()". Why? ##
-
-Google Test needs to be able to create objects of your test fixture class, so
-it must have a default constructor. Normally the compiler will define one for
-you. However, there are cases where you have to define your own:
- * If you explicitly declare a non-default constructor for class `Foo`, then you need to define a default constructor, even if it would be empty.
- * If `Foo` has a const non-static data member, then you have to define the default constructor _and_ initialize the const member in the initializer list of the constructor. (Early versions of `gcc` doesn't force you to initialize the const member. It's a bug that has been fixed in `gcc 4`.)
-
-## Why does ASSERT\_DEATH complain about previous threads that were already joined? ##
-
-With the Linux pthread library, there is no turning back once you cross the
-line from single thread to multiple threads. The first time you create a
-thread, a manager thread is created in addition, so you get 3, not 2, threads.
-Later when the thread you create joins the main thread, the thread count
-decrements by 1, but the manager thread will never be killed, so you still have
-2 threads, which means you cannot safely run a death test.
-
-The new NPTL thread library doesn't suffer from this problem, as it doesn't
-create a manager thread. However, if you don't control which machine your test
-runs on, you shouldn't depend on this.
-
-## Why does Google Test require the entire test case, instead of individual tests, to be named FOODeathTest when it uses ASSERT\_DEATH? ##
-
-Google Test does not interleave tests from different test cases. That is, it
-runs all tests in one test case first, and then runs all tests in the next test
-case, and so on. Google Test does this because it needs to set up a test case
-before the first test in it is run, and tear it down afterwords. Splitting up
-the test case would require multiple set-up and tear-down processes, which is
-inefficient and makes the semantics unclean.
-
-If we were to determine the order of tests based on test name instead of test
-case name, then we would have a problem with the following situation:
-
-``` cpp
-TEST_F(FooTest, AbcDeathTest) { ... }
-TEST_F(FooTest, Uvw) { ... }
-
-TEST_F(BarTest, DefDeathTest) { ... }
-TEST_F(BarTest, Xyz) { ... }
-```
-
-Since `FooTest.AbcDeathTest` needs to run before `BarTest.Xyz`, and we don't
-interleave tests from different test cases, we need to run all tests in the
-`FooTest` case before running any test in the `BarTest` case. This contradicts
-with the requirement to run `BarTest.DefDeathTest` before `FooTest.Uvw`.
-
-## But I don't like calling my entire test case FOODeathTest when it contains both death tests and non-death tests. What do I do? ##
-
-You don't have to, but if you like, you may split up the test case into
-`FooTest` and `FooDeathTest`, where the names make it clear that they are
-related:
-
-``` cpp
-class FooTest : public ::testing::Test { ... };
-
-TEST_F(FooTest, Abc) { ... }
-TEST_F(FooTest, Def) { ... }
-
-typedef FooTest FooDeathTest;
-
-TEST_F(FooDeathTest, Uvw) { ... EXPECT_DEATH(...) ... }
-TEST_F(FooDeathTest, Xyz) { ... ASSERT_DEATH(...) ... }
-```
-
-## The compiler complains about "no match for 'operator<<'" when I use an assertion. What gives? ##
-
-If you use a user-defined type `FooType` in an assertion, you must make sure
-there is an `std::ostream& operator<<(std::ostream&, const FooType&)` function
-defined such that we can print a value of `FooType`.
-
-In addition, if `FooType` is declared in a name space, the `<<` operator also
-needs to be defined in the _same_ name space.
-
-## How do I suppress the memory leak messages on Windows? ##
-
-Since the statically initialized Google Test singleton requires allocations on
-the heap, the Visual C++ memory leak detector will report memory leaks at the
-end of the program run. The easiest way to avoid this is to use the
-`_CrtMemCheckpoint` and `_CrtMemDumpAllObjectsSince` calls to not report any
-statically initialized heap objects. See MSDN for more details and additional
-heap check/debug routines.
-
-## I am building my project with Google Test in Visual Studio and all I'm getting is a bunch of linker errors (or warnings). Help! ##
-
-You may get a number of the following linker error or warnings if you
-attempt to link your test project with the Google Test library when
-your project and the are not built using the same compiler settings.
-
- * LNK2005: symbol already defined in object
- * LNK4217: locally defined symbol 'symbol' imported in function 'function'
- * LNK4049: locally defined symbol 'symbol' imported
-
-The Google Test project (gtest.vcproj) has the Runtime Library option
-set to /MT (use multi-threaded static libraries, /MTd for debug). If
-your project uses something else, for example /MD (use multi-threaded
-DLLs, /MDd for debug), you need to change the setting in the Google
-Test project to match your project's.
-
-To update this setting open the project properties in the Visual
-Studio IDE then select the branch Configuration Properties | C/C++ |
-Code Generation and change the option "Runtime Library". You may also try
-using gtest-md.vcproj instead of gtest.vcproj.
-
-## I put my tests in a library and Google Test doesn't run them. What's happening? ##
-Have you read a
-[warning](Primer.md#important-note-for-visual-c-users) on
-the Google Test Primer page?
-
-## I want to use Google Test with Visual Studio but don't know where to start. ##
-Many people are in your position and one of the posted his solution to
-our mailing list.
-
-## I am seeing compile errors mentioning std::type\_traits when I try to use Google Test on Solaris. ##
-Google Test uses parts of the standard C++ library that SunStudio does not support.
-Our users reported success using alternative implementations. Try running the build after runing this commad:
-
-`export CC=cc CXX=CC CXXFLAGS='-library=stlport4'`
-
-## How can my code detect if it is running in a test? ##
-
-If you write code that sniffs whether it's running in a test and does
-different things accordingly, you are leaking test-only logic into
-production code and there is no easy way to ensure that the test-only
-code paths aren't run by mistake in production. Such cleverness also
-leads to
-[Heisenbugs](http://en.wikipedia.org/wiki/Unusual_software_bug#Heisenbug).
-Therefore we strongly advise against the practice, and Google Test doesn't
-provide a way to do it.
-
-In general, the recommended way to cause the code to behave
-differently under test is [dependency injection](http://jamesshore.com/Blog/Dependency-Injection-Demystified.html).
-You can inject different functionality from the test and from the
-production code. Since your production code doesn't link in the
-for-test logic at all, there is no danger in accidentally running it.
-
-However, if you _really_, _really_, _really_ have no choice, and if
-you follow the rule of ending your test program names with `_test`,
-you can use the _horrible_ hack of sniffing your executable name
-(`argv[0]` in `main()`) to know whether the code is under test.
-
-## Google Test defines a macro that clashes with one defined by another library. How do I deal with that? ##
-
-In C++, macros don't obey namespaces. Therefore two libraries that
-both define a macro of the same name will clash if you `#include` both
-definitions. In case a Google Test macro clashes with another
-library, you can force Google Test to rename its macro to avoid the
-conflict.
-
-Specifically, if both Google Test and some other code define macro
-`FOO`, you can add
-```
- -DGTEST_DONT_DEFINE_FOO=1
-```
-to the compiler flags to tell Google Test to change the macro's name
-from `FOO` to `GTEST_FOO`. For example, with `-DGTEST_DONT_DEFINE_TEST=1`, you'll need to write
-``` cpp
- GTEST_TEST(SomeTest, DoesThis) { ... }
-```
-instead of
-``` cpp
- TEST(SomeTest, DoesThis) { ... }
-```
-in order to define a test.
-
-Currently, the following `TEST`, `FAIL`, `SUCCEED`, and the basic comparison assertion macros can have alternative names. You can see the full list of covered macros [here](http://www.google.com/codesearch?q=if+!GTEST_DONT_DEFINE_\w%2B+package:http://googletest\.googlecode\.com+file:/include/gtest/gtest.h). More information can be found in the "Avoiding Macro Name Clashes" section of the README file.
-
-
-## Is it OK if I have two separate `TEST(Foo, Bar)` test methods defined in different namespaces? ##
-
-Yes.
-
-The rule is **all test methods in the same test case must use the same fixture class**. This means that the following is **allowed** because both tests use the same fixture class (`::testing::Test`).
-
-``` cpp
-namespace foo {
-TEST(CoolTest, DoSomething) {
- SUCCEED();
-}
-} // namespace foo
-
-namespace bar {
-TEST(CoolTest, DoSomething) {
- SUCCEED();
-}
-} // namespace foo
-```
-
-However, the following code is **not allowed** and will produce a runtime error from Google Test because the test methods are using different test fixture classes with the same test case name.
-
-``` cpp
-namespace foo {
-class CoolTest : public ::testing::Test {}; // Fixture foo::CoolTest
-TEST_F(CoolTest, DoSomething) {
- SUCCEED();
-}
-} // namespace foo
-
-namespace bar {
-class CoolTest : public ::testing::Test {}; // Fixture: bar::CoolTest
-TEST_F(CoolTest, DoSomething) {
- SUCCEED();
-}
-} // namespace foo
-```
-
-## How do I build Google Testing Framework with Xcode 4? ##
-
-If you try to build Google Test's Xcode project with Xcode 4.0 or later, you may encounter an error message that looks like
-"Missing SDK in target gtest\_framework: /Developer/SDKs/MacOSX10.4u.sdk". That means that Xcode does not support the SDK the project is targeting. See the Xcode section in the [README](../README.md) file on how to resolve this.
-
-## My question is not covered in your FAQ! ##
-
-If you cannot find the answer to your question in this FAQ, there are
-some other resources you can use:
-
- 1. read other [wiki pages](../docs),
- 1. search the mailing list [archive](https://groups.google.com/forum/#!forum/googletestframework),
- 1. ask it on [googletestframework@googlegroups.com](mailto:googletestframework@googlegroups.com) and someone will answer it (to prevent spam, we require you to join the [discussion group](http://groups.google.com/group/googletestframework) before you can post.).
-
-Please note that creating an issue in the
-[issue tracker](https://github.com/google/googletest/issues) is _not_
-a good way to get your answer, as it is monitored infrequently by a
-very small number of people.
-
-When asking a question, it's helpful to provide as much of the
-following information as possible (people cannot help you if there's
-not enough information in your question):
-
- * the version (or the commit hash if you check out from Git directly) of Google Test you use (Google Test is under active development, so it's possible that your problem has been solved in a later version),
- * your operating system,
- * the name and version of your compiler,
- * the complete command line flags you give to your compiler,
- * the complete compiler error messages (if the question is about compilation),
- * the _actual_ code (ideally, a minimal but complete program) that has the problem you encounter.
diff --git a/test/gtest/docs/Primer.md b/test/gtest/docs/Primer.md
deleted file mode 100644
index 474c1d2..0000000
--- a/test/gtest/docs/Primer.md
+++ /dev/null
@@ -1,502 +0,0 @@
-
-
-# Introduction: Why Google C++ Testing Framework? #
-
-_Google C++ Testing Framework_ helps you write better C++ tests.
-
-No matter whether you work on Linux, Windows, or a Mac, if you write C++ code,
-Google Test can help you.
-
-So what makes a good test, and how does Google C++ Testing Framework fit in? We believe:
- 1. Tests should be _independent_ and _repeatable_. It's a pain to debug a test that succeeds or fails as a result of other tests. Google C++ Testing Framework isolates the tests by running each of them on a different object. When a test fails, Google C++ Testing Framework allows you to run it in isolation for quick debugging.
- 1. Tests should be well _organized_ and reflect the structure of the tested code. Google C++ Testing Framework groups related tests into test cases that can share data and subroutines. This common pattern is easy to recognize and makes tests easy to maintain. Such consistency is especially helpful when people switch projects and start to work on a new code base.
- 1. Tests should be _portable_ and _reusable_. The open-source community has a lot of code that is platform-neutral, its tests should also be platform-neutral. Google C++ Testing Framework works on different OSes, with different compilers (gcc, MSVC, and others), with or without exceptions, so Google C++ Testing Framework tests can easily work with a variety of configurations. (Note that the current release only contains build scripts for Linux - we are actively working on scripts for other platforms.)
- 1. When tests fail, they should provide as much _information_ about the problem as possible. Google C++ Testing Framework doesn't stop at the first test failure. Instead, it only stops the current test and continues with the next. You can also set up tests that report non-fatal failures after which the current test continues. Thus, you can detect and fix multiple bugs in a single run-edit-compile cycle.
- 1. The testing framework should liberate test writers from housekeeping chores and let them focus on the test _content_. Google C++ Testing Framework automatically keeps track of all tests defined, and doesn't require the user to enumerate them in order to run them.
- 1. Tests should be _fast_. With Google C++ Testing Framework, you can reuse shared resources across tests and pay for the set-up/tear-down only once, without making tests depend on each other.
-
-Since Google C++ Testing Framework is based on the popular xUnit
-architecture, you'll feel right at home if you've used JUnit or PyUnit before.
-If not, it will take you about 10 minutes to learn the basics and get started.
-So let's go!
-
-_Note:_ We sometimes refer to Google C++ Testing Framework informally
-as _Google Test_.
-
-# Setting up a New Test Project #
-
-To write a test program using Google Test, you need to compile Google
-Test into a library and link your test with it. We provide build
-files for some popular build systems: `msvc/` for Visual Studio,
-`xcode/` for Mac Xcode, `make/` for GNU make, `codegear/` for Borland
-C++ Builder, and the autotools script (deprecated) and
-`CMakeLists.txt` for CMake (recommended) in the Google Test root
-directory. If your build system is not on this list, you can take a
-look at `make/Makefile` to learn how Google Test should be compiled
-(basically you want to compile `src/gtest-all.cc` with `GTEST_ROOT`
-and `GTEST_ROOT/include` in the header search path, where `GTEST_ROOT`
-is the Google Test root directory).
-
-Once you are able to compile the Google Test library, you should
-create a project or build target for your test program. Make sure you
-have `GTEST_ROOT/include` in the header search path so that the
-compiler can find `"gtest/gtest.h"` when compiling your test. Set up
-your test project to link with the Google Test library (for example,
-in Visual Studio, this is done by adding a dependency on
-`gtest.vcproj`).
-
-If you still have questions, take a look at how Google Test's own
-tests are built and use them as examples.
-
-# Basic Concepts #
-
-When using Google Test, you start by writing _assertions_, which are statements
-that check whether a condition is true. An assertion's result can be _success_,
-_nonfatal failure_, or _fatal failure_. If a fatal failure occurs, it aborts
-the current function; otherwise the program continues normally.
-
-_Tests_ use assertions to verify the tested code's behavior. If a test crashes
-or has a failed assertion, then it _fails_; otherwise it _succeeds_.
-
-A _test case_ contains one or many tests. You should group your tests into test
-cases that reflect the structure of the tested code. When multiple tests in a
-test case need to share common objects and subroutines, you can put them into a
-_test fixture_ class.
-
-A _test program_ can contain multiple test cases.
-
-We'll now explain how to write a test program, starting at the individual
-assertion level and building up to tests and test cases.
-
-# Assertions #
-
-Google Test assertions are macros that resemble function calls. You test a
-class or function by making assertions about its behavior. When an assertion
-fails, Google Test prints the assertion's source file and line number location,
-along with a failure message. You may also supply a custom failure message
-which will be appended to Google Test's message.
-
-The assertions come in pairs that test the same thing but have different
-effects on the current function. `ASSERT_*` versions generate fatal failures
-when they fail, and **abort the current function**. `EXPECT_*` versions generate
-nonfatal failures, which don't abort the current function. Usually `EXPECT_*`
-are preferred, as they allow more than one failures to be reported in a test.
-However, you should use `ASSERT_*` if it doesn't make sense to continue when
-the assertion in question fails.
-
-Since a failed `ASSERT_*` returns from the current function immediately,
-possibly skipping clean-up code that comes after it, it may cause a space leak.
-Depending on the nature of the leak, it may or may not be worth fixing - so
-keep this in mind if you get a heap checker error in addition to assertion
-errors.
-
-To provide a custom failure message, simply stream it into the macro using the
-`<<` operator, or a sequence of such operators. An example:
-```
-ASSERT_EQ(x.size(), y.size()) << "Vectors x and y are of unequal length";
-
-for (int i = 0; i < x.size(); ++i) {
- EXPECT_EQ(x[i], y[i]) << "Vectors x and y differ at index " << i;
-}
-```
-
-Anything that can be streamed to an `ostream` can be streamed to an assertion
-macro--in particular, C strings and `string` objects. If a wide string
-(`wchar_t*`, `TCHAR*` in `UNICODE` mode on Windows, or `std::wstring`) is
-streamed to an assertion, it will be translated to UTF-8 when printed.
-
-## Basic Assertions ##
-
-These assertions do basic true/false condition testing.
-
-| **Fatal assertion** | **Nonfatal assertion** | **Verifies** |
-|:--------------------|:-----------------------|:-------------|
-| `ASSERT_TRUE(`_condition_`)`; | `EXPECT_TRUE(`_condition_`)`; | _condition_ is true |
-| `ASSERT_FALSE(`_condition_`)`; | `EXPECT_FALSE(`_condition_`)`; | _condition_ is false |
-
-Remember, when they fail, `ASSERT_*` yields a fatal failure and
-returns from the current function, while `EXPECT_*` yields a nonfatal
-failure, allowing the function to continue running. In either case, an
-assertion failure means its containing test fails.
-
-_Availability_: Linux, Windows, Mac.
-
-## Binary Comparison ##
-
-This section describes assertions that compare two values.
-
-| **Fatal assertion** | **Nonfatal assertion** | **Verifies** |
-|:--------------------|:-----------------------|:-------------|
-|`ASSERT_EQ(`_val1_`, `_val2_`);`|`EXPECT_EQ(`_val1_`, `_val2_`);`| _val1_ `==` _val2_ |
-|`ASSERT_NE(`_val1_`, `_val2_`);`|`EXPECT_NE(`_val1_`, `_val2_`);`| _val1_ `!=` _val2_ |
-|`ASSERT_LT(`_val1_`, `_val2_`);`|`EXPECT_LT(`_val1_`, `_val2_`);`| _val1_ `<` _val2_ |
-|`ASSERT_LE(`_val1_`, `_val2_`);`|`EXPECT_LE(`_val1_`, `_val2_`);`| _val1_ `<=` _val2_ |
-|`ASSERT_GT(`_val1_`, `_val2_`);`|`EXPECT_GT(`_val1_`, `_val2_`);`| _val1_ `>` _val2_ |
-|`ASSERT_GE(`_val1_`, `_val2_`);`|`EXPECT_GE(`_val1_`, `_val2_`);`| _val1_ `>=` _val2_ |
-
-In the event of a failure, Google Test prints both _val1_ and _val2_.
-
-Value arguments must be comparable by the assertion's comparison
-operator or you'll get a compiler error. We used to require the
-arguments to support the `<<` operator for streaming to an `ostream`,
-but it's no longer necessary since v1.6.0 (if `<<` is supported, it
-will be called to print the arguments when the assertion fails;
-otherwise Google Test will attempt to print them in the best way it
-can. For more details and how to customize the printing of the
-arguments, see this Google Mock [recipe](../../googlemock/docs/CookBook.md#teaching-google-mock-how-to-print-your-values).).
-
-These assertions can work with a user-defined type, but only if you define the
-corresponding comparison operator (e.g. `==`, `<`, etc). If the corresponding
-operator is defined, prefer using the `ASSERT_*()` macros because they will
-print out not only the result of the comparison, but the two operands as well.
-
-Arguments are always evaluated exactly once. Therefore, it's OK for the
-arguments to have side effects. However, as with any ordinary C/C++ function,
-the arguments' evaluation order is undefined (i.e. the compiler is free to
-choose any order) and your code should not depend on any particular argument
-evaluation order.
-
-`ASSERT_EQ()` does pointer equality on pointers. If used on two C strings, it
-tests if they are in the same memory location, not if they have the same value.
-Therefore, if you want to compare C strings (e.g. `const char*`) by value, use
-`ASSERT_STREQ()` , which will be described later on. In particular, to assert
-that a C string is `NULL`, use `ASSERT_STREQ(NULL, c_string)` . However, to
-compare two `string` objects, you should use `ASSERT_EQ`.
-
-Macros in this section work with both narrow and wide string objects (`string`
-and `wstring`).
-
-_Availability_: Linux, Windows, Mac.
-
-_Historical note_: Before February 2016 `*_EQ` had a convention of calling it as
-`ASSERT_EQ(expected, actual)`, so lots of existing code uses this order.
-Now `*_EQ` treats both parameters in the same way.
-
-## String Comparison ##
-
-The assertions in this group compare two **C strings**. If you want to compare
-two `string` objects, use `EXPECT_EQ`, `EXPECT_NE`, and etc instead.
-
-| **Fatal assertion** | **Nonfatal assertion** | **Verifies** |
-|:--------------------|:-----------------------|:-------------|
-| `ASSERT_STREQ(`_str1_`, `_str2_`);` | `EXPECT_STREQ(`_str1_`, `_str_2`);` | the two C strings have the same content |
-| `ASSERT_STRNE(`_str1_`, `_str2_`);` | `EXPECT_STRNE(`_str1_`, `_str2_`);` | the two C strings have different content |
-| `ASSERT_STRCASEEQ(`_str1_`, `_str2_`);`| `EXPECT_STRCASEEQ(`_str1_`, `_str2_`);` | the two C strings have the same content, ignoring case |
-| `ASSERT_STRCASENE(`_str1_`, `_str2_`);`| `EXPECT_STRCASENE(`_str1_`, `_str2_`);` | the two C strings have different content, ignoring case |
-
-Note that "CASE" in an assertion name means that case is ignored.
-
-`*STREQ*` and `*STRNE*` also accept wide C strings (`wchar_t*`). If a
-comparison of two wide strings fails, their values will be printed as UTF-8
-narrow strings.
-
-A `NULL` pointer and an empty string are considered _different_.
-
-_Availability_: Linux, Windows, Mac.
-
-See also: For more string comparison tricks (substring, prefix, suffix, and
-regular expression matching, for example), see the [Advanced Google Test Guide](AdvancedGuide.md).
-
-# Simple Tests #
-
-To create a test:
- 1. Use the `TEST()` macro to define and name a test function, These are ordinary C++ functions that don't return a value.
- 1. In this function, along with any valid C++ statements you want to include, use the various Google Test assertions to check values.
- 1. The test's result is determined by the assertions; if any assertion in the test fails (either fatally or non-fatally), or if the test crashes, the entire test fails. Otherwise, it succeeds.
-
-```
-TEST(test_case_name, test_name) {
- ... test body ...
-}
-```
-
-
-`TEST()` arguments go from general to specific. The _first_ argument is the
-name of the test case, and the _second_ argument is the test's name within the
-test case. Both names must be valid C++ identifiers, and they should not contain underscore (`_`). A test's _full name_ consists of its containing test case and its
-individual name. Tests from different test cases can have the same individual
-name.
-
-For example, let's take a simple integer function:
-```
-int Factorial(int n); // Returns the factorial of n
-```
-
-A test case for this function might look like:
-```
-// Tests factorial of 0.
-TEST(FactorialTest, HandlesZeroInput) {
- EXPECT_EQ(1, Factorial(0));
-}
-
-// Tests factorial of positive numbers.
-TEST(FactorialTest, HandlesPositiveInput) {
- EXPECT_EQ(1, Factorial(1));
- EXPECT_EQ(2, Factorial(2));
- EXPECT_EQ(6, Factorial(3));
- EXPECT_EQ(40320, Factorial(8));
-}
-```
-
-Google Test groups the test results by test cases, so logically-related tests
-should be in the same test case; in other words, the first argument to their
-`TEST()` should be the same. In the above example, we have two tests,
-`HandlesZeroInput` and `HandlesPositiveInput`, that belong to the same test
-case `FactorialTest`.
-
-_Availability_: Linux, Windows, Mac.
-
-# Test Fixtures: Using the Same Data Configuration for Multiple Tests #
-
-If you find yourself writing two or more tests that operate on similar data,
-you can use a _test fixture_. It allows you to reuse the same configuration of
-objects for several different tests.
-
-To create a fixture, just:
- 1. Derive a class from `::testing::Test` . Start its body with `protected:` or `public:` as we'll want to access fixture members from sub-classes.
- 1. Inside the class, declare any objects you plan to use.
- 1. If necessary, write a default constructor or `SetUp()` function to prepare the objects for each test. A common mistake is to spell `SetUp()` as `Setup()` with a small `u` - don't let that happen to you.
- 1. If necessary, write a destructor or `TearDown()` function to release any resources you allocated in `SetUp()` . To learn when you should use the constructor/destructor and when you should use `SetUp()/TearDown()`, read this [FAQ entry](FAQ.md#should-i-use-the-constructordestructor-of-the-test-fixture-or-the-set-uptear-down-function).
- 1. If needed, define subroutines for your tests to share.
-
-When using a fixture, use `TEST_F()` instead of `TEST()` as it allows you to
-access objects and subroutines in the test fixture:
-```
-TEST_F(test_case_name, test_name) {
- ... test body ...
-}
-```
-
-Like `TEST()`, the first argument is the test case name, but for `TEST_F()`
-this must be the name of the test fixture class. You've probably guessed: `_F`
-is for fixture.
-
-Unfortunately, the C++ macro system does not allow us to create a single macro
-that can handle both types of tests. Using the wrong macro causes a compiler
-error.
-
-Also, you must first define a test fixture class before using it in a
-`TEST_F()`, or you'll get the compiler error "`virtual outside class
-declaration`".
-
-For each test defined with `TEST_F()`, Google Test will:
- 1. Create a _fresh_ test fixture at runtime
- 1. Immediately initialize it via `SetUp()` ,
- 1. Run the test
- 1. Clean up by calling `TearDown()`
- 1. Delete the test fixture. Note that different tests in the same test case have different test fixture objects, and Google Test always deletes a test fixture before it creates the next one. Google Test does not reuse the same test fixture for multiple tests. Any changes one test makes to the fixture do not affect other tests.
-
-As an example, let's write tests for a FIFO queue class named `Queue`, which
-has the following interface:
-```
-template <typename E> // E is the element type.
-class Queue {
- public:
- Queue();
- void Enqueue(const E& element);
- E* Dequeue(); // Returns NULL if the queue is empty.
- size_t size() const;
- ...
-};
-```
-
-First, define a fixture class. By convention, you should give it the name
-`FooTest` where `Foo` is the class being tested.
-```
-class QueueTest : public ::testing::Test {
- protected:
- virtual void SetUp() {
- q1_.Enqueue(1);
- q2_.Enqueue(2);
- q2_.Enqueue(3);
- }
-
- // virtual void TearDown() {}
-
- Queue<int> q0_;
- Queue<int> q1_;
- Queue<int> q2_;
-};
-```
-
-In this case, `TearDown()` is not needed since we don't have to clean up after
-each test, other than what's already done by the destructor.
-
-Now we'll write tests using `TEST_F()` and this fixture.
-```
-TEST_F(QueueTest, IsEmptyInitially) {
- EXPECT_EQ(0, q0_.size());
-}
-
-TEST_F(QueueTest, DequeueWorks) {
- int* n = q0_.Dequeue();
- EXPECT_EQ(NULL, n);
-
- n = q1_.Dequeue();
- ASSERT_TRUE(n != NULL);
- EXPECT_EQ(1, *n);
- EXPECT_EQ(0, q1_.size());
- delete n;
-
- n = q2_.Dequeue();
- ASSERT_TRUE(n != NULL);
- EXPECT_EQ(2, *n);
- EXPECT_EQ(1, q2_.size());
- delete n;
-}
-```
-
-The above uses both `ASSERT_*` and `EXPECT_*` assertions. The rule of thumb is
-to use `EXPECT_*` when you want the test to continue to reveal more errors
-after the assertion failure, and use `ASSERT_*` when continuing after failure
-doesn't make sense. For example, the second assertion in the `Dequeue` test is
-`ASSERT_TRUE(n != NULL)`, as we need to dereference the pointer `n` later,
-which would lead to a segfault when `n` is `NULL`.
-
-When these tests run, the following happens:
- 1. Google Test constructs a `QueueTest` object (let's call it `t1` ).
- 1. `t1.SetUp()` initializes `t1` .
- 1. The first test ( `IsEmptyInitially` ) runs on `t1` .
- 1. `t1.TearDown()` cleans up after the test finishes.
- 1. `t1` is destructed.
- 1. The above steps are repeated on another `QueueTest` object, this time running the `DequeueWorks` test.
-
-_Availability_: Linux, Windows, Mac.
-
-_Note_: Google Test automatically saves all _Google Test_ flags when a test
-object is constructed, and restores them when it is destructed.
-
-# Invoking the Tests #
-
-`TEST()` and `TEST_F()` implicitly register their tests with Google Test. So, unlike with many other C++ testing frameworks, you don't have to re-list all your defined tests in order to run them.
-
-After defining your tests, you can run them with `RUN_ALL_TESTS()` , which returns `0` if all the tests are successful, or `1` otherwise. Note that `RUN_ALL_TESTS()` runs _all tests_ in your link unit -- they can be from different test cases, or even different source files.
-
-When invoked, the `RUN_ALL_TESTS()` macro:
- 1. Saves the state of all Google Test flags.
- 1. Creates a test fixture object for the first test.
- 1. Initializes it via `SetUp()`.
- 1. Runs the test on the fixture object.
- 1. Cleans up the fixture via `TearDown()`.
- 1. Deletes the fixture.
- 1. Restores the state of all Google Test flags.
- 1. Repeats the above steps for the next test, until all tests have run.
-
-In addition, if the text fixture's constructor generates a fatal failure in
-step 2, there is no point for step 3 - 5 and they are thus skipped. Similarly,
-if step 3 generates a fatal failure, step 4 will be skipped.
-
-_Important_: You must not ignore the return value of `RUN_ALL_TESTS()`, or `gcc`
-will give you a compiler error. The rationale for this design is that the
-automated testing service determines whether a test has passed based on its
-exit code, not on its stdout/stderr output; thus your `main()` function must
-return the value of `RUN_ALL_TESTS()`.
-
-Also, you should call `RUN_ALL_TESTS()` only **once**. Calling it more than once
-conflicts with some advanced Google Test features (e.g. thread-safe death
-tests) and thus is not supported.
-
-_Availability_: Linux, Windows, Mac.
-
-# Writing the main() Function #
-
-You can start from this boilerplate:
-```
-#include "this/package/foo.h"
-#include "gtest/gtest.h"
-
-namespace {
-
-// The fixture for testing class Foo.
-class FooTest : public ::testing::Test {
- protected:
- // You can remove any or all of the following functions if its body
- // is empty.
-
- FooTest() {
- // You can do set-up work for each test here.
- }
-
- virtual ~FooTest() {
- // You can do clean-up work that doesn't throw exceptions here.
- }
-
- // If the constructor and destructor are not enough for setting up
- // and cleaning up each test, you can define the following methods:
-
- virtual void SetUp() {
- // Code here will be called immediately after the constructor (right
- // before each test).
- }
-
- virtual void TearDown() {
- // Code here will be called immediately after each test (right
- // before the destructor).
- }
-
- // Objects declared here can be used by all tests in the test case for Foo.
-};
-
-// Tests that the Foo::Bar() method does Abc.
-TEST_F(FooTest, MethodBarDoesAbc) {
- const string input_filepath = "this/package/testdata/myinputfile.dat";
- const string output_filepath = "this/package/testdata/myoutputfile.dat";
- Foo f;
- EXPECT_EQ(0, f.Bar(input_filepath, output_filepath));
-}
-
-// Tests that Foo does Xyz.
-TEST_F(FooTest, DoesXyz) {
- // Exercises the Xyz feature of Foo.
-}
-
-} // namespace
-
-int main(int argc, char **argv) {
- ::testing::InitGoogleTest(&argc, argv);
- return RUN_ALL_TESTS();
-}
-```
-
-The `::testing::InitGoogleTest()` function parses the command line for Google
-Test flags, and removes all recognized flags. This allows the user to control a
-test program's behavior via various flags, which we'll cover in [AdvancedGuide](AdvancedGuide.md).
-You must call this function before calling `RUN_ALL_TESTS()`, or the flags
-won't be properly initialized.
-
-On Windows, `InitGoogleTest()` also works with wide strings, so it can be used
-in programs compiled in `UNICODE` mode as well.
-
-But maybe you think that writing all those main() functions is too much work? We agree with you completely and that's why Google Test provides a basic implementation of main(). If it fits your needs, then just link your test with gtest\_main library and you are good to go.
-
-## Important note for Visual C++ users ##
-If you put your tests into a library and your `main()` function is in a different library or in your .exe file, those tests will not run. The reason is a [bug](https://connect.microsoft.com/feedback/viewfeedback.aspx?FeedbackID=244410&siteid=210) in Visual C++. When you define your tests, Google Test creates certain static objects to register them. These objects are not referenced from elsewhere but their constructors are still supposed to run. When Visual C++ linker sees that nothing in the library is referenced from other places it throws the library out. You have to reference your library with tests from your main program to keep the linker from discarding it. Here is how to do it. Somewhere in your library code declare a function:
-```
-__declspec(dllexport) int PullInMyLibrary() { return 0; }
-```
-If you put your tests in a static library (not DLL) then `__declspec(dllexport)` is not required. Now, in your main program, write a code that invokes that function:
-```
-int PullInMyLibrary();
-static int dummy = PullInMyLibrary();
-```
-This will keep your tests referenced and will make them register themselves at startup.
-
-In addition, if you define your tests in a static library, add `/OPT:NOREF` to your main program linker options. If you use MSVC++ IDE, go to your .exe project properties/Configuration Properties/Linker/Optimization and set References setting to `Keep Unreferenced Data (/OPT:NOREF)`. This will keep Visual C++ linker from discarding individual symbols generated by your tests from the final executable.
-
-There is one more pitfall, though. If you use Google Test as a static library (that's how it is defined in gtest.vcproj) your tests must also reside in a static library. If you have to have them in a DLL, you _must_ change Google Test to build into a DLL as well. Otherwise your tests will not run correctly or will not run at all. The general conclusion here is: make your life easier - do not write your tests in libraries!
-
-# Where to Go from Here #
-
-Congratulations! You've learned the Google Test basics. You can start writing
-and running Google Test tests, read some [samples](Samples.md), or continue with
-[AdvancedGuide](AdvancedGuide.md), which describes many more useful Google Test features.
-
-# Known Limitations #
-
-Google Test is designed to be thread-safe. The implementation is
-thread-safe on systems where the `pthreads` library is available. It
-is currently _unsafe_ to use Google Test assertions from two threads
-concurrently on other systems (e.g. Windows). In most tests this is
-not an issue as usually the assertions are done in the main thread. If
-you want to help, you can volunteer to implement the necessary
-synchronization primitives in `gtest-port.h` for your platform.
diff --git a/test/gtest/docs/PumpManual.md b/test/gtest/docs/PumpManual.md
deleted file mode 100644
index 8184f15..0000000
--- a/test/gtest/docs/PumpManual.md
+++ /dev/null
@@ -1,177 +0,0 @@
-
-
-<b>P</b>ump is <b>U</b>seful for <b>M</b>eta <b>P</b>rogramming.
-
-# The Problem #
-
-Template and macro libraries often need to define many classes,
-functions, or macros that vary only (or almost only) in the number of
-arguments they take. It's a lot of repetitive, mechanical, and
-error-prone work.
-
-Variadic templates and variadic macros can alleviate the problem.
-However, while both are being considered by the C++ committee, neither
-is in the standard yet or widely supported by compilers. Thus they
-are often not a good choice, especially when your code needs to be
-portable. And their capabilities are still limited.
-
-As a result, authors of such libraries often have to write scripts to
-generate their implementation. However, our experience is that it's
-tedious to write such scripts, which tend to reflect the structure of
-the generated code poorly and are often hard to read and edit. For
-example, a small change needed in the generated code may require some
-non-intuitive, non-trivial changes in the script. This is especially
-painful when experimenting with the code.
-
-# Our Solution #
-
-Pump (for Pump is Useful for Meta Programming, Pretty Useful for Meta
-Programming, or Practical Utility for Meta Programming, whichever you
-prefer) is a simple meta-programming tool for C++. The idea is that a
-programmer writes a `foo.pump` file which contains C++ code plus meta
-code that manipulates the C++ code. The meta code can handle
-iterations over a range, nested iterations, local meta variable
-definitions, simple arithmetic, and conditional expressions. You can
-view it as a small Domain-Specific Language. The meta language is
-designed to be non-intrusive (s.t. it won't confuse Emacs' C++ mode,
-for example) and concise, making Pump code intuitive and easy to
-maintain.
-
-## Highlights ##
-
- * The implementation is in a single Python script and thus ultra portable: no build or installation is needed and it works cross platforms.
- * Pump tries to be smart with respect to [Google's style guide](http://code.google.com/p/google-styleguide/): it breaks long lines (easy to have when they are generated) at acceptable places to fit within 80 columns and indent the continuation lines correctly.
- * The format is human-readable and more concise than XML.
- * The format works relatively well with Emacs' C++ mode.
-
-## Examples ##
-
-The following Pump code (where meta keywords start with `$`, `[[` and `]]` are meta brackets, and `$$` starts a meta comment that ends with the line):
-
-```
-$var n = 3 $$ Defines a meta variable n.
-$range i 0..n $$ Declares the range of meta iterator i (inclusive).
-$for i [[
- $$ Meta loop.
-// Foo$i does blah for $i-ary predicates.
-$range j 1..i
-template <size_t N $for j [[, typename A$j]]>
-class Foo$i {
-$if i == 0 [[
- blah a;
-]] $elif i <= 2 [[
- blah b;
-]] $else [[
- blah c;
-]]
-};
-
-]]
-```
-
-will be translated by the Pump compiler to:
-
-```
-// Foo0 does blah for 0-ary predicates.
-template <size_t N>
-class Foo0 {
- blah a;
-};
-
-// Foo1 does blah for 1-ary predicates.
-template <size_t N, typename A1>
-class Foo1 {
- blah b;
-};
-
-// Foo2 does blah for 2-ary predicates.
-template <size_t N, typename A1, typename A2>
-class Foo2 {
- blah b;
-};
-
-// Foo3 does blah for 3-ary predicates.
-template <size_t N, typename A1, typename A2, typename A3>
-class Foo3 {
- blah c;
-};
-```
-
-In another example,
-
-```
-$range i 1..n
-Func($for i + [[a$i]]);
-$$ The text between i and [[ is the separator between iterations.
-```
-
-will generate one of the following lines (without the comments), depending on the value of `n`:
-
-```
-Func(); // If n is 0.
-Func(a1); // If n is 1.
-Func(a1 + a2); // If n is 2.
-Func(a1 + a2 + a3); // If n is 3.
-// And so on...
-```
-
-## Constructs ##
-
-We support the following meta programming constructs:
-
-| `$var id = exp` | Defines a named constant value. `$id` is valid util the end of the current meta lexical block. |
-|:----------------|:-----------------------------------------------------------------------------------------------|
-| `$range id exp..exp` | Sets the range of an iteration variable, which can be reused in multiple loops later. |
-| `$for id sep [[ code ]]` | Iteration. The range of `id` must have been defined earlier. `$id` is valid in `code`. |
-| `$($)` | Generates a single `$` character. |
-| `$id` | Value of the named constant or iteration variable. |
-| `$(exp)` | Value of the expression. |
-| `$if exp [[ code ]] else_branch` | Conditional. |
-| `[[ code ]]` | Meta lexical block. |
-| `cpp_code` | Raw C++ code. |
-| `$$ comment` | Meta comment. |
-
-**Note:** To give the user some freedom in formatting the Pump source
-code, Pump ignores a new-line character if it's right after `$for foo`
-or next to `[[` or `]]`. Without this rule you'll often be forced to write
-very long lines to get the desired output. Therefore sometimes you may
-need to insert an extra new-line in such places for a new-line to show
-up in your output.
-
-## Grammar ##
-
-```
-code ::= atomic_code*
-atomic_code ::= $var id = exp
- | $var id = [[ code ]]
- | $range id exp..exp
- | $for id sep [[ code ]]
- | $($)
- | $id
- | $(exp)
- | $if exp [[ code ]] else_branch
- | [[ code ]]
- | cpp_code
-sep ::= cpp_code | empty_string
-else_branch ::= $else [[ code ]]
- | $elif exp [[ code ]] else_branch
- | empty_string
-exp ::= simple_expression_in_Python_syntax
-```
-
-## Code ##
-
-You can find the source code of Pump in [scripts/pump.py](../scripts/pump.py). It is still
-very unpolished and lacks automated tests, although it has been
-successfully used many times. If you find a chance to use it in your
-project, please let us know what you think! We also welcome help on
-improving Pump.
-
-## Real Examples ##
-
-You can find real-world applications of Pump in [Google Test](http://www.google.com/codesearch?q=file%3A\.pump%24+package%3Ahttp%3A%2F%2Fgoogletest\.googlecode\.com) and [Google Mock](http://www.google.com/codesearch?q=file%3A\.pump%24+package%3Ahttp%3A%2F%2Fgooglemock\.googlecode\.com). The source file `foo.h.pump` generates `foo.h`.
-
-## Tips ##
-
- * If a meta variable is followed by a letter or digit, you can separate them using `[[]]`, which inserts an empty string. For example `Foo$j[[]]Helper` generate `Foo1Helper` when `j` is 1.
- * To avoid extra-long Pump source lines, you can break a line anywhere you want by inserting `[[]]` followed by a new line. Since any new-line character next to `[[` or `]]` is ignored, the generated code won't contain this new line.
diff --git a/test/gtest/docs/Samples.md b/test/gtest/docs/Samples.md
deleted file mode 100644
index f21d200..0000000
--- a/test/gtest/docs/Samples.md
+++ /dev/null
@@ -1,14 +0,0 @@
-If you're like us, you'd like to look at some Google Test sample code. The
-[samples folder](../samples) has a number of well-commented samples showing how to use a
-variety of Google Test features.
-
- * [Sample #1](../samples/sample1_unittest.cc) shows the basic steps of using Google Test to test C++ functions.
- * [Sample #2](../samples/sample2_unittest.cc) shows a more complex unit test for a class with multiple member functions.
- * [Sample #3](../samples/sample3_unittest.cc) uses a test fixture.
- * [Sample #4](../samples/sample4_unittest.cc) is another basic example of using Google Test.
- * [Sample #5](../samples/sample5_unittest.cc) teaches how to reuse a test fixture in multiple test cases by deriving sub-fixtures from it.
- * [Sample #6](../samples/sample6_unittest.cc) demonstrates type-parameterized tests.
- * [Sample #7](../samples/sample7_unittest.cc) teaches the basics of value-parameterized tests.
- * [Sample #8](../samples/sample8_unittest.cc) shows using `Combine()` in value-parameterized tests.
- * [Sample #9](../samples/sample9_unittest.cc) shows use of the listener API to modify Google Test's console output and the use of its reflection API to inspect test results.
- * [Sample #10](../samples/sample10_unittest.cc) shows use of the listener API to implement a primitive memory leak checker.
diff --git a/test/gtest/docs/XcodeGuide.md b/test/gtest/docs/XcodeGuide.md
deleted file mode 100644
index 1294d6c..0000000
--- a/test/gtest/docs/XcodeGuide.md
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-This guide will explain how to use the Google Testing Framework in your Xcode projects on Mac OS X. This tutorial begins by quickly explaining what to do for experienced users. After the quick start, the guide goes provides additional explanation about each step.
-
-# Quick Start #
-
-Here is the quick guide for using Google Test in your Xcode project.
-
- 1. Download the source from the [website](http://code.google.com/p/googletest) using this command: `svn checkout http://googletest.googlecode.com/svn/trunk/ googletest-read-only`
- 1. Open up the `gtest.xcodeproj` in the `googletest-read-only/xcode/` directory and build the gtest.framework.
- 1. Create a new "Shell Tool" target in your Xcode project called something like "UnitTests"
- 1. Add the gtest.framework to your project and add it to the "Link Binary with Libraries" build phase of "UnitTests"
- 1. Add your unit test source code to the "Compile Sources" build phase of "UnitTests"
- 1. Edit the "UnitTests" executable and add an environment variable named "DYLD\_FRAMEWORK\_PATH" with a value equal to the path to the framework containing the gtest.framework relative to the compiled executable.
- 1. Build and Go
-
-The following sections further explain each of the steps listed above in depth, describing in more detail how to complete it including some variations.
-
-# Get the Source #
-
-Currently, the gtest.framework discussed here isn't available in a tagged release of Google Test, it is only available in the trunk. As explained at the Google Test [site](http://code.google.com/p/googletest/source/checkout">svn), you can get the code from anonymous SVN with this command:
-
-```
-svn checkout http://googletest.googlecode.com/svn/trunk/ googletest-read-only
-```
-
-Alternatively, if you are working with Subversion in your own code base, you can add Google Test as an external dependency to your own Subversion repository. By following this approach, everyone that checks out your svn repository will also receive a copy of Google Test (a specific version, if you wish) without having to check it out explicitly. This makes the set up of your project simpler and reduces the copied code in the repository.
-
-To use `svn:externals`, decide where you would like to have the external source reside. You might choose to put the external source inside the trunk, because you want it to be part of the branch when you make a release. However, keeping it outside the trunk in a version-tagged directory called something like `third-party/googletest/1.0.1`, is another option. Once the location is established, use `svn propedit svn:externals _directory_` to set the svn:externals property on a directory in your repository. This directory won't contain the code, but be its versioned parent directory.
-
-The command `svn propedit` will bring up your Subversion editor, making editing the long, (potentially multi-line) property simpler. This same method can be used to check out a tagged branch, by using the appropriate URL (e.g. `http://googletest.googlecode.com/svn/tags/release-1.0.1`). Additionally, the svn:externals property allows the specification of a particular revision of the trunk with the `-r_##_` option (e.g. `externals/src/googletest -r60 http://googletest.googlecode.com/svn/trunk`).
-
-Here is an example of using the svn:externals properties on a trunk (read via `svn propget`) of a project. This value checks out a copy of Google Test into the `trunk/externals/src/googletest/` directory.
-
-```
-[Computer:svn] user$ svn propget svn:externals trunk
-externals/src/googletest http://googletest.googlecode.com/svn/trunk
-```
-
-# Add the Framework to Your Project #
-
-The next step is to build and add the gtest.framework to your own project. This guide describes two common ways below.
-
- * **Option 1** --- The simplest way to add Google Test to your own project, is to open gtest.xcodeproj (found in the xcode/ directory of the Google Test trunk) and build the framework manually. Then, add the built framework into your project using the "Add->Existing Framework..." from the context menu or "Project->Add..." from the main menu. The gtest.framework is relocatable and contains the headers and object code that you'll need to make tests. This method requires rebuilding every time you upgrade Google Test in your project.
- * **Option 2** --- If you are going to be living off the trunk of Google Test, incorporating its latest features into your unit tests (or are a Google Test developer yourself). You'll want to rebuild the framework every time the source updates. to do this, you'll need to add the gtest.xcodeproj file, not the framework itself, to your own Xcode project. Then, from the build products that are revealed by the project's disclosure triangle, you can find the gtest.framework, which can be added to your targets (discussed below).
-
-# Make a Test Target #
-
-To start writing tests, make a new "Shell Tool" target. This target template is available under BSD, Cocoa, or Carbon. Add your unit test source code to the "Compile Sources" build phase of the target.
-
-Next, you'll want to add gtest.framework in two different ways, depending upon which option you chose above.
-
- * **Option 1** --- During compilation, Xcode will need to know that you are linking against the gtest.framework. Add the gtest.framework to the "Link Binary with Libraries" build phase of your test target. This will include the Google Test headers in your header search path, and will tell the linker where to find the library.
- * **Option 2** --- If your working out of the trunk, you'll also want to add gtest.framework to your "Link Binary with Libraries" build phase of your test target. In addition, you'll want to add the gtest.framework as a dependency to your unit test target. This way, Xcode will make sure that gtest.framework is up to date, every time your build your target. Finally, if you don't share build directories with Google Test, you'll have to copy the gtest.framework into your own build products directory using a "Run Script" build phase.
-
-# Set Up the Executable Run Environment #
-
-Since the unit test executable is a shell tool, it doesn't have a bundle with a `Contents/Frameworks` directory, in which to place gtest.framework. Instead, the dynamic linker must be told at runtime to search for the framework in another location. This can be accomplished by setting the "DYLD\_FRAMEWORK\_PATH" environment variable in the "Edit Active Executable ..." Arguments tab, under "Variables to be set in the environment:". The path for this value is the path (relative or absolute) of the directory containing the gtest.framework.
-
-If you haven't set up the DYLD\_FRAMEWORK\_PATH, correctly, you might get a message like this:
-
-```
-[Session started at 2008-08-15 06:23:57 -0600.]
- dyld: Library not loaded: @loader_path/../Frameworks/gtest.framework/Versions/A/gtest
- Referenced from: /Users/username/Documents/Sandbox/gtestSample/build/Debug/WidgetFrameworkTest
- Reason: image not found
-```
-
-To correct this problem, got to the directory containing the executable named in "Referenced from:" value in the error message above. Then, with the terminal in this location, find the relative path to the directory containing the gtest.framework. That is the value you'll need to set as the DYLD\_FRAMEWORK\_PATH.
-
-# Build and Go #
-
-Now, when you click "Build and Go", the test will be executed. Dumping out something like this:
-
-```
-[Session started at 2008-08-06 06:36:13 -0600.]
-[==========] Running 2 tests from 1 test case.
-[----------] Global test environment set-up.
-[----------] 2 tests from WidgetInitializerTest
-[ RUN ] WidgetInitializerTest.TestConstructor
-[ OK ] WidgetInitializerTest.TestConstructor
-[ RUN ] WidgetInitializerTest.TestConversion
-[ OK ] WidgetInitializerTest.TestConversion
-[----------] Global test environment tear-down
-[==========] 2 tests from 1 test case ran.
-[ PASSED ] 2 tests.
-
-The Debugger has exited with status 0.
-```
-
-# Summary #
-
-Unit testing is a valuable way to ensure your data model stays valid even during rapid development or refactoring. The Google Testing Framework is a great unit testing framework for C and C++ which integrates well with an Xcode development environment. \ No newline at end of file
diff --git a/test/gtest/include/gtest/gtest-death-test.h b/test/gtest/include/gtest/gtest-death-test.h
deleted file mode 100644
index 957a69c..0000000
--- a/test/gtest/include/gtest/gtest-death-test.h
+++ /dev/null
@@ -1,294 +0,0 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wan@google.com (Zhanyong Wan)
-//
-// The Google C++ Testing Framework (Google Test)
-//
-// This header file defines the public API for death tests. It is
-// #included by gtest.h so a user doesn't need to include this
-// directly.
-
-#ifndef GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
-#define GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
-
-#include "gtest/internal/gtest-death-test-internal.h"
-
-namespace testing {
-
-// This flag controls the style of death tests. Valid values are "threadsafe",
-// meaning that the death test child process will re-execute the test binary
-// from the start, running only a single death test, or "fast",
-// meaning that the child process will execute the test logic immediately
-// after forking.
-GTEST_DECLARE_string_(death_test_style);
-
-#if GTEST_HAS_DEATH_TEST
-
-namespace internal {
-
-// Returns a Boolean value indicating whether the caller is currently
-// executing in the context of the death test child process. Tools such as
-// Valgrind heap checkers may need this to modify their behavior in death
-// tests. IMPORTANT: This is an internal utility. Using it may break the
-// implementation of death tests. User code MUST NOT use it.
-GTEST_API_ bool InDeathTestChild();
-
-} // namespace internal
-
-// The following macros are useful for writing death tests.
-
-// Here's what happens when an ASSERT_DEATH* or EXPECT_DEATH* is
-// executed:
-//
-// 1. It generates a warning if there is more than one active
-// thread. This is because it's safe to fork() or clone() only
-// when there is a single thread.
-//
-// 2. The parent process clone()s a sub-process and runs the death
-// test in it; the sub-process exits with code 0 at the end of the
-// death test, if it hasn't exited already.
-//
-// 3. The parent process waits for the sub-process to terminate.
-//
-// 4. The parent process checks the exit code and error message of
-// the sub-process.
-//
-// Examples:
-//
-// ASSERT_DEATH(server.SendMessage(56, "Hello"), "Invalid port number");
-// for (int i = 0; i < 5; i++) {
-// EXPECT_DEATH(server.ProcessRequest(i),
-// "Invalid request .* in ProcessRequest()")
-// << "Failed to die on request " << i;
-// }
-//
-// ASSERT_EXIT(server.ExitNow(), ::testing::ExitedWithCode(0), "Exiting");
-//
-// bool KilledBySIGHUP(int exit_code) {
-// return WIFSIGNALED(exit_code) && WTERMSIG(exit_code) == SIGHUP;
-// }
-//
-// ASSERT_EXIT(client.HangUpServer(), KilledBySIGHUP, "Hanging up!");
-//
-// On the regular expressions used in death tests:
-//
-// On POSIX-compliant systems (*nix), we use the <regex.h> library,
-// which uses the POSIX extended regex syntax.
-//
-// On other platforms (e.g. Windows), we only support a simple regex
-// syntax implemented as part of Google Test. This limited
-// implementation should be enough most of the time when writing
-// death tests; though it lacks many features you can find in PCRE
-// or POSIX extended regex syntax. For example, we don't support
-// union ("x|y"), grouping ("(xy)"), brackets ("[xy]"), and
-// repetition count ("x{5,7}"), among others.
-//
-// Below is the syntax that we do support. We chose it to be a
-// subset of both PCRE and POSIX extended regex, so it's easy to
-// learn wherever you come from. In the following: 'A' denotes a
-// literal character, period (.), or a single \\ escape sequence;
-// 'x' and 'y' denote regular expressions; 'm' and 'n' are for
-// natural numbers.
-//
-// c matches any literal character c
-// \\d matches any decimal digit
-// \\D matches any character that's not a decimal digit
-// \\f matches \f
-// \\n matches \n
-// \\r matches \r
-// \\s matches any ASCII whitespace, including \n
-// \\S matches any character that's not a whitespace
-// \\t matches \t
-// \\v matches \v
-// \\w matches any letter, _, or decimal digit
-// \\W matches any character that \\w doesn't match
-// \\c matches any literal character c, which must be a punctuation
-// . matches any single character except \n
-// A? matches 0 or 1 occurrences of A
-// A* matches 0 or many occurrences of A
-// A+ matches 1 or many occurrences of A
-// ^ matches the beginning of a string (not that of each line)
-// $ matches the end of a string (not that of each line)
-// xy matches x followed by y
-//
-// If you accidentally use PCRE or POSIX extended regex features
-// not implemented by us, you will get a run-time failure. In that
-// case, please try to rewrite your regular expression within the
-// above syntax.
-//
-// This implementation is *not* meant to be as highly tuned or robust
-// as a compiled regex library, but should perform well enough for a
-// death test, which already incurs significant overhead by launching
-// a child process.
-//
-// Known caveats:
-//
-// A "threadsafe" style death test obtains the path to the test
-// program from argv[0] and re-executes it in the sub-process. For
-// simplicity, the current implementation doesn't search the PATH
-// when launching the sub-process. This means that the user must
-// invoke the test program via a path that contains at least one
-// path separator (e.g. path/to/foo_test and
-// /absolute/path/to/bar_test are fine, but foo_test is not). This
-// is rarely a problem as people usually don't put the test binary
-// directory in PATH.
-//
-// TODO(wan@google.com): make thread-safe death tests search the PATH.
-
-// Asserts that a given statement causes the program to exit, with an
-// integer exit status that satisfies predicate, and emitting error output
-// that matches regex.
-# define ASSERT_EXIT(statement, predicate, regex) \
- GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_)
-
-// Like ASSERT_EXIT, but continues on to successive tests in the
-// test case, if any:
-# define EXPECT_EXIT(statement, predicate, regex) \
- GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_)
-
-// Asserts that a given statement causes the program to exit, either by
-// explicitly exiting with a nonzero exit code or being killed by a
-// signal, and emitting error output that matches regex.
-# define ASSERT_DEATH(statement, regex) \
- ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
-
-// Like ASSERT_DEATH, but continues on to successive tests in the
-// test case, if any:
-# define EXPECT_DEATH(statement, regex) \
- EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
-
-// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*:
-
-// Tests that an exit code describes a normal exit with a given exit code.
-class GTEST_API_ ExitedWithCode {
- public:
- explicit ExitedWithCode(int exit_code);
- bool operator()(int exit_status) const;
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ExitedWithCode& other);
-
- const int exit_code_;
-};
-
-# if !GTEST_OS_WINDOWS
-// Tests that an exit code describes an exit due to termination by a
-// given signal.
-class GTEST_API_ KilledBySignal {
- public:
- explicit KilledBySignal(int signum);
- bool operator()(int exit_status) const;
- private:
- const int signum_;
-};
-# endif // !GTEST_OS_WINDOWS
-
-// EXPECT_DEBUG_DEATH asserts that the given statements die in debug mode.
-// The death testing framework causes this to have interesting semantics,
-// since the sideeffects of the call are only visible in opt mode, and not
-// in debug mode.
-//
-// In practice, this can be used to test functions that utilize the
-// LOG(DFATAL) macro using the following style:
-//
-// int DieInDebugOr12(int* sideeffect) {
-// if (sideeffect) {
-// *sideeffect = 12;
-// }
-// LOG(DFATAL) << "death";
-// return 12;
-// }
-//
-// TEST(TestCase, TestDieOr12WorksInDgbAndOpt) {
-// int sideeffect = 0;
-// // Only asserts in dbg.
-// EXPECT_DEBUG_DEATH(DieInDebugOr12(&sideeffect), "death");
-//
-// #ifdef NDEBUG
-// // opt-mode has sideeffect visible.
-// EXPECT_EQ(12, sideeffect);
-// #else
-// // dbg-mode no visible sideeffect.
-// EXPECT_EQ(0, sideeffect);
-// #endif
-// }
-//
-// This will assert that DieInDebugReturn12InOpt() crashes in debug
-// mode, usually due to a DCHECK or LOG(DFATAL), but returns the
-// appropriate fallback value (12 in this case) in opt mode. If you
-// need to test that a function has appropriate side-effects in opt
-// mode, include assertions against the side-effects. A general
-// pattern for this is:
-//
-// EXPECT_DEBUG_DEATH({
-// // Side-effects here will have an effect after this statement in
-// // opt mode, but none in debug mode.
-// EXPECT_EQ(12, DieInDebugOr12(&sideeffect));
-// }, "death");
-//
-# ifdef NDEBUG
-
-# define EXPECT_DEBUG_DEATH(statement, regex) \
- GTEST_EXECUTE_STATEMENT_(statement, regex)
-
-# define ASSERT_DEBUG_DEATH(statement, regex) \
- GTEST_EXECUTE_STATEMENT_(statement, regex)
-
-# else
-
-# define EXPECT_DEBUG_DEATH(statement, regex) \
- EXPECT_DEATH(statement, regex)
-
-# define ASSERT_DEBUG_DEATH(statement, regex) \
- ASSERT_DEATH(statement, regex)
-
-# endif // NDEBUG for EXPECT_DEBUG_DEATH
-#endif // GTEST_HAS_DEATH_TEST
-
-// EXPECT_DEATH_IF_SUPPORTED(statement, regex) and
-// ASSERT_DEATH_IF_SUPPORTED(statement, regex) expand to real death tests if
-// death tests are supported; otherwise they just issue a warning. This is
-// useful when you are combining death test assertions with normal test
-// assertions in one test.
-#if GTEST_HAS_DEATH_TEST
-# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
- EXPECT_DEATH(statement, regex)
-# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
- ASSERT_DEATH(statement, regex)
-#else
-# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
- GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, )
-# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
- GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, return)
-#endif
-
-} // namespace testing
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
diff --git a/test/gtest/include/gtest/gtest-message.h b/test/gtest/include/gtest/gtest-message.h
deleted file mode 100644
index fe879bc..0000000
--- a/test/gtest/include/gtest/gtest-message.h
+++ /dev/null
@@ -1,250 +0,0 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wan@google.com (Zhanyong Wan)
-//
-// The Google C++ Testing Framework (Google Test)
-//
-// This header file defines the Message class.
-//
-// IMPORTANT NOTE: Due to limitation of the C++ language, we have to
-// leave some internal implementation details in this header file.
-// They are clearly marked by comments like this:
-//
-// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-//
-// Such code is NOT meant to be used by a user directly, and is subject
-// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user
-// program!
-
-#ifndef GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
-#define GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
-
-#include <limits>
-
-#include "gtest/internal/gtest-port.h"
-
-// Ensures that there is at least one operator<< in the global namespace.
-// See Message& operator<<(...) below for why.
-void operator<<(const testing::internal::Secret&, int);
-
-namespace testing {
-
-// The Message class works like an ostream repeater.
-//
-// Typical usage:
-//
-// 1. You stream a bunch of values to a Message object.
-// It will remember the text in a stringstream.
-// 2. Then you stream the Message object to an ostream.
-// This causes the text in the Message to be streamed
-// to the ostream.
-//
-// For example;
-//
-// testing::Message foo;
-// foo << 1 << " != " << 2;
-// std::cout << foo;
-//
-// will print "1 != 2".
-//
-// Message is not intended to be inherited from. In particular, its
-// destructor is not virtual.
-//
-// Note that stringstream behaves differently in gcc and in MSVC. You
-// can stream a NULL char pointer to it in the former, but not in the
-// latter (it causes an access violation if you do). The Message
-// class hides this difference by treating a NULL char pointer as
-// "(null)".
-class GTEST_API_ Message {
- private:
- // The type of basic IO manipulators (endl, ends, and flush) for
- // narrow streams.
- typedef std::ostream& (*BasicNarrowIoManip)(std::ostream&);
-
- public:
- // Constructs an empty Message.
- Message();
-
- // Copy constructor.
- Message(const Message& msg) : ss_(new ::std::stringstream) { // NOLINT
- *ss_ << msg.GetString();
- }
-
- // Constructs a Message from a C-string.
- explicit Message(const char* str) : ss_(new ::std::stringstream) {
- *ss_ << str;
- }
-
-#if GTEST_OS_SYMBIAN
- // Streams a value (either a pointer or not) to this object.
- template <typename T>
- inline Message& operator <<(const T& value) {
- StreamHelper(typename internal::is_pointer<T>::type(), value);
- return *this;
- }
-#else
- // Streams a non-pointer value to this object.
- template <typename T>
- inline Message& operator <<(const T& val) {
- // Some libraries overload << for STL containers. These
- // overloads are defined in the global namespace instead of ::std.
- //
- // C++'s symbol lookup rule (i.e. Koenig lookup) says that these
- // overloads are visible in either the std namespace or the global
- // namespace, but not other namespaces, including the testing
- // namespace which Google Test's Message class is in.
- //
- // To allow STL containers (and other types that has a << operator
- // defined in the global namespace) to be used in Google Test
- // assertions, testing::Message must access the custom << operator
- // from the global namespace. With this using declaration,
- // overloads of << defined in the global namespace and those
- // visible via Koenig lookup are both exposed in this function.
- using ::operator <<;
- *ss_ << val;
- return *this;
- }
-
- // Streams a pointer value to this object.
- //
- // This function is an overload of the previous one. When you
- // stream a pointer to a Message, this definition will be used as it
- // is more specialized. (The C++ Standard, section
- // [temp.func.order].) If you stream a non-pointer, then the
- // previous definition will be used.
- //
- // The reason for this overload is that streaming a NULL pointer to
- // ostream is undefined behavior. Depending on the compiler, you
- // may get "0", "(nil)", "(null)", or an access violation. To
- // ensure consistent result across compilers, we always treat NULL
- // as "(null)".
- template <typename T>
- inline Message& operator <<(T* const& pointer) { // NOLINT
- if (pointer == NULL) {
- *ss_ << "(null)";
- } else {
- *ss_ << pointer;
- }
- return *this;
- }
-#endif // GTEST_OS_SYMBIAN
-
- // Since the basic IO manipulators are overloaded for both narrow
- // and wide streams, we have to provide this specialized definition
- // of operator <<, even though its body is the same as the
- // templatized version above. Without this definition, streaming
- // endl or other basic IO manipulators to Message will confuse the
- // compiler.
- Message& operator <<(BasicNarrowIoManip val) {
- *ss_ << val;
- return *this;
- }
-
- // Instead of 1/0, we want to see true/false for bool values.
- Message& operator <<(bool b) {
- return *this << (b ? "true" : "false");
- }
-
- // These two overloads allow streaming a wide C string to a Message
- // using the UTF-8 encoding.
- Message& operator <<(const wchar_t* wide_c_str);
- Message& operator <<(wchar_t* wide_c_str);
-
-#if GTEST_HAS_STD_WSTRING
- // Converts the given wide string to a narrow string using the UTF-8
- // encoding, and streams the result to this Message object.
- Message& operator <<(const ::std::wstring& wstr);
-#endif // GTEST_HAS_STD_WSTRING
-
-#if GTEST_HAS_GLOBAL_WSTRING
- // Converts the given wide string to a narrow string using the UTF-8
- // encoding, and streams the result to this Message object.
- Message& operator <<(const ::wstring& wstr);
-#endif // GTEST_HAS_GLOBAL_WSTRING
-
- // Gets the text streamed to this object so far as an std::string.
- // Each '\0' character in the buffer is replaced with "\\0".
- //
- // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
- std::string GetString() const;
-
- private:
-
-#if GTEST_OS_SYMBIAN
- // These are needed as the Nokia Symbian Compiler cannot decide between
- // const T& and const T* in a function template. The Nokia compiler _can_
- // decide between class template specializations for T and T*, so a
- // tr1::type_traits-like is_pointer works, and we can overload on that.
- template <typename T>
- inline void StreamHelper(internal::true_type /*is_pointer*/, T* pointer) {
- if (pointer == NULL) {
- *ss_ << "(null)";
- } else {
- *ss_ << pointer;
- }
- }
- template <typename T>
- inline void StreamHelper(internal::false_type /*is_pointer*/,
- const T& value) {
- // See the comments in Message& operator <<(const T&) above for why
- // we need this using statement.
- using ::operator <<;
- *ss_ << value;
- }
-#endif // GTEST_OS_SYMBIAN
-
- // We'll hold the text streamed to this object here.
- const internal::scoped_ptr< ::std::stringstream> ss_;
-
- // We declare (but don't implement) this to prevent the compiler
- // from implementing the assignment operator.
- void operator=(const Message&);
-};
-
-// Streams a Message to an ostream.
-inline std::ostream& operator <<(std::ostream& os, const Message& sb) {
- return os << sb.GetString();
-}
-
-namespace internal {
-
-// Converts a streamable value to an std::string. A NULL pointer is
-// converted to "(null)". When the input value is a ::string,
-// ::std::string, ::wstring, or ::std::wstring object, each NUL
-// character in it is replaced with "\\0".
-template <typename T>
-std::string StreamableToString(const T& streamable) {
- return (Message() << streamable).GetString();
-}
-
-} // namespace internal
-} // namespace testing
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
diff --git a/test/gtest/include/gtest/gtest-param-test.h b/test/gtest/include/gtest/gtest-param-test.h
deleted file mode 100644
index 038f9ba..0000000
--- a/test/gtest/include/gtest/gtest-param-test.h
+++ /dev/null
@@ -1,1444 +0,0 @@
-// This file was GENERATED by command:
-// pump.py gtest-param-test.h.pump
-// DO NOT EDIT BY HAND!!!
-
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: vladl@google.com (Vlad Losev)
-//
-// Macros and functions for implementing parameterized tests
-// in Google C++ Testing Framework (Google Test)
-//
-// This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
-//
-#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
-#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
-
-
-// Value-parameterized tests allow you to test your code with different
-// parameters without writing multiple copies of the same test.
-//
-// Here is how you use value-parameterized tests:
-
-#if 0
-
-// To write value-parameterized tests, first you should define a fixture
-// class. It is usually derived from testing::TestWithParam<T> (see below for
-// another inheritance scheme that's sometimes useful in more complicated
-// class hierarchies), where the type of your parameter values.
-// TestWithParam<T> is itself derived from testing::Test. T can be any
-// copyable type. If it's a raw pointer, you are responsible for managing the
-// lifespan of the pointed values.
-
-class FooTest : public ::testing::TestWithParam<const char*> {
- // You can implement all the usual class fixture members here.
-};
-
-// Then, use the TEST_P macro to define as many parameterized tests
-// for this fixture as you want. The _P suffix is for "parameterized"
-// or "pattern", whichever you prefer to think.
-
-TEST_P(FooTest, DoesBlah) {
- // Inside a test, access the test parameter with the GetParam() method
- // of the TestWithParam<T> class:
- EXPECT_TRUE(foo.Blah(GetParam()));
- ...
-}
-
-TEST_P(FooTest, HasBlahBlah) {
- ...
-}
-
-// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test
-// case with any set of parameters you want. Google Test defines a number
-// of functions for generating test parameters. They return what we call
-// (surprise!) parameter generators. Here is a summary of them, which
-// are all in the testing namespace:
-//
-//
-// Range(begin, end [, step]) - Yields values {begin, begin+step,
-// begin+step+step, ...}. The values do not
-// include end. step defaults to 1.
-// Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}.
-// ValuesIn(container) - Yields values from a C-style array, an STL
-// ValuesIn(begin,end) container, or an iterator range [begin, end).
-// Bool() - Yields sequence {false, true}.
-// Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product
-// for the math savvy) of the values generated
-// by the N generators.
-//
-// For more details, see comments at the definitions of these functions below
-// in this file.
-//
-// The following statement will instantiate tests from the FooTest test case
-// each with parameter values "meeny", "miny", and "moe".
-
-INSTANTIATE_TEST_CASE_P(InstantiationName,
- FooTest,
- Values("meeny", "miny", "moe"));
-
-// To distinguish different instances of the pattern, (yes, you
-// can instantiate it more then once) the first argument to the
-// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the
-// actual test case name. Remember to pick unique prefixes for different
-// instantiations. The tests from the instantiation above will have
-// these names:
-//
-// * InstantiationName/FooTest.DoesBlah/0 for "meeny"
-// * InstantiationName/FooTest.DoesBlah/1 for "miny"
-// * InstantiationName/FooTest.DoesBlah/2 for "moe"
-// * InstantiationName/FooTest.HasBlahBlah/0 for "meeny"
-// * InstantiationName/FooTest.HasBlahBlah/1 for "miny"
-// * InstantiationName/FooTest.HasBlahBlah/2 for "moe"
-//
-// You can use these names in --gtest_filter.
-//
-// This statement will instantiate all tests from FooTest again, each
-// with parameter values "cat" and "dog":
-
-const char* pets[] = {"cat", "dog"};
-INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets));
-
-// The tests from the instantiation above will have these names:
-//
-// * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat"
-// * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog"
-// * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat"
-// * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog"
-//
-// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests
-// in the given test case, whether their definitions come before or
-// AFTER the INSTANTIATE_TEST_CASE_P statement.
-//
-// Please also note that generator expressions (including parameters to the
-// generators) are evaluated in InitGoogleTest(), after main() has started.
-// This allows the user on one hand, to adjust generator parameters in order
-// to dynamically determine a set of tests to run and on the other hand,
-// give the user a chance to inspect the generated tests with Google Test
-// reflection API before RUN_ALL_TESTS() is executed.
-//
-// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc
-// for more examples.
-//
-// In the future, we plan to publish the API for defining new parameter
-// generators. But for now this interface remains part of the internal
-// implementation and is subject to change.
-//
-//
-// A parameterized test fixture must be derived from testing::Test and from
-// testing::WithParamInterface<T>, where T is the type of the parameter
-// values. Inheriting from TestWithParam<T> satisfies that requirement because
-// TestWithParam<T> inherits from both Test and WithParamInterface. In more
-// complicated hierarchies, however, it is occasionally useful to inherit
-// separately from Test and WithParamInterface. For example:
-
-class BaseTest : public ::testing::Test {
- // You can inherit all the usual members for a non-parameterized test
- // fixture here.
-};
-
-class DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> {
- // The usual test fixture members go here too.
-};
-
-TEST_F(BaseTest, HasFoo) {
- // This is an ordinary non-parameterized test.
-}
-
-TEST_P(DerivedTest, DoesBlah) {
- // GetParam works just the same here as if you inherit from TestWithParam.
- EXPECT_TRUE(foo.Blah(GetParam()));
-}
-
-#endif // 0
-
-#include "gtest/internal/gtest-port.h"
-
-#if !GTEST_OS_SYMBIAN
-# include <utility>
-#endif
-
-// scripts/fuse_gtest.py depends on gtest's own header being #included
-// *unconditionally*. Therefore these #includes cannot be moved
-// inside #if GTEST_HAS_PARAM_TEST.
-#include "gtest/internal/gtest-internal.h"
-#include "gtest/internal/gtest-param-util.h"
-#include "gtest/internal/gtest-param-util-generated.h"
-
-#if GTEST_HAS_PARAM_TEST
-
-namespace testing {
-
-// Functions producing parameter generators.
-//
-// Google Test uses these generators to produce parameters for value-
-// parameterized tests. When a parameterized test case is instantiated
-// with a particular generator, Google Test creates and runs tests
-// for each element in the sequence produced by the generator.
-//
-// In the following sample, tests from test case FooTest are instantiated
-// each three times with parameter values 3, 5, and 8:
-//
-// class FooTest : public TestWithParam<int> { ... };
-//
-// TEST_P(FooTest, TestThis) {
-// }
-// TEST_P(FooTest, TestThat) {
-// }
-// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8));
-//
-
-// Range() returns generators providing sequences of values in a range.
-//
-// Synopsis:
-// Range(start, end)
-// - returns a generator producing a sequence of values {start, start+1,
-// start+2, ..., }.
-// Range(start, end, step)
-// - returns a generator producing a sequence of values {start, start+step,
-// start+step+step, ..., }.
-// Notes:
-// * The generated sequences never include end. For example, Range(1, 5)
-// returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2)
-// returns a generator producing {1, 3, 5, 7}.
-// * start and end must have the same type. That type may be any integral or
-// floating-point type or a user defined type satisfying these conditions:
-// * It must be assignable (have operator=() defined).
-// * It must have operator+() (operator+(int-compatible type) for
-// two-operand version).
-// * It must have operator<() defined.
-// Elements in the resulting sequences will also have that type.
-// * Condition start < end must be satisfied in order for resulting sequences
-// to contain any elements.
-//
-template <typename T, typename IncrementT>
-internal::ParamGenerator<T> Range(T start, T end, IncrementT step) {
- return internal::ParamGenerator<T>(
- new internal::RangeGenerator<T, IncrementT>(start, end, step));
-}
-
-template <typename T>
-internal::ParamGenerator<T> Range(T start, T end) {
- return Range(start, end, 1);
-}
-
-// ValuesIn() function allows generation of tests with parameters coming from
-// a container.
-//
-// Synopsis:
-// ValuesIn(const T (&array)[N])
-// - returns a generator producing sequences with elements from
-// a C-style array.
-// ValuesIn(const Container& container)
-// - returns a generator producing sequences with elements from
-// an STL-style container.
-// ValuesIn(Iterator begin, Iterator end)
-// - returns a generator producing sequences with elements from
-// a range [begin, end) defined by a pair of STL-style iterators. These
-// iterators can also be plain C pointers.
-//
-// Please note that ValuesIn copies the values from the containers
-// passed in and keeps them to generate tests in RUN_ALL_TESTS().
-//
-// Examples:
-//
-// This instantiates tests from test case StringTest
-// each with C-string values of "foo", "bar", and "baz":
-//
-// const char* strings[] = {"foo", "bar", "baz"};
-// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings));
-//
-// This instantiates tests from test case StlStringTest
-// each with STL strings with values "a" and "b":
-//
-// ::std::vector< ::std::string> GetParameterStrings() {
-// ::std::vector< ::std::string> v;
-// v.push_back("a");
-// v.push_back("b");
-// return v;
-// }
-//
-// INSTANTIATE_TEST_CASE_P(CharSequence,
-// StlStringTest,
-// ValuesIn(GetParameterStrings()));
-//
-//
-// This will also instantiate tests from CharTest
-// each with parameter values 'a' and 'b':
-//
-// ::std::list<char> GetParameterChars() {
-// ::std::list<char> list;
-// list.push_back('a');
-// list.push_back('b');
-// return list;
-// }
-// ::std::list<char> l = GetParameterChars();
-// INSTANTIATE_TEST_CASE_P(CharSequence2,
-// CharTest,
-// ValuesIn(l.begin(), l.end()));
-//
-template <typename ForwardIterator>
-internal::ParamGenerator<
- typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
-ValuesIn(ForwardIterator begin, ForwardIterator end) {
- typedef typename ::testing::internal::IteratorTraits<ForwardIterator>
- ::value_type ParamType;
- return internal::ParamGenerator<ParamType>(
- new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end));
-}
-
-template <typename T, size_t N>
-internal::ParamGenerator<T> ValuesIn(const T (&array)[N]) {
- return ValuesIn(array, array + N);
-}
-
-template <class Container>
-internal::ParamGenerator<typename Container::value_type> ValuesIn(
- const Container& container) {
- return ValuesIn(container.begin(), container.end());
-}
-
-// Values() allows generating tests from explicitly specified list of
-// parameters.
-//
-// Synopsis:
-// Values(T v1, T v2, ..., T vN)
-// - returns a generator producing sequences with elements v1, v2, ..., vN.
-//
-// For example, this instantiates tests from test case BarTest each
-// with values "one", "two", and "three":
-//
-// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three"));
-//
-// This instantiates tests from test case BazTest each with values 1, 2, 3.5.
-// The exact type of values will depend on the type of parameter in BazTest.
-//
-// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5));
-//
-// Currently, Values() supports from 1 to 50 parameters.
-//
-template <typename T1>
-internal::ValueArray1<T1> Values(T1 v1) {
- return internal::ValueArray1<T1>(v1);
-}
-
-template <typename T1, typename T2>
-internal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) {
- return internal::ValueArray2<T1, T2>(v1, v2);
-}
-
-template <typename T1, typename T2, typename T3>
-internal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) {
- return internal::ValueArray3<T1, T2, T3>(v1, v2, v3);
-}
-
-template <typename T1, typename T2, typename T3, typename T4>
-internal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) {
- return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5>
-internal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4,
- T5 v5) {
- return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6>
-internal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3,
- T4 v4, T5 v5, T6 v6) {
- return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7>
-internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3,
- T4 v4, T5 v5, T6 v6, T7 v7) {
- return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5,
- v6, v7);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8>
-internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2,
- T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) {
- return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4,
- v5, v6, v7, v8);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9>
-internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2,
- T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) {
- return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3,
- v4, v5, v6, v7, v8, v9);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10>
-internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1,
- T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) {
- return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1,
- v2, v3, v4, v5, v6, v7, v8, v9, v10);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11>
-internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
- T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11) {
- return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
- T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12>
-internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12) {
- return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13>
-internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13) {
- return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14>
-internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) {
- return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
- v14);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15>
-internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
- T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) {
- return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
- v13, v14, v15);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16>
-internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
- T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
- T16 v16) {
- return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
- v12, v13, v14, v15, v16);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17>
-internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
- T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
- T16 v16, T17 v17) {
- return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
- v11, v12, v13, v14, v15, v16, v17);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18>
-internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
- T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
- T16 v16, T17 v17, T18 v18) {
- return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
- v10, v11, v12, v13, v14, v15, v16, v17, v18);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19>
-internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
- T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
- T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) {
- return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8,
- v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20>
-internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4,
- T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
- T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) {
- return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7,
- v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21>
-internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4,
- T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
- T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) {
- return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6,
- v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22>
-internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3,
- T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
- T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
- T21 v21, T22 v22) {
- return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4,
- v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
- v20, v21, v22);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23>
-internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2,
- T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
- T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
- T21 v21, T22 v22, T23 v23) {
- return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3,
- v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
- v20, v21, v22, v23);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24>
-internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2,
- T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
- T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
- T21 v21, T22 v22, T23 v23, T24 v24) {
- return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2,
- v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,
- v19, v20, v21, v22, v23, v24);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25>
-internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Values(T1 v1,
- T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11,
- T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19,
- T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) {
- return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1,
- v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,
- v18, v19, v20, v21, v22, v23, v24, v25);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26>
-internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26) {
- return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,
- v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27>
-internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27) {
- return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14,
- v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28>
-internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28) {
- return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
- v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27,
- v28);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29>
-internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29) {
- return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
- v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26,
- v27, v28, v29);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30>
-internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
- T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
- T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
- T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) {
- return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
- v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25,
- v26, v27, v28, v29, v30);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31>
-internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
- T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
- T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
- T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) {
- return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
- v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24,
- v25, v26, v27, v28, v29, v30, v31);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32>
-internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
- T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
- T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
- T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
- T32 v32) {
- return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
- v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
- v24, v25, v26, v27, v28, v29, v30, v31, v32);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33>
-internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
- T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
- T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
- T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
- T32 v32, T33 v33) {
- return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8,
- v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
- v24, v25, v26, v27, v28, v29, v30, v31, v32, v33);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34>
-internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
- T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
- T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22,
- T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30,
- T31 v31, T32 v32, T33 v33, T34 v34) {
- return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7,
- v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22,
- v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35>
-internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35> Values(T1 v1, T2 v2, T3 v3, T4 v4,
- T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
- T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
- T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
- T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) {
- return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6,
- v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,
- v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36>
-internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36> Values(T1 v1, T2 v2, T3 v3, T4 v4,
- T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
- T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
- T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
- T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) {
- return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4,
- v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
- v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
- v34, v35, v36);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37>
-internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37> Values(T1 v1, T2 v2, T3 v3,
- T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
- T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
- T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
- T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
- T37 v37) {
- return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3,
- v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
- v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
- v34, v35, v36, v37);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38>
-internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Values(T1 v1, T2 v2,
- T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
- T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
- T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
- T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
- T37 v37, T38 v38) {
- return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2,
- v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,
- v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32,
- v33, v34, v35, v36, v37, v38);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39>
-internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Values(T1 v1, T2 v2,
- T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
- T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
- T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
- T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
- T37 v37, T38 v38, T39 v39) {
- return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1,
- v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,
- v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31,
- v32, v33, v34, v35, v36, v37, v38, v39);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40>
-internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Values(T1 v1,
- T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11,
- T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19,
- T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27,
- T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35,
- T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) {
- return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
- T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,
- v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29,
- v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41>
-internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) {
- return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
- T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14,
- v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28,
- v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42>
-internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
- T42> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
- T42 v42) {
- return internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
- T40, T41, T42>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
- v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27,
- v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41,
- v42);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43>
-internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
- T43> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
- T42 v42, T43 v43) {
- return internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
- T40, T41, T42, T43>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
- v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26,
- v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40,
- v41, v42, v43);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44>
-internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
- T42 v42, T43 v43, T44 v44) {
- return internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
- T40, T41, T42, T43, T44>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
- v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25,
- v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39,
- v40, v41, v42, v43, v44);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45>
-internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44, T45> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
- T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
- T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
- T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32,
- T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40,
- T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) {
- return internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
- T40, T41, T42, T43, T44, T45>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
- v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24,
- v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38,
- v39, v40, v41, v42, v43, v44, v45);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46>
-internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44, T45, T46> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
- T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
- T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
- T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
- T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
- T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) {
- return internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
- T40, T41, T42, T43, T44, T45, T46>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
- v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
- v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37,
- v38, v39, v40, v41, v42, v43, v44, v45, v46);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47>
-internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44, T45, T46, T47> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
- T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
- T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
- T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
- T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
- T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) {
- return internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
- T40, T41, T42, T43, T44, T45, T46, T47>(v1, v2, v3, v4, v5, v6, v7, v8,
- v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
- v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37,
- v38, v39, v40, v41, v42, v43, v44, v45, v46, v47);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47, typename T48>
-internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44, T45, T46, T47, T48> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
- T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
- T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
- T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
- T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
- T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47,
- T48 v48) {
- return internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
- T40, T41, T42, T43, T44, T45, T46, T47, T48>(v1, v2, v3, v4, v5, v6, v7,
- v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22,
- v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36,
- v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47, typename T48, typename T49>
-internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44, T45, T46, T47, T48, T49> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
- T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
- T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22,
- T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30,
- T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38,
- T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46,
- T47 v47, T48 v48, T49 v49) {
- return internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
- T40, T41, T42, T43, T44, T45, T46, T47, T48, T49>(v1, v2, v3, v4, v5, v6,
- v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,
- v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35,
- v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47, typename T48, typename T49, typename T50>
-internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44, T45, T46, T47, T48, T49, T50> Values(T1 v1, T2 v2, T3 v3, T4 v4,
- T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
- T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
- T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
- T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37,
- T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45,
- T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) {
- return internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
- T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>(v1, v2, v3, v4,
- v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
- v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
- v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47,
- v48, v49, v50);
-}
-
-// Bool() allows generating tests with parameters in a set of (false, true).
-//
-// Synopsis:
-// Bool()
-// - returns a generator producing sequences with elements {false, true}.
-//
-// It is useful when testing code that depends on Boolean flags. Combinations
-// of multiple flags can be tested when several Bool()'s are combined using
-// Combine() function.
-//
-// In the following example all tests in the test case FlagDependentTest
-// will be instantiated twice with parameters false and true.
-//
-// class FlagDependentTest : public testing::TestWithParam<bool> {
-// virtual void SetUp() {
-// external_flag = GetParam();
-// }
-// }
-// INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool());
-//
-inline internal::ParamGenerator<bool> Bool() {
- return Values(false, true);
-}
-
-# if GTEST_HAS_COMBINE
-// Combine() allows the user to combine two or more sequences to produce
-// values of a Cartesian product of those sequences' elements.
-//
-// Synopsis:
-// Combine(gen1, gen2, ..., genN)
-// - returns a generator producing sequences with elements coming from
-// the Cartesian product of elements from the sequences generated by
-// gen1, gen2, ..., genN. The sequence elements will have a type of
-// tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types
-// of elements from sequences produces by gen1, gen2, ..., genN.
-//
-// Combine can have up to 10 arguments. This number is currently limited
-// by the maximum number of elements in the tuple implementation used by Google
-// Test.
-//
-// Example:
-//
-// This will instantiate tests in test case AnimalTest each one with
-// the parameter values tuple("cat", BLACK), tuple("cat", WHITE),
-// tuple("dog", BLACK), and tuple("dog", WHITE):
-//
-// enum Color { BLACK, GRAY, WHITE };
-// class AnimalTest
-// : public testing::TestWithParam<tuple<const char*, Color> > {...};
-//
-// TEST_P(AnimalTest, AnimalLooksNice) {...}
-//
-// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest,
-// Combine(Values("cat", "dog"),
-// Values(BLACK, WHITE)));
-//
-// This will instantiate tests in FlagDependentTest with all variations of two
-// Boolean flags:
-//
-// class FlagDependentTest
-// : public testing::TestWithParam<tuple<bool, bool> > {
-// virtual void SetUp() {
-// // Assigns external_flag_1 and external_flag_2 values from the tuple.
-// tie(external_flag_1, external_flag_2) = GetParam();
-// }
-// };
-//
-// TEST_P(FlagDependentTest, TestFeature1) {
-// // Test your code using external_flag_1 and external_flag_2 here.
-// }
-// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest,
-// Combine(Bool(), Bool()));
-//
-template <typename Generator1, typename Generator2>
-internal::CartesianProductHolder2<Generator1, Generator2> Combine(
- const Generator1& g1, const Generator2& g2) {
- return internal::CartesianProductHolder2<Generator1, Generator2>(
- g1, g2);
-}
-
-template <typename Generator1, typename Generator2, typename Generator3>
-internal::CartesianProductHolder3<Generator1, Generator2, Generator3> Combine(
- const Generator1& g1, const Generator2& g2, const Generator3& g3) {
- return internal::CartesianProductHolder3<Generator1, Generator2, Generator3>(
- g1, g2, g3);
-}
-
-template <typename Generator1, typename Generator2, typename Generator3,
- typename Generator4>
-internal::CartesianProductHolder4<Generator1, Generator2, Generator3,
- Generator4> Combine(
- const Generator1& g1, const Generator2& g2, const Generator3& g3,
- const Generator4& g4) {
- return internal::CartesianProductHolder4<Generator1, Generator2, Generator3,
- Generator4>(
- g1, g2, g3, g4);
-}
-
-template <typename Generator1, typename Generator2, typename Generator3,
- typename Generator4, typename Generator5>
-internal::CartesianProductHolder5<Generator1, Generator2, Generator3,
- Generator4, Generator5> Combine(
- const Generator1& g1, const Generator2& g2, const Generator3& g3,
- const Generator4& g4, const Generator5& g5) {
- return internal::CartesianProductHolder5<Generator1, Generator2, Generator3,
- Generator4, Generator5>(
- g1, g2, g3, g4, g5);
-}
-
-template <typename Generator1, typename Generator2, typename Generator3,
- typename Generator4, typename Generator5, typename Generator6>
-internal::CartesianProductHolder6<Generator1, Generator2, Generator3,
- Generator4, Generator5, Generator6> Combine(
- const Generator1& g1, const Generator2& g2, const Generator3& g3,
- const Generator4& g4, const Generator5& g5, const Generator6& g6) {
- return internal::CartesianProductHolder6<Generator1, Generator2, Generator3,
- Generator4, Generator5, Generator6>(
- g1, g2, g3, g4, g5, g6);
-}
-
-template <typename Generator1, typename Generator2, typename Generator3,
- typename Generator4, typename Generator5, typename Generator6,
- typename Generator7>
-internal::CartesianProductHolder7<Generator1, Generator2, Generator3,
- Generator4, Generator5, Generator6, Generator7> Combine(
- const Generator1& g1, const Generator2& g2, const Generator3& g3,
- const Generator4& g4, const Generator5& g5, const Generator6& g6,
- const Generator7& g7) {
- return internal::CartesianProductHolder7<Generator1, Generator2, Generator3,
- Generator4, Generator5, Generator6, Generator7>(
- g1, g2, g3, g4, g5, g6, g7);
-}
-
-template <typename Generator1, typename Generator2, typename Generator3,
- typename Generator4, typename Generator5, typename Generator6,
- typename Generator7, typename Generator8>
-internal::CartesianProductHolder8<Generator1, Generator2, Generator3,
- Generator4, Generator5, Generator6, Generator7, Generator8> Combine(
- const Generator1& g1, const Generator2& g2, const Generator3& g3,
- const Generator4& g4, const Generator5& g5, const Generator6& g6,
- const Generator7& g7, const Generator8& g8) {
- return internal::CartesianProductHolder8<Generator1, Generator2, Generator3,
- Generator4, Generator5, Generator6, Generator7, Generator8>(
- g1, g2, g3, g4, g5, g6, g7, g8);
-}
-
-template <typename Generator1, typename Generator2, typename Generator3,
- typename Generator4, typename Generator5, typename Generator6,
- typename Generator7, typename Generator8, typename Generator9>
-internal::CartesianProductHolder9<Generator1, Generator2, Generator3,
- Generator4, Generator5, Generator6, Generator7, Generator8,
- Generator9> Combine(
- const Generator1& g1, const Generator2& g2, const Generator3& g3,
- const Generator4& g4, const Generator5& g5, const Generator6& g6,
- const Generator7& g7, const Generator8& g8, const Generator9& g9) {
- return internal::CartesianProductHolder9<Generator1, Generator2, Generator3,
- Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>(
- g1, g2, g3, g4, g5, g6, g7, g8, g9);
-}
-
-template <typename Generator1, typename Generator2, typename Generator3,
- typename Generator4, typename Generator5, typename Generator6,
- typename Generator7, typename Generator8, typename Generator9,
- typename Generator10>
-internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
- Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,
- Generator10> Combine(
- const Generator1& g1, const Generator2& g2, const Generator3& g3,
- const Generator4& g4, const Generator5& g5, const Generator6& g6,
- const Generator7& g7, const Generator8& g8, const Generator9& g9,
- const Generator10& g10) {
- return internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
- Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,
- Generator10>(
- g1, g2, g3, g4, g5, g6, g7, g8, g9, g10);
-}
-# endif // GTEST_HAS_COMBINE
-
-
-
-# define TEST_P(test_case_name, test_name) \
- class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
- : public test_case_name { \
- public: \
- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \
- virtual void TestBody(); \
- private: \
- static int AddToRegistry() { \
- ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
- GetTestCasePatternHolder<test_case_name>(\
- #test_case_name, \
- ::testing::internal::CodeLocation(\
- __FILE__, __LINE__))->AddTestPattern(\
- #test_case_name, \
- #test_name, \
- new ::testing::internal::TestMetaFactory< \
- GTEST_TEST_CLASS_NAME_(\
- test_case_name, test_name)>()); \
- return 0; \
- } \
- static int gtest_registering_dummy_ GTEST_ATTRIBUTE_UNUSED_; \
- GTEST_DISALLOW_COPY_AND_ASSIGN_(\
- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \
- }; \
- int GTEST_TEST_CLASS_NAME_(test_case_name, \
- test_name)::gtest_registering_dummy_ = \
- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \
- void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()
-
-// The optional last argument to INSTANTIATE_TEST_CASE_P allows the user
-// to specify a function or functor that generates custom test name suffixes
-// based on the test parameters. The function should accept one argument of
-// type testing::TestParamInfo<class ParamType>, and return std::string.
-//
-// testing::PrintToStringParamName is a builtin test suffix generator that
-// returns the value of testing::PrintToString(GetParam()). It does not work
-// for std::string or C strings.
-//
-// Note: test names must be non-empty, unique, and may only contain ASCII
-// alphanumeric characters or underscore.
-
-# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator, ...) \
- ::testing::internal::ParamGenerator<test_case_name::ParamType> \
- gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \
- ::std::string gtest_##prefix##test_case_name##_EvalGenerateName_( \
- const ::testing::TestParamInfo<test_case_name::ParamType>& info) { \
- return ::testing::internal::GetParamNameGen<test_case_name::ParamType> \
- (__VA_ARGS__)(info); \
- } \
- int gtest_##prefix##test_case_name##_dummy_ GTEST_ATTRIBUTE_UNUSED_ = \
- ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
- GetTestCasePatternHolder<test_case_name>(\
- #test_case_name, \
- ::testing::internal::CodeLocation(\
- __FILE__, __LINE__))->AddTestCaseInstantiation(\
- #prefix, \
- &gtest_##prefix##test_case_name##_EvalGenerator_, \
- &gtest_##prefix##test_case_name##_EvalGenerateName_, \
- __FILE__, __LINE__)
-
-} // namespace testing
-
-#endif // GTEST_HAS_PARAM_TEST
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
diff --git a/test/gtest/include/gtest/gtest-param-test.h.pump b/test/gtest/include/gtest/gtest-param-test.h.pump
deleted file mode 100644
index 3078d6d..0000000
--- a/test/gtest/include/gtest/gtest-param-test.h.pump
+++ /dev/null
@@ -1,510 +0,0 @@
-$$ -*- mode: c++; -*-
-$var n = 50 $$ Maximum length of Values arguments we want to support.
-$var maxtuple = 10 $$ Maximum number of Combine arguments we want to support.
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: vladl@google.com (Vlad Losev)
-//
-// Macros and functions for implementing parameterized tests
-// in Google C++ Testing Framework (Google Test)
-//
-// This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
-//
-#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
-#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
-
-
-// Value-parameterized tests allow you to test your code with different
-// parameters without writing multiple copies of the same test.
-//
-// Here is how you use value-parameterized tests:
-
-#if 0
-
-// To write value-parameterized tests, first you should define a fixture
-// class. It is usually derived from testing::TestWithParam<T> (see below for
-// another inheritance scheme that's sometimes useful in more complicated
-// class hierarchies), where the type of your parameter values.
-// TestWithParam<T> is itself derived from testing::Test. T can be any
-// copyable type. If it's a raw pointer, you are responsible for managing the
-// lifespan of the pointed values.
-
-class FooTest : public ::testing::TestWithParam<const char*> {
- // You can implement all the usual class fixture members here.
-};
-
-// Then, use the TEST_P macro to define as many parameterized tests
-// for this fixture as you want. The _P suffix is for "parameterized"
-// or "pattern", whichever you prefer to think.
-
-TEST_P(FooTest, DoesBlah) {
- // Inside a test, access the test parameter with the GetParam() method
- // of the TestWithParam<T> class:
- EXPECT_TRUE(foo.Blah(GetParam()));
- ...
-}
-
-TEST_P(FooTest, HasBlahBlah) {
- ...
-}
-
-// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test
-// case with any set of parameters you want. Google Test defines a number
-// of functions for generating test parameters. They return what we call
-// (surprise!) parameter generators. Here is a summary of them, which
-// are all in the testing namespace:
-//
-//
-// Range(begin, end [, step]) - Yields values {begin, begin+step,
-// begin+step+step, ...}. The values do not
-// include end. step defaults to 1.
-// Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}.
-// ValuesIn(container) - Yields values from a C-style array, an STL
-// ValuesIn(begin,end) container, or an iterator range [begin, end).
-// Bool() - Yields sequence {false, true}.
-// Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product
-// for the math savvy) of the values generated
-// by the N generators.
-//
-// For more details, see comments at the definitions of these functions below
-// in this file.
-//
-// The following statement will instantiate tests from the FooTest test case
-// each with parameter values "meeny", "miny", and "moe".
-
-INSTANTIATE_TEST_CASE_P(InstantiationName,
- FooTest,
- Values("meeny", "miny", "moe"));
-
-// To distinguish different instances of the pattern, (yes, you
-// can instantiate it more then once) the first argument to the
-// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the
-// actual test case name. Remember to pick unique prefixes for different
-// instantiations. The tests from the instantiation above will have
-// these names:
-//
-// * InstantiationName/FooTest.DoesBlah/0 for "meeny"
-// * InstantiationName/FooTest.DoesBlah/1 for "miny"
-// * InstantiationName/FooTest.DoesBlah/2 for "moe"
-// * InstantiationName/FooTest.HasBlahBlah/0 for "meeny"
-// * InstantiationName/FooTest.HasBlahBlah/1 for "miny"
-// * InstantiationName/FooTest.HasBlahBlah/2 for "moe"
-//
-// You can use these names in --gtest_filter.
-//
-// This statement will instantiate all tests from FooTest again, each
-// with parameter values "cat" and "dog":
-
-const char* pets[] = {"cat", "dog"};
-INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets));
-
-// The tests from the instantiation above will have these names:
-//
-// * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat"
-// * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog"
-// * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat"
-// * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog"
-//
-// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests
-// in the given test case, whether their definitions come before or
-// AFTER the INSTANTIATE_TEST_CASE_P statement.
-//
-// Please also note that generator expressions (including parameters to the
-// generators) are evaluated in InitGoogleTest(), after main() has started.
-// This allows the user on one hand, to adjust generator parameters in order
-// to dynamically determine a set of tests to run and on the other hand,
-// give the user a chance to inspect the generated tests with Google Test
-// reflection API before RUN_ALL_TESTS() is executed.
-//
-// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc
-// for more examples.
-//
-// In the future, we plan to publish the API for defining new parameter
-// generators. But for now this interface remains part of the internal
-// implementation and is subject to change.
-//
-//
-// A parameterized test fixture must be derived from testing::Test and from
-// testing::WithParamInterface<T>, where T is the type of the parameter
-// values. Inheriting from TestWithParam<T> satisfies that requirement because
-// TestWithParam<T> inherits from both Test and WithParamInterface. In more
-// complicated hierarchies, however, it is occasionally useful to inherit
-// separately from Test and WithParamInterface. For example:
-
-class BaseTest : public ::testing::Test {
- // You can inherit all the usual members for a non-parameterized test
- // fixture here.
-};
-
-class DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> {
- // The usual test fixture members go here too.
-};
-
-TEST_F(BaseTest, HasFoo) {
- // This is an ordinary non-parameterized test.
-}
-
-TEST_P(DerivedTest, DoesBlah) {
- // GetParam works just the same here as if you inherit from TestWithParam.
- EXPECT_TRUE(foo.Blah(GetParam()));
-}
-
-#endif // 0
-
-#include "gtest/internal/gtest-port.h"
-
-#if !GTEST_OS_SYMBIAN
-# include <utility>
-#endif
-
-// scripts/fuse_gtest.py depends on gtest's own header being #included
-// *unconditionally*. Therefore these #includes cannot be moved
-// inside #if GTEST_HAS_PARAM_TEST.
-#include "gtest/internal/gtest-internal.h"
-#include "gtest/internal/gtest-param-util.h"
-#include "gtest/internal/gtest-param-util-generated.h"
-
-#if GTEST_HAS_PARAM_TEST
-
-namespace testing {
-
-// Functions producing parameter generators.
-//
-// Google Test uses these generators to produce parameters for value-
-// parameterized tests. When a parameterized test case is instantiated
-// with a particular generator, Google Test creates and runs tests
-// for each element in the sequence produced by the generator.
-//
-// In the following sample, tests from test case FooTest are instantiated
-// each three times with parameter values 3, 5, and 8:
-//
-// class FooTest : public TestWithParam<int> { ... };
-//
-// TEST_P(FooTest, TestThis) {
-// }
-// TEST_P(FooTest, TestThat) {
-// }
-// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8));
-//
-
-// Range() returns generators providing sequences of values in a range.
-//
-// Synopsis:
-// Range(start, end)
-// - returns a generator producing a sequence of values {start, start+1,
-// start+2, ..., }.
-// Range(start, end, step)
-// - returns a generator producing a sequence of values {start, start+step,
-// start+step+step, ..., }.
-// Notes:
-// * The generated sequences never include end. For example, Range(1, 5)
-// returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2)
-// returns a generator producing {1, 3, 5, 7}.
-// * start and end must have the same type. That type may be any integral or
-// floating-point type or a user defined type satisfying these conditions:
-// * It must be assignable (have operator=() defined).
-// * It must have operator+() (operator+(int-compatible type) for
-// two-operand version).
-// * It must have operator<() defined.
-// Elements in the resulting sequences will also have that type.
-// * Condition start < end must be satisfied in order for resulting sequences
-// to contain any elements.
-//
-template <typename T, typename IncrementT>
-internal::ParamGenerator<T> Range(T start, T end, IncrementT step) {
- return internal::ParamGenerator<T>(
- new internal::RangeGenerator<T, IncrementT>(start, end, step));
-}
-
-template <typename T>
-internal::ParamGenerator<T> Range(T start, T end) {
- return Range(start, end, 1);
-}
-
-// ValuesIn() function allows generation of tests with parameters coming from
-// a container.
-//
-// Synopsis:
-// ValuesIn(const T (&array)[N])
-// - returns a generator producing sequences with elements from
-// a C-style array.
-// ValuesIn(const Container& container)
-// - returns a generator producing sequences with elements from
-// an STL-style container.
-// ValuesIn(Iterator begin, Iterator end)
-// - returns a generator producing sequences with elements from
-// a range [begin, end) defined by a pair of STL-style iterators. These
-// iterators can also be plain C pointers.
-//
-// Please note that ValuesIn copies the values from the containers
-// passed in and keeps them to generate tests in RUN_ALL_TESTS().
-//
-// Examples:
-//
-// This instantiates tests from test case StringTest
-// each with C-string values of "foo", "bar", and "baz":
-//
-// const char* strings[] = {"foo", "bar", "baz"};
-// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings));
-//
-// This instantiates tests from test case StlStringTest
-// each with STL strings with values "a" and "b":
-//
-// ::std::vector< ::std::string> GetParameterStrings() {
-// ::std::vector< ::std::string> v;
-// v.push_back("a");
-// v.push_back("b");
-// return v;
-// }
-//
-// INSTANTIATE_TEST_CASE_P(CharSequence,
-// StlStringTest,
-// ValuesIn(GetParameterStrings()));
-//
-//
-// This will also instantiate tests from CharTest
-// each with parameter values 'a' and 'b':
-//
-// ::std::list<char> GetParameterChars() {
-// ::std::list<char> list;
-// list.push_back('a');
-// list.push_back('b');
-// return list;
-// }
-// ::std::list<char> l = GetParameterChars();
-// INSTANTIATE_TEST_CASE_P(CharSequence2,
-// CharTest,
-// ValuesIn(l.begin(), l.end()));
-//
-template <typename ForwardIterator>
-internal::ParamGenerator<
- typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
-ValuesIn(ForwardIterator begin, ForwardIterator end) {
- typedef typename ::testing::internal::IteratorTraits<ForwardIterator>
- ::value_type ParamType;
- return internal::ParamGenerator<ParamType>(
- new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end));
-}
-
-template <typename T, size_t N>
-internal::ParamGenerator<T> ValuesIn(const T (&array)[N]) {
- return ValuesIn(array, array + N);
-}
-
-template <class Container>
-internal::ParamGenerator<typename Container::value_type> ValuesIn(
- const Container& container) {
- return ValuesIn(container.begin(), container.end());
-}
-
-// Values() allows generating tests from explicitly specified list of
-// parameters.
-//
-// Synopsis:
-// Values(T v1, T v2, ..., T vN)
-// - returns a generator producing sequences with elements v1, v2, ..., vN.
-//
-// For example, this instantiates tests from test case BarTest each
-// with values "one", "two", and "three":
-//
-// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three"));
-//
-// This instantiates tests from test case BazTest each with values 1, 2, 3.5.
-// The exact type of values will depend on the type of parameter in BazTest.
-//
-// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5));
-//
-// Currently, Values() supports from 1 to $n parameters.
-//
-$range i 1..n
-$for i [[
-$range j 1..i
-
-template <$for j, [[typename T$j]]>
-internal::ValueArray$i<$for j, [[T$j]]> Values($for j, [[T$j v$j]]) {
- return internal::ValueArray$i<$for j, [[T$j]]>($for j, [[v$j]]);
-}
-
-]]
-
-// Bool() allows generating tests with parameters in a set of (false, true).
-//
-// Synopsis:
-// Bool()
-// - returns a generator producing sequences with elements {false, true}.
-//
-// It is useful when testing code that depends on Boolean flags. Combinations
-// of multiple flags can be tested when several Bool()'s are combined using
-// Combine() function.
-//
-// In the following example all tests in the test case FlagDependentTest
-// will be instantiated twice with parameters false and true.
-//
-// class FlagDependentTest : public testing::TestWithParam<bool> {
-// virtual void SetUp() {
-// external_flag = GetParam();
-// }
-// }
-// INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool());
-//
-inline internal::ParamGenerator<bool> Bool() {
- return Values(false, true);
-}
-
-# if GTEST_HAS_COMBINE
-// Combine() allows the user to combine two or more sequences to produce
-// values of a Cartesian product of those sequences' elements.
-//
-// Synopsis:
-// Combine(gen1, gen2, ..., genN)
-// - returns a generator producing sequences with elements coming from
-// the Cartesian product of elements from the sequences generated by
-// gen1, gen2, ..., genN. The sequence elements will have a type of
-// tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types
-// of elements from sequences produces by gen1, gen2, ..., genN.
-//
-// Combine can have up to $maxtuple arguments. This number is currently limited
-// by the maximum number of elements in the tuple implementation used by Google
-// Test.
-//
-// Example:
-//
-// This will instantiate tests in test case AnimalTest each one with
-// the parameter values tuple("cat", BLACK), tuple("cat", WHITE),
-// tuple("dog", BLACK), and tuple("dog", WHITE):
-//
-// enum Color { BLACK, GRAY, WHITE };
-// class AnimalTest
-// : public testing::TestWithParam<tuple<const char*, Color> > {...};
-//
-// TEST_P(AnimalTest, AnimalLooksNice) {...}
-//
-// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest,
-// Combine(Values("cat", "dog"),
-// Values(BLACK, WHITE)));
-//
-// This will instantiate tests in FlagDependentTest with all variations of two
-// Boolean flags:
-//
-// class FlagDependentTest
-// : public testing::TestWithParam<tuple<bool, bool> > {
-// virtual void SetUp() {
-// // Assigns external_flag_1 and external_flag_2 values from the tuple.
-// tie(external_flag_1, external_flag_2) = GetParam();
-// }
-// };
-//
-// TEST_P(FlagDependentTest, TestFeature1) {
-// // Test your code using external_flag_1 and external_flag_2 here.
-// }
-// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest,
-// Combine(Bool(), Bool()));
-//
-$range i 2..maxtuple
-$for i [[
-$range j 1..i
-
-template <$for j, [[typename Generator$j]]>
-internal::CartesianProductHolder$i<$for j, [[Generator$j]]> Combine(
- $for j, [[const Generator$j& g$j]]) {
- return internal::CartesianProductHolder$i<$for j, [[Generator$j]]>(
- $for j, [[g$j]]);
-}
-
-]]
-# endif // GTEST_HAS_COMBINE
-
-
-
-# define TEST_P(test_case_name, test_name) \
- class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
- : public test_case_name { \
- public: \
- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \
- virtual void TestBody(); \
- private: \
- static int AddToRegistry() { \
- ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
- GetTestCasePatternHolder<test_case_name>(\
- #test_case_name, \
- ::testing::internal::CodeLocation(\
- __FILE__, __LINE__))->AddTestPattern(\
- #test_case_name, \
- #test_name, \
- new ::testing::internal::TestMetaFactory< \
- GTEST_TEST_CLASS_NAME_(\
- test_case_name, test_name)>()); \
- return 0; \
- } \
- static int gtest_registering_dummy_ GTEST_ATTRIBUTE_UNUSED_; \
- GTEST_DISALLOW_COPY_AND_ASSIGN_(\
- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \
- }; \
- int GTEST_TEST_CLASS_NAME_(test_case_name, \
- test_name)::gtest_registering_dummy_ = \
- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \
- void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()
-
-// The optional last argument to INSTANTIATE_TEST_CASE_P allows the user
-// to specify a function or functor that generates custom test name suffixes
-// based on the test parameters. The function should accept one argument of
-// type testing::TestParamInfo<class ParamType>, and return std::string.
-//
-// testing::PrintToStringParamName is a builtin test suffix generator that
-// returns the value of testing::PrintToString(GetParam()).
-//
-// Note: test names must be non-empty, unique, and may only contain ASCII
-// alphanumeric characters or underscore. Because PrintToString adds quotes
-// to std::string and C strings, it won't work for these types.
-
-# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator, ...) \
- ::testing::internal::ParamGenerator<test_case_name::ParamType> \
- gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \
- ::std::string gtest_##prefix##test_case_name##_EvalGenerateName_( \
- const ::testing::TestParamInfo<test_case_name::ParamType>& info) { \
- return ::testing::internal::GetParamNameGen<test_case_name::ParamType> \
- (__VA_ARGS__)(info); \
- } \
- int gtest_##prefix##test_case_name##_dummy_ GTEST_ATTRIBUTE_UNUSED_ = \
- ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
- GetTestCasePatternHolder<test_case_name>(\
- #test_case_name, \
- ::testing::internal::CodeLocation(\
- __FILE__, __LINE__))->AddTestCaseInstantiation(\
- #prefix, \
- &gtest_##prefix##test_case_name##_EvalGenerator_, \
- &gtest_##prefix##test_case_name##_EvalGenerateName_, \
- __FILE__, __LINE__)
-
-} // namespace testing
-
-#endif // GTEST_HAS_PARAM_TEST
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
diff --git a/test/gtest/include/gtest/gtest-printers.h b/test/gtest/include/gtest/gtest-printers.h
deleted file mode 100644
index 8a33164..0000000
--- a/test/gtest/include/gtest/gtest-printers.h
+++ /dev/null
@@ -1,993 +0,0 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wan@google.com (Zhanyong Wan)
-
-// Google Test - The Google C++ Testing Framework
-//
-// This file implements a universal value printer that can print a
-// value of any type T:
-//
-// void ::testing::internal::UniversalPrinter<T>::Print(value, ostream_ptr);
-//
-// A user can teach this function how to print a class type T by
-// defining either operator<<() or PrintTo() in the namespace that
-// defines T. More specifically, the FIRST defined function in the
-// following list will be used (assuming T is defined in namespace
-// foo):
-//
-// 1. foo::PrintTo(const T&, ostream*)
-// 2. operator<<(ostream&, const T&) defined in either foo or the
-// global namespace.
-//
-// If none of the above is defined, it will print the debug string of
-// the value if it is a protocol buffer, or print the raw bytes in the
-// value otherwise.
-//
-// To aid debugging: when T is a reference type, the address of the
-// value is also printed; when T is a (const) char pointer, both the
-// pointer value and the NUL-terminated string it points to are
-// printed.
-//
-// We also provide some convenient wrappers:
-//
-// // Prints a value to a string. For a (const or not) char
-// // pointer, the NUL-terminated string (but not the pointer) is
-// // printed.
-// std::string ::testing::PrintToString(const T& value);
-//
-// // Prints a value tersely: for a reference type, the referenced
-// // value (but not the address) is printed; for a (const or not) char
-// // pointer, the NUL-terminated string (but not the pointer) is
-// // printed.
-// void ::testing::internal::UniversalTersePrint(const T& value, ostream*);
-//
-// // Prints value using the type inferred by the compiler. The difference
-// // from UniversalTersePrint() is that this function prints both the
-// // pointer and the NUL-terminated string for a (const or not) char pointer.
-// void ::testing::internal::UniversalPrint(const T& value, ostream*);
-//
-// // Prints the fields of a tuple tersely to a string vector, one
-// // element for each field. Tuple support must be enabled in
-// // gtest-port.h.
-// std::vector<string> UniversalTersePrintTupleFieldsToStrings(
-// const Tuple& value);
-//
-// Known limitation:
-//
-// The print primitives print the elements of an STL-style container
-// using the compiler-inferred type of *iter where iter is a
-// const_iterator of the container. When const_iterator is an input
-// iterator but not a forward iterator, this inferred type may not
-// match value_type, and the print output may be incorrect. In
-// practice, this is rarely a problem as for most containers
-// const_iterator is a forward iterator. We'll fix this if there's an
-// actual need for it. Note that this fix cannot rely on value_type
-// being defined as many user-defined container types don't have
-// value_type.
-
-#ifndef GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
-#define GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
-
-#include <ostream> // NOLINT
-#include <sstream>
-#include <string>
-#include <utility>
-#include <vector>
-#include "gtest/internal/gtest-port.h"
-#include "gtest/internal/gtest-internal.h"
-
-#if GTEST_HAS_STD_TUPLE_
-# include <tuple>
-#endif
-
-namespace testing {
-
-// Definitions in the 'internal' and 'internal2' name spaces are
-// subject to change without notice. DO NOT USE THEM IN USER CODE!
-namespace internal2 {
-
-// Prints the given number of bytes in the given object to the given
-// ostream.
-GTEST_API_ void PrintBytesInObjectTo(const unsigned char* obj_bytes,
- size_t count,
- ::std::ostream* os);
-
-// For selecting which printer to use when a given type has neither <<
-// nor PrintTo().
-enum TypeKind {
- kProtobuf, // a protobuf type
- kConvertibleToInteger, // a type implicitly convertible to BiggestInt
- // (e.g. a named or unnamed enum type)
- kOtherType // anything else
-};
-
-// TypeWithoutFormatter<T, kTypeKind>::PrintValue(value, os) is called
-// by the universal printer to print a value of type T when neither
-// operator<< nor PrintTo() is defined for T, where kTypeKind is the
-// "kind" of T as defined by enum TypeKind.
-template <typename T, TypeKind kTypeKind>
-class TypeWithoutFormatter {
- public:
- // This default version is called when kTypeKind is kOtherType.
- static void PrintValue(const T& value, ::std::ostream* os) {
- PrintBytesInObjectTo(reinterpret_cast<const unsigned char*>(&value),
- sizeof(value), os);
- }
-};
-
-// We print a protobuf using its ShortDebugString() when the string
-// doesn't exceed this many characters; otherwise we print it using
-// DebugString() for better readability.
-const size_t kProtobufOneLinerMaxLength = 50;
-
-template <typename T>
-class TypeWithoutFormatter<T, kProtobuf> {
- public:
- static void PrintValue(const T& value, ::std::ostream* os) {
- const ::testing::internal::string short_str = value.ShortDebugString();
- const ::testing::internal::string pretty_str =
- short_str.length() <= kProtobufOneLinerMaxLength ?
- short_str : ("\n" + value.DebugString());
- *os << ("<" + pretty_str + ">");
- }
-};
-
-template <typename T>
-class TypeWithoutFormatter<T, kConvertibleToInteger> {
- public:
- // Since T has no << operator or PrintTo() but can be implicitly
- // converted to BiggestInt, we print it as a BiggestInt.
- //
- // Most likely T is an enum type (either named or unnamed), in which
- // case printing it as an integer is the desired behavior. In case
- // T is not an enum, printing it as an integer is the best we can do
- // given that it has no user-defined printer.
- static void PrintValue(const T& value, ::std::ostream* os) {
- const internal::BiggestInt kBigInt = value;
- *os << kBigInt;
- }
-};
-
-// Prints the given value to the given ostream. If the value is a
-// protocol message, its debug string is printed; if it's an enum or
-// of a type implicitly convertible to BiggestInt, it's printed as an
-// integer; otherwise the bytes in the value are printed. This is
-// what UniversalPrinter<T>::Print() does when it knows nothing about
-// type T and T has neither << operator nor PrintTo().
-//
-// A user can override this behavior for a class type Foo by defining
-// a << operator in the namespace where Foo is defined.
-//
-// We put this operator in namespace 'internal2' instead of 'internal'
-// to simplify the implementation, as much code in 'internal' needs to
-// use << in STL, which would conflict with our own << were it defined
-// in 'internal'.
-//
-// Note that this operator<< takes a generic std::basic_ostream<Char,
-// CharTraits> type instead of the more restricted std::ostream. If
-// we define it to take an std::ostream instead, we'll get an
-// "ambiguous overloads" compiler error when trying to print a type
-// Foo that supports streaming to std::basic_ostream<Char,
-// CharTraits>, as the compiler cannot tell whether
-// operator<<(std::ostream&, const T&) or
-// operator<<(std::basic_stream<Char, CharTraits>, const Foo&) is more
-// specific.
-template <typename Char, typename CharTraits, typename T>
-::std::basic_ostream<Char, CharTraits>& operator<<(
- ::std::basic_ostream<Char, CharTraits>& os, const T& x) {
- TypeWithoutFormatter<T,
- (internal::IsAProtocolMessage<T>::value ? kProtobuf :
- internal::ImplicitlyConvertible<const T&, internal::BiggestInt>::value ?
- kConvertibleToInteger : kOtherType)>::PrintValue(x, &os);
- return os;
-}
-
-} // namespace internal2
-} // namespace testing
-
-// This namespace MUST NOT BE NESTED IN ::testing, or the name look-up
-// magic needed for implementing UniversalPrinter won't work.
-namespace testing_internal {
-
-// Used to print a value that is not an STL-style container when the
-// user doesn't define PrintTo() for it.
-template <typename T>
-void DefaultPrintNonContainerTo(const T& value, ::std::ostream* os) {
- // With the following statement, during unqualified name lookup,
- // testing::internal2::operator<< appears as if it was declared in
- // the nearest enclosing namespace that contains both
- // ::testing_internal and ::testing::internal2, i.e. the global
- // namespace. For more details, refer to the C++ Standard section
- // 7.3.4-1 [namespace.udir]. This allows us to fall back onto
- // testing::internal2::operator<< in case T doesn't come with a <<
- // operator.
- //
- // We cannot write 'using ::testing::internal2::operator<<;', which
- // gcc 3.3 fails to compile due to a compiler bug.
- using namespace ::testing::internal2; // NOLINT
-
- // Assuming T is defined in namespace foo, in the next statement,
- // the compiler will consider all of:
- //
- // 1. foo::operator<< (thanks to Koenig look-up),
- // 2. ::operator<< (as the current namespace is enclosed in ::),
- // 3. testing::internal2::operator<< (thanks to the using statement above).
- //
- // The operator<< whose type matches T best will be picked.
- //
- // We deliberately allow #2 to be a candidate, as sometimes it's
- // impossible to define #1 (e.g. when foo is ::std, defining
- // anything in it is undefined behavior unless you are a compiler
- // vendor.).
- *os << value;
-}
-
-} // namespace testing_internal
-
-namespace testing {
-namespace internal {
-
-// FormatForComparison<ToPrint, OtherOperand>::Format(value) formats a
-// value of type ToPrint that is an operand of a comparison assertion
-// (e.g. ASSERT_EQ). OtherOperand is the type of the other operand in
-// the comparison, and is used to help determine the best way to
-// format the value. In particular, when the value is a C string
-// (char pointer) and the other operand is an STL string object, we
-// want to format the C string as a string, since we know it is
-// compared by value with the string object. If the value is a char
-// pointer but the other operand is not an STL string object, we don't
-// know whether the pointer is supposed to point to a NUL-terminated
-// string, and thus want to print it as a pointer to be safe.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-
-// The default case.
-template <typename ToPrint, typename OtherOperand>
-class FormatForComparison {
- public:
- static ::std::string Format(const ToPrint& value) {
- return ::testing::PrintToString(value);
- }
-};
-
-// Array.
-template <typename ToPrint, size_t N, typename OtherOperand>
-class FormatForComparison<ToPrint[N], OtherOperand> {
- public:
- static ::std::string Format(const ToPrint* value) {
- return FormatForComparison<const ToPrint*, OtherOperand>::Format(value);
- }
-};
-
-// By default, print C string as pointers to be safe, as we don't know
-// whether they actually point to a NUL-terminated string.
-
-#define GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(CharType) \
- template <typename OtherOperand> \
- class FormatForComparison<CharType*, OtherOperand> { \
- public: \
- static ::std::string Format(CharType* value) { \
- return ::testing::PrintToString(static_cast<const void*>(value)); \
- } \
- }
-
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char);
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char);
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(wchar_t);
-GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const wchar_t);
-
-#undef GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_
-
-// If a C string is compared with an STL string object, we know it's meant
-// to point to a NUL-terminated string, and thus can print it as a string.
-
-#define GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(CharType, OtherStringType) \
- template <> \
- class FormatForComparison<CharType*, OtherStringType> { \
- public: \
- static ::std::string Format(CharType* value) { \
- return ::testing::PrintToString(value); \
- } \
- }
-
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::std::string);
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::std::string);
-
-#if GTEST_HAS_GLOBAL_STRING
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::string);
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::string);
-#endif
-
-#if GTEST_HAS_GLOBAL_WSTRING
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(wchar_t, ::wstring);
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::wstring);
-#endif
-
-#if GTEST_HAS_STD_WSTRING
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(wchar_t, ::std::wstring);
-GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::std::wstring);
-#endif
-
-#undef GTEST_IMPL_FORMAT_C_STRING_AS_STRING_
-
-// Formats a comparison assertion (e.g. ASSERT_EQ, EXPECT_LT, and etc)
-// operand to be used in a failure message. The type (but not value)
-// of the other operand may affect the format. This allows us to
-// print a char* as a raw pointer when it is compared against another
-// char* or void*, and print it as a C string when it is compared
-// against an std::string object, for example.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-template <typename T1, typename T2>
-std::string FormatForComparisonFailureMessage(
- const T1& value, const T2& /* other_operand */) {
- return FormatForComparison<T1, T2>::Format(value);
-}
-
-// UniversalPrinter<T>::Print(value, ostream_ptr) prints the given
-// value to the given ostream. The caller must ensure that
-// 'ostream_ptr' is not NULL, or the behavior is undefined.
-//
-// We define UniversalPrinter as a class template (as opposed to a
-// function template), as we need to partially specialize it for
-// reference types, which cannot be done with function templates.
-template <typename T>
-class UniversalPrinter;
-
-template <typename T>
-void UniversalPrint(const T& value, ::std::ostream* os);
-
-// Used to print an STL-style container when the user doesn't define
-// a PrintTo() for it.
-template <typename C>
-void DefaultPrintTo(IsContainer /* dummy */,
- false_type /* is not a pointer */,
- const C& container, ::std::ostream* os) {
- const size_t kMaxCount = 32; // The maximum number of elements to print.
- *os << '{';
- size_t count = 0;
- for (typename C::const_iterator it = container.begin();
- it != container.end(); ++it, ++count) {
- if (count > 0) {
- *os << ',';
- if (count == kMaxCount) { // Enough has been printed.
- *os << " ...";
- break;
- }
- }
- *os << ' ';
- // We cannot call PrintTo(*it, os) here as PrintTo() doesn't
- // handle *it being a native array.
- internal::UniversalPrint(*it, os);
- }
-
- if (count > 0) {
- *os << ' ';
- }
- *os << '}';
-}
-
-// Used to print a pointer that is neither a char pointer nor a member
-// pointer, when the user doesn't define PrintTo() for it. (A member
-// variable pointer or member function pointer doesn't really point to
-// a location in the address space. Their representation is
-// implementation-defined. Therefore they will be printed as raw
-// bytes.)
-template <typename T>
-void DefaultPrintTo(IsNotContainer /* dummy */,
- true_type /* is a pointer */,
- T* p, ::std::ostream* os) {
- if (p == NULL) {
- *os << "NULL";
- } else {
- // C++ doesn't allow casting from a function pointer to any object
- // pointer.
- //
- // IsTrue() silences warnings: "Condition is always true",
- // "unreachable code".
- if (IsTrue(ImplicitlyConvertible<T*, const void*>::value)) {
- // T is not a function type. We just call << to print p,
- // relying on ADL to pick up user-defined << for their pointer
- // types, if any.
- *os << p;
- } else {
- // T is a function type, so '*os << p' doesn't do what we want
- // (it just prints p as bool). We want to print p as a const
- // void*. However, we cannot cast it to const void* directly,
- // even using reinterpret_cast, as earlier versions of gcc
- // (e.g. 3.4.5) cannot compile the cast when p is a function
- // pointer. Casting to UInt64 first solves the problem.
- *os << reinterpret_cast<const void*>(
- reinterpret_cast<internal::UInt64>(p));
- }
- }
-}
-
-// Used to print a non-container, non-pointer value when the user
-// doesn't define PrintTo() for it.
-template <typename T>
-void DefaultPrintTo(IsNotContainer /* dummy */,
- false_type /* is not a pointer */,
- const T& value, ::std::ostream* os) {
- ::testing_internal::DefaultPrintNonContainerTo(value, os);
-}
-
-// Prints the given value using the << operator if it has one;
-// otherwise prints the bytes in it. This is what
-// UniversalPrinter<T>::Print() does when PrintTo() is not specialized
-// or overloaded for type T.
-//
-// A user can override this behavior for a class type Foo by defining
-// an overload of PrintTo() in the namespace where Foo is defined. We
-// give the user this option as sometimes defining a << operator for
-// Foo is not desirable (e.g. the coding style may prevent doing it,
-// or there is already a << operator but it doesn't do what the user
-// wants).
-template <typename T>
-void PrintTo(const T& value, ::std::ostream* os) {
- // DefaultPrintTo() is overloaded. The type of its first two
- // arguments determine which version will be picked. If T is an
- // STL-style container, the version for container will be called; if
- // T is a pointer, the pointer version will be called; otherwise the
- // generic version will be called.
- //
- // Note that we check for container types here, prior to we check
- // for protocol message types in our operator<<. The rationale is:
- //
- // For protocol messages, we want to give people a chance to
- // override Google Mock's format by defining a PrintTo() or
- // operator<<. For STL containers, other formats can be
- // incompatible with Google Mock's format for the container
- // elements; therefore we check for container types here to ensure
- // that our format is used.
- //
- // The second argument of DefaultPrintTo() is needed to bypass a bug
- // in Symbian's C++ compiler that prevents it from picking the right
- // overload between:
- //
- // PrintTo(const T& x, ...);
- // PrintTo(T* x, ...);
- DefaultPrintTo(IsContainerTest<T>(0), is_pointer<T>(), value, os);
-}
-
-// The following list of PrintTo() overloads tells
-// UniversalPrinter<T>::Print() how to print standard types (built-in
-// types, strings, plain arrays, and pointers).
-
-// Overloads for various char types.
-GTEST_API_ void PrintTo(unsigned char c, ::std::ostream* os);
-GTEST_API_ void PrintTo(signed char c, ::std::ostream* os);
-inline void PrintTo(char c, ::std::ostream* os) {
- // When printing a plain char, we always treat it as unsigned. This
- // way, the output won't be affected by whether the compiler thinks
- // char is signed or not.
- PrintTo(static_cast<unsigned char>(c), os);
-}
-
-// Overloads for other simple built-in types.
-inline void PrintTo(bool x, ::std::ostream* os) {
- *os << (x ? "true" : "false");
-}
-
-// Overload for wchar_t type.
-// Prints a wchar_t as a symbol if it is printable or as its internal
-// code otherwise and also as its decimal code (except for L'\0').
-// The L'\0' char is printed as "L'\\0'". The decimal code is printed
-// as signed integer when wchar_t is implemented by the compiler
-// as a signed type and is printed as an unsigned integer when wchar_t
-// is implemented as an unsigned type.
-GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os);
-
-// Overloads for C strings.
-GTEST_API_ void PrintTo(const char* s, ::std::ostream* os);
-inline void PrintTo(char* s, ::std::ostream* os) {
- PrintTo(ImplicitCast_<const char*>(s), os);
-}
-
-// signed/unsigned char is often used for representing binary data, so
-// we print pointers to it as void* to be safe.
-inline void PrintTo(const signed char* s, ::std::ostream* os) {
- PrintTo(ImplicitCast_<const void*>(s), os);
-}
-inline void PrintTo(signed char* s, ::std::ostream* os) {
- PrintTo(ImplicitCast_<const void*>(s), os);
-}
-inline void PrintTo(const unsigned char* s, ::std::ostream* os) {
- PrintTo(ImplicitCast_<const void*>(s), os);
-}
-inline void PrintTo(unsigned char* s, ::std::ostream* os) {
- PrintTo(ImplicitCast_<const void*>(s), os);
-}
-
-// MSVC can be configured to define wchar_t as a typedef of unsigned
-// short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native
-// type. When wchar_t is a typedef, defining an overload for const
-// wchar_t* would cause unsigned short* be printed as a wide string,
-// possibly causing invalid memory accesses.
-#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
-// Overloads for wide C strings
-GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
-inline void PrintTo(wchar_t* s, ::std::ostream* os) {
- PrintTo(ImplicitCast_<const wchar_t*>(s), os);
-}
-#endif
-
-// Overload for C arrays. Multi-dimensional arrays are printed
-// properly.
-
-// Prints the given number of elements in an array, without printing
-// the curly braces.
-template <typename T>
-void PrintRawArrayTo(const T a[], size_t count, ::std::ostream* os) {
- UniversalPrint(a[0], os);
- for (size_t i = 1; i != count; i++) {
- *os << ", ";
- UniversalPrint(a[i], os);
- }
-}
-
-// Overloads for ::string and ::std::string.
-#if GTEST_HAS_GLOBAL_STRING
-GTEST_API_ void PrintStringTo(const ::string&s, ::std::ostream* os);
-inline void PrintTo(const ::string& s, ::std::ostream* os) {
- PrintStringTo(s, os);
-}
-#endif // GTEST_HAS_GLOBAL_STRING
-
-GTEST_API_ void PrintStringTo(const ::std::string&s, ::std::ostream* os);
-inline void PrintTo(const ::std::string& s, ::std::ostream* os) {
- PrintStringTo(s, os);
-}
-
-// Overloads for ::wstring and ::std::wstring.
-#if GTEST_HAS_GLOBAL_WSTRING
-GTEST_API_ void PrintWideStringTo(const ::wstring&s, ::std::ostream* os);
-inline void PrintTo(const ::wstring& s, ::std::ostream* os) {
- PrintWideStringTo(s, os);
-}
-#endif // GTEST_HAS_GLOBAL_WSTRING
-
-#if GTEST_HAS_STD_WSTRING
-GTEST_API_ void PrintWideStringTo(const ::std::wstring&s, ::std::ostream* os);
-inline void PrintTo(const ::std::wstring& s, ::std::ostream* os) {
- PrintWideStringTo(s, os);
-}
-#endif // GTEST_HAS_STD_WSTRING
-
-#if GTEST_HAS_TR1_TUPLE || GTEST_HAS_STD_TUPLE_
-// Helper function for printing a tuple. T must be instantiated with
-// a tuple type.
-template <typename T>
-void PrintTupleTo(const T& t, ::std::ostream* os);
-#endif // GTEST_HAS_TR1_TUPLE || GTEST_HAS_STD_TUPLE_
-
-#if GTEST_HAS_TR1_TUPLE
-// Overload for ::std::tr1::tuple. Needed for printing function arguments,
-// which are packed as tuples.
-
-// Overloaded PrintTo() for tuples of various arities. We support
-// tuples of up-to 10 fields. The following implementation works
-// regardless of whether tr1::tuple is implemented using the
-// non-standard variadic template feature or not.
-
-inline void PrintTo(const ::std::tr1::tuple<>& t, ::std::ostream* os) {
- PrintTupleTo(t, os);
-}
-
-template <typename T1>
-void PrintTo(const ::std::tr1::tuple<T1>& t, ::std::ostream* os) {
- PrintTupleTo(t, os);
-}
-
-template <typename T1, typename T2>
-void PrintTo(const ::std::tr1::tuple<T1, T2>& t, ::std::ostream* os) {
- PrintTupleTo(t, os);
-}
-
-template <typename T1, typename T2, typename T3>
-void PrintTo(const ::std::tr1::tuple<T1, T2, T3>& t, ::std::ostream* os) {
- PrintTupleTo(t, os);
-}
-
-template <typename T1, typename T2, typename T3, typename T4>
-void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4>& t, ::std::ostream* os) {
- PrintTupleTo(t, os);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5>
-void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5>& t,
- ::std::ostream* os) {
- PrintTupleTo(t, os);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6>
-void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6>& t,
- ::std::ostream* os) {
- PrintTupleTo(t, os);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7>
-void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7>& t,
- ::std::ostream* os) {
- PrintTupleTo(t, os);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8>
-void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8>& t,
- ::std::ostream* os) {
- PrintTupleTo(t, os);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9>
-void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>& t,
- ::std::ostream* os) {
- PrintTupleTo(t, os);
-}
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10>
-void PrintTo(
- const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>& t,
- ::std::ostream* os) {
- PrintTupleTo(t, os);
-}
-#endif // GTEST_HAS_TR1_TUPLE
-
-#if GTEST_HAS_STD_TUPLE_
-template <typename... Types>
-void PrintTo(const ::std::tuple<Types...>& t, ::std::ostream* os) {
- PrintTupleTo(t, os);
-}
-#endif // GTEST_HAS_STD_TUPLE_
-
-// Overload for std::pair.
-template <typename T1, typename T2>
-void PrintTo(const ::std::pair<T1, T2>& value, ::std::ostream* os) {
- *os << '(';
- // We cannot use UniversalPrint(value.first, os) here, as T1 may be
- // a reference type. The same for printing value.second.
- UniversalPrinter<T1>::Print(value.first, os);
- *os << ", ";
- UniversalPrinter<T2>::Print(value.second, os);
- *os << ')';
-}
-
-// Implements printing a non-reference type T by letting the compiler
-// pick the right overload of PrintTo() for T.
-template <typename T>
-class UniversalPrinter {
- public:
- // MSVC warns about adding const to a function type, so we want to
- // disable the warning.
- GTEST_DISABLE_MSC_WARNINGS_PUSH_(4180)
-
- // Note: we deliberately don't call this PrintTo(), as that name
- // conflicts with ::testing::internal::PrintTo in the body of the
- // function.
- static void Print(const T& value, ::std::ostream* os) {
- // By default, ::testing::internal::PrintTo() is used for printing
- // the value.
- //
- // Thanks to Koenig look-up, if T is a class and has its own
- // PrintTo() function defined in its namespace, that function will
- // be visible here. Since it is more specific than the generic ones
- // in ::testing::internal, it will be picked by the compiler in the
- // following statement - exactly what we want.
- PrintTo(value, os);
- }
-
- GTEST_DISABLE_MSC_WARNINGS_POP_()
-};
-
-// UniversalPrintArray(begin, len, os) prints an array of 'len'
-// elements, starting at address 'begin'.
-template <typename T>
-void UniversalPrintArray(const T* begin, size_t len, ::std::ostream* os) {
- if (len == 0) {
- *os << "{}";
- } else {
- *os << "{ ";
- const size_t kThreshold = 18;
- const size_t kChunkSize = 8;
- // If the array has more than kThreshold elements, we'll have to
- // omit some details by printing only the first and the last
- // kChunkSize elements.
- // TODO(wan@google.com): let the user control the threshold using a flag.
- if (len <= kThreshold) {
- PrintRawArrayTo(begin, len, os);
- } else {
- PrintRawArrayTo(begin, kChunkSize, os);
- *os << ", ..., ";
- PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os);
- }
- *os << " }";
- }
-}
-// This overload prints a (const) char array compactly.
-GTEST_API_ void UniversalPrintArray(
- const char* begin, size_t len, ::std::ostream* os);
-
-// This overload prints a (const) wchar_t array compactly.
-GTEST_API_ void UniversalPrintArray(
- const wchar_t* begin, size_t len, ::std::ostream* os);
-
-// Implements printing an array type T[N].
-template <typename T, size_t N>
-class UniversalPrinter<T[N]> {
- public:
- // Prints the given array, omitting some elements when there are too
- // many.
- static void Print(const T (&a)[N], ::std::ostream* os) {
- UniversalPrintArray(a, N, os);
- }
-};
-
-// Implements printing a reference type T&.
-template <typename T>
-class UniversalPrinter<T&> {
- public:
- // MSVC warns about adding const to a function type, so we want to
- // disable the warning.
- GTEST_DISABLE_MSC_WARNINGS_PUSH_(4180)
-
- static void Print(const T& value, ::std::ostream* os) {
- // Prints the address of the value. We use reinterpret_cast here
- // as static_cast doesn't compile when T is a function type.
- *os << "@" << reinterpret_cast<const void*>(&value) << " ";
-
- // Then prints the value itself.
- UniversalPrint(value, os);
- }
-
- GTEST_DISABLE_MSC_WARNINGS_POP_()
-};
-
-// Prints a value tersely: for a reference type, the referenced value
-// (but not the address) is printed; for a (const) char pointer, the
-// NUL-terminated string (but not the pointer) is printed.
-
-template <typename T>
-class UniversalTersePrinter {
- public:
- static void Print(const T& value, ::std::ostream* os) {
- UniversalPrint(value, os);
- }
-};
-template <typename T>
-class UniversalTersePrinter<T&> {
- public:
- static void Print(const T& value, ::std::ostream* os) {
- UniversalPrint(value, os);
- }
-};
-template <typename T, size_t N>
-class UniversalTersePrinter<T[N]> {
- public:
- static void Print(const T (&value)[N], ::std::ostream* os) {
- UniversalPrinter<T[N]>::Print(value, os);
- }
-};
-template <>
-class UniversalTersePrinter<const char*> {
- public:
- static void Print(const char* str, ::std::ostream* os) {
- if (str == NULL) {
- *os << "NULL";
- } else {
- UniversalPrint(string(str), os);
- }
- }
-};
-template <>
-class UniversalTersePrinter<char*> {
- public:
- static void Print(char* str, ::std::ostream* os) {
- UniversalTersePrinter<const char*>::Print(str, os);
- }
-};
-
-#if GTEST_HAS_STD_WSTRING
-template <>
-class UniversalTersePrinter<const wchar_t*> {
- public:
- static void Print(const wchar_t* str, ::std::ostream* os) {
- if (str == NULL) {
- *os << "NULL";
- } else {
- UniversalPrint(::std::wstring(str), os);
- }
- }
-};
-#endif
-
-template <>
-class UniversalTersePrinter<wchar_t*> {
- public:
- static void Print(wchar_t* str, ::std::ostream* os) {
- UniversalTersePrinter<const wchar_t*>::Print(str, os);
- }
-};
-
-template <typename T>
-void UniversalTersePrint(const T& value, ::std::ostream* os) {
- UniversalTersePrinter<T>::Print(value, os);
-}
-
-// Prints a value using the type inferred by the compiler. The
-// difference between this and UniversalTersePrint() is that for a
-// (const) char pointer, this prints both the pointer and the
-// NUL-terminated string.
-template <typename T>
-void UniversalPrint(const T& value, ::std::ostream* os) {
- // A workarond for the bug in VC++ 7.1 that prevents us from instantiating
- // UniversalPrinter with T directly.
- typedef T T1;
- UniversalPrinter<T1>::Print(value, os);
-}
-
-typedef ::std::vector<string> Strings;
-
-// TuplePolicy<TupleT> must provide:
-// - tuple_size
-// size of tuple TupleT.
-// - get<size_t I>(const TupleT& t)
-// static function extracting element I of tuple TupleT.
-// - tuple_element<size_t I>::type
-// type of element I of tuple TupleT.
-template <typename TupleT>
-struct TuplePolicy;
-
-#if GTEST_HAS_TR1_TUPLE
-template <typename TupleT>
-struct TuplePolicy {
- typedef TupleT Tuple;
- static const size_t tuple_size = ::std::tr1::tuple_size<Tuple>::value;
-
- template <size_t I>
- struct tuple_element : ::std::tr1::tuple_element<I, Tuple> {};
-
- template <size_t I>
- static typename AddReference<
- const typename ::std::tr1::tuple_element<I, Tuple>::type>::type get(
- const Tuple& tuple) {
- return ::std::tr1::get<I>(tuple);
- }
-};
-template <typename TupleT>
-const size_t TuplePolicy<TupleT>::tuple_size;
-#endif // GTEST_HAS_TR1_TUPLE
-
-#if GTEST_HAS_STD_TUPLE_
-template <typename... Types>
-struct TuplePolicy< ::std::tuple<Types...> > {
- typedef ::std::tuple<Types...> Tuple;
- static const size_t tuple_size = ::std::tuple_size<Tuple>::value;
-
- template <size_t I>
- struct tuple_element : ::std::tuple_element<I, Tuple> {};
-
- template <size_t I>
- static const typename ::std::tuple_element<I, Tuple>::type& get(
- const Tuple& tuple) {
- return ::std::get<I>(tuple);
- }
-};
-template <typename... Types>
-const size_t TuplePolicy< ::std::tuple<Types...> >::tuple_size;
-#endif // GTEST_HAS_STD_TUPLE_
-
-#if GTEST_HAS_TR1_TUPLE || GTEST_HAS_STD_TUPLE_
-// This helper template allows PrintTo() for tuples and
-// UniversalTersePrintTupleFieldsToStrings() to be defined by
-// induction on the number of tuple fields. The idea is that
-// TuplePrefixPrinter<N>::PrintPrefixTo(t, os) prints the first N
-// fields in tuple t, and can be defined in terms of
-// TuplePrefixPrinter<N - 1>.
-//
-// The inductive case.
-template <size_t N>
-struct TuplePrefixPrinter {
- // Prints the first N fields of a tuple.
- template <typename Tuple>
- static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) {
- TuplePrefixPrinter<N - 1>::PrintPrefixTo(t, os);
- GTEST_INTENTIONAL_CONST_COND_PUSH_()
- if (N > 1) {
- GTEST_INTENTIONAL_CONST_COND_POP_()
- *os << ", ";
- }
- UniversalPrinter<
- typename TuplePolicy<Tuple>::template tuple_element<N - 1>::type>
- ::Print(TuplePolicy<Tuple>::template get<N - 1>(t), os);
- }
-
- // Tersely prints the first N fields of a tuple to a string vector,
- // one element for each field.
- template <typename Tuple>
- static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) {
- TuplePrefixPrinter<N - 1>::TersePrintPrefixToStrings(t, strings);
- ::std::stringstream ss;
- UniversalTersePrint(TuplePolicy<Tuple>::template get<N - 1>(t), &ss);
- strings->push_back(ss.str());
- }
-};
-
-// Base case.
-template <>
-struct TuplePrefixPrinter<0> {
- template <typename Tuple>
- static void PrintPrefixTo(const Tuple&, ::std::ostream*) {}
-
- template <typename Tuple>
- static void TersePrintPrefixToStrings(const Tuple&, Strings*) {}
-};
-
-// Helper function for printing a tuple.
-// Tuple must be either std::tr1::tuple or std::tuple type.
-template <typename Tuple>
-void PrintTupleTo(const Tuple& t, ::std::ostream* os) {
- *os << "(";
- TuplePrefixPrinter<TuplePolicy<Tuple>::tuple_size>::PrintPrefixTo(t, os);
- *os << ")";
-}
-
-// Prints the fields of a tuple tersely to a string vector, one
-// element for each field. See the comment before
-// UniversalTersePrint() for how we define "tersely".
-template <typename Tuple>
-Strings UniversalTersePrintTupleFieldsToStrings(const Tuple& value) {
- Strings result;
- TuplePrefixPrinter<TuplePolicy<Tuple>::tuple_size>::
- TersePrintPrefixToStrings(value, &result);
- return result;
-}
-#endif // GTEST_HAS_TR1_TUPLE || GTEST_HAS_STD_TUPLE_
-
-} // namespace internal
-
-template <typename T>
-::std::string PrintToString(const T& value) {
- ::std::stringstream ss;
- internal::UniversalTersePrinter<T>::Print(value, &ss);
- return ss.str();
-}
-
-} // namespace testing
-
-// Include any custom printer added by the local installation.
-// We must include this header at the end to make sure it can use the
-// declarations from this file.
-#include "gtest/internal/custom/gtest-printers.h"
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
diff --git a/test/gtest/include/gtest/gtest-spi.h b/test/gtest/include/gtest/gtest-spi.h
deleted file mode 100644
index f63fa9a..0000000
--- a/test/gtest/include/gtest/gtest-spi.h
+++ /dev/null
@@ -1,232 +0,0 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wan@google.com (Zhanyong Wan)
-//
-// Utilities for testing Google Test itself and code that uses Google Test
-// (e.g. frameworks built on top of Google Test).
-
-#ifndef GTEST_INCLUDE_GTEST_GTEST_SPI_H_
-#define GTEST_INCLUDE_GTEST_GTEST_SPI_H_
-
-#include "gtest/gtest.h"
-
-namespace testing {
-
-// This helper class can be used to mock out Google Test failure reporting
-// so that we can test Google Test or code that builds on Google Test.
-//
-// An object of this class appends a TestPartResult object to the
-// TestPartResultArray object given in the constructor whenever a Google Test
-// failure is reported. It can either intercept only failures that are
-// generated in the same thread that created this object or it can intercept
-// all generated failures. The scope of this mock object can be controlled with
-// the second argument to the two arguments constructor.
-class GTEST_API_ ScopedFakeTestPartResultReporter
- : public TestPartResultReporterInterface {
- public:
- // The two possible mocking modes of this object.
- enum InterceptMode {
- INTERCEPT_ONLY_CURRENT_THREAD, // Intercepts only thread local failures.
- INTERCEPT_ALL_THREADS // Intercepts all failures.
- };
-
- // The c'tor sets this object as the test part result reporter used
- // by Google Test. The 'result' parameter specifies where to report the
- // results. This reporter will only catch failures generated in the current
- // thread. DEPRECATED
- explicit ScopedFakeTestPartResultReporter(TestPartResultArray* result);
-
- // Same as above, but you can choose the interception scope of this object.
- ScopedFakeTestPartResultReporter(InterceptMode intercept_mode,
- TestPartResultArray* result);
-
- // The d'tor restores the previous test part result reporter.
- virtual ~ScopedFakeTestPartResultReporter();
-
- // Appends the TestPartResult object to the TestPartResultArray
- // received in the constructor.
- //
- // This method is from the TestPartResultReporterInterface
- // interface.
- virtual void ReportTestPartResult(const TestPartResult& result);
- private:
- void Init();
-
- const InterceptMode intercept_mode_;
- TestPartResultReporterInterface* old_reporter_;
- TestPartResultArray* const result_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedFakeTestPartResultReporter);
-};
-
-namespace internal {
-
-// A helper class for implementing EXPECT_FATAL_FAILURE() and
-// EXPECT_NONFATAL_FAILURE(). Its destructor verifies that the given
-// TestPartResultArray contains exactly one failure that has the given
-// type and contains the given substring. If that's not the case, a
-// non-fatal failure will be generated.
-class GTEST_API_ SingleFailureChecker {
- public:
- // The constructor remembers the arguments.
- SingleFailureChecker(const TestPartResultArray* results,
- TestPartResult::Type type,
- const string& substr);
- ~SingleFailureChecker();
- private:
- const TestPartResultArray* const results_;
- const TestPartResult::Type type_;
- const string substr_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(SingleFailureChecker);
-};
-
-} // namespace internal
-
-} // namespace testing
-
-// A set of macros for testing Google Test assertions or code that's expected
-// to generate Google Test fatal failures. It verifies that the given
-// statement will cause exactly one fatal Google Test failure with 'substr'
-// being part of the failure message.
-//
-// There are two different versions of this macro. EXPECT_FATAL_FAILURE only
-// affects and considers failures generated in the current thread and
-// EXPECT_FATAL_FAILURE_ON_ALL_THREADS does the same but for all threads.
-//
-// The verification of the assertion is done correctly even when the statement
-// throws an exception or aborts the current function.
-//
-// Known restrictions:
-// - 'statement' cannot reference local non-static variables or
-// non-static members of the current object.
-// - 'statement' cannot return a value.
-// - You cannot stream a failure message to this macro.
-//
-// Note that even though the implementations of the following two
-// macros are much alike, we cannot refactor them to use a common
-// helper macro, due to some peculiarity in how the preprocessor
-// works. The AcceptsMacroThatExpandsToUnprotectedComma test in
-// gtest_unittest.cc will fail to compile if we do that.
-#define EXPECT_FATAL_FAILURE(statement, substr) \
- do { \
- class GTestExpectFatalFailureHelper {\
- public:\
- static void Execute() { statement; }\
- };\
- ::testing::TestPartResultArray gtest_failures;\
- ::testing::internal::SingleFailureChecker gtest_checker(\
- &gtest_failures, ::testing::TestPartResult::kFatalFailure, (substr));\
- {\
- ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
- ::testing::ScopedFakeTestPartResultReporter:: \
- INTERCEPT_ONLY_CURRENT_THREAD, &gtest_failures);\
- GTestExpectFatalFailureHelper::Execute();\
- }\
- } while (::testing::internal::AlwaysFalse())
-
-#define EXPECT_FATAL_FAILURE_ON_ALL_THREADS(statement, substr) \
- do { \
- class GTestExpectFatalFailureHelper {\
- public:\
- static void Execute() { statement; }\
- };\
- ::testing::TestPartResultArray gtest_failures;\
- ::testing::internal::SingleFailureChecker gtest_checker(\
- &gtest_failures, ::testing::TestPartResult::kFatalFailure, (substr));\
- {\
- ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
- ::testing::ScopedFakeTestPartResultReporter:: \
- INTERCEPT_ALL_THREADS, &gtest_failures);\
- GTestExpectFatalFailureHelper::Execute();\
- }\
- } while (::testing::internal::AlwaysFalse())
-
-// A macro for testing Google Test assertions or code that's expected to
-// generate Google Test non-fatal failures. It asserts that the given
-// statement will cause exactly one non-fatal Google Test failure with 'substr'
-// being part of the failure message.
-//
-// There are two different versions of this macro. EXPECT_NONFATAL_FAILURE only
-// affects and considers failures generated in the current thread and
-// EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS does the same but for all threads.
-//
-// 'statement' is allowed to reference local variables and members of
-// the current object.
-//
-// The verification of the assertion is done correctly even when the statement
-// throws an exception or aborts the current function.
-//
-// Known restrictions:
-// - You cannot stream a failure message to this macro.
-//
-// Note that even though the implementations of the following two
-// macros are much alike, we cannot refactor them to use a common
-// helper macro, due to some peculiarity in how the preprocessor
-// works. If we do that, the code won't compile when the user gives
-// EXPECT_NONFATAL_FAILURE() a statement that contains a macro that
-// expands to code containing an unprotected comma. The
-// AcceptsMacroThatExpandsToUnprotectedComma test in gtest_unittest.cc
-// catches that.
-//
-// For the same reason, we have to write
-// if (::testing::internal::AlwaysTrue()) { statement; }
-// instead of
-// GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)
-// to avoid an MSVC warning on unreachable code.
-#define EXPECT_NONFATAL_FAILURE(statement, substr) \
- do {\
- ::testing::TestPartResultArray gtest_failures;\
- ::testing::internal::SingleFailureChecker gtest_checker(\
- &gtest_failures, ::testing::TestPartResult::kNonFatalFailure, \
- (substr));\
- {\
- ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
- ::testing::ScopedFakeTestPartResultReporter:: \
- INTERCEPT_ONLY_CURRENT_THREAD, &gtest_failures);\
- if (::testing::internal::AlwaysTrue()) { statement; }\
- }\
- } while (::testing::internal::AlwaysFalse())
-
-#define EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(statement, substr) \
- do {\
- ::testing::TestPartResultArray gtest_failures;\
- ::testing::internal::SingleFailureChecker gtest_checker(\
- &gtest_failures, ::testing::TestPartResult::kNonFatalFailure, \
- (substr));\
- {\
- ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
- ::testing::ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS, \
- &gtest_failures);\
- if (::testing::internal::AlwaysTrue()) { statement; }\
- }\
- } while (::testing::internal::AlwaysFalse())
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_SPI_H_
diff --git a/test/gtest/include/gtest/gtest-test-part.h b/test/gtest/include/gtest/gtest-test-part.h
deleted file mode 100644
index 77eb844..0000000
--- a/test/gtest/include/gtest/gtest-test-part.h
+++ /dev/null
@@ -1,179 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: mheule@google.com (Markus Heule)
-//
-
-#ifndef GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
-#define GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
-
-#include <iosfwd>
-#include <vector>
-#include "gtest/internal/gtest-internal.h"
-#include "gtest/internal/gtest-string.h"
-
-namespace testing {
-
-// A copyable object representing the result of a test part (i.e. an
-// assertion or an explicit FAIL(), ADD_FAILURE(), or SUCCESS()).
-//
-// Don't inherit from TestPartResult as its destructor is not virtual.
-class GTEST_API_ TestPartResult {
- public:
- // The possible outcomes of a test part (i.e. an assertion or an
- // explicit SUCCEED(), FAIL(), or ADD_FAILURE()).
- enum Type {
- kSuccess, // Succeeded.
- kNonFatalFailure, // Failed but the test can continue.
- kFatalFailure // Failed and the test should be terminated.
- };
-
- // C'tor. TestPartResult does NOT have a default constructor.
- // Always use this constructor (with parameters) to create a
- // TestPartResult object.
- TestPartResult(Type a_type,
- const char* a_file_name,
- int a_line_number,
- const char* a_message)
- : type_(a_type),
- file_name_(a_file_name == NULL ? "" : a_file_name),
- line_number_(a_line_number),
- summary_(ExtractSummary(a_message)),
- message_(a_message) {
- }
-
- // Gets the outcome of the test part.
- Type type() const { return type_; }
-
- // Gets the name of the source file where the test part took place, or
- // NULL if it's unknown.
- const char* file_name() const {
- return file_name_.empty() ? NULL : file_name_.c_str();
- }
-
- // Gets the line in the source file where the test part took place,
- // or -1 if it's unknown.
- int line_number() const { return line_number_; }
-
- // Gets the summary of the failure message.
- const char* summary() const { return summary_.c_str(); }
-
- // Gets the message associated with the test part.
- const char* message() const { return message_.c_str(); }
-
- // Returns true iff the test part passed.
- bool passed() const { return type_ == kSuccess; }
-
- // Returns true iff the test part failed.
- bool failed() const { return type_ != kSuccess; }
-
- // Returns true iff the test part non-fatally failed.
- bool nonfatally_failed() const { return type_ == kNonFatalFailure; }
-
- // Returns true iff the test part fatally failed.
- bool fatally_failed() const { return type_ == kFatalFailure; }
-
- private:
- Type type_;
-
- // Gets the summary of the failure message by omitting the stack
- // trace in it.
- static std::string ExtractSummary(const char* message);
-
- // The name of the source file where the test part took place, or
- // "" if the source file is unknown.
- std::string file_name_;
- // The line in the source file where the test part took place, or -1
- // if the line number is unknown.
- int line_number_;
- std::string summary_; // The test failure summary.
- std::string message_; // The test failure message.
-};
-
-// Prints a TestPartResult object.
-std::ostream& operator<<(std::ostream& os, const TestPartResult& result);
-
-// An array of TestPartResult objects.
-//
-// Don't inherit from TestPartResultArray as its destructor is not
-// virtual.
-class GTEST_API_ TestPartResultArray {
- public:
- TestPartResultArray() {}
-
- // Appends the given TestPartResult to the array.
- void Append(const TestPartResult& result);
-
- // Returns the TestPartResult at the given index (0-based).
- const TestPartResult& GetTestPartResult(int index) const;
-
- // Returns the number of TestPartResult objects in the array.
- int size() const;
-
- private:
- std::vector<TestPartResult> array_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestPartResultArray);
-};
-
-// This interface knows how to report a test part result.
-class TestPartResultReporterInterface {
- public:
- virtual ~TestPartResultReporterInterface() {}
-
- virtual void ReportTestPartResult(const TestPartResult& result) = 0;
-};
-
-namespace internal {
-
-// This helper class is used by {ASSERT|EXPECT}_NO_FATAL_FAILURE to check if a
-// statement generates new fatal failures. To do so it registers itself as the
-// current test part result reporter. Besides checking if fatal failures were
-// reported, it only delegates the reporting to the former result reporter.
-// The original result reporter is restored in the destructor.
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-class GTEST_API_ HasNewFatalFailureHelper
- : public TestPartResultReporterInterface {
- public:
- HasNewFatalFailureHelper();
- virtual ~HasNewFatalFailureHelper();
- virtual void ReportTestPartResult(const TestPartResult& result);
- bool has_new_fatal_failure() const { return has_new_fatal_failure_; }
- private:
- bool has_new_fatal_failure_;
- TestPartResultReporterInterface* original_reporter_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(HasNewFatalFailureHelper);
-};
-
-} // namespace internal
-
-} // namespace testing
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
diff --git a/test/gtest/include/gtest/gtest-typed-test.h b/test/gtest/include/gtest/gtest-typed-test.h
deleted file mode 100644
index 5f69d56..0000000
--- a/test/gtest/include/gtest/gtest-typed-test.h
+++ /dev/null
@@ -1,263 +0,0 @@
-// Copyright 2008 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wan@google.com (Zhanyong Wan)
-
-#ifndef GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
-#define GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
-
-// This header implements typed tests and type-parameterized tests.
-
-// Typed (aka type-driven) tests repeat the same test for types in a
-// list. You must know which types you want to test with when writing
-// typed tests. Here's how you do it:
-
-#if 0
-
-// First, define a fixture class template. It should be parameterized
-// by a type. Remember to derive it from testing::Test.
-template <typename T>
-class FooTest : public testing::Test {
- public:
- ...
- typedef std::list<T> List;
- static T shared_;
- T value_;
-};
-
-// Next, associate a list of types with the test case, which will be
-// repeated for each type in the list. The typedef is necessary for
-// the macro to parse correctly.
-typedef testing::Types<char, int, unsigned int> MyTypes;
-TYPED_TEST_CASE(FooTest, MyTypes);
-
-// If the type list contains only one type, you can write that type
-// directly without Types<...>:
-// TYPED_TEST_CASE(FooTest, int);
-
-// Then, use TYPED_TEST() instead of TEST_F() to define as many typed
-// tests for this test case as you want.
-TYPED_TEST(FooTest, DoesBlah) {
- // Inside a test, refer to TypeParam to get the type parameter.
- // Since we are inside a derived class template, C++ requires use to
- // visit the members of FooTest via 'this'.
- TypeParam n = this->value_;
-
- // To visit static members of the fixture, add the TestFixture::
- // prefix.
- n += TestFixture::shared_;
-
- // To refer to typedefs in the fixture, add the "typename
- // TestFixture::" prefix.
- typename TestFixture::List values;
- values.push_back(n);
- ...
-}
-
-TYPED_TEST(FooTest, HasPropertyA) { ... }
-
-#endif // 0
-
-// Type-parameterized tests are abstract test patterns parameterized
-// by a type. Compared with typed tests, type-parameterized tests
-// allow you to define the test pattern without knowing what the type
-// parameters are. The defined pattern can be instantiated with
-// different types any number of times, in any number of translation
-// units.
-//
-// If you are designing an interface or concept, you can define a
-// suite of type-parameterized tests to verify properties that any
-// valid implementation of the interface/concept should have. Then,
-// each implementation can easily instantiate the test suite to verify
-// that it conforms to the requirements, without having to write
-// similar tests repeatedly. Here's an example:
-
-#if 0
-
-// First, define a fixture class template. It should be parameterized
-// by a type. Remember to derive it from testing::Test.
-template <typename T>
-class FooTest : public testing::Test {
- ...
-};
-
-// Next, declare that you will define a type-parameterized test case
-// (the _P suffix is for "parameterized" or "pattern", whichever you
-// prefer):
-TYPED_TEST_CASE_P(FooTest);
-
-// Then, use TYPED_TEST_P() to define as many type-parameterized tests
-// for this type-parameterized test case as you want.
-TYPED_TEST_P(FooTest, DoesBlah) {
- // Inside a test, refer to TypeParam to get the type parameter.
- TypeParam n = 0;
- ...
-}
-
-TYPED_TEST_P(FooTest, HasPropertyA) { ... }
-
-// Now the tricky part: you need to register all test patterns before
-// you can instantiate them. The first argument of the macro is the
-// test case name; the rest are the names of the tests in this test
-// case.
-REGISTER_TYPED_TEST_CASE_P(FooTest,
- DoesBlah, HasPropertyA);
-
-// Finally, you are free to instantiate the pattern with the types you
-// want. If you put the above code in a header file, you can #include
-// it in multiple C++ source files and instantiate it multiple times.
-//
-// To distinguish different instances of the pattern, the first
-// argument to the INSTANTIATE_* macro is a prefix that will be added
-// to the actual test case name. Remember to pick unique prefixes for
-// different instances.
-typedef testing::Types<char, int, unsigned int> MyTypes;
-INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes);
-
-// If the type list contains only one type, you can write that type
-// directly without Types<...>:
-// INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, int);
-
-#endif // 0
-
-#include "gtest/internal/gtest-port.h"
-#include "gtest/internal/gtest-type-util.h"
-
-// Implements typed tests.
-
-#if GTEST_HAS_TYPED_TEST
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Expands to the name of the typedef for the type parameters of the
-// given test case.
-# define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_
-
-// The 'Types' template argument below must have spaces around it
-// since some compilers may choke on '>>' when passing a template
-// instance (e.g. Types<int>)
-# define TYPED_TEST_CASE(CaseName, Types) \
- typedef ::testing::internal::TypeList< Types >::type \
- GTEST_TYPE_PARAMS_(CaseName)
-
-# define TYPED_TEST(CaseName, TestName) \
- template <typename gtest_TypeParam_> \
- class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \
- : public CaseName<gtest_TypeParam_> { \
- private: \
- typedef CaseName<gtest_TypeParam_> TestFixture; \
- typedef gtest_TypeParam_ TypeParam; \
- virtual void TestBody(); \
- }; \
- bool gtest_##CaseName##_##TestName##_registered_ GTEST_ATTRIBUTE_UNUSED_ = \
- ::testing::internal::TypeParameterizedTest< \
- CaseName, \
- ::testing::internal::TemplateSel< \
- GTEST_TEST_CLASS_NAME_(CaseName, TestName)>, \
- GTEST_TYPE_PARAMS_(CaseName)>::Register(\
- "", ::testing::internal::CodeLocation(__FILE__, __LINE__), \
- #CaseName, #TestName, 0); \
- template <typename gtest_TypeParam_> \
- void GTEST_TEST_CLASS_NAME_(CaseName, TestName)<gtest_TypeParam_>::TestBody()
-
-#endif // GTEST_HAS_TYPED_TEST
-
-// Implements type-parameterized tests.
-
-#if GTEST_HAS_TYPED_TEST_P
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Expands to the namespace name that the type-parameterized tests for
-// the given type-parameterized test case are defined in. The exact
-// name of the namespace is subject to change without notice.
-# define GTEST_CASE_NAMESPACE_(TestCaseName) \
- gtest_case_##TestCaseName##_
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Expands to the name of the variable used to remember the names of
-// the defined tests in the given test case.
-# define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) \
- gtest_typed_test_case_p_state_##TestCaseName##_
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE DIRECTLY.
-//
-// Expands to the name of the variable used to remember the names of
-// the registered tests in the given test case.
-# define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) \
- gtest_registered_test_names_##TestCaseName##_
-
-// The variables defined in the type-parameterized test macros are
-// static as typically these macros are used in a .h file that can be
-// #included in multiple translation units linked together.
-# define TYPED_TEST_CASE_P(CaseName) \
- static ::testing::internal::TypedTestCasePState \
- GTEST_TYPED_TEST_CASE_P_STATE_(CaseName)
-
-# define TYPED_TEST_P(CaseName, TestName) \
- namespace GTEST_CASE_NAMESPACE_(CaseName) { \
- template <typename gtest_TypeParam_> \
- class TestName : public CaseName<gtest_TypeParam_> { \
- private: \
- typedef CaseName<gtest_TypeParam_> TestFixture; \
- typedef gtest_TypeParam_ TypeParam; \
- virtual void TestBody(); \
- }; \
- static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \
- GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).AddTestName(\
- __FILE__, __LINE__, #CaseName, #TestName); \
- } \
- template <typename gtest_TypeParam_> \
- void GTEST_CASE_NAMESPACE_(CaseName)::TestName<gtest_TypeParam_>::TestBody()
-
-# define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \
- namespace GTEST_CASE_NAMESPACE_(CaseName) { \
- typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \
- } \
- static const char* const GTEST_REGISTERED_TEST_NAMES_(CaseName) = \
- GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).VerifyRegisteredTestNames(\
- __FILE__, __LINE__, #__VA_ARGS__)
-
-// The 'Types' template argument below must have spaces around it
-// since some compilers may choke on '>>' when passing a template
-// instance (e.g. Types<int>)
-# define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \
- bool gtest_##Prefix##_##CaseName GTEST_ATTRIBUTE_UNUSED_ = \
- ::testing::internal::TypeParameterizedTestCase<CaseName, \
- GTEST_CASE_NAMESPACE_(CaseName)::gtest_AllTests_, \
- ::testing::internal::TypeList< Types >::type>::Register(\
- #Prefix, \
- ::testing::internal::CodeLocation(__FILE__, __LINE__), \
- &GTEST_TYPED_TEST_CASE_P_STATE_(CaseName), \
- #CaseName, GTEST_REGISTERED_TEST_NAMES_(CaseName))
-
-#endif // GTEST_HAS_TYPED_TEST_P
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
diff --git a/test/gtest/include/gtest/gtest.h b/test/gtest/include/gtest/gtest.h
deleted file mode 100644
index f846c5b..0000000
--- a/test/gtest/include/gtest/gtest.h
+++ /dev/null
@@ -1,2236 +0,0 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wan@google.com (Zhanyong Wan)
-//
-// The Google C++ Testing Framework (Google Test)
-//
-// This header file defines the public API for Google Test. It should be
-// included by any test program that uses Google Test.
-//
-// IMPORTANT NOTE: Due to limitation of the C++ language, we have to
-// leave some internal implementation details in this header file.
-// They are clearly marked by comments like this:
-//
-// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-//
-// Such code is NOT meant to be used by a user directly, and is subject
-// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user
-// program!
-//
-// Acknowledgment: Google Test borrowed the idea of automatic test
-// registration from Barthelemy Dagenais' (barthelemy@prologique.com)
-// easyUnit framework.
-
-#ifndef GTEST_INCLUDE_GTEST_GTEST_H_
-#define GTEST_INCLUDE_GTEST_GTEST_H_
-
-#include <limits>
-#include <ostream>
-#include <vector>
-
-#include "gtest/internal/gtest-internal.h"
-#include "gtest/internal/gtest-string.h"
-#include "gtest/gtest-death-test.h"
-#include "gtest/gtest-message.h"
-#include "gtest/gtest-param-test.h"
-#include "gtest/gtest-printers.h"
-#include "gtest/gtest_prod.h"
-#include "gtest/gtest-test-part.h"
-#include "gtest/gtest-typed-test.h"
-
-// Depending on the platform, different string classes are available.
-// On Linux, in addition to ::std::string, Google also makes use of
-// class ::string, which has the same interface as ::std::string, but
-// has a different implementation.
-//
-// You can define GTEST_HAS_GLOBAL_STRING to 1 to indicate that
-// ::string is available AND is a distinct type to ::std::string, or
-// define it to 0 to indicate otherwise.
-//
-// If ::std::string and ::string are the same class on your platform
-// due to aliasing, you should define GTEST_HAS_GLOBAL_STRING to 0.
-//
-// If you do not define GTEST_HAS_GLOBAL_STRING, it is defined
-// heuristically.
-
-namespace testing {
-
-// Declares the flags.
-
-// This flag temporary enables the disabled tests.
-GTEST_DECLARE_bool_(also_run_disabled_tests);
-
-// This flag brings the debugger on an assertion failure.
-GTEST_DECLARE_bool_(break_on_failure);
-
-// This flag controls whether Google Test catches all test-thrown exceptions
-// and logs them as failures.
-GTEST_DECLARE_bool_(catch_exceptions);
-
-// This flag enables using colors in terminal output. Available values are
-// "yes" to enable colors, "no" (disable colors), or "auto" (the default)
-// to let Google Test decide.
-GTEST_DECLARE_string_(color);
-
-// This flag sets up the filter to select by name using a glob pattern
-// the tests to run. If the filter is not given all tests are executed.
-GTEST_DECLARE_string_(filter);
-
-// This flag causes the Google Test to list tests. None of the tests listed
-// are actually run if the flag is provided.
-GTEST_DECLARE_bool_(list_tests);
-
-// This flag controls whether Google Test emits a detailed XML report to a file
-// in addition to its normal textual output.
-GTEST_DECLARE_string_(output);
-
-// This flags control whether Google Test prints the elapsed time for each
-// test.
-GTEST_DECLARE_bool_(print_time);
-
-// This flag specifies the random number seed.
-GTEST_DECLARE_int32_(random_seed);
-
-// This flag sets how many times the tests are repeated. The default value
-// is 1. If the value is -1 the tests are repeating forever.
-GTEST_DECLARE_int32_(repeat);
-
-// This flag controls whether Google Test includes Google Test internal
-// stack frames in failure stack traces.
-GTEST_DECLARE_bool_(show_internal_stack_frames);
-
-// When this flag is specified, tests' order is randomized on every iteration.
-GTEST_DECLARE_bool_(shuffle);
-
-// This flag specifies the maximum number of stack frames to be
-// printed in a failure message.
-GTEST_DECLARE_int32_(stack_trace_depth);
-
-// When this flag is specified, a failed assertion will throw an
-// exception if exceptions are enabled, or exit the program with a
-// non-zero code otherwise.
-GTEST_DECLARE_bool_(throw_on_failure);
-
-// When this flag is set with a "host:port" string, on supported
-// platforms test results are streamed to the specified port on
-// the specified host machine.
-GTEST_DECLARE_string_(stream_result_to);
-
-// The upper limit for valid stack trace depths.
-const int kMaxStackTraceDepth = 100;
-
-namespace internal {
-
-class AssertHelper;
-class DefaultGlobalTestPartResultReporter;
-class ExecDeathTest;
-class NoExecDeathTest;
-class FinalSuccessChecker;
-class GTestFlagSaver;
-class StreamingListenerTest;
-class TestResultAccessor;
-class TestEventListenersAccessor;
-class TestEventRepeater;
-class UnitTestRecordPropertyTestHelper;
-class WindowsDeathTest;
-class UnitTestImpl* GetUnitTestImpl();
-void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
- const std::string& message);
-
-} // namespace internal
-
-// The friend relationship of some of these classes is cyclic.
-// If we don't forward declare them the compiler might confuse the classes
-// in friendship clauses with same named classes on the scope.
-class Test;
-class TestCase;
-class TestInfo;
-class UnitTest;
-
-// A class for indicating whether an assertion was successful. When
-// the assertion wasn't successful, the AssertionResult object
-// remembers a non-empty message that describes how it failed.
-//
-// To create an instance of this class, use one of the factory functions
-// (AssertionSuccess() and AssertionFailure()).
-//
-// This class is useful for two purposes:
-// 1. Defining predicate functions to be used with Boolean test assertions
-// EXPECT_TRUE/EXPECT_FALSE and their ASSERT_ counterparts
-// 2. Defining predicate-format functions to be
-// used with predicate assertions (ASSERT_PRED_FORMAT*, etc).
-//
-// For example, if you define IsEven predicate:
-//
-// testing::AssertionResult IsEven(int n) {
-// if ((n % 2) == 0)
-// return testing::AssertionSuccess();
-// else
-// return testing::AssertionFailure() << n << " is odd";
-// }
-//
-// Then the failed expectation EXPECT_TRUE(IsEven(Fib(5)))
-// will print the message
-//
-// Value of: IsEven(Fib(5))
-// Actual: false (5 is odd)
-// Expected: true
-//
-// instead of a more opaque
-//
-// Value of: IsEven(Fib(5))
-// Actual: false
-// Expected: true
-//
-// in case IsEven is a simple Boolean predicate.
-//
-// If you expect your predicate to be reused and want to support informative
-// messages in EXPECT_FALSE and ASSERT_FALSE (negative assertions show up
-// about half as often as positive ones in our tests), supply messages for
-// both success and failure cases:
-//
-// testing::AssertionResult IsEven(int n) {
-// if ((n % 2) == 0)
-// return testing::AssertionSuccess() << n << " is even";
-// else
-// return testing::AssertionFailure() << n << " is odd";
-// }
-//
-// Then a statement EXPECT_FALSE(IsEven(Fib(6))) will print
-//
-// Value of: IsEven(Fib(6))
-// Actual: true (8 is even)
-// Expected: false
-//
-// NB: Predicates that support negative Boolean assertions have reduced
-// performance in positive ones so be careful not to use them in tests
-// that have lots (tens of thousands) of positive Boolean assertions.
-//
-// To use this class with EXPECT_PRED_FORMAT assertions such as:
-//
-// // Verifies that Foo() returns an even number.
-// EXPECT_PRED_FORMAT1(IsEven, Foo());
-//
-// you need to define:
-//
-// testing::AssertionResult IsEven(const char* expr, int n) {
-// if ((n % 2) == 0)
-// return testing::AssertionSuccess();
-// else
-// return testing::AssertionFailure()
-// << "Expected: " << expr << " is even\n Actual: it's " << n;
-// }
-//
-// If Foo() returns 5, you will see the following message:
-//
-// Expected: Foo() is even
-// Actual: it's 5
-//
-class GTEST_API_ AssertionResult {
- public:
- // Copy constructor.
- // Used in EXPECT_TRUE/FALSE(assertion_result).
- AssertionResult(const AssertionResult& other);
-
- GTEST_DISABLE_MSC_WARNINGS_PUSH_(4800 /* forcing value to bool */)
-
- // Used in the EXPECT_TRUE/FALSE(bool_expression).
- //
- // T must be contextually convertible to bool.
- //
- // The second parameter prevents this overload from being considered if
- // the argument is implicitly convertible to AssertionResult. In that case
- // we want AssertionResult's copy constructor to be used.
- template <typename T>
- explicit AssertionResult(
- const T& success,
- typename internal::EnableIf<
- !internal::ImplicitlyConvertible<T, AssertionResult>::value>::type*
- /*enabler*/ = NULL)
- : success_(success) {}
-
- GTEST_DISABLE_MSC_WARNINGS_POP_()
-
- // Assignment operator.
- AssertionResult& operator=(AssertionResult other) {
- swap(other);
- return *this;
- }
-
- // Returns true iff the assertion succeeded.
- operator bool() const { return success_; } // NOLINT
-
- // Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.
- AssertionResult operator!() const;
-
- // Returns the text streamed into this AssertionResult. Test assertions
- // use it when they fail (i.e., the predicate's outcome doesn't match the
- // assertion's expectation). When nothing has been streamed into the
- // object, returns an empty string.
- const char* message() const {
- return message_.get() != NULL ? message_->c_str() : "";
- }
- // TODO(vladl@google.com): Remove this after making sure no clients use it.
- // Deprecated; please use message() instead.
- const char* failure_message() const { return message(); }
-
- // Streams a custom failure message into this object.
- template <typename T> AssertionResult& operator<<(const T& value) {
- AppendMessage(Message() << value);
- return *this;
- }
-
- // Allows streaming basic output manipulators such as endl or flush into
- // this object.
- AssertionResult& operator<<(
- ::std::ostream& (*basic_manipulator)(::std::ostream& stream)) {
- AppendMessage(Message() << basic_manipulator);
- return *this;
- }
-
- private:
- // Appends the contents of message to message_.
- void AppendMessage(const Message& a_message) {
- if (message_.get() == NULL)
- message_.reset(new ::std::string);
- message_->append(a_message.GetString().c_str());
- }
-
- // Swap the contents of this AssertionResult with other.
- void swap(AssertionResult& other);
-
- // Stores result of the assertion predicate.
- bool success_;
- // Stores the message describing the condition in case the expectation
- // construct is not satisfied with the predicate's outcome.
- // Referenced via a pointer to avoid taking too much stack frame space
- // with test assertions.
- internal::scoped_ptr< ::std::string> message_;
-};
-
-// Makes a successful assertion result.
-GTEST_API_ AssertionResult AssertionSuccess();
-
-// Makes a failed assertion result.
-GTEST_API_ AssertionResult AssertionFailure();
-
-// Makes a failed assertion result with the given failure message.
-// Deprecated; use AssertionFailure() << msg.
-GTEST_API_ AssertionResult AssertionFailure(const Message& msg);
-
-// The abstract class that all tests inherit from.
-//
-// In Google Test, a unit test program contains one or many TestCases, and
-// each TestCase contains one or many Tests.
-//
-// When you define a test using the TEST macro, you don't need to
-// explicitly derive from Test - the TEST macro automatically does
-// this for you.
-//
-// The only time you derive from Test is when defining a test fixture
-// to be used a TEST_F. For example:
-//
-// class FooTest : public testing::Test {
-// protected:
-// void SetUp() override { ... }
-// void TearDown() override { ... }
-// ...
-// };
-//
-// TEST_F(FooTest, Bar) { ... }
-// TEST_F(FooTest, Baz) { ... }
-//
-// Test is not copyable.
-class GTEST_API_ Test {
- public:
- friend class TestInfo;
-
- // Defines types for pointers to functions that set up and tear down
- // a test case.
- typedef internal::SetUpTestCaseFunc SetUpTestCaseFunc;
- typedef internal::TearDownTestCaseFunc TearDownTestCaseFunc;
-
- // The d'tor is virtual as we intend to inherit from Test.
- virtual ~Test();
-
- // Sets up the stuff shared by all tests in this test case.
- //
- // Google Test will call Foo::SetUpTestCase() before running the first
- // test in test case Foo. Hence a sub-class can define its own
- // SetUpTestCase() method to shadow the one defined in the super
- // class.
- static void SetUpTestCase() {}
-
- // Tears down the stuff shared by all tests in this test case.
- //
- // Google Test will call Foo::TearDownTestCase() after running the last
- // test in test case Foo. Hence a sub-class can define its own
- // TearDownTestCase() method to shadow the one defined in the super
- // class.
- static void TearDownTestCase() {}
-
- // Returns true iff the current test has a fatal failure.
- static bool HasFatalFailure();
-
- // Returns true iff the current test has a non-fatal failure.
- static bool HasNonfatalFailure();
-
- // Returns true iff the current test has a (either fatal or
- // non-fatal) failure.
- static bool HasFailure() { return HasFatalFailure() || HasNonfatalFailure(); }
-
- // Logs a property for the current test, test case, or for the entire
- // invocation of the test program when used outside of the context of a
- // test case. Only the last value for a given key is remembered. These
- // are public static so they can be called from utility functions that are
- // not members of the test fixture. Calls to RecordProperty made during
- // lifespan of the test (from the moment its constructor starts to the
- // moment its destructor finishes) will be output in XML as attributes of
- // the <testcase> element. Properties recorded from fixture's
- // SetUpTestCase or TearDownTestCase are logged as attributes of the
- // corresponding <testsuite> element. Calls to RecordProperty made in the
- // global context (before or after invocation of RUN_ALL_TESTS and from
- // SetUp/TearDown method of Environment objects registered with Google
- // Test) will be output as attributes of the <testsuites> element.
- static void RecordProperty(const std::string& key, const std::string& value);
- static void RecordProperty(const std::string& key, int value);
-
- protected:
- // Creates a Test object.
- Test();
-
- // Sets up the test fixture.
- virtual void SetUp();
-
- // Tears down the test fixture.
- virtual void TearDown();
-
- private:
- // Returns true iff the current test has the same fixture class as
- // the first test in the current test case.
- static bool HasSameFixtureClass();
-
- // Runs the test after the test fixture has been set up.
- //
- // A sub-class must implement this to define the test logic.
- //
- // DO NOT OVERRIDE THIS FUNCTION DIRECTLY IN A USER PROGRAM.
- // Instead, use the TEST or TEST_F macro.
- virtual void TestBody() = 0;
-
- // Sets up, executes, and tears down the test.
- void Run();
-
- // Deletes self. We deliberately pick an unusual name for this
- // internal method to avoid clashing with names used in user TESTs.
- void DeleteSelf_() { delete this; }
-
- const internal::scoped_ptr< GTEST_FLAG_SAVER_ > gtest_flag_saver_;
-
- // Often a user misspells SetUp() as Setup() and spends a long time
- // wondering why it is never called by Google Test. The declaration of
- // the following method is solely for catching such an error at
- // compile time:
- //
- // - The return type is deliberately chosen to be not void, so it
- // will be a conflict if void Setup() is declared in the user's
- // test fixture.
- //
- // - This method is private, so it will be another compiler error
- // if the method is called from the user's test fixture.
- //
- // DO NOT OVERRIDE THIS FUNCTION.
- //
- // If you see an error about overriding the following function or
- // about it being private, you have mis-spelled SetUp() as Setup().
- struct Setup_should_be_spelled_SetUp {};
- virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; }
-
- // We disallow copying Tests.
- GTEST_DISALLOW_COPY_AND_ASSIGN_(Test);
-};
-
-typedef internal::TimeInMillis TimeInMillis;
-
-// A copyable object representing a user specified test property which can be
-// output as a key/value string pair.
-//
-// Don't inherit from TestProperty as its destructor is not virtual.
-class TestProperty {
- public:
- // C'tor. TestProperty does NOT have a default constructor.
- // Always use this constructor (with parameters) to create a
- // TestProperty object.
- TestProperty(const std::string& a_key, const std::string& a_value) :
- key_(a_key), value_(a_value) {
- }
-
- // Gets the user supplied key.
- const char* key() const {
- return key_.c_str();
- }
-
- // Gets the user supplied value.
- const char* value() const {
- return value_.c_str();
- }
-
- // Sets a new value, overriding the one supplied in the constructor.
- void SetValue(const std::string& new_value) {
- value_ = new_value;
- }
-
- private:
- // The key supplied by the user.
- std::string key_;
- // The value supplied by the user.
- std::string value_;
-};
-
-// The result of a single Test. This includes a list of
-// TestPartResults, a list of TestProperties, a count of how many
-// death tests there are in the Test, and how much time it took to run
-// the Test.
-//
-// TestResult is not copyable.
-class GTEST_API_ TestResult {
- public:
- // Creates an empty TestResult.
- TestResult();
-
- // D'tor. Do not inherit from TestResult.
- ~TestResult();
-
- // Gets the number of all test parts. This is the sum of the number
- // of successful test parts and the number of failed test parts.
- int total_part_count() const;
-
- // Returns the number of the test properties.
- int test_property_count() const;
-
- // Returns true iff the test passed (i.e. no test part failed).
- bool Passed() const { return !Failed(); }
-
- // Returns true iff the test failed.
- bool Failed() const;
-
- // Returns true iff the test fatally failed.
- bool HasFatalFailure() const;
-
- // Returns true iff the test has a non-fatal failure.
- bool HasNonfatalFailure() const;
-
- // Returns the elapsed time, in milliseconds.
- TimeInMillis elapsed_time() const { return elapsed_time_; }
-
- // Returns the i-th test part result among all the results. i can range
- // from 0 to test_property_count() - 1. If i is not in that range, aborts
- // the program.
- const TestPartResult& GetTestPartResult(int i) const;
-
- // Returns the i-th test property. i can range from 0 to
- // test_property_count() - 1. If i is not in that range, aborts the
- // program.
- const TestProperty& GetTestProperty(int i) const;
-
- private:
- friend class TestInfo;
- friend class TestCase;
- friend class UnitTest;
- friend class internal::DefaultGlobalTestPartResultReporter;
- friend class internal::ExecDeathTest;
- friend class internal::TestResultAccessor;
- friend class internal::UnitTestImpl;
- friend class internal::WindowsDeathTest;
-
- // Gets the vector of TestPartResults.
- const std::vector<TestPartResult>& test_part_results() const {
- return test_part_results_;
- }
-
- // Gets the vector of TestProperties.
- const std::vector<TestProperty>& test_properties() const {
- return test_properties_;
- }
-
- // Sets the elapsed time.
- void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; }
-
- // Adds a test property to the list. The property is validated and may add
- // a non-fatal failure if invalid (e.g., if it conflicts with reserved
- // key names). If a property is already recorded for the same key, the
- // value will be updated, rather than storing multiple values for the same
- // key. xml_element specifies the element for which the property is being
- // recorded and is used for validation.
- void RecordProperty(const std::string& xml_element,
- const TestProperty& test_property);
-
- // Adds a failure if the key is a reserved attribute of Google Test
- // testcase tags. Returns true if the property is valid.
- // TODO(russr): Validate attribute names are legal and human readable.
- static bool ValidateTestProperty(const std::string& xml_element,
- const TestProperty& test_property);
-
- // Adds a test part result to the list.
- void AddTestPartResult(const TestPartResult& test_part_result);
-
- // Returns the death test count.
- int death_test_count() const { return death_test_count_; }
-
- // Increments the death test count, returning the new count.
- int increment_death_test_count() { return ++death_test_count_; }
-
- // Clears the test part results.
- void ClearTestPartResults();
-
- // Clears the object.
- void Clear();
-
- // Protects mutable state of the property vector and of owned
- // properties, whose values may be updated.
- internal::Mutex test_properites_mutex_;
-
- // The vector of TestPartResults
- std::vector<TestPartResult> test_part_results_;
- // The vector of TestProperties
- std::vector<TestProperty> test_properties_;
- // Running count of death tests.
- int death_test_count_;
- // The elapsed time, in milliseconds.
- TimeInMillis elapsed_time_;
-
- // We disallow copying TestResult.
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestResult);
-}; // class TestResult
-
-// A TestInfo object stores the following information about a test:
-//
-// Test case name
-// Test name
-// Whether the test should be run
-// A function pointer that creates the test object when invoked
-// Test result
-//
-// The constructor of TestInfo registers itself with the UnitTest
-// singleton such that the RUN_ALL_TESTS() macro knows which tests to
-// run.
-class GTEST_API_ TestInfo {
- public:
- // Destructs a TestInfo object. This function is not virtual, so
- // don't inherit from TestInfo.
- ~TestInfo();
-
- // Returns the test case name.
- const char* test_case_name() const { return test_case_name_.c_str(); }
-
- // Returns the test name.
- const char* name() const { return name_.c_str(); }
-
- // Returns the name of the parameter type, or NULL if this is not a typed
- // or a type-parameterized test.
- const char* type_param() const {
- if (type_param_.get() != NULL)
- return type_param_->c_str();
- return NULL;
- }
-
- // Returns the text representation of the value parameter, or NULL if this
- // is not a value-parameterized test.
- const char* value_param() const {
- if (value_param_.get() != NULL)
- return value_param_->c_str();
- return NULL;
- }
-
- // Returns the file name where this test is defined.
- const char* file() const { return location_.file.c_str(); }
-
- // Returns the line where this test is defined.
- int line() const { return location_.line; }
-
- // Returns true if this test should run, that is if the test is not
- // disabled (or it is disabled but the also_run_disabled_tests flag has
- // been specified) and its full name matches the user-specified filter.
- //
- // Google Test allows the user to filter the tests by their full names.
- // The full name of a test Bar in test case Foo is defined as
- // "Foo.Bar". Only the tests that match the filter will run.
- //
- // A filter is a colon-separated list of glob (not regex) patterns,
- // optionally followed by a '-' and a colon-separated list of
- // negative patterns (tests to exclude). A test is run if it
- // matches one of the positive patterns and does not match any of
- // the negative patterns.
- //
- // For example, *A*:Foo.* is a filter that matches any string that
- // contains the character 'A' or starts with "Foo.".
- bool should_run() const { return should_run_; }
-
- // Returns true iff this test will appear in the XML report.
- bool is_reportable() const {
- // For now, the XML report includes all tests matching the filter.
- // In the future, we may trim tests that are excluded because of
- // sharding.
- return matches_filter_;
- }
-
- // Returns the result of the test.
- const TestResult* result() const { return &result_; }
-
- private:
-#if GTEST_HAS_DEATH_TEST
- friend class internal::DefaultDeathTestFactory;
-#endif // GTEST_HAS_DEATH_TEST
- friend class Test;
- friend class TestCase;
- friend class internal::UnitTestImpl;
- friend class internal::StreamingListenerTest;
- friend TestInfo* internal::MakeAndRegisterTestInfo(
- const char* test_case_name,
- const char* name,
- const char* type_param,
- const char* value_param,
- internal::CodeLocation code_location,
- internal::TypeId fixture_class_id,
- Test::SetUpTestCaseFunc set_up_tc,
- Test::TearDownTestCaseFunc tear_down_tc,
- internal::TestFactoryBase* factory);
-
- // Constructs a TestInfo object. The newly constructed instance assumes
- // ownership of the factory object.
- TestInfo(const std::string& test_case_name,
- const std::string& name,
- const char* a_type_param, // NULL if not a type-parameterized test
- const char* a_value_param, // NULL if not a value-parameterized test
- internal::CodeLocation a_code_location,
- internal::TypeId fixture_class_id,
- internal::TestFactoryBase* factory);
-
- // Increments the number of death tests encountered in this test so
- // far.
- int increment_death_test_count() {
- return result_.increment_death_test_count();
- }
-
- // Creates the test object, runs it, records its result, and then
- // deletes it.
- void Run();
-
- static void ClearTestResult(TestInfo* test_info) {
- test_info->result_.Clear();
- }
-
- // These fields are immutable properties of the test.
- const std::string test_case_name_; // Test case name
- const std::string name_; // Test name
- // Name of the parameter type, or NULL if this is not a typed or a
- // type-parameterized test.
- const internal::scoped_ptr<const ::std::string> type_param_;
- // Text representation of the value parameter, or NULL if this is not a
- // value-parameterized test.
- const internal::scoped_ptr<const ::std::string> value_param_;
- internal::CodeLocation location_;
- const internal::TypeId fixture_class_id_; // ID of the test fixture class
- bool should_run_; // True iff this test should run
- bool is_disabled_; // True iff this test is disabled
- bool matches_filter_; // True if this test matches the
- // user-specified filter.
- internal::TestFactoryBase* const factory_; // The factory that creates
- // the test object
-
- // This field is mutable and needs to be reset before running the
- // test for the second time.
- TestResult result_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestInfo);
-};
-
-// A test case, which consists of a vector of TestInfos.
-//
-// TestCase is not copyable.
-class GTEST_API_ TestCase {
- public:
- // Creates a TestCase with the given name.
- //
- // TestCase does NOT have a default constructor. Always use this
- // constructor to create a TestCase object.
- //
- // Arguments:
- //
- // name: name of the test case
- // a_type_param: the name of the test's type parameter, or NULL if
- // this is not a type-parameterized test.
- // set_up_tc: pointer to the function that sets up the test case
- // tear_down_tc: pointer to the function that tears down the test case
- TestCase(const char* name, const char* a_type_param,
- Test::SetUpTestCaseFunc set_up_tc,
- Test::TearDownTestCaseFunc tear_down_tc);
-
- // Destructor of TestCase.
- virtual ~TestCase();
-
- // Gets the name of the TestCase.
- const char* name() const { return name_.c_str(); }
-
- // Returns the name of the parameter type, or NULL if this is not a
- // type-parameterized test case.
- const char* type_param() const {
- if (type_param_.get() != NULL)
- return type_param_->c_str();
- return NULL;
- }
-
- // Returns true if any test in this test case should run.
- bool should_run() const { return should_run_; }
-
- // Gets the number of successful tests in this test case.
- int successful_test_count() const;
-
- // Gets the number of failed tests in this test case.
- int failed_test_count() const;
-
- // Gets the number of disabled tests that will be reported in the XML report.
- int reportable_disabled_test_count() const;
-
- // Gets the number of disabled tests in this test case.
- int disabled_test_count() const;
-
- // Gets the number of tests to be printed in the XML report.
- int reportable_test_count() const;
-
- // Get the number of tests in this test case that should run.
- int test_to_run_count() const;
-
- // Gets the number of all tests in this test case.
- int total_test_count() const;
-
- // Returns true iff the test case passed.
- bool Passed() const { return !Failed(); }
-
- // Returns true iff the test case failed.
- bool Failed() const { return failed_test_count() > 0; }
-
- // Returns the elapsed time, in milliseconds.
- TimeInMillis elapsed_time() const { return elapsed_time_; }
-
- // Returns the i-th test among all the tests. i can range from 0 to
- // total_test_count() - 1. If i is not in that range, returns NULL.
- const TestInfo* GetTestInfo(int i) const;
-
- // Returns the TestResult that holds test properties recorded during
- // execution of SetUpTestCase and TearDownTestCase.
- const TestResult& ad_hoc_test_result() const { return ad_hoc_test_result_; }
-
- private:
- friend class Test;
- friend class internal::UnitTestImpl;
-
- // Gets the (mutable) vector of TestInfos in this TestCase.
- std::vector<TestInfo*>& test_info_list() { return test_info_list_; }
-
- // Gets the (immutable) vector of TestInfos in this TestCase.
- const std::vector<TestInfo*>& test_info_list() const {
- return test_info_list_;
- }
-
- // Returns the i-th test among all the tests. i can range from 0 to
- // total_test_count() - 1. If i is not in that range, returns NULL.
- TestInfo* GetMutableTestInfo(int i);
-
- // Sets the should_run member.
- void set_should_run(bool should) { should_run_ = should; }
-
- // Adds a TestInfo to this test case. Will delete the TestInfo upon
- // destruction of the TestCase object.
- void AddTestInfo(TestInfo * test_info);
-
- // Clears the results of all tests in this test case.
- void ClearResult();
-
- // Clears the results of all tests in the given test case.
- static void ClearTestCaseResult(TestCase* test_case) {
- test_case->ClearResult();
- }
-
- // Runs every test in this TestCase.
- void Run();
-
- // Runs SetUpTestCase() for this TestCase. This wrapper is needed
- // for catching exceptions thrown from SetUpTestCase().
- void RunSetUpTestCase() { (*set_up_tc_)(); }
-
- // Runs TearDownTestCase() for this TestCase. This wrapper is
- // needed for catching exceptions thrown from TearDownTestCase().
- void RunTearDownTestCase() { (*tear_down_tc_)(); }
-
- // Returns true iff test passed.
- static bool TestPassed(const TestInfo* test_info) {
- return test_info->should_run() && test_info->result()->Passed();
- }
-
- // Returns true iff test failed.
- static bool TestFailed(const TestInfo* test_info) {
- return test_info->should_run() && test_info->result()->Failed();
- }
-
- // Returns true iff the test is disabled and will be reported in the XML
- // report.
- static bool TestReportableDisabled(const TestInfo* test_info) {
- return test_info->is_reportable() && test_info->is_disabled_;
- }
-
- // Returns true iff test is disabled.
- static bool TestDisabled(const TestInfo* test_info) {
- return test_info->is_disabled_;
- }
-
- // Returns true iff this test will appear in the XML report.
- static bool TestReportable(const TestInfo* test_info) {
- return test_info->is_reportable();
- }
-
- // Returns true if the given test should run.
- static bool ShouldRunTest(const TestInfo* test_info) {
- return test_info->should_run();
- }
-
- // Shuffles the tests in this test case.
- void ShuffleTests(internal::Random* random);
-
- // Restores the test order to before the first shuffle.
- void UnshuffleTests();
-
- // Name of the test case.
- std::string name_;
- // Name of the parameter type, or NULL if this is not a typed or a
- // type-parameterized test.
- const internal::scoped_ptr<const ::std::string> type_param_;
- // The vector of TestInfos in their original order. It owns the
- // elements in the vector.
- std::vector<TestInfo*> test_info_list_;
- // Provides a level of indirection for the test list to allow easy
- // shuffling and restoring the test order. The i-th element in this
- // vector is the index of the i-th test in the shuffled test list.
- std::vector<int> test_indices_;
- // Pointer to the function that sets up the test case.
- Test::SetUpTestCaseFunc set_up_tc_;
- // Pointer to the function that tears down the test case.
- Test::TearDownTestCaseFunc tear_down_tc_;
- // True iff any test in this test case should run.
- bool should_run_;
- // Elapsed time, in milliseconds.
- TimeInMillis elapsed_time_;
- // Holds test properties recorded during execution of SetUpTestCase and
- // TearDownTestCase.
- TestResult ad_hoc_test_result_;
-
- // We disallow copying TestCases.
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestCase);
-};
-
-// An Environment object is capable of setting up and tearing down an
-// environment. You should subclass this to define your own
-// environment(s).
-//
-// An Environment object does the set-up and tear-down in virtual
-// methods SetUp() and TearDown() instead of the constructor and the
-// destructor, as:
-//
-// 1. You cannot safely throw from a destructor. This is a problem
-// as in some cases Google Test is used where exceptions are enabled, and
-// we may want to implement ASSERT_* using exceptions where they are
-// available.
-// 2. You cannot use ASSERT_* directly in a constructor or
-// destructor.
-class Environment {
- public:
- // The d'tor is virtual as we need to subclass Environment.
- virtual ~Environment() {}
-
- // Override this to define how to set up the environment.
- virtual void SetUp() {}
-
- // Override this to define how to tear down the environment.
- virtual void TearDown() {}
- private:
- // If you see an error about overriding the following function or
- // about it being private, you have mis-spelled SetUp() as Setup().
- struct Setup_should_be_spelled_SetUp {};
- virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; }
-};
-
-// The interface for tracing execution of tests. The methods are organized in
-// the order the corresponding events are fired.
-class TestEventListener {
- public:
- virtual ~TestEventListener() {}
-
- // Fired before any test activity starts.
- virtual void OnTestProgramStart(const UnitTest& unit_test) = 0;
-
- // Fired before each iteration of tests starts. There may be more than
- // one iteration if GTEST_FLAG(repeat) is set. iteration is the iteration
- // index, starting from 0.
- virtual void OnTestIterationStart(const UnitTest& unit_test,
- int iteration) = 0;
-
- // Fired before environment set-up for each iteration of tests starts.
- virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test) = 0;
-
- // Fired after environment set-up for each iteration of tests ends.
- virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test) = 0;
-
- // Fired before the test case starts.
- virtual void OnTestCaseStart(const TestCase& test_case) = 0;
-
- // Fired before the test starts.
- virtual void OnTestStart(const TestInfo& test_info) = 0;
-
- // Fired after a failed assertion or a SUCCEED() invocation.
- virtual void OnTestPartResult(const TestPartResult& test_part_result) = 0;
-
- // Fired after the test ends.
- virtual void OnTestEnd(const TestInfo& test_info) = 0;
-
- // Fired after the test case ends.
- virtual void OnTestCaseEnd(const TestCase& test_case) = 0;
-
- // Fired before environment tear-down for each iteration of tests starts.
- virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test) = 0;
-
- // Fired after environment tear-down for each iteration of tests ends.
- virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) = 0;
-
- // Fired after each iteration of tests finishes.
- virtual void OnTestIterationEnd(const UnitTest& unit_test,
- int iteration) = 0;
-
- // Fired after all test activities have ended.
- virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0;
-};
-
-// The convenience class for users who need to override just one or two
-// methods and are not concerned that a possible change to a signature of
-// the methods they override will not be caught during the build. For
-// comments about each method please see the definition of TestEventListener
-// above.
-class EmptyTestEventListener : public TestEventListener {
- public:
- virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {}
- virtual void OnTestIterationStart(const UnitTest& /*unit_test*/,
- int /*iteration*/) {}
- virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {}
- virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {}
- virtual void OnTestCaseStart(const TestCase& /*test_case*/) {}
- virtual void OnTestStart(const TestInfo& /*test_info*/) {}
- virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {}
- virtual void OnTestEnd(const TestInfo& /*test_info*/) {}
- virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {}
- virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {}
- virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {}
- virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/,
- int /*iteration*/) {}
- virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {}
-};
-
-// TestEventListeners lets users add listeners to track events in Google Test.
-class GTEST_API_ TestEventListeners {
- public:
- TestEventListeners();
- ~TestEventListeners();
-
- // Appends an event listener to the end of the list. Google Test assumes
- // the ownership of the listener (i.e. it will delete the listener when
- // the test program finishes).
- void Append(TestEventListener* listener);
-
- // Removes the given event listener from the list and returns it. It then
- // becomes the caller's responsibility to delete the listener. Returns
- // NULL if the listener is not found in the list.
- TestEventListener* Release(TestEventListener* listener);
-
- // Returns the standard listener responsible for the default console
- // output. Can be removed from the listeners list to shut down default
- // console output. Note that removing this object from the listener list
- // with Release transfers its ownership to the caller and makes this
- // function return NULL the next time.
- TestEventListener* default_result_printer() const {
- return default_result_printer_;
- }
-
- // Returns the standard listener responsible for the default XML output
- // controlled by the --gtest_output=xml flag. Can be removed from the
- // listeners list by users who want to shut down the default XML output
- // controlled by this flag and substitute it with custom one. Note that
- // removing this object from the listener list with Release transfers its
- // ownership to the caller and makes this function return NULL the next
- // time.
- TestEventListener* default_xml_generator() const {
- return default_xml_generator_;
- }
-
- private:
- friend class TestCase;
- friend class TestInfo;
- friend class internal::DefaultGlobalTestPartResultReporter;
- friend class internal::NoExecDeathTest;
- friend class internal::TestEventListenersAccessor;
- friend class internal::UnitTestImpl;
-
- // Returns repeater that broadcasts the TestEventListener events to all
- // subscribers.
- TestEventListener* repeater();
-
- // Sets the default_result_printer attribute to the provided listener.
- // The listener is also added to the listener list and previous
- // default_result_printer is removed from it and deleted. The listener can
- // also be NULL in which case it will not be added to the list. Does
- // nothing if the previous and the current listener objects are the same.
- void SetDefaultResultPrinter(TestEventListener* listener);
-
- // Sets the default_xml_generator attribute to the provided listener. The
- // listener is also added to the listener list and previous
- // default_xml_generator is removed from it and deleted. The listener can
- // also be NULL in which case it will not be added to the list. Does
- // nothing if the previous and the current listener objects are the same.
- void SetDefaultXmlGenerator(TestEventListener* listener);
-
- // Controls whether events will be forwarded by the repeater to the
- // listeners in the list.
- bool EventForwardingEnabled() const;
- void SuppressEventForwarding();
-
- // The actual list of listeners.
- internal::TestEventRepeater* repeater_;
- // Listener responsible for the standard result output.
- TestEventListener* default_result_printer_;
- // Listener responsible for the creation of the XML output file.
- TestEventListener* default_xml_generator_;
-
- // We disallow copying TestEventListeners.
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventListeners);
-};
-
-// A UnitTest consists of a vector of TestCases.
-//
-// This is a singleton class. The only instance of UnitTest is
-// created when UnitTest::GetInstance() is first called. This
-// instance is never deleted.
-//
-// UnitTest is not copyable.
-//
-// This class is thread-safe as long as the methods are called
-// according to their specification.
-class GTEST_API_ UnitTest {
- public:
- // Gets the singleton UnitTest object. The first time this method
- // is called, a UnitTest object is constructed and returned.
- // Consecutive calls will return the same object.
- static UnitTest* GetInstance();
-
- // Runs all tests in this UnitTest object and prints the result.
- // Returns 0 if successful, or 1 otherwise.
- //
- // This method can only be called from the main thread.
- //
- // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
- int Run() GTEST_MUST_USE_RESULT_;
-
- // Returns the working directory when the first TEST() or TEST_F()
- // was executed. The UnitTest object owns the string.
- const char* original_working_dir() const;
-
- // Returns the TestCase object for the test that's currently running,
- // or NULL if no test is running.
- const TestCase* current_test_case() const
- GTEST_LOCK_EXCLUDED_(mutex_);
-
- // Returns the TestInfo object for the test that's currently running,
- // or NULL if no test is running.
- const TestInfo* current_test_info() const
- GTEST_LOCK_EXCLUDED_(mutex_);
-
- // Returns the random seed used at the start of the current test run.
- int random_seed() const;
-
-#if GTEST_HAS_PARAM_TEST
- // Returns the ParameterizedTestCaseRegistry object used to keep track of
- // value-parameterized tests and instantiate and register them.
- //
- // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
- internal::ParameterizedTestCaseRegistry& parameterized_test_registry()
- GTEST_LOCK_EXCLUDED_(mutex_);
-#endif // GTEST_HAS_PARAM_TEST
-
- // Gets the number of successful test cases.
- int successful_test_case_count() const;
-
- // Gets the number of failed test cases.
- int failed_test_case_count() const;
-
- // Gets the number of all test cases.
- int total_test_case_count() const;
-
- // Gets the number of all test cases that contain at least one test
- // that should run.
- int test_case_to_run_count() const;
-
- // Gets the number of successful tests.
- int successful_test_count() const;
-
- // Gets the number of failed tests.
- int failed_test_count() const;
-
- // Gets the number of disabled tests that will be reported in the XML report.
- int reportable_disabled_test_count() const;
-
- // Gets the number of disabled tests.
- int disabled_test_count() const;
-
- // Gets the number of tests to be printed in the XML report.
- int reportable_test_count() const;
-
- // Gets the number of all tests.
- int total_test_count() const;
-
- // Gets the number of tests that should run.
- int test_to_run_count() const;
-
- // Gets the time of the test program start, in ms from the start of the
- // UNIX epoch.
- TimeInMillis start_timestamp() const;
-
- // Gets the elapsed time, in milliseconds.
- TimeInMillis elapsed_time() const;
-
- // Returns true iff the unit test passed (i.e. all test cases passed).
- bool Passed() const;
-
- // Returns true iff the unit test failed (i.e. some test case failed
- // or something outside of all tests failed).
- bool Failed() const;
-
- // Gets the i-th test case among all the test cases. i can range from 0 to
- // total_test_case_count() - 1. If i is not in that range, returns NULL.
- const TestCase* GetTestCase(int i) const;
-
- // Returns the TestResult containing information on test failures and
- // properties logged outside of individual test cases.
- const TestResult& ad_hoc_test_result() const;
-
- // Returns the list of event listeners that can be used to track events
- // inside Google Test.
- TestEventListeners& listeners();
-
- private:
- // Registers and returns a global test environment. When a test
- // program is run, all global test environments will be set-up in
- // the order they were registered. After all tests in the program
- // have finished, all global test environments will be torn-down in
- // the *reverse* order they were registered.
- //
- // The UnitTest object takes ownership of the given environment.
- //
- // This method can only be called from the main thread.
- Environment* AddEnvironment(Environment* env);
-
- // Adds a TestPartResult to the current TestResult object. All
- // Google Test assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc)
- // eventually call this to report their results. The user code
- // should use the assertion macros instead of calling this directly.
- void AddTestPartResult(TestPartResult::Type result_type,
- const char* file_name,
- int line_number,
- const std::string& message,
- const std::string& os_stack_trace)
- GTEST_LOCK_EXCLUDED_(mutex_);
-
- // Adds a TestProperty to the current TestResult object when invoked from
- // inside a test, to current TestCase's ad_hoc_test_result_ when invoked
- // from SetUpTestCase or TearDownTestCase, or to the global property set
- // when invoked elsewhere. If the result already contains a property with
- // the same key, the value will be updated.
- void RecordProperty(const std::string& key, const std::string& value);
-
- // Gets the i-th test case among all the test cases. i can range from 0 to
- // total_test_case_count() - 1. If i is not in that range, returns NULL.
- TestCase* GetMutableTestCase(int i);
-
- // Accessors for the implementation object.
- internal::UnitTestImpl* impl() { return impl_; }
- const internal::UnitTestImpl* impl() const { return impl_; }
-
- // These classes and funcions are friends as they need to access private
- // members of UnitTest.
- friend class Test;
- friend class internal::AssertHelper;
- friend class internal::ScopedTrace;
- friend class internal::StreamingListenerTest;
- friend class internal::UnitTestRecordPropertyTestHelper;
- friend Environment* AddGlobalTestEnvironment(Environment* env);
- friend internal::UnitTestImpl* internal::GetUnitTestImpl();
- friend void internal::ReportFailureInUnknownLocation(
- TestPartResult::Type result_type,
- const std::string& message);
-
- // Creates an empty UnitTest.
- UnitTest();
-
- // D'tor
- virtual ~UnitTest();
-
- // Pushes a trace defined by SCOPED_TRACE() on to the per-thread
- // Google Test trace stack.
- void PushGTestTrace(const internal::TraceInfo& trace)
- GTEST_LOCK_EXCLUDED_(mutex_);
-
- // Pops a trace from the per-thread Google Test trace stack.
- void PopGTestTrace()
- GTEST_LOCK_EXCLUDED_(mutex_);
-
- // Protects mutable state in *impl_. This is mutable as some const
- // methods need to lock it too.
- mutable internal::Mutex mutex_;
-
- // Opaque implementation object. This field is never changed once
- // the object is constructed. We don't mark it as const here, as
- // doing so will cause a warning in the constructor of UnitTest.
- // Mutable state in *impl_ is protected by mutex_.
- internal::UnitTestImpl* impl_;
-
- // We disallow copying UnitTest.
- GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTest);
-};
-
-// A convenient wrapper for adding an environment for the test
-// program.
-//
-// You should call this before RUN_ALL_TESTS() is called, probably in
-// main(). If you use gtest_main, you need to call this before main()
-// starts for it to take effect. For example, you can define a global
-// variable like this:
-//
-// testing::Environment* const foo_env =
-// testing::AddGlobalTestEnvironment(new FooEnvironment);
-//
-// However, we strongly recommend you to write your own main() and
-// call AddGlobalTestEnvironment() there, as relying on initialization
-// of global variables makes the code harder to read and may cause
-// problems when you register multiple environments from different
-// translation units and the environments have dependencies among them
-// (remember that the compiler doesn't guarantee the order in which
-// global variables from different translation units are initialized).
-inline Environment* AddGlobalTestEnvironment(Environment* env) {
- return UnitTest::GetInstance()->AddEnvironment(env);
-}
-
-// Initializes Google Test. This must be called before calling
-// RUN_ALL_TESTS(). In particular, it parses a command line for the
-// flags that Google Test recognizes. Whenever a Google Test flag is
-// seen, it is removed from argv, and *argc is decremented.
-//
-// No value is returned. Instead, the Google Test flag variables are
-// updated.
-//
-// Calling the function for the second time has no user-visible effect.
-GTEST_API_ void InitGoogleTest(int* argc, char** argv);
-
-// This overloaded version can be used in Windows programs compiled in
-// UNICODE mode.
-GTEST_API_ void InitGoogleTest(int* argc, wchar_t** argv);
-
-namespace internal {
-
-// Separate the error generating code from the code path to reduce the stack
-// frame size of CmpHelperEQ. This helps reduce the overhead of some sanitizers
-// when calling EXPECT_* in a tight loop.
-template <typename T1, typename T2>
-AssertionResult CmpHelperEQFailure(const char* lhs_expression,
- const char* rhs_expression,
- const T1& lhs, const T2& rhs) {
- return EqFailure(lhs_expression,
- rhs_expression,
- FormatForComparisonFailureMessage(lhs, rhs),
- FormatForComparisonFailureMessage(rhs, lhs),
- false);
-}
-
-// The helper function for {ASSERT|EXPECT}_EQ.
-template <typename T1, typename T2>
-AssertionResult CmpHelperEQ(const char* lhs_expression,
- const char* rhs_expression,
- const T1& lhs,
- const T2& rhs) {
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4389 /* signed/unsigned mismatch */)
- if (lhs == rhs) {
- return AssertionSuccess();
- }
-GTEST_DISABLE_MSC_WARNINGS_POP_()
-
- return CmpHelperEQFailure(lhs_expression, rhs_expression, lhs, rhs);
-}
-
-// With this overloaded version, we allow anonymous enums to be used
-// in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous enums
-// can be implicitly cast to BiggestInt.
-GTEST_API_ AssertionResult CmpHelperEQ(const char* lhs_expression,
- const char* rhs_expression,
- BiggestInt lhs,
- BiggestInt rhs);
-
-// The helper class for {ASSERT|EXPECT}_EQ. The template argument
-// lhs_is_null_literal is true iff the first argument to ASSERT_EQ()
-// is a null pointer literal. The following default implementation is
-// for lhs_is_null_literal being false.
-template <bool lhs_is_null_literal>
-class EqHelper {
- public:
- // This templatized version is for the general case.
- template <typename T1, typename T2>
- static AssertionResult Compare(const char* lhs_expression,
- const char* rhs_expression,
- const T1& lhs,
- const T2& rhs) {
- return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
- }
-
- // With this overloaded version, we allow anonymous enums to be used
- // in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous
- // enums can be implicitly cast to BiggestInt.
- //
- // Even though its body looks the same as the above version, we
- // cannot merge the two, as it will make anonymous enums unhappy.
- static AssertionResult Compare(const char* lhs_expression,
- const char* rhs_expression,
- BiggestInt lhs,
- BiggestInt rhs) {
- return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
- }
-};
-
-// This specialization is used when the first argument to ASSERT_EQ()
-// is a null pointer literal, like NULL, false, or 0.
-template <>
-class EqHelper<true> {
- public:
- // We define two overloaded versions of Compare(). The first
- // version will be picked when the second argument to ASSERT_EQ() is
- // NOT a pointer, e.g. ASSERT_EQ(0, AnIntFunction()) or
- // EXPECT_EQ(false, a_bool).
- template <typename T1, typename T2>
- static AssertionResult Compare(
- const char* lhs_expression,
- const char* rhs_expression,
- const T1& lhs,
- const T2& rhs,
- // The following line prevents this overload from being considered if T2
- // is not a pointer type. We need this because ASSERT_EQ(NULL, my_ptr)
- // expands to Compare("", "", NULL, my_ptr), which requires a conversion
- // to match the Secret* in the other overload, which would otherwise make
- // this template match better.
- typename EnableIf<!is_pointer<T2>::value>::type* = 0) {
- return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
- }
-
- // This version will be picked when the second argument to ASSERT_EQ() is a
- // pointer, e.g. ASSERT_EQ(NULL, a_pointer).
- template <typename T>
- static AssertionResult Compare(
- const char* lhs_expression,
- const char* rhs_expression,
- // We used to have a second template parameter instead of Secret*. That
- // template parameter would deduce to 'long', making this a better match
- // than the first overload even without the first overload's EnableIf.
- // Unfortunately, gcc with -Wconversion-null warns when "passing NULL to
- // non-pointer argument" (even a deduced integral argument), so the old
- // implementation caused warnings in user code.
- Secret* /* lhs (NULL) */,
- T* rhs) {
- // We already know that 'lhs' is a null pointer.
- return CmpHelperEQ(lhs_expression, rhs_expression,
- static_cast<T*>(NULL), rhs);
- }
-};
-
-// Separate the error generating code from the code path to reduce the stack
-// frame size of CmpHelperOP. This helps reduce the overhead of some sanitizers
-// when calling EXPECT_OP in a tight loop.
-template <typename T1, typename T2>
-AssertionResult CmpHelperOpFailure(const char* expr1, const char* expr2,
- const T1& val1, const T2& val2,
- const char* op) {
- return AssertionFailure()
- << "Expected: (" << expr1 << ") " << op << " (" << expr2
- << "), actual: " << FormatForComparisonFailureMessage(val1, val2)
- << " vs " << FormatForComparisonFailureMessage(val2, val1);
-}
-
-// A macro for implementing the helper functions needed to implement
-// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste
-// of similar code.
-//
-// For each templatized helper function, we also define an overloaded
-// version for BiggestInt in order to reduce code bloat and allow
-// anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled
-// with gcc 4.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-
-#define GTEST_IMPL_CMP_HELPER_(op_name, op)\
-template <typename T1, typename T2>\
-AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \
- const T1& val1, const T2& val2) {\
- if (val1 op val2) {\
- return AssertionSuccess();\
- } else {\
- return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\
- }\
-}\
-GTEST_API_ AssertionResult CmpHelper##op_name(\
- const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-
-// Implements the helper function for {ASSERT|EXPECT}_NE
-GTEST_IMPL_CMP_HELPER_(NE, !=);
-// Implements the helper function for {ASSERT|EXPECT}_LE
-GTEST_IMPL_CMP_HELPER_(LE, <=);
-// Implements the helper function for {ASSERT|EXPECT}_LT
-GTEST_IMPL_CMP_HELPER_(LT, <);
-// Implements the helper function for {ASSERT|EXPECT}_GE
-GTEST_IMPL_CMP_HELPER_(GE, >=);
-// Implements the helper function for {ASSERT|EXPECT}_GT
-GTEST_IMPL_CMP_HELPER_(GT, >);
-
-#undef GTEST_IMPL_CMP_HELPER_
-
-// The helper function for {ASSERT|EXPECT}_STREQ.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression,
- const char* s2_expression,
- const char* s1,
- const char* s2);
-
-// The helper function for {ASSERT|EXPECT}_STRCASEEQ.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression,
- const char* s2_expression,
- const char* s1,
- const char* s2);
-
-// The helper function for {ASSERT|EXPECT}_STRNE.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression,
- const char* s2_expression,
- const char* s1,
- const char* s2);
-
-// The helper function for {ASSERT|EXPECT}_STRCASENE.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression,
- const char* s2_expression,
- const char* s1,
- const char* s2);
-
-
-// Helper function for *_STREQ on wide strings.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression,
- const char* s2_expression,
- const wchar_t* s1,
- const wchar_t* s2);
-
-// Helper function for *_STRNE on wide strings.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression,
- const char* s2_expression,
- const wchar_t* s1,
- const wchar_t* s2);
-
-} // namespace internal
-
-// IsSubstring() and IsNotSubstring() are intended to be used as the
-// first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by
-// themselves. They check whether needle is a substring of haystack
-// (NULL is considered a substring of itself only), and return an
-// appropriate error message when they fail.
-//
-// The {needle,haystack}_expr arguments are the stringified
-// expressions that generated the two real arguments.
-GTEST_API_ AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const char* needle, const char* haystack);
-GTEST_API_ AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const wchar_t* needle, const wchar_t* haystack);
-GTEST_API_ AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const char* needle, const char* haystack);
-GTEST_API_ AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const wchar_t* needle, const wchar_t* haystack);
-GTEST_API_ AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::string& needle, const ::std::string& haystack);
-GTEST_API_ AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::string& needle, const ::std::string& haystack);
-
-#if GTEST_HAS_STD_WSTRING
-GTEST_API_ AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::wstring& needle, const ::std::wstring& haystack);
-GTEST_API_ AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::wstring& needle, const ::std::wstring& haystack);
-#endif // GTEST_HAS_STD_WSTRING
-
-namespace internal {
-
-// Helper template function for comparing floating-points.
-//
-// Template parameter:
-//
-// RawType: the raw floating-point type (either float or double)
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-template <typename RawType>
-AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression,
- const char* rhs_expression,
- RawType lhs_value,
- RawType rhs_value) {
- const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value);
-
- if (lhs.AlmostEquals(rhs)) {
- return AssertionSuccess();
- }
-
- ::std::stringstream lhs_ss;
- lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
- << lhs_value;
-
- ::std::stringstream rhs_ss;
- rhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
- << rhs_value;
-
- return EqFailure(lhs_expression,
- rhs_expression,
- StringStreamToString(&lhs_ss),
- StringStreamToString(&rhs_ss),
- false);
-}
-
-// Helper function for implementing ASSERT_NEAR.
-//
-// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
-GTEST_API_ AssertionResult DoubleNearPredFormat(const char* expr1,
- const char* expr2,
- const char* abs_error_expr,
- double val1,
- double val2,
- double abs_error);
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-// A class that enables one to stream messages to assertion macros
-class GTEST_API_ AssertHelper {
- public:
- // Constructor.
- AssertHelper(TestPartResult::Type type,
- const char* file,
- int line,
- const char* message);
- ~AssertHelper();
-
- // Message assignment is a semantic trick to enable assertion
- // streaming; see the GTEST_MESSAGE_ macro below.
- void operator=(const Message& message) const;
-
- private:
- // We put our data in a struct so that the size of the AssertHelper class can
- // be as small as possible. This is important because gcc is incapable of
- // re-using stack space even for temporary variables, so every EXPECT_EQ
- // reserves stack space for another AssertHelper.
- struct AssertHelperData {
- AssertHelperData(TestPartResult::Type t,
- const char* srcfile,
- int line_num,
- const char* msg)
- : type(t), file(srcfile), line(line_num), message(msg) { }
-
- TestPartResult::Type const type;
- const char* const file;
- int const line;
- std::string const message;
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelperData);
- };
-
- AssertHelperData* const data_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelper);
-};
-
-} // namespace internal
-
-#if GTEST_HAS_PARAM_TEST
-// The pure interface class that all value-parameterized tests inherit from.
-// A value-parameterized class must inherit from both ::testing::Test and
-// ::testing::WithParamInterface. In most cases that just means inheriting
-// from ::testing::TestWithParam, but more complicated test hierarchies
-// may need to inherit from Test and WithParamInterface at different levels.
-//
-// This interface has support for accessing the test parameter value via
-// the GetParam() method.
-//
-// Use it with one of the parameter generator defining functions, like Range(),
-// Values(), ValuesIn(), Bool(), and Combine().
-//
-// class FooTest : public ::testing::TestWithParam<int> {
-// protected:
-// FooTest() {
-// // Can use GetParam() here.
-// }
-// virtual ~FooTest() {
-// // Can use GetParam() here.
-// }
-// virtual void SetUp() {
-// // Can use GetParam() here.
-// }
-// virtual void TearDown {
-// // Can use GetParam() here.
-// }
-// };
-// TEST_P(FooTest, DoesBar) {
-// // Can use GetParam() method here.
-// Foo foo;
-// ASSERT_TRUE(foo.DoesBar(GetParam()));
-// }
-// INSTANTIATE_TEST_CASE_P(OneToTenRange, FooTest, ::testing::Range(1, 10));
-
-template <typename T>
-class WithParamInterface {
- public:
- typedef T ParamType;
- virtual ~WithParamInterface() {}
-
- // The current parameter value. Is also available in the test fixture's
- // constructor. This member function is non-static, even though it only
- // references static data, to reduce the opportunity for incorrect uses
- // like writing 'WithParamInterface<bool>::GetParam()' for a test that
- // uses a fixture whose parameter type is int.
- const ParamType& GetParam() const {
- GTEST_CHECK_(parameter_ != NULL)
- << "GetParam() can only be called inside a value-parameterized test "
- << "-- did you intend to write TEST_P instead of TEST_F?";
- return *parameter_;
- }
-
- private:
- // Sets parameter value. The caller is responsible for making sure the value
- // remains alive and unchanged throughout the current test.
- static void SetParam(const ParamType* parameter) {
- parameter_ = parameter;
- }
-
- // Static value used for accessing parameter during a test lifetime.
- static const ParamType* parameter_;
-
- // TestClass must be a subclass of WithParamInterface<T> and Test.
- template <class TestClass> friend class internal::ParameterizedTestFactory;
-};
-
-template <typename T>
-const T* WithParamInterface<T>::parameter_ = NULL;
-
-// Most value-parameterized classes can ignore the existence of
-// WithParamInterface, and can just inherit from ::testing::TestWithParam.
-
-template <typename T>
-class TestWithParam : public Test, public WithParamInterface<T> {
-};
-
-#endif // GTEST_HAS_PARAM_TEST
-
-// Macros for indicating success/failure in test code.
-
-// ADD_FAILURE unconditionally adds a failure to the current test.
-// SUCCEED generates a success - it doesn't automatically make the
-// current test successful, as a test is only successful when it has
-// no failure.
-//
-// EXPECT_* verifies that a certain condition is satisfied. If not,
-// it behaves like ADD_FAILURE. In particular:
-//
-// EXPECT_TRUE verifies that a Boolean condition is true.
-// EXPECT_FALSE verifies that a Boolean condition is false.
-//
-// FAIL and ASSERT_* are similar to ADD_FAILURE and EXPECT_*, except
-// that they will also abort the current function on failure. People
-// usually want the fail-fast behavior of FAIL and ASSERT_*, but those
-// writing data-driven tests often find themselves using ADD_FAILURE
-// and EXPECT_* more.
-
-// Generates a nonfatal failure with a generic message.
-#define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed")
-
-// Generates a nonfatal failure at the given source file location with
-// a generic message.
-#define ADD_FAILURE_AT(file, line) \
- GTEST_MESSAGE_AT_(file, line, "Failed", \
- ::testing::TestPartResult::kNonFatalFailure)
-
-// Generates a fatal failure with a generic message.
-#define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed")
-
-// Define this macro to 1 to omit the definition of FAIL(), which is a
-// generic name and clashes with some other libraries.
-#if !GTEST_DONT_DEFINE_FAIL
-# define FAIL() GTEST_FAIL()
-#endif
-
-// Generates a success with a generic message.
-#define GTEST_SUCCEED() GTEST_SUCCESS_("Succeeded")
-
-// Define this macro to 1 to omit the definition of SUCCEED(), which
-// is a generic name and clashes with some other libraries.
-#if !GTEST_DONT_DEFINE_SUCCEED
-# define SUCCEED() GTEST_SUCCEED()
-#endif
-
-// Macros for testing exceptions.
-//
-// * {ASSERT|EXPECT}_THROW(statement, expected_exception):
-// Tests that the statement throws the expected exception.
-// * {ASSERT|EXPECT}_NO_THROW(statement):
-// Tests that the statement doesn't throw any exception.
-// * {ASSERT|EXPECT}_ANY_THROW(statement):
-// Tests that the statement throws an exception.
-
-#define EXPECT_THROW(statement, expected_exception) \
- GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_NO_THROW(statement) \
- GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_ANY_THROW(statement) \
- GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_THROW(statement, expected_exception) \
- GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_)
-#define ASSERT_NO_THROW(statement) \
- GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_)
-#define ASSERT_ANY_THROW(statement) \
- GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_)
-
-// Boolean assertions. Condition can be either a Boolean expression or an
-// AssertionResult. For more information on how to use AssertionResult with
-// these macros see comments on that class.
-#define EXPECT_TRUE(condition) \
- GTEST_TEST_BOOLEAN_((condition), #condition, false, true, \
- GTEST_NONFATAL_FAILURE_)
-#define EXPECT_FALSE(condition) \
- GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
- GTEST_NONFATAL_FAILURE_)
-#define ASSERT_TRUE(condition) \
- GTEST_TEST_BOOLEAN_((condition), #condition, false, true, \
- GTEST_FATAL_FAILURE_)
-#define ASSERT_FALSE(condition) \
- GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
- GTEST_FATAL_FAILURE_)
-
-// Includes the auto-generated header that implements a family of
-// generic predicate assertion macros.
-#include "gtest/gtest_pred_impl.h"
-
-// Macros for testing equalities and inequalities.
-//
-// * {ASSERT|EXPECT}_EQ(v1, v2): Tests that v1 == v2
-// * {ASSERT|EXPECT}_NE(v1, v2): Tests that v1 != v2
-// * {ASSERT|EXPECT}_LT(v1, v2): Tests that v1 < v2
-// * {ASSERT|EXPECT}_LE(v1, v2): Tests that v1 <= v2
-// * {ASSERT|EXPECT}_GT(v1, v2): Tests that v1 > v2
-// * {ASSERT|EXPECT}_GE(v1, v2): Tests that v1 >= v2
-//
-// When they are not, Google Test prints both the tested expressions and
-// their actual values. The values must be compatible built-in types,
-// or you will get a compiler error. By "compatible" we mean that the
-// values can be compared by the respective operator.
-//
-// Note:
-//
-// 1. It is possible to make a user-defined type work with
-// {ASSERT|EXPECT}_??(), but that requires overloading the
-// comparison operators and is thus discouraged by the Google C++
-// Usage Guide. Therefore, you are advised to use the
-// {ASSERT|EXPECT}_TRUE() macro to assert that two objects are
-// equal.
-//
-// 2. The {ASSERT|EXPECT}_??() macros do pointer comparisons on
-// pointers (in particular, C strings). Therefore, if you use it
-// with two C strings, you are testing how their locations in memory
-// are related, not how their content is related. To compare two C
-// strings by content, use {ASSERT|EXPECT}_STR*().
-//
-// 3. {ASSERT|EXPECT}_EQ(v1, v2) is preferred to
-// {ASSERT|EXPECT}_TRUE(v1 == v2), as the former tells you
-// what the actual value is when it fails, and similarly for the
-// other comparisons.
-//
-// 4. Do not depend on the order in which {ASSERT|EXPECT}_??()
-// evaluate their arguments, which is undefined.
-//
-// 5. These macros evaluate their arguments exactly once.
-//
-// Examples:
-//
-// EXPECT_NE(5, Foo());
-// EXPECT_EQ(NULL, a_pointer);
-// ASSERT_LT(i, array_size);
-// ASSERT_GT(records.size(), 0) << "There is no record left.";
-
-#define EXPECT_EQ(val1, val2) \
- EXPECT_PRED_FORMAT2(::testing::internal:: \
- EqHelper<GTEST_IS_NULL_LITERAL_(val1)>::Compare, \
- val1, val2)
-#define EXPECT_NE(val1, val2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
-#define EXPECT_LE(val1, val2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
-#define EXPECT_LT(val1, val2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
-#define EXPECT_GE(val1, val2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
-#define EXPECT_GT(val1, val2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
-
-#define GTEST_ASSERT_EQ(val1, val2) \
- ASSERT_PRED_FORMAT2(::testing::internal:: \
- EqHelper<GTEST_IS_NULL_LITERAL_(val1)>::Compare, \
- val1, val2)
-#define GTEST_ASSERT_NE(val1, val2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
-#define GTEST_ASSERT_LE(val1, val2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
-#define GTEST_ASSERT_LT(val1, val2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
-#define GTEST_ASSERT_GE(val1, val2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
-#define GTEST_ASSERT_GT(val1, val2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
-
-// Define macro GTEST_DONT_DEFINE_ASSERT_XY to 1 to omit the definition of
-// ASSERT_XY(), which clashes with some users' own code.
-
-#if !GTEST_DONT_DEFINE_ASSERT_EQ
-# define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_NE
-# define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_LE
-# define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_LT
-# define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_GE
-# define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2)
-#endif
-
-#if !GTEST_DONT_DEFINE_ASSERT_GT
-# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2)
-#endif
-
-// C-string Comparisons. All tests treat NULL and any non-NULL string
-// as different. Two NULLs are equal.
-//
-// * {ASSERT|EXPECT}_STREQ(s1, s2): Tests that s1 == s2
-// * {ASSERT|EXPECT}_STRNE(s1, s2): Tests that s1 != s2
-// * {ASSERT|EXPECT}_STRCASEEQ(s1, s2): Tests that s1 == s2, ignoring case
-// * {ASSERT|EXPECT}_STRCASENE(s1, s2): Tests that s1 != s2, ignoring case
-//
-// For wide or narrow string objects, you can use the
-// {ASSERT|EXPECT}_??() macros.
-//
-// Don't depend on the order in which the arguments are evaluated,
-// which is undefined.
-//
-// These macros evaluate their arguments exactly once.
-
-#define EXPECT_STREQ(s1, s2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
-#define EXPECT_STRNE(s1, s2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
-#define EXPECT_STRCASEEQ(s1, s2) \
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
-#define EXPECT_STRCASENE(s1, s2)\
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
-
-#define ASSERT_STREQ(s1, s2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
-#define ASSERT_STRNE(s1, s2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
-#define ASSERT_STRCASEEQ(s1, s2) \
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
-#define ASSERT_STRCASENE(s1, s2)\
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
-
-// Macros for comparing floating-point numbers.
-//
-// * {ASSERT|EXPECT}_FLOAT_EQ(val1, val2):
-// Tests that two float values are almost equal.
-// * {ASSERT|EXPECT}_DOUBLE_EQ(val1, val2):
-// Tests that two double values are almost equal.
-// * {ASSERT|EXPECT}_NEAR(v1, v2, abs_error):
-// Tests that v1 and v2 are within the given distance to each other.
-//
-// Google Test uses ULP-based comparison to automatically pick a default
-// error bound that is appropriate for the operands. See the
-// FloatingPoint template class in gtest-internal.h if you are
-// interested in the implementation details.
-
-#define EXPECT_FLOAT_EQ(val1, val2)\
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
- val1, val2)
-
-#define EXPECT_DOUBLE_EQ(val1, val2)\
- EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
- val1, val2)
-
-#define ASSERT_FLOAT_EQ(val1, val2)\
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
- val1, val2)
-
-#define ASSERT_DOUBLE_EQ(val1, val2)\
- ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
- val1, val2)
-
-#define EXPECT_NEAR(val1, val2, abs_error)\
- EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
- val1, val2, abs_error)
-
-#define ASSERT_NEAR(val1, val2, abs_error)\
- ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
- val1, val2, abs_error)
-
-// These predicate format functions work on floating-point values, and
-// can be used in {ASSERT|EXPECT}_PRED_FORMAT2*(), e.g.
-//
-// EXPECT_PRED_FORMAT2(testing::DoubleLE, Foo(), 5.0);
-
-// Asserts that val1 is less than, or almost equal to, val2. Fails
-// otherwise. In particular, it fails if either val1 or val2 is NaN.
-GTEST_API_ AssertionResult FloatLE(const char* expr1, const char* expr2,
- float val1, float val2);
-GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2,
- double val1, double val2);
-
-
-#if GTEST_OS_WINDOWS
-
-// Macros that test for HRESULT failure and success, these are only useful
-// on Windows, and rely on Windows SDK macros and APIs to compile.
-//
-// * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr)
-//
-// When expr unexpectedly fails or succeeds, Google Test prints the
-// expected result and the actual result with both a human-readable
-// string representation of the error, if available, as well as the
-// hex result code.
-# define EXPECT_HRESULT_SUCCEEDED(expr) \
- EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
-
-# define ASSERT_HRESULT_SUCCEEDED(expr) \
- ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
-
-# define EXPECT_HRESULT_FAILED(expr) \
- EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
-
-# define ASSERT_HRESULT_FAILED(expr) \
- ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
-
-#endif // GTEST_OS_WINDOWS
-
-// Macros that execute statement and check that it doesn't generate new fatal
-// failures in the current thread.
-//
-// * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement);
-//
-// Examples:
-//
-// EXPECT_NO_FATAL_FAILURE(Process());
-// ASSERT_NO_FATAL_FAILURE(Process()) << "Process() failed";
-//
-#define ASSERT_NO_FATAL_FAILURE(statement) \
- GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_)
-#define EXPECT_NO_FATAL_FAILURE(statement) \
- GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_)
-
-// Causes a trace (including the source file path, the current line
-// number, and the given message) to be included in every test failure
-// message generated by code in the current scope. The effect is
-// undone when the control leaves the current scope.
-//
-// The message argument can be anything streamable to std::ostream.
-//
-// In the implementation, we include the current line number as part
-// of the dummy variable name, thus allowing multiple SCOPED_TRACE()s
-// to appear in the same block - as long as they are on different
-// lines.
-#define SCOPED_TRACE(message) \
- ::testing::internal::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\
- __FILE__, __LINE__, ::testing::Message() << (message))
-
-// Compile-time assertion for type equality.
-// StaticAssertTypeEq<type1, type2>() compiles iff type1 and type2 are
-// the same type. The value it returns is not interesting.
-//
-// Instead of making StaticAssertTypeEq a class template, we make it a
-// function template that invokes a helper class template. This
-// prevents a user from misusing StaticAssertTypeEq<T1, T2> by
-// defining objects of that type.
-//
-// CAVEAT:
-//
-// When used inside a method of a class template,
-// StaticAssertTypeEq<T1, T2>() is effective ONLY IF the method is
-// instantiated. For example, given:
-//
-// template <typename T> class Foo {
-// public:
-// void Bar() { testing::StaticAssertTypeEq<int, T>(); }
-// };
-//
-// the code:
-//
-// void Test1() { Foo<bool> foo; }
-//
-// will NOT generate a compiler error, as Foo<bool>::Bar() is never
-// actually instantiated. Instead, you need:
-//
-// void Test2() { Foo<bool> foo; foo.Bar(); }
-//
-// to cause a compiler error.
-template <typename T1, typename T2>
-bool StaticAssertTypeEq() {
- (void)internal::StaticAssertTypeEqHelper<T1, T2>();
- return true;
-}
-
-// Defines a test.
-//
-// The first parameter is the name of the test case, and the second
-// parameter is the name of the test within the test case.
-//
-// The convention is to end the test case name with "Test". For
-// example, a test case for the Foo class can be named FooTest.
-//
-// Test code should appear between braces after an invocation of
-// this macro. Example:
-//
-// TEST(FooTest, InitializesCorrectly) {
-// Foo foo;
-// EXPECT_TRUE(foo.StatusIsOK());
-// }
-
-// Note that we call GetTestTypeId() instead of GetTypeId<
-// ::testing::Test>() here to get the type ID of testing::Test. This
-// is to work around a suspected linker bug when using Google Test as
-// a framework on Mac OS X. The bug causes GetTypeId<
-// ::testing::Test>() to return different values depending on whether
-// the call is from the Google Test framework itself or from user test
-// code. GetTestTypeId() is guaranteed to always return the same
-// value, as it always calls GetTypeId<>() from the Google Test
-// framework.
-#define GTEST_TEST(test_case_name, test_name)\
- GTEST_TEST_(test_case_name, test_name, \
- ::testing::Test, ::testing::internal::GetTestTypeId())
-
-// Define this macro to 1 to omit the definition of TEST(), which
-// is a generic name and clashes with some other libraries.
-#if !GTEST_DONT_DEFINE_TEST
-# define TEST(test_case_name, test_name) GTEST_TEST(test_case_name, test_name)
-#endif
-
-// Defines a test that uses a test fixture.
-//
-// The first parameter is the name of the test fixture class, which
-// also doubles as the test case name. The second parameter is the
-// name of the test within the test case.
-//
-// A test fixture class must be declared earlier. The user should put
-// his test code between braces after using this macro. Example:
-//
-// class FooTest : public testing::Test {
-// protected:
-// virtual void SetUp() { b_.AddElement(3); }
-//
-// Foo a_;
-// Foo b_;
-// };
-//
-// TEST_F(FooTest, InitializesCorrectly) {
-// EXPECT_TRUE(a_.StatusIsOK());
-// }
-//
-// TEST_F(FooTest, ReturnsElementCountCorrectly) {
-// EXPECT_EQ(0, a_.size());
-// EXPECT_EQ(1, b_.size());
-// }
-
-#define TEST_F(test_fixture, test_name)\
- GTEST_TEST_(test_fixture, test_name, test_fixture, \
- ::testing::internal::GetTypeId<test_fixture>())
-
-} // namespace testing
-
-// Use this function in main() to run all tests. It returns 0 if all
-// tests are successful, or 1 otherwise.
-//
-// RUN_ALL_TESTS() should be invoked after the command line has been
-// parsed by InitGoogleTest().
-//
-// This function was formerly a macro; thus, it is in the global
-// namespace and has an all-caps name.
-int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_;
-
-inline int RUN_ALL_TESTS() {
- return ::testing::UnitTest::GetInstance()->Run();
-}
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_H_
diff --git a/test/gtest/include/gtest/gtest_pred_impl.h b/test/gtest/include/gtest/gtest_pred_impl.h
deleted file mode 100644
index 30ae712..0000000
--- a/test/gtest/include/gtest/gtest_pred_impl.h
+++ /dev/null
@@ -1,358 +0,0 @@
-// Copyright 2006, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// This file is AUTOMATICALLY GENERATED on 10/31/2011 by command
-// 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND!
-//
-// Implements a family of generic predicate assertion macros.
-
-#ifndef GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
-#define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
-
-// Makes sure this header is not included before gtest.h.
-#ifndef GTEST_INCLUDE_GTEST_GTEST_H_
-# error Do not include gtest_pred_impl.h directly. Include gtest.h instead.
-#endif // GTEST_INCLUDE_GTEST_GTEST_H_
-
-// This header implements a family of generic predicate assertion
-// macros:
-//
-// ASSERT_PRED_FORMAT1(pred_format, v1)
-// ASSERT_PRED_FORMAT2(pred_format, v1, v2)
-// ...
-//
-// where pred_format is a function or functor that takes n (in the
-// case of ASSERT_PRED_FORMATn) values and their source expression
-// text, and returns a testing::AssertionResult. See the definition
-// of ASSERT_EQ in gtest.h for an example.
-//
-// If you don't care about formatting, you can use the more
-// restrictive version:
-//
-// ASSERT_PRED1(pred, v1)
-// ASSERT_PRED2(pred, v1, v2)
-// ...
-//
-// where pred is an n-ary function or functor that returns bool,
-// and the values v1, v2, ..., must support the << operator for
-// streaming to std::ostream.
-//
-// We also define the EXPECT_* variations.
-//
-// For now we only support predicates whose arity is at most 5.
-// Please email googletestframework@googlegroups.com if you need
-// support for higher arities.
-
-// GTEST_ASSERT_ is the basic statement to which all of the assertions
-// in this file reduce. Don't use this in your code.
-
-#define GTEST_ASSERT_(expression, on_failure) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (const ::testing::AssertionResult gtest_ar = (expression)) \
- ; \
- else \
- on_failure(gtest_ar.failure_message())
-
-
-// Helper function for implementing {EXPECT|ASSERT}_PRED1. Don't use
-// this in your code.
-template <typename Pred,
- typename T1>
-AssertionResult AssertPred1Helper(const char* pred_text,
- const char* e1,
- Pred pred,
- const T1& v1) {
- if (pred(v1)) return AssertionSuccess();
-
- return AssertionFailure() << pred_text << "("
- << e1 << ") evaluates to false, where"
- << "\n" << e1 << " evaluates to " << v1;
-}
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1.
-// Don't use this in your code.
-#define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\
- GTEST_ASSERT_(pred_format(#v1, v1), \
- on_failure)
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED1. Don't use
-// this in your code.
-#define GTEST_PRED1_(pred, v1, on_failure)\
- GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, \
- #v1, \
- pred, \
- v1), on_failure)
-
-// Unary predicate assertion macros.
-#define EXPECT_PRED_FORMAT1(pred_format, v1) \
- GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_PRED1(pred, v1) \
- GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_PRED_FORMAT1(pred_format, v1) \
- GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_)
-#define ASSERT_PRED1(pred, v1) \
- GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_)
-
-
-
-// Helper function for implementing {EXPECT|ASSERT}_PRED2. Don't use
-// this in your code.
-template <typename Pred,
- typename T1,
- typename T2>
-AssertionResult AssertPred2Helper(const char* pred_text,
- const char* e1,
- const char* e2,
- Pred pred,
- const T1& v1,
- const T2& v2) {
- if (pred(v1, v2)) return AssertionSuccess();
-
- return AssertionFailure() << pred_text << "("
- << e1 << ", "
- << e2 << ") evaluates to false, where"
- << "\n" << e1 << " evaluates to " << v1
- << "\n" << e2 << " evaluates to " << v2;
-}
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2.
-// Don't use this in your code.
-#define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\
- GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), \
- on_failure)
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED2. Don't use
-// this in your code.
-#define GTEST_PRED2_(pred, v1, v2, on_failure)\
- GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, \
- #v1, \
- #v2, \
- pred, \
- v1, \
- v2), on_failure)
-
-// Binary predicate assertion macros.
-#define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \
- GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_PRED2(pred, v1, v2) \
- GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \
- GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_)
-#define ASSERT_PRED2(pred, v1, v2) \
- GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_)
-
-
-
-// Helper function for implementing {EXPECT|ASSERT}_PRED3. Don't use
-// this in your code.
-template <typename Pred,
- typename T1,
- typename T2,
- typename T3>
-AssertionResult AssertPred3Helper(const char* pred_text,
- const char* e1,
- const char* e2,
- const char* e3,
- Pred pred,
- const T1& v1,
- const T2& v2,
- const T3& v3) {
- if (pred(v1, v2, v3)) return AssertionSuccess();
-
- return AssertionFailure() << pred_text << "("
- << e1 << ", "
- << e2 << ", "
- << e3 << ") evaluates to false, where"
- << "\n" << e1 << " evaluates to " << v1
- << "\n" << e2 << " evaluates to " << v2
- << "\n" << e3 << " evaluates to " << v3;
-}
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3.
-// Don't use this in your code.
-#define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\
- GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), \
- on_failure)
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED3. Don't use
-// this in your code.
-#define GTEST_PRED3_(pred, v1, v2, v3, on_failure)\
- GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, \
- #v1, \
- #v2, \
- #v3, \
- pred, \
- v1, \
- v2, \
- v3), on_failure)
-
-// Ternary predicate assertion macros.
-#define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \
- GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_PRED3(pred, v1, v2, v3) \
- GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \
- GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_)
-#define ASSERT_PRED3(pred, v1, v2, v3) \
- GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_)
-
-
-
-// Helper function for implementing {EXPECT|ASSERT}_PRED4. Don't use
-// this in your code.
-template <typename Pred,
- typename T1,
- typename T2,
- typename T3,
- typename T4>
-AssertionResult AssertPred4Helper(const char* pred_text,
- const char* e1,
- const char* e2,
- const char* e3,
- const char* e4,
- Pred pred,
- const T1& v1,
- const T2& v2,
- const T3& v3,
- const T4& v4) {
- if (pred(v1, v2, v3, v4)) return AssertionSuccess();
-
- return AssertionFailure() << pred_text << "("
- << e1 << ", "
- << e2 << ", "
- << e3 << ", "
- << e4 << ") evaluates to false, where"
- << "\n" << e1 << " evaluates to " << v1
- << "\n" << e2 << " evaluates to " << v2
- << "\n" << e3 << " evaluates to " << v3
- << "\n" << e4 << " evaluates to " << v4;
-}
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4.
-// Don't use this in your code.
-#define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\
- GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), \
- on_failure)
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED4. Don't use
-// this in your code.
-#define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)\
- GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, \
- #v1, \
- #v2, \
- #v3, \
- #v4, \
- pred, \
- v1, \
- v2, \
- v3, \
- v4), on_failure)
-
-// 4-ary predicate assertion macros.
-#define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
- GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_PRED4(pred, v1, v2, v3, v4) \
- GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
- GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
-#define ASSERT_PRED4(pred, v1, v2, v3, v4) \
- GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
-
-
-
-// Helper function for implementing {EXPECT|ASSERT}_PRED5. Don't use
-// this in your code.
-template <typename Pred,
- typename T1,
- typename T2,
- typename T3,
- typename T4,
- typename T5>
-AssertionResult AssertPred5Helper(const char* pred_text,
- const char* e1,
- const char* e2,
- const char* e3,
- const char* e4,
- const char* e5,
- Pred pred,
- const T1& v1,
- const T2& v2,
- const T3& v3,
- const T4& v4,
- const T5& v5) {
- if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess();
-
- return AssertionFailure() << pred_text << "("
- << e1 << ", "
- << e2 << ", "
- << e3 << ", "
- << e4 << ", "
- << e5 << ") evaluates to false, where"
- << "\n" << e1 << " evaluates to " << v1
- << "\n" << e2 << " evaluates to " << v2
- << "\n" << e3 << " evaluates to " << v3
- << "\n" << e4 << " evaluates to " << v4
- << "\n" << e5 << " evaluates to " << v5;
-}
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5.
-// Don't use this in your code.
-#define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\
- GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \
- on_failure)
-
-// Internal macro for implementing {EXPECT|ASSERT}_PRED5. Don't use
-// this in your code.
-#define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)\
- GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, \
- #v1, \
- #v2, \
- #v3, \
- #v4, \
- #v5, \
- pred, \
- v1, \
- v2, \
- v3, \
- v4, \
- v5), on_failure)
-
-// 5-ary predicate assertion macros.
-#define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
- GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
-#define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \
- GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
-#define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
- GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
-#define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \
- GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
-
-
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
diff --git a/test/gtest/include/gtest/gtest_prod.h b/test/gtest/include/gtest/gtest_prod.h
deleted file mode 100644
index da80ddc..0000000
--- a/test/gtest/include/gtest/gtest_prod.h
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2006, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wan@google.com (Zhanyong Wan)
-//
-// Google C++ Testing Framework definitions useful in production code.
-
-#ifndef GTEST_INCLUDE_GTEST_GTEST_PROD_H_
-#define GTEST_INCLUDE_GTEST_GTEST_PROD_H_
-
-// When you need to test the private or protected members of a class,
-// use the FRIEND_TEST macro to declare your tests as friends of the
-// class. For example:
-//
-// class MyClass {
-// private:
-// void MyMethod();
-// FRIEND_TEST(MyClassTest, MyMethod);
-// };
-//
-// class MyClassTest : public testing::Test {
-// // ...
-// };
-//
-// TEST_F(MyClassTest, MyMethod) {
-// // Can call MyClass::MyMethod() here.
-// }
-
-#define FRIEND_TEST(test_case_name, test_name)\
-friend class test_case_name##_##test_name##_Test
-
-#endif // GTEST_INCLUDE_GTEST_GTEST_PROD_H_
diff --git a/test/gtest/include/gtest/internal/custom/gtest-port.h b/test/gtest/include/gtest/internal/custom/gtest-port.h
deleted file mode 100644
index 7e744bd..0000000
--- a/test/gtest/include/gtest/internal/custom/gtest-port.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Injection point for custom user configurations.
-// The following macros can be defined:
-//
-// Flag related macros:
-// GTEST_FLAG(flag_name)
-// GTEST_USE_OWN_FLAGFILE_FLAG_ - Define to 0 when the system provides its
-// own flagfile flag parsing.
-// GTEST_DECLARE_bool_(name)
-// GTEST_DECLARE_int32_(name)
-// GTEST_DECLARE_string_(name)
-// GTEST_DEFINE_bool_(name, default_val, doc)
-// GTEST_DEFINE_int32_(name, default_val, doc)
-// GTEST_DEFINE_string_(name, default_val, doc)
-//
-// Test filtering:
-// GTEST_TEST_FILTER_ENV_VAR_ - The name of an environment variable that
-// will be used if --GTEST_FLAG(test_filter)
-// is not provided.
-//
-// Logging:
-// GTEST_LOG_(severity)
-// GTEST_CHECK_(condition)
-// Functions LogToStderr() and FlushInfoLog() have to be provided too.
-//
-// Threading:
-// GTEST_HAS_NOTIFICATION_ - Enabled if Notification is already provided.
-// GTEST_HAS_MUTEX_AND_THREAD_LOCAL_ - Enabled if Mutex and ThreadLocal are
-// already provided.
-// Must also provide GTEST_DECLARE_STATIC_MUTEX_(mutex) and
-// GTEST_DEFINE_STATIC_MUTEX_(mutex)
-//
-// GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks)
-// GTEST_LOCK_EXCLUDED_(locks)
-//
-// ** Custom implementation starts here **
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
diff --git a/test/gtest/include/gtest/internal/custom/gtest-printers.h b/test/gtest/include/gtest/internal/custom/gtest-printers.h
deleted file mode 100644
index 60c1ea0..0000000
--- a/test/gtest/include/gtest/internal/custom/gtest-printers.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// This file provides an injection point for custom printers in a local
-// installation of gTest.
-// It will be included from gtest-printers.h and the overrides in this file
-// will be visible to everyone.
-// See documentation at gtest/gtest-printers.h for details on how to define a
-// custom printer.
-//
-// ** Custom implementation starts here **
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_
diff --git a/test/gtest/include/gtest/internal/custom/gtest.h b/test/gtest/include/gtest/internal/custom/gtest.h
deleted file mode 100644
index c27412a..0000000
--- a/test/gtest/include/gtest/internal/custom/gtest.h
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Injection point for custom user configurations.
-// The following macros can be defined:
-//
-// GTEST_OS_STACK_TRACE_GETTER_ - The name of an implementation of
-// OsStackTraceGetterInterface.
-//
-// ** Custom implementation starts here **
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_H_
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_H_
diff --git a/test/gtest/include/gtest/internal/gtest-death-test-internal.h b/test/gtest/include/gtest/internal/gtest-death-test-internal.h
deleted file mode 100644
index 2b3a78f..0000000
--- a/test/gtest/include/gtest/internal/gtest-death-test-internal.h
+++ /dev/null
@@ -1,319 +0,0 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee)
-//
-// The Google C++ Testing Framework (Google Test)
-//
-// This header file defines internal utilities needed for implementing
-// death tests. They are subject to change without notice.
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
-
-#include "gtest/internal/gtest-internal.h"
-
-#include <stdio.h>
-
-namespace testing {
-namespace internal {
-
-GTEST_DECLARE_string_(internal_run_death_test);
-
-// Names of the flags (needed for parsing Google Test flags).
-const char kDeathTestStyleFlag[] = "death_test_style";
-const char kDeathTestUseFork[] = "death_test_use_fork";
-const char kInternalRunDeathTestFlag[] = "internal_run_death_test";
-
-#if GTEST_HAS_DEATH_TEST
-
-// DeathTest is a class that hides much of the complexity of the
-// GTEST_DEATH_TEST_ macro. It is abstract; its static Create method
-// returns a concrete class that depends on the prevailing death test
-// style, as defined by the --gtest_death_test_style and/or
-// --gtest_internal_run_death_test flags.
-
-// In describing the results of death tests, these terms are used with
-// the corresponding definitions:
-//
-// exit status: The integer exit information in the format specified
-// by wait(2)
-// exit code: The integer code passed to exit(3), _exit(2), or
-// returned from main()
-class GTEST_API_ DeathTest {
- public:
- // Create returns false if there was an error determining the
- // appropriate action to take for the current death test; for example,
- // if the gtest_death_test_style flag is set to an invalid value.
- // The LastMessage method will return a more detailed message in that
- // case. Otherwise, the DeathTest pointer pointed to by the "test"
- // argument is set. If the death test should be skipped, the pointer
- // is set to NULL; otherwise, it is set to the address of a new concrete
- // DeathTest object that controls the execution of the current test.
- static bool Create(const char* statement, const RE* regex,
- const char* file, int line, DeathTest** test);
- DeathTest();
- virtual ~DeathTest() { }
-
- // A helper class that aborts a death test when it's deleted.
- class ReturnSentinel {
- public:
- explicit ReturnSentinel(DeathTest* test) : test_(test) { }
- ~ReturnSentinel() { test_->Abort(TEST_ENCOUNTERED_RETURN_STATEMENT); }
- private:
- DeathTest* const test_;
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ReturnSentinel);
- } GTEST_ATTRIBUTE_UNUSED_;
-
- // An enumeration of possible roles that may be taken when a death
- // test is encountered. EXECUTE means that the death test logic should
- // be executed immediately. OVERSEE means that the program should prepare
- // the appropriate environment for a child process to execute the death
- // test, then wait for it to complete.
- enum TestRole { OVERSEE_TEST, EXECUTE_TEST };
-
- // An enumeration of the three reasons that a test might be aborted.
- enum AbortReason {
- TEST_ENCOUNTERED_RETURN_STATEMENT,
- TEST_THREW_EXCEPTION,
- TEST_DID_NOT_DIE
- };
-
- // Assumes one of the above roles.
- virtual TestRole AssumeRole() = 0;
-
- // Waits for the death test to finish and returns its status.
- virtual int Wait() = 0;
-
- // Returns true if the death test passed; that is, the test process
- // exited during the test, its exit status matches a user-supplied
- // predicate, and its stderr output matches a user-supplied regular
- // expression.
- // The user-supplied predicate may be a macro expression rather
- // than a function pointer or functor, or else Wait and Passed could
- // be combined.
- virtual bool Passed(bool exit_status_ok) = 0;
-
- // Signals that the death test did not die as expected.
- virtual void Abort(AbortReason reason) = 0;
-
- // Returns a human-readable outcome message regarding the outcome of
- // the last death test.
- static const char* LastMessage();
-
- static void set_last_death_test_message(const std::string& message);
-
- private:
- // A string containing a description of the outcome of the last death test.
- static std::string last_death_test_message_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(DeathTest);
-};
-
-// Factory interface for death tests. May be mocked out for testing.
-class DeathTestFactory {
- public:
- virtual ~DeathTestFactory() { }
- virtual bool Create(const char* statement, const RE* regex,
- const char* file, int line, DeathTest** test) = 0;
-};
-
-// A concrete DeathTestFactory implementation for normal use.
-class DefaultDeathTestFactory : public DeathTestFactory {
- public:
- virtual bool Create(const char* statement, const RE* regex,
- const char* file, int line, DeathTest** test);
-};
-
-// Returns true if exit_status describes a process that was terminated
-// by a signal, or exited normally with a nonzero exit code.
-GTEST_API_ bool ExitedUnsuccessfully(int exit_status);
-
-// Traps C++ exceptions escaping statement and reports them as test
-// failures. Note that trapping SEH exceptions is not implemented here.
-# if GTEST_HAS_EXCEPTIONS
-# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
- try { \
- GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
- } catch (const ::std::exception& gtest_exception) { \
- fprintf(\
- stderr, \
- "\n%s: Caught std::exception-derived exception escaping the " \
- "death test statement. Exception message: %s\n", \
- ::testing::internal::FormatFileLocation(__FILE__, __LINE__).c_str(), \
- gtest_exception.what()); \
- fflush(stderr); \
- death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \
- } catch (...) { \
- death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \
- }
-
-# else
-# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
- GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)
-
-# endif
-
-// This macro is for implementing ASSERT_DEATH*, EXPECT_DEATH*,
-// ASSERT_EXIT*, and EXPECT_EXIT*.
-# define GTEST_DEATH_TEST_(statement, predicate, regex, fail) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (::testing::internal::AlwaysTrue()) { \
- const ::testing::internal::RE& gtest_regex = (regex); \
- ::testing::internal::DeathTest* gtest_dt; \
- if (!::testing::internal::DeathTest::Create(#statement, &gtest_regex, \
- __FILE__, __LINE__, &gtest_dt)) { \
- goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \
- } \
- if (gtest_dt != NULL) { \
- ::testing::internal::scoped_ptr< ::testing::internal::DeathTest> \
- gtest_dt_ptr(gtest_dt); \
- switch (gtest_dt->AssumeRole()) { \
- case ::testing::internal::DeathTest::OVERSEE_TEST: \
- if (!gtest_dt->Passed(predicate(gtest_dt->Wait()))) { \
- goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \
- } \
- break; \
- case ::testing::internal::DeathTest::EXECUTE_TEST: { \
- ::testing::internal::DeathTest::ReturnSentinel \
- gtest_sentinel(gtest_dt); \
- GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, gtest_dt); \
- gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE); \
- break; \
- } \
- default: \
- break; \
- } \
- } \
- } else \
- GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__): \
- fail(::testing::internal::DeathTest::LastMessage())
-// The symbol "fail" here expands to something into which a message
-// can be streamed.
-
-// This macro is for implementing ASSERT/EXPECT_DEBUG_DEATH when compiled in
-// NDEBUG mode. In this case we need the statements to be executed, the regex is
-// ignored, and the macro must accept a streamed message even though the message
-// is never printed.
-# define GTEST_EXECUTE_STATEMENT_(statement, regex) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (::testing::internal::AlwaysTrue()) { \
- GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
- } else \
- ::testing::Message()
-
-// A class representing the parsed contents of the
-// --gtest_internal_run_death_test flag, as it existed when
-// RUN_ALL_TESTS was called.
-class InternalRunDeathTestFlag {
- public:
- InternalRunDeathTestFlag(const std::string& a_file,
- int a_line,
- int an_index,
- int a_write_fd)
- : file_(a_file), line_(a_line), index_(an_index),
- write_fd_(a_write_fd) {}
-
- ~InternalRunDeathTestFlag() {
- if (write_fd_ >= 0)
- posix::Close(write_fd_);
- }
-
- const std::string& file() const { return file_; }
- int line() const { return line_; }
- int index() const { return index_; }
- int write_fd() const { return write_fd_; }
-
- private:
- std::string file_;
- int line_;
- int index_;
- int write_fd_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(InternalRunDeathTestFlag);
-};
-
-// Returns a newly created InternalRunDeathTestFlag object with fields
-// initialized from the GTEST_FLAG(internal_run_death_test) flag if
-// the flag is specified; otherwise returns NULL.
-InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag();
-
-#else // GTEST_HAS_DEATH_TEST
-
-// This macro is used for implementing macros such as
-// EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED on systems where
-// death tests are not supported. Those macros must compile on such systems
-// iff EXPECT_DEATH and ASSERT_DEATH compile with the same parameters on
-// systems that support death tests. This allows one to write such a macro
-// on a system that does not support death tests and be sure that it will
-// compile on a death-test supporting system.
-//
-// Parameters:
-// statement - A statement that a macro such as EXPECT_DEATH would test
-// for program termination. This macro has to make sure this
-// statement is compiled but not executed, to ensure that
-// EXPECT_DEATH_IF_SUPPORTED compiles with a certain
-// parameter iff EXPECT_DEATH compiles with it.
-// regex - A regex that a macro such as EXPECT_DEATH would use to test
-// the output of statement. This parameter has to be
-// compiled but not evaluated by this macro, to ensure that
-// this macro only accepts expressions that a macro such as
-// EXPECT_DEATH would accept.
-// terminator - Must be an empty statement for EXPECT_DEATH_IF_SUPPORTED
-// and a return statement for ASSERT_DEATH_IF_SUPPORTED.
-// This ensures that ASSERT_DEATH_IF_SUPPORTED will not
-// compile inside functions where ASSERT_DEATH doesn't
-// compile.
-//
-// The branch that has an always false condition is used to ensure that
-// statement and regex are compiled (and thus syntactically correct) but
-// never executed. The unreachable code macro protects the terminator
-// statement from generating an 'unreachable code' warning in case
-// statement unconditionally returns or throws. The Message constructor at
-// the end allows the syntax of streaming additional messages into the
-// macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH.
-# define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (::testing::internal::AlwaysTrue()) { \
- GTEST_LOG_(WARNING) \
- << "Death tests are not supported on this platform.\n" \
- << "Statement '" #statement "' cannot be verified."; \
- } else if (::testing::internal::AlwaysFalse()) { \
- ::testing::internal::RE::PartialMatch(".*", (regex)); \
- GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
- terminator; \
- } else \
- ::testing::Message()
-
-#endif // GTEST_HAS_DEATH_TEST
-
-} // namespace internal
-} // namespace testing
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
diff --git a/test/gtest/include/gtest/internal/gtest-filepath.h b/test/gtest/include/gtest/internal/gtest-filepath.h
deleted file mode 100644
index 7a13b4b..0000000
--- a/test/gtest/include/gtest/internal/gtest-filepath.h
+++ /dev/null
@@ -1,206 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: keith.ray@gmail.com (Keith Ray)
-//
-// Google Test filepath utilities
-//
-// This header file declares classes and functions used internally by
-// Google Test. They are subject to change without notice.
-//
-// This file is #included in <gtest/internal/gtest-internal.h>.
-// Do not include this header file separately!
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
-
-#include "gtest/internal/gtest-string.h"
-
-namespace testing {
-namespace internal {
-
-// FilePath - a class for file and directory pathname manipulation which
-// handles platform-specific conventions (like the pathname separator).
-// Used for helper functions for naming files in a directory for xml output.
-// Except for Set methods, all methods are const or static, which provides an
-// "immutable value object" -- useful for peace of mind.
-// A FilePath with a value ending in a path separator ("like/this/") represents
-// a directory, otherwise it is assumed to represent a file. In either case,
-// it may or may not represent an actual file or directory in the file system.
-// Names are NOT checked for syntax correctness -- no checking for illegal
-// characters, malformed paths, etc.
-
-class GTEST_API_ FilePath {
- public:
- FilePath() : pathname_("") { }
- FilePath(const FilePath& rhs) : pathname_(rhs.pathname_) { }
-
- explicit FilePath(const std::string& pathname) : pathname_(pathname) {
- Normalize();
- }
-
- FilePath& operator=(const FilePath& rhs) {
- Set(rhs);
- return *this;
- }
-
- void Set(const FilePath& rhs) {
- pathname_ = rhs.pathname_;
- }
-
- const std::string& string() const { return pathname_; }
- const char* c_str() const { return pathname_.c_str(); }
-
- // Returns the current working directory, or "" if unsuccessful.
- static FilePath GetCurrentDir();
-
- // Given directory = "dir", base_name = "test", number = 0,
- // extension = "xml", returns "dir/test.xml". If number is greater
- // than zero (e.g., 12), returns "dir/test_12.xml".
- // On Windows platform, uses \ as the separator rather than /.
- static FilePath MakeFileName(const FilePath& directory,
- const FilePath& base_name,
- int number,
- const char* extension);
-
- // Given directory = "dir", relative_path = "test.xml",
- // returns "dir/test.xml".
- // On Windows, uses \ as the separator rather than /.
- static FilePath ConcatPaths(const FilePath& directory,
- const FilePath& relative_path);
-
- // Returns a pathname for a file that does not currently exist. The pathname
- // will be directory/base_name.extension or
- // directory/base_name_<number>.extension if directory/base_name.extension
- // already exists. The number will be incremented until a pathname is found
- // that does not already exist.
- // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'.
- // There could be a race condition if two or more processes are calling this
- // function at the same time -- they could both pick the same filename.
- static FilePath GenerateUniqueFileName(const FilePath& directory,
- const FilePath& base_name,
- const char* extension);
-
- // Returns true iff the path is "".
- bool IsEmpty() const { return pathname_.empty(); }
-
- // If input name has a trailing separator character, removes it and returns
- // the name, otherwise return the name string unmodified.
- // On Windows platform, uses \ as the separator, other platforms use /.
- FilePath RemoveTrailingPathSeparator() const;
-
- // Returns a copy of the FilePath with the directory part removed.
- // Example: FilePath("path/to/file").RemoveDirectoryName() returns
- // FilePath("file"). If there is no directory part ("just_a_file"), it returns
- // the FilePath unmodified. If there is no file part ("just_a_dir/") it
- // returns an empty FilePath ("").
- // On Windows platform, '\' is the path separator, otherwise it is '/'.
- FilePath RemoveDirectoryName() const;
-
- // RemoveFileName returns the directory path with the filename removed.
- // Example: FilePath("path/to/file").RemoveFileName() returns "path/to/".
- // If the FilePath is "a_file" or "/a_file", RemoveFileName returns
- // FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does
- // not have a file, like "just/a/dir/", it returns the FilePath unmodified.
- // On Windows platform, '\' is the path separator, otherwise it is '/'.
- FilePath RemoveFileName() const;
-
- // Returns a copy of the FilePath with the case-insensitive extension removed.
- // Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns
- // FilePath("dir/file"). If a case-insensitive extension is not
- // found, returns a copy of the original FilePath.
- FilePath RemoveExtension(const char* extension) const;
-
- // Creates directories so that path exists. Returns true if successful or if
- // the directories already exist; returns false if unable to create
- // directories for any reason. Will also return false if the FilePath does
- // not represent a directory (that is, it doesn't end with a path separator).
- bool CreateDirectoriesRecursively() const;
-
- // Create the directory so that path exists. Returns true if successful or
- // if the directory already exists; returns false if unable to create the
- // directory for any reason, including if the parent directory does not
- // exist. Not named "CreateDirectory" because that's a macro on Windows.
- bool CreateFolder() const;
-
- // Returns true if FilePath describes something in the file-system,
- // either a file, directory, or whatever, and that something exists.
- bool FileOrDirectoryExists() const;
-
- // Returns true if pathname describes a directory in the file-system
- // that exists.
- bool DirectoryExists() const;
-
- // Returns true if FilePath ends with a path separator, which indicates that
- // it is intended to represent a directory. Returns false otherwise.
- // This does NOT check that a directory (or file) actually exists.
- bool IsDirectory() const;
-
- // Returns true if pathname describes a root directory. (Windows has one
- // root directory per disk drive.)
- bool IsRootDirectory() const;
-
- // Returns true if pathname describes an absolute path.
- bool IsAbsolutePath() const;
-
- private:
- // Replaces multiple consecutive separators with a single separator.
- // For example, "bar///foo" becomes "bar/foo". Does not eliminate other
- // redundancies that might be in a pathname involving "." or "..".
- //
- // A pathname with multiple consecutive separators may occur either through
- // user error or as a result of some scripts or APIs that generate a pathname
- // with a trailing separator. On other platforms the same API or script
- // may NOT generate a pathname with a trailing "/". Then elsewhere that
- // pathname may have another "/" and pathname components added to it,
- // without checking for the separator already being there.
- // The script language and operating system may allow paths like "foo//bar"
- // but some of the functions in FilePath will not handle that correctly. In
- // particular, RemoveTrailingPathSeparator() only removes one separator, and
- // it is called in CreateDirectoriesRecursively() assuming that it will change
- // a pathname from directory syntax (trailing separator) to filename syntax.
- //
- // On Windows this method also replaces the alternate path separator '/' with
- // the primary path separator '\\', so that for example "bar\\/\\foo" becomes
- // "bar\\foo".
-
- void Normalize();
-
- // Returns a pointer to the last occurence of a valid path separator in
- // the FilePath. On Windows, for example, both '/' and '\' are valid path
- // separators. Returns NULL if no path separator was found.
- const char* FindLastPathSeparator() const;
-
- std::string pathname_;
-}; // class FilePath
-
-} // namespace internal
-} // namespace testing
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
diff --git a/test/gtest/include/gtest/internal/gtest-internal.h b/test/gtest/include/gtest/internal/gtest-internal.h
deleted file mode 100644
index 5afb722..0000000
--- a/test/gtest/include/gtest/internal/gtest-internal.h
+++ /dev/null
@@ -1,1237 +0,0 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee)
-//
-// The Google C++ Testing Framework (Google Test)
-//
-// This header file declares functions and macros used internally by
-// Google Test. They are subject to change without notice.
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
-
-#include "gtest/internal/gtest-port.h"
-
-#if GTEST_OS_LINUX
-# include <stdlib.h>
-# include <sys/types.h>
-# include <sys/wait.h>
-# include <unistd.h>
-#endif // GTEST_OS_LINUX
-
-#if GTEST_HAS_EXCEPTIONS
-# include <stdexcept>
-#endif
-
-#include <ctype.h>
-#include <float.h>
-#include <string.h>
-#include <iomanip>
-#include <limits>
-#include <map>
-#include <set>
-#include <string>
-#include <vector>
-
-#include "gtest/gtest-message.h"
-#include "gtest/internal/gtest-string.h"
-#include "gtest/internal/gtest-filepath.h"
-#include "gtest/internal/gtest-type-util.h"
-
-// Due to C++ preprocessor weirdness, we need double indirection to
-// concatenate two tokens when one of them is __LINE__. Writing
-//
-// foo ## __LINE__
-//
-// will result in the token foo__LINE__, instead of foo followed by
-// the current line number. For more details, see
-// http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.6
-#define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar)
-#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo ## bar
-
-class ProtocolMessage;
-namespace proto2 { class Message; }
-
-namespace testing {
-
-// Forward declarations.
-
-class AssertionResult; // Result of an assertion.
-class Message; // Represents a failure message.
-class Test; // Represents a test.
-class TestInfo; // Information about a test.
-class TestPartResult; // Result of a test part.
-class UnitTest; // A collection of test cases.
-
-template <typename T>
-::std::string PrintToString(const T& value);
-
-namespace internal {
-
-struct TraceInfo; // Information about a trace point.
-class ScopedTrace; // Implements scoped trace.
-class TestInfoImpl; // Opaque implementation of TestInfo
-class UnitTestImpl; // Opaque implementation of UnitTest
-
-// The text used in failure messages to indicate the start of the
-// stack trace.
-GTEST_API_ extern const char kStackTraceMarker[];
-
-// Two overloaded helpers for checking at compile time whether an
-// expression is a null pointer literal (i.e. NULL or any 0-valued
-// compile-time integral constant). Their return values have
-// different sizes, so we can use sizeof() to test which version is
-// picked by the compiler. These helpers have no implementations, as
-// we only need their signatures.
-//
-// Given IsNullLiteralHelper(x), the compiler will pick the first
-// version if x can be implicitly converted to Secret*, and pick the
-// second version otherwise. Since Secret is a secret and incomplete
-// type, the only expression a user can write that has type Secret* is
-// a null pointer literal. Therefore, we know that x is a null
-// pointer literal if and only if the first version is picked by the
-// compiler.
-char IsNullLiteralHelper(Secret* p);
-char (&IsNullLiteralHelper(...))[2]; // NOLINT
-
-// A compile-time bool constant that is true if and only if x is a
-// null pointer literal (i.e. NULL or any 0-valued compile-time
-// integral constant).
-#ifdef GTEST_ELLIPSIS_NEEDS_POD_
-// We lose support for NULL detection where the compiler doesn't like
-// passing non-POD classes through ellipsis (...).
-# define GTEST_IS_NULL_LITERAL_(x) false
-#else
-# define GTEST_IS_NULL_LITERAL_(x) \
- (sizeof(::testing::internal::IsNullLiteralHelper(x)) == 1)
-#endif // GTEST_ELLIPSIS_NEEDS_POD_
-
-// Appends the user-supplied message to the Google-Test-generated message.
-GTEST_API_ std::string AppendUserMessage(
- const std::string& gtest_msg, const Message& user_msg);
-
-#if GTEST_HAS_EXCEPTIONS
-
-// This exception is thrown by (and only by) a failed Google Test
-// assertion when GTEST_FLAG(throw_on_failure) is true (if exceptions
-// are enabled). We derive it from std::runtime_error, which is for
-// errors presumably detectable only at run time. Since
-// std::runtime_error inherits from std::exception, many testing
-// frameworks know how to extract and print the message inside it.
-class GTEST_API_ GoogleTestFailureException : public ::std::runtime_error {
- public:
- explicit GoogleTestFailureException(const TestPartResult& failure);
-};
-
-#endif // GTEST_HAS_EXCEPTIONS
-
-// A helper class for creating scoped traces in user programs.
-class GTEST_API_ ScopedTrace {
- public:
- // The c'tor pushes the given source file location and message onto
- // a trace stack maintained by Google Test.
- ScopedTrace(const char* file, int line, const Message& message);
-
- // The d'tor pops the info pushed by the c'tor.
- //
- // Note that the d'tor is not virtual in order to be efficient.
- // Don't inherit from ScopedTrace!
- ~ScopedTrace();
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedTrace);
-} GTEST_ATTRIBUTE_UNUSED_; // A ScopedTrace object does its job in its
- // c'tor and d'tor. Therefore it doesn't
- // need to be used otherwise.
-
-namespace edit_distance {
-// Returns the optimal edits to go from 'left' to 'right'.
-// All edits cost the same, with replace having lower priority than
-// add/remove.
-// Simple implementation of the Wagner–Fischer algorithm.
-// See http://en.wikipedia.org/wiki/Wagner-Fischer_algorithm
-enum EditType { kMatch, kAdd, kRemove, kReplace };
-GTEST_API_ std::vector<EditType> CalculateOptimalEdits(
- const std::vector<size_t>& left, const std::vector<size_t>& right);
-
-// Same as above, but the input is represented as strings.
-GTEST_API_ std::vector<EditType> CalculateOptimalEdits(
- const std::vector<std::string>& left,
- const std::vector<std::string>& right);
-
-// Create a diff of the input strings in Unified diff format.
-GTEST_API_ std::string CreateUnifiedDiff(const std::vector<std::string>& left,
- const std::vector<std::string>& right,
- size_t context = 2);
-
-} // namespace edit_distance
-
-// Calculate the diff between 'left' and 'right' and return it in unified diff
-// format.
-// If not null, stores in 'total_line_count' the total number of lines found
-// in left + right.
-GTEST_API_ std::string DiffStrings(const std::string& left,
- const std::string& right,
- size_t* total_line_count);
-
-// Constructs and returns the message for an equality assertion
-// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure.
-//
-// The first four parameters are the expressions used in the assertion
-// and their values, as strings. For example, for ASSERT_EQ(foo, bar)
-// where foo is 5 and bar is 6, we have:
-//
-// expected_expression: "foo"
-// actual_expression: "bar"
-// expected_value: "5"
-// actual_value: "6"
-//
-// The ignoring_case parameter is true iff the assertion is a
-// *_STRCASEEQ*. When it's true, the string " (ignoring case)" will
-// be inserted into the message.
-GTEST_API_ AssertionResult EqFailure(const char* expected_expression,
- const char* actual_expression,
- const std::string& expected_value,
- const std::string& actual_value,
- bool ignoring_case);
-
-// Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
-GTEST_API_ std::string GetBoolAssertionFailureMessage(
- const AssertionResult& assertion_result,
- const char* expression_text,
- const char* actual_predicate_value,
- const char* expected_predicate_value);
-
-// This template class represents an IEEE floating-point number
-// (either single-precision or double-precision, depending on the
-// template parameters).
-//
-// The purpose of this class is to do more sophisticated number
-// comparison. (Due to round-off error, etc, it's very unlikely that
-// two floating-points will be equal exactly. Hence a naive
-// comparison by the == operation often doesn't work.)
-//
-// Format of IEEE floating-point:
-//
-// The most-significant bit being the leftmost, an IEEE
-// floating-point looks like
-//
-// sign_bit exponent_bits fraction_bits
-//
-// Here, sign_bit is a single bit that designates the sign of the
-// number.
-//
-// For float, there are 8 exponent bits and 23 fraction bits.
-//
-// For double, there are 11 exponent bits and 52 fraction bits.
-//
-// More details can be found at
-// http://en.wikipedia.org/wiki/IEEE_floating-point_standard.
-//
-// Template parameter:
-//
-// RawType: the raw floating-point type (either float or double)
-template <typename RawType>
-class FloatingPoint {
- public:
- // Defines the unsigned integer type that has the same size as the
- // floating point number.
- typedef typename TypeWithSize<sizeof(RawType)>::UInt Bits;
-
- // Constants.
-
- // # of bits in a number.
- static const size_t kBitCount = 8*sizeof(RawType);
-
- // # of fraction bits in a number.
- static const size_t kFractionBitCount =
- std::numeric_limits<RawType>::digits - 1;
-
- // # of exponent bits in a number.
- static const size_t kExponentBitCount = kBitCount - 1 - kFractionBitCount;
-
- // The mask for the sign bit.
- static const Bits kSignBitMask = static_cast<Bits>(1) << (kBitCount - 1);
-
- // The mask for the fraction bits.
- static const Bits kFractionBitMask =
- ~static_cast<Bits>(0) >> (kExponentBitCount + 1);
-
- // The mask for the exponent bits.
- static const Bits kExponentBitMask = ~(kSignBitMask | kFractionBitMask);
-
- // How many ULP's (Units in the Last Place) we want to tolerate when
- // comparing two numbers. The larger the value, the more error we
- // allow. A 0 value means that two numbers must be exactly the same
- // to be considered equal.
- //
- // The maximum error of a single floating-point operation is 0.5
- // units in the last place. On Intel CPU's, all floating-point
- // calculations are done with 80-bit precision, while double has 64
- // bits. Therefore, 4 should be enough for ordinary use.
- //
- // See the following article for more details on ULP:
- // http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
- static const size_t kMaxUlps = 4;
-
- // Constructs a FloatingPoint from a raw floating-point number.
- //
- // On an Intel CPU, passing a non-normalized NAN (Not a Number)
- // around may change its bits, although the new value is guaranteed
- // to be also a NAN. Therefore, don't expect this constructor to
- // preserve the bits in x when x is a NAN.
- explicit FloatingPoint(const RawType& x) { u_.value_ = x; }
-
- // Static methods
-
- // Reinterprets a bit pattern as a floating-point number.
- //
- // This function is needed to test the AlmostEquals() method.
- static RawType ReinterpretBits(const Bits bits) {
- FloatingPoint fp(0);
- fp.u_.bits_ = bits;
- return fp.u_.value_;
- }
-
- // Returns the floating-point number that represent positive infinity.
- static RawType Infinity() {
- return ReinterpretBits(kExponentBitMask);
- }
-
- // Returns the maximum representable finite floating-point number.
- static RawType Max();
-
- // Non-static methods
-
- // Returns the bits that represents this number.
- const Bits &bits() const { return u_.bits_; }
-
- // Returns the exponent bits of this number.
- Bits exponent_bits() const { return kExponentBitMask & u_.bits_; }
-
- // Returns the fraction bits of this number.
- Bits fraction_bits() const { return kFractionBitMask & u_.bits_; }
-
- // Returns the sign bit of this number.
- Bits sign_bit() const { return kSignBitMask & u_.bits_; }
-
- // Returns true iff this is NAN (not a number).
- bool is_nan() const {
- // It's a NAN if the exponent bits are all ones and the fraction
- // bits are not entirely zeros.
- return (exponent_bits() == kExponentBitMask) && (fraction_bits() != 0);
- }
-
- // Returns true iff this number is at most kMaxUlps ULP's away from
- // rhs. In particular, this function:
- //
- // - returns false if either number is (or both are) NAN.
- // - treats really large numbers as almost equal to infinity.
- // - thinks +0.0 and -0.0 are 0 DLP's apart.
- bool AlmostEquals(const FloatingPoint& rhs) const {
- // The IEEE standard says that any comparison operation involving
- // a NAN must return false.
- if (is_nan() || rhs.is_nan()) return false;
-
- return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_)
- <= kMaxUlps;
- }
-
- private:
- // The data type used to store the actual floating-point number.
- union FloatingPointUnion {
- RawType value_; // The raw floating-point number.
- Bits bits_; // The bits that represent the number.
- };
-
- // Converts an integer from the sign-and-magnitude representation to
- // the biased representation. More precisely, let N be 2 to the
- // power of (kBitCount - 1), an integer x is represented by the
- // unsigned number x + N.
- //
- // For instance,
- //
- // -N + 1 (the most negative number representable using
- // sign-and-magnitude) is represented by 1;
- // 0 is represented by N; and
- // N - 1 (the biggest number representable using
- // sign-and-magnitude) is represented by 2N - 1.
- //
- // Read http://en.wikipedia.org/wiki/Signed_number_representations
- // for more details on signed number representations.
- static Bits SignAndMagnitudeToBiased(const Bits &sam) {
- if (kSignBitMask & sam) {
- // sam represents a negative number.
- return ~sam + 1;
- } else {
- // sam represents a positive number.
- return kSignBitMask | sam;
- }
- }
-
- // Given two numbers in the sign-and-magnitude representation,
- // returns the distance between them as an unsigned number.
- static Bits DistanceBetweenSignAndMagnitudeNumbers(const Bits &sam1,
- const Bits &sam2) {
- const Bits biased1 = SignAndMagnitudeToBiased(sam1);
- const Bits biased2 = SignAndMagnitudeToBiased(sam2);
- return (biased1 >= biased2) ? (biased1 - biased2) : (biased2 - biased1);
- }
-
- FloatingPointUnion u_;
-};
-
-// We cannot use std::numeric_limits<T>::max() as it clashes with the max()
-// macro defined by <windows.h>.
-template <>
-inline float FloatingPoint<float>::Max() { return FLT_MAX; }
-template <>
-inline double FloatingPoint<double>::Max() { return DBL_MAX; }
-
-// Typedefs the instances of the FloatingPoint template class that we
-// care to use.
-typedef FloatingPoint<float> Float;
-typedef FloatingPoint<double> Double;
-
-// In order to catch the mistake of putting tests that use different
-// test fixture classes in the same test case, we need to assign
-// unique IDs to fixture classes and compare them. The TypeId type is
-// used to hold such IDs. The user should treat TypeId as an opaque
-// type: the only operation allowed on TypeId values is to compare
-// them for equality using the == operator.
-typedef const void* TypeId;
-
-template <typename T>
-class TypeIdHelper {
- public:
- // dummy_ must not have a const type. Otherwise an overly eager
- // compiler (e.g. MSVC 7.1 & 8.0) may try to merge
- // TypeIdHelper<T>::dummy_ for different Ts as an "optimization".
- static bool dummy_;
-};
-
-template <typename T>
-bool TypeIdHelper<T>::dummy_ = false;
-
-// GetTypeId<T>() returns the ID of type T. Different values will be
-// returned for different types. Calling the function twice with the
-// same type argument is guaranteed to return the same ID.
-template <typename T>
-TypeId GetTypeId() {
- // The compiler is required to allocate a different
- // TypeIdHelper<T>::dummy_ variable for each T used to instantiate
- // the template. Therefore, the address of dummy_ is guaranteed to
- // be unique.
- return &(TypeIdHelper<T>::dummy_);
-}
-
-// Returns the type ID of ::testing::Test. Always call this instead
-// of GetTypeId< ::testing::Test>() to get the type ID of
-// ::testing::Test, as the latter may give the wrong result due to a
-// suspected linker bug when compiling Google Test as a Mac OS X
-// framework.
-GTEST_API_ TypeId GetTestTypeId();
-
-// Defines the abstract factory interface that creates instances
-// of a Test object.
-class TestFactoryBase {
- public:
- virtual ~TestFactoryBase() {}
-
- // Creates a test instance to run. The instance is both created and destroyed
- // within TestInfoImpl::Run()
- virtual Test* CreateTest() = 0;
-
- protected:
- TestFactoryBase() {}
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestFactoryBase);
-};
-
-// This class provides implementation of TeastFactoryBase interface.
-// It is used in TEST and TEST_F macros.
-template <class TestClass>
-class TestFactoryImpl : public TestFactoryBase {
- public:
- virtual Test* CreateTest() { return new TestClass; }
-};
-
-#if GTEST_OS_WINDOWS
-
-// Predicate-formatters for implementing the HRESULT checking macros
-// {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}
-// We pass a long instead of HRESULT to avoid causing an
-// include dependency for the HRESULT type.
-GTEST_API_ AssertionResult IsHRESULTSuccess(const char* expr,
- long hr); // NOLINT
-GTEST_API_ AssertionResult IsHRESULTFailure(const char* expr,
- long hr); // NOLINT
-
-#endif // GTEST_OS_WINDOWS
-
-// Types of SetUpTestCase() and TearDownTestCase() functions.
-typedef void (*SetUpTestCaseFunc)();
-typedef void (*TearDownTestCaseFunc)();
-
-struct CodeLocation {
- CodeLocation(const string& a_file, int a_line) : file(a_file), line(a_line) {}
-
- string file;
- int line;
-};
-
-// Creates a new TestInfo object and registers it with Google Test;
-// returns the created object.
-//
-// Arguments:
-//
-// test_case_name: name of the test case
-// name: name of the test
-// type_param the name of the test's type parameter, or NULL if
-// this is not a typed or a type-parameterized test.
-// value_param text representation of the test's value parameter,
-// or NULL if this is not a type-parameterized test.
-// code_location: code location where the test is defined
-// fixture_class_id: ID of the test fixture class
-// set_up_tc: pointer to the function that sets up the test case
-// tear_down_tc: pointer to the function that tears down the test case
-// factory: pointer to the factory that creates a test object.
-// The newly created TestInfo instance will assume
-// ownership of the factory object.
-GTEST_API_ TestInfo* MakeAndRegisterTestInfo(
- const char* test_case_name,
- const char* name,
- const char* type_param,
- const char* value_param,
- CodeLocation code_location,
- TypeId fixture_class_id,
- SetUpTestCaseFunc set_up_tc,
- TearDownTestCaseFunc tear_down_tc,
- TestFactoryBase* factory);
-
-// If *pstr starts with the given prefix, modifies *pstr to be right
-// past the prefix and returns true; otherwise leaves *pstr unchanged
-// and returns false. None of pstr, *pstr, and prefix can be NULL.
-GTEST_API_ bool SkipPrefix(const char* prefix, const char** pstr);
-
-#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
-
-// State of the definition of a type-parameterized test case.
-class GTEST_API_ TypedTestCasePState {
- public:
- TypedTestCasePState() : registered_(false) {}
-
- // Adds the given test name to defined_test_names_ and return true
- // if the test case hasn't been registered; otherwise aborts the
- // program.
- bool AddTestName(const char* file, int line, const char* case_name,
- const char* test_name) {
- if (registered_) {
- fprintf(stderr, "%s Test %s must be defined before "
- "REGISTER_TYPED_TEST_CASE_P(%s, ...).\n",
- FormatFileLocation(file, line).c_str(), test_name, case_name);
- fflush(stderr);
- posix::Abort();
- }
- registered_tests_.insert(
- ::std::make_pair(test_name, CodeLocation(file, line)));
- return true;
- }
-
- bool TestExists(const std::string& test_name) const {
- return registered_tests_.count(test_name) > 0;
- }
-
- const CodeLocation& GetCodeLocation(const std::string& test_name) const {
- RegisteredTestsMap::const_iterator it = registered_tests_.find(test_name);
- GTEST_CHECK_(it != registered_tests_.end());
- return it->second;
- }
-
- // Verifies that registered_tests match the test names in
- // defined_test_names_; returns registered_tests if successful, or
- // aborts the program otherwise.
- const char* VerifyRegisteredTestNames(
- const char* file, int line, const char* registered_tests);
-
- private:
- typedef ::std::map<std::string, CodeLocation> RegisteredTestsMap;
-
- bool registered_;
- RegisteredTestsMap registered_tests_;
-};
-
-// Skips to the first non-space char after the first comma in 'str';
-// returns NULL if no comma is found in 'str'.
-inline const char* SkipComma(const char* str) {
- const char* comma = strchr(str, ',');
- if (comma == NULL) {
- return NULL;
- }
- while (IsSpace(*(++comma))) {}
- return comma;
-}
-
-// Returns the prefix of 'str' before the first comma in it; returns
-// the entire string if it contains no comma.
-inline std::string GetPrefixUntilComma(const char* str) {
- const char* comma = strchr(str, ',');
- return comma == NULL ? str : std::string(str, comma);
-}
-
-// Splits a given string on a given delimiter, populating a given
-// vector with the fields.
-void SplitString(const ::std::string& str, char delimiter,
- ::std::vector< ::std::string>* dest);
-
-// TypeParameterizedTest<Fixture, TestSel, Types>::Register()
-// registers a list of type-parameterized tests with Google Test. The
-// return value is insignificant - we just need to return something
-// such that we can call this function in a namespace scope.
-//
-// Implementation note: The GTEST_TEMPLATE_ macro declares a template
-// template parameter. It's defined in gtest-type-util.h.
-template <GTEST_TEMPLATE_ Fixture, class TestSel, typename Types>
-class TypeParameterizedTest {
- public:
- // 'index' is the index of the test in the type list 'Types'
- // specified in INSTANTIATE_TYPED_TEST_CASE_P(Prefix, TestCase,
- // Types). Valid values for 'index' are [0, N - 1] where N is the
- // length of Types.
- static bool Register(const char* prefix,
- CodeLocation code_location,
- const char* case_name, const char* test_names,
- int index) {
- typedef typename Types::Head Type;
- typedef Fixture<Type> FixtureClass;
- typedef typename GTEST_BIND_(TestSel, Type) TestClass;
-
- // First, registers the first type-parameterized test in the type
- // list.
- MakeAndRegisterTestInfo(
- (std::string(prefix) + (prefix[0] == '\0' ? "" : "/") + case_name + "/"
- + StreamableToString(index)).c_str(),
- StripTrailingSpaces(GetPrefixUntilComma(test_names)).c_str(),
- GetTypeName<Type>().c_str(),
- NULL, // No value parameter.
- code_location,
- GetTypeId<FixtureClass>(),
- TestClass::SetUpTestCase,
- TestClass::TearDownTestCase,
- new TestFactoryImpl<TestClass>);
-
- // Next, recurses (at compile time) with the tail of the type list.
- return TypeParameterizedTest<Fixture, TestSel, typename Types::Tail>
- ::Register(prefix, code_location, case_name, test_names, index + 1);
- }
-};
-
-// The base case for the compile time recursion.
-template <GTEST_TEMPLATE_ Fixture, class TestSel>
-class TypeParameterizedTest<Fixture, TestSel, Types0> {
- public:
- static bool Register(const char* /*prefix*/, CodeLocation,
- const char* /*case_name*/, const char* /*test_names*/,
- int /*index*/) {
- return true;
- }
-};
-
-// TypeParameterizedTestCase<Fixture, Tests, Types>::Register()
-// registers *all combinations* of 'Tests' and 'Types' with Google
-// Test. The return value is insignificant - we just need to return
-// something such that we can call this function in a namespace scope.
-template <GTEST_TEMPLATE_ Fixture, typename Tests, typename Types>
-class TypeParameterizedTestCase {
- public:
- static bool Register(const char* prefix, CodeLocation code_location,
- const TypedTestCasePState* state,
- const char* case_name, const char* test_names) {
- std::string test_name = StripTrailingSpaces(
- GetPrefixUntilComma(test_names));
- if (!state->TestExists(test_name)) {
- fprintf(stderr, "Failed to get code location for test %s.%s at %s.",
- case_name, test_name.c_str(),
- FormatFileLocation(code_location.file.c_str(),
- code_location.line).c_str());
- fflush(stderr);
- posix::Abort();
- }
- const CodeLocation& test_location = state->GetCodeLocation(test_name);
-
- typedef typename Tests::Head Head;
-
- // First, register the first test in 'Test' for each type in 'Types'.
- TypeParameterizedTest<Fixture, Head, Types>::Register(
- prefix, test_location, case_name, test_names, 0);
-
- // Next, recurses (at compile time) with the tail of the test list.
- return TypeParameterizedTestCase<Fixture, typename Tests::Tail, Types>
- ::Register(prefix, code_location, state,
- case_name, SkipComma(test_names));
- }
-};
-
-// The base case for the compile time recursion.
-template <GTEST_TEMPLATE_ Fixture, typename Types>
-class TypeParameterizedTestCase<Fixture, Templates0, Types> {
- public:
- static bool Register(const char* /*prefix*/, CodeLocation,
- const TypedTestCasePState* /*state*/,
- const char* /*case_name*/, const char* /*test_names*/) {
- return true;
- }
-};
-
-#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
-
-// Returns the current OS stack trace as an std::string.
-//
-// The maximum number of stack frames to be included is specified by
-// the gtest_stack_trace_depth flag. The skip_count parameter
-// specifies the number of top frames to be skipped, which doesn't
-// count against the number of frames to be included.
-//
-// For example, if Foo() calls Bar(), which in turn calls
-// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in
-// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't.
-GTEST_API_ std::string GetCurrentOsStackTraceExceptTop(
- UnitTest* unit_test, int skip_count);
-
-// Helpers for suppressing warnings on unreachable code or constant
-// condition.
-
-// Always returns true.
-GTEST_API_ bool AlwaysTrue();
-
-// Always returns false.
-inline bool AlwaysFalse() { return !AlwaysTrue(); }
-
-// Helper for suppressing false warning from Clang on a const char*
-// variable declared in a conditional expression always being NULL in
-// the else branch.
-struct GTEST_API_ ConstCharPtr {
- ConstCharPtr(const char* str) : value(str) {}
- operator bool() const { return true; }
- const char* value;
-};
-
-// A simple Linear Congruential Generator for generating random
-// numbers with a uniform distribution. Unlike rand() and srand(), it
-// doesn't use global state (and therefore can't interfere with user
-// code). Unlike rand_r(), it's portable. An LCG isn't very random,
-// but it's good enough for our purposes.
-class GTEST_API_ Random {
- public:
- static const UInt32 kMaxRange = 1u << 31;
-
- explicit Random(UInt32 seed) : state_(seed) {}
-
- void Reseed(UInt32 seed) { state_ = seed; }
-
- // Generates a random number from [0, range). Crashes if 'range' is
- // 0 or greater than kMaxRange.
- UInt32 Generate(UInt32 range);
-
- private:
- UInt32 state_;
- GTEST_DISALLOW_COPY_AND_ASSIGN_(Random);
-};
-
-// Defining a variable of type CompileAssertTypesEqual<T1, T2> will cause a
-// compiler error iff T1 and T2 are different types.
-template <typename T1, typename T2>
-struct CompileAssertTypesEqual;
-
-template <typename T>
-struct CompileAssertTypesEqual<T, T> {
-};
-
-// Removes the reference from a type if it is a reference type,
-// otherwise leaves it unchanged. This is the same as
-// tr1::remove_reference, which is not widely available yet.
-template <typename T>
-struct RemoveReference { typedef T type; }; // NOLINT
-template <typename T>
-struct RemoveReference<T&> { typedef T type; }; // NOLINT
-
-// A handy wrapper around RemoveReference that works when the argument
-// T depends on template parameters.
-#define GTEST_REMOVE_REFERENCE_(T) \
- typename ::testing::internal::RemoveReference<T>::type
-
-// Removes const from a type if it is a const type, otherwise leaves
-// it unchanged. This is the same as tr1::remove_const, which is not
-// widely available yet.
-template <typename T>
-struct RemoveConst { typedef T type; }; // NOLINT
-template <typename T>
-struct RemoveConst<const T> { typedef T type; }; // NOLINT
-
-// MSVC 8.0, Sun C++, and IBM XL C++ have a bug which causes the above
-// definition to fail to remove the const in 'const int[3]' and 'const
-// char[3][4]'. The following specialization works around the bug.
-template <typename T, size_t N>
-struct RemoveConst<const T[N]> {
- typedef typename RemoveConst<T>::type type[N];
-};
-
-#if defined(_MSC_VER) && _MSC_VER < 1400
-// This is the only specialization that allows VC++ 7.1 to remove const in
-// 'const int[3] and 'const int[3][4]'. However, it causes trouble with GCC
-// and thus needs to be conditionally compiled.
-template <typename T, size_t N>
-struct RemoveConst<T[N]> {
- typedef typename RemoveConst<T>::type type[N];
-};
-#endif
-
-// A handy wrapper around RemoveConst that works when the argument
-// T depends on template parameters.
-#define GTEST_REMOVE_CONST_(T) \
- typename ::testing::internal::RemoveConst<T>::type
-
-// Turns const U&, U&, const U, and U all into U.
-#define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \
- GTEST_REMOVE_CONST_(GTEST_REMOVE_REFERENCE_(T))
-
-// Adds reference to a type if it is not a reference type,
-// otherwise leaves it unchanged. This is the same as
-// tr1::add_reference, which is not widely available yet.
-template <typename T>
-struct AddReference { typedef T& type; }; // NOLINT
-template <typename T>
-struct AddReference<T&> { typedef T& type; }; // NOLINT
-
-// A handy wrapper around AddReference that works when the argument T
-// depends on template parameters.
-#define GTEST_ADD_REFERENCE_(T) \
- typename ::testing::internal::AddReference<T>::type
-
-// Adds a reference to const on top of T as necessary. For example,
-// it transforms
-//
-// char ==> const char&
-// const char ==> const char&
-// char& ==> const char&
-// const char& ==> const char&
-//
-// The argument T must depend on some template parameters.
-#define GTEST_REFERENCE_TO_CONST_(T) \
- GTEST_ADD_REFERENCE_(const GTEST_REMOVE_REFERENCE_(T))
-
-// ImplicitlyConvertible<From, To>::value is a compile-time bool
-// constant that's true iff type From can be implicitly converted to
-// type To.
-template <typename From, typename To>
-class ImplicitlyConvertible {
- private:
- // We need the following helper functions only for their types.
- // They have no implementations.
-
- // MakeFrom() is an expression whose type is From. We cannot simply
- // use From(), as the type From may not have a public default
- // constructor.
- static typename AddReference<From>::type MakeFrom();
-
- // These two functions are overloaded. Given an expression
- // Helper(x), the compiler will pick the first version if x can be
- // implicitly converted to type To; otherwise it will pick the
- // second version.
- //
- // The first version returns a value of size 1, and the second
- // version returns a value of size 2. Therefore, by checking the
- // size of Helper(x), which can be done at compile time, we can tell
- // which version of Helper() is used, and hence whether x can be
- // implicitly converted to type To.
- static char Helper(To);
- static char (&Helper(...))[2]; // NOLINT
-
- // We have to put the 'public' section after the 'private' section,
- // or MSVC refuses to compile the code.
- public:
-#if defined(__BORLANDC__)
- // C++Builder cannot use member overload resolution during template
- // instantiation. The simplest workaround is to use its C++0x type traits
- // functions (C++Builder 2009 and above only).
- static const bool value = __is_convertible(From, To);
-#else
- // MSVC warns about implicitly converting from double to int for
- // possible loss of data, so we need to temporarily disable the
- // warning.
- GTEST_DISABLE_MSC_WARNINGS_PUSH_(4244)
- static const bool value =
- sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1;
- GTEST_DISABLE_MSC_WARNINGS_POP_()
-#endif // __BORLANDC__
-};
-template <typename From, typename To>
-const bool ImplicitlyConvertible<From, To>::value;
-
-// IsAProtocolMessage<T>::value is a compile-time bool constant that's
-// true iff T is type ProtocolMessage, proto2::Message, or a subclass
-// of those.
-template <typename T>
-struct IsAProtocolMessage
- : public bool_constant<
- ImplicitlyConvertible<const T*, const ::ProtocolMessage*>::value ||
- ImplicitlyConvertible<const T*, const ::proto2::Message*>::value> {
-};
-
-// When the compiler sees expression IsContainerTest<C>(0), if C is an
-// STL-style container class, the first overload of IsContainerTest
-// will be viable (since both C::iterator* and C::const_iterator* are
-// valid types and NULL can be implicitly converted to them). It will
-// be picked over the second overload as 'int' is a perfect match for
-// the type of argument 0. If C::iterator or C::const_iterator is not
-// a valid type, the first overload is not viable, and the second
-// overload will be picked. Therefore, we can determine whether C is
-// a container class by checking the type of IsContainerTest<C>(0).
-// The value of the expression is insignificant.
-//
-// Note that we look for both C::iterator and C::const_iterator. The
-// reason is that C++ injects the name of a class as a member of the
-// class itself (e.g. you can refer to class iterator as either
-// 'iterator' or 'iterator::iterator'). If we look for C::iterator
-// only, for example, we would mistakenly think that a class named
-// iterator is an STL container.
-//
-// Also note that the simpler approach of overloading
-// IsContainerTest(typename C::const_iterator*) and
-// IsContainerTest(...) doesn't work with Visual Age C++ and Sun C++.
-typedef int IsContainer;
-template <class C>
-IsContainer IsContainerTest(int /* dummy */,
- typename C::iterator* /* it */ = NULL,
- typename C::const_iterator* /* const_it */ = NULL) {
- return 0;
-}
-
-typedef char IsNotContainer;
-template <class C>
-IsNotContainer IsContainerTest(long /* dummy */) { return '\0'; }
-
-// EnableIf<condition>::type is void when 'Cond' is true, and
-// undefined when 'Cond' is false. To use SFINAE to make a function
-// overload only apply when a particular expression is true, add
-// "typename EnableIf<expression>::type* = 0" as the last parameter.
-template<bool> struct EnableIf;
-template<> struct EnableIf<true> { typedef void type; }; // NOLINT
-
-// Utilities for native arrays.
-
-// ArrayEq() compares two k-dimensional native arrays using the
-// elements' operator==, where k can be any integer >= 0. When k is
-// 0, ArrayEq() degenerates into comparing a single pair of values.
-
-template <typename T, typename U>
-bool ArrayEq(const T* lhs, size_t size, const U* rhs);
-
-// This generic version is used when k is 0.
-template <typename T, typename U>
-inline bool ArrayEq(const T& lhs, const U& rhs) { return lhs == rhs; }
-
-// This overload is used when k >= 1.
-template <typename T, typename U, size_t N>
-inline bool ArrayEq(const T(&lhs)[N], const U(&rhs)[N]) {
- return internal::ArrayEq(lhs, N, rhs);
-}
-
-// This helper reduces code bloat. If we instead put its logic inside
-// the previous ArrayEq() function, arrays with different sizes would
-// lead to different copies of the template code.
-template <typename T, typename U>
-bool ArrayEq(const T* lhs, size_t size, const U* rhs) {
- for (size_t i = 0; i != size; i++) {
- if (!internal::ArrayEq(lhs[i], rhs[i]))
- return false;
- }
- return true;
-}
-
-// Finds the first element in the iterator range [begin, end) that
-// equals elem. Element may be a native array type itself.
-template <typename Iter, typename Element>
-Iter ArrayAwareFind(Iter begin, Iter end, const Element& elem) {
- for (Iter it = begin; it != end; ++it) {
- if (internal::ArrayEq(*it, elem))
- return it;
- }
- return end;
-}
-
-// CopyArray() copies a k-dimensional native array using the elements'
-// operator=, where k can be any integer >= 0. When k is 0,
-// CopyArray() degenerates into copying a single value.
-
-template <typename T, typename U>
-void CopyArray(const T* from, size_t size, U* to);
-
-// This generic version is used when k is 0.
-template <typename T, typename U>
-inline void CopyArray(const T& from, U* to) { *to = from; }
-
-// This overload is used when k >= 1.
-template <typename T, typename U, size_t N>
-inline void CopyArray(const T(&from)[N], U(*to)[N]) {
- internal::CopyArray(from, N, *to);
-}
-
-// This helper reduces code bloat. If we instead put its logic inside
-// the previous CopyArray() function, arrays with different sizes
-// would lead to different copies of the template code.
-template <typename T, typename U>
-void CopyArray(const T* from, size_t size, U* to) {
- for (size_t i = 0; i != size; i++) {
- internal::CopyArray(from[i], to + i);
- }
-}
-
-// The relation between an NativeArray object (see below) and the
-// native array it represents.
-// We use 2 different structs to allow non-copyable types to be used, as long
-// as RelationToSourceReference() is passed.
-struct RelationToSourceReference {};
-struct RelationToSourceCopy {};
-
-// Adapts a native array to a read-only STL-style container. Instead
-// of the complete STL container concept, this adaptor only implements
-// members useful for Google Mock's container matchers. New members
-// should be added as needed. To simplify the implementation, we only
-// support Element being a raw type (i.e. having no top-level const or
-// reference modifier). It's the client's responsibility to satisfy
-// this requirement. Element can be an array type itself (hence
-// multi-dimensional arrays are supported).
-template <typename Element>
-class NativeArray {
- public:
- // STL-style container typedefs.
- typedef Element value_type;
- typedef Element* iterator;
- typedef const Element* const_iterator;
-
- // Constructs from a native array. References the source.
- NativeArray(const Element* array, size_t count, RelationToSourceReference) {
- InitRef(array, count);
- }
-
- // Constructs from a native array. Copies the source.
- NativeArray(const Element* array, size_t count, RelationToSourceCopy) {
- InitCopy(array, count);
- }
-
- // Copy constructor.
- NativeArray(const NativeArray& rhs) {
- (this->*rhs.clone_)(rhs.array_, rhs.size_);
- }
-
- ~NativeArray() {
- if (clone_ != &NativeArray::InitRef)
- delete[] array_;
- }
-
- // STL-style container methods.
- size_t size() const { return size_; }
- const_iterator begin() const { return array_; }
- const_iterator end() const { return array_ + size_; }
- bool operator==(const NativeArray& rhs) const {
- return size() == rhs.size() &&
- ArrayEq(begin(), size(), rhs.begin());
- }
-
- private:
- enum {
- kCheckTypeIsNotConstOrAReference = StaticAssertTypeEqHelper<
- Element, GTEST_REMOVE_REFERENCE_AND_CONST_(Element)>::value,
- };
-
- // Initializes this object with a copy of the input.
- void InitCopy(const Element* array, size_t a_size) {
- Element* const copy = new Element[a_size];
- CopyArray(array, a_size, copy);
- array_ = copy;
- size_ = a_size;
- clone_ = &NativeArray::InitCopy;
- }
-
- // Initializes this object with a reference of the input.
- void InitRef(const Element* array, size_t a_size) {
- array_ = array;
- size_ = a_size;
- clone_ = &NativeArray::InitRef;
- }
-
- const Element* array_;
- size_t size_;
- void (NativeArray::*clone_)(const Element*, size_t);
-
- GTEST_DISALLOW_ASSIGN_(NativeArray);
-};
-
-} // namespace internal
-} // namespace testing
-
-#define GTEST_MESSAGE_AT_(file, line, message, result_type) \
- ::testing::internal::AssertHelper(result_type, file, line, message) \
- = ::testing::Message()
-
-#define GTEST_MESSAGE_(message, result_type) \
- GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type)
-
-#define GTEST_FATAL_FAILURE_(message) \
- return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure)
-
-#define GTEST_NONFATAL_FAILURE_(message) \
- GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure)
-
-#define GTEST_SUCCESS_(message) \
- GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess)
-
-// Suppresses MSVC warnings 4072 (unreachable code) for the code following
-// statement if it returns or throws (or doesn't return or throw in some
-// situations).
-#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \
- if (::testing::internal::AlwaysTrue()) { statement; }
-
-#define GTEST_TEST_THROW_(statement, expected_exception, fail) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (::testing::internal::ConstCharPtr gtest_msg = "") { \
- bool gtest_caught_expected = false; \
- try { \
- GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
- } \
- catch (expected_exception const&) { \
- gtest_caught_expected = true; \
- } \
- catch (...) { \
- gtest_msg.value = \
- "Expected: " #statement " throws an exception of type " \
- #expected_exception ".\n Actual: it throws a different type."; \
- goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
- } \
- if (!gtest_caught_expected) { \
- gtest_msg.value = \
- "Expected: " #statement " throws an exception of type " \
- #expected_exception ".\n Actual: it throws nothing."; \
- goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
- } \
- } else \
- GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__): \
- fail(gtest_msg.value)
-
-#define GTEST_TEST_NO_THROW_(statement, fail) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (::testing::internal::AlwaysTrue()) { \
- try { \
- GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
- } \
- catch (...) { \
- goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \
- } \
- } else \
- GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__): \
- fail("Expected: " #statement " doesn't throw an exception.\n" \
- " Actual: it throws.")
-
-#define GTEST_TEST_ANY_THROW_(statement, fail) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (::testing::internal::AlwaysTrue()) { \
- bool gtest_caught_any = false; \
- try { \
- GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
- } \
- catch (...) { \
- gtest_caught_any = true; \
- } \
- if (!gtest_caught_any) { \
- goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \
- } \
- } else \
- GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__): \
- fail("Expected: " #statement " throws an exception.\n" \
- " Actual: it doesn't.")
-
-
-// Implements Boolean test assertions such as EXPECT_TRUE. expression can be
-// either a boolean expression or an AssertionResult. text is a textual
-// represenation of expression as it was passed into the EXPECT_TRUE.
-#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (const ::testing::AssertionResult gtest_ar_ = \
- ::testing::AssertionResult(expression)) \
- ; \
- else \
- fail(::testing::internal::GetBoolAssertionFailureMessage(\
- gtest_ar_, text, #actual, #expected).c_str())
-
-#define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (::testing::internal::AlwaysTrue()) { \
- ::testing::internal::HasNewFatalFailureHelper gtest_fatal_failure_checker; \
- GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
- if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \
- goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \
- } \
- } else \
- GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__): \
- fail("Expected: " #statement " doesn't generate new fatal " \
- "failures in the current thread.\n" \
- " Actual: it does.")
-
-// Expands to the name of the class that implements the given test.
-#define GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
- test_case_name##_##test_name##_Test
-
-// Helper macro for defining tests.
-#define GTEST_TEST_(test_case_name, test_name, parent_class, parent_id)\
-class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\
- public:\
- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {}\
- private:\
- virtual void TestBody();\
- static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_;\
- GTEST_DISALLOW_COPY_AND_ASSIGN_(\
- GTEST_TEST_CLASS_NAME_(test_case_name, test_name));\
-};\
-\
-::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_case_name, test_name)\
- ::test_info_ =\
- ::testing::internal::MakeAndRegisterTestInfo(\
- #test_case_name, #test_name, NULL, NULL, \
- ::testing::internal::CodeLocation(__FILE__, __LINE__), \
- (parent_id), \
- parent_class::SetUpTestCase, \
- parent_class::TearDownTestCase, \
- new ::testing::internal::TestFactoryImpl<\
- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>);\
-void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
diff --git a/test/gtest/include/gtest/internal/gtest-linked_ptr.h b/test/gtest/include/gtest/internal/gtest-linked_ptr.h
deleted file mode 100644
index 3602942..0000000
--- a/test/gtest/include/gtest/internal/gtest-linked_ptr.h
+++ /dev/null
@@ -1,243 +0,0 @@
-// Copyright 2003 Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: Dan Egnor (egnor@google.com)
-//
-// A "smart" pointer type with reference tracking. Every pointer to a
-// particular object is kept on a circular linked list. When the last pointer
-// to an object is destroyed or reassigned, the object is deleted.
-//
-// Used properly, this deletes the object when the last reference goes away.
-// There are several caveats:
-// - Like all reference counting schemes, cycles lead to leaks.
-// - Each smart pointer is actually two pointers (8 bytes instead of 4).
-// - Every time a pointer is assigned, the entire list of pointers to that
-// object is traversed. This class is therefore NOT SUITABLE when there
-// will often be more than two or three pointers to a particular object.
-// - References are only tracked as long as linked_ptr<> objects are copied.
-// If a linked_ptr<> is converted to a raw pointer and back, BAD THINGS
-// will happen (double deletion).
-//
-// A good use of this class is storing object references in STL containers.
-// You can safely put linked_ptr<> in a vector<>.
-// Other uses may not be as good.
-//
-// Note: If you use an incomplete type with linked_ptr<>, the class
-// *containing* linked_ptr<> must have a constructor and destructor (even
-// if they do nothing!).
-//
-// Bill Gibbons suggested we use something like this.
-//
-// Thread Safety:
-// Unlike other linked_ptr implementations, in this implementation
-// a linked_ptr object is thread-safe in the sense that:
-// - it's safe to copy linked_ptr objects concurrently,
-// - it's safe to copy *from* a linked_ptr and read its underlying
-// raw pointer (e.g. via get()) concurrently, and
-// - it's safe to write to two linked_ptrs that point to the same
-// shared object concurrently.
-// TODO(wan@google.com): rename this to safe_linked_ptr to avoid
-// confusion with normal linked_ptr.
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_
-
-#include <stdlib.h>
-#include <assert.h>
-
-#include "gtest/internal/gtest-port.h"
-
-namespace testing {
-namespace internal {
-
-// Protects copying of all linked_ptr objects.
-GTEST_API_ GTEST_DECLARE_STATIC_MUTEX_(g_linked_ptr_mutex);
-
-// This is used internally by all instances of linked_ptr<>. It needs to be
-// a non-template class because different types of linked_ptr<> can refer to
-// the same object (linked_ptr<Superclass>(obj) vs linked_ptr<Subclass>(obj)).
-// So, it needs to be possible for different types of linked_ptr to participate
-// in the same circular linked list, so we need a single class type here.
-//
-// DO NOT USE THIS CLASS DIRECTLY YOURSELF. Use linked_ptr<T>.
-class linked_ptr_internal {
- public:
- // Create a new circle that includes only this instance.
- void join_new() {
- next_ = this;
- }
-
- // Many linked_ptr operations may change p.link_ for some linked_ptr
- // variable p in the same circle as this object. Therefore we need
- // to prevent two such operations from occurring concurrently.
- //
- // Note that different types of linked_ptr objects can coexist in a
- // circle (e.g. linked_ptr<Base>, linked_ptr<Derived1>, and
- // linked_ptr<Derived2>). Therefore we must use a single mutex to
- // protect all linked_ptr objects. This can create serious
- // contention in production code, but is acceptable in a testing
- // framework.
-
- // Join an existing circle.
- void join(linked_ptr_internal const* ptr)
- GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) {
- MutexLock lock(&g_linked_ptr_mutex);
-
- linked_ptr_internal const* p = ptr;
- while (p->next_ != ptr) {
- assert(p->next_ != this &&
- "Trying to join() a linked ring we are already in. "
- "Is GMock thread safety enabled?");
- p = p->next_;
- }
- p->next_ = this;
- next_ = ptr;
- }
-
- // Leave whatever circle we're part of. Returns true if we were the
- // last member of the circle. Once this is done, you can join() another.
- bool depart()
- GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) {
- MutexLock lock(&g_linked_ptr_mutex);
-
- if (next_ == this) return true;
- linked_ptr_internal const* p = next_;
- while (p->next_ != this) {
- assert(p->next_ != next_ &&
- "Trying to depart() a linked ring we are not in. "
- "Is GMock thread safety enabled?");
- p = p->next_;
- }
- p->next_ = next_;
- return false;
- }
-
- private:
- mutable linked_ptr_internal const* next_;
-};
-
-template <typename T>
-class linked_ptr {
- public:
- typedef T element_type;
-
- // Take over ownership of a raw pointer. This should happen as soon as
- // possible after the object is created.
- explicit linked_ptr(T* ptr = NULL) { capture(ptr); }
- ~linked_ptr() { depart(); }
-
- // Copy an existing linked_ptr<>, adding ourselves to the list of references.
- template <typename U> linked_ptr(linked_ptr<U> const& ptr) { copy(&ptr); }
- linked_ptr(linked_ptr const& ptr) { // NOLINT
- assert(&ptr != this);
- copy(&ptr);
- }
-
- // Assignment releases the old value and acquires the new.
- template <typename U> linked_ptr& operator=(linked_ptr<U> const& ptr) {
- depart();
- copy(&ptr);
- return *this;
- }
-
- linked_ptr& operator=(linked_ptr const& ptr) {
- if (&ptr != this) {
- depart();
- copy(&ptr);
- }
- return *this;
- }
-
- // Smart pointer members.
- void reset(T* ptr = NULL) {
- depart();
- capture(ptr);
- }
- T* get() const { return value_; }
- T* operator->() const { return value_; }
- T& operator*() const { return *value_; }
-
- bool operator==(T* p) const { return value_ == p; }
- bool operator!=(T* p) const { return value_ != p; }
- template <typename U>
- bool operator==(linked_ptr<U> const& ptr) const {
- return value_ == ptr.get();
- }
- template <typename U>
- bool operator!=(linked_ptr<U> const& ptr) const {
- return value_ != ptr.get();
- }
-
- private:
- template <typename U>
- friend class linked_ptr;
-
- T* value_;
- linked_ptr_internal link_;
-
- void depart() {
- if (link_.depart()) delete value_;
- }
-
- void capture(T* ptr) {
- value_ = ptr;
- link_.join_new();
- }
-
- template <typename U> void copy(linked_ptr<U> const* ptr) {
- value_ = ptr->get();
- if (value_)
- link_.join(&ptr->link_);
- else
- link_.join_new();
- }
-};
-
-template<typename T> inline
-bool operator==(T* ptr, const linked_ptr<T>& x) {
- return ptr == x.get();
-}
-
-template<typename T> inline
-bool operator!=(T* ptr, const linked_ptr<T>& x) {
- return ptr != x.get();
-}
-
-// A function to convert T* into linked_ptr<T>
-// Doing e.g. make_linked_ptr(new FooBarBaz<type>(arg)) is a shorter notation
-// for linked_ptr<FooBarBaz<type> >(new FooBarBaz<type>(arg))
-template <typename T>
-linked_ptr<T> make_linked_ptr(T* ptr) {
- return linked_ptr<T>(ptr);
-}
-
-} // namespace internal
-} // namespace testing
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_
diff --git a/test/gtest/include/gtest/internal/gtest-param-util-generated.h b/test/gtest/include/gtest/internal/gtest-param-util-generated.h
deleted file mode 100644
index 4d1d81d..0000000
--- a/test/gtest/include/gtest/internal/gtest-param-util-generated.h
+++ /dev/null
@@ -1,5146 +0,0 @@
-// This file was GENERATED by command:
-// pump.py gtest-param-util-generated.h.pump
-// DO NOT EDIT BY HAND!!!
-
-// Copyright 2008 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vladl@google.com (Vlad Losev)
-
-// Type and function utilities for implementing parameterized tests.
-// This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
-//
-// Currently Google Test supports at most 50 arguments in Values,
-// and at most 10 arguments in Combine. Please contact
-// googletestframework@googlegroups.com if you need more.
-// Please note that the number of arguments to Combine is limited
-// by the maximum arity of the implementation of tuple which is
-// currently set at 10.
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
-
-// scripts/fuse_gtest.py depends on gtest's own header being #included
-// *unconditionally*. Therefore these #includes cannot be moved
-// inside #if GTEST_HAS_PARAM_TEST.
-#include "gtest/internal/gtest-param-util.h"
-#include "gtest/internal/gtest-port.h"
-
-#if GTEST_HAS_PARAM_TEST
-
-namespace testing {
-
-// Forward declarations of ValuesIn(), which is implemented in
-// include/gtest/gtest-param-test.h.
-template <typename ForwardIterator>
-internal::ParamGenerator<
- typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
-ValuesIn(ForwardIterator begin, ForwardIterator end);
-
-template <typename T, size_t N>
-internal::ParamGenerator<T> ValuesIn(const T (&array)[N]);
-
-template <class Container>
-internal::ParamGenerator<typename Container::value_type> ValuesIn(
- const Container& container);
-
-namespace internal {
-
-// Used in the Values() function to provide polymorphic capabilities.
-template <typename T1>
-class ValueArray1 {
- public:
- explicit ValueArray1(T1 v1) : v1_(v1) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray1& other);
-
- const T1 v1_;
-};
-
-template <typename T1, typename T2>
-class ValueArray2 {
- public:
- ValueArray2(T1 v1, T2 v2) : v1_(v1), v2_(v2) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray2& other);
-
- const T1 v1_;
- const T2 v2_;
-};
-
-template <typename T1, typename T2, typename T3>
-class ValueArray3 {
- public:
- ValueArray3(T1 v1, T2 v2, T3 v3) : v1_(v1), v2_(v2), v3_(v3) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray3& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4>
-class ValueArray4 {
- public:
- ValueArray4(T1 v1, T2 v2, T3 v3, T4 v4) : v1_(v1), v2_(v2), v3_(v3),
- v4_(v4) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray4& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5>
-class ValueArray5 {
- public:
- ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) : v1_(v1), v2_(v2), v3_(v3),
- v4_(v4), v5_(v5) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray5& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6>
-class ValueArray6 {
- public:
- ValueArray6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) : v1_(v1), v2_(v2),
- v3_(v3), v4_(v4), v5_(v5), v6_(v6) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray6& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7>
-class ValueArray7 {
- public:
- ValueArray7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) : v1_(v1),
- v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray7& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8>
-class ValueArray8 {
- public:
- ValueArray8(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
- T8 v8) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray8& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9>
-class ValueArray9 {
- public:
- ValueArray9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
- T9 v9) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray9& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10>
-class ValueArray10 {
- public:
- ValueArray10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray10& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11>
-class ValueArray11 {
- public:
- ValueArray11(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
- v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray11& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12>
-class ValueArray12 {
- public:
- ValueArray12(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
- v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray12& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13>
-class ValueArray13 {
- public:
- ValueArray13(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
- v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
- v12_(v12), v13_(v13) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray13& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14>
-class ValueArray14 {
- public:
- ValueArray14(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) : v1_(v1), v2_(v2), v3_(v3),
- v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
- v11_(v11), v12_(v12), v13_(v13), v14_(v14) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray14& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15>
-class ValueArray15 {
- public:
- ValueArray15(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) : v1_(v1), v2_(v2),
- v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
- v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray15& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16>
-class ValueArray16 {
- public:
- ValueArray16(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) : v1_(v1),
- v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
- v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
- v16_(v16) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray16& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17>
-class ValueArray17 {
- public:
- ValueArray17(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
- T17 v17) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
- v15_(v15), v16_(v16), v17_(v17) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray17& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18>
-class ValueArray18 {
- public:
- ValueArray18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
- v15_(v15), v16_(v16), v17_(v17), v18_(v18) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray18& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19>
-class ValueArray19 {
- public:
- ValueArray19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
- v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
- v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray19& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20>
-class ValueArray20 {
- public:
- ValueArray20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
- v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
- v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
- v19_(v19), v20_(v20) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray20& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21>
-class ValueArray21 {
- public:
- ValueArray21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
- v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
- v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
- v18_(v18), v19_(v19), v20_(v20), v21_(v21) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray21& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22>
-class ValueArray22 {
- public:
- ValueArray22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) : v1_(v1), v2_(v2), v3_(v3),
- v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
- v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
- v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray22& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23>
-class ValueArray23 {
- public:
- ValueArray23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) : v1_(v1), v2_(v2),
- v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
- v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
- v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
- v23_(v23) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray23& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24>
-class ValueArray24 {
- public:
- ValueArray24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) : v1_(v1),
- v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
- v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
- v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
- v22_(v22), v23_(v23), v24_(v24) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray24& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25>
-class ValueArray25 {
- public:
- ValueArray25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
- T25 v25) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
- v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
- v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray25& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26>
-class ValueArray26 {
- public:
- ValueArray26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
- v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
- v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray26& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27>
-class ValueArray27 {
- public:
- ValueArray27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
- v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
- v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
- v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
- v26_(v26), v27_(v27) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray27& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28>
-class ValueArray28 {
- public:
- ValueArray28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
- v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
- v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
- v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
- v25_(v25), v26_(v26), v27_(v27), v28_(v28) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray28& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29>
-class ValueArray29 {
- public:
- ValueArray29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
- v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
- v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
- v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
- v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray29& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30>
-class ValueArray30 {
- public:
- ValueArray30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) : v1_(v1), v2_(v2), v3_(v3),
- v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
- v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
- v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
- v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
- v29_(v29), v30_(v30) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray30& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31>
-class ValueArray31 {
- public:
- ValueArray31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) : v1_(v1), v2_(v2),
- v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
- v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
- v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
- v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
- v29_(v29), v30_(v30), v31_(v31) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray31& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32>
-class ValueArray32 {
- public:
- ValueArray32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) : v1_(v1),
- v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
- v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
- v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
- v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
- v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray32& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33>
-class ValueArray33 {
- public:
- ValueArray33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32,
- T33 v33) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
- v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
- v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
- v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
- v33_(v33) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray33& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34>
-class ValueArray34 {
- public:
- ValueArray34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
- v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
- v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
- v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
- v33_(v33), v34_(v34) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray34& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35>
-class ValueArray35 {
- public:
- ValueArray35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
- v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
- v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
- v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
- v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31),
- v32_(v32), v33_(v33), v34_(v34), v35_(v35) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray35& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36>
-class ValueArray36 {
- public:
- ValueArray36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
- v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
- v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
- v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
- v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30),
- v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray36& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37>
-class ValueArray37 {
- public:
- ValueArray37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
- v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
- v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
- v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
- v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29),
- v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35),
- v36_(v36), v37_(v37) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray37& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38>
-class ValueArray38 {
- public:
- ValueArray38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) : v1_(v1), v2_(v2), v3_(v3),
- v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
- v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
- v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
- v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
- v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
- v35_(v35), v36_(v36), v37_(v37), v38_(v38) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray38& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39>
-class ValueArray39 {
- public:
- ValueArray39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) : v1_(v1), v2_(v2),
- v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
- v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
- v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
- v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
- v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
- v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray39& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40>
-class ValueArray40 {
- public:
- ValueArray40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) : v1_(v1),
- v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
- v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
- v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
- v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
- v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33),
- v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39),
- v40_(v40) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray40& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41>
-class ValueArray41 {
- public:
- ValueArray41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40,
- T41 v41) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
- v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
- v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
- v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
- v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
- v39_(v39), v40_(v40), v41_(v41) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray41& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
- const T41 v41_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42>
-class ValueArray42 {
- public:
- ValueArray42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
- T42 v42) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
- v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
- v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
- v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
- v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
- v39_(v39), v40_(v40), v41_(v41), v42_(v42) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
- static_cast<T>(v42_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray42& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
- const T41 v41_;
- const T42 v42_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43>
-class ValueArray43 {
- public:
- ValueArray43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
- T42 v42, T43 v43) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
- v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
- v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
- v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
- v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31),
- v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37),
- v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
- static_cast<T>(v42_), static_cast<T>(v43_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray43& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
- const T41 v41_;
- const T42 v42_;
- const T43 v43_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44>
-class ValueArray44 {
- public:
- ValueArray44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
- T42 v42, T43 v43, T44 v44) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
- v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
- v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
- v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
- v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30),
- v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36),
- v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42),
- v43_(v43), v44_(v44) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
- static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray44& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
- const T41 v41_;
- const T42 v42_;
- const T43 v43_;
- const T44 v44_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45>
-class ValueArray45 {
- public:
- ValueArray45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
- T42 v42, T43 v43, T44 v44, T45 v45) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
- v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
- v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
- v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
- v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29),
- v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35),
- v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41),
- v42_(v42), v43_(v43), v44_(v44), v45_(v45) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
- static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
- static_cast<T>(v45_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray45& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
- const T41 v41_;
- const T42 v42_;
- const T43 v43_;
- const T44 v44_;
- const T45 v45_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46>
-class ValueArray46 {
- public:
- ValueArray46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
- T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) : v1_(v1), v2_(v2), v3_(v3),
- v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
- v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
- v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
- v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
- v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
- v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40),
- v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
- static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
- static_cast<T>(v45_), static_cast<T>(v46_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray46& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
- const T41 v41_;
- const T42 v42_;
- const T43 v43_;
- const T44 v44_;
- const T45 v45_;
- const T46 v46_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47>
-class ValueArray47 {
- public:
- ValueArray47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
- T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) : v1_(v1), v2_(v2),
- v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
- v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
- v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
- v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
- v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
- v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40),
- v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46),
- v47_(v47) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
- static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
- static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray47& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
- const T41 v41_;
- const T42 v42_;
- const T43 v43_;
- const T44 v44_;
- const T45 v45_;
- const T46 v46_;
- const T47 v47_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47, typename T48>
-class ValueArray48 {
- public:
- ValueArray48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
- T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) : v1_(v1),
- v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
- v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
- v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
- v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
- v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33),
- v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39),
- v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45),
- v46_(v46), v47_(v47), v48_(v48) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
- static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
- static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_),
- static_cast<T>(v48_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray48& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
- const T41 v41_;
- const T42 v42_;
- const T43 v43_;
- const T44 v44_;
- const T45 v45_;
- const T46 v46_;
- const T47 v47_;
- const T48 v48_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47, typename T48, typename T49>
-class ValueArray49 {
- public:
- ValueArray49(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
- T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48,
- T49 v49) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
- v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
- v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
- v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
- v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
- v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44),
- v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
- static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
- static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_),
- static_cast<T>(v48_), static_cast<T>(v49_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray49& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
- const T41 v41_;
- const T42 v42_;
- const T43 v43_;
- const T44 v44_;
- const T45 v45_;
- const T46 v46_;
- const T47 v47_;
- const T48 v48_;
- const T49 v49_;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47, typename T48, typename T49, typename T50>
-class ValueArray50 {
- public:
- ValueArray50(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
- T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49,
- T50 v50) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
- v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
- v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
- v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
- v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
- v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
- v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44),
- v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49), v50_(v50) {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
- static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
- static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
- static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
- static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
- static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
- static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
- static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
- static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
- static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
- static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
- static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
- static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
- static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
- static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
- static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_),
- static_cast<T>(v48_), static_cast<T>(v49_), static_cast<T>(v50_)};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray50& other);
-
- const T1 v1_;
- const T2 v2_;
- const T3 v3_;
- const T4 v4_;
- const T5 v5_;
- const T6 v6_;
- const T7 v7_;
- const T8 v8_;
- const T9 v9_;
- const T10 v10_;
- const T11 v11_;
- const T12 v12_;
- const T13 v13_;
- const T14 v14_;
- const T15 v15_;
- const T16 v16_;
- const T17 v17_;
- const T18 v18_;
- const T19 v19_;
- const T20 v20_;
- const T21 v21_;
- const T22 v22_;
- const T23 v23_;
- const T24 v24_;
- const T25 v25_;
- const T26 v26_;
- const T27 v27_;
- const T28 v28_;
- const T29 v29_;
- const T30 v30_;
- const T31 v31_;
- const T32 v32_;
- const T33 v33_;
- const T34 v34_;
- const T35 v35_;
- const T36 v36_;
- const T37 v37_;
- const T38 v38_;
- const T39 v39_;
- const T40 v40_;
- const T41 v41_;
- const T42 v42_;
- const T43 v43_;
- const T44 v44_;
- const T45 v45_;
- const T46 v46_;
- const T47 v47_;
- const T48 v48_;
- const T49 v49_;
- const T50 v50_;
-};
-
-# if GTEST_HAS_COMBINE
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Generates values from the Cartesian product of values produced
-// by the argument generators.
-//
-template <typename T1, typename T2>
-class CartesianProductGenerator2
- : public ParamGeneratorInterface< ::testing::tuple<T1, T2> > {
- public:
- typedef ::testing::tuple<T1, T2> ParamType;
-
- CartesianProductGenerator2(const ParamGenerator<T1>& g1,
- const ParamGenerator<T2>& g2)
- : g1_(g1), g2_(g2) {}
- virtual ~CartesianProductGenerator2() {}
-
- virtual ParamIteratorInterface<ParamType>* Begin() const {
- return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin());
- }
- virtual ParamIteratorInterface<ParamType>* End() const {
- return new Iterator(this, g1_, g1_.end(), g2_, g2_.end());
- }
-
- private:
- class Iterator : public ParamIteratorInterface<ParamType> {
- public:
- Iterator(const ParamGeneratorInterface<ParamType>* base,
- const ParamGenerator<T1>& g1,
- const typename ParamGenerator<T1>::iterator& current1,
- const ParamGenerator<T2>& g2,
- const typename ParamGenerator<T2>::iterator& current2)
- : base_(base),
- begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
- begin2_(g2.begin()), end2_(g2.end()), current2_(current2) {
- ComputeCurrentValue();
- }
- virtual ~Iterator() {}
-
- virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
- return base_;
- }
- // Advance should not be called on beyond-of-range iterators
- // so no component iterators must be beyond end of range, either.
- virtual void Advance() {
- assert(!AtEnd());
- ++current2_;
- if (current2_ == end2_) {
- current2_ = begin2_;
- ++current1_;
- }
- ComputeCurrentValue();
- }
- virtual ParamIteratorInterface<ParamType>* Clone() const {
- return new Iterator(*this);
- }
- virtual const ParamType* Current() const { return &current_value_; }
- virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const Iterator* typed_other =
- CheckedDowncastToActualType<const Iterator>(&other);
- // We must report iterators equal if they both point beyond their
- // respective ranges. That can happen in a variety of fashions,
- // so we have to consult AtEnd().
- return (AtEnd() && typed_other->AtEnd()) ||
- (
- current1_ == typed_other->current1_ &&
- current2_ == typed_other->current2_);
- }
-
- private:
- Iterator(const Iterator& other)
- : base_(other.base_),
- begin1_(other.begin1_),
- end1_(other.end1_),
- current1_(other.current1_),
- begin2_(other.begin2_),
- end2_(other.end2_),
- current2_(other.current2_) {
- ComputeCurrentValue();
- }
-
- void ComputeCurrentValue() {
- if (!AtEnd())
- current_value_ = ParamType(*current1_, *current2_);
- }
- bool AtEnd() const {
- // We must report iterator past the end of the range when either of the
- // component iterators has reached the end of its range.
- return
- current1_ == end1_ ||
- current2_ == end2_;
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<ParamType>* const base_;
- // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
- // current[i]_ is the actual traversing iterator.
- const typename ParamGenerator<T1>::iterator begin1_;
- const typename ParamGenerator<T1>::iterator end1_;
- typename ParamGenerator<T1>::iterator current1_;
- const typename ParamGenerator<T2>::iterator begin2_;
- const typename ParamGenerator<T2>::iterator end2_;
- typename ParamGenerator<T2>::iterator current2_;
- ParamType current_value_;
- }; // class CartesianProductGenerator2::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductGenerator2& other);
-
- const ParamGenerator<T1> g1_;
- const ParamGenerator<T2> g2_;
-}; // class CartesianProductGenerator2
-
-
-template <typename T1, typename T2, typename T3>
-class CartesianProductGenerator3
- : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3> > {
- public:
- typedef ::testing::tuple<T1, T2, T3> ParamType;
-
- CartesianProductGenerator3(const ParamGenerator<T1>& g1,
- const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3)
- : g1_(g1), g2_(g2), g3_(g3) {}
- virtual ~CartesianProductGenerator3() {}
-
- virtual ParamIteratorInterface<ParamType>* Begin() const {
- return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
- g3_.begin());
- }
- virtual ParamIteratorInterface<ParamType>* End() const {
- return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end());
- }
-
- private:
- class Iterator : public ParamIteratorInterface<ParamType> {
- public:
- Iterator(const ParamGeneratorInterface<ParamType>* base,
- const ParamGenerator<T1>& g1,
- const typename ParamGenerator<T1>::iterator& current1,
- const ParamGenerator<T2>& g2,
- const typename ParamGenerator<T2>::iterator& current2,
- const ParamGenerator<T3>& g3,
- const typename ParamGenerator<T3>::iterator& current3)
- : base_(base),
- begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
- begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
- begin3_(g3.begin()), end3_(g3.end()), current3_(current3) {
- ComputeCurrentValue();
- }
- virtual ~Iterator() {}
-
- virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
- return base_;
- }
- // Advance should not be called on beyond-of-range iterators
- // so no component iterators must be beyond end of range, either.
- virtual void Advance() {
- assert(!AtEnd());
- ++current3_;
- if (current3_ == end3_) {
- current3_ = begin3_;
- ++current2_;
- }
- if (current2_ == end2_) {
- current2_ = begin2_;
- ++current1_;
- }
- ComputeCurrentValue();
- }
- virtual ParamIteratorInterface<ParamType>* Clone() const {
- return new Iterator(*this);
- }
- virtual const ParamType* Current() const { return &current_value_; }
- virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const Iterator* typed_other =
- CheckedDowncastToActualType<const Iterator>(&other);
- // We must report iterators equal if they both point beyond their
- // respective ranges. That can happen in a variety of fashions,
- // so we have to consult AtEnd().
- return (AtEnd() && typed_other->AtEnd()) ||
- (
- current1_ == typed_other->current1_ &&
- current2_ == typed_other->current2_ &&
- current3_ == typed_other->current3_);
- }
-
- private:
- Iterator(const Iterator& other)
- : base_(other.base_),
- begin1_(other.begin1_),
- end1_(other.end1_),
- current1_(other.current1_),
- begin2_(other.begin2_),
- end2_(other.end2_),
- current2_(other.current2_),
- begin3_(other.begin3_),
- end3_(other.end3_),
- current3_(other.current3_) {
- ComputeCurrentValue();
- }
-
- void ComputeCurrentValue() {
- if (!AtEnd())
- current_value_ = ParamType(*current1_, *current2_, *current3_);
- }
- bool AtEnd() const {
- // We must report iterator past the end of the range when either of the
- // component iterators has reached the end of its range.
- return
- current1_ == end1_ ||
- current2_ == end2_ ||
- current3_ == end3_;
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<ParamType>* const base_;
- // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
- // current[i]_ is the actual traversing iterator.
- const typename ParamGenerator<T1>::iterator begin1_;
- const typename ParamGenerator<T1>::iterator end1_;
- typename ParamGenerator<T1>::iterator current1_;
- const typename ParamGenerator<T2>::iterator begin2_;
- const typename ParamGenerator<T2>::iterator end2_;
- typename ParamGenerator<T2>::iterator current2_;
- const typename ParamGenerator<T3>::iterator begin3_;
- const typename ParamGenerator<T3>::iterator end3_;
- typename ParamGenerator<T3>::iterator current3_;
- ParamType current_value_;
- }; // class CartesianProductGenerator3::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductGenerator3& other);
-
- const ParamGenerator<T1> g1_;
- const ParamGenerator<T2> g2_;
- const ParamGenerator<T3> g3_;
-}; // class CartesianProductGenerator3
-
-
-template <typename T1, typename T2, typename T3, typename T4>
-class CartesianProductGenerator4
- : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4> > {
- public:
- typedef ::testing::tuple<T1, T2, T3, T4> ParamType;
-
- CartesianProductGenerator4(const ParamGenerator<T1>& g1,
- const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
- const ParamGenerator<T4>& g4)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {}
- virtual ~CartesianProductGenerator4() {}
-
- virtual ParamIteratorInterface<ParamType>* Begin() const {
- return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
- g3_.begin(), g4_, g4_.begin());
- }
- virtual ParamIteratorInterface<ParamType>* End() const {
- return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
- g4_, g4_.end());
- }
-
- private:
- class Iterator : public ParamIteratorInterface<ParamType> {
- public:
- Iterator(const ParamGeneratorInterface<ParamType>* base,
- const ParamGenerator<T1>& g1,
- const typename ParamGenerator<T1>::iterator& current1,
- const ParamGenerator<T2>& g2,
- const typename ParamGenerator<T2>::iterator& current2,
- const ParamGenerator<T3>& g3,
- const typename ParamGenerator<T3>::iterator& current3,
- const ParamGenerator<T4>& g4,
- const typename ParamGenerator<T4>::iterator& current4)
- : base_(base),
- begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
- begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
- begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
- begin4_(g4.begin()), end4_(g4.end()), current4_(current4) {
- ComputeCurrentValue();
- }
- virtual ~Iterator() {}
-
- virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
- return base_;
- }
- // Advance should not be called on beyond-of-range iterators
- // so no component iterators must be beyond end of range, either.
- virtual void Advance() {
- assert(!AtEnd());
- ++current4_;
- if (current4_ == end4_) {
- current4_ = begin4_;
- ++current3_;
- }
- if (current3_ == end3_) {
- current3_ = begin3_;
- ++current2_;
- }
- if (current2_ == end2_) {
- current2_ = begin2_;
- ++current1_;
- }
- ComputeCurrentValue();
- }
- virtual ParamIteratorInterface<ParamType>* Clone() const {
- return new Iterator(*this);
- }
- virtual const ParamType* Current() const { return &current_value_; }
- virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const Iterator* typed_other =
- CheckedDowncastToActualType<const Iterator>(&other);
- // We must report iterators equal if they both point beyond their
- // respective ranges. That can happen in a variety of fashions,
- // so we have to consult AtEnd().
- return (AtEnd() && typed_other->AtEnd()) ||
- (
- current1_ == typed_other->current1_ &&
- current2_ == typed_other->current2_ &&
- current3_ == typed_other->current3_ &&
- current4_ == typed_other->current4_);
- }
-
- private:
- Iterator(const Iterator& other)
- : base_(other.base_),
- begin1_(other.begin1_),
- end1_(other.end1_),
- current1_(other.current1_),
- begin2_(other.begin2_),
- end2_(other.end2_),
- current2_(other.current2_),
- begin3_(other.begin3_),
- end3_(other.end3_),
- current3_(other.current3_),
- begin4_(other.begin4_),
- end4_(other.end4_),
- current4_(other.current4_) {
- ComputeCurrentValue();
- }
-
- void ComputeCurrentValue() {
- if (!AtEnd())
- current_value_ = ParamType(*current1_, *current2_, *current3_,
- *current4_);
- }
- bool AtEnd() const {
- // We must report iterator past the end of the range when either of the
- // component iterators has reached the end of its range.
- return
- current1_ == end1_ ||
- current2_ == end2_ ||
- current3_ == end3_ ||
- current4_ == end4_;
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<ParamType>* const base_;
- // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
- // current[i]_ is the actual traversing iterator.
- const typename ParamGenerator<T1>::iterator begin1_;
- const typename ParamGenerator<T1>::iterator end1_;
- typename ParamGenerator<T1>::iterator current1_;
- const typename ParamGenerator<T2>::iterator begin2_;
- const typename ParamGenerator<T2>::iterator end2_;
- typename ParamGenerator<T2>::iterator current2_;
- const typename ParamGenerator<T3>::iterator begin3_;
- const typename ParamGenerator<T3>::iterator end3_;
- typename ParamGenerator<T3>::iterator current3_;
- const typename ParamGenerator<T4>::iterator begin4_;
- const typename ParamGenerator<T4>::iterator end4_;
- typename ParamGenerator<T4>::iterator current4_;
- ParamType current_value_;
- }; // class CartesianProductGenerator4::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductGenerator4& other);
-
- const ParamGenerator<T1> g1_;
- const ParamGenerator<T2> g2_;
- const ParamGenerator<T3> g3_;
- const ParamGenerator<T4> g4_;
-}; // class CartesianProductGenerator4
-
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5>
-class CartesianProductGenerator5
- : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5> > {
- public:
- typedef ::testing::tuple<T1, T2, T3, T4, T5> ParamType;
-
- CartesianProductGenerator5(const ParamGenerator<T1>& g1,
- const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
- const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {}
- virtual ~CartesianProductGenerator5() {}
-
- virtual ParamIteratorInterface<ParamType>* Begin() const {
- return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
- g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin());
- }
- virtual ParamIteratorInterface<ParamType>* End() const {
- return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
- g4_, g4_.end(), g5_, g5_.end());
- }
-
- private:
- class Iterator : public ParamIteratorInterface<ParamType> {
- public:
- Iterator(const ParamGeneratorInterface<ParamType>* base,
- const ParamGenerator<T1>& g1,
- const typename ParamGenerator<T1>::iterator& current1,
- const ParamGenerator<T2>& g2,
- const typename ParamGenerator<T2>::iterator& current2,
- const ParamGenerator<T3>& g3,
- const typename ParamGenerator<T3>::iterator& current3,
- const ParamGenerator<T4>& g4,
- const typename ParamGenerator<T4>::iterator& current4,
- const ParamGenerator<T5>& g5,
- const typename ParamGenerator<T5>::iterator& current5)
- : base_(base),
- begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
- begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
- begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
- begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
- begin5_(g5.begin()), end5_(g5.end()), current5_(current5) {
- ComputeCurrentValue();
- }
- virtual ~Iterator() {}
-
- virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
- return base_;
- }
- // Advance should not be called on beyond-of-range iterators
- // so no component iterators must be beyond end of range, either.
- virtual void Advance() {
- assert(!AtEnd());
- ++current5_;
- if (current5_ == end5_) {
- current5_ = begin5_;
- ++current4_;
- }
- if (current4_ == end4_) {
- current4_ = begin4_;
- ++current3_;
- }
- if (current3_ == end3_) {
- current3_ = begin3_;
- ++current2_;
- }
- if (current2_ == end2_) {
- current2_ = begin2_;
- ++current1_;
- }
- ComputeCurrentValue();
- }
- virtual ParamIteratorInterface<ParamType>* Clone() const {
- return new Iterator(*this);
- }
- virtual const ParamType* Current() const { return &current_value_; }
- virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const Iterator* typed_other =
- CheckedDowncastToActualType<const Iterator>(&other);
- // We must report iterators equal if they both point beyond their
- // respective ranges. That can happen in a variety of fashions,
- // so we have to consult AtEnd().
- return (AtEnd() && typed_other->AtEnd()) ||
- (
- current1_ == typed_other->current1_ &&
- current2_ == typed_other->current2_ &&
- current3_ == typed_other->current3_ &&
- current4_ == typed_other->current4_ &&
- current5_ == typed_other->current5_);
- }
-
- private:
- Iterator(const Iterator& other)
- : base_(other.base_),
- begin1_(other.begin1_),
- end1_(other.end1_),
- current1_(other.current1_),
- begin2_(other.begin2_),
- end2_(other.end2_),
- current2_(other.current2_),
- begin3_(other.begin3_),
- end3_(other.end3_),
- current3_(other.current3_),
- begin4_(other.begin4_),
- end4_(other.end4_),
- current4_(other.current4_),
- begin5_(other.begin5_),
- end5_(other.end5_),
- current5_(other.current5_) {
- ComputeCurrentValue();
- }
-
- void ComputeCurrentValue() {
- if (!AtEnd())
- current_value_ = ParamType(*current1_, *current2_, *current3_,
- *current4_, *current5_);
- }
- bool AtEnd() const {
- // We must report iterator past the end of the range when either of the
- // component iterators has reached the end of its range.
- return
- current1_ == end1_ ||
- current2_ == end2_ ||
- current3_ == end3_ ||
- current4_ == end4_ ||
- current5_ == end5_;
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<ParamType>* const base_;
- // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
- // current[i]_ is the actual traversing iterator.
- const typename ParamGenerator<T1>::iterator begin1_;
- const typename ParamGenerator<T1>::iterator end1_;
- typename ParamGenerator<T1>::iterator current1_;
- const typename ParamGenerator<T2>::iterator begin2_;
- const typename ParamGenerator<T2>::iterator end2_;
- typename ParamGenerator<T2>::iterator current2_;
- const typename ParamGenerator<T3>::iterator begin3_;
- const typename ParamGenerator<T3>::iterator end3_;
- typename ParamGenerator<T3>::iterator current3_;
- const typename ParamGenerator<T4>::iterator begin4_;
- const typename ParamGenerator<T4>::iterator end4_;
- typename ParamGenerator<T4>::iterator current4_;
- const typename ParamGenerator<T5>::iterator begin5_;
- const typename ParamGenerator<T5>::iterator end5_;
- typename ParamGenerator<T5>::iterator current5_;
- ParamType current_value_;
- }; // class CartesianProductGenerator5::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductGenerator5& other);
-
- const ParamGenerator<T1> g1_;
- const ParamGenerator<T2> g2_;
- const ParamGenerator<T3> g3_;
- const ParamGenerator<T4> g4_;
- const ParamGenerator<T5> g5_;
-}; // class CartesianProductGenerator5
-
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6>
-class CartesianProductGenerator6
- : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5,
- T6> > {
- public:
- typedef ::testing::tuple<T1, T2, T3, T4, T5, T6> ParamType;
-
- CartesianProductGenerator6(const ParamGenerator<T1>& g1,
- const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
- const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
- const ParamGenerator<T6>& g6)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {}
- virtual ~CartesianProductGenerator6() {}
-
- virtual ParamIteratorInterface<ParamType>* Begin() const {
- return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
- g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin());
- }
- virtual ParamIteratorInterface<ParamType>* End() const {
- return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
- g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end());
- }
-
- private:
- class Iterator : public ParamIteratorInterface<ParamType> {
- public:
- Iterator(const ParamGeneratorInterface<ParamType>* base,
- const ParamGenerator<T1>& g1,
- const typename ParamGenerator<T1>::iterator& current1,
- const ParamGenerator<T2>& g2,
- const typename ParamGenerator<T2>::iterator& current2,
- const ParamGenerator<T3>& g3,
- const typename ParamGenerator<T3>::iterator& current3,
- const ParamGenerator<T4>& g4,
- const typename ParamGenerator<T4>::iterator& current4,
- const ParamGenerator<T5>& g5,
- const typename ParamGenerator<T5>::iterator& current5,
- const ParamGenerator<T6>& g6,
- const typename ParamGenerator<T6>::iterator& current6)
- : base_(base),
- begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
- begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
- begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
- begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
- begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
- begin6_(g6.begin()), end6_(g6.end()), current6_(current6) {
- ComputeCurrentValue();
- }
- virtual ~Iterator() {}
-
- virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
- return base_;
- }
- // Advance should not be called on beyond-of-range iterators
- // so no component iterators must be beyond end of range, either.
- virtual void Advance() {
- assert(!AtEnd());
- ++current6_;
- if (current6_ == end6_) {
- current6_ = begin6_;
- ++current5_;
- }
- if (current5_ == end5_) {
- current5_ = begin5_;
- ++current4_;
- }
- if (current4_ == end4_) {
- current4_ = begin4_;
- ++current3_;
- }
- if (current3_ == end3_) {
- current3_ = begin3_;
- ++current2_;
- }
- if (current2_ == end2_) {
- current2_ = begin2_;
- ++current1_;
- }
- ComputeCurrentValue();
- }
- virtual ParamIteratorInterface<ParamType>* Clone() const {
- return new Iterator(*this);
- }
- virtual const ParamType* Current() const { return &current_value_; }
- virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const Iterator* typed_other =
- CheckedDowncastToActualType<const Iterator>(&other);
- // We must report iterators equal if they both point beyond their
- // respective ranges. That can happen in a variety of fashions,
- // so we have to consult AtEnd().
- return (AtEnd() && typed_other->AtEnd()) ||
- (
- current1_ == typed_other->current1_ &&
- current2_ == typed_other->current2_ &&
- current3_ == typed_other->current3_ &&
- current4_ == typed_other->current4_ &&
- current5_ == typed_other->current5_ &&
- current6_ == typed_other->current6_);
- }
-
- private:
- Iterator(const Iterator& other)
- : base_(other.base_),
- begin1_(other.begin1_),
- end1_(other.end1_),
- current1_(other.current1_),
- begin2_(other.begin2_),
- end2_(other.end2_),
- current2_(other.current2_),
- begin3_(other.begin3_),
- end3_(other.end3_),
- current3_(other.current3_),
- begin4_(other.begin4_),
- end4_(other.end4_),
- current4_(other.current4_),
- begin5_(other.begin5_),
- end5_(other.end5_),
- current5_(other.current5_),
- begin6_(other.begin6_),
- end6_(other.end6_),
- current6_(other.current6_) {
- ComputeCurrentValue();
- }
-
- void ComputeCurrentValue() {
- if (!AtEnd())
- current_value_ = ParamType(*current1_, *current2_, *current3_,
- *current4_, *current5_, *current6_);
- }
- bool AtEnd() const {
- // We must report iterator past the end of the range when either of the
- // component iterators has reached the end of its range.
- return
- current1_ == end1_ ||
- current2_ == end2_ ||
- current3_ == end3_ ||
- current4_ == end4_ ||
- current5_ == end5_ ||
- current6_ == end6_;
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<ParamType>* const base_;
- // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
- // current[i]_ is the actual traversing iterator.
- const typename ParamGenerator<T1>::iterator begin1_;
- const typename ParamGenerator<T1>::iterator end1_;
- typename ParamGenerator<T1>::iterator current1_;
- const typename ParamGenerator<T2>::iterator begin2_;
- const typename ParamGenerator<T2>::iterator end2_;
- typename ParamGenerator<T2>::iterator current2_;
- const typename ParamGenerator<T3>::iterator begin3_;
- const typename ParamGenerator<T3>::iterator end3_;
- typename ParamGenerator<T3>::iterator current3_;
- const typename ParamGenerator<T4>::iterator begin4_;
- const typename ParamGenerator<T4>::iterator end4_;
- typename ParamGenerator<T4>::iterator current4_;
- const typename ParamGenerator<T5>::iterator begin5_;
- const typename ParamGenerator<T5>::iterator end5_;
- typename ParamGenerator<T5>::iterator current5_;
- const typename ParamGenerator<T6>::iterator begin6_;
- const typename ParamGenerator<T6>::iterator end6_;
- typename ParamGenerator<T6>::iterator current6_;
- ParamType current_value_;
- }; // class CartesianProductGenerator6::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductGenerator6& other);
-
- const ParamGenerator<T1> g1_;
- const ParamGenerator<T2> g2_;
- const ParamGenerator<T3> g3_;
- const ParamGenerator<T4> g4_;
- const ParamGenerator<T5> g5_;
- const ParamGenerator<T6> g6_;
-}; // class CartesianProductGenerator6
-
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7>
-class CartesianProductGenerator7
- : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, T6,
- T7> > {
- public:
- typedef ::testing::tuple<T1, T2, T3, T4, T5, T6, T7> ParamType;
-
- CartesianProductGenerator7(const ParamGenerator<T1>& g1,
- const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
- const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
- const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {}
- virtual ~CartesianProductGenerator7() {}
-
- virtual ParamIteratorInterface<ParamType>* Begin() const {
- return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
- g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
- g7_.begin());
- }
- virtual ParamIteratorInterface<ParamType>* End() const {
- return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
- g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end());
- }
-
- private:
- class Iterator : public ParamIteratorInterface<ParamType> {
- public:
- Iterator(const ParamGeneratorInterface<ParamType>* base,
- const ParamGenerator<T1>& g1,
- const typename ParamGenerator<T1>::iterator& current1,
- const ParamGenerator<T2>& g2,
- const typename ParamGenerator<T2>::iterator& current2,
- const ParamGenerator<T3>& g3,
- const typename ParamGenerator<T3>::iterator& current3,
- const ParamGenerator<T4>& g4,
- const typename ParamGenerator<T4>::iterator& current4,
- const ParamGenerator<T5>& g5,
- const typename ParamGenerator<T5>::iterator& current5,
- const ParamGenerator<T6>& g6,
- const typename ParamGenerator<T6>::iterator& current6,
- const ParamGenerator<T7>& g7,
- const typename ParamGenerator<T7>::iterator& current7)
- : base_(base),
- begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
- begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
- begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
- begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
- begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
- begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
- begin7_(g7.begin()), end7_(g7.end()), current7_(current7) {
- ComputeCurrentValue();
- }
- virtual ~Iterator() {}
-
- virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
- return base_;
- }
- // Advance should not be called on beyond-of-range iterators
- // so no component iterators must be beyond end of range, either.
- virtual void Advance() {
- assert(!AtEnd());
- ++current7_;
- if (current7_ == end7_) {
- current7_ = begin7_;
- ++current6_;
- }
- if (current6_ == end6_) {
- current6_ = begin6_;
- ++current5_;
- }
- if (current5_ == end5_) {
- current5_ = begin5_;
- ++current4_;
- }
- if (current4_ == end4_) {
- current4_ = begin4_;
- ++current3_;
- }
- if (current3_ == end3_) {
- current3_ = begin3_;
- ++current2_;
- }
- if (current2_ == end2_) {
- current2_ = begin2_;
- ++current1_;
- }
- ComputeCurrentValue();
- }
- virtual ParamIteratorInterface<ParamType>* Clone() const {
- return new Iterator(*this);
- }
- virtual const ParamType* Current() const { return &current_value_; }
- virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const Iterator* typed_other =
- CheckedDowncastToActualType<const Iterator>(&other);
- // We must report iterators equal if they both point beyond their
- // respective ranges. That can happen in a variety of fashions,
- // so we have to consult AtEnd().
- return (AtEnd() && typed_other->AtEnd()) ||
- (
- current1_ == typed_other->current1_ &&
- current2_ == typed_other->current2_ &&
- current3_ == typed_other->current3_ &&
- current4_ == typed_other->current4_ &&
- current5_ == typed_other->current5_ &&
- current6_ == typed_other->current6_ &&
- current7_ == typed_other->current7_);
- }
-
- private:
- Iterator(const Iterator& other)
- : base_(other.base_),
- begin1_(other.begin1_),
- end1_(other.end1_),
- current1_(other.current1_),
- begin2_(other.begin2_),
- end2_(other.end2_),
- current2_(other.current2_),
- begin3_(other.begin3_),
- end3_(other.end3_),
- current3_(other.current3_),
- begin4_(other.begin4_),
- end4_(other.end4_),
- current4_(other.current4_),
- begin5_(other.begin5_),
- end5_(other.end5_),
- current5_(other.current5_),
- begin6_(other.begin6_),
- end6_(other.end6_),
- current6_(other.current6_),
- begin7_(other.begin7_),
- end7_(other.end7_),
- current7_(other.current7_) {
- ComputeCurrentValue();
- }
-
- void ComputeCurrentValue() {
- if (!AtEnd())
- current_value_ = ParamType(*current1_, *current2_, *current3_,
- *current4_, *current5_, *current6_, *current7_);
- }
- bool AtEnd() const {
- // We must report iterator past the end of the range when either of the
- // component iterators has reached the end of its range.
- return
- current1_ == end1_ ||
- current2_ == end2_ ||
- current3_ == end3_ ||
- current4_ == end4_ ||
- current5_ == end5_ ||
- current6_ == end6_ ||
- current7_ == end7_;
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<ParamType>* const base_;
- // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
- // current[i]_ is the actual traversing iterator.
- const typename ParamGenerator<T1>::iterator begin1_;
- const typename ParamGenerator<T1>::iterator end1_;
- typename ParamGenerator<T1>::iterator current1_;
- const typename ParamGenerator<T2>::iterator begin2_;
- const typename ParamGenerator<T2>::iterator end2_;
- typename ParamGenerator<T2>::iterator current2_;
- const typename ParamGenerator<T3>::iterator begin3_;
- const typename ParamGenerator<T3>::iterator end3_;
- typename ParamGenerator<T3>::iterator current3_;
- const typename ParamGenerator<T4>::iterator begin4_;
- const typename ParamGenerator<T4>::iterator end4_;
- typename ParamGenerator<T4>::iterator current4_;
- const typename ParamGenerator<T5>::iterator begin5_;
- const typename ParamGenerator<T5>::iterator end5_;
- typename ParamGenerator<T5>::iterator current5_;
- const typename ParamGenerator<T6>::iterator begin6_;
- const typename ParamGenerator<T6>::iterator end6_;
- typename ParamGenerator<T6>::iterator current6_;
- const typename ParamGenerator<T7>::iterator begin7_;
- const typename ParamGenerator<T7>::iterator end7_;
- typename ParamGenerator<T7>::iterator current7_;
- ParamType current_value_;
- }; // class CartesianProductGenerator7::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductGenerator7& other);
-
- const ParamGenerator<T1> g1_;
- const ParamGenerator<T2> g2_;
- const ParamGenerator<T3> g3_;
- const ParamGenerator<T4> g4_;
- const ParamGenerator<T5> g5_;
- const ParamGenerator<T6> g6_;
- const ParamGenerator<T7> g7_;
-}; // class CartesianProductGenerator7
-
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8>
-class CartesianProductGenerator8
- : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, T6,
- T7, T8> > {
- public:
- typedef ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8> ParamType;
-
- CartesianProductGenerator8(const ParamGenerator<T1>& g1,
- const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
- const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
- const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7,
- const ParamGenerator<T8>& g8)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7),
- g8_(g8) {}
- virtual ~CartesianProductGenerator8() {}
-
- virtual ParamIteratorInterface<ParamType>* Begin() const {
- return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
- g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
- g7_.begin(), g8_, g8_.begin());
- }
- virtual ParamIteratorInterface<ParamType>* End() const {
- return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
- g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
- g8_.end());
- }
-
- private:
- class Iterator : public ParamIteratorInterface<ParamType> {
- public:
- Iterator(const ParamGeneratorInterface<ParamType>* base,
- const ParamGenerator<T1>& g1,
- const typename ParamGenerator<T1>::iterator& current1,
- const ParamGenerator<T2>& g2,
- const typename ParamGenerator<T2>::iterator& current2,
- const ParamGenerator<T3>& g3,
- const typename ParamGenerator<T3>::iterator& current3,
- const ParamGenerator<T4>& g4,
- const typename ParamGenerator<T4>::iterator& current4,
- const ParamGenerator<T5>& g5,
- const typename ParamGenerator<T5>::iterator& current5,
- const ParamGenerator<T6>& g6,
- const typename ParamGenerator<T6>::iterator& current6,
- const ParamGenerator<T7>& g7,
- const typename ParamGenerator<T7>::iterator& current7,
- const ParamGenerator<T8>& g8,
- const typename ParamGenerator<T8>::iterator& current8)
- : base_(base),
- begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
- begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
- begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
- begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
- begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
- begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
- begin7_(g7.begin()), end7_(g7.end()), current7_(current7),
- begin8_(g8.begin()), end8_(g8.end()), current8_(current8) {
- ComputeCurrentValue();
- }
- virtual ~Iterator() {}
-
- virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
- return base_;
- }
- // Advance should not be called on beyond-of-range iterators
- // so no component iterators must be beyond end of range, either.
- virtual void Advance() {
- assert(!AtEnd());
- ++current8_;
- if (current8_ == end8_) {
- current8_ = begin8_;
- ++current7_;
- }
- if (current7_ == end7_) {
- current7_ = begin7_;
- ++current6_;
- }
- if (current6_ == end6_) {
- current6_ = begin6_;
- ++current5_;
- }
- if (current5_ == end5_) {
- current5_ = begin5_;
- ++current4_;
- }
- if (current4_ == end4_) {
- current4_ = begin4_;
- ++current3_;
- }
- if (current3_ == end3_) {
- current3_ = begin3_;
- ++current2_;
- }
- if (current2_ == end2_) {
- current2_ = begin2_;
- ++current1_;
- }
- ComputeCurrentValue();
- }
- virtual ParamIteratorInterface<ParamType>* Clone() const {
- return new Iterator(*this);
- }
- virtual const ParamType* Current() const { return &current_value_; }
- virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const Iterator* typed_other =
- CheckedDowncastToActualType<const Iterator>(&other);
- // We must report iterators equal if they both point beyond their
- // respective ranges. That can happen in a variety of fashions,
- // so we have to consult AtEnd().
- return (AtEnd() && typed_other->AtEnd()) ||
- (
- current1_ == typed_other->current1_ &&
- current2_ == typed_other->current2_ &&
- current3_ == typed_other->current3_ &&
- current4_ == typed_other->current4_ &&
- current5_ == typed_other->current5_ &&
- current6_ == typed_other->current6_ &&
- current7_ == typed_other->current7_ &&
- current8_ == typed_other->current8_);
- }
-
- private:
- Iterator(const Iterator& other)
- : base_(other.base_),
- begin1_(other.begin1_),
- end1_(other.end1_),
- current1_(other.current1_),
- begin2_(other.begin2_),
- end2_(other.end2_),
- current2_(other.current2_),
- begin3_(other.begin3_),
- end3_(other.end3_),
- current3_(other.current3_),
- begin4_(other.begin4_),
- end4_(other.end4_),
- current4_(other.current4_),
- begin5_(other.begin5_),
- end5_(other.end5_),
- current5_(other.current5_),
- begin6_(other.begin6_),
- end6_(other.end6_),
- current6_(other.current6_),
- begin7_(other.begin7_),
- end7_(other.end7_),
- current7_(other.current7_),
- begin8_(other.begin8_),
- end8_(other.end8_),
- current8_(other.current8_) {
- ComputeCurrentValue();
- }
-
- void ComputeCurrentValue() {
- if (!AtEnd())
- current_value_ = ParamType(*current1_, *current2_, *current3_,
- *current4_, *current5_, *current6_, *current7_, *current8_);
- }
- bool AtEnd() const {
- // We must report iterator past the end of the range when either of the
- // component iterators has reached the end of its range.
- return
- current1_ == end1_ ||
- current2_ == end2_ ||
- current3_ == end3_ ||
- current4_ == end4_ ||
- current5_ == end5_ ||
- current6_ == end6_ ||
- current7_ == end7_ ||
- current8_ == end8_;
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<ParamType>* const base_;
- // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
- // current[i]_ is the actual traversing iterator.
- const typename ParamGenerator<T1>::iterator begin1_;
- const typename ParamGenerator<T1>::iterator end1_;
- typename ParamGenerator<T1>::iterator current1_;
- const typename ParamGenerator<T2>::iterator begin2_;
- const typename ParamGenerator<T2>::iterator end2_;
- typename ParamGenerator<T2>::iterator current2_;
- const typename ParamGenerator<T3>::iterator begin3_;
- const typename ParamGenerator<T3>::iterator end3_;
- typename ParamGenerator<T3>::iterator current3_;
- const typename ParamGenerator<T4>::iterator begin4_;
- const typename ParamGenerator<T4>::iterator end4_;
- typename ParamGenerator<T4>::iterator current4_;
- const typename ParamGenerator<T5>::iterator begin5_;
- const typename ParamGenerator<T5>::iterator end5_;
- typename ParamGenerator<T5>::iterator current5_;
- const typename ParamGenerator<T6>::iterator begin6_;
- const typename ParamGenerator<T6>::iterator end6_;
- typename ParamGenerator<T6>::iterator current6_;
- const typename ParamGenerator<T7>::iterator begin7_;
- const typename ParamGenerator<T7>::iterator end7_;
- typename ParamGenerator<T7>::iterator current7_;
- const typename ParamGenerator<T8>::iterator begin8_;
- const typename ParamGenerator<T8>::iterator end8_;
- typename ParamGenerator<T8>::iterator current8_;
- ParamType current_value_;
- }; // class CartesianProductGenerator8::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductGenerator8& other);
-
- const ParamGenerator<T1> g1_;
- const ParamGenerator<T2> g2_;
- const ParamGenerator<T3> g3_;
- const ParamGenerator<T4> g4_;
- const ParamGenerator<T5> g5_;
- const ParamGenerator<T6> g6_;
- const ParamGenerator<T7> g7_;
- const ParamGenerator<T8> g8_;
-}; // class CartesianProductGenerator8
-
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9>
-class CartesianProductGenerator9
- : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, T6,
- T7, T8, T9> > {
- public:
- typedef ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9> ParamType;
-
- CartesianProductGenerator9(const ParamGenerator<T1>& g1,
- const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
- const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
- const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7,
- const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
- g9_(g9) {}
- virtual ~CartesianProductGenerator9() {}
-
- virtual ParamIteratorInterface<ParamType>* Begin() const {
- return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
- g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
- g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin());
- }
- virtual ParamIteratorInterface<ParamType>* End() const {
- return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
- g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
- g8_.end(), g9_, g9_.end());
- }
-
- private:
- class Iterator : public ParamIteratorInterface<ParamType> {
- public:
- Iterator(const ParamGeneratorInterface<ParamType>* base,
- const ParamGenerator<T1>& g1,
- const typename ParamGenerator<T1>::iterator& current1,
- const ParamGenerator<T2>& g2,
- const typename ParamGenerator<T2>::iterator& current2,
- const ParamGenerator<T3>& g3,
- const typename ParamGenerator<T3>::iterator& current3,
- const ParamGenerator<T4>& g4,
- const typename ParamGenerator<T4>::iterator& current4,
- const ParamGenerator<T5>& g5,
- const typename ParamGenerator<T5>::iterator& current5,
- const ParamGenerator<T6>& g6,
- const typename ParamGenerator<T6>::iterator& current6,
- const ParamGenerator<T7>& g7,
- const typename ParamGenerator<T7>::iterator& current7,
- const ParamGenerator<T8>& g8,
- const typename ParamGenerator<T8>::iterator& current8,
- const ParamGenerator<T9>& g9,
- const typename ParamGenerator<T9>::iterator& current9)
- : base_(base),
- begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
- begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
- begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
- begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
- begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
- begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
- begin7_(g7.begin()), end7_(g7.end()), current7_(current7),
- begin8_(g8.begin()), end8_(g8.end()), current8_(current8),
- begin9_(g9.begin()), end9_(g9.end()), current9_(current9) {
- ComputeCurrentValue();
- }
- virtual ~Iterator() {}
-
- virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
- return base_;
- }
- // Advance should not be called on beyond-of-range iterators
- // so no component iterators must be beyond end of range, either.
- virtual void Advance() {
- assert(!AtEnd());
- ++current9_;
- if (current9_ == end9_) {
- current9_ = begin9_;
- ++current8_;
- }
- if (current8_ == end8_) {
- current8_ = begin8_;
- ++current7_;
- }
- if (current7_ == end7_) {
- current7_ = begin7_;
- ++current6_;
- }
- if (current6_ == end6_) {
- current6_ = begin6_;
- ++current5_;
- }
- if (current5_ == end5_) {
- current5_ = begin5_;
- ++current4_;
- }
- if (current4_ == end4_) {
- current4_ = begin4_;
- ++current3_;
- }
- if (current3_ == end3_) {
- current3_ = begin3_;
- ++current2_;
- }
- if (current2_ == end2_) {
- current2_ = begin2_;
- ++current1_;
- }
- ComputeCurrentValue();
- }
- virtual ParamIteratorInterface<ParamType>* Clone() const {
- return new Iterator(*this);
- }
- virtual const ParamType* Current() const { return &current_value_; }
- virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const Iterator* typed_other =
- CheckedDowncastToActualType<const Iterator>(&other);
- // We must report iterators equal if they both point beyond their
- // respective ranges. That can happen in a variety of fashions,
- // so we have to consult AtEnd().
- return (AtEnd() && typed_other->AtEnd()) ||
- (
- current1_ == typed_other->current1_ &&
- current2_ == typed_other->current2_ &&
- current3_ == typed_other->current3_ &&
- current4_ == typed_other->current4_ &&
- current5_ == typed_other->current5_ &&
- current6_ == typed_other->current6_ &&
- current7_ == typed_other->current7_ &&
- current8_ == typed_other->current8_ &&
- current9_ == typed_other->current9_);
- }
-
- private:
- Iterator(const Iterator& other)
- : base_(other.base_),
- begin1_(other.begin1_),
- end1_(other.end1_),
- current1_(other.current1_),
- begin2_(other.begin2_),
- end2_(other.end2_),
- current2_(other.current2_),
- begin3_(other.begin3_),
- end3_(other.end3_),
- current3_(other.current3_),
- begin4_(other.begin4_),
- end4_(other.end4_),
- current4_(other.current4_),
- begin5_(other.begin5_),
- end5_(other.end5_),
- current5_(other.current5_),
- begin6_(other.begin6_),
- end6_(other.end6_),
- current6_(other.current6_),
- begin7_(other.begin7_),
- end7_(other.end7_),
- current7_(other.current7_),
- begin8_(other.begin8_),
- end8_(other.end8_),
- current8_(other.current8_),
- begin9_(other.begin9_),
- end9_(other.end9_),
- current9_(other.current9_) {
- ComputeCurrentValue();
- }
-
- void ComputeCurrentValue() {
- if (!AtEnd())
- current_value_ = ParamType(*current1_, *current2_, *current3_,
- *current4_, *current5_, *current6_, *current7_, *current8_,
- *current9_);
- }
- bool AtEnd() const {
- // We must report iterator past the end of the range when either of the
- // component iterators has reached the end of its range.
- return
- current1_ == end1_ ||
- current2_ == end2_ ||
- current3_ == end3_ ||
- current4_ == end4_ ||
- current5_ == end5_ ||
- current6_ == end6_ ||
- current7_ == end7_ ||
- current8_ == end8_ ||
- current9_ == end9_;
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<ParamType>* const base_;
- // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
- // current[i]_ is the actual traversing iterator.
- const typename ParamGenerator<T1>::iterator begin1_;
- const typename ParamGenerator<T1>::iterator end1_;
- typename ParamGenerator<T1>::iterator current1_;
- const typename ParamGenerator<T2>::iterator begin2_;
- const typename ParamGenerator<T2>::iterator end2_;
- typename ParamGenerator<T2>::iterator current2_;
- const typename ParamGenerator<T3>::iterator begin3_;
- const typename ParamGenerator<T3>::iterator end3_;
- typename ParamGenerator<T3>::iterator current3_;
- const typename ParamGenerator<T4>::iterator begin4_;
- const typename ParamGenerator<T4>::iterator end4_;
- typename ParamGenerator<T4>::iterator current4_;
- const typename ParamGenerator<T5>::iterator begin5_;
- const typename ParamGenerator<T5>::iterator end5_;
- typename ParamGenerator<T5>::iterator current5_;
- const typename ParamGenerator<T6>::iterator begin6_;
- const typename ParamGenerator<T6>::iterator end6_;
- typename ParamGenerator<T6>::iterator current6_;
- const typename ParamGenerator<T7>::iterator begin7_;
- const typename ParamGenerator<T7>::iterator end7_;
- typename ParamGenerator<T7>::iterator current7_;
- const typename ParamGenerator<T8>::iterator begin8_;
- const typename ParamGenerator<T8>::iterator end8_;
- typename ParamGenerator<T8>::iterator current8_;
- const typename ParamGenerator<T9>::iterator begin9_;
- const typename ParamGenerator<T9>::iterator end9_;
- typename ParamGenerator<T9>::iterator current9_;
- ParamType current_value_;
- }; // class CartesianProductGenerator9::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductGenerator9& other);
-
- const ParamGenerator<T1> g1_;
- const ParamGenerator<T2> g2_;
- const ParamGenerator<T3> g3_;
- const ParamGenerator<T4> g4_;
- const ParamGenerator<T5> g5_;
- const ParamGenerator<T6> g6_;
- const ParamGenerator<T7> g7_;
- const ParamGenerator<T8> g8_;
- const ParamGenerator<T9> g9_;
-}; // class CartesianProductGenerator9
-
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10>
-class CartesianProductGenerator10
- : public ParamGeneratorInterface< ::testing::tuple<T1, T2, T3, T4, T5, T6,
- T7, T8, T9, T10> > {
- public:
- typedef ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> ParamType;
-
- CartesianProductGenerator10(const ParamGenerator<T1>& g1,
- const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
- const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
- const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7,
- const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9,
- const ParamGenerator<T10>& g10)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
- g9_(g9), g10_(g10) {}
- virtual ~CartesianProductGenerator10() {}
-
- virtual ParamIteratorInterface<ParamType>* Begin() const {
- return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
- g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
- g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin(), g10_, g10_.begin());
- }
- virtual ParamIteratorInterface<ParamType>* End() const {
- return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
- g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
- g8_.end(), g9_, g9_.end(), g10_, g10_.end());
- }
-
- private:
- class Iterator : public ParamIteratorInterface<ParamType> {
- public:
- Iterator(const ParamGeneratorInterface<ParamType>* base,
- const ParamGenerator<T1>& g1,
- const typename ParamGenerator<T1>::iterator& current1,
- const ParamGenerator<T2>& g2,
- const typename ParamGenerator<T2>::iterator& current2,
- const ParamGenerator<T3>& g3,
- const typename ParamGenerator<T3>::iterator& current3,
- const ParamGenerator<T4>& g4,
- const typename ParamGenerator<T4>::iterator& current4,
- const ParamGenerator<T5>& g5,
- const typename ParamGenerator<T5>::iterator& current5,
- const ParamGenerator<T6>& g6,
- const typename ParamGenerator<T6>::iterator& current6,
- const ParamGenerator<T7>& g7,
- const typename ParamGenerator<T7>::iterator& current7,
- const ParamGenerator<T8>& g8,
- const typename ParamGenerator<T8>::iterator& current8,
- const ParamGenerator<T9>& g9,
- const typename ParamGenerator<T9>::iterator& current9,
- const ParamGenerator<T10>& g10,
- const typename ParamGenerator<T10>::iterator& current10)
- : base_(base),
- begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
- begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
- begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
- begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
- begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
- begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
- begin7_(g7.begin()), end7_(g7.end()), current7_(current7),
- begin8_(g8.begin()), end8_(g8.end()), current8_(current8),
- begin9_(g9.begin()), end9_(g9.end()), current9_(current9),
- begin10_(g10.begin()), end10_(g10.end()), current10_(current10) {
- ComputeCurrentValue();
- }
- virtual ~Iterator() {}
-
- virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
- return base_;
- }
- // Advance should not be called on beyond-of-range iterators
- // so no component iterators must be beyond end of range, either.
- virtual void Advance() {
- assert(!AtEnd());
- ++current10_;
- if (current10_ == end10_) {
- current10_ = begin10_;
- ++current9_;
- }
- if (current9_ == end9_) {
- current9_ = begin9_;
- ++current8_;
- }
- if (current8_ == end8_) {
- current8_ = begin8_;
- ++current7_;
- }
- if (current7_ == end7_) {
- current7_ = begin7_;
- ++current6_;
- }
- if (current6_ == end6_) {
- current6_ = begin6_;
- ++current5_;
- }
- if (current5_ == end5_) {
- current5_ = begin5_;
- ++current4_;
- }
- if (current4_ == end4_) {
- current4_ = begin4_;
- ++current3_;
- }
- if (current3_ == end3_) {
- current3_ = begin3_;
- ++current2_;
- }
- if (current2_ == end2_) {
- current2_ = begin2_;
- ++current1_;
- }
- ComputeCurrentValue();
- }
- virtual ParamIteratorInterface<ParamType>* Clone() const {
- return new Iterator(*this);
- }
- virtual const ParamType* Current() const { return &current_value_; }
- virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const Iterator* typed_other =
- CheckedDowncastToActualType<const Iterator>(&other);
- // We must report iterators equal if they both point beyond their
- // respective ranges. That can happen in a variety of fashions,
- // so we have to consult AtEnd().
- return (AtEnd() && typed_other->AtEnd()) ||
- (
- current1_ == typed_other->current1_ &&
- current2_ == typed_other->current2_ &&
- current3_ == typed_other->current3_ &&
- current4_ == typed_other->current4_ &&
- current5_ == typed_other->current5_ &&
- current6_ == typed_other->current6_ &&
- current7_ == typed_other->current7_ &&
- current8_ == typed_other->current8_ &&
- current9_ == typed_other->current9_ &&
- current10_ == typed_other->current10_);
- }
-
- private:
- Iterator(const Iterator& other)
- : base_(other.base_),
- begin1_(other.begin1_),
- end1_(other.end1_),
- current1_(other.current1_),
- begin2_(other.begin2_),
- end2_(other.end2_),
- current2_(other.current2_),
- begin3_(other.begin3_),
- end3_(other.end3_),
- current3_(other.current3_),
- begin4_(other.begin4_),
- end4_(other.end4_),
- current4_(other.current4_),
- begin5_(other.begin5_),
- end5_(other.end5_),
- current5_(other.current5_),
- begin6_(other.begin6_),
- end6_(other.end6_),
- current6_(other.current6_),
- begin7_(other.begin7_),
- end7_(other.end7_),
- current7_(other.current7_),
- begin8_(other.begin8_),
- end8_(other.end8_),
- current8_(other.current8_),
- begin9_(other.begin9_),
- end9_(other.end9_),
- current9_(other.current9_),
- begin10_(other.begin10_),
- end10_(other.end10_),
- current10_(other.current10_) {
- ComputeCurrentValue();
- }
-
- void ComputeCurrentValue() {
- if (!AtEnd())
- current_value_ = ParamType(*current1_, *current2_, *current3_,
- *current4_, *current5_, *current6_, *current7_, *current8_,
- *current9_, *current10_);
- }
- bool AtEnd() const {
- // We must report iterator past the end of the range when either of the
- // component iterators has reached the end of its range.
- return
- current1_ == end1_ ||
- current2_ == end2_ ||
- current3_ == end3_ ||
- current4_ == end4_ ||
- current5_ == end5_ ||
- current6_ == end6_ ||
- current7_ == end7_ ||
- current8_ == end8_ ||
- current9_ == end9_ ||
- current10_ == end10_;
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<ParamType>* const base_;
- // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
- // current[i]_ is the actual traversing iterator.
- const typename ParamGenerator<T1>::iterator begin1_;
- const typename ParamGenerator<T1>::iterator end1_;
- typename ParamGenerator<T1>::iterator current1_;
- const typename ParamGenerator<T2>::iterator begin2_;
- const typename ParamGenerator<T2>::iterator end2_;
- typename ParamGenerator<T2>::iterator current2_;
- const typename ParamGenerator<T3>::iterator begin3_;
- const typename ParamGenerator<T3>::iterator end3_;
- typename ParamGenerator<T3>::iterator current3_;
- const typename ParamGenerator<T4>::iterator begin4_;
- const typename ParamGenerator<T4>::iterator end4_;
- typename ParamGenerator<T4>::iterator current4_;
- const typename ParamGenerator<T5>::iterator begin5_;
- const typename ParamGenerator<T5>::iterator end5_;
- typename ParamGenerator<T5>::iterator current5_;
- const typename ParamGenerator<T6>::iterator begin6_;
- const typename ParamGenerator<T6>::iterator end6_;
- typename ParamGenerator<T6>::iterator current6_;
- const typename ParamGenerator<T7>::iterator begin7_;
- const typename ParamGenerator<T7>::iterator end7_;
- typename ParamGenerator<T7>::iterator current7_;
- const typename ParamGenerator<T8>::iterator begin8_;
- const typename ParamGenerator<T8>::iterator end8_;
- typename ParamGenerator<T8>::iterator current8_;
- const typename ParamGenerator<T9>::iterator begin9_;
- const typename ParamGenerator<T9>::iterator end9_;
- typename ParamGenerator<T9>::iterator current9_;
- const typename ParamGenerator<T10>::iterator begin10_;
- const typename ParamGenerator<T10>::iterator end10_;
- typename ParamGenerator<T10>::iterator current10_;
- ParamType current_value_;
- }; // class CartesianProductGenerator10::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductGenerator10& other);
-
- const ParamGenerator<T1> g1_;
- const ParamGenerator<T2> g2_;
- const ParamGenerator<T3> g3_;
- const ParamGenerator<T4> g4_;
- const ParamGenerator<T5> g5_;
- const ParamGenerator<T6> g6_;
- const ParamGenerator<T7> g7_;
- const ParamGenerator<T8> g8_;
- const ParamGenerator<T9> g9_;
- const ParamGenerator<T10> g10_;
-}; // class CartesianProductGenerator10
-
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Helper classes providing Combine() with polymorphic features. They allow
-// casting CartesianProductGeneratorN<T> to ParamGenerator<U> if T is
-// convertible to U.
-//
-template <class Generator1, class Generator2>
-class CartesianProductHolder2 {
- public:
-CartesianProductHolder2(const Generator1& g1, const Generator2& g2)
- : g1_(g1), g2_(g2) {}
- template <typename T1, typename T2>
- operator ParamGenerator< ::testing::tuple<T1, T2> >() const {
- return ParamGenerator< ::testing::tuple<T1, T2> >(
- new CartesianProductGenerator2<T1, T2>(
- static_cast<ParamGenerator<T1> >(g1_),
- static_cast<ParamGenerator<T2> >(g2_)));
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductHolder2& other);
-
- const Generator1 g1_;
- const Generator2 g2_;
-}; // class CartesianProductHolder2
-
-template <class Generator1, class Generator2, class Generator3>
-class CartesianProductHolder3 {
- public:
-CartesianProductHolder3(const Generator1& g1, const Generator2& g2,
- const Generator3& g3)
- : g1_(g1), g2_(g2), g3_(g3) {}
- template <typename T1, typename T2, typename T3>
- operator ParamGenerator< ::testing::tuple<T1, T2, T3> >() const {
- return ParamGenerator< ::testing::tuple<T1, T2, T3> >(
- new CartesianProductGenerator3<T1, T2, T3>(
- static_cast<ParamGenerator<T1> >(g1_),
- static_cast<ParamGenerator<T2> >(g2_),
- static_cast<ParamGenerator<T3> >(g3_)));
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductHolder3& other);
-
- const Generator1 g1_;
- const Generator2 g2_;
- const Generator3 g3_;
-}; // class CartesianProductHolder3
-
-template <class Generator1, class Generator2, class Generator3,
- class Generator4>
-class CartesianProductHolder4 {
- public:
-CartesianProductHolder4(const Generator1& g1, const Generator2& g2,
- const Generator3& g3, const Generator4& g4)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {}
- template <typename T1, typename T2, typename T3, typename T4>
- operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4> >() const {
- return ParamGenerator< ::testing::tuple<T1, T2, T3, T4> >(
- new CartesianProductGenerator4<T1, T2, T3, T4>(
- static_cast<ParamGenerator<T1> >(g1_),
- static_cast<ParamGenerator<T2> >(g2_),
- static_cast<ParamGenerator<T3> >(g3_),
- static_cast<ParamGenerator<T4> >(g4_)));
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductHolder4& other);
-
- const Generator1 g1_;
- const Generator2 g2_;
- const Generator3 g3_;
- const Generator4 g4_;
-}; // class CartesianProductHolder4
-
-template <class Generator1, class Generator2, class Generator3,
- class Generator4, class Generator5>
-class CartesianProductHolder5 {
- public:
-CartesianProductHolder5(const Generator1& g1, const Generator2& g2,
- const Generator3& g3, const Generator4& g4, const Generator5& g5)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {}
- template <typename T1, typename T2, typename T3, typename T4, typename T5>
- operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5> >() const {
- return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5> >(
- new CartesianProductGenerator5<T1, T2, T3, T4, T5>(
- static_cast<ParamGenerator<T1> >(g1_),
- static_cast<ParamGenerator<T2> >(g2_),
- static_cast<ParamGenerator<T3> >(g3_),
- static_cast<ParamGenerator<T4> >(g4_),
- static_cast<ParamGenerator<T5> >(g5_)));
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductHolder5& other);
-
- const Generator1 g1_;
- const Generator2 g2_;
- const Generator3 g3_;
- const Generator4 g4_;
- const Generator5 g5_;
-}; // class CartesianProductHolder5
-
-template <class Generator1, class Generator2, class Generator3,
- class Generator4, class Generator5, class Generator6>
-class CartesianProductHolder6 {
- public:
-CartesianProductHolder6(const Generator1& g1, const Generator2& g2,
- const Generator3& g3, const Generator4& g4, const Generator5& g5,
- const Generator6& g6)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {}
- template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6>
- operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6> >() const {
- return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6> >(
- new CartesianProductGenerator6<T1, T2, T3, T4, T5, T6>(
- static_cast<ParamGenerator<T1> >(g1_),
- static_cast<ParamGenerator<T2> >(g2_),
- static_cast<ParamGenerator<T3> >(g3_),
- static_cast<ParamGenerator<T4> >(g4_),
- static_cast<ParamGenerator<T5> >(g5_),
- static_cast<ParamGenerator<T6> >(g6_)));
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductHolder6& other);
-
- const Generator1 g1_;
- const Generator2 g2_;
- const Generator3 g3_;
- const Generator4 g4_;
- const Generator5 g5_;
- const Generator6 g6_;
-}; // class CartesianProductHolder6
-
-template <class Generator1, class Generator2, class Generator3,
- class Generator4, class Generator5, class Generator6, class Generator7>
-class CartesianProductHolder7 {
- public:
-CartesianProductHolder7(const Generator1& g1, const Generator2& g2,
- const Generator3& g3, const Generator4& g4, const Generator5& g5,
- const Generator6& g6, const Generator7& g7)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {}
- template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7>
- operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6,
- T7> >() const {
- return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7> >(
- new CartesianProductGenerator7<T1, T2, T3, T4, T5, T6, T7>(
- static_cast<ParamGenerator<T1> >(g1_),
- static_cast<ParamGenerator<T2> >(g2_),
- static_cast<ParamGenerator<T3> >(g3_),
- static_cast<ParamGenerator<T4> >(g4_),
- static_cast<ParamGenerator<T5> >(g5_),
- static_cast<ParamGenerator<T6> >(g6_),
- static_cast<ParamGenerator<T7> >(g7_)));
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductHolder7& other);
-
- const Generator1 g1_;
- const Generator2 g2_;
- const Generator3 g3_;
- const Generator4 g4_;
- const Generator5 g5_;
- const Generator6 g6_;
- const Generator7 g7_;
-}; // class CartesianProductHolder7
-
-template <class Generator1, class Generator2, class Generator3,
- class Generator4, class Generator5, class Generator6, class Generator7,
- class Generator8>
-class CartesianProductHolder8 {
- public:
-CartesianProductHolder8(const Generator1& g1, const Generator2& g2,
- const Generator3& g3, const Generator4& g4, const Generator5& g5,
- const Generator6& g6, const Generator7& g7, const Generator8& g8)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7),
- g8_(g8) {}
- template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8>
- operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7,
- T8> >() const {
- return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8> >(
- new CartesianProductGenerator8<T1, T2, T3, T4, T5, T6, T7, T8>(
- static_cast<ParamGenerator<T1> >(g1_),
- static_cast<ParamGenerator<T2> >(g2_),
- static_cast<ParamGenerator<T3> >(g3_),
- static_cast<ParamGenerator<T4> >(g4_),
- static_cast<ParamGenerator<T5> >(g5_),
- static_cast<ParamGenerator<T6> >(g6_),
- static_cast<ParamGenerator<T7> >(g7_),
- static_cast<ParamGenerator<T8> >(g8_)));
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductHolder8& other);
-
- const Generator1 g1_;
- const Generator2 g2_;
- const Generator3 g3_;
- const Generator4 g4_;
- const Generator5 g5_;
- const Generator6 g6_;
- const Generator7 g7_;
- const Generator8 g8_;
-}; // class CartesianProductHolder8
-
-template <class Generator1, class Generator2, class Generator3,
- class Generator4, class Generator5, class Generator6, class Generator7,
- class Generator8, class Generator9>
-class CartesianProductHolder9 {
- public:
-CartesianProductHolder9(const Generator1& g1, const Generator2& g2,
- const Generator3& g3, const Generator4& g4, const Generator5& g5,
- const Generator6& g6, const Generator7& g7, const Generator8& g8,
- const Generator9& g9)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
- g9_(g9) {}
- template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9>
- operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
- T9> >() const {
- return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
- T9> >(
- new CartesianProductGenerator9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(
- static_cast<ParamGenerator<T1> >(g1_),
- static_cast<ParamGenerator<T2> >(g2_),
- static_cast<ParamGenerator<T3> >(g3_),
- static_cast<ParamGenerator<T4> >(g4_),
- static_cast<ParamGenerator<T5> >(g5_),
- static_cast<ParamGenerator<T6> >(g6_),
- static_cast<ParamGenerator<T7> >(g7_),
- static_cast<ParamGenerator<T8> >(g8_),
- static_cast<ParamGenerator<T9> >(g9_)));
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductHolder9& other);
-
- const Generator1 g1_;
- const Generator2 g2_;
- const Generator3 g3_;
- const Generator4 g4_;
- const Generator5 g5_;
- const Generator6 g6_;
- const Generator7 g7_;
- const Generator8 g8_;
- const Generator9 g9_;
-}; // class CartesianProductHolder9
-
-template <class Generator1, class Generator2, class Generator3,
- class Generator4, class Generator5, class Generator6, class Generator7,
- class Generator8, class Generator9, class Generator10>
-class CartesianProductHolder10 {
- public:
-CartesianProductHolder10(const Generator1& g1, const Generator2& g2,
- const Generator3& g3, const Generator4& g4, const Generator5& g5,
- const Generator6& g6, const Generator7& g7, const Generator8& g8,
- const Generator9& g9, const Generator10& g10)
- : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
- g9_(g9), g10_(g10) {}
- template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10>
- operator ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9,
- T10> >() const {
- return ParamGenerator< ::testing::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9,
- T10> >(
- new CartesianProductGenerator10<T1, T2, T3, T4, T5, T6, T7, T8, T9,
- T10>(
- static_cast<ParamGenerator<T1> >(g1_),
- static_cast<ParamGenerator<T2> >(g2_),
- static_cast<ParamGenerator<T3> >(g3_),
- static_cast<ParamGenerator<T4> >(g4_),
- static_cast<ParamGenerator<T5> >(g5_),
- static_cast<ParamGenerator<T6> >(g6_),
- static_cast<ParamGenerator<T7> >(g7_),
- static_cast<ParamGenerator<T8> >(g8_),
- static_cast<ParamGenerator<T9> >(g9_),
- static_cast<ParamGenerator<T10> >(g10_)));
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductHolder10& other);
-
- const Generator1 g1_;
- const Generator2 g2_;
- const Generator3 g3_;
- const Generator4 g4_;
- const Generator5 g5_;
- const Generator6 g6_;
- const Generator7 g7_;
- const Generator8 g8_;
- const Generator9 g9_;
- const Generator10 g10_;
-}; // class CartesianProductHolder10
-
-# endif // GTEST_HAS_COMBINE
-
-} // namespace internal
-} // namespace testing
-
-#endif // GTEST_HAS_PARAM_TEST
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
diff --git a/test/gtest/include/gtest/internal/gtest-param-util-generated.h.pump b/test/gtest/include/gtest/internal/gtest-param-util-generated.h.pump
deleted file mode 100644
index 5c7c47a..0000000
--- a/test/gtest/include/gtest/internal/gtest-param-util-generated.h.pump
+++ /dev/null
@@ -1,286 +0,0 @@
-$$ -*- mode: c++; -*-
-$var n = 50 $$ Maximum length of Values arguments we want to support.
-$var maxtuple = 10 $$ Maximum number of Combine arguments we want to support.
-// Copyright 2008 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vladl@google.com (Vlad Losev)
-
-// Type and function utilities for implementing parameterized tests.
-// This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
-//
-// Currently Google Test supports at most $n arguments in Values,
-// and at most $maxtuple arguments in Combine. Please contact
-// googletestframework@googlegroups.com if you need more.
-// Please note that the number of arguments to Combine is limited
-// by the maximum arity of the implementation of tuple which is
-// currently set at $maxtuple.
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
-
-// scripts/fuse_gtest.py depends on gtest's own header being #included
-// *unconditionally*. Therefore these #includes cannot be moved
-// inside #if GTEST_HAS_PARAM_TEST.
-#include "gtest/internal/gtest-param-util.h"
-#include "gtest/internal/gtest-port.h"
-
-#if GTEST_HAS_PARAM_TEST
-
-namespace testing {
-
-// Forward declarations of ValuesIn(), which is implemented in
-// include/gtest/gtest-param-test.h.
-template <typename ForwardIterator>
-internal::ParamGenerator<
- typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
-ValuesIn(ForwardIterator begin, ForwardIterator end);
-
-template <typename T, size_t N>
-internal::ParamGenerator<T> ValuesIn(const T (&array)[N]);
-
-template <class Container>
-internal::ParamGenerator<typename Container::value_type> ValuesIn(
- const Container& container);
-
-namespace internal {
-
-// Used in the Values() function to provide polymorphic capabilities.
-$range i 1..n
-$for i [[
-$range j 1..i
-
-template <$for j, [[typename T$j]]>
-class ValueArray$i {
- public:
- $if i==1 [[explicit ]]ValueArray$i($for j, [[T$j v$j]]) : $for j, [[v$(j)_(v$j)]] {}
-
- template <typename T>
- operator ParamGenerator<T>() const {
- const T array[] = {$for j, [[static_cast<T>(v$(j)_)]]};
- return ValuesIn(array);
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const ValueArray$i& other);
-
-$for j [[
-
- const T$j v$(j)_;
-]]
-
-};
-
-]]
-
-# if GTEST_HAS_COMBINE
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Generates values from the Cartesian product of values produced
-// by the argument generators.
-//
-$range i 2..maxtuple
-$for i [[
-$range j 1..i
-$range k 2..i
-
-template <$for j, [[typename T$j]]>
-class CartesianProductGenerator$i
- : public ParamGeneratorInterface< ::testing::tuple<$for j, [[T$j]]> > {
- public:
- typedef ::testing::tuple<$for j, [[T$j]]> ParamType;
-
- CartesianProductGenerator$i($for j, [[const ParamGenerator<T$j>& g$j]])
- : $for j, [[g$(j)_(g$j)]] {}
- virtual ~CartesianProductGenerator$i() {}
-
- virtual ParamIteratorInterface<ParamType>* Begin() const {
- return new Iterator(this, $for j, [[g$(j)_, g$(j)_.begin()]]);
- }
- virtual ParamIteratorInterface<ParamType>* End() const {
- return new Iterator(this, $for j, [[g$(j)_, g$(j)_.end()]]);
- }
-
- private:
- class Iterator : public ParamIteratorInterface<ParamType> {
- public:
- Iterator(const ParamGeneratorInterface<ParamType>* base, $for j, [[
-
- const ParamGenerator<T$j>& g$j,
- const typename ParamGenerator<T$j>::iterator& current$(j)]])
- : base_(base),
-$for j, [[
-
- begin$(j)_(g$j.begin()), end$(j)_(g$j.end()), current$(j)_(current$j)
-]] {
- ComputeCurrentValue();
- }
- virtual ~Iterator() {}
-
- virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
- return base_;
- }
- // Advance should not be called on beyond-of-range iterators
- // so no component iterators must be beyond end of range, either.
- virtual void Advance() {
- assert(!AtEnd());
- ++current$(i)_;
-
-$for k [[
- if (current$(i+2-k)_ == end$(i+2-k)_) {
- current$(i+2-k)_ = begin$(i+2-k)_;
- ++current$(i+2-k-1)_;
- }
-
-]]
- ComputeCurrentValue();
- }
- virtual ParamIteratorInterface<ParamType>* Clone() const {
- return new Iterator(*this);
- }
- virtual const ParamType* Current() const { return &current_value_; }
- virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const Iterator* typed_other =
- CheckedDowncastToActualType<const Iterator>(&other);
- // We must report iterators equal if they both point beyond their
- // respective ranges. That can happen in a variety of fashions,
- // so we have to consult AtEnd().
- return (AtEnd() && typed_other->AtEnd()) ||
- ($for j && [[
-
- current$(j)_ == typed_other->current$(j)_
-]]);
- }
-
- private:
- Iterator(const Iterator& other)
- : base_(other.base_), $for j, [[
-
- begin$(j)_(other.begin$(j)_),
- end$(j)_(other.end$(j)_),
- current$(j)_(other.current$(j)_)
-]] {
- ComputeCurrentValue();
- }
-
- void ComputeCurrentValue() {
- if (!AtEnd())
- current_value_ = ParamType($for j, [[*current$(j)_]]);
- }
- bool AtEnd() const {
- // We must report iterator past the end of the range when either of the
- // component iterators has reached the end of its range.
- return
-$for j || [[
-
- current$(j)_ == end$(j)_
-]];
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<ParamType>* const base_;
- // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
- // current[i]_ is the actual traversing iterator.
-$for j [[
-
- const typename ParamGenerator<T$j>::iterator begin$(j)_;
- const typename ParamGenerator<T$j>::iterator end$(j)_;
- typename ParamGenerator<T$j>::iterator current$(j)_;
-]]
-
- ParamType current_value_;
- }; // class CartesianProductGenerator$i::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductGenerator$i& other);
-
-
-$for j [[
- const ParamGenerator<T$j> g$(j)_;
-
-]]
-}; // class CartesianProductGenerator$i
-
-
-]]
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Helper classes providing Combine() with polymorphic features. They allow
-// casting CartesianProductGeneratorN<T> to ParamGenerator<U> if T is
-// convertible to U.
-//
-$range i 2..maxtuple
-$for i [[
-$range j 1..i
-
-template <$for j, [[class Generator$j]]>
-class CartesianProductHolder$i {
- public:
-CartesianProductHolder$i($for j, [[const Generator$j& g$j]])
- : $for j, [[g$(j)_(g$j)]] {}
- template <$for j, [[typename T$j]]>
- operator ParamGenerator< ::testing::tuple<$for j, [[T$j]]> >() const {
- return ParamGenerator< ::testing::tuple<$for j, [[T$j]]> >(
- new CartesianProductGenerator$i<$for j, [[T$j]]>(
-$for j,[[
-
- static_cast<ParamGenerator<T$j> >(g$(j)_)
-]]));
- }
-
- private:
- // No implementation - assignment is unsupported.
- void operator=(const CartesianProductHolder$i& other);
-
-
-$for j [[
- const Generator$j g$(j)_;
-
-]]
-}; // class CartesianProductHolder$i
-
-]]
-
-# endif // GTEST_HAS_COMBINE
-
-} // namespace internal
-} // namespace testing
-
-#endif // GTEST_HAS_PARAM_TEST
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
diff --git a/test/gtest/include/gtest/internal/gtest-param-util.h b/test/gtest/include/gtest/internal/gtest-param-util.h
deleted file mode 100644
index 82cab9b..0000000
--- a/test/gtest/include/gtest/internal/gtest-param-util.h
+++ /dev/null
@@ -1,731 +0,0 @@
-// Copyright 2008 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: vladl@google.com (Vlad Losev)
-
-// Type and function utilities for implementing parameterized tests.
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
-
-#include <ctype.h>
-
-#include <iterator>
-#include <set>
-#include <utility>
-#include <vector>
-
-// scripts/fuse_gtest.py depends on gtest's own header being #included
-// *unconditionally*. Therefore these #includes cannot be moved
-// inside #if GTEST_HAS_PARAM_TEST.
-#include "gtest/internal/gtest-internal.h"
-#include "gtest/internal/gtest-linked_ptr.h"
-#include "gtest/internal/gtest-port.h"
-#include "gtest/gtest-printers.h"
-
-#if GTEST_HAS_PARAM_TEST
-
-namespace testing {
-
-// Input to a parameterized test name generator, describing a test parameter.
-// Consists of the parameter value and the integer parameter index.
-template <class ParamType>
-struct TestParamInfo {
- TestParamInfo(const ParamType& a_param, size_t an_index) :
- param(a_param),
- index(an_index) {}
- ParamType param;
- size_t index;
-};
-
-// A builtin parameterized test name generator which returns the result of
-// testing::PrintToString.
-struct PrintToStringParamName {
- template <class ParamType>
- std::string operator()(const TestParamInfo<ParamType>& info) const {
- return PrintToString(info.param);
- }
-};
-
-namespace internal {
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Outputs a message explaining invalid registration of different
-// fixture class for the same test case. This may happen when
-// TEST_P macro is used to define two tests with the same name
-// but in different namespaces.
-GTEST_API_ void ReportInvalidTestCaseType(const char* test_case_name,
- CodeLocation code_location);
-
-template <typename> class ParamGeneratorInterface;
-template <typename> class ParamGenerator;
-
-// Interface for iterating over elements provided by an implementation
-// of ParamGeneratorInterface<T>.
-template <typename T>
-class ParamIteratorInterface {
- public:
- virtual ~ParamIteratorInterface() {}
- // A pointer to the base generator instance.
- // Used only for the purposes of iterator comparison
- // to make sure that two iterators belong to the same generator.
- virtual const ParamGeneratorInterface<T>* BaseGenerator() const = 0;
- // Advances iterator to point to the next element
- // provided by the generator. The caller is responsible
- // for not calling Advance() on an iterator equal to
- // BaseGenerator()->End().
- virtual void Advance() = 0;
- // Clones the iterator object. Used for implementing copy semantics
- // of ParamIterator<T>.
- virtual ParamIteratorInterface* Clone() const = 0;
- // Dereferences the current iterator and provides (read-only) access
- // to the pointed value. It is the caller's responsibility not to call
- // Current() on an iterator equal to BaseGenerator()->End().
- // Used for implementing ParamGenerator<T>::operator*().
- virtual const T* Current() const = 0;
- // Determines whether the given iterator and other point to the same
- // element in the sequence generated by the generator.
- // Used for implementing ParamGenerator<T>::operator==().
- virtual bool Equals(const ParamIteratorInterface& other) const = 0;
-};
-
-// Class iterating over elements provided by an implementation of
-// ParamGeneratorInterface<T>. It wraps ParamIteratorInterface<T>
-// and implements the const forward iterator concept.
-template <typename T>
-class ParamIterator {
- public:
- typedef T value_type;
- typedef const T& reference;
- typedef ptrdiff_t difference_type;
-
- // ParamIterator assumes ownership of the impl_ pointer.
- ParamIterator(const ParamIterator& other) : impl_(other.impl_->Clone()) {}
- ParamIterator& operator=(const ParamIterator& other) {
- if (this != &other)
- impl_.reset(other.impl_->Clone());
- return *this;
- }
-
- const T& operator*() const { return *impl_->Current(); }
- const T* operator->() const { return impl_->Current(); }
- // Prefix version of operator++.
- ParamIterator& operator++() {
- impl_->Advance();
- return *this;
- }
- // Postfix version of operator++.
- ParamIterator operator++(int /*unused*/) {
- ParamIteratorInterface<T>* clone = impl_->Clone();
- impl_->Advance();
- return ParamIterator(clone);
- }
- bool operator==(const ParamIterator& other) const {
- return impl_.get() == other.impl_.get() || impl_->Equals(*other.impl_);
- }
- bool operator!=(const ParamIterator& other) const {
- return !(*this == other);
- }
-
- private:
- friend class ParamGenerator<T>;
- explicit ParamIterator(ParamIteratorInterface<T>* impl) : impl_(impl) {}
- scoped_ptr<ParamIteratorInterface<T> > impl_;
-};
-
-// ParamGeneratorInterface<T> is the binary interface to access generators
-// defined in other translation units.
-template <typename T>
-class ParamGeneratorInterface {
- public:
- typedef T ParamType;
-
- virtual ~ParamGeneratorInterface() {}
-
- // Generator interface definition
- virtual ParamIteratorInterface<T>* Begin() const = 0;
- virtual ParamIteratorInterface<T>* End() const = 0;
-};
-
-// Wraps ParamGeneratorInterface<T> and provides general generator syntax
-// compatible with the STL Container concept.
-// This class implements copy initialization semantics and the contained
-// ParamGeneratorInterface<T> instance is shared among all copies
-// of the original object. This is possible because that instance is immutable.
-template<typename T>
-class ParamGenerator {
- public:
- typedef ParamIterator<T> iterator;
-
- explicit ParamGenerator(ParamGeneratorInterface<T>* impl) : impl_(impl) {}
- ParamGenerator(const ParamGenerator& other) : impl_(other.impl_) {}
-
- ParamGenerator& operator=(const ParamGenerator& other) {
- impl_ = other.impl_;
- return *this;
- }
-
- iterator begin() const { return iterator(impl_->Begin()); }
- iterator end() const { return iterator(impl_->End()); }
-
- private:
- linked_ptr<const ParamGeneratorInterface<T> > impl_;
-};
-
-// Generates values from a range of two comparable values. Can be used to
-// generate sequences of user-defined types that implement operator+() and
-// operator<().
-// This class is used in the Range() function.
-template <typename T, typename IncrementT>
-class RangeGenerator : public ParamGeneratorInterface<T> {
- public:
- RangeGenerator(T begin, T end, IncrementT step)
- : begin_(begin), end_(end),
- step_(step), end_index_(CalculateEndIndex(begin, end, step)) {}
- virtual ~RangeGenerator() {}
-
- virtual ParamIteratorInterface<T>* Begin() const {
- return new Iterator(this, begin_, 0, step_);
- }
- virtual ParamIteratorInterface<T>* End() const {
- return new Iterator(this, end_, end_index_, step_);
- }
-
- private:
- class Iterator : public ParamIteratorInterface<T> {
- public:
- Iterator(const ParamGeneratorInterface<T>* base, T value, int index,
- IncrementT step)
- : base_(base), value_(value), index_(index), step_(step) {}
- virtual ~Iterator() {}
-
- virtual const ParamGeneratorInterface<T>* BaseGenerator() const {
- return base_;
- }
- virtual void Advance() {
- value_ = static_cast<T>(value_ + step_);
- index_++;
- }
- virtual ParamIteratorInterface<T>* Clone() const {
- return new Iterator(*this);
- }
- virtual const T* Current() const { return &value_; }
- virtual bool Equals(const ParamIteratorInterface<T>& other) const {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- const int other_index =
- CheckedDowncastToActualType<const Iterator>(&other)->index_;
- return index_ == other_index;
- }
-
- private:
- Iterator(const Iterator& other)
- : ParamIteratorInterface<T>(),
- base_(other.base_), value_(other.value_), index_(other.index_),
- step_(other.step_) {}
-
- // No implementation - assignment is unsupported.
- void operator=(const Iterator& other);
-
- const ParamGeneratorInterface<T>* const base_;
- T value_;
- int index_;
- const IncrementT step_;
- }; // class RangeGenerator::Iterator
-
- static int CalculateEndIndex(const T& begin,
- const T& end,
- const IncrementT& step) {
- int end_index = 0;
- for (T i = begin; i < end; i = static_cast<T>(i + step))
- end_index++;
- return end_index;
- }
-
- // No implementation - assignment is unsupported.
- void operator=(const RangeGenerator& other);
-
- const T begin_;
- const T end_;
- const IncrementT step_;
- // The index for the end() iterator. All the elements in the generated
- // sequence are indexed (0-based) to aid iterator comparison.
- const int end_index_;
-}; // class RangeGenerator
-
-
-// Generates values from a pair of STL-style iterators. Used in the
-// ValuesIn() function. The elements are copied from the source range
-// since the source can be located on the stack, and the generator
-// is likely to persist beyond that stack frame.
-template <typename T>
-class ValuesInIteratorRangeGenerator : public ParamGeneratorInterface<T> {
- public:
- template <typename ForwardIterator>
- ValuesInIteratorRangeGenerator(ForwardIterator begin, ForwardIterator end)
- : container_(begin, end) {}
- virtual ~ValuesInIteratorRangeGenerator() {}
-
- virtual ParamIteratorInterface<T>* Begin() const {
- return new Iterator(this, container_.begin());
- }
- virtual ParamIteratorInterface<T>* End() const {
- return new Iterator(this, container_.end());
- }
-
- private:
- typedef typename ::std::vector<T> ContainerType;
-
- class Iterator : public ParamIteratorInterface<T> {
- public:
- Iterator(const ParamGeneratorInterface<T>* base,
- typename ContainerType::const_iterator iterator)
- : base_(base), iterator_(iterator) {}
- virtual ~Iterator() {}
-
- virtual const ParamGeneratorInterface<T>* BaseGenerator() const {
- return base_;
- }
- virtual void Advance() {
- ++iterator_;
- value_.reset();
- }
- virtual ParamIteratorInterface<T>* Clone() const {
- return new Iterator(*this);
- }
- // We need to use cached value referenced by iterator_ because *iterator_
- // can return a temporary object (and of type other then T), so just
- // having "return &*iterator_;" doesn't work.
- // value_ is updated here and not in Advance() because Advance()
- // can advance iterator_ beyond the end of the range, and we cannot
- // detect that fact. The client code, on the other hand, is
- // responsible for not calling Current() on an out-of-range iterator.
- virtual const T* Current() const {
- if (value_.get() == NULL)
- value_.reset(new T(*iterator_));
- return value_.get();
- }
- virtual bool Equals(const ParamIteratorInterface<T>& other) const {
- // Having the same base generator guarantees that the other
- // iterator is of the same type and we can downcast.
- GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
- << "The program attempted to compare iterators "
- << "from different generators." << std::endl;
- return iterator_ ==
- CheckedDowncastToActualType<const Iterator>(&other)->iterator_;
- }
-
- private:
- Iterator(const Iterator& other)
- // The explicit constructor call suppresses a false warning
- // emitted by gcc when supplied with the -Wextra option.
- : ParamIteratorInterface<T>(),
- base_(other.base_),
- iterator_(other.iterator_) {}
-
- const ParamGeneratorInterface<T>* const base_;
- typename ContainerType::const_iterator iterator_;
- // A cached value of *iterator_. We keep it here to allow access by
- // pointer in the wrapping iterator's operator->().
- // value_ needs to be mutable to be accessed in Current().
- // Use of scoped_ptr helps manage cached value's lifetime,
- // which is bound by the lifespan of the iterator itself.
- mutable scoped_ptr<const T> value_;
- }; // class ValuesInIteratorRangeGenerator::Iterator
-
- // No implementation - assignment is unsupported.
- void operator=(const ValuesInIteratorRangeGenerator& other);
-
- const ContainerType container_;
-}; // class ValuesInIteratorRangeGenerator
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Default parameterized test name generator, returns a string containing the
-// integer test parameter index.
-template <class ParamType>
-std::string DefaultParamName(const TestParamInfo<ParamType>& info) {
- Message name_stream;
- name_stream << info.index;
- return name_stream.GetString();
-}
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Parameterized test name overload helpers, which help the
-// INSTANTIATE_TEST_CASE_P macro choose between the default parameterized
-// test name generator and user param name generator.
-template <class ParamType, class ParamNameGenFunctor>
-ParamNameGenFunctor GetParamNameGen(ParamNameGenFunctor func) {
- return func;
-}
-
-template <class ParamType>
-struct ParamNameGenFunc {
- typedef std::string Type(const TestParamInfo<ParamType>&);
-};
-
-template <class ParamType>
-typename ParamNameGenFunc<ParamType>::Type *GetParamNameGen() {
- return DefaultParamName;
-}
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Stores a parameter value and later creates tests parameterized with that
-// value.
-template <class TestClass>
-class ParameterizedTestFactory : public TestFactoryBase {
- public:
- typedef typename TestClass::ParamType ParamType;
- explicit ParameterizedTestFactory(ParamType parameter) :
- parameter_(parameter) {}
- virtual Test* CreateTest() {
- TestClass::SetParam(&parameter_);
- return new TestClass();
- }
-
- private:
- const ParamType parameter_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestFactory);
-};
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// TestMetaFactoryBase is a base class for meta-factories that create
-// test factories for passing into MakeAndRegisterTestInfo function.
-template <class ParamType>
-class TestMetaFactoryBase {
- public:
- virtual ~TestMetaFactoryBase() {}
-
- virtual TestFactoryBase* CreateTestFactory(ParamType parameter) = 0;
-};
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// TestMetaFactory creates test factories for passing into
-// MakeAndRegisterTestInfo function. Since MakeAndRegisterTestInfo receives
-// ownership of test factory pointer, same factory object cannot be passed
-// into that method twice. But ParameterizedTestCaseInfo is going to call
-// it for each Test/Parameter value combination. Thus it needs meta factory
-// creator class.
-template <class TestCase>
-class TestMetaFactory
- : public TestMetaFactoryBase<typename TestCase::ParamType> {
- public:
- typedef typename TestCase::ParamType ParamType;
-
- TestMetaFactory() {}
-
- virtual TestFactoryBase* CreateTestFactory(ParamType parameter) {
- return new ParameterizedTestFactory<TestCase>(parameter);
- }
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestMetaFactory);
-};
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// ParameterizedTestCaseInfoBase is a generic interface
-// to ParameterizedTestCaseInfo classes. ParameterizedTestCaseInfoBase
-// accumulates test information provided by TEST_P macro invocations
-// and generators provided by INSTANTIATE_TEST_CASE_P macro invocations
-// and uses that information to register all resulting test instances
-// in RegisterTests method. The ParameterizeTestCaseRegistry class holds
-// a collection of pointers to the ParameterizedTestCaseInfo objects
-// and calls RegisterTests() on each of them when asked.
-class ParameterizedTestCaseInfoBase {
- public:
- virtual ~ParameterizedTestCaseInfoBase() {}
-
- // Base part of test case name for display purposes.
- virtual const string& GetTestCaseName() const = 0;
- // Test case id to verify identity.
- virtual TypeId GetTestCaseTypeId() const = 0;
- // UnitTest class invokes this method to register tests in this
- // test case right before running them in RUN_ALL_TESTS macro.
- // This method should not be called more then once on any single
- // instance of a ParameterizedTestCaseInfoBase derived class.
- virtual void RegisterTests() = 0;
-
- protected:
- ParameterizedTestCaseInfoBase() {}
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfoBase);
-};
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// ParameterizedTestCaseInfo accumulates tests obtained from TEST_P
-// macro invocations for a particular test case and generators
-// obtained from INSTANTIATE_TEST_CASE_P macro invocations for that
-// test case. It registers tests with all values generated by all
-// generators when asked.
-template <class TestCase>
-class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase {
- public:
- // ParamType and GeneratorCreationFunc are private types but are required
- // for declarations of public methods AddTestPattern() and
- // AddTestCaseInstantiation().
- typedef typename TestCase::ParamType ParamType;
- // A function that returns an instance of appropriate generator type.
- typedef ParamGenerator<ParamType>(GeneratorCreationFunc)();
- typedef typename ParamNameGenFunc<ParamType>::Type ParamNameGeneratorFunc;
-
- explicit ParameterizedTestCaseInfo(
- const char* name, CodeLocation code_location)
- : test_case_name_(name), code_location_(code_location) {}
-
- // Test case base name for display purposes.
- virtual const string& GetTestCaseName() const { return test_case_name_; }
- // Test case id to verify identity.
- virtual TypeId GetTestCaseTypeId() const { return GetTypeId<TestCase>(); }
- // TEST_P macro uses AddTestPattern() to record information
- // about a single test in a LocalTestInfo structure.
- // test_case_name is the base name of the test case (without invocation
- // prefix). test_base_name is the name of an individual test without
- // parameter index. For the test SequenceA/FooTest.DoBar/1 FooTest is
- // test case base name and DoBar is test base name.
- void AddTestPattern(const char* test_case_name,
- const char* test_base_name,
- TestMetaFactoryBase<ParamType>* meta_factory) {
- tests_.push_back(linked_ptr<TestInfo>(new TestInfo(test_case_name,
- test_base_name,
- meta_factory)));
- }
- // INSTANTIATE_TEST_CASE_P macro uses AddGenerator() to record information
- // about a generator.
- int AddTestCaseInstantiation(const string& instantiation_name,
- GeneratorCreationFunc* func,
- ParamNameGeneratorFunc* name_func,
- const char* file,
- int line) {
- instantiations_.push_back(
- InstantiationInfo(instantiation_name, func, name_func, file, line));
- return 0; // Return value used only to run this method in namespace scope.
- }
- // UnitTest class invokes this method to register tests in this test case
- // test cases right before running tests in RUN_ALL_TESTS macro.
- // This method should not be called more then once on any single
- // instance of a ParameterizedTestCaseInfoBase derived class.
- // UnitTest has a guard to prevent from calling this method more then once.
- virtual void RegisterTests() {
- for (typename TestInfoContainer::iterator test_it = tests_.begin();
- test_it != tests_.end(); ++test_it) {
- linked_ptr<TestInfo> test_info = *test_it;
- for (typename InstantiationContainer::iterator gen_it =
- instantiations_.begin(); gen_it != instantiations_.end();
- ++gen_it) {
- const string& instantiation_name = gen_it->name;
- ParamGenerator<ParamType> generator((*gen_it->generator)());
- ParamNameGeneratorFunc* name_func = gen_it->name_func;
- const char* file = gen_it->file;
- int line = gen_it->line;
-
- string test_case_name;
- if ( !instantiation_name.empty() )
- test_case_name = instantiation_name + "/";
- test_case_name += test_info->test_case_base_name;
-
- size_t i = 0;
- std::set<std::string> test_param_names;
- for (typename ParamGenerator<ParamType>::iterator param_it =
- generator.begin();
- param_it != generator.end(); ++param_it, ++i) {
- Message test_name_stream;
-
- std::string param_name = name_func(
- TestParamInfo<ParamType>(*param_it, i));
-
- GTEST_CHECK_(IsValidParamName(param_name))
- << "Parameterized test name '" << param_name
- << "' is invalid, in " << file
- << " line " << line << std::endl;
-
- GTEST_CHECK_(test_param_names.count(param_name) == 0)
- << "Duplicate parameterized test name '" << param_name
- << "', in " << file << " line " << line << std::endl;
-
- test_param_names.insert(param_name);
-
- test_name_stream << test_info->test_base_name << "/" << param_name;
- MakeAndRegisterTestInfo(
- test_case_name.c_str(),
- test_name_stream.GetString().c_str(),
- NULL, // No type parameter.
- PrintToString(*param_it).c_str(),
- code_location_,
- GetTestCaseTypeId(),
- TestCase::SetUpTestCase,
- TestCase::TearDownTestCase,
- test_info->test_meta_factory->CreateTestFactory(*param_it));
- } // for param_it
- } // for gen_it
- } // for test_it
- } // RegisterTests
-
- private:
- // LocalTestInfo structure keeps information about a single test registered
- // with TEST_P macro.
- struct TestInfo {
- TestInfo(const char* a_test_case_base_name,
- const char* a_test_base_name,
- TestMetaFactoryBase<ParamType>* a_test_meta_factory) :
- test_case_base_name(a_test_case_base_name),
- test_base_name(a_test_base_name),
- test_meta_factory(a_test_meta_factory) {}
-
- const string test_case_base_name;
- const string test_base_name;
- const scoped_ptr<TestMetaFactoryBase<ParamType> > test_meta_factory;
- };
- typedef ::std::vector<linked_ptr<TestInfo> > TestInfoContainer;
- // Records data received from INSTANTIATE_TEST_CASE_P macros:
- // <Instantiation name, Sequence generator creation function,
- // Name generator function, Source file, Source line>
- struct InstantiationInfo {
- InstantiationInfo(const std::string &name_in,
- GeneratorCreationFunc* generator_in,
- ParamNameGeneratorFunc* name_func_in,
- const char* file_in,
- int line_in)
- : name(name_in),
- generator(generator_in),
- name_func(name_func_in),
- file(file_in),
- line(line_in) {}
-
- std::string name;
- GeneratorCreationFunc* generator;
- ParamNameGeneratorFunc* name_func;
- const char* file;
- int line;
- };
- typedef ::std::vector<InstantiationInfo> InstantiationContainer;
-
- static bool IsValidParamName(const std::string& name) {
- // Check for empty string
- if (name.empty())
- return false;
-
- // Check for invalid characters
- for (std::string::size_type index = 0; index < name.size(); ++index) {
- if (!isalnum(name[index]) && name[index] != '_')
- return false;
- }
-
- return true;
- }
-
- const string test_case_name_;
- CodeLocation code_location_;
- TestInfoContainer tests_;
- InstantiationContainer instantiations_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfo);
-}; // class ParameterizedTestCaseInfo
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// ParameterizedTestCaseRegistry contains a map of ParameterizedTestCaseInfoBase
-// classes accessed by test case names. TEST_P and INSTANTIATE_TEST_CASE_P
-// macros use it to locate their corresponding ParameterizedTestCaseInfo
-// descriptors.
-class ParameterizedTestCaseRegistry {
- public:
- ParameterizedTestCaseRegistry() {}
- ~ParameterizedTestCaseRegistry() {
- for (TestCaseInfoContainer::iterator it = test_case_infos_.begin();
- it != test_case_infos_.end(); ++it) {
- delete *it;
- }
- }
-
- // Looks up or creates and returns a structure containing information about
- // tests and instantiations of a particular test case.
- template <class TestCase>
- ParameterizedTestCaseInfo<TestCase>* GetTestCasePatternHolder(
- const char* test_case_name,
- CodeLocation code_location) {
- ParameterizedTestCaseInfo<TestCase>* typed_test_info = NULL;
- for (TestCaseInfoContainer::iterator it = test_case_infos_.begin();
- it != test_case_infos_.end(); ++it) {
- if ((*it)->GetTestCaseName() == test_case_name) {
- if ((*it)->GetTestCaseTypeId() != GetTypeId<TestCase>()) {
- // Complain about incorrect usage of Google Test facilities
- // and terminate the program since we cannot guaranty correct
- // test case setup and tear-down in this case.
- ReportInvalidTestCaseType(test_case_name, code_location);
- posix::Abort();
- } else {
- // At this point we are sure that the object we found is of the same
- // type we are looking for, so we downcast it to that type
- // without further checks.
- typed_test_info = CheckedDowncastToActualType<
- ParameterizedTestCaseInfo<TestCase> >(*it);
- }
- break;
- }
- }
- if (typed_test_info == NULL) {
- typed_test_info = new ParameterizedTestCaseInfo<TestCase>(
- test_case_name, code_location);
- test_case_infos_.push_back(typed_test_info);
- }
- return typed_test_info;
- }
- void RegisterTests() {
- for (TestCaseInfoContainer::iterator it = test_case_infos_.begin();
- it != test_case_infos_.end(); ++it) {
- (*it)->RegisterTests();
- }
- }
-
- private:
- typedef ::std::vector<ParameterizedTestCaseInfoBase*> TestCaseInfoContainer;
-
- TestCaseInfoContainer test_case_infos_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseRegistry);
-};
-
-} // namespace internal
-} // namespace testing
-
-#endif // GTEST_HAS_PARAM_TEST
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
diff --git a/test/gtest/include/gtest/internal/gtest-port-arch.h b/test/gtest/include/gtest/internal/gtest-port-arch.h
deleted file mode 100644
index 74ab949..0000000
--- a/test/gtest/include/gtest/internal/gtest-port-arch.h
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright 2015, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// The Google C++ Testing Framework (Google Test)
-//
-// This header file defines the GTEST_OS_* macro.
-// It is separate from gtest-port.h so that custom/gtest-port.h can include it.
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
-
-// Determines the platform on which Google Test is compiled.
-#ifdef __CYGWIN__
-# define GTEST_OS_CYGWIN 1
-#elif defined __SYMBIAN32__
-# define GTEST_OS_SYMBIAN 1
-#elif defined _WIN32
-# define GTEST_OS_WINDOWS 1
-# ifdef _WIN32_WCE
-# define GTEST_OS_WINDOWS_MOBILE 1
-# elif defined(__MINGW__) || defined(__MINGW32__)
-# define GTEST_OS_WINDOWS_MINGW 1
-# elif defined(WINAPI_FAMILY)
-# include <winapifamily.h>
-# if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
-# define GTEST_OS_WINDOWS_DESKTOP 1
-# elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP)
-# define GTEST_OS_WINDOWS_PHONE 1
-# elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
-# define GTEST_OS_WINDOWS_RT 1
-# else
- // WINAPI_FAMILY defined but no known partition matched.
- // Default to desktop.
-# define GTEST_OS_WINDOWS_DESKTOP 1
-# endif
-# else
-# define GTEST_OS_WINDOWS_DESKTOP 1
-# endif // _WIN32_WCE
-#elif defined __APPLE__
-# define GTEST_OS_MAC 1
-# if TARGET_OS_IPHONE
-# define GTEST_OS_IOS 1
-# endif
-#elif defined __FreeBSD__
-# define GTEST_OS_FREEBSD 1
-#elif defined __linux__
-# define GTEST_OS_LINUX 1
-# if defined __ANDROID__
-# define GTEST_OS_LINUX_ANDROID 1
-# endif
-#elif defined __MVS__
-# define GTEST_OS_ZOS 1
-#elif defined(__sun) && defined(__SVR4)
-# define GTEST_OS_SOLARIS 1
-#elif defined(_AIX)
-# define GTEST_OS_AIX 1
-#elif defined(__hpux)
-# define GTEST_OS_HPUX 1
-#elif defined __native_client__
-# define GTEST_OS_NACL 1
-#elif defined __OpenBSD__
-# define GTEST_OS_OPENBSD 1
-#elif defined __QNX__
-# define GTEST_OS_QNX 1
-#endif // __CYGWIN__
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
diff --git a/test/gtest/include/gtest/internal/gtest-port.h b/test/gtest/include/gtest/internal/gtest-port.h
deleted file mode 100644
index 0094ed5..0000000
--- a/test/gtest/include/gtest/internal/gtest-port.h
+++ /dev/null
@@ -1,2554 +0,0 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: wan@google.com (Zhanyong Wan)
-//
-// Low-level types and utilities for porting Google Test to various
-// platforms. All macros ending with _ and symbols defined in an
-// internal namespace are subject to change without notice. Code
-// outside Google Test MUST NOT USE THEM DIRECTLY. Macros that don't
-// end with _ are part of Google Test's public API and can be used by
-// code outside Google Test.
-//
-// This file is fundamental to Google Test. All other Google Test source
-// files are expected to #include this. Therefore, it cannot #include
-// any other Google Test header.
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
-
-// Environment-describing macros
-// -----------------------------
-//
-// Google Test can be used in many different environments. Macros in
-// this section tell Google Test what kind of environment it is being
-// used in, such that Google Test can provide environment-specific
-// features and implementations.
-//
-// Google Test tries to automatically detect the properties of its
-// environment, so users usually don't need to worry about these
-// macros. However, the automatic detection is not perfect.
-// Sometimes it's necessary for a user to define some of the following
-// macros in the build script to override Google Test's decisions.
-//
-// If the user doesn't define a macro in the list, Google Test will
-// provide a default definition. After this header is #included, all
-// macros in this list will be defined to either 1 or 0.
-//
-// Notes to maintainers:
-// - Each macro here is a user-tweakable knob; do not grow the list
-// lightly.
-// - Use #if to key off these macros. Don't use #ifdef or "#if
-// defined(...)", which will not work as these macros are ALWAYS
-// defined.
-//
-// GTEST_HAS_CLONE - Define it to 1/0 to indicate that clone(2)
-// is/isn't available.
-// GTEST_HAS_EXCEPTIONS - Define it to 1/0 to indicate that exceptions
-// are enabled.
-// GTEST_HAS_GLOBAL_STRING - Define it to 1/0 to indicate that ::string
-// is/isn't available (some systems define
-// ::string, which is different to std::string).
-// GTEST_HAS_GLOBAL_WSTRING - Define it to 1/0 to indicate that ::string
-// is/isn't available (some systems define
-// ::wstring, which is different to std::wstring).
-// GTEST_HAS_POSIX_RE - Define it to 1/0 to indicate that POSIX regular
-// expressions are/aren't available.
-// GTEST_HAS_PTHREAD - Define it to 1/0 to indicate that <pthread.h>
-// is/isn't available.
-// GTEST_HAS_RTTI - Define it to 1/0 to indicate that RTTI is/isn't
-// enabled.
-// GTEST_HAS_STD_WSTRING - Define it to 1/0 to indicate that
-// std::wstring does/doesn't work (Google Test can
-// be used where std::wstring is unavailable).
-// GTEST_HAS_TR1_TUPLE - Define it to 1/0 to indicate tr1::tuple
-// is/isn't available.
-// GTEST_HAS_SEH - Define it to 1/0 to indicate whether the
-// compiler supports Microsoft's "Structured
-// Exception Handling".
-// GTEST_HAS_STREAM_REDIRECTION
-// - Define it to 1/0 to indicate whether the
-// platform supports I/O stream redirection using
-// dup() and dup2().
-// GTEST_USE_OWN_TR1_TUPLE - Define it to 1/0 to indicate whether Google
-// Test's own tr1 tuple implementation should be
-// used. Unused when the user sets
-// GTEST_HAS_TR1_TUPLE to 0.
-// GTEST_LANG_CXX11 - Define it to 1/0 to indicate that Google Test
-// is building in C++11/C++98 mode.
-// GTEST_LINKED_AS_SHARED_LIBRARY
-// - Define to 1 when compiling tests that use
-// Google Test as a shared library (known as
-// DLL on Windows).
-// GTEST_CREATE_SHARED_LIBRARY
-// - Define to 1 when compiling Google Test itself
-// as a shared library.
-
-// Platform-indicating macros
-// --------------------------
-//
-// Macros indicating the platform on which Google Test is being used
-// (a macro is defined to 1 if compiled on the given platform;
-// otherwise UNDEFINED -- it's never defined to 0.). Google Test
-// defines these macros automatically. Code outside Google Test MUST
-// NOT define them.
-//
-// GTEST_OS_AIX - IBM AIX
-// GTEST_OS_CYGWIN - Cygwin
-// GTEST_OS_FREEBSD - FreeBSD
-// GTEST_OS_HPUX - HP-UX
-// GTEST_OS_LINUX - Linux
-// GTEST_OS_LINUX_ANDROID - Google Android
-// GTEST_OS_MAC - Mac OS X
-// GTEST_OS_IOS - iOS
-// GTEST_OS_NACL - Google Native Client (NaCl)
-// GTEST_OS_OPENBSD - OpenBSD
-// GTEST_OS_QNX - QNX
-// GTEST_OS_SOLARIS - Sun Solaris
-// GTEST_OS_SYMBIAN - Symbian
-// GTEST_OS_WINDOWS - Windows (Desktop, MinGW, or Mobile)
-// GTEST_OS_WINDOWS_DESKTOP - Windows Desktop
-// GTEST_OS_WINDOWS_MINGW - MinGW
-// GTEST_OS_WINDOWS_MOBILE - Windows Mobile
-// GTEST_OS_WINDOWS_PHONE - Windows Phone
-// GTEST_OS_WINDOWS_RT - Windows Store App/WinRT
-// GTEST_OS_ZOS - z/OS
-//
-// Among the platforms, Cygwin, Linux, Max OS X, and Windows have the
-// most stable support. Since core members of the Google Test project
-// don't have access to other platforms, support for them may be less
-// stable. If you notice any problems on your platform, please notify
-// googletestframework@googlegroups.com (patches for fixing them are
-// even more welcome!).
-//
-// It is possible that none of the GTEST_OS_* macros are defined.
-
-// Feature-indicating macros
-// -------------------------
-//
-// Macros indicating which Google Test features are available (a macro
-// is defined to 1 if the corresponding feature is supported;
-// otherwise UNDEFINED -- it's never defined to 0.). Google Test
-// defines these macros automatically. Code outside Google Test MUST
-// NOT define them.
-//
-// These macros are public so that portable tests can be written.
-// Such tests typically surround code using a feature with an #if
-// which controls that code. For example:
-//
-// #if GTEST_HAS_DEATH_TEST
-// EXPECT_DEATH(DoSomethingDeadly());
-// #endif
-//
-// GTEST_HAS_COMBINE - the Combine() function (for value-parameterized
-// tests)
-// GTEST_HAS_DEATH_TEST - death tests
-// GTEST_HAS_PARAM_TEST - value-parameterized tests
-// GTEST_HAS_TYPED_TEST - typed tests
-// GTEST_HAS_TYPED_TEST_P - type-parameterized tests
-// GTEST_IS_THREADSAFE - Google Test is thread-safe.
-// GTEST_USES_POSIX_RE - enhanced POSIX regex is used. Do not confuse with
-// GTEST_HAS_POSIX_RE (see above) which users can
-// define themselves.
-// GTEST_USES_SIMPLE_RE - our own simple regex is used;
-// the above two are mutually exclusive.
-// GTEST_CAN_COMPARE_NULL - accepts untyped NULL in EXPECT_EQ().
-
-// Misc public macros
-// ------------------
-//
-// GTEST_FLAG(flag_name) - references the variable corresponding to
-// the given Google Test flag.
-
-// Internal utilities
-// ------------------
-//
-// The following macros and utilities are for Google Test's INTERNAL
-// use only. Code outside Google Test MUST NOT USE THEM DIRECTLY.
-//
-// Macros for basic C++ coding:
-// GTEST_AMBIGUOUS_ELSE_BLOCKER_ - for disabling a gcc warning.
-// GTEST_ATTRIBUTE_UNUSED_ - declares that a class' instances or a
-// variable don't have to be used.
-// GTEST_DISALLOW_ASSIGN_ - disables operator=.
-// GTEST_DISALLOW_COPY_AND_ASSIGN_ - disables copy ctor and operator=.
-// GTEST_MUST_USE_RESULT_ - declares that a function's result must be used.
-// GTEST_INTENTIONAL_CONST_COND_PUSH_ - start code section where MSVC C4127 is
-// suppressed (constant conditional).
-// GTEST_INTENTIONAL_CONST_COND_POP_ - finish code section where MSVC C4127
-// is suppressed.
-//
-// C++11 feature wrappers:
-//
-// testing::internal::move - portability wrapper for std::move.
-//
-// Synchronization:
-// Mutex, MutexLock, ThreadLocal, GetThreadCount()
-// - synchronization primitives.
-//
-// Template meta programming:
-// is_pointer - as in TR1; needed on Symbian and IBM XL C/C++ only.
-// IteratorTraits - partial implementation of std::iterator_traits, which
-// is not available in libCstd when compiled with Sun C++.
-//
-// Smart pointers:
-// scoped_ptr - as in TR2.
-//
-// Regular expressions:
-// RE - a simple regular expression class using the POSIX
-// Extended Regular Expression syntax on UNIX-like
-// platforms, or a reduced regular exception syntax on
-// other platforms, including Windows.
-//
-// Logging:
-// GTEST_LOG_() - logs messages at the specified severity level.
-// LogToStderr() - directs all log messages to stderr.
-// FlushInfoLog() - flushes informational log messages.
-//
-// Stdout and stderr capturing:
-// CaptureStdout() - starts capturing stdout.
-// GetCapturedStdout() - stops capturing stdout and returns the captured
-// string.
-// CaptureStderr() - starts capturing stderr.
-// GetCapturedStderr() - stops capturing stderr and returns the captured
-// string.
-//
-// Integer types:
-// TypeWithSize - maps an integer to a int type.
-// Int32, UInt32, Int64, UInt64, TimeInMillis
-// - integers of known sizes.
-// BiggestInt - the biggest signed integer type.
-//
-// Command-line utilities:
-// GTEST_DECLARE_*() - declares a flag.
-// GTEST_DEFINE_*() - defines a flag.
-// GetInjectableArgvs() - returns the command line as a vector of strings.
-//
-// Environment variable utilities:
-// GetEnv() - gets the value of an environment variable.
-// BoolFromGTestEnv() - parses a bool environment variable.
-// Int32FromGTestEnv() - parses an Int32 environment variable.
-// StringFromGTestEnv() - parses a string environment variable.
-
-#include <ctype.h> // for isspace, etc
-#include <stddef.h> // for ptrdiff_t
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#ifndef _WIN32_WCE
-# include <sys/types.h>
-# include <sys/stat.h>
-#endif // !_WIN32_WCE
-
-#if defined __APPLE__
-# include <AvailabilityMacros.h>
-# include <TargetConditionals.h>
-#endif
-
-#include <algorithm> // NOLINT
-#include <iostream> // NOLINT
-#include <sstream> // NOLINT
-#include <string> // NOLINT
-#include <utility>
-#include <vector> // NOLINT
-
-#include "gtest/internal/gtest-port-arch.h"
-#include "gtest/internal/custom/gtest-port.h"
-
-#if !defined(GTEST_DEV_EMAIL_)
-# define GTEST_DEV_EMAIL_ "googletestframework@@googlegroups.com"
-# define GTEST_FLAG_PREFIX_ "gtest_"
-# define GTEST_FLAG_PREFIX_DASH_ "gtest-"
-# define GTEST_FLAG_PREFIX_UPPER_ "GTEST_"
-# define GTEST_NAME_ "Google Test"
-# define GTEST_PROJECT_URL_ "https://github.com/google/googletest/"
-#endif // !defined(GTEST_DEV_EMAIL_)
-
-#if !defined(GTEST_INIT_GOOGLE_TEST_NAME_)
-# define GTEST_INIT_GOOGLE_TEST_NAME_ "testing::InitGoogleTest"
-#endif // !defined(GTEST_INIT_GOOGLE_TEST_NAME_)
-
-// Determines the version of gcc that is used to compile this.
-#ifdef __GNUC__
-// 40302 means version 4.3.2.
-# define GTEST_GCC_VER_ \
- (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__)
-#endif // __GNUC__
-
-// Macros for disabling Microsoft Visual C++ warnings.
-//
-// GTEST_DISABLE_MSC_WARNINGS_PUSH_(4800 4385)
-// /* code that triggers warnings C4800 and C4385 */
-// GTEST_DISABLE_MSC_WARNINGS_POP_()
-#if _MSC_VER >= 1500
-# define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings) \
- __pragma(warning(push)) \
- __pragma(warning(disable: warnings))
-# define GTEST_DISABLE_MSC_WARNINGS_POP_() \
- __pragma(warning(pop))
-#else
-// Older versions of MSVC don't have __pragma.
-# define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings)
-# define GTEST_DISABLE_MSC_WARNINGS_POP_()
-#endif
-
-#ifndef GTEST_LANG_CXX11
-// gcc and clang define __GXX_EXPERIMENTAL_CXX0X__ when
-// -std={c,gnu}++{0x,11} is passed. The C++11 standard specifies a
-// value for __cplusplus, and recent versions of clang, gcc, and
-// probably other compilers set that too in C++11 mode.
-# if __GXX_EXPERIMENTAL_CXX0X__ || __cplusplus >= 201103L
-// Compiling in at least C++11 mode.
-# define GTEST_LANG_CXX11 1
-# else
-# define GTEST_LANG_CXX11 0
-# endif
-#endif
-
-// Distinct from C++11 language support, some environments don't provide
-// proper C++11 library support. Notably, it's possible to build in
-// C++11 mode when targeting Mac OS X 10.6, which has an old libstdc++
-// with no C++11 support.
-//
-// libstdc++ has sufficient C++11 support as of GCC 4.6.0, __GLIBCXX__
-// 20110325, but maintenance releases in the 4.4 and 4.5 series followed
-// this date, so check for those versions by their date stamps.
-// https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html#abi.versioning
-#if GTEST_LANG_CXX11 && \
- (!defined(__GLIBCXX__) || ( \
- __GLIBCXX__ >= 20110325ul && /* GCC >= 4.6.0 */ \
- /* Blacklist of patch releases of older branches: */ \
- __GLIBCXX__ != 20110416ul && /* GCC 4.4.6 */ \
- __GLIBCXX__ != 20120313ul && /* GCC 4.4.7 */ \
- __GLIBCXX__ != 20110428ul && /* GCC 4.5.3 */ \
- __GLIBCXX__ != 20120702ul)) /* GCC 4.5.4 */
-# define GTEST_STDLIB_CXX11 1
-#endif
-
-// Only use C++11 library features if the library provides them.
-#if GTEST_STDLIB_CXX11
-# define GTEST_HAS_STD_BEGIN_AND_END_ 1
-# define GTEST_HAS_STD_FORWARD_LIST_ 1
-# define GTEST_HAS_STD_FUNCTION_ 1
-# define GTEST_HAS_STD_INITIALIZER_LIST_ 1
-# define GTEST_HAS_STD_MOVE_ 1
-# define GTEST_HAS_STD_SHARED_PTR_ 1
-# define GTEST_HAS_STD_TYPE_TRAITS_ 1
-# define GTEST_HAS_STD_UNIQUE_PTR_ 1
-#endif
-
-// C++11 specifies that <tuple> provides std::tuple.
-// Some platforms still might not have it, however.
-#if GTEST_LANG_CXX11
-# define GTEST_HAS_STD_TUPLE_ 1
-# if defined(__clang__)
-// Inspired by http://clang.llvm.org/docs/LanguageExtensions.html#__has_include
-# if defined(__has_include) && !__has_include(<tuple>)
-# undef GTEST_HAS_STD_TUPLE_
-# endif
-# elif defined(_MSC_VER)
-// Inspired by boost/config/stdlib/dinkumware.hpp
-# if defined(_CPPLIB_VER) && _CPPLIB_VER < 520
-# undef GTEST_HAS_STD_TUPLE_
-# endif
-# elif defined(__GLIBCXX__)
-// Inspired by boost/config/stdlib/libstdcpp3.hpp,
-// http://gcc.gnu.org/gcc-4.2/changes.html and
-// http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#manual.intro.status.standard.200x
-# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 2)
-# undef GTEST_HAS_STD_TUPLE_
-# endif
-# endif
-#endif
-
-// Brings in definitions for functions used in the testing::internal::posix
-// namespace (read, write, close, chdir, isatty, stat). We do not currently
-// use them on Windows Mobile.
-#if GTEST_OS_WINDOWS
-# if !GTEST_OS_WINDOWS_MOBILE
-# include <direct.h>
-# include <io.h>
-# endif
-// In order to avoid having to include <windows.h>, use forward declaration
-// assuming CRITICAL_SECTION is a typedef of _RTL_CRITICAL_SECTION.
-// This assumption is verified by
-// WindowsTypesTest.CRITICAL_SECTIONIs_RTL_CRITICAL_SECTION.
-struct _RTL_CRITICAL_SECTION;
-#else
-// This assumes that non-Windows OSes provide unistd.h. For OSes where this
-// is not the case, we need to include headers that provide the functions
-// mentioned above.
-# include <unistd.h>
-# include <strings.h>
-#endif // GTEST_OS_WINDOWS
-
-#if GTEST_OS_LINUX_ANDROID
-// Used to define __ANDROID_API__ matching the target NDK API level.
-# include <android/api-level.h> // NOLINT
-#endif
-
-// Defines this to true iff Google Test can use POSIX regular expressions.
-#ifndef GTEST_HAS_POSIX_RE
-# if GTEST_OS_LINUX_ANDROID
-// On Android, <regex.h> is only available starting with Gingerbread.
-# define GTEST_HAS_POSIX_RE (__ANDROID_API__ >= 9)
-# else
-# define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS)
-# endif
-#endif
-
-#if GTEST_USES_PCRE
-// The appropriate headers have already been included.
-
-#elif GTEST_HAS_POSIX_RE
-
-// On some platforms, <regex.h> needs someone to define size_t, and
-// won't compile otherwise. We can #include it here as we already
-// included <stdlib.h>, which is guaranteed to define size_t through
-// <stddef.h>.
-# include <regex.h> // NOLINT
-
-# define GTEST_USES_POSIX_RE 1
-
-#elif GTEST_OS_WINDOWS
-
-// <regex.h> is not available on Windows. Use our own simple regex
-// implementation instead.
-# define GTEST_USES_SIMPLE_RE 1
-
-#else
-
-// <regex.h> may not be available on this platform. Use our own
-// simple regex implementation instead.
-# define GTEST_USES_SIMPLE_RE 1
-
-#endif // GTEST_USES_PCRE
-
-#ifndef GTEST_HAS_EXCEPTIONS
-// The user didn't tell us whether exceptions are enabled, so we need
-// to figure it out.
-# if defined(_MSC_VER) || defined(__BORLANDC__)
-// MSVC's and C++Builder's implementations of the STL use the _HAS_EXCEPTIONS
-// macro to enable exceptions, so we'll do the same.
-// Assumes that exceptions are enabled by default.
-# ifndef _HAS_EXCEPTIONS
-# define _HAS_EXCEPTIONS 1
-# endif // _HAS_EXCEPTIONS
-# define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS
-# elif defined(__clang__)
-// clang defines __EXCEPTIONS iff exceptions are enabled before clang 220714,
-// but iff cleanups are enabled after that. In Obj-C++ files, there can be
-// cleanups for ObjC exceptions which also need cleanups, even if C++ exceptions
-// are disabled. clang has __has_feature(cxx_exceptions) which checks for C++
-// exceptions starting at clang r206352, but which checked for cleanups prior to
-// that. To reliably check for C++ exception availability with clang, check for
-// __EXCEPTIONS && __has_feature(cxx_exceptions).
-# define GTEST_HAS_EXCEPTIONS (__EXCEPTIONS && __has_feature(cxx_exceptions))
-# elif defined(__GNUC__) && __EXCEPTIONS
-// gcc defines __EXCEPTIONS to 1 iff exceptions are enabled.
-# define GTEST_HAS_EXCEPTIONS 1
-# elif defined(__SUNPRO_CC)
-// Sun Pro CC supports exceptions. However, there is no compile-time way of
-// detecting whether they are enabled or not. Therefore, we assume that
-// they are enabled unless the user tells us otherwise.
-# define GTEST_HAS_EXCEPTIONS 1
-# elif defined(__IBMCPP__) && __EXCEPTIONS
-// xlC defines __EXCEPTIONS to 1 iff exceptions are enabled.
-# define GTEST_HAS_EXCEPTIONS 1
-# elif defined(__HP_aCC)
-// Exception handling is in effect by default in HP aCC compiler. It has to
-// be turned of by +noeh compiler option if desired.
-# define GTEST_HAS_EXCEPTIONS 1
-# else
-// For other compilers, we assume exceptions are disabled to be
-// conservative.
-# define GTEST_HAS_EXCEPTIONS 0
-# endif // defined(_MSC_VER) || defined(__BORLANDC__)
-#endif // GTEST_HAS_EXCEPTIONS
-
-#if !defined(GTEST_HAS_STD_STRING)
-// Even though we don't use this macro any longer, we keep it in case
-// some clients still depend on it.
-# define GTEST_HAS_STD_STRING 1
-#elif !GTEST_HAS_STD_STRING
-// The user told us that ::std::string isn't available.
-# error "Google Test cannot be used where ::std::string isn't available."
-#endif // !defined(GTEST_HAS_STD_STRING)
-
-#ifndef GTEST_HAS_GLOBAL_STRING
-// The user didn't tell us whether ::string is available, so we need
-// to figure it out.
-
-# define GTEST_HAS_GLOBAL_STRING 0
-
-#endif // GTEST_HAS_GLOBAL_STRING
-
-#ifndef GTEST_HAS_STD_WSTRING
-// The user didn't tell us whether ::std::wstring is available, so we need
-// to figure it out.
-// TODO(wan@google.com): uses autoconf to detect whether ::std::wstring
-// is available.
-
-// Cygwin 1.7 and below doesn't support ::std::wstring.
-// Solaris' libc++ doesn't support it either. Android has
-// no support for it at least as recent as Froyo (2.2).
-# define GTEST_HAS_STD_WSTRING \
- (!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS))
-
-#endif // GTEST_HAS_STD_WSTRING
-
-#ifndef GTEST_HAS_GLOBAL_WSTRING
-// The user didn't tell us whether ::wstring is available, so we need
-// to figure it out.
-# define GTEST_HAS_GLOBAL_WSTRING \
- (GTEST_HAS_STD_WSTRING && GTEST_HAS_GLOBAL_STRING)
-#endif // GTEST_HAS_GLOBAL_WSTRING
-
-// Determines whether RTTI is available.
-#ifndef GTEST_HAS_RTTI
-// The user didn't tell us whether RTTI is enabled, so we need to
-// figure it out.
-
-# ifdef _MSC_VER
-
-# ifdef _CPPRTTI // MSVC defines this macro iff RTTI is enabled.
-# define GTEST_HAS_RTTI 1
-# else
-# define GTEST_HAS_RTTI 0
-# endif
-
-// Starting with version 4.3.2, gcc defines __GXX_RTTI iff RTTI is enabled.
-# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40302)
-
-# ifdef __GXX_RTTI
-// When building against STLport with the Android NDK and with
-// -frtti -fno-exceptions, the build fails at link time with undefined
-// references to __cxa_bad_typeid. Note sure if STL or toolchain bug,
-// so disable RTTI when detected.
-# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) && \
- !defined(__EXCEPTIONS)
-# define GTEST_HAS_RTTI 0
-# else
-# define GTEST_HAS_RTTI 1
-# endif // GTEST_OS_LINUX_ANDROID && __STLPORT_MAJOR && !__EXCEPTIONS
-# else
-# define GTEST_HAS_RTTI 0
-# endif // __GXX_RTTI
-
-// Clang defines __GXX_RTTI starting with version 3.0, but its manual recommends
-// using has_feature instead. has_feature(cxx_rtti) is supported since 2.7, the
-// first version with C++ support.
-# elif defined(__clang__)
-
-# define GTEST_HAS_RTTI __has_feature(cxx_rtti)
-
-// Starting with version 9.0 IBM Visual Age defines __RTTI_ALL__ to 1 if
-// both the typeid and dynamic_cast features are present.
-# elif defined(__IBMCPP__) && (__IBMCPP__ >= 900)
-
-# ifdef __RTTI_ALL__
-# define GTEST_HAS_RTTI 1
-# else
-# define GTEST_HAS_RTTI 0
-# endif
-
-# else
-
-// For all other compilers, we assume RTTI is enabled.
-# define GTEST_HAS_RTTI 1
-
-# endif // _MSC_VER
-
-#endif // GTEST_HAS_RTTI
-
-// It's this header's responsibility to #include <typeinfo> when RTTI
-// is enabled.
-#if GTEST_HAS_RTTI
-# include <typeinfo>
-#endif
-
-// Determines whether Google Test can use the pthreads library.
-#ifndef GTEST_HAS_PTHREAD
-// The user didn't tell us explicitly, so we make reasonable assumptions about
-// which platforms have pthreads support.
-//
-// To disable threading support in Google Test, add -DGTEST_HAS_PTHREAD=0
-// to your compiler flags.
-# define GTEST_HAS_PTHREAD (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_HPUX \
- || GTEST_OS_QNX || GTEST_OS_FREEBSD || GTEST_OS_NACL)
-#endif // GTEST_HAS_PTHREAD
-
-#if GTEST_HAS_PTHREAD
-// gtest-port.h guarantees to #include <pthread.h> when GTEST_HAS_PTHREAD is
-// true.
-# include <pthread.h> // NOLINT
-
-// For timespec and nanosleep, used below.
-# include <time.h> // NOLINT
-#endif
-
-// Determines if hash_map/hash_set are available.
-// Only used for testing against those containers.
-#if !defined(GTEST_HAS_HASH_MAP_)
-# if _MSC_VER
-# define GTEST_HAS_HASH_MAP_ 1 // Indicates that hash_map is available.
-# define GTEST_HAS_HASH_SET_ 1 // Indicates that hash_set is available.
-# endif // _MSC_VER
-#endif // !defined(GTEST_HAS_HASH_MAP_)
-
-// Determines whether Google Test can use tr1/tuple. You can define
-// this macro to 0 to prevent Google Test from using tuple (any
-// feature depending on tuple with be disabled in this mode).
-#ifndef GTEST_HAS_TR1_TUPLE
-# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR)
-// STLport, provided with the Android NDK, has neither <tr1/tuple> or <tuple>.
-# define GTEST_HAS_TR1_TUPLE 0
-# else
-// The user didn't tell us not to do it, so we assume it's OK.
-# define GTEST_HAS_TR1_TUPLE 1
-# endif
-#endif // GTEST_HAS_TR1_TUPLE
-
-// Determines whether Google Test's own tr1 tuple implementation
-// should be used.
-#ifndef GTEST_USE_OWN_TR1_TUPLE
-// The user didn't tell us, so we need to figure it out.
-
-// We use our own TR1 tuple if we aren't sure the user has an
-// implementation of it already. At this time, libstdc++ 4.0.0+ and
-// MSVC 2010 are the only mainstream standard libraries that come
-// with a TR1 tuple implementation. NVIDIA's CUDA NVCC compiler
-// pretends to be GCC by defining __GNUC__ and friends, but cannot
-// compile GCC's tuple implementation. MSVC 2008 (9.0) provides TR1
-// tuple in a 323 MB Feature Pack download, which we cannot assume the
-// user has. QNX's QCC compiler is a modified GCC but it doesn't
-// support TR1 tuple. libc++ only provides std::tuple, in C++11 mode,
-// and it can be used with some compilers that define __GNUC__.
-# if (defined(__GNUC__) && !defined(__CUDACC__) && (GTEST_GCC_VER_ >= 40000) \
- && !GTEST_OS_QNX && !defined(_LIBCPP_VERSION)) || _MSC_VER >= 1600
-# define GTEST_ENV_HAS_TR1_TUPLE_ 1
-# endif
-
-// C++11 specifies that <tuple> provides std::tuple. Use that if gtest is used
-// in C++11 mode and libstdc++ isn't very old (binaries targeting OS X 10.6
-// can build with clang but need to use gcc4.2's libstdc++).
-# if GTEST_LANG_CXX11 && (!defined(__GLIBCXX__) || __GLIBCXX__ > 20110325)
-# define GTEST_ENV_HAS_STD_TUPLE_ 1
-# endif
-
-# if GTEST_ENV_HAS_TR1_TUPLE_ || GTEST_ENV_HAS_STD_TUPLE_
-# define GTEST_USE_OWN_TR1_TUPLE 0
-# else
-# define GTEST_USE_OWN_TR1_TUPLE 1
-# endif
-
-#endif // GTEST_USE_OWN_TR1_TUPLE
-
-// To avoid conditional compilation everywhere, we make it
-// gtest-port.h's responsibility to #include the header implementing
-// tuple.
-#if GTEST_HAS_STD_TUPLE_
-# include <tuple> // IWYU pragma: export
-# define GTEST_TUPLE_NAMESPACE_ ::std
-#endif // GTEST_HAS_STD_TUPLE_
-
-// We include tr1::tuple even if std::tuple is available to define printers for
-// them.
-#if GTEST_HAS_TR1_TUPLE
-# ifndef GTEST_TUPLE_NAMESPACE_
-# define GTEST_TUPLE_NAMESPACE_ ::std::tr1
-# endif // GTEST_TUPLE_NAMESPACE_
-
-# if GTEST_USE_OWN_TR1_TUPLE
-# include "gtest/internal/gtest-tuple.h" // IWYU pragma: export // NOLINT
-# elif GTEST_ENV_HAS_STD_TUPLE_
-# include <tuple>
-// C++11 puts its tuple into the ::std namespace rather than
-// ::std::tr1. gtest expects tuple to live in ::std::tr1, so put it there.
-// This causes undefined behavior, but supported compilers react in
-// the way we intend.
-namespace std {
-namespace tr1 {
-using ::std::get;
-using ::std::make_tuple;
-using ::std::tuple;
-using ::std::tuple_element;
-using ::std::tuple_size;
-}
-}
-
-# elif GTEST_OS_SYMBIAN
-
-// On Symbian, BOOST_HAS_TR1_TUPLE causes Boost's TR1 tuple library to
-// use STLport's tuple implementation, which unfortunately doesn't
-// work as the copy of STLport distributed with Symbian is incomplete.
-// By making sure BOOST_HAS_TR1_TUPLE is undefined, we force Boost to
-// use its own tuple implementation.
-# ifdef BOOST_HAS_TR1_TUPLE
-# undef BOOST_HAS_TR1_TUPLE
-# endif // BOOST_HAS_TR1_TUPLE
-
-// This prevents <boost/tr1/detail/config.hpp>, which defines
-// BOOST_HAS_TR1_TUPLE, from being #included by Boost's <tuple>.
-# define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED
-# include <tuple> // IWYU pragma: export // NOLINT
-
-# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40000)
-// GCC 4.0+ implements tr1/tuple in the <tr1/tuple> header. This does
-// not conform to the TR1 spec, which requires the header to be <tuple>.
-
-# if !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302
-// Until version 4.3.2, gcc has a bug that causes <tr1/functional>,
-// which is #included by <tr1/tuple>, to not compile when RTTI is
-// disabled. _TR1_FUNCTIONAL is the header guard for
-// <tr1/functional>. Hence the following #define is a hack to prevent
-// <tr1/functional> from being included.
-# define _TR1_FUNCTIONAL 1
-# include <tr1/tuple>
-# undef _TR1_FUNCTIONAL // Allows the user to #include
- // <tr1/functional> if he chooses to.
-# else
-# include <tr1/tuple> // NOLINT
-# endif // !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302
-
-# else
-// If the compiler is not GCC 4.0+, we assume the user is using a
-// spec-conforming TR1 implementation.
-# include <tuple> // IWYU pragma: export // NOLINT
-# endif // GTEST_USE_OWN_TR1_TUPLE
-
-#endif // GTEST_HAS_TR1_TUPLE
-
-// Determines whether clone(2) is supported.
-// Usually it will only be available on Linux, excluding
-// Linux on the Itanium architecture.
-// Also see http://linux.die.net/man/2/clone.
-#ifndef GTEST_HAS_CLONE
-// The user didn't tell us, so we need to figure it out.
-
-# if GTEST_OS_LINUX && !defined(__ia64__)
-# if GTEST_OS_LINUX_ANDROID
-// On Android, clone() is only available on ARM starting with Gingerbread.
-# if defined(__arm__) && __ANDROID_API__ >= 9
-# define GTEST_HAS_CLONE 1
-# else
-# define GTEST_HAS_CLONE 0
-# endif
-# else
-# define GTEST_HAS_CLONE 1
-# endif
-# else
-# define GTEST_HAS_CLONE 0
-# endif // GTEST_OS_LINUX && !defined(__ia64__)
-
-#endif // GTEST_HAS_CLONE
-
-// Determines whether to support stream redirection. This is used to test
-// output correctness and to implement death tests.
-#ifndef GTEST_HAS_STREAM_REDIRECTION
-// By default, we assume that stream redirection is supported on all
-// platforms except known mobile ones.
-# if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || \
- GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT
-# define GTEST_HAS_STREAM_REDIRECTION 0
-# else
-# define GTEST_HAS_STREAM_REDIRECTION 1
-# endif // !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_SYMBIAN
-#endif // GTEST_HAS_STREAM_REDIRECTION
-
-// Determines whether to support death tests.
-// Google Test does not support death tests for VC 7.1 and earlier as
-// abort() in a VC 7.1 application compiled as GUI in debug config
-// pops up a dialog window that cannot be suppressed programmatically.
-#if (GTEST_OS_LINUX || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \
- (GTEST_OS_MAC && !GTEST_OS_IOS) || \
- (GTEST_OS_WINDOWS_DESKTOP && _MSC_VER >= 1400) || \
- GTEST_OS_WINDOWS_MINGW || GTEST_OS_AIX || GTEST_OS_HPUX || \
- GTEST_OS_OPENBSD || GTEST_OS_QNX || GTEST_OS_FREEBSD)
-# define GTEST_HAS_DEATH_TEST 1
-#endif
-
-// We don't support MSVC 7.1 with exceptions disabled now. Therefore
-// all the compilers we care about are adequate for supporting
-// value-parameterized tests.
-#define GTEST_HAS_PARAM_TEST 1
-
-// Determines whether to support type-driven tests.
-
-// Typed tests need <typeinfo> and variadic macros, which GCC, VC++ 8.0,
-// Sun Pro CC, IBM Visual Age, and HP aCC support.
-#if defined(__GNUC__) || (_MSC_VER >= 1400) || defined(__SUNPRO_CC) || \
- defined(__IBMCPP__) || defined(__HP_aCC)
-# define GTEST_HAS_TYPED_TEST 1
-# define GTEST_HAS_TYPED_TEST_P 1
-#endif
-
-// Determines whether to support Combine(). This only makes sense when
-// value-parameterized tests are enabled. The implementation doesn't
-// work on Sun Studio since it doesn't understand templated conversion
-// operators.
-#if GTEST_HAS_PARAM_TEST && GTEST_HAS_TR1_TUPLE && !defined(__SUNPRO_CC)
-# define GTEST_HAS_COMBINE 1
-#endif
-
-// Determines whether the system compiler uses UTF-16 for encoding wide strings.
-#define GTEST_WIDE_STRING_USES_UTF16_ \
- (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_SYMBIAN || GTEST_OS_AIX)
-
-// Determines whether test results can be streamed to a socket.
-#if GTEST_OS_LINUX
-# define GTEST_CAN_STREAM_RESULTS_ 1
-#endif
-
-// Defines some utility macros.
-
-// The GNU compiler emits a warning if nested "if" statements are followed by
-// an "else" statement and braces are not used to explicitly disambiguate the
-// "else" binding. This leads to problems with code like:
-//
-// if (gate)
-// ASSERT_*(condition) << "Some message";
-//
-// The "switch (0) case 0:" idiom is used to suppress this.
-#ifdef __INTEL_COMPILER
-# define GTEST_AMBIGUOUS_ELSE_BLOCKER_
-#else
-# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default: // NOLINT
-#endif
-
-// Use this annotation at the end of a struct/class definition to
-// prevent the compiler from optimizing away instances that are never
-// used. This is useful when all interesting logic happens inside the
-// c'tor and / or d'tor. Example:
-//
-// struct Foo {
-// Foo() { ... }
-// } GTEST_ATTRIBUTE_UNUSED_;
-//
-// Also use it after a variable or parameter declaration to tell the
-// compiler the variable/parameter does not have to be used.
-#if defined(__GNUC__) && !defined(COMPILER_ICC)
-# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused))
-#elif defined(__clang__)
-# if __has_attribute(unused)
-# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused))
-# endif
-#endif
-#ifndef GTEST_ATTRIBUTE_UNUSED_
-# define GTEST_ATTRIBUTE_UNUSED_
-#endif
-
-// A macro to disallow operator=
-// This should be used in the private: declarations for a class.
-#define GTEST_DISALLOW_ASSIGN_(type)\
- void operator=(type const &)
-
-// A macro to disallow copy constructor and operator=
-// This should be used in the private: declarations for a class.
-#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)\
- type(type const &);\
- GTEST_DISALLOW_ASSIGN_(type)
-
-// Tell the compiler to warn about unused return values for functions declared
-// with this macro. The macro should be used on function declarations
-// following the argument list:
-//
-// Sprocket* AllocateSprocket() GTEST_MUST_USE_RESULT_;
-#if defined(__GNUC__) && (GTEST_GCC_VER_ >= 30400) && !defined(COMPILER_ICC)
-# define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result))
-#else
-# define GTEST_MUST_USE_RESULT_
-#endif // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC
-
-// MS C++ compiler emits warning when a conditional expression is compile time
-// constant. In some contexts this warning is false positive and needs to be
-// suppressed. Use the following two macros in such cases:
-//
-// GTEST_INTENTIONAL_CONST_COND_PUSH_()
-// while (true) {
-// GTEST_INTENTIONAL_CONST_COND_POP_()
-// }
-# define GTEST_INTENTIONAL_CONST_COND_PUSH_() \
- GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127)
-# define GTEST_INTENTIONAL_CONST_COND_POP_() \
- GTEST_DISABLE_MSC_WARNINGS_POP_()
-
-// Determine whether the compiler supports Microsoft's Structured Exception
-// Handling. This is supported by several Windows compilers but generally
-// does not exist on any other system.
-#ifndef GTEST_HAS_SEH
-// The user didn't tell us, so we need to figure it out.
-
-# if defined(_MSC_VER) || defined(__BORLANDC__)
-// These two compilers are known to support SEH.
-# define GTEST_HAS_SEH 1
-# else
-// Assume no SEH.
-# define GTEST_HAS_SEH 0
-# endif
-
-#define GTEST_IS_THREADSAFE \
- (GTEST_HAS_MUTEX_AND_THREAD_LOCAL_ \
- || (GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT) \
- || GTEST_HAS_PTHREAD)
-
-#endif // GTEST_HAS_SEH
-
-#ifdef _MSC_VER
-# if GTEST_LINKED_AS_SHARED_LIBRARY
-# define GTEST_API_ __declspec(dllimport)
-# elif GTEST_CREATE_SHARED_LIBRARY
-# define GTEST_API_ __declspec(dllexport)
-# endif
-#elif __GNUC__ >= 4 || defined(__clang__)
-# define GTEST_API_ __attribute__((visibility ("default")))
-#endif // _MSC_VER
-
-#ifndef GTEST_API_
-# define GTEST_API_
-#endif
-
-#ifdef __GNUC__
-// Ask the compiler to never inline a given function.
-# define GTEST_NO_INLINE_ __attribute__((noinline))
-#else
-# define GTEST_NO_INLINE_
-#endif
-
-// _LIBCPP_VERSION is defined by the libc++ library from the LLVM project.
-#if defined(__GLIBCXX__) || defined(_LIBCPP_VERSION)
-# define GTEST_HAS_CXXABI_H_ 1
-#else
-# define GTEST_HAS_CXXABI_H_ 0
-#endif
-
-// A function level attribute to disable checking for use of uninitialized
-// memory when built with MemorySanitizer.
-#if defined(__clang__)
-# if __has_feature(memory_sanitizer)
-# define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ \
- __attribute__((no_sanitize_memory))
-# else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
-# endif // __has_feature(memory_sanitizer)
-#else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
-#endif // __clang__
-
-// A function level attribute to disable AddressSanitizer instrumentation.
-#if defined(__clang__)
-# if __has_feature(address_sanitizer)
-# define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_ \
- __attribute__((no_sanitize_address))
-# else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
-# endif // __has_feature(address_sanitizer)
-#else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
-#endif // __clang__
-
-// A function level attribute to disable ThreadSanitizer instrumentation.
-#if defined(__clang__)
-# if __has_feature(thread_sanitizer)
-# define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_ \
- __attribute__((no_sanitize_thread))
-# else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
-# endif // __has_feature(thread_sanitizer)
-#else
-# define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
-#endif // __clang__
-
-namespace testing {
-
-class Message;
-
-#if defined(GTEST_TUPLE_NAMESPACE_)
-// Import tuple and friends into the ::testing namespace.
-// It is part of our interface, having them in ::testing allows us to change
-// their types as needed.
-using GTEST_TUPLE_NAMESPACE_::get;
-using GTEST_TUPLE_NAMESPACE_::make_tuple;
-using GTEST_TUPLE_NAMESPACE_::tuple;
-using GTEST_TUPLE_NAMESPACE_::tuple_size;
-using GTEST_TUPLE_NAMESPACE_::tuple_element;
-#endif // defined(GTEST_TUPLE_NAMESPACE_)
-
-namespace internal {
-
-// A secret type that Google Test users don't know about. It has no
-// definition on purpose. Therefore it's impossible to create a
-// Secret object, which is what we want.
-class Secret;
-
-// The GTEST_COMPILE_ASSERT_ macro can be used to verify that a compile time
-// expression is true. For example, you could use it to verify the
-// size of a static array:
-//
-// GTEST_COMPILE_ASSERT_(GTEST_ARRAY_SIZE_(names) == NUM_NAMES,
-// names_incorrect_size);
-//
-// or to make sure a struct is smaller than a certain size:
-//
-// GTEST_COMPILE_ASSERT_(sizeof(foo) < 128, foo_too_large);
-//
-// The second argument to the macro is the name of the variable. If
-// the expression is false, most compilers will issue a warning/error
-// containing the name of the variable.
-
-#if GTEST_LANG_CXX11
-# define GTEST_COMPILE_ASSERT_(expr, msg) static_assert(expr, #msg)
-#else // !GTEST_LANG_CXX11
-template <bool>
- struct CompileAssert {
-};
-
-# define GTEST_COMPILE_ASSERT_(expr, msg) \
- typedef ::testing::internal::CompileAssert<(static_cast<bool>(expr))> \
- msg[static_cast<bool>(expr) ? 1 : -1] GTEST_ATTRIBUTE_UNUSED_
-#endif // !GTEST_LANG_CXX11
-
-// Implementation details of GTEST_COMPILE_ASSERT_:
-//
-// (In C++11, we simply use static_assert instead of the following)
-//
-// - GTEST_COMPILE_ASSERT_ works by defining an array type that has -1
-// elements (and thus is invalid) when the expression is false.
-//
-// - The simpler definition
-//
-// #define GTEST_COMPILE_ASSERT_(expr, msg) typedef char msg[(expr) ? 1 : -1]
-//
-// does not work, as gcc supports variable-length arrays whose sizes
-// are determined at run-time (this is gcc's extension and not part
-// of the C++ standard). As a result, gcc fails to reject the
-// following code with the simple definition:
-//
-// int foo;
-// GTEST_COMPILE_ASSERT_(foo, msg); // not supposed to compile as foo is
-// // not a compile-time constant.
-//
-// - By using the type CompileAssert<(bool(expr))>, we ensures that
-// expr is a compile-time constant. (Template arguments must be
-// determined at compile-time.)
-//
-// - The outter parentheses in CompileAssert<(bool(expr))> are necessary
-// to work around a bug in gcc 3.4.4 and 4.0.1. If we had written
-//
-// CompileAssert<bool(expr)>
-//
-// instead, these compilers will refuse to compile
-//
-// GTEST_COMPILE_ASSERT_(5 > 0, some_message);
-//
-// (They seem to think the ">" in "5 > 0" marks the end of the
-// template argument list.)
-//
-// - The array size is (bool(expr) ? 1 : -1), instead of simply
-//
-// ((expr) ? 1 : -1).
-//
-// This is to avoid running into a bug in MS VC 7.1, which
-// causes ((0.0) ? 1 : -1) to incorrectly evaluate to 1.
-
-// StaticAssertTypeEqHelper is used by StaticAssertTypeEq defined in gtest.h.
-//
-// This template is declared, but intentionally undefined.
-template <typename T1, typename T2>
-struct StaticAssertTypeEqHelper;
-
-template <typename T>
-struct StaticAssertTypeEqHelper<T, T> {
- enum { value = true };
-};
-
-// Evaluates to the number of elements in 'array'.
-#define GTEST_ARRAY_SIZE_(array) (sizeof(array) / sizeof(array[0]))
-
-#if GTEST_HAS_GLOBAL_STRING
-typedef ::string string;
-#else
-typedef ::std::string string;
-#endif // GTEST_HAS_GLOBAL_STRING
-
-#if GTEST_HAS_GLOBAL_WSTRING
-typedef ::wstring wstring;
-#elif GTEST_HAS_STD_WSTRING
-typedef ::std::wstring wstring;
-#endif // GTEST_HAS_GLOBAL_WSTRING
-
-// A helper for suppressing warnings on constant condition. It just
-// returns 'condition'.
-GTEST_API_ bool IsTrue(bool condition);
-
-// Defines scoped_ptr.
-
-// This implementation of scoped_ptr is PARTIAL - it only contains
-// enough stuff to satisfy Google Test's need.
-template <typename T>
-class scoped_ptr {
- public:
- typedef T element_type;
-
- explicit scoped_ptr(T* p = NULL) : ptr_(p) {}
- ~scoped_ptr() { reset(); }
-
- T& operator*() const { return *ptr_; }
- T* operator->() const { return ptr_; }
- T* get() const { return ptr_; }
-
- T* release() {
- T* const ptr = ptr_;
- ptr_ = NULL;
- return ptr;
- }
-
- void reset(T* p = NULL) {
- if (p != ptr_) {
- if (IsTrue(sizeof(T) > 0)) { // Makes sure T is a complete type.
- delete ptr_;
- }
- ptr_ = p;
- }
- }
-
- friend void swap(scoped_ptr& a, scoped_ptr& b) {
- using std::swap;
- swap(a.ptr_, b.ptr_);
- }
-
- private:
- T* ptr_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(scoped_ptr);
-};
-
-// Defines RE.
-
-// A simple C++ wrapper for <regex.h>. It uses the POSIX Extended
-// Regular Expression syntax.
-class GTEST_API_ RE {
- public:
- // A copy constructor is required by the Standard to initialize object
- // references from r-values.
- RE(const RE& other) { Init(other.pattern()); }
-
- // Constructs an RE from a string.
- RE(const ::std::string& regex) { Init(regex.c_str()); } // NOLINT
-
-#if GTEST_HAS_GLOBAL_STRING
-
- RE(const ::string& regex) { Init(regex.c_str()); } // NOLINT
-
-#endif // GTEST_HAS_GLOBAL_STRING
-
- RE(const char* regex) { Init(regex); } // NOLINT
- ~RE();
-
- // Returns the string representation of the regex.
- const char* pattern() const { return pattern_; }
-
- // FullMatch(str, re) returns true iff regular expression re matches
- // the entire str.
- // PartialMatch(str, re) returns true iff regular expression re
- // matches a substring of str (including str itself).
- //
- // TODO(wan@google.com): make FullMatch() and PartialMatch() work
- // when str contains NUL characters.
- static bool FullMatch(const ::std::string& str, const RE& re) {
- return FullMatch(str.c_str(), re);
- }
- static bool PartialMatch(const ::std::string& str, const RE& re) {
- return PartialMatch(str.c_str(), re);
- }
-
-#if GTEST_HAS_GLOBAL_STRING
-
- static bool FullMatch(const ::string& str, const RE& re) {
- return FullMatch(str.c_str(), re);
- }
- static bool PartialMatch(const ::string& str, const RE& re) {
- return PartialMatch(str.c_str(), re);
- }
-
-#endif // GTEST_HAS_GLOBAL_STRING
-
- static bool FullMatch(const char* str, const RE& re);
- static bool PartialMatch(const char* str, const RE& re);
-
- private:
- void Init(const char* regex);
-
- // We use a const char* instead of an std::string, as Google Test used to be
- // used where std::string is not available. TODO(wan@google.com): change to
- // std::string.
- const char* pattern_;
- bool is_valid_;
-
-#if GTEST_USES_POSIX_RE
-
- regex_t full_regex_; // For FullMatch().
- regex_t partial_regex_; // For PartialMatch().
-
-#else // GTEST_USES_SIMPLE_RE
-
- const char* full_pattern_; // For FullMatch();
-
-#endif
-
- GTEST_DISALLOW_ASSIGN_(RE);
-};
-
-// Formats a source file path and a line number as they would appear
-// in an error message from the compiler used to compile this code.
-GTEST_API_ ::std::string FormatFileLocation(const char* file, int line);
-
-// Formats a file location for compiler-independent XML output.
-// Although this function is not platform dependent, we put it next to
-// FormatFileLocation in order to contrast the two functions.
-GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(const char* file,
- int line);
-
-// Defines logging utilities:
-// GTEST_LOG_(severity) - logs messages at the specified severity level. The
-// message itself is streamed into the macro.
-// LogToStderr() - directs all log messages to stderr.
-// FlushInfoLog() - flushes informational log messages.
-
-enum GTestLogSeverity {
- GTEST_INFO,
- GTEST_WARNING,
- GTEST_ERROR,
- GTEST_FATAL
-};
-
-// Formats log entry severity, provides a stream object for streaming the
-// log message, and terminates the message with a newline when going out of
-// scope.
-class GTEST_API_ GTestLog {
- public:
- GTestLog(GTestLogSeverity severity, const char* file, int line);
-
- // Flushes the buffers and, if severity is GTEST_FATAL, aborts the program.
- ~GTestLog();
-
- ::std::ostream& GetStream() { return ::std::cerr; }
-
- private:
- const GTestLogSeverity severity_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestLog);
-};
-
-#if !defined(GTEST_LOG_)
-
-# define GTEST_LOG_(severity) \
- ::testing::internal::GTestLog(::testing::internal::GTEST_##severity, \
- __FILE__, __LINE__).GetStream()
-
-inline void LogToStderr() {}
-inline void FlushInfoLog() { fflush(NULL); }
-
-#endif // !defined(GTEST_LOG_)
-
-#if !defined(GTEST_CHECK_)
-// INTERNAL IMPLEMENTATION - DO NOT USE.
-//
-// GTEST_CHECK_ is an all-mode assert. It aborts the program if the condition
-// is not satisfied.
-// Synopsys:
-// GTEST_CHECK_(boolean_condition);
-// or
-// GTEST_CHECK_(boolean_condition) << "Additional message";
-//
-// This checks the condition and if the condition is not satisfied
-// it prints message about the condition violation, including the
-// condition itself, plus additional message streamed into it, if any,
-// and then it aborts the program. It aborts the program irrespective of
-// whether it is built in the debug mode or not.
-# define GTEST_CHECK_(condition) \
- GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
- if (::testing::internal::IsTrue(condition)) \
- ; \
- else \
- GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
-#endif // !defined(GTEST_CHECK_)
-
-// An all-mode assert to verify that the given POSIX-style function
-// call returns 0 (indicating success). Known limitation: this
-// doesn't expand to a balanced 'if' statement, so enclose the macro
-// in {} if you need to use it as the only statement in an 'if'
-// branch.
-#define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \
- if (const int gtest_error = (posix_call)) \
- GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
- << gtest_error
-
-#if GTEST_HAS_STD_MOVE_
-using std::move;
-#else // GTEST_HAS_STD_MOVE_
-template <typename T>
-const T& move(const T& t) {
- return t;
-}
-#endif // GTEST_HAS_STD_MOVE_
-
-// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
-//
-// Use ImplicitCast_ as a safe version of static_cast for upcasting in
-// the type hierarchy (e.g. casting a Foo* to a SuperclassOfFoo* or a
-// const Foo*). When you use ImplicitCast_, the compiler checks that
-// the cast is safe. Such explicit ImplicitCast_s are necessary in
-// surprisingly many situations where C++ demands an exact type match
-// instead of an argument type convertable to a target type.
-//
-// The syntax for using ImplicitCast_ is the same as for static_cast:
-//
-// ImplicitCast_<ToType>(expr)
-//
-// ImplicitCast_ would have been part of the C++ standard library,
-// but the proposal was submitted too late. It will probably make
-// its way into the language in the future.
-//
-// This relatively ugly name is intentional. It prevents clashes with
-// similar functions users may have (e.g., implicit_cast). The internal
-// namespace alone is not enough because the function can be found by ADL.
-template<typename To>
-inline To ImplicitCast_(To x) { return x; }
-
-// When you upcast (that is, cast a pointer from type Foo to type
-// SuperclassOfFoo), it's fine to use ImplicitCast_<>, since upcasts
-// always succeed. When you downcast (that is, cast a pointer from
-// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because
-// how do you know the pointer is really of type SubclassOfFoo? It
-// could be a bare Foo, or of type DifferentSubclassOfFoo. Thus,
-// when you downcast, you should use this macro. In debug mode, we
-// use dynamic_cast<> to double-check the downcast is legal (we die
-// if it's not). In normal mode, we do the efficient static_cast<>
-// instead. Thus, it's important to test in debug mode to make sure
-// the cast is legal!
-// This is the only place in the code we should use dynamic_cast<>.
-// In particular, you SHOULDN'T be using dynamic_cast<> in order to
-// do RTTI (eg code like this:
-// if (dynamic_cast<Subclass1>(foo)) HandleASubclass1Object(foo);
-// if (dynamic_cast<Subclass2>(foo)) HandleASubclass2Object(foo);
-// You should design the code some other way not to need this.
-//
-// This relatively ugly name is intentional. It prevents clashes with
-// similar functions users may have (e.g., down_cast). The internal
-// namespace alone is not enough because the function can be found by ADL.
-template<typename To, typename From> // use like this: DownCast_<T*>(foo);
-inline To DownCast_(From* f) { // so we only accept pointers
- // Ensures that To is a sub-type of From *. This test is here only
- // for compile-time type checking, and has no overhead in an
- // optimized build at run-time, as it will be optimized away
- // completely.
- GTEST_INTENTIONAL_CONST_COND_PUSH_()
- if (false) {
- GTEST_INTENTIONAL_CONST_COND_POP_()
- const To to = NULL;
- ::testing::internal::ImplicitCast_<From*>(to);
- }
-
-#if GTEST_HAS_RTTI
- // RTTI: debug mode only!
- GTEST_CHECK_(f == NULL || dynamic_cast<To>(f) != NULL);
-#endif
- return static_cast<To>(f);
-}
-
-// Downcasts the pointer of type Base to Derived.
-// Derived must be a subclass of Base. The parameter MUST
-// point to a class of type Derived, not any subclass of it.
-// When RTTI is available, the function performs a runtime
-// check to enforce this.
-template <class Derived, class Base>
-Derived* CheckedDowncastToActualType(Base* base) {
-#if GTEST_HAS_RTTI
- GTEST_CHECK_(typeid(*base) == typeid(Derived));
-#endif
-
-#if GTEST_HAS_DOWNCAST_
- return ::down_cast<Derived*>(base);
-#elif GTEST_HAS_RTTI
- return dynamic_cast<Derived*>(base); // NOLINT
-#else
- return static_cast<Derived*>(base); // Poor man's downcast.
-#endif
-}
-
-#if GTEST_HAS_STREAM_REDIRECTION
-
-// Defines the stderr capturer:
-// CaptureStdout - starts capturing stdout.
-// GetCapturedStdout - stops capturing stdout and returns the captured string.
-// CaptureStderr - starts capturing stderr.
-// GetCapturedStderr - stops capturing stderr and returns the captured string.
-//
-GTEST_API_ void CaptureStdout();
-GTEST_API_ std::string GetCapturedStdout();
-GTEST_API_ void CaptureStderr();
-GTEST_API_ std::string GetCapturedStderr();
-
-#endif // GTEST_HAS_STREAM_REDIRECTION
-
-// Returns a path to temporary directory.
-GTEST_API_ std::string TempDir();
-
-// Returns the size (in bytes) of a file.
-GTEST_API_ size_t GetFileSize(FILE* file);
-
-// Reads the entire content of a file as a string.
-GTEST_API_ std::string ReadEntireFile(FILE* file);
-
-// All command line arguments.
-GTEST_API_ const ::std::vector<testing::internal::string>& GetArgvs();
-
-#if GTEST_HAS_DEATH_TEST
-
-const ::std::vector<testing::internal::string>& GetInjectableArgvs();
-void SetInjectableArgvs(const ::std::vector<testing::internal::string>*
- new_argvs);
-
-
-#endif // GTEST_HAS_DEATH_TEST
-
-// Defines synchronization primitives.
-#if GTEST_IS_THREADSAFE
-# if GTEST_HAS_PTHREAD
-// Sleeps for (roughly) n milliseconds. This function is only for testing
-// Google Test's own constructs. Don't use it in user tests, either
-// directly or indirectly.
-inline void SleepMilliseconds(int n) {
- const timespec time = {
- 0, // 0 seconds.
- n * 1000L * 1000L, // And n ms.
- };
- nanosleep(&time, NULL);
-}
-# endif // GTEST_HAS_PTHREAD
-
-# if GTEST_HAS_NOTIFICATION_
-// Notification has already been imported into the namespace.
-// Nothing to do here.
-
-# elif GTEST_HAS_PTHREAD
-// Allows a controller thread to pause execution of newly created
-// threads until notified. Instances of this class must be created
-// and destroyed in the controller thread.
-//
-// This class is only for testing Google Test's own constructs. Do not
-// use it in user tests, either directly or indirectly.
-class Notification {
- public:
- Notification() : notified_(false) {
- GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL));
- }
- ~Notification() {
- pthread_mutex_destroy(&mutex_);
- }
-
- // Notifies all threads created with this notification to start. Must
- // be called from the controller thread.
- void Notify() {
- pthread_mutex_lock(&mutex_);
- notified_ = true;
- pthread_mutex_unlock(&mutex_);
- }
-
- // Blocks until the controller thread notifies. Must be called from a test
- // thread.
- void WaitForNotification() {
- for (;;) {
- pthread_mutex_lock(&mutex_);
- const bool notified = notified_;
- pthread_mutex_unlock(&mutex_);
- if (notified)
- break;
- SleepMilliseconds(10);
- }
- }
-
- private:
- pthread_mutex_t mutex_;
- bool notified_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification);
-};
-
-# elif GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
-
-GTEST_API_ void SleepMilliseconds(int n);
-
-// Provides leak-safe Windows kernel handle ownership.
-// Used in death tests and in threading support.
-class GTEST_API_ AutoHandle {
- public:
- // Assume that Win32 HANDLE type is equivalent to void*. Doing so allows us to
- // avoid including <windows.h> in this header file. Including <windows.h> is
- // undesirable because it defines a lot of symbols and macros that tend to
- // conflict with client code. This assumption is verified by
- // WindowsTypesTest.HANDLEIsVoidStar.
- typedef void* Handle;
- AutoHandle();
- explicit AutoHandle(Handle handle);
-
- ~AutoHandle();
-
- Handle Get() const;
- void Reset();
- void Reset(Handle handle);
-
- private:
- // Returns true iff the handle is a valid handle object that can be closed.
- bool IsCloseable() const;
-
- Handle handle_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(AutoHandle);
-};
-
-// Allows a controller thread to pause execution of newly created
-// threads until notified. Instances of this class must be created
-// and destroyed in the controller thread.
-//
-// This class is only for testing Google Test's own constructs. Do not
-// use it in user tests, either directly or indirectly.
-class GTEST_API_ Notification {
- public:
- Notification();
- void Notify();
- void WaitForNotification();
-
- private:
- AutoHandle event_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification);
-};
-# endif // GTEST_HAS_NOTIFICATION_
-
-// On MinGW, we can have both GTEST_OS_WINDOWS and GTEST_HAS_PTHREAD
-// defined, but we don't want to use MinGW's pthreads implementation, which
-// has conformance problems with some versions of the POSIX standard.
-# if GTEST_HAS_PTHREAD && !GTEST_OS_WINDOWS_MINGW
-
-// As a C-function, ThreadFuncWithCLinkage cannot be templated itself.
-// Consequently, it cannot select a correct instantiation of ThreadWithParam
-// in order to call its Run(). Introducing ThreadWithParamBase as a
-// non-templated base class for ThreadWithParam allows us to bypass this
-// problem.
-class ThreadWithParamBase {
- public:
- virtual ~ThreadWithParamBase() {}
- virtual void Run() = 0;
-};
-
-// pthread_create() accepts a pointer to a function type with the C linkage.
-// According to the Standard (7.5/1), function types with different linkages
-// are different even if they are otherwise identical. Some compilers (for
-// example, SunStudio) treat them as different types. Since class methods
-// cannot be defined with C-linkage we need to define a free C-function to
-// pass into pthread_create().
-extern "C" inline void* ThreadFuncWithCLinkage(void* thread) {
- static_cast<ThreadWithParamBase*>(thread)->Run();
- return NULL;
-}
-
-// Helper class for testing Google Test's multi-threading constructs.
-// To use it, write:
-//
-// void ThreadFunc(int param) { /* Do things with param */ }
-// Notification thread_can_start;
-// ...
-// // The thread_can_start parameter is optional; you can supply NULL.
-// ThreadWithParam<int> thread(&ThreadFunc, 5, &thread_can_start);
-// thread_can_start.Notify();
-//
-// These classes are only for testing Google Test's own constructs. Do
-// not use them in user tests, either directly or indirectly.
-template <typename T>
-class ThreadWithParam : public ThreadWithParamBase {
- public:
- typedef void UserThreadFunc(T);
-
- ThreadWithParam(UserThreadFunc* func, T param, Notification* thread_can_start)
- : func_(func),
- param_(param),
- thread_can_start_(thread_can_start),
- finished_(false) {
- ThreadWithParamBase* const base = this;
- // The thread can be created only after all fields except thread_
- // have been initialized.
- GTEST_CHECK_POSIX_SUCCESS_(
- pthread_create(&thread_, 0, &ThreadFuncWithCLinkage, base));
- }
- ~ThreadWithParam() { Join(); }
-
- void Join() {
- if (!finished_) {
- GTEST_CHECK_POSIX_SUCCESS_(pthread_join(thread_, 0));
- finished_ = true;
- }
- }
-
- virtual void Run() {
- if (thread_can_start_ != NULL)
- thread_can_start_->WaitForNotification();
- func_(param_);
- }
-
- private:
- UserThreadFunc* const func_; // User-supplied thread function.
- const T param_; // User-supplied parameter to the thread function.
- // When non-NULL, used to block execution until the controller thread
- // notifies.
- Notification* const thread_can_start_;
- bool finished_; // true iff we know that the thread function has finished.
- pthread_t thread_; // The native thread object.
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam);
-};
-# endif // !GTEST_OS_WINDOWS && GTEST_HAS_PTHREAD ||
- // GTEST_HAS_MUTEX_AND_THREAD_LOCAL_
-
-# if GTEST_HAS_MUTEX_AND_THREAD_LOCAL_
-// Mutex and ThreadLocal have already been imported into the namespace.
-// Nothing to do here.
-
-# elif GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
-
-// Mutex implements mutex on Windows platforms. It is used in conjunction
-// with class MutexLock:
-//
-// Mutex mutex;
-// ...
-// MutexLock lock(&mutex); // Acquires the mutex and releases it at the
-// // end of the current scope.
-//
-// A static Mutex *must* be defined or declared using one of the following
-// macros:
-// GTEST_DEFINE_STATIC_MUTEX_(g_some_mutex);
-// GTEST_DECLARE_STATIC_MUTEX_(g_some_mutex);
-//
-// (A non-static Mutex is defined/declared in the usual way).
-class GTEST_API_ Mutex {
- public:
- enum MutexType { kStatic = 0, kDynamic = 1 };
- // We rely on kStaticMutex being 0 as it is to what the linker initializes
- // type_ in static mutexes. critical_section_ will be initialized lazily
- // in ThreadSafeLazyInit().
- enum StaticConstructorSelector { kStaticMutex = 0 };
-
- // This constructor intentionally does nothing. It relies on type_ being
- // statically initialized to 0 (effectively setting it to kStatic) and on
- // ThreadSafeLazyInit() to lazily initialize the rest of the members.
- explicit Mutex(StaticConstructorSelector /*dummy*/) {}
-
- Mutex();
- ~Mutex();
-
- void Lock();
-
- void Unlock();
-
- // Does nothing if the current thread holds the mutex. Otherwise, crashes
- // with high probability.
- void AssertHeld();
-
- private:
- // Initializes owner_thread_id_ and critical_section_ in static mutexes.
- void ThreadSafeLazyInit();
-
- // Per http://blogs.msdn.com/b/oldnewthing/archive/2004/02/23/78395.aspx,
- // we assume that 0 is an invalid value for thread IDs.
- unsigned int owner_thread_id_;
-
- // For static mutexes, we rely on these members being initialized to zeros
- // by the linker.
- MutexType type_;
- long critical_section_init_phase_; // NOLINT
- _RTL_CRITICAL_SECTION* critical_section_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex);
-};
-
-# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
- extern ::testing::internal::Mutex mutex
-
-# define GTEST_DEFINE_STATIC_MUTEX_(mutex) \
- ::testing::internal::Mutex mutex(::testing::internal::Mutex::kStaticMutex)
-
-// We cannot name this class MutexLock because the ctor declaration would
-// conflict with a macro named MutexLock, which is defined on some
-// platforms. That macro is used as a defensive measure to prevent against
-// inadvertent misuses of MutexLock like "MutexLock(&mu)" rather than
-// "MutexLock l(&mu)". Hence the typedef trick below.
-class GTestMutexLock {
- public:
- explicit GTestMutexLock(Mutex* mutex)
- : mutex_(mutex) { mutex_->Lock(); }
-
- ~GTestMutexLock() { mutex_->Unlock(); }
-
- private:
- Mutex* const mutex_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock);
-};
-
-typedef GTestMutexLock MutexLock;
-
-// Base class for ValueHolder<T>. Allows a caller to hold and delete a value
-// without knowing its type.
-class ThreadLocalValueHolderBase {
- public:
- virtual ~ThreadLocalValueHolderBase() {}
-};
-
-// Provides a way for a thread to send notifications to a ThreadLocal
-// regardless of its parameter type.
-class ThreadLocalBase {
- public:
- // Creates a new ValueHolder<T> object holding a default value passed to
- // this ThreadLocal<T>'s constructor and returns it. It is the caller's
- // responsibility not to call this when the ThreadLocal<T> instance already
- // has a value on the current thread.
- virtual ThreadLocalValueHolderBase* NewValueForCurrentThread() const = 0;
-
- protected:
- ThreadLocalBase() {}
- virtual ~ThreadLocalBase() {}
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocalBase);
-};
-
-// Maps a thread to a set of ThreadLocals that have values instantiated on that
-// thread and notifies them when the thread exits. A ThreadLocal instance is
-// expected to persist until all threads it has values on have terminated.
-class GTEST_API_ ThreadLocalRegistry {
- public:
- // Registers thread_local_instance as having value on the current thread.
- // Returns a value that can be used to identify the thread from other threads.
- static ThreadLocalValueHolderBase* GetValueOnCurrentThread(
- const ThreadLocalBase* thread_local_instance);
-
- // Invoked when a ThreadLocal instance is destroyed.
- static void OnThreadLocalDestroyed(
- const ThreadLocalBase* thread_local_instance);
-};
-
-class GTEST_API_ ThreadWithParamBase {
- public:
- void Join();
-
- protected:
- class Runnable {
- public:
- virtual ~Runnable() {}
- virtual void Run() = 0;
- };
-
- ThreadWithParamBase(Runnable *runnable, Notification* thread_can_start);
- virtual ~ThreadWithParamBase();
-
- private:
- AutoHandle thread_;
-};
-
-// Helper class for testing Google Test's multi-threading constructs.
-template <typename T>
-class ThreadWithParam : public ThreadWithParamBase {
- public:
- typedef void UserThreadFunc(T);
-
- ThreadWithParam(UserThreadFunc* func, T param, Notification* thread_can_start)
- : ThreadWithParamBase(new RunnableImpl(func, param), thread_can_start) {
- }
- virtual ~ThreadWithParam() {}
-
- private:
- class RunnableImpl : public Runnable {
- public:
- RunnableImpl(UserThreadFunc* func, T param)
- : func_(func),
- param_(param) {
- }
- virtual ~RunnableImpl() {}
- virtual void Run() {
- func_(param_);
- }
-
- private:
- UserThreadFunc* const func_;
- const T param_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(RunnableImpl);
- };
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam);
-};
-
-// Implements thread-local storage on Windows systems.
-//
-// // Thread 1
-// ThreadLocal<int> tl(100); // 100 is the default value for each thread.
-//
-// // Thread 2
-// tl.set(150); // Changes the value for thread 2 only.
-// EXPECT_EQ(150, tl.get());
-//
-// // Thread 1
-// EXPECT_EQ(100, tl.get()); // In thread 1, tl has the original value.
-// tl.set(200);
-// EXPECT_EQ(200, tl.get());
-//
-// The template type argument T must have a public copy constructor.
-// In addition, the default ThreadLocal constructor requires T to have
-// a public default constructor.
-//
-// The users of a TheadLocal instance have to make sure that all but one
-// threads (including the main one) using that instance have exited before
-// destroying it. Otherwise, the per-thread objects managed for them by the
-// ThreadLocal instance are not guaranteed to be destroyed on all platforms.
-//
-// Google Test only uses global ThreadLocal objects. That means they
-// will die after main() has returned. Therefore, no per-thread
-// object managed by Google Test will be leaked as long as all threads
-// using Google Test have exited when main() returns.
-template <typename T>
-class ThreadLocal : public ThreadLocalBase {
- public:
- ThreadLocal() : default_factory_(new DefaultValueHolderFactory()) {}
- explicit ThreadLocal(const T& value)
- : default_factory_(new InstanceValueHolderFactory(value)) {}
-
- ~ThreadLocal() { ThreadLocalRegistry::OnThreadLocalDestroyed(this); }
-
- T* pointer() { return GetOrCreateValue(); }
- const T* pointer() const { return GetOrCreateValue(); }
- const T& get() const { return *pointer(); }
- void set(const T& value) { *pointer() = value; }
-
- private:
- // Holds a value of T. Can be deleted via its base class without the caller
- // knowing the type of T.
- class ValueHolder : public ThreadLocalValueHolderBase {
- public:
- ValueHolder() : value_() {}
- explicit ValueHolder(const T& value) : value_(value) {}
-
- T* pointer() { return &value_; }
-
- private:
- T value_;
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder);
- };
-
-
- T* GetOrCreateValue() const {
- return static_cast<ValueHolder*>(
- ThreadLocalRegistry::GetValueOnCurrentThread(this))->pointer();
- }
-
- virtual ThreadLocalValueHolderBase* NewValueForCurrentThread() const {
- return default_factory_->MakeNewHolder();
- }
-
- class ValueHolderFactory {
- public:
- ValueHolderFactory() {}
- virtual ~ValueHolderFactory() {}
- virtual ValueHolder* MakeNewHolder() const = 0;
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolderFactory);
- };
-
- class DefaultValueHolderFactory : public ValueHolderFactory {
- public:
- DefaultValueHolderFactory() {}
- virtual ValueHolder* MakeNewHolder() const { return new ValueHolder(); }
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultValueHolderFactory);
- };
-
- class InstanceValueHolderFactory : public ValueHolderFactory {
- public:
- explicit InstanceValueHolderFactory(const T& value) : value_(value) {}
- virtual ValueHolder* MakeNewHolder() const {
- return new ValueHolder(value_);
- }
-
- private:
- const T value_; // The value for each thread.
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(InstanceValueHolderFactory);
- };
-
- scoped_ptr<ValueHolderFactory> default_factory_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal);
-};
-
-# elif GTEST_HAS_PTHREAD
-
-// MutexBase and Mutex implement mutex on pthreads-based platforms.
-class MutexBase {
- public:
- // Acquires this mutex.
- void Lock() {
- GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&mutex_));
- owner_ = pthread_self();
- has_owner_ = true;
- }
-
- // Releases this mutex.
- void Unlock() {
- // Since the lock is being released the owner_ field should no longer be
- // considered valid. We don't protect writing to has_owner_ here, as it's
- // the caller's responsibility to ensure that the current thread holds the
- // mutex when this is called.
- has_owner_ = false;
- GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_unlock(&mutex_));
- }
-
- // Does nothing if the current thread holds the mutex. Otherwise, crashes
- // with high probability.
- void AssertHeld() const {
- GTEST_CHECK_(has_owner_ && pthread_equal(owner_, pthread_self()))
- << "The current thread is not holding the mutex @" << this;
- }
-
- // A static mutex may be used before main() is entered. It may even
- // be used before the dynamic initialization stage. Therefore we
- // must be able to initialize a static mutex object at link time.
- // This means MutexBase has to be a POD and its member variables
- // have to be public.
- public:
- pthread_mutex_t mutex_; // The underlying pthread mutex.
- // has_owner_ indicates whether the owner_ field below contains a valid thread
- // ID and is therefore safe to inspect (e.g., to use in pthread_equal()). All
- // accesses to the owner_ field should be protected by a check of this field.
- // An alternative might be to memset() owner_ to all zeros, but there's no
- // guarantee that a zero'd pthread_t is necessarily invalid or even different
- // from pthread_self().
- bool has_owner_;
- pthread_t owner_; // The thread holding the mutex.
-};
-
-// Forward-declares a static mutex.
-# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
- extern ::testing::internal::MutexBase mutex
-
-// Defines and statically (i.e. at link time) initializes a static mutex.
-# define GTEST_DEFINE_STATIC_MUTEX_(mutex) \
- ::testing::internal::MutexBase mutex = { PTHREAD_MUTEX_INITIALIZER, false, pthread_t() }
-
-// The Mutex class can only be used for mutexes created at runtime. It
-// shares its API with MutexBase otherwise.
-class Mutex : public MutexBase {
- public:
- Mutex() {
- GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL));
- has_owner_ = false;
- }
- ~Mutex() {
- GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&mutex_));
- }
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex);
-};
-
-// We cannot name this class MutexLock because the ctor declaration would
-// conflict with a macro named MutexLock, which is defined on some
-// platforms. That macro is used as a defensive measure to prevent against
-// inadvertent misuses of MutexLock like "MutexLock(&mu)" rather than
-// "MutexLock l(&mu)". Hence the typedef trick below.
-class GTestMutexLock {
- public:
- explicit GTestMutexLock(MutexBase* mutex)
- : mutex_(mutex) { mutex_->Lock(); }
-
- ~GTestMutexLock() { mutex_->Unlock(); }
-
- private:
- MutexBase* const mutex_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock);
-};
-
-typedef GTestMutexLock MutexLock;
-
-// Helpers for ThreadLocal.
-
-// pthread_key_create() requires DeleteThreadLocalValue() to have
-// C-linkage. Therefore it cannot be templatized to access
-// ThreadLocal<T>. Hence the need for class
-// ThreadLocalValueHolderBase.
-class ThreadLocalValueHolderBase {
- public:
- virtual ~ThreadLocalValueHolderBase() {}
-};
-
-// Called by pthread to delete thread-local data stored by
-// pthread_setspecific().
-extern "C" inline void DeleteThreadLocalValue(void* value_holder) {
- delete static_cast<ThreadLocalValueHolderBase*>(value_holder);
-}
-
-// Implements thread-local storage on pthreads-based systems.
-template <typename T>
-class ThreadLocal {
- public:
- ThreadLocal()
- : key_(CreateKey()), default_factory_(new DefaultValueHolderFactory()) {}
- explicit ThreadLocal(const T& value)
- : key_(CreateKey()),
- default_factory_(new InstanceValueHolderFactory(value)) {}
-
- ~ThreadLocal() {
- // Destroys the managed object for the current thread, if any.
- DeleteThreadLocalValue(pthread_getspecific(key_));
-
- // Releases resources associated with the key. This will *not*
- // delete managed objects for other threads.
- GTEST_CHECK_POSIX_SUCCESS_(pthread_key_delete(key_));
- }
-
- T* pointer() { return GetOrCreateValue(); }
- const T* pointer() const { return GetOrCreateValue(); }
- const T& get() const { return *pointer(); }
- void set(const T& value) { *pointer() = value; }
-
- private:
- // Holds a value of type T.
- class ValueHolder : public ThreadLocalValueHolderBase {
- public:
- ValueHolder() : value_() {}
- explicit ValueHolder(const T& value) : value_(value) {}
-
- T* pointer() { return &value_; }
-
- private:
- T value_;
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder);
- };
-
- static pthread_key_t CreateKey() {
- pthread_key_t key;
- // When a thread exits, DeleteThreadLocalValue() will be called on
- // the object managed for that thread.
- GTEST_CHECK_POSIX_SUCCESS_(
- pthread_key_create(&key, &DeleteThreadLocalValue));
- return key;
- }
-
- T* GetOrCreateValue() const {
- ThreadLocalValueHolderBase* const holder =
- static_cast<ThreadLocalValueHolderBase*>(pthread_getspecific(key_));
- if (holder != NULL) {
- return CheckedDowncastToActualType<ValueHolder>(holder)->pointer();
- }
-
- ValueHolder* const new_holder = default_factory_->MakeNewHolder();
- ThreadLocalValueHolderBase* const holder_base = new_holder;
- GTEST_CHECK_POSIX_SUCCESS_(pthread_setspecific(key_, holder_base));
- return new_holder->pointer();
- }
-
- class ValueHolderFactory {
- public:
- ValueHolderFactory() {}
- virtual ~ValueHolderFactory() {}
- virtual ValueHolder* MakeNewHolder() const = 0;
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolderFactory);
- };
-
- class DefaultValueHolderFactory : public ValueHolderFactory {
- public:
- DefaultValueHolderFactory() {}
- virtual ValueHolder* MakeNewHolder() const { return new ValueHolder(); }
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultValueHolderFactory);
- };
-
- class InstanceValueHolderFactory : public ValueHolderFactory {
- public:
- explicit InstanceValueHolderFactory(const T& value) : value_(value) {}
- virtual ValueHolder* MakeNewHolder() const {
- return new ValueHolder(value_);
- }
-
- private:
- const T value_; // The value for each thread.
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(InstanceValueHolderFactory);
- };
-
- // A key pthreads uses for looking up per-thread values.
- const pthread_key_t key_;
- scoped_ptr<ValueHolderFactory> default_factory_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal);
-};
-
-# endif // GTEST_HAS_MUTEX_AND_THREAD_LOCAL_
-
-#else // GTEST_IS_THREADSAFE
-
-// A dummy implementation of synchronization primitives (mutex, lock,
-// and thread-local variable). Necessary for compiling Google Test where
-// mutex is not supported - using Google Test in multiple threads is not
-// supported on such platforms.
-
-class Mutex {
- public:
- Mutex() {}
- void Lock() {}
- void Unlock() {}
- void AssertHeld() const {}
-};
-
-# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
- extern ::testing::internal::Mutex mutex
-
-# define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex
-
-// We cannot name this class MutexLock because the ctor declaration would
-// conflict with a macro named MutexLock, which is defined on some
-// platforms. That macro is used as a defensive measure to prevent against
-// inadvertent misuses of MutexLock like "MutexLock(&mu)" rather than
-// "MutexLock l(&mu)". Hence the typedef trick below.
-class GTestMutexLock {
- public:
- explicit GTestMutexLock(Mutex*) {} // NOLINT
-};
-
-typedef GTestMutexLock MutexLock;
-
-template <typename T>
-class ThreadLocal {
- public:
- ThreadLocal() : value_() {}
- explicit ThreadLocal(const T& value) : value_(value) {}
- T* pointer() { return &value_; }
- const T* pointer() const { return &value_; }
- const T& get() const { return value_; }
- void set(const T& value) { value_ = value; }
- private:
- T value_;
-};
-
-#endif // GTEST_IS_THREADSAFE
-
-// Returns the number of threads running in the process, or 0 to indicate that
-// we cannot detect it.
-GTEST_API_ size_t GetThreadCount();
-
-// Passing non-POD classes through ellipsis (...) crashes the ARM
-// compiler and generates a warning in Sun Studio. The Nokia Symbian
-// and the IBM XL C/C++ compiler try to instantiate a copy constructor
-// for objects passed through ellipsis (...), failing for uncopyable
-// objects. We define this to ensure that only POD is passed through
-// ellipsis on these systems.
-#if defined(__SYMBIAN32__) || defined(__IBMCPP__) || defined(__SUNPRO_CC)
-// We lose support for NULL detection where the compiler doesn't like
-// passing non-POD classes through ellipsis (...).
-# define GTEST_ELLIPSIS_NEEDS_POD_ 1
-#else
-# define GTEST_CAN_COMPARE_NULL 1
-#endif
-
-// The Nokia Symbian and IBM XL C/C++ compilers cannot decide between
-// const T& and const T* in a function template. These compilers
-// _can_ decide between class template specializations for T and T*,
-// so a tr1::type_traits-like is_pointer works.
-#if defined(__SYMBIAN32__) || defined(__IBMCPP__)
-# define GTEST_NEEDS_IS_POINTER_ 1
-#endif
-
-template <bool bool_value>
-struct bool_constant {
- typedef bool_constant<bool_value> type;
- static const bool value = bool_value;
-};
-template <bool bool_value> const bool bool_constant<bool_value>::value;
-
-typedef bool_constant<false> false_type;
-typedef bool_constant<true> true_type;
-
-template <typename T>
-struct is_pointer : public false_type {};
-
-template <typename T>
-struct is_pointer<T*> : public true_type {};
-
-template <typename Iterator>
-struct IteratorTraits {
- typedef typename Iterator::value_type value_type;
-};
-
-template <typename T>
-struct IteratorTraits<T*> {
- typedef T value_type;
-};
-
-template <typename T>
-struct IteratorTraits<const T*> {
- typedef T value_type;
-};
-
-#if GTEST_OS_WINDOWS
-# define GTEST_PATH_SEP_ "\\"
-# define GTEST_HAS_ALT_PATH_SEP_ 1
-// The biggest signed integer type the compiler supports.
-typedef __int64 BiggestInt;
-#else
-# define GTEST_PATH_SEP_ "/"
-# define GTEST_HAS_ALT_PATH_SEP_ 0
-typedef long long BiggestInt; // NOLINT
-#endif // GTEST_OS_WINDOWS
-
-// Utilities for char.
-
-// isspace(int ch) and friends accept an unsigned char or EOF. char
-// may be signed, depending on the compiler (or compiler flags).
-// Therefore we need to cast a char to unsigned char before calling
-// isspace(), etc.
-
-inline bool IsAlpha(char ch) {
- return isalpha(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsAlNum(char ch) {
- return isalnum(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsDigit(char ch) {
- return isdigit(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsLower(char ch) {
- return islower(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsSpace(char ch) {
- return isspace(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsUpper(char ch) {
- return isupper(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsXDigit(char ch) {
- return isxdigit(static_cast<unsigned char>(ch)) != 0;
-}
-inline bool IsXDigit(wchar_t ch) {
- const unsigned char low_byte = static_cast<unsigned char>(ch);
- return ch == low_byte && isxdigit(low_byte) != 0;
-}
-
-inline char ToLower(char ch) {
- return static_cast<char>(tolower(static_cast<unsigned char>(ch)));
-}
-inline char ToUpper(char ch) {
- return static_cast<char>(toupper(static_cast<unsigned char>(ch)));
-}
-
-inline std::string StripTrailingSpaces(std::string str) {
- std::string::iterator it = str.end();
- while (it != str.begin() && IsSpace(*--it))
- it = str.erase(it);
- return str;
-}
-
-// The testing::internal::posix namespace holds wrappers for common
-// POSIX functions. These wrappers hide the differences between
-// Windows/MSVC and POSIX systems. Since some compilers define these
-// standard functions as macros, the wrapper cannot have the same name
-// as the wrapped function.
-
-namespace posix {
-
-// Functions with a different name on Windows.
-
-#if GTEST_OS_WINDOWS
-
-typedef struct _stat StatStruct;
-
-# ifdef __BORLANDC__
-inline int IsATTY(int fd) { return isatty(fd); }
-inline int StrCaseCmp(const char* s1, const char* s2) {
- return stricmp(s1, s2);
-}
-inline char* StrDup(const char* src) { return strdup(src); }
-# else // !__BORLANDC__
-# if GTEST_OS_WINDOWS_MOBILE
-inline int IsATTY(int /* fd */) { return 0; }
-# else
-inline int IsATTY(int fd) { return _isatty(fd); }
-# endif // GTEST_OS_WINDOWS_MOBILE
-inline int StrCaseCmp(const char* s1, const char* s2) {
- return _stricmp(s1, s2);
-}
-inline char* StrDup(const char* src) { return _strdup(src); }
-# endif // __BORLANDC__
-
-# if GTEST_OS_WINDOWS_MOBILE
-inline int FileNo(FILE* file) { return reinterpret_cast<int>(_fileno(file)); }
-// Stat(), RmDir(), and IsDir() are not needed on Windows CE at this
-// time and thus not defined there.
-# else
-inline int FileNo(FILE* file) { return _fileno(file); }
-inline int Stat(const char* path, StatStruct* buf) { return _stat(path, buf); }
-inline int RmDir(const char* dir) { return _rmdir(dir); }
-inline bool IsDir(const StatStruct& st) {
- return (_S_IFDIR & st.st_mode) != 0;
-}
-# endif // GTEST_OS_WINDOWS_MOBILE
-
-#else
-
-typedef struct stat StatStruct;
-
-inline int FileNo(FILE* file) { return fileno(file); }
-inline int IsATTY(int fd) { return isatty(fd); }
-inline int Stat(const char* path, StatStruct* buf) { return stat(path, buf); }
-inline int StrCaseCmp(const char* s1, const char* s2) {
- return strcasecmp(s1, s2);
-}
-inline char* StrDup(const char* src) { return strdup(src); }
-inline int RmDir(const char* dir) { return rmdir(dir); }
-inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); }
-
-#endif // GTEST_OS_WINDOWS
-
-// Functions deprecated by MSVC 8.0.
-
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4996 /* deprecated function */)
-
-inline const char* StrNCpy(char* dest, const char* src, size_t n) {
- return strncpy(dest, src, n);
-}
-
-// ChDir(), FReopen(), FDOpen(), Read(), Write(), Close(), and
-// StrError() aren't needed on Windows CE at this time and thus not
-// defined there.
-
-#if !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
-inline int ChDir(const char* dir) { return chdir(dir); }
-#endif
-inline FILE* FOpen(const char* path, const char* mode) {
- return fopen(path, mode);
-}
-#if !GTEST_OS_WINDOWS_MOBILE
-inline FILE *FReopen(const char* path, const char* mode, FILE* stream) {
- return freopen(path, mode, stream);
-}
-inline FILE* FDOpen(int fd, const char* mode) { return fdopen(fd, mode); }
-#endif
-inline int FClose(FILE* fp) { return fclose(fp); }
-#if !GTEST_OS_WINDOWS_MOBILE
-inline int Read(int fd, void* buf, unsigned int count) {
- return static_cast<int>(read(fd, buf, count));
-}
-inline int Write(int fd, const void* buf, unsigned int count) {
- return static_cast<int>(write(fd, buf, count));
-}
-inline int Close(int fd) { return close(fd); }
-inline const char* StrError(int errnum) { return strerror(errnum); }
-#endif
-inline const char* GetEnv(const char* name) {
-#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE | GTEST_OS_WINDOWS_RT
- // We are on Windows CE, which has no environment variables.
- static_cast<void>(name); // To prevent 'unused argument' warning.
- return NULL;
-#elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9)
- // Environment variables which we programmatically clear will be set to the
- // empty string rather than unset (NULL). Handle that case.
- const char* const env = getenv(name);
- return (env != NULL && env[0] != '\0') ? env : NULL;
-#else
- return getenv(name);
-#endif
-}
-
-GTEST_DISABLE_MSC_WARNINGS_POP_()
-
-#if GTEST_OS_WINDOWS_MOBILE
-// Windows CE has no C library. The abort() function is used in
-// several places in Google Test. This implementation provides a reasonable
-// imitation of standard behaviour.
-void Abort();
-#else
-inline void Abort() { abort(); }
-#endif // GTEST_OS_WINDOWS_MOBILE
-
-} // namespace posix
-
-// MSVC "deprecates" snprintf and issues warnings wherever it is used. In
-// order to avoid these warnings, we need to use _snprintf or _snprintf_s on
-// MSVC-based platforms. We map the GTEST_SNPRINTF_ macro to the appropriate
-// function in order to achieve that. We use macro definition here because
-// snprintf is a variadic function.
-#if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE
-// MSVC 2005 and above support variadic macros.
-# define GTEST_SNPRINTF_(buffer, size, format, ...) \
- _snprintf_s(buffer, size, size, format, __VA_ARGS__)
-#elif defined(_MSC_VER)
-// Windows CE does not define _snprintf_s and MSVC prior to 2005 doesn't
-// complain about _snprintf.
-# define GTEST_SNPRINTF_ _snprintf
-#else
-# define GTEST_SNPRINTF_ snprintf
-#endif
-
-// The maximum number a BiggestInt can represent. This definition
-// works no matter BiggestInt is represented in one's complement or
-// two's complement.
-//
-// We cannot rely on numeric_limits in STL, as __int64 and long long
-// are not part of standard C++ and numeric_limits doesn't need to be
-// defined for them.
-const BiggestInt kMaxBiggestInt =
- ~(static_cast<BiggestInt>(1) << (8*sizeof(BiggestInt) - 1));
-
-// This template class serves as a compile-time function from size to
-// type. It maps a size in bytes to a primitive type with that
-// size. e.g.
-//
-// TypeWithSize<4>::UInt
-//
-// is typedef-ed to be unsigned int (unsigned integer made up of 4
-// bytes).
-//
-// Such functionality should belong to STL, but I cannot find it
-// there.
-//
-// Google Test uses this class in the implementation of floating-point
-// comparison.
-//
-// For now it only handles UInt (unsigned int) as that's all Google Test
-// needs. Other types can be easily added in the future if need
-// arises.
-template <size_t size>
-class TypeWithSize {
- public:
- // This prevents the user from using TypeWithSize<N> with incorrect
- // values of N.
- typedef void UInt;
-};
-
-// The specialization for size 4.
-template <>
-class TypeWithSize<4> {
- public:
- // unsigned int has size 4 in both gcc and MSVC.
- //
- // As base/basictypes.h doesn't compile on Windows, we cannot use
- // uint32, uint64, and etc here.
- typedef int Int;
- typedef unsigned int UInt;
-};
-
-// The specialization for size 8.
-template <>
-class TypeWithSize<8> {
- public:
-#if GTEST_OS_WINDOWS
- typedef __int64 Int;
- typedef unsigned __int64 UInt;
-#else
- typedef long long Int; // NOLINT
- typedef unsigned long long UInt; // NOLINT
-#endif // GTEST_OS_WINDOWS
-};
-
-// Integer types of known sizes.
-typedef TypeWithSize<4>::Int Int32;
-typedef TypeWithSize<4>::UInt UInt32;
-typedef TypeWithSize<8>::Int Int64;
-typedef TypeWithSize<8>::UInt UInt64;
-typedef TypeWithSize<8>::Int TimeInMillis; // Represents time in milliseconds.
-
-// Utilities for command line flags and environment variables.
-
-// Macro for referencing flags.
-#if !defined(GTEST_FLAG)
-# define GTEST_FLAG(name) FLAGS_gtest_##name
-#endif // !defined(GTEST_FLAG)
-
-#if !defined(GTEST_USE_OWN_FLAGFILE_FLAG_)
-# define GTEST_USE_OWN_FLAGFILE_FLAG_ 1
-#endif // !defined(GTEST_USE_OWN_FLAGFILE_FLAG_)
-
-#if !defined(GTEST_DECLARE_bool_)
-# define GTEST_FLAG_SAVER_ ::testing::internal::GTestFlagSaver
-
-// Macros for declaring flags.
-# define GTEST_DECLARE_bool_(name) GTEST_API_ extern bool GTEST_FLAG(name)
-# define GTEST_DECLARE_int32_(name) \
- GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name)
-#define GTEST_DECLARE_string_(name) \
- GTEST_API_ extern ::std::string GTEST_FLAG(name)
-
-// Macros for defining flags.
-#define GTEST_DEFINE_bool_(name, default_val, doc) \
- GTEST_API_ bool GTEST_FLAG(name) = (default_val)
-#define GTEST_DEFINE_int32_(name, default_val, doc) \
- GTEST_API_ ::testing::internal::Int32 GTEST_FLAG(name) = (default_val)
-#define GTEST_DEFINE_string_(name, default_val, doc) \
- GTEST_API_ ::std::string GTEST_FLAG(name) = (default_val)
-
-#endif // !defined(GTEST_DECLARE_bool_)
-
-// Thread annotations
-#if !defined(GTEST_EXCLUSIVE_LOCK_REQUIRED_)
-# define GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks)
-# define GTEST_LOCK_EXCLUDED_(locks)
-#endif // !defined(GTEST_EXCLUSIVE_LOCK_REQUIRED_)
-
-// Parses 'str' for a 32-bit signed integer. If successful, writes the result
-// to *value and returns true; otherwise leaves *value unchanged and returns
-// false.
-// TODO(chandlerc): Find a better way to refactor flag and environment parsing
-// out of both gtest-port.cc and gtest.cc to avoid exporting this utility
-// function.
-bool ParseInt32(const Message& src_text, const char* str, Int32* value);
-
-// Parses a bool/Int32/string from the environment variable
-// corresponding to the given Google Test flag.
-bool BoolFromGTestEnv(const char* flag, bool default_val);
-GTEST_API_ Int32 Int32FromGTestEnv(const char* flag, Int32 default_val);
-std::string StringFromGTestEnv(const char* flag, const char* default_val);
-
-} // namespace internal
-} // namespace testing
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
diff --git a/test/gtest/include/gtest/internal/gtest-string.h b/test/gtest/include/gtest/internal/gtest-string.h
deleted file mode 100644
index 97f1a7f..0000000
--- a/test/gtest/include/gtest/internal/gtest-string.h
+++ /dev/null
@@ -1,167 +0,0 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee)
-//
-// The Google C++ Testing Framework (Google Test)
-//
-// This header file declares the String class and functions used internally by
-// Google Test. They are subject to change without notice. They should not used
-// by code external to Google Test.
-//
-// This header file is #included by <gtest/internal/gtest-internal.h>.
-// It should not be #included by other files.
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
-
-#ifdef __BORLANDC__
-// string.h is not guaranteed to provide strcpy on C++ Builder.
-# include <mem.h>
-#endif
-
-#include <string.h>
-#include <string>
-
-#include "gtest/internal/gtest-port.h"
-
-namespace testing {
-namespace internal {
-
-// String - an abstract class holding static string utilities.
-class GTEST_API_ String {
- public:
- // Static utility methods
-
- // Clones a 0-terminated C string, allocating memory using new. The
- // caller is responsible for deleting the return value using
- // delete[]. Returns the cloned string, or NULL if the input is
- // NULL.
- //
- // This is different from strdup() in string.h, which allocates
- // memory using malloc().
- static const char* CloneCString(const char* c_str);
-
-#if GTEST_OS_WINDOWS_MOBILE
- // Windows CE does not have the 'ANSI' versions of Win32 APIs. To be
- // able to pass strings to Win32 APIs on CE we need to convert them
- // to 'Unicode', UTF-16.
-
- // Creates a UTF-16 wide string from the given ANSI string, allocating
- // memory using new. The caller is responsible for deleting the return
- // value using delete[]. Returns the wide string, or NULL if the
- // input is NULL.
- //
- // The wide string is created using the ANSI codepage (CP_ACP) to
- // match the behaviour of the ANSI versions of Win32 calls and the
- // C runtime.
- static LPCWSTR AnsiToUtf16(const char* c_str);
-
- // Creates an ANSI string from the given wide string, allocating
- // memory using new. The caller is responsible for deleting the return
- // value using delete[]. Returns the ANSI string, or NULL if the
- // input is NULL.
- //
- // The returned string is created using the ANSI codepage (CP_ACP) to
- // match the behaviour of the ANSI versions of Win32 calls and the
- // C runtime.
- static const char* Utf16ToAnsi(LPCWSTR utf16_str);
-#endif
-
- // Compares two C strings. Returns true iff they have the same content.
- //
- // Unlike strcmp(), this function can handle NULL argument(s). A
- // NULL C string is considered different to any non-NULL C string,
- // including the empty string.
- static bool CStringEquals(const char* lhs, const char* rhs);
-
- // Converts a wide C string to a String using the UTF-8 encoding.
- // NULL will be converted to "(null)". If an error occurred during
- // the conversion, "(failed to convert from wide string)" is
- // returned.
- static std::string ShowWideCString(const wchar_t* wide_c_str);
-
- // Compares two wide C strings. Returns true iff they have the same
- // content.
- //
- // Unlike wcscmp(), this function can handle NULL argument(s). A
- // NULL C string is considered different to any non-NULL C string,
- // including the empty string.
- static bool WideCStringEquals(const wchar_t* lhs, const wchar_t* rhs);
-
- // Compares two C strings, ignoring case. Returns true iff they
- // have the same content.
- //
- // Unlike strcasecmp(), this function can handle NULL argument(s).
- // A NULL C string is considered different to any non-NULL C string,
- // including the empty string.
- static bool CaseInsensitiveCStringEquals(const char* lhs,
- const char* rhs);
-
- // Compares two wide C strings, ignoring case. Returns true iff they
- // have the same content.
- //
- // Unlike wcscasecmp(), this function can handle NULL argument(s).
- // A NULL C string is considered different to any non-NULL wide C string,
- // including the empty string.
- // NB: The implementations on different platforms slightly differ.
- // On windows, this method uses _wcsicmp which compares according to LC_CTYPE
- // environment variable. On GNU platform this method uses wcscasecmp
- // which compares according to LC_CTYPE category of the current locale.
- // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the
- // current locale.
- static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs,
- const wchar_t* rhs);
-
- // Returns true iff the given string ends with the given suffix, ignoring
- // case. Any string is considered to end with an empty suffix.
- static bool EndsWithCaseInsensitive(
- const std::string& str, const std::string& suffix);
-
- // Formats an int value as "%02d".
- static std::string FormatIntWidth2(int value); // "%02d" for width == 2
-
- // Formats an int value as "%X".
- static std::string FormatHexInt(int value);
-
- // Formats a byte as "%02X".
- static std::string FormatByte(unsigned char value);
-
- private:
- String(); // Not meant to be instantiated.
-}; // class String
-
-// Gets the content of the stringstream's buffer as an std::string. Each '\0'
-// character in the buffer is replaced with "\\0".
-GTEST_API_ std::string StringStreamToString(::std::stringstream* stream);
-
-} // namespace internal
-} // namespace testing
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
diff --git a/test/gtest/include/gtest/internal/gtest-tuple.h b/test/gtest/include/gtest/internal/gtest-tuple.h
deleted file mode 100644
index e9b4053..0000000
--- a/test/gtest/include/gtest/internal/gtest-tuple.h
+++ /dev/null
@@ -1,1020 +0,0 @@
-// This file was GENERATED by command:
-// pump.py gtest-tuple.h.pump
-// DO NOT EDIT BY HAND!!!
-
-// Copyright 2009 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wan@google.com (Zhanyong Wan)
-
-// Implements a subset of TR1 tuple needed by Google Test and Google Mock.
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
-
-#include <utility> // For ::std::pair.
-
-// The compiler used in Symbian has a bug that prevents us from declaring the
-// tuple template as a friend (it complains that tuple is redefined). This
-// hack bypasses the bug by declaring the members that should otherwise be
-// private as public.
-// Sun Studio versions < 12 also have the above bug.
-#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590)
-# define GTEST_DECLARE_TUPLE_AS_FRIEND_ public:
-#else
-# define GTEST_DECLARE_TUPLE_AS_FRIEND_ \
- template <GTEST_10_TYPENAMES_(U)> friend class tuple; \
- private:
-#endif
-
-// Visual Studio 2010, 2012, and 2013 define symbols in std::tr1 that conflict
-// with our own definitions. Therefore using our own tuple does not work on
-// those compilers.
-#if defined(_MSC_VER) && _MSC_VER >= 1600 /* 1600 is Visual Studio 2010 */
-# error "gtest's tuple doesn't compile on Visual Studio 2010 or later. \
-GTEST_USE_OWN_TR1_TUPLE must be set to 0 on those compilers."
-#endif
-
-// GTEST_n_TUPLE_(T) is the type of an n-tuple.
-#define GTEST_0_TUPLE_(T) tuple<>
-#define GTEST_1_TUPLE_(T) tuple<T##0, void, void, void, void, void, void, \
- void, void, void>
-#define GTEST_2_TUPLE_(T) tuple<T##0, T##1, void, void, void, void, void, \
- void, void, void>
-#define GTEST_3_TUPLE_(T) tuple<T##0, T##1, T##2, void, void, void, void, \
- void, void, void>
-#define GTEST_4_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, void, void, void, \
- void, void, void>
-#define GTEST_5_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, void, void, \
- void, void, void>
-#define GTEST_6_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, void, \
- void, void, void>
-#define GTEST_7_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
- void, void, void>
-#define GTEST_8_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
- T##7, void, void>
-#define GTEST_9_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
- T##7, T##8, void>
-#define GTEST_10_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
- T##7, T##8, T##9>
-
-// GTEST_n_TYPENAMES_(T) declares a list of n typenames.
-#define GTEST_0_TYPENAMES_(T)
-#define GTEST_1_TYPENAMES_(T) typename T##0
-#define GTEST_2_TYPENAMES_(T) typename T##0, typename T##1
-#define GTEST_3_TYPENAMES_(T) typename T##0, typename T##1, typename T##2
-#define GTEST_4_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
- typename T##3
-#define GTEST_5_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
- typename T##3, typename T##4
-#define GTEST_6_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
- typename T##3, typename T##4, typename T##5
-#define GTEST_7_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
- typename T##3, typename T##4, typename T##5, typename T##6
-#define GTEST_8_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
- typename T##3, typename T##4, typename T##5, typename T##6, typename T##7
-#define GTEST_9_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
- typename T##3, typename T##4, typename T##5, typename T##6, \
- typename T##7, typename T##8
-#define GTEST_10_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
- typename T##3, typename T##4, typename T##5, typename T##6, \
- typename T##7, typename T##8, typename T##9
-
-// In theory, defining stuff in the ::std namespace is undefined
-// behavior. We can do this as we are playing the role of a standard
-// library vendor.
-namespace std {
-namespace tr1 {
-
-template <typename T0 = void, typename T1 = void, typename T2 = void,
- typename T3 = void, typename T4 = void, typename T5 = void,
- typename T6 = void, typename T7 = void, typename T8 = void,
- typename T9 = void>
-class tuple;
-
-// Anything in namespace gtest_internal is Google Test's INTERNAL
-// IMPLEMENTATION DETAIL and MUST NOT BE USED DIRECTLY in user code.
-namespace gtest_internal {
-
-// ByRef<T>::type is T if T is a reference; otherwise it's const T&.
-template <typename T>
-struct ByRef { typedef const T& type; }; // NOLINT
-template <typename T>
-struct ByRef<T&> { typedef T& type; }; // NOLINT
-
-// A handy wrapper for ByRef.
-#define GTEST_BY_REF_(T) typename ::std::tr1::gtest_internal::ByRef<T>::type
-
-// AddRef<T>::type is T if T is a reference; otherwise it's T&. This
-// is the same as tr1::add_reference<T>::type.
-template <typename T>
-struct AddRef { typedef T& type; }; // NOLINT
-template <typename T>
-struct AddRef<T&> { typedef T& type; }; // NOLINT
-
-// A handy wrapper for AddRef.
-#define GTEST_ADD_REF_(T) typename ::std::tr1::gtest_internal::AddRef<T>::type
-
-// A helper for implementing get<k>().
-template <int k> class Get;
-
-// A helper for implementing tuple_element<k, T>. kIndexValid is true
-// iff k < the number of fields in tuple type T.
-template <bool kIndexValid, int kIndex, class Tuple>
-struct TupleElement;
-
-template <GTEST_10_TYPENAMES_(T)>
-struct TupleElement<true, 0, GTEST_10_TUPLE_(T) > {
- typedef T0 type;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-struct TupleElement<true, 1, GTEST_10_TUPLE_(T) > {
- typedef T1 type;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-struct TupleElement<true, 2, GTEST_10_TUPLE_(T) > {
- typedef T2 type;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-struct TupleElement<true, 3, GTEST_10_TUPLE_(T) > {
- typedef T3 type;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-struct TupleElement<true, 4, GTEST_10_TUPLE_(T) > {
- typedef T4 type;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-struct TupleElement<true, 5, GTEST_10_TUPLE_(T) > {
- typedef T5 type;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-struct TupleElement<true, 6, GTEST_10_TUPLE_(T) > {
- typedef T6 type;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-struct TupleElement<true, 7, GTEST_10_TUPLE_(T) > {
- typedef T7 type;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-struct TupleElement<true, 8, GTEST_10_TUPLE_(T) > {
- typedef T8 type;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-struct TupleElement<true, 9, GTEST_10_TUPLE_(T) > {
- typedef T9 type;
-};
-
-} // namespace gtest_internal
-
-template <>
-class tuple<> {
- public:
- tuple() {}
- tuple(const tuple& /* t */) {}
- tuple& operator=(const tuple& /* t */) { return *this; }
-};
-
-template <GTEST_1_TYPENAMES_(T)>
-class GTEST_1_TUPLE_(T) {
- public:
- template <int k> friend class gtest_internal::Get;
-
- tuple() : f0_() {}
-
- explicit tuple(GTEST_BY_REF_(T0) f0) : f0_(f0) {}
-
- tuple(const tuple& t) : f0_(t.f0_) {}
-
- template <GTEST_1_TYPENAMES_(U)>
- tuple(const GTEST_1_TUPLE_(U)& t) : f0_(t.f0_) {}
-
- tuple& operator=(const tuple& t) { return CopyFrom(t); }
-
- template <GTEST_1_TYPENAMES_(U)>
- tuple& operator=(const GTEST_1_TUPLE_(U)& t) {
- return CopyFrom(t);
- }
-
- GTEST_DECLARE_TUPLE_AS_FRIEND_
-
- template <GTEST_1_TYPENAMES_(U)>
- tuple& CopyFrom(const GTEST_1_TUPLE_(U)& t) {
- f0_ = t.f0_;
- return *this;
- }
-
- T0 f0_;
-};
-
-template <GTEST_2_TYPENAMES_(T)>
-class GTEST_2_TUPLE_(T) {
- public:
- template <int k> friend class gtest_internal::Get;
-
- tuple() : f0_(), f1_() {}
-
- explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1) : f0_(f0),
- f1_(f1) {}
-
- tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_) {}
-
- template <GTEST_2_TYPENAMES_(U)>
- tuple(const GTEST_2_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_) {}
- template <typename U0, typename U1>
- tuple(const ::std::pair<U0, U1>& p) : f0_(p.first), f1_(p.second) {}
-
- tuple& operator=(const tuple& t) { return CopyFrom(t); }
-
- template <GTEST_2_TYPENAMES_(U)>
- tuple& operator=(const GTEST_2_TUPLE_(U)& t) {
- return CopyFrom(t);
- }
- template <typename U0, typename U1>
- tuple& operator=(const ::std::pair<U0, U1>& p) {
- f0_ = p.first;
- f1_ = p.second;
- return *this;
- }
-
- GTEST_DECLARE_TUPLE_AS_FRIEND_
-
- template <GTEST_2_TYPENAMES_(U)>
- tuple& CopyFrom(const GTEST_2_TUPLE_(U)& t) {
- f0_ = t.f0_;
- f1_ = t.f1_;
- return *this;
- }
-
- T0 f0_;
- T1 f1_;
-};
-
-template <GTEST_3_TYPENAMES_(T)>
-class GTEST_3_TUPLE_(T) {
- public:
- template <int k> friend class gtest_internal::Get;
-
- tuple() : f0_(), f1_(), f2_() {}
-
- explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
- GTEST_BY_REF_(T2) f2) : f0_(f0), f1_(f1), f2_(f2) {}
-
- tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {}
-
- template <GTEST_3_TYPENAMES_(U)>
- tuple(const GTEST_3_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {}
-
- tuple& operator=(const tuple& t) { return CopyFrom(t); }
-
- template <GTEST_3_TYPENAMES_(U)>
- tuple& operator=(const GTEST_3_TUPLE_(U)& t) {
- return CopyFrom(t);
- }
-
- GTEST_DECLARE_TUPLE_AS_FRIEND_
-
- template <GTEST_3_TYPENAMES_(U)>
- tuple& CopyFrom(const GTEST_3_TUPLE_(U)& t) {
- f0_ = t.f0_;
- f1_ = t.f1_;
- f2_ = t.f2_;
- return *this;
- }
-
- T0 f0_;
- T1 f1_;
- T2 f2_;
-};
-
-template <GTEST_4_TYPENAMES_(T)>
-class GTEST_4_TUPLE_(T) {
- public:
- template <int k> friend class gtest_internal::Get;
-
- tuple() : f0_(), f1_(), f2_(), f3_() {}
-
- explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
- GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3) : f0_(f0), f1_(f1), f2_(f2),
- f3_(f3) {}
-
- tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_) {}
-
- template <GTEST_4_TYPENAMES_(U)>
- tuple(const GTEST_4_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
- f3_(t.f3_) {}
-
- tuple& operator=(const tuple& t) { return CopyFrom(t); }
-
- template <GTEST_4_TYPENAMES_(U)>
- tuple& operator=(const GTEST_4_TUPLE_(U)& t) {
- return CopyFrom(t);
- }
-
- GTEST_DECLARE_TUPLE_AS_FRIEND_
-
- template <GTEST_4_TYPENAMES_(U)>
- tuple& CopyFrom(const GTEST_4_TUPLE_(U)& t) {
- f0_ = t.f0_;
- f1_ = t.f1_;
- f2_ = t.f2_;
- f3_ = t.f3_;
- return *this;
- }
-
- T0 f0_;
- T1 f1_;
- T2 f2_;
- T3 f3_;
-};
-
-template <GTEST_5_TYPENAMES_(T)>
-class GTEST_5_TUPLE_(T) {
- public:
- template <int k> friend class gtest_internal::Get;
-
- tuple() : f0_(), f1_(), f2_(), f3_(), f4_() {}
-
- explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
- GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3,
- GTEST_BY_REF_(T4) f4) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4) {}
-
- tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
- f4_(t.f4_) {}
-
- template <GTEST_5_TYPENAMES_(U)>
- tuple(const GTEST_5_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
- f3_(t.f3_), f4_(t.f4_) {}
-
- tuple& operator=(const tuple& t) { return CopyFrom(t); }
-
- template <GTEST_5_TYPENAMES_(U)>
- tuple& operator=(const GTEST_5_TUPLE_(U)& t) {
- return CopyFrom(t);
- }
-
- GTEST_DECLARE_TUPLE_AS_FRIEND_
-
- template <GTEST_5_TYPENAMES_(U)>
- tuple& CopyFrom(const GTEST_5_TUPLE_(U)& t) {
- f0_ = t.f0_;
- f1_ = t.f1_;
- f2_ = t.f2_;
- f3_ = t.f3_;
- f4_ = t.f4_;
- return *this;
- }
-
- T0 f0_;
- T1 f1_;
- T2 f2_;
- T3 f3_;
- T4 f4_;
-};
-
-template <GTEST_6_TYPENAMES_(T)>
-class GTEST_6_TUPLE_(T) {
- public:
- template <int k> friend class gtest_internal::Get;
-
- tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_() {}
-
- explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
- GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
- GTEST_BY_REF_(T5) f5) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4),
- f5_(f5) {}
-
- tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
- f4_(t.f4_), f5_(t.f5_) {}
-
- template <GTEST_6_TYPENAMES_(U)>
- tuple(const GTEST_6_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
- f3_(t.f3_), f4_(t.f4_), f5_(t.f5_) {}
-
- tuple& operator=(const tuple& t) { return CopyFrom(t); }
-
- template <GTEST_6_TYPENAMES_(U)>
- tuple& operator=(const GTEST_6_TUPLE_(U)& t) {
- return CopyFrom(t);
- }
-
- GTEST_DECLARE_TUPLE_AS_FRIEND_
-
- template <GTEST_6_TYPENAMES_(U)>
- tuple& CopyFrom(const GTEST_6_TUPLE_(U)& t) {
- f0_ = t.f0_;
- f1_ = t.f1_;
- f2_ = t.f2_;
- f3_ = t.f3_;
- f4_ = t.f4_;
- f5_ = t.f5_;
- return *this;
- }
-
- T0 f0_;
- T1 f1_;
- T2 f2_;
- T3 f3_;
- T4 f4_;
- T5 f5_;
-};
-
-template <GTEST_7_TYPENAMES_(T)>
-class GTEST_7_TUPLE_(T) {
- public:
- template <int k> friend class gtest_internal::Get;
-
- tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_() {}
-
- explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
- GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
- GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6) : f0_(f0), f1_(f1), f2_(f2),
- f3_(f3), f4_(f4), f5_(f5), f6_(f6) {}
-
- tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
- f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {}
-
- template <GTEST_7_TYPENAMES_(U)>
- tuple(const GTEST_7_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
- f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {}
-
- tuple& operator=(const tuple& t) { return CopyFrom(t); }
-
- template <GTEST_7_TYPENAMES_(U)>
- tuple& operator=(const GTEST_7_TUPLE_(U)& t) {
- return CopyFrom(t);
- }
-
- GTEST_DECLARE_TUPLE_AS_FRIEND_
-
- template <GTEST_7_TYPENAMES_(U)>
- tuple& CopyFrom(const GTEST_7_TUPLE_(U)& t) {
- f0_ = t.f0_;
- f1_ = t.f1_;
- f2_ = t.f2_;
- f3_ = t.f3_;
- f4_ = t.f4_;
- f5_ = t.f5_;
- f6_ = t.f6_;
- return *this;
- }
-
- T0 f0_;
- T1 f1_;
- T2 f2_;
- T3 f3_;
- T4 f4_;
- T5 f5_;
- T6 f6_;
-};
-
-template <GTEST_8_TYPENAMES_(T)>
-class GTEST_8_TUPLE_(T) {
- public:
- template <int k> friend class gtest_internal::Get;
-
- tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_() {}
-
- explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
- GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
- GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6,
- GTEST_BY_REF_(T7) f7) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4),
- f5_(f5), f6_(f6), f7_(f7) {}
-
- tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
- f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {}
-
- template <GTEST_8_TYPENAMES_(U)>
- tuple(const GTEST_8_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
- f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {}
-
- tuple& operator=(const tuple& t) { return CopyFrom(t); }
-
- template <GTEST_8_TYPENAMES_(U)>
- tuple& operator=(const GTEST_8_TUPLE_(U)& t) {
- return CopyFrom(t);
- }
-
- GTEST_DECLARE_TUPLE_AS_FRIEND_
-
- template <GTEST_8_TYPENAMES_(U)>
- tuple& CopyFrom(const GTEST_8_TUPLE_(U)& t) {
- f0_ = t.f0_;
- f1_ = t.f1_;
- f2_ = t.f2_;
- f3_ = t.f3_;
- f4_ = t.f4_;
- f5_ = t.f5_;
- f6_ = t.f6_;
- f7_ = t.f7_;
- return *this;
- }
-
- T0 f0_;
- T1 f1_;
- T2 f2_;
- T3 f3_;
- T4 f4_;
- T5 f5_;
- T6 f6_;
- T7 f7_;
-};
-
-template <GTEST_9_TYPENAMES_(T)>
-class GTEST_9_TUPLE_(T) {
- public:
- template <int k> friend class gtest_internal::Get;
-
- tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_() {}
-
- explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
- GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
- GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7,
- GTEST_BY_REF_(T8) f8) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4),
- f5_(f5), f6_(f6), f7_(f7), f8_(f8) {}
-
- tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
- f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {}
-
- template <GTEST_9_TYPENAMES_(U)>
- tuple(const GTEST_9_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
- f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {}
-
- tuple& operator=(const tuple& t) { return CopyFrom(t); }
-
- template <GTEST_9_TYPENAMES_(U)>
- tuple& operator=(const GTEST_9_TUPLE_(U)& t) {
- return CopyFrom(t);
- }
-
- GTEST_DECLARE_TUPLE_AS_FRIEND_
-
- template <GTEST_9_TYPENAMES_(U)>
- tuple& CopyFrom(const GTEST_9_TUPLE_(U)& t) {
- f0_ = t.f0_;
- f1_ = t.f1_;
- f2_ = t.f2_;
- f3_ = t.f3_;
- f4_ = t.f4_;
- f5_ = t.f5_;
- f6_ = t.f6_;
- f7_ = t.f7_;
- f8_ = t.f8_;
- return *this;
- }
-
- T0 f0_;
- T1 f1_;
- T2 f2_;
- T3 f3_;
- T4 f4_;
- T5 f5_;
- T6 f6_;
- T7 f7_;
- T8 f8_;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-class tuple {
- public:
- template <int k> friend class gtest_internal::Get;
-
- tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_(),
- f9_() {}
-
- explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
- GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
- GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7,
- GTEST_BY_REF_(T8) f8, GTEST_BY_REF_(T9) f9) : f0_(f0), f1_(f1), f2_(f2),
- f3_(f3), f4_(f4), f5_(f5), f6_(f6), f7_(f7), f8_(f8), f9_(f9) {}
-
- tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
- f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), f9_(t.f9_) {}
-
- template <GTEST_10_TYPENAMES_(U)>
- tuple(const GTEST_10_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
- f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_),
- f9_(t.f9_) {}
-
- tuple& operator=(const tuple& t) { return CopyFrom(t); }
-
- template <GTEST_10_TYPENAMES_(U)>
- tuple& operator=(const GTEST_10_TUPLE_(U)& t) {
- return CopyFrom(t);
- }
-
- GTEST_DECLARE_TUPLE_AS_FRIEND_
-
- template <GTEST_10_TYPENAMES_(U)>
- tuple& CopyFrom(const GTEST_10_TUPLE_(U)& t) {
- f0_ = t.f0_;
- f1_ = t.f1_;
- f2_ = t.f2_;
- f3_ = t.f3_;
- f4_ = t.f4_;
- f5_ = t.f5_;
- f6_ = t.f6_;
- f7_ = t.f7_;
- f8_ = t.f8_;
- f9_ = t.f9_;
- return *this;
- }
-
- T0 f0_;
- T1 f1_;
- T2 f2_;
- T3 f3_;
- T4 f4_;
- T5 f5_;
- T6 f6_;
- T7 f7_;
- T8 f8_;
- T9 f9_;
-};
-
-// 6.1.3.2 Tuple creation functions.
-
-// Known limitations: we don't support passing an
-// std::tr1::reference_wrapper<T> to make_tuple(). And we don't
-// implement tie().
-
-inline tuple<> make_tuple() { return tuple<>(); }
-
-template <GTEST_1_TYPENAMES_(T)>
-inline GTEST_1_TUPLE_(T) make_tuple(const T0& f0) {
- return GTEST_1_TUPLE_(T)(f0);
-}
-
-template <GTEST_2_TYPENAMES_(T)>
-inline GTEST_2_TUPLE_(T) make_tuple(const T0& f0, const T1& f1) {
- return GTEST_2_TUPLE_(T)(f0, f1);
-}
-
-template <GTEST_3_TYPENAMES_(T)>
-inline GTEST_3_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2) {
- return GTEST_3_TUPLE_(T)(f0, f1, f2);
-}
-
-template <GTEST_4_TYPENAMES_(T)>
-inline GTEST_4_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
- const T3& f3) {
- return GTEST_4_TUPLE_(T)(f0, f1, f2, f3);
-}
-
-template <GTEST_5_TYPENAMES_(T)>
-inline GTEST_5_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
- const T3& f3, const T4& f4) {
- return GTEST_5_TUPLE_(T)(f0, f1, f2, f3, f4);
-}
-
-template <GTEST_6_TYPENAMES_(T)>
-inline GTEST_6_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
- const T3& f3, const T4& f4, const T5& f5) {
- return GTEST_6_TUPLE_(T)(f0, f1, f2, f3, f4, f5);
-}
-
-template <GTEST_7_TYPENAMES_(T)>
-inline GTEST_7_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
- const T3& f3, const T4& f4, const T5& f5, const T6& f6) {
- return GTEST_7_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6);
-}
-
-template <GTEST_8_TYPENAMES_(T)>
-inline GTEST_8_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
- const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7) {
- return GTEST_8_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7);
-}
-
-template <GTEST_9_TYPENAMES_(T)>
-inline GTEST_9_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
- const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7,
- const T8& f8) {
- return GTEST_9_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8);
-}
-
-template <GTEST_10_TYPENAMES_(T)>
-inline GTEST_10_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
- const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7,
- const T8& f8, const T9& f9) {
- return GTEST_10_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8, f9);
-}
-
-// 6.1.3.3 Tuple helper classes.
-
-template <typename Tuple> struct tuple_size;
-
-template <GTEST_0_TYPENAMES_(T)>
-struct tuple_size<GTEST_0_TUPLE_(T) > {
- static const int value = 0;
-};
-
-template <GTEST_1_TYPENAMES_(T)>
-struct tuple_size<GTEST_1_TUPLE_(T) > {
- static const int value = 1;
-};
-
-template <GTEST_2_TYPENAMES_(T)>
-struct tuple_size<GTEST_2_TUPLE_(T) > {
- static const int value = 2;
-};
-
-template <GTEST_3_TYPENAMES_(T)>
-struct tuple_size<GTEST_3_TUPLE_(T) > {
- static const int value = 3;
-};
-
-template <GTEST_4_TYPENAMES_(T)>
-struct tuple_size<GTEST_4_TUPLE_(T) > {
- static const int value = 4;
-};
-
-template <GTEST_5_TYPENAMES_(T)>
-struct tuple_size<GTEST_5_TUPLE_(T) > {
- static const int value = 5;
-};
-
-template <GTEST_6_TYPENAMES_(T)>
-struct tuple_size<GTEST_6_TUPLE_(T) > {
- static const int value = 6;
-};
-
-template <GTEST_7_TYPENAMES_(T)>
-struct tuple_size<GTEST_7_TUPLE_(T) > {
- static const int value = 7;
-};
-
-template <GTEST_8_TYPENAMES_(T)>
-struct tuple_size<GTEST_8_TUPLE_(T) > {
- static const int value = 8;
-};
-
-template <GTEST_9_TYPENAMES_(T)>
-struct tuple_size<GTEST_9_TUPLE_(T) > {
- static const int value = 9;
-};
-
-template <GTEST_10_TYPENAMES_(T)>
-struct tuple_size<GTEST_10_TUPLE_(T) > {
- static const int value = 10;
-};
-
-template <int k, class Tuple>
-struct tuple_element {
- typedef typename gtest_internal::TupleElement<
- k < (tuple_size<Tuple>::value), k, Tuple>::type type;
-};
-
-#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element<k, Tuple >::type
-
-// 6.1.3.4 Element access.
-
-namespace gtest_internal {
-
-template <>
-class Get<0> {
- public:
- template <class Tuple>
- static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple))
- Field(Tuple& t) { return t.f0_; } // NOLINT
-
- template <class Tuple>
- static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple))
- ConstField(const Tuple& t) { return t.f0_; }
-};
-
-template <>
-class Get<1> {
- public:
- template <class Tuple>
- static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple))
- Field(Tuple& t) { return t.f1_; } // NOLINT
-
- template <class Tuple>
- static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple))
- ConstField(const Tuple& t) { return t.f1_; }
-};
-
-template <>
-class Get<2> {
- public:
- template <class Tuple>
- static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple))
- Field(Tuple& t) { return t.f2_; } // NOLINT
-
- template <class Tuple>
- static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple))
- ConstField(const Tuple& t) { return t.f2_; }
-};
-
-template <>
-class Get<3> {
- public:
- template <class Tuple>
- static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple))
- Field(Tuple& t) { return t.f3_; } // NOLINT
-
- template <class Tuple>
- static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple))
- ConstField(const Tuple& t) { return t.f3_; }
-};
-
-template <>
-class Get<4> {
- public:
- template <class Tuple>
- static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple))
- Field(Tuple& t) { return t.f4_; } // NOLINT
-
- template <class Tuple>
- static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple))
- ConstField(const Tuple& t) { return t.f4_; }
-};
-
-template <>
-class Get<5> {
- public:
- template <class Tuple>
- static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple))
- Field(Tuple& t) { return t.f5_; } // NOLINT
-
- template <class Tuple>
- static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple))
- ConstField(const Tuple& t) { return t.f5_; }
-};
-
-template <>
-class Get<6> {
- public:
- template <class Tuple>
- static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple))
- Field(Tuple& t) { return t.f6_; } // NOLINT
-
- template <class Tuple>
- static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple))
- ConstField(const Tuple& t) { return t.f6_; }
-};
-
-template <>
-class Get<7> {
- public:
- template <class Tuple>
- static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple))
- Field(Tuple& t) { return t.f7_; } // NOLINT
-
- template <class Tuple>
- static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple))
- ConstField(const Tuple& t) { return t.f7_; }
-};
-
-template <>
-class Get<8> {
- public:
- template <class Tuple>
- static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple))
- Field(Tuple& t) { return t.f8_; } // NOLINT
-
- template <class Tuple>
- static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple))
- ConstField(const Tuple& t) { return t.f8_; }
-};
-
-template <>
-class Get<9> {
- public:
- template <class Tuple>
- static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple))
- Field(Tuple& t) { return t.f9_; } // NOLINT
-
- template <class Tuple>
- static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple))
- ConstField(const Tuple& t) { return t.f9_; }
-};
-
-} // namespace gtest_internal
-
-template <int k, GTEST_10_TYPENAMES_(T)>
-GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T)))
-get(GTEST_10_TUPLE_(T)& t) {
- return gtest_internal::Get<k>::Field(t);
-}
-
-template <int k, GTEST_10_TYPENAMES_(T)>
-GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T)))
-get(const GTEST_10_TUPLE_(T)& t) {
- return gtest_internal::Get<k>::ConstField(t);
-}
-
-// 6.1.3.5 Relational operators
-
-// We only implement == and !=, as we don't have a need for the rest yet.
-
-namespace gtest_internal {
-
-// SameSizeTuplePrefixComparator<k, k>::Eq(t1, t2) returns true if the
-// first k fields of t1 equals the first k fields of t2.
-// SameSizeTuplePrefixComparator(k1, k2) would be a compiler error if
-// k1 != k2.
-template <int kSize1, int kSize2>
-struct SameSizeTuplePrefixComparator;
-
-template <>
-struct SameSizeTuplePrefixComparator<0, 0> {
- template <class Tuple1, class Tuple2>
- static bool Eq(const Tuple1& /* t1 */, const Tuple2& /* t2 */) {
- return true;
- }
-};
-
-template <int k>
-struct SameSizeTuplePrefixComparator<k, k> {
- template <class Tuple1, class Tuple2>
- static bool Eq(const Tuple1& t1, const Tuple2& t2) {
- return SameSizeTuplePrefixComparator<k - 1, k - 1>::Eq(t1, t2) &&
- ::std::tr1::get<k - 1>(t1) == ::std::tr1::get<k - 1>(t2);
- }
-};
-
-} // namespace gtest_internal
-
-template <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)>
-inline bool operator==(const GTEST_10_TUPLE_(T)& t,
- const GTEST_10_TUPLE_(U)& u) {
- return gtest_internal::SameSizeTuplePrefixComparator<
- tuple_size<GTEST_10_TUPLE_(T) >::value,
- tuple_size<GTEST_10_TUPLE_(U) >::value>::Eq(t, u);
-}
-
-template <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)>
-inline bool operator!=(const GTEST_10_TUPLE_(T)& t,
- const GTEST_10_TUPLE_(U)& u) { return !(t == u); }
-
-// 6.1.4 Pairs.
-// Unimplemented.
-
-} // namespace tr1
-} // namespace std
-
-#undef GTEST_0_TUPLE_
-#undef GTEST_1_TUPLE_
-#undef GTEST_2_TUPLE_
-#undef GTEST_3_TUPLE_
-#undef GTEST_4_TUPLE_
-#undef GTEST_5_TUPLE_
-#undef GTEST_6_TUPLE_
-#undef GTEST_7_TUPLE_
-#undef GTEST_8_TUPLE_
-#undef GTEST_9_TUPLE_
-#undef GTEST_10_TUPLE_
-
-#undef GTEST_0_TYPENAMES_
-#undef GTEST_1_TYPENAMES_
-#undef GTEST_2_TYPENAMES_
-#undef GTEST_3_TYPENAMES_
-#undef GTEST_4_TYPENAMES_
-#undef GTEST_5_TYPENAMES_
-#undef GTEST_6_TYPENAMES_
-#undef GTEST_7_TYPENAMES_
-#undef GTEST_8_TYPENAMES_
-#undef GTEST_9_TYPENAMES_
-#undef GTEST_10_TYPENAMES_
-
-#undef GTEST_DECLARE_TUPLE_AS_FRIEND_
-#undef GTEST_BY_REF_
-#undef GTEST_ADD_REF_
-#undef GTEST_TUPLE_ELEMENT_
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
diff --git a/test/gtest/include/gtest/internal/gtest-tuple.h.pump b/test/gtest/include/gtest/internal/gtest-tuple.h.pump
deleted file mode 100644
index 429ddfe..0000000
--- a/test/gtest/include/gtest/internal/gtest-tuple.h.pump
+++ /dev/null
@@ -1,347 +0,0 @@
-$$ -*- mode: c++; -*-
-$var n = 10 $$ Maximum number of tuple fields we want to support.
-$$ This meta comment fixes auto-indentation in Emacs. }}
-// Copyright 2009 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wan@google.com (Zhanyong Wan)
-
-// Implements a subset of TR1 tuple needed by Google Test and Google Mock.
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
-
-#include <utility> // For ::std::pair.
-
-// The compiler used in Symbian has a bug that prevents us from declaring the
-// tuple template as a friend (it complains that tuple is redefined). This
-// hack bypasses the bug by declaring the members that should otherwise be
-// private as public.
-// Sun Studio versions < 12 also have the above bug.
-#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590)
-# define GTEST_DECLARE_TUPLE_AS_FRIEND_ public:
-#else
-# define GTEST_DECLARE_TUPLE_AS_FRIEND_ \
- template <GTEST_$(n)_TYPENAMES_(U)> friend class tuple; \
- private:
-#endif
-
-// Visual Studio 2010, 2012, and 2013 define symbols in std::tr1 that conflict
-// with our own definitions. Therefore using our own tuple does not work on
-// those compilers.
-#if defined(_MSC_VER) && _MSC_VER >= 1600 /* 1600 is Visual Studio 2010 */
-# error "gtest's tuple doesn't compile on Visual Studio 2010 or later. \
-GTEST_USE_OWN_TR1_TUPLE must be set to 0 on those compilers."
-#endif
-
-
-$range i 0..n-1
-$range j 0..n
-$range k 1..n
-// GTEST_n_TUPLE_(T) is the type of an n-tuple.
-#define GTEST_0_TUPLE_(T) tuple<>
-
-$for k [[
-$range m 0..k-1
-$range m2 k..n-1
-#define GTEST_$(k)_TUPLE_(T) tuple<$for m, [[T##$m]]$for m2 [[, void]]>
-
-]]
-
-// GTEST_n_TYPENAMES_(T) declares a list of n typenames.
-
-$for j [[
-$range m 0..j-1
-#define GTEST_$(j)_TYPENAMES_(T) $for m, [[typename T##$m]]
-
-
-]]
-
-// In theory, defining stuff in the ::std namespace is undefined
-// behavior. We can do this as we are playing the role of a standard
-// library vendor.
-namespace std {
-namespace tr1 {
-
-template <$for i, [[typename T$i = void]]>
-class tuple;
-
-// Anything in namespace gtest_internal is Google Test's INTERNAL
-// IMPLEMENTATION DETAIL and MUST NOT BE USED DIRECTLY in user code.
-namespace gtest_internal {
-
-// ByRef<T>::type is T if T is a reference; otherwise it's const T&.
-template <typename T>
-struct ByRef { typedef const T& type; }; // NOLINT
-template <typename T>
-struct ByRef<T&> { typedef T& type; }; // NOLINT
-
-// A handy wrapper for ByRef.
-#define GTEST_BY_REF_(T) typename ::std::tr1::gtest_internal::ByRef<T>::type
-
-// AddRef<T>::type is T if T is a reference; otherwise it's T&. This
-// is the same as tr1::add_reference<T>::type.
-template <typename T>
-struct AddRef { typedef T& type; }; // NOLINT
-template <typename T>
-struct AddRef<T&> { typedef T& type; }; // NOLINT
-
-// A handy wrapper for AddRef.
-#define GTEST_ADD_REF_(T) typename ::std::tr1::gtest_internal::AddRef<T>::type
-
-// A helper for implementing get<k>().
-template <int k> class Get;
-
-// A helper for implementing tuple_element<k, T>. kIndexValid is true
-// iff k < the number of fields in tuple type T.
-template <bool kIndexValid, int kIndex, class Tuple>
-struct TupleElement;
-
-
-$for i [[
-template <GTEST_$(n)_TYPENAMES_(T)>
-struct TupleElement<true, $i, GTEST_$(n)_TUPLE_(T) > {
- typedef T$i type;
-};
-
-
-]]
-} // namespace gtest_internal
-
-template <>
-class tuple<> {
- public:
- tuple() {}
- tuple(const tuple& /* t */) {}
- tuple& operator=(const tuple& /* t */) { return *this; }
-};
-
-
-$for k [[
-$range m 0..k-1
-template <GTEST_$(k)_TYPENAMES_(T)>
-class $if k < n [[GTEST_$(k)_TUPLE_(T)]] $else [[tuple]] {
- public:
- template <int k> friend class gtest_internal::Get;
-
- tuple() : $for m, [[f$(m)_()]] {}
-
- explicit tuple($for m, [[GTEST_BY_REF_(T$m) f$m]]) : [[]]
-$for m, [[f$(m)_(f$m)]] {}
-
- tuple(const tuple& t) : $for m, [[f$(m)_(t.f$(m)_)]] {}
-
- template <GTEST_$(k)_TYPENAMES_(U)>
- tuple(const GTEST_$(k)_TUPLE_(U)& t) : $for m, [[f$(m)_(t.f$(m)_)]] {}
-
-$if k == 2 [[
- template <typename U0, typename U1>
- tuple(const ::std::pair<U0, U1>& p) : f0_(p.first), f1_(p.second) {}
-
-]]
-
- tuple& operator=(const tuple& t) { return CopyFrom(t); }
-
- template <GTEST_$(k)_TYPENAMES_(U)>
- tuple& operator=(const GTEST_$(k)_TUPLE_(U)& t) {
- return CopyFrom(t);
- }
-
-$if k == 2 [[
- template <typename U0, typename U1>
- tuple& operator=(const ::std::pair<U0, U1>& p) {
- f0_ = p.first;
- f1_ = p.second;
- return *this;
- }
-
-]]
-
- GTEST_DECLARE_TUPLE_AS_FRIEND_
-
- template <GTEST_$(k)_TYPENAMES_(U)>
- tuple& CopyFrom(const GTEST_$(k)_TUPLE_(U)& t) {
-
-$for m [[
- f$(m)_ = t.f$(m)_;
-
-]]
- return *this;
- }
-
-
-$for m [[
- T$m f$(m)_;
-
-]]
-};
-
-
-]]
-// 6.1.3.2 Tuple creation functions.
-
-// Known limitations: we don't support passing an
-// std::tr1::reference_wrapper<T> to make_tuple(). And we don't
-// implement tie().
-
-inline tuple<> make_tuple() { return tuple<>(); }
-
-$for k [[
-$range m 0..k-1
-
-template <GTEST_$(k)_TYPENAMES_(T)>
-inline GTEST_$(k)_TUPLE_(T) make_tuple($for m, [[const T$m& f$m]]) {
- return GTEST_$(k)_TUPLE_(T)($for m, [[f$m]]);
-}
-
-]]
-
-// 6.1.3.3 Tuple helper classes.
-
-template <typename Tuple> struct tuple_size;
-
-
-$for j [[
-template <GTEST_$(j)_TYPENAMES_(T)>
-struct tuple_size<GTEST_$(j)_TUPLE_(T) > {
- static const int value = $j;
-};
-
-
-]]
-template <int k, class Tuple>
-struct tuple_element {
- typedef typename gtest_internal::TupleElement<
- k < (tuple_size<Tuple>::value), k, Tuple>::type type;
-};
-
-#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element<k, Tuple >::type
-
-// 6.1.3.4 Element access.
-
-namespace gtest_internal {
-
-
-$for i [[
-template <>
-class Get<$i> {
- public:
- template <class Tuple>
- static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_($i, Tuple))
- Field(Tuple& t) { return t.f$(i)_; } // NOLINT
-
- template <class Tuple>
- static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_($i, Tuple))
- ConstField(const Tuple& t) { return t.f$(i)_; }
-};
-
-
-]]
-} // namespace gtest_internal
-
-template <int k, GTEST_$(n)_TYPENAMES_(T)>
-GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_$(n)_TUPLE_(T)))
-get(GTEST_$(n)_TUPLE_(T)& t) {
- return gtest_internal::Get<k>::Field(t);
-}
-
-template <int k, GTEST_$(n)_TYPENAMES_(T)>
-GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_$(n)_TUPLE_(T)))
-get(const GTEST_$(n)_TUPLE_(T)& t) {
- return gtest_internal::Get<k>::ConstField(t);
-}
-
-// 6.1.3.5 Relational operators
-
-// We only implement == and !=, as we don't have a need for the rest yet.
-
-namespace gtest_internal {
-
-// SameSizeTuplePrefixComparator<k, k>::Eq(t1, t2) returns true if the
-// first k fields of t1 equals the first k fields of t2.
-// SameSizeTuplePrefixComparator(k1, k2) would be a compiler error if
-// k1 != k2.
-template <int kSize1, int kSize2>
-struct SameSizeTuplePrefixComparator;
-
-template <>
-struct SameSizeTuplePrefixComparator<0, 0> {
- template <class Tuple1, class Tuple2>
- static bool Eq(const Tuple1& /* t1 */, const Tuple2& /* t2 */) {
- return true;
- }
-};
-
-template <int k>
-struct SameSizeTuplePrefixComparator<k, k> {
- template <class Tuple1, class Tuple2>
- static bool Eq(const Tuple1& t1, const Tuple2& t2) {
- return SameSizeTuplePrefixComparator<k - 1, k - 1>::Eq(t1, t2) &&
- ::std::tr1::get<k - 1>(t1) == ::std::tr1::get<k - 1>(t2);
- }
-};
-
-} // namespace gtest_internal
-
-template <GTEST_$(n)_TYPENAMES_(T), GTEST_$(n)_TYPENAMES_(U)>
-inline bool operator==(const GTEST_$(n)_TUPLE_(T)& t,
- const GTEST_$(n)_TUPLE_(U)& u) {
- return gtest_internal::SameSizeTuplePrefixComparator<
- tuple_size<GTEST_$(n)_TUPLE_(T) >::value,
- tuple_size<GTEST_$(n)_TUPLE_(U) >::value>::Eq(t, u);
-}
-
-template <GTEST_$(n)_TYPENAMES_(T), GTEST_$(n)_TYPENAMES_(U)>
-inline bool operator!=(const GTEST_$(n)_TUPLE_(T)& t,
- const GTEST_$(n)_TUPLE_(U)& u) { return !(t == u); }
-
-// 6.1.4 Pairs.
-// Unimplemented.
-
-} // namespace tr1
-} // namespace std
-
-
-$for j [[
-#undef GTEST_$(j)_TUPLE_
-
-]]
-
-
-$for j [[
-#undef GTEST_$(j)_TYPENAMES_
-
-]]
-
-#undef GTEST_DECLARE_TUPLE_AS_FRIEND_
-#undef GTEST_BY_REF_
-#undef GTEST_ADD_REF_
-#undef GTEST_TUPLE_ELEMENT_
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
diff --git a/test/gtest/include/gtest/internal/gtest-type-util.h b/test/gtest/include/gtest/internal/gtest-type-util.h
deleted file mode 100644
index e46f7cf..0000000
--- a/test/gtest/include/gtest/internal/gtest-type-util.h
+++ /dev/null
@@ -1,3331 +0,0 @@
-// This file was GENERATED by command:
-// pump.py gtest-type-util.h.pump
-// DO NOT EDIT BY HAND!!!
-
-// Copyright 2008 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wan@google.com (Zhanyong Wan)
-
-// Type utilities needed for implementing typed and type-parameterized
-// tests. This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
-//
-// Currently we support at most 50 types in a list, and at most 50
-// type-parameterized tests in one type-parameterized test case.
-// Please contact googletestframework@googlegroups.com if you need
-// more.
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
-
-#include "gtest/internal/gtest-port.h"
-
-// #ifdef __GNUC__ is too general here. It is possible to use gcc without using
-// libstdc++ (which is where cxxabi.h comes from).
-# if GTEST_HAS_CXXABI_H_
-# include <cxxabi.h>
-# elif defined(__HP_aCC)
-# include <acxx_demangle.h>
-# endif // GTEST_HASH_CXXABI_H_
-
-namespace testing {
-namespace internal {
-
-// GetTypeName<T>() returns a human-readable name of type T.
-// NB: This function is also used in Google Mock, so don't move it inside of
-// the typed-test-only section below.
-template <typename T>
-std::string GetTypeName() {
-# if GTEST_HAS_RTTI
-
- const char* const name = typeid(T).name();
-# if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC)
- int status = 0;
- // gcc's implementation of typeid(T).name() mangles the type name,
- // so we have to demangle it.
-# if GTEST_HAS_CXXABI_H_
- using abi::__cxa_demangle;
-# endif // GTEST_HAS_CXXABI_H_
- char* const readable_name = __cxa_demangle(name, 0, 0, &status);
- const std::string name_str(status == 0 ? readable_name : name);
- free(readable_name);
- return name_str;
-# else
- return name;
-# endif // GTEST_HAS_CXXABI_H_ || __HP_aCC
-
-# else
-
- return "<type>";
-
-# endif // GTEST_HAS_RTTI
-}
-
-#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
-
-// AssertyTypeEq<T1, T2>::type is defined iff T1 and T2 are the same
-// type. This can be used as a compile-time assertion to ensure that
-// two types are equal.
-
-template <typename T1, typename T2>
-struct AssertTypeEq;
-
-template <typename T>
-struct AssertTypeEq<T, T> {
- typedef bool type;
-};
-
-// A unique type used as the default value for the arguments of class
-// template Types. This allows us to simulate variadic templates
-// (e.g. Types<int>, Type<int, double>, and etc), which C++ doesn't
-// support directly.
-struct None {};
-
-// The following family of struct and struct templates are used to
-// represent type lists. In particular, TypesN<T1, T2, ..., TN>
-// represents a type list with N types (T1, T2, ..., and TN) in it.
-// Except for Types0, every struct in the family has two member types:
-// Head for the first type in the list, and Tail for the rest of the
-// list.
-
-// The empty type list.
-struct Types0 {};
-
-// Type lists of length 1, 2, 3, and so on.
-
-template <typename T1>
-struct Types1 {
- typedef T1 Head;
- typedef Types0 Tail;
-};
-template <typename T1, typename T2>
-struct Types2 {
- typedef T1 Head;
- typedef Types1<T2> Tail;
-};
-
-template <typename T1, typename T2, typename T3>
-struct Types3 {
- typedef T1 Head;
- typedef Types2<T2, T3> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4>
-struct Types4 {
- typedef T1 Head;
- typedef Types3<T2, T3, T4> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5>
-struct Types5 {
- typedef T1 Head;
- typedef Types4<T2, T3, T4, T5> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6>
-struct Types6 {
- typedef T1 Head;
- typedef Types5<T2, T3, T4, T5, T6> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7>
-struct Types7 {
- typedef T1 Head;
- typedef Types6<T2, T3, T4, T5, T6, T7> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8>
-struct Types8 {
- typedef T1 Head;
- typedef Types7<T2, T3, T4, T5, T6, T7, T8> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9>
-struct Types9 {
- typedef T1 Head;
- typedef Types8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10>
-struct Types10 {
- typedef T1 Head;
- typedef Types9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11>
-struct Types11 {
- typedef T1 Head;
- typedef Types10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12>
-struct Types12 {
- typedef T1 Head;
- typedef Types11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13>
-struct Types13 {
- typedef T1 Head;
- typedef Types12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14>
-struct Types14 {
- typedef T1 Head;
- typedef Types13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15>
-struct Types15 {
- typedef T1 Head;
- typedef Types14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16>
-struct Types16 {
- typedef T1 Head;
- typedef Types15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17>
-struct Types17 {
- typedef T1 Head;
- typedef Types16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18>
-struct Types18 {
- typedef T1 Head;
- typedef Types17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19>
-struct Types19 {
- typedef T1 Head;
- typedef Types18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20>
-struct Types20 {
- typedef T1 Head;
- typedef Types19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21>
-struct Types21 {
- typedef T1 Head;
- typedef Types20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22>
-struct Types22 {
- typedef T1 Head;
- typedef Types21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23>
-struct Types23 {
- typedef T1 Head;
- typedef Types22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24>
-struct Types24 {
- typedef T1 Head;
- typedef Types23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25>
-struct Types25 {
- typedef T1 Head;
- typedef Types24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26>
-struct Types26 {
- typedef T1 Head;
- typedef Types25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27>
-struct Types27 {
- typedef T1 Head;
- typedef Types26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28>
-struct Types28 {
- typedef T1 Head;
- typedef Types27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29>
-struct Types29 {
- typedef T1 Head;
- typedef Types28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30>
-struct Types30 {
- typedef T1 Head;
- typedef Types29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31>
-struct Types31 {
- typedef T1 Head;
- typedef Types30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32>
-struct Types32 {
- typedef T1 Head;
- typedef Types31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33>
-struct Types33 {
- typedef T1 Head;
- typedef Types32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34>
-struct Types34 {
- typedef T1 Head;
- typedef Types33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35>
-struct Types35 {
- typedef T1 Head;
- typedef Types34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36>
-struct Types36 {
- typedef T1 Head;
- typedef Types35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37>
-struct Types37 {
- typedef T1 Head;
- typedef Types36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38>
-struct Types38 {
- typedef T1 Head;
- typedef Types37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39>
-struct Types39 {
- typedef T1 Head;
- typedef Types38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40>
-struct Types40 {
- typedef T1 Head;
- typedef Types39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41>
-struct Types41 {
- typedef T1 Head;
- typedef Types40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42>
-struct Types42 {
- typedef T1 Head;
- typedef Types41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43>
-struct Types43 {
- typedef T1 Head;
- typedef Types42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
- T43> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44>
-struct Types44 {
- typedef T1 Head;
- typedef Types43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45>
-struct Types45 {
- typedef T1 Head;
- typedef Types44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44, T45> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46>
-struct Types46 {
- typedef T1 Head;
- typedef Types45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44, T45, T46> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47>
-struct Types47 {
- typedef T1 Head;
- typedef Types46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44, T45, T46, T47> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47, typename T48>
-struct Types48 {
- typedef T1 Head;
- typedef Types47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44, T45, T46, T47, T48> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47, typename T48, typename T49>
-struct Types49 {
- typedef T1 Head;
- typedef Types48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44, T45, T46, T47, T48, T49> Tail;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47, typename T48, typename T49, typename T50>
-struct Types50 {
- typedef T1 Head;
- typedef Types49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44, T45, T46, T47, T48, T49, T50> Tail;
-};
-
-
-} // namespace internal
-
-// We don't want to require the users to write TypesN<...> directly,
-// as that would require them to count the length. Types<...> is much
-// easier to write, but generates horrible messages when there is a
-// compiler error, as gcc insists on printing out each template
-// argument, even if it has the default value (this means Types<int>
-// will appear as Types<int, None, None, ..., None> in the compiler
-// errors).
-//
-// Our solution is to combine the best part of the two approaches: a
-// user would write Types<T1, ..., TN>, and Google Test will translate
-// that to TypesN<T1, ..., TN> internally to make error messages
-// readable. The translation is done by the 'type' member of the
-// Types template.
-template <typename T1 = internal::None, typename T2 = internal::None,
- typename T3 = internal::None, typename T4 = internal::None,
- typename T5 = internal::None, typename T6 = internal::None,
- typename T7 = internal::None, typename T8 = internal::None,
- typename T9 = internal::None, typename T10 = internal::None,
- typename T11 = internal::None, typename T12 = internal::None,
- typename T13 = internal::None, typename T14 = internal::None,
- typename T15 = internal::None, typename T16 = internal::None,
- typename T17 = internal::None, typename T18 = internal::None,
- typename T19 = internal::None, typename T20 = internal::None,
- typename T21 = internal::None, typename T22 = internal::None,
- typename T23 = internal::None, typename T24 = internal::None,
- typename T25 = internal::None, typename T26 = internal::None,
- typename T27 = internal::None, typename T28 = internal::None,
- typename T29 = internal::None, typename T30 = internal::None,
- typename T31 = internal::None, typename T32 = internal::None,
- typename T33 = internal::None, typename T34 = internal::None,
- typename T35 = internal::None, typename T36 = internal::None,
- typename T37 = internal::None, typename T38 = internal::None,
- typename T39 = internal::None, typename T40 = internal::None,
- typename T41 = internal::None, typename T42 = internal::None,
- typename T43 = internal::None, typename T44 = internal::None,
- typename T45 = internal::None, typename T46 = internal::None,
- typename T47 = internal::None, typename T48 = internal::None,
- typename T49 = internal::None, typename T50 = internal::None>
-struct Types {
- typedef internal::Types50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41, T42, T43, T44, T45, T46, T47, T48, T49, T50> type;
-};
-
-template <>
-struct Types<internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types0 type;
-};
-template <typename T1>
-struct Types<T1, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types1<T1> type;
-};
-template <typename T1, typename T2>
-struct Types<T1, T2, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types2<T1, T2> type;
-};
-template <typename T1, typename T2, typename T3>
-struct Types<T1, T2, T3, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types3<T1, T2, T3> type;
-};
-template <typename T1, typename T2, typename T3, typename T4>
-struct Types<T1, T2, T3, T4, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types4<T1, T2, T3, T4> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5>
-struct Types<T1, T2, T3, T4, T5, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types5<T1, T2, T3, T4, T5> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6>
-struct Types<T1, T2, T3, T4, T5, T6, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types6<T1, T2, T3, T4, T5, T6> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7>
-struct Types<T1, T2, T3, T4, T5, T6, T7, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types7<T1, T2, T3, T4, T5, T6, T7> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types8<T1, T2, T3, T4, T5, T6, T7, T8> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types9<T1, T2, T3, T4, T5, T6, T7, T8, T9> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
- T12> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
- T26> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
- T40> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, internal::None,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41, T42> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None, internal::None> {
- typedef internal::Types43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41, T42, T43> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
- internal::None, internal::None, internal::None, internal::None,
- internal::None, internal::None> {
- typedef internal::Types44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41, T42, T43, T44> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
- internal::None, internal::None, internal::None, internal::None,
- internal::None> {
- typedef internal::Types45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41, T42, T43, T44, T45> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
- T46, internal::None, internal::None, internal::None, internal::None> {
- typedef internal::Types46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41, T42, T43, T44, T45, T46> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
- T46, T47, internal::None, internal::None, internal::None> {
- typedef internal::Types47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41, T42, T43, T44, T45, T46, T47> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47, typename T48>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
- T46, T47, T48, internal::None, internal::None> {
- typedef internal::Types48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41, T42, T43, T44, T45, T46, T47, T48> type;
-};
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47, typename T48, typename T49>
-struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
- T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
- T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
- T46, T47, T48, T49, internal::None> {
- typedef internal::Types49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41, T42, T43, T44, T45, T46, T47, T48, T49> type;
-};
-
-namespace internal {
-
-# define GTEST_TEMPLATE_ template <typename T> class
-
-// The template "selector" struct TemplateSel<Tmpl> is used to
-// represent Tmpl, which must be a class template with one type
-// parameter, as a type. TemplateSel<Tmpl>::Bind<T>::type is defined
-// as the type Tmpl<T>. This allows us to actually instantiate the
-// template "selected" by TemplateSel<Tmpl>.
-//
-// This trick is necessary for simulating typedef for class templates,
-// which C++ doesn't support directly.
-template <GTEST_TEMPLATE_ Tmpl>
-struct TemplateSel {
- template <typename T>
- struct Bind {
- typedef Tmpl<T> type;
- };
-};
-
-# define GTEST_BIND_(TmplSel, T) \
- TmplSel::template Bind<T>::type
-
-// A unique struct template used as the default value for the
-// arguments of class template Templates. This allows us to simulate
-// variadic templates (e.g. Templates<int>, Templates<int, double>,
-// and etc), which C++ doesn't support directly.
-template <typename T>
-struct NoneT {};
-
-// The following family of struct and struct templates are used to
-// represent template lists. In particular, TemplatesN<T1, T2, ...,
-// TN> represents a list of N templates (T1, T2, ..., and TN). Except
-// for Templates0, every struct in the family has two member types:
-// Head for the selector of the first template in the list, and Tail
-// for the rest of the list.
-
-// The empty template list.
-struct Templates0 {};
-
-// Template lists of length 1, 2, 3, and so on.
-
-template <GTEST_TEMPLATE_ T1>
-struct Templates1 {
- typedef TemplateSel<T1> Head;
- typedef Templates0 Tail;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2>
-struct Templates2 {
- typedef TemplateSel<T1> Head;
- typedef Templates1<T2> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3>
-struct Templates3 {
- typedef TemplateSel<T1> Head;
- typedef Templates2<T2, T3> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4>
-struct Templates4 {
- typedef TemplateSel<T1> Head;
- typedef Templates3<T2, T3, T4> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>
-struct Templates5 {
- typedef TemplateSel<T1> Head;
- typedef Templates4<T2, T3, T4, T5> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>
-struct Templates6 {
- typedef TemplateSel<T1> Head;
- typedef Templates5<T2, T3, T4, T5, T6> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7>
-struct Templates7 {
- typedef TemplateSel<T1> Head;
- typedef Templates6<T2, T3, T4, T5, T6, T7> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>
-struct Templates8 {
- typedef TemplateSel<T1> Head;
- typedef Templates7<T2, T3, T4, T5, T6, T7, T8> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>
-struct Templates9 {
- typedef TemplateSel<T1> Head;
- typedef Templates8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10>
-struct Templates10 {
- typedef TemplateSel<T1> Head;
- typedef Templates9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>
-struct Templates11 {
- typedef TemplateSel<T1> Head;
- typedef Templates10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>
-struct Templates12 {
- typedef TemplateSel<T1> Head;
- typedef Templates11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13>
-struct Templates13 {
- typedef TemplateSel<T1> Head;
- typedef Templates12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>
-struct Templates14 {
- typedef TemplateSel<T1> Head;
- typedef Templates13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>
-struct Templates15 {
- typedef TemplateSel<T1> Head;
- typedef Templates14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16>
-struct Templates16 {
- typedef TemplateSel<T1> Head;
- typedef Templates15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>
-struct Templates17 {
- typedef TemplateSel<T1> Head;
- typedef Templates16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>
-struct Templates18 {
- typedef TemplateSel<T1> Head;
- typedef Templates17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19>
-struct Templates19 {
- typedef TemplateSel<T1> Head;
- typedef Templates18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>
-struct Templates20 {
- typedef TemplateSel<T1> Head;
- typedef Templates19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>
-struct Templates21 {
- typedef TemplateSel<T1> Head;
- typedef Templates20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22>
-struct Templates22 {
- typedef TemplateSel<T1> Head;
- typedef Templates21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>
-struct Templates23 {
- typedef TemplateSel<T1> Head;
- typedef Templates22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>
-struct Templates24 {
- typedef TemplateSel<T1> Head;
- typedef Templates23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25>
-struct Templates25 {
- typedef TemplateSel<T1> Head;
- typedef Templates24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>
-struct Templates26 {
- typedef TemplateSel<T1> Head;
- typedef Templates25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>
-struct Templates27 {
- typedef TemplateSel<T1> Head;
- typedef Templates26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28>
-struct Templates28 {
- typedef TemplateSel<T1> Head;
- typedef Templates27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>
-struct Templates29 {
- typedef TemplateSel<T1> Head;
- typedef Templates28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>
-struct Templates30 {
- typedef TemplateSel<T1> Head;
- typedef Templates29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31>
-struct Templates31 {
- typedef TemplateSel<T1> Head;
- typedef Templates30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>
-struct Templates32 {
- typedef TemplateSel<T1> Head;
- typedef Templates31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>
-struct Templates33 {
- typedef TemplateSel<T1> Head;
- typedef Templates32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34>
-struct Templates34 {
- typedef TemplateSel<T1> Head;
- typedef Templates33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>
-struct Templates35 {
- typedef TemplateSel<T1> Head;
- typedef Templates34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>
-struct Templates36 {
- typedef TemplateSel<T1> Head;
- typedef Templates35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37>
-struct Templates37 {
- typedef TemplateSel<T1> Head;
- typedef Templates36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>
-struct Templates38 {
- typedef TemplateSel<T1> Head;
- typedef Templates37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>
-struct Templates39 {
- typedef TemplateSel<T1> Head;
- typedef Templates38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40>
-struct Templates40 {
- typedef TemplateSel<T1> Head;
- typedef Templates39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>
-struct Templates41 {
- typedef TemplateSel<T1> Head;
- typedef Templates40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>
-struct Templates42 {
- typedef TemplateSel<T1> Head;
- typedef Templates41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
- T42> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43>
-struct Templates43 {
- typedef TemplateSel<T1> Head;
- typedef Templates42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
- T43> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>
-struct Templates44 {
- typedef TemplateSel<T1> Head;
- typedef Templates43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
- T43, T44> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>
-struct Templates45 {
- typedef TemplateSel<T1> Head;
- typedef Templates44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
- T43, T44, T45> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
- GTEST_TEMPLATE_ T46>
-struct Templates46 {
- typedef TemplateSel<T1> Head;
- typedef Templates45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
- T43, T44, T45, T46> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
- GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>
-struct Templates47 {
- typedef TemplateSel<T1> Head;
- typedef Templates46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
- T43, T44, T45, T46, T47> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
- GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>
-struct Templates48 {
- typedef TemplateSel<T1> Head;
- typedef Templates47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
- T43, T44, T45, T46, T47, T48> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
- GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
- GTEST_TEMPLATE_ T49>
-struct Templates49 {
- typedef TemplateSel<T1> Head;
- typedef Templates48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
- T43, T44, T45, T46, T47, T48, T49> Tail;
-};
-
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
- GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
- GTEST_TEMPLATE_ T49, GTEST_TEMPLATE_ T50>
-struct Templates50 {
- typedef TemplateSel<T1> Head;
- typedef Templates49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
- T43, T44, T45, T46, T47, T48, T49, T50> Tail;
-};
-
-
-// We don't want to require the users to write TemplatesN<...> directly,
-// as that would require them to count the length. Templates<...> is much
-// easier to write, but generates horrible messages when there is a
-// compiler error, as gcc insists on printing out each template
-// argument, even if it has the default value (this means Templates<list>
-// will appear as Templates<list, NoneT, NoneT, ..., NoneT> in the compiler
-// errors).
-//
-// Our solution is to combine the best part of the two approaches: a
-// user would write Templates<T1, ..., TN>, and Google Test will translate
-// that to TemplatesN<T1, ..., TN> internally to make error messages
-// readable. The translation is done by the 'type' member of the
-// Templates template.
-template <GTEST_TEMPLATE_ T1 = NoneT, GTEST_TEMPLATE_ T2 = NoneT,
- GTEST_TEMPLATE_ T3 = NoneT, GTEST_TEMPLATE_ T4 = NoneT,
- GTEST_TEMPLATE_ T5 = NoneT, GTEST_TEMPLATE_ T6 = NoneT,
- GTEST_TEMPLATE_ T7 = NoneT, GTEST_TEMPLATE_ T8 = NoneT,
- GTEST_TEMPLATE_ T9 = NoneT, GTEST_TEMPLATE_ T10 = NoneT,
- GTEST_TEMPLATE_ T11 = NoneT, GTEST_TEMPLATE_ T12 = NoneT,
- GTEST_TEMPLATE_ T13 = NoneT, GTEST_TEMPLATE_ T14 = NoneT,
- GTEST_TEMPLATE_ T15 = NoneT, GTEST_TEMPLATE_ T16 = NoneT,
- GTEST_TEMPLATE_ T17 = NoneT, GTEST_TEMPLATE_ T18 = NoneT,
- GTEST_TEMPLATE_ T19 = NoneT, GTEST_TEMPLATE_ T20 = NoneT,
- GTEST_TEMPLATE_ T21 = NoneT, GTEST_TEMPLATE_ T22 = NoneT,
- GTEST_TEMPLATE_ T23 = NoneT, GTEST_TEMPLATE_ T24 = NoneT,
- GTEST_TEMPLATE_ T25 = NoneT, GTEST_TEMPLATE_ T26 = NoneT,
- GTEST_TEMPLATE_ T27 = NoneT, GTEST_TEMPLATE_ T28 = NoneT,
- GTEST_TEMPLATE_ T29 = NoneT, GTEST_TEMPLATE_ T30 = NoneT,
- GTEST_TEMPLATE_ T31 = NoneT, GTEST_TEMPLATE_ T32 = NoneT,
- GTEST_TEMPLATE_ T33 = NoneT, GTEST_TEMPLATE_ T34 = NoneT,
- GTEST_TEMPLATE_ T35 = NoneT, GTEST_TEMPLATE_ T36 = NoneT,
- GTEST_TEMPLATE_ T37 = NoneT, GTEST_TEMPLATE_ T38 = NoneT,
- GTEST_TEMPLATE_ T39 = NoneT, GTEST_TEMPLATE_ T40 = NoneT,
- GTEST_TEMPLATE_ T41 = NoneT, GTEST_TEMPLATE_ T42 = NoneT,
- GTEST_TEMPLATE_ T43 = NoneT, GTEST_TEMPLATE_ T44 = NoneT,
- GTEST_TEMPLATE_ T45 = NoneT, GTEST_TEMPLATE_ T46 = NoneT,
- GTEST_TEMPLATE_ T47 = NoneT, GTEST_TEMPLATE_ T48 = NoneT,
- GTEST_TEMPLATE_ T49 = NoneT, GTEST_TEMPLATE_ T50 = NoneT>
-struct Templates {
- typedef Templates50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
- T42, T43, T44, T45, T46, T47, T48, T49, T50> type;
-};
-
-template <>
-struct Templates<NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT> {
- typedef Templates0 type;
-};
-template <GTEST_TEMPLATE_ T1>
-struct Templates<T1, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT> {
- typedef Templates1<T1> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2>
-struct Templates<T1, T2, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT> {
- typedef Templates2<T1, T2> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3>
-struct Templates<T1, T2, T3, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates3<T1, T2, T3> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4>
-struct Templates<T1, T2, T3, T4, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates4<T1, T2, T3, T4> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>
-struct Templates<T1, T2, T3, T4, T5, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates5<T1, T2, T3, T4, T5> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>
-struct Templates<T1, T2, T3, T4, T5, T6, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates6<T1, T2, T3, T4, T5, T6> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates7<T1, T2, T3, T4, T5, T6, T7> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates8<T1, T2, T3, T4, T5, T6, T7, T8> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates9<T1, T2, T3, T4, T5, T6, T7, T8, T9> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT> {
- typedef Templates18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT> {
- typedef Templates19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT> {
- typedef Templates20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT> {
- typedef Templates21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT> {
- typedef Templates22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT> {
- typedef Templates23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT> {
- typedef Templates24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT> {
- typedef Templates25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT> {
- typedef Templates26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT> {
- typedef Templates27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT> {
- typedef Templates28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT> {
- typedef Templates29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, NoneT, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, NoneT, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, NoneT, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, NoneT, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, NoneT,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
- T42> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
- T42, T43> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
- NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
- T42, T43, T44> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
- T45, NoneT, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
- T42, T43, T44, T45> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
- GTEST_TEMPLATE_ T46>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
- T45, T46, NoneT, NoneT, NoneT, NoneT> {
- typedef Templates46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
- T42, T43, T44, T45, T46> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
- GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
- T45, T46, T47, NoneT, NoneT, NoneT> {
- typedef Templates47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
- T42, T43, T44, T45, T46, T47> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
- GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
- T45, T46, T47, T48, NoneT, NoneT> {
- typedef Templates48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
- T42, T43, T44, T45, T46, T47, T48> type;
-};
-template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
- GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
- GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
- GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
- GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
- GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
- GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
- GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
- GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
- GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
- GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
- GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
- GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
- GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
- GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
- GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
- GTEST_TEMPLATE_ T49>
-struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
- T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
- T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
- T45, T46, T47, T48, T49, NoneT> {
- typedef Templates49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
- T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
- T42, T43, T44, T45, T46, T47, T48, T49> type;
-};
-
-// The TypeList template makes it possible to use either a single type
-// or a Types<...> list in TYPED_TEST_CASE() and
-// INSTANTIATE_TYPED_TEST_CASE_P().
-
-template <typename T>
-struct TypeList {
- typedef Types1<T> type;
-};
-
-template <typename T1, typename T2, typename T3, typename T4, typename T5,
- typename T6, typename T7, typename T8, typename T9, typename T10,
- typename T11, typename T12, typename T13, typename T14, typename T15,
- typename T16, typename T17, typename T18, typename T19, typename T20,
- typename T21, typename T22, typename T23, typename T24, typename T25,
- typename T26, typename T27, typename T28, typename T29, typename T30,
- typename T31, typename T32, typename T33, typename T34, typename T35,
- typename T36, typename T37, typename T38, typename T39, typename T40,
- typename T41, typename T42, typename T43, typename T44, typename T45,
- typename T46, typename T47, typename T48, typename T49, typename T50>
-struct TypeList<Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
- T44, T45, T46, T47, T48, T49, T50> > {
- typedef typename Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
- T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
- T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
- T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>::type type;
-};
-
-#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
-
-} // namespace internal
-} // namespace testing
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
diff --git a/test/gtest/include/gtest/internal/gtest-type-util.h.pump b/test/gtest/include/gtest/internal/gtest-type-util.h.pump
deleted file mode 100644
index 251fdf0..0000000
--- a/test/gtest/include/gtest/internal/gtest-type-util.h.pump
+++ /dev/null
@@ -1,297 +0,0 @@
-$$ -*- mode: c++; -*-
-$var n = 50 $$ Maximum length of type lists we want to support.
-// Copyright 2008 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wan@google.com (Zhanyong Wan)
-
-// Type utilities needed for implementing typed and type-parameterized
-// tests. This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
-//
-// Currently we support at most $n types in a list, and at most $n
-// type-parameterized tests in one type-parameterized test case.
-// Please contact googletestframework@googlegroups.com if you need
-// more.
-
-#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
-#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
-
-#include "gtest/internal/gtest-port.h"
-
-// #ifdef __GNUC__ is too general here. It is possible to use gcc without using
-// libstdc++ (which is where cxxabi.h comes from).
-# if GTEST_HAS_CXXABI_H_
-# include <cxxabi.h>
-# elif defined(__HP_aCC)
-# include <acxx_demangle.h>
-# endif // GTEST_HASH_CXXABI_H_
-
-namespace testing {
-namespace internal {
-
-// GetTypeName<T>() returns a human-readable name of type T.
-// NB: This function is also used in Google Mock, so don't move it inside of
-// the typed-test-only section below.
-template <typename T>
-std::string GetTypeName() {
-# if GTEST_HAS_RTTI
-
- const char* const name = typeid(T).name();
-# if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC)
- int status = 0;
- // gcc's implementation of typeid(T).name() mangles the type name,
- // so we have to demangle it.
-# if GTEST_HAS_CXXABI_H_
- using abi::__cxa_demangle;
-# endif // GTEST_HAS_CXXABI_H_
- char* const readable_name = __cxa_demangle(name, 0, 0, &status);
- const std::string name_str(status == 0 ? readable_name : name);
- free(readable_name);
- return name_str;
-# else
- return name;
-# endif // GTEST_HAS_CXXABI_H_ || __HP_aCC
-
-# else
-
- return "<type>";
-
-# endif // GTEST_HAS_RTTI
-}
-
-#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
-
-// AssertyTypeEq<T1, T2>::type is defined iff T1 and T2 are the same
-// type. This can be used as a compile-time assertion to ensure that
-// two types are equal.
-
-template <typename T1, typename T2>
-struct AssertTypeEq;
-
-template <typename T>
-struct AssertTypeEq<T, T> {
- typedef bool type;
-};
-
-// A unique type used as the default value for the arguments of class
-// template Types. This allows us to simulate variadic templates
-// (e.g. Types<int>, Type<int, double>, and etc), which C++ doesn't
-// support directly.
-struct None {};
-
-// The following family of struct and struct templates are used to
-// represent type lists. In particular, TypesN<T1, T2, ..., TN>
-// represents a type list with N types (T1, T2, ..., and TN) in it.
-// Except for Types0, every struct in the family has two member types:
-// Head for the first type in the list, and Tail for the rest of the
-// list.
-
-// The empty type list.
-struct Types0 {};
-
-// Type lists of length 1, 2, 3, and so on.
-
-template <typename T1>
-struct Types1 {
- typedef T1 Head;
- typedef Types0 Tail;
-};
-
-$range i 2..n
-
-$for i [[
-$range j 1..i
-$range k 2..i
-template <$for j, [[typename T$j]]>
-struct Types$i {
- typedef T1 Head;
- typedef Types$(i-1)<$for k, [[T$k]]> Tail;
-};
-
-
-]]
-
-} // namespace internal
-
-// We don't want to require the users to write TypesN<...> directly,
-// as that would require them to count the length. Types<...> is much
-// easier to write, but generates horrible messages when there is a
-// compiler error, as gcc insists on printing out each template
-// argument, even if it has the default value (this means Types<int>
-// will appear as Types<int, None, None, ..., None> in the compiler
-// errors).
-//
-// Our solution is to combine the best part of the two approaches: a
-// user would write Types<T1, ..., TN>, and Google Test will translate
-// that to TypesN<T1, ..., TN> internally to make error messages
-// readable. The translation is done by the 'type' member of the
-// Types template.
-
-$range i 1..n
-template <$for i, [[typename T$i = internal::None]]>
-struct Types {
- typedef internal::Types$n<$for i, [[T$i]]> type;
-};
-
-template <>
-struct Types<$for i, [[internal::None]]> {
- typedef internal::Types0 type;
-};
-
-$range i 1..n-1
-$for i [[
-$range j 1..i
-$range k i+1..n
-template <$for j, [[typename T$j]]>
-struct Types<$for j, [[T$j]]$for k[[, internal::None]]> {
- typedef internal::Types$i<$for j, [[T$j]]> type;
-};
-
-]]
-
-namespace internal {
-
-# define GTEST_TEMPLATE_ template <typename T> class
-
-// The template "selector" struct TemplateSel<Tmpl> is used to
-// represent Tmpl, which must be a class template with one type
-// parameter, as a type. TemplateSel<Tmpl>::Bind<T>::type is defined
-// as the type Tmpl<T>. This allows us to actually instantiate the
-// template "selected" by TemplateSel<Tmpl>.
-//
-// This trick is necessary for simulating typedef for class templates,
-// which C++ doesn't support directly.
-template <GTEST_TEMPLATE_ Tmpl>
-struct TemplateSel {
- template <typename T>
- struct Bind {
- typedef Tmpl<T> type;
- };
-};
-
-# define GTEST_BIND_(TmplSel, T) \
- TmplSel::template Bind<T>::type
-
-// A unique struct template used as the default value for the
-// arguments of class template Templates. This allows us to simulate
-// variadic templates (e.g. Templates<int>, Templates<int, double>,
-// and etc), which C++ doesn't support directly.
-template <typename T>
-struct NoneT {};
-
-// The following family of struct and struct templates are used to
-// represent template lists. In particular, TemplatesN<T1, T2, ...,
-// TN> represents a list of N templates (T1, T2, ..., and TN). Except
-// for Templates0, every struct in the family has two member types:
-// Head for the selector of the first template in the list, and Tail
-// for the rest of the list.
-
-// The empty template list.
-struct Templates0 {};
-
-// Template lists of length 1, 2, 3, and so on.
-
-template <GTEST_TEMPLATE_ T1>
-struct Templates1 {
- typedef TemplateSel<T1> Head;
- typedef Templates0 Tail;
-};
-
-$range i 2..n
-
-$for i [[
-$range j 1..i
-$range k 2..i
-template <$for j, [[GTEST_TEMPLATE_ T$j]]>
-struct Templates$i {
- typedef TemplateSel<T1> Head;
- typedef Templates$(i-1)<$for k, [[T$k]]> Tail;
-};
-
-
-]]
-
-// We don't want to require the users to write TemplatesN<...> directly,
-// as that would require them to count the length. Templates<...> is much
-// easier to write, but generates horrible messages when there is a
-// compiler error, as gcc insists on printing out each template
-// argument, even if it has the default value (this means Templates<list>
-// will appear as Templates<list, NoneT, NoneT, ..., NoneT> in the compiler
-// errors).
-//
-// Our solution is to combine the best part of the two approaches: a
-// user would write Templates<T1, ..., TN>, and Google Test will translate
-// that to TemplatesN<T1, ..., TN> internally to make error messages
-// readable. The translation is done by the 'type' member of the
-// Templates template.
-
-$range i 1..n
-template <$for i, [[GTEST_TEMPLATE_ T$i = NoneT]]>
-struct Templates {
- typedef Templates$n<$for i, [[T$i]]> type;
-};
-
-template <>
-struct Templates<$for i, [[NoneT]]> {
- typedef Templates0 type;
-};
-
-$range i 1..n-1
-$for i [[
-$range j 1..i
-$range k i+1..n
-template <$for j, [[GTEST_TEMPLATE_ T$j]]>
-struct Templates<$for j, [[T$j]]$for k[[, NoneT]]> {
- typedef Templates$i<$for j, [[T$j]]> type;
-};
-
-]]
-
-// The TypeList template makes it possible to use either a single type
-// or a Types<...> list in TYPED_TEST_CASE() and
-// INSTANTIATE_TYPED_TEST_CASE_P().
-
-template <typename T>
-struct TypeList {
- typedef Types1<T> type;
-};
-
-
-$range i 1..n
-template <$for i, [[typename T$i]]>
-struct TypeList<Types<$for i, [[T$i]]> > {
- typedef typename Types<$for i, [[T$i]]>::type type;
-};
-
-#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
-
-} // namespace internal
-} // namespace testing
-
-#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
diff --git a/test/gtest/src/gtest-all.cc b/test/gtest/src/gtest-all.cc
deleted file mode 100644
index 0a9cee5..0000000
--- a/test/gtest/src/gtest-all.cc
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: mheule@google.com (Markus Heule)
-//
-// Google C++ Testing Framework (Google Test)
-//
-// Sometimes it's desirable to build Google Test by compiling a single file.
-// This file serves this purpose.
-
-// This line ensures that gtest.h can be compiled on its own, even
-// when it's fused.
-#include "gtest/gtest.h"
-
-// The following lines pull in the real gtest *.cc files.
-#include "src/gtest.cc"
-#include "src/gtest-death-test.cc"
-#include "src/gtest-filepath.cc"
-#include "src/gtest-port.cc"
-#include "src/gtest-printers.cc"
-#include "src/gtest-test-part.cc"
-#include "src/gtest-typed-test.cc"
diff --git a/test/gtest/src/gtest-death-test.cc b/test/gtest/src/gtest-death-test.cc
deleted file mode 100644
index a01a369..0000000
--- a/test/gtest/src/gtest-death-test.cc
+++ /dev/null
@@ -1,1342 +0,0 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wan@google.com (Zhanyong Wan), vladl@google.com (Vlad Losev)
-//
-// This file implements death tests.
-
-#include "gtest/gtest-death-test.h"
-#include "gtest/internal/gtest-port.h"
-#include "gtest/internal/custom/gtest.h"
-
-#if GTEST_HAS_DEATH_TEST
-
-# if GTEST_OS_MAC
-# include <crt_externs.h>
-# endif // GTEST_OS_MAC
-
-# include <errno.h>
-# include <fcntl.h>
-# include <limits.h>
-
-# if GTEST_OS_LINUX
-# include <signal.h>
-# endif // GTEST_OS_LINUX
-
-# include <stdarg.h>
-
-# if GTEST_OS_WINDOWS
-# include <windows.h>
-# else
-# include <sys/mman.h>
-# include <sys/wait.h>
-# endif // GTEST_OS_WINDOWS
-
-# if GTEST_OS_QNX
-# include <spawn.h>
-# endif // GTEST_OS_QNX
-
-#endif // GTEST_HAS_DEATH_TEST
-
-#include "gtest/gtest-message.h"
-#include "gtest/internal/gtest-string.h"
-
-// Indicates that this translation unit is part of Google Test's
-// implementation. It must come before gtest-internal-inl.h is
-// included, or there will be a compiler error. This trick exists to
-// prevent the accidental inclusion of gtest-internal-inl.h in the
-// user's code.
-#define GTEST_IMPLEMENTATION_ 1
-#include "src/gtest-internal-inl.h"
-#undef GTEST_IMPLEMENTATION_
-
-namespace testing {
-
-// Constants.
-
-// The default death test style.
-static const char kDefaultDeathTestStyle[] = "fast";
-
-GTEST_DEFINE_string_(
- death_test_style,
- internal::StringFromGTestEnv("death_test_style", kDefaultDeathTestStyle),
- "Indicates how to run a death test in a forked child process: "
- "\"threadsafe\" (child process re-executes the test binary "
- "from the beginning, running only the specific death test) or "
- "\"fast\" (child process runs the death test immediately "
- "after forking).");
-
-GTEST_DEFINE_bool_(
- death_test_use_fork,
- internal::BoolFromGTestEnv("death_test_use_fork", false),
- "Instructs to use fork()/_exit() instead of clone() in death tests. "
- "Ignored and always uses fork() on POSIX systems where clone() is not "
- "implemented. Useful when running under valgrind or similar tools if "
- "those do not support clone(). Valgrind 3.3.1 will just fail if "
- "it sees an unsupported combination of clone() flags. "
- "It is not recommended to use this flag w/o valgrind though it will "
- "work in 99% of the cases. Once valgrind is fixed, this flag will "
- "most likely be removed.");
-
-namespace internal {
-GTEST_DEFINE_string_(
- internal_run_death_test, "",
- "Indicates the file, line number, temporal index of "
- "the single death test to run, and a file descriptor to "
- "which a success code may be sent, all separated by "
- "the '|' characters. This flag is specified if and only if the current "
- "process is a sub-process launched for running a thread-safe "
- "death test. FOR INTERNAL USE ONLY.");
-} // namespace internal
-
-#if GTEST_HAS_DEATH_TEST
-
-namespace internal {
-
-// Valid only for fast death tests. Indicates the code is running in the
-// child process of a fast style death test.
-# if !GTEST_OS_WINDOWS
-static bool g_in_fast_death_test_child = false;
-# endif
-
-// Returns a Boolean value indicating whether the caller is currently
-// executing in the context of the death test child process. Tools such as
-// Valgrind heap checkers may need this to modify their behavior in death
-// tests. IMPORTANT: This is an internal utility. Using it may break the
-// implementation of death tests. User code MUST NOT use it.
-bool InDeathTestChild() {
-# if GTEST_OS_WINDOWS
-
- // On Windows, death tests are thread-safe regardless of the value of the
- // death_test_style flag.
- return !GTEST_FLAG(internal_run_death_test).empty();
-
-# else
-
- if (GTEST_FLAG(death_test_style) == "threadsafe")
- return !GTEST_FLAG(internal_run_death_test).empty();
- else
- return g_in_fast_death_test_child;
-#endif
-}
-
-} // namespace internal
-
-// ExitedWithCode constructor.
-ExitedWithCode::ExitedWithCode(int exit_code) : exit_code_(exit_code) {
-}
-
-// ExitedWithCode function-call operator.
-bool ExitedWithCode::operator()(int exit_status) const {
-# if GTEST_OS_WINDOWS
-
- return exit_status == exit_code_;
-
-# else
-
- return WIFEXITED(exit_status) && WEXITSTATUS(exit_status) == exit_code_;
-
-# endif // GTEST_OS_WINDOWS
-}
-
-# if !GTEST_OS_WINDOWS
-// KilledBySignal constructor.
-KilledBySignal::KilledBySignal(int signum) : signum_(signum) {
-}
-
-// KilledBySignal function-call operator.
-bool KilledBySignal::operator()(int exit_status) const {
-# if defined(GTEST_KILLED_BY_SIGNAL_OVERRIDE_)
- {
- bool result;
- if (GTEST_KILLED_BY_SIGNAL_OVERRIDE_(signum_, exit_status, &result)) {
- return result;
- }
- }
-# endif // defined(GTEST_KILLED_BY_SIGNAL_OVERRIDE_)
- return WIFSIGNALED(exit_status) && WTERMSIG(exit_status) == signum_;
-}
-# endif // !GTEST_OS_WINDOWS
-
-namespace internal {
-
-// Utilities needed for death tests.
-
-// Generates a textual description of a given exit code, in the format
-// specified by wait(2).
-static std::string ExitSummary(int exit_code) {
- Message m;
-
-# if GTEST_OS_WINDOWS
-
- m << "Exited with exit status " << exit_code;
-
-# else
-
- if (WIFEXITED(exit_code)) {
- m << "Exited with exit status " << WEXITSTATUS(exit_code);
- } else if (WIFSIGNALED(exit_code)) {
- m << "Terminated by signal " << WTERMSIG(exit_code);
- }
-# ifdef WCOREDUMP
- if (WCOREDUMP(exit_code)) {
- m << " (core dumped)";
- }
-# endif
-# endif // GTEST_OS_WINDOWS
-
- return m.GetString();
-}
-
-// Returns true if exit_status describes a process that was terminated
-// by a signal, or exited normally with a nonzero exit code.
-bool ExitedUnsuccessfully(int exit_status) {
- return !ExitedWithCode(0)(exit_status);
-}
-
-# if !GTEST_OS_WINDOWS
-// Generates a textual failure message when a death test finds more than
-// one thread running, or cannot determine the number of threads, prior
-// to executing the given statement. It is the responsibility of the
-// caller not to pass a thread_count of 1.
-static std::string DeathTestThreadWarning(size_t thread_count) {
- Message msg;
- msg << "Death tests use fork(), which is unsafe particularly"
- << " in a threaded context. For this test, " << GTEST_NAME_ << " ";
- if (thread_count == 0)
- msg << "couldn't detect the number of threads.";
- else
- msg << "detected " << thread_count << " threads.";
- return msg.GetString();
-}
-# endif // !GTEST_OS_WINDOWS
-
-// Flag characters for reporting a death test that did not die.
-static const char kDeathTestLived = 'L';
-static const char kDeathTestReturned = 'R';
-static const char kDeathTestThrew = 'T';
-static const char kDeathTestInternalError = 'I';
-
-// An enumeration describing all of the possible ways that a death test can
-// conclude. DIED means that the process died while executing the test
-// code; LIVED means that process lived beyond the end of the test code;
-// RETURNED means that the test statement attempted to execute a return
-// statement, which is not allowed; THREW means that the test statement
-// returned control by throwing an exception. IN_PROGRESS means the test
-// has not yet concluded.
-// TODO(vladl@google.com): Unify names and possibly values for
-// AbortReason, DeathTestOutcome, and flag characters above.
-enum DeathTestOutcome { IN_PROGRESS, DIED, LIVED, RETURNED, THREW };
-
-// Routine for aborting the program which is safe to call from an
-// exec-style death test child process, in which case the error
-// message is propagated back to the parent process. Otherwise, the
-// message is simply printed to stderr. In either case, the program
-// then exits with status 1.
-void DeathTestAbort(const std::string& message) {
- // On a POSIX system, this function may be called from a threadsafe-style
- // death test child process, which operates on a very small stack. Use
- // the heap for any additional non-minuscule memory requirements.
- const InternalRunDeathTestFlag* const flag =
- GetUnitTestImpl()->internal_run_death_test_flag();
- if (flag != NULL) {
- FILE* parent = posix::FDOpen(flag->write_fd(), "w");
- fputc(kDeathTestInternalError, parent);
- fprintf(parent, "%s", message.c_str());
- fflush(parent);
- _exit(1);
- } else {
- fprintf(stderr, "%s", message.c_str());
- fflush(stderr);
- posix::Abort();
- }
-}
-
-// A replacement for CHECK that calls DeathTestAbort if the assertion
-// fails.
-# define GTEST_DEATH_TEST_CHECK_(expression) \
- do { \
- if (!::testing::internal::IsTrue(expression)) { \
- DeathTestAbort( \
- ::std::string("CHECK failed: File ") + __FILE__ + ", line " \
- + ::testing::internal::StreamableToString(__LINE__) + ": " \
- + #expression); \
- } \
- } while (::testing::internal::AlwaysFalse())
-
-// This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for
-// evaluating any system call that fulfills two conditions: it must return
-// -1 on failure, and set errno to EINTR when it is interrupted and
-// should be tried again. The macro expands to a loop that repeatedly
-// evaluates the expression as long as it evaluates to -1 and sets
-// errno to EINTR. If the expression evaluates to -1 but errno is
-// something other than EINTR, DeathTestAbort is called.
-# define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \
- do { \
- int gtest_retval; \
- do { \
- gtest_retval = (expression); \
- } while (gtest_retval == -1 && errno == EINTR); \
- if (gtest_retval == -1) { \
- DeathTestAbort( \
- ::std::string("CHECK failed: File ") + __FILE__ + ", line " \
- + ::testing::internal::StreamableToString(__LINE__) + ": " \
- + #expression + " != -1"); \
- } \
- } while (::testing::internal::AlwaysFalse())
-
-// Returns the message describing the last system error in errno.
-std::string GetLastErrnoDescription() {
- return errno == 0 ? "" : posix::StrError(errno);
-}
-
-// This is called from a death test parent process to read a failure
-// message from the death test child process and log it with the FATAL
-// severity. On Windows, the message is read from a pipe handle. On other
-// platforms, it is read from a file descriptor.
-static void FailFromInternalError(int fd) {
- Message error;
- char buffer[256];
- int num_read;
-
- do {
- while ((num_read = posix::Read(fd, buffer, 255)) > 0) {
- buffer[num_read] = '\0';
- error << buffer;
- }
- } while (num_read == -1 && errno == EINTR);
-
- if (num_read == 0) {
- GTEST_LOG_(FATAL) << error.GetString();
- } else {
- const int last_error = errno;
- GTEST_LOG_(FATAL) << "Error while reading death test internal: "
- << GetLastErrnoDescription() << " [" << last_error << "]";
- }
-}
-
-// Death test constructor. Increments the running death test count
-// for the current test.
-DeathTest::DeathTest() {
- TestInfo* const info = GetUnitTestImpl()->current_test_info();
- if (info == NULL) {
- DeathTestAbort("Cannot run a death test outside of a TEST or "
- "TEST_F construct");
- }
-}
-
-// Creates and returns a death test by dispatching to the current
-// death test factory.
-bool DeathTest::Create(const char* statement, const RE* regex,
- const char* file, int line, DeathTest** test) {
- return GetUnitTestImpl()->death_test_factory()->Create(
- statement, regex, file, line, test);
-}
-
-const char* DeathTest::LastMessage() {
- return last_death_test_message_.c_str();
-}
-
-void DeathTest::set_last_death_test_message(const std::string& message) {
- last_death_test_message_ = message;
-}
-
-std::string DeathTest::last_death_test_message_;
-
-// Provides cross platform implementation for some death functionality.
-class DeathTestImpl : public DeathTest {
- protected:
- DeathTestImpl(const char* a_statement, const RE* a_regex)
- : statement_(a_statement),
- regex_(a_regex),
- spawned_(false),
- status_(-1),
- outcome_(IN_PROGRESS),
- read_fd_(-1),
- write_fd_(-1) {}
-
- // read_fd_ is expected to be closed and cleared by a derived class.
- ~DeathTestImpl() { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); }
-
- void Abort(AbortReason reason);
- virtual bool Passed(bool status_ok);
-
- const char* statement() const { return statement_; }
- const RE* regex() const { return regex_; }
- bool spawned() const { return spawned_; }
- void set_spawned(bool is_spawned) { spawned_ = is_spawned; }
- int status() const { return status_; }
- void set_status(int a_status) { status_ = a_status; }
- DeathTestOutcome outcome() const { return outcome_; }
- void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; }
- int read_fd() const { return read_fd_; }
- void set_read_fd(int fd) { read_fd_ = fd; }
- int write_fd() const { return write_fd_; }
- void set_write_fd(int fd) { write_fd_ = fd; }
-
- // Called in the parent process only. Reads the result code of the death
- // test child process via a pipe, interprets it to set the outcome_
- // member, and closes read_fd_. Outputs diagnostics and terminates in
- // case of unexpected codes.
- void ReadAndInterpretStatusByte();
-
- private:
- // The textual content of the code this object is testing. This class
- // doesn't own this string and should not attempt to delete it.
- const char* const statement_;
- // The regular expression which test output must match. DeathTestImpl
- // doesn't own this object and should not attempt to delete it.
- const RE* const regex_;
- // True if the death test child process has been successfully spawned.
- bool spawned_;
- // The exit status of the child process.
- int status_;
- // How the death test concluded.
- DeathTestOutcome outcome_;
- // Descriptor to the read end of the pipe to the child process. It is
- // always -1 in the child process. The child keeps its write end of the
- // pipe in write_fd_.
- int read_fd_;
- // Descriptor to the child's write end of the pipe to the parent process.
- // It is always -1 in the parent process. The parent keeps its end of the
- // pipe in read_fd_.
- int write_fd_;
-};
-
-// Called in the parent process only. Reads the result code of the death
-// test child process via a pipe, interprets it to set the outcome_
-// member, and closes read_fd_. Outputs diagnostics and terminates in
-// case of unexpected codes.
-void DeathTestImpl::ReadAndInterpretStatusByte() {
- char flag;
- int bytes_read;
-
- // The read() here blocks until data is available (signifying the
- // failure of the death test) or until the pipe is closed (signifying
- // its success), so it's okay to call this in the parent before
- // the child process has exited.
- do {
- bytes_read = posix::Read(read_fd(), &flag, 1);
- } while (bytes_read == -1 && errno == EINTR);
-
- if (bytes_read == 0) {
- set_outcome(DIED);
- } else if (bytes_read == 1) {
- switch (flag) {
- case kDeathTestReturned:
- set_outcome(RETURNED);
- break;
- case kDeathTestThrew:
- set_outcome(THREW);
- break;
- case kDeathTestLived:
- set_outcome(LIVED);
- break;
- case kDeathTestInternalError:
- FailFromInternalError(read_fd()); // Does not return.
- break;
- default:
- GTEST_LOG_(FATAL) << "Death test child process reported "
- << "unexpected status byte ("
- << static_cast<unsigned int>(flag) << ")";
- }
- } else {
- GTEST_LOG_(FATAL) << "Read from death test child process failed: "
- << GetLastErrnoDescription();
- }
- GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Close(read_fd()));
- set_read_fd(-1);
-}
-
-// Signals that the death test code which should have exited, didn't.
-// Should be called only in a death test child process.
-// Writes a status byte to the child's status file descriptor, then
-// calls _exit(1).
-void DeathTestImpl::Abort(AbortReason reason) {
- // The parent process considers the death test to be a failure if
- // it finds any data in our pipe. So, here we write a single flag byte
- // to the pipe, then exit.
- const char status_ch =
- reason == TEST_DID_NOT_DIE ? kDeathTestLived :
- reason == TEST_THREW_EXCEPTION ? kDeathTestThrew : kDeathTestReturned;
-
- GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Write(write_fd(), &status_ch, 1));
- // We are leaking the descriptor here because on some platforms (i.e.,
- // when built as Windows DLL), destructors of global objects will still
- // run after calling _exit(). On such systems, write_fd_ will be
- // indirectly closed from the destructor of UnitTestImpl, causing double
- // close if it is also closed here. On debug configurations, double close
- // may assert. As there are no in-process buffers to flush here, we are
- // relying on the OS to close the descriptor after the process terminates
- // when the destructors are not run.
- _exit(1); // Exits w/o any normal exit hooks (we were supposed to crash)
-}
-
-// Returns an indented copy of stderr output for a death test.
-// This makes distinguishing death test output lines from regular log lines
-// much easier.
-static ::std::string FormatDeathTestOutput(const ::std::string& output) {
- ::std::string ret;
- for (size_t at = 0; ; ) {
- const size_t line_end = output.find('\n', at);
- ret += "[ DEATH ] ";
- if (line_end == ::std::string::npos) {
- ret += output.substr(at);
- break;
- }
- ret += output.substr(at, line_end + 1 - at);
- at = line_end + 1;
- }
- return ret;
-}
-
-// Assesses the success or failure of a death test, using both private
-// members which have previously been set, and one argument:
-//
-// Private data members:
-// outcome: An enumeration describing how the death test
-// concluded: DIED, LIVED, THREW, or RETURNED. The death test
-// fails in the latter three cases.
-// status: The exit status of the child process. On *nix, it is in the
-// in the format specified by wait(2). On Windows, this is the
-// value supplied to the ExitProcess() API or a numeric code
-// of the exception that terminated the program.
-// regex: A regular expression object to be applied to
-// the test's captured standard error output; the death test
-// fails if it does not match.
-//
-// Argument:
-// status_ok: true if exit_status is acceptable in the context of
-// this particular death test, which fails if it is false
-//
-// Returns true iff all of the above conditions are met. Otherwise, the
-// first failing condition, in the order given above, is the one that is
-// reported. Also sets the last death test message string.
-bool DeathTestImpl::Passed(bool status_ok) {
- if (!spawned())
- return false;
-
- const std::string error_message = GetCapturedStderr();
-
- bool success = false;
- Message buffer;
-
- buffer << "Death test: " << statement() << "\n";
- switch (outcome()) {
- case LIVED:
- buffer << " Result: failed to die.\n"
- << " Error msg:\n" << FormatDeathTestOutput(error_message);
- break;
- case THREW:
- buffer << " Result: threw an exception.\n"
- << " Error msg:\n" << FormatDeathTestOutput(error_message);
- break;
- case RETURNED:
- buffer << " Result: illegal return in test statement.\n"
- << " Error msg:\n" << FormatDeathTestOutput(error_message);
- break;
- case DIED:
- if (status_ok) {
- const bool matched = RE::PartialMatch(error_message.c_str(), *regex());
- if (matched) {
- success = true;
- } else {
- buffer << " Result: died but not with expected error.\n"
- << " Expected: " << regex()->pattern() << "\n"
- << "Actual msg:\n" << FormatDeathTestOutput(error_message);
- }
- } else {
- buffer << " Result: died but not with expected exit code:\n"
- << " " << ExitSummary(status()) << "\n"
- << "Actual msg:\n" << FormatDeathTestOutput(error_message);
- }
- break;
- case IN_PROGRESS:
- default:
- GTEST_LOG_(FATAL)
- << "DeathTest::Passed somehow called before conclusion of test";
- }
-
- DeathTest::set_last_death_test_message(buffer.GetString());
- return success;
-}
-
-# if GTEST_OS_WINDOWS
-// WindowsDeathTest implements death tests on Windows. Due to the
-// specifics of starting new processes on Windows, death tests there are
-// always threadsafe, and Google Test considers the
-// --gtest_death_test_style=fast setting to be equivalent to
-// --gtest_death_test_style=threadsafe there.
-//
-// A few implementation notes: Like the Linux version, the Windows
-// implementation uses pipes for child-to-parent communication. But due to
-// the specifics of pipes on Windows, some extra steps are required:
-//
-// 1. The parent creates a communication pipe and stores handles to both
-// ends of it.
-// 2. The parent starts the child and provides it with the information
-// necessary to acquire the handle to the write end of the pipe.
-// 3. The child acquires the write end of the pipe and signals the parent
-// using a Windows event.
-// 4. Now the parent can release the write end of the pipe on its side. If
-// this is done before step 3, the object's reference count goes down to
-// 0 and it is destroyed, preventing the child from acquiring it. The
-// parent now has to release it, or read operations on the read end of
-// the pipe will not return when the child terminates.
-// 5. The parent reads child's output through the pipe (outcome code and
-// any possible error messages) from the pipe, and its stderr and then
-// determines whether to fail the test.
-//
-// Note: to distinguish Win32 API calls from the local method and function
-// calls, the former are explicitly resolved in the global namespace.
-//
-class WindowsDeathTest : public DeathTestImpl {
- public:
- WindowsDeathTest(const char* a_statement,
- const RE* a_regex,
- const char* file,
- int line)
- : DeathTestImpl(a_statement, a_regex), file_(file), line_(line) {}
-
- // All of these virtual functions are inherited from DeathTest.
- virtual int Wait();
- virtual TestRole AssumeRole();
-
- private:
- // The name of the file in which the death test is located.
- const char* const file_;
- // The line number on which the death test is located.
- const int line_;
- // Handle to the write end of the pipe to the child process.
- AutoHandle write_handle_;
- // Child process handle.
- AutoHandle child_handle_;
- // Event the child process uses to signal the parent that it has
- // acquired the handle to the write end of the pipe. After seeing this
- // event the parent can release its own handles to make sure its
- // ReadFile() calls return when the child terminates.
- AutoHandle event_handle_;
-};
-
-// Waits for the child in a death test to exit, returning its exit
-// status, or 0 if no child process exists. As a side effect, sets the
-// outcome data member.
-int WindowsDeathTest::Wait() {
- if (!spawned())
- return 0;
-
- // Wait until the child either signals that it has acquired the write end
- // of the pipe or it dies.
- const HANDLE wait_handles[2] = { child_handle_.Get(), event_handle_.Get() };
- switch (::WaitForMultipleObjects(2,
- wait_handles,
- FALSE, // Waits for any of the handles.
- INFINITE)) {
- case WAIT_OBJECT_0:
- case WAIT_OBJECT_0 + 1:
- break;
- default:
- GTEST_DEATH_TEST_CHECK_(false); // Should not get here.
- }
-
- // The child has acquired the write end of the pipe or exited.
- // We release the handle on our side and continue.
- write_handle_.Reset();
- event_handle_.Reset();
-
- ReadAndInterpretStatusByte();
-
- // Waits for the child process to exit if it haven't already. This
- // returns immediately if the child has already exited, regardless of
- // whether previous calls to WaitForMultipleObjects synchronized on this
- // handle or not.
- GTEST_DEATH_TEST_CHECK_(
- WAIT_OBJECT_0 == ::WaitForSingleObject(child_handle_.Get(),
- INFINITE));
- DWORD status_code;
- GTEST_DEATH_TEST_CHECK_(
- ::GetExitCodeProcess(child_handle_.Get(), &status_code) != FALSE);
- child_handle_.Reset();
- set_status(static_cast<int>(status_code));
- return status();
-}
-
-// The AssumeRole process for a Windows death test. It creates a child
-// process with the same executable as the current process to run the
-// death test. The child process is given the --gtest_filter and
-// --gtest_internal_run_death_test flags such that it knows to run the
-// current death test only.
-DeathTest::TestRole WindowsDeathTest::AssumeRole() {
- const UnitTestImpl* const impl = GetUnitTestImpl();
- const InternalRunDeathTestFlag* const flag =
- impl->internal_run_death_test_flag();
- const TestInfo* const info = impl->current_test_info();
- const int death_test_index = info->result()->death_test_count();
-
- if (flag != NULL) {
- // ParseInternalRunDeathTestFlag() has performed all the necessary
- // processing.
- set_write_fd(flag->write_fd());
- return EXECUTE_TEST;
- }
-
- // WindowsDeathTest uses an anonymous pipe to communicate results of
- // a death test.
- SECURITY_ATTRIBUTES handles_are_inheritable = {
- sizeof(SECURITY_ATTRIBUTES), NULL, TRUE };
- HANDLE read_handle, write_handle;
- GTEST_DEATH_TEST_CHECK_(
- ::CreatePipe(&read_handle, &write_handle, &handles_are_inheritable,
- 0) // Default buffer size.
- != FALSE);
- set_read_fd(::_open_osfhandle(reinterpret_cast<intptr_t>(read_handle),
- O_RDONLY));
- write_handle_.Reset(write_handle);
- event_handle_.Reset(::CreateEvent(
- &handles_are_inheritable,
- TRUE, // The event will automatically reset to non-signaled state.
- FALSE, // The initial state is non-signalled.
- NULL)); // The even is unnamed.
- GTEST_DEATH_TEST_CHECK_(event_handle_.Get() != NULL);
- const std::string filter_flag =
- std::string("--") + GTEST_FLAG_PREFIX_ + kFilterFlag + "=" +
- info->test_case_name() + "." + info->name();
- const std::string internal_flag =
- std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag +
- "=" + file_ + "|" + StreamableToString(line_) + "|" +
- StreamableToString(death_test_index) + "|" +
- StreamableToString(static_cast<unsigned int>(::GetCurrentProcessId())) +
- // size_t has the same width as pointers on both 32-bit and 64-bit
- // Windows platforms.
- // See http://msdn.microsoft.com/en-us/library/tcxf1dw6.aspx.
- "|" + StreamableToString(reinterpret_cast<size_t>(write_handle)) +
- "|" + StreamableToString(reinterpret_cast<size_t>(event_handle_.Get()));
-
- char executable_path[_MAX_PATH + 1]; // NOLINT
- GTEST_DEATH_TEST_CHECK_(
- _MAX_PATH + 1 != ::GetModuleFileNameA(NULL,
- executable_path,
- _MAX_PATH));
-
- std::string command_line =
- std::string(::GetCommandLineA()) + " " + filter_flag + " \"" +
- internal_flag + "\"";
-
- DeathTest::set_last_death_test_message("");
-
- CaptureStderr();
- // Flush the log buffers since the log streams are shared with the child.
- FlushInfoLog();
-
- // The child process will share the standard handles with the parent.
- STARTUPINFOA startup_info;
- memset(&startup_info, 0, sizeof(STARTUPINFO));
- startup_info.dwFlags = STARTF_USESTDHANDLES;
- startup_info.hStdInput = ::GetStdHandle(STD_INPUT_HANDLE);
- startup_info.hStdOutput = ::GetStdHandle(STD_OUTPUT_HANDLE);
- startup_info.hStdError = ::GetStdHandle(STD_ERROR_HANDLE);
-
- PROCESS_INFORMATION process_info;
- GTEST_DEATH_TEST_CHECK_(::CreateProcessA(
- executable_path,
- const_cast<char*>(command_line.c_str()),
- NULL, // Retuned process handle is not inheritable.
- NULL, // Retuned thread handle is not inheritable.
- TRUE, // Child inherits all inheritable handles (for write_handle_).
- 0x0, // Default creation flags.
- NULL, // Inherit the parent's environment.
- UnitTest::GetInstance()->original_working_dir(),
- &startup_info,
- &process_info) != FALSE);
- child_handle_.Reset(process_info.hProcess);
- ::CloseHandle(process_info.hThread);
- set_spawned(true);
- return OVERSEE_TEST;
-}
-# else // We are not on Windows.
-
-// ForkingDeathTest provides implementations for most of the abstract
-// methods of the DeathTest interface. Only the AssumeRole method is
-// left undefined.
-class ForkingDeathTest : public DeathTestImpl {
- public:
- ForkingDeathTest(const char* statement, const RE* regex);
-
- // All of these virtual functions are inherited from DeathTest.
- virtual int Wait();
-
- protected:
- void set_child_pid(pid_t child_pid) { child_pid_ = child_pid; }
-
- private:
- // PID of child process during death test; 0 in the child process itself.
- pid_t child_pid_;
-};
-
-// Constructs a ForkingDeathTest.
-ForkingDeathTest::ForkingDeathTest(const char* a_statement, const RE* a_regex)
- : DeathTestImpl(a_statement, a_regex),
- child_pid_(-1) {}
-
-// Waits for the child in a death test to exit, returning its exit
-// status, or 0 if no child process exists. As a side effect, sets the
-// outcome data member.
-int ForkingDeathTest::Wait() {
- if (!spawned())
- return 0;
-
- ReadAndInterpretStatusByte();
-
- int status_value;
- GTEST_DEATH_TEST_CHECK_SYSCALL_(waitpid(child_pid_, &status_value, 0));
- set_status(status_value);
- return status_value;
-}
-
-// A concrete death test class that forks, then immediately runs the test
-// in the child process.
-class NoExecDeathTest : public ForkingDeathTest {
- public:
- NoExecDeathTest(const char* a_statement, const RE* a_regex) :
- ForkingDeathTest(a_statement, a_regex) { }
- virtual TestRole AssumeRole();
-};
-
-// The AssumeRole process for a fork-and-run death test. It implements a
-// straightforward fork, with a simple pipe to transmit the status byte.
-DeathTest::TestRole NoExecDeathTest::AssumeRole() {
- const size_t thread_count = GetThreadCount();
- if (thread_count != 1) {
- GTEST_LOG_(WARNING) << DeathTestThreadWarning(thread_count);
- }
-
- int pipe_fd[2];
- GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1);
-
- DeathTest::set_last_death_test_message("");
- CaptureStderr();
- // When we fork the process below, the log file buffers are copied, but the
- // file descriptors are shared. We flush all log files here so that closing
- // the file descriptors in the child process doesn't throw off the
- // synchronization between descriptors and buffers in the parent process.
- // This is as close to the fork as possible to avoid a race condition in case
- // there are multiple threads running before the death test, and another
- // thread writes to the log file.
- FlushInfoLog();
-
- const pid_t child_pid = fork();
- GTEST_DEATH_TEST_CHECK_(child_pid != -1);
- set_child_pid(child_pid);
- if (child_pid == 0) {
- GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[0]));
- set_write_fd(pipe_fd[1]);
- // Redirects all logging to stderr in the child process to prevent
- // concurrent writes to the log files. We capture stderr in the parent
- // process and append the child process' output to a log.
- LogToStderr();
- // Event forwarding to the listeners of event listener API mush be shut
- // down in death test subprocesses.
- GetUnitTestImpl()->listeners()->SuppressEventForwarding();
- g_in_fast_death_test_child = true;
- return EXECUTE_TEST;
- } else {
- GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1]));
- set_read_fd(pipe_fd[0]);
- set_spawned(true);
- return OVERSEE_TEST;
- }
-}
-
-// A concrete death test class that forks and re-executes the main
-// program from the beginning, with command-line flags set that cause
-// only this specific death test to be run.
-class ExecDeathTest : public ForkingDeathTest {
- public:
- ExecDeathTest(const char* a_statement, const RE* a_regex,
- const char* file, int line) :
- ForkingDeathTest(a_statement, a_regex), file_(file), line_(line) { }
- virtual TestRole AssumeRole();
- private:
- static ::std::vector<testing::internal::string>
- GetArgvsForDeathTestChildProcess() {
- ::std::vector<testing::internal::string> args = GetInjectableArgvs();
-# if defined(GTEST_EXTRA_DEATH_TEST_COMMAND_LINE_ARGS_)
- ::std::vector<testing::internal::string> extra_args =
- GTEST_EXTRA_DEATH_TEST_COMMAND_LINE_ARGS_();
- args.insert(args.end(), extra_args.begin(), extra_args.end());
-# endif // defined(GTEST_EXTRA_DEATH_TEST_COMMAND_LINE_ARGS_)
- return args;
- }
- // The name of the file in which the death test is located.
- const char* const file_;
- // The line number on which the death test is located.
- const int line_;
-};
-
-// Utility class for accumulating command-line arguments.
-class Arguments {
- public:
- Arguments() {
- args_.push_back(NULL);
- }
-
- ~Arguments() {
- for (std::vector<char*>::iterator i = args_.begin(); i != args_.end();
- ++i) {
- free(*i);
- }
- }
- void AddArgument(const char* argument) {
- args_.insert(args_.end() - 1, posix::StrDup(argument));
- }
-
- template <typename Str>
- void AddArguments(const ::std::vector<Str>& arguments) {
- for (typename ::std::vector<Str>::const_iterator i = arguments.begin();
- i != arguments.end();
- ++i) {
- args_.insert(args_.end() - 1, posix::StrDup(i->c_str()));
- }
- }
- char* const* Argv() {
- return &args_[0];
- }
-
- private:
- std::vector<char*> args_;
-};
-
-// A struct that encompasses the arguments to the child process of a
-// threadsafe-style death test process.
-struct ExecDeathTestArgs {
- char* const* argv; // Command-line arguments for the child's call to exec
- int close_fd; // File descriptor to close; the read end of a pipe
-};
-
-# if GTEST_OS_MAC
-inline char** GetEnviron() {
- // When Google Test is built as a framework on MacOS X, the environ variable
- // is unavailable. Apple's documentation (man environ) recommends using
- // _NSGetEnviron() instead.
- return *_NSGetEnviron();
-}
-# else
-// Some POSIX platforms expect you to declare environ. extern "C" makes
-// it reside in the global namespace.
-extern "C" char** environ;
-inline char** GetEnviron() { return environ; }
-# endif // GTEST_OS_MAC
-
-# if !GTEST_OS_QNX
-// The main function for a threadsafe-style death test child process.
-// This function is called in a clone()-ed process and thus must avoid
-// any potentially unsafe operations like malloc or libc functions.
-static int ExecDeathTestChildMain(void* child_arg) {
- ExecDeathTestArgs* const args = static_cast<ExecDeathTestArgs*>(child_arg);
- GTEST_DEATH_TEST_CHECK_SYSCALL_(close(args->close_fd));
-
- // We need to execute the test program in the same environment where
- // it was originally invoked. Therefore we change to the original
- // working directory first.
- const char* const original_dir =
- UnitTest::GetInstance()->original_working_dir();
- // We can safely call chdir() as it's a direct system call.
- if (chdir(original_dir) != 0) {
- DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " +
- GetLastErrnoDescription());
- return EXIT_FAILURE;
- }
-
- // We can safely call execve() as it's a direct system call. We
- // cannot use execvp() as it's a libc function and thus potentially
- // unsafe. Since execve() doesn't search the PATH, the user must
- // invoke the test program via a valid path that contains at least
- // one path separator.
- execve(args->argv[0], args->argv, GetEnviron());
- DeathTestAbort(std::string("execve(") + args->argv[0] + ", ...) in " +
- original_dir + " failed: " +
- GetLastErrnoDescription());
- return EXIT_FAILURE;
-}
-# endif // !GTEST_OS_QNX
-
-// Two utility routines that together determine the direction the stack
-// grows.
-// This could be accomplished more elegantly by a single recursive
-// function, but we want to guard against the unlikely possibility of
-// a smart compiler optimizing the recursion away.
-//
-// GTEST_NO_INLINE_ is required to prevent GCC 4.6 from inlining
-// StackLowerThanAddress into StackGrowsDown, which then doesn't give
-// correct answer.
-void StackLowerThanAddress(const void* ptr, bool* result) GTEST_NO_INLINE_;
-void StackLowerThanAddress(const void* ptr, bool* result) {
- int dummy;
- *result = (&dummy < ptr);
-}
-
-// Make sure AddressSanitizer does not tamper with the stack here.
-GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
-bool StackGrowsDown() {
- int dummy;
- bool result;
- StackLowerThanAddress(&dummy, &result);
- return result;
-}
-
-// Spawns a child process with the same executable as the current process in
-// a thread-safe manner and instructs it to run the death test. The
-// implementation uses fork(2) + exec. On systems where clone(2) is
-// available, it is used instead, being slightly more thread-safe. On QNX,
-// fork supports only single-threaded environments, so this function uses
-// spawn(2) there instead. The function dies with an error message if
-// anything goes wrong.
-static pid_t ExecDeathTestSpawnChild(char* const* argv, int close_fd) {
- ExecDeathTestArgs args = { argv, close_fd };
- pid_t child_pid = -1;
-
-# if GTEST_OS_QNX
- // Obtains the current directory and sets it to be closed in the child
- // process.
- const int cwd_fd = open(".", O_RDONLY);
- GTEST_DEATH_TEST_CHECK_(cwd_fd != -1);
- GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(cwd_fd, F_SETFD, FD_CLOEXEC));
- // We need to execute the test program in the same environment where
- // it was originally invoked. Therefore we change to the original
- // working directory first.
- const char* const original_dir =
- UnitTest::GetInstance()->original_working_dir();
- // We can safely call chdir() as it's a direct system call.
- if (chdir(original_dir) != 0) {
- DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " +
- GetLastErrnoDescription());
- return EXIT_FAILURE;
- }
-
- int fd_flags;
- // Set close_fd to be closed after spawn.
- GTEST_DEATH_TEST_CHECK_SYSCALL_(fd_flags = fcntl(close_fd, F_GETFD));
- GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(close_fd, F_SETFD,
- fd_flags | FD_CLOEXEC));
- struct inheritance inherit = {0};
- // spawn is a system call.
- child_pid = spawn(args.argv[0], 0, NULL, &inherit, args.argv, GetEnviron());
- // Restores the current working directory.
- GTEST_DEATH_TEST_CHECK_(fchdir(cwd_fd) != -1);
- GTEST_DEATH_TEST_CHECK_SYSCALL_(close(cwd_fd));
-
-# else // GTEST_OS_QNX
-# if GTEST_OS_LINUX
- // When a SIGPROF signal is received while fork() or clone() are executing,
- // the process may hang. To avoid this, we ignore SIGPROF here and re-enable
- // it after the call to fork()/clone() is complete.
- struct sigaction saved_sigprof_action;
- struct sigaction ignore_sigprof_action;
- memset(&ignore_sigprof_action, 0, sizeof(ignore_sigprof_action));
- sigemptyset(&ignore_sigprof_action.sa_mask);
- ignore_sigprof_action.sa_handler = SIG_IGN;
- GTEST_DEATH_TEST_CHECK_SYSCALL_(sigaction(
- SIGPROF, &ignore_sigprof_action, &saved_sigprof_action));
-# endif // GTEST_OS_LINUX
-
-# if GTEST_HAS_CLONE
- const bool use_fork = GTEST_FLAG(death_test_use_fork);
-
- if (!use_fork) {
- static const bool stack_grows_down = StackGrowsDown();
- const size_t stack_size = getpagesize();
- // MMAP_ANONYMOUS is not defined on Mac, so we use MAP_ANON instead.
- void* const stack = mmap(NULL, stack_size, PROT_READ | PROT_WRITE,
- MAP_ANON | MAP_PRIVATE, -1, 0);
- GTEST_DEATH_TEST_CHECK_(stack != MAP_FAILED);
-
- // Maximum stack alignment in bytes: For a downward-growing stack, this
- // amount is subtracted from size of the stack space to get an address
- // that is within the stack space and is aligned on all systems we care
- // about. As far as I know there is no ABI with stack alignment greater
- // than 64. We assume stack and stack_size already have alignment of
- // kMaxStackAlignment.
- const size_t kMaxStackAlignment = 64;
- void* const stack_top =
- static_cast<char*>(stack) +
- (stack_grows_down ? stack_size - kMaxStackAlignment : 0);
- GTEST_DEATH_TEST_CHECK_(stack_size > kMaxStackAlignment &&
- reinterpret_cast<intptr_t>(stack_top) % kMaxStackAlignment == 0);
-
- child_pid = clone(&ExecDeathTestChildMain, stack_top, SIGCHLD, &args);
-
- GTEST_DEATH_TEST_CHECK_(munmap(stack, stack_size) != -1);
- }
-# else
- const bool use_fork = true;
-# endif // GTEST_HAS_CLONE
-
- if (use_fork && (child_pid = fork()) == 0) {
- ExecDeathTestChildMain(&args);
- _exit(0);
- }
-# endif // GTEST_OS_QNX
-# if GTEST_OS_LINUX
- GTEST_DEATH_TEST_CHECK_SYSCALL_(
- sigaction(SIGPROF, &saved_sigprof_action, NULL));
-# endif // GTEST_OS_LINUX
-
- GTEST_DEATH_TEST_CHECK_(child_pid != -1);
- return child_pid;
-}
-
-// The AssumeRole process for a fork-and-exec death test. It re-executes the
-// main program from the beginning, setting the --gtest_filter
-// and --gtest_internal_run_death_test flags to cause only the current
-// death test to be re-run.
-DeathTest::TestRole ExecDeathTest::AssumeRole() {
- const UnitTestImpl* const impl = GetUnitTestImpl();
- const InternalRunDeathTestFlag* const flag =
- impl->internal_run_death_test_flag();
- const TestInfo* const info = impl->current_test_info();
- const int death_test_index = info->result()->death_test_count();
-
- if (flag != NULL) {
- set_write_fd(flag->write_fd());
- return EXECUTE_TEST;
- }
-
- int pipe_fd[2];
- GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1);
- // Clear the close-on-exec flag on the write end of the pipe, lest
- // it be closed when the child process does an exec:
- GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1);
-
- const std::string filter_flag =
- std::string("--") + GTEST_FLAG_PREFIX_ + kFilterFlag + "="
- + info->test_case_name() + "." + info->name();
- const std::string internal_flag =
- std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + "="
- + file_ + "|" + StreamableToString(line_) + "|"
- + StreamableToString(death_test_index) + "|"
- + StreamableToString(pipe_fd[1]);
- Arguments args;
- args.AddArguments(GetArgvsForDeathTestChildProcess());
- args.AddArgument(filter_flag.c_str());
- args.AddArgument(internal_flag.c_str());
-
- DeathTest::set_last_death_test_message("");
-
- CaptureStderr();
- // See the comment in NoExecDeathTest::AssumeRole for why the next line
- // is necessary.
- FlushInfoLog();
-
- const pid_t child_pid = ExecDeathTestSpawnChild(args.Argv(), pipe_fd[0]);
- GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1]));
- set_child_pid(child_pid);
- set_read_fd(pipe_fd[0]);
- set_spawned(true);
- return OVERSEE_TEST;
-}
-
-# endif // !GTEST_OS_WINDOWS
-
-// Creates a concrete DeathTest-derived class that depends on the
-// --gtest_death_test_style flag, and sets the pointer pointed to
-// by the "test" argument to its address. If the test should be
-// skipped, sets that pointer to NULL. Returns true, unless the
-// flag is set to an invalid value.
-bool DefaultDeathTestFactory::Create(const char* statement, const RE* regex,
- const char* file, int line,
- DeathTest** test) {
- UnitTestImpl* const impl = GetUnitTestImpl();
- const InternalRunDeathTestFlag* const flag =
- impl->internal_run_death_test_flag();
- const int death_test_index = impl->current_test_info()
- ->increment_death_test_count();
-
- if (flag != NULL) {
- if (death_test_index > flag->index()) {
- DeathTest::set_last_death_test_message(
- "Death test count (" + StreamableToString(death_test_index)
- + ") somehow exceeded expected maximum ("
- + StreamableToString(flag->index()) + ")");
- return false;
- }
-
- if (!(flag->file() == file && flag->line() == line &&
- flag->index() == death_test_index)) {
- *test = NULL;
- return true;
- }
- }
-
-# if GTEST_OS_WINDOWS
-
- if (GTEST_FLAG(death_test_style) == "threadsafe" ||
- GTEST_FLAG(death_test_style) == "fast") {
- *test = new WindowsDeathTest(statement, regex, file, line);
- }
-
-# else
-
- if (GTEST_FLAG(death_test_style) == "threadsafe") {
- *test = new ExecDeathTest(statement, regex, file, line);
- } else if (GTEST_FLAG(death_test_style) == "fast") {
- *test = new NoExecDeathTest(statement, regex);
- }
-
-# endif // GTEST_OS_WINDOWS
-
- else { // NOLINT - this is more readable than unbalanced brackets inside #if.
- DeathTest::set_last_death_test_message(
- "Unknown death test style \"" + GTEST_FLAG(death_test_style)
- + "\" encountered");
- return false;
- }
-
- return true;
-}
-
-# if GTEST_OS_WINDOWS
-// Recreates the pipe and event handles from the provided parameters,
-// signals the event, and returns a file descriptor wrapped around the pipe
-// handle. This function is called in the child process only.
-int GetStatusFileDescriptor(unsigned int parent_process_id,
- size_t write_handle_as_size_t,
- size_t event_handle_as_size_t) {
- AutoHandle parent_process_handle(::OpenProcess(PROCESS_DUP_HANDLE,
- FALSE, // Non-inheritable.
- parent_process_id));
- if (parent_process_handle.Get() == INVALID_HANDLE_VALUE) {
- DeathTestAbort("Unable to open parent process " +
- StreamableToString(parent_process_id));
- }
-
- // TODO(vladl@google.com): Replace the following check with a
- // compile-time assertion when available.
- GTEST_CHECK_(sizeof(HANDLE) <= sizeof(size_t));
-
- const HANDLE write_handle =
- reinterpret_cast<HANDLE>(write_handle_as_size_t);
- HANDLE dup_write_handle;
-
- // The newly initialized handle is accessible only in in the parent
- // process. To obtain one accessible within the child, we need to use
- // DuplicateHandle.
- if (!::DuplicateHandle(parent_process_handle.Get(), write_handle,
- ::GetCurrentProcess(), &dup_write_handle,
- 0x0, // Requested privileges ignored since
- // DUPLICATE_SAME_ACCESS is used.
- FALSE, // Request non-inheritable handler.
- DUPLICATE_SAME_ACCESS)) {
- DeathTestAbort("Unable to duplicate the pipe handle " +
- StreamableToString(write_handle_as_size_t) +
- " from the parent process " +
- StreamableToString(parent_process_id));
- }
-
- const HANDLE event_handle = reinterpret_cast<HANDLE>(event_handle_as_size_t);
- HANDLE dup_event_handle;
-
- if (!::DuplicateHandle(parent_process_handle.Get(), event_handle,
- ::GetCurrentProcess(), &dup_event_handle,
- 0x0,
- FALSE,
- DUPLICATE_SAME_ACCESS)) {
- DeathTestAbort("Unable to duplicate the event handle " +
- StreamableToString(event_handle_as_size_t) +
- " from the parent process " +
- StreamableToString(parent_process_id));
- }
-
- const int write_fd =
- ::_open_osfhandle(reinterpret_cast<intptr_t>(dup_write_handle), O_APPEND);
- if (write_fd == -1) {
- DeathTestAbort("Unable to convert pipe handle " +
- StreamableToString(write_handle_as_size_t) +
- " to a file descriptor");
- }
-
- // Signals the parent that the write end of the pipe has been acquired
- // so the parent can release its own write end.
- ::SetEvent(dup_event_handle);
-
- return write_fd;
-}
-# endif // GTEST_OS_WINDOWS
-
-// Returns a newly created InternalRunDeathTestFlag object with fields
-// initialized from the GTEST_FLAG(internal_run_death_test) flag if
-// the flag is specified; otherwise returns NULL.
-InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag() {
- if (GTEST_FLAG(internal_run_death_test) == "") return NULL;
-
- // GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we
- // can use it here.
- int line = -1;
- int index = -1;
- ::std::vector< ::std::string> fields;
- SplitString(GTEST_FLAG(internal_run_death_test).c_str(), '|', &fields);
- int write_fd = -1;
-
-# if GTEST_OS_WINDOWS
-
- unsigned int parent_process_id = 0;
- size_t write_handle_as_size_t = 0;
- size_t event_handle_as_size_t = 0;
-
- if (fields.size() != 6
- || !ParseNaturalNumber(fields[1], &line)
- || !ParseNaturalNumber(fields[2], &index)
- || !ParseNaturalNumber(fields[3], &parent_process_id)
- || !ParseNaturalNumber(fields[4], &write_handle_as_size_t)
- || !ParseNaturalNumber(fields[5], &event_handle_as_size_t)) {
- DeathTestAbort("Bad --gtest_internal_run_death_test flag: " +
- GTEST_FLAG(internal_run_death_test));
- }
- write_fd = GetStatusFileDescriptor(parent_process_id,
- write_handle_as_size_t,
- event_handle_as_size_t);
-# else
-
- if (fields.size() != 4
- || !ParseNaturalNumber(fields[1], &line)
- || !ParseNaturalNumber(fields[2], &index)
- || !ParseNaturalNumber(fields[3], &write_fd)) {
- DeathTestAbort("Bad --gtest_internal_run_death_test flag: "
- + GTEST_FLAG(internal_run_death_test));
- }
-
-# endif // GTEST_OS_WINDOWS
-
- return new InternalRunDeathTestFlag(fields[0], line, index, write_fd);
-}
-
-} // namespace internal
-
-#endif // GTEST_HAS_DEATH_TEST
-
-} // namespace testing
diff --git a/test/gtest/src/gtest-filepath.cc b/test/gtest/src/gtest-filepath.cc
deleted file mode 100644
index 0292dc1..0000000
--- a/test/gtest/src/gtest-filepath.cc
+++ /dev/null
@@ -1,387 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: keith.ray@gmail.com (Keith Ray)
-
-#include "gtest/gtest-message.h"
-#include "gtest/internal/gtest-filepath.h"
-#include "gtest/internal/gtest-port.h"
-
-#include <stdlib.h>
-
-#if GTEST_OS_WINDOWS_MOBILE
-# include <windows.h>
-#elif GTEST_OS_WINDOWS
-# include <direct.h>
-# include <io.h>
-#elif GTEST_OS_SYMBIAN
-// Symbian OpenC has PATH_MAX in sys/syslimits.h
-# include <sys/syslimits.h>
-#else
-# include <limits.h>
-# include <climits> // Some Linux distributions define PATH_MAX here.
-#endif // GTEST_OS_WINDOWS_MOBILE
-
-#if GTEST_OS_WINDOWS
-# define GTEST_PATH_MAX_ _MAX_PATH
-#elif defined(PATH_MAX)
-# define GTEST_PATH_MAX_ PATH_MAX
-#elif defined(_XOPEN_PATH_MAX)
-# define GTEST_PATH_MAX_ _XOPEN_PATH_MAX
-#else
-# define GTEST_PATH_MAX_ _POSIX_PATH_MAX
-#endif // GTEST_OS_WINDOWS
-
-#include "gtest/internal/gtest-string.h"
-
-namespace testing {
-namespace internal {
-
-#if GTEST_OS_WINDOWS
-// On Windows, '\\' is the standard path separator, but many tools and the
-// Windows API also accept '/' as an alternate path separator. Unless otherwise
-// noted, a file path can contain either kind of path separators, or a mixture
-// of them.
-const char kPathSeparator = '\\';
-const char kAlternatePathSeparator = '/';
-const char kAlternatePathSeparatorString[] = "/";
-# if GTEST_OS_WINDOWS_MOBILE
-// Windows CE doesn't have a current directory. You should not use
-// the current directory in tests on Windows CE, but this at least
-// provides a reasonable fallback.
-const char kCurrentDirectoryString[] = "\\";
-// Windows CE doesn't define INVALID_FILE_ATTRIBUTES
-const DWORD kInvalidFileAttributes = 0xffffffff;
-# else
-const char kCurrentDirectoryString[] = ".\\";
-# endif // GTEST_OS_WINDOWS_MOBILE
-#else
-const char kPathSeparator = '/';
-const char kCurrentDirectoryString[] = "./";
-#endif // GTEST_OS_WINDOWS
-
-// Returns whether the given character is a valid path separator.
-static bool IsPathSeparator(char c) {
-#if GTEST_HAS_ALT_PATH_SEP_
- return (c == kPathSeparator) || (c == kAlternatePathSeparator);
-#else
- return c == kPathSeparator;
-#endif
-}
-
-// Returns the current working directory, or "" if unsuccessful.
-FilePath FilePath::GetCurrentDir() {
-#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT
- // Windows CE doesn't have a current directory, so we just return
- // something reasonable.
- return FilePath(kCurrentDirectoryString);
-#elif GTEST_OS_WINDOWS
- char cwd[GTEST_PATH_MAX_ + 1] = { '\0' };
- return FilePath(_getcwd(cwd, sizeof(cwd)) == NULL ? "" : cwd);
-#else
- char cwd[GTEST_PATH_MAX_ + 1] = { '\0' };
- char* result = getcwd(cwd, sizeof(cwd));
-# if GTEST_OS_NACL
- // getcwd will likely fail in NaCl due to the sandbox, so return something
- // reasonable. The user may have provided a shim implementation for getcwd,
- // however, so fallback only when failure is detected.
- return FilePath(result == NULL ? kCurrentDirectoryString : cwd);
-# endif // GTEST_OS_NACL
- return FilePath(result == NULL ? "" : cwd);
-#endif // GTEST_OS_WINDOWS_MOBILE
-}
-
-// Returns a copy of the FilePath with the case-insensitive extension removed.
-// Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns
-// FilePath("dir/file"). If a case-insensitive extension is not
-// found, returns a copy of the original FilePath.
-FilePath FilePath::RemoveExtension(const char* extension) const {
- const std::string dot_extension = std::string(".") + extension;
- if (String::EndsWithCaseInsensitive(pathname_, dot_extension)) {
- return FilePath(pathname_.substr(
- 0, pathname_.length() - dot_extension.length()));
- }
- return *this;
-}
-
-// Returns a pointer to the last occurence of a valid path separator in
-// the FilePath. On Windows, for example, both '/' and '\' are valid path
-// separators. Returns NULL if no path separator was found.
-const char* FilePath::FindLastPathSeparator() const {
- const char* const last_sep = strrchr(c_str(), kPathSeparator);
-#if GTEST_HAS_ALT_PATH_SEP_
- const char* const last_alt_sep = strrchr(c_str(), kAlternatePathSeparator);
- // Comparing two pointers of which only one is NULL is undefined.
- if (last_alt_sep != NULL &&
- (last_sep == NULL || last_alt_sep > last_sep)) {
- return last_alt_sep;
- }
-#endif
- return last_sep;
-}
-
-// Returns a copy of the FilePath with the directory part removed.
-// Example: FilePath("path/to/file").RemoveDirectoryName() returns
-// FilePath("file"). If there is no directory part ("just_a_file"), it returns
-// the FilePath unmodified. If there is no file part ("just_a_dir/") it
-// returns an empty FilePath ("").
-// On Windows platform, '\' is the path separator, otherwise it is '/'.
-FilePath FilePath::RemoveDirectoryName() const {
- const char* const last_sep = FindLastPathSeparator();
- return last_sep ? FilePath(last_sep + 1) : *this;
-}
-
-// RemoveFileName returns the directory path with the filename removed.
-// Example: FilePath("path/to/file").RemoveFileName() returns "path/to/".
-// If the FilePath is "a_file" or "/a_file", RemoveFileName returns
-// FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does
-// not have a file, like "just/a/dir/", it returns the FilePath unmodified.
-// On Windows platform, '\' is the path separator, otherwise it is '/'.
-FilePath FilePath::RemoveFileName() const {
- const char* const last_sep = FindLastPathSeparator();
- std::string dir;
- if (last_sep) {
- dir = std::string(c_str(), last_sep + 1 - c_str());
- } else {
- dir = kCurrentDirectoryString;
- }
- return FilePath(dir);
-}
-
-// Helper functions for naming files in a directory for xml output.
-
-// Given directory = "dir", base_name = "test", number = 0,
-// extension = "xml", returns "dir/test.xml". If number is greater
-// than zero (e.g., 12), returns "dir/test_12.xml".
-// On Windows platform, uses \ as the separator rather than /.
-FilePath FilePath::MakeFileName(const FilePath& directory,
- const FilePath& base_name,
- int number,
- const char* extension) {
- std::string file;
- if (number == 0) {
- file = base_name.string() + "." + extension;
- } else {
- file = base_name.string() + "_" + StreamableToString(number)
- + "." + extension;
- }
- return ConcatPaths(directory, FilePath(file));
-}
-
-// Given directory = "dir", relative_path = "test.xml", returns "dir/test.xml".
-// On Windows, uses \ as the separator rather than /.
-FilePath FilePath::ConcatPaths(const FilePath& directory,
- const FilePath& relative_path) {
- if (directory.IsEmpty())
- return relative_path;
- const FilePath dir(directory.RemoveTrailingPathSeparator());
- return FilePath(dir.string() + kPathSeparator + relative_path.string());
-}
-
-// Returns true if pathname describes something findable in the file-system,
-// either a file, directory, or whatever.
-bool FilePath::FileOrDirectoryExists() const {
-#if GTEST_OS_WINDOWS_MOBILE
- LPCWSTR unicode = String::AnsiToUtf16(pathname_.c_str());
- const DWORD attributes = GetFileAttributes(unicode);
- delete [] unicode;
- return attributes != kInvalidFileAttributes;
-#else
- posix::StatStruct file_stat;
- return posix::Stat(pathname_.c_str(), &file_stat) == 0;
-#endif // GTEST_OS_WINDOWS_MOBILE
-}
-
-// Returns true if pathname describes a directory in the file-system
-// that exists.
-bool FilePath::DirectoryExists() const {
- bool result = false;
-#if GTEST_OS_WINDOWS
- // Don't strip off trailing separator if path is a root directory on
- // Windows (like "C:\\").
- const FilePath& path(IsRootDirectory() ? *this :
- RemoveTrailingPathSeparator());
-#else
- const FilePath& path(*this);
-#endif
-
-#if GTEST_OS_WINDOWS_MOBILE
- LPCWSTR unicode = String::AnsiToUtf16(path.c_str());
- const DWORD attributes = GetFileAttributes(unicode);
- delete [] unicode;
- if ((attributes != kInvalidFileAttributes) &&
- (attributes & FILE_ATTRIBUTE_DIRECTORY)) {
- result = true;
- }
-#else
- posix::StatStruct file_stat;
- result = posix::Stat(path.c_str(), &file_stat) == 0 &&
- posix::IsDir(file_stat);
-#endif // GTEST_OS_WINDOWS_MOBILE
-
- return result;
-}
-
-// Returns true if pathname describes a root directory. (Windows has one
-// root directory per disk drive.)
-bool FilePath::IsRootDirectory() const {
-#if GTEST_OS_WINDOWS
- // TODO(wan@google.com): on Windows a network share like
- // \\server\share can be a root directory, although it cannot be the
- // current directory. Handle this properly.
- return pathname_.length() == 3 && IsAbsolutePath();
-#else
- return pathname_.length() == 1 && IsPathSeparator(pathname_.c_str()[0]);
-#endif
-}
-
-// Returns true if pathname describes an absolute path.
-bool FilePath::IsAbsolutePath() const {
- const char* const name = pathname_.c_str();
-#if GTEST_OS_WINDOWS
- return pathname_.length() >= 3 &&
- ((name[0] >= 'a' && name[0] <= 'z') ||
- (name[0] >= 'A' && name[0] <= 'Z')) &&
- name[1] == ':' &&
- IsPathSeparator(name[2]);
-#else
- return IsPathSeparator(name[0]);
-#endif
-}
-
-// Returns a pathname for a file that does not currently exist. The pathname
-// will be directory/base_name.extension or
-// directory/base_name_<number>.extension if directory/base_name.extension
-// already exists. The number will be incremented until a pathname is found
-// that does not already exist.
-// Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'.
-// There could be a race condition if two or more processes are calling this
-// function at the same time -- they could both pick the same filename.
-FilePath FilePath::GenerateUniqueFileName(const FilePath& directory,
- const FilePath& base_name,
- const char* extension) {
- FilePath full_pathname;
- int number = 0;
- do {
- full_pathname.Set(MakeFileName(directory, base_name, number++, extension));
- } while (full_pathname.FileOrDirectoryExists());
- return full_pathname;
-}
-
-// Returns true if FilePath ends with a path separator, which indicates that
-// it is intended to represent a directory. Returns false otherwise.
-// This does NOT check that a directory (or file) actually exists.
-bool FilePath::IsDirectory() const {
- return !pathname_.empty() &&
- IsPathSeparator(pathname_.c_str()[pathname_.length() - 1]);
-}
-
-// Create directories so that path exists. Returns true if successful or if
-// the directories already exist; returns false if unable to create directories
-// for any reason.
-bool FilePath::CreateDirectoriesRecursively() const {
- if (!this->IsDirectory()) {
- return false;
- }
-
- if (pathname_.length() == 0 || this->DirectoryExists()) {
- return true;
- }
-
- const FilePath parent(this->RemoveTrailingPathSeparator().RemoveFileName());
- return parent.CreateDirectoriesRecursively() && this->CreateFolder();
-}
-
-// Create the directory so that path exists. Returns true if successful or
-// if the directory already exists; returns false if unable to create the
-// directory for any reason, including if the parent directory does not
-// exist. Not named "CreateDirectory" because that's a macro on Windows.
-bool FilePath::CreateFolder() const {
-#if GTEST_OS_WINDOWS_MOBILE
- FilePath removed_sep(this->RemoveTrailingPathSeparator());
- LPCWSTR unicode = String::AnsiToUtf16(removed_sep.c_str());
- int result = CreateDirectory(unicode, NULL) ? 0 : -1;
- delete [] unicode;
-#elif GTEST_OS_WINDOWS
- int result = _mkdir(pathname_.c_str());
-#else
- int result = mkdir(pathname_.c_str(), 0777);
-#endif // GTEST_OS_WINDOWS_MOBILE
-
- if (result == -1) {
- return this->DirectoryExists(); // An error is OK if the directory exists.
- }
- return true; // No error.
-}
-
-// If input name has a trailing separator character, remove it and return the
-// name, otherwise return the name string unmodified.
-// On Windows platform, uses \ as the separator, other platforms use /.
-FilePath FilePath::RemoveTrailingPathSeparator() const {
- return IsDirectory()
- ? FilePath(pathname_.substr(0, pathname_.length() - 1))
- : *this;
-}
-
-// Removes any redundant separators that might be in the pathname.
-// For example, "bar///foo" becomes "bar/foo". Does not eliminate other
-// redundancies that might be in a pathname involving "." or "..".
-// TODO(wan@google.com): handle Windows network shares (e.g. \\server\share).
-void FilePath::Normalize() {
- if (pathname_.c_str() == NULL) {
- pathname_ = "";
- return;
- }
- const char* src = pathname_.c_str();
- char* const dest = new char[pathname_.length() + 1];
- char* dest_ptr = dest;
- memset(dest_ptr, 0, pathname_.length() + 1);
-
- while (*src != '\0') {
- *dest_ptr = *src;
- if (!IsPathSeparator(*src)) {
- src++;
- } else {
-#if GTEST_HAS_ALT_PATH_SEP_
- if (*dest_ptr == kAlternatePathSeparator) {
- *dest_ptr = kPathSeparator;
- }
-#endif
- while (IsPathSeparator(*src))
- src++;
- }
- dest_ptr++;
- }
- *dest_ptr = '\0';
- pathname_ = dest;
- delete[] dest;
-}
-
-} // namespace internal
-} // namespace testing
diff --git a/test/gtest/src/gtest-internal-inl.h b/test/gtest/src/gtest-internal-inl.h
deleted file mode 100644
index ed8a682..0000000
--- a/test/gtest/src/gtest-internal-inl.h
+++ /dev/null
@@ -1,1183 +0,0 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Utility functions and classes used by the Google C++ testing framework.
-//
-// Author: wan@google.com (Zhanyong Wan)
-//
-// This file contains purely Google Test's internal implementation. Please
-// DO NOT #INCLUDE IT IN A USER PROGRAM.
-
-#ifndef GTEST_SRC_GTEST_INTERNAL_INL_H_
-#define GTEST_SRC_GTEST_INTERNAL_INL_H_
-
-// GTEST_IMPLEMENTATION_ is defined to 1 iff the current translation unit is
-// part of Google Test's implementation; otherwise it's undefined.
-#if !GTEST_IMPLEMENTATION_
-// If this file is included from the user's code, just say no.
-# error "gtest-internal-inl.h is part of Google Test's internal implementation."
-# error "It must not be included except by Google Test itself."
-#endif // GTEST_IMPLEMENTATION_
-
-#ifndef _WIN32_WCE
-# include <errno.h>
-#endif // !_WIN32_WCE
-#include <stddef.h>
-#include <stdlib.h> // For strtoll/_strtoul64/malloc/free.
-#include <string.h> // For memmove.
-
-#include <algorithm>
-#include <string>
-#include <vector>
-
-#include "gtest/internal/gtest-port.h"
-
-#if GTEST_CAN_STREAM_RESULTS_
-# include <arpa/inet.h> // NOLINT
-# include <netdb.h> // NOLINT
-#endif
-
-#if GTEST_OS_WINDOWS
-# include <windows.h> // NOLINT
-#endif // GTEST_OS_WINDOWS
-
-#include "gtest/gtest.h" // NOLINT
-#include "gtest/gtest-spi.h"
-
-namespace testing {
-
-// Declares the flags.
-//
-// We don't want the users to modify this flag in the code, but want
-// Google Test's own unit tests to be able to access it. Therefore we
-// declare it here as opposed to in gtest.h.
-GTEST_DECLARE_bool_(death_test_use_fork);
-
-namespace internal {
-
-// The value of GetTestTypeId() as seen from within the Google Test
-// library. This is solely for testing GetTestTypeId().
-GTEST_API_ extern const TypeId kTestTypeIdInGoogleTest;
-
-// Names of the flags (needed for parsing Google Test flags).
-const char kAlsoRunDisabledTestsFlag[] = "also_run_disabled_tests";
-const char kBreakOnFailureFlag[] = "break_on_failure";
-const char kCatchExceptionsFlag[] = "catch_exceptions";
-const char kColorFlag[] = "color";
-const char kFilterFlag[] = "filter";
-const char kListTestsFlag[] = "list_tests";
-const char kOutputFlag[] = "output";
-const char kPrintTimeFlag[] = "print_time";
-const char kRandomSeedFlag[] = "random_seed";
-const char kRepeatFlag[] = "repeat";
-const char kShuffleFlag[] = "shuffle";
-const char kStackTraceDepthFlag[] = "stack_trace_depth";
-const char kStreamResultToFlag[] = "stream_result_to";
-const char kThrowOnFailureFlag[] = "throw_on_failure";
-const char kFlagfileFlag[] = "flagfile";
-
-// A valid random seed must be in [1, kMaxRandomSeed].
-const int kMaxRandomSeed = 99999;
-
-// g_help_flag is true iff the --help flag or an equivalent form is
-// specified on the command line.
-GTEST_API_ extern bool g_help_flag;
-
-// Returns the current time in milliseconds.
-GTEST_API_ TimeInMillis GetTimeInMillis();
-
-// Returns true iff Google Test should use colors in the output.
-GTEST_API_ bool ShouldUseColor(bool stdout_is_tty);
-
-// Formats the given time in milliseconds as seconds.
-GTEST_API_ std::string FormatTimeInMillisAsSeconds(TimeInMillis ms);
-
-// Converts the given time in milliseconds to a date string in the ISO 8601
-// format, without the timezone information. N.B.: due to the use the
-// non-reentrant localtime() function, this function is not thread safe. Do
-// not use it in any code that can be called from multiple threads.
-GTEST_API_ std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms);
-
-// Parses a string for an Int32 flag, in the form of "--flag=value".
-//
-// On success, stores the value of the flag in *value, and returns
-// true. On failure, returns false without changing *value.
-GTEST_API_ bool ParseInt32Flag(
- const char* str, const char* flag, Int32* value);
-
-// Returns a random seed in range [1, kMaxRandomSeed] based on the
-// given --gtest_random_seed flag value.
-inline int GetRandomSeedFromFlag(Int32 random_seed_flag) {
- const unsigned int raw_seed = (random_seed_flag == 0) ?
- static_cast<unsigned int>(GetTimeInMillis()) :
- static_cast<unsigned int>(random_seed_flag);
-
- // Normalizes the actual seed to range [1, kMaxRandomSeed] such that
- // it's easy to type.
- const int normalized_seed =
- static_cast<int>((raw_seed - 1U) %
- static_cast<unsigned int>(kMaxRandomSeed)) + 1;
- return normalized_seed;
-}
-
-// Returns the first valid random seed after 'seed'. The behavior is
-// undefined if 'seed' is invalid. The seed after kMaxRandomSeed is
-// considered to be 1.
-inline int GetNextRandomSeed(int seed) {
- GTEST_CHECK_(1 <= seed && seed <= kMaxRandomSeed)
- << "Invalid random seed " << seed << " - must be in [1, "
- << kMaxRandomSeed << "].";
- const int next_seed = seed + 1;
- return (next_seed > kMaxRandomSeed) ? 1 : next_seed;
-}
-
-// This class saves the values of all Google Test flags in its c'tor, and
-// restores them in its d'tor.
-class GTestFlagSaver {
- public:
- // The c'tor.
- GTestFlagSaver() {
- also_run_disabled_tests_ = GTEST_FLAG(also_run_disabled_tests);
- break_on_failure_ = GTEST_FLAG(break_on_failure);
- catch_exceptions_ = GTEST_FLAG(catch_exceptions);
- color_ = GTEST_FLAG(color);
- death_test_style_ = GTEST_FLAG(death_test_style);
- death_test_use_fork_ = GTEST_FLAG(death_test_use_fork);
- filter_ = GTEST_FLAG(filter);
- internal_run_death_test_ = GTEST_FLAG(internal_run_death_test);
- list_tests_ = GTEST_FLAG(list_tests);
- output_ = GTEST_FLAG(output);
- print_time_ = GTEST_FLAG(print_time);
- random_seed_ = GTEST_FLAG(random_seed);
- repeat_ = GTEST_FLAG(repeat);
- shuffle_ = GTEST_FLAG(shuffle);
- stack_trace_depth_ = GTEST_FLAG(stack_trace_depth);
- stream_result_to_ = GTEST_FLAG(stream_result_to);
- throw_on_failure_ = GTEST_FLAG(throw_on_failure);
- }
-
- // The d'tor is not virtual. DO NOT INHERIT FROM THIS CLASS.
- ~GTestFlagSaver() {
- GTEST_FLAG(also_run_disabled_tests) = also_run_disabled_tests_;
- GTEST_FLAG(break_on_failure) = break_on_failure_;
- GTEST_FLAG(catch_exceptions) = catch_exceptions_;
- GTEST_FLAG(color) = color_;
- GTEST_FLAG(death_test_style) = death_test_style_;
- GTEST_FLAG(death_test_use_fork) = death_test_use_fork_;
- GTEST_FLAG(filter) = filter_;
- GTEST_FLAG(internal_run_death_test) = internal_run_death_test_;
- GTEST_FLAG(list_tests) = list_tests_;
- GTEST_FLAG(output) = output_;
- GTEST_FLAG(print_time) = print_time_;
- GTEST_FLAG(random_seed) = random_seed_;
- GTEST_FLAG(repeat) = repeat_;
- GTEST_FLAG(shuffle) = shuffle_;
- GTEST_FLAG(stack_trace_depth) = stack_trace_depth_;
- GTEST_FLAG(stream_result_to) = stream_result_to_;
- GTEST_FLAG(throw_on_failure) = throw_on_failure_;
- }
-
- private:
- // Fields for saving the original values of flags.
- bool also_run_disabled_tests_;
- bool break_on_failure_;
- bool catch_exceptions_;
- std::string color_;
- std::string death_test_style_;
- bool death_test_use_fork_;
- std::string filter_;
- std::string internal_run_death_test_;
- bool list_tests_;
- std::string output_;
- bool print_time_;
- internal::Int32 random_seed_;
- internal::Int32 repeat_;
- bool shuffle_;
- internal::Int32 stack_trace_depth_;
- std::string stream_result_to_;
- bool throw_on_failure_;
-} GTEST_ATTRIBUTE_UNUSED_;
-
-// Converts a Unicode code point to a narrow string in UTF-8 encoding.
-// code_point parameter is of type UInt32 because wchar_t may not be
-// wide enough to contain a code point.
-// If the code_point is not a valid Unicode code point
-// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be converted
-// to "(Invalid Unicode 0xXXXXXXXX)".
-GTEST_API_ std::string CodePointToUtf8(UInt32 code_point);
-
-// Converts a wide string to a narrow string in UTF-8 encoding.
-// The wide string is assumed to have the following encoding:
-// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS)
-// UTF-32 if sizeof(wchar_t) == 4 (on Linux)
-// Parameter str points to a null-terminated wide string.
-// Parameter num_chars may additionally limit the number
-// of wchar_t characters processed. -1 is used when the entire string
-// should be processed.
-// If the string contains code points that are not valid Unicode code points
-// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output
-// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding
-// and contains invalid UTF-16 surrogate pairs, values in those pairs
-// will be encoded as individual Unicode characters from Basic Normal Plane.
-GTEST_API_ std::string WideStringToUtf8(const wchar_t* str, int num_chars);
-
-// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file
-// if the variable is present. If a file already exists at this location, this
-// function will write over it. If the variable is present, but the file cannot
-// be created, prints an error and exits.
-void WriteToShardStatusFileIfNeeded();
-
-// Checks whether sharding is enabled by examining the relevant
-// environment variable values. If the variables are present,
-// but inconsistent (e.g., shard_index >= total_shards), prints
-// an error and exits. If in_subprocess_for_death_test, sharding is
-// disabled because it must only be applied to the original test
-// process. Otherwise, we could filter out death tests we intended to execute.
-GTEST_API_ bool ShouldShard(const char* total_shards_str,
- const char* shard_index_str,
- bool in_subprocess_for_death_test);
-
-// Parses the environment variable var as an Int32. If it is unset,
-// returns default_val. If it is not an Int32, prints an error and
-// and aborts.
-GTEST_API_ Int32 Int32FromEnvOrDie(const char* env_var, Int32 default_val);
-
-// Given the total number of shards, the shard index, and the test id,
-// returns true iff the test should be run on this shard. The test id is
-// some arbitrary but unique non-negative integer assigned to each test
-// method. Assumes that 0 <= shard_index < total_shards.
-GTEST_API_ bool ShouldRunTestOnShard(
- int total_shards, int shard_index, int test_id);
-
-// STL container utilities.
-
-// Returns the number of elements in the given container that satisfy
-// the given predicate.
-template <class Container, typename Predicate>
-inline int CountIf(const Container& c, Predicate predicate) {
- // Implemented as an explicit loop since std::count_if() in libCstd on
- // Solaris has a non-standard signature.
- int count = 0;
- for (typename Container::const_iterator it = c.begin(); it != c.end(); ++it) {
- if (predicate(*it))
- ++count;
- }
- return count;
-}
-
-// Applies a function/functor to each element in the container.
-template <class Container, typename Functor>
-void ForEach(const Container& c, Functor functor) {
- std::for_each(c.begin(), c.end(), functor);
-}
-
-// Returns the i-th element of the vector, or default_value if i is not
-// in range [0, v.size()).
-template <typename E>
-inline E GetElementOr(const std::vector<E>& v, int i, E default_value) {
- return (i < 0 || i >= static_cast<int>(v.size())) ? default_value : v[i];
-}
-
-// Performs an in-place shuffle of a range of the vector's elements.
-// 'begin' and 'end' are element indices as an STL-style range;
-// i.e. [begin, end) are shuffled, where 'end' == size() means to
-// shuffle to the end of the vector.
-template <typename E>
-void ShuffleRange(internal::Random* random, int begin, int end,
- std::vector<E>* v) {
- const int size = static_cast<int>(v->size());
- GTEST_CHECK_(0 <= begin && begin <= size)
- << "Invalid shuffle range start " << begin << ": must be in range [0, "
- << size << "].";
- GTEST_CHECK_(begin <= end && end <= size)
- << "Invalid shuffle range finish " << end << ": must be in range ["
- << begin << ", " << size << "].";
-
- // Fisher-Yates shuffle, from
- // http://en.wikipedia.org/wiki/Fisher-Yates_shuffle
- for (int range_width = end - begin; range_width >= 2; range_width--) {
- const int last_in_range = begin + range_width - 1;
- const int selected = begin + random->Generate(range_width);
- std::swap((*v)[selected], (*v)[last_in_range]);
- }
-}
-
-// Performs an in-place shuffle of the vector's elements.
-template <typename E>
-inline void Shuffle(internal::Random* random, std::vector<E>* v) {
- ShuffleRange(random, 0, static_cast<int>(v->size()), v);
-}
-
-// A function for deleting an object. Handy for being used as a
-// functor.
-template <typename T>
-static void Delete(T* x) {
- delete x;
-}
-
-// A predicate that checks the key of a TestProperty against a known key.
-//
-// TestPropertyKeyIs is copyable.
-class TestPropertyKeyIs {
- public:
- // Constructor.
- //
- // TestPropertyKeyIs has NO default constructor.
- explicit TestPropertyKeyIs(const std::string& key) : key_(key) {}
-
- // Returns true iff the test name of test property matches on key_.
- bool operator()(const TestProperty& test_property) const {
- return test_property.key() == key_;
- }
-
- private:
- std::string key_;
-};
-
-// Class UnitTestOptions.
-//
-// This class contains functions for processing options the user
-// specifies when running the tests. It has only static members.
-//
-// In most cases, the user can specify an option using either an
-// environment variable or a command line flag. E.g. you can set the
-// test filter using either GTEST_FILTER or --gtest_filter. If both
-// the variable and the flag are present, the latter overrides the
-// former.
-class GTEST_API_ UnitTestOptions {
- public:
- // Functions for processing the gtest_output flag.
-
- // Returns the output format, or "" for normal printed output.
- static std::string GetOutputFormat();
-
- // Returns the absolute path of the requested output file, or the
- // default (test_detail.xml in the original working directory) if
- // none was explicitly specified.
- static std::string GetAbsolutePathToOutputFile();
-
- // Functions for processing the gtest_filter flag.
-
- // Returns true iff the wildcard pattern matches the string. The
- // first ':' or '\0' character in pattern marks the end of it.
- //
- // This recursive algorithm isn't very efficient, but is clear and
- // works well enough for matching test names, which are short.
- static bool PatternMatchesString(const char *pattern, const char *str);
-
- // Returns true iff the user-specified filter matches the test case
- // name and the test name.
- static bool FilterMatchesTest(const std::string &test_case_name,
- const std::string &test_name);
-
-#if GTEST_OS_WINDOWS
- // Function for supporting the gtest_catch_exception flag.
-
- // Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the
- // given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise.
- // This function is useful as an __except condition.
- static int GTestShouldProcessSEH(DWORD exception_code);
-#endif // GTEST_OS_WINDOWS
-
- // Returns true if "name" matches the ':' separated list of glob-style
- // filters in "filter".
- static bool MatchesFilter(const std::string& name, const char* filter);
-};
-
-// Returns the current application's name, removing directory path if that
-// is present. Used by UnitTestOptions::GetOutputFile.
-GTEST_API_ FilePath GetCurrentExecutableName();
-
-// The role interface for getting the OS stack trace as a string.
-class OsStackTraceGetterInterface {
- public:
- OsStackTraceGetterInterface() {}
- virtual ~OsStackTraceGetterInterface() {}
-
- // Returns the current OS stack trace as an std::string. Parameters:
- //
- // max_depth - the maximum number of stack frames to be included
- // in the trace.
- // skip_count - the number of top frames to be skipped; doesn't count
- // against max_depth.
- virtual string CurrentStackTrace(int max_depth, int skip_count) = 0;
-
- // UponLeavingGTest() should be called immediately before Google Test calls
- // user code. It saves some information about the current stack that
- // CurrentStackTrace() will use to find and hide Google Test stack frames.
- virtual void UponLeavingGTest() = 0;
-
- // This string is inserted in place of stack frames that are part of
- // Google Test's implementation.
- static const char* const kElidedFramesMarker;
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetterInterface);
-};
-
-// A working implementation of the OsStackTraceGetterInterface interface.
-class OsStackTraceGetter : public OsStackTraceGetterInterface {
- public:
- OsStackTraceGetter() {}
-
- virtual string CurrentStackTrace(int max_depth, int skip_count);
- virtual void UponLeavingGTest();
-
- private:
- GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetter);
-};
-
-// Information about a Google Test trace point.
-struct TraceInfo {
- const char* file;
- int line;
- std::string message;
-};
-
-// This is the default global test part result reporter used in UnitTestImpl.
-// This class should only be used by UnitTestImpl.
-class DefaultGlobalTestPartResultReporter
- : public TestPartResultReporterInterface {
- public:
- explicit DefaultGlobalTestPartResultReporter(UnitTestImpl* unit_test);
- // Implements the TestPartResultReporterInterface. Reports the test part
- // result in the current test.
- virtual void ReportTestPartResult(const TestPartResult& result);
-
- private:
- UnitTestImpl* const unit_test_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultGlobalTestPartResultReporter);
-};
-
-// This is the default per thread test part result reporter used in
-// UnitTestImpl. This class should only be used by UnitTestImpl.
-class DefaultPerThreadTestPartResultReporter
- : public TestPartResultReporterInterface {
- public:
- explicit DefaultPerThreadTestPartResultReporter(UnitTestImpl* unit_test);
- // Implements the TestPartResultReporterInterface. The implementation just
- // delegates to the current global test part result reporter of *unit_test_.
- virtual void ReportTestPartResult(const TestPartResult& result);
-
- private:
- UnitTestImpl* const unit_test_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultPerThreadTestPartResultReporter);
-};
-
-// The private implementation of the UnitTest class. We don't protect
-// the methods under a mutex, as this class is not accessible by a
-// user and the UnitTest class that delegates work to this class does
-// proper locking.
-class GTEST_API_ UnitTestImpl {
- public:
- explicit UnitTestImpl(UnitTest* parent);
- virtual ~UnitTestImpl();
-
- // There are two different ways to register your own TestPartResultReporter.
- // You can register your own repoter to listen either only for test results
- // from the current thread or for results from all threads.
- // By default, each per-thread test result repoter just passes a new
- // TestPartResult to the global test result reporter, which registers the
- // test part result for the currently running test.
-
- // Returns the global test part result reporter.
- TestPartResultReporterInterface* GetGlobalTestPartResultReporter();
-
- // Sets the global test part result reporter.
- void SetGlobalTestPartResultReporter(
- TestPartResultReporterInterface* reporter);
-
- // Returns the test part result reporter for the current thread.
- TestPartResultReporterInterface* GetTestPartResultReporterForCurrentThread();
-
- // Sets the test part result reporter for the current thread.
- void SetTestPartResultReporterForCurrentThread(
- TestPartResultReporterInterface* reporter);
-
- // Gets the number of successful test cases.
- int successful_test_case_count() const;
-
- // Gets the number of failed test cases.
- int failed_test_case_count() const;
-
- // Gets the number of all test cases.
- int total_test_case_count() const;
-
- // Gets the number of all test cases that contain at least one test
- // that should run.
- int test_case_to_run_count() const;
-
- // Gets the number of successful tests.
- int successful_test_count() const;
-
- // Gets the number of failed tests.
- int failed_test_count() const;
-
- // Gets the number of disabled tests that will be reported in the XML report.
- int reportable_disabled_test_count() const;
-
- // Gets the number of disabled tests.
- int disabled_test_count() const;
-
- // Gets the number of tests to be printed in the XML report.
- int reportable_test_count() const;
-
- // Gets the number of all tests.
- int total_test_count() const;
-
- // Gets the number of tests that should run.
- int test_to_run_count() const;
-
- // Gets the time of the test program start, in ms from the start of the
- // UNIX epoch.
- TimeInMillis start_timestamp() const { return start_timestamp_; }
-
- // Gets the elapsed time, in milliseconds.
- TimeInMillis elapsed_time() const { return elapsed_time_; }
-
- // Returns true iff the unit test passed (i.e. all test cases passed).
- bool Passed() const { return !Failed(); }
-
- // Returns true iff the unit test failed (i.e. some test case failed
- // or something outside of all tests failed).
- bool Failed() const {
- return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed();
- }
-
- // Gets the i-th test case among all the test cases. i can range from 0 to
- // total_test_case_count() - 1. If i is not in that range, returns NULL.
- const TestCase* GetTestCase(int i) const {
- const int index = GetElementOr(test_case_indices_, i, -1);
- return index < 0 ? NULL : test_cases_[i];
- }
-
- // Gets the i-th test case among all the test cases. i can range from 0 to
- // total_test_case_count() - 1. If i is not in that range, returns NULL.
- TestCase* GetMutableTestCase(int i) {
- const int index = GetElementOr(test_case_indices_, i, -1);
- return index < 0 ? NULL : test_cases_[index];
- }
-
- // Provides access to the event listener list.
- TestEventListeners* listeners() { return &listeners_; }
-
- // Returns the TestResult for the test that's currently running, or
- // the TestResult for the ad hoc test if no test is running.
- TestResult* current_test_result();
-
- // Returns the TestResult for the ad hoc test.
- const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; }
-
- // Sets the OS stack trace getter.
- //
- // Does nothing if the input and the current OS stack trace getter
- // are the same; otherwise, deletes the old getter and makes the
- // input the current getter.
- void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter);
-
- // Returns the current OS stack trace getter if it is not NULL;
- // otherwise, creates an OsStackTraceGetter, makes it the current
- // getter, and returns it.
- OsStackTraceGetterInterface* os_stack_trace_getter();
-
- // Returns the current OS stack trace as an std::string.
- //
- // The maximum number of stack frames to be included is specified by
- // the gtest_stack_trace_depth flag. The skip_count parameter
- // specifies the number of top frames to be skipped, which doesn't
- // count against the number of frames to be included.
- //
- // For example, if Foo() calls Bar(), which in turn calls
- // CurrentOsStackTraceExceptTop(1), Foo() will be included in the
- // trace but Bar() and CurrentOsStackTraceExceptTop() won't.
- std::string CurrentOsStackTraceExceptTop(int skip_count) GTEST_NO_INLINE_;
-
- // Finds and returns a TestCase with the given name. If one doesn't
- // exist, creates one and returns it.
- //
- // Arguments:
- //
- // test_case_name: name of the test case
- // type_param: the name of the test's type parameter, or NULL if
- // this is not a typed or a type-parameterized test.
- // set_up_tc: pointer to the function that sets up the test case
- // tear_down_tc: pointer to the function that tears down the test case
- TestCase* GetTestCase(const char* test_case_name,
- const char* type_param,
- Test::SetUpTestCaseFunc set_up_tc,
- Test::TearDownTestCaseFunc tear_down_tc);
-
- // Adds a TestInfo to the unit test.
- //
- // Arguments:
- //
- // set_up_tc: pointer to the function that sets up the test case
- // tear_down_tc: pointer to the function that tears down the test case
- // test_info: the TestInfo object
- void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc,
- Test::TearDownTestCaseFunc tear_down_tc,
- TestInfo* test_info) {
- // In order to support thread-safe death tests, we need to
- // remember the original working directory when the test program
- // was first invoked. We cannot do this in RUN_ALL_TESTS(), as
- // the user may have changed the current directory before calling
- // RUN_ALL_TESTS(). Therefore we capture the current directory in
- // AddTestInfo(), which is called to register a TEST or TEST_F
- // before main() is reached.
- if (original_working_dir_.IsEmpty()) {
- original_working_dir_.Set(FilePath::GetCurrentDir());
- GTEST_CHECK_(!original_working_dir_.IsEmpty())
- << "Failed to get the current working directory.";
- }
-
- GetTestCase(test_info->test_case_name(),
- test_info->type_param(),
- set_up_tc,
- tear_down_tc)->AddTestInfo(test_info);
- }
-
-#if GTEST_HAS_PARAM_TEST
- // Returns ParameterizedTestCaseRegistry object used to keep track of
- // value-parameterized tests and instantiate and register them.
- internal::ParameterizedTestCaseRegistry& parameterized_test_registry() {
- return parameterized_test_registry_;
- }
-#endif // GTEST_HAS_PARAM_TEST
-
- // Sets the TestCase object for the test that's currently running.
- void set_current_test_case(TestCase* a_current_test_case) {
- current_test_case_ = a_current_test_case;
- }
-
- // Sets the TestInfo object for the test that's currently running. If
- // current_test_info is NULL, the assertion results will be stored in
- // ad_hoc_test_result_.
- void set_current_test_info(TestInfo* a_current_test_info) {
- current_test_info_ = a_current_test_info;
- }
-
- // Registers all parameterized tests defined using TEST_P and
- // INSTANTIATE_TEST_CASE_P, creating regular tests for each test/parameter
- // combination. This method can be called more then once; it has guards
- // protecting from registering the tests more then once. If
- // value-parameterized tests are disabled, RegisterParameterizedTests is
- // present but does nothing.
- void RegisterParameterizedTests();
-
- // Runs all tests in this UnitTest object, prints the result, and
- // returns true if all tests are successful. If any exception is
- // thrown during a test, this test is considered to be failed, but
- // the rest of the tests will still be run.
- bool RunAllTests();
-
- // Clears the results of all tests, except the ad hoc tests.
- void ClearNonAdHocTestResult() {
- ForEach(test_cases_, TestCase::ClearTestCaseResult);
- }
-
- // Clears the results of ad-hoc test assertions.
- void ClearAdHocTestResult() {
- ad_hoc_test_result_.Clear();
- }
-
- // Adds a TestProperty to the current TestResult object when invoked in a
- // context of a test or a test case, or to the global property set. If the
- // result already contains a property with the same key, the value will be
- // updated.
- void RecordProperty(const TestProperty& test_property);
-
- enum ReactionToSharding {
- HONOR_SHARDING_PROTOCOL,
- IGNORE_SHARDING_PROTOCOL
- };
-
- // Matches the full name of each test against the user-specified
- // filter to decide whether the test should run, then records the
- // result in each TestCase and TestInfo object.
- // If shard_tests == HONOR_SHARDING_PROTOCOL, further filters tests
- // based on sharding variables in the environment.
- // Returns the number of tests that should run.
- int FilterTests(ReactionToSharding shard_tests);
-
- // Prints the names of the tests matching the user-specified filter flag.
- void ListTestsMatchingFilter();
-
- const TestCase* current_test_case() const { return current_test_case_; }
- TestInfo* current_test_info() { return current_test_info_; }
- const TestInfo* current_test_info() const { return current_test_info_; }
-
- // Returns the vector of environments that need to be set-up/torn-down
- // before/after the tests are run.
- std::vector<Environment*>& environments() { return environments_; }
-
- // Getters for the per-thread Google Test trace stack.
- std::vector<TraceInfo>& gtest_trace_stack() {
- return *(gtest_trace_stack_.pointer());
- }
- const std::vector<TraceInfo>& gtest_trace_stack() const {
- return gtest_trace_stack_.get();
- }
-
-#if GTEST_HAS_DEATH_TEST
- void InitDeathTestSubprocessControlInfo() {
- internal_run_death_test_flag_.reset(ParseInternalRunDeathTestFlag());
- }
- // Returns a pointer to the parsed --gtest_internal_run_death_test
- // flag, or NULL if that flag was not specified.
- // This information is useful only in a death test child process.
- // Must not be called before a call to InitGoogleTest.
- const InternalRunDeathTestFlag* internal_run_death_test_flag() const {
- return internal_run_death_test_flag_.get();
- }
-
- // Returns a pointer to the current death test factory.
- internal::DeathTestFactory* death_test_factory() {
- return death_test_factory_.get();
- }
-
- void SuppressTestEventsIfInSubprocess();
-
- friend class ReplaceDeathTestFactory;
-#endif // GTEST_HAS_DEATH_TEST
-
- // Initializes the event listener performing XML output as specified by
- // UnitTestOptions. Must not be called before InitGoogleTest.
- void ConfigureXmlOutput();
-
-#if GTEST_CAN_STREAM_RESULTS_
- // Initializes the event listener for streaming test results to a socket.
- // Must not be called before InitGoogleTest.
- void ConfigureStreamingOutput();
-#endif
-
- // Performs initialization dependent upon flag values obtained in
- // ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to
- // ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest
- // this function is also called from RunAllTests. Since this function can be
- // called more than once, it has to be idempotent.
- void PostFlagParsingInit();
-
- // Gets the random seed used at the start of the current test iteration.
- int random_seed() const { return random_seed_; }
-
- // Gets the random number generator.
- internal::Random* random() { return &random_; }
-
- // Shuffles all test cases, and the tests within each test case,
- // making sure that death tests are still run first.
- void ShuffleTests();
-
- // Restores the test cases and tests to their order before the first shuffle.
- void UnshuffleTests();
-
- // Returns the value of GTEST_FLAG(catch_exceptions) at the moment
- // UnitTest::Run() starts.
- bool catch_exceptions() const { return catch_exceptions_; }
-
- private:
- friend class ::testing::UnitTest;
-
- // Used by UnitTest::Run() to capture the state of
- // GTEST_FLAG(catch_exceptions) at the moment it starts.
- void set_catch_exceptions(bool value) { catch_exceptions_ = value; }
-
- // The UnitTest object that owns this implementation object.
- UnitTest* const parent_;
-
- // The working directory when the first TEST() or TEST_F() was
- // executed.
- internal::FilePath original_working_dir_;
-
- // The default test part result reporters.
- DefaultGlobalTestPartResultReporter default_global_test_part_result_reporter_;
- DefaultPerThreadTestPartResultReporter
- default_per_thread_test_part_result_reporter_;
-
- // Points to (but doesn't own) the global test part result reporter.
- TestPartResultReporterInterface* global_test_part_result_repoter_;
-
- // Protects read and write access to global_test_part_result_reporter_.
- internal::Mutex global_test_part_result_reporter_mutex_;
-
- // Points to (but doesn't own) the per-thread test part result reporter.
- internal::ThreadLocal<TestPartResultReporterInterface*>
- per_thread_test_part_result_reporter_;
-
- // The vector of environments that need to be set-up/torn-down
- // before/after the tests are run.
- std::vector<Environment*> environments_;
-
- // The vector of TestCases in their original order. It owns the
- // elements in the vector.
- std::vector<TestCase*> test_cases_;
-
- // Provides a level of indirection for the test case list to allow
- // easy shuffling and restoring the test case order. The i-th
- // element of this vector is the index of the i-th test case in the
- // shuffled order.
- std::vector<int> test_case_indices_;
-
-#if GTEST_HAS_PARAM_TEST
- // ParameterizedTestRegistry object used to register value-parameterized
- // tests.
- internal::ParameterizedTestCaseRegistry parameterized_test_registry_;
-
- // Indicates whether RegisterParameterizedTests() has been called already.
- bool parameterized_tests_registered_;
-#endif // GTEST_HAS_PARAM_TEST
-
- // Index of the last death test case registered. Initially -1.
- int last_death_test_case_;
-
- // This points to the TestCase for the currently running test. It
- // changes as Google Test goes through one test case after another.
- // When no test is running, this is set to NULL and Google Test
- // stores assertion results in ad_hoc_test_result_. Initially NULL.
- TestCase* current_test_case_;
-
- // This points to the TestInfo for the currently running test. It
- // changes as Google Test goes through one test after another. When
- // no test is running, this is set to NULL and Google Test stores
- // assertion results in ad_hoc_test_result_. Initially NULL.
- TestInfo* current_test_info_;
-
- // Normally, a user only writes assertions inside a TEST or TEST_F,
- // or inside a function called by a TEST or TEST_F. Since Google
- // Test keeps track of which test is current running, it can
- // associate such an assertion with the test it belongs to.
- //
- // If an assertion is encountered when no TEST or TEST_F is running,
- // Google Test attributes the assertion result to an imaginary "ad hoc"
- // test, and records the result in ad_hoc_test_result_.
- TestResult ad_hoc_test_result_;
-
- // The list of event listeners that can be used to track events inside
- // Google Test.
- TestEventListeners listeners_;
-
- // The OS stack trace getter. Will be deleted when the UnitTest
- // object is destructed. By default, an OsStackTraceGetter is used,
- // but the user can set this field to use a custom getter if that is
- // desired.
- OsStackTraceGetterInterface* os_stack_trace_getter_;
-
- // True iff PostFlagParsingInit() has been called.
- bool post_flag_parse_init_performed_;
-
- // The random number seed used at the beginning of the test run.
- int random_seed_;
-
- // Our random number generator.
- internal::Random random_;
-
- // The time of the test program start, in ms from the start of the
- // UNIX epoch.
- TimeInMillis start_timestamp_;
-
- // How long the test took to run, in milliseconds.
- TimeInMillis elapsed_time_;
-
-#if GTEST_HAS_DEATH_TEST
- // The decomposed components of the gtest_internal_run_death_test flag,
- // parsed when RUN_ALL_TESTS is called.
- internal::scoped_ptr<InternalRunDeathTestFlag> internal_run_death_test_flag_;
- internal::scoped_ptr<internal::DeathTestFactory> death_test_factory_;
-#endif // GTEST_HAS_DEATH_TEST
-
- // A per-thread stack of traces created by the SCOPED_TRACE() macro.
- internal::ThreadLocal<std::vector<TraceInfo> > gtest_trace_stack_;
-
- // The value of GTEST_FLAG(catch_exceptions) at the moment RunAllTests()
- // starts.
- bool catch_exceptions_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTestImpl);
-}; // class UnitTestImpl
-
-// Convenience function for accessing the global UnitTest
-// implementation object.
-inline UnitTestImpl* GetUnitTestImpl() {
- return UnitTest::GetInstance()->impl();
-}
-
-#if GTEST_USES_SIMPLE_RE
-
-// Internal helper functions for implementing the simple regular
-// expression matcher.
-GTEST_API_ bool IsInSet(char ch, const char* str);
-GTEST_API_ bool IsAsciiDigit(char ch);
-GTEST_API_ bool IsAsciiPunct(char ch);
-GTEST_API_ bool IsRepeat(char ch);
-GTEST_API_ bool IsAsciiWhiteSpace(char ch);
-GTEST_API_ bool IsAsciiWordChar(char ch);
-GTEST_API_ bool IsValidEscape(char ch);
-GTEST_API_ bool AtomMatchesChar(bool escaped, char pattern, char ch);
-GTEST_API_ bool ValidateRegex(const char* regex);
-GTEST_API_ bool MatchRegexAtHead(const char* regex, const char* str);
-GTEST_API_ bool MatchRepetitionAndRegexAtHead(
- bool escaped, char ch, char repeat, const char* regex, const char* str);
-GTEST_API_ bool MatchRegexAnywhere(const char* regex, const char* str);
-
-#endif // GTEST_USES_SIMPLE_RE
-
-// Parses the command line for Google Test flags, without initializing
-// other parts of Google Test.
-GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, char** argv);
-GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv);
-
-#if GTEST_HAS_DEATH_TEST
-
-// Returns the message describing the last system error, regardless of the
-// platform.
-GTEST_API_ std::string GetLastErrnoDescription();
-
-// Attempts to parse a string into a positive integer pointed to by the
-// number parameter. Returns true if that is possible.
-// GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we can use
-// it here.
-template <typename Integer>
-bool ParseNaturalNumber(const ::std::string& str, Integer* number) {
- // Fail fast if the given string does not begin with a digit;
- // this bypasses strtoXXX's "optional leading whitespace and plus
- // or minus sign" semantics, which are undesirable here.
- if (str.empty() || !IsDigit(str[0])) {
- return false;
- }
- errno = 0;
-
- char* end;
- // BiggestConvertible is the largest integer type that system-provided
- // string-to-number conversion routines can return.
-
-# if GTEST_OS_WINDOWS && !defined(__GNUC__)
-
- // MSVC and C++ Builder define __int64 instead of the standard long long.
- typedef unsigned __int64 BiggestConvertible;
- const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10);
-
-# else
-
- typedef unsigned long long BiggestConvertible; // NOLINT
- const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10);
-
-# endif // GTEST_OS_WINDOWS && !defined(__GNUC__)
-
- const bool parse_success = *end == '\0' && errno == 0;
-
- // TODO(vladl@google.com): Convert this to compile time assertion when it is
- // available.
- GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed));
-
- const Integer result = static_cast<Integer>(parsed);
- if (parse_success && static_cast<BiggestConvertible>(result) == parsed) {
- *number = result;
- return true;
- }
- return false;
-}
-#endif // GTEST_HAS_DEATH_TEST
-
-// TestResult contains some private methods that should be hidden from
-// Google Test user but are required for testing. This class allow our tests
-// to access them.
-//
-// This class is supplied only for the purpose of testing Google Test's own
-// constructs. Do not use it in user tests, either directly or indirectly.
-class TestResultAccessor {
- public:
- static void RecordProperty(TestResult* test_result,
- const std::string& xml_element,
- const TestProperty& property) {
- test_result->RecordProperty(xml_element, property);
- }
-
- static void ClearTestPartResults(TestResult* test_result) {
- test_result->ClearTestPartResults();
- }
-
- static const std::vector<testing::TestPartResult>& test_part_results(
- const TestResult& test_result) {
- return test_result.test_part_results();
- }
-};
-
-#if GTEST_CAN_STREAM_RESULTS_
-
-// Streams test results to the given port on the given host machine.
-class GTEST_API_ StreamingListener : public EmptyTestEventListener {
- public:
- // Abstract base class for writing strings to a socket.
- class AbstractSocketWriter {
- public:
- virtual ~AbstractSocketWriter() {}
-
- // Sends a string to the socket.
- virtual void Send(const string& message) = 0;
-
- // Closes the socket.
- virtual void CloseConnection() {}
-
- // Sends a string and a newline to the socket.
- void SendLn(const string& message) {
- Send(message + "\n");
- }
- };
-
- // Concrete class for actually writing strings to a socket.
- class SocketWriter : public AbstractSocketWriter {
- public:
- SocketWriter(const string& host, const string& port)
- : sockfd_(-1), host_name_(host), port_num_(port) {
- MakeConnection();
- }
-
- virtual ~SocketWriter() {
- if (sockfd_ != -1)
- CloseConnection();
- }
-
- // Sends a string to the socket.
- virtual void Send(const string& message) {
- GTEST_CHECK_(sockfd_ != -1)
- << "Send() can be called only when there is a connection.";
-
- const int len = static_cast<int>(message.length());
- if (write(sockfd_, message.c_str(), len) != len) {
- GTEST_LOG_(WARNING)
- << "stream_result_to: failed to stream to "
- << host_name_ << ":" << port_num_;
- }
- }
-
- private:
- // Creates a client socket and connects to the server.
- void MakeConnection();
-
- // Closes the socket.
- void CloseConnection() {
- GTEST_CHECK_(sockfd_ != -1)
- << "CloseConnection() can be called only when there is a connection.";
-
- close(sockfd_);
- sockfd_ = -1;
- }
-
- int sockfd_; // socket file descriptor
- const string host_name_;
- const string port_num_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(SocketWriter);
- }; // class SocketWriter
-
- // Escapes '=', '&', '%', and '\n' characters in str as "%xx".
- static string UrlEncode(const char* str);
-
- StreamingListener(const string& host, const string& port)
- : socket_writer_(new SocketWriter(host, port)) { Start(); }
-
- explicit StreamingListener(AbstractSocketWriter* socket_writer)
- : socket_writer_(socket_writer) { Start(); }
-
- void OnTestProgramStart(const UnitTest& /* unit_test */) {
- SendLn("event=TestProgramStart");
- }
-
- void OnTestProgramEnd(const UnitTest& unit_test) {
- // Note that Google Test current only report elapsed time for each
- // test iteration, not for the entire test program.
- SendLn("event=TestProgramEnd&passed=" + FormatBool(unit_test.Passed()));
-
- // Notify the streaming server to stop.
- socket_writer_->CloseConnection();
- }
-
- void OnTestIterationStart(const UnitTest& /* unit_test */, int iteration) {
- SendLn("event=TestIterationStart&iteration=" +
- StreamableToString(iteration));
- }
-
- void OnTestIterationEnd(const UnitTest& unit_test, int /* iteration */) {
- SendLn("event=TestIterationEnd&passed=" +
- FormatBool(unit_test.Passed()) + "&elapsed_time=" +
- StreamableToString(unit_test.elapsed_time()) + "ms");
- }
-
- void OnTestCaseStart(const TestCase& test_case) {
- SendLn(std::string("event=TestCaseStart&name=") + test_case.name());
- }
-
- void OnTestCaseEnd(const TestCase& test_case) {
- SendLn("event=TestCaseEnd&passed=" + FormatBool(test_case.Passed())
- + "&elapsed_time=" + StreamableToString(test_case.elapsed_time())
- + "ms");
- }
-
- void OnTestStart(const TestInfo& test_info) {
- SendLn(std::string("event=TestStart&name=") + test_info.name());
- }
-
- void OnTestEnd(const TestInfo& test_info) {
- SendLn("event=TestEnd&passed=" +
- FormatBool((test_info.result())->Passed()) +
- "&elapsed_time=" +
- StreamableToString((test_info.result())->elapsed_time()) + "ms");
- }
-
- void OnTestPartResult(const TestPartResult& test_part_result) {
- const char* file_name = test_part_result.file_name();
- if (file_name == NULL)
- file_name = "";
- SendLn("event=TestPartResult&file=" + UrlEncode(file_name) +
- "&line=" + StreamableToString(test_part_result.line_number()) +
- "&message=" + UrlEncode(test_part_result.message()));
- }
-
- private:
- // Sends the given message and a newline to the socket.
- void SendLn(const string& message) { socket_writer_->SendLn(message); }
-
- // Called at the start of streaming to notify the receiver what
- // protocol we are using.
- void Start() { SendLn("gtest_streaming_protocol_version=1.0"); }
-
- string FormatBool(bool value) { return value ? "1" : "0"; }
-
- const scoped_ptr<AbstractSocketWriter> socket_writer_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(StreamingListener);
-}; // class StreamingListener
-
-#endif // GTEST_CAN_STREAM_RESULTS_
-
-} // namespace internal
-} // namespace testing
-
-#endif // GTEST_SRC_GTEST_INTERNAL_INL_H_
diff --git a/test/gtest/src/gtest-port.cc b/test/gtest/src/gtest-port.cc
deleted file mode 100644
index e5bf3dd..0000000
--- a/test/gtest/src/gtest-port.cc
+++ /dev/null
@@ -1,1259 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wan@google.com (Zhanyong Wan)
-
-#include "gtest/internal/gtest-port.h"
-
-#include <limits.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <fstream>
-
-#if GTEST_OS_WINDOWS
-# include <windows.h>
-# include <io.h>
-# include <sys/stat.h>
-# include <map> // Used in ThreadLocal.
-#else
-# include <unistd.h>
-#endif // GTEST_OS_WINDOWS
-
-#if GTEST_OS_MAC
-# include <mach/mach_init.h>
-# include <mach/task.h>
-# include <mach/vm_map.h>
-#endif // GTEST_OS_MAC
-
-#if GTEST_OS_QNX
-# include <devctl.h>
-# include <fcntl.h>
-# include <sys/procfs.h>
-#endif // GTEST_OS_QNX
-
-#if GTEST_OS_AIX
-# include <procinfo.h>
-# include <sys/types.h>
-#endif // GTEST_OS_AIX
-
-#include "gtest/gtest-spi.h"
-#include "gtest/gtest-message.h"
-#include "gtest/internal/gtest-internal.h"
-#include "gtest/internal/gtest-string.h"
-
-// Indicates that this translation unit is part of Google Test's
-// implementation. It must come before gtest-internal-inl.h is
-// included, or there will be a compiler error. This trick exists to
-// prevent the accidental inclusion of gtest-internal-inl.h in the
-// user's code.
-#define GTEST_IMPLEMENTATION_ 1
-#include "src/gtest-internal-inl.h"
-#undef GTEST_IMPLEMENTATION_
-
-namespace testing {
-namespace internal {
-
-#if defined(_MSC_VER) || defined(__BORLANDC__)
-// MSVC and C++Builder do not provide a definition of STDERR_FILENO.
-const int kStdOutFileno = 1;
-const int kStdErrFileno = 2;
-#else
-const int kStdOutFileno = STDOUT_FILENO;
-const int kStdErrFileno = STDERR_FILENO;
-#endif // _MSC_VER
-
-#if GTEST_OS_LINUX
-
-namespace {
-template <typename T>
-T ReadProcFileField(const string& filename, int field) {
- std::string dummy;
- std::ifstream file(filename.c_str());
- while (field-- > 0) {
- file >> dummy;
- }
- T output = 0;
- file >> output;
- return output;
-}
-} // namespace
-
-// Returns the number of active threads, or 0 when there is an error.
-size_t GetThreadCount() {
- const string filename =
- (Message() << "/proc/" << getpid() << "/stat").GetString();
- return ReadProcFileField<int>(filename, 19);
-}
-
-#elif GTEST_OS_MAC
-
-size_t GetThreadCount() {
- const task_t task = mach_task_self();
- mach_msg_type_number_t thread_count;
- thread_act_array_t thread_list;
- const kern_return_t status = task_threads(task, &thread_list, &thread_count);
- if (status == KERN_SUCCESS) {
- // task_threads allocates resources in thread_list and we need to free them
- // to avoid leaks.
- vm_deallocate(task,
- reinterpret_cast<vm_address_t>(thread_list),
- sizeof(thread_t) * thread_count);
- return static_cast<size_t>(thread_count);
- } else {
- return 0;
- }
-}
-
-#elif GTEST_OS_QNX
-
-// Returns the number of threads running in the process, or 0 to indicate that
-// we cannot detect it.
-size_t GetThreadCount() {
- const int fd = open("/proc/self/as", O_RDONLY);
- if (fd < 0) {
- return 0;
- }
- procfs_info process_info;
- const int status =
- devctl(fd, DCMD_PROC_INFO, &process_info, sizeof(process_info), NULL);
- close(fd);
- if (status == EOK) {
- return static_cast<size_t>(process_info.num_threads);
- } else {
- return 0;
- }
-}
-
-#elif GTEST_OS_AIX
-
-size_t GetThreadCount() {
- struct procentry64 entry;
- pid_t pid = getpid();
- int status = getprocs64(&entry, sizeof(entry), NULL, 0, &pid, 1);
- if (status == 1) {
- return entry.pi_thcount;
- } else {
- return 0;
- }
-}
-
-#else
-
-size_t GetThreadCount() {
- // There's no portable way to detect the number of threads, so we just
- // return 0 to indicate that we cannot detect it.
- return 0;
-}
-
-#endif // GTEST_OS_LINUX
-
-#if GTEST_IS_THREADSAFE && GTEST_OS_WINDOWS
-
-void SleepMilliseconds(int n) {
- ::Sleep(n);
-}
-
-AutoHandle::AutoHandle()
- : handle_(INVALID_HANDLE_VALUE) {}
-
-AutoHandle::AutoHandle(Handle handle)
- : handle_(handle) {}
-
-AutoHandle::~AutoHandle() {
- Reset();
-}
-
-AutoHandle::Handle AutoHandle::Get() const {
- return handle_;
-}
-
-void AutoHandle::Reset() {
- Reset(INVALID_HANDLE_VALUE);
-}
-
-void AutoHandle::Reset(HANDLE handle) {
- // Resetting with the same handle we already own is invalid.
- if (handle_ != handle) {
- if (IsCloseable()) {
- ::CloseHandle(handle_);
- }
- handle_ = handle;
- } else {
- GTEST_CHECK_(!IsCloseable())
- << "Resetting a valid handle to itself is likely a programmer error "
- "and thus not allowed.";
- }
-}
-
-bool AutoHandle::IsCloseable() const {
- // Different Windows APIs may use either of these values to represent an
- // invalid handle.
- return handle_ != NULL && handle_ != INVALID_HANDLE_VALUE;
-}
-
-Notification::Notification()
- : event_(::CreateEvent(NULL, // Default security attributes.
- TRUE, // Do not reset automatically.
- FALSE, // Initially unset.
- NULL)) { // Anonymous event.
- GTEST_CHECK_(event_.Get() != NULL);
-}
-
-void Notification::Notify() {
- GTEST_CHECK_(::SetEvent(event_.Get()) != FALSE);
-}
-
-void Notification::WaitForNotification() {
- GTEST_CHECK_(
- ::WaitForSingleObject(event_.Get(), INFINITE) == WAIT_OBJECT_0);
-}
-
-Mutex::Mutex()
- : owner_thread_id_(0),
- type_(kDynamic),
- critical_section_init_phase_(0),
- critical_section_(new CRITICAL_SECTION) {
- ::InitializeCriticalSection(critical_section_);
-}
-
-Mutex::~Mutex() {
- // Static mutexes are leaked intentionally. It is not thread-safe to try
- // to clean them up.
- // TODO(yukawa): Switch to Slim Reader/Writer (SRW) Locks, which requires
- // nothing to clean it up but is available only on Vista and later.
- // http://msdn.microsoft.com/en-us/library/windows/desktop/aa904937.aspx
- if (type_ == kDynamic) {
- ::DeleteCriticalSection(critical_section_);
- delete critical_section_;
- critical_section_ = NULL;
- }
-}
-
-void Mutex::Lock() {
- ThreadSafeLazyInit();
- ::EnterCriticalSection(critical_section_);
- owner_thread_id_ = ::GetCurrentThreadId();
-}
-
-void Mutex::Unlock() {
- ThreadSafeLazyInit();
- // We don't protect writing to owner_thread_id_ here, as it's the
- // caller's responsibility to ensure that the current thread holds the
- // mutex when this is called.
- owner_thread_id_ = 0;
- ::LeaveCriticalSection(critical_section_);
-}
-
-// Does nothing if the current thread holds the mutex. Otherwise, crashes
-// with high probability.
-void Mutex::AssertHeld() {
- ThreadSafeLazyInit();
- GTEST_CHECK_(owner_thread_id_ == ::GetCurrentThreadId())
- << "The current thread is not holding the mutex @" << this;
-}
-
-// Initializes owner_thread_id_ and critical_section_ in static mutexes.
-void Mutex::ThreadSafeLazyInit() {
- // Dynamic mutexes are initialized in the constructor.
- if (type_ == kStatic) {
- switch (
- ::InterlockedCompareExchange(&critical_section_init_phase_, 1L, 0L)) {
- case 0:
- // If critical_section_init_phase_ was 0 before the exchange, we
- // are the first to test it and need to perform the initialization.
- owner_thread_id_ = 0;
- critical_section_ = new CRITICAL_SECTION;
- ::InitializeCriticalSection(critical_section_);
- // Updates the critical_section_init_phase_ to 2 to signal
- // initialization complete.
- GTEST_CHECK_(::InterlockedCompareExchange(
- &critical_section_init_phase_, 2L, 1L) ==
- 1L);
- break;
- case 1:
- // Somebody else is already initializing the mutex; spin until they
- // are done.
- while (::InterlockedCompareExchange(&critical_section_init_phase_,
- 2L,
- 2L) != 2L) {
- // Possibly yields the rest of the thread's time slice to other
- // threads.
- ::Sleep(0);
- }
- break;
-
- case 2:
- break; // The mutex is already initialized and ready for use.
-
- default:
- GTEST_CHECK_(false)
- << "Unexpected value of critical_section_init_phase_ "
- << "while initializing a static mutex.";
- }
- }
-}
-
-namespace {
-
-class ThreadWithParamSupport : public ThreadWithParamBase {
- public:
- static HANDLE CreateThread(Runnable* runnable,
- Notification* thread_can_start) {
- ThreadMainParam* param = new ThreadMainParam(runnable, thread_can_start);
- DWORD thread_id;
- // TODO(yukawa): Consider to use _beginthreadex instead.
- HANDLE thread_handle = ::CreateThread(
- NULL, // Default security.
- 0, // Default stack size.
- &ThreadWithParamSupport::ThreadMain,
- param, // Parameter to ThreadMainStatic
- 0x0, // Default creation flags.
- &thread_id); // Need a valid pointer for the call to work under Win98.
- GTEST_CHECK_(thread_handle != NULL) << "CreateThread failed with error "
- << ::GetLastError() << ".";
- if (thread_handle == NULL) {
- delete param;
- }
- return thread_handle;
- }
-
- private:
- struct ThreadMainParam {
- ThreadMainParam(Runnable* runnable, Notification* thread_can_start)
- : runnable_(runnable),
- thread_can_start_(thread_can_start) {
- }
- scoped_ptr<Runnable> runnable_;
- // Does not own.
- Notification* thread_can_start_;
- };
-
- static DWORD WINAPI ThreadMain(void* ptr) {
- // Transfers ownership.
- scoped_ptr<ThreadMainParam> param(static_cast<ThreadMainParam*>(ptr));
- if (param->thread_can_start_ != NULL)
- param->thread_can_start_->WaitForNotification();
- param->runnable_->Run();
- return 0;
- }
-
- // Prohibit instantiation.
- ThreadWithParamSupport();
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParamSupport);
-};
-
-} // namespace
-
-ThreadWithParamBase::ThreadWithParamBase(Runnable *runnable,
- Notification* thread_can_start)
- : thread_(ThreadWithParamSupport::CreateThread(runnable,
- thread_can_start)) {
-}
-
-ThreadWithParamBase::~ThreadWithParamBase() {
- Join();
-}
-
-void ThreadWithParamBase::Join() {
- GTEST_CHECK_(::WaitForSingleObject(thread_.Get(), INFINITE) == WAIT_OBJECT_0)
- << "Failed to join the thread with error " << ::GetLastError() << ".";
-}
-
-// Maps a thread to a set of ThreadIdToThreadLocals that have values
-// instantiated on that thread and notifies them when the thread exits. A
-// ThreadLocal instance is expected to persist until all threads it has
-// values on have terminated.
-class ThreadLocalRegistryImpl {
- public:
- // Registers thread_local_instance as having value on the current thread.
- // Returns a value that can be used to identify the thread from other threads.
- static ThreadLocalValueHolderBase* GetValueOnCurrentThread(
- const ThreadLocalBase* thread_local_instance) {
- DWORD current_thread = ::GetCurrentThreadId();
- MutexLock lock(&mutex_);
- ThreadIdToThreadLocals* const thread_to_thread_locals =
- GetThreadLocalsMapLocked();
- ThreadIdToThreadLocals::iterator thread_local_pos =
- thread_to_thread_locals->find(current_thread);
- if (thread_local_pos == thread_to_thread_locals->end()) {
- thread_local_pos = thread_to_thread_locals->insert(
- std::make_pair(current_thread, ThreadLocalValues())).first;
- StartWatcherThreadFor(current_thread);
- }
- ThreadLocalValues& thread_local_values = thread_local_pos->second;
- ThreadLocalValues::iterator value_pos =
- thread_local_values.find(thread_local_instance);
- if (value_pos == thread_local_values.end()) {
- value_pos =
- thread_local_values
- .insert(std::make_pair(
- thread_local_instance,
- linked_ptr<ThreadLocalValueHolderBase>(
- thread_local_instance->NewValueForCurrentThread())))
- .first;
- }
- return value_pos->second.get();
- }
-
- static void OnThreadLocalDestroyed(
- const ThreadLocalBase* thread_local_instance) {
- std::vector<linked_ptr<ThreadLocalValueHolderBase> > value_holders;
- // Clean up the ThreadLocalValues data structure while holding the lock, but
- // defer the destruction of the ThreadLocalValueHolderBases.
- {
- MutexLock lock(&mutex_);
- ThreadIdToThreadLocals* const thread_to_thread_locals =
- GetThreadLocalsMapLocked();
- for (ThreadIdToThreadLocals::iterator it =
- thread_to_thread_locals->begin();
- it != thread_to_thread_locals->end();
- ++it) {
- ThreadLocalValues& thread_local_values = it->second;
- ThreadLocalValues::iterator value_pos =
- thread_local_values.find(thread_local_instance);
- if (value_pos != thread_local_values.end()) {
- value_holders.push_back(value_pos->second);
- thread_local_values.erase(value_pos);
- // This 'if' can only be successful at most once, so theoretically we
- // could break out of the loop here, but we don't bother doing so.
- }
- }
- }
- // Outside the lock, let the destructor for 'value_holders' deallocate the
- // ThreadLocalValueHolderBases.
- }
-
- static void OnThreadExit(DWORD thread_id) {
- GTEST_CHECK_(thread_id != 0) << ::GetLastError();
- std::vector<linked_ptr<ThreadLocalValueHolderBase> > value_holders;
- // Clean up the ThreadIdToThreadLocals data structure while holding the
- // lock, but defer the destruction of the ThreadLocalValueHolderBases.
- {
- MutexLock lock(&mutex_);
- ThreadIdToThreadLocals* const thread_to_thread_locals =
- GetThreadLocalsMapLocked();
- ThreadIdToThreadLocals::iterator thread_local_pos =
- thread_to_thread_locals->find(thread_id);
- if (thread_local_pos != thread_to_thread_locals->end()) {
- ThreadLocalValues& thread_local_values = thread_local_pos->second;
- for (ThreadLocalValues::iterator value_pos =
- thread_local_values.begin();
- value_pos != thread_local_values.end();
- ++value_pos) {
- value_holders.push_back(value_pos->second);
- }
- thread_to_thread_locals->erase(thread_local_pos);
- }
- }
- // Outside the lock, let the destructor for 'value_holders' deallocate the
- // ThreadLocalValueHolderBases.
- }
-
- private:
- // In a particular thread, maps a ThreadLocal object to its value.
- typedef std::map<const ThreadLocalBase*,
- linked_ptr<ThreadLocalValueHolderBase> > ThreadLocalValues;
- // Stores all ThreadIdToThreadLocals having values in a thread, indexed by
- // thread's ID.
- typedef std::map<DWORD, ThreadLocalValues> ThreadIdToThreadLocals;
-
- // Holds the thread id and thread handle that we pass from
- // StartWatcherThreadFor to WatcherThreadFunc.
- typedef std::pair<DWORD, HANDLE> ThreadIdAndHandle;
-
- static void StartWatcherThreadFor(DWORD thread_id) {
- // The returned handle will be kept in thread_map and closed by
- // watcher_thread in WatcherThreadFunc.
- HANDLE thread = ::OpenThread(SYNCHRONIZE | THREAD_QUERY_INFORMATION,
- FALSE,
- thread_id);
- GTEST_CHECK_(thread != NULL);
- // We need to to pass a valid thread ID pointer into CreateThread for it
- // to work correctly under Win98.
- DWORD watcher_thread_id;
- HANDLE watcher_thread = ::CreateThread(
- NULL, // Default security.
- 0, // Default stack size
- &ThreadLocalRegistryImpl::WatcherThreadFunc,
- reinterpret_cast<LPVOID>(new ThreadIdAndHandle(thread_id, thread)),
- CREATE_SUSPENDED,
- &watcher_thread_id);
- GTEST_CHECK_(watcher_thread != NULL);
- // Give the watcher thread the same priority as ours to avoid being
- // blocked by it.
- ::SetThreadPriority(watcher_thread,
- ::GetThreadPriority(::GetCurrentThread()));
- ::ResumeThread(watcher_thread);
- ::CloseHandle(watcher_thread);
- }
-
- // Monitors exit from a given thread and notifies those
- // ThreadIdToThreadLocals about thread termination.
- static DWORD WINAPI WatcherThreadFunc(LPVOID param) {
- const ThreadIdAndHandle* tah =
- reinterpret_cast<const ThreadIdAndHandle*>(param);
- GTEST_CHECK_(
- ::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0);
- OnThreadExit(tah->first);
- ::CloseHandle(tah->second);
- delete tah;
- return 0;
- }
-
- // Returns map of thread local instances.
- static ThreadIdToThreadLocals* GetThreadLocalsMapLocked() {
- mutex_.AssertHeld();
- static ThreadIdToThreadLocals* map = new ThreadIdToThreadLocals;
- return map;
- }
-
- // Protects access to GetThreadLocalsMapLocked() and its return value.
- static Mutex mutex_;
- // Protects access to GetThreadMapLocked() and its return value.
- static Mutex thread_map_mutex_;
-};
-
-Mutex ThreadLocalRegistryImpl::mutex_(Mutex::kStaticMutex);
-Mutex ThreadLocalRegistryImpl::thread_map_mutex_(Mutex::kStaticMutex);
-
-ThreadLocalValueHolderBase* ThreadLocalRegistry::GetValueOnCurrentThread(
- const ThreadLocalBase* thread_local_instance) {
- return ThreadLocalRegistryImpl::GetValueOnCurrentThread(
- thread_local_instance);
-}
-
-void ThreadLocalRegistry::OnThreadLocalDestroyed(
- const ThreadLocalBase* thread_local_instance) {
- ThreadLocalRegistryImpl::OnThreadLocalDestroyed(thread_local_instance);
-}
-
-#endif // GTEST_IS_THREADSAFE && GTEST_OS_WINDOWS
-
-#if GTEST_USES_POSIX_RE
-
-// Implements RE. Currently only needed for death tests.
-
-RE::~RE() {
- if (is_valid_) {
- // regfree'ing an invalid regex might crash because the content
- // of the regex is undefined. Since the regex's are essentially
- // the same, one cannot be valid (or invalid) without the other
- // being so too.
- regfree(&partial_regex_);
- regfree(&full_regex_);
- }
- free(const_cast<char*>(pattern_));
-}
-
-// Returns true iff regular expression re matches the entire str.
-bool RE::FullMatch(const char* str, const RE& re) {
- if (!re.is_valid_) return false;
-
- regmatch_t match;
- return regexec(&re.full_regex_, str, 1, &match, 0) == 0;
-}
-
-// Returns true iff regular expression re matches a substring of str
-// (including str itself).
-bool RE::PartialMatch(const char* str, const RE& re) {
- if (!re.is_valid_) return false;
-
- regmatch_t match;
- return regexec(&re.partial_regex_, str, 1, &match, 0) == 0;
-}
-
-// Initializes an RE from its string representation.
-void RE::Init(const char* regex) {
- pattern_ = posix::StrDup(regex);
-
- // Reserves enough bytes to hold the regular expression used for a
- // full match.
- const size_t full_regex_len = strlen(regex) + 10;
- char* const full_pattern = new char[full_regex_len];
-
- snprintf(full_pattern, full_regex_len, "^(%s)$", regex);
- is_valid_ = regcomp(&full_regex_, full_pattern, REG_EXTENDED) == 0;
- // We want to call regcomp(&partial_regex_, ...) even if the
- // previous expression returns false. Otherwise partial_regex_ may
- // not be properly initialized can may cause trouble when it's
- // freed.
- //
- // Some implementation of POSIX regex (e.g. on at least some
- // versions of Cygwin) doesn't accept the empty string as a valid
- // regex. We change it to an equivalent form "()" to be safe.
- if (is_valid_) {
- const char* const partial_regex = (*regex == '\0') ? "()" : regex;
- is_valid_ = regcomp(&partial_regex_, partial_regex, REG_EXTENDED) == 0;
- }
- EXPECT_TRUE(is_valid_)
- << "Regular expression \"" << regex
- << "\" is not a valid POSIX Extended regular expression.";
-
- delete[] full_pattern;
-}
-
-#elif GTEST_USES_SIMPLE_RE
-
-// Returns true iff ch appears anywhere in str (excluding the
-// terminating '\0' character).
-bool IsInSet(char ch, const char* str) {
- return ch != '\0' && strchr(str, ch) != NULL;
-}
-
-// Returns true iff ch belongs to the given classification. Unlike
-// similar functions in <ctype.h>, these aren't affected by the
-// current locale.
-bool IsAsciiDigit(char ch) { return '0' <= ch && ch <= '9'; }
-bool IsAsciiPunct(char ch) {
- return IsInSet(ch, "^-!\"#$%&'()*+,./:;<=>?@[\\]_`{|}~");
-}
-bool IsRepeat(char ch) { return IsInSet(ch, "?*+"); }
-bool IsAsciiWhiteSpace(char ch) { return IsInSet(ch, " \f\n\r\t\v"); }
-bool IsAsciiWordChar(char ch) {
- return ('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z') ||
- ('0' <= ch && ch <= '9') || ch == '_';
-}
-
-// Returns true iff "\\c" is a supported escape sequence.
-bool IsValidEscape(char c) {
- return (IsAsciiPunct(c) || IsInSet(c, "dDfnrsStvwW"));
-}
-
-// Returns true iff the given atom (specified by escaped and pattern)
-// matches ch. The result is undefined if the atom is invalid.
-bool AtomMatchesChar(bool escaped, char pattern_char, char ch) {
- if (escaped) { // "\\p" where p is pattern_char.
- switch (pattern_char) {
- case 'd': return IsAsciiDigit(ch);
- case 'D': return !IsAsciiDigit(ch);
- case 'f': return ch == '\f';
- case 'n': return ch == '\n';
- case 'r': return ch == '\r';
- case 's': return IsAsciiWhiteSpace(ch);
- case 'S': return !IsAsciiWhiteSpace(ch);
- case 't': return ch == '\t';
- case 'v': return ch == '\v';
- case 'w': return IsAsciiWordChar(ch);
- case 'W': return !IsAsciiWordChar(ch);
- }
- return IsAsciiPunct(pattern_char) && pattern_char == ch;
- }
-
- return (pattern_char == '.' && ch != '\n') || pattern_char == ch;
-}
-
-// Helper function used by ValidateRegex() to format error messages.
-std::string FormatRegexSyntaxError(const char* regex, int index) {
- return (Message() << "Syntax error at index " << index
- << " in simple regular expression \"" << regex << "\": ").GetString();
-}
-
-// Generates non-fatal failures and returns false if regex is invalid;
-// otherwise returns true.
-bool ValidateRegex(const char* regex) {
- if (regex == NULL) {
- // TODO(wan@google.com): fix the source file location in the
- // assertion failures to match where the regex is used in user
- // code.
- ADD_FAILURE() << "NULL is not a valid simple regular expression.";
- return false;
- }
-
- bool is_valid = true;
-
- // True iff ?, *, or + can follow the previous atom.
- bool prev_repeatable = false;
- for (int i = 0; regex[i]; i++) {
- if (regex[i] == '\\') { // An escape sequence
- i++;
- if (regex[i] == '\0') {
- ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1)
- << "'\\' cannot appear at the end.";
- return false;
- }
-
- if (!IsValidEscape(regex[i])) {
- ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1)
- << "invalid escape sequence \"\\" << regex[i] << "\".";
- is_valid = false;
- }
- prev_repeatable = true;
- } else { // Not an escape sequence.
- const char ch = regex[i];
-
- if (ch == '^' && i > 0) {
- ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
- << "'^' can only appear at the beginning.";
- is_valid = false;
- } else if (ch == '$' && regex[i + 1] != '\0') {
- ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
- << "'$' can only appear at the end.";
- is_valid = false;
- } else if (IsInSet(ch, "()[]{}|")) {
- ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
- << "'" << ch << "' is unsupported.";
- is_valid = false;
- } else if (IsRepeat(ch) && !prev_repeatable) {
- ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
- << "'" << ch << "' can only follow a repeatable token.";
- is_valid = false;
- }
-
- prev_repeatable = !IsInSet(ch, "^$?*+");
- }
- }
-
- return is_valid;
-}
-
-// Matches a repeated regex atom followed by a valid simple regular
-// expression. The regex atom is defined as c if escaped is false,
-// or \c otherwise. repeat is the repetition meta character (?, *,
-// or +). The behavior is undefined if str contains too many
-// characters to be indexable by size_t, in which case the test will
-// probably time out anyway. We are fine with this limitation as
-// std::string has it too.
-bool MatchRepetitionAndRegexAtHead(
- bool escaped, char c, char repeat, const char* regex,
- const char* str) {
- const size_t min_count = (repeat == '+') ? 1 : 0;
- const size_t max_count = (repeat == '?') ? 1 :
- static_cast<size_t>(-1) - 1;
- // We cannot call numeric_limits::max() as it conflicts with the
- // max() macro on Windows.
-
- for (size_t i = 0; i <= max_count; ++i) {
- // We know that the atom matches each of the first i characters in str.
- if (i >= min_count && MatchRegexAtHead(regex, str + i)) {
- // We have enough matches at the head, and the tail matches too.
- // Since we only care about *whether* the pattern matches str
- // (as opposed to *how* it matches), there is no need to find a
- // greedy match.
- return true;
- }
- if (str[i] == '\0' || !AtomMatchesChar(escaped, c, str[i]))
- return false;
- }
- return false;
-}
-
-// Returns true iff regex matches a prefix of str. regex must be a
-// valid simple regular expression and not start with "^", or the
-// result is undefined.
-bool MatchRegexAtHead(const char* regex, const char* str) {
- if (*regex == '\0') // An empty regex matches a prefix of anything.
- return true;
-
- // "$" only matches the end of a string. Note that regex being
- // valid guarantees that there's nothing after "$" in it.
- if (*regex == '$')
- return *str == '\0';
-
- // Is the first thing in regex an escape sequence?
- const bool escaped = *regex == '\\';
- if (escaped)
- ++regex;
- if (IsRepeat(regex[1])) {
- // MatchRepetitionAndRegexAtHead() calls MatchRegexAtHead(), so
- // here's an indirect recursion. It terminates as the regex gets
- // shorter in each recursion.
- return MatchRepetitionAndRegexAtHead(
- escaped, regex[0], regex[1], regex + 2, str);
- } else {
- // regex isn't empty, isn't "$", and doesn't start with a
- // repetition. We match the first atom of regex with the first
- // character of str and recurse.
- return (*str != '\0') && AtomMatchesChar(escaped, *regex, *str) &&
- MatchRegexAtHead(regex + 1, str + 1);
- }
-}
-
-// Returns true iff regex matches any substring of str. regex must be
-// a valid simple regular expression, or the result is undefined.
-//
-// The algorithm is recursive, but the recursion depth doesn't exceed
-// the regex length, so we won't need to worry about running out of
-// stack space normally. In rare cases the time complexity can be
-// exponential with respect to the regex length + the string length,
-// but usually it's must faster (often close to linear).
-bool MatchRegexAnywhere(const char* regex, const char* str) {
- if (regex == NULL || str == NULL)
- return false;
-
- if (*regex == '^')
- return MatchRegexAtHead(regex + 1, str);
-
- // A successful match can be anywhere in str.
- do {
- if (MatchRegexAtHead(regex, str))
- return true;
- } while (*str++ != '\0');
- return false;
-}
-
-// Implements the RE class.
-
-RE::~RE() {
- free(const_cast<char*>(pattern_));
- free(const_cast<char*>(full_pattern_));
-}
-
-// Returns true iff regular expression re matches the entire str.
-bool RE::FullMatch(const char* str, const RE& re) {
- return re.is_valid_ && MatchRegexAnywhere(re.full_pattern_, str);
-}
-
-// Returns true iff regular expression re matches a substring of str
-// (including str itself).
-bool RE::PartialMatch(const char* str, const RE& re) {
- return re.is_valid_ && MatchRegexAnywhere(re.pattern_, str);
-}
-
-// Initializes an RE from its string representation.
-void RE::Init(const char* regex) {
- pattern_ = full_pattern_ = NULL;
- if (regex != NULL) {
- pattern_ = posix::StrDup(regex);
- }
-
- is_valid_ = ValidateRegex(regex);
- if (!is_valid_) {
- // No need to calculate the full pattern when the regex is invalid.
- return;
- }
-
- const size_t len = strlen(regex);
- // Reserves enough bytes to hold the regular expression used for a
- // full match: we need space to prepend a '^', append a '$', and
- // terminate the string with '\0'.
- char* buffer = static_cast<char*>(malloc(len + 3));
- full_pattern_ = buffer;
-
- if (*regex != '^')
- *buffer++ = '^'; // Makes sure full_pattern_ starts with '^'.
-
- // We don't use snprintf or strncpy, as they trigger a warning when
- // compiled with VC++ 8.0.
- memcpy(buffer, regex, len);
- buffer += len;
-
- if (len == 0 || regex[len - 1] != '$')
- *buffer++ = '$'; // Makes sure full_pattern_ ends with '$'.
-
- *buffer = '\0';
-}
-
-#endif // GTEST_USES_POSIX_RE
-
-const char kUnknownFile[] = "unknown file";
-
-// Formats a source file path and a line number as they would appear
-// in an error message from the compiler used to compile this code.
-GTEST_API_ ::std::string FormatFileLocation(const char* file, int line) {
- const std::string file_name(file == NULL ? kUnknownFile : file);
-
- if (line < 0) {
- return file_name + ":";
- }
-#ifdef _MSC_VER
- return file_name + "(" + StreamableToString(line) + "):";
-#else
- return file_name + ":" + StreamableToString(line) + ":";
-#endif // _MSC_VER
-}
-
-// Formats a file location for compiler-independent XML output.
-// Although this function is not platform dependent, we put it next to
-// FormatFileLocation in order to contrast the two functions.
-// Note that FormatCompilerIndependentFileLocation() does NOT append colon
-// to the file location it produces, unlike FormatFileLocation().
-GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(
- const char* file, int line) {
- const std::string file_name(file == NULL ? kUnknownFile : file);
-
- if (line < 0)
- return file_name;
- else
- return file_name + ":" + StreamableToString(line);
-}
-
-GTestLog::GTestLog(GTestLogSeverity severity, const char* file, int line)
- : severity_(severity) {
- const char* const marker =
- severity == GTEST_INFO ? "[ INFO ]" :
- severity == GTEST_WARNING ? "[WARNING]" :
- severity == GTEST_ERROR ? "[ ERROR ]" : "[ FATAL ]";
- GetStream() << ::std::endl << marker << " "
- << FormatFileLocation(file, line).c_str() << ": ";
-}
-
-// Flushes the buffers and, if severity is GTEST_FATAL, aborts the program.
-GTestLog::~GTestLog() {
- GetStream() << ::std::endl;
- if (severity_ == GTEST_FATAL) {
- fflush(stderr);
- posix::Abort();
- }
-}
-// Disable Microsoft deprecation warnings for POSIX functions called from
-// this class (creat, dup, dup2, and close)
-GTEST_DISABLE_MSC_WARNINGS_PUSH_(4996)
-
-#if GTEST_HAS_STREAM_REDIRECTION
-
-// Object that captures an output stream (stdout/stderr).
-class CapturedStream {
- public:
- // The ctor redirects the stream to a temporary file.
- explicit CapturedStream(int fd) : fd_(fd), uncaptured_fd_(dup(fd)) {
-# if GTEST_OS_WINDOWS
- char temp_dir_path[MAX_PATH + 1] = { '\0' }; // NOLINT
- char temp_file_path[MAX_PATH + 1] = { '\0' }; // NOLINT
-
- ::GetTempPathA(sizeof(temp_dir_path), temp_dir_path);
- const UINT success = ::GetTempFileNameA(temp_dir_path,
- "gtest_redir",
- 0, // Generate unique file name.
- temp_file_path);
- GTEST_CHECK_(success != 0)
- << "Unable to create a temporary file in " << temp_dir_path;
- const int captured_fd = creat(temp_file_path, _S_IREAD | _S_IWRITE);
- GTEST_CHECK_(captured_fd != -1) << "Unable to open temporary file "
- << temp_file_path;
- filename_ = temp_file_path;
-# else
- // There's no guarantee that a test has write access to the current
- // directory, so we create the temporary file in the /tmp directory
- // instead. We use /tmp on most systems, and /sdcard on Android.
- // That's because Android doesn't have /tmp.
-# if GTEST_OS_LINUX_ANDROID
- // Note: Android applications are expected to call the framework's
- // Context.getExternalStorageDirectory() method through JNI to get
- // the location of the world-writable SD Card directory. However,
- // this requires a Context handle, which cannot be retrieved
- // globally from native code. Doing so also precludes running the
- // code as part of a regular standalone executable, which doesn't
- // run in a Dalvik process (e.g. when running it through 'adb shell').
- //
- // The location /sdcard is directly accessible from native code
- // and is the only location (unofficially) supported by the Android
- // team. It's generally a symlink to the real SD Card mount point
- // which can be /mnt/sdcard, /mnt/sdcard0, /system/media/sdcard, or
- // other OEM-customized locations. Never rely on these, and always
- // use /sdcard.
- char name_template[] = "/sdcard/gtest_captured_stream.XXXXXX";
-# else
- char name_template[] = "/tmp/captured_stream.XXXXXX";
-# endif // GTEST_OS_LINUX_ANDROID
- const int captured_fd = mkstemp(name_template);
- filename_ = name_template;
-# endif // GTEST_OS_WINDOWS
- fflush(NULL);
- dup2(captured_fd, fd_);
- close(captured_fd);
- }
-
- ~CapturedStream() {
- remove(filename_.c_str());
- }
-
- std::string GetCapturedString() {
- if (uncaptured_fd_ != -1) {
- // Restores the original stream.
- fflush(NULL);
- dup2(uncaptured_fd_, fd_);
- close(uncaptured_fd_);
- uncaptured_fd_ = -1;
- }
-
- FILE* const file = posix::FOpen(filename_.c_str(), "r");
- const std::string content = ReadEntireFile(file);
- posix::FClose(file);
- return content;
- }
-
- private:
- const int fd_; // A stream to capture.
- int uncaptured_fd_;
- // Name of the temporary file holding the stderr output.
- ::std::string filename_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(CapturedStream);
-};
-
-GTEST_DISABLE_MSC_WARNINGS_POP_()
-
-static CapturedStream* g_captured_stderr = NULL;
-static CapturedStream* g_captured_stdout = NULL;
-
-// Starts capturing an output stream (stdout/stderr).
-void CaptureStream(int fd, const char* stream_name, CapturedStream** stream) {
- if (*stream != NULL) {
- GTEST_LOG_(FATAL) << "Only one " << stream_name
- << " capturer can exist at a time.";
- }
- *stream = new CapturedStream(fd);
-}
-
-// Stops capturing the output stream and returns the captured string.
-std::string GetCapturedStream(CapturedStream** captured_stream) {
- const std::string content = (*captured_stream)->GetCapturedString();
-
- delete *captured_stream;
- *captured_stream = NULL;
-
- return content;
-}
-
-// Starts capturing stdout.
-void CaptureStdout() {
- CaptureStream(kStdOutFileno, "stdout", &g_captured_stdout);
-}
-
-// Starts capturing stderr.
-void CaptureStderr() {
- CaptureStream(kStdErrFileno, "stderr", &g_captured_stderr);
-}
-
-// Stops capturing stdout and returns the captured string.
-std::string GetCapturedStdout() {
- return GetCapturedStream(&g_captured_stdout);
-}
-
-// Stops capturing stderr and returns the captured string.
-std::string GetCapturedStderr() {
- return GetCapturedStream(&g_captured_stderr);
-}
-
-#endif // GTEST_HAS_STREAM_REDIRECTION
-
-std::string TempDir() {
-#if GTEST_OS_WINDOWS_MOBILE
- return "\\temp\\";
-#elif GTEST_OS_WINDOWS
- const char* temp_dir = posix::GetEnv("TEMP");
- if (temp_dir == NULL || temp_dir[0] == '\0')
- return "\\temp\\";
- else if (temp_dir[strlen(temp_dir) - 1] == '\\')
- return temp_dir;
- else
- return std::string(temp_dir) + "\\";
-#elif GTEST_OS_LINUX_ANDROID
- return "/sdcard/";
-#else
- return "/tmp/";
-#endif // GTEST_OS_WINDOWS_MOBILE
-}
-
-size_t GetFileSize(FILE* file) {
- fseek(file, 0, SEEK_END);
- return static_cast<size_t>(ftell(file));
-}
-
-std::string ReadEntireFile(FILE* file) {
- const size_t file_size = GetFileSize(file);
- char* const buffer = new char[file_size];
-
- size_t bytes_last_read = 0; // # of bytes read in the last fread()
- size_t bytes_read = 0; // # of bytes read so far
-
- fseek(file, 0, SEEK_SET);
-
- // Keeps reading the file until we cannot read further or the
- // pre-determined file size is reached.
- do {
- bytes_last_read = fread(buffer+bytes_read, 1, file_size-bytes_read, file);
- bytes_read += bytes_last_read;
- } while (bytes_last_read > 0 && bytes_read < file_size);
-
- const std::string content(buffer, bytes_read);
- delete[] buffer;
-
- return content;
-}
-
-#if GTEST_HAS_DEATH_TEST
-
-static const ::std::vector<testing::internal::string>* g_injected_test_argvs =
- NULL; // Owned.
-
-void SetInjectableArgvs(const ::std::vector<testing::internal::string>* argvs) {
- if (g_injected_test_argvs != argvs)
- delete g_injected_test_argvs;
- g_injected_test_argvs = argvs;
-}
-
-const ::std::vector<testing::internal::string>& GetInjectableArgvs() {
- if (g_injected_test_argvs != NULL) {
- return *g_injected_test_argvs;
- }
- return GetArgvs();
-}
-#endif // GTEST_HAS_DEATH_TEST
-
-#if GTEST_OS_WINDOWS_MOBILE
-namespace posix {
-void Abort() {
- DebugBreak();
- TerminateProcess(GetCurrentProcess(), 1);
-}
-} // namespace posix
-#endif // GTEST_OS_WINDOWS_MOBILE
-
-// Returns the name of the environment variable corresponding to the
-// given flag. For example, FlagToEnvVar("foo") will return
-// "GTEST_FOO" in the open-source version.
-static std::string FlagToEnvVar(const char* flag) {
- const std::string full_flag =
- (Message() << GTEST_FLAG_PREFIX_ << flag).GetString();
-
- Message env_var;
- for (size_t i = 0; i != full_flag.length(); i++) {
- env_var << ToUpper(full_flag.c_str()[i]);
- }
-
- return env_var.GetString();
-}
-
-// Parses 'str' for a 32-bit signed integer. If successful, writes
-// the result to *value and returns true; otherwise leaves *value
-// unchanged and returns false.
-bool ParseInt32(const Message& src_text, const char* str, Int32* value) {
- // Parses the environment variable as a decimal integer.
- char* end = NULL;
- const long long_value = strtol(str, &end, 10); // NOLINT
-
- // Has strtol() consumed all characters in the string?
- if (*end != '\0') {
- // No - an invalid character was encountered.
- Message msg;
- msg << "WARNING: " << src_text
- << " is expected to be a 32-bit integer, but actually"
- << " has value \"" << str << "\".\n";
- printf("%s", msg.GetString().c_str());
- fflush(stdout);
- return false;
- }
-
- // Is the parsed value in the range of an Int32?
- const Int32 result = static_cast<Int32>(long_value);
- if (long_value == LONG_MAX || long_value == LONG_MIN ||
- // The parsed value overflows as a long. (strtol() returns
- // LONG_MAX or LONG_MIN when the input overflows.)
- result != long_value
- // The parsed value overflows as an Int32.
- ) {
- Message msg;
- msg << "WARNING: " << src_text
- << " is expected to be a 32-bit integer, but actually"
- << " has value " << str << ", which overflows.\n";
- printf("%s", msg.GetString().c_str());
- fflush(stdout);
- return false;
- }
-
- *value = result;
- return true;
-}
-
-// Reads and returns the Boolean environment variable corresponding to
-// the given flag; if it's not set, returns default_value.
-//
-// The value is considered true iff it's not "0".
-bool BoolFromGTestEnv(const char* flag, bool default_value) {
-#if defined(GTEST_GET_BOOL_FROM_ENV_)
- return GTEST_GET_BOOL_FROM_ENV_(flag, default_value);
-#endif // defined(GTEST_GET_BOOL_FROM_ENV_)
- const std::string env_var = FlagToEnvVar(flag);
- const char* const string_value = posix::GetEnv(env_var.c_str());
- return string_value == NULL ?
- default_value : strcmp(string_value, "0") != 0;
-}
-
-// Reads and returns a 32-bit integer stored in the environment
-// variable corresponding to the given flag; if it isn't set or
-// doesn't represent a valid 32-bit integer, returns default_value.
-Int32 Int32FromGTestEnv(const char* flag, Int32 default_value) {
-#if defined(GTEST_GET_INT32_FROM_ENV_)
- return GTEST_GET_INT32_FROM_ENV_(flag, default_value);
-#endif // defined(GTEST_GET_INT32_FROM_ENV_)
- const std::string env_var = FlagToEnvVar(flag);
- const char* const string_value = posix::GetEnv(env_var.c_str());
- if (string_value == NULL) {
- // The environment variable is not set.
- return default_value;
- }
-
- Int32 result = default_value;
- if (!ParseInt32(Message() << "Environment variable " << env_var,
- string_value, &result)) {
- printf("The default value %s is used.\n",
- (Message() << default_value).GetString().c_str());
- fflush(stdout);
- return default_value;
- }
-
- return result;
-}
-
-// Reads and returns the string environment variable corresponding to
-// the given flag; if it's not set, returns default_value.
-std::string StringFromGTestEnv(const char* flag, const char* default_value) {
-#if defined(GTEST_GET_STRING_FROM_ENV_)
- return GTEST_GET_STRING_FROM_ENV_(flag, default_value);
-#endif // defined(GTEST_GET_STRING_FROM_ENV_)
- const std::string env_var = FlagToEnvVar(flag);
- const char* value = posix::GetEnv(env_var.c_str());
- if (value != NULL) {
- return value;
- }
-
- // As a special case for the 'output' flag, if GTEST_OUTPUT is not
- // set, we look for XML_OUTPUT_FILE, which is set by the Bazel build
- // system. The value of XML_OUTPUT_FILE is a filename without the
- // "xml:" prefix of GTEST_OUTPUT.
- //
- // The net priority order after flag processing is thus:
- // --gtest_output command line flag
- // GTEST_OUTPUT environment variable
- // XML_OUTPUT_FILE environment variable
- // 'default_value'
- if (strcmp(flag, "output") == 0) {
- value = posix::GetEnv("XML_OUTPUT_FILE");
- if (value != NULL) {
- return std::string("xml:") + value;
- }
- }
- return default_value;
-}
-
-} // namespace internal
-} // namespace testing
diff --git a/test/gtest/src/gtest-printers.cc b/test/gtest/src/gtest-printers.cc
deleted file mode 100644
index a2df412..0000000
--- a/test/gtest/src/gtest-printers.cc
+++ /dev/null
@@ -1,373 +0,0 @@
-// Copyright 2007, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wan@google.com (Zhanyong Wan)
-
-// Google Test - The Google C++ Testing Framework
-//
-// This file implements a universal value printer that can print a
-// value of any type T:
-//
-// void ::testing::internal::UniversalPrinter<T>::Print(value, ostream_ptr);
-//
-// It uses the << operator when possible, and prints the bytes in the
-// object otherwise. A user can override its behavior for a class
-// type Foo by defining either operator<<(::std::ostream&, const Foo&)
-// or void PrintTo(const Foo&, ::std::ostream*) in the namespace that
-// defines Foo.
-
-#include "gtest/gtest-printers.h"
-#include <ctype.h>
-#include <stdio.h>
-#include <cwchar>
-#include <ostream> // NOLINT
-#include <string>
-#include "gtest/internal/gtest-port.h"
-
-namespace testing {
-
-namespace {
-
-using ::std::ostream;
-
-// Prints a segment of bytes in the given object.
-GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
-GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
-GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
-void PrintByteSegmentInObjectTo(const unsigned char* obj_bytes, size_t start,
- size_t count, ostream* os) {
- char text[5] = "";
- for (size_t i = 0; i != count; i++) {
- const size_t j = start + i;
- if (i != 0) {
- // Organizes the bytes into groups of 2 for easy parsing by
- // human.
- if ((j % 2) == 0)
- *os << ' ';
- else
- *os << '-';
- }
- GTEST_SNPRINTF_(text, sizeof(text), "%02X", obj_bytes[j]);
- *os << text;
- }
-}
-
-// Prints the bytes in the given value to the given ostream.
-void PrintBytesInObjectToImpl(const unsigned char* obj_bytes, size_t count,
- ostream* os) {
- // Tells the user how big the object is.
- *os << count << "-byte object <";
-
- const size_t kThreshold = 132;
- const size_t kChunkSize = 64;
- // If the object size is bigger than kThreshold, we'll have to omit
- // some details by printing only the first and the last kChunkSize
- // bytes.
- // TODO(wan): let the user control the threshold using a flag.
- if (count < kThreshold) {
- PrintByteSegmentInObjectTo(obj_bytes, 0, count, os);
- } else {
- PrintByteSegmentInObjectTo(obj_bytes, 0, kChunkSize, os);
- *os << " ... ";
- // Rounds up to 2-byte boundary.
- const size_t resume_pos = (count - kChunkSize + 1)/2*2;
- PrintByteSegmentInObjectTo(obj_bytes, resume_pos, count - resume_pos, os);
- }
- *os << ">";
-}
-
-} // namespace
-
-namespace internal2 {
-
-// Delegates to PrintBytesInObjectToImpl() to print the bytes in the
-// given object. The delegation simplifies the implementation, which
-// uses the << operator and thus is easier done outside of the
-// ::testing::internal namespace, which contains a << operator that
-// sometimes conflicts with the one in STL.
-void PrintBytesInObjectTo(const unsigned char* obj_bytes, size_t count,
- ostream* os) {
- PrintBytesInObjectToImpl(obj_bytes, count, os);
-}
-
-} // namespace internal2
-
-namespace internal {
-
-// Depending on the value of a char (or wchar_t), we print it in one
-// of three formats:
-// - as is if it's a printable ASCII (e.g. 'a', '2', ' '),
-// - as a hexidecimal escape sequence (e.g. '\x7F'), or
-// - as a special escape sequence (e.g. '\r', '\n').
-enum CharFormat {
- kAsIs,
- kHexEscape,
- kSpecialEscape
-};
-
-// Returns true if c is a printable ASCII character. We test the
-// value of c directly instead of calling isprint(), which is buggy on
-// Windows Mobile.
-inline bool IsPrintableAscii(wchar_t c) {
- return 0x20 <= c && c <= 0x7E;
-}
-
-// Prints a wide or narrow char c as a character literal without the
-// quotes, escaping it when necessary; returns how c was formatted.
-// The template argument UnsignedChar is the unsigned version of Char,
-// which is the type of c.
-template <typename UnsignedChar, typename Char>
-static CharFormat PrintAsCharLiteralTo(Char c, ostream* os) {
- switch (static_cast<wchar_t>(c)) {
- case L'\0':
- *os << "\\0";
- break;
- case L'\'':
- *os << "\\'";
- break;
- case L'\\':
- *os << "\\\\";
- break;
- case L'\a':
- *os << "\\a";
- break;
- case L'\b':
- *os << "\\b";
- break;
- case L'\f':
- *os << "\\f";
- break;
- case L'\n':
- *os << "\\n";
- break;
- case L'\r':
- *os << "\\r";
- break;
- case L'\t':
- *os << "\\t";
- break;
- case L'\v':
- *os << "\\v";
- break;
- default:
- if (IsPrintableAscii(c)) {
- *os << static_cast<char>(c);
- return kAsIs;
- } else {
- *os << "\\x" + String::FormatHexInt(static_cast<UnsignedChar>(c));
- return kHexEscape;
- }
- }
- return kSpecialEscape;
-}
-
-// Prints a wchar_t c as if it's part of a string literal, escaping it when
-// necessary; returns how c was formatted.
-static CharFormat PrintAsStringLiteralTo(wchar_t c, ostream* os) {
- switch (c) {
- case L'\'':
- *os << "'";
- return kAsIs;
- case L'"':
- *os << "\\\"";
- return kSpecialEscape;
- default:
- return PrintAsCharLiteralTo<wchar_t>(c, os);
- }
-}
-
-// Prints a char c as if it's part of a string literal, escaping it when
-// necessary; returns how c was formatted.
-static CharFormat PrintAsStringLiteralTo(char c, ostream* os) {
- return PrintAsStringLiteralTo(
- static_cast<wchar_t>(static_cast<unsigned char>(c)), os);
-}
-
-// Prints a wide or narrow character c and its code. '\0' is printed
-// as "'\\0'", other unprintable characters are also properly escaped
-// using the standard C++ escape sequence. The template argument
-// UnsignedChar is the unsigned version of Char, which is the type of c.
-template <typename UnsignedChar, typename Char>
-void PrintCharAndCodeTo(Char c, ostream* os) {
- // First, print c as a literal in the most readable form we can find.
- *os << ((sizeof(c) > 1) ? "L'" : "'");
- const CharFormat format = PrintAsCharLiteralTo<UnsignedChar>(c, os);
- *os << "'";
-
- // To aid user debugging, we also print c's code in decimal, unless
- // it's 0 (in which case c was printed as '\\0', making the code
- // obvious).
- if (c == 0)
- return;
- *os << " (" << static_cast<int>(c);
-
- // For more convenience, we print c's code again in hexidecimal,
- // unless c was already printed in the form '\x##' or the code is in
- // [1, 9].
- if (format == kHexEscape || (1 <= c && c <= 9)) {
- // Do nothing.
- } else {
- *os << ", 0x" << String::FormatHexInt(static_cast<UnsignedChar>(c));
- }
- *os << ")";
-}
-
-void PrintTo(unsigned char c, ::std::ostream* os) {
- PrintCharAndCodeTo<unsigned char>(c, os);
-}
-void PrintTo(signed char c, ::std::ostream* os) {
- PrintCharAndCodeTo<unsigned char>(c, os);
-}
-
-// Prints a wchar_t as a symbol if it is printable or as its internal
-// code otherwise and also as its code. L'\0' is printed as "L'\\0'".
-void PrintTo(wchar_t wc, ostream* os) {
- PrintCharAndCodeTo<wchar_t>(wc, os);
-}
-
-// Prints the given array of characters to the ostream. CharType must be either
-// char or wchar_t.
-// The array starts at begin, the length is len, it may include '\0' characters
-// and may not be NUL-terminated.
-template <typename CharType>
-GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
-GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
-GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
-static void PrintCharsAsStringTo(
- const CharType* begin, size_t len, ostream* os) {
- const char* const kQuoteBegin = sizeof(CharType) == 1 ? "\"" : "L\"";
- *os << kQuoteBegin;
- bool is_previous_hex = false;
- for (size_t index = 0; index < len; ++index) {
- const CharType cur = begin[index];
- if (is_previous_hex && IsXDigit(cur)) {
- // Previous character is of '\x..' form and this character can be
- // interpreted as another hexadecimal digit in its number. Break string to
- // disambiguate.
- *os << "\" " << kQuoteBegin;
- }
- is_previous_hex = PrintAsStringLiteralTo(cur, os) == kHexEscape;
- }
- *os << "\"";
-}
-
-// Prints a (const) char/wchar_t array of 'len' elements, starting at address
-// 'begin'. CharType must be either char or wchar_t.
-template <typename CharType>
-GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
-GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
-GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
-static void UniversalPrintCharArray(
- const CharType* begin, size_t len, ostream* os) {
- // The code
- // const char kFoo[] = "foo";
- // generates an array of 4, not 3, elements, with the last one being '\0'.
- //
- // Therefore when printing a char array, we don't print the last element if
- // it's '\0', such that the output matches the string literal as it's
- // written in the source code.
- if (len > 0 && begin[len - 1] == '\0') {
- PrintCharsAsStringTo(begin, len - 1, os);
- return;
- }
-
- // If, however, the last element in the array is not '\0', e.g.
- // const char kFoo[] = { 'f', 'o', 'o' };
- // we must print the entire array. We also print a message to indicate
- // that the array is not NUL-terminated.
- PrintCharsAsStringTo(begin, len, os);
- *os << " (no terminating NUL)";
-}
-
-// Prints a (const) char array of 'len' elements, starting at address 'begin'.
-void UniversalPrintArray(const char* begin, size_t len, ostream* os) {
- UniversalPrintCharArray(begin, len, os);
-}
-
-// Prints a (const) wchar_t array of 'len' elements, starting at address
-// 'begin'.
-void UniversalPrintArray(const wchar_t* begin, size_t len, ostream* os) {
- UniversalPrintCharArray(begin, len, os);
-}
-
-// Prints the given C string to the ostream.
-void PrintTo(const char* s, ostream* os) {
- if (s == NULL) {
- *os << "NULL";
- } else {
- *os << ImplicitCast_<const void*>(s) << " pointing to ";
- PrintCharsAsStringTo(s, strlen(s), os);
- }
-}
-
-// MSVC compiler can be configured to define whar_t as a typedef
-// of unsigned short. Defining an overload for const wchar_t* in that case
-// would cause pointers to unsigned shorts be printed as wide strings,
-// possibly accessing more memory than intended and causing invalid
-// memory accesses. MSVC defines _NATIVE_WCHAR_T_DEFINED symbol when
-// wchar_t is implemented as a native type.
-#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
-// Prints the given wide C string to the ostream.
-void PrintTo(const wchar_t* s, ostream* os) {
- if (s == NULL) {
- *os << "NULL";
- } else {
- *os << ImplicitCast_<const void*>(s) << " pointing to ";
- PrintCharsAsStringTo(s, std::wcslen(s), os);
- }
-}
-#endif // wchar_t is native
-
-// Prints a ::string object.
-#if GTEST_HAS_GLOBAL_STRING
-void PrintStringTo(const ::string& s, ostream* os) {
- PrintCharsAsStringTo(s.data(), s.size(), os);
-}
-#endif // GTEST_HAS_GLOBAL_STRING
-
-void PrintStringTo(const ::std::string& s, ostream* os) {
- PrintCharsAsStringTo(s.data(), s.size(), os);
-}
-
-// Prints a ::wstring object.
-#if GTEST_HAS_GLOBAL_WSTRING
-void PrintWideStringTo(const ::wstring& s, ostream* os) {
- PrintCharsAsStringTo(s.data(), s.size(), os);
-}
-#endif // GTEST_HAS_GLOBAL_WSTRING
-
-#if GTEST_HAS_STD_WSTRING
-void PrintWideStringTo(const ::std::wstring& s, ostream* os) {
- PrintCharsAsStringTo(s.data(), s.size(), os);
-}
-#endif // GTEST_HAS_STD_WSTRING
-
-} // namespace internal
-
-} // namespace testing
diff --git a/test/gtest/src/gtest-test-part.cc b/test/gtest/src/gtest-test-part.cc
deleted file mode 100644
index fb0e354..0000000
--- a/test/gtest/src/gtest-test-part.cc
+++ /dev/null
@@ -1,110 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: mheule@google.com (Markus Heule)
-//
-// The Google C++ Testing Framework (Google Test)
-
-#include "gtest/gtest-test-part.h"
-
-// Indicates that this translation unit is part of Google Test's
-// implementation. It must come before gtest-internal-inl.h is
-// included, or there will be a compiler error. This trick exists to
-// prevent the accidental inclusion of gtest-internal-inl.h in the
-// user's code.
-#define GTEST_IMPLEMENTATION_ 1
-#include "src/gtest-internal-inl.h"
-#undef GTEST_IMPLEMENTATION_
-
-namespace testing {
-
-using internal::GetUnitTestImpl;
-
-// Gets the summary of the failure message by omitting the stack trace
-// in it.
-std::string TestPartResult::ExtractSummary(const char* message) {
- const char* const stack_trace = strstr(message, internal::kStackTraceMarker);
- return stack_trace == NULL ? message :
- std::string(message, stack_trace);
-}
-
-// Prints a TestPartResult object.
-std::ostream& operator<<(std::ostream& os, const TestPartResult& result) {
- return os
- << result.file_name() << ":" << result.line_number() << ": "
- << (result.type() == TestPartResult::kSuccess ? "Success" :
- result.type() == TestPartResult::kFatalFailure ? "Fatal failure" :
- "Non-fatal failure") << ":\n"
- << result.message() << std::endl;
-}
-
-// Appends a TestPartResult to the array.
-void TestPartResultArray::Append(const TestPartResult& result) {
- array_.push_back(result);
-}
-
-// Returns the TestPartResult at the given index (0-based).
-const TestPartResult& TestPartResultArray::GetTestPartResult(int index) const {
- if (index < 0 || index >= size()) {
- printf("\nInvalid index (%d) into TestPartResultArray.\n", index);
- internal::posix::Abort();
- }
-
- return array_[index];
-}
-
-// Returns the number of TestPartResult objects in the array.
-int TestPartResultArray::size() const {
- return static_cast<int>(array_.size());
-}
-
-namespace internal {
-
-HasNewFatalFailureHelper::HasNewFatalFailureHelper()
- : has_new_fatal_failure_(false),
- original_reporter_(GetUnitTestImpl()->
- GetTestPartResultReporterForCurrentThread()) {
- GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(this);
-}
-
-HasNewFatalFailureHelper::~HasNewFatalFailureHelper() {
- GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(
- original_reporter_);
-}
-
-void HasNewFatalFailureHelper::ReportTestPartResult(
- const TestPartResult& result) {
- if (result.fatally_failed())
- has_new_fatal_failure_ = true;
- original_reporter_->ReportTestPartResult(result);
-}
-
-} // namespace internal
-
-} // namespace testing
diff --git a/test/gtest/src/gtest-typed-test.cc b/test/gtest/src/gtest-typed-test.cc
deleted file mode 100644
index df1eef4..0000000
--- a/test/gtest/src/gtest-typed-test.cc
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2008 Google Inc.
-// All Rights Reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wan@google.com (Zhanyong Wan)
-
-#include "gtest/gtest-typed-test.h"
-#include "gtest/gtest.h"
-
-namespace testing {
-namespace internal {
-
-#if GTEST_HAS_TYPED_TEST_P
-
-// Skips to the first non-space char in str. Returns an empty string if str
-// contains only whitespace characters.
-static const char* SkipSpaces(const char* str) {
- while (IsSpace(*str))
- str++;
- return str;
-}
-
-static std::vector<std::string> SplitIntoTestNames(const char* src) {
- std::vector<std::string> name_vec;
- src = SkipSpaces(src);
- for (; src != NULL; src = SkipComma(src)) {
- name_vec.push_back(StripTrailingSpaces(GetPrefixUntilComma(src)));
- }
- return name_vec;
-}
-
-// Verifies that registered_tests match the test names in
-// registered_tests_; returns registered_tests if successful, or
-// aborts the program otherwise.
-const char* TypedTestCasePState::VerifyRegisteredTestNames(
- const char* file, int line, const char* registered_tests) {
- typedef RegisteredTestsMap::const_iterator RegisteredTestIter;
- registered_ = true;
-
- std::vector<std::string> name_vec = SplitIntoTestNames(registered_tests);
-
- Message errors;
-
- std::set<std::string> tests;
- for (std::vector<std::string>::const_iterator name_it = name_vec.begin();
- name_it != name_vec.end(); ++name_it) {
- const std::string& name = *name_it;
- if (tests.count(name) != 0) {
- errors << "Test " << name << " is listed more than once.\n";
- continue;
- }
-
- bool found = false;
- for (RegisteredTestIter it = registered_tests_.begin();
- it != registered_tests_.end();
- ++it) {
- if (name == it->first) {
- found = true;
- break;
- }
- }
-
- if (found) {
- tests.insert(name);
- } else {
- errors << "No test named " << name
- << " can be found in this test case.\n";
- }
- }
-
- for (RegisteredTestIter it = registered_tests_.begin();
- it != registered_tests_.end();
- ++it) {
- if (tests.count(it->first) == 0) {
- errors << "You forgot to list test " << it->first << ".\n";
- }
- }
-
- const std::string& errors_str = errors.GetString();
- if (errors_str != "") {
- fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(),
- errors_str.c_str());
- fflush(stderr);
- posix::Abort();
- }
-
- return registered_tests;
-}
-
-#endif // GTEST_HAS_TYPED_TEST_P
-
-} // namespace internal
-} // namespace testing
diff --git a/test/gtest/src/gtest.cc b/test/gtest/src/gtest.cc
deleted file mode 100644
index d882ab2..0000000
--- a/test/gtest/src/gtest.cc
+++ /dev/null
@@ -1,5388 +0,0 @@
-// Copyright 2005, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: wan@google.com (Zhanyong Wan)
-//
-// The Google C++ Testing Framework (Google Test)
-
-#include "gtest/gtest.h"
-#include "gtest/internal/custom/gtest.h"
-#include "gtest/gtest-spi.h"
-
-#include <ctype.h>
-#include <math.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <wchar.h>
-#include <wctype.h>
-
-#include <algorithm>
-#include <iomanip>
-#include <limits>
-#include <list>
-#include <map>
-#include <ostream> // NOLINT
-#include <sstream>
-#include <vector>
-
-#if GTEST_OS_LINUX
-
-// TODO(kenton@google.com): Use autoconf to detect availability of
-// gettimeofday().
-# define GTEST_HAS_GETTIMEOFDAY_ 1
-
-# include <fcntl.h> // NOLINT
-# include <limits.h> // NOLINT
-# include <sched.h> // NOLINT
-// Declares vsnprintf(). This header is not available on Windows.
-# include <strings.h> // NOLINT
-# include <sys/mman.h> // NOLINT
-# include <sys/time.h> // NOLINT
-# include <unistd.h> // NOLINT
-# include <string>
-
-#elif GTEST_OS_SYMBIAN
-# define GTEST_HAS_GETTIMEOFDAY_ 1
-# include <sys/time.h> // NOLINT
-
-#elif GTEST_OS_ZOS
-# define GTEST_HAS_GETTIMEOFDAY_ 1
-# include <sys/time.h> // NOLINT
-
-// On z/OS we additionally need strings.h for strcasecmp.
-# include <strings.h> // NOLINT
-
-#elif GTEST_OS_WINDOWS_MOBILE // We are on Windows CE.
-
-# include <windows.h> // NOLINT
-# undef min
-
-#elif GTEST_OS_WINDOWS // We are on Windows proper.
-
-# include <io.h> // NOLINT
-# include <sys/timeb.h> // NOLINT
-# include <sys/types.h> // NOLINT
-# include <sys/stat.h> // NOLINT
-
-# if GTEST_OS_WINDOWS_MINGW
-// MinGW has gettimeofday() but not _ftime64().
-// TODO(kenton@google.com): Use autoconf to detect availability of
-// gettimeofday().
-// TODO(kenton@google.com): There are other ways to get the time on
-// Windows, like GetTickCount() or GetSystemTimeAsFileTime(). MinGW
-// supports these. consider using them instead.
-# define GTEST_HAS_GETTIMEOFDAY_ 1
-# include <sys/time.h> // NOLINT
-# endif // GTEST_OS_WINDOWS_MINGW
-
-// cpplint thinks that the header is already included, so we want to
-// silence it.
-# include <windows.h> // NOLINT
-# undef min
-
-#else
-
-// Assume other platforms have gettimeofday().
-// TODO(kenton@google.com): Use autoconf to detect availability of
-// gettimeofday().
-# define GTEST_HAS_GETTIMEOFDAY_ 1
-
-// cpplint thinks that the header is already included, so we want to
-// silence it.
-# include <sys/time.h> // NOLINT
-# include <unistd.h> // NOLINT
-
-#endif // GTEST_OS_LINUX
-
-#if GTEST_HAS_EXCEPTIONS
-# include <stdexcept>
-#endif
-
-#if GTEST_CAN_STREAM_RESULTS_
-# include <arpa/inet.h> // NOLINT
-# include <netdb.h> // NOLINT
-# include <sys/socket.h> // NOLINT
-# include <sys/types.h> // NOLINT
-#endif
-
-// Indicates that this translation unit is part of Google Test's
-// implementation. It must come before gtest-internal-inl.h is
-// included, or there will be a compiler error. This trick is to
-// prevent a user from accidentally including gtest-internal-inl.h in
-// his code.
-#define GTEST_IMPLEMENTATION_ 1
-#include "src/gtest-internal-inl.h"
-#undef GTEST_IMPLEMENTATION_
-
-#if GTEST_OS_WINDOWS
-# define vsnprintf _vsnprintf
-#endif // GTEST_OS_WINDOWS
-
-namespace testing {
-
-using internal::CountIf;
-using internal::ForEach;
-using internal::GetElementOr;
-using internal::Shuffle;
-
-// Constants.
-
-// A test whose test case name or test name matches this filter is
-// disabled and not run.
-static const char kDisableTestFilter[] = "DISABLED_*:*/DISABLED_*";
-
-// A test case whose name matches this filter is considered a death
-// test case and will be run before test cases whose name doesn't
-// match this filter.
-static const char kDeathTestCaseFilter[] = "*DeathTest:*DeathTest/*";
-
-// A test filter that matches everything.
-static const char kUniversalFilter[] = "*";
-
-// The default output file for XML output.
-static const char kDefaultOutputFile[] = "test_detail.xml";
-
-// The environment variable name for the test shard index.
-static const char kTestShardIndex[] = "GTEST_SHARD_INDEX";
-// The environment variable name for the total number of test shards.
-static const char kTestTotalShards[] = "GTEST_TOTAL_SHARDS";
-// The environment variable name for the test shard status file.
-static const char kTestShardStatusFile[] = "GTEST_SHARD_STATUS_FILE";
-
-namespace internal {
-
-// The text used in failure messages to indicate the start of the
-// stack trace.
-const char kStackTraceMarker[] = "\nStack trace:\n";
-
-// g_help_flag is true iff the --help flag or an equivalent form is
-// specified on the command line.
-bool g_help_flag = false;
-
-} // namespace internal
-
-static const char* GetDefaultFilter() {
-#ifdef GTEST_TEST_FILTER_ENV_VAR_
- const char* const testbridge_test_only = getenv(GTEST_TEST_FILTER_ENV_VAR_);
- if (testbridge_test_only != NULL) {
- return testbridge_test_only;
- }
-#endif // GTEST_TEST_FILTER_ENV_VAR_
- return kUniversalFilter;
-}
-
-GTEST_DEFINE_bool_(
- also_run_disabled_tests,
- internal::BoolFromGTestEnv("also_run_disabled_tests", false),
- "Run disabled tests too, in addition to the tests normally being run.");
-
-GTEST_DEFINE_bool_(
- break_on_failure,
- internal::BoolFromGTestEnv("break_on_failure", false),
- "True iff a failed assertion should be a debugger break-point.");
-
-GTEST_DEFINE_bool_(
- catch_exceptions,
- internal::BoolFromGTestEnv("catch_exceptions", true),
- "True iff " GTEST_NAME_
- " should catch exceptions and treat them as test failures.");
-
-GTEST_DEFINE_string_(
- color,
- internal::StringFromGTestEnv("color", "auto"),
- "Whether to use colors in the output. Valid values: yes, no, "
- "and auto. 'auto' means to use colors if the output is "
- "being sent to a terminal and the TERM environment variable "
- "is set to a terminal type that supports colors.");
-
-GTEST_DEFINE_string_(
- filter,
- internal::StringFromGTestEnv("filter", GetDefaultFilter()),
- "A colon-separated list of glob (not regex) patterns "
- "for filtering the tests to run, optionally followed by a "
- "'-' and a : separated list of negative patterns (tests to "
- "exclude). A test is run if it matches one of the positive "
- "patterns and does not match any of the negative patterns.");
-
-GTEST_DEFINE_bool_(list_tests, false,
- "List all tests without running them.");
-
-GTEST_DEFINE_string_(
- output,
- internal::StringFromGTestEnv("output", ""),
- "A format (currently must be \"xml\"), optionally followed "
- "by a colon and an output file name or directory. A directory "
- "is indicated by a trailing pathname separator. "
- "Examples: \"xml:filename.xml\", \"xml::directoryname/\". "
- "If a directory is specified, output files will be created "
- "within that directory, with file-names based on the test "
- "executable's name and, if necessary, made unique by adding "
- "digits.");
-
-GTEST_DEFINE_bool_(
- print_time,
- internal::BoolFromGTestEnv("print_time", true),
- "True iff " GTEST_NAME_
- " should display elapsed time in text output.");
-
-GTEST_DEFINE_int32_(
- random_seed,
- internal::Int32FromGTestEnv("random_seed", 0),
- "Random number seed to use when shuffling test orders. Must be in range "
- "[1, 99999], or 0 to use a seed based on the current time.");
-
-GTEST_DEFINE_int32_(
- repeat,
- internal::Int32FromGTestEnv("repeat", 1),
- "How many times to repeat each test. Specify a negative number "
- "for repeating forever. Useful for shaking out flaky tests.");
-
-GTEST_DEFINE_bool_(
- show_internal_stack_frames, false,
- "True iff " GTEST_NAME_ " should include internal stack frames when "
- "printing test failure stack traces.");
-
-GTEST_DEFINE_bool_(
- shuffle,
- internal::BoolFromGTestEnv("shuffle", false),
- "True iff " GTEST_NAME_
- " should randomize tests' order on every run.");
-
-GTEST_DEFINE_int32_(
- stack_trace_depth,
- internal::Int32FromGTestEnv("stack_trace_depth", kMaxStackTraceDepth),
- "The maximum number of stack frames to print when an "
- "assertion fails. The valid range is 0 through 100, inclusive.");
-
-GTEST_DEFINE_string_(
- stream_result_to,
- internal::StringFromGTestEnv("stream_result_to", ""),
- "This flag specifies the host name and the port number on which to stream "
- "test results. Example: \"localhost:555\". The flag is effective only on "
- "Linux.");
-
-GTEST_DEFINE_bool_(
- throw_on_failure,
- internal::BoolFromGTestEnv("throw_on_failure", false),
- "When this flag is specified, a failed assertion will throw an exception "
- "if exceptions are enabled or exit the program with a non-zero code "
- "otherwise.");
-
-#if GTEST_USE_OWN_FLAGFILE_FLAG_
-GTEST_DEFINE_string_(
- flagfile,
- internal::StringFromGTestEnv("flagfile", ""),
- "This flag specifies the flagfile to read command-line flags from.");
-#endif // GTEST_USE_OWN_FLAGFILE_FLAG_
-
-namespace internal {
-
-// Generates a random number from [0, range), using a Linear
-// Congruential Generator (LCG). Crashes if 'range' is 0 or greater
-// than kMaxRange.
-UInt32 Random::Generate(UInt32 range) {
- // These constants are the same as are used in glibc's rand(3).
- state_ = (1103515245U*state_ + 12345U) % kMaxRange;
-
- GTEST_CHECK_(range > 0)
- << "Cannot generate a number in the range [0, 0).";
- GTEST_CHECK_(range <= kMaxRange)
- << "Generation of a number in [0, " << range << ") was requested, "
- << "but this can only generate numbers in [0, " << kMaxRange << ").";
-
- // Converting via modulus introduces a bit of downward bias, but
- // it's simple, and a linear congruential generator isn't too good
- // to begin with.
- return state_ % range;
-}
-
-// GTestIsInitialized() returns true iff the user has initialized
-// Google Test. Useful for catching the user mistake of not initializing
-// Google Test before calling RUN_ALL_TESTS().
-static bool GTestIsInitialized() { return GetArgvs().size() > 0; }
-
-// Iterates over a vector of TestCases, keeping a running sum of the
-// results of calling a given int-returning method on each.
-// Returns the sum.
-static int SumOverTestCaseList(const std::vector<TestCase*>& case_list,
- int (TestCase::*method)() const) {
- int sum = 0;
- for (size_t i = 0; i < case_list.size(); i++) {
- sum += (case_list[i]->*method)();
- }
- return sum;
-}
-
-// Returns true iff the test case passed.
-static bool TestCasePassed(const TestCase* test_case) {
- return test_case->should_run() && test_case->Passed();
-}
-
-// Returns true iff the test case failed.
-static bool TestCaseFailed(const TestCase* test_case) {
- return test_case->should_run() && test_case->Failed();
-}
-
-// Returns true iff test_case contains at least one test that should
-// run.
-static bool ShouldRunTestCase(const TestCase* test_case) {
- return test_case->should_run();
-}
-
-// AssertHelper constructor.
-AssertHelper::AssertHelper(TestPartResult::Type type,
- const char* file,
- int line,
- const char* message)
- : data_(new AssertHelperData(type, file, line, message)) {
-}
-
-AssertHelper::~AssertHelper() {
- delete data_;
-}
-
-// Message assignment, for assertion streaming support.
-void AssertHelper::operator=(const Message& message) const {
- UnitTest::GetInstance()->
- AddTestPartResult(data_->type, data_->file, data_->line,
- AppendUserMessage(data_->message, message),
- UnitTest::GetInstance()->impl()
- ->CurrentOsStackTraceExceptTop(1)
- // Skips the stack frame for this function itself.
- ); // NOLINT
-}
-
-// Mutex for linked pointers.
-GTEST_API_ GTEST_DEFINE_STATIC_MUTEX_(g_linked_ptr_mutex);
-
-// A copy of all command line arguments. Set by InitGoogleTest().
-::std::vector<testing::internal::string> g_argvs;
-
-const ::std::vector<testing::internal::string>& GetArgvs() {
-#if defined(GTEST_CUSTOM_GET_ARGVS_)
- return GTEST_CUSTOM_GET_ARGVS_();
-#else // defined(GTEST_CUSTOM_GET_ARGVS_)
- return g_argvs;
-#endif // defined(GTEST_CUSTOM_GET_ARGVS_)
-}
-
-// Returns the current application's name, removing directory path if that
-// is present.
-FilePath GetCurrentExecutableName() {
- FilePath result;
-
-#if GTEST_OS_WINDOWS
- result.Set(FilePath(GetArgvs()[0]).RemoveExtension("exe"));
-#else
- result.Set(FilePath(GetArgvs()[0]));
-#endif // GTEST_OS_WINDOWS
-
- return result.RemoveDirectoryName();
-}
-
-// Functions for processing the gtest_output flag.
-
-// Returns the output format, or "" for normal printed output.
-std::string UnitTestOptions::GetOutputFormat() {
- const char* const gtest_output_flag = GTEST_FLAG(output).c_str();
- if (gtest_output_flag == NULL) return std::string("");
-
- const char* const colon = strchr(gtest_output_flag, ':');
- return (colon == NULL) ?
- std::string(gtest_output_flag) :
- std::string(gtest_output_flag, colon - gtest_output_flag);
-}
-
-// Returns the name of the requested output file, or the default if none
-// was explicitly specified.
-std::string UnitTestOptions::GetAbsolutePathToOutputFile() {
- const char* const gtest_output_flag = GTEST_FLAG(output).c_str();
- if (gtest_output_flag == NULL)
- return "";
-
- const char* const colon = strchr(gtest_output_flag, ':');
- if (colon == NULL)
- return internal::FilePath::ConcatPaths(
- internal::FilePath(
- UnitTest::GetInstance()->original_working_dir()),
- internal::FilePath(kDefaultOutputFile)).string();
-
- internal::FilePath output_name(colon + 1);
- if (!output_name.IsAbsolutePath())
- // TODO(wan@google.com): on Windows \some\path is not an absolute
- // path (as its meaning depends on the current drive), yet the
- // following logic for turning it into an absolute path is wrong.
- // Fix it.
- output_name = internal::FilePath::ConcatPaths(
- internal::FilePath(UnitTest::GetInstance()->original_working_dir()),
- internal::FilePath(colon + 1));
-
- if (!output_name.IsDirectory())
- return output_name.string();
-
- internal::FilePath result(internal::FilePath::GenerateUniqueFileName(
- output_name, internal::GetCurrentExecutableName(),
- GetOutputFormat().c_str()));
- return result.string();
-}
-
-// Returns true iff the wildcard pattern matches the string. The
-// first ':' or '\0' character in pattern marks the end of it.
-//
-// This recursive algorithm isn't very efficient, but is clear and
-// works well enough for matching test names, which are short.
-bool UnitTestOptions::PatternMatchesString(const char *pattern,
- const char *str) {
- switch (*pattern) {
- case '\0':
- case ':': // Either ':' or '\0' marks the end of the pattern.
- return *str == '\0';
- case '?': // Matches any single character.
- return *str != '\0' && PatternMatchesString(pattern + 1, str + 1);
- case '*': // Matches any string (possibly empty) of characters.
- return (*str != '\0' && PatternMatchesString(pattern, str + 1)) ||
- PatternMatchesString(pattern + 1, str);
- default: // Non-special character. Matches itself.
- return *pattern == *str &&
- PatternMatchesString(pattern + 1, str + 1);
- }
-}
-
-bool UnitTestOptions::MatchesFilter(
- const std::string& name, const char* filter) {
- const char *cur_pattern = filter;
- for (;;) {
- if (PatternMatchesString(cur_pattern, name.c_str())) {
- return true;
- }
-
- // Finds the next pattern in the filter.
- cur_pattern = strchr(cur_pattern, ':');
-
- // Returns if no more pattern can be found.
- if (cur_pattern == NULL) {
- return false;
- }
-
- // Skips the pattern separater (the ':' character).
- cur_pattern++;
- }
-}
-
-// Returns true iff the user-specified filter matches the test case
-// name and the test name.
-bool UnitTestOptions::FilterMatchesTest(const std::string &test_case_name,
- const std::string &test_name) {
- const std::string& full_name = test_case_name + "." + test_name.c_str();
-
- // Split --gtest_filter at '-', if there is one, to separate into
- // positive filter and negative filter portions
- const char* const p = GTEST_FLAG(filter).c_str();
- const char* const dash = strchr(p, '-');
- std::string positive;
- std::string negative;
- if (dash == NULL) {
- positive = GTEST_FLAG(filter).c_str(); // Whole string is a positive filter
- negative = "";
- } else {
- positive = std::string(p, dash); // Everything up to the dash
- negative = std::string(dash + 1); // Everything after the dash
- if (positive.empty()) {
- // Treat '-test1' as the same as '*-test1'
- positive = kUniversalFilter;
- }
- }
-
- // A filter is a colon-separated list of patterns. It matches a
- // test if any pattern in it matches the test.
- return (MatchesFilter(full_name, positive.c_str()) &&
- !MatchesFilter(full_name, negative.c_str()));
-}
-
-#if GTEST_HAS_SEH
-// Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the
-// given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise.
-// This function is useful as an __except condition.
-int UnitTestOptions::GTestShouldProcessSEH(DWORD exception_code) {
- // Google Test should handle a SEH exception if:
- // 1. the user wants it to, AND
- // 2. this is not a breakpoint exception, AND
- // 3. this is not a C++ exception (VC++ implements them via SEH,
- // apparently).
- //
- // SEH exception code for C++ exceptions.
- // (see http://support.microsoft.com/kb/185294 for more information).
- const DWORD kCxxExceptionCode = 0xe06d7363;
-
- bool should_handle = true;
-
- if (!GTEST_FLAG(catch_exceptions))
- should_handle = false;
- else if (exception_code == EXCEPTION_BREAKPOINT)
- should_handle = false;
- else if (exception_code == kCxxExceptionCode)
- should_handle = false;
-
- return should_handle ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH;
-}
-#endif // GTEST_HAS_SEH
-
-} // namespace internal
-
-// The c'tor sets this object as the test part result reporter used by
-// Google Test. The 'result' parameter specifies where to report the
-// results. Intercepts only failures from the current thread.
-ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter(
- TestPartResultArray* result)
- : intercept_mode_(INTERCEPT_ONLY_CURRENT_THREAD),
- result_(result) {
- Init();
-}
-
-// The c'tor sets this object as the test part result reporter used by
-// Google Test. The 'result' parameter specifies where to report the
-// results.
-ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter(
- InterceptMode intercept_mode, TestPartResultArray* result)
- : intercept_mode_(intercept_mode),
- result_(result) {
- Init();
-}
-
-void ScopedFakeTestPartResultReporter::Init() {
- internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
- if (intercept_mode_ == INTERCEPT_ALL_THREADS) {
- old_reporter_ = impl->GetGlobalTestPartResultReporter();
- impl->SetGlobalTestPartResultReporter(this);
- } else {
- old_reporter_ = impl->GetTestPartResultReporterForCurrentThread();
- impl->SetTestPartResultReporterForCurrentThread(this);
- }
-}
-
-// The d'tor restores the test part result reporter used by Google Test
-// before.
-ScopedFakeTestPartResultReporter::~ScopedFakeTestPartResultReporter() {
- internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
- if (intercept_mode_ == INTERCEPT_ALL_THREADS) {
- impl->SetGlobalTestPartResultReporter(old_reporter_);
- } else {
- impl->SetTestPartResultReporterForCurrentThread(old_reporter_);
- }
-}
-
-// Increments the test part result count and remembers the result.
-// This method is from the TestPartResultReporterInterface interface.
-void ScopedFakeTestPartResultReporter::ReportTestPartResult(
- const TestPartResult& result) {
- result_->Append(result);
-}
-
-namespace internal {
-
-// Returns the type ID of ::testing::Test. We should always call this
-// instead of GetTypeId< ::testing::Test>() to get the type ID of
-// testing::Test. This is to work around a suspected linker bug when
-// using Google Test as a framework on Mac OS X. The bug causes
-// GetTypeId< ::testing::Test>() to return different values depending
-// on whether the call is from the Google Test framework itself or
-// from user test code. GetTestTypeId() is guaranteed to always
-// return the same value, as it always calls GetTypeId<>() from the
-// gtest.cc, which is within the Google Test framework.
-TypeId GetTestTypeId() {
- return GetTypeId<Test>();
-}
-
-// The value of GetTestTypeId() as seen from within the Google Test
-// library. This is solely for testing GetTestTypeId().
-extern const TypeId kTestTypeIdInGoogleTest = GetTestTypeId();
-
-// This predicate-formatter checks that 'results' contains a test part
-// failure of the given type and that the failure message contains the
-// given substring.
-AssertionResult HasOneFailure(const char* /* results_expr */,
- const char* /* type_expr */,
- const char* /* substr_expr */,
- const TestPartResultArray& results,
- TestPartResult::Type type,
- const string& substr) {
- const std::string expected(type == TestPartResult::kFatalFailure ?
- "1 fatal failure" :
- "1 non-fatal failure");
- Message msg;
- if (results.size() != 1) {
- msg << "Expected: " << expected << "\n"
- << " Actual: " << results.size() << " failures";
- for (int i = 0; i < results.size(); i++) {
- msg << "\n" << results.GetTestPartResult(i);
- }
- return AssertionFailure() << msg;
- }
-
- const TestPartResult& r = results.GetTestPartResult(0);
- if (r.type() != type) {
- return AssertionFailure() << "Expected: " << expected << "\n"
- << " Actual:\n"
- << r;
- }
-
- if (strstr(r.message(), substr.c_str()) == NULL) {
- return AssertionFailure() << "Expected: " << expected << " containing \""
- << substr << "\"\n"
- << " Actual:\n"
- << r;
- }
-
- return AssertionSuccess();
-}
-
-// The constructor of SingleFailureChecker remembers where to look up
-// test part results, what type of failure we expect, and what
-// substring the failure message should contain.
-SingleFailureChecker:: SingleFailureChecker(
- const TestPartResultArray* results,
- TestPartResult::Type type,
- const string& substr)
- : results_(results),
- type_(type),
- substr_(substr) {}
-
-// The destructor of SingleFailureChecker verifies that the given
-// TestPartResultArray contains exactly one failure that has the given
-// type and contains the given substring. If that's not the case, a
-// non-fatal failure will be generated.
-SingleFailureChecker::~SingleFailureChecker() {
- EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_);
-}
-
-DefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter(
- UnitTestImpl* unit_test) : unit_test_(unit_test) {}
-
-void DefaultGlobalTestPartResultReporter::ReportTestPartResult(
- const TestPartResult& result) {
- unit_test_->current_test_result()->AddTestPartResult(result);
- unit_test_->listeners()->repeater()->OnTestPartResult(result);
-}
-
-DefaultPerThreadTestPartResultReporter::DefaultPerThreadTestPartResultReporter(
- UnitTestImpl* unit_test) : unit_test_(unit_test) {}
-
-void DefaultPerThreadTestPartResultReporter::ReportTestPartResult(
- const TestPartResult& result) {
- unit_test_->GetGlobalTestPartResultReporter()->ReportTestPartResult(result);
-}
-
-// Returns the global test part result reporter.
-TestPartResultReporterInterface*
-UnitTestImpl::GetGlobalTestPartResultReporter() {
- internal::MutexLock lock(&global_test_part_result_reporter_mutex_);
- return global_test_part_result_repoter_;
-}
-
-// Sets the global test part result reporter.
-void UnitTestImpl::SetGlobalTestPartResultReporter(
- TestPartResultReporterInterface* reporter) {
- internal::MutexLock lock(&global_test_part_result_reporter_mutex_);
- global_test_part_result_repoter_ = reporter;
-}
-
-// Returns the test part result reporter for the current thread.
-TestPartResultReporterInterface*
-UnitTestImpl::GetTestPartResultReporterForCurrentThread() {
- return per_thread_test_part_result_reporter_.get();
-}
-
-// Sets the test part result reporter for the current thread.
-void UnitTestImpl::SetTestPartResultReporterForCurrentThread(
- TestPartResultReporterInterface* reporter) {
- per_thread_test_part_result_reporter_.set(reporter);
-}
-
-// Gets the number of successful test cases.
-int UnitTestImpl::successful_test_case_count() const {
- return CountIf(test_cases_, TestCasePassed);
-}
-
-// Gets the number of failed test cases.
-int UnitTestImpl::failed_test_case_count() const {
- return CountIf(test_cases_, TestCaseFailed);
-}
-
-// Gets the number of all test cases.
-int UnitTestImpl::total_test_case_count() const {
- return static_cast<int>(test_cases_.size());
-}
-
-// Gets the number of all test cases that contain at least one test
-// that should run.
-int UnitTestImpl::test_case_to_run_count() const {
- return CountIf(test_cases_, ShouldRunTestCase);
-}
-
-// Gets the number of successful tests.
-int UnitTestImpl::successful_test_count() const {
- return SumOverTestCaseList(test_cases_, &TestCase::successful_test_count);
-}
-
-// Gets the number of failed tests.
-int UnitTestImpl::failed_test_count() const {
- return SumOverTestCaseList(test_cases_, &TestCase::failed_test_count);
-}
-
-// Gets the number of disabled tests that will be reported in the XML report.
-int UnitTestImpl::reportable_disabled_test_count() const {
- return SumOverTestCaseList(test_cases_,
- &TestCase::reportable_disabled_test_count);
-}
-
-// Gets the number of disabled tests.
-int UnitTestImpl::disabled_test_count() const {
- return SumOverTestCaseList(test_cases_, &TestCase::disabled_test_count);
-}
-
-// Gets the number of tests to be printed in the XML report.
-int UnitTestImpl::reportable_test_count() const {
- return SumOverTestCaseList(test_cases_, &TestCase::reportable_test_count);
-}
-
-// Gets the number of all tests.
-int UnitTestImpl::total_test_count() const {
- return SumOverTestCaseList(test_cases_, &TestCase::total_test_count);
-}
-
-// Gets the number of tests that should run.
-int UnitTestImpl::test_to_run_count() const {
- return SumOverTestCaseList(test_cases_, &TestCase::test_to_run_count);
-}
-
-// Returns the current OS stack trace as an std::string.
-//
-// The maximum number of stack frames to be included is specified by
-// the gtest_stack_trace_depth flag. The skip_count parameter
-// specifies the number of top frames to be skipped, which doesn't
-// count against the number of frames to be included.
-//
-// For example, if Foo() calls Bar(), which in turn calls
-// CurrentOsStackTraceExceptTop(1), Foo() will be included in the
-// trace but Bar() and CurrentOsStackTraceExceptTop() won't.
-std::string UnitTestImpl::CurrentOsStackTraceExceptTop(int skip_count) {
- return os_stack_trace_getter()->CurrentStackTrace(
- static_cast<int>(GTEST_FLAG(stack_trace_depth)),
- skip_count + 1
- // Skips the user-specified number of frames plus this function
- // itself.
- ); // NOLINT
-}
-
-// Returns the current time in milliseconds.
-TimeInMillis GetTimeInMillis() {
-#if GTEST_OS_WINDOWS_MOBILE || defined(__BORLANDC__)
- // Difference between 1970-01-01 and 1601-01-01 in milliseconds.
- // http://analogous.blogspot.com/2005/04/epoch.html
- const TimeInMillis kJavaEpochToWinFileTimeDelta =
- static_cast<TimeInMillis>(116444736UL) * 100000UL;
- const DWORD kTenthMicrosInMilliSecond = 10000;
-
- SYSTEMTIME now_systime;
- FILETIME now_filetime;
- ULARGE_INTEGER now_int64;
- // TODO(kenton@google.com): Shouldn't this just use
- // GetSystemTimeAsFileTime()?
- GetSystemTime(&now_systime);
- if (SystemTimeToFileTime(&now_systime, &now_filetime)) {
- now_int64.LowPart = now_filetime.dwLowDateTime;
- now_int64.HighPart = now_filetime.dwHighDateTime;
- now_int64.QuadPart = (now_int64.QuadPart / kTenthMicrosInMilliSecond) -
- kJavaEpochToWinFileTimeDelta;
- return now_int64.QuadPart;
- }
- return 0;
-#elif GTEST_OS_WINDOWS && !GTEST_HAS_GETTIMEOFDAY_
- __timeb64 now;
-
- // MSVC 8 deprecates _ftime64(), so we want to suppress warning 4996
- // (deprecated function) there.
- // TODO(kenton@google.com): Use GetTickCount()? Or use
- // SystemTimeToFileTime()
- GTEST_DISABLE_MSC_WARNINGS_PUSH_(4996)
- _ftime64(&now);
- GTEST_DISABLE_MSC_WARNINGS_POP_()
-
- return static_cast<TimeInMillis>(now.time) * 1000 + now.millitm;
-#elif GTEST_HAS_GETTIMEOFDAY_
- struct timeval now;
- gettimeofday(&now, NULL);
- return static_cast<TimeInMillis>(now.tv_sec) * 1000 + now.tv_usec / 1000;
-#else
-# error "Don't know how to get the current time on your system."
-#endif
-}
-
-// Utilities
-
-// class String.
-
-#if GTEST_OS_WINDOWS_MOBILE
-// Creates a UTF-16 wide string from the given ANSI string, allocating
-// memory using new. The caller is responsible for deleting the return
-// value using delete[]. Returns the wide string, or NULL if the
-// input is NULL.
-LPCWSTR String::AnsiToUtf16(const char* ansi) {
- if (!ansi) return NULL;
- const int length = strlen(ansi);
- const int unicode_length =
- MultiByteToWideChar(CP_ACP, 0, ansi, length,
- NULL, 0);
- WCHAR* unicode = new WCHAR[unicode_length + 1];
- MultiByteToWideChar(CP_ACP, 0, ansi, length,
- unicode, unicode_length);
- unicode[unicode_length] = 0;
- return unicode;
-}
-
-// Creates an ANSI string from the given wide string, allocating
-// memory using new. The caller is responsible for deleting the return
-// value using delete[]. Returns the ANSI string, or NULL if the
-// input is NULL.
-const char* String::Utf16ToAnsi(LPCWSTR utf16_str) {
- if (!utf16_str) return NULL;
- const int ansi_length =
- WideCharToMultiByte(CP_ACP, 0, utf16_str, -1,
- NULL, 0, NULL, NULL);
- char* ansi = new char[ansi_length + 1];
- WideCharToMultiByte(CP_ACP, 0, utf16_str, -1,
- ansi, ansi_length, NULL, NULL);
- ansi[ansi_length] = 0;
- return ansi;
-}
-
-#endif // GTEST_OS_WINDOWS_MOBILE
-
-// Compares two C strings. Returns true iff they have the same content.
-//
-// Unlike strcmp(), this function can handle NULL argument(s). A NULL
-// C string is considered different to any non-NULL C string,
-// including the empty string.
-bool String::CStringEquals(const char * lhs, const char * rhs) {
- if ( lhs == NULL ) return rhs == NULL;
-
- if ( rhs == NULL ) return false;
-
- return strcmp(lhs, rhs) == 0;
-}
-
-#if GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING
-
-// Converts an array of wide chars to a narrow string using the UTF-8
-// encoding, and streams the result to the given Message object.
-static void StreamWideCharsToMessage(const wchar_t* wstr, size_t length,
- Message* msg) {
- for (size_t i = 0; i != length; ) { // NOLINT
- if (wstr[i] != L'\0') {
- *msg << WideStringToUtf8(wstr + i, static_cast<int>(length - i));
- while (i != length && wstr[i] != L'\0')
- i++;
- } else {
- *msg << '\0';
- i++;
- }
- }
-}
-
-#endif // GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING
-
-void SplitString(const ::std::string& str, char delimiter,
- ::std::vector< ::std::string>* dest) {
- ::std::vector< ::std::string> parsed;
- ::std::string::size_type pos = 0;
- while (::testing::internal::AlwaysTrue()) {
- const ::std::string::size_type colon = str.find(delimiter, pos);
- if (colon == ::std::string::npos) {
- parsed.push_back(str.substr(pos));
- break;
- } else {
- parsed.push_back(str.substr(pos, colon - pos));
- pos = colon + 1;
- }
- }
- dest->swap(parsed);
-}
-
-} // namespace internal
-
-// Constructs an empty Message.
-// We allocate the stringstream separately because otherwise each use of
-// ASSERT/EXPECT in a procedure adds over 200 bytes to the procedure's
-// stack frame leading to huge stack frames in some cases; gcc does not reuse
-// the stack space.
-Message::Message() : ss_(new ::std::stringstream) {
- // By default, we want there to be enough precision when printing
- // a double to a Message.
- *ss_ << std::setprecision(std::numeric_limits<double>::digits10 + 2);
-}
-
-// These two overloads allow streaming a wide C string to a Message
-// using the UTF-8 encoding.
-Message& Message::operator <<(const wchar_t* wide_c_str) {
- return *this << internal::String::ShowWideCString(wide_c_str);
-}
-Message& Message::operator <<(wchar_t* wide_c_str) {
- return *this << internal::String::ShowWideCString(wide_c_str);
-}
-
-#if GTEST_HAS_STD_WSTRING
-// Converts the given wide string to a narrow string using the UTF-8
-// encoding, and streams the result to this Message object.
-Message& Message::operator <<(const ::std::wstring& wstr) {
- internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this);
- return *this;
-}
-#endif // GTEST_HAS_STD_WSTRING
-
-#if GTEST_HAS_GLOBAL_WSTRING
-// Converts the given wide string to a narrow string using the UTF-8
-// encoding, and streams the result to this Message object.
-Message& Message::operator <<(const ::wstring& wstr) {
- internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this);
- return *this;
-}
-#endif // GTEST_HAS_GLOBAL_WSTRING
-
-// Gets the text streamed to this object so far as an std::string.
-// Each '\0' character in the buffer is replaced with "\\0".
-std::string Message::GetString() const {
- return internal::StringStreamToString(ss_.get());
-}
-
-// AssertionResult constructors.
-// Used in EXPECT_TRUE/FALSE(assertion_result).
-AssertionResult::AssertionResult(const AssertionResult& other)
- : success_(other.success_),
- message_(other.message_.get() != NULL ?
- new ::std::string(*other.message_) :
- static_cast< ::std::string*>(NULL)) {
-}
-
-// Swaps two AssertionResults.
-void AssertionResult::swap(AssertionResult& other) {
- using std::swap;
- swap(success_, other.success_);
- swap(message_, other.message_);
-}
-
-// Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.
-AssertionResult AssertionResult::operator!() const {
- AssertionResult negation(!success_);
- if (message_.get() != NULL)
- negation << *message_;
- return negation;
-}
-
-// Makes a successful assertion result.
-AssertionResult AssertionSuccess() {
- return AssertionResult(true);
-}
-
-// Makes a failed assertion result.
-AssertionResult AssertionFailure() {
- return AssertionResult(false);
-}
-
-// Makes a failed assertion result with the given failure message.
-// Deprecated; use AssertionFailure() << message.
-AssertionResult AssertionFailure(const Message& message) {
- return AssertionFailure() << message;
-}
-
-namespace internal {
-
-namespace edit_distance {
-std::vector<EditType> CalculateOptimalEdits(const std::vector<size_t>& left,
- const std::vector<size_t>& right) {
- std::vector<std::vector<double> > costs(
- left.size() + 1, std::vector<double>(right.size() + 1));
- std::vector<std::vector<EditType> > best_move(
- left.size() + 1, std::vector<EditType>(right.size() + 1));
-
- // Populate for empty right.
- for (size_t l_i = 0; l_i < costs.size(); ++l_i) {
- costs[l_i][0] = static_cast<double>(l_i);
- best_move[l_i][0] = kRemove;
- }
- // Populate for empty left.
- for (size_t r_i = 1; r_i < costs[0].size(); ++r_i) {
- costs[0][r_i] = static_cast<double>(r_i);
- best_move[0][r_i] = kAdd;
- }
-
- for (size_t l_i = 0; l_i < left.size(); ++l_i) {
- for (size_t r_i = 0; r_i < right.size(); ++r_i) {
- if (left[l_i] == right[r_i]) {
- // Found a match. Consume it.
- costs[l_i + 1][r_i + 1] = costs[l_i][r_i];
- best_move[l_i + 1][r_i + 1] = kMatch;
- continue;
- }
-
- const double add = costs[l_i + 1][r_i];
- const double remove = costs[l_i][r_i + 1];
- const double replace = costs[l_i][r_i];
- if (add < remove && add < replace) {
- costs[l_i + 1][r_i + 1] = add + 1;
- best_move[l_i + 1][r_i + 1] = kAdd;
- } else if (remove < add && remove < replace) {
- costs[l_i + 1][r_i + 1] = remove + 1;
- best_move[l_i + 1][r_i + 1] = kRemove;
- } else {
- // We make replace a little more expensive than add/remove to lower
- // their priority.
- costs[l_i + 1][r_i + 1] = replace + 1.00001;
- best_move[l_i + 1][r_i + 1] = kReplace;
- }
- }
- }
-
- // Reconstruct the best path. We do it in reverse order.
- std::vector<EditType> best_path;
- for (size_t l_i = left.size(), r_i = right.size(); l_i > 0 || r_i > 0;) {
- EditType move = best_move[l_i][r_i];
- best_path.push_back(move);
- l_i -= move != kAdd;
- r_i -= move != kRemove;
- }
- std::reverse(best_path.begin(), best_path.end());
- return best_path;
-}
-
-namespace {
-
-// Helper class to convert string into ids with deduplication.
-class InternalStrings {
- public:
- size_t GetId(const std::string& str) {
- IdMap::iterator it = ids_.find(str);
- if (it != ids_.end()) return it->second;
- size_t id = ids_.size();
- return ids_[str] = id;
- }
-
- private:
- typedef std::map<std::string, size_t> IdMap;
- IdMap ids_;
-};
-
-} // namespace
-
-std::vector<EditType> CalculateOptimalEdits(
- const std::vector<std::string>& left,
- const std::vector<std::string>& right) {
- std::vector<size_t> left_ids, right_ids;
- {
- InternalStrings intern_table;
- for (size_t i = 0; i < left.size(); ++i) {
- left_ids.push_back(intern_table.GetId(left[i]));
- }
- for (size_t i = 0; i < right.size(); ++i) {
- right_ids.push_back(intern_table.GetId(right[i]));
- }
- }
- return CalculateOptimalEdits(left_ids, right_ids);
-}
-
-namespace {
-
-// Helper class that holds the state for one hunk and prints it out to the
-// stream.
-// It reorders adds/removes when possible to group all removes before all
-// adds. It also adds the hunk header before printint into the stream.
-class Hunk {
- public:
- Hunk(size_t left_start, size_t right_start)
- : left_start_(left_start),
- right_start_(right_start),
- adds_(),
- removes_(),
- common_() {}
-
- void PushLine(char edit, const char* line) {
- switch (edit) {
- case ' ':
- ++common_;
- FlushEdits();
- hunk_.push_back(std::make_pair(' ', line));
- break;
- case '-':
- ++removes_;
- hunk_removes_.push_back(std::make_pair('-', line));
- break;
- case '+':
- ++adds_;
- hunk_adds_.push_back(std::make_pair('+', line));
- break;
- }
- }
-
- void PrintTo(std::ostream* os) {
- PrintHeader(os);
- FlushEdits();
- for (std::list<std::pair<char, const char*> >::const_iterator it =
- hunk_.begin();
- it != hunk_.end(); ++it) {
- *os << it->first << it->second << "\n";
- }
- }
-
- bool has_edits() const { return adds_ || removes_; }
-
- private:
- void FlushEdits() {
- hunk_.splice(hunk_.end(), hunk_removes_);
- hunk_.splice(hunk_.end(), hunk_adds_);
- }
-
- // Print a unified diff header for one hunk.
- // The format is
- // "@@ -<left_start>,<left_length> +<right_start>,<right_length> @@"
- // where the left/right parts are ommitted if unnecessary.
- void PrintHeader(std::ostream* ss) const {
- *ss << "@@ ";
- if (removes_) {
- *ss << "-" << left_start_ << "," << (removes_ + common_);
- }
- if (removes_ && adds_) {
- *ss << " ";
- }
- if (adds_) {
- *ss << "+" << right_start_ << "," << (adds_ + common_);
- }
- *ss << " @@\n";
- }
-
- size_t left_start_, right_start_;
- size_t adds_, removes_, common_;
- std::list<std::pair<char, const char*> > hunk_, hunk_adds_, hunk_removes_;
-};
-
-} // namespace
-
-// Create a list of diff hunks in Unified diff format.
-// Each hunk has a header generated by PrintHeader above plus a body with
-// lines prefixed with ' ' for no change, '-' for deletion and '+' for
-// addition.
-// 'context' represents the desired unchanged prefix/suffix around the diff.
-// If two hunks are close enough that their contexts overlap, then they are
-// joined into one hunk.
-std::string CreateUnifiedDiff(const std::vector<std::string>& left,
- const std::vector<std::string>& right,
- size_t context) {
- const std::vector<EditType> edits = CalculateOptimalEdits(left, right);
-
- size_t l_i = 0, r_i = 0, edit_i = 0;
- std::stringstream ss;
- while (edit_i < edits.size()) {
- // Find first edit.
- while (edit_i < edits.size() && edits[edit_i] == kMatch) {
- ++l_i;
- ++r_i;
- ++edit_i;
- }
-
- // Find the first line to include in the hunk.
- const size_t prefix_context = std::min(l_i, context);
- Hunk hunk(l_i - prefix_context + 1, r_i - prefix_context + 1);
- for (size_t i = prefix_context; i > 0; --i) {
- hunk.PushLine(' ', left[l_i - i].c_str());
- }
-
- // Iterate the edits until we found enough suffix for the hunk or the input
- // is over.
- size_t n_suffix = 0;
- for (; edit_i < edits.size(); ++edit_i) {
- if (n_suffix >= context) {
- // Continue only if the next hunk is very close.
- std::vector<EditType>::const_iterator it = edits.begin() + edit_i;
- while (it != edits.end() && *it == kMatch) ++it;
- if (it == edits.end() || (it - edits.begin()) - edit_i >= context) {
- // There is no next edit or it is too far away.
- break;
- }
- }
-
- EditType edit = edits[edit_i];
- // Reset count when a non match is found.
- n_suffix = edit == kMatch ? n_suffix + 1 : 0;
-
- if (edit == kMatch || edit == kRemove || edit == kReplace) {
- hunk.PushLine(edit == kMatch ? ' ' : '-', left[l_i].c_str());
- }
- if (edit == kAdd || edit == kReplace) {
- hunk.PushLine('+', right[r_i].c_str());
- }
-
- // Advance indices, depending on edit type.
- l_i += edit != kAdd;
- r_i += edit != kRemove;
- }
-
- if (!hunk.has_edits()) {
- // We are done. We don't want this hunk.
- break;
- }
-
- hunk.PrintTo(&ss);
- }
- return ss.str();
-}
-
-} // namespace edit_distance
-
-namespace {
-
-// The string representation of the values received in EqFailure() are already
-// escaped. Split them on escaped '\n' boundaries. Leave all other escaped
-// characters the same.
-std::vector<std::string> SplitEscapedString(const std::string& str) {
- std::vector<std::string> lines;
- size_t start = 0, end = str.size();
- if (end > 2 && str[0] == '"' && str[end - 1] == '"') {
- ++start;
- --end;
- }
- bool escaped = false;
- for (size_t i = start; i + 1 < end; ++i) {
- if (escaped) {
- escaped = false;
- if (str[i] == 'n') {
- lines.push_back(str.substr(start, i - start - 1));
- start = i + 1;
- }
- } else {
- escaped = str[i] == '\\';
- }
- }
- lines.push_back(str.substr(start, end - start));
- return lines;
-}
-
-} // namespace
-
-// Constructs and returns the message for an equality assertion
-// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure.
-//
-// The first four parameters are the expressions used in the assertion
-// and their values, as strings. For example, for ASSERT_EQ(foo, bar)
-// where foo is 5 and bar is 6, we have:
-//
-// lhs_expression: "foo"
-// rhs_expression: "bar"
-// lhs_value: "5"
-// rhs_value: "6"
-//
-// The ignoring_case parameter is true iff the assertion is a
-// *_STRCASEEQ*. When it's true, the string "Ignoring case" will
-// be inserted into the message.
-AssertionResult EqFailure(const char* lhs_expression,
- const char* rhs_expression,
- const std::string& lhs_value,
- const std::string& rhs_value,
- bool ignoring_case) {
- Message msg;
- msg << " Expected: " << lhs_expression;
- if (lhs_value != lhs_expression) {
- msg << "\n Which is: " << lhs_value;
- }
- msg << "\nTo be equal to: " << rhs_expression;
- if (rhs_value != rhs_expression) {
- msg << "\n Which is: " << rhs_value;
- }
-
- if (ignoring_case) {
- msg << "\nIgnoring case";
- }
-
- if (!lhs_value.empty() && !rhs_value.empty()) {
- const std::vector<std::string> lhs_lines =
- SplitEscapedString(lhs_value);
- const std::vector<std::string> rhs_lines =
- SplitEscapedString(rhs_value);
- if (lhs_lines.size() > 1 || rhs_lines.size() > 1) {
- msg << "\nWith diff:\n"
- << edit_distance::CreateUnifiedDiff(lhs_lines, rhs_lines);
- }
- }
-
- return AssertionFailure() << msg;
-}
-
-// Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
-std::string GetBoolAssertionFailureMessage(
- const AssertionResult& assertion_result,
- const char* expression_text,
- const char* actual_predicate_value,
- const char* expected_predicate_value) {
- const char* actual_message = assertion_result.message();
- Message msg;
- msg << "Value of: " << expression_text
- << "\n Actual: " << actual_predicate_value;
- if (actual_message[0] != '\0')
- msg << " (" << actual_message << ")";
- msg << "\nExpected: " << expected_predicate_value;
- return msg.GetString();
-}
-
-// Helper function for implementing ASSERT_NEAR.
-AssertionResult DoubleNearPredFormat(const char* expr1,
- const char* expr2,
- const char* abs_error_expr,
- double val1,
- double val2,
- double abs_error) {
- const double diff = fabs(val1 - val2);
- if (diff <= abs_error) return AssertionSuccess();
-
- // TODO(wan): do not print the value of an expression if it's
- // already a literal.
- return AssertionFailure()
- << "The difference between " << expr1 << " and " << expr2
- << " is " << diff << ", which exceeds " << abs_error_expr << ", where\n"
- << expr1 << " evaluates to " << val1 << ",\n"
- << expr2 << " evaluates to " << val2 << ", and\n"
- << abs_error_expr << " evaluates to " << abs_error << ".";
-}
-
-
-// Helper template for implementing FloatLE() and DoubleLE().
-template <typename RawType>
-AssertionResult FloatingPointLE(const char* expr1,
- const char* expr2,
- RawType val1,
- RawType val2) {
- // Returns success if val1 is less than val2,
- if (val1 < val2) {
- return AssertionSuccess();
- }
-
- // or if val1 is almost equal to val2.
- const FloatingPoint<RawType> lhs(val1), rhs(val2);
- if (lhs.AlmostEquals(rhs)) {
- return AssertionSuccess();
- }
-
- // Note that the above two checks will both fail if either val1 or
- // val2 is NaN, as the IEEE floating-point standard requires that
- // any predicate involving a NaN must return false.
-
- ::std::stringstream val1_ss;
- val1_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
- << val1;
-
- ::std::stringstream val2_ss;
- val2_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
- << val2;
-
- return AssertionFailure()
- << "Expected: (" << expr1 << ") <= (" << expr2 << ")\n"
- << " Actual: " << StringStreamToString(&val1_ss) << " vs "
- << StringStreamToString(&val2_ss);
-}
-
-} // namespace internal
-
-// Asserts that val1 is less than, or almost equal to, val2. Fails
-// otherwise. In particular, it fails if either val1 or val2 is NaN.
-AssertionResult FloatLE(const char* expr1, const char* expr2,
- float val1, float val2) {
- return internal::FloatingPointLE<float>(expr1, expr2, val1, val2);
-}
-
-// Asserts that val1 is less than, or almost equal to, val2. Fails
-// otherwise. In particular, it fails if either val1 or val2 is NaN.
-AssertionResult DoubleLE(const char* expr1, const char* expr2,
- double val1, double val2) {
- return internal::FloatingPointLE<double>(expr1, expr2, val1, val2);
-}
-
-namespace internal {
-
-// The helper function for {ASSERT|EXPECT}_EQ with int or enum
-// arguments.
-AssertionResult CmpHelperEQ(const char* lhs_expression,
- const char* rhs_expression,
- BiggestInt lhs,
- BiggestInt rhs) {
- if (lhs == rhs) {
- return AssertionSuccess();
- }
-
- return EqFailure(lhs_expression,
- rhs_expression,
- FormatForComparisonFailureMessage(lhs, rhs),
- FormatForComparisonFailureMessage(rhs, lhs),
- false);
-}
-
-// A macro for implementing the helper functions needed to implement
-// ASSERT_?? and EXPECT_?? with integer or enum arguments. It is here
-// just to avoid copy-and-paste of similar code.
-#define GTEST_IMPL_CMP_HELPER_(op_name, op)\
-AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \
- BiggestInt val1, BiggestInt val2) {\
- if (val1 op val2) {\
- return AssertionSuccess();\
- } else {\
- return AssertionFailure() \
- << "Expected: (" << expr1 << ") " #op " (" << expr2\
- << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\
- << " vs " << FormatForComparisonFailureMessage(val2, val1);\
- }\
-}
-
-// Implements the helper function for {ASSERT|EXPECT}_NE with int or
-// enum arguments.
-GTEST_IMPL_CMP_HELPER_(NE, !=)
-// Implements the helper function for {ASSERT|EXPECT}_LE with int or
-// enum arguments.
-GTEST_IMPL_CMP_HELPER_(LE, <=)
-// Implements the helper function for {ASSERT|EXPECT}_LT with int or
-// enum arguments.
-GTEST_IMPL_CMP_HELPER_(LT, < )
-// Implements the helper function for {ASSERT|EXPECT}_GE with int or
-// enum arguments.
-GTEST_IMPL_CMP_HELPER_(GE, >=)
-// Implements the helper function for {ASSERT|EXPECT}_GT with int or
-// enum arguments.
-GTEST_IMPL_CMP_HELPER_(GT, > )
-
-#undef GTEST_IMPL_CMP_HELPER_
-
-// The helper function for {ASSERT|EXPECT}_STREQ.
-AssertionResult CmpHelperSTREQ(const char* lhs_expression,
- const char* rhs_expression,
- const char* lhs,
- const char* rhs) {
- if (String::CStringEquals(lhs, rhs)) {
- return AssertionSuccess();
- }
-
- return EqFailure(lhs_expression,
- rhs_expression,
- PrintToString(lhs),
- PrintToString(rhs),
- false);
-}
-
-// The helper function for {ASSERT|EXPECT}_STRCASEEQ.
-AssertionResult CmpHelperSTRCASEEQ(const char* lhs_expression,
- const char* rhs_expression,
- const char* lhs,
- const char* rhs) {
- if (String::CaseInsensitiveCStringEquals(lhs, rhs)) {
- return AssertionSuccess();
- }
-
- return EqFailure(lhs_expression,
- rhs_expression,
- PrintToString(lhs),
- PrintToString(rhs),
- true);
-}
-
-// The helper function for {ASSERT|EXPECT}_STRNE.
-AssertionResult CmpHelperSTRNE(const char* s1_expression,
- const char* s2_expression,
- const char* s1,
- const char* s2) {
- if (!String::CStringEquals(s1, s2)) {
- return AssertionSuccess();
- } else {
- return AssertionFailure() << "Expected: (" << s1_expression << ") != ("
- << s2_expression << "), actual: \""
- << s1 << "\" vs \"" << s2 << "\"";
- }
-}
-
-// The helper function for {ASSERT|EXPECT}_STRCASENE.
-AssertionResult CmpHelperSTRCASENE(const char* s1_expression,
- const char* s2_expression,
- const char* s1,
- const char* s2) {
- if (!String::CaseInsensitiveCStringEquals(s1, s2)) {
- return AssertionSuccess();
- } else {
- return AssertionFailure()
- << "Expected: (" << s1_expression << ") != ("
- << s2_expression << ") (ignoring case), actual: \""
- << s1 << "\" vs \"" << s2 << "\"";
- }
-}
-
-} // namespace internal
-
-namespace {
-
-// Helper functions for implementing IsSubString() and IsNotSubstring().
-
-// This group of overloaded functions return true iff needle is a
-// substring of haystack. NULL is considered a substring of itself
-// only.
-
-bool IsSubstringPred(const char* needle, const char* haystack) {
- if (needle == NULL || haystack == NULL)
- return needle == haystack;
-
- return strstr(haystack, needle) != NULL;
-}
-
-bool IsSubstringPred(const wchar_t* needle, const wchar_t* haystack) {
- if (needle == NULL || haystack == NULL)
- return needle == haystack;
-
- return wcsstr(haystack, needle) != NULL;
-}
-
-// StringType here can be either ::std::string or ::std::wstring.
-template <typename StringType>
-bool IsSubstringPred(const StringType& needle,
- const StringType& haystack) {
- return haystack.find(needle) != StringType::npos;
-}
-
-// This function implements either IsSubstring() or IsNotSubstring(),
-// depending on the value of the expected_to_be_substring parameter.
-// StringType here can be const char*, const wchar_t*, ::std::string,
-// or ::std::wstring.
-template <typename StringType>
-AssertionResult IsSubstringImpl(
- bool expected_to_be_substring,
- const char* needle_expr, const char* haystack_expr,
- const StringType& needle, const StringType& haystack) {
- if (IsSubstringPred(needle, haystack) == expected_to_be_substring)
- return AssertionSuccess();
-
- const bool is_wide_string = sizeof(needle[0]) > 1;
- const char* const begin_string_quote = is_wide_string ? "L\"" : "\"";
- return AssertionFailure()
- << "Value of: " << needle_expr << "\n"
- << " Actual: " << begin_string_quote << needle << "\"\n"
- << "Expected: " << (expected_to_be_substring ? "" : "not ")
- << "a substring of " << haystack_expr << "\n"
- << "Which is: " << begin_string_quote << haystack << "\"";
-}
-
-} // namespace
-
-// IsSubstring() and IsNotSubstring() check whether needle is a
-// substring of haystack (NULL is considered a substring of itself
-// only), and return an appropriate error message when they fail.
-
-AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const char* needle, const char* haystack) {
- return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const wchar_t* needle, const wchar_t* haystack) {
- return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const char* needle, const char* haystack) {
- return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const wchar_t* needle, const wchar_t* haystack) {
- return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::string& needle, const ::std::string& haystack) {
- return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::string& needle, const ::std::string& haystack) {
- return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
-}
-
-#if GTEST_HAS_STD_WSTRING
-AssertionResult IsSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::wstring& needle, const ::std::wstring& haystack) {
- return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
-}
-
-AssertionResult IsNotSubstring(
- const char* needle_expr, const char* haystack_expr,
- const ::std::wstring& needle, const ::std::wstring& haystack) {
- return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
-}
-#endif // GTEST_HAS_STD_WSTRING
-
-namespace internal {
-
-#if GTEST_OS_WINDOWS
-
-namespace {
-
-// Helper function for IsHRESULT{SuccessFailure} predicates
-AssertionResult HRESULTFailureHelper(const char* expr,
- const char* expected,
- long hr) { // NOLINT
-# if GTEST_OS_WINDOWS_MOBILE
-
- // Windows CE doesn't support FormatMessage.
- const char error_text[] = "";
-
-# else
-
- // Looks up the human-readable system message for the HRESULT code
- // and since we're not passing any params to FormatMessage, we don't
- // want inserts expanded.
- const DWORD kFlags = FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS;
- const DWORD kBufSize = 4096;
- // Gets the system's human readable message string for this HRESULT.
- char error_text[kBufSize] = { '\0' };
- DWORD message_length = ::FormatMessageA(kFlags,
- 0, // no source, we're asking system
- hr, // the error
- 0, // no line width restrictions
- error_text, // output buffer
- kBufSize, // buf size
- NULL); // no arguments for inserts
- // Trims tailing white space (FormatMessage leaves a trailing CR-LF)
- for (; message_length && IsSpace(error_text[message_length - 1]);
- --message_length) {
- error_text[message_length - 1] = '\0';
- }
-
-# endif // GTEST_OS_WINDOWS_MOBILE
-
- const std::string error_hex("0x" + String::FormatHexInt(hr));
- return ::testing::AssertionFailure()
- << "Expected: " << expr << " " << expected << ".\n"
- << " Actual: " << error_hex << " " << error_text << "\n";
-}
-
-} // namespace
-
-AssertionResult IsHRESULTSuccess(const char* expr, long hr) { // NOLINT
- if (SUCCEEDED(hr)) {
- return AssertionSuccess();
- }
- return HRESULTFailureHelper(expr, "succeeds", hr);
-}
-
-AssertionResult IsHRESULTFailure(const char* expr, long hr) { // NOLINT
- if (FAILED(hr)) {
- return AssertionSuccess();
- }
- return HRESULTFailureHelper(expr, "fails", hr);
-}
-
-#endif // GTEST_OS_WINDOWS
-
-// Utility functions for encoding Unicode text (wide strings) in
-// UTF-8.
-
-// A Unicode code-point can have upto 21 bits, and is encoded in UTF-8
-// like this:
-//
-// Code-point length Encoding
-// 0 - 7 bits 0xxxxxxx
-// 8 - 11 bits 110xxxxx 10xxxxxx
-// 12 - 16 bits 1110xxxx 10xxxxxx 10xxxxxx
-// 17 - 21 bits 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
-
-// The maximum code-point a one-byte UTF-8 sequence can represent.
-const UInt32 kMaxCodePoint1 = (static_cast<UInt32>(1) << 7) - 1;
-
-// The maximum code-point a two-byte UTF-8 sequence can represent.
-const UInt32 kMaxCodePoint2 = (static_cast<UInt32>(1) << (5 + 6)) - 1;
-
-// The maximum code-point a three-byte UTF-8 sequence can represent.
-const UInt32 kMaxCodePoint3 = (static_cast<UInt32>(1) << (4 + 2*6)) - 1;
-
-// The maximum code-point a four-byte UTF-8 sequence can represent.
-const UInt32 kMaxCodePoint4 = (static_cast<UInt32>(1) << (3 + 3*6)) - 1;
-
-// Chops off the n lowest bits from a bit pattern. Returns the n
-// lowest bits. As a side effect, the original bit pattern will be
-// shifted to the right by n bits.
-inline UInt32 ChopLowBits(UInt32* bits, int n) {
- const UInt32 low_bits = *bits & ((static_cast<UInt32>(1) << n) - 1);
- *bits >>= n;
- return low_bits;
-}
-
-// Converts a Unicode code point to a narrow string in UTF-8 encoding.
-// code_point parameter is of type UInt32 because wchar_t may not be
-// wide enough to contain a code point.
-// If the code_point is not a valid Unicode code point
-// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be converted
-// to "(Invalid Unicode 0xXXXXXXXX)".
-std::string CodePointToUtf8(UInt32 code_point) {
- if (code_point > kMaxCodePoint4) {
- return "(Invalid Unicode 0x" + String::FormatHexInt(code_point) + ")";
- }
-
- char str[5]; // Big enough for the largest valid code point.
- if (code_point <= kMaxCodePoint1) {
- str[1] = '\0';
- str[0] = static_cast<char>(code_point); // 0xxxxxxx
- } else if (code_point <= kMaxCodePoint2) {
- str[2] = '\0';
- str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
- str[0] = static_cast<char>(0xC0 | code_point); // 110xxxxx
- } else if (code_point <= kMaxCodePoint3) {
- str[3] = '\0';
- str[2] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
- str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
- str[0] = static_cast<char>(0xE0 | code_point); // 1110xxxx
- } else { // code_point <= kMaxCodePoint4
- str[4] = '\0';
- str[3] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
- str[2] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
- str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
- str[0] = static_cast<char>(0xF0 | code_point); // 11110xxx
- }
- return str;
-}
-
-// The following two functions only make sense if the the system
-// uses UTF-16 for wide string encoding. All supported systems
-// with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16.
-
-// Determines if the arguments constitute UTF-16 surrogate pair
-// and thus should be combined into a single Unicode code point
-// using CreateCodePointFromUtf16SurrogatePair.
-inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) {
- return sizeof(wchar_t) == 2 &&
- (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00;
-}
-
-// Creates a Unicode code point from UTF16 surrogate pair.
-inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first,
- wchar_t second) {
- const UInt32 mask = (1 << 10) - 1;
- return (sizeof(wchar_t) == 2) ?
- (((first & mask) << 10) | (second & mask)) + 0x10000 :
- // This function should not be called when the condition is
- // false, but we provide a sensible default in case it is.
- static_cast<UInt32>(first);
-}
-
-// Converts a wide string to a narrow string in UTF-8 encoding.
-// The wide string is assumed to have the following encoding:
-// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS)
-// UTF-32 if sizeof(wchar_t) == 4 (on Linux)
-// Parameter str points to a null-terminated wide string.
-// Parameter num_chars may additionally limit the number
-// of wchar_t characters processed. -1 is used when the entire string
-// should be processed.
-// If the string contains code points that are not valid Unicode code points
-// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output
-// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding
-// and contains invalid UTF-16 surrogate pairs, values in those pairs
-// will be encoded as individual Unicode characters from Basic Normal Plane.
-std::string WideStringToUtf8(const wchar_t* str, int num_chars) {
- if (num_chars == -1)
- num_chars = static_cast<int>(wcslen(str));
-
- ::std::stringstream stream;
- for (int i = 0; i < num_chars; ++i) {
- UInt32 unicode_code_point;
-
- if (str[i] == L'\0') {
- break;
- } else if (i + 1 < num_chars && IsUtf16SurrogatePair(str[i], str[i + 1])) {
- unicode_code_point = CreateCodePointFromUtf16SurrogatePair(str[i],
- str[i + 1]);
- i++;
- } else {
- unicode_code_point = static_cast<UInt32>(str[i]);
- }
-
- stream << CodePointToUtf8(unicode_code_point);
- }
- return StringStreamToString(&stream);
-}
-
-// Converts a wide C string to an std::string using the UTF-8 encoding.
-// NULL will be converted to "(null)".
-std::string String::ShowWideCString(const wchar_t * wide_c_str) {
- if (wide_c_str == NULL) return "(null)";
-
- return internal::WideStringToUtf8(wide_c_str, -1);
-}
-
-// Compares two wide C strings. Returns true iff they have the same
-// content.
-//
-// Unlike wcscmp(), this function can handle NULL argument(s). A NULL
-// C string is considered different to any non-NULL C string,
-// including the empty string.
-bool String::WideCStringEquals(const wchar_t * lhs, const wchar_t * rhs) {
- if (lhs == NULL) return rhs == NULL;
-
- if (rhs == NULL) return false;
-
- return wcscmp(lhs, rhs) == 0;
-}
-
-// Helper function for *_STREQ on wide strings.
-AssertionResult CmpHelperSTREQ(const char* lhs_expression,
- const char* rhs_expression,
- const wchar_t* lhs,
- const wchar_t* rhs) {
- if (String::WideCStringEquals(lhs, rhs)) {
- return AssertionSuccess();
- }
-
- return EqFailure(lhs_expression,
- rhs_expression,
- PrintToString(lhs),
- PrintToString(rhs),
- false);
-}
-
-// Helper function for *_STRNE on wide strings.
-AssertionResult CmpHelperSTRNE(const char* s1_expression,
- const char* s2_expression,
- const wchar_t* s1,
- const wchar_t* s2) {
- if (!String::WideCStringEquals(s1, s2)) {
- return AssertionSuccess();
- }
-
- return AssertionFailure() << "Expected: (" << s1_expression << ") != ("
- << s2_expression << "), actual: "
- << PrintToString(s1)
- << " vs " << PrintToString(s2);
-}
-
-// Compares two C strings, ignoring case. Returns true iff they have
-// the same content.
-//
-// Unlike strcasecmp(), this function can handle NULL argument(s). A
-// NULL C string is considered different to any non-NULL C string,
-// including the empty string.
-bool String::CaseInsensitiveCStringEquals(const char * lhs, const char * rhs) {
- if (lhs == NULL)
- return rhs == NULL;
- if (rhs == NULL)
- return false;
- return posix::StrCaseCmp(lhs, rhs) == 0;
-}
-
- // Compares two wide C strings, ignoring case. Returns true iff they
- // have the same content.
- //
- // Unlike wcscasecmp(), this function can handle NULL argument(s).
- // A NULL C string is considered different to any non-NULL wide C string,
- // including the empty string.
- // NB: The implementations on different platforms slightly differ.
- // On windows, this method uses _wcsicmp which compares according to LC_CTYPE
- // environment variable. On GNU platform this method uses wcscasecmp
- // which compares according to LC_CTYPE category of the current locale.
- // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the
- // current locale.
-bool String::CaseInsensitiveWideCStringEquals(const wchar_t* lhs,
- const wchar_t* rhs) {
- if (lhs == NULL) return rhs == NULL;
-
- if (rhs == NULL) return false;
-
-#if GTEST_OS_WINDOWS
- return _wcsicmp(lhs, rhs) == 0;
-#elif GTEST_OS_LINUX && !GTEST_OS_LINUX_ANDROID
- return wcscasecmp(lhs, rhs) == 0;
-#else
- // Android, Mac OS X and Cygwin don't define wcscasecmp.
- // Other unknown OSes may not define it either.
- wint_t left, right;
- do {
- left = towlower(*lhs++);
- right = towlower(*rhs++);
- } while (left && left == right);
- return left == right;
-#endif // OS selector
-}
-
-// Returns true iff str ends with the given suffix, ignoring case.
-// Any string is considered to end with an empty suffix.
-bool String::EndsWithCaseInsensitive(
- const std::string& str, const std::string& suffix) {
- const size_t str_len = str.length();
- const size_t suffix_len = suffix.length();
- return (str_len >= suffix_len) &&
- CaseInsensitiveCStringEquals(str.c_str() + str_len - suffix_len,
- suffix.c_str());
-}
-
-// Formats an int value as "%02d".
-std::string String::FormatIntWidth2(int value) {
- std::stringstream ss;
- ss << std::setfill('0') << std::setw(2) << value;
- return ss.str();
-}
-
-// Formats an int value as "%X".
-std::string String::FormatHexInt(int value) {
- std::stringstream ss;
- ss << std::hex << std::uppercase << value;
- return ss.str();
-}
-
-// Formats a byte as "%02X".
-std::string String::FormatByte(unsigned char value) {
- std::stringstream ss;
- ss << std::setfill('0') << std::setw(2) << std::hex << std::uppercase
- << static_cast<unsigned int>(value);
- return ss.str();
-}
-
-// Converts the buffer in a stringstream to an std::string, converting NUL
-// bytes to "\\0" along the way.
-std::string StringStreamToString(::std::stringstream* ss) {
- const ::std::string& str = ss->str();
- const char* const start = str.c_str();
- const char* const end = start + str.length();
-
- std::string result;
- result.reserve(2 * (end - start));
- for (const char* ch = start; ch != end; ++ch) {
- if (*ch == '\0') {
- result += "\\0"; // Replaces NUL with "\\0";
- } else {
- result += *ch;
- }
- }
-
- return result;
-}
-
-// Appends the user-supplied message to the Google-Test-generated message.
-std::string AppendUserMessage(const std::string& gtest_msg,
- const Message& user_msg) {
- // Appends the user message if it's non-empty.
- const std::string user_msg_string = user_msg.GetString();
- if (user_msg_string.empty()) {
- return gtest_msg;
- }
-
- return gtest_msg + "\n" + user_msg_string;
-}
-
-} // namespace internal
-
-// class TestResult
-
-// Creates an empty TestResult.
-TestResult::TestResult()
- : death_test_count_(0),
- elapsed_time_(0) {
-}
-
-// D'tor.
-TestResult::~TestResult() {
-}
-
-// Returns the i-th test part result among all the results. i can
-// range from 0 to total_part_count() - 1. If i is not in that range,
-// aborts the program.
-const TestPartResult& TestResult::GetTestPartResult(int i) const {
- if (i < 0 || i >= total_part_count())
- internal::posix::Abort();
- return test_part_results_.at(i);
-}
-
-// Returns the i-th test property. i can range from 0 to
-// test_property_count() - 1. If i is not in that range, aborts the
-// program.
-const TestProperty& TestResult::GetTestProperty(int i) const {
- if (i < 0 || i >= test_property_count())
- internal::posix::Abort();
- return test_properties_.at(i);
-}
-
-// Clears the test part results.
-void TestResult::ClearTestPartResults() {
- test_part_results_.clear();
-}
-
-// Adds a test part result to the list.
-void TestResult::AddTestPartResult(const TestPartResult& test_part_result) {
- test_part_results_.push_back(test_part_result);
-}
-
-// Adds a test property to the list. If a property with the same key as the
-// supplied property is already represented, the value of this test_property
-// replaces the old value for that key.
-void TestResult::RecordProperty(const std::string& xml_element,
- const TestProperty& test_property) {
- if (!ValidateTestProperty(xml_element, test_property)) {
- return;
- }
- internal::MutexLock lock(&test_properites_mutex_);
- const std::vector<TestProperty>::iterator property_with_matching_key =
- std::find_if(test_properties_.begin(), test_properties_.end(),
- internal::TestPropertyKeyIs(test_property.key()));
- if (property_with_matching_key == test_properties_.end()) {
- test_properties_.push_back(test_property);
- return;
- }
- property_with_matching_key->SetValue(test_property.value());
-}
-
-// The list of reserved attributes used in the <testsuites> element of XML
-// output.
-static const char* const kReservedTestSuitesAttributes[] = {
- "disabled",
- "errors",
- "failures",
- "name",
- "random_seed",
- "tests",
- "time",
- "timestamp"
-};
-
-// The list of reserved attributes used in the <testsuite> element of XML
-// output.
-static const char* const kReservedTestSuiteAttributes[] = {
- "disabled",
- "errors",
- "failures",
- "name",
- "tests",
- "time"
-};
-
-// The list of reserved attributes used in the <testcase> element of XML output.
-static const char* const kReservedTestCaseAttributes[] = {
- "classname",
- "name",
- "status",
- "time",
- "type_param",
- "value_param"
-};
-
-template <int kSize>
-std::vector<std::string> ArrayAsVector(const char* const (&array)[kSize]) {
- return std::vector<std::string>(array, array + kSize);
-}
-
-static std::vector<std::string> GetReservedAttributesForElement(
- const std::string& xml_element) {
- if (xml_element == "testsuites") {
- return ArrayAsVector(kReservedTestSuitesAttributes);
- } else if (xml_element == "testsuite") {
- return ArrayAsVector(kReservedTestSuiteAttributes);
- } else if (xml_element == "testcase") {
- return ArrayAsVector(kReservedTestCaseAttributes);
- } else {
- GTEST_CHECK_(false) << "Unrecognized xml_element provided: " << xml_element;
- }
- // This code is unreachable but some compilers may not realizes that.
- return std::vector<std::string>();
-}
-
-static std::string FormatWordList(const std::vector<std::string>& words) {
- Message word_list;
- for (size_t i = 0; i < words.size(); ++i) {
- if (i > 0 && words.size() > 2) {
- word_list << ", ";
- }
- if (i == words.size() - 1) {
- word_list << "and ";
- }
- word_list << "'" << words[i] << "'";
- }
- return word_list.GetString();
-}
-
-bool ValidateTestPropertyName(const std::string& property_name,
- const std::vector<std::string>& reserved_names) {
- if (std::find(reserved_names.begin(), reserved_names.end(), property_name) !=
- reserved_names.end()) {
- ADD_FAILURE() << "Reserved key used in RecordProperty(): " << property_name
- << " (" << FormatWordList(reserved_names)
- << " are reserved by " << GTEST_NAME_ << ")";
- return false;
- }
- return true;
-}
-
-// Adds a failure if the key is a reserved attribute of the element named
-// xml_element. Returns true if the property is valid.
-bool TestResult::ValidateTestProperty(const std::string& xml_element,
- const TestProperty& test_property) {
- return ValidateTestPropertyName(test_property.key(),
- GetReservedAttributesForElement(xml_element));
-}
-
-// Clears the object.
-void TestResult::Clear() {
- test_part_results_.clear();
- test_properties_.clear();
- death_test_count_ = 0;
- elapsed_time_ = 0;
-}
-
-// Returns true iff the test failed.
-bool TestResult::Failed() const {
- for (int i = 0; i < total_part_count(); ++i) {
- if (GetTestPartResult(i).failed())
- return true;
- }
- return false;
-}
-
-// Returns true iff the test part fatally failed.
-static bool TestPartFatallyFailed(const TestPartResult& result) {
- return result.fatally_failed();
-}
-
-// Returns true iff the test fatally failed.
-bool TestResult::HasFatalFailure() const {
- return CountIf(test_part_results_, TestPartFatallyFailed) > 0;
-}
-
-// Returns true iff the test part non-fatally failed.
-static bool TestPartNonfatallyFailed(const TestPartResult& result) {
- return result.nonfatally_failed();
-}
-
-// Returns true iff the test has a non-fatal failure.
-bool TestResult::HasNonfatalFailure() const {
- return CountIf(test_part_results_, TestPartNonfatallyFailed) > 0;
-}
-
-// Gets the number of all test parts. This is the sum of the number
-// of successful test parts and the number of failed test parts.
-int TestResult::total_part_count() const {
- return static_cast<int>(test_part_results_.size());
-}
-
-// Returns the number of the test properties.
-int TestResult::test_property_count() const {
- return static_cast<int>(test_properties_.size());
-}
-
-// class Test
-
-// Creates a Test object.
-
-// The c'tor saves the states of all flags.
-Test::Test()
- : gtest_flag_saver_(new GTEST_FLAG_SAVER_) {
-}
-
-// The d'tor restores the states of all flags. The actual work is
-// done by the d'tor of the gtest_flag_saver_ field, and thus not
-// visible here.
-Test::~Test() {
-}
-
-// Sets up the test fixture.
-//
-// A sub-class may override this.
-void Test::SetUp() {
-}
-
-// Tears down the test fixture.
-//
-// A sub-class may override this.
-void Test::TearDown() {
-}
-
-// Allows user supplied key value pairs to be recorded for later output.
-void Test::RecordProperty(const std::string& key, const std::string& value) {
- UnitTest::GetInstance()->RecordProperty(key, value);
-}
-
-// Allows user supplied key value pairs to be recorded for later output.
-void Test::RecordProperty(const std::string& key, int value) {
- Message value_message;
- value_message << value;
- RecordProperty(key, value_message.GetString().c_str());
-}
-
-namespace internal {
-
-void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
- const std::string& message) {
- // This function is a friend of UnitTest and as such has access to
- // AddTestPartResult.
- UnitTest::GetInstance()->AddTestPartResult(
- result_type,
- NULL, // No info about the source file where the exception occurred.
- -1, // We have no info on which line caused the exception.
- message,
- ""); // No stack trace, either.
-}
-
-} // namespace internal
-
-// Google Test requires all tests in the same test case to use the same test
-// fixture class. This function checks if the current test has the
-// same fixture class as the first test in the current test case. If
-// yes, it returns true; otherwise it generates a Google Test failure and
-// returns false.
-bool Test::HasSameFixtureClass() {
- internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
- const TestCase* const test_case = impl->current_test_case();
-
- // Info about the first test in the current test case.
- const TestInfo* const first_test_info = test_case->test_info_list()[0];
- const internal::TypeId first_fixture_id = first_test_info->fixture_class_id_;
- const char* const first_test_name = first_test_info->name();
-
- // Info about the current test.
- const TestInfo* const this_test_info = impl->current_test_info();
- const internal::TypeId this_fixture_id = this_test_info->fixture_class_id_;
- const char* const this_test_name = this_test_info->name();
-
- if (this_fixture_id != first_fixture_id) {
- // Is the first test defined using TEST?
- const bool first_is_TEST = first_fixture_id == internal::GetTestTypeId();
- // Is this test defined using TEST?
- const bool this_is_TEST = this_fixture_id == internal::GetTestTypeId();
-
- if (first_is_TEST || this_is_TEST) {
- // Both TEST and TEST_F appear in same test case, which is incorrect.
- // Tell the user how to fix this.
-
- // Gets the name of the TEST and the name of the TEST_F. Note
- // that first_is_TEST and this_is_TEST cannot both be true, as
- // the fixture IDs are different for the two tests.
- const char* const TEST_name =
- first_is_TEST ? first_test_name : this_test_name;
- const char* const TEST_F_name =
- first_is_TEST ? this_test_name : first_test_name;
-
- ADD_FAILURE()
- << "All tests in the same test case must use the same test fixture\n"
- << "class, so mixing TEST_F and TEST in the same test case is\n"
- << "illegal. In test case " << this_test_info->test_case_name()
- << ",\n"
- << "test " << TEST_F_name << " is defined using TEST_F but\n"
- << "test " << TEST_name << " is defined using TEST. You probably\n"
- << "want to change the TEST to TEST_F or move it to another test\n"
- << "case.";
- } else {
- // Two fixture classes with the same name appear in two different
- // namespaces, which is not allowed. Tell the user how to fix this.
- ADD_FAILURE()
- << "All tests in the same test case must use the same test fixture\n"
- << "class. However, in test case "
- << this_test_info->test_case_name() << ",\n"
- << "you defined test " << first_test_name
- << " and test " << this_test_name << "\n"
- << "using two different test fixture classes. This can happen if\n"
- << "the two classes are from different namespaces or translation\n"
- << "units and have the same name. You should probably rename one\n"
- << "of the classes to put the tests into different test cases.";
- }
- return false;
- }
-
- return true;
-}
-
-#if GTEST_HAS_SEH
-
-// Adds an "exception thrown" fatal failure to the current test. This
-// function returns its result via an output parameter pointer because VC++
-// prohibits creation of objects with destructors on stack in functions
-// using __try (see error C2712).
-static std::string* FormatSehExceptionMessage(DWORD exception_code,
- const char* location) {
- Message message;
- message << "SEH exception with code 0x" << std::setbase(16) <<
- exception_code << std::setbase(10) << " thrown in " << location << ".";
-
- return new std::string(message.GetString());
-}
-
-#endif // GTEST_HAS_SEH
-
-namespace internal {
-
-#if GTEST_HAS_EXCEPTIONS
-
-// Adds an "exception thrown" fatal failure to the current test.
-static std::string FormatCxxExceptionMessage(const char* description,
- const char* location) {
- Message message;
- if (description != NULL) {
- message << "C++ exception with description \"" << description << "\"";
- } else {
- message << "Unknown C++ exception";
- }
- message << " thrown in " << location << ".";
-
- return message.GetString();
-}
-
-static std::string PrintTestPartResultToString(
- const TestPartResult& test_part_result);
-
-GoogleTestFailureException::GoogleTestFailureException(
- const TestPartResult& failure)
- : ::std::runtime_error(PrintTestPartResultToString(failure).c_str()) {}
-
-#endif // GTEST_HAS_EXCEPTIONS
-
-// We put these helper functions in the internal namespace as IBM's xlC
-// compiler rejects the code if they were declared static.
-
-// Runs the given method and handles SEH exceptions it throws, when
-// SEH is supported; returns the 0-value for type Result in case of an
-// SEH exception. (Microsoft compilers cannot handle SEH and C++
-// exceptions in the same function. Therefore, we provide a separate
-// wrapper function for handling SEH exceptions.)
-template <class T, typename Result>
-Result HandleSehExceptionsInMethodIfSupported(
- T* object, Result (T::*method)(), const char* location) {
-#if GTEST_HAS_SEH
- __try {
- return (object->*method)();
- } __except (internal::UnitTestOptions::GTestShouldProcessSEH( // NOLINT
- GetExceptionCode())) {
- // We create the exception message on the heap because VC++ prohibits
- // creation of objects with destructors on stack in functions using __try
- // (see error C2712).
- std::string* exception_message = FormatSehExceptionMessage(
- GetExceptionCode(), location);
- internal::ReportFailureInUnknownLocation(TestPartResult::kFatalFailure,
- *exception_message);
- delete exception_message;
- return static_cast<Result>(0);
- }
-#else
- (void)location;
- return (object->*method)();
-#endif // GTEST_HAS_SEH
-}
-
-// Runs the given method and catches and reports C++ and/or SEH-style
-// exceptions, if they are supported; returns the 0-value for type
-// Result in case of an SEH exception.
-template <class T, typename Result>
-Result HandleExceptionsInMethodIfSupported(
- T* object, Result (T::*method)(), const char* location) {
- // NOTE: The user code can affect the way in which Google Test handles
- // exceptions by setting GTEST_FLAG(catch_exceptions), but only before
- // RUN_ALL_TESTS() starts. It is technically possible to check the flag
- // after the exception is caught and either report or re-throw the
- // exception based on the flag's value:
- //
- // try {
- // // Perform the test method.
- // } catch (...) {
- // if (GTEST_FLAG(catch_exceptions))
- // // Report the exception as failure.
- // else
- // throw; // Re-throws the original exception.
- // }
- //
- // However, the purpose of this flag is to allow the program to drop into
- // the debugger when the exception is thrown. On most platforms, once the
- // control enters the catch block, the exception origin information is
- // lost and the debugger will stop the program at the point of the
- // re-throw in this function -- instead of at the point of the original
- // throw statement in the code under test. For this reason, we perform
- // the check early, sacrificing the ability to affect Google Test's
- // exception handling in the method where the exception is thrown.
- if (internal::GetUnitTestImpl()->catch_exceptions()) {
-#if GTEST_HAS_EXCEPTIONS
- try {
- return HandleSehExceptionsInMethodIfSupported(object, method, location);
- } catch (const internal::GoogleTestFailureException&) { // NOLINT
- // This exception type can only be thrown by a failed Google
- // Test assertion with the intention of letting another testing
- // framework catch it. Therefore we just re-throw it.
- throw;
- } catch (const std::exception& e) { // NOLINT
- internal::ReportFailureInUnknownLocation(
- TestPartResult::kFatalFailure,
- FormatCxxExceptionMessage(e.what(), location));
- } catch (...) { // NOLINT
- internal::ReportFailureInUnknownLocation(
- TestPartResult::kFatalFailure,
- FormatCxxExceptionMessage(NULL, location));
- }
- return static_cast<Result>(0);
-#else
- return HandleSehExceptionsInMethodIfSupported(object, method, location);
-#endif // GTEST_HAS_EXCEPTIONS
- } else {
- return (object->*method)();
- }
-}
-
-} // namespace internal
-
-// Runs the test and updates the test result.
-void Test::Run() {
- if (!HasSameFixtureClass()) return;
-
- internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
- impl->os_stack_trace_getter()->UponLeavingGTest();
- internal::HandleExceptionsInMethodIfSupported(this, &Test::SetUp, "SetUp()");
- // We will run the test only if SetUp() was successful.
- if (!HasFatalFailure()) {
- impl->os_stack_trace_getter()->UponLeavingGTest();
- internal::HandleExceptionsInMethodIfSupported(
- this, &Test::TestBody, "the test body");
- }
-
- // However, we want to clean up as much as possible. Hence we will
- // always call TearDown(), even if SetUp() or the test body has
- // failed.
- impl->os_stack_trace_getter()->UponLeavingGTest();
- internal::HandleExceptionsInMethodIfSupported(
- this, &Test::TearDown, "TearDown()");
-}
-
-// Returns true iff the current test has a fatal failure.
-bool Test::HasFatalFailure() {
- return internal::GetUnitTestImpl()->current_test_result()->HasFatalFailure();
-}
-
-// Returns true iff the current test has a non-fatal failure.
-bool Test::HasNonfatalFailure() {
- return internal::GetUnitTestImpl()->current_test_result()->
- HasNonfatalFailure();
-}
-
-// class TestInfo
-
-// Constructs a TestInfo object. It assumes ownership of the test factory
-// object.
-TestInfo::TestInfo(const std::string& a_test_case_name,
- const std::string& a_name,
- const char* a_type_param,
- const char* a_value_param,
- internal::CodeLocation a_code_location,
- internal::TypeId fixture_class_id,
- internal::TestFactoryBase* factory)
- : test_case_name_(a_test_case_name),
- name_(a_name),
- type_param_(a_type_param ? new std::string(a_type_param) : NULL),
- value_param_(a_value_param ? new std::string(a_value_param) : NULL),
- location_(a_code_location),
- fixture_class_id_(fixture_class_id),
- should_run_(false),
- is_disabled_(false),
- matches_filter_(false),
- factory_(factory),
- result_() {}
-
-// Destructs a TestInfo object.
-TestInfo::~TestInfo() { delete factory_; }
-
-namespace internal {
-
-// Creates a new TestInfo object and registers it with Google Test;
-// returns the created object.
-//
-// Arguments:
-//
-// test_case_name: name of the test case
-// name: name of the test
-// type_param: the name of the test's type parameter, or NULL if
-// this is not a typed or a type-parameterized test.
-// value_param: text representation of the test's value parameter,
-// or NULL if this is not a value-parameterized test.
-// code_location: code location where the test is defined
-// fixture_class_id: ID of the test fixture class
-// set_up_tc: pointer to the function that sets up the test case
-// tear_down_tc: pointer to the function that tears down the test case
-// factory: pointer to the factory that creates a test object.
-// The newly created TestInfo instance will assume
-// ownership of the factory object.
-TestInfo* MakeAndRegisterTestInfo(
- const char* test_case_name,
- const char* name,
- const char* type_param,
- const char* value_param,
- CodeLocation code_location,
- TypeId fixture_class_id,
- SetUpTestCaseFunc set_up_tc,
- TearDownTestCaseFunc tear_down_tc,
- TestFactoryBase* factory) {
- TestInfo* const test_info =
- new TestInfo(test_case_name, name, type_param, value_param,
- code_location, fixture_class_id, factory);
- GetUnitTestImpl()->AddTestInfo(set_up_tc, tear_down_tc, test_info);
- return test_info;
-}
-
-#if GTEST_HAS_PARAM_TEST
-void ReportInvalidTestCaseType(const char* test_case_name,
- CodeLocation code_location) {
- Message errors;
- errors
- << "Attempted redefinition of test case " << test_case_name << ".\n"
- << "All tests in the same test case must use the same test fixture\n"
- << "class. However, in test case " << test_case_name << ", you tried\n"
- << "to define a test using a fixture class different from the one\n"
- << "used earlier. This can happen if the two fixture classes are\n"
- << "from different namespaces and have the same name. You should\n"
- << "probably rename one of the classes to put the tests into different\n"
- << "test cases.";
-
- fprintf(stderr, "%s %s",
- FormatFileLocation(code_location.file.c_str(),
- code_location.line).c_str(),
- errors.GetString().c_str());
-}
-#endif // GTEST_HAS_PARAM_TEST
-
-} // namespace internal
-
-namespace {
-
-// A predicate that checks the test name of a TestInfo against a known
-// value.
-//
-// This is used for implementation of the TestCase class only. We put
-// it in the anonymous namespace to prevent polluting the outer
-// namespace.
-//
-// TestNameIs is copyable.
-class TestNameIs {
- public:
- // Constructor.
- //
- // TestNameIs has NO default constructor.
- explicit TestNameIs(const char* name)
- : name_(name) {}
-
- // Returns true iff the test name of test_info matches name_.
- bool operator()(const TestInfo * test_info) const {
- return test_info && test_info->name() == name_;
- }
-
- private:
- std::string name_;
-};
-
-} // namespace
-
-namespace internal {
-
-// This method expands all parameterized tests registered with macros TEST_P
-// and INSTANTIATE_TEST_CASE_P into regular tests and registers those.
-// This will be done just once during the program runtime.
-void UnitTestImpl::RegisterParameterizedTests() {
-#if GTEST_HAS_PARAM_TEST
- if (!parameterized_tests_registered_) {
- parameterized_test_registry_.RegisterTests();
- parameterized_tests_registered_ = true;
- }
-#endif
-}
-
-} // namespace internal
-
-// Creates the test object, runs it, records its result, and then
-// deletes it.
-void TestInfo::Run() {
- if (!should_run_) return;
-
- // Tells UnitTest where to store test result.
- internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
- impl->set_current_test_info(this);
-
- TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();
-
- // Notifies the unit test event listeners that a test is about to start.
- repeater->OnTestStart(*this);
-
- const TimeInMillis start = internal::GetTimeInMillis();
-
- impl->os_stack_trace_getter()->UponLeavingGTest();
-
- // Creates the test object.
- Test* const test = internal::HandleExceptionsInMethodIfSupported(
- factory_, &internal::TestFactoryBase::CreateTest,
- "the test fixture's constructor");
-
- // Runs the test only if the test object was created and its
- // constructor didn't generate a fatal failure.
- if ((test != NULL) && !Test::HasFatalFailure()) {
- // This doesn't throw as all user code that can throw are wrapped into
- // exception handling code.
- test->Run();
- }
-
- // Deletes the test object.
- impl->os_stack_trace_getter()->UponLeavingGTest();
- internal::HandleExceptionsInMethodIfSupported(
- test, &Test::DeleteSelf_, "the test fixture's destructor");
-
- result_.set_elapsed_time(internal::GetTimeInMillis() - start);
-
- // Notifies the unit test event listener that a test has just finished.
- repeater->OnTestEnd(*this);
-
- // Tells UnitTest to stop associating assertion results to this
- // test.
- impl->set_current_test_info(NULL);
-}
-
-// class TestCase
-
-// Gets the number of successful tests in this test case.
-int TestCase::successful_test_count() const {
- return CountIf(test_info_list_, TestPassed);
-}
-
-// Gets the number of failed tests in this test case.
-int TestCase::failed_test_count() const {
- return CountIf(test_info_list_, TestFailed);
-}
-
-// Gets the number of disabled tests that will be reported in the XML report.
-int TestCase::reportable_disabled_test_count() const {
- return CountIf(test_info_list_, TestReportableDisabled);
-}
-
-// Gets the number of disabled tests in this test case.
-int TestCase::disabled_test_count() const {
- return CountIf(test_info_list_, TestDisabled);
-}
-
-// Gets the number of tests to be printed in the XML report.
-int TestCase::reportable_test_count() const {
- return CountIf(test_info_list_, TestReportable);
-}
-
-// Get the number of tests in this test case that should run.
-int TestCase::test_to_run_count() const {
- return CountIf(test_info_list_, ShouldRunTest);
-}
-
-// Gets the number of all tests.
-int TestCase::total_test_count() const {
- return static_cast<int>(test_info_list_.size());
-}
-
-// Creates a TestCase with the given name.
-//
-// Arguments:
-//
-// name: name of the test case
-// a_type_param: the name of the test case's type parameter, or NULL if
-// this is not a typed or a type-parameterized test case.
-// set_up_tc: pointer to the function that sets up the test case
-// tear_down_tc: pointer to the function that tears down the test case
-TestCase::TestCase(const char* a_name, const char* a_type_param,
- Test::SetUpTestCaseFunc set_up_tc,
- Test::TearDownTestCaseFunc tear_down_tc)
- : name_(a_name),
- type_param_(a_type_param ? new std::string(a_type_param) : NULL),
- set_up_tc_(set_up_tc),
- tear_down_tc_(tear_down_tc),
- should_run_(false),
- elapsed_time_(0) {
-}
-
-// Destructor of TestCase.
-TestCase::~TestCase() {
- // Deletes every Test in the collection.
- ForEach(test_info_list_, internal::Delete<TestInfo>);
-}
-
-// Returns the i-th test among all the tests. i can range from 0 to
-// total_test_count() - 1. If i is not in that range, returns NULL.
-const TestInfo* TestCase::GetTestInfo(int i) const {
- const int index = GetElementOr(test_indices_, i, -1);
- return index < 0 ? NULL : test_info_list_[index];
-}
-
-// Returns the i-th test among all the tests. i can range from 0 to
-// total_test_count() - 1. If i is not in that range, returns NULL.
-TestInfo* TestCase::GetMutableTestInfo(int i) {
- const int index = GetElementOr(test_indices_, i, -1);
- return index < 0 ? NULL : test_info_list_[index];
-}
-
-// Adds a test to this test case. Will delete the test upon
-// destruction of the TestCase object.
-void TestCase::AddTestInfo(TestInfo * test_info) {
- test_info_list_.push_back(test_info);
- test_indices_.push_back(static_cast<int>(test_indices_.size()));
-}
-
-// Runs every test in this TestCase.
-void TestCase::Run() {
- if (!should_run_) return;
-
- internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
- impl->set_current_test_case(this);
-
- TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();
-
- repeater->OnTestCaseStart(*this);
- impl->os_stack_trace_getter()->UponLeavingGTest();
- internal::HandleExceptionsInMethodIfSupported(
- this, &TestCase::RunSetUpTestCase, "SetUpTestCase()");
-
- const internal::TimeInMillis start = internal::GetTimeInMillis();
- for (int i = 0; i < total_test_count(); i++) {
- GetMutableTestInfo(i)->Run();
- }
- elapsed_time_ = internal::GetTimeInMillis() - start;
-
- impl->os_stack_trace_getter()->UponLeavingGTest();
- internal::HandleExceptionsInMethodIfSupported(
- this, &TestCase::RunTearDownTestCase, "TearDownTestCase()");
-
- repeater->OnTestCaseEnd(*this);
- impl->set_current_test_case(NULL);
-}
-
-// Clears the results of all tests in this test case.
-void TestCase::ClearResult() {
- ad_hoc_test_result_.Clear();
- ForEach(test_info_list_, TestInfo::ClearTestResult);
-}
-
-// Shuffles the tests in this test case.
-void TestCase::ShuffleTests(internal::Random* random) {
- Shuffle(random, &test_indices_);
-}
-
-// Restores the test order to before the first shuffle.
-void TestCase::UnshuffleTests() {
- for (size_t i = 0; i < test_indices_.size(); i++) {
- test_indices_[i] = static_cast<int>(i);
- }
-}
-
-// Formats a countable noun. Depending on its quantity, either the
-// singular form or the plural form is used. e.g.
-//
-// FormatCountableNoun(1, "formula", "formuli") returns "1 formula".
-// FormatCountableNoun(5, "book", "books") returns "5 books".
-static std::string FormatCountableNoun(int count,
- const char * singular_form,
- const char * plural_form) {
- return internal::StreamableToString(count) + " " +
- (count == 1 ? singular_form : plural_form);
-}
-
-// Formats the count of tests.
-static std::string FormatTestCount(int test_count) {
- return FormatCountableNoun(test_count, "test", "tests");
-}
-
-// Formats the count of test cases.
-static std::string FormatTestCaseCount(int test_case_count) {
- return FormatCountableNoun(test_case_count, "test case", "test cases");
-}
-
-// Converts a TestPartResult::Type enum to human-friendly string
-// representation. Both kNonFatalFailure and kFatalFailure are translated
-// to "Failure", as the user usually doesn't care about the difference
-// between the two when viewing the test result.
-static const char * TestPartResultTypeToString(TestPartResult::Type type) {
- switch (type) {
- case TestPartResult::kSuccess:
- return "Success";
-
- case TestPartResult::kNonFatalFailure:
- case TestPartResult::kFatalFailure:
-#ifdef _MSC_VER
- return "error: ";
-#else
- return "Failure\n";
-#endif
- default:
- return "Unknown result type";
- }
-}
-
-namespace internal {
-
-// Prints a TestPartResult to an std::string.
-static std::string PrintTestPartResultToString(
- const TestPartResult& test_part_result) {
- return (Message()
- << internal::FormatFileLocation(test_part_result.file_name(),
- test_part_result.line_number())
- << " " << TestPartResultTypeToString(test_part_result.type())
- << test_part_result.message()).GetString();
-}
-
-// Prints a TestPartResult.
-static void PrintTestPartResult(const TestPartResult& test_part_result) {
- const std::string& result =
- PrintTestPartResultToString(test_part_result);
- printf("%s\n", result.c_str());
- fflush(stdout);
- // If the test program runs in Visual Studio or a debugger, the
- // following statements add the test part result message to the Output
- // window such that the user can double-click on it to jump to the
- // corresponding source code location; otherwise they do nothing.
-#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
- // We don't call OutputDebugString*() on Windows Mobile, as printing
- // to stdout is done by OutputDebugString() there already - we don't
- // want the same message printed twice.
- ::OutputDebugStringA(result.c_str());
- ::OutputDebugStringA("\n");
-#endif
-}
-
-// class PrettyUnitTestResultPrinter
-
-enum GTestColor {
- COLOR_DEFAULT,
- COLOR_RED,
- COLOR_GREEN,
- COLOR_YELLOW
-};
-
-#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE && \
- !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
-
-// Returns the character attribute for the given color.
-WORD GetColorAttribute(GTestColor color) {
- switch (color) {
- case COLOR_RED: return FOREGROUND_RED;
- case COLOR_GREEN: return FOREGROUND_GREEN;
- case COLOR_YELLOW: return FOREGROUND_RED | FOREGROUND_GREEN;
- default: return 0;
- }
-}
-
-#else
-
-// Returns the ANSI color code for the given color. COLOR_DEFAULT is
-// an invalid input.
-const char* GetAnsiColorCode(GTestColor color) {
- switch (color) {
- case COLOR_RED: return "1";
- case COLOR_GREEN: return "2";
- case COLOR_YELLOW: return "3";
- default: return NULL;
- };
-}
-
-#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
-
-// Returns true iff Google Test should use colors in the output.
-bool ShouldUseColor(bool stdout_is_tty) {
- const char* const gtest_color = GTEST_FLAG(color).c_str();
-
- if (String::CaseInsensitiveCStringEquals(gtest_color, "auto")) {
-#if GTEST_OS_WINDOWS
- // On Windows the TERM variable is usually not set, but the
- // console there does support colors.
- return stdout_is_tty;
-#else
- // On non-Windows platforms, we rely on the TERM variable.
- const char* const term = posix::GetEnv("TERM");
- const bool term_supports_color =
- String::CStringEquals(term, "xterm") ||
- String::CStringEquals(term, "xterm-color") ||
- String::CStringEquals(term, "xterm-256color") ||
- String::CStringEquals(term, "screen") ||
- String::CStringEquals(term, "screen-256color") ||
- String::CStringEquals(term, "tmux") ||
- String::CStringEquals(term, "tmux-256color") ||
- String::CStringEquals(term, "rxvt-unicode") ||
- String::CStringEquals(term, "rxvt-unicode-256color") ||
- String::CStringEquals(term, "linux") ||
- String::CStringEquals(term, "cygwin");
- return stdout_is_tty && term_supports_color;
-#endif // GTEST_OS_WINDOWS
- }
-
- return String::CaseInsensitiveCStringEquals(gtest_color, "yes") ||
- String::CaseInsensitiveCStringEquals(gtest_color, "true") ||
- String::CaseInsensitiveCStringEquals(gtest_color, "t") ||
- String::CStringEquals(gtest_color, "1");
- // We take "yes", "true", "t", and "1" as meaning "yes". If the
- // value is neither one of these nor "auto", we treat it as "no" to
- // be conservative.
-}
-
-// Helpers for printing colored strings to stdout. Note that on Windows, we
-// cannot simply emit special characters and have the terminal change colors.
-// This routine must actually emit the characters rather than return a string
-// that would be colored when printed, as can be done on Linux.
-void ColoredPrintf(GTestColor color, const char* fmt, ...) {
- va_list args;
- va_start(args, fmt);
-
-#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || GTEST_OS_ZOS || \
- GTEST_OS_IOS || GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT
- const bool use_color = AlwaysFalse();
-#else
- static const bool in_color_mode =
- ShouldUseColor(posix::IsATTY(posix::FileNo(stdout)) != 0);
- const bool use_color = in_color_mode && (color != COLOR_DEFAULT);
-#endif // GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || GTEST_OS_ZOS
- // The '!= 0' comparison is necessary to satisfy MSVC 7.1.
-
- if (!use_color) {
- vprintf(fmt, args);
- va_end(args);
- return;
- }
-
-#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE && \
- !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
- const HANDLE stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE);
-
- // Gets the current text color.
- CONSOLE_SCREEN_BUFFER_INFO buffer_info;
- GetConsoleScreenBufferInfo(stdout_handle, &buffer_info);
- const WORD old_color_attrs = buffer_info.wAttributes;
-
- // We need to flush the stream buffers into the console before each
- // SetConsoleTextAttribute call lest it affect the text that is already
- // printed but has not yet reached the console.
- fflush(stdout);
- SetConsoleTextAttribute(stdout_handle,
- GetColorAttribute(color) | FOREGROUND_INTENSITY);
- vprintf(fmt, args);
-
- fflush(stdout);
- // Restores the text color.
- SetConsoleTextAttribute(stdout_handle, old_color_attrs);
-#else
- printf("\033[0;3%sm", GetAnsiColorCode(color));
- vprintf(fmt, args);
- printf("\033[m"); // Resets the terminal to default.
-#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
- va_end(args);
-}
-
-// Text printed in Google Test's text output and --gunit_list_tests
-// output to label the type parameter and value parameter for a test.
-static const char kTypeParamLabel[] = "TypeParam";
-static const char kValueParamLabel[] = "GetParam()";
-
-void PrintFullTestCommentIfPresent(const TestInfo& test_info) {
- const char* const type_param = test_info.type_param();
- const char* const value_param = test_info.value_param();
-
- if (type_param != NULL || value_param != NULL) {
- printf(", where ");
- if (type_param != NULL) {
- printf("%s = %s", kTypeParamLabel, type_param);
- if (value_param != NULL)
- printf(" and ");
- }
- if (value_param != NULL) {
- printf("%s = %s", kValueParamLabel, value_param);
- }
- }
-}
-
-// This class implements the TestEventListener interface.
-//
-// Class PrettyUnitTestResultPrinter is copyable.
-class PrettyUnitTestResultPrinter : public TestEventListener {
- public:
- PrettyUnitTestResultPrinter() {}
- static void PrintTestName(const char * test_case, const char * test) {
- printf("%s.%s", test_case, test);
- }
-
- // The following methods override what's in the TestEventListener class.
- virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {}
- virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration);
- virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test);
- virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {}
- virtual void OnTestCaseStart(const TestCase& test_case);
- virtual void OnTestStart(const TestInfo& test_info);
- virtual void OnTestPartResult(const TestPartResult& result);
- virtual void OnTestEnd(const TestInfo& test_info);
- virtual void OnTestCaseEnd(const TestCase& test_case);
- virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test);
- virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {}
- virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration);
- virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {}
-
- private:
- static void PrintFailedTests(const UnitTest& unit_test);
-};
-
- // Fired before each iteration of tests starts.
-void PrettyUnitTestResultPrinter::OnTestIterationStart(
- const UnitTest& unit_test, int iteration) {
- if (GTEST_FLAG(repeat) != 1)
- printf("\nRepeating all tests (iteration %d) . . .\n\n", iteration + 1);
-
- const char* const filter = GTEST_FLAG(filter).c_str();
-
- // Prints the filter if it's not *. This reminds the user that some
- // tests may be skipped.
- if (!String::CStringEquals(filter, kUniversalFilter)) {
- ColoredPrintf(COLOR_YELLOW,
- "Note: %s filter = %s\n", GTEST_NAME_, filter);
- }
-
- if (internal::ShouldShard(kTestTotalShards, kTestShardIndex, false)) {
- const Int32 shard_index = Int32FromEnvOrDie(kTestShardIndex, -1);
- ColoredPrintf(COLOR_YELLOW,
- "Note: This is test shard %d of %s.\n",
- static_cast<int>(shard_index) + 1,
- internal::posix::GetEnv(kTestTotalShards));
- }
-
- if (GTEST_FLAG(shuffle)) {
- ColoredPrintf(COLOR_YELLOW,
- "Note: Randomizing tests' orders with a seed of %d .\n",
- unit_test.random_seed());
- }
-
- ColoredPrintf(COLOR_GREEN, "[==========] ");
- printf("Running %s from %s.\n",
- FormatTestCount(unit_test.test_to_run_count()).c_str(),
- FormatTestCaseCount(unit_test.test_case_to_run_count()).c_str());
- fflush(stdout);
-}
-
-void PrettyUnitTestResultPrinter::OnEnvironmentsSetUpStart(
- const UnitTest& /*unit_test*/) {
- ColoredPrintf(COLOR_GREEN, "[----------] ");
- printf("Global test environment set-up.\n");
- fflush(stdout);
-}
-
-void PrettyUnitTestResultPrinter::OnTestCaseStart(const TestCase& test_case) {
- const std::string counts =
- FormatCountableNoun(test_case.test_to_run_count(), "test", "tests");
- ColoredPrintf(COLOR_GREEN, "[----------] ");
- printf("%s from %s", counts.c_str(), test_case.name());
- if (test_case.type_param() == NULL) {
- printf("\n");
- } else {
- printf(", where %s = %s\n", kTypeParamLabel, test_case.type_param());
- }
- fflush(stdout);
-}
-
-void PrettyUnitTestResultPrinter::OnTestStart(const TestInfo& test_info) {
- ColoredPrintf(COLOR_GREEN, "[ RUN ] ");
- PrintTestName(test_info.test_case_name(), test_info.name());
- printf("\n");
- fflush(stdout);
-}
-
-// Called after an assertion failure.
-void PrettyUnitTestResultPrinter::OnTestPartResult(
- const TestPartResult& result) {
- // If the test part succeeded, we don't need to do anything.
- if (result.type() == TestPartResult::kSuccess)
- return;
-
- // Print failure message from the assertion (e.g. expected this and got that).
- PrintTestPartResult(result);
- fflush(stdout);
-}
-
-void PrettyUnitTestResultPrinter::OnTestEnd(const TestInfo& test_info) {
- if (test_info.result()->Passed()) {
- ColoredPrintf(COLOR_GREEN, "[ OK ] ");
- } else {
- ColoredPrintf(COLOR_RED, "[ FAILED ] ");
- }
- PrintTestName(test_info.test_case_name(), test_info.name());
- if (test_info.result()->Failed())
- PrintFullTestCommentIfPresent(test_info);
-
- if (GTEST_FLAG(print_time)) {
- printf(" (%s ms)\n", internal::StreamableToString(
- test_info.result()->elapsed_time()).c_str());
- } else {
- printf("\n");
- }
- fflush(stdout);
-}
-
-void PrettyUnitTestResultPrinter::OnTestCaseEnd(const TestCase& test_case) {
- if (!GTEST_FLAG(print_time)) return;
-
- const std::string counts =
- FormatCountableNoun(test_case.test_to_run_count(), "test", "tests");
- ColoredPrintf(COLOR_GREEN, "[----------] ");
- printf("%s from %s (%s ms total)\n\n",
- counts.c_str(), test_case.name(),
- internal::StreamableToString(test_case.elapsed_time()).c_str());
- fflush(stdout);
-}
-
-void PrettyUnitTestResultPrinter::OnEnvironmentsTearDownStart(
- const UnitTest& /*unit_test*/) {
- ColoredPrintf(COLOR_GREEN, "[----------] ");
- printf("Global test environment tear-down\n");
- fflush(stdout);
-}
-
-// Internal helper for printing the list of failed tests.
-void PrettyUnitTestResultPrinter::PrintFailedTests(const UnitTest& unit_test) {
- const int failed_test_count = unit_test.failed_test_count();
- if (failed_test_count == 0) {
- return;
- }
-
- for (int i = 0; i < unit_test.total_test_case_count(); ++i) {
- const TestCase& test_case = *unit_test.GetTestCase(i);
- if (!test_case.should_run() || (test_case.failed_test_count() == 0)) {
- continue;
- }
- for (int j = 0; j < test_case.total_test_count(); ++j) {
- const TestInfo& test_info = *test_case.GetTestInfo(j);
- if (!test_info.should_run() || test_info.result()->Passed()) {
- continue;
- }
- ColoredPrintf(COLOR_RED, "[ FAILED ] ");
- printf("%s.%s", test_case.name(), test_info.name());
- PrintFullTestCommentIfPresent(test_info);
- printf("\n");
- }
- }
-}
-
-void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
- int /*iteration*/) {
- ColoredPrintf(COLOR_GREEN, "[==========] ");
- printf("%s from %s ran.",
- FormatTestCount(unit_test.test_to_run_count()).c_str(),
- FormatTestCaseCount(unit_test.test_case_to_run_count()).c_str());
- if (GTEST_FLAG(print_time)) {
- printf(" (%s ms total)",
- internal::StreamableToString(unit_test.elapsed_time()).c_str());
- }
- printf("\n");
- ColoredPrintf(COLOR_GREEN, "[ PASSED ] ");
- printf("%s.\n", FormatTestCount(unit_test.successful_test_count()).c_str());
-
- int num_failures = unit_test.failed_test_count();
- if (!unit_test.Passed()) {
- const int failed_test_count = unit_test.failed_test_count();
- ColoredPrintf(COLOR_RED, "[ FAILED ] ");
- printf("%s, listed below:\n", FormatTestCount(failed_test_count).c_str());
- PrintFailedTests(unit_test);
- printf("\n%2d FAILED %s\n", num_failures,
- num_failures == 1 ? "TEST" : "TESTS");
- }
-
- int num_disabled = unit_test.reportable_disabled_test_count();
- if (num_disabled && !GTEST_FLAG(also_run_disabled_tests)) {
- if (!num_failures) {
- printf("\n"); // Add a spacer if no FAILURE banner is displayed.
- }
- ColoredPrintf(COLOR_YELLOW,
- " YOU HAVE %d DISABLED %s\n\n",
- num_disabled,
- num_disabled == 1 ? "TEST" : "TESTS");
- }
- // Ensure that Google Test output is printed before, e.g., heapchecker output.
- fflush(stdout);
-}
-
-// End PrettyUnitTestResultPrinter
-
-// class TestEventRepeater
-//
-// This class forwards events to other event listeners.
-class TestEventRepeater : public TestEventListener {
- public:
- TestEventRepeater() : forwarding_enabled_(true) {}
- virtual ~TestEventRepeater();
- void Append(TestEventListener *listener);
- TestEventListener* Release(TestEventListener* listener);
-
- // Controls whether events will be forwarded to listeners_. Set to false
- // in death test child processes.
- bool forwarding_enabled() const { return forwarding_enabled_; }
- void set_forwarding_enabled(bool enable) { forwarding_enabled_ = enable; }
-
- virtual void OnTestProgramStart(const UnitTest& unit_test);
- virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration);
- virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test);
- virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test);
- virtual void OnTestCaseStart(const TestCase& test_case);
- virtual void OnTestStart(const TestInfo& test_info);
- virtual void OnTestPartResult(const TestPartResult& result);
- virtual void OnTestEnd(const TestInfo& test_info);
- virtual void OnTestCaseEnd(const TestCase& test_case);
- virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test);
- virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test);
- virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration);
- virtual void OnTestProgramEnd(const UnitTest& unit_test);
-
- private:
- // Controls whether events will be forwarded to listeners_. Set to false
- // in death test child processes.
- bool forwarding_enabled_;
- // The list of listeners that receive events.
- std::vector<TestEventListener*> listeners_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventRepeater);
-};
-
-TestEventRepeater::~TestEventRepeater() {
- ForEach(listeners_, Delete<TestEventListener>);
-}
-
-void TestEventRepeater::Append(TestEventListener *listener) {
- listeners_.push_back(listener);
-}
-
-// TODO(vladl@google.com): Factor the search functionality into Vector::Find.
-TestEventListener* TestEventRepeater::Release(TestEventListener *listener) {
- for (size_t i = 0; i < listeners_.size(); ++i) {
- if (listeners_[i] == listener) {
- listeners_.erase(listeners_.begin() + i);
- return listener;
- }
- }
-
- return NULL;
-}
-
-// Since most methods are very similar, use macros to reduce boilerplate.
-// This defines a member that forwards the call to all listeners.
-#define GTEST_REPEATER_METHOD_(Name, Type) \
-void TestEventRepeater::Name(const Type& parameter) { \
- if (forwarding_enabled_) { \
- for (size_t i = 0; i < listeners_.size(); i++) { \
- listeners_[i]->Name(parameter); \
- } \
- } \
-}
-// This defines a member that forwards the call to all listeners in reverse
-// order.
-#define GTEST_REVERSE_REPEATER_METHOD_(Name, Type) \
-void TestEventRepeater::Name(const Type& parameter) { \
- if (forwarding_enabled_) { \
- for (int i = static_cast<int>(listeners_.size()) - 1; i >= 0; i--) { \
- listeners_[i]->Name(parameter); \
- } \
- } \
-}
-
-GTEST_REPEATER_METHOD_(OnTestProgramStart, UnitTest)
-GTEST_REPEATER_METHOD_(OnEnvironmentsSetUpStart, UnitTest)
-GTEST_REPEATER_METHOD_(OnTestCaseStart, TestCase)
-GTEST_REPEATER_METHOD_(OnTestStart, TestInfo)
-GTEST_REPEATER_METHOD_(OnTestPartResult, TestPartResult)
-GTEST_REPEATER_METHOD_(OnEnvironmentsTearDownStart, UnitTest)
-GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsSetUpEnd, UnitTest)
-GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsTearDownEnd, UnitTest)
-GTEST_REVERSE_REPEATER_METHOD_(OnTestEnd, TestInfo)
-GTEST_REVERSE_REPEATER_METHOD_(OnTestCaseEnd, TestCase)
-GTEST_REVERSE_REPEATER_METHOD_(OnTestProgramEnd, UnitTest)
-
-#undef GTEST_REPEATER_METHOD_
-#undef GTEST_REVERSE_REPEATER_METHOD_
-
-void TestEventRepeater::OnTestIterationStart(const UnitTest& unit_test,
- int iteration) {
- if (forwarding_enabled_) {
- for (size_t i = 0; i < listeners_.size(); i++) {
- listeners_[i]->OnTestIterationStart(unit_test, iteration);
- }
- }
-}
-
-void TestEventRepeater::OnTestIterationEnd(const UnitTest& unit_test,
- int iteration) {
- if (forwarding_enabled_) {
- for (int i = static_cast<int>(listeners_.size()) - 1; i >= 0; i--) {
- listeners_[i]->OnTestIterationEnd(unit_test, iteration);
- }
- }
-}
-
-// End TestEventRepeater
-
-// This class generates an XML output file.
-class XmlUnitTestResultPrinter : public EmptyTestEventListener {
- public:
- explicit XmlUnitTestResultPrinter(const char* output_file);
-
- virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration);
-
- private:
- // Is c a whitespace character that is normalized to a space character
- // when it appears in an XML attribute value?
- static bool IsNormalizableWhitespace(char c) {
- return c == 0x9 || c == 0xA || c == 0xD;
- }
-
- // May c appear in a well-formed XML document?
- static bool IsValidXmlCharacter(char c) {
- return IsNormalizableWhitespace(c) || c >= 0x20;
- }
-
- // Returns an XML-escaped copy of the input string str. If
- // is_attribute is true, the text is meant to appear as an attribute
- // value, and normalizable whitespace is preserved by replacing it
- // with character references.
- static std::string EscapeXml(const std::string& str, bool is_attribute);
-
- // Returns the given string with all characters invalid in XML removed.
- static std::string RemoveInvalidXmlCharacters(const std::string& str);
-
- // Convenience wrapper around EscapeXml when str is an attribute value.
- static std::string EscapeXmlAttribute(const std::string& str) {
- return EscapeXml(str, true);
- }
-
- // Convenience wrapper around EscapeXml when str is not an attribute value.
- static std::string EscapeXmlText(const char* str) {
- return EscapeXml(str, false);
- }
-
- // Verifies that the given attribute belongs to the given element and
- // streams the attribute as XML.
- static void OutputXmlAttribute(std::ostream* stream,
- const std::string& element_name,
- const std::string& name,
- const std::string& value);
-
- // Streams an XML CDATA section, escaping invalid CDATA sequences as needed.
- static void OutputXmlCDataSection(::std::ostream* stream, const char* data);
-
- // Streams an XML representation of a TestInfo object.
- static void OutputXmlTestInfo(::std::ostream* stream,
- const char* test_case_name,
- const TestInfo& test_info);
-
- // Prints an XML representation of a TestCase object
- static void PrintXmlTestCase(::std::ostream* stream,
- const TestCase& test_case);
-
- // Prints an XML summary of unit_test to output stream out.
- static void PrintXmlUnitTest(::std::ostream* stream,
- const UnitTest& unit_test);
-
- // Produces a string representing the test properties in a result as space
- // delimited XML attributes based on the property key="value" pairs.
- // When the std::string is not empty, it includes a space at the beginning,
- // to delimit this attribute from prior attributes.
- static std::string TestPropertiesAsXmlAttributes(const TestResult& result);
-
- // The output file.
- const std::string output_file_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(XmlUnitTestResultPrinter);
-};
-
-// Creates a new XmlUnitTestResultPrinter.
-XmlUnitTestResultPrinter::XmlUnitTestResultPrinter(const char* output_file)
- : output_file_(output_file) {
- if (output_file_.c_str() == NULL || output_file_.empty()) {
- fprintf(stderr, "XML output file may not be null\n");
- fflush(stderr);
- exit(EXIT_FAILURE);
- }
-}
-
-// Called after the unit test ends.
-void XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
- int /*iteration*/) {
- FILE* xmlout = NULL;
- FilePath output_file(output_file_);
- FilePath output_dir(output_file.RemoveFileName());
-
- if (output_dir.CreateDirectoriesRecursively()) {
- xmlout = posix::FOpen(output_file_.c_str(), "w");
- }
- if (xmlout == NULL) {
- // TODO(wan): report the reason of the failure.
- //
- // We don't do it for now as:
- //
- // 1. There is no urgent need for it.
- // 2. It's a bit involved to make the errno variable thread-safe on
- // all three operating systems (Linux, Windows, and Mac OS).
- // 3. To interpret the meaning of errno in a thread-safe way,
- // we need the strerror_r() function, which is not available on
- // Windows.
- fprintf(stderr,
- "Unable to open file \"%s\"\n",
- output_file_.c_str());
- fflush(stderr);
- exit(EXIT_FAILURE);
- }
- std::stringstream stream;
- PrintXmlUnitTest(&stream, unit_test);
- fprintf(xmlout, "%s", StringStreamToString(&stream).c_str());
- fclose(xmlout);
-}
-
-// Returns an XML-escaped copy of the input string str. If is_attribute
-// is true, the text is meant to appear as an attribute value, and
-// normalizable whitespace is preserved by replacing it with character
-// references.
-//
-// Invalid XML characters in str, if any, are stripped from the output.
-// It is expected that most, if not all, of the text processed by this
-// module will consist of ordinary English text.
-// If this module is ever modified to produce version 1.1 XML output,
-// most invalid characters can be retained using character references.
-// TODO(wan): It might be nice to have a minimally invasive, human-readable
-// escaping scheme for invalid characters, rather than dropping them.
-std::string XmlUnitTestResultPrinter::EscapeXml(
- const std::string& str, bool is_attribute) {
- Message m;
-
- for (size_t i = 0; i < str.size(); ++i) {
- const char ch = str[i];
- switch (ch) {
- case '<':
- m << "&lt;";
- break;
- case '>':
- m << "&gt;";
- break;
- case '&':
- m << "&amp;";
- break;
- case '\'':
- if (is_attribute)
- m << "&apos;";
- else
- m << '\'';
- break;
- case '"':
- if (is_attribute)
- m << "&quot;";
- else
- m << '"';
- break;
- default:
- if (IsValidXmlCharacter(ch)) {
- if (is_attribute && IsNormalizableWhitespace(ch))
- m << "&#x" << String::FormatByte(static_cast<unsigned char>(ch))
- << ";";
- else
- m << ch;
- }
- break;
- }
- }
-
- return m.GetString();
-}
-
-// Returns the given string with all characters invalid in XML removed.
-// Currently invalid characters are dropped from the string. An
-// alternative is to replace them with certain characters such as . or ?.
-std::string XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(
- const std::string& str) {
- std::string output;
- output.reserve(str.size());
- for (std::string::const_iterator it = str.begin(); it != str.end(); ++it)
- if (IsValidXmlCharacter(*it))
- output.push_back(*it);
-
- return output;
-}
-
-// The following routines generate an XML representation of a UnitTest
-// object.
-//
-// This is how Google Test concepts map to the DTD:
-//
-// <testsuites name="AllTests"> <-- corresponds to a UnitTest object
-// <testsuite name="testcase-name"> <-- corresponds to a TestCase object
-// <testcase name="test-name"> <-- corresponds to a TestInfo object
-// <failure message="...">...</failure>
-// <failure message="...">...</failure>
-// <failure message="...">...</failure>
-// <-- individual assertion failures
-// </testcase>
-// </testsuite>
-// </testsuites>
-
-// Formats the given time in milliseconds as seconds.
-std::string FormatTimeInMillisAsSeconds(TimeInMillis ms) {
- ::std::stringstream ss;
- ss << (static_cast<double>(ms) * 1e-3);
- return ss.str();
-}
-
-static bool PortableLocaltime(time_t seconds, struct tm* out) {
-#if defined(_MSC_VER)
- return localtime_s(out, &seconds) == 0;
-#elif defined(__MINGW32__) || defined(__MINGW64__)
- // MINGW <time.h> provides neither localtime_r nor localtime_s, but uses
- // Windows' localtime(), which has a thread-local tm buffer.
- struct tm* tm_ptr = localtime(&seconds); // NOLINT
- if (tm_ptr == NULL)
- return false;
- *out = *tm_ptr;
- return true;
-#else
- return localtime_r(&seconds, out) != NULL;
-#endif
-}
-
-// Converts the given epoch time in milliseconds to a date string in the ISO
-// 8601 format, without the timezone information.
-std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms) {
- struct tm time_struct;
- if (!PortableLocaltime(static_cast<time_t>(ms / 1000), &time_struct))
- return "";
- // YYYY-MM-DDThh:mm:ss
- return StreamableToString(time_struct.tm_year + 1900) + "-" +
- String::FormatIntWidth2(time_struct.tm_mon + 1) + "-" +
- String::FormatIntWidth2(time_struct.tm_mday) + "T" +
- String::FormatIntWidth2(time_struct.tm_hour) + ":" +
- String::FormatIntWidth2(time_struct.tm_min) + ":" +
- String::FormatIntWidth2(time_struct.tm_sec);
-}
-
-// Streams an XML CDATA section, escaping invalid CDATA sequences as needed.
-void XmlUnitTestResultPrinter::OutputXmlCDataSection(::std::ostream* stream,
- const char* data) {
- const char* segment = data;
- *stream << "<![CDATA[";
- for (;;) {
- const char* const next_segment = strstr(segment, "]]>");
- if (next_segment != NULL) {
- stream->write(
- segment, static_cast<std::streamsize>(next_segment - segment));
- *stream << "]]>]]&gt;<![CDATA[";
- segment = next_segment + strlen("]]>");
- } else {
- *stream << segment;
- break;
- }
- }
- *stream << "]]>";
-}
-
-void XmlUnitTestResultPrinter::OutputXmlAttribute(
- std::ostream* stream,
- const std::string& element_name,
- const std::string& name,
- const std::string& value) {
- const std::vector<std::string>& allowed_names =
- GetReservedAttributesForElement(element_name);
-
- GTEST_CHECK_(std::find(allowed_names.begin(), allowed_names.end(), name) !=
- allowed_names.end())
- << "Attribute " << name << " is not allowed for element <" << element_name
- << ">.";
-
- *stream << " " << name << "=\"" << EscapeXmlAttribute(value) << "\"";
-}
-
-// Prints an XML representation of a TestInfo object.
-// TODO(wan): There is also value in printing properties with the plain printer.
-void XmlUnitTestResultPrinter::OutputXmlTestInfo(::std::ostream* stream,
- const char* test_case_name,
- const TestInfo& test_info) {
- const TestResult& result = *test_info.result();
- const std::string kTestcase = "testcase";
-
- *stream << " <testcase";
- OutputXmlAttribute(stream, kTestcase, "name", test_info.name());
-
- if (test_info.value_param() != NULL) {
- OutputXmlAttribute(stream, kTestcase, "value_param",
- test_info.value_param());
- }
- if (test_info.type_param() != NULL) {
- OutputXmlAttribute(stream, kTestcase, "type_param", test_info.type_param());
- }
-
- OutputXmlAttribute(stream, kTestcase, "status",
- test_info.should_run() ? "run" : "notrun");
- OutputXmlAttribute(stream, kTestcase, "time",
- FormatTimeInMillisAsSeconds(result.elapsed_time()));
- OutputXmlAttribute(stream, kTestcase, "classname", test_case_name);
- *stream << TestPropertiesAsXmlAttributes(result);
-
- int failures = 0;
- for (int i = 0; i < result.total_part_count(); ++i) {
- const TestPartResult& part = result.GetTestPartResult(i);
- if (part.failed()) {
- if (++failures == 1) {
- *stream << ">\n";
- }
- const string location = internal::FormatCompilerIndependentFileLocation(
- part.file_name(), part.line_number());
- const string summary = location + "\n" + part.summary();
- *stream << " <failure message=\""
- << EscapeXmlAttribute(summary.c_str())
- << "\" type=\"\">";
- const string detail = location + "\n" + part.message();
- OutputXmlCDataSection(stream, RemoveInvalidXmlCharacters(detail).c_str());
- *stream << "</failure>\n";
- }
- }
-
- if (failures == 0)
- *stream << " />\n";
- else
- *stream << " </testcase>\n";
-}
-
-// Prints an XML representation of a TestCase object
-void XmlUnitTestResultPrinter::PrintXmlTestCase(std::ostream* stream,
- const TestCase& test_case) {
- const std::string kTestsuite = "testsuite";
- *stream << " <" << kTestsuite;
- OutputXmlAttribute(stream, kTestsuite, "name", test_case.name());
- OutputXmlAttribute(stream, kTestsuite, "tests",
- StreamableToString(test_case.reportable_test_count()));
- OutputXmlAttribute(stream, kTestsuite, "failures",
- StreamableToString(test_case.failed_test_count()));
- OutputXmlAttribute(
- stream, kTestsuite, "disabled",
- StreamableToString(test_case.reportable_disabled_test_count()));
- OutputXmlAttribute(stream, kTestsuite, "errors", "0");
- OutputXmlAttribute(stream, kTestsuite, "time",
- FormatTimeInMillisAsSeconds(test_case.elapsed_time()));
- *stream << TestPropertiesAsXmlAttributes(test_case.ad_hoc_test_result())
- << ">\n";
-
- for (int i = 0; i < test_case.total_test_count(); ++i) {
- if (test_case.GetTestInfo(i)->is_reportable())
- OutputXmlTestInfo(stream, test_case.name(), *test_case.GetTestInfo(i));
- }
- *stream << " </" << kTestsuite << ">\n";
-}
-
-// Prints an XML summary of unit_test to output stream out.
-void XmlUnitTestResultPrinter::PrintXmlUnitTest(std::ostream* stream,
- const UnitTest& unit_test) {
- const std::string kTestsuites = "testsuites";
-
- *stream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
- *stream << "<" << kTestsuites;
-
- OutputXmlAttribute(stream, kTestsuites, "tests",
- StreamableToString(unit_test.reportable_test_count()));
- OutputXmlAttribute(stream, kTestsuites, "failures",
- StreamableToString(unit_test.failed_test_count()));
- OutputXmlAttribute(
- stream, kTestsuites, "disabled",
- StreamableToString(unit_test.reportable_disabled_test_count()));
- OutputXmlAttribute(stream, kTestsuites, "errors", "0");
- OutputXmlAttribute(
- stream, kTestsuites, "timestamp",
- FormatEpochTimeInMillisAsIso8601(unit_test.start_timestamp()));
- OutputXmlAttribute(stream, kTestsuites, "time",
- FormatTimeInMillisAsSeconds(unit_test.elapsed_time()));
-
- if (GTEST_FLAG(shuffle)) {
- OutputXmlAttribute(stream, kTestsuites, "random_seed",
- StreamableToString(unit_test.random_seed()));
- }
-
- *stream << TestPropertiesAsXmlAttributes(unit_test.ad_hoc_test_result());
-
- OutputXmlAttribute(stream, kTestsuites, "name", "AllTests");
- *stream << ">\n";
-
- for (int i = 0; i < unit_test.total_test_case_count(); ++i) {
- if (unit_test.GetTestCase(i)->reportable_test_count() > 0)
- PrintXmlTestCase(stream, *unit_test.GetTestCase(i));
- }
- *stream << "</" << kTestsuites << ">\n";
-}
-
-// Produces a string representing the test properties in a result as space
-// delimited XML attributes based on the property key="value" pairs.
-std::string XmlUnitTestResultPrinter::TestPropertiesAsXmlAttributes(
- const TestResult& result) {
- Message attributes;
- for (int i = 0; i < result.test_property_count(); ++i) {
- const TestProperty& property = result.GetTestProperty(i);
- attributes << " " << property.key() << "="
- << "\"" << EscapeXmlAttribute(property.value()) << "\"";
- }
- return attributes.GetString();
-}
-
-// End XmlUnitTestResultPrinter
-
-#if GTEST_CAN_STREAM_RESULTS_
-
-// Checks if str contains '=', '&', '%' or '\n' characters. If yes,
-// replaces them by "%xx" where xx is their hexadecimal value. For
-// example, replaces "=" with "%3D". This algorithm is O(strlen(str))
-// in both time and space -- important as the input str may contain an
-// arbitrarily long test failure message and stack trace.
-string StreamingListener::UrlEncode(const char* str) {
- string result;
- result.reserve(strlen(str) + 1);
- for (char ch = *str; ch != '\0'; ch = *++str) {
- switch (ch) {
- case '%':
- case '=':
- case '&':
- case '\n':
- result.append("%" + String::FormatByte(static_cast<unsigned char>(ch)));
- break;
- default:
- result.push_back(ch);
- break;
- }
- }
- return result;
-}
-
-void StreamingListener::SocketWriter::MakeConnection() {
- GTEST_CHECK_(sockfd_ == -1)
- << "MakeConnection() can't be called when there is already a connection.";
-
- addrinfo hints;
- memset(&hints, 0, sizeof(hints));
- hints.ai_family = AF_UNSPEC; // To allow both IPv4 and IPv6 addresses.
- hints.ai_socktype = SOCK_STREAM;
- addrinfo* servinfo = NULL;
-
- // Use the getaddrinfo() to get a linked list of IP addresses for
- // the given host name.
- const int error_num = getaddrinfo(
- host_name_.c_str(), port_num_.c_str(), &hints, &servinfo);
- if (error_num != 0) {
- GTEST_LOG_(WARNING) << "stream_result_to: getaddrinfo() failed: "
- << gai_strerror(error_num);
- }
-
- // Loop through all the results and connect to the first we can.
- for (addrinfo* cur_addr = servinfo; sockfd_ == -1 && cur_addr != NULL;
- cur_addr = cur_addr->ai_next) {
- sockfd_ = socket(
- cur_addr->ai_family, cur_addr->ai_socktype, cur_addr->ai_protocol);
- if (sockfd_ != -1) {
- // Connect the client socket to the server socket.
- if (connect(sockfd_, cur_addr->ai_addr, cur_addr->ai_addrlen) == -1) {
- close(sockfd_);
- sockfd_ = -1;
- }
- }
- }
-
- freeaddrinfo(servinfo); // all done with this structure
-
- if (sockfd_ == -1) {
- GTEST_LOG_(WARNING) << "stream_result_to: failed to connect to "
- << host_name_ << ":" << port_num_;
- }
-}
-
-// End of class Streaming Listener
-#endif // GTEST_CAN_STREAM_RESULTS__
-
-// Class ScopedTrace
-
-// Pushes the given source file location and message onto a per-thread
-// trace stack maintained by Google Test.
-ScopedTrace::ScopedTrace(const char* file, int line, const Message& message)
- GTEST_LOCK_EXCLUDED_(&UnitTest::mutex_) {
- TraceInfo trace;
- trace.file = file;
- trace.line = line;
- trace.message = message.GetString();
-
- UnitTest::GetInstance()->PushGTestTrace(trace);
-}
-
-// Pops the info pushed by the c'tor.
-ScopedTrace::~ScopedTrace()
- GTEST_LOCK_EXCLUDED_(&UnitTest::mutex_) {
- UnitTest::GetInstance()->PopGTestTrace();
-}
-
-
-// class OsStackTraceGetter
-
-const char* const OsStackTraceGetterInterface::kElidedFramesMarker =
- "... " GTEST_NAME_ " internal frames ...";
-
-string OsStackTraceGetter::CurrentStackTrace(int /*max_depth*/,
- int /*skip_count*/) {
- return "";
-}
-
-void OsStackTraceGetter::UponLeavingGTest() {}
-
-// A helper class that creates the premature-exit file in its
-// constructor and deletes the file in its destructor.
-class ScopedPrematureExitFile {
- public:
- explicit ScopedPrematureExitFile(const char* premature_exit_filepath)
- : premature_exit_filepath_(premature_exit_filepath) {
- // If a path to the premature-exit file is specified...
- if (premature_exit_filepath != NULL && *premature_exit_filepath != '\0') {
- // create the file with a single "0" character in it. I/O
- // errors are ignored as there's nothing better we can do and we
- // don't want to fail the test because of this.
- FILE* pfile = posix::FOpen(premature_exit_filepath, "w");
- fwrite("0", 1, 1, pfile);
- fclose(pfile);
- }
- }
-
- ~ScopedPrematureExitFile() {
- if (premature_exit_filepath_ != NULL && *premature_exit_filepath_ != '\0') {
- remove(premature_exit_filepath_);
- }
- }
-
- private:
- const char* const premature_exit_filepath_;
-
- GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedPrematureExitFile);
-};
-
-} // namespace internal
-
-// class TestEventListeners
-
-TestEventListeners::TestEventListeners()
- : repeater_(new internal::TestEventRepeater()),
- default_result_printer_(NULL),
- default_xml_generator_(NULL) {
-}
-
-TestEventListeners::~TestEventListeners() { delete repeater_; }
-
-// Returns the standard listener responsible for the default console
-// output. Can be removed from the listeners list to shut down default
-// console output. Note that removing this object from the listener list
-// with Release transfers its ownership to the user.
-void TestEventListeners::Append(TestEventListener* listener) {
- repeater_->Append(listener);
-}
-
-// Removes the given event listener from the list and returns it. It then
-// becomes the caller's responsibility to delete the listener. Returns
-// NULL if the listener is not found in the list.
-TestEventListener* TestEventListeners::Release(TestEventListener* listener) {
- if (listener == default_result_printer_)
- default_result_printer_ = NULL;
- else if (listener == default_xml_generator_)
- default_xml_generator_ = NULL;
- return repeater_->Release(listener);
-}
-
-// Returns repeater that broadcasts the TestEventListener events to all
-// subscribers.
-TestEventListener* TestEventListeners::repeater() { return repeater_; }
-
-// Sets the default_result_printer attribute to the provided listener.
-// The listener is also added to the listener list and previous
-// default_result_printer is removed from it and deleted. The listener can
-// also be NULL in which case it will not be added to the list. Does
-// nothing if the previous and the current listener objects are the same.
-void TestEventListeners::SetDefaultResultPrinter(TestEventListener* listener) {
- if (default_result_printer_ != listener) {
- // It is an error to pass this method a listener that is already in the
- // list.
- delete Release(default_result_printer_);
- default_result_printer_ = listener;
- if (listener != NULL)
- Append(listener);
- }
-}
-
-// Sets the default_xml_generator attribute to the provided listener. The
-// listener is also added to the listener list and previous
-// default_xml_generator is removed from it and deleted. The listener can
-// also be NULL in which case it will not be added to the list. Does
-// nothing if the previous and the current listener objects are the same.
-void TestEventListeners::SetDefaultXmlGenerator(TestEventListener* listener) {
- if (default_xml_generator_ != listener) {
- // It is an error to pass this method a listener that is already in the
- // list.
- delete Release(default_xml_generator_);
- default_xml_generator_ = listener;
- if (listener != NULL)
- Append(listener);
- }
-}
-
-// Controls whether events will be forwarded by the repeater to the
-// listeners in the list.
-bool TestEventListeners::EventForwardingEnabled() const {
- return repeater_->forwarding_enabled();
-}
-
-void TestEventListeners::SuppressEventForwarding() {
- repeater_->set_forwarding_enabled(false);
-}
-
-// class UnitTest
-
-// Gets the singleton UnitTest object. The first time this method is
-// called, a UnitTest object is constructed and returned. Consecutive
-// calls will return the same object.
-//
-// We don't protect this under mutex_ as a user is not supposed to
-// call this before main() starts, from which point on the return
-// value will never change.
-UnitTest* UnitTest::GetInstance() {
- // When compiled with MSVC 7.1 in optimized mode, destroying the
- // UnitTest object upon exiting the program messes up the exit code,
- // causing successful tests to appear failed. We have to use a
- // different implementation in this case to bypass the compiler bug.
- // This implementation makes the compiler happy, at the cost of
- // leaking the UnitTest object.
-
- // CodeGear C++Builder insists on a public destructor for the
- // default implementation. Use this implementation to keep good OO
- // design with private destructor.
-
-#if (_MSC_VER == 1310 && !defined(_DEBUG)) || defined(__BORLANDC__)
- static UnitTest* const instance = new UnitTest;
- return instance;
-#else
- static UnitTest instance;
- return &instance;
-#endif // (_MSC_VER == 1310 && !defined(_DEBUG)) || defined(__BORLANDC__)
-}
-
-// Gets the number of successful test cases.
-int UnitTest::successful_test_case_count() const {
- return impl()->successful_test_case_count();
-}
-
-// Gets the number of failed test cases.
-int UnitTest::failed_test_case_count() const {
- return impl()->failed_test_case_count();
-}
-
-// Gets the number of all test cases.
-int UnitTest::total_test_case_count() const {
- return impl()->total_test_case_count();
-}
-
-// Gets the number of all test cases that contain at least one test
-// that should run.
-int UnitTest::test_case_to_run_count() const {
- return impl()->test_case_to_run_count();
-}
-
-// Gets the number of successful tests.
-int UnitTest::successful_test_count() const {
- return impl()->successful_test_count();
-}
-
-// Gets the number of failed tests.
-int UnitTest::failed_test_count() const { return impl()->failed_test_count(); }
-
-// Gets the number of disabled tests that will be reported in the XML report.
-int UnitTest::reportable_disabled_test_count() const {
- return impl()->reportable_disabled_test_count();
-}
-
-// Gets the number of disabled tests.
-int UnitTest::disabled_test_count() const {
- return impl()->disabled_test_count();
-}
-
-// Gets the number of tests to be printed in the XML report.
-int UnitTest::reportable_test_count() const {
- return impl()->reportable_test_count();
-}
-
-// Gets the number of all tests.
-int UnitTest::total_test_count() const { return impl()->total_test_count(); }
-
-// Gets the number of tests that should run.
-int UnitTest::test_to_run_count() const { return impl()->test_to_run_count(); }
-
-// Gets the time of the test program start, in ms from the start of the
-// UNIX epoch.
-internal::TimeInMillis UnitTest::start_timestamp() const {
- return impl()->start_timestamp();
-}
-
-// Gets the elapsed time, in milliseconds.
-internal::TimeInMillis UnitTest::elapsed_time() const {
- return impl()->elapsed_time();
-}
-
-// Returns true iff the unit test passed (i.e. all test cases passed).
-bool UnitTest::Passed() const { return impl()->Passed(); }
-
-// Returns true iff the unit test failed (i.e. some test case failed
-// or something outside of all tests failed).
-bool UnitTest::Failed() const { return impl()->Failed(); }
-
-// Gets the i-th test case among all the test cases. i can range from 0 to
-// total_test_case_count() - 1. If i is not in that range, returns NULL.
-const TestCase* UnitTest::GetTestCase(int i) const {
- return impl()->GetTestCase(i);
-}
-
-// Returns the TestResult containing information on test failures and
-// properties logged outside of individual test cases.
-const TestResult& UnitTest::ad_hoc_test_result() const {
- return *impl()->ad_hoc_test_result();
-}
-
-// Gets the i-th test case among all the test cases. i can range from 0 to
-// total_test_case_count() - 1. If i is not in that range, returns NULL.
-TestCase* UnitTest::GetMutableTestCase(int i) {
- return impl()->GetMutableTestCase(i);
-}
-
-// Returns the list of event listeners that can be used to track events
-// inside Google Test.
-TestEventListeners& UnitTest::listeners() {
- return *impl()->listeners();
-}
-
-// Registers and returns a global test environment. When a test
-// program is run, all global test environments will be set-up in the
-// order they were registered. After all tests in the program have
-// finished, all global test environments will be torn-down in the
-// *reverse* order they were registered.
-//
-// The UnitTest object takes ownership of the given environment.
-//
-// We don't protect this under mutex_, as we only support calling it
-// from the main thread.
-Environment* UnitTest::AddEnvironment(Environment* env) {
- if (env == NULL) {
- return NULL;
- }
-
- impl_->environments().push_back(env);
- return env;
-}
-
-// Adds a TestPartResult to the current TestResult object. All Google Test
-// assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call
-// this to report their results. The user code should use the
-// assertion macros instead of calling this directly.
-void UnitTest::AddTestPartResult(
- TestPartResult::Type result_type,
- const char* file_name,
- int line_number,
- const std::string& message,
- const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) {
- Message msg;
- msg << message;
-
- internal::MutexLock lock(&mutex_);
- if (impl_->gtest_trace_stack().size() > 0) {
- msg << "\n" << GTEST_NAME_ << " trace:";
-
- for (int i = static_cast<int>(impl_->gtest_trace_stack().size());
- i > 0; --i) {
- const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1];
- msg << "\n" << internal::FormatFileLocation(trace.file, trace.line)
- << " " << trace.message;
- }
- }
-
- if (os_stack_trace.c_str() != NULL && !os_stack_trace.empty()) {
- msg << internal::kStackTraceMarker << os_stack_trace;
- }
-
- const TestPartResult result =
- TestPartResult(result_type, file_name, line_number,
- msg.GetString().c_str());
- impl_->GetTestPartResultReporterForCurrentThread()->
- ReportTestPartResult(result);
-
- if (result_type != TestPartResult::kSuccess) {
- // gtest_break_on_failure takes precedence over
- // gtest_throw_on_failure. This allows a user to set the latter
- // in the code (perhaps in order to use Google Test assertions
- // with another testing framework) and specify the former on the
- // command line for debugging.
- if (GTEST_FLAG(break_on_failure)) {
-#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
- // Using DebugBreak on Windows allows gtest to still break into a debugger
- // when a failure happens and both the --gtest_break_on_failure and
- // the --gtest_catch_exceptions flags are specified.
- DebugBreak();
-#else
- // Dereference NULL through a volatile pointer to prevent the compiler
- // from removing. We use this rather than abort() or __builtin_trap() for
- // portability: Symbian doesn't implement abort() well, and some debuggers
- // don't correctly trap abort().
- *static_cast<volatile int*>(NULL) = 1;
-#endif // GTEST_OS_WINDOWS
- } else if (GTEST_FLAG(throw_on_failure)) {
-#if GTEST_HAS_EXCEPTIONS
- throw internal::GoogleTestFailureException(result);
-#else
- // We cannot call abort() as it generates a pop-up in debug mode
- // that cannot be suppressed in VC 7.1 or below.
- exit(1);
-#endif
- }
- }
-}
-
-// Adds a TestProperty to the current TestResult object when invoked from
-// inside a test, to current TestCase's ad_hoc_test_result_ when invoked
-// from SetUpTestCase or TearDownTestCase, or to the global property set
-// when invoked elsewhere. If the result already contains a property with
-// the same key, the value will be updated.
-void UnitTest::RecordProperty(const std::string& key,
- const std::string& value) {
- impl_->RecordProperty(TestProperty(key, value));
-}
-
-// Runs all tests in this UnitTest object and prints the result.
-// Returns 0 if successful, or 1 otherwise.
-//
-// We don't protect this under mutex_, as we only support calling it
-// from the main thread.
-int UnitTest::Run() {
- const bool in_death_test_child_process =
- internal::GTEST_FLAG(internal_run_death_test).length() > 0;
-
- // Google Test implements this protocol for catching that a test
- // program exits before returning control to Google Test:
- //
- // 1. Upon start, Google Test creates a file whose absolute path
- // is specified by the environment variable
- // TEST_PREMATURE_EXIT_FILE.
- // 2. When Google Test has finished its work, it deletes the file.
- //
- // This allows a test runner to set TEST_PREMATURE_EXIT_FILE before
- // running a Google-Test-based test program and check the existence
- // of the file at the end of the test execution to see if it has
- // exited prematurely.
-
- // If we are in the child process of a death test, don't
- // create/delete the premature exit file, as doing so is unnecessary
- // and will confuse the parent process. Otherwise, create/delete
- // the file upon entering/leaving this function. If the program
- // somehow exits before this function has a chance to return, the
- // premature-exit file will be left undeleted, causing a test runner
- // that understands the premature-exit-file protocol to report the
- // test as having failed.
- const internal::ScopedPrematureExitFile premature_exit_file(
- in_death_test_child_process ?
- NULL : internal::posix::GetEnv("TEST_PREMATURE_EXIT_FILE"));
-
- // Captures the value of GTEST_FLAG(catch_exceptions). This value will be
- // used for the duration of the program.
- impl()->set_catch_exceptions(GTEST_FLAG(catch_exceptions));
-
-#if GTEST_HAS_SEH
- // Either the user wants Google Test to catch exceptions thrown by the
- // tests or this is executing in the context of death test child
- // process. In either case the user does not want to see pop-up dialogs
- // about crashes - they are expected.
- if (impl()->catch_exceptions() || in_death_test_child_process) {
-# if !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
- // SetErrorMode doesn't exist on CE.
- SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOALIGNMENTFAULTEXCEPT |
- SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX);
-# endif // !GTEST_OS_WINDOWS_MOBILE
-
-# if (defined(_MSC_VER) || GTEST_OS_WINDOWS_MINGW) && !GTEST_OS_WINDOWS_MOBILE
- // Death test children can be terminated with _abort(). On Windows,
- // _abort() can show a dialog with a warning message. This forces the
- // abort message to go to stderr instead.
- _set_error_mode(_OUT_TO_STDERR);
-# endif
-
-# if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE
- // In the debug version, Visual Studio pops up a separate dialog
- // offering a choice to debug the aborted program. We need to suppress
- // this dialog or it will pop up for every EXPECT/ASSERT_DEATH statement
- // executed. Google Test will notify the user of any unexpected
- // failure via stderr.
- //
- // VC++ doesn't define _set_abort_behavior() prior to the version 8.0.
- // Users of prior VC versions shall suffer the agony and pain of
- // clicking through the countless debug dialogs.
- // TODO(vladl@google.com): find a way to suppress the abort dialog() in the
- // debug mode when compiled with VC 7.1 or lower.
- if (!GTEST_FLAG(break_on_failure))
- _set_abort_behavior(
- 0x0, // Clear the following flags:
- _WRITE_ABORT_MSG | _CALL_REPORTFAULT); // pop-up window, core dump.
-# endif
- }
-#endif // GTEST_HAS_SEH
-
- return internal::HandleExceptionsInMethodIfSupported(
- impl(),
- &internal::UnitTestImpl::RunAllTests,
- "auxiliary test code (environments or event listeners)") ? 0 : 1;
-}
-
-// Returns the working directory when the first TEST() or TEST_F() was
-// executed.
-const char* UnitTest::original_working_dir() const {
- return impl_->original_working_dir_.c_str();
-}
-
-// Returns the TestCase object for the test that's currently running,
-// or NULL if no test is running.
-const TestCase* UnitTest::current_test_case() const
- GTEST_LOCK_EXCLUDED_(mutex_) {
- internal::MutexLock lock(&mutex_);
- return impl_->current_test_case();
-}
-
-// Returns the TestInfo object for the test that's currently running,
-// or NULL if no test is running.
-const TestInfo* UnitTest::current_test_info() const
- GTEST_LOCK_EXCLUDED_(mutex_) {
- internal::MutexLock lock(&mutex_);
- return impl_->current_test_info();
-}
-
-// Returns the random seed used at the start of the current test run.
-int UnitTest::random_seed() const { return impl_->random_seed(); }
-
-#if GTEST_HAS_PARAM_TEST
-// Returns ParameterizedTestCaseRegistry object used to keep track of
-// value-parameterized tests and instantiate and register them.
-internal::ParameterizedTestCaseRegistry&
- UnitTest::parameterized_test_registry()
- GTEST_LOCK_EXCLUDED_(mutex_) {
- return impl_->parameterized_test_registry();
-}
-#endif // GTEST_HAS_PARAM_TEST
-
-// Creates an empty UnitTest.
-UnitTest::UnitTest() {
- impl_ = new internal::UnitTestImpl(this);
-}
-
-// Destructor of UnitTest.
-UnitTest::~UnitTest() {
- delete impl_;
-}
-
-// Pushes a trace defined by SCOPED_TRACE() on to the per-thread
-// Google Test trace stack.
-void UnitTest::PushGTestTrace(const internal::TraceInfo& trace)
- GTEST_LOCK_EXCLUDED_(mutex_) {
- internal::MutexLock lock(&mutex_);
- impl_->gtest_trace_stack().push_back(trace);
-}
-
-// Pops a trace from the per-thread Google Test trace stack.
-void UnitTest::PopGTestTrace()
- GTEST_LOCK_EXCLUDED_(mutex_) {
- internal::MutexLock lock(&mutex_);
- impl_->gtest_trace_stack().pop_back();
-}
-
-namespace internal {
-
-UnitTestImpl::UnitTestImpl(UnitTest* parent)
- : parent_(parent),
- GTEST_DISABLE_MSC_WARNINGS_PUSH_(4355 /* using this in initializer */)
- default_global_test_part_result_reporter_(this),
- default_per_thread_test_part_result_reporter_(this),
- GTEST_DISABLE_MSC_WARNINGS_POP_()
- global_test_part_result_repoter_(
- &default_global_test_part_result_reporter_),
- per_thread_test_part_result_reporter_(
- &default_per_thread_test_part_result_reporter_),
-#if GTEST_HAS_PARAM_TEST
- parameterized_test_registry_(),
- parameterized_tests_registered_(false),
-#endif // GTEST_HAS_PARAM_TEST
- last_death_test_case_(-1),
- current_test_case_(NULL),
- current_test_info_(NULL),
- ad_hoc_test_result_(),
- os_stack_trace_getter_(NULL),
- post_flag_parse_init_performed_(false),
- random_seed_(0), // Will be overridden by the flag before first use.
- random_(0), // Will be reseeded before first use.
- start_timestamp_(0),
- elapsed_time_(0),
-#if GTEST_HAS_DEATH_TEST
- death_test_factory_(new DefaultDeathTestFactory),
-#endif
- // Will be overridden by the flag before first use.
- catch_exceptions_(false) {
- listeners()->SetDefaultResultPrinter(new PrettyUnitTestResultPrinter);
-}
-
-UnitTestImpl::~UnitTestImpl() {
- // Deletes every TestCase.
- ForEach(test_cases_, internal::Delete<TestCase>);
-
- // Deletes every Environment.
- ForEach(environments_, internal::Delete<Environment>);
-
- delete os_stack_trace_getter_;
-}
-
-// Adds a TestProperty to the current TestResult object when invoked in a
-// context of a test, to current test case's ad_hoc_test_result when invoke
-// from SetUpTestCase/TearDownTestCase, or to the global property set
-// otherwise. If the result already contains a property with the same key,
-// the value will be updated.
-void UnitTestImpl::RecordProperty(const TestProperty& test_property) {
- std::string xml_element;
- TestResult* test_result; // TestResult appropriate for property recording.
-
- if (current_test_info_ != NULL) {
- xml_element = "testcase";
- test_result = &(current_test_info_->result_);
- } else if (current_test_case_ != NULL) {
- xml_element = "testsuite";
- test_result = &(current_test_case_->ad_hoc_test_result_);
- } else {
- xml_element = "testsuites";
- test_result = &ad_hoc_test_result_;
- }
- test_result->RecordProperty(xml_element, test_property);
-}
-
-#if GTEST_HAS_DEATH_TEST
-// Disables event forwarding if the control is currently in a death test
-// subprocess. Must not be called before InitGoogleTest.
-void UnitTestImpl::SuppressTestEventsIfInSubprocess() {
- if (internal_run_death_test_flag_.get() != NULL)
- listeners()->SuppressEventForwarding();
-}
-#endif // GTEST_HAS_DEATH_TEST
-
-// Initializes event listeners performing XML output as specified by
-// UnitTestOptions. Must not be called before InitGoogleTest.
-void UnitTestImpl::ConfigureXmlOutput() {
- const std::string& output_format = UnitTestOptions::GetOutputFormat();
- if (output_format == "xml") {
- listeners()->SetDefaultXmlGenerator(new XmlUnitTestResultPrinter(
- UnitTestOptions::GetAbsolutePathToOutputFile().c_str()));
- } else if (output_format != "") {
- printf("WARNING: unrecognized output format \"%s\" ignored.\n",
- output_format.c_str());
- fflush(stdout);
- }
-}
-
-#if GTEST_CAN_STREAM_RESULTS_
-// Initializes event listeners for streaming test results in string form.
-// Must not be called before InitGoogleTest.
-void UnitTestImpl::ConfigureStreamingOutput() {
- const std::string& target = GTEST_FLAG(stream_result_to);
- if (!target.empty()) {
- const size_t pos = target.find(':');
- if (pos != std::string::npos) {
- listeners()->Append(new StreamingListener(target.substr(0, pos),
- target.substr(pos+1)));
- } else {
- printf("WARNING: unrecognized streaming target \"%s\" ignored.\n",
- target.c_str());
- fflush(stdout);
- }
- }
-}
-#endif // GTEST_CAN_STREAM_RESULTS_
-
-// Performs initialization dependent upon flag values obtained in
-// ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to
-// ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest
-// this function is also called from RunAllTests. Since this function can be
-// called more than once, it has to be idempotent.
-void UnitTestImpl::PostFlagParsingInit() {
- // Ensures that this function does not execute more than once.
- if (!post_flag_parse_init_performed_) {
- post_flag_parse_init_performed_ = true;
-
-#if defined(GTEST_CUSTOM_TEST_EVENT_LISTENER_)
- // Register to send notifications about key process state changes.
- listeners()->Append(new GTEST_CUSTOM_TEST_EVENT_LISTENER_());
-#endif // defined(GTEST_CUSTOM_TEST_EVENT_LISTENER_)
-
-#if GTEST_HAS_DEATH_TEST
- InitDeathTestSubprocessControlInfo();
- SuppressTestEventsIfInSubprocess();
-#endif // GTEST_HAS_DEATH_TEST
-
- // Registers parameterized tests. This makes parameterized tests
- // available to the UnitTest reflection API without running
- // RUN_ALL_TESTS.
- RegisterParameterizedTests();
-
- // Configures listeners for XML output. This makes it possible for users
- // to shut down the default XML output before invoking RUN_ALL_TESTS.
- ConfigureXmlOutput();
-
-#if GTEST_CAN_STREAM_RESULTS_
- // Configures listeners for streaming test results to the specified server.
- ConfigureStreamingOutput();
-#endif // GTEST_CAN_STREAM_RESULTS_
- }
-}
-
-// A predicate that checks the name of a TestCase against a known
-// value.
-//
-// This is used for implementation of the UnitTest class only. We put
-// it in the anonymous namespace to prevent polluting the outer
-// namespace.
-//
-// TestCaseNameIs is copyable.
-class TestCaseNameIs {
- public:
- // Constructor.
- explicit TestCaseNameIs(const std::string& name)
- : name_(name) {}
-
- // Returns true iff the name of test_case matches name_.
- bool operator()(const TestCase* test_case) const {
- return test_case != NULL && strcmp(test_case->name(), name_.c_str()) == 0;
- }
-
- private:
- std::string name_;
-};
-
-// Finds and returns a TestCase with the given name. If one doesn't
-// exist, creates one and returns it. It's the CALLER'S
-// RESPONSIBILITY to ensure that this function is only called WHEN THE
-// TESTS ARE NOT SHUFFLED.
-//
-// Arguments:
-//
-// test_case_name: name of the test case
-// type_param: the name of the test case's type parameter, or NULL if
-// this is not a typed or a type-parameterized test case.
-// set_up_tc: pointer to the function that sets up the test case
-// tear_down_tc: pointer to the function that tears down the test case
-TestCase* UnitTestImpl::GetTestCase(const char* test_case_name,
- const char* type_param,
- Test::SetUpTestCaseFunc set_up_tc,
- Test::TearDownTestCaseFunc tear_down_tc) {
- // Can we find a TestCase with the given name?
- const std::vector<TestCase*>::const_iterator test_case =
- std::find_if(test_cases_.begin(), test_cases_.end(),
- TestCaseNameIs(test_case_name));
-
- if (test_case != test_cases_.end())
- return *test_case;
-
- // No. Let's create one.
- TestCase* const new_test_case =
- new TestCase(test_case_name, type_param, set_up_tc, tear_down_tc);
-
- // Is this a death test case?
- if (internal::UnitTestOptions::MatchesFilter(test_case_name,
- kDeathTestCaseFilter)) {
- // Yes. Inserts the test case after the last death test case
- // defined so far. This only works when the test cases haven't
- // been shuffled. Otherwise we may end up running a death test
- // after a non-death test.
- ++last_death_test_case_;
- test_cases_.insert(test_cases_.begin() + last_death_test_case_,
- new_test_case);
- } else {
- // No. Appends to the end of the list.
- test_cases_.push_back(new_test_case);
- }
-
- test_case_indices_.push_back(static_cast<int>(test_case_indices_.size()));
- return new_test_case;
-}
-
-// Helpers for setting up / tearing down the given environment. They
-// are for use in the ForEach() function.
-static void SetUpEnvironment(Environment* env) { env->SetUp(); }
-static void TearDownEnvironment(Environment* env) { env->TearDown(); }
-
-// Runs all tests in this UnitTest object, prints the result, and
-// returns true if all tests are successful. If any exception is
-// thrown during a test, the test is considered to be failed, but the
-// rest of the tests will still be run.
-//
-// When parameterized tests are enabled, it expands and registers
-// parameterized tests first in RegisterParameterizedTests().
-// All other functions called from RunAllTests() may safely assume that
-// parameterized tests are ready to be counted and run.
-bool UnitTestImpl::RunAllTests() {
- // Makes sure InitGoogleTest() was called.
- if (!GTestIsInitialized()) {
- printf("%s",
- "\nThis test program did NOT call ::testing::InitGoogleTest "
- "before calling RUN_ALL_TESTS(). Please fix it.\n");
- return false;
- }
-
- // Do not run any test if the --help flag was specified.
- if (g_help_flag)
- return true;
-
- // Repeats the call to the post-flag parsing initialization in case the
- // user didn't call InitGoogleTest.
- PostFlagParsingInit();
-
- // Even if sharding is not on, test runners may want to use the
- // GTEST_SHARD_STATUS_FILE to query whether the test supports the sharding
- // protocol.
- internal::WriteToShardStatusFileIfNeeded();
-
- // True iff we are in a subprocess for running a thread-safe-style
- // death test.
- bool in_subprocess_for_death_test = false;
-
-#if GTEST_HAS_DEATH_TEST
- in_subprocess_for_death_test = (internal_run_death_test_flag_.get() != NULL);
-# if defined(GTEST_EXTRA_DEATH_TEST_CHILD_SETUP_)
- if (in_subprocess_for_death_test) {
- GTEST_EXTRA_DEATH_TEST_CHILD_SETUP_();
- }
-# endif // defined(GTEST_EXTRA_DEATH_TEST_CHILD_SETUP_)
-#endif // GTEST_HAS_DEATH_TEST
-
- const bool should_shard = ShouldShard(kTestTotalShards, kTestShardIndex,
- in_subprocess_for_death_test);
-
- // Compares the full test names with the filter to decide which
- // tests to run.
- const bool has_tests_to_run = FilterTests(should_shard
- ? HONOR_SHARDING_PROTOCOL
- : IGNORE_SHARDING_PROTOCOL) > 0;
-
- // Lists the tests and exits if the --gtest_list_tests flag was specified.
- if (GTEST_FLAG(list_tests)) {
- // This must be called *after* FilterTests() has been called.
- ListTestsMatchingFilter();
- return true;
- }
-
- random_seed_ = GTEST_FLAG(shuffle) ?
- GetRandomSeedFromFlag(GTEST_FLAG(random_seed)) : 0;
-
- // True iff at least one test has failed.
- bool failed = false;
-
- TestEventListener* repeater = listeners()->repeater();
-
- start_timestamp_ = GetTimeInMillis();
- repeater->OnTestProgramStart(*parent_);
-
- // How many times to repeat the tests? We don't want to repeat them
- // when we are inside the subprocess of a death test.
- const int repeat = in_subprocess_for_death_test ? 1 : GTEST_FLAG(repeat);
- // Repeats forever if the repeat count is negative.
- const bool forever = repeat < 0;
- for (int i = 0; forever || i != repeat; i++) {
- // We want to preserve failures generated by ad-hoc test
- // assertions executed before RUN_ALL_TESTS().
- ClearNonAdHocTestResult();
-
- const TimeInMillis start = GetTimeInMillis();
-
- // Shuffles test cases and tests if requested.
- if (has_tests_to_run && GTEST_FLAG(shuffle)) {
- random()->Reseed(random_seed_);
- // This should be done before calling OnTestIterationStart(),
- // such that a test event listener can see the actual test order
- // in the event.
- ShuffleTests();
- }
-
- // Tells the unit test event listeners that the tests are about to start.
- repeater->OnTestIterationStart(*parent_, i);
-
- // Runs each test case if there is at least one test to run.
- if (has_tests_to_run) {
- // Sets up all environments beforehand.
- repeater->OnEnvironmentsSetUpStart(*parent_);
- ForEach(environments_, SetUpEnvironment);
- repeater->OnEnvironmentsSetUpEnd(*parent_);
-
- // Runs the tests only if there was no fatal failure during global
- // set-up.
- if (!Test::HasFatalFailure()) {
- for (int test_index = 0; test_index < total_test_case_count();
- test_index++) {
- GetMutableTestCase(test_index)->Run();
- }
- }
-
- // Tears down all environments in reverse order afterwards.
- repeater->OnEnvironmentsTearDownStart(*parent_);
- std::for_each(environments_.rbegin(), environments_.rend(),
- TearDownEnvironment);
- repeater->OnEnvironmentsTearDownEnd(*parent_);
- }
-
- elapsed_time_ = GetTimeInMillis() - start;
-
- // Tells the unit test event listener that the tests have just finished.
- repeater->OnTestIterationEnd(*parent_, i);
-
- // Gets the result and clears it.
- if (!Passed()) {
- failed = true;
- }
-
- // Restores the original test order after the iteration. This
- // allows the user to quickly repro a failure that happens in the
- // N-th iteration without repeating the first (N - 1) iterations.
- // This is not enclosed in "if (GTEST_FLAG(shuffle)) { ... }", in
- // case the user somehow changes the value of the flag somewhere
- // (it's always safe to unshuffle the tests).
- UnshuffleTests();
-
- if (GTEST_FLAG(shuffle)) {
- // Picks a new random seed for each iteration.
- random_seed_ = GetNextRandomSeed(random_seed_);
- }
- }
-
- repeater->OnTestProgramEnd(*parent_);
-
- return !failed;
-}
-
-// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file
-// if the variable is present. If a file already exists at this location, this
-// function will write over it. If the variable is present, but the file cannot
-// be created, prints an error and exits.
-void WriteToShardStatusFileIfNeeded() {
- const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile);
- if (test_shard_file != NULL) {
- FILE* const file = posix::FOpen(test_shard_file, "w");
- if (file == NULL) {
- ColoredPrintf(COLOR_RED,
- "Could not write to the test shard status file \"%s\" "
- "specified by the %s environment variable.\n",
- test_shard_file, kTestShardStatusFile);
- fflush(stdout);
- exit(EXIT_FAILURE);
- }
- fclose(file);
- }
-}
-
-// Checks whether sharding is enabled by examining the relevant
-// environment variable values. If the variables are present,
-// but inconsistent (i.e., shard_index >= total_shards), prints
-// an error and exits. If in_subprocess_for_death_test, sharding is
-// disabled because it must only be applied to the original test
-// process. Otherwise, we could filter out death tests we intended to execute.
-bool ShouldShard(const char* total_shards_env,
- const char* shard_index_env,
- bool in_subprocess_for_death_test) {
- if (in_subprocess_for_death_test) {
- return false;
- }
-
- const Int32 total_shards = Int32FromEnvOrDie(total_shards_env, -1);
- const Int32 shard_index = Int32FromEnvOrDie(shard_index_env, -1);
-
- if (total_shards == -1 && shard_index == -1) {
- return false;
- } else if (total_shards == -1 && shard_index != -1) {
- const Message msg = Message()
- << "Invalid environment variables: you have "
- << kTestShardIndex << " = " << shard_index
- << ", but have left " << kTestTotalShards << " unset.\n";
- ColoredPrintf(COLOR_RED, msg.GetString().c_str());
- fflush(stdout);
- exit(EXIT_FAILURE);
- } else if (total_shards != -1 && shard_index == -1) {
- const Message msg = Message()
- << "Invalid environment variables: you have "
- << kTestTotalShards << " = " << total_shards
- << ", but have left " << kTestShardIndex << " unset.\n";
- ColoredPrintf(COLOR_RED, msg.GetString().c_str());
- fflush(stdout);
- exit(EXIT_FAILURE);
- } else if (shard_index < 0 || shard_index >= total_shards) {
- const Message msg = Message()
- << "Invalid environment variables: we require 0 <= "
- << kTestShardIndex << " < " << kTestTotalShards
- << ", but you have " << kTestShardIndex << "=" << shard_index
- << ", " << kTestTotalShards << "=" << total_shards << ".\n";
- ColoredPrintf(COLOR_RED, msg.GetString().c_str());
- fflush(stdout);
- exit(EXIT_FAILURE);
- }
-
- return total_shards > 1;
-}
-
-// Parses the environment variable var as an Int32. If it is unset,
-// returns default_val. If it is not an Int32, prints an error
-// and aborts.
-Int32 Int32FromEnvOrDie(const char* var, Int32 default_val) {
- const char* str_val = posix::GetEnv(var);
- if (str_val == NULL) {
- return default_val;
- }
-
- Int32 result;
- if (!ParseInt32(Message() << "The value of environment variable " << var,
- str_val, &result)) {
- exit(EXIT_FAILURE);
- }
- return result;
-}
-
-// Given the total number of shards, the shard index, and the test id,
-// returns true iff the test should be run on this shard. The test id is
-// some arbitrary but unique non-negative integer assigned to each test
-// method. Assumes that 0 <= shard_index < total_shards.
-bool ShouldRunTestOnShard(int total_shards, int shard_index, int test_id) {
- return (test_id % total_shards) == shard_index;
-}
-
-// Compares the name of each test with the user-specified filter to
-// decide whether the test should be run, then records the result in
-// each TestCase and TestInfo object.
-// If shard_tests == true, further filters tests based on sharding
-// variables in the environment - see
-// http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide.
-// Returns the number of tests that should run.
-int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
- const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ?
- Int32FromEnvOrDie(kTestTotalShards, -1) : -1;
- const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ?
- Int32FromEnvOrDie(kTestShardIndex, -1) : -1;
-
- // num_runnable_tests are the number of tests that will
- // run across all shards (i.e., match filter and are not disabled).
- // num_selected_tests are the number of tests to be run on
- // this shard.
- int num_runnable_tests = 0;
- int num_selected_tests = 0;
- for (size_t i = 0; i < test_cases_.size(); i++) {
- TestCase* const test_case = test_cases_[i];
- const std::string &test_case_name = test_case->name();
- test_case->set_should_run(false);
-
- for (size_t j = 0; j < test_case->test_info_list().size(); j++) {
- TestInfo* const test_info = test_case->test_info_list()[j];
- const std::string test_name(test_info->name());
- // A test is disabled if test case name or test name matches
- // kDisableTestFilter.
- const bool is_disabled =
- internal::UnitTestOptions::MatchesFilter(test_case_name,
- kDisableTestFilter) ||
- internal::UnitTestOptions::MatchesFilter(test_name,
- kDisableTestFilter);
- test_info->is_disabled_ = is_disabled;
-
- const bool matches_filter =
- internal::UnitTestOptions::FilterMatchesTest(test_case_name,
- test_name);
- test_info->matches_filter_ = matches_filter;
-
- const bool is_runnable =
- (GTEST_FLAG(also_run_disabled_tests) || !is_disabled) &&
- matches_filter;
-
- const bool is_selected = is_runnable &&
- (shard_tests == IGNORE_SHARDING_PROTOCOL ||
- ShouldRunTestOnShard(total_shards, shard_index,
- num_runnable_tests));
-
- num_runnable_tests += is_runnable;
- num_selected_tests += is_selected;
-
- test_info->should_run_ = is_selected;
- test_case->set_should_run(test_case->should_run() || is_selected);
- }
- }
- return num_selected_tests;
-}
-
-// Prints the given C-string on a single line by replacing all '\n'
-// characters with string "\\n". If the output takes more than
-// max_length characters, only prints the first max_length characters
-// and "...".
-static void PrintOnOneLine(const char* str, int max_length) {
- if (str != NULL) {
- for (int i = 0; *str != '\0'; ++str) {
- if (i >= max_length) {
- printf("...");
- break;
- }
- if (*str == '\n') {
- printf("\\n");
- i += 2;
- } else {
- printf("%c", *str);
- ++i;
- }
- }
- }
-}
-
-// Prints the names of the tests matching the user-specified filter flag.
-void UnitTestImpl::ListTestsMatchingFilter() {
- // Print at most this many characters for each type/value parameter.
- const int kMaxParamLength = 250;
-
- for (size_t i = 0; i < test_cases_.size(); i++) {
- const TestCase* const test_case = test_cases_[i];
- bool printed_test_case_name = false;
-
- for (size_t j = 0; j < test_case->test_info_list().size(); j++) {
- const TestInfo* const test_info =
- test_case->test_info_list()[j];
- if (test_info->matches_filter_) {
- if (!printed_test_case_name) {
- printed_test_case_name = true;
- printf("%s.", test_case->name());
- if (test_case->type_param() != NULL) {
- printf(" # %s = ", kTypeParamLabel);
- // We print the type parameter on a single line to make
- // the output easy to parse by a program.
- PrintOnOneLine(test_case->type_param(), kMaxParamLength);
- }
- printf("\n");
- }
- printf(" %s", test_info->name());
- if (test_info->value_param() != NULL) {
- printf(" # %s = ", kValueParamLabel);
- // We print the value parameter on a single line to make the
- // output easy to parse by a program.
- PrintOnOneLine(test_info->value_param(), kMaxParamLength);
- }
- printf("\n");
- }
- }
- }
- fflush(stdout);
-}
-
-// Sets the OS stack trace getter.
-//
-// Does nothing if the input and the current OS stack trace getter are
-// the same; otherwise, deletes the old getter and makes the input the
-// current getter.
-void UnitTestImpl::set_os_stack_trace_getter(
- OsStackTraceGetterInterface* getter) {
- if (os_stack_trace_getter_ != getter) {
- delete os_stack_trace_getter_;
- os_stack_trace_getter_ = getter;
- }
-}
-
-// Returns the current OS stack trace getter if it is not NULL;
-// otherwise, creates an OsStackTraceGetter, makes it the current
-// getter, and returns it.
-OsStackTraceGetterInterface* UnitTestImpl::os_stack_trace_getter() {
- if (os_stack_trace_getter_ == NULL) {
-#ifdef GTEST_OS_STACK_TRACE_GETTER_
- os_stack_trace_getter_ = new GTEST_OS_STACK_TRACE_GETTER_;
-#else
- os_stack_trace_getter_ = new OsStackTraceGetter;
-#endif // GTEST_OS_STACK_TRACE_GETTER_
- }
-
- return os_stack_trace_getter_;
-}
-
-// Returns the TestResult for the test that's currently running, or
-// the TestResult for the ad hoc test if no test is running.
-TestResult* UnitTestImpl::current_test_result() {
- return current_test_info_ ?
- &(current_test_info_->result_) : &ad_hoc_test_result_;
-}
-
-// Shuffles all test cases, and the tests within each test case,
-// making sure that death tests are still run first.
-void UnitTestImpl::ShuffleTests() {
- // Shuffles the death test cases.
- ShuffleRange(random(), 0, last_death_test_case_ + 1, &test_case_indices_);
-
- // Shuffles the non-death test cases.
- ShuffleRange(random(), last_death_test_case_ + 1,
- static_cast<int>(test_cases_.size()), &test_case_indices_);
-
- // Shuffles the tests inside each test case.
- for (size_t i = 0; i < test_cases_.size(); i++) {
- test_cases_[i]->ShuffleTests(random());
- }
-}
-
-// Restores the test cases and tests to their order before the first shuffle.
-void UnitTestImpl::UnshuffleTests() {
- for (size_t i = 0; i < test_cases_.size(); i++) {
- // Unshuffles the tests in each test case.
- test_cases_[i]->UnshuffleTests();
- // Resets the index of each test case.
- test_case_indices_[i] = static_cast<int>(i);
- }
-}
-
-// Returns the current OS stack trace as an std::string.
-//
-// The maximum number of stack frames to be included is specified by
-// the gtest_stack_trace_depth flag. The skip_count parameter
-// specifies the number of top frames to be skipped, which doesn't
-// count against the number of frames to be included.
-//
-// For example, if Foo() calls Bar(), which in turn calls
-// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in
-// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't.
-std::string GetCurrentOsStackTraceExceptTop(UnitTest* /*unit_test*/,
- int skip_count) {
- // We pass skip_count + 1 to skip this wrapper function in addition
- // to what the user really wants to skip.
- return GetUnitTestImpl()->CurrentOsStackTraceExceptTop(skip_count + 1);
-}
-
-// Used by the GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_ macro to
-// suppress unreachable code warnings.
-namespace {
-class ClassUniqueToAlwaysTrue {};
-}
-
-bool IsTrue(bool condition) { return condition; }
-
-bool AlwaysTrue() {
-#if GTEST_HAS_EXCEPTIONS
- // This condition is always false so AlwaysTrue() never actually throws,
- // but it makes the compiler think that it may throw.
- if (IsTrue(false))
- throw ClassUniqueToAlwaysTrue();
-#endif // GTEST_HAS_EXCEPTIONS
- return true;
-}
-
-// If *pstr starts with the given prefix, modifies *pstr to be right
-// past the prefix and returns true; otherwise leaves *pstr unchanged
-// and returns false. None of pstr, *pstr, and prefix can be NULL.
-bool SkipPrefix(const char* prefix, const char** pstr) {
- const size_t prefix_len = strlen(prefix);
- if (strncmp(*pstr, prefix, prefix_len) == 0) {
- *pstr += prefix_len;
- return true;
- }
- return false;
-}
-
-// Parses a string as a command line flag. The string should have
-// the format "--flag=value". When def_optional is true, the "=value"
-// part can be omitted.
-//
-// Returns the value of the flag, or NULL if the parsing failed.
-const char* ParseFlagValue(const char* str,
- const char* flag,
- bool def_optional) {
- // str and flag must not be NULL.
- if (str == NULL || flag == NULL) return NULL;
-
- // The flag must start with "--" followed by GTEST_FLAG_PREFIX_.
- const std::string flag_str = std::string("--") + GTEST_FLAG_PREFIX_ + flag;
- const size_t flag_len = flag_str.length();
- if (strncmp(str, flag_str.c_str(), flag_len) != 0) return NULL;
-
- // Skips the flag name.
- const char* flag_end = str + flag_len;
-
- // When def_optional is true, it's OK to not have a "=value" part.
- if (def_optional && (flag_end[0] == '\0')) {
- return flag_end;
- }
-
- // If def_optional is true and there are more characters after the
- // flag name, or if def_optional is false, there must be a '=' after
- // the flag name.
- if (flag_end[0] != '=') return NULL;
-
- // Returns the string after "=".
- return flag_end + 1;
-}
-
-// Parses a string for a bool flag, in the form of either
-// "--flag=value" or "--flag".
-//
-// In the former case, the value is taken as true as long as it does
-// not start with '0', 'f', or 'F'.
-//
-// In the latter case, the value is taken as true.
-//
-// On success, stores the value of the flag in *value, and returns
-// true. On failure, returns false without changing *value.
-bool ParseBoolFlag(const char* str, const char* flag, bool* value) {
- // Gets the value of the flag as a string.
- const char* const value_str = ParseFlagValue(str, flag, true);
-
- // Aborts if the parsing failed.
- if (value_str == NULL) return false;
-
- // Converts the string value to a bool.
- *value = !(*value_str == '0' || *value_str == 'f' || *value_str == 'F');
- return true;
-}
-
-// Parses a string for an Int32 flag, in the form of
-// "--flag=value".
-//
-// On success, stores the value of the flag in *value, and returns
-// true. On failure, returns false without changing *value.
-bool ParseInt32Flag(const char* str, const char* flag, Int32* value) {
- // Gets the value of the flag as a string.
- const char* const value_str = ParseFlagValue(str, flag, false);
-
- // Aborts if the parsing failed.
- if (value_str == NULL) return false;
-
- // Sets *value to the value of the flag.
- return ParseInt32(Message() << "The value of flag --" << flag,
- value_str, value);
-}
-
-// Parses a string for a string flag, in the form of
-// "--flag=value".
-//
-// On success, stores the value of the flag in *value, and returns
-// true. On failure, returns false without changing *value.
-bool ParseStringFlag(const char* str, const char* flag, std::string* value) {
- // Gets the value of the flag as a string.
- const char* const value_str = ParseFlagValue(str, flag, false);
-
- // Aborts if the parsing failed.
- if (value_str == NULL) return false;
-
- // Sets *value to the value of the flag.
- *value = value_str;
- return true;
-}
-
-// Determines whether a string has a prefix that Google Test uses for its
-// flags, i.e., starts with GTEST_FLAG_PREFIX_ or GTEST_FLAG_PREFIX_DASH_.
-// If Google Test detects that a command line flag has its prefix but is not
-// recognized, it will print its help message. Flags starting with
-// GTEST_INTERNAL_PREFIX_ followed by "internal_" are considered Google Test
-// internal flags and do not trigger the help message.
-static bool HasGoogleTestFlagPrefix(const char* str) {
- return (SkipPrefix("--", &str) ||
- SkipPrefix("-", &str) ||
- SkipPrefix("/", &str)) &&
- !SkipPrefix(GTEST_FLAG_PREFIX_ "internal_", &str) &&
- (SkipPrefix(GTEST_FLAG_PREFIX_, &str) ||
- SkipPrefix(GTEST_FLAG_PREFIX_DASH_, &str));
-}
-
-// Prints a string containing code-encoded text. The following escape
-// sequences can be used in the string to control the text color:
-//
-// @@ prints a single '@' character.
-// @R changes the color to red.
-// @G changes the color to green.
-// @Y changes the color to yellow.
-// @D changes to the default terminal text color.
-//
-// TODO(wan@google.com): Write tests for this once we add stdout
-// capturing to Google Test.
-static void PrintColorEncoded(const char* str) {
- GTestColor color = COLOR_DEFAULT; // The current color.
-
- // Conceptually, we split the string into segments divided by escape
- // sequences. Then we print one segment at a time. At the end of
- // each iteration, the str pointer advances to the beginning of the
- // next segment.
- for (;;) {
- const char* p = strchr(str, '@');
- if (p == NULL) {
- ColoredPrintf(color, "%s", str);
- return;
- }
-
- ColoredPrintf(color, "%s", std::string(str, p).c_str());
-
- const char ch = p[1];
- str = p + 2;
- if (ch == '@') {
- ColoredPrintf(color, "@");
- } else if (ch == 'D') {
- color = COLOR_DEFAULT;
- } else if (ch == 'R') {
- color = COLOR_RED;
- } else if (ch == 'G') {
- color = COLOR_GREEN;
- } else if (ch == 'Y') {
- color = COLOR_YELLOW;
- } else {
- --str;
- }
- }
-}
-
-static const char kColorEncodedHelpMessage[] =
-"This program contains tests written using " GTEST_NAME_ ". You can use the\n"
-"following command line flags to control its behavior:\n"
-"\n"
-"Test Selection:\n"
-" @G--" GTEST_FLAG_PREFIX_ "list_tests@D\n"
-" List the names of all tests instead of running them. The name of\n"
-" TEST(Foo, Bar) is \"Foo.Bar\".\n"
-" @G--" GTEST_FLAG_PREFIX_ "filter=@YPOSTIVE_PATTERNS"
- "[@G-@YNEGATIVE_PATTERNS]@D\n"
-" Run only the tests whose name matches one of the positive patterns but\n"
-" none of the negative patterns. '?' matches any single character; '*'\n"
-" matches any substring; ':' separates two patterns.\n"
-" @G--" GTEST_FLAG_PREFIX_ "also_run_disabled_tests@D\n"
-" Run all disabled tests too.\n"
-"\n"
-"Test Execution:\n"
-" @G--" GTEST_FLAG_PREFIX_ "repeat=@Y[COUNT]@D\n"
-" Run the tests repeatedly; use a negative count to repeat forever.\n"
-" @G--" GTEST_FLAG_PREFIX_ "shuffle@D\n"
-" Randomize tests' orders on every iteration.\n"
-" @G--" GTEST_FLAG_PREFIX_ "random_seed=@Y[NUMBER]@D\n"
-" Random number seed to use for shuffling test orders (between 1 and\n"
-" 99999, or 0 to use a seed based on the current time).\n"
-"\n"
-"Test Output:\n"
-" @G--" GTEST_FLAG_PREFIX_ "color=@Y(@Gyes@Y|@Gno@Y|@Gauto@Y)@D\n"
-" Enable/disable colored output. The default is @Gauto@D.\n"
-" -@G-" GTEST_FLAG_PREFIX_ "print_time=0@D\n"
-" Don't print the elapsed time of each test.\n"
-" @G--" GTEST_FLAG_PREFIX_ "output=xml@Y[@G:@YDIRECTORY_PATH@G"
- GTEST_PATH_SEP_ "@Y|@G:@YFILE_PATH]@D\n"
-" Generate an XML report in the given directory or with the given file\n"
-" name. @YFILE_PATH@D defaults to @Gtest_details.xml@D.\n"
-#if GTEST_CAN_STREAM_RESULTS_
-" @G--" GTEST_FLAG_PREFIX_ "stream_result_to=@YHOST@G:@YPORT@D\n"
-" Stream test results to the given server.\n"
-#endif // GTEST_CAN_STREAM_RESULTS_
-"\n"
-"Assertion Behavior:\n"
-#if GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS
-" @G--" GTEST_FLAG_PREFIX_ "death_test_style=@Y(@Gfast@Y|@Gthreadsafe@Y)@D\n"
-" Set the default death test style.\n"
-#endif // GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS
-" @G--" GTEST_FLAG_PREFIX_ "break_on_failure@D\n"
-" Turn assertion failures into debugger break-points.\n"
-" @G--" GTEST_FLAG_PREFIX_ "throw_on_failure@D\n"
-" Turn assertion failures into C++ exceptions.\n"
-" @G--" GTEST_FLAG_PREFIX_ "catch_exceptions=0@D\n"
-" Do not report exceptions as test failures. Instead, allow them\n"
-" to crash the program or throw a pop-up (on Windows).\n"
-"\n"
-"Except for @G--" GTEST_FLAG_PREFIX_ "list_tests@D, you can alternatively set "
- "the corresponding\n"
-"environment variable of a flag (all letters in upper-case). For example, to\n"
-"disable colored text output, you can either specify @G--" GTEST_FLAG_PREFIX_
- "color=no@D or set\n"
-"the @G" GTEST_FLAG_PREFIX_UPPER_ "COLOR@D environment variable to @Gno@D.\n"
-"\n"
-"For more information, please read the " GTEST_NAME_ " documentation at\n"
-"@G" GTEST_PROJECT_URL_ "@D. If you find a bug in " GTEST_NAME_ "\n"
-"(not one in your own code or tests), please report it to\n"
-"@G<" GTEST_DEV_EMAIL_ ">@D.\n";
-
-bool ParseGoogleTestFlag(const char* const arg) {
- return ParseBoolFlag(arg, kAlsoRunDisabledTestsFlag,
- &GTEST_FLAG(also_run_disabled_tests)) ||
- ParseBoolFlag(arg, kBreakOnFailureFlag,
- &GTEST_FLAG(break_on_failure)) ||
- ParseBoolFlag(arg, kCatchExceptionsFlag,
- &GTEST_FLAG(catch_exceptions)) ||
- ParseStringFlag(arg, kColorFlag, &GTEST_FLAG(color)) ||
- ParseStringFlag(arg, kDeathTestStyleFlag,
- &GTEST_FLAG(death_test_style)) ||
- ParseBoolFlag(arg, kDeathTestUseFork,
- &GTEST_FLAG(death_test_use_fork)) ||
- ParseStringFlag(arg, kFilterFlag, &GTEST_FLAG(filter)) ||
- ParseStringFlag(arg, kInternalRunDeathTestFlag,
- &GTEST_FLAG(internal_run_death_test)) ||
- ParseBoolFlag(arg, kListTestsFlag, &GTEST_FLAG(list_tests)) ||
- ParseStringFlag(arg, kOutputFlag, &GTEST_FLAG(output)) ||
- ParseBoolFlag(arg, kPrintTimeFlag, &GTEST_FLAG(print_time)) ||
- ParseInt32Flag(arg, kRandomSeedFlag, &GTEST_FLAG(random_seed)) ||
- ParseInt32Flag(arg, kRepeatFlag, &GTEST_FLAG(repeat)) ||
- ParseBoolFlag(arg, kShuffleFlag, &GTEST_FLAG(shuffle)) ||
- ParseInt32Flag(arg, kStackTraceDepthFlag,
- &GTEST_FLAG(stack_trace_depth)) ||
- ParseStringFlag(arg, kStreamResultToFlag,
- &GTEST_FLAG(stream_result_to)) ||
- ParseBoolFlag(arg, kThrowOnFailureFlag,
- &GTEST_FLAG(throw_on_failure));
-}
-
-#if GTEST_USE_OWN_FLAGFILE_FLAG_
-void LoadFlagsFromFile(const std::string& path) {
- FILE* flagfile = posix::FOpen(path.c_str(), "r");
- if (!flagfile) {
- fprintf(stderr,
- "Unable to open file \"%s\"\n",
- GTEST_FLAG(flagfile).c_str());
- fflush(stderr);
- exit(EXIT_FAILURE);
- }
- std::string contents(ReadEntireFile(flagfile));
- posix::FClose(flagfile);
- std::vector<std::string> lines;
- SplitString(contents, '\n', &lines);
- for (size_t i = 0; i < lines.size(); ++i) {
- if (lines[i].empty())
- continue;
- if (!ParseGoogleTestFlag(lines[i].c_str()))
- g_help_flag = true;
- }
-}
-#endif // GTEST_USE_OWN_FLAGFILE_FLAG_
-
-// Parses the command line for Google Test flags, without initializing
-// other parts of Google Test. The type parameter CharType can be
-// instantiated to either char or wchar_t.
-template <typename CharType>
-void ParseGoogleTestFlagsOnlyImpl(int* argc, CharType** argv) {
- for (int i = 1; i < *argc; i++) {
- const std::string arg_string = StreamableToString(argv[i]);
- const char* const arg = arg_string.c_str();
-
- using internal::ParseBoolFlag;
- using internal::ParseInt32Flag;
- using internal::ParseStringFlag;
-
- bool remove_flag = false;
- if (ParseGoogleTestFlag(arg)) {
- remove_flag = true;
-#if GTEST_USE_OWN_FLAGFILE_FLAG_
- } else if (ParseStringFlag(arg, kFlagfileFlag, &GTEST_FLAG(flagfile))) {
- LoadFlagsFromFile(GTEST_FLAG(flagfile));
- remove_flag = true;
-#endif // GTEST_USE_OWN_FLAGFILE_FLAG_
- } else if (arg_string == "--help" || arg_string == "-h" ||
- arg_string == "-?" || arg_string == "/?" ||
- HasGoogleTestFlagPrefix(arg)) {
- // Both help flag and unrecognized Google Test flags (excluding
- // internal ones) trigger help display.
- g_help_flag = true;
- }
-
- if (remove_flag) {
- // Shift the remainder of the argv list left by one. Note
- // that argv has (*argc + 1) elements, the last one always being
- // NULL. The following loop moves the trailing NULL element as
- // well.
- for (int j = i; j != *argc; j++) {
- argv[j] = argv[j + 1];
- }
-
- // Decrements the argument count.
- (*argc)--;
-
- // We also need to decrement the iterator as we just removed
- // an element.
- i--;
- }
- }
-
- if (g_help_flag) {
- // We print the help here instead of in RUN_ALL_TESTS(), as the
- // latter may not be called at all if the user is using Google
- // Test with another testing framework.
- PrintColorEncoded(kColorEncodedHelpMessage);
- }
-}
-
-// Parses the command line for Google Test flags, without initializing
-// other parts of Google Test.
-void ParseGoogleTestFlagsOnly(int* argc, char** argv) {
- ParseGoogleTestFlagsOnlyImpl(argc, argv);
-}
-void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv) {
- ParseGoogleTestFlagsOnlyImpl(argc, argv);
-}
-
-// The internal implementation of InitGoogleTest().
-//
-// The type parameter CharType can be instantiated to either char or
-// wchar_t.
-template <typename CharType>
-void InitGoogleTestImpl(int* argc, CharType** argv) {
- // We don't want to run the initialization code twice.
- if (GTestIsInitialized()) return;
-
- if (*argc <= 0) return;
-
- g_argvs.clear();
- for (int i = 0; i != *argc; i++) {
- g_argvs.push_back(StreamableToString(argv[i]));
- }
-
- ParseGoogleTestFlagsOnly(argc, argv);
- GetUnitTestImpl()->PostFlagParsingInit();
-}
-
-} // namespace internal
-
-// Initializes Google Test. This must be called before calling
-// RUN_ALL_TESTS(). In particular, it parses a command line for the
-// flags that Google Test recognizes. Whenever a Google Test flag is
-// seen, it is removed from argv, and *argc is decremented.
-//
-// No value is returned. Instead, the Google Test flag variables are
-// updated.
-//
-// Calling the function for the second time has no user-visible effect.
-void InitGoogleTest(int* argc, char** argv) {
-#if defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
- GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_(argc, argv);
-#else // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
- internal::InitGoogleTestImpl(argc, argv);
-#endif // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
-}
-
-// This overloaded version can be used in Windows programs compiled in
-// UNICODE mode.
-void InitGoogleTest(int* argc, wchar_t** argv) {
-#if defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
- GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_(argc, argv);
-#else // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
- internal::InitGoogleTestImpl(argc, argv);
-#endif // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
-}
-
-} // namespace testing
diff --git a/test/gtest/src/gtest_main.cc b/test/gtest/src/gtest_main.cc
deleted file mode 100644
index f302822..0000000
--- a/test/gtest/src/gtest_main.cc
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2006, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#include <stdio.h>
-
-#include "gtest/gtest.h"
-
-GTEST_API_ int main(int argc, char **argv) {
- printf("Running main() from gtest_main.cc\n");
- testing::InitGoogleTest(&argc, argv);
- return RUN_ALL_TESTS();
-}
diff --git a/test/i965_avcd_config_test.cpp b/test/i965_avcd_config_test.cpp
deleted file mode 100644
index 8bc5e3c..0000000
--- a/test/i965_avcd_config_test.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "i965_config_test.h"
-
-namespace AVC {
-namespace Decode {
-
-VAStatus ProfileNotSupported()
-{
- return VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
-}
-
-VAStatus EntrypointNotSupported()
-{
- return VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
-}
-
-// H264*NotSupported functions report properly if profile is not supported or
-// only entrypoint is not supported
-VAStatus H264NotSupported()
-{
- I965TestEnvironment *env(I965TestEnvironment::instance());
- EXPECT_PTR(env);
-
- struct i965_driver_data *i965(*env);
- EXPECT_PTR(i965);
-
- if (!HAS_H264_ENCODING(i965)
- && !HAS_LP_H264_ENCODING(i965))
- return ProfileNotSupported();
-
- return EntrypointNotSupported();
-}
-
-VAStatus H264MVCNotSupported()
-{
- I965TestEnvironment *env(I965TestEnvironment::instance());
- EXPECT_PTR(env);
-
- struct i965_driver_data *i965(*env);
- EXPECT_PTR(i965);
-
- if (!HAS_H264_MVC_ENCODING(i965))
- return ProfileNotSupported();
-
- return EntrypointNotSupported();
-}
-VAStatus HasDecodeSupport()
-{
- I965TestEnvironment *env(I965TestEnvironment::instance());
- EXPECT_PTR(env);
-
- struct i965_driver_data *i965(*env);
- EXPECT_PTR(i965);
-
- if (HAS_H264_DECODING(i965))
- return VA_STATUS_SUCCESS;
-
- return H264NotSupported();
-}
-
-VAStatus HasMVCDecodeSupport()
-{
- I965TestEnvironment *env(I965TestEnvironment::instance());
- EXPECT_PTR(env);
-
- struct i965_driver_data *i965(*env);
- EXPECT_PTR(i965);
-
- if (HAS_H264_MVC_DECODING(i965))
- return VA_STATUS_SUCCESS;
-
- return H264MVCNotSupported();
-}
-
-static const std::vector<ConfigTestInput> inputs = {
- { VAProfileH264Baseline, VAEntrypointVLD, &ProfileNotSupported },
-
- { VAProfileH264ConstrainedBaseline, VAEntrypointVLD, &HasDecodeSupport },
- { VAProfileH264Main, VAEntrypointVLD, &HasDecodeSupport },
- { VAProfileH264High, VAEntrypointVLD, &HasDecodeSupport },
-
- { VAProfileH264MultiviewHigh, VAEntrypointVLD,
- &HasMVCDecodeSupport },
- { VAProfileH264StereoHigh, VAEntrypointVLD,
- &HasMVCDecodeSupport },
-};
-
-INSTANTIATE_TEST_CASE_P(
- AVCDecode, I965ConfigTest, ::testing::ValuesIn(inputs));
-
-} // namespace Decode
-} // namespace AVC
diff --git a/test/i965_avce_config_test.cpp b/test/i965_avce_config_test.cpp
deleted file mode 100644
index 4830af9..0000000
--- a/test/i965_avce_config_test.cpp
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "i965_config_test.h"
-
-namespace AVC {
-namespace Encode {
-
-VAStatus ProfileNotSupported()
-{
- return VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
-}
-
-VAStatus EntrypointNotSupported()
-{
- return VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
-}
-
-//H264*NotSupported functions report properly if profile is not supported or
-//only entrypoint is not supported
-VAStatus H264NotSupported()
-{
- I965TestEnvironment *env(I965TestEnvironment::instance());
- EXPECT_PTR(env);
-
- struct i965_driver_data *i965(*env);
- EXPECT_PTR(i965);
-
- if (!HAS_H264_DECODING(i965)
- && !HAS_LP_H264_ENCODING(i965))
- return ProfileNotSupported();
-
- return EntrypointNotSupported();
-}
-
-VAStatus H264LPNotSupported()
-{
- I965TestEnvironment *env(I965TestEnvironment::instance());
- EXPECT_PTR(env);
-
- struct i965_driver_data *i965(*env);
- EXPECT_PTR(i965);
-
- if (!HAS_H264_DECODING(i965)
- && !HAS_H264_ENCODING(i965))
- return ProfileNotSupported();
-
- return EntrypointNotSupported();
-}
-
-VAStatus H264MVCNotSupported()
-{
- I965TestEnvironment *env(I965TestEnvironment::instance());
- EXPECT_PTR(env);
-
- struct i965_driver_data *i965(*env);
- EXPECT_PTR(i965);
-
- if (!HAS_H264_MVC_DECODING(i965))
- return ProfileNotSupported();
-
- return EntrypointNotSupported();
-}
-
-VAStatus HasEncodeSupport()
-{
- I965TestEnvironment *env(I965TestEnvironment::instance());
- EXPECT_PTR(env);
-
- struct i965_driver_data *i965(*env);
- EXPECT_PTR(i965);
-
- if (HAS_H264_ENCODING(i965))
- return VA_STATUS_SUCCESS;
-
- return H264NotSupported();
-}
-
-VAStatus HasLPEncodeSupport()
-{
- I965TestEnvironment *env(I965TestEnvironment::instance());
- EXPECT_PTR(env);
-
- struct i965_driver_data *i965(*env);
- EXPECT_PTR(i965);
-
- if (IS_SKL(i965->intel.device_info))
- return VA_STATUS_SUCCESS;
-
- if (HAS_LP_H264_ENCODING(i965))
- return VA_STATUS_SUCCESS;
-
- return H264LPNotSupported();
-}
-
-VAStatus HasMVCEncodeSupport()
-{
- I965TestEnvironment *env(I965TestEnvironment::instance());
- EXPECT_PTR(env);
-
- struct i965_driver_data *i965(*env);
- EXPECT_PTR(i965);
-
- if (HAS_H264_MVC_ENCODING(i965))
- return VA_STATUS_SUCCESS;
-
- return H264MVCNotSupported();
-}
-
-static const std::vector<ConfigTestInput> inputs = {
- {VAProfileH264Baseline, VAEntrypointEncSlice, &ProfileNotSupported},
- {VAProfileH264Baseline, VAEntrypointEncSliceLP, &ProfileNotSupported},
- {VAProfileH264Baseline, VAEntrypointEncPicture, &ProfileNotSupported},
-
- {VAProfileH264ConstrainedBaseline, VAEntrypointEncSlice, &HasEncodeSupport},
- {VAProfileH264ConstrainedBaseline, VAEntrypointEncSliceLP, &HasLPEncodeSupport},
- {VAProfileH264ConstrainedBaseline, VAEntrypointEncPicture, &H264NotSupported},
-
- {VAProfileH264Main, VAEntrypointEncSlice, &HasEncodeSupport},
- {VAProfileH264Main, VAEntrypointEncSliceLP, &HasLPEncodeSupport},
- {VAProfileH264Main, VAEntrypointEncPicture, &H264NotSupported},
-
- {VAProfileH264High, VAEntrypointEncSlice, &HasEncodeSupport},
- {VAProfileH264High, VAEntrypointEncSliceLP, &HasLPEncodeSupport},
- {VAProfileH264High, VAEntrypointEncPicture, &H264NotSupported},
-
- {VAProfileH264MultiviewHigh, VAEntrypointEncSlice, &HasMVCEncodeSupport},
- {VAProfileH264MultiviewHigh, VAEntrypointEncSliceLP, &H264MVCNotSupported},
- {VAProfileH264MultiviewHigh, VAEntrypointEncPicture, &H264MVCNotSupported},
-
- {VAProfileH264StereoHigh, VAEntrypointEncSlice, &HasMVCEncodeSupport},
- {VAProfileH264StereoHigh, VAEntrypointEncSliceLP, &H264MVCNotSupported},
- {VAProfileH264StereoHigh, VAEntrypointEncPicture, &H264MVCNotSupported},
-};
-
-INSTANTIATE_TEST_CASE_P(
- AVCEncode, I965ConfigTest, ::testing::ValuesIn(inputs));
-
-} // namespace Encode
-} // namespace AVC
diff --git a/test/i965_avce_context_test.cpp b/test/i965_avce_context_test.cpp
deleted file mode 100644
index a936df0..0000000
--- a/test/i965_avce_context_test.cpp
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "i965_avce_test_common.h"
-#include "i965_streamable.h"
-#include "i965_test_fixture.h"
-
-#include <map>
-#include <tuple>
-#include <vector>
-
-namespace AVC {
-namespace Encode {
-
-class AVCEContextTest
- : public I965TestFixture
- , public ::testing::WithParamInterface<
- std::tuple<VAProfile, VAEntrypoint> >
-{
-protected:
- void SetUp()
- {
- I965TestFixture::SetUp();
- std::tie(profile, entrypoint) = GetParam();
- }
-
- void TearDown()
- {
- if (context != VA_INVALID_ID)
- destroyContext(context);
- if (config != VA_INVALID_ID)
- destroyConfig(config);
- I965TestFixture::TearDown();
- }
-
- operator struct intel_encoder_context const *()
- {
- if (config == VA_INVALID_ID) return NULL;
-
- struct i965_driver_data *i965(*this);
- if (not i965) return NULL;
-
- struct object_context const *obj_context = CONTEXT(context);
- if (not obj_context) return NULL;
-
- return reinterpret_cast<struct intel_encoder_context const *>(
- obj_context->hw_context);
- }
-
- VAProfile profile;
- VAEntrypoint entrypoint;
- VAConfigID config = VA_INVALID_ID;
- VAContextID context = VA_INVALID_ID;
-};
-
-TEST_P(AVCEContextTest, RateControl)
-{
- if (not IsSupported(profile, entrypoint)) {
- RecordProperty("skipped", true);
- std::cout << "[ SKIPPED ] " << getFullTestName()
- << " is unsupported on this hardware" << std::endl;
- return;
- }
-
- static const std::vector<unsigned> rateControls = {
- VA_RC_NONE, VA_RC_CBR, VA_RC_VBR, VA_RC_VCM, VA_RC_CQP,
- VA_RC_VBR_CONSTRAINED, VA_RC_MB,
- };
-
- for (auto rc : rateControls) {
- ConfigAttribs attribs(1, {type:VAConfigAttribRateControl, value:rc});
- config = createConfig(profile, entrypoint, attribs);
- context = createContext(config, 1, 1);
- if (HasFailure()) continue;
-
- struct intel_encoder_context const *hw_context(*this);
- EXPECT_PTR(hw_context);
- if (HasFailure()) continue;
-
- EXPECT_EQ(rc, hw_context->rate_control_mode);
-
- destroyContext(context);
- destroyConfig(config);
- context = VA_INVALID_ID;
- config = VA_INVALID_ID;
- }
-}
-
-TEST_P(AVCEContextTest, Codec)
-{
- if (not IsSupported(profile, entrypoint)) {
- RecordProperty("skipped", true);
- std::cout << "[ SKIPPED ] " << getFullTestName()
- << " is unsupported on this hardware" << std::endl;
- return;
- }
-
- static const std::map<VAProfile, int> codecs = {
- {VAProfileH264ConstrainedBaseline, CODEC_H264},
- {VAProfileH264Main, CODEC_H264},
- {VAProfileH264High, CODEC_H264},
- {VAProfileH264MultiviewHigh, CODEC_H264_MVC},
- {VAProfileH264StereoHigh, CODEC_H264_MVC},
- };
-
- ASSERT_NO_FAILURE(
- config = createConfig(profile, entrypoint);
- context = createContext(config, 1, 1);
- );
-
- struct intel_encoder_context const *hw_context(*this);
- ASSERT_PTR(hw_context);
-
- EXPECT_EQ(codecs.at(profile), hw_context->codec);
-}
-
-TEST_P(AVCEContextTest, LowPowerMode)
-{
- if (not IsSupported(profile, entrypoint)) {
- RecordProperty("skipped", true);
- std::cout << "[ SKIPPED ] " << getFullTestName()
- << " is unsupported on this hardware" << std::endl;
- return;
- }
-
- ASSERT_NO_FAILURE(
- config = createConfig(profile, entrypoint);
- context = createContext(config, 1, 1);
- );
-
- struct intel_encoder_context const *hw_context(*this);
- ASSERT_PTR(hw_context);
-
- EXPECT_EQ(
- (entrypoint == VAEntrypointEncSliceLP ? 1u : 0u),
- hw_context->low_power_mode
- );
-}
-
-TEST_P(AVCEContextTest, ROINotSpecified)
-{
- if (not IsSupported(profile, entrypoint)) {
- RecordProperty("skipped", true);
- std::cout << "[ SKIPPED ] " << getFullTestName()
- << " is unsupported on this hardware" << std::endl;
- return;
- }
-
- // The lack of the VAConfigAttribEncROI config attribute
- // will disable it.
- ASSERT_NO_FAILURE(
- config = createConfig(profile, entrypoint);
- context = createContext(config, 1, 1);
- );
-
- struct intel_encoder_context const *hw_context(*this);
- ASSERT_PTR(hw_context);
-
- EXPECT_EQ(0u, hw_context->context_roi);
-}
-
-TEST_P(AVCEContextTest, ROISpecified)
-{
- if (not IsSupported(profile, entrypoint)) {
- RecordProperty("skipped", true);
- std::cout << "[ SKIPPED ] " << getFullTestName()
- << " is unsupported on this hardware" << std::endl;
- return;
- }
-
- static const std::map<VAProfile, unsigned> roiSupport = {
- {VAProfileH264ConstrainedBaseline, 1}, {VAProfileH264Main, 1},
- {VAProfileH264High, 1}, {VAProfileH264MultiviewHigh, 0},
- {VAProfileH264StereoHigh, 0},
- };
-
- // The presence of the VAConfigAttribEncROI config attribute
- // will enable it for supported profile
- ConfigAttribs attribs(1, {type:VAConfigAttribEncROI});
- ASSERT_NO_FAILURE(
- config = createConfig(profile, entrypoint, attribs);
- context = createContext(config, 1, 1);
- );
-
- struct intel_encoder_context const *hw_context(*this);
- ASSERT_PTR(hw_context);
-
- EXPECT_EQ(roiSupport.at(profile), hw_context->context_roi);
-}
-
-TEST_P(AVCEContextTest, QualityRange)
-{
- if (not IsSupported(profile, entrypoint)) {
- RecordProperty("skipped", true);
- std::cout << "[ SKIPPED ] " << getFullTestName()
- << " is unsupported on this hardware" << std::endl;
- return;
- }
-
- const std::map<VAProfile, unsigned> qranges = {
- {VAProfileH264ConstrainedBaseline, entrypoint == VAEntrypointEncSliceLP
- ? ENCODER_LP_QUALITY_RANGE : ENCODER_QUALITY_RANGE},
- {VAProfileH264Main, entrypoint == VAEntrypointEncSliceLP
- ? ENCODER_LP_QUALITY_RANGE : ENCODER_QUALITY_RANGE},
- {VAProfileH264High, entrypoint == VAEntrypointEncSliceLP
- ? ENCODER_LP_QUALITY_RANGE : ENCODER_QUALITY_RANGE},
- {VAProfileH264MultiviewHigh, 1u},
- {VAProfileH264StereoHigh, 1u},
- };
-
- ASSERT_NO_FAILURE(
- config = createConfig(profile, entrypoint);
- context = createContext(config, 1, 1);
- );
-
- struct intel_encoder_context const *hw_context(*this);
- ASSERT_PTR(hw_context);
-
- EXPECT_EQ(qranges.at(profile), hw_context->quality_range);
-}
-
-INSTANTIATE_TEST_CASE_P(
- AVCEncode, AVCEContextTest, ::testing::Values(
- std::make_tuple(VAProfileH264ConstrainedBaseline, VAEntrypointEncSlice),
- std::make_tuple(VAProfileH264ConstrainedBaseline, VAEntrypointEncSliceLP),
- std::make_tuple(VAProfileH264Main, VAEntrypointEncSlice),
- std::make_tuple(VAProfileH264Main, VAEntrypointEncSliceLP),
- std::make_tuple(VAProfileH264High, VAEntrypointEncSlice),
- std::make_tuple(VAProfileH264High, VAEntrypointEncSliceLP),
- std::make_tuple(VAProfileH264MultiviewHigh, VAEntrypointEncSlice),
- std::make_tuple(VAProfileH264StereoHigh, VAEntrypointEncSlice)
- )
-);
-
-} // namespace Encode
-} // namespace AVC
diff --git a/test/i965_avce_test_common.cpp b/test/i965_avce_test_common.cpp
deleted file mode 100644
index 14aa36c..0000000
--- a/test/i965_avce_test_common.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "i965_avce_test_common.h"
-#include "i965_test_environment.h"
-
-namespace AVC {
-namespace Encode {
-
-/**
- * This is similar to i965_validate_config(...) in i965_drv_video.c
- * except that there are a few other checks in regards to HW support
- * expectations.
- */
-VAStatus CheckSupported(VAProfile profile, VAEntrypoint entrypoint)
-{
- I965TestEnvironment *env(I965TestEnvironment::instance());
- EXPECT_PTR(env);
-
- struct i965_driver_data *i965(*env);
- EXPECT_PTR(i965);
-
- switch(profile) {
- case VAProfileH264Baseline:
- return VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
-
- case VAProfileH264ConstrainedBaseline:
- case VAProfileH264Main:
- case VAProfileH264High:
- if (entrypoint == VAEntrypointEncSlice) {
- if (HAS_H264_ENCODING(i965)) {
- return VA_STATUS_SUCCESS;
- }
- } else if (entrypoint == VAEntrypointEncSliceLP) {
- if (IS_SKL(i965->intel.device_info)) {
- return VA_STATUS_SUCCESS;
- }
- if (HAS_LP_H264_ENCODING(i965)) {
- return VA_STATUS_SUCCESS;
- }
- }
- break;
-
- case VAProfileH264MultiviewHigh:
- case VAProfileH264StereoHigh:
- if (entrypoint == VAEntrypointEncSlice) {
- return VA_STATUS_SUCCESS;
- }
- break;
-
- default:
- return VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
- }
-
- return VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
-}
-
-bool IsSupported(VAProfile profile, VAEntrypoint entrypoint)
-{
- return VA_STATUS_SUCCESS == CheckSupported(profile, entrypoint);
-}
-
-} // namespace Encode
-} // namespace AVC
diff --git a/test/i965_avce_test_common.h b/test/i965_avce_test_common.h
deleted file mode 100644
index 4642438..0000000
--- a/test/i965_avce_test_common.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef I965_AVCE_TEST_COMMON_H
-#define I965_AVCE_TEST_COMMON_H
-
-#include <va/va.h>
-
-namespace AVC {
-namespace Encode {
-
-VAStatus CheckSupported(VAProfile, VAEntrypoint);
-bool IsSupported(VAProfile, VAEntrypoint);
-
-} // namespace Encode
-} // namespace AVC
-
-#endif
diff --git a/test/i965_chipset_test.cpp b/test/i965_chipset_test.cpp
deleted file mode 100644
index e2630fb..0000000
--- a/test/i965_chipset_test.cpp
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "test.h"
-#include "i965_internal_decl.h"
-
-#include <iostream>
-#include <set>
-#include <string>
-#include <vector>
-
-struct Chipset {
- int devid;
- std::string family;
- std::string device;
- std::string description;
-
- bool operator< (const Chipset& other) const
- {
- return devid < other.devid;
- }
-
- bool operator== (const Chipset& other) const
- {
- return devid == other.devid;
- }
-};
-
-std::ostream& operator<<(std::ostream& os, const Chipset& chipset)
-{
- os << std::hex << "(0x" << chipset.devid << std::dec
- << ", " << chipset.family
- << ", " << chipset.device
- << ", " << chipset.description << ")";
- return os;
-}
-
-const std::vector<Chipset>& getChipsets()
-{
-#undef CHIPSET
-#define CHIPSET(id, family, dev, desc) {id, #family, #dev, #desc},
- static std::vector<Chipset> chipsets = {
-#include "i965_pciids.h"
- };
-#undef CHIPSET
- return chipsets;
-}
-
-TEST(ChipsetTest, Unique)
-{
- const std::vector<Chipset>& chipsets = getChipsets();
- std::set<Chipset> unique;
- for (const Chipset& chipset : chipsets)
- {
- const std::set<Chipset>::const_iterator match = unique.find(chipset);
- EXPECT_EQ(unique.end(), match)
- << "duplicate chipsets defined:" << std::endl
- << "\t" << chipset << std::endl
- << "\t" << *match;
- unique.insert(chipset);
- }
- EXPECT_EQ(unique.size(), chipsets.size());
-}
-
-TEST(ChipsetTest, GetCodecInfo)
-{
- for (const Chipset& chipset : getChipsets())
- {
- hw_codec_info *info = i965_get_codec_info(chipset.devid);
- EXPECT_PTR(info)
- << "no codec info returned for " << chipset;
- }
-}
-
-TEST(ChipsetTest, GetDeviceInfo)
-{
- for (const Chipset& chipset : getChipsets())
- {
- const intel_device_info *info = i965_get_device_info(chipset.devid);
- EXPECT_PTR(info)
- << "no device info returned for " << chipset;
- }
-}
diff --git a/test/i965_config_test.cpp b/test/i965_config_test.cpp
deleted file mode 100644
index 3370bc5..0000000
--- a/test/i965_config_test.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "i965_config_test.h"
-#include "i965_streamable.h"
-
-std::ostream& operator<<(std::ostream& os, const ConfigTestInput& input)
-{
- return os << input.profile << " : " << input.entrypoint;
-}
-
-I965ConfigTest::I965ConfigTest()
- : I965TestFixture()
- , config(VA_INVALID_ID) // invalid
-{
- return;
-}
-
-void I965ConfigTest::TearDown()
-{
- if (config != VA_INVALID_ID) {
- destroyConfig(config);
- config = VA_INVALID_ID;
- }
- I965TestFixture::TearDown();
-}
-
-TEST_P(I965ConfigTest, Create)
-{
- const ConfigTestInput& input = GetParam();
- const VAStatus expect = input.expect();
-
- RecordProperty("expect_status", toString(VaapiStatus(expect)));
-
- const VAStatus actual = i965_CreateConfig(
- *this, input.profile, input.entrypoint, NULL, 0, &config);
-
- EXPECT_STATUS_EQ(expect, actual);
-
- if (actual != VA_STATUS_SUCCESS)
- EXPECT_INVALID_ID(config);
-}
diff --git a/test/i965_config_test.h b/test/i965_config_test.h
deleted file mode 100644
index 79cb960..0000000
--- a/test/i965_config_test.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef I965_CONFIG_TEST
-#define I965_CONFIG_TEST
-
-#include "i965_test_fixture.h"
-
-#include <functional>
-#include <iostream>
-
-struct ConfigTestInput
-{
- VAProfile profile;
- VAEntrypoint entrypoint;
- std::function<VAStatus (void)> expect;
-
- friend std::ostream& operator<<(
- std::ostream& os, const ConfigTestInput& input);
-};
-
-class I965ConfigTest
- : public I965TestFixture
- , public ::testing::WithParamInterface<ConfigTestInput>
-{
-public:
- I965ConfigTest();
-
-protected:
- virtual void TearDown();
-
- VAConfigID config;
-};
-
-#endif
diff --git a/test/i965_initialize_test.cpp b/test/i965_initialize_test.cpp
deleted file mode 100644
index 0fc45c7..0000000
--- a/test/i965_initialize_test.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "i965_test_fixture.h"
-
-#include <string>
-
-class DriverTest : public I965TestFixture { };
-
-TEST_F(DriverTest, Initialize)
-{
- VADriverContextP ctx(*this);
-
- ASSERT_PTR(ctx);
-
- EXPECT_EQ(VA_MAJOR_VERSION, ctx->version_major);
- EXPECT_EQ(VA_MINOR_VERSION, ctx->version_minor);
- EXPECT_EQ(I965_MAX_PROFILES, ctx->max_profiles);
- EXPECT_EQ(I965_MAX_ENTRYPOINTS, ctx->max_entrypoints);
- EXPECT_EQ(I965_MAX_CONFIG_ATTRIBUTES, ctx->max_attributes);
- EXPECT_EQ(I965_MAX_IMAGE_FORMATS, ctx->max_image_formats);
- EXPECT_EQ(I965_MAX_SUBPIC_FORMATS, ctx->max_subpic_formats);
-
- EXPECT_EQ(ctx->max_profiles, vaMaxNumProfiles(*this));
- EXPECT_EQ(ctx->max_entrypoints, vaMaxNumEntrypoints(*this));
- EXPECT_EQ(ctx->max_attributes, vaMaxNumConfigAttributes(*this));
- EXPECT_EQ(ctx->max_image_formats, vaMaxNumImageFormats(*this));
- EXPECT_EQ(ctx->max_subpic_formats, vaMaxNumSubpictureFormats(*this));
- EXPECT_EQ(ctx->max_display_attributes, vaMaxNumDisplayAttributes(*this));
-
- EXPECT_PTR(ctx->vtable);
- EXPECT_PTR(ctx->vtable_vpp);
-
- std::string prefix(INTEL_STR_DRIVER_VENDOR " " INTEL_STR_DRIVER_NAME);
- std::string vendor(ctx->str_vendor);
-
- EXPECT_EQ(0u, vendor.find(prefix));
- EXPECT_NE(std::string::npos, vendor.find(prefix));
-
- struct i965_driver_data *i965(*this);
-
- ASSERT_PTR(i965);
-
- EXPECT_STREQ(ctx->str_vendor, i965->va_vendor);
-}
diff --git a/test/i965_internal_decl.h b/test/i965_internal_decl.h
deleted file mode 100644
index 392cd3b..0000000
--- a/test/i965_internal_decl.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef I965_INTERNAL_DECL_H
-#define I965_INTERNAL_DECL_H
-
-extern "C" {
- #include "sysdeps.h"
- #include "i965_drv_video.h"
- #include "i965_encoder.h"
-
- extern VAStatus i965_CreateConfig(
- VADriverContextP, VAProfile, VAEntrypoint,
- VAConfigAttrib *, int, VAConfigID *);
-
- extern VAStatus i965_DestroyConfig(
- VADriverContextP, VAConfigID);
-
- extern VAStatus i965_CreateContext(
- VADriverContextP, VAConfigID, int, int,
- int, VASurfaceID *, int, VAContextID *);
-
- extern VAStatus i965_DestroyContext(
- VADriverContextP, VAContextID);
-
- extern VAStatus i965_CreateBuffer(
- VADriverContextP, VAContextID, VABufferType,
- unsigned, unsigned, void *, VABufferID *);
-
- extern VAStatus i965_DestroyBuffer(
- VADriverContextP, VABufferID);
-
- extern VAStatus i965_BeginPicture(
- VADriverContextP, VAContextID, VASurfaceID);
-
- extern VAStatus i965_RenderPicture(
- VADriverContextP, VAContextID,
- VABufferID *, int);
-
- extern VAStatus i965_EndPicture(
- VADriverContextP, VAContextID);
-
- extern VAStatus i965_DeriveImage(
- VADriverContextP, VASurfaceID, VAImage *);
-
- extern VAStatus i965_DestroyImage(
- VADriverContextP, VAImageID);
-
- extern VAStatus i965_SyncSurface(
- VADriverContextP, VASurfaceID);
-
- extern struct hw_codec_info *i965_get_codec_info(int);
- extern const struct intel_device_info *i965_get_device_info(int);
-
-} // extern "C"
-
-#endif
diff --git a/test/i965_jpeg_decode_test.cpp b/test/i965_jpeg_decode_test.cpp
deleted file mode 100644
index 265793d..0000000
--- a/test/i965_jpeg_decode_test.cpp
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "i965_test_fixture.h"
-#include "i965_jpeg_test_data.h"
-
-#include <iomanip>
-#include <iostream>
-#include <numeric>
-#include <sstream>
-#include <string>
-#include <tuple>
-#include <vector>
-
-namespace JPEG {
-namespace Decode {
-
-class JPEGDecodeTest : public I965TestFixture { };
-
-class FourCCTest
- : public JPEGDecodeTest
- , public ::testing::WithParamInterface<
- std::tuple<TestPattern::SharedConst, const char*> >
-{
-protected:
- virtual void SetUp()
- {
- JPEGDecodeTest::SetUp();
-
- std::string sFourcc;
- std::tie(testPattern, sFourcc) = GetParam();
-
- ASSERT_PTR(testPattern.get()) << "Invalid test pattern parameter";
-
- ASSERT_EQ(4u, sFourcc.size())
- << "Invalid fourcc parameter '" << sFourcc << "'";
-
- unsigned fourcc = VA_FOURCC(
- sFourcc[0], sFourcc[1], sFourcc[2], sFourcc[3]);
-
- pd = testPattern->encoded(fourcc);
-
- ASSERT_PTR(pd.get())
- << "Unhandled fourcc parameter '" << sFourcc << "'"
- << " = 0x" << std::hex << fourcc << std::dec;
-
- ASSERT_EQ(fourcc, pd->fourcc);
- }
-
- void validateComponent(const uint8_t * const expect, const uint8_t * actual,
- unsigned width, unsigned height, unsigned pitch, unsigned hsample = 1,
- unsigned vsample = 1)
- {
- for (size_t row(0); row < (height / vsample); ++row) {
- for (size_t col(0); col < (width / hsample); ++col) {
- size_t aIdx = (row * pitch) + col;
- size_t eIdx = (row * vsample * height) + (col * hsample);
-
- std::vector<uint8_t> samples;
- for (size_t i(0); i < vsample; ++i) {
- for (size_t j(0); j < hsample; ++j) {
- size_t sIdx = eIdx + (width * i) + j;
- samples.push_back(expect[sIdx]);
- }
- }
-
- const uint8_t eVal =
- std::accumulate(samples.begin(), samples.end(), 0x00)
- / samples.size();
-
- const uint8_t aVal = actual[aIdx];
-
- SCOPED_TRACE(
- ::testing::Message() << std::endl
- << "\tRow = " << row << std::endl
- << "\tColumn = " << col << std::endl
- << "\tExpect = 0x"
- << std::hex << std::setfill('0') << std::setw(2)
- << (uint32_t)eVal << std::endl
- << "\tActual = 0x"
- << std::hex << std::setfill('0') << std::setw(2)
- << (uint32_t)aVal << std::dec);
-
- EXPECT_NEAR(eVal, aVal, 0x02);
- }
- }
- }
-
- void validateImageOutput(const VAImage& image, const uint8_t * const output)
- {
- {
- SCOPED_TRACE("Y Component\n");
- validateComponent(
- testPattern->decoded().data(), output + image.offsets[0],
- image.width, image.height, image.pitches[0]);
- }
-
- {
- SCOPED_TRACE("U Component\n");
- validateComponent(
- testPattern->decoded().data() + (image.width * image.height),
- output + image.offsets[1], image.width, image.height,
- image.pitches[1], pd->pparam.components[0].h_sampling_factor,
- pd->pparam.components[0].v_sampling_factor);
- }
-
- {
- SCOPED_TRACE("V Component\n");
- validateComponent(
- testPattern->decoded().data() + (image.width * image.height * 2),
- output + image.offsets[2], image.width, image.height,
- image.pitches[2], pd->pparam.components[0].h_sampling_factor,
- pd->pparam.components[0].v_sampling_factor);
- }
- }
-
- void printComponentDataTo(std::ostream& os, const uint8_t * const data,
- unsigned w, unsigned h, unsigned pitch, unsigned hsample = 1,
- unsigned vsample = 1)
- {
- const uint8_t *row = data;
- for (unsigned i(0); i < (h/vsample); ++i) {
- for (size_t j(0); j < (w/hsample); ++j) {
- os << "0x" << std::hex << std::setfill('0') << std::setw(2)
- << (uint32_t)row[j] << ",";
- }
- os << std::endl;
- row += pitch;
- }
- os << std::setw(0) << std::setfill(' ') << std::dec << std::endl;
- }
-
- void printImageOutputTo(std::ostream& os, const VAImage& image,
- const uint8_t * const output)
- {
- printComponentDataTo(os, output + image.offsets[0], image.width,
- image.height, image.pitches[0]); // Y
-
- printComponentDataTo(os, output + image.offsets[1], image.width,
- image.height, image.pitches[1],
- pd->pparam.components[0].h_sampling_factor,
- pd->pparam.components[0].v_sampling_factor); // U
-
- printComponentDataTo(os, output + image.offsets[2], image.width,
- image.height, image.pitches[2],
- pd->pparam.components[0].h_sampling_factor,
- pd->pparam.components[0].v_sampling_factor); // V
- }
-
- TestPattern::SharedConst testPattern;
- PictureData::SharedConst pd;
-};
-
-TEST_P(FourCCTest, Decode)
-{
- struct i965_driver_data *i965(*this);
- ASSERT_PTR(i965);
- if (not HAS_JPEG_DECODING(i965)) {
- RecordProperty("skipped", true);
- std::cout << "[ SKIPPED ] " << getFullTestName()
- << " is unsupported on this hardware" << std::endl;
- return;
- }
-
- VAConfigAttrib a = { type:VAConfigAttribRTFormat, value:pd->format };
- ConfigAttribs attribs(1, a);
-
- ASSERT_NO_FAILURE(
- Surfaces surfaces = createSurfaces(
- pd->pparam.picture_width, pd->pparam.picture_height, pd->format));
- ASSERT_NO_FAILURE(
- VAConfigID config = createConfig(profile, entrypoint, attribs));
- ASSERT_NO_FAILURE(
- VAContextID context = createContext(
- config, pd->pparam.picture_width, pd->pparam.picture_height, 0,
- surfaces));
- ASSERT_NO_FAILURE(
- VABufferID sliceDataBufId = createBuffer(
- context, VASliceDataBufferType, pd->sparam.slice_data_size, 1,
- pd->slice.data()));
- ASSERT_NO_FAILURE(
- VABufferID sliceParamBufId = createBuffer(
- context, VASliceParameterBufferType, sizeof(pd->sparam), 1,
- &pd->sparam));
- ASSERT_NO_FAILURE(
- VABufferID picBufId = createBuffer(
- context, VAPictureParameterBufferType, sizeof(pd->pparam), 1,
- &pd->pparam));
- ASSERT_NO_FAILURE(
- VABufferID iqMatrixBufId = createBuffer(
- context, VAIQMatrixBufferType, sizeof(IQMatrix), 1, &pd->iqmatrix));
- ASSERT_NO_FAILURE(
- VABufferID huffTableBufId = createBuffer(
- context, VAHuffmanTableBufferType, sizeof(HuffmanTable), 1,
- &pd->huffman));
-
- ASSERT_NO_FAILURE(beginPicture(context, surfaces.front()));
- ASSERT_NO_FAILURE(renderPicture(context, &picBufId));
- ASSERT_NO_FAILURE(renderPicture(context, &iqMatrixBufId));
- ASSERT_NO_FAILURE(renderPicture(context, &huffTableBufId));
- ASSERT_NO_FAILURE(renderPicture(context, &sliceParamBufId));
- ASSERT_NO_FAILURE(renderPicture(context, &sliceDataBufId));
- ASSERT_NO_FAILURE(endPicture(context));
-
- VAImage image;
- ASSERT_NO_FAILURE(deriveImage(surfaces.front(), image));
- ASSERT_NO_FAILURE(
- uint8_t *output = mapBuffer<uint8_t>(image.buf));
-
- unsigned rwidth = ALIGN(image.width, 128);
- unsigned rheight =
- ALIGN(image.height, 32)
- + ALIGN(image.height / pd->pparam.components[0].v_sampling_factor, 32)
- * 2;
-
- SCOPED_TRACE(
- ::testing::Message()
- << std::endl
- << "image : " << image.width << "x" << image.height
- << std::endl
- << "region : " << rwidth << "x" << rheight
- << std::endl
- << "planes : " << image.num_planes
- << std::endl
- << "offsets: " << image.offsets[0] << " " << image.offsets[1] << " " << image.offsets[2]
- << std::endl
- << "pitches: " << image.pitches[0] << " " << image.pitches[1] << " " << image.pitches[2]
- );
-
- EXPECT_EQ(3u, image.num_planes);
- EXPECT_EQ(pd->pparam.picture_width, image.width);
- EXPECT_EQ(pd->pparam.picture_height, image.height);
- EXPECT_EQ(rwidth * rheight, image.data_size);
- EXPECT_EQ(pd->fourcc, image.format.fourcc);
-
- std::ostringstream oss;
- printImageOutputTo(oss, image, output);
- RecordProperty("Output", oss.str());
-
- validateImageOutput(image, output);
-
-// std::cout << oss.str();
-
- unmapBuffer(image.buf);
-
- destroyBuffer(huffTableBufId);
- destroyBuffer(iqMatrixBufId);
- destroyBuffer(picBufId);
- destroyBuffer(sliceParamBufId);
- destroyBuffer(sliceDataBufId);
-
- destroyImage(image);
- destroyContext(context);
- destroyConfig(config);
- destroySurfaces(surfaces);
-}
-
-
-/** Teach Google Test how to print a TestPattern::SharedConst object */
-void PrintTo(const TestPattern::SharedConst& t, std::ostream* os)
-{
- *os << *t;
-}
-
-INSTANTIATE_TEST_CASE_P(
- JPEG, FourCCTest,
- ::testing::Combine(
- ::testing::Values(
- TestPattern::SharedConst(new TestPatternData<1>),
- TestPattern::SharedConst(new TestPatternData<2>),
- TestPattern::SharedConst(new TestPatternData<3>),
- TestPattern::SharedConst(new TestPatternData<4>)
- ),
- ::testing::Values("IMC3", "422H", "422V", "444P", "411P"))
-);
-
-} // namespace Decode
-} // namespace JPEG
diff --git a/test/i965_jpeg_encode_test.cpp b/test/i965_jpeg_encode_test.cpp
deleted file mode 100644
index d57aa67..0000000
--- a/test/i965_jpeg_encode_test.cpp
+++ /dev/null
@@ -1,530 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "i965_jpeg_test_data.h"
-#include "i965_streamable.h"
-#include "i965_test_fixture.h"
-#include "test_utils.h"
-
-#include <numeric>
-#include <cstring>
-#include <memory>
-#include <tuple>
-#include <valarray>
-
-namespace JPEG {
-namespace Encode {
-
-class JPEGEncodeTest
- : public I965TestFixture
-{
-public:
- JPEGEncodeTest()
- : I965TestFixture()
- , config(VA_INVALID_ID) // invalid
- , context(VA_INVALID_ID) // invalid
- { }
-
-protected:
- virtual void TearDown()
- {
- if (context != VA_INVALID_ID) {
- destroyContext(context);
- context = VA_INVALID_ID;
- }
-
- if (config != VA_INVALID_ID) {
- destroyConfig(config);
- config = VA_INVALID_ID;
- }
-
- I965TestFixture::TearDown();
- }
-
- VAConfigID config;
- VAContextID context;
-};
-
-class JPEGEncodeInputTest
- : public JPEGEncodeTest
- , public ::testing::WithParamInterface<
- std::tuple<TestInputCreator::SharedConst, const char*> >
-{
-public:
- JPEGEncodeInputTest()
- : JPEGEncodeTest::JPEGEncodeTest()
- , surfaces() // empty
- , coded(VA_INVALID_ID) // invalid
- , renderBuffers() // empty
- , input() // invalid
- , output() // empty
- { }
-
-protected:
- virtual void SetUp()
- {
- JPEGEncodeTest::SetUp();
-
- struct i965_driver_data *i965(*this);
- ASSERT_PTR(i965);
- if (not HAS_JPEG_ENCODING(i965))
- return;
-
- TestInputCreator::SharedConst creator;
- std::string sFourcc;
- std::tie(creator, sFourcc) = GetParam();
-
- ASSERT_PTR(creator.get()) << "Invalid test input creator parameter";
-
- ASSERT_EQ(4u, sFourcc.size())
- << "Invalid fourcc parameter '" << sFourcc << "'";
-
- unsigned fourcc = VA_FOURCC(
- sFourcc[0], sFourcc[1], sFourcc[2], sFourcc[3]);
-
- input = creator->create(fourcc);
-
- ASSERT_PTR(input.get())
- << "Unhandled fourcc parameter '" << sFourcc << "'"
- << " = 0x" << std::hex << fourcc << std::dec;
-
- ASSERT_EQ(fourcc, input->image->fourcc);
-
- RecordProperty("test_input", toString(*input));
- }
-
- virtual void TearDown()
- {
- for (auto id : renderBuffers) {
- if (id != VA_INVALID_ID) {
- destroyBuffer(id);
- }
- }
- renderBuffers.clear();
-
- if (coded != VA_INVALID_ID) {
- destroyBuffer(coded);
- coded = VA_INVALID_ID;
- }
-
- if (not surfaces.empty()) {
- destroySurfaces(surfaces);
- surfaces.clear();
- }
-
- if (std::get<0>(GetParam()).get())
- std::cout << "Creator: " << std::get<0>(GetParam()) << std::endl;
- if (input.get())
- std::cout << "Input : " << input << std::endl;
-
- JPEGEncodeTest::TearDown();
- }
-
- void Encode()
- {
- ASSERT_FALSE(surfaces.empty());
-
- ASSERT_NO_FAILURE(
- beginPicture(context, surfaces.front()));
- ASSERT_NO_FAILURE(
- renderPicture(context, renderBuffers.data(), renderBuffers.size()));
- ASSERT_NO_FAILURE(
- endPicture(context));
- ASSERT_NO_FAILURE(
- syncSurface(surfaces.front()));
- ASSERT_NO_FAILURE(
- VACodedBufferSegment *segment =
- mapBuffer<VACodedBufferSegment>(coded));
-
- EXPECT_FALSE(segment->status & VA_CODED_BUF_STATUS_SLICE_OVERFLOW_MASK)
- << "segment->size = " << segment->size;
- EXPECT_PTR_NULL(segment->next);
-
- // copy segment buffer to output while stripping the packed header data
- const size_t headerSize(1);
- output.resize(segment->size - headerSize, 0x0);
- std::memcpy(
- output.data(),
- reinterpret_cast<uint8_t *>(segment->buf) + headerSize,
- segment->size - headerSize);
-
- unmapBuffer(coded);
-
- // EOI JPEG Marker
- ASSERT_GE(output.size(), 2u);
- EXPECT_TRUE(
- unsigned(0xff) == unsigned(*(output.end() - 2)) and
- unsigned(0xd9) == unsigned(output.back()))
- << "Invalid JPEG EOI Marker";
- }
-
- void SetUpSurfaces()
- {
- SurfaceAttribs attributes(1);
- attributes.front().flags = VA_SURFACE_ATTRIB_SETTABLE;
- attributes.front().type = VASurfaceAttribPixelFormat;
- attributes.front().value.type = VAGenericValueTypeInteger;
- attributes.front().value.value.i = input->image->fourcc;
- surfaces = createSurfaces(input->image->width, input->image->height,
- input->image->format, 1, attributes);
-
- ASSERT_EQ(1u, surfaces.size());
- ASSERT_ID(surfaces.front());
-
- input->image->toSurface(surfaces.front());
- }
-
- void SetUpConfig()
- {
- ASSERT_INVALID_ID(config);
- ConfigAttribs attributes(
- 1, {type:VAConfigAttribRTFormat, value:input->image->format});
- config = createConfig(profile, entrypoint, attributes);
- }
-
- void SetUpContext()
- {
- ASSERT_INVALID_ID(context);
- context = createContext(config, input->image->width,
- input->image->height, 0, surfaces);
- }
-
- void SetUpCodedBuffer()
- {
- ASSERT_INVALID_ID(coded);
- unsigned size = input->image->sizes.sum() + 8192u;
- size *= 2;
- coded = createBuffer(context, VAEncCodedBufferType, size);
- }
-
- void SetUpPicture()
- {
- input->picture.coded_buf = coded;
- renderBuffers.push_back(
- createBuffer(context, VAEncPictureParameterBufferType,
- sizeof(PictureParameter), 1, &input->picture));
- }
-
- void SetUpIQMatrix()
- {
- renderBuffers.push_back(
- createBuffer(context, VAQMatrixBufferType, sizeof(IQMatrix),
- 1, &input->matrix));
- }
-
- void SetUpHuffmanTables()
- {
- renderBuffers.push_back(
- createBuffer(context, VAHuffmanTableBufferType,
- sizeof(HuffmanTable), 1, &input->huffman));
- }
-
- void SetUpSlice()
- {
- renderBuffers.push_back(
- createBuffer(context, VAEncSliceParameterBufferType,
- sizeof(SliceParameter), 1, &input->slice));
- }
-
- void SetUpHeader()
- {
- /*
- * The driver expects a packed JPEG header which it prepends to the
- * coded buffer segment output. The driver does not appear to inspect
- * this header, however. So we'll just create a 1-byte packed header
- * since we really don't care if it contains a "valid" JPEG header.
- */
- renderBuffers.push_back(
- createBuffer(context, VAEncPackedHeaderParameterBufferType,
- sizeof(VAEncPackedHeaderParameterBuffer)));
- if (HasFailure())
- return;
-
- VAEncPackedHeaderParameterBuffer *packed =
- mapBuffer<VAEncPackedHeaderParameterBuffer>(renderBuffers.back());
- if (HasFailure())
- return;
-
- std::memset(packed, 0, sizeof(*packed));
- packed->type = VAEncPackedHeaderRawData;
- packed->bit_length = 8;
- packed->has_emulation_bytes = 0;
-
- unmapBuffer(renderBuffers.back());
-
- renderBuffers.push_back(
- createBuffer(context, VAEncPackedHeaderDataBufferType, 1));
- }
-
- Surfaces surfaces;
- VABufferID coded;
- Buffers renderBuffers;
- TestInput::Shared input;
- ByteData output;
-
- void VerifyOutput()
- {
- YUVImage::SharedConst expect = input->toExpectedOutput();
- ASSERT_PTR(expect.get());
-
- ::JPEG::Decode::PictureData::SharedConst pd =
- ::JPEG::Decode::PictureData::make(
- expect->fourcc, output, expect->width, expect->height);
-
- ASSERT_PTR(pd.get());
-
- ASSERT_NO_FAILURE(
- Surfaces osurfaces = createSurfaces(
- pd->pparam.picture_width, pd->pparam.picture_height,
- pd->format));;
-
- ConfigAttribs attribs(
- 1, {type:VAConfigAttribRTFormat, value:pd->format});
- ASSERT_NO_FAILURE(
- VAConfigID oconfig = createConfig(
- ::JPEG::profile, ::JPEG::Decode::entrypoint, attribs));
-
- ASSERT_NO_FAILURE(
- VAContextID ocontext = createContext(
- oconfig, pd->pparam.picture_width, pd->pparam.picture_height,
- 0, osurfaces));
-
- Buffers buffers;
-
- ASSERT_NO_FAILURE(
- buffers.push_back(
- createBuffer(
- ocontext, VASliceDataBufferType, pd->sparam.slice_data_size,
- 1, pd->slice.data())));
-
- ASSERT_NO_FAILURE(
- buffers.push_back(
- createBuffer(
- ocontext, VASliceParameterBufferType, sizeof(pd->sparam),
- 1, &pd->sparam)));
-
- ASSERT_NO_FAILURE(
- buffers.push_back(
- createBuffer(
- ocontext,VAPictureParameterBufferType, sizeof(pd->pparam),
- 1, &pd->pparam)));
-
- ASSERT_NO_FAILURE(
- buffers.push_back(
- createBuffer(
- ocontext, VAIQMatrixBufferType, sizeof(pd->iqmatrix),
- 1, &pd->iqmatrix)));
-
- ASSERT_NO_FAILURE(
- buffers.push_back(
- createBuffer(
- ocontext, VAHuffmanTableBufferType, sizeof(pd->huffman),
- 1, &pd->huffman)));
-
- ASSERT_NO_FAILURE(beginPicture(ocontext, osurfaces.front()));
- ASSERT_NO_FAILURE(
- renderPicture(ocontext, buffers.data(), buffers.size()));
- ASSERT_NO_FAILURE(endPicture(ocontext));
- ASSERT_NO_FAILURE(syncSurface(osurfaces.front()));
-
- ASSERT_NO_FAILURE(
- YUVImage::Shared result = YUVImage::create(osurfaces.front()));
- ASSERT_PTR(result.get());
- ASSERT_EQ(expect->planes, result->planes);
- ASSERT_EQ(expect->width, result->width);
- ASSERT_EQ(expect->height, result->height);
- ASSERT_TRUE((result->widths == expect->widths).min());
- ASSERT_TRUE((result->heights == expect->heights).min());
- ASSERT_TRUE((result->offsets == expect->offsets).min());
- ASSERT_TRUE((result->sizes == expect->sizes).min());
- ASSERT_EQ(expect->bytes.size(), result->bytes.size());
-
- std::valarray<int16_t> rbytes(result->bytes.size());
- std::copy(std::begin(result->bytes), std::end(result->bytes),
- std::begin(rbytes));
-
- std::valarray<int16_t> ebytes(expect->bytes.size());
- std::copy(std::begin(expect->bytes), std::end(expect->bytes),
- std::begin(ebytes));
-
- EXPECT_TRUE(std::abs(ebytes - rbytes).max() <= 2);
- if (HasFailure()) {
- std::valarray<int16_t> r = std::abs(ebytes - rbytes);
- for (size_t i(0); i < expect->planes; ++i) {
- std::valarray<int16_t> plane = r[expect->slices[i]];
- size_t mismatch = std::count_if(
- std::begin(plane), std::end(plane),
- [](const uint16_t& v){return v > 2;});
- std::cout << "\tplane " << i << ": "
- << mismatch << " of " << plane.size()
- << " (" << (float(mismatch) / plane.size() * 100)
- << "%) mismatch" << std::endl;
- }
- }
-
- for (auto id : buffers)
- destroyBuffer(id);
-
- destroyContext(ocontext);
- destroyConfig(oconfig);
- destroySurfaces(osurfaces);
- }
-};
-
-TEST_P(JPEGEncodeInputTest, Full)
-{
- struct i965_driver_data *i965(*this);
- ASSERT_PTR(i965);
- if (not HAS_JPEG_ENCODING(i965)) {
- RecordProperty("skipped", true);
- std::cout << "[ SKIPPED ] " << getFullTestName()
- << " is unsupported on this hardware" << std::endl;
- return;
- }
-
- ASSERT_NO_FAILURE(SetUpSurfaces());
- ASSERT_NO_FAILURE(SetUpConfig());
- ASSERT_NO_FAILURE(SetUpContext());
- ASSERT_NO_FAILURE(SetUpCodedBuffer());
- ASSERT_NO_FAILURE(SetUpPicture());
- ASSERT_NO_FAILURE(SetUpIQMatrix());
- ASSERT_NO_FAILURE(SetUpHuffmanTables());
- ASSERT_NO_FAILURE(SetUpSlice());
- ASSERT_NO_FAILURE(SetUpHeader());
- ASSERT_NO_FAILURE(Encode());
-
- VerifyOutput();
-}
-
-INSTANTIATE_TEST_CASE_P(
- Random, JPEGEncodeInputTest,
- ::testing::Combine(
- ::testing::ValuesIn(
- std::vector<TestInputCreator::SharedConst>(
- 5, TestInputCreator::SharedConst(new RandomSizeCreator))),
- ::testing::Values("I420", "NV12", "UYVY", "YUY2", "Y800")
- )
-);
-
-InputCreators generateCommonInputs()
-{
- return {
- TestInputCreator::Shared(new FixedSizeCreator({800, 600})), /* SVGA */
- TestInputCreator::Shared(new FixedSizeCreator({1024, 600})), /* WSVGA */
- TestInputCreator::Shared(new FixedSizeCreator({1024, 768})), /* XGA */
- TestInputCreator::Shared(new FixedSizeCreator({1152, 864})), /* XGA+ */
- TestInputCreator::Shared(new FixedSizeCreator({1280, 720})), /* WXGA */
- TestInputCreator::Shared(new FixedSizeCreator({1280, 768})), /* WXGA */
- TestInputCreator::Shared(new FixedSizeCreator({1280, 800})), /* WXGA */
- TestInputCreator::Shared(new FixedSizeCreator({1280, 1024})), /* SXGA */
- TestInputCreator::Shared(new FixedSizeCreator({1360, 768})), /* HD */
- TestInputCreator::Shared(new FixedSizeCreator({1366, 768})), /* HD */
- TestInputCreator::Shared(new FixedSizeCreator({1440, 900})), /* WXGA+ */
- TestInputCreator::Shared(new FixedSizeCreator({1600, 900})), /* HD+ */
- TestInputCreator::Shared(new FixedSizeCreator({1600, 1200})), /* UXGA */
- TestInputCreator::Shared(new FixedSizeCreator({1680, 1050})), /* WSXGA+ */
- TestInputCreator::Shared(new FixedSizeCreator({1920, 1080})), /* FHD */
- TestInputCreator::Shared(new FixedSizeCreator({1920, 1200})), /* WUXGA */
- TestInputCreator::Shared(new FixedSizeCreator({2560, 1440})), /* WQHD */
- TestInputCreator::Shared(new FixedSizeCreator({2560, 1600})), /* WQXGA */
- TestInputCreator::Shared(new FixedSizeCreator({3640, 2160})), /* UHD (4K) */
- TestInputCreator::Shared(new FixedSizeCreator({7680, 4320})), /* UHD (8K) */
- };
-}
-
-INSTANTIATE_TEST_CASE_P(
- Common, JPEGEncodeInputTest,
- ::testing::Combine(
- ::testing::ValuesIn(generateCommonInputs()),
- ::testing::Values("I420", "NV12", "UYVY", "YUY2", "Y800")
- )
-);
-
-INSTANTIATE_TEST_CASE_P(
- Big, JPEGEncodeInputTest,
- ::testing::Combine(
- ::testing::Values(
- TestInputCreator::Shared(new FixedSizeCreator({8192, 8192}))
- ),
- ::testing::Values("I420", "NV12", "UYVY", "YUY2", "Y800")
- )
-);
-
-InputCreators generateEdgeCaseInputs()
-{
- std::vector<TestInputCreator::SharedConst> result;
- for (unsigned i(64); i <= 512; i += 64) {
- result.push_back(
- TestInputCreator::Shared(new FixedSizeCreator({i, i})));
- result.push_back(
- TestInputCreator::Shared(new FixedSizeCreator({i+1, i})));
- result.push_back(
- TestInputCreator::Shared(new FixedSizeCreator({i, i+1})));
- result.push_back(
- TestInputCreator::Shared(new FixedSizeCreator({i+1, i+1})));
- result.push_back(
- TestInputCreator::Shared(new FixedSizeCreator({i-1, i})));
- result.push_back(
- TestInputCreator::Shared(new FixedSizeCreator({i, i-1})));
- result.push_back(
- TestInputCreator::Shared(new FixedSizeCreator({i-1, i-1})));
- }
-
- result.push_back(TestInputCreator::Shared(new FixedSizeCreator({1, 1})));
- result.push_back(TestInputCreator::Shared(new FixedSizeCreator({1, 2})));
- result.push_back(TestInputCreator::Shared(new FixedSizeCreator({2, 1})));
- result.push_back(TestInputCreator::Shared(new FixedSizeCreator({2, 2})));
- result.push_back(TestInputCreator::Shared(new FixedSizeCreator({1, 462})));
-
- return result;
-}
-
-INSTANTIATE_TEST_CASE_P(
- Edge, JPEGEncodeInputTest,
- ::testing::Combine(
- ::testing::ValuesIn(generateEdgeCaseInputs()),
- ::testing::Values("I420", "NV12", "UYVY", "YUY2", "Y800")
- )
-);
-
-InputCreators generateMiscInputs()
-{
- return {
- TestInputCreator::Shared(new FixedSizeCreator({150, 75})),
- TestInputCreator::Shared(new FixedSizeCreator({10, 10})),
- TestInputCreator::Shared(new FixedSizeCreator({385, 610})),
- TestInputCreator::Shared(new FixedSizeCreator({1245, 1281})),
- };
-}
-
-INSTANTIATE_TEST_CASE_P(
- Misc, JPEGEncodeInputTest,
- ::testing::Combine(
- ::testing::ValuesIn(generateMiscInputs()),
- ::testing::Values("I420", "NV12", "UYVY", "YUY2", "Y800")
- )
-);
-
-} // namespace Encode
-} // namespace JPEG
diff --git a/test/i965_jpeg_test_data.cpp b/test/i965_jpeg_test_data.cpp
deleted file mode 100644
index fe531c0..0000000
--- a/test/i965_jpeg_test_data.cpp
+++ /dev/null
@@ -1,915 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "i965_jpeg_test_data.h"
-#include "i965_drv_video.h"
-#include "i965_streamable.h"
-#include "test_utils.h"
-
-#include <algorithm>
-#include <numeric>
-
-namespace JPEG {
-namespace Decode {
-
- /**
- * Test Pattern 1
- *
- * Solid Black 10x10
- *
- */
- template<> const bool TestPatternData<1>::m_valid =
- TestPatternData<1>::initialize<10, 10>(
-
- generateSolid({0x00, 0x80, 0x80}, {10, 10}),
-
- {{VA_FOURCC_IMC3, {
- 0xff,0x00,0x3f,0xfa,0x28,0xa2,0x80,0x3f,0xff,
- }},
- {VA_FOURCC_422H, {
- 0xff,0x00,0x3f,0xfa,0x28,0x00,0xa2,0x80,0x3f,0xff,
- }},
- {VA_FOURCC_422V, {
- 0xff,0x00,0x3f,0xfa,0x28,0x00,0xa2,0x80,0x3f,0xff,
- }},
- {VA_FOURCC_411P, {
- 0xff,0x00,0x3f,0xfa,0x28,0xa2,0x80,0x0a,0x28,0xa2,0x80,0x3f,
- 0xff,
- }},
- {VA_FOURCC_444P, {
- 0xff,0x00,0x3f,0xfa,0x00,0x28,0x00,0xa0,0x02,0x80,0x3f,0xff,
- }}}
- );
-
-
- /**
- * Test Pattern 2
- *
- * R = red
- * G = green
- * B = blue
- * W = white
- * K = black
- * -------------------
- * R R G G B B W W K K
- * R R G G B B W W K K
- * K K R R G G B B W W
- * K K R R G G B B W W
- * W W K K R R G G B B
- * W W K K R R G G B B
- * B B W W K K R R G G
- * B B W W K K R R G G
- * G G B B W W K K R R
- * G G B B W W K K R R
- * -------------------
- *
- */
-
- template<> const bool TestPatternData<2>::m_valid =
- TestPatternData<2>::initialize<10, 10>({
- // Pixel Y Component
- 0x4c,0x4c,0x95,0x95,0x1d,0x1d,0xff,0xff,0x00,0x00,
- 0x4c,0x4c,0x95,0x95,0x1d,0x1d,0xff,0xff,0x00,0x00,
- 0x00,0x00,0x4c,0x4c,0x95,0x95,0x1d,0x1d,0xff,0xff,
- 0x00,0x00,0x4c,0x4c,0x95,0x95,0x1d,0x1d,0xff,0xff,
- 0xff,0xff,0x00,0x00,0x4c,0x4c,0x95,0x95,0x1d,0x1d,
- 0xff,0xff,0x00,0x00,0x4c,0x4c,0x95,0x95,0x1d,0x1d,
- 0x1d,0x1d,0xff,0xff,0x00,0x00,0x4c,0x4c,0x95,0x95,
- 0x1d,0x1d,0xff,0xff,0x00,0x00,0x4c,0x4c,0x95,0x95,
- 0x95,0x95,0x1d,0x1d,0xff,0xff,0x00,0x00,0x4c,0x4c,
- 0x95,0x95,0x1d,0x1d,0xff,0xff,0x00,0x00,0x4c,0x4c,
-
- // Pixel U Component
- 0x54,0x54,0x2b,0x2b,0xff,0xff,0x80,0x80,0x80,0x80,
- 0x54,0x54,0x2b,0x2b,0xff,0xff,0x80,0x80,0x80,0x80,
- 0x80,0x80,0x54,0x54,0x2b,0x2b,0xff,0xff,0x80,0x80,
- 0x80,0x80,0x54,0x54,0x2b,0x2b,0xff,0xff,0x80,0x80,
- 0x80,0x80,0x80,0x80,0x54,0x54,0x2b,0x2b,0xff,0xff,
- 0x80,0x80,0x80,0x80,0x54,0x54,0x2b,0x2b,0xff,0xff,
- 0xff,0xff,0x80,0x80,0x80,0x80,0x54,0x54,0x2b,0x2b,
- 0xff,0xff,0x80,0x80,0x80,0x80,0x54,0x54,0x2b,0x2b,
- 0x2b,0x2b,0xff,0xff,0x80,0x80,0x80,0x80,0x54,0x54,
- 0x2b,0x2b,0xff,0xff,0x80,0x80,0x80,0x80,0x54,0x54,
-
- // Pixel V Component
- 0xff,0xff,0x15,0x15,0x6b,0x6b,0x80,0x80,0x80,0x80,
- 0xff,0xff,0x15,0x15,0x6b,0x6b,0x80,0x80,0x80,0x80,
- 0x80,0x80,0xff,0xff,0x15,0x15,0x6b,0x6b,0x80,0x80,
- 0x80,0x80,0xff,0xff,0x15,0x15,0x6b,0x6b,0x80,0x80,
- 0x80,0x80,0x80,0x80,0xff,0xff,0x15,0x15,0x6b,0x6b,
- 0x80,0x80,0x80,0x80,0xff,0xff,0x15,0x15,0x6b,0x6b,
- 0x6b,0x6b,0x80,0x80,0x80,0x80,0xff,0xff,0x15,0x15,
- 0x6b,0x6b,0x80,0x80,0x80,0x80,0xff,0xff,0x15,0x15,
- 0x15,0x15,0x6b,0x6b,0x80,0x80,0x80,0x80,0xff,0xff,
- 0x15,0x15,0x6b,0x6b,0x80,0x80,0x80,0x80,0xff,0xff,
- },{
- {VA_FOURCC_IMC3, {
- 0xf8,0x8b,0xc3,0x7e,0x24,0xf1,0xf7,0xec,0x71,0xe3,0xef,0xd9,
- 0x8f,0xc6,0x5e,0x0d,0xfd,0xa7,0x7f,0xe1,0x27,0xf0,0x3f,0x89,
- 0xff,0x00,0xe1,0x74,0xff,0x00,0xc3,0xae,0x3f,0xe0,0xa8,0xff,
- 0x00,0xf0,0xa5,0xb4,0x5d,0x17,0xfe,0x13,0x5f,0xec,0x5d,0x16,
- 0x7d,0x2b,0xf6,0xda,0xff,0x00,0x8c,0x25,0xd5,0x60,0xf1,0x46,
- 0xaf,0xe1,0xbf,0xf8,0x46,0xf5,0x7f,0x14,0x5d,0x7e,0xcf,0x1f,
- 0xf1,0x90,0xf6,0xb6,0xff,0x00,0xdb,0x1f,0x67,0xff,0x00,0x85,
- 0xb5,0xf0,0x93,0xcd,0xb5,0x96,0x39,0x2d,0xfd,0x07,0xfe,0x19,
- 0xbb,0xf6,0x07,0xff,0x00,0xa5,0x63,0x7f,0xf3,0xb4,0x5f,0x19,
- 0xff,0x00,0xf9,0x7b,0x47,0xed,0x23,0xff,0x00,0x26,0x0f,0xff,
- 0x00,0x07,0x39,0x7f,0xde,0x17,0x7f,0xf5,0x73,0xe8,0x55,0xf9,
- 0xf7,0x5f,0x1f,0xe2,0x3f,0x8a,0xf8,0xff,0x00,0xa3,0x8e,0x03,
- 0xc3,0x8c,0x27,0x03,0x70,0x0f,0x86,0x1e,0x22,0x78,0x59,0xe2,
- 0xaf,0x86,0x1e,0x19,0x78,0xeb,0xc0,0x1e,0x1b,0xf8,0xfd,0x85,
- 0xf1,0x3f,0x89,0xf1,0x1e,0x04,0xe1,0xfc,0x7c,0xf0,0xc3,0x81,
- 0x7c,0x7c,0xce,0xf8,0x1f,0x82,0x38,0xcb,0xc1,0x4f,0x16,0x3e,
- 0x8f,0x39,0x9e,0x61,0x92,0x54,0xcc,0xfc,0x56,0x6f,0x88,0xb2,
- 0xcc,0xdf,0x03,0x2e,0x03,0xc5,0xf1,0xe6,0x5d,0xc5,0x1e,0x29,
- 0x78,0x7b,0xe1,0xdf,0x85,0x39,0xef,0x8b,0x3e,0x26,0xe5,0xfc,
- 0x45,0xfd,0x1d,0xf4,0x11,0xfa,0x20,0xf1,0xcf,0xed,0x4a,0xe0,
- 0x6c,0xc3,0xc7,0x0f,0x0f,0xbc,0x67,0xe1,0xff,0x00,0xa2,0xef,
- 0x1c,0xe6,0x1c,0x3f,0xc0,0x5c,0x75,0xe2,0xed,0x2c,0xf3,0xc2,
- 0x5c,0x5f,0x8f,0x7c,0x35,0xe2,0x7f,0x12,0xf8,0xa7,0x83,0xcf,
- 0xb3,0x5c,0x3f,0x1b,0xe1,0xf2,0x6c,0x2f,0x8a,0x3e,0x09,0x62,
- 0x38,0x3b,0xc5,0x0c,0x46,0x23,0x22,0xce,0x5f,0x8c,0x1c,0x63,
- 0x86,0xcc,0xf3,0xac,0xa7,0xc7,0x0c,0xdb,0x15,0x90,0x78,0x89,
- 0x9d,0xf0,0x7f,0x0f,0x78,0xcd,0x5f,0xc6,0x6f,0x13,0xfc,0x74,
- 0xff,
- }},
- {VA_FOURCC_422H, {
- 0xf8,0x8b,0xc3,0x7e,0x24,0xf1,0xf7,0xec,0x71,0xe3,0xef,0xd9,
- 0x8f,0xc6,0x5e,0x0d,0xfd,0xa7,0x7f,0xe1,0x27,0xf0,0x3f,0x89,
- 0xff,0x00,0xe1,0x74,0xff,0x00,0xc3,0xae,0x3f,0xe0,0xa8,0xff,
- 0x00,0xf0,0xa5,0xb4,0x5d,0x17,0xfe,0x13,0x5f,0xec,0x5d,0x16,
- 0x7d,0x2b,0xf6,0xda,0xff,0x00,0x8c,0x25,0xd5,0x60,0xf1,0x46,
- 0xaf,0xe1,0xbf,0xf8,0x46,0xf5,0x7f,0x14,0x5d,0x7e,0xcf,0x1f,
- 0xf1,0x90,0xf6,0xb6,0xff,0x00,0xdb,0x1f,0x67,0xff,0x00,0x85,
- 0xb5,0xf0,0x93,0xcd,0xb5,0x96,0x39,0x2d,0xfd,0x07,0xfe,0x19,
- 0xbb,0xf6,0x07,0xff,0x00,0xa5,0x63,0x7f,0xf3,0xb4,0x5f,0x19,
- 0xff,0x00,0xf9,0x7b,0x5f,0x41,0xc2,0x19,0xf7,0xd1,0xb7,0xc1,
- 0x0c,0x57,0x17,0xfd,0x17,0x7e,0x9d,0x3f,0x48,0x4f,0xf8,0x94,
- 0xdc,0x77,0x80,0x7c,0x6b,0xc6,0x78,0x0f,0x06,0x73,0xff,0x00,
- 0xf8,0x84,0xfc,0x7b,0xe3,0xbf,0xfa,0xcf,0xc1,0xbc,0x6b,0xc6,
- 0xbc,0x4f,0xc4,0xbc,0x7f,0xe0,0xe7,0xf6,0x57,0x83,0xd4,0x73,
- 0x6a,0x39,0x2f,0xfc,0x41,0x1f,0x1b,0x9f,0x89,0x5c,0x61,0xff,
- 0x00,0x11,0x0b,0x8a,0xb8,0x83,0x39,0xcd,0x7c,0x4a,0xff,0x00,
- 0x88,0xff,0x00,0xfe,0xaf,0xe4,0xb3,0xc2,0x70,0x8f,0x85,0x59,
- 0x05,0x03,0xf1,0xef,0xa4,0xf7,0x8d,0xfc,0x07,0xe0,0x07,0x13,
- 0x61,0x7c,0x6f,0xe3,0x3c,0xcf,0xfb,0x3b,0xc3,0xaf,0xa5,0xbe,
- 0x6d,0xc5,0x3e,0x24,0xe0,0x31,0xbf,0x52,0xce,0x71,0x7f,0x50,
- 0xfa,0x49,0xe0,0x31,0x19,0x5e,0x3f,0xe9,0x65,0xc3,0x7f,0x56,
- 0xca,0xb2,0x9c,0xe7,0x3d,0xc5,0x7f,0xad,0xbc,0x51,0xc6,0x5c,
- 0x0b,0xf4,0xaa,0xfe,0xd8,0xad,0x94,0xf0,0xdf,0x01,0x64,0x3f,
- 0xf1,0x35,0x5f,0xf1,0x03,0x7c,0x35,0xc0,0x4f,0x2f,0xf0,0x37,
- 0x38,0x86,0x14,0xfd,0xa4,0x7f,0xe4,0xc1,0xff,0x00,0xe0,0xe7,
- 0x2f,0xfb,0xc2,0xef,0xfe,0xae,0x7d,0x0a,0xbf,0x3e,0xeb,0xf9,
- 0x7b,0xe9,0x7b,0xff,0x00,0x24,0xb7,0xd1,0x0b,0xfe,0xd0,0xb3,
- 0xe8,0x63,0xff,0x00,0xb0,0x57,0xf4,0x65,0x3f,0xdd,0xdf,0xf4,
- 0x61,0x7f,0xe5,0x1a,0x38,0xab,0xfe,0xcd,0x4f,0xd1,0x73,0xff,
- 0x00,0x54,0x1e,0x27,0x9f,0xff,
- }},
- {VA_FOURCC_422V, {
- 0xf8,0x8b,0xc3,0x7e,0x24,0xf1,0xf7,0xec,0x71,0xe3,0xef,0xd9,
- 0x8f,0xc6,0x5e,0x0d,0xfd,0xa7,0x7f,0xe1,0x27,0xf0,0x3f,0x89,
- 0xff,0x00,0xe1,0x74,0xff,0x00,0xc3,0xae,0x3f,0xe0,0xa8,0xff,
- 0x00,0xf0,0xa5,0xb4,0x5d,0x17,0xfe,0x13,0x5f,0xec,0x5d,0x16,
- 0x7d,0x2b,0xf6,0xda,0xff,0x00,0x8c,0x25,0xd5,0x60,0xf1,0x46,
- 0xaf,0xe1,0xbf,0xf8,0x46,0xf5,0x7f,0x14,0x5d,0x7e,0xcf,0x1f,
- 0xf1,0x90,0xf6,0xb6,0xff,0x00,0xdb,0x1f,0x67,0xff,0x00,0x85,
- 0xb5,0xf0,0x93,0xcd,0xb5,0x96,0x39,0x2d,0xfd,0x07,0xf6,0x91,
- 0xff,0x00,0x93,0x07,0xff,0x00,0x83,0x9c,0xbf,0xef,0x0b,0xbf,
- 0xfa,0xb9,0xf4,0x2a,0xfa,0x0c,0x87,0x81,0x70,0xb9,0x4f,0xd1,
- 0xb7,0xe8,0xf7,0xf4,0xd8,0xfa,0x2e,0x71,0x4f,0x1a,0xfd,0x1c,
- 0xf0,0x1f,0x4c,0xef,0xf8,0x8b,0x1f,0xdb,0xfe,0x0b,0xe3,0xeb,
- 0xf0,0x57,0x8c,0x5c,0x1a,0xff,0x00,0xe2,0x5d,0x78,0xf6,0xb7,
- 0x84,0xb9,0x57,0xfc,0x46,0x3e,0x1c,0xe2,0x5e,0x04,0xc8,0xfc,
- 0x11,0xfa,0x44,0x5a,0xb5,0x4e,0x20,0xe2,0xbf,0x0f,0x7f,0xd7,
- 0x0f,0x00,0xb2,0x5f,0xf8,0x84,0x99,0xae,0x79,0x0c,0x7f,0x0f,
- 0xff,0x00,0x69,0x71,0x76,0x59,0x43,0x8d,0x2b,0x7e,0x3d,0xe0,
- 0x87,0x8f,0xfc,0x33,0xf4,0xdc,0xe0,0x3c,0xb3,0xc6,0xbf,0x1b,
- 0xfc,0x3a,0xcd,0xb0,0xbe,0x22,0xf1,0x1f,0xd7,0x7e,0xbb,0xe3,
- 0x37,0x86,0xdc,0x79,0x87,0xe0,0xef,0xa4,0x9c,0xbf,0xb1,0xf3,
- 0x9c,0xdb,0x84,0xf0,0xdf,0xeb,0x27,0x8b,0x58,0xfe,0x09,0xe2,
- 0x6e,0x17,0xf1,0xc6,0xd9,0x17,0x09,0xe5,0x3c,0x2b,0x93,0xff,
- 0x00,0xc4,0xd5,0x78,0x4f,0xf4,0x84,0xff,0x00,0x88,0x67,0xc0,
- 0x52,0xc7,0xf0,0xd7,0x81,0xbf,0xf1,0x09,0xf3,0x0c,0x54,0x38,
- 0x97,0x0e,0x7f,0xc3,0x37,0x7e,0xc0,0xff,0x00,0xf4,0xac,0x6f,
- 0xfe,0x76,0x8b,0xe3,0x3f,0xff,0x00,0x2f,0x6b,0xf3,0xee,0xbf,
- 0x97,0xbf,0xe2,0x7a,0x78,0xa7,0xfe,0x91,0x6b,0xe8,0x59,0xff,
- 0x00,0x86,0x4f,0xa6,0x9f,0xff,0x00,0x57,0x59,0xfe,0xee,0xff,
- 0x00,0xc5,0x01,0x7e,0x92,0xff,0x00,0xf4,0xb1,0x3f,0x0a,0x7f,
- 0xf1,0x83,0xf3,0xff,0x00,0xfe,0xad,0x73,0xff,
- }},
- {VA_FOURCC_411P, {
- 0xf8,0x8b,0xc3,0x7e,0x24,0xf1,0xf7,0xec,0x71,0xe3,0xef,0xd9,
- 0x8b,0xc6,0x5e,0x0d,0xfd,0xa7,0x7f,0xe1,0x27,0xf0,0x3f,0x89,
- 0xbf,0xe1,0x74,0xff,0x00,0xc3,0xae,0x3f,0xe0,0xa8,0xff,0x00,
- 0xf0,0xa5,0xb4,0x5d,0x17,0xfe,0x13,0x6f,0xec,0x5d,0x16,0xe3,
- 0x4a,0xfd,0xb6,0xbf,0xe3,0x09,0x75,0x5b,0x7f,0x14,0x6a,0xfe,
- 0x1c,0xff,0x00,0x84,0x6f,0x57,0xf1,0x45,0xd7,0xec,0xf1,0xff,
- 0x00,0x19,0x0f,0x6b,0x6f,0xfd,0xb1,0xf6,0x7f,0xf8,0x5b,0x5f,
- 0x09,0x7c,0xdb,0x59,0xa3,0x92,0xdf,0xd0,0x7f,0xe1,0x9b,0xbf,
- 0x60,0x7f,0xfa,0x56,0x37,0xff,0x00,0x3b,0x45,0xf1,0x9f,0xff,
- 0x00,0x97,0xb4,0x51,0x5f,0x79,0xc3,0xbc,0x6f,0xfb,0x3c,0xf8,
- 0x5b,0x25,0xcb,0xf8,0x23,0xe9,0x37,0xf4,0xf2,0xff,0x00,0x89,
- 0x73,0xf1,0xaf,0xc3,0x8a,0x52,0xf0,0xb7,0x8b,0x7c,0x1b,0xff,
- 0x00,0x89,0x5e,0xf1,0xbf,0xc5,0xef,0xf5,0x47,0x03,0xe1,0x75,
- 0x5a,0x9e,0x1e,0xf0,0x5d,0x5f,0xf8,0x88,0x7e,0x1f,0xe1,0x31,
- 0x1c,0x27,0x9f,0xff,0x00,0xac,0xdc,0x07,0xc3,0x5c,0x31,0xc5,
- 0xfc,0x99,0x6e,0x2f,0x1d,0x5b,0x25,0xfe,0xdf,0xfe,0xc0,0xcd,
- 0x73,0x0c,0xc3,0x39,0xca,0xb3,0x0c,0x6d,0x7f,0xe4,0xff,0x00,
- 0x1a,0x3e,0x99,0x9e,0x09,0x78,0x1b,0xe2,0x87,0x17,0xf8,0x79,
- 0xc7,0x9c,0x47,0xfd,0x91,0x9f,0xd0,0xcc,0x28,0x71,0x85,0x1c,
- 0x9b,0xfb,0x23,0x8b,0x73,0x0f,0xec,0x5e,0x18,0xf1,0x43,0x2f,
- 0xc1,0xf8,0xa1,0xc0,0xb9,0x27,0xf6,0x8e,0x4d,0xc2,0xd9,0xb6,
- 0x0b,0x32,0xfe,0xc7,0xe0,0x8e,0x31,0xe1,0xdc,0xb7,0xfb,0x4a,
- 0x78,0xd7,0x98,0x66,0x1f,0x55,0xfa,0xe6,0x71,0x86,0xcb,0xf3,
- 0x7a,0xf8,0xec,0xbf,0x0a,0x7e,0xd2,0x3f,0xf2,0x60,0xff,0x00,
- 0xf0,0x73,0x97,0xfd,0xe1,0x77,0xff,0x00,0x57,0x3e,0x85,0x5f,
- 0x9f,0x74,0x51,0x5f,0xe6,0xbf,0xd2,0x37,0xfe,0x4f,0x67,0x88,
- 0x3f,0xf6,0x36,0xc3,0x7f,0xea,0xab,0x2f,0x3f,0xed,0xab,0xf6,
- 0x30,0xff,0x00,0xca,0xb0,0x7e,0x88,0x3f,0xf6,0x6f,0xf3,0xaf,
- 0xfd,0x6f,0xf8,0xbc,0xff,
- }},
- {VA_FOURCC_444P, {
- 0xf8,0x8b,0xc3,0x7e,0x24,0xf1,0xf7,0xec,0x71,0xe3,0xef,0xd9,
- 0x8f,0xc6,0x5e,0x0d,0xfd,0xa7,0x7f,0xe1,0x27,0xf0,0x3f,0x89,
- 0xff,0x00,0xe1,0x74,0xff,0x00,0xc3,0xae,0x3f,0xe0,0xa8,0xff,
- 0x00,0xf0,0xa5,0xb4,0x5d,0x17,0xfe,0x13,0x5f,0xec,0x5d,0x16,
- 0x7d,0x2b,0xf6,0xda,0xff,0x00,0x8c,0x25,0xd5,0x60,0xf1,0x46,
- 0xaf,0xe1,0xbf,0xf8,0x46,0xf5,0x7f,0x14,0x5d,0x7e,0xcf,0x1f,
- 0xf1,0x90,0xf6,0xb6,0xff,0x00,0xdb,0x1f,0x67,0xff,0x00,0x85,
- 0xb5,0xf0,0x93,0xcd,0xb5,0x96,0x39,0x2d,0xfc,0x9c,0xd3,0x2b,
- 0xf1,0x8b,0xf6,0x60,0x78,0xc5,0xe2,0xc6,0x47,0x9e,0x78,0x4f,
- 0xfe,0xbe,0xf8,0x47,0xc7,0xbf,0xea,0x27,0xfc,0x4d,0xbf,0xd1,
- 0x23,0xfd,0x7b,0xe1,0x7e,0x16,0xff,0x00,0x88,0xa3,0xfe,0xab,
- 0x70,0xbd,0x3c,0x67,0x80,0x9f,0xf1,0xbe,0xf0,0x75,0x38,0xff,
- 0x00,0x89,0xb8,0x27,0xfd,0x49,0xe2,0x6e,0x3f,0xa3,0xe2,0x67,
- 0xfc,0x6b,0x3a,0xd8,0x3f,0xf5,0x93,0xea,0x7f,0xea,0x67,0x19,
- 0xfd,0x63,0x2f,0xc4,0x4a,0x38,0x2f,0xbe,0xf1,0x2b,0xc3,0x5e,
- 0x28,0xfa,0x6d,0x71,0x46,0x37,0xe9,0x11,0xf4,0x77,0xc1,0x7f,
- 0x6c,0xfe,0xd0,0xfc,0xe7,0xea,0xdf,0xf1,0x10,0xbc,0x3d,0xfa,
- 0xce,0x5d,0x97,0x7f,0xc5,0x46,0xff,0x00,0xb3,0xb2,0xfc,0x07,
- 0x03,0xf0,0x9f,0xfc,0x65,0x9c,0x71,0x8f,0xe1,0x4f,0x03,0xfe,
- 0x88,0x5f,0xf1,0x28,0x5e,0x07,0x70,0xa6,0x77,0x9d,0xff,0x00,
- 0xc2,0x26,0x49,0x4b,0xfe,0x23,0xf7,0xb2,0xfe,0xcd,0xcc,0xb9,
- 0xf8,0xbe,0x78,0x4c,0x5e,0x27,0xd0,0x7f,0xe1,0x9b,0xbf,0x60,
- 0x7f,0xfa,0x56,0x37,0xff,0x00,0x3b,0x45,0xf1,0x9f,0xff,0x00,
- 0x97,0xb5,0xfb,0x67,0xfc,0x45,0x1f,0xd8,0xf3,0xff,0x00,0x4b,
- 0x60,0xff,0x00,0xcf,0x14,0xfa,0x51,0x7f,0xf3,0xbc,0xff,0x00,
- 0x30,0x7f,0xe2,0xa5,0x3f,0x46,0x0f,0xfa,0x2c,0xff,0x00,0xf3,
- 0x5d,0xf1,0x0b,0xff,0x00,0xa0,0x40,0xfd,0xa4,0x7f,0xe4,0xc1,
- 0xff,0x00,0xe0,0xe7,0x2f,0xfb,0xc2,0xef,0xfe,0xae,0x7d,0x0a,
- 0x8f,0x0b,0xbf,0xe5,0x4f,0x3f,0xb2,0x7f,0xfe,0xf7,0xaf,0xff,
- 0x00,0x62,0x8b,0x30,0x0f,0xd9,0xad,0xff,0x00,0x28,0xc1,0xc1,
- 0x9f,0xf7,0x71,0x7f,0xeb,0xc2,0xe3,0xb3,0xf3,0xee,0xbf,0xc5,
- 0x13,0xff,0x00,0x4f,0x83,0xff,
- }},
- });
-
- /**
- * Test Pattern 3
- *
- * R = red
- * G = green
- * B = blue
- * W = white
- * C = cyan
- * M = magenta
- * Y = yellow
- * K = black
- * -------------------
- * K R B Y G C M K K W
- * R K R B Y G C M W K
- * B R K R B Y G C M K
- * Y B R K R B Y G C M
- * G Y B R K R B Y G C
- * C G Y B R K R B Y G
- * M C G Y B R K R B Y
- * K M C G Y B R K R K
- * K W M C G Y B R K R
- * W K K M C G Y B R K
- * -------------------
- *
- */
- template<> const bool TestPatternData<3>::m_valid =
- TestPatternData<3>::initialize<10, 10>({
- 0x00,0x4c,0x1d,0xe2,0x96,0xb3,0x69,0x00,0x00,0xfe,
- 0x4c,0x00,0x4c,0x1d,0xe2,0x96,0xb3,0x69,0xff,0x00,
- 0x1d,0x4c,0x00,0x4c,0x1d,0xe3,0x96,0xb3,0x69,0x00,
- 0xe2,0x1d,0x4c,0x00,0x4c,0x1d,0xe2,0x96,0xb3,0x68,
- 0x96,0xe2,0x1d,0x4c,0x00,0x4c,0x1d,0xe2,0x96,0xb3,
- 0xb3,0x96,0xe3,0x1d,0x4c,0x00,0x4c,0x1d,0xe2,0x96,
- 0x69,0xb3,0x96,0xe2,0x1d,0x4c,0x00,0x4c,0x1d,0xe2,
- 0x00,0x69,0xb3,0x96,0xe2,0x1d,0x4c,0x00,0x4c,0x1d,
- 0x00,0xff,0x69,0xb3,0x96,0xe2,0x1d,0x4c,0x00,0x4c,
- 0xff,0x00,0x00,0x68,0xb3,0x96,0xe2,0x1d,0x4c,0x00,
-
- 0x80,0x55,0xff,0x00,0x2c,0xab,0xd4,0x80,0x80,0x80,
- 0x55,0x80,0x54,0xff,0x00,0x2c,0xab,0xd4,0x80,0x80,
- 0xff,0x55,0x80,0x55,0xff,0x00,0x2c,0xab,0xd4,0x80,
- 0x00,0xff,0x55,0x80,0x55,0xff,0x00,0x2c,0xab,0xd4,
- 0x2c,0x00,0xff,0x55,0x80,0x55,0xff,0x00,0x2c,0xab,
- 0xab,0x2c,0x00,0xff,0x55,0x80,0x55,0xff,0x00,0x2c,
- 0xd4,0xab,0x2c,0x00,0xff,0x54,0x80,0x55,0xff,0x00,
- 0x80,0xd4,0xab,0x2c,0x00,0xff,0x55,0x80,0x55,0xff,
- 0x80,0x80,0xd4,0xab,0x2c,0x00,0xff,0x55,0x81,0x54,
- 0x80,0x80,0x80,0xd4,0xab,0x2c,0x00,0xff,0x55,0x80,
-
- 0x80,0xff,0x6b,0x95,0x15,0x00,0xeb,0x80,0x80,0x80,
- 0xff,0x80,0xff,0x6b,0x95,0x15,0x00,0xeb,0x80,0x80,
- 0x6b,0xff,0x80,0xff,0x6b,0x95,0x15,0x00,0xeb,0x80,
- 0x95,0x6b,0xff,0x80,0xff,0x6b,0x95,0x15,0x00,0xeb,
- 0x15,0x95,0x6b,0xff,0x80,0xff,0x6b,0x95,0x16,0x00,
- 0x00,0x15,0x95,0x6b,0xff,0x80,0xff,0x6b,0x95,0x15,
- 0xeb,0x00,0x15,0x95,0x6b,0xff,0x80,0xff,0x6b,0x95,
- 0x80,0xeb,0x00,0x15,0x95,0x6b,0xff,0x80,0xff,0x6b,
- 0x80,0x80,0xeb,0x00,0x15,0x95,0x6b,0xff,0x7f,0xff,
- 0x80,0x80,0x80,0xeb,0x00,0x14,0x95,0x6b,0xff,0x80,
- },{
- {VA_FOURCC_IMC3, {
- 0xf8,0x6f,0xf7,0x5f,0xb0,0x2c,0x5f,0xf2,0xc3,0xf6,0xa8,0xff,
- 0x00,0x82,0x4e,0x7e,0xd5,0x10,0x7f,0xd4,0x03,0xc4,0x96,0x9e,
- 0x15,0xb4,0xf1,0x26,0x81,0xff,0x00,0x72,0xe7,0x83,0xac,0x3c,
- 0x5f,0x61,0xe0,0xef,0x0e,0x7f,0xd4,0x91,0xf0,0xe7,0xe3,0x27,
- 0xc3,0x9f,0x04,0x7f,0xcd,0x2b,0x83,0xe1,0x5f,0xfc,0x6b,0x77,
- 0xe9,0xdb,0xdf,0x87,0x16,0xba,0xed,0xed,0xde,0xb7,0xf0,0xeb,
- 0xfe,0x0e,0x06,0xfd,0xa3,0x7e,0x0b,0xfc,0x3e,0xd6,0x2e,0xae,
- 0x35,0x5f,0x02,0xfc,0x1d,0xf8,0x73,0xff,0x00,0x05,0x0e,0xf8,
- 0x3d,0xf0,0x03,0xe1,0xef,0xc2,0x7f,0x06,0xea,0x12,0xbd,0xdf,
- 0x86,0x3e,0x1a,0x78,0x13,0xe0,0x3c,0x9f,0x18,0xbe,0x10,0x49,
- 0xf0,0x4f,0xc1,0xbe,0x04,0xd1,0x26,0xb1,0xf0,0xb7,0x86,0x3e,
- 0x11,0xc9,0xf0,0x9b,0xe1,0x7b,0xfc,0x37,0xd1,0x34,0xab,0x1f,
- 0x06,0xb7,0xc3,0xbf,0x04,0xb6,0x8c,0x7c,0x35,0xa6,0x1f,0x0e,
- 0x6f,0x6f,0x35,0xcb,0x7f,0xf8,0x38,0x1f,0xe1,0xd6,0xb7,0x77,
- 0x75,0xac,0x7c,0x3e,0xf8,0x2f,0xfb,0x47,0x7f,0xc1,0x43,0xfe,
- 0x1c,0xfc,0x1d,0xf0,0x2e,0xab,0x71,0x2e,0xa1,0xe0,0xdf,0x84,
- 0xff,0x00,0x0f,0x7f,0x67,0xff,0x00,0x83,0xff,0x00,0x18,0xa4,
- 0xf8,0x0f,0xe0,0x4f,0x86,0x9e,0x18,0xbb,0x79,0xb4,0x4f,0x02,
- 0x78,0x37,0xe0,0x9c,0x9f,0x08,0x3e,0x13,0x49,0xf0,0x8f,0xc2,
- 0xfe,0x16,0xb1,0xd2,0xb4,0x4f,0x86,0xef,0xf0,0xbb,0xe1,0xdb,
- 0x78,0x36,0xc7,0x46,0x6f,0x04,0xf8,0x68,0xe9,0x9f,0xc6,0x5f,
- 0xc4,0xff,0x00,0x89,0xff,0x00,0x12,0xfc,0x35,0xf1,0x2f,0xe2,
- 0x1f,0x87,0x7c,0x39,0xf1,0x0f,0xc7,0x3a,0x07,0x87,0xf4,0x0f,
- 0x1c,0xf8,0xb7,0x45,0xd0,0xb4,0x2d,0x17,0xc5,0xba,0xfe,0x95,
- 0xa3,0x68,0xba,0x36,0x95,0xaf,0xea,0x16,0x3a,0x5e,0x93,0xa4,
- 0xe9,0x76,0x3a,0x84,0x16,0x5a,0x6e,0x99,0xa6,0xd8,0xc1,0x05,
- 0x9d,0x85,0x85,0x9c,0x10,0xda,0xd9,0xda,0xc3,0x15,0xbd,0xbc,
- 0x51,0xc3,0x1a,0x22,0xfc,0xb6,0x75,0xc4,0x99,0x8f,0x86,0xf9,
- 0x9e,0x73,0x97,0xe5,0x98,0xaa,0x98,0xca,0x54,0xf3,0x7c,0xa3,
- 0x09,0x56,0x38,0xdc,0xab,0x83,0x31,0xb8,0x6c,0xc3,0xeb,0xfe,
- 0x17,0xf8,0x5d,0xc7,0x59,0x66,0x6d,0x8e,0xcb,0x33,0x8e,0x10,
- 0xcd,0xf2,0x9c,0x17,0x11,0xe0,0x38,0x6f,0x8e,0xf2,0x3e,0x0b,
- 0xcc,0xf3,0x4e,0x13,0xc0,0xf0,0xb6,0x17,0x3e,0xa7,0xc2,0x94,
- 0xaa,0x57,0xca,0xf0,0x9c,0x1f,0x80,0xf0,0xc7,0xc3,0xef,0x09,
- 0xff,0x00,0x64,0xf0,0xa3,0xc1,0xbe,0x25,0xfa,0x4e,0x55,0xf1,
- 0x17,0x1d,0x97,0xf8,0xc1,0xc4,0x5e,0x10,0x78,0x8d,0xe1,0xdf,
- 0x17,0x70,0xf7,0x08,0xf1,0xcf,0x1f,0xf0,0xdf,0x00,0x78,0x33,
- 0xc6,0xf4,0xfc,0x6a,0xc3,0x66,0x7e,0x1a,0x70,0x3f,0x19,0x70,
- 0xcf,0x15,0x71,0x8f,0x04,0x78,0xa7,0xe1,0xdf,0x19,0x70,0x76,
- 0x43,0xe2,0x4e,0x53,0xc3,0xfc,0x49,0x95,0xf0,0x8f,0x16,0x71,
- 0xc7,0x04,0x65,0x9c,0x3d,0x8a,0xf1,0x02,0x3c,0x37,0x97,0x63,
- 0x73,0x0c,0x0e,0x55,0x93,0xe0,0xf8,0x77,0x85,0x78,0x6b,0xff,
- }},
- {VA_FOURCC_422H, {
- 0xf8,0x6f,0xf7,0x5f,0xb0,0x2c,0x5f,0xf2,0xc3,0xf6,0xa8,0xff,
- 0x00,0x82,0x4e,0x7e,0xd5,0x10,0x7f,0xd4,0x03,0xc4,0x96,0x9e,
- 0x15,0xb4,0xf1,0x26,0x81,0xff,0x00,0x72,0xe7,0x83,0xac,0x3c,
- 0x5f,0x61,0xe0,0xef,0x0e,0x7f,0xd4,0x91,0xf0,0xe7,0xe3,0x27,
- 0xc3,0x9f,0x04,0x7f,0xcd,0x2b,0x83,0xe1,0x5f,0xfc,0x6b,0x77,
- 0xe9,0xdb,0xdf,0x87,0x16,0xba,0xed,0xed,0xde,0xb7,0xf0,0xeb,
- 0xfe,0x0e,0x06,0xfd,0xa3,0x7e,0x0b,0xfc,0x3e,0xd6,0x2e,0xae,
- 0x35,0x5f,0x02,0xfc,0x1d,0xf8,0x73,0xff,0x00,0x05,0x0e,0xf8,
- 0x3d,0xf0,0x03,0xe1,0xef,0xc2,0x7f,0x06,0xea,0x12,0xbd,0xdf,
- 0x86,0x3e,0x1a,0x78,0x13,0xe0,0x3c,0x9f,0x18,0xbe,0x10,0x49,
- 0xf0,0x4f,0xc1,0xbe,0x04,0xd1,0x26,0xb1,0xf0,0xb7,0x86,0x3e,
- 0x11,0xc9,0xf0,0x9b,0xe1,0x7b,0xfc,0x37,0xd1,0x34,0xab,0x1f,
- 0x06,0xb7,0xc3,0xbf,0x04,0xb6,0x8c,0x7c,0x35,0xa6,0x73,0x70,
- 0x9e,0x7d,0x9a,0x70,0xfc,0xf3,0x5c,0xb7,0x3b,0xfa,0x2c,0xfd,
- 0x2c,0x7c,0x7b,0xc2,0xe2,0x31,0xb5,0x6a,0x67,0x7e,0x1e,0xfd,
- 0x0b,0x7c,0x3f,0xcf,0xbc,0x62,0xe3,0x4f,0x07,0xbc,0x47,0xe1,
- 0x7e,0x5f,0x0d,0xf8,0xc1,0xe6,0x59,0x65,0x3c,0x8b,0x88,0x33,
- 0x7c,0x67,0x83,0xb9,0xfd,0x3e,0x09,0xca,0xb8,0x33,0x82,0xf8,
- 0x9f,0x0d,0xc3,0x58,0x2c,0x06,0x6d,0x9a,0xf8,0x4d,0x8c,0xf1,
- 0x83,0x34,0xcc,0x9e,0x27,0xe9,0x23,0x93,0xcf,0x36,0xf2,0x3c,
- 0x57,0xe3,0xde,0x28,0xc0,0x61,0x32,0x4f,0xa4,0x8f,0x00,0x7d,
- 0x1a,0xb1,0x1e,0x30,0xe4,0x9e,0x3b,0xd6,0xc4,0xe0,0x3c,0x6d,
- 0xf0,0x8b,0x2f,0xfa,0x48,0xf8,0x5f,0xf4,0x68,0xcd,0x7c,0x0f,
- 0xfa,0x56,0x78,0x61,0x4a,0x87,0x87,0xbe,0x29,0x4f,0x1d,0xc4,
- 0xfc,0x4d,0xe1,0xbf,0x8b,0x1c,0x25,0x9f,0xe7,0x1c,0x4f,0x84,
- 0xe1,0xac,0xaf,0x84,0xf8,0xbb,0x21,0xc4,0xe2,0x71,0x1c,0x41,
- 0xf5,0x9f,0x0a,0xb8,0x77,0x34,0xe1,0xfc,0xc3,0x0f,0x96,0x50,
- 0xe2,0x88,0x66,0x87,0xc3,0x9b,0xdb,0xcd,0x72,0xdf,0xfe,0x0e,
- 0x07,0xf8,0x75,0xad,0xdd,0xdd,0x6b,0x1f,0x0f,0xbe,0x0b,0xfe,
- 0xd1,0xdf,0xf0,0x50,0xff,0x00,0x87,0x3f,0x07,0x7c,0x0b,0xaa,
- 0xdc,0x4b,0xa8,0x78,0x37,0xe1,0x3f,0xc3,0xdf,0xd9,0xff,0x00,
- 0xe0,0xff,0x00,0xc6,0x29,0x3e,0x03,0xf8,0x13,0xe1,0xa7,0x86,
- 0x2e,0xde,0x6d,0x13,0xc0,0x9e,0x0d,0xf8,0x27,0x27,0xc2,0x0f,
- 0x84,0xd2,0x7c,0x23,0xf0,0xbf,0x85,0xac,0x74,0xad,0x13,0xe1,
- 0xbb,0xfc,0x2e,0xf8,0x76,0xde,0x0d,0xb1,0xd1,0x9b,0xc1,0x3e,
- 0x1a,0x3a,0x67,0xf1,0x97,0xf1,0x3f,0xe2,0x7f,0xc4,0xbf,0x0d,
- 0x7c,0x4b,0xf8,0x87,0xe1,0xdf,0x0e,0x7c,0x43,0xf1,0xce,0x81,
- 0xe1,0xfd,0x03,0xc7,0x3e,0x2d,0xd1,0x74,0x2d,0x0b,0x45,0xf1,
- 0x6e,0xbf,0xa5,0x68,0xda,0x2e,0x8d,0xa5,0x6b,0xfa,0x85,0x8e,
- 0x97,0xa4,0xe9,0x3a,0x5d,0x8e,0xa1,0x05,0x96,0x9b,0xa6,0x69,
- 0xb6,0x30,0x41,0x67,0x61,0x61,0x67,0x04,0x36,0xb6,0x76,0xb0,
- 0xc5,0x6f,0x6f,0x14,0x70,0xc6,0x88,0xbc,0x9c,0x6b,0x92,0xe4,
- 0xf9,0xa7,0x1c,0x62,0x30,0xd9,0x9e,0x53,0x96,0x66,0x38,0x6c,
- 0x56,0x4f,0xc2,0xd9,0xd6,0x2b,0x0f,0x8e,0xc0,0x61,0x71,0x74,
- 0x31,0x39,0xc4,0x3c,0x21,0xf0,0x57,0x87,0xe1,0x9b,0x57,0xa5,
- 0x88,0xa5,0x52,0x9d,0x6c,0xce,0x19,0x0e,0x4d,0x93,0xe4,0x90,
- 0xc7,0xd4,0x8c,0xb1,0x51,0xca,0x32,0xac,0xb7,0x2d,0x55,0x56,
- 0x0b,0x03,0x85,0xa3,0x4b,0xf4,0xdf,0x06,0xbc,0x4d,0xf1,0x27,
- 0xc3,0x5c,0x6f,0xd2,0xfa,0xa7,0x87,0x3e,0x21,0x71,0xc7,0x00,
- 0x54,0xc1,0xf8,0xeb,0xf4,0x65,0xc0,0x61,0x27,0xc1,0x5c,0x59,
- 0x9f,0x70,0xac,0xf0,0xb8,0x1e,0x25,0xfa,0x0c,0xf8,0x3f,0xc4,
- 0xdc,0x47,0x82,0xc3,0xcb,0x22,0xc7,0xe0,0x25,0x43,0x09,0x9f,
- 0xf1,0x25,0x38,0x71,0x06,0x77,0x86,0xa4,0xe3,0x47,0x35,0xcf,
- 0x21,0x0c,0xdb,0x1d,0x0a,0xf8,0xf8,0xac,0x42,0xff,
- }},
- {VA_FOURCC_422V, {
- 0xf8,0x6f,0xf7,0x5f,0xb0,0x2c,0x5f,0xf2,0xc3,0xf6,0xa8,0xff,
- 0x00,0x82,0x4e,0x7e,0xd5,0x10,0x7f,0xd4,0x03,0xc4,0x96,0x9e,
- 0x15,0xb4,0xf1,0x26,0x81,0xff,0x00,0x72,0xe7,0x83,0xac,0x3c,
- 0x5f,0x61,0xe0,0xef,0x0e,0x7f,0xd4,0x91,0xf0,0xe7,0xe3,0x27,
- 0xc3,0x9f,0x04,0x7f,0xcd,0x2b,0x83,0xe1,0x5f,0xfc,0x6b,0x77,
- 0xe9,0xdf,0x87,0x37,0xb7,0x9a,0xe5,0xbf,0xfc,0x1c,0x0f,0xf0,
- 0xeb,0x5b,0xbb,0xba,0xd6,0x3e,0x1f,0x7c,0x17,0xfd,0xa3,0xbf,
- 0xe0,0xa1,0xff,0x00,0x0e,0x7e,0x0e,0xf8,0x17,0x55,0xb8,0x97,
- 0x50,0xf0,0x6f,0xc2,0x7f,0x87,0xbf,0xb3,0xff,0x00,0xc1,0xff,
- 0x00,0x8c,0x52,0x7c,0x07,0xf0,0x27,0xc3,0x4f,0x0c,0x5d,0xbc,
- 0xda,0x27,0x81,0x3c,0x1b,0xf0,0x4e,0x4f,0x84,0x1f,0x09,0xa4,
- 0xf8,0x47,0xe1,0x7f,0x0b,0x58,0xe9,0x5a,0x27,0xc3,0x77,0xf8,
- 0x5d,0xf0,0xed,0xbc,0x1b,0x63,0xa3,0x37,0x82,0x7c,0x34,0x74,
- 0xce,0x0e,0x29,0xe1,0xcf,0xf5,0x4f,0x8a,0xbe,0x8b,0xf3,0xc1,
- 0x66,0x99,0x86,0x2b,0xfe,0x23,0xaf,0x1e,0x71,0xb7,0x86,0x1e,
- 0x1f,0xe7,0xde,0xd3,0xfd,0x59,0xf1,0x03,0xc1,0xff,0x00,0xf5,
- 0x7b,0x28,0xcd,0xf8,0xdf,0x88,0x17,0xfa,0xe7,0xe1,0xcb,0xe0,
- 0x6f,0xf5,0x83,0x81,0x33,0xff,0x00,0xec,0x4c,0x06,0x59,0xff,
- 0x00,0x10,0xfb,0x83,0x72,0x6f,0x09,0x7f,0xd6,0x29,0x52,0xfa,
- 0xf7,0x8e,0xbc,0x4f,0xe3,0xc7,0xb6,0xc6,0x60,0xf1,0x77,0x98,
- 0x71,0xef,0xfa,0xc9,0xe3,0x27,0xd1,0xcf,0xe8,0xfb,0xe3,0xee,
- 0x53,0x1f,0x1b,0xff,0x00,0xe2,0x2c,0xf0,0xbf,0x1b,0xf1,0x3f,
- 0x84,0xde,0x3c,0x7d,0x77,0xfe,0x21,0x5f,0xd2,0x63,0xc1,0x0f,
- 0xf5,0x37,0x39,0xc9,0xfc,0x30,0x55,0xbf,0xe2,0x2c,0xf8,0x6b,
- 0x84,0xc9,0x3f,0xd6,0x9e,0x28,0xcc,0x7f,0xd6,0x2c,0xfb,0x3a,
- 0xff,0x00,0x5a,0x38,0x57,0x87,0x7c,0x28,0xfa,0xac,0x33,0x0f,
- 0xec,0xaa,0x99,0x46,0x37,0x92,0xb6,0x63,0x89,0x2f,0x7e,0x1c,
- 0x5a,0xeb,0xb7,0xb7,0x7a,0xdf,0xc3,0xaf,0xf8,0x38,0x1b,0xf6,
- 0x8d,0xf8,0x2f,0xf0,0xfb,0x58,0xba,0xb8,0xd5,0x7c,0x0b,0xf0,
- 0x77,0xe1,0xcf,0xfc,0x14,0x3b,0xe0,0xf7,0xc0,0x0f,0x87,0xbf,
- 0x09,0xfc,0x1b,0xa8,0x4a,0xf7,0x7e,0x18,0xf8,0x69,0xe0,0x4f,
- 0x80,0xf2,0x7c,0x62,0xf8,0x41,0x27,0xc1,0x3f,0x06,0xf8,0x13,
- 0x44,0x9a,0xc7,0xc2,0xde,0x18,0xf8,0x47,0x27,0xc2,0x6f,0x85,
- 0xef,0xf0,0xdf,0x44,0xd2,0xac,0x7c,0x1a,0xdf,0x0e,0xfc,0x12,
- 0xda,0x31,0xf0,0xd6,0x99,0xfc,0x65,0xfc,0x4f,0xf8,0x9f,0xf1,
- 0x2f,0xc3,0x5f,0x12,0xfe,0x21,0xf8,0x77,0xc3,0x9f,0x10,0xfc,
- 0x73,0xa0,0x78,0x7f,0x40,0xf1,0xcf,0x8b,0x74,0x5d,0x0b,0x42,
- 0xd1,0x7c,0x5b,0xaf,0xe9,0x5a,0x36,0x8b,0xa3,0x69,0x5a,0xfe,
- 0xa1,0x63,0xa5,0xe9,0x3a,0x4e,0x97,0x63,0xa8,0x41,0x65,0xa6,
- 0xe9,0x9a,0x6d,0x8c,0x10,0x59,0xd8,0x58,0x59,0xc1,0x0d,0xad,
- 0x9d,0xac,0x31,0x5b,0xdb,0xc5,0x1c,0x31,0xa2,0x2f,0xc6,0xd3,
- 0xf1,0xab,0x88,0xa9,0x53,0x85,0x26,0xb0,0xd8,0xe7,0x4a,0x11,
- 0xa6,0xf1,0xb9,0x97,0x08,0x78,0x32,0xb3,0x1c,0x63,0x84,0x54,
- 0x7e,0xb5,0x98,0x2c,0x8f,0xc2,0x1c,0x83,0x24,0x58,0xdc,0x45,
- 0xbd,0xae,0x29,0x64,0xf9,0x16,0x4b,0x95,0x2a,0xf3,0xa9,0xfd,
- 0x9f,0x94,0xe5,0xd8,0x4f,0x63,0x83,0xa3,0xfd,0x8b,0x8b,0xfd,
- 0x9f,0x3e,0x25,0x7d,0x6f,0x15,0xfd,0x8d,0xf4,0xd5,0xf1,0x17,
- 0x29,0xc9,0xfe,0xb1,0x5b,0xfb,0x2b,0x2a,0xaf,0xf4,0x74,0xfa,
- 0x1a,0x67,0xd5,0xf2,0xcc,0xb7,0xda,0x4b,0xea,0x39,0x7d,0x6c,
- 0xf3,0x3a,0xf0,0x0b,0x17,0x9c,0xe7,0x35,0x70,0x58,0x5f,0x65,
- 0x86,0xa9,0x9a,0xe6,0xd8,0xbc,0x56,0x67,0x98,0xce,0x9b,0xc6,
- 0x63,0xf1,0x15,0xb1,0x55,0xaa,0xd4,0x97,0xff,
- }},
- {VA_FOURCC_411P, {
- 0xf8,0x6f,0xf7,0x5f,0xb0,0x2c,0x5f,0xf2,0xc3,0xf6,0xa8,0xff,
- 0x00,0x82,0x4e,0x7e,0xd5,0x10,0x7f,0xd4,0x03,0xc4,0x96,0x9e,
- 0x15,0xb4,0xf1,0x26,0x81,0xff,0x00,0x72,0xe7,0x83,0xac,0x3c,
- 0x5f,0x61,0xe0,0xef,0x0e,0x7f,0xd4,0x91,0xf0,0xe7,0xe3,0x27,
- 0xc3,0x9f,0x04,0x7f,0xcd,0x2b,0x83,0xe1,0x5f,0xfc,0x6b,0x77,
- 0xe9,0xdb,0xdf,0x87,0x16,0xba,0xed,0xed,0xde,0xb7,0xf0,0xeb,
- 0xfe,0x0e,0x06,0xfd,0xa3,0x7e,0x0b,0xfc,0x3e,0xd6,0x2e,0xae,
- 0x35,0x5f,0x02,0xfc,0x1d,0xf8,0x73,0xff,0x00,0x05,0x0e,0xf8,
- 0x3d,0xf0,0x03,0xe1,0xf7,0xc2,0x7f,0x07,0x6a,0x12,0xbd,0xdf,
- 0x86,0x3e,0x1a,0x78,0x13,0xe0,0x3c,0x9f,0x18,0xbe,0x10,0x49,
- 0xf0,0x4f,0xc1,0xbe,0x04,0xd1,0x26,0xb1,0xf0,0xb7,0x86,0x3e,
- 0x11,0xc9,0xf0,0x9b,0xe1,0x7b,0xfc,0x37,0xd1,0x34,0xab,0x1f,
- 0x06,0xb7,0xc3,0xbf,0x04,0xb6,0x8c,0x7c,0x35,0xa6,0x14,0x57,
- 0xa3,0xc3,0xfc,0x53,0x1c,0x0e,0x55,0x86,0xc2,0xe7,0x7f,0x40,
- 0x6f,0xda,0x85,0xe3,0x4e,0x3e,0x0e,0xbd,0x59,0xf8,0x8b,0xf4,
- 0x50,0xfa,0x3c,0x71,0x67,0x8a,0x3e,0x0b,0xe6,0xd4,0xf1,0x98,
- 0x8a,0xb8,0xea,0x59,0x5e,0x45,0xc4,0x58,0x2e,0x01,0xe2,0x4f,
- 0xab,0x66,0x9c,0x23,0x1c,0x4f,0xfa,0x9d,0xc4,0x19,0x26,0x2b,
- 0x1d,0x87,0xc4,0xe5,0xb9,0xb6,0x41,0x89,0x4b,0x2d,0xc0,0xe1,
- 0x6b,0x61,0xa8,0xaf,0xcc,0xfc,0x42,0xf1,0xaf,0x8d,0xf8,0x43,
- 0x8a,0xf3,0x0a,0x79,0x37,0xd0,0x7b,0x3a,0xf1,0x7b,0x22,0xe2,
- 0xea,0x78,0x1f,0x14,0x32,0x6e,0x38,0xcb,0x7e,0x9f,0x1e,0x02,
- 0x78,0x07,0x4f,0x11,0x85,0xf1,0x63,0x05,0x43,0xc4,0x7c,0x57,
- 0x0e,0xd7,0xf0,0xdb,0x8b,0xfc,0x03,0xf1,0x03,0x1f,0x96,0x62,
- 0x38,0x17,0x37,0xe2,0x7c,0xcb,0x81,0xbe,0xbd,0x83,0xe2,0x9c,
- 0xcb,0x2e,0xcd,0x68,0x70,0xe5,0x0c,0x6c,0x2a,0xcf,0x1b,0x53,
- 0x1d,0x56,0xaa,0xfc,0x39,0xbd,0xbc,0xd7,0x2d,0xbf,0xe0,0xe0,
- 0x7f,0x87,0x5a,0xdd,0xdd,0xd6,0xb1,0xf0,0xfb,0xe0,0xbf,0xed,
- 0x1d,0xff,0x00,0x05,0x0f,0xf8,0x73,0xf0,0x77,0xc0,0xba,0xa4,
- 0xf2,0xea,0x1e,0x0d,0xf8,0x4f,0xf0,0xf7,0xe0,0x07,0xc1,0xff,
- 0x00,0x8c,0x52,0x7c,0x07,0xf0,0x27,0xc3,0x4f,0x0c,0x5d,0xbc,
- 0xda,0x27,0x81,0x3c,0x1b,0xf0,0x4e,0x4f,0x84,0x1f,0x09,0x9f,
- 0xe1,0x1f,0x86,0x3c,0x2d,0x63,0xa5,0x68,0x9f,0x0d,0xdf,0xe1,
- 0x7f,0xc3,0xb6,0xf0,0x6d,0x8e,0x8c,0xde,0x09,0xf0,0xd1,0xd3,
- 0x3f,0x8c,0xaf,0x89,0xff,0x00,0x13,0xfe,0x25,0x78,0x6b,0xe2,
- 0x57,0xc4,0x3f,0x0e,0xf8,0x77,0xe2,0x1f,0x8e,0x74,0x0f,0x0f,
- 0xe8,0x1e,0x39,0xf1,0x6e,0x8b,0xa1,0x68,0x5a,0x2f,0x8b,0x75,
- 0xfd,0x2b,0x46,0xd1,0x74,0x6d,0x2b,0x5f,0xd4,0x2c,0x74,0xbd,
- 0x27,0x49,0xd2,0xec,0x75,0x08,0x2c,0xb4,0xdd,0x33,0x4d,0xb2,
- 0x82,0x0b,0x3b,0x0b,0x0b,0x38,0x21,0xb5,0xb3,0xb5,0x86,0x2b,
- 0x7b,0x78,0xa3,0x86,0x34,0x40,0x51,0x5f,0x1f,0x9b,0xf0,0xa7,
- 0x0b,0xe6,0x9c,0x4b,0xc5,0xd8,0xcc,0xcf,0x86,0xf2,0x0c,0xc7,
- 0x17,0x57,0x8a,0xf3,0xe9,0x54,0xc5,0x63,0xf2,0x7c,0xbb,0x17,
- 0x89,0xa9,0x29,0xe3,0xaa,0x55,0x9c,0xa7,0x5f,0x11,0x86,0xa9,
- 0x56,0x6e,0x75,0x6a,0x54,0xa9,0x27,0x29,0x37,0x2a,0x95,0x27,
- 0x37,0x79,0x4a,0x4d,0xff,0x00,0x53,0xf0,0x6f,0x8f,0xfe,0x3b,
- 0xf0,0x1f,0x0b,0xd1,0xe1,0xbe,0x07,0xf1,0xaf,0xc5,0xbe,0x0c,
- 0xe1,0xdc,0x0f,0x19,0x78,0xd3,0x47,0x05,0x90,0xf0,0xa7,0x89,
- 0x1c,0x63,0xc3,0xb9,0x2e,0x0e,0x96,0x17,0xc7,0xbf,0x14,0xf0,
- 0x18,0x6a,0x58,0x5c,0xaf,0x28,0xce,0x70,0x78,0x1c,0x3d,0x3c,
- 0x3e,0x07,0x07,0x84,0xc1,0x50,0x85,0x2a,0x10,0x8d,0x2c,0x26,
- 0x17,0x0d,0x86,0xa6,0xa3,0x46,0x85,0x28,0x47,0xff,
- }},
- {VA_FOURCC_444P, {
- 0xf8,0x6f,0xf7,0x5f,0xb0,0x2c,0x5f,0xf2,0xc3,0xf6,0xa8,0xff,
- 0x00,0x82,0x4e,0x7e,0xd5,0x10,0x7f,0xd4,0x03,0xc4,0x96,0x9e,
- 0x15,0xb4,0xf1,0x26,0x81,0xff,0x00,0x72,0xe7,0x83,0xac,0x3c,
- 0x5f,0x61,0xe0,0xef,0x0e,0x7f,0xd4,0x91,0xf0,0xe7,0xe3,0x27,
- 0xc3,0x9f,0x04,0x7f,0xcd,0x2b,0x83,0xe1,0x5f,0xfc,0x6b,0x77,
- 0xe2,0x3f,0xe3,0x32,0xcb,0x38,0xcb,0xfe,0x69,0xff,0x00,0x02,
- 0x7e,0x93,0xfe,0x04,0xf0,0xff,0x00,0xfd,0x54,0xbe,0x25,0x78,
- 0x5f,0x97,0x78,0x5f,0xe2,0x57,0x12,0xff,0x00,0xdd,0xd5,0xc6,
- 0xbf,0x49,0xaf,0xd9,0x45,0xf4,0x9a,0xe3,0x5e,0x29,0xff,0x00,
- 0xaa,0xef,0xc7,0x2f,0xa2,0x17,0x8e,0x5c,0x77,0xff,0x00,0x35,
- 0x6f,0x8e,0x9c,0x5b,0xff,0x00,0x1f,0x61,0xfd,0x13,0xfe,0x10,
- 0x3e,0x9f,0xf9,0x07,0xfc,0xbe,0xfa,0x26,0x7e,0xd2,0x2f,0xa2,
- 0x65,0x6f,0xfa,0xa0,0x56,0x6f,0xc0,0xf9,0xba,0xe0,0x1f,0xfc,
- 0x54,0x3e,0x23,0x78,0x07,0xe2,0x37,0x84,0x3f,0xf6,0x1f,0xf4,
- 0x65,0xf1,0x6f,0xe8,0xcb,0x8f,0xeb,0xf4,0x29,0x7f,0xf1,0xec,
- 0x9f,0xa7,0x6f,0x7e,0x1c,0xdb,0x6b,0x97,0x97,0x7a,0xdf,0xc3,
- 0xaf,0xf8,0x38,0x1f,0xf6,0x8e,0xf8,0x2f,0xf0,0xfb,0x58,0xba,
- 0xb8,0xd5,0x7c,0x0b,0xf0,0x77,0xe1,0xcf,0xfc,0x14,0x3f,0xe0,
- 0xff,0x00,0xec,0xff,0x00,0xf0,0xf7,0xe1,0x3f,0x83,0x75,0x09,
- 0x5e,0xef,0xc3,0x1f,0x0d,0x3c,0x09,0xf0,0x1e,0x4f,0x8c,0x5f,
- 0x08,0x24,0xf8,0x27,0xe0,0xdf,0x02,0x68,0x93,0x58,0xf8,0x5b,
- 0xc3,0x1f,0x08,0xe4,0xf8,0x4d,0xf0,0xbd,0xfe,0x1b,0xe8,0x9a,
- 0x55,0x8f,0x83,0x5b,0xe1,0xdf,0x82,0x5b,0x46,0x3e,0x1a,0xd3,
- 0x3f,0x5c,0xa1,0xc7,0x78,0x5c,0x55,0x0a,0x38,0xac,0xd3,0xf6,
- 0x5a,0xfe,0xd8,0x3a,0x99,0x9e,0x26,0x95,0x3c,0x46,0x63,0x53,
- 0xc1,0x1f,0xa3,0xfe,0x6d,0xe3,0x67,0x83,0x15,0x31,0xd5,0xa1,
- 0x1a,0x98,0xb9,0xf8,0x45,0xe3,0x37,0x07,0x70,0x27,0x18,0x70,
- 0x8f,0x8b,0x9e,0x18,0x4f,0x11,0x2a,0x92,0xe0,0x1f,0x13,0xb8,
- 0x57,0x8b,0xb8,0xa7,0x87,0x38,0xf7,0x85,0x1e,0x53,0xc5,0x59,
- 0x1f,0x11,0xe7,0x79,0x66,0x6d,0x85,0xcc,0xf1,0x5f,0xc9,0x79,
- 0xb7,0x8f,0x7e,0x37,0x70,0xae,0x6b,0x99,0xf0,0xbf,0x1c,0x7e,
- 0xcd,0x6c,0x66,0x23,0x8d,0x78,0x6f,0x30,0xc6,0xe4,0x3c,0x61,
- 0x5f,0x84,0xbf,0x69,0x1f,0x83,0xbe,0x15,0xf0,0xad,0x7e,0x28,
- 0xc9,0xf1,0x35,0x32,0xfe,0x20,0xad,0xc3,0x3e,0x18,0x78,0xc3,
- 0xf4,0x6d,0xe2,0xdf,0x16,0xfc,0x38,0xe1,0xfa,0x99,0xb6,0x1f,
- 0x17,0x3c,0x9b,0x80,0xfc,0x52,0xe2,0xae,0x26,0xf1,0x1b,0x84,
- 0x32,0xd9,0x61,0xb8,0x7b,0x8d,0xf8,0x83,0x39,0xe2,0x6c,0xbb,
- 0x33,0xcc,0x71,0x27,0xc3,0x9b,0xdb,0xcd,0x72,0xdf,0xfe,0x0e,
- 0x07,0xf8,0x75,0xad,0xdd,0xdd,0x6b,0x1f,0x0f,0xbe,0x0b,0xfe,
- 0xd1,0xdf,0xf0,0x50,0xff,0x00,0x87,0x3f,0x07,0x7c,0x0b,0xaa,
- 0xdc,0x4b,0xa8,0x78,0x37,0xe1,0x3f,0xc3,0xdf,0xd9,0xff,0x00,
- 0xe0,0xff,0x00,0xc6,0x29,0x3e,0x03,0xf8,0x13,0xe1,0xa7,0x86,
- 0x2e,0xde,0x6d,0x13,0xc0,0x9e,0x0d,0xf8,0x27,0x27,0xc2,0x0f,
- 0x84,0xd2,0x7c,0x23,0xf0,0xbf,0x85,0xac,0x74,0xad,0x13,0xe1,
- 0xbb,0xfc,0x2e,0xf8,0x76,0xde,0x0d,0xb1,0xd1,0x9b,0xc1,0x3e,
- 0x1a,0x3a,0x61,0xc7,0x78,0x7a,0x18,0xbc,0x2f,0xec,0xb5,0xcd,
- 0x31,0x54,0x69,0x62,0x73,0x3a,0x9f,0xb6,0x0f,0xe8,0xff,0x00,
- 0xe0,0x8d,0x4c,0xc7,0x11,0x4e,0x15,0xb1,0xd5,0x3c,0x18,0xf1,
- 0xb3,0x36,0xe0,0x4e,0x0e,0xf1,0x9b,0xc2,0x29,0xe2,0xea,0x46,
- 0x58,0x89,0xf8,0x61,0xe2,0xe7,0x08,0xf1,0x87,0x17,0x70,0xaf,
- 0x89,0xdc,0x03,0x2a,0x8f,0x85,0x38,0xf7,0x87,0x38,0xa7,0x88,
- 0xf2,0x3e,0x2a,0xca,0x73,0x6c,0xb3,0x3b,0xcc,0xf0,0xb8,0xa3,
- 0xc7,0xbc,0xdb,0x35,0xe1,0x5f,0x1b,0xbf,0x66,0xb7,0x1c,0x70,
- 0xbe,0x67,0x98,0x70,0xdf,0x1a,0xe2,0x31,0x9f,0xb4,0x8f,0x84,
- 0xab,0xf1,0x86,0x43,0x8d,0xc4,0xe4,0xfc,0x51,0x5f,0x85,0x7c,
- 0x2b,0xf0,0x77,0xe8,0xdb,0xe3,0x0f,0x86,0x1c,0x33,0x5b,0x88,
- 0x32,0xfa,0x98,0x7c,0xda,0xa7,0x0f,0xf8,0x71,0xe2,0xdf,0x16,
- 0xf1,0x57,0x8a,0x5c,0x07,0x92,0xcf,0x17,0x2c,0xb7,0x84,0x3c,
- 0x46,0xe2,0x6e,0x20,0xe3,0x7e,0x1e,0xc3,0x65,0xdc,0x4d,0x9c,
- 0xe6,0x39,0x9e,0x27,0xf8,0xcb,0xf8,0x9f,0xf1,0x3f,0xe2,0x5f,
- 0x86,0xbe,0x25,0xfc,0x43,0xf0,0xef,0x87,0x3e,0x21,0xf8,0xe7,
- 0x40,0xf0,0xfe,0x81,0xe3,0x9f,0x16,0xe8,0xba,0x16,0x85,0xa2,
- 0xf8,0xb7,0x5f,0xd2,0xb4,0x6d,0x17,0x46,0xd2,0xb5,0xfd,0x42,
- 0xc7,0x4b,0xd2,0x74,0x9d,0x2e,0xc7,0x50,0x82,0xcb,0x4d,0xd3,
- 0x34,0xdb,0x18,0x20,0xb3,0xb0,0xb0,0xb3,0x82,0x1b,0x5b,0x3b,
- 0x58,0x62,0xb7,0xb7,0x8a,0x38,0x63,0x44,0x5f,0xc3,0xf8,0x4b,
- 0x84,0xb8,0x57,0x35,0xe1,0x5e,0x19,0xcd,0x33,0x4e,0x19,0xe1,
- 0xfc,0xcb,0x32,0xcc,0xb8,0x7f,0x26,0xc7,0xe6,0x39,0x8e,0x3f,
- 0x26,0xcb,0x71,0x98,0xec,0x7e,0x3b,0x19,0x97,0x61,0xb1,0x18,
- 0xbc,0x6e,0x37,0x17,0x88,0xc3,0x54,0xc4,0x62,0xb1,0x78,0xac,
- 0x45,0x4a,0x95,0xf1,0x38,0x9a,0xf5,0x2a,0x56,0xaf,0x5a,0xa4,
- 0xea,0xd5,0x9c,0xa7,0x29,0x49,0xff,0x00,0xa9,0xdf,0x48,0x4f,
- 0xa4,0x27,0x8f,0xbc,0x05,0xe3,0xef,0x8e,0x1c,0x0b,0xc0,0xbe,
- 0x38,0x78,0xbf,0xc1,0x7c,0x13,0xc1,0x7e,0x2f,0xf8,0x97,0xc2,
- 0x7c,0x1d,0xc1,0xdc,0x27,0xe2,0x5f,0x1a,0x70,0xe7,0x0a,0xf0,
- 0x9f,0x0a,0xf0,0xe7,0x1a,0x67,0x59,0x3f,0x0f,0x70,0xd7,0x0d,
- 0x70,0xf6,0x4f,0x9d,0x60,0xf2,0x8c,0x8b,0x87,0xf2,0x2c,0xa3,
- 0x07,0x84,0xca,0xf2,0x6c,0x9b,0x2b,0xc1,0xe1,0x72,0xec,0xaf,
- 0x2e,0xc2,0xe1,0xb0,0x38,0x1c,0x35,0x0c,0x35,0x0a,0x54,0xa3,
- 0xff,
- }}
- });
-
- /**
- * Test Pattern 4
- *
- * Solid Blue 150x75
- *
- */
- template<> const bool TestPatternData<4>::m_valid =
- TestPatternData<4>::initialize<150, 75>(
-
- generateSolid({0x1d, 0xff, 0x6b}, {150, 75}),
-
- {{VA_FOURCC_IMC3, {
- 0xfe,0x39,0xe8,0xa2,0x8a,0xff,0x00,0xbf,0x83,0xf9,0x5c,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0xff,
- }},
- {VA_FOURCC_422H, {
- 0xfe,0x39,0xe8,0xaf,0xfb,0xf8,0x3f,0x95,0xc2,0x8a,0x00,0x28,
- 0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,
- 0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,
- 0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,
- 0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,
- 0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,
- 0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,
- 0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,
- 0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,
- 0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,
- 0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,
- 0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,
- 0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,
- 0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,
- 0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,
- 0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,
- 0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,
- 0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,
- 0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,
- 0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,
- 0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,
- 0xa0,0x02,0x8a,0x00,0xff,
- }},
- {VA_FOURCC_422V, {
- 0xfe,0x39,0xe8,0xaf,0xfb,0xf8,0x3f,0x95,0xc2,0x8a,0x00,0x28,
- 0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,
- 0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,
- 0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,
- 0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,
- 0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,
- 0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,
- 0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,
- 0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,
- 0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,
- 0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,
- 0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,
- 0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,
- 0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,
- 0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,
- 0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,
- 0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,
- 0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,
- 0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,
- 0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,0x00,0x28,0xa0,0x02,0x8a,
- 0x00,0x28,0xa0,0x0f,0xff,
- }},
- {VA_FOURCC_411P, {
- 0xfe,0x39,0xe8,0xa2,0x8a,0xff,0x00,0xbf,0x83,0xf9,0x5c,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,0xa2,0x8a,0x00,0x28,
- 0xa2,0x8a,0x00,0xff,
- }},
- {VA_FOURCC_444P, {
- 0xfe,0x39,0xeb,0xfe,0xfe,0x0f,0xe5,0x70,0xa0,0x02,0x80,0x0a,
- 0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,
- 0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,
- 0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,
- 0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,
- 0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,
- 0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,
- 0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,
- 0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,
- 0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,
- 0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,
- 0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,
- 0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,
- 0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,
- 0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,
- 0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,
- 0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,
- 0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,
- 0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,
- 0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,
- 0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,
- 0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,
- 0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,
- 0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,
- 0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,
- 0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,
- 0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,
- 0x02,0x80,0x0a,0x00,0x28,0x00,0xa0,0x02,0x80,0x0a,0x00,0x28,
- 0x00,0xa0,0x0f,0xff,
- }}
- });
-
-} // namespace Decode
-} // namespace JPEG
-
-namespace JPEG {
-namespace Encode {
-
- TestInput::Shared TestInput::create(
- const unsigned fourcc, const unsigned w, const unsigned h)
- {
- Shared t(new TestInput);
-
- t->image = YUVImage::create(fourcc, w, h);
-
- if (not bool(t->image.get()))
- return Shared();
-
- t->picture.picture_width = t->image->width;
- t->picture.picture_height = t->image->height;
-
- if (VA_FOURCC_Y800 == fourcc)
- t->picture.num_components = 1;
-
- return t;
- }
-
- TestInput::TestInput()
- : image()
- , picture(defaultPictureParameter)
- , matrix(defaultIQMatrix)
- , huffman(defaultHuffmanTable)
- , slice(defaultSliceParameter)
- {
- return;
- }
-
- const YUVImage::SharedConst TestInput::toExpectedOutput() const
- {
- YUVImage::Shared result;
-
- switch (image->fourcc) {
- case VA_FOURCC_Y800:
- return image;
- case VA_FOURCC_I420:
- case VA_FOURCC_NV12:
- result = YUVImage::create(VA_FOURCC_IMC3, image->width, image->height);
- break;
- case VA_FOURCC_UYVY:
- case VA_FOURCC_YUY2:
- result = YUVImage::create(VA_FOURCC_422H, image->width, image->height);
- break;
- default:
- break;
- }
-
- if (bool(result)) {
- result->y() = image->y();
- result->u() = image->u();
- result->v() = image->v();
- }
-
- return result;
- }
-
- ::std::ostream& operator<<(::std::ostream& os, const TestInput& t)
- {
- return os
- << std::string((char*)(&t.image->fourcc), 4)
- << " " << t.image->width << "x" << t.image->height
- << " " << t.image->widths << " " << t.image->heights
- << " " << t.image->sizes << " " << t.image->offsets
- ;
- }
-
- ::std::ostream& operator<<(::std::ostream& os, const TestInput::Shared& t)
- {
- return os << *t;
- }
-
- ::std::ostream& operator<<(
- ::std::ostream& os, const TestInput::SharedConst& t)
- {
- return os << *t;
- }
-
- TestInput::Shared TestInputCreator::create(const unsigned fourcc) const
- {
- const std::array<unsigned, 2> res = getResolution();
-
- TestInput::Shared input(TestInput::create(fourcc, res[0], res[1]));
- if (input.get()) {
- std::generate_n(
- std::begin(input->image->bytes), input->image->bytes.size(),
- RandomValueGenerator<uint8_t>(0x00, 0xff));
- }
- return input;
- }
-
- ::std::ostream& operator<<(::std::ostream& os, const TestInputCreator& t)
- {
- t.repr(os);
- return os;
- }
-
- ::std::ostream& operator<<(
- ::std::ostream& os, const TestInputCreator::Shared& t)
- {
- return os << *t;
- }
-
- ::std::ostream& operator<<(
- ::std::ostream& os, const TestInputCreator::SharedConst& t)
- {
- return os << *t;
- }
-
- std::array<unsigned, 2> RandomSizeCreator::getResolution() const
- {
- static RandomValueGenerator<unsigned> rg(1, 769);
- return {rg(), rg()};
- }
-
- void RandomSizeCreator::repr(::std::ostream& os) const
- {
- os << "Random Size";
- }
-
- FixedSizeCreator::FixedSizeCreator(
- const std::array<unsigned, 2>& resolution)
- : res(resolution)
- {
- return;
- }
-
- std::array<unsigned, 2> FixedSizeCreator::getResolution() const
- {
- return res;
- }
-
- void FixedSizeCreator::repr(::std::ostream& os) const
- {
- os << "Fixed Size " << res[0] << "x" << res[1];
- }
-
-} // namespace Encode
-} // namespace JPEG
diff --git a/test/i965_jpeg_test_data.h b/test/i965_jpeg_test_data.h
deleted file mode 100644
index 0105d47..0000000
--- a/test/i965_jpeg_test_data.h
+++ /dev/null
@@ -1,475 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef I965_JPEG_TEST_DATA_H
-#define I965_JPEG_TEST_DATA_H
-
-#include "i965_test_image_utils.h"
-
-#include <array>
-#include <iostream>
-#include <map>
-#include <memory>
-#include <va/va.h>
-#include <vector>
-
-namespace JPEG {
- typedef std::vector<uint8_t> ByteData;
-
- static const VAProfile profile = VAProfileJPEGBaseline;
-
- static inline const ByteData generateSolid(
- const std::array<uint8_t, 3>& yuv, const std::array<size_t, 2>& dim)
- {
- size_t count(dim[0] * dim[1]);
- ByteData data(count, yuv[0]);
- data.insert(data.end(), count, yuv[1]);
- data.insert(data.end(), count, yuv[2]);
- return data;
- }
-} // namespace JPEG
-
-namespace JPEG {
-namespace Decode {
- typedef VAIQMatrixBufferJPEGBaseline IQMatrix;
- typedef VAHuffmanTableBufferJPEGBaseline HuffmanTable;
- typedef VAPictureParameterBufferJPEGBaseline PictureParameter;
- typedef VASliceParameterBufferJPEGBaseline SliceParameter;
-
- static const VAEntrypoint entrypoint = VAEntrypointVLD;
-
- static const HuffmanTable defaultHuffmanTable = {
- load_huffman_table: { 0x01, 0x01 },
- huffman_table: {
- { // luminance
- num_dc_codes: {
- 0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00
- },
- dc_values: {
- 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b
- },
- num_ac_codes: {
- 0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,
- 0x00,0x00,0x01,0x7d
- },
- ac_values: {
- 0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,
- 0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,
- 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,
- 0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,
- 0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,
- 0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,
- 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,
- 0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,
- 0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,
- 0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,
- 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,
- 0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,
- 0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,
- 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa
- },
- pad: { 0x00, 0x00 }
- },
- { // chrominance
- num_dc_codes: {
- 0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
- 0x00,0x00,0x00,0x00
- },
- dc_values: {
- 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b
- },
- num_ac_codes: {
- 0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,
- 0x00,0x01,0x02,0x77
- },
- ac_values: {
- 0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,
- 0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,
- 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,
- 0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,
- 0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,
- 0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,
- 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,
- 0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,
- 0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,
- 0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,
- 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,
- 0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,
- 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,
- 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,
- },
- pad: { 0x00, 0x00 }
- }
- }
- };
-
- static const IQMatrix defaultIQMatrix = { /* Quality 100 */
- load_quantiser_table: { 0x1,0x1,0x0,0x0 },
- quantiser_table: {
- {
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,
- },
- {
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,
- },
- },
- };
-
- static const PictureParameter defaultPictureParameter = {
- picture_width: 10,
- picture_height: 10,
- /* component_id, h_sampling_factor, v_sampling_factor, quantiser_table_selector */
- components: {{1,1,1,0}, {2,1,1,1}, {3,1,1,1}},
- num_components: 3,
- };
-
- static const SliceParameter defaultSliceParameter = {
- slice_data_size: 0,
- slice_data_offset: 0,
- slice_data_flag: VA_SLICE_DATA_FLAG_ALL,
- slice_horizontal_position: 0,
- slice_vertical_position: 0,
-
- /* component_selector, dc_table_selector, ac_table_selector */
- components: {{1,0,0},{2,1,1},{3,1,1}},
-
- num_components: 3,
- restart_interval: 0,
- num_mcus: 4,
- };
-
- class PictureData
- {
- public:
- typedef std::shared_ptr<PictureData> Shared;
- typedef std::shared_ptr<const PictureData> SharedConst;
-
- template<const unsigned W, const unsigned H>
- static SharedConst make(
- const unsigned fourcc,
- const ByteData& slice,
- const SliceParameter& sparam = defaultSliceParameter,
- const PictureParameter& pparam = defaultPictureParameter,
- const HuffmanTable& huffman = defaultHuffmanTable,
- const IQMatrix& iqmatrix = defaultIQMatrix)
- {
- return make(fourcc, slice, W, H, sparam, pparam, huffman, iqmatrix);
- }
-
- static SharedConst make(
- const unsigned fourcc,
- const ByteData& slice,
- const unsigned w, const unsigned h,
- const SliceParameter& sparam = defaultSliceParameter,
- const PictureParameter& pparam = defaultPictureParameter,
- const HuffmanTable& huffman = defaultHuffmanTable,
- const IQMatrix& iqmatrix = defaultIQMatrix)
- {
- Shared pd(
- new PictureData {
- slice: slice,
- sparam: sparam,
- pparam: pparam,
- huffman: huffman,
- iqmatrix: iqmatrix,
- format: 0,
- fourcc: fourcc,
- }
- );
-
- pd->sparam.slice_data_size = slice.size();
- pd->pparam.picture_width = w;
- pd->pparam.picture_height = h;
-
- switch(fourcc)
- {
- case VA_FOURCC_IMC3:
- pd->format = VA_RT_FORMAT_YUV420;
- pd->pparam.components[0].h_sampling_factor = 2;
- pd->pparam.components[0].v_sampling_factor = 2;
- break;
- case VA_FOURCC_422H:
- pd->format = VA_RT_FORMAT_YUV422;
- pd->pparam.components[0].h_sampling_factor = 2;
- pd->pparam.components[0].v_sampling_factor = 1;
- break;
- case VA_FOURCC_422V:
- pd->format = VA_RT_FORMAT_YUV422;
- pd->pparam.components[0].h_sampling_factor = 1;
- pd->pparam.components[0].v_sampling_factor = 2;
- break;
- case VA_FOURCC_411P:
- pd->format = VA_RT_FORMAT_YUV411;
- pd->pparam.components[0].h_sampling_factor = 4;
- pd->pparam.components[0].v_sampling_factor = 1;
- break;
- case VA_FOURCC_444P:
- pd->format = VA_RT_FORMAT_YUV444;
- pd->pparam.components[0].h_sampling_factor = 1;
- pd->pparam.components[0].v_sampling_factor = 1;
- break;
- case VA_FOURCC_Y800:
- pd->format = VA_RT_FORMAT_YUV400;
- pd->pparam.components[0].h_sampling_factor = 1;
- pd->pparam.components[0].h_sampling_factor = 1;
- pd->pparam.num_components = 1;
- pd->sparam.num_components = 1;
- break;
- default:
- break;
- }
-
- /* Calculate num_mcus */
- int hfactor = pd->pparam.components[0].h_sampling_factor << 3;
- int vfactor = pd->pparam.components[0].v_sampling_factor << 3;
- int wmcu = (w + hfactor - 1) / hfactor;
- int hmcu = (h + vfactor - 1) / vfactor;
- pd->sparam.num_mcus = wmcu * hmcu;
-
- return pd;
- }
-
- const ByteData slice;
- SliceParameter sparam;
- PictureParameter pparam;
- HuffmanTable huffman;
- IQMatrix iqmatrix;
- unsigned format;
- unsigned fourcc;
- };
-
- class TestPattern
- {
- public:
- typedef std::shared_ptr<TestPattern> Shared;
- typedef std::shared_ptr<const TestPattern> SharedConst;
-
- virtual const ByteData& decoded() const = 0;
- virtual PictureData::SharedConst encoded(unsigned) const = 0;
-
- virtual void repr(std::ostream&) const = 0;
-
- friend std::ostream& operator <<(std::ostream& os, const TestPattern& t)
- {
- t.repr(os);
- return os;
- }
- };
-
- template <const unsigned N>
- class TestPatternData
- : public TestPattern
- {
- private:
- typedef std::map<const unsigned, PictureData::SharedConst> EncodedMap;
- typedef std::map<const unsigned, const ByteData> ByteDataMap;
-
- public:
- const ByteData& decoded() const { return getDecoded(); }
-
- PictureData::SharedConst encoded(const unsigned fourcc) const
- {
- const EncodedMap& em = getEncodedMap();
- const EncodedMap::const_iterator match(em.find(fourcc));
- if (match == em.end())
- return PictureData::SharedConst();
- return match->second;
- }
-
- void repr(std::ostream& os) const { os << N; }
-
- template <const unsigned W, const unsigned H>
- static bool initialize(ByteData d, const ByteDataMap& e)
- {
- getDecoded().swap(d);
-
- EncodedMap& em = getEncodedMap();
- bool result = true;
- for (auto const &b : e) {
- auto pd(PictureData::make<W, H>(b.first, b.second));
- auto pair = std::make_pair(b.first, pd);
- result &= em.insert(pair).second;
- }
- return result;
- }
-
- private:
- static ByteData& getDecoded()
- {
- static ByteData d;
- return d;
- }
-
- static EncodedMap& getEncodedMap()
- {
- static EncodedMap em;
- return em;
- }
-
- static const bool m_valid;
- };
-} // namespace Decode
-} // namespace JPEG
-
-namespace JPEG {
-namespace Encode {
- typedef VAQMatrixBufferJPEG IQMatrix;
- typedef VAHuffmanTableBufferJPEGBaseline HuffmanTable;
- typedef VAEncPictureParameterBufferJPEG PictureParameter;
- typedef VAEncSliceParameterBufferJPEG SliceParameter;
-
- static const VAEntrypoint entrypoint = VAEntrypointEncPicture;
-
- static const IQMatrix defaultIQMatrix = { /* Quality 50 */
- load_lum_quantiser_matrix: 1,
- load_chroma_quantiser_matrix: 1,
- lum_quantiser_matrix: {
- 0x10,0x0b,0x0c,0x0e,0x0c,0x0a,0x10,0x0e,
- 0x0d,0x0e,0x12,0x11,0x10,0x13,0x18,0x28,
- 0x1a,0x18,0x16,0x16,0x18,0x31,0x23,0x25,
- 0x1d,0x28,0x3a,0x33,0x3d,0x3c,0x39,0x33,
- 0x38,0x37,0x40,0x48,0x5c,0x4e,0x40,0x44,
- 0x57,0x45,0x37,0x38,0x50,0x6d,0x51,0x57,
- 0x5f,0x62,0x67,0x68,0x67,0x3e,0x4d,0x71,
- 0x79,0x70,0x64,0x78,0x5c,0x65,0x67,0x63,
- },
- chroma_quantiser_matrix: {
- 0x11,0x12,0x12,0x18,0x15,0x18,0x2f,0x1a,
- 0x1a,0x2f,0x63,0x42,0x38,0x42,0x63,0x63,
- 0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,
- 0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,
- 0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,
- 0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,
- 0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,
- 0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,
- },
- };
-
- static const HuffmanTable defaultHuffmanTable =
- ::JPEG::Decode::defaultHuffmanTable;
-
- static const PictureParameter defaultPictureParameter = {
- reconstructed_picture: VA_INVALID_ID,
- picture_width: 10,
- picture_height: 10,
- coded_buf: VA_INVALID_ID,
- pic_flags: {value: 0x00100},
- sample_bit_depth: 8,
- num_scan: 1,
- num_components: 3,
- component_id: {0, 1, 2, 0},
- quantiser_table_selector: {0, 1, 1, 0},
- quality: 100,
- };
-
- static const SliceParameter defaultSliceParameter = {
- restart_interval: 0,
- num_components: 3,
- /* component_selector, dc_table_selector, ac_table_selector */
- components: {{1,0,0},{2,1,1},{3,1,1}},
- };
-
- class TestInput
- : public std::enable_shared_from_this<TestInput>
- {
- public:
- typedef std::shared_ptr<TestInput> Shared;
- typedef std::shared_ptr<const TestInput> SharedConst;
-
- static Shared create(const unsigned, const unsigned, const unsigned);
- const YUVImage::SharedConst toExpectedOutput() const;
-
- friend ::std::ostream& operator<<(::std::ostream&, const TestInput&);
- friend ::std::ostream& operator<<(::std::ostream&, const Shared&);
- friend ::std::ostream& operator<<(::std::ostream&, const SharedConst&);
-
- YUVImage::Shared image;
- PictureParameter picture;
- IQMatrix matrix;
- HuffmanTable huffman;
- SliceParameter slice;
-
- private:
- TestInput();
- };
-
- class TestInputCreator
- {
- public:
- typedef std::shared_ptr<TestInputCreator> Shared;
- typedef std::shared_ptr<const TestInputCreator> SharedConst;
-
- TestInput::Shared create(const unsigned) const;
-
- friend ::std::ostream& operator<<(
- ::std::ostream&, const TestInputCreator&);
- friend ::std::ostream& operator<<(
- ::std::ostream&, const TestInputCreator::Shared&);
- friend ::std::ostream& operator<<(
- ::std::ostream&, const TestInputCreator::SharedConst&);
-
- protected:
- virtual std::array<unsigned, 2> getResolution() const = 0;
- virtual void repr(::std::ostream& os) const = 0;
- };
-
- class RandomSizeCreator
- : public TestInputCreator
- {
- protected:
- std::array<unsigned, 2> getResolution() const;
- void repr(::std::ostream&) const;
- };
-
- class FixedSizeCreator
- : public TestInputCreator
- {
- public:
- FixedSizeCreator(const std::array<unsigned, 2>&);
-
- protected:
- std::array<unsigned, 2> getResolution() const;
- void repr(::std::ostream& os) const;
-
- private:
- const std::array<unsigned, 2> res;
- };
-
- typedef std::vector<TestInputCreator::SharedConst> InputCreators;
-
-} // namespace Encode
-} // namespace JPEG
-
-#endif
diff --git a/test/i965_jpegd_config_test.cpp b/test/i965_jpegd_config_test.cpp
deleted file mode 100644
index 371b827..0000000
--- a/test/i965_jpegd_config_test.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "i965_config_test.h"
-
-namespace JPEG {
-namespace Decode {
-VAStatus ProfileNotSupported()
-{
- return VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
-}
-
-VAStatus EntrypointNotSupported()
-{
- return VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
-}
-
-VAStatus NotSupported()
-{
- I965TestEnvironment *env(I965TestEnvironment::instance());
- EXPECT_PTR(env);
-
- struct i965_driver_data *i965(*env);
- EXPECT_PTR(i965);
-
- if (!HAS_JPEG_ENCODING(i965))
- return ProfileNotSupported();
-
- return EntrypointNotSupported();
-}
-
-VAStatus HasDecodeSupport()
-{
- I965TestEnvironment *env(I965TestEnvironment::instance());
- EXPECT_PTR(env);
-
- struct i965_driver_data *i965(*env);
- EXPECT_PTR(i965);
-
- if(HAS_JPEG_DECODING(i965))
- return VA_STATUS_SUCCESS;
-
- return NotSupported();
-}
-
-static const std::vector<ConfigTestInput> inputs = {
- {VAProfileJPEGBaseline, VAEntrypointVLD, &HasDecodeSupport},
-};
-
-INSTANTIATE_TEST_CASE_P(
- JPEGDecode, I965ConfigTest, ::testing::ValuesIn(inputs));
-
-} // namespace Decode
-} // namespace JPEG
diff --git a/test/i965_jpege_config_test.cpp b/test/i965_jpege_config_test.cpp
deleted file mode 100644
index eb5931d..0000000
--- a/test/i965_jpege_config_test.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "i965_config_test.h"
-
-namespace JPEG {
-namespace Encode {
-
-VAStatus ProfileNotSupported()
-{
- return VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
-}
-
-VAStatus EntrypointNotSupported()
-{
- return VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT;
-}
-
-VAStatus NotSupported()
-{
- I965TestEnvironment *env(I965TestEnvironment::instance());
- EXPECT_PTR(env);
-
- struct i965_driver_data *i965(*env);
- EXPECT_PTR(i965);
-
- if (!HAS_JPEG_DECODING(i965))
- return ProfileNotSupported();
-
- return EntrypointNotSupported();
-}
-
-VAStatus HasEncodeSupport()
-{
- I965TestEnvironment *env(I965TestEnvironment::instance());
- EXPECT_PTR(env);
-
- struct i965_driver_data *i965(*env);
- EXPECT_PTR(i965);
-
- if (HAS_JPEG_ENCODING(i965))
- return VA_STATUS_SUCCESS;
-
- return NotSupported();
-}
-
-static const std::vector<ConfigTestInput> inputs = {
- {VAProfileJPEGBaseline, VAEntrypointEncPicture, &HasEncodeSupport},
- {VAProfileJPEGBaseline, VAEntrypointEncSlice, &NotSupported},
- {VAProfileJPEGBaseline, VAEntrypointEncSliceLP, &NotSupported},
-};
-
-INSTANTIATE_TEST_CASE_P(
- JPEGEncode, I965ConfigTest, ::testing::ValuesIn(inputs));
-
-} // namespace Encode
-} // namespace JPEG
diff --git a/test/i965_streamable.h b/test/i965_streamable.h
deleted file mode 100644
index 0f7e129..0000000
--- a/test/i965_streamable.h
+++ /dev/null
@@ -1,479 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef I965_STREAMABLE_H
-#define I965_STREAMABLE_H
-
-#include <array>
-#include <iostream>
-#include <iomanip>
-#include <sstream>
-#include <valarray>
-#include <va/va.h>
-
-namespace std {
- template <typename T, const size_t S> inline std::ostream&
- operator<<(std::ostream& os, const std::array<T, S>& a)
- {
- os << "{";
- for (const auto& s : a) {
- if (&s != &a[0])
- os << ",";
- os << s;
- }
- return os << "}";
- }
-
- template <const size_t S> inline std::ostream&
- operator<<(std::ostream& os, const std::array<uint8_t, S>& a)
- {
- os << "{" << std::hex;
- for (const auto& s : a) {
- if (&s != &a[0])
- os << ",";
- os << "0x" << std::setfill('0') << std::setw(2) << unsigned(s);
- }
- return os << std::dec << "}";
- }
-
- template <typename T> inline std::ostream&
- operator<<(std::ostream& os, const std::valarray<T>& a)
- {
- os << "{";
- for (const auto& s : a) {
- if (&s != &a[0])
- os << ",";
- os << s;
- }
- return os << "}";
- }
-
- template <> inline std::ostream&
- operator<<(std::ostream& os, const std::valarray<uint8_t>& a)
- {
- os << "{" << std::hex;
- for (const auto& s : a) {
- if (&s != &a[0])
- os << ",";
- os << "0x" << std::setfill('0') << std::setw(2) << unsigned(s);
- }
- return os << std::dec << "}";
- }
-}// namespace std
-
-template <typename T>
-const std::string toString(const T& t)
-{
- std::ostringstream os;
- os << t;
- return os.str();
-}
-
-inline std::ostream&
-operator<<(std::ostream& os, const VAEncPictureParameterBufferJPEG& b)
-{
- os << "VAEncPictureParameterBufferJPEG (" << &b << ")" << std::endl
- << " .reconstructed_picture = " << b.reconstructed_picture
- << std::endl
-
- << " .picture_width = " << b.picture_width
- << std::endl
-
- << " .picture_height = " << b.picture_height
- << std::endl
-
- << " .coded_buf = " << b.coded_buf
- << std::endl
-
- << " .pic_flags.value = "
- << std::hex << std::setw(8) << std::setfill('0') << b.pic_flags.value
- << std::dec
- << std::endl
-
- << " ...profile = " << b.pic_flags.bits.profile
- << " (0 - Baseline, 1 - Extended, 2 - Lossless, 3 - Hierarchical)"
- << std::endl
-
- << " ...progressive = " << b.pic_flags.bits.progressive
- << " (0 - sequential, 1 - extended, 2 - progressive)"
- << std::endl
-
- << " ...huffman = " << b.pic_flags.bits.huffman
- << " (0 - arithmetic, 1 - huffman)"
- << std::endl
-
- << " ...interleaved = " << b.pic_flags.bits.interleaved
- << " (0 - non interleaved, 1 - interleaved)"
- << std::endl
-
- << " ...differential = " << b.pic_flags.bits.differential
- << " (0 - non differential, 1 - differential)"
- << std::endl
-
- << " .sample_bit_depth = " << (unsigned)b.sample_bit_depth
- << std::endl
-
- << " .num_scan = " << (unsigned)b.num_scan
- << std::endl
-
- << " .num_components = " << (unsigned)b.num_components
- << std::endl
-
- << " .component_id = "
- << (unsigned)b.component_id[0] << ","
- << (unsigned)b.component_id[1] << ","
- << (unsigned)b.component_id[2] << ","
- << (unsigned)b.component_id[3] << ","
- << std::endl
-
- << " .quantiser_table_selector = "
- << (unsigned)b.quantiser_table_selector[0] << ","
- << (unsigned)b.quantiser_table_selector[1] << ","
- << (unsigned)b.quantiser_table_selector[2] << ","
- << (unsigned)b.quantiser_table_selector[3] << ","
- << std::endl
-
- << " .quality = " << (unsigned)b.quality
- << std::endl
- ;
- return os;
-}
-
-inline std::ostream&
-operator<<(std::ostream& os, const VAEncPictureParameterBufferJPEG* b)
-{
- os << *b;
- return os;
-}
-
-inline std::ostream&
-operator<<(std::ostream& os, const VAQMatrixBufferJPEG& b)
-{
- os << "VAQMatrixBufferJPEG (" << &b << ")" << std::endl;
-
- os << " .load_lum_quantiser_matrix = " << b.load_lum_quantiser_matrix
- << std::endl
- ;
-
- if (b.load_lum_quantiser_matrix)
- {
- os << " .lum_quantiser_matrix = ";
- for (size_t i(0); i < sizeof(b.lum_quantiser_matrix); ++i) {
- os << std::hex << std::setw(2) << std::setfill('0')
- << (unsigned)b.lum_quantiser_matrix[i] << ",";
- if (((i+1) % 12) == 0)
- os << std::endl << " ";
- }
- os << std::dec << std::endl;
- }
-
- os << " .load_chroma_quantiser_matrix = " << b.load_chroma_quantiser_matrix
- << std::endl
- ;
-
- if (b.load_lum_quantiser_matrix)
- {
- os << " .chroma_quantiser_matrix = ";
- for (size_t i(0); i < sizeof(b.chroma_quantiser_matrix); ++i) {
- os << std::hex << std::setw(2) << std::setfill('0')
- << (unsigned)b.chroma_quantiser_matrix[i] << ",";
- if (((i+1) % 12) == 0)
- os << std::endl << " ";
- }
- os << std::dec << std::endl;
- }
-
- return os;
-}
-
-inline std::ostream&
-operator<<(std::ostream& os, const VAQMatrixBufferJPEG* b)
-{
- os << *b;
- return os;
-}
-
-inline std::ostream&
-operator<<(std::ostream& os, const VAHuffmanTableBufferJPEGBaseline& b)
-{
- os << "VAHuffmanTableBufferJPEGBaseline (" << &b << ")" << std::endl;
-
- os << " .load_huffman_table = "
- << (unsigned)b.load_huffman_table[0] << ","
- << (unsigned)b.load_huffman_table[1] << ","
- << std::endl
- ;
-
- for (size_t i(0); i < 2; ++i) {
- unsigned sum(0);
- os << " .huffman_table[" << i << "].num_dc_codes = ";
- for (size_t j(0); j < sizeof(b.huffman_table[i].num_dc_codes); ++j) {
- if (j and (j % 12) == 0)
- os << std::endl << " ";
- os << std::hex << std::setfill('0') << std::setw(2)
- << (unsigned)b.huffman_table[i].num_dc_codes[j] << ","
- << std::dec
- ;
- sum += b.huffman_table[i].num_dc_codes[j];
- }
- os << " (sum = " << sum << ")" << std::endl;
-
- os << " .huffman_table[" << i << "].dc_values = ";
- for (size_t j(0); j < sizeof(b.huffman_table[i].dc_values); ++j) {
- if (j and (j % 12) == 0)
- os << std::endl << " ";
- os << std::hex << std::setfill('0') << std::setw(2)
- << (unsigned)b.huffman_table[i].dc_values[j] << ","
- << std::dec
- ;
- }
- os << std::endl;
-
- sum = 0;
- os << " .huffman_table[" << i << "].num_ac_codes = ";
- for (size_t j(0); j < sizeof(b.huffman_table[i].num_ac_codes); ++j) {
- if (j and (j % 12) == 0)
- os << std::endl << " ";
- os << std::hex << std::setfill('0') << std::setw(2)
- << (unsigned)b.huffman_table[i].num_ac_codes[j] << ","
- << std::dec
- ;
- sum += b.huffman_table[i].num_ac_codes[j];
- }
- os << " (sum = " << sum << ")" << std::endl;
-
- os << " .huffman_table[" << i << "].ac_values = ";
- for (size_t j(0); j < sizeof(b.huffman_table[i].ac_values); ++j) {
- if (j and (j % 12) == 0)
- os << std::endl << " ";
- os << std::hex << std::setfill('0') << std::setw(2)
- << (unsigned)b.huffman_table[i].ac_values[j] << ","
- << std::dec
- ;
- }
- os << std::endl;
- }
- return os;
-}
-
-inline std::ostream&
-operator<<(std::ostream& os, const VAHuffmanTableBufferJPEGBaseline* b)
-{
- os << *b;
- return os;
-}
-
-inline std::ostream&
-operator<<(std::ostream& os, const VAEncSliceParameterBufferJPEG& b)
-{
- os << "VAEncSliceParameterBufferJPEG (" << &b << ")" << std::endl
- << " .restart_interval = " << b.restart_interval
- << std::endl
-
- << " .num_components = " << b.num_components
- << std::endl
- ;
-
- for (size_t i(0); i < 4; ++i) {
- os << " .components[" << i << "]" << std::endl
- << " .component_selector = "
- << (unsigned)b.components[i].component_selector
- << std::endl
-
- << " .dc_table_selector = "
- << (unsigned)b.components[i].dc_table_selector
- << std::endl
-
- << " .ac_table_selector = "
- << (unsigned)b.components[i].ac_table_selector
- << std::endl
- ;
- }
-
- return os;
-}
-
-inline std::ostream&
-operator<<(std::ostream& os, const VAEncSliceParameterBufferJPEG* b)
-{
- os << *b;
- return os;
-}
-
-inline std::ostream&
-operator<<(std::ostream& os, const VAEncPackedHeaderParameterBuffer& b)
-{
- os << "VAEncPackedHeaderParameterBuffer (" << &b << ")" << std::endl
- << " .type = " << b.type
- << std::endl
- << " .bit_length = " << b.bit_length
- << std::endl
- << " .has_emulation_bytes = " << (unsigned)b.has_emulation_bytes
- << std::endl
- ;
-
- return os;
-}
-
-inline std::ostream&
-operator<<(std::ostream& os, const VAEncPackedHeaderParameterBuffer* b)
-{
- os << *b;
- return os;
-}
-
-inline std::ostream&
-operator<<(std::ostream& os, const VAImage& image)
-{
- os << "VAImage (" << &image << ")"
- << std::dec << std::endl
- << " id : " << image.image_id
- << std::endl
- << " fourcc : "
- << std::string(reinterpret_cast<const char*>(&image.format.fourcc), 4)
- << std::endl
- << " size : " << image.width << "x" << image.height
- << std::endl
- << " planes : " << image.num_planes
- << std::endl
- << " offsets : "
- << "{"
- << image.offsets[0] << ","
- << image.offsets[1] << ","
- << image.offsets[2]
- << "}"
- << std::endl
- << " pitches : "
- << "{"
- << image.pitches[0] << ","
- << image.pitches[1] << ","
- << image.pitches[2]
- << "}"
- << std::endl
- << " bpp : " << image.format.bits_per_pixel
- << std::endl
- << " depth : " << image.format.depth
- << std::endl
- << " byteorder: " << image.format.byte_order
- << std::endl
- << " rgba mask: "
- << "{"
- << image.format.red_mask << ","
- << image.format.green_mask << ","
- << image.format.blue_mask << ","
- << image.format.alpha_mask
- << "}"
- << std::endl
- << " buffer id: " << image.buf
- << std::endl
- << " data size: " << image.data_size
- ;
- return os;
-}
-
-inline std::ostream&
-operator<<(std::ostream& os, const VAProfile& profile)
-{
- switch(profile) {
- case VAProfileNone:
- return os << "VAProfileNone";
- case VAProfileMPEG2Simple:
- return os << "VAProfileMPEG2Simple";
- case VAProfileMPEG2Main:
- return os << "VAProfileMPEG2Main";
- case VAProfileMPEG4Simple:
- return os << "VAProfileMPEG4Simple";
- case VAProfileMPEG4AdvancedSimple:
- return os << "VAProfileMPEG4AdvancedSimple";
- case VAProfileMPEG4Main:
- return os << "VAProfileMPEG4Main";
- case VAProfileVC1Simple:
- return os << "VAProfileVC1Simple";
- case VAProfileVC1Main:
- return os << "VAProfileVC1Main";
- case VAProfileVC1Advanced:
- return os << "VAProfileVC1Advanced";
- case VAProfileH263Baseline:
- return os << "VAProfileH263Baseline";
- case VAProfileJPEGBaseline:
- return os << "VAProfileJPEGBaseline";
- case VAProfileVP8Version0_3:
- return os << "VAProfileVP8Version0_3";
- case VAProfileHEVCMain:
- return os << "VAProfileHEVCMain";
- case VAProfileHEVCMain10:
- return os << "VAProfileHEVCMain10";
- case VAProfileVP9Profile0:
- return os << "VAProfileVP9Profile0";
- case VAProfileVP9Profile1:
- return os << "VAProfileVP9Profile1";
- case VAProfileVP9Profile2:
- return os << "VAProfileVP9Profile2";
- case VAProfileVP9Profile3:
- return os << "VAProfileVP9Profile3";
- case VAProfileH264Baseline:
- return os << "VAProfileH264Baseline";
- case VAProfileH264ConstrainedBaseline:
- return os << "VAProfileH264ConstrainedBaseline";
- case VAProfileH264High:
- return os << "VAProfileH264High";
- case VAProfileH264Main:
- return os << "VAProfileH264Main";
- case VAProfileH264MultiviewHigh:
- return os << "VAProfileH264MultiviewHigh";
- case VAProfileH264StereoHigh:
- return os << "VAProfileH264StereoHigh";
- default:
- return os << "Unknown VAProfile: " << static_cast<int>(profile);
- }
-}
-
-inline std::ostream&
-operator<<(std::ostream& os, const VAEntrypoint& entrypoint)
-{
- switch(entrypoint) {
- case VAEntrypointVLD:
- return os << "VAEntrypointVLD";
- case VAEntrypointIZZ:
- return os << "VAEntrypointIZZ";
- case VAEntrypointIDCT:
- return os << "VAEntrypointIDCT";
- case VAEntrypointMoComp:
- return os << "VAEntrypointMoComp";
- case VAEntrypointDeblocking:
- return os << "VAEntrypointDeblocking";
- case VAEntrypointVideoProc:
- return os << "VAEntrypointVideoProc";
- case VAEntrypointEncSlice:
- return os << "VAEntrypointEncSlice";
- case VAEntrypointEncSliceLP:
- return os << "VAEntrypointEncSliceLP";
- case VAEntrypointEncPicture:
- return os << "VAEntrypointEncPicture";
- default:
- return os << "Unknown VAEntrypoint: " << static_cast<int>(entrypoint);
- }
-}
-
-#endif // I965_STREAMABLE_H
diff --git a/test/i965_surface_test.cpp b/test/i965_surface_test.cpp
deleted file mode 100644
index 10539ce..0000000
--- a/test/i965_surface_test.cpp
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "i965_test_fixture.h"
-
-#include <algorithm>
-#include <set>
-
-static const std::set<unsigned> pixelFormats = {
- /** Defined in va/va.h **/
- VA_FOURCC_NV12, VA_FOURCC_AI44, VA_FOURCC_RGBA, VA_FOURCC_RGBX,
- VA_FOURCC_BGRA, VA_FOURCC_BGRX, VA_FOURCC_ARGB, VA_FOURCC_XRGB,
- VA_FOURCC_ABGR, VA_FOURCC_XBGR, VA_FOURCC_UYVY, VA_FOURCC_YUY2,
- VA_FOURCC_AYUV, VA_FOURCC_NV11, VA_FOURCC_YV12, VA_FOURCC_P208,
- VA_FOURCC_IYUV, VA_FOURCC_YV24, VA_FOURCC_YV32, VA_FOURCC_Y800,
- VA_FOURCC_IMC3, VA_FOURCC_411P, VA_FOURCC_422H, VA_FOURCC_422V,
- VA_FOURCC_444P, VA_FOURCC_RGBP, VA_FOURCC_BGRP, VA_FOURCC_411R,
- VA_FOURCC_YV16, VA_FOURCC_P010, VA_FOURCC_P016,
-
- /** Defined in i965_fourcc.h **/
- VA_FOURCC_I420, VA_FOURCC_IA44, VA_FOURCC_IA88, VA_FOURCC_AI88,
- VA_FOURCC_IMC1, VA_FOURCC_YVY2,
-
- /** Bogus pixel formats **/
- VA_FOURCC('B','E','E','F'), VA_FOURCC('P','O','R','K'),
- VA_FOURCC('F','I','S','H'),
-};
-
-class CreateSurfacesTest
- : public I965TestFixture
-{
-protected:
- const std::set<unsigned> supported = {
- VA_FOURCC_NV12, VA_FOURCC_I420, VA_FOURCC_IYUV, VA_FOURCC_IMC3,
- VA_FOURCC_YV12, VA_FOURCC_IMC1, VA_FOURCC_P010, VA_FOURCC_422H,
- VA_FOURCC_422V, VA_FOURCC_YV16, VA_FOURCC_YUY2, VA_FOURCC_UYVY,
- VA_FOURCC_444P, VA_FOURCC_411P, VA_FOURCC_Y800, VA_FOURCC_RGBA,
- VA_FOURCC_RGBX, VA_FOURCC_BGRA, VA_FOURCC_BGRX,
- };
-};
-
-TEST_F(CreateSurfacesTest, SupportedPixelFormats)
-{
- SurfaceAttribs attributes(1);
- attributes.front().flags = VA_SURFACE_ATTRIB_SETTABLE;
- attributes.front().type = VASurfaceAttribPixelFormat;
- attributes.front().value.type = VAGenericValueTypeInteger;
-
- for (const unsigned fourcc : supported) {
- SCOPED_TRACE(
- ::testing::Message()
- << std::string(reinterpret_cast<const char*>(&fourcc), 4)
- << "(0x" << std::hex << fourcc << std::dec << ")");
-
- const i965_fourcc_info *info = get_fourcc_info(fourcc);
- EXPECT_PTR(info);
- EXPECT_TRUE(info->flag & 1);
-
- attributes.front().value.value.i = fourcc;
- Surfaces surfaces = createSurfaces(
- 10, 10, VA_RT_FORMAT_YUV420, 1, attributes);
- destroySurfaces(surfaces);
- }
-}
-
-TEST_F(CreateSurfacesTest, UnsupportedPixelFormats)
-{
- SurfaceAttribs attributes(1);
- attributes.front().flags = VA_SURFACE_ATTRIB_SETTABLE;
- attributes.front().type = VASurfaceAttribPixelFormat;
- attributes.front().value.type = VAGenericValueTypeInteger;
-
- std::set<unsigned> unsupported;
- std::set_difference(pixelFormats.begin(), pixelFormats.end(),
- supported.begin(), supported.end(),
- std::inserter(unsupported, unsupported.begin()));
-
- EXPECT_EQ(pixelFormats.size() - supported.size(), unsupported.size());
-
- for (const unsigned fourcc : unsupported) {
- SCOPED_TRACE(
- ::testing::Message()
- << std::string(reinterpret_cast<const char*>(&fourcc), 4)
- << "(0x" << std::hex << fourcc << std::dec << ")");
-
- const i965_fourcc_info *info = get_fourcc_info(fourcc);
- EXPECT_FALSE(info ? info->flag & 1 : false);
-
- attributes.front().value.value.i = fourcc;
- Surfaces surfaces;
- EXPECT_NONFATAL_FAILURE(
- surfaces = createSurfaces(
- 10, 10, VA_RT_FORMAT_YUV420, 1, attributes),
- "VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT"
- );
- EXPECT_NONFATAL_FAILURE(
- destroySurfaces(surfaces), "VA_STATUS_ERROR_INVALID_SURFACE");
- }
-}
diff --git a/test/i965_test_environment.cpp b/test/i965_test_environment.cpp
deleted file mode 100644
index ee8b1cc..0000000
--- a/test/i965_test_environment.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "i965_test_environment.h"
-
-#include <cstdlib>
-#include <ctime>
-#include <fcntl.h> // for O_RDWR
-#include <unistd.h> // for close()
-#include <va/va_drm.h>
-
-I965TestEnvironment* I965TestEnvironment::instance()
-{
- static I965TestEnvironment* e = new I965TestEnvironment;
- return e;
-}
-
-I965TestEnvironment::I965TestEnvironment()
- : ::testing::Environment()
- , m_handle(-1)
- , m_vaDisplay(NULL)
-{
- return;
-}
-
-void I965TestEnvironment::SetUp()
-{
- std::time_t seed(std::time(0));
- std::srand(seed);
- ::testing::Test::RecordProperty("rand_seed", seed);
- std::cout << "Seeded std::rand() with " << seed << "." << std::endl;
-
- ASSERT_EQ(-1, m_handle);
- ASSERT_PTR_NULL(m_vaDisplay);
-
- m_handle = open("/dev/dri/renderD128", O_RDWR);
- if (m_handle < 0)
- m_handle = open("/dev/dri/card0", O_RDWR);
-
- m_vaDisplay = vaGetDisplayDRM(m_handle);
-
- ASSERT_PTR(m_vaDisplay);
-
- setenv("LIBVA_DRIVERS_PATH", TEST_VA_DRIVERS_PATH, 1);
- setenv("LIBVA_DRIVER_NAME", "i965", 1);
-
- int major, minor;
- ASSERT_STATUS(vaInitialize(*this, &major, &minor));
-
- EXPECT_EQ(VA_MAJOR_VERSION, major);
- EXPECT_EQ(VA_MINOR_VERSION, minor);
-
- VADriverContextP context(*this);
- ASSERT_PTR(context);
-
- const std::string vendor(context->str_vendor);
-
- ::testing::Test::RecordProperty("driver_vendor", vendor);
- ::testing::Test::RecordProperty("vaapi_version", VA_VERSION_S);
-}
-
-void I965TestEnvironment::TearDown()
-{
- if (m_vaDisplay)
- EXPECT_STATUS(vaTerminate(m_vaDisplay));
-
- if (m_handle >= 0)
- close(m_handle);
-
- m_handle = -1;
- m_vaDisplay = NULL;
-}
diff --git a/test/i965_test_environment.h b/test/i965_test_environment.h
deleted file mode 100644
index b80c360..0000000
--- a/test/i965_test_environment.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef I965_TEST_ENVIRONMENT_H
-#define I965_TEST_ENVIRONMENT_H
-
-#include "test.h"
-#include "i965_internal_decl.h"
-
-/**
- * This test environment handles initialization and termination of the i965
- * driver and display. It defines various operators to make it implicitly
- * convertible to a VADriverContextP, VADisplay, VADisplayContextP, and
- * i965_driver_data*. Other operators may be defined, too. These operators
- * allow an instance of the test environment to be passed to various driver
- * functions that take one of those parameter types.
- *
- * See the "Global Set-Up and Tear-Down" section in gtest/docs/AdvancedGuide.md
- * for more details on how a ::testing::Environment operates.
- */
-class I965TestEnvironment
- : public ::testing::Environment
-{
-protected:
- /**
- * This is invoked by gtest before any tests are executed. Gtest will not
- * run any tests if this method generates a fatal test assertion failure.
- */
- virtual void SetUp();
-
- /**
- * This is invoked by gtest after all the tests are executed. If SetUp()
- * generates a fatal test assertion, this is also invoked by gtest
- * afterwards.
- */
- virtual void TearDown();
-
-private:
- I965TestEnvironment();
-
- int m_handle; /* current native display handle */
- VADisplay m_vaDisplay; /* current VADisplay handle */
-
-public:
- static I965TestEnvironment* instance();
-
- /**
- * VADisplay implicit and explicit conversion operator.
- */
- inline operator VADisplay() { return m_vaDisplay; }
-
- /**
- * VADisplayContextP implict and explicit conversion operator.
- */
- inline operator VADisplayContextP()
- {
- return (VADisplayContextP)((VADisplay)*this);
- }
-
- /**
- * VADriverContextP implict and explicit conversion operator.
- */
- inline operator VADriverContextP()
- {
- VADisplayContextP dctx(*this);
- return dctx ? dctx->pDriverContext : NULL;
- }
-
- /**
- * i965_driver_data * implict and explicit conversion operator.
- */
- inline operator struct i965_driver_data *()
- {
- VADriverContextP ctx(*this);
- return ctx ? i965_driver_data(ctx) : NULL;
- }
-};
-
-#endif
diff --git a/test/i965_test_fixture.cpp b/test/i965_test_fixture.cpp
deleted file mode 100644
index ac44ddf..0000000
--- a/test/i965_test_fixture.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "i965_test_fixture.h"
-
-const std::string I965TestFixture::getFullTestName() const
-{
- const ::testing::TestInfo * const info =
- ::testing::UnitTest::GetInstance()->current_test_info();
- return std::string(info->test_case_name())
- + std::string(".")
- + std::string(info->name());
-}
-
-Surfaces I965TestFixture::createSurfaces(int w, int h, int format, size_t count,
- const SurfaceAttribs& attributes)
-{
- Surfaces surfaces(count, VA_INVALID_ID);
- if (attributes.empty()) {
- EXPECT_STATUS(
- i965_CreateSurfaces(
- *this, w, h, format, surfaces.size(), surfaces.data()));
- } else {
- VADriverContextP ctx(*this);
- EXPECT_PTR(ctx);
- if (ctx)
- EXPECT_STATUS(
- ctx->vtable->vaCreateSurfaces2(
- *this, format, w, h, surfaces.data(), surfaces.size(),
- const_cast<VASurfaceAttrib*>(attributes.data()),
- attributes.size()));
- }
-
- for (size_t i(0); i < count; ++i) {
- EXPECT_ID(surfaces[i]);
- }
-
- return surfaces;
-}
-
-void I965TestFixture::destroySurfaces(Surfaces& surfaces)
-{
- EXPECT_STATUS(
- i965_DestroySurfaces(*this, surfaces.data(), surfaces.size()));
-}
-
-VAConfigID I965TestFixture::createConfig(
- VAProfile profile, VAEntrypoint entrypoint, const ConfigAttribs& attribs)
-{
- VAConfigID id = VA_INVALID_ID;
- EXPECT_STATUS(
- i965_CreateConfig(
- *this, profile, entrypoint,
- const_cast<VAConfigAttrib*>(attribs.data()), attribs.size(), &id));
- EXPECT_ID(id);
-
- return id;
-}
-
-void I965TestFixture::destroyConfig(VAConfigID id)
-{
- EXPECT_STATUS(i965_DestroyConfig(*this, id));
-}
-
-VAContextID I965TestFixture::createContext(
- VAConfigID config, int w, int h, int flags, const Surfaces& targets)
-{
- VAContextID id = VA_INVALID_ID;
- EXPECT_STATUS(
- i965_CreateContext(
- *this, config, w, h, flags,
- const_cast<VASurfaceID*>(targets.data()), targets.size(), &id));
- EXPECT_ID(id);
-
- return id;
-}
-
-void I965TestFixture::destroyContext(VAContextID id)
-{
- EXPECT_STATUS(i965_DestroyContext(*this, id));
-}
-
-VABufferID I965TestFixture::createBuffer(
- VAContextID context, VABufferType type,
- unsigned size, unsigned num, const void *data)
-{
- VABufferID id;
- EXPECT_STATUS(
- i965_CreateBuffer(*this, context, type, size, num, (void*)data, &id));
- EXPECT_ID(id);
-
- return id;
-}
-
-void I965TestFixture::beginPicture(VAContextID context, VASurfaceID target)
-{
- EXPECT_STATUS(
- i965_BeginPicture(*this, context, target));
-}
-
-void I965TestFixture::renderPicture(
- VAContextID context, VABufferID *bufs, int num_bufs)
-{
- EXPECT_STATUS(
- i965_RenderPicture(*this, context, bufs, num_bufs));
-}
-
-void I965TestFixture::endPicture(VAContextID context)
-{
- EXPECT_STATUS(
- i965_EndPicture(*this, context));
-}
-
-void I965TestFixture::destroyBuffer(VABufferID id)
-{
- EXPECT_STATUS(
- i965_DestroyBuffer(*this, id));
-}
-
-void I965TestFixture::deriveImage(VASurfaceID surface, VAImage &image)
-{
- EXPECT_STATUS(
- i965_DeriveImage(*this, surface, &image));
-}
-
-void I965TestFixture::destroyImage(VAImage &image)
-{
- EXPECT_STATUS(
- i965_DestroyImage(*this, image.image_id));
-}
-
-void I965TestFixture::syncSurface(VASurfaceID surface)
-{
- EXPECT_STATUS(
- i965_SyncSurface(*this, surface));
-}
diff --git a/test/i965_test_fixture.h b/test/i965_test_fixture.h
deleted file mode 100644
index 02c1dbb..0000000
--- a/test/i965_test_fixture.h
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef I965_TEST_FIXTURE_H
-#define I965_TEST_FIXTURE_H
-
-#include "i965_test_environment.h"
-
-#include <string>
-#include <vector>
-
-typedef std::vector<VASurfaceID> Surfaces;
-typedef std::vector<VASurfaceAttrib> SurfaceAttribs;
-typedef std::vector<VAConfigAttrib> ConfigAttribs;
-typedef std::vector<VABufferID> Buffers;
-
-/**
- * This test fixture defines various operators to make it implicitly convertible
- * to a VADriverContextP, VADisplay, VADisplayContextP, and i965_driver_data*.
- * Other operators may be defined, too. These operators allow an instance of
- * the test fixture to be passed to various driver functions that take one of
- * those parameter types. Various driver functions are also wrapped by this
- * test fixture to simplify writing test cases.
- *
- * Test cases that wish to use this fixture should define their own test
- * fixture class that derives from this one.
- *
- * See the "Test Fixtures" section in gtest/docs/Primer.md for more details
- * on how test fixtures are used.
- */
-class I965TestFixture
- : public ::testing::Test
-{
-public:
- virtual ~I965TestFixture() { }
-
- const std::string getFullTestName() const;
-
- /**
- * Convenience wrapper for i965_CreateSurfaces or i965_CreateSurfaces2.
- * If SurfaceAttribs are specified then i965_CreateSurfaces2 is used,
- * otherwise i965_CreateSurfaces is used. May generate a non-fatal test
- * assertion failure.
- */
- Surfaces createSurfaces(int w, int h, int format, size_t count = 1,
- const SurfaceAttribs& = SurfaceAttribs());
-
- /**
- * Convenience wrapper for i965_DestroySurfaces. May generate a non-fatal
- * test assertion failure.
- */
- void destroySurfaces(Surfaces&);
-
- /**
- * Convenience wrapper for i965_CreateConfig. May generate a non-fatal
- * test assertion failure.
- */
- VAConfigID createConfig(VAProfile, VAEntrypoint,
- const ConfigAttribs& = ConfigAttribs());
-
- /**
- * Convenience wrapper for i965_DestroyConfig. May generate a non-fatal
- * test assertion failure.
- */
- void destroyConfig(VAConfigID);
-
- /**
- * Convenience wrapper for i965_CreateContext. May generate a non-fatal
- * test assertion failure.
- */
- VAContextID createContext(VAConfigID, int, int, int = 0,
- const Surfaces& = Surfaces());
-
- /**
- * Convenience wrapper for i965_DestroyContext. May generate a non-fatal
- * test assertion failure.
- */
- void destroyContext(VAContextID);
-
- /**
- * Convenience wrapper for i965_CreateBuffer. May generate a non-fatal
- * test assertion failure.
- */
- VABufferID createBuffer(
- VAContextID, VABufferType, unsigned, unsigned = 1, const void * = NULL);
-
- /**
- * Convenience wrapper for i965_DestroyBuffer. May generate a non-fatal
- * test assertion failure.
- */
- void destroyBuffer(VABufferID);
-
- /**
- * Convenience wrapper for i965_MapBuffer. May generate a non-fatal
- * test assertion failure.
- */
- template<typename T>
- T* mapBuffer(VABufferID id)
- {
- T* data = NULL;
- EXPECT_STATUS(
- i965_MapBuffer(*this, id, (void**)&data));
- EXPECT_PTR(data);
- return data;
- }
-
- /**
- * Convenience Wrapper for i965_UnmapBuffer. May generate a non-fatal
- * test assertion failure.
- */
- void unmapBuffer(VABufferID id)
- {
- EXPECT_STATUS(
- i965_UnmapBuffer(*this, id));
- }
-
- /**
- * Convenience wrapper for i965_BeginPicture. May generate a non-fatal
- * test assertion failure.
- */
- void beginPicture(VAContextID, VASurfaceID);
-
- /**
- * Convenience wrapper for i965_RenderPicture. May generate a non-fatal
- * test assertion failure.
- */
- void renderPicture(VAContextID, VABufferID *, int = 1);
-
- /**
- * Convenience wrapper for i965_EndPicture. May generate a non-fatal
- * test assertion failure.
- */
- void endPicture(VAContextID);
-
- /**
- * Convenience wrapper for i965_DeriveImage. May generate a non-fatal
- * test assertion failure.
- */
- void deriveImage(VASurfaceID, VAImage &);
-
- /**
- * Convenience wrapper for i965_DestroyImage. May generate a non-fatal
- * test assertion failure.
- */
- void destroyImage(VAImage &);
-
- /**
- * Convenience wrapper for i965_SyncSurface. May generate a non-fatal
- * test assertion failure.
- */
- void syncSurface(VASurfaceID);
-
- /**
- * VADisplay implicit and explicit conversion operator.
- */
- inline operator VADisplay()
- { return *I965TestEnvironment::instance(); }
-
- /**
- * VADisplayContextP implict and explicit conversion operator.
- */
- inline operator VADisplayContextP()
- { return *I965TestEnvironment::instance(); }
-
- /**
- * VADriverContextP implict and explicit conversion operator.
- */
- inline operator VADriverContextP()
- { return *I965TestEnvironment::instance(); }
-
- /**
- * i965_driver_data * implict and explicit conversion operator.
- */
- inline operator struct i965_driver_data *()
- { return *I965TestEnvironment::instance(); }
-};
-
-#endif
diff --git a/test/i965_test_image_utils.cpp b/test/i965_test_image_utils.cpp
deleted file mode 100644
index bdfcbf3..0000000
--- a/test/i965_test_image_utils.cpp
+++ /dev/null
@@ -1,747 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "i965_test_environment.h"
-#include "i965_test_image_utils.h"
-
-#include <cstring> // std::memset
-
-YUVImage::YUVImage()
- : bytes()
- , width(0)
- , height(0)
- , fourcc(0)
- , format(0)
- , planes(0)
- , widths{0,0,0}
- , heights{0,0,0}
- , offsets{0,0,0}
- , sizes{0,0,0}
- , slices()
-{
- return;
-}
-
-YUVImage::Shared YUVImage::create(
- const unsigned fourcc, size_t w, size_t h)
-{
- Shared t(new YUVImage);
-
- t->fourcc = fourcc;
- t->width = w = w + (w & 1);
- t->height = h = h + (h & 1);
-
- switch(fourcc) {
- case VA_FOURCC_444P:
- t->planes = 3;
- t->widths = {w, w, w};
- t->heights = {h, h, h};
- t->format = VA_RT_FORMAT_YUV444;
- break;
- case VA_FOURCC_IMC3:
- case VA_FOURCC_I420:
- t->planes = 3;
- t->widths = {w, w >> 1, w >> 1};
- t->heights = {h, h >> 1, h >> 1};
- t->format = VA_RT_FORMAT_YUV420;
- break;
- case VA_FOURCC_NV12:
- t->planes = 2;
- t->widths = {w, w, 0};
- t->heights = {h, h >> 1, 0};
- t->format = VA_RT_FORMAT_YUV420;
- break;
- case VA_FOURCC_UYVY:
- case VA_FOURCC_YUY2:
- t->planes = 1;
- t->widths = {w << 1, 0, 0};
- t->heights = {h, 0, 0};
- t->format = VA_RT_FORMAT_YUV422;
- break;
- case VA_FOURCC_422H:
- t->planes = 3;
- t->widths = {w, w >> 1, w >> 1};
- t->heights = {h, h, h};
- t->format = VA_RT_FORMAT_YUV422;
- break;
- case VA_FOURCC_422V:
- t->planes = 3;
- t->widths = {w, w, w};
- t->heights = {h, h >> 1,h >> 1};
- t->format = VA_RT_FORMAT_YUV422;
- break;
- case VA_FOURCC_Y800:
- t->planes = 1;
- t->widths = {w, 0, 0};
- t->heights = {h, 0, 0};
- t->format = VA_RT_FORMAT_YUV400;
- break;
- default:
- return Shared(); // fourcc is unsupported
- }
-
- t->sizes = t->widths * t->heights;
- t->bytes = std::valarray<uint8_t>(t->sizes.sum());
-
- for (size_t i(1); i < t->planes; ++i)
- t->offsets[i] = t->sizes[i - 1] + t->offsets[i - 1];
-
- // Initialize slices
- switch(fourcc) {
- case VA_FOURCC_444P:
- case VA_FOURCC_IMC3:
- case VA_FOURCC_I420:
- case VA_FOURCC_422H:
- case VA_FOURCC_422V:
- t->slices[1] = std::slice{t->offsets[1], t->sizes[1], 1};
- t->slices[2] = std::slice{t->offsets[2], t->sizes[2], 1};
- /* fall-through */
- case VA_FOURCC_Y800:
- t->slices[0] = std::slice{t->offsets[0], t->sizes[0], 1};
- break;
- case VA_FOURCC_NV12:
- t->slices[0] = std::slice{t->offsets[0], t->sizes[0], 1};
- t->slices[1] = std::slice{t->offsets[1], t->sizes[1]/2, 2};
- t->slices[2] = std::slice{t->offsets[1] + 1, t->sizes[1]/2, 2};
- break;
- case VA_FOURCC_UYVY:
- t->slices[0] = std::slice{t->offsets[0] + 1, t->sizes[0]/2, 2};
- t->slices[1] = std::slice{t->offsets[0], t->sizes[0]/4, 4};
- t->slices[2] = std::slice{t->offsets[0] + 2, t->sizes[0]/4, 4};
- break;
- case VA_FOURCC_YUY2:
- t->slices[0] = std::slice{t->offsets[0], t->sizes[0]/2, 2};
- t->slices[1] = std::slice{t->offsets[0] + 1, t->sizes[0]/4, 4};
- t->slices[2] = std::slice{t->offsets[0] + 3, t->sizes[0]/4, 4};
- break;
- default:
- return Shared(); // fourcc is unsupported
- }
-
- return t;
-}
-
-YUVImage::Shared YUVImage::create(const VAImage& image)
-{
- I965TestEnvironment& env = *I965TestEnvironment::instance();
-
- Shared result = create(image.format.fourcc, image.width, image.height);
- EXPECT_PTR(result.get());
-
- if (::testing::Test::HasFailure())
- return Shared();
-
- EXPECT_EQ(result->fourcc, image.format.fourcc);
- EXPECT_EQ(result->planes, image.num_planes);
- EXPECT_EQ(result->width, image.width);
- EXPECT_EQ(result->height, image.height);
- EXPECT_GE(image.data_size, result->bytes.size());
-
- if (::testing::Test::HasFailure())
- return Shared();
-
- uint8_t* data = NULL;
- EXPECT_STATUS(i965_MapBuffer(env, image.buf, (void**)&data));
-
- if (::testing::Test::HasFailure())
- return Shared();
-
- auto it(std::begin(result->bytes));
- for (size_t i(0); i < image.num_planes; ++i) {
- const size_t pitch(image.pitches[i]);
- const size_t width(result->widths[i]);
- const size_t height(result->heights[i]);
- const uint8_t *source = data + image.offsets[i];
-
- EXPECT_GE(pitch, width);
- if (::testing::Test::HasFailure())
- break;
-
- for (size_t j(0); j < height; ++j) {
- std::copy(source, source + width, it);
- source += pitch;
- it += width;
- }
- }
-
- EXPECT_STATUS(i965_UnmapBuffer(env, image.buf));
-
- if (::testing::Test::HasFailure())
- return Shared();
-
- return result;
-}
-
-YUVImage::Shared YUVImage::create(const VASurfaceID surface)
-{
- I965TestEnvironment& env = *I965TestEnvironment::instance();
- VAImage image;
-
- EXPECT_STATUS(i965_DeriveImage(env, surface, &image));
-
- if (::testing::Test::HasFailure())
- return Shared();
-
- Shared result = YUVImage::create(image);
-
- EXPECT_STATUS(i965_DestroyImage(env, image.image_id));
-
- return result;
-}
-
-void YUVImage::toSurface(VASurfaceID surface) const
-{
- I965TestEnvironment& env = *I965TestEnvironment::instance();
- VAImage image;
-
- ASSERT_STATUS(i965_DeriveImage(env, surface, &image));
-
- EXPECT_ID(image.image_id);
- EXPECT_EQ(fourcc, image.format.fourcc);
- EXPECT_EQ(planes, image.num_planes);
- EXPECT_EQ(width, image.width);
- EXPECT_EQ(height, image.height);
- EXPECT_GE(image.data_size, bytes.size());
-
- if (::testing::Test::HasFailure()) {
- EXPECT_STATUS(i965_DestroyImage(env, image.image_id));
- return;
- }
-
- uint8_t* data = NULL;
- EXPECT_STATUS(i965_MapBuffer(env, image.buf, (void**)&data));
- EXPECT_PTR(data);
-
- if (::testing::Test::HasFailure()) {
- EXPECT_STATUS(i965_DestroyImage(env, image.image_id));
- return;
- }
-
- std::memset(data, 0, image.data_size);
-
- auto it(std::begin(bytes));
- for (size_t i(0); i < image.num_planes; ++i) {
- const size_t pitch(image.pitches[i]);
- const size_t w(widths[i]);
- const size_t h(heights[i]);
- uint8_t *dest = data + image.offsets[i];
-
- EXPECT_GE(pitch, w);
- if (::testing::Test::HasFailure())
- break;
-
- for (size_t j(0); j < h; ++j) {
- std::copy(it, it + w, dest);
- dest += pitch;
- it += w;
- }
- }
-
- EXPECT_STATUS(i965_UnmapBuffer(env, image.buf));
- EXPECT_STATUS(i965_DestroyImage(env, image.image_id));
-}
-
-TEST(YUVImageTest, 444P)
-{
- std::valarray<uint8_t> data = {
- 0x11,0xaf,0x23,0xff,0x00,0x73,0x54,0xcc,0xca,0x6b,0x12,0x99
- };
-
- YUVImage::Shared image = YUVImage::create(VA_FOURCC_444P, 2, 2);
- ASSERT_PTR(image.get());
-
- EXPECT_EQ(data.size(), image->bytes.size());
- EXPECT_EQ(2u, image->width);
- EXPECT_EQ(2u, image->height);
- EXPECT_EQ(3u, image->planes);
- EXPECT_TRUE( (std::valarray<size_t>{2,2,2} == image->widths).min() );
- EXPECT_TRUE( (std::valarray<size_t>{2,2,2} == image->heights).min() );
- EXPECT_TRUE( (std::valarray<size_t>{4,4,4} == image->sizes).min() );
- EXPECT_TRUE( (std::valarray<size_t>{0,4,8} == image->offsets).min() );
-
- image->bytes = data;
-
- std::valarray<uint8_t> y = image->y();
- std::valarray<uint8_t> u = image->u();
- std::valarray<uint8_t> v = image->v();
-
- EXPECT_TRUE( (std::valarray<uint8_t>{0x11,0xaf,0x23,0xff} == y).min() );
- EXPECT_TRUE( (std::valarray<uint8_t>{0x00,0x73,0x54,0xcc} == u).min() );
- EXPECT_TRUE( (std::valarray<uint8_t>{0xca,0x6b,0x12,0x99} == v).min() );
-
- image->bytes = uint8_t(0);
-
- EXPECT_FALSE( (image->bytes == data).min() );
-
- image->y() = y;
- image->u() = u;
- image->v() = v;
-
- EXPECT_TRUE( (image->bytes == data).min() );
-}
-
-TEST(YUVImageTest, IMC3)
-{
- std::valarray<uint8_t> data = {0x11,0xaf,0x23,0xff,0x00,0x73};
-
- YUVImage::Shared image = YUVImage::create(VA_FOURCC_IMC3, 2, 2);
- ASSERT_PTR(image.get());
-
- EXPECT_EQ(data.size(), image->bytes.size());
- EXPECT_EQ(2u, image->width);
- EXPECT_EQ(2u, image->height);
- EXPECT_EQ(3u, image->planes);
- EXPECT_TRUE( (std::valarray<size_t>{2,1,1} == image->widths).min() );
- EXPECT_TRUE( (std::valarray<size_t>{2,1,1} == image->heights).min() );
- EXPECT_TRUE( (std::valarray<size_t>{4,1,1} == image->sizes).min() );
- EXPECT_TRUE( (std::valarray<size_t>{0,4,5} == image->offsets).min() );
-
- image->bytes = data;
-
- std::valarray<uint8_t> y = image->y();
- std::valarray<uint8_t> u = image->u();
- std::valarray<uint8_t> v = image->v();
-
- EXPECT_TRUE( (std::valarray<uint8_t>{0x11,0xaf,0x23,0xff} == y).min() );
- EXPECT_TRUE( (std::valarray<uint8_t>{0x00} == u).min() );
- EXPECT_TRUE( (std::valarray<uint8_t>{0x73} == v).min() );
-
- image->bytes = uint8_t(0);
-
- EXPECT_FALSE( (image->bytes == data).min() );
-
- image->y() = y;
- image->u() = u;
- image->v() = v;
-
- EXPECT_TRUE( (image->bytes == data).min() );
-}
-
-TEST(YUVImageTest, I420)
-{
- std::valarray<uint8_t> data = {0x11,0xaf,0x23,0xff,0x00,0x73};
-
- YUVImage::Shared image = YUVImage::create(VA_FOURCC_I420, 2, 2);
- ASSERT_PTR(image.get());
-
- EXPECT_EQ(data.size(), image->bytes.size());
- EXPECT_EQ(2u, image->width);
- EXPECT_EQ(2u, image->height);
- EXPECT_EQ(3u, image->planes);
- EXPECT_TRUE( (std::valarray<size_t>{2,1,1} == image->widths).min() );
- EXPECT_TRUE( (std::valarray<size_t>{2,1,1} == image->heights).min() );
- EXPECT_TRUE( (std::valarray<size_t>{4,1,1} == image->sizes).min() );
- EXPECT_TRUE( (std::valarray<size_t>{0,4,5} == image->offsets).min() );
-
- image->bytes = data;
-
- std::valarray<uint8_t> y = image->y();
- std::valarray<uint8_t> u = image->u();
- std::valarray<uint8_t> v = image->v();
-
- EXPECT_TRUE( (std::valarray<uint8_t>{0x11,0xaf,0x23,0xff} == y).min() );
- EXPECT_TRUE( (std::valarray<uint8_t>{0x00} == u).min() );
- EXPECT_TRUE( (std::valarray<uint8_t>{0x73} == v).min() );
-
- image->bytes = uint8_t(0);
-
- EXPECT_FALSE( (image->bytes == data).min() );
-
- image->y() = y;
- image->u() = u;
- image->v() = v;
-
- EXPECT_TRUE( (image->bytes == data).min() );
-}
-
-TEST(YUVImageTest, NV12)
-{
- std::valarray<uint8_t> data = {
- 0x11,0xaf,0x23,0xff,0x00,0x73,0x54,0xcc,0xca,0x6b,0x12,0x99};
-
- YUVImage::Shared image = YUVImage::create(VA_FOURCC_NV12, 2, 4);
- ASSERT_PTR(image.get());
-
- EXPECT_EQ(data.size(), image->bytes.size());
- EXPECT_EQ(2u, image->width);
- EXPECT_EQ(4u, image->height);
- EXPECT_EQ(2u, image->planes);
- EXPECT_TRUE( (std::valarray<size_t>{2,2,0} == image->widths).min() );
- EXPECT_TRUE( (std::valarray<size_t>{4,2,0} == image->heights).min() );
- EXPECT_TRUE( (std::valarray<size_t>{8,4,0} == image->sizes).min() );
- EXPECT_TRUE( (std::valarray<size_t>{0,8,0} == image->offsets).min() );
-
- image->bytes = data;
-
- std::valarray<uint8_t> y = image->y();
- std::valarray<uint8_t> u = image->u();
- std::valarray<uint8_t> v = image->v();
-
- EXPECT_TRUE( (std::valarray<uint8_t>{0x11,0xaf,0x23,0xff,0x00,0x73,0x54,0xcc} == y).min() );
- EXPECT_TRUE( (std::valarray<uint8_t>{0xca,0x12} == u).min() );
- EXPECT_TRUE( (std::valarray<uint8_t>{0x6b,0x99} == v).min() );
-
- image->bytes = uint8_t(0);
-
- EXPECT_FALSE( (image->bytes == data).min() );
-
- image->y() = y;
- image->u() = u;
- image->v() = v;
-
- EXPECT_TRUE( (image->bytes == data).min() );
-}
-
-TEST(YUVImageTest, UYVY)
-{
- std::valarray<uint8_t> data = {0x11,0xaf,0x23,0xff,0x00,0x73,0x54,0xcc};
-
- YUVImage::Shared image = YUVImage::create(VA_FOURCC_UYVY, 2, 2);
- ASSERT_PTR(image.get());
-
- EXPECT_EQ(data.size(), image->bytes.size());
- EXPECT_EQ(2u, image->width);
- EXPECT_EQ(2u, image->height);
- EXPECT_EQ(1u, image->planes);
- EXPECT_TRUE( (std::valarray<size_t>{4,0,0} == image->widths).min() );
- EXPECT_TRUE( (std::valarray<size_t>{2,0,0} == image->heights).min() );
- EXPECT_TRUE( (std::valarray<size_t>{8,0,0} == image->sizes).min() );
- EXPECT_TRUE( (std::valarray<size_t>{0,0,0} == image->offsets).min() );
-
- image->bytes = data;
-
- std::valarray<uint8_t> y = image->y();
- std::valarray<uint8_t> u = image->u();
- std::valarray<uint8_t> v = image->v();
-
- EXPECT_TRUE( (std::valarray<uint8_t>{0xaf,0xff,0x73,0xcc} == y).min() );
- EXPECT_TRUE( (std::valarray<uint8_t>{0x11,0x00} == u).min() );
- EXPECT_TRUE( (std::valarray<uint8_t>{0x23,0x54} == v).min() );
-
- image->bytes = uint8_t(0);
-
- EXPECT_FALSE( (image->bytes == data).min() );
-
- image->y() = y;
- image->u() = u;
- image->v() = v;
-
- EXPECT_TRUE( (image->bytes == data).min() );
-}
-
-TEST(YUVImageTest, YUY2)
-{
- std::valarray<uint8_t> data = {0x11,0xaf,0x23,0xff,0x00,0x73,0x54,0xcc};
-
- YUVImage::Shared image = YUVImage::create(VA_FOURCC_YUY2, 2, 2);
- ASSERT_PTR(image.get());
-
- EXPECT_EQ(data.size(), image->bytes.size());
- EXPECT_EQ(2u, image->width);
- EXPECT_EQ(2u, image->height);
- EXPECT_EQ(1u, image->planes);
- EXPECT_TRUE( (std::valarray<size_t>{4,0,0} == image->widths).min() );
- EXPECT_TRUE( (std::valarray<size_t>{2,0,0} == image->heights).min() );
- EXPECT_TRUE( (std::valarray<size_t>{8,0,0} == image->sizes).min() );
- EXPECT_TRUE( (std::valarray<size_t>{0,0,0} == image->offsets).min() );
-
- image->bytes = data;
-
- std::valarray<uint8_t> y = image->y();
- std::valarray<uint8_t> u = image->u();
- std::valarray<uint8_t> v = image->v();
-
- EXPECT_TRUE( (std::valarray<uint8_t>{0x11,0x23,0x00,0x54} == y).min() );
- EXPECT_TRUE( (std::valarray<uint8_t>{0xaf,0x73} == u).min() );
- EXPECT_TRUE( (std::valarray<uint8_t>{0xff,0xcc} == v).min() );
-
- image->bytes = uint8_t(0);
-
- EXPECT_FALSE( (image->bytes == data).min() );
-
- image->y() = y;
- image->u() = u;
- image->v() = v;
-
- EXPECT_TRUE( (image->bytes == data).min() );
-}
-
-TEST(YUVImageTest, 422H)
-{
- std::valarray<uint8_t> data = {0x11,0xaf,0x23,0xff,0x00,0x73,0x54,0xcc};
-
- YUVImage::Shared image = YUVImage::create(VA_FOURCC_422H, 2, 2);
- ASSERT_PTR(image.get());
-
- EXPECT_EQ(data.size(), image->bytes.size());
- EXPECT_EQ(2u, image->width);
- EXPECT_EQ(2u, image->height);
- EXPECT_EQ(3u, image->planes);
- EXPECT_TRUE( (std::valarray<size_t>{2,1,1} == image->widths).min() );
- EXPECT_TRUE( (std::valarray<size_t>{2,2,2} == image->heights).min() );
- EXPECT_TRUE( (std::valarray<size_t>{4,2,2} == image->sizes).min() );
- EXPECT_TRUE( (std::valarray<size_t>{0,4,6} == image->offsets).min() );
-
- image->bytes = data;
-
- std::valarray<uint8_t> y = image->y();
- std::valarray<uint8_t> u = image->u();
- std::valarray<uint8_t> v = image->v();
-
- EXPECT_TRUE( (std::valarray<uint8_t>{0x11,0xaf,0x23,0xff} == y).min() );
- EXPECT_TRUE( (std::valarray<uint8_t>{0x00,0x73} == u).min() );
- EXPECT_TRUE( (std::valarray<uint8_t>{0x54,0xcc} == v).min() );
-
- image->bytes = uint8_t(0);
-
- EXPECT_FALSE( (image->bytes == data).min() );
-
- image->y() = y;
- image->u() = u;
- image->v() = v;
-
- EXPECT_TRUE( (image->bytes == data).min() );
-}
-
-TEST(YUVImageTest, 422V)
-{
- std::valarray<uint8_t> data = {0x11,0xaf,0x23,0xff,0x00,0x73,0x54,0xcc};
-
- YUVImage::Shared image = YUVImage::create(VA_FOURCC_422V, 2, 2);
- ASSERT_PTR(image.get());
-
- EXPECT_EQ(data.size(), image->bytes.size());
- EXPECT_EQ(2u, image->width);
- EXPECT_EQ(2u, image->height);
- EXPECT_EQ(3u, image->planes);
- EXPECT_TRUE( (std::valarray<size_t>{2,2,2} == image->widths).min() );
- EXPECT_TRUE( (std::valarray<size_t>{2,1,1} == image->heights).min() );
- EXPECT_TRUE( (std::valarray<size_t>{4,2,2} == image->sizes).min() );
- EXPECT_TRUE( (std::valarray<size_t>{0,4,6} == image->offsets).min() );
-
- image->bytes = data;
-
- std::valarray<uint8_t> y = image->y();
- std::valarray<uint8_t> u = image->u();
- std::valarray<uint8_t> v = image->v();
-
- EXPECT_TRUE( (std::valarray<uint8_t>{0x11,0xaf,0x23,0xff} == y).min() );
- EXPECT_TRUE( (std::valarray<uint8_t>{0x00,0x73} == u).min() );
- EXPECT_TRUE( (std::valarray<uint8_t>{0x54,0xcc} == v).min() );
-
- image->bytes = uint8_t(0);
-
- EXPECT_FALSE( (image->bytes == data).min() );
-
- image->y() = y;
- image->u() = u;
- image->v() = v;
-
- EXPECT_TRUE( (image->bytes == data).min() );
-}
-
-TEST(YUVImageTest, Y800)
-{
- std::valarray<uint8_t> data = {0x11,0xaf,0x23,0xff};
-
- YUVImage::Shared image = YUVImage::create(VA_FOURCC_Y800, 2, 2);
- ASSERT_PTR(image.get());
-
- EXPECT_EQ(data.size(), image->bytes.size());
- EXPECT_EQ(2u, image->width);
- EXPECT_EQ(2u, image->height);
- EXPECT_EQ(1u, image->planes);
- EXPECT_TRUE( (std::valarray<size_t>{2,0,0} == image->widths).min() );
- EXPECT_TRUE( (std::valarray<size_t>{2,0,0} == image->heights).min() );
- EXPECT_TRUE( (std::valarray<size_t>{4,0,0} == image->sizes).min() );
- EXPECT_TRUE( (std::valarray<size_t>{0,0,0} == image->offsets).min() );
-
- image->bytes = data;
-
- std::valarray<uint8_t> y = image->y();
-
- EXPECT_TRUE( (std::valarray<uint8_t>{0x11,0xaf,0x23,0xff} == y).min() );
-
- image->bytes = uint8_t(0);
-
- EXPECT_FALSE( (image->bytes == data).min() );
-
- image->y() = y;
-
- EXPECT_TRUE( (image->bytes == data).min() );
-}
-
-TEST(YUVImageTest, Invalid)
-{
- YUVImage::Shared image = YUVImage::create(VA_FOURCC('B','E','E','F'), 2, 2);
- EXPECT_PTR_NULL(image.get());
-}
-
-TEST(YUVImageTest, I420toNV12)
-{
- std::valarray<uint8_t> data1 = {
- 0x11,0xaf,0x23,0xff,0x00,0x73,0x54,0xcc,0xca,0x6b,0x12,0x99};
- std::valarray<uint8_t> data2 = {
- 0x11,0xaf,0x23,0xff,0x00,0x73,0x54,0xcc,0xca,0x12,0x6b,0x99};
-
- YUVImage::Shared image1 = YUVImage::create(VA_FOURCC_I420, 2, 4);
- YUVImage::Shared image2 = YUVImage::create(VA_FOURCC_NV12, 2, 4);
- ASSERT_PTR(image1.get());
- ASSERT_PTR(image2.get());
-
- image1->bytes = data1;
- image2->y() = image1->y();
- image2->u() = image1->u();
- image2->v() = image1->v();
-
- EXPECT_TRUE( (image2->bytes == data2).min() );
-}
-
-TEST(YUVImageTest, NV12toI420)
-{
- std::valarray<uint8_t> data1 = {
- 0x11,0xaf,0x23,0xff,0x00,0x73,0x54,0xcc,0xca,0x6b,0x12,0x99};
- std::valarray<uint8_t> data2 = {
- 0x11,0xaf,0x23,0xff,0x00,0x73,0x54,0xcc,0xca,0x12,0x6b,0x99};
-
- YUVImage::Shared image1 = YUVImage::create(VA_FOURCC_NV12, 2, 4);
- YUVImage::Shared image2 = YUVImage::create(VA_FOURCC_I420, 2, 4);
- ASSERT_PTR(image1.get());
- ASSERT_PTR(image2.get());
-
- image1->bytes = data1;
- image2->y() = image1->y();
- image2->u() = image1->u();
- image2->v() = image1->v();
-
- EXPECT_TRUE( (image2->bytes == data2).min() );
-}
-
-TEST(YUVImageTest, UYVYtoYUY2)
-{
- std::valarray<uint8_t> data1 = {0x11,0xaf,0x23,0xff,0x00,0x73,0x54,0xcc};
- std::valarray<uint8_t> data2 = {0xaf,0x11,0xff,0x23,0x73,0x00,0xcc,0x54};
-
- YUVImage::Shared image1 = YUVImage::create(VA_FOURCC_UYVY, 2, 2);
- YUVImage::Shared image2 = YUVImage::create(VA_FOURCC_YUY2, 2, 2);
- ASSERT_PTR(image1.get());
- ASSERT_PTR(image2.get());
-
- image1->bytes = data1;
- image2->y() = image1->y();
- image2->u() = image1->u();
- image2->v() = image1->v();
-
- EXPECT_TRUE( (image2->bytes == data2).min() );
-}
-
-TEST(YUVImageTest, YUY2toUYVY)
-{
- std::valarray<uint8_t> data1 = {0x11,0xaf,0x23,0xff,0x00,0x73,0x54,0xcc};
- std::valarray<uint8_t> data2 = {0xaf,0x11,0xff,0x23,0x73,0x00,0xcc,0x54};
-
- YUVImage::Shared image1 = YUVImage::create(VA_FOURCC_YUY2, 2, 2);
- YUVImage::Shared image2 = YUVImage::create(VA_FOURCC_UYVY, 2, 2);
- ASSERT_PTR(image1.get());
- ASSERT_PTR(image2.get());
-
- image1->bytes = data1;
- image2->y() = image1->y();
- image2->u() = image1->u();
- image2->v() = image1->v();
-
- EXPECT_TRUE( (image2->bytes == data2).min() );
-}
-
-TEST(YUVImageTest, UYVYto422H)
-{
- std::valarray<uint8_t> data1 = {0x11,0xaf,0x23,0xff,0x00,0x73,0x54,0xcc};
- std::valarray<uint8_t> data2 = {0xaf,0xff,0x73,0xcc,0x11,0x00,0x23,0x54};
-
- YUVImage::Shared image1 = YUVImage::create(VA_FOURCC_UYVY, 2, 2);
- YUVImage::Shared image2 = YUVImage::create(VA_FOURCC_422H, 2, 2);
- ASSERT_PTR(image1.get());
- ASSERT_PTR(image2.get());
-
- image1->bytes = data1;
- image2->y() = image1->y();
- image2->u() = image1->u();
- image2->v() = image1->v();
-
- EXPECT_TRUE( (image2->bytes == data2).min() );
-}
-
-TEST(YUVImageTest, 422HtoUYVY)
-{
- std::valarray<uint8_t> data1 = {0xaf,0xff,0x73,0xcc,0x11,0x00,0x23,0x54};
- std::valarray<uint8_t> data2 = {0x11,0xaf,0x23,0xff,0x00,0x73,0x54,0xcc};
-
- YUVImage::Shared image1 = YUVImage::create(VA_FOURCC_422H, 2, 2);
- YUVImage::Shared image2 = YUVImage::create(VA_FOURCC_UYVY, 2, 2);
- ASSERT_PTR(image1.get());
- ASSERT_PTR(image2.get());
-
- image1->bytes = data1;
- image2->y() = image1->y();
- image2->u() = image1->u();
- image2->v() = image1->v();
-
- EXPECT_TRUE( (image2->bytes == data2).min() );
-}
-
-TEST(YUVImageTest, YUY2to422H)
-{
- std::valarray<uint8_t> data1 = {0xaf,0xff,0x73,0xcc,0x11,0x00,0x23,0x54};
- std::valarray<uint8_t> data2 = {0xaf,0x73,0x11,0x23,0xff,0x00,0xcc,0x54};
-
- YUVImage::Shared image1 = YUVImage::create(VA_FOURCC_YUY2, 2, 2);
- YUVImage::Shared image2 = YUVImage::create(VA_FOURCC_422H, 2, 2);
- ASSERT_PTR(image1.get());
- ASSERT_PTR(image2.get());
-
- image1->bytes = data1;
- image2->y() = image1->y();
- image2->u() = image1->u();
- image2->v() = image1->v();
-
- EXPECT_TRUE( (image2->bytes == data2).min() );
-}
-
-TEST(YUVImageTest, 422HtoYUY2)
-{
- std::valarray<uint8_t> data1 = {0xaf,0x73,0x11,0x23,0xff,0x00,0xcc,0x54};
- std::valarray<uint8_t> data2 = {0xaf,0xff,0x73,0xcc,0x11,0x00,0x23,0x54};
-
- YUVImage::Shared image1 = YUVImage::create(VA_FOURCC_422H, 2, 2);
- YUVImage::Shared image2 = YUVImage::create(VA_FOURCC_YUY2, 2, 2);
- ASSERT_PTR(image1.get());
- ASSERT_PTR(image2.get());
-
- image1->bytes = data1;
- image2->y() = image1->y();
- image2->u() = image1->u();
- image2->v() = image1->v();
-
- EXPECT_TRUE( (image2->bytes == data2).min() );
-}
diff --git a/test/i965_test_image_utils.h b/test/i965_test_image_utils.h
deleted file mode 100644
index 60c84ae..0000000
--- a/test/i965_test_image_utils.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef I965_TEST_IMAGE_UTILS_H
-#define I965_TEST_IMAGE_UTILS_H
-
-#include <array>
-#include <memory>
-#include <valarray>
-#include <va/va.h>
-
-class YUVImage
- : public std::enable_shared_from_this<YUVImage>
-{
-public:
- typedef std::shared_ptr<YUVImage> Shared;
- typedef std::shared_ptr<const YUVImage> SharedConst;
-
- static Shared create(const unsigned, size_t, size_t);
- static Shared create(const VAImage&);
- static Shared create(const VASurfaceID);
-
- std::slice_array<uint8_t> y() { return bytes[slices[0]]; }
- std::slice_array<uint8_t> u() { return bytes[slices[1]]; }
- std::slice_array<uint8_t> v() { return bytes[slices[2]]; }
-
- void toSurface(VASurfaceID) const;
-
- std::valarray<uint8_t> bytes;
- size_t width;
- size_t height;
- unsigned fourcc;
- unsigned format;
- size_t planes;
- std::valarray<size_t> widths;
- std::valarray<size_t> heights;
- std::valarray<size_t> offsets;
- std::valarray<size_t> sizes;
- std::array<std::slice, 3> slices;
-
-private:
- YUVImage();
-};
-
-#endif
diff --git a/test/object_heap_test.cpp b/test/object_heap_test.cpp
deleted file mode 100644
index 89fd8d7..0000000
--- a/test/object_heap_test.cpp
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "test.h"
-
-extern "C" {
- #include "object_heap.h"
-}
-
-#include <algorithm>
-#include <cstdlib>
-#include <ctime>
-#include <iomanip>
-#include <vector>
-
-TEST(ObjectHeapTest, Init)
-{
- struct test_object {
- struct object_base base;
- int i;
- };
-
- struct object_heap heap = {
- object_size: -1,
- id_offset: -1,
- next_free: -1,
- heap_size: -1,
- heap_increment: -1,
- mutex: {},
- bucket: NULL,
- num_buckets: -1,
- };
-
- EXPECT_EQ(0, object_heap_init(&heap, sizeof(test_object), 0xffffffff));
-
- EXPECT_EQ(sizeof(test_object), (size_t)heap.object_size);
- EXPECT_EQ(OBJECT_HEAP_OFFSET_MASK, heap.id_offset);
- EXPECT_EQ(0, heap.next_free);
- EXPECT_LE(1, heap.heap_increment);
- EXPECT_EQ(heap.heap_increment, heap.heap_size);
- EXPECT_PTR(heap.bucket);
- EXPECT_LE(1, heap.num_buckets);
-
- object_heap_destroy(&heap);
-
- EXPECT_PTR_NULL(heap.bucket);
- EXPECT_EQ(0, heap.heap_size);
- EXPECT_GT(0, heap.next_free);
-
- EXPECT_EQ(0, object_heap_init(&heap, sizeof(test_object), 0x0));
-
- EXPECT_EQ(sizeof(test_object), (size_t)heap.object_size);
- EXPECT_EQ(0, heap.id_offset);
- EXPECT_EQ(0, heap.next_free);
- EXPECT_LE(1, heap.heap_increment);
- EXPECT_EQ(heap.heap_increment, heap.heap_size);
- EXPECT_PTR(heap.bucket);
- EXPECT_LE(1, heap.num_buckets);
-
- object_heap_destroy(&heap);
-
- EXPECT_PTR_NULL(heap.bucket);
- EXPECT_EQ(0, heap.heap_size);
- EXPECT_GT(0, heap.next_free);
-}
-
-TEST(ObjectHeapTest, AllocateAndLookup)
-{
- struct object_heap heap = {};
-
- ASSERT_EQ(0, object_heap_init(&heap, sizeof(object_base), 0));
-
- int nbuckets = heap.num_buckets;
-
- for (int i(0); i < heap.heap_increment * nbuckets * 2; ++i)
- {
- int id = object_heap_allocate(&heap);
- EXPECT_EQ(i, id);
- int expect(i+1);
- if (expect % heap.heap_increment == 0)
- expect = -1;
- EXPECT_EQ(expect, heap.next_free);
- }
-
- EXPECT_EQ(nbuckets * 2, heap.num_buckets);
-
- for (int i(0); i < heap.heap_increment * nbuckets * 2; ++i)
- {
- object_base_p obj = object_heap_lookup(&heap, i);
- EXPECT_PTR(obj);
- object_heap_free(&heap, obj);
- obj = object_heap_lookup(&heap, i);
- EXPECT_PTR_NULL(obj);
- }
-
- object_heap_destroy(&heap);
-}
-
-TEST(ObjectHeapTest, Iterate)
-{
- struct object_heap heap = {};
- object_heap_iterator iter;
-
- ASSERT_EQ(0, object_heap_init(&heap, sizeof(object_base), 0));
-
- EXPECT_PTR_NULL(object_heap_first(&heap, &iter));
- EXPECT_PTR_NULL(object_heap_next(&heap, &iter));
-
- std::vector<object_base_p> objects(256, NULL);
- std::generate(objects.begin(), objects.end(),
- [&]{ return object_heap_lookup(&heap, object_heap_allocate(&heap)); });
-
- // iterate all objects starting at first
- object_base_p current = object_heap_first(&heap, &iter);
- EXPECT_EQ(0, current->id);
- EXPECT_TRUE(objects.front() == current);
- size_t i(1);
- while ((current = object_heap_next(&heap, &iter)) && i < objects.size())
- {
- EXPECT_EQ(i, (size_t)current->id);
- EXPECT_TRUE(objects[i++] == current);
- }
- EXPECT_PTR_NULL(current);
- EXPECT_EQ(i, objects.size());
- EXPECT_PTR_NULL(object_heap_next(&heap, &iter));
-
- // get "first" and free it
- current = object_heap_first(&heap, &iter);
- ASSERT_TRUE(objects[0] == current);
- object_heap_free(&heap, current);
- objects[0] = NULL;
-
- // get "first" again and ensure it's our second allocated object
- current = object_heap_first(&heap, &iter);
- EXPECT_TRUE(objects[1] == current);
-
- // free the object after "current" and ensure "next"
- // returns the one after it.
- object_heap_free(&heap, objects[2]);
- objects[2] = NULL;
- current = object_heap_next(&heap, &iter);
- EXPECT_TRUE(objects[3] == current);
-
- // free all objects
- std::for_each(objects.begin(), objects.end(),
- [&](object_base_p o){ object_heap_free(&heap, o); });
-
- object_heap_destroy(&heap);
-}
-
-TEST(ObjectHeapTest, DataIntegrity)
-{
- struct test_object {
- struct object_base base;
- int i;
- };
-
- typedef test_object *test_object_p;
- struct object_heap heap = {};
-
- ASSERT_EQ(0, object_heap_init(&heap, sizeof(test_object), 0));
-
- std::vector<int> values;
-
- auto generator = [&]{
- int id = object_heap_allocate(&heap);
- object_base_p base = object_heap_lookup(&heap, id);
- test_object_p object = (test_object_p)base;
- object->i = std::rand();
- values.push_back(object->i);
- return object;
- };
-
- std::vector<test_object*> objects(71, NULL);
- std::generate(objects.begin(), objects.end(), generator);
-
- ASSERT_EQ(objects.size(), values.size());
-
- auto validator = [&](test_object_p object) {
- object_base_p base = object_heap_lookup(&heap, object->base.id);
- EXPECT_TRUE(&object->base == base);
- EXPECT_EQ(object->base.id, base->id);
- test_object_p lo = (test_object_p)base;
- ASSERT_GT(values.size(), (size_t)lo->base.id);
- EXPECT_EQ(values[lo->base.id], lo->i);
- };
-
- std::for_each(objects.begin(), objects.end(), validator);
-
- std::for_each(objects.begin(), objects.end(),
- [&](test_object_p o){ object_heap_free(&heap, &o->base); });
- object_heap_destroy(&heap);
-}
-
-TEST(ObjectHeapTest, OffsetID)
-{
- ASSERT_LT(0, (OBJECT_HEAP_OFFSET_MASK >> 24));
- for (int i(0); i <= (OBJECT_HEAP_OFFSET_MASK >> 24); ++i)
- {
- struct object_heap heap = {};
- int offset = i << 24;
-
- SCOPED_TRACE(
- ::testing::Message()
- << "offset=0x" << std::hex << std::setfill('0')
- << std::setw(8) << offset << std::dec);
-
- ASSERT_EQ(0, object_heap_init(&heap, sizeof(object_base), offset));
-
- EXPECT_EQ(offset & OBJECT_HEAP_OFFSET_MASK, heap.id_offset);
-
- std::vector<object_base_p> objects(1024, NULL);
- std::generate(objects.begin(), objects.end(),
- [&]{ return object_heap_lookup(&heap, object_heap_allocate(&heap)); });
-
- for (int idx(0); (size_t)idx < objects.size(); ++idx)
- EXPECT_EQ(offset + idx, objects[idx]->id);
-
- std::for_each(objects.begin(), objects.end(),
- [&](object_base_p o){ object_heap_free(&heap, o); });
- object_heap_destroy(&heap);
- }
-}
diff --git a/test/test.h b/test/test.h
deleted file mode 100644
index 5d3fdc8..0000000
--- a/test/test.h
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef TEST_H
-#define TEST_H
-
-#include <gtest/gtest.h>
-#include <gtest/gtest-spi.h> // for EXPECT_FATAL_FAILURE/EXPECT_NONFATAL_FAILURE
-#include <iostream>
-#include <string>
-#include <va/va.h>
-
-#define EXPECT_STATUS(status) \
- EXPECT_EQ(VaapiStatus(VA_STATUS_SUCCESS), VaapiStatus(status))
-
-#define ASSERT_STATUS(status) \
- ASSERT_EQ(VaapiStatus(VA_STATUS_SUCCESS), VaapiStatus(status))
-
-#define EXPECT_STATUS_EQ(expect, status) \
- EXPECT_EQ(VaapiStatus(expect), VaapiStatus(status))
-
-#define ASSERT_STATUS_EQ(expect, status) \
- ASSERT_EQ(VaapiStatus(expect), VaapiStatus(status))
-
-#define EXPECT_ID(id) \
- EXPECT_NE(VA_INVALID_ID, (id))
-
-#define ASSERT_ID(id) \
- ASSERT_NE(VA_INVALID_ID, (id))
-
-#define EXPECT_INVALID_ID(id) \
- EXPECT_EQ(VA_INVALID_ID, (id))
-
-#define ASSERT_INVALID_ID(id) \
- ASSERT_EQ(VA_INVALID_ID, (id))
-
-#define EXPECT_PTR(ptr) \
- EXPECT_FALSE(NULL == (ptr))
-
-#define ASSERT_PTR(ptr) \
- ASSERT_FALSE(NULL == (ptr))
-
-#define EXPECT_PTR_NULL(ptr) \
- EXPECT_TRUE(NULL == (ptr))
-
-#define ASSERT_PTR_NULL(ptr) \
- ASSERT_TRUE(NULL == (ptr))
-
-#define ASSERT_NO_FAILURE(statement) \
- statement; \
- ASSERT_FALSE(HasFailure());
-
-class VaapiStatus
-{
-public:
- explicit VaapiStatus(VAStatus status)
- : m_status(status)
- { }
-
- bool operator ==(const VaapiStatus& other) const
- {
- return m_status == other.m_status;
- }
-
- friend std::ostream& operator <<(std::ostream& os, const VaapiStatus& t)
- {
- std::string status;
- switch(t.m_status) {
- case VA_STATUS_SUCCESS:
- status = "VA_STATUS_SUCCESS"; break;
- case VA_STATUS_ERROR_OPERATION_FAILED:
- status = "VA_STATUS_ERROR_OPERATION_FAILED"; break;
- case VA_STATUS_ERROR_ALLOCATION_FAILED:
- status = "VA_STATUS_ERROR_ALLOCATION_FAILED"; break;
- case VA_STATUS_ERROR_INVALID_DISPLAY:
- status = "VA_STATUS_ERROR_INVALID_DISPLAY"; break;
- case VA_STATUS_ERROR_INVALID_CONFIG:
- status = "VA_STATUS_ERROR_INVALID_CONFIG"; break;
- case VA_STATUS_ERROR_INVALID_CONTEXT:
- status = "VA_STATUS_ERROR_INVALID_CONTEXT"; break;
- case VA_STATUS_ERROR_INVALID_SURFACE:
- status = "VA_STATUS_ERROR_INVALID_SURFACE"; break;
- case VA_STATUS_ERROR_INVALID_BUFFER:
- status = "VA_STATUS_ERROR_INVALID_BUFFER"; break;
- case VA_STATUS_ERROR_INVALID_IMAGE:
- status = "VA_STATUS_ERROR_INVALID_IMAGE"; break;
- case VA_STATUS_ERROR_INVALID_SUBPICTURE:
- status = "VA_STATUS_ERROR_INVALID_SUBPICTURE"; break;
- case VA_STATUS_ERROR_ATTR_NOT_SUPPORTED:
- status = "VA_STATUS_ERROR_ATTR_NOT_SUPPORTED"; break;
- case VA_STATUS_ERROR_MAX_NUM_EXCEEDED:
- status = "VA_STATUS_ERROR_MAX_NUM_EXCEEDED"; break;
- case VA_STATUS_ERROR_UNSUPPORTED_PROFILE:
- status = "VA_STATUS_ERROR_UNSUPPORTED_PROFILE"; break;
- case VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT:
- status = "VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT"; break;
- case VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT:
- status = "VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT"; break;
- case VA_STATUS_ERROR_UNSUPPORTED_BUFFERTYPE:
- status = "VA_STATUS_ERROR_UNSUPPORTED_BUFFERTYPE"; break;
- case VA_STATUS_ERROR_SURFACE_BUSY:
- status = "VA_STATUS_ERROR_SURFACE_BUSY"; break;
- case VA_STATUS_ERROR_FLAG_NOT_SUPPORTED:
- status = "VA_STATUS_ERROR_FLAG_NOT_SUPPORTED"; break;
- case VA_STATUS_ERROR_INVALID_PARAMETER:
- status = "VA_STATUS_ERROR_INVALID_PARAMETER"; break;
- case VA_STATUS_ERROR_RESOLUTION_NOT_SUPPORTED:
- status = "VA_STATUS_ERROR_RESOLUTION_NOT_SUPPORTED"; break;
- case VA_STATUS_ERROR_UNIMPLEMENTED:
- status = "VA_STATUS_ERROR_UNIMPLEMENTED"; break;
- case VA_STATUS_ERROR_SURFACE_IN_DISPLAYING:
- status = "VA_STATUS_ERROR_SURFACE_IN_DISPLAYING"; break;
- case VA_STATUS_ERROR_INVALID_IMAGE_FORMAT:
- status = "VA_STATUS_ERROR_INVALID_IMAGE_FORMAT"; break;
- case VA_STATUS_ERROR_DECODING_ERROR:
- status = "VA_STATUS_ERROR_DECODING_ERROR"; break;
- case VA_STATUS_ERROR_ENCODING_ERROR:
- status = "VA_STATUS_ERROR_ENCODING_ERROR"; break;
- case VA_STATUS_ERROR_INVALID_VALUE:
- status = "VA_STATUS_ERROR_INVALID_VALUE"; break;
- case VA_STATUS_ERROR_UNSUPPORTED_FILTER:
- status = "VA_STATUS_ERROR_UNSUPPORTED_FILTER"; break;
- case VA_STATUS_ERROR_INVALID_FILTER_CHAIN:
- status = "VA_STATUS_ERROR_INVALID_FILTER_CHAIN"; break;
- case VA_STATUS_ERROR_HW_BUSY:
- status = "VA_STATUS_ERROR_HW_BUSY"; break;
- case VA_STATUS_ERROR_UNSUPPORTED_MEMORY_TYPE:
- status = "VA_STATUS_ERROR_UNSUPPORTED_MEMORY_TYPE"; break;
- case VA_STATUS_ERROR_UNKNOWN:
- status = "VA_STATUS_ERROR_UNKNOWN"; break;
- default:
- status = "Unknown VAStatus";
- }
- os << status;
- return os;
- }
-
- VAStatus m_status;
-};
-
-#endif // TEST_H
diff --git a/test/test_main.cpp b/test/test_main.cpp
deleted file mode 100644
index 0f87856..0000000
--- a/test/test_main.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "test.h"
-#include "i965_test_environment.h"
-
-int main(int argc, char **argv)
-{
- ::testing::InitGoogleTest(&argc, argv);
-
- /** NOTE: gtest takes ownership of the I965TestEnvironment instance **/
- ::testing::AddGlobalTestEnvironment(I965TestEnvironment::instance());
-
- return RUN_ALL_TESTS();
-}
diff --git a/test/test_utils.h b/test/test_utils.h
deleted file mode 100644
index 8083591..0000000
--- a/test/test_utils.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef TEST_UTILS_H
-#define TEST_UTILS_H
-
-#include <chrono>
-#include <cstdlib>
-
-template <typename T>
-class RandomValueGenerator
-{
-public:
- RandomValueGenerator(const T& min, const T& max)
- : minVal(min)
- , maxVal(max)
- {
- return;
- }
-
- const T operator()() const
- {
- return static_cast<T>(
- std::rand() % (maxVal + 1 - minVal) + minVal);
- }
-
-private:
- T minVal;
- T maxVal;
-};
-
-class Timer
-{
-public:
- typedef typename std::chrono::microseconds us;
- typedef typename std::chrono::milliseconds ms;
- typedef typename std::chrono::seconds s;
-
- Timer() { reset(); }
-
- template <typename T = std::chrono::microseconds>
- typename T::rep elapsed() const
- {
- return std::chrono::duration_cast<T>(
- std::chrono::steady_clock::now() - start).count();
- }
-
- void reset()
- {
- start = std::chrono::steady_clock::now();
- }
-
-private:
- std::chrono::steady_clock::time_point start;
-};
-
-#endif // TEST_UTILS_H